############ FUN_ 1812b4430 size=119 ############

void FUN_1812b4430(undefined4 *param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  ulonglong uVar2;
  longlong lVar3;
  
  uVar1 = (int)(param_3 + ((int)param_3 >> 0x1f & 3U)) >> 2;
  uVar2 = (ulonglong)uVar1;
  if (((ulonglong)param_1 & 0xf) == 0) {
    if (0 < (int)uVar1) {
      do {
        *param_1 = param_2;
        param_1[1] = param_2;
        param_1[2] = param_2;
        param_1[3] = param_2;
        param_1 = param_1 + 4;
        uVar2 = uVar2 - 1;
      } while (uVar2 != 0);
    }
  }
  else if (0 < (int)uVar1) {
    do {
      *param_1 = param_2;
      param_1[1] = param_2;
      param_1[2] = param_2;
      param_1[3] = param_2;
      param_1 = param_1 + 4;
      uVar2 = uVar2 - 1;
    } while (uVar2 != 0);
  }
  if ((param_3 & 3) != 0) {
    for (lVar3 = (longlong)(int)(param_3 & 3); lVar3 != 0; lVar3 = lVar3 + -1) {
      *param_1 = param_2;
      param_1 = param_1 + 1;
    }
  }
  return;
}



############ FUN_ 1805300f0 size=472 ############

void FUN_1805300f0(longlong param_1,int param_2)

{
  longlong lVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  longlong lVar5;
  longlong *plVar6;
  longlong lVar7;
  int local_68;
  int local_64;
  undefined4 local_60;
  
  lVar5 = (longlong)param_2;
  lVar7 = (lVar5 + 9) * 0x40 + param_1;
  plVar6 = (longlong *)((lVar5 + 0x36) * 0x10 + param_1);
  uVar3 = *(int *)(lVar7 + 4) + *(int *)(param_1 + 0x3c8) & *(int *)(lVar7 + 8) - 1U;
  if ((int)uVar3 < 0) {
    uVar3 = uVar3 + *(int *)(lVar7 + 8);
  }
  *(uint *)(lVar7 + 4) = uVar3;
  FUN_18052db50(*plVar6,0,*(undefined4 *)(param_1 + 0x1a8));
  lVar5 = (lVar5 + 7) * 0x40 + param_1;
  uVar3 = *(int *)(param_1 + 0x3c8) + *(int *)(lVar5 + 4) & *(int *)(lVar5 + 8) - 1U;
  if ((int)uVar3 < 0) {
    uVar3 = uVar3 + *(int *)(lVar5 + 8);
  }
  *(uint *)(lVar5 + 4) = uVar3;
  if (*(char *)(param_1 + 0x1b5) != '\0') {
    FUN_18052db50(*(undefined8 *)(param_1 + 0x390),0,*(undefined4 *)(param_1 + 0x1a8));
  }
  if (*(int *)(param_1 + 0x1ac) < 2) {
    lVar1 = *plVar6;
    FUN_18052f640(lVar7,&local_68,*(undefined4 *)(param_1 + 0x1a0),0,0);
    lVar4 = (longlong)local_64;
    FUN_18052dbc0(lVar1,*(longlong *)(lVar7 + 0x20) + (longlong)local_68 * 4,local_64);
    FUN_18052dbc0(lVar1 + lVar4 * 4,*(undefined8 *)(lVar7 + 0x20),local_60);
    if (*(char *)(param_1 + 0x1b5) != '\0') {
      lVar7 = *(longlong *)(param_1 + 0x390);
      FUN_18052f640(lVar5,&local_68,*(undefined4 *)(param_1 + 0x1a0),0,0);
      FUN_18052dbc0(lVar7,*(longlong *)(lVar5 + 0x20) + (longlong)local_68 * 4,local_64);
      FUN_18052dbc0(lVar7 + (longlong)local_64 * 4,*(undefined8 *)(lVar5 + 0x20),local_60);
    }
  }
  else {
    FUN_1805334e0(lVar7,*plVar6,*(undefined8 *)(param_1 + 0x340),*(undefined4 *)(param_1 + 0x1a0));
    if (*(char *)(param_1 + 0x1b5) != '\0') {
      FUN_1805334e0(lVar5,*(undefined8 *)(param_1 + 0x390),*(undefined8 *)(param_1 + 0x350),
                    *(undefined4 *)(param_1 + 0x1a0));
    }
  }
  lVar5 = *plVar6;
  iVar2 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(lVar5,*(undefined8 *)(param_1 + 0x78));
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(lVar5,*(undefined8 *)(param_1 + 0x80),*(undefined8 *)(param_1 + 200));
}



############ FUN_ 18052e130 size=91 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18052e130(longlong param_1)

{
  float fVar1;
  double dVar2;
  
  fVar1 = (float)log2f(*(float *)(param_1 + 0x24) / _DAT_1824c45ec);
  fVar1 = floorf(fVar1);
  dVar2 = pow(DAT_1824c41e8,(double)fVar1);
  *(int *)(param_1 + 0x1a0) = (int)((float)dVar2 * (float)*(int *)(param_1 + 0x19c));
  return;
}



############ FUN_ 1813bbf80 size=2779 ############

/* WARNING: Removing unreachable block (ram,0x0001813bc9d5) */
/* WARNING: Removing unreachable block (ram,0x0001813bc092) */
/* WARNING: Removing unreachable block (ram,0x0001813bc019) */
/* WARNING: Removing unreachable block (ram,0x0001813bbffc) */
/* WARNING: Removing unreachable block (ram,0x0001813bc03d) */
/* WARNING: Removing unreachable block (ram,0x0001813bc2f7) */
/* WARNING: Removing unreachable block (ram,0x0001813bc730) */
/* WARNING: Removing unreachable block (ram,0x0001813bc94b) */
/* WARNING: Removing unreachable block (ram,0x0001813bc049) */
/* WARNING: Removing unreachable block (ram,0x0001813bcae1) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_1813bbf80(void)

{
  undefined8 uVar1;
  code *pcVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  code **ppcVar5;
  uint uVar6;
  longlong lVar7;
  int iVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  uint uVar11;
  float fVar12;
  int unaff_retaddr;
  code *local_78;
  int *local_70;
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  uVar6 = (uint)&stack0x00000000 & 0x3bf;
  iVar8 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  local_70 = &DAT_18116d230;
  uVar6 = (((uint)(DAT_18116d230 * 0x401) >> 6 ^ DAT_18116d230 * 0x401) + DAT_18116d234) * 0x401;
  uVar11 = ((uVar6 >> 6 ^ uVar6) + DAT_18116d238) * 0x401;
  uVar11 = uVar11 ^ uVar11 >> 6;
  uVar4 = (ulonglong)uVar11;
  uVar6 = uVar11 & 7 | 0x68;
  uVar10 = (ulonglong)(uVar6 * uVar6);
  uVar6 = (_DAT_18116d23c + uVar11) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d240) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d244) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d248) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d24c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d250) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d254) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d258) * 0x401;
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar6 = (_DAT_18116d25c + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d260) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d264) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d268) * 0x401;
  uVar6 = uVar6 ^ uVar6 >> 6;
  uVar9 = (ulonglong)uVar6;
  uVar6 = (_DAT_18116d26c + uVar6) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d270) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d274) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d278) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d27c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d280) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d284) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d288) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d28c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d290) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d294) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d298) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d29c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2a0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2a4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2a8) * 0x401;
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar6 = (_DAT_18116d2ac + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2b0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2b4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2b8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2bc) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2c0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2c4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2c8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2cc) * 0x401;
  do {
    uVar1 = rdtsc();
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x166a7a15;
  pcVar2 = (code *)0x0;
  if ((uVar11 >> 0x18 ^ uVar11) * -0x3b31e57b < 0x226250) {
    do {
      local_78 = pcVar2;
      ppcVar5 = &local_78;
                    /* WARNING: Call to offcut address within same function */
      func_0x0001813bcb29(ppcVar5,&local_78);
      *ppcVar5 = FUN_1813f2240;
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
      pcVar2 = local_78;
    } while (uVar11 != 0);
    uVar3 = (*local_78)(0,0xc0b6);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  uVar6 = (FUN_18116d2ce + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2d4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2d8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2dc) * 0x401;
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar6 = (_DAT_18116d2e0 + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2e4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2e8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2ec) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _DAT_18116d2f0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d2f4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d2f8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d2fc) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d300) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d304) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d308) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d30c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d310) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d314) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d318) * 0x401;
  uVar3 = (ulonglong)uVar6;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d31c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d320) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d324) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d328) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + _UNK_18116d32c) * 0x401;
  uVar6 = ~((uVar6 >> 6 ^ uVar6) + 0xb372369a) + 0xa44f94f3;
  do {
    uVar3 = ((uVar3 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    uVar4 = ~((uVar4 ^ 0xffffffffffffffff) + 1) + 1;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  if ((char)(((uVar6 * 0x400000 | uVar6 >> 10) == 0x501a0ee4) * '\x17') != '\0') {
    do {
      lVar7 = uVar3 + uVar4;
      uVar4 = ~((~(uVar4 - lVar7) + 1) - lVar7) + 1;
      uVar3 = lVar7 - uVar4;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    fVar12 = (float)log2f(0,uVar3,uVar9,uVar10);
    fVar12 = ceilf(fVar12);
    fVar12 = powf(DAT_1824c41e0,fVar12);
    return (ulonglong)((double)fVar12 + DAT_1824c4520) & 0xffffffff;
  }
  uVar4 = thunk_FUN_1805a9280((longlong)
                              (int)(((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e ^
                                   0x980),uVar3,~(~uVar9 + 1) + 1);
  return uVar4;
}



############ FUN_ 18052e190 size=137 ############

void FUN_18052e190(longlong *param_1,int param_2,undefined4 param_3)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  if ((int)param_1[1] != param_2) {
    if ((0 < (int)param_1[1]) && (*param_1 != 0)) {
      FUN_1800010c0();
    }
    *param_1 = 0;
    if (param_2 < 0) {
      param_2 = 0;
    }
    *(int *)(param_1 + 1) = param_2;
    if (param_2 == 0) {
      return;
    }
    lVar1 = FUN_180001080(param_2 * 4);
    *param_1 = lVar1;
  }
  uVar4 = uVar2;
  if (0 < (int)param_1[1]) {
    do {
      uVar3 = (int)uVar4 + 1;
      *(undefined4 *)(uVar2 + *param_1) = param_3;
      uVar2 = uVar2 + 4;
      uVar4 = (ulonglong)uVar3;
    } while ((int)uVar3 < (int)param_1[1]);
  }
  return;
}



############ FUN_ 1800010c0 size=15 ############

void FUN_1800010c0(longlong param_1)

{
  if (param_1 != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + -8));
  }
  return;
}



############ FUN_ 180001080 size=62 ############

ulonglong FUN_180001080(int param_1)

{
  void *pvVar1;
  ulonglong uVar2;
  
  if ((0 < param_1) && (param_1 <= param_1 + 0x48)) {
    pvVar1 = malloc((longlong)(param_1 + 0x48));
    if (pvVar1 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = (longlong)pvVar1 + 0x47U & 0xffffffffffffffc0;
      *(void **)(uVar2 - 8) = pvVar1;
    }
    return uVar2;
  }
  return 0;
}



############ FUN_ 18052dc30 size=227 ############

void FUN_18052dc30(undefined4 *param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined1 local_18 [4];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  if (param_1[1] == param_2) {
    return;
  }
  param_1[2] = param_3;
  param_1[1] = param_2;
  FUN_1805335c0(param_1,&local_28,param_2);
  if ((int)param_1[2] < 0) {
    FUN_180534550(param_1 + 0x12,local_24);
    FUN_180534550(param_1 + 0x1a,local_20);
  }
  else {
    FUN_1805335c0(param_1,local_18);
    FUN_180534550(param_1 + 0x12,local_14);
    FUN_180534550(param_1 + 0x1a,local_10);
    local_1c = local_c;
  }
  FUN_180534550(param_1 + 0x16,local_1c);
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_1 + 6);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_1 + 8,local_28,*param_1,1,*(undefined8 *)(param_1 + 0x12),
                      *(undefined8 *)(param_1 + 0x16));
}



############ FUN_ 18052df60 size=450 ############

void FUN_18052df60(longlong param_1)

{
  longlong lVar1;
  float *pfVar2;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  float fVar6;
  
  fVar6 = 0.0;
  FUN_18052e190(param_1 + 0x340,*(undefined4 *)(param_1 + 0x1a0),0);
  FUN_18052e190(param_1 + 0x350,*(undefined4 *)(param_1 + 0x1a0),0);
  FUN_18052e190(param_1 + 0x3b0,*(int *)(param_1 + 0x1a0) * 2,0);
  FUN_1805356f0(*(undefined8 *)(param_1 + 0x350),*(undefined4 *)(param_1 + 0x1a0));
  FUN_1805356f0(*(undefined8 *)(param_1 + 0x340),*(undefined4 *)(param_1 + 0x1a0));
  if (*(char *)(param_1 + 0x1b4) == '\0') {
    iVar4 = *(int *)(param_1 + 0x1a0);
    lVar5 = (longlong)iVar4;
    lVar1 = 0;
    if (3 < lVar5) {
      pfVar2 = (float *)(*(longlong *)(param_1 + 0x340) + 8);
      lVar3 = (lVar5 - 4U >> 2) + 1;
      lVar1 = lVar3 * 4;
      do {
        fVar6 = fVar6 + pfVar2[-2] + pfVar2[-1] + *pfVar2 + pfVar2[1];
        pfVar2 = pfVar2 + 4;
        lVar3 = lVar3 + -1;
      } while (lVar3 != 0);
    }
    for (; lVar1 < lVar5; lVar1 = lVar1 + 1) {
      fVar6 = fVar6 + *(float *)(*(longlong *)(param_1 + 0x340) + lVar1 * 4);
    }
  }
  else {
    FUN_18052da70(*(undefined8 *)(param_1 + 0x3b0),*(undefined8 *)(param_1 + 0x340),
                  *(undefined8 *)(param_1 + 0x340),*(undefined4 *)(param_1 + 0x1a0));
    iVar4 = *(int *)(param_1 + 0x1a0);
    lVar5 = (longlong)iVar4;
    lVar1 = 0;
    if (3 < lVar5) {
      pfVar2 = (float *)(*(longlong *)(param_1 + 0x3b0) + 8);
      lVar3 = (lVar5 - 4U >> 2) + 1;
      lVar1 = lVar3 * 4;
      do {
        fVar6 = fVar6 + pfVar2[-2] + pfVar2[-1] + *pfVar2 + pfVar2[1];
        pfVar2 = pfVar2 + 4;
        lVar3 = lVar3 + -1;
      } while (lVar3 != 0);
    }
    for (; lVar1 < lVar5; lVar1 = lVar1 + 1) {
      fVar6 = fVar6 + *(float *)(*(longlong *)(param_1 + 0x3b0) + lVar1 * 4);
    }
  }
  fVar6 = DAT_1824c3ea4 / (fVar6 / (float)iVar4);
  *(float *)(param_1 + 0x1a4) = fVar6;
  *(float *)(param_1 + 0x1a4) = fVar6 / (float)*(int *)(param_1 + 0x1ac);
  return;
}



############ FUN_ 18049b000 size=102 ############

uint FUN_18049b000(longlong *param_1,longlong *param_2)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  int iVar4;
  
  iVar4 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar4) {
    FUN_18048a300(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar4 / 2 & 0xfffffff8);
  }
  iVar4 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar4 + 1;
  lVar3 = *param_2;
  *(longlong *)(*param_1 + (longlong)iVar4 * 8) = lVar3;
  uVar2 = *(uint *)(lVar3 + -0x10);
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    puVar1 = (uint *)(lVar3 + -0x10);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  return uVar2;
}



############ FUN_ 18052f680 size=454 ############

void FUN_18052f680(longlong *param_1)

{
  uint *_Memory;
  longlong lVar1;
  undefined8 *puVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  uint uVar6;
  longlong local_res8;
  longlong local_res10;
  undefined8 *local_res18 [2];
  undefined1 local_40 [24];
  
  if ((char)param_1[0xa2] != '\0') {
    return;
  }
  *(undefined1 *)(param_1 + 0xa2) = 1;
  FUN_18049c4e0(&local_res10,
                "lBnBKPSzl9hjqL9t6KtsEn5XFT0HQWftYA4e32/dbJSqTszNkf71S7wl8xnrBCTvwaU9YAhT8oxpw3tNwx+UoUBhEj2EuucDWJ/lfs5lip3iNTdOEArLWy3vEz1S9qkJ/Z9kMksfxEt3sOhyCX/j+qbkcqKsscs9aq+/7xGcX9Hk/DunFHeRV5vgJLakKAKm3yA+b2dKqNvCw2DTtnVSHRYJ/48vDmpp9flpJGZtIMZ0HxvdWac9o7bxN2476ZJcHUjsTWyB5WOWbxGkGSSvDmHyzVd/q5ecwBfkUEn3Ev1pfL25plhN9ciUXX0cLRSoFqHefaAOH9QbfMjzww0DAensSgvMmqA5B6BYP+Pri/nTu7rAMwTRn5pVcTD1zTs40GfCO51gf/0u//L5kPSffrFxyiyAwgt3ZtAPLh+lLG9BIj1x+NyYh3HKTtq6cMKIqOYZtiAiuqeeMoj13UeIowN0fCqRLZ1AW6PB5RCaCtZ3KcD9QAWMmdByMXZ0pUldRCoB+L8XOXBNzc2jG46SzeLS+QKTaPnzgPBKaxJYGX2ww46+Pm27mJnMJq5WCvzicIufjnZGhY2myql3QG49M/rCQ0YQjIOjx5eFyAk1h2X2dDT4xveIxK+CU8mLVu1N6smldr3RQN7oOOFJ8QVvcJSn0MfdLldhG4k/8psbP1D0cRm8xiZYDoVWXzpNdixn"
               );
  local_res8 = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  FUN_1805337e0(param_1 + 0x8a,&local_res8);
  plVar5 = param_1 + 0xa3;
  uVar6 = (int)param_1[0xa4] - 0x10;
  if ((-1 < (int)uVar6) && ((uVar6 & 0x1f) == 0)) {
    FUN_18123a6f0(plVar5,local_40,uVar6,0x10);
    FUN_18124a200(plVar5,(longlong)(int)uVar6,0);
    iVar3 = FUN_18141b260(param_1 + 0x8b);
    if (iVar3 == 0) {
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar6 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      goto LAB_18052f7a1;
    }
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar6 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  plVar5 = (longlong *)0x0;
LAB_18052f7a1:
  if ((((DAT_1826216ff != '\0') && (DAT_18262170c != '\0')) && (DAT_18262170d != '\0')) &&
     (((DAT_1826216fd != '\0' && (DAT_1826216fe != '\0')) &&
      ((plVar5 != (longlong *)0x0 && (*plVar5 != 0)))))) {
    plVar4 = (longlong *)(**(code **)(*param_1 + 0x218))(param_1,local_res18);
    plVar5 = param_1 + 0x2e;
    if (plVar5 != plVar4) {
      lVar1 = *plVar4;
      *plVar4 = 0;
      puVar2 = (undefined8 *)*plVar5;
      *plVar5 = lVar1;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
      }
    }
    if (local_res18[0] != (undefined8 *)0x0) {
      (**(code **)*local_res18[0])(local_res18[0],1);
    }
  }
  FUN_18052f850(param_1);
  return;
}



############ FUN_ 18113eab0 size=36 ############

void FUN_18113eab0(void)

{
  int iVar1;
  HANDLE pvVar2;
  
  iVar1 = FUN_18113f2d0();
  if (iVar1 != 0) {
    pvVar2 = GetCurrentThread();
    FUN_18113ebf0(pvVar2);
    return;
  }
  return;
}



############ FUN_ 18114b490 size=379 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_18114b490(void)

{
  uint uVar1;
  int iVar2;
  int unaff_retaddr;
  undefined1 auStack_98 [72];
  uint local_50;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  uVar1 = (uint)&stack0x00000000 & 0x71ff;
  iVar2 = uVar1 * uVar1 + 1;
  uVar1 = (iVar2 >> 4) + (iVar2 >> 1) + iVar2 * 0x24924924 >> 0x1d;
  uVar1 = (int)(uVar1 - 7) >> 0x1f & uVar1;
  local_50 = ((int)(uVar1 | -uVar1) >> 0x1f) * -0xa5fb ^ 0xa8ab;
  DAT_18262b4c4 =
       (DAT_18262b4c4 >> 4 | DAT_18262b4c4 << 0x1c) & 0xc3c3c3c3 |
       (DAT_18262b4c4 << 4 | DAT_18262b4c4 >> 0x1c) & 0x3c3c3c3c;
  do {
    FUN_18114b0f5();
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  FUN_18114b631();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1812c37c0 size=344 ############

longlong * FUN_1812c37c0(longlong param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  ulonglong uVar4;
  longlong *plVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  
  uVar4 = 0;
  *param_2 = 0;
  param_2[1] = 0;
  param_2[2] = 0;
  param_2[3] = 0;
  plVar5 = *(longlong **)(param_1 + 0xd0);
  uVar6 = (ulonglong)((longlong)(plVar5 + *(int *)(param_1 + 0xdc)) + (7 - (longlong)plVar5)) >> 3;
  if (plVar5 + *(int *)(param_1 + 0xdc) < plVar5) {
    uVar6 = uVar4;
  }
  uVar7 = uVar4;
  if (uVar6 != 0) {
    do {
      iVar1 = *(int *)((longlong)param_2 + 0xc);
      lVar2 = *plVar5;
      iVar3 = iVar1 + 1;
      if ((int)param_2[1] < iVar3) {
        if (iVar3 < 0) {
          iVar3 = iVar1 + 2;
        }
        FUN_1804d5cd0(param_2,iVar1 + 9 + (iVar3 >> 1) & 0xfffffff8);
      }
      iVar3 = *(int *)((longlong)param_2 + 0xc);
      *(int *)((longlong)param_2 + 0xc) = iVar3 + 1;
      FUN_18123db10(*param_2 + (longlong)iVar3 * 0x28,lVar2 + 0x10);
      plVar5 = plVar5 + 1;
      uVar7 = uVar7 + 1;
    } while (uVar7 != uVar6);
  }
  plVar5 = *(longlong **)(param_1 + 0xe0);
  uVar6 = (ulonglong)((longlong)(plVar5 + *(int *)(param_1 + 0xec)) + (7 - (longlong)plVar5)) >> 3;
  if (plVar5 + *(int *)(param_1 + 0xec) < plVar5) {
    uVar6 = uVar4;
  }
  if (uVar6 != 0) {
    do {
      iVar1 = *(int *)((longlong)param_2 + 0x1c);
      lVar2 = *plVar5;
      iVar3 = iVar1 + 1;
      if ((int)param_2[3] < iVar3) {
        if (iVar3 < 0) {
          iVar3 = iVar1 + 2;
        }
        FUN_1804d5cd0(param_2 + 2,iVar1 + 9 + (iVar3 >> 1) & 0xfffffff8);
      }
      iVar3 = *(int *)((longlong)param_2 + 0x1c);
      *(int *)((longlong)param_2 + 0x1c) = iVar3 + 1;
      FUN_18123db10(param_2[2] + (longlong)iVar3 * 0x28,lVar2 + 0x10);
      plVar5 = plVar5 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar6);
  }
  return param_2;
}



############ FUN_ 18123d3f0 size=108 ############

int FUN_18123d3f0(longlong *param_1)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  
  plVar4 = (longlong *)*param_1;
  iVar3 = 0;
  if (plVar4 == (longlong *)0x0) {
    plVar4 = param_1 + 1;
  }
  for (lVar2 = (longlong)(int)param_1[4] >> 5; -1 < lVar2; lVar2 = lVar2 + -1) {
    uVar1 = *(uint *)((longlong)plVar4 + lVar2 * 4);
    uVar1 = uVar1 - (uVar1 >> 1 & 0x55555555);
    uVar1 = (uVar1 >> 2 & 0x33333333) + (uVar1 & 0x33333333);
    uVar1 = (uVar1 >> 4) + uVar1 & 0xf0f0f0f;
    uVar1 = uVar1 + (uVar1 >> 8);
    iVar3 = iVar3 + ((uVar1 >> 0x10) + uVar1 & 0x3f);
  }
  return iVar3;
}



############ FUN_ 18047c500 size=72 ############

void FUN_18047c500(undefined8 *param_1)

{
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)*param_1);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018047c551. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 180531620 size=192 ############

void FUN_180531620(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  longlong lVar1;
  int iVar2;
  longlong lVar3;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar2) {
    lVar1 = (longlong)iVar2 * 8;
    lVar3 = lVar1;
    do {
      _Memory = *(void **)(lVar1 + *param_1);
      _Dst = (void *)(lVar3 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar2) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        *(undefined8 *)((longlong)_Memory + 0x20) = 0;
        if ((0 < *(int *)((longlong)_Memory + 0x18)) &&
           (*(longlong *)((longlong)_Memory + 0x10) != 0)) {
          FUN_1800010c0();
        }
        *(undefined8 *)((longlong)_Memory + 0x10) = 0;
        *(undefined4 *)((longlong)_Memory + 0x18) = 0;
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar3 = lVar3 + -8;
      lVar1 = lVar1 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 1811316e0 size=58 ############

void FUN_1811316e0(size_t param_1)

{
  int iVar1;
  void *pvVar2;
  
  do {
    pvVar2 = malloc(param_1);
    if (pvVar2 != (void *)0x0) {
      return;
    }
    iVar1 = _callnewh(param_1);
  } while (iVar1 != 0);
  if (param_1 == 0xffffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_181132538();
  }
                    /* WARNING: Subroutine does not return */
  FUN_181132518();
}



############ FUN_ 18052bc40 size=103 ############

void FUN_18052bc40(undefined8 *param_1,undefined4 param_2)

{
  int iVar1;
  ulonglong uVar2;
  uint uVar3;
  ulonglong uVar4;
  
  iVar1 = FUN_1813bbf80(param_2);
  if (*(int *)(param_1 + 1) != iVar1) {
    FUN_18052e190(param_1 + 2,iVar1,0);
  }
  uVar2 = 0;
  *(int *)(param_1 + 1) = iVar1;
  *param_1 = 0;
  uVar4 = uVar2;
  if (0 < *(int *)(param_1 + 3)) {
    do {
      uVar3 = (int)uVar4 + 1;
      *(undefined4 *)(uVar2 + param_1[2]) = 0;
      uVar2 = uVar2 + 4;
      uVar4 = (ulonglong)uVar3;
    } while ((int)uVar3 < *(int *)(param_1 + 3));
  }
  param_1[4] = param_1[2];
  return;
}



############ FUN_ 18047cb30 size=115 ############

void FUN_18047cb30(undefined8 *param_1,int param_2)

{
  void *pvVar1;
  
  if (*(int *)(param_1 + 1) == param_2) {
    *(int *)(param_1 + 1) = param_2;
    return;
  }
  pvVar1 = (void *)*param_1;
  if (0 < param_2) {
    if (pvVar1 == (void *)0x0) {
      pvVar1 = malloc((longlong)param_2 * 8);
      *param_1 = pvVar1;
      *(int *)(param_1 + 1) = param_2;
      return;
    }
    pvVar1 = realloc(pvVar1,(longlong)param_2 * 8);
    *param_1 = pvVar1;
    *(int *)(param_1 + 1) = param_2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar1);
}



############ FUN_ 1811c4880 size=1014 ############

/* WARNING: Removing unreachable block (ram,0x0001811c49d6) */
/* WARNING: Removing unreachable block (ram,0x0001811c4914) */
/* WARNING: Removing unreachable block (ram,0x0001811c48dc) */
/* WARNING: Removing unreachable block (ram,0x0001811c49bc) */
/* WARNING: Removing unreachable block (ram,0x0001811c4a14) */

longlong FUN_1811c4880(undefined8 param_1)

{
  ulonglong uVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined1 auStack_168 [32];
  undefined4 local_148;
  undefined8 local_140;
  undefined8 local_118;
  undefined8 local_110;
  undefined4 local_104;
  uint local_100;
  undefined8 local_f0;
  undefined1 *local_d0;
  undefined8 local_c8;
  undefined *local_a0;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_168;
  if (((uint)&stack0x00000000 >> 9 & 1) == 0) {
    uVar4 = 0x138a745a;
  }
  else {
    uVar4 = 1;
  }
  uVar2 = (uint)&stack0x00000000 & 0x17f;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_100 = (int)(-uVar4 | uVar4) >> 0x1f & 0xb6f0U ^
              0xb5e0U - (((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e);
  local_104 = 0x590;
  local_f0 = 0x180000000;
  local_140 = 0;
  local_110 = 0x14153f0;
  local_118 = 0x22c;
  local_d0 = &LAB_1814153f0;
  local_a0 = &DAT_18141561c;
  local_148 = 0xbf;
  local_c8 = param_1;
  FUN_1811c5294();
                    /* WARNING: Call to offcut address within same function */
  uVar1 = func_0x0001811c4af2();
  return ~(~uVar1 + 1) + 1;
}



############ FUN_ 1812a77d0 size=436 ############

void FUN_1812a77d0(longlong param_1,int param_2)

{
  longlong *plVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  longlong lVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  int iVar12;
  undefined8 uVar13;
  undefined8 local_20;
  undefined8 uStack_18;
  
  uVar13 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a78);
  iVar3 = *(int *)(param_1 + 0x10);
  iVar12 = 1;
  if (1 < param_2) {
    iVar12 = param_2;
  }
  *(int *)(param_1 + 0x10) = iVar12;
  lVar9 = DAT_1826736e0;
  if (iVar3 == 0) {
    if (DAT_1826736e0 == 0) {
      uVar13 = FUN_1811316e0(0x2d8);
      DAT_1826736e0 = FUN_1804d0200(uVar13);
    }
    lVar9 = DAT_1826736e0;
    lVar11 = *(longlong *)(DAT_1826736e0 + 0x220) - *(longlong *)(DAT_1826736e0 + 0x218) >> 4;
    uVar4 = *(undefined4 *)(param_1 + 0x10);
    uStack_18 = CONCAT44(uStack_18._4_4_,uVar4);
    puVar5 = *(undefined4 **)(DAT_1826736e0 + 0x220);
    local_20 = param_1;
    if (*(undefined4 **)(DAT_1826736e0 + 0x228) == puVar5) {
      FUN_1804d1fe0((longlong *)(DAT_1826736e0 + 0x218),puVar5,&local_20);
    }
    else {
      local_20._0_4_ = (undefined4)param_1;
      local_20._4_4_ = (undefined4)((ulonglong)param_1 >> 0x20);
      *puVar5 = (undefined4)local_20;
      puVar5[1] = local_20._4_4_;
      puVar5[2] = uVar4;
      puVar5[3] = uStack_18._4_4_;
      *(longlong *)(lVar9 + 0x220) = *(longlong *)(lVar9 + 0x220) + 0x10;
    }
    *(longlong *)(param_1 + 8) = lVar11;
    FUN_1804d0860(lVar9,lVar11);
    FUN_181215c10(lVar9 + 0xf8);
  }
  else if (DAT_1826736e0 != 0) {
    lVar11 = *(longlong *)(param_1 + 8);
    lVar10 = lVar11 * 0x10;
    iVar3 = *(int *)(*(longlong *)(DAT_1826736e0 + 0x218) + 8 + lVar10);
    if (iVar12 != iVar3) {
      *(int *)(*(longlong *)(DAT_1826736e0 + 0x218) + 8 + lVar10) = iVar12;
      if (iVar3 < iVar12) {
        FUN_1804d07a0(lVar9,lVar11,lVar11,iVar12,uVar13);
      }
      else if (lVar11 != 0) {
        plVar1 = (longlong *)(*(longlong *)(lVar9 + 0x218) + lVar10);
        local_20 = *plVar1;
        uStack_18 = plVar1[1];
        do {
          lVar6 = *(longlong *)(lVar9 + 0x218);
          if (*(int *)(lVar6 + -8 + lVar10) <= (int)uStack_18) break;
          puVar2 = (undefined4 *)(lVar6 + -0x10 + lVar10);
          uVar4 = puVar2[1];
          uVar7 = puVar2[2];
          uVar8 = puVar2[3];
          puVar5 = (undefined4 *)(lVar6 + lVar10);
          *puVar5 = *puVar2;
          puVar5[1] = uVar4;
          puVar5[2] = uVar7;
          puVar5[3] = uVar8;
          *(longlong *)(*(longlong *)(*(longlong *)(lVar9 + 0x218) + lVar10) + 8) = lVar11;
          lVar10 = lVar10 + -0x10;
          lVar11 = lVar11 + -1;
        } while (lVar11 != 0);
        plVar1 = (longlong *)(*(longlong *)(lVar9 + 0x218) + lVar11 * 0x10);
        *plVar1 = local_20;
        plVar1[1] = uStack_18;
        *(longlong *)(local_20 + 8) = lVar11;
      }
      FUN_181215c10(lVar9 + 0xf8);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001812a797d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a78);
  return;
}



############ FUN_ 18052f850 size=190 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18052f850(longlong param_1)

{
  undefined8 uVar1;
  BOOL BVar2;
  undefined1 auStack_88 [32];
  undefined8 local_68;
  undefined **local_58;
  longlong local_50;
  undefined ***local_20;
  ulonglong local_18;
  
  local_68 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_88;
  BVar2 = TryEnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x528));
  if (BVar2 != 0) {
    uVar1 = *(undefined8 *)(param_1 + 0x168);
    *(undefined8 *)(param_1 + 0x168) = *(undefined8 *)(param_1 + 0x170);
    *(undefined8 *)(param_1 + 0x170) = uVar1;
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x528));
    local_58 = std::_Func_impl_no_alloc<<lambda_32f235fddca0a74585f1059c6d9ec41d>,void>::vftable;
    local_20 = &local_58;
    local_50 = param_1;
    FUN_18120c6e0(&local_58,param_1 + 0x158);
    if (local_20 != (undefined ***)0x0) {
      (*(code *)(*local_20)[4])
                (local_20,CONCAT71((int7)((ulonglong)&local_58 >> 8),local_20 != &local_58));
    }
  }
}



############ FUN_ 181198f30 size=302 ############

void FUN_181198f30(longlong param_1,char param_2)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  byte bVar9;
  longlong *plVar10;
  byte bVar11;
  
  if (param_2 == '\0') {
    if (*(char *)(param_1 + 0x70) != '\0') {
      puVar4 = *(undefined8 **)(param_1 + 0x38);
      bVar11 = 0;
      puVar5 = (undefined8 *)*puVar4;
      while (puVar5 != puVar4) {
        bVar9 = (**(code **)(**(longlong **)(puVar5[5] + 0x288) + 0x10))();
        bVar11 = bVar11 | bVar9;
        puVar6 = (undefined8 *)puVar5[2];
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar5 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
          while (cVar1 == '\0') {
            cVar1 = *(char *)((longlong)*puVar6 + 0x19);
            puVar5 = puVar6;
            puVar6 = (undefined8 *)*puVar6;
          }
        }
        else {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar7 = (undefined8 *)puVar5[1];
          puVar6 = puVar5;
          while ((puVar5 = puVar7, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar5[2]))) {
            cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
            puVar7 = (undefined8 *)puVar5[1];
            puVar6 = puVar5;
          }
        }
      }
      LOCK();
      *(byte *)(param_1 + 0x70) = bVar11;
      UNLOCK();
    }
  }
  else {
    plVar2 = *(longlong **)(param_1 + 0x38);
    plVar10 = (longlong *)*plVar2;
    if (plVar10 != plVar2) {
      do {
        FUN_1811c4880(plVar10[5]);
        plVar3 = (longlong *)plVar10[2];
        if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
          cVar1 = *(char *)(*plVar3 + 0x19);
          plVar10 = plVar3;
          plVar3 = (longlong *)*plVar3;
          while (cVar1 == '\0') {
            cVar1 = *(char *)(*plVar3 + 0x19);
            plVar10 = plVar3;
            plVar3 = (longlong *)*plVar3;
          }
        }
        else {
          cVar1 = *(char *)(plVar10[1] + 0x19);
          plVar8 = (longlong *)plVar10[1];
          plVar3 = plVar10;
          while ((plVar10 = plVar8, cVar1 == '\0' && (plVar3 == (longlong *)plVar10[2]))) {
            cVar1 = *(char *)(plVar10[1] + 0x19);
            plVar8 = (longlong *)plVar10[1];
            plVar3 = plVar10;
          }
        }
      } while (plVar10 != plVar2);
      return;
    }
  }
  return;
}



############ FUN_ 18052f640 size=58 ############

uint * FUN_18052f640(int *param_1,uint *param_2,uint param_3,int param_4,char param_5)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  if (param_5 == '\0') {
    iVar2 = param_1[1];
  }
  else {
    iVar2 = *param_1;
  }
  iVar1 = param_1[2];
  uVar3 = iVar1 + iVar2 + param_4 & iVar1 - 1U;
  uVar4 = iVar1 - uVar3;
  *param_2 = uVar3;
  if ((int)param_3 < (int)uVar4) {
    uVar4 = param_3;
  }
  param_2[1] = uVar4;
  param_2[2] = param_3 - uVar4;
  return param_2;
}



############ FUN_ 18052dbc0 size=97 ############

void FUN_18052dbc0(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_1,param_3);
}



############ FUN_ 18052fc90 size=174 ############

void FUN_18052fc90(int *param_1,float param_2)

{
  int iVar1;
  float fVar2;
  int iVar3;
  longlong lVar4;
  
  fVar2 = DAT_1824c3ea4;
  iVar1 = param_1[1];
  iVar3 = 0;
  if (0 < *param_1) {
    lVar4 = 0;
    do {
      if ((param_2 != fVar2) && ((char)param_1[0x48] == '\0')) {
        if (param_2 == 0.0) {
          memset(*(void **)(lVar4 + *(longlong *)(param_1 + 4)),0,(longlong)iVar1 << 2);
        }
        else {
          FUN_1812b3270(*(void **)(lVar4 + *(longlong *)(param_1 + 4)),param_2,iVar1);
        }
      }
      iVar3 = iVar3 + 1;
      lVar4 = lVar4 + 8;
    } while (iVar3 < *param_1);
  }
  return;
}



############ FUN_ 18049c9e0 size=152 ############

undefined8 * FUN_18049c9e0(undefined8 *param_1,char *param_2)

{
  char *pcVar1;
  char cVar2;
  longlong lVar3;
  undefined4 *puVar4;
  char *pcVar5;
  
  if ((param_2 != (char *)0x0) && (*param_2 != '\0')) {
    lVar3 = FUN_18049d240(param_2);
    puVar4 = (undefined4 *)thunk_FUN_1811316e0();
    LOCK();
    *puVar4 = 0;
    UNLOCK();
    *(ulonglong *)(puVar4 + 2) = lVar3 + 4U & 0xfffffffffffffffc;
    pcVar1 = (char *)(puVar4 + 4);
    cVar2 = *param_2;
    *pcVar1 = cVar2;
    if (cVar2 != '\0') {
      pcVar5 = pcVar1;
      do {
        cVar2 = pcVar5[(longlong)(param_2 + (1 - (longlong)pcVar1))];
        pcVar5 = pcVar5 + 1;
        *pcVar5 = cVar2;
      } while (cVar2 != '\0');
    }
    *param_1 = pcVar1;
    return param_1;
  }
  *param_1 = &DAT_1821dbf98;
  return param_1;
}



############ FUN_ 1812c1130 size=139 ############

void FUN_1812c1130(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74));
  plVar3 = *(longlong **)(param_1 + 0x18);
  iVar2 = *(int *)(param_1 + 0x24);
  plVar1 = plVar3 + iVar2;
  for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
    if (param_2 == *plVar3) goto LAB_1812c11a1;
  }
  if (*(int *)(param_1 + 0x20) < iVar2 + 1) {
    FUN_18047cb30(param_1 + 0x18,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)(param_1 + 0x24);
  *(int *)(param_1 + 0x24) = iVar2 + 1;
  *(longlong *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar2 * 8) = param_2;
LAB_1812c11a1:
                    /* WARNING: Could not recover jumptable at 0x0001812c11b4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74));
  return;
}



############ FUN_ 1812c1070 size=180 ############

void FUN_1812c1070(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74));
  iVar1 = *(int *)(param_1 + 0x24);
  iVar3 = 0;
  lVar2 = 0;
  if (0 < iVar1) {
    do {
      if (param_2 == *(longlong *)(*(longlong *)(param_1 + 0x18) + lVar2 * 8)) {
        _Dst = (void *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar3 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3);
        *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
        iVar1 = *(int *)(param_1 + 0x24);
        iVar3 = 0;
        if (0 < iVar1 * 2) {
          iVar3 = iVar1 * 2;
        }
        if (iVar3 < *(int *)(param_1 + 0x20)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(param_1 + 0x20)) {
            FUN_18047cb30(param_1 + 0x18);
          }
        }
        break;
      }
      iVar3 = iVar3 + 1;
      lVar2 = lVar2 + 1;
    } while (lVar2 < iVar1);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812c111d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x74));
  return;
}



############ FUN_ 1812bf000 size=137 ############

void FUN_1812bf000(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  undefined1 auStack_b8 [32];
  undefined1 local_98;
  void *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 local_48;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_50 = 4;
  local_48 = 0xffffffff;
  local_68 = (void *)0x0;
  local_60 = 0;
  local_58 = 0;
  local_98 = param_4;
  FUN_18123c5f0(param_2,&local_68);
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 18123c5f0 size=193 ############

ulonglong FUN_18123c5f0(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  longlong lVar4;
  ulonglong uVar5;
  int iVar6;
  char cVar7;
  longlong *plVar8;
  
  if (*(char *)((longlong)param_1 + 0x24) != '\0') {
    plVar8 = (longlong *)*param_1;
    if (plVar8 == (longlong *)0x0) {
      plVar8 = param_1 + 1;
    }
    iVar6 = (int)param_1[4] >> 5;
    lVar4 = (longlong)iVar6;
    if (-1 < iVar6) {
LAB_18123c620:
      uVar1 = *(uint *)((longlong)plVar8 + lVar4 * 4);
      if (uVar1 == 0) goto code_r0x00018123c628;
      iVar2 = 0x1f;
      if (uVar1 != 0) {
        for (; uVar1 >> iVar2 == 0; iVar2 = iVar2 + -1) {
        }
      }
      if (iVar6 * 0x20 + iVar2 < 0) goto LAB_18123c630;
      cVar7 = '\x01';
      goto LAB_18123c632;
    }
  }
LAB_18123c630:
  cVar7 = '\0';
LAB_18123c632:
  if (*(char *)((longlong)param_2 + 0x24) != '\0') {
    plVar8 = (longlong *)*param_2;
    if (plVar8 == (longlong *)0x0) {
      plVar8 = param_2 + 1;
    }
    iVar6 = (int)param_2[4] >> 5;
    lVar4 = (longlong)iVar6;
    if (-1 < iVar6) {
LAB_18123c653:
      uVar1 = *(uint *)((longlong)plVar8 + lVar4 * 4);
      if (uVar1 == 0) goto code_r0x00018123c65b;
      iVar2 = 0x1f;
      if (uVar1 != 0) {
        for (; uVar1 >> iVar2 == 0; iVar2 = iVar2 + -1) {
        }
      }
      if (-1 < iVar6 * 0x20 + iVar2) {
        cVar3 = '\x01';
        goto LAB_18123c665;
      }
    }
  }
LAB_18123c663:
  cVar3 = '\0';
LAB_18123c665:
  if (cVar7 == cVar3) {
    uVar5 = FUN_18123c4d0(param_1,param_2);
    if (cVar7 != '\0') {
      return (ulonglong)(uint)-(int)uVar5;
    }
  }
  else {
    uVar5 = 1;
    if (cVar7 != '\0') {
      uVar5 = 0xffffffff;
    }
  }
  return uVar5;
code_r0x00018123c628:
  iVar6 = iVar6 + -1;
  lVar4 = lVar4 + -1;
  if (lVar4 < 0) goto LAB_18123c630;
  goto LAB_18123c620;
code_r0x00018123c65b:
  iVar6 = iVar6 + -1;
  lVar4 = lVar4 + -1;
  if (lVar4 < 0) goto LAB_18123c663;
  goto LAB_18123c653;
}



############ FUN_ 18052c310 size=339 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018052c3fa) */
/* WARNING: Removing unreachable block (ram,0x00018052c3ff) */
/* WARNING: Removing unreachable block (ram,0x00018052c40a) */
/* WARNING: Removing unreachable block (ram,0x00018052c40f) */
/* WARNING: Removing unreachable block (ram,0x00018052c413) */
/* WARNING: Removing unreachable block (ram,0x00018052c3d6) */

void FUN_18052c310(undefined8 param_1,longlong param_2)

{
  int iVar1;
  undefined1 auStack_d8 [32];
  undefined4 local_b8;
  void *local_b0 [5];
  undefined1 local_88 [40];
  void *local_60 [5];
  void *local_38 [5];
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_b8 = 0;
  FUN_18124a040(local_88,8);
  FUN_1804db6f0(param_2 + 0x10,local_b0,0);
  iVar1 = FUN_18123c5f0(local_b0,local_88);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    free(local_b0[0]);
  }
  FUN_18124a040(local_38,6);
  FUN_1804db6f0(param_2 + 0x10,local_60,0);
  FUN_18123c5f0(local_60,local_38);
                    /* WARNING: Subroutine does not return */
  free(local_60[0]);
}



############ FUN_ 18124a040 size=130 ############

undefined8 * FUN_18124a040(undefined8 *param_1,longlong param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  *param_1 = 0;
  *(bool *)((longlong)param_1 + 0x24) = param_2 < 0;
  param_1[3] = 4;
  *(undefined4 *)(param_1 + 4) = 0x3f;
  if (param_2 < 0) {
    param_2 = -param_2;
  }
  *(int *)(param_1 + 1) = (int)param_2;
  *(int *)((longlong)param_1 + 0xc) = (int)((ulonglong)param_2 >> 0x20);
  param_1[2] = 0;
  puVar5 = param_1 + 1;
  if ((undefined8 *)*param_1 != (undefined8 *)0x0) {
    puVar5 = (undefined8 *)*param_1;
  }
  iVar3 = *(int *)(param_1 + 4) >> 5;
  lVar4 = (longlong)iVar3;
  if (-1 < iVar3) {
    do {
      uVar1 = *(uint *)((longlong)puVar5 + lVar4 * 4);
      if (uVar1 != 0) {
        iVar2 = 0x1f;
        if (uVar1 != 0) {
          for (; uVar1 >> iVar2 == 0; iVar2 = iVar2 + -1) {
          }
        }
        *(int *)(param_1 + 4) = iVar3 * 0x20 + iVar2;
        return param_1;
      }
      iVar3 = iVar3 + -1;
      lVar4 = lVar4 + -1;
    } while (-1 < lVar4);
  }
  *(undefined4 *)(param_1 + 4) = 0xffffffff;
  return param_1;
}



############ FUN_ 1804db6f0 size=215 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001804db7b7) */

void FUN_1804db6f0(longlong *param_1,undefined8 *param_2,uint param_3)

{
  void *pvVar1;
  void **ppvVar2;
  bool bVar3;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  void *local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  void *local_48 [5];
  ulonglong local_20;
  
  local_20 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_78 = 0;
  bVar3 = *(uint *)((longlong)param_1 + 0xc) <= param_3;
  if (bVar3) {
    local_70 = (void *)0x0;
    ppvVar2 = &local_70;
    local_58 = 4;
    local_50 = 0xffffffff;
    local_68 = 0;
    local_60 = 0;
  }
  else {
    FUN_18123db10(local_48,*param_1 + (longlong)(int)param_3 * 0x28);
    ppvVar2 = local_48;
  }
  *param_2 = *ppvVar2;
  *ppvVar2 = (void *)0x0;
  param_2[3] = ppvVar2[3];
  *(undefined4 *)(param_2 + 4) = *(undefined4 *)(ppvVar2 + 4);
  *(undefined1 *)((longlong)param_2 + 0x24) = *(undefined1 *)((longlong)ppvVar2 + 0x24);
  pvVar1 = ppvVar2[2];
  param_2[1] = ppvVar2[1];
  param_2[2] = pvVar1;
  if (!bVar3) {
                    /* WARNING: Subroutine does not return */
    free(local_48[0]);
  }
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 1812c0230 size=525 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812c0230(longlong param_1,longlong param_2)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined1 auStack_98 [32];
  int local_78;
  int local_74;
  int local_70;
  void *local_68 [2];
  undefined1 local_58 [24];
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_98;
  lVar4 = FUN_1812c37c0(param_1,local_68);
  cVar2 = FUN_1804df970(param_2,lVar4);
  if ((cVar2 == '\0') || (cVar2 = FUN_1804df970(param_2 + 0x10,lVar4 + 0x10), cVar2 == '\0')) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  FUN_18047c500(local_58);
  FUN_18047c500(local_68);
  if (!bVar1) {
    local_74 = *(int *)(param_1 + 0x100);
    local_78 = *(int *)(param_1 + 0xec);
    local_70 = *(int *)(param_1 + 0x104);
    if ((*(int *)(param_2 + 0xc) == *(int *)(param_1 + 0xdc)) &&
       (*(int *)(param_2 + 0x1c) == local_78)) {
      if (0 < *(int *)(param_1 + 0xdc)) {
        if (*(int *)(param_1 + 0xdc) == 0) {
          lVar4 = 0;
        }
        else {
          lVar4 = **(longlong **)(param_1 + 0xd0);
        }
        FUN_1804db6f0(param_2,local_68,0);
        FUN_18123d980(lVar4 + 0x10,local_68);
        iVar3 = FUN_18123d3f0(local_68);
        if (iVar3 != 0) {
          FUN_18123d980(lVar4 + 0x60,local_68);
        }
        FUN_18123d3f0(local_68);
                    /* WARNING: Subroutine does not return */
        free(local_68[0]);
      }
      if (0 < local_78) {
        if (*(int *)(param_1 + 0xec) == 0) {
          lVar4 = 0;
        }
        else {
          lVar4 = **(longlong **)(param_1 + 0xe0);
        }
        FUN_1804db6f0(param_2 + 0x10,local_68,0);
        FUN_18123d980(lVar4 + 0x10,local_68);
        iVar3 = FUN_18123d3f0(local_68);
        if (iVar3 != 0) {
          FUN_18123d980(lVar4 + 0x60,local_68);
        }
        FUN_18123d3f0(local_68);
                    /* WARNING: Subroutine does not return */
        free(local_68[0]);
      }
      if ((local_74 == 0) && (local_70 == 0)) {
        uVar5 = 0;
      }
      else {
        uVar5 = 1;
      }
      FUN_1812c0000(param_1,0,uVar5);
    }
  }
}



############ FUN_ 1804df970 size=136 ############

undefined8 FUN_1804df970(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  
  if (*(int *)((longlong)param_1 + 0xc) != *(int *)((longlong)param_2 + 0xc)) {
    return 0;
  }
  lVar4 = *param_2;
  lVar1 = lVar4 + (longlong)*(int *)((longlong)param_2 + 0xc) * 0x28;
  lVar2 = *param_1;
  while( true ) {
    if (lVar4 == lVar1) {
      return 1;
    }
    iVar3 = FUN_18123c5f0(lVar2,lVar4);
    if (iVar3 != 0) break;
    lVar4 = lVar4 + 0x28;
    lVar2 = lVar2 + 0x28;
  }
  return 0;
}



############ FUN_ 18123d980 size=207 ############

longlong * FUN_18123d980(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  ulonglong uVar3;
  int iVar4;
  int iVar5;
  longlong *_Dst;
  longlong *plVar6;
  ulonglong uVar7;
  
  if (param_1 != param_2) {
    plVar6 = (longlong *)*param_2;
    if (plVar6 == (longlong *)0x0) {
      plVar6 = param_2 + 1;
    }
    iVar4 = (int)param_2[4] >> 5;
    lVar2 = (longlong)iVar4;
    if (-1 < iVar4) {
LAB_18123d9b7:
      uVar1 = *(uint *)((longlong)plVar6 + lVar2 * 4);
      if (uVar1 == 0) goto code_r0x00018123d9bf;
      iVar5 = 0x1f;
      if (uVar1 != 0) {
        for (; uVar1 >> iVar5 == 0; iVar5 = iVar5 + -1) {
        }
      }
      iVar5 = iVar4 * 0x20 + iVar5;
      goto LAB_18123d9cc;
    }
LAB_18123d9c7:
    iVar5 = -1;
LAB_18123d9cc:
    *(int *)(param_1 + 4) = iVar5;
    uVar3 = (longlong)(iVar5 >> 5) + 1;
    uVar7 = 4;
    if (4 < uVar3) {
      uVar7 = uVar3;
    }
    if (uVar7 < 5) {
                    /* WARNING: Subroutine does not return */
      free((void *)*param_1);
    }
    if (uVar7 != param_1[3]) {
                    /* WARNING: Subroutine does not return */
      free((void *)*param_1);
    }
    param_1[3] = uVar7;
    plVar6 = (longlong *)*param_2;
    if (plVar6 == (longlong *)0x0) {
      plVar6 = param_2 + 1;
    }
    _Dst = (longlong *)*param_1;
    if (_Dst == (longlong *)0x0) {
      _Dst = param_1 + 1;
    }
    memcpy(_Dst,plVar6,uVar7 * 4);
    *(undefined1 *)((longlong)param_1 + 0x24) = *(undefined1 *)((longlong)param_2 + 0x24);
  }
  return param_1;
code_r0x00018123d9bf:
  iVar4 = iVar4 + -1;
  lVar2 = lVar2 + -1;
  if (lVar2 < 0) goto LAB_18123d9c7;
  goto LAB_18123d9b7;
}



############ FUN_ 1812c0000 size=543 ############

void FUN_1812c0000(longlong *param_1,char param_2,char param_3)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  ulonglong *puVar5;
  longlong lVar6;
  uint uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  uint uVar10;
  ulonglong uVar11;
  longlong lVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  int iVar15;
  
  uVar11 = 0;
  iVar1 = *(int *)((longlong)param_1 + 0xec);
  iVar2 = *(int *)((longlong)param_1 + 0xdc);
  uVar10 = 0;
  uVar9 = uVar11;
  do {
    iVar15 = (int)uVar9;
    iVar4 = iVar1;
    if (iVar15 == 0) {
      iVar4 = iVar2;
    }
    uVar9 = uVar11;
    uVar14 = uVar11;
    if (0 < iVar4) {
      do {
        puVar5 = (ulonglong *)(param_1 + 0x1c);
        if (iVar15 == 0) {
          puVar5 = (ulonglong *)(param_1 + 0x1a);
        }
        if (((uint)uVar9 < *(uint *)((longlong)puVar5 + 0xc)) &&
           (lVar3 = *(longlong *)(*puVar5 + uVar14 * 8), lVar3 != 0)) {
          lVar12 = *(longlong *)(lVar3 + 0x10);
          if (lVar12 == 0) {
            lVar12 = lVar3 + 0x18;
          }
          uVar7 = uVar10;
          uVar13 = uVar11;
          for (lVar6 = (longlong)*(int *)(lVar3 + 0x30) >> 5; -1 < lVar6; lVar6 = lVar6 + -1) {
            uVar7 = *(uint *)(lVar12 + lVar6 * 4);
            uVar7 = uVar7 - (uVar7 >> 1 & 0x55555555);
            uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);
            uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;
            uVar7 = uVar7 + (uVar7 >> 8);
            uVar7 = (int)uVar13 + ((uVar7 >> 0x10) + uVar7 & 0x3f);
            uVar13 = (ulonglong)uVar7;
          }
          *(uint *)(lVar3 + 0x8c) = uVar7;
        }
        uVar9 = (ulonglong)((uint)uVar9 + 1);
        uVar14 = uVar14 + 1;
      } while ((longlong)uVar14 < (longlong)iVar4);
    }
    uVar9 = (ulonglong)(iVar15 + 1U);
  } while ((int)(iVar15 + 1U) < 2);
  plVar8 = (longlong *)param_1[0x1a];
  uVar7 = 0;
  uVar9 = (ulonglong)
          ((longlong)(plVar8 + *(int *)((longlong)param_1 + 0xdc)) + (7 - (longlong)plVar8)) >> 3;
  if (plVar8 + *(int *)((longlong)param_1 + 0xdc) < plVar8) {
    uVar9 = uVar11;
  }
  uVar14 = uVar11;
  uVar13 = uVar11;
  if (uVar9 != 0) {
    do {
      lVar3 = *plVar8;
      plVar8 = plVar8 + 1;
      uVar14 = uVar14 + 1;
      uVar7 = (int)uVar13 + *(int *)(lVar3 + 0x8c);
      uVar13 = (ulonglong)uVar7;
    } while (uVar14 != uVar9);
  }
  *(uint *)(param_1 + 0x20) = uVar7;
  plVar8 = (longlong *)param_1[0x1c];
  uVar9 = (ulonglong)
          ((longlong)(plVar8 + *(int *)((longlong)param_1 + 0xec)) + (7 - (longlong)plVar8)) >> 3;
  if (plVar8 + *(int *)((longlong)param_1 + 0xec) < plVar8) {
    uVar9 = uVar11;
  }
  uVar14 = uVar11;
  if (uVar9 != 0) {
    do {
      lVar3 = *plVar8;
      plVar8 = plVar8 + 1;
      uVar14 = uVar14 + 1;
      uVar10 = (int)uVar11 + *(int *)(lVar3 + 0x8c);
      uVar11 = (ulonglong)uVar10;
    } while (uVar14 != uVar9);
  }
  *(uint *)((longlong)param_1 + 0x104) = uVar10;
  FUN_1812c0470(param_1);
  if ((param_2 != '\0') && (*(code **)(*param_1 + 0x110) != FUN_1812c0e10)) {
    (**(code **)(*param_1 + 0x110))(param_1);
  }
  if ((param_3 != '\0') && (*(code **)(*param_1 + 0x108) != FUN_1812c0e20)) {
    (**(code **)(*param_1 + 0x108))(param_1);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812c020a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x118))(param_1);
  return;
}



############ FUN_ 1813affa0 size=42 ############

void FUN_1813affa0(undefined8 *param_1)

{
  *param_1 = juce::AudioFormat::vftable;
  FUN_180488c50(param_1 + 2);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[2]);
}



############ FUN_ 180488c50 size=122 ############

void FUN_180488c50(longlong *param_1)

{
  int iVar1;
  int *_Memory;
  int iVar2;
  longlong lVar3;
  
  iVar2 = 0;
  if (*(int *)((longlong)param_1 + 0xc) < 1) {
    *(undefined4 *)((longlong)param_1 + 0xc) = 0;
    return;
  }
  lVar3 = 0;
  do {
    _Memory = (int *)(*(longlong *)(lVar3 + *param_1) + -0x10);
    if ((*(uint *)(*(longlong *)(lVar3 + *param_1) + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar1 = *_Memory;
      *_Memory = *_Memory + -1;
      UNLOCK();
      if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    iVar2 = iVar2 + 1;
    lVar3 = lVar3 + 8;
  } while (iVar2 < *(int *)((longlong)param_1 + 0xc));
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
  return;
}



############ FUN_ 18123fe10 size=725 ############

bool FUN_18123fe10(undefined8 *param_1,byte *param_2)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  char cVar4;
  byte bVar5;
  int iVar6;
  int iVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  uint *puVar10;
  byte *pbVar11;
  ulonglong uVar12;
  bool bVar13;
  byte *local_res10;
  undefined4 local_res18;
  byte *local_res20;
  longlong local_58;
  longlong local_50;
  longlong local_48 [4];
  
  local_48[1] = 0xfffffffffffffffe;
  iVar6 = 0;
  local_res18 = 0;
  local_res10 = param_2;
  if (*param_2 == 0) {
    iVar6 = FUN_1812327b0(param_1,0x5c);
    iVar7 = FUN_1812327b0(param_1,0x2e);
    return iVar7 <= iVar6;
  }
  iVar7 = FUN_18049bc80(param_2,0x3b);
  if (iVar7 < 0) {
    cVar4 = FUN_181231160(param_1,param_2);
    if (cVar4 != '\0') {
      iVar7 = FUN_180493050(&local_res10,0);
      if (iVar7 == 0x2e) {
        return true;
      }
      pbVar11 = (byte *)*param_1;
      iVar7 = iVar6;
      while( true ) {
        while( true ) {
          bVar2 = *pbVar11;
          pbVar11 = pbVar11 + 1;
          if (-1 < (char)bVar2) break;
          if ((*pbVar11 & 0xc0) != 0x80) goto LAB_181240088;
          do {
            pbVar11 = pbVar11 + 1;
          } while ((*pbVar11 & 0xc0) == 0x80);
          iVar7 = iVar7 + 1;
        }
        if (bVar2 == 0) break;
LAB_181240088:
        iVar7 = iVar7 + 1;
      }
      while( true ) {
        while( true ) {
          bVar2 = *param_2;
          param_2 = param_2 + 1;
          if (-1 < (char)bVar2) break;
          if ((*param_2 & 0xc0) != 0x80) goto LAB_1812400b8;
          do {
            param_2 = param_2 + 1;
          } while ((*param_2 & 0xc0) == 0x80);
          iVar6 = iVar6 + 1;
        }
        if (bVar2 == 0) break;
LAB_1812400b8:
        iVar6 = iVar6 + 1;
      }
      if (-1 < (iVar7 - iVar6) + -1) {
        iVar6 = FUN_180493050(param_1);
        return iVar6 == 0x2e;
      }
    }
    return false;
  }
  FUN_18049c9e0(&local_58);
  local_res18 = 1;
  uVar8 = FUN_1812490c0(&local_58,local_48,0,iVar7);
  local_res18 = 3;
  puVar9 = (undefined8 *)FUN_181230800(uVar8,&local_50);
  local_res18 = 7;
  local_48[2] = *puVar9;
  cVar4 = FUN_18123fe10(param_1);
  if (cVar4 == '\0') {
    if (iVar7 + 1 < 0) {
      local_res20 = param_2;
      if (iVar7 + 2 < 1) {
        uVar12 = (ulonglong)(1 - (iVar7 + 2));
        do {
          iVar6 = 0;
          do {
            param_2 = param_2 + -1;
            if ((*param_2 & 0xc0) != 0x80) break;
            iVar6 = iVar6 + 1;
          } while (iVar6 < 4);
          uVar12 = uVar12 - 1;
          local_res20 = param_2;
        } while (uVar12 != 0);
      }
    }
    else {
      for (; local_res20 = param_2, -1 < iVar7; iVar7 = iVar7 + -1) {
        bVar2 = *param_2;
        local_res20 = param_2 + 1;
        if ((char)bVar2 < '\0') {
          bVar5 = 0x40;
          bVar3 = bVar2 & 0x40;
          while ((bVar3 != 0 && (8 < bVar5))) {
            local_res20 = local_res20 + 1;
            bVar5 = bVar5 >> 1;
            bVar3 = bVar2 & bVar5;
          }
        }
        param_2 = local_res20;
      }
    }
    while ((bVar2 = *param_2, bVar2 == 0x20 || ((byte)(bVar2 - 9) < 5))) {
      param_2 = param_2 + 1;
      if ((char)bVar2 < '\0') {
        bVar5 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar5))) {
          param_2 = param_2 + 1;
          bVar5 = bVar5 >> 1;
          bVar3 = bVar2 & bVar5;
        }
      }
    }
    cVar4 = FUN_18123fe10(param_1,param_2);
    if (cVar4 == '\0') {
      bVar13 = false;
      goto LAB_18123ffa6;
    }
  }
  bVar13 = true;
LAB_18123ffa6:
  puVar10 = (uint *)(local_50 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_48[0] + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_58 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return bVar13;
}



############ FUN_ 180545be0 size=779 ############

undefined8 * FUN_180545be0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  HMODULE pHVar6;
  FARPROC pFVar7;
  INT_PTR IVar8;
  uint uVar9;
  uint *puVar10;
  undefined2 local_res10 [4];
  longlong local_res18;
  longlong local_res20;
  longlong local_78;
  LPCSTR local_70;
  undefined8 local_68;
  uint *local_60;
  undefined1 local_58 [24];
  
  local_68 = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_res18,"Windows Media");
  lVar2 = DAT_1826739f8;
  local_60 = &DAT_182673984;
  do {
    LOCK();
    uVar9 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar9 != 0);
  if (DAT_1826739f8 == 0) {
    local_res20 = local_res18;
    uVar9 = *(uint *)(local_res18 + -0x10);
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) != 0) &&
       (iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res18,*(undefined1 *)(DAT_1826739f8 + 0x38)
                              ,0), iVar3 < 0)) {
      FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_res20,&local_res18,&local_res18);
      goto LAB_180545cca;
    }
    iVar3 = FUN_1812498b0(lVar2 + 0x18,local_res18,*(undefined1 *)(lVar2 + 0x38),0);
    if (iVar3 < 0) {
      local_res20 = local_res18;
      uVar9 = *(uint *)(local_res18 + -0x10);
    }
    else {
      plVar4 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar3);
      local_res20 = *plVar4;
      uVar9 = *(uint *)(local_res20 + -0x10);
    }
  }
  if ((uVar9 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
LAB_180545cca:
  pFVar7 = (FARPROC)0x0;
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar10 = (uint *)(local_res18 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  *param_1 = juce::AudioFormatReader::vftable;
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x24) = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = 1;
  param_1[10] = param_2;
  param_1[0xb] = local_res20;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  puVar10 = (uint *)(local_res20 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  *param_1 = juce::WindowsMediaCodec::WMAudioReader::vftable;
  FUN_18049c4e0(&local_78,"Wmvcore.dll");
  param_1[0xc] = 0;
  puVar5 = (undefined8 *)FUN_18049a930(local_58,&local_78);
  pHVar6 = LoadLibraryW((LPCWSTR)*puVar5);
  param_1[0xc] = pHVar6;
  puVar10 = (uint *)(local_78 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  FUN_18049c4e0(&local_70,"WMCreateSyncReader");
  if ((HMODULE)param_1[0xc] != (HMODULE)0x0) {
    pFVar7 = GetProcAddress((HMODULE)param_1[0xc],local_70);
  }
  puVar10 = (uint *)(local_70 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if (pFVar7 != (FARPROC)0x0) {
    CoInitialize((LPVOID)0x0);
    if ((longlong *)param_1[0xd] != (longlong *)0x0) {
      (**(code **)(*(longlong *)param_1[0xd] + 0x10))();
    }
    param_1[0xd] = 0;
    IVar8 = (*pFVar7)(0,1,param_1 + 0xd);
    if (-1 < (int)IVar8) {
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      uVar1 = param_1[10];
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::WindowsMediaCodec::JuceIStream::vftable;
      puVar5[2] = uVar1;
      iVar3 = (**(code **)(*(longlong *)param_1[0xd] + 0xb8))((longlong *)param_1[0xd],puVar5);
      if (-1 < iVar3) {
        local_res10[0] = 1;
        (**(code **)(*(longlong *)param_1[0xd] + 0xa0))((longlong *)param_1[0xd],0,local_res10);
        (**(code **)(*(longlong *)param_1[0xd] + 0x50))((longlong *)param_1[0xd],local_res10[0],0);
        FUN_180546380(param_1);
      }
    }
  }
  return param_1;
}



############ FUN_ 1813afcf0 size=132 ############

undefined8
FUN_1813afcf0(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4,
             undefined4 param_5,undefined8 param_6,undefined4 param_7)

{
  char cVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  cVar1 = (**(code **)(*param_1 + 0x40))(param_1,param_4);
  if (cVar1 == '\0') {
    uVar3 = 0;
  }
  else {
    uVar2 = FUN_18123d3f0(param_4);
    uVar3 = (**(code **)(*param_1 + 0x70))(param_1,param_2,param_3,uVar2,param_5,param_6,param_7);
  }
  return uVar3;
}



############ FUN_ 1813af190 size=138 ############

void FUN_1813af190(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4,
                  undefined4 *param_5,undefined4 *param_6,undefined4 *param_7)

{
  if (*(uint *)(param_1 + 4) < 2) {
    (**(code **)(*param_1 + 0x10))();
  }
  else {
    (**(code **)(*param_1 + 0x10))();
  }
  *param_4 = 0;
  *param_5 = 0;
  *param_6 = 0;
  *param_7 = 0;
  return;
}



############ FUN_ 1813af220 size=771 ############

void FUN_1813af220(longlong *param_1,longlong param_2,ulonglong param_3,longlong param_4,int param_5
                  )

{
  float fVar1;
  int iVar2;
  ulonglong uVar3;
  bool bVar4;
  int iVar5;
  float fVar6;
  char cVar7;
  longlong lVar8;
  float *pfVar9;
  int iVar10;
  longlong lVar11;
  longlong lVar12;
  int iVar13;
  int iVar14;
  int *piVar15;
  undefined8 *puVar16;
  longlong lVar17;
  undefined8 *puVar18;
  float fVar19;
  float fVar20;
  float local_1c4;
  float local_1c0;
  float local_1bc;
  float local_1b8;
  float local_1b4;
  float fStack_1b0;
  undefined8 *local_1a8;
  longlong local_1a0;
  ulonglong local_198;
  undefined8 local_190;
  undefined1 local_188 [16];
  undefined8 *local_178;
  void *local_170;
  undefined1 local_68;
  
  local_190 = 0xfffffffffffffffe;
  lVar11 = (longlong)param_5;
  if ((longlong)param_3 < 1) {
    lVar8 = 0;
    if (0 < param_5) {
      do {
        *(undefined8 *)(param_4 + lVar8 * 8) = 0;
        lVar8 = lVar8 + 1;
      } while (lVar8 < lVar11);
    }
    return;
  }
  iVar10 = (int)param_3;
  if (0x1000 < (longlong)param_3) {
    iVar10 = 0x1000;
  }
  local_1a0 = lVar11;
  FUN_180535db0(local_188,lVar11,iVar10);
  fVar6 = DAT_1824c3c28;
  LOCK();
  local_68 = 0;
  UNLOCK();
  local_1a8 = local_178;
  bVar4 = true;
  local_198 = (ulonglong)iVar10;
  puVar16 = local_178;
  do {
    uVar3 = param_3;
    if ((longlong)local_198 < (longlong)param_3) {
      uVar3 = local_198;
    }
    iVar13 = (int)uVar3;
    lVar17 = (longlong)iVar13;
    lVar8 = param_2;
    iVar10 = iVar13;
    iVar14 = 0;
    if (param_2 < 0) {
      lVar8 = lVar11;
      iVar14 = (int)-param_2;
      if (lVar17 < -param_2) {
        iVar14 = iVar13;
      }
      while (lVar8 = lVar8 + -1, -1 < lVar8) {
        if ((void *)puVar16[lVar8] != (void *)0x0) {
          memset((void *)puVar16[lVar8],0,(longlong)iVar14 << 2);
        }
      }
      iVar10 = iVar13 - iVar14;
      lVar8 = 0;
    }
    if (0 < iVar10) {
      iVar5 = (int)param_1[4];
      if (param_5 < (int)param_1[4]) {
        iVar5 = param_5;
      }
      cVar7 = (**(code **)(*param_1 + 0x20))(param_1,puVar16,iVar5,iVar14,lVar8,iVar10);
      if (cVar7 == '\0') break;
      lVar8 = (longlong)(int)param_1[4];
      if ((int)param_1[4] < param_5) {
        for (; lVar8 < lVar11; lVar8 = lVar8 + 1) {
          if ((void *)puVar16[lVar8] != (void *)0x0) {
            memset((void *)puVar16[lVar8],0,lVar17 * 4);
          }
        }
      }
    }
    puVar18 = puVar16;
    lVar8 = lVar11;
    if (0 < lVar11) {
      lVar12 = param_4 - (longlong)puVar16;
      do {
        if (*(char *)((longlong)param_1 + 0x24) == '\0') {
          piVar15 = (int *)*puVar16;
          if (iVar13 < 1) {
            iVar10 = 0;
            iVar14 = 0;
          }
          else {
            iVar10 = *piVar15;
            iVar14 = iVar10;
            iVar5 = iVar13;
            while (iVar5 = iVar5 + -1, 0 < iVar5) {
              piVar15 = piVar15 + 1;
              iVar2 = *piVar15;
              if (iVar10 < iVar2) {
                iVar10 = iVar2;
              }
              if (iVar2 < iVar14) {
                iVar14 = iVar2;
              }
            }
          }
          fVar20 = (float)iVar10 * fVar6;
          fVar19 = (float)iVar14 * fVar6;
          if (fVar20 <= fVar19) {
            fVar20 = fVar19;
          }
        }
        else {
          FUN_1804d5400(&local_1bc,*puVar16,uVar3 & 0xffffffff);
          fVar19 = local_1bc;
          fVar20 = local_1b8;
        }
        if (bVar4) {
          local_1b4 = fVar19;
          fStack_1b0 = fVar20;
          pfVar9 = &local_1b4;
        }
        else {
          fVar1 = *(float *)(lVar12 + 4 + (longlong)puVar16);
          if (fVar20 <= fVar1) {
            fVar20 = fVar1;
          }
          if (*(float *)(lVar12 + (longlong)puVar16) <= fVar19) {
            fVar19 = *(float *)(lVar12 + (longlong)puVar16);
          }
          local_1c4 = fVar19;
          if (fVar20 <= fVar19) {
            local_1c0 = fVar19;
          }
          else {
            local_1c0 = fVar20;
          }
          pfVar9 = &local_1c4;
        }
        *(undefined8 *)(lVar12 + (longlong)puVar16) = *(undefined8 *)pfVar9;
        puVar16 = puVar16 + 1;
        lVar11 = lVar11 + -1;
        puVar18 = local_1a8;
        lVar8 = local_1a0;
      } while (lVar11 != 0);
    }
    bVar4 = false;
    param_3 = param_3 - lVar17;
    param_2 = param_2 + lVar17;
    puVar16 = puVar18;
    lVar11 = lVar8;
  } while (0 < (longlong)param_3);
                    /* WARNING: Subroutine does not return */
  free(local_170);
}



############ FUN_ 180535db0 size=127 ############

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

void FUN_180535db0(int *param_1,int param_2,int param_3)

{
  *param_1 = param_2;
  param_1[1] = param_3;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  *(undefined1 *)(param_1 + 0x48) = 0;
  *(longlong *)(param_1 + 2) =
       (longlong)*param_1 * (longlong)param_1[1] * 4 + 0x20 + (longlong)(*param_1 + 1) * 8;
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 1804d5400 size=681 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804d5400(float *param_1,undefined1 (*param_2) [16],uint param_3)

{
  undefined1 (*pauVar1) [16];
  int iVar2;
  uint uVar3;
  longlong lVar4;
  float *pfVar5;
  longlong lVar6;
  ulonglong uVar7;
  float fVar8;
  float fVar10;
  undefined1 auVar9 [16];
  float fVar12;
  undefined1 auVar11 [16];
  float local_20;
  float fStack_14;
  
  iVar2 = (int)(param_3 + ((int)param_3 >> 0x1f & 3U)) >> 2;
  if (iVar2 < 2) {
    if ((int)param_3 < 1) {
      param_1[0] = 0.0;
      param_1[1] = 0.0;
    }
    else {
      fVar8 = *(float *)*param_2;
      iVar2 = param_3 - 1;
      pfVar5 = (float *)(*param_2 + 4);
      fVar10 = fVar8;
      if (3 < iVar2) {
        uVar3 = (param_3 - 5 >> 2) + 1;
        uVar7 = (ulonglong)uVar3;
        iVar2 = iVar2 + uVar3 * -4;
        do {
          fVar12 = *pfVar5;
          if (fVar10 < fVar12) {
            fVar10 = fVar12;
          }
          if (fVar12 < fVar8) {
            fVar8 = fVar12;
          }
          fVar12 = pfVar5[1];
          if (fVar10 < fVar12) {
            fVar10 = fVar12;
          }
          if (fVar12 < fVar8) {
            fVar8 = fVar12;
          }
          fVar12 = pfVar5[2];
          if (fVar10 < fVar12) {
            fVar10 = fVar12;
          }
          if (fVar12 < fVar8) {
            fVar8 = fVar12;
          }
          fVar12 = pfVar5[3];
          if (fVar10 < fVar12) {
            fVar10 = fVar12;
          }
          if (fVar12 < fVar8) {
            fVar8 = fVar12;
          }
          pfVar5 = pfVar5 + 4;
          uVar7 = uVar7 - 1;
        } while (uVar7 != 0);
      }
      for (; 0 < iVar2; iVar2 = iVar2 + -1) {
        fVar12 = *pfVar5;
        if (fVar10 < fVar12) {
          fVar10 = fVar12;
        }
        if (fVar12 < fVar8) {
          fVar8 = fVar12;
        }
        pfVar5 = pfVar5 + 1;
      }
      *param_1 = fVar8;
      param_1[1] = fVar10;
    }
  }
  else {
    iVar2 = iVar2 + -1;
    if (((ulonglong)param_2 & 0xf) == 0) {
      auVar11 = *param_2;
      auVar9 = auVar11;
      while (0 < iVar2) {
        auVar11 = minps(auVar11,param_2[1]);
        param_2 = param_2 + 1;
        iVar2 = iVar2 + -1;
        auVar9 = maxps(auVar9,*param_2);
      }
    }
    else {
      auVar11 = *param_2;
      auVar9 = auVar11;
      while (0 < iVar2) {
        pauVar1 = param_2 + 1;
        param_2 = param_2 + 1;
        iVar2 = iVar2 + -1;
        auVar11 = minps(auVar11,*pauVar1);
        auVar9 = maxps(auVar9,*pauVar1);
      }
    }
    fVar8 = auVar9._4_4_;
    fVar10 = auVar9._8_4_;
    fStack_14 = auVar9._12_4_;
    if (fVar10 <= fVar8) {
      if (fStack_14 <= fVar8) {
        fStack_14 = fVar8;
      }
    }
    else if (fStack_14 <= fVar10) {
      fStack_14 = fVar10;
    }
    local_20 = auVar9._0_4_;
    fVar8 = fStack_14;
    if (fStack_14 <= local_20) {
      fVar8 = local_20;
    }
    fVar10 = auVar11._4_4_;
    fVar12 = auVar11._8_4_;
    fStack_14 = auVar11._12_4_;
    if (fVar10 <= fVar12) {
      if (fVar10 <= fStack_14) {
        fStack_14 = fVar10;
      }
    }
    else if (fVar12 <= fStack_14) {
      fStack_14 = fVar12;
    }
    local_20 = auVar11._0_4_;
    if (local_20 <= fStack_14) {
      fStack_14 = local_20;
    }
    if (fVar8 <= fStack_14) {
      fVar8 = fStack_14;
    }
    lVar4 = 0;
    uVar7 = (ulonglong)(param_3 & 3);
    if (3 < uVar7) {
      pfVar5 = (float *)(param_2[1] + 8);
      lVar6 = (uVar7 - 4 >> 2) + 1;
      lVar4 = lVar6 * 4;
      do {
        if (fVar8 <= pfVar5[-2]) {
          fVar8 = pfVar5[-2];
        }
        if (pfVar5[-2] <= fStack_14) {
          fStack_14 = pfVar5[-2];
        }
        if (fVar8 <= fStack_14) {
          fVar8 = fStack_14;
        }
        if (fVar8 <= pfVar5[-1]) {
          fVar8 = pfVar5[-1];
        }
        if (pfVar5[-1] <= fStack_14) {
          fStack_14 = pfVar5[-1];
        }
        if (fVar8 <= fStack_14) {
          fVar8 = fStack_14;
        }
        if (fVar8 <= *pfVar5) {
          fVar8 = *pfVar5;
        }
        if (*pfVar5 <= fStack_14) {
          fStack_14 = *pfVar5;
        }
        if (fVar8 <= fStack_14) {
          fVar8 = fStack_14;
        }
        if (pfVar5[1] <= fStack_14) {
          fStack_14 = pfVar5[1];
        }
        fVar10 = fVar8;
        if (fVar8 <= pfVar5[1]) {
          fVar10 = pfVar5[1];
        }
        fVar8 = fStack_14;
        if (fStack_14 < fVar10) {
          fVar8 = fVar10;
        }
        pfVar5 = pfVar5 + 4;
        lVar6 = lVar6 + -1;
      } while (lVar6 != 0);
    }
    for (; lVar4 < (longlong)uVar7; lVar4 = lVar4 + 1) {
      if (*(float *)(param_2[1] + lVar4 * 4) <= fStack_14) {
        fStack_14 = *(float *)(param_2[1] + lVar4 * 4);
      }
      fVar10 = fVar8;
      if (fVar8 <= *(float *)(param_2[1] + lVar4 * 4)) {
        fVar10 = *(float *)(param_2[1] + lVar4 * 4);
      }
      fVar8 = fStack_14;
      if (fStack_14 < fVar10) {
        fVar8 = fVar10;
      }
    }
    *param_1 = fStack_14;
    param_1[1] = fVar8;
  }
}



############ FUN_ 18053dba0 size=990 ############

undefined8
FUN_18053dba0(longlong param_1,longlong param_2,int param_3,int param_4,longlong param_5,int param_6
             )

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  int iVar7;
  int iVar8;
  int local_res20;
  longlong local_48;
  
  iVar4 = param_6;
  local_res20 = param_4;
  if (param_6 < 1) {
    return 1;
  }
  do {
    iVar2 = (*(int *)(param_1 + 0x4f4) - (int)param_5) + *(int *)(param_1 + 0x4f0);
    if ((*(int *)(param_1 + 0x4f0) <= param_5) && (0 < iVar2)) {
      iVar8 = iVar4;
      if (iVar2 < iVar4) {
        iVar8 = iVar2;
      }
      iVar2 = param_3;
      if (*(int *)(param_1 + 0x3c8) < param_3) {
        iVar2 = *(int *)(param_1 + 0x3c8);
      }
      iVar2 = iVar2 + -1;
      if (-1 < iVar2) {
        lVar5 = (longlong)iVar2 * 8;
        do {
          if (*(longlong *)(lVar5 + param_2) != 0) {
            memcpy((void *)(*(longlong *)(lVar5 + param_2) + (longlong)local_res20 * 4),
                   (void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5) +
                           (longlong)((int)param_5 - *(int *)(param_1 + 0x4f0)) * 4),
                   (longlong)iVar8 << 2);
          }
          lVar5 = lVar5 + -8;
          iVar2 = iVar2 + -1;
          iVar4 = param_6;
        } while (-1 < iVar2);
      }
      iVar4 = iVar4 - iVar8;
      param_5 = param_5 + iVar8;
      local_res20 = local_res20 + iVar8;
      param_6 = iVar4;
      if (iVar4 == 0) {
        return 1;
      }
    }
    if ((param_5 < *(int *)(param_1 + 0x4f0)) ||
       ((longlong)(*(int *)(param_1 + 0x4f0) + *(int *)(param_1 + 0x4f4)) < iVar4 + param_5)) {
      *(undefined4 *)(param_1 + 0x4f4) = *(undefined4 *)(param_1 + 0x3cc);
      iVar2 = -0x83;
      iVar8 = 0;
      if (0 < (int)param_5) {
        iVar8 = (int)param_5;
      }
      *(int *)(param_1 + 0x4f0) = iVar8;
      if (1 < *(int *)(param_1 + 0xe0)) {
        iVar2 = (int)*(undefined8 *)(param_1 + 0xd8);
      }
      if (iVar8 != iVar2) {
        FUN_18136fc00(param_1 + 0x60);
      }
      iVar8 = 0;
      for (iVar2 = *(int *)(param_1 + 0x4f4); 0 < iVar2; iVar2 = iVar2 - iVar7) {
        local_48 = 0;
        iVar4 = param_6;
        if (*(int *)(param_1 + 0xe0) < 2) {
LAB_18053deb3:
          if ((0 < iVar2) && (*(char *)(param_1 + 0x4e8) == '\0')) {
            if ((iVar8 == 0) && (iVar2 == *(int *)(param_1 + 0x3cc))) {
              LOCK();
              *(undefined1 *)(param_1 + 0x4e8) = 1;
              UNLOCK();
            }
            iVar7 = 0;
            if (0 < *(int *)(param_1 + 0x3c8)) {
              lVar5 = 0;
              do {
                memset((void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5) +
                               (longlong)iVar8 * 4),0,(longlong)iVar2 << 2);
                iVar7 = iVar7 + 1;
                lVar5 = lVar5 + 8;
              } while (iVar7 < *(int *)(param_1 + 0x3c8));
            }
          }
          break;
        }
        do {
          if (*(int *)(param_1 + 0xe0) == 4) {
            lVar5 = *(longlong *)(param_1 + 0x280);
            if ((-1 < *(int *)(param_1 + 0x2a0)) &&
               (*(int *)(param_1 + 0x2a0) < *(int *)(param_1 + 0x29c))) {
              iVar7 = 0;
              if (0 < *(int *)(lVar5 + 4)) {
                lVar6 = 0;
                do {
                  iVar7 = iVar7 + 1;
                  *(longlong *)(lVar6 + *(longlong *)(param_1 + 0x290)) =
                       *(longlong *)(*(longlong *)(param_1 + 0x288) + -8 + lVar6 + 8) +
                       (longlong)*(int *)(param_1 + 0x2a0) * 4;
                  lVar6 = lVar6 + 8;
                } while (iVar7 < *(int *)(lVar5 + 4));
              }
              iVar7 = *(int *)(param_1 + 0x29c) - *(int *)(param_1 + 0x2a0);
              if (iVar7 != 0) {
                if (iVar2 < iVar7) {
                  iVar7 = iVar2;
                }
                uVar1 = *(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 200) + 0x20) + 0x1668)
                ;
                if ((iVar7 == 0) || (*(int *)(param_1 + 0x2a0) + iVar7 <= *(int *)(param_1 + 0x29c))
                   ) {
                  *(int *)(param_1 + 0x2a0) = *(int *)(param_1 + 0x2a0) + iVar7;
                }
                *(longlong *)(param_1 + 0xd8) =
                     *(longlong *)(param_1 + 0xd8) + (longlong)(iVar7 << ((byte)uVar1 & 0x1f));
                local_48 = *(longlong *)(param_1 + 0x290);
                break;
              }
            }
          }
          iVar7 = FUN_181371870(param_1 + 0x60);
          if (iVar7 == -2) goto LAB_18053deb3;
        } while (0 < iVar7);
        if (iVar7 < 1) goto LAB_18053deb3;
        iVar3 = *(int *)(param_1 + 0x20);
        if (*(int *)(param_1 + 0x3c8) < *(int *)(param_1 + 0x20)) {
          iVar3 = *(int *)(param_1 + 0x3c8);
        }
        lVar5 = (longlong)(iVar3 + -1);
        if (-1 < iVar3 + -1) {
          do {
            LOCK();
            *(undefined1 *)(param_1 + 0x4e8) = 0;
            UNLOCK();
            memcpy((void *)(*(longlong *)(*(longlong *)(param_1 + 0x3d8) + lVar5 * 8) +
                           (longlong)iVar8 * 4),*(void **)(local_48 + lVar5 * 8),
                   (longlong)iVar7 << 2);
            lVar5 = lVar5 + -1;
          } while (-1 < lVar5);
        }
        iVar8 = iVar8 + iVar7;
      }
    }
    if (iVar4 < 1) {
      return 1;
    }
  } while( true );
}



############ FUN_ 18136fc00 size=1554 ############

undefined8 FUN_18136fc00(longlong param_1,longlong param_2)

{
  uint *puVar1;
  byte *pbVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  longlong *plVar9;
  int *piVar10;
  byte bVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  longlong lVar15;
  uint uVar16;
  longlong lVar17;
  uint uVar18;
  ulonglong uVar19;
  longlong lVar20;
  uint uVar21;
  undefined8 local_78;
  longlong local_70;
  longlong local_68;
  ulonglong local_60;
  longlong local_58 [4];
  
  uVar8 = FUN_181370220();
  if (((int)uVar8 < 0) || (uVar8 = FUN_181371e20(param_1), (int)uVar8 != 0)) {
    return uVar8;
  }
  iVar6 = 0;
LAB_18136fc70:
  uVar18 = *(uint *)(param_1 + 0xd4);
  uVar19 = (ulonglong)(int)uVar18;
  if (*(int *)(param_1 + 0xd0) <= (int)uVar18) {
    lVar17 = FUN_1813730a0(param_1,local_58,0xffffffffffffffff);
    lVar20 = local_58[0];
    if (lVar17 < 0) goto LAB_181370127;
    if ((*(byte *)(local_58[0] + 5) & 2) != 0) {
      FUN_18138ffc0(param_1 + 0x218);
      FUN_181390bc0(param_1 + 0x298);
      *(undefined4 *)(param_1 + 0x80) = 2;
    }
    if (*(int *)(param_1 + 0x80) < 3) goto code_r0x000181370029;
    goto LAB_181370102;
  }
  uVar16 = *(uint *)(*(longlong *)(param_1 + 0xb8) + uVar19 * 4);
  lVar20 = *(longlong *)(param_1 + 0xb8) + uVar19 * 4;
  if ((uVar16 >> 10 & 1) != 0) {
    *(longlong *)(param_1 + 0x208) = *(longlong *)(param_1 + 0x208) + 1;
    *(uint *)(param_1 + 0xd4) = uVar18 + 1;
LAB_181370127:
    *(undefined8 *)(param_1 + 0x90) = 0;
    *(undefined8 *)(param_1 + 0x98) = 0;
    bVar11 = (byte)*(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 0x68) + 0x20) + 0x1668);
    lVar20 = *(longlong *)(param_1 + 0x78);
    while (lVar20 < (param_2 >> (bVar11 & 0x3f)) << (bVar11 & 0x3f)) {
      iVar6 = *(int *)(param_1 + 0x240);
      lVar20 = param_2 - *(longlong *)(param_1 + 0x78) >> (bVar11 & 0x3f);
      if ((iVar6 < 0) || (*(int *)(param_1 + 0x23c) <= iVar6)) {
        iVar6 = 0;
      }
      else {
        iVar6 = *(int *)(param_1 + 0x23c) - iVar6;
      }
      if (lVar20 < iVar6) {
        iVar6 = (int)lVar20;
      }
      if ((iVar6 == 0) || (*(int *)(param_1 + 0x240) + iVar6 <= *(int *)(param_1 + 0x23c))) {
        *(int *)(param_1 + 0x240) = *(int *)(param_1 + 0x240) + iVar6;
      }
      *(longlong *)(param_1 + 0x78) =
           *(longlong *)(param_1 + 0x78) + (longlong)(iVar6 << (bVar11 & 0x1f));
      if ((iVar6 < lVar20) && (iVar6 = FUN_181371870(param_1), iVar6 < 1)) {
        uVar8 = FUN_181371270(param_1,0xffffffff);
        *(undefined8 *)(param_1 + 0x78) = uVar8;
      }
      lVar20 = *(longlong *)(param_1 + 0x78);
    }
    return 0;
  }
  uVar21 = uVar16 & 0xff;
  uVar16 = uVar16 & 0x200;
  if (uVar21 == 0xff) {
    uVar21 = 0xff;
    do {
      puVar1 = (uint *)(lVar20 + 4);
      lVar20 = lVar20 + 4;
      uVar18 = (int)uVar19 + 1;
      uVar19 = (ulonglong)uVar18;
      uVar12 = *puVar1 & 0xff;
      if ((*puVar1 & 0x200) != 0) {
        uVar16 = 0x200;
      }
      uVar21 = uVar21 + uVar12;
    } while (uVar12 == 0xff);
  }
  uVar8 = *(undefined8 *)(param_1 + 0x208);
  lVar20 = *(longlong *)(param_1 + 0x68);
  lVar15 = (longlong)*(int *)(param_1 + 0xb0) + *(longlong *)(param_1 + 0xa0);
  lVar17 = *(longlong *)(*(longlong *)(param_1 + 0xc0) + (longlong)(int)uVar18 * 8);
  lVar4 = *(longlong *)(lVar20 + 0x20 + (longlong)*(int *)(param_1 + 0x88) * 0x28);
  local_78 = 0;
  local_60 = (ulonglong)uVar21;
  local_70 = lVar15;
  local_68 = lVar15;
  iVar5 = FUN_181392960(&local_78,1);
  if (iVar5 == 0) {
    iVar14 = 0;
    for (iVar5 = *(int *)(lVar4 + 8); 1 < iVar5; iVar5 = iVar5 >> 1) {
      iVar14 = iVar14 + 1;
    }
    iVar5 = FUN_181392960(&local_78,iVar14);
    if ((iVar5 != -1) &&
       (iVar5 = *(int *)(lVar4 + (longlong)**(int **)(lVar4 + 0x20 + (longlong)iVar5 * 8) * 4),
       -1 < iVar5)) {
      if (iVar6 != 0) {
        *(longlong *)(param_1 + 0x78) =
             *(longlong *)(param_1 + 0x78) + ((longlong)(iVar5 + iVar6) >> 2);
      }
      lVar20 = *(longlong *)(lVar20 + 0x20);
      if (lVar20 == 0) {
        iVar6 = -1;
      }
      else {
        iVar6 = *(int *)(lVar20 + 4);
      }
      if (param_2 <= ((longlong)(iVar6 + iVar5) >> 2) + *(longlong *)(param_1 + 0x78))
      goto LAB_181370127;
      uVar18 = *(uint *)(param_1 + 0xd4);
      uVar19 = (ulonglong)(int)uVar18;
      if ((int)uVar18 < *(int *)(param_1 + 0xd0)) {
        lVar20 = *(longlong *)(param_1 + 0xb8) + uVar19 * 4;
        uVar12 = *(uint *)(*(longlong *)(param_1 + 0xb8) + uVar19 * 4);
        if ((uVar12 >> 10 & 1) == 0) {
          uVar12 = uVar12 & 0xff;
          if (uVar12 == 0xff) {
            uVar12 = 0xff;
            do {
              pbVar2 = (byte *)(lVar20 + 4);
              lVar20 = lVar20 + 4;
              uVar12 = uVar12 + *pbVar2;
              uVar18 = (int)uVar19 + 1;
              uVar19 = (ulonglong)uVar18;
            } while (*pbVar2 == 0xff);
          }
          *(int *)(param_1 + 0xb0) = *(int *)(param_1 + 0xb0) + uVar12;
        }
        *(longlong *)(param_1 + 0x208) = *(longlong *)(param_1 + 0x208) + 1;
        *(uint *)(param_1 + 0xd4) = uVar18 + 1;
      }
      puVar3 = (undefined8 *)(param_1 + 0x298);
      lVar20 = *(longlong *)(*(longlong *)(param_1 + 0x2e8) + 0x78);
      lVar4 = *(longlong *)(*(longlong *)(*(longlong *)(param_1 + 0x2e8) + 8) + 0x20);
      FUN_181390c80(puVar3);
      *(undefined8 *)(param_1 + 0x2a0) = 0;
      *(undefined8 *)(param_1 + 0x2b8) = 0;
      *(longlong *)(param_1 + 0x2b0) = lVar15;
      *(longlong *)(param_1 + 0x2a8) = lVar15;
      *(uint *)(param_1 + 0x2b8) = uVar21;
      iVar6 = FUN_181392960(param_1 + 0x2a0,1);
      if ((iVar6 == 0) &&
         (iVar6 = FUN_181392960(param_1 + 0x2a0,*(undefined4 *)(lVar20 + 0x50)), iVar6 != -1)) {
        *(int *)(param_1 + 0x2d0) = iVar6;
        piVar10 = *(int **)(lVar4 + 0x20 + (longlong)iVar6 * 8);
        if (piVar10 != (int *)0x0) {
          iVar6 = *piVar10;
          *(int *)(param_1 + 0x2c4) = iVar6;
          if (iVar6 == 0) {
            *(undefined4 *)(param_1 + 0x2c0) = 0;
            *(undefined4 *)(param_1 + 0x2c8) = 0;
          }
          else {
            uVar7 = FUN_181392960(param_1 + 0x2a0,1);
            *(undefined4 *)(param_1 + 0x2c0) = uVar7;
            iVar6 = FUN_181392960(param_1 + 0x2a0,1);
            *(int *)(param_1 + 0x2c8) = iVar6;
            if (iVar6 == -1) goto LAB_18136fef4;
          }
          *(undefined8 *)(param_1 + 0x2e0) = uVar8;
          *(longlong *)(param_1 + 0x2d8) = lVar17;
          *(uint *)(param_1 + 0x2d4) = uVar16;
          *(undefined4 *)(param_1 + 0x2cc) = 0;
          *puVar3 = 0;
        }
      }
LAB_18136fef4:
      FUN_18138ec80(param_1 + 0x218,puVar3);
      iVar6 = iVar5;
      if (-1 < lVar17) {
        uVar18 = *(uint *)(param_1 + 0x88);
        lVar17 = lVar17 - *(longlong *)
                           (*(longlong *)(param_1 + 0x60) + (longlong)(int)(uVar18 * 2) * 8);
        if (lVar17 < 0) {
          lVar17 = 0;
        }
        *(longlong *)(param_1 + 0x78) = lVar17;
        if (0 < (int)uVar18) {
          plVar9 = (longlong *)(*(longlong *)(param_1 + 0x60) + 8);
          uVar19 = (ulonglong)uVar18;
          do {
            lVar17 = lVar17 + *plVar9;
            plVar9 = plVar9 + 2;
            *(longlong *)(param_1 + 0x78) = lVar17;
            uVar19 = uVar19 - 1;
          } while (uVar19 != 0);
        }
      }
      goto LAB_18136fc70;
    }
  }
  uVar18 = *(uint *)(param_1 + 0xd4);
  uVar19 = (ulonglong)(int)uVar18;
  if ((int)uVar18 < *(int *)(param_1 + 0xd0)) {
    lVar20 = *(longlong *)(param_1 + 0xb8) + uVar19 * 4;
    uVar16 = *(uint *)(*(longlong *)(param_1 + 0xb8) + uVar19 * 4);
    if ((uVar16 >> 10 & 1) == 0) {
      uVar16 = uVar16 & 0xff;
      if (uVar16 == 0xff) {
        uVar16 = 0xff;
        do {
          pbVar2 = (byte *)(lVar20 + 4);
          lVar20 = lVar20 + 4;
          uVar16 = uVar16 + *pbVar2;
          uVar18 = (int)uVar19 + 1;
          uVar19 = (ulonglong)uVar18;
        } while (*pbVar2 == 0xff);
      }
      *(int *)(param_1 + 0xb0) = *(int *)(param_1 + 0xb0) + uVar16;
    }
    *(longlong *)(param_1 + 0x208) = *(longlong *)(param_1 + 0x208) + 1;
    *(uint *)(param_1 + 0xd4) = uVar18 + 1;
  }
  goto LAB_18136fc70;
code_r0x000181370029:
  iVar13 = 0;
  iVar5 = *(int *)(param_1 + 0x40);
  iVar14 = *(int *)(lVar20 + 0xe);
  if (0 < iVar5) {
    piVar10 = *(int **)(param_1 + 0x58);
    iVar13 = 0;
    do {
      if (*piVar10 == iVar14) break;
      iVar13 = iVar13 + 1;
      piVar10 = piVar10 + 1;
    } while (iVar13 < iVar5);
  }
  if (iVar13 != iVar5) {
    *(int *)(param_1 + 0x88) = iVar13;
    *(undefined4 *)(param_1 + 0x80) = 3;
    *(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(lVar20 + 0xe);
    *(undefined8 *)(param_1 + 0xac) = 0;
    *(undefined8 *)(param_1 + 0xcc) = 0;
    *(undefined4 *)(param_1 + 0xd4) = 0;
    *(undefined8 *)(param_1 + 500) = 0;
    *(undefined4 *)(param_1 + 0x1fc) = 0;
    *(undefined4 *)(param_1 + 0x204) = 0xffffffff;
    *(undefined8 *)(param_1 + 0x208) = 0;
    *(undefined8 *)(param_1 + 0x210) = 0;
    *(int *)(param_1 + 0x200) = iVar14;
    uVar8 = FUN_181371e20(param_1);
    iVar6 = 0;
    if ((int)uVar8 != 0) {
      return uVar8;
    }
LAB_181370102:
    FUN_1813919f0((longlong *)(param_1 + 0xa0),local_58);
  }
  goto LAB_18136fc70;
}



############ FUN_ 181371870 size=992 ############

undefined8 FUN_181371870(longlong param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  undefined8 uVar5;
  longlong *plVar6;
  byte bVar7;
  int *piVar8;
  longlong lVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong lVar12;
  ulonglong uVar13;
  longlong lVar14;
  longlong local_68;
  int local_60;
  undefined1 local_48 [8];
  int local_40;
  int local_38;
  ulonglong local_30;
  
  uVar10 = 0;
  lVar12 = local_68;
LAB_181371893:
  if ((*(int *)(param_1 + 0x80) != 3) || (uVar5 = FUN_181371e20(param_1), -1 < (int)uVar5)) {
    uVar4 = 0;
    if (*(int *)(param_1 + 0x80) == 4) {
      uVar1 = *(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 0x68) + 0x20) + 0x1668);
      while( true ) {
        iVar2 = FUN_181391840(param_1 + 0xa0,local_48,1);
        uVar11 = local_30;
        if (iVar2 == -1) {
          return 0xfffffffd;
        }
        if (iVar2 < 1) break;
        iVar2 = FUN_181377470(param_1 + 0x298,local_48);
        if (iVar2 == 0) {
          if ((-1 < *(int *)(param_1 + 0x240)) &&
             (*(int *)(param_1 + 0x240) < *(int *)(param_1 + 0x23c))) {
            return 0xffffff7f;
          }
          FUN_18138ec80(param_1 + 0x218,param_1 + 0x298);
          iVar2 = *(int *)(param_1 + 0x240);
          uVar3 = uVar4;
          if ((-1 < iVar2) && (iVar2 < *(int *)(param_1 + 0x23c))) {
            uVar3 = *(int *)(param_1 + 0x23c) - iVar2;
          }
          bVar7 = (byte)uVar1;
          *(double *)(param_1 + 0x98) =
               (double)(int)(uVar3 << (bVar7 & 0x1f)) + *(double *)(param_1 + 0x98);
          *(double *)(param_1 + 0x90) = (double)(local_40 * 8) + *(double *)(param_1 + 0x90);
          if ((uVar11 != 0xffffffffffffffff) && (local_38 == 0)) {
            uVar3 = uVar4;
            if ((*(int *)(param_1 + 8) != 0) && (uVar3 = *(uint *)(param_1 + 0x88), 0 < (int)uVar3))
            {
              uVar11 = uVar11 - *(longlong *)
                                 (*(longlong *)(param_1 + 0x60) + (longlong)(int)(uVar3 * 2) * 8);
            }
            iVar2 = *(int *)(param_1 + 0x240);
            if ((longlong)uVar11 < 0) {
              uVar11 = uVar10;
            }
            if ((-1 < iVar2) && (iVar2 < *(int *)(param_1 + 0x23c))) {
              uVar4 = *(int *)(param_1 + 0x23c) - iVar2;
            }
            lVar14 = (longlong)(int)uVar3;
            lVar12 = uVar11 - (longlong)(int)(uVar4 << (bVar7 & 0x1f));
            uVar13 = uVar10;
            uVar11 = uVar10;
            if (1 < lVar14) {
              plVar6 = (longlong *)(*(longlong *)(param_1 + 0x60) + 0x18);
              lVar9 = (lVar14 - 2U >> 1) + 1;
              uVar11 = lVar9 * 2;
              do {
                uVar13 = uVar13 + plVar6[-2];
                uVar10 = uVar10 + *plVar6;
                plVar6 = plVar6 + 4;
                lVar9 = lVar9 + -1;
              } while (lVar9 != 0);
            }
            if ((longlong)uVar11 < lVar14) {
              lVar12 = lVar12 + *(longlong *)(*(longlong *)(param_1 + 0x60) + 8 + uVar11 * 0x10);
            }
            *(ulonglong *)(param_1 + 0x78) = uVar10 + uVar13 + lVar12;
          }
          return 1;
        }
      }
    }
    if (1 < *(int *)(param_1 + 0x80)) {
      do {
        lVar14 = FUN_1813730a0(param_1,&local_68,0xffffffffffffffff);
        lVar12 = local_68;
        if (lVar14 < 0) {
          return 0xfffffffe;
        }
        *(double *)(param_1 + 0x90) = (double)(local_60 * 8) + *(double *)(param_1 + 0x90);
        if (*(int *)(param_1 + 0x80) != 4) goto LAB_1813719e7;
        if (*(int *)(param_1 + 0x84) == *(int *)(local_68 + 0xe)) goto LAB_1813719da;
      } while ((*(byte *)(local_68 + 5) & 2) == 0);
      FUN_181371c60(param_1);
      if (*(int *)(param_1 + 8) == 0) {
        FUN_181388250(*(undefined8 *)(param_1 + 0x68));
        FUN_181388560(*(undefined8 *)(param_1 + 0x70));
      }
    }
LAB_1813719da:
    if (*(int *)(param_1 + 0x80) == 4) goto LAB_181371ae0;
LAB_1813719e7:
    if (2 < *(int *)(param_1 + 0x80)) goto LAB_181371ae0;
    if (*(int *)(param_1 + 8) != 0) goto code_r0x0001813719fd;
    uVar5 = FUN_181372660(param_1,*(undefined8 *)(param_1 + 0x68),*(undefined8 *)(param_1 + 0x70),0,
                          0,&local_68);
    if ((int)uVar5 == 0) {
      *(int *)(param_1 + 0x88) = *(int *)(param_1 + 0x88) + 1;
      *(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(param_1 + 0x200);
      lVar12 = local_68;
      goto LAB_181371ae0;
    }
  }
  return uVar5;
code_r0x0001813719fd:
  uVar3 = *(uint *)(param_1 + 0x40);
  iVar2 = *(int *)(lVar12 + 0xe);
  if (0 < (int)uVar3) {
    piVar8 = *(int **)(param_1 + 0x58);
    uVar11 = uVar10;
    do {
      uVar4 = (uint)uVar11;
      if (*piVar8 == iVar2) break;
      uVar4 = uVar4 + 1;
      uVar11 = (ulonglong)uVar4;
      piVar8 = piVar8 + 1;
    } while ((int)uVar4 < (int)uVar3);
  }
  if (uVar4 != uVar3) {
    *(int *)(param_1 + 0x84) = iVar2;
    *(uint *)(param_1 + 0x88) = uVar4;
    *(undefined8 *)(param_1 + 0xac) = 0;
    *(undefined8 *)(param_1 + 0xcc) = 0;
    *(undefined4 *)(param_1 + 0xd4) = 0;
    *(undefined8 *)(param_1 + 500) = 0;
    *(undefined4 *)(param_1 + 0x1fc) = 0;
    *(undefined4 *)(param_1 + 0x204) = 0xffffffff;
    *(undefined8 *)(param_1 + 0x208) = 0;
    *(undefined8 *)(param_1 + 0x210) = 0;
    *(int *)(param_1 + 0x200) = iVar2;
    *(undefined4 *)(param_1 + 0x80) = 3;
LAB_181371ae0:
    FUN_1813919f0(param_1 + 0xa0,&local_68);
  }
  goto LAB_181371893;
}



############ FUN_ 1805386e0 size=120 ############

undefined8 * FUN_1805386e0(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::AudioFormatReaderSource::vftable;
  if (*(char *)(param_1 + 2) == '\0') {
    param_1[1] = 0;
  }
  else {
    puVar1 = (undefined8 *)param_1[1];
    param_1[1] = 0;
    if (puVar1 == (undefined8 *)0x0) goto LAB_180538737;
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = (undefined8 *)param_1[1];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
LAB_180538737:
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813aec40 size=242 ############

void FUN_1813aec40(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  ulonglong uVar5;
  int iVar6;
  
  iVar6 = *(int *)((longlong)param_2 + 0xc);
  if (0 < iVar6) {
    lVar1 = *(longlong *)(param_1 + 0x18);
    lVar2 = *(longlong *)(param_1 + 8);
    if (*(char *)(param_1 + 0x20) != '\0') {
      lVar3 = *(longlong *)(lVar2 + 0x18);
      lVar4 = lVar1 % lVar3;
      uVar5 = (lVar1 + iVar6) % lVar3;
      if (lVar4 < (longlong)uVar5) {
        FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),(int)uVar5 - (int)lVar4,lVar4);
        *(ulonglong *)(param_1 + 0x18) = uVar5;
        return;
      }
      iVar6 = (int)lVar3 - (int)lVar4;
      FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),iVar6,lVar4);
      FUN_1813af530(*(undefined8 *)(param_1 + 8),*param_2,*(int *)(param_2 + 1) + iVar6,
                    uVar5 & 0xffffffff,0);
      *(ulonglong *)(param_1 + 0x18) = uVar5;
      return;
    }
    FUN_1813af530(lVar2,*param_2,*(undefined4 *)(param_2 + 1),(longlong)iVar6,lVar1);
    *(longlong *)(param_1 + 0x18) =
         *(longlong *)(param_1 + 0x18) + (longlong)*(int *)((longlong)param_2 + 0xc);
  }
  return;
}



############ FUN_ 1813af530 size=430 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813af530(longlong param_1,int *param_2,int param_3,int param_4,undefined8 param_5)

{
  int iVar1;
  void *pvVar2;
  void *_Src;
  undefined1 auStack_2d8 [32];
  int local_2b8;
  undefined8 local_2b0;
  int local_2a8;
  undefined1 local_2a0;
  void *local_298;
  void *local_290;
  undefined8 local_288;
  void *local_280;
  void *local_278;
  void *local_270;
  undefined8 local_268;
  undefined1 local_258 [528];
  ulonglong local_48;
  
  if (param_4 < 1) {
    return;
  }
  local_288 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2d8;
  iVar1 = *param_2;
  local_2b8 = param_4;
  if (iVar1 < 3) {
    pvVar2 = (void *)0x0;
    LOCK();
    *(undefined1 *)(param_2 + 0x48) = 0;
    UNLOCK();
    _Src = (void *)(**(longlong **)(param_2 + 4) + (longlong)param_3 * 4);
    if (1 < iVar1) {
      LOCK();
      *(undefined1 *)(param_2 + 0x48) = 0;
      UNLOCK();
      pvVar2 = (void *)(*(longlong *)(*(longlong *)(param_2 + 4) + 8) + (longlong)param_3 * 4);
    }
    local_268 = 0;
    local_270 = (void *)0x0;
    if (1 < *(uint *)(param_1 + 0x20)) {
      local_270 = pvVar2;
    }
    local_2b0 = CONCAT71(local_2b0._1_7_,1);
    local_298 = _Src;
    local_290 = pvVar2;
    local_278 = _Src;
    FUN_1813af7b0(param_1,&local_278,2,param_5);
    if ((1 < iVar1) && ((local_278 == (void *)0x0 || (local_270 == (void *)0x0)))) {
      memcpy(pvVar2,_Src,(longlong)param_4 << 2);
    }
    if (*(char *)(param_1 + 0x24) == '\0') {
      FUN_1813af920(&local_298,2,param_4);
    }
  }
  else {
    local_2a8 = iVar1;
    if (0x40 < iVar1) {
      pvVar2 = malloc((longlong)(iVar1 + 1) << 3);
      local_2a0 = *(char *)(param_1 + 0x24) == '\0';
      local_2b0 = param_5;
      local_280 = pvVar2;
      FUN_1813af700(param_1,pvVar2,param_2,param_3);
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    local_2a0 = *(char *)(param_1 + 0x24) == '\0';
    local_2b0 = param_5;
    FUN_1813af700(param_1,local_258,param_2,param_3);
  }
}



############ FUN_ 18048cbc0 size=257 ############

int FUN_18048cbc0(byte *param_1,byte *param_2)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  
  do {
    bVar1 = *param_1;
    param_1 = param_1 + 1;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar2 = 0x40;
      iVar5 = 0;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar2 < 9) break;
          uVar4 = uVar4 >> 1;
          iVar5 = iVar5 + 1;
          uVar2 = uVar2 >> 1;
        } while ((bVar1 & uVar2) != 0);
      }
      uVar4 = bVar1 & uVar4;
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*param_1 & 0xc0) == 0x80)); param_1 = param_1 + 1)
      {
        uVar4 = *param_1 & 0x3f | uVar4 << 6;
      }
    }
    bVar1 = *param_2;
    param_2 = param_2 + 1;
    uVar2 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar3 = 0x40;
      iVar5 = 0;
      uVar2 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar3 < 9) break;
          uVar2 = uVar2 >> 1;
          iVar5 = iVar5 + 1;
          uVar3 = uVar3 >> 1;
        } while ((bVar1 & uVar3) != 0);
      }
      uVar2 = bVar1 & uVar2;
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*param_2 & 0xc0) == 0x80)); param_2 = param_2 + 1)
      {
        uVar2 = *param_2 & 0x3f | uVar2 << 6;
      }
    }
    if (uVar4 != uVar2) {
      iVar5 = 1;
      if ((int)(uVar4 - uVar2) < 0) {
        iVar5 = -1;
      }
      if (iVar5 != 0) {
        return iVar5;
      }
    }
    if (uVar4 == 0) {
      return 0;
    }
  } while( true );
}



############ FUN_ 180528b30 size=87 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180528b30(longlong *param_1)

{
  undefined8 *puVar1;
  undefined1 auStack_48 [32];
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_48;
  puVar1 = (undefined8 *)(**(code **)(*param_1 + 0x10))(param_1,&local_28);
  (**(code **)(*(longlong *)*puVar1 + 8))((longlong *)*puVar1,puVar1 + 1);
  (**(code **)(*local_28 + 0xb0))(local_28,local_20);
}



############ FUN_ 18052fc30 size=92 ############

void FUN_18052fc30(longlong param_1)

{
  int iVar1;
  
  *(undefined1 *)(param_1 + 0x24008c) = 1;
  iVar1 = *(int *)(param_1 + 0x2400a4);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x2400a4) <= iVar1) &&
       (iVar1 = *(int *)(param_1 + 0x2400a4) + -1, iVar1 < 0)) break;
    FUN_180526060(*(undefined8 *)(*(longlong *)(param_1 + 0x240098) + (longlong)iVar1 * 8));
  }
  return;
}



############ FUN_ 180528d50 size=203 ############

bool FUN_180528d50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  int iVar5;
  float fVar6;
  longlong local_res10;
  
  FUN_18049c4e0(&local_res10,"offline resolution",param_3,param_4,0xfffffffffffffffe);
  lVar2 = local_res10;
  plVar4 = (longlong *)FUN_18119aa60(param_1 + 0x178,local_res10);
  if (*(float *)(plVar4 + 0x17) == 0.0) {
    iVar5 = -1;
    local_res10 = lVar2;
  }
  else {
    fVar6 = (float)FUN_180487220(plVar4 + 0x16,(int)plVar4[0x31]);
    iVar5 = (int)(fVar6 / *(float *)(plVar4 + 0x17));
  }
  iVar3 = (**(code **)(*plVar4 + 0x30))(plVar4);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar5 != iVar3 + -1;
}



############ FUN_ 181342bf0 size=264 ############

void FUN_181342bf0(longlong *param_1,float param_2)

{
  double dVar1;
  char cVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  dVar1 = (double)param_2 * DAT_1824c4318 + DAT_1824c4520;
  iVar3 = SUB84(dVar1,0);
  if (iVar3 < 0) {
    cVar2 = '\0';
  }
  else {
    cVar2 = SUB81(dVar1,0);
    if (0xff < iVar3) {
      cVar2 = -1;
    }
  }
  if (*(char *)((longlong)param_1 + 0xac) != (char)(-1 - cVar2)) {
    *(char *)((longlong)param_1 + 0xac) = -1 - cVar2;
    if (*(code **)(*param_1 + 0xb8) !=
        .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__) {
      (**(code **)(*param_1 + 0xb8))(param_1);
      return;
    }
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      uStack_10 = (undefined4)param_1[5];
      uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
      local_18 = 0;
      FUN_181342870(param_1,&local_18,1);
      return;
    }
    plVar4 = (longlong *)FUN_1812d2bd0();
    if (plVar4 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x000181342ca3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*plVar4 + 0xf0))
                (plVar4,(float)(int)(0xff - (uint)*(byte *)((longlong)param_1 + 0xac)) /
                        DAT_1824c4548);
      return;
    }
  }
  return;
}



############ FUN_ 181342870 size=427 ############

void FUN_181342870(longlong param_1,undefined1 (*param_2) [16],char param_3)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  char cVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  float fVar6;
  float fVar7;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined1 local_38 [8];
  int local_30;
  int local_2c;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined1 local_18 [16];
  
  if ((*(byte *)(param_1 + 0xa8) & 2) != 0) {
    if (*(longlong **)(param_1 + 0x68) != (longlong *)0x0) {
      lVar2 = **(longlong **)(param_1 + 0x68);
      if (param_3 == '\0') {
        cVar3 = (**(code **)(lVar2 + 0x18))();
      }
      else {
        cVar3 = (**(code **)(lVar2 + 0x10))();
      }
      if (cVar3 == '\0') {
        return;
      }
    }
    if ((0 < *(int *)(*param_2 + 8)) && (0 < *(int *)(*param_2 + 0xc))) {
      if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
        if (*(longlong *)(param_1 + 0x18) != 0) {
          local_28 = *(undefined8 *)*param_2;
          uStack_20 = *(undefined8 *)(*param_2 + 8);
          puVar5 = (undefined8 *)FUN_18051e4b0(local_18,param_1,&local_28);
          local_28 = *puVar5;
          uStack_20 = puVar5[1];
          FUN_181342a30(*(undefined8 *)(param_1 + 0x18),&local_28);
          return;
        }
      }
      else {
        plVar4 = (longlong *)FUN_1812d2bd0(param_1);
        if (plVar4 != (longlong *)0x0) {
          (**(code **)(*plVar4 + 0x38))(plVar4,local_38);
          auVar1 = *param_2;
          fVar6 = (float)local_30 / (float)*(int *)(param_1 + 0x28);
          fVar7 = (float)local_2c / (float)*(int *)(param_1 + 0x2c);
          local_48 = CONCAT44((float)auVar1._4_4_ * fVar7,(float)auVar1._0_4_ * fVar6);
          uStack_40 = CONCAT44((float)auVar1._12_4_ * fVar7,(float)auVar1._8_4_ * fVar6);
          puVar5 = (undefined8 *)FUN_1804ab070(&local_48,&local_28);
          local_48 = *puVar5;
          uStack_40 = puVar5[1];
          if (*(longlong *)(param_1 + 0x38) == 0) {
            puVar5 = &local_28;
            local_28 = local_48;
            uStack_20 = uStack_40;
          }
          else {
            puVar5 = (undefined8 *)FUN_1804b1290(&local_48,local_18);
          }
          (**(code **)(*plVar4 + 0xe0))(plVar4,puVar5);
        }
      }
    }
  }
  return;
}



############ FUN_ 181339840 size=347 ############

undefined8 * FUN_181339840(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined1 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  undefined8 uVar10;
  undefined8 local_res8;
  undefined4 local_res10;
  undefined4 local_res14;
  
  FUN_18051dc40(&local_res10,param_3,param_1[6],param_1[5],0xfffffffffffffffe);
  FUN_18051dc40(&local_res8,param_3,param_1[6],*param_1);
  uVar5 = param_1[10];
  cVar2 = *(char *)((longlong)param_1 + 0x59);
  uVar3 = *(undefined1 *)(param_1 + 0xb);
  uVar6 = param_1[9];
  uVar7 = param_1[8];
  uVar8 = param_1[7];
  uVar1 = *(undefined4 *)((longlong)param_1 + 0x24);
  uVar9 = *(undefined8 *)((longlong)param_1 + 0x14);
  uVar10 = *(undefined8 *)((longlong)param_1 + 0x1c);
  uVar4 = *(undefined4 *)(param_1 + 2);
  *param_2 = local_res8;
  local_res8._0_4_ = SUB84((double)(float)local_res8 + DAT_1824c4520,0);
  *(float *)(param_2 + 1) = (float)local_res8;
  local_res8._0_4_ = SUB84((double)local_res8._4_4_ + DAT_1824c4520,0);
  *(float *)((longlong)param_2 + 0xc) = (float)local_res8;
  *(undefined4 *)(param_2 + 2) = uVar4;
  *(undefined8 *)((longlong)param_2 + 0x14) = uVar9;
  *(undefined8 *)((longlong)param_2 + 0x1c) = uVar10;
  *(undefined4 *)((longlong)param_2 + 0x24) = uVar1;
  *(undefined4 *)(param_2 + 5) = local_res10;
  *(undefined4 *)((longlong)param_2 + 0x2c) = local_res14;
  param_2[6] = param_3;
  param_2[7] = uVar8;
  param_2[8] = uVar7;
  param_2[9] = uVar6;
  param_2[10] = uVar5;
  *(undefined1 *)(param_2 + 0xb) = uVar3;
  *(bool *)((longlong)param_2 + 0x59) = cVar2 != '\0';
  return param_2;
}



############ FUN_ 1812d2bd0 size=106 ############

longlong FUN_1812d2bd0(longlong param_1)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong *plVar3;
  
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  plVar3 = *(longlong **)(DAT_182673700 + 0x68);
  plVar1 = plVar3 + *(int *)(DAT_182673700 + 0x74);
  while( true ) {
    if (plVar3 == plVar1) {
      return 0;
    }
    if (*(longlong *)(*plVar3 + 8) == param_1) break;
    plVar3 = plVar3 + 1;
  }
  return *plVar3;
}



############ FUN_ 18049a930 size=358 ############

undefined8 * FUN_18049a930(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte *pbVar2;
  byte *pbVar3;
  byte *pbVar4;
  longlong lVar5;
  ulonglong uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  longlong lVar6;
  
  if (*(char *)*param_2 == '\0') {
    *param_1 = &DAT_1821dbf84;
    return param_1;
  }
  lVar5 = -1;
  do {
    lVar6 = lVar5;
    lVar5 = lVar6 + 1;
  } while (((char *)*param_2)[lVar5] != '\0');
  uVar7 = lVar6 + 5U & 0xfffffffc;
  lVar5 = FUN_18049d580();
  FUN_1812342b0(param_2,lVar5 + 2 + uVar7);
  pbVar2 = (byte *)*param_2;
  pbVar4 = pbVar2 + (int)uVar7;
  pbVar3 = pbVar4;
  do {
    bVar1 = *pbVar2;
    pbVar2 = pbVar2 + 1;
    uVar9 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar8 = 0x40;
      uVar9 = 0x7f;
      iVar10 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar8 < 9) break;
          uVar9 = uVar9 >> 1;
          iVar10 = iVar10 + 1;
          uVar8 = uVar8 >> 1;
        } while ((bVar1 & uVar8) != 0);
      }
      uVar9 = bVar1 & uVar9;
      for (; (iVar10 = iVar10 + -1, -1 < iVar10 && ((*pbVar2 & 0xc0) == 0x80)); pbVar2 = pbVar2 + 1)
      {
        uVar9 = *pbVar2 & 0x3f | uVar9 << 6;
      }
    }
    if (uVar9 == 0) {
      pbVar3[0] = 0;
      pbVar3[1] = 0;
      *param_1 = pbVar4;
      return param_1;
    }
    if (uVar9 < 0x10000) {
      *(short *)pbVar3 = (short)uVar9;
      pbVar3 = pbVar3 + 2;
    }
    else {
      *(short *)pbVar3 = (short)(uVar9 - 0x10000 >> 10) + -0x2800;
      *(ushort *)(pbVar3 + 2) = ((ushort)(uVar9 - 0x10000) & 0x3ff) + 0xdc00;
      pbVar3 = pbVar3 + 4;
    }
  } while( true );
}



############ FUN_ 1804de690 size=193 ############

longlong * FUN_1804de690(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  if (param_2 != 0) {
    if (*(longlong *)(param_2 + 0xa0) == 0) {
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::WeakReference<juce::Component,juce::ReferenceCountedObject>::SharedPointer::
                vftable;
      puVar5[2] = param_2;
      if (*(undefined8 **)(param_2 + 0xa0) != puVar5) {
        LOCK();
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        UNLOCK();
        puVar3 = *(undefined8 **)(param_2 + 0xa0);
        *(undefined8 **)(param_2 + 0xa0) = puVar5;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
    }
    lVar4 = *(longlong *)(param_2 + 0xa0);
    *param_1 = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
      UNLOCK();
    }
    return param_1;
  }
  *param_1 = 0;
  return param_1;
}



############ FUN_ 181342b10 size=94 ############

void FUN_181342b10(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined1 local_18 [16];
  
  if (*(longlong *)(param_1 + 0x18) != 0) {
    uStack_20 = *(undefined4 *)(param_1 + 0x28);
    uStack_1c = *(undefined4 *)(param_1 + 0x2c);
    local_28 = 0;
    puVar1 = (undefined8 *)FUN_18051e4b0(local_18,param_1,&local_28);
    local_28 = *puVar1;
    uStack_20 = *(undefined4 *)(puVar1 + 1);
    uStack_1c = *(undefined4 *)((longlong)puVar1 + 0xc);
    FUN_181342a30(*(undefined8 *)(param_1 + 0x18),&local_28);
  }
  return;
}



############ FUN_ 18133f790 size=125 ############

ulonglong FUN_18133f790(void)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  uVar5 = *(ulonglong *)(DAT_182673700 + 0x30);
  lVar3 = **(longlong **)(uVar5 + 0x18);
  if ((*(byte *)(lVar3 + 0x28) & 0x70) == 0) {
    uVar5 = 0;
    puVar1 = (uint *)(*(longlong *)(lVar3 + 8) + 0x18);
    LOCK();
    uVar2 = *puVar1;
    if (uVar2 == 0) {
      *puVar1 = 1;
    }
    else {
      uVar5 = (ulonglong)uVar2;
    }
    UNLOCK();
    if (uVar2 == 0) {
      uVar5 = FUN_1812a6720(*(undefined8 *)(lVar3 + 8));
      if ((char)uVar5 == '\0') {
        LOCK();
        puVar1 = (uint *)(*(longlong *)(lVar3 + 8) + 0x18);
        uVar2 = *puVar1;
        *puVar1 = 0;
        uVar5 = (ulonglong)uVar2;
        UNLOCK();
      }
    }
  }
  return uVar5;
}



############ FUN_ 1804e5060 size=116 ############

void FUN_1804e5060(longlong param_1)

{
  undefined8 *puVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  
  if (*(longlong **)(param_1 + 0x68) != (longlong *)0x0) {
    (**(code **)(**(longlong **)(param_1 + 0x68) + 0x20))();
  }
  puVar1 = *(undefined8 **)(param_1 + 0x40);
  uVar3 = 0;
  uVar2 = (ulonglong)((longlong)(puVar1 + *(int *)(param_1 + 0x4c)) + (7 - (longlong)puVar1)) >> 3;
  if (puVar1 + *(int *)(param_1 + 0x4c) < puVar1) {
    uVar2 = uVar3;
  }
  if (uVar2 != 0) {
    do {
      FUN_1804e5060(*puVar1);
      uVar3 = uVar3 + 1;
      puVar1 = puVar1 + 1;
    } while (uVar3 != uVar2);
  }
  return;
}



############ FUN_ 18133eae0 size=150 ############

ulonglong FUN_18133eae0(char param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  
  lVar3 = DAT_182673708;
  DAT_182673708 = 0;
  if ((param_1 != '\0') && (lVar3 != 0)) {
    FUN_18133f2f0(lVar3,2,param_3,param_4,0xfffffffffffffffe);
  }
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  lVar3 = DAT_182673700;
  uVar5 = 0;
  puVar1 = (uint *)(*(longlong *)(DAT_182673700 + 0x28) + 0x18);
  LOCK();
  uVar2 = *puVar1;
  if (uVar2 == 0) {
    *puVar1 = 1;
  }
  else {
    uVar5 = (ulonglong)uVar2;
  }
  UNLOCK();
  if (uVar2 == 0) {
    uVar5 = FUN_1812a6720(*(undefined8 *)(lVar3 + 0x28));
    if ((char)uVar5 == '\0') {
      uVar5 = *(ulonglong *)(lVar3 + 0x28);
      LOCK();
      *(undefined4 *)(uVar5 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar5;
}



############ FUN_ 18133ed60 size=398 ############

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

void FUN_18133ed60(longlong *param_1,undefined4 param_2,char param_3,undefined8 param_4)

{
  code *pcVar1;
  char cVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  void *local_30;
  ulonglong local_28;
  
  uVar5 = 0xfffffffffffffffe;
  cVar2 = FUN_181345240();
  if (cVar2 != '\0') {
    plVar3 = DAT_182673708;
    if (((*(byte *)(param_1 + 0x15) & 0x20) == 0) ||
       ((((*(byte *)((longlong)param_1 + 0xa9) & 0x10) != 0 ||
         ((param_1[3] != 0 && (cVar2 = FUN_18133eaa0(), cVar2 == '\0')))) &&
        (plVar3 = DAT_182673708, param_1[3] != 0)))) {
      do {
        if (plVar3 == (longlong *)0x0) goto LAB_18133edfd;
        plVar3 = (longlong *)plVar3[3];
      } while (plVar3 != param_1);
      cVar2 = FUN_181345240();
      if (cVar2 == '\0') {
LAB_18133edfd:
        plVar3 = (longlong *)(**(code **)(*param_1 + 0xa8))();
        if (plVar3 != (longlong *)0x0) {
          pcVar1 = *(code **)(*plVar3 + 0x18);
          if (pcVar1 == FUN_181338ac0) {
            local_30 = (void *)0x0;
            local_28 = 0;
            if (*(int *)((longlong)param_1 + 0x4c) != 0) {
              FUN_181338d00(param_1,&local_30);
            }
            local_28 = local_28 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
            free(local_30);
          }
          lVar4 = (*pcVar1)(plVar3,param_1,pcVar1,param_4,uVar5);
          if (plVar3 != (longlong *)0x0) {
            (**(code **)*plVar3)(plVar3,1);
          }
          if (lVar4 != 0) {
            FUN_18133ed60(lVar4,param_2,0);
            return;
          }
        }
        if ((param_3 != '\0') && (param_1[3] != 0)) {
          FUN_18133ed60(param_1[3],param_2,1);
        }
      }
    }
    else {
      FUN_18133ef00(param_1,param_2);
    }
  }
  return;
}



############ FUN_ 1813452b0 size=218 ############

void FUN_1813452b0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*param_1 + 0x60))(param_1);
  puVar3 = local_res8;
  bVar6 = local_res8 == (undefined8 *)0x0;
  if (bVar6) {
    lVar4 = 0;
  }
  else {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    iVar5 = *(int *)((longlong)param_1 + 0x8c);
    while( true ) {
      if (bVar6) {
        lVar4 = 0;
      }
      else {
        lVar4 = puVar3[2];
      }
      if ((lVar4 == 0) || (iVar5 < 1)) break;
      iVar5 = iVar5 + -1;
      if ((*(int *)((longlong)param_1 + 0x8c) <= iVar5) &&
         (iVar5 = *(int *)((longlong)param_1 + 0x8c) + -1, iVar5 < 0)) break;
      plVar2 = *(longlong **)(param_1[0x10] + (longlong)iVar5 * 8);
      (**(code **)(*plVar2 + 0x18))(plVar2,param_1);
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18134c2e0 size=42 ############

undefined8 FUN_18134c2e0(longlong param_1)

{
  byte bVar1;
  undefined8 uVar2;
  
  bVar1 = *(byte *)(param_1 + 0xa8);
  while( true ) {
    if ((bVar1 & 1) != 0) {
      uVar2 = FUN_1812d2bd0();
      return uVar2;
    }
    param_1 = *(longlong *)(param_1 + 0x18);
    if (param_1 == 0) break;
    bVar1 = *(byte *)(param_1 + 0xa8);
  }
  return 0;
}



############ FUN_ 181343670 size=294 ############

void FUN_181343670(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*param_1 + 0x88))(param_1);
  puVar3 = local_res8;
  bVar6 = local_res8 == (undefined8 *)0x0;
  if (bVar6) {
    lVar4 = 0;
  }
  else {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    iVar5 = *(int *)((longlong)param_1 + 0x8c);
    while( true ) {
      if (bVar6) {
        lVar4 = 0;
      }
      else {
        lVar4 = puVar3[2];
      }
      if ((lVar4 == 0) || (iVar5 < 1)) break;
      iVar5 = iVar5 + -1;
      if ((*(int *)((longlong)param_1 + 0x8c) <= iVar5) &&
         (iVar5 = *(int *)((longlong)param_1 + 0x8c) + -1, iVar5 < 0)) break;
      plVar2 = *(longlong **)(param_1[0x10] + (longlong)iVar5 * 8);
      (**(code **)(*plVar2 + 0x28))(plVar2,param_1);
    }
    if (bVar6) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if (lVar4 != 0) {
      iVar5 = *(int *)((longlong)param_1 + 0x4c);
      while (iVar5 = iVar5 + -1, -1 < iVar5) {
        FUN_181343670(*(undefined8 *)(param_1[8] + (longlong)iVar5 * 8));
        if (bVar6) {
          lVar4 = 0;
        }
        else {
          lVar4 = puVar3[2];
        }
        if (lVar4 == 0) break;
        if (*(int *)((longlong)param_1 + 0x4c) < iVar5) {
          iVar5 = *(int *)((longlong)param_1 + 0x4c);
        }
      }
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18051e290 size=542 ############

undefined8 * FUN_18051e290(undefined8 *param_1,longlong *param_2,undefined8 param_3)

{
  longlong *plVar1;
  float *pfVar2;
  undefined8 uVar3;
  int iVar4;
  float fVar5;
  undefined4 local_res8;
  undefined1 local_res10 [8];
  undefined8 local_res18;
  
  if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
    local_res18 = CONCAT44((int)((ulonglong)param_2[4] >> 0x20) + (int)((ulonglong)param_3 >> 0x20),
                           (int)param_3 + (int)param_2[4]);
    param_3 = local_res18;
  }
  else {
    local_res18 = param_3;
    if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
      if (param_2[3] == 0) goto LAB_18051e431;
      plVar1 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar1 = (longlong *)FUN_1812d2bd0(param_2);
    }
    if (plVar1 != (longlong *)0x0) {
      fVar5 = (float)(**(code **)(*param_2 + 0x80))(param_2);
      uVar3 = param_3;
      if (fVar5 != DAT_1824c3ea4) {
        local_res18 = CONCAT44((int)((float)local_res18._4_4_ * fVar5),
                               (int)((float)(int)param_3 * fVar5));
        uVar3 = local_res18;
      }
      local_res18 = uVar3;
      pfVar2 = (float *)(**(code **)(*plVar1 + 0x48))
                                  (plVar1,local_res10,
                                   CONCAT44((float)(int)((ulonglong)local_res18 >> 0x20),
                                            (float)(int)local_res18));
      iVar4 = SUB84((double)*pfVar2 + DAT_1824c4520,0);
      local_res8 = SUB84((double)pfVar2[1] + DAT_1824c4520,0);
      local_res18 = CONCAT44(local_res8,iVar4);
      if (DAT_182673700 == 0) {
        uVar3 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar3);
      }
      fVar5 = *(float *)(DAT_182673700 + 0xc0);
      param_3 = local_res18;
      if (fVar5 != DAT_1824c3ea4) {
        local_res18 = CONCAT44((int)((float)(int)((ulonglong)local_res18 >> 0x20) / fVar5),
                               (int)((float)iVar4 / fVar5));
        param_3 = local_res18;
      }
    }
  }
LAB_18051e431:
  pfVar2 = (float *)param_2[7];
  if (pfVar2 != (float *)0x0) {
    fVar5 = (float)(int)((ulonglong)param_3 >> 0x20);
    local_res18 = CONCAT44((int)((float)(int)param_3 * pfVar2[3] + fVar5 * pfVar2[4] + pfVar2[5]),
                           (int)(fVar5 * pfVar2[1] + (float)(int)param_3 * *pfVar2 + pfVar2[2]));
    *param_1 = local_res18;
    return param_1;
  }
  *param_1 = param_3;
  return param_1;
}



############ FUN_ 18133c6c0 size=438 ############

undefined8 *
FUN_18133c6c0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  double dVar4;
  
  FUN_1812a7230(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  param_1[1] = juce::Timer::vftable;
  param_1[2] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 3) = 0;
  FUN_1812a59f0(param_1 + 4);
  *param_1 = juce::Desktop::vftable;
  param_1[1] = juce::Desktop::vftable;
  param_1[4] = juce::Desktop::vftable;
  puVar2 = (undefined8 *)FUN_1811316e0(0x38);
  puVar2[1] = 0xffffffffffffffff;
  *(undefined4 *)(puVar2 + 2) = 0;
  *puVar2 = juce::MouseInputSource::SourceList::vftable;
  puVar2[3] = 0;
  puVar2[4] = 0;
  puVar2[5] = 0;
  puVar2[6] = 0;
  FUN_1804e6f50(puVar2,0,0);
  param_1[6] = puVar2;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  *(undefined1 *)(param_1 + 0x17) = 0;
  *(undefined4 *)((longlong)param_1 + 0xbc) = 0xf;
  dVar4 = DAT_1824c4140;
  if ((DAT_1826736d8 != 0) && (cVar1 = FUN_1812c7510(), dVar4 = DAT_1824c4140, cVar1 == '\0')) {
    dVar4 = (double)FUN_1812c73f0();
    dVar4 = dVar4 / DAT_1824c42e8;
  }
  *(float *)(param_1 + 0x18) = (float)dVar4;
  FUN_1813240c0(param_1 + 0x19);
  puVar3 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar3 = 0;
  puVar3[1] = 0;
  FUN_1812c53e0(puVar3,*(undefined4 *)(param_1 + 0x18));
  puVar2 = (undefined8 *)param_1[0xf];
  param_1[0xf] = puVar3;
  if (puVar2 == (undefined8 *)0x0) {
    return param_1;
  }
  *(undefined4 *)((longlong)puVar2 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar2);
}



############ FUN_ 180488600 size=143 ############

void FUN_180488600(longlong *param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  iVar3 = 0;
  lVar2 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(*param_1 + lVar2 * 8)) {
      iVar3 = iVar3 + 1;
      lVar2 = lVar2 + 1;
      if (iVar1 <= lVar2) {
        return;
      }
    }
    _Dst = (void *)(*param_1 + (longlong)iVar3 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    iVar3 = 0;
    if (0 < iVar1 * 2) {
      iVar3 = iVar1 * 2;
    }
    if (iVar3 < (int)param_1[1]) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < (int)param_1[1]) {
        FUN_18047cb30(param_1);
      }
    }
  }
  return;
}



############ FUN_ 18134bfe0 size=391 ############

void FUN_18134bfe0(longlong param_1,int param_2,int param_3,int param_4,int param_5)

{
  char cVar1;
  byte bVar2;
  longlong lVar3;
  char cVar4;
  undefined8 local_38;
  int iStack_30;
  int iStack_2c;
  
  if (param_4 < 0) {
    param_4 = 0;
  }
  if (param_5 < 0) {
    param_5 = 0;
  }
  if ((*(int *)(param_1 + 0x28) == param_4) && (*(int *)(param_1 + 0x2c) == param_5)) {
    cVar4 = '\0';
  }
  else {
    cVar4 = '\x01';
  }
  if ((*(int *)(param_1 + 0x20) == param_2) && (*(int *)(param_1 + 0x24) == param_3)) {
    bVar2 = 0;
    if (cVar4 == '\0') {
      return;
    }
  }
  else {
    bVar2 = 1;
  }
  cVar1 = FUN_181345240();
  if ((cVar1 != '\0') && (FUN_18133f790(), (*(byte *)(param_1 + 0xa8) & 1) == 0)) {
    FUN_181342b10(param_1);
  }
  *(int *)(param_1 + 0x20) = param_2;
  *(int *)(param_1 + 0x24) = param_3;
  *(int *)(param_1 + 0x28) = param_4;
  *(int *)(param_1 + 0x2c) = param_5;
  if (cVar1 == '\0') {
    if (*(longlong **)(param_1 + 0x68) != (longlong *)0x0) {
      (**(code **)(**(longlong **)(param_1 + 0x68) + 0x10))();
    }
  }
  else if (cVar4 == '\0') {
    if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
      FUN_181342b10(param_1);
    }
  }
  else {
    local_38 = 0;
    iStack_30 = param_4;
    iStack_2c = param_5;
    FUN_181342870(param_1,&local_38,1);
  }
  bVar2 = (*(byte *)(param_1 + 0xaa) ^ bVar2) & 1 ^ *(byte *)(param_1 + 0xaa);
  *(byte *)(param_1 + 0xaa) = (cVar4 * '\x02' ^ bVar2) & 2 ^ bVar2;
  if (((*(byte *)(param_1 + 0xa8) & 1) != 0) && (lVar3 = FUN_1812d2bd0(param_1), lVar3 != 0)) {
    FUN_18134b470(lVar3);
  }
  bVar2 = *(byte *)(param_1 + 0xaa);
  if (((bVar2 & 1) != 0) || ((bVar2 >> 1 & 1) != 0)) {
    *(byte *)(param_1 + 0xaa) = bVar2 & 0xfc;
    FUN_181344840(param_1);
  }
  return;
}



############ FUN_ 181343a90 size=434 ############

longlong FUN_181343a90(longlong param_1,uint param_2,char param_3,char param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  bool bVar4;
  undefined8 *puVar5;
  char cVar6;
  undefined8 uVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 *local_res8 [2];
  
  if (param_2 < *(uint *)(param_1 + 0x4c)) {
    lVar9 = *(longlong *)(*(longlong *)(param_1 + 0x40) + (longlong)(int)param_2 * 8);
    if (lVar9 != 0) {
      if ((param_3 == '\0') || (cVar6 = FUN_181345240(lVar9), cVar6 == '\0')) {
        bVar4 = false;
      }
      else {
        bVar4 = true;
        FUN_18133f790();
        if ((*(byte *)(lVar9 + 0xa8) >> 1 & 1) != 0) {
          FUN_181342b10(lVar9);
        }
      }
      if (param_2 < *(uint *)(param_1 + 0x4c)) {
        FUN_18049b4a0(param_1 + 0x40,param_2);
      }
      lVar8 = 0;
      *(undefined8 *)(lVar9 + 0x18) = 0;
      FUN_1804e5060(lVar9);
      for (lVar3 = DAT_182673708; lVar3 != lVar9; lVar3 = *(longlong *)(lVar3 + 0x18)) {
        if (lVar3 == 0) goto LAB_181343c0e;
      }
      if (bVar4) {
        FUN_1804de690(local_res8,param_1);
        if ((param_4 == '\0') && (DAT_182673708 == lVar9)) {
          uVar7 = 0;
        }
        else {
          uVar7 = 1;
        }
        FUN_18133eae0(uVar7);
        puVar5 = local_res8[0];
        if (local_res8[0] != (undefined8 *)0x0) {
          lVar8 = local_res8[0][2];
        }
        if (lVar8 == 0) {
          if (local_res8[0] == (undefined8 *)0x0) {
            return lVar9;
          }
          LOCK();
          piVar1 = (int *)(local_res8[0] + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 != 1) {
            return lVar9;
          }
          (**(code **)*local_res8[0])(local_res8[0],1);
          return lVar9;
        }
        FUN_18133ed60(param_1,2,1);
        if (puVar5 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar5 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*local_res8[0])(local_res8[0],1);
          }
        }
      }
      else {
        if ((param_4 == '\0') && (DAT_182673708 == lVar9)) {
          uVar7 = 0;
        }
        else {
          uVar7 = 1;
        }
        FUN_18133eae0(uVar7);
      }
LAB_181343c0e:
      if (param_4 != '\0') {
        FUN_181343670(lVar9);
      }
      if (bVar4) {
        FUN_1813437a0(param_1);
      }
    }
  }
  else {
    lVar9 = 0;
  }
  return lVar9;
}



############ FUN_ 18134b470 size=277 ############

void FUN_18134b470(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  float fVar5;
  undefined4 local_res10;
  undefined4 local_res20;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  lVar1 = param_1[1];
  if (*(longlong *)(lVar1 + 0x38) == 0) {
    local_48 = *(undefined8 *)(lVar1 + 0x20);
    uStack_40 = *(undefined8 *)(lVar1 + 0x28);
    puVar4 = &local_48;
  }
  else {
    puVar4 = (undefined8 *)
             FUN_1804b1290(lVar1 + 0x20,&local_48,*(longlong *)(lVar1 + 0x38),param_4,
                           0xfffffffffffffffe);
  }
  uVar2 = *puVar4;
  uVar3 = puVar4[1];
  local_48 = uVar2;
  uStack_40 = uVar3;
  fVar5 = (float)(**(code **)(*(longlong *)param_1[1] + 0x80))();
  if (fVar5 != DAT_1824c3ea4) {
    local_res10 = SUB84((double)((float)local_48._4_4_ * fVar5) + DAT_1824c4520,0);
    local_res20 = SUB84((double)((float)uStack_40._4_4_ * fVar5) + DAT_1824c4520,0);
    uVar2 = CONCAT44(local_res10,SUB84((double)((float)(int)local_48 * fVar5) + DAT_1824c4520,0));
    uVar3 = CONCAT44(local_res20,SUB84((double)((float)(int)uStack_40 * fVar5) + DAT_1824c4520,0));
  }
  uStack_40 = uVar3;
  local_48 = uVar2;
  local_38 = (int)local_48;
  uStack_34 = local_48._4_4_;
  uStack_30 = (int)uStack_40;
  uStack_2c = uStack_40._4_4_;
  (**(code **)(*param_1 + 0x30))(param_1,&local_38,0);
  return;
}



############ FUN_ 18134bdf0 size=54 ############

void FUN_18134bdf0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 180569ff0 size=123 ############

void FUN_180569ff0(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar3 = param_1;
  if (param_1 != 0) {
    while ((lVar2 = __RTDynamicCast(lVar3,0,&juce::Component::RTTI_Type_Descriptor,
                                    &StylerProvider::RTTI_Type_Descriptor,0), lVar2 == 0 ||
           (*(longlong *)(lVar2 + 8) == 0))) {
      plVar1 = (longlong *)(lVar3 + 0x18);
      lVar3 = *plVar1;
      if (*plVar1 == 0) {
        return;
      }
    }
    *(undefined8 *)(param_1 + 0xb8) = *(undefined8 *)(lVar2 + 8);
  }
  return;
}



############ FUN_ 18051e060 size=545 ############

undefined8 *
FUN_18051e060(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined4 param_4)

{
  undefined8 uVar1;
  float *pfVar2;
  longlong *plVar3;
  int iVar4;
  int iVar5;
  float fVar6;
  undefined1 local_res10 [8];
  undefined8 local_res18;
  undefined1 local_40 [24];
  
  local_res18 = param_3;
  if (param_2[7] != 0) {
    pfVar2 = (float *)FUN_1812a04f0(param_2[7],local_40,param_3,param_4,0xfffffffffffffffe);
    local_res18 = CONCAT44((int)((float)local_res18._4_4_ * pfVar2[4] +
                                 (float)(int)param_3 * pfVar2[3] + pfVar2[5]),
                           (int)((float)local_res18._4_4_ * pfVar2[1] +
                                 (float)(int)param_3 * *pfVar2 + pfVar2[2]));
  }
  uVar1 = local_res18;
  iVar4 = (int)local_res18;
  iVar5 = (int)((ulonglong)local_res18 >> 0x20);
  if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
    local_res18 = CONCAT44(iVar5 - (int)((ulonglong)param_2[4] >> 0x20),iVar4 - (int)param_2[4]);
  }
  else {
    if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
      if (param_2[3] == 0) goto LAB_18051e243;
      plVar3 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar3 = (longlong *)FUN_1812d2bd0(param_2);
    }
    if (plVar3 == (longlong *)0x0) {
LAB_18051e243:
      *param_1 = uVar1;
      return param_1;
    }
    if (DAT_182673700 == 0) {
      local_res18 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res18);
    }
    fVar6 = *(float *)(DAT_182673700 + 0xc0);
    local_res18 = uVar1;
    if (fVar6 != DAT_1824c3ea4) {
      local_res18 = CONCAT44((int)((float)iVar5 * fVar6),(int)((float)iVar4 * fVar6));
    }
    pfVar2 = (float *)(**(code **)(*plVar3 + 0x58))
                                (plVar3,local_res10,
                                 CONCAT44((float)(int)((ulonglong)local_res18 >> 0x20),
                                          (float)(int)local_res18));
    iVar4 = SUB84((double)*pfVar2 + DAT_1824c4520,0);
    iVar5 = SUB84((double)pfVar2[1] + DAT_1824c4520,0);
    local_res18 = CONCAT44(iVar5,iVar4);
    fVar6 = (float)(**(code **)(*param_2 + 0x80))(param_2);
    if (fVar6 != DAT_1824c3ea4) {
      local_res18 = CONCAT44((int)((float)iVar5 / fVar6),(int)((float)iVar4 / fVar6));
    }
  }
  *param_1 = local_res18;
  return param_1;
}



############ FUN_ 181296c00 size=185 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181296c00(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined4 local_40 [2];
  longlong local_38;
  undefined8 *puStack_30;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined4 local_18;
  undefined4 local_14;
  
  if (*(char *)(param_1 + 0x10) != '\0') {
    *(undefined1 *)(param_1 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_1 + 8) + 0x68))
              (*(longlong **)(param_1 + 8),param_2,param_3,param_4,0xfffffffffffffffe);
  }
  local_40[0] = (undefined4)param_2;
  local_38 = 0;
  puStack_30 = (undefined8 *)0x0;
  local_28 = _DAT_1824c4780;
  uStack_20 = _UNK_1824c4788;
  local_18 = DAT_1824c3ea4;
  local_14 = 0;
  (**(code **)(**(longlong **)(param_1 + 8) + 0x88))(*(longlong **)(param_1 + 8),local_40);
  if (puStack_30 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puStack_30 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puStack_30)(puStack_30,1);
    }
  }
  if (local_38 != 0) {
    *(undefined4 *)(local_38 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
    free(*(void **)(local_38 + 0x18));
  }
  return;
}



############ FUN_ 181295d20 size=326 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181295d20(longlong param_1,undefined8 param_2,undefined4 *param_3,undefined8 param_4)

{
  float fVar1;
  char cVar2;
  float *pfVar3;
  undefined4 uVar4;
  undefined8 local_50;
  undefined8 uStack_48;
  ulonglong local_40;
  float *local_38;
  undefined8 local_30;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined1 local_18;
  
  local_38 = (float *)0x0;
  local_30 = 0;
  local_28 = 0;
  uStack_20 = 0;
  local_18 = 1;
  uVar4 = (**(code **)(**(longlong **)(param_1 + 8) + 0x20))();
  FUN_181297840(*param_3,param_3[1],param_3[2],&local_38,param_2,param_4,uVar4);
  cVar2 = (**(code **)(**(longlong **)(param_1 + 8) + 0x60))();
  if (cVar2 == '\0') {
    for (pfVar3 = local_38; pfVar3 != local_38 + local_30._4_4_; pfVar3 = pfVar3 + 1) {
      fVar1 = *pfVar3;
      if (fVar1 == DAT_1824c4600) {
        pfVar3 = pfVar3 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        local_50 = _DAT_1824c4780;
        uStack_48 = _UNK_1824c4788;
        local_40 = (ulonglong)DAT_1824c3ea4;
        (**(code **)(**(longlong **)(param_1 + 8) + 0xb8))
                  (*(longlong **)(param_1 + 8),&local_38,&local_50);
        break;
      }
    }
  }
  local_30 = local_30 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_38);
}



############ FUN_ 1812a59f0 size=152 ############

undefined8 *
FUN_1812a59f0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  *param_1 = juce::AsyncUpdater::vftable;
  param_1[1] = 0;
  puVar4 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = juce::AsyncUpdater::AsyncUpdaterMessage::vftable;
  puVar4[2] = param_1;
  *(undefined4 *)(puVar4 + 3) = 0;
  if ((undefined8 *)param_1[1] != puVar4) {
    LOCK();
    *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
    UNLOCK();
    puVar3 = (undefined8 *)param_1[1];
    param_1[1] = puVar4;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1,puVar4,param_4,uVar5);
      }
    }
  }
  return param_1;
}



############ FUN_ 1812a7230 size=123 ############

undefined8 * FUN_1812a7230(undefined8 *param_1)

{
  uint uVar1;
  longlong *plVar2;
  int iVar3;
  
  *param_1 = juce::DeletedAtShutdown::vftable;
  do {
    LOCK();
    uVar1 = DAT_182673a34 & 1;
    DAT_182673a34 = DAT_182673a34 | 1;
    UNLOCK();
  } while (uVar1 != 0);
  plVar2 = (longlong *)FUN_1812a6d90();
  iVar3 = *(int *)((longlong)plVar2 + 0xc) + 1;
  if ((int)plVar2[1] < iVar3) {
    FUN_18047cb30(plVar2,*(int *)((longlong)plVar2 + 0xc) + 9 + iVar3 / 2 & 0xfffffff8);
  }
  iVar3 = *(int *)((longlong)plVar2 + 0xc);
  *(int *)((longlong)plVar2 + 0xc) = iVar3 + 1;
  *(undefined8 **)(*plVar2 + (longlong)iVar3 * 8) = param_1;
  LOCK();
  DAT_182673a34 = 0;
  UNLOCK();
  return param_1;
}



############ FUN_ 18133b010 size=280 ############

void FUN_18133b010(longlong param_1,char param_2)

{
  int iVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong *plVar5;
  int iVar6;
  bool bVar7;
  
  plVar5 = (longlong *)0x0;
  iVar6 = 0;
  iVar1 = FUN_18133b370();
  if (0 < iVar1) {
    while( true ) {
      iVar1 = 0;
      iVar2 = *(int *)(param_1 + 0x24) + -1;
      if (iVar2 < 0) break;
      lVar4 = (longlong)iVar2;
      plVar3 = (longlong *)(*(longlong *)(param_1 + 0x18) + lVar4 * 8);
      while ((*(char *)(*plVar3 + 0x5c) == '\0' ||
             (bVar7 = iVar1 != iVar6, iVar1 = iVar1 + 1, bVar7))) {
        plVar3 = plVar3 + -1;
        lVar4 = lVar4 + -1;
        if (lVar4 < 0) {
          return;
        }
      }
      lVar4 = *(longlong *)(*plVar3 + 0x40);
      if (lVar4 == 0) {
        return;
      }
      if ((*(byte *)(lVar4 + 0xa8) & 1) == 0) {
        if (*(longlong *)(lVar4 + 0x18) != 0) {
          plVar3 = (longlong *)FUN_18134c2e0();
          goto LAB_18133b0ba;
        }
      }
      else {
        plVar3 = (longlong *)FUN_1812d2bd0(lVar4);
LAB_18133b0ba:
        if ((plVar3 != (longlong *)0x0) && (plVar3 != plVar5)) {
          if (plVar5 == (longlong *)0x0) {
            (**(code **)(*plVar3 + 0xb0))(plVar3,param_2);
            plVar5 = plVar3;
            if (param_2 != '\0') {
              (**(code **)(*plVar3 + 200))(plVar3);
            }
          }
          else {
            (**(code **)(*plVar3 + 0xb8))(plVar3,plVar5);
            plVar5 = plVar3;
          }
        }
      }
      iVar6 = iVar6 + 1;
      iVar1 = FUN_18133b370(param_1);
      if (iVar1 <= iVar6) {
        return;
      }
    }
  }
  return;
}



############ FUN_ 18134adf0 size=240 ############

longlong FUN_18134adf0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  lVar4 = 0;
  while( true ) {
    if (param_1 == 0) {
      if (DAT_182673700 == 0) {
        uVar3 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar3);
      }
      lVar2 = DAT_182673700;
      if (*(longlong *)(DAT_182673700 + 0x98) != 0) {
        lVar4 = *(longlong *)(*(longlong *)(DAT_182673700 + 0x98) + 0x10);
      }
      if (lVar4 == 0) {
        if (*(longlong *)(DAT_182673700 + 0x90) == 0) {
          uVar3 = FUN_1811316e0(0x170);
          uVar3 = FUN_1812fbfd0(uVar3);
          puVar1 = *(undefined8 **)(lVar2 + 0x90);
          *(undefined8 *)(lVar2 + 0x90) = uVar3;
          if (puVar1 != (undefined8 *)0x0) {
            (**(code **)*puVar1)(puVar1,1);
          }
        }
        lVar4 = *(longlong *)(lVar2 + 0x90);
        FUN_18051b750(lVar2 + 0x98,lVar4,param_3,param_4,uVar5);
      }
      return lVar4;
    }
    lVar2 = lVar4;
    if (*(longlong *)(param_1 + 0x50) != 0) {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x50) + 0x10);
    }
    if (lVar2 != 0) break;
    param_1 = *(longlong *)(param_1 + 0x18);
  }
  return lVar2;
}



############ FUN_ 1812c6070 size=9 ############

void FUN_1812c6070(void)

{
                    /* WARNING: Could not recover jumptable at 0x0001812c6072. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  MessageBeep(0);
  return;
}



############ FUN_ 18050dd00 size=885 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18050dd00(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4,
                  undefined1 param_5)

{
  longlong *plVar1;
  DWORD DVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  int iVar6;
  undefined1 auStackY_d8 [32];
  undefined8 *local_90;
  undefined8 local_88;
  undefined8 *local_80;
  IID local_78;
  undefined **local_68 [7];
  undefined ***local_30;
  ulonglong local_28;
  
  local_88 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStackY_d8;
  *param_1 = juce::ComponentPeer::vftable;
  param_1[1] = param_2;
  *(undefined4 *)(param_1 + 2) = param_3;
  *(undefined8 *)((longlong)param_1 + 0x14) = 0;
  *(undefined8 *)((longlong)param_1 + 0x1c) = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  DAT_18262b5c4 = DAT_18262b5c4 + 2;
  *(int *)(param_1 + 0xb) = DAT_18262b5c4;
  *(undefined1 *)((longlong)param_1 + 0x5c) = 0;
  local_80 = param_1;
  if (DAT_182673700 == 0) {
    uVar3 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar3);
  }
  lVar4 = DAT_182673700;
  plVar1 = (longlong *)(DAT_182673700 + 0x68);
  iVar6 = *(int *)(DAT_182673700 + 0x74) + 1;
  if (*(int *)(DAT_182673700 + 0x70) < iVar6) {
    FUN_18047cb30(plVar1,*(int *)(DAT_182673700 + 0x74) + 9 + iVar6 / 2 & 0xfffffff8);
  }
  iVar6 = *(int *)(lVar4 + 0x74);
  *(int *)(lVar4 + 0x74) = iVar6 + 1;
  *(undefined8 **)(*plVar1 + (longlong)iVar6 * 8) = param_1;
  param_1[0xd] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0xe) = 0;
  *param_1 = juce::HWNDComponentPeer::vftable;
  param_1[0xc] = juce::HWNDComponentPeer::vftable;
  param_1[0xf] = juce::HWNDComponentPeer::vftable;
  *(undefined1 *)(param_1 + 0x10) = param_5;
  param_1[0x12] = param_4;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  *(undefined4 *)(param_1 + 0x16) = 0;
  *(undefined1 *)((longlong)param_1 + 0xb4) = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  *(undefined1 *)(param_1 + 0x1b) = 0xff;
  FUN_18050dad0(param_1 + 0x1c);
  param_1[0x22] = 0;
  param_1[0x23] = 0x3ff0000000000000;
  *(undefined1 *)(param_1 + 0x24) = 0;
  param_1[0x26] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x27) = 0;
  param_1[0x25] = juce::HWNDComponentPeer::TemporaryImage::vftable;
  param_1[0x28] = 0;
  param_1[0x29] = 0xffffffffffffffff;
  *(undefined1 *)(param_1 + 0x2a) = 0;
  lVar4 = FUN_1812a7550();
  DVar2 = GetCurrentThreadId();
  if (((ulonglong)DVar2 == *(ulonglong *)(lVar4 + 0x10)) ||
     ((ulonglong)DVar2 == *(ulonglong *)(lVar4 + 0x18))) {
    FUN_180510be0(param_1);
  }
  else {
    FUN_1812a6500(lVar4,FUN_180510bd0,param_1);
  }
  puVar5 = (undefined8 *)FUN_18049a930(&local_90,param_1[1] + 8);
  SetWindowTextW((HWND)param_1[0x11],(LPCWSTR)*puVar5);
  FUN_180511150(param_1);
  if ((DAT_182673b00 == (undefined8 *)0x0) && (DAT_18267ab70 == '\0')) {
    DAT_18267ab70 = 1;
    puVar5 = (undefined8 *)FUN_1811316e0(0x30);
    local_90 = puVar5;
    FUN_1812a7230(puVar5);
    puVar5[2] = 0xffffffffffffffff;
    *(undefined4 *)(puVar5 + 3) = 0;
    *puVar5 = juce::OnScreenKeyboard::vftable;
    puVar5[1] = juce::OnScreenKeyboard::vftable;
    *(undefined2 *)(puVar5 + 4) = 0;
    local_78.Data1 = 0x4ce576fa;
    local_78.Data2 = 0x83dc;
    local_78.Data3 = 0x4f88;
    local_78.Data4[0] = 0x95;
    local_78.Data4[1] = '\x1c';
    local_78.Data4[2] = 0x9d;
    local_78.Data4[3] = '\a';
    local_78.Data4[4] = 0x82;
    local_78.Data4[5] = 0xb4;
    local_78.Data4[6] = 0xe3;
    local_78.Data4[7] = 'v';
    puVar5[5] = (LPVOID)0x0;
    CoCreateInstance(&local_78,(LPUNKNOWN)0x0,6,(IID *)&DAT_18249bbf8,(LPVOID *)(puVar5 + 5));
    DAT_18267ab70 = '\0';
    DAT_182673b00 = puVar5;
  }
  local_30 = (undefined ***)0x0;
  if (DAT_182673ba8 != (undefined ***)0x0) {
    if (DAT_182673ba8 == (undefined ***)&DAT_182673b70) {
      local_30 = local_68;
    }
    else {
      local_30 = DAT_182673ba8;
    }
  }
  local_68[0] = std::
                _Func_impl_no_alloc<<lambda_e1856575c8497ff7f331510ea430c1a8>,juce::ModifierKeys>::
                vftable;
  _DAT_182673b70 =
       std::_Func_impl_no_alloc<<lambda_e1856575c8497ff7f331510ea430c1a8>,juce::ModifierKeys>::
       vftable;
  DAT_182673ba8 = (undefined ***)&DAT_182673b70;
  if ((local_30 != (undefined ***)0x0) && (local_30 != local_68)) {
                    /* WARNING: Subroutine does not return */
    free(local_30);
  }
}



############ FUN_ 18049fa40 size=302 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

float * FUN_18049fa40(float *param_1,uint param_2)

{
  int iVar1;
  float fVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  
  uVar4 = param_2 & 0xff;
  uVar6 = param_2 >> 0x10 & 0xff;
  uVar5 = param_2 >> 8 & 0xff;
  if (uVar6 < uVar5) {
    iVar1 = uVar5 - uVar4;
    uVar3 = uVar5;
  }
  else {
    iVar1 = uVar6 - uVar4;
    uVar3 = uVar6;
  }
  if (SBORROW4(uVar3,uVar4) != iVar1 < 0) {
    uVar3 = uVar4;
  }
  uVar7 = uVar6;
  if (uVar5 < uVar6) {
    uVar7 = uVar5;
  }
  if (uVar4 < uVar7) {
    uVar7 = uVar4;
  }
  if (uVar3 == 0) {
    param_1[0] = 0.0;
    param_1[1] = 0.0;
  }
  else {
    fVar8 = (float)(int)(uVar3 - uVar7) / (float)uVar3;
    param_1[1] = fVar8;
    fVar2 = DAT_1824c3ea4;
    if (fVar8 <= 0.0) {
      *param_1 = 0.0;
    }
    else {
      fVar8 = DAT_1824c3ea4 / (float)(int)(uVar3 - uVar7);
      fVar10 = (float)(int)(uVar3 - uVar6) * fVar8;
      fVar9 = (float)(int)(uVar3 - uVar5) * fVar8;
      fVar8 = (float)(int)(uVar3 - uVar4) * fVar8;
      if (uVar6 == uVar3) {
        *param_1 = fVar8 - fVar9;
      }
      else if (uVar5 == uVar3) {
        *param_1 = (fVar10 + DAT_1824c41e0) - fVar8;
      }
      else {
        *param_1 = (fVar9 + DAT_1824c4334) - fVar10;
      }
      fVar8 = *param_1 * _DAT_1824c3d08;
      *param_1 = fVar8;
      if (fVar8 < 0.0) {
        *param_1 = fVar8 + fVar2;
      }
    }
  }
  param_1[2] = (float)uVar3 / DAT_1824c4548;
  return param_1;
}



############ FUN_ 18049fbb0 size=645 ############

undefined1 *
FUN_18049fbb0(undefined1 *param_1,float param_2,float param_3,float param_4,undefined1 param_5)

{
  float fVar1;
  double dVar2;
  undefined1 uVar3;
  float fVar4;
  float fVar5;
  float _X;
  undefined1 local_70;
  undefined1 local_68;
  
  dVar2 = DAT_1824c4520;
  fVar1 = DAT_1824c3ea4;
  param_4 = param_4 * DAT_1824c4548;
  if (0.0 <= param_4) {
    fVar5 = DAT_1824c4548;
    if (param_4 <= DAT_1824c4548) {
      fVar5 = param_4;
    }
  }
  else {
    fVar5 = 0.0;
  }
  uVar3 = SUB81((double)fVar5 + DAT_1824c4520,0);
  if (param_3 <= 0.0) {
    *param_1 = uVar3;
    param_1[1] = uVar3;
    param_1[2] = uVar3;
    param_1[3] = param_5;
    return param_1;
  }
  if (DAT_1824c3ea4 <= param_3) {
    param_3 = DAT_1824c3ea4;
  }
  fVar4 = floorf(param_2);
  _X = (param_2 - fVar4) * DAT_1824c4388 + DAT_1824c3c3c;
  fVar4 = floorf(_X);
  fVar4 = _X - fVar4;
  local_70 = SUB81((double)((fVar1 - param_3) * fVar5) + dVar2,0);
  if (fVar1 <= _X) {
    if (_X < DAT_1824c41e0) {
      *param_1 = local_70;
      param_1[1] = uVar3;
      local_68 = SUB81((double)((fVar1 - fVar4 * param_3) * fVar5) + dVar2,0);
      goto LAB_18049fdf8;
    }
    if (_X < DAT_1824c42d0) {
      local_68 = SUB81((double)((fVar1 - (fVar1 - fVar4) * param_3) * fVar5) + dVar2,0);
      *param_1 = local_68;
      param_1[1] = uVar3;
      local_68 = local_70;
      goto LAB_18049fdf8;
    }
    if (_X < DAT_1824c4334) {
      *param_1 = uVar3;
      local_68 = SUB81((double)((fVar1 - fVar4 * param_3) * fVar5) + dVar2,0);
      param_1[1] = local_68;
      local_68 = local_70;
      goto LAB_18049fdf8;
    }
    if (_X < DAT_1824c4360) {
      *param_1 = uVar3;
      param_1[1] = local_70;
      local_68 = SUB81((double)((fVar1 - (fVar1 - fVar4) * param_3) * fVar5) + dVar2,0);
      goto LAB_18049fdf8;
    }
    local_68 = SUB81((double)((fVar1 - fVar4 * param_3) * fVar5) + dVar2,0);
    *param_1 = local_68;
    local_68 = local_70;
  }
  else {
    *param_1 = local_70;
    local_68 = SUB81((double)((fVar1 - (fVar1 - fVar4) * param_3) * fVar5) + dVar2,0);
  }
  param_1[1] = local_68;
  local_68 = uVar3;
LAB_18049fdf8:
  param_1[2] = local_68;
  param_1[3] = param_5;
  return param_1;
}



############ FUN_ 181ba94b0 size=18 ############

void FUN_181ba94b0(void)

{
  FUN_180001000();
  return;
}



############ FUN_ 18129e350 size=25 ############

undefined8 * FUN_18129e350(undefined8 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *(undefined1 *)(param_1 + 4) = 1;
  return param_1;
}



############ FUN_ 18129e330 size=17 ############

void FUN_18129e330(undefined8 *param_1)

{
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018129e33a. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1804b02a0 size=144 ############

void FUN_1804b02a0(longlong *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + 3;
  if ((int)param_1[1] < iVar1) {
    FUN_1804af790(param_1,*(int *)((longlong)param_1 + 0xc) + 0xb + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = *param_2;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = param_3;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = param_4;
  return;
}



############ FUN_ 18129ddd0 size=166 ############

void FUN_18129ddd0(longlong param_1,float param_2,float param_3)

{
  if (*(int *)(param_1 + 0xc) == 0) {
    *(undefined8 *)(param_1 + 0x10) = 0;
    *(undefined8 *)(param_1 + 0x18) = 0;
    FUN_1804b02a0(param_1,&DAT_1821df344,0,0);
  }
  FUN_1804b02a0(param_1,&DAT_1821dfcb4,param_2,param_3);
  if (*(float *)(param_1 + 0x10) <= param_2) {
    if (*(float *)(param_1 + 0x14) <= param_2 && param_2 != *(float *)(param_1 + 0x14)) {
      *(float *)(param_1 + 0x14) = param_2;
    }
  }
  else {
    *(float *)(param_1 + 0x10) = param_2;
  }
  if (param_3 < *(float *)(param_1 + 0x18)) {
    *(float *)(param_1 + 0x18) = param_3;
    return;
  }
  if (*(float *)(param_1 + 0x1c) <= param_3 && param_3 != *(float *)(param_1 + 0x1c)) {
    *(float *)(param_1 + 0x1c) = param_3;
  }
  return;
}



############ FUN_ 18129a910 size=2178 ############

ulonglong * FUN_18129a910(longlong *param_1,ulonglong *param_2,float param_3)

{
  double dVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  float fVar5;
  float fVar6;
  ulonglong uVar7;
  int iVar8;
  uint uVar9;
  int iVar11;
  int iVar12;
  undefined4 uVar13;
  int iVar14;
  ulonglong uVar15;
  int iVar16;
  int iVar17;
  longlong lVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  double dVar27;
  float fVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  int local_134;
  int local_130;
  ulonglong local_128;
  undefined8 local_120;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined1 local_108;
  longlong local_100;
  int local_f8;
  int local_f4;
  ulonglong uVar10;
  
  fVar6 = DAT_1824c460c;
  fVar5 = DAT_1824c45fc;
  if (param_3 <= DAT_1824c3c70) {
    FUN_1804ab000(param_2,param_1);
    uVar7 = param_1[3];
    param_2[2] = param_1[2];
    param_2[3] = uVar7;
    *(char *)(param_2 + 4) = (char)param_1[4];
    return param_2;
  }
  lVar18 = *param_1;
  uVar7 = 0;
  bVar2 = false;
  local_118._0_4_ = 0.0;
  local_118._4_4_ = 0.0;
  uStack_110._0_4_ = 0.0;
  uStack_110._4_4_ = 0.0;
  uVar13 = 0;
  local_128 = 0;
  local_120 = 0;
  local_118 = 0;
  uStack_110 = 0;
  local_108 = 1;
  local_f4 = 0;
  local_f8 = 0;
  bVar3 = false;
  bVar4 = false;
  local_100 = lVar18;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    iVar11 = -5;
    iVar23 = -2;
    iVar19 = -6;
    iVar25 = -3;
    iVar21 = -4;
    local_134 = -7;
    local_130 = -8;
    uVar10 = uVar7;
    uVar15 = uVar7;
    do {
      iVar8 = (int)uVar10;
      iVar17 = local_130 + 1;
      iVar16 = local_134 + 1;
      uVar9 = iVar8 + 1;
      uVar10 = (ulonglong)uVar9;
      iVar22 = iVar21 + 1;
      iVar20 = iVar19 + 1;
      fVar29 = *(float *)(lVar18 + (longlong)iVar8 * 4);
      iVar12 = iVar11 + 1;
      iVar26 = iVar25 + 1;
      iVar24 = iVar23 + 1;
      iVar14 = (int)uVar15;
      if (fVar29 == DAT_1824c4600) {
        fVar29 = *(float *)(lVar18 + (longlong)(int)uVar9 * 4);
        uVar10 = (ulonglong)(iVar8 + 3U);
        fVar28 = *(float *)(lVar18 + (longlong)(iVar8 + 2) * 4);
        if (iVar14 == 0) {
          local_118 = CONCAT44(fVar29,fVar29);
          uStack_110 = (ulonglong)(uint)fVar28;
LAB_18129ab42:
          uStack_110 = CONCAT44(fVar28,(float)uStack_110);
        }
        else {
          if ((float)local_118 <= fVar29) {
            if (local_118._4_4_ < fVar29) {
              local_118 = CONCAT44(fVar29,(float)local_118);
            }
          }
          else {
            local_118 = CONCAT44(local_118._4_4_,fVar29);
          }
          if ((float)uStack_110 <= fVar28) {
            if (uStack_110._4_4_ < fVar28) goto LAB_18129ab42;
          }
          else {
            uStack_110 = CONCAT44(uStack_110._4_4_,fVar28);
          }
        }
        local_f8 = iVar8;
        local_f4 = iVar14;
        FUN_1804b02a0(&local_128,&DAT_1821df344);
        bVar3 = false;
        uVar7 = local_128;
        lVar18 = local_100;
        iVar12 = iVar11 + 3;
        iVar24 = iVar23 + 3;
        iVar20 = iVar19 + 3;
        iVar26 = iVar25 + 3;
        iVar22 = iVar21 + 3;
        iVar16 = local_134 + 3;
        iVar17 = local_130 + 3;
        bVar2 = false;
        if (*(float *)(local_100 + (longlong)(int)(iVar8 + 3U) * 4) == fVar5) {
          uVar15 = (ulonglong)local_120._4_4_;
          bVar4 = true;
        }
        else {
          uVar15 = (ulonglong)local_120._4_4_;
          bVar4 = false;
        }
      }
      else if ((fVar29 == fVar5) || (fVar29 == fVar6)) {
        fVar28 = 0.0;
        fVar34 = 0.0;
        fVar30 = 0.0;
        fVar31 = 0.0;
        if (fVar29 == fVar5) {
          local_130 = local_130 + 3;
          local_134 = local_134 + 3;
          iVar22 = iVar21 + 3;
          iVar20 = iVar19 + 3;
          fVar32 = *(float *)(lVar18 + (longlong)(int)uVar9 * 4);
          iVar12 = iVar11 + 3;
          iVar26 = iVar25 + 3;
          uVar10 = (ulonglong)(iVar8 + 3U);
          iVar24 = iVar23 + 3;
          fVar33 = *(float *)(lVar18 + (longlong)(iVar8 + 2) * 4);
          if (8 < (int)(iVar8 + 3U)) {
            fVar28 = *(float *)(lVar18 + (longlong)local_130 * 4);
            fVar34 = *(float *)(lVar18 + (longlong)local_134 * 4);
            fVar30 = *(float *)(lVar18 + (longlong)iVar12 * 4);
            iVar11 = iVar22;
LAB_18129ac62:
            fVar31 = *(float *)(lVar18 + (longlong)iVar11 * 4);
          }
        }
        else {
          fVar32 = *(float *)(lVar18 + (longlong)(local_f8 + 1) * 4);
          fVar33 = *(float *)(lVar18 + (longlong)(local_f8 + 2) * 4);
          local_134 = iVar16;
          local_130 = iVar17;
          if (6 < (int)uVar9) {
            fVar28 = *(float *)(lVar18 + (longlong)iVar20 * 4);
            fVar34 = *(float *)(lVar18 + (longlong)iVar12 * 4);
            fVar30 = *(float *)(lVar18 + (longlong)iVar26 * 4);
            iVar11 = iVar24;
            goto LAB_18129ac62;
          }
        }
        if (bVar2) {
          dVar1 = _hypot((double)(fVar28 - fVar30),(double)(fVar34 - fVar31));
          if (0.0 < dVar1) {
            dVar27 = (double)param_3 / dVar1;
            if (DAT_1824c4050 <= (double)param_3 / dVar1) {
              dVar27 = DAT_1824c4050;
            }
            *(float *)((local_128 - 8) + (longlong)iVar14 * 4) =
                 (float)((double)fVar30 - (double)(fVar30 - fVar28) * dVar27);
            *(float *)((local_128 - 4) + (longlong)iVar14 * 4) =
                 (float)((double)fVar31 - (double)(fVar31 - fVar34) * dVar27);
          }
          dVar1 = _hypot((double)(fVar32 - fVar30),(double)(fVar33 - fVar31));
          if (0.0 < dVar1) {
            dVar27 = (double)param_3 / dVar1;
            if (DAT_1824c4050 <= (double)param_3 / dVar1) {
              dVar27 = DAT_1824c4050;
            }
            FUN_18129dca0(&local_128,fVar30,fVar31,
                          (float)((double)(fVar32 - fVar30) * dVar27 + (double)fVar30),
                          (float)((double)(fVar33 - fVar31) * dVar27 + (double)fVar31));
          }
          FUN_18129ddd0(&local_128,fVar32,fVar33);
          bVar2 = bVar3;
LAB_18129adbb:
          uVar15 = local_120 >> 0x20;
          lVar18 = local_100;
          bVar3 = bVar2;
        }
        else if (fVar29 == fVar5) {
          FUN_18129ddd0(&local_128,fVar32,fVar33);
          bVar2 = true;
          goto LAB_18129adbb;
        }
        uVar7 = local_128;
        iVar16 = local_134;
        iVar17 = local_130;
        if (fVar29 == fVar6) {
          if (bVar4) {
            fVar29 = *(float *)(lVar18 + (longlong)iVar26 * 4);
            fVar28 = *(float *)(lVar18 + (longlong)iVar24 * 4);
            fVar34 = *(float *)(lVar18 + (longlong)(local_f8 + 4) * 4);
            fVar30 = *(float *)(lVar18 + (longlong)(local_f8 + 5) * 4);
            dVar1 = _hypot((double)(fVar29 - fVar32),(double)(fVar28 - fVar33));
            if (0.0 < dVar1) {
              dVar27 = (double)param_3 / dVar1;
              if (DAT_1824c4050 <= (double)param_3 / dVar1) {
                dVar27 = DAT_1824c4050;
              }
              *(float *)((local_128 - 8) + (longlong)(int)uVar15 * 4) =
                   (float)((double)fVar32 - (double)(fVar32 - fVar29) * dVar27);
              *(float *)((local_128 - 4) + (longlong)(int)uVar15 * 4) =
                   (float)((double)fVar33 - (double)(fVar33 - fVar28) * dVar27);
            }
            fVar30 = fVar30 - fVar33;
            fVar34 = fVar34 - fVar32;
            dVar1 = _hypot((double)fVar34,(double)fVar30);
            if (0.0 < dVar1) {
              dVar27 = (double)param_3 / dVar1;
              if (DAT_1824c4050 <= (double)param_3 / dVar1) {
                dVar27 = DAT_1824c4050;
              }
              fVar28 = (float)((double)fVar34 * dVar27 + (double)fVar32);
              fVar29 = (float)((double)fVar30 * dVar27 + (double)fVar33);
              FUN_18129dca0(&local_128,fVar32,fVar33,fVar28,fVar29);
              uVar15 = local_120 >> 0x20;
              *(float *)(local_128 + (longlong)(local_f4 + 1) * 4) = fVar28;
              *(float *)(local_128 + (longlong)(local_f4 + 2) * 4) = fVar29;
            }
          }
          iVar11 = (int)uVar15;
          uVar7 = local_128;
          lVar18 = local_100;
          bVar2 = bVar3;
          if ((iVar11 != 0) &&
             ((iVar11 < 1 || (*(float *)(local_128 + (longlong)(iVar11 + -1) * 4) != fVar6)))) {
            iVar19 = iVar11 + 1;
            if ((int)local_120 < iVar19) {
              if (iVar19 < 0) {
                iVar19 = iVar11 + 2;
              }
              FUN_1804af790(&local_128,iVar11 + 9 + (iVar19 >> 1) & 0xfffffff8);
              iVar11 = local_120._4_4_;
            }
            uVar15 = (ulonglong)(iVar11 + 1U);
            local_120 = CONCAT44(iVar11 + 1U,(int)local_120);
            *(undefined4 *)(local_128 + (longlong)iVar11 * 4) = 0x47c35280;
            uVar7 = local_128;
            lVar18 = local_100;
          }
        }
      }
      else if (fVar29 == DAT_1824c4604) {
        bVar3 = false;
        uVar10 = (ulonglong)(iVar8 + 5);
        FUN_18129dca0(&local_128,*(undefined4 *)(lVar18 + (longlong)(int)uVar9 * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 2) * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 3) * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 4) * 4));
        uVar15 = local_120 >> 0x20;
        uVar7 = local_128;
        lVar18 = local_100;
        iVar12 = iVar11 + 5;
        iVar24 = iVar23 + 5;
        iVar20 = iVar19 + 5;
        iVar26 = iVar25 + 5;
        iVar22 = iVar21 + 5;
        iVar16 = local_134 + 5;
        iVar17 = local_130 + 5;
        bVar2 = bVar3;
      }
      else if (fVar29 == DAT_1824c4608) {
        bVar3 = false;
        uVar10 = (ulonglong)(iVar8 + 7);
        FUN_18129daf0(&local_128,*(undefined4 *)(lVar18 + (longlong)(int)uVar9 * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 2) * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 3) * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 4) * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 5) * 4),
                      *(undefined4 *)(lVar18 + (longlong)(iVar8 + 6) * 4));
        uVar15 = local_120 >> 0x20;
        uVar7 = local_128;
        lVar18 = local_100;
        iVar12 = iVar11 + 7;
        iVar24 = iVar23 + 7;
        iVar20 = iVar19 + 7;
        iVar26 = iVar25 + 7;
        iVar22 = iVar21 + 7;
        iVar16 = local_134 + 7;
        iVar17 = local_130 + 7;
        bVar2 = bVar3;
      }
      local_130 = iVar17;
      local_134 = iVar16;
      iVar21 = iVar22;
      iVar25 = iVar26;
      iVar19 = iVar20;
      iVar23 = iVar24;
      iVar11 = iVar12;
      uVar13 = (undefined4)uVar15;
    } while ((int)uVar10 < *(int *)((longlong)param_1 + 0xc));
  }
  *param_2 = uVar7;
  *(int *)(param_2 + 1) = (int)local_120;
  *(undefined4 *)((longlong)param_2 + 0xc) = uVar13;
  *(float *)(param_2 + 2) = (float)local_118;
  *(float *)((longlong)param_2 + 0x14) = local_118._4_4_;
  *(float *)(param_2 + 3) = (float)uStack_110;
  *(float *)((longlong)param_2 + 0x1c) = uStack_110._4_4_;
  *(undefined1 *)(param_2 + 4) = local_108;
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 180487300 size=303 ############

float FUN_180487300(float *param_1,float param_2)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  double dVar5;
  float fVar6;
  float local_res8 [4];
  float local_res18 [2];
  float local_res20 [2];
  
  fVar2 = DAT_1824c3ea4;
  local_res18[0] = param_1[1];
  if (*(longlong *)(param_1 + 0x24) == 0) {
    fVar6 = (param_2 - *param_1) / (local_res18[0] - *param_1);
    if (0.0 <= fVar6) {
      fVar4 = DAT_1824c3ea4;
      if (fVar6 <= DAT_1824c3ea4) {
        fVar4 = fVar6;
      }
    }
    else {
      fVar4 = 0.0;
    }
    fVar6 = param_1[3];
    if (fVar6 != DAT_1824c3ea4) {
      if (*(char *)(param_1 + 4) == '\0') {
        fVar2 = powf(fVar4,fVar6);
        return fVar2;
      }
      fVar3 = fVar4 * DAT_1824c41e0 - DAT_1824c3ea4;
      fVar4 = DAT_1824c3ea4;
      if (fVar3 < 0.0) {
        fVar4 = DAT_1824c4680;
      }
      dVar5 = (double)fVar3;
      fVar6 = powf((float)(double)CONCAT44((uint)((ulonglong)dVar5 >> 0x20) & DAT_1824c4f10._4_4_,
                                           SUB84(dVar5,0) & (uint)DAT_1824c4f10),fVar6);
      fVar4 = (fVar6 * fVar4 + fVar2) * DAT_1824c3d8c;
    }
  }
  else {
    local_res20[0] = *param_1;
    plVar1 = *(longlong **)(param_1 + 0x24);
    local_res8[0] = param_2;
    if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    fVar2 = (float)(**(code **)(*plVar1 + 0x10))
                             (plVar1,local_res20,local_res18,local_res8,0xfffffffffffffffe);
    fVar4 = 0.0;
    if (0.0 <= fVar2) {
      fVar6 = DAT_1824c3ea4;
      if (fVar2 <= DAT_1824c3ea4) {
        fVar6 = fVar2;
      }
      return fVar6;
    }
  }
  return fVar4;
}



############ FUN_ 18058cb60 size=418 ############

void FUN_18058cb60(longlong param_1,float param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  longlong *plVar9;
  float fVar10;
  double dVar11;
  float fVar12;
  uint uVar13;
  float fVar14;
  
  fVar6 = DAT_1824c4408;
  fVar5 = DAT_1824c3ea4;
  fVar4 = DAT_1824c3d8c;
  fVar3 = DAT_1824c3d54;
  plVar9 = *(longlong **)(param_1 + 0xf0);
  uVar8 = 0;
  uVar7 = (ulonglong)((longlong)(plVar9 + *(int *)(param_1 + 0xfc)) + (7 - (longlong)plVar9)) >> 3;
  if (plVar9 + *(int *)(param_1 + 0xfc) < plVar9) {
    uVar7 = uVar8;
  }
  fVar14 = DAT_1824c3ea4 / (float)*(int *)(param_1 + 0x28);
  if (uVar7 == 0) {
    *(float *)(param_1 + 0x208) = param_2;
  }
  else {
    uVar13 = (uint)DAT_1824c4f10;
    uVar2 = (ulonglong)DAT_1824c4f10 >> 0x20;
    do {
      lVar1 = *plVar9;
      dVar11 = (double)(param_2 -
                       ((float)*(int *)(lVar1 + 0x28) * fVar4 + (float)*(int *)(lVar1 + 0x20)) *
                       fVar14);
      fVar12 = (float)(double)CONCAT44((uint)((ulonglong)dVar11 >> 0x20) & (uint)uVar2,
                                       SUB84(dVar11,0) & uVar13) * fVar6 - fVar3;
      if (0.0 <= fVar12) {
        fVar10 = fVar5;
        if (fVar12 <= fVar5) {
          fVar10 = fVar12;
        }
      }
      else {
        fVar10 = 0.0;
      }
      fVar10 = *(float *)(param_1 + 0x204) * fVar10;
      FUN_181342bf0(lVar1,fVar10 * fVar10 + (fVar5 - *(float *)(param_1 + 0x204)));
      plVar9 = plVar9 + 1;
      uVar8 = uVar8 + 1;
    } while (uVar8 != uVar7);
    *(float *)(param_1 + 0x208) = param_2;
  }
  return;
}



############ FUN_ 1813f2240 size=25 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1813f2240(void)

{
  undefined8 unaff_retaddr;
  
  _DAT_18262a4f0 = (ulonglong)(DAT_18262a4f0 + 1);
  return unaff_retaddr;
}



############ FUN_ 180bc28e0 size=24 ############

void FUN_180bc28e0(void)

{
  FUN_1811528a0();
  return;
}



############ FUN_ 180589400 size=436 ############

longlong FUN_180589400(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong lVar2;
  
  piVar1 = (int *)(param_1 + 0x10);
  lVar2 = 0x10;
  do {
    memcpy(*(void **)(piVar1 + -4),*(void **)((param_2 - param_1) + -0x10 + (longlong)piVar1),
           (longlong)*piVar1 << 3);
    memcpy(*(void **)(piVar1 + -2),*(void **)((param_2 - param_1) + -8 + (longlong)piVar1),
           (longlong)*piVar1 << 3);
    piVar1 = piVar1 + 0x20;
    lVar2 = lVar2 + -1;
  } while (lVar2 != 0);
  *(undefined4 *)(param_1 + 0x800) = *(undefined4 *)(param_2 + 0x800);
  *(undefined4 *)(param_1 + 0x804) = *(undefined4 *)(param_2 + 0x804);
  *(undefined4 *)(param_1 + 0x808) = *(undefined4 *)(param_2 + 0x808);
  *(undefined4 *)(param_1 + 0x80c) = *(undefined4 *)(param_2 + 0x80c);
  *(undefined1 *)(param_1 + 0x810) = *(undefined1 *)(param_2 + 0x810);
  *(undefined4 *)(param_1 + 0x814) = *(undefined4 *)(param_2 + 0x814);
  *(undefined1 *)(param_1 + 0x818) = *(undefined1 *)(param_2 + 0x818);
  *(undefined1 *)(param_1 + 0x819) = *(undefined1 *)(param_2 + 0x819);
  *(undefined1 *)(param_1 + 0x81a) = *(undefined1 *)(param_2 + 0x81a);
  *(undefined1 *)(param_1 + 0x81b) = *(undefined1 *)(param_2 + 0x81b);
  *(undefined1 *)(param_1 + 0x81c) = *(undefined1 *)(param_2 + 0x81c);
  *(undefined1 *)(param_1 + 0x81d) = *(undefined1 *)(param_2 + 0x81d);
  *(undefined1 *)(param_1 + 0x81e) = *(undefined1 *)(param_2 + 0x81e);
  *(undefined1 *)(param_1 + 0x81f) = *(undefined1 *)(param_2 + 0x81f);
  *(undefined1 *)(param_1 + 0x820) = *(undefined1 *)(param_2 + 0x820);
  *(undefined1 *)(param_1 + 0x821) = *(undefined1 *)(param_2 + 0x821);
  *(undefined1 *)(param_1 + 0x822) = *(undefined1 *)(param_2 + 0x822);
  *(undefined1 *)(param_1 + 0x823) = *(undefined1 *)(param_2 + 0x823);
  *(undefined1 *)(param_1 + 0x824) = *(undefined1 *)(param_2 + 0x824);
  *(undefined1 *)(param_1 + 0x825) = *(undefined1 *)(param_2 + 0x825);
  *(undefined1 *)(param_1 + 0x826) = *(undefined1 *)(param_2 + 0x826);
  *(undefined1 *)(param_1 + 0x827) = *(undefined1 *)(param_2 + 0x827);
  return param_1;
}



############ FUN_ 1805a9280 size=214 ############

void FUN_1805a9280(void)

{
  undefined8 uVar1;
  undefined1 auStack_1c8 [32];
  undefined1 local_1a8;
  undefined1 local_1a0;
  undefined8 local_198;
  undefined1 local_190 [32];
  undefined1 local_170 [32];
  undefined1 local_150 [40];
  undefined1 local_128 [272];
  ulonglong local_18;
  
  local_198 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  FUN_1805a4160(local_170,"Authorization Error");
  FUN_180487a80(local_190);
  uVar1 = FUN_1805a3f20(local_128,
                        "%s cannot run because it is corrupted. Please try reinstalling the product."
                       );
  uVar1 = thunk_FUN_1805a21d0(uVar1,&PTR_s_soothe2_18260e5f8);
  uVar1 = FUN_1805a3b50(local_150,uVar1);
  FUN_1805a5a40(local_190,uVar1);
  FUN_180485450(local_150);
  FUN_1805a4fa0(local_128);
  local_1a0 = 0;
  local_1a8 = 0;
  FUN_1805f02b0(local_170,local_190,0,0);
  FUN_180485450(local_190);
  FUN_180485450(local_170);
                    /* WARNING: Subroutine does not return */
  exit(1);
}



############ FUN_ 18134c250 size=23 ############

undefined8 * FUN_18134c250(longlong param_1,undefined8 *param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *(undefined4 *)(param_1 + 0x28);
  uVar2 = *(undefined4 *)(param_1 + 0x2c);
  *param_2 = 0;
  *(undefined4 *)(param_2 + 1) = uVar1;
  *(undefined4 *)((longlong)param_2 + 0xc) = uVar2;
  return param_2;
}



############ FUN_ 18134c170 size=31 ############

void FUN_18134c170(undefined8 param_1,undefined4 *param_2)

{
  FUN_18134bfe0(param_1,*param_2,param_2[1],param_2[2],param_2[3]);
  return;
}



############ FUN_ 1813bba80 size=25 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1813bba80(void)

{
  undefined8 unaff_retaddr;
  
  _DAT_18262a3e8 = (ulonglong)(DAT_18262a3e8 + 1);
  return unaff_retaddr;
}



############ FUN_ 18058e380 size=124 ############

longlong FUN_18058e380(longlong param_1,uint *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  uVar1 = *param_2;
  lVar2 = *(longlong *)(param_1 + 8);
  lVar3 = (longlong)(int)uVar1 * 0x800;
  if (uVar1 < *(uint *)(lVar2 + 0x84)) {
    uVar4 = *(undefined8 *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8);
  }
  else {
    uVar4 = 0;
  }
  FUN_180536300(lVar2 + 0x18,*(longlong *)(param_1 + 0x10) + 0x8e0 + lVar3,
                *(longlong *)(param_1 + 0x10) + 0xe0,uVar4,0x200);
  return *(longlong *)(param_1 + 0x10) + 0x8e0 + lVar3;
}



############ FUN_ 180536300 size=475 ############

void FUN_180536300(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4,
                  int param_5,undefined8 param_6,longlong param_7)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  float fVar5;
  int iVar6;
  int iVar7;
  
  iVar7 = *(int *)(param_1 + 0x240080);
  lVar1 = param_7 + (longlong)(param_5 * 8) * 4;
  lVar2 = lVar1 + (longlong)param_5 * 4;
  fVar5 = *(float *)(param_1 + 0x24);
  lVar3 = lVar2 + (longlong)(param_5 * 2) * 4;
  lVar4 = lVar3 + (longlong)(param_5 * 2) * 4;
  iVar6 = __std_type_info_compare(0x182650db8,0x182650db8);
  FUN_18052da00(lVar1,param_3,(float)(DAT_1824c4248 / (double)((float)iVar7 * fVar5)),param_5);
  if (*(char *)(param_4 + 0x810) == '\0') {
    FUN_18052db50(lVar3,DAT_1824c3ea4,param_5);
    FUN_18052db50(lVar4,0,param_5);
    if (0 < *(int *)(param_4 + 0x814)) {
      if (iVar6 == 0) {
        FUN_180535880();
      }
      else {
        FUN_180536f90(lVar2,param_7,param_4,lVar1,param_5);
      }
      iVar7 = __std_type_info_compare(0x182650db8,0x182650db8);
      if (iVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0();
      }
                    /* WARNING: Subroutine does not return */
      thunk_FUN_181ba94b0(lVar2,param_7,param_5);
    }
    if ((1 < *(int *)(param_4 + 0x814)) &&
       (*(char *)((longlong)(*(int *)(param_4 + 0x814) + -1) + 0x818 + param_4) == '\0')) {
      FUN_18052d990(lVar4,lVar3,param_5);
    }
    FUN_18052dbc0(param_2,lVar4,param_5);
  }
  else {
    FUN_18052db50(param_2,DAT_1824c3ea4,param_5);
  }
  return;
}



############ FUN_ 18058b220 size=318 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18058b220(longlong param_1,int param_2)

{
  uint *puVar1;
  uint uVar2;
  undefined4 uVar3;
  longlong lVar4;
  int iVar5;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  float local_98;
  longlong local_90;
  longlong local_88 [5];
  undefined1 local_59 [32];
  undefined1 local_39;
  ulonglong local_38 [4];
  
  local_88[1] = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_98 = *(float *)(*(longlong *)(param_1 + 0x9b28) + 0x188);
  iVar5 = (int)local_98;
  if (param_2 != iVar5) {
    lVar4 = FUN_181233e10(local_59 + 1);
    FUN_180495150(&local_90,lVar4,local_59 + -lVar4);
    uVar3 = DAT_1824c4680;
    local_a8 = DAT_1824c4680;
    FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_90,DAT_1824c3ea4,DAT_1824c4680);
    puVar1 = (uint *)(local_90 + -0x10);
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    lVar4 = FUN_181233e10(local_38,iVar5);
    FUN_180495150(local_88,lVar4,&local_39 + -lVar4);
    local_a8 = uVar3;
    FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_88[0],DAT_1824c3d8c,uVar3);
    puVar1 = (uint *)(local_88[0] + -0x10);
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
  }
}



############ FUN_ 181233e10 size=131 ############

char * FUN_181233e10(longlong param_1,uint param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  char *pcVar3;
  char *pcVar4;
  
  if (-1 < (int)param_2) {
    pcVar4 = (char *)(param_1 + -1);
    *pcVar4 = '\0';
    uVar2 = (ulonglong)param_2;
    do {
      pcVar4 = pcVar4 + -1;
      uVar1 = uVar2 / 10;
      *pcVar4 = (char)uVar2 + (char)uVar1 * -10 + '0';
      uVar2 = uVar1;
    } while ((int)uVar1 != 0);
    return pcVar4;
  }
  param_2 = -param_2;
  *(char *)(param_1 + -1) = '\0';
  pcVar4 = (char *)(param_1 + -1);
  do {
    pcVar3 = pcVar4;
    pcVar4 = pcVar3 + -1;
    *pcVar4 = (char)param_2 + (char)((ulonglong)param_2 / 10) * -10 + '0';
    param_2 = (uint)((ulonglong)param_2 / 10);
  } while (param_2 != 0);
  pcVar3 = pcVar3 + -2;
  *pcVar3 = '-';
  return pcVar3;
}



############ FUN_ 180495150 size=111 ############

undefined8 * FUN_180495150(undefined8 *param_1,undefined8 param_2,longlong param_3)

{
  undefined4 uVar1;
  ulonglong uVar2;
  undefined4 *local_res8;
  
  uVar2 = param_3 + 4U & 0xfffffffffffffffc;
  local_res8 = (undefined4 *)thunk_FUN_1811316e0(uVar2 + 0x17);
  LOCK();
  uVar1 = *local_res8;
  *local_res8 = 0;
  UNLOCK();
  *(ulonglong *)(local_res8 + 2) = uVar2;
  local_res8 = local_res8 + 4;
  *param_1 = local_res8;
  FUN_18049d7f0(&local_res8,param_2,(int)param_3 + 1,uVar1);
  return param_1;
}



############ FUN_ 181411be0 size=234 ############

void FUN_181411be0(longlong param_1,undefined8 param_2,undefined4 param_3,float param_4,
                  float param_5)

{
  uint uVar1;
  float fVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong *plVar5;
  int iVar6;
  uint *_Memory;
  longlong local_res8;
  undefined8 local_50;
  undefined8 local_38;
  float local_30;
  
  FUN_181406d20(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  FUN_18049c9e0(&local_res8,param_2);
  plVar5 = (longlong *)FUN_1805714d0(param_1 + 0x168,&local_res8);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_50 = *(undefined8 *)(param_1 + 0x188);
  fVar2 = *(float *)(param_1 + 400);
  if (0.0 <= param_4) {
    local_50 = CONCAT44(param_4,(undefined4)local_50);
  }
  if (0.0 < param_5) {
    local_50 = CONCAT44(local_50._4_4_,param_5);
  }
  local_38 = local_50;
  local_30 = fVar2;
  FUN_1813bb6b0(*(undefined8 *)(*plVar5 + 0x10),&local_38);
  lVar3 = *plVar5;
  *(undefined4 *)(lVar3 + 0x18) = param_3;
  plVar4 = *(longlong **)(lVar3 + 0x10);
  if ((undefined **)*plVar4 == SkewInterpolator::vftable) {
    *(float *)((longlong)plVar4 + 0x6c) = *(float *)plVar4[1] - *(float *)plVar4[2];
    *(float *)(plVar4 + 0xe) = *(float *)plVar4[2];
    *(undefined4 *)(plVar4 + 0xd) = *(undefined4 *)((longlong)plVar4 + 100);
  }
  else {
    (*(code *)((undefined **)*plVar4)[1])(plVar4);
  }
  (**(code **)(**(longlong **)(*plVar5 + 0x10) + 0x10))();
  if (*(int *)(param_1 + 0x10) < 1) {
    iVar6 = (int)fVar2;
    if (iVar6 < 1) {
      FUN_1812a7720(param_1);
    }
    else {
      FUN_1812a77d0(param_1,1000 / (longlong)iVar6 & 0xffffffff);
    }
  }
  return;
}



############ FUN_ 18058b0c0 size=313 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18058b0c0(longlong param_1,int param_2)

{
  uint *puVar1;
  uint uVar2;
  undefined4 uVar3;
  longlong lVar4;
  int iVar5;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  float local_98;
  longlong local_90;
  longlong local_88 [5];
  undefined1 local_59 [32];
  undefined1 local_39;
  ulonglong local_38 [4];
  
  local_88[1] = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_98 = *(float *)(*(longlong *)(param_1 + 0x9b28) + 0x188);
  iVar5 = (int)local_98;
  if (param_2 != iVar5) {
    lVar4 = FUN_181233e10(local_59 + 1);
    FUN_180495150(&local_90,lVar4,local_59 + -lVar4);
    uVar3 = DAT_1824c4680;
    local_a8 = DAT_1824c4680;
    FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_90,0,DAT_1824c4680);
    puVar1 = (uint *)(local_90 + -0x10);
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    lVar4 = FUN_181233e10(local_38,iVar5);
    FUN_180495150(local_88,lVar4,&local_39 + -lVar4);
    local_a8 = uVar3;
    FUN_181411be0(*(undefined8 *)(param_1 + 0x97b0),local_88[0],DAT_1824c3ea4,uVar3);
    puVar1 = (uint *)(local_88[0] + -0x10);
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
  }
}



############ FUN_ 180484cd0 size=126 ############

void FUN_180484cd0(longlong param_1)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(param_1 + 0xd0);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)(param_1 + 0x98));
    *(undefined8 *)(param_1 + 0xd0) = 0;
  }
  plVar1 = *(longlong **)(param_1 + 0x90);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)(param_1 + 0x58));
    *(undefined8 *)(param_1 + 0x90) = 0;
  }
  plVar1 = *(longlong **)(param_1 + 0x50);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)(param_1 + 0x18));
    *(undefined8 *)(param_1 + 0x50) = 0;
  }
  return;
}



############ FUN_ 18047cbc0 size=161 ############

void FUN_18047cbc0(longlong *param_1)

{
  void *_Dst;
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar2) {
    lVar3 = (longlong)iVar2 * 8;
    lVar4 = lVar3;
    do {
      puVar1 = *(undefined8 **)(lVar4 + *param_1);
      _Dst = (void *)(lVar3 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar2) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      lVar3 = lVar3 + -8;
      lVar4 = lVar4 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 18140e230 size=2119 ############

/* WARNING: Instruction at (ram,0x00018140e7d3) overlaps instruction at (ram,0x00018140e7d1)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018140ecd5) */
/* WARNING: Removing unreachable block (ram,0x00018140e9fe) */
/* WARNING: Removing unreachable block (ram,0x00018140e6f5) */
/* WARNING: Removing unreachable block (ram,0x00018140e679) */
/* WARNING: Removing unreachable block (ram,0x00018140e5c2) */
/* WARNING: Removing unreachable block (ram,0x00018140e2e8) */
/* WARNING: Removing unreachable block (ram,0x00018140e485) */
/* WARNING: Removing unreachable block (ram,0x00018140e5e7) */
/* WARNING: Removing unreachable block (ram,0x00018140e931) */
/* WARNING: Removing unreachable block (ram,0x00018140ea21) */
/* WARNING: Removing unreachable block (ram,0x00018140ea88) */
/* WARNING: Removing unreachable block (ram,0x00018140e918) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 * FUN_18140e230(undefined4 *param_1,undefined4 param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  ulonglong uVar4;
  undefined4 *puVar5;
  undefined1 *puVar6;
  ulonglong in_R11;
  longlong lVar7;
  int iVar8;
  ulonglong uVar9;
  longlong lVar10;
  bool bVar11;
  bool bVar12;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  uVar2 = _UNK_1815797c0;
  puVar6 = auStack_58;
  uVar1 = (uint)&stack0x00000000 & 0x18ff;
  uVar1 = (uVar1 + 1) * uVar1 + 0x333 & 0x80000001;
  uVar1 = (int)(-uVar1 | uVar1) >> 0x1f;
  uVar9 = (ulonglong)(((int)(-uVar1 | uVar1) >> 0x1f) * -0x2a1d ^ 0x2f2d);
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  do {
    uVar9 = -((uVar9 ^ 0xffffffffffffffff) + 1);
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = _UNK_1815797bc ^
          (_UNK_1815797b8 ^
          (_UNK_1815797b4 ^
          (_UNK_1815797b0 ^
          (_UNK_1815797ac ^
          (_UNK_1815797a8 ^
          (_UNK_1815797a4 ^
          (_UNK_1815797a0 ^
          (_UNK_18157979c ^
          (_UNK_181579798 ^
          (_UNK_181579794 ^
          (_UNK_181579790 ^
          (_UNK_18157978c ^
          (DAT_181579788 ^
          (DAT_181579784 ^
          (DAT_181579780 ^
          (DAT_18157977c ^
          (DAT_181579778 ^
          (DAT_181579774 ^
          (DAT_181579770 ^
          (DAT_18157976c ^
          (DAT_181579768 ^
          (DAT_181579764 ^
          (DAT_181579760 ^
          (DAT_18157975c ^
          (DAT_181579758 ^
          (DAT_181579754 ^
          (DAT_181579750 ^ (DAT_18157974c ^ (DAT_181579748 ^ 0x811c9dc5) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  param_1[1] = param_2;
  uVar2 = _UNK_1815797d4 ^
          (_UNK_1815797d0 ^
          (_UNK_1815797cc ^
          (_UNK_1815797c8 ^ (_UNK_1815797c4 ^ (uVar2 ^ uVar1 * 0x1000181) * 0x1000181) * 0x1000181)
          * 0x1000181) * 0x1000181) * 0x1000181;
  bVar12 = uVar2 == 0;
  lVar7 = (longlong)(int)uVar2 * 0x1000181;
  uVar2 = (uint)lVar7;
  bVar11 = (int)uVar2 != lVar7;
  do {
    uVar4 = 0;
    uVar3 = FUN_18140d737();
    if ((bVar11 || bVar12) && ((uVar4 & 0x41) != 0)) {
      return (undefined4 *)((ulonglong)((uint3)((uint)uVar3 >> 8) & 0x2a04eb) << 8);
    }
                    /* WARNING: Call to offcut address within same function */
    func_0x00018140e48b();
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
    bVar11 = false;
    bVar12 = uVar1 == 0;
  } while (!bVar12);
  do {
    in_R11 = -((in_R11 ^ 0xffffffffffffffff) + 1);
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  do {
    in_R11 = (-in_R11 ^ 0xffffffffffffffff) + 1;
    param_1 = (undefined4 *)-(((ulonglong)param_1 ^ 0xffffffffffffffff) + 1);
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = (_UNK_1815797fc ^
          (_UNK_1815797f8 ^
          (_UNK_1815797f4 ^
          (_UNK_1815797f0 ^
          (_UNK_1815797ec ^
          (_UNK_1815797e8 ^
          (_UNK_1815797e4 ^
          (_UNK_1815797e0 ^ (_UNK_1815797dc ^ (_UNK_1815797d8 ^ uVar2) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181;
  uVar2 = uVar1 & 0x1f | 0x2a;
  if (((uVar2 * uVar2 * 0x195 ^ 0xffe18f95) & 0x4a0) == 0) {
    uVar2 = uVar1 & 0x4f;
    uVar2 = uVar2 * uVar2 * (uVar2 + 1) * (uVar2 + 1);
  }
  else {
    uVar2 = 0;
  }
  uVar4 = (longlong)(int)(uVar2 & 0x80000003) ^ 4;
  do {
                    /* WARNING: Bad instruction - Truncating control flow here */
    lVar10 = in_R11 + (longlong)param_1;
    lVar7 = (longlong)param_1 - lVar10;
    in_R11 = -lVar7;
    param_1 = (undefined4 *)(lVar10 + lVar7);
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = ((*(uint *)(&UNK_18157983c + uVar4) ^
           (*(uint *)(&UNK_181579838 + uVar4) ^
           (*(uint *)(&UNK_181579834 + uVar4) ^
           (*(uint *)(&UNK_181579830 + uVar4) ^
           (*(uint *)(&UNK_18157982c + uVar4) ^
           (*(uint *)(&UNK_181579828 + uVar4) ^
           (*(uint *)(&UNK_181579824 + uVar4) ^
           (*(uint *)(&UNK_181579820 + uVar4) ^
           (*(uint *)(&UNK_18157981c + uVar4) ^
           (*(uint *)(&UNK_181579818 + uVar4) ^
           (*(uint *)(&UNK_181579814 + uVar4) ^
           (*(uint *)(&UNK_181579810 + uVar4) ^
           (*(uint *)(&UNK_18157980c + uVar4) ^
           (*(uint *)(&UNK_181579808 + uVar4) ^
           (*(uint *)(&UNK_181579804 + uVar4) ^
           (*(uint *)(&UNK_181579800 + uVar4) ^
           (*(uint *)(&UNK_1815797fc + uVar4) ^ uVar1) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
          ^ *(uint *)(&UNK_181579840 + uVar4)) * 0x1000181 + 0xc88c2f69;
  uVar2 = (uVar1 >> 4 ^ uVar1) >> 1 & 3;
  uVar1 = (uVar2 << 4 | uVar2) * 2 ^ uVar1 ^ 0x806f7cb9;
  uVar2 = (uVar1 >> 0x17 ^ uVar1) >> 3 & 0x3f;
  *param_1 = 0;
  if (((uVar2 << 0x17 | uVar2) << 3 ^ uVar1) == 0x16e664b) {
    iVar8 = (int)uVar9;
    do {
      *(undefined **)(puVar6 + -8) = &UNK_18140ec78;
      lVar7 = (longlong)iVar8;
      func_0x00018140ecd2();
      *(undefined4 **)(puVar6 + -8) = param_1;
      *(ulonglong *)(puVar6 + -0x10) = uVar9;
      *(ulonglong *)(puVar6 + -0x18) = in_R11;
      lVar7 = -lVar7;
      in_R11 = *(ulonglong *)(puVar6 + lVar7 + 0x518);
      uVar9 = *(ulonglong *)(puVar6 + lVar7 + 0x520);
      param_1 = *(undefined4 **)(puVar6 + lVar7 + 0x528);
      puVar6 = puVar6 + lVar7 + 0x530;
      uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    return param_1;
  }
  puVar5 = (undefined4 *)thunk_FUN_1805a9280();
  return puVar5;
}



############ FUN_ 1813f0dc0 size=4852 ############

/* WARNING: Instruction at (ram,0x0001813f14a6) overlaps instruction at (ram,0x0001813f14a5)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001813f14f1) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813f0dc0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined1 *puVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  ulonglong uVar9;
  uint *puVar10;
  uint uVar11;
  uint uVar12;
  ulonglong uVar13;
  longlong *plVar14;
  longlong lVar15;
  undefined1 *puVar16;
  longlong lVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  int iVar24;
  ulonglong uVar25;
  uint7 uVar26;
  int *piVar27;
  int unaff_retaddr;
  undefined1 auStack_178 [32];
  ulonglong local_158;
  int local_150;
  uint local_14c;
  undefined8 local_148;
  undefined1 local_140;
  undefined1 local_13f [3];
  uint local_13c;
  undefined8 local_138;
  uint local_130;
  uint local_12c;
  uint local_128;
  uint local_124 [3];
  uint local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined4 local_100;
  undefined8 local_fc;
  undefined1 local_f4 [4];
  undefined4 local_f0;
  undefined8 local_ec;
  undefined1 local_e4 [4];
  undefined1 local_e0 [16];
  undefined1 local_d0 [16];
  undefined4 local_c0;
  undefined4 local_bc;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  code *local_a0;
  undefined8 local_98;
  int local_90;
  int local_8c;
  int local_88;
  uint local_84;
  undefined1 local_78 [24];
  uint local_60;
  uint local_5c;
  ulonglong local_50;
  
  local_98 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_178;
  uVar6 = (uint)&stack0x00000000;
  iVar5 = (uVar6 & 0x38ff) * (uVar6 & 0x38ff) + 1;
  uVar18 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar25 = 0;
  uVar18 = (int)(uVar18 - 7) >> 0x1f & uVar18;
  local_118 = ((int)(-uVar18 | uVar18) >> 0x1f) * -0xc181 ^ 0xccc1;
  uVar19 = ((uVar6 & 0x5cff) * (uVar6 & 0x5cff) + 1) % 7;
  uVar3 = (ulonglong)uVar19;
  iVar5 = (uVar6 & 0x47ff) * (uVar6 & 0x47ff) + 1;
  uVar18 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar18 = (int)(uVar18 - 7) >> 0x1f & uVar18;
  local_128 = ((int)((-uVar18 | uVar18) ^ (-uVar19 | uVar19)) >> 0x1f) + 0x80bdU ^ 0x803d;
  uVar13 = 0x180000000;
  local_138 = 0x100;
  local_158 = 0x181500cf4;
  local_148 = 0x181500df4;
  do {
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar18 != 0);
  uVar18 = uRam0000000181500d44 ^
           (uRam0000000181500d40 ^
           (uRam0000000181500d3c ^
           (_DAT_181500d38 ^
           (DAT_181500d34 ^
           (DAT_181500d30 ^
           (((((((((((((((uRam0000000181500cf4 ^ 0x811c9e53) * 0x10001d1 ^ uRam0000000181500cf8) *
                        0x10001d1 ^ uRam0000000181500cfc) * 0x10001d1 ^ uRam0000000181500d00) *
                      0x10001d1 ^ uRam0000000181500d04) * 0x10001d1 ^ uRam0000000181500d08) *
                    0x10001d1 ^ uRam0000000181500d0c) * 0x10001d1 ^ uRam0000000181500d10) *
                  0x10001d1 ^ uRam0000000181500d14) * 0x10001d1 ^ uRam0000000181500d18) * 0x10001d1
               ^ uRam0000000181500d1c) * 0x10001d1 ^ uRam0000000181500d20) * 0x10001d1 ^
             uRam0000000181500d24) * 0x10001d1 ^ uRam0000000181500d28) * 0x10001d1 ^
           uRam0000000181500d2c) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
           0x10001d1;
  local_110 = param_4;
  local_108 = param_1;
  do {
    uVar9 = 0x620c;
    FUN_1813ef98b(0x620c,uVar13);
    uVar13 = ~uVar13 + 1;
    if ((uVar9 & 0xd300) == 0) {
      uVar13 = (ulonglong)((int)uVar13 + 0x1e5ec717);
    }
    uVar13 = -uVar13;
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  do {
    local_124[1] = 0x5f10f491;
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  do {
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  uVar18 = uRam0000000181500df0 ^
           (uRam0000000181500dec ^
           (uRam0000000181500de8 ^
           (uRam0000000181500de4 ^
           (uRam0000000181500de0 ^
           (uRam0000000181500ddc ^
           (uRam0000000181500dd8 ^
           (uRam0000000181500dd4 ^
           (uRam0000000181500dd0 ^
           (uRam0000000181500dcc ^
           (uRam0000000181500dc8 ^
           (uRam0000000181500dc4 ^
           (uRam0000000181500dc0 ^
           (uRam0000000181500dbc ^
           (uRam0000000181500db8 ^
           (((((((((((((((((((((((((((uRam0000000181500d4c ^
                                     (uRam0000000181500d48 ^ uVar18 * 0x10001d1) * 0x10001d1) *
                                     0x10001d1 ^ uRam0000000181500d50) * 0x10001d1 ^
                                   uRam0000000181500d54) * 0x10001d1 ^ uRam0000000181500d58) *
                                  0x10001d1 ^ uRam0000000181500d5c) * 0x10001d1 ^
                                uRam0000000181500d60) * 0x10001d1 ^ uRam0000000181500d64) *
                               0x10001d1 ^ uRam0000000181500d68) * 0x10001d1 ^ uRam0000000181500d6c)
                             * 0x10001d1 ^ uRam0000000181500d70) * 0x10001d1 ^ uRam0000000181500d74)
                           * 0x10001d1 ^ uRam0000000181500d78) * 0x10001d1 ^ uRam0000000181500d7c) *
                         0x10001d1 ^ uRam0000000181500d80) * 0x10001d1 ^ uRam0000000181500d84) *
                       0x10001d1 ^ uRam0000000181500d88) * 0x10001d1 ^ uRam0000000181500d8c) *
                     0x10001d1 ^ uRam0000000181500d90) * 0x10001d1 ^ uRam0000000181500d94) *
                   0x10001d1 ^ uRam0000000181500d98) * 0x10001d1 ^ uRam0000000181500d9c) * 0x10001d1
                ^ uRam0000000181500da0) * 0x10001d1 ^ uRam0000000181500da4) * 0x10001d1 ^
              uRam0000000181500da8) * 0x10001d1 ^ uRam0000000181500dac) * 0x10001d1 ^
            uRam0000000181500db0) * 0x10001d1 ^ uRam0000000181500db4) * 0x10001d1) * 0x10001d1) *
           0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1)
           * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1;
  local_158 = 0x49861a09c5216378;
  local_148 = CONCAT44(local_148._4_4_,0xc5216378);
  do {
    uVar13 = 0x620c;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001813f1b52();
    if ((uVar13 & 0xf300) == 0) {
      uVar25 = uVar3;
    }
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  do {
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  do {
    local_c0 = 0x69;
    local_b8 = 0x1813f1547;
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  local_150 = 0x1238f5d;
  do {
    local_130 = 0x60cf57d6;
    local_bc = 0x18;
    local_b0 = 0x1813f1637;
    FUN_1813f2291();
    uVar19 = local_128;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (local_130 >> 5 | local_130 << 0x1b) + 0xf4107841;
  uVar6 = (uVar6 >> 4 | uVar6 * 0x10000000) & 0xd2d2d2d2 |
          (uVar6 * 0x10 | uVar6 >> 0x1c) & 0x2d2d2d2d;
  uVar6 = (uVar6 >> 7 | uVar6 << 0x19) + 0xe5fa4715;
  uVar6 = (uVar6 * 4 & 0xcccccccc | uVar6 >> 2 & 0x33333333) ^ 0xff2131ff;
  uVar11 = uVar6 >> 0xc | uVar6 << 0x14;
  lVar15 = local_150 + local_b8;
  lVar17 = ((longlong)(int)(uVar11 << 4 | (uVar6 & 0xfff) >> 8) & 0xffffffffa5a5a5a5U |
           (ulonglong)((uVar11 >> 4 | (uVar6 >> 0xc) << 0x1c) & 0x5a5a5a5a)) + local_b0;
  local_150 = (int)uVar25;
  *(longlong *)(lVar15 + 4) =
       *(longlong *)(lVar15 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(lVar17 + 4) >> 0xc) & 0x482407a8);
  do {
    uVar1 = rdtsc();
    uVar6 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20) * 2;
    uVar13 = (ulonglong)uVar6;
    uVar3 = uVar13 ^ ((ulonglong)(uVar6 >> 8) | uVar13 << 0x38);
    uVar13 = (uVar3 ^ (uVar3 << 7 | (uVar13 & 0xff) >> 1) + 0x1e6aba6b) * -0xffff + 0x5ee4fb5e;
    uVar13 = uVar13 >> 10 | uVar13 << 0x36;
    uVar13 = (uVar13 * 9 >> 0xf) + 0x67155a40 + uVar13 * 8;
    uVar3 = uVar13 >> 0xf;
    uVar13 = uVar3 | uVar13 << 0x31;
    uVar13 = uVar13 - ((uVar3 * 0x90000 | uVar13 * 9 >> 0x30) - 0x457302d9);
    uVar3 = uVar13 * 0x1000 | uVar13 >> 0x34;
    uVar3 = uVar3 ^ (uVar3 << 0x10 | (uVar13 & 0xfffffffffffff) >> 0x24) - 0x435ae871;
    uVar3 = uVar3 ^ (uVar3 << 9 | uVar3 >> 0x37) - 0x4ea67d1f;
    uVar6 = (uint)(uVar3 << 6) | (uint)(uVar3 >> 0x3a);
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  *(int *)(lVar15 + 8) = *(int *)(lVar15 + 8) + (uVar6 ^ 0xedebcaa7);
  *(int *)(lVar15 + 4) = *(int *)(lVar15 + 4) + (uVar6 ^ 0xbea79026);
  uVar13 = *(ulonglong *)(lVar15 + 4);
  uVar13 = ((uVar13 << 8 | uVar13 >> 0x38) & 0x817e817e817e817e |
           (uVar13 >> 8 | uVar13 << 0x38) & 0x7e817e817e817e81) ^ 0xf1afd28345cd0ff6;
  uVar13 = uVar13 >> 0x1d | uVar13 << 0x23;
  uVar3 = (uVar13 & 0x3333333333333333) << 2 | uVar13 >> 2 & 0x3333333333333333;
  uVar13 = (ulonglong)((uint)((uVar3 >> 0x1a ^ uVar3) >> 6) & 0x3fffff);
  uVar13 = (uVar3 ^ (uVar13 << 0x1a | uVar13) << 6) + 0xfad3402216662f6e;
  uVar13 = (uVar13 * 0x10000 | uVar13 >> 0x30) & 0xa92556daa92556da |
           (uVar13 >> 0x10 | uVar13 << 0x30) & 0x56daa92556daa925;
  uVar13 = (uVar13 << 8 | uVar13 >> 0x38) & 0xfb04fb04fb04fb04 |
           (uVar13 >> 8 | uVar13 << 0x38) & 0x4fb04fb04fb04fb;
  uVar6 = (uint)((uVar13 >> 0x1b ^ uVar13) >> 2) & 0xffffff;
  uVar13 = ((ulonglong)uVar6 << 0x1b | (ulonglong)uVar6) << 2 ^ uVar13;
  *(ulonglong *)(lVar15 + 4) = uVar13;
  plVar14 = (longlong *)(lVar17 + 4);
  *plVar14 = *plVar14 + (ulonglong)((uint)(uVar13 >> 6) & 0xd204bc8);
  local_14c = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x11) & 0x7fffffff;
  local_138 = CONCAT44(local_138._4_4_,(int)(*(ulonglong *)(lVar15 + 4) >> 0x14)) ^ 0x75369b88;
  local_158 = *(ulonglong *)(lVar15 + 4) ^ 0xbcf88e89ab5310b9;
  uVar23 = ~(uVar18 * 0x10001d1 ^ 0xcd3f930c);
  uVar18 = (uint)local_158 ^ (uint)local_138;
  uVar11 = uVar18 & 0x2bfd4af1 ^ (uint)local_138;
  uVar18 = uVar18 & 0xd402b50e ^ (uint)local_138 ^ uVar11;
  uVar12 = uVar18 & 0xf0f0f0f0 ^ uVar11;
  uVar11 = uVar18 & 0xf0f0f0f ^ uVar11;
  uVar18 = (uVar12 >> 6 ^ uVar12) >> 2 & 3;
  uVar6 = (uVar11 >> 0x16 ^ uVar11) >> 5 & 3;
  uVar22 = (uint)(local_158 >> 0x20);
  uVar7 = (uVar22 >> 0x14 ^ uVar22) >> 3 & 0x1ff;
  uVar18 = (uVar18 << 6 | uVar18) << 2 ^ uVar12 ^ 0x2ea6b862;
  uVar12 = ~(uVar18 & 0x74575030 ^ 0x2ea6b862);
  uVar21 = ~(uVar18 & 0x8ba8afcf ^ 0x2ea6b862);
  uVar20 = ~((uVar6 << 0x16 | uVar6) << 5 ^ uVar11);
  uVar18 = ~((uVar7 << 0x14 | uVar7) << 3 ^ uVar22);
  uVar11 = (uVar12 << 2 | uVar12 >> 0x1e) & 0x99999999 | (uVar12 >> 2 | uVar12 << 0x1e) & 0x66666666
  ;
  uVar18 = (uVar18 >> 2 | uVar18 << 0x1e) & 0x99999999 | (uVar18 << 2 | uVar18 >> 0x1e) & 0x66666666
  ;
  uVar6 = uVar18 << 5 | uVar18 >> 0x1b;
  uVar18 = uVar6 ^ (uVar11 << 0x15 | uVar11 >> 0xb);
  uVar22 = (uVar21 & 0xf0f0f0) << 4 | uVar21 >> 0x1c;
  uVar3 = (ulonglong)uVar22;
  uVar12 = (uVar20 << 8 | uVar20 >> 0x18) & 0x22dd22dd;
  uVar7 = (uVar20 >> 8 | uVar20 << 0x18) & 0xdd22dd22 | uVar12;
  uVar11 = uVar18 & 0xaaaaaaaa ^ uVar6 ^ 0x724d0b9e;
  uVar13 = (ulonglong)uVar11;
  piVar27 = (int *)register0x00000020;
  do {
    uVar1 = rdtsc();
    local_124[2] = (int)uVar1 - (int)((ulonglong)uVar1 >> 0x20);
    piVar27 = (int *)((((ulonglong)piVar27 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
    uVar9 = ((ulonglong)local_124[2] ^ (ulonglong)(local_124[2] >> 0xb) + 0x1fd2d4c6) * 0x401 -
            0x72522624;
    uVar9 = uVar9 ^ uVar9 * 0xa000 + 0x6b704cdd;
    uVar4 = uVar9 >> 0xc | uVar9 << 0x34;
    uVar4 = uVar4 ^ (uVar4 << 0xb | (uVar9 & 0xfff) >> 1) - 0x77068fd;
    uVar9 = uVar4 >> 0xd | uVar4 << 0x33;
    lVar15 = uVar9 - (uVar9 >> 0xf);
    iVar24 = uVar12 + uVar23;
    iVar5 = uVar23 - iVar24;
    uVar12 = -iVar5;
    uVar23 = iVar24 + iVar5;
    uVar8 = (*piVar27 + 1) * *piVar27 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_12c = ((int)lVar15 * 0x200 | (uint)((ulonglong)lVar15 >> 0x37)) >> 1 ^ local_14c;
  local_130 = local_150;
  if (local_12c < 0xd504) {
    do {
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    local_13c = 0xade2f2ae;
    local_90 = (uVar18 & 0x55555555 ^ uVar6) + 0x26edbe0b;
    local_8c = ((uVar21 >> 4 & 0xf0f0f0f0 | uVar21 << 0x1c | uVar22) >> 2 | (uVar21 >> 0x1c) << 0x1e
               ) + 0xd1b1c41;
    local_88 = (uVar7 << 2 | (uVar20 & 0xff) >> 6) + 0xd1de1f70;
    local_84 = uVar11;
    do {
      plVar14 = &local_a8;
      puVar10 = local_124;
                    /* WARNING: Call to offcut address within same function */
      func_0x0001813f1e7a();
      *puVar10 = 0x2cc9d49c;
      uVar3 = 0;
      *plVar14 = 0x1813f1db3;
      uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar18 < 0) {
        uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar18 != 0);
    uVar18 = (local_124[0] >> 0xf | local_124[0] << 0x11) + 0x41124142;
    uVar18 = (uVar18 >> 0x1e | uVar18 * 4) ^ 0xe098d181;
    local_124[0] = (uVar18 >> 0x18 | uVar18 << 8) ^ 0x4d3f8a44;
    (*(code *)((int)local_124[0] + local_a8))(&local_90,local_78);
    iVar5 = 7;
    do {
      uVar11 = (local_5c ^ local_60) & 0x4efd1df ^ local_60;
      uVar18 = (local_5c ^ local_60) & 0xfb102e20 ^ local_60 ^ uVar11;
      uVar6 = ~(uVar18 & 0x54d3484b ^ uVar11);
      uVar11 = uVar6 ^ ~(uVar18 & 0xab2cb7b4 ^ uVar11);
      uVar18 = uVar11 & 0x7b746601 ^ uVar6;
      uVar6 = uVar11 & 0x848b99fe ^ uVar6;
      uVar6 = ((uVar6 << 4 | uVar6 >> 0x1c) & 0xc3c3c3c3 | (uVar6 >> 4 | uVar6 << 0x1c) & 0x3c3c3c3c
              ) + 0x36fae1ff;
      uVar18 = ((uVar18 << 0x10 | uVar18 >> 0x10) & 0x96b5694a |
               (uVar18 >> 0x10 | uVar18 << 0x10) & 0x694a96b5) + 0xf365dac8 ^ uVar6;
      uVar11 = uVar18 & 0xa7071cb4 ^ uVar6;
      uVar6 = uVar18 & 0x58f8e34b ^ uVar6;
      local_60 = (uVar11 << 0x18 | uVar11 >> 8) + 0xc3118cdd;
      local_5c = (uVar6 >> 6 | uVar6 << 0x1a) ^ 0x3825b93f;
      iVar5 = iVar5 + -1;
    } while (-1 < iVar5);
    uVar18 = ~(~(((local_60 ^ 0xbdd8dfd9) << 0x15 | (local_60 ^ 0xbdd8dfd9) >> 0xb) + 0x826d94) ^
              0x40e78bde) + 0xe3af4750;
    if (((uVar18 >> 0x1e | uVar18 * 4) + 0x94bef1a6 ^ local_13c) + local_5c != (uint)local_138) {
      do {
        local_a0 = FUN_180bc28c0;
        uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar18 < 0) {
          uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar18 != 0);
      FUN_180bc28c0();
      do {
        func_0x0001813f24ea();
        FUN_1813f0331();
        uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar18 < 0) {
          uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar18 != 0);
    }
  }
  uVar9 = (ulonglong)uVar19;
  uVar26 = (uint7)(uVar25 >> 8);
  if ((int)CONCAT71(uVar26,uVar23 == (uint)local_148) == (int)(((ulonglong)uVar26 & 0xffffff) << 7))
  {
    local_100 = param_2;
    local_fc = param_3;
    FUN_18056a290(local_e0,&local_140);
    FUN_18056d400(local_e0,&local_100,local_f4);
    FUN_1814139d0(local_108,local_110);
    FUN_180568e40(local_e0);
    FUN_180568e30(local_e0);
    thunk_FUN_1805a9280();
    return;
  }
  local_f0 = param_2;
  local_ec = param_3;
  FUN_18056a290(local_d0,local_13f);
  FUN_18056d400(local_d0,&local_f0,local_e4);
  FUN_1814139d0(local_108,local_110,local_d0);
  FUN_180568e40(local_d0);
  FUN_180568e30(local_d0);
  puVar2 = auStack_178;
  do {
    puVar16 = puVar2;
    *(undefined8 *)(puVar16 + -8) = 0x1813f2168;
    lVar15 = (longlong)(int)uVar19;
    FUN_1813f40ca();
    *(ulonglong *)(puVar16 + -8) = uVar3;
    *(ulonglong *)(puVar16 + -0x10) = uVar9;
    *(ulonglong *)(puVar16 + -0x18) = uVar13;
    lVar15 = -lVar15;
    uVar13 = *(ulonglong *)(puVar16 + lVar15 + 0x68);
    uVar9 = *(ulonglong *)(puVar16 + lVar15 + 0x70);
    uVar3 = *(ulonglong *)(puVar16 + lVar15 + 0x78);
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar16 + lVar15 + 0x80;
  } while (uVar18 != 0);
  *(undefined **)(puVar16 + lVar15 + 0x78) = &UNK_1813f2225;
}



############ FUN_ 1812ea010 size=187 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812ea010(longlong param_1,undefined8 *param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  bool bVar3;
  undefined1 auStack_58 [32];
  undefined8 *local_38;
  undefined4 local_30;
  undefined8 local_28;
  longlong *local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_28 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_30 = 0;
  local_38 = param_2;
  puVar2 = (undefined8 *)
           (**(code **)(**(longlong **)(param_1 + 0x198) + 8))
                     (*(longlong **)(param_1 + 0x198),&local_20);
  (**(code **)(*(longlong *)*puVar2 + 0x20))((longlong *)*puVar2,&local_38,puVar2 + 1);
  (**(code **)(*local_20 + 0xb0))(local_20,local_18);
  *param_2 = local_38;
  local_38 = (undefined8 *)&DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
}



############ FUN_ 1813f22a0 size=278 ############

undefined8 * FUN_1813f22a0(longlong param_1,undefined8 *param_2,int param_3,ulonglong param_4)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 local_res8;
  
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  puVar2 = *(undefined8 **)(param_1 + 0x20);
  cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
  puVar4 = puVar2;
  puVar3 = (undefined8 *)puVar2[1];
  while (cVar1 == '\0') {
    if ((ulonglong)puVar3[4] < param_4) {
      puVar5 = (undefined8 *)puVar3[2];
      puVar3 = puVar4;
    }
    else {
      puVar5 = (undefined8 *)*puVar3;
    }
    puVar4 = puVar3;
    puVar3 = puVar5;
    cVar1 = *(char *)((longlong)puVar5 + 0x19);
  }
  if ((puVar4 == puVar2) || (param_4 < (ulonglong)puVar4[4])) {
    puVar4 = puVar2;
  }
  if (puVar4 != puVar2) {
    puVar2 = (undefined8 *)puVar4[5];
    cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
    puVar4 = puVar2;
    puVar3 = (undefined8 *)puVar2[1];
    while (cVar1 == '\0') {
      if (*(int *)((longlong)puVar3 + 0x1c) < param_3) {
        puVar5 = (undefined8 *)puVar3[2];
        puVar3 = puVar4;
      }
      else {
        puVar5 = (undefined8 *)*puVar3;
      }
      puVar4 = puVar3;
      puVar3 = puVar5;
      cVar1 = *(char *)((longlong)puVar5 + 0x19);
    }
    if ((puVar4 == puVar2) || (param_3 < *(int *)((longlong)puVar4 + 0x1c))) {
      puVar4 = puVar2;
    }
    if (puVar4 != puVar2) {
      *param_2 = puVar4[4];
      LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
      return param_2;
    }
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  if (param_4 == 0) {
    FUN_1813efd60(param_2,param_3);
  }
  else {
    FUN_1813f22a0(param_1,&local_res8,param_3,*(undefined8 *)(param_4 + 0x18),1);
    *param_2 = local_res8;
  }
  return param_2;
}



############ FUN_ 180529fe0 size=2051 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined8 param_2,int param_3,int param_4)

{
  uint *puVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  float fVar4;
  uint uVar5;
  longlong lVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  undefined8 *puVar10;
  float fVar11;
  double dVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0x2404dc);
  uVar5 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar5 & 1) == 0) {
    uVar5 = *(int *)(param_1 + 0x2404e0) + 0x3cdcaU & 0x8000007f;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xffffff80) + 1;
    }
    *(uint *)(param_1 + 0x2404e0) = uVar5;
    fVar4 = DAT_1824c3c58;
    fVar17 = *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar5 * 4);
    fVar15 = (float)DAT_18262b704;
    fVar11 = *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                       (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4);
    fVar13 = (float)DAT_18262b5c8;
    uVar5 = *(int *)(param_1 + 0x2404e0) + 0x140236U & 0x8000007f;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xffffff80) + 1;
    }
    *(uint *)(param_1 + 0x2404e0) = uVar5;
    iVar8 = (int)(fVar13 * fVar11 * fVar15 * fVar17 + fVar4) * DAT_18262b700 -
            (int)((float)DAT_18262b5c8 *
                  *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                            (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                  (float)DAT_18262b704 *
                  *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar5 * 4) + fVar4)
            * DAT_18262b700;
    uVar5 = *(int *)(param_1 + 0x2404e0) + 0x10d56U & 0x8000007f;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xffffff80) + 1;
    }
    *(uint *)(param_1 + 0x2404e0) = uVar5;
    iVar7 = (int)((float)DAT_18262b5c8 *
                  *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                            (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                  (float)DAT_18262b704 *
                  *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar5 * 4) + fVar4)
            * DAT_18262b700;
    uVar5 = *(int *)(param_1 + 0x2404e0) + 0xdf6b6U & 0x8000007f;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xffffff80) + 1;
    }
    *(uint *)(param_1 + 0x2404e0) = uVar5;
    fVar17 = (float)((int)((float)DAT_18262b5c8 *
                           *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                                     (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                           (float)DAT_18262b704 *
                           *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar5 * 4)
                          + fVar4) * DAT_18262b700);
    uVar5 = *(int *)(param_1 + 0x2404e0) + 0xa8c5eU & 0x8000007f;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xffffff80) + 1;
    }
    *(uint *)(param_1 + 0x2404e0) = uVar5;
    fVar15 = DAT_1824c41e0;
    fVar11 = *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar5 * 4);
    fVar16 = (float)DAT_18262b704;
    fVar13 = *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                       (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4);
    fVar14 = (float)DAT_18262b5c8;
    uVar5 = *(int *)(param_1 + 0x2404e0) + 0x72916U & 0x8000007f;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xffffff80) + 1;
    }
    *(uint *)(param_1 + 0x2404e0) = uVar5;
    lVar6 = (longlong)param_4;
    iVar7 = iVar7 + param_3 / ((int)(fVar14 * fVar13 * fVar16 * fVar11 + fVar4) * DAT_18262b700 +
                              (int)((float)DAT_18262b5c8 *
                                    *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                                              (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                                    (float)DAT_18262b704 *
                                    *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                                              (longlong)(int)uVar5 * 4) + fVar4) * DAT_18262b700);
    if (1 < param_4) {
      puVar10 = (undefined8 *)(param_1 + 0x540678 + (longlong)iVar8 * 0x10);
      FUN_18052dbc0(*(undefined8 *)(param_1 + 0x5406f8),*puVar10,iVar7);
      if (1 < lVar6) {
        uVar2 = *(undefined8 *)(param_1 + 0x540688);
        uVar3 = *(undefined8 *)(param_1 + 0x5406f8);
        iVar8 = __std_type_info_compare(0x182650db8,0x182650db8);
        if (iVar8 != 0) {
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0(uVar3,uVar2,uVar3,iVar7);
        }
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0();
      }
      FUN_18052d920(*(undefined8 *)(param_1 + 0x5406f8),fVar17 / (float)param_4,iVar7);
      fVar11 = powf(*(float *)(param_1 + 0x2c),fVar15);
      if (iVar8 < lVar6) {
        uVar2 = *puVar10;
        iVar8 = __std_type_info_compare(0x182650db8,0x182650db8);
        if (iVar8 != 0) {
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0((double)(fVar17 - fVar11),uVar2,iVar7);
        }
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0();
      }
    }
    lVar9 = (longlong)iVar8;
    if (lVar9 < lVar6) {
      fVar17 = (fVar17 / (float)*(int *)(param_1 + 0x1a0)) * *(float *)(param_1 + 0x540870);
      if (*(char *)(param_1 + 0x5408b8) != '\0') {
        dVar12 = exp(0.0);
        fVar17 = (float)(int)dVar12 * fVar17;
      }
      fVar11 = *(float *)(param_1 + 0x54088c);
      uVar2 = *(undefined8 *)(param_1 + 0x540678 + lVar9 * 0x10);
      iVar8 = __std_type_info_compare(0x182650db8,0x182650db8);
      if (iVar8 != 0) {
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0((double)(fVar17 * fVar11),uVar2,iVar7);
      }
                    /* WARNING: Subroutine does not return */
      thunk_FUN_181ba94b0();
    }
    if (*(char *)(param_1 + 0x2404bc) != '\0') {
      LOCK();
      *(undefined1 *)(param_1 + 0x2404bd) = 1;
      UNLOCK();
      LOCK();
      puVar1 = (uint *)(param_1 + 0x2404b8);
      uVar5 = *puVar1;
      *puVar1 = *puVar1 | 1;
      UNLOCK();
      if ((uVar5 & 1) == 0) {
        if (0 < *(int *)(param_1 + 0x30)) {
          if (*(char *)(param_1 + 0x5408af) == '\0') {
            uVar2 = *(undefined8 *)(param_1 + 0x540728);
            uVar3 = *(undefined8 *)(param_1 + 0x540678);
            iVar8 = __std_type_info_compare(0x182650db8,0x182650db8);
            if (iVar8 != 0) {
                    /* WARNING: Subroutine does not return */
              thunk_FUN_181ba94b0(uVar3,uVar2,uVar2,iVar7);
            }
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0();
          }
          iVar8 = __std_type_info_compare(0x182650db8,0x182650db8);
          if (iVar8 != 0) {
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0();
          }
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0();
        }
        if (*(char *)(param_1 + 0x5408af) != '\0') {
          LOCK();
          *(undefined1 *)(param_1 + 0x5408af) = 0;
          UNLOCK();
        }
        LOCK();
        *(undefined4 *)(param_1 + 0x2404b8) = 0;
        UNLOCK();
      }
    }
    fVar17 = expf(DAT_1824c4704);
    fVar17 = *(float *)(param_1 + 0x540874) - fVar17;
    if ((*(char *)(param_1 + 0x540891) == '\0') && (lVar9 < lVar6)) {
      uVar2 = *(undefined8 *)(param_1 + 0x540678 + lVar9 * 0x10);
      if (*(char *)(param_1 + 0x540890) == '\0') {
        fVar17 = fVar17 * *(float *)(param_1 + 0x540888);
        iVar8 = __std_type_info_compare(0x182650db8,0x182650db8);
        if (iVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0();
        }
      }
      else {
        iVar8 = __std_type_info_compare();
        if (iVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0();
        }
      }
                    /* WARNING: Subroutine does not return */
      thunk_FUN_181ba94b0((double)fVar17,uVar2,iVar7);
    }
    LOCK();
    *(undefined4 *)(param_1 + 0x2404dc) = 0;
    UNLOCK();
  }
  return;
}



############ FUN_ 180563440 size=863 ############

void FUN_180563440(longlong param_1)

{
  float *pfVar1;
  longlong *plVar2;
  longlong lVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  uint uVar9;
  double *pdVar10;
  longlong lVar11;
  int iVar12;
  longlong lVar13;
  undefined8 uVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float local_res8 [2];
  float local_res10 [2];
  float local_res18 [2];
  longlong local_res20;
  
  if (*(longlong *)(param_1 + 0xa0) - *(longlong *)(param_1 + 0x98) >> 3 == 0) {
    FUN_18056c640((longlong *)(param_1 + 0x98),0x800);
  }
  fVar8 = DAT_1824c4680;
  fVar7 = DAT_1824c41e0;
  fVar6 = DAT_1824c3ea4;
  fVar5 = DAT_1824c3d8c;
  fVar4 = DAT_1824c3c54;
  if (*(char *)(param_1 + 0x90) != '\0') {
    iVar12 = 0;
    pdVar10 = (double *)(param_1 + 0x198);
    do {
      fVar15 = (float)iVar12 * fVar4;
      pfVar1 = *(float **)(param_1 + 0x188);
      if (0.0 <= fVar15) {
        fVar16 = fVar6;
        if (fVar15 <= fVar6) {
          fVar16 = fVar15;
        }
      }
      else {
        fVar16 = 0.0;
      }
      if (*(longlong *)(pfVar1 + 0x14) == 0) {
        if (*(char *)(pfVar1 + 4) == '\0') {
          fVar15 = pfVar1[3];
          if ((fVar15 != fVar6) && (0.0 < fVar16)) {
            fVar16 = logf(fVar16);
            fVar16 = expf(fVar16 / fVar15);
          }
          fVar15 = pfVar1[1] - *pfVar1;
        }
        else {
          fVar16 = fVar16 * fVar7 - fVar6;
          fVar15 = pfVar1[3];
          if ((fVar15 != fVar6) && (fVar16 != 0.0)) {
            fVar17 = fVar6;
            if (fVar16 < 0.0) {
              fVar17 = fVar8;
            }
            fVar16 = logf((float)(double)CONCAT44((uint)((ulonglong)(double)fVar16 >> 0x20) &
                                                  DAT_1824c4f10._4_4_,
                                                  SUB84((double)fVar16,0) & (uint)DAT_1824c4f10));
            fVar16 = expf(fVar16 / fVar15);
            fVar16 = fVar16 * fVar17;
          }
          fVar15 = (pfVar1[1] - *pfVar1) * fVar5;
          fVar16 = fVar16 + fVar6;
        }
        fVar15 = fVar15 * fVar16 + *pfVar1;
      }
      else {
        local_res10[0] = pfVar1[1];
        local_res18[0] = *pfVar1;
        plVar2 = *(longlong **)(pfVar1 + 0x14);
        local_res8[0] = fVar16;
        if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar15 = (float)(**(code **)(*plVar2 + 0x10))(plVar2,local_res18,local_res10,local_res8);
      }
      *pdVar10 = (double)fVar15;
      iVar12 = iVar12 + 1;
      pdVar10 = pdVar10 + 1;
    } while (iVar12 < 0x400);
    uVar9 = 0;
    lVar13 = 0;
    lVar11 = param_1 + 0x4198;
    do {
      lVar3 = *(longlong *)(param_1 + 0x178);
      if (uVar9 < *(uint *)(lVar3 + 0x84)) {
        uVar14 = *(undefined8 *)(lVar13 + *(longlong *)(lVar3 + 0x78));
      }
      else {
        uVar14 = 0;
      }
      FUN_18056e3e0(lVar3 + 0x18,lVar11,param_1 + 0x198,uVar14);
      uVar9 = uVar9 + 1;
      lVar11 = lVar11 + 0x2000;
      lVar13 = lVar13 + 8;
    } while ((int)uVar9 < 6);
    FUN_180563a60(param_1);
    local_res20 = *(longlong *)(param_1 + 0x178) + 0x2400d8;
    iVar12 = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x170) + 0x168) + 0x30);
    if (2 < iVar12) {
      iVar12 = 2;
    }
    if (0 < iVar12) {
      iVar12 = __std_type_info_compare(0x182650a88,0x182650db8);
      if (iVar12 == 0) {
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0();
      }
                    /* WARNING: Subroutine does not return */
      thunk_FUN_181ba94b0();
    }
  }
  return;
}



############ FUN_ 180563ce0 size=697 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180563ce0(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 local_28;
  undefined8 local_18;
  
  uVar5 = _UNK_1824c4798;
  uVar4 = _DAT_1824c4790;
  uVar3 = _UNK_1824c4788;
  uVar2 = _DAT_1824c4780;
  if ((*(longlong *)(param_1 + 0xa0) - *(longlong *)(param_1 + 0x98) & 0xfffffffffffffff8U) != 0) {
    lVar8 = 0x155;
    lVar9 = 0x155;
    lVar6 = 0x30;
    lVar7 = 0xc;
    do {
      lVar6 = lVar6 + 0x60;
      *(undefined4 *)(lVar7 + -0xc + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x90 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x90 + lVar6);
      *puVar1 = uVar2;
      puVar1[1] = uVar3;
      *(undefined4 *)(lVar7 + -8 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x80 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x80 + lVar6);
      *puVar1 = uVar4;
      puVar1[1] = uVar5;
      *(undefined4 *)(lVar7 + -4 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x70 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x70 + lVar6);
      *puVar1 = uVar2;
      puVar1[1] = uVar3;
      *(undefined4 *)(lVar7 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x60 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x60 + lVar6);
      *puVar1 = uVar4;
      puVar1[1] = uVar5;
      *(undefined4 *)(lVar7 + 4 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x50 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x50 + lVar6);
      *puVar1 = uVar2;
      puVar1[1] = uVar3;
      *(undefined4 *)(lVar7 + 8 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x40 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x40 + lVar6);
      *puVar1 = uVar4;
      puVar1[1] = uVar5;
      lVar9 = lVar9 + -1;
      lVar7 = lVar7 + 0x18;
    } while (lVar9 != 0);
    local_28 = CONCAT44(0x3f800000,(int)uVar2);
    local_18 = CONCAT44(0x3f800000,(int)uVar4);
    lVar6 = 0x8010;
    lVar7 = 0x2004;
    do {
      lVar9 = lVar6 + 0x60;
      *(undefined4 *)(lVar7 + -0xc + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x90 + lVar9);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x90 + lVar9);
      *puVar1 = local_28;
      puVar1[1] = uVar3;
      *(undefined4 *)(*(longlong *)(param_1 + 0x28) + -0x20 + lVar7 + 0x18) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x80 + lVar9);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x80 + lVar9);
      *puVar1 = local_18;
      puVar1[1] = uVar5;
      *(undefined4 *)(lVar7 + -4 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x70 + lVar9);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x70 + lVar9);
      *puVar1 = local_28;
      puVar1[1] = uVar3;
      *(undefined4 *)(lVar7 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(lVar6 + *(longlong *)(param_1 + 0x40));
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(lVar6 + *(longlong *)(param_1 + 0x58));
      *puVar1 = local_18;
      puVar1[1] = uVar5;
      *(undefined4 *)(lVar7 + 4 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x50 + lVar9);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x50 + lVar9);
      *puVar1 = local_28;
      puVar1[1] = uVar3;
      *(undefined4 *)(lVar7 + 8 + *(longlong *)(param_1 + 0x28)) = 0x40400000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x40 + lVar9);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x40 + lVar9);
      *puVar1 = local_18;
      puVar1[1] = uVar5;
      lVar8 = lVar8 + -1;
      lVar6 = lVar9;
      lVar7 = lVar7 + 0x18;
    } while (lVar8 != 0);
    lVar6 = 0xffd0;
    lVar7 = 0x3ff4;
    do {
      lVar6 = lVar6 + 0x30;
      *(undefined4 *)(*(longlong *)(param_1 + 0x28) + -4 + lVar7) = 0x40e00000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x40 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x40 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      *(undefined4 *)(lVar7 + *(longlong *)(param_1 + 0x28)) = 0x40e00000;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x30 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x30 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      *(undefined4 *)(*(longlong *)(param_1 + 0x28) + 4 + lVar7) = 0x40e00000;
      lVar7 = lVar7 + 0xc;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x40) + -0x20 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + -0x20 + lVar6);
      *puVar1 = 0;
      puVar1[1] = 0;
    } while (lVar7 < 0x4ff0);
    *(undefined1 *)(param_1 + 0x91) = 1;
  }
  return;
}



############ FUN_ 18056e3e0 size=196 ############

void FUN_18056e3e0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  float fVar1;
  double dVar2;
  int iVar3;
  longlong in_stack_00000038;
  
  iVar3 = *(int *)(param_1 + 0x240080);
  fVar1 = *(float *)(param_1 + 0x24);
  __std_type_info_compare(0x182650a88,0x182650db8);
  dVar2 = DAT_1824c4248 / (double)((float)iVar3 * fVar1);
  iVar3 = __std_type_info_compare(0x182650a88,0x182650db8);
  if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_3,(float)dVar2);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_3,SUB84(dVar2,0),in_stack_00000038 + 0x10000,0x400);
}



############ FUN_ 18052d920 size=104 ############

void FUN_18052d920(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_2);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0((double)(float)param_2,param_1,param_3);
}



############ FUN_ 18052da00 size=85 ############

void FUN_18052da00(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_2,param_3);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,(double)(float)param_3,param_1,param_4);
}



############ FUN_ 180535880 size=283 ############

/* WARNING: Removing unreachable block (ram,0x000180535987) */
/* WARNING: Removing unreachable block (ram,0x0001805359d3) */
/* WARNING: Removing unreachable block (ram,0x00018053598d) */

void FUN_180535880(undefined8 param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4,
                  undefined4 param_5)

{
  double *pdVar1;
  double *pdVar2;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  float local_a0;
  float local_9c;
  float local_98;
  float local_90;
  float local_8c;
  float local_88;
  ulonglong local_80;
  
  local_80 = DAT_182615970 ^ (ulonglong)auStack_c8;
  pdVar1 = (double *)*param_3;
  pdVar2 = (double *)param_3[1];
  local_8c = (float)pdVar2[1];
  local_9c = (float)pdVar1[1];
  local_88 = (float)pdVar2[2];
  local_a0 = (float)*pdVar1;
  local_90 = (float)*pdVar2;
  local_98 = (float)pdVar1[2];
  local_a8 = param_4;
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(local_a0,param_2,param_5);
}



############ FUN_ 180536f90 size=249 ############

/* WARNING: Removing unreachable block (ram,0x000180537079) */
/* WARNING: Removing unreachable block (ram,0x0001805370c8) */
/* WARNING: Removing unreachable block (ram,0x00018053707f) */

void FUN_180536f90(undefined8 param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4,
                  undefined4 param_5)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined1 auStack_f8 [32];
  undefined8 local_d8;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined8 local_a0;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  ulonglong local_88;
  
  local_88 = DAT_182615970 ^ (ulonglong)auStack_f8;
  puVar1 = (undefined8 *)*param_3;
  puVar2 = (undefined8 *)param_3[1];
  local_b0 = *(undefined4 *)(puVar1 + 1);
  uStack_ac = *(undefined4 *)((longlong)puVar1 + 0xc);
  uStack_a8 = *(undefined4 *)(puVar1 + 2);
  uStack_a4 = *(undefined4 *)((longlong)puVar1 + 0x14);
  local_98 = *(undefined4 *)(puVar2 + 1);
  uStack_94 = *(undefined4 *)((longlong)puVar2 + 0xc);
  uStack_90 = *(undefined4 *)(puVar2 + 2);
  uStack_8c = *(undefined4 *)((longlong)puVar2 + 0x14);
  local_c8 = *puVar1;
  local_a0 = *puVar2;
  uStack_c0 = 0;
  local_d8 = param_4;
  local_b8 = local_c8;
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(&local_c8,param_2,param_5);
}



############ FUN_ 180530d30 size=701 ############

void FUN_180530d30(longlong param_1)

{
  double dVar1;
  float _Y;
  float fVar2;
  double dVar3;
  float fVar4;
  int iVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  float fVar8;
  double dVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  uint uVar13;
  uint uVar14;
  
  fVar4 = DAT_1824c4334;
  dVar3 = DAT_1824c4140;
  fVar2 = DAT_1824c3ea4;
  _Y = DAT_1824c3d3c;
  iVar5 = *(int *)(param_1 + 100) / 2 + 1;
  fVar11 = DAT_1824c45b4 / (*(float *)(param_1 + 0x24) * DAT_1824c3d8c);
  fVar12 = DAT_1824c4334;
  if (*(char *)(param_1 + 0x5408b8) != '\0') {
    fVar12 = DAT_1824c3ea4;
  }
  uVar6 = 0;
  if (0 < iVar5) {
    uVar13 = (uint)DAT_1824c4f10;
    uVar14 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
    dVar1 = (double)((*(float *)(param_1 + 0x24) / (float)*(int *)(param_1 + 0x1a0)) *
                    (float)*(int *)(param_1 + 0x1ac)) * DAT_1824c3e30;
    uVar7 = uVar6;
    do {
      fVar8 = powf((fVar11 * (float)iVar5) / ((float)(int)uVar7 + fVar2),_Y);
      fVar10 = *(float *)(param_1 + 0x540880) * _Y * fVar8 * fVar12;
      dVar9 = (double)(fVar2 / (fVar10 / (*(float *)(param_1 + 0x540880) * fVar4) + fVar2));
      dVar9 = (double)fmax((double)((float)(double)CONCAT44((uint)((ulonglong)dVar9 >> 0x20) &
                                                            uVar14,SUB84(dVar9,0) & uVar13) * fVar10
                                   ));
      dVar9 = pow(DAT_1824c3f70,dVar3 / (dVar9 * dVar1));
      *(float *)(*(longlong *)(param_1 + 0x5406b8) + uVar6 * 4) = (float)dVar9;
      *(float *)(*(longlong *)(param_1 + 0x5406c8) + uVar6 * 4) = (float)(dVar3 - dVar9);
      fVar8 = *(float *)(param_1 + 0x540884) * _Y * fVar8 * fVar12;
      dVar9 = (double)(fVar2 / (fVar8 / *(float *)(param_1 + 0x540884) + fVar2));
      dVar9 = (double)fmax((double)((float)(double)CONCAT44((uint)((ulonglong)dVar9 >> 0x20) &
                                                            uVar14,SUB84(dVar9,0) & uVar13) * fVar8)
                          );
      dVar9 = pow(DAT_1824c3f70,dVar3 / (dVar9 * dVar1));
      uVar7 = (ulonglong)((int)uVar7 + 1);
      *(float *)(*(longlong *)(param_1 + 0x5406d8) + uVar6 * 4) = (float)dVar9;
      *(float *)(*(longlong *)(param_1 + 0x5406e8) + uVar6 * 4) = (float)(dVar3 - dVar9);
      uVar6 = uVar6 + 1;
    } while ((longlong)uVar6 < (longlong)iVar5);
  }
  return;
}



############ FUN_ 1805316e0 size=6238 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805316e0(longlong param_1,uint param_2)

{
  float fVar1;
  longlong *plVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint uVar7;
  char cVar8;
  undefined8 *puVar9;
  undefined1 *puVar10;
  void *_Dst;
  longlong *plVar11;
  longlong *plVar12;
  longlong lVar13;
  bool bVar14;
  float fVar15;
  double dVar16;
  double dVar17;
  undefined8 extraout_XMM0_Qb;
  float fVar18;
  double dVar19;
  double dVar20;
  undefined1 auVar21 [16];
  double dVar22;
  double dVar23;
  float fVar24;
  float fVar25;
  undefined1 auStack_1768 [32];
  float local_1748;
  double *local_1728;
  undefined8 *local_1720;
  double *local_16a8;
  undefined8 *local_16a0;
  double *local_1628;
  double *local_1620;
  double *local_15a8;
  double *local_15a0;
  double *local_1528;
  double *local_1520;
  double *local_14a8;
  double *local_14a0;
  undefined1 local_1428 [128];
  undefined1 local_13a8 [128];
  undefined1 local_1328 [128];
  undefined1 local_12a8 [128];
  undefined1 local_1228 [128];
  undefined1 local_11a8 [128];
  undefined1 local_1128 [128];
  undefined1 local_10a8 [128];
  undefined1 local_1028 [128];
  undefined1 local_fa8 [128];
  undefined1 local_f28 [128];
  undefined1 local_ea8 [128];
  undefined1 local_e28 [128];
  undefined1 local_da8 [128];
  undefined1 local_d28 [128];
  undefined1 local_ca8 [128];
  undefined1 local_c28 [128];
  undefined1 local_ba8 [128];
  undefined1 local_b28 [128];
  undefined1 local_aa8 [128];
  undefined1 local_a28 [128];
  undefined1 local_9a8 [128];
  undefined1 local_928 [128];
  undefined1 local_8a8 [128];
  undefined1 local_828 [128];
  undefined1 local_7a8 [128];
  undefined1 local_728 [128];
  undefined1 local_6a8 [128];
  undefined1 local_628 [128];
  undefined1 local_5a8 [128];
  undefined1 local_528 [128];
  undefined1 local_4a8 [128];
  undefined1 local_428 [128];
  undefined1 local_3a8 [128];
  undefined1 local_328 [128];
  undefined1 local_2a8 [128];
  undefined1 local_228 [128];
  undefined1 local_1a8 [128];
  undefined1 local_128 [128];
  ulonglong local_a8;
  
  fVar25 = DAT_1824c41e0;
  fVar1 = DAT_1824c3ea4;
  local_a8 = DAT_182615970 ^ (ulonglong)auStack_1768;
  plVar11 = (longlong *)0x0;
  plVar12 = plVar11;
  if (param_2 < *(uint *)(param_1 + 0x6c)) {
    plVar12 = *(longlong **)(*(longlong *)(param_1 + 0x60) + (longlong)(int)param_2 * 8);
  }
  fVar18 = *(float *)((longlong)plVar12 + 0x80c) * DAT_1824c41e0 *
           *(float *)((longlong)plVar12 + 0x80c);
  fVar18 = (fVar18 + DAT_1824c3ea4) / fVar18;
  fVar15 = fVar18 * DAT_1824c41e0;
  fVar15 = sqrtf(fVar15 * fVar15 * DAT_1824c3d3c - DAT_1824c3ea4);
  fVar15 = logf(fVar15 + fVar18);
  dVar19 = DAT_1824c41e8;
  fVar15 = fVar15 * _DAT_1824c45f8;
  dVar16 = log(DAT_1824c41e8);
  dVar17 = DAT_1824c4050;
  powf(fVar25,(float)((double)(float)(((double)fVar15 / dVar16) / DAT_1824c43d0) * DAT_1824c4050));
  plVar12[0x103] = 0;
  plVar12[0x104] = 0;
  dVar22 = DAT_1824c42b0;
  dVar20 = DAT_1824c4270;
  dVar16 = DAT_1824c4140;
  uVar5 = DAT_1824c40c0;
  uVar4 = DAT_1824c4060;
  uVar3 = DAT_1824c4058;
  fVar25 = (*(float *)((longlong)plVar12 + 0x80c) - DAT_1824c3e00) * DAT_1824c3d8c + fVar1;
  switch((int)plVar12[0x100]) {
  case 0:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 2;
    *(undefined1 *)((longlong)plVar12 + 0x819) = 1;
    dVar19 = pow(dVar19,dVar16);
    dVar19 = sqrt(dVar19 - dVar16);
    uVar7 = DAT_1824c4f20._4_4_;
    uVar6 = (uint)DAT_1824c4f20;
    dVar19 = ((double)*(float *)((longlong)plVar12 + 0x804) * (dVar16 / dVar19) * DAT_1824c4248) /
             (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24));
    dVar19 = exp((double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) ^ DAT_1824c4f20._4_4_,
                                  SUB84(dVar19,0) ^ (uint)DAT_1824c4f20));
    auVar21._8_4_ = (int)extraout_XMM0_Qb;
    auVar21._0_8_ = dVar19;
    auVar21._12_4_ = (int)((ulonglong)extraout_XMM0_Qb >> 0x20);
    FUN_180534730(&local_16a8);
    *local_16a8 = dVar16 - auVar21._0_8_;
    local_16a8[1] = 0.0;
    local_16a8[2] = 0.0;
    *local_16a0 = 0x3ff0000000000000;
    local_16a0[1] = CONCAT44(auVar21._4_4_ ^ uVar7,auVar21._0_4_ ^ uVar6);
    local_16a0[2] = 0;
    memcpy((void *)*plVar12,local_16a8,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],local_16a0,(longlong)(int)plVar12[2] << 3);
    puVar10 = local_ea8;
    break;
  case 1:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 2;
    *(undefined1 *)((longlong)plVar12 + 0x819) = 1;
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_e28,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),uVar5);
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar10 = local_da8;
    dVar17 = DAT_1824c4140;
    break;
  case 2:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 3;
    *(undefined1 *)((longlong)plVar12 + 0x81a) = 1;
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_d28,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),uVar4);
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_ca8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4188);
    memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
    memcpy((void *)plVar12[0x11],(void *)puVar9[1],(longlong)(int)plVar12[0x12] << 3);
    puVar10 = local_c28;
    goto LAB_180531b79;
  case 3:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 5;
    *(undefined1 *)((longlong)plVar12 + 0x81c) = 1;
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_ba8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),uVar3);
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_b28,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4078);
    memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
    memcpy((void *)plVar12[0x11],(void *)puVar9[1],(longlong)(int)plVar12[0x12] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_aa8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4120);
    memcpy((void *)plVar12[0x20],(void *)*puVar9,(longlong)(int)plVar12[0x22] << 3);
    memcpy((void *)plVar12[0x21],(void *)puVar9[1],(longlong)(int)plVar12[0x22] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_a28,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4200);
    memcpy((void *)plVar12[0x30],(void *)*puVar9,(longlong)(int)plVar12[0x32] << 3);
    memcpy((void *)plVar12[0x31],(void *)puVar9[1],(longlong)(int)plVar12[0x32] << 3);
    puVar10 = local_9a8;
    goto LAB_180531d8a;
  case 4:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 2;
    *(undefined1 *)((longlong)plVar12 + 0x819) = 1;
    dVar19 = pow(dVar19,dVar16);
    dVar19 = sqrt(dVar19 - dVar16);
    uVar7 = DAT_1824c4f20._4_4_;
    uVar6 = (uint)DAT_1824c4f20;
    dVar19 = ((double)*(float *)((longlong)plVar12 + 0x804) * (dVar16 / dVar19) * DAT_1824c4248) /
             (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24));
    dVar19 = exp((double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) ^ DAT_1824c4f20._4_4_,
                                  SUB84(dVar19,0) ^ (uint)DAT_1824c4f20));
    FUN_180534730(&local_1728);
    dVar20 = (dVar19 + dVar16) * DAT_1824c4698;
    *local_1728 = (dVar19 + dVar16) * dVar17;
    local_1728[1] = dVar20;
    local_1728[2] = 0.0;
    *local_1720 = 0x3ff0000000000000;
    local_1720[1] = CONCAT44((uint)((ulonglong)dVar19 >> 0x20) ^ uVar7,SUB84(dVar19,0) ^ uVar6);
    local_1720[2] = 0;
    memcpy((void *)*plVar12,local_1728,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],local_1720,(longlong)(int)plVar12[2] << 3);
    puVar10 = local_1428;
    break;
  case 5:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 2;
    *(undefined1 *)((longlong)plVar12 + 0x819) = 1;
    puVar9 = (undefined8 *)
             FUN_180534300(local_13a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),uVar5);
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar10 = local_1328;
    dVar17 = DAT_1824c4140;
    break;
  case 6:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 3;
    *(undefined1 *)((longlong)plVar12 + 0x81a) = 1;
    puVar9 = (undefined8 *)
             FUN_180534300(local_12a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),uVar4);
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_1228,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4188);
    memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
    memcpy((void *)plVar12[0x11],(void *)puVar9[1],(longlong)(int)plVar12[0x12] << 3);
    puVar10 = local_11a8;
LAB_180531b79:
    local_1748 = fVar25;
    puVar9 = (undefined8 *)
             FUN_180533ec0(puVar10,(double)((float)*(int *)(param_1 + 0x240080) *
                                           *(float *)(param_1 + 0x24)),
                           (double)*(float *)((longlong)plVar12 + 0x804),dVar19);
    memcpy((void *)plVar12[0x20],(void *)*puVar9,(longlong)(int)plVar12[0x22] << 3);
    lVar13 = (longlong)(int)plVar12[0x22];
    _Dst = (void *)plVar12[0x21];
    goto LAB_180532e99;
  case 7:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 5;
    *(undefined1 *)((longlong)plVar12 + 0x81c) = 1;
    puVar9 = (undefined8 *)
             FUN_180534300(local_1128,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),uVar3);
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_10a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4078);
    memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
    memcpy((void *)plVar12[0x11],(void *)puVar9[1],(longlong)(int)plVar12[0x12] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_1028,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4120);
    memcpy((void *)plVar12[0x20],(void *)*puVar9,(longlong)(int)plVar12[0x22] << 3);
    memcpy((void *)plVar12[0x21],(void *)puVar9[1],(longlong)(int)plVar12[0x22] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_fa8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4200);
    memcpy((void *)plVar12[0x30],(void *)*puVar9,(longlong)(int)plVar12[0x32] << 3);
    memcpy((void *)plVar12[0x31],(void *)puVar9[1],(longlong)(int)plVar12[0x32] << 3);
    puVar10 = local_f28;
LAB_180531d8a:
    local_1748 = fVar25;
    puVar9 = (undefined8 *)
             FUN_180533ec0(puVar10,(double)((float)*(int *)(param_1 + 0x240080) *
                                           *(float *)(param_1 + 0x24)),
                           (double)*(float *)((longlong)plVar12 + 0x804),DAT_1824c4228);
    memcpy((void *)plVar12[0x40],(void *)*puVar9,(longlong)(int)plVar12[0x42] << 3);
    lVar13 = (longlong)(int)plVar12[0x42];
    _Dst = (void *)plVar12[0x41];
    goto LAB_180532e99;
  default:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 1;
    *(undefined1 *)(plVar12 + 0x103) = 1;
    dVar17 = pow(dVar20,(double)*(float *)(plVar12 + 0x101) / DAT_1824c42b0);
    local_1748 = (float)dVar17;
    puVar9 = (undefined8 *)
             FUN_180533ec0(local_128,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),
                           (double)*(float *)((longlong)plVar12 + 0x80c));
    goto LAB_180532e7b;
  case 9:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 1;
    *(undefined1 *)(plVar12 + 0x103) = 1;
    dVar17 = pow(dVar20,(double)*(float *)(plVar12 + 0x101) / DAT_1824c42b0);
    local_1748 = (float)dVar17;
    puVar9 = (undefined8 *)
             FUN_180533ff0(local_8a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),
                           (double)*(float *)((longlong)plVar12 + 0x80c));
    goto LAB_180532e7b;
  case 10:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 1;
    *(undefined1 *)(plVar12 + 0x103) = 1;
    dVar17 = pow(dVar20,(double)*(float *)(plVar12 + 0x101) / DAT_1824c42b0);
    local_1748 = (float)dVar17;
    puVar9 = (undefined8 *)
             FUN_180534180(local_928,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),
                           (double)*(float *)((longlong)plVar12 + 0x80c));
LAB_180532e7b:
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    lVar13 = (longlong)(int)plVar12[2];
    _Dst = (void *)plVar12[1];
    goto LAB_180532e99;
  case 0xb:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 2;
    *(undefined1 *)((longlong)plVar12 + 0x819) = 1;
    dVar17 = pow(DAT_1824c4270,
                 (double)(float)(*(uint *)(plVar12 + 0x101) ^ DAT_1824c4f30) / DAT_1824c42b0);
    local_1748 = (float)dVar17;
    puVar9 = (undefined8 *)
             FUN_180534180(local_828,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),
                           (double)*(float *)((longlong)plVar12 + 0x80c));
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    dVar17 = pow(DAT_1824c4270,(double)*(float *)(plVar12 + 0x101) / DAT_1824c42b0);
    local_1748 = (float)dVar17;
    puVar9 = (undefined8 *)
             FUN_180533ff0(local_7a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ),(double)*(float *)((longlong)plVar12 + 0x804),
                           (double)*(float *)((longlong)plVar12 + 0x80c));
    goto LAB_1805319e8;
  case 0xc:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 1;
    *(undefined1 *)(plVar12 + 0x103) = 1;
    fVar1 = *(float *)((longlong)plVar12 + 0x80c);
    dVar20 = tan(((double)*(float *)((longlong)plVar12 + 0x804) * DAT_1824c4218) /
                 (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)));
    dVar16 = DAT_1824c4140;
    dVar20 = DAT_1824c4140 / dVar20;
    dVar23 = (DAT_1824c4140 / (double)fVar1) * dVar20;
    dVar17 = dVar20 * dVar20;
    dVar22 = DAT_1824c4140 / (dVar23 + DAT_1824c4140 + dVar17);
    FUN_180534730(&local_1628);
    dVar20 = (dVar22 * dVar20) / (double)fVar1;
    *local_1628 = dVar20;
    local_1628[1] = 0.0;
    local_1628[2] =
         (double)CONCAT44((uint)((ulonglong)dVar20 >> 0x20) ^ DAT_1824c4f20._4_4_,
                          SUB84(dVar20,0) ^ (uint)DAT_1824c4f20);
    *local_1620 = 1.0;
    local_1620[1] = (dVar16 - dVar17) * dVar22 * dVar19;
    local_1620[2] = ((dVar16 - dVar23) + dVar17) * dVar22;
    memcpy((void *)*plVar12,local_1628,(longlong)(int)plVar12[2] << 3);
    lVar13 = (longlong)(int)plVar12[2];
    _Dst = (void *)plVar12[1];
    local_1520 = local_1620;
    goto LAB_180532e9d;
  case 0xd:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 4;
    *(undefined1 *)((longlong)plVar12 + 0x81b) = 1;
    dVar16 = pow(dVar20,((double)*(float *)(plVar12 + 0x101) * dVar17) / dVar22);
    local_1748 = (float)dVar16;
    puVar9 = (undefined8 *)
             FUN_180533ff0(local_728,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    dVar16 = pow(dVar20,((double)*(float *)(plVar12 + 0x101) * dVar17) / dVar22);
    local_1748 = (float)dVar16;
    puVar9 = (undefined8 *)
             FUN_180533ff0(local_6a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
    memcpy((void *)plVar12[0x11],(void *)puVar9[1],(longlong)(int)plVar12[0x12] << 3);
    uVar6 = DAT_1824c4f30;
    dVar16 = pow(dVar20,((double)(float)(*(uint *)(plVar12 + 0x101) ^ DAT_1824c4f30) * dVar17) /
                        dVar22);
    local_1748 = (float)dVar16;
    puVar9 = (undefined8 *)
             FUN_180533ff0(local_628,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x20],(void *)*puVar9,(longlong)(int)plVar12[0x22] << 3);
    memcpy((void *)plVar12[0x21],(void *)puVar9[1],(longlong)(int)plVar12[0x22] << 3);
    dVar17 = pow(dVar20,((double)(float)(*(uint *)(plVar12 + 0x101) ^ uVar6) * dVar17) / dVar22);
    local_1748 = (float)dVar17;
    puVar9 = (undefined8 *)
             FUN_180533ff0(local_5a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x30],(void *)*puVar9,(longlong)(int)plVar12[0x32] << 3);
    lVar13 = (longlong)(int)plVar12[0x32];
    _Dst = (void *)plVar12[0x31];
    goto LAB_180532e99;
  case 0xe:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 9;
    *(undefined1 *)((longlong)plVar12 + 0x81b) = 1;
    *(undefined2 *)((longlong)plVar12 + 0x81f) = 1;
    puVar9 = (undefined8 *)
             FUN_180534300(local_528,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)*plVar12,(void *)*puVar9,(longlong)(int)plVar12[2] << 3);
    memcpy((void *)plVar12[1],(void *)puVar9[1],(longlong)(int)plVar12[2] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_4a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
    memcpy((void *)plVar12[0x11],(void *)puVar9[1],(longlong)(int)plVar12[0x12] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_428,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x20],(void *)*puVar9,(longlong)(int)plVar12[0x22] << 3);
    memcpy((void *)plVar12[0x21],(void *)puVar9[1],(longlong)(int)plVar12[0x22] << 3);
    puVar9 = (undefined8 *)
             FUN_180534300(local_3a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x30],(void *)*puVar9,(longlong)(int)plVar12[0x32] << 3);
    memcpy((void *)plVar12[0x31],(void *)puVar9[1],(longlong)(int)plVar12[0x32] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_328,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x40],(void *)*puVar9,(longlong)(int)plVar12[0x42] << 3);
    memcpy((void *)plVar12[0x41],(void *)puVar9[1],(longlong)(int)plVar12[0x42] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_2a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x50],(void *)*puVar9,(longlong)(int)plVar12[0x52] << 3);
    memcpy((void *)plVar12[0x51],(void *)puVar9[1],(longlong)(int)plVar12[0x52] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_228,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x60],(void *)*puVar9,(longlong)(int)plVar12[0x62] << 3);
    memcpy((void *)plVar12[0x61],(void *)puVar9[1],(longlong)(int)plVar12[0x62] << 3);
    puVar9 = (undefined8 *)
             FUN_1805343e0(local_1a8,
                           (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)
                                   ));
    memcpy((void *)plVar12[0x70],(void *)*puVar9,(longlong)(int)plVar12[0x72] << 3);
    memcpy((void *)plVar12[0x71],(void *)puVar9[1],(longlong)(int)plVar12[0x72] << 3);
    dVar16 = tan(((double)*(float *)((longlong)plVar12 + 0x804) * DAT_1824c4218) /
                 (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)));
    dVar17 = DAT_1824c4140;
    dVar16 = DAT_1824c4140 / dVar16;
    dVar23 = dVar16 * dVar16;
    dVar16 = dVar16 / _DAT_1824c4240;
    dVar22 = DAT_1824c4140 / (dVar16 + DAT_1824c4140 + dVar23);
    FUN_180534730(&local_14a8);
    dVar20 = (dVar23 + dVar17) * dVar22;
    dVar19 = dVar22 * dVar19 * (dVar17 - dVar23);
    *local_14a8 = dVar20;
    local_14a8[1] = dVar19;
    local_14a8[2] = dVar20;
    *local_14a0 = 1.0;
    local_14a0[1] = dVar19;
    local_14a0[2] = ((dVar17 - dVar16) + dVar23) * dVar22;
    memcpy((void *)plVar12[0x80],local_14a8,(longlong)(int)plVar12[0x82] << 3);
    lVar13 = (longlong)(int)plVar12[0x82];
    _Dst = (void *)plVar12[0x81];
    local_1520 = local_14a0;
    goto LAB_180532e9d;
  case 0xf:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 1;
    *(undefined1 *)(plVar12 + 0x103) = 1;
    fVar15 = (float)(((double)*(float *)((longlong)plVar12 + 0x804) * DAT_1824c4248) /
                    (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)));
    fVar25 = sinf(fVar15);
    dVar17 = sqrt((double)*(float *)((longlong)plVar12 + 0x80c));
    fVar24 = (float)((double)fVar25 / (dVar17 * dVar19));
    FUN_180534730(&local_15a8);
    fVar25 = cosf(fVar15);
    fVar18 = fVar25 * DAT_1824c46a8;
    fVar15 = (fVar25 + fVar1) * DAT_1824c3d8c;
    *local_15a8 = (double)fVar15;
    local_15a8[1] = (double)(float)((uint)(fVar25 + fVar1) ^ DAT_1824c4f30);
    local_15a8[2] = (double)fVar15;
    *local_15a0 = (double)(fVar24 + fVar1);
    local_15a0[1] = (double)fVar18;
    local_15a0[2] = (double)(fVar1 - fVar24);
    memcpy((void *)*plVar12,local_15a8,(longlong)(int)plVar12[2] << 3);
    lVar13 = (longlong)(int)plVar12[2];
    _Dst = (void *)plVar12[1];
    local_1520 = local_15a0;
    goto LAB_180532e9d;
  case 0x10:
    *(undefined4 *)((longlong)plVar12 + 0x814) = 1;
    *(undefined1 *)(plVar12 + 0x103) = 1;
    fVar15 = (float)(((double)*(float *)((longlong)plVar12 + 0x804) * DAT_1824c4248) /
                    (double)((float)*(int *)(param_1 + 0x240080) * *(float *)(param_1 + 0x24)));
    fVar25 = sinf(fVar15);
    dVar17 = sqrt((double)*(float *)((longlong)plVar12 + 0x80c));
    fVar24 = (float)((double)fVar25 / (dVar17 * dVar19));
    FUN_180534730(&local_1528);
    fVar25 = cosf(fVar15);
    fVar18 = fVar25 * DAT_1824c46a8;
    fVar15 = (fVar1 - fVar25) * DAT_1824c3d8c;
    *local_1528 = (double)fVar15;
    local_1528[1] = (double)(fVar1 - fVar25);
    local_1528[2] = (double)fVar15;
    *local_1520 = (double)(fVar24 + fVar1);
    local_1520[1] = (double)fVar18;
    local_1520[2] = (double)(fVar1 - fVar24);
    memcpy((void *)*plVar12,local_1528,(longlong)(int)plVar12[2] << 3);
    lVar13 = (longlong)(int)plVar12[2];
    _Dst = (void *)plVar12[1];
    goto LAB_180532e9d;
  }
  local_1748 = fVar25;
  puVar9 = (undefined8 *)
           FUN_180533ec0(puVar10,(double)((float)*(int *)(param_1 + 0x240080) *
                                         *(float *)(param_1 + 0x24)),
                         (double)*(float *)((longlong)plVar12 + 0x804),dVar17);
LAB_1805319e8:
  memcpy((void *)plVar12[0x10],(void *)*puVar9,(longlong)(int)plVar12[0x12] << 3);
  lVar13 = (longlong)(int)plVar12[0x12];
  _Dst = (void *)plVar12[0x11];
LAB_180532e99:
  local_1520 = (double *)puVar9[1];
LAB_180532e9d:
  memcpy(_Dst,local_1520,lVar13 << 3);
  if (param_2 < *(uint *)(param_1 + 0x7c)) {
    plVar11 = *(longlong **)(*(longlong *)(param_1 + 0x70) + (longlong)(int)param_2 * 8);
  }
  plVar2 = (longlong *)*plVar12;
  lVar13 = plVar12[1];
  plVar11[0x17] = *plVar2;
  plVar11[0x18] = plVar2[1];
  plVar11[0x19] = plVar2[2];
  plVar11[0x1a] = *(longlong *)(lVar13 + 8);
  plVar11[0x1b] = *(longlong *)(lVar13 + 0x10);
  if ((char)plVar11[0x12] != '\0') {
    LOCK();
    bVar14 = *(int *)(plVar11[0xe] + 0x18) == 0;
    if (bVar14) {
      *(int *)(plVar11[0xe] + 0x18) = 1;
    }
    UNLOCK();
    if ((bVar14) && (cVar8 = FUN_1812a6720(plVar11[0xe]), cVar8 == '\0')) {
      LOCK();
      *(undefined4 *)(plVar11[0xe] + 0x18) = 0;
      UNLOCK();
    }
  }
  FUN_180533de0(param_1,param_2);
}



############ FUN_ 180563fa0 size=852 ############

ulonglong FUN_180563fa0(longlong param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  longlong lVar7;
  int iVar8;
  ulonglong uVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  longlong lVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  
  uVar9 = *(longlong *)(param_1 + 0xa0) - *(longlong *)(param_1 + 0x98);
  if (((uVar9 & 0xfffffffffffffff8) == 0) || (*(char *)(param_1 + 0x90) == '\0')) {
    return uVar9 & 0xffffffffffffff00;
  }
  *(undefined1 *)(param_1 + 0x90) = 0;
  lVar10 = *(longlong *)(*(longlong *)(param_1 + 0x170) + 0x168);
  iVar8 = 2;
  if (*(int *)(lVar10 + 0x30) < 2) {
    iVar8 = *(int *)(lVar10 + 0x30);
  }
  lVar12 = 0;
  lVar14 = (longlong)iVar8;
  lVar10 = lVar12;
  lVar13 = lVar12;
  if (0 < iVar8) {
    do {
      lVar11 = 0x155;
      do {
        lVar7 = *(longlong *)(param_1 + 0x98);
        uVar2 = *(undefined4 *)(lVar10 + 8 + lVar7);
        uVar3 = *(undefined4 *)(lVar10 + 4 + lVar7);
        uVar4 = *(undefined4 *)(lVar10 + 0xc + lVar7);
        uVar5 = *(undefined4 *)(lVar10 + lVar7);
        puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + lVar13);
        *puVar1 = uVar5;
        puVar1[1] = uVar2;
        puVar1[2] = uVar3;
        puVar1[3] = uVar4;
        puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x10 + lVar13);
        *puVar1 = uVar5;
        puVar1[1] = uVar2;
        puVar1[2] = uVar3;
        puVar1[3] = uVar4;
        lVar7 = *(longlong *)(param_1 + 0x98);
        uVar2 = *(undefined4 *)(lVar7 + 0x10 + lVar10);
        uVar3 = *(undefined4 *)(lVar7 + 0xc + lVar10);
        uVar4 = *(undefined4 *)(lVar7 + 0x14 + lVar10);
        uVar5 = *(undefined4 *)(lVar7 + 8 + lVar10);
        puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x20 + lVar13);
        *puVar1 = uVar5;
        puVar1[1] = uVar2;
        puVar1[2] = uVar3;
        puVar1[3] = uVar4;
        puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x30 + lVar13);
        *puVar1 = uVar5;
        puVar1[1] = uVar2;
        puVar1[2] = uVar3;
        puVar1[3] = uVar4;
        lVar7 = *(longlong *)(param_1 + 0x98);
        uVar2 = *(undefined4 *)(lVar7 + 0x10 + lVar10);
        uVar3 = *(undefined4 *)(lVar7 + lVar10 + 0x14);
        lVar10 = lVar10 + 0x18;
        uVar4 = *(undefined4 *)(lVar7 + lVar10);
        uVar5 = *(undefined4 *)(lVar7 + 4 + lVar10);
        puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x40 + lVar13);
        *puVar1 = uVar2;
        puVar1[1] = uVar4;
        puVar1[2] = uVar3;
        puVar1[3] = uVar5;
        puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x50 + lVar13);
        *puVar1 = uVar2;
        puVar1[1] = uVar4;
        puVar1[2] = uVar3;
        puVar1[3] = uVar5;
        lVar13 = lVar13 + 0x60;
        lVar11 = lVar11 + -1;
      } while (lVar11 != 0);
      lVar14 = lVar14 + -1;
    } while (lVar14 != 0);
  }
  lVar10 = (longlong)*(int *)(param_1 + 0xc0);
  if (*(int *)(param_1 + 0xc0) < 0) {
    do {
      *(undefined4 *)(*(longlong *)(param_1 + 0x40) + 0xffc0 + lVar12) = 0xc0000000;
      *(undefined4 *)(*(longlong *)(param_1 + 0x40) + 0xffc4 + lVar12) = 0xc0000000;
      *(undefined4 *)(lVar12 + 0xffd0 + *(longlong *)(param_1 + 0x40)) = 0xc0000000;
      *(undefined4 *)(*(longlong *)(param_1 + 0x40) + 0xffd4 + lVar12) = 0xc0000000;
      *(undefined4 *)(*(longlong *)(param_1 + 0x40) + 0xffe0 + lVar12) = 0xc0000000;
      lVar10 = *(longlong *)(param_1 + 0x40);
      *(undefined4 *)(lVar10 + 0xffe4 + lVar12) = 0xc0000000;
      lVar12 = lVar12 + 0x30;
    } while (lVar12 < 0x3ff0);
    return CONCAT71((int7)((ulonglong)lVar10 >> 8),1);
  }
  uVar6 = *(uint *)(param_1 + 200 + lVar10 * 4);
  lVar13 = 0xffd0;
  fVar15 = (float)(uVar6 >> 0x10 & 0xff) / DAT_1824c4548;
  fVar17 = (float)(uVar6 & 0xff) / DAT_1824c4548;
  fVar16 = (float)(uVar6 >> 8 & 0xff) / DAT_1824c4548;
  do {
    lVar11 = *(longlong *)(param_1 + 0xe0 + lVar10 * 0x18);
    lVar14 = lVar12 + 0x18;
    *(undefined4 *)(lVar13 + -0x10 + *(longlong *)(param_1 + 0x40)) =
         *(undefined4 *)(lVar12 + lVar11);
    *(undefined4 *)(*(longlong *)(param_1 + 0x40) + -0xc + lVar13) =
         *(undefined4 *)(lVar12 + 4 + lVar11);
    *(float *)(lVar13 + -0x10 + *(longlong *)(param_1 + 0x58)) = fVar15;
    *(float *)(*(longlong *)(param_1 + 0x58) + -0xc + lVar13) = fVar16;
    *(float *)(*(longlong *)(param_1 + 0x58) + -8 + lVar13) = fVar17;
    lVar12 = *(longlong *)(param_1 + 0xe0 + lVar10 * 0x18);
    *(undefined4 *)(lVar13 + *(longlong *)(param_1 + 0x40)) =
         *(undefined4 *)(lVar12 + -0x10 + lVar14);
    *(undefined4 *)(*(longlong *)(param_1 + 0x40) + 4 + lVar13) =
         *(undefined4 *)(lVar12 + -0xc + lVar14);
    *(float *)(lVar13 + *(longlong *)(param_1 + 0x58)) = fVar15;
    *(float *)(*(longlong *)(param_1 + 0x58) + 4 + lVar13) = fVar16;
    *(float *)(*(longlong *)(param_1 + 0x58) + 8 + lVar13) = fVar17;
    lVar12 = *(longlong *)(param_1 + 0xe0 + lVar10 * 0x18);
    *(undefined4 *)(lVar13 + 0x10 + *(longlong *)(param_1 + 0x40)) =
         *(undefined4 *)(lVar12 + -8 + lVar14);
    *(undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x14 + lVar13) =
         *(undefined4 *)(lVar12 + -4 + lVar14);
    *(float *)(lVar13 + 0x10 + *(longlong *)(param_1 + 0x58)) = fVar15;
    *(float *)(*(longlong *)(param_1 + 0x58) + 0x14 + lVar13) = fVar16;
    lVar11 = *(longlong *)(param_1 + 0x58);
    *(float *)(lVar11 + 0x18 + lVar13) = fVar17;
    lVar13 = lVar13 + 0x30;
    lVar12 = lVar14;
  } while (lVar13 < 0x13fc0);
  return CONCAT71((int7)((ulonglong)lVar11 >> 8),1);
}



############ FUN_ 1805631c0 size=44 ############

void FUN_1805631c0(longlong param_1)

{
  FUN_180563440();
  if (*(char *)(param_1 + 0x91) == '\0') {
    FUN_180563ce0(param_1);
  }
  FUN_180563fa0(param_1);
  return;
}



############ FUN_ 180563260 size=89 ############

bool FUN_180563260(longlong param_1,int param_2)

{
  int iVar1;
  undefined1 uVar2;
  
  if (param_2 == 1) {
    FUN_180563440();
    if (*(char *)(param_1 + 0x91) == '\0') {
      FUN_180563ce0(param_1);
    }
    uVar2 = FUN_180563fa0(param_1);
    return (bool)uVar2;
  }
  if (param_2 != 2) {
    return false;
  }
  iVar1 = *(int *)(param_1 + 0xc4);
  *(int *)(param_1 + 0xc4) = *(int *)(param_1 + 0xc0);
  return iVar1 != *(int *)(param_1 + 0xc0);
}



############ FUN_ 180563a60 size=625 ############

void FUN_180563a60(longlong param_1)

{
  float *pfVar1;
  longlong *plVar2;
  ulonglong uVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  longlong lVar10;
  longlong lVar11;
  longlong *plVar12;
  int iVar13;
  int iVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  double dVar18;
  uint uVar19;
  float local_res10 [2];
  float local_res18 [2];
  float local_res20 [2];
  undefined8 uVar20;
  
  fVar9 = DAT_1824c4680;
  fVar8 = DAT_1824c43e0;
  fVar7 = DAT_1824c41e0;
  fVar6 = DAT_1824c3ea4;
  fVar5 = DAT_1824c3d8c;
  fVar4 = DAT_1824c3c50;
  uVar20 = 0xfffffffffffffffe;
  iVar14 = 0;
  lVar11 = param_1 + 0x4198;
  plVar12 = (longlong *)(param_1 + 0xe0);
  uVar19 = (uint)DAT_1824c4f10;
  uVar3 = (ulonglong)DAT_1824c4f10 >> 0x20;
  do {
    if (plVar12[1] - *plVar12 >> 3 == 0) {
      FUN_18056c640(param_1 + (longlong)iVar14 * 0x18 + 0xe0,0x400);
    }
    iVar13 = 0;
    lVar10 = 0;
    do {
      fVar15 = logf((float)*(double *)(lVar10 + lVar11));
      fVar15 = fVar15 * fVar8;
      *(float *)(lVar10 + *plVar12) = (float)iVar13 * fVar4;
      pfVar1 = *(float **)(param_1 + 0x180);
      fVar16 = pfVar1[1];
      fVar17 = fVar6;
      if (*(longlong *)(pfVar1 + 0x24) == 0) {
        fVar16 = (fVar15 - *pfVar1) / (fVar16 - *pfVar1);
        if (0.0 <= fVar16) {
          if (fVar16 <= fVar6) {
            fVar17 = fVar16;
          }
        }
        else {
          fVar17 = 0.0;
        }
        fVar16 = pfVar1[3];
        if (fVar16 != fVar6) {
          if (*(char *)(pfVar1 + 4) == '\0') {
            fVar17 = powf(fVar17,fVar16);
          }
          else {
            fVar15 = fVar17 * fVar7 - fVar6;
            fVar17 = fVar6;
            if (fVar15 < 0.0) {
              fVar17 = fVar9;
            }
            dVar18 = (double)fVar15;
            fVar16 = powf((float)(double)CONCAT44((uint)((ulonglong)dVar18 >> 0x20) & (uint)uVar3,
                                                  SUB84(dVar18,0) & uVar19),fVar16);
            fVar17 = (fVar16 * fVar17 + fVar6) * fVar5;
          }
        }
      }
      else {
        local_res20[0] = *pfVar1;
        plVar2 = *(longlong **)(pfVar1 + 0x24);
        local_res10[0] = fVar15;
        local_res18[0] = fVar16;
        if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar16 = (float)(**(code **)(*plVar2 + 0x10))
                                  (plVar2,local_res20,local_res18,local_res10,uVar20);
        if (0.0 <= fVar16) {
          if (fVar16 <= fVar6) {
            fVar17 = fVar16;
          }
        }
        else {
          fVar17 = 0.0;
        }
      }
      *(float *)(lVar10 + 4 + *plVar12) = fVar17;
      iVar13 = iVar13 + 1;
      lVar10 = lVar10 + 8;
    } while (iVar13 < 0x400);
    iVar14 = iVar14 + 1;
    plVar12 = plVar12 + 3;
    lVar11 = lVar11 + 0x2000;
  } while (iVar14 < 6);
  return;
}



############ FUN_ 18052d390 size=52 ############

void * .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__
                 (void *param_1,ulonglong param_2)

{
  FUN_180529aa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18052cfb0 size=61 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1)

{
  FUN_1812b4430(param_1 + 0x14,0,2);
  *(float *)(param_1 + 0x58) = (float)(DAT_1824c4230 / (double)*(float *)(param_1 + 0x24));
  return;
}



############ FUN_ 180529550 size=191 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong *param_1,undefined4 param_2,undefined4 *param_3,int param_4)

{
  int *piVar1;
  longlong lVar2;
  uint *puVar3;
  
  lVar2 = (longlong)param_4;
  puVar3 = (uint *)(param_1 + (lVar2 + 9) * 8);
  *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = *param_3;
  *puVar3 = puVar3[2] - 1 & *puVar3 + 1;
  puVar3 = (uint *)(param_1 + (lVar2 + 7) * 8);
  *(undefined4 *)(*(longlong *)(puVar3 + 8) + (longlong)(int)*puVar3 * 4) = param_2;
  *puVar3 = puVar3[2] - 1 & *puVar3 + 1;
  piVar1 = (int *)((longlong)param_1 + lVar2 * 4 + 0x3c0);
  *piVar1 = *piVar1 + 1;
  if ((*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79] / 2) && (param_4 == 0))
  {
    (**(code **)(*param_1 + 0x38))(param_1);
  }
  if (*(int *)((longlong)param_1 + lVar2 * 4 + 0x3c0) == (int)param_1[0x79]) {
    *(undefined4 *)((longlong)param_1 + lVar2 * 4 + 0x3c0) = 0;
    FUN_1805300f0(param_1,param_4);
  }
  return;
}



############ FUN_ 180529610 size=1154 ############

void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__
               (longlong *param_1,longlong *param_2,ulonglong param_3)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  ulonglong uVar4;
  uint uVar5;
  int iVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong *plVar10;
  longlong *plVar11;
  code *pcVar12;
  
  uVar4 = 0;
  uVar9 = uVar4;
  if (0 < (int)param_1[6]) {
    param_2 = param_1 + 0x3b;
    do {
      param_2[-3] = 0;
      uVar8 = uVar4;
      uVar7 = uVar4;
      if (0 < (int)*param_2) {
        do {
          *(undefined4 *)(uVar7 + param_2[-1]) = 0;
          uVar5 = (int)uVar8 + 1;
          uVar8 = (ulonglong)uVar5;
          uVar7 = uVar7 + 4;
        } while ((int)uVar5 < (int)*param_2);
      }
      param_2[1] = param_2[-1];
      param_2[0xd] = 0;
      uVar8 = uVar4;
      uVar7 = uVar4;
      if (0 < (int)param_2[0x10]) {
        do {
          *(undefined4 *)(uVar8 + param_2[0xf]) = 0;
          uVar5 = (int)uVar7 + 1;
          uVar8 = uVar8 + 4;
          uVar7 = (ulonglong)uVar5;
        } while ((int)uVar5 < (int)param_2[0x10]);
      }
      param_2[0x11] = param_2[0xf];
      param_2[0x1d] = 0;
      uVar8 = uVar4;
      param_3 = uVar4;
      if (0 < (int)param_2[0x20]) {
        do {
          *(undefined4 *)(uVar8 + param_2[0x1f]) = 0;
          uVar5 = (int)param_3 + 1;
          param_3 = (ulonglong)uVar5;
          uVar8 = uVar8 + 4;
        } while ((int)uVar5 < (int)param_2[0x20]);
      }
      param_2[0x21] = param_2[0x1f];
      uVar5 = (int)uVar9 + 1;
      uVar9 = (ulonglong)uVar5;
      param_2 = param_2 + 8;
    } while ((int)uVar5 < (int)param_1[6]);
  }
  FUN_18052e130(param_1,param_2,param_3,uVar9,0xfffffffffffffffe);
  iVar1 = (int)param_1[0x34];
  uVar9 = (longlong)iVar1 % (longlong)*(int *)((longlong)param_1 + 0x1ac) & 0xffffffff;
  *(int *)(param_1 + 0x79) = iVar1 / *(int *)((longlong)param_1 + 0x1ac);
  *(int *)(param_1 + 0x35) = (int)param_1[0x36] * iVar1;
  if (0 < (int)param_1[6]) {
    plVar10 = param_1 + 0x3b;
    uVar8 = uVar4;
    do {
      iVar2 = FUN_1813bbf80(0x10000,uVar9);
      if ((int)plVar10[-2] != iVar2) {
        FUN_18052e190(plVar10 + -1,iVar2,0);
      }
      *(int *)(plVar10 + -2) = iVar2;
      plVar10[-3] = 0;
      uVar9 = uVar4;
      uVar7 = uVar4;
      if (0 < (int)*plVar10) {
        do {
          *(undefined4 *)(uVar9 + plVar10[-1]) = 0;
          uVar5 = (int)uVar7 + 1;
          uVar9 = uVar9 + 4;
          uVar7 = (ulonglong)uVar5;
        } while ((int)uVar5 < (int)*plVar10);
      }
      plVar10[1] = plVar10[-1];
      uVar5 = (int)param_1[0x34] + (int)plVar10[-3] & (int)plVar10[-2] - 1U;
      if ((int)uVar5 < 0) {
        uVar5 = uVar5 + (int)plVar10[-2];
      }
      *(uint *)(plVar10 + -3) = uVar5;
      iVar2 = FUN_1813bbf80(0x10000);
      if ((int)plVar10[0xe] != iVar2) {
        FUN_18052e190(plVar10 + 0xf,iVar2,0);
      }
      *(int *)(plVar10 + 0xe) = iVar2;
      plVar10[0xd] = 0;
      uVar9 = uVar4;
      uVar7 = uVar4;
      if (0 < (int)plVar10[0x10]) {
        do {
          *(undefined4 *)(uVar9 + plVar10[0xf]) = 0;
          uVar5 = (int)uVar7 + 1;
          uVar9 = uVar9 + 4;
          uVar7 = (ulonglong)uVar5;
        } while ((int)uVar5 < (int)plVar10[0x10]);
      }
      plVar10[0x11] = plVar10[0xf];
      uVar5 = (int)param_1[0x34] + (int)plVar10[0xd] & (int)plVar10[0xe] - 1U;
      if ((int)uVar5 < 0) {
        uVar5 = uVar5 + (int)plVar10[0xe];
      }
      *(uint *)(plVar10 + 0xd) = uVar5;
      iVar2 = FUN_1813bbf80(0x10000);
      if ((int)plVar10[0x1e] != iVar2) {
        FUN_18052e190(plVar10 + 0x1f,iVar2,0);
      }
      *(int *)(plVar10 + 0x1e) = iVar2;
      plVar10[0x1d] = 0;
      uVar7 = uVar4;
      uVar9 = uVar4;
      if (0 < (int)plVar10[0x20]) {
        do {
          *(undefined4 *)(uVar7 + plVar10[0x1f]) = 0;
          uVar5 = (int)uVar9 + 1;
          uVar9 = (ulonglong)uVar5;
          uVar7 = uVar7 + 4;
        } while ((int)uVar5 < (int)plVar10[0x20]);
      }
      plVar10[0x21] = plVar10[0x1f];
      uVar5 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar5;
      plVar10 = plVar10 + 8;
    } while ((int)uVar5 < (int)param_1[6]);
  }
  if (0 < (int)param_1[6]) {
    iVar2 = iVar1 * 0x10;
    plVar10 = param_1 + 0x6c;
    uVar9 = uVar4;
    do {
      if ((int)plVar10[1] == iVar2) {
LAB_18052990b:
        uVar8 = uVar4;
        uVar7 = uVar4;
        if (0 < (int)plVar10[1]) {
          do {
            *(undefined4 *)(uVar8 + *plVar10) = 0;
            uVar5 = (int)uVar7 + 1;
            uVar8 = uVar8 + 4;
            uVar7 = (ulonglong)uVar5;
          } while ((int)uVar5 < (int)plVar10[1]);
        }
      }
      else {
        if ((0 < (int)plVar10[1]) && (*plVar10 != 0)) {
          FUN_1800010c0();
        }
        *plVar10 = 0;
        iVar6 = iVar2;
        if (iVar2 < 0) {
          iVar6 = 0;
        }
        *(int *)(plVar10 + 1) = iVar6;
        if (iVar6 != 0) {
          lVar3 = FUN_180001080(iVar6 * 4);
          *plVar10 = lVar3;
          goto LAB_18052990b;
        }
      }
      uVar5 = (int)uVar9 + 1;
      uVar9 = (ulonglong)uVar5;
      plVar10 = plVar10 + 2;
    } while ((int)uVar5 < (int)param_1[6]);
  }
  if (0 < (int)param_1[6]) {
    plVar11 = param_1 + 0x70;
    plVar10 = param_1 + 0x6c;
    uVar9 = uVar4;
    do {
      *plVar11 = *plVar10;
      uVar5 = (int)uVar9 + 1;
      uVar9 = (ulonglong)uVar5;
      plVar10 = plVar10 + 2;
      plVar11 = plVar11 + 1;
    } while ((int)uVar5 < (int)param_1[6]);
  }
  FUN_18052e190(param_1 + 0x72,iVar1 * 0x10,0);
  FUN_18052dc30(param_1 + 0xc,(int)param_1[0x35],iVar1 * 8);
  FUN_18052e190(param_1 + 0x74,(int)param_1[0x34],0);
  uVar9 = uVar4;
  uVar8 = uVar4;
  if (0 < (int)param_1[0x75]) {
    do {
      *(undefined4 *)(uVar9 + param_1[0x74]) = 0;
      uVar5 = (int)uVar8 + 1;
      uVar9 = uVar9 + 4;
      uVar8 = (ulonglong)uVar5;
    } while ((int)uVar5 < (int)param_1[0x75]);
  }
  if (0 < (int)param_1[6]) {
    plVar10 = param_1 + 0x78;
    do {
      *(undefined4 *)plVar10 = 0;
      uVar5 = (int)uVar4 + 1;
      uVar4 = (ulonglong)uVar5;
      plVar10 = (longlong *)((longlong)plVar10 + 4);
    } while ((int)uVar5 < (int)param_1[6]);
  }
  FUN_18052df60(param_1);
  if (*(char *)((longlong)param_1 + 0x1b6) == '\0') {
    if (*(char *)((longlong)param_1 + 0x1b7) == '\0') {
      if ((char)param_1[0x37] == '\0') goto LAB_180529a6a;
      *(undefined1 *)(param_1 + 0x37) = 0;
      pcVar12 = *(code **)(*param_1 + 0x48);
    }
    else {
      *(undefined1 *)((longlong)param_1 + 0x1b7) = 0;
      pcVar12 = *(code **)(*param_1 + 0x58);
    }
  }
  else {
    *(undefined1 *)((longlong)param_1 + 0x1b6) = 0;
    pcVar12 = *(code **)(*param_1 + 0x50);
  }
  if (pcVar12 != _guard_check_icall) {
    (*pcVar12)(param_1);
  }
LAB_180529a6a:
  *(undefined1 *)((longlong)param_1 + 0x3cc) = 0;
  return;
}



############ FUN_ 18052d3d0 size=52 ############

void * .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__
                 (void *param_1,ulonglong param_2)

{
  FUN_18052c910();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18052c8f0 size=26 ############

undefined8
.?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
          (undefined8 param_1,undefined8 param_2)

{
  FUN_181353210(param_2);
  return param_2;
}



############ FUN_ 1812c1fb0 size=92 ############

undefined8 *
.?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
          (longlong *param_1,undefined8 *param_2)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  undefined8 *local_res10 [3];
  
  local_res10[0] = param_2;
  uVar2 = (**(code **)(*param_1 + 8))(param_1,local_res10);
  *param_2 = 0;
  param_2[1] = 0;
  FUN_18049b000(param_2,uVar2);
  _Memory = (uint *)(local_res10[0] + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 18052c4a0 size=794 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
     vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
               (longlong *param_1,double param_2,undefined4 param_3)

{
  uint *puVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  char cVar6;
  uint uVar7;
  undefined8 *puVar8;
  code *pcVar9;
  int iVar10;
  longlong *plVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  ulonglong uVar16;
  undefined1 auStack_e8 [32];
  code *local_c8;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined8 local_b8;
  uint *local_b0;
  undefined1 local_a8 [16];
  undefined1 local_98 [16];
  undefined **local_88;
  undefined4 local_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined4 uStack_74;
  longlong *local_70;
  undefined ***local_50;
  ulonglong local_48;
  
  local_b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  puVar1 = (uint *)(param_1 + 0xab);
  do {
    LOCK();
    uVar7 = *puVar1;
    *puVar1 = *puVar1 | 1;
    UNLOCK();
  } while ((uVar7 & 1) != 0);
  local_b0 = puVar1;
  if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) {
    plVar11 = (longlong *)(param_1[0xb7] + 0x70);
    (**(code **)(*plVar11 + 8))(plVar11,param_3,SUB84(param_2,0));
  }
  uVar14 = 0;
  if ((double)param_1[0x2b] != param_2) {
    param_1[0xbb] = 0;
  }
  param_1[0x2b] = (longlong)param_2;
  *(undefined4 *)(param_1 + 0x2c) = param_3;
  cVar6 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))();
  uVar7 = 0;
  if (cVar6 != '\0') {
    local_c8 = FUN_18052f680;
    uStack_c0 = 0;
    local_88 = std::
               _Func_impl_no_alloc<std::_Binder<std::_Unforced,void_(__cdecl_CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>::*)(void)___ptr64,CloudyAudioProcessor<class_Soothe2ModuleBase<float,2>,class_Soothe2ModuleDecryptor,class_ParameterStates,float>*___ptr64>,void>
               ::vftable;
    local_80 = 0x8052f680;
    uStack_7c = 1;
    uStack_78 = 0;
    uStack_74 = uStack_bc;
    local_50 = &local_88;
    local_70 = param_1;
    FUN_18113eab0();
    FUN_18114b490(&local_88);
    if (local_50 != (undefined ***)0x0) {
      (*(code *)(*local_50)[4])(local_50,local_50 != &local_88);
    }
  }
  puVar8 = (undefined8 *)FUN_1812c37c0(param_1,local_a8);
  if (*(int *)((longlong)puVar8 + 0xc) != 0) {
    uVar7 = FUN_18123d3f0(*puVar8);
  }
  FUN_18047c500(local_98);
  FUN_18047c500(local_a8);
  if (uVar7 != *(uint *)((longlong)param_1 + 0x56c)) {
    plVar11 = param_1 + 0xac;
    FUN_180531620(plVar11);
    if ((int)param_1[0xad] != 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*plVar11);
    }
    *(undefined4 *)(param_1 + 0xad) = 0;
    if (0 < (int)uVar7) {
      uVar13 = (ulonglong)uVar7;
      do {
        pcVar9 = (code *)FUN_1811316e0(0x28);
        *(undefined8 *)pcVar9 = 0;
        *(undefined4 *)(pcVar9 + 8) = 0;
        *(undefined8 *)(pcVar9 + 0x10) = 0;
        *(undefined4 *)(pcVar9 + 0x18) = 0;
        *(undefined8 *)(pcVar9 + 0x20) = 0;
        local_c8 = pcVar9;
        FUN_18052bc40(pcVar9,0x10000);
        iVar2 = *(int *)((longlong)param_1 + 0x56c);
        iVar10 = iVar2 + 1;
        if ((int)param_1[0xad] < iVar10) {
          if (iVar10 < 0) {
            iVar10 = iVar2 + 2;
          }
          FUN_18047cb30(plVar11,iVar2 + 9 + (iVar10 >> 1) & 0xfffffff8);
        }
        iVar10 = *(int *)((longlong)param_1 + 0x56c);
        *(int *)((longlong)param_1 + 0x56c) = iVar10 + 1;
        *(code **)(*plVar11 + (longlong)iVar10 * 8) = pcVar9;
        uVar13 = uVar13 - 1;
      } while (uVar13 != 0);
    }
  }
  (**(code **)(*param_1 + 0x220))(param_1,param_1[0x2b],(int)param_1[0x2c]);
  puVar8 = (undefined8 *)param_1[0x36];
  puVar3 = (undefined8 *)*puVar8;
  while (puVar3 != puVar8) {
    FUN_1811c4880(puVar3[5]);
    puVar4 = (undefined8 *)puVar3[2];
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      cVar6 = *(char *)((longlong)*puVar4 + 0x19);
      puVar3 = puVar4;
      puVar4 = (undefined8 *)*puVar4;
      while (cVar6 == '\0') {
        cVar6 = *(char *)((longlong)*puVar4 + 0x19);
        puVar3 = puVar4;
        puVar4 = (undefined8 *)*puVar4;
      }
    }
    else {
      cVar6 = *(char *)((longlong)puVar3[1] + 0x19);
      puVar5 = (undefined8 *)puVar3[1];
      puVar4 = puVar3;
      while ((puVar3 = puVar5, cVar6 == '\0' && (puVar4 == (undefined8 *)puVar3[2]))) {
        cVar6 = *(char *)((longlong)puVar3[1] + 0x19);
        puVar5 = (undefined8 *)puVar3[1];
        puVar4 = puVar3;
      }
    }
  }
  FUN_1812a77d0(param_1 + 0x60,0x10);
  puVar8 = (undefined8 *)param_1[0xac];
  uVar13 = (ulonglong)
           ((longlong)(puVar8 + *(int *)((longlong)param_1 + 0x56c)) + (7 - (longlong)puVar8)) >> 3;
  if (puVar8 + *(int *)((longlong)param_1 + 0x56c) < puVar8) {
    uVar13 = uVar14;
  }
  uVar16 = uVar14;
  if (uVar13 != 0) {
    do {
      puVar3 = (undefined8 *)*puVar8;
      *puVar3 = 0;
      uVar12 = uVar14;
      uVar15 = uVar14;
      if (0 < *(int *)(puVar3 + 3)) {
        do {
          *(undefined4 *)(uVar12 + puVar3[2]) = 0;
          uVar7 = (int)uVar15 + 1;
          uVar12 = uVar12 + 4;
          uVar15 = (ulonglong)uVar7;
        } while ((int)uVar7 < *(int *)(puVar3 + 3));
      }
      puVar3[4] = puVar3[2];
      puVar8 = puVar8 + 1;
      uVar16 = uVar16 + 1;
    } while (uVar16 != uVar13);
  }
  LOCK();
  *puVar1 = 0;
  UNLOCK();
}



############ FUN_ 18052bfa0 size=870 ############

void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
     vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
               (longlong *param_1,longlong param_2,undefined8 param_3)

{
  longlong *plVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  uint *puVar8;
  longlong lVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  bool bVar13;
  int local_b0;
  int local_ac;
  undefined4 local_a8;
  undefined8 local_a0;
  int local_94;
  undefined1 local_90 [16];
  longlong local_80;
  ulonglong local_78;
  longlong local_70;
  undefined4 local_68;
  undefined4 local_64;
  uint *local_60;
  char local_58;
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  local_60 = (uint *)(param_1 + 0xab);
  LOCK();
  bVar13 = (*local_60 & 1) == 0;
  *local_60 = *local_60 | 1;
  UNLOCK();
  puVar12 = (uint *)0x0;
  iVar4 = 0;
  if ((((DAT_1826216ff == '\0') || (DAT_18262170c == '\0')) || (DAT_18262170d == '\0')) ||
     ((DAT_1826216fd == '\0' || (iVar6 = 1, DAT_1826216fe == '\0')))) {
    iVar6 = iVar4;
  }
  local_58 = bVar13;
  if (((char)iVar6 == '\0') ||
     (cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(), cVar3 == '\0')) {
    if (((DAT_1826216ff == '\0') ||
        (((DAT_18262170c == '\0' || (DAT_18262170d == '\0')) || (DAT_1826216fd == '\0')))) ||
       (iVar6 = 1, DAT_1826216fe == '\0')) {
      iVar6 = iVar4;
    }
    if (((char)iVar6 != '\0') ||
       (cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))(), cVar3 != '\0'))
    goto LAB_18052c0bb;
  }
  if (bVar13) {
    FUN_18052f850(param_1);
  }
LAB_18052c0bb:
  uVar5 = MXCSR;
  local_78 = (ulonglong)MXCSR;
  MXCSR = MXCSR | 0x8040;
  if ((char)param_1[0xb6] != *(char *)((longlong)param_1 + 0x41)) {
    *(char *)(param_1 + 0xb6) = *(char *)((longlong)param_1 + 0x41);
    (**(code **)(*param_1 + 0x230))(param_1);
  }
  local_78._0_4_ = uVar5;
  if (bVar13) {
    cVar3 = (**(code **)(*(longlong *)param_1[0x2d] + 0xe8))();
    if (cVar3 == '\0') {
      LOCK();
      *(undefined1 *)((longlong)param_1 + 0x164) = 0;
      UNLOCK();
      FUN_181198f30(param_1 + 0x2f,0);
      if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) {
        local_68 = 0;
        local_64 = *(undefined4 *)(param_2 + 4);
        plVar1 = (longlong *)(param_1[0xb7] + 0x70);
        local_70 = param_2;
        (**(code **)(*plVar1 + 0x18))(plVar1,&local_70);
      }
      FUN_1812c37c0(param_1,&local_a0);
      if (local_94 != 0) {
        iVar4 = FUN_18123d3f0(local_a0);
      }
      iVar6 = *(int *)(param_2 + 4);
      local_80 = (longlong)iVar4;
      if (0 < local_80) {
        puVar8 = puVar12;
        puVar10 = puVar12;
        do {
          lVar2 = *(longlong *)(*(longlong *)(param_2 + 0x10) + (longlong)puVar8 * 8);
          puVar11 = puVar12;
          if ((uint)puVar10 < *(uint *)((longlong)param_1 + 0x56c)) {
            puVar11 = *(uint **)(param_1[0xac] + (longlong)puVar8 * 8);
          }
          lVar9 = lVar2;
          FUN_18052f640(puVar11,&local_b0,iVar6,0,1);
          lVar7 = (longlong)local_ac;
          FUN_18052dbc0(*(longlong *)(puVar11 + 8) + (longlong)local_b0 * 4,lVar9,local_ac);
          FUN_18052dbc0(*(undefined8 *)(puVar11 + 8),lVar2 + lVar7 * 4,local_a8);
          uVar5 = *puVar11 + iVar6 & puVar11[2] - 1;
          if ((int)uVar5 < 0) {
            uVar5 = uVar5 + puVar11[2];
          }
          *puVar11 = uVar5;
          puVar10 = (uint *)(ulonglong)((uint)puVar10 + 1);
          puVar8 = (uint *)((longlong)puVar8 + 1);
        } while ((longlong)puVar8 < local_80);
      }
      FUN_18047c500(local_90);
      FUN_18047c500(&local_a0);
      (**(code **)(*param_1 + 0x228))(param_1,param_2,param_3);
      if ((*(char *)((longlong)param_1 + 0x554) != '\0') && (param_1[0xb7] != 0)) {
        FUN_18052fc90(param_2,*(undefined4 *)(param_1[0xb7] + 0x48));
      }
      param_1[0xbb] = param_1[0xbb] + (longlong)*(int *)(param_2 + 4);
    }
    else {
      (**(code **)(*param_1 + 0x48))(param_1,param_2,param_3);
      FUN_18052fc90(param_2,0);
      local_58 = bVar13;
    }
  }
  else {
    (**(code **)(*param_1 + 0x48))(param_1,param_2,param_3);
    local_58 = bVar13;
  }
  MXCSR = (uint)local_78;
  if (local_58 != '\0') {
    LOCK();
    *local_60 = 0;
    UNLOCK();
  }
  return;
}



############ FUN_ 1812c0b60 size=152 ############

void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
     vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
               (longlong param_1,longlong param_2)

{
  int iVar1;
  longlong lVar2;
  
  if ((*(int *)(param_1 + 0xdc) == 0) || (**(longlong **)(param_1 + 0xd0) == 0)) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(**(longlong **)(param_1 + 0xd0) + 0x8c);
  }
  if (iVar1 < *(int *)(param_1 + 0x104)) {
    lVar2 = (longlong)iVar1 * 8;
    do {
      if (*(char *)(param_2 + 0x120) == '\0') {
        memset(*(void **)(*(longlong *)(param_2 + 0x10) + lVar2),0,
               (longlong)*(int *)(param_2 + 4) << 3);
      }
      iVar1 = iVar1 + 1;
      lVar2 = lVar2 + 8;
    } while (iVar1 < *(int *)(param_1 + 0x104));
  }
  return;
}



############ FUN_ 18052bdf0 size=432 ############

void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__
               (longlong param_1,longlong param_2)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  longlong lVar7;
  longlong lVar8;
  uint uVar9;
  longlong lVar10;
  int local_78;
  int local_74;
  undefined4 local_70;
  int local_68;
  int local_64;
  undefined4 local_60;
  undefined8 local_58;
  int local_4c;
  undefined1 local_48 [16];
  
  LOCK();
  *(undefined1 *)(param_1 + 0x164) = 1;
  UNLOCK();
  FUN_1812c37c0(param_1,&local_58);
  if (local_4c == 0) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18123d3f0(local_58);
  }
  iVar1 = *(int *)(param_1 + 0x3c);
  uVar9 = 0;
  iVar2 = *(int *)(param_2 + 4);
  lVar10 = 0;
  if (0 < (longlong)iVar4) {
    do {
      LOCK();
      *(undefined1 *)(param_2 + 0x120) = 0;
      UNLOCK();
      lVar3 = *(longlong *)(*(longlong *)(param_2 + 0x10) + lVar10 * 8);
      if (uVar9 < *(uint *)(param_1 + 0x56c)) {
        puVar6 = *(uint **)(*(longlong *)(param_1 + 0x560) + lVar10 * 8);
      }
      else {
        puVar6 = (uint *)0x0;
      }
      FUN_18052f640(puVar6,&local_78,iVar2,0,1);
      lVar7 = (longlong)local_74;
      FUN_18052dbc0(*(longlong *)(puVar6 + 8) + (longlong)local_78 * 4,lVar3,local_74);
      FUN_18052dbc0(*(undefined8 *)(puVar6 + 8),lVar3 + lVar7 * 4,local_70);
      uVar5 = *puVar6 + iVar2 & puVar6[2] - 1;
      if ((int)uVar5 < 0) {
        uVar5 = uVar5 + puVar6[2];
      }
      *puVar6 = uVar5;
      if (uVar9 < *(uint *)(param_1 + 0x56c)) {
        lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x560) + lVar10 * 8);
      }
      else {
        lVar7 = 0;
      }
      FUN_18052f640(lVar7,&local_68,iVar2,-(iVar1 + iVar2),1);
      lVar8 = (longlong)local_64;
      FUN_18052dbc0(lVar3,*(longlong *)(lVar7 + 0x20) + (longlong)local_68 * 4,local_64);
      FUN_18052dbc0(lVar3 + lVar8 * 4,*(undefined8 *)(lVar7 + 0x20),local_60);
      uVar9 = uVar9 + 1;
      lVar10 = lVar10 + 1;
    } while (lVar10 < iVar4);
  }
  FUN_18047c500(local_48);
  FUN_18047c500(&local_58);
  return;
}



############ FUN_ 18052c8d0 size=18 ############

undefined8
.?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(longlong param_1)

{
  undefined8 uVar1;
  
  uVar1 = 1;
  if (*(int *)(param_1 + 8) == 3) {
    uVar1 = 0x80;
  }
  return uVar1;
}



############ FUN_ 18052c8c0 size=16 ############

undefined4
.?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(longlong param_1)

{
  if (*(int *)(param_1 + 8) == 3) {
    return *(undefined4 *)(param_1 + 0x448);
  }
  return 0;
}



############ FUN_ 18052c880 size=49 ############

void .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__
               (longlong param_1,uint param_2)

{
  if (*(int *)(param_1 + 8) != 3) {
    return;
  }
  if (param_2 < *(uint *)(param_1 + 0x444)) {
    FUN_18115d300(param_1 + 0x400,
                  *(undefined8 *)(*(longlong *)(param_1 + 0x438) + (longlong)(int)param_2 * 8));
    return;
  }
  FUN_18115d300(param_1 + 0x400,0);
  return;
}



############ FUN_ 18052c7f0 size=141 ############

undefined8 *
.?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__
          (longlong param_1,undefined8 *param_2,uint param_3)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong local_res8 [4];
  
  if ((*(int *)(param_1 + 8) == 3) && (param_3 < *(uint *)(param_1 + 0x444))) {
    plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x438) + (longlong)(int)param_3 * 8);
    if (plVar1 != (longlong *)0x0) {
      if ((undefined **)*plVar1 == Preset::vftable) {
        local_res8[0] = plVar1[2];
        FUN_18049c9e0(param_2,local_res8[0]);
        return param_2;
      }
      puVar2 = (undefined8 *)(*(code *)((undefined **)*plVar1)[4])(plVar1,local_res8);
      FUN_18049c9e0(param_2,*puVar2);
      return param_2;
    }
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 18052bde0 size=15 ############

void FUN_18052bde0(longlong param_1,undefined8 param_2)

{
  FUN_1811fe4a0(param_1 + 0x338,param_2,0);
  return;
}



############ FUN_ 1812bfff0 size=10 ############

void FUN_1812bfff0(longlong *param_1)

{
                    /* WARNING: Could not recover jumptable at 0x0001812bfff3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0xe8))();
  return;
}



############ FUN_ 18052bdd0 size=15 ############

void FUN_18052bdd0(longlong param_1,undefined8 param_2,int param_3)

{
  FUN_1811fc760(param_1 + 0x338,param_2,(longlong)param_3);
  return;
}



############ FUN_ 1812bffb0 size=55 ############

void FUN_1812bffb0(longlong *param_1,undefined8 param_2,int param_3)

{
  if (*(code **)(*param_1 + 0xf8) == FUN_18052bdd0) {
    FUN_1811fc760(param_1 + 0x67,param_2,(longlong)param_3);
    return;
  }
  (**(code **)(*param_1 + 0xf8))();
  return;
}



############ FUN_ 18052c490 size=14 ############

void FUN_18052c490(longlong param_1)

{
  .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
            (param_1,*(undefined8 *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x38));
  return;
}



############ FUN_ 1804d7000 size=33 ############

longlong FUN_1804d7000(undefined8 param_1,longlong param_2)

{
  *(undefined8 *)(param_2 + 0x38) = 0;
  *(undefined1 **)(param_2 + 0x50) = &DAT_1821dbf98;
  *(undefined1 **)(param_2 + 0x58) = &DAT_1821dbf98;
  *(undefined8 *)(param_2 + 0x40) = 0;
  *(undefined8 *)(param_2 + 0x48) = 0;
  return param_2;
}



############ FUN_ 1804d7030 size=10 ############

void FUN_1804d7030(longlong *param_1)

{
                    /* WARNING: Could not recover jumptable at 0x0001804d7033. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x150))();
  return;
}



############ FUN_ 18052fd40 size=38 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(longlong param_1)

{
  *(undefined4 *)(param_1 + 0x2404cc) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x2404c0));
}



############ FUN_ 18052ce00 size=98 ############

void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1)

{
  float fVar1;
  
  .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__();
  fVar1 = *(float *)(param_1 + 0x3fc);
  *(float *)(param_1 + 0x3fc) = *(float *)(param_1 + 0x24);
  if (fVar1 != *(float *)(param_1 + 0x24)) {
    (**(code **)(*(longlong *)(param_1 + 0x3d8) + 0x20))((longlong *)(param_1 + 0x3d8));
  }
  *(undefined4 *)(param_1 + 0x240458) = 4;
  *(undefined4 *)(param_1 + 0x240467) = 0x1010101;
  *(undefined4 *)(param_1 + 0x24046b) = 0x1010101;
  return;
}



############ FUN_ 18052cec0 size=88 ############

void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x2404cc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x2404cc) <= iVar1) &&
       (iVar1 = *(int *)(param_1 + 0x2404cc) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x2404c0) + (longlong)iVar1 * 8));
  }
  return;
}



############ FUN_ 18052ce90 size=48 ############

undefined1 .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(longlong param_1)

{
  if ((*(char *)(param_1 + 0x240464) != '\0') && (*(char *)(param_1 + 0x240464) != '\0')) {
    *(undefined1 *)(param_1 + 0x240464) = 0;
    FUN_18052fbd0();
  }
  return 0;
}



############ FUN_ 18052ce80 size=14 ############

bool .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1)

{
  char cVar1;
  
  LOCK();
  cVar1 = *(char *)(param_1 + 0x2404bd);
  *(char *)(param_1 + 0x2404bd) = '\0';
  UNLOCK();
  return cVar1 != '\0';
}



############ FUN_ 18052ce70 size=9 ############

undefined4 .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(void)

{
  return DAT_1824c3ea4;
}



############ FUN_ 180546620 size=62 ############

undefined8 *
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::WindowsMediaAudioFormat::vftable;
  FUN_1813affa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813afeb0 size=43 ############

undefined8 *
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = 0;
  param_2[1] = 0;
  FUN_18048c4c0(param_2,*(undefined8 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x1c));
  return param_2;
}



############ FUN_ 1813afef0 size=130 ############

void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
               (longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  char cVar2;
  undefined8 *puVar3;
  undefined8 *local_20;
  int local_14;
  
  (**(code **)(*param_1 + 8))(param_1,&local_20,param_3,param_4,0xfffffffffffffffe);
  puVar1 = local_20 + local_14;
  puVar3 = local_20;
  while( true ) {
    if (puVar3 == puVar1) {
      FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
      free(local_20);
    }
    cVar2 = FUN_18123fe10(param_2,*puVar3);
    if (cVar2 != '\0') break;
    puVar3 = puVar3 + 1;
  }
  FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
  free(local_20);
}



############ FUN_ 18136cc80 size=13 ############

undefined8 *
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = 0;
  param_2[1] = 0;
  return param_2;
}



############ FUN_ 18136cc60 size=13 ############

undefined8 *
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = 0;
  param_2[1] = 0;
  return param_2;
}



############ FUN_ 1813afd80 size=80 ############

void .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
               (undefined8 param_1,undefined8 param_2)

{
  undefined1 auStack_58 [32];
  void *local_38 [5];
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  FUN_18124a040(local_38,8);
  FUN_18123c5f0(param_2,local_38);
                    /* WARNING: Subroutine does not return */
  free(local_38[0]);
}



############ FUN_ 1813afe80 size=13 ############

undefined8 *
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = 0;
  param_2[1] = 0;
  return param_2;
}



############ FUN_ 18136cbb0 size=108 ############

undefined8 *
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  uVar1 = FUN_1811316e0(0x90,param_2,param_3,param_4,0xfffffffffffffffe);
  puVar2 = (undefined8 *)FUN_180545be0(uVar1,param_2);
  if ((double)puVar2[1] <= 0.0) {
    if ((char)param_3 == '\0') {
      puVar2[10] = 0;
    }
    (**(code **)*puVar2)(puVar2,1);
    puVar2 = (undefined8 *)0x0;
  }
  return puVar2;
}



############ FUN_ 1813afe40 size=32 ############

undefined8
.?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__
          (undefined8 param_1,undefined8 *param_2)

{
  if (param_2 != (undefined8 *)0x0) {
    (**(code **)*param_2)(param_2,1);
  }
  return 0;
}



############ FUN_ 18053e010 size=47 ############

void FUN_18053e010(undefined8 *param_1)

{
  *param_1 = juce::OggReader::vftable;
  FUN_181371350(param_1 + 0xc);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x7c]);
}



############ FUN_ 1813af160 size=29 ############

undefined8 FUN_1813af160(longlong param_1,undefined8 param_2)

{
  FUN_1812b1fe0(param_2,*(undefined4 *)(param_1 + 0x20));
  return param_2;
}



############ FUN_ 1813aed60 size=24 ############

longlong FUN_1813aed60(longlong param_1)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 0x18);
  if (*(char *)(param_1 + 0x20) != '\0') {
    lVar1 = lVar1 % *(longlong *)(*(longlong *)(param_1 + 8) + 0x18);
  }
  return lVar1;
}



############ FUN_ 1813aeda0 size=9 ############

undefined8 FUN_1813aeda0(longlong param_1)

{
  return *(undefined8 *)(*(longlong *)(param_1 + 8) + 0x18);
}



############ FUN_ 1805384a8 size=12 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1)

{
  .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(param_1 + -0x150);
  return;
}



############ FUN_ 18052bd00 size=189 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  undefined1 uVar2;
  int iVar3;
  undefined1 auStack_58 [32];
  longlong local_38;
  undefined8 local_30;
  undefined8 *local_28;
  ulonglong local_20;
  
  local_30 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_38 = *(longlong *)(param_1 + 0x478);
  _Memory = (uint *)(local_38 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_28 = param_3;
  iVar3 = FUN_18048cbc0(param_2,local_38);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    uVar2 = FUN_180528b30(param_1 + 0x470);
    *(undefined1 *)(param_1 + 0x404) = uVar2;
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 180536b60 size=22 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  *param_2 = std::_Func_impl_no_alloc<<lambda_31112e0b8380e26aebb588356a79bbf7>,void,float>::vftable
  ;
  uVar1 = *(undefined8 *)(param_1 + 0x10);
  param_2[1] = *(undefined8 *)(param_1 + 8);
  param_2[2] = uVar1;
  return param_2;
}



############ FUN_ 1805379a0 size=104 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1,undefined4 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  
  uVar1 = *(uint *)(param_1 + 8);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168);
  lVar3 = lVar2 + 0x3d8;
  if (uVar1 < *(uint *)(lVar2 + 0x444)) {
    lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar4 = 0;
  }
  *(undefined4 *)(lVar4 + 0x80c) = *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x240467) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101;
    FUN_18052fc30(lVar3);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1;
  FUN_18052fc30(lVar3);
  return;
}



############ FUN_ 180536b50 size=8 ############

TypeDescriptor *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (void)

{
  return &<lambda_31112e0b8380e26aebb588356a79bbf7>::RTTI_Type_Descriptor;
}



############ FUN_ 18048dc80 size=15 ############

void .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(void *param_1,char param_2)

{
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180536850 size=22 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_9e6d435da2f4f474e078479ad72b1896>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537e90 size=150 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1,float *param_2)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = (int)*param_2;
  if ((*(char *)(*(longlong *)(param_1 + 8) + 0x41) != '\0') &&
     (cVar2 = FUN_180528d50(), cVar2 != '\0')) {
    return;
  }
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
  *(undefined1 *)(lVar1 + 0x3cc) = 1;
  *(undefined1 *)(lVar1 + 0x1b6) = 1;
  if (iVar3 == 1) {
    *(undefined4 *)(lVar1 + 0x1ac) = 4;
  }
  else if (iVar3 == 2) {
    *(undefined4 *)(lVar1 + 0x1ac) = 8;
  }
  else if (iVar3 == 3) {
    *(undefined4 *)(lVar1 + 0x1ac) = 0x10;
  }
  else {
    *(undefined4 *)(lVar1 + 0x1ac) = 2;
  }
  (**(code **)(**(longlong **)(*(longlong *)(param_1 + 8) + 0x168) + 0x20))();
  return;
}



############ FUN_ 180536840 size=8 ############

TypeDescriptor *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (void)

{
  return &<lambda_9e6d435da2f4f474e078479ad72b1896>::RTTI_Type_Descriptor;
}



############ FUN_ 18048db00 size=15 ############

void .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(void *param_1,char param_2)

{
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180536f20 size=14 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_8d94184451037e5e93fc8fa5c5bbd3ca>,juce::String,float>
             ::vftable;
  return param_2;
}



############ FUN_ 180537290 size=41 ############

undefined8
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (undefined8 param_1,undefined8 param_2,float *param_3)

{
  FUN_1812339a0(param_2,(double)*param_3,1);
  return param_2;
}



############ FUN_ 180536f10 size=8 ############

TypeDescriptor *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (void)

{
  return &<lambda_8d94184451037e5e93fc8fa5c5bbd3ca>::RTTI_Type_Descriptor;
}



############ FUN_ 180536610 size=30 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  *param_2 = std::
             _Func_impl_no_alloc<std::_Binder<std::_Unforced,void_(__cdecl_CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>::*)(void)___ptr64,CloudyAudioProcessor<class_Soothe2ModuleBase<float,2>,class_Soothe2ModuleDecryptor,class_ParameterStates,float>*___ptr64>,void>
             ::vftable;
  uVar1 = *(undefined8 *)(param_1 + 0x10);
  param_2[1] = *(undefined8 *)(param_1 + 8);
  param_2[2] = uVar1;
  param_2[3] = *(undefined8 *)(param_1 + 0x18);
  return param_2;
}



############ FUN_ 1805380e0 size=35 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1)

{
                    /* WARNING: Could not recover jumptable at 0x000180538100. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(param_1 + 8))
            ((longlong)(int)*(undefined8 *)(param_1 + 0x10) + *(longlong *)(param_1 + 0x18));
  return;
}



############ FUN_ 180536600 size=8 ############

TypeDescriptor *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (void)

{
  return &std::
          _Binder<std::_Unforced,void_(__cdecl_CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>::*)(void)___ptr64,CloudyAudioProcessor<class_Soothe2ModuleBase<float,2>,class_Soothe2ModuleDecryptor,class_ParameterStates,float>*___ptr64>
          ::RTTI_Type_Descriptor;
}



############ FUN_ 1805365f0 size=15 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (void *param_1,char param_2)

{
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180536d60 size=22 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_51d5774fbfd8f88fa06d7066abba0dc7>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 1805375e0 size=73 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = **(longlong **)(param_1 + 8);
  if (*(int *)(lVar1 + 0x444) != 0) {
    *(undefined4 *)(**(longlong **)(lVar1 + 0x438) + 0x80c) = *param_2;
    *(undefined1 *)(lVar1 + 0x240467) = 1;
    FUN_18052fc30();
    return;
  }
  uRam000000000000080c = *param_2;
  *(undefined1 *)(lVar1 + 0x240467) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 180536d50 size=8 ############

TypeDescriptor *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (void)

{
  return &<lambda_51d5774fbfd8f88fa06d7066abba0dc7>::RTTI_Type_Descriptor;
}



############ FUN_ 180536dc0 size=22 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_698e825066a2aadbe3940a3035ec5f66>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 1805374e0 size=163 ############

void .?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
     ::
     vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
               (longlong param_1,float *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  
  fVar3 = logf(DAT_1824c43e8);
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168);
  lVar2 = *plVar1;
  fVar4 = powf(*param_2 * DAT_1824c3cb8,DAT_1824c3ef8);
  fVar5 = logf(DAT_1824c45e4);
  fVar3 = expf(fVar4 * (fVar5 - fVar3) + fVar3);
                    /* WARNING: Could not recover jumptable at 0x000180537580. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(lVar2 + 0x80))(plVar1,fVar3);
  return;
}



############ FUN_ 180536db0 size=8 ############

TypeDescriptor *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (void)

{
  return &<lambda_698e825066a2aadbe3940a3035ec5f66>::RTTI_Type_Descriptor;
}



############ FUN_ 1805367f0 size=22 ############

undefined8 *
.?AV?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@
::
vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_add1e0340dff125b873661970d90f272>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537f60 size=25 ############

void .?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
     ::
     vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
               (longlong param_1,undefined4 *param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168);
                    /* WARNING: Could not recover jumptable at 0x000180537f72. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar1 + 0x90))(plVar1,*param_2);
  return;
}



############ FUN_ 1805367e0 size=8 ############

TypeDescriptor *
.?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
::
vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
          (void)

{
  return &<lambda_add1e0340dff125b873661970d90f272>::RTTI_Type_Descriptor;
}



############ FUN_ 1805366d0 size=22 ############

undefined8 *
.?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
::
vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_b53b83b39666016e7fd61bbfe94e926b>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180538010 size=25 ############

void .?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
     ::
     vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
               (longlong param_1,undefined4 *param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168);
                    /* WARNING: Could not recover jumptable at 0x000180538022. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar1 + 0x98))(plVar1,*param_2);
  return;
}



############ FUN_ 1805366c0 size=8 ############

TypeDescriptor *
.?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
::
vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
          (void)

{
  return &<lambda_b53b83b39666016e7fd61bbfe94e926b>::RTTI_Type_Descriptor;
}



############ FUN_ 180536a30 size=14 ############

undefined8 *
.?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
::
vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = std::
             _Func_impl_no_alloc<<lambda_b7d2bd8842d92dbf1cffd3c9b54d271d>,float,juce::String_const&___ptr64>
             ::vftable;
  return param_2;
}



############ FUN_ 18052d580 size=47 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
               (undefined8 *param_1)

{
  *param_1 = AudioProcessingModule<float,2>::vftable;
  *(undefined4 *)((longlong)param_1 + 0x54) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 18052cfa0 size=13 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
               (longlong *param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
                    /* WARNING: Could not recover jumptable at 0x00018052cfa9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x18))(param_1,param_3,param_4);
  return;
}



############ FUN_ 180536aa0 size=22 ############

undefined8 *
.?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_877dbdc3112e507c315fe2bc19283377>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537b10 size=74 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
               (longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = **(longlong **)(param_1 + 8);
  if (5 < *(uint *)(lVar1 + 0x444)) {
    *(undefined4 *)(*(longlong *)(*(longlong *)(lVar1 + 0x438) + 0x28) + 0x80c) = *param_2;
    *(undefined1 *)(lVar1 + 0x24046c) = 1;
    FUN_18052fc30();
    return;
  }
  uRam000000000000080c = *param_2;
  *(undefined1 *)(lVar1 + 0x24046c) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 180536a90 size=8 ############

TypeDescriptor * .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(void)

{
  return &<lambda_877dbdc3112e507c315fe2bc19283377>::RTTI_Type_Descriptor;
}



############ FUN_ 180536eb0 size=22 ############

undefined8 *
.?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_83307b9da00f7f8af6fa0362f49581a9>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 1805373c0 size=41 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
               (longlong param_1,float *param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168);
                    /* WARNING: Could not recover jumptable at 0x0001805373e2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar1 + 0xb8))(plVar1,*param_2 == 0.0);
  return;
}



############ FUN_ 180536ea0 size=8 ############

TypeDescriptor * .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(void)

{
  return &<lambda_83307b9da00f7f8af6fa0362f49581a9>::RTTI_Type_Descriptor;
}



############ FUN_ 1805365d0 size=30 ############

undefined8 *
.?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::
             _Func_impl_no_alloc<<lambda_b1ba72300d1e52c54d4eb8bbba066b01>,float,float,float,float>
             ::vftable;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  *(undefined4 *)(param_2 + 2) = *(undefined4 *)(param_1 + 0x10);
  return param_2;
}



############ FUN_ 180538110 size=44 ############

void .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__
               (longlong param_1,undefined8 param_2,undefined8 param_3,float *param_4)

{
  float fVar1;
  
  fVar1 = logf(*param_4);
  powf((fVar1 - *(float *)(param_1 + 8)) * *(float *)(param_1 + 0xc),*(float *)(param_1 + 0x10));
  return;
}



############ FUN_ 1805365c0 size=8 ############

TypeDescriptor * .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(void)

{
  return &<lambda_b1ba72300d1e52c54d4eb8bbba066b01>::RTTI_Type_Descriptor;
}



############ FUN_ 1805346b0 size=56 ############

void .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__(undefined8 *param_1)

{
  FUN_1812a5870(param_1 + 0xc);
  *param_1 = AudioProcessingModule<float,2>::vftable;
  *(undefined4 *)((longlong)param_1 + 0x54) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 18052fb50 size=119 ############

void .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__
               (longlong param_1,float *param_2,int param_3)

{
  longlong lVar1;
  double dVar2;
  
  lVar1 = (longlong)param_3;
  dVar2 = (double)*param_2 * *(double *)(param_1 + 0xb8) + *(double *)(param_1 + 0x98 + lVar1 * 8);
  *(double *)(param_1 + 0x98 + lVar1 * 8) =
       ((double)*param_2 * *(double *)(param_1 + 0xc0) - dVar2 * *(double *)(param_1 + 0xd0)) +
       *(double *)(param_1 + 0xa8 + lVar1 * 8);
  *(double *)(param_1 + 0xa8 + lVar1 * 8) =
       (double)*param_2 * *(double *)(param_1 + 200) - dVar2 * *(double *)(param_1 + 0xd8);
  *param_2 = (float)dVar2;
  return;
}



############ FUN_ 18052fb30 size=31 ############

void .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__(longlong param_1)

{
  *(undefined8 *)(param_1 + 0xa8) = 0;
  *(undefined8 *)(param_1 + 0x98) = 0;
  *(undefined8 *)(param_1 + 0xb0) = 0;
  *(undefined8 *)(param_1 + 0xa0) = 0;
  return;
}



############ FUN_ 180538460 size=12 ############

void .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__(longlong param_1)

{
  .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(param_1 + -0x3d0);
  return;
}



############ FUN_ 180529c50 size=8 ############

void .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__(longlong param_1)

{
  *(undefined1 *)(param_1 + 0x5404dd) = 1;
  return;
}



############ FUN_ 180589260 size=278 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  
  *param_1 = Soothe2FilterGraph::vftable;
  iVar5 = 0;
  param_1[0x16] = Soothe2FilterGraph::vftable;
  param_1[0x19] = Soothe2FilterGraph::vftable;
  param_1[0x1c] = Soothe2FilterGraph::vftable;
  param_1[0x1d] = Soothe2FilterGraph::vftable;
  param_1[0x1e] = Soothe2FilterGraph::vftable;
  param_1[0x138d] = Soothe2FilterGraph::vftable;
  lVar2 = *(longlong *)(param_1[0x138e] + 0x168);
  lVar4 = 0;
  iVar1 = *(int *)(lVar2 + 0x2404cc);
  lVar3 = *(longlong *)(lVar2 + 0x2404c0);
  if (0 < iVar1) {
    do {
      if (param_1 + 0x138d == *(undefined8 **)(lVar3 + lVar4 * 8)) {
        _Dst = (void *)(lVar3 + (longlong)iVar5 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar5) + -1) << 3);
        *(int *)(lVar2 + 0x2404cc) = *(int *)(lVar2 + 0x2404cc) + -1;
        iVar1 = *(int *)(lVar2 + 0x2404cc);
        iVar5 = 0;
        if (0 < iVar1 * 2) {
          iVar5 = iVar1 * 2;
        }
        if (iVar5 < *(int *)(lVar2 + 0x2404c8)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(lVar2 + 0x2404c8)) {
            FUN_18047cb30((longlong *)(lVar2 + 0x2404c0));
          }
        }
        break;
      }
      iVar5 = iVar5 + 1;
      lVar4 = lVar4 + 1;
    } while (lVar4 < iVar1);
  }
  *(undefined4 *)((longlong)param_1 + 0x209c8c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x41390]);
}



############ FUN_ 18058b4d0 size=36 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 0xf8);
  if (lVar1 != 0) {
    *(undefined4 *)(lVar1 + 0x204) = 0x3f800000;
    FUN_18058cb60(lVar1,*(undefined4 *)(lVar1 + 0x208));
    return;
  }
  return;
}



############ FUN_ 18058b380 size=324 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  float fVar8;
  float fStackX_c;
  undefined8 local_38;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  lVar1 = *(longlong *)(param_1 + 0xf8);
  if (lVar1 != 0) {
    uVar7 = 0;
    iVar2 = *(int *)(*(longlong *)(param_1 + 0x9c60) + 0x28) + -10;
    iVar3 = *(int *)(*(longlong *)(param_1 + 0x9c60) + 0x2c) + -10;
    iVar4 = 0;
    if (0 < iVar2) {
      iVar4 = iVar2;
    }
    iVar2 = 0;
    if (0 < iVar3) {
      iVar2 = iVar3;
    }
    fVar8 = (float)*param_2;
    if ((((fVar8 < DAT_1824c4360) ||
         (fStackX_c = (float)((ulonglong)*param_2 >> 0x20), fStackX_c < DAT_1824c4360)) ||
        ((float)iVar4 + DAT_1824c4360 <= fVar8)) || ((float)iVar2 + DAT_1824c4360 <= fStackX_c)) {
      puVar5 = *(undefined8 **)(lVar1 + 0xf0);
      *(undefined4 *)(lVar1 + 0x204) = 0;
      uVar6 = (ulonglong)((longlong)(puVar5 + *(int *)(lVar1 + 0xfc)) + (7 - (longlong)puVar5)) >> 3
      ;
      if (puVar5 + *(int *)(lVar1 + 0xfc) < puVar5) {
        uVar6 = uVar7;
      }
      if (uVar6 != 0) {
        do {
          FUN_181342bf0(*puVar5);
          uVar7 = uVar7 + 1;
          puVar5 = puVar5 + 1;
        } while (uVar7 != uVar6);
      }
      uStack_30 = *(undefined4 *)(lVar1 + 0x28);
      uStack_2c = *(undefined4 *)(lVar1 + 0x2c);
      local_38 = 0;
      FUN_181342870(lVar1,&local_38,1);
    }
  }
  return;
}



############ FUN_ 18134bb30 size=93 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,undefined8 param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 local_68 [96];
  
  if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) {
    lVar1 = **(longlong **)(param_1 + 0x18);
    uVar2 = FUN_181339840(param_2,local_68);
    (**(code **)(lVar1 + 0x40))(*(undefined8 *)(param_1 + 0x18),uVar2,param_3);
  }
  return;
}



############ FUN_ 18134bad0 size=82 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,undefined8 param_2,undefined4 param_3)

{
  undefined8 uVar1;
  undefined1 local_78 [112];
  
  if (*(longlong *)(param_1 + 0x18) != 0) {
    uVar1 = FUN_181339840(param_2,local_78);
    (**(code **)(**(longlong **)(param_1 + 0x18) + 0x48))
              (*(longlong **)(param_1 + 0x18),uVar1,param_3);
  }
  return;
}



############ FUN_ 18134c900 size=397 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  code *pcVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong lVar6;
  uint *_Memory;
  int iVar7;
  bool bVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [16];
  
  lVar6 = *param_2;
  if (*(longlong *)(param_1 + 8) == lVar6) {
    iVar7 = 0;
  }
  else {
    iVar7 = FUN_18048cbc0(*(undefined8 *)(param_1 + 8),lVar6,param_3,param_4,0xfffffffffffffffe);
  }
  if (iVar7 != 0) {
    if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar6 = *(longlong *)(param_1 + 8);
    *(longlong *)(param_1 + 8) = *param_2;
    UNLOCK();
    _Memory = (uint *)(lVar6 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if (((*(byte *)(param_1 + 0xa8) & 1) != 0) &&
       (plVar4 = (longlong *)FUN_1812d2bd0(param_1), plVar4 != (longlong *)0x0)) {
      if ((undefined **)*plVar4 == juce::HWNDComponentPeer::vftable) {
        puVar5 = (undefined8 *)FUN_18049a930(local_res10);
        SetWindowTextW((HWND)plVar4[0x11],(LPCWSTR)*puVar5);
      }
      else {
        (*(code *)((undefined **)*plVar4)[3])(plVar4,param_2);
      }
    }
    FUN_1804de690(&local_res8,param_1);
    puVar5 = local_res8;
    iVar7 = *(int *)(param_1 + 0x8c);
    bVar8 = local_res8 == (undefined8 *)0x0;
    while( true ) {
      if (bVar8) {
        lVar6 = 0;
      }
      else {
        lVar6 = puVar5[2];
      }
      if ((lVar6 == 0) || (iVar7 < 1)) break;
      iVar7 = iVar7 + -1;
      if ((*(int *)(param_1 + 0x8c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x8c) + -1, iVar7 < 0))
      break;
      plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x80) + (longlong)iVar7 * 8);
      pcVar3 = *(code **)(*plVar4 + 0x30);
      if (pcVar3 != .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__) {
        (*pcVar3)(plVar4,param_1);
      }
    }
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18134c760 size=397 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,byte param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong lVar6;
  bool bVar7;
  undefined8 *local_res8;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  if ((*(byte *)(param_1 + 0xa8) >> 1 & 1) != param_2) {
    FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) & 0xfd;
    *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) | (param_2 & 1) * '\x02';
    lVar6 = 0;
    if (param_2 == 0) {
      FUN_181342b10(param_1);
    }
    else {
      uStack_1c = *(undefined4 *)(param_1 + 0x2c);
      uStack_20 = *(undefined4 *)(param_1 + 0x28);
      local_28 = 0;
      uStack_24 = 0;
      FUN_181342870(param_1,&local_28,1);
    }
    FUN_18133f790();
    if (param_2 == 0) {
      FUN_1804e5060(param_1);
      for (lVar4 = DAT_182673708; lVar4 != param_1; lVar4 = *(longlong *)(lVar4 + 0x18)) {
        if (lVar4 == 0) goto LAB_18134c84f;
      }
      if (*(longlong *)(param_1 + 0x18) == 0) {
        FUN_18133eae0(1);
      }
      else {
        FUN_18133ed60(*(longlong *)(param_1 + 0x18),2,1);
      }
    }
LAB_18134c84f:
    puVar3 = local_res8;
    bVar7 = local_res8 != (undefined8 *)0x0;
    lVar4 = lVar6;
    if (bVar7) {
      lVar4 = local_res8[2];
    }
    if (lVar4 != 0) {
      FUN_1813452b0(param_1);
      if (bVar7) {
        lVar6 = puVar3[2];
      }
      if (((lVar6 != 0) && ((*(byte *)(param_1 + 0xa8) & 1) != 0)) &&
         (plVar5 = (longlong *)FUN_18134c2e0(param_1), plVar5 != (longlong *)0x0)) {
        (**(code **)(*plVar5 + 0x10))(plVar5,param_2);
        FUN_181343670(param_1);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18134c3a0 size=933 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong *param_1,uint param_2,undefined8 param_3)

{
  int *piVar1;
  undefined8 *puVar2;
  int iVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  char cVar7;
  int iVar8;
  longlong *plVar9;
  ulonglong *puVar10;
  ulonglong uVar11;
  undefined4 uVar12;
  longlong *plVar13;
  undefined8 *puVar14;
  ulonglong uVar15;
  undefined4 uVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  char local_res20;
  undefined8 *local_88;
  longlong local_80;
  undefined8 local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  
  local_78 = 0xfffffffffffffffe;
  if ((*(byte *)(param_1 + 0x15) >> 2 & 1) == 0) {
    param_2 = param_2 | 0x40000000;
  }
  else {
    param_2 = param_2 & 0xbfffffff;
  }
  plVar9 = (longlong *)FUN_1812d2bd0();
  if ((plVar9 != (longlong *)0x0) && (param_2 == *(uint *)(plVar9 + 2))) {
    return;
  }
  FUN_1804de690(&local_88,param_1);
  uVar15 = 0;
  uVar4 = uVar15;
  puVar6 = local_88;
  for (plVar13 = param_1; local_88 = puVar6, plVar13 != (longlong *)0x0;
      plVar13 = (longlong *)plVar13[3]) {
    puVar10 = (ulonglong *)FUN_18051e290(local_70,plVar13,uVar4);
    uVar4 = *puVar10;
    puVar6 = local_88;
  }
  cVar7 = '\0';
  local_res20 = '\0';
  local_80 = 0;
  uVar16 = 0;
  uVar17 = 0;
  uVar18 = 0;
  uVar19 = 0;
  local_58 = 0;
  uStack_50 = 0;
  iVar8 = -1;
  if (plVar9 != (longlong *)0x0) {
    local_68 = plVar9;
    cVar7 = (**(code **)(*plVar9 + 0x78))(plVar9);
    local_res20 = (**(code **)(*plVar9 + 0x68))(plVar9);
    local_80 = plVar9[5];
    uVar16 = *(undefined4 *)((longlong)plVar9 + 0x14);
    uVar17 = (undefined4)plVar9[3];
    local_58 = *(undefined8 *)((longlong)plVar9 + 0x14);
    uVar18 = *(undefined4 *)((longlong)plVar9 + 0x1c);
    uVar19 = (undefined4)plVar9[4];
    uStack_50 = *(undefined8 *)((longlong)plVar9 + 0x1c);
    iVar8 = (**(code **)(*plVar9 + 0x100))(plVar9);
    *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xfe;
    if (DAT_182673700 == 0) {
      local_60 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_60);
    }
    FUN_180488600(DAT_182673700 + 0x58,param_1);
    FUN_181343670(param_1);
    uVar11 = uVar15;
    if (puVar6 != (undefined8 *)0x0) {
      uVar11 = puVar6[2];
    }
    if (uVar11 == 0) {
      (**(code **)*plVar9)(plVar9,1);
      goto LAB_18134c6f7;
    }
    FUN_18134bfe0(param_1,uVar4 & 0xffffffff,uVar4 >> 0x20,(int)param_1[5],
                  *(undefined4 *)((longlong)param_1 + 0x2c));
    (**(code **)*plVar9)(plVar9,1);
  }
  lVar5 = param_1[3];
  if (lVar5 != 0) {
    plVar9 = *(longlong **)(lVar5 + 0x40);
    for (plVar13 = plVar9; plVar13 != plVar9 + *(int *)(lVar5 + 0x4c); plVar13 = plVar13 + 1) {
      if (param_1 == (longlong *)*plVar13) {
        uVar12 = (undefined4)((longlong)plVar13 - (longlong)plVar9 >> 3);
        goto LAB_18134c588;
      }
    }
    uVar12 = 0xffffffff;
LAB_18134c588:
    FUN_181343a90(lVar5,uVar12,1);
  }
  if (puVar6 != (undefined8 *)0x0) {
    uVar15 = puVar6[2];
  }
  if (uVar15 != 0) {
    *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 1;
    plVar9 = (longlong *)(**(code **)(*param_1 + 0x150))(param_1,param_2,param_3);
    if (DAT_182673700 == 0) {
      local_60 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_60);
    }
    lVar5 = DAT_182673700;
    plVar13 = (longlong *)(DAT_182673700 + 0x58);
    puVar14 = (undefined8 *)*plVar13;
    iVar3 = *(int *)(DAT_182673700 + 100);
    puVar2 = puVar14 + iVar3;
    for (; puVar14 != puVar2; puVar14 = puVar14 + 1) {
      if (param_1 == (longlong *)*puVar14) goto LAB_18134c651;
    }
    if (*(int *)(DAT_182673700 + 0x60) < iVar3 + 1) {
      FUN_18047cb30(plVar13,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(lVar5 + 100);
    *(int *)(lVar5 + 100) = iVar3 + 1;
    *(longlong **)(*plVar13 + (longlong)iVar3 * 8) = param_1;
LAB_18134c651:
    param_1[4] = uVar4;
    FUN_18134b470(plVar9);
    if (-1 < iVar8) {
      (**(code **)(*plVar9 + 0x108))(plVar9,iVar8);
    }
    (**(code **)(*plVar9 + 0x10))(plVar9,*(byte *)(param_1 + 0x15) >> 1 & 1);
    plVar9 = (longlong *)FUN_1812d2bd0(param_1);
    if (plVar9 != (longlong *)0x0) {
      if (cVar7 != '\0') {
        (**(code **)(*plVar9 + 0x70))(plVar9,1);
        *(undefined4 *)((longlong)plVar9 + 0x14) = uVar16;
        *(undefined4 *)(plVar9 + 3) = uVar17;
        *(undefined4 *)((longlong)plVar9 + 0x1c) = uVar18;
        *(undefined4 *)(plVar9 + 4) = uVar19;
      }
      if (local_res20 != '\0') {
        (**(code **)(*plVar9 + 0x60))(plVar9,1);
      }
      if ((*(byte *)((longlong)param_1 + 0xa9) & 1) != 0) {
        (**(code **)(*plVar9 + 0xa8))(plVar9,1);
      }
      plVar9[5] = local_80;
      FUN_18134bdf0(param_1);
      FUN_181343670(param_1);
    }
  }
LAB_18134c6f7:
  if (puVar6 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar6 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_88)(local_88,1);
    }
  }
  return;
}



############ FUN_ 18134c270 size=69 ############

undefined4 .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(void)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  return *(undefined4 *)(DAT_182673700 + 0xc0);
}



############ FUN_ 1805689c0 size=60 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong *param_1)

{
  if ((char)param_1[0x18] == '\0') {
    FUN_180569ff0();
    if (param_1[0x17] != 0) {
      (**(code **)(*param_1 + 0x158))(param_1);
      *(undefined1 *)(param_1 + 0x18) = 1;
    }
  }
  return;
}



############ FUN_ 18134be30 size=195 ############

uint .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,undefined4 param_2,undefined4 param_3)

{
  longlong *plVar1;
  ulonglong uVar2;
  char cVar3;
  uint uVar4;
  ulonglong *puVar5;
  longlong lVar6;
  undefined1 local_res20 [8];
  
  uVar4 = 0;
  if ((*(byte *)(param_1 + 0xa8) & 8) == 0) {
    return 1;
  }
  if ((*(byte *)(param_1 + 0xa8) & 0x10) != 0) {
    uVar4 = *(int *)(param_1 + 0x4c) - 1;
    lVar6 = (longlong)(int)uVar4;
    if (-1 < (int)uVar4) {
      do {
        plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x40) + lVar6 * 8);
        if ((*(byte *)(plVar1 + 0x15) & 2) != 0) {
          puVar5 = (ulonglong *)FUN_18051e060(local_res20,plVar1,CONCAT44(param_3,param_2));
          uVar2 = *puVar5;
          if ((((uint)uVar2 < *(uint *)(plVar1 + 5)) &&
              ((uint)(uVar2 >> 0x20) < *(uint *)((longlong)plVar1 + 0x2c))) &&
             (cVar3 = (**(code **)(*plVar1 + 0x98))(plVar1,uVar2 & 0xffffffff,uVar2 >> 0x20),
             cVar3 != '\0')) {
            uVar4 = 1;
          }
          else {
            uVar4 = 0;
          }
          if ((char)uVar4 != '\0') {
            return 1;
          }
        }
        lVar6 = lVar6 + -1;
      } while (-1 < lVar6);
    }
  }
  return uVar4 & 0xffffff00;
}



############ FUN_ 18134bcf0 size=66 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1)

{
  undefined8 *puVar1;
  
  if (((*(byte *)(param_1 + 0xa8) & 0x40) == 0) &&
     (*(longlong **)(param_1 + 0x18) != (longlong *)0x0)) {
                    /* WARNING: Could not recover jumptable at 0x00018134bd0d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(**(longlong **)(param_1 + 0x18) + 0xa8))();
    return;
  }
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = juce::KeyboardFocusTraverser::vftable;
  return;
}



############ FUN_ 18134bc50 size=126 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1)

{
  longlong *plVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  else {
    plVar1 = (longlong *)FUN_1812d2bd0();
    if (plVar1 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018134bc94. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*plVar1 + 0xf0))
                (plVar1,(float)(int)(0xff - (uint)*(byte *)(param_1 + 0xac)) / DAT_1824c4548);
      return;
    }
  }
  return;
}



############ FUN_ 18134bc20 size=34 ############

longlong *
.?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
          (longlong param_1,longlong *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 0x58);
  if (lVar1 == 0) {
    *param_2 = 0;
    return param_2;
  }
  LOCK();
  *(int *)(lVar1 + 0x10) = *(int *)(lVar1 + 0x10) + 1;
  UNLOCK();
  *param_2 = lVar1;
  return param_2;
}



############ FUN_ 18058ad80 size=452 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong *param_1,undefined8 param_2)

{
  float fVar1;
  float fVar2;
  longlong lVar3;
  byte *pbVar4;
  int iVar5;
  float local_68 [3];
  undefined8 local_5c;
  undefined8 uStack_54;
  undefined8 local_4c;
  
  (**(code **)(*param_1 + 0x160))();
  fVar2 = DAT_1824c4548;
  fVar1 = DAT_1824c3c8c;
  iVar5 = 0;
  if (0 < (int)param_1[0x130f]) {
    pbVar4 = (byte *)((longlong)param_1 + 0x99c7);
    do {
      if (fVar1 <= (float)*pbVar4 / fVar2) {
        FUN_181296c00(param_2,*(undefined4 *)((longlong)param_1 + (longlong)iVar5 * 4 + 0x99c4));
        local_4c = 0x3f800000;
        local_68[0] = 1.0;
        local_68[1] = 0.0;
        local_68[2] = 0.0;
        local_5c = _DAT_1824c4780;
        uStack_54 = _UNK_1824c4788;
        FUN_181295d20(param_2,param_1 + ((longlong)iVar5 + 0x3d2) * 5,local_68,&local_5c);
      }
      iVar5 = iVar5 + 1;
      pbVar4 = pbVar4 + 4;
    } while (iVar5 < (int)param_1[0x130f]);
  }
  FUN_181296c00(param_2,(int)param_1[0x1338]);
  local_5c = _DAT_1824c4780;
  uStack_54 = _UNK_1824c4788;
  local_4c = 0x3f800000;
  if (*(code **)(param_1[0x16] + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (param_1[0x17] == 0) {
      FUN_180569ff0(param_1);
    }
    lVar3 = param_1[0x17];
  }
  else {
    lVar3 = (**(code **)(param_1[0x16] + 8))(param_1 + 0x16);
  }
  local_68[0] = *(float *)((longlong)param_1 + 0x99f4) * *(float *)(lVar3 + 0x88);
  local_68[1] = 0.0;
  local_68[2] = 0.0;
  FUN_181295d20(param_2,param_1 + 0x1315,local_68,&local_5c);
  if (*(code **)(*param_1 + 0x168) != _guard_check_icall) {
    (**(code **)(*param_1 + 0x168))(param_1,param_2);
    return;
  }
  return;
}



############ FUN_ 18134ba90 size=20 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1)

{
  if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018134ba9c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(**(longlong **)(param_1 + 0x18) + 0xe8))();
    return;
  }
  return;
}



############ FUN_ 18058af50 size=179 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(longlong param_1)

{
  float fVar1;
  
  if (*(longlong *)(param_1 + 0xf8) != 0) {
    FUN_18134bfe0(*(longlong *)(param_1 + 0xf8),0,0,*(undefined4 *)(param_1 + 0x28),
                  *(undefined4 *)(param_1 + 0x2c));
  }
  fVar1 = DAT_1824c3d8c;
  *(undefined4 *)(param_1 + 0x99f8) = 0x41200000;
  *(float *)(param_1 + 0x99dc) = (float)*(int *)(param_1 + 0x2c) * fVar1;
  *(float *)(param_1 + 0x99e0) = (float)*(int *)(param_1 + 0x28) / (float)*(int *)(param_1 + 0x9890)
  ;
  *(float *)(param_1 + 0x99fc) =
       (fVar1 / *(float *)(param_1 + 0x99e8)) * (float)*(int *)(param_1 + 0x9894);
  return;
}



############ FUN_ 18134b940 size=196 ############

void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___
               (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar1);
    FUN_1812a7230(puVar1 + 2);
    *puVar1 = juce::ModalComponentManager::vftable;
    puVar1[2] = juce::ModalComponentManager::vftable;
    puVar1[3] = 0;
    puVar1[4] = 0;
    DAT_182673c20 = puVar1;
  }
  FUN_18133b010(DAT_182673c20,1,param_3,param_4,uVar3);
  plVar2 = (longlong *)FUN_18134adf0(param_1);
  if (*(code **)(*plVar2 + 0x78) == FUN_1812c6070) {
                    /* WARNING: Could not recover jumptable at 0x00018134b9e5. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    MessageBeep(0);
    return;
  }
  (**(code **)(*plVar2 + 0x78))(plVar2);
  return;
}



############ FUN_ 18134b870 size=87 ############

void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__
               (undefined8 param_1,undefined4 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x158);
  FUN_18050dd00(uVar1,param_1,param_2,param_3,0);
  return;
}



############ FUN_ 181a06ff0 size=323 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AVSoothe2FilterGraph@@::vtbl___AVSoothe2FilterGraph__(longlong param_1,undefined8 param_2)

{
  float fVar1;
  longlong lVar2;
  byte local_res8;
  byte local_res9;
  byte local_resa;
  undefined1 local_resb;
  float local_48 [4];
  undefined8 local_38;
  undefined8 uStack_30;
  ulonglong local_28;
  
  if (*(int *)(*(longlong *)(*(longlong *)(param_1 + 0x9c70) + 0x168) + 0x30) != 1) {
    FUN_18049fa40(local_48,DAT_18262e938);
    FUN_18049fbb0(&local_res8,local_48[0],DAT_1824c3d18,local_48[2],
                  (char)((uint)DAT_18262e938 >> 0x18));
    FUN_181296c00(param_2,CONCAT13(local_resb,
                                   CONCAT12((char)(int)((float)local_resa * DAT_1824c3e14),
                                            CONCAT11((char)(int)((float)local_res9 * DAT_1824c3e14),
                                                     (char)(int)((float)local_res8 * DAT_1824c3e14))
                                           )));
    fVar1 = *(float *)(param_1 + 0x99f4);
    local_38 = _DAT_1824c4780;
    uStack_30 = _UNK_1824c4788;
    local_28 = (ulonglong)DAT_1824c3ea4;
    lVar2 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
    local_48[0] = fVar1 * *(float *)(lVar2 + 0x88);
    local_48[1] = 0.0;
    local_48[2] = 0.0;
    FUN_181295d20(param_2,param_1 + 0x209c80,local_48,&local_38);
  }
  return;
}



############ FUN_ 181a07170 size=1813 ############

void .?AVSoothe2FilterGraph@@::vtbl___AVSoothe2FilterGraph__(longlong param_1)

{
  float fVar1;
  float fVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong *plVar5;
  void *_Memory;
  double dVar6;
  char cVar7;
  int iVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  float *pfVar11;
  int iVar12;
  char *pcVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  undefined8 *puVar17;
  float *pfVar18;
  float *pfVar19;
  double dVar20;
  float fVar21;
  float fVar22;
  int local_res8 [2];
  int local_res10 [2];
  longlong local_res18;
  float *local_res20;
  void *local_188;
  undefined4 local_17c;
  undefined1 local_138 [24];
  float local_120 [56];
  
  iVar14 = 0;
  if (0 < *(int *)(param_1 + 0x9878)) {
    pcVar13 = (char *)(param_1 + 0x9a02);
    puVar17 = (undefined8 *)(param_1 + 0x9c8);
    do {
      if (*pcVar13 != '\0') {
        plVar5 = *(longlong **)(param_1 + 0x140);
        local_res10[0] = iVar14;
        if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        if ((undefined **)*plVar5 ==
            std::
            _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>
            ::vftable) {
          plVar5 = (longlong *)plVar5[8];
          local_res8[0] = iVar14;
          if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
            std::_Xbad_function_call();
          }
          uVar10 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8);
          *puVar17 = uVar10;
        }
        else {
          uVar10 = (*(code *)((undefined **)*plVar5)[2])(plVar5,local_res10);
          *puVar17 = uVar10;
        }
      }
      iVar14 = iVar14 + 1;
      puVar17 = puVar17 + 1;
      pcVar13 = pcVar13 + 1;
    } while (iVar14 < *(int *)(param_1 + 0x9878));
  }
  fVar2 = DAT_1824c41e0;
  fVar1 = DAT_1824c3ea4;
  pfVar11 = (float *)(*(longlong *)(param_1 + 0x9c78) + 0x2400d8);
  local_res10[0] = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x9c70) + 0x168) + 0x30);
  local_res20 = pfVar11;
  if (local_res10[0] == 2) {
    iVar14 = 0;
    do {
      iVar12 = 0;
      if (0 < *(int *)(param_1 + 0x9878)) {
        local_res18 = param_1 + 0x9c8;
        pfVar18 = pfVar11;
        do {
          if (iVar12 == 0) {
            iVar14 = __std_type_info_compare(0x182650db8,0x182650db8);
            if (iVar14 != 0) {
                    /* WARNING: Subroutine does not return */
              thunk_FUN_181ba94b0();
            }
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0();
          }
          plVar5 = *(longlong **)(param_1 + 0x180);
          local_res8[0] = iVar12;
          if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
            std::_Xbad_function_call();
          }
          cVar7 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8);
          if (cVar7 == '\0') {
            if (iVar14 == 0) {
              fVar21 = fVar1 - *pfVar18;
            }
            else {
              fVar21 = *pfVar18;
            }
            uVar3 = *(undefined4 *)(param_1 + 0x9890);
            fVar22 = fVar21 * fVar2;
            if (fVar1 <= fVar21 * fVar2) {
              fVar22 = fVar1;
            }
            iVar14 = __std_type_info_compare(0x182650db8,0x182650db8);
            if (iVar14 != 0) {
                    /* WARNING: Subroutine does not return */
              thunk_FUN_181ba94b0((double)(fVar1 - fVar22),param_1 + 0x209ca8,uVar3);
            }
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0();
          }
          local_res18 = local_res18 + 8;
          iVar12 = iVar12 + 1;
          pfVar18 = pfVar18 + 1;
          pfVar11 = local_res20;
        } while (iVar12 < *(int *)(param_1 + 0x9878));
      }
      iVar14 = iVar14 + 1;
    } while (iVar14 < 2);
  }
  else {
    iVar14 = 0;
    if (0 < *(int *)(param_1 + 0x9878)) {
      puVar17 = (undefined8 *)(param_1 + 0x9c8);
      do {
        plVar5 = *(longlong **)(param_1 + 0x180);
        local_res8[0] = iVar14;
        if (iVar14 == 0) {
          if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
            std::_Xbad_function_call();
          }
          cVar7 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8);
          uVar3 = *(undefined4 *)(param_1 + 0x9890);
          if (cVar7 != '\0') {
            iVar14 = __std_type_info_compare(0x182650db8,0x182650db8);
            if (iVar14 != 0) {
                    /* WARNING: Subroutine does not return */
              thunk_FUN_181ba94b0();
            }
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0();
          }
          uVar10 = *(undefined8 *)(param_1 + 0x9c8);
          iVar14 = __std_type_info_compare(0x182650db8,0x182650db8);
          if (iVar14 != 0) {
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0(uVar10,param_1 + 0x9c80,uVar3);
          }
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0();
        }
        if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        cVar7 = (**(code **)(*plVar5 + 0x10))(plVar5,local_res8);
        if (cVar7 == '\0') {
          uVar3 = *(undefined4 *)(param_1 + 0x9890);
          uVar10 = *puVar17;
          iVar14 = __std_type_info_compare(0x182650db8,0x182650db8);
          if (iVar14 != 0) {
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0(uVar10,param_1 + 0x9c80,uVar3);
          }
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0();
        }
        iVar14 = iVar14 + 1;
        puVar17 = puVar17 + 1;
      } while (iVar14 < *(int *)(param_1 + 0x9878));
    }
  }
  *(undefined4 *)(param_1 + 0x9a10) = *(undefined4 *)(param_1 + 0x99dc);
  *(undefined4 *)(param_1 + 0x9a0c) = 0;
  iVar14 = *(int *)(param_1 + 0x2c);
  fVar1 = *(float *)(param_1 + 0x9b14);
  fVar2 = *(float *)(param_1 + 0x9b10);
  local_res18 = CONCAT44(local_res18._4_4_,fVar1);
  _eh_vector_constructor_iterator_(local_138,0x28,2,FUN_18129e350,FUN_18129e330);
  dVar6 = DAT_1824c42b0;
  local_res20 = (float *)(longlong)local_res10[0];
  local_res8[0] = 0;
  if (0 < local_res10[0]) {
    pfVar18 = (float *)(param_1 + 0x9c84);
    pfVar11 = local_120;
    do {
      iVar12 = local_res8[0];
      iVar15 = *(int *)(param_1 + 0x9894) + -1;
      dVar20 = log10((double)pfVar18[-1]);
      iVar8 = (int)((((float)(dVar20 * dVar6) - fVar2) * ((float)iVar15 - 0.0)) / (fVar1 - fVar2) +
                   0.0);
      iVar16 = 0;
      if ((-1 < iVar8) && (iVar16 = iVar8, iVar15 < iVar8)) {
        iVar16 = iVar15;
      }
      fVar21 = (float)iVar14 - (float)iVar14 * *(float *)(param_1 + 0x19f8 + (longlong)iVar16 * 4);
      if (pfVar11[-3] == 0.0) {
        *pfVar11 = fVar21;
        pfVar11[-2] = 0.0;
        pfVar11[-1] = 0.0;
LAB_181a0775d:
        pfVar11[1] = fVar21;
      }
      else {
        if (pfVar11[-2] <= 0.0) {
          if (pfVar11[-1] <= 0.0 && pfVar11[-1] != 0.0) {
            pfVar11[-1] = 0.0;
          }
        }
        else {
          pfVar11[-2] = 0.0;
        }
        if (*pfVar11 <= fVar21) {
          if (pfVar11[1] <= fVar21 && fVar21 != pfVar11[1]) goto LAB_181a0775d;
        }
        else {
          *pfVar11 = fVar21;
        }
      }
      FUN_1804b02a0(pfVar11 + -6,&DAT_1821df344,0);
      iVar8 = 1;
      iVar16 = iVar12;
      if (1 < *(int *)(param_1 + 0x9890)) {
        pfVar19 = pfVar18;
        do {
          log10((double)*pfVar19);
          FUN_18129ddd0(local_138 + (longlong)iVar12 * 0x28);
          iVar8 = iVar8 + 1;
          pfVar19 = pfVar19 + 1;
          iVar16 = local_res8[0];
        } while (iVar8 < *(int *)(param_1 + 0x9890));
      }
      local_res8[0] = iVar16 + 1;
      pfVar11 = pfVar11 + 10;
      pfVar18 = pfVar18 + 0x200;
      local_res20 = (float *)((longlong)local_res20 + -1);
    } while (local_res20 != (float *)0x0);
    local_res20 = (float *)0x0;
  }
  puVar9 = (undefined8 *)FUN_18129a910(local_138,&local_188,*(undefined4 *)(param_1 + 0x99f8));
  puVar17 = (undefined8 *)(param_1 + 0x98a8);
  if (puVar17 == puVar9) {
    uVar10 = puVar9[3];
    *(undefined8 *)(param_1 + 0x98b8) = puVar9[2];
    *(undefined8 *)(param_1 + 0x98c0) = uVar10;
    *(undefined1 *)(param_1 + 0x98c8) = *(undefined1 *)(puVar9 + 4);
    local_17c = 0;
                    /* WARNING: Subroutine does not return */
    free(local_188);
  }
  uVar10 = *puVar9;
  *puVar9 = 0;
  uVar3 = *(undefined4 *)(puVar9 + 1);
  uVar4 = *(undefined4 *)((longlong)puVar9 + 0xc);
  puVar9[1] = 0;
  _Memory = (void *)*puVar17;
  *puVar17 = uVar10;
  *(undefined4 *)(param_1 + 0x98b0) = uVar3;
  *(undefined4 *)(param_1 + 0x98b4) = uVar4;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18058d230 size=47 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(undefined8 *param_1)

{
  *param_1 = AudioProcessingModule<float,2>::vftable;
  *(undefined4 *)((longlong)param_1 + 0x54) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 18058c850 size=83 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
               (longlong param_1,float *param_2,int param_3)

{
  uint uVar1;
  float *pfVar2;
  float fVar3;
  
  pfVar2 = (float *)(param_1 + 0x6c + (longlong)param_3 * 0x40);
  uVar1 = 0;
  if (*(int *)(param_1 + 100) != 0) {
    do {
      uVar1 = uVar1 + 1;
      fVar3 = *param_2 * *(float *)(param_1 + 0xf0);
      *param_2 = fVar3;
      fVar3 = *(float *)(param_1 + 0x60) * *pfVar2 + fVar3;
      *param_2 = fVar3;
      *pfVar2 = fVar3;
      pfVar2 = pfVar2 + 1;
    } while (uVar1 < *(uint *)(param_1 + 100));
  }
  return;
}



############ FUN_ 18058c8b0 size=74 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(longlong param_1)

{
  double dVar1;
  float fVar2;
  
  fVar2 = expf((*(float *)(param_1 + 0x68) / *(float *)(param_1 + 0x24)) *
               *(float *)(param_1 + 0xf4));
  dVar1 = DAT_1824c4140;
  *(float *)(param_1 + 0x60) = fVar2;
  *(float *)(param_1 + 0xf0) = (float)(dVar1 - (double)fVar2);
  return;
}



############ FUN_ 18058c7b0 size=149 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
               (longlong param_1,uint param_2)

{
  double dVar1;
  double dVar2;
  float fVar3;
  
  dVar1 = DAT_1824c4140;
  *(uint *)(param_1 + 100) = param_2;
  dVar2 = pow(DAT_1824c41e8,dVar1 / (double)param_2);
  dVar2 = sqrt(dVar2 - dVar1);
  fVar3 = (float)((dVar1 / dVar2) * DAT_1824c46b8);
  *(float *)(param_1 + 0xf4) = fVar3;
  fVar3 = expf((*(float *)(param_1 + 0x68) / *(float *)(param_1 + 0x24)) * fVar3);
  *(float *)(param_1 + 0x60) = fVar3;
  *(float *)(param_1 + 0xf0) = (float)(dVar1 - (double)fVar3);
  return;
}



############ FUN_ 18058e330 size=22 ############

undefined8 *
.?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_7f8135ed38e823c332187a462ca97acd>,bool,int>::vftable;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18058e400 size=42 ############

undefined1
.?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
          (longlong param_1,uint *param_2)

{
  if (*param_2 < *(uint *)(*(longlong *)(param_1 + 8) + 0x84)) {
    return *(undefined1 *)
            (*(longlong *)
              (*(longlong *)(*(longlong *)(param_1 + 8) + 0x78) + (longlong)(int)*param_2 * 8) +
            0x810);
  }
  return uRam0000000000000810;
}



############ FUN_ 18058e320 size=8 ############

TypeDescriptor * .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(void)

{
  return &<lambda_7f8135ed38e823c332187a462ca97acd>::RTTI_Type_Descriptor;
}



############ FUN_ 18058eb10 size=12 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(longlong param_1)

{
  FUN_18058c630(param_1 + -0xe0);
  return;
}



############ FUN_ 18058b500 size=275 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
               (longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  undefined8 uVar2;
  double dVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined4 uVar6;
  undefined1 auStack_78 [32];
  longlong local_58;
  undefined8 local_50;
  undefined8 *local_48;
  longlong *local_40;
  undefined1 local_38 [8];
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_58 = *(longlong *)(param_1 + 0x9b50);
  _Memory = (uint *)(local_58 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_48 = param_3;
  iVar4 = FUN_18048cbc0(param_2,local_58);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((iVar4 == 0) && (*(longlong *)(param_1 + 0x18) != 0)) {
    puVar5 = (undefined8 *)
             (**(code **)(*(longlong *)(param_1 + 0x9b48) + 0x10))
                       ((longlong *)(param_1 + 0x9b48),&local_40);
    dVar3 = (double)(**(code **)(*(longlong *)*puVar5 + 0x18))((longlong *)*puVar5,puVar5 + 1);
    (**(code **)(*local_40 + 0xb0))(local_40,local_38);
    uVar2 = *(undefined8 *)(param_1 + 0x18);
    uVar6 = FUN_180487300(param_1 + 0x9958,(float)dVar3);
    FUN_18058cb60(uVar2,uVar6);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 18058eb1c size=12 ############

void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1)

{
  FUN_18058c630(param_1 + -200);
  return;
}



############ FUN_ 18058b010 size=176 ############

void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1)

{
  byte *pbVar1;
  ulonglong uVar2;
  byte bVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar2 = (ulonglong)*(uint *)(param_1 + 0x97b0);
  if (0 < (int)*(uint *)(param_1 + 0x97b0)) {
    bVar3 = *(byte *)(param_1 + 0x9939);
    pbVar1 = (byte *)(param_1 + 0x993a);
    do {
      bVar3 = bVar3 | *pbVar1;
      pbVar1 = pbVar1 + 1;
      *(byte *)(param_1 + 0x9939) = bVar3;
      uVar2 = uVar2 - 1;
    } while (uVar2 != 0);
  }
  if (*(char *)(param_1 + 0x9939) != '\0') {
    (**(code **)(*(longlong *)(param_1 + -200) + 0x170))(param_1 + -200);
    uStack_10 = *(undefined4 *)(param_1 + -0xa0);
    uStack_c = *(undefined4 *)(param_1 + -0x9c);
    local_18 = 0;
    FUN_181342870(param_1 + -200,&local_18,1);
    *(undefined1 *)(param_1 + 0x9939) = 0;
  }
  return;
}



############ FUN_ 18058eab0 size=12 ############

void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1)

{
  vtbl___AV__FilterGraph_M_05_0CAA___(param_1 + -0xb0);
  return;
}



############ FUN_ 18160b000 size=4718 ############

/* WARNING: Instruction at (ram,0x00018160bbc8) overlaps instruction at (ram,0x00018160bbc3)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018160b5f3) */
/* WARNING: Removing unreachable block (ram,0x00018160b060) */
/* WARNING: Removing unreachable block (ram,0x00018160b041) */
/* WARNING: Removing unreachable block (ram,0x00018160b229) */
/* WARNING: Removing unreachable block (ram,0x00018160bbc3) */
/* WARNING: Removing unreachable block (ram,0x00018160b46f) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___
               (longlong param_1,int param_2,undefined8 param_3)

{
  uint uVar1;
  uint uVar2;
  byte bVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined1 *puVar6;
  uint uVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint *puVar13;
  uint uVar14;
  longlong lVar15;
  undefined4 *puVar16;
  ulonglong uVar17;
  longlong *plVar18;
  uint *puVar19;
  uint *puVar20;
  undefined1 *puVar21;
  undefined8 uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  int iVar28;
  uint uVar29;
  ulonglong uVar30;
  uint uVar31;
  longlong lVar32;
  bool bVar33;
  int unaff_retaddr;
  undefined1 auStack_148 [32];
  int local_128;
  uint local_124;
  uint *local_120;
  undefined *local_118;
  uint local_110;
  uint local_10c;
  uint local_108;
  uint local_104;
  uint local_100;
  uint local_fc;
  int local_f8;
  undefined8 local_f0;
  undefined4 local_e8;
  uint local_e4;
  int local_e0;
  uint local_dc;
  code *local_d8;
  longlong local_d0;
  undefined8 local_c8;
  undefined4 local_c0;
  undefined4 local_bc;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  code *local_a0;
  uint local_94;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  int local_78;
  uint local_74;
  undefined1 local_68 [8];
  uint local_60;
  uint local_5c;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_148;
  uVar29 = (uint)&stack0x00000000 & 0x3ff;
  local_dc = 0x9ea5 - ((uVar29 + 2) * (uVar29 + 1) * uVar29) % 3 ^ 0x9655;
  local_e0 = 0x420;
  local_f0 = 0x100;
  local_120 = &DAT_18163cb4c;
  local_118 = &DAT_18163cc4c;
  uVar29 = (DAT_18163cb4c ^ 0x811c9e53) * 0x10001d1;
  uVar30 = (ulonglong)uVar29;
  uVar29 = _DAT_18163cb78 ^
           (_DAT_18163cb74 ^
           (_DAT_18163cb70 ^
           (_DAT_18163cb6c ^
           (_DAT_18163cb68 ^
           (DAT_18163cb64 ^
           (DAT_18163cb60 ^
           (DAT_18163cb5c ^
           (DAT_18163cb58 ^ (DAT_18163cb54 ^ (DAT_18163cb50 ^ uVar29) * 0x10001d1) * 0x10001d1) *
           0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1)
           * 0x10001d1;
  local_f8 = param_2;
  local_d0 = param_1;
  local_c8 = param_3;
  do {
    uVar22 = rdtsc();
    local_110 = (uint)uVar22 ^ (uint)((ulonglong)uVar22 >> 0x20);
    FUN_18160962e();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_110 = (local_110 * -0x3d4d4602 >> 0x18 ^ local_110 * -0x3d4d4602) * -0x3b313595;
  if (local_110 < 0x430fc8) {
    do {
      local_d8 = FUN_1813f2240;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar8 = FUN_1813f2240(0,0x672d);
    if (1 < uVar8) {
      FUN_18113eab0();
    }
  }
  lVar15 = 0x17;
  uVar29 = (_DAT_18163cb7c ^ uVar29 * 0x10001d1) * 0x10001d1;
  local_118 = (undefined *)0xeb1172bd7cee29a8;
  puVar19 = (uint *)&DAT_18163cb80;
  local_120 = (uint *)CONCAT44(local_120._4_4_,0x7cee29a8);
  do {
    uVar9 = *puVar19;
    puVar19 = puVar19 + 1;
    uVar29 = (uVar9 ^ uVar29) * 0x10001d1;
    lVar15 = lVar15 + -1;
  } while (lVar15 != 0);
  uVar29 = (*puVar19 ^ uVar29) * 0x10001d1;
  if ((uVar29 >> 8 & 1) == 0) {
    uVar9 = uVar29 & 0x27f;
    iVar28 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
    uVar9 = ((iVar28 >> 1) - (iVar28 >> 3)) + iVar28 * 0x55555555 >> 0x1e;
  }
  else {
    uVar9 = uVar29 & 0x3f;
    uVar9 = (uVar9 + 1) * (uVar9 + 1) * uVar9 * uVar9 & 1;
  }
  uVar9 = 0xf642 - uVar9 ^ 0xf542;
  puVar20 = (uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2f4);
  uVar24 = (uint)puVar20 & 0xff;
  uVar9 = (*puVar20 ^
          (*(uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2f8) ^
          (*(uint *)((longlong)puVar19 + (longlong)(int)uVar9 + -0x2fc) ^ uVar29) * 0x10001d1) *
          0x10001d1) * 0x10001d1;
  uVar29 = uVar9 & 0x3bff;
  uVar29 = ((uVar29 + 1) * uVar29 + 7) % 0x51 - ((uVar24 + 2) * (uVar24 + 1) * uVar24) % 3;
  puVar20 = (uint *)((longlong)puVar20 +
                    (0x204 - (ulonglong)(~((int)(uVar29 | -uVar29) >> 0x1f & 0xfffffdffU) & 0xfae7))
                    );
  bVar33 = puVar20 == (uint *)0x0;
  bVar3 = POPCOUNT((ulonglong)puVar20 & 0xff);
  do {
    if (((bVar3 & 1) == 0) && (bVar33)) {
      uVar30 = ~(~uVar30 + 1) + 1;
    }
    uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar29 < 0) {
      uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
    }
    bVar33 = uVar29 == 0;
    bVar3 = POPCOUNT(uVar29 & 0xff);
  } while (!bVar33);
  uVar24 = (int)puVar20 + 4U & 0x5f;
  uVar26 = (puVar20[1] ^ (*puVar20 ^ uVar9) * 0x10001d1) * 0x10001d1;
  uVar29 = uVar26 & 0x1f;
  puVar20 = (uint *)((longlong)puVar20 +
                    (((longlong)
                      (int)(((uVar24 + 1) * (uVar24 + 1) * uVar24 * uVar24 & 1) +
                           ((uVar29 + 1) * (uVar29 + 1) * uVar29 * uVar29 & 0x80000003)) ^ 0x400U) -
                    0x3f8));
  uVar29 = *puVar20;
  uVar9 = puVar20[1];
  uVar24 = puVar20[2];
  uVar25 = puVar20[3];
  uVar27 = puVar20[4];
  uVar1 = puVar20[5];
  do {
    local_e8 = 0xf4b58d1e;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = puVar20[6];
  uVar2 = puVar20[7];
  do {
    local_c0 = 0x72;
    local_b8 = 0x18160b707;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_128 = 0x101f68d;
  do {
    plVar18 = &local_b0;
    puVar16 = &local_bc;
    puVar19 = &local_104;
    FUN_18160cf73();
    *puVar19 = 0x4816aad0;
    *puVar16 = 0x6c;
    *plVar18 = 0x18160b7e7;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  lVar15 = local_128 + local_b8;
  uVar11 = local_104 << 4;
  uVar14 = local_104 >> 0x1c;
  uVar7 = local_104 >> 4;
  uVar23 = local_104 << 0x1c;
  local_128 = 0;
  local_104 = 0;
  uVar11 = ((uVar7 | uVar23) & 0xe1e1e1e1 | (uVar11 | uVar14) & 0x1e1e1e1e) ^ 0xe5d863fd;
  uVar14 = ((uVar11 & 0x33333333) << 2 | uVar11 >> 2 & 0x33333333) + 0x87604ead;
  uVar11 = (uVar14 >> 0xf ^ uVar14) & 0x3fff;
  uVar14 = uVar14 ^ (uVar11 << 0xf | uVar11);
  uVar14 = ((uVar14 << 0x10 | uVar14 >> 0x10) & 0xed1212ed |
           (uVar14 >> 0x10 | uVar14 << 0x10) & 0x12eded12) ^ 0xb938882a;
  uVar11 = (uVar14 >> 0xe ^ uVar14) >> 2 & 0x3fff;
  uVar14 = uVar14 ^ (uVar11 << 0xe | uVar11) << 2;
  lVar32 = ((longlong)(int)(uVar14 << 0x10 | uVar14 >> 0x10) & 0xffffffffcb0934f6U |
           (ulonglong)((uVar14 >> 0x10 | uVar14 << 0x10) & 0x34f6cb09)) + local_b0;
  *(longlong *)(lVar15 + 4) =
       *(longlong *)(lVar15 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(lVar32 + 4) >> 0x1b) & 0x45210049);
  do {
    puVar19 = &local_e4;
    puVar13 = &local_124;
    FUN_18160a47b();
    uVar22 = rdtsc();
    uVar11 = (int)uVar22 + (int)((ulonglong)uVar22 >> 0x20);
    *puVar19 = uVar11;
    uVar8 = (ulonglong)uVar11 * -0x47ff - 0x419c2dc1;
    uVar8 = uVar8 - (uVar8 * 0x20 | uVar8 >> 0x3b);
    *puVar13 = (uint)((uVar8 ^ (uVar8 >> 0xd) - 0x3b73948f) * 0x101 - 0x6d2a332 >> 5) & 0xc78b3a8e;
    lVar5 = local_d0;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  *(int *)(lVar15 + 8) = *(int *)(lVar15 + 8) + (local_124 ^ 0x328b734b);
  *(int *)(lVar15 + 4) = *(int *)(lVar15 + 4) + (local_124 ^ 0xc0006fe8);
  uVar17 = (*(ulonglong *)(lVar15 + 4) << 0x21 | *(ulonglong *)(lVar15 + 4) >> 0x1f) +
           0xb0379220c452d670;
  uVar8 = (ulonglong)((uint)((uVar17 >> 0x1e ^ uVar17) >> 2) & 0x1fffff);
  uVar8 = ((uVar8 << 0x1e | uVar8) << 2 ^ uVar17) + 0xba631318a0d4a7cb;
  uVar17 = (uVar8 >> 4 | uVar8 << 0x3c) & 0xc3c3c3c3c3c3c3c3 |
           (uVar8 * 0x10 | uVar8 >> 0x3c) & 0x3c3c3c3c3c3c3c3c;
  uVar11 = (uint)((uVar17 >> 9 ^ uVar17) >> 0x1a) & 1;
  uVar8 = ((ulonglong)uVar11 << 9 | (ulonglong)uVar11) << 0x1a ^ uVar17;
  uVar8 = ((uVar8 << 4 | uVar17 >> 0x3c) & 0xe1e1e1e1e1e1e1e1 |
          (uVar8 >> 4 | uVar17 << 0x3c) & 0x1e1e1e1e1e1e1e1e) + 0xcbb348cc940fcd7a;
  uVar8 = (uVar8 >> 2 | uVar8 << 0x3e) & 0x9999999999999999 |
          (uVar8 * 4 | uVar8 >> 0x3e) & 0x6666666666666666;
  *(ulonglong *)(lVar15 + 4) = uVar8;
  plVar18 = (longlong *)(lVar32 + 4);
  *plVar18 = *plVar18 + (ulonglong)((uint)(uVar8 >> 0xf) & 0x20230248);
  local_124 = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x1b) & 0x7fffffff;
  local_108 = (uint)(*(ulonglong *)(lVar15 + 4) >> 0x19) ^ 0xb9d9b711;
  local_118 = (undefined *)(*(ulonglong *)(lVar15 + 4) ^ 0x49746e3163e2e07a);
  uVar29 = (puVar20[0xb] ^
           (puVar20[10] ^
           (puVar20[9] ^
           (puVar20[8] ^
           (uVar2 ^ (uVar10 ^ (uVar1 ^ (uVar27 ^ (uVar25 ^ (uVar24 ^ (uVar9 ^ (uVar29 ^ uVar26) *
                                                                              0x10001d1) * 0x10001d1
                                                           ) * 0x10001d1) * 0x10001d1) * 0x10001d1)
                              * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
           0x10001d1) * 0x10001d1;
  local_f0 = CONCAT44(local_f0._4_4_,uVar29);
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_90 = (uint)local_118;
  uVar9 = ((local_90 ^ local_108) & 0x6593f979 ^ local_108) + 0x4ed1481b;
  uVar24 = ((local_90 ^ local_108) & 0x9a6c0686 ^ local_108) + 0xaef7aa14;
  uVar27 = (int)((ulonglong)local_118 >> 0x20) + 0x7bc739d3;
  uVar25 = (uVar9 * 0x100 | uVar9 >> 0x18) & 0x9a659a65 |
           (uVar9 >> 8 | uVar9 * 0x1000000) & 0x659a659a;
  uVar27 = uVar27 >> 2 & 0xcccccccc | uVar27 * 0x40000000 | uVar27 * 4 & 0x33333333 | uVar27 >> 0x1e
  ;
  uVar24 = ((uVar24 * 0x10000 | uVar24 >> 0x10) & 0xc73b38c4 |
           (uVar24 >> 0x10 | uVar24 * 0x10000) & 0x38c4c73b) ^ uVar25;
  uVar9 = uVar24 & 0x8a578475 ^ uVar25;
  uVar22 = 0x1f67ec24;
  uVar24 = uVar24 & 0x75a87b8a ^ uVar25 ^ uVar9;
  uVar25 = uVar24 & 0x44465b56 ^ uVar9;
  uVar9 = uVar24 & 0xbbb9a4a9 ^ uVar9;
  uVar24 = uVar25 >> 0x19 | uVar25 << 7;
  uVar25 = (uVar27 >> 10 | uVar27 << 0x16) ^ uVar24;
  uVar31 = (uVar9 >> 0x1f | uVar9 << 1) ^ 0xea2cbcd1;
  uVar8 = (ulonglong)uVar31;
  uVar7 = uVar25 & 0xddffbe9c ^ uVar24;
  uVar23 = uVar25 & 0x22004163 ^ uVar24 ^ uVar7;
  uVar9 = puVar20[0xc];
  uVar24 = puVar20[0xd];
  uVar25 = puVar20[0xe];
  uVar27 = puVar20[0xf];
  uVar1 = puVar20[0x10];
  uVar26 = puVar20[0x11];
  uVar10 = puVar20[0x12];
  uVar2 = puVar20[0x13];
  uVar11 = puVar20[0x14];
  uVar14 = puVar20[0x15];
  do {
    uVar4 = rdtsc();
    local_e4 = (int)uVar4 - (int)((ulonglong)uVar4 >> 0x20);
    uVar17 = (ulonglong)local_e4 - ((ulonglong)(local_e4 >> 5) - 0x3dd514ae) >> 8;
    uVar17 = uVar17 + (~-uVar17 + 1) * 0x200 + -0x72ddc7ad;
    uVar17 = uVar17 ^ uVar17 * 0x200;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_100 = (uint)((int)uVar17 - (int)(uVar17 << 5)) >> 1 ^ local_124;
  local_94 = local_108;
  if (local_100 < 0xd698) {
    do {
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    local_10c = 0x7432a569;
    local_80 = 0x1f67ec24;
    local_7c = uVar31;
    local_78 = (uVar23 & 0x7310039d ^ uVar7) + 0x6bb1bcf9;
    local_74 = uVar23 & 0x8ceffc62 ^ uVar7 ^ 0xaa7d1554;
    do {
      plVar18 = &local_a8;
      puVar19 = &local_fc;
      FUN_18160cbe4();
      *puVar19 = 0x5e5cf042;
      uVar30 = 0;
      *plVar18 = 0x18160bf83;
      FUN_18160a645();
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar7 = (local_fc + 0x1804952a >> 0x15 | (local_fc + 0x1804952a) * 0x800) ^ 0x90bd4e7c;
    local_fc = ~((uVar7 >> 0x11 | uVar7 << 0xf) + 0xe9b473b7);
    (*(code *)((int)local_fc + local_a8))(&local_80,local_68);
    iVar28 = 7;
    do {
      uVar31 = ((local_60 << 4 | local_60 >> 0x1c) & 0xb4b4b4b4 |
               (local_60 >> 4 | local_60 << 0x1c) & 0x4b4b4b4b) + 0xedf66992;
      uVar23 = ((local_5c >> 8 | local_5c << 0x18) & 0xfa05fa05 |
               (local_5c << 8 | local_5c >> 0x18) & 0x5fa05fa) + 0x703d2ee4;
      uVar7 = uVar31 >> 0xc;
      uVar23 = (uVar23 >> 0x1d | uVar23 * 8) + 0x5f26144;
      uVar31 = (((uVar7 | uVar31 * 0x100000) ^ 0x2677a938) >> 3 | uVar7 << 0x1d) + 0x70f6a640;
      uVar23 = (uVar23 * 0x8000 | uVar23 >> 0x11) + 0x191d2650;
      uVar12 = uVar31 >> 0x17 | uVar31 * 0x200;
      uVar7 = uVar23 >> 0xc;
      uVar23 = uVar23 * 0x100000 | uVar7;
      uVar31 = (uVar12 >> 8 | (uVar31 >> 0x17) << 0x18) & 0xa857a857 |
               (uVar12 << 8 | (uVar31 & 0x7fffff) >> 0xf) & 0x57a857a8;
      uVar23 = (uVar7 << 0x10 | uVar23 >> 0x10) & 0xd65429ab |
               (uVar23 >> 0x10 | uVar7 << 0x10) & 0x29abd654;
      uVar7 = uVar31 >> 6;
      local_60 = uVar7 | uVar31 << 0x1a;
      local_5c = uVar23 << 0x16 | uVar23 >> 10;
      iVar28 = iVar28 + -1;
    } while (-1 < iVar28);
    uVar7 = (uVar7 << 0x1d | local_60 >> 3) + 0xa6be00c2;
    uVar7 = (uVar7 * 0x80 | uVar7 >> 0x19) + 0xc72db2d0;
    uVar7 = (uVar7 * 8 | uVar7 >> 0x1d) + 0x5e0136f7;
    uVar7 = (uVar7 * 0x400 | uVar7 >> 0x16) ^ 0xd2776bfa;
    if (((uVar7 >> 0x10 | uVar7 << 0x10) ^ local_10c) + local_5c != local_108) {
      do {
        local_a0 = FUN_180bc28e0;
        uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      FUN_180bc28e0();
      do {
        uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
    }
  }
  uVar9 = (uVar14 ^ (uVar11 ^ (uVar2 ^ (uVar10 ^ (uVar26 ^ (uVar1 ^ (uVar27 ^ (uVar25 ^ (uVar24 ^ (
                                                  uVar9 ^ uVar29) * 0x10001d1) * 0x10001d1) *
                                                  0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1)
                                       * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1 ^
          0xd282d6a9;
  uVar29 = (uVar9 >> 0xe ^ uVar9) >> 1 & 0xff;
  lVar32 = (longlong)local_f8;
  uVar29 = ~((uVar29 << 0xe | uVar29) * 2 ^ uVar9) + 0xac1763b7;
  uVar9 = uVar29 >> 0x17 | uVar29 * 0x200;
  uVar29 = ((uVar29 & 0x7fffff) >> 3 ^ uVar9) >> 7 & 0x1ff;
  lVar15 = lVar32 * 0x828 + 0x3830 + lVar5;
  if ((uint)local_120 == ((uVar29 << 0xc | uVar29) << 7 ^ uVar9)) {
    FUN_180589400(lVar15,local_c8);
    *(undefined1 *)(*(longlong *)(lVar5 + 0x10) + 0x9a02 + lVar32) = 1;
    thunk_FUN_1805a9280();
    return;
  }
  FUN_180589400(lVar15,local_c8);
  *(undefined1 *)(*(longlong *)(lVar5 + 0x10) + 0x9a02 + lVar32) = 1;
  puVar6 = auStack_148;
  do {
    puVar21 = puVar6;
    *(ulonglong *)(puVar21 + -8) = uVar30;
    *(undefined8 *)(puVar21 + -0x10) = uVar22;
    *(ulonglong *)(puVar21 + -0x18) = uVar8;
    lVar15 = -(longlong)local_e0;
    uVar8 = *(ulonglong *)(puVar21 + lVar15 + 0x408);
    uVar22 = *(undefined8 *)(puVar21 + lVar15 + 0x410);
    uVar30 = *(ulonglong *)(puVar21 + lVar15 + 0x418);
    uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar29 < 0) {
      uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
    }
    puVar6 = puVar21 + lVar15 + 0x420;
  } while (uVar29 != 0);
  *(undefined **)(puVar21 + lVar15 + 0x418) = &UNK_18160c3e2;
}



############ FUN_ 1805893c0 size=52 ############

void * .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___
                 (void *param_1,ulonglong param_2)

{
  FUN_18160dba0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18160c410 size=1445 ############

/* WARNING: Instruction at (ram,0x00018160ca3a) overlaps instruction at (ram,0x00018160ca38)
    */
/* WARNING: Possible PIC construction at 0x00018160cb22: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x00018160cb27) */
/* WARNING: Removing unreachable block (ram,0x00018160ca34) */
/* WARNING: Removing unreachable block (ram,0x00018160c8cc) */
/* WARNING: Removing unreachable block (ram,0x00018160ca14) */
/* WARNING: Removing unreachable block (ram,0x00018160c9c7) */

undefined8 .?AV?$FilterGraph@M$05$0CAA@@@::vtbl___AV__FilterGraph_M_05_0CAA___(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  undefined4 uVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  uint uVar6;
  ulonglong uVar7;
  code **ppcVar8;
  longlong *plVar9;
  int iVar10;
  longlong lVar11;
  longlong *plVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  undefined1 *puVar16;
  undefined4 *puVar17;
  undefined4 *puVar18;
  longlong lVar19;
  undefined4 *puVar20;
  longlong *plVar21;
  undefined *puVar22;
  longlong lVar23;
  undefined4 *puVar24;
  undefined **ppuVar25;
  uint uVar26;
  int unaff_retaddr;
  undefined8 auStack_1a8 [2];
  undefined1 auStack_198 [24];
  uint auStack_180 [6];
  undefined8 local_168;
  undefined **local_160;
  uint local_158;
  longlong alStack_148 [2];
  undefined8 local_138;
  uint local_130;
  uint local_128;
  undefined4 local_124;
  code *local_120;
  undefined **local_118;
  longlong local_110;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined4 local_68 [14];
  ulonglong local_30;
  
  puVar15 = (undefined8 *)auStack_198;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar6 = (uint)&stack0x00000000 & 0x23f;
  lVar23 = 0x1210;
  local_124 = 0x8e0;
  iVar10 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  uVar6 = ((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >> 0x1e;
  uVar4 = (ulonglong)uVar6;
  local_128 = -uVar6 ^ 0x740;
  local_110 = param_1;
  FUN_18134c250(param_1,&local_108);
  alStack_148[1] = 0x6f01000;
  local_138 = 0x1bab6a8;
  local_168 = 0x10;
  local_160 = &PTR__guard_check_icall_181bab6a8;
  local_118 = (undefined **)&DAT_181bab6b8;
  plVar12 = (longlong *)&DAT_186f01000;
  auStack_180[2] = 0;
  local_c8 = local_108;
  uStack_c4 = uStack_104;
  uStack_c0 = uStack_100;
  uStack_bc = uStack_fc;
  FUN_18134c170(*(undefined8 *)(param_1 + 200),&local_c8);
  do {
    uVar7 = 0xee14;
    func_0x00018160aa28();
    if ((uVar7 & 0x43) != 0) goto LAB_18160c66b;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    uVar7 = uVar4;
  } while (uVar6 != 0);
  do {
    local_130 = 0x4fa5f61e;
LAB_18160c66b:
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  alStack_148[1] = 0xf1e46594c6bad6be;
  uVar26 = ((~local_130 ^ 0x61689430) >> 0x13 | (~local_130 ^ 0x61689430) << 0xd) ^ 0xe6c076f9;
  local_138 = CONCAT44(local_138._4_4_,0xc6bad6be);
  uVar6 = uVar26 >> 7;
  local_168 = CONCAT44(local_168._4_4_,
                       ~((uVar6 << 0x1e | ((uVar26 << 0x19 | uVar6) ^ 0x13f5de1c) >> 2) + 0x84cdc7cb
                        ));
  do {
    uVar5 = rdtsc();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((uint)uVar5 ^ (uint)((ulonglong)uVar5 >> 0x20)) * -0x166a12ab;
  local_158 = (uVar6 >> 0x18 ^ uVar6) * -0x3d4d13ad;
  if (local_158 < 0x5d1745ff) {
    local_120 = (code *)0x0;
    do {
      ppcVar8 = &local_120;
      FUN_18160cb18(ppcVar8,&local_120);
      *ppcVar8 = FUN_1813bba80;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = (*local_120)(0,0x48eb);
    if (1 < uVar4) {
      FUN_18113eab0();
    }
  }
  ppuVar25 = local_160;
  puVar24 = (undefined4 *)((longlong)local_118 - (longlong)local_160);
  puVar17 = (undefined4 *)0x0;
  puVar16 = auStack_198;
  if (local_118 == local_160) {
code_r0x00018160ca00:
    do {
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar5 = *(undefined8 *)(param_1 + 0xc0);
    uStack_b8 = local_108;
    uStack_b4 = uStack_104;
    uStack_b0 = uStack_100;
    uStack_ac = uStack_fc;
    *(undefined **)(puVar16 + -8) = &UNK_18160ca7f;
    FUN_18134c170(uVar5,&uStack_b8,uVar7);
    puVar17 = &uStack_a8;
    uStack_a8 = local_108;
    uStack_a4 = uStack_104;
    uStack_a0 = uStack_100;
    uStack_9c = uStack_fc;
    uVar5 = *(undefined8 *)(local_110 + 0xd0);
    *(undefined **)(puVar16 + -8) = &UNK_18160ca9f;
    FUN_18134c170(uVar5,puVar17);
    do {
      *(undefined **)(puVar16 + -8) = &UNK_18160caaa;
      func_0x00018160d859(0xee14);
      puVar22 = (undefined *)((longlong)ppuVar25 + lVar23);
      ppuVar25 = (undefined **)((lVar23 - (longlong)puVar22 ^ 0xffffffffffffffffU) + 1);
      lVar23 = (longlong)puVar22 - (longlong)ppuVar25;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    *(undefined4 *)(puVar16 + 0x48) = *(undefined4 *)(puVar16 + 0x20);
    *(undefined **)(puVar16 + -8) = &UNK_18160cb0c;
    uVar3 = func_0x00018160b4ce();
    *(longlong *)(puVar16 + -8) = lVar23;
    *(longlong *)(puVar16 + -0x10) = param_1;
    *(undefined **)(puVar16 + -0x18) = &UNK_18160cb27;
    lVar23 = *(longlong *)(puVar16 + -0x18);
    *(longlong *)(puVar16 + -0x18) = lVar23 + 0x166;
    *(longlong *)(puVar16 + -0x20) = lVar23 + 0x3f85dd;
    *(longlong *)(puVar16 + -0x28) = lVar23 + -0x1667b;
    *(longlong *)(puVar16 + -0x30) = lVar23 + 0x3fe56b;
    *(longlong *)(puVar16 + -0x38) = lVar23 + 0x3f85fa;
    *(longlong *)(puVar16 + -0x40) = lVar23 + -0x177e0;
    *(longlong *)(puVar16 + -0x48) = lVar23 + -0x454f5;
    *(longlong *)(puVar16 + -0x50) = lVar23 + -0x7c9eb;
    *(longlong *)(puVar16 + -0x58) = lVar23 + 0x3fe56b;
                    /* WARNING: Could not recover jumptable at 0x00018160cc6b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar5 = (*(code *)(lVar23 + 0x3f85fa))(uVar3,puVar17);
    return uVar5;
  }
LAB_18160c7f0:
  puVar18 = (undefined4 *)((longlong)puVar17 + (longlong)ppuVar25);
  if ((plVar12 != (longlong *)0x0) && (lVar11 = *plVar12, -1 < lVar11)) {
    *(undefined8 *)((longlong)puVar15 + 0x58) = 0x2621fc0;
    lVar19 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)puVar15 + 0x58);
    do {
      if (puVar18 < (undefined4 *)(-*(longlong *)((longlong)puVar15 + 0x58) + 0x182621fc8 + lVar11))
      {
        if (-1 < lVar11) {
          plVar9 = (longlong *)(lVar19 + lVar11);
          plVar1 = (longlong *)(puVar18 + 1);
          if (plVar9 < plVar1) {
            local_68[0] = *puVar18;
            lVar23 = lVar19 - (longlong)puVar18;
            plVar21 = plVar12;
            goto LAB_18160c870;
          }
        }
        break;
      }
      lVar11 = plVar12[1];
      plVar12 = plVar12 + 1;
    } while (-1 < lVar11);
  }
  goto LAB_18160c8a0;
  while (plVar9 = (longlong *)(lVar19 + lVar11), plVar9 < plVar1) {
LAB_18160c870:
    lVar2 = lVar23 + lVar11;
    lVar11 = plVar21[1];
    plVar21 = plVar21 + 1;
    *(longlong *)((longlong)local_68 + lVar2) = *plVar9 - lVar19;
    puVar18 = local_68;
    if (lVar11 < 0) break;
  }
LAB_18160c8a0:
  do {
    puVar20 = (undefined4 *)((longlong)puVar15 + 0x20);
    uVar4 = 0xee14;
    *(undefined4 **)((longlong)puVar15 + -8) = puVar17;
    puVar15 = (undefined8 *)((longlong)puVar15 + -8);
    puVar17 = puVar18;
    while ((uVar4 & 0xc300) != 0) {
      while (puVar13 = puVar15, (uVar4 & 0xc300) != 0) {
        while( true ) {
          puVar13[-1] = 0x18160c901;
          uVar3 = FUN_18160cb59();
          *puVar20 = uVar3;
          puVar17 = (undefined4 *)*puVar13;
          puVar15 = puVar13 + 1;
          puVar14 = puVar13 + 1;
          if ((uVar4 & 0xc3) != 0) break;
          puVar13 = puVar13 + 1;
          puVar15 = puVar14;
          if ((uVar4 & 0xc3) == 0) goto LAB_18160c93e;
        }
      }
    }
LAB_18160c93e:
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar26 = (uint)puVar17 & 0x4aff;
  uVar7 = (ulonglong)uVar26;
  uVar6 = *(int *)((longlong)puVar15 + 0x20) * 0x401 ^
          (uint)(*(int *)((longlong)puVar15 + 0x20) * 0x401) >> 6;
  *(uint *)((longlong)puVar15 + 0x20) = uVar6;
  uVar6 = uVar6 & 0x17f;
  iVar10 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  puVar17 = (undefined4 *)
            ((longlong)puVar17 +
            (0xa4 - ((longlong)
                     ((longlong)(((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555) ^
                     0x2800000000U) >> 0x1e ^ (longlong)(int)((uVar26 + 1) * uVar26 & 0x80000001))))
  ;
  param_1 = local_110;
  puVar16 = (undefined1 *)puVar15;
  if (puVar24 == puVar17) goto code_r0x00018160ca00;
  goto LAB_18160c7f0;
}



############ FUN_ 18058e360 size=22 ############

undefined8 * FUN_18058e360(longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  *param_2 = std::_Func_impl_no_alloc<<lambda_c47d1edfda7fd19489ae99937040385c>,float*___ptr64,int>
             ::vftable;
  uVar1 = *(undefined8 *)(param_1 + 0x10);
  param_2[1] = *(undefined8 *)(param_1 + 8);
  param_2[2] = uVar1;
  return param_2;
}



############ FUN_ 18058e350 size=8 ############

TypeDescriptor * FUN_18058e350(void)

{
  return &<lambda_c47d1edfda7fd19489ae99937040385c>::RTTI_Type_Descriptor;
}



############ FUN_ 18058eb04 size=12 ############

void FUN_18058eb04(longlong param_1)

{
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -0xf0);
  return;
}



############ FUN_ 18058c4b0 size=116 ############

void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  *param_1 = FilterGraphGrid<float>::vftable;
  param_1[0x16] = FilterGraphGrid<float>::vftable;
  FUN_180484cd0(param_1 + 0x25);
  puVar1 = (undefined8 *)param_1[0x24];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18047cbc0(param_1 + 0x22);
  *(undefined4 *)((longlong)param_1 + 0x11c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x22]);
}



############ FUN_ 1805895c0 size=2420 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__(longlong param_1)

{
  double dVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  ulonglong uVar8;
  uint *_Memory;
  ulonglong uVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong lVar12;
  longlong lVar13;
  longlong *plVar14;
  char cVar15;
  uint uVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  undefined8 uVar20;
  uint uVar21;
  bool bVar22;
  double dVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  float fVar29;
  char local_res8;
  undefined7 uStackX_9;
  float local_res10;
  double local_res18;
  double local_res20;
  undefined4 local_180;
  undefined4 local_160;
  undefined1 local_158 [4];
  undefined4 local_154;
  double local_150;
  double local_148;
  double local_140;
  double local_138;
  undefined1 local_130 [4];
  undefined4 local_12c;
  undefined1 local_128 [8];
  undefined1 local_120 [8];
  undefined1 local_118 [8];
  undefined1 local_110 [8];
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined4 local_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  
  if (*(longlong *)(param_1 + 0xb8) != 0) {
    plVar14 = (longlong *)(param_1 + 0xb0);
    if (*(code **)(*plVar14 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (**(code **)(*plVar14 + 8))(plVar14);
    }
    puVar6 = (undefined8 *)FUN_18140e230(local_128,*(undefined4 *)(param_1 + 0x211));
    FUN_1813f0dc0(uVar7,DAT_18267423c,*puVar6,param_1);
    if (*(code **)(*plVar14 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (**(code **)(*plVar14 + 8))(plVar14);
    }
    puVar6 = (undefined8 *)FUN_18140e230(local_120,*(undefined4 *)(param_1 + 0x215));
    FUN_1813f0dc0(uVar7,DAT_182674188,*puVar6,param_1);
  }
  uVar18 = 0;
  fVar29 = (float)*(int *)(param_1 + 0x2c);
  fVar26 = (float)*(int *)(param_1 + 0x28);
  fVar28 = fVar26 * DAT_1824c3c98;
  fVar27 = fVar29 * DAT_1824c3c90;
  *(float *)(param_1 + 0x200) = fVar29 * DAT_1824c3c70;
  local_res10 = fVar26;
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x120),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  dVar5 = DAT_1824c4520;
  fVar24 = DAT_1824c3d8c;
  if (*(char *)(param_1 + 0x210) != '\0') {
    if (0 < *(int *)(param_1 + 0xfc)) {
      bVar22 = *(int *)(param_1 + 0xfc) != 0;
      uVar9 = uVar18;
      uVar17 = uVar18;
      uVar19 = uVar18;
      do {
        uVar8 = uVar18;
        if (bVar22) {
          uVar8 = *(ulonglong *)(uVar17 + *(longlong *)(param_1 + 0xf0));
        }
        puVar6 = (undefined8 *)FUN_1812ea010(uVar8,&local_res8);
        cVar15 = *(char *)*puVar6;
        _Memory = (uint *)(CONCAT71(uStackX_9,local_res8) + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar16 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        uVar16 = (uint)uVar9;
        if (cVar15 == '\0') {
          if (uVar16 < *(uint *)(param_1 + 0xfc)) {
            plVar14 = *(longlong **)(uVar17 + *(longlong *)(param_1 + 0xf0));
            (**(code **)(*plVar14 + 0x58))(plVar14,0);
          }
          else {
            (**(code **)(_DAT_00000000 + 0x58))(0,0);
          }
        }
        else {
          if (uVar16 < *(uint *)(param_1 + 0xdc)) {
            fVar25 = *(float *)(uVar19 + *(longlong *)(param_1 + 0xd0));
          }
          else {
            fVar25 = 0.0;
          }
          local_res20 = dVar5;
          local_res18 = (double)(fVar25 * fVar26) + dVar5;
          local_180 = SUB84((double)fVar27 + dVar5,0);
          uVar9 = uVar18;
          if (uVar16 < *(uint *)(param_1 + 0xfc)) {
            uVar9 = *(ulonglong *)(uVar17 + *(longlong *)(param_1 + 0xf0));
          }
          FUN_18134bfe0(uVar9,local_res18._0_4_ - (int)(fVar28 * fVar24),
                        (ulonglong)dVar5 & 0xffffffff,
                        (ulonglong)((double)fVar28 + dVar5) & 0xffffffff,local_180);
        }
        uVar16 = uVar16 + 1;
        uVar9 = (ulonglong)uVar16;
        uVar19 = uVar19 + 4;
        uVar17 = uVar17 + 8;
        bVar22 = uVar16 < *(uint *)(param_1 + 0xfc);
      } while ((int)uVar16 < (int)*(uint *)(param_1 + 0xfc));
    }
    dVar4 = DAT_1824c41c8;
    cVar15 = DAT_1824c3ea4 < *(float *)(param_1 + 0x20c);
    if (0 < *(int *)(param_1 + 0xec)) {
      bVar22 = *(int *)(param_1 + 0xec) != 0;
      local_res20 = 0.0;
      uVar9 = uVar18;
      uVar16 = DAT_1824c4f30;
      local_res8 = cVar15;
      do {
        plVar14 = (longlong *)0x0;
        if (bVar22) {
          fVar24 = *(float *)((longlong)local_res20 + *(longlong *)(param_1 + 0xe0));
        }
        else {
          fVar24 = 0.0;
        }
        fVar24 = fVar24 * fVar29;
        uVar21 = (uint)uVar9;
        if ((fVar24 <= fVar27) || (fVar29 - fVar27 <= fVar24)) {
          plVar10 = plVar14;
          if (uVar21 < *(uint *)(param_1 + 0x10c)) {
            plVar10 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100));
          }
          (**(code **)(*plVar10 + 0x58))(plVar10,0);
          if (uVar21 < *(uint *)(param_1 + 0x11c)) {
            plVar14 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x110));
          }
          (**(code **)(*plVar14 + 0x58))();
        }
        else {
          plVar10 = plVar14;
          if (uVar21 < *(uint *)(param_1 + 0x10c)) {
            plVar10 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100));
          }
          (**(code **)(*plVar10 + 0x58))(fVar29 - fVar27,1);
          plVar10 = plVar14;
          if (uVar21 < *(uint *)(param_1 + 0x11c)) {
            plVar10 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x110));
          }
          (**(code **)(*plVar10 + 0x58))(plVar10,cVar15);
          plVar10 = (longlong *)(param_1 + 0xb0);
          fVar25 = fVar28 * DAT_1824c3df0;
          fVar26 = fVar26 - fVar28 * DAT_1824c3c94;
          fVar24 = (float)((uint)fVar27 ^ uVar16) + fVar24;
          dVar3 = (double)fVar27 + dVar5;
          dVar2 = (double)fVar25 + dVar5;
          local_160 = SUB84(dVar3,0);
          if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
            if (*(longlong *)(param_1 + 0xb8) == 0) {
              FUN_180569ff0(param_1);
            }
            uVar7 = *(undefined8 *)(param_1 + 0xb8);
          }
          else {
            uVar7 = (**(code **)(*plVar10 + 8))(plVar10);
          }
          FUN_1813f22a0(uVar7,local_158,DAT_18267423c,param_1);
          if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
            if (*(longlong *)(param_1 + 0xb8) == 0) {
              FUN_180569ff0(param_1);
            }
            local_res18 = *(double *)(param_1 + 0xb8);
          }
          else {
            local_res18 = (double)(**(code **)(*plVar10 + 8))(plVar10);
          }
          if (uVar21 < *(uint *)(param_1 + 0x10c)) {
            plVar14 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100));
          }
          puVar6 = (undefined8 *)FUN_18140e230(local_118,local_154);
          FUN_1813f0dc0(local_res18,DAT_182674268,*puVar6,plVar14);
          plVar14 = (longlong *)0x0;
          plVar11 = plVar14;
          if (uVar21 < *(uint *)(param_1 + 0x10c)) {
            plVar11 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100));
          }
          if (((((int)plVar11[0x3d] != 0) || (*(int *)((longlong)plVar11 + 0x1ec) != 0)) ||
              ((int)plVar11[0x3e] != 0)) || (*(int *)((longlong)plVar11 + 500) != 0)) {
            plVar11[0x3d] = 0;
            plVar11[0x3e] = 0;
            uStack_100 = (undefined4)plVar11[5];
            uStack_fc = *(undefined4 *)((longlong)plVar11 + 0x2c);
            local_108 = 0;
            uStack_104 = 0;
            FUN_181342870(0,&local_108,1);
          }
          plVar11 = plVar14;
          if (uVar21 < *(uint *)(param_1 + 0x10c)) {
            plVar11 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x100));
          }
          FUN_18134bfe0(plVar11,(ulonglong)((double)(fVar26 - fVar25) + dVar5) & 0xffffffff,
                        (ulonglong)((double)fVar24 + dVar5) & 0xffffffff,
                        (ulonglong)dVar2 & 0xffffffff,local_160);
          cVar15 = local_res8;
          if (local_res8 == '\0') {
            if (uVar21 < *(uint *)(param_1 + 0x11c)) {
              plVar14 = *(longlong **)(uVar18 + *(longlong *)(param_1 + 0x110));
            }
            (**(code **)(*plVar14 + 0x58))();
            uVar16 = DAT_1824c4f30;
            fVar26 = local_res10;
          }
          else {
            dVar1 = (double)(float)((double)fVar26 - (double)fVar25 * dVar4) + dVar5;
            dVar23 = (double)fVar24 + dVar5;
            local_150 = dVar1;
            local_148 = dVar23;
            local_140 = dVar2;
            local_138 = dVar3;
            if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
              if (*(longlong *)(param_1 + 0xb8) == 0) {
                FUN_180569ff0(param_1);
              }
              uVar7 = *(undefined8 *)(param_1 + 0xb8);
            }
            else {
              uVar7 = (**(code **)(*plVar10 + 8))(plVar10);
            }
            FUN_1813f22a0(uVar7,local_130,DAT_182674188,param_1);
            if (*(code **)(*plVar10 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
              if (*(longlong *)(param_1 + 0xb8) == 0) {
                FUN_180569ff0(param_1);
              }
              uVar7 = *(undefined8 *)(param_1 + 0xb8);
            }
            else {
              uVar7 = (**(code **)(*plVar10 + 8))(plVar10);
            }
            if (uVar21 < *(uint *)(param_1 + 0x11c)) {
              uVar20 = *(undefined8 *)(uVar18 + *(longlong *)(param_1 + 0x110));
            }
            else {
              uVar20 = 0;
            }
            puVar6 = (undefined8 *)FUN_18140e230(local_110,local_12c);
            FUN_1813f0dc0(uVar7,DAT_182674268,*puVar6,uVar20);
            lVar13 = 0;
            lVar12 = lVar13;
            if (uVar21 < *(uint *)(param_1 + 0x11c)) {
              lVar12 = *(longlong *)(uVar18 + *(longlong *)(param_1 + 0x110));
            }
            if (((*(int *)(lVar12 + 0x1e8) != 0) || (*(int *)(lVar12 + 0x1ec) != 0)) ||
               ((*(int *)(lVar12 + 0x1f0) != 0 || (*(int *)(lVar12 + 500) != 0)))) {
              *(undefined8 *)(lVar12 + 0x1e8) = 0;
              *(undefined8 *)(lVar12 + 0x1f0) = 0;
              uStack_f0 = *(undefined4 *)(lVar12 + 0x28);
              uStack_ec = *(undefined4 *)(lVar12 + 0x2c);
              local_f8 = 0;
              uStack_f4 = 0;
              FUN_181342870(0,&local_f8,1);
            }
            if (uVar21 < *(uint *)(param_1 + 0x11c)) {
              lVar13 = *(longlong *)(uVar18 + *(longlong *)(param_1 + 0x110));
            }
            FUN_18134bfe0(lVar13,(ulonglong)dVar1 & 0xffffffff,(ulonglong)dVar23 & 0xffffffff,
                          (ulonglong)dVar2 & 0xffffffff,local_160);
            uVar16 = DAT_1824c4f30;
            cVar15 = local_res8;
            fVar26 = local_res10;
          }
        }
        uVar21 = uVar21 + 1;
        uVar9 = (ulonglong)uVar21;
        local_res20 = (double)((longlong)local_res20 + 4);
        uVar18 = uVar18 + 8;
        bVar22 = uVar21 < *(uint *)(param_1 + 0xec);
      } while ((int)uVar21 < (int)*(uint *)(param_1 + 0xec));
    }
  }
  return;
}



############ FUN_ 180589f40 size=99 ############

void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__
               (undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined1 local_res18 [16];
  
  puVar1 = (undefined8 *)FUN_18140e230(local_res18,DAT_18262bb74);
  FUN_1813f0dc0(param_2,DAT_182674268,*puVar1,param_1);
  puVar1 = (undefined8 *)FUN_18140e230(local_res18,DAT_182674358);
  FUN_1813f0dc0(param_2,DAT_182674230,*puVar1,param_1);
  return;
}



############ FUN_ 18058eaf8 size=12 ############

void .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__(longlong param_1)

{
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -0xb0);
  return;
}



############ FUN_ 180568990 size=48 ############

undefined8 .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(longlong param_1)

{
  if (*(longlong *)(param_1 + 8) == 0) {
    FUN_180569ff0(param_1 + -0xb0);
    return *(undefined8 *)(param_1 + 8);
  }
  return *(undefined8 *)(param_1 + 8);
}



############ FUN_ 18058d2b0 size=47 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(undefined8 *param_1)

{
  *param_1 = AudioProcessingModule<float,2>::vftable;
  *(undefined4 *)((longlong)param_1 + 0x54) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 18058e2d0 size=22 ############

undefined8 *
.?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::
             _Func_impl_no_alloc<<lambda_9bfa14f9c2678396df24fa38689fe38a>,void,juce::StringRef,float>
             ::vftable;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18058e450 size=196 ############

void .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
               (longlong param_1,undefined8 *param_2,float *param_3)

{
  float fVar1;
  undefined1 uVar2;
  int iVar3;
  uint uVar4;
  int *_Memory;
  undefined4 local_res8;
  char *local_res10;
  
  FUN_18049c9e0(&local_res10,*param_2);
  fVar1 = *param_3;
  iVar3 = atoi(local_res10);
  if (iVar3 < 0) {
    uVar4 = *(uint *)(local_res10 + -0x10);
  }
  else {
    if (0.0 < fVar1) {
      if (fVar1 < DAT_1824c3ea4) {
        uVar2 = (undefined1)(int)(fVar1 * DAT_1824c454c);
      }
      else {
        uVar2 = 0xff;
      }
    }
    else {
      uVar2 = 0;
    }
    local_res8 = CONCAT13(uVar2,(int3)*(undefined4 *)
                                       (*(longlong *)(param_1 + 8) + 0x99c4 + (longlong)iVar3 * 4));
    *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x99c4 + (longlong)iVar3 * 4) = local_res8;
    *(undefined1 *)(*(longlong *)(param_1 + 8) + 0x9a01) = 1;
    uVar4 = *(uint *)(local_res10 + -0x10);
  }
  _Memory = (int *)(local_res10 + -0x10);
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    iVar3 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18058e2c0 size=8 ############

TypeDescriptor * .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(void)

{
  return &<lambda_9bfa14f9c2678396df24fa38689fe38a>::RTTI_Type_Descriptor;
}



############ FUN_ 180535ed0 size=52 ############

void * .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(void *param_1,ulonglong param_2)

{
  FUN_180535f10();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180529c60 size=548 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
               int param_5)

{
  uint *puVar1;
  uint uVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  float fVar7;
  float fVar8;
  double dVar9;
  double dVar10;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0x2404dc);
  uVar2 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar2 & 1) == 0) {
    lVar6 = (longlong)param_5;
    iVar4 = *(int *)(param_1 + 100) / 2;
    iVar5 = iVar4 + 1;
    FUN_1805355d0(*(undefined8 *)(param_1 + 0x540678 + lVar6 * 0x10),param_2,iVar5);
    if (0 < *(int *)(param_1 + 0x1b0)) {
      lVar6 = *(longlong *)(param_1 + 0x540678 + lVar6 * 0x10);
      FUN_180530080(lVar6,lVar6 + 4,iVar4);
      FUN_18052d920(lVar6);
      uVar3 = *(undefined8 *)(param_1 + 0x5406f8);
      iVar5 = __std_type_info_compare(0x182650db8,0x182650db8);
      if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0();
      }
                    /* WARNING: Subroutine does not return */
      thunk_FUN_181ba94b0(lVar6 + 4,lVar6,uVar3,iVar4);
    }
    uVar3 = *(undefined8 *)(param_1 + 0x540678 + lVar6 * 0x10);
    fVar7 = (float)FUN_1804d56b0(uVar3,iVar5);
    fVar8 = expf((*(float *)(param_1 + 0x54087c) * DAT_1824c4478 - DAT_1824c44d0) * _DAT_1824c3cd4);
    FUN_18052d8a0(uVar3,uVar3,fVar8 * fVar7,iVar5);
    dVar10 = (double)((*(float *)(param_1 + 0x24) / (float)*(int *)(param_1 + 0x1a0)) *
                     (float)*(int *)(param_1 + 0x1ac)) * DAT_1824c3e30;
    dVar9 = (double)fmax(DAT_1824c42d8,DAT_1824c3cf8);
    dVar10 = pow(DAT_1824c3f70,DAT_1824c4140 / (dVar9 * dVar10));
    FUN_18052d920(*(undefined8 *)(param_1 + 0x5407a8 + lVar6 * 0x10));
    FUN_18052dae0(*(undefined8 *)(param_1 + 0x5407a8 + lVar6 * 0x10),
                  *(undefined8 *)(param_1 + 0x540678 + lVar6 * 0x10),DAT_1824c3ea4 - (float)dVar10,
                  iVar5);
    FUN_18052dbc0(*(undefined8 *)(param_1 + 0x540678 + lVar6 * 0x10),
                  *(undefined8 *)(param_1 + 0x5407a8 + lVar6 * 0x10),iVar5);
    LOCK();
    *(undefined4 *)(param_1 + 0x2404dc) = 0;
    UNLOCK();
  }
  return;
}



############ FUN_ 180529ef0 size=227 ############

ulonglong .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1)

{
  uint *puVar1;
  uint uVar2;
  ulonglong in_RAX;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0x2404dc);
  uVar2 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar2 & 1) == 0) {
    if (*(int *)(param_1 + 0x5408a8) < 1) {
      *(int *)(param_1 + 0x5408a8) =
           (int)(*(int *)(param_1 + 0x1ac) + (*(int *)(param_1 + 0x1ac) >> 0x1f & 3U)) >> 2;
      if (*(char *)(param_1 + 0x54089c) != '\0') {
        *(undefined1 *)(param_1 + 0x54089c) = 0;
        LOCK();
        uVar2 = *(uint *)(param_1 + 0x2404dc);
        *(uint *)(param_1 + 0x2404dc) = 0;
        UNLOCK();
        return (ulonglong)uVar2;
      }
      if ((*(char *)(param_1 + 0x54089d) != '\0') || (*(char *)(param_1 + 0x54089e) != '\0')) {
        FUN_180530b60();
        *(undefined2 *)(param_1 + 0x54089d) = 0;
        LOCK();
        uVar2 = *(uint *)(param_1 + 0x2404dc);
        *(uint *)(param_1 + 0x2404dc) = 0;
        UNLOCK();
        return (ulonglong)uVar2;
      }
      if (*(char *)(param_1 + 0x54089f) != '\0') {
        FUN_180530d30();
        *(undefined1 *)(param_1 + 0x54089f) = 0;
        LOCK();
        uVar2 = *(uint *)(param_1 + 0x2404dc);
        *(uint *)(param_1 + 0x2404dc) = 0;
        UNLOCK();
        return (ulonglong)uVar2;
      }
      if (*(char *)(param_1 + 0x5408a0) != '\0') {
        FUN_180530d30();
        *(undefined1 *)(param_1 + 0x5408a0) = 0;
        LOCK();
        uVar2 = *(uint *)(param_1 + 0x2404dc);
        *(uint *)(param_1 + 0x2404dc) = 0;
        UNLOCK();
        return (ulonglong)uVar2;
      }
    }
    else {
      *(int *)(param_1 + 0x5408a8) = *(int *)(param_1 + 0x5408a8) + -1;
    }
    LOCK();
    uVar2 = *(uint *)(param_1 + 0x2404dc);
    *(uint *)(param_1 + 0x2404dc) = 0;
    in_RAX = (ulonglong)uVar2;
    UNLOCK();
  }
  return in_RAX;
}



############ FUN_ 18052bba0 size=68 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,float param_2)

{
  float fVar1;
  
  fVar1 = expf((param_2 * DAT_1824c4348 + _DAT_1824c44a4) * _DAT_1824c3cd4);
  *(int *)(param_1 + 0x5408a4) = *(int *)(param_1 + 0x5408a4) + 1;
  *(float *)(param_1 + 0x540870) = fVar1;
  *(undefined1 *)(param_1 + 0x54089c) = 1;
  return;
}



############ FUN_ 18052bb80 size=22 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined4 param_2)

{
  *(int *)(param_1 + 0x5408a4) = *(int *)(param_1 + 0x5408a4) + 1;
  *(undefined4 *)(param_1 + 0x540878) = param_2;
  *(undefined1 *)(param_1 + 0x54089d) = 1;
  return;
}



############ FUN_ 18052bb60 size=22 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined4 param_2)

{
  *(int *)(param_1 + 0x5408a4) = *(int *)(param_1 + 0x5408a4) + 1;
  *(undefined4 *)(param_1 + 0x54087c) = param_2;
  *(undefined1 *)(param_1 + 0x54089e) = 1;
  return;
}



############ FUN_ 18052bb40 size=22 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined4 param_2)

{
  *(int *)(param_1 + 0x5408a4) = *(int *)(param_1 + 0x5408a4) + 1;
  *(undefined4 *)(param_1 + 0x540880) = param_2;
  *(undefined1 *)(param_1 + 0x54089f) = 1;
  return;
}



############ FUN_ 18052bb20 size=22 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined4 param_2)

{
  *(int *)(param_1 + 0x5408a4) = *(int *)(param_1 + 0x5408a4) + 1;
  *(undefined4 *)(param_1 + 0x540884) = param_2;
  *(undefined1 *)(param_1 + 0x5408a0) = 1;
  return;
}



############ FUN_ 18052bb00 size=17 ############

undefined4
.?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  LOCK();
  uVar1 = *(undefined4 *)(param_1 + 0x540874);
  *(undefined4 *)(param_1 + 0x540874) = param_2;
  UNLOCK();
  return uVar1;
}



############ FUN_ 18052bad0 size=39 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,float param_2)

{
  float fVar1;
  
  fVar1 = expf(param_2 * _DAT_1824c3cd4);
  *(float *)(param_1 + 0x540888) = fVar1;
  return;
}



############ FUN_ 18052baa0 size=39 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,float param_2)

{
  float fVar1;
  
  fVar1 = expf(param_2 * _DAT_1824c3cd4);
  *(float *)(param_1 + 0x54088c) = fVar1;
  return;
}



############ FUN_ 18052ba50 size=71 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,float param_2)

{
  float fVar1;
  float fVar2;
  
  if (*(int *)(param_1 + 0x30) == 2) {
    fVar1 = param_2 * DAT_1824c41e0;
    if (DAT_1824c3ea4 <= param_2 * DAT_1824c41e0) {
      fVar1 = DAT_1824c3ea4;
    }
    fVar2 = (DAT_1824c3ea4 - param_2) * DAT_1824c41e0;
    if (DAT_1824c3ea4 <= fVar2) {
      fVar2 = DAT_1824c3ea4;
    }
    *(float *)(param_1 + 0x20) = fVar1;
    *(float *)(param_1 + 0x1c) = fVar2;
    return;
  }
  *(undefined4 *)(param_1 + 0x1c) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x20) = 0x3f800000;
  return;
}



############ FUN_ 18052ba20 size=13 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined1 param_2)

{
  *(undefined1 *)(param_1 + 0x5408b8) = param_2;
  FUN_18052e9b0(param_1,1);
  return;
}



############ FUN_ 18052b9b0 size=104 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__
               (longlong param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  *(undefined4 *)(param_1 + 0x240498 + (longlong)param_3 * 4) = param_2;
  *(undefined1 *)(param_1 + 0x5408ad) = 1;
  iVar1 = *(int *)(param_1 + 0x2404cc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x2404cc) <= iVar1) &&
       (iVar1 = *(int *)(param_1 + 0x2404cc) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x2404c0) + (longlong)iVar1 * 8));
  }
  return;
}



############ FUN_ 18052b990 size=17 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,int param_2)

{
  FUN_18052e260(param_1,*(int *)(param_1 + 0x1b0) * param_2 * 2);
  return;
}



############ FUN_ 18052b980 size=15 ############

undefined8 .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,int param_2)

{
  return *(undefined8 *)(param_1 + 0x540728 + (longlong)param_2 * 0x10);
}



############ FUN_ 18052b960 size=17 ############

undefined4 .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1)

{
  return *(undefined4 *)(param_1 + 0x540874);
}



############ FUN_ 18052b950 size=12 ############

undefined1 .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1)

{
  undefined1 uVar1;
  
  LOCK();
  uVar1 = *(undefined1 *)(param_1 + 0x5408af);
  *(undefined1 *)(param_1 + 0x5408af) = 1;
  UNLOCK();
  return uVar1;
}



############ FUN_ 1805369d0 size=22 ############

undefined8 *
.?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_2937b54935429bbc431fc2d545bc18f0>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537bd0 size=109 ############

void .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(longlong param_1,float *param_2)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined4 local_res8;
  
  local_res8 = SUB84((double)*param_2 + DAT_1824c4520,0);
  uVar1 = *(undefined4 *)(DAT_182673f50 + (longlong)local_res8 * 4);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
  if (5 < *(uint *)(lVar2 + 0x444)) {
    *(undefined4 *)(*(longlong *)(*(longlong *)(lVar2 + 0x438) + 0x28) + 0x800) = uVar1;
    *(undefined1 *)(lVar2 + 0x24046c) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000800 = uVar1;
  *(undefined1 *)(lVar2 + 0x24046c) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 1805369c0 size=8 ############

TypeDescriptor * .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__(void)

{
  return &<lambda_2937b54935429bbc431fc2d545bc18f0>::RTTI_Type_Descriptor;
}



############ FUN_ 180536e50 size=22 ############

undefined8 * FUN_180536e50(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_06ae0426807e6954e3e089ee1dcf6652>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537410 size=30 ############

void FUN_180537410(longlong param_1,float *param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168);
                    /* WARNING: Could not recover jumptable at 0x00018053742a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar1 + 0x68))(plVar1,*param_2 * DAT_1824c3cb8);
  return;
}



############ FUN_ 180536e40 size=8 ############

TypeDescriptor * FUN_180536e40(void)

{
  return &<lambda_06ae0426807e6954e3e089ee1dcf6652>::RTTI_Type_Descriptor;
}



############ FUN_ 1805367c0 size=22 ############

undefined8 * FUN_1805367c0(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_6637bc3cf867f859d2c5876e52ff28c9>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537f80 size=24 ############

void FUN_180537f80(longlong param_1,float *param_2)

{
  LOCK();
  *(bool *)(*(longlong *)(param_1 + 8) + 0x938) = 0.0 < *param_2;
  UNLOCK();
  return;
}



############ FUN_ 1805367b0 size=8 ############

TypeDescriptor * FUN_1805367b0(void)

{
  return &<lambda_6637bc3cf867f859d2c5876e52ff28c9>::RTTI_Type_Descriptor;
}



############ FUN_ 180536940 size=22 ############

undefined8 * FUN_180536940(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_478db92d76ad5d3455b148fd9f4e4481>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 180537c80 size=25 ############

void FUN_180537c80(longlong param_1,undefined4 *param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x168);
                    /* WARNING: Could not recover jumptable at 0x000180537c92. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar1 + 0xa0))(plVar1,*param_2);
  return;
}



############ FUN_ 180536930 size=8 ############

TypeDescriptor * FUN_180536930(void)

{
  return &<lambda_478db92d76ad5d3455b148fd9f4e4481>::RTTI_Type_Descriptor;
}



############ FUN_ 1805649b0 size=80 ############

void * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(void *param_1,ulonglong param_2)

{
  FUN_18052fa60((longlong)param_1 + 0xa0);
  FUN_18052fa60((longlong)param_1 + 0x88);
  FUN_1805619f0((longlong)param_1 + 8);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805644b0 size=14 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(undefined8 param_1,undefined8 *param_2)

{
  *param_2 = &DAT_1824b0528;
  return param_2;
}



############ FUN_ 1805644c0 size=24 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1)

{
  *(undefined4 *)(param_1 + 0xbc) = *(undefined4 *)(*(longlong *)(param_1 + 0xc0) + 0x88);
  FUN_180564570();
  return;
}



############ FUN_ 1805615b0 size=65 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(undefined8 param_1,undefined8 *param_2)

{
  undefined8 local_res10;
  undefined1 local_res18 [16];
  
  *param_2 = 0;
  param_2[1] = 0;
  param_2[2] = 0;
  local_res10 = 0x100000000;
  FUN_18056d350(param_2,&local_res10,local_res18);
  return param_2;
}



############ FUN_ 1805644e0 size=66 ############

undefined8 .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,int param_2)

{
  float fVar1;
  
  if (param_2 == 1) {
    fVar1 = *(float *)(*(longlong *)(param_1 + 0xc0) + 0x88);
    if (*(float *)(param_1 + 0xbc) != fVar1) {
      *(float *)(param_1 + 0xbc) = fVar1;
      FUN_180564570();
      return 1;
    }
  }
  return 0;
}



############ FUN_ 180564530 size=54 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1)

{
  undefined4 uVar1;
  
  glLineWidth(DAT_1824c3ea4);
  uVar1 = (**(code **)(*(longlong *)(param_1 + 8) + 0x18))(param_1 + 8);
                    /* WARNING: Could not recover jumptable at 0x00018056455f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  glDrawArrays(1,0,uVar1);
  return;
}



############ FUN_ 180560370 size=43 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = CloudyModalContainer::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18056f770 size=22 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_8b849f32d8b44d9a025135fa9350954a>,void>::vftable;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056fb00 size=45 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1)

{
  FUN_181411d60(*(longlong *)(*(longlong *)(*(longlong *)(param_1 + 8) + 0x498) + 0xf8) + 0x148,
                "phase",DAT_1824c3ea4);
  return;
}



############ FUN_ 18056f760 size=8 ############

TypeDescriptor * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(void)

{
  return &<lambda_8b849f32d8b44d9a025135fa9350954a>::RTTI_Type_Descriptor;
}



############ FUN_ 18055e9f0 size=78 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1)

{
  undefined1 local_res8 [8];
  
  FUN_18055eb10(param_1 + 0x48);
  *(undefined ***)(param_1 + 0x40) = ConfigOption::vftable;
  FUN_18056a760(param_1 + 0x30,local_res8,**(undefined8 **)(param_1 + 0x30),
                *(undefined8 **)(param_1 + 0x30));
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x30));
}



############ FUN_ 181411fb0 size=481 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,ulonglong param_2)

{
  void *_Dst;
  char cVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  int iVar9;
  undefined8 *puVar10;
  undefined8 *local_res8;
  
  iVar2 = *(int *)(param_2 + 0x8c);
  lVar3 = *(longlong *)(param_2 + 0x80);
  iVar9 = 0;
  lVar4 = 0;
  if (0 < iVar2) {
    do {
      if (param_1 == *(longlong *)(lVar3 + lVar4 * 8)) {
        _Dst = (void *)(lVar3 + (longlong)iVar9 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar9) + -1) << 3);
        *(int *)(param_2 + 0x8c) = *(int *)(param_2 + 0x8c) + -1;
        iVar2 = *(int *)(param_2 + 0x8c);
        iVar9 = 0;
        if (0 < iVar2 * 2) {
          iVar9 = iVar2 * 2;
        }
        if (iVar9 < *(int *)(param_2 + 0x88)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(param_2 + 0x88)) {
            FUN_18047cb30((longlong *)(param_2 + 0x80));
          }
        }
        break;
      }
      iVar9 = iVar9 + 1;
      lVar4 = lVar4 + 1;
    } while (lVar4 < iVar2);
  }
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  puVar10 = *(undefined8 **)(param_1 + 0x20);
  cVar1 = *(char *)((longlong)puVar10[1] + 0x19);
  local_res8 = puVar10;
  puVar7 = (undefined8 *)puVar10[1];
  while (cVar1 == '\0') {
    if ((ulonglong)puVar7[4] < param_2) {
      puVar5 = (undefined8 *)puVar7[2];
      puVar7 = local_res8;
    }
    else {
      puVar5 = (undefined8 *)*puVar7;
    }
    local_res8 = puVar7;
    puVar7 = puVar5;
    cVar1 = *(char *)((longlong)puVar5 + 0x19);
  }
  if ((local_res8 == puVar10) || (param_2 < (ulonglong)local_res8[4])) {
    local_res8 = puVar10;
  }
  if (local_res8 != puVar10) {
    puVar7 = (undefined8 *)puVar10[1];
    cVar1 = *(char *)((longlong)puVar7 + 0x19);
    puVar5 = puVar10;
    puVar8 = puVar7;
    while (cVar1 == '\0') {
      if ((ulonglong)puVar8[4] < param_2) {
        puVar6 = (undefined8 *)puVar8[2];
        puVar8 = puVar5;
      }
      else {
        if ((*(char *)((longlong)puVar10 + 0x19) != '\0') && (param_2 < (ulonglong)puVar8[4])) {
          puVar10 = puVar8;
        }
        puVar6 = (undefined8 *)*puVar8;
      }
      puVar5 = puVar8;
      puVar8 = puVar6;
      cVar1 = *(char *)((longlong)puVar6 + 0x19);
    }
    if (*(char *)((longlong)puVar10 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar10;
    }
    cVar1 = *(char *)((longlong)puVar7 + 0x19);
    while (cVar1 == '\0') {
      if (param_2 < (ulonglong)puVar7[4]) {
        puVar8 = (undefined8 *)*puVar7;
        puVar10 = puVar7;
      }
      else {
        puVar8 = (undefined8 *)puVar7[2];
      }
      puVar7 = puVar8;
      cVar1 = *(char *)((longlong)puVar8 + 0x19);
    }
    while (puVar5 != puVar10) {
      puVar7 = (undefined8 *)puVar5[2];
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar7 + 0x19);
        puVar5 = puVar7;
        puVar7 = (undefined8 *)*puVar7;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar7 + 0x19);
          puVar5 = puVar7;
          puVar7 = (undefined8 *)*puVar7;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar8 = (undefined8 *)puVar5[1];
        puVar7 = puVar5;
        while ((puVar5 = puVar8, cVar1 == '\0' && (puVar7 == (undefined8 *)puVar5[2]))) {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar8 = (undefined8 *)puVar5[1];
          puVar7 = puVar5;
        }
      }
    }
    FUN_18056a8e0(param_1 + 0x20,&local_res8);
  }
                    /* WARNING: Could not recover jumptable at 0x00018141218a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  return;
}



############ FUN_ 18056ebf0 size=22 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_686fb1e5accf07c958e2013a1a64da1d>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056ee00 size=67 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (*(int *)(lVar1 + 0x84) != 0) {
    *(undefined4 *)(**(longlong **)(lVar1 + 0x78) + 0x80c) = *param_2;
    *(undefined1 *)(lVar1 + 0x2400a7) = 1;
    FUN_18052fc30();
    return;
  }
  uRam000000000000080c = *param_2;
  *(undefined1 *)(lVar1 + 0x2400a7) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056ebe0 size=8 ############

TypeDescriptor * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(void)

{
  return &<lambda_686fb1e5accf07c958e2013a1a64da1d>::RTTI_Type_Descriptor;
}



############ FUN_ 18056e8c0 size=22 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  *param_2 = std::
             _Func_impl_no_alloc<<lambda_17c8196088cc2adc18d40d7c2d76fdb6>,float,float,float,float>
             ::vftable;
  uVar1 = *(undefined8 *)(param_1 + 0x10);
  param_2[1] = *(undefined8 *)(param_1 + 8);
  param_2[2] = uVar1;
  return param_2;
}



############ FUN_ 18056f540 size=100 ############

undefined4
.?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__
          (longlong param_1,float *param_2,float *param_3,float *param_4)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *(int *)(param_1 + 8) + -1;
  iVar2 = SUB84((double)(((float)*(int *)(param_1 + 8) / (*param_3 - *param_2)) *
                        (*param_4 - *param_2)) + DAT_1824c4520,0);
  if (iVar2 < 0) {
    iVar2 = 0;
  }
  else if (iVar1 < iVar2) {
    iVar2 = iVar1;
  }
  return *(undefined4 *)
          (**(longlong **)(*(longlong *)(param_1 + 0x10) + 0x100) + (longlong)iVar2 * 4);
}



############ FUN_ 18056e8b0 size=8 ############

TypeDescriptor * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(void)

{
  return &<lambda_17c8196088cc2adc18d40d7c2d76fdb6>::RTTI_Type_Descriptor;
}



############ FUN_ 18056f660 size=22 ############

undefined8 * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_c0e1c24dcee68a22e2e61de0818ed38e>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056fd00 size=16 ############

void .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(longlong param_1)

{
  FUN_181608b50(*(undefined8 *)(*(longlong *)(param_1 + 8) + 0x8f8));
  return;
}



############ FUN_ 18056f650 size=8 ############

TypeDescriptor * .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__(void)

{
  return &<lambda_c0e1c24dcee68a22e2e61de0818ed38e>::RTTI_Type_Descriptor;
}



############ FUN_ 180570e2c size=12 ############

void FUN_180570e2c(longlong param_1)

{
  FUN_180564cf0(param_1 + -0x140);
  return;
}



############ FUN_ 18056e950 size=22 ############

undefined8 * FUN_18056e950(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_c1d14b0dc8609c707c26e93450f79ea7>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056f250 size=80 ############

void FUN_18056f250(longlong param_1,float *param_2)

{
  undefined4 uVar1;
  longlong lVar2;
  
  lVar2 = *(longlong *)(param_1 + 8);
  uVar1 = *(undefined4 *)(DAT_182673f50 + (longlong)(int)*param_2 * 4);
  if (5 < *(uint *)(lVar2 + 0x84)) {
    *(undefined4 *)(*(longlong *)(*(longlong *)(lVar2 + 0x78) + 0x28) + 0x800) = uVar1;
    *(undefined1 *)(lVar2 + 0x2400ac) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000800 = uVar1;
  *(undefined1 *)(lVar2 + 0x2400ac) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056e940 size=8 ############

TypeDescriptor * FUN_18056e940(void)

{
  return &<lambda_c1d14b0dc8609c707c26e93450f79ea7>::RTTI_Type_Descriptor;
}



############ FUN_ 18056ebc0 size=22 ############

undefined8 * FUN_18056ebc0(longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_33a0f80d6c909bf8cc3376d50b5ba477>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056ee50 size=67 ############

void FUN_18056ee50(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (*(int *)(lVar1 + 0x84) != 0) {
    *(undefined4 *)(**(longlong **)(lVar1 + 0x78) + 0x804) = *param_2;
    *(undefined1 *)(lVar1 + 0x2400a7) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000804 = *param_2;
  *(undefined1 *)(lVar1 + 0x2400a7) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056ebb0 size=8 ############

TypeDescriptor * FUN_18056ebb0(void)

{
  return &<lambda_33a0f80d6c909bf8cc3376d50b5ba477>::RTTI_Type_Descriptor;
}



############ FUN_ 18055e150 size=32 ############

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(longlong param_1)

{
  *(undefined4 *)(param_1 + 0x14) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 181639430 size=21 ############

undefined8 *
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 *param_2)

{
  *(undefined4 *)(param_2 + 1) = 1;
  *param_2 = &PTR_vftable_18262b570;
  return param_2;
}



############ FUN_ 18055e070 size=33 ############

undefined8
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"GainRangeScaling");
  return param_2;
}



############ FUN_ 181639320 size=33 ############

undefined8
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"Display range of the reduction graph");
  return param_2;
}



############ FUN_ 1811d2340 size=920 ############

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

void .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
     vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
               (longlong *param_1,undefined8 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  int unaff_retaddr;
  undefined1 auStack_168 [32];
  int local_148;
  undefined *local_140;
  undefined4 *local_138;
  undefined8 local_130;
  uint local_120;
  undefined8 local_118;
  longlong *local_110;
  undefined8 local_d8;
  undefined1 local_c8 [32];
  undefined8 local_a8;
  undefined1 local_90 [80];
  ulonglong local_40;
  ulonglong uVar4;
  
  local_a8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_168;
  uVar3 = (uint)&stack0x00000000 & 0x27f;
  uVar4 = (ulonglong)uVar3;
  local_120 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3 + 0xe90a ^ 0xea3a;
  local_130 = param_2;
  local_110 = param_1;
  local_d8 = param_2;
  uVar1 = (**(code **)(*param_1 + 0x10))(param_1,local_c8);
  FUN_1811de3f0(local_90,uVar1);
  FUN_18124a7e0(local_c8);
  uVar2 = 0x180000000;
  local_118 = 0x100;
  local_138 = &DAT_18145e1bc;
  local_140 = &DAT_18145e2bc;
  do {
    FUN_1811d2fca(0xf024);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = (DAT_18145e1bc ^ 0x811c9e53) * 0x10001d1;
  local_148 = (DAT_18145e1c0 ^ uVar3) * 0x10001d1;
  (*(code *)&LAB_1811a1bf5)(uVar3,~(~uVar2 + 1) + 1,uVar4);
  return;
}



############ FUN_ 18055e0a0 size=157 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
               (longlong *param_1,undefined8 *param_2)

{
  uint uVar1;
  longlong **pplVar2;
  undefined1 auStack_58 [32];
  longlong *local_38;
  undefined1 local_30 [8];
  undefined8 local_28;
  undefined8 *local_20;
  ulonglong local_18;
  
  local_28 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_20 = param_2;
  uVar1 = (**(code **)(*(longlong *)*param_2 + 8))((longlong *)*param_2,param_2 + 1);
  if (uVar1 < 3) {
    local_38 = (longlong *)*param_2;
    (**(code **)(*local_38 + 0xb8))(local_38,local_30,param_2 + 1);
    pplVar2 = &local_38;
  }
  else {
    pplVar2 = (longlong **)(**(code **)(*param_1 + 8))(param_1,&local_38);
  }
  FUN_1811d0a50(param_1,pplVar2);
  (**(code **)(*(longlong *)*param_2 + 0xb0))((longlong *)*param_2,param_2 + 1);
}



############ FUN_ 1816393e0 size=70 ############

undefined4
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 *param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*(longlong *)*param_2 + 8))((longlong *)*param_2,param_2 + 1);
  if (iVar1 != 2) {
    if (iVar1 == 1) {
      return DAT_1824c41e0;
    }
    if (iVar1 == 0) {
      return DAT_1824c4388;
    }
  }
  return DAT_1824c3ea4;
}



############ FUN_ 181639350 size=127 ############

undefined8 *
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  int iVar1;
  
  iVar1 = (**(code **)(*(longlong *)*param_3 + 8))((longlong *)*param_3,param_3 + 1);
  if (iVar1 == 2) {
    FUN_18049c4e0(param_2,"large (from -18 dB to +18 dB)");
    return param_2;
  }
  if (iVar1 == 0) {
    FUN_18049c4e0(param_2,"precise (from -3 dB to +3 dB)");
    return param_2;
  }
  if (iVar1 == 1) {
    FUN_18049c4e0(param_2,"default (from -9 dB to +9 dB)");
    return param_2;
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 18055e7e0 size=39 ############

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(longlong param_1)

{
  FUN_180488c50(param_1 + 8);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 18055e5f0 size=48 ############

undefined8 *
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 *param_2)

{
  int *piVar1;
  longlong lVar2;
  
  *param_2 = &PTR_vftable_18262b560;
  lVar2 = DAT_182673918;
  param_2[1] = DAT_182673918;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(lVar2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 18055e620 size=33 ############

undefined8
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"EditorSizeOption");
  return param_2;
}



############ FUN_ 1811d2320 size=24 ############

undefined8
.?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
          (longlong *param_1,undefined8 param_2)

{
  (**(code **)(*param_1 + 0x10))();
  return param_2;
}



############ FUN_ 18055e650 size=365 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
               (undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  uint *_Memory;
  undefined ***pppuVar6;
  undefined1 auStack_88 [32];
  longlong local_68;
  undefined **local_60;
  longlong local_58;
  undefined **local_50;
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined8 *local_38;
  ulonglong local_30;
  
  local_40 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_38 = param_2;
  (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,&local_68,param_2 + 1);
  lVar3 = local_68;
  iVar5 = 0;
  if (local_68 == DAT_1826738c8) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18048cbc0(local_68);
  }
  lVar2 = DAT_182673918;
  if (iVar4 != 0) {
    if (lVar3 == DAT_182673918) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_18048cbc0(lVar3,DAT_182673918);
    }
    if (iVar4 != 0) {
      if (lVar3 == DAT_1826737c0) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_18048cbc0(lVar3);
      }
      if (iVar4 != 0) {
        if (lVar3 != DAT_182673808) {
          iVar5 = FUN_18048cbc0(lVar3);
        }
        if (iVar5 != 0) {
          local_60 = &PTR_vftable_18262b560;
          local_58 = lVar2;
          if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
            UNLOCK();
          }
          pppuVar6 = &local_60;
          goto LAB_18055e770;
        }
      }
    }
  }
  local_50 = (undefined **)*param_2;
  (**(code **)(*local_50 + 0xb8))(local_50,local_48,param_2 + 1);
  pppuVar6 = &local_50;
LAB_18055e770:
  FUN_1811d0a50(param_1,pppuVar6);
  _Memory = (uint *)(local_68 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*(longlong *)*param_2 + 0xb0))((longlong *)*param_2,param_2 + 1);
}



############ FUN_ 18056ea70 size=22 ############

undefined8 *
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  *param_2 = std::_Func_impl_no_alloc<<lambda_63ca4daeb926eb6a4e276d49b3d1f485>,void,float>::vftable
  ;
  uVar1 = *(undefined8 *)(param_1 + 0x10);
  param_2[1] = *(undefined8 *)(param_1 + 8);
  param_2[2] = uVar1;
  return param_2;
}



############ FUN_ 18056f0a0 size=30 ############

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
               (longlong param_1,undefined4 *param_2)

{
  *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x2400d8 + (longlong)*(int *)(param_1 + 8) * 4) =
       *param_2;
  *(undefined1 *)(*(longlong *)(param_1 + 0x10) + 0x240108) = 1;
  return;
}



############ FUN_ 18056ea60 size=8 ############

TypeDescriptor * .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(void)

{
  return &<lambda_63ca4daeb926eb6a4e276d49b3d1f485>::RTTI_Type_Descriptor;
}



############ FUN_ 18056f870 size=14 ############

undefined8 *
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_1af6f68916b393ab74c270408a7a647e>,void>::vftable;
  return param_2;
}



############ FUN_ 18056f860 size=8 ############

TypeDescriptor * .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(void)

{
  return &<lambda_1af6f68916b393ab74c270408a7a647e>::RTTI_Type_Descriptor;
}



############ FUN_ 1805619b0 size=56 ############

/* Library Function - Single Match
    public: void * __ptr64 __cdecl MRECmpImpl::`scalar deleting destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void * __thiscall MRECmpImpl::_scalar_deleting_destructor_(MRECmpImpl *this,uint param_1)

{
  FUN_1805619f0(this + 8);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 180570e80 size=12 ############

void .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(longlong param_1)

{
  FUN_180564300(param_1 + -0x80);
  return;
}



############ FUN_ 180570e50 size=12 ############

void .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(longlong param_1)

{
  FUN_180564cf0(param_1 + -0x8a8);
  return;
}



############ FUN_ 1813d3b10 size=12 ############

void .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(longlong param_1)

{
  FUN_1813d59f0(param_1 + -0x8a8);
  return;
}



############ FUN_ 18056f710 size=22 ############

undefined8 *
.?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_bcb38e394b903ac1284f71989cde1f7f>,void>::vftable;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056fb60 size=39 ############

void .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(longlong param_1)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)(*(longlong *)(param_1 + 8) + 0x488);
  *(undefined8 *)(*(longlong *)(param_1 + 8) + 0x488) = 0;
  if (puVar1 != (undefined8 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018056fb83. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)*puVar1)(puVar1,1);
    return;
  }
  return;
}



############ FUN_ 18056f700 size=8 ############

TypeDescriptor *
.?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
          (void)

{
  return &<lambda_bcb38e394b903ac1284f71989cde1f7f>::RTTI_Type_Descriptor;
}



############ FUN_ 1804834e0 size=33 ############

void * .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
       vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(void *param_1,ulonglong param_2)

{
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18056f6e0 size=22 ############

undefined8 *
.?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_5dcc2fe3fc1dfb627427a919a03f5f39>,juce::String,float>
             ::vftable;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056fb90 size=79 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
               (undefined8 param_1,undefined8 param_2,float *param_3)

{
  longlong lVar1;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined1 local_11;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_38 = param_2;
  lVar1 = FUN_181233e10(&local_10,(int)*param_3);
  FUN_180495150(param_2,lVar1,&local_11 + -lVar1);
}



############ FUN_ 18056f6d0 size=8 ############

TypeDescriptor *
.?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
          (void)

{
  return &<lambda_5dcc2fe3fc1dfb627427a919a03f5f39>::RTTI_Type_Descriptor;
}



############ FUN_ 180570f1c size=12 ############

void .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(longlong param_1)

{
  FUN_180568c40(param_1 + -0x120);
  return;
}



############ FUN_ 180565bd0 size=200 ############

int * .?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::
      vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____(longlong param_1,int *param_2)

{
  code *pcVar1;
  undefined8 uVar2;
  longlong lVar3;
  int iVar4;
  float fVar5;
  int local_res8;
  uint uStackX_c;
  
  uVar2 = (**(code **)(*(longlong *)(param_1 + -0x120) + 0x180))(param_1 + -0x120);
  pcVar1 = *(code **)(*(longlong *)(param_1 + 0x20) + 8);
  if (pcVar1 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    lVar3 = *(longlong *)(param_1 + 0x28);
  }
  else {
    lVar3 = (*pcVar1)();
  }
  fVar5 = *(float *)(lVar3 + 0x88) * DAT_1824c42d0;
  local_res8 = 0;
  uStackX_c = *(uint *)(*(longlong *)(param_1 + 0x378) + 0x2c);
  FUN_18051db10(&local_res8,param_1 + -0x120,uVar2,(ulonglong)uStackX_c << 0x20);
  iVar4 = (int)fVar5;
  *param_2 = local_res8 + iVar4;
  param_2[1] = uStackX_c + iVar4;
  return param_2;
}



############ FUN_ 180564360 size=43 ############

undefined8 *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
          (undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Soothe2ModuleBase<float,2>::Listener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180570e08 size=12 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1)

{
  FUN_180564cf0(param_1 + -0x120);
  return;
}



############ FUN_ 18056ea10 size=22 ############

undefined8 *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_af136f8edf8261379de59ed8b361e91c>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056f130 size=83 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1,float *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (*(uint *)(lVar1 + 0x84) < 6) {
    uRam0000000000000810 = *param_2 == 0.0;
    *(undefined1 *)(lVar1 + 0x2400ac) = 1;
    FUN_18052fc30();
    return;
  }
  *(bool *)(*(longlong *)(*(longlong *)(lVar1 + 0x78) + 0x28) + 0x810) = *param_2 == 0.0;
  *(undefined1 *)(lVar1 + 0x2400ac) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056ea00 size=8 ############

TypeDescriptor *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__(void)

{
  return &<lambda_af136f8edf8261379de59ed8b361e91c>::RTTI_Type_Descriptor;
}



############ FUN_ 180570ebc size=12 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1)

{
  FUN_180568c40(param_1 + -0x118);
  return;
}



############ FUN_ 180565f20 size=366 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined1 auVar3 [16];
  longlong lVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  undefined1 (*pauVar7) [16];
  undefined8 *local_res8;
  undefined1 local_18 [16];
  
  if (param_2 == *(longlong *)(*(longlong *)(param_1 + 0x380) + 0x108)) {
    plVar1 = (longlong *)(param_1 + -0x118);
    plVar2 = (longlong *)(param_1 + 0x368);
    if (*plVar2 == 0) {
      plVar6 = (longlong *)(**(code **)(*plVar1 + 0x198))(plVar1,&local_res8);
      if (plVar2 != plVar6) {
        lVar4 = *plVar6;
        *plVar6 = 0;
        puVar5 = (undefined8 *)*plVar2;
        *plVar2 = lVar4;
        if (puVar5 != (undefined8 *)0x0) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
      if (local_res8 != (undefined8 *)0x0) {
        (**(code **)*local_res8)(local_res8,1);
      }
      plVar6 = (longlong *)*plVar2;
      if (plVar6 != (longlong *)0x0) {
        (**(code **)(*plVar6 + 0x58))(plVar6,1);
        FUN_181343cc0(plVar1,plVar6,0xffffffff);
      }
    }
    if (((int)((longlong *)*plVar2)[0x18] - 1U & 0xfffffffd) == 0) {
      pauVar7 = (undefined1 (*) [16])(**(code **)(*plVar1 + 400))(plVar1,local_18);
      lVar4 = *plVar2;
      auVar3 = *pauVar7;
      *(undefined1 (*) [16])(lVar4 + 0xc4) = auVar3;
      FUN_18134bfe0(lVar4,auVar3._0_8_,auVar3._0_8_ >> 0x20,auVar3._8_8_,auVar3._12_4_);
      FUN_181344f60(*plVar2,1);
      if ((*(longlong *)(param_1 + 0x390) != 0) &&
         ((*(byte *)(*(longlong *)(param_1 + 0x390) + 0xa8) & 2) != 0)) {
        FUN_181344e50(*plVar2);
      }
                    /* WARNING: Could not recover jumptable at 0x00018056606f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*(longlong *)*plVar2 + 0x160))();
      return;
    }
    (**(code **)(*(longlong *)*plVar2 + 0x168))();
  }
  return;
}



############ FUN_ 18056e9e0 size=22 ############

undefined8 *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_1252a209ed5e2f37e3cd555b68b3df55>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056f190 size=68 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (5 < *(uint *)(lVar1 + 0x84)) {
    *(undefined4 *)(*(longlong *)(*(longlong *)(lVar1 + 0x78) + 0x28) + 0x80c) = *param_2;
    *(undefined1 *)(lVar1 + 0x2400ac) = 1;
    FUN_18052fc30();
    return;
  }
  uRam000000000000080c = *param_2;
  *(undefined1 *)(lVar1 + 0x2400ac) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056e9d0 size=8 ############

TypeDescriptor *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__(void)

{
  return &<lambda_1252a209ed5e2f37e3cd555b68b3df55>::RTTI_Type_Descriptor;
}



############ FUN_ 180570eec size=12 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1)

{
  .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
  vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
            (param_1 + -0xb0);
  return;
}



############ FUN_ 18056eb60 size=22 ############

undefined8 *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_fb6c2a43ec65bc2ceb414b55420b61e1>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056eec0 size=79 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1,float *param_2)

{
  undefined4 uVar1;
  longlong lVar2;
  
  lVar2 = *(longlong *)(param_1 + 8);
  uVar1 = *(undefined4 *)(DAT_182673f90 + (longlong)(int)*param_2 * 4);
  if (*(int *)(lVar2 + 0x84) != 0) {
    *(undefined4 *)(**(longlong **)(lVar2 + 0x78) + 0x800) = uVar1;
    *(undefined1 *)(lVar2 + 0x2400a7) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000800 = uVar1;
  *(undefined1 *)(lVar2 + 0x2400a7) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056eb50 size=8 ############

TypeDescriptor *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__(void)

{
  return &<lambda_fb6c2a43ec65bc2ceb414b55420b61e1>::RTTI_Type_Descriptor;
}



############ FUN_ 180570df0 size=12 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1)

{
  FUN_180562ab0(param_1 + -0x80);
  return;
}



############ FUN_ 18055fda0 size=284 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__
               (longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  longlong local_48;
  undefined8 local_40;
  undefined8 *local_38;
  ulonglong local_30;
  
  local_40 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_48 = *(longlong *)(param_1 + 0x2e8);
  _Memory = (uint *)(local_48 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_38 = param_3;
  iVar3 = FUN_18048cbc0(param_2,local_48);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    cVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    uVar4 = DAT_1824c3ea4;
    if (cVar2 == '\0') {
      uVar4 = 0;
    }
    local_58 = DAT_1824c4680;
    FUN_181411be0(param_1 + 0x138,"alpha",uVar4);
    uVar4 = 0;
    if (cVar2 == '\0') {
      uVar4 = DAT_1824c3c70;
    }
    FUN_181411d60(param_1 + 0x138,"offset",uVar4);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 180570ef8 size=9 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1)

{
  FUN_180562ab0(param_1 + -0x78);
  return;
}



############ FUN_ 18055fd70 size=41 ############

void .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
     vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
               (longlong param_1)

{
  FUN_18055fee0();
  if (*(longlong **)(param_1 + 0x60) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
                    /* WARNING: Could not recover jumptable at 0x00018055fd96. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(longlong **)(param_1 + 0x60) + 0x10))();
  return;
}



############ FUN_ 18056e980 size=22 ############

undefined8 *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
          (longlong param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_ec499628dfd33d196e21bd37193598d5>,void,float>::vftable
  ;
  param_2[1] = *(undefined8 *)(param_1 + 8);
  return param_2;
}



############ FUN_ 18056f230 size=22 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  *(undefined4 *)(lVar1 + 0x2400ec) = *param_2;
  *(undefined1 *)(lVar1 + 0x240108) = 1;
  return;
}



############ FUN_ 18056e970 size=8 ############

TypeDescriptor *
.?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__(void)

{
  return &<lambda_ec499628dfd33d196e21bd37193598d5>::RTTI_Type_Descriptor;
}



############ FUN_ 180570eb0 size=12 ############

void .?AVListener@?$Soothe2ModuleBase@M$01@@::vtbl___AVListener___Soothe2ModuleBase_M_01__
               (longlong param_1)

{
  FUN_180564cf0(param_1 + -0x110);
  return;
}



############ FUN_ 180565a70 size=260 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
     vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
               (longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *puVar4;
  undefined1 auStack_68 [32];
  longlong local_48;
  longlong local_40 [2];
  undefined8 *local_30;
  ulonglong local_28;
  
  local_40[1] = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_30 = param_3;
  plVar3 = (longlong *)
           (**(code **)(*(longlong *)(param_1 + 0x410) + 0x10))
                     ((longlong *)(param_1 + 0x410),local_40);
  if (*param_2 == *plVar3) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(*param_2,*plVar3);
  }
  puVar4 = (uint *)(local_40[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (iVar2 == 0) {
    (**(code **)(*(longlong *)*param_3 + 0x20))((longlong *)*param_3,&local_48,param_3 + 1);
    FUN_180568f80(param_1 + -0x110,&local_48);
    puVar4 = (uint *)(local_48 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  else {
    FUN_180569a90(param_1 + 0x88);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 180570ec8 size=12 ############

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(longlong param_1)

{
  FUN_180564300(param_1 + -0x88);
  return;
}



############ FUN_ 180562fd0 size=12 ############

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(longlong param_1)

{
  FUN_180562fe0(param_1 + -0x88);
  return;
}



############ FUN_ 180561240 size=52 ############

void * .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
                 (void *param_1,ulonglong param_2)

{
  FUN_180561290();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181413fd0 size=126 ############

void .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(longlong param_1)

{
  int iVar1;
  
  if ((*(char *)(param_1 + 0x240108) != '\0') || (*(char *)(param_1 + 0x2400a4) != '\0')) {
    if (*(char *)(param_1 + 0x2400a4) != '\0') {
      *(undefined1 *)(param_1 + 0x2400a4) = 0;
      FUN_18052fbd0();
    }
    iVar1 = *(int *)(param_1 + 0x24011c);
    while (0 < iVar1) {
      iVar1 = iVar1 + -1;
      if ((*(int *)(param_1 + 0x24011c) <= iVar1) &&
         (iVar1 = *(int *)(param_1 + 0x24011c) + -1, iVar1 < 0)) break;
      FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x240110) + (longlong)iVar1 * 8));
    }
    *(undefined1 *)(param_1 + 0x240108) = 0;
  }
  return;
}



############ FUN_ 18056f690 size=14 ############

undefined8 *
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 *param_2)

{
  *param_2 = std::_Func_impl_no_alloc<<lambda_48d6b72469a596964c681047269cabb2>,juce::String,float>
             ::vftable;
  return param_2;
}



############ FUN_ 180537680 size=31 ############

undefined8
.?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__
          (undefined8 param_1,undefined8 param_2,undefined4 *param_3)

{
  FUN_18141afd0(param_2,*param_3);
  return param_2;
}



############ FUN_ 18056f680 size=8 ############

TypeDescriptor * .?AVSoothe2AudioProcessorEditor@@::vtbl___AVSoothe2AudioProcessorEditor__(void)

{
  return &<lambda_48d6b72469a596964c681047269cabb2>::RTTI_Type_Descriptor;
}



############ FUN_ 181a058a0 size=1095 ############

void FUN_181a058a0(longlong param_1)

{
  ulonglong *puVar1;
  ulonglong *puVar2;
  longlong *plVar3;
  char *pcVar4;
  float *pfVar5;
  uint *puVar6;
  int iVar7;
  longlong *plVar8;
  code *pcVar9;
  ulonglong uVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  bool bVar14;
  double dVar15;
  uint uVar16;
  undefined8 *puVar17;
  longlong lVar18;
  undefined8 uVar19;
  undefined8 uVar20;
  longlong lVar21;
  float *pfVar22;
  undefined4 *puVar23;
  longlong lVar24;
  ulonglong uVar25;
  longlong lVar26;
  longlong lVar27;
  ulonglong uVar28;
  ulonglong uVar29;
  uint uVar30;
  ulonglong uVar31;
  char cVar32;
  float fVar33;
  float fVar34;
  int local_res8;
  undefined4 local_res18 [2];
  undefined4 local_res20 [2];
  float afStack_b8 [4];
  longlong *local_a8;
  undefined4 *puStack_a0;
  undefined1 local_98 [16];
  undefined1 local_88 [72];
  
  if (*(longlong *)(*(longlong *)(param_1 + 0x1b8) + 0x168) == 0) {
    return;
  }
  if (*(char *)(param_1 + 0x1e0) == '\0') {
    return;
  }
  *(undefined1 *)(param_1 + 0x1e0) = 0;
  uVar31 = *(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 2;
  puVar17 = (undefined8 *)FUN_1812c37c0(*(longlong *)(param_1 + 0x1b8),local_98);
  uVar25 = 0;
  if (*(int *)((longlong)puVar17 + 0xc) == 0) {
    local_res8 = 0;
  }
  else {
    local_res8 = FUN_18123d3f0(*puVar17);
  }
  FUN_18047c500(local_88);
  FUN_18047c500(local_98);
  puVar1 = (ulonglong *)(param_1 + 0x128);
  uVar30 = (uint)uVar31;
  lVar24 = (longlong)(int)uVar30;
  iVar7 = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x1b8) + 0x168) + 100) / 2 + 1;
  if ((longlong)(*(longlong *)(param_1 + 0x130) - *puVar1) >> 2 != lVar24) {
    FUN_18056cd00(puVar1,lVar24);
  }
  puVar2 = (ulonglong *)(param_1 + 0x140);
  if ((longlong)(*(longlong *)(param_1 + 0x148) - *puVar2) >> 2 != lVar24) {
    FUN_18056cd00(puVar2,lVar24);
    FUN_1812b4430(*puVar2);
  }
  plVar3 = (longlong *)(param_1 + 0xf8);
  if (*(longlong *)(param_1 + 0x100) - *plVar3 >> 2 != (longlong)iVar7) {
    puStack_a0 = local_res18;
    local_res18[0] = 0;
    local_a8 = plVar3;
    FUN_18058fc80(plVar3,(longlong)iVar7,&local_a8);
  }
  bVar14 = false;
  plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x1b8) + 0x168);
  pcVar9 = *(code **)(*plVar8 + 0xd0);
  if (pcVar9 == .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__) {
    LOCK();
    pcVar4 = (char *)((longlong)plVar8 + 0x2404bd);
    cVar32 = *pcVar4;
    *pcVar4 = '\0';
    UNLOCK();
    cVar32 = cVar32 != '\0';
  }
  else {
    cVar32 = (*pcVar9)();
  }
  if (cVar32 == '\0') {
    if (*(int *)(param_1 + 0x228) < 1) {
      bVar14 = true;
    }
    else {
      *(int *)(param_1 + 0x228) = *(int *)(param_1 + 0x228) + -1;
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x228) = 3;
  }
  cVar32 = (**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x1b8) + 0x168) + 0xe8))();
  fVar34 = DAT_1824c3ea4;
  if ((cVar32 != '\0') || (bVar14)) {
    local_res20[0] = 0;
    FUN_1805686c0(puVar1,lVar24,local_res20);
    fVar33 = DAT_1824c3d18;
    if (!bVar14) goto LAB_181a05d2e;
  }
  else {
    lVar26 = *(longlong *)(*(longlong *)(param_1 + 0x1b8) + 0x168);
    do {
      LOCK();
      puVar6 = (uint *)(lVar26 + 0x2404b8);
      uVar16 = *puVar6;
      *puVar6 = *puVar6 | 1;
      UNLOCK();
    } while ((uVar16 & 1) != 0);
    plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x1b8) + 0x168);
    lVar18 = *plVar8;
    if (local_res8 == 1) {
      lVar18 = (**(code **)(lVar18 + 0xd8))();
      fVar33 = DAT_1824c3c3c;
      uVar28 = uVar25;
      if (3 < lVar24) {
        lVar27 = *(longlong *)(param_1 + 0xe0) - *puVar1;
        pfVar22 = (float *)(*puVar1 + 4);
        lVar21 = (lVar24 - 4U >> 2) + 1;
        uVar28 = lVar21 * 4;
        do {
          pfVar22[-1] = *(float *)(lVar18 + (longlong)*(int *)((longlong)pfVar22 + lVar27 + -4) * 4)
                        + fVar33;
          *pfVar22 = *(float *)(lVar18 + (longlong)*(int *)((longlong)pfVar22 + lVar27) * 4) +
                     fVar33;
          pfVar22[1] = *(float *)(lVar18 + (longlong)*(int *)((longlong)pfVar22 + lVar27 + 4) * 4) +
                       fVar33;
          pfVar22[2] = *(float *)(lVar18 + (longlong)*(int *)((longlong)pfVar22 + lVar27 + 8) * 4) +
                       fVar33;
          pfVar22 = pfVar22 + 4;
          lVar21 = lVar21 + -1;
        } while (lVar21 != 0);
      }
      if ((longlong)uVar28 < lVar24) {
        uVar25 = *puVar1;
        lVar26 = *(longlong *)(param_1 + 0xe0);
        lVar24 = lVar24 - uVar28;
        pfVar22 = (float *)(uVar25 + uVar28 * 4);
        do {
          *pfVar22 = *(float *)(lVar18 + (longlong)*(int *)((longlong)pfVar22 + (lVar26 - uVar25)) *
                                         4) + fVar33;
          pfVar22 = pfVar22 + 1;
          lVar24 = lVar24 + -1;
        } while (lVar24 != 0);
        FUN_181a05cc3();
        return;
      }
    }
    else {
      lVar21 = *plVar3;
      uVar19 = (**(code **)(lVar18 + 0xd8))(plVar8,0);
      FUN_18052dbc0(lVar21,uVar19,iVar7);
      uVar19 = *(undefined8 *)(param_1 + 0xf8);
      plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x1b8) + 0x168);
      uVar20 = (**(code **)(*plVar3 + 0xd8))(plVar3,1);
      FUN_180530010(uVar19,uVar19,uVar20,iVar7);
      uVar28 = uVar25;
      if (3 < lVar24) {
        lVar18 = *(longlong *)(param_1 + 0xf8);
        lVar21 = *(longlong *)(param_1 + 0xe0) - *puVar1;
        lVar27 = (lVar24 - 4U >> 2) + 1;
        uVar28 = lVar27 * 4;
        puVar23 = (undefined4 *)(*puVar1 + 4);
        do {
          puVar23[-1] = *(undefined4 *)
                         (lVar18 + (longlong)*(int *)((longlong)puVar23 + lVar21 + -4) * 4);
          *puVar23 = *(undefined4 *)(lVar18 + (longlong)*(int *)((longlong)puVar23 + lVar21) * 4);
          puVar23[1] = *(undefined4 *)
                        (lVar18 + (longlong)*(int *)((longlong)puVar23 + lVar21 + 4) * 4);
          puVar23[2] = *(undefined4 *)
                        (lVar18 + (longlong)*(int *)((longlong)puVar23 + lVar21 + 8) * 4);
          lVar27 = lVar27 + -1;
          puVar23 = puVar23 + 4;
        } while (lVar27 != 0);
      }
      if ((longlong)uVar28 < lVar24) {
        uVar10 = *puVar1;
        lVar18 = *(longlong *)(param_1 + 0xe0);
        lVar21 = *(longlong *)(param_1 + 0xf8);
        lVar27 = lVar24 - uVar28;
        puVar23 = (undefined4 *)(uVar10 + uVar28 * 4);
        do {
          *puVar23 = *(undefined4 *)
                      (lVar21 + (longlong)*(int *)((longlong)puVar23 + (lVar18 - uVar10)) * 4);
          lVar27 = lVar27 + -1;
          puVar23 = puVar23 + 1;
        } while (lVar27 != 0);
      }
    }
    LOCK();
    *(undefined4 *)(lVar26 + 0x2404b8) = 0;
    UNLOCK();
    fVar33 = (float)(**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x1b8) + 0x168) + 0xe0))();
    FUN_1812b3270(*puVar1);
    FUN_1812b3db0(*puVar1,fVar34 - fVar33,uVar31 & 0xffffffff);
    uVar28 = *puVar1;
    FUN_180535a70(uVar28,uVar28,uVar31 & 0xffffffff);
    FUN_18052d920(uVar28);
LAB_181a05d2e:
    fVar33 = DAT_1824c3df0;
  }
  fVar34 = fVar34 - fVar33;
  uVar31 = uVar25;
  if ((0 < (int)uVar30) && (uVar31 = 0, 0xf < uVar30)) {
    uVar28 = *puVar2;
    uVar10 = *puVar1;
    if ((uVar10 + (longlong)(int)(uVar30 - 1) * 4 < uVar28) ||
       (uVar28 + (longlong)(int)(uVar30 - 1) * 4 < uVar10)) {
      uVar16 = uVar30 & 0x8000000f;
      if ((int)uVar16 < 0) {
        uVar16 = (uVar16 - 1 | 0xfffffff0) + 1;
      }
      pfVar22 = (float *)(uVar28 + 0x20);
      uVar31 = uVar25;
      uVar29 = uVar25;
      do {
        uVar31 = (ulonglong)((int)uVar31 + 0x10);
        pfVar5 = (float *)((longlong)pfVar22 + uVar10 + (-0x20 - uVar28));
        fVar11 = pfVar5[1];
        fVar12 = pfVar5[2];
        fVar13 = pfVar5[3];
        uVar29 = uVar29 + 0x10;
        pfVar22[-8] = *pfVar5 * fVar33 + pfVar22[-8] * fVar34;
        pfVar22[-7] = fVar11 * fVar33 + pfVar22[-7] * fVar34;
        pfVar22[-6] = fVar12 * fVar33 + pfVar22[-6] * fVar34;
        pfVar22[-5] = fVar13 * fVar33 + pfVar22[-5] * fVar34;
        pfVar5 = (float *)((longlong)pfVar22 + uVar10 + (-0x10 - uVar28));
        fVar11 = pfVar5[1];
        fVar12 = pfVar5[2];
        fVar13 = pfVar5[3];
        pfVar22[-4] = *pfVar5 * fVar33 + pfVar22[-4] * fVar34;
        pfVar22[-3] = fVar11 * fVar33 + pfVar22[-3] * fVar34;
        pfVar22[-2] = fVar12 * fVar33 + pfVar22[-2] * fVar34;
        pfVar22[-1] = fVar13 * fVar33 + pfVar22[-1] * fVar34;
        pfVar5 = (float *)((longlong)pfVar22 + (uVar10 - uVar28));
        fVar11 = pfVar5[1];
        fVar12 = pfVar5[2];
        fVar13 = pfVar5[3];
        *pfVar22 = *pfVar5 * fVar33 + *pfVar22 * fVar34;
        pfVar22[1] = fVar11 * fVar33 + pfVar22[1] * fVar34;
        pfVar22[2] = fVar12 * fVar33 + pfVar22[2] * fVar34;
        pfVar22[3] = fVar13 * fVar33 + pfVar22[3] * fVar34;
        pfVar5 = (float *)((longlong)pfVar22 + uVar10 + (0x10 - uVar28));
        fVar11 = pfVar5[1];
        fVar12 = pfVar5[2];
        fVar13 = pfVar5[3];
        pfVar22[4] = *pfVar5 * fVar33 + pfVar22[4] * fVar34;
        pfVar22[5] = fVar11 * fVar33 + pfVar22[5] * fVar34;
        pfVar22[6] = fVar12 * fVar33 + pfVar22[6] * fVar34;
        pfVar22[7] = fVar13 * fVar33 + pfVar22[7] * fVar34;
        pfVar22 = pfVar22 + 0x10;
      } while ((longlong)uVar29 < (longlong)(int)(uVar30 - uVar16));
    }
  }
  lVar26 = (longlong)(int)uVar31;
  if (lVar26 < lVar24) {
    if (3 < lVar24 - lVar26) {
      uVar31 = *puVar2;
      uVar28 = *puVar1;
      pfVar22 = (float *)(uVar31 + 8 + lVar26 * 4);
      lVar18 = ((lVar24 - lVar26) - 4U >> 2) + 1;
      lVar26 = lVar26 + lVar18 * 4;
      do {
        lVar21 = uVar28 + (-8 - uVar31);
        pfVar22[-2] = fVar34 * pfVar22[-2] + fVar33 * *(float *)(lVar21 + (longlong)pfVar22);
        pfVar22[-1] = fVar33 * *(float *)(lVar21 + 4 + (longlong)pfVar22) + fVar34 * pfVar22[-1];
        *pfVar22 = fVar33 * *(float *)((uVar28 - uVar31) + (longlong)pfVar22) + fVar34 * *pfVar22;
        pfVar22[1] = fVar33 * *(float *)(uVar28 + (4 - uVar31) + (longlong)pfVar22) +
                     fVar34 * pfVar22[1];
        pfVar22 = pfVar22 + 4;
        lVar18 = lVar18 + -1;
      } while (lVar18 != 0);
    }
    if (lVar26 < lVar24) {
      uVar31 = *puVar2;
      uVar28 = *puVar1;
      pfVar22 = (float *)(uVar31 + lVar26 * 4);
      lVar26 = lVar24 - lVar26;
      do {
        *pfVar22 = fVar33 * *(float *)((longlong)pfVar22 + (uVar28 - uVar31)) + fVar34 * *pfVar22;
        pfVar22 = pfVar22 + 1;
        lVar26 = lVar26 + -1;
      } while (lVar26 != 0);
    }
  }
  fVar34 = (float)FUN_180487300(*(undefined8 *)(param_1 + 0x1c8));
  dVar15 = DAT_1824c4140;
  plVar3 = (longlong *)(param_1 + 400);
  *(undefined8 *)(param_1 + 0x19c) = 0;
  *(undefined8 *)(param_1 + 0x1a4) = 0;
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  fVar34 = (float)((dVar15 - (double)fVar34) * (double)*(int *)(param_1 + 0x16c));
  if (*(int *)(param_1 + 0x19c) == 0) {
    *(float *)(param_1 + 0x1a8) = fVar34;
    *(undefined8 *)(param_1 + 0x1a0) = 0;
  }
  else {
    if (*(float *)(param_1 + 0x1a0) <= 0.0) {
      if (*(float *)(param_1 + 0x1a4) <= 0.0 && *(float *)(param_1 + 0x1a4) != 0.0) {
        *(undefined4 *)(param_1 + 0x1a4) = 0;
      }
    }
    else {
      *(undefined4 *)(param_1 + 0x1a0) = 0;
    }
    if (fVar34 < *(float *)(param_1 + 0x1a8)) {
      *(float *)(param_1 + 0x1a8) = fVar34;
      goto LAB_181a06023;
    }
    if (fVar34 < *(float *)(param_1 + 0x1ac) || fVar34 == *(float *)(param_1 + 0x1ac))
    goto LAB_181a06023;
  }
  *(float *)(param_1 + 0x1ac) = fVar34;
LAB_181a06023:
  FUN_1804b02a0(plVar3,&DAT_1821df344,0,fVar34);
  lVar26 = *(longlong *)(param_1 + 0x1b8);
  cVar32 = FUN_180528c00(lVar26);
  uVar30 = DAT_1824c4f30;
  if ((cVar32 == '\0') && (*(char *)(lVar26 + 0x939) == '\0')) {
    bVar14 = false;
  }
  else {
    bVar14 = true;
  }
  if (0 < lVar24) {
    do {
      afStack_b8[0] = *(float *)(*puVar2 + uVar25 * 4);
      if (bVar14) {
        afStack_b8[0] = (float)((uint)afStack_b8[0] ^ uVar30);
      }
      afStack_b8[0] = afStack_b8[0] * *(float *)(param_1 + 0x164);
      plVar8 = *(longlong **)(param_1 + 0x220);
      if (plVar8 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*plVar8 + 0x10))(plVar8,afStack_b8);
      FUN_18129ddd0(plVar3);
      uVar25 = uVar25 + 1;
    } while ((longlong)uVar25 < lVar24);
  }
  FUN_18129ddd0(plVar3);
  if (!bVar14) {
    FUN_18129ddd0(plVar3);
    FUN_18129ddd0(plVar3);
  }
  iVar7 = *(int *)(param_1 + 0x19c);
  if ((iVar7 != 0) &&
     ((iVar7 < 1 || (*(float *)(*plVar3 + (longlong)(iVar7 + -1) * 4) != DAT_1824c460c)))) {
    if (*(int *)(param_1 + 0x198) < iVar7 + 1) {
      FUN_1804af790(plVar3,iVar7 + 9 + (iVar7 + 1) / 2 & 0xfffffff8);
    }
    iVar7 = *(int *)(param_1 + 0x19c);
    *(int *)(param_1 + 0x19c) = iVar7 + 1;
    *(undefined4 *)(*plVar3 + (longlong)iVar7 * 4) = 0x47c35280;
  }
  return;
}



############ FUN_ 180001a90 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615cc8)[DAT_1826159a0])();
  return;
}



############ FUN_ 18052db50 size=104 ############

void FUN_18052db50(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_2);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0((double)(float)param_2,param_1,param_3);
}



############ FUN_ 1805334e0 size=122 ############

void FUN_1805334e0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  longlong lVar1;
  int iVar2;
  int local_18;
  undefined4 local_14;
  
  FUN_18052f640(param_1,&local_18,param_4,0,0);
  lVar1 = *(longlong *)(param_1 + 0x20);
  iVar2 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_3,lVar1 + (longlong)local_18 * 4,param_2,local_14);
}



############ FUN_ 1800019d0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615bc8)[DAT_1826159a0])();
  return;
}



############ FUN_ 1805305f0 size=579 ############

undefined8 * FUN_1805305f0(undefined8 *param_1)

{
  undefined8 **ppuVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 *local_res8;
  
  ppuVar1 = (undefined8 **)(param_1 + 1);
  *ppuVar1 = (undefined8 *)0x0;
  *(undefined4 *)(param_1 + 2) = 0x3f800000;
  *(undefined8 *)((longlong)param_1 + 0x24) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2c) = 0x3f800000;
  *(undefined4 *)(param_1 + 6) = 2;
  *(undefined4 *)((longlong)param_1 + 0x44) = 1;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined4 *)(param_1 + 0xb) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x1c) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x14) = 0x3f800000;
  *(undefined4 *)(param_1 + 4) = 0x3f800000;
  *(undefined4 *)(param_1 + 3) = 0x3f800000;
  *param_1 = SpectralProcessor<float,8,2>::vftable;
  local_res8 = param_1;
  FUN_180533670(param_1 + 0xc);
  *(undefined4 *)(param_1 + 0x33) = 0x10000;
  *(undefined4 *)((longlong)param_1 + 0x19c) = 0x1000;
  *(undefined4 *)(param_1 + 0x34) = 1;
  *(undefined4 *)((longlong)param_1 + 0x1a4) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x35) = 1;
  *(undefined4 *)((longlong)param_1 + 0x1ac) = 4;
  param_1[0x36] = 2;
  *(undefined1 *)(param_1 + 0x37) = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0x38,0x40,2,(_func_void_void_ptr *)&LAB_180533300,FUN_18052bcb0);
  _eh_vector_constructor_iterator_
            (param_1 + 0x48,0x40,2,(_func_void_void_ptr *)&LAB_180533300,FUN_18052bcb0);
  _eh_vector_constructor_iterator_
            (param_1 + 0x58,0x40,2,(_func_void_void_ptr *)&LAB_180533300,FUN_18052bcb0);
  param_1[0x68] = 0;
  *(undefined4 *)(param_1 + 0x69) = 0;
  param_1[0x6a] = 0;
  *(undefined4 *)(param_1 + 0x6b) = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0x6c,0x10,2,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  param_1[0x72] = 0;
  *(undefined4 *)(param_1 + 0x73) = 0;
  param_1[0x74] = 0;
  *(undefined4 *)(param_1 + 0x75) = 0;
  param_1[0x76] = 0;
  *(undefined4 *)(param_1 + 0x77) = 0;
  *(undefined4 *)(param_1 + 0x79) = 1;
  *(undefined1 *)((longlong)param_1 + 0x3cc) = 1;
  *(undefined4 *)(param_1 + 6) = 2;
  *(undefined4 *)((longlong)param_1 + 0x44) = 0x10000;
  uVar3 = FUN_1811316e0(0x128);
  puVar4 = (undefined8 *)
           FUN_180535db0(uVar3,*(undefined4 *)(param_1 + 6),
                         *(undefined4 *)((longlong)param_1 + 0x44));
  if (ppuVar1 == &local_res8) {
    if (puVar4 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)puVar4[3]);
    }
  }
  else {
    puVar2 = *ppuVar1;
    *ppuVar1 = puVar4;
    if (puVar2 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)puVar2[3]);
    }
  }
  FUN_180534840(param_1 + 9,*(undefined4 *)((longlong)param_1 + 0x44));
  FUN_18052e130(param_1);
  return param_1;
}



############ FUN_ 18052e9b0 size=3167 ############

void FUN_18052e9b0(longlong param_1,char param_2)

{
  uint *puVar1;
  float *pfVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  int iVar9;
  uint uVar10;
  int *piVar11;
  int iVar12;
  float *pfVar13;
  longlong lVar14;
  ulonglong uVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  char *pcVar20;
  float fVar21;
  float fVar22;
  undefined8 extraout_XMM0_Qb;
  float fVar23;
  double dVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  float fVar29;
  
  do {
    LOCK();
    puVar1 = (uint *)(param_1 + 0x2404dc);
    uVar3 = *puVar1;
    *puVar1 = *puVar1 | 1;
    UNLOCK();
  } while ((uVar3 & 1) != 0);
  uVar3 = *(int *)(param_1 + 0x2404e0) + 0x6dc0cf6U & 0x8000007f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar3;
  fVar22 = DAT_1824c3c58;
  fVar29 = *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar3 * 4);
  fVar27 = (float)DAT_18262b704;
  fVar21 = *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                     (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4);
  fVar25 = (float)DAT_18262b5c8;
  uVar3 = *(int *)(param_1 + 0x2404e0) + 0x1763eaU & 0x8000007f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar3;
  iVar17 = (int)(fVar25 * fVar21 * fVar27 * fVar29 + fVar22) * DAT_18262b700 -
           (int)((float)DAT_18262b5c8 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                           (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                 (float)DAT_18262b704 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar3 * 4) + fVar22)
           * DAT_18262b700;
  uVar3 = *(int *)(param_1 + 0x2404e0) + 0x6dc2ce2U & 0x8000007f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar3;
  iVar9 = (int)((float)DAT_18262b5c8 *
                *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                          (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                (float)DAT_18262b704 *
                *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar3 * 4) + fVar22) *
          DAT_18262b700;
  uVar3 = *(int *)(param_1 + 0x2404e0) + 0x4bf29aU & 0x8000007f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar3;
  fVar29 = (float)((int)((float)DAT_18262b5c8 *
                         *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                                   (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                         (float)DAT_18262b704 *
                         *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar3 * 4) +
                        fVar22) * DAT_18262b700);
  uVar3 = *(int *)(param_1 + 0x2404e0) + 0xcb6294U & 0x8000007f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar3;
  fVar27 = DAT_1824c3ea4;
  fVar21 = *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar3 * 4);
  fVar28 = (float)DAT_18262b704;
  fVar25 = *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                     (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4);
  fVar26 = (float)DAT_18262b5c8;
  uVar3 = *(int *)(param_1 + 0x2404e0) + 0x10b5e0U & 0x8000007f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xffffff80) + 1;
  }
  uVar15 = 0;
  iVar16 = 0;
  *(uint *)(param_1 + 0x2404e0) = uVar3;
  iVar18 = (int)(fVar26 * fVar25 * fVar28 * fVar21 + fVar22) * DAT_18262b700 +
           (int)((float)DAT_18262b5c8 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                           (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                 (float)DAT_18262b704 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar3 * 4) + fVar22)
           * DAT_18262b700;
  if (param_2 == '\0') {
    .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__(param_1);
    iVar4 = *(int *)(param_1 + 0x1a0) * iVar9 * 8;
    *(int *)(param_1 + 0x540868) = iVar4;
    iVar4 = iVar4 / 2 + iVar9;
    *(int *)(param_1 + 0x54086c) = iVar4;
    FUN_18052e190(param_1 + 0x540668,iVar4 * 2);
    FUN_18052e190(param_1 + 0x540698,*(undefined4 *)(param_1 + 0x54086c));
    uVar7 = uVar15;
    uVar8 = uVar15;
    if (0 < *(int *)(param_1 + 0x5406a0)) {
      do {
        uVar3 = (int)uVar8 + 1;
        *(float *)(uVar7 + *(longlong *)(param_1 + 0x540698)) = fVar29;
        uVar7 = uVar7 + 4;
        uVar8 = (ulonglong)uVar3;
      } while ((int)uVar3 < *(int *)(param_1 + 0x5406a0));
    }
    FUN_18052e190(param_1 + 0x5406a8,*(undefined4 *)(param_1 + 0x54086c));
    FUN_18052e190(param_1 + 0x5406b8,*(undefined4 *)(param_1 + 0x54086c));
    FUN_18052e190(param_1 + 0x5406c8,*(undefined4 *)(param_1 + 0x54086c));
    FUN_18052e190(param_1 + 0x5406d8,*(undefined4 *)(param_1 + 0x54086c));
    FUN_18052e190(param_1 + 0x5406e8,*(undefined4 *)(param_1 + 0x54086c));
    if (iVar17 < *(int *)(param_1 + 0x30)) {
      iVar19 = iVar18 * iVar18 * 0x4000;
      piVar11 = (int *)(((longlong)iVar17 + 0x54073) * 0x10 + param_1);
      iVar4 = iVar17;
      do {
        iVar12 = *(int *)(param_1 + 0x54086c);
        if (piVar11[-0x2c] == iVar12) {
LAB_18052ee7e:
          uVar7 = uVar15;
          uVar8 = uVar15;
          if (0 < piVar11[-0x2c]) {
            do {
              uVar3 = (int)uVar8 + 1;
              *(undefined4 *)(uVar7 + *(longlong *)(piVar11 + -0x2e)) = 0;
              uVar7 = uVar7 + 4;
              uVar8 = (ulonglong)uVar3;
            } while ((int)uVar3 < piVar11[-0x2c]);
          }
        }
        else {
          if ((0 < piVar11[-0x2c]) && (*(longlong *)(piVar11 + -0x2e) != 0)) {
            FUN_1800010c0();
          }
          piVar11[-0x2e] = 0;
          piVar11[-0x2d] = 0;
          if (iVar12 < 0) {
            iVar12 = iVar16;
          }
          piVar11[-0x2c] = iVar12;
          if (iVar12 != 0) {
            uVar6 = FUN_180001080(iVar12 * 4);
            *(undefined8 *)(piVar11 + -0x2e) = uVar6;
            goto LAB_18052ee7e;
          }
        }
        if (*piVar11 == iVar19) {
LAB_18052eee5:
          uVar7 = uVar15;
          uVar8 = uVar15;
          if (0 < *piVar11) {
            do {
              uVar3 = (int)uVar8 + 1;
              *(undefined4 *)(uVar7 + *(longlong *)(piVar11 + -2)) = 0x3f800000;
              uVar7 = uVar7 + 4;
              uVar8 = (ulonglong)uVar3;
            } while ((int)uVar3 < *piVar11);
          }
        }
        else {
          if ((0 < *piVar11) && (*(longlong *)(piVar11 + -2) != 0)) {
            FUN_1800010c0();
          }
          piVar11[-2] = 0;
          piVar11[-1] = 0;
          iVar12 = iVar19;
          if (iVar18 * iVar18 * 0x4000 < 0) {
            iVar12 = iVar16;
          }
          *piVar11 = iVar12;
          if (iVar12 != 0) {
            uVar6 = FUN_180001080(iVar12 * 4);
            *(undefined8 *)(piVar11 + -2) = uVar6;
            goto LAB_18052eee5;
          }
        }
        iVar12 = *(int *)(param_1 + 0x54086c);
        if (piVar11[0x20] == iVar12) {
LAB_18052ef4b:
          uVar7 = uVar15;
          uVar8 = uVar15;
          if (0 < piVar11[0x20]) {
            do {
              uVar3 = (int)uVar8 + 1;
              *(undefined4 *)(uVar7 + *(longlong *)(piVar11 + 0x1e)) = 0;
              uVar7 = uVar7 + 4;
              uVar8 = (ulonglong)uVar3;
            } while ((int)uVar3 < piVar11[0x20]);
          }
        }
        else {
          if ((0 < piVar11[0x20]) && (*(longlong *)(piVar11 + 0x1e) != 0)) {
            FUN_1800010c0();
          }
          piVar11[0x1e] = 0;
          piVar11[0x1f] = 0;
          if (iVar12 < 0) {
            iVar12 = iVar16;
          }
          piVar11[0x20] = iVar12;
          if (iVar12 != 0) {
            uVar6 = FUN_180001080(iVar12 * 4);
            *(undefined8 *)(piVar11 + 0x1e) = uVar6;
            goto LAB_18052ef4b;
          }
        }
        iVar12 = *(int *)(param_1 + 0x54086c);
        if (piVar11[0x28] == iVar12) {
LAB_18052efc4:
          uVar7 = uVar15;
          uVar8 = uVar15;
          if (0 < piVar11[0x28]) {
            do {
              uVar3 = (int)uVar8 + 1;
              *(undefined4 *)(uVar7 + *(longlong *)(piVar11 + 0x26)) = 0x3f800000;
              uVar7 = uVar7 + 4;
              uVar8 = (ulonglong)uVar3;
            } while ((int)uVar3 < piVar11[0x28]);
          }
        }
        else {
          if ((0 < piVar11[0x28]) && (*(longlong *)(piVar11 + 0x26) != 0)) {
            FUN_1800010c0();
          }
          piVar11[0x26] = 0;
          piVar11[0x27] = 0;
          if (iVar12 < 0) {
            iVar12 = iVar16;
          }
          piVar11[0x28] = iVar12;
          if (iVar12 != 0) {
            uVar6 = FUN_180001080(iVar12 * 4);
            *(undefined8 *)(piVar11 + 0x26) = uVar6;
            goto LAB_18052efc4;
          }
        }
        iVar4 = iVar4 + 1;
        piVar11 = piVar11 + 4;
      } while (iVar4 < *(int *)(param_1 + 0x30));
    }
    FUN_18052e190(param_1 + 0x5406f8,*(int *)(param_1 + 0x540868) << 3);
    FUN_18052e190(param_1 + 0x540708,*(int *)(param_1 + 0x540868) * iVar18);
    FUN_18052e190(param_1 + 0x540718,*(int *)(param_1 + 0x540868) * iVar18);
    FUN_18052e190(param_1 + 0x540798,*(undefined4 *)(param_1 + 0x540868));
    uVar7 = uVar15;
    uVar8 = uVar15;
    if (0 < *(int *)(param_1 + 0x5407a0)) {
      do {
        uVar3 = (int)uVar8 + 1;
        *(undefined4 *)(uVar7 + *(longlong *)(param_1 + 0x540798)) = 0x3f800000;
        uVar7 = uVar7 + 4;
        uVar8 = (ulonglong)uVar3;
      } while ((int)uVar3 < *(int *)(param_1 + 0x5407a0));
    }
    FUN_18052dc30(param_1 + 0x540530,*(undefined4 *)(param_1 + 100),
                  *(undefined4 *)(param_1 + 0x540868));
    FUN_18052fe00(param_1 + 0x540530,iVar18,iVar18);
  }
  if (iVar17 < *(int *)(param_1 + 0x30)) {
    piVar11 = (int *)(((longlong)iVar17 + 0x5407b) * 0x10 + param_1);
    iVar16 = iVar17;
    do {
      uVar7 = uVar15;
      uVar8 = uVar15;
      if (0 < piVar11[-0x20]) {
        do {
          uVar3 = (int)uVar8 + 1;
          *(float *)(uVar7 + *(longlong *)(piVar11 + -0x22)) = fVar29;
          uVar7 = uVar7 + 4;
          uVar8 = (ulonglong)uVar3;
        } while ((int)uVar3 < piVar11[-0x20]);
      }
      if (0 < *piVar11) {
        uVar7 = uVar15;
        uVar8 = uVar15;
        do {
          uVar3 = (int)uVar7 + 1;
          uVar7 = (ulonglong)uVar3;
          *(float *)(uVar8 + *(longlong *)(piVar11 + -2)) = (float)iVar17;
          uVar8 = uVar8 + 4;
        } while ((int)uVar3 < *piVar11);
      }
      if (0 < piVar11[8]) {
        uVar7 = uVar15;
        uVar8 = uVar15;
        do {
          uVar3 = (int)uVar7 + 1;
          uVar7 = (ulonglong)uVar3;
          *(float *)(uVar8 + *(longlong *)(piVar11 + 6)) = (float)iVar17;
          uVar8 = uVar8 + 4;
        } while ((int)uVar3 < piVar11[8]);
      }
      iVar16 = iVar16 + 1;
      piVar11 = piVar11 + 4;
    } while (iVar16 < *(int *)(param_1 + 0x30));
  }
  fVar29 = DAT_1824c43e8;
  pfVar2 = *(float **)(param_1 + 0x540698);
  uVar3 = *(int *)(param_1 + 100) / 2 + 1;
  dVar24 = DAT_1824c4140 / ((double)(int)uVar3 - DAT_1824c4140);
  fVar21 = powf(DAT_1824c43e8,DAT_1824c3dd0);
  fVar22 = powf(fVar29,fVar27);
  fVar25 = logf(fVar29);
  fVar29 = DAT_1824c3e28;
  fVar25 = DAT_1824c3e28 / fVar25;
  uVar7 = uVar15;
  if ((0 < (int)uVar3) && (uVar7 = 0, 3 < uVar3)) {
    uVar5 = uVar3 & 0x80000003;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffc) + 1;
    }
    uVar7 = uVar15;
    pfVar13 = pfVar2;
    do {
      uVar6 = thunk_FUN_181a12cf0();
      uVar10 = (int)uVar7 + 4;
      uVar7 = (ulonglong)uVar10;
      *pfVar13 = (float)uVar6 * fVar25;
      pfVar13[1] = (float)((ulonglong)uVar6 >> 0x20) * fVar25;
      pfVar13[2] = (float)extraout_XMM0_Qb * fVar25;
      pfVar13[3] = (float)((ulonglong)extraout_XMM0_Qb >> 0x20) * fVar25;
      pfVar13 = pfVar13 + 4;
    } while ((int)uVar10 < (int)(uVar3 - uVar5));
  }
  for (lVar14 = (longlong)(int)uVar7; lVar14 < (int)uVar3; lVar14 = lVar14 + 1) {
    fVar27 = logf((float)(int)uVar7 * (float)dVar24 * (fVar22 - fVar21) + fVar21);
    uVar7 = (ulonglong)((int)uVar7 + 1);
    pfVar2[lVar14] = fVar27 * fVar25;
  }
  lVar14 = param_1 + 0x3d8;
  uVar3 = *(int *)(param_1 + 0x2404d0) - iVar9;
  *(undefined1 *)(param_1 + 0x5408ae) = 1;
  uVar7 = uVar15;
  if (uVar3 < *(uint *)(param_1 + 0x444)) {
    uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0x438) + (longlong)(int)uVar3 * 8);
  }
  *(undefined4 *)(uVar7 + 0x800) = 8;
  if ((int)uVar3 < 0) {
    *(undefined4 *)(param_1 + 0x240467) = 0x1010101;
    *(undefined4 *)(param_1 + 0x24046b) = 0x1010101;
  }
  else {
    *(undefined1 *)((longlong)(int)uVar3 + 0x24008f + lVar14) = 1;
  }
  FUN_18052fc30(lVar14);
  uVar7 = uVar15;
  if (uVar3 < *(uint *)(param_1 + 0x444)) {
    uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0x438) + (longlong)(int)uVar3 * 8);
  }
  *(undefined4 *)(uVar7 + 0x804) = 0x457a0000;
  if ((int)uVar3 < 0) {
    *(undefined4 *)(param_1 + 0x240467) = 0x1010101;
    *(undefined4 *)(param_1 + 0x24046b) = 0x1010101;
  }
  else {
    *(undefined1 *)((longlong)(int)uVar3 + 0x24008f + lVar14) = 1;
  }
  FUN_18052fc30(lVar14);
  uVar7 = uVar15;
  if (uVar3 < *(uint *)(param_1 + 0x444)) {
    uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0x438) + (longlong)(int)uVar3 * 8);
  }
  *(undefined4 *)(uVar7 + 0x808) = 0x40c00000;
  if ((int)uVar3 < 0) {
    *(undefined4 *)(param_1 + 0x240467) = 0x1010101;
    *(undefined4 *)(param_1 + 0x24046b) = 0x1010101;
  }
  else {
    *(undefined1 *)((longlong)(int)uVar3 + 0x24008f + lVar14) = 1;
  }
  FUN_18052fc30(lVar14);
  fVar21 = DAT_1824c3ea4;
  if (*(char *)(param_1 + 0x5408b8) == '\0') {
    fVar29 = DAT_1824c3ea4;
  }
  uVar7 = uVar15;
  if (uVar3 < *(uint *)(param_1 + 0x444)) {
    uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0x438) + (longlong)(int)uVar3 * 8);
  }
  *(float *)(uVar7 + 0x80c) = fVar29;
  if ((int)uVar3 < 0) {
    *(undefined4 *)(param_1 + 0x240467) = 0x1010101;
    *(undefined4 *)(param_1 + 0x24046b) = 0x1010101;
  }
  else {
    *(undefined1 *)((longlong)(int)uVar3 + 0x24008f + lVar14) = 1;
  }
  FUN_18052fc30(lVar14);
  if ((*(char *)(param_1 + 0x240464) != '\0') &&
     (*(undefined1 *)(param_1 + 0x240464) = 0, 0 < *(int *)(param_1 + 0x24045c))) {
    pcVar20 = (char *)(param_1 + 0x240467);
    uVar7 = uVar15;
    do {
      if (*pcVar20 != '\0') {
        FUN_1805316e0(lVar14,uVar7);
        *pcVar20 = '\0';
      }
      uVar3 = (int)uVar7 + 1;
      uVar7 = (ulonglong)uVar3;
      pcVar20 = pcVar20 + 1;
    } while ((int)uVar3 < *(int *)(param_1 + 0x24045c));
  }
  iVar9 = *(int *)(param_1 + 100) / 2;
  iVar17 = iVar9 + 1;
  FUN_18052e190(param_1 + 0x540748,iVar17);
  fVar27 = DAT_1824c464c;
  fVar25 = DAT_1824c44ec;
  fVar22 = DAT_1824c43dc;
  fVar29 = DAT_1824c43a8;
  fVar26 = *(float *)(param_1 + 0x24) * DAT_1824c3d8c;
  uVar7 = uVar15;
  if (0 < (longlong)iVar17) {
    do {
      fVar23 = (float)(int)uVar7 * (fVar21 / (float)iVar9);
      fVar28 = fVar21;
      if (fVar23 <= fVar21) {
        fVar28 = fVar23;
      }
      fVar28 = expf((fVar28 * fVar26 - fVar25) * fVar27);
      *(float *)(*(longlong *)(param_1 + 0x540748) + uVar15 * 4) =
           fVar22 - (fVar21 / (fVar28 + fVar21)) * fVar29;
      uVar15 = uVar15 + 1;
      uVar7 = (ulonglong)((int)uVar7 + 1);
    } while ((longlong)uVar15 < (longlong)iVar17);
  }
  FUN_180530ff0(param_1);
  iVar17 = *(int *)(param_1 + 100) / 2 + 1;
  *(int *)(param_1 + 0x2404e8) = iVar17;
  *(int *)(param_1 + 0x340500) = iVar17;
  *(int *)(param_1 + 0x440518) = iVar17;
  fVar29 = ((float)*(int *)(param_1 + 0x19c) / (float)*(int *)(param_1 + 0x1a0)) * (float)iVar17;
  *(float *)(param_1 + 0x2404f0) = fVar29;
  *(float *)(param_1 + 0x340508) = fVar29;
  *(float *)(param_1 + 0x440520) = fVar29;
  FUN_180530b60(param_1);
  FUN_180530d30(param_1);
  FUN_180530850(param_1);
  *(undefined4 *)(param_1 + 0x54089c) = 0;
  *(undefined1 *)(param_1 + 0x5408a0) = 0;
  LOCK();
  *(undefined4 *)(param_1 + 0x2404dc) = 0;
  UNLOCK();
  return;
}



############ FUN_ 18052fe00 size=392 ############

void FUN_18052fe00(undefined4 *param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined1 local_38 [4];
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  
  iVar1 = param_1[2];
  param_1[4] = param_3;
  if (iVar1 < 1) {
    iVar1 = param_1[1];
  }
  FUN_18052e190(param_1 + 0x46,(longlong)iVar1 / (longlong)param_3 & 0xffffffff,0);
  FUN_18052e190(param_1 + 0x4a,iVar1,0);
  FUN_1805356f0(*(undefined8 *)(param_1 + 0x46),
                (longlong)(int)param_1[1] / (longlong)param_3 & 0xffffffff);
  FUN_18052d830(*(undefined8 *)(param_1 + 0x46),*(undefined8 *)(param_1 + 0x46),param_4,
                (longlong)(int)param_1[1] / (longlong)param_3 & 0xffffffff);
  FUN_1805356f0(*(undefined8 *)(param_1 + 0x4a),param_1[1]);
  FUN_18052d830(*(undefined8 *)(param_1 + 0x4a),*(undefined8 *)(param_1 + 0x4a),param_4,param_1[1]);
  param_1[3] = param_1[1] * param_2;
  FUN_1805335c0(param_1,&local_48);
  if ((int)param_1[2] < 0) {
    FUN_180534550(param_1 + 0x1e,local_44);
    FUN_180534550(param_1 + 0x26,local_40);
  }
  else {
    FUN_1805335c0(param_1,local_38,param_1[2] * param_2);
    FUN_180534550(param_1 + 0x1e,local_34);
    FUN_180534550(param_1 + 0x26,local_30);
    local_3c = local_2c;
  }
  FUN_180534550(param_1 + 0x22,local_3c);
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_1 + 10);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_1 + 0xc,local_48,*param_1,1,*(undefined8 *)(param_1 + 0x1e),
                      *(undefined8 *)(param_1 + 0x22));
}



############ FUN_ 180530ff0 size=1570 ############

void FUN_180530ff0(longlong param_1)

{
  float fVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  int iVar5;
  ulonglong uVar6;
  int iVar7;
  ulonglong uVar8;
  longlong *plVar9;
  int *piVar10;
  char *pcVar11;
  int iVar12;
  ulonglong uVar13;
  longlong lVar14;
  int iVar15;
  int iVar16;
  ulonglong uVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  
  uVar2 = *(int *)(param_1 + 0x2404e0) + 0x5737c04U & 0x8000007f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar2;
  fVar1 = DAT_1824c3c58;
  fVar21 = *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar2 * 4);
  fVar19 = (float)DAT_18262b704;
  fVar20 = *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                     (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4);
  fVar18 = (float)DAT_18262b5c8;
  uVar2 = *(int *)(param_1 + 0x2404e0) + 0x9d459a6U & 0x8000007f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar2;
  iVar16 = (int)(fVar18 * fVar20 * fVar19 * fVar21 + fVar1) * DAT_18262b700 -
           (int)((float)DAT_18262b5c8 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                           (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                 (float)DAT_18262b704 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar2 * 4) + fVar1) *
           DAT_18262b700;
  uVar2 = *(int *)(param_1 + 0x2404e0) + 0x8b984cU & 0x8000007f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar2;
  iVar15 = (int)((float)DAT_18262b5c8 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                           (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                 (float)DAT_18262b704 *
                 *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar2 * 4) + fVar1) *
           DAT_18262b700;
  uVar2 = *(int *)(param_1 + 0x2404e0) + 0xad2c84U & 0x8000007f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar2;
  iVar5 = (int)((float)DAT_18262b5c8 *
                *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                          (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                (float)DAT_18262b704 *
                *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar2 * 4) + fVar1) *
          DAT_18262b700;
  uVar2 = *(int *)(param_1 + 0x2404e0) + 0x18507eU & 0x8000007f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar2;
  fVar21 = *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar2 * 4);
  fVar19 = (float)DAT_18262b704;
  fVar20 = *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                     (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4);
  fVar18 = (float)DAT_18262b5c8;
  uVar2 = *(int *)(param_1 + 0x2404e0) + 0x683fde4U & 0x8000007f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
  }
  *(uint *)(param_1 + 0x2404e0) = uVar2;
  iVar7 = (int)(fVar18 * fVar20 * fVar19 * fVar21 + fVar1) * DAT_18262b700 +
          (int)((float)DAT_18262b5c8 *
                *(float *)(*(longlong *)(param_1 + 0x5408b0) +
                          (longlong)(*(int *)(param_1 + 0x2404e0) + 1) * 4) *
                (float)DAT_18262b704 *
                *(float *)(*(longlong *)(param_1 + 0x5408b0) + (longlong)(int)uVar2 * 4) + fVar1) *
          DAT_18262b700;
  fVar21 = *(float *)(param_1 + 0x24) / (float)iVar7;
  FUN_18052e190(param_1 + 0x540758,*(undefined4 *)(param_1 + 0x54086c));
  uVar13 = 0;
  if (0 < *(int *)(param_1 + 0x30)) {
    plVar9 = (longlong *)(param_1 + 0x540768);
    uVar17 = uVar13;
    do {
      iVar12 = *(int *)(param_1 + 0x540868);
      if ((int)plVar9[1] == iVar12) {
LAB_18053139c:
        uVar6 = uVar13;
        uVar8 = uVar13;
        if (0 < (int)plVar9[1]) {
          do {
            uVar2 = (int)uVar8 + 1;
            *(undefined4 *)(uVar6 + *plVar9) = 0;
            uVar6 = uVar6 + 4;
            uVar8 = (ulonglong)uVar2;
          } while ((int)uVar2 < (int)plVar9[1]);
        }
      }
      else {
        if ((0 < (int)plVar9[1]) && (*plVar9 != 0)) {
          FUN_1800010c0();
        }
        *plVar9 = 0;
        if (iVar12 < 0) {
          iVar12 = 0;
        }
        *(int *)(plVar9 + 1) = iVar12;
        if (iVar12 != 0) {
          lVar3 = FUN_180001080(iVar12 * 4);
          *plVar9 = lVar3;
          goto LAB_18053139c;
        }
      }
      uVar2 = (int)uVar17 + 1;
      uVar17 = (ulonglong)uVar2;
      plVar9 = plVar9 + 2;
    } while ((int)uVar2 < *(int *)(param_1 + 0x30));
  }
  FUN_18052e190(param_1 + 0x540788,*(undefined4 *)(param_1 + 0x540868));
  if (0 < *(int *)(param_1 + 0x2404d0)) {
    piVar10 = (int *)(param_1 + 0x5407f0);
    uVar17 = uVar13;
    do {
      iVar12 = *(int *)(param_1 + 0x540868) * iVar7;
      if (*piVar10 == iVar12) {
LAB_180531441:
        uVar6 = uVar13;
        uVar8 = uVar13;
        if (0 < *piVar10) {
          do {
            uVar2 = (int)uVar8 + 1;
            *(undefined4 *)(uVar6 + *(longlong *)(piVar10 + -2)) = 0;
            uVar6 = uVar6 + 4;
            uVar8 = (ulonglong)uVar2;
          } while ((int)uVar2 < *piVar10);
        }
      }
      else {
        if ((0 < *piVar10) && (*(longlong *)(piVar10 + -2) != 0)) {
          FUN_1800010c0();
        }
        piVar10[-2] = 0;
        piVar10[-1] = 0;
        if (iVar12 < 0) {
          iVar12 = 0;
        }
        *piVar10 = iVar12;
        if (iVar12 != 0) {
          uVar4 = FUN_180001080(iVar12 * 4);
          *(undefined8 *)(piVar10 + -2) = uVar4;
          goto LAB_180531441;
        }
      }
      if (0 < *piVar10) {
        uVar6 = uVar13;
        uVar8 = uVar13;
        do {
          uVar2 = (int)uVar6 + 1;
          uVar6 = (ulonglong)uVar2;
          *(float *)(uVar8 + *(longlong *)(piVar10 + -2)) = (float)iVar15;
          uVar8 = uVar8 + 4;
        } while ((int)uVar2 < *piVar10);
      }
      uVar2 = (int)uVar17 + 1;
      uVar17 = (ulonglong)uVar2;
      piVar10 = piVar10 + 4;
    } while ((int)uVar2 < *(int *)(param_1 + 0x2404d0));
  }
  plVar9 = (longlong *)(param_1 + 0x540758);
  iVar15 = *(int *)(param_1 + 100) / 2 + 1;
  lVar3 = (longlong)iVar16;
  lVar14 = (longlong)iVar15;
  fVar20 = (float)iVar5 / (float)iVar15;
  if (lVar3 < lVar14) {
    if (3 < lVar14 - lVar3) {
      iVar15 = iVar16 + 2;
      iVar5 = iVar16;
      do {
        iVar16 = iVar5 + 4;
        *(float *)(*plVar9 + lVar3 * 4) = (float)iVar5 * fVar20 * fVar21;
        *(float *)(*plVar9 + 4 + lVar3 * 4) = (float)(iVar15 + -1) * fVar20 * fVar21;
        *(float *)(*plVar9 + 8 + lVar3 * 4) = (float)iVar15 * fVar20 * fVar21;
        iVar5 = iVar15 + 1;
        iVar15 = iVar15 + 4;
        *(float *)(*plVar9 + 0xc + lVar3 * 4) = (float)iVar5 * fVar20 * fVar21;
        lVar3 = lVar3 + 4;
        iVar5 = iVar16;
      } while (lVar3 < lVar14 + -3);
    }
    for (; lVar3 < lVar14; lVar3 = lVar3 + 1) {
      *(float *)(*plVar9 + lVar3 * 4) = (float)iVar16 * fVar20 * fVar21;
      iVar16 = iVar16 + 1;
    }
  }
  *(undefined1 *)(param_1 + 0x5408ad) = 1;
  if ((*(char *)(param_1 + 0x240464) != '\0') &&
     (*(undefined1 *)(param_1 + 0x240464) = 0, 0 < *(int *)(param_1 + 0x24045c))) {
    pcVar11 = (char *)(param_1 + 0x240467);
    do {
      if (*pcVar11 != '\0') {
        FUN_1805316e0(param_1 + 0x3d8,uVar13);
        *pcVar11 = '\0';
      }
      uVar2 = (int)uVar13 + 1;
      uVar13 = (ulonglong)uVar2;
      pcVar11 = pcVar11 + 1;
    } while ((int)uVar2 < *(int *)(param_1 + 0x24045c));
  }
  return;
}



############ FUN_ 180529aa0 size=380 ############

void FUN_180529aa0(undefined8 *param_1)

{
  *param_1 = SpectralProcessor<float,8,2>::vftable;
  if ((0 < *(int *)(param_1 + 0x77)) && (param_1[0x76] != 0)) {
    FUN_1800010c0();
  }
  param_1[0x76] = 0;
  *(undefined4 *)(param_1 + 0x77) = 0;
  if ((0 < *(int *)(param_1 + 0x75)) && (param_1[0x74] != 0)) {
    FUN_1800010c0();
  }
  param_1[0x74] = 0;
  *(undefined4 *)(param_1 + 0x75) = 0;
  if ((0 < *(int *)(param_1 + 0x73)) && (param_1[0x72] != 0)) {
    FUN_1800010c0();
  }
  param_1[0x72] = 0;
  *(undefined4 *)(param_1 + 0x73) = 0;
  _eh_vector_destructor_iterator_(param_1 + 0x6c,0x10,2,FUN_18052e220);
  if ((0 < *(int *)(param_1 + 0x6b)) && (param_1[0x6a] != 0)) {
    FUN_1800010c0();
  }
  param_1[0x6a] = 0;
  *(undefined4 *)(param_1 + 0x6b) = 0;
  if ((0 < *(int *)(param_1 + 0x69)) && (param_1[0x68] != 0)) {
    FUN_1800010c0();
  }
  param_1[0x68] = 0;
  *(undefined4 *)(param_1 + 0x69) = 0;
  _eh_vector_destructor_iterator_(param_1 + 0x58,0x40,2,FUN_18052bcb0);
  _eh_vector_destructor_iterator_(param_1 + 0x48,0x40,2,FUN_18052bcb0);
  _eh_vector_destructor_iterator_(param_1 + 0x38,0x40,2,FUN_18052bcb0);
  FUN_18052dd30(param_1 + 0xc);
  *param_1 = AudioProcessingModule<float,2>::vftable;
  *(undefined4 *)((longlong)param_1 + 0x54) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 18052dd30 size=555 ############

void FUN_18052dd30(longlong param_1)

{
  if ((0 < *(int *)(param_1 + 0x130)) && (*(longlong *)(param_1 + 0x128) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x128) = 0;
  *(undefined4 *)(param_1 + 0x130) = 0;
  if ((0 < *(int *)(param_1 + 0x120)) && (*(longlong *)(param_1 + 0x118) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x118) = 0;
  *(undefined4 *)(param_1 + 0x120) = 0;
  if ((0 < *(int *)(param_1 + 0x110)) && (*(longlong *)(param_1 + 0x108) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x108) = 0;
  *(undefined4 *)(param_1 + 0x110) = 0;
  if ((0 < *(int *)(param_1 + 0x100)) && (*(longlong *)(param_1 + 0xf8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0xf8) = 0;
  *(undefined4 *)(param_1 + 0x100) = 0;
  if ((0 < *(int *)(param_1 + 0xf0)) && (*(longlong *)(param_1 + 0xe8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0xe8) = 0;
  *(undefined4 *)(param_1 + 0xf0) = 0;
  if ((0 < *(int *)(param_1 + 0xe0)) && (*(longlong *)(param_1 + 0xd8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0xd8) = 0;
  *(undefined4 *)(param_1 + 0xe0) = 0;
  if ((0 < *(int *)(param_1 + 0xd0)) && (*(longlong *)(param_1 + 200) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 200) = 0;
  *(undefined4 *)(param_1 + 0xd0) = 0;
  if ((0 < *(int *)(param_1 + 0xc0)) && (*(longlong *)(param_1 + 0xb8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0xb8) = 0;
  *(undefined4 *)(param_1 + 0xc0) = 0;
  if ((0 < *(int *)(param_1 + 0xb0)) && (*(longlong *)(param_1 + 0xa8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0xa8) = 0;
  *(undefined4 *)(param_1 + 0xb0) = 0;
  if ((0 < *(int *)(param_1 + 0xa0)) && (*(longlong *)(param_1 + 0x98) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x98) = 0;
  *(undefined4 *)(param_1 + 0xa0) = 0;
  if ((0 < *(int *)(param_1 + 0x90)) && (*(longlong *)(param_1 + 0x88) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x88) = 0;
  *(undefined4 *)(param_1 + 0x90) = 0;
  if ((0 < *(int *)(param_1 + 0x80)) && (*(longlong *)(param_1 + 0x78) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x78) = 0;
  *(undefined4 *)(param_1 + 0x80) = 0;
  if ((0 < *(int *)(param_1 + 0x70)) && (*(longlong *)(param_1 + 0x68) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x68) = 0;
  *(undefined4 *)(param_1 + 0x70) = 0;
  if ((0 < *(int *)(param_1 + 0x60)) && (*(longlong *)(param_1 + 0x58) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x58) = 0;
  *(undefined4 *)(param_1 + 0x60) = 0;
  if ((0 < *(int *)(param_1 + 0x50)) && (*(longlong *)(param_1 + 0x48) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x48) = 0;
  *(undefined4 *)(param_1 + 0x50) = 0;
  return;
}



############ FUN_ 18052e220 size=56 ############

void FUN_18052e220(longlong *param_1)

{
  if (0 < (int)param_1[1]) {
    if (*param_1 != 0) {
      FUN_1800010c0();
    }
    *param_1 = 0;
    *(undefined4 *)(param_1 + 1) = 0;
    return;
  }
  *param_1 = 0;
  *(undefined4 *)(param_1 + 1) = 0;
  return;
}



############ FUN_ 180534550 size=115 ############

void FUN_180534550(longlong *param_1,int param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  if ((int)param_1[1] != param_2) {
    if ((0 < (int)param_1[1]) && (*param_1 != 0)) {
      FUN_1800010c0();
    }
    *param_1 = 0;
    if (param_2 < 0) {
      param_2 = 0;
    }
    *(int *)(param_1 + 1) = param_2;
    if (param_2 == 0) {
      return;
    }
    lVar1 = FUN_180001080(param_2);
    *param_1 = lVar1;
  }
  uVar4 = uVar2;
  if (0 < (int)param_1[1]) {
    do {
      uVar3 = (int)uVar4 + 1;
      *(undefined1 *)(uVar2 + *param_1) = 0;
      uVar2 = uVar2 + 1;
      uVar4 = (ulonglong)uVar3;
    } while ((int)uVar3 < (int)param_1[1]);
  }
  return;
}



############ FUN_ 18052bcb0 size=74 ############

void FUN_18052bcb0(longlong param_1)

{
  *(undefined8 *)(param_1 + 0x20) = 0;
  if (0 < *(int *)(param_1 + 0x18)) {
    if (*(longlong *)(param_1 + 0x10) != 0) {
      FUN_1800010c0();
    }
    *(undefined8 *)(param_1 + 0x10) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
    return;
  }
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x18) = 0;
  return;
}



############ FUN_ 1805344c0 size=137 ############

void FUN_1805344c0(longlong *param_1,int param_2,undefined8 param_3)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  if ((int)param_1[1] != param_2) {
    if ((0 < (int)param_1[1]) && (*param_1 != 0)) {
      FUN_1800010c0();
    }
    *param_1 = 0;
    if (param_2 < 0) {
      param_2 = 0;
    }
    *(int *)(param_1 + 1) = param_2;
    if (param_2 == 0) {
      return;
    }
    lVar1 = FUN_180001080(param_2 * 8);
    *param_1 = lVar1;
  }
  uVar4 = uVar2;
  if (0 < (int)param_1[1]) {
    do {
      uVar3 = (int)uVar4 + 1;
      *(undefined8 *)(uVar2 + *param_1) = param_3;
      uVar2 = uVar2 + 8;
      uVar4 = (ulonglong)uVar3;
    } while ((int)uVar3 < (int)param_1[1]);
  }
  return;
}



############ FUN_ 180535f10 size=778 ############

void FUN_180535f10(longlong param_1)

{
  _eh_vector_destructor_iterator_((void *)(param_1 + 0x5407e8),0x10,8,FUN_18052e220);
  _eh_vector_destructor_iterator_((void *)(param_1 + 0x5407c8),0x10,2,FUN_18052e220);
  _eh_vector_destructor_iterator_((void *)(param_1 + 0x5407a8),0x10,2,FUN_18052e220);
  if ((0 < *(int *)(param_1 + 0x5407a0)) && (*(longlong *)(param_1 + 0x540798) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540798) = 0;
  *(undefined4 *)(param_1 + 0x5407a0) = 0;
  if ((0 < *(int *)(param_1 + 0x540790)) && (*(longlong *)(param_1 + 0x540788) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540788) = 0;
  *(undefined4 *)(param_1 + 0x540790) = 0;
  _eh_vector_destructor_iterator_((void *)(param_1 + 0x540768),0x10,2,FUN_18052e220);
  if ((0 < *(int *)(param_1 + 0x540760)) && (*(longlong *)(param_1 + 0x540758) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540758) = 0;
  *(undefined4 *)(param_1 + 0x540760) = 0;
  if ((0 < *(int *)(param_1 + 0x540750)) && (*(longlong *)(param_1 + 0x540748) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540748) = 0;
  *(undefined4 *)(param_1 + 0x540750) = 0;
  _eh_vector_destructor_iterator_((void *)(param_1 + 0x540728),0x10,2,FUN_18052e220);
  if ((0 < *(int *)(param_1 + 0x540720)) && (*(longlong *)(param_1 + 0x540718) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540718) = 0;
  *(undefined4 *)(param_1 + 0x540720) = 0;
  if ((0 < *(int *)(param_1 + 0x540710)) && (*(longlong *)(param_1 + 0x540708) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540708) = 0;
  *(undefined4 *)(param_1 + 0x540710) = 0;
  if ((0 < *(int *)(param_1 + 0x540700)) && (*(longlong *)(param_1 + 0x5406f8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x5406f8) = 0;
  *(undefined4 *)(param_1 + 0x540700) = 0;
  if ((0 < *(int *)(param_1 + 0x5406f0)) && (*(longlong *)(param_1 + 0x5406e8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x5406e8) = 0;
  *(undefined4 *)(param_1 + 0x5406f0) = 0;
  if ((0 < *(int *)(param_1 + 0x5406e0)) && (*(longlong *)(param_1 + 0x5406d8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x5406d8) = 0;
  *(undefined4 *)(param_1 + 0x5406e0) = 0;
  if ((0 < *(int *)(param_1 + 0x5406d0)) && (*(longlong *)(param_1 + 0x5406c8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x5406c8) = 0;
  *(undefined4 *)(param_1 + 0x5406d0) = 0;
  if ((0 < *(int *)(param_1 + 0x5406c0)) && (*(longlong *)(param_1 + 0x5406b8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x5406b8) = 0;
  *(undefined4 *)(param_1 + 0x5406c0) = 0;
  if ((0 < *(int *)(param_1 + 0x5406b0)) && (*(longlong *)(param_1 + 0x5406a8) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x5406a8) = 0;
  *(undefined4 *)(param_1 + 0x5406b0) = 0;
  if ((0 < *(int *)(param_1 + 0x5406a0)) && (*(longlong *)(param_1 + 0x540698) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540698) = 0;
  *(undefined4 *)(param_1 + 0x5406a0) = 0;
  _eh_vector_destructor_iterator_((void *)(param_1 + 0x540678),0x10,2,FUN_18052e220);
  if ((0 < *(int *)(param_1 + 0x540670)) && (*(longlong *)(param_1 + 0x540668) != 0)) {
    FUN_1800010c0();
  }
  *(undefined8 *)(param_1 + 0x540668) = 0;
  *(undefined4 *)(param_1 + 0x540670) = 0;
  FUN_18052dd30(param_1 + 0x540530);
  *(undefined4 *)(param_1 + 0x2404cc) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x2404c0));
}



############ FUN_ 1805335c0 size=126 ############

void FUN_1805335c0(undefined4 *param_1,undefined8 param_2,int param_3)

{
  int iVar1;
  double dVar2;
  double dVar3;
  undefined1 local_res10 [8];
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  
  dVar2 = log((double)param_3);
  dVar3 = log(DAT_1824c41e8);
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0((int)(dVar2 / dVar3),*param_1,1,local_res18,local_res20,local_res10);
}



############ FUN_ 180002240 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616708)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001c10 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615ec8)[DAT_1826159a0])();
  return;
}



############ FUN_ 1805356f0 size=395 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805356f0(undefined8 *param_1,uint param_2)

{
  double dVar1;
  double dVar2;
  double dVar3;
  int iVar4;
  int iVar5;
  double dVar6;
  double dVar7;
  uint uVar8;
  int iVar9;
  undefined8 *puVar10;
  float *pfVar11;
  double dVar12;
  double dVar13;
  undefined1 auVar14 [16];
  undefined1 auVar15 [16];
  double extraout_XMM0_Qb;
  double dVar16;
  
  dVar7 = _UNK_1824c4e08;
  dVar6 = _DAT_1824c4e00;
  dVar13 = _UNK_1824c4da8;
  dVar3 = _DAT_1824c4da0;
  dVar2 = _UNK_1824c4c98;
  dVar1 = _DAT_1824c4c90;
  iVar5 = _UNK_1824c4884;
  iVar4 = _DAT_1824c4880;
  if (0 < (int)param_2) {
    iVar9 = 0;
    dVar16 = (double)(int)param_2;
    if (1 < param_2) {
      uVar8 = param_2 & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      puVar10 = param_1;
      do {
        auVar14._0_8_ = (double)(iVar9 + iVar4) * dVar6;
        auVar14._8_8_ = (double)(iVar9 + iVar5) * dVar7;
        auVar15._8_4_ = SUB84(dVar16,0);
        auVar15._0_8_ = dVar16;
        auVar15._12_4_ = (int)((ulonglong)dVar16 >> 0x20);
        auVar15 = divpd(auVar14,auVar15);
        dVar12 = (double)thunk_FUN_181a114e0(auVar15._0_8_);
        iVar9 = iVar9 + 2;
        *puVar10 = CONCAT44((float)((dVar13 - extraout_XMM0_Qb) * dVar2),
                            (float)((dVar3 - dVar12) * dVar1));
        puVar10 = puVar10 + 1;
      } while (iVar9 < (int)(param_2 - uVar8));
    }
    dVar3 = DAT_1824c4248;
    dVar2 = DAT_1824c4140;
    dVar1 = DAT_1824c4050;
    if (iVar9 < (int)param_2) {
      pfVar11 = (float *)((longlong)param_1 + (longlong)iVar9 * 4);
      do {
        dVar13 = cos(((double)iVar9 * dVar3) / dVar16);
        iVar9 = iVar9 + 1;
        *pfVar11 = (float)((dVar2 - dVar13) * dVar1);
        pfVar11 = pfVar11 + 1;
      } while (iVar9 < (int)param_2);
    }
  }
  return;
}



############ FUN_ 18052da70 size=78 ############

void FUN_18052da70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_3,param_1,param_4);
}



############ FUN_ 18048a300 size=194 ############

void FUN_18048a300(longlong *param_1,int param_2)

{
  int iVar1;
  longlong lVar2;
  void *_Memory;
  void *pvVar3;
  int *_Memory_00;
  longlong lVar4;
  int iVar5;
  
  if ((int)param_1[1] == param_2) {
    *(int *)(param_1 + 1) = param_2;
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  pvVar3 = malloc((longlong)param_2 << 3);
  iVar5 = 0;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    lVar4 = 0;
    do {
      lVar2 = *param_1;
      *(undefined8 *)(lVar4 + (longlong)pvVar3) = *(undefined8 *)(lVar2 + lVar4);
      *(undefined1 **)(lVar2 + lVar4) = &DAT_1821dbf98;
      _Memory_00 = (int *)(*(longlong *)(lVar4 + *param_1) + -0x10);
      if ((*(uint *)(*(longlong *)(lVar4 + *param_1) + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 + -1;
        UNLOCK();
        if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      iVar5 = iVar5 + 1;
      lVar4 = lVar4 + 8;
    } while (iVar5 < *(int *)((longlong)param_1 + 0xc));
  }
  _Memory = (void *)*param_1;
  *param_1 = (longlong)pvVar3;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18122dad0 size=94 ############

void FUN_18122dad0(longlong *param_1,int param_2,longlong *param_3)

{
  uint uVar1;
  uint *_Memory;
  
  if (-1 < param_2) {
    if (param_2 < *(int *)((longlong)param_1 + 0xc)) {
      FUN_181249460(*param_1 + (longlong)param_2 * 8,param_3);
    }
    else {
      FUN_18049b000(param_1,param_3);
    }
  }
  _Memory = (uint *)(*param_3 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18132c9a0 size=3851 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18132c9a0(undefined8 *param_1,undefined4 param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  char cVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  longlong *plVar7;
  longlong lVar8;
  undefined4 *puVar9;
  uint uVar10;
  uint *puVar11;
  bool bVar12;
  undefined1 auStack_3a8 [32];
  longlong local_388;
  char *local_380;
  longlong local_378;
  longlong local_370;
  longlong local_368;
  longlong local_360;
  longlong *local_358;
  undefined1 local_350 [4];
  undefined1 local_34c [4];
  undefined1 local_348 [4];
  undefined1 local_344 [4];
  undefined1 *local_340;
  longlong local_338;
  longlong local_330;
  char *local_328;
  undefined1 *local_320;
  undefined1 *local_318;
  longlong local_310;
  longlong local_308;
  undefined1 local_300 [8];
  undefined8 *local_2f8;
  undefined4 *local_2f0;
  undefined8 local_2e8;
  undefined8 local_2e0;
  undefined8 local_2d8;
  undefined **local_2c8;
  undefined8 *local_2c0;
  undefined ***local_290;
  undefined **local_288;
  undefined8 *local_280;
  undefined ***local_250;
  undefined **local_248;
  undefined8 *local_240;
  undefined ***local_210;
  undefined **local_208;
  undefined8 *local_200;
  undefined ***local_1d0;
  undefined **local_1c8;
  undefined8 *local_1c0;
  undefined ***local_190;
  longlong local_188 [7];
  longlong *local_150;
  longlong local_148 [7];
  longlong *local_110;
  longlong local_108 [7];
  longlong *local_d0;
  longlong local_c8 [7];
  longlong *local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_2d8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_3a8;
  *param_1 = juce::Component::vftable;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  param_1[0x16] = juce::FileBrowserListener::vftable;
  param_1[0x17] = juce::FileFilter::vftable;
  param_1[0x18] = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  local_2f8 = param_1;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar10 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar12 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar10;
    if (bVar12) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  param_1[0x1a] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x1b) = 0;
  *param_1 = juce::FileBrowserComponent::vftable;
  param_1[0x16] = juce::FileBrowserComponent::vftable;
  param_1[0x17] = juce::FileBrowserComponent::vftable;
  param_1[0x19] = juce::FileBrowserComponent::vftable;
  param_1[0x1c] = 0;
  param_1[0x1d] = param_4;
  *(undefined4 *)(param_1 + 0x1e) = param_2;
  puVar2 = param_1 + 0x1f;
  *puVar2 = &DAT_1821dbf98;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  FUN_18049c4e0(&local_370,&DAT_1821e3e4c);
  FUN_181349800(param_1 + 0x26,&local_370);
  puVar11 = (uint *)(local_370 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  local_340 = &DAT_1821dbf98;
  FUN_1812e2370(param_1 + 0x58,&local_340,0);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar10 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar12 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar10;
    if (bVar12) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_18049c4e0(&local_368,&DAT_1821e2bcc);
  FUN_18049c4e0(&local_388,"file:");
  lVar8 = DAT_1826739f8;
  local_2f0 = &DAT_182673984;
  do {
    LOCK();
    uVar10 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar10 != 0);
  if (DAT_1826739f8 == 0) {
    local_378 = local_388;
    uVar10 = *(uint *)(local_388 + -0x10);
LAB_18132ccee:
    if ((uVar10 & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_378 + -0x10) = *(int *)(local_378 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
       (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_388,*(undefined1 *)(DAT_1826739f8 + 0x38),0
                             ), -1 < iVar4)) {
      iVar4 = FUN_1812498b0(lVar8 + 0x18,local_388,*(undefined1 *)(lVar8 + 0x38),0);
      if (iVar4 < 0) {
        local_378 = local_388;
        uVar10 = *(uint *)(local_388 + -0x10);
      }
      else {
        plVar7 = (longlong *)FUN_181249970(lVar8 + 0x28,iVar4);
        local_378 = *plVar7;
        uVar10 = *(uint *)(local_378 + -0x10);
      }
      goto LAB_18132ccee;
    }
    FUN_181234570(*(undefined8 *)(lVar8 + 0x40),&local_378,&local_388,&local_388);
  }
  LOCK();
  iVar4 = 0;
  DAT_182673984 = 0;
  UNLOCK();
  puVar11 = (uint *)(local_388 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  FUN_18134a080(param_1 + 0xbc,&local_368,&local_378);
  puVar11 = (uint *)(local_378 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_368 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  param_1[0xfd] = 0;
  FUN_18049c4e0(&local_360,"JUCE FileBrowser");
  puVar1 = param_1 + 0xfe;
  FUN_18122b770(puVar1,&local_360);
  *puVar1 = juce::TimeSliceThread::vftable;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x13e));
  InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0xa1c));
  param_1[0x149] = 0;
  param_1[0x14a] = 0;
  param_1[0x14b] = 0;
  puVar11 = (uint *)(local_360 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  *(undefined1 *)(param_1 + 0x14c) = 1;
  local_380 = "";
  if ((undefined1 *)*param_3 != &DAT_1821dbf98) {
    iVar4 = FUN_18049bb30(*param_3,&DAT_1821dbf98);
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar10 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar12 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar10;
    if (bVar12) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (iVar4 == 0) {
    puVar5 = (undefined8 *)FUN_181217460(&local_338);
    local_2e8 = *puVar2;
    *puVar2 = *puVar5;
    *puVar5 = local_2e8;
    puVar11 = (uint *)(local_338 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
LAB_18132cf7f:
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
  }
  else {
    cVar3 = FUN_181245770(param_3);
    if (cVar3 == '\0') {
      FUN_18049b000(param_1 + 0x20,param_3);
      puVar5 = (undefined8 *)FUN_181241230(param_3,&local_330);
      local_2e0 = *puVar2;
      *puVar2 = *puVar5;
      *puVar5 = local_2e0;
      puVar11 = (uint *)(local_330 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      iVar4 = FUN_1812327b0(param_3,0x5c);
      FUN_1812491d0(param_3,&local_328,iVar4 + 1);
      local_380 = local_328;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        UNLOCK();
        bVar12 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = DAT_1821dbf88 - 1;
        if (bVar12) {
          puVar11 = &DAT_1821dbf88;
          DAT_1821dbf88 = 0xffffffff;
          goto LAB_18132cf7f;
        }
      }
    }
    else {
      FUN_181245860(puVar2);
    }
  }
  local_358 = (longlong *)FUN_1811316e0(0xb0);
  uVar6 = FUN_18132e630(local_358,param_1 + 0x17,puVar1);
  puVar5 = (undefined8 *)param_1[0x1c];
  param_1[0x1c] = uVar6;
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  FUN_18132e3a0(param_1[0x1c],puVar2,1);
  if ((*(byte *)(param_1 + 0x1e) & 0x20) == 0) {
    plVar7 = (longlong *)FUN_1811316e0(0x148);
    lVar8 = param_1[0x1c];
    local_318 = &DAT_1821dbf98;
    local_358 = plVar7;
    FUN_1812e8530(plVar7,&local_318);
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar10 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar10;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    plVar7[0x22] = lVar8;
    plVar7[0x23] = 0;
    plVar7[0x24] = 0;
    *plVar7 = (longlong)juce::FileListComponent::vftable;
    plVar7[0x16] = (longlong)juce::FileListComponent::vftable;
    plVar7[0x21] = (longlong)juce::FileListComponent::vftable;
    plVar7[0x25] = (longlong)juce::FileListComponent::vftable;
    plVar7[0x26] = (longlong)juce::FileListComponent::vftable;
    lVar8 = *(longlong *)(lVar8 + 0x48);
    plVar7[0x27] = lVar8;
    if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar8 + -0x10) = *(int *)(lVar8 + -0x10) + 1;
      UNLOCK();
    }
    plVar7[0x28] = (longlong)&DAT_1821dbf98;
    FUN_1812e83d0(plVar7);
    FUN_1812a73a0(plVar7[0x22],plVar7 + 0x26);
    puVar2 = (undefined8 *)param_1[0x24];
    param_1[0x24] = plVar7 + 0x21;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    *(undefined4 *)((longlong)plVar7 + 0xfc) = 1;
    (**(code **)(*plVar7 + 0x108))(plVar7);
    if ((*(byte *)(param_1 + 0x1e) & 0x10) != 0) {
      *(undefined1 *)((longlong)plVar7 + 0x104) = 1;
    }
    FUN_18134bf20(param_1,plVar7,0xffffffff);
  }
  else {
    plVar7 = (longlong *)FUN_1811316e0(0x160);
    lVar8 = param_1[0x1c];
    local_320 = &DAT_1821dbf98;
    local_358 = plVar7;
    FUN_1812d8fe0(plVar7,&local_320);
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar10 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar10;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    plVar7[0x27] = lVar8;
    plVar7[0x28] = 0;
    plVar7[0x29] = 0;
    *plVar7 = (longlong)juce::FileTreeComponent::vftable;
    plVar7[0x16] = (longlong)juce::FileTreeComponent::vftable;
    plVar7[0x18] = (longlong)juce::FileTreeComponent::vftable;
    plVar7[0x19] = (longlong)juce::FileTreeComponent::vftable;
    plVar7[0x26] = (longlong)juce::FileTreeComponent::vftable;
    plVar7[0x2a] = (longlong)&DAT_1821dbf98;
    *(undefined4 *)(plVar7 + 0x2b) = 0x16;
    FUN_1812d8d00(plVar7);
    FUN_181324bd0(plVar7);
    puVar2 = (undefined8 *)param_1[0x24];
    param_1[0x24] = plVar7 + 0x26;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    if ((*(byte *)(param_1 + 0x1e) & 0x10) != 0) {
      *(undefined1 *)((longlong)plVar7 + 0x127) = 1;
    }
    FUN_18134bf20(param_1,plVar7,0xffffffff);
  }
  FUN_18051ae50(param_1[0x24] + 0x10,param_1 + 0x16);
  FUN_18134aef0(param_1,param_1 + 0x26,0xffffffff);
  FUN_1812ec210(param_1 + 0x26,1);
  FUN_18132bac0(param_1);
  local_2c8 = std::_Func_impl_no_alloc<<lambda_1bf4f3d87ecf61fe8d04247036d64b79>,void>::vftable;
  local_290 = &local_2c8;
  local_150 = (longlong *)0x0;
  local_2c0 = param_1;
  FUN_180488560(local_188,&local_2c8);
  FUN_180488560(&local_2c8,param_1 + 0x41);
  FUN_180488560(param_1 + 0x41,local_188);
  if (local_150 != (longlong *)0x0) {
    (**(code **)(*local_150 + 0x20))(local_150,local_150 != local_188);
  }
  if (local_290 != (undefined ***)0x0) {
    (*(code *)(*local_290)[4])(local_290,local_290 != &local_2c8);
  }
  puVar2 = param_1 + 0x58;
  FUN_18134aef0(param_1,puVar2,0xffffffff);
  FUN_1812e1df0(puVar2,0,1);
  *(undefined1 *)((longlong)param_1 + 0x4b2) = 1;
  FUN_1812e1110(puVar2,&local_380,0);
  local_288 = std::_Func_impl_no_alloc<<lambda_2c964b20d866eb796a1c50530ce98173>,void>::vftable;
  local_250 = &local_288;
  local_110 = (longlong *)0x0;
  local_280 = param_1;
  FUN_180488560(local_148,&local_288);
  FUN_180488560(&local_288,param_1 + 0x71);
  FUN_180488560(param_1 + 0x71,local_148);
  if (local_110 != (longlong *)0x0) {
    (**(code **)(*local_110 + 0x20))(local_110,local_110 != local_148);
  }
  if (local_250 != (undefined ***)0x0) {
    (*(code *)(*local_250)[4])(local_250,local_250 != &local_288);
  }
  local_248 = std::_Func_impl_no_alloc<<lambda_aa6449f83fc7f43bbc95c5b0fc284737>,void>::vftable;
  local_210 = &local_248;
  local_d0 = (longlong *)0x0;
  local_240 = param_1;
  FUN_180488560(local_108,&local_248);
  FUN_180488560(&local_248,param_1 + 0x79);
  FUN_180488560(param_1 + 0x79,local_108);
  if (local_d0 != (longlong *)0x0) {
    (**(code **)(*local_d0 + 0x20))(local_d0,local_d0 != local_108);
  }
  if (local_210 != (undefined ***)0x0) {
    (*(code *)(*local_210)[4])(local_210,local_210 != &local_248);
  }
  local_208 = std::_Func_impl_no_alloc<<lambda_7f88998afb507a72d9dcd1c75f2f5cab>,void>::vftable;
  local_1d0 = &local_208;
  local_90 = (longlong *)0x0;
  local_200 = param_1;
  FUN_180488560(local_c8,&local_208);
  FUN_180488560(&local_208,param_1 + 0x89);
  FUN_180488560(param_1 + 0x89,local_c8);
  if (local_90 != (longlong *)0x0) {
    (**(code **)(*local_90 + 0x20))(local_90,local_90 != local_c8);
  }
  if (local_1d0 != (undefined ***)0x0) {
    (*(code *)(*local_1d0)[4])(local_1d0,local_1d0 != &local_208);
  }
  FUN_1812e1d60(puVar2,(*(byte *)(param_1 + 0x1e) & 0x50) != 0);
  FUN_18134aef0(param_1,param_1 + 0xbc,0xffffffff);
  FUN_1812e9b30(param_1 + 0xbc,puVar2);
  lVar8 = FUN_18134adf0(param_1);
  uVar6 = (**(code **)(*(longlong *)(lVar8 + 0x20) + 0x28))();
  puVar5 = (undefined8 *)param_1[0xfd];
  param_1[0xfd] = uVar6;
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  FUN_18134bf20(param_1,param_1[0xfd],0xffffffff);
  lVar8 = param_1[0xfd];
  local_1c8 = std::_Func_impl_no_alloc<<lambda_9898c7602cbe44283603ce79fbb88847>,void>::vftable;
  local_190 = &local_1c8;
  local_50 = (longlong *)0x0;
  local_1c0 = param_1;
  FUN_180488560(local_88,&local_1c8);
  FUN_180488560(&local_1c8,lVar8 + 0xc0);
  FUN_180488560(lVar8 + 0xc0,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_190 != (undefined ***)0x0) {
    (*(code *)(*local_190)[4])(local_190,local_190 != &local_1c8);
  }
  lVar8 = param_1[0xfd];
  uVar6 = FUN_181249dc0(&local_310,"Go up to parent directory");
  (**(code **)(*(longlong *)(lVar8 + 0xb0) + 0x10))(lVar8 + 0xb0,uVar6);
  puVar11 = (uint *)(local_310 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if (param_1[0x25] != 0) {
    FUN_18134bf20(param_1,param_1[0x25],0xffffffff);
  }
  puVar9 = (undefined4 *)FUN_18134a8d0(param_1,local_300,0x1000640,0);
  FUN_18134a800(param_1 + 0x26,0x1000b00,*puVar9);
  puVar9 = (undefined4 *)FUN_18134a8d0(param_1,local_350,0x1000641,0);
  FUN_18134a800(param_1 + 0x26,0x1000a00,*puVar9);
  puVar9 = (undefined4 *)FUN_18134a8d0(param_1,local_34c,0x1000642,0);
  FUN_18134a800(param_1 + 0x26,0x1000e00,*puVar9);
  puVar9 = (undefined4 *)FUN_18134a8d0(param_1,local_348,0x1000643,0);
  FUN_18134a800(puVar2,0x1000200,*puVar9);
  puVar9 = (undefined4 *)FUN_18134a8d0(param_1,local_344,0x1000644,0);
  FUN_18134a800(puVar2,0x1000201,*puVar9);
  FUN_18132bdc0(param_1,param_1 + 0x1f);
  if (*local_380 != '\0') {
    FUN_1812e1110(puVar2,&local_380,1);
    plVar7 = (longlong *)param_1[0x24];
    uVar6 = FUN_181245100(param_1 + 0x1f,&local_308,local_380);
    (**(code **)(*plVar7 + 0x28))(plVar7,uVar6);
    puVar11 = (uint *)(local_308 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
  }
  FUN_18122b2c0(puVar1,4);
  FUN_1812a77d0(param_1 + 0x19,2000);
  puVar11 = (uint *)(local_380 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
}



############ FUN_ 18122df60 size=32 ############

undefined8 * FUN_18122df60(undefined8 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  FUN_18049b000();
  return param_1;
}



############ FUN_ 181237950 size=1643 ############

void FUN_181237950(undefined1 *param_1)

{
  longlong *plVar1;
  byte bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined1 **ppuVar6;
  byte *pbVar7;
  undefined1 **ppuVar8;
  uint uVar9;
  uint *puVar10;
  char *pcVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  longlong lVar15;
  undefined1 *puVar16;
  uint uVar17;
  uint uVar18;
  ulonglong uVar19;
  longlong lVar20;
  undefined1 auStack_108 [32];
  undefined1 **local_e8;
  undefined8 local_e0;
  undefined1 *local_d8;
  undefined4 local_d0;
  longlong local_c8;
  undefined8 local_c0;
  undefined2 local_b8;
  longlong local_b0;
  undefined1 **local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined1 *local_90;
  undefined1 *local_88;
  char local_78 [4];
  undefined8 local_74;
  undefined4 local_6c;
  char local_68;
  undefined1 local_60;
  undefined1 local_5f;
  undefined1 local_5e;
  undefined1 local_5d;
  ulonglong local_48;
  
  local_98 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  uVar13 = 0;
  local_d0 = 0;
  param_1[0x10] = 0;
  local_d8 = param_1;
  FUN_181238020(&local_c0);
  iVar4 = FUN_181249270(&local_c0,&DAT_1821d9ebc);
  param_1[0x10] = -1 < iVar4;
  if (-1 >= iVar4) {
    local_a8 = (undefined1 **)0x0;
    local_a0 = 0;
    local_d0 = 1;
    FUN_18122d110(&local_a8,local_c0,&DAT_1821d9f3c,&DAT_1821da804);
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    uVar14 = local_a0._4_4_;
    ppuVar8 = local_a8;
    do {
      ppuVar6 = ppuVar8;
      if (uVar14 <= uVar13) {
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar6 = &DAT_18267af68;
      }
      iVar4 = atoi(*ppuVar6);
      *param_1 = (char)iVar4;
      uVar13 = uVar13 + 1;
      ppuVar8 = ppuVar8 + 1;
      param_1 = param_1 + 1;
    } while ((int)uVar13 < 4);
    *(undefined8 *)(local_d8 + 4) = 0;
    *(undefined4 *)(local_d8 + 0xc) = 0;
    FUN_180488c50(&local_a8);
    ppuVar8 = local_a8;
    goto LAB_181237eac;
  }
  local_e8 = (undefined1 **)0x0;
  local_e0 = 0;
  local_d0 = 2;
  FUN_18122d110(&local_e8,local_c0,&DAT_1821d9ef4);
  ppuVar8 = local_e8;
  iVar4 = 0;
  uVar19 = (ulonglong)_tls_index;
  uVar13 = local_e0._4_4_;
  lVar20 = (longlong)(int)local_e0._4_4_;
  if (0 < (int)local_e0._4_4_) {
    lVar15 = 0;
    do {
      local_90 = ppuVar8[lVar15];
      iVar5 = FUN_18048cbc0(&DAT_1821da804);
      if (iVar5 == 0) {
        if (-1 < iVar4) {
          iVar4 = 0;
          lVar15 = 0;
          goto LAB_181237b20;
        }
        break;
      }
      iVar4 = iVar4 + 1;
      lVar15 = lVar15 + 1;
    } while (lVar15 < lVar20);
  }
  goto LAB_181237c98;
  while( true ) {
    iVar4 = iVar4 + 1;
    lVar15 = lVar15 + 1;
    if (lVar20 <= lVar15) break;
LAB_181237b20:
    local_88 = ppuVar8[lVar15];
    iVar5 = FUN_18048cbc0(&DAT_1821da804);
    if (iVar5 == 0) goto LAB_181237b50;
  }
  iVar4 = -1;
LAB_181237b50:
  FUN_18049c4e0(&local_c8,&DAT_1821d9f7c);
  if (-1 < iVar4) {
    if (iVar4 < (int)uVar13) {
      FUN_181249460(ppuVar8 + iVar4);
    }
    else {
      FUN_18049b000(&local_e8,&local_c8);
    }
  }
  puVar10 = (uint *)(local_c8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_18122d5d0(&local_e8);
  ppuVar8 = local_e8;
  uVar13 = local_e0._4_4_;
  if (local_e0._4_4_ - 1 < local_e0._4_4_) {
    ppuVar6 = local_e8 + (int)(local_e0._4_4_ - 1);
  }
  else {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar19 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    ppuVar6 = &DAT_18267af68;
  }
  iVar5 = FUN_18049bc80(*ppuVar6);
  if (-1 < iVar5) {
    local_d8 = &DAT_1821dbf98;
    FUN_18122dc00(&local_e8);
    ppuVar8 = local_e8;
    uVar13 = local_e0._4_4_;
  }
  while ((int)uVar13 < 8) {
    FUN_18049c4e0(&local_b0,&DAT_1821d9f5c);
    FUN_180489070(&local_e8,iVar4,&local_b0);
    puVar10 = (uint *)(local_b0 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    ppuVar8 = local_e8;
    uVar13 = local_e0._4_4_;
  }
LAB_181237c98:
  uVar14 = 0;
  plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + uVar19 * 8);
  puVar16 = param_1;
  do {
    if (uVar14 == 6) {
      local_68 = '\x01';
      iVar4 = 0;
      pcVar11 = local_78;
      do {
        *pcVar11 = pcVar11[(longlong)param_1 - (longlong)local_78];
        iVar4 = iVar4 + 1;
        pcVar11 = pcVar11 + 1;
        iVar5 = 4;
        if (local_68 != '\0') {
          iVar5 = 0x10;
        }
      } while (iVar4 < iVar5);
      if (local_68 == '\0') {
        local_74 = 0;
        local_6c = 0;
LAB_181237d06:
        bVar3 = false;
      }
      else {
        lVar20 = 0;
        do {
          if (local_78[lVar20] != '\0') goto LAB_181237d06;
          lVar20 = lVar20 + 1;
        } while (lVar20 < 10);
        if ((local_74._6_1_ != -1) || (local_74._7_1_ != -1)) goto LAB_181237d06;
        bVar3 = true;
      }
      if (bVar3) {
        if (uVar13 < 7) {
          if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar8 = &DAT_18267af68;
        }
        else {
          ppuVar8 = ppuVar8 + 6;
        }
        FUN_181237950(&local_60,ppuVar8);
        param_1[0xc] = local_60;
        param_1[0xd] = local_5f;
        param_1[0xe] = local_5e;
        param_1[0xf] = local_5d;
        break;
      }
    }
    if (uVar14 < uVar13) {
      ppuVar6 = ppuVar8 + (int)uVar14;
    }
    else {
      if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
         (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
        DAT_18267af68 = &DAT_1821dbf98;
        atexit(FUN_181a4a7b0);
        _Init_thread_footer(&DAT_18267af70);
      }
      ppuVar6 = &DAT_18267af68;
    }
    pbVar7 = *ppuVar6;
    uVar18 = 0;
    local_b8 = 0;
    bVar2 = *pbVar7;
    while (bVar2 != 0) {
      uVar17 = (uint)bVar2;
      pbVar7 = pbVar7 + 1;
      if ((char)bVar2 < '\0') {
        uVar12 = 0x7f;
        uVar9 = 0x40;
        iVar4 = 0;
        if ((bVar2 & 0x40) != 0) {
          do {
            if (uVar9 < 9) break;
            uVar12 = uVar12 >> 1;
            iVar4 = iVar4 + 1;
            uVar9 = uVar9 >> 1;
          } while ((uVar17 & uVar9) != 0);
        }
        uVar17 = uVar17 & uVar12;
        for (; (iVar4 = iVar4 + -1, -1 < iVar4 && ((*pbVar7 & 0xc0) == 0x80)); pbVar7 = pbVar7 + 1)
        {
          uVar17 = *pbVar7 & 0x3f | uVar17 << 6;
        }
      }
      uVar9 = uVar17 - 0x30;
      if (uVar9 < 10) {
LAB_181237e01:
        if (-1 < (int)uVar9) {
          uVar18 = uVar18 << 4 | uVar9;
        }
      }
      else {
        uVar9 = uVar17 - 0x61;
        if ((uVar9 < 6) || (uVar9 = uVar17 - 0x41, uVar9 < 6)) {
          uVar9 = uVar9 + 10;
          goto LAB_181237e01;
        }
      }
      local_b8 = (undefined2)uVar18;
      bVar2 = *pbVar7;
    }
    *puVar16 = (char)local_b8;
    puVar16[1] = (char)((ushort)local_b8 >> 8);
    uVar14 = uVar14 + 1;
    puVar16 = puVar16 + 2;
  } while ((int)uVar14 < 8);
  FUN_180488c50(&local_e8);
  ppuVar8 = local_e8;
LAB_181237eac:
                    /* WARNING: Subroutine does not return */
  free(ppuVar8);
}



############ FUN_ 18049c4e0 size=389 ############

undefined8 * FUN_18049c4e0(undefined8 *param_1,byte *param_2)

{
  byte bVar1;
  byte *pbVar2;
  undefined4 *puVar3;
  byte *pbVar4;
  byte bVar5;
  int iVar6;
  longlong lVar7;
  uint uVar8;
  longlong lVar9;
  ulonglong uVar10;
  int iVar11;
  
  if ((param_2 != (byte *)0x0) && (bVar1 = *param_2, bVar1 != 0)) {
    lVar9 = 0;
    if (bVar1 != 0) {
      pbVar2 = param_2 + 1;
      do {
        uVar8 = (uint)bVar1;
        lVar7 = 1;
        if (((0x7f < uVar8) && (lVar7 = 2, 0x7ff < uVar8)) && (lVar7 = 3, 0xffff < uVar8)) {
          lVar7 = 4;
        }
        bVar1 = *pbVar2;
        lVar9 = lVar9 + lVar7;
        pbVar2 = pbVar2 + 1;
      } while (bVar1 != 0);
    }
    uVar10 = lVar9 + 4U & 0xfffffffffffffffc;
    puVar3 = (undefined4 *)thunk_FUN_1811316e0(uVar10 + 0x17);
    LOCK();
    *puVar3 = 0;
    UNLOCK();
    *(ulonglong *)(puVar3 + 2) = uVar10;
    bVar1 = *param_2;
    pbVar2 = param_2 + 1;
    pbVar4 = (byte *)(puVar3 + 4);
    while (bVar1 != 0) {
      uVar8 = (uint)bVar1;
      if (uVar8 < 0x80) {
        *pbVar4 = bVar1;
        pbVar4 = pbVar4 + 1;
      }
      else {
        iVar11 = 1;
        if ((0x7ff < uVar8) && (iVar11 = 2, 0xffff < uVar8)) {
          iVar11 = 3;
        }
        *pbVar4 = bVar1 >> (char)iVar11 * '\x06' | -1 << (7U - (char)iVar11 & 0x1f);
        pbVar4 = pbVar4 + 1;
        iVar11 = iVar11 + -1;
        if (-1 < iVar11) {
          iVar6 = iVar11 * 6;
          do {
            bVar5 = (byte)iVar6;
            iVar6 = iVar6 + -6;
            *pbVar4 = bVar1 >> (bVar5 & 0x1f) & 0x3f | 0x80;
            pbVar4 = pbVar4 + 1;
            iVar11 = iVar11 + -1;
          } while (-1 < iVar11);
        }
      }
      bVar1 = *pbVar2;
      pbVar2 = pbVar2 + 1;
    }
    *pbVar4 = 0;
    *param_1 = puVar3 + 4;
    return param_1;
  }
  *param_1 = &DAT_1821dbf98;
  return param_1;
}



############ FUN_ 18123a6f0 size=155 ############

void FUN_18123a6f0(longlong *param_1,void *param_2,int param_3,size_t param_4)

{
  size_t _Size;
  longlong lVar1;
  
  if (param_3 < 0) {
    memset(param_2,0,(longlong)-param_3);
    param_2 = (void *)((longlong)param_2 - (longlong)param_3);
    param_4 = param_4 - (longlong)-param_3;
    param_3 = 0;
  }
  lVar1 = (longlong)param_3;
  _Size = param_4;
  if ((ulonglong)param_1[1] < lVar1 + param_4) {
    _Size = param_1[1] - lVar1;
    memset((void *)(_Size + (longlong)param_2),0,param_4 - _Size);
  }
  if (_Size != 0) {
    memcpy(param_2,(void *)(*param_1 + lVar1),_Size);
  }
  return;
}



############ FUN_ 18124a200 size=158 ############

void FUN_18124a200(undefined8 *param_1,size_t param_2,char param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  undefined1 local_28 [32];
  
  if (param_1[1] != param_2) {
    pvVar2 = (void *)*param_1;
    if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    if (pvVar2 == (void *)0x0) {
      FUN_180481140(param_1,param_2,param_3);
    }
    else {
      pvVar2 = realloc(pvVar2,param_2);
      *param_1 = pvVar2;
      if (pvVar2 == (void *)0x0) {
        FUN_1804719e0(local_28);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_28,(ThrowInfo *)&DAT_1825fec68);
      }
      if ((param_3 != '\0') && (uVar1 = param_1[1], uVar1 < param_2)) {
        memset((void *)((longlong)pvVar2 + uVar1),0,param_2 - uVar1);
      }
    }
    param_1[1] = param_2;
  }
  return;
}



############ FUN_ 18141b260 size=859 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18141b260(longlong param_1,undefined8 param_2,longlong *param_3,longlong param_4,
                  undefined4 *param_5,ulonglong param_6)

{
  char cVar1;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  int iVar5;
  undefined1 auStack_488 [32];
  longlong local_468;
  longlong local_460;
  int local_458 [2];
  longlong local_450;
  longlong local_448;
  LARGE_INTEGER local_440;
  __time64_t local_438;
  LARGE_INTEGER local_430;
  __time64_t local_428;
  LARGE_INTEGER local_420;
  __time64_t local_418 [2];
  undefined **local_408;
  undefined8 local_400;
  undefined8 local_3f8;
  undefined8 uStack_3f0;
  undefined8 local_3e8;
  undefined8 uStack_3e0;
  undefined8 local_3d8;
  undefined8 local_3d0;
  undefined8 local_3c8;
  undefined8 uStack_3c0;
  longlong local_3b8;
  undefined8 uStack_3b0;
  undefined8 local_3a8;
  undefined1 local_3a0 [752];
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined4 local_98;
  undefined2 local_94;
  LARGE_INTEGER local_88;
  undefined8 local_80;
  ulonglong local_78;
  __time64_t local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined8 local_58;
  undefined8 uStack_50;
  ulonglong local_48;
  
  local_418[1] = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_488;
  iVar5 = 0;
  if ((((param_6 == 0) || (param_4 == 0)) || (param_5 == (undefined4 *)0x0)) ||
     ((param_6 & 0x1f) != 0)) {
  }
  local_450 = *param_3;
  local_448 = param_3[1];
  param_6 = param_6 >> 5;
  uVar3 = 0;
LAB_18141b2f4:
  if (param_6 == 0) {
  }
  if (iVar5 != 0) {
  }
  if (*(char *)(param_1 + 0xb0) == '\0') goto code_r0x00018141b313;
  goto LAB_18141b4de;
code_r0x00018141b313:
  *(undefined1 *)(param_1 + 0xb1) = 0;
  uVar4 = uVar3 + 1;
  if (99 < uVar3) {
  }
  _time64(&local_438);
  QueryPerformanceCounter(&local_440);
  local_88 = local_440;
  local_80 = *(undefined8 *)(param_1 + 8);
  uVar3 = rdtsc();
  local_78 = CONCAT44((int)((ulonglong)local_80 >> 0x20),(int)uVar3) | uVar3 & 0xffffffff00000000;
  local_70 = local_438;
  lVar2 = FUN_1817b4990(&local_88,&local_68,param_1 + 0x10);
  if (lVar2 != 0) {
    iVar5 = 7;
  }
  uVar3 = uVar4;
  local_458[0] = iVar5;
  if (iVar5 == 0) {
    local_408 = pace::eden::thrift::pub::SetupDynamicCryptoWhiteboxOutput::vftable;
    local_400 = 0;
    local_3f8 = 0;
    uStack_3f0 = 0;
    local_3e8 = 0;
    uStack_3e0 = 0;
    local_3d8 = 0;
    local_3d0 = 0;
    local_3c8 = 0;
    uStack_3c0 = 0;
    local_3b8 = 0;
    uStack_3b0 = 0;
    local_3a8 = 0;
    FUN_180575180(local_3a0);
    local_b0 = 0;
    local_a8 = 0;
    uStack_a0 = 0;
    local_98 = 0;
    local_94 = 0;
    cVar1 = .?AVSoothe2_DynamicCryptoManager@eden@pace@@::
            vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
                      (param_1,&local_68,&local_408,local_458);
    *(char *)(param_1 + 0xb1) = cVar1;
    iVar5 = local_458[0];
    if (cVar1 != '\0') {
      _time64(&local_428);
      QueryPerformanceCounter(&local_430);
      local_88 = local_430;
      local_80 = *(undefined8 *)(param_1 + 8);
      uVar4 = rdtsc();
      local_78 = CONCAT44((int)((ulonglong)local_80 >> 0x20),(int)uVar4) |
                 uVar4 & 0xffffffff00000000;
      local_70 = local_428;
      local_468 = local_3b8;
      local_460 = param_1 + 0x10;
      lVar2 = FUN_181a01ad0(&local_88,local_400,local_3e8,local_3d0);
      iVar5 = local_458[0];
      if (lVar2 != 0) {
        iVar5 = 8;
      }
      *(bool *)(param_1 + 0xb0) = iVar5 == 0;
    }
    FUN_1805759d0(&local_408);
    if ((iVar5 == 0) && (*(char *)(param_1 + 0xb0) != '\0')) {
LAB_18141b4de:
      if (param_6 == 0) {
      }
      do {
        _time64(local_418);
        QueryPerformanceCounter(&local_420);
        local_88 = local_420;
        local_80 = *(undefined8 *)(param_1 + 8);
        uVar4 = rdtsc();
        local_78 = CONCAT44((int)((ulonglong)local_80 >> 0x20),(int)uVar4) |
                   uVar4 & 0xffffffff00000000;
        local_70 = local_418[0];
        local_468 = param_1 + 0x10;
        lVar2 = FUN_1817217c0(&local_88,&local_450,param_4,&local_68);
        if (lVar2 != 0) {
          *(undefined2 *)(param_1 + 0xb0) = 0;
          break;
        }
        *param_5 = local_68;
        param_5[1] = uStack_64;
        param_5[2] = uStack_60;
        param_5[3] = uStack_5c;
        *(undefined8 *)(param_5 + 4) = local_58;
        *(undefined8 *)(param_5 + 6) = uStack_50;
        param_4 = param_4 + 0x20;
        param_5 = param_5 + 8;
        local_450 = local_450 + 1;
        param_6 = param_6 - 1;
      } while (param_6 != 0);
    }
  }
  goto LAB_18141b2f4;
}



############ FUN_ 1805337e0 size=176 ############

void FUN_1805337e0(longlong param_1)

{
  void *_Memory;
  undefined1 local_98 [16];
  longlong *local_88;
  ulonglong local_60;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  FUN_18124a4b0(local_98,0x100);
  FUN_181247a90();
  if ((local_88 != (longlong *)0x0) && (local_60 < (ulonglong)local_88[1])) {
    *(undefined1 *)(local_60 + *local_88) = 0;
  }
  if (local_60 == 0) {
    _Memory = *(void **)(param_1 + 200);
    *(undefined8 *)(param_1 + 200) = 0;
    *(undefined8 *)(param_1 + 0xd0) = 0;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 18113f2d0 size=37 ############

undefined8 FUN_18113f2d0(void)

{
  undefined8 uVar1;
  
  if (((byte)DAT_182674ca4 & 2) == 0) {
    uVar1 = FUN_18113f300();
    if ((int)uVar1 == 0) {
      return uVar1;
    }
  }
  return 1;
}



############ FUN_ 18113ebf0 size=248 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18113ebf0(HANDLE param_1)

{
  BOOL BVar1;
  DWORD64 local_res10;
  DWORD64 local_res18;
  DWORD64 local_res20;
  DWORD64 local_4e8 [2];
  _CONTEXT local_4d8;
  
  FUN_1805a02a6(&DAT_182674ce8);
  if (DAT_182674ce8 == 0) {
    FUN_1805a0208();
  }
  else {
    FUN_1805a0271(&local_res10,&local_res18,&local_res20,local_4e8);
  }
  local_4d8.ContextFlags = 0x100010;
  BVar1 = GetThreadContext(param_1,&local_4d8);
  if (BVar1 != 0) {
    GetThreadId(param_1);
    local_4d8.Dr0 = local_res10;
    _DAT_182678cf8 = local_res10;
    local_4d8.Dr1 = local_res18;
    _DAT_182678d00 = local_res18;
    local_4d8.Dr2 = local_res20;
    _DAT_182678d08 = local_res20;
    local_4d8.Dr3 = local_4e8[0];
    _DAT_182678d10 = local_4e8[0];
    local_4d8.Dr7 = (ulonglong)((uint)local_4d8.Dr7 & 0xdd00) | 0x55;
    SetThreadContext(param_1,&local_4d8);
  }
  return;
}



############ FUN_ 1805bc560 size=771 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805bc560(longlong param_1,undefined4 param_2,longlong *param_3)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong lVar7;
  undefined1 auStack_11f8 [32];
  undefined8 local_11d8;
  undefined **local_11c8;
  undefined4 local_11c0;
  undefined1 local_11b8 [8];
  undefined8 local_11b0;
  undefined8 local_11a8;
  undefined1 local_11a0 [32];
  undefined4 local_1180;
  undefined1 local_1178 [336];
  undefined4 local_1028;
  undefined1 local_1024;
  undefined1 local_d78;
  undefined1 local_d58;
  undefined8 local_d54;
  undefined4 local_d4c;
  undefined1 local_d48 [1080];
  undefined4 local_910;
  undefined2 local_90c;
  undefined1 local_90a;
  undefined **local_908 [2];
  undefined1 local_8f8 [1136];
  undefined1 local_488 [1088];
  ulonglong local_48;
  undefined8 uStack_40;
  longlong lVar6;
  
  uStack_40 = 0x1805bc57e;
  local_11d8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_11f8;
  FUN_18113eab0();
  local_11c8 = pace::eden::thrift::pub::AuthSituation::vftable;
  FUN_1805b5e30(local_11b8);
  local_d58 = 1;
  local_d54 = 0;
  local_d4c = 0;
  FUN_1805b5060(local_d48);
  local_910 = 0;
  local_90c = 0;
  local_90a = 0;
  local_d58 = 0;
  local_11b0 = *(undefined8 *)(param_1 + 0x68);
  local_11a8 = *(undefined8 *)(param_1 + 0x70);
  plVar4 = (longlong *)(param_1 + 0x78);
  local_11c0 = param_2;
  if ((longlong *)local_11a0 != plVar4) {
    if (0xf < *(ulonglong *)(param_1 + 0x90)) {
      plVar4 = (longlong *)*plVar4;
    }
    FUN_1805a6cb0(local_11a0,plVar4,*(undefined8 *)(param_1 + 0x88));
  }
  local_1180 = *(undefined4 *)(param_1 + 0x9c);
  local_1028 = *(undefined4 *)(param_1 + 0x1f0);
  local_1024 = *(undefined1 *)(param_1 + 500);
  if (*(char *)(param_1 + 0x2e3) != '\0') {
    FUN_1805ba780(local_1178,param_1 + 0xa0);
    local_d78 = 1;
  }
  lVar3 = *(longlong *)(param_1 + 0x10) - *(longlong *)(param_1 + 8);
  lVar2 = lVar3 >> 0x3f;
  if (lVar3 / 0x438 + lVar2 != lVar2) {
    local_d54 = *(undefined8 *)(*(longlong *)(param_1 + 8) + 8);
    local_d4c = *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x10);
    FUN_1805ba120(local_d48);
    local_90a = 1;
  }
  lVar2 = *param_3;
  lVar3 = param_3[1];
  if (param_3[2] == lVar3) {
    FUN_1805b0450(param_3,lVar2,&local_11c8);
  }
  else if (lVar2 == lVar3) {
    FUN_1805b5540(lVar3,&local_11c8);
    param_3[1] = param_3[1] + 0x8c0;
  }
  else {
    FUN_1805b5540(local_908,&local_11c8);
    lVar1 = lVar3 + -0x8c0;
    FUN_1805b5540(lVar3,lVar1);
    param_3[1] = param_3[1] + 0x8c0;
    if (lVar1 != lVar2) {
      lVar7 = lVar3 + -0x1170;
      lVar6 = lVar3 + 0x10;
      do {
        lVar5 = lVar6 + -0x8c0;
        *(undefined4 *)(lVar6 + -0x8c8) = *(undefined4 *)(lVar7 + -8);
        FUN_1805ba4b0(lVar5,lVar7);
        *(undefined1 *)(lVar6 + -0x460) = *(undefined1 *)(lVar7 + 0x460);
        *(undefined4 *)(lVar6 + -0x45c) = *(undefined4 *)(lVar7 + 0x464);
        *(undefined4 *)(lVar6 + -0x458) = *(undefined4 *)(lVar7 + 0x468);
        *(undefined4 *)(lVar6 + -0x454) = *(undefined4 *)(lVar7 + 0x46c);
        FUN_1805ba120(lVar6 + -0x450,lVar7 + 0x470);
        *(undefined4 *)(lVar6 + -0x18) = *(undefined4 *)(lVar7 + 0x8a8);
        *(undefined2 *)(lVar6 + -0x14) = *(undefined2 *)(lVar7 + 0x8ac);
        *(undefined1 *)(lVar6 + -0x12) = *(undefined1 *)(lVar7 + 0x8ae);
        lVar7 = lVar7 + -0x8c0;
        lVar6 = lVar5;
      } while (lVar5 + (lVar1 - lVar3) + -0x10 != lVar2);
    }
    FUN_1805ba360(lVar2,local_908);
    local_908[0] = pace::eden::thrift::pub::AuthSituation::vftable;
    FUN_1805b7720(local_488);
    FUN_1805b8780(local_8f8);
  }
  local_11c8 = pace::eden::thrift::pub::AuthSituation::vftable;
  FUN_1805b7720(local_d48);
  FUN_1805b8780(local_11b8);
}



############ FUN_ 18052c910 size=232 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18052c910(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  int iVar3;
  uint *_Memory;
  
  *param_1 = CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>
             ::vftable;
  param_1[0x29] =
       CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>
       ::vftable;
  param_1[0x2a] =
       CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>
       ::vftable;
  FUN_181252ea0();
  FUN_18113eab0();
  iVar3 = _Mtx_lock(&DAT_18267b100);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  _DAT_18267b1a0 = _DAT_18267b1a0 + -1;
  FUN_1811497a0();
  iVar3 = _Mtx_unlock(&DAT_18267b100);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  FUN_18120c7f0();
  _Memory = (uint *)(param_1[0xb9] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar2 = (undefined8 *)param_1[0xb7];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  *(undefined4 *)((longlong)param_1 + 0x5ac) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0xb4]);
}



############ FUN_ 181202440 size=1151 ############

/* WARNING: Removing unreachable block (ram,0x00018120254c) */
/* WARNING: Removing unreachable block (ram,0x00018120253d) */
/* WARNING: Removing unreachable block (ram,0x000181202507) */
/* WARNING: Removing unreachable block (ram,0x00018120258c) */
/* WARNING: Removing unreachable block (ram,0x0001812025ce) */
/* WARNING: Removing unreachable block (ram,0x0001812024b8) */

void FUN_181202440(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  longlong lVar5;
  int unaff_retaddr;
  undefined1 auStack_168 [32];
  undefined4 local_148;
  undefined *local_140;
  uint local_134;
  undefined *local_128;
  undefined8 local_120;
  undefined4 local_104;
  undefined4 local_100;
  code *local_f8 [6];
  longlong local_c8;
  undefined8 local_a8;
  longlong local_a0;
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_104 = 0x9a0;
  local_100 = 0xca0;
  local_148 = 0;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x166a7a15;
  local_134 = (uVar4 >> 0x18 ^ uVar4) * -0x166a00af;
  local_c8 = param_1;
  if (local_134 < 0x7fffffff) {
    do {
      local_f8[0] = FUN_18141db20;
      FUN_181203e50(local_f8,0xab5f);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_f8[0])();
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  lVar5 = *(longlong *)(param_1 + 0x70) + 8;
  if (*(longlong *)(param_1 + 0x70) == 0) {
    lVar5 = 0;
  }
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 0x88) + 8);
  FUN_1804951c0(lVar1);
  local_a0 = lVar1;
  FUN_1811f5f40(param_1,lVar1,lVar5);
  FUN_1804951e0(lVar1 + -0x10);
  local_120 = 0x6f0d4a0;
  local_140 = &DAT_182251790;
  local_128 = &DAT_182265768;
  FUN_181203840();
  FUN_1813b2163();
  return;
}



############ FUN_ 1813eca90 size=899 ############

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

void FUN_1813eca90(undefined8 param_1,undefined8 param_2)

{
  byte bVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  uint uVar5;
  byte *pbVar6;
  int iVar7;
  ulonglong uVar8;
  bool bVar9;
  int unaff_retaddr;
  undefined1 auStack_b8 [40];
  undefined4 *local_90;
  undefined *local_88;
  uint local_80;
  undefined8 local_78;
  uint local_70;
  undefined4 local_6c;
  code *local_68;
  undefined8 local_60;
  undefined8 local_58;
  ulonglong local_38;
  char *pcVar4;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_6c = 0x6c0;
  uVar5 = (uint)&stack0x00000000 & 0x33f;
  iVar7 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  local_70 = (0x6022 << ((byte)(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) & 1) |
             0x7226U) ^ 0x77f6;
  local_60 = param_1;
  local_58 = param_2;
  do {
    FUN_1813ecfca(0x7710);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_78 = 0;
  uVar8 = 0xbdba00a9;
  local_90 = &DAT_18219d8f8;
  local_88 = &DAT_1821b18d0;
  do {
    uVar3 = rdtsc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_80 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x3594166b;
  local_80 = local_80 >> 0x18 ^ local_80;
  pbVar6 = (byte *)(ulonglong)local_80;
  local_80 = local_80 * -0x13ac3b32;
  if (local_80 < 0x7fffffff) {
    do {
      local_68 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
      pbVar6 = (byte *)(ulonglong)uVar5;
    } while (uVar5 != 0);
    uVar2 = FUN_1813bba80(0,0xe761);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  local_78 = 0xc5249b37afba8d8a;
  local_90 = (undefined4 *)CONCAT44(local_90._4_4_,0xafba8d8a);
  FUN_1813eb349();
  bVar9 = uVar8 < (((-uVar8 ^ 0xffffffffffffffff) + 1) - uVar8 ^ 0xffffffffffffffff) + 1;
  uVar3 = FUN_1813ece4c();
  if (!bVar9) {
    thunk_FUN_1813ece4c();
    return;
  }
  DAT_18219d8f8 = (undefined4)uVar3;
  bVar1 = (byte)uVar3 ^ *pbVar6;
  pcVar4 = (char *)CONCAT71((int7)((ulonglong)uVar3 >> 8),bVar1);
  *pcVar4 = *pcVar4 + bVar1;
  return;
}



############ FUN_ 18117f810 size=1265 ############

/* WARNING: Removing unreachable block (ram,0x00018117f984) */
/* WARNING: Removing unreachable block (ram,0x00018117f96a) */
/* WARNING: Removing unreachable block (ram,0x00018117f989) */
/* WARNING: Removing unreachable block (ram,0x00018117faa1) */

void FUN_18117f810(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  code **ppcVar4;
  undefined1 *puVar5;
  int iVar6;
  uint *puVar7;
  uint uVar8;
  int unaff_retaddr;
  undefined1 auStack_188 [32];
  undefined4 local_168;
  undefined4 local_160;
  undefined1 local_15c [20];
  uint local_148;
  undefined4 local_140;
  uint local_120;
  uint local_11c;
  undefined4 local_118;
  code *local_110 [5];
  undefined8 local_e8;
  undefined8 local_e0;
  undefined4 local_d8;
  undefined8 local_c0;
  undefined4 local_98;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_188;
  uVar8 = (uint)&stack0x00000000;
  uVar3 = uVar8 & 0x23f;
  iVar6 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  if ((((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e & 0x1aU) == 0) {
    uVar3 = uVar8 & 0x2bf;
    local_11c = 0x1392 - (0 << ((char)((ulonglong)
                                       ((longlong)(int)((uVar3 + 2) * (uVar3 + 1) * uVar3) *
                                       0x55555556) >> 0x20) * -3 & 0x1fU));
  }
  else {
    local_11c = 0x1392;
  }
  uVar3 = (((uVar8 & 0x12ff) + 1) * (uVar8 & 0x12ff) + 7) % 0x51 |
          ((uVar8 & 0x70ff) * (uVar8 & 0x70ff) + 1) % 7;
  local_11c = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x1722 ^ local_11c;
  local_118 = 0x850;
  local_c0 = param_1;
  FUN_18117d8f0(param_1);
  do {
    uVar1 = rdtsc();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x166ae57b;
  local_148 = (uVar3 >> 0x18 ^ uVar3) * -0x3d4d51cb;
  if (local_148 < 0x1bacf91f) {
    local_110[0] = (code *)0x0;
    do {
      ppcVar4 = local_110;
      FUN_1811801df(ppcVar4,local_110);
      *ppcVar4 = FUN_1813f2240;
      FUN_181180df2();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_110[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    func_0x00018117e7b1();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_168 = 0;
  do {
    FUN_18117fd3b(0xfd14);
    FUN_181181049();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    local_98 = 0x28;
    local_e8 = 0x18117fb47;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    local_d8 = 0x1e;
    local_e0 = 0x18117fc07;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_160 = 0;
  local_140 = 0;
  dvs_0x77487e89_mfort6317_ =
       (uint *)((longlong)dvs_0x77487e89_mfort6317_ +
               (ulonglong)((uint)((ulonglong)dvs_0x0bf24e58_mfort6317_ >> 0x17) & 0x10190080));
  puVar7 = &local_120;
  puVar5 = local_15c;
  FUN_18117e4fa(puVar5);
  uVar1 = rdtsc();
  uVar3 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20);
  *puVar7 = uVar3;
  FUN_18117fd3c(puVar5,(ulonglong)uVar3 << 7);
  return;
}



############ FUN_ 18052caf0 size=768 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 * FUN_18052caf0(undefined8 *param_1,longlong *param_2,longlong param_3)

{
  uint uVar1;
  int iVar2;
  undefined8 uVar3;
  uint *puVar4;
  longlong local_res20;
  LARGE_INTEGER local_78;
  longlong local_70;
  undefined8 local_68;
  undefined *local_60;
  undefined1 local_58;
  
  local_68 = 0xfffffffffffffffe;
  FUN_1812c2150(param_1,param_3);
  *param_1 = CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>
             ::vftable;
  param_1[0x29] =
       CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>
       ::vftable;
  param_1[0x2a] =
       CloudyAudioProcessor<Soothe2ModuleBase<float,2>,Soothe2ModuleDecryptor,ParameterStates,float>
       ::vftable;
  param_1[0x2b] = 0x40e5888000000000;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  *(undefined1 *)((longlong)param_1 + 0x164) = 0;
  local_res20 = FUN_1811316e0(0x2404d8);
  uVar3 = FUN_18052f920(local_res20);
  param_1[0x2d] = uVar3;
  local_res20 = FUN_1811316e0(0x2404d8);
  uVar3 = FUN_18052f920(local_res20);
  param_1[0x2e] = uVar3;
  local_res20 = *param_2;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18119f700(param_1 + 0x2f,param_1,&local_res20,param_1 + 0x2b);
  FUN_181203fd0(param_1 + 0x67,param_1 + 0x2f);
  FUN_181163aa0(param_1 + 0x80,param_1 + 0x2f,param_1 + 0x67);
  param_1[0x8a] = ModuleDecryptor<pace::eden::Soothe2_DynamicCryptoManager>::vftable;
  param_1[0x8b] = pace::eden::Soothe2_DynamicCryptoManager::vftable;
  *(undefined2 *)(param_1 + 0xa1) = 0;
  QueryPerformanceFrequency(&local_78);
  *(LARGE_INTEGER *)(param_1 + 0x8c) = local_78;
  *(undefined1 *)(param_1 + 0xa2) = 0;
  param_1[0xa3] = 0;
  param_1[0xa4] = 0;
  param_1[0x8a] = Soothe2ModuleDecryptor::vftable;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xa5));
  *(undefined1 *)((longlong)param_1 + 0x554) = 0;
  *(undefined4 *)(param_1 + 0xab) = 0;
  LOCK();
  *(undefined4 *)(param_1 + 0xab) = 0;
  UNLOCK();
  param_1[0xac] = 0;
  param_1[0xad] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xae));
  param_1[0xb4] = 0;
  param_1[0xb5] = 0;
  *(undefined1 *)(param_1 + 0xb6) = 0;
  param_1[0xb7] = 0;
  FUN_180484030(param_1 + 0xb8,param_1 + 0x67);
  param_1[0xbb] = 0;
  FUN_18120dfe0();
  FUN_18113eab0();
  local_60 = &DAT_18267b100;
  iVar2 = _Mtx_lock(&DAT_18267b100);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  local_58 = 1;
  _DAT_18267b1a0 = _DAT_18267b1a0 + 1;
  FUN_1811497a0();
  iVar2 = _Mtx_unlock(&DAT_18267b100);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  FUN_181145ea0();
  local_70 = param_1[0xb9];
  puVar4 = (uint *)(local_70 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  FUN_1811f8160(param_1 + 0x67,local_70,param_1 + 0x2a);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_1804db5b0(param_3 + 0x10);
  FUN_1804db5b0(param_3);
  return param_1;
}



############ FUN_ 18119f700 size=1503 ############

void FUN_18119f700(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined8 *_Dst;
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint *puVar4;
  undefined4 *puVar5;
  int unaff_retaddr;
  longlong local_188;
  longlong lStackY_180;
  longlong local_178;
  longlong local_170;
  longlong local_160;
  undefined1 local_138 [4];
  uint local_134 [7];
  undefined8 *local_118;
  undefined8 *local_110;
  undefined4 local_108 [4];
  code *local_f8;
  undefined8 local_f0;
  undefined *local_e8;
  undefined8 *local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  undefined8 *local_a0;
  ulonglong local_40;
  
  local_b0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)&local_188;
  param_1[1] = ProcessorStateManagerOptionListener::vftable;
  *param_1 = ParameterStates::vftable;
  param_1[1] = ParameterStates::vftable;
  param_1[2] = ParameterStates::vftable;
  param_1[3] = ParameterStates::vftable;
  param_1[4] = ParameterStates::vftable;
  *(undefined1 *)(param_1 + 5) = 0;
  param_1[6] = param_2;
  local_110 = param_1 + 7;
  local_118 = param_1;
  local_b8 = param_3;
  local_a8 = param_1;
  local_a0 = param_3;
  FUN_180489700(local_110,local_138);
  FUN_18049c4e0(param_1 + 9,&DAT_1821d936c);
  param_1[10] = "PARAM";
  param_1[0xb] = &DAT_1821d938c;
  param_1[0xc] = "value";
  param_1[0xd] = "presetName";
  *(undefined1 *)(param_1 + 0xe) = 0;
  local_110 = param_1 + 0xf;
  FUN_180489700();
  _Dst = param_1 + 0x11;
  memset(_Dst,0,0xf0);
  local_110 = _Dst;
  _eh_vector_constructor_iterator_(_Dst,0x78,2,(_func_void_void_ptr *)&LAB_180485400,FUN_181352b00);
  param_1[0x2f] = param_4;
  param_1[0x30] = *param_3;
  FUN_1804951c0();
  local_110 = param_1 + 0x31;
  param_1[0x32] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x33) = 0;
  *local_110 = ParameterStates::ParameterFloatTimer::vftable;
  param_1[0x34] = param_1;
  param_1[0x35] = 0;
  param_1[0x36] = 0;
  *(undefined1 *)(param_1 + 0x37) = 0;
  do {
    FUN_1811a1106();
    FUN_18119dc6f();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    puVar4 = local_134;
    FUN_18119e734(puVar4,local_134);
    uVar1 = rdtsc();
    *puVar4 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
                    /* WARNING: Call to offcut address within same function */
    func_0x00018119f8c3();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_134[0] = (local_134[0] * -0x7a1413ad >> 0x18 ^ local_134[0] * -0x7a1413ad) * -0x3594166b;
  if (local_134[0] < 0x7fffffff) {
    do {
      local_f8 = FUN_1813bba80;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = FUN_1813bba80(0,0xd1ce);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    puVar5 = local_108;
    FUN_1811a0f98();
    *puVar5 = 0x9afe8259;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_f0 = 0;
  local_e8 = &DAT_1813dc6d8;
                    /* WARNING: Call to offcut address within same function */
  func_0x00018119fb89();
  local_170 = local_160 + 0x1b3e5e;
  local_178 = local_160 + -0x5f103;
  lStackY_180 = local_160 + 0x56dd8;
  local_188 = local_160 + 0x2072d;
                    /* WARNING: Could not recover jumptable at 0x00018119fd1e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(local_160 + 0x4b781))();
  return;
}



############ FUN_ 1811f8160 size=2439 ############

/* WARNING: Removing unreachable block (ram,0x0001811f822f) */
/* WARNING: Removing unreachable block (ram,0x0001811f81f7) */
/* WARNING: Removing unreachable block (ram,0x0001811f827b) */

void FUN_1811f8160(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  ulonglong uVar2;
  int iVar3;
  uint uVar4;
  uint *puVar5;
  uint *puVar6;
  code **ppcVar7;
  uint uVar8;
  ulonglong uVar9;
  uint uVar10;
  longlong lVar11;
  int unaff_retaddr;
  undefined1 auStack_188 [32];
  int local_168;
  uint local_164;
  int local_160;
  uint local_15c;
  uint **local_158;
  undefined8 local_150;
  uint local_148 [2];
  undefined8 local_140;
  undefined4 local_138;
  undefined8 local_128;
  uint local_11c;
  uint local_118;
  uint local_114;
  undefined8 local_110;
  code *local_108 [2];
  longlong local_f8;
  undefined8 local_f0;
  undefined4 local_e0;
  undefined4 local_dc;
  longlong local_d8;
  undefined8 local_d0;
  LPCRITICAL_SECTION local_b8;
  undefined8 local_b0;
  LPCRITICAL_SECTION local_a8;
  ulonglong local_40;
  
  local_b0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_188;
  uVar10 = (uint)&stack0x00000000 & 0x73ff;
  iVar3 = uVar10 * uVar10 + 1;
  uVar10 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
  local_118 = (int)(uVar10 | -uVar10) >> 0x1f & 0x73dbU ^ 0x75db;
  uVar10 = (uint)&stack0x00000000 & 0x1ff;
  uVar10 = (uVar10 + 1) * uVar10 + 0x4c35 & 0x80000001;
  local_114 = ((int)(-uVar10 | uVar10) >> 0x1f) * -0xf797 ^ 0xf2c7;
  local_b8 = (LPCRITICAL_SECTION)(param_1 + 0x2c);
  local_128 = param_2;
  local_f8 = param_1;
  local_f0 = param_3;
  local_a8 = local_b8;
  EnterCriticalSection(local_b8);
  local_110 = 0x181141558;
  local_158 = (uint **)0x181141658;
  local_140 = 0xb573fc03;
  local_164 = 0x257dfb95;
  local_168 = (iRam000000018114155c * 0x16a88000 |
              (uint)(iRam000000018114155c * -0x3361d2af) >> 0x11) * 0x1b873593;
  local_150 = local_158;
  do {
    local_160 = -0x258788e3;
    local_dc = 0x31;
    local_d8 = 0x1811f8517;
    FUN_1811f97b7();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = (local_160 + 0xf6e1a627U >> 0x19 | (local_160 + 0xf6e1a627U) * 0x80) + 0xeaff167;
  uVar10 = (uVar10 >> 2 | uVar10 * 0x40000000) & 0x99999999 |
           (uVar10 * 4 | uVar10 >> 0x1e) & 0x66666666;
  uVar8 = (uVar10 >> 8 | uVar10 << 0x18) & 0xdd22dd22 | (uVar10 << 8 | uVar10 >> 0x18) & 0x22dd22dd;
  uVar10 = (uVar8 >> 0x14 ^ uVar8) >> 2 & 0x7f;
  uVar8 = ~((uVar10 << 0x14 | uVar10) << 2 ^ uVar8);
  uVar10 = (uVar8 >> 10 ^ uVar8) >> 1 & 0x1f;
  uVar10 = uVar8 ^ (uVar10 << 10 | uVar10) * 2;
  do {
    local_e0 = 0x33;
    local_d0 = 0x1811f8607;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar11 = (int)((uVar10 << 8 | uVar8 >> 0x18) & 0xe619e619 |
                (uVar10 >> 8 | uVar10 << 0x18) & 0x19e619e6) + local_d8;
  local_158 = &dvs_0x8b9ae151_mfort6317_;
  local_160 = 0;
  local_138 = 0;
  *(longlong *)(lVar11 + 4) =
       *(longlong *)(lVar11 + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x8b9ae151_mfort6317_ >> 0x1a) & 0x42b04100);
  do {
    puVar6 = &local_11c;
    puVar5 = &local_15c;
    FUN_1811fa228();
    uVar1 = rdtsc();
    uVar10 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20) * 8;
    *puVar6 = uVar10;
    uVar2 = ((ulonglong)uVar10 * 0x200800 >> 0x10) + 0x54af8b0b + (ulonglong)uVar10 * 0x1004000;
    *puVar5 = (int)(uVar2 >> 0x19) + (int)(uVar2 >> 0xd) * 4 & 0x72075e58;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  *(int *)(lVar11 + 8) = *(int *)(lVar11 + 8) + (local_15c ^ 0xe401b7a5);
  *(int *)(lVar11 + 4) = *(int *)(lVar11 + 4) + (local_15c ^ 0xf566fe99);
  uVar2 = *(ulonglong *)(lVar11 + 4) ^ 0x46ce908a230df951;
  uVar9 = ((uVar2 >> 0x10 | uVar2 << 0x30) & 0xa8ef5710a8ef5710 |
          (uVar2 << 0x10 | uVar2 >> 0x30) & 0x5710a8ef5710a8ef) + 0xddcc446c24fb9557;
  uVar2 = (ulonglong)((uint)((uVar9 >> 0x1c ^ uVar9) >> 3) & 0x7fffff);
  uVar2 = (uVar9 ^ (uVar2 << 0x1c | uVar2) << 3) + 0xab47880eb783b9ed;
  uVar9 = (uVar2 << 0x26 | uVar2 >> 0x1a) + 0x40d6bf08ae34ea60;
  uVar2 = (ulonglong)((uint)((uVar9 >> 10 ^ uVar9) >> 2) & 0x7f);
  uVar2 = uVar9 ^ (uVar2 << 10 | uVar2) << 2 ^ 0x94070bfe39c6f42e;
  *(ulonglong *)(lVar11 + 4) = uVar2;
  *local_158 = (uint *)((longlong)*local_158 + (ulonglong)((uint)(uVar2 >> 0x18) & 0x243832da));
  local_15c = (uint)(*(ulonglong *)(lVar11 + 4) >> 0xd) & 0x7fffffff;
  local_164 = (uint)(*(ulonglong *)(lVar11 + 4) >> 0x1a) ^ 0x7da0669f;
  local_158 = (uint **)(*(ulonglong *)(lVar11 + 4) ^ 0xc59b842679053ba);
  do {
    puVar6 = local_148;
    FUN_1811f8b21(puVar6,local_148);
    uVar1 = rdtsc();
    *puVar6 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_1811f7b1f();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  local_148[0] = (local_148[0] * -0x502813ad >> 0x18 ^ local_148[0] * -0x502813ad) * 0x5bd185eb;
  if (local_148[0] < 0x253c823) {
    local_108[0] = (code *)0x0;
    do {
      ppcVar7 = local_108;
      FUN_1811fa55b(ppcVar7,local_108);
      *ppcVar7 = FUN_18141db20;
      func_0x0001811f8ed0();
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar2 = (*local_108[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  local_168 = (iRam0000000181141568 * 0x16a88000 |
              (uint)(iRam0000000181141568 * -0x3361d2af) >> 0x11) * 0x1b873593;
  do {
    FUN_1811fa8bb();
    FUN_1811faedf();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  local_168 = (iRam0000000181141580 * 0x16a88000 |
              (uint)(iRam0000000181141580 * -0x3361d2af) >> 0x11) * 0x1b873593;
  FUN_1811f7b1f(0xf03c,0x181141584,0,&local_168);
  FUN_1811f8b22();
  return;
}



############ FUN_ 181203fd0 size=4043 ############

/* WARNING: Instruction at (ram,0x00018120423d) overlaps instruction at (ram,0x000181204239)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001812042ab) */
/* WARNING: Removing unreachable block (ram,0x0001812041ca) */
/* WARNING: Removing unreachable block (ram,0x00018120413e) */
/* WARNING: Type propagation algorithm not settling */

void FUN_181203fd0(LPCRITICAL_SECTION param_1,ULONG_PTR param_2)

{
  ULONG_PTR UVar1;
  ulonglong uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  longlong *plVar10;
  ulonglong uVar11;
  uint *puVar12;
  uint uVar13;
  uint uVar14;
  undefined4 *puVar15;
  uint *puVar16;
  undefined4 *puVar17;
  undefined4 *puVar18;
  undefined8 *puVar19;
  undefined8 *puVar20;
  undefined1 *puVar21;
  undefined4 *puVar22;
  uint uVar23;
  uint uVar24;
  longlong lVar25;
  uint uVar26;
  longlong lVar27;
  longlong *plVar28;
  uint uVar29;
  uint uVar30;
  longlong *plVar31;
  LPCRITICAL_SECTION p_Var32;
  longlong lVar33;
  int *piVar34;
  int unaff_retaddr;
  undefined8 local_210 [5];
  undefined8 local_1e8;
  undefined4 local_1e0;
  uint local_1dc;
  longlong local_1d8;
  uint local_1d0 [2];
  uint local_1c8;
  undefined1 local_1c4 [12];
  undefined4 *local_1b8;
  uint local_1b0;
  undefined4 local_1a4;
  undefined8 local_1a0;
  undefined4 local_198;
  uint local_190;
  uint local_18c [3];
  LPCRITICAL_SECTION local_180;
  code *local_178;
  longlong local_170;
  undefined8 local_168;
  LPCRITICAL_SECTION local_160;
  undefined4 local_158;
  undefined4 local_154;
  undefined1 local_150 [8];
  longlong local_148;
  longlong local_140;
  undefined1 local_138 [8];
  undefined1 local_130 [8];
  undefined4 *local_128;
  undefined8 local_120;
  undefined1 local_118 [8];
  longlong lStack_110;
  code *local_108;
  undefined1 auStack_100 [8];
  uint local_f8 [2];
  uint local_f0;
  uint local_ec;
  uint local_e8;
  uint local_e4;
  undefined4 local_e0;
  undefined4 local_dc;
  LPCRITICAL_SECTION local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined1 auStack_a8 [8];
  undefined1 auStack_a0 [8];
  undefined8 local_98;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 uStack_88;
  undefined4 uStack_84;
  undefined4 local_70 [4];
  undefined1 auStack_60 [8];
  uint uStack_58;
  uint uStack_54;
  ulonglong local_38;
  
  puVar6 = local_210 + 1;
  puVar19 = local_210 + 1;
  local_98 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)(local_210 + 1);
  local_180 = param_1;
  local_d8 = param_1;
  InitializeCriticalSection(param_1);
  InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)&param_1[1].DebugInfo + 4));
  uVar4 = FUN_18122bf10();
  FUN_18122c1b0(uVar4,&local_170,&DAT_182673950);
  FUN_181352ec0(&param_1[2].LockCount,&local_170);
  FUN_1804951e0(local_170 + -0x10);
  param_1[2].SpinCount = param_2;
  local_160 = param_1 + 3;
  FUN_1804898a0(local_160,local_1c4);
  local_d0 = 0;
  param_1[3].OwningThread = (HANDLE)0x0;
  local_c8 = 0;
  param_1[3].LockSemaphore = (HANDLE)0x0;
  local_c0 = 0;
  param_1[3].SpinCount = 0;
  local_b8 = 0;
  param_1[4].DebugInfo = (PRTL_CRITICAL_SECTION_DEBUG)0x0;
  param_1[4].LockCount = 0;
  local_b0 = 0;
  param_1[4].OwningThread = (HANDLE)0x0;
  param_1[4].LockSemaphore = (HANDLE)0x0;
  param_1[4].SpinCount = 0;
  local_18c[2] = 0xaa0;
  uVar9 = (uint)&stack0x00000000 & 0xfff;
  uVar9 = (uVar9 * uVar9 + 1) % 7;
  uVar7 = (uint)&stack0x00000000 & 0x77ff;
  iVar8 = uVar7 * uVar7 + 1;
  uVar7 = (iVar8 >> 4) + (iVar8 >> 1) + iVar8 * 0x24924924 >> 0x1d;
  uVar7 = (int)(uVar7 - 7) >> 0x1f & uVar7;
  local_18c[1] = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x40fc ^ (int)(uVar9 | -uVar9) >> 0x1f & 0x4a1cU
  ;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_1a0 = 0x13fd8;
  local_1b8 = &DAT_18223d7b8;
  local_1e8 = &DAT_182251790;
  plVar31 = &DAT_186f0d1f8;
  do {
    local_198 = 0x4960a6c6;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_1d8 = 0xb0a7f32e40eababb;
  local_1a4 = 0x40eababb;
  do {
    uVar4 = rdtsc();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = ((uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20)) * -0x166a7a15;
  local_1d0[0] = (uVar9 >> 0x18 ^ uVar9) * -0x3d4d3d4e;
  if (local_1d0[0] < 0x7fffffff) {
    do {
      local_178 = FUN_18141db20;
      FUN_181203163(&local_178,0x33ac);
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar5 = (*local_178)();
    if (1 < uVar5) {
      FUN_18113eab0();
    }
  }
  uVar4 = FUN_18048a7b0(local_150,param_1);
  FUN_180485db0(&param_1[3].OwningThread,uVar4);
  FUN_18047c160(local_150);
  local_1e0 = 0xc6a4a793;
  local_1d8 = (longlong)local_1e8 - (longlong)local_1b8;
  lVar33 = 0;
  local_128 = local_1b8;
  uVar9 = 0xcb343682;
  do {
    local_1dc = 0x54bf3a39;
    local_158 = 0x42;
    local_148 = 0x1812045f7;
    func_0x0001812057c0();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ((local_1dc >> 8 | local_1dc << 0x18) & 0xe01fe01f |
          (local_1dc << 8 | local_1dc >> 0x18) & 0x1fe01fe0) ^ 0x3dd26cfe;
  uVar13 = uVar7 << 3 | uVar7 >> 0x1d;
  uVar7 = ((uVar7 & 0x1fffffff) >> 4 ^ uVar13) >> 4 & 7;
  uVar7 = ((uVar7 << 7 | uVar7) << 4 ^ uVar13) + 0xdddd3a05;
  uVar7 = (uVar7 * 0x10000 | uVar7 >> 0x10) & 0xe38c1c73 |
          (uVar7 >> 0x10 | uVar7 * 0x10000) & 0x1c73e38c;
  uVar7 = (uVar7 << 0x10 | uVar7 >> 0x10) & 0xc9aa3655 |
          (uVar7 >> 0x10 | uVar7 << 0x10) & 0x3655c9aa;
  uVar13 = uVar7 + 0xf02a800;
  local_1dc = (uVar13 >> 2 | uVar7 << 0x1e) & 0x99999999 |
              (uVar13 * 4 | uVar13 >> 0x1e) & 0x66666666;
  puVar22 = (undefined4 *)0x9653c1a7;
  uVar3 = 0x9653c1a7;
  do {
    local_1b0 = 0x91bbe015;
    local_154 = 0x20;
    local_140 = 0x1812046e7;
    FUN_181203701();
    p_Var32 = local_180;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = (local_1b0 << 0x10 | local_1b0 >> 0x10) & 0x8fd2702d |
          (local_1b0 >> 0x10 | local_1b0 << 0x10) & 0x702d8fd2;
  uVar13 = (uVar7 >> 0x13 | uVar7 << 0xd) + 0x87d3365b;
  uVar7 = (uVar13 >> 9 ^ uVar13) >> 8 & 0xf;
  uVar7 = uVar13 ^ (uVar7 << 9 | uVar7) << 8;
  uVar13 = uVar7 >> 4 & 0xf0f0f0f0 | uVar13 * 0x10000000 | (uVar7 & 0xf0f0f0) << 4 | uVar13 >> 0x1c;
  uVar23 = uVar13 << 0xc | uVar13 >> 0x14;
  uVar7 = (uVar23 >> 3 ^ uVar23) >> 0x12 & 7;
  lVar27 = (int)local_1dc + local_148;
  lVar25 = (int)((((uVar7 * 8 | uVar7) << 0x12 ^ uVar23) << 8 | (uVar13 & 0xfffff) >> 0xc) +
                0x580553d9) + local_140;
  local_1dc = 0;
  local_1b0 = 0;
  uVar5 = (ulonglong)((uint)(*(ulonglong *)(lVar25 + 4) >> 0x1f) & 0x6480182) + 0x3baff9b9724c3835 +
          *(longlong *)(lVar27 + 4);
  uVar5 = (uVar5 >> 1 | (ulonglong)((uVar5 & 1) != 0) << 0x3f) + 0x4dfc870124caedd7;
  uVar5 = (uVar5 >> 2 & 0xcccccccccccccccc | uVar5 << 0x3e |
          uVar5 * 4 & 0x3333333333333333 | uVar5 >> 0x3e) + 0x2eb8058cf663f5a1;
  uVar5 = ((uVar5 * 0x10 | uVar5 >> 0x3c) & 0xe1e1e1e1e1e1e1e1 |
          (uVar5 >> 4 | uVar5 << 0x3c) & 0x1e1e1e1e1e1e1e1e) ^ 0xe4f3ca72446d143d;
  uVar5 = (uVar5 << 5 | uVar5 >> 0x3b) + 0x9d0a0a2101c272d2;
  *(ulonglong *)(lVar27 + 4) = uVar5;
  plVar10 = (longlong *)(lVar25 + 4);
  *plVar10 = *plVar10 + (ulonglong)((uint)(uVar5 >> 0x11) & 0x3a309011);
  local_190 = (uint)(*(ulonglong *)(lVar27 + 4) >> 7) & 0x7fffffff;
  local_1c8 = (uint)(*(ulonglong *)(lVar27 + 4) >> 0x1e) ^ 0x9709b029;
  local_1e8 = (undefined *)(*(ulonglong *)(lVar27 + 4) ^ 0xbed04c79e4ca78a3);
  uVar4 = FUN_18048a800(local_138,local_180);
  FUN_180485db0(&p_Var32[3].LockSemaphore,uVar4);
  FUN_18047c160(local_138);
  p_Var32 = local_180;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = FUN_18048a8d0(local_130,local_180);
  FUN_180485db0(&p_Var32[3].SpinCount,uVar4);
  FUN_18047c160(local_130);
  local_e0 = 0x7313be1f;
  local_dc = 0x9d1f0082;
  uVar7 = (uint)((ulonglong)local_1e8 >> 0x20);
  uVar30 = (uVar7 ^ 0x84296ecf) & 0x66666666 ^ uVar7;
  uVar26 = (uVar7 ^ 0x84296ecf) & 0x99999999 ^ uVar7;
  uVar13 = (uVar26 >> 2 ^ uVar26) >> 4 & 1;
  uVar23 = (local_1c8 >> 0x11 ^ local_1c8) & 0x3fff;
  uVar14 = ((uint)((ulonglong)local_1e8 >> 0xc) & 0xfffff ^ (uint)local_1e8) >> 9 & 0x7f;
  uVar24 = (uVar30 >> 0xb ^ uVar30) & 3;
  uVar26 = ~((uVar13 * 4 | uVar13) << 4 ^ uVar26);
  uVar13 = ~((uVar23 << 0x11 | uVar23) ^ local_1c8);
  uVar24 = ~((uVar24 << 0xb | uVar24) ^ uVar30);
  uVar23 = ~((uVar14 << 0xc | uVar14) << 9 ^ (uint)local_1e8) ^ uVar13;
  uVar29 = uVar23 & 0xe074d180 ^ uVar13;
  uVar5 = (ulonglong)uVar29;
  uVar13 = uVar23 & 0x1f8b2e7f ^ uVar13;
  uVar14 = (uVar26 >> 0x11 ^ uVar26) & 0xff;
  uVar30 = (uVar29 >> 6 ^ uVar29) >> 0x11 & 0xf;
  uVar23 = (uVar13 >> 6 ^ uVar13) & 0xf;
  uVar13 = (uVar23 << 6 | uVar23) ^ uVar13;
  uVar23 = (uVar24 >> 0x11 ^ uVar24) & 0x1ff;
  uVar23 = uVar24 ^ (uVar23 << 0x11 | uVar23) ^ uVar13;
  uVar24 = uVar23 & 0x5b705ebb ^ uVar13;
  uVar14 = uVar24 ^ uVar26 ^ (uVar14 << 0x11 | uVar14);
  local_18c[0] = ~(uVar14 & 0xaaaaaaaa ^ uVar24);
  puVar17 = (undefined4 *)(ulonglong)local_18c[0];
  local_ec = ~((uVar30 << 6 | uVar30) << 0x11 ^ uVar29);
  local_1a0 = CONCAT44(local_1a0._4_4_,local_ec);
  local_e4 = ~(uVar23 & 0xa48fa144 ^ uVar13);
  uVar13 = ~(uVar14 & 0x55555555 ^ uVar24) ^ local_e4;
  local_e8 = uVar13 & 0x7f807f80 ^ local_e4;
  local_1b8 = (undefined4 *)CONCAT44(local_1b8._4_4_,local_e8);
  local_e4 = uVar13 & 0x807f807f ^ local_e4;
  local_1e8 = (undefined *)CONCAT44(uVar7,local_e4);
  local_f0 = local_18c[0];
  if (local_1d8 == 0) {
LAB_181204de3:
    *(undefined4 *)(puVar19 + 9) = uVar3;
    *(uint *)(puVar19 + 9) = uVar9;
    do {
      puVar6 = puVar19 + 9;
      puVar19[-1] = 0x181204e0b;
      uVar3 = FUN_18134e562(&LAB_18113e030);
      *(undefined4 *)puVar6 = uVar3;
                    /* WARNING: Call to offcut address within same function */
      puVar19[-1] = 0x181204e28;
      func_0x000181204ef5();
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar9 = *(uint *)(puVar19 + 9);
    puVar19[-1] = 0x181204e5c;
    uVar4 = FUN_18048a920(local_118,p_Var32);
    puVar19[-1] = 0x181204e6b;
    FUN_180485db0(p_Var32 + 4,uVar4);
    puVar19[-1] = 0x181204e74;
    FUN_18047c160(local_118);
    uVar9 = (~uVar9 + 0x8bc561d4 >> 0x1f | (~uVar9 + 0x8bc561d4) * 2) + 0x3e290af6;
    uVar9 = uVar9 >> 0x10 | uVar9 * 0x10000;
    if (p_Var32[2].SpinCount == 0) {
      lVar33 = 0;
    }
    else {
      lVar33 = p_Var32[2].SpinCount + 8;
    }
    lVar25 = 0;
    local_168 = *(undefined8 *)((longlong)p_Var32[3].OwningThread + 8);
    puVar19[-1] = 0x181204ea9;
    FUN_1804951c0();
    uVar4 = local_168;
    puVar19[-1] = 0x181204eb9;
    FUN_1811f8160(p_Var32,uVar4,lVar33);
    puVar19[-1] = 0x181204ec3;
    FUN_18124a7e0(&local_168);
    do {
      puVar16 = local_f8;
      puVar12 = (uint *)((longlong)puVar19 + 0x5c);
      puVar19[-1] = 0x181204ede;
      FUN_181203e50();
      puVar19[-1] = uVar5;
      uVar4 = rdtsc();
      uVar7 = (int)uVar4 + (int)((ulonglong)uVar4 >> 0x20);
      *puVar16 = uVar7;
      uVar5 = (ulonglong)uVar7 * -0x1ff - 0x5b3ef5a3;
      uVar5 = ((uVar5 >> 9) - 0x300c9bb8) + uVar5 * 4;
      uVar5 = (uVar5 * 0x400 | uVar5 >> 0x36) * 0x1001 >> 5;
      uVar5 = uVar5 ^ uVar5 * 0x8000 - 0x48481e2b;
      uVar5 = (uVar5 ^ uVar5 * 3 >> 7) * -0x7ff - 0x2bb2843b;
      if ((undefined1 *)0xffffffff859dc6fa < &stack0x00000000) {
        FUN_181205015();
        return;
      }
      *puVar12 = (int)uVar5 + (int)(uVar5 >> 5) & 0x7fffffff;
      uVar5 = puVar19[-1];
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar7 = *(uint *)((longlong)puVar19 + 0x5c);
    *(uint *)((longlong)puVar19 + 0x5c) = uVar7 ^ *(uint *)(puVar19 + 0xf);
    piVar34 = (int *)register0x00000020;
    if ((uVar7 ^ *(uint *)(puVar19 + 0xf)) < 0x4444447) {
      uStack_90 = *(undefined4 *)((longlong)puVar19 + 0x7c);
      uStack_8c = *(undefined4 *)(puVar19 + 0xd);
      uStack_88 = *(undefined4 *)(puVar19 + 10);
      uStack_84 = *(undefined4 *)(puVar19 + 4);
      do {
        plVar10 = &lStack_110;
        puVar6 = puVar19 + 0xc;
                    /* WARNING: Call to offcut address within same function */
        puVar19[-1] = 0x18120509e;
        func_0x000181204a85();
        puVar19[-1] = 0x1812050a3;
        lVar27 = puVar19[-1];
        *(undefined4 *)puVar6 = 0x6ecd5091;
        *plVar10 = lVar27;
        uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      uVar7 = (*(uint *)(puVar19 + 0xc) << 4 | *(uint *)(puVar19 + 0xc) >> 0x1c) + 0x914f558b;
      uVar7 = (uVar7 >> 0x1f | uVar7 * 2) + 0x54b8b08f;
      iVar8 = (uVar7 >> 6 | uVar7 * 0x4000000) + 0xba601b56;
      *(int *)(puVar19 + 0xc) = iVar8;
      puVar19[-1] = 0x181205113;
      (*(code *)(iVar8 + lStack_110))(&uStack_90,auStack_60);
      do {
        puVar22 = (undefined4 *)((longlong)puVar19 + 0x3c);
                    /* WARNING: Call to offcut address within same function */
        puVar19[-1] = 0x18120511d;
        func_0x000181204236();
        *puVar22 = 0xc2c879bf;
        uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      uVar7 = (*(int *)((longlong)puVar19 + 0x3c) + 0x6b6aa9U >> 0x12 |
              (*(int *)((longlong)puVar19 + 0x3c) + 0x6b6aa9U) * 0x4000) ^ 0x42bee0a9;
      uVar7 = (uVar7 << 0x1c | uVar7 >> 4) + 0x2ffa1d7f;
      uVar7 = (uVar7 >> 0x14 | uVar7 * 0x1000) ^ 0xd8e961ca;
      *(uint *)((longlong)puVar19 + 0x3c) = (uVar7 >> 0x13 | uVar7 << 0xd) + 0x42302c84;
      puVar17 = (undefined4 *)(ulonglong)uStack_54;
      iVar8 = 7;
      do {
        uVar7 = (uStack_58 >> 0xc ^ uStack_58) >> 2 & 0xfff;
        uVar14 = (uint)puVar17;
        uVar13 = ((uint)((ulonglong)puVar17 >> 5) ^ uVar14) >> 8 & 1;
        uStack_58 = (uVar7 << 0xc | uVar7) << 2 ^ uStack_58;
        uVar23 = (uStack_58 >> 0x18 | uStack_58 << 8) + 0x6e4157a7;
        uVar14 = (uVar14 << 0x1c | ((uVar13 << 5 | uVar13) << 8 ^ uVar14) >> 4) + 0x20a786ca;
        uVar7 = (uVar23 >> 0xb ^ uVar23) >> 9 & 0x3ff;
        uVar13 = uVar23 ^ (uVar7 << 0xb | uVar7) << 9;
        uVar7 = (uVar14 >> 0x11 ^ uVar14) >> 0xb & 3;
        uVar14 = uVar14 ^ (uVar7 << 0x11 | uVar7) << 0xb;
        uVar7 = (uVar13 << 4 | uVar13 >> 0x1c) & 0x87878787 |
                (uVar13 >> 4 | uVar23 * 0x10000000) & 0x78787878;
        uVar13 = (uVar14 >> 0x10 | uVar14 << 0x10) & 0xa3635c9c |
                 (uVar14 << 0x10 | uVar14 >> 0x10) & 0x5c9ca363;
        uVar13 = (uVar13 << 0x12 | uVar13 >> 0xe) + 0x607d5440;
        uVar7 = uVar13 ^ (uVar7 << 0x12 | uVar7 >> 0xe) + 0x270a0bab;
        uStack_58 = uVar7 & 0x3c3c3c3c ^ uVar13;
        uVar7 = uVar7 & 0xc3c3c3c3 ^ uVar13 ^ uStack_58;
        uVar13 = uVar7 & 0x8cbe5e76 ^ uStack_58;
        puVar17 = (undefined4 *)(ulonglong)uVar13;
        uStack_58 = uVar7 & 0x7341a189 ^ uStack_58;
        iVar8 = iVar8 + -1;
      } while (-1 < iVar8);
      iVar8 = (uStack_58 + 0xfacf38d9 >> 0x15 | (uStack_58 + 0xfacf38d9) * 0x800) + 0x58b3008b;
      uVar7 = (iVar8 * 2 | (uint)(iVar8 < 0)) ^ 0xd75fe617;
      uVar7 = ~(uVar7 << 0x1a | uVar7 >> 6) + 0x1325155;
      if (((uVar7 * 0x400 | uVar7 >> 0x16) ^ *(uint *)((longlong)puVar19 + 0x3c)) + uVar13 !=
          *(int *)(puVar19 + 8)) {
        do {
          puVar19[-1] = piVar34;
          puVar19[-2] = plVar31;
          local_108 = FUN_180bc28a0;
          plVar31 = (longlong *)puVar19[-2];
          piVar34 = (int *)puVar19[-1];
          uVar7 = (*piVar34 + 1) * *piVar34 & 0x80000001;
          if ((int)uVar7 < 0) {
            uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar7 != 0);
        puVar19[-1] = 0x181205340;
        FUN_180bc28a0();
        do {
          puVar19[-1] = 0x181205345;
          FUN_181203ea5();
          puVar19[-1] = 0x181205369;
          FUN_181207388();
          uVar7 = (*piVar34 + 1) * *piVar34 & 0x80000001;
          if ((int)uVar7 < 0) {
            uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar7 != 0);
      }
    }
    uVar9 = uVar9 & *(uint *)((longlong)puVar19 + 100) |
            ~*(uint *)((longlong)puVar19 + 100) & ~uVar9;
    UVar1 = p_Var32[2].SpinCount;
    if (uVar9 == uVar9 >> 7) {
      if (UVar1 != 0) {
        lVar25 = UVar1 + 8;
      }
      puVar19[-1] = 0x1812053bd;
      uVar4 = FUN_1804730e0(p_Var32 + 4);
      puVar19[-1] = 0x1812053c9;
      uVar4 = .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(uVar4,auStack_100);
      puVar19[-1] = 0x1812053d6;
      puVar6 = (undefined8 *)FUN_181245ff0(auStack_a8,uVar4);
      uVar4 = *puVar6;
      puVar19[-1] = 0x1812053e4;
      lVar33 = lVar25;
      FUN_1811f8160(p_Var32,uVar4);
      puVar19[-1] = 0x1812053ee;
      FUN_18124a7e0(auStack_100);
      do {
        puVar21 = (undefined1 *)puVar19;
        *(longlong *)(puVar21 + -8) = lVar25;
        *(LPCRITICAL_SECTION *)(puVar21 + -0x10) = p_Var32;
        *(longlong *)(puVar21 + -0x18) = lVar33;
        lVar27 = -(longlong)(int)local_18c[1];
        lVar33 = *(longlong *)(puVar21 + lVar27 + 0xac8);
        p_Var32 = *(LPCRITICAL_SECTION *)(puVar21 + lVar27 + 0xad0);
        lVar25 = *(longlong *)(puVar21 + lVar27 + 0xad8);
        uVar9 = (*piVar34 + 1) * *piVar34 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
        puVar19 = (undefined8 *)(puVar21 + lVar27 + 0xae0);
      } while (uVar9 != 0);
      *(undefined **)(puVar21 + lVar27 + 0xad8) = &UNK_181205618;
    }
    if (UVar1 != 0) {
      lVar25 = UVar1 + 8;
    }
    puVar19[-1] = 0x181205520;
    uVar4 = FUN_1804730e0(p_Var32 + 4);
    puVar19[-1] = 0x18120552c;
    uVar4 = .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(uVar4,&local_160);
    puVar19[-1] = 0x181205539;
    puVar6 = (undefined8 *)FUN_181245ff0(auStack_a0,uVar4);
    uVar4 = *puVar6;
    puVar19[-1] = 0x181205547;
    FUN_1811f8160(p_Var32);
    puVar19[-1] = 0x181205551;
    FUN_18124a7e0(&local_160);
    lVar27 = (longlong)(int)local_18c[2];
    puVar19[-1] = uVar4;
    puVar19[-2] = lVar25;
    puVar19[-3] = lVar33;
    thunk_FUN_1805a9280(lVar27,thunk_FUN_1805a9280,0x181205577,~(~(ulonglong)puVar17 + 1) + 1);
    return;
  }
LAB_181204b10:
  puVar17 = (undefined4 *)((longlong)local_128 + lVar33);
  puVar18 = puVar17;
  if ((plVar31 != (longlong *)0x0) && (lVar25 = *plVar31, -1 < lVar25)) {
    local_120 = 0x2621fc0;
    do {
      if (puVar17 < IMAGE_DOS_HEADER_180000000.e_magic + lVar25 + 8) {
        if (-1 < lVar25) {
          plVar10 = (longlong *)(lVar25 + 0x180000000);
          if (plVar10 < puVar17 + 1) {
            local_70[0] = *puVar17;
            plVar28 = plVar31;
            goto LAB_181204b95;
          }
        }
        break;
      }
      plVar31 = plVar31 + 1;
      lVar25 = *plVar31;
    } while (-1 < lVar25);
  }
  goto LAB_181204bbc;
  while (plVar10 = (longlong *)(lVar25 + 0x180000000), plVar10 < puVar17 + 1) {
LAB_181204b95:
    *(longlong *)(&stack0x00017fffff90 + (lVar25 - (longlong)puVar17)) = *plVar10 + -0x180000000;
    plVar28 = plVar28 + 1;
    lVar25 = *plVar28;
    puVar18 = local_70;
    if (lVar25 < 0) break;
  }
LAB_181204bbc:
  puVar22 = (undefined4 *)(ulonglong)((int)puVar22 * uVar9);
  uVar7 = uVar9 & 0x1dff;
  uVar5 = (ulonglong)uVar7;
  puVar19 = puVar6;
  if ((int)((uVar7 - 1) * uVar7 & 1) >> ((byte)lVar33 & 0x1f) != 0) {
    do {
      puVar22 = (undefined4 *)(ulonglong)((uint)puVar22 | uVar9);
      lVar33 = lVar33 + 4;
    } while ((int)((uVar7 - 1) * uVar7 & 1) >> ((byte)lVar33 & 0x1f) != 0);
  }
LAB_181204c40:
  puVar17 = (undefined4 *)((longlong)puVar19 + 0x74);
  uVar11 = 0x583c;
  puVar19[-1] = 0x181204c55;
  puVar15 = puVar18;
  FUN_181203e50(0x583c,puVar18,0);
  do {
    if ((uVar11 & 0xc300) == 0) goto LAB_181204c77;
    if ((uVar11 & 0xc300) == 0) goto LAB_181204c77;
    if ((uVar11 & 0xc3) != 0) goto LAB_181204c77;
    while ((uVar11 & 0xc300) != 0) {
      if ((uVar11 & 0xc300) != 0) goto LAB_181204c84;
    }
  } while( true );
LAB_181204c84:
  do {
    uVar2 = uVar11 & 0xc300;
    while (uVar2 != 0) {
      *(undefined4 **)((longlong)puVar19 + -8) = puVar22;
      puVar19 = (undefined8 *)((longlong)puVar19 + -8);
      puVar22 = puVar15;
      uVar2 = uVar11 & 0xc3;
    }
LAB_181204c77:
  } while ((uVar11 & 0xc3) != 0);
  do {
    puVar20 = puVar19;
    puVar20[-1] = 0x181204cce;
    uVar3 = FUN_1813b2163();
    *puVar17 = uVar3;
    uVar5 = (~uVar5 + 1 ^ 0xffffffffffffffff) + 1;
    puVar22 = (undefined4 *)*puVar20;
    puVar19 = puVar20 + 1;
    if (((uVar11 & 0xc300) == 0) || ((uVar11 & 0xc300) == 0)) goto LAB_181204c77;
  } while ((uVar11 & 0xc300) == 0);
  uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
  if ((int)uVar7 < 0) {
    uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
  }
  if (uVar7 != 0) goto LAB_181204c40;
  uVar9 = (uVar9 + *(int *)((longlong)puVar20 + 0x7c)) * *(int *)(puVar20 + 6);
  if (((ulonglong)puVar22 & 0x3f) != 0) {
    puVar22 = (undefined4 *)(ulonglong)((uint)puVar22 | uVar9);
  }
  uVar9 = uVar9 ^ uVar9 >> 0x10;
  if (uVar9 + (int)puVar22 < 0x28) {
    puVar22 = (undefined4 *)(ulonglong)((int)puVar22 + 0x8f051e07);
  }
  uVar7 = uVar9 & 0x1bf;
  iVar8 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  if ((((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 & 0xc0000000U) != 0) {
    iVar8 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
    do {
      puVar22 = (undefined4 *)
                (ulonglong)((int)puVar22 * ((uint)((ulonglong)puVar22 >> 9) & 0x7fffff));
      lVar33 = lVar33 + 4;
    } while (((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e != 0);
  }
  uVar3 = SUB84(puVar22,0);
  lVar33 = lVar33 + 4;
  puVar6 = puVar19;
  p_Var32 = local_180;
  if (lVar33 == puVar20[7]) goto LAB_181204de3;
  goto LAB_181204b10;
}



############ FUN_ 1805bd330 size=56 ############

undefined8 FUN_1805bd330(longlong param_1)

{
  undefined1 *puVar1;
  
  FUN_18113eab0();
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined8 *)(param_1 + 0x60) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x68)) {
    puVar1 = *(undefined1 **)(param_1 + 0x50);
    *puVar1 = 0;
    return CONCAT71((int7)((ulonglong)puVar1 >> 8),1);
  }
  *(undefined1 *)(param_1 + 0x50) = 0;
  return 1;
}



############ FUN_ 1805c0340 size=56 ############

undefined8 FUN_1805c0340(undefined8 param_1,longlong param_2)

{
  undefined1 *puVar1;
  
  FUN_18113eab0();
  *(undefined4 *)(param_2 + 8) = 0;
  *(undefined8 *)(param_2 + 0x60) = 0;
  if (0xf < *(ulonglong *)(param_2 + 0x68)) {
    puVar1 = *(undefined1 **)(param_2 + 0x50);
    *puVar1 = 0;
    return CONCAT71((int7)((ulonglong)puVar1 >> 8),1);
  }
  *(undefined1 *)(param_2 + 0x50) = 0;
  return 1;
}



############ FUN_ 181a04090 size=1882 ############

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

undefined8 FUN_181a04090(undefined8 param_1,undefined8 param_2)

{
  ulonglong uVar1;
  undefined8 uVar2;
  code **ppcVar3;
  uint *puVar4;
  uint uVar5;
  undefined4 *puVar6;
  ulonglong uVar7;
  longlong *plVar8;
  uint uVar9;
  int unaff_retaddr;
  undefined1 auStack_168 [36];
  uint local_144;
  undefined *local_140;
  ulonglong local_138;
  uint local_130;
  uint local_128;
  undefined4 local_124;
  undefined8 local_110;
  undefined *local_108;
  undefined4 local_100;
  uint local_fc;
  uint local_f8;
  undefined4 local_f4;
  code *local_f0;
  undefined *local_e8;
  undefined8 local_c8;
  undefined4 local_c0;
  undefined4 local_bc;
  longlong local_b0 [4];
  undefined8 local_90;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_168;
  uVar9 = (uint)&stack0x00000000 & 0x2ff;
  uVar9 = (uVar9 * uVar9 * 0x10 + 4) % 0x13;
  local_f8 = ((int)(-uVar9 | uVar9) >> 0x1f) * -0x8644 ^ 0x8ac4;
  local_f4 = 0xd50;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_108 = &DAT_182111a10;
  local_140 = &DAT_1821259e8;
  local_138 = 0x794dcad6bd74d94c;
  local_110 = 0xbd74d94c;
  do {
    uVar2 = rdtsc();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x7a1400af;
  local_130 = (uVar9 >> 0x18 ^ uVar9) * -0x3d4d3595;
  local_c8 = param_2;
  local_90 = param_1;
  if (local_130 < 0x7fffffff) {
    local_f0 = (code *)0x0;
    do {
      ppcVar3 = &local_f0;
                    /* WARNING: Call to offcut address within same function */
      func_0x000181a04726(ppcVar3,&local_f0);
      *ppcVar3 = FUN_1813bba80;
      FUN_181a05e83();
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar1 = (*local_f0)();
    if (1 < uVar1) {
      FUN_18113eab0();
    }
  }
  do {
    plVar8 = local_b0;
    puVar6 = &local_c0;
    puVar4 = &local_144;
    func_0x000181a03edb();
    *puVar4 = 0xd588f26c;
    *puVar6 = 0x16;
    *plVar8 = 0x181a04377;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = ((local_144 >> 8 | local_144 << 0x18) & 0xa45ba45b |
          (local_144 << 8 | local_144 >> 0x18) & 0x5ba45ba4) + 0x9528e3ad;
  uVar5 = ((uVar9 * 0x10 | uVar9 >> 0x1c) & 0xe1e1e1e1 |
          (uVar9 >> 4 | uVar9 * 0x10000000) & 0x1e1e1e1e) ^ 0x21cc3f9e;
  uVar9 = (uVar5 >> 0xb ^ uVar5) >> 2 & 0x3ff;
  uVar5 = (uVar9 << 0xb | uVar9) << 2 ^ uVar5;
  uVar9 = (uVar5 << 0x15 | uVar5 >> 0xb) ^ 0xc77e6d0d;
  do {
    local_bc = 0x59;
    local_b0[1] = 0x181a04447;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_b0[0] = (int)((uVar9 >> 4 & 0xf0f0f0f0 | uVar9 << 0x1c |
                      (uVar9 & 0xf0f0f0) << 4 | uVar9 >> 0x1c) ^ 0xab8cb152) + local_b0[0];
  local_144 = 0;
  local_124 = 0;
  *(longlong *)(local_b0[0] + 4) =
       *(longlong *)(local_b0[0] + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x00b625aa_mfort6317_ >> 0xd) & 0x1148f29);
  uVar1 = *(ulonglong *)(local_b0[0] + 4);
  uVar9 = (uint)((uVar1 >> 0x10 ^ uVar1) >> 9) & 0x1fff;
  uVar7 = ((ulonglong)uVar9 << 0x10 | (ulonglong)uVar9) << 9 ^ uVar1 ^ 0x1ad82cde25fa3de9;
  uVar9 = (uint)((uVar7 >> 0x1d ^ uVar7) >> 1) & 0x1fffffff;
  uVar7 = ((ulonglong)uVar9 << 0x1d | (ulonglong)uVar9) * 2 ^ uVar7;
  uVar1 = uVar7 >> 2 & 0xcccccccccccccccc | uVar7 << 0x3e |
          (uVar7 & 0xccccccccccccccc) << 2 | uVar1 >> 0x3e;
  uVar1 = ((uVar1 >> 0x10 | uVar1 << 0x30) & 0x8aab75548aab7554 |
          (uVar1 << 0x10 | uVar1 >> 0x30) & 0x75548aab75548aab) ^ 0xa6729cab8f38677b;
  uVar1 = (uVar1 & 0x3333333333333333) << 2 | uVar1 >> 2 & 0x3333333333333333;
  uVar7 = uVar1 >> 0x18 | uVar1 << 0x28;
  uVar1 = (uVar7 << 0x10 | (uVar1 & 0xffffff) >> 8) & 0x87ae785187ae7851 |
          (uVar7 >> 0x10 | (uVar1 >> 0x18) << 0x30) & 0x785187ae785187ae;
  *(ulonglong *)(local_b0[0] + 4) = uVar1;
  dvs_0x00b625aa_mfort6317_ =
       (uint *)((longlong)dvs_0x00b625aa_mfort6317_ + (uVar1 >> 0x19 & 0xe0489005));
  local_fc = (uint)(*(ulonglong *)(local_b0[0] + 4) >> 7) & 0x7fffffff;
  local_128 = (uint)(*(ulonglong *)(local_b0[0] + 4) >> 0x14) ^ 0xf1bcfbbf;
  local_138 = *(ulonglong *)(local_b0[0] + 4) ^ 0xcf265b0a6c3aa52d;
  local_e8 = local_108;
  local_108 = (undefined *)((longlong)local_140 - (longlong)local_108);
  do {
    local_100 = 0xe30439a5;
    FUN_181a05ca9();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar2 = FUN_181a048d3();
  return uVar2;
}



############ FUN_ 1813de690 size=1102 ############

/* WARNING: Removing unreachable block (ram,0x0001813de7cc) */
/* WARNING: Removing unreachable block (ram,0x0001813de7ac) */
/* WARNING: Removing unreachable block (ram,0x0001813de80d) */

void FUN_1813de690(undefined8 *param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  code **ppcVar4;
  longlong unaff_RBX;
  int unaff_retaddr;
  undefined1 auStack_158 [32];
  undefined4 local_138;
  uint local_110;
  undefined4 local_fc;
  undefined4 local_f0;
  undefined8 *local_e8;
  undefined4 local_e0;
  code *local_d8 [9];
  undefined8 local_90;
  ulonglong local_30;
  
  local_90 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_158;
  *param_1 = Soothe2AudioProcessorEditor::vftable;
  param_1[0x22] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x23] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x24] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x25] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x28] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x2b] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x2c] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x112] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x115] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x116] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x117] = Soothe2AudioProcessorEditor::vftable;
  local_fc = 0xa70;
  local_e0 = 0x460;
  local_e8 = param_1;
  do {
    FUN_1813dee5e(0x5e24);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    local_f0 = 0xe36c0b68;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    FUN_1813dfc04(0x5e24);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_138 = 0x811c9e07;
  do {
    uVar1 = rdtsc();
    local_110 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_1813deb39();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_110 = (local_110 * -0x166aa42f >> 0x18 ^ local_110 * -0x166aa42f) * -0x13ac12ab;
  if (local_110 < 0x1861861f) {
    local_d8[0] = (code *)0x0;
    do {
      ppcVar4 = local_d8;
      FUN_1813ddba8(ppcVar4,local_d8);
      *ppcVar4 = FUN_18141db20;
      FUN_1813dcb88();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_d8[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  FUN_181341510(param_1,param_1[0x120]);
  FUN_180568380(param_1[0x2f],param_1 + 0x115);
  FUN_1813df47a();
                    /* WARNING: Call to offcut address within same function */
  func_0x0001813deb0b();
  *(char *)(unaff_RBX + 0x4c) = *(char *)(unaff_RBX + 0x4c) + '\x01';
  FUN_1813deb3a();
  return;
}



############ FUN_ 1811f09e2 size=3683 ############

/* WARNING: Instruction at (ram,0x0001811f0dbc) overlaps instruction at (ram,0x0001811f0dbb)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001811f0dbb) */
/* WARNING: Removing unreachable block (ram,0x0001811f0d06) */
/* WARNING: Removing unreachable block (ram,0x0001811f0d53) */
/* WARNING: Removing unreachable block (ram,0x0001811f191b) */
/* WARNING: Removing unreachable block (ram,0x0001811f1966) */
/* WARNING: Removing unreachable block (ram,0x0001811f1983) */
/* WARNING: Removing unreachable block (ram,0x0001811f198a) */
/* WARNING: Removing unreachable block (ram,0x0001811f1992) */

void FUN_1811f09e2(void)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 uVar3;
  byte bVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  uint uVar12;
  undefined4 *puVar13;
  ulonglong uVar14;
  longlong unaff_RBX;
  longlong unaff_RBP;
  int unaff_ESI;
  longlong unaff_RDI;
  undefined8 *puVar15;
  longlong lVar16;
  uint uVar17;
  int iVar18;
  longlong lVar19;
  uint uVar20;
  int *unaff_R12;
  uint unaff_R13D;
  uint unaff_R15D;
  char cVar21;
  char cVar22;
  uint local_res20;
  undefined8 in_stack_00000028;
  uint in_stack_00000048;
  uint uStack000000000000004c;
  undefined4 in_stack_00000050;
  uint in_stack_00000058;
  code *in_stack_00000068;
  undefined4 in_stack_00000078;
  
  while( true ) {
    uVar9 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    cVar22 = '\0';
    cVar21 = (int)uVar9 < 0;
    if (uVar9 == 0) break;
    FUN_1811f24ed(0x6320);
    if (cVar22 == cVar21) {
      FUN_1811f09e2();
      return;
    }
  }
  uVar9 = *(uint *)(unaff_RDI + 0x54 + unaff_RBX) ^ unaff_R15D >> 0x1c ^ unaff_R15D << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x58 + unaff_RBX) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x5c + unaff_RBX) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  do {
    FUN_1811f20c9(0x6320);
    uVar10 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = *(uint *)(unaff_RDI + 0x60 + unaff_RBX) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 100 + unaff_RBX) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  bVar4 = (byte)(unaff_RBX + 0x68) & 0x6f;
  uVar10 = *(uint *)(unaff_RDI + 0x68 + unaff_RBX) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = (((unaff_R13D & 0x11ff) + 1) * (unaff_R13D & 0x11ff) + 7) % 0x51 <<
          (bVar4 * bVar4 * (bVar4 + 1) * (bVar4 + 1) & 2);
  lVar19 = (((longlong)(((int)(-uVar9 | uVar9) >> 0x1f) * -0xfc0) ^ 0xec0U) - 0xfc) +
           unaff_RBX + 0x68;
  uVar9 = *(uint *)(unaff_RDI + lVar19) ^ uVar10 >> 0x1c ^ uVar10 << 4;
  uVar9 = *(uint *)(unaff_RDI + 4 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 8 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0xc + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x10 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x14 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x18 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x1c + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x20 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x24 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x28 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x2c + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x30 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x34 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x38 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x3c + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x40 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x44 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x48 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x4c + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0x50 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  bVar5 = (byte)(lVar19 + 0x54);
  bVar4 = bVar5 & 0xf;
  uVar10 = *(uint *)(unaff_RDI + 0x54 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = uVar10 & 0x5f;
  piVar1 = (int *)(unaff_RBP + 0x38);
  lVar19 = ((longlong)
            (int)(0xe587 - ((((uVar10 & 0x50ff) + 1) * (uVar10 & 0x50ff) & 0x80000001) <<
                           (bVar4 * bVar4 * (bVar4 + 1) * (bVar4 + 1) & 2))) ^ 0xe5b7U) +
           lVar19 + 0x54 +
           ((longlong)
            (int)(0x728d - ((uVar9 * uVar9 * (uVar9 + 1) * (uVar9 + 1) & 3) <<
                           ((bVar5 + 1) * bVar5 - 0x11 & 1))) ^ 0xffffffffffff8d59U);
  uVar9 = *(uint *)(unaff_RDI + lVar19) ^ uVar10 >> 0x1c ^ uVar10 << 4;
  do {
    uVar10 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = *(uint *)(unaff_RDI + 4 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 8 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = *(uint *)(unaff_RDI + 0xc + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar10 = ~(*(uint *)(unaff_RDI + 0x10 + lVar19) ^ uVar9 >> 0x1c ^ uVar9 << 4 ^ 0x7b8e4413);
  uVar9 = (uVar10 >> 7 ^ uVar10) >> 0x11 & 0x1f;
  uVar9 = ((uVar9 << 7 | uVar9) << 0x11 ^ uVar10) + 0xb49b4b5d;
  do {
    in_stack_00000078 = 0x56;
    *(undefined8 *)(unaff_RBP + -0x78) = 0x1811f0e68;
    uVar10 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  do {
    puVar15 = (undefined8 *)(unaff_RBP + -0x70);
    puVar13 = (undefined4 *)&stack0x0000007c;
    puVar11 = &stack0x00000048;
    FUN_1811ef1bb();
    *puVar11 = 0xddf04203;
    *puVar13 = 6;
    *puVar15 = 0x1811f0f38;
    uVar10 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = in_stack_00000048 >> 0xe;
  uVar6 = uVar10 | in_stack_00000048 << 0x12;
  lVar19 = *(longlong *)(unaff_RBP + -0x78);
  uVar7 = in_stack_00000048 & 0x3fff;
  in_stack_00000048 = 0;
  uVar10 = ((uVar6 << 4 | uVar7 >> 10) & 0xe1e1e1e1 | (uVar6 >> 4 | uVar10 << 0x1c) & 0x1e1e1e1e) +
           0x7b99e6c2;
  uVar10 = (uVar10 * 0x100 | uVar10 >> 0x18) & 0x8c738c73 |
           (uVar10 >> 8 | uVar10 * 0x1000000) & 0x738c738c;
  uVar6 = uVar10 ^ 0x3097e12e;
  uVar10 = uVar10 >> 0x1e;
  uVar7 = uVar6 >> 2 & 0xcccccccc | uVar6 << 0x1e | (uVar6 & 0xccccccc) << 2 | uVar10;
  uVar10 = ((uVar7 << 2 | uVar6 & 3) & 0x99999999 | (uVar7 >> 2 | uVar10 << 0x1e) & 0x66666666) ^
           0xeef7527b;
  lVar16 = ((longlong)(int)(uVar10 >> 2 | uVar10 << 0x1e) & 0xffffffff99999999U |
           (ulonglong)((uVar10 << 2 | uVar10 >> 0x1e) & 0x66666666)) +
           *(longlong *)(unaff_RBP + -0x70);
  uVar8 = (ulonglong)((uint)(*(ulonglong *)(lVar16 + 4) >> 0x17) & 0x1000044e) +
          *(longlong *)(lVar19 + 0x14312a0);
  uVar8 = (uVar8 * 0x10000 | uVar8 >> 0x30) + 0xc5f58291f7962502;
  uVar10 = (uint)((uVar8 >> 0x16 ^ uVar8) >> 10) & 0xfffff;
  uVar14 = ((ulonglong)uVar10 << 0x16 | (ulonglong)uVar10) << 10 ^ uVar8;
  uVar14 = ((uVar14 << 2 | uVar8 >> 0x3e) & 0x6666666666666666 |
           (uVar14 >> 2 | uVar8 << 0x3e) & 0x9999999999999999) + 0xd053e5366efe0752;
  uVar8 = (ulonglong)((uint)((uVar14 >> 0x1c ^ uVar14) >> 0xf) & 7);
  uVar20 = unaff_ESI + 0xd6c7eba2;
  uVar8 = ((uVar14 ^ (uVar8 << 0x1c | uVar8) << 0xf) >> 4 | uVar14 << 0x3c) + 0x7a300a86273f5f60;
  uVar10 = (uint)((uVar8 >> 0x17 ^ uVar8) >> 0x13) & 0x3ffff;
  uVar8 = ((ulonglong)uVar10 << 0x17 | (ulonglong)uVar10) << 0x13 ^ uVar8;
  *(ulonglong *)(lVar19 + 0x14312a0) = uVar8;
  plVar2 = (longlong *)(lVar16 + 4);
  *plVar2 = *plVar2 + (uVar8 >> 0xf & 0xf06a04c7);
  in_stack_00000058 = (uint)(*(ulonglong *)(lVar19 + 0x14312a0) >> 0x1a) & 0x7fffffff;
  uVar7 = (uint)(*(ulonglong *)(lVar19 + 0x14312a0) >> 0x19) ^ 0x6f9c6bbc;
  uVar8 = *(ulonglong *)(lVar19 + 0x14312a0) ^ 0x148e7259ab00450a;
  *(uint *)(unaff_RBP + -0x54) = uVar7;
  *(int *)(unaff_RBP + -0x50) = (int)uVar8;
  uVar10 = *(uint *)(unaff_RBP + -0x54);
  uVar12 = *(uint *)(unaff_RBP + -0x50) ^ uVar10;
  uVar17 = (int)(uVar8 >> 0x20) + 0x7bc739d3;
  uVar6 = (uVar12 & 0x6593f979 ^ uVar10) + 0x4ed1481b;
  uVar10 = (uVar12 & 0x9a6c0686 ^ uVar10) + 0xaef7aa14;
  uVar12 = (uVar6 * 0x100 | uVar6 >> 0x18) & 0x9a659a65 |
           (uVar6 >> 8 | uVar6 * 0x1000000) & 0x659a659a;
  uVar17 = uVar17 >> 2 & 0xcccccccc | uVar17 * 0x40000000 | uVar17 * 4 & 0x33333333 | uVar17 >> 0x1e
  ;
  uVar6 = ((uVar10 * 0x10000 | uVar10 >> 0x10) & 0xc73b38c4 |
          (uVar10 >> 0x10 | uVar10 * 0x10000) & 0x38c4c73b) ^ uVar12;
  uVar10 = uVar6 & 0x8a578475 ^ uVar12;
  uVar6 = uVar6 & 0x75a87b8a ^ uVar12 ^ uVar10;
  uVar12 = uVar6 & 0x44465b56 ^ uVar10;
  uVar10 = uVar6 & 0xbbb9a4a9 ^ uVar10;
  uVar12 = uVar12 >> 0x19 | uVar12 << 7;
  uVar17 = (uVar17 >> 10 | uVar17 << 0x16) ^ uVar12;
  uVar6 = uVar17 & 0xddffbe9c ^ uVar12;
  uVar12 = uVar17 & 0x22004163 ^ uVar12 ^ uVar6;
  uVar17 = (uVar20 * 0x10 | uVar20 >> 0x1c) & 0x96969696 |
           (uVar20 >> 4 | uVar20 * 0x10000000) & 0x69696969;
  uVar10 = (uVar10 >> 0x1f | uVar10 << 1) ^ 0xea2cbcd1;
  do {
    uVar3 = rdtsc();
    FUN_1811efc6f();
    uVar20 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
    if ((int)uVar20 < 0) {
      uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar20 != 0);
  uVar20 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x73323d4e;
  if ((uVar20 >> 0x18 ^ uVar20) * -0x12aa166b < 0x6ac795) {
    do {
      in_stack_00000068 = FUN_1813f2240;
      uVar20 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
      if ((int)uVar20 < 0) {
        uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar20 != 0);
    uVar8 = FUN_1813f2240(0,0x52ad);
    if (1 < uVar8) {
      FUN_18113eab0();
    }
  }
  do {
    uVar3 = rdtsc();
    uVar20 = (int)uVar3 + (int)((ulonglong)uVar3 >> 0x20) * 4;
    *(uint *)(unaff_RBP + -0x80) = uVar20;
    uVar8 = (ulonglong)uVar20 ^ (ulonglong)uVar20 * 0x20 + 0x5a6a68c1;
    uVar8 = uVar8 * 0x4000 + ((uVar8 * 0x14000 >> 8) - 0x21947dd5);
    lVar19 = uVar8 - ((uVar8 >> 6) + 0x1441f5c6);
    uVar8 = lVar19 * 0x520000 | (ulonglong)(lVar19 * 0x148) >> 0x32;
    uVar8 = uVar8 - ((uVar8 >> 6) - 0x2a6d1d90);
    uVar20 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
    if ((int)uVar20 < 0) {
      uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar20 != 0);
  uStack000000000000004c = ((uint)uVar8 ^ (int)(uVar8 >> 10) + 0xcf8b987fU) >> 1 ^ in_stack_00000058
  ;
  if (uStack000000000000004c < 0x155b1) {
    do {
      FUN_1811f1c17();
      uVar20 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
      if ((int)uVar20 < 0) {
        uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar20 != 0);
    *(uint *)(unaff_RBP + -0x34) = uVar12 & 0x8ceffc62 ^ uVar6 ^ 0xaa7d1554;
    piVar1 = (int *)(unaff_RBP + 0x38);
    *(uint *)(unaff_RBP + -0x40) = (uVar17 >> 0x1d | uVar17 << 3) + 0xbc64070c;
    *(uint *)(unaff_RBP + -0x3c) = uVar10;
    *(uint *)(unaff_RBP + -0x38) = (uVar12 & 0x7310039d ^ uVar6) + 0x6bb1bcf9;
    do {
      *(undefined8 *)(unaff_RBP + -0x68) = 0x1811f1585;
      uVar6 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    in_stack_00000050 = 0xffa567fb;
    (*(code *)(*(longlong *)(unaff_RBP + -0x68) + -0x5a9805))(unaff_RBP + -0x40,unaff_RBP + -0x28);
    uVar6 = *(uint *)(unaff_RBP + -0x10);
    iVar18 = 7;
    uVar12 = *(uint *)(unaff_RBP + -0xc);
    do {
      uVar17 = ((uVar6 << 4 | uVar6 >> 0x1c) & 0xb4b4b4b4 |
               (uVar6 >> 4 | uVar6 << 0x1c) & 0x4b4b4b4b) + 0xedf66992;
      uVar12 = ((uVar12 >> 8 | uVar12 << 0x18) & 0xfa05fa05 |
               (uVar12 << 8 | uVar12 >> 0x18) & 0x5fa05fa) + 0x703d2ee4;
      uVar6 = uVar17 >> 0xc;
      uVar12 = (uVar12 >> 0x1d | uVar12 * 8) + 0x5f26144;
      uVar17 = (((uVar6 | uVar17 * 0x100000) ^ 0x2677a938) >> 3 | uVar6 << 0x1d) + 0x70f6a640;
      uVar12 = (uVar12 * 0x8000 | uVar12 >> 0x11) + 0x191d2650;
      uVar20 = uVar17 >> 0x17 | uVar17 * 0x200;
      uVar6 = uVar12 >> 0xc;
      uVar12 = uVar12 * 0x100000 | uVar6;
      uVar17 = (uVar20 >> 8 | (uVar17 >> 0x17) << 0x18) & 0xa857a857 |
               (uVar20 << 8 | (uVar17 & 0x7fffff) >> 0xf) & 0x57a857a8;
      uVar12 = (uVar6 << 0x10 | uVar12 >> 0x10) & 0xd65429ab |
               (uVar12 >> 0x10 | uVar6 << 0x10) & 0x29abd654;
      uVar6 = uVar17 >> 6 | uVar17 << 0x1a;
      uVar12 = uVar12 << 0x16 | uVar12 >> 10;
      iVar18 = iVar18 + -1;
    } while (-1 < iVar18);
    uVar6 = ~(uVar6 + 0xc568d382 >> 0x11 | (uVar6 + 0xc568d382) * 0x8000) ^ 0x52a4ae77;
    uVar6 = ~(uVar6 << 0x1d | uVar6 >> 3);
    if ((~((uVar6 << 0xb | uVar6 >> 0x15) ^ 0xfc83b814) ^ 0x6b242769) + uVar12 != uVar7) {
      do {
        *(code **)(unaff_RBP + -0x60) = FUN_180bc2900;
        uVar7 = (*piVar1 + 1) * *piVar1 & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      (**(code **)(unaff_RBP + -0x60))();
      do {
        uVar7 = (*piVar1 + 1) * *piVar1 & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
    }
  }
  if (local_res20 != (uVar9 >> 8 | uVar9 * 0x1000000)) {
    thunk_FUN_1805a9280();
    return;
  }
  FUN_1811f193e((longlong)in_stack_00000028._4_4_,(ulonglong)uVar10 + 0x1811f18dc);
  return;
}



############ FUN_ 1811be290 size=4634 ############

/* WARNING: Instruction at (ram,0x0001811beccd) overlaps instruction at (ram,0x0001811becca)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001811bec7c) */
/* WARNING: Removing unreachable block (ram,0x0001811beccd) */
/* WARNING: Removing unreachable block (ram,0x0001811bec85) */

void FUN_1811be290(longlong param_1,undefined8 *param_2)

{
  longlong *plVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined1 *puVar4;
  int iVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  uint uVar13;
  code **ppcVar14;
  longlong lVar15;
  uint uVar16;
  longlong lVar17;
  uint *puVar18;
  uint *puVar19;
  undefined1 *puVar20;
  uint uVar21;
  longlong *plVar22;
  uint uVar23;
  uint uVar24;
  int *piVar25;
  uint uVar26;
  undefined4 uVar27;
  int unaff_retaddr;
  undefined1 auStack_158 [32];
  uint *local_138;
  int local_130;
  uint local_12c;
  uint local_128;
  uint local_124;
  undefined8 local_120;
  undefined *local_118;
  int local_110;
  uint local_10c;
  uint local_108;
  uint local_104;
  uint local_100;
  int local_fc;
  uint local_f8;
  code *local_f0;
  longlong local_e8;
  undefined8 *local_e0;
  undefined4 local_d8;
  undefined4 local_d4;
  longlong local_d0;
  longlong local_c8;
  undefined *local_c0;
  longlong local_b8;
  code *local_b0;
  uint local_a8;
  uint local_a4;
  uint local_a0;
  undefined8 local_90;
  int local_88;
  uint local_84;
  int local_80;
  uint local_7c;
  uint local_70;
  uint local_6c;
  ulonglong local_48;
  
  local_90 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_158;
  uVar10 = (uint)&stack0x00000000 & 0x37f;
  local_f8 = ((uVar10 + 2) * (uVar10 + 1) * uVar10) % 3 + 0xffea ^ 0xf77a;
  local_fc = 0xd00;
  local_120 = 0x100;
  local_138 = &DAT_181469714;
  local_118 = &DAT_181469814;
  uVar10 = 0xc5;
  lVar17 = 3;
  puVar18 = local_138;
  do {
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ *puVar18;
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[1];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[2];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[3];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[4];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[5];
    puVar18 = puVar18 + 6;
    lVar17 = lVar17 + -1;
  } while (lVar17 != 0);
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ *puVar18;
  iVar11 = (uVar10 & 0x1fff) * (uVar10 & 0x1fff) + 1;
  iVar11 = (iVar11 >> 4) + (iVar11 >> 1) + iVar11 * 0x24924924;
  puVar18 = (uint *)((((longlong)
                       (0 << ((byte)((iVar11 >> 0x1d) + -7 >> 0x1f) & (byte)(iVar11 >> 0x1d) & 0x1f)
                       ) ^ 0x604U) - 0x600) + (longlong)puVar18);
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ *puVar18;
  do {
    uVar2 = rdtsc();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x3d4d13ad;
  local_128 = (uVar12 >> 0x18 ^ uVar12) * -0x359413ad;
  local_e8 = param_1;
  local_e0 = param_2;
  local_c0 = local_118;
  if (local_128 < 0x449692) {
    local_f0 = (code *)0x0;
    do {
      ppcVar14 = &local_f0;
                    /* WARNING: Call to offcut address within same function */
      uVar27 = func_0x0001811beaae(ppcVar14,&local_f0);
      *ppcVar14 = FUN_18141db20;
      FUN_1811bd4f4(uVar27,0xfa49);
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar6 = (*local_f0)();
    if (1 < uVar6) {
      FUN_18113eab0();
    }
  }
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[1];
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[2];
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[3];
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[4];
  do {
    local_d8 = 0x76;
    local_d0 = 0x1811be6c9;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_130 = 0x1463ceb;
  do {
    plVar22 = &local_c8;
    local_110 = -0xd51a796;
    local_d4 = 0x22;
    local_c8 = 0x1811be787;
    FUN_1811bfb9d();
    puVar3 = local_e0;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = local_110 + 0x3109d89f;
  uVar13 = (uVar12 * 0x10000 | uVar12 >> 0x10) & 0xec1813e7 |
           (uVar12 >> 0x10 | uVar12 * 0x10000) & 0x13e7ec18;
  uVar13 = (uVar13 >> 2 | (uVar12 >> 0x10) << 0x1e) & 0x99999999 |
           (uVar13 << 2 | (uVar12 & 0xffff) >> 0xe) & 0x66666666;
  uVar12 = uVar13 >> 0xb;
  uVar13 = uVar12 | uVar13 << 0x15;
  uVar13 = ~((uVar13 >> 0x10 | uVar12 << 0x10) & 0x80f07f0f |
            (uVar12 << 0x10 | uVar13 >> 0x10) & 0x7f0f80f0);
  uVar12 = (uVar13 >> 0xb ^ uVar13) >> 4 & 0xff;
  lVar17 = (longlong)local_130;
  uVar6 = (longlong)(int)(uVar13 >> 0x1e | ((uVar12 << 0xb | uVar12) << 4 ^ uVar13) << 2) ^
          0xffffffffed18039c;
  local_130 = 0;
  local_110 = 0;
  plVar1 = (longlong *)(lVar17 + 4 + local_d0);
  *plVar1 = *plVar1 + (*(ulonglong *)(uVar6 + 4 + local_c8) >> 7 & 0xd24c7002);
  do {
    uVar2 = rdtsc();
    local_100 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar8 = (ulonglong)(local_100 >> 0xd) + (ulonglong)local_100 * 8;
    lVar7 = uVar8 - ((uVar8 >> 0xc | uVar8 << 0x34) - 0x7df0af06);
    uVar8 = lVar7 * 0x48200 | (ulonglong)(lVar7 * 0x1208) >> 0x3a;
    uVar8 = uVar8 ^ uVar8 * 0x2000 + 0x3c8d5d3;
    uVar8 = uVar8 - ((uVar8 >> 5) - 0x654e57b5);
    iVar11 = (int)(uVar8 >> 0xe);
    uVar12 = iVar11 + (iVar11 * 0x40 | (uint)(uVar8 >> 8) & 0x3f);
    plVar22 = (longlong *)((~(~(~(ulonglong)plVar22 + 1) + 1) + 1 ^ 0xffffffffffffffff) + 1);
    uVar12 = uVar12 ^ uVar12 * 0x200 + 0xbfb3b923;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  piVar25 = (int *)(lVar17 + 8 + local_d0);
  *piVar25 = *piVar25 + (uVar12 ^ 0x91181693);
  piVar25 = (int *)(lVar17 + 4 + local_d0);
  *piVar25 = *piVar25 + (uVar12 ^ 0x279d6ab0);
  uVar9 = (ulonglong)
          ((uint)((*(ulonglong *)(lVar17 + 4 + local_d0) >> 0x11 ^
                  *(ulonglong *)(lVar17 + 4 + local_d0)) >> 3) & 0x3ff);
  uVar8 = *(ulonglong *)(lVar17 + 4 + local_d0);
  uVar9 = (uVar9 << 0x11 | uVar9) << 3 ^ uVar8;
  uVar8 = (uVar9 >> 0x10 | uVar9 << 0x30) & 0xe47a1b85e47a1b85 |
          (uVar9 << 0x10 | uVar8 >> 0x30) & 0x1b85e47a1b85e47a;
  uVar8 = ((uVar8 & 0x3333333333333333) << 2 | uVar8 >> 2 & 0x3333333333333333) + 0xa19e4ad026cf7b8d
  ;
  uVar8 = (uVar8 * 0x10 | uVar8 >> 0x3c) & 0xc3c3c3c3c3c3c3c3 |
          (uVar8 >> 4 | uVar8 << 0x3c) & 0x3c3c3c3c3c3c3c3c;
  uVar8 = (uVar8 << 0x2b | uVar8 >> 0x15) + 0x123b50c37f31994;
  uVar9 = (uVar8 * 0x10000 | uVar8 >> 0x30) & 0xbf85407abf85407a |
          (uVar8 >> 0x10 | uVar8 << 0x30) & 0x407abf85407abf85;
  uVar8 = uVar9 >> 0xe;
  *(ulonglong *)(lVar17 + 4 + local_d0) = uVar8 | uVar9 << 0x32;
  plVar1 = (longlong *)(uVar6 + 4 + local_c8);
  *plVar1 = *plVar1 + ((uVar8 & 0x20828048400) >> 10);
  local_12c = (uint)(*(ulonglong *)(lVar17 + 4 + local_d0) >> 0x16) & 0x7fffffff;
  local_120 = CONCAT44(local_120._4_4_,(int)(*(ulonglong *)(lVar17 + 4 + local_d0) >> 3)) ^
              0xdb094346;
  local_118 = (undefined *)(*(ulonglong *)(lVar17 + 4 + local_d0) ^ 0x1974a4250ead95cd);
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[5];
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[6];
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[7];
  if (local_e0 != (undefined8 *)0x0) {
    FUN_180488690(local_e8 + 0x290,local_e0,plVar22);
  }
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[8];
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[9];
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[10];
  local_e0 = (undefined8 *)0xe017a5e5a06d52d6;
  local_138 = (uint *)CONCAT44(local_138._4_4_,0xa06d52d6);
  lVar17 = 0x11;
  puVar18 = puVar18 + 0xb;
  do {
    puVar19 = puVar18;
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ *puVar19;
    lVar17 = lVar17 + -1;
    puVar18 = puVar19 + 1;
  } while (lVar17 != 0);
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar19[1];
  uVar12 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar19[2];
  uVar13 = (uint)local_c0 & 0xbff;
  uVar10 = uVar12 & 0x7f;
  uVar10 = ((uVar10 + 2) * (uVar10 + 1) * uVar10) % 3 + ((uVar13 - 1) * uVar13 - 1 & 1);
  puVar18 = (uint *)((longlong)(puVar19 + 2) +
                    ((longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0xda2a) ^ 0xda2eU));
  uVar10 = uVar12 >> 0x1c ^ uVar12 << 4 ^ *puVar18;
  puVar18 = puVar18 + 1;
  uVar13 = uVar10 >> 0x1c ^ uVar10 << 4 ^ *puVar18;
  iVar11 = (uVar13 & 0x26ff) * (uVar13 & 0x26ff) + 1;
  uVar12 = (iVar11 >> 4) + (iVar11 >> 1) + iVar11 * 0x24924924 >> 0x1d;
  uVar10 = uVar13 & 0x2f;
  uVar10 = ((int)(uVar12 - 7) >> 0x1f & uVar12) -
           (uVar10 * uVar10 * (uVar10 + 1) * (uVar10 + 1) & 2);
  puVar18 = (uint *)((longlong)puVar18 +
                    (0x504 - ((longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0x671d) ^ 0x621dU)));
  lVar17 = 2;
  do {
    uVar10 = uVar13 >> 0x1c ^ uVar13 << 4 ^ *puVar18;
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[1];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[2];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[3];
    uVar10 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[4];
    uVar13 = uVar10 >> 0x1c ^ uVar10 << 4 ^ puVar18[5];
    puVar18 = puVar18 + 6;
    lVar17 = lVar17 + -1;
  } while (lVar17 != 0);
  uVar10 = *puVar18;
  do {
    puVar18 = &local_104;
    FUN_1811c09ca();
    *puVar18 = 0xe212c7a;
    lVar17 = local_e8;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = (local_104 >> 0xb | local_104 << 0x15) + 0x6e19804a;
  uVar12 = (uVar12 >> 9 | uVar12 * 0x800000) + 0x1f1b1aca;
  uVar12 = (uVar12 >> 0x14 | uVar12 * 0x1000) + 0xa16ae3fe;
  uVar12 = (uVar12 * 0x4000 | uVar12 >> 0x12) + 0x5d1a0601;
  local_a8 = uVar12 >> 10 | uVar12 * 0x400000;
  local_a4 = (uint)local_120;
  local_a0 = (uint)local_118;
  uVar24 = local_a8 + 0xd6c7eba2;
  uVar12 = (((uint)local_120 ^ local_a0) & 0x6593f979 ^ (uint)local_120) + 0x4ed1481b;
  uVar16 = (((uint)local_120 ^ local_a0) & 0x9a6c0686 ^ (uint)local_120) + 0xaef7aa14;
  uVar23 = (int)((ulonglong)local_118 >> 0x20) + 0x7bc739d3;
  uVar21 = (uVar12 * 0x100 | uVar12 >> 0x18) & 0x9a659a65 |
           (uVar12 >> 8 | uVar12 * 0x1000000) & 0x659a659a;
  uVar16 = ((uVar16 * 0x10000 | uVar16 >> 0x10) & 0xc73b38c4 |
           (uVar16 >> 0x10 | uVar16 * 0x10000) & 0x38c4c73b) ^ uVar21;
  uVar12 = uVar16 & 0x8a578475 ^ uVar21;
  uVar16 = uVar16 & 0x75a87b8a ^ uVar21 ^ uVar12;
  uVar26 = uVar16 & 0xbbb9a4a9 ^ uVar12;
  uVar12 = uVar16 & 0x44465b56 ^ uVar12;
  uVar16 = uVar12 >> 0x19 | uVar12 << 7;
  uVar12 = uVar23 * 4 & 0x33333333 | uVar23 >> 0x1e;
  uVar6 = (ulonglong)uVar12;
  uVar12 = uVar23 >> 2 & 0xcccccccc | uVar23 * 0x40000000 | uVar12;
  uVar21 = (uVar12 >> 10 | uVar12 << 0x16) ^ uVar16;
  uVar12 = uVar21 & 0xddffbe9c ^ uVar16;
  uVar16 = uVar21 & 0x22004163 ^ uVar16 ^ uVar12;
  uVar21 = (uVar24 * 0x10 | uVar24 >> 0x1c) & 0x96969696 |
           (uVar24 >> 4 | uVar24 * 0x10000000) & 0x69696969;
  piVar25 = (int *)register0x00000020;
  do {
    uVar2 = rdtsc();
    local_100 = (int)uVar2 - (int)((ulonglong)uVar2 >> 0x20);
    uVar8 = (((ulonglong)local_100 * -0x477 >> 8) - 0x30f0983c) + (ulonglong)local_100 * -0x1fc;
    uVar8 = (((uVar8 & 0x3fffffffffffff) >> 1) - 0x3b9f687c) + (uVar8 * 0x400 | uVar8 >> 0x36) * 4;
    uVar8 = uVar8 >> 0x10 | uVar8 << 0x30;
    uVar8 = (uVar8 * 0x240 | uVar8 * 9 >> 0x3a) + 0x1e4a6198 + uVar8 * 2;
    piVar25 = (int *)(~-(longlong)piVar25 + 1);
    uVar23 = (*piVar25 + 1) * *piVar25 & 0x80000001;
    if ((int)uVar23 < 0) {
      uVar23 = (uVar23 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar23 != 0);
  local_10c = (uint)((int)(uVar8 >> 10) + (int)(uVar8 >> 0x19) + -0x3cd54c35) >> 1 ^ local_12c;
  iVar11 = (uVar21 >> 0x1d | uVar21 << 3) + 0xbc64070c;
  uVar21 = (uVar26 >> 0x1f | uVar26 << 1) ^ 0xea2cbcd1;
  iVar5 = (uVar16 & 0x7310039d ^ uVar12) + 0x6bb1bcf9;
  uVar12 = uVar16 & 0x8ceffc62 ^ uVar12 ^ 0xaa7d1554;
  if (local_10c < 0xdb7b) {
    do {
      local_7c = uVar12;
      local_80 = iVar5;
      local_84 = uVar21;
      local_88 = iVar11;
      plVar22 = &local_b8;
      puVar18 = &local_108;
      FUN_1811bfb9d();
      *puVar18 = 0xe8925423;
      *plVar22 = 0x1811bf183;
      uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar16 < 0) {
        uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
      }
      iVar11 = local_88;
      uVar21 = local_84;
      iVar5 = local_80;
      uVar12 = local_7c;
    } while (uVar16 != 0);
    uVar12 = ~(local_108 + 0x2abb5081 >> 0x1b | (local_108 + 0x2abb5081) * 0x20);
    uVar12 = (uVar12 << 5 | uVar12 >> 0x1b) + 0x168d190d;
    local_108 = uVar12 * 0x10 | uVar12 >> 0x1c;
    (*(code *)((int)local_108 + local_b8))(&local_88,&local_70);
    iVar11 = 7;
    do {
      uVar16 = ((local_70 << 4 | local_70 >> 0x1c) & 0xb4b4b4b4 |
               (local_70 >> 4 | local_70 << 0x1c) & 0x4b4b4b4b) + 0xedf66992;
      uVar12 = uVar16 >> 0xc;
      uVar21 = (((uVar12 | uVar16 * 0x100000) ^ 0x2677a938) >> 3 | uVar12 << 0x1d) + 0x70f6a640;
      uVar23 = uVar21 >> 0x17 | uVar21 * 0x200;
      uVar12 = ((local_6c >> 8 | local_6c << 0x18) & 0xfa05fa05 |
               (local_6c << 8 | local_6c >> 0x18) & 0x5fa05fa) + 0x703d2ee4;
      uVar12 = (uVar12 >> 0x1d | uVar12 * 8) + 0x5f26144;
      uVar16 = (uVar12 * 0x8000 | uVar12 >> 0x11) + 0x191d2650;
      uVar12 = uVar16 >> 0xc;
      uVar16 = uVar16 * 0x100000 | uVar12;
      uVar21 = (uVar23 >> 8 | (uVar21 >> 0x17) << 0x18) & 0xa857a857 |
               (uVar23 << 8 | (uVar21 & 0x7fffff) >> 0xf) & 0x57a857a8;
      local_70 = uVar21 >> 6 | uVar21 << 0x1a;
      uVar12 = (uVar12 << 0x10 | uVar16 >> 0x10) & 0xd65429ab |
               (uVar16 >> 0x10 | uVar12 << 0x10) & 0x29abd654;
      local_6c = uVar12 << 0x16 | uVar12 >> 10;
      iVar11 = iVar11 + -1;
    } while (-1 < iVar11);
    uVar12 = ((local_70 ^ 0x5870ba9) << 4 | (uVar21 & 0x3f) >> 2) + 0x9fbada8b;
    uVar12 = (uVar12 >> 9 | uVar12 * 0x800000) + 0xe543fa62;
    uVar12 = (uVar12 * 0x1000000 | uVar12 >> 8) + 0xdbcde7ac;
    do {
      puVar18 = &local_124;
                    /* WARNING: Call to offcut address within same function */
      func_0x0001811bef94();
      *puVar18 = 0x70208ff3;
                    /* WARNING: Call to offcut address within same function */
      func_0x0001811bed3e();
      uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar16 < 0) {
        uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar16 != 0);
    uVar16 = ((local_124 ^ 0x37d974cd) << 0x12 | (local_124 ^ 0x37d974cd) >> 0xe) + 0xe9f7cda1;
    uVar16 = (uVar16 >> 0xe | uVar16 * 0x40000) + 0x152f67bd;
    uVar16 = (uVar16 >> 0xc | uVar16 * 0x100000) + 0xeb02ec7f;
    local_124 = (uVar16 >> 5 | uVar16 * 0x8000000) ^ 0x5120e493;
    if ((local_124 ^ (uVar12 >> 0x14 | uVar12 * 0x1000) ^ 0xb5c9b3c) + local_6c != (uint)local_120)
    {
      do {
        local_b0 = FUN_180bc28e0;
        uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar12 < 0) {
          uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar12 != 0);
      FUN_180bc28e0();
      do {
        FUN_1811bf894();
        uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar12 < 0) {
          uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar12 != 0);
    }
  }
  if ((char)((~((uVar10 ^ uVar13 >> 0x1c ^ uVar13 << 4) + 0x185cb397) != (uint)local_138) * '\'') ==
      '\0') {
    uVar27 = FUN_1804835d0(lVar17 + 0x188,5);
    local_138 = (uint *)CONCAT44(local_138._4_4_,uVar27);
    (**(code **)*puVar3)(puVar3,lVar17,uVar27);
    lVar7 = (longlong)local_fc;
    puVar4 = auStack_158;
    do {
      puVar20 = puVar4;
      *(undefined8 *)(puVar20 + -8) = 0x1811bf448;
      lVar15 = lVar7;
      FUN_1811c024a();
      *(longlong *)(puVar20 + -8) = lVar17;
      *(ulonglong *)(puVar20 + -0x10) = uVar6;
      *(BADSPACEBASE **)(puVar20 + -0x18) = register0x00000020;
      lVar15 = -lVar15;
      register0x00000020 = *(BADSPACEBASE **)(puVar20 + lVar15 + 0xce8);
      uVar6 = *(ulonglong *)(puVar20 + lVar15 + 0xcf0);
      lVar17 = *(longlong *)(puVar20 + lVar15 + 0xcf8);
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
      puVar4 = puVar20 + lVar15 + 0xd00;
    } while (uVar10 != 0);
    *(undefined **)(puVar20 + lVar15 + 0xcf8) = &UNK_1811bf5f7;
  }
  uVar27 = FUN_180487200(lVar17 + 0x188,5);
  (**(code **)*puVar3)(puVar3,lVar17,uVar27);
  FUN_1811be0b4();
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 18157f7a0 size=1607 ############

/* WARNING: Removing unreachable block (ram,0x00018157f862) */
/* WARNING: Removing unreachable block (ram,0x00018157f818) */
/* WARNING: Removing unreachable block (ram,0x00018157f91c) */

void FUN_18157f7a0(longlong param_1,longlong *param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  undefined8 *puVar3;
  int iVar4;
  code **ppcVar5;
  longlong *plVar6;
  uint uVar7;
  longlong lVar8;
  uint uVar9;
  IMAGE_DOS_HEADER *pIVar10;
  code *UNRECOVERED_JUMPTABLE;
  uint uVar11;
  undefined4 *puVar12;
  int unaff_retaddr;
  longlong lStack_188;
  longlong lStack_180;
  int local_168;
  longlong local_160;
  undefined4 local_154;
  undefined8 local_150;
  undefined8 local_148;
  undefined4 *local_140;
  longlong local_138;
  uint local_130;
  undefined1 local_128 [16];
  undefined4 local_118;
  undefined4 local_110;
  uint local_10c;
  code *local_108;
  longlong *local_100;
  longlong local_f8 [3];
  undefined4 *local_e0;
  longlong local_d8;
  undefined4 *local_d0;
  undefined8 local_a8;
  undefined4 local_80 [14];
  ulonglong local_48;
  
  local_a8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)&lStack_188;
  uVar9 = (uint)&stack0x00000000;
  local_118 = 0xb40;
  uVar11 = ((uVar9 & 0x8ff) + 1) * (uVar9 & 0x8ff) + 0x3de9 & 0x80000001;
  iVar4 = (uVar9 & 0x40ff) * (uVar9 & 0x40ff) + 1;
  uVar7 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar7 = (int)(uVar7 - 7) >> 0x1f & uVar7;
  local_10c = 0x7891 << ((char)(((byte)(-uVar7 >> 0x18) | (byte)(uVar7 >> 0x18)) ^
                               (byte)(-(((uVar9 & 0x1fff) * (uVar9 & 0x1fff) * 0x10 + 4) % 0x13) >>
                                     0x18)) >> 7 & 0x1fU) ^
              (int)(-uVar11 | uVar11) >> 0x1f & 0x7e41U;
  local_f8[0] = param_2[1];
  local_138 = param_1;
  local_100 = param_2;
  FUN_1804951c0();
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    local_110 = 0xcb4159b4;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_154 = 0xad7318e8;
  do {
    FUN_181580c74(0xee10);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_148 = 0;
  local_150 = 0x9c46bc;
  local_140 = (undefined4 *)0x1809c46bc;
  local_160 = 0x1809c49d0;
  do {
    uVar1 = rdtsc();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x51ca7a15;
  local_130 = (uVar7 >> 0x18 ^ uVar7) * -0x4601166b;
  if (local_130 < 0x4104107) {
    local_108 = (code *)0x0;
    do {
      ppcVar5 = &local_108;
      FUN_18157f601(ppcVar5,&local_108);
      *ppcVar5 = FUN_1813f2240;
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar2 = (*local_108)(0,0x4dd2);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  local_150 = 0x2962b80fadedd718;
  local_148 = CONCAT44(local_148._4_4_,0xa1cf3f20);
  local_168 = -0x7f390abe;
  FUN_180583d90(local_138 + 0xe8,param_2);
  puVar3 = (undefined8 *)FUN_180583530(local_138 + 0x290,local_f8);
  plVar6 = local_100;
  *puVar3 = local_100;
  (**(code **)(*local_100 + 0x58))(local_100,1);
  FUN_181343cc0(local_138,plVar6,0xffffffff);
  FUN_181341570(plVar6[0x19],local_138,0);
  if (local_138 == 0) {
    lVar8 = 0;
  }
  else {
    lVar8 = local_138 + 0xc0;
  }
  if (lVar8 != 0) {
    FUN_180488690(plVar6[0x19] + 0x80);
  }
  local_e0 = local_140;
  local_d8 = local_160 - (longlong)local_140;
  local_d0 = local_140;
  local_148 = CONCAT44(local_148._4_4_,*(int *)(local_138 + 0x124) + -1);
  local_160 = CONCAT44(local_160._4_4_,0x1b873593);
  uVar7 = local_168 + 0x6123f2fbU >> 10;
  local_140 = (undefined4 *)
              CONCAT44(local_140._4_4_,
                       ((uVar7 | (local_168 + 0x6123f2fbU) * 0x400000) + 0x4864a810 >> 3 |
                       uVar7 << 0x1d) + 0x81a288f8);
  local_168 = 0xe6546b64;
  if (local_d8 == 0) {
    local_154 = 0xf802b4bb;
                    /* WARNING: Call to offcut address within same function */
    func_0x000181580153();
    lStack_188 = lStack_180 + 0x2880;
    UNRECOVERED_JUMPTABLE = (code *)(lStack_180 + 0x2856);
    lStack_180 = lStack_180 + 0x181;
                    /* WARNING: Could not recover jumptable at 0x000181580285. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*UNRECOVERED_JUMPTABLE)();
    return;
  }
  puVar12 = local_e0;
  if (-1 < (longlong)IMAGE_DOS_HEADER_180000000._0_8_) {
    local_140 = (undefined4 *)0x2621fc0;
    lVar8 = IMAGE_DOS_HEADER_180000000._0_8_;
    pIVar10 = &IMAGE_DOS_HEADER_180000000;
    do {
      if (local_e0 < IMAGE_DOS_HEADER_180000000.e_magic + lVar8 + 8) {
        if (-1 < lVar8) {
          plVar6 = (longlong *)(lVar8 + 0x180000000);
          if (plVar6 < local_e0 + 1) {
            local_80[0] = *local_e0;
            goto LAB_18157fdd0;
          }
        }
        break;
      }
      lVar8._0_2_ = pIVar10->e_cparhdr;
      lVar8._2_2_ = pIVar10->e_minalloc;
      lVar8._4_2_ = pIVar10->e_maxalloc;
      lVar8._6_2_ = pIVar10->e_ss;
      pIVar10 = (IMAGE_DOS_HEADER *)&pIVar10->e_cparhdr;
    } while (-1 < lVar8);
  }
  goto LAB_18157fdf4;
  while (plVar6 = (longlong *)(lVar8 + 0x180000000), plVar6 < local_e0 + 1) {
LAB_18157fdd0:
    *(longlong *)(&stack0x00017fffff80 + (lVar8 - (longlong)local_e0)) = *plVar6 + -0x180000000;
    pIVar10 = (IMAGE_DOS_HEADER *)&pIVar10->e_cparhdr;
    lVar8 = *(longlong *)pIVar10;
    puVar12 = local_80;
    if (lVar8 < 0) break;
  }
LAB_18157fdf4:
  FUN_18157fe1a(0xee10,puVar12,local_128);
  return;
}



############ FUN_ 1811620a0 size=2384 ############

/* WARNING: Possible PIC construction at 0x000181162d2d: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x000181162d32) */
/* WARNING: Removing unreachable block (ram,0x000181162d5f) */
/* WARNING: Removing unreachable block (ram,0x0001811621fe) */
/* WARNING: Removing unreachable block (ram,0x000181162b84) */
/* WARNING: Removing unreachable block (ram,0x000181162be6) */

void FUN_1811620a0(ulonglong param_1)

{
  undefined8 uVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined *puVar4;
  uint uVar5;
  ulonglong uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  uint *puVar11;
  longlong *plVar12;
  undefined4 *puVar13;
  ulonglong uVar14;
  int *piVar15;
  IMAGE_DOS_HEADER *pIVar16;
  uint uVar17;
  int iVar18;
  longlong lVar19;
  longlong unaff_R12;
  int *piVar20;
  uint uVar21;
  int unaff_retaddr;
  undefined1 auStack_1b8 [36];
  uint local_194;
  uint local_190;
  uint local_18c;
  undefined4 *local_188;
  undefined8 local_180;
  uint local_178;
  longlong local_170;
  undefined4 local_168;
  uint uStack_164;
  uint auStack_160 [4];
  ulonglong local_150;
  uint local_148;
  int local_144;
  undefined4 local_140;
  uint local_13c;
  code *local_138;
  IMAGE_DOS_HEADER *local_130;
  undefined4 local_128 [2];
  undefined4 local_120;
  longlong local_118 [3];
  undefined *local_100;
  ulonglong local_f8;
  undefined8 local_90;
  int local_68 [14];
  ulonglong local_30;
  
  local_90 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar17 = 0x771bc09e;
  if (((ulonglong)&stack0x00000000 & 0x370) == 0) {
    uVar7 = (uint)&stack0x00000000 & 0x3cff;
    iVar10 = uVar7 * uVar7 + 1;
    uVar7 = (iVar10 >> 4) + (iVar10 >> 1) + iVar10 * 0x24924924 >> 0x1d;
    uVar7 = (int)(uVar7 - 7) >> 0x1f & uVar7;
    local_13c = (int)((-uVar7 | uVar7) ^ 0xffffffff) >> 0x1f | 0x9697;
  }
  else {
    local_13c = 0x9697;
  }
  local_13c = local_13c ^ 0x98a7;
  local_140 = 0x780;
  local_170 = 0;
  lVar19 = 0x5c8ebe03;
  local_188 = &DAT_181cd428c;
  local_180 = &DAT_181cda280;
  local_130 = &IMAGE_DOS_HEADER_180000000;
  local_f8 = param_1;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000181162819(0x6334);
    if (lVar19 - unaff_R12 != 0 && unaff_R12 <= lVar19) {
      param_1 = ((param_1 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    }
    lVar19 = (lVar19 - unaff_R12) + unaff_R12;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  FUN_180485d90(param_1 + 0x20,0);
  do {
    local_148 = 0x4d960a1e;
    FUN_181162d1b();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ~((local_148 << 0x15 | local_148 >> 0xb) + 0xe3d6627b) + 0xdb9e7a44;
  uVar7 = ~((uVar7 >> 0x1c | uVar7 * 0x10) + 0x701744da);
  local_144 = (uVar7 >> 0x1a | uVar7 << 6) + 0x845be95b;
  do {
    uVar1 = rdtsc();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * 0x5bd1ff51;
  local_178 = (uVar7 >> 0x18 ^ uVar7) * 0x5bd185eb;
  if (local_178 < 0x6666667f) {
    do {
      local_138 = FUN_1813f2240;
      FUN_18116438e(&local_138,0x7e48);
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar6 = (*local_138)();
    if (1 < uVar6) {
      FUN_18113eab0();
    }
  }
  puVar4 = local_180;
  puVar3 = local_188;
  local_194 = 0x3552170b;
  local_100 = local_180;
  uVar7 = 0x66266ce9;
  local_18c = 0x5bd1e995;
  local_170 = param_1 + 0x28;
  FUN_180485d90(local_170,0);
  local_150 = 0xb1a0b7493577244a;
  local_188 = (undefined4 *)CONCAT44(local_188._4_4_,0x3577244a);
  do {
    plVar12 = local_118;
    puVar13 = local_128;
    puVar11 = &local_190;
    FUN_181163074();
    *puVar11 = 0xf8c68dbf;
    *puVar13 = 0x78;
    *plVar12 = 0x181162547;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = (local_190 >> 2 | local_190 << 0x1e) & 0x99999999 |
          (local_190 << 2 | local_190 >> 0x1e) & 0x66666666;
  uVar8 = (uVar8 << 0x14 | uVar8 >> 0xc) + 0x14dc4122;
  uVar8 = ((uVar8 >> 0x10 | uVar8 * 0x10000) & 0xbcb4434b |
          (uVar8 * 0x10000 | uVar8 >> 0x10) & 0x434bbcb4) ^ 0xcbf5e84d;
  uVar5 = uVar8 << 7 | uVar8 >> 0x19;
  uVar5 = (uVar5 << 8 | (uVar8 & 0x1ffffff) >> 0x11) & 0x946b946b |
          ((uVar8 & 0x1ffffff) >> 1 | uVar5 << 0x18) & 0x6b946b94;
  uVar8 = (uVar5 >> 8 ^ uVar5) >> 0xe & 3;
  uVar8 = uVar5 ^ (uVar8 << 8 | uVar8) << 0xe;
  do {
    local_120 = 4;
    local_118[1] = 0x181162627;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_118[0] = (int)((uVar8 >> 4 | uVar5 << 0x1c) & 0xb4b4b4b4 |
                      (uVar8 << 4 | uVar5 >> 0x1c) & 0x4b4b4b4b) + local_118[0];
  local_190 = 0;
  local_168 = 0;
  *(longlong *)(local_118[0] + 4) =
       *(longlong *)(local_118[0] + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0xc58344e0_mfort6317_ >> 0x18) & 0xaa32800);
  uVar6 = *(ulonglong *)(local_118[0] + 4);
  uVar14 = (ulonglong)((uint)((uVar6 >> 3 ^ uVar6) >> 0xe) & 3);
  uVar14 = (uVar14 * 8 | uVar14) << 0xe ^ uVar6;
  uVar6 = ((uVar14 >> 0x10 | uVar14 << 0x30) & 0xbffe4001bffe4001 |
          (uVar14 << 0x10 | uVar6 >> 0x30) & 0x4001bffe4001bffe) + 0x60a06a5c24e8133e;
  uVar14 = (uVar6 * 0x10000 | uVar6 >> 0x30) & 0xa65d59a2a65d59a2 |
           (uVar6 >> 0x10 | uVar6 << 0x30) & 0x59a2a65d59a2a65d;
  uVar8 = (uint)((uVar14 >> 0x26 ^ uVar14) >> 3) & 0x7ff;
  uVar6 = ((ulonglong)uVar8 << 0x26 | (ulonglong)uVar8) << 3 ^ uVar14;
  uVar6 = ((uVar6 << 2 | uVar14 >> 0x3e) & 0x9999999999999999 |
          (uVar6 >> 2 | uVar14 << 0x3e) & 0x6666666666666666) + 0xc384b69c2d0923a7;
  uVar6 = ((uVar6 >> 0x10 | uVar6 << 0x30) & 0xc963369cc963369c |
          (uVar6 * 0x10000 | uVar6 >> 0x30) & 0x369cc963369cc963) ^ 0xdf2da24656459844;
  *(ulonglong *)(local_118[0] + 4) = uVar6;
  dvs_0xc58344e0_mfort6317_ =
       (uint *)((longlong)dvs_0xc58344e0_mfort6317_ + (ulonglong)((uint)(uVar6 >> 6) & 0x432f0810));
  local_180 = (undefined *)
              (CONCAT44(local_180._4_4_,(int)((ulonglong)*(undefined8 *)(local_118[0] + 4) >> 0x10))
              & 0xffffffff7fffffff);
  local_194 = (uint)((ulonglong)*(undefined8 *)(local_118[0] + 4) >> 0x10) ^ 0xbc06e145;
  local_150 = *(ulonglong *)(local_118[0] + 4) ^ 0x4e5410e22c4bd0be;
  lVar19 = (longlong)puVar4 - (longlong)(puVar3 + -1);
  pIVar16 = &IMAGE_DOS_HEADER_180000000;
  piVar2 = puVar3 + -1;
joined_r0x0001811628a7:
  if (lVar19 == 4) {
    local_18c = uVar17;
    FUN_180485d90(param_1 + 0x30,0);
    auStack_160[0] = uVar7;
    do {
      puVar11 = auStack_160;
      func_0x000181161c31(&LAB_18113e030,&LAB_18113e030);
      uVar17 = func_0x0001811776fb();
      *puVar11 = uVar17;
      uVar17 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar17 < 0) {
        uVar17 = (uVar17 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar17 != 0);
    uVar17 = (auStack_160[0] >> 0xd ^ auStack_160[0]) >> 3 & 0xff;
    local_18c = ~((uVar17 << 0xd | uVar17) << 3 ^ auStack_160[0]) + 0x7f3d711d;
    thunk_FUN_18047cbc0(param_1 + 0x38,CONCAT71((uint7)(uint3)(auStack_160[0] >> 8),1));
    FUN_18047cb30(param_1 + 0x38,0);
                    /* WARNING: Could not recover jumptable at 0x000181162f41. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)&UNK_18115e00a)();
    return;
  }
  piVar15 = piVar2 + 1;
  piVar20 = piVar15;
  if ((pIVar16 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar19._0_1_ = pIVar16->e_magic[0], lVar19._1_1_ = pIVar16->e_magic[1],
     lVar19._2_2_ = pIVar16->e_cblp, lVar19._4_2_ = pIVar16->e_cp, lVar19._6_2_ = pIVar16->e_crlc,
     -1 < lVar19)) {
    local_118[2] = 0x2621fc0;
    do {
      if (piVar15 < IMAGE_DOS_HEADER_180000000.e_magic + lVar19 + 8) {
        if (-1 < lVar19) {
          plVar12 = (longlong *)(lVar19 + 0x180000000);
          if (plVar12 < piVar2 + 2) {
            local_68[0] = *piVar15;
            goto LAB_181162940;
          }
        }
        break;
      }
      local_130 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
      lVar19._0_2_ = pIVar16->e_cparhdr;
      lVar19._2_2_ = pIVar16->e_minalloc;
      lVar19._4_2_ = pIVar16->e_maxalloc;
      lVar19._6_2_ = pIVar16->e_ss;
      pIVar16 = local_130;
    } while (-1 < lVar19);
  }
  goto LAB_181162964;
  while (plVar12 = (longlong *)(lVar19 + 0x180000000), plVar12 < piVar2 + 2) {
LAB_181162940:
    *(longlong *)(&stack0x00017fffff98 + (lVar19 - (longlong)piVar15)) = *plVar12 + -0x180000000;
    pIVar16 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
    lVar19 = *(longlong *)pIVar16;
    piVar20 = local_68;
    if (lVar19 < 0) break;
  }
LAB_181162964:
  uVar17 = uVar17 * uVar7;
  uVar8 = uVar7 & 0x7f | 0x71;
  uVar5 = (uint)piVar15 & 0x3f | 0x38;
  uVar5 = uVar8 * uVar8 * 0x753b ^ uVar5 * uVar5 * 0x4307;
  uVar21 = uVar7 & 0x1ff;
  iVar18 = (uVar21 + 2) * (uVar21 + 1) * uVar21;
  uVar9 = uVar7 & 0x79ff;
  iVar10 = uVar9 * uVar9 + 1;
  uVar8 = (iVar10 >> 4) + (iVar10 >> 1) + iVar10 * 0x24924924 >> 0x1d;
  uVar8 = (((iVar18 >> 1) - (iVar18 >> 3)) + iVar18 * 0x55555555 >> 0x1e) -
          ((int)(uVar8 - 7) >> 0x1f & uVar8);
  if ((int)((-uVar5 | uVar5) ^ (-uVar8 | uVar8)) < 0) {
    uVar5 = uVar7 & 0x7f | 0x71;
    iVar10 = (uVar21 + 2) * (uVar21 + 1) * uVar21;
    iVar18 = uVar9 * uVar9 + 1;
    uVar8 = (iVar18 >> 4) + (iVar18 >> 1) + iVar18 * 0x24924924 >> 0x1d;
    uVar8 = (((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >> 0x1e) -
            ((int)(uVar8 - 7) >> 0x1f & uVar8);
    do {
      uVar17 = uVar17 * (uVar17 >> 8);
      piVar15 = piVar15 + 1;
      uVar9 = (uint)piVar15 & 0x3f | 0x38;
      uVar9 = uVar9 * uVar9 * 0x4307 ^ uVar5 * uVar5 * 0x753b;
    } while ((int)((-uVar9 | uVar9) ^ (-uVar8 | uVar8)) < 0);
  }
  if ((uVar17 & 0x3ff) != 0) {
    uVar17 = uVar17 * (uVar17 >> 0xb);
  }
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar5 = (uint)piVar15 & 0x2f;
  uVar8 = (uint)piVar15 & 0x2ff;
  iVar10 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  if ((uVar5 * uVar5 * (uVar5 + 1) * (uVar5 + 1) & 0x80000003) !=
      iVar10 + (iVar10 / 3 + (iVar10 >> 0x1f) +
               (int)(((longlong)iVar10 / 3 + ((longlong)iVar10 >> 0x3f) & 0xffffffffU) >> 0x1f)) *
               -3) {
    do {
      uVar17 = uVar17 ^ uVar17 << 10;
      piVar15 = piVar15 + 1;
      uVar8 = (uint)piVar15 & 0x2f;
      uVar5 = (uint)piVar15 & 0x2ff;
      iVar10 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
    } while ((uVar8 * uVar8 * (uVar8 + 1) * (uVar8 + 1) & 0x80000003) !=
             iVar10 + (iVar10 / 3 + (iVar10 >> 0x1f) +
                      (int)(((longlong)iVar10 / 3 + ((longlong)iVar10 >> 0x3f) & 0xffffffffU) >>
                           0x1f)) * -3);
  }
  uStack_164 = (*piVar20 * local_18c >> 0x18 ^ *piVar20 * local_18c) * local_18c;
  uVar7 = uVar7 * local_18c ^ uStack_164;
  lVar19 = (longlong)local_100 - (longlong)piVar15;
  pIVar16 = local_130;
  piVar2 = piVar15;
  param_1 = local_f8;
  goto joined_r0x0001811628a7;
}



############ FUN_ 181174a20 size=2953 ############

/* WARNING: Removing unreachable block (ram,0x000181175111) */
/* WARNING: Removing unreachable block (ram,0x000181174b25) */
/* WARNING: Removing unreachable block (ram,0x0001811754d5) */
/* WARNING: Removing unreachable block (ram,0x000181174b05) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_181174a20(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined *puVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  longlong *plVar5;
  int iVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  longlong lVar9;
  IMAGE_DOS_HEADER *pIVar10;
  undefined4 *puVar11;
  uint uVar12;
  undefined4 *puVar13;
  uint uVar14;
  IMAGE_DOS_HEADER *pIVar15;
  uint *puVar16;
  int unaff_retaddr;
  undefined1 auStack_1f8 [32];
  uint local_1d8 [2];
  undefined *local_1d0;
  int local_1c8;
  uint local_1c4;
  uint local_1bc;
  undefined *local_1b8;
  uint local_1b0;
  uint local_1ac [3];
  undefined8 local_1a0;
  undefined4 local_198;
  uint local_194;
  uint local_190;
  uint local_18c;
  code *local_188;
  undefined8 local_178;
  undefined8 local_170;
  ulonglong local_168;
  undefined4 local_15c;
  undefined1 local_158 [8];
  longlong local_150;
  longlong local_148 [2];
  undefined *local_138;
  undefined8 *local_130;
  undefined4 local_110;
  undefined8 local_108;
  undefined8 *local_100;
  undefined8 local_f8;
  undefined8 *local_f0;
  undefined8 local_e8;
  undefined8 *local_e0;
  undefined8 local_d8;
  undefined4 local_90 [14];
  ulonglong local_58;
  
  local_f8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  local_178 = *param_3;
  local_170 = param_4;
  local_130 = param_1;
  local_108 = param_2;
  local_100 = param_3;
  local_f0 = param_1;
  local_e8 = param_2;
  local_e0 = param_3;
  local_d8 = param_4;
  FUN_1804951c0();
  uVar2 = FUN_1804875e0(local_158,param_2);
  FUN_181182b70(param_1,uVar2,&local_178);
  *param_1 = XmlPreset::vftable;
  param_1[8] = &DAT_1821dbf98;
  uVar14 = (uint)&stack0x00000000 & 0x1bff;
  uVar14 = (uVar14 * uVar14 + 1) % 7;
  local_18c = ((int)(-uVar14 | uVar14) >> 0x1f) * -0xeb25 ^ 0xe7b5;
  uVar14 = (uint)&stack0x00000000 & 0x56ff;
  uVar14 = (uVar14 * uVar14 + 1) % 7;
  uVar14 = (int)(-uVar14 | uVar14) >> 0x1f;
  local_194 = ~((int)(-uVar14 | uVar14) >> 0x1f & 0xfffff0dfU) & 0x3ffd;
  local_1d8[0] = 0xc5;
  do {
    uVar2 = rdtsc();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar14 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x3b31e57b;
  local_1c4 = (uVar14 >> 0x18 ^ uVar14) * 0x5bd18ccd;
  if (local_1c4 < 0x7fffffff) {
    do {
      local_188 = FUN_18141db20;
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar3 = FUN_18141db20(0,0xa35e);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  do {
    FUN_181175da3();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  do {
    local_110 = 0x55;
    local_150 = 0x181174d47;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  local_1c8 = 0x14ad53d;
  do {
    plVar5 = local_148;
    puVar13 = &local_15c;
    puVar16 = &local_1b0;
    FUN_181172fd4();
    *puVar16 = 0x1054bab4;
    *puVar13 = 0xe;
    *plVar5 = 0x181174e17;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar4 = ~(((local_1b0 >> 4 | local_1b0 << 0x1c) & 0x87878787 |
            (local_1b0 << 4 | local_1b0 >> 0x1c) & 0x78787878) ^ 0xce3af40d);
  uVar14 = (uVar4 >> 0x12 ^ uVar4) >> 9 & 0xf;
  uVar4 = (uVar14 << 0x12 | uVar14) << 9 ^ uVar4 ^ 0x9e6e6a2a;
  uVar14 = (uVar4 >> 0x11 ^ uVar4) >> 1 & 0x7ff;
  uVar14 = uVar4 ^ (uVar14 << 0x11 | uVar14) * 2;
  uVar4 = (uVar14 >> 2 & 0xcccccccc | uVar14 << 0x1e | (uVar14 & 0xccccccc) << 2 | uVar4 >> 0x1e) +
          0x250da25b;
  uVar14 = (uVar4 >> 0x13 ^ uVar4) >> 2 & 0xff;
  puVar16 = (uint *)(local_1c8 + local_150);
  local_148[0] = (int)(uVar4 ^ (uVar14 << 0x13 | uVar14) << 2) + local_148[0];
  local_1c8 = 0;
  local_1b0 = 0;
  *(ulonglong *)(puVar16 + 1) =
       *(longlong *)(puVar16 + 1) +
       (ulonglong)((uint)(*(ulonglong *)(local_148[0] + 4) >> 0x1e) & 0x2c00081);
  uVar7 = *(ulonglong *)(puVar16 + 1) ^ 0x3b06c54c4d1fe7f8;
  uVar8 = uVar7 >> 0x21 | uVar7 << 0x1f;
  uVar3 = (ulonglong)((uint)((uVar8 >> 0xd ^ uVar8) >> 2) & 0x7ff);
  uVar8 = uVar8 ^ (uVar3 << 0xd | uVar3) << 2;
  uVar3 = ((uVar8 >> 0x10 | uVar8 << 0x30) & 0x9e63619c9e63619c |
          (uVar8 << 0x10 | (uVar7 & 0x1ffffffff) >> 0x11) & 0x619c9e63619c9e63) + 0xfe712c804bfd8f56
  ;
  uVar3 = ((uVar3 >> 2 | uVar3 << 0x3e) & 0x9999999999999999 |
          (uVar3 * 4 | uVar3 >> 0x3e) & 0x6666666666666666) ^ 0x55d6400f5f3bd984;
  uVar3 = ((uVar3 << 0x10 | uVar3 >> 0x30) & 0xb5244adbb5244adb |
          (uVar3 >> 0x10 | uVar3 << 0x30) & 0x4adbb5244adbb524) + 0xc344382a52e831db;
  *(ulonglong *)(puVar16 + 1) = uVar3;
  plVar5 = (longlong *)(local_148[0] + 4);
  *plVar5 = *plVar5 + (uVar3 >> 0xf & 0x842f0892);
  local_190 = (uint)((ulonglong)*(undefined8 *)(puVar16 + 1) >> 0x18) & 0x7fffffff;
  local_1bc = (uint)(*(ulonglong *)(puVar16 + 1) >> 0x13) ^ 0x309406b;
  local_168 = *(ulonglong *)(puVar16 + 1) ^ 0xe4f249e36a92d181;
  pIVar15 = &IMAGE_DOS_HEADER_180000000;
  local_1a0 = 0;
  local_1d0 = &DAT_181e35fc8;
  local_1b8 = &DAT_181e3dfb8;
  local_138 = &DAT_181e3dfb8;
  do {
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  local_1d0 = (undefined *)0x68850da1d9306f50;
  do {
    local_198 = 0x27610ed;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  local_1b8 = (undefined *)0x10cde5db0;
  puVar13 = (undefined4 *)&UNK_181e35fc4;
  uVar3 = 0x81e35fc4;
  iVar6 = 0 >> (((byte)local_1d8[0] | 0xb8) + 0x48 & 0x1f);
  if (iVar6 == -0x8070) {
LAB_1811754a5:
    local_1ac[0] = local_1d8[0];
    FUN_1811aa0c3(local_1ac,iVar6,~(~uVar3 + 1) + 1,puVar16);
    return;
  }
  local_1a0 = 0x81e3e2f5;
LAB_181175290:
  uVar14 = (uint)uVar3 & 0x23f;
  iVar6 = (uVar14 + 2) * (uVar14 + 1) * uVar14;
  puVar13 = (undefined4 *)
            ((longlong)puVar13 +
            (((longlong)
              (0x5a3d << ((byte)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1f) & 0x1f)
              ) ^ 0x5a2dU) - 0xc));
  puVar11 = puVar13;
  if ((pIVar15 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar9._0_1_ = pIVar15->e_magic[0], lVar9._1_1_ = pIVar15->e_magic[1],
     lVar9._2_2_ = pIVar15->e_cblp, lVar9._4_2_ = pIVar15->e_cp, lVar9._6_2_ = pIVar15->e_crlc,
     -1 < lVar9)) {
    local_148[1] = 0x2621fc0;
    pIVar10 = pIVar15;
    do {
      if (puVar13 < IMAGE_DOS_HEADER_180000000.e_magic + lVar9 + 8) {
        pIVar15 = pIVar10;
        if (-1 < lVar9) {
          plVar5 = (longlong *)(lVar9 + 0x180000000);
          if (plVar5 < puVar13 + 1) {
            local_90[0] = *puVar13;
            goto LAB_181175360;
          }
        }
        break;
      }
      pIVar15 = (IMAGE_DOS_HEADER *)&pIVar10->e_cparhdr;
      lVar9._0_2_ = pIVar10->e_cparhdr;
      lVar9._2_2_ = pIVar10->e_minalloc;
      lVar9._4_2_ = pIVar10->e_maxalloc;
      lVar9._6_2_ = pIVar10->e_ss;
      pIVar10 = pIVar15;
    } while (-1 < lVar9);
  }
  goto LAB_181175384;
  while (plVar5 = (longlong *)(lVar9 + 0x180000000), plVar5 < puVar13 + 1) {
LAB_181175360:
    *(longlong *)(&stack0x00017fffff70 + (lVar9 - (longlong)puVar13)) = *plVar5 + -0x180000000;
    pIVar10 = (IMAGE_DOS_HEADER *)&pIVar10->e_cparhdr;
    lVar9 = *(longlong *)pIVar10;
    puVar11 = local_90;
    if (lVar9 < 0) break;
  }
LAB_181175384:
  local_1d8[0] = local_1d8[0] >> 0x1c ^ local_1d8[0] << 4;
  do {
    puVar16 = local_1d8;
    FUN_18117751b(&DAT_0000d418,(undefined *)((longlong)puVar11 + 0x3c3f003d),0);
    uVar14 = FUN_18117b177();
    *puVar16 = uVar14;
    FUN_1811736f1();
    puVar1 = local_138;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  do {
    FUN_18117751b();
                    /* WARNING: Call to offcut address within same function */
    func_0x000181175113();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar12 = (uint)puVar13;
  uVar3 = (ulonglong)puVar13 & 0xffffffff;
  uVar4 = uVar12 & 0x1f | 0x6e;
  uVar14 = uVar12 & 0x3f | 0x2b;
  iVar6 = (int)(uint)(uVar14 * uVar14 * 0x6f53 == uVar4 * uVar4 * 0x833) >>
          (((byte)puVar1 | (byte)local_1d8[0]) - (byte)puVar1 & 0x1f);
  if ((uVar12 ^ 0x3d41) - (int)local_1a0 == iVar6) goto LAB_1811754a5;
  goto LAB_181175290;
}



############ FUN_ 1814a9370 size=2590 ############

/* WARNING: Instruction at (ram,0x0001814a9bb2) overlaps instruction at (ram,0x0001814a9bb1)
    */
/* WARNING: Removing unreachable block (ram,0x0001814a9bb2) */
/* WARNING: Type propagation algorithm not settling */

undefined8 FUN_1814a9370(undefined8 *param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  undefined4 *puVar8;
  longlong lVar9;
  uint uVar10;
  longlong *plVar11;
  uint uVar12;
  int *piVar13;
  int unaff_retaddr;
  undefined1 auStack_158 [32];
  undefined4 local_138;
  uint local_134;
  uint local_130 [2];
  ulonglong local_128;
  uint local_120;
  uint local_118;
  undefined **local_110;
  undefined4 local_108;
  undefined8 local_f8;
  uint local_f0;
  int local_ec;
  uint local_e8;
  uint local_e4;
  uint local_e0;
  code *local_d8;
  undefined *local_d0;
  undefined4 local_c8;
  undefined4 local_c4;
  longlong local_c0 [2];
  undefined8 *local_b0;
  undefined8 local_98;
  ulonglong local_38;
  
  local_98 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_158;
  *param_1 = PluginToolbar::vftable;
  param_1[0x16] = PluginToolbar::vftable;
  param_1[0x19] = PluginToolbar::vftable;
  param_1[0x1a] = PluginToolbar::vftable;
  uVar5 = (uint)&stack0x00000000;
  uVar12 = ((uVar5 & 0x15ff) * (uVar5 & 0x15ff) * 0x10 + 4) % 0x13;
  uVar10 = ((uVar5 & 0x5ff) * (uVar5 & 0x5ff) * 0x10 + 4) % 0x13;
  uVar10 = (int)((-uVar10 | uVar10) & (-uVar12 | uVar12)) >> 0x1f;
  local_e0 = ((int)(-uVar10 | uVar10) >> 0x1f) * -0x90de ^ 0x90be;
  uVar5 = uVar5 & 0x3ff;
  local_e4 = 0x735 >> (-(char)(((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3) & 0x1fU) ^ 0x3a5;
  local_b0 = param_1;
  do {
    uVar1 = rdtsc();
    local_120 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_1814ab306();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  local_120 = (local_120 * -0xae12ab >> 0x18 ^ local_120 * -0xae12ab) * -0x166a3d4e;
  if (local_120 < 0x1861861f) {
    do {
      local_d8 = FUN_1813f2240;
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar2 = FUN_1813f2240(0,0x368b);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  local_138 = 0xb5;
  local_110 = &PTR__guard_check_icall_181bab6a8;
  local_d0 = &DAT_181bab6b8;
  local_128 = 0xdbd3e8b32194ff00;
  local_f8 = 0x2194ff00;
  FUN_181187660(param_1[0x25],param_1 + 0x19);
  do {
    puVar6 = &local_f0;
    FUN_1814a85f5();
    *puVar6 = 0xec3691b9;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = (local_f0 >> 0x13 | local_f0 << 0xd) ^ 0x173120d2;
  uVar10 = ~(uVar10 << 0x1b | uVar10 >> 5) + 0x5f42ae4;
  uVar10 = (uVar10 >> 0x10 | uVar10 * 0x10000) + 0x1b367166;
  local_ec = (uVar10 >> 0x1d | uVar10 * 8) + 0x6e355d66;
  do {
    plVar11 = local_c0;
    puVar8 = &local_c8;
    puVar6 = &local_134;
    FUN_1814a91c9();
    *puVar6 = 0xffcc90a9;
    *puVar8 = 0x24;
    *plVar11 = 0x1814a97c8;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = (local_134 >> 0x10 | local_134 << 0x10) & 0x8ded7212 |
           (local_134 << 0x10 | local_134 >> 0x10) & 0x72128ded;
  uVar10 = ((uVar10 & 0x33333333) << 2 | uVar10 >> 2 & 0x33333333) + 0xfce7d1d;
  uVar10 = (uVar10 >> 4 | uVar10 * 0x10000000) & 0xa5a5a5a5 |
           (uVar10 * 0x10 | uVar10 >> 0x1c) & 0x5a5a5a5a;
  uVar5 = (uVar10 >> 9 | uVar10 << 0x17) ^ 0xe603a2de;
  uVar10 = uVar5 >> 8;
  uVar12 = uVar10 | uVar5 << 0x18;
  uVar5 = (uVar12 >> 10 ^ uVar12) >> 10 & 0x1f;
  uVar12 = uVar12 ^ (uVar5 << 10 | uVar5) << 10;
  do {
    plVar11 = local_c0 + 1;
    local_c4 = 0x65;
    local_c0[1] = 0x1814a98a8;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  lVar9 = (int)((uVar12 << 8 | uVar12 >> 0x18) & 0x99669966 |
               (uVar12 >> 8 | uVar10 << 0x18) & 0x66996699) + local_c0[0];
  local_134 = 0;
  local_108 = 0;
  *(longlong *)(lVar9 + 4) =
       *(longlong *)(lVar9 + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x1b7f41c4_mfort6317_ >> 5) & 0x1204e500);
  piVar13 = (int *)register0x00000020;
  do {
    puVar6 = &local_e8;
    puVar7 = local_130;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001814a9979(puVar7,puVar6,plVar11);
    uVar1 = rdtsc();
    uVar10 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20) * 2;
    *puVar6 = uVar10;
    uVar2 = (ulonglong)uVar10 * 0x4001 + 0x36dcbcfd;
    uVar3 = uVar2 >> 8 | uVar2 << 0x38;
    uVar3 = uVar3 + ((uVar3 >> 0xc) - 0x67efc7d7);
    uVar2 = uVar3 >> 0x35;
    uVar3 = uVar3 * 0x800 | uVar2;
    uVar3 = uVar3 ^ (uVar3 >> 9 | uVar2 << 0x37);
    plVar11 = (longlong *)(~(((ulonglong)plVar11 ^ 0xffffffffffffffff) + 1) + 1);
    uVar2 = ((uVar3 >> 0xc | uVar3 << 0x34) + 0x3c28b377 + uVar3 * 8) * -0x7ff + 0x36975af6;
    uVar2 = uVar2 >> 10 | uVar2 << 0x36;
    piVar13 = (int *)(~(~(ulonglong)piVar13 + 1) + 1);
    lVar4 = uVar2 + (uVar2 >> 5) + 0x2a7ec935;
    *puVar7 = ((int)lVar4 * 0x200 | (uint)((ulonglong)lVar4 >> 0x37)) & 0x60ddff16;
    uVar10 = (*piVar13 + 1) * *piVar13 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  *(int *)(lVar9 + 8) = *(int *)(lVar9 + 8) + (local_130[0] ^ 0x4a1bf12e);
  *(int *)(lVar9 + 4) = *(int *)(lVar9 + 4) + (local_130[0] ^ 0xb85375ac);
  uVar3 = *(longlong *)(lVar9 + 4) + 0x4f9b2fbcad71af7d;
  uVar2 = uVar3 >> 0xb;
  uVar3 = uVar3 << 0x35 | uVar2;
  uVar2 = (uVar3 >> 0x10 | uVar2 << 0x30) & 0x93b96c4693b96c46 |
          (uVar2 << 0x10 | uVar3 >> 0x30) & 0x6c4693b96c4693b9;
  uVar3 = ((uVar2 >> 8 | uVar2 << 0x38) & 0x837c837c837c837c |
          (uVar2 << 8 | uVar2 >> 0x38) & 0x7c837c837c837c83) + 0x4ec8de757a8d252f;
  uVar2 = uVar3 >> 0xe;
  uVar3 = (uVar3 << 0x32 | uVar2) ^ 0xb8bbce0b11640ab4;
  uVar2 = (uVar3 << 2 | uVar3 >> 0x3e) & 0x9999999999999999 |
          (uVar3 >> 2 | uVar2 << 0x3e) & 0x6666666666666666;
  uVar10 = (uint)((uVar2 >> 0x29 ^ uVar2) >> 4) & 0x3ff;
  uVar2 = ((ulonglong)uVar10 << 0x29 | (ulonglong)uVar10) << 4 ^ uVar2;
  *(ulonglong *)(lVar9 + 4) = uVar2;
  dvs_0x1b7f41c4_mfort6317_ =
       (uint *)((longlong)dvs_0x1b7f41c4_mfort6317_ + (ulonglong)((uint)(uVar2 >> 2) & 0x604821));
  local_130[0] = (uint)(*(ulonglong *)(lVar9 + 4) >> 0x1f) & 0x7fffffff;
  local_118 = (uint)(*(ulonglong *)(lVar9 + 4) >> 0x16) ^ 0x493628c7;
  local_128 = *(ulonglong *)(lVar9 + 4) ^ 0x12f856af61914c57;
  do {
    FUN_1814a8ffb();
    FUN_1814ab497();
    uVar10 = (*piVar13 + 1) * *piVar13 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  return 0x1eb0603;
}



############ FUN_ 18144f9b0 size=883 ############

/* WARNING: Removing unreachable block (ram,0x00018144fa91) */
/* WARNING: Removing unreachable block (ram,0x00018144fb28) */
/* WARNING: Removing unreachable block (ram,0x00018144fae0) */

void FUN_18144f9b0(undefined8 *param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  code **ppcVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  int unaff_retaddr;
  undefined1 auStack_168 [64];
  uint local_128 [10];
  undefined4 local_100;
  uint local_f8;
  uint local_f4;
  code *local_f0;
  undefined8 *local_e8;
  undefined8 local_98;
  ulonglong local_38;
  
  local_98 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_168;
  *param_1 = PresetMenu::vftable;
  param_1[0x50] = PresetMenu::vftable;
  param_1[0x53] = PresetMenu::vftable;
  param_1[0x54] = PresetMenu::vftable;
  param_1[0x55] = PresetMenu::vftable;
  param_1[0x56] = PresetMenu::vftable;
  uVar4 = (uint)&stack0x00000000;
  uVar3 = uVar4 & 0x17f;
  iVar7 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  local_f8 = 0x92 << ((byte)(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) & 0x1f) ^
             0xec2;
  uVar9 = ((uVar4 & 0x10ff) + 1) * (uVar4 & 0x10ff) + 0x18d9 & 0x80000001;
  uVar3 = uVar4 & 0x23f;
  iVar8 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  uVar4 = uVar4 & 0x1ff;
  iVar7 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_f4 = 0x3660 >> ((char)(((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e) +
                        (char)(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) & 0x1fU)
             ^ (int)(-uVar9 | uVar9) >> 0x1f & 0x36f0U;
  do {
    local_100 = 0xa223041b;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
    local_e8 = param_1;
  } while (uVar3 != 0);
  do {
    puVar5 = local_128;
    FUN_181451b99(puVar5,local_128);
    uVar1 = rdtsc();
    *puVar5 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_128[0] = (local_128[0] * -0x3b314602 >> 0x18 ^ local_128[0] * -0x3b314602) * -0x35943595;
  if (local_128[0] < 0x7fffffff) {
    local_f0 = (code *)0x0;
    do {
      ppcVar6 = &local_f0;
      FUN_18144eae2(ppcVar6,&local_f0);
      *ppcVar6 = FUN_181194940;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_f0)(0,0x4c44);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  FUN_18144fd67();
  FUN_18144fd67();
  return;
}



############ FUN_ 181400bd0 size=469 ############

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

void FUN_181400bd0(undefined8 param_1,undefined4 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint *puVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined1 auStack_1c8 [84];
  uint local_174 [2];
  undefined4 local_16c;
  undefined4 local_168;
  uint local_150;
  code *local_148 [4];
  undefined8 local_128;
  undefined8 local_b8;
  ulonglong local_40;
  
  local_b8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  uVar4 = (uint)&stack0x00000000 & 0x5ff;
  uVar4 = (uVar4 + 1) * uVar4 + 0x47c7 & 0x80000001;
  local_150 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xbe5c ^ 0xba6c;
  local_16c = 0x8a0;
  local_168 = param_2;
  local_128 = param_1;
  do {
    puVar3 = local_174;
    FUN_1814012aa(puVar3,local_174);
    uVar1 = rdtsc();
    *puVar3 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_174[0] = (local_174[0] * -0x12aa00af >> 0x18 ^ local_174[0] * -0x12aa00af) * 0x5bd18ccd;
  if (local_174[0] < 0x25aa13f) {
    do {
      local_148[0] = FUN_1813f2240;
      FUN_18140036d(local_148,0x21f1);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar2 = (*local_148[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  func_0x000181400dd2();
  func_0x000181400dc8();
  return;
}



############ FUN_ 1805a6fd0 size=697 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805a6fd0(char param_1,char param_2,longlong param_3)

{
  void *pvVar1;
  undefined8 uVar2;
  void *_Memory;
  undefined8 ****ppppuVar3;
  longlong lVar4;
  undefined1 auStack_228 [32];
  undefined4 local_208;
  int local_1f8;
  longlong local_1f0;
  undefined8 local_1e8;
  undefined1 local_1c8 [8];
  undefined4 local_1c0;
  undefined8 ***local_1b8 [2];
  undefined8 local_1a8;
  ulonglong local_1a0;
  undefined8 ***local_198 [2];
  undefined8 local_188;
  ulonglong local_180;
  undefined8 ***local_178 [2];
  undefined8 local_168;
  ulonglong local_160;
  undefined4 local_158;
  undefined1 local_148;
  undefined7 uStack_147;
  undefined8 local_138;
  ulonglong local_130;
  undefined **local_128;
  undefined4 local_120;
  undefined1 local_118;
  undefined8 local_108;
  undefined8 local_100;
  undefined1 local_f8;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined1 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined1 local_a8 [128];
  ulonglong local_28;
  
  local_1e8 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_228;
  local_1f0 = param_3;
  FUN_18113eab0();
  local_128 = pace::ExceptionHandler::vftable;
  local_120 = 0;
  local_108 = 0;
  local_100 = 0xf;
  local_118 = 0;
  local_e8 = 0;
  local_e0 = 0xf;
  local_f8 = 0;
  local_d8 = 0;
  local_d0 = 0;
  local_c8 = 0;
  uStack_c0 = 0;
  local_b8 = 0;
  local_1f8 = 0;
  FUN_180575790(local_1c8);
  local_1c0 = 0;
  uVar2 = FUN_1805a7fd0();
  local_138 = 0;
  local_130 = 0xf;
  local_148 = 0;
  lVar4 = -1;
  do {
    lVar4 = lVar4 + 1;
  } while (PTR_s_soothe2_18260e5f8[lVar4] != '\0');
  FUN_1805a6cb0(&local_148);
  local_208 = 0;
  FUN_1805e3090(local_a8,&local_148,uVar2,0);
  if (local_130 < 0x10) {
    local_138 = 0;
    local_130 = 0xf;
    local_148 = 0;
    local_1f8 = FUN_1805e8730(local_a8,param_1 == '\0',param_2 == '\0');
    DAT_18265dbbb = local_1f8 == 0;
    FUN_1805e38f0(local_a8);
    if (param_3 != 0) {
      *(undefined4 *)(param_3 + 8) = local_1c0;
      if ((undefined8 ****)(param_3 + 0x10) != local_1b8) {
        ppppuVar3 = local_1b8;
        if (0xf < local_1a0) {
          ppppuVar3 = (undefined8 ****)local_1b8[0];
        }
        FUN_1805a6cb0((undefined8 ****)(param_3 + 0x10),ppppuVar3,local_1a8);
      }
      if ((undefined8 ****)(param_3 + 0x30) != local_198) {
        ppppuVar3 = local_198;
        if (0xf < local_180) {
          ppppuVar3 = (undefined8 ****)local_198[0];
        }
        FUN_1805a6cb0((undefined8 ****)(param_3 + 0x30),ppppuVar3,local_188);
      }
      if ((undefined8 ****)(param_3 + 0x50) != local_178) {
        ppppuVar3 = local_178;
        if (0xf < local_160) {
          ppppuVar3 = (undefined8 ****)local_178[0];
        }
        FUN_1805a6cb0((undefined8 ****)(param_3 + 0x50),ppppuVar3,local_168);
      }
      *(undefined4 *)(param_3 + 0x70) = local_158;
    }
    FUN_180575800(local_1c8);
    FUN_1805a55f0(&local_128);
  }
  pvVar1 = (void *)CONCAT71(uStack_147,local_148);
  _Memory = pvVar1;
  if ((0xfff < local_130 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805bba40 size=372 ############

void FUN_1805bba40(longlong param_1,undefined4 *param_2,longlong param_3,longlong param_4,
                  longlong param_5)

{
  char cVar1;
  undefined8 *puVar2;
  char *pcVar3;
  
  FUN_18113eab0();
  *param_2 = *(undefined4 *)(param_1 + 8);
  if (0x3f < *(ulonglong *)(param_1 + 0x20)) {
    puVar2 = (undefined8 *)(param_1 + 0x10);
    if (*(ulonglong *)(param_1 + 0x20) < 0x3f) {
      FUN_1805a6b10(puVar2,0x3f - *(ulonglong *)(param_1 + 0x20),0);
    }
    else {
      *(undefined8 *)(param_1 + 0x20) = 0x3f;
      if (0xf < *(ulonglong *)(param_1 + 0x28)) {
        puVar2 = (undefined8 *)*puVar2;
      }
      *(undefined1 *)((longlong)puVar2 + 0x3f) = 0;
    }
  }
  if (*(longlong *)(param_1 + 0x20) != 0) {
    pcVar3 = (char *)(param_1 + 0x10);
    if (0xf < *(ulonglong *)(param_1 + 0x28)) {
      pcVar3 = *(char **)pcVar3;
    }
    param_3 = param_3 - (longlong)pcVar3;
    do {
      cVar1 = *pcVar3;
      pcVar3[param_3] = cVar1;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
  }
  if (0x3f < *(ulonglong *)(param_1 + 0x40)) {
    puVar2 = (undefined8 *)(param_1 + 0x30);
    if (*(ulonglong *)(param_1 + 0x40) < 0x3f) {
      FUN_1805a6b10(puVar2,0x3f - *(ulonglong *)(param_1 + 0x40),0);
    }
    else {
      *(undefined8 *)(param_1 + 0x40) = 0x3f;
      if (0xf < *(ulonglong *)(param_1 + 0x48)) {
        puVar2 = (undefined8 *)*puVar2;
      }
      *(undefined1 *)((longlong)puVar2 + 0x3f) = 0;
    }
  }
  if (*(longlong *)(param_1 + 0x40) != 0) {
    pcVar3 = (char *)(param_1 + 0x30);
    if (0xf < *(ulonglong *)(param_1 + 0x48)) {
      pcVar3 = *(char **)pcVar3;
    }
    param_4 = param_4 - (longlong)pcVar3;
    do {
      cVar1 = *pcVar3;
      pcVar3[param_4] = cVar1;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
  }
  if (0xff < *(ulonglong *)(param_1 + 0x60)) {
    puVar2 = (undefined8 *)(param_1 + 0x50);
    if (*(ulonglong *)(param_1 + 0x60) < 0xff) {
      FUN_1805a6b10(puVar2,0xff - *(ulonglong *)(param_1 + 0x60),0);
    }
    else {
      *(undefined8 *)(param_1 + 0x60) = 0xff;
      if (0xf < *(ulonglong *)(param_1 + 0x68)) {
        puVar2 = (undefined8 *)*puVar2;
      }
      *(undefined1 *)((longlong)puVar2 + 0xff) = 0;
    }
  }
  if (*(longlong *)(param_1 + 0x60) != 0) {
    pcVar3 = (char *)(param_1 + 0x50);
    if (0xf < *(ulonglong *)(param_1 + 0x68)) {
      pcVar3 = *(char **)pcVar3;
    }
    param_5 = param_5 - (longlong)pcVar3;
    do {
      cVar1 = *pcVar3;
      pcVar3[param_5] = cVar1;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
  }
  return;
}



############ FUN_ 1805cdde0 size=98 ############

void FUN_1805cdde0(void)

{
  uint uVar1;
  int unaff_retaddr;
  
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  thunk_FUN_180bc1af0();
  FUN_18113eab0();
  DAT_18265ddc5 = 1;
  FUN_1805c9e00(&DAT_18265ddd8,FUN_1805cac40);
  return;
}



############ FUN_ 180bb71f0 size=46 ############

void FUN_180bb71f0(longlong param_1,undefined8 param_2)

{
  FUN_18113eab0();
  FUN_180bb6500(*(undefined8 *)(param_1 + 0x50),param_1,param_2);
  return;
}



############ FUN_ 180bb9780 size=1887 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180bb9ef5) overlaps instruction at (ram,0x000180bb9ef1)
    */
/* WARNING: Switch with 1 destination removed at 0x000180bba04a */

void FUN_180bb9780(longlong param_1,longlong param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  uint *puVar7;
  code **ppcVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  undefined1 *puVar11;
  undefined4 *puVar12;
  longlong lVar14;
  ulonglong uVar15;
  uint uVar16;
  longlong lVar17;
  bool bVar18;
  int unaff_retaddr;
  uint local_res18 [2];
  undefined8 local_res20;
  undefined1 auStack_88 [32];
  undefined8 local_68;
  undefined4 *local_60;
  code *local_58;
  undefined8 local_50;
  undefined4 *local_48;
  undefined4 *puVar13;
  
  local_50 = 0xfffffffffffffffe;
  uVar4 = 0xf20;
  uVar16 = (uint)&stack0x00000000 & 0x1ff;
  uVar16 = (uVar16 * uVar16 * 0x10 + 4) % 0x13;
  local_48 = &DAT_182670278;
  LOCK();
  bVar18 = DAT_182670278 == 0;
  if (bVar18) {
    DAT_182670278 = 1;
  }
  UNLOCK();
  while (!bVar18) {
    LOCK();
    bVar18 = DAT_182670278 == 0;
    if (bVar18) {
      DAT_182670278 = 1;
    }
    UNLOCK();
  }
  uVar15 = 0xa6c99b1e;
  lVar17 = 0x143fd98;
  local_68 = 0x100;
  local_60 = &DAT_18143fd98;
  bVar18 = true;
  do {
    if (!bVar18) {
      lVar14 = lVar17 + uVar15;
      lVar17 = ~(uVar15 - lVar14) + 1;
      uVar15 = lVar14 - lVar17;
    }
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    bVar18 = false;
  } while (uVar5 != 0);
  local_res20 = 0xc8115116b2ed1140;
  uVar5 = DAT_18143fe6c ^
          (DAT_18143fe68 ^
          (DAT_18143fe64 ^
          (DAT_18143fe60 ^
          (DAT_18143fe5c ^
          (DAT_18143fe58 ^
          (DAT_18143fe54 ^
          (DAT_18143fe50 ^
          (DAT_18143fe4c ^
          (DAT_18143fe48 ^
          (DAT_18143fe44 ^
          (DAT_18143fe40 ^
          (DAT_18143fe3c ^
          (DAT_18143fe38 ^
          (DAT_18143fe34 ^
          (DAT_18143fe30 ^
          (DAT_18143fe2c ^
          (DAT_18143fe28 ^
          (DAT_18143fe24 ^
          (DAT_18143fe20 ^
          (DAT_18143fe1c ^
          (DAT_18143fe18 ^
          ((((((((((((((((((((((((((((((((DAT_18143fd98 ^ 0x811c9dc5) * 0x1000181 ^ DAT_18143fd9c) *
                                        0x1000181 ^ DAT_18143fda0) * 0x1000181 ^ DAT_18143fda4) *
                                      0x1000181 ^ DAT_18143fda8) * 0x1000181 ^ DAT_18143fdac) *
                                    0x1000181 ^ DAT_18143fdb0) * 0x1000181 ^ DAT_18143fdb4) *
                                  0x1000181 ^ DAT_18143fdb8) * 0x1000181 ^ DAT_18143fdbc) *
                                0x1000181 ^ DAT_18143fdc0) * 0x1000181 ^ DAT_18143fdc4) * 0x1000181
                             ^ DAT_18143fdc8) * 0x1000181 ^ DAT_18143fdcc) * 0x1000181 ^
                           DAT_18143fdd0) * 0x1000181 ^ DAT_18143fdd4) * 0x1000181 ^ DAT_18143fdd8)
                         * 0x1000181 ^ DAT_18143fddc) * 0x1000181 ^ DAT_18143fde0) * 0x1000181 ^
                      DAT_18143fde4) * 0x1000181 ^ DAT_18143fde8) * 0x1000181 ^ DAT_18143fdec) *
                    0x1000181 ^ DAT_18143fdf0) * 0x1000181 ^ DAT_18143fdf4) * 0x1000181 ^
                 DAT_18143fdf8) * 0x1000181 ^ DAT_18143fdfc) * 0x1000181 ^ DAT_18143fe00) *
               0x1000181 ^ DAT_18143fe04) * 0x1000181 ^ DAT_18143fe08) * 0x1000181 ^ DAT_18143fe0c)
            * 0x1000181 ^ DAT_18143fe10) * 0x1000181 ^ DAT_18143fe14) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  do {
    puVar7 = local_res18;
                    /* WARNING: Call to offcut address within same function */
    func_0x000180bb9e1a(puVar7,local_res18);
    uVar3 = rdtsc();
    *puVar7 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_180bbb18d();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_res18[0] =
       (local_res18[0] * -0x359413ad >> 0x18 ^ local_res18[0] * -0x359413ad) * 0x1a855bd1;
  if (local_res18[0] < 0x201007f) {
    local_58 = (code *)0x0;
    do {
      ppcVar8 = &local_58;
      FUN_180bb9185(ppcVar8,&local_58);
      *ppcVar8 = FUN_1813f2240;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar1 = (*local_58)(0,0xabd7);
    if (1 < uVar1) {
      FUN_18113eab0();
    }
  }
  uVar1 = (ulonglong)
          ((DAT_18143fe80 ^
           (DAT_18143fe7c ^
           (DAT_18143fe78 ^
           (DAT_18143fe74 ^ (DAT_18143fe70 ^ uVar5 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181);
  do {
    uVar1 = 0xfffffffffffff0e0 - (~(uVar1 + 0xf20) + 1);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = DAT_18143fe94 ^
          ((((DAT_18143fe84 ^ (uint)uVar1) * 0x1000181 ^ DAT_18143fe88) * 0x1000181 ^ DAT_18143fe8c)
           * 0x1000181 ^ DAT_18143fe90) * 0x1000181;
  do {
    uVar2 = -param_1 ^ 0xffffffffffffffff;
    param_1 = uVar2 + 1;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = 0;
  do {
    bVar18 = (POPCOUNT(uVar6 & 0xff) & 1U) == 0;
    uVar9 = 0;
    FUN_180bbb794();
    if ((bVar18) && ((uVar9 & 0x42) != 0)) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = ((uVar5 * 0x10001810 | uVar5 * 0x1000181 >> 0x1c) & 0xc3c3c3c3 |
          (uVar5 * 0x1000181 >> 4 | uVar5 * 0x10000000) & 0x3c3c3c3c) + 0xd24d9893;
  uVar6 = uVar5 * 0x80 | uVar5 >> 0x19;
  uVar9 = (ulonglong)uVar6;
  uVar5 = (uVar5 & 0x1ffffff ^ uVar6) >> 5 & 0xf;
  uVar10 = 0;
  if (((uint)local_res20 ^ ((uVar5 << 7 | uVar5) << 5 ^ uVar6) + 0xbf31575a) * 0x27 != 0) {
    do {
      uVar4 = func_0x000180bd8130(uVar2 + 9);
      *(undefined8 *)(param_2 + uVar10 * 8) = uVar4;
      uVar10 = uVar10 + 1;
    } while (uVar10 < 3);
    FUN_1805a9280(0xf20,uVar9,(-lVar17 ^ 0xffffffffffffffffU) + 1,
                  ((uVar15 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
    return;
  }
  do {
    uVar3 = func_0x000180bd8130(uVar2 + 9);
    *(undefined8 *)(param_2 + uVar10 * 8) = uVar3;
    uVar10 = uVar10 + 1;
  } while (uVar10 < 4);
  puVar11 = auStack_88;
  do {
    *(ulonglong *)(puVar11 + -8) = uVar9;
    *(ulonglong *)(puVar11 + -0x10) = uVar1;
    *(undefined8 *)(puVar11 + -0x18) = uVar4;
    lVar17 = -(longlong)(int)(~((int)(-uVar16 | uVar16) >> 0x1f & 0xfffff6ffU) & 0xdd04);
    uVar4 = *(undefined8 *)(puVar11 + lVar17 + 0x8e8);
    uVar1 = *(ulonglong *)(puVar11 + lVar17 + 0x8f0);
    uVar9 = *(ulonglong *)(puVar11 + lVar17 + 0x8f8);
    puVar12 = (undefined4 *)(puVar11 + lVar17 + 0x900);
    puVar13 = (undefined4 *)(puVar11 + lVar17 + 0x900);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    puVar11 = puVar11 + lVar17 + 0x900;
  } while (uVar5 != 0);
  LOCK();
  *puVar13 = *puVar12;
  UNLOCK();
  DAT_182670278 = 0;
  return;
}



############ FUN_ 180bdc9d0 size=2666 ############

/* WARNING: Instruction at (ram,0x000180bdce52) overlaps instruction at (ram,0x000180bdce4e)
    */
/* WARNING: Removing unreachable block (ram,0x000180bdd05e) */
/* WARNING: Removing unreachable block (ram,0x000180bdce4e) */
/* WARNING: Removing unreachable block (ram,0x000180bdcc52) */
/* WARNING: Removing unreachable block (ram,0x000180bdca08) */
/* WARNING: Removing unreachable block (ram,0x000180bdccd3) */
/* WARNING: Removing unreachable block (ram,0x000180bdd044) */
/* WARNING: Removing unreachable block (ram,0x000180bdd402) */
/* WARNING: Removing unreachable block (ram,0x000180bdcc0c) */
/* WARNING: Removing unreachable block (ram,0x000180bdca17) */
/* WARNING: Removing unreachable block (ram,0x000180bdd4bf) */

void FUN_180bdc9d0(undefined4 param_1)

{
  undefined8 uVar1;
  char cVar2;
  char cVar3;
  byte bVar4;
  ulonglong uVar5;
  code **ppcVar6;
  uint uVar7;
  longlong lVar8;
  ulonglong uVar9;
  int iVar10;
  int *piVar11;
  int *piVar12;
  undefined1 *puVar13;
  uint uVar14;
  int iVar15;
  uint uVar16;
  uint uVar17;
  ulonglong uVar18;
  int unaff_retaddr;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  code *local_40;
  
  puVar13 = auStack_68;
  uVar7 = (uint)&stack0x00000000 | 1;
  uVar18 = (ulonglong)(((int)(-uVar7 | uVar7) >> 0x1f) * -0x8178 ^ 0x8278);
  local_48 = 0x1806974d4;
  uVar17 = (iRam00000001806974d4 + 0x4611a0ec) * -0x395b586d;
  uVar17 = uVar17 ^ uVar17 >> 0x10;
  uVar7 = uVar17 & 0xf | 0x23;
  uVar16 = uVar7 * uVar7 * 0x801d ^ 0x4aca997;
  uVar7 = uVar17 & 0x2ff;
  uVar14 = uVar17 & 0x13f;
  iVar10 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  iVar15 = (uVar14 + 2) * (uVar14 + 1) * uVar14;
  lVar8 = 4;
  piVar11 = (int *)(((longlong)
                     (0x159 << (((byte)(((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >>
                                       0x1e) ^
                                (char)iVar15 +
                                (char)((ulonglong)((longlong)iVar15 * 0x55555556) >> 0x20) * -3) &
                               0x1f)) ^ 0xfffffffffffffe9dU) + 0x1806974d4 +
                   ((longlong)(((int)(-uVar16 | uVar16) >> 0x1f) * -0xe0b) ^ 0xe4bU));
  uVar7 = (*piVar11 + uVar17) * -0x395b586d;
  do {
    piVar12 = piVar11;
    uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[1]) * -0x395b586d;
    uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[2]) * -0x395b586d;
    uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[3]) * -0x395b586d;
    uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[4]) * -0x395b586d;
    uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[5]) * -0x395b586d;
    lVar8 = lVar8 + -1;
    piVar11 = piVar12 + 5;
  } while (lVar8 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000180bdce37(0xf11c);
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar7 = (piVar12[6] + (uVar7 ^ uVar7 >> 0x10)) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[7]) * -0x395b586d;
  do {
    uVar18 = (~uVar18 + 1 ^ 0xffffffffffffffff) + 1;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar7 = (piVar12[8] + (uVar7 ^ uVar7 >> 0x10)) * -0x395b586d;
  do {
    uVar1 = rdtsc();
    FUN_180bdd506();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar14 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x3b317a15;
  if ((uVar14 >> 0x18 ^ uVar14) * -0x7332a42f < 0x201007f) {
    local_40 = (code *)0x0;
    do {
      ppcVar6 = &local_40;
      FUN_180bdeca3(ppcVar6,&local_40);
      *ppcVar6 = FUN_181194940;
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar5 = (*local_40)(0,0x8103);
    if (1 < uVar5) {
      FUN_18113eab0();
    }
  }
  do {
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar7 = (piVar12[9] + (uVar7 ^ uVar7 >> 0x10)) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[10]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xb]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xc]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xd]) * -0x395b586d;
  piVar11 = piVar12 + 0xf;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xe]) * -0x395b586d;
  bVar4 = (byte)piVar11 & 0x6f;
  uVar16 = ((uVar7 >> 0x10 ^ uVar7) + *piVar11) * -0x395b586d;
  uVar16 = uVar16 ^ uVar16 >> 0x10;
  uVar14 = uVar16 & 0x1f;
  uVar7 = uVar14 + 1;
  uVar5 = (ulonglong)uVar7;
  cVar3 = (char)uVar14;
  cVar2 = (char)uVar7;
  piVar11 = (int *)((longlong)piVar11 +
                   ((longlong)
                    (0x2960 <<
                    (bVar4 * bVar4 * (bVar4 + 1) * (bVar4 + 1) & 3 ^
                    cVar3 * cVar3 * cVar2 * cVar2 & 3U)) ^ 0x2948U));
  uVar7 = (piVar11[-9] + uVar16) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-8]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-7]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-6]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-5]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-4]) * -0x395b586d;
  do {
    FUN_180bdbdc4(0xf11c);
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar7 = (piVar11[-3] + (uVar7 ^ uVar7 >> 0x10)) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-2]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[-1]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + *piVar11) * -0x395b586d;
  piVar12 = piVar11 + 2;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar11[1]) * -0x395b586d;
  uVar14 = (uint)piVar12 & 0x33ff;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + *piVar12) * -0x395b586d;
  uVar9 = (ulonglong)uVar7;
  piVar12 = (int *)((longlong)piVar12 +
                   (100 - ((longlong)(int)(((uVar14 - 1) * uVar14 & 1) + 0x4294) ^ 0x42f4U)));
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + *piVar12) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[1]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[2]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[3]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[4]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[5]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[6]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[7]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[8]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[9]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[10]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xb]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xc]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xd]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xe]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0xf]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0x10]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0x11]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0x12]) * -0x395b586d;
  uVar7 = ((uVar7 >> 0x10 ^ uVar7) + piVar12[0x13]) * -0x395b586d;
  do {
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar7 = uVar7 ^ uVar7 >> 0x10 ^ 0x74affa64;
  uVar7 = (uVar7 << 0x15 | uVar7 >> 0xb) ^ 0x3bc5a0ee;
  uVar7 = (uVar7 << 0xc | uVar7 >> 0x14) + 0x732e2dfa;
  do {
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  if (((uVar7 >> 0xc | uVar7 * 0x100000) ^ 0x80d37bfb) * 0xe != 0) {
    DAT_182670294 = param_1;
                    /* WARNING: Call to offcut address within same function */
    func_0x000180bdd3f1();
    thunk_FUN_1805a9280();
    return;
  }
  iVar10 = (int)uVar18;
  do {
    *(ulonglong *)(puVar13 + -8) = uVar5;
    *(ulonglong *)(puVar13 + -0x10) = uVar18;
    *(ulonglong *)(puVar13 + -0x18) = uVar9;
    lVar8 = -(longlong)iVar10;
    uVar9 = *(ulonglong *)(puVar13 + lVar8 + 0x2e8);
    uVar18 = *(ulonglong *)(puVar13 + lVar8 + 0x2f0);
    uVar5 = *(ulonglong *)(puVar13 + lVar8 + 0x2f8);
    puVar13 = puVar13 + lVar8 + 0x300;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  DAT_182670294 = param_1;
  return;
}



############ FUN_ 180bc5e30 size=91 ############

void FUN_180bc5e30(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  char cVar2;
  longlong local_res8 [4];
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_18113eab0();
  while( true ) {
    if (*(char *)((longlong)param_1 + 9) != '\0') {
      return;
    }
    local_res8[0] = param_1[10];
    plVar1 = (longlong *)param_1[9];
    if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    cVar2 = (**(code **)(*plVar1 + 0x10))(plVar1,local_res8,param_3,param_4,uVar3);
    if (cVar2 == '\0') {
      return;
    }
    if (*(char *)((longlong)param_1 + 9) != '\0') break;
    (**(code **)(*param_1 + 0x20))(param_1);
  }
  return;
}



############ FUN_ 180bc7d90 size=812 ############

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

void FUN_180bc7d90(undefined8 *param_1,undefined8 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int unaff_retaddr;
  undefined1 auStack_b8 [32];
  undefined *local_98;
  uint local_90;
  undefined8 local_88;
  undefined **local_80;
  undefined8 local_70;
  uint local_64;
  uint local_60;
  code *local_58;
  undefined8 *local_50;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_b8;
  param_1[1] = param_2;
  *param_1 = pace::dlc::CritcalSectionLocker::vftable;
  uVar4 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0xd00) == 0) {
    uVar5 = uVar4 & 0x37f;
    uVar5 = ((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3;
  }
  else {
    uVar5 = 0;
  }
  uVar3 = uVar4 & 0x3ff;
  local_60 = ((int)(-(uVar4 | 1) | uVar4 | 1) >> 0x1f) * 0x2482 & 0xdb7eU ^ uVar5 ^ 0xd0ae;
  iVar6 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  uVar4 = (((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) + 0x6793f2f;
  local_64 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xe5a1 ^ 0xe2d1;
  local_70 = 0x6f01000;
  local_80 = &PTR__guard_check_icall_181bab6a8;
  local_98 = &DAT_181bab6b8;
  local_88 = 0xe09527395eb9c57;
  local_50 = param_1;
  do {
    uVar1 = rdtsc();
    local_90 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_180bc63e7();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_90 = (local_90 * 0x1a851a85 >> 0x18 ^ local_90 * 0x1a851a85) * -0xae12ab;
  if (local_90 < 0x1999999f) {
    do {
      local_58 = FUN_181194940;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar2 = FUN_181194940(0,0xa88);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  FUN_180bc80e9();
  return;
}



############ FUN_ 180bcde40 size=536 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180bcdf82) */

void FUN_180bcde40(longlong param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  longlong lVar4;
  longlong lVar5;
  int unaff_retaddr;
  undefined1 local_c8 [48];
  uint local_98 [6];
  code *local_80;
  longlong local_58;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)local_c8;
  local_58 = param_1;
  do {
    uVar1 = rdtsc();
    local_98[0] = (uint)((ulonglong)uVar1 >> 0x20);
    lVar4 = CONCAT44((int)((ulonglong)local_98 >> 0x20),local_98[0]);
    local_98[0] = (uint)uVar1 ^ local_98[0];
    FUN_180bcea56();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_98[0] = (local_98[0] * -0x3b317333 >> 0x18 ^ local_98[0] * -0x3b317333) * -0x13ac166b;
  if (local_98[0] < 0x7fffffff) {
    do {
      lVar4 = 0xddbd;
      local_80 = FUN_18141db20;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = FUN_18141db20(0,0xddbd);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  *(undefined8 *)(param_1 + 0xc0) = 0;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  InitializeConditionVariable((PCONDITION_VARIABLE)(param_1 + 0xb8));
  do {
    lVar5 = lVar4 + param_1;
    param_1 = param_1 - lVar5;
    lVar4 = -param_1;
    param_1 = lVar5 + param_1;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
                    /* WARNING: Call to offcut address within same function */
  func_0x000180bce078(0,lVar4);
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180bcea70 size=39 ############

undefined8 FUN_180bcea70(longlong *param_1)

{
  FUN_18113eab0();
  (**(code **)(*param_1 + 0x18))(param_1);
  FUN_180bcf4e0(param_1);
  return 0;
}



############ FUN_ 180bceae0 size=23 ############

void FUN_180bceae0(undefined8 param_1)

{
  code *pcVar1;
  
  FUN_18113eab0();
  FUN_180bceaa0(param_1);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



############ FUN_ 180bd2a90 size=1648 ############

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

void FUN_180bd2a90(longlong param_1)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined4 *puVar4;
  char cVar5;
  longlong lVar6;
  ulonglong uVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  longlong *plVar11;
  longlong *plVar12;
  uint uVar13;
  longlong lVar14;
  int unaff_retaddr;
  undefined1 auStack_118 [32];
  longlong local_f8;
  undefined4 local_e8;
  uint local_e4;
  undefined8 local_d8;
  undefined *local_d0;
  undefined8 local_c8;
  undefined *local_c0;
  undefined4 *local_b8;
  longlong *plStack_b0;
  uint local_a8;
  uint local_a4;
  code *local_a0;
  undefined8 local_98;
  undefined4 *local_90;
  longlong *local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined1 local_70 [16];
  longlong *local_60;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_30;
  
  local_98 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_118;
  uVar13 = (uint)&stack0x00000000;
  uVar10 = (((uVar13 & 0x3dff) + 1) * (uVar13 & 0x3dff) + 7) % 0x51;
  iVar8 = (uVar13 & 0x4bff) * (uVar13 & 0x4bff) + 1;
  uVar9 = (iVar8 >> 4) + (iVar8 >> 1) + iVar8 * 0x24924924 >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  local_a4 = 0xb338U - ((int)((-uVar9 | uVar9) ^ (-uVar10 | uVar10)) >> 0x1f) ^ 0xb3f8;
  uVar9 = ((uVar13 & 0x15ff) * (uVar13 & 0x15ff) * 0x10 + 4) % 0x13;
  local_a8 = 0x647dU - ((int)(-uVar9 | uVar9) >> 0x1f) ^ 0x655e;
  do {
    local_b8 = (undefined4 *)0x0;
    plStack_b0 = (longlong *)0x0;
    FUN_180bc7d90(local_70,param_1 + 0x88);
    lVar14 = *(longlong *)(param_1 + 0x118);
    if (lVar14 == 0) {
      lVar14 = 0;
    }
    else {
      local_50 = *(ulonglong *)(param_1 + 0x110);
      local_58 = 0;
      local_60 = *(longlong **)(param_1 + 0xf8);
      lVar6 = 0;
      if (local_60 != (longlong *)0x0) {
        lVar6 = *local_60;
      }
      puVar2 = *(undefined8 **)
                (*(longlong *)(lVar6 + 8) + (*(longlong *)(lVar6 + 0x10) - 1U & local_50) * 8);
      if (puVar2[1] != 0) {
        LOCK();
        piVar1 = (int *)(puVar2[1] + 8);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
      local_b8 = (undefined4 *)*puVar2;
      plStack_b0 = (longlong *)puVar2[1];
      local_80 = 0;
      local_78 = 0;
      plVar12 = *(longlong **)
                 (*(longlong *)
                   (*(longlong *)(param_1 + 0x100) +
                   (*(longlong *)(param_1 + 0x108) - 1U & *(ulonglong *)(param_1 + 0x110)) * 8) + 8)
      ;
      local_90 = local_b8;
      local_88 = plStack_b0;
      if (plVar12 != (longlong *)0x0) {
        LOCK();
        plVar11 = plVar12 + 1;
        lVar6 = *plVar11;
        *(int *)plVar11 = (int)*plVar11 + -1;
        UNLOCK();
        if ((int)lVar6 == 1) {
          (**(code **)*plVar12)(plVar12);
          LOCK();
          piVar1 = (int *)((longlong)plVar12 + 0xc);
          iVar8 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar8 == 1) {
            (**(code **)(*plVar12 + 8))(plVar12);
          }
        }
      }
      plVar12 = (longlong *)(param_1 + 0x118);
      *plVar12 = *plVar12 + -1;
      if (*plVar12 == 0) {
        *(undefined8 *)(param_1 + 0x110) = 0;
        lVar14 = lVar14 + -1;
      }
      else {
        *(longlong *)(param_1 + 0x110) = *(longlong *)(param_1 + 0x110) + 1;
        lVar14 = lVar14 + -1;
      }
    }
    puVar4 = local_b8;
    FUN_180bca970(local_70);
    if (puVar4 != (undefined4 *)0x0) {
      local_f8 = (longlong)(puVar4 + 0x12);
      if (0xf < *(ulonglong *)(puVar4 + 0x18)) {
        local_f8 = *(longlong *)local_f8;
      }
      plVar12 = (longlong *)(puVar4 + 10);
      if (0xf < *(ulonglong *)(puVar4 + 0x10)) {
        plVar12 = (longlong *)*plVar12;
      }
      plVar11 = (longlong *)(puVar4 + 2);
      if (0xf < *(ulonglong *)(puVar4 + 8)) {
        plVar11 = (longlong *)*plVar11;
      }
      FUN_181143610(*puVar4,puVar4[1],plVar11,plVar12);
    }
    plVar12 = plStack_b0;
    if (plStack_b0 != (longlong *)0x0) {
      LOCK();
      plVar11 = plStack_b0 + 1;
      lVar6 = *plVar11;
      *(int *)plVar11 = (int)*plVar11 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)*plStack_b0)(plStack_b0);
        LOCK();
        piVar1 = (int *)((longlong)plVar12 + 0xc);
        iVar8 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)(*plStack_b0 + 8))();
        }
      }
    }
  } while ((lVar14 != 0) && (cVar5 = FUN_180bc54b0(param_1), cVar5 == '\0'));
  local_c0 = &DAT_18244d398;
  local_d0 = &DAT_18246d358;
  local_c8 = 0xbd008f2f2733afb9;
  local_d8 = 0x2733afb9;
  do {
    uVar3 = rdtsc();
    local_e4 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_180bd3125();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_e4 = (local_e4 * -0x3d4d7a15 >> 0x18 ^ local_e4 * -0x3d4d7a15) * -0xae3d4e;
  if (local_e4 < 0x7fffffff) {
    do {
      local_a0 = FUN_1813f2240;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar7 = FUN_1813f2240();
    if (1 < uVar7) {
      FUN_18113eab0();
    }
  }
  local_e8 = 0;
  FUN_180bd49ad();
  FUN_180bd3126();
  return;
}



############ FUN_ 180c48510 size=1269 ############

/* WARNING: Instruction at (ram,0x000180c48807) overlaps instruction at (ram,0x000180c48805)
    */
/* WARNING: Removing unreachable block (ram,0x000180c48555) */
/* WARNING: Removing unreachable block (ram,0x000180c485b8) */

undefined1 FUN_180c48510(longlong param_1)

{
  undefined1 uVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  code **ppcVar5;
  longlong lVar6;
  longlong in_R11;
  bool bVar7;
  int unaff_retaddr;
  undefined1 auStack_1e8 [80];
  undefined4 local_198;
  undefined *local_190;
  undefined *local_188;
  uint local_180;
  undefined *local_178;
  undefined *local_168;
  undefined4 local_154;
  undefined4 local_150;
  code *local_148 [4];
  undefined1 local_128 [232];
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  local_154 = 0x530;
  local_150 = 0xd40;
  LOCK();
  bVar7 = DAT_182670778 == 0;
  if (bVar7) {
    DAT_182670778 = 1;
  }
  UNLOCK();
  while (!bVar7) {
    LOCK();
    bVar7 = DAT_182670778 == 0;
    if (bVar7) {
      DAT_182670778 = 1;
    }
    UNLOCK();
  }
  local_178 = &DAT_1823ed458;
  local_190 = &DAT_18240d418;
  local_168 = &DAT_186f12d18;
  local_198 = 0;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x46015029;
  local_180 = (uVar4 >> 0x18 ^ uVar4) * -0x166a00af;
  local_188 = local_190;
  if (local_180 < 0x7fffffff) {
    local_148[0] = (code *)0x0;
    do {
      ppcVar5 = local_148;
      FUN_180c49c1b(ppcVar5,local_148);
      *ppcVar5 = FUN_1813bba80;
      FUN_180c471a7();
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_148[0])();
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  do {
    lVar6 = 0;
    uVar3 = FUN_180bd9af0(local_128,0,param_1);
  } while ((uVar3 & 0xfffffffd) == 0);
  do {
    uVar3 = -(lVar6 - in_R11);
    func_0x000160bbd1a7(0x4024,uVar3);
    lVar6 = ~uVar3 + 1 + in_R11;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    uVar3 = (ulonglong)uVar4;
  } while (uVar4 != 0);
                    /* WARNING: Call to offcut address within same function */
  func_0x000180c48860();
  uVar1 = *(undefined1 *)(param_1 + 4);
  *(int *)(uVar3 + 0x5f) = *(int *)(uVar3 + 0x5f) + 0x49cf8b4d;
  return uVar1;
}



############ FUN_ 180c4a8c4 size=288 ############

/* WARNING: Instruction at (ram,0x000180c4aa0d) overlaps instruction at (ram,0x000180c4aa09)
    */
/* WARNING: Control flow encountered bad instruction data */

void FUN_180c4a8c4(void)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint *puVar4;
  longlong *plVar5;
  longlong unaff_RBP;
  longlong unaff_RSI;
  longlong in_R11;
  int *unaff_R12;
  longlong lVar6;
  bool bVar7;
  undefined8 in_stack_00000050;
  longlong in_stack_00000058;
  ulonglong in_stack_00000070;
  longlong lStack_30;
  longlong lStack_28;
  undefined *puStack_20;
  
  uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
  }
  if (uVar3 != 0) {
    FUN_180c4a8c4(51000);
    return;
  }
  do {
    puVar4 = (uint *)((longlong)&stack0x00000050 + 4);
    func_0x000180c497ab(puVar4,(longlong)&stack0x00000050 + 4);
    uVar1 = rdtsc();
    *puVar4 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  in_stack_00000050._4_4_ =
       (in_stack_00000050._4_4_ * 0x5bd1ca6b >> 0x18 ^ in_stack_00000050._4_4_ * 0x5bd1ca6b) *
       -0x3594166b;
  if (in_stack_00000050._4_4_ < 0x7fffffff) {
    *(undefined8 *)(unaff_RBP + -0x70) = 0;
    do {
      *(code **)(unaff_RBP + -0x70) = FUN_181194940;
      uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (**(code **)(unaff_RBP + -0x70))(0,0xb02a);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    uVar2 = 51000;
    FUN_180c4a8c3();
    if ((uVar2 & 0xf700) == 0) {
      func_0x0001238c2b56();
      in(0x47);
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    func_0x000180c4b8ec();
    uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  lVar6 = in_stack_00000058 - in_stack_00000070;
  plVar5 = (longlong *)&stack0xffffffffffffffe8;
  bVar7 = (longlong)-((in_stack_00000070 ^ 0xffffffffffffffff) + 1) < 0;
                    /* WARNING: Call to offcut address within same function */
  puStack_20 = &UNK_180c4aa99;
  func_0x000180c4aa9c();
  if (!bVar7) {
    puStack_20 = (undefined *)(unaff_RSI + -0x199a);
    lStack_28 = unaff_RSI + 0x4f5024;
    lStack_30 = unaff_RSI + -0xb97;
    plVar5 = &lStack_30;
    lVar6 = -0x199a;
    in_R11 = unaff_RSI;
  }
  *(longlong *)((longlong)plVar5 + -8) = lVar6 + in_R11;
  *(longlong *)((longlong)plVar5 + -0x10) = in_R11 + -0xb97;
  *(longlong *)((longlong)plVar5 + -0x18) = in_R11 + -0x76ecb;
                    /* WARNING: Could not recover jumptable at 0x000180c4ab78. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(in_R11 + 0x4f5024))();
  return;
}



############ FUN_ 181141d90 size=1098 ############

/* WARNING: Removing unreachable block (ram,0x000181141ddc) */
/* WARNING: Removing unreachable block (ram,0x000181141e54) */
/* WARNING: Removing unreachable block (ram,0x000181141f57) */
/* WARNING: Removing unreachable block (ram,0x000181141deb) */
/* WARNING: Removing unreachable block (ram,0x000181141e29) */

longlong FUN_181141d90(void)

{
  undefined1 uVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  longlong lVar4;
  code **ppcVar5;
  undefined2 uVar6;
  longlong *plVar7;
  undefined1 *unaff_RDI;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int unaff_retaddr;
  undefined1 auStack_178 [60];
  uint local_13c;
  uint local_f0;
  uint local_ec;
  code *local_e8 [22];
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_178;
  uVar10 = (uint)&stack0x00000000;
  uVar9 = ((uVar10 & 0x2ff) + 1) * (uVar10 & 0x2ff) + 0x2cd5 & 0x80000001;
  uVar8 = ((uVar10 & 0x1bff) * (uVar10 & 0x1bff) * 0x10 + 4) % 0x13;
  local_ec = ((int)(uVar8 | -uVar8) >> 0x1f) * -0x4b12 ^ ((int)(-uVar9 | uVar9) >> 0x1f) * -0x48d2;
  uVar9 = (uVar10 & 0x28ff) * (uVar10 & 0x28ff) + 1;
  local_f0 = (0x4380 >> ((byte)(0 >> ((char)uVar9 + (char)(uVar9 / 7) * -7 & 0x1fU)) & 0x1f) |
             0xc383U) ^ 0xcff3;
  do {
    uVar2 = rdtsc();
    uVar6 = (undefined2)((ulonglong)uVar2 >> 0x20);
    local_13c = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_181140175();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_13c = (local_13c * -0xae166b >> 0x18 ^ local_13c * -0xae166b) * -0x51caa42f;
  if (local_13c < 0x7fffffff) {
    local_e8[0] = (code *)0x0;
    do {
      ppcVar5 = local_e8;
      FUN_181140b90(ppcVar5,local_e8);
      uVar6 = 0x4a23;
      *ppcVar5 = FUN_1813bba80;
      FUN_1811408bc();
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar3 = (*local_e8[0])();
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
                    /* WARNING: Call to offcut address within same function */
  uVar3 = func_0x00018114208f();
  uVar1 = in(uVar6);
  *unaff_RDI = uVar1;
  plVar7 = (longlong *)(ulonglong)((int)&stack0xfffffffffffffe70 - 0x10);
  lVar4 = plVar7[2];
  plVar7[2] = lVar4 + 0x1ad;
  plVar7[1] = lVar4 + -0x8e3;
  *plVar7 = lVar4 + 0x71f0;
  plVar7[-1] = lVar4 + 0x2f52;
  plVar7[-2] = lVar4 + 0x1bfc;
  plVar7[-3] = lVar4 + -0xa0c;
  plVar7[-4] = lVar4 + 0x8c09;
  plVar7[-5] = lVar4 + 0x1ded;
  plVar7[-6] = lVar4 + 0x1ded;
  plVar7[-7] = lVar4 + 0x52bb;
  plVar7[-8] = lVar4 + 0x540f;
  if (-0x5410 < lVar4) {
    return ((uVar3 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
  }
  lVar4 = FUN_1811421fa();
  return lVar4;
}



############ FUN_ 181146d00 size=763 ############

/* WARNING: Instruction at (ram,0x000181146e4d) overlaps instruction at (ram,0x000181146e4c)
    */

void FUN_181146d00(void)

{
  code *pcVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  undefined *local_90;
  uint local_88;
  undefined8 local_80;
  undefined8 local_70;
  undefined *local_68;
  undefined4 local_60;
  uint local_5c;
  code *local_58;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_60 = 0x280;
  uVar4 = (uint)&stack0x00000000 & 0x13ff;
  uVar4 = (uVar4 * uVar4 * 0x10 + 4) % 0x13;
  local_5c = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xbecc ^ 0xb9bc;
  do {
    FUN_18114714c();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_70 = 0;
  local_80 = 0xbfe8;
  local_68 = &DAT_181f0de18;
  local_90 = &DAT_181f19e00;
  local_98 = 0xb3;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x35943b32;
  local_88 = (uVar4 >> 0x18 ^ uVar4) * -0xae3595;
  if (local_88 < 0x7fffffff) {
    do {
      local_58 = FUN_18141db20;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_18141db20(0,0x4070);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  local_70 = 0x20205d37638e3df6;
  local_90 = (undefined *)CONCAT44(local_90._4_4_,0x638e3df6);
  FUN_181147025();
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



############ FUN_ 18114b3b0 size=98 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18114b3b0(void)

{
  int iVar1;
  
  FUN_18113eab0();
  iVar1 = _Mtx_lock(&DAT_18267b100);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  _DAT_18267b1a0 = _DAT_18267b1a0 + -1;
  FUN_1811497a0();
  iVar1 = _Mtx_unlock(&DAT_18267b100);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  return;
}



############ FUN_ 18114b420 size=102 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18114b420(void)

{
  int iVar1;
  
  FUN_18113eab0();
  iVar1 = _Mtx_lock(&DAT_18267b100);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  _DAT_18267b1a0 = _DAT_18267b1a0 + 1;
  FUN_1811497a0();
  iVar1 = _Mtx_unlock(&DAT_18267b100);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  FUN_181145ea0();
  return;
}



############ FUN_ 18114c5d0 size=27 ############

void FUN_18114c5d0(undefined8 param_1)

{
  FUN_18113eab0();
  FUN_18114b490(param_1);
  return;
}



############ FUN_ 181152c00 size=1757 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_181152c00(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  ulonglong uVar2;
  byte bVar3;
  uint *puVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  ulonglong uVar9;
  longlong *plVar10;
  ulonglong uVar11;
  longlong lVar12;
  longlong unaff_R12;
  int unaff_retaddr;
  undefined1 auStack_198 [32];
  undefined4 local_178;
  uint local_174;
  undefined4 local_170;
  undefined *local_168;
  uint local_160;
  uint local_158;
  undefined1 *local_150;
  ulonglong local_148;
  undefined4 local_140;
  undefined8 local_128;
  undefined4 local_11c;
  uint local_118;
  code *local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined4 local_e8;
  longlong local_e0 [4];
  undefined4 local_c0 [30];
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar5 = (uint)&stack0x00000000 & 0x2dff;
  iVar6 = uVar5 * uVar5 + 1;
  uVar5 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
  if (((int)(uVar5 - 7) >> 0x1f & uVar5 & 0x28) == 0) {
    if (((ulonglong)&stack0x00000000 & 0x600) == 0) {
      bVar3 = 0;
    }
    else {
      uVar5 = (uint)&stack0x00000000 & 0x37f;
      iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
      bVar3 = (byte)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e);
    }
    local_118 = 0x6cdb >> (bVar3 & 0x1f);
  }
  else {
    local_118 = 0x6cdb;
  }
  local_118 = local_118 ^ 0x663b;
  local_11c = 0x380;
  local_148 = 0;
  local_128 = 0xb30;
  local_168 = &DAT_1805cb61c;
  local_150 = &LAB_1805cc14c;
  do {
    uVar1 = rdtsc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * 0x1a85ed55;
  local_160 = (uVar5 >> 0x18 ^ uVar5) * -0x166a13ad;
  local_108 = param_1;
  local_100 = param_3;
  local_f8 = param_2;
  local_f0 = param_2;
  if (local_160 < 0x9a90e7f) {
    do {
      local_110 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = FUN_1813bba80(0,0x92e3);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    plVar10 = local_e0;
    puVar8 = local_c0;
    puVar4 = &local_174;
    FUN_181153327();
    *puVar4 = 0x3116009c;
    *puVar8 = 0x5d;
    *plVar10 = 0x181152f17;
    FUN_181153327();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((local_174 << 4 | local_174 >> 0x1c) & 0xd2d2d2d2 |
          (local_174 >> 4 | local_174 << 0x1c) & 0x2d2d2d2d) ^ 0x4cdb5b72;
  uVar5 = ((uVar5 & 0xf0f0f0f) << 4 | uVar5 >> 4 & 0xf0f0f0f) + 0xd14d53b1;
  uVar7 = uVar5 * 0x40000000 | uVar5 >> 2;
  uVar5 = (uVar7 >> 0x12 ^ uVar7) >> 1 & 0x1fff;
  uVar7 = (uVar5 << 0x12 | uVar5) * 2 ^ uVar7;
  uVar5 = (uVar7 >> 9 | uVar7 << 0x17) + 0xa27cf302;
  do {
    local_e8 = 0x13;
    local_e0[1] = 0x181152fd7;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_e0[0] = (int)(uVar5 >> 0x19 | uVar5 * 0x80) + local_e0[0];
  local_174 = 0;
  local_140 = 0;
  uVar11 = 0x1826222d4;
  *(longlong *)(local_e0[0] + 4) =
       *(longlong *)(local_e0[0] + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x3e72c9fd_mfort6317_ >> 0x14) & 0x1063c82);
  uVar2 = *(ulonglong *)(local_e0[0] + 4);
  uVar9 = (ulonglong)((uint)((uVar2 >> 0x1e ^ uVar2) >> 2) & 0x7ffffff);
  uVar2 = (uVar9 << 0x1e | uVar9) << 2 ^ uVar2;
  uVar2 = (uVar2 >> 0x21 | uVar2 << 0x1f) + 0x5fb3300dab489f57;
  uVar5 = (uint)((uVar2 >> 0x18 ^ uVar2) >> 0x15) & 0x3fff;
  uVar2 = (((ulonglong)uVar5 << 0x18 | (ulonglong)uVar5) << 0x15 ^ uVar2) + 0xf68993b5a69cab04;
  uVar9 = (uVar2 >> 0x35 | uVar2 * 0x800) ^ 0x82551130ffc2b3c2;
  uVar5 = (uint)((uVar9 >> 0x19 ^ uVar9) >> 5) & 0x7f;
  uVar2 = ((ulonglong)uVar5 << 0x19 | (ulonglong)uVar5) << 5 ^ uVar9;
  uVar2 = (uVar2 >> 4 | uVar9 << 0x3c) & 0xd2d2d2d2d2d2d2d2 |
          (uVar2 << 4 | uVar9 >> 0x3c) & 0x2d2d2d2d2d2d2d2d;
  *(ulonglong *)(local_e0[0] + 4) = uVar2;
  dvs_0x3e72c9fd_mfort6317_ =
       (uint *)((longlong)dvs_0x3e72c9fd_mfort6317_ + (uVar2 >> 0x15 & 0xe4000a00));
  local_128 = CONCAT44(local_128._4_4_,(int)(*(ulonglong *)(local_e0[0] + 4) >> 0x15)) &
              0xffffffff7fffffff;
  local_158 = (uint)(*(ulonglong *)(local_e0[0] + 4) >> 0x19) ^ 0x6f20b575;
  local_148 = *(ulonglong *)(local_e0[0] + 4) ^ 0xf2c7e3627bec4017;
  do {
    uVar2 = 0;
    FUN_181152be4();
    lVar12 = unaff_R12 + uVar11;
    unaff_R12 = ~(uVar11 - lVar12) + 1;
    if ((uVar2 & 0xc0) != 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar11 = lVar12 - unaff_R12;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_170 = 0x1b873593;
  local_178 = 0xe6546b64;
  FUN_181153328(0xcd,0xe6546b64,(uVar11 ^ 0xffffffffffffffff) + 1);
  return;
}



############ FUN_ 1811542f0 size=2742 ############

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

undefined8 FUN_1811542f0(undefined8 *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  ulonglong uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  uint uVar7;
  uint *puVar8;
  longlong *plVar9;
  uint uVar10;
  ulonglong uVar11;
  longlong lVar12;
  IMAGE_DOS_HEADER *pIVar13;
  uint uVar14;
  IMAGE_DOS_HEADER *pIVar15;
  uint uVar16;
  undefined4 *puVar17;
  undefined4 *puVar18;
  longlong lVar19;
  int unaff_retaddr;
  undefined1 auStack_1a8 [32];
  undefined4 *local_188;
  uint local_180;
  int local_17c;
  int local_178;
  undefined8 local_170;
  uint local_168 [2];
  undefined8 local_160;
  uint local_158;
  uint local_154;
  uint local_150;
  undefined8 *local_140;
  undefined4 local_138;
  uint local_134;
  undefined8 local_130;
  uint local_128;
  uint local_124;
  code *local_120;
  undefined4 local_118;
  undefined4 local_114;
  undefined4 *local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  undefined1 local_e8 [8];
  undefined1 local_e0 [8];
  undefined1 local_d8 [8];
  undefined1 local_d0 [8];
  undefined1 local_c8 [8];
  undefined1 local_c0 [32];
  undefined8 local_a0;
  undefined8 *local_98;
  undefined4 local_70 [14];
  ulonglong local_38;
  
  local_a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  uVar14 = 0xb370ac2d;
  uVar16 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x600) == 0) {
    uVar7 = (uVar16 & 0x38ff) * (uVar16 & 0x38ff) + 1;
    iVar2 = (uVar7 / 7) * 7;
  }
  else {
    uVar7 = (uVar16 & 0x1bff) * (uVar16 & 0x1bff) * 0x10 + 4;
    iVar2 = (uVar7 / 0x13) * 0x13;
  }
  local_128 = ((int)(-(uVar7 - iVar2) | uVar7 - iVar2) >> 0x1f) * -0xf2d2 ^ 0xf142;
  uVar16 = ((uVar16 & 0x65ff) * (uVar16 & 0x65ff) + 1) % 7;
  local_124 = ((int)(-uVar16 | uVar16) >> 0x1f) * -0x2a74 ^ 0x2a14;
  *param_1 = &DAT_1821dbf98;
  local_138 = 1;
  do {
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  pIVar15 = &IMAGE_DOS_HEADER_180000000;
  local_130 = 0;
  local_160 = 0x48e0;
  local_188 = &DAT_18149cd38;
  local_170 = 0x1814a1618;
  local_140 = param_1;
  local_98 = param_1;
  do {
    puVar8 = &local_134;
    FUN_181153623();
    *puVar8 = 0x80341a7c;
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar16 = ~(~(((local_134 ^ 0x8250d77) >> 0xc | (local_134 ^ 0x8250d77) << 0x14) + 0x40538a28) +
            0xc81d2db0) + 0x661f047d;
  local_130 = CONCAT44(local_130._4_4_,(uVar16 * 0x1000000 | uVar16 >> 8) + 0xba9a5349);
  do {
    puVar8 = local_168;
    FUN_181152684(puVar8,local_168);
    uVar6 = rdtsc();
    *puVar8 = (uint)uVar6 ^ (uint)((ulonglong)uVar6 >> 0x20);
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  local_168[0] = (local_168[0] * -0xae3595 >> 0x18 ^ local_168[0] * -0xae3595) * -0x460113ad;
  if (local_168[0] < 0x4924927f) {
    do {
      local_120 = FUN_181194940;
      uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar16 < 0) {
        uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar16 != 0);
    uVar3 = FUN_181194940(0,0x72a6);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  local_160 = 0x9bb9824cc53f487e;
  lVar19 = local_170 - (longlong)local_188;
  lVar12 = 0;
  local_108 = local_188;
  uVar16 = 0x4c57af76;
  local_180 = -0x3361d2af;
  local_17c = -0x19ab949c;
  local_170 = (CONCAT44(local_170._4_4_,0x14e8000) | 0x29d) ^ 0x1ac9b70e;
  local_100 = lVar19;
  do {
    FUN_18115644e(0x560c);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  if (lVar19 == 0) {
LAB_1811549f9:
    puVar1 = local_140;
    do {
      local_118 = 0x7d;
      local_f8 = 0x181154a27;
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    local_178 = 0x14cd84d;
    local_170._0_4_ = uVar14;
    do {
      local_154 = 0x15dff7c4;
      local_114 = 0x19;
      local_f0 = 0x181154af7;
      FUN_181154fa1();
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar14 = (local_154 << 8 | local_154 >> 0x18) & 0xbc43bc43 |
             (local_154 >> 8 | local_154 << 0x18) & 0x43bc43bc;
    uVar14 = (uVar14 >> 4 | uVar14 << 0x1c) & 0x87878787 |
             (uVar14 << 4 | uVar14 >> 0x1c) & 0x78787878;
    uVar14 = (uVar14 >> 4 | uVar14 << 0x1c) & 0xd2d2d2d2 |
             (uVar14 << 4 | uVar14 >> 0x1c) & 0x2d2d2d2d;
    uVar7 = ~(uVar14 << 6 | uVar14 >> 0x1a);
    uVar14 = (uVar7 >> 10 ^ uVar7) >> 5 & 0x7f;
    uVar7 = (uVar14 << 10 | uVar14) << 5 ^ uVar7;
    uVar10 = uVar7 >> 0x15 | uVar7 << 0xb;
    uVar14 = ((uVar7 & 0x1fffff) >> 1 ^ uVar10) & 0x7ff;
    uVar10 = uVar10 ^ (uVar14 << 0xc | uVar14);
    lVar19 = local_178 + local_f8;
    lVar12 = ((longlong)(int)(uVar10 >> 0x10 | uVar10 << 0x10) & 0xfffffffff4a40b5bU |
             (ulonglong)((uVar10 << 0x10 | uVar10 >> 0x10) & 0xb5bf4a4)) + local_f0;
    local_178 = 0;
    local_154 = 0;
    *(longlong *)(lVar19 + 4) =
         *(longlong *)(lVar19 + 4) +
         (ulonglong)((uint)(*(ulonglong *)(lVar12 + 4) >> 1) & 0x4401030);
    uVar3 = *(ulonglong *)(lVar19 + 4);
    uVar14 = ((uint)(uVar3 >> 0x2a) ^ (uint)(uVar3 >> 0x10)) & 0xfffff;
    uVar11 = ((ulonglong)uVar14 << 0x1a | (ulonglong)uVar14) << 0x10 ^ uVar3;
    uVar11 = (uVar11 << 4 | uVar11 >> 0x3c) & 0x8787878787878787 |
             (uVar11 >> 4 | uVar3 << 0x3c) & 0x7878787878787878;
    uVar3 = (ulonglong)(((uint)(uVar11 >> 0xc) ^ (uint)uVar11) & 0x7ff);
    uVar3 = ((uVar11 ^ (uVar3 << 0xc | uVar3)) << 6 | uVar11 >> 0x3a) + 0x3164bf90e7a4bb77;
    uVar3 = (uVar3 >> 2 & 0xcccccccccccccccc | uVar3 << 0x3e |
            uVar3 * 4 & 0x3333333333333333 | uVar3 >> 0x3e) + 0x4676beed1a912512;
    uVar3 = ((uVar3 >> 0x10 | uVar3 << 0x30) & 0x88b0774f88b0774f |
            (uVar3 * 0x10000 | uVar3 >> 0x30) & 0x774f88b0774f88b0) + 0xedc45bbc449e8750;
    *(ulonglong *)(lVar19 + 4) = uVar3;
    plVar9 = (longlong *)(lVar12 + 4);
    *plVar9 = *plVar9 + (uVar3 >> 0xe & 0x80825141);
    local_170 = CONCAT44(local_170._4_4_,(int)(*(ulonglong *)(lVar19 + 4) >> 0x16)) &
                0xffffffff7fffffff;
    local_180 = (uint)(*(ulonglong *)(lVar19 + 4) >> 0x1f) ^ 0x54af611e;
    local_188 = (undefined4 *)(*(ulonglong *)(lVar19 + 4) ^ 0x3d474d34a2a479b9);
    puVar4 = (undefined8 *)FUN_181353210(local_c0);
    puVar5 = (undefined8 *)FUN_181353df0(local_c8);
    uVar6 = FUN_181155b70(local_d0);
    uVar6 = FUN_181245100(uVar6,local_d8,*puVar5);
    uVar6 = FUN_181245100(uVar6,local_e0,*puVar4);
    uVar6 = FUN_181245100(uVar6,local_e8,"Presets");
    FUN_1812458c0(puVar1,uVar6);
    FUN_180473140(local_e8);
    FUN_180473140(local_e0);
    FUN_180473140(local_d8);
    FUN_180473140(local_d0);
    FUN_18124a7e0(local_c8);
    FUN_18124a7e0(local_c0);
    local_150 = uVar16;
    uVar6 = FUN_181154e00();
    return uVar6;
  }
LAB_1811547f3:
  puVar17 = (undefined4 *)((longlong)local_108 + lVar12);
  puVar18 = puVar17;
  if ((pIVar15 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar19._0_1_ = pIVar15->e_magic[0], lVar19._1_1_ = pIVar15->e_magic[1],
     lVar19._2_2_ = pIVar15->e_cblp, lVar19._4_2_ = pIVar15->e_cp, lVar19._6_2_ = pIVar15->e_crlc,
     -1 < lVar19)) {
    local_188 = (undefined4 *)0x2621fc0;
    pIVar13 = pIVar15;
    do {
      if (puVar17 < IMAGE_DOS_HEADER_180000000.e_magic + lVar19 + 8) {
        pIVar15 = pIVar13;
        if (-1 < lVar19) {
          plVar9 = (longlong *)(lVar19 + 0x180000000);
          if (plVar9 < puVar17 + 1) {
            local_70[0] = *puVar17;
            goto LAB_181154870;
          }
        }
        break;
      }
      pIVar15 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
      lVar19._0_2_ = pIVar13->e_cparhdr;
      lVar19._2_2_ = pIVar13->e_minalloc;
      lVar19._4_2_ = pIVar13->e_maxalloc;
      lVar19._6_2_ = pIVar13->e_ss;
      pIVar13 = pIVar15;
    } while (-1 < lVar19);
  }
  goto LAB_181154894;
  while (plVar9 = (longlong *)(lVar19 + 0x180000000), plVar9 < puVar17 + 1) {
LAB_181154870:
    *(longlong *)(&stack0x00017fffff90 + (lVar19 - (longlong)puVar17)) = *plVar9 + -0x180000000;
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    lVar19 = *(longlong *)pIVar13;
    puVar18 = local_70;
    if (lVar19 < 0) break;
  }
LAB_181154894:
  do {
    puVar8 = &local_158;
    uVar7 = FUN_1811564fb(0x560c,(longlong)puVar18 + 0x3c3f003d,0);
    *puVar8 = uVar7;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar14 = (uVar14 + uVar16) * 0x801;
  uVar7 = uVar16 & 0xf;
  if (((uVar7 + 1) * (uVar7 + 1) * uVar7 * uVar7 & 2) != 0) {
    do {
      uVar14 = uVar14 ^ uVar14 << 4;
      lVar12 = lVar12 + 4;
    } while (((uVar7 + 1) * (uVar7 + 1) * uVar7 * uVar7 & 2) != 0);
  }
  uVar7 = uVar16 & 0x3f;
  if (((uVar7 + 1) * (uVar7 + 1) * uVar7 * uVar7 & 3) != 0) {
    do {
      uVar14 = uVar14 + 0x14990a49;
      lVar12 = lVar12 + 4;
    } while (((uVar7 + 1) * (uVar7 + 1) * uVar7 * uVar7 & 3) != 0);
  }
  local_158 = (local_158 * local_180 * 0x8000 | local_158 * local_180 >> 0x11) * (uint)local_170;
  uVar16 = ((uVar16 ^ local_158) << 0xd | (uVar16 ^ local_158) >> 0x13) * 5 + local_17c;
  lVar12 = lVar12 + 4;
  if (lVar12 == local_100) goto LAB_1811549f9;
  goto LAB_1811547f3;
}



############ FUN_ 181165570 size=1504 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x0001811656d6) overlaps instruction at (ram,0x0001811656d4)
    */
/* WARNING: Removing unreachable block (ram,0x000181165679) */

undefined8 FUN_181165570(longlong param_1)

{
  uint uVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint *puVar4;
  code **ppcVar5;
  undefined1 uVar6;
  int unaff_retaddr;
  undefined1 local_1a8 [32];
  undefined8 local_188;
  undefined4 local_180;
  undefined4 uStack_17c;
  undefined **local_178;
  undefined *local_170;
  undefined8 local_160;
  undefined8 local_158;
  uint local_150 [7];
  uint local_134;
  undefined4 local_130;
  undefined1 local_128 [8];
  undefined4 local_120;
  code *local_118;
  longlong local_110;
  undefined8 local_e8;
  undefined8 local_d8;
  undefined8 local_d0 [5];
  undefined8 local_a8;
  ulonglong local_30;
  
  local_a8 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)local_1a8;
  local_130 = 0x8c0;
  uVar1 = (uint)&stack0x00000000 & 0xdff;
  uVar1 = (uVar1 + 1) * uVar1 + 0xab5 & 0x80000001;
  local_134 = (int)(-uVar1 | uVar1) >> 0x1f & 0xd956U ^ 0xdc96;
  local_110 = param_1;
  local_e8 = FUN_1811316e0(0x40);
  uVar2 = FUN_181174990(local_e8);
  do {
    FUN_181164784();
    FUN_1811651ab();
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  _local_180 = CONCAT44(uStack_17c,0x811c9dc5);
  local_160 = 0x10;
  local_178 = &PTR__guard_check_icall_181bab6a8;
  local_170 = &DAT_181bab6b8;
  local_188 = 0x9997df9e05a9f7d4;
  local_158 = 0x5a9f7d4;
  local_d8 = uVar2;
  FUN_180485df0(*(undefined8 *)(param_1 + 0x18),&local_d8);
  do {
    local_120 = 0x3b3f9608;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  local_d0[0] = uVar2;
  FUN_180485df0(param_1 + 8,local_d0);
  do {
    puVar4 = local_150;
    func_0x0001811640ba(puVar4,local_150);
    uVar2 = rdtsc();
    *puVar4 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  local_150[0] = (local_150[0] * -0x50283595 >> 0x18 ^ local_150[0] * -0x50283595) * 0x1a8585eb;
  if (local_150[0] < 0x6666667f) {
    local_118 = (code *)0x0;
    do {
      ppcVar5 = &local_118;
      FUN_181164e79(ppcVar5,&local_118);
      *ppcVar5 = FUN_18141db20;
      FUN_181165479();
      uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar1 < 0) {
        uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar1 != 0);
    uVar3 = (*local_118)();
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  FUN_18048c070(local_128);
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
    uVar3 = (ulonglong)uVar1;
  } while (uVar1 != 0);
  uVar6 = unaff_retaddr == 0;
                    /* WARNING: Call to offcut address within same function */
  func_0x000181165a1f();
  uVar2 = func_0x00014599a2cd();
  if ((bool)uVar6) {
    return uVar2;
  }
  *(char *)(uVar3 - 9) = *(char *)(uVar3 - 9) - (char)uVar3;
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18119b4b0 size=2593 ############

/* WARNING: Removing unreachable block (ram,0x00018119b558) */
/* WARNING: Removing unreachable block (ram,0x00018119b4f0) */
/* WARNING: Removing unreachable block (ram,0x00018119b76d) */

undefined8 FUN_18119b4b0(longlong param_1,longlong param_2)

{
  uint *_Memory;
  undefined8 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint uVar7;
  code **ppcVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined1 *puVar12;
  uint uVar13;
  uint uVar14;
  longlong in_R10;
  longlong in_R11;
  longlong lVar15;
  undefined8 *puVar16;
  bool bVar17;
  char cVar18;
  char cVar19;
  int unaff_retaddr;
  undefined1 auStack_b8 [32];
  undefined4 *local_98;
  code *local_90;
  longlong local_88 [3];
  undefined8 local_70;
  undefined8 *local_68;
  undefined8 local_60;
  longlong local_58;
  undefined8 *local_50;
  undefined8 *local_48;
  
  puVar12 = auStack_b8;
  local_88[1] = 0xfffffffffffffffe;
  uVar13 = (uint)&stack0x00000000 & 0x12ff;
  uVar13 = (uVar13 * uVar13 + 1) % 7;
  uVar14 = (uint)&stack0x00000000 & 0xaff;
  uVar14 = (uVar14 * uVar14 * 0x10 + 4) % 0x13;
  FUN_18049c9e0(local_88,param_2);
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  puVar11 = puVar1;
  if (*(char *)((longlong)puVar1[1] + 0x19) == '\0') {
    local_88[2] = local_88[0];
    puVar10 = puVar1;
    puVar16 = (undefined8 *)puVar1[1];
    do {
      puVar11 = puVar16;
      local_70 = puVar11[4];
      iVar2 = FUN_18048cbc0(local_70,local_88[0]);
      if (iVar2 < 0) {
        puVar16 = (undefined8 *)puVar11[2];
        puVar11 = puVar10;
      }
      else {
        puVar16 = (undefined8 *)*puVar11;
      }
      puVar10 = puVar11;
    } while (*(char *)((longlong)puVar16 + 0x19) == '\0');
  }
  local_68 = puVar1;
  if (puVar11 != puVar1) {
    local_60 = puVar11[4];
    local_58 = local_88[0];
    iVar2 = FUN_18048cbc0(local_88[0]);
    puVar16 = puVar11;
    if (-1 < iVar2) goto LAB_18119b62d;
  }
  puVar11 = puVar1;
  puVar16 = local_50;
  local_48 = puVar1;
LAB_18119b62d:
  local_50 = puVar16;
  _Memory = (uint *)(local_88[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar6 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar3 = &DAT_1813665b8;
  uVar6 = (DAT_1813665b8 + 0x62b5eb3e) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665bc) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665c0) * 0x401;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1813665c4 + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665c8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665cc) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665d0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665d4) * 0x401;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1813665d8 + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665dc) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665e0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665e4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665e8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665ec) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665f0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665f4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665f8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813665fc) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366600) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366604) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366608) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136660c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366610) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366614) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366618) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136661c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366620) * 0x401;
  do {
    uVar5 = rdtsc();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ((uint)uVar5 ^ (uint)((ulonglong)uVar5 >> 0x20)) * -0x35947a15;
  local_98 = puVar3;
  if ((uVar7 >> 0x18 ^ uVar7) * -0x51ca13ad < 0xb6be0) {
    local_90 = (code *)0x0;
    do {
      ppcVar8 = &local_90;
      FUN_181199c84(ppcVar8,&local_90);
      *ppcVar8 = FUN_1813f2240;
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar4 = (*local_90)(0,0x8429);
    if (1 < uVar4) {
      FUN_18113eab0();
    }
  }
  uVar6 = (DAT_181366624 + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366628) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136662c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366630) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366634) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366638) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136663c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366640) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366644) * 0x401;
  uVar4 = (ulonglong)uVar6;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366648) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136664c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366650) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366654) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366658) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136665c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366660) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366664) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366668) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136666c) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366670) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366674) * 0x401;
  uVar7 = ((uVar6 >> 6 ^ uVar6) + DAT_181366678) * 0x401;
  uVar7 = uVar7 ^ uVar7 >> 6;
  bVar17 = uVar7 == 0;
  uVar6 = uVar7;
  do {
    cVar19 = '\0';
    cVar18 = (int)uVar6 < 0;
    uVar9 = 0;
    FUN_18119ae31();
    if (bVar17 || cVar19 != cVar18) {
      lVar15 = in_R11 + in_R10;
code_r0x00018119bc8e:
      in_R11 = -(in_R10 - lVar15);
      in_R10 = lVar15 + (in_R10 - lVar15);
    }
    else if ((uVar9 & 0xc1) != 0) {
      puVar11 = (undefined8 *)(ulonglong)(uint)((int)puVar11 + (int)uVar4);
      lVar15 = in_R11;
      goto code_r0x00018119bc8e;
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    bVar17 = false;
    if (uVar6 == 0) {
      uVar6 = (DAT_18136667c + uVar7) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366680) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366684) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366688) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136668c) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366690) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366694) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_181366698) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_18136669c) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813666a0) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813666a4) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813666a8) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813666ac) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813666b0) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + DAT_1813666b4) * 0x401;
      uVar6 = uVar6 >> 6 ^ uVar6 ^ 0x1527c836;
      uVar6 = (uint)((uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f) == 0x98ac19c0);
      uVar9 = (ulonglong)uVar6;
      if (uVar6 * 0x1d != 0) {
        do {
          *(undefined4 **)(puVar12 + -8) = puVar3;
          *(longlong *)(puVar12 + -0x10) = in_R10;
          *(ulonglong *)(puVar12 + -0x18) = uVar9;
          register0x00000020 =
               (BADSPACEBASE *)
               ((-((longlong)register0x00000020 + -0x10a0e70d) ^ 0xffffffffffffffffU) + 0x10a0e70e);
          lVar15 = -(longlong)(int)(((int)(-uVar14 | uVar14) >> 0x1f) * -0xb065 ^ 0xba95);
          uVar9 = *(ulonglong *)(puVar12 + lVar15 + 0xad8);
          in_R10 = *(longlong *)(puVar12 + lVar15 + 0xae0);
          puVar3 = *(undefined4 **)(puVar12 + lVar15 + 0xae8);
          puVar12 = puVar12 + lVar15 + 0xaf0;
          uVar13 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
          if ((int)uVar13 < 0) {
            uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar13 != 0);
        return puVar11[5];
      }
      uVar5 = thunk_FUN_1805a9280((int)(-uVar13 | uVar13) >> 0x1f & 0x3b16U ^ 0x3866,
                                  (-uVar4 ^ 0xffffffffffffffff) + 1,
                                  &stack0x00000000 + param_2 +
                                  (param_2 - (longlong)(&stack0x00000000 + param_2)));
      return uVar5;
    }
  } while( true );
}



############ FUN_ 181185560 size=1823 ############

/* WARNING: Removing unreachable block (ram,0x000181185770) */
/* WARNING: Removing unreachable block (ram,0x00018118577b) */
/* WARNING: Removing unreachable block (ram,0x000181185772) */
/* WARNING: Removing unreachable block (ram,0x000181185797) */

void FUN_181185560(undefined8 param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  uint *puVar11;
  ulonglong uVar12;
  longlong lVar13;
  uint uVar14;
  longlong lVar15;
  int unaff_retaddr;
  undefined1 auStack_1b8 [32];
  undefined4 local_198;
  undefined *local_188;
  ulonglong local_180;
  undefined *local_178;
  uint local_16c;
  uint local_168;
  undefined4 local_164;
  uint local_160;
  uint local_158;
  uint local_14c;
  uint local_13c;
  uint local_138;
  undefined8 local_130;
  uint local_120 [2];
  code *local_118;
  undefined8 local_f8;
  undefined4 local_f0;
  longlong local_e8;
  longlong local_e0;
  undefined4 local_c8;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar14 = (uint)&stack0x00000000;
  local_198 = 0;
  uVar9 = uVar14 & 0x2bf;
  iVar5 = (uVar14 & 0x60ff) * (uVar14 & 0x60ff) + 1;
  local_13c = 0xf48 - ((uVar9 + 2) * (uVar9 + 1) * uVar9) % 3 ^ 0xa58;
  uVar14 = (((uVar14 & 0x7ff) + 1) * (uVar14 & 0x7ff) + 7) % 0x51;
  uVar9 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  local_138 = (int)((-uVar9 | uVar9) ^ (-uVar14 | uVar14)) >> 0x1f ^ 0x2f0;
  local_f8 = param_1;
  local_130 = __RTDynamicCast(param_2,0,&juce::ChangeBroadcaster::RTTI_Type_Descriptor,
                              &juce::UndoManager::RTTI_Type_Descriptor);
  local_188 = &DAT_181415734;
  local_178 = &DAT_18141592c;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_180 = 0xeae33acbcd12d31d;
  local_164 = 0xcd12d31d;
  do {
    local_16c = 0xd7d3ebf0;
    local_c8 = 0x1d;
    local_e8 = 0x1811857e7;
    func_0x000181187854();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_16c = local_16c ^ 0x9d2c763d;
  uVar9 = ((local_16c >> 8 | local_16c << 0x18) & 0xda25da25 |
          (local_16c << 8 | local_16c >> 0x18) & 0x25da25da) + 0x57f3a86f;
  uVar9 = (uVar9 >> 4 | uVar9 * 0x10000000) & 0xa5a5a5a5 |
          (uVar9 * 0x10 | uVar9 >> 0x1c) & 0x5a5a5a5a;
  uVar14 = (uVar9 >> 0x10 | uVar9 << 0x10) + 0xc3b1373e;
  uVar10 = uVar14 * 0x8000 | uVar14 >> 0x11;
  uVar9 = ((uVar14 & 0x1ffff) >> 6 ^ uVar10) >> 9 & 1;
  uVar10 = uVar10 ^ (uVar9 << 0x15 | uVar9) << 9;
  local_16c = (uVar10 >> 8 | (uVar14 >> 0x11) << 0x18) & 0xf20df20d |
              (uVar10 << 8 | uVar10 >> 0x18) & 0xdf20df2;
  do {
    local_14c = 0xc78ae62a;
    local_f0 = 0x17;
    local_e0 = 0x1811858b7;
    FUN_181184ebf();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar13 = (int)local_16c + local_e8;
  uVar10 = local_14c >> 4;
  uVar4 = local_14c << 0x1c;
  uVar9 = local_14c << 4;
  uVar14 = local_14c >> 0x1c;
  local_16c = 0;
  local_14c = 0;
  uVar9 = ((uVar9 | uVar14) & 0xc3c3c3c3 | (uVar10 | uVar4) & 0x3c3c3c3c) ^ 0x880fda64;
  uVar14 = uVar9 >> 0x10 | uVar9 << 0x10;
  uVar14 = ~(((uVar14 << 8 | (uVar9 & 0xffff) >> 8) & 0xc23dc23d |
             (uVar14 >> 8 | (uVar9 >> 0x10) << 0x18) & 0x3dc23dc2) ^ 0xa300de10);
  uVar9 = (uVar14 >> 0x10 ^ uVar14) >> 1 & 0x7fff;
  uVar14 = uVar14 ^ (uVar9 << 0x10 | uVar9) * 2;
  lVar15 = (int)(((uVar14 >> 4 | uVar14 << 0x1c) & 0x96969696 |
                 (uVar14 << 4 | uVar14 >> 0x1c) & 0x69696969) + 0x2e11bd49) + local_e0;
  *(longlong *)(lVar13 + 4) =
       *(longlong *)(lVar13 + 4) + (*(ulonglong *)(lVar15 + 4) >> 0xf & 0xa009a010);
  do {
    puVar11 = local_120;
    puVar6 = &local_168;
    FUN_181183d6c();
    uVar3 = rdtsc();
    uVar9 = (int)uVar3 + (int)((ulonglong)uVar3 >> 0x20);
    *puVar11 = uVar9;
    lVar2 = (((ulonglong)uVar9 * 0x10001 >> 10) - 0x498f5584) + (ulonglong)uVar9 * 0x20002;
    uVar9 = (uint)lVar2;
    *puVar6 = (uVar9 ^ (uVar9 * 0xc00 | (uint)((ulonglong)(lVar2 * 3) >> 0x36)) + 0x3a6392f9) &
              0x28b35bea;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  *(int *)(lVar13 + 8) = *(int *)(lVar13 + 8) + (local_168 ^ 0xad9f3dcb);
  *(int *)(lVar13 + 4) = *(int *)(lVar13 + 4) + (local_168 ^ 0x1583b2aa);
  uVar7 = *(ulonglong *)(lVar13 + 4);
  uVar12 = ((uVar7 << 0x10 | uVar7 >> 0x30) & 0x35b9ca4635b9ca46 |
           (uVar7 >> 0x10 | uVar7 << 0x30) & 0xca4635b9ca4635b9) + 0x2c62d0f4fd200617;
  uVar9 = ((uint)(uVar12 >> 0x2c) ^ (uint)(uVar12 >> 8)) & 0x7f;
  uVar7 = ((ulonglong)uVar9 << 0x24 | (ulonglong)uVar9) << 8 ^ uVar12;
  uVar8 = uVar7 << 0xb | uVar12 >> 0x35;
  uVar7 = (uVar8 >> 2 | (uVar12 >> 0x35) << 0x3e) & 0x9999999999999999 |
          (uVar8 << 2 | (uVar7 & 0x1fffffffffffff) >> 0x33) & 0x6666666666666666;
  uVar9 = (uint)((uVar7 >> 0x1a ^ uVar7) >> 3) & 0x7ffff;
  uVar7 = ((ulonglong)uVar9 << 0x1a | (ulonglong)uVar9) << 3 ^ uVar7;
  uVar7 = (uVar7 >> 0xb | uVar7 << 0x35) ^ 0x4475a330011c596d;
  uVar7 = (uVar7 >> 8 | uVar7 << 0x38) & 0x906f906f906f906f |
          (uVar7 << 8 | uVar7 >> 0x38) & 0x6f906f906f906f90;
  *(ulonglong *)(lVar13 + 4) = uVar7;
  plVar1 = (longlong *)(lVar15 + 4);
  *plVar1 = *plVar1 + (uVar7 >> 8 & 0xfc042022);
  local_168 = (uint)(*(ulonglong *)(lVar13 + 4) >> 0x11) & 0x7fffffff;
  local_158 = (uint)(*(ulonglong *)(lVar13 + 4) >> 0xd) ^ 0x53610427;
  local_180 = *(ulonglong *)(lVar13 + 4) ^ 0x9e5b4c42616c8a76;
  do {
    uVar3 = rdtsc();
    local_160 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_1811874ca();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_160 = (local_160 * -0x4601166b >> 0x18 ^ local_160 * -0x4601166b) * -0x46014602;
  if (local_160 < 0x20a32ff) {
    do {
      local_118 = FUN_181194940;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar7 = FUN_181194940(0,0xd549);
    if (1 < uVar7) {
      FUN_18113eab0();
    }
  }
  FUN_181185cac();
  return;
}



############ FUN_ 181194970 size=1105 ############

/* WARNING: Instruction at (ram,0x000181194b21) overlaps instruction at (ram,0x000181194b1e)
    */
/* WARNING: Removing unreachable block (ram,0x0001811949f0) */

void FUN_181194970(undefined8 param_1,undefined8 param_2)

{
  undefined1 uVar1;
  undefined8 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  ulonglong uVar6;
  uint *puVar7;
  code **ppcVar8;
  undefined *puVar9;
  uint uVar10;
  ulonglong uVar11;
  longlong in_FS_OFFSET;
  int unaff_retaddr;
  undefined1 auStack_1b8 [32];
  undefined *local_198;
  undefined *local_190;
  undefined8 local_188;
  undefined8 local_170;
  uint local_168 [10];
  uint local_140;
  uint local_13c;
  undefined8 local_138;
  code *local_128 [27];
  ulonglong local_50;
  
  local_50 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar5 = (uint)&stack0x00000000;
  uVar3 = ((uVar5 & 0x16ff) * (uVar5 & 0x16ff) + 1) % 7;
  iVar4 = (uVar5 & 0x66ff) * (uVar5 & 0x66ff) + 1;
  uVar10 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
  local_13c = ((int)(-uVar10 | uVar10) >> 0x1f) * -0xd95b ^
              ((int)(uVar3 | -uVar3) >> 0x1f) * -0xd22b;
  if (((ulonglong)&stack0x00000000 & 0x1f8) == 0) {
    uVar3 = 0;
  }
  else {
    uVar5 = uVar5 & 0x23f;
    uVar3 = ((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3;
  }
  uVar11 = (ulonglong)uVar3;
  local_140 = 0xad86 - uVar3 ^ 0xa5b6;
  local_170 = param_2;
  local_138 = param_1;
  do {
    FUN_18119465a(0x7504);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar6 = 0x7504;
    FUN_181195a53();
    uVar11 = ~uVar11 + 1;
    if ((uVar11 == 0) && ((uVar6 & 0x43) != 0)) {
      *(int *)(uVar6 - 0x7d) = *(int *)(uVar6 - 0x7d) + -1;
      func_0x000149529428();
    }
    else {
      uVar11 = (uVar11 ^ 0xffffffffffffffff) + 1;
    }
    FUN_181192efa();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    puVar7 = local_168;
    FUN_181196797(puVar7,local_168);
    uVar2 = rdtsc();
    *puVar7 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_168[0] = (local_168[0] * 0x5bd1c4ce >> 0x18 ^ local_168[0] * 0x5bd1c4ce) * -0x13ac12ab;
  if (local_168[0] < 0x7fffffff) {
    local_128[0] = (code *)0x0;
    do {
      ppcVar8 = local_128;
      FUN_181194e78(ppcVar8,local_128);
      *ppcVar8 = FUN_18141db20;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar11 = (*local_128[0])(0,0x596c);
    if (1 < uVar11) {
      FUN_18113eab0();
    }
  }
  local_188 = 0;
  local_198 = &DAT_181fadcd8;
  puVar9 = &DAT_181fbdcb8;
  local_190 = puVar9;
                    /* WARNING: Call to offcut address within same function */
  uVar2 = func_0x000181194ce7();
  LOCK();
  uVar1 = *(undefined1 *)(in_FS_OFFSET + 0x14862a82c);
  *(undefined1 *)(in_FS_OFFSET + 0x14862a82c) = (char)((ulonglong)uVar2 >> 8);
  UNLOCK();
  uVar3 = *(uint *)(puVar9 + CONCAT62((int6)((ulonglong)uVar2 >> 0x10),CONCAT11(uVar1,(char)uVar2))
                             + 0x34d0000);
  *(uint *)(puVar9 + CONCAT62((int6)((ulonglong)uVar2 >> 0x10),CONCAT11(uVar1,(char)uVar2)) +
                     0x34d0000) = uVar3 >> 0xb | uVar3 << 0x16;
  FUN_181194de7();
  return;
}



############ FUN_ 1811bb600 size=4029 ############

/* WARNING: Instruction at (ram,0x0001811bbe6f) overlaps instruction at (ram,0x0001811bbe6c)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001811bc881) */
/* WARNING: Removing unreachable block (ram,0x0001811bbc6b) */
/* WARNING: Removing unreachable block (ram,0x0001811bb67d) */
/* WARNING: Removing unreachable block (ram,0x0001811bbf2f) */
/* WARNING: Removing unreachable block (ram,0x0001811bc78b) */

void FUN_1811bb600(longlong param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 *puVar3;
  longlong lVar4;
  int iVar5;
  uint uVar6;
  char cVar12;
  ulonglong uVar7;
  longlong *plVar8;
  code **ppcVar9;
  uint *puVar10;
  uint *puVar11;
  uint uVar13;
  uint uVar14;
  IMAGE_DOS_HEADER *pIVar15;
  ulonglong uVar16;
  longlong lVar17;
  ulonglong uVar18;
  undefined1 *puVar19;
  undefined4 *puVar20;
  uint uVar21;
  int iVar22;
  uint uVar23;
  uint uVar24;
  longlong lVar25;
  IMAGE_DOS_HEADER *pIVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  int *piVar30;
  ulonglong uVar31;
  int unaff_retaddr;
  undefined1 auStack_188 [32];
  int local_168;
  undefined *local_160;
  undefined1 *local_158;
  uint local_150;
  ulonglong local_148;
  uint local_140;
  uint local_13c;
  uint local_138;
  int local_134;
  uint uStack_130;
  uint local_12c;
  uint local_128;
  uint local_124;
  uint local_120;
  uint local_11c;
  uint local_118;
  undefined4 local_114;
  code *local_110;
  longlong local_108;
  longlong local_100;
  undefined4 local_f8;
  undefined4 local_f4;
  uint local_f0 [2];
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  undefined1 *local_d0;
  longlong local_c8;
  code *local_c0;
  uint local_b8;
  uint local_b4;
  uint local_b0;
  uint local_a0;
  uint local_9c;
  uint local_98;
  uint local_94;
  undefined4 uStack_80;
  undefined1 local_70 [24];
  uint local_58;
  uint local_54;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_188;
  uVar21 = (uint)&stack0x00000000;
  local_114 = 0xc70;
  iVar5 = (uVar21 & 0x30ff) * (uVar21 & 0x30ff) + 1;
  uVar13 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  if (((int)(uVar13 - 7) >> 0x1f & uVar13 & 0x3300) == 0) {
    uVar27 = 0x10b0aeb;
    uVar13 = 0xf775b4;
  }
  else {
    uVar27 = 0x65e7610;
    uVar13 = 0x310a9b5;
  }
  uVar6 = (uVar21 & 0x58ff) * (uVar21 & 0x58ff) + 1;
  uVar21 = (((uVar21 & 0x1fff) + 1) * (uVar21 & 0x1fff) + 7) % 0x51;
  uVar21 = ((int)(-uVar21 | uVar21) >> 0x1f) >> ((char)uVar6 + (char)(uVar6 / 7) * -7 & 0x1fU);
  local_118 = ((int)(-uVar21 | uVar21) >> 0x1f) * 0x8c1 & 0xf23fU ^
              ((int)(-(uVar27 ^ uVar13) | uVar27 ^ uVar13) >> 0x1f) * -0xfbff;
  pIVar15 = &IMAGE_DOS_HEADER_180000000;
  local_158 = &LAB_18075fd74;
  local_160 = &DAT_180760464;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_148 = 0x46728c12e24a2dac;
  local_124 = 0xe24a2dac;
  local_108 = param_2;
  local_100 = param_1;
  do {
    local_150 = -0x3bba147b;
    local_f8 = 0x1d;
    local_e8 = 0x1811bb8d7;
    FUN_1811bb06c();
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_150 = local_150 + 0xb826bb3c;
  uVar13 = ((local_150 >> 8 | local_150 * 0x1000000) & 0xf00ff00f |
           (local_150 * 0x100 | local_150 >> 0x18) & 0xff00ff0) ^ 0x6ebda2d;
  uVar21 = ((uVar13 << 0x10 | uVar13 >> 0x10) & 0xc2773d88 |
           (uVar13 >> 0x10 | uVar13 << 0x10) & 0x3d88c277) ^ 0x44eea504;
  uVar13 = (uVar21 >> 0xe ^ uVar21) & 0x1fff;
  uVar13 = ((uVar13 << 0xe | uVar13) ^ uVar21) + 0xe6b237c8;
  local_150 = ((uVar13 * 0x10 | uVar13 >> 0x1c) & 0x96969696 |
              (uVar13 >> 4 | uVar13 * 0x10000000) & 0x69696969) ^ 0x497c4bba;
  do {
    plVar8 = &local_e0;
    puVar20 = &local_f4;
    piVar30 = &local_134;
    FUN_1811bbd4e();
    *piVar30 = -0x17bfd3b1;
    *puVar20 = 0x79;
    *plVar8 = 0x1811bb9a7;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar21 = local_134 + 0xa52bb9be;
  lVar25 = (int)local_150 + local_e8;
  uVar13 = (uVar21 >> 0x10 ^ uVar21) >> 1 & 0x1f;
  uVar21 = ((uVar13 << 0x10 | uVar13) * 2 ^ uVar21) + 0xb0fd7e22;
  uVar13 = (uVar21 >> 0xc ^ uVar21) & 0x3ff;
  uVar21 = ((uVar13 << 0xc | uVar13) ^ uVar21) + 0xddb33d16;
  uVar13 = uVar21 >> 8;
  uVar21 = (uVar13 | uVar21 * 0x1000000) + 0x38d24d30;
  uVar13 = (uVar21 * 4 | uVar21 >> 0x1e) & 0x99999999 | (uVar21 >> 2 | uVar13 << 0x1e) & 0x66666666;
  local_e0 = (int)(uVar13 >> 6 | uVar13 << 0x1a) + local_e0;
  local_150 = 0;
  local_134 = 0;
  *(longlong *)(lVar25 + 4) =
       *(longlong *)(lVar25 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(local_e0 + 4) >> 0x1c) & 0x40420682);
  uVar7 = *(ulonglong *)(lVar25 + 4);
  uVar13 = (uint)((uVar7 >> 0x27 ^ uVar7) >> 5) & 0x1fff;
  uVar16 = ((ulonglong)uVar13 << 0x27 | (ulonglong)uVar13) << 5 ^ uVar7 ^ 0x2491872e988315e8;
  uVar7 = (uVar16 >> 2 & 0xcccccccccccccccc | uVar7 << 0x3e |
          (uVar16 & 0xccccccccccccccc) << 2 | uVar7 >> 0x3e) ^ 0xb7699a7c4c06f314;
  uVar16 = (uVar7 << 0x26 | uVar7 >> 0x1a) ^ 0x9f5ba63649e9a23;
  uVar7 = (uVar16 << 2 | (uVar7 & 0x3ffffff) >> 0x18) & 0x9999999999999999 |
          (uVar16 >> 2 | uVar16 << 0x3e) & 0x6666666666666666;
  lVar4 = (uVar7 >> 0xd | uVar7 << 0x33) + 0xee71cdafe87683d9;
  *(longlong *)(lVar25 + 4) = lVar4;
  plVar8 = (longlong *)(local_e0 + 4);
  *plVar8 = *plVar8 + (ulonglong)((uint)((ulonglong)lVar4 >> 0x10) & 0x60200008);
  local_11c = (uint)(*(ulonglong *)(lVar25 + 4) >> 0x14) & 0x7fffffff;
  local_138 = (uint)(*(ulonglong *)(lVar25 + 4) >> 0x17) ^ 0xe67b7443;
  local_148 = *(ulonglong *)(lVar25 + 4) ^ 0x8b4b335226dafc4d;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar13 = 0x1a08108c;
  local_168 = -0x19ab949c;
  uVar27 = (uint)((longlong)local_160 - (longlong)local_158);
  uVar21 = uVar27 & 0x5f;
  lVar25 = 0x1b873593;
  uVar7 = 0xcc9e2d51;
  local_d0 = local_158;
  lVar4 = 0x3c - (((longlong)(int)((uVar21 + 1) * (uVar21 + 1) * uVar21 * uVar21 & 0x80000003) |
                  0x3736U) ^ 0x3776);
  local_160 = (undefined *)(((longlong)local_160 - (longlong)local_158) + -4);
  if (local_160 == (undefined *)lVar4) {
LAB_1811bbf20:
    do {
      uVar21 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar21 < 0) {
        uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
      }
      piVar30 = (int *)register0x00000020;
    } while (uVar21 != 0);
    do {
      FUN_1811bc7ba(0xe50c);
      lVar4 = uVar7 + lVar25;
      uVar7 = ~(lVar25 - lVar4) + 1;
      lVar25 = lVar4 - uVar7;
      piVar30 = (int *)((~(~(~(ulonglong)piVar30 + 1) + 1) + 1 ^ 0xffffffffffffffff) + 1);
      uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
      if ((int)uVar21 < 0) {
        uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar21 != 0);
    uVar13 = ((uVar13 ^ 0x81db0922) << 0x16 | (uVar13 ^ 0x81db0922) >> 10) + 0xbe434ac;
    do {
      uVar2 = rdtsc();
      local_140 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
      func_0x0001811ba203();
      uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
      if ((int)uVar21 < 0) {
        uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar21 != 0);
    local_140 = (local_140 * -0x7a147333 >> 0x18 ^ local_140 * -0x7a147333) * 0x5bd1afd7;
    if (local_140 < 0x670b44f) {
      local_110 = (code *)0x0;
      do {
        ppcVar9 = &local_110;
        FUN_1811bd04f(ppcVar9,&local_110);
        *ppcVar9 = FUN_181194940;
        uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
        if ((int)uVar21 < 0) {
          uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar21 != 0);
      uVar16 = (*local_110)(0,0x6e0e);
      if (1 < uVar16) {
        FUN_18113eab0();
      }
    }
    do {
      puVar10 = &local_120;
      FUN_1811bb59e();
      *puVar10 = 0xd9819493;
      FUN_1811bb113();
      uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
      if ((int)uVar21 < 0) {
        uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar21 != 0);
    uVar21 = ~(((local_120 ^ 0x18690310) >> 0xe | (local_120 ^ 0x18690310) << 0x12) ^ 0xb008ee0b) +
             0xb7857b84;
    uVar21 = (uVar21 >> 8 | uVar21 * 0x1000000) ^ 0x416c3884;
    local_b8 = (uVar21 >> 0x16 | uVar21 << 10) ^ 0x4a38a4a;
    local_b4 = local_138;
    local_b0 = (uint)local_148;
    uVar21 = (uint)(local_148 >> 0x20);
    uVar28 = (uVar21 ^ local_b8) & 0x99999999 ^ uVar21;
    uVar6 = (local_138 >> 0x11 ^ local_138) & 0x3fff;
    uVar14 = (local_b0 >> 0xc ^ local_b0) >> 9 & 0x7f;
    uVar21 = (uVar21 ^ local_b8) & 0x66666666 ^ uVar21;
    uVar27 = (uVar28 >> 2 ^ uVar28) >> 4 & 1;
    uVar23 = (uVar21 >> 0xb ^ uVar21) & 3;
    uVar6 = ~((uVar6 << 0x11 | uVar6) ^ local_138);
    uVar28 = ~((uVar27 * 4 | uVar27) << 4 ^ uVar28);
    uVar29 = ~((uVar23 << 0xb | uVar23) ^ uVar21);
    uVar21 = ~((uVar14 << 0xc | uVar14) << 9 ^ local_b0) ^ uVar6;
    uVar23 = uVar21 & 0x1f8b2e7f ^ uVar6;
    uVar6 = uVar21 & 0xe074d180 ^ uVar6;
    uVar27 = (uVar28 >> 0x11 ^ uVar28) & 0xff;
    uVar14 = (uVar29 >> 0x11 ^ uVar29) & 0x1ff;
    uVar24 = (uVar6 >> 6 ^ uVar6) >> 0x11 & 0xf;
    uVar21 = (uVar23 >> 6 ^ uVar23) & 0xf;
    uVar23 = (uVar21 << 6 | uVar21) ^ uVar23;
    uVar21 = uVar29 ^ (uVar14 << 0x11 | uVar14) ^ uVar23;
    uVar14 = uVar21 & 0x5b705ebb ^ uVar23;
    uVar28 = uVar14 ^ uVar28 ^ (uVar27 << 0x11 | uVar27);
    uVar21 = ~(uVar21 & 0xa48fa144 ^ uVar23);
    uVar27 = ~(uVar28 & 0x55555555 ^ uVar14) ^ uVar21;
    uVar23 = uVar27 & 0x7f807f80 ^ uVar21;
    uVar31 = (ulonglong)uVar23;
    uVar6 = ~((uVar24 << 6 | uVar24) << 0x11 ^ uVar6);
    uVar16 = (ulonglong)uVar6;
    piVar30 = (int *)register0x00000020;
    do {
      puVar10 = local_f0;
      puVar11 = &local_12c;
      FUN_1811bbd4e();
      uVar2 = rdtsc();
      uVar24 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
      *puVar10 = uVar24;
      uVar18 = (ulonglong)uVar24 * 0x21 + 0x6537cf92;
      piVar30 = (int *)(~(((ulonglong)piVar30 ^ 0xffffffffffffffff) + 1) + 1);
      uVar18 = uVar18 ^ uVar18 * 0x20;
      uVar18 = uVar18 >> 8 | uVar18 << 0x38;
      uVar7 = -((uVar7 ^ 0xffffffffffffffff) + 1);
      uVar18 = uVar18 ^ (uVar18 * 5 >> 8) - 0x19670010;
      *puVar11 = (uint)(uVar18 << 7) & 0x7fffffff | (uint)(uVar18 >> 0x39);
      uVar24 = (*piVar30 + 1) * *piVar30 & 0x80000001;
      if ((int)uVar24 < 0) {
        uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar24 != 0);
    local_12c = local_12c ^ local_11c;
    if (local_12c < 0x149bda) {
      do {
        puVar10 = &local_13c;
        FUN_1811bd04f();
        *puVar10 = 0xaf1451eb;
        uVar24 = (*piVar30 + 1) * *piVar30 & 0x80000001;
        if ((int)uVar24 < 0) {
          uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar24 != 0);
      uVar24 = ((local_13c ^ 0xb391a7ba) << 4 | (local_13c ^ 0xb391a7ba) >> 0x1c) + 0x742330bc;
      uVar24 = (uVar24 * 0x400000 | uVar24 >> 10) + 0xdbc5a4c0;
      uVar24 = (uVar24 * 0x2000 | uVar24 >> 0x13) ^ 0xee475fff;
      local_13c = (uVar24 << 0x1f | uVar24 >> 1) ^ 0xebe83c3a;
      local_a0 = ~(uVar28 & 0xaaaaaaaa ^ uVar14);
      local_9c = uVar6;
      local_98 = uVar23;
      local_94 = uVar27 & 0x807f807f ^ uVar21;
      do {
        local_128 = 0xc9293130;
        local_c8 = 0x1811bc483;
        FUN_1811bbd4e();
        uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
        if ((int)uVar21 < 0) {
          uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar21 != 0);
      uVar21 = ~((~local_128 << 6 | ~local_128 >> 0x1a) + 0x1f455fee);
      local_128 = (uVar21 >> 0x11 | uVar21 << 0xf) + 0x898697aa;
      (*(code *)((int)local_128 + local_c8))(&local_a0,local_70);
      iVar5 = 7;
      do {
        uVar21 = (local_58 >> 0xc ^ local_58) >> 2 & 0xfff;
        uVar27 = (local_54 >> 5 ^ local_54) >> 8 & 1;
        local_58 = (uVar21 << 0xc | uVar21) << 2 ^ local_58;
        uVar6 = (local_58 >> 0x18 | local_58 << 8) + 0x6e4157a7;
        uVar27 = (local_54 << 0x1c | ((uVar27 << 5 | uVar27) << 8 ^ local_54) >> 4) + 0x20a786ca;
        uVar21 = (uVar6 >> 0xb ^ uVar6) >> 9 & 0x3ff;
        uVar14 = uVar6 ^ (uVar21 << 0xb | uVar21) << 9;
        uVar21 = (uVar27 >> 0x11 ^ uVar27) >> 0xb & 3;
        uVar27 = uVar27 ^ (uVar21 << 0x11 | uVar21) << 0xb;
        uVar27 = (uVar27 >> 0x10 | uVar27 << 0x10) & 0xa3635c9c |
                 (uVar27 << 0x10 | uVar27 >> 0x10) & 0x5c9ca363;
        uVar21 = (uVar14 << 4 | uVar14 >> 0x1c) & 0x87878787 |
                 (uVar14 >> 4 | uVar6 * 0x10000000) & 0x78787878;
        uVar27 = (uVar27 << 0x12 | uVar27 >> 0xe) + 0x607d5440;
        uVar21 = uVar27 ^ (uVar21 << 0x12 | uVar21 >> 0xe) + 0x270a0bab;
        local_54 = uVar21 & 0x3c3c3c3c ^ uVar27;
        uVar21 = uVar21 & 0xc3c3c3c3 ^ uVar27 ^ local_54;
        local_58 = uVar21 & 0x7341a189 ^ local_54;
        local_54 = uVar21 & 0x8cbe5e76 ^ local_54;
        iVar5 = iVar5 + -1;
      } while (-1 < iVar5);
      uVar21 = ((local_58 ^ 0x8370e54f) >> 0x1f | (local_58 ^ 0x8370e54f) << 1) + 0xb2ed8502;
      uVar21 = (uVar21 >> 0x16 | uVar21 * 0x400) ^ 0x54fdac3b;
      uVar21 = (uVar21 << 0x13 | uVar21 >> 0xd) + 0xb3ff0948;
      if (((uVar21 >> 0x17 | uVar21 * 0x200) ^ 0xb570e78d ^ local_13c) + local_54 != local_138) {
        do {
          local_c0 = FUN_180bc28e0;
          uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
          if ((int)uVar21 < 0) {
            uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar21 != 0);
        FUN_180bc28e0();
        do {
          FUN_1811bd04f();
          uVar21 = (*piVar30 + 1) * *piVar30 & 0x80000001;
          if ((int)uVar21 < 0) {
            uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar21 != 0);
      }
    }
    uVar13 = ~uVar13 & local_124 | ~local_124 & uVar13;
    if ((uVar13 & 0x3ffff) == 0 && uVar13 == 0) {
      if (local_108 != 0) {
        FUN_180488690(local_100 + 0x2a0);
      }
      puVar3 = auStack_188;
      do {
        puVar19 = puVar3;
        *(ulonglong *)(puVar19 + -8) = uVar31;
        *(ulonglong *)(puVar19 + -0x10) = uVar16;
        *(ulonglong *)(puVar19 + -0x18) = uVar7;
        lVar4 = -(longlong)(int)local_118;
        piVar30 = (int *)((((ulonglong)piVar30 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
        uVar7 = *(ulonglong *)(puVar19 + lVar4 + 0x9a8);
        uVar16 = *(ulonglong *)(puVar19 + lVar4 + 0x9b0);
        uVar31 = *(ulonglong *)(puVar19 + lVar4 + 0x9b8);
        uVar13 = (*piVar30 + 1) * *piVar30 & 0x80000001;
        if ((int)uVar13 < 0) {
          uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
        }
        puVar3 = puVar19 + lVar4 + 0x9c0;
      } while (uVar13 != 0);
      *(undefined **)(puVar19 + lVar4 + 0x9b8) = &UNK_1811bc912;
    }
    if (local_108 != 0) {
      FUN_180488690(local_100 + 0x2a0,local_108);
    }
    thunk_FUN_1805a9280();
    return;
  }
  uVar27 = uVar27 & 0x23ff;
  iVar5 = uVar27 * uVar27 + 1;
  uVar21 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar21 = (int)(uVar21 - 7) >> 0x1f & uVar21;
  local_d8 = (longlong)(int)(-uVar21 | uVar21);
code_r0x0001811bbce0:
  uVar21 = (uint)lVar4 & 0x1ff;
  uVar27 = uVar13 & 0x4f;
  iVar22 = (uVar21 + 2) * (uVar21 + 1) * uVar21;
  uVar21 = (uint)lVar4 & 0x17ff;
  iVar5 = uVar21 * uVar21 + 1;
  uVar21 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar21 = (int)(uVar21 - 7) >> 0x1f & uVar21;
  lVar4 = lVar4 + (0x144 - (0xfcd4L >>
                            (((char)((byte)(-uVar21 >> 0x18) | (byte)(uVar21 >> 0x18)) >> 7 ^
                             (byte)(local_d8 >> 0x1f)) & 0x3f) ^
                           ((longlong)
                            (int)((iVar22 * 0x55555555 + ((iVar22 >> 1) - (iVar22 >> 3)) >> 0x1e) +
                                  0xc410 + ((uVar27 + 1) * (uVar27 + 1) * uVar27 * uVar27 & 1)) |
                           0xfd94U)));
  puVar20 = (undefined4 *)(local_d0 + lVar4);
  if ((pIVar15 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar17._0_1_ = pIVar15->e_magic[0], lVar17._1_1_ = pIVar15->e_magic[1],
     lVar17._2_2_ = pIVar15->e_cblp, lVar17._4_2_ = pIVar15->e_cp, lVar17._6_2_ = pIVar15->e_crlc,
     -1 < lVar17)) {
    local_158 = (undefined1 *)0x2621fc0;
    do {
      if (puVar20 < IMAGE_DOS_HEADER_180000000.e_magic + lVar17 + 8) {
        if (-1 < lVar17) {
          plVar8 = (longlong *)(lVar17 + 0x180000000);
          if (plVar8 < puVar20 + 1) {
            uStack_80 = *puVar20;
            pIVar26 = pIVar15;
            goto code_r0x0001811bbe20;
          }
        }
        break;
      }
      lVar17._0_2_ = pIVar15->e_cparhdr;
      lVar17._2_2_ = pIVar15->e_minalloc;
      lVar17._4_2_ = pIVar15->e_maxalloc;
      lVar17._6_2_ = pIVar15->e_ss;
      pIVar15 = (IMAGE_DOS_HEADER *)&pIVar15->e_cparhdr;
    } while (-1 < lVar17);
  }
  goto code_r0x0001811bbe50;
  while (plVar8 = (longlong *)(lVar17 + 0x180000000), plVar8 < puVar20 + 1) {
code_r0x0001811bbe20:
    lVar1 = lVar17 - (longlong)puVar20;
    lVar17 = *(longlong *)&pIVar26->e_cparhdr;
    pIVar26 = (IMAGE_DOS_HEADER *)&pIVar26->e_cparhdr;
    *(longlong *)(&stack0x00017fffff80 + lVar1) = *plVar8 + -0x180000000;
    if (lVar17 < 0) break;
  }
code_r0x0001811bbe50:
  do {
    puVar10 = &uStack_130;
    cVar12 = -0x1b;
    FUN_1811bd04f();
    if (cVar12 == '\0') {
      uVar13 = 0x811bbe62;
    }
    uVar21 = func_0x0001811bad5d();
    *puVar10 = uVar21;
    uVar21 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar21 < 0) {
      uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar21 != 0);
  uStack_130 = (uStack_130 * 0x16a88000 | uStack_130 * -0x3361d2af >> 0x11) * 0x1b873593;
  uVar13 = local_168 + ((uVar13 ^ uStack_130) << 0xd | (uVar13 ^ uStack_130) >> 0x13) * 5;
  if (local_160 == (undefined *)lVar4) goto LAB_1811bbf20;
  goto code_r0x0001811bbce0;
}



############ FUN_ 1811a24e0 size=988 ############

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

void FUN_1811a24e0(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint *puVar3;
  code **ppcVar4;
  uint uVar5;
  longlong unaff_RSI;
  int iVar6;
  int unaff_retaddr;
  undefined1 auStack_148 [32];
  undefined4 local_128;
  uint local_108 [11];
  uint local_dc;
  code *local_d8 [4];
  undefined8 local_b8;
  undefined1 local_48 [24];
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_148;
  uVar5 = (uint)&stack0x00000000 & 0x1bf;
  iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  local_dc = 0x517bU - (((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) ^ 0x57ab;
  local_128 = 0x590;
  local_b8 = param_1;
  do {
    puVar3 = local_108;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001811a26dc(puVar3,local_108);
    uVar1 = rdtsc();
    *puVar3 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_108[0] = (local_108[0] * -0x50283b32 >> 0x18 ^ local_108[0] * -0x50283b32) * -0x73325029;
  if (local_108[0] < 0x3d980f7) {
    local_d8[0] = (code *)0x0;
    do {
      ppcVar4 = local_d8;
      FUN_1811a39bb(ppcVar4,local_d8);
      *ppcVar4 = FUN_1813f2240;
      FUN_1811a3b9a();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = (*local_d8[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    uVar2 = (ulonglong)uVar5;
  } while (uVar5 != 0);
                    /* WARNING: Call to offcut address within same function */
  func_0x0001811a277c();
  *(uint *)(uVar2 + 0x5e) = *(uint *)(uVar2 + 0x5e) ^ (uint)local_48;
                    /* WARNING: Could not recover jumptable at 0x0001811a28d9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_RSI + -0xb48))();
  return;
}



############ FUN_ 1811a4040 size=2348 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001811a40c4) */
/* WARNING: Removing unreachable block (ram,0x0001811a4689) */
/* WARNING: Removing unreachable block (ram,0x0001811a40eb) */

void FUN_1811a4040(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint *puVar4;
  code **ppcVar5;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  ulonglong uVar9;
  longlong *plVar10;
  int unaff_retaddr;
  undefined1 auStack_168 [32];
  uint local_148;
  uint local_144;
  uint local_140;
  uint local_138;
  undefined *local_130;
  undefined4 local_128;
  undefined8 local_118;
  undefined8 local_110;
  undefined8 local_108;
  uint local_100 [2];
  undefined4 local_f8;
  uint local_f4;
  uint local_f0;
  code *local_e8;
  undefined *local_e0;
  ulonglong local_d8;
  undefined8 local_d0;
  undefined4 local_c8;
  undefined4 local_c4;
  longlong local_c0 [18];
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_168;
  uVar3 = (uint)&stack0x00000000 & 0x2bf;
  iVar6 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  local_f0 = 0xcf9f << ((byte)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) & 0x1f) ^
             0xc4ef;
  local_f8 = 0x8c0;
  local_d0 = param_1;
  do {
    plVar10 = local_c0;
    puVar8 = &local_c8;
    puVar4 = &local_148;
    FUN_1811a59b1();
    *puVar4 = 0xed59e0d1;
    *puVar8 = 0x66;
    *plVar10 = 0x1811a41a7;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar7 = ~((local_148 >> 0x10 | local_148 << 0x10) & 0xbba4445b |
           (local_148 << 0x10 | local_148 >> 0x10) & 0x445bbba4);
  uVar3 = (uVar7 >> 0xd ^ uVar7) & 0xfff;
  uVar7 = uVar7 ^ (uVar3 << 0xd | uVar3);
  uVar7 = (uVar7 << 0x10 | uVar7 >> 0x10) & 0x8c6d7392 |
          (uVar7 >> 0x10 | uVar7 << 0x10) & 0x73928c6d;
  uVar3 = (uVar7 >> 0xc ^ uVar7) & 0xff;
  uVar3 = uVar7 ^ (uVar3 << 0xc | uVar3);
  uVar3 = (uVar3 >> 4 | uVar3 << 0x1c) & 0x96969696 | (uVar3 << 4 | uVar7 >> 0x1c) & 0x69696969;
  uVar7 = (uVar3 >> 0xd ^ uVar3) >> 5 & 0x1fff;
  uVar3 = (uVar7 << 0xd | uVar7) << 5 ^ uVar3;
  do {
    local_c4 = 0x68;
    local_c0[1] = 0x1811a42a7;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_c0[0] = (int)((uVar3 >> 0x1c | uVar3 << 4) + 0x183cf589) + local_c0[0];
  local_148 = 0;
  local_128 = 0;
  *(longlong *)(local_c0[0] + 4) =
       *(longlong *)(local_c0[0] + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x10c9b9f7_mfort6317_ >> 3) & 0x42a86);
  do {
    uVar1 = rdtsc();
    local_f4 = (int)uVar1 - (int)((ulonglong)uVar1 >> 0x20);
    uVar2 = (ulonglong)local_f4 ^ (ulonglong)local_f4 * 0x120 - 0x24f08329;
    uVar2 = uVar2 - ((uVar2 * 0x2400 | uVar2 * 9 >> 0x36) - 0x70dfc340);
    uVar2 = (uVar2 * 0x4000 | uVar2 >> 0x32) * 0x81 + 0x18177156;
    uVar9 = (uVar2 >> 0xb | uVar2 << 0x35) * 0x202 + 0x18ec6e9e;
    uVar2 = uVar9 * 0x100 | uVar9 >> 0x38;
    uVar2 = (uVar2 ^ (uVar2 << 9 | (uVar9 & 0xffffffffffffff) >> 0x2f) + 0x6ebee3ee) * 0x4001 -
            0x158bdaf2;
    uVar3 = (int)uVar2 + (int)(uVar2 >> 10) + -0x257570d9 & 0x38cef542;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  *(int *)(local_c0[0] + 8) = *(int *)(local_c0[0] + 8) + (uVar3 ^ 0x4917a782);
  *(int *)(local_c0[0] + 4) = *(int *)(local_c0[0] + 4) + (uVar3 ^ 0xc5172969);
  uVar2 = *(longlong *)(local_c0[0] + 4) + 0xda42623cfd301e17;
  uVar9 = uVar2 >> 0x23 | uVar2 * 0x20000000;
  uVar2 = ((uVar9 >> 2 | (uVar2 >> 0x23) << 0x3e) & 0x9999999999999999 |
          (uVar9 << 2 | (uVar2 & 0x7ffffffff) >> 0x21) & 0x6666666666666666) + 0xa426cad74cbab0fa;
  uVar2 = (uVar2 << 0x34 | uVar2 >> 0xc) + 0xbf717b49199144d4;
  uVar2 = (uVar2 * 0x10000 | uVar2 >> 0x30) & 0xfaa0055ffaa0055f |
          (uVar2 >> 0x10 | uVar2 << 0x30) & 0x55ffaa0055ffaa0;
  uVar2 = (uVar2 << 8 | uVar2 >> 0x38) & 0xd42bd42bd42bd42b |
          (uVar2 >> 8 | uVar2 << 0x38) & 0x2bd42bd42bd42bd4;
  uVar2 = (uVar2 << 0x10 | uVar2 >> 0x30) & 0xfb780487fb780487 |
          (uVar2 >> 0x10 | uVar2 << 0x30) & 0x487fb780487fb78;
  *(ulonglong *)(local_c0[0] + 4) = uVar2;
  dvs_0x10c9b9f7_mfort6317_ =
       (uint *)((longlong)dvs_0x10c9b9f7_mfort6317_ + (ulonglong)((uint)(uVar2 >> 10) & 0x4508a800))
  ;
  local_144 = (uint)(*(ulonglong *)(local_c0[0] + 4) >> 0x1a) & 0x7fffffff;
  local_138 = (uint)(*(ulonglong *)(local_c0[0] + 4) >> 0x1b) ^ 0xef7005aa;
  local_d8 = *(ulonglong *)(local_c0[0] + 4) ^ 0x45d3007c661deb26;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    FUN_1811a292f(0xd238);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar1 = rdtsc();
    local_140 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_1811a3553();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_140 = (local_140 * -0x12aa00af >> 0x18 ^ local_140 * -0x12aa00af) * -0x7a147333;
  if (local_140 < 0x7fffffff) {
    local_e8 = (code *)0x0;
    do {
      ppcVar5 = &local_e8;
      FUN_1811a3d01(ppcVar5,&local_e8);
      *ppcVar5 = FUN_1813f2240;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_e8)(0,0x4079);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  local_e0 = &DAT_182279740;
  local_118 = 0x13fd8;
  local_130 = &DAT_18228d718;
  local_108 = 0x23fc9fc6b9b39977;
  local_110 = 0xb9b39977;
  do {
    puVar4 = local_100;
    FUN_1811a4d39();
    *puVar4 = 0x397fc278;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = (local_100[0] << 6 | local_100[0] >> 0x1a) + 0x8f07272c;
  uVar3 = (uVar3 * 0x1000000 | uVar3 >> 8) + 0x1026867;
  uVar3 = ~((uVar3 * 0x2000000 | uVar3 >> 7) ^ 0x9681f62e) ^ 0xb3823eb6;
  local_118 = CONCAT44(local_118._4_4_,uVar3 << 0xe | uVar3 >> 0x12);
  FUN_1811a49e4();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1811cc9a0 size=1263 ############

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

void FUN_1811cc9a0(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  ulonglong uVar3;
  uint uVar4;
  int *piVar5;
  undefined1 auStack_258 [32];
  undefined4 local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined4 local_210;
  undefined1 local_20c [4];
  uint local_208;
  undefined4 local_1fc;
  undefined4 local_1ec;
  undefined4 local_1e8;
  undefined8 local_1e0;
  uint local_1d8;
  code *local_1d0 [4];
  undefined8 local_1b0;
  undefined8 local_1a8;
  undefined4 local_1a0;
  undefined8 local_198;
  undefined8 local_190;
  undefined4 local_188;
  undefined8 local_158;
  ulonglong local_48;
  
  local_158 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_258;
  local_1ec = 0x610;
  local_1e8 = 0x150;
  piVar5 = (int *)register0x00000020;
  local_218 = param_2;
  local_1b0 = param_1;
  do {
    lVar2 = FUN_1811cd608(0xca04);
    piVar5 = (int *)((lVar2 + (longlong)piVar5) -
                    (((longlong)piVar5 - (lVar2 + (longlong)piVar5) ^ 0xffffffffffffffffU) + 1));
    uVar4 = (*piVar5 + 1) * *piVar5 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_230 = 0x3ff00;
  local_1a8 = 0x180c98588;
  local_1e0 = 0x180cd8488;
  local_228 = 0xe9f8620e2c842992;
  local_220 = 0x2c842992;
  do {
    uVar1 = rdtsc();
    local_208 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_1811ccec8();
    uVar4 = (*piVar5 + 1) * *piVar5 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_208 = (local_208 * -0x3d4d12ab >> 0x18 ^ local_208 * -0x3d4d12ab) * -0x46013d4e;
  if (local_208 < 0x7fffffff) {
    do {
      local_1d0[0] = FUN_181194940;
      FUN_1811cc442(local_1d0,0x12cf);
      uVar4 = (*piVar5 + 1) * *piVar5 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_1d0[0])();
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  local_238 = 0;
  do {
    local_210 = 0x74acaabf;
    local_188 = 0x20;
    local_198 = 0x1811ccc9a;
    uVar4 = (*piVar5 + 1) * *piVar5 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_210 = 0x145565a;
  do {
    local_1fc = 0xa8be44f4;
    local_1a0 = 0x61;
    local_190 = 0x1811ccd87;
    uVar4 = (*piVar5 + 1) * *piVar5 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_210 = 0;
  local_1fc = 0;
  dvs_0x676db95e_mfort6317_ =
       (uint *)((longlong)dvs_0x676db95e_mfort6317_ +
               (ulonglong)((uint)((ulonglong)dvs_0xd3f9f4bb_mfort6317_ >> 0x1a) & 0x200044));
  uVar1 = rdtsc();
  local_1d8 = (uint)uVar1 ^ (-(int)((ulonglong)uVar1 >> 0x20) ^ 0xffffffffU) + 1;
  FUN_1811ccec9(local_20c,(ulonglong)local_1d8 - (ulonglong)(local_1d8 >> 9));
  return;
}



############ FUN_ 1811d5bf0 size=817 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_1811d5bf0(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  int unaff_retaddr;
  undefined1 auStack_b8 [32];
  uint local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_70;
  undefined4 local_68;
  uint local_64;
  code *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_68 = 0x1000;
  if (((ulonglong)&stack0x00000000 & 0x940) == 0) {
    uVar3 = (uint)&stack0x00000000 & 0x3bf;
    uVar3 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3;
  }
  else {
    uVar3 = 0;
  }
  local_64 = uVar3 + 0x8c57 ^ 0x8d37;
  do {
    uVar1 = rdtsc();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * 0x1a85c2b2;
  local_98 = (uVar3 >> 0x18 ^ uVar3) * -0x35943595;
  local_58 = param_1;
  if (local_98 < 0x7fffffff) {
    do {
      local_60 = FUN_1813bba80;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    local_80 = param_1;
    uVar2 = FUN_1813bba80(0,0xebdf);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  local_80 = 0;
  local_90 = 0x1215abc;
  local_70 = 0x181215abc;
  local_88 = 0x1812558bc;
  FUN_1811d5f43();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1811e5160 size=509 ############

/* WARNING: Removing unreachable block (ram,0x0001811e524b) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

char FUN_1811e5160(undefined8 *param_1)

{
  undefined8 uVar1;
  char cVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  code **ppcVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined1 auStack_1a8 [40];
  uint local_180;
  uint local_148;
  undefined4 local_12c;
  code *local_128 [3];
  undefined8 *local_110;
  undefined8 local_a8;
  undefined1 local_98 [104];
  ulonglong local_30;
  
  local_a8 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  if (((ulonglong)&stack0x00000000 & 0x880) == 0) {
    uVar6 = 0;
  }
  else {
    uVar6 = (uint)&stack0x00000000 & 0x23f;
    uVar6 = ((uVar6 + 2) * (uVar6 + 1) * uVar6) % 3;
  }
  local_148 = (uVar6 | 0x9aec) ^ 0x9b3c;
  local_12c = 800;
  local_110 = param_1;
  (**(code **)(*(longlong *)*param_1 + 0x10))((longlong *)*param_1,local_98);
  do {
    uVar1 = rdtsc();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_180 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x51ca3595;
  local_180 = local_180 >> 0x18 ^ local_180;
  uVar4 = (ulonglong)local_180;
  local_180 = local_180 * -0x3b317a15;
  if (local_180 < 0x49cd42f) {
    local_128[0] = (code *)0x0;
    do {
      ppcVar5 = local_128;
      FUN_1811e5016(ppcVar5,local_128);
      *ppcVar5 = FUN_181194940;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
      uVar4 = (ulonglong)uVar6;
    } while (uVar6 != 0);
    uVar3 = (*local_128[0])(0,0xd890);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  FUN_1811e560b();
                    /* WARNING: Call to offcut address within same function */
  cVar2 = func_0x0001811e5368();
  *(byte *)(uVar4 - 9) = *(byte *)(uVar4 - 9) | (byte)uVar4;
  return cVar2 + 'N';
}



############ FUN_ 181208620 size=865 ############

/* WARNING: Instruction at (ram,0x00018120889c) overlaps instruction at (ram,0x000181208898)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018120871e) */

longlong FUN_181208620(void)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  int iVar4;
  uint *puVar5;
  code **ppcVar6;
  undefined1 uVar7;
  undefined1 uVar8;
  int unaff_retaddr;
  undefined1 auStack_178 [56];
  uint local_140 [18];
  uint local_f8;
  undefined4 local_ec;
  code *local_e0 [22];
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_178;
  uVar3 = (uint)&stack0x00000000 & 31999;
  iVar4 = uVar3 * uVar3 + 1;
  uVar3 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3 | (uint)&stack0x00000000;
  local_f8 = (int)(-uVar3 | uVar3) >> 0x1f & 0xee3cU ^ 0xec0c;
  local_ec = 0x950;
  do {
    puVar5 = local_140;
    FUN_181207d6b(puVar5,local_140);
    uVar1 = rdtsc();
    *puVar5 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_181208c7e();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_140[0] = (local_140[0] * -0x7a1412ab >> 0x18 ^ local_140[0] * -0x7a1412ab) * 0x5bd1ec53;
  uVar8 = (int)(local_140[0] + 0x80000001) < 0;
  uVar7 = 0;
  if (local_140[0] < 0x7fffffff) {
    local_e0[0] = (code *)0x0;
    do {
      ppcVar6 = local_e0;
      FUN_1812081f4(ppcVar6,local_e0);
      *ppcVar6 = FUN_1813f2240;
      FUN_18120793b();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_e0[0])();
    uVar7 = uVar2 == 0;
    uVar8 = (longlong)(uVar2 - 1) < 0;
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  if ((bool)uVar8) {
    uVar7 = 0;
  }
                    /* WARNING: Call to offcut address within same function */
  uVar2 = func_0x00018120885a();
  if ((bool)uVar7) {
    return -(~uVar2 + 1);
  }
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1813d3b30 size=3620 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x0001813d4323) overlaps instruction at (ram,0x0001813d4322)
    */
/* WARNING: Removing unreachable block (ram,0x0001813d56ec) */
/* WARNING: Removing unreachable block (ram,0x0001813d5621) */
/* WARNING: Removing unreachable block (ram,0x0001813d4f2f) */
/* WARNING: Removing unreachable block (ram,0x0001813d431d) */
/* WARNING: Removing unreachable block (ram,0x0001813d3f89) */
/* WARNING: Removing unreachable block (ram,0x0001813d3cdf) */
/* WARNING: Removing unreachable block (ram,0x0001813d3b69) */
/* WARNING: Removing unreachable block (ram,0x0001813d3c4c) */
/* WARNING: Removing unreachable block (ram,0x0001813d3cb4) */
/* WARNING: Removing unreachable block (ram,0x0001813d3fa6) */
/* WARNING: Removing unreachable block (ram,0x0001813d45cf) */
/* WARNING: Removing unreachable block (ram,0x0001813d5289) */
/* WARNING: Removing unreachable block (ram,0x0001813d5813) */
/* WARNING: Removing unreachable block (ram,0x0001813d48a0) */
/* WARNING: Removing unreachable block (ram,0x0001813d3f07) */
/* WARNING: Removing unreachable block (ram,0x0001813d3b78) */
/* WARNING: Removing unreachable block (ram,0x0001813d3fbf) */
/* WARNING: Removing unreachable block (ram,0x0001813d3bfe) */
/* WARNING: Removing unreachable block (ram,0x0001813d4f19) */
/* WARNING: Switch with 1 destination removed at 0x0001813d575e */

void FUN_1813d3b30(void)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined7 uVar4;
  byte bVar5;
  undefined8 uVar6;
  undefined1 *puVar7;
  uint uVar8;
  uint uVar9;
  ulonglong uVar10;
  undefined8 *puVar11;
  uint uVar12;
  uint uVar13;
  ulonglong uVar14;
  uint *puVar15;
  longlong lVar16;
  int iVar17;
  ulonglong uVar18;
  ulonglong *puVar19;
  undefined1 *puVar20;
  undefined1 *puVar21;
  undefined1 *puVar22;
  int iVar23;
  uint uVar24;
  int iVar25;
  int *piVar26;
  int iVar27;
  ulonglong uVar28;
  uint uVar29;
  uint uVar30;
  longlong lVar31;
  ulonglong uVar32;
  int *piVar33;
  undefined8 unaff_XMM6_Qa;
  undefined8 unaff_XMM6_Qb;
  int unaff_retaddr;
  ulonglong uStack_c0;
  undefined1 auStack_b8 [32];
  undefined *local_98;
  ulonglong local_90;
  undefined4 *local_88;
  undefined *local_78;
  
  puVar20 = auStack_b8;
  uVar32 = 0;
  local_88 = &DAT_18163cb4c;
  local_98 = &DAT_18163cc4c;
  uVar12 = (DAT_18163cb4c * 0x16a88000 | (uint)(DAT_18163cb4c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           0x684a622e;
  uVar12 = (DAT_18163cb50 * 0x16a88000 | (uint)(DAT_18163cb50 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (DAT_18163cb54 * 0x16a88000 | (uint)(DAT_18163cb54 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (DAT_18163cb58 * 0x16a88000 | (uint)(DAT_18163cb58 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (DAT_18163cb5c * 0x16a88000 | (uint)(DAT_18163cb5c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (DAT_18163cb60 * 0x16a88000 | (uint)(DAT_18163cb60 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar28 = (ulonglong)uVar12;
  uVar8 = uVar12 & 0x16ff;
  local_90 = (ulonglong)uVar8;
  uVar24 = uVar12 & 0x7f;
  uVar18 = (longlong)
           (int)(((uVar24 + 1) * (uVar24 + 1) * uVar24 * uVar24 & 0x80000003 &
                 (uVar8 + 1) * uVar8 & 0x80000001) + 0xef87) ^ 0xffffffffffff107b;
  uVar12 = (*(int *)(&DAT_18163cb68 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb68 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar12;
  uVar12 = (*(int *)(&DAT_18163cb6c + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb6c + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = uVar18;
  local_78 = local_98;
  do {
    uVar14 = 0x590c;
    *(undefined8 *)(puVar20 + -8) = 0x1813d404a;
    FUN_1813d2767();
    if ((uVar14 & 0xe700) == 0) {
      puVar19 = (ulonglong *)(puVar20 + -8);
      puVar20 = puVar20 + -8;
      *puVar19 = uVar10;
    }
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar12 = (*(int *)(&DAT_18163cb70 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb70 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb74 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb74 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb78 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb78 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb7c + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb7c + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb80 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb80 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb84 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb84 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb88 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb88 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb8c + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb8c + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb90 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb90 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb94 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb94 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    puVar15 = (uint *)(puVar20 + 0xd0);
    *(undefined8 *)(puVar20 + -8) = 0x1813d4195;
    FUN_1813d538b(puVar15,puVar20 + 0xd0);
    uVar3 = rdtsc();
    *puVar15 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    uVar8 = (*(int *)(puVar20 + 0xb8) + 1) * *(int *)(puVar20 + 0xb8) & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = ((uint)(*(int *)(puVar20 + 0xd0) * 0x5bd15bd1) >> 0x18 ^
          *(int *)(puVar20 + 0xd0) * 0x5bd15bd1) * -0x12aa4602;
  *(uint *)(puVar20 + 0xd0) = uVar8;
  if (uVar8 < 0x3a909) {
    *(undefined8 *)(puVar20 + 0x38) = 0;
    do {
      *(code **)(puVar20 + 0x38) = FUN_181194940;
      *(undefined8 *)(puVar20 + -8) = 0x1813d4243;
      FUN_1813d2ae2(puVar20 + 0x38,0xc8de);
      uVar8 = (*(int *)(puVar20 + 0xb8) + 1) * *(int *)(puVar20 + 0xb8) & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    *(undefined8 *)(puVar20 + -8) = 0x1813d4263;
    uVar10 = (**(code **)(puVar20 + 0x38))();
    if (1 < uVar10) {
      *(undefined8 *)(puVar20 + -8) = 0x1813d426e;
      FUN_18113eab0();
    }
  }
  piVar26 = (int *)(&DAT_18163cba0 + uVar18);
  uVar12 = (*(int *)(&DAT_18163cb98 + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb98 + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&DAT_18163cb9c + uVar18) * 0x16a88000 |
           (uint)(*(int *)(&DAT_18163cb9c + uVar18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (ulonglong)uVar12;
  uVar12 = (*piVar26 * 0x16a88000 | (uint)(*piVar26 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar12;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  bVar5 = (byte)uVar12 & 0x4f;
  piVar26 = (int *)((longlong)piVar26 +
                   ((longlong)
                    (0x7c3c << ((bVar5 + 1) * (bVar5 + 1) * bVar5 * bVar5 & (byte)piVar26 & 1)) ^
                   0x7c38U));
  do {
    lVar31 = uVar32 + uVar10;
    uVar10 = (-uVar10 ^ 0xffffffffffffffff) + 1;
    uVar32 = lVar31 - uVar10;
    uVar8 = (*(int *)(puVar20 + 0xb8) + 1) * *(int *)(puVar20 + 0xb8) & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar12 = (*piVar26 * 0x16a88000 | (uint)(*piVar26 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar12;
  uVar12 = (piVar26[1] * 0x16a88000 | (uint)(piVar26[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[2] * 0x16a88000 | (uint)(piVar26[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[3] * 0x16a88000 | (uint)(piVar26[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[4] * 0x16a88000 | (uint)(piVar26[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[5] * 0x16a88000 | (uint)(piVar26[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[6] * 0x16a88000 | (uint)(piVar26[6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[7] * 0x16a88000 | (uint)(piVar26[7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[8] * 0x16a88000 | (uint)(piVar26[8] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[9] * 0x16a88000 | (uint)(piVar26[9] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[10] * 0x16a88000 | (uint)(piVar26[10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  *(undefined8 *)(puVar20 + 0x40) = 0x74cb706d70d03b75;
  iVar23 = piVar26[0xb];
  iVar17 = piVar26[0xc];
  *(int *)(puVar20 + 0x28) = (int)*(undefined8 *)(puVar20 + 0x40);
  uVar12 = (iVar23 * 0x16a88000 | (uint)(iVar23 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (iVar17 * 0x16a88000 | (uint)(iVar17 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0xd] * 0x16a88000 | (uint)(piVar26[0xd] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0xe] * 0x16a88000 | (uint)(piVar26[0xe] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0xf] * 0x16a88000 | (uint)(piVar26[0xf] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x10] * 0x16a88000 | (uint)(piVar26[0x10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x11] * 0x16a88000 | (uint)(piVar26[0x11] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x12] * 0x16a88000 | (uint)(piVar26[0x12] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x13] * 0x16a88000 | (uint)(piVar26[0x13] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  iVar23 = *(int *)(puVar20 + 200);
  uVar12 = (piVar26[0x14] * 0x16a88000 | (uint)(piVar26[0x14] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x15] * 0x16a88000 | (uint)(piVar26[0x15] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x16] * 0x16a88000 | (uint)(piVar26[0x16] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x17] * 0x16a88000 | (uint)(piVar26[0x17] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[0x18] * 0x16a88000 | (uint)(piVar26[0x18] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar8 = uVar12 & 0x20ff;
  piVar26 = (int *)((longlong)piVar26 +
                   ((longlong)
                    (int)(((((uint)*(undefined8 *)(puVar20 + 0x20) & 0x7aff) - 1) *
                           ((uint)*(undefined8 *)(puVar20 + 0x20) & 0x7aff) & 1) +
                         ((uVar8 + 1) * uVar8 & 0x80000001)) ^ 0xcU) + 0x60);
  uVar12 = (piVar26[-2] * 0x16a88000 | (uint)(piVar26[-2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           uVar12;
  uVar12 = (piVar26[-1] * 0x16a88000 | (uint)(piVar26[-1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar8 = (uint)piVar26 & 0x2ff;
  uVar12 = (*piVar26 * 0x16a88000 | (uint)(*piVar26 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  iVar17 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  if ((((iVar17 >> 1) - (iVar17 >> 3)) + iVar17 * 0x55555555 >> 0x1e & 0x440U) == 0) {
    uVar8 = (uint)piVar26 & 0x1bf;
  }
  else {
    uVar8 = uVar12 & 0x13f;
  }
  iVar17 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  piVar26 = (int *)((0x5ad4L >>
                     ((char)iVar17 + (char)((ulonglong)((longlong)iVar17 * 0x55555556) >> 0x20) * -3
                     & 0x3fU) ^ 0x5af4U) + (longlong)piVar26);
  uVar12 = (piVar26[-7] * 0x16a88000 | (uint)(piVar26[-7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           uVar12;
  uVar12 = (piVar26[-6] * 0x16a88000 | (uint)(piVar26[-6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[-5] * 0x16a88000 | (uint)(piVar26[-5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[-4] * 0x16a88000 | (uint)(piVar26[-4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[-3] * 0x16a88000 | (uint)(piVar26[-3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[-2] * 0x16a88000 | (uint)(piVar26[-2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[-1] * 0x16a88000 | (uint)(piVar26[-1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*piVar26 * 0x16a88000 | (uint)(*piVar26 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[1] * 0x16a88000 | (uint)(piVar26[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[2] * 0x16a88000 | (uint)(piVar26[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (ulonglong)uVar12;
  do {
    *(undefined8 *)(puVar20 + -8) = 0x1813d47aa;
    FUN_1813d2d40();
    uVar8 = (*(int *)(puVar20 + 0xb8) + 1) * *(int *)(puVar20 + 0xb8) & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  lVar31 = *(longlong *)(puVar20 + 0xc0);
  uVar12 = (piVar26[3] * 0x16a88000 | (uint)(piVar26[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           uVar12;
  uVar12 = (piVar26[4] * 0x16a88000 | (uint)(piVar26[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[5] * 0x16a88000 | (uint)(piVar26[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[6] * 0x16a88000 | (uint)(piVar26[6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (piVar26[7] * 0x16a88000 | (uint)(piVar26[7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    iVar17 = *(int *)(puVar20 + 0xb8);
    uVar8 = (iVar17 + 1) * iVar17 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0x69f18e98;
  uVar8 = (uint)uVar32;
  uVar4 = (undefined7)(uVar32 >> 8);
  uVar12 = (uVar12 * 0x10000 | uVar12 >> 0x10) ^ 0xac9fe7f8;
  uVar18 = (ulonglong)uVar12;
  if ((int)CONCAT71(uVar4,uVar12 != *(uint *)(puVar20 + 0x28)) * 0x21 != 0) {
    *(ulonglong *)(puVar20 + -8) = uVar18;
    *(longlong *)(puVar20 + -0x10) = lVar31;
    *(ulonglong *)(puVar20 + -0x18) = uVar28;
    thunk_FUN_1805a9280((longlong)iVar23,thunk_FUN_1805a9280);
    return;
  }
  iVar23 = *(int *)(puVar20 + 0xd8);
  puVar7 = puVar20;
  do {
    puVar21 = puVar7;
    *(ulonglong *)(puVar21 + -8) = uVar18;
    *(longlong *)(puVar21 + -0x10) = lVar31;
    *(ulonglong *)(puVar21 + -0x18) = uVar10;
    lVar16 = -(longlong)iVar23;
    uVar10 = *(ulonglong *)(puVar21 + lVar16 + 0x438);
    lVar31 = *(longlong *)(puVar21 + lVar16 + 0x440);
    uVar18 = *(ulonglong *)(puVar21 + lVar16 + 0x448);
    puVar22 = puVar21 + lVar16 + 0x450;
    iVar17 = *(int *)(puVar20 + 0xb8);
    uVar12 = (iVar17 + 1) * iVar17 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
    puVar7 = puVar21 + lVar16 + 0x450;
  } while (uVar12 != 0);
  *(undefined8 *)(puVar21 + lVar16 + 0x4b0) = unaff_XMM6_Qa;
  *(undefined8 *)(puVar21 + lVar16 + 0x4b8) = unaff_XMM6_Qb;
  if (*(ulonglong *)(lVar31 + 0x488) == uVar32) {
    *(uint *)(lVar31 + 0x968) = uVar8;
  }
  else {
    *(undefined8 *)(puVar21 + lVar16 + 0x490) = 0x2621fc0;
    *(undefined8 *)(puVar21 + lVar16 + 0x480) = 0xbe812374;
    *(undefined8 *)(puVar21 + lVar16 + 0x478) = 0x121a2e8b;
    uVar12 = *(uint *)(puVar21 + lVar16 + 0x478);
    uVar24 = *(uint *)(puVar21 + lVar16 + 0x480);
    uVar13 = (uVar12 >> 9 ^ uVar12) & 0x1ff;
    uVar9 = (uVar24 >> 8 ^ uVar24) >> 3 & 0xf;
    uVar9 = (uVar9 << 8 | uVar9) << 3 ^ uVar24 ^ 0xbe45b59c;
    uVar24 = (uVar13 << 9 | uVar13) ^ uVar12 ^ 0x121b1717;
    uVar12 = (uVar9 >> 2 ^ uVar9) & 1;
    *(uint *)(puVar21 + lVar16 + 0x480) = uVar9 ^ (uVar12 * 4 | uVar12);
    uVar12 = (uVar24 >> 9 ^ uVar24) & 0x1ff;
    *(uint *)(puVar21 + lVar16 + 0x478) = uVar24 ^ (uVar12 << 9 | uVar12);
    *(undefined **)(puVar21 + lVar16 + 0x480) =
         &DAT_182621fc0 +
         (*(longlong *)(puVar21 + lVar16 + 0x480) - *(longlong *)(puVar21 + lVar16 + 0x490));
    *(longlong *)(puVar21 + lVar16 + 0x490) =
         *(longlong *)(puVar21 + lVar16 + 0x480) + *(longlong *)(puVar21 + lVar16 + 0x478);
    *(undefined4 *)(puVar21 + lVar16 + 0x478) = 0xaa2c993a;
    uVar12 = *(uint *)(puVar21 + lVar16 + 0x478);
    *(undefined4 *)(puVar21 + lVar16 + 0x478) = 0x90765b27;
    uVar24 = *(uint *)(puVar21 + lVar16 + 0x478);
    iVar25 = ~uVar12 + 0x76cac68c;
    *(undefined4 *)(puVar21 + lVar16 + 0x478) = 0x5b4390f8;
    piVar26 = *(int **)(puVar21 + lVar16 + 0x480);
    iVar23 = ~*(uint *)(puVar21 + lVar16 + 0x478) + 0x76cac68c;
    iVar17 = ~uVar24 + 0x76cac68c;
    uVar12 = (iVar25 * *piVar26 * 0x8000 | (uint)(iVar25 * *piVar26) >> 0x11) * iVar23 ^ 0x21d83361;
    uVar12 = (iVar25 * piVar26[1] * 0x8000 | (uint)(iVar25 * piVar26[1]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar29 = (uint)*(ulonglong *)(puVar21 + lVar16 + 0x490) & 7 | 0x15;
    uVar12 = (iVar25 * piVar26[2] * 0x8000 | (uint)(iVar25 * piVar26[2]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[3] * 0x8000 | (uint)(iVar25 * piVar26[3]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[4] * 0x8000 | (uint)(iVar25 * piVar26[4]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[5] * 0x8000 | (uint)(iVar25 * piVar26[5]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[6] * 0x8000 | (uint)(iVar25 * piVar26[6]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[7] * 0x8000 | (uint)(iVar25 * piVar26[7]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar30 = (uint)(piVar26 + 9) & 0x72ff;
    uVar12 = (iVar25 * piVar26[8] * 0x8000 | (uint)(iVar25 * piVar26[8]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[9] * 0x8000 | (uint)(iVar25 * piVar26[9]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    *(ulonglong *)(puVar21 + lVar16 + 0x470) = *(ulonglong *)(puVar21 + lVar16 + 0x490) & 0xffffffff
    ;
    uVar9 = uVar12 & 0x13f;
    uVar13 = uVar12 & 0x1f | 0x54;
    iVar27 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
    piVar26 = (int *)((longlong)(piVar26 + 9) +
                     (8 - (0x47a9L >>
                           ((char)iVar27 +
                            (char)((ulonglong)((longlong)iVar27 * 0x55555556) >> 0x20) * -3 &
                            puVar21[lVar16 + 0x470] & 0x3fU) ^
                          ((longlong)
                           (int)(((int)CONCAT71(uVar4,uVar13 * uVar13 * 0x1e3d ==
                                                      uVar29 * uVar29 * 0xf925) -
                                 ((uVar30 - 1) * uVar30 & 1)) + 0x30d) | 0x47adU))));
    uVar12 = (iVar25 * *piVar26 * 0x8000 | (uint)(iVar25 * *piVar26) >> 0x11) * iVar23 ^ uVar12;
    uVar12 = (iVar25 * piVar26[1] * 0x8000 | (uint)(iVar25 * piVar26[1]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[2] * 0x8000 | (uint)(iVar25 * piVar26[2]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[3] * 0x8000 | (uint)(iVar25 * piVar26[3]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[4] * 0x8000 | (uint)(iVar25 * piVar26[4]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[5] * 0x8000 | (uint)(iVar25 * piVar26[5]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[6] * 0x8000 | (uint)(iVar25 * piVar26[6]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    *(uint *)(puVar21 + lVar16 + 0x478) = iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    lVar2 = *(longlong *)(lVar31 + 0x488);
    if (*(int *)(lVar2 + 0xc0) == 3) {
      *(uint *)(lVar31 + 0x968) = uVar8;
      return;
    }
    uVar32 = uVar32 & 0xffffffff;
    for (; lVar2 != lVar31; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      uVar8 = (int)uVar32 + *(int *)(lVar2 + 0x20);
      uVar32 = (ulonglong)uVar8;
    }
    *(undefined8 *)(puVar21 + lVar16 + 0x448) = 0x1813d4e11;
    puVar11 = (undefined8 *)FUN_1814d2b40();
    iVar27 = piVar26[8];
    iVar1 = piVar26[0xd];
    uVar3 = *puVar11;
    uVar6 = puVar11[1];
    *(undefined8 *)(puVar21 + lVar16 + 0x498) = uVar3;
    *(undefined8 *)(puVar21 + lVar16 + 0x4a0) = uVar6;
    uVar12 = (iVar25 * piVar26[7] * 0x8000 | (uint)(iVar25 * piVar26[7]) >> 0x11) * iVar23 ^
             *(uint *)(puVar21 + lVar16 + 0x478);
    uVar12 = (iVar25 * iVar27 * 0x8000 | (uint)(iVar25 * iVar27) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[9] * 0x8000 | (uint)(iVar25 * piVar26[9]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[10] * 0x8000 | (uint)(iVar25 * piVar26[10]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xb] * 0x8000 | (uint)(iVar25 * piVar26[0xb]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xc] * 0x8000 | (uint)(iVar25 * piVar26[0xc]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * iVar1 * 0x8000 | (uint)(iVar25 * iVar1) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar9 = uVar12 & 0x37f;
    iVar27 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
    lVar31 = (longlong)iVar27;
    uVar32 = 0x499eL >>
             ((char)iVar27 +
              ((char)((ulonglong)(lVar31 * 0x55555556) >> 0x20) +
              (char)((lVar31 / 3 + (lVar31 >> 0x3f) & 0xffffffffU) >> 0x1f)) * -3 & 0x3fU) ^ 0x4d9a;
    uVar9 = iVar25 * *(int *)((longlong)piVar26 + (uVar32 - 0x3cc));
    piVar26 = (int *)((longlong)piVar26 + (uVar32 - 0x3c8));
    uVar12 = (uVar9 * 0x8000 | uVar9 >> 0x11) * iVar23 ^ uVar12;
    uVar9 = (iVar25 * *piVar26 * 0x8000 | (uint)(iVar25 * *piVar26) >> 0x11) * iVar23 ^
            iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (uint)piVar26 & 0x6eff;
    iVar27 = uVar12 * uVar12 + 1;
    uVar12 = (iVar27 >> 4) + (iVar27 >> 1) + iVar27 * 0x24924924 >> 0x1d;
    uVar10 = (ulonglong)uVar12;
    uVar12 = ((int)(uVar12 - 7) >> 0x1f & uVar12) << (((char)piVar26 + -1) * (char)piVar26 & 1U);
    piVar26 = (int *)((longlong)piVar26 +
                     ((longlong)(((int)(-uVar12 | uVar12) >> 0x1f) * -0x7ba9) ^ 0x7badU));
    uVar12 = (iVar25 * *piVar26 * 0x8000 | (uint)(iVar25 * *piVar26) >> 0x11) * iVar23 ^
             iVar17 + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[1] * 0x8000 | (uint)(iVar25 * piVar26[1]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[2] * 0x8000 | (uint)(iVar25 * piVar26[2]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[3] * 0x8000 | (uint)(iVar25 * piVar26[3]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar32 = (ulonglong)(iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5);
    do {
      uVar18 = 0x7810;
      *(undefined8 *)(puVar21 + lVar16 + 0x448) = 0x1813d508f;
      FUN_1813d6707();
      lVar31 = uVar32 + uVar10;
      uVar32 = ~(uVar10 - lVar31) + 1;
      uVar10 = lVar31 - uVar32;
      if ((uVar18 & 0xdb00) != 0) {
        uVar10 = uVar10 ^ uVar32;
      }
      uVar10 = uVar32 ^ uVar10;
      uVar12 = (*(int *)(puVar21 + lVar16 + 0x508) + 1) * *(int *)(puVar21 + lVar16 + 0x508) &
               0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar12 = (iVar25 * piVar26[4] * 0x8000 | (uint)(iVar25 * piVar26[4]) >> 0x11) * iVar23 ^
             (uint)uVar32;
    uVar12 = (iVar25 * piVar26[5] * 0x8000 | (uint)(iVar25 * piVar26[5]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    *(undefined8 *)(puVar21 + lVar16 + 0x490) = 0x7c12be1538ce6922;
    iVar27 = piVar26[6];
    *(int *)(puVar21 + lVar16 + 0x478) = (int)*(undefined8 *)(puVar21 + lVar16 + 0x490);
    uVar12 = (iVar25 * iVar27 * 0x8000 | (uint)(iVar25 * iVar27) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[7] * 0x8000 | (uint)(iVar25 * piVar26[7]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[8] * 0x8000 | (uint)(iVar25 * piVar26[8]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[9] * 0x8000 | (uint)(iVar25 * piVar26[9]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[10] * 0x8000 | (uint)(iVar25 * piVar26[10]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xb] * 0x8000 | (uint)(iVar25 * piVar26[0xb]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xc] * 0x8000 | (uint)(iVar25 * piVar26[0xc]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xd] * 0x8000 | (uint)(iVar25 * piVar26[0xd]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xe] * 0x8000 | (uint)(iVar25 * piVar26[0xe]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0xf] * 0x8000 | (uint)(iVar25 * piVar26[0xf]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x10] * 0x8000 | (uint)(iVar25 * piVar26[0x10]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x11] * 0x8000 | (uint)(iVar25 * piVar26[0x11]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x12] * 0x8000 | (uint)(iVar25 * piVar26[0x12]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    *(uint *)(puVar21 + lVar16 + 0x520) = iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    do {
      uVar12 = (*(int *)(puVar21 + lVar16 + 0x508) + 1) * *(int *)(puVar21 + lVar16 + 0x508) &
               0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    lVar31 = *(longlong *)(puVar21 + lVar16 + 0x510);
    uVar12 = (iVar25 * piVar26[0x13] * 0x8000 | (uint)(iVar25 * piVar26[0x13]) >> 0x11) * iVar23 ^
             *(uint *)(puVar21 + lVar16 + 0x520);
    uVar12 = iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    do {
      uVar12 = (~uVar12 + 1 ^ 0xffffffff) + 1;
      uVar9 = (*(int *)(puVar21 + lVar16 + 0x508) + 1) * *(int *)(puVar21 + lVar16 + 0x508) &
              0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar12 = (iVar25 * piVar26[0x14] * 0x8000 | (uint)(iVar25 * piVar26[0x14]) >> 0x11) * iVar23 ^
             uVar12;
    uVar12 = (iVar25 * piVar26[0x15] * 0x8000 | (uint)(iVar25 * piVar26[0x15]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x16] * 0x8000 | (uint)(iVar25 * piVar26[0x16]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x17] * 0x8000 | (uint)(iVar25 * piVar26[0x17]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x18] * 0x8000 | (uint)(iVar25 * piVar26[0x18]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[0x19] * 0x8000 | (uint)(iVar25 * piVar26[0x19]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar32 = (ulonglong)uVar12;
    uVar9 = (uint)*(undefined8 *)(puVar21 + lVar16 + 0x470);
    if ((uVar12 >> 10 & 1) == 0) {
      uVar13 = uVar9 & 0x7f;
      uVar13 = uVar13 * uVar13 * (uVar13 + 1) * (uVar13 + 1) & 3 |
               ((uVar9 & 0x13ff) * (uVar9 & 0x13ff) * 0x10 + 4) % 0x13;
      *(int *)(puVar21 + lVar16 + 0x510) = ((int)(-uVar13 | uVar13) >> 0x1f) * -0xae9e;
    }
    else {
      *(undefined4 *)(puVar21 + lVar16 + 0x510) = 0xae9e;
    }
    uVar13 = uVar9 & 0x2bf;
    uVar29 = uVar9 & 0x1f;
    iVar27 = (uVar13 + 2) * (uVar13 + 1) * uVar13;
    piVar26 = (int *)((longlong)piVar26 +
                     (0x668 - (longlong)
                              (int)((uVar29 * uVar29 * (uVar29 + 1) * (uVar29 + 1) & 2) + 0xa89e +
                                    iVar27 + (iVar27 / 3 + (iVar27 >> 0x1f) +
                                             (int)(((longlong)iVar27 / 3 +
                                                    ((longlong)iVar27 >> 0x3f) & 0xffffffffU) >>
                                                  0x1f)) * -3 ^ *(uint *)(puVar21 + lVar16 + 0x510))
                     ));
    uVar12 = (iVar25 * *piVar26 * 0x8000 | (uint)(iVar25 * *piVar26) >> 0x11) * iVar23 ^ uVar12;
    uVar12 = (iVar25 * piVar26[1] * 0x8000 | (uint)(iVar25 * piVar26[1]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[2] * 0x8000 | (uint)(iVar25 * piVar26[2]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[3] * 0x8000 | (uint)(iVar25 * piVar26[3]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[4] * 0x8000 | (uint)(iVar25 * piVar26[4]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[5] * 0x8000 | (uint)(iVar25 * piVar26[5]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[6] * 0x8000 | (uint)(iVar25 * piVar26[6]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    iVar27 = *(int *)(puVar21 + lVar16 + 0x518);
    uVar29 = uVar9 & 0x1ff;
    uVar9 = uVar9 & 0x43ff;
    uVar12 = (iVar25 * piVar26[7] * 0x8000 | (uint)(iVar25 * piVar26[7]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (iVar25 * piVar26[8] * 0x8000 | (uint)(iVar25 * piVar26[8]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar13 = (iVar25 * piVar26[9] * 0x8000 | (uint)(iVar25 * piVar26[9]) >> 0x11) * iVar23 ^
             iVar17 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = ((uVar29 + 2) * (uVar29 + 1) * uVar29) % 3;
    uVar28 = (ulonglong)uVar12;
    piVar33 = (int *)(puVar21 + lVar16 + 0x508);
    piVar26 = (int *)((longlong)piVar26 +
                     ((longlong)(int)((0xa4ed - uVar12) - ((uVar9 + 1) * uVar9 & 0x80000001)) ^
                     0xa4e9U) + 0x24);
    uVar12 = iVar25 * *piVar26;
    uVar13 = (uVar12 * 0x8000 | uVar12 >> 0x11) * iVar23 ^
             iVar17 + (uVar13 << 0xd | uVar13 >> 0x13) * 5;
    uVar12 = piVar26[1] * iVar25;
    uVar12 = iVar17 + (uVar13 << 0xd | uVar13 >> 0x13) * 5 ^
             (uVar12 * 0x8000 | uVar12 >> 0x11) * iVar23;
    uVar12 = ~uVar24 + 0xfa67e9c0 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar18 = CONCAT71(uVar4,((uVar12 * 0x10000 | uVar12 >> 0x10) ^ 0xac9fe7f8) !=
                            *(uint *)(puVar21 + lVar16 + 0x478));
    uVar10 = uVar18 & 0xffffffff;
    *(float *)(lVar31 + 0x968) =
         ((float)(int)((int)uVar6 + uVar8 + (int)uVar3) - (float)*(int *)(lVar31 + 0x958)) /
         (float)*(int *)(lVar31 + 0x960);
    if ((int)uVar18 != (int)(uVar10 >> 6)) {
      *(ulonglong *)(puVar21 + lVar16 + 0x448) = uVar32;
      *(longlong *)(puVar21 + lVar16 + 0x440) = lVar31;
      *(ulonglong *)(puVar21 + lVar16 + 0x438) = uVar10;
      thunk_FUN_1805a9280((longlong)iVar27,uVar10,uVar28,
                          (-(ulonglong)uVar9 ^ 0xffffffffffffffff) + 1);
      return;
    }
    iVar23 = *(int *)(puVar21 + lVar16 + 0x528);
    do {
      *(undefined **)(puVar22 + -8) = &UNK_1813d56cb;
      lVar16 = (longlong)iVar23;
      func_0x0001813d71ef((longlong)iVar23,uVar10,uVar28);
      *(ulonglong *)(puVar22 + -8) = uVar10;
      *(ulonglong *)(puVar22 + -0x10) = uVar32;
      *(int **)(puVar22 + -0x18) = piVar33;
      lVar16 = -lVar16;
      piVar33 = *(int **)(puVar22 + lVar16 + 0x438);
      uVar32 = *(ulonglong *)(puVar22 + lVar16 + 0x440);
      uVar10 = *(ulonglong *)(puVar22 + lVar16 + 0x448);
      puVar22 = puVar22 + lVar16 + 0x450;
      uVar12 = (*piVar33 + 1) * *piVar33 & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar32 = 0;
  }
  uVar12 = (uint)uVar32;
  lVar16 = *(longlong *)(lVar31 + 0x480);
  if ((lVar16 == 0) || ((*(int *)(lVar16 + 0xc0) - 1U & 0xfffffffd) == 0)) {
    *(undefined4 *)(lVar31 + 0x96c) = 0x40000000;
  }
  else {
    for (; lVar16 != lVar31; lVar16 = *(longlong *)(lVar16 + 0x18)) {
      uVar12 = (int)uVar32 + *(int *)(lVar16 + 0x20);
      uVar32 = (ulonglong)uVar12;
    }
    *(float *)(lVar31 + 0x96c) =
         ((float)(int)uVar12 - (float)*(int *)(lVar31 + 0x958)) / (float)*(int *)(lVar31 + 0x960);
  }
  return;
}



############ FUN_ 1813fec90 size=4293 ############

/* WARNING: Instruction at (ram,0x0001813ffc28) overlaps instruction at (ram,0x0001813ffc26)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001813ff5d3) */
/* WARNING: Removing unreachable block (ram,0x0001813fed56) */
/* WARNING: Removing unreachable block (ram,0x0001813fed6a) */
/* WARNING: Removing unreachable block (ram,0x0001813ff0c7) */
/* WARNING: Removing unreachable block (ram,0x0001813ff5a8) */

ulonglong FUN_1813fec90(longlong *param_1)

{
  longlong lVar1;
  undefined4 *puVar2;
  code *pcVar3;
  byte bVar4;
  uint uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  char *pcVar8;
  undefined8 uVar9;
  undefined4 *puVar10;
  uint uVar11;
  code **ppcVar12;
  uint *puVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  int iVar16;
  uint uVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  undefined8 *puVar21;
  undefined1 *puVar22;
  undefined1 *puVar23;
  undefined1 *puVar24;
  ulonglong uVar25;
  uint uVar26;
  uint uVar27;
  longlong lVar28;
  byte bVar29;
  uint uVar30;
  IMAGE_DOS_HEADER *pIVar31;
  IMAGE_DOS_HEADER *pIVar32;
  longlong *plVar33;
  longlong lVar34;
  longlong *plVar35;
  undefined4 *puVar36;
  int *piVar37;
  longlong unaff_R15;
  longlong *plVar38;
  bool bVar39;
  bool bVar40;
  char cVar41;
  char cVar42;
  int unaff_retaddr;
  undefined8 uStack_1e0;
  undefined1 auStack_1d8 [64];
  undefined8 local_198;
  undefined8 local_188;
  undefined4 local_180;
  undefined8 local_178;
  uint local_170;
  uint local_168;
  undefined4 local_164;
  uint local_160;
  undefined4 local_158;
  uint local_154;
  uint local_150;
  uint local_148;
  ulonglong local_140;
  uint local_138 [2];
  code *local_130;
  longlong *local_128;
  undefined1 auStack_120 [8];
  uint local_118;
  undefined4 local_114;
  undefined8 local_110;
  undefined8 local_108;
  undefined4 local_100;
  ulonglong local_f8;
  code *local_f0;
  uint local_e8;
  uint local_e4;
  int local_e0;
  uint local_dc;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined4 uStack_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined1 auStack_b8 [16];
  uint local_a8;
  uint local_a4;
  int local_a0;
  uint local_9c;
  undefined4 local_88 [10];
  undefined1 local_60 [8];
  uint local_58;
  uint local_54;
  ulonglong local_38;
  
  puVar22 = auStack_1d8;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1d8;
  local_128 = param_1;
  uVar11 = (uint)&stack0x00000000 & 0x33f;
  uVar25 = 0x82c1dd7f;
  uVar6 = 0x82c1dd7f;
  local_148 = 0x172a - ((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3 ^ 0x112a;
  local_164 = 0x590;
  do {
    local_114 = 3;
    local_110 = 0x1813fed97;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  do {
    local_100 = 0x45;
    local_108 = 0x1813fee76;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  plVar33 = (longlong *)0x122b745;
  local_180 = 0;
  local_158 = 0;
  uVar18 = ~((longlong)dvs_0xe48b3013_mfort6317_ +
            (ulonglong)((uint)((ulonglong)dvs_0xe6cfb7dd_mfort6317_ >> 0x1e) & 0x20545924));
  uVar19 = (ulonglong)((uint)((uVar18 >> 0xc ^ uVar18) >> 6) & 0x1ff);
  uVar19 = (uVar18 ^ (uVar19 << 0xc | uVar19) << 6) + 0xa76c43752c8fcd8f;
  uVar18 = (uVar19 >> 8 | uVar19 << 0x38) & 0xa35ca35ca35ca35c |
           (uVar19 * 0x100 | uVar19 >> 0x38) & 0x5ca35ca35ca35ca3;
  uVar19 = uVar18 >> 0x3a;
  uVar18 = (uVar19 | uVar18 << 6) + 0xf506c5bec7baea6c;
  uVar19 = (uVar18 >> 2 & 0xcccccccccccccccc | uVar19 << 0x3e |
           uVar18 * 4 & 0x3333333333333333 | uVar18 >> 0x3e) ^ 0x1fb8c83946131acc;
  uVar11 = (uint)((uVar19 >> 0x16 ^ uVar19) >> 1) & 0xfffff;
  dvs_0xe48b3013_mfort6317_ = (uint *)(((ulonglong)uVar11 << 0x16 | (ulonglong)uVar11) * 2 ^ uVar19)
  ;
  dvs_0xe6cfb7dd_mfort6317_ =
       (uint *)((longlong)dvs_0xe6cfb7dd_mfort6317_ +
               ((ulonglong)dvs_0xe48b3013_mfort6317_ >> 10 & 0x89843686));
  local_160 = (uint)((ulonglong)dvs_0xe48b3013_mfort6317_ >> 0xf) & 0x7fffffff;
  local_168 = (uint)((ulonglong)dvs_0xe48b3013_mfort6317_ >> 0xc) ^ 0x8606a497;
  local_140 = (ulonglong)dvs_0xe48b3013_mfort6317_ ^ 0x4ac10a17613f9771;
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  do {
    uVar9 = rdtsc();
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = ((uint)uVar9 ^ (uint)((ulonglong)uVar9 >> 0x20)) * -0x3d4d3d4e;
  local_170 = (uVar11 >> 0x18 ^ uVar11) * -0x4601e57b;
  if (local_170 < 0x5d1745ff) {
    local_130 = (code *)0x0;
    do {
      ppcVar12 = &local_130;
      FUN_1813fff36(ppcVar12,&local_130);
      *ppcVar12 = FUN_181194940;
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    uVar19 = (*local_130)(0,0x28b4);
    if (1 < uVar19) {
      FUN_18113eab0();
    }
  }
  pIVar32 = &IMAGE_DOS_HEADER_180000000;
  local_188 = 0;
  local_198 = 0x1809cfddc;
  local_178 = 0x1809d5704;
  pIVar31 = pIVar32;
  do {
    if (SBORROW8((ulonglong)pIVar31 ^ 0xffffffffffffffff,-1)) {
      lVar34 = unaff_R15 + (longlong)plVar33;
      puVar21 = (undefined8 *)(puVar22 + -8);
      puVar22 = puVar22 + -8;
      *puVar21 = 0xfffffffffb2b4dd1;
      unaff_R15 = ((longlong)plVar33 - lVar34 ^ 0xffffffffffffffffU) + 1;
      plVar33 = (longlong *)(lVar34 - unaff_R15);
    }
    pIVar31 = (IMAGE_DOS_HEADER *)
              ((((ulonglong)pIVar31 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  puVar10 = *(undefined4 **)(puVar22 + 0x40);
  puVar2 = *(undefined4 **)(puVar22 + 0x60);
  *(undefined4 *)(puVar22 + 0x48) = 0x811c9e29;
  do {
    puVar13 = local_138;
                    /* WARNING: Call to offcut address within same function */
    *(undefined8 *)(puVar22 + -8) = 0x1813ff339;
    func_0x0001813ff419();
    *puVar13 = 0xa7255953;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  *(undefined8 *)(puVar22 + 0x50) = 0x36d8b2031399e9e5;
  uVar11 = (~local_138[0] + 0xc5188c8b >> 0x1f | (~local_138[0] + 0xc5188c8b) * 2) ^ 0x9342c933;
  *(int *)(puVar22 + 0x40) = (int)*(undefined8 *)(puVar22 + 0x50);
  uVar11 = ~((uVar11 >> 7 | uVar11 << 0x19) + 0x86cda25d) + 0xc5fc929c;
  uVar11 = uVar11 >> 0x10 | uVar11 * 0x10000;
  *(uint *)(puVar22 + 0x60) = uVar11;
  if (puVar2 != puVar10) {
LAB_1813ff3e2:
    puVar36 = puVar10;
    if ((pIVar32 != (IMAGE_DOS_HEADER *)0x0) &&
       (lVar34._0_1_ = pIVar32->e_magic[0], lVar34._1_1_ = pIVar32->e_magic[1],
       lVar34._2_2_ = pIVar32->e_cblp, lVar34._4_2_ = pIVar32->e_cp, lVar34._6_2_ = pIVar32->e_crlc,
       -1 < lVar34)) {
      *(undefined8 *)(puVar22 + 0x50) = 0x2621fc0;
      lVar28 = (longlong)&DAT_182621fc0 + -*(longlong *)(puVar22 + 0x50);
      do {
        if (puVar10 < (undefined4 *)(-*(longlong *)(puVar22 + 0x50) + 0x182621fc8 + lVar34)) {
          if (-1 < lVar34) {
            plVar38 = (longlong *)(lVar28 + lVar34);
            plVar33 = (longlong *)(puVar10 + 1);
            if (plVar38 < plVar33) {
              local_88[0] = *puVar10;
              pIVar31 = pIVar32;
              goto LAB_1813ff450;
            }
          }
          break;
        }
        lVar34._0_2_ = pIVar32->e_cparhdr;
        lVar34._2_2_ = pIVar32->e_minalloc;
        lVar34._4_2_ = pIVar32->e_maxalloc;
        lVar34._6_2_ = pIVar32->e_ss;
        pIVar32 = (IMAGE_DOS_HEADER *)&pIVar32->e_cparhdr;
      } while (-1 < lVar34);
    }
    goto LAB_1813ff480;
  }
LAB_1813ff69a:
  plVar38 = (longlong *)(ulonglong)uVar11;
  *(undefined4 *)(puVar22 + 0x60) = uVar6;
  do {
    *(undefined8 *)(puVar22 + -8) = 0x1813ff6aa;
    FUN_1813fe0aa(0x6f30);
    *(undefined8 *)(puVar22 + -8) = 0x1813ff6ce;
    FUN_181400dc7();
    plVar35 = local_128;
    uVar26 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar26 < 0) {
      uVar26 = (uVar26 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar26 != 0);
  uVar26 = *(uint *)(puVar22 + 0x70);
  uVar11 = uVar11 + 0xd6c7eba2;
  uVar17 = (uint)local_140 ^ uVar26;
  local_d8 = 0x7ee4cf5b;
  local_d4 = 0xab07d190;
  uVar5 = (uVar17 & 0x6593f979 ^ uVar26) + 0x4ed1481b;
  uVar30 = (int)(local_140 >> 0x20) + 0x7bc739d3;
  uVar26 = (uVar26 ^ uVar17 & 0x9a6c0686) + 0xaef7aa14;
  uVar5 = (uVar5 * 0x100 | uVar5 >> 0x18) & 0x9a659a65 |
          (uVar5 >> 8 | uVar5 * 0x1000000) & 0x659a659a;
  uVar27 = ((uVar26 * 0x10000 | uVar26 >> 0x10) & 0xc73b38c4 |
           (uVar26 >> 0x10 | uVar26 * 0x10000) & 0x38c4c73b) ^ uVar5;
  uVar17 = uVar30 >> 2 & 0xcccccccc | uVar30 * 0x40000000 | uVar30 * 4 & 0x33333333 | uVar30 >> 0x1e
  ;
  uVar26 = uVar27 & 0x8a578475 ^ uVar5;
  uVar27 = uVar27 & 0x75a87b8a ^ uVar5 ^ uVar26;
  uVar5 = (uVar11 >> 4 | uVar11 * 0x10000000) & 0x69696969;
  uVar25 = (ulonglong)uVar5;
  uVar5 = (uVar11 * 0x10 | uVar11 >> 0x1c) & 0x96969696 | uVar5;
  uVar11 = uVar27 & 0xbbb9a4a9 ^ uVar26;
  uVar26 = uVar27 & 0x44465b56 ^ uVar26;
  uVar27 = uVar26 >> 0x19 | uVar26 << 7;
  local_e8 = (uVar5 >> 0x1d | uVar5 << 3) + 0xbc64070c;
  uVar18 = (ulonglong)local_e8;
  uVar26 = (uVar17 >> 10 | uVar17 << 0x16) ^ uVar27;
  local_e4 = (uVar11 >> 0x1f | uVar11 << 1) ^ 0xea2cbcd1;
  uVar19 = (ulonglong)local_e4;
  uVar11 = uVar26 & 0xddffbe9c ^ uVar27;
  uVar26 = uVar26 & 0x22004163 ^ uVar27 ^ uVar11;
  local_e0 = (uVar26 & 0x7310039d ^ uVar11) + 0x6bb1bcf9;
  local_dc = uVar26 & 0x8ceffc62 ^ uVar11 ^ 0xaa7d1554;
  do {
    *(ulonglong *)(puVar22 + -8) = uVar25;
    uVar9 = rdtsc();
    plVar38 = (longlong *)(~(((ulonglong)plVar38 ^ 0xffffffffffffffff) + 1) + 1);
    local_118 = (int)uVar9 + (int)((ulonglong)uVar9 >> 0x20);
    uVar25 = (ulonglong)local_118 + ((ulonglong)(local_118 >> 0xe) - 0x50cbe76a);
    uVar25 = uVar25 - ((uVar25 >> 7) + 0x3c557302);
    uVar20 = (-((uVar25 >> 8) * 0x8000 + -0x4c4df1ce) ^ 0xffffffffffffffff) + 1;
    local_154 = (int)(uVar25 >> 8) + (int)uVar20 & 0x7fffffff;
    uVar25 = *(ulonglong *)(puVar22 + -8);
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_154 = local_154 ^ *(uint *)(puVar22 + 0x78);
  bVar40 = local_154 == 0x129e413;
  bVar39 = false;
  if (local_154 < 0x129e413) {
    local_a0 = local_e0;
    local_a8 = local_e8;
    local_a4 = local_e4;
    local_9c = local_dc;
    do {
      *(undefined8 *)(puVar22 + -8) = 0x1813ff982;
      uVar25 = *(ulonglong *)(puVar22 + -8);
      local_150 = 0x6433aecf;
      plVar33 = (longlong *)0x0;
                    /* WARNING: Call to offcut address within same function */
      *(undefined8 *)(puVar22 + -8) = 0x1813ff9a1;
      local_f8 = uVar25;
      func_0x0001813ffcec();
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    uVar11 = ~(local_150 + 0xc49387f8) + 0x417f5202;
    uVar11 = (uVar11 >> 0x18 | uVar11 * 0x100) + 0x45f6d5e3;
    local_150 = uVar11 >> 2 | uVar11 * 0x40000000;
    *(undefined8 *)(puVar22 + -8) = 0x1813ff9ea;
    (*(code *)((longlong)(int)local_150 + local_f8))(&local_a8,local_60);
    uVar20 = (ulonglong)local_58;
    iVar16 = 7;
    do {
      uVar11 = (uint)uVar20;
      uVar5 = ((uVar11 << 4 | uVar11 >> 0x1c) & 0xb4b4b4b4 |
              (uVar11 >> 4 | uVar11 << 0x1c) & 0x4b4b4b4b) + 0xedf66992;
      uVar26 = ((local_54 >> 8 | local_54 << 0x18) & 0xfa05fa05 |
               (local_54 << 8 | local_54 >> 0x18) & 0x5fa05fa) + 0x703d2ee4;
      uVar11 = uVar5 >> 0xc;
      uVar26 = (uVar26 >> 0x1d | uVar26 * 8) + 0x5f26144;
      uVar5 = (((uVar11 | uVar5 * 0x100000) ^ 0x2677a938) >> 3 | uVar11 << 0x1d) + 0x70f6a640;
      uVar26 = (uVar26 * 0x8000 | uVar26 >> 0x11) + 0x191d2650;
      uVar17 = uVar5 >> 0x17 | uVar5 * 0x200;
      uVar11 = uVar26 >> 0xc;
      uVar26 = uVar26 * 0x100000 | uVar11;
      uVar5 = (uVar17 >> 8 | (uVar5 >> 0x17) << 0x18) & 0xa857a857 |
              (uVar17 << 8 | (uVar5 & 0x7fffff) >> 0xf) & 0x57a857a8;
      uVar26 = (uVar11 << 0x10 | uVar26 >> 0x10) & 0xd65429ab |
               (uVar26 >> 0x10 | uVar11 << 0x10) & 0x29abd654;
      uVar11 = uVar5 >> 6 | uVar5 << 0x1a;
      uVar20 = (ulonglong)uVar11;
      local_54 = uVar26 << 0x16 | uVar26 >> 10;
      iVar16 = iVar16 + -1;
    } while (-1 < iVar16);
    uVar11 = uVar11 + 0xb3f44e64;
    uVar11 = (uVar11 >> 8 | uVar11 * 0x1000000) + 0xcc97198f;
    uVar11 = ~((uVar11 >> 8 | uVar11 * 0x1000000) + 0x9837473) ^ 0x45d2bc76;
    uVar11 = (uVar11 << 0x1e | uVar11 >> 2) ^ 0x1b1e8cc3;
    uVar18 = (ulonglong)uVar11;
    do {
      *(undefined4 *)(puVar22 + 0x6c) = 0x8ed1c96b;
      uVar26 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar26 < 0) {
        uVar26 = (uVar26 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar26 != 0);
    uVar26 = (*(int *)(puVar22 + 0x6c) + 0x877380ffU >> 0x1d |
             (*(int *)(puVar22 + 0x6c) + 0x877380ffU) * 8) ^ 0x2fc7d9b9;
    uVar26 = ~((uVar26 >> 0x11 | uVar26 << 0xf) + 0x52d8badc) + 0x748253e5;
    *(uint *)(puVar22 + 0x6c) = (uVar26 * 0x2000000 | uVar26 >> 7) + 0x27a35e1c;
    local_54 = (*(uint *)(puVar22 + 0x6c) ^ uVar11) + local_54;
    bVar39 = local_54 < *(uint *)(puVar22 + 0x70);
    bVar40 = local_54 == *(uint *)(puVar22 + 0x70);
    if (!bVar40) {
      do {
        *(longlong **)(puVar22 + -8) = plVar35;
        *(ulonglong *)(puVar22 + -0x10) = uVar19;
        local_f0 = FUN_180bc28c0;
        uVar19 = *(ulonglong *)(puVar22 + -0x10);
        plVar35 = *(longlong **)(puVar22 + -8);
        uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar11 < 0) {
          uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar11 != 0);
      *(undefined8 *)(puVar22 + -8) = 0x1813ffba3;
      FUN_180bc28c0();
      do {
        *(undefined8 *)(puVar22 + -8) = 0x1813ffbcc;
        FUN_1813fe0aa();
        uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar11 < 0) {
          uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
        }
        bVar39 = false;
        bVar40 = uVar11 == 0;
      } while (!bVar40);
    }
  }
  do {
    uVar14 = 0x6f30;
    *(undefined8 *)(puVar22 + -8) = 0x1813ffbfb;
    func_0x000181400f62();
    if (bVar39 || bVar40) {
      plVar35 = (longlong *)(~(ulonglong)plVar35 + 1);
      if ((uVar14 & 0x43) == 0) {
        plVar35 = (longlong *)(((ulonglong)plVar35 ^ 0xffffffffffffffff) + 1);
      }
      else {
        *(undefined8 *)(puVar22 + -8) = 0x1813ffc28;
        func_0x00010489e5ac();
        *(int *)(uVar14 - 0x7d) = *(int *)(uVar14 - 0x7d) + -1;
        uVar11 = in((short)uVar20);
        *(int *)((ulonglong)uVar11 + 0x35) = *(int *)((ulonglong)uVar11 + 0x35) + -1;
        uVar18 = 0x41115cfd;
      }
    }
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
    bVar39 = false;
    bVar40 = uVar11 == 0;
  } while (!bVar40);
  uVar26 = ~*(uint *)(puVar22 + 0x48) + 0x379e6a35;
  uVar11 = (uVar26 >> 0xd ^ uVar26) >> 4 & 0x1ff;
  uVar26 = ~((uVar11 << 0xd | uVar11) << 4 ^ uVar26 ^ 0xbf51d97f);
  uVar11 = (uVar26 >> 0xb ^ uVar26) & 0x7ff;
  *(uint *)(puVar22 + 0x48) = (uVar11 << 0xb | uVar11) ^ uVar26;
  uVar11 = ~(*(uint *)(puVar22 + 0x40) & *(uint *)(puVar22 + 0x48));
  uVar26 = ~(uVar11 & *(uint *)(puVar22 + 0x40));
  uVar20 = (ulonglong)uVar26;
  if ((char)(((~(uVar11 & *(uint *)(puVar22 + 0x48)) & uVar26) == 0xffffffff) * '\n') != '\0') {
    uVar14 = (ulonglong)*(int *)(puVar22 + 0x74);
    puVar24 = puVar22;
    piVar37 = (int *)register0x00000020;
    do {
      puVar23 = puVar24;
      *(undefined8 *)(puVar23 + -8) = 0x1813ffdd8;
      uVar15 = uVar14;
      FUN_181401d84();
      *(ulonglong *)(puVar23 + -8) = uVar20;
      *(ulonglong *)(puVar23 + -0x10) = uVar18;
      *(int **)(puVar23 + -0x18) = piVar37;
      uVar14 = ~(~uVar14 + 1) + 1;
      lVar34 = -uVar15;
      piVar37 = *(int **)(puVar23 + lVar34 + 0x578);
      uVar18 = *(ulonglong *)(puVar23 + lVar34 + 0x580);
      uVar20 = *(ulonglong *)(puVar23 + lVar34 + 0x588);
      uVar11 = (*piVar37 + 1) * *piVar37 & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
      uVar15 = (ulonglong)uVar11;
      puVar24 = puVar23 + lVar34 + 0x590;
    } while (uVar11 != 0);
    if (0 < (int)plVar35[0x19]) {
      if (1 < (int)plVar35[0x1c] - 1U) {
        *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400ac1;
        uVar9 = FUN_1813f5c70(plVar35);
        *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400acf;
        lVar28 = FUN_181323ff0(uVar9,plVar35);
        if (lVar28 == 0) {
          pcVar3 = *(code **)(*plVar35 + 0x180);
          *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400af5;
          (*pcVar3)(plVar35,auStack_120);
          *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400afe;
          uVar6 = FUN_180487500(auStack_120);
          *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400b09;
          uVar7 = FUN_1804835d0(auStack_120);
          *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400b1f;
          puVar10 = (undefined4 *)FUN_1804ab630(plVar35 + 0x1a,auStack_b8,uVar7,uVar6);
          uStack_c8 = *puVar10;
          uStack_c4 = puVar10[1];
          uStack_c0 = puVar10[2];
          uStack_bc = puVar10[3];
          *(undefined1 **)(puVar23 + lVar34 + 0x588) = &LAB_181400b32;
          FUN_18134c170(plVar35,&uStack_c8);
        }
        else {
          *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400ae2;
          FUN_181323c50(uVar9,plVar35,0);
        }
        lVar28 = plVar35[0x19];
        *(undefined8 *)(puVar23 + lVar34 + 0x5c8) = 0;
        *(undefined8 *)(puVar23 + lVar34 + 0x5c0) = DAT_1824c4140;
        puVar23[lVar34 + 0x5b8] = 0;
        *(int *)(puVar23 + lVar34 + 0x5b0) = (int)lVar28;
        *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400b73;
        FUN_181323e20(uVar9,plVar35,plVar35 + 0x1a,DAT_1824c3ea4);
        *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x181400b80;
        FUN_1813f43e0(plVar35,2);
        lVar28 = plVar35[0x19];
        *(undefined1 **)(puVar23 + lVar34 + 0x588) = &LAB_181400b93;
        FUN_1812a77d0(plVar35 + 0x16,(int)lVar28);
      }
      *(undefined **)(puVar23 + lVar34 + 0x588) = &UNK_181400ba2;
    }
    *(undefined8 *)(puVar23 + lVar34 + 0x588) = 0x1813ffed5;
    pcVar8 = (char *)FUN_1813fff36();
    *(ulonglong *)(puVar23 + lVar34 + 0x588) = uVar14;
    puVar24 = puVar23 + lVar34 + 0x588;
    while( true ) {
      *(undefined8 *)(puVar24 + -8) = 0x5417f673;
      *(ulonglong *)(puVar24 + -0x10) = uVar19;
      cVar42 = '\0';
      cVar41 = (longlong)((ulonglong)pcVar8 & uVar25) < 0;
      *(undefined8 *)(puVar24 + -0x18) = 0x1813ffee1;
      pcVar8 = (char *)FUN_1813ffef9();
      if (cVar42 == cVar41) {
        bVar39 = plVar35 < (longlong *)0x418dcd7e;
        bVar40 = plVar35 == (longlong *)0x418dcd7e;
      }
      else {
        bVar39 = plVar38 < plVar35;
        bVar40 = plVar38 == plVar35;
      }
      if (!bVar39 && !bVar40) break;
      *pcVar8 = *pcVar8 + (char)pcVar8;
      *(char *)(uVar15 + 0x54) = *(char *)(uVar15 + 0x54) + (char)pcVar8;
      puVar24 = puVar24 + -0x10;
    }
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
                    /* WARNING: Call to offcut address within same function */
  *(undefined8 *)(puVar22 + -8) = 0x1813ffcda;
  func_0x0001813ff419();
  *(longlong **)(puVar22 + -8) = plVar33;
  *(longlong **)(puVar22 + -0x10) = plVar35;
  *(longlong **)(puVar22 + -0x18) = plVar38;
  uVar25 = thunk_FUN_1805a9280();
  return uVar25;
  while (plVar38 = (longlong *)(lVar28 + lVar34), plVar38 < plVar33) {
LAB_1813ff450:
    lVar1 = lVar34 + (lVar28 - (longlong)puVar10);
    lVar34 = *(longlong *)&pIVar31->e_cparhdr;
    pIVar31 = (IMAGE_DOS_HEADER *)&pIVar31->e_cparhdr;
    *(longlong *)((longlong)local_88 + lVar1) = *plVar38 - lVar28;
    puVar36 = local_88;
    if (lVar34 < 0) break;
  }
LAB_1813ff480:
  puVar13 = (uint *)(puVar22 + 0x48);
  lVar34 = (longlong)puVar36 + 0x3c2b373f;
  uVar18 = 0x6f30;
  *(undefined8 *)(puVar22 + -8) = 0x1813ff499;
  uVar19 = FUN_181400dc7(0x6f30,lVar34,0);
  do {
    if ((uVar18 & 0xc3) != 0) goto LAB_1813ff4b9;
    if ((uVar18 & 0xc300) == 0) {
      return 0x1eb0633;
    }
  } while ((uVar18 & 0xc300) == 0);
  uVar19 = (ulonglong)*puVar13;
  if ((uVar18 & 0xc300) == 0) goto LAB_1813ff4ee;
LAB_1813ff4b9:
  if ((uVar19 & 0xc3) == 0) goto LAB_1813ff4ee;
  if ((uVar18 & 0xc3) == 0) goto LAB_1813ff509;
  do {
    *(undefined8 *)(puVar22 + -8) = 0x1813ff4c9;
    uVar19 = FUN_1813f7e75();
    *puVar13 = (uint)uVar19;
    if (((uVar18 & 0xc3) == 0) && ((uVar18 & 0xc3) == 0)) goto LAB_1813ff504;
LAB_1813ff4ee:
    do {
      uVar19 = (ulonglong)((uint)uVar19 ^ *(uint *)(lVar34 + -0x3c2b373f));
      if ((uVar18 & 0xc3) != 0) {
        return uVar19;
      }
    } while ((uVar18 & 0xc300) == 0);
    if ((uVar18 & 0xc3) != 0) {
LAB_1813ff504:
      if ((uVar18 & 0xc3) != 0) break;
      goto LAB_1813ff50e;
    }
  } while( true );
LAB_1813ff509:
  if ((uVar18 & 0xc3) == 0) goto LAB_1813ff4ee;
LAB_1813ff50e:
  uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
  if ((int)uVar11 < 0) {
    uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
  }
  if (uVar11 != 0) goto LAB_1813ff480;
  uVar26 = *(int *)(puVar22 + 0x48) * 0x10001ab;
  uVar11 = (int)uVar25 + *(int *)(puVar22 + 0x48) ^ ((int)uVar25 + *(int *)(puVar22 + 0x48)) * 8;
  uVar25 = (ulonglong)uVar11;
  *(uint *)(puVar22 + 0x48) = uVar26;
  if ((uVar11 & 0xf) != 0) {
    uVar25 = (ulonglong)(uVar11 * uVar11 * 0x80);
  }
  while( true ) {
    uVar5 = (uint)puVar10;
    uVar11 = uVar5 & 0x13f;
    iVar16 = (uVar11 + 2) * (uVar11 + 1) * uVar11;
    if ((((iVar16 >> 1) - (iVar16 >> 3)) + iVar16 * 0x55555555 >> 0x1e & 0x3d00U) == 0) {
      uVar11 = uVar5 & 0x6f;
      uVar5 = uVar5 & 0x5f;
      uVar11 = (uVar11 * uVar11 * (uVar11 + 1) * (uVar11 + 1) & 0x80000003) +
               (uVar5 * uVar5 * (uVar5 + 1) * (uVar5 + 1) & 1);
    }
    else {
      uVar11 = ((uVar26 & 0x7ff) + 1) * (uVar26 & 0x7ff) & 0x80000001;
    }
    if (uVar11 == 0) break;
    uVar25 = (ulonglong)(uint)((int)uVar25 * 0x40001);
    puVar10 = puVar10 + 1;
  }
  while( true ) {
    if (((ulonglong)puVar10 & 0xec) == 0) {
      bVar29 = ((char)puVar10 + -1) * (char)puVar10 & 1;
    }
    else {
      bVar29 = (byte)uVar26 & 0x3f | 0x23;
      bVar4 = (byte)uVar26 & 0x1f | 0x4c;
      bVar29 = bVar29 * bVar29 * 'C' ^ bVar4 * bVar4 * 'S';
    }
    uVar11 = (uint)puVar10 & 0x5f;
    uVar5 = (uint)uVar25;
    if ((char)((int)(uVar11 * uVar11 * (uVar11 + 1) * (uVar11 + 1) & 2) >> (bVar29 & 0x1f)) == '\0')
    break;
    uVar25 = (ulonglong)(uVar5 ^ (uint)(uVar25 >> 0xb));
    puVar10 = puVar10 + 1;
  }
  if (3 < uVar26 + uVar5) {
    uVar25 = (ulonglong)(uVar5 * (int)(uVar25 >> 0xd));
  }
  uVar6 = (undefined4)uVar25;
  puVar10 = puVar10 + 1;
  if (puVar2 == puVar10) goto code_r0x0001813ff68e;
  goto LAB_1813ff3e2;
code_r0x0001813ff68e:
  uVar11 = *(uint *)(puVar22 + 0x60);
  goto LAB_1813ff69a;
}



############ FUN_ 18141b970 size=3020 ############

/* WARNING: Instruction at (ram,0x00018141bc1a) overlaps instruction at (ram,0x00018141bc17)
    */
/* WARNING: Removing unreachable block (ram,0x00018141c346) */
/* WARNING: Removing unreachable block (ram,0x00018141ba4a) */
/* WARNING: Removing unreachable block (ram,0x00018141b9e2) */
/* WARNING: Removing unreachable block (ram,0x00018141ba36) */
/* WARNING: Removing unreachable block (ram,0x00018141c2e7) */
/* WARNING: Removing unreachable block (ram,0x00018141bc17) */

undefined8 FUN_18141b970(undefined8 param_1)

{
  int iVar1;
  longlong lVar2;
  uint uVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint *puVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  undefined8 *puVar10;
  undefined1 *puVar11;
  longlong *plVar12;
  longlong in_R10;
  bool bVar13;
  uint unaff_retaddr;
  undefined8 auStack_1a8 [2];
  undefined1 local_198 [40];
  undefined1 *local_170;
  undefined8 local_160;
  undefined4 local_158;
  undefined4 local_140;
  undefined4 *local_138;
  uint local_130 [5];
  uint local_11c;
  undefined8 local_110;
  undefined8 local_108;
  undefined1 local_100 [8];
  undefined4 local_f8;
  undefined1 local_f4 [4];
  code *local_f0;
  undefined4 local_e8 [2];
  longlong local_e0;
  longlong local_d8 [5];
  undefined4 local_b0 [14];
  undefined8 local_78;
  ulonglong local_30;
  
  puVar11 = local_198;
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)local_198;
  local_170 = (undefined1 *)((ulonglong)local_170 & 0xffffffff00000000);
  if (((ulonglong)&stack0x00000000 & 0xc80) == 0) {
    uVar3 = 1;
  }
  else {
    uVar3 = (uint)&stack0x00000000 & 0x14ff;
    uVar3 = (uVar3 + 1) * uVar3 + 0x7327 & 0x80000001;
  }
  local_11c = ((int)(-uVar3 | uVar3) >> 0x1f) * -0xc069 ^ 0xc709;
  local_158 = 0xcf0;
  local_110 = param_1;
  local_108 = FUN_18134b820();
  FUN_18133c070(local_108,local_100);
  local_140 = FUN_181228de0();
  local_160 = 0x100;
  local_138 = &DAT_181551284;
  local_170 = &LAB_181551384;
  uVar3 = (((uint)(DAT_181551284 * 0x401) >> 6 ^ DAT_181551284 * 0x401) + DAT_181551288) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155128c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551290) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551294) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551298) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155129c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512a0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512a4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512a8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512ac) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512b0) * 0x401;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_1815512b4 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512b8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512bc) * 0x401;
  do {
    local_f8 = 0x8308de53;
    FUN_18141a532();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_1815512c0 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512c4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512c8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512cc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512d0) * 0x401;
  uVar6 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512d4) * 0x401;
  uVar3 = uVar6 >> 6;
  uVar4 = (ulonglong)(uVar6 ^ uVar3);
  do {
    if (0xf030 < uVar3) {
      in_R10 = in_R10 + uVar4;
      uVar4 = ~(((uVar4 - in_R10 ^ 0xffffffffffffffff) + 1) - in_R10) + 1;
      in_R10 = in_R10 - uVar4;
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    uVar3 = unaff_retaddr;
  } while (uVar6 != 0);
  uVar3 = (DAT_1815512d8 + (int)uVar4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512dc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512e0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512e4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512e8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512ec) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512f0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512f4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512f8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1815512fc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551300) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551304) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551308) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155130c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551310) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551314) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551318) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155131c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551320) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551324) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551328) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155132c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551330) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551334) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551338) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155133c) * 0x401;
  do {
    puVar7 = local_130;
    func_0x00018141ad03(puVar7,local_130);
    uVar5 = rdtsc();
    *puVar7 = (uint)uVar5 ^ (uint)((ulonglong)uVar5 >> 0x20);
    FUN_18141a8a5();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_130[0] = (local_130[0] * -0x13ac51cb >> 0x18 ^ local_130[0] * -0x13ac51cb) * 0x5bd1ff51;
  if (local_130[0] < 0x36dd63) {
    do {
      local_f0 = FUN_18141db20;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = FUN_18141db20(0,0x8f03);
    if (1 < uVar4) {
      FUN_18113eab0();
    }
  }
  uVar3 = (DAT_181551340 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551344) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181551348) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18155134c) * 0x401;
  uVar3 = uVar3 ^ uVar3 >> 6;
  do {
    bVar13 = (int)uVar3 < 0;
    uVar4 = 0xf030;
    *(undefined8 *)(puVar11 + -8) = 0x18141c12a;
    uVar5 = FUN_18141ce2d();
    if ((!bVar13) && ((uVar4 & 0xe300) == 0)) {
      *(undefined8 *)(puVar11 + -8) = 0;
      puVar10 = (undefined8 *)(puVar11 + -0x10);
      puVar11 = puVar11 + -0x10;
      *puVar10 = CONCAT71((int7)((ulonglong)uVar5 >> 8),(char)uVar5 + '@');
    }
    *(undefined8 *)(puVar11 + -8) = 0x18141c14e;
    FUN_18141ab58();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    *(undefined8 *)(puVar11 + -8) = 0x18141c21b;
    func_0x00018141b801(0xf030);
    *(undefined8 *)(puVar11 + -8) = 0x18141c23f;
    FUN_18141d26b();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  *(undefined8 *)(puVar11 + 0x28) = 0xfd6920a9b61a1c3;
  *(int *)(puVar11 + 0x28) = (int)*(undefined8 *)(puVar11 + 0x28);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    plVar12 = &local_e0;
    puVar9 = local_e8;
    puVar8 = (undefined4 *)(puVar11 + 0x50);
    *(undefined8 *)(puVar11 + -8) = 0x18141c3a4;
    FUN_18141e024();
    *(undefined8 *)(puVar11 + -8) = 0x18141c3a9;
    lVar2 = *(longlong *)(puVar11 + -8);
    *puVar8 = 0x6c45377f;
    *puVar9 = 0x5d;
    *plVar12 = lVar2;
    *(undefined8 *)(puVar11 + -8) = 0x18141c3c8;
    FUN_18141da4a();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = *(uint *)(puVar11 + 0x50);
  uVar6 = (uVar3 >> 0x10 ^ uVar3) >> 4 & 0x1ff;
  uVar3 = (uVar6 << 0x10 | uVar6) << 4 ^ uVar3;
  uVar6 = uVar3 << 10 | uVar3 >> 0x16;
  uVar3 = ((uVar6 << 4 | (uVar3 & 0x3fffff) >> 0x12) & 0xa5a5a5a5 |
          (uVar6 >> 4 | (uVar3 >> 0x16) << 0x1c) & 0x5a5a5a5a) + 0x6d760bdf;
  uVar3 = (((uVar3 >> 0x10 | uVar3 * 0x10000) & 0xa9ef5610 |
           (uVar3 * 0x10000 | uVar3 >> 0x10) & 0x5610a9ef) >> 3 | (uVar3 >> 0x10) << 0x1d) ^
          0xd4e49d48;
  uVar6 = (uVar3 << 0x10 | uVar3 >> 0x10) & 0xe8c81737 |
          (uVar3 >> 0x10 | uVar3 << 0x10) & 0x1737e8c8;
  uVar3 = (uVar6 >> 0x11 ^ uVar6) >> 2 & 0xff;
  *(uint *)(puVar11 + 0x50) = uVar6 ^ (uVar3 << 0x11 | uVar3) << 2;
  do {
    plVar12 = local_d8;
    puVar9 = local_b0;
    puVar8 = (undefined4 *)(puVar11 + 0x70);
    *(undefined8 *)(puVar11 + -8) = 0x18141c482;
    func_0x00018141aa2a();
    *(undefined8 *)(puVar11 + -8) = 0x18141c487;
    lVar2 = *(longlong *)(puVar11 + -8);
    *puVar8 = 0xe1ea9fd;
    *puVar9 = 10;
    *plVar12 = lVar2;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = *(uint *)(puVar11 + 0x70);
  uVar6 = (uVar3 >> 8 ^ uVar3) >> 4 & 0xff;
  uVar3 = uVar3 ^ (uVar6 << 8 | uVar6) << 4;
  uVar3 = (uVar3 << 0x10 | uVar3 >> 0x10) & 0xcf1030ef |
          (uVar3 >> 0x10 | uVar3 << 0x10) & 0x30efcf10;
  uVar6 = uVar3 >> 0x17 | uVar3 << 9;
  uVar3 = (uVar6 >> 8 ^ uVar6) & 0x1f;
  uVar6 = (uVar3 << 8 | uVar3) ^ uVar6;
  uVar3 = (uVar6 >> 3 | uVar6 << 0x1d) + 0xe796fcf0;
  uVar3 = (uVar3 * 0x1000 | uVar3 >> 0x14) ^ 0xbdaccd2c;
  iVar1 = *(int *)(puVar11 + 0x50);
  *(longlong *)(puVar11 + 0x38) = local_e0;
  *(longlong *)(puVar11 + 0x60) = local_d8[0];
  *(undefined4 *)(puVar11 + 0x50) = 0;
  *(undefined4 *)(puVar11 + 0x70) = 0;
  *(longlong *)((longlong)iVar1 + 4 + local_e0) =
       *(longlong *)((longlong)iVar1 + 4 + local_e0) +
       (*(ulonglong *)
         (((longlong)(int)(uVar3 >> 8 | uVar3 << 0x18) & 0xfffffffff708f708U |
          (ulonglong)((uVar3 << 8 | uVar3 >> 0x18) & 0x8f708f7)) + 4 + local_d8[0]) >> 0xc &
       0x93503404);
  *(longlong *)(puVar11 + -8) = lVar2;
  *(undefined8 *)(puVar11 + -0x10) = 0x18141c59a;
                    /* WARNING: Could not recover jumptable at 0x00018141c59f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar5 = (*(code *)(*(longlong *)(puVar11 + -0x10) + 10))(puVar11 + 0x54,local_f4);
  return uVar5;
}



############ FUN_ 18141db50 size=837 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018141dd88) overlaps instruction at (ram,0x00018141dd85)
    */
/* WARNING: Removing unreachable block (ram,0x00018141dbc8) */

void FUN_18141db50(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  int unaff_retaddr;
  undefined1 auStack_198 [72];
  uint local_150 [4];
  undefined4 local_140;
  uint local_120;
  uint local_11c;
  code *local_110;
  undefined4 local_108;
  undefined8 local_100;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar3 = (uint)&stack0x00000000;
  uVar5 = ((uVar3 & 0xfff) * (uVar3 & 0xfff) * 0x10 + 4) % 0x13;
  uVar5 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_120 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x6c71 ^ 0x61e1;
  if ((((uVar3 & 0x1ff) * (uVar3 & 0x1ff) * 0x10 + 4) % 0x13 & 0x1e8) == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = uVar3 & 0x2ff;
    uVar3 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3;
  }
  local_11c = (uVar3 | 0x435) ^ 0x6f5;
  do {
    local_108 = 0xf585c1f1;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_140 = 0x9f4c3416;
  local_100 = param_1;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018141de91();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    puVar4 = local_150;
    FUN_18141db10(puVar4,local_150);
    uVar1 = rdtsc();
    *puVar4 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_150[0] = (local_150[0] * -0x12aae57b >> 0x18 ^ local_150[0] * -0x12aae57b) * -0x359451cb;
  if (local_150[0] < 0x17d05f3f) {
    do {
      local_110 = FUN_1813f2240;
                    /* WARNING: Call to offcut address within same function */
      func_0x00018141de91(&local_110,0x5a48);
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_110)();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  FUN_18141decb();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18142e3f0 size=2074 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018142ec5c) */
/* WARNING: Removing unreachable block (ram,0x00018142e4f5) */
/* WARNING: Removing unreachable block (ram,0x00018142e6bb) */

void FUN_18142e3f0(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  int *piVar3;
  uint uVar4;
  undefined4 *puVar5;
  ulonglong uVar6;
  uint uVar7;
  longlong *plVar8;
  int unaff_retaddr;
  undefined1 auStack_1b8 [56];
  int local_180;
  uint local_170;
  undefined4 local_164;
  int local_158 [4];
  undefined4 local_148;
  uint local_140;
  undefined4 local_130;
  code *local_128;
  undefined8 local_120;
  undefined1 local_118 [24];
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  undefined4 local_e8 [4];
  undefined4 local_d8;
  undefined8 local_b8;
  ulonglong local_40;
  
  local_b8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar7 = (uint)&stack0x00000000 & 0x15ff;
  uVar7 = uVar7 * uVar7 * 0x10 + 4;
  local_140 = 0x3f5d << ((byte)(0 << ((char)uVar7 + (char)(uVar7 / 0x13) * -0x13 & 0x1fU)) & 0x1f) ^
              0x31cd;
  local_148 = 0x9f0;
  local_120 = param_1;
  uVar1 = FUN_1812dc020(param_2,&local_100);
  FUN_181248e40(uVar1,local_118);
  FUN_1804951e0(local_100 + -0x10);
  do {
    uVar1 = rdtsc();
    local_170 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_18142dfd2();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_170 = (local_170 * -0x51ca7333 >> 0x18 ^ local_170 * -0x51ca7333) * -0xae12ab;
  if (local_170 < 0x7b301ef) {
    do {
      local_128 = FUN_1813f2240;
      FUN_18142de30(&local_128,0x8858);
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar2 = (*local_128)();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    local_130 = 0xef25eea4;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_164 = 0x42d26b75;
  do {
    FUN_18142f036();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    local_d8 = 0x1f;
    local_f8 = 0x18142e707;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_180 = 0x11fbf85;
  do {
    plVar8 = &local_f0;
    puVar5 = local_e8;
    piVar3 = local_158;
    FUN_18143011e();
    *piVar3 = 0x300bdc4d;
    *puVar5 = 0x70;
    *plVar8 = 0x18142e7f7;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = local_158[0] + 0xa9439d39;
  uVar7 = (uVar4 >> 0xb ^ uVar4) & 0x7ff;
  uVar4 = uVar4 ^ (uVar7 << 0xb | uVar7);
  uVar7 = (uVar4 << 0x10 | uVar4 >> 0x10) & 0xd7b82847 |
          (uVar4 >> 0x10 | uVar4 << 0x10) & 0x2847d7b8;
  uVar7 = ((uVar7 << 0x10 | uVar7 >> 0x10) & 0xd93226cd |
          (uVar7 >> 0x10 | uVar7 << 0x10) & 0x26cdd932) + 0xb68e753e;
  uVar7 = (uVar7 >> 0x12 | uVar7 * 0x4000) + 0x18cc69dd;
  local_f8 = local_180 + local_f8;
  local_f0 = (int)((uVar7 * 4 & 0xcccccccc | uVar7 >> 2 & 0x33333333) + 0xc8b201b9) + local_f0;
  *(longlong *)(local_f8 + 4) =
       *(longlong *)(local_f8 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(local_f0 + 4) >> 0x12) & 0x14220410);
  do {
    uVar1 = rdtsc();
    uVar2 = (ulonglong)(uint)((int)uVar1 + (int)((ulonglong)uVar1 >> 0x20) * 2) * -0xc0f3f -
            0x175f3173;
    uVar2 = uVar2 >> 10 | uVar2 << 0x36;
    uVar7 = (uint)(uVar2 + (uVar2 * 3 >> 0xc) + 0xa9765bf >> 0xb);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  *(int *)(local_f8 + 8) = *(int *)(local_f8 + 8) + (uVar7 ^ 0xee24d431);
  *(int *)(local_f8 + 4) = *(int *)(local_f8 + 4) + (uVar7 ^ 0xcf6e0560);
  uVar2 = *(ulonglong *)(local_f8 + 4);
  uVar7 = (uint)((uVar2 >> 0x27 ^ uVar2) >> 0xe) & 7;
  uVar6 = ((ulonglong)uVar7 << 0x27 | (ulonglong)uVar7) << 0xe ^ uVar2;
  uVar2 = ((uVar6 << 4 | uVar2 >> 0x3c) & 0x9696969696969696 |
          (uVar6 >> 4 | uVar2 << 0x3c) & 0x6969696969696969) ^ 0x8e12f3f1a236b05f;
  uVar2 = uVar2 >> 2 & 0xcccccccccccccccc | uVar2 << 0x3e |
          (uVar2 & 0xccccccccccccccc) << 2 | uVar2 >> 0x3e;
  uVar2 = ((uVar2 << 0x10 | uVar2 >> 0x30) & 0x92566da992566da9 |
          (uVar2 >> 0x10 | uVar2 << 0x30) & 0x6da992566da99256) ^ 0x5991b5fdfcac1ed6;
  uVar2 = ((uVar2 >> 0x10 | uVar2 << 0x30) & 0xa2205ddfa2205ddf |
          (uVar2 << 0x10 | uVar2 >> 0x30) & 0x5ddfa2205ddfa220) + 0x360b57480f19b241;
  uVar2 = (uVar2 * 0x10 | uVar2 >> 0x3c) & 0x8787878787878787 |
          (uVar2 >> 4 | uVar2 << 0x3c) & 0x7878787878787878;
  *(ulonglong *)(local_f8 + 4) = uVar2;
  plVar8 = (longlong *)(local_f0 + 4);
  *plVar8 = *plVar8 + (uVar2 >> 0x1a & 0xc1409000);
  return;
}



############ FUN_ 18143b960 size=1876 ############

/* WARNING: Removing unreachable block (ram,0x00018143beea) */
/* WARNING: Removing unreachable block (ram,0x00018143ba68) */
/* WARNING: Removing unreachable block (ram,0x00018143babd) */
/* WARNING: Removing unreachable block (ram,0x00018143bf2e) */
/* WARNING: Removing unreachable block (ram,0x00018143be95) */
/* WARNING: Removing unreachable block (ram,0x00018143bec8) */
/* WARNING: Removing unreachable block (ram,0x00018143bece) */

void FUN_18143b960(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  undefined4 *puVar3;
  int *piVar4;
  longlong lVar5;
  uint uVar6;
  longlong *plVar7;
  uint uVar8;
  IMAGE_DOS_HEADER *pIVar9;
  uint *puVar10;
  int iVar11;
  IMAGE_DOS_HEADER *pIVar12;
  uint uVar13;
  int *piVar14;
  undefined4 *puVar15;
  int unaff_retaddr;
  undefined1 auStack_198 [32];
  undefined8 local_178;
  uint local_170 [2];
  undefined4 *local_168;
  undefined8 local_160;
  undefined8 local_150;
  undefined8 local_148;
  uint local_140;
  uint local_138;
  uint local_124;
  uint local_120;
  code *local_118;
  int local_10c [17];
  undefined8 local_c8;
  undefined4 local_98 [20];
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar13 = (uint)&stack0x00000000;
  uVar8 = (((uVar13 & 0x1ff) + 1) * (uVar13 & 0x1ff) + 7) % 0x51;
  local_120 = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x47ac ^ 0x474c;
  uVar6 = uVar13 & 0x13f;
  uVar8 = ((uVar13 & 0x8ff) + 1) * (uVar13 & 0x8ff) + 0x138b & 0x80000001;
  uVar8 = (int)(-uVar8 | uVar8) >> 0x1f;
  local_124 = (0x2c >> ((char)((ulonglong)
                               ((longlong)(int)((uVar6 + 2) * (uVar6 + 1) * uVar6) * 0x55555556) >>
                              0x20) * -3 & 0x1fU) | 0x606eU) ^
              ((int)(-uVar8 | uVar8) >> 0x1f) * -0x6d1e;
  local_148 = param_2;
  local_c8 = param_1;
  do {
    FUN_18143b341(0x460c);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar1 = rdtsc();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x166a7a15;
  local_140 = (uVar8 >> 0x18 ^ uVar8) * -0x166a13ad;
  piVar14 = (int *)register0x00000020;
  if (local_140 < 0x7fffffff) {
    do {
      local_118 = FUN_1813f2240;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar2 = FUN_1813f2240(0,0x5871);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    piVar14 = (int *)-(~(ulonglong)piVar14 + 1);
    uVar8 = (*piVar14 + 1) * *piVar14 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  pIVar12 = &IMAGE_DOS_HEADER_180000000;
  local_150 = 0x110;
  puVar3 = &DAT_181415620;
  uVar8 = 0;
  local_160 = 0xf86ef99e6c52c321;
  local_178 = 0x16c52c321;
  local_168 = puVar3;
  do {
    FUN_18143d69a(0x460c);
    uVar6 = (*piVar14 + 1) * *piVar14 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_170[0] = 0;
  do {
    piVar4 = local_10c;
    FUN_18143a759();
    *piVar4 = -0x48764f8;
    FUN_18143d118();
    uVar6 = (*piVar14 + 1) * *piVar14 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((local_10c[0] + 0x33ec8702U) * 0x10 | local_10c[0] + 0x33ec8702U >> 0x1c) + 0x533f990b;
  uVar6 = (uVar6 >> 0xd | uVar6 * 0x80000) + 0x5a38037b;
  local_150 = CONCAT44(local_150._4_4_,~((uVar6 >> 0xd | uVar6 * 0x80000) + 0xa5b2247a) + 0x856b7050
                      );
  local_168 = (undefined4 *)CONCAT44(local_168._4_4_,0x1c1aa5bc);
  iVar11 = 0x1c1aa5bc;
LAB_18143be90:
  uVar6 = uVar8 & 0x3f | 0x39;
  if (((((local_170[0] & 0x62ff) + 1) * (local_170[0] & 0x62ff) & 0x80000001 ^
       (uVar8 ^ 0x5502 | 0x8af1)) & (uVar8 ^ 0x5f63) ^ 0x5e73) ==
      (uint)(uVar6 * uVar6 * 0xd117 == iVar11)) {
    local_138 = local_170[0];
    FUN_18143c10b();
    (*(code *)0xfffffffffff94e07)();
    return;
  }
  puVar15 = puVar3;
  if ((pIVar12 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar5._0_1_ = pIVar12->e_magic[0], lVar5._1_1_ = pIVar12->e_magic[1],
     lVar5._2_2_ = pIVar12->e_cblp, lVar5._4_2_ = pIVar12->e_cp, lVar5._6_2_ = pIVar12->e_crlc,
     -1 < lVar5)) {
    local_160 = 0x2621fc0;
    do {
      if (puVar3 < IMAGE_DOS_HEADER_180000000.e_magic + lVar5 + 8) {
        if (-1 < lVar5) {
          plVar7 = (longlong *)(lVar5 + 0x180000000);
          if (plVar7 < puVar3 + 1) {
            local_98[0] = *puVar3;
            pIVar9 = pIVar12;
            goto LAB_18143c010;
          }
        }
        break;
      }
      lVar5._0_2_ = pIVar12->e_cparhdr;
      lVar5._2_2_ = pIVar12->e_minalloc;
      lVar5._4_2_ = pIVar12->e_maxalloc;
      lVar5._6_2_ = pIVar12->e_ss;
      pIVar12 = (IMAGE_DOS_HEADER *)&pIVar12->e_cparhdr;
    } while (-1 < lVar5);
  }
  goto LAB_18143c02f;
  while (plVar7 = (longlong *)(lVar5 + 0x180000000), plVar7 < puVar3 + 1) {
LAB_18143c010:
    pIVar9 = (IMAGE_DOS_HEADER *)&pIVar9->e_cparhdr;
    *(longlong *)((longlong)local_98 + lVar5 + (0x180000000 - (longlong)puVar3)) =
         *plVar7 + -0x180000000;
    lVar5 = *(longlong *)pIVar9;
    puVar15 = local_98;
    if (lVar5 < 0) break;
  }
LAB_18143c02f:
  local_170[0] = local_170[0] * 0xc1;
  do {
    puVar10 = local_170;
                    /* WARNING: Call to offcut address within same function */
    func_0x00018143bfd2(0x460c,puVar15 + 0xf0f01b5,0);
    uVar6 = FUN_18143da4c();
    *puVar10 = uVar6;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar8 = uVar8 + 4;
  puVar3 = puVar3 + 1;
  iVar11 = (int)local_168;
  goto LAB_18143be90;
}



############ FUN_ 181443540 size=678 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018144363c) */
/* WARNING: Removing unreachable block (ram,0x000181443668) */
/* WARNING: Removing unreachable block (ram,0x0001814436c5) */

void FUN_181443540(longlong param_1,undefined8 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint *puVar4;
  int unaff_retaddr;
  undefined1 auStack_1b8 [88];
  uint local_160 [8];
  undefined8 local_140;
  undefined4 local_134;
  uint local_124;
  uint local_120;
  code *local_118;
  longlong local_110;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar3 = (uint)&stack0x00000000;
  local_124 = 0x8479 << ((char)((byte)(-(((uVar3 & 0x55ff) * (uVar3 & 0x55ff) + 1) % 7) >> 0x18) ^
                               (byte)(-((((uVar3 & 0xaff) + 1) * (uVar3 & 0xaff) + 7) % 0x51) >>
                                     0x18)) >> 7 & 0x1fU) ^ 0x8809;
  uVar3 = ((uVar3 & 0x3dff) * (uVar3 & 0x3dff) + 1) % 7;
  local_120 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x1223 ^ 0x1113;
  local_134 = *(undefined4 *)(param_1 + 0x3a0);
  local_140 = param_2;
  local_110 = param_1;
  do {
    puVar4 = local_160;
    FUN_181443855(puVar4,local_160);
    uVar1 = rdtsc();
    *puVar4 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_160[0] = (local_160[0] * -0x12aa13ad >> 0x18 ^ local_160[0] * -0x12aa13ad) * -0x51cae57b;
  if (local_160[0] < 0x563b48f) {
    do {
      local_118 = FUN_1813bba80;
      FUN_181442bd1(&local_118,0xf0ad);
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_118)();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x000181443804();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 181476c50 size=3092 ############

/* WARNING: Instruction at (ram,0x000181477615) overlaps instruction at (ram,0x000181477612)
    */
/* WARNING: Removing unreachable block (ram,0x000181476e48) */
/* WARNING: Removing unreachable block (ram,0x000181476de5) */
/* WARNING: Removing unreachable block (ram,0x00018147760e) */

undefined1 FUN_181476c50(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  longlong lVar9;
  uint *puVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  code **ppcVar13;
  uint uVar14;
  undefined4 *puVar15;
  uint uVar16;
  longlong *plVar17;
  ulonglong uVar18;
  undefined4 uVar19;
  int unaff_retaddr;
  undefined1 auStack_288 [40];
  ulonglong local_260;
  uint local_258 [2];
  longlong local_250;
  undefined8 local_248;
  undefined8 local_240;
  uint local_238 [2];
  uint local_230;
  undefined *local_228;
  uint local_220 [6];
  undefined8 *local_208;
  undefined8 *local_200;
  undefined8 local_1f8;
  undefined4 local_1f0;
  uint local_1ec;
  undefined4 local_1e8;
  uint local_1e4;
  undefined1 *local_1e0;
  code *local_1d8;
  undefined8 *local_1d0;
  undefined1 local_1c8 [8];
  undefined1 local_1c0 [8];
  undefined1 local_1b8 [48];
  longlong local_188;
  longlong local_180;
  undefined1 local_178 [8];
  undefined1 local_170 [56];
  undefined4 local_138;
  undefined4 local_134;
  undefined8 local_130;
  undefined8 uStack_128;
  undefined8 local_120;
  undefined8 local_118;
  undefined8 *local_110;
  undefined1 local_108 [16];
  undefined8 *local_f8;
  ulonglong local_48;
  
  local_118 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_288;
  local_1d0 = param_1;
  local_f8 = param_1;
  FUN_181489570();
  local_208 = param_1 + 0x1c;
  param_1[0x1f] = 0xffffffffffffffff;
  lVar9 = 0;
  *(undefined4 *)(param_1 + 0x20) = 0;
  *param_1 = PresetComponent::vftable;
  param_1[0x16] = PresetComponent::vftable;
  *local_208 = PresetComponent::vftable;
  param_1[0x1d] = PresetComponent::vftable;
  param_1[0x1e] = PresetComponent::vftable;
  local_200 = param_1 + 0x21;
  FUN_181600080(local_200,param_1,*(undefined8 *)(*(longlong *)(param_2 + 0x130) + 0x2b8),1);
  param_1[0x89] = param_3;
  FUN_18129e350(param_1 + 0x8a);
  param_1[0x8f] = 0;
  *(undefined1 *)(param_1 + 0x90) = 0;
  uVar16 = (uint)&stack0x00000000 & 0xdff;
  uVar16 = (uVar16 * uVar16 * 0x10 + 4) % 0x13;
  local_1e4 = ((int)(-uVar16 | uVar16) >> 0x1f) * 0x2a & 0x7f16U ^ 0x7e86;
  local_1e8 = 0x2a0;
  local_240 = 0x180000000;
  local_260 = 0;
  local_228 = &DAT_1806606e8;
  local_248 = 0x18066100c;
  do {
    puVar15 = &local_134;
    puVar10 = local_258;
    plVar17 = &local_188;
    FUN_181476420();
    *puVar10 = 0x8e907078;
    *puVar15 = 0x4e;
    *plVar17 = 0x181476f97;
    FUN_18147518b();
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  local_258[0] = local_258[0] + 0x77d2aa16;
  uVar16 = (local_258[0] >> 4 | local_258[0] * 0x10000000) & 0xb4b4b4b4 |
           (local_258[0] * 0x10 | local_258[0] >> 0x1c) & 0x4b4b4b4b;
  uVar14 = uVar16 << 0x18 | uVar16 >> 8;
  uVar16 = (uVar14 >> 0x10 ^ uVar14) >> 1 & 0x3fff;
  uVar14 = uVar14 ^ (uVar16 << 0x10 | uVar16) * 2;
  uVar16 = (uVar14 & 0x33333333) << 2 | uVar14 >> 2 & 0x33333333;
  uVar14 = (uVar16 >> 0xb | uVar16 << 0x15) + 0x10b1d077;
  uVar16 = (uVar14 >> 0xf ^ uVar14) & 0x7fff;
  uVar16 = uVar14 ^ (uVar16 << 0xf | uVar16);
  local_258[0] = (uVar16 >> 2 | uVar16 << 0x1e) & 0x99999999 |
                 (uVar16 << 2 | uVar14 >> 0x1e) & 0x66666666;
  do {
    plVar17 = &local_180;
    puVar15 = &local_138;
    puVar10 = local_220;
    FUN_18147619c();
    *puVar10 = 0xfdfa362;
    *puVar15 = 0x1e;
    *plVar17 = 0x181477087;
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar16 = (local_220[0] >> 0x10 ^ local_220[0]) & 1;
  uVar16 = local_220[0] ^ (uVar16 << 0x10 | uVar16);
  uVar16 = ((uVar16 >> 8 | uVar16 << 0x18) & 0xf30cf30c |
           (uVar16 << 8 | local_220[0] >> 0x18) & 0xcf30cf3) ^ 0x80ecd58f;
  uVar16 = ((uVar16 >> 4 | uVar16 << 0x1c) & 0x96969696 |
           (uVar16 << 4 | uVar16 >> 0x1c) & 0x69696969) + 0x13f6c098;
  uVar16 = (uVar16 * 0x100 | uVar16 >> 0x18) & 0x946b946b |
           (uVar16 >> 8 | uVar16 * 0x1000000) & 0x6b946b94;
  uVar16 = (uVar16 << 0x19 | uVar16 >> 7) ^ 0xcf6c706d;
  local_188 = (int)local_258[0] + local_188;
  local_180 = ((longlong)(int)(uVar16 << 0x10 | uVar16 >> 0x10) & 0xffffffffe0271fd8U |
              (ulonglong)((uVar16 >> 0x10 | uVar16 << 0x10) & 0x1fd8e027)) + local_180;
  local_258[0] = 0;
  local_220[0] = 0;
  *(longlong *)(local_188 + 4) =
       *(longlong *)(local_188 + 4) + (*(ulonglong *)(local_180 + 4) >> 0x1b & 0x8005008a);
  uVar11 = *(ulonglong *)(local_188 + 4);
  uVar11 = ((uVar11 >> 8 | uVar11 << 0x38) & 0xf30cf30cf30cf30c |
           (uVar11 << 8 | uVar11 >> 0x38) & 0xcf30cf30cf30cf3) + 0x6a338d5713ce5402;
  uVar12 = uVar11 >> 0x1a | uVar11 << 0x26;
  uVar12 = (uVar12 >> 0x10 | (uVar11 >> 0x1a) << 0x30) & 0x856d7a92856d7a92 |
           (uVar12 << 0x10 | (uVar11 & 0x3ffffff) >> 10) & 0x7a92856d7a92856d;
  uVar18 = uVar12 >> 0x2a | uVar12 << 0x16;
  uVar11 = (ulonglong)((uint)((uVar18 >> 0x10 ^ uVar18) >> 1) & 7);
  uVar18 = uVar18 ^ (uVar11 << 0x10 | uVar11) * 2;
  uVar12 = (uVar18 << 0x10 | (uVar12 & 0x3ffffffffff) >> 0x1a) & 0xeba5145aeba5145a |
           (uVar18 >> 0x10 | uVar18 << 0x30) & 0x145aeba5145aeba5;
  uVar11 = (ulonglong)((uint)((uVar12 >> 0x14 ^ uVar12) >> 1) & 0x3fff);
  uVar11 = uVar12 ^ (uVar11 << 0x14 | uVar11) * 2 ^ 0xbfbe7579974ff3ff;
  *(ulonglong *)(local_188 + 4) = uVar11;
  plVar17 = (longlong *)(local_180 + 4);
  *plVar17 = *plVar17 + (uVar11 >> 0xf & 0x860000d8);
  local_1ec = (uint)(*(ulonglong *)(local_188 + 4) >> 0x12) & 0x7fffffff;
  local_230 = (uint)(*(ulonglong *)(local_188 + 4) >> 0x1a) ^ 0x8b6d72fb;
  local_260 = *(ulonglong *)(local_188 + 4) ^ 0x54b481b7214c784f;
  do {
    local_1f0 = 0xaff9cd9f;
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  do {
    puVar10 = local_238;
                    /* WARNING: Call to offcut address within same function */
    func_0x000181477569(puVar10,local_238);
    uVar3 = rdtsc();
    *puVar10 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  local_238[0] = (local_238[0] * -0xae5029 >> 0x18 ^ local_238[0] * -0xae5029) * -0x73324602;
  if (local_238[0] < 0x820820f) {
    local_1d8 = (code *)0x0;
    do {
      ppcVar13 = &local_1d8;
      uVar19 = FUN_181476181(ppcVar13,&local_1d8);
      *ppcVar13 = FUN_18141db20;
      FUN_181478705(uVar19,0x3a0);
      uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar16 < 0) {
        uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar16 != 0);
    uVar11 = (*local_1d8)();
    if (1 < uVar11) {
      FUN_18113eab0();
    }
  }
  uVar3 = FUN_1811316e0(0x2a0);
  local_110 = &local_130;
  local_1e0 = local_1c8;
  local_130 = 0;
  uStack_128 = 0;
  local_120 = 0;
  local_250 = uVar3;
  FUN_18049c4e0(local_1c8,"delete preset");
  FUN_18049c4e0(local_1c0,"delete preset");
  uVar3 = FUN_181601a20(uVar3,local_1c0,local_1c8,&local_130);
  param_1[0x8f] = uVar3;
  uVar3 = FUN_1811316e0(0xe8);
  local_1f8 = uVar3;
  FUN_18049c4e0(local_1b8,"keywords");
  local_250 = FUN_1815ef7f0(uVar3,local_1b8);
  if (local_250 == 0) {
    local_250 = 0;
  }
  else {
    local_250 = local_250 + 200;
  }
  lVar6 = param_1[0x8f] + 0x1e0;
  if (param_1[0x8f] == 0) {
    lVar6 = lVar9;
  }
  uVar3 = FUN_1811316e0(0xe8);
  local_1f8 = uVar3;
  uVar4 = FUN_18124a880(local_178,"actions");
  lVar5 = FUN_1815ef7f0(uVar3,uVar4);
  lVar7 = lVar5 + 200;
  if (lVar5 == 0) {
    lVar7 = lVar9;
  }
  uVar3 = FUN_1815eeb10(param_1 + 0x21,lVar7);
  uVar3 = FUN_1815eeb10(uVar3,lVar6);
  FUN_1815eeb10(uVar3,local_250);
  uVar3 = (**(code **)(*(longlong *)param_1[0x89] + 0x40))();
  lVar6 = FUN_1804730e0(uVar3);
  lVar7 = FUN_180485e50(uVar3);
  puVar2 = local_200;
  puVar1 = local_208;
  for (; lVar6 != lVar7; lVar6 = lVar6 + 8) {
    uVar3 = FUN_1811316e0(0x2b8);
    local_1f8 = uVar3;
    uVar4 = FUN_18124a830(local_170,lVar6);
    lVar8 = FUN_18148b250(uVar3,uVar4);
    FUN_18056aa40(lVar8 + 0xf0,puVar1);
    lVar5 = lVar8 + 200;
    if (lVar8 == 0) {
      lVar5 = lVar9;
    }
    FUN_1815eeb10(puVar2,lVar5);
    param_1 = local_1d0;
  }
  local_1f8 = FUN_1811316e0(0x6c8);
  lVar9 = FUN_18148bbe0(local_1f8);
  do {
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar3 = FUN_180485410(local_108,param_1);
  FUN_18057a740(lVar9 + 0x100,uVar3);
  local_208 = (undefined8 *)CONCAT44(local_208._4_4_,0xe9955bd1);
  local_250 = local_248;
  if (lVar9 == 0) {
    lVar9 = 0;
  }
  else {
    lVar9 = lVar9 + 200;
  }
  FUN_1815eeb10(local_200,lVar9);
  local_228 = (undefined *)CONCAT44(local_228._4_4_,0x5bd1e995);
                    /* WARNING: Call to offcut address within same function */
  uVar11 = func_0x000181477730();
  return (&DAT_5bd1e995)[uVar11 & 0xff];
}



############ FUN_ 1814815a0 size=1646 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_1814815a0(undefined8 param_1)

{
  undefined8 uVar1;
  uint uVar2;
  undefined4 uVar3;
  uint *puVar4;
  ulonglong uVar5;
  undefined4 *puVar6;
  longlong *plVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  uint uVar10;
  longlong lVar11;
  int unaff_retaddr;
  undefined1 auStack_1d8 [40];
  undefined *local_1b0;
  undefined8 local_1a8;
  undefined *local_1a0;
  int local_198;
  uint local_194;
  uint local_188;
  uint local_180;
  undefined4 local_17c;
  uint local_178 [6];
  undefined8 local_160;
  ulonglong local_158;
  undefined4 local_150;
  uint local_148;
  code *local_140;
  undefined8 local_138;
  undefined4 local_130 [2];
  longlong local_128;
  longlong local_120;
  undefined4 local_118;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1d8;
  if (((ulonglong)&stack0x00000000 & 0x380) == 0) {
    uVar10 = (uint)&stack0x00000000 & 0x37f;
    uVar10 = ((uVar10 + 2) * (uVar10 + 1) * uVar10) % 3;
  }
  else {
    uVar10 = 0;
  }
  local_194 = (0x1000 - uVar10 | 0x94a8) ^ 0x9428;
  local_17c = 0xa0;
  do {
    local_150 = 0x810e82bc;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  do {
    local_118 = 0x2b;
    local_128 = 0x181481777;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  local_198 = 0x11a902d;
  local_138 = param_1;
  do {
    plVar7 = &local_120;
    puVar6 = local_130;
    puVar4 = local_178;
    FUN_181482145();
    *puVar4 = 0xf38f1fe0;
    *puVar6 = 0x5f;
    *plVar7 = 0x181481857;
    FUN_181483252();
    uVar10 = local_178[0];
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  lVar11 = local_198 + local_128;
  local_198 = 0;
  uVar2 = (local_178[0] >> 0x10 ^ local_178[0]) >> 3 & 0xfff;
  local_178[0] = 0;
  uVar2 = (uVar2 << 0x10 | uVar2) << 3 ^ uVar10 ^ 0xd7d6f936;
  uVar10 = (uVar2 >> 0xe ^ uVar2) & 0x7ff;
  uVar2 = (uVar10 << 0xe | uVar10) ^ uVar2;
  uVar10 = (uVar2 >> 0x13 | uVar2 << 0xd) + 0x12eb0d07;
  uVar10 = ((uVar10 * 0x10 | uVar10 >> 0x1c) & 0x96969696 |
           (uVar10 >> 4 | uVar10 * 0x10000000) & 0x69696969) + 0x402eee61;
  uVar2 = uVar10 >> 0x1f | uVar10 * 2;
  uVar10 = ((uVar10 & 0x7fffffff) >> 6 ^ uVar2) >> 0xb & 0xf;
  local_120 = (int)((uVar10 << 7 | uVar10) << 0xb ^ uVar2) + local_120;
  *(longlong *)(lVar11 + 4) =
       *(longlong *)(lVar11 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(local_120 + 4) >> 10) & 0x2440b02);
  uVar5 = *(longlong *)(lVar11 + 4) + 0x7021025de2eb148a;
  uVar8 = (uVar5 >> 2 | uVar5 << 0x3e) & 0x9999999999999999 |
          (uVar5 * 4 | uVar5 >> 0x3e) & 0x6666666666666666;
  uVar9 = uVar8 >> 0x25 | uVar8 << 0x1b;
  uVar5 = (ulonglong)((uint)((uVar9 >> 0xf ^ uVar9) >> 3) & 0xf);
  uVar9 = uVar9 ^ (uVar5 << 0xf | uVar5) << 3;
  uVar5 = ~((uVar9 >> 4 | uVar9 << 0x3c) & 0xe1e1e1e1e1e1e1e1 |
           (uVar9 << 4 | (uVar8 & 0x1fffffffff) >> 0x21) & 0x1e1e1e1e1e1e1e1e);
  uVar3 = (undefined4)((uVar5 >> 0x20 ^ uVar5) >> 5);
  uVar5 = uVar5 ^ (CONCAT44(uVar3,uVar3) & 0x7fff00007fff) << 5;
  uVar5 = (uVar5 << 0x19 | uVar5 >> 0x27) + 0x49aaa08c2844f53;
  *(ulonglong *)(lVar11 + 4) = uVar5;
  plVar7 = (longlong *)(local_120 + 4);
  *plVar7 = *plVar7 + (uVar5 >> 0xd & 0x83c90a02);
  local_148 = (uint)(*(ulonglong *)(lVar11 + 4) >> 0xd) & 0x7fffffff;
  local_180 = (uint)(*(ulonglong *)(lVar11 + 4) >> 0xd) ^ 0x735e733b;
  local_158 = *(ulonglong *)(lVar11 + 4) ^ 0x3f50b00dd8c0bab9;
  local_160 = 0;
  local_1a8 = 0x1edde78;
  local_1b0 = &DAT_181edde78;
  local_1a0 = &DAT_181ee9e60;
  do {
    FUN_181482cf6(0xf30c);
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  do {
    uVar1 = rdtsc();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x3d4d51cb;
  local_188 = (uVar10 >> 0x18 ^ uVar10) * -0x7a144602;
  if (local_188 < 0x7fffffff) {
    do {
      local_140 = FUN_181194940;
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar5 = FUN_181194940(0,0xe7f9);
    if (1 < uVar5) {
      FUN_18113eab0();
    }
  }
  FUN_181481c64();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 181499cb0 size=2511 ############

/* WARNING: Instruction at (ram,0x00018149a029) overlaps instruction at (ram,0x00018149a028)
    */
/* WARNING: Removing unreachable block (ram,0x000181499d6e) */
/* WARNING: Removing unreachable block (ram,0x000181499d3c) */
/* WARNING: Removing unreachable block (ram,0x000181499d7a) */
/* WARNING: Removing unreachable block (ram,0x000181499e1c) */

longlong FUN_181499cb0(longlong param_1,longlong param_2,char param_3)

{
  undefined1 *puVar1;
  uint uVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  uint uVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  float fVar9;
  float fVar10;
  int unaff_retaddr;
  undefined1 auStack_2e8 [32];
  undefined1 local_2c8;
  char local_2b8;
  undefined1 local_2b7;
  undefined4 local_2b4;
  uint local_2b0;
  ulonglong local_2a8;
  uint local_2a0;
  uint local_298;
  undefined4 local_290;
  undefined8 local_278;
  undefined8 local_270;
  undefined1 local_268 [8];
  undefined4 local_260;
  undefined4 local_25c;
  int local_258;
  code *local_250;
  longlong local_248;
  undefined4 local_240;
  undefined8 local_238;
  float local_230;
  float local_22c;
  float local_228;
  float local_224;
  longlong local_220 [5];
  longlong local_1f8;
  undefined8 local_1f0;
  float local_1e8;
  float local_1e4;
  float local_1e0;
  float local_1dc;
  undefined4 local_1d8;
  undefined1 local_1c8 [4];
  undefined4 local_1c4;
  ulonglong local_1c0;
  undefined8 local_1b8;
  longlong *local_198;
  longlong local_190;
  undefined4 local_184;
  undefined8 local_160;
  undefined1 local_f8 [48];
  longlong *local_c8;
  undefined1 local_c0 [96];
  ulonglong local_60;
  
  local_160 = 0xfffffffffffffffe;
  local_60 = DAT_182615970 ^ (ulonglong)auStack_2e8;
  local_25c = 0x40;
  lVar7 = 0;
  uVar2 = (uint)&stack0x00000000 & 0x3ff;
  local_278 = 0xff0;
  local_1f0 = 0x1808723cc;
  local_238 = 0x1808733bc;
  do {
    lVar7 = ~-lVar7 + 1;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_2b4 = 0;
  local_2a8 = 0xbe3d87d25ff68cbf;
  local_270 = 0x5ff68cbf;
  local_2b8 = param_3;
  local_248 = param_2;
  local_190 = param_1;
  if (param_3 != '\0') {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1,0x180000000,-(((uVar2 + 2) * (uVar2 + 1) * uVar2) % 3) ^ 0xf8d3,lVar7);
    }
    local_2c8 = 1;
    FUN_1813f22a0(*(undefined8 *)(param_1 + 0x1d0),local_1c8,DAT_18267428c,param_1);
    FUN_1812a3160(param_2,local_1c4);
  }
  uVar3 = (**(code **)(*(longlong *)(param_1 + 0x1f0) + 0x10))
                    ((longlong *)(param_1 + 0x1f0),&local_c8);
  local_2b7 = FUN_1812477c0(uVar3,&DAT_1821ef3ac);
  (**(code **)(*local_c8 + 0xb0))(local_c8,local_c0);
  local_198 = (longlong *)(param_1 + 0x1c8);
  (**(code **)(*local_198 + 8))(local_198);
  if (*(longlong *)(param_1 + 0x1d0) == 0) {
    FUN_180579970(param_1);
  }
  FUN_1813f2500(*(undefined8 *)(param_1 + 0x1d0),local_268);
  do {
    uVar4 = 0;
    uVar2 = FUN_18149bec3();
    if ((uVar4 & 0x40) != 0) {
      puVar1 = (undefined1 *)
               ((ulonglong)
                CONCAT31((int3)(uVar2 + 0xebd8f749 >> 8),
                         (char)(uVar2 + 0xebd8f749) + -0x7b + (0x142708b6 < uVar2)) - 0x7b);
      *puVar1 = *puVar1;
    }
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  FUN_181296e50(param_2);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),local_268);
  uVar3 = FUN_1814acd80(param_1,local_f8);
  FUN_1804ab5a0(uVar3,&local_1e8);
  FUN_18049c4e0(&local_1f8,&DAT_1821ef3bc);
  fVar9 = (float)FUN_1812518d0(local_268,&local_1f8);
  fVar9 = ceilf(fVar9);
  local_258 = (int)fVar9;
  FUN_1804951e0(local_1f8 + -0x10);
  do {
    local_260 = 0x4a7e8d33;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  local_240 = 0x5129feff;
  FUN_18049c4e0(local_220,&DAT_1821ef614);
  fVar9 = local_1dc;
  fVar10 = (float)FUN_1812518d0(local_268,local_220);
  fVar10 = ceilf(fVar10);
  local_228 = (float)(int)fVar10;
  local_22c = (local_1dc - fVar9) * DAT_1824c3d8c + local_1e4;
  local_230 = (local_1e0 - local_228) * DAT_1824c3d8c + local_1e8;
  local_224 = fVar9;
  FUN_1804951e0(local_220[0] + -0x10);
  do {
    uVar3 = rdtsc();
    local_2a0 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_18149a6c3();
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  local_2a0 = (local_2a0 * -0x12aa12ab >> 0x18 ^ local_2a0 * -0x12aa12ab) * -0x13ac4602;
  if (local_2a0 < 0xd20d20f) {
    do {
      local_250 = FUN_181194940;
      uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    uVar4 = FUN_181194940(0,0xeb1b);
    if (1 < uVar4) {
      FUN_18113eab0();
    }
  }
  do {
    local_2b0 = 0x9dab728d;
    local_184 = 0x70;
    local_1c0 = 0x18149a2b7;
    FUN_1814990cb();
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar5 = local_2b0 >> 6 | local_2b0 << 0x1a;
  uVar2 = (uVar5 >> 3 ^ uVar5) >> 0xd & 3;
  uVar5 = ((uVar2 * 8 | uVar2) << 0xd ^ uVar5) + 0x42c5e121;
  uVar2 = uVar5 >> 0x17;
  uVar5 = (uVar2 | uVar5 * 0x200) + 0x7f7a7d0;
  uVar2 = ((uVar5 * 4 | uVar5 >> 0x1e) & 0x99999999 | (uVar5 >> 2 | uVar2 << 0x1e) & 0x66666666) ^
          0x1bf73714;
  do {
    local_1d8 = 6;
    local_1b8 = 0x18149a367;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  lVar8 = (longlong)(int)((uVar2 << 0x14 | uVar2 >> 0xc) + 0x7d40ba5f);
  local_2b0 = 0;
  local_290 = 0;
  uVar4 = (ulonglong)((uint)((ulonglong)dvs_0xcbf7a3b2_mfort6317_ >> 0xc) & 0x600a8481) +
          *(longlong *)(lVar8 + 4 + local_1c0) ^ 0xf37db0e4d16fa422;
  uVar4 = (uVar4 << 2 | uVar4 >> 0x3e) & 0x9999999999999999 |
          (uVar4 >> 2 | uVar4 << 0x3e) & 0x6666666666666666;
  uVar4 = (uVar4 << 0x20 | uVar4 >> 0x20) + 0xde1614d95681d01e;
  uVar4 = (uVar4 * 0x2000000 | uVar4 >> 0x27) ^ 0x90b983db2a68a1a7;
  uVar4 = (uVar4 >> 4 | uVar4 << 0x3c) & 0xd2d2d2d2d2d2d2d2 |
          (uVar4 << 4 | uVar4 >> 0x3c) & 0x2d2d2d2d2d2d2d2d;
  uVar6 = uVar4 >> 0x2a | uVar4 << 0x16;
  uVar4 = (uVar6 >> 4 | (uVar4 >> 0x2a) << 0x3c) & 0xa5a5a5a5a5a5a5a5 |
          (uVar6 << 4 | (uVar4 & 0x3ffffffffff) >> 0x26) & 0x5a5a5a5a5a5a5a5a;
  *(ulonglong *)(lVar8 + 4 + local_1c0) = uVar4;
  dvs_0xcbf7a3b2_mfort6317_ =
       (uint *)((longlong)dvs_0xcbf7a3b2_mfort6317_ + (ulonglong)((uint)(uVar4 >> 0x11) & 0x1384cc4)
               );
  local_278 = CONCAT44(local_278._4_4_,(int)(*(ulonglong *)(lVar8 + 4 + local_1c0) >> 7)) &
              0xffffffff7fffffff;
  local_298 = (uint)(*(ulonglong *)(lVar8 + 4 + local_1c0) >> 0x1d) ^ 0xa9277677;
  lVar7 = 0x41c065df19625504;
  local_2a8 = *(ulonglong *)(lVar8 + 4 + local_1c0) ^ 0x41c065df19625504;
  uVar4 = local_1c0;
  FUN_18149c357();
                    /* WARNING: Call to offcut address within same function */
  uVar6 = func_0x00018149a5a2();
  *(undefined1 *)(lVar7 + -0x3b7cb7f3) =
       (char)(CONCAT11(param_2 + uVar4 < uVar4,*(undefined1 *)(lVar7 + -0x3b7cb7f3)) >> 1);
  return ~((uVar6 ^ 0xffffffffffffffff) + 1) + 1;
}



############ FUN_ 1814dc540 size=2093 ############

/* WARNING: Instruction at (ram,0x0001814dce85) overlaps instruction at (ram,0x0001814dce84)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001814dce7f) */
/* WARNING: Removing unreachable block (ram,0x0001814dd801) */
/* WARNING: Removing unreachable block (ram,0x0001814dd3eb) */
/* WARNING: Removing unreachable block (ram,0x0001814dc936) */
/* WARNING: Removing unreachable block (ram,0x0001814dc8cb) */
/* WARNING: Removing unreachable block (ram,0x0001814dcc1d) */
/* WARNING: Removing unreachable block (ram,0x0001814dd263) */
/* WARNING: Removing unreachable block (ram,0x0001814dd79a) */
/* WARNING: Removing unreachable block (ram,0x0001814dc9f8) */

undefined8 FUN_1814dc540(ulonglong param_1,undefined8 param_2)

{
  undefined7 uVar1;
  byte bVar2;
  undefined1 *puVar3;
  uint uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  code **ppcVar11;
  ulonglong uVar12;
  int iVar13;
  longlong lVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  longlong in_R11;
  int *piVar24;
  byte bVar25;
  int *piVar26;
  longlong lVar27;
  bool bVar28;
  undefined4 uVar29;
  int unaff_retaddr;
  undefined1 auStack_158 [32];
  int *local_138;
  undefined *local_130;
  undefined4 local_128;
  undefined *local_120;
  uint local_118;
  int local_114;
  uint local_110;
  code *local_108 [3];
  undefined8 local_f0;
  undefined8 local_e0;
  undefined1 auStack_d0 [8];
  undefined1 auStack_c8 [96];
  longlong *local_68;
  undefined1 local_60 [8];
  ulonglong local_58;
  
  local_e0 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_110 = 0xd913;
  if (((ulonglong)&stack0x00000000 & 0x300) == 0) {
    uVar8 = (uint)&stack0x00000000 & 0x2bf;
    iVar13 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
    local_110 = (((iVar13 >> 1) - (iVar13 >> 3)) + iVar13 * 0x55555555 >> 0x1e) + 0xd913;
  }
  uVar6 = 0;
  local_110 = local_110 ^ 0xc913;
  local_114 = 0x250;
  local_f0 = param_2;
  puVar5 = (undefined8 *)
           (**(code **)(*(longlong *)(param_1 + 0x140) + 0x10))
                     ((longlong *)(param_1 + 0x140),&local_68);
  local_128 = (**(code **)(*(longlong *)*puVar5 + 8))((longlong *)*puVar5,puVar5 + 1);
  (**(code **)(*local_68 + 0xb0))(local_68,local_60);
  uVar18 = 0xf1a256d7;
  uVar19 = 0xc09205ea;
  local_138 = &DAT_1814075c0;
  local_130 = &DAT_1814076c0;
  uVar8 = (DAT_1814075c0 + 0x2de7207b) * -0x395b586d;
  lVar27 = 2;
  lVar14 = 2;
  piVar26 = local_138;
  do {
    piVar24 = piVar26;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[1]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[2]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[3]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[4]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[5]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[6]) * -0x395b586d;
    lVar14 = lVar14 + -1;
    piVar26 = piVar24 + 6;
  } while (lVar14 != 0);
  uVar8 = uVar8 ^ uVar8 >> 0x10;
  piVar26 = (int *)register0x00000020;
  uVar9 = uVar8;
  local_120 = local_130;
  do {
    bVar28 = (POPCOUNT(uVar9 & 0xff) & 1U) == 0;
    FUN_1814daefb(0x6d2c);
    if (!bVar28) {
      lVar14 = (longlong)piVar26 + param_1;
      piVar26 = (int *)((param_1 - lVar14 ^ 0xffffffffffffffff) + 1);
      param_1 = lVar14 - (longlong)piVar26;
    }
    uVar9 = (*piVar26 + 1) * *piVar26 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (piVar24[7] + uVar8) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[8]) * -0x395b586d;
  do {
    FUN_1814dd476();
    uVar9 = (*piVar26 + 1) * *piVar26 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (piVar24[9] + (uVar8 ^ uVar8 >> 0x10)) * -0x395b586d;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (piVar24[10] + (uVar8 ^ uVar8 >> 0x10)) * -0x395b586d;
  piVar26 = piVar24 + 10;
  do {
    piVar24 = piVar26;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[1]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[2]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[3]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[4]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[5]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[6]) * -0x395b586d;
    lVar27 = lVar27 + -1;
    piVar26 = piVar24 + 6;
  } while (lVar27 != 0);
  do {
    uVar18 = uVar18 ^ uVar19;
    if (0 < (longlong)uVar18) {
      lVar14 = uVar19 + in_R11;
      uVar19 = ~(in_R11 - lVar14) + 1;
      in_R11 = lVar14 - uVar19;
    }
    uVar18 = uVar18 ^ uVar19;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (piVar24[7] + (uVar8 ^ uVar8 >> 0x10)) * -0x395b586d;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (piVar24[8] + (uVar8 ^ uVar8 >> 0x10)) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[9]) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[10]) * -0x395b586d;
  piVar24 = piVar24 + 0xb;
  do {
    puVar10 = &local_118;
    FUN_1814db84d(puVar10,&local_118);
    uVar7 = rdtsc();
    *puVar10 = (uint)uVar7 ^ (uint)((ulonglong)uVar7 >> 0x20);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_118 = (local_118 * -0x51ca7a15 >> 0x18 ^ local_118 * -0x51ca7a15) * -0x35947333;
  if (local_118 < 0x74400) {
    local_108[0] = (code *)0x0;
    do {
      ppcVar11 = local_108;
      FUN_1814dde27(ppcVar11,local_108);
      *ppcVar11 = FUN_1813f2240;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar18 = (*local_108[0])(0,0x7190);
    if (1 < uVar18) {
      FUN_18113eab0();
    }
  }
  uVar8 = (*piVar24 + (uVar8 ^ uVar8 >> 0x10)) * -0x395b586d;
  uVar8 = uVar8 ^ uVar8 >> 0x10;
  if ((uVar8 & 0x40) == 0) {
    uVar20 = uVar8 & 0x7f | 0x3e;
    uVar9 = (uint)piVar24 & 7 | 0x4b;
    uVar9 = (uint)(uVar9 * uVar9 * 0xafbb == uVar20 * uVar20 * 0x5a77);
  }
  else {
    uVar9 = 0;
  }
  piVar24 = (int *)((longlong)piVar24 +
                   ((longlong)
                    (int)((((uVar8 & 0x6dff) - 1) * (uVar8 & 0x6dff) & 1) +
                         (((uVar8 & 0x25ff) + 1) * (uVar8 & 0x25ff) & 0x80000001)) ^ 0x40U) +
                   ((longlong)(int)(0xad91 - uVar9) ^ 0xffffffffffff5255U));
  uVar9 = (*piVar24 + uVar8) * -0x395b586d;
  uVar9 = uVar9 ^ uVar9 >> 0x10;
  uVar18 = (ulonglong)uVar9;
  iVar13 = (uVar9 & 0x27ff) * (uVar9 & 0x27ff) + 1;
  uVar8 = (iVar13 >> 4) + (iVar13 >> 1) + iVar13 * 0x24924924 >> 0x1d;
  if (((int)(uVar8 - 7) >> 0x1f & uVar8 & 0x600) == 0) {
    uVar20 = (uint)piVar24 & 0x35ff;
    uVar8 = uVar9 & 0x4f;
    uVar19 = (ulonglong)
             ((uVar20 * uVar20 + 1) % 7 & uVar8 * uVar8 * (uVar8 + 1) * (uVar8 + 1) & 2 ^ 0xc4b9);
  }
  else {
    uVar19 = 0xc4b9;
  }
  uVar8 = (uint)piVar24 & 0x33f;
  iVar13 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  piVar24 = (int *)(((((longlong)(((iVar13 >> 1) - (iVar13 >> 3)) + iVar13 * 0x55555555) >> 0x1e &
                       (longlong)(int)local_120 | 0xc479U) ^ (longlong)(int)uVar19) - 0xbc) +
                   (longlong)piVar24);
  uVar8 = (*piVar24 + uVar9) * -0x395b586d;
  lVar14 = 4;
  do {
    piVar26 = piVar24;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[1]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[2]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[3]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[4]) * -0x395b586d;
    uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[5]) * -0x395b586d;
    lVar14 = lVar14 + -1;
    piVar24 = piVar26 + 5;
  } while (lVar14 != 0);
  do {
    uVar12 = 0x6d2c;
    FUN_1814dee79();
    if ((uVar12 & 0xdf00) == 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (piVar26[6] + (uVar8 ^ uVar8 >> 0x10)) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[7]) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[8]) * -0x395b586d;
  local_138 = (int *)0x51270989452c0b28;
  local_120 = (undefined *)CONCAT44(local_120._4_4_,0x452c0b28);
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[9]) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[10]) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[0xb]) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[0xc]) * -0x395b586d;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[0xd]) * -0x395b586d;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = ~(uVar8 ^ uVar8 >> 0x10) + 0x9da7e6c;
  if ((uVar8 >> 0xc | uVar8 * 0x100000) == 0xe09b03e2) {
    lVar14 = (longlong)local_114;
    puVar3 = auStack_158;
    do {
      puVar15 = puVar3;
      *(ulonglong *)(puVar15 + -8) = uVar18;
      *(undefined8 *)(puVar15 + -0x10) = uVar6;
      *(ulonglong *)(puVar15 + -0x18) = param_1;
      uVar19 = (-uVar19 ^ 0xffffffffffffffff) + 1;
      lVar27 = -lVar14;
      puVar17 = puVar15 + lVar27 + -0x18;
      param_1 = *(ulonglong *)(puVar15 + lVar27 + 0x238);
      uVar6 = *(undefined8 *)(puVar15 + lVar27 + 0x240);
      uVar18 = *(ulonglong *)(puVar15 + lVar27 + 0x248);
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      puVar3 = puVar15 + lVar27 + 0x250;
    } while (uVar8 != 0);
    if (*(int *)(puVar15 + lVar27 + 0x280) < 0) {
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814ddcb0;
      uVar6 = FUN_181339840(*(undefined8 *)(puVar15 + lVar27 + 0x2b8),auStack_c8,param_1);
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814ddcbc;
      uVar6 = func_0x0001813396e0(uVar6,auStack_d0);
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814ddcc4;
      FUN_1804835d0(uVar6);
      *(undefined1 **)(puVar15 + lVar27 + 0x248) = &LAB_1814ddcd4;
      FUN_1813399b0(auStack_c8);
    }
    else {
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd0af;
      FUN_181212060(puVar15 + lVar27 + 0x2b0,*(int *)(puVar15 + lVar27 + 0x280),uVar19);
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd0c6;
      uVar7 = FUN_181246550(puVar15 + lVar27 + 0x2c0,&UNK_1822c2394,puVar15 + lVar27 + 0x2b0);
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd0da;
      FUN_1812465e0(puVar15 + lVar27 + 0x2a8,uVar7,&UNK_1822c26f4);
      *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd0e9;
      FUN_1804951e0(*(longlong *)(puVar15 + lVar27 + 0x2b0) + -0x10);
      *(undefined8 *)(puVar15 + lVar27 + 0x270) = 0x2621fc0;
      lVar14 = *(longlong *)(puVar15 + lVar27 + 0x270);
      *(undefined8 *)(puVar15 + lVar27 + 0x270) = 0x692277c6;
      *(undefined8 *)(puVar15 + lVar27 + 0x278) = 0x5f3778bc;
      uVar20 = *(int *)(puVar15 + lVar27 + 0x270) + 0x87966d91;
      uVar21 = *(int *)(puVar15 + lVar27 + 0x278) + 0x615a8d2e;
      uVar8 = (uVar20 >> 8 ^ uVar20) >> 3 & 3;
      uVar9 = (uVar21 >> 0xd ^ uVar21) >> 6 & 0x1fff;
      *(uint *)(puVar15 + lVar27 + 0x270) = (uVar8 << 8 | uVar8) << 3 ^ uVar20 ^ 0xf0e22317;
      *(uint *)(puVar15 + lVar27 + 0x278) = (uVar9 << 0xd | uVar9) << 6 ^ uVar21 ^ 0x40be05aa;
      *(undefined **)(puVar15 + lVar27 + 0x270) =
           &DAT_182621fc0 + (*(longlong *)(puVar15 + lVar27 + 0x270) - lVar14);
      *(longlong *)(puVar15 + lVar27 + 0x278) =
           *(longlong *)(puVar15 + lVar27 + 0x270) + *(longlong *)(puVar15 + lVar27 + 0x278);
      *(undefined4 *)(puVar15 + lVar27 + 0x280) = 0xe1c9394a;
      uVar9 = ((*(uint *)(puVar15 + lVar27 + 0x280) ^ 0xca30327) << 0x18 |
              (*(uint *)(puVar15 + lVar27 + 0x280) ^ 0xca30327) >> 8) + 0x84773bfb;
      uVar8 = (uVar9 >> 0x15 ^ uVar9) & 0x1ff;
      uVar9 = (uVar8 << 0x15 | uVar8) ^ uVar9;
      uVar19 = (ulonglong)uVar9;
      piVar26 = *(int **)(puVar15 + lVar27 + 0x270);
      uVar18 = *(ulonglong *)(puVar15 + lVar27 + 0x278);
      uVar8 = (*piVar26 + -0x3593ff06) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[1]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[2]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[3]) * uVar9;
      piVar26 = piVar26 + 4;
      uVar22 = ((uVar8 >> 0x10 ^ uVar8) + *piVar26) * uVar9;
      uVar22 = uVar22 ^ uVar22 >> 0x10;
      uVar8 = (uint)piVar26 & 0x21ff;
      uVar21 = (uVar8 + 1) * uVar8 & 0x80000001 ^ ((uVar22 & 0x65ff) * (uVar22 & 0x65ff) + 1) % 7;
      uVar8 = uVar22 & 0x3f | 0x50;
      uVar20 = (uint)piVar26 & 0x7f | 0x18;
      uVar1 = (undefined7)((ulonglong)uVar6 >> 8);
      piVar26 = (int *)(((0xa984L >>
                          ((byte)((int)CONCAT71(uVar1,uVar20 * uVar20 * 0x65a5 ==
                                                      uVar8 * uVar8 * 0x1367) <<
                                 ((byte)piVar26 & 0x1f)) & 0x3f) ^
                         (ulonglong)((int)(-uVar21 | uVar21) >> 0x1f & 0xa804)) - 0x17c) +
                       (longlong)piVar26);
      uVar8 = (*piVar26 + uVar22) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[1]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[2]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[3]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[4]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[5]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[6]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[7]) * uVar9;
      piVar26 = piVar26 + 8;
      do {
        uVar20 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar20 < 0) {
          uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar20 != 0);
      uVar8 = (*piVar26 + (uVar8 ^ uVar8 >> 0x10)) * uVar9;
      uVar8 = uVar8 ^ uVar8 >> 0x10;
      uVar20 = (uint)uVar18;
      bVar25 = (byte)uVar18;
      bVar2 = bVar25;
      if ((uVar18 & 0x380) != 0) {
        bVar2 = (byte)uVar8;
      }
      uVar21 = (uint)piVar26 & 0x2ff;
      iVar13 = (uVar21 + 2) * (uVar21 + 1) * uVar21;
      piVar26 = (int *)((longlong)piVar26 +
                       ((((longlong)
                          (iVar13 + (iVar13 / 3 + (iVar13 >> 0x1f) +
                                    (int)(((longlong)iVar13 / 3 + ((longlong)iVar13 >> 0x3f) &
                                          0xffffffffU) >> 0x1f)) * -3) >> (bVar25 & 0x1f) | 0xf737U)
                        ^ 0xf733) - 0xc0) +
                       ((longlong)(0x917 << ((bVar2 + 1) * bVar2 & 1)) ^ 0x9d7U));
      uVar8 = (*piVar26 + uVar8) * uVar9;
      lVar14 = 7;
      do {
        piVar24 = piVar26;
        uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[1]) * uVar9;
        uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[2]) * uVar9;
        uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[3]) * uVar9;
        uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[4]) * uVar9;
        lVar14 = lVar14 + -1;
        piVar26 = piVar24 + 4;
      } while (lVar14 != 0);
      piVar24 = piVar24 + 5;
      do {
        *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd4ca;
        func_0x0001814dbf92();
        *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd4ee;
        func_0x0001814db92a();
        uVar21 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar21 < 0) {
          uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar21 != 0);
      uVar22 = (*piVar24 + (uVar8 ^ uVar8 >> 0x10)) * uVar9;
      uVar22 = uVar22 ^ uVar22 >> 0x10;
      uVar21 = (uint)piVar24;
      uVar8 = uVar21 & 0x27f;
      iVar13 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
      if ((((iVar13 >> 1) - (iVar13 >> 3)) + iVar13 * 0x55555555 >> 0x1e & 0x2400U) == 0) {
        if (((ulonglong)piVar24 & 0x840) == 0) {
          uVar8 = uVar21 & 7 | 0x34;
          uVar4 = uVar21 & 0x3f | 0x47;
          uVar8 = (uint)CONCAT71(uVar1,uVar4 * uVar4 * 0xa75 == uVar8 * uVar8 * 0xfa3);
        }
        else {
          uVar8 = uVar20 & 0x27f;
          iVar13 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
          uVar8 = ((iVar13 >> 1) - (iVar13 >> 3)) + iVar13 * 0x55555555 >> 0x1e;
        }
        uVar8 = uVar8 ^ 0xb765;
      }
      else {
        uVar8 = 0xb765;
      }
      uVar4 = uVar22 & 0x1f | 0x27;
      uVar21 = uVar21 & 0x3f | 0x4b;
      uVar4 = uVar4 * uVar4 * 0x51d3 ^ uVar21 * uVar21 * 0xdd5;
      uVar21 = uVar20 & 0x3bf;
      iVar13 = (uVar21 + 2) * (uVar21 + 1) * uVar21;
      uVar4 = ((int)(-uVar4 | uVar4) >> 0x1f) >>
              ((byte)(((iVar13 >> 1) - (iVar13 >> 3)) + iVar13 * 0x55555555 >> 0x1e) & 0x1f);
      bVar25 = bVar25 & 0x1f;
      uVar23 = uVar22 & 0x1f | 0x75;
      uVar21 = uVar22 & 0x3f | 0x14;
      piVar24 = (int *)((longlong)piVar24 +
                       (((longlong)
                         (0x6e0f <<
                         ((byte)((int)CONCAT71(uVar1,uVar21 * uVar21 * 0x16eb ==
                                                     uVar23 * uVar23 * 0x1de1) <<
                                ((bVar25 + 1) * (bVar25 + 1) * bVar25 * bVar25 & 2)) & 0x1f)) ^
                        0x6e03U) -
                       (longlong)(int)(((int)(-uVar4 | uVar4) >> 0x1f) * -0xb76d ^ uVar8)));
      uVar8 = (*piVar24 + uVar22) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[1]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar24[2]) * uVar9;
      piVar24 = piVar24 + 3;
      uVar23 = ((uVar8 >> 0x10 ^ uVar8) + *piVar24) * uVar9;
      uVar23 = uVar23 ^ uVar23 >> 0x10;
      uVar4 = uVar23 & 0x2f;
      uVar8 = uVar20 & 7 | 0x60;
      uVar21 = (uint)piVar24 & 0x1f | 0x42;
      uVar22 = ((uVar20 & 0x2cff) * (uVar20 & 0x2cff) + 1) % 7;
      uVar18 = (ulonglong)uVar22;
      piVar24 = (int *)((longlong)piVar24 +
                       ((longlong)
                        (int)(((uint)CONCAT71(uVar1,uVar8 * uVar8 * 0xf3fb ==
                                                    uVar21 * uVar21 * 0x9e81) & uVar22) + 0xba91) ^
                       0xffffffffffff4415U) +
                       ((longlong)(int)(0xad63 - (uVar4 * uVar4 * (uVar4 + 1) * (uVar4 + 1) & 3)) ^
                       0xace3U));
      uVar21 = (*piVar24 + uVar23) * uVar9;
      uVar8 = (uint)piVar24 & 0x2cff;
      uVar8 = (uVar8 + 1) * uVar8 + 7;
      piVar26 = (int *)(((longlong)(int)(((uVar20 & 0x6ff) + 1) * (uVar20 & 0x6ff) & 0x80000001) >>
                         ((char)uVar8 + (char)(uVar8 / 0x51) * -0x51 & 0x1fU) ^ 0xffffffffffffff84U)
                        + 0x80 + (longlong)piVar24);
      uVar8 = ((uVar21 >> 0x10 ^ uVar21) + *piVar26) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[1]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[2]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[3]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[4]) * uVar9;
      uVar8 = ((uVar8 >> 0x10 ^ uVar8) + piVar26[5]) * uVar9;
      do {
        uVar20 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar20 < 0) {
          uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar20 != 0);
      uVar8 = (piVar26[6] + (uVar8 ^ uVar8 >> 0x10)) * uVar9;
      uVar8 = uVar8 ^ uVar8 >> 0x10;
      do {
        piVar24 = (int *)(~(((ulonglong)piVar24 ^ 0xffffffffffffffff) + 1) + 1);
        uVar20 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar20 < 0) {
          uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar20 != 0);
      uVar20 = (piVar26[7] + uVar8) * uVar9;
      uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[8]) * uVar9;
      uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[9]) * uVar9;
      uVar12 = (ulonglong)uVar20;
      *(undefined8 *)(puVar15 + lVar27 + 0x270) = 0x5af312fa8ec1179e;
      *(int *)(puVar15 + lVar27 + 0x280) = (int)*(undefined8 *)(puVar15 + lVar27 + 0x270);
      uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[10]) * uVar9;
      uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[0xb]) * uVar9;
      uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[0xc]) * uVar9;
      uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[0xd]) * uVar9;
      uVar9 = ((uVar20 >> 0x10 ^ uVar20) + piVar26[0xe]) * uVar9;
      do {
        *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814dd9ab;
        func_0x0001814df062(0x4b14);
        lVar14 = param_1 + uVar12;
        uVar12 = (-uVar12 ^ 0xffffffffffffffff) + 1;
        param_1 = lVar14 - uVar12;
        uVar20 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar20 < 0) {
          uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar20 != 0);
      uVar9 = ~(uVar9 ^ uVar9 >> 0x10) + 0x9da7e6c;
      uVar6 = CONCAT71(uVar1,(uVar9 >> 0xc | uVar9 * 0x100000) + 0x64910746 !=
                             *(int *)(puVar15 + lVar27 + 0x280));
      if ((int)uVar6 * 0x21 != 0) {
        *(undefined **)(puVar15 + lVar27 + 0x248) = &UNK_1814ddb3e;
        func_0x0001814dc1c0();
        *(ulonglong *)(puVar15 + lVar27 + 0x248) = (ulonglong)uVar8;
        *(BADSPACEBASE **)(puVar15 + lVar27 + 0x240) = register0x00000020;
        *(undefined8 *)(puVar15 + lVar27 + 0x238) = uVar6;
        uVar6 = thunk_FUN_1805a9280();
        return uVar6;
      }
      iVar13 = *(int *)(puVar15 + lVar27 + 0x294);
      puVar3 = puVar15 + lVar27 + -0x18;
      do {
        puVar16 = puVar3;
        *(ulonglong *)(puVar16 + 0x260) = uVar18;
        *(int **)(puVar16 + 600) = piVar24;
        *(ulonglong *)(puVar16 + 0x250) = uVar19;
        lVar14 = -(longlong)iVar13;
        puVar17 = puVar16 + lVar14 + 0x250;
        uVar19 = *(ulonglong *)(puVar16 + lVar14 + 0x4a0);
        piVar24 = *(int **)(puVar16 + lVar14 + 0x4a8);
        uVar18 = *(ulonglong *)(puVar16 + lVar14 + 0x4b0);
        uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar8 < 0) {
          uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
        }
        puVar3 = puVar16 + lVar14 + 0x250;
      } while (uVar8 != 0);
      uVar6 = *(undefined8 *)(puVar16 + lVar14 + 0x510);
      *(undefined **)(puVar16 + lVar14 + 0x4b0) = &UNK_1814ddaf4;
      uVar7 = FUN_1811ebcb0(param_1 + 0x140);
      *(undefined **)(puVar16 + lVar14 + 0x4b0) = &UNK_1814ddafc;
      uVar7 = FUN_1811f0330(uVar7);
      *(undefined **)(puVar16 + lVar14 + 0x4b0) = &UNK_1814ddb07;
      uVar6 = FUN_18119aa60(uVar7,uVar6);
      *(undefined **)(puVar16 + lVar14 + 0x4b0) = &UNK_1814ddb0f;
      uVar29 = func_0x0001811bf790(uVar6);
      uVar6 = *(undefined8 *)(param_1 + 0xd8);
      *(undefined **)(puVar16 + lVar14 + 0x4b0) = &UNK_1814ddb1e;
      FUN_180487300(uVar6,uVar29);
      *(undefined8 *)(puVar16 + lVar14 + 0x4b0) = 0x1814ddc9d;
      FUN_18124a7e0(puVar16 + lVar14 + 0x510);
    }
    *(undefined **)(puVar17 + 0x260) = &UNK_1814ddce3;
  }
  uVar18 = ~(~param_1 + 1) + 1;
  uVar6 = thunk_FUN_1805a9280((longlong)(int)local_110,1,uVar18 ^ 0x1814dcfec ^ uVar18);
  return uVar6;
}



############ FUN_ 1815d34d0 size=2613 ############

/* WARNING: Instruction at (ram,0x0001815d3f24) overlaps instruction at (ram,0x0001815d3f23)
    */
/* WARNING: Removing unreachable block (ram,0x0001815d3fea) */
/* WARNING: Removing unreachable block (ram,0x0001815d39a1) */
/* WARNING: Removing unreachable block (ram,0x0001815d3528) */
/* WARNING: Removing unreachable block (ram,0x0001815d38ea) */
/* WARNING: Removing unreachable block (ram,0x0001815d3e38) */
/* WARNING: Removing unreachable block (ram,0x0001815d3f23) */
/* WARNING: Removing unreachable block (ram,0x0001815d3534) */

ulonglong FUN_1815d34d0(longlong param_1)

{
  int *piVar1;
  byte bVar2;
  code *pcVar3;
  undefined8 uVar4;
  longlong lVar5;
  uint uVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  uint uVar13;
  uint uVar14;
  char cVar15;
  uint *_Memory;
  byte *pbVar16;
  undefined1 *puVar17;
  longlong lVar18;
  longlong lVar19;
  undefined1 *puVar20;
  float fVar21;
  int unaff_retaddr;
  undefined1 auStack_c8 [32];
  int local_a8;
  undefined8 *local_a0;
  undefined8 local_98;
  code *local_90;
  undefined8 *local_88;
  undefined4 *local_80;
  longlong local_78 [7];
  
  local_78[1] = 0xfffffffffffffffe;
  lVar18 = 0;
  uVar11 = 1;
  local_a8 = 0x550;
  pcVar3 = *(code **)(*(longlong *)(param_1 + 0x208) + 8);
  puVar20 = (undefined1 *)register0x00000020;
  if (pcVar3 == FUN_180584490) {
    if (*(longlong *)(param_1 + 0x210) == 0) {
      FUN_1805849b0(param_1);
    }
    lVar19 = *(longlong *)(param_1 + 0x210);
  }
  else {
    lVar19 = (*pcVar3)(param_1 + 0x208);
  }
  local_a0 = (undefined8 *)**(longlong **)(lVar19 + 0x68);
  if (local_a0 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_a0 + 1) = *(int *)(local_a0 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_a0);
  FUN_181251cf0(&local_a0,&local_88,DAT_1824c3c7c);
  if (local_a0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_a0 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_a0)(local_a0,1);
    }
  }
  puVar8 = (undefined8 *)FUN_1812ea010(param_1,local_78);
  plVar9 = (longlong *)FUN_181252280(&local_88);
  lVar19 = *plVar9;
  fVar21 = (float)(**(code **)(lVar19 + 0x28))(plVar9,puVar8);
  if (*(float *)(local_88 + 6) != 0.0) {
    pbVar16 = (byte *)*puVar8;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar16;
        pbVar16 = pbVar16 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar16 & 0xc0) != 0x80) goto LAB_1815d3798;
        do {
          pbVar16 = pbVar16 + 1;
        } while ((*pbVar16 & 0xc0) == 0x80);
        lVar18 = lVar18 + 1;
      }
      if (bVar2 == 0) break;
LAB_1815d3798:
      lVar18 = lVar18 + 1;
    }
    fVar21 = fVar21 + (float)(int)lVar18 * *(float *)(local_88 + 6);
    lVar19 = lVar18;
  }
  ceilf(fVar21 * *(float *)(local_88 + 5) * *(float *)((longlong)local_88 + 0x2c));
  _Memory = (uint *)(local_78[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar13 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_98 = 0x100;
  local_80 = &DAT_1809a6730;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar13 = DAT_1809a67cc ^
           (DAT_1809a67c8 ^
           (DAT_1809a67c4 ^
           (DAT_1809a67c0 ^
           (DAT_1809a67bc ^
           (DAT_1809a67b8 ^
           (DAT_1809a67b4 ^
           (DAT_1809a67b0 ^
           (DAT_1809a67ac ^
           (DAT_1809a67a8 ^
           (DAT_1809a67a4 ^
           ((((((((((((((((((DAT_1809a675c ^
                            (DAT_1809a6758 ^
                            (DAT_1809a6754 ^
                            (DAT_1809a6750 ^
                            (DAT_1809a674c ^
                            (DAT_1809a6748 ^
                            (DAT_1809a6744 ^
                            (DAT_1809a6740 ^
                            (DAT_1809a673c ^
                            (DAT_1809a6738 ^
                            (DAT_1809a6734 ^ (DAT_1809a6730 ^ 0x811c9e29) * 0x10001ab) * 0x10001ab)
                            * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) *
                            0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab ^
                           DAT_1809a6760) * 0x10001ab ^ DAT_1809a6764) * 0x10001ab ^ DAT_1809a6768)
                         * 0x10001ab ^ DAT_1809a676c) * 0x10001ab ^ DAT_1809a6770) * 0x10001ab ^
                      DAT_1809a6774) * 0x10001ab ^ DAT_1809a6778) * 0x10001ab ^ DAT_1809a677c) *
                    0x10001ab ^ DAT_1809a6780) * 0x10001ab ^ DAT_1809a6784) * 0x10001ab ^
                 DAT_1809a6788) * 0x10001ab ^ DAT_1809a678c) * 0x10001ab ^ DAT_1809a6790) *
               0x10001ab ^ DAT_1809a6794) * 0x10001ab ^ DAT_1809a6798) * 0x10001ab ^ DAT_1809a679c)
            * 0x10001ab ^ DAT_1809a67a0) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) *
           0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab;
  if (*(char *)(param_1 + 0x49d) == '\0') {
    (**(code **)(*(longlong *)(param_1 + 0x208) + 8))(param_1 + 0x208);
  }
  else {
    (**(code **)(*(longlong *)(param_1 + 0x208) + 8))();
  }
  uVar13 = ((((((((((((((((((((DAT_1809a67d0 ^ uVar13 * 0x10001ab) * 0x10001ab ^ DAT_1809a67d4) *
                             0x10001ab ^ DAT_1809a67d8) * 0x10001ab ^ DAT_1809a67dc) * 0x10001ab ^
                          DAT_1809a67e0) * 0x10001ab ^ DAT_1809a67e4) * 0x10001ab ^ DAT_1809a67e8) *
                        0x10001ab ^ DAT_1809a67ec) * 0x10001ab ^ DAT_1809a67f0) * 0x10001ab ^
                     DAT_1809a67f4) * 0x10001ab ^ DAT_1809a67f8) * 0x10001ab ^ DAT_1809a67fc) *
                   0x10001ab ^ DAT_1809a6800) * 0x10001ab ^ DAT_1809a6804) * 0x10001ab ^
                DAT_1809a6808) * 0x10001ab ^ DAT_1809a680c) * 0x10001ab ^ DAT_1809a6810) * 0x10001ab
             ^ DAT_1809a6814) * 0x10001ab ^ DAT_1809a6818) * 0x10001ab ^ DAT_1809a681c) * 0x10001ab
           ^ DAT_1809a6820;
  do {
    uVar4 = rdtsc();
    FUN_1815d4478();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar14 = ((uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20)) * -0x73327333;
  if ((uVar14 >> 0x18 ^ uVar14) * -0x51ca7333 < 0x73e17) {
    do {
      local_90 = FUN_18141db20;
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar10 = FUN_18141db20(0,0x73c9);
    if (1 < uVar10) {
      FUN_18113eab0();
    }
  }
  do {
    param_1 = param_1 + lVar19;
    lVar19 = ((~(lVar19 - param_1) + 1U) - param_1 ^ 0xffffffffffffffff) + 1;
    param_1 = param_1 - lVar19;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar14 = (LAB_1809a682c ^
           (DAT_1809a6828 ^ (DAT_1809a6824 ^ uVar13 * 0x10001ab) * 0x10001ab) * 0x10001ab) *
           0x10001ab;
  uVar13 = (uVar14 >> 8 ^ uVar14) >> 2 & 0x1f;
  uVar14 = ~(((uVar13 << 8 | uVar13) << 2 ^ uVar14) << 0x10 | uVar14 >> 0x10) ^ 0xc7b2260e;
  uVar10 = (ulonglong)uVar14;
  uVar13 = (uVar14 >> 0xd ^ uVar14) >> 1 & 0x1fff;
  do {
    cVar15 = -0x3d;
    uVar6 = FUN_1815d30ca();
    if ((((ulonglong)puVar20 & 0x492028c0) != 0) && (cVar15 == '\0')) {
      iVar7 = (uVar6 ^ (uint)&stack0x00000000) + 0xeb62aa59;
      return (ulonglong)CONCAT31((int3)((uint)iVar7 >> 8),(char)iVar7 + '*') & 0xffffffffffffff24;
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  if (((uVar13 << 0xd | uVar13) * 2 ^ uVar14) == 0xceb25d86) {
    lVar18 = (longlong)local_a8;
    puVar20 = auStack_c8;
    do {
      puVar17 = puVar20;
      *(ulonglong *)(puVar17 + -8) = uVar10;
      *(longlong *)(puVar17 + -0x10) = lVar19;
      *(longlong *)(puVar17 + -0x18) = param_1;
      lVar19 = ~uVar11 + 1 + (longlong)register0x00000020;
      uVar11 = ~((longlong)register0x00000020 - lVar19) + 1;
      register0x00000020 = (BADSPACEBASE *)(lVar19 - uVar11);
      uVar11 = ~uVar11 + 1;
      lVar5 = -lVar18;
      param_1 = *(longlong *)(puVar17 + lVar5 + 0x538);
      lVar19 = *(longlong *)(puVar17 + lVar5 + 0x540);
      uVar10 = *(ulonglong *)(puVar17 + lVar5 + 0x548);
      uVar13 = *(uint *)register0x00000020;
      uVar12 = (ulonglong)uVar13;
      uVar13 = (uVar13 + 1) * uVar13 & 0x80000001;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
      }
      puVar20 = puVar17 + lVar5 + 0x550;
    } while (uVar13 != 0);
    if (local_88 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_88 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      uVar12 = (ulonglong)(iVar7 - 1U);
      if (iVar7 - 1U == 0) {
        pcVar3 = *(code **)*local_88;
        *(undefined1 **)(puVar17 + lVar5 + 0x548) = &LAB_1815d4129;
        uVar12 = (*pcVar3)(local_88,1);
      }
    }
    return uVar12;
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x0001815d3857();
  uVar11 = thunk_FUN_1805a9280();
  return uVar11;
}



############ FUN_ 1814f0dd0 size=1315 ############

/* WARNING: Removing unreachable block (ram,0x0001814f0f84) */
/* WARNING: Removing unreachable block (ram,0x0001814f0e66) */
/* WARNING: Removing unreachable block (ram,0x0001814f0fad) */
/* WARNING: Removing unreachable block (ram,0x0001814f0f93) */

undefined1 FUN_1814f0dd0(longlong param_1)

{
  longlong *plVar1;
  undefined1 uVar2;
  ulonglong uVar3;
  longlong lVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  undefined8 uVar8;
  uint uVar9;
  char *pcVar10;
  char *pcVar11;
  longlong *plVar12;
  byte bVar13;
  undefined8 in_R11;
  char *unaff_R13;
  int unaff_retaddr;
  longlong alStack_188 [5];
  undefined *local_138;
  uint local_12c [3];
  undefined *local_120;
  undefined8 local_118;
  uint local_100;
  undefined8 local_f8;
  undefined4 local_e8;
  code *local_e0;
  longlong local_d8;
  char *local_98;
  char acStack_70 [56];
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)&stack0xfffffffffffffea8;
  uVar6 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x1a80) == 0) {
    bVar13 = 0;
  }
  else {
    uVar9 = uVar6 & 0x3ff;
    iVar5 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
    bVar13 = (byte)(((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e);
  }
  iVar5 = (uVar6 & 0x45ff) * (uVar6 & 0x45ff) + 1;
  uVar9 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  if (((int)(uVar9 - 7) >> 0x1f & uVar9 & 0x30) == 0) {
    uVar6 = uVar6 & 0x3bf;
    iVar5 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
    local_100 = (((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) + 0x5971;
  }
  else {
    local_100 = 0x5971;
  }
  local_100 = 0x55b1 << (bVar13 & 0x1f) ^ local_100;
  local_e8 = 0xc60;
  local_118 = 0;
  local_f8 = 0x5ff4;
  local_120 = &DAT_181cb02d4;
  local_138 = &DAT_181cb62c8;
  local_d8 = param_1;
  do {
    puVar7 = local_12c;
    FUN_1814ef900(puVar7,local_12c);
    uVar8 = rdtsc();
    *puVar7 = (uint)uVar8 ^ (uint)((ulonglong)uVar8 >> 0x20);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_12c[0] = (local_12c[0] * -0x3d4d166b >> 0x18 ^ local_12c[0] * -0x3d4d166b) * 0x1a85b9fe;
  if (local_12c[0] < 0x6666667f) {
    do {
      local_e0 = FUN_18141db20;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar3 = FUN_18141db20(0,0x161b);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  pcVar10 = "radiusScaling";
  uVar8 = *(undefined8 *)(param_1 + 0x328);
  local_98 = "radiusScaling";
  FUN_181411d60(uVar8,"radiusScaling",DAT_1824c3ea4);
  FUN_1814f038d();
  plVar1 = (longlong *)&stack0xfffffffffffffea0;
  do {
    plVar12 = plVar1;
    plVar12[-1] = in_R11;
                    /* WARNING: Call to offcut address within same function */
    plVar12[-2] = 0x1814f1181;
    lVar4 = func_0x0001814f11af();
    pcVar11 = pcVar10 + (longlong)unaff_R13;
    pcVar10 = pcVar11 + -(longlong)unaff_R13;
    plVar1 = plVar12 + -1;
  } while (unaff_R13 <= pcVar11);
  uVar2 = in((short)pcVar10);
  acStack_70[param_1] = acStack_70[param_1] - ((byte)uVar8 | (byte)*(undefined4 *)(lVar4 + -0x7d));
  lVar4 = plVar12[4];
  plVar12[4] = lVar4 + 0x1c3;
  plVar12[3] = lVar4 + 0x18090;
  plVar12[2] = lVar4 + -0x3bed5;
  plVar12[1] = lVar4 + 0x36261;
  *plVar12 = lVar4 + -0x5e1af;
  plVar12[-1] = lVar4 + -0x78cf6;
  plVar12[-2] = lVar4 + 0x7ade4;
  plVar12[-3] = lVar4 + -0x61741;
  plVar12[-4] = lVar4 + -0x456e8;
  plVar12[-5] = lVar4 + -0x736e5;
  return uVar2;
}



############ FUN_ 1814ff52b size=1291 ############

void FUN_1814ff52b(uint *param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 uVar3;
  byte extraout_AH;
  longlong in_RAX;
  ulonglong uVar4;
  uint uVar5;
  ulonglong uVar6;
  longlong unaff_RBX;
  longlong unaff_RBP;
  longlong unaff_RSI;
  longlong unaff_RDI;
  ulonglong unaff_R12;
  int *piVar7;
  longlong unaff_R13;
  longlong unaff_R14;
  uint in_stack_00000030;
  undefined8 in_stack_00000038;
  uint in_stack_00000040;
  uint in_stack_00000048;
  undefined8 in_stack_00000050;
  undefined *in_stack_00000058;
  undefined *in_stack_00000070;
  
  piVar7 = (int *)((unaff_R12 ^ 0xffffffffffffffff) + 1);
  uVar4 = in_RAX - (param_2 * 0x4000 + 0x780c997b);
  *param_1 = (uint)(uVar4 - (uVar4 >> 0xc) >> 0xd) & 0xc76a0436;
  uVar5 = (*piVar7 + 1) * *piVar7 & 0x80000001;
  if ((int)uVar5 < 0) {
    uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
  }
  if (uVar5 == 0) {
    piVar1 = (int *)(unaff_RDI + 8 + unaff_RSI);
    *piVar1 = *piVar1 + (in_stack_00000030 ^ 0x223f8ddb);
    piVar1 = (int *)(unaff_RDI + 4 + unaff_RSI);
    *piVar1 = *piVar1 + (in_stack_00000030 ^ 0x59a0fb48);
    uVar4 = *(ulonglong *)(unaff_RDI + 4 + unaff_RSI) ^ 0x3f2491447413e927;
    uVar4 = ((uVar4 << 0x10 | uVar4 >> 0x30) & 0xab5a54a5ab5a54a5 |
            (uVar4 >> 0x10 | uVar4 << 0x30) & 0x54a5ab5a54a5ab5a) + 0x5b677d19671e45a9;
    uVar5 = (uint)((uVar4 >> 0x18 ^ uVar4) >> 9) & 0xffffff;
    uVar6 = ((ulonglong)uVar5 << 0x18 | (ulonglong)uVar5) << 9 ^ uVar4;
    uVar4 = uVar6 >> 2 & 0xcccccccccccccccc | uVar4 << 0x3e |
            (uVar6 & 0xccccccccccccccc) << 2 | uVar4 >> 0x3e;
    uVar4 = (uVar4 >> 0x1e | uVar4 << 0x22) + 0xdcdfc7595eca8a15;
    uVar5 = (uint)((uVar4 >> 0xd ^ uVar4) >> 0x12) & 0xf;
    uVar6 = ((ulonglong)uVar5 << 0xd | (ulonglong)uVar5) << 0x12 ^ uVar4;
    uVar4 = (uVar6 >> 0x10 | uVar4 << 0x30) & 0xb894476bb894476b |
            (uVar6 << 0x10 | uVar4 >> 0x30) & 0x476bb894476bb894;
    *(ulonglong *)(unaff_RDI + 4 + unaff_RSI) = uVar4;
    plVar2 = (longlong *)(unaff_RBX + 4 + unaff_R14);
    *plVar2 = *plVar2 + (ulonglong)((uint)(uVar4 >> 1) & 0x14600920);
    in_stack_00000030 = (uint)(*(ulonglong *)(unaff_RDI + 4 + unaff_RSI) >> 6) & 0x7fffffff;
    in_stack_00000048 = (uint)(*(ulonglong *)(unaff_RDI + 4 + unaff_RSI) >> 0x1c) ^ 0x79661448;
    uVar3 = *(undefined8 *)(unaff_R13 + 0x60);
    *(ulonglong *)(unaff_RBP + -0x60) =
         *(ulonglong *)(unaff_RDI + 4 + unaff_RSI) ^ 0x5bdcf38eb1d46346;
    FUN_1811c2330(uVar3);
    in_stack_00000038 = 0x180000000;
    in_stack_00000050 = 0x72b790;
    in_stack_00000070 = &DAT_18072b790;
    in_stack_00000058 = &DAT_18072c9c0;
    do {
      uVar3 = rdtsc();
      uVar5 = (*piVar7 + 1) * *piVar7 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x166a5029;
    in_stack_00000040 = (uVar5 >> 0x18 ^ uVar5) * -0x166a3d4e;
    if (in_stack_00000040 < 0xea0ea0f) {
      *(undefined8 *)(unaff_RBP + -0x80) = 0;
      do {
        *(code **)(unaff_RBP + -0x80) = FUN_18141db20;
        uVar5 = (*piVar7 + 1) * *piVar7 & 0x80000001;
        if ((int)uVar5 < 0) {
          uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar5 != 0);
      uVar4 = (**(code **)(unaff_RBP + -0x80))(0,0x73b);
      if (1 < uVar4) {
        FUN_18113eab0();
      }
    }
    FUN_1811bf680(*(undefined8 *)(unaff_R13 + 0x60));
                    /* WARNING: Call to offcut address within same function */
    func_0x0001814ff924();
    *(byte *)(unaff_RDI + 0x495d419a) = *(byte *)(unaff_RDI + 0x495d419a) | extraout_AH;
                    /* WARNING: Could not recover jumptable at 0x0001814ffa60. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)(unaff_R13 + -0x5aabb))();
    return;
  }
  piVar7 = (int *)&stack0x0000007c;
                    /* WARNING: Call to offcut address within same function */
  func_0x0001814ff7e0(&stack0x00000030);
  uVar3 = rdtsc();
  *piVar7 = (int)uVar3 + (int)((ulonglong)uVar3 >> 0x20) * 8;
  FUN_1814ff52b();
  return;
}



############ FUN_ 181501ea0 size=2098 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181501f14) */
/* WARNING: Removing unreachable block (ram,0x000181501f28) */

void FUN_181501ea0(longlong param_1)

{
  longlong *plVar1;
  undefined8 uVar2;
  uint uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  code **ppcVar7;
  uint uVar8;
  undefined8 *puVar9;
  longlong lVar10;
  undefined8 *puVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  longlong lVar15;
  ulonglong uVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  int unaff_retaddr;
  undefined1 auStack_1e8 [32];
  uint local_1c8;
  longlong local_1c0;
  uint local_1b8;
  uint local_1b4;
  undefined4 local_1ac;
  undefined8 local_1a8;
  undefined8 local_1a0;
  ulonglong local_198;
  undefined4 local_190;
  longlong local_178;
  undefined4 local_170;
  undefined4 local_164;
  uint local_160;
  code *local_158 [2];
  undefined8 local_148;
  undefined8 uStack_140;
  longlong local_138;
  undefined8 local_130;
  undefined4 local_128;
  undefined4 local_124;
  undefined4 local_118;
  int iStack_114;
  undefined4 uStack_110;
  int iStack_10c;
  longlong local_108;
  undefined8 local_100;
  longlong local_f8;
  undefined4 local_e0;
  undefined4 local_d8;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined1 local_b8 [104];
  ulonglong local_50;
  
  local_50 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  fVar19 = *(float *)(param_1 + 0x160);
  local_164 = 0xf00;
  uVar3 = (uint)&stack0x00000000 & 0x3eff;
  uVar3 = ((uVar3 + 1) * uVar3 + 7) % 0x51;
  local_160 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x9f77 ^ 0x9257;
  local_178 = param_1;
  lVar4 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  fVar19 = *(float *)(lVar4 + 0x88) * fVar19;
  lVar4 = 0x180000000;
  fVar18 = 0.0;
  local_198 = 0;
  local_1a8 = 0x30c;
  local_1a0 = 0x1809c46c4;
  local_1c0 = 0x1809c49d0;
  do {
    uVar2 = rdtsc();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x13ac5029;
  local_1b4 = (uVar3 >> 0x18 ^ uVar3) * -0x12aa7333;
  if (local_1b4 < 0x358ae03) {
    local_158[0] = (code *)0x0;
    do {
      ppcVar7 = local_158;
      FUN_1815010ae(ppcVar7,local_158);
      *ppcVar7 = FUN_1813bba80;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar5 = (*local_158[0])(0,0x5efa);
    if (1 < uVar5) {
      FUN_18113eab0();
    }
  }
  uVar12 = 0;
  local_1ac = 0x7cc1112f;
  local_1c8 = 0x66ae5cc3;
  puVar9 = *(undefined8 **)(param_1 + 0x128);
  local_170 = 0x1b873593;
  uVar5 = (ulonglong)((longlong)*(undefined8 **)(param_1 + 0x130) + (7 - (longlong)puVar9)) >> 3;
  if (*(undefined8 **)(param_1 + 0x130) < puVar9) {
    uVar5 = uVar12;
  }
  if (uVar5 != 0) {
    do {
      fVar17 = (float)FUN_18150a080(*puVar9);
      puVar9 = puVar9 + 1;
      uVar12 = uVar12 + 1;
      fVar18 = fVar18 + fVar17 * fVar19;
    } while (uVar12 != uVar5);
  }
  local_130 = 0;
  local_124 = *(undefined4 *)(local_178 + 0x2c);
  local_128 = *(undefined4 *)(local_178 + 0x28);
  FUN_18051bef0(&local_130,&local_148,
                (int)(((float)*(int *)(local_178 + 0x28) - fVar18) * DAT_1824c3d8c));
  local_118 = (undefined4)local_148;
  iStack_10c = (int)fVar19;
  iStack_114 = (uStack_140._4_4_ - iStack_10c) / 2 + local_148._4_4_;
  uStack_110 = (undefined4)uStack_140;
  local_148 = CONCAT44(iStack_114,(undefined4)local_148);
  uStack_140 = CONCAT44(iStack_10c,(undefined4)uStack_140);
  local_1ac = 0xcc9e2d51;
  local_138 = local_1c0 - local_1a0;
  local_f8 = local_1a0;
  local_1a8 = CONCAT44(local_1a8._4_4_,0xe6546b64);
  do {
    local_1b8 = 0xa784db27;
    local_d8 = 0x22;
    local_108 = 0x181502327;
    FUN_1815006d2();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar8 = local_1b8 << 0x11 | local_1b8 >> 0xf;
  uVar3 = ((local_1b8 & 0x7fff) >> 6 ^ uVar8) & 0xf;
  uVar8 = uVar8 ^ (uVar3 << 0x17 | uVar3);
  uVar8 = ((uVar8 << 0x10 | uVar8 >> 0x10) & 0xf4000bff |
          (uVar8 >> 0x10 | uVar8 << 0x10) & 0xbfff400) ^ 0x5411b34c;
  uVar3 = (uVar8 >> 8 ^ uVar8) >> 5 & 0x7f;
  uVar8 = uVar8 ^ (uVar3 << 8 | uVar3) << 5;
  uVar3 = (uVar8 >> 0x10 | uVar8 << 0x10) & 0xa7f85807 |
          (uVar8 << 0x10 | uVar8 >> 0x10) & 0x5807a7f8;
  uVar3 = (uVar3 << 0x1c | uVar3 >> 4) ^ 0x85d12339;
  do {
    local_e0 = 5;
    local_100 = 0x1815023f7;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar16 = 0;
  lVar10 = (longlong)(int)(uVar3 >> 0x18 | uVar3 << 8);
  lVar15 = 0x1815023f7;
  local_1b8 = 0;
  local_190 = 0;
  plVar1 = (longlong *)(lVar10 + 4 + local_108);
  *plVar1 = *plVar1 + ((ulonglong)dvs_0x2404cbfc_mfort6317_ >> 0x16 & 0x82080204);
  uVar5 = *(ulonglong *)(lVar10 + 4 + local_108);
  uVar3 = ((uint)((uVar5 >> 0x15) >> 8) ^ (uint)(uVar5 >> 8)) & 0x7fff;
  uVar12 = ((ulonglong)uVar3 << 0x15 | (ulonglong)uVar3) << 8 ^ uVar5;
  uVar12 = ((uVar12 >> 2 | uVar5 << 0x3e) & 0x9999999999999999 |
           (uVar12 << 2 | uVar5 >> 0x3e) & 0x6666666666666666) ^ 0x3799ff9444098ff7;
  uVar13 = uVar12 >> 0x37 | uVar12 << 9;
  uVar5 = (ulonglong)((uint)(((uVar12 & 0x7fffffffffffff) >> 0x11 ^ uVar13) >> 0x16) & 0x7fff);
  uVar13 = uVar13 ^ (uVar5 << 0x1a | uVar5) << 0x16;
  uVar14 = (uVar13 << 8 | uVar13 >> 0x38) & 0x36c936c936c936c9;
  uVar12 = (uVar13 >> 8 | (uVar12 >> 0x37) << 0x38) & 0xc936c936c936c936 | uVar14;
  uVar13 = uVar12 >> 0x2e | uVar12 << 0x12;
  uVar5 = (ulonglong)((uint)(((uVar12 & 0x3fffffffffff) >> 8 ^ uVar13) >> 1) & 0x3ffffff);
  uVar13 = uVar13 ^ (uVar5 << 0x1a | uVar5) * 2;
  puVar9 = (undefined8 *)((uVar13 << 2 | (uVar12 & 0x3fffffffffff) >> 0x2c) & 0x6666666666666666);
  uVar5 = (uVar13 >> 2 | uVar13 << 0x3e) & 0x9999999999999999 | (ulonglong)puVar9;
  *(ulonglong *)(lVar10 + 4 + local_108) = uVar5;
  dvs_0x2404cbfc_mfort6317_ =
       (uint *)((longlong)dvs_0x2404cbfc_mfort6317_ +
               (ulonglong)((uint)(uVar5 >> 0x14) & 0x53037182));
  local_1a0 = CONCAT44(local_1a0._4_4_,(int)(*(ulonglong *)(lVar10 + 4 + local_108) >> 0x13)) &
              0xffffffff7fffffff;
  local_1c8 = (uint)(*(ulonglong *)(lVar10 + 4 + local_108) >> 0x12) ^ 0xd7c57993;
  local_198 = *(ulonglong *)(lVar10 + 4 + local_108) ^ 0x2adbbdaad6c8fe1a;
  puVar11 = *(undefined8 **)(local_178 + 0x128);
  uVar5 = (ulonglong)((longlong)*(undefined8 **)(local_178 + 0x130) + (7 - (longlong)puVar11)) >> 3;
  if (*(undefined8 **)(local_178 + 0x130) < puVar11) {
    uVar5 = uVar16;
  }
  if (uVar5 != 0) {
    do {
      fVar18 = (float)FUN_18150a080(*puVar11);
      uVar14 = (ulonglong)(uint)(int)(fVar18 * fVar19);
      puVar6 = (undefined8 *)FUN_1804db9d0(&local_148,local_b8,uVar14);
      puVar9 = &local_c8;
      local_c8 = *puVar6;
      uStack_c0 = puVar6[1];
      FUN_18134c170(*puVar11,puVar9);
      uVar16 = uVar16 + 1;
      puVar11 = puVar11 + 1;
    } while (uVar16 != uVar5);
  }
  do {
    lVar10 = (longlong)puVar9 + lVar4;
    lVar4 = lVar4 - lVar10;
    puVar9 = (undefined8 *)-lVar4;
    lVar4 = lVar10 + lVar4;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  FUN_18150270e(0,puVar9,uVar14,(-lVar15 ^ 0xffffffffffffffffU) + 1);
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18151a4e0 size=1005 ############

/* WARNING: Instruction at (ram,0x00018151a906) overlaps instruction at (ram,0x00018151a905)
    */
/* WARNING: Removing unreachable block (ram,0x00018151a8c5) */
/* WARNING: Removing unreachable block (ram,0x00018151a535) */
/* WARNING: Removing unreachable block (ram,0x00018151a5d6) */
/* WARNING: Removing unreachable block (ram,0x00018151a901) */

char FUN_18151a4e0(undefined8 param_1)

{
  undefined8 uVar1;
  uint uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint *puVar9;
  uint *puVar10;
  uint uVar11;
  longlong lVar12;
  uint uVar13;
  int iVar14;
  uint uVar15;
  int iVar16;
  int unaff_retaddr;
  undefined1 auStack_178 [32];
  undefined4 local_158;
  uint local_154;
  uint uStack_150;
  uint uStack_14c;
  undefined *local_148;
  undefined8 local_140;
  ulonglong uStack_138;
  uint local_130;
  uint uStack_12c;
  undefined4 local_128;
  uint uStack_124;
  uint uStack_120;
  undefined4 uStack_11c;
  undefined8 local_110;
  undefined8 local_108;
  undefined4 local_100;
  int iStack_f8;
  undefined4 local_f0;
  code *local_e8;
  uint auStack_e0 [2];
  int iStack_d8;
  int iStack_d4;
  int iStack_d0;
  uint uStack_cc;
  undefined4 uStack_c8;
  undefined4 uStack_c4;
  undefined8 local_c0;
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  undefined *puStack_b0;
  undefined *puStack_a8;
  undefined *puStack_a0;
  code *pcStack_98;
  int iStack_90;
  int iStack_8c;
  int iStack_88;
  undefined4 uStack_84;
  uint uStack_60;
  uint uStack_5c;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_178;
  uVar2 = 0;
  local_f0 = 0xcc0;
  local_128 = 0x5a0;
  local_148 = &DAT_180839038;
  local_110 = 0xe3bb8ded;
  local_154 = 0x4b232261;
  local_158 = 0xcc9e2d51;
  local_108 = 0x11b873593;
  local_140 = 0x1e6546b64;
  local_c0 = param_1;
  do {
    puVar9 = &local_130;
    func_0x000181519b2d(puVar9,&local_130);
    uVar1 = rdtsc();
    *puVar9 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_130 = (local_130 * -0x7332166b >> 0x18 ^ local_130 * -0x7332166b) * -0x51ca12ab;
  if (local_130 < 0xc30c30f) {
    do {
      local_e8 = FUN_18141db20;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar3 = FUN_18141db20(0,0x5e3d);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  do {
    local_100 = 0x47481029;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar2 = -((uVar2 ^ 0xffffffff) + 1);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018151ae1d();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uStack_b8 = 0x39;
    puStack_b0 = &UNK_18151a957;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uStack_b4 = 0x55;
    puStack_a8 = &UNK_18151aa37;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  lVar12 = (longlong)dvs_0x10933853_mfort6317_ +
           (ulonglong)((uint)((ulonglong)dvs_0x8356f864_mfort6317_ >> 5) & 0x59d14a8);
  do {
    uVar1 = rdtsc();
    auStack_e0[0] = (int)uVar1 - (int)((ulonglong)uVar1 >> 0x20);
    uVar4 = (ulonglong)auStack_e0[0] + ((ulonglong)(auStack_e0[0] >> 5) - 0x417669eb);
    uVar4 = uVar4 + ((uVar4 * 0x10000 | uVar4 >> 0x30) - 0x34b25256);
    uVar3 = uVar4 >> 0x10;
    uVar4 = uVar3 | uVar4 << 0x30;
    uVar3 = (uVar4 ^ (uVar4 >> 0xe | uVar3 << 0x32) + 0x7070a6de) * -0x7ff;
    uVar3 = (uVar3 >> 10 | uVar3 << 0x36) * 0x801 + 0x4afd8522;
    uVar5 = (uint)(uVar3 + ((uVar3 >> 0xf) - 0x51ed1a0) >> 9) & 0x914de355;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  dvs_0x10933853_mfort6317_._4_4_ = (int)((ulonglong)lVar12 >> 0x20);
  dvs_0x10933853_mfort6317_._0_4_ = (int)lVar12;
  dvs_0x10933853_mfort6317_ =
       (uint *)CONCAT44(dvs_0x10933853_mfort6317_._4_4_ + (uVar5 ^ 0xaa30df46),
                        (int)dvs_0x10933853_mfort6317_ + (uVar5 ^ 0x9b536712));
  uVar3 = (((ulonglong)dvs_0x10933853_mfort6317_ & 0x3333333333333333) << 2 |
          (ulonglong)dvs_0x10933853_mfort6317_ >> 2 & 0x3333333333333333) + 0xf65bc7d74c4e9c20;
  uVar4 = (uVar3 >> 0x3d | uVar3 * 8) + 0xe723347faf8b1cf2;
  uVar3 = uVar4 >> 0x2d;
  uVar4 = (uVar4 * 0x80000 | uVar3) + 0xabe8e3c499cfa000;
  uVar3 = ((uVar4 * 0x100 | uVar4 >> 0x38) & 0xde21de21de21de21 |
          (uVar4 >> 8 | uVar3 << 0x38) & 0x21de21de21de21de) ^ 0xcc0d5a1652e8ba5c;
  uVar5 = ((uint)(uVar3 >> 0x1a) ^ (uint)uVar3) & 0x3ffffff;
  dvs_0x10933853_mfort6317_ = (uint *)(((ulonglong)uVar5 << 0x1a | (ulonglong)uVar5) ^ uVar3);
  dvs_0x8356f864_mfort6317_ =
       (uint *)((longlong)dvs_0x8356f864_mfort6317_ +
               (ulonglong)((uint)((ulonglong)dvs_0x10933853_mfort6317_ >> 0xb) & 0x28028900));
  uStack_14c = (uint)((ulonglong)dvs_0x10933853_mfort6317_ >> 0x10) & 0x7fffffff;
  local_154 = (uint)((ulonglong)dvs_0x10933853_mfort6317_ >> 0x18) ^ 0xe5f487e0;
  uVar5 = (uint)((ulonglong)dvs_0x10933853_mfort6317_ ^ 0x2647eeb7a1518e47) ^ local_154;
  uStack_c8 = 0x6b9c874b;
  uStack_c4 = 0x22e4a13f;
  uVar7 = uVar5 & 0x2bfd4af1 ^ local_154;
  uVar5 = uVar5 & 0xd402b50e ^ local_154 ^ uVar7;
  uVar11 = uVar5 & 0xf0f0f0f0 ^ uVar7;
  uVar7 = uVar5 & 0xf0f0f0f ^ uVar7;
  uVar13 = (uint)(((ulonglong)dvs_0x10933853_mfort6317_ ^ 0x2647eeb7a1518e47) >> 0x20);
  uVar8 = (uVar13 >> 0x14 ^ uVar13) >> 3 & 0x1ff;
  uVar5 = (uVar11 >> 6 ^ uVar11) >> 2 & 3;
  uVar6 = (uVar7 >> 0x16 ^ uVar7) >> 5 & 3;
  uVar5 = (uVar5 << 6 | uVar5) << 2 ^ uVar11 ^ 0x27796b0f;
  uVar15 = ~(uVar5 & 0x8ba8afcf ^ 0x27796b0f);
  uVar5 = ~(uVar5 & 0x74575030 ^ 0x27796b0f);
  uVar11 = (uVar5 >> 2 | uVar5 << 0x1e) & 0x66666666;
  uVar3 = (ulonglong)uVar11;
  uVar11 = (uVar5 << 2 | uVar5 >> 0x1e) & 0x99999999 | uVar11;
  uVar5 = ~((uVar8 << 0x14 | uVar8) << 3 ^ uVar13);
  uVar5 = (uVar5 >> 2 | uVar5 << 0x1e) & 0x99999999 | (uVar5 << 2 | uVar5 >> 0x1e) & 0x66666666;
  uVar8 = uVar5 << 5 | uVar5 >> 0x1b;
  uVar5 = uVar8 ^ (uVar11 << 0x15 | uVar11 >> 0xb);
  uVar6 = ~((uVar6 << 0x16 | uVar6) << 5 ^ uVar7);
  iStack_f8 = (uVar5 & 0x55555555 ^ uVar8) + 0x26edbe0b;
  uVar8 = uVar5 & 0xaaaaaaaa ^ uVar8;
  iVar14 = ((uVar15 >> 4 & 0xf0f0f0f0 | uVar15 << 0x1c | (uVar15 & 0xf0f0f0) << 4 | uVar15 >> 0x1c)
            >> 2 | (uVar15 >> 0x1c) << 0x1e) + 0xd1b1c41;
  iVar16 = (((uVar6 >> 8 | uVar6 << 0x18) & 0xdd22dd22 | (uVar6 << 8 | uVar6 >> 0x18) & 0x22dd22dd)
            << 2 | (uVar6 & 0xff) >> 6) + 0xd1de1f70;
  uStack_cc = uVar8 ^ 0x724d0b9e;
  uStack_138 = CONCAT44(uVar13,uVar8) ^ 0x724d0b9e;
  uStack_150 = uVar2;
  uStack_124 = uVar2;
  iStack_d8 = iStack_f8;
  iStack_d4 = iVar14;
  iStack_d0 = iVar16;
  do {
    puVar9 = auStack_e0;
    puVar10 = &uStack_120;
    func_0x00018151945c(puVar10,puVar9,uVar3);
    uVar1 = rdtsc();
    uVar2 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20);
    *puVar9 = uVar2;
    lVar12 = (ulonglong)uVar2 * 0xa02 + 0x71563471;
    uVar4 = lVar12 * 0x4000 ^ lVar12 * 0x400000 + 0x369364d0U;
    *puVar10 = ((uint)uVar4 ^ (uint)(uVar4 >> 0xb)) & 0x7fffffff;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uStack_120 = uStack_120 ^ uStack_14c;
  if (uStack_120 < 0x270270) {
    do {
      puVar9 = &uStack_12c;
      func_0x00018151abd0();
      *puVar9 = 0xe7fdc5a2;
                    /* WARNING: Call to offcut address within same function */
      func_0x00018151a57d();
      uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    uVar2 = (((uStack_12c << 0xc | uStack_12c >> 0x14) ^ 0x6de8409) << 4 |
            (uStack_12c & 0xfffff) >> 0x10) + 0x4d233bff;
    uVar2 = (uVar2 >> 4 | uVar2 * 0x10000000) + 0xd21c1ec9;
    uStack_12c = ~((uVar2 * 0x2000 | uVar2 >> 0x13) ^ 0xa4c9fb92);
    iStack_90 = iStack_f8;
    uStack_84 = (undefined4)uStack_138;
    do {
      puStack_a0 = &UNK_18151b095;
      uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    uStack_11c = 0xff72c92b;
    iStack_8c = iVar14;
    iStack_88 = iVar16;
    FUN_180c479c0(&iStack_90,&uStack_60);
    iVar14 = 7;
    do {
      uVar5 = (uStack_5c ^ uStack_60) & 0x4efd1df ^ uStack_60;
      uVar6 = (uStack_5c ^ uStack_60) & 0xfb102e20 ^ uStack_60 ^ uVar5;
      uVar2 = ~(uVar6 & 0x54d3484b ^ uVar5);
      uVar5 = uVar2 ^ ~(uVar6 & 0xab2cb7b4 ^ uVar5);
      uVar6 = uVar5 & 0x848b99fe ^ uVar2;
      uVar2 = uVar5 & 0x7b746601 ^ uVar2;
      uVar5 = ((uVar6 << 4 | uVar6 >> 0x1c) & 0xc3c3c3c3 | (uVar6 >> 4 | uVar6 << 0x1c) & 0x3c3c3c3c
              ) + 0x36fae1ff;
      uVar2 = ((uVar2 << 0x10 | uVar2 >> 0x10) & 0x96b5694a |
              (uVar2 >> 0x10 | uVar2 << 0x10) & 0x694a96b5) + 0xf365dac8 ^ uVar5;
      uVar6 = uVar2 & 0x58f8e34b ^ uVar5;
      uVar5 = uVar2 & 0xa7071cb4 ^ uVar5;
      uStack_5c = (uVar6 >> 6 | uVar6 << 0x1a) ^ 0x3825b93f;
      uStack_60 = (uVar5 << 0x18 | uVar5 >> 8) + 0xc3118cdd;
      iVar14 = iVar14 + -1;
    } while (-1 < iVar14);
    uVar2 = ((uStack_60 ^ 0x69796d91) << 5 | (uStack_60 ^ 0x69796d91) >> 0x1b) + 0xc5719f61;
    uVar2 = (uVar2 * 0x10000 | uVar2 >> 0x10) + 0xa9e5c766;
    uVar2 = (uVar2 >> 10 | uVar2 * 0x400000) ^ 0xfd7ba52;
    if (((uVar2 << 10 | uVar2 >> 0x16) ^ 0xe70b96d7 ^ uStack_12c) + uStack_5c != local_154) {
      do {
        pcStack_98 = FUN_180bc2900;
        uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar2 < 0) {
          uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar2 != 0);
      FUN_180bc2900();
      do {
                    /* WARNING: Call to offcut address within same function */
        func_0x00018151a51b();
        uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar2 < 0) {
          uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar2 != 0);
    }
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x00018151b2e6();
  return cRam04eb24048b4c8190 + '`';
}



############ FUN_ 1815232c0 size=706 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001815233e3) */
/* WARNING: Removing unreachable block (ram,0x0001815233ff) */
/* WARNING: Removing unreachable block (ram,0x000181523404) */

void FUN_1815232c0(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  code **ppcVar4;
  undefined4 *puVar5;
  int unaff_retaddr;
  undefined1 auStack_178 [72];
  uint local_130;
  undefined4 local_108 [4];
  undefined4 local_f8;
  undefined4 local_f4;
  code *local_f0;
  undefined8 local_e8;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_178;
  local_f4 = 0x370;
  local_f8 = 0x3c0;
  local_e8 = param_1;
  do {
    uVar1 = rdtsc();
    local_130 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_181521c26();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_130 = (local_130 * -0x166aa42f >> 0x18 ^ local_130 * -0x166aa42f) * -0x733200af;
  if (local_130 < 0x7fffffff) {
    local_f0 = (code *)0x0;
    do {
      ppcVar4 = &local_f0;
      FUN_18152238d(ppcVar4,&local_f0);
      *ppcVar4 = FUN_1813bba80;
      FUN_181523d05();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = (*local_f0)();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    puVar5 = local_108;
    FUN_1815239fa();
    *puVar5 = 0xa90dc4f7;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  FUN_1815235bb();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18152d8e0 size=1810 ############

void FUN_18152d8e0(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  longlong lVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  int *piVar7;
  longlong *plVar8;
  undefined4 *puVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  undefined8 uVar12;
  IMAGE_DOS_HEADER *pIVar13;
  longlong lVar14;
  int unaff_retaddr;
  undefined1 auStack_198 [32];
  undefined8 local_178;
  uint local_170 [2];
  undefined1 *local_168;
  uint local_160 [2];
  uint local_158;
  undefined4 *local_150;
  undefined8 local_148;
  undefined4 *local_140;
  uint local_138;
  undefined4 auStack_134 [3];
  undefined8 local_128;
  int local_120;
  undefined1 local_11c [4];
  uint local_118;
  undefined4 local_114;
  code *local_110;
  ulonglong local_108;
  undefined4 local_fc;
  undefined4 local_f8;
  longlong local_f0;
  longlong local_e8;
  undefined8 local_e0;
  longlong local_d8;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined4 local_78 [14];
  ulonglong local_40;
  
  local_a8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_198;
  local_114 = 0;
  local_148 = param_3;
  local_128 = param_2;
  local_a0 = param_2;
  do {
    plVar8 = &local_f0;
    puVar9 = &local_fc;
    puVar6 = local_170;
    FUN_18152c8fe();
    *puVar6 = 0xfccb142c;
    *puVar9 = 0x18;
    *plVar8 = 0x18152d957;
    FUN_18152e059();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((local_170[0] << 0x10 | local_170[0] >> 0x10) & 0xd3ba2c45 |
          (local_170[0] >> 0x10 | local_170[0] << 0x10) & 0x2c45d3ba) >> 1;
  uVar4 = (local_170[0] >> 0x10) << 0x1f | uVar3;
  uVar5 = uVar4 ^ 0x1d55bcac;
  uVar3 = ((uVar5 << 2 | uVar4 >> 0x1e) & 0x99999999 | (uVar5 >> 2 | uVar3 << 0x1e) & 0x66666666) ^
          0xa3a470c2;
  uVar3 = (uVar3 << 4 | uVar3 >> 0x1c) + 0x39f12b82;
  local_170[0] = ((uVar3 >> 0x10 | uVar3 * 0x10000) & 0xe7d61829 |
                 (uVar3 * 0x10000 | uVar3 >> 0x10) & 0x1829e7d6) ^ 0xc880fa8f;
  do {
    local_138 = 0x69f1bf52;
    local_f8 = 0x2b;
    local_e8 = 0x18152da17;
    FUN_18152be66();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar4 = local_138 >> 4 & 0xf0f0f0f0 | local_138 << 0x1c |
          (local_138 & 0xf0f0f0) << 4 | local_138 >> 0x1c;
  uVar3 = (uVar4 >> 6 ^ uVar4) >> 0xf & 7;
  uVar3 = ((uVar3 << 6 | uVar3) << 0xf ^ uVar4) + 0x1d5d088f;
  uVar3 = ((uVar3 >> 4 | uVar3 * 0x10000000) & 0xd2d2d2d2 |
          (uVar3 * 0x10 | uVar3 >> 0x1c) & 0x2d2d2d2d) ^ 0xf01f7c1d;
  uVar3 = uVar3 >> 2 & 0xcccccccc | uVar3 << 0x1e | (uVar3 & 0xccccccc) << 2 | uVar3 >> 0x1e;
  uVar4 = uVar3 ^ 0xbaa7057;
  uVar3 = (uVar4 << 4 | uVar3 >> 0x1c) & 0xd2d2d2d2 | (uVar4 >> 4 | uVar4 << 0x1c) & 0x2d2d2d2d;
  local_f0 = (int)local_170[0] + local_f0;
  lVar14 = ((longlong)(int)(uVar3 << 2) & 0xffffffffccccccccU | (ulonglong)(uVar3 >> 2 & 0x33333333)
           ) + local_e8;
  local_170[0] = 0;
  local_138 = 0;
  uVar10 = (ulonglong)((uint)(*(ulonglong *)(lVar14 + 4) >> 1) & 0x4266604) + 0xc1be4f49c65c8cdd +
           *(longlong *)(local_f0 + 4);
  uVar10 = (uVar10 >> 4 | uVar10 << 0x3c) & 0xa5a5a5a5a5a5a5a5 |
           (uVar10 * 0x10 | uVar10 >> 0x3c) & 0x5a5a5a5a5a5a5a5a;
  uVar3 = (uint)((uVar10 >> 0x1b ^ uVar10) >> 2) & 0x1fffff;
  uVar10 = ((ulonglong)uVar3 << 0x1b | (ulonglong)uVar3) << 2 ^ uVar10;
  uVar11 = (uVar10 >> 0x28 | uVar10 << 0x18) ^ 0x2315f53455deb9e8;
  uVar3 = (uint)((uVar11 >> 0x14 ^ uVar11) >> 9) & 0x7ffff;
  uVar11 = ((ulonglong)uVar3 << 0x14 | (ulonglong)uVar3) << 9 ^ uVar11;
  uVar10 = (uVar11 >> 2 | (uVar10 >> 0x28) << 0x3e) & 0x9999999999999999 |
           (uVar11 << 2 | (uVar10 & 0xffffffffff) >> 0x26) & 0x6666666666666666;
  uVar10 = (uVar10 >> 0xe | uVar10 << 0x32) + 0x764b6b87c7442346;
  *(ulonglong *)(local_f0 + 4) = uVar10;
  plVar8 = (longlong *)(lVar14 + 4);
  *plVar8 = *plVar8 + (ulonglong)((uint)(uVar10 >> 0x1a) & 0x62828400);
  local_118 = (uint)(*(ulonglong *)(local_f0 + 4) >> 0x19) & 0x7fffffff;
  local_158 = (uint)(*(ulonglong *)(local_f0 + 4) >> 0x1e) ^ 0x84c35b0d;
  local_108 = *(ulonglong *)(local_f0 + 4) ^ 0x775256a596da04e5;
  local_150 = &DAT_180739278;
  local_178 = 0x1807397ac;
  local_168 = &DAT_c6a4a793;
  lVar14 = 0x534;
  local_140 = local_150;
  local_d8 = lVar14;
  do {
    piVar7 = &local_120;
    FUN_18152fa05();
    *piVar7 = 0x7f494006;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((local_120 + 0x4c28750bU) * 0x40000000 | local_120 + 0x4c28750bU >> 2) ^ 0x7082275d;
  local_150 = (undefined4 *)
              CONCAT44(local_150._4_4_,
                       ~(~((uVar3 >> 0x19 | uVar3 << 7) + 0x9159a6d1) ^ 0x6284c885) + 0xfc4e12c5);
  do {
    lVar2 = FUN_18152faeb(0xf924);
    lVar14 = (lVar2 + lVar14) - ((lVar14 - (lVar2 + lVar14) ^ 0xffffffffffffffffU) + 1);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar1 = rdtsc();
    uVar4 = (uint)((ulonglong)uVar1 >> 0x20);
    uVar12 = CONCAT44((int)((ulonglong)local_160 >> 0x20),uVar4);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((uint)uVar1 ^ uVar4) * -0x166a5029;
  local_160[0] = (uVar3 >> 0x18 ^ uVar3) * -0x7a143595;
  if (local_160[0] < 0x4e04e07) {
    do {
      uVar12 = 0x4cc3;
      local_110 = FUN_181194940;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar10 = FUN_181194940(0,0x4cc3);
    if (1 < uVar10) {
      FUN_18113eab0();
    }
  }
  local_178 = 0xa02981a388ff7464;
  if (lVar14 == 0) {
    local_168 = (undefined1 *)CONCAT44(local_168._4_4_,0x66bd37c4);
    do {
      FUN_18152fa05(0xf924);
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    auStack_134[0] = 0x379b87dc;
    FUN_1814d65bc(auStack_134,uVar12);
    return;
  }
  puVar9 = local_140;
  if (-1 < (longlong)IMAGE_DOS_HEADER_180000000._0_8_) {
    local_e0 = 0x2621fc0;
    lVar14 = IMAGE_DOS_HEADER_180000000._0_8_;
    pIVar13 = &IMAGE_DOS_HEADER_180000000;
    do {
      if (local_140 < IMAGE_DOS_HEADER_180000000.e_magic + lVar14 + 8) {
        if (-1 < lVar14) {
          plVar8 = (longlong *)(lVar14 + 0x180000000);
          if (plVar8 < local_140 + 1) {
            local_78[0] = *local_140;
            goto LAB_18152e010;
          }
        }
        break;
      }
      lVar14._0_2_ = pIVar13->e_cparhdr;
      lVar14._2_2_ = pIVar13->e_minalloc;
      lVar14._4_2_ = pIVar13->e_maxalloc;
      lVar14._6_2_ = pIVar13->e_ss;
      pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    } while (-1 < lVar14);
  }
  goto LAB_18152e034;
  while (plVar8 = (longlong *)(lVar14 + 0x180000000), plVar8 < local_140 + 1) {
LAB_18152e010:
    *(longlong *)(&stack0x00017fffff88 + (lVar14 - (longlong)local_140)) = *plVar8 + -0x180000000;
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    lVar14 = *(longlong *)pIVar13;
    puVar9 = local_78;
    if (lVar14 < 0) break;
  }
LAB_18152e034:
  FUN_18152e05a(0xf924,puVar9,local_11c);
  return;
}



############ FUN_ 181535a60 size=2160 ############

/* WARNING: Instruction at (ram,0x000181535cb4) overlaps instruction at (ram,0x000181535cb2)
    */
/* WARNING: Removing unreachable block (ram,0x000181535bc7) */
/* WARNING: Removing unreachable block (ram,0x000181535abd) */
/* WARNING: Removing unreachable block (ram,0x000181535c6d) */
/* WARNING: Removing unreachable block (ram,0x000181535acc) */
/* WARNING: Removing unreachable block (ram,0x000181535bd3) */

void FUN_181535a60(undefined8 param_1,undefined8 param_2)

{
  int *piVar1;
  longlong *plVar2;
  byte *pbVar3;
  undefined8 uVar4;
  int iVar5;
  uint uVar6;
  ulonglong uVar7;
  longlong lVar8;
  uint uVar9;
  char cVar11;
  ulonglong uVar10;
  undefined1 *puVar12;
  undefined1 *puVar13;
  uint uVar14;
  uint uVar15;
  longlong lVar16;
  longlong lVar17;
  ulonglong unaff_R12;
  undefined1 uVar18;
  undefined1 uVar19;
  bool bVar20;
  int unaff_retaddr;
  undefined1 auStack_1f8 [56];
  int local_1c0;
  uint local_1bc;
  uint local_1b4;
  undefined8 local_1b0;
  int local_1a8;
  uint local_19c;
  undefined8 local_190;
  undefined8 local_188;
  undefined *local_180;
  uint local_174;
  uint local_170;
  code *local_168;
  undefined8 local_160;
  ulonglong local_158;
  undefined4 local_140;
  longlong local_138;
  longlong local_130;
  undefined4 local_128;
  undefined8 local_110;
  undefined1 local_108 [200];
  ulonglong local_40;
  
  puVar12 = auStack_1f8;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  uVar6 = (uint)&stack0x00000000;
  uVar9 = uVar6 & 0x1ff;
  iVar5 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  uVar14 = ((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e |
           ((uVar6 & 0x18ff) * (uVar6 & 0x18ff) * 0x10 + 4) % 0x13;
  uVar9 = uVar6 & 0x2ff;
  uVar15 = uVar6 & 0x33f;
  local_170 = 0x3964 - (((uVar15 + 2) * (uVar15 + 1) * uVar15) % 3 <<
                       ((char)((ulonglong)
                               ((longlong)(int)((uVar9 + 2) * (uVar9 + 1) * uVar9) * 0x55555556) >>
                              0x20) * -3 & 0x1fU)) ^ ((int)(-uVar14 | uVar14) >> 0x1f) * -0x37f4;
  uVar6 = uVar6 & 0x2bf;
  local_19c = (((uVar6 + 2) * (uVar6 + 1) * uVar6) % 3 | 0x98c8) ^ 0x92d8;
  local_160 = param_2;
  local_110 = param_1;
  FUN_18134c250(param_1,local_108);
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    cVar11 = -0x1a;
    iVar5 = FUN_18153595f();
    if (cVar11 == '\0') {
      piVar1 = (int *)((ulonglong)(0xf0834802 - iVar5) - 0x73);
      *piVar1 = *piVar1 + -1;
    }
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    local_1c0 = 0x94ceded7;
    local_140 = 0x51;
    local_138 = 0x181535d07;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_1c0 = 0x10f4b5d;
  do {
    local_1a8 = 0xce207ce;
    local_128 = 0x3c;
    local_130 = 0x181535da8;
    FUN_181534c5a();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar17 = (longlong)local_1c0;
  uVar6 = local_1a8 + 0x16890ca4;
  uVar9 = local_1a8 << 0x1e;
  local_1c0 = 0;
  local_1a8 = 0;
  uVar9 = ((uVar6 >> 2 | uVar9) & 0x99999999 | (uVar6 * 4 | uVar6 >> 0x1e) & 0x66666666) +
          0x70ff9b48;
  uVar6 = (uVar9 * 0x100 | uVar9 >> 0x18) & 0x837c837c |
          (uVar9 >> 8 | uVar9 * 0x1000000) & 0x7c837c83;
  uVar9 = (uVar6 >> 0xf ^ uVar6) >> 9 & 0x7f;
  uVar9 = uVar6 ^ (uVar9 << 0xf | uVar9) << 9;
  uVar9 = (uVar9 << 8 | uVar9 >> 0x18) & 0x946b946b | (uVar9 >> 8 | uVar6 << 0x18) & 0x6b946b94;
  uVar6 = (uVar9 & 0xf0f0f0f) << 4 | uVar9 >> 4 & 0xf0f0f0f;
  uVar9 = (uVar6 >> 1 ^ uVar6) >> 3 & 1;
  lVar16 = (longlong)(int)(((uVar9 * 2 | uVar9) << 3 ^ uVar6) + 0x31c17a50);
  plVar2 = (longlong *)(lVar17 + 4 + local_138);
  *plVar2 = *plVar2 + (*(ulonglong *)(lVar16 + 4 + local_130) >> 10 & 0xa0022864);
  uVar7 = *(ulonglong *)(lVar17 + 4 + local_138) ^ 0xf07e0b052d800432;
  uVar7 = (uVar7 << 0x20 | uVar7 >> 0x20) ^ 0xbebf0469e857bad5;
  uVar10 = (uVar7 & 0x3333333333333333) << 2 | uVar7 >> 2 & 0x3333333333333333;
  uVar10 = ((uVar10 << 2 | (uVar7 & 0x3fffffffffffffff) >> 0x3c) & 0x9999999999999999 |
           (uVar10 >> 2 | (uVar7 >> 2) << 0x3e) & 0x6666666666666666) + 0x939c269077439e15;
  uVar7 = (ulonglong)((uint)((uVar10 >> 0x1c ^ uVar10) >> 0x14) & 0xfff);
  uVar7 = (uVar10 ^ (uVar7 << 0x1c | uVar7) << 0x14) + 0x42ad8cb4546b5da1;
  uVar7 = (uVar7 * 0x100 | uVar7 >> 0x38) & 0xe619e619e619e619 |
          (uVar7 >> 8 | uVar7 << 0x38) & 0x19e619e619e619e6;
  *(ulonglong *)(lVar17 + 4 + local_138) = uVar7;
  plVar2 = (longlong *)(lVar16 + 4 + local_130);
  *plVar2 = *plVar2 + (ulonglong)((uint)uVar7 & 0x2629af08);
  local_174 = (uint)(*(ulonglong *)(lVar17 + 4 + local_138) >> 0x1b) & 0x7fffffff;
  local_1b4 = (uint)(*(ulonglong *)(lVar17 + 4 + local_138) >> 0x14) ^ 0x92ae13e2;
  local_158 = *(ulonglong *)(lVar17 + 4 + local_138) ^ 0x2bb8e3899cf47b52;
  lVar17 = 0x180000000;
  local_188 = 0;
  local_190 = 0xb285f0;
  local_180 = &DAT_180b285f0;
  local_1b0 = 0x180b299d8;
  lVar16 = local_138;
  do {
    uVar4 = rdtsc();
    local_1bc = (uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20);
    FUN_1815370a8();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_1bc = local_1bc * 0x5bd1ed55 >> 0x18 ^ local_1bc * 0x5bd1ed55;
  uVar7 = (ulonglong)local_1bc;
  local_1bc = local_1bc * -0x3d4d12ab;
  puVar13 = auStack_1f8;
  if (0xfc0fc0e < local_1bc) goto LAB_18153619c;
  do {
    local_168 = FUN_1813bba80;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    uVar7 = (ulonglong)uVar9;
  } while (uVar9 != 0);
  lVar8 = FUN_1813bba80(0,0xb00d);
  uVar18 = lVar8 == 0;
  uVar19 = lVar8 == 1;
  do {
    puVar13 = puVar12;
    if (!(bool)uVar18 && !(bool)uVar19) {
      *(undefined8 *)(puVar12 + -8) = 0x18153619c;
      FUN_18113eab0();
    }
LAB_18153619c:
    *(undefined8 *)(puVar13 + 0x70) = 0xdaca55e614613f2;
    *(int *)(puVar13 + 0x68) = (int)*(undefined8 *)(puVar13 + 0x70);
    *(longlong *)(puVar13 + -8) = lVar16;
    *(undefined8 *)(puVar13 + -0x10) = 0x180000000;
    puVar12 = puVar13 + -0x18;
    *(BADSPACEBASE **)(puVar13 + -0x18) = register0x00000020;
    uVar18 = lVar17 + 0x85b0a35U < 0x85b0a35;
    bVar20 = SBORROW8(lVar17 + 0x85b0a35U,0x85b0a35);
    uVar19 = lVar17 == 0;
                    /* WARNING: Call to offcut address within same function */
    *(undefined8 *)(puVar13 + -0x20) = 0x1815361e0;
    uVar10 = func_0x0001815361f0();
    if (bVar20) {
      uVar18 = false;
      uVar19 = (uVar10 & unaff_R12) == 0;
    }
  } while (!(bool)uVar18 && !(bool)uVar19);
  pbVar3 = (byte *)(uVar7 * 4 + 0x14);
  *pbVar3 = *pbVar3 | 0x24;
  *(int *)(puVar13 + -0x18) = *(int *)(puVar13 + -0x18) + 0x16d;
  *(longlong *)(puVar13 + -0x20) = lVar16 + -0x2097;
  *(longlong *)(puVar13 + -0x28) = lVar16 + 0xca9;
  *(longlong *)(puVar13 + -0x30) = lVar16 + 0x6316;
  *(longlong *)(puVar13 + -0x38) = lVar16 + 0xb79;
  *(longlong *)(puVar13 + -0x40) = lVar16 + -0x143c;
  *(longlong *)(puVar13 + -0x48) = lVar16 + 0xb79;
  *(longlong *)(puVar13 + -0x50) = lVar16 + 0xb79;
  *(longlong *)(puVar13 + -0x58) = lVar16 + 0x7d08;
  *(longlong *)(puVar13 + -0x60) = lVar16 + 0xc37;
  *(longlong *)(puVar13 + -0x68) = lVar16 + 0x2a23;
  return;
}



############ FUN_ 181537510 size=961 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000181537895) overlaps instruction at (ram,0x000181537894)
    */
/* WARNING: Removing unreachable block (ram,0x00018153798f) */
/* WARNING: Removing unreachable block (ram,0x000181537915) */
/* WARNING: Removing unreachable block (ram,0x000181537901) */
/* WARNING: Removing unreachable block (ram,0x00018153790a) */
/* WARNING: Removing unreachable block (ram,0x000181537895) */
/* WARNING: Removing unreachable block (ram,0x000181537897) */
/* WARNING: Removing unreachable block (ram,0x000181537b7e) */
/* WARNING: Removing unreachable block (ram,0x0001815378fc) */

void FUN_181537510(longlong param_1)

{
  undefined4 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  byte bVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  longlong *plVar7;
  uint uVar8;
  IMAGE_DOS_HEADER *pIVar9;
  longlong lVar10;
  int iVar11;
  uint *puVar12;
  IMAGE_DOS_HEADER *pIVar13;
  longlong lVar14;
  int unaff_retaddr;
  undefined1 auStack_1a8 [32];
  undefined1 local_188;
  int local_184;
  undefined8 local_180;
  uint local_170;
  int local_168;
  undefined8 local_160;
  undefined *local_158;
  uint uStack_150;
  uint uStack_14c;
  undefined8 local_138;
  longlong *local_130;
  uint local_128;
  undefined4 local_124;
  code *local_120;
  uint local_118;
  int local_114;
  longlong local_f8;
  longlong *local_98;
  undefined1 local_90 [40];
  undefined4 uStack_68;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  uVar8 = (uint)&stack0x00000000 & 0x17f;
  iVar11 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  local_128 = 0x8b61 << ((byte)(((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e) &
                        0x1f) ^ 0x80e1;
  local_130 = (longlong *)(param_1 + 0x1e8);
  local_124 = 0xb80;
  puVar5 = (undefined8 *)(**(code **)(*local_130 + 0x10))(local_130,&local_98);
  local_188 = (**(code **)(*(longlong *)*puVar5 + 0x28))((longlong *)*puVar5,puVar5 + 1);
  (**(code **)(*local_98 + 0xb0))(local_98,local_90);
  do {
    local_118 = 0xb027ead1;
    FUN_181538c03();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = ((local_118 ^ 0xe338008d) >> 0x1b | (local_118 ^ 0xe338008d) << 5) ^ 0x4ad70293;
  uVar8 = (uVar8 >> 1 | (uint)((uVar8 & 1) != 0) << 0x1f) + 0x1bd5ba8c;
  local_114 = ~((uVar8 * 0x20000 | uVar8 >> 0xf) + 0xac5cc61c) + 0x3dde4382;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar3 = rdtsc();
    local_170 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_181538b27();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_170 = (local_170 * -0x13ac12ab >> 0x18 ^ local_170 * -0x13ac12ab) * 0x1a85c2b2;
  if (local_170 < 0x5555557f) {
    do {
      local_120 = FUN_18141db20;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar6 = FUN_18141db20(0,0xcdcf);
    if (1 < uVar6) {
      FUN_18113eab0();
    }
  }
  pIVar9 = &IMAGE_DOS_HEADER_180000000;
  uStack_14c = 0x8c606025;
  local_158 = &DAT_181c72350;
  local_138 = 0xcc9e2d51;
  lVar14 = 0;
  local_f8 = 0x3ff8;
  local_168 = 0x1b873593;
  local_184 = -0x19ab949c;
  do {
                    /* WARNING: Bad instruction - Truncating control flow here */
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_160 = 0x9f4e94447a78f294;
  local_180 = 0x17a78f294;
code_r0x000181537a10:
  puVar1 = (undefined4 *)(local_158 + lVar14);
  if ((pIVar9 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar10._0_1_ = pIVar9->e_magic[0], lVar10._1_1_ = pIVar9->e_magic[1],
     lVar10._2_2_ = pIVar9->e_cblp, lVar10._4_2_ = pIVar9->e_cp, lVar10._6_2_ = pIVar9->e_crlc,
     -1 < lVar10)) {
    local_160 = 0x2621fc0;
    do {
      if (puVar1 < IMAGE_DOS_HEADER_180000000.e_magic + lVar10 + 8) {
        if (-1 < lVar10) {
          plVar7 = (longlong *)(lVar10 + 0x180000000);
          if (plVar7 < puVar1 + 1) {
            uStack_68 = *puVar1;
            pIVar13 = pIVar9;
            goto code_r0x000181537a90;
          }
        }
        break;
      }
      lVar10._0_2_ = pIVar9->e_cparhdr;
      lVar10._2_2_ = pIVar9->e_minalloc;
      lVar10._4_2_ = pIVar9->e_maxalloc;
      lVar10._6_2_ = pIVar9->e_ss;
      pIVar9 = (IMAGE_DOS_HEADER *)&pIVar9->e_cparhdr;
    } while (-1 < lVar10);
  }
  goto code_r0x000181537ac3;
  while (plVar7 = (longlong *)(lVar10 + 0x180000000), plVar7 < puVar1 + 1) {
code_r0x000181537a90:
    lVar2 = lVar10 - (longlong)puVar1;
    lVar10 = *(longlong *)&pIVar13->e_cparhdr;
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    *(longlong *)(&stack0x00017fffff98 + lVar2) = *plVar7 + -0x180000000;
    if (lVar10 < 0) break;
  }
code_r0x000181537ac3:
  do {
    puVar12 = &uStack_150;
    uVar8 = func_0x000181539ae0();
    *puVar12 = uVar8;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uStack_150 = (uStack_150 * (int)local_138 * 0x8000 | uStack_150 * (int)local_138 >> 0x11) *
               local_168;
  uStack_14c = local_184 +
               ((uStack_14c ^ uStack_150) << 0xd | (uStack_14c ^ uStack_150) >> 0x13) * 5;
  bVar4 = (byte)uStack_14c & 0x4f;
  lVar14 = lVar14 + (((longlong)
                      (0xdebc << (-(bVar4 * bVar4 * (bVar4 + 1) * (bVar4 + 1) & 3) & 0x1f)) ^
                     0xdbbcU) - 0x4fc);
  if (local_f8 == lVar14) {
    func_0x000181537be6();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  goto code_r0x000181537a10;
}



############ FUN_ 181540830 size=4883 ############

/* WARNING: Instruction at (ram,0x000181540ece) overlaps instruction at (ram,0x000181540eca)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181541748) */
/* WARNING: Removing unreachable block (ram,0x00018154173b) */
/* WARNING: Removing unreachable block (ram,0x00018154171a) */
/* WARNING: Removing unreachable block (ram,0x00018154171d) */
/* WARNING: Removing unreachable block (ram,0x000181541558) */
/* WARNING: Removing unreachable block (ram,0x00018154129f) */
/* WARNING: Removing unreachable block (ram,0x000181541317) */
/* WARNING: Removing unreachable block (ram,0x00018154089e) */
/* WARNING: Removing unreachable block (ram,0x000181540b85) */
/* WARNING: Removing unreachable block (ram,0x0001815412ce) */
/* WARNING: Removing unreachable block (ram,0x00018154128b) */
/* WARNING: Removing unreachable block (ram,0x00018154130c) */
/* WARNING: Removing unreachable block (ram,0x0001815415c4) */
/* WARNING: Removing unreachable block (ram,0x000181541702) */
/* WARNING: Removing unreachable block (ram,0x000181541726) */
/* WARNING: Removing unreachable block (ram,0x00018154172b) */
/* WARNING: Removing unreachable block (ram,0x00018154185e) */
/* WARNING: Removing unreachable block (ram,0x000181541863) */
/* WARNING: Removing unreachable block (ram,0x000181541282) */
/* WARNING: Removing unreachable block (ram,0x000181540edf) */
/* WARNING: Removing unreachable block (ram,0x000181540eef) */
/* WARNING: Removing unreachable block (ram,0x0001815412bc) */
/* WARNING: Removing unreachable block (ram,0x00018154170e) */
/* WARNING: Removing unreachable block (ram,0x000181541762) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_181540830(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  int *piVar1;
  char unaff_00089100;
  longlong unaff_0008f000;
  undefined8 uVar2;
  longlong *plVar3;
  undefined1 *puVar4;
  uint uVar5;
  int iVar6;
  undefined4 *puVar7;
  ulonglong uVar8;
  longlong lVar9;
  uint *puVar10;
  undefined4 *puVar11;
  uint *puVar12;
  undefined1 *puVar13;
  undefined1 *puVar15;
  undefined8 *puVar16;
  undefined8 *puVar17;
  undefined8 *puVar18;
  longlong *plVar19;
  uint *puVar20;
  uint uVar21;
  uint *puVar22;
  bool bVar23;
  int unaff_retaddr;
  undefined1 local_168 [32];
  int local_148;
  uint local_144;
  undefined *local_140;
  undefined8 local_130;
  uint local_128;
  undefined4 *local_120;
  undefined8 local_118;
  undefined4 local_fc;
  code *local_f8;
  undefined8 local_f0;
  undefined8 local_b8;
  undefined8 local_98;
  undefined8 local_90;
  ulonglong local_48;
  undefined1 *puVar14;
  
  puVar15 = local_168;
  local_98 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)local_168;
  uVar5 = (uint)&stack0x00000000 & 0x1aff;
  uVar21 = (uVar5 + 1) * uVar5 + 0x35d & 0x80000001;
  uVar5 = (uint)&stack0x00000000 & 0x31ff;
  uVar5 = ((uVar5 + 1) * uVar5 + 7) % 0x51;
  local_144 = ((int)((-uVar5 | uVar5) ^ (-uVar21 | uVar21)) >> 0x1f | 0xfcb8U) ^ 0xf0e8;
  local_fc = 0x740;
  local_118 = 0x2621fc0;
  puVar7 = &DAT_18135bc88;
  local_140 = &UNK_18135bd88;
  local_130 = 0x4685f379;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_148 = ((uint)(DAT_18135bc98 * 0x5bd1e995) >> 0x18 ^ DAT_18135bc98 * 0x5bd1e995) * 0x5bd1e995
  ;
  do {
    uVar2 = rdtsc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x3d4d7a15;
  local_128 = (uVar5 >> 0x18 ^ uVar5) * -0x733200af;
  local_120 = puVar7;
  local_f0 = param_1;
  local_b8 = param_3;
  local_90 = param_3;
  if (local_128 < 0x151d07d) {
    do {
      local_f8 = FUN_1813f2240;
      FUN_1815422f1(&local_f8,0x8e7c);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar8 = (*local_f8)();
    if (1 < uVar8) {
      FUN_18113eab0();
    }
  }
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_148 = ((uint)(_UNK_18135bcc4 * 0x5bd1e995) >> 0x18 ^ _UNK_18135bcc4 * 0x5bd1e995) *
              0x5bd1e995;
  puVar20 = (uint *)0x40;
LAB_181540e90:
  puVar22 = (uint *)(puVar15 + 0x20);
  puVar10 = (uint *)0xc020;
                    /* WARNING: Call to offcut address within same function */
  *(undefined8 *)(puVar15 + -8) = 0x181540ea5;
  puVar12 = &DAT_18135bcc8;
  uVar5 = func_0x0001815416fa(0xc020,&DAT_18135bcc8,0);
  if (((ulonglong)puVar10 & 0xc3) == 0) {
    puVar16 = (undefined8 *)puVar15;
    if (((ulonglong)puVar10 & 0xc3) != 0) goto LAB_181540f4c;
    goto LAB_181540efc;
  }
  do {
    if ((((ulonglong)puVar10 & 0xc3) != 0) && ((char)puVar10 < '\0')) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    if (((ulonglong)puVar10 & 0xc300) == 0) {
      return 0x1eb0603;
    }
    if (((ulonglong)puVar10 & 0x40) != 0) {
      return (ulonglong)
             (((uVar5 | *(uint *)((longlong)puVar20 + 0x8ebffc3)) + *(int *)(puVar15 + -0x38)) -
             *(int *)(puVar15 + -0x40));
    }
    *(uint **)(puVar15 + -8) = puVar20;
    puVar18 = (undefined8 *)(puVar15 + -8);
    puVar13 = puVar15 + -8;
    puVar14 = puVar15 + -8;
    puVar16 = (undefined8 *)(puVar15 + -8);
    puVar20 = puVar12;
    if (((ulonglong)puVar10 & 0xc3) == 0) {
      puVar15 = puVar15 + -8;
      if ((uVar5 & 0xc3) == 0) goto LAB_181540f4c;
      puVar15 = puVar14;
      if (((ulonglong)puVar10 & 0xc300) != 0) goto LAB_181540f4c;
      puVar4 = puVar13;
      if ((char)((ulonglong)puVar10 >> 8) < '\0') goto code_r0x000181540f65;
      *puVar10 = uVar5;
      goto LAB_181540f1b;
    }
LAB_181540efc:
    puVar15 = (undefined1 *)puVar16;
  } while (((ulonglong)puVar10 & 0xc3) == 0);
  bVar23 = false;
  do {
    if ((bVar23) &&
       (puVar10 = (uint *)((longlong)puVar10 + -1),
       puVar10 == (uint *)0x0 || uVar5 == *(uint *)((longlong)puVar20 + -0x137cb73d))) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    puVar15 = (undefined1 *)((longlong)puVar16 + 0x20);
    puVar4 = (undefined1 *)((longlong)puVar16 + 0x20);
    if (((ulonglong)puVar10 & 0xc300) != 0) {
code_r0x000181540f65:
      puVar15 = puVar4;
      if ((((ulonglong)puVar10 & 0xc3) == 0) && (((ulonglong)puVar10 & 0xc3) == 0)) break;
    }
LAB_181540f4c:
    uVar5 = *puVar20;
    puVar18 = (undefined8 *)puVar15;
    if (((ulonglong)puVar10 & 0xc3) != 0) {
      return (ulonglong)uVar5;
    }
LAB_181540f1b:
    *puVar22 = uVar5;
    puVar16 = puVar18 + -3;
    puVar20 = (uint *)*puVar18;
    bVar23 = ((ulonglong)puVar10 & 0xd300) == 0;
  } while( true );
  uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
  if ((int)uVar5 < 0) {
    uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
  }
  if (uVar5 == 0) {
    *(uint *)(puVar15 + 0x20) =
         ((uint)(*(int *)(puVar15 + 0x20) * 0x5bd1e995) >> 0x18 ^
         *(int *)(puVar15 + 0x20) * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f23] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f23] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f24] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f24] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f25] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f25] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f26] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f26] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f27] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f27] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f28] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f28] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f29] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f29] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f2a] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f2a] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f2b] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f2b] * 0x5bd1e995) * 0x5bd1e995;
    do {
      *(undefined8 *)(puVar15 + -8) = 0x1815410a5;
      FUN_1815404a2();
      *(undefined8 *)(puVar15 + -8) = 0x1815410aa;
      FUN_18154a771();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f2c] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f2c] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f2d] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f2d] * 0x5bd1e995) * 0x5bd1e995;
    do {
      *(undefined8 *)(puVar15 + -8) = 0x18154112d;
      FUN_18154367f();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f2e] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f2e] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f2f] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f2f] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f30] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f30] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f31] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f31] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f32] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f32] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f33] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f33] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f34] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f34] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f35] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f35] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + 0x20) =
         (puVar20[0x604d6f36] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f36] * 0x5bd1e995) * 0x5bd1e995;
    do {
      *(uint *)(puVar15 + 0x20) = puVar20[0x604d6f37];
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    iVar6 = *(int *)(puVar15 + 0x20);
    lVar9 = (ulonglong)(byte)(unaff_00089100 - 1) * -8;
    *(longlong *)(puVar15 + lVar9 + -8) = unaff_0008f000;
    puVar16 = (undefined8 *)(puVar15 + lVar9 + -0xaf17);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         ((uint)(iVar6 * 0x5bd1e995) >> 0x18 ^ iVar6 * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f38] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f38] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f39] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f39] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f3a] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f3a] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f3b] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f3b] * 0x5bd1e995) * 0x5bd1e995;
    piVar1 = (int *)(unaff_0008f000 + 0x68);
    do {
      uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f3c] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f3c] * 0x5bd1e995) * 0x5bd1e995;
    do {
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x181541405;
      FUN_18153f8b5();
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x18154140d;
      FUN_18153ff22();
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x181541429;
      FUN_181541e2f();
      uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f3d] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f3d] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f3e] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f3e] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f3f] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f3f] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f40] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f40] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f41] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f41] * 0x5bd1e995) * 0x5bd1e995;
    do {
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x1815414d5;
      FUN_18153fb3c();
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x1815414da;
      FUN_18154800a();
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x1815414f9;
      FUN_181542d31();
      uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f42] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f42] * 0x5bd1e995) * 0x5bd1e995;
    do {
      uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f43] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f43] * 0x5bd1e995) * 0x5bd1e995;
    do {
      uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f44] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f44] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f45] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f45] * 0x5bd1e995) * 0x5bd1e995;
    do {
      *(undefined8 *)(puVar15 + lVar9 + -0xaf1f) = 0x18154163a;
      FUN_181541c4a(0xc020);
      uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f46] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f46] * 0x5bd1e995) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) =
         (puVar20[0x604d6f47] * 0x5bd1e995 >> 0x18 ^ puVar20[0x604d6f47] * 0x5bd1e995) * 0x5bd1e995;
    do {
      puVar22 = (uint *)(puVar15 + lVar9 + -0xaef7);
                    /* WARNING: Bad instruction - Truncating control flow here */
      *puVar22 = puVar20[0x604d6f48];
      uVar5 = (*(int *)(unaff_0008f000 + 0x68) + 1) * *(int *)(unaff_0008f000 + 0x68) & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = *(int *)(puVar15 + lVar9 + -0xaef7) * 0x5bd1e995;
    *(uint *)(puVar15 + lVar9 + -0xaef7) = (uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995;
    puVar12 = puVar20 + 0x27;
    puVar20 = puVar20 + 0x604d6f49;
    do {
      uVar8 = (ulonglong)uVar5;
      puVar10 = (uint *)((longlong)puVar16 + 0x20);
      uVar21 = 0xc020;
      *(uint **)((longlong)puVar16 + -8) = puVar12;
      puVar18 = (undefined8 *)((longlong)puVar16 + -8);
      puVar12 = puVar20;
      if ((uVar5 & 0xc3) != 0) goto LAB_181541874;
      while (((uVar8 & 0xc3) != 0 || (puVar16 = puVar18, (uVar21 & 0xc3) == 0))) {
LAB_181541874:
        while( true ) {
          uVar5 = *puVar12;
          uVar8 = (ulonglong)uVar5;
          if ((uVar21 & 0xc300) == 0) break;
          *puVar10 = uVar5;
          puVar12 = (uint *)*puVar18;
          puVar22 = (uint *)((longlong)puVar22 + uVar8);
          if ((uVar21 & 0x43) == 0) {
            puVar22 = (uint *)((longlong)puVar22 - uVar8);
          }
          else {
            uVar21 = uVar21 - CONCAT31((int3)(uVar5 >> 8),(char)uVar5 + -0x4c);
          }
          puVar17 = puVar18 + 1;
          puVar16 = puVar18 + 1;
          puVar18 = puVar18 + 1;
          if (((uVar21 & 0xc3) == 0) && (puVar18 = puVar17, (uVar21 & 0xc3) == 0))
          goto LAB_18154188a;
        }
      }
LAB_18154188a:
      uVar5 = *(uint *)(unaff_0008f000 + 0x68);
      uVar21 = (uVar5 + 1) * uVar5 & 0x80000001;
      if ((int)uVar21 < 0) {
        uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
      }
      if (uVar21 == 0) {
        *(uint *)((longlong)puVar16 + 0x20) =
             ((uint)(*(int *)((longlong)puVar16 + 0x20) * 0x5bd1e995) >> 0x18 ^
             *(int *)((longlong)puVar16 + 0x20) * 0x5bd1e995) * 0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) =
             (puVar12[0x604d6f23] * 0x5bd1e995 >> 0x18 ^ puVar12[0x604d6f23] * 0x5bd1e995) *
             0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) =
             (puVar12[0x604d6f24] * 0x5bd1e995 >> 0x18 ^ puVar12[0x604d6f24] * 0x5bd1e995) *
             0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) =
             (puVar12[0x604d6f25] * 0x5bd1e995 >> 0x18 ^ puVar12[0x604d6f25] * 0x5bd1e995) *
             0x5bd1e995;
        piVar1 = (int *)(unaff_0008f000 + 0x68);
        do {
          *(undefined8 *)((longlong)puVar16 + -8) = 0x18154192c;
          FUN_181547fcd();
          uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
          if ((int)uVar5 < 0) {
            uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar5 != 0);
        *(undefined8 *)((longlong)puVar16 + 0x50) = 0x9a21f0e330cc28ab;
        *(int *)((longlong)puVar16 + 0x28) = (int)*(undefined8 *)((longlong)puVar16 + 0x50);
        *(uint *)((longlong)puVar16 + 0x20) =
             (puVar12[0x604d6f26] * 0x5bd1e995 >> 0x18 ^ puVar12[0x604d6f26] * 0x5bd1e995) *
             0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) =
             (puVar12[0x604d6f27] * 0x5bd1e995 >> 0x18 ^ puVar12[0x604d6f27] * 0x5bd1e995) *
             0x5bd1e995;
        do {
          puVar11 = (undefined4 *)0xc020;
          *(undefined8 *)((longlong)puVar16 + -8) = 0x1815419bd;
          iVar6 = FUN_18153fecd();
          if (((ulonglong)puVar11 & 0xc3) != 0) {
            puVar12 = (uint *)(ulonglong)(uint)(iVar6 + *(int *)((longlong)puVar12 + 0x4d3316eb));
            puVar22 = puVar20;
            puVar7 = puVar11;
          }
                    /* WARNING: Call to offcut address within same function */
          *(undefined8 *)((longlong)puVar16 + -8) = 0x1815419e1;
          func_0x0001815419bf();
          uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
          if ((int)uVar5 < 0) {
            uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar5 != 0);
        uVar5 = *(int *)((longlong)(puVar7 + 6) + (longlong)puVar12) * 0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) = (uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995;
        uVar5 = *(int *)((longlong)(puVar7 + 7) + (longlong)puVar12) * 0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) = (uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995;
        uVar5 = *(int *)((longlong)(puVar7 + 8) + (longlong)puVar12) * 0x5bd1e995;
        *(uint *)((longlong)puVar16 + 0x20) = (uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995;
        do {
          *(undefined4 *)((longlong)puVar16 + 0x68) = 0x8205baa5;
          uVar5 = (*piVar1 + 1) * *piVar1 & 0x80000001;
          if ((int)uVar5 < 0) {
            uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar5 != 0);
        uVar8 = (ulonglong)*(uint *)((longlong)puVar16 + 0x68);
        plVar3 = puVar16;
        do {
          plVar19 = plVar3;
          uVar5 = ~(~(((uint)uVar8 >> 0x10 | (uint)uVar8 << 0x10) + 0x1030a173) + 0x8865841d);
          uVar5 = (uVar5 >> 0x1b | uVar5 << 5) + 0x3270a064;
          uVar8 = (ulonglong)(uVar5 >> 0xc | uVar5 * 0x100000);
          plVar19[-1] = 0;
          plVar19[-2] = (longlong)piVar1;
          plVar19[-3] = uVar8;
                    /* WARNING: Call to offcut address within same function */
          plVar19[-4] = 0x181541acf;
          lVar9 = func_0x000181541b00();
          plVar3 = plVar19 + -3;
        } while (puVar22 != (uint *)0x0);
        *(uint *)(lVar9 + -0x73) = *(uint *)(lVar9 + -0x73) | 0x48e02464;
        lVar9 = plVar19[1];
        plVar19[1] = lVar9 + 0x1ad;
        *plVar19 = lVar9 + -0x4fec8;
        plVar19[-1] = lVar9 + 0x2a496;
        plVar19[-2] = lVar9 + 0x64fe;
        plVar19[-3] = lVar9 + -0x8ecc;
        plVar19[-4] = lVar9 + 0x1e0ef;
        uVar8 = FUN_181541c4b();
        return uVar8;
      }
    } while( true );
  }
  goto LAB_181540e90;
}



############ FUN_ 181546ec0 size=968 ############

/* WARNING: Removing unreachable block (ram,0x000181546fb5) */
/* WARNING: Removing unreachable block (ram,0x000181546f54) */
/* WARNING: Removing unreachable block (ram,0x000181546f9e) */
/* WARNING: Removing unreachable block (ram,0x000181546fed) */

undefined8 FUN_181546ec0(undefined8 param_1)

{
  byte *pbVar1;
  byte bVar2;
  ulonglong uVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined1 auStack_188 [64];
  uint local_148;
  undefined4 local_124;
  uint local_fc;
  code *local_f8;
  undefined8 local_d8;
  undefined8 local_90;
  ulonglong local_30;
  
  local_90 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_188;
  local_124 = 0x600;
  uVar6 = (uint)&stack0x00000000 & 0x5ff;
  uVar6 = (uVar6 * uVar6 + 1) % 7;
  local_fc = ((int)(-uVar6 | uVar6) >> 0x1f) * -0x3046 ^ 0x3a16;
  do {
    uVar4 = rdtsc();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_148 = ((uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20)) * -0x7332166b;
  local_148 = local_148 >> 0x18 ^ local_148;
  uVar5 = (ulonglong)local_148;
  local_148 = local_148 * -0x5028166b;
  local_d8 = param_1;
  if (local_148 < 0x7fffffff) {
    do {
      local_f8 = FUN_1813bba80;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
      uVar5 = (ulonglong)uVar6;
    } while (uVar6 != 0);
    uVar3 = FUN_1813bba80(0,0x8e6c);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  FUN_181545461();
                    /* WARNING: Call to offcut address within same function */
  uVar4 = func_0x000181547168();
  out(0x4e,(char)uVar4);
  pbVar1 = (byte *)(uVar5 + 0x5a);
  bVar2 = (byte)uVar5 & 7;
  *pbVar1 = *pbVar1 << bVar2 | *pbVar1 >> 8 - bVar2;
  return uVar4;
}



############ FUN_ 181548970 size=3311 ############

/* WARNING: Instruction at (ram,0x000181549446) overlaps instruction at (ram,0x000181549444)
    */
/* WARNING: Removing unreachable block (ram,0x000181549120) */
/* WARNING: Removing unreachable block (ram,0x000181548d3a) */
/* WARNING: Removing unreachable block (ram,0x000181548b90) */
/* WARNING: Removing unreachable block (ram,0x000181548b96) */
/* WARNING: Removing unreachable block (ram,0x000181548f68) */
/* WARNING: Removing unreachable block (ram,0x000181548f6d) */
/* WARNING: Removing unreachable block (ram,0x000181548f6f) */
/* WARNING: Removing unreachable block (ram,0x000181549348) */
/* WARNING: Removing unreachable block (ram,0x000181548c40) */
/* WARNING: Removing unreachable block (ram,0x000181548fe2) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_181548970(void)

{
  byte bVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  uint *puVar7;
  int iVar8;
  longlong lVar9;
  int *piVar10;
  int *piVar11;
  undefined1 *puVar12;
  undefined1 *puVar14;
  int *piVar15;
  int unaff_retaddr;
  uint auStackX_10 [6];
  undefined1 auStack_98 [32];
  uint local_78;
  undefined *local_70;
  code *apcStack_68 [3];
  undefined8 local_50;
  undefined1 *puVar13;
  
  puVar12 = auStack_98;
  local_50 = 0xfffffffffffffffe;
  puVar14 = (undefined1 *)0x930;
  if (((ulonglong)&stack0x00000000 & 0x2c00) == 0) {
    uVar5 = (uint)&stack0x00000000 & 0x1bf;
    iVar8 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
    local_78 = 0xf840 << ((byte)(((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e) & 0x1f)
    ;
  }
  else {
    local_78 = 0xf840;
  }
  local_78 = local_78 ^ 0xf5a0;
  local_70 = &UNK_1813626dc;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = (_UNK_1813625e0 + (_UNK_1813625dc * 0x401 ^ (uint)(_UNK_1813625dc * 0x401) >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_1813625e4) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_1813625e8) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_1813625ec) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_1813625f0) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_1813625f4) * 0x401;
  uVar3 = 0x4f1;
  uVar5 = (_UNK_1813625f8 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_1813625fc) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362600) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362604) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362608) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_18136260c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362610) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362614) * 0x401;
  do {
    puVar7 = auStackX_10;
    FUN_181548436(puVar7,auStackX_10);
    uVar4 = rdtsc();
    *puVar7 = (uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  auStackX_10[0] =
       (auStackX_10[0] * -0x35943595 >> 0x18 ^ auStackX_10[0] * -0x35943595) * -0x13ac13ad;
  if (auStackX_10[0] < 0xf5a02) {
    do {
      apcStack_68[0] = FUN_1813f2240;
      FUN_18154a43d(apcStack_68,0x5ebb);
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar2 = (*apcStack_68[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  uVar5 = (_UNK_181362618 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_18136261c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362620) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362624) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362628) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_18136262c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362630) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + _UNK_181362634) * 0x401;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (_UNK_181362638 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar6 = uVar6 ^ uVar6 >> 6;
  uVar5 = uVar6 & 0x3f | 0x6c;
  uVar5 = uVar5 * uVar5 * 0x3d7 ^ 0x1240a84b;
  uVar2 = (longlong)(((int)(-uVar5 | uVar5) >> 0x1f) * -0x9071) ^ 0x9031;
  uVar5 = (*(int *)(&UNK_1813625fc + uVar2) + uVar6) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&UNK_181362600 + uVar2)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&UNK_181362604 + uVar2)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&UNK_181362608 + uVar2)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&UNK_18136260c + uVar2)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&UNK_181362610 + uVar2)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&UNK_181362614 + uVar2)) * 0x401;
  piVar15 = (int *)(&UNK_181362618 + uVar2);
  uVar6 = ((uVar5 >> 6 ^ uVar5) + *piVar15) * 0x401;
  bVar1 = (byte)piVar15 & 0x2f;
  uVar5 = (uint)piVar15 & 0xff;
  piVar15 = (int *)(&UNK_181362610 +
                   (longlong)
                   (int)(0x90ef << ((bVar1 + 1) * (bVar1 + 1) * bVar1 * bVar1 & 3) ^
                        0x90e3 - ((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3) + uVar2);
  uVar6 = ((uVar6 >> 6 ^ uVar6) + *piVar15) * 0x401;
  uVar6 = uVar6 ^ uVar6 >> 6;
  uVar5 = (uint)piVar15 & 0x2bff;
  uVar5 = ((uVar5 + 1) * uVar5 + 7) % 0x51 | uVar6;
  piVar10 = (int *)(((longlong)(((int)(-uVar5 | uVar5) >> 0x1f) * -0x4928) ^ 0xffffffffffffb7ecU) +
                    0x140 + (longlong)piVar15);
  uVar5 = (*piVar10 + uVar6) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar10[1]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar10[2]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar10[3]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar10[4]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar10[5]) * 0x401;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000181548f51(0xc838);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (piVar10[6] + (uVar5 ^ uVar5 >> 6)) * 0x401;
  lVar9 = 3;
  piVar10 = piVar10 + 6;
  do {
    piVar11 = piVar10;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[1]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[2]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[3]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[4]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[5]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[6]) * 0x401;
    lVar9 = lVar9 + -1;
    piVar10 = piVar11 + 6;
  } while (lVar9 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (piVar11[7] + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[8]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[9]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[10]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[0xb]) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar11[0xc]) * 0x401;
  uVar5 = (uVar5 >> 6 ^ uVar5) + 0x1051405e;
  uVar6 = uVar5 >> 0x17 | uVar5 * 0x200;
  uVar5 = ((uVar5 & 0x7fffff) >> 7 ^ uVar6) & 0xfff;
  uVar5 = ~((uVar5 << 0x10 | uVar5) ^ uVar6);
  uVar5 = ((uVar5 >> 0x10 | uVar5 << 0x10) & 0x962069df |
          (uVar5 << 0x10 | uVar5 >> 0x10) & 0x69df9620) + 0xfccdb;
  do {
    uVar2 = 0xc838;
    *(undefined8 *)(puVar12 + -8) = 0x18154943a;
    FUN_1815476d8();
    if ((uVar2 & 0xe700) == 0) {
      *(undefined8 *)(puVar12 + -8) = 0x181549446;
      func_0x0001ba9d24b7();
      puVar13 = puVar12 + -8;
      *(undefined1 **)(puVar12 + -8) = puVar14;
      puVar12 = puVar12 + -0x8550;
      puVar14 = puVar13;
    }
    *(undefined8 *)(puVar12 + -8) = 0x18154945e;
    FUN_18154a76a();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ~(*(uint *)(puVar12 + 0xb8) & uVar5);
  lVar9 = *(longlong *)(puVar12 + 0xa0);
  if ((~(uVar6 & uVar5) & ~(uVar6 & *(uint *)(puVar12 + 0xb8))) != 0xffffffff) {
    *(undefined8 *)(puVar12 + -8) = 0x1815494ca;
    uVar3 = FUN_18154d8e0(lVar9,puVar12 + 0x38,(double)*(float *)(puVar12 + 0xb0));
    uVar4 = 0;
    *(undefined8 *)(puVar12 + -8) = 0x1815494dd;
    FUN_181349c50(lVar9 + 0x390,uVar3);
    puVar7 = (uint *)(*(longlong *)(puVar12 + 0x38) + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        *(undefined8 *)(puVar12 + -8) = 0x181549505;
        free(puVar7);
      }
    }
    *(undefined8 *)(puVar12 + -8) = 0x181549510;
    FUN_181548322();
    *(int **)(puVar12 + -8) = piVar15;
    *(undefined8 *)(puVar12 + -0x10) = 0x4f1;
    *(undefined8 *)(puVar12 + -0x18) = uVar4;
    thunk_FUN_1805a9280();
    return;
  }
  *(undefined8 *)(puVar12 + -8) = 0x1815495d6;
  uVar4 = FUN_18154d8e0(lVar9,puVar12 + 0x40,(double)*(float *)(puVar12 + 0xb0));
  *(undefined8 *)(puVar12 + -8) = 0x1815495e9;
  FUN_181349c50(lVar9 + 0x390,uVar4,0);
  puVar7 = (uint *)(*(longlong *)(puVar12 + 0x40) + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      *(undefined8 *)(puVar12 + -8) = 0x181549611;
      free(puVar7);
    }
  }
  iVar8 = *(int *)(puVar12 + 0x20);
  uVar4 = 1;
  do {
    *(undefined8 *)(puVar12 + -8) = uVar3;
    *(undefined8 *)(puVar12 + -0x10) = uVar4;
    *(int **)(puVar12 + -0x18) = piVar15;
    lVar9 = -(longlong)iVar8;
    piVar15 = *(int **)(puVar12 + lVar9 + 0xdc8);
    uVar4 = *(undefined8 *)(puVar12 + lVar9 + 0xdd0);
    uVar3 = *(undefined8 *)(puVar12 + lVar9 + 0xdd8);
    puVar12 = puVar12 + lVar9 + 0xde0;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  return;
}



############ FUN_ 181549720 size=1937 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018154984f) */
/* WARNING: Removing unreachable block (ram,0x00018154982d) */
/* WARNING: Removing unreachable block (ram,0x0001815498f3) */
/* WARNING: Type propagation algorithm not settling */

void FUN_181549720(undefined8 param_1)

{
  undefined8 uVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  int iVar4;
  uint uVar5;
  code **ppcVar6;
  uint *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  ulonglong uVar10;
  longlong *plVar11;
  uint uVar12;
  ulonglong uVar13;
  int unaff_retaddr;
  undefined1 auStack_178 [48];
  undefined4 local_148;
  undefined *local_140;
  uint local_138;
  uint local_134;
  uint local_130;
  uint local_128;
  undefined *local_120;
  undefined4 local_118;
  uint local_104;
  uint local_100;
  undefined8 local_f0;
  uint local_e8;
  code *local_e0 [4];
  undefined8 local_c0;
  undefined4 local_b8;
  undefined4 local_b4;
  longlong local_b0 [16];
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_178;
  uVar5 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x700) == 0) {
    uVar8 = uVar5 & 0x3ff;
    uVar12 = ((uVar5 & 0x28ff) * (uVar5 & 0x28ff) + 1) % 7;
    uVar8 = ((int)(-uVar12 | uVar12) >> 0x1f) >>
            ((char)((ulonglong)((longlong)(int)((uVar8 + 2) * (uVar8 + 1) * uVar8) * 0x55555556) >>
                   0x20) * -3 & 0x1fU);
    local_104 = (int)(-uVar8 | uVar8) >> 0x1f & 0x7309;
  }
  else {
    local_104 = 0x7309;
  }
  uVar8 = uVar5 & 0x37f;
  local_104 = 0x7c69 >> ((char)((ulonglong)
                                ((longlong)(int)((uVar8 + 2) * (uVar8 + 1) * uVar8) * 0x55555556) >>
                               0x20) * -3 & 0x1fU) ^ local_104;
  iVar4 = (uVar5 & 0x33ff) * (uVar5 & 0x33ff) + 1;
  uVar5 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_e8 = ((int)(uVar5 | -uVar5) >> 0x1f) * -0x6d3c;
  uVar13 = (ulonglong)local_e8;
  local_148 = 0x811c9dc5;
  local_e8 = local_e8 ^ 0x6f9c;
  local_f0 = 0;
  local_140 = &DAT_181e0e018;
  local_120 = &DAT_181e16008;
  local_c0 = param_1;
  do {
    uVar1 = rdtsc();
    local_130 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_1815485f3();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_130 = (local_130 * -0xae3b32 >> 0x18 ^ local_130 * -0xae3b32) * -0x166ae57b;
  if (local_130 < 0x7fffffff) {
    local_e0[0] = (code *)0x0;
    do {
      ppcVar6 = local_e0;
      FUN_181547fcd(ppcVar6,local_e0);
      *ppcVar6 = FUN_1813f2240;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = (*local_e0[0])(0,0xf270);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    plVar11 = local_b0;
    puVar9 = &local_b8;
    puVar7 = &local_138;
    FUN_18154a63e();
    *puVar7 = 0x9cbc96f4;
    *puVar9 = 0x5e;
    *plVar11 = 0x181549ab7;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_138 = ~local_138;
  uVar5 = (local_138 >> 0xf ^ local_138) & 0x7fff;
  local_138 = (uVar5 << 0xf | uVar5) ^ local_138;
  uVar5 = (local_138 >> 0x1b | local_138 << 5) + 0x8a00da1b;
  uVar8 = ~((uVar5 >> 8 | uVar5 * 0x1000000) & 0x847b847b |
           (uVar5 * 0x100 | uVar5 >> 0x18) & 0x7b847b84);
  uVar5 = (uVar8 >> 0x10 ^ uVar8) & 0x7fff;
  uVar5 = ((uVar5 << 0x10 | uVar5) ^ uVar8) + 0xf1753a22;
  do {
    local_b4 = 0x48;
    local_b0[1] = 0x181549b77;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_b0[0] = (int)(uVar5 >> 0xf | uVar5 * 0x20000) + local_b0[0];
  local_138 = 0;
  local_118 = 0;
  *(longlong *)(local_b0[0] + 4) =
       *(longlong *)(local_b0[0] + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x0323672b_mfort6317_ >> 0x1b) & 0x24000090);
  do {
    uVar1 = rdtsc();
    local_100 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20) * 8;
    uVar2 = ((ulonglong)local_100 * 5 >> 9) + 0x6d3ca378 + (ulonglong)local_100 * 8;
    uVar2 = uVar2 >> 0xb | uVar2 << 0x35;
    uVar13 = (-uVar13 ^ 0xffffffffffffffff) + 1;
    uVar2 = uVar2 - ((uVar2 >> 10) + 0x72da1cc);
    uVar2 = (uVar2 >> 7) + 0x8f79651 + uVar2 * 2;
    uVar2 = uVar2 * 0x80 | uVar2 >> 0x39;
    uVar2 = (uVar2 ^ uVar2 * 5 >> 6) >> 7;
    uVar5 = ((uint)uVar2 ^ (uint)(uVar2 * 5 >> 0xe)) & 0xcecbab67;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  *(int *)(local_b0[0] + 8) = *(int *)(local_b0[0] + 8) + (uVar5 ^ 0xf533ca62);
  *(int *)(local_b0[0] + 4) = *(int *)(local_b0[0] + 4) + (uVar5 ^ 0x4fba63c8);
  uVar2 = *(ulonglong *)(local_b0[0] + 4);
  uVar2 = ((uVar2 >> 2 | uVar2 << 0x3e) & 0x9999999999999999 |
          (uVar2 << 2 | uVar2 >> 0x3e) & 0x6666666666666666) ^ 0x9f9e9d74458c3082;
  uVar5 = (uint)((uVar2 >> 0x1d ^ uVar2) >> 7) & 0x7ffffff;
  uVar2 = ((ulonglong)uVar5 << 0x1d | (ulonglong)uVar5) << 7 ^ uVar2;
  uVar3 = ((uVar2 >> 8 | uVar2 << 0x38) & 0xd52ad52ad52ad52a |
          (uVar2 << 8 | uVar2 >> 0x38) & 0x2ad52ad52ad52ad5) + 0x10bbbea1143c7412;
  uVar2 = uVar3 >> 0x39;
  uVar3 = (uVar2 | uVar3 * 0x80) + 0x52015b612fd1c270;
  uVar5 = (uint)((uVar3 >> 0x23 ^ uVar3) >> 0xe) & 0x1fff;
  uVar3 = ((ulonglong)uVar5 << 0x23 | (ulonglong)uVar5) << 0xe ^ uVar3;
  uVar10 = (uVar3 >> 4 | uVar2 << 0x3c) & 0x6969696969696969;
  uVar2 = (uVar3 << 4 | uVar3 >> 0x3c) & 0x9696969696969696 | uVar10;
  *(ulonglong *)(local_b0[0] + 4) = uVar2;
  dvs_0x0323672b_mfort6317_ =
       (uint *)((longlong)dvs_0x0323672b_mfort6317_ + (ulonglong)((uint)(uVar2 >> 4) & 0xe49a1));
  local_134 = (uint)(*(ulonglong *)(local_b0[0] + 4) >> 0x1a) & 0x7fffffff;
  local_128 = (uint)(*(ulonglong *)(local_b0[0] + 4) >> 0x13) ^ 0x5c676631;
  local_140 = (undefined *)(*(ulonglong *)(local_b0[0] + 4) ^ 0x40164358994ce95a);
  FUN_18154a4b0(0x40164358994ce95a,uVar10,local_b0 + 1,uVar13);
  FUN_181549ee1();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18154b260 size=2234 ############

/* WARNING: Instruction at (ram,0x00018154b708) overlaps instruction at (ram,0x00018154b706)
    */
/* WARNING: Removing unreachable block (ram,0x00018154ba7c) */
/* WARNING: Removing unreachable block (ram,0x00018154b706) */
/* WARNING: Removing unreachable block (ram,0x00018154b804) */
/* WARNING: Removing unreachable block (ram,0x00018154b6b7) */

ulonglong FUN_18154b260(longlong param_1)

{
  undefined8 uVar1;
  uint uVar2;
  ulonglong uVar3;
  uint uVar4;
  uint uVar5;
  code **ppcVar6;
  longlong *plVar7;
  undefined1 *puVar8;
  longlong *plVar9;
  int iVar10;
  ulonglong uVar11;
  longlong lVar12;
  longlong lVar13;
  uint unaff_retaddr;
  undefined1 auStack_b8 [32];
  undefined *local_98;
  code *local_90;
  undefined8 local_88;
  longlong local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  longlong local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  longlong local_58;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  longlong local_48;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  puVar8 = auStack_b8;
  local_88 = 0xfffffffffffffffe;
  lVar13 = 0;
  uVar2 = (uint)&stack0x00000000 & 0x34ff;
  uVar2 = ((uVar2 + 1) * uVar2 + 7) % 0x51;
  uVar2 = (int)(-uVar2 | uVar2) >> 0x1f;
  uVar2 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0x3195 ^ 0x31b5;
  uVar11 = 0x100;
  local_98 = &DAT_1814387d0;
  iVar10 = ((DAT_1814386d0 * 0xc1 + DAT_1814386d4) * 0xc1 + DAT_1814386d8) * 0xc1 + DAT_1814386dc;
  do {
    uVar1 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x13ac3d4e;
  if ((uVar4 >> 0x18 ^ uVar4) * -0x12aa7333 < 0xf5b9f) {
    local_90 = (code *)0x0;
    do {
      ppcVar6 = &local_90;
      FUN_18154a362(ppcVar6,&local_90);
      *ppcVar6 = FUN_1813f2240;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_90)(0,0x34f0);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  iVar10 = (((((((((iVar10 * 0xc1 + DAT_1814386e0) * 0xc1 + DAT_1814386e4) * 0xc1 + DAT_1814386e8) *
                 0xc1 + DAT_1814386ec) * 0xc1 + DAT_1814386f0) * 0xc1 + DAT_1814386f4) * 0xc1 +
             DAT_1814386f8) * 0xc1 + DAT_1814386fc) * 0xc1 + DAT_181438700) * 0xc1 + DAT_181438704;
  plVar9 = (longlong *)(param_1 + -0x850);
  (**(code **)(*plVar9 + 0x170))(plVar9);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar2 = ~(~uVar2 + 1) + 1;
    uVar11 = (-(uVar11 ^ 0x109ba030) ^ 0xffffffffffffffff) + 1 ^ 0x109ba030;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (((((((((((((((((((((((((((((((((((((((((((((((((iVar10 * 0xc1 + DAT_181438708) * 0xc1 +
                                                         DAT_18143870c) * 0xc1 + DAT_181438710) *
                                                        0xc1 + DAT_181438714) * 0xc1 + DAT_181438718
                                                      ) * 0xc1 + DAT_18143871c) * 0xc1 +
                                                    DAT_181438720) * 0xc1 + DAT_181438724) * 0xc1 +
                                                  DAT_181438728) * 0xc1 + DAT_18143872c) * 0xc1 +
                                                DAT_181438730) * 0xc1 + DAT_181438734) * 0xc1 +
                                              DAT_181438738) * 0xc1 + DAT_18143873c) * 0xc1 +
                                            DAT_181438740) * 0xc1 + DAT_181438744) * 0xc1 +
                                          DAT_181438748) * 0xc1 + DAT_18143874c) * 0xc1 +
                                        DAT_181438750) * 0xc1 + DAT_181438754) * 0xc1 +
                                      DAT_181438758) * 0xc1 + DAT_18143875c) * 0xc1 + DAT_181438760)
                                    * 0xc1 + DAT_181438764) * 0xc1 + DAT_181438768) * 0xc1 +
                                 DAT_18143876c) * 0xc1 + DAT_181438770) * 0xc1 + DAT_181438774) *
                               0xc1 + DAT_181438778) * 0xc1 + DAT_18143877c) * 0xc1 + DAT_181438780)
                            * 0xc1 + DAT_181438784) * 0xc1 + DAT_181438788) * 0xc1 + DAT_18143878c)
                         * 0xc1 + DAT_181438790) * 0xc1 + DAT_181438794) * 0xc1 + DAT_181438798) *
                      0xc1 + DAT_18143879c) * 0xc1 + DAT_1814387a0) * 0xc1 + DAT_1814387a4) * 0xc1 +
                  DAT_1814387a8) * 0xc1 + DAT_1814387ac) * 0xc1 + DAT_1814387b0) * 0xc1 +
               DAT_1814387b4) * 0xc1 + DAT_1814387b8) * 0xc1 + DAT_1814387bc) * 0xc1 + DAT_1814387c0
            ) * 0xc1 + DAT_1814387c4) * 0xc1 + DAT_1814387c8) * 0xc1 + DAT_1814387cc;
  do {
    lVar12 = lVar13 + uVar11;
    lVar13 = (uVar11 - lVar12 ^ 0xffffffffffffffff) + 1;
    uVar11 = lVar12 - lVar13;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = (uVar4 >> 8 | uVar4 * 0x1000000) & 0xa35ca35c |
          (uVar4 * 0x100 | uVar4 >> 0x18) & 0x5ca35ca3;
  uVar4 = (uVar5 >> 0xe ^ uVar5) >> 1 & 0x3f;
  uVar4 = ((uVar4 << 0xe | uVar4) * 2 ^ uVar5) + 0xd088a1fa;
  uVar5 = uVar4 * 2 | (uint)((int)uVar4 < 0);
  uVar11 = CONCAT71((int7)((ulonglong)lVar13 >> 8),
                    (((uVar4 & 0x7fffffff) >> 3 | uVar5 << 0x1c) & 0x96969696 |
                    (uVar5 << 4 | (uVar4 & 0x7fffffff) >> 0x1b) & 0x69696969) == 0xcd6107aa);
  uStack_70 = *(undefined4 *)(param_1 + -0x828);
  if ((uVar11 & 0x1fffff) == 0 && (int)uVar11 == 0) {
    uStack_6c = *(undefined4 *)(param_1 + -0x824);
    local_78 = lVar13;
    uStack_50 = uStack_70;
    uStack_4c = uStack_6c;
    local_58 = lVar13;
    FUN_181342870(plVar9,&local_58);
    uVar11 = thunk_FUN_1805a9280();
    return uVar11;
  }
  uStack_5c = *(undefined4 *)(param_1 + -0x824);
  plVar7 = &local_48;
  local_68 = lVar13;
  uStack_60 = uStack_70;
  uStack_40 = uStack_70;
  uStack_3c = uStack_5c;
  local_48 = lVar13;
  FUN_181342870(plVar9);
  do {
                    /* WARNING: Call to offcut address within same function */
    *(undefined8 *)(puVar8 + -8) = 0x18154bb6c;
    lVar12 = (longlong)(int)uVar2;
    func_0x00018154b2df();
    *(longlong **)(puVar8 + -8) = plVar9;
    *(longlong *)(puVar8 + -0x10) = lVar13;
    *(longlong **)(puVar8 + -0x18) = plVar7;
    lVar12 = -lVar12;
    plVar7 = *(longlong **)(puVar8 + lVar12 + 8);
    lVar13 = *(longlong *)(puVar8 + lVar12 + 0x10);
    plVar9 = *(longlong **)(puVar8 + lVar12 + 0x18);
    puVar8 = puVar8 + lVar12 + 0x20;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  return (ulonglong)unaff_retaddr;
}



############ FUN_ 1815552a0 size=2435 ############

/* WARNING: Instruction at (ram,0x00018155560b) overlaps instruction at (ram,0x00018155560a)
    */
/* WARNING: Removing unreachable block (ram,0x0001815555dd) */
/* WARNING: Removing unreachable block (ram,0x0001815555eb) */
/* WARNING: Removing unreachable block (ram,0x0001815555e9) */
/* WARNING: Removing unreachable block (ram,0x0001815555ef) */
/* WARNING: Removing unreachable block (ram,0x00018155538b) */
/* WARNING: Removing unreachable block (ram,0x00018155560a) */
/* WARNING: Removing unreachable block (ram,0x00018155560f) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_1815552a0(undefined8 param_1)

{
  int *piVar1;
  byte *pbVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined4 uVar6;
  uint *puVar7;
  longlong lVar8;
  uint uVar9;
  undefined4 *puVar10;
  ulonglong uVar11;
  code *UNRECOVERED_JUMPTABLE;
  uint uVar12;
  longlong *plVar13;
  longlong lVar14;
  int unaff_retaddr;
  longlong local_1d8;
  longlong lStack_1d0;
  longlong local_1c8;
  undefined8 local_1a8;
  undefined8 local_1a0;
  ulonglong local_198;
  uint local_190;
  uint local_18c;
  uint local_180;
  undefined8 local_178;
  uint local_16c;
  uint local_154;
  undefined4 local_150;
  undefined *local_148;
  uint local_140;
  uint local_13c;
  code *local_138;
  undefined8 local_130;
  undefined4 local_128;
  longlong local_120;
  longlong local_118;
  undefined4 local_110 [44];
  ulonglong local_60;
  
  local_60 = DAT_182615970 ^ (ulonglong)&local_1d8;
  uVar12 = (uint)&stack0x00000000 & 0x1cff;
  uVar12 = (uVar12 * uVar12 * 0x10 + 4) % 0x13;
  uVar12 = (int)(-uVar12 | uVar12) >> 0x1f;
  local_154 = (int)(-uVar12 | uVar12) >> 0x1f & 0x43e8U ^ 0x4a18;
  local_150 = 0xb10;
  local_198 = 0;
  local_1a8 = 0x1809a22f4;
  local_1a0 = &DAT_1809a596c;
  do {
    uVar3 = rdtsc();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * 0x1a855bd1;
  local_180 = (uVar12 >> 0x18 ^ uVar12) * 0x1a85ec53;
  local_130 = param_1;
  if (local_180 < 0x38e38e3f) {
    do {
      local_138 = FUN_181194940;
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar4 = FUN_181194940(0,0xf278);
    if (1 < uVar4) {
      FUN_18113eab0();
    }
  }
  local_148 = local_1a0;
  local_178 = CONCAT44(local_178._4_4_,0x41a16baa);
  local_1a0 = (undefined *)(CONCAT44(local_1a0._4_4_,0xbd1e995) | 0x50000000);
  do {
    puVar7 = &local_140;
    FUN_18155447f();
    *puVar7 = 0x2f69aadd;
    FUN_1815539fd();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = ~(~(local_140 << 0x18 | local_140 >> 8) + 0x54d6eda6) + 0xde8df7ac;
  local_1a8 = CONCAT44(local_1a8._4_4_,~((uVar12 * 0x20 | uVar12 >> 0x1b) + 0xb27e83fe) + 0xcd0607c9
                      );
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  do {
    plVar13 = &local_120;
    puVar10 = local_110;
    puVar7 = &local_190;
    FUN_181555db9();
    *puVar7 = 0xc984cf97;
    *puVar10 = 0x1b;
    *plVar13 = 0x181555647;
    FUN_181557078();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar9 = (local_190 >> 2 | local_190 << 0x1e) & 0x99999999 |
          (local_190 << 2 | local_190 >> 0x1e) & 0x66666666;
  uVar12 = (uVar9 >> 5 ^ uVar9) >> 8 & 7;
  uVar12 = ((uVar12 << 5 | uVar12) << 8 ^ uVar9) + 0x6d4d7f0b;
  uVar9 = ((uVar12 * 0x10000 | uVar12 >> 0x10) & 0xd91e26e1 |
          (uVar12 >> 0x10 | uVar12 * 0x10000) & 0x26e1d91e) ^ 0xd9d36d40;
  uVar12 = uVar9 >> 0xf;
  uVar9 = uVar9 << 0x11 | uVar12;
  uVar12 = (uVar12 << 0x10 | uVar9 >> 0x10) & 0xb6b5494a |
           (uVar9 >> 0x10 | uVar12 << 0x10) & 0x494ab6b5;
  uVar9 = (uVar12 >> 0xb ^ uVar12) >> 5 & 0x7ff;
  uVar12 = (uVar9 << 0xb | uVar9) << 5 ^ uVar12;
  local_190 = uVar12 >> 0xe | uVar12 << 0x12;
  do {
    local_118 = 0x181555727;
    local_16c = 0xa588f06c;
    local_128 = 0x5b;
    FUN_181556924();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  lVar14 = (longlong)(int)local_190;
  uVar12 = (local_16c >> 6 ^ local_16c) >> 3 & 1;
  uVar12 = local_16c ^ (uVar12 << 6 | uVar12) << 3;
  uVar12 = (uVar12 >> 4 | uVar12 << 0x1c) & 0xc3c3c3c3 |
           (uVar12 << 4 | local_16c >> 0x1c) & 0x3c3c3c3c;
  uVar12 = ((uVar12 >> 0x10 | uVar12 << 0x10) & 0xce4131be |
           (uVar12 << 0x10 | uVar12 >> 0x10) & 0x31bece41) ^ 0x99927363;
  uVar9 = uVar12 >> 0x13 | uVar12 << 0xd;
  uVar12 = (uVar9 >> 2 | (uVar12 >> 0x13) << 0x1e) & 0x99999999 |
           (uVar9 << 2 | (uVar12 & 0x7ffff) >> 0x11) & 0x66666666;
  uVar9 = (uVar12 >> 4 | uVar12 << 0x1c) & 0x96969696 | (uVar12 << 4 | uVar12 >> 0x1c) & 0x69696969;
  uVar12 = (uVar9 >> 6 ^ uVar9) >> 5 & 0x1f;
  uVar12 = uVar9 ^ (uVar12 << 6 | uVar12) << 5;
  uVar4 = (longlong)(int)(uVar12 >> 2 | uVar9 << 0x1e) & 0xffffffffccccccccU |
          (ulonglong)((uVar12 & 0xccccccc) << 2 | uVar9 >> 0x1e);
  local_190 = 0;
  local_16c = 0;
  plVar13 = (longlong *)(lVar14 + 4 + local_120);
  *plVar13 = *plVar13 + (*(ulonglong *)(uVar4 + 4 + local_118) >> 0x15 & 0x8644d0b8);
  do {
    uVar3 = rdtsc();
    local_13c = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    uVar11 = (ulonglong)local_13c * 0x100 - 0x772c472a;
    register0x00000020 =
         (BADSPACEBASE *)((~(ulonglong)register0x00000020 + 1 ^ 0xffffffffffffffff) + 1);
    uVar5 = (local_13c ^ uVar11) << 0x10 | uVar11 >> 0x30;
    uVar11 = uVar5 * 3;
    uVar11 = (uVar11 >> 9 | uVar11 << 0x37) + uVar5 * 2;
    uVar11 = uVar11 >> 0xf | uVar11 << 0x31;
    uVar11 = (uVar11 * -0x3fffc0 | uVar11 * -0xffff >> 0x3a) * 0x2001 + 0x4d216e65;
    uVar11 = uVar11 >> 6 | uVar11 << 0x3a;
    uVar11 = uVar11 + (uVar11 >> 0xc) + 0x435de980;
    uVar11 = uVar11 >> 5 ^ (uVar11 >> 0x13) + 0x531c2415;
    uVar12 = (int)uVar11 + (int)(uVar11 >> 0xb) + -0x61882cf0 & 0x30f1010d;
    uVar9 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  piVar1 = (int *)(lVar14 + 8 + local_120);
  *piVar1 = *piVar1 + (uVar12 ^ 0xf855dd28);
  piVar1 = (int *)(lVar14 + 4 + local_120);
  *piVar1 = *piVar1 + (uVar12 ^ 0x13b2022c);
  uVar11 = *(longlong *)(lVar14 + 4 + local_120) + 0x87a0d579b9a6e53e;
  uVar6 = (undefined4)((uVar11 >> 0x20 ^ uVar11) >> 2);
  uVar11 = uVar11 ^ (CONCAT44(uVar6,uVar6) & 0x3fff00003fff) << 2;
  uVar5 = (uVar11 << 0x14 | uVar11 >> 0x2c) + 0x612e5647d466577;
  uVar11 = (uVar5 >> 8 ^ uVar5) >> 0x2f & 0xff;
  uVar5 = ~(uVar5 ^ (uVar11 << 8 | uVar11) << 0x2f);
  uVar11 = (ulonglong)((uint)((uVar5 >> 0xf ^ uVar5) >> 0x12) & 0xfff);
  uVar11 = (uVar5 ^ (uVar11 << 0xf | uVar11) << 0x12) + 0xb406600d42403237;
  uVar11 = (uVar11 >> 8 | uVar11 << 0x38) & 0xf906f906f906f906 |
           (uVar11 * 0x100 | uVar11 >> 0x38) & 0x6f906f906f906f9;
  *(ulonglong *)(lVar14 + 4 + local_120) = uVar11;
  plVar13 = (longlong *)(uVar4 + 4 + local_118);
  *plVar13 = *plVar13 + (ulonglong)((uint)(uVar11 >> 0xc) & 0x61010011);
  lVar8 = -0xa99998967f1e914;
  local_18c = (uint)(*(ulonglong *)(lVar14 + 4 + local_120) >> 0xb) & 0x7fffffff;
  local_178._4_4_ = (undefined4)((ulonglong)local_118 >> 0x20);
  local_178 = CONCAT44(local_178._4_4_,(int)(*(ulonglong *)(lVar14 + 4 + local_120) >> 0xe)) ^
              0x91e2fa52;
  local_198 = *(ulonglong *)(lVar14 + 4 + local_120) ^ 0xf5666676980e16ec;
                    /* WARNING: Call to offcut address within same function */
  lVar14 = func_0x000181555ae8();
  pbVar2 = (byte *)(lVar14 + -0x27db9b73 + lVar8 * 2);
  *pbVar2 = *pbVar2 | (byte)((ulonglong)lVar14 >> 8);
  lStack_1d0 = local_1c8 + 0x14afe;
  local_1d8 = local_1c8 + 0x302;
  UNRECOVERED_JUMPTABLE = (code *)(local_1c8 + 0x1648);
  local_1c8 = local_1c8 + 0x1d8;
                    /* WARNING: Could not recover jumptable at 0x000181555c83. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



############ FUN_ 18155a1d0 size=2220 ############

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

int FUN_18155a1d0(undefined8 param_1,undefined8 param_2,undefined1 param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  undefined8 uVar13;
  ulonglong uVar14;
  uint uVar15;
  int *piVar16;
  longlong lVar17;
  int *piVar18;
  int *piVar19;
  uint uVar20;
  int iVar21;
  uint uVar22;
  uint uVar23;
  undefined1 auStack_148 [40];
  undefined4 *local_120;
  undefined1 *local_118;
  uint local_110;
  uint local_f8;
  undefined8 local_f0;
  uint local_e4;
  code *local_e0;
  undefined8 local_d8;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_148;
  uVar22 = (uint)&stack0x00000000;
  if ((((uVar22 & 0x3ff) * (uVar22 & 0x3ff) * 0x10 + 4) % 0x13 & 0x1c) == 0) {
    iVar21 = (uVar22 & 0x8ff) * (uVar22 & 0x8ff) + 1;
    uVar15 = (iVar21 >> 4) + (iVar21 >> 1) + iVar21 * 0x24924924 >> 0x1d;
    uVar15 = (int)(uVar15 - 7) >> 0x1f & uVar15;
  }
  else {
    uVar15 = ((uVar22 & 0x4aff) * (uVar22 & 0x4aff) + 1) % 7;
  }
  local_f8 = ((int)(-uVar15 | uVar15) >> 0x1f) * -0x4038 ^ 0x44d8;
  uVar22 = (((uVar22 & 0x4ff) + 1) * (uVar22 & 0x4ff) + 7) % 0x51;
  local_e4 = ((int)(-uVar22 | uVar22) >> 0x1f) * -0x237 ^ 0xdc7;
  local_f0 = 0x100;
  local_120 = &DAT_18145f6d4;
  local_118 = &LAB_18145f7d4;
  uVar20 = ((((((DAT_18145f6d4 * 0x3d + DAT_18145f6d8) * 0x3d + DAT_18145f6dc) * 0x3d +
              DAT_18145f6e0) * 0x3d + DAT_18145f6e4) * 0x3d + DAT_18145f6e8) * 0x3d + DAT_18145f6ec)
           * 0x3d + DAT_18145f6f0;
  uVar22 = uVar20 & 0x1f | 4;
  uVar23 = uVar20 & 0x1ff;
  uVar23 = (uVar23 + 2) * (uVar23 + 1) * uVar23;
  uVar15 = uVar23 / 3;
  uVar22 = 0x26a2 << ((char)uVar23 + (char)uVar15 * -3 + (uVar22 * uVar22 * 0x13f3 == 0x22b010d) &
                     0x1fU) ^ 0x2422;
  local_d8 = param_1;
  FUN_1815aa4d0(param_1,uVar15,param_3);
  iVar21 = ((((((uVar20 * 0x3d + *(int *)(&DAT_18145f474 + (int)uVar22)) * 0x3d +
               *(int *)(&DAT_18145f478 + (int)uVar22)) * 0x3d +
              *(int *)(&DAT_18145f47c + (int)uVar22)) * 0x3d +
             *(int *)(&DAT_18145f480 + (int)uVar22)) * 0x3d + *(int *)(&DAT_18145f484 + (int)uVar22)
            ) * 0x3d + *(int *)(&DAT_18145f488 + (int)uVar22)) * 0x3d +
           *(int *)(&DAT_18145f48c + (int)uVar22);
  piVar19 = (int *)register0x00000020;
  do {
    piVar16 = (int *)&DAT_00005a3c;
    FUN_181559a32();
    if (((ulonglong)piVar16 & 0xe700) != 0) {
      piVar16 = piVar19;
    }
    uVar15 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
    piVar19 = piVar16;
  } while (uVar15 != 0);
  lVar17 = 4;
  local_118 = (undefined1 *)0x9e3bd4a4ab8064de;
  local_120 = (undefined4 *)CONCAT44(local_120._4_4_,0xab8064de);
  piVar19 = (int *)(&DAT_18145f490 + (int)uVar22);
  do {
    piVar18 = piVar19;
    iVar21 = ((((iVar21 * 0x3d + *piVar18) * 0x3d + piVar18[1]) * 0x3d + piVar18[2]) * 0x3d +
             piVar18[3]) * 0x3d + piVar18[4];
    lVar17 = lVar17 + -1;
    piVar19 = piVar18 + 5;
  } while (lVar17 != 0);
  do {
    FUN_18155c15f(&DAT_00005a3c);
    uVar22 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar22 < 0) {
      uVar22 = (uVar22 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar22 != 0);
  piVar19 = piVar18 + 0xb;
  uVar22 = (uint)piVar19 & 0x1f | 0x32;
  uVar23 = ((((((iVar21 * 0x3d + piVar18[5]) * 0x3d + piVar18[6]) * 0x3d + piVar18[7]) * 0x3d +
             piVar18[8]) * 0x3d + piVar18[9]) * 0x3d + piVar18[10]) * 0x3d + *piVar19;
  uVar15 = uVar23 & 0x1f | 0x6e;
  uVar22 = uVar22 * uVar22 * 0x9085 ^ uVar15 * uVar15 * 0x9557;
  piVar19 = (int *)((longlong)piVar19 +
                   (0x104 - ((longlong)
                             (0x6769 <<
                             (((char)((byte)(-uVar22 >> 0x18) | (byte)(uVar22 >> 0x18)) >> 7) -
                              (char)((int)-(((uVar23 & 0x1fff) * (uVar23 & 0x1fff) + 1) % 7) >> 0x1f
                                    ) & 0x1fU)) ^ 0x6669U)));
  iVar21 = *piVar19;
  iVar1 = piVar19[1];
  iVar2 = piVar19[2];
  iVar3 = piVar19[3];
  piVar19 = piVar19 + 4;
  iVar4 = *piVar19;
  piVar19 = (int *)((longlong)piVar19 +
                   (0xc6deL >> ((byte)(0 << ((byte)piVar19 & 0x1f)) & 0x3f) ^ 0xc6daU));
  iVar5 = *piVar19;
  iVar6 = piVar19[1];
  iVar7 = piVar19[2];
  iVar8 = piVar19[3];
  iVar9 = piVar19[4];
  iVar10 = piVar19[5];
  do {
    FUN_1815587ab();
    FUN_18155bd3c();
    uVar22 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar22 < 0) {
      uVar22 = (uVar22 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar22 != 0);
  do {
    uVar13 = rdtsc();
    local_110 = (uint)uVar13 ^ (uint)((ulonglong)uVar13 >> 0x20);
    uVar22 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar22 < 0) {
      uVar22 = (uVar22 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar22 != 0);
  local_110 = local_110 * -0x3b317a15;
  local_110 = (local_110 >> 0x18 ^ local_110) * 0x5bd1c2b2;
  if (local_110 < 0xb3cc06) {
    do {
      local_e0 = FUN_18141db20;
      uVar22 = (*piVar16 + 1) * *piVar16 & 0x80000001;
      if ((int)uVar22 < 0) {
        uVar22 = (uVar22 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar22 != 0);
    uVar14 = FUN_18141db20(0,0xc392);
    if (1 < uVar14) {
      FUN_18113eab0();
    }
  }
  iVar11 = piVar19[6];
  iVar12 = piVar19[7];
  do {
    FUN_18155932f(&DAT_00005a3c);
    uVar22 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar22 < 0) {
      uVar22 = (uVar22 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar22 != 0);
  return ~(((((((((((((((((((((uVar23 * 0x3d + iVar21) * 0x3d + iVar1) * 0x3d + iVar2) * 0x3d +
                           iVar3) * 0x3d + iVar4) * 0x3d + iVar5) * 0x3d + iVar6) * 0x3d + iVar7) *
                       0x3d + iVar8) * 0x3d + iVar9) * 0x3d + iVar10) * 0x3d + iVar11) * 0x3d +
                  iVar12) * 0x3d + piVar19[8]) * 0x3d + piVar19[9]) * 0x3d + piVar19[10]) * 0x3d +
              piVar19[0xb]) * 0x3d + piVar19[0xc]) * 0x3d + piVar19[0xd]) * 0x3d + piVar19[0xe] ^
           0xffffffff) + 1) + 0xf92c868c;
}



############ FUN_ 181560f30 size=1305 ############

/* WARNING: Instruction at (ram,0x000181561715) overlaps instruction at (ram,0x000181561714)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181562088) */
/* WARNING: Removing unreachable block (ram,0x000181561461) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

char FUN_181560f30(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  float fVar2;
  undefined1 *puVar3;
  byte bVar4;
  char cVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  longlong lVar23;
  undefined4 *puVar24;
  undefined8 uVar25;
  undefined8 *puVar26;
  ulonglong uVar27;
  undefined4 *puVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  ulonglong uVar32;
  int iVar33;
  undefined1 *puVar34;
  undefined1 *puVar35;
  longlong lVar36;
  longlong lVar37;
  int *piVar38;
  longlong lVar39;
  ulonglong uVar40;
  ulonglong uVar41;
  bool bVar42;
  float fVar43;
  float fVar44;
  float fVar45;
  undefined4 uVar46;
  float fVar47;
  float fVar48;
  float fVar49;
  float fVar50;
  int unaff_retaddr;
  undefined1 auStack_288 [32];
  float local_268;
  float fStack_260;
  undefined4 *local_258;
  undefined *local_250;
  float fStack_248;
  float fStack_244;
  undefined4 local_240;
  undefined8 local_238;
  int local_230;
  undefined8 local_228;
  code *local_220;
  float fStack_218;
  float fStack_214;
  float fStack_210;
  float fStack_20c;
  undefined1 local_208 [44];
  undefined4 local_1dc;
  undefined8 local_1d0 [6];
  undefined1 auStack_1a0 [24];
  undefined1 local_188 [16];
  undefined8 local_178;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined1 local_e0 [160];
  
  puVar35 = local_188;
  local_178 = 0xfffffffffffffffe;
  local_240 = 0;
  local_230 = 0x50;
  fVar47 = *(float *)(param_1 + 0x9e0);
  fVar48 = *(float *)(param_1 + 0x9e4);
  plVar1 = (longlong *)(param_1 + 0xb0);
  lVar23 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar49 = *(float *)(lVar23 + 0x88) * DAT_1824c4408;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar25 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar25 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  FUN_1813f2500(uVar25,local_208,fVar49);
  puVar24 = &DAT_1814311f8;
  local_250 = &DAT_1814312f8;
  local_238 = 0x100;
  local_258 = puVar24;
  FUN_1804a9ef0(&local_228,local_208);
  local_240 = 2;
  FUN_1812520a0(&local_228);
  uVar25 = FUN_181251cf0(&local_228,local_1d0,DAT_1824c3c7c);
  FUN_181296e50(param_2);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar25);
  FUN_1804888e0(local_1d0[0]);
  local_240 = 0;
  FUN_1804888e0(local_228);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xa08));
  local_138 = *(undefined8 *)(param_1 + 0x360);
  uStack_130 = *(undefined8 *)(param_1 + 0x368);
  local_1dc = 0xc;
  puVar26 = (undefined8 *)FUN_1804ab5a0(&local_138,local_e0);
  local_128 = *puVar26;
  uStack_120 = puVar26[1];
  local_268 = (float)((uint)local_268 & 0xffffff00);
  FUN_1812963b0(param_2,param_1 + 8,&local_128,0xc);
  do {
    uVar25 = rdtsc();
    uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar29 < 0) {
      uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar29 != 0);
  uVar29 = ((uint)uVar25 ^ (uint)((ulonglong)uVar25 >> 0x20)) * -0x7a143d4e;
  if ((uVar29 >> 0x18 ^ uVar29) * -0x5028166b < 0xd5762) {
    do {
      local_220 = FUN_1813bba80;
      uVar29 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar29 < 0) {
        uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar29 != 0);
    uVar27 = FUN_1813bba80(0,0x9735);
    if (1 < uVar27) {
      FUN_18113eab0();
    }
  }
  uVar29 = DAT_1814311f8 * 0x5bd1e995;
  uVar6 = DAT_1814311fc * 0x5bd1e995;
  uVar7 = DAT_181431200 * 0x5bd1e995;
  uVar8 = DAT_181431204 * 0x5bd1e995;
  fVar49 = (float)FUN_181552c20(param_1);
  uVar9 = DAT_181431208 * 0x5bd1e995;
  uVar10 = DAT_18143120c * 0x5bd1e995;
  uVar11 = DAT_181431210 * 0x5bd1e995;
  do {
    func_0x00018155ffc6();
    uVar30 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar30 < 0) {
      uVar30 = (uVar30 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar30 != 0);
  fVar50 = fVar49 * DAT_1824c3d8c + (float)*(int *)(param_1 + 0x38c);
  fVar2 = *(float *)(param_1 + 900);
  fVar43 = *(float *)(param_1 + 0x388);
  do {
    uVar30 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar30 < 0) {
      uVar30 = (uVar30 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar30 != 0);
  uVar29 = ((uint)(_UNK_181431240 * 0x5bd1e995) >> 0x18 ^ _UNK_181431240 * 0x5bd1e995) * 0x5bd1e995
           ^ (((uint)(_UNK_18143123c * 0x5bd1e995) >> 0x18 ^ _UNK_18143123c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431238 * 0x5bd1e995) >> 0x18 ^ _UNK_181431238 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431234 * 0x5bd1e995) >> 0x18 ^ _UNK_181431234 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431230 * 0x5bd1e995) >> 0x18 ^ _UNK_181431230 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_18143122c * 0x5bd1e995) >> 0x18 ^ _UNK_18143122c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431228 * 0x5bd1e995) >> 0x18 ^ _UNK_181431228 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431224 * 0x5bd1e995) >> 0x18 ^ _UNK_181431224 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431220 * 0x5bd1e995) >> 0x18 ^ _UNK_181431220 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_18143121c * 0x5bd1e995) >> 0x18 ^ _UNK_18143121c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181431218 * 0x5bd1e995) >> 0x18 ^ _UNK_181431218 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(DAT_181431214 * 0x5bd1e995) >> 0x18 ^ DAT_181431214 * 0x5bd1e995) * 0x5bd1e995
             ^ ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
               ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
               ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
               ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
               ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
               ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
               ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^ 0xb4251004) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
  uVar27 = (ulonglong)uVar29;
  uVar29 = uVar29 * 0x5bd1e995 ^
           ((uint)(_UNK_181431244 * 0x5bd1e995) >> 0x18 ^ _UNK_181431244 * 0x5bd1e995) * 0x5bd1e995;
  uVar40 = (ulonglong)uVar29;
  FUN_18129e350(auStack_1a0);
  do {
    uVar41 = ~(((ulonglong)puVar24 ^ 0xffffffffffffffff) + 1);
    puVar24 = (undefined4 *)(uVar41 + 1);
    func_0x00018156332a(0xe530);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = *(int *)(uVar41 + 0x51) * 0x5bd1e995;
  do {
    uVar32 = 0xe530;
                    /* WARNING: Call to offcut address within same function */
    bVar4 = func_0x000181561416();
    if ((uVar32 & 0xc3) != 0) {
      bVar4 = bVar4 | 0x4c;
      puVar35 = (undefined1 *)(ulonglong)(uint)((int)puVar35 + (int)uVar40);
    }
    lVar39 = uVar27 + uVar40;
    lVar23 = uVar40 - lVar39;
    uVar27 = -lVar23;
    if ((uVar32 & 0xdb00) == 0) {
      return bVar4 + 99;
    }
    uVar40 = lVar39 + lVar23;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = *(int *)(uVar41 + 0x55) * 0x5bd1e995;
  uVar8 = (uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
          ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^ uVar29 * 0x5bd1e995) * 0x5bd1e995;
  uVar32 = (ulonglong)uVar8;
  uVar29 = (((uint)local_238 & 0xcff) - 1) * ((uint)local_238 & 0xcff) - 1 & 1;
  uVar40 = (ulonglong)uVar29;
  bVar4 = (byte)uVar8 & 0xf;
  uVar29 = ((int)(-uVar29 | uVar29) >> 0x1f) >> (bVar4 * bVar4 * (bVar4 + 1) * (bVar4 + 1) & 1);
  uVar27 = (longlong)(((int)(-uVar29 | uVar29) >> 0x1f) * -0x28a4) ^ 0x29a4;
  lVar39 = uVar27 - 0xa8;
  uVar29 = *(int *)((longlong)puVar24 + lVar39) * 0x5bd1e995;
  uVar6 = *(int *)(uVar41 + 5 + lVar39) * 0x5bd1e995;
  uVar7 = *(int *)(uVar41 + 9 + lVar39) * 0x5bd1e995;
  lVar23 = *(longlong *)(puVar35 + 400);
  piVar38 = (int *)(puVar35 + 0x188);
  do {
    func_0x0001815629fe(0xe530);
    lVar37 = ((ulonglong)piVar38 ^ uVar32 ^ 0x7bf6caab) + uVar40;
    lVar36 = uVar40 - lVar37;
    uVar40 = lVar37 + lVar36;
    piVar38 = (int *)(-lVar36 ^ 0x7bf6caabU ^ uVar32);
    uVar9 = (*piVar38 + 1) * *piVar38 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  if (0.0 < fVar50) {
    fStack_248 = fVar2;
    fStack_244 = fVar43;
    FUN_1812a0750(puVar35 + -0x30,0,fVar2);
    fVar43 = cosf(fVar47);
    fVar44 = sinf(fVar47);
    fStack_214 = fStack_244 - fVar43 * fVar50;
    fStack_218 = fVar44 * fVar50 + fStack_248;
    puVar28 = (undefined4 *)func_0x0001804ab740(&fStack_218,puVar35 + 0x18,puVar35 + -0x30);
    FUN_18129deb0(puVar35 + -0x18,*puVar28,puVar28[1]);
    fVar44 = _DAT_1824c4654;
    fVar43 = DAT_1824c3c94;
    if (fVar48 <= fVar47) {
      for (fVar47 = fVar47 - DAT_1824c3c94; fVar48 < fVar47; fVar47 = fVar47 + fVar44) {
        local_268 = fVar47;
        uVar25 = FUN_1804ab790(&fStack_248,puVar35 + 0x28,fVar50);
        puVar28 = (undefined4 *)func_0x0001804ab740(uVar25,puVar35 + 0x30,puVar35 + -0x30);
        FUN_18129ddd0(puVar35 + -0x18,*puVar28,puVar28[1]);
      }
    }
    else {
      while (fVar47 = fVar47 + fVar43, fVar47 < fVar48) {
        fVar44 = cosf(fVar47);
        fVar45 = sinf(fVar47);
        fStack_20c = fStack_244 - fVar50 * fVar44;
        fStack_210 = fVar50 * fVar45 + fStack_248;
        puVar28 = (undefined4 *)func_0x0001804ab740(&fStack_210,puVar35 + 0x20,puVar35 + -0x30);
        FUN_18129ddd0(puVar35 + -0x18,*puVar28,puVar28[1]);
      }
    }
    local_268 = fVar48;
    uVar25 = FUN_1804ab790(&fStack_248,puVar35 + 0x38,fVar50);
    puVar28 = (undefined4 *)func_0x0001804ab740(uVar25,puVar35 + 0x40,puVar35 + -0x30);
    FUN_18129ddd0(puVar35 + -0x18,*puVar28,puVar28[1]);
  }
  uVar9 = *(int *)(uVar41 + 0xd + lVar39) * 0x5bd1e995;
  puVar28 = (undefined4 *)
            FUN_1812a2a20(lVar23 + 0xa0c,puVar35 + -0x50,*(undefined4 *)(lVar23 + 0xa10));
  uVar25 = *(undefined8 *)(puVar35 + 0x198);
  FUN_181296c00(uVar25,*puVar28);
  uVar10 = *(int *)(uVar41 + 0x11 + lVar39) * 0x5bd1e995;
  uVar11 = *(int *)(uVar41 + 0x15 + lVar39) * 0x5bd1e995;
  *(undefined8 *)(puVar35 + -0x5c) = 0;
  *(undefined8 *)(puVar35 + -0x6c) = _DAT_1824c4780;
  *(undefined8 *)(puVar35 + -100) = _UNK_1824c4788;
  *(undefined4 *)(puVar35 + -0x5c) = DAT_1824c3ea4;
  *(undefined4 *)(puVar35 + -0x58) = 0;
  uVar46 = FUN_181552c20(lVar23);
  *(undefined4 *)(puVar35 + -0x78) = uVar46;
  *(undefined8 *)(puVar35 + -0x74) = 1;
  FUN_181295d20(uVar25,puVar35 + -0x18,puVar35 + -0x78,puVar35 + -0x6c);
  uVar30 = *(int *)(uVar41 + 0x19 + lVar39) * 0x5bd1e995;
  uVar12 = *(int *)(uVar41 + 0x1d + lVar39) * 0x5bd1e995;
  uVar13 = *(int *)(uVar41 + 0x21 + lVar39) * 0x5bd1e995;
  uVar14 = *(int *)(uVar41 + 0x25 + lVar39) * 0x5bd1e995;
  uVar15 = *(int *)(uVar41 + 0x29 + lVar39) * 0x5bd1e995;
  uVar16 = *(int *)(uVar41 + 0x2d + lVar39) * 0x5bd1e995;
  uVar17 = *(int *)(uVar41 + 0x31 + lVar39) * 0x5bd1e995;
  lVar39 = uVar27 - 0x74;
  uVar18 = *(int *)((longlong)puVar24 + lVar39) * 0x5bd1e995;
  uVar7 = (uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
          ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
          ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
          ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
          ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
          ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
          ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
          ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
          (((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
           ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
           ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
           ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
           ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^ uVar8 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995)
           * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995 ^ (uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995;
  uVar8 = (uint)local_238;
  uVar6 = (uint)lVar39 & 0xf | 0x4b;
  uVar29 = uVar8 & 0x7f | 0x42;
  uVar6 = uVar29 * uVar29 * 0x8f1d ^ uVar6 * uVar6 * 0x79b1;
  uVar29 = (uVar8 & 0x1dff) * (uVar8 & 0x1dff) * 0x10 + 4;
  uVar29 = ((int)(-uVar6 | uVar6) >> 0x1f) >> ((char)uVar29 + (char)(uVar29 / 0x13) * -0x13 & 0x1fU)
  ;
  lVar39 = lVar39 + (0xc - ((ulonglong)
                            ((((uVar8 & 0xff) - 1) * (uVar8 & 0xff) & uVar7 & 1) - 0x54a1 & 0xa94d)
                           ^ (longlong)(((int)(-uVar29 | uVar29) >> 0x1f) * -0xa945)));
  uVar29 = *(int *)((longlong)puVar24 + lVar39) * 0x5bd1e995;
  uVar6 = *(int *)(uVar41 + 5 + lVar39) * 0x5bd1e995;
  do {
    uVar8 = (*(int *)(puVar35 + 0x188) + 1) * *(int *)(puVar35 + 0x188) & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  cVar5 = FUN_18133eaa0(lVar23);
  if (cVar5 != '\0') {
    local_268 = fVar49;
    fStack_260 = fVar50;
    FUN_181560a10(lVar23,uVar25,fVar2);
  }
  FUN_18129e350(puVar35 + 0x80);
  uVar8 = *(int *)(uVar41 + 9 + lVar39) * 0x5bd1e995;
  uVar9 = *(int *)(uVar41 + 0xd + lVar39) * 0x5bd1e995;
  *(undefined8 *)(puVar35 + 400) = 0xb0946277b9380f13;
  *(int *)(puVar35 + 400) = (int)*(undefined8 *)(puVar35 + 400);
  uVar10 = *(int *)(uVar41 + 0x11 + lVar39) * 0x5bd1e995;
  do {
    uVar11 = (*(int *)(puVar35 + 0x188) + 1) * *(int *)(puVar35 + 0x188) & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = *(int *)(uVar41 + 0x15 + lVar39) * 0x5bd1e995;
  uVar30 = *(int *)(uVar41 + 0x19 + lVar39) * 0x5bd1e995;
  uVar12 = *(int *)(uVar41 + 0x1d + lVar39) * 0x5bd1e995;
  uVar13 = *(int *)(uVar41 + 0x21 + lVar39) * 0x5bd1e995;
  uVar14 = *(int *)(uVar41 + 0x25 + lVar39) * 0x5bd1e995;
  uVar15 = *(int *)(uVar41 + 0x29 + lVar39) * 0x5bd1e995;
  uVar16 = *(int *)(uVar41 + 0x2d + lVar39) * 0x5bd1e995;
  uVar17 = *(int *)(uVar41 + 0x31 + lVar39) * 0x5bd1e995;
  fVar49 = (float)(*(int *)(lVar23 + 0x38c) * 2);
  fVar47 = (float)*(int *)(lVar23 + 0x38c);
  fVar48 = *(float *)(lVar23 + 0x388) - fVar47;
  fVar47 = *(float *)(lVar23 + 900) - fVar47;
  *(float *)(puVar35 + -0x40) = fVar47;
  *(float *)(puVar35 + -0x3c) = fVar48;
  *(float *)(puVar35 + -0x38) = fVar49;
  *(float *)(puVar35 + -0x34) = fVar49;
  *(float *)(puVar35 + 0x70) = fVar47;
  *(float *)(puVar35 + 0x74) = fVar48;
  *(float *)(puVar35 + 0x78) = fVar49;
  *(float *)(puVar35 + 0x7c) = fVar49;
  FUN_18129d1e0(puVar35 + 0x80,puVar35 + 0x70);
  uVar18 = *(int *)(uVar41 + 0x35 + lVar39) * 0x5bd1e995;
  uVar19 = *(int *)(uVar41 + 0x39 + lVar39) * 0x5bd1e995;
  lVar36 = (longlong)*(int *)(puVar35 + 0x1a8);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001815615f9();
    uVar31 = (*(int *)(puVar35 + 0x188) + 1) * *(int *)(puVar35 + 0x188) & 0x80000001;
    if ((int)uVar31 < 0) {
      uVar31 = (uVar31 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar31 != 0);
  uVar31 = *(int *)(uVar41 + 0x3d + lVar39) * 0x5bd1e995;
  uVar20 = *(int *)(uVar41 + 0x41 + lVar39) * 0x5bd1e995;
  uVar25 = *(undefined8 *)(puVar35 + 0x198);
  FUN_181296c00(uVar25,*(undefined4 *)(lVar23 + 0xa18));
  uVar21 = *(int *)(uVar41 + 0x45 + lVar39) * 0x5bd1e995;
  lVar39 = lVar39 + 0x48;
  uVar22 = *(int *)((longlong)puVar24 + lVar39) * 0x5bd1e995;
  uVar9 = (uVar22 >> 0x18 ^ uVar22) * 0x5bd1e995 ^
          ((uVar21 >> 0x18 ^ uVar21) * 0x5bd1e995 ^
          ((uVar20 >> 0x18 ^ uVar20) * 0x5bd1e995 ^
          ((uVar31 >> 0x18 ^ uVar31) * 0x5bd1e995 ^
          ((uVar19 >> 0x18 ^ uVar19) * 0x5bd1e995 ^
          ((uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
          ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
          ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
          ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
          ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
          ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
          ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
          ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
          ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
          ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
          ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
          ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
          (((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^ uVar7 * 0x5bd1e995) * 0x5bd1e995 ^
          (uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995;
  uVar40 = (ulonglong)uVar9;
  uVar29 = (uint)lVar39 & 0x4f;
  iVar33 = (uVar9 & 0x64ff) * (uVar9 & 0x64ff) + 1;
  uVar6 = iVar33 * 0x24924924 + (iVar33 >> 4) + (iVar33 >> 1) >> 0x1d;
  uVar8 = (int)(uVar6 - 7) >> 0x1f & uVar6 | uVar9;
  uVar6 = (uint)local_238 & 0x3f | 0x48;
  uVar7 = (uint)lVar39 & 0x7f | 0x54;
  uVar6 = uVar6 * uVar6 * 0x96fd ^ uVar7 * uVar7 * 0x355;
  lVar39 = lVar39 + (((longlong)(((int)(-uVar8 | uVar8) >> 0x1f) * -0x96ca) ^ 0x968eU) -
                    ((longlong)(((int)(-uVar6 | uVar6) >> 0x1f) * -0x26b9) ^
                    ((longlong)(int)((uVar29 + 1) * (uVar29 + 1) * uVar29 * uVar29 & 3) | 0x26f9U)))
  ;
  uVar29 = *(int *)((longlong)puVar24 + lVar39) * 0x5bd1e995;
  uVar12 = (uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^ uVar9 * 0x5bd1e995;
  uVar29 = (uint)local_238 & 0x33ff;
  iVar33 = uVar29 * uVar29 + 1;
  uVar29 = iVar33 * 0x24924924 + (iVar33 >> 4) + (iVar33 >> 1) >> 0x1d;
  uVar29 = (int)(uVar29 - 7) >> 0x1f & uVar29 | uVar12;
  lVar39 = lVar39 + (ulonglong)(((int)(-uVar29 | uVar29) >> 0x1f ^ 0xfffffffbU) & 0xf257);
  uVar29 = *(int *)((longlong)puVar24 + lVar39) * 0x5bd1e995;
  uVar6 = *(int *)(uVar41 + 5 + lVar39) * 0x5bd1e995;
  uVar7 = *(int *)(uVar41 + 9 + lVar39) * 0x5bd1e995;
  uVar8 = *(int *)(uVar41 + 0xd + lVar39) * 0x5bd1e995;
  uVar9 = *(int *)(uVar41 + 0x11 + lVar39) * 0x5bd1e995;
  uVar10 = *(int *)(uVar41 + 0x15 + lVar39) * 0x5bd1e995;
  uVar11 = *(int *)(uVar41 + 0x19 + lVar39) * 0x5bd1e995;
  uVar30 = *(int *)(uVar41 + 0x1d + lVar39) * 0x5bd1e995;
  uVar29 = (((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
            ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
            ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
            ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
            ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
            ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
            ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^ uVar12 * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995 ^
           (uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995) + 0x37f763b2;
  uVar29 = (uVar29 * 8 | uVar29 >> 0x1d) + 0x2a6e555f;
  uVar29 = (uVar29 >> 5 | uVar29 * 0x8000000) + 0x3613ed9;
  bVar42 = (uVar29 >> 0x1a | uVar29 * 0x40) == *(uint *)(puVar35 + 400);
  uVar29 = (uint)CONCAT11(bVar42,bVar42);
  uVar27 = (ulonglong)uVar29;
  if (uVar29 == 0) {
    FUN_181295ed0(uVar25,puVar35 + 0x80);
    func_0x000181563ca4();
    cVar5 = thunk_FUN_1805a9280();
    return cVar5;
  }
  FUN_181295ed0(uVar25,puVar35 + 0x80);
  lVar23 = (longlong)local_230;
  puVar3 = auStack_288;
  do {
    puVar34 = puVar3;
                    /* WARNING: Call to offcut address within same function */
    *(undefined **)(puVar34 + -8) = &UNK_1815623ac;
    lVar39 = lVar23;
    func_0x000181561416();
    *(ulonglong *)(puVar34 + -8) = uVar40;
    *(ulonglong *)(puVar34 + -0x10) = uVar27;
    *(longlong *)(puVar34 + -0x18) = lVar36;
    lVar39 = -lVar39;
    lVar36 = *(longlong *)(puVar34 + lVar39 + 0x38);
    uVar27 = *(ulonglong *)(puVar34 + lVar39 + 0x40);
    uVar40 = *(ulonglong *)(puVar34 + lVar39 + 0x48);
    uVar29 = (*(int *)(puVar35 + 0x188) + 1) * *(int *)(puVar35 + 0x188) & 0x80000001;
    if ((int)uVar29 < 0) {
      uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
    }
    puVar3 = puVar34 + lVar39 + 0x50;
  } while (uVar29 != 0);
  *(undefined8 *)(puVar34 + lVar39 + 0x48) = 0x181562451;
  FUN_180474220(puVar35 + 0x80);
  *(undefined8 *)(puVar34 + lVar39 + 0x48) = 0x18156245b;
  FUN_180474220(puVar35 + -0x18);
  uVar25 = *(undefined8 *)(puVar35 + -0x80);
  *(undefined8 *)(puVar34 + lVar39 + 0x48) = 0x181562465;
  cVar5 = FUN_1804888e0(uVar25);
  return cVar5;
}



############ FUN_ 1815729a0 size=2197 ############

/* WARNING: Removing unreachable block (ram,0x00018157330d) */
/* WARNING: Removing unreachable block (ram,0x000181572a7b) */
/* WARNING: Removing unreachable block (ram,0x000181572b3e) */
/* WARNING: Removing unreachable block (ram,0x0001815735ef) */
/* WARNING: Removing unreachable block (ram,0x000181572a23) */

ulonglong FUN_1815729a0(longlong param_1)

{
  int *piVar1;
  longlong lVar2;
  undefined8 uVar3;
  byte bVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int iVar7;
  uint uVar8;
  uint *puVar9;
  code **ppcVar10;
  uint *puVar11;
  uint uVar12;
  undefined4 *puVar13;
  longlong *plVar14;
  longlong lVar15;
  uint uVar16;
  uint uVar17;
  longlong *plVar18;
  uint uVar19;
  longlong *plVar20;
  uint uVar21;
  longlong lVar22;
  longlong lVar23;
  int unaff_retaddr;
  undefined1 auStack_1c8 [32];
  undefined *local_1a8;
  uint local_1a0 [2];
  undefined8 local_198;
  uint local_190;
  uint local_18c;
  longlong local_188;
  uint local_180 [2];
  ulonglong local_178;
  uint local_170;
  uint auStack_16c [4];
  uint local_15c;
  uint local_158;
  undefined4 local_150;
  undefined **local_148;
  longlong local_140;
  undefined4 local_138;
  uint local_134;
  code *local_130;
  undefined8 uStack_128;
  longlong local_108;
  undefined4 local_100;
  undefined4 local_fc [5];
  longlong local_e8;
  undefined8 local_e0;
  undefined1 local_b8 [48];
  undefined4 uStack_88;
  ulonglong local_38;
  
  local_e0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  uVar12 = (uint)&stack0x00000000;
  uVar16 = uVar12 & 0x23f;
  iVar7 = (uVar16 + 2) * (uVar16 + 1) * uVar16;
  local_15c = -(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) - 0x901U & 0xe6be ^
              0xe69e;
  uVar16 = uVar12 & 0x3bf;
  uVar19 = ((uVar16 + 2) * (uVar16 + 1) * uVar16) % 3 ^
           ((uVar12 & 0x1fff) + 1) * (uVar12 & 0x1fff) + 0x2dd9 & 0x80000001;
  uVar16 = ((uVar12 & 0x71ff) * (uVar12 & 0x71ff) + 1) % 7;
  local_158 = 0xffffbfb8U - ((int)(-uVar16 | uVar16) >> 0x1f) & 0xb6a9 ^
              ((int)(-uVar19 | uVar19) >> 0x1f) * -0xb5f9;
  local_140 = param_1;
  (**(code **)(*(longlong *)(param_1 + 0x2e8) + 0x10))((longlong *)(param_1 + 0x2e8),local_b8);
  do {
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  do {
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  local_1a0[0] = 0xc5;
  do {
    puVar9 = local_180;
    FUN_181574047(puVar9,local_180);
    uVar3 = rdtsc();
    *puVar9 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  local_180[0] = (local_180[0] * 0x1a85ec53 >> 0x18 ^ local_180[0] * 0x1a85ec53) * -0x733212ab;
  if (local_180[0] < 0x1414141f) {
    local_130 = (code *)0x0;
    do {
      ppcVar10 = &local_130;
      FUN_1815744ce(ppcVar10,&local_130);
      *ppcVar10 = FUN_181194940;
      uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar16 < 0) {
        uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar16 != 0);
    uVar5 = (*local_130)(0,0xb7fc);
    if (1 < uVar5) {
      FUN_18113eab0();
    }
  }
  do {
    local_138 = 0xa278bb48;
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  local_150 = 0x74d52383;
  local_178 = 0x6f01000;
  local_198 = 0x10;
  local_148 = &PTR__guard_check_icall_181bab6a8;
  local_1a8 = &DAT_181bab6b8;
  plVar14 = (longlong *)&DAT_186f01000;
  do {
    local_190 = 0x8e56f94c;
    local_100 = 4;
    local_e8 = 0x181572e6a;
    FUN_18157499a();
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar16 = (local_190 >> 0xc ^ local_190) & 0x1f;
  uVar16 = ((uVar16 << 0xc | uVar16) ^ local_190) + 0x101b3ac7;
  uVar12 = uVar16 >> 0xf | uVar16 * 0x20000;
  uVar16 = (uVar12 >> 2 & 0xcccccccc | (uVar16 >> 0xf) << 0x1e |
           (uVar12 & 0xccccccc) << 2 | (uVar16 & 0x7fff) >> 0xd) + 0xda0247a9;
  uVar12 = ((uVar16 >> 0x10 | uVar16 * 0x10000) & 0xb2264dd9 |
           (uVar16 * 0x10000 | uVar16 >> 0x10) & 0x4dd9b226) + 0xb6d806d1;
  uVar16 = (uVar12 >> 2 ^ uVar12) >> 9 & 1;
  uVar16 = uVar12 ^ (uVar16 * 4 | uVar16) << 9;
  local_190 = (uVar12 >> 0x10 | uVar16 << 0x10) & 0x916a6e95 |
              (uVar16 << 0x10 | uVar12 >> 0x10) & 0x6e95916a;
  do {
    plVar18 = &local_108;
    puVar13 = local_fc;
    puVar9 = &local_170;
    FUN_181572045();
    lVar22 = 0x181572f47;
    *puVar9 = 0x5bdecd78;
    *puVar13 = 0x46;
    *plVar18 = 0x181572f47;
    FUN_1815746cd();
    lVar23 = local_e8;
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar16 = (local_170 >> 0xc | local_170 << 0x14) + 0x83de9cb0;
  uVar16 = (uVar16 * 4 | uVar16 >> 0x1e) & 0x99999999 |
           (uVar16 >> 2 | (local_170 >> 0xc) << 0x1e) & 0x66666666;
  uVar16 = (uVar16 << 8 | uVar16 >> 0x18) & 0xf708f708 | (uVar16 >> 8 | uVar16 << 0x18) & 0x8f708f7;
  uVar16 = (uVar16 >> 0x10 | uVar16 << 0x10) & 0xdda5225a |
           (uVar16 << 0x10 | uVar16 >> 0x10) & 0x225adda5;
  uVar12 = uVar16 >> 5 | uVar16 << 0x1b;
  uVar12 = (uVar12 >> 2 | (uVar16 >> 5) << 0x1e) & 0x99999999 |
           (uVar12 << 2 | (uVar16 & 0x1f) >> 3) & 0x66666666;
  uVar16 = (uVar12 >> 0xb ^ uVar12) & 0x3ff;
  uVar12 = uVar12 ^ (uVar16 << 0xb | uVar16);
  lVar15 = (longlong)(int)local_190;
  uVar5 = (longlong)(int)(uVar12 << 0x10 | uVar12 >> 0x10) & 0xffffffffc6f5390aU |
          (ulonglong)((uVar12 >> 0x10 | uVar12 << 0x10) & 0x390ac6f5);
  local_190 = 0;
  local_170 = 0;
  plVar18 = (longlong *)(lVar15 + 4 + local_e8);
  *plVar18 = *plVar18 + (ulonglong)((uint)(*(ulonglong *)(uVar5 + 4 + local_108) >> 5) & 0x202042d);
  do {
    puVar9 = &local_134;
    puVar11 = &local_18c;
    FUN_1815727fa();
    uVar3 = rdtsc();
    uVar16 = (int)uVar3 + (int)((ulonglong)uVar3 >> 0x20);
    *puVar9 = uVar16;
    uVar6 = (ulonglong)uVar16 + ((ulonglong)(uVar16 >> 6) | (ulonglong)uVar16 << 0x3a) + 0x583bf12;
    uVar6 = ((uVar6 * 0x20 | uVar6 >> 0x3b) ^ (uVar6 & 0x7ffffffffffffff) >> 1) * 0x84 - 0x9ca64d;
    *puVar11 = (uint)((uVar6 ^ (uVar6 * 3 >> 0xd) - 0x3b1fca8f) >> 10);
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  piVar1 = (int *)(lVar15 + 8 + lVar23);
  *piVar1 = *piVar1 + (local_18c ^ 0xd7bed2e);
  piVar1 = (int *)(lVar15 + 4 + lVar23);
  *piVar1 = *piVar1 + (local_18c ^ 0x9c9de452);
  lVar2 = *(longlong *)(lVar15 + 4 + lVar23);
  uVar6 = lVar2 + 0x6a0762f8c200d6b4;
  uVar6 = (uVar6 >> 2 | lVar2 << 0x3e) & 0x9999999999999999 |
          (uVar6 * 4 | uVar6 >> 0x3e) & 0x6666666666666666;
  uVar6 = (uVar6 << 4 | uVar6 >> 0x3c) + 0x749a206b551aca81;
  uVar6 = (uVar6 >> 2 | uVar6 << 0x3e) & 0x9999999999999999 |
          (uVar6 * 4 | uVar6 >> 0x3e) & 0x6666666666666666;
  uVar16 = ((uint)(uVar6 >> 0x26) ^ (uint)(uVar6 >> 0x10)) & 0x7fff;
  uVar6 = ((ulonglong)uVar16 << 0x16 | (ulonglong)uVar16) << 0x10 ^ uVar6;
  uVar6 = (uVar6 >> 0x28 | uVar6 << 0x18) + 0xf2dee6ddca319b4;
  uVar6 = uVar6 >> 0xd | uVar6 << 0x33;
  *(ulonglong *)(lVar15 + 4 + lVar23) = uVar6;
  plVar18 = (longlong *)(uVar5 + 4 + local_108);
  *plVar18 = *plVar18 + (ulonglong)((uint)(uVar6 >> 1) & 0xa012424);
  local_18c = (uint)(*(ulonglong *)(lVar15 + 4 + lVar23) >> 0x1b) & 0x7fffffff;
  local_198 = CONCAT44(local_198._4_4_,(int)(*(ulonglong *)(lVar15 + 4 + lVar23) >> 0x1b)) ^
              0xc4514b9d;
  local_178 = *(ulonglong *)(lVar15 + 4 + lVar23) ^ 0x8287570d2512cefd;
  lVar15 = 0;
  lVar23 = (longlong)local_1a8 - (longlong)local_148;
  local_1a8 = (undefined *)0x29f2827f5d0d83c4;
  local_188 = lVar23;
  do {
    FUN_181572045(0xf22c);
    if (lVar22 != 0) {
      uVar5 = FUN_181573288();
      return uVar5;
    }
    lVar22 = 0;
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar16 = (uint)lVar23;
LAB_1815732db:
  uVar19 = (uint)lVar15;
  uVar12 = (uint)lVar23 & 0x3f;
  uVar12 = (uVar12 + 2) * (uVar12 + 1) * uVar12;
  uVar17 = (int)((((int)uVar12 >> 1) - ((int)uVar12 >> 3)) + uVar12 * 0x55555555) >> 0x1e;
  if ((local_1a0[0] & 0xe0) == 0) {
    uVar21 = uVar19 & 0x1f | 0x2b;
    uVar8 = local_1a0[0] & 0xf | 0x4b;
    uVar21 = uVar21 * uVar21 * 0x8baf ^ uVar8 * uVar8 * 0x4339;
  }
  else {
    uVar21 = ((uVar19 & 0x5ff) + 1) * (uVar19 & 0x5ff) + 7;
    uVar12 = uVar21 / 0x51;
    uVar21 = uVar21 % 0x51;
  }
  if ((((uVar16 ^ 0x119) & 0x215b) + uVar17 | uVar16 ^ 0x8399) ==
      ((int)(-uVar21 | uVar21) >> 0x1f & (uVar19 ^ 0x208) & 0x562a | uVar19 ^ 0x8399)) {
    auStack_16c[0] = local_1a0[0];
                    /* WARNING: Call to offcut address within same function */
    uVar5 = func_0x000181573681(auStack_16c,uVar12,(~(ulonglong)uVar17 + 1 ^ 0xffffffffffffffff) + 1
                               );
    return uVar5 & 0xffffffffffffff4d;
  }
  puVar13 = (undefined4 *)((longlong)local_148 + lVar15);
  if ((plVar14 != (longlong *)0x0) && (lVar22 = *plVar14, -1 < lVar22)) {
    uStack_128 = 0x2621fc0;
    do {
      if (puVar13 < IMAGE_DOS_HEADER_180000000.e_magic + lVar22 + 8) {
        if (-1 < lVar22) {
          plVar18 = (longlong *)(lVar22 + 0x180000000);
          if (plVar18 < puVar13 + 1) {
            uStack_88 = *puVar13;
            plVar20 = plVar14;
            goto LAB_181573470;
          }
        }
        break;
      }
      plVar14 = plVar14 + 1;
      lVar22 = *plVar14;
    } while (-1 < lVar22);
  }
  goto LAB_181573494;
  while (plVar18 = (longlong *)(lVar22 + 0x180000000), plVar18 < puVar13 + 1) {
LAB_181573470:
    *(longlong *)(&stack0x00017fffff78 + (lVar22 - (longlong)puVar13)) = *plVar18 + -0x180000000;
    plVar20 = plVar20 + 1;
    lVar22 = *plVar20;
    if (lVar22 < 0) break;
  }
LAB_181573494:
  local_1a0[0] = local_1a0[0] >> 0x1c ^ local_1a0[0] << 4;
  do {
    puVar9 = local_1a0;
    uVar12 = func_0x000181580067();
    *puVar9 = uVar12;
    lVar23 = local_188;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  do {
    FUN_1815727fa(0xf22c);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  bVar4 = (byte)lVar23 & 0x5f;
  uVar12 = (((local_1a0[0] & 0x2fff) + 1) * (local_1a0[0] & 0x2fff) + 7) % 0x51 <<
           ((bVar4 + 1) * (bVar4 + 1) * bVar4 * bVar4 & 3);
  lVar15 = lVar15 + ((ulonglong)(~((int)(-uVar12 | uVar12) >> 0x1f & 0xffffff7fU) & 0x4ef2) - 0x7c);
  goto LAB_1815732db;
}



############ FUN_ 181585b70 size=5135 ############

/* WARNING: Instruction at (ram,0x0001815880b7) overlaps instruction at (ram,0x0001815880b5)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181588172) */
/* WARNING: Removing unreachable block (ram,0x000181586220) */
/* WARNING: Removing unreachable block (ram,0x000181585f7f) */
/* WARNING: Removing unreachable block (ram,0x000181585be0) */
/* WARNING: Removing unreachable block (ram,0x000181585f34) */
/* WARNING: Removing unreachable block (ram,0x00018158620a) */
/* WARNING: Removing unreachable block (ram,0x000181586310) */
/* WARNING: Removing unreachable block (ram,0x0001815880b5) */
/* WARNING: Removing unreachable block (ram,0x00018158817e) */
/* WARNING: Removing unreachable block (ram,0x000181586736) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8
.?AVSoothe2XYSliderArea@@::vtbl___AVSoothe2XYSliderArea__(longlong param_1,longlong param_2)

{
  char cVar1;
  uint uVar2;
  undefined8 uVar3;
  int iVar4;
  ulonglong uVar5;
  code **ppcVar6;
  uint *puVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  longlong lVar12;
  uint uVar13;
  uint uVar14;
  longlong *plVar15;
  ulonglong uVar16;
  uint uVar17;
  uint uVar18;
  longlong lVar19;
  uint uVar20;
  undefined1 *puVar21;
  byte bVar22;
  uint uVar23;
  uint uVar24;
  int unaff_retaddr;
  undefined1 auStack_238 [32];
  undefined4 local_218;
  int iStack_208;
  int local_204;
  int *local_200;
  uint local_1f8;
  ulonglong local_1f0;
  undefined4 local_1e8;
  int iStack_1e4;
  undefined *local_1e0;
  longlong local_1d8;
  int iStack_1d0;
  int *piStack_1c8;
  undefined1 *local_1c0;
  undefined8 local_1b8;
  uint uStack_1b0;
  longlong local_1a8;
  uint uStack_1a0;
  uint local_198;
  uint local_194;
  longlong local_190;
  uint uStack_184;
  int iStack_180;
  undefined4 uStack_178;
  code *pcStack_170;
  int iStack_168;
  int iStack_164;
  uint uStack_160;
  int iStack_15c;
  undefined4 uStack_158;
  undefined4 uStack_154;
  undefined4 uStack_150;
  undefined4 uStack_14c;
  longlong lStack_140;
  longlong local_138 [3];
  undefined8 local_120;
  undefined1 local_108 [176];
  ulonglong local_58;
  
  local_120 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_238;
  uVar13 = (uint)&stack0x00000000;
  local_198 = 0xca37 >> ((char)((int)-(((uVar13 & 0xdff) + 1) * (uVar13 & 0xdff) + 0x72e9 &
                                      0x80000001) >> 0x1f) -
                         (char)((int)-((((uVar13 & 0x3eff) + 1) * (uVar13 & 0x3eff) + 7) % 0x51) >>
                               0x1f) & 0x1fU) ^ 0xcb47;
  iVar4 = (uVar13 & 0x44ff) * (uVar13 & 0x44ff) + 1;
  uVar9 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  uVar13 = (((uVar13 & 0x20ff) + 1) * (uVar13 & 0x20ff) + 7) % 0x51;
  uVar9 = (int)((-uVar13 | uVar13) & (-uVar9 | uVar9)) >> 0x1f;
  local_194 = ((int)(-uVar9 | uVar9) >> 0x1f) * -0x81e4 ^ 0x89b4;
  local_218 = 0;
  puVar21 = (undefined1 *)register0x00000020;
  local_1d8 = param_1;
  local_190 = param_2;
  local_1a8 = __RTDynamicCast(*(undefined8 *)(param_2 + 0x38),0,
                              &juce::Component::RTTI_Type_Descriptor,&XYThumb::RTTI_Type_Descriptor)
  ;
  local_200 = (int *)&DAT_18161e7e4;
  local_1e0 = &UNK_18161e8e4;
  local_1b8 = CONCAT44(local_1b8._4_4_,0xe6cc9c2c);
  local_1f8 = -0x3361d2af;
  local_204 = 0x1b873593;
  local_1e8 = 0xe6546b64;
  local_1f0 = 0x100;
  uVar9 = (_DAT_18161e7e4 * 0x16a88000 | (uint)(_DAT_18161e7e4 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ 0x7eb674f7;
  uVar9 = (DAT_18161e7e8 * 0x16a88000 | (uint)(DAT_18161e7e8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar9 = ~(~uVar9 + 1) + 1;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
    local_1c0 = (undefined1 *)local_200;
  } while (uVar13 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018158809c();
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar9 = (_UNK_18161e7ec * 0x16a88000 | (uint)(_UNK_18161e7ec * -0x3361d2af) >> 0x11) * local_204 ^
          uVar9;
  uVar9 = (ram0x00018161e7f0 * 0x16a88000 | (uint)(ram0x00018161e7f0 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e7f4 * 0x16a88000 | (uint)(ram0x00018161e7f4 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e7f8 * 0x16a88000 | (uint)(ram0x00018161e7f8 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e7fc * 0x16a88000 | (uint)(ram0x00018161e7fc * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e800 * 0x16a88000 | (uint)(ram0x00018161e800 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_18158761c(&DAT_0000ef04);
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar9 = (ram0x00018161e804 * 0x16a88000 | (uint)(ram0x00018161e804 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e808 * 0x16a88000 | (uint)(ram0x00018161e808 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e80c * 0x16a88000 | (uint)(ram0x00018161e80c * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e810 * 0x16a88000 | (uint)(ram0x00018161e810 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e814 * 0x16a88000 | (uint)(ram0x00018161e814 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e818 * 0x16a88000 | (uint)(ram0x00018161e818 * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ram0x00018161e81c * 0x16a88000 | (uint)(ram0x00018161e81c * -0x3361d2af) >> 0x11) *
          local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar13 = (ram0x00018161e820 * 0x16a88000 | (uint)(ram0x00018161e820 * -0x3361d2af) >> 0x11) *
           local_204 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  local_1e0 = (undefined *)(local_1f0 & 0xffffffff);
  uVar9 = (uint)local_1f0 & 0x2f;
  uVar5 = (longlong)(int)(0xd4a3 - ((uVar9 + 1) * (uVar9 + 1) * uVar9 * uVar9 & 0x80000003)) ^
          0xd4a7;
  iVar4 = *(int *)((longlong)&DAT_18161e81e + uVar5 + 2);
  uVar9 = (iVar4 * 0x16a88000 | (uint)(iVar4 * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
  iVar4 = *(int *)((longlong)&DAT_18161e822 + uVar5 + 2);
  uVar14 = (iVar4 * 0x16a88000 | (uint)(iVar4 * -0x3361d2af) >> 0x11) * local_204 ^
           (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uint)local_1f0 & 0x1f | 0x45;
  uVar13 = (uint)local_1f0 & 7 | 0x69;
  lVar12 = uVar5 + 0x40 +
           (0x284 - (((longlong)
                      (int)((uint)(uVar13 * uVar13 * 0x97cd == uVar9 * uVar9 * 0x9d3d) <<
                           ((byte)(uVar5 + 0x40) & 0x1f)) | 0x67dfU) ^ 0x655f));
  uVar9 = (*(int *)(&DAT_18161e7e4 + lVar12) * 0x16a88000 |
          (uint)(*(int *)(&DAT_18161e7e4 + lVar12) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar14 << 0xd | uVar14 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_181587703();
    lVar19 = local_1d8;
    iVar4 = local_204;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  do {
    uStack_178 = 0xe1e33a96;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  iStack_1e4 = -0x7b4e9a12;
  uVar9 = (*(int *)(lVar12 + 0x18161e7e8) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e7e8) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(&UNK_18161e7ec + lVar12) * 0x16a88000 |
          (uint)(*(int *)(&UNK_18161e7ec + lVar12) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(lVar12 + 0x18161e7f0) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e7f0) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(lVar12 + 0x18161e7f4) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e7f4) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(lVar12 + 0x18161e7f8) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e7f8) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(lVar12 + 0x18161e7fc) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e7fc) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(lVar12 + 0x18161e800) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e800) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(lVar12 + 0x18161e804) * 0x16a88000 |
          (uint)(*(int *)(lVar12 + 0x18161e804) * -0x3361d2af) >> 0x11) * local_204 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uStack_1a0 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  if (local_1a8 == 0) {
    uVar3 = FUN_181589070(local_108,local_190);
    FUN_180583860(local_1d8 + 0x1c0,uVar3);
    FUN_1813399b0(local_108);
    uVar9 = (*(int *)(lVar12 + 0x18161e808) * 0x16a88000 |
            (uint)(*(int *)(lVar12 + 0x18161e808) * -0x3361d2af) >> 0x11) * iVar4 ^ uStack_1a0;
    do {
                    /* WARNING: Call to offcut address within same function */
      func_0x000181586266();
      iVar4 = local_204;
      uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar13 != 0);
    uVar9 = (*(int *)(lVar12 + 0x18161e80c) * 0x16a88000 |
            (uint)(*(int *)(lVar12 + 0x18161e80c) * -0x3361d2af) >> 0x11) * local_204 ^
            (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
    uVar9 = (*(int *)(lVar12 + 0x18161e810) * 0x16a88000 |
            (uint)(*(int *)(lVar12 + 0x18161e810) * -0x3361d2af) >> 0x11) * local_204 ^
            (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
    uVar9 = (*(int *)(lVar12 + 0x18161e814) * 0x16a88000 |
            (uint)(*(int *)(lVar12 + 0x18161e814) * -0x3361d2af) >> 0x11) * local_204 ^
            (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
    uVar9 = (*(int *)(lVar12 + 0x18161e818) * 0x16a88000 |
            (uint)(*(int *)(lVar12 + 0x18161e818) * -0x3361d2af) >> 0x11) * local_204 ^
            (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
    do {
      uVar3 = rdtsc();
      uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar13 != 0);
    uVar13 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x733213ad;
    uStack_1b0 = (uVar13 >> 0x18 ^ uVar13) * -0x7a1412ab;
    bVar22 = (byte)local_1e0;
    if (uStack_1b0 < 0x6c3099) {
      pcStack_170 = (code *)0x0;
      do {
        ppcVar6 = &pcStack_170;
        FUN_18158700f(ppcVar6,&pcStack_170);
        *ppcVar6 = FUN_18141db20;
        FUN_1815873b8();
        uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar13 < 0) {
          uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar13 != 0);
      uVar5 = (*pcStack_170)();
      bVar22 = (byte)local_1e0;
      if (1 < uVar5) {
        FUN_18113eab0();
      }
    }
    uVar9 = (*(int *)(lVar12 + 0x18161e81c) * 0x16a88000 |
            (uint)(*(int *)(lVar12 + 0x18161e81c) * -0x3361d2af) >> 0x11) * iVar4 ^
            (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = (*(int *)(lVar12 + 0x18161e820) * 0x16a88000 |
             (uint)(*(int *)(lVar12 + 0x18161e820) * -0x3361d2af) >> 0x11) * iVar4 ^
             (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
    uVar9 = (uint)(lVar12 + 0x3c) & 0x2f;
    lVar12 = lVar12 + 0x3c +
             ((longlong)
              (0x368a - ((int)((uVar9 + 1) * (uVar9 + 1) * uVar9 * uVar9 & 1) >> (bVar22 & 0x1f))) ^
             0x368eU);
    do {
      iStack_1d0 = 0x41ef8c32;
      uStack_14c = 0x1d;
      lStack_140 = 0x181587c48;
      FUN_18158948d();
      uVar9 = local_1f8;
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar14 = iStack_1d0 + 0x1e67311;
    uVar10 = ((uVar14 * 0x10 | uVar14 >> 0x1c) & 0xd2d2d2d2 |
             (uVar14 >> 4 | uVar14 * 0x10000000) & 0x2d2d2d2d) ^ 0x7db34f68;
    uVar14 = (uVar10 >> 0xf ^ uVar10) >> 1 & 0x7fff;
    uVar14 = ((uVar14 << 0xf | uVar14) * 2 ^ uVar10) + 0x5c5261de;
    uVar14 = (uVar14 >> 8 | uVar14 * 0x1000000) & 0xf20df20d |
             (uVar14 * 0x100 | uVar14 >> 0x18) & 0xdf20df2;
    uVar10 = uVar14 ^ 0x4c9c3590;
    iStack_1d0 = ((uVar10 >> 2 | uVar14 << 0x1e) & 0x99999999 |
                 (uVar10 << 2 | uVar10 >> 0x1e) & 0x66666666) + 0x974be1b7;
    do {
      puVar11 = &uStack_150;
      puVar7 = &uStack_184;
      plVar15 = local_138;
      FUN_181586b83();
      *puVar7 = 0xa54f1689;
      *puVar11 = 99;
      *plVar15 = 0x181587d26;
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar14 = (uStack_184 >> 0x1f | uStack_184 << 1) + 0x621450c8;
    uVar14 = (uVar14 * 0x10000 | uVar14 >> 0x10) & 0xf91c06e3 |
             (uVar14 >> 0x10 | uVar14 * 0x10000) & 0x6e3f91c;
    uVar14 = (uVar14 >> 8 | uVar14 << 0x18) + 0x4f0091ee;
    uVar14 = (uVar14 * 0x10000 | uVar14 >> 0x10) & 0xa5245adb |
             (uVar14 >> 0x10 | uVar14 * 0x10000) & 0x5adba524;
    uVar10 = uVar14 >> 10 | uVar14 << 0x16;
    lVar19 = (longlong)iStack_1d0;
    uVar14 = uVar10 + 0xc7529a8a;
    uVar10 = uVar10 + 0xc7529a8a;
    uVar16 = (longlong)(int)(uVar14 * 0x10000 | uVar14 >> 0x10) & 0xffffffffc2353dcaU |
             (ulonglong)((uVar10 >> 0x10 | uVar10 * 0x10000) & 0x3dcac235);
    iStack_1d0 = 0;
    uStack_184 = 0;
    uVar5 = (ulonglong)
            ((uint)((ulonglong)*(undefined8 *)(uVar16 + 4 + local_138[0]) >> 0x18) & 0x46303) +
            *(longlong *)(lVar19 + 4 + lStack_140);
    uVar5 = (uVar5 * 0x1000 | uVar5 >> 0x34) ^ 0xc23014cc54169c49;
    uVar5 = (uVar5 << 1 | (ulonglong)((longlong)uVar5 < 0)) + 0x89b201396c3550bc;
    uVar5 = (uVar5 >> 0xc | uVar5 << 0x34) + 0x2be956b9ef74f3b0;
    uVar8 = uVar5 >> 0x23 | uVar5 * 0x20000000;
    uVar5 = ((uVar8 >> 0x10 | (uVar5 >> 0x23) << 0x30) & 0x8aa775588aa77558 |
            (uVar8 << 0x10 | (uVar5 & 0x7ffffffff) >> 0x13) & 0x75588aa775588aa7) ^
            0x6ce436b840cf5c0b;
    *(ulonglong *)(lVar19 + 4 + lStack_140) = uVar5;
    plVar15 = (longlong *)(uVar16 + 4 + local_138[0]);
    *plVar15 = *plVar15 + (uVar5 >> 0x1a & 0x88044418);
    uStack_1a0 = (uint)(*(ulonglong *)(lVar19 + 4 + lStack_140) >> 0xd) & 0x7fffffff;
    uVar14 = (uint)(*(ulonglong *)(lVar19 + 4 + lStack_140) >> 0x1b);
    local_1f8 = uVar14 ^ 0x2d5d2dee;
    local_1c0 = (undefined1 *)(*(ulonglong *)(lVar19 + 4 + lStack_140) ^ 0x494a57b7384dbcef);
    uVar13 = (*(int *)(&DAT_18161e7e4 + lVar12) * uVar9 * 0x8000 |
             *(int *)(&DAT_18161e7e4 + lVar12) * uVar9 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e7e8) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = (*(int *)(&UNK_18161e7ec + lVar12) * uVar9 * 0x8000 |
             *(int *)(&UNK_18161e7ec + lVar12) * uVar9 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e7f0) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e7f4) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e7f8) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e7fc) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e800) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e804) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e808) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e80c) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e810) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e814) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e818) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e81c) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    do {
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar10 = *(int *)(lVar12 + 0x18161e820) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e824) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = (*(int *)(&UNK_18161e828 + lVar12) * uVar9 * 0x8000 |
             *(int *)(&UNK_18161e828 + lVar12) * uVar9 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = ((uVar13 & 0x4ff) - 1) * (uVar13 & 0x4ff) - 1 & 1;
    if ((uVar13 & 0x16) == 0) {
      uVar23 = (uint)local_1e0 & 0x7f | 0x54;
      uVar2 = uVar13 & 0xf | 0xe;
      uVar23 = uVar23 * uVar23 * 0x4f87;
      uVar2 = uVar2 * uVar2 * 0x7655;
    }
    else {
      uVar2 = uVar13 & 0x3f | 0x28;
      uVar23 = (uint)local_1e0 & 0x3f | 0xb;
      uVar23 = uVar23 * uVar23 * 0x3df3;
      uVar2 = uVar2 * uVar2 * 0xbe75;
    }
    lVar12 = (ulonglong)(((int)(uVar23 ^ uVar2 | -(uVar23 ^ uVar2)) >> 0x1f ^ 0xfffffaffU) & 0x85f6)
             + lVar12 + 0x44 +
             ((longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0xd2c) ^ 0xfffffffffffff628U);
    uVar13 = (*(int *)(&DAT_18161e7e4 + lVar12) * uVar9 * 0x8000 |
             *(int *)(&DAT_18161e7e4 + lVar12) * uVar9 >> 0x11) * local_204 ^ uVar13;
    uVar10 = *(int *)(lVar12 + 0x18161e7e8) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = (*(int *)(&UNK_18161e7ec + lVar12) * uVar9 * 0x8000 |
             *(int *)(&UNK_18161e7ec + lVar12) * uVar9 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e7f0) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e7f4) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e7f8) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e7fc) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e800) * uVar9;
    uVar10 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar13 = *(int *)(lVar12 + 0x18161e804) * uVar9;
    uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) * local_204 ^
             (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e808) * uVar9;
    uVar13 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = *(int *)(lVar12 + 0x18161e80c) * uVar9;
    uVar24 = (uVar10 * 0x8000 | uVar10 >> 0x11) * local_204 ^
             (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
    uVar9 = *(int *)(lVar12 + 0x18161e810) * uVar9;
    uStack_158 = 0x241d6407;
    uStack_154 = 0x5aa343cb;
    uVar13 = (int)local_1c0 + 0xf1e309f9;
    uVar10 = (uint)((ulonglong)local_1c0 >> 0x20) ^ 0x4a5a460c ^ uVar13;
    uVar17 = iStack_1e4 + 0xf56b0f05;
    uVar14 = uVar14 ^ 0x7553dd09;
    uVar2 = (uVar10 & 0x404381bb ^ uVar13) + 0xf864faf4;
    uVar10 = uVar10 & 0xbfbc7e44 ^ uVar13 ^ 0xe070a390;
    uVar23 = (uVar17 >> 0xf ^ uVar17) >> 2 & 0x7fff;
    uVar18 = (uVar14 >> 0xe ^ uVar14) >> 2 & 0x3fff;
    uVar20 = (uVar2 >> 10 ^ uVar2) >> 0xb & 3;
    uVar13 = (uVar10 >> 9 ^ uVar10) >> 4 & 0xff;
    uVar13 = (uVar13 << 9 | uVar13) << 4 ^ uVar10 ^ 0x17d56d53;
    uVar10 = uVar13 ^ ((uVar23 << 0xf | uVar23) << 2 ^ uVar17) + 0x193437c3;
    uVar23 = uVar10 & 0x61fa746d ^ uVar13 ^ 0x4742c5fd;
    uVar14 = uVar14 ^ ((uVar18 << 0xe | uVar18) ^ 0xe46c1535) << 2;
    uVar20 = ((uVar20 << 10 | uVar20) << 0xb ^ uVar2 ^ 0x3e728703) + 0xea956873;
    uVar18 = (uVar10 & 0x9e058b92 ^ uVar13) + 0xf3638a6a;
    uVar13 = (uVar23 >> 7 ^ uVar23) & 3;
    uVar10 = (uVar14 >> 0xf ^ uVar14) >> 2 & 0x7fff;
    uVar2 = (uVar20 >> 10 ^ uVar20) >> 10 & 0x7f;
    uVar17 = (uVar18 >> 5 ^ uVar18) >> 2 & 0x1f;
    iStack_1e4 = ((uVar13 << 7 | uVar13) ^ uVar23) + 0x933d3959;
    iStack_164 = ((uVar10 << 0xf | uVar10) << 2 ^ uVar14) + 0x49b8f865;
    uStack_160 = (uVar2 << 10 | uVar2) << 10 ^ uVar20 ^ 0x5468063c;
    iStack_15c = ((uVar17 << 5 | uVar17) << 2 ^ uVar18) + 0xf6b09850;
    uVar9 = (uVar9 * 0x8000 | uVar9 >> 0x11) * local_204 ^
            (uVar24 << 0xd | uVar24 >> 0x13) * 5 + 0xe6546b64;
    iStack_180 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + -0x19ab949c;
    iStack_168 = iStack_1e4;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001815885c7();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  local_1f0 = 0x100000;
                    /* WARNING: Ignoring partial resolution of indirect */
                    /* WARNING: Ignoring partial resolution of indirect */
  local_1f0._0_4_ = 0x100;
  local_200 = (int *)0x181499f2c;
  local_1f0 = local_1f0 + 0x181499f2c;
  piStack_1c8 = (int *)CONCAT44(piStack_1c8._4_4_,0x48b5f382);
  iStack_208 = 0x88c3d52b;
  uVar3 = 0x2493;
  local_1b8 = (CONCAT44(local_1b8._4_4_,0x91608200) | 0x24db) ^ 0xf6248005;
  uVar9 = 0x674426de;
  if ((*(uint *)(local_190 + 0x10) >> 2 & 1) != 0) {
    cVar1 = FUN_1805847c0(local_1d8 + 0x1b0,local_1a8);
    if (cVar1 == '\0') {
      FUN_180583f50(lVar19 + 0x178);
    }
    uVar9 = (uint)local_1b8;
  }
  local_1b8 = local_1f0 - (longlong)local_200;
  piStack_1c8 = local_200;
  uVar13 = (uVar9 >> 4 | uVar9 << 0x1c) & 0x96969696 | (uVar9 << 4 | uVar9 >> 0x1c) & 0x69696969;
  uVar9 = (*local_200 * 0x16a88000 | (uint)(*local_200 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0xb417a2b6;
  uVar9 = (local_200[1] * 0x16a88000 | (uint)(local_200[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          uVar13 + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
  iStack_208 = uVar13 + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
                    /* WARNING: Call to offcut address within same function */
  func_0x0001815867e2(0,iStack_208,uVar3);
                    /* WARNING: Could not recover jumptable at 0x0001815868b4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar3 = (*(code *)(puVar21 + 0x9adb))();
  return uVar3;
}



############ FUN_ 18158a900 size=927 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018158a9c0) */
/* WARNING: Removing unreachable block (ram,0x00018158a96a) */
/* WARNING: Removing unreachable block (ram,0x00018158a984) */
/* WARNING: Removing unreachable block (ram,0x00018158a989) */
/* WARNING: Removing unreachable block (ram,0x00018158a9ea) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AVSoothe2XYSliderArea@@::vtbl___AVSoothe2XYSliderArea__(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  ulonglong uVar2;
  int *piVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined1 auStack_1d8 [32];
  undefined4 local_1b8;
  undefined8 local_1a8;
  undefined *local_198;
  undefined8 local_190;
  undefined4 local_184;
  undefined8 local_180;
  uint local_178;
  uint local_15c;
  undefined8 local_158;
  code *local_148;
  undefined8 local_140;
  longlong local_138;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1d8;
  local_184 = 0x680;
  uVar1 = (uint)&stack0x00000000 & 0x1bff;
  uVar6 = (uVar1 + 1) * uVar1 + 0x2c1d & 0x80000001;
  uVar1 = (uint)&stack0x00000000 & 0xcff;
  uVar1 = (uVar1 + 1) * uVar1 + 0x3349 & 0x80000001;
  local_1b8 = 0;
  local_15c = (int)((-uVar1 | uVar1) ^ (-uVar6 | uVar6)) >> 0x1f ^ 0xe30;
  local_140 = param_1;
  local_138 = param_2;
  local_158 = __RTDynamicCast(*(undefined8 *)(param_2 + 0x38),0,
                              &juce::Component::RTTI_Type_Descriptor,&XYThumb::RTTI_Type_Descriptor)
  ;
  local_180 = 0;
  local_190 = 0x1510;
  local_1a8 = 0x180b3f4f0;
  local_198 = &UNK_180b40a00;
  do {
    uVar4 = rdtsc();
    uVar5 = uVar4 >> 0x20;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  local_178 = ((uint)uVar4 ^ (uint)(uVar4 >> 0x20)) * -0x50287a15;
  local_178 = local_178 >> 0x18 ^ local_178;
  uVar4 = (ulonglong)local_178;
  local_178 = local_178 * -0x3594e57b;
  if (local_178 < 0x108420ff) {
    do {
      uVar5 = 0x123c;
      local_148 = FUN_18141db20;
      uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar1 < 0) {
        uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
      }
      uVar4 = (ulonglong)uVar1;
    } while (uVar1 != 0);
    uVar2 = FUN_18141db20();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x00018158acb4();
  piVar3 = (int *)CONCAT71((int7)((uVar5 & 0xffffff81) >> 8),(char)(uVar5 & 0xffffff81) + '$');
  *piVar3 = *piVar3 + (int)piVar3;
  *(char *)(uVar4 - 0x39) = *(char *)(uVar4 - 0x39) + (char)uVar4;
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1815adb50 size=1091 ############

/* WARNING: Instruction at (ram,0x0001815add2b) overlaps instruction at (ram,0x0001815add29)
    */
/* WARNING: Removing unreachable block (ram,0x0001815adba8) */
/* WARNING: Removing unreachable block (ram,0x0001815add29) */
/* WARNING: Removing unreachable block (ram,0x0001815adbb4) */

void FUN_1815adb50(undefined8 param_1,undefined8 param_2)

{
  code *pcVar1;
  ulonglong uVar2;
  byte bVar3;
  int iVar4;
  uint uVar5;
  code **ppcVar6;
  uint uVar7;
  ulonglong uVar8;
  longlong *plVar9;
  undefined1 *puVar10;
  TypeDescriptor *pTVar11;
  ulonglong in_R11;
  uint unaff_retaddr;
  undefined1 local_1d0 [48];
  undefined1 auStack_188 [32];
  undefined4 local_168;
  uint local_148;
  uint local_114;
  uint local_110;
  code *local_108 [5];
  undefined8 local_e0;
  ulonglong local_b0;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_188;
  uVar5 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x300) == 0) {
    bVar3 = 0;
  }
  else {
    uVar7 = uVar5 & 0x2bf;
    iVar4 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
    bVar3 = (byte)(((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e);
  }
  local_168 = 0;
  iVar4 = (uVar5 & 0x3cff) * (uVar5 & 0x3cff) + 1;
  uVar7 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar7 = (int)(uVar7 - 7) >> 0x1f & uVar7;
  local_110 = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x405a ^ 0x49ba >> (bVar3 & 0x1f);
  pTVar11 = &CloudyPopupMenuItem::RTTI_Type_Descriptor;
  uVar5 = ((uVar5 & 0xbff) * (uVar5 & 0xbff) * 0x10 + 4) % 0x13;
  uVar5 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_114 = (int)(-uVar5 | uVar5) >> 0x1f & 0x1ec5U ^ 0x1125;
  local_e0 = param_1;
  local_b0 = __RTDynamicCast(param_2,0,&juce::Button::RTTI_Type_Descriptor);
  uVar2 = local_b0;
  do {
    if (SBORROW8(uVar2,0xc604)) {
      in_R11 = (~in_R11 + 1 ^ 0xffffffffffffffff) + 1;
    }
    uVar2 = (ulonglong)unaff_retaddr;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar2 = rdtsc();
    uVar8 = uVar2 >> 0x20;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar2 ^ (uint)(uVar2 >> 0x20)) * -0x35947333;
  local_148 = (uVar5 >> 0x18 ^ uVar5) * -0x460113ad;
  pcVar1 = (code *)0x0;
  if (local_148 < 0x5555557f) {
    do {
      local_108[0] = pcVar1;
      ppcVar6 = local_108;
      FUN_1815ad4a7(ppcVar6,local_108);
      uVar8 = 0xa9b8;
      *ppcVar6 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
      pcVar1 = local_108[0];
    } while (uVar5 != 0);
    uVar2 = (*local_108[0])();
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x0001815ade72();
  plVar9 = (longlong *)&stack0xfffffffffffffe60;
  puVar10 = (undefined1 *)register0x00000020;
  if ((POPCOUNT((in_R11 + uVar8) - (~(uVar8 - (in_R11 + uVar8)) + 1) & 0xff) & 1U) != 0) {
    puVar10 = (undefined1 *)((longlong)&pTVar11[0xa3b].pVFTable + 7);
    plVar9 = (longlong *)local_1d0;
  }
  plVar9[3] = (longlong)puVar10;
  plVar9[2] = (longlong)((longlong)&pTVar11[0x1c10].spare + 6);
  plVar9[1] = (longlong)((longlong)&pTVar11[-0x3eed].spare + 7);
  *plVar9 = (longlong)&pTVar11[-0x67b0].spare;
  plVar9[-1] = (longlong)((longlong)&pTVar11[0x3ba1].spare + 3);
  plVar9[-2] = (longlong)((longlong)&pTVar11[-0xc17].pVFTable + 3);
  return;
}



############ FUN_ 1815c080e size=809 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x0001815c095e) overlaps instruction at (ram,0x0001815c095a)
    */
/* WARNING: Removing unreachable block (ram,0x0001815c0958) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_1815c080e(void)

{
  int *piVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  longlong unaff_RBX;
  longlong unaff_RBP;
  longlong unaff_RDI;
  int *unaff_R13;
  longlong unaff_R14;
  uint local_res20 [2];
  
  uVar4 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 != 0) {
    FUN_1815c079f(0xe61c,unaff_RDI + unaff_R14,local_res20);
    return;
  }
  uVar4 = (*(int *)(unaff_R14 + 0x24 + unaff_RBX) +
          (local_res20[0] * 0x401 ^ local_res20[0] * 0x401 >> 6)) * 0x401;
  local_res20[0] = uVar4 ^ uVar4 >> 6;
  piVar1 = (int *)(unaff_RBP + 0x68);
  do {
    FUN_1815c066e();
    uVar4 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (*(int *)(unaff_R14 + 0x28 + unaff_RBX) + local_res20[0]) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x2c + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x30 + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x34 + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x38 + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x3c + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  local_res20[0] = uVar4 ^ uVar4 >> 6;
  do {
    uVar4 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (*(int *)(unaff_R14 + 0x40 + unaff_RBX) + local_res20[0]) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x44 + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x48 + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  local_res20[0] = uVar4 ^ uVar4 >> 6;
  do {
    FUN_1815c003d();
    FUN_1815bf5ea();
    FUN_1815c1913();
    uVar4 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (*(int *)(unaff_R14 + 0x4c + unaff_RBX) + local_res20[0]) * 0x401;
  uVar4 = (*(int *)(unaff_R14 + 0x50 + unaff_RBX) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  local_res20[0] = uVar4 ^ uVar4 >> 6;
  do {
    uVar2 = rdtsc();
    FUN_1815c079e();
    uVar4 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x7a14e57b;
  if ((uVar4 >> 0x18 ^ uVar4) * -0x5028e57b < 0xb79300) {
    *(undefined8 *)(unaff_RBP + -0x70) = 0;
    do {
      *(code **)(unaff_RBP + -0x70) = FUN_1813bba80;
      uVar4 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (**(code **)(unaff_RBP + -0x70))(0,0xd3fd);
    if (1 < uVar3) {
      FUN_18113eab0();
    }
  }
  FUN_1815c0b73();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1815c65b0 size=1240 ############

void FUN_1815c65b0(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  longlong lVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  byte bVar9;
  bool bVar10;
  bool bVar11;
  char cVar12;
  char cVar13;
  int unaff_retaddr;
  undefined1 auStack_168 [48];
  undefined8 local_138;
  uint local_130;
  undefined *local_128;
  uint local_11c;
  undefined8 local_108;
  undefined8 local_100;
  undefined4 local_f8;
  undefined4 local_f0;
  code *local_e8;
  undefined8 local_d8;
  undefined *local_c8;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_168;
  uVar3 = (uint)&stack0x00000000 & 0x5ff;
  iVar4 = uVar3 * uVar3 + 1;
  uVar3 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3;
  uVar3 = (int)(-uVar3 | uVar3) >> 0x1f;
  uVar5 = (uint)&stack0x00000000 & 0x3bf;
  iVar4 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  local_11c = (((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e | 0x3c61U) ^
              (int)(-uVar3 | uVar3) >> 0x1f & 0x3cc1U;
  uVar8 = (ulonglong)local_11c;
  local_f0 = 0xb60;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar7 = 0x180000000;
  local_138 = 0;
  lVar6 = 0xc2f3d494;
  local_100 = 0x79746c;
  local_108 = 0x2e60;
  local_128 = &DAT_18079746c;
  local_c8 = &UNK_18079a2cc;
  do {
    uVar1 = rdtsc();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x73323595;
  local_130 = (uVar3 >> 0x18 ^ uVar3) * -0x166a4602;
  local_d8 = param_2;
  if (local_130 < 0x2e8ba2ff) {
    do {
      local_e8 = FUN_1813bba80;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = FUN_1813bba80(0,0xf188);
    if (1 < uVar2) {
      FUN_18113eab0();
    }
  }
  do {
    local_f8 = 0x25151c4a;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  cVar13 = '\0';
  cVar12 = '\x01';
  bVar10 = false;
  local_108 = CONCAT44(local_108._4_4_,0x1c157164) ^ 0xde2e5a39;
                    /* WARNING: Call to offcut address within same function */
  func_0x0001815c6810();
  bVar10 = bVar10 || cVar13 != cVar12;
  if (bVar10) {
    lVar6 = uVar7 - uVar8;
    bVar11 = uVar7 == uVar8;
  }
  else {
    bVar11 = lVar6 == 0;
  }
  cVar13 = bVar10 && SBORROW8(uVar7,uVar8);
  bVar9 = bVar10 && uVar7 < uVar8;
  cVar12 = lVar6 < 0;
                    /* WARNING: Call to offcut address within same function */
  uVar7 = func_0x0001815c6a15();
  if (!bVar11 && cVar13 == cVar12) {
    bVar9 = uVar8 < uVar7;
  }
  *(int *)(uVar7 + 0x495941f7) = *(int *)(uVar7 + 0x495941f7) + (uint)bVar9;
  return;
}



############ FUN_ 1815c7e80 size=2407 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_1815c7e80(longlong param_1,longlong param_2,undefined1 param_3,undefined1 param_4)

{
  float fVar1;
  undefined8 uVar2;
  uint uVar3;
  longlong lVar4;
  undefined8 uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  uint *puVar9;
  uint uVar10;
  undefined4 *puVar11;
  ulonglong uVar12;
  longlong *plVar13;
  ulonglong uVar14;
  int *piVar15;
  int unaff_retaddr;
  undefined1 auStack_438 [48];
  undefined1 local_408;
  undefined8 local_400;
  undefined1 local_3f8;
  undefined1 local_3f7;
  undefined8 local_3f0;
  int local_3e8;
  uint local_3e4 [3];
  undefined8 local_3d8;
  ulonglong local_3c8;
  uint local_3c0;
  uint local_3b8;
  uint local_3b0;
  undefined4 local_3ac;
  longlong local_3a8;
  uint local_3a0 [4];
  undefined4 local_390;
  longlong local_388;
  code *local_360;
  undefined1 local_358 [12];
  undefined4 local_34c;
  uint local_348;
  undefined4 local_344;
  undefined1 local_320 [8];
  undefined8 local_318;
  undefined4 local_310;
  undefined4 local_30c;
  undefined4 local_308 [6];
  undefined8 local_2f0;
  longlong local_2e8;
  longlong local_2e0 [4];
  undefined1 local_2c0 [16];
  undefined4 local_2b0;
  undefined8 local_1d8;
  ulonglong local_80;
  
  local_1d8 = 0xfffffffffffffffe;
  local_80 = DAT_182615970 ^ (ulonglong)auStack_438;
  local_3ac = 0x130;
  uVar3 = (uint)&stack0x00000000 & 0xdff;
  uVar3 = ((uVar3 + 1) * uVar3 + 7) % 0x51;
  local_3b0 = 0x885cU - ((int)(-uVar3 | uVar3) >> 0x1f) ^ 0x8edd;
  local_30c = *(undefined4 *)(param_1 + 0x2c);
  local_310 = *(undefined4 *)(param_1 + 0x28);
  local_318 = 0;
  local_3f8 = param_4;
  local_3f7 = param_3;
  local_3a8 = param_1;
  local_388 = param_2;
  FUN_1804ab5a0(&local_318,local_2c0);
  fVar1 = *(float *)(param_1 + 0x298);
  plVar13 = (longlong *)(param_1 + 0x1c8);
  lVar4 = (**(code **)(*plVar13 + 8))(plVar13);
  uVar3 = (uint)(fVar1 * *(float *)(lVar4 + 0x88)) ^ DAT_1824c4f30;
  FUN_1804af0b0(local_2c0,local_358,uVar3,uVar3);
  if (*(code **)(*plVar13 + 8) == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    lVar4 = *(longlong *)(param_1 + 0x1d0);
  }
  else {
    lVar4 = (**(code **)(*plVar13 + 8))(plVar13);
  }
  uVar5 = FUN_1813f3070(lVar4 + 0x48,&local_2f0,local_34c);
  FUN_181251cf0(uVar5,local_320,DAT_1824c3c7c);
  FUN_1804888e0(local_2f0);
  local_390 = FUN_1815cb020(param_1 + 0x1e0);
  uVar5 = 0x180000000;
  local_3c8 = 0;
  local_3d8 = 0x18080af08;
  local_400 = 0x18080b5c8;
  local_3f0 = 0x6b121d6bddde42a7;
  do {
    local_344 = 0x56282d57;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar2 = rdtsc();
    local_3c0 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_1815c9954();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_3c0 = (local_3c0 * -0x46017a15 >> 0x18 ^ local_3c0 * -0x46017a15) * -0x12aa3d4e;
  if (local_3c0 < 0x60f25df) {
    do {
      local_360 = FUN_18141db20;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar6 = FUN_18141db20(0,0xf963);
    if (1 < uVar6) {
      FUN_18113eab0();
    }
  }
  FUN_181296e50(param_2);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),local_320);
  local_408 = *(longlong *)(param_1 + 600) - *(longlong *)(param_1 + 0x250) >> 3 != 0;
  do {
    local_2b0 = 0xc;
    local_2e8 = 0x1815c834a;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_3e8 = 0x1062a3a;
  do {
    plVar13 = local_2e0;
    puVar11 = local_308;
    puVar9 = local_3a0;
    func_0x0001815c6810();
    *puVar9 = 0x4847d4e5;
    *puVar11 = 0x40;
    *plVar13 = 0x1815c8448;
    func_0x0001815c6810();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = (local_3a0[0] >> 0xb ^ local_3a0[0]) >> 9 & 0xff;
  uVar10 = ((uVar3 << 0xb | uVar3) << 9 ^ local_3a0[0]) + 0xe8aafee5;
  uVar3 = (uVar10 >> 1 ^ uVar10) >> 3 & 1;
  uVar3 = uVar10 ^ (uVar3 * 2 | uVar3) << 3;
  uVar10 = ((uVar3 >> 2 | uVar10 * 0x40000000) & 0x99999999 |
           (uVar3 << 2 | uVar10 >> 0x1e) & 0x66666666) + 0x6fc0e80a;
  uVar3 = (uVar10 >> 4 ^ uVar10) >> 1 & 0xf;
  uVar10 = (uVar3 << 4 | uVar3) * 2 ^ uVar10 ^ 0x1a1c6bad;
  uVar3 = (uVar10 >> 6 ^ uVar10) >> 0x19 & 1;
  uVar3 = uVar10 ^ (uVar3 << 6 | uVar3) << 0x19;
  lVar4 = (longlong)local_3e8;
  uVar6 = (longlong)(int)(uVar3 >> 8 | uVar10 << 0x18) & 0xffffffffae51ae51U |
          (ulonglong)((uVar10 << 8 | uVar3 >> 0x18) & 0x51ae51ae);
  local_3e8 = 0;
  local_3a0[0] = 0;
  plVar13 = (longlong *)(lVar4 + 4 + local_2e8);
  *plVar13 = *plVar13 +
             (ulonglong)((uint)(*(ulonglong *)(uVar6 + 4 + local_2e0[0]) >> 2) & 0x292102);
  piVar15 = (int *)register0x00000020;
  do {
    uVar2 = rdtsc();
    local_348 = (int)uVar2 + (int)((ulonglong)uVar2 >> 0x20);
    piVar15 = (int *)((~(ulonglong)piVar15 + 1 ^ 0xffffffffffffffff) + 1);
    uVar7 = (ulonglong)local_348 -
            (((ulonglong)(local_348 >> 5) | (ulonglong)local_348 << 0x3b) - 0x71818816);
    uVar8 = uVar7 >> 6 | uVar7 << 0x3a;
    uVar7 = uVar8 * 5;
    uVar8 = uVar8 + (uVar7 >> 5 | uVar7 << 0x3b) + 0x791bf67b;
    *(uint *)((((ulonglong)local_3e4 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1) =
         (uint)((uVar8 * 0x20 | uVar8 >> 0x3b) * -0x3fff + -0x1b8f8f85 >> 0x10) & 0xe65bdd00;
    uVar3 = (*piVar15 + 1) * *piVar15 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  piVar15 = (int *)(lVar4 + 8 + local_2e8);
  *piVar15 = *piVar15 + (local_3e4[0] ^ 0x302cf8aa);
  piVar15 = (int *)(lVar4 + 4 + local_2e8);
  *piVar15 = *piVar15 + (local_3e4[0] ^ 0xa3637bc5);
  uVar7 = *(ulonglong *)(lVar4 + 4 + local_2e8);
  uVar7 = (uVar7 << 8 | uVar7 >> 0x38) & 0xc738c738c738c738 |
          (uVar7 >> 8 | uVar7 << 0x38) & 0x38c738c738c738c7;
  uVar8 = uVar7 ^ 0xe3e21e6a53680630;
  uVar8 = (uVar8 >> 4 | uVar7 << 0x3c) & 0xe1e1e1e1e1e1e1e1 |
          (uVar8 << 4 | uVar8 >> 0x3c) & 0x1e1e1e1e1e1e1e1e;
  uVar7 = (ulonglong)((uint)((uVar8 >> 0x1f ^ uVar8) >> 5) & 0x3ffffff);
  uVar7 = (uVar8 ^ (uVar7 << 0x1f | uVar7) << 5) + 0x670a4e6783c319c4;
  uVar14 = (uVar7 * 0x100 | uVar7 >> 0x38) & 0x3cc33cc33cc33cc3;
  uVar8 = (uVar7 >> 8 | uVar7 << 0x38) & 0xc33cc33cc33cc33c | uVar14;
  uVar7 = (uVar8 >> 0x35 ^ uVar8) >> 2 & 0xff;
  uVar8 = uVar8 ^ (uVar7 << 0x35 | uVar7) << 2;
  uVar12 = (uVar8 >> 0x10 | uVar8 << 0x30) & 0xcfcf3030cfcf303;
  uVar7 = ((uVar8 << 0x10 | uVar8 >> 0x30) & 0xf3030cfcf3030cfc | uVar12) ^ 0xa0360342f034df3c;
  *(ulonglong *)(lVar4 + 4 + local_2e8) = uVar7;
  plVar13 = (longlong *)(uVar6 + 4 + local_2e0[0]);
  *plVar13 = *plVar13 + (uVar7 >> 4 & 0x82302082);
  local_3e4[0] = (uint)(*(ulonglong *)(lVar4 + 4 + local_2e8) >> 0xd) & 0x7fffffff;
  local_3b8 = (uint)(*(ulonglong *)(lVar4 + 4 + local_2e8) >> 0x11) ^ 0x74ceb75a;
  local_3c8 = *(ulonglong *)(lVar4 + 4 + local_2e8) ^ 0xb3b73c4dbbb63260;
  FUN_1815c942f(0xb3b73c4dbbb63260,uVar12,uVar14,uVar5);
  FUN_1815c8815();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1815d0470 size=1830 ############

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

void FUN_1815d0470(undefined8 param_1,undefined8 param_2,longlong param_3,ulonglong param_4)

{
  longlong *plVar1;
  longlong lVar2;
  code *pcVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  uint *puVar7;
  ulonglong uVar8;
  longlong lVar9;
  longlong lVar10;
  undefined8 in_R11;
  int unaff_retaddr;
  undefined1 auStack_1a8 [32];
  undefined4 local_188;
  undefined1 local_180 [8];
  undefined8 local_178;
  uint local_170;
  uint local_16c;
  uint local_168 [2];
  uint local_160;
  undefined8 local_158;
  undefined8 local_150;
  uint local_148;
  uint local_134;
  undefined8 local_130;
  code *local_128;
  undefined8 local_120;
  ulonglong local_118;
  ulonglong local_110;
  undefined8 local_108;
  undefined4 local_100;
  longlong local_f8;
  longlong local_f0;
  undefined8 local_e8;
  undefined4 local_e0;
  longlong local_c0;
  undefined8 local_a8;
  ulonglong local_48;
  
  local_a8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  pcVar3 = *(code **)(*(longlong *)(param_3 + 0xb0) + 0x10);
  local_130 = param_2;
  local_110 = param_4;
  local_108 = param_2;
  local_c0 = param_3;
  if (pcVar3 == FUN_1804e49c0) {
    local_120 = *(undefined8 *)(param_3 + 0x280);
  }
  else {
    (*pcVar3)((longlong *)(param_3 + 0xb0),&local_120);
  }
  FUN_1812dc020(param_3,local_180);
  local_188 = 0;
  do {
    local_170 = -0x5cbe57f0;
    local_100 = 0x68;
    local_f8 = 0x1815d0527;
    FUN_1815cfed8();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = local_170 + 0x7f5f9009 >> 6;
  uVar5 = (local_170 + 0x7f5f9009) * 0x4000000 | uVar6;
  uVar6 = (uVar6 << 8 | uVar5 >> 0x18) & 0xfe01fe01 | (uVar5 >> 8 | uVar6 << 0x18) & 0x1fe01fe;
  uVar6 = (uVar6 >> 8 | uVar6 << 0x18) & 0xbe41be41 | (uVar6 << 8 | uVar6 >> 0x18) & 0x41be41be;
  uVar6 = (uVar6 >> 10 | uVar6 << 0x16) ^ 0xdf9cad36;
  local_170 = ~((uVar6 << 4 | uVar6 >> 0x1c) & 0xc3c3c3c3 |
               (uVar6 >> 4 | uVar6 << 0x1c) & 0x3c3c3c3c);
  uVar6 = (local_170 >> 0xd ^ local_170) >> 2 & 0x7f;
  local_170 = local_170 ^ (uVar6 << 0xd | uVar6) << 2;
  do {
    local_148 = 0x63dd4f99;
    local_e0 = 0x20;
    local_f0 = 0x1815d05ea;
    func_0x0001815cec08();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((local_148 ^ 0xa9eab43b) << 0x1f | (local_148 ^ 0xa9eab43b) >> 1) + 0x666f8801;
  uVar5 = ((uVar6 * 0x10 | uVar6 >> 0x1c) & 0xa5a5a5a5 |
          (uVar6 >> 4 | uVar6 * 0x10000000) & 0x5a5a5a5a) + 0x4b3ea01e;
  uVar6 = (uVar5 >> 3 ^ uVar5) >> 9 & 3;
  uVar5 = ~((uVar6 * 8 | uVar6) << 9 ^ uVar5);
  uVar6 = (uVar5 >> 0xb ^ uVar5) >> 6 & 0x1ff;
  uVar5 = uVar5 ^ (uVar6 << 0xb | uVar6) << 6;
  lVar9 = (int)local_170 + local_f8;
  lVar10 = ((longlong)(int)(uVar5 >> 8 | uVar5 << 0x18) & 0xffffffff8b748b74U |
           (ulonglong)((uVar5 << 8 | uVar5 >> 0x18) & 0x748b748b)) + local_f0;
  local_170 = 0;
  local_148 = 0;
  *(longlong *)(lVar9 + 4) =
       *(longlong *)(lVar9 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(lVar10 + 4) >> 0xd) & 0x42168281);
  do {
    uVar4 = rdtsc();
    local_134 = (uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20);
    uVar8 = (ulonglong)local_134 * 0x6002 - 0x65abb009;
    lVar2 = (uVar8 >> 9 | uVar8 << 0x37) + 0x65512f05 + uVar8 * 4;
    uVar8 = lVar2 * 5;
    uVar8 = lVar2 + ((uVar8 >> 7 | uVar8 << 0x39) - 0x4c209602);
    uVar8 = uVar8 >> 10 | uVar8 << 0x36;
    param_4 = -(~-((param_4 ^ 0xffffffffffffffff) + 1) + 1);
    uVar8 = uVar8 ^ uVar8 * 0x100 + 0x75c4b6b1;
    uVar8 = ((uVar8 * 0x180 | uVar8 * 3 >> 0x39) - 0x13d4c8c8) + uVar8 * 2;
    uVar8 = uVar8 * 0x80 | uVar8 >> 0x39;
    uVar6 = (~(~(uint)uVar8 + 1) + 1 ^ (uint)(uVar8 >> 5)) & 0xb64678d5;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  *(int *)(lVar9 + 8) = *(int *)(lVar9 + 8) + (uVar6 ^ 0x120c1416);
  *(int *)(lVar9 + 4) = *(int *)(lVar9 + 4) + (uVar6 ^ 0xd5008f55);
  uVar8 = *(ulonglong *)(lVar9 + 4);
  uVar8 = (uVar8 << 0x10 | uVar8 >> 0x30) & 0xf0890f76f0890f76 |
          (uVar8 >> 0x10 | uVar8 << 0x30) & 0xf76f0890f76f089;
  uVar8 = ((uVar8 << 0x10 | uVar8 >> 0x30) & 0xeef1110eeef1110e |
          (uVar8 >> 0x10 | uVar8 << 0x30) & 0x110eeef1110eeef1) + 0x5df7262be645e3b4;
  uVar8 = ((uVar8 * 0x10 | uVar8 >> 0x3c) & 0xd2d2d2d2d2d2d2d2 |
          (uVar8 >> 4 | uVar8 << 0x3c) & 0x2d2d2d2d2d2d2d2d) + 0x66ec12f1bab86cfd;
  uVar8 = (uVar8 >> 0x3a | uVar8 * 0x40) + 0xddf975a109ba9817;
  uVar8 = ((uVar8 * 0x10 | uVar8 >> 0x3c) & 0x8787878787878787 |
          (uVar8 >> 4 | uVar8 << 0x3c) & 0x7878787878787878) ^ 0x9ae59c8abf91711d;
  *(ulonglong *)(lVar9 + 4) = uVar8;
  plVar1 = (longlong *)(lVar10 + 4);
  *plVar1 = *plVar1 + (ulonglong)((uint)(uVar8 >> 0xf) & 0x26905041);
  local_16c = (uint)(*(ulonglong *)(lVar9 + 4) >> 0x17) & 0x7fffffff;
  local_160 = (uint)((ulonglong)*(undefined8 *)(lVar9 + 4) >> 0x18) ^ 0xd7c03822;
  local_118 = *(ulonglong *)(lVar9 + 4) ^ 0x88a1c4697818fcb8;
  do {
    puVar7 = local_168;
    FUN_1815d26ed(puVar7,local_168);
    uVar4 = rdtsc();
    *puVar7 = (uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_168[0] = (local_168[0] * -0x7332166b >> 0x18 ^ local_168[0] * -0x7332166b) * -0x3d4d00af;
  if (local_168[0] < 0x3fffffff) {
    do {
      local_128 = FUN_1813bba80;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar8 = FUN_1813bba80(0,0x50d);
    if (1 < uVar8) {
      FUN_18113eab0();
    }
  }
  local_e8 = 0;
  local_158 = 0x3ff8;
  local_178 = 0x18001cfc8;
  local_150 = 0x180020fc0;
  FUN_1815f229c(0x180020fc0,0x1690,0x180000000,param_4,&LAB_1815cd859,&DAT_1815d0bd6,
                &stack0x00000000,in_R11);
  return;
}



############ FUN_ 1815ef920 size=6672 ############

/* WARNING: Instruction at (ram,0x0001815f068a) overlaps instruction at (ram,0x0001815f0689)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001815efb19) */
/* WARNING: Removing unreachable block (ram,0x0001815efa9b) */
/* WARNING: Removing unreachable block (ram,0x0001815efab8) */
/* WARNING: Removing unreachable block (ram,0x0001815efb2d) */
/* WARNING: Removing unreachable block (ram,0x0001815efaa9) */
/* WARNING: Removing unreachable block (ram,0x0001815f063d) */
/* WARNING: Removing unreachable block (ram,0x0001815ef9a1) */

void FUN_1815ef920(undefined8 param_1,undefined8 param_2)

{
  int iVar1;
  code *pcVar2;
  undefined8 uVar3;
  uint *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  char *pcVar8;
  char cVar9;
  uint uVar10;
  uint *puVar11;
  uint *puVar12;
  undefined4 *puVar13;
  undefined8 *puVar14;
  int iVar15;
  uint uVar16;
  uint uVar17;
  longlong lVar18;
  ulonglong *puVar19;
  ulonglong *puVar20;
  undefined1 *puVar21;
  uint uVar22;
  longlong lVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  longlong *plVar27;
  uint uVar28;
  ulonglong *puVar29;
  uint uVar30;
  ulonglong uVar31;
  uint uVar32;
  int *piVar33;
  undefined1 *puVar34;
  undefined1 *puVar35;
  int unaff_retaddr;
  ulonglong auStack_1b8 [4];
  undefined1 local_198 [32];
  uint local_178 [4];
  undefined8 local_168;
  uint local_160 [16];
  longlong local_120;
  uint local_118 [4];
  undefined8 local_108;
  undefined8 local_100;
  undefined4 local_f8;
  undefined4 local_f4;
  longlong local_f0;
  longlong local_e8 [3];
  uint local_d0;
  uint local_cc;
  uint local_c8;
  uint local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined1 local_98 [80];
  ulonglong local_48;
  
  puVar21 = local_98;
  puVar19 = (ulonglong *)local_198;
  local_48 = DAT_182615970 ^ (ulonglong)local_198;
  uVar10 = (uint)&stack0x00000000 & 0x1ff;
  uVar24 = (uint)&stack0x00000000 & 0x39ff;
  iVar15 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
  uVar10 = ((iVar15 >> 1) - (iVar15 >> 3)) + iVar15 * 0x55555555 >> 0x1e ^
           ((uVar24 + 1) * uVar24 + 7) % 0x51;
  local_160[0xd] = ((int)(-uVar10 | uVar10) >> 0x1f) * -0x35b5 ^ 0x34b5;
  local_160[8] = 0x470;
  puVar4 = (uint *)&DAT_1815bf470;
  local_168 = &DAT_1815bf570;
  local_160[0] = 0x6fc7472;
  puVar35 = &DAT_e6546b64;
  local_160[3] = -0x3361d2af;
  uVar31 = 0x1b873593;
  local_178[2] = 0xc7596fdb;
  local_178[3] = 0x6886f981;
  do {
    local_118[1] = 0x613502e3;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  local_160[4] = 0x21f2cc3e;
  uVar10 = (DAT_1815bf470 * 0x16a88000 | (uint)(DAT_1815bf470 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           0x319ef076;
  uVar10 = (DAT_1815bf474 * 0x16a88000 | (uint)(DAT_1815bf474 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (DAT_1815bf478 * 0x16a88000 | (uint)(DAT_1815bf478 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  local_178[0] = (DAT_1815bf47c * 0x16a88000 | (uint)(DAT_1815bf47c * -0x3361d2af) >> 0x11) *
                 0x1b873593;
  uVar10 = local_178[0] ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  local_108 = param_1;
  local_100 = param_2;
  do {
    local_160[1] = 0xd59c22bd;
    local_f8 = 0x1a;
    local_f0 = 0x1815efea7;
    FUN_1815ef203();
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  uVar24 = ((local_160[1] >> 0x10 | local_160[1] << 0x10) & 0xa18f5e70 |
           (local_160[1] << 0x10 | local_160[1] >> 0x10) & 0x5e70a18f) + 0xee1fc830;
  uVar16 = (uVar24 * 0x100 | uVar24 >> 0x18) & 0x916e916e |
           (uVar24 >> 8 | uVar24 * 0x1000000) & 0x6e916e91;
  uVar24 = (uVar16 >> 10 ^ uVar16) >> 1 & 0xff;
  uVar16 = ((uVar24 << 10 | uVar24) * 2 ^ uVar16) + 0x1de0d37b;
  uVar24 = (uVar16 >> 7 ^ uVar16) >> 0x11 & 1;
  uVar16 = ~((uVar24 << 7 | uVar24) << 0x11 ^ uVar16);
  uVar24 = (uVar16 >> 7 ^ uVar16) >> 2 & 0x7f;
  uVar24 = uVar16 ^ (uVar24 << 7 | uVar24) << 2;
  local_160[1] = (uVar24 >> 2 | uVar16 << 0x1e) & 0x99999999 |
                 (uVar24 << 2 | uVar16 >> 0x1e) & 0x66666666;
  do {
    plVar27 = local_e8;
    puVar13 = &local_f4;
    puVar11 = local_160 + 9;
    FUN_1815f145d();
    *puVar11 = 0xb3cf292;
    *puVar13 = 0x5f;
    *plVar27 = 0x1815eff97;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001815f0bd6();
    lVar18 = local_f0;
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  lVar23 = (longlong)(int)local_160[1];
  uVar24 = (local_160[9] >> 0x11 ^ local_160[9]) & 0x3fff;
  local_160[9] = local_160[9] ^ (uVar24 << 0x11 | uVar24);
  uVar24 = ((local_160[9] & 0xf0f0f0f) << 4 | local_160[9] >> 4 & 0xf0f0f0f) + 0x56c9783a;
  uVar24 = (uVar24 * 0x100 | uVar24 >> 0x18) & 0xc837c837 |
           (uVar24 >> 8 | uVar24 * 0x1000000) & 0x37c837c8;
  uVar24 = (uVar24 << 0x10 | uVar24 >> 0x10) & 0x920a6df5 |
           (uVar24 >> 0x10 | uVar24 << 0x10) & 0x6df5920a;
  uVar24 = (uVar24 >> 10 | uVar24 << 0x16) + 0xd9419c4f;
  uVar16 = (uVar24 >> 0x10 ^ uVar24) >> 2 & 0x7ff;
  uVar24 = (uVar16 << 0x10 | uVar16) << 2 ^ uVar24;
  local_120 = local_e8[0];
  local_168 = (undefined *)(longlong)(int)(uVar24 << 0x11 | uVar24 >> 0xf);
  local_160[1] = 0;
  local_160[9] = 0;
  plVar27 = (longlong *)(lVar23 + 4 + local_f0);
  *plVar27 = *plVar27 +
             (ulonglong)
             ((uint)(*(ulonglong *)((longlong)local_168 + 4 + local_e8[0]) >> 9) & 0x2001060);
  do {
    puVar11 = local_118;
    puVar12 = local_160 + 2;
    FUN_1815ef5c5();
    uVar3 = rdtsc();
    uVar24 = (int)uVar3 - (int)((ulonglong)uVar3 >> 0x20);
    *puVar11 = uVar24;
    uVar31 = ~(~uVar31 + 1) + 1;
    lVar5 = ((-(ulonglong)uVar24 ^ 0xffffffffffffffff) + 1) -
            ((ulonglong)uVar24 * 0x10000 + 0x171510d4);
    uVar6 = lVar5 * 3;
    uVar6 = ((uVar6 >> 9 | uVar6 << 0x37) - 0x81576da) + lVar5 * 2;
    *puVar12 = (uint)((uVar6 * 0x20 | uVar6 >> 0x3b) * 0x801 + 0x382ed45d >> 5) & 0xacc64d56;
    uVar24 = local_160[3];
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  piVar33 = (int *)(lVar23 + 8 + lVar18);
  *piVar33 = *piVar33 + (local_160[2] ^ 0x944ca18a);
  piVar33 = (int *)(lVar23 + 4 + lVar18);
  *piVar33 = *piVar33 + (local_160[2] ^ 0xd52bf4d6);
  uVar6 = *(longlong *)(lVar23 + 4 + lVar18) + 0x57be8979c4f57a0f;
  uVar6 = (uVar6 >> 0x3b | uVar6 * 0x20) + 0xfb70c695695fe38d;
  uVar6 = (uVar6 * 0x10000 | uVar6 >> 0x30) & 0x9dae62519dae6251 |
          (uVar6 >> 0x10 | uVar6 << 0x30) & 0x62519dae62519dae;
  uVar7 = uVar6 + 0xb1fcf43ee63e5e0;
  uVar6 = ((uVar7 >> 2 | uVar6 << 0x3e) & 0x9999999999999999 |
          (uVar7 * 4 | uVar7 >> 0x3e) & 0x6666666666666666) ^ 0xcf3c8ac96b473043;
  uVar6 = (uVar6 >> 0x14 | uVar6 << 0x2c) ^ 0x99fed20f329545db;
  *(ulonglong *)(lVar23 + 4 + lVar18) = uVar6;
  plVar27 = (longlong *)((longlong)local_168 + 4 + local_120);
  *plVar27 = *plVar27 + (uVar6 >> 0xf & 0xde8580a8);
  local_160[2] = (uint)(*(ulonglong *)(lVar23 + 4 + lVar18) >> 0x1b) & 0x7fffffff;
  local_160[0] = (uint)(*(ulonglong *)(lVar23 + 4 + lVar18) >> 10) ^ 0xb15863b8;
  local_168 = (undefined *)(*(ulonglong *)(lVar23 + 4 + lVar18) ^ 0xa156a2865b848f5b);
  iVar15 = (int)uVar31;
  uVar10 = (DAT_1815bf480 * local_160[3] * 0x8000 | DAT_1815bf480 * local_160[3] >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  local_178[0] = (DAT_1815bf484 * local_160[3] * 0x8000 | DAT_1815bf484 * local_160[3] >> 0x11) *
                 iVar15;
  uVar10 = local_178[0] ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_1815f0e23();
                    /* WARNING: Call to offcut address within same function */
    func_0x0001815f0384();
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar10 = (DAT_1815bf488 * uVar24 * 0x8000 | DAT_1815bf488 * uVar24 >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (DAT_1815bf48c * uVar24 * 0x8000 | DAT_1815bf48c * uVar24 >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (DAT_1815bf490 * uVar24 * 0x8000 | DAT_1815bf490 * uVar24 >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (DAT_1815bf494 * uVar24 * 0x8000 | DAT_1815bf494 * uVar24 >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar10 = (DAT_1815bf498 * uVar24 * 0x8000 | DAT_1815bf498 * uVar24 >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar10 = (DAT_1815bf49c * uVar24 * 0x8000 | DAT_1815bf49c * uVar24 >> 0x11) * iVar15 ^
           (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar16 = (local_160[0] >> 0x11 ^ local_160[0]) & 0x3fff;
  local_178[0] = (DAT_1815bf4a0 * uVar24 * 0x8000 | DAT_1815bf4a0 * uVar24 >> 0x11) * iVar15;
  uVar32 = local_178[0] ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
  uVar17 = ((uint)((ulonglong)local_168 >> 0xc) & 0xfffff ^ (uint)local_168) >> 9 & 0x7f;
  uVar10 = (uint)((ulonglong)local_168 >> 0x20);
  local_c0 = 0xabf9620d;
  local_bc = 0xbc6b5fd0;
  uVar28 = (uVar10 ^ local_160[4]) & 0x99999999 ^ uVar10;
  uVar30 = (uVar10 ^ local_160[4]) & 0x66666666 ^ uVar10;
  uVar24 = (uVar28 >> 2 ^ uVar28) >> 4 & 1;
  uVar25 = (uVar30 >> 0xb ^ uVar30) & 3;
  uVar16 = ~((uVar16 << 0x11 | uVar16) ^ local_160[0]);
  uVar22 = ~((uVar24 * 4 | uVar24) << 4 ^ uVar28);
  uVar24 = ~((uVar17 << 0xc | uVar17) << 9 ^ (uint)local_168) ^ uVar16;
  uVar30 = ~((uVar25 << 0xb | uVar25) ^ uVar30);
  uVar28 = uVar24 & 0x1f8b2e7f ^ uVar16;
  uVar16 = uVar24 & 0xe074d180 ^ uVar16;
  uVar6 = (ulonglong)uVar16;
  uVar17 = (uVar22 >> 0x11 ^ uVar22) & 0xff;
  uVar26 = (uVar16 >> 6 ^ uVar16) >> 0x11 & 0xf;
  uVar25 = (uVar30 >> 0x11 ^ uVar30) & 0x1ff;
  uVar24 = (uVar28 >> 6 ^ uVar28) & 0xf;
  uVar28 = (uVar24 << 6 | uVar24) ^ uVar28;
  uVar24 = uVar30 ^ (uVar25 << 0x11 | uVar25) ^ uVar28;
  uVar25 = uVar24 & 0x5b705ebb ^ uVar28;
  uVar17 = uVar25 ^ uVar22 ^ (uVar17 << 0x11 | uVar17);
  local_c4 = ~(uVar24 & 0xa48fa144 ^ uVar28);
  uVar24 = ~(uVar17 & 0x55555555 ^ uVar25) ^ local_c4;
  local_c8 = uVar24 & 0x7f807f80 ^ local_c4;
  local_160[4] = ~(uVar17 & 0xaaaaaaaa ^ uVar25);
  local_160[0xe] = ~((uVar26 << 6 | uVar26) << 0x11 ^ uVar16);
  local_c4 = uVar24 & 0x807f807f ^ local_c4;
  local_120 = CONCAT44(local_120._4_4_,local_c8);
  local_168 = (undefined *)CONCAT44(uVar10,local_c4);
  local_d0 = local_160[4];
  local_cc = local_160[0xe];
  do {
    puVar29 = puVar19 + 4;
    puVar11 = puVar4 + 0xd;
    uVar7 = 0xdb00;
                    /* WARNING: Call to offcut address within same function */
    puVar19[-1] = 0x1815f0606;
    pcVar8 = (char *)func_0x0001815f02cc();
    uVar10 = (uint)uVar7;
    puVar19[-1] = (ulonglong)puVar4;
    cVar9 = (char)uVar7;
    puVar19 = puVar19 + -1;
    puVar4 = puVar11;
code_r0x0001815f063e:
    puVar20 = puVar19;
    if ((uVar7 & 0xc3) == 0) {
      do {
        if ((uVar7 & 0xc3) != 0) {
          if (-1 < cVar9) {
                    /* WARNING: Bad instruction - Truncating control flow here */
            halt_baddata();
          }
          goto LAB_1815f065b;
        }
      } while ((uVar7 & 0xc3) != 0);
      do {
      } while ((uVar7 & 0xc3) != 0);
LAB_1815f065b:
      if ((uVar7 & 0xc300) != 0) goto LAB_1815f0643;
    }
    else {
LAB_1815f0643:
      pcVar8 = (char *)(ulonglong)*puVar4;
      if ((uVar7 & 0xc300) == 0) {
        puVar20[-1] = (ulonglong)puVar21;
        pcVar2 = (code *)swi(3);
        (*pcVar2)();
        return;
      }
    }
    *(int *)puVar29 = (int)pcVar8;
    puVar4 = (uint *)*puVar20;
    puVar19 = puVar20 + 1;
    if ((uVar7 & 0xc3) == 0) {
      if (((uVar7 & 0xc3) == 0) || (cVar9 < '\0')) goto LAB_1815f0683;
      goto code_r0x0001815f063e;
    }
    if (cVar9 < '\0') {
      *puVar20 = (ulonglong)puVar21;
      puVar20[-1] = (ulonglong)puVar20;
      *pcVar8 = *pcVar8 + (char)pcVar8;
      puVar21 = (undefined1 *)*puVar20;
      goto code_r0x0001815f0694;
    }
LAB_1815f0683:
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
code_r0x0001815f0694:
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
    if (uVar10 == 0) {
      iVar1 = *(int *)((longlong)puVar20 + 0x4c);
      uVar10 = ((int)puVar20[5] * iVar1 * 0x8000 | (uint)((int)puVar20[5] * iVar1) >> 0x11) * iVar15
      ;
      *(uint *)(puVar20 + 5) = uVar10;
      uVar10 = uVar10 ^ (uVar32 << 0xd | uVar32 >> 0x13) * 5 + 0xe6546b64;
      uVar24 = (puVar4[0xe] * iVar1 * 0x8000 | puVar4[0xe] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar24;
      uVar24 = uVar24 ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
      uVar10 = (puVar4[0xf] * iVar1 * 0x8000 | puVar4[0xf] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar10;
      uVar10 = uVar10 ^ (uVar24 << 0xd | uVar24 >> 0x13) * 5 + 0xe6546b64;
      uVar24 = (puVar4[0x10] * iVar1 * 0x8000 | puVar4[0x10] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar24;
      uVar24 = uVar24 ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
      uVar10 = (puVar4[0x11] * iVar1 * 0x8000 | puVar4[0x11] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar10;
      uVar10 = uVar10 ^ (uVar24 << 0xd | uVar24 >> 0x13) * 5 + 0xe6546b64;
      uVar24 = (puVar4[0x12] * iVar1 * 0x8000 | puVar4[0x12] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar24;
      uVar24 = uVar24 ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
      uVar10 = (puVar4[0x13] * iVar1 * 0x8000 | puVar4[0x13] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar10;
      uVar10 = uVar10 ^ (uVar24 << 0xd | uVar24 >> 0x13) * 5 + 0xe6546b64;
      uVar24 = (puVar4[0x14] * iVar1 * 0x8000 | puVar4[0x14] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar24;
      uVar24 = uVar24 ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
      uVar10 = (puVar4[0x15] * iVar1 * 0x8000 | puVar4[0x15] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar10;
      uVar10 = uVar10 ^ (uVar24 << 0xd | uVar24 >> 0x13) * 5 + 0xe6546b64;
      piVar33 = (int *)(puVar21 + 0x98);
      uVar24 = (puVar4[0x16] * iVar1 * 0x8000 | puVar4[0x16] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) = uVar24;
      uVar24 = uVar24 ^ (uVar10 << 0xd | uVar10 >> 0x13) * 5 + 0xe6546b64;
      do {
                    /* WARNING: Call to offcut address within same function */
        *puVar20 = 0x1815f07df;
        func_0x0001815f0dc3();
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      *(uint *)(puVar20 + 5) =
           (puVar4[0x17] * iVar1 * 0x8000 | puVar4[0x17] * iVar1 >> 0x11) * iVar15;
      do {
        *puVar20 = uVar6;
        uVar3 = rdtsc();
        uVar10 = (int)uVar3 + (int)((ulonglong)uVar3 >> 0x20) * 8;
        *(uint *)(puVar21 + -0x80) = uVar10;
        uVar6 = (ulonglong)uVar10 * 9;
        uVar6 = (ulonglong)uVar10 + (uVar6 >> 7 | uVar6 << 0x39) + 0x253c1d6c;
        uVar6 = uVar6 ^ uVar6 >> 6;
        uVar6 = uVar6 - ((uVar6 >> 0xf | uVar6 << 0x31) - 0x48231e7c);
        uVar6 = uVar6 * 0x2000 | uVar6 >> 0x33;
        uVar6 = uVar6 + ((~uVar6 + 1 ^ 0xffffffffffffffff) + 1) * 0x200;
        uVar31 = -((uVar31 ^ 0xffffffffffffffff) + 1);
        uVar6 = (uVar6 * 0x800 | uVar6 >> 0x35) + uVar6 * 4;
        uVar6 = uVar6 >> 0xe | uVar6 << 0x32;
        uVar6 = uVar6 ^ uVar6 * 3 >> 0xf;
        puVar34 = (undefined1 *)((longlong)puVar29 + (longlong)puVar35);
        puVar29 = (ulonglong *)(((longlong)puVar35 - (longlong)puVar34 ^ 0xffffffffffffffffU) + 1);
        puVar35 = puVar34 + -(longlong)puVar29;
        *(uint *)(puVar20 + 0xd) =
             (uint)((int)(uVar6 >> 0xf) + (int)(uVar6 >> 0x1d) + -0xa7de170) >> 1;
        uVar6 = *puVar20;
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      uVar6 = puVar20[0xd];
      *(uint *)(puVar20 + 0xd) = (uint)uVar6 ^ (uint)puVar20[9];
      if (((uint)uVar6 ^ (uint)puVar20[9]) < 0x68709) {
        *(int *)(puVar21 + 0x10) = (int)puVar20[10];
        *(int *)(puVar21 + 0x14) = (int)puVar20[0xf];
        *(int *)(puVar21 + 0x18) = (int)puVar20[0x10];
        *(int *)(puVar21 + 0x1c) = (int)puVar20[7];
        do {
          puVar14 = (undefined8 *)(puVar21 + -0x48);
          puVar13 = (undefined4 *)((longlong)puVar20 + 0x6c);
                    /* WARNING: Call to offcut address within same function */
          *puVar20 = 0x1815f09fe;
          func_0x0001815f10e0();
          *puVar20 = 0x1815f0a03;
          uVar3 = *puVar20;
          *puVar13 = 0xbb0f95c4;
          *puVar14 = uVar3;
          *puVar20 = 0x1815f0a22;
          func_0x0001815eea35();
          uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
          if ((int)uVar10 < 0) {
            uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar10 != 0);
        uVar10 = (*(uint *)((longlong)puVar20 + 0x6c) >> 7 |
                 *(uint *)((longlong)puVar20 + 0x6c) << 0x19) + 0xf3b3ffa0;
        iVar15 = ~((uVar10 * 0x1000000 | uVar10 >> 8) + 0xad2120a9) + 0x7803b275;
        lVar18 = *(longlong *)(puVar21 + -0x48);
        *(int *)((longlong)puVar20 + 0x6c) = iVar15;
        *puVar20 = 0x1815f0a70;
        (*(code *)(iVar15 + lVar18))(puVar21 + 0x10,puVar21 + 0x28);
        do {
          *(undefined4 *)(puVar20 + 0xb) = 0x171f943e;
          uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
          if ((int)uVar10 < 0) {
            uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar10 != 0);
        uVar6 = 7;
        uVar10 = *(uint *)(puVar21 + 0x48);
        uVar16 = *(uint *)(puVar21 + 0x4c);
        uVar17 = (((int)puVar20[0xb] + 0xaf78a330U) * 0x80 | (int)puVar20[0xb] + 0xaf78a330U >> 0x19
                 ) + 0x645bdb2;
        uVar17 = (uVar17 * 0x80 | uVar17 >> 0x19) + 0x96e82c4b;
        *(uint *)(puVar20 + 0xb) = ~((uVar17 * -0x80000000 | uVar17 >> 1) + 0xca60f2f2) ^ 0x4eac78fa
        ;
        do {
          uVar17 = (uVar10 >> 0xc ^ uVar10) >> 2 & 0xfff;
          uVar25 = (uVar16 >> 5 ^ uVar16) >> 8 & 1;
          uVar10 = (uVar17 << 0xc | uVar17) << 2 ^ uVar10;
          uVar17 = (uVar10 >> 0x18 | uVar10 << 8) + 0x6e4157a7;
          uVar16 = (uVar16 << 0x1c | ((uVar25 << 5 | uVar25) << 8 ^ uVar16) >> 4) + 0x20a786ca;
          uVar10 = (uVar17 >> 0xb ^ uVar17) >> 9 & 0x3ff;
          uVar25 = uVar17 ^ (uVar10 << 0xb | uVar10) << 9;
          uVar10 = (uVar16 >> 0x11 ^ uVar16) >> 0xb & 3;
          uVar16 = uVar16 ^ (uVar10 << 0x11 | uVar10) << 0xb;
          uVar16 = (uVar16 >> 0x10 | uVar16 << 0x10) & 0xa3635c9c |
                   (uVar16 << 0x10 | uVar16 >> 0x10) & 0x5c9ca363;
          uVar10 = (uVar25 << 4 | uVar25 >> 0x1c) & 0x87878787 |
                   (uVar25 >> 4 | uVar17 * 0x10000000) & 0x78787878;
          uVar17 = (uVar16 << 0x12 | uVar16 >> 0xe) + 0x607d5440;
          uVar10 = uVar17 ^ (uVar10 << 0x12 | uVar10 >> 0xe) + 0x270a0bab;
          uVar16 = uVar10 & 0x3c3c3c3c ^ uVar17;
          uVar17 = uVar10 & 0xc3c3c3c3 ^ uVar17 ^ uVar16;
          uVar10 = uVar17 & 0x7341a189 ^ uVar16;
          uVar16 = uVar17 & 0x8cbe5e76 ^ uVar16;
          uVar17 = (int)uVar6 - 1;
          uVar6 = (ulonglong)uVar17;
        } while (-1 < (int)uVar17);
        uVar10 = ~(uVar10 + 0x80bddf0a) + 0x1e1f76b5;
        uVar10 = ~((uVar10 >> 0x17 | uVar10 * 0x200) + 0x8397daeb) ^ 0xf386fe29;
        if (((uVar10 << 10 | uVar10 >> 0x16) + 0xa0372212 ^ (uint)puVar20[0xb]) + uVar16 !=
            (int)puVar20[8]) {
          do {
            puVar14 = (undefined8 *)(puVar21 + -0x40);
                    /* WARNING: Call to offcut address within same function */
            *puVar20 = 0x1815f0c59;
            func_0x0001815f10e0();
            *puVar20 = uVar31;
            puVar20[-1] = uVar6;
            *puVar14 = FUN_180bc2900;
            uVar6 = puVar20[-1];
            uVar31 = *puVar20;
            uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
            if ((int)uVar10 < 0) {
              uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
            }
          } while (uVar10 != 0);
          pcVar2 = *(code **)(puVar21 + -0x40);
          *puVar20 = 0x1815f0cac;
          (*pcVar2)();
          do {
            uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
            if ((int)uVar10 < 0) {
              uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
            }
          } while (uVar10 != 0);
        }
      }
      iVar15 = (int)uVar31;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x18] * iVar1 * 0x8000 | puVar4[0x18] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x19] * iVar1 * 0x8000 | puVar4[0x19] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x1a] * iVar1 * 0x8000 | puVar4[0x1a] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x1b] * iVar1 * 0x8000 | puVar4[0x1b] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x1c] * iVar1 * 0x8000 | puVar4[0x1c] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x1d] * iVar1 * 0x8000 | puVar4[0x1d] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x1e] * iVar1 * 0x8000 | puVar4[0x1e] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x1f] * iVar1 * 0x8000 | puVar4[0x1f] * iVar1 >> 0x11) * iVar15;
      do {
        puVar19 = puVar20 + 5;
        lVar18 = (longlong)puVar4 + 0x3c3f00bd;
        uVar31 = 0xdb00;
                    /* WARNING: Call to offcut address within same function */
        *puVar20 = 0x1815f0df9;
        func_0x0001815f10f3(0xdb00,lVar18,0);
        do {
          do {
          } while ((uVar31 & 0xc300) == 0);
        } while ((uVar31 & 0xc300) == 0);
        if ((uVar31 & 0xc3) == 0) goto LAB_1815f0e1f;
        while ((uVar31 & 0xc3) != 0) {
LAB_1815f0e1f:
          if ((uVar31 & 0xc300) != 0) {
            *(undefined4 *)puVar19 = *(undefined4 *)(lVar18 + -0x3c3f003d);
          }
        }
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      *(uint *)(puVar20 + 5) =
           ((int)puVar20[5] * iVar1 * 0x8000 | (uint)((int)puVar20[5] * iVar1) >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x21] * iVar1 * 0x8000 | puVar4[0x21] * iVar1 >> 0x11) * iVar15;
      do {
                    /* WARNING: Call to offcut address within same function */
        *puVar20 = 0x1815f0e9a;
        func_0x0001815f13b1(0xdb00);
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      *(uint *)(puVar20 + 5) =
           (puVar4[0x22] * iVar1 * 0x8000 | puVar4[0x22] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x23] * iVar1 * 0x8000 | puVar4[0x23] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x24] * iVar1 * 0x8000 | puVar4[0x24] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x25] * iVar1 * 0x8000 | puVar4[0x25] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x26] * iVar1 * 0x8000 | puVar4[0x26] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x27] * iVar1 * 0x8000 | puVar4[0x27] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x28] * iVar1 * 0x8000 | puVar4[0x28] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x29] * iVar1 * 0x8000 | puVar4[0x29] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x2a] * iVar1 * 0x8000 | puVar4[0x2a] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x2b] * iVar1 * 0x8000 | puVar4[0x2b] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x2c] * iVar1 * 0x8000 | puVar4[0x2c] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x2d] * iVar1 * 0x8000 | puVar4[0x2d] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x2e] * iVar1 * 0x8000 | puVar4[0x2e] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x2f] * iVar1 * 0x8000 | puVar4[0x2f] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x30] * iVar1 * 0x8000 | puVar4[0x30] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x31] * iVar1 * 0x8000 | puVar4[0x31] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x32] * iVar1 * 0x8000 | puVar4[0x32] * iVar1 >> 0x11) * iVar15;
      do {
        *puVar20 = 0x1815f110c;
        FUN_1815f22de();
                    /* WARNING: Call to offcut address within same function */
        *puVar20 = 0x1815f1129;
        func_0x0001815ef9e7();
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      *(uint *)(puVar20 + 5) =
           (puVar4[0x33] * iVar1 * 0x8000 | puVar4[0x33] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x34] * iVar1 * 0x8000 | puVar4[0x34] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x35] * iVar1 * 0x8000 | puVar4[0x35] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x36] * iVar1 * 0x8000 | puVar4[0x36] * iVar1 >> 0x11) * iVar15;
      do {
        puVar11 = (uint *)((longlong)puVar20 + 0x5c);
        *puVar20 = 0x1815f11df;
        FUN_1815f229a(puVar11,(longlong)puVar20 + 0x5c);
        uVar3 = rdtsc();
        *puVar11 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      uVar10 = ((uint)(*(int *)((longlong)puVar20 + 0x5c) * -0x46017333) >> 0x18 ^
               *(int *)((longlong)puVar20 + 0x5c) * -0x46017333) * -0x7a147a15;
      *(uint *)((longlong)puVar20 + 0x5c) = uVar10;
      if (uVar10 < 0x20a32ff) {
        *(undefined8 *)(puVar21 + -0x78) = 0;
        do {
          *(code **)(puVar21 + -0x78) = FUN_1813bba80;
          uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
          if ((int)uVar10 < 0) {
            uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar10 != 0);
        pcVar2 = *(code **)(puVar21 + -0x78);
        *puVar20 = 0x1815f12a1;
        uVar31 = (*pcVar2)(0,0x9b36);
        if (1 < uVar31) {
          *puVar20 = 0x1815f12ac;
          FUN_18113eab0();
        }
      }
      *(uint *)(puVar20 + 5) =
           (puVar4[0x37] * iVar1 * 0x8000 | puVar4[0x37] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x38] * iVar1 * 0x8000 | puVar4[0x38] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x39] * iVar1 * 0x8000 | puVar4[0x39] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x3a] * iVar1 * 0x8000 | puVar4[0x3a] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x3b] * iVar1 * 0x8000 | puVar4[0x3b] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x3c] * iVar1 * 0x8000 | puVar4[0x3c] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x3d] * iVar1 * 0x8000 | puVar4[0x3d] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x3e] * iVar1 * 0x8000 | puVar4[0x3e] * iVar1 >> 0x11) * iVar15;
      *(uint *)(puVar20 + 5) =
           (puVar4[0x3f] * iVar1 * 0x8000 | puVar4[0x3f] * iVar1 >> 0x11) * iVar15;
      do {
        piVar33 = (int *)((~(ulonglong)piVar33 + 1 ^ 0xffffffffffffffff) + 1);
        uVar10 = (*piVar33 + 1) * *piVar33 & 0x80000001;
        if ((int)uVar10 < 0) {
          uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar10 != 0);
      *puVar20 = (ulonglong)((uVar24 << 0xd | uVar24 >> 0x13) * 5 + 0xe6546b64);
      puVar20[-1] = (ulonglong)puVar35;
      puVar20[-2] = (ulonglong)puVar4;
      puVar20[-3] = 0x1815f144e;
      func_0x0001815f1467();
      func_0x0001815f145e();
      return;
    }
  } while( true );
}



############ FUN_ 18161c080 size=1342 ############

/* WARNING: Instruction at (ram,0x00018161c4d0) overlaps instruction at (ram,0x00018161c4ce)
    */
/* WARNING: Removing unreachable block (ram,0x00018161c16f) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18161c080(longlong param_1)

{
  longlong *plVar1;
  undefined8 *puVar2;
  int iVar3;
  undefined8 uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined4 *puVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  int *piVar12;
  int iVar13;
  bool bVar14;
  int unaff_retaddr;
  undefined1 auStack_2f8 [48];
  undefined4 local_2c8;
  undefined8 local_2b8;
  uint local_2b0;
  undefined8 local_2a0;
  undefined8 *local_298;
  int local_288;
  undefined4 local_278;
  int iStack_274;
  undefined8 uStack_270;
  undefined8 local_268;
  undefined4 local_260;
  undefined4 local_25c;
  undefined8 local_250;
  undefined4 local_248;
  longlong local_240;
  code *local_238;
  longlong local_230;
  undefined8 *local_228;
  undefined1 local_220 [32];
  longlong *local_200;
  undefined4 local_1b8;
  undefined4 uStack_1b4;
  undefined4 uStack_1b0;
  undefined4 uStack_1ac;
  undefined4 local_1a8;
  int iStack_1a4;
  undefined4 uStack_1a0;
  undefined4 uStack_19c;
  undefined4 local_148;
  int iStack_144;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  undefined1 local_138 [16];
  undefined1 local_128 [16];
  undefined1 local_118 [216];
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_2f8;
  local_248 = 0x370;
  local_25c = 0x910;
  local_230 = param_1;
  uVar4 = FUN_18134c250(param_1,local_138);
  FUN_1804ab5a0(uVar4,local_220);
  plVar1 = (longlong *)(param_1 + 0xf8);
  local_200 = plVar1;
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  lVar10 = 0x180000000;
  local_2b8 = 0x1ae0;
  local_2a0 = 0x667a70;
  local_268 = 0x180667a70;
  local_250 = 0x180669550;
  local_278 = 0;
  iVar13 = (int)(*(float *)(lVar5 + 0x88) * DAT_1824c442c);
  uStack_270 = 0;
  puVar2 = (undefined8 *)(param_1 + 0x110);
  local_148 = 0;
  uStack_140 = 0;
  uStack_13c = 0;
  local_298 = puVar2;
  local_288 = iVar13;
  iStack_274 = iVar13;
  local_240 = lVar10;
  iStack_144 = iVar13;
  FUN_1813e8df0(*puVar2,&local_148);
  do {
    uVar4 = rdtsc();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = ((uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20)) * -0x50284602;
  local_2b0 = (uVar8 >> 0x18 ^ uVar8) * -0x166ae57b;
  if (local_2b0 < 0x1414141f) {
    do {
      local_238 = FUN_18141db20;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar6 = FUN_18141db20(0,0x4a0b);
    if (1 < uVar6) {
      FUN_18113eab0();
    }
  }
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  uVar4 = FUN_1804ab440(local_220,local_128,*(float *)(lVar5 + 0x88) * _DAT_1824c4538);
  puVar7 = (undefined4 *)FUN_18051bcc0(uVar4,local_118);
  local_1b8 = *puVar7;
  uStack_1b4 = puVar7[1];
  uStack_1b0 = puVar7[2];
  uStack_1ac = puVar7[3];
  FUN_18134c170(*puVar2,&local_1b8);
  piVar12 = (int *)register0x00000020;
  do {
    uVar9 = 0x6300;
    iVar3 = func_0x00018161b57d();
    uVar11 = lVar10 + (longlong)piVar12;
    uVar6 = uVar11 ^ 0x1df48369;
    if ((char)(uVar9 >> 8) == '\0') {
      bVar14 = iVar3 == 0x7eb6509e;
    }
    else {
      piVar12 = (int *)((longlong)piVar12 - uVar11);
      bVar14 = (uVar9 & 0x42) == 0;
      uVar6 = uVar11;
    }
    if (bVar14) {
      piVar12 = (int *)((ulonglong)piVar12 ^ 0xffffffffffffffff);
    }
    lVar10 = (longlong)piVar12 + 1;
    piVar12 = (int *)(uVar6 - lVar10);
    uVar8 = (*piVar12 + 1) * *piVar12 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_228 = (undefined8 *)(param_1 + 0x118);
  local_278 = 0;
  puVar7 = &local_1a8;
  uStack_270 = 0;
  local_1a8 = 0;
  uStack_1a0 = 0;
  uStack_19c = 0;
  iStack_274 = iVar13;
  iStack_1a4 = iVar13;
  FUN_1813e8df0(*local_228,puVar7);
  local_2a0 = 0x9c218ba3ba4f30a4;
  do {
    local_260 = 0x3002e291;
    uVar8 = (*piVar12 + 1) * *piVar12 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_2c8 = 0;
  FUN_18161c601(0,(longlong)puVar7 + 0x2b02780d);
  return;
}



############ FUN_ 181486b25 size=1360 ############

/* WARNING: Instruction at (ram,0x000181487076) overlaps instruction at (ram,0x000181487075)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181487071) */

undefined8 FUN_181486b25(int *param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  uint uVar4;
  ulonglong in_RAX;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 uVar7;
  uint uVar8;
  uint uVar9;
  undefined4 *puVar10;
  longlong *plVar11;
  uint uVar12;
  longlong lVar13;
  longlong unaff_RBX;
  undefined8 *puVar14;
  longlong unaff_RBP;
  longlong unaff_RSI;
  undefined4 *puVar15;
  longlong unaff_RDI;
  undefined4 *puVar16;
  ulonglong uVar17;
  longlong lVar18;
  uint *puVar19;
  IMAGE_DOS_HEADER *pIVar20;
  IMAGE_DOS_HEADER *pIVar21;
  longlong unaff_R13;
  int *unaff_R14;
  longlong lVar22;
  longlong unaff_R15;
  uint in_stack_00000030;
  undefined4 *in_stack_00000038;
  uint in_stack_00000040;
  uint uStack0000000000000048;
  undefined8 in_stack_00000050;
  undefined4 *in_stack_00000068;
  undefined8 in_stack_00000070;
  uint in_stack_00000078;
  uint in_stack_00000080;
  undefined8 uStack_8;
  
  while( true ) {
    uVar5 = ((in_RAX - param_2) * 0x1000 | in_RAX - param_2 >> 0x34) * -0x1ff;
    uVar5 = uVar5 ^ uVar5 >> 0xd;
    uVar5 = uVar5 - (uVar5 >> 10 | uVar5 << 0x36);
    lVar6 = ~(~uVar5 + 1) + 1 + uVar5 * 0x60;
    lVar6 = lVar6 - (lVar6 * 0x900 | (ulonglong)(lVar6 * 9) >> 0x38);
    *param_1 = (int)lVar6 - ((int)((ulonglong)(lVar6 * 5) >> 0xc) + -0x6728932f);
    uVar8 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    if (uVar8 == 0) break;
    param_1 = (int *)&stack0x00000030;
    uVar7 = rdtsc();
    in_stack_00000080 = (int)uVar7 + (int)((ulonglong)uVar7 >> 0x20) * 2;
    in_RAX = (ulonglong)in_stack_00000080;
    param_2 = ((ulonglong)(in_stack_00000080 >> 0xc) | in_RAX << 0x34) + 0x79d1918b;
  }
  *(int *)(unaff_RBX + 8) = *(int *)(unaff_RBX + 8) + (in_stack_00000030 ^ 0x839222ea);
  *(int *)(unaff_RBX + 4) = *(int *)(unaff_RBX + 4) + (in_stack_00000030 ^ 0x5cf4ea03);
  uVar5 = *(longlong *)(unaff_RBX + 4) + 0x7eae0e993fdb0e90;
  uVar5 = (uVar5 >> 8 | uVar5 << 0x38) & 0xb946b946b946b946 |
          (uVar5 * 0x100 | uVar5 >> 0x38) & 0x46b946b946b946b9;
  uVar17 = (uVar5 >> 0xc | uVar5 << 0x34) ^ 0xabc456ab5b7900fd;
  uVar5 = (ulonglong)(((uint)(uVar17 >> 9) ^ (uint)uVar17) & 0x3f);
  uVar5 = uVar17 ^ (uVar5 << 9 | uVar5);
  uVar17 = ((uVar5 << 8 | uVar17 >> 0x38) & 0xbf40bf40bf40bf40 |
           (uVar5 >> 8 | uVar5 << 0x38) & 0x40bf40bf40bf40bf) + 0xb4b14189174da02e;
  uVar5 = (ulonglong)((uint)((uVar17 >> 0x25 ^ uVar17) >> 5) & 0x1f);
  uVar5 = uVar17 ^ (uVar5 << 0x25 | uVar5) << 5;
  uVar5 = (uVar5 >> 4 | uVar17 << 0x3c) & 0xc3c3c3c3c3c3c3c3 |
          (uVar5 << 4 | uVar17 >> 0x3c) & 0x3c3c3c3c3c3c3c3c;
  *(ulonglong *)(unaff_RBX + 4) = uVar5;
  *(longlong *)(unaff_RDI + 4) =
       *(longlong *)(unaff_RDI + 4) + (ulonglong)((uint)(uVar5 >> 9) & 0x4401896);
  in_stack_00000030 = (uint)((ulonglong)*(undefined8 *)(unaff_RBX + 4) >> 0x18) & 0x7fffffff;
  uStack0000000000000048 = (uint)(*(ulonglong *)(unaff_RBX + 4) >> 0xd) ^ 0x1a58fb07;
  *(ulonglong *)(unaff_RBP + -0x78) = *(ulonglong *)(unaff_RBX + 4) ^ 0xa06b0f1514ae919;
  do {
    uVar5 = 0xd814;
    FUN_181485701();
    if ((unaff_R15 != 0 || -unaff_R15 == 0) && ((uVar5 & 0xe700) == 0)) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    unaff_R15 = ~-unaff_R15 + 1;
    FUN_181486b24();
    uVar8 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  pIVar21 = &IMAGE_DOS_HEADER_180000000;
  in_stack_00000070 = 0;
  in_stack_00000050 = 0x2480;
  in_stack_00000068 = (undefined4 *)&LAB_180b46214;
  in_stack_00000038 = (undefined4 *)&UNK_180b48694;
  *(undefined1 *)(unaff_RSI + 0xd9) = 1;
  do {
    uVar7 = rdtsc();
    in_stack_00000040 = (uint)uVar7 ^ (uint)((ulonglong)uVar7 >> 0x20);
    FUN_181488542();
    uVar8 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  in_stack_00000040 =
       (in_stack_00000040 * -0x166a5029 >> 0x18 ^ in_stack_00000040 * -0x166a5029) * -0x13ac51cb;
  if (in_stack_00000040 < 0x2492493f) {
    *(longlong *)(unaff_RBP + -0x80) = unaff_R15;
    do {
      *(code **)(unaff_RBP + -0x80) = FUN_18141db20;
      uVar8 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar5 = (**(code **)(unaff_RBP + -0x80))(0,0x74a9);
    if (1 < uVar5) {
      FUN_18113eab0();
    }
  }
  uVar8 = (uint)unaff_R15;
  do {
    FUN_1814888f2(0xd814);
    puVar16 = in_stack_00000068;
    puVar15 = in_stack_00000038;
    lVar22 = unaff_R13 + (longlong)unaff_R14;
    lVar6 = (longlong)unaff_R14 - lVar22;
    unaff_R13 = -lVar6;
    unaff_R14 = (int *)(lVar22 + lVar6);
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar6 = (longlong)in_stack_00000038 - (longlong)in_stack_00000068;
  lVar22 = 0;
  do {
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    puVar10 = &stack0x00000078;
    func_0x0001814890f8();
    *puVar10 = 0x577db35c;
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  in_stack_00000070 = 0xe8f0c70ede303153;
  uVar9 = ~(in_stack_00000078 ^ 0xe539903b) + 0x63e4f2fe;
  in_stack_00000050 = CONCAT44(in_stack_00000050._4_4_,0xde303153);
  uVar9 = ~(uVar9 >> 0xf | uVar9 * 0x20000) ^ 0x6704457;
  uVar9 = ~((uVar9 >> 3 | uVar9 << 0x1d) + 0x1805471);
  in_stack_00000038 = (undefined4 *)CONCAT44(in_stack_00000038._4_4_,uVar9);
  if (puVar15 != puVar16) {
LAB_181487170:
    puVar14 = (undefined8 *)((longlong)register0x00000020 + 8);
    puVar15 = puVar16;
    if ((pIVar21 != (IMAGE_DOS_HEADER *)0x0) &&
       (lVar13._0_1_ = pIVar21->e_magic[0], lVar13._1_1_ = pIVar21->e_magic[1],
       lVar13._2_2_ = pIVar21->e_cblp, lVar13._4_2_ = pIVar21->e_cp, lVar13._6_2_ = pIVar21->e_crlc,
       puVar14 = (undefined8 *)((longlong)register0x00000020 + 8), -1 < lVar13)) {
      *(undefined8 *)((longlong)register0x00000020 + 0x70) = 0x2621fc0;
      lVar18 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)register0x00000020 + 0x70);
      do {
        if (puVar16 < (undefined4 *)
                      (-*(longlong *)((longlong)register0x00000020 + 0x70) + 0x182621fc8 + lVar13))
        {
          puVar14 = (undefined8 *)((longlong)register0x00000020 + 8);
          if (-1 < lVar13) {
            plVar11 = (longlong *)(lVar18 + lVar13);
            puVar14 = (undefined8 *)((longlong)register0x00000020 + 8);
            if (plVar11 < puVar16 + 1) {
              *(undefined4 *)(unaff_RBP + 0x30) = *puVar16;
              pIVar20 = pIVar21;
              goto LAB_1814871e0;
            }
          }
          break;
        }
        lVar13._0_2_ = pIVar21->e_cparhdr;
        lVar13._2_2_ = pIVar21->e_minalloc;
        lVar13._4_2_ = pIVar21->e_maxalloc;
        lVar13._6_2_ = pIVar21->e_ss;
        pIVar21 = (IMAGE_DOS_HEADER *)&pIVar21->e_cparhdr;
        puVar14 = (undefined8 *)((longlong)register0x00000020 + 8);
      } while (-1 < lVar13);
    }
    goto LAB_181487210;
  }
LAB_1814872f1:
  *(uint *)((longlong)register0x00000020 + 0x5c) = uVar8;
  do {
    puVar15 = (undefined4 *)((longlong)register0x00000020 + 0x5c);
    *(undefined8 *)register0x00000020 = 0x181487327;
    uVar3 = FUN_18144c44b(&LAB_18113e030,&LAB_18113e030,&LAB_18113e030);
    *puVar15 = uVar3;
    uVar8 = (*(int *)(unaff_RBP + 0x98) + 1) * *(int *)(unaff_RBP + 0x98) & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = *(uint *)((longlong)register0x00000020 + 0x5c);
  uVar4 = uVar8 << 7 | uVar8 >> 0x19;
  uVar12 = (uVar4 << 8 | (uVar8 & 0x1ffffff) >> 0x11) & 0xba45ba45 |
           ((uVar8 & 0x1ffffff) >> 1 | uVar4 << 0x18) & 0x45ba45ba;
  uVar8 = (uVar12 >> 0x12 ^ uVar12) >> 0xd & 1;
  uVar8 = (((uVar8 << 0x12 | uVar8) << 0xd ^ uVar12) >> 10 | uVar12 << 0x16) + 0x7dd9de3e;
  uVar4 = (uVar8 >> 4 | uVar8 * 0x10000000) & 0x78787878;
  *(uint *)((longlong)register0x00000020 + 0x28) =
       (uVar8 * 0x10 | uVar8 >> 0x1c) & 0x87878787 | uVar4;
  *(undefined4 **)register0x00000020 = puVar16;
  lVar6 = (ulonglong)uVar9 + (ulonglong)uVar12;
  *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1814873e8;
  FUN_18148740c(uVar4,lVar6 - (((ulonglong)uVar12 - lVar6 ^ 0xffffffffffffffff) + 1));
  lVar6 = *(longlong *)register0x00000020;
  *(longlong *)register0x00000020 = lVar6 + 0x112;
  *(longlong *)((longlong)register0x00000020 + -8) = lVar6 + -0x1abbc;
  *(longlong *)((longlong)register0x00000020 + -0x10) = lVar6 + -0x7d8d7;
  *(longlong *)((longlong)register0x00000020 + -0x18) = lVar6 + -0x1db44;
  *(longlong *)((longlong)register0x00000020 + -0x20) = lVar6 + 0x2dec7;
  *(longlong *)((longlong)register0x00000020 + -0x28) = lVar6 + 0x813ef;
                    /* WARNING: Could not recover jumptable at 0x0001814874da. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar7 = (*(code *)(lVar6 + -0x5021))();
  return uVar7;
  while (plVar11 = (longlong *)(lVar18 + lVar13),
        puVar14 = (undefined8 *)((longlong)register0x00000020 + 8), plVar11 < puVar16 + 1) {
LAB_1814871e0:
    lVar1 = (lVar18 - (longlong)puVar16) + lVar13;
    lVar13 = *(longlong *)&pIVar20->e_cparhdr;
    pIVar20 = (IMAGE_DOS_HEADER *)&pIVar20->e_cparhdr;
    *(longlong *)(unaff_RBP + 0x30 + lVar1) = *plVar11 - lVar18;
    puVar14 = (undefined8 *)((longlong)register0x00000020 + 8);
    puVar15 = (undefined4 *)(unaff_RBP + 0x30);
    if (lVar13 < 0) break;
  }
LAB_181487210:
  do {
    puVar19 = (uint *)((longlong)puVar14 + 0x20);
    uVar5 = 0xd814;
    uVar8 = *puVar19;
    *(undefined4 **)((longlong)puVar14 + -8) = puVar15;
    puVar2 = (undefined8 *)((longlong)puVar14 + -8);
    if ((((uVar8 & 0xc3) == 0) &&
        (puVar2 = (undefined8 *)((longlong)puVar14 + -8), (uVar8 & 0xc3) == 0)) &&
       (puVar2 = (undefined8 *)((longlong)puVar14 + -8), (uVar8 & 0xc3) == 0)) {
      puVar2 = (undefined8 *)((longlong)puVar14 + -8);
    }
    do {
      do {
        register0x00000020 = (BADSPACEBASE *)puVar2;
        puVar2 = (undefined8 *)register0x00000020;
      } while ((uVar5 & 0xc300) == 0);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x181487276;
      uVar8 = FUN_181487772();
      *puVar19 = uVar8;
      puVar2 = (undefined8 *)((longlong)register0x00000020 + 8);
    } while (((uVar5 & 0xc3) != 0) ||
            (puVar2 = (undefined8 *)((longlong)register0x00000020 + 8), (uVar5 & 0xc3) != 0));
    uVar8 = (*(int *)(unaff_RBP + 0x98) + 1) * *(int *)(unaff_RBP + 0x98) & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    puVar14 = (undefined8 *)((longlong)register0x00000020 + 8);
    puVar15 = *(undefined4 **)register0x00000020;
  } while (uVar8 != 0);
  lVar22 = lVar22 + 4;
  puVar16 = puVar16 + 1;
  uVar8 = *(int *)((longlong)register0x00000020 + 0x28) * 0x401 ^
          (uint)(*(int *)((longlong)register0x00000020 + 0x28) * 0x401) >> 6;
  *(uint *)((longlong)register0x00000020 + 0x28) = uVar8;
  if (lVar6 == lVar22) goto code_r0x0001814872e1;
  goto LAB_181487170;
code_r0x0001814872e1:
  uVar9 = *(uint *)((longlong)register0x00000020 + 0x38);
  goto LAB_1814872f1;
}



############ FUN_ 18114b631 size=307 ############

void FUN_18114b631(void)

{
  longlong unaff_retaddr;
  
                    /* WARNING: Could not recover jumptable at 0x00018114b766. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_retaddr + -0xbb60))();
  return;
}



############ FUN_ 18123db10 size=180 ############

undefined8 * FUN_18123db10(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  undefined8 *_Dst;
  longlong *plVar5;
  
  *param_1 = 0;
  param_1[3] = param_2[3];
  plVar5 = (longlong *)*param_2;
  if (plVar5 == (longlong *)0x0) {
    plVar5 = param_2 + 1;
  }
  iVar3 = (int)param_2[4] >> 5;
  lVar2 = (longlong)iVar3;
  if (-1 < iVar3) {
    do {
      uVar1 = *(uint *)((longlong)plVar5 + lVar2 * 4);
      if (uVar1 != 0) {
        iVar4 = 0x1f;
        if (uVar1 != 0) {
          for (; uVar1 >> iVar4 == 0; iVar4 = iVar4 + -1) {
          }
        }
        iVar4 = iVar3 * 0x20 + iVar4;
        goto LAB_18123db65;
      }
      iVar3 = iVar3 + -1;
      lVar2 = lVar2 + -1;
    } while (-1 < lVar2);
  }
  iVar4 = -1;
LAB_18123db65:
  *(int *)(param_1 + 4) = iVar4;
  *(undefined1 *)((longlong)param_1 + 0x24) = *(undefined1 *)((longlong)param_2 + 0x24);
  if (4 < (ulonglong)param_1[3]) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  plVar5 = (longlong *)*param_2;
  if (plVar5 == (longlong *)0x0) {
    plVar5 = param_2 + 1;
  }
  _Dst = (undefined8 *)*param_1;
  if (_Dst == (undefined8 *)0x0) {
    _Dst = param_1 + 1;
  }
  memcpy(_Dst,plVar5,param_1[3] << 2);
  return param_1;
}



############ FUN_ 1804d5cd0 size=204 ############

void FUN_1804d5cd0(longlong *param_1,int param_2)

{
  undefined8 *puVar1;
  void *_Memory;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  
  if ((int)param_1[1] == param_2) {
    *(int *)(param_1 + 1) = param_2;
    return;
  }
  if (0 < param_2) {
    puVar3 = malloc((longlong)param_2 * 0x28);
    if (0 < *(int *)((longlong)param_1 + 0xc)) {
      puVar1 = puVar3 + 4;
      puVar4 = (undefined8 *)((longlong)puVar1 + *param_1 + (-0x20 - (longlong)puVar3));
      *puVar3 = *puVar4;
      *puVar4 = 0;
      puVar3[3] = puVar4[3];
      *(undefined4 *)puVar1 = *(undefined4 *)(puVar4 + 4);
      *(undefined1 *)((longlong)puVar3 + 0x24) = *(undefined1 *)((longlong)puVar4 + 0x24);
      uVar2 = puVar4[2];
      puVar3[1] = puVar4[1];
      puVar3[2] = uVar2;
                    /* WARNING: Subroutine does not return */
      free(*(void **)((longlong)puVar1 + *param_1 + (-0x20 - (longlong)puVar3)));
    }
    _Memory = (void *)*param_1;
    *param_1 = (longlong)puVar3;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1812bf720 size=95 ############

undefined8
FUN_1812bf720(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  uVar1 = 0xfffffffffffffffe;
  FUN_1812c37c0(*param_1);
  FUN_1812bf790(param_1,param_3,param_2,param_4,1,uVar1);
  return param_2;
}



############ FUN_ 1812bf790 size=719 ############

bool FUN_1812bf790(longlong *param_1,undefined8 param_2,longlong param_3)

{
  undefined8 *puVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  longlong lVar6;
  longlong *plVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  bool bVar10;
  longlong local_b8;
  undefined4 local_b0;
  undefined4 local_ac;
  longlong local_a8;
  undefined4 local_a0;
  undefined4 local_9c;
  longlong local_98 [2];
  undefined1 local_88 [16];
  longlong local_78 [2];
  longlong local_68 [2];
  undefined8 local_58;
  undefined1 local_50 [16];
  undefined1 local_40 [24];
  
  local_58 = 0xfffffffffffffffe;
  plVar7 = (longlong *)*param_1;
  puVar1 = (undefined8 *)plVar7[0x1a];
  for (puVar9 = puVar1; puVar9 != puVar1 + *(int *)((longlong)plVar7 + 0xdc); puVar9 = puVar9 + 1) {
    if (param_1 == (longlong *)*puVar9) {
      iVar5 = (int)((longlong)puVar9 - (longlong)puVar1 >> 3);
      goto LAB_1812bf807;
    }
  }
  iVar5 = -1;
LAB_1812bf807:
  bVar10 = iVar5 < 0;
  if (bVar10) {
    puVar1 = (undefined8 *)plVar7[0x1c];
    for (puVar9 = puVar1; puVar9 != puVar1 + *(int *)((longlong)plVar7 + 0xec); puVar9 = puVar9 + 1)
    {
      if (param_1 == (longlong *)*puVar9) {
        iVar5 = (int)((longlong)puVar9 - (longlong)puVar1 >> 3);
        goto LAB_1812bf847;
      }
    }
    iVar5 = -1;
  }
LAB_1812bf847:
  if (param_3 == 0) {
    plVar7 = (longlong *)FUN_1812c37c0(plVar7,local_50);
    bVar3 = false;
    bVar2 = true;
  }
  else {
    if (((*(int *)(param_3 + 0xc) != *(int *)((longlong)plVar7 + 0xdc)) ||
        (*(int *)(param_3 + 0x1c) != *(int *)((longlong)plVar7 + 0xec))) ||
       (cVar4 = (**(code **)(*plVar7 + 0x150))(plVar7,param_3), cVar4 == '\0')) {
      lVar6 = FUN_1812c37c0(*param_1,local_98);
      FUN_1804db7e0(param_3,lVar6);
      FUN_1804db7e0(param_3 + 0x10,lVar6 + 0x10);
      FUN_18047c500(local_88);
      FUN_18047c500(local_98);
    }
    FUN_1804db870(local_98,param_3);
    FUN_1804db870(local_88,param_3 + 0x10);
    plVar7 = local_98;
    bVar3 = true;
    bVar2 = false;
  }
  local_b8 = *plVar7;
  *plVar7 = 0;
  local_b0 = (int)plVar7[1];
  local_ac = *(undefined4 *)((longlong)plVar7 + 0xc);
  plVar7[1] = 0;
  local_a8 = plVar7[2];
  plVar7[2] = 0;
  local_a0 = (int)plVar7[3];
  local_9c = *(undefined4 *)((longlong)plVar7 + 0x1c);
  plVar7[3] = 0;
  if (bVar2) {
    FUN_18047c500(local_40);
    FUN_18047c500(local_50);
  }
  if (bVar3) {
    FUN_18047c500(local_88);
    FUN_18047c500(local_98);
  }
  plVar7 = &local_b8;
  if (bVar10) {
    plVar7 = &local_a8;
  }
  lVar6 = (longlong)iVar5 * 0x28;
  iVar5 = FUN_18123c5f0(*plVar7 + lVar6,param_2);
  if (iVar5 == 0) {
    bVar10 = true;
  }
  else {
    FUN_1804db870(local_78,&local_b8);
    FUN_1804db870(local_68,&local_a8);
    plVar8 = local_78;
    if (bVar10) {
      plVar8 = local_68;
    }
    FUN_18123d980(*plVar8 + lVar6,param_2);
    FUN_1812c11e0(*param_1,local_78,&local_b8);
    if (param_3 != 0) {
      FUN_1804d7300(param_3,&local_b8);
    }
    iVar5 = FUN_18123c5f0(*plVar7 + lVar6,param_2);
    bVar10 = iVar5 == 0;
    FUN_18047c500(local_68);
    FUN_18047c500(local_78);
  }
  FUN_18047c500(&local_a8);
  FUN_18047c500(&local_b8);
  return bVar10;
}



############ FUN_ 18047aa70 size=373 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18047aa70(longlong param_1,undefined8 *param_2,int param_3,undefined8 *param_4,int param_5)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined1 auStack_b8 [32];
  undefined8 *local_98 [2];
  undefined8 *local_88 [2];
  undefined8 local_78;
  void *local_70 [5];
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_b8;
  lVar1 = *(longlong *)(param_1 + 0x28);
  if ((param_3 <= *(int *)(lVar1 + 0xdc)) && (param_5 <= *(int *)(lVar1 + 0xec))) {
    FUN_1812c37c0(lVar1,local_98);
    if (0 < param_3) {
      puVar3 = (undefined8 *)FUN_1811330f0(local_70,*param_2);
      uVar2 = *local_98[0];
      *local_98[0] = *puVar3;
      *puVar3 = uVar2;
      uVar2 = puVar3[2];
      local_98[0][1] = puVar3[1];
      local_98[0][2] = uVar2;
      local_98[0][3] = puVar3[3];
      *(undefined4 *)(local_98[0] + 4) = *(undefined4 *)(puVar3 + 4);
      *(undefined1 *)((longlong)local_98[0] + 0x24) = *(undefined1 *)((longlong)puVar3 + 0x24);
                    /* WARNING: Subroutine does not return */
      free(local_70[0]);
    }
    if (0 < param_5) {
      puVar3 = (undefined8 *)FUN_1811330f0(local_70,*param_4);
      uVar2 = *local_88[0];
      *local_88[0] = *puVar3;
      *puVar3 = uVar2;
      uVar2 = puVar3[2];
      local_88[0][1] = puVar3[1];
      local_88[0][2] = uVar2;
      local_88[0][3] = puVar3[3];
      *(undefined4 *)(local_88[0] + 4) = *(undefined4 *)(puVar3 + 4);
      *(undefined1 *)((longlong)local_88[0] + 0x24) = *(undefined1 *)((longlong)puVar3 + 0x24);
                    /* WARNING: Subroutine does not return */
      free(local_70[0]);
    }
    FUN_1812c3920(*(undefined8 *)(param_1 + 0x28),local_98);
    FUN_18047c500(local_88);
    FUN_18047c500(local_98);
  }
}



############ FUN_ 1812c3920 size=1014 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812c3920(longlong *param_1,longlong param_2)

{
  void *_Memory;
  char cVar1;
  int iVar2;
  longlong *plVar3;
  uint uVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  uint uVar11;
  ulonglong uVar12;
  int iVar13;
  ulonglong uVar14;
  undefined8 *puVar15;
  longlong lVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  bool bVar20;
  undefined1 auStack_f8 [32];
  int local_d8;
  uint local_d4;
  uint local_d0;
  longlong *local_c8;
  longlong local_c0;
  uint local_b4;
  longlong local_b0;
  uint local_a4;
  longlong *local_a0;
  longlong local_98 [2];
  longlong local_88 [2];
  undefined8 local_78;
  undefined8 local_68;
  undefined8 uStack_60;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  iVar13 = *(int *)((longlong)param_1 + 0xdc);
  local_a0 = param_1 + 0x1c;
  uVar4 = *(uint *)((longlong)param_1 + 0xec);
  uVar18 = (ulonglong)(int)uVar4;
  local_d8 = iVar13;
  local_d0 = uVar4;
  local_c8 = param_1;
  FUN_1804db870(&local_c0);
  FUN_1804db870(&local_b0,param_2 + 0x10);
  FUN_1812c37c0(param_1,local_98);
  uVar11 = 0;
  if (0 < iVar13) {
    lVar8 = 0;
    lVar7 = local_c0;
    do {
      if ((local_b4 <= uVar11) || (iVar2 = FUN_18123d3f0(lVar8 + lVar7), iVar2 == 0)) {
        FUN_18123d980(lVar8 + lVar7,lVar8 + local_98[0]);
        lVar7 = local_c0;
      }
      uVar11 = uVar11 + 1;
      lVar8 = lVar8 + 0x28;
    } while ((int)uVar11 < iVar13);
  }
  uVar11 = 0;
  if (0 < (int)uVar4) {
    lVar8 = 0;
    uVar10 = uVar18;
    lVar7 = local_b0;
    do {
      if (uVar11 < local_a4) {
        iVar13 = 0;
        lVar16 = *(longlong *)(lVar8 + lVar7);
        if (lVar16 == 0) {
          lVar16 = lVar7 + 8 + lVar8;
        }
        iVar2 = *(int *)(lVar8 + 0x20 + lVar7) >> 5;
        lVar6 = (longlong)iVar2;
        if (iVar2 < 0) goto LAB_1812c3a8d;
        do {
          uVar4 = *(uint *)(lVar16 + lVar6 * 4);
          uVar4 = uVar4 - (uVar4 >> 1 & 0x55555555);
          uVar4 = (uVar4 >> 2 & 0x33333333) + (uVar4 & 0x33333333);
          uVar4 = (uVar4 >> 4) + uVar4 & 0xf0f0f0f;
          uVar4 = uVar4 + (uVar4 >> 8);
          iVar13 = iVar13 + (uVar4 + (uVar4 >> 0x10) & 0x3f);
          lVar6 = lVar6 + -1;
        } while (-1 < lVar6);
        if (iVar13 == 0) goto LAB_1812c3a8d;
      }
      else {
LAB_1812c3a8d:
        FUN_18123d980(lVar7 + (longlong)(int)uVar11 * 0x28,
                      local_88[0] + (longlong)(int)uVar11 * 0x28);
        lVar7 = local_b0;
      }
      uVar11 = uVar11 + 1;
      lVar8 = lVar8 + 0x28;
      uVar10 = uVar10 - 1;
      iVar13 = local_d8;
    } while (uVar10 != 0);
  }
  plVar3 = local_c8;
  if (((local_b4 == *(uint *)((longlong)local_c8 + 0xdc)) &&
      (local_a4 == *(uint *)((longlong)local_c8 + 0xec))) &&
     (cVar1 = (**(code **)(*local_c8 + 0x150))(local_c8,&local_c0), cVar1 != '\0')) {
    uVar17 = 0;
    local_d4 = 0;
    uVar10 = uVar17;
    do {
      bVar20 = (uint)uVar10 != 0;
      iVar2 = (int)uVar18;
      if (bVar20) {
        iVar2 = iVar13;
      }
      uVar18 = uVar17;
      uVar12 = uVar17;
      uVar19 = uVar17;
      uVar4 = (uint)uVar10;
      if (0 < iVar2) {
        do {
          plVar5 = local_a0;
          if (bVar20) {
            plVar5 = plVar3 + 0x1a;
          }
          uVar10 = uVar17;
          if ((uint)uVar18 < *(uint *)((longlong)plVar5 + 0xc)) {
            uVar10 = *(ulonglong *)(*plVar5 + uVar12 * 8);
          }
          plVar3 = &local_c0;
          if (!bVar20) {
            plVar3 = &local_b0;
          }
          puVar9 = (undefined8 *)(*plVar3 + uVar19);
          lVar7 = *(longlong *)(uVar10 + 0x10);
          if (lVar7 == 0) {
            lVar7 = uVar10 + 0x18;
          }
          iVar13 = *(int *)(uVar10 + 0x30) >> 5;
          lVar8 = (longlong)iVar13;
          uVar14 = uVar17;
          uVar4 = 0;
          if (-1 < iVar13) {
            do {
              uVar4 = *(uint *)(lVar7 + lVar8 * 4);
              uVar4 = uVar4 - (uVar4 >> 1 & 0x55555555);
              uVar4 = (uVar4 >> 2 & 0x33333333) + (uVar4 & 0x33333333);
              uVar4 = (uVar4 >> 4) + uVar4 & 0xf0f0f0f;
              uVar4 = uVar4 + (uVar4 >> 8);
              uVar4 = (int)uVar14 + (uVar4 + (uVar4 >> 0x10) & 0x3f);
              uVar14 = (ulonglong)uVar4;
              lVar8 = lVar8 + -1;
            } while (-1 < lVar8);
          }
          if (uVar4 == 0) {
            puVar15 = (undefined8 *)*puVar9;
            if (puVar15 == (undefined8 *)0x0) {
              puVar15 = puVar9 + 1;
            }
            lVar7 = (longlong)(*(int *)(puVar9 + 4) >> 5);
            if (-1 < *(int *)(puVar9 + 4) >> 5) {
              do {
                uVar4 = *(uint *)((longlong)puVar15 + lVar7 * 4);
                uVar4 = uVar4 - (uVar4 >> 1 & 0x55555555);
                uVar4 = (uVar4 >> 2 & 0x33333333) + (uVar4 & 0x33333333);
                uVar4 = (uVar4 >> 4) + uVar4 & 0xf0f0f0f;
                uVar4 = uVar4 + (uVar4 >> 8);
                uVar17 = (ulonglong)((int)uVar17 + (uVar4 + (uVar4 >> 0x10) & 0x3f));
                lVar7 = lVar7 + -1;
              } while (-1 < lVar7);
            }
            if ((int)uVar17 != 0) {
              FUN_18123d980(uVar10 + 0x60,puVar9);
            }
            local_68 = 0;
            uStack_60 = 0;
            _Memory = (void *)*puVar9;
            *puVar9 = 0;
            puVar9[1] = 0;
            puVar9[2] = 0;
            puVar9[3] = 4;
            *(undefined4 *)(puVar9 + 4) = 0xffffffff;
            *(undefined1 *)((longlong)puVar9 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
          uVar12 = uVar12 + 1;
          plVar3 = local_c8;
          uVar18 = (ulonglong)((uint)uVar18 + 1);
          uVar19 = uVar19 + 0x28;
          iVar13 = local_d8;
          uVar4 = local_d4;
        } while ((longlong)uVar12 < (longlong)iVar2);
      }
      local_d4 = uVar4 + 1;
      uVar10 = (ulonglong)local_d4;
      uVar18 = (ulonglong)local_d0;
    } while ((int)local_d4 < 2);
    FUN_1812c1e90(plVar3,&local_c0);
  }
  FUN_18047c500(local_88);
  FUN_18047c500(local_98);
  FUN_18047c500(&local_b0);
  FUN_18047c500(&local_c0);
}



############ FUN_ 1812c1e90 size=266 ############

undefined1 FUN_1812c1e90(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  code *pcVar1;
  bool bVar2;
  char cVar3;
  undefined1 uVar4;
  longlong lVar5;
  undefined1 local_50 [16];
  undefined1 local_40 [16];
  undefined1 local_30 [16];
  undefined1 local_20 [24];
  
  lVar5 = FUN_1812c37c0(param_1,local_30,param_3,param_4,0xfffffffffffffffe);
  cVar3 = FUN_1804df970(param_2,lVar5);
  if (cVar3 != '\0') {
    cVar3 = FUN_1804df970(param_2 + 0x10,lVar5 + 0x10);
    if (cVar3 != '\0') {
      bVar2 = true;
      goto LAB_1812c1ee2;
    }
  }
  bVar2 = false;
LAB_1812c1ee2:
  FUN_18047c500(local_20);
  FUN_18047c500(local_30);
  if (bVar2) {
    return 1;
  }
  FUN_1804db870(local_50,param_2);
  FUN_1804db870(local_40,param_2 + 0x10);
  pcVar1 = *(code **)(*param_1 + 0x158);
  if (pcVar1 == FUN_1804d7030) {
    cVar3 = (**(code **)(*param_1 + 0x150))();
  }
  else {
    cVar3 = (*pcVar1)(param_1,local_50);
  }
  if (cVar3 == '\0') {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(*param_1 + 0x160))(param_1,local_50);
  }
  FUN_18047c500(local_40);
  FUN_18047c500(local_50);
  return uVar4;
}



############ FUN_ 1812c0e30 size=525 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812c0e30(longlong *param_1,int param_2,int param_3,longlong param_4,undefined4 param_5)

{
  void *pvVar1;
  int iVar2;
  undefined8 uVar3;
  undefined1 auStack_b8 [32];
  longlong local_98;
  int local_8c;
  longlong local_88;
  int local_7c;
  undefined8 local_78;
  void *local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_b8;
  if ((int)param_1[0x20] != param_2) {
    uVar3 = FUN_1812b1fe0(&local_70);
    if ((*(int *)((longlong)param_1 + 0xdc) != 0) && (*(longlong *)param_1[0x1a] != 0)) {
      FUN_1812bf720(*(longlong *)param_1[0x1a],&local_98,uVar3);
      iVar2 = FUN_18123c5f0(local_98,uVar3);
      if (iVar2 == 0) {
        (**(code **)(*param_1 + 0x160))(param_1,&local_98);
      }
      FUN_18047c500(&local_88);
      FUN_18047c500(&local_98);
    }
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  if (*(int *)((longlong)param_1 + 0x104) != param_3) {
    uVar3 = FUN_1812b1fe0(&local_70,param_3);
    if ((*(int *)((longlong)param_1 + 0xec) != 0) && (*(longlong *)param_1[0x1c] != 0)) {
      FUN_1812bf720(*(longlong *)param_1[0x1c],&local_98,uVar3);
      iVar2 = FUN_18123c5f0(local_88,uVar3);
      if (iVar2 == 0) {
        (**(code **)(*param_1 + 0x160))(param_1,&local_98);
      }
      FUN_18047c500(&local_88);
      FUN_18047c500(&local_98);
    }
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  FUN_1812c37c0(param_1,&local_98);
  if (1 < local_8c) {
    local_68 = 0;
    uStack_60 = 0;
    pvVar1 = *(void **)(local_98 + 0x28);
    *(undefined8 *)(local_98 + 0x28) = 0;
    *(undefined8 *)(local_98 + 0x30) = 0;
    *(undefined8 *)(local_98 + 0x38) = 0;
    *(undefined8 *)(local_98 + 0x40) = 4;
    *(undefined4 *)(local_98 + 0x48) = 0xffffffff;
    *(undefined1 *)(local_98 + 0x4c) = 0;
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  if (1 < local_7c) {
    local_68 = 0;
    uStack_60 = 0;
    pvVar1 = *(void **)(local_88 + 0x28);
    *(undefined8 *)(local_88 + 0x28) = 0;
    *(undefined8 *)(local_88 + 0x30) = 0;
    *(undefined8 *)(local_88 + 0x38) = 0;
    *(undefined8 *)(local_88 + 0x40) = 4;
    *(undefined4 *)(local_88 + 0x48) = 0xffffffff;
    *(undefined1 *)(local_88 + 0x4c) = 0;
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  FUN_1812c1e90(param_1,&local_98);
  FUN_18047c500(&local_88);
  FUN_18047c500(&local_98);
  param_1[6] = param_4;
  *(undefined4 *)(param_1 + 7) = param_5;
}



############ FUN_ 1812c05b0 size=247 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812c05b0(undefined8 param_1)

{
  void *pvVar1;
  undefined1 auStack_98 [32];
  longlong local_78;
  int local_6c;
  longlong local_68;
  int local_5c;
  undefined8 local_58;
  undefined8 local_48;
  undefined8 uStack_40;
  ulonglong local_28;
  
  local_58 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_98;
  FUN_1812c37c0(param_1,&local_78);
  if (1 < local_6c) {
    local_48 = 0;
    uStack_40 = 0;
    pvVar1 = *(void **)(local_78 + 0x28);
    *(undefined8 *)(local_78 + 0x28) = 0;
    *(undefined8 *)(local_78 + 0x30) = 0;
    *(undefined8 *)(local_78 + 0x38) = 0;
    *(undefined8 *)(local_78 + 0x40) = 4;
    *(undefined4 *)(local_78 + 0x48) = 0xffffffff;
    *(undefined1 *)(local_78 + 0x4c) = 0;
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  if (1 < local_5c) {
    local_48 = 0;
    uStack_40 = 0;
    pvVar1 = *(void **)(local_68 + 0x28);
    *(undefined8 *)(local_68 + 0x28) = 0;
    *(undefined8 *)(local_68 + 0x30) = 0;
    *(undefined8 *)(local_68 + 0x38) = 0;
    *(undefined8 *)(local_68 + 0x40) = 4;
    *(undefined4 *)(local_68 + 0x48) = 0xffffffff;
    *(undefined1 *)(local_68 + 0x4c) = 0;
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  FUN_1812c1e90(param_1,&local_78);
  FUN_18047c500(&local_68);
  FUN_18047c500(&local_78);
}



############ FUN_ 18135fd70 size=293 ############

void FUN_18135fd70(longlong param_1,longlong param_2)

{
  int iVar1;
  undefined8 uVar2;
  undefined1 auStack_168 [48];
  undefined1 local_138;
  undefined1 local_135;
  undefined4 local_130;
  undefined4 local_128;
  longlong local_100;
  longlong local_e0;
  longlong local_d8;
  uint local_cc;
  undefined8 local_b8;
  undefined1 local_b0 [40];
  void *local_88 [5];
  ulonglong local_60;
  
  local_b8 = 0xfffffffffffffffe;
  local_60 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_100 = param_2;
  local_e0 = param_1;
  FUN_1812c37c0(param_1,&local_d8);
  if (local_cc == 0) {
    local_128 = 0;
  }
  else {
    local_128 = FUN_18123d3f0(local_d8);
  }
  if (1 < local_cc) {
    FUN_18123d3f0(local_d8 + 0x28);
  }
  local_130 = *(undefined4 *)(param_2 + 4);
  if ((local_cc != 2) || (local_138 = 1, *(char *)(*(longlong *)(param_1 + 0x168) + 0x1b5) == '\0'))
  {
    local_138 = 0;
  }
  FUN_18124a040(local_b0,8);
  uVar2 = FUN_1804db6f0(&local_d8,local_88,1);
  iVar1 = FUN_18123c5f0(uVar2,local_b0);
  local_135 = iVar1 == 0;
                    /* WARNING: Subroutine does not return */
  free(local_88[0]);
}



############ FUN_ 18047a7a0 size=245 ############

undefined8 FUN_18047a7a0(longlong param_1,int param_2,int param_3,uint param_4,undefined4 *param_5)

{
  longlong lVar1;
  undefined4 uVar2;
  longlong *plVar3;
  longlong lVar4;
  
  if (param_2 == 0) {
    if ((int)param_4 < 0) {
      return 1;
    }
    lVar1 = *(longlong *)(param_1 + 0x30);
    lVar4 = lVar1 + 0xd0;
    if (param_3 != 0) {
      lVar4 = lVar1 + 0xe0;
    }
    if (*(int *)(lVar4 + 0xc) <= (int)param_4) {
      return 1;
    }
    if (param_3 == 0) {
      plVar3 = (longlong *)(lVar1 + 0xd0);
    }
    else {
      plVar3 = (longlong *)(lVar1 + 0xe0);
    }
    if ((param_4 < *(uint *)((longlong)plVar3 + 0xc)) &&
       (lVar4 = *(longlong *)(*plVar3 + (longlong)(int)param_4 * 8), lVar4 != 0)) {
      *param_5 = 0;
      param_5[1] = param_3;
      uVar2 = FUN_18123d3f0(lVar4 + 0x60);
      param_5[2] = uVar2;
      FUN_1804741b0(param_5 + 3,lVar4 + 8);
      param_5[0x43] = (uint)(param_4 != 0);
      param_5[0x44] = (uint)(*(char *)(lVar4 + 0x88) != '\0');
      return 0;
    }
  }
  else if (param_2 == 1) {
    param_5[0x44] = 1;
  }
  memset(param_5,0,0x114);
  return 1;
}



############ FUN_ 18047a8a0 size=435 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18047a8a0(longlong param_1,int param_2,int param_3,uint param_4,char param_5)

{
  longlong lVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  void **ppvVar5;
  uint uVar6;
  char cVar7;
  undefined1 auStack_98 [32];
  uint local_78;
  undefined8 local_70;
  void *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 local_48;
  void *local_40 [5];
  ulonglong local_18;
  
  local_70 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_78 = 0;
  if (param_2 == 1) {
    if (param_4 == 0) {
      if (param_3 == 0) {
        *(bool *)(param_1 + 0x358) = param_5 != '\0';
      }
      else {
        *(bool *)(param_1 + 0x359) = param_5 != '\0';
      }
    }
  }
  else if ((param_2 == 0) && (-1 < (int)param_4)) {
    lVar1 = *(longlong *)(param_1 + 0x30);
    lVar3 = lVar1 + 0xd0;
    if (param_3 != 0) {
      lVar3 = lVar1 + 0xe0;
    }
    if ((int)param_4 < *(int *)(lVar3 + 0xc)) {
      plVar4 = (longlong *)(lVar1 + 0xd0);
      if (param_3 != 0) {
        plVar4 = (longlong *)(lVar1 + 0xe0);
      }
      if ((param_4 < *(uint *)((longlong)plVar4 + 0xc)) &&
         (lVar3 = *(longlong *)(*plVar4 + (longlong)(int)param_4 * 8), lVar3 != 0)) {
        cVar7 = param_5 != '\0';
        iVar2 = FUN_18123d3f0(lVar3 + 0x10);
        if ((iVar2 != 0) != (bool)cVar7) {
          if (cVar7 == '\0') {
            local_68 = (void *)0x0;
            local_50 = 4;
            local_48 = 0xffffffff;
            local_60 = 0;
            local_58 = 0;
            ppvVar5 = &local_68;
            uVar6 = 2;
          }
          else {
            FUN_18123db10(local_40,lVar3 + 0x60);
            ppvVar5 = local_40;
            uVar6 = 1;
          }
          local_78 = uVar6;
          FUN_1812bfa70(lVar3,ppvVar5);
          if ((uVar6 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
            free(local_68);
          }
          if ((uVar6 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
            free(local_40[0]);
          }
        }
      }
    }
  }
}



############ FUN_ 1812c11e0 size=2929 ############

/* WARNING: Removing unreachable block (ram,0x0001812c18e7) */
/* WARNING: Removing unreachable block (ram,0x0001812c1903) */
/* WARNING: Removing unreachable block (ram,0x0001812c195b) */
/* WARNING: Removing unreachable block (ram,0x0001812c1a01) */
/* WARNING: Removing unreachable block (ram,0x0001812c1a14) */
/* WARNING: Removing unreachable block (ram,0x0001812c1a70) */

void FUN_1812c11e0(longlong *param_1,longlong *param_2,longlong param_3)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  longlong *plVar5;
  uint uVar6;
  int iVar7;
  longlong lVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  int iVar12;
  int iVar13;
  ulonglong uVar14;
  undefined4 uVar15;
  longlong lVar16;
  uint local_res20;
  longlong local_1d8;
  undefined4 local_1d0;
  int local_1cc;
  longlong local_1c8;
  undefined4 local_1c0;
  int local_1bc;
  longlong local_1b8;
  undefined4 local_1b0;
  int local_1ac;
  longlong local_1a8;
  undefined4 local_1a0;
  int local_19c;
  longlong local_198;
  undefined4 local_190;
  int iStack_18c;
  longlong local_188;
  undefined8 local_180;
  int local_178;
  longlong local_170;
  undefined8 local_168;
  longlong local_160;
  undefined8 local_158;
  longlong local_150;
  undefined8 local_148;
  longlong local_140;
  undefined8 local_138;
  longlong local_130;
  longlong local_128;
  undefined4 local_120;
  int local_11c;
  longlong local_118;
  undefined4 local_110;
  int local_10c;
  longlong local_108;
  undefined4 local_100;
  int local_fc;
  longlong local_f8;
  undefined4 local_f0;
  int local_ec;
  longlong local_e8;
  undefined4 local_e0;
  int local_dc;
  longlong local_d8;
  undefined4 local_d0;
  int local_cc;
  longlong local_c8;
  undefined4 local_c0;
  int local_bc;
  longlong local_b8;
  undefined4 local_b0;
  int local_ac;
  longlong *local_a8;
  longlong *local_a0;
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong *local_80;
  longlong local_78;
  longlong local_70 [2];
  longlong local_60 [2];
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  if (((*(int *)((longlong)param_2 + 0xc) == *(int *)((longlong)param_1 + 0xdc)) &&
      (*(int *)((longlong)param_2 + 0x1c) == *(int *)((longlong)param_1 + 0xec))) &&
     (cVar2 = (**(code **)(*param_1 + 0x150))(), cVar2 != '\0')) {
    FUN_1804d7300(param_3,param_2);
  }
  else {
    FUN_1804db870(local_70,param_3);
    FUN_1804db870(local_60,param_3 + 0x10);
    FUN_1804db870(&local_1b8,local_70);
    FUN_1804db870(&local_1a8,local_60);
    FUN_1804db870(&local_1d8,&local_1b8);
    FUN_1804db870(&local_1c8,&local_1a8);
    local_178 = 0;
    do {
      bVar1 = 0 < local_178;
      local_a0 = &local_1b8;
      if (!bVar1) {
        local_a0 = &local_1a8;
      }
      local_80 = &local_1d8;
      if (!bVar1) {
        local_80 = &local_1c8;
      }
      local_a8 = param_2;
      if (!bVar1) {
        local_a8 = param_2 + 2;
      }
      plVar5 = local_70;
      if (local_178 < 1) {
        plVar5 = local_60;
      }
      local_res20 = 0;
      local_130 = 0;
      if (0 < *(int *)((longlong)local_a8 + 0xc)) {
        local_78 = *plVar5;
        do {
          local_98 = (longlong)(int)local_res20 * 0x28;
          local_88 = *local_80 + local_98;
          local_90 = *local_a8 + local_98;
          iVar3 = FUN_18123c5f0(local_98 + local_78);
          iVar12 = local_1cc;
          if (iVar3 != 0) {
            local_170 = 0;
            local_168 = 0;
            iVar3 = 0;
            uVar15 = 0;
            if (0 < local_1cc) {
              iVar3 = local_1cc;
              if (local_1cc < 0) {
                iVar3 = local_1cc + 1;
              }
              FUN_1804d5cd0(&local_170,local_1cc + 8 + (iVar3 >> 1) & 0xfffffff8);
              iVar3 = local_168._4_4_;
              uVar15 = (undefined4)local_168;
            }
            lVar11 = local_170;
            iVar12 = iVar12 + -1;
            if (-1 < iVar12) {
              lVar16 = ((longlong)iVar3 * 0x28 - local_1d8) + local_170;
              lVar9 = local_1d8;
              do {
                FUN_18123db10(lVar16 + lVar9,lVar9);
                lVar9 = lVar9 + 0x28;
                iVar12 = iVar12 + -1;
              } while (-1 < iVar12);
            }
            local_170 = local_1b8;
            local_168 = CONCAT44(local_1ac,local_1b0);
            local_1b8 = lVar11;
            local_1b0 = uVar15;
            local_1ac = iVar3 + local_1cc;
            FUN_18047c500(&local_170);
            iVar12 = local_1bc;
            local_160 = 0;
            local_158 = 0;
            iVar3 = 0;
            uVar15 = 0;
            if (0 < local_1bc) {
              iVar3 = local_1bc;
              if (local_1bc < 0) {
                iVar3 = local_1bc + 1;
              }
              FUN_1804d5cd0(&local_160,local_1bc + 8 + (iVar3 >> 1) & 0xfffffff8);
              iVar3 = local_158._4_4_;
              uVar15 = (undefined4)local_158;
            }
            lVar11 = local_160;
            iVar13 = iVar12 + -1;
            if (-1 < iVar13) {
              lVar16 = ((longlong)iVar3 * 0x28 - local_1c8) + local_160;
              lVar9 = local_1c8;
              do {
                FUN_18123db10(lVar16 + lVar9,lVar9);
                lVar9 = lVar9 + 0x28;
                iVar13 = iVar13 + -1;
                iVar12 = local_1bc;
              } while (-1 < iVar13);
            }
            local_160 = local_1a8;
            local_158 = CONCAT44(local_19c,local_1a0);
            local_1a8 = lVar11;
            local_1a0 = uVar15;
            local_19c = iVar3 + iVar12;
            FUN_18047c500(&local_160);
            lVar9 = local_90;
            lVar11 = local_98;
            lVar16 = *local_a0 + local_98;
            FUN_18123d980(lVar16,local_90);
            if ((local_1ac == *(int *)((longlong)param_1 + 0xdc)) &&
               (local_19c == *(int *)((longlong)param_1 + 0xec))) {
              cVar2 = (**(code **)(*param_1 + 0x150))(param_1,&local_1b8);
              iVar3 = local_1ac;
              lVar10 = local_1b8;
              if (cVar2 == '\0') goto LAB_1812c1669;
              local_150 = 0;
              local_148 = 0;
              iVar12 = 0;
              if (0 < local_1ac) {
                iVar12 = local_1ac;
                if (local_1ac < 0) {
                  iVar12 = local_1ac + 1;
                }
                FUN_1804d5cd0(&local_150,local_1ac + 8 + (iVar12 >> 1) & 0xfffffff8);
                iVar12 = local_148._4_4_;
              }
              lVar11 = local_150;
              iVar13 = iVar3 + -1;
              if (-1 < iVar13) {
                lVar9 = ((longlong)iVar12 * 0x28 - lVar10) + local_150;
                do {
                  FUN_18123db10(lVar9 + lVar10,lVar10);
                  lVar10 = lVar10 + 0x28;
                  iVar13 = iVar13 + -1;
                } while (-1 < iVar13);
              }
              uVar15 = local_1d0;
              local_150 = local_1d8;
              local_1d0 = (undefined4)local_148;
              local_148 = CONCAT44(local_1cc,uVar15);
              local_1d8 = lVar11;
              local_1cc = iVar12 + iVar3;
              FUN_18047c500(&local_150);
              iVar12 = local_19c;
              lVar11 = local_1a8;
              local_140 = 0;
              local_138 = 0;
              iVar3 = 0;
              if (0 < local_19c) {
                iVar3 = local_19c;
                if (local_19c < 0) {
                  iVar3 = local_19c + 1;
                }
                FUN_1804d5cd0(&local_140,local_19c + 8 + (iVar3 >> 1) & 0xfffffff8);
                iVar3 = local_138._4_4_;
              }
              lVar9 = local_140;
              iVar13 = iVar12 + -1;
              if (-1 < iVar13) {
                lVar16 = ((longlong)iVar3 * 0x28 - lVar11) + local_140;
                do {
                  FUN_18123db10(lVar16 + lVar11,lVar11);
                  lVar11 = lVar11 + 0x28;
                  iVar13 = iVar13 + -1;
                } while (-1 < iVar13);
              }
              uVar15 = local_1c0;
              local_140 = local_1c8;
              local_1c0 = (undefined4)local_138;
              local_138 = CONCAT44(local_1bc,uVar15);
              plVar5 = &local_140;
              local_1c8 = lVar9;
              local_1bc = iVar3 + iVar12;
            }
            else {
LAB_1812c1669:
              plVar5 = param_1 + 0x1a;
              if (bVar1) {
                plVar5 = param_1 + 0x1c;
              }
              if ((int)local_res20 < *(int *)((longlong)plVar5 + 0xc)) {
                plVar5 = &local_1b8;
                if (bVar1) {
                  plVar5 = &local_1a8;
                }
                lVar10 = *plVar5;
                FUN_18123d980(lVar11 + lVar10,lVar9);
                if (((local_1ac == *(int *)((longlong)param_1 + 0xdc)) &&
                    (local_19c == *(int *)((longlong)param_1 + 0xec))) &&
                   (cVar2 = (**(code **)(*param_1 + 0x150))(param_1,&local_1b8), cVar2 != '\0')) {
                  FUN_1804db870(&local_128,&local_1b8);
                  iVar3 = local_1cc;
                  uVar15 = local_1d0;
                  lVar11 = local_1d8;
                  local_1d8 = local_128;
                  local_128 = lVar11;
                  local_1d0 = local_120;
                  local_120 = uVar15;
                  local_1cc = local_11c;
                  local_11c = iVar3;
                  FUN_18047c500(&local_128);
                  FUN_1804db870(&local_118,&local_1a8);
                  uVar15 = local_1c0;
                  lVar11 = local_1c8;
                  local_1c8 = local_118;
                  local_118 = lVar11;
                  local_1c0 = local_110;
                  local_110 = uVar15;
                  local_1bc = local_10c;
                  plVar5 = &local_118;
                  local_10c = iVar12;
                  goto LAB_1812c1cc7;
                }
                plVar5 = param_1 + 0x1a;
                if (bVar1) {
                  plVar5 = param_1 + 0x1c;
                }
                if (local_res20 < *(uint *)((longlong)plVar5 + 0xc)) {
                  lVar8 = *(longlong *)(*plVar5 + local_130 * 8);
                }
                else {
                  lVar8 = 0;
                }
                FUN_18123d980(lVar11 + lVar10,lVar8 + 0x38);
                if ((local_1ac == *(int *)((longlong)param_1 + 0xdc)) &&
                   (local_19c == *(int *)((longlong)param_1 + 0xec))) {
                  cVar2 = (**(code **)(*param_1 + 0x150))(param_1,&local_1b8);
                  if (cVar2 != '\0') {
                    FUN_1804db870(&local_108,&local_1b8);
                    iVar3 = local_1cc;
                    uVar15 = local_1d0;
                    lVar11 = local_1d8;
                    local_1d8 = local_108;
                    local_108 = lVar11;
                    local_1d0 = local_100;
                    local_100 = uVar15;
                    local_1cc = local_fc;
                    local_fc = iVar3;
                    FUN_18047c500(&local_108);
                    FUN_1804db870(&local_f8,&local_1a8);
                    uVar15 = local_1c0;
                    lVar11 = local_1c8;
                    local_1c8 = local_f8;
                    local_f8 = lVar11;
                    local_1c0 = local_f0;
                    local_f0 = uVar15;
                    local_1bc = local_ec;
                    plVar5 = &local_f8;
                    local_ec = iVar12;
                    goto LAB_1812c1cc7;
                  }
                }
              }
              lVar11 = 0;
              iVar3 = 0;
              iVar12 = 0;
              iVar13 = 0;
              local_198 = 0;
              _local_190 = 0;
              local_188 = 0;
              local_180 = 0;
              uVar4 = FUN_1804731d0(param_1,1);
              uVar14 = (ulonglong)uVar4;
              if (0 < (int)uVar4) {
                uVar6 = uVar4;
                if ((int)uVar4 < 0) {
                  uVar6 = uVar4 + 1;
                }
                FUN_1804d5cd0(&local_198,uVar4 + 8 + ((int)uVar6 >> 1) & 0xfffffff8);
                lVar11 = local_198 + (longlong)iStack_18c * 0x28;
                if (0 < (int)uVar4) {
                  do {
                    FUN_18123db10(lVar11,lVar9);
                    uVar14 = uVar14 - 1;
                    lVar11 = lVar11 + 0x28;
                  } while (uVar14 != 0);
                }
                iVar3 = iStack_18c + uVar4;
                _local_190 = CONCAT44(iVar3,local_190);
                lVar11 = local_188;
                iVar13 = (int)local_180;
                iVar12 = local_180._4_4_;
              }
              uVar4 = FUN_1804731d0(param_1,0);
              uVar14 = (ulonglong)uVar4;
              if (0 < (int)uVar4) {
                iVar7 = uVar4 + iVar12;
                if (iVar13 < iVar7) {
                  iVar12 = iVar7;
                  if (iVar7 < 0) {
                    iVar12 = iVar7 + 1;
                  }
                  FUN_1804d5cd0(&local_188,iVar7 + 8 + (iVar12 >> 1) & 0xfffffff8);
                  lVar11 = local_188;
                  iVar12 = local_180._4_4_;
                  iVar3 = iStack_18c;
                }
                lVar11 = lVar11 + (longlong)iVar12 * 0x28;
                if (0 < (int)uVar4) {
                  do {
                    FUN_18123db10(lVar11,lVar9);
                    uVar14 = uVar14 - 1;
                    lVar11 = lVar11 + 0x28;
                  } while (uVar14 != 0);
                  iVar12 = local_180._4_4_;
                  iVar3 = iStack_18c;
                }
                iVar12 = iVar12 + uVar4;
                local_180 = CONCAT44(iVar12,(int)local_180);
              }
              if (((iVar3 == *(int *)((longlong)param_1 + 0xdc)) &&
                  (iVar12 == *(int *)((longlong)param_1 + 0xec))) &&
                 (cVar2 = (**(code **)(*param_1 + 0x150))(param_1,&local_198), cVar2 != '\0')) {
                FUN_1804db870(&local_e8,&local_198);
                iVar12 = local_1cc;
                uVar15 = local_1d0;
                lVar11 = local_1d8;
                local_1d8 = local_e8;
                local_e8 = lVar11;
                local_1d0 = local_e0;
                local_e0 = uVar15;
                local_1cc = local_dc;
                local_dc = iVar12;
                FUN_18047c500(&local_e8);
                FUN_1804db870(&local_d8,&local_188);
                iVar12 = local_1bc;
                uVar15 = local_1c0;
                lVar11 = local_1c8;
                local_1c8 = local_d8;
                local_d8 = lVar11;
                local_1c0 = local_d0;
                local_d0 = uVar15;
                local_1bc = local_cc;
                local_cc = iVar12;
                plVar5 = &local_d8;
LAB_1812c1cb2:
                FUN_18047c500(plVar5);
              }
              else {
                iVar12 = FUN_18123d3f0(local_88);
                iVar3 = FUN_18123d3f0(lVar9);
                uVar4 = iVar12 - iVar3 >> 0x1f;
                plVar5 = param_1 + 0x1a;
                if (!bVar1) {
                  plVar5 = param_1 + 0x1c;
                }
                if (local_res20 < *(uint *)((longlong)plVar5 + 0xc)) {
                  lVar11 = *(longlong *)(*plVar5 + local_130 * 8);
                }
                else {
                  lVar11 = 0;
                }
                iVar13 = FUN_18123d3f0(lVar11 + 0x38);
                iVar7 = FUN_18123d3f0(lVar9);
                uVar6 = iVar13 - iVar7 >> 0x1f;
                if ((((int)((iVar13 - iVar7 ^ uVar6) - uVar6) <
                      (int)((iVar12 - iVar3 ^ uVar4) - uVar4)) &&
                    (FUN_18123d980(lVar16,lVar11 + 0x38),
                    local_1ac == *(int *)((longlong)param_1 + 0xdc))) &&
                   ((local_19c == *(int *)((longlong)param_1 + 0xec) &&
                    (cVar2 = (**(code **)(*param_1 + 0x150))(param_1,&local_1b8), cVar2 != '\0'))))
                {
                  FUN_1804db870(&local_c8,&local_1b8);
                  iVar12 = local_1cc;
                  uVar15 = local_1d0;
                  lVar11 = local_1d8;
                  local_1d8 = local_c8;
                  local_c8 = lVar11;
                  local_1d0 = local_c0;
                  local_c0 = uVar15;
                  local_1cc = local_bc;
                  local_bc = iVar12;
                  FUN_18047c500(&local_c8);
                  FUN_1804db870(&local_b8,&local_1a8);
                  iVar12 = local_1bc;
                  uVar15 = local_1c0;
                  lVar11 = local_1c8;
                  local_1c8 = local_b8;
                  local_b8 = lVar11;
                  local_1c0 = local_b0;
                  local_b0 = uVar15;
                  local_1bc = local_ac;
                  local_ac = iVar12;
                  plVar5 = &local_b8;
                  goto LAB_1812c1cb2;
                }
              }
              FUN_18047c500(&local_188);
              plVar5 = &local_198;
            }
LAB_1812c1cc7:
            FUN_18047c500(plVar5);
          }
          local_res20 = local_res20 + 1;
          local_130 = local_130 + 1;
        } while ((int)local_res20 < *(int *)((longlong)local_a8 + 0xc));
      }
      local_178 = local_178 + 1;
    } while (local_178 < 2);
    FUN_1804d7300(param_3,&local_1d8);
    FUN_18047c500(&local_1c8);
    FUN_18047c500(&local_1d8);
    FUN_18047c500(&local_1a8);
    FUN_18047c500(&local_1b8);
    FUN_18047c500(local_60);
    FUN_18047c500(local_70);
  }
  return;
}



############ FUN_ 180543ad0 size=81 ############

undefined8 FUN_180543ad0(longlong param_1,undefined8 param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *(int *)(param_1 + 0x20);
  param_1 = param_1 + 0x88;
  iVar2 = FUN_18123d3f0(param_1);
  if (iVar2 == iVar1) {
    FUN_18123db10(param_2,param_1);
    return param_2;
  }
  FUN_18053f520(param_2,iVar1);
  return param_2;
}



############ FUN_ 180543eb0 size=469 ############

undefined8 *
FUN_180543eb0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
             undefined4 param_5,longlong param_6)

{
  uint *_Memory;
  uint uVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong local_res18 [2];
  void *local_100 [25];
  
  FUN_18049c4e0(local_res18,"WAV file");
  *param_1 = juce::AudioFormatWriter::vftable;
  param_1[1] = param_3;
  uVar2 = FUN_18123d3f0(param_4);
  *(undefined4 *)(param_1 + 2) = uVar2;
  *(undefined4 *)((longlong)param_1 + 0x14) = param_5;
  *(undefined1 *)(param_1 + 3) = 0;
  FUN_18123db10(param_1 + 4,param_4);
  param_1[9] = param_2;
  param_1[10] = local_res18[0];
  _Memory = (uint *)(local_res18[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::WavAudioFormatWriter::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  *(undefined1 *)(param_1 + 0x22) = 0;
  if (0 < *(int *)(param_6 + 0xc)) {
    puVar3 = (undefined8 *)FUN_18053f1f0(local_100,param_6);
    uVar4 = param_1[0xd];
    param_1[0xd] = *puVar3;
    *puVar3 = uVar4;
    param_1[0xe] = puVar3[1];
                    /* WARNING: Subroutine does not return */
    free(local_100[0]);
  }
  uVar4 = (**(code **)(*param_2 + 0x18))(param_2);
  param_1[0x21] = uVar4;
  FUN_180544840(param_1);
  return param_1;
}



############ FUN_ 18054d2a0 size=137 ############

void FUN_18054d2a0(longlong param_1)

{
  undefined8 uVar1;
  undefined1 auStack_368 [52];
  undefined4 local_334;
  undefined4 local_330;
  longlong local_308;
  undefined8 local_2f0;
  void *local_88 [10];
  ulonglong local_38;
  
  local_2f0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_368;
  local_308 = param_1;
  FUN_18054d130();
  local_334 = *(undefined4 *)(param_1 + 0x27c);
  uVar1 = (**(code **)(*(longlong *)(param_1 + -0x18) + 0x88))(param_1 + -0x18,local_88);
  local_330 = FUN_18123d3f0(uVar1);
                    /* WARNING: Subroutine does not return */
  free(local_88[0]);
}



############ FUN_ 1813b33b0 size=3960 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813b33b0(longlong param_1,longlong *param_2,undefined8 param_3,longlong *param_4,
                  double param_5,uint param_6)

{
  int *piVar1;
  double dVar2;
  uint uVar3;
  undefined4 uVar4;
  byte bVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int iVar9;
  DWORD dwPriorityClass;
  undefined4 *puVar10;
  HANDLE pvVar11;
  longlong *plVar12;
  undefined8 uVar13;
  int iVar14;
  uint uVar15;
  longlong lVar16;
  undefined8 *puVar17;
  longlong *plVar18;
  longlong *plVar19;
  uint *puVar20;
  undefined8 *puVar21;
  longlong lVar22;
  undefined8 *puVar23;
  ulonglong uVar24;
  undefined8 *puVar25;
  int iVar26;
  ulonglong uVar27;
  uint uVar28;
  bool bVar29;
  undefined1 auStack_1c8 [32];
  uint local_1a8;
  longlong *local_1a0;
  longlong *local_198;
  undefined8 *local_190;
  undefined8 *local_188;
  undefined8 *local_180;
  longlong *local_178;
  longlong local_168;
  undefined8 local_160;
  uint uStack_15c;
  longlong local_158;
  undefined8 local_150;
  uint uStack_14c;
  longlong local_148;
  undefined8 local_140;
  longlong local_138;
  undefined8 local_130;
  longlong *local_128;
  longlong local_120;
  longlong local_118;
  int local_110;
  int local_10c;
  int local_108;
  int local_104;
  int local_100;
  int local_fc;
  undefined1 local_f8 [4];
  undefined1 local_f4 [4];
  longlong local_f0;
  longlong local_e8;
  undefined1 local_e0 [8];
  undefined1 local_d8 [8];
  undefined1 local_d0 [8];
  undefined1 local_c8 [8];
  undefined8 local_c0;
  longlong *local_b8;
  longlong local_b0;
  longlong local_a8;
  longlong local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  ulonglong local_50;
  
  local_c0 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  puVar23 = (undefined8 *)0x0;
  uVar15 = 0;
  local_1a8 = 0;
  local_1a0 = param_2;
  local_198 = param_4;
  local_b8 = param_2;
  FUN_1805513d0();
  if (param_5 <= 0.0) {
    param_5 = DAT_1824c43b8;
  }
  *(double *)(param_1 + 800) = param_5;
  if ((int)param_6 < 1) {
    param_6 = 0x3c0;
  }
  *(uint *)(param_1 + 0x318) = param_6 & 0xfffffff8;
  local_168 = 0;
  local_160 = 0;
  local_158 = 0;
  local_150 = 0;
  local_148 = 0;
  local_140 = 0;
  local_138 = 0;
  local_130 = 0;
  FUN_1805519f0(&local_168);
  plVar12 = (longlong *)(param_1 + 0x328);
  FUN_18123d980(plVar12,param_3);
  lVar16 = *plVar12;
  if (lVar16 == 0) {
    lVar16 = param_1 + 0x330;
  }
  iVar9 = *(int *)(param_1 + 0x348) >> 5;
  uVar27 = (ulonglong)iVar9;
  uVar24 = uVar27;
  if (-1 < iVar9) {
LAB_1813b34b0:
    uVar28 = *(uint *)(lVar16 + uVar27 * 4);
    if (uVar28 == 0) goto code_r0x0001813b34bb;
    local_110 = 0x1f;
    if (uVar28 != 0) {
      for (; uVar28 >> local_110 == 0; local_110 = local_110 + -1) {
      }
    }
    iVar9 = (int)uVar24 * 0x20 + local_110;
    goto LAB_1813b34c7;
  }
LAB_1813b34c4:
  iVar9 = -1;
LAB_1813b34c7:
  iVar26 = *(int *)(param_1 + 0x224);
  iVar9 = iVar9 - iVar26;
  if (-1 < iVar9) {
    bVar5 = (byte)iVar26 & 0x1f;
    uVar28 = 1 << bVar5 | 1U >> 0x20 - bVar5;
    do {
      if ((-1 < iVar26) && (iVar26 <= *(int *)(param_1 + 0x348))) {
        lVar16 = *plVar12;
        if (lVar16 == 0) {
          lVar16 = param_1 + 0x330;
        }
        puVar20 = (uint *)(lVar16 + (longlong)(iVar26 >> 5) * 4);
        *puVar20 = *puVar20 & ~uVar28;
        if (iVar26 == *(int *)(param_1 + 0x348)) {
          lVar16 = *plVar12;
          if (lVar16 == 0) {
            lVar16 = param_1 + 0x330;
          }
          iVar14 = *(int *)(param_1 + 0x348) >> 5;
          uVar27 = (ulonglong)iVar14;
          uVar24 = uVar27;
          if (-1 < iVar14) {
LAB_1813b3534:
            uVar3 = *(uint *)(lVar16 + uVar27 * 4);
            if (uVar3 == 0) goto code_r0x0001813b3540;
            local_10c = 0x1f;
            if (uVar3 != 0) {
              for (; uVar3 >> local_10c == 0; local_10c = local_10c + -1) {
              }
            }
            iVar14 = (int)uVar24 * 0x20 + local_10c;
            goto LAB_1813b3549;
          }
LAB_1813b3547:
          iVar14 = -1;
LAB_1813b3549:
          *(int *)(param_1 + 0x348) = iVar14;
        }
      }
      iVar26 = iVar26 + 1;
      uVar28 = uVar28 << 1 | (uint)((int)uVar28 < 0);
      iVar9 = iVar9 + -1;
    } while (-1 < iVar9);
  }
  uVar24 = (ulonglong)*(uint *)(param_1 + 0x318);
  local_188 = (undefined8 *)CONCAT44(local_188._4_4_,*(uint *)(param_1 + 0x318));
  iVar9 = FUN_18123d3f0(plVar12);
  lVar16 = (longlong)iVar9;
  piVar1 = (int *)(param_1 + 0x378);
  if (((int)uVar24 != *(int *)(param_1 + 0x37c)) || (iVar9 != *piVar1)) {
    local_180 = (undefined8 *)(uVar24 + 3 & 0xfffffffc);
    uVar24 = (ulonglong)(iVar9 + 1) * 8 + 0xf & 0xfffffff0;
    lVar22 = uVar24 + ((longlong)local_180 * lVar16 + 8) * 4;
    *(longlong *)(param_1 + 0x380) = lVar22;
    FUN_180481140(param_1 + 0x390,lVar22,CONCAT71(0xffffff,*(char *)(param_1 + 0x498) != '\0'));
    *(longlong *)(param_1 + 0x388) = *(longlong *)(param_1 + 0x390);
    lVar22 = *(longlong *)(param_1 + 0x390) + uVar24;
    if (0 < lVar16) {
      puVar17 = puVar23;
      do {
        *(longlong *)(*(longlong *)(param_1 + 0x388) + (longlong)puVar17 * 8) = lVar22;
        lVar22 = lVar22 + (longlong)local_180 * 4;
        puVar17 = (undefined8 *)((longlong)puVar17 + 1);
      } while ((longlong)puVar17 < lVar16);
    }
    *(undefined8 *)(*(longlong *)(param_1 + 0x388) + lVar16 * 8) = 0;
    *(undefined4 *)(param_1 + 0x37c) = local_188._0_4_;
    *piVar1 = iVar9;
  }
  FUN_180480870(piVar1);
  local_190 = (undefined8 *)0x0;
  puVar17 = puVar23;
  puVar25 = puVar23;
  do {
    lVar16 = *plVar12;
    if (lVar16 == 0) {
      lVar16 = param_1 + 0x330;
    }
    iVar9 = *(int *)(param_1 + 0x348) >> 5;
    uVar27 = (ulonglong)iVar9;
    uVar24 = uVar27;
    if (-1 < iVar9) {
LAB_1813b3663:
      uVar28 = *(uint *)(lVar16 + uVar27 * 4);
      if (uVar28 == 0) goto code_r0x0001813b366f;
      local_108 = 0x1f;
      if (uVar28 != 0) {
        for (; uVar28 >> local_108 == 0; local_108 = local_108 + -1) {
        }
      }
      iVar9 = (int)uVar24 * 0x20 + local_108;
      goto LAB_1813b3679;
    }
LAB_1813b3677:
    iVar9 = -1;
LAB_1813b3679:
    iVar26 = (int)puVar25;
    if (iVar9 < iVar26) goto LAB_1813b38bf;
    local_180 = puVar23;
    if ((iVar26 <= *(int *)(param_1 + 0x348)) && (-1 < iVar26)) {
      lVar16 = *plVar12;
      if (lVar16 == 0) {
        lVar16 = param_1 + 0x330;
      }
      if ((*(uint *)(lVar16 + (longlong)(iVar26 >> 5) * 4) & 1 << ((byte)puVar25 & 0x1f)) != 0) {
        LOCK();
        *(undefined1 *)(param_1 + 0x498) = 0;
        UNLOCK();
        puVar25 = (undefined8 *)((longlong)puVar17 + *(longlong *)(param_1 + 0x388));
        puVar17 = puVar17 + 1;
        local_180 = (undefined8 *)*puVar25;
        local_190 = puVar17;
      }
    }
    iVar9 = iVar26 + 1;
    puVar25 = puVar23;
    if ((iVar9 <= *(int *)(param_1 + 0x348)) && (-1 < iVar9)) {
      lVar16 = *plVar12;
      if (lVar16 == 0) {
        lVar16 = param_1 + 0x330;
      }
      if ((*(uint *)(lVar16 + (longlong)(iVar9 >> 5) * 4) & 1 << ((byte)iVar9 & 0x1f)) != 0) {
        LOCK();
        *(undefined1 *)(param_1 + 0x498) = 0;
        UNLOCK();
        puVar25 = (undefined8 *)((longlong)puVar17 + *(longlong *)(param_1 + 0x388));
        puVar17 = puVar17 + 1;
        puVar25 = (undefined8 *)*puVar25;
        local_190 = puVar17;
      }
    }
    if ((local_180 != (undefined8 *)0x0) || (puVar25 != (undefined8 *)0x0)) {
      lVar16 = FUN_1811316e0(0x60);
      uVar28 = *(uint *)(param_1 + 0x23c);
      if (uVar28 < local_130._4_4_) {
        puVar10 = (undefined4 *)((longlong)(int)uVar28 * 0x10 + local_138);
        local_70 = *puVar10;
        uStack_6c = puVar10[1];
        uStack_68 = puVar10[2];
        uStack_64 = puVar10[3];
        local_188 = (undefined8 *)&local_70;
      }
      else {
        local_90 = 0;
        local_88 = 0;
        local_188 = &local_90;
      }
      if (uVar28 < uStack_14c) {
        plVar18 = (longlong *)(local_158 + (longlong)(int)uVar28 * 8);
      }
      else {
        if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8)
                     + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        plVar18 = (longlong *)&DAT_18267af68;
      }
      uVar4 = *(undefined4 *)(param_1 + 0x318);
      dVar2 = *(double *)(param_1 + 800);
      *(undefined4 *)(lVar16 + 0xc) = 0x10;
      lVar22 = *plVar18;
      *(longlong *)(lVar16 + 0x18) = lVar22;
      if ((*(uint *)(lVar22 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar22 + -0x10) = *(int *)(lVar22 + -0x10) + 1;
        UNLOCK();
      }
      uVar6 = *(undefined4 *)((longlong)local_188 + 4);
      uVar7 = *(undefined4 *)(local_188 + 1);
      uVar8 = *(undefined4 *)((longlong)local_188 + 0xc);
      *(undefined4 *)(lVar16 + 0x20) = *(undefined4 *)local_188;
      *(undefined4 *)(lVar16 + 0x24) = uVar6;
      *(undefined4 *)(lVar16 + 0x28) = uVar7;
      *(undefined4 *)(lVar16 + 0x2c) = uVar8;
      *(int *)(lVar16 + 0x30) = (int)dVar2;
      *(undefined4 *)(lVar16 + 0x34) = uVar4;
      *(undefined8 **)(lVar16 + 0x38) = local_180;
      *(undefined8 **)(lVar16 + 0x40) = puVar25;
      *(undefined8 *)(lVar16 + 0x48) = 0;
      *(undefined8 *)(lVar16 + 0x50) = 0;
      *(undefined8 *)(lVar16 + 0x58) = 0;
      iVar14 = *(int *)(param_1 + 0x25c);
      iVar9 = iVar14 + 1;
      if (*(int *)(param_1 + 600) < iVar9) {
        if (iVar9 < 0) {
          iVar9 = iVar14 + 2;
        }
        FUN_18047cb30((longlong *)(param_1 + 0x250),iVar14 + 9 + (iVar9 >> 1) & 0xfffffff8);
      }
      iVar9 = *(int *)(param_1 + 0x25c);
      *(int *)(param_1 + 0x25c) = iVar9 + 1;
      *(longlong *)(*(longlong *)(param_1 + 0x250) + (longlong)iVar9 * 8) = lVar16;
      puVar17 = local_190;
    }
    puVar25 = (undefined8 *)(ulonglong)(iVar26 + 2);
  } while( true );
code_r0x0001813b34bb:
  uVar27 = uVar27 - 1;
  uVar24 = (ulonglong)((int)uVar24 - 1);
  if ((longlong)uVar27 < 0) goto LAB_1813b34c4;
  goto LAB_1813b34b0;
code_r0x0001813b3540:
  uVar24 = (ulonglong)((int)uVar24 - 1);
  uVar27 = uVar27 - 1;
  if ((longlong)uVar27 < 0) goto LAB_1813b3547;
  goto LAB_1813b3534;
code_r0x0001813b366f:
  uVar24 = (ulonglong)((int)uVar24 - 1);
  uVar27 = uVar27 - 1;
  if ((longlong)uVar27 < 0) goto LAB_1813b3677;
  goto LAB_1813b3663;
LAB_1813b38bf:
  plVar12 = (longlong *)(param_1 + 0x350);
  FUN_18123d980(plVar12,local_198);
  lVar16 = *plVar12;
  if (lVar16 == 0) {
    lVar16 = param_1 + 0x358;
  }
  iVar9 = *(int *)(param_1 + 0x370) >> 5;
  uVar27 = (ulonglong)iVar9;
  uVar24 = uVar27;
  if (-1 < iVar9) {
LAB_1813b38f5:
    uVar28 = *(uint *)(lVar16 + uVar27 * 4);
    if (uVar28 == 0) goto code_r0x0001813b3900;
    local_104 = 0x1f;
    if (uVar28 != 0) {
      for (; uVar28 >> local_104 == 0; local_104 = local_104 + -1) {
      }
    }
    iVar9 = (int)uVar24 * 0x20 + local_104;
    goto LAB_1813b390c;
  }
LAB_1813b3909:
  iVar9 = -1;
LAB_1813b390c:
  iVar26 = *(int *)(param_1 + 0x234);
  iVar9 = iVar9 - iVar26;
  if (-1 < iVar9) {
    bVar5 = (byte)iVar26 & 0x1f;
    uVar28 = 1 << bVar5 | 1U >> 0x20 - bVar5;
    do {
      if ((-1 < iVar26) && (iVar26 <= *(int *)(param_1 + 0x370))) {
        lVar16 = *plVar12;
        if (lVar16 == 0) {
          lVar16 = param_1 + 0x358;
        }
        puVar20 = (uint *)(lVar16 + (longlong)(iVar26 >> 5) * 4);
        *puVar20 = *puVar20 & ~uVar28;
        if (iVar26 == *(int *)(param_1 + 0x370)) {
          lVar16 = *plVar12;
          if (lVar16 == 0) {
            lVar16 = param_1 + 0x358;
          }
          iVar14 = *(int *)(param_1 + 0x370) >> 5;
          uVar27 = (ulonglong)iVar14;
          uVar24 = uVar27;
          if (-1 < iVar14) {
LAB_1813b3980:
            uVar3 = *(uint *)(lVar16 + uVar27 * 4);
            if (uVar3 == 0) goto code_r0x0001813b398c;
            local_100 = 0x1f;
            if (uVar3 != 0) {
              for (; uVar3 >> local_100 == 0; local_100 = local_100 + -1) {
              }
            }
            iVar14 = (int)uVar24 * 0x20 + local_100;
            goto LAB_1813b3996;
          }
LAB_1813b3994:
          iVar14 = -1;
LAB_1813b3996:
          *(int *)(param_1 + 0x370) = iVar14;
        }
      }
      iVar26 = iVar26 + 1;
      uVar28 = uVar28 << 1 | (uint)((int)uVar28 < 0);
      iVar9 = iVar9 + -1;
    } while (-1 < iVar9);
  }
  lVar16 = *plVar12;
  if (lVar16 == 0) {
    lVar16 = param_1 + 0x358;
  }
  iVar9 = *(int *)(param_1 + 0x370) >> 5;
  lVar22 = (longlong)iVar9;
  puVar17 = puVar23;
  if (-1 < iVar9) {
    do {
      uVar15 = *(uint *)(lVar16 + lVar22 * 4);
      uVar15 = uVar15 - (uVar15 >> 1 & 0x55555555);
      uVar15 = (uVar15 >> 2 & 0x33333333) + (uVar15 & 0x33333333);
      uVar15 = (uVar15 >> 4) + uVar15 & 0xf0f0f0f;
      uVar15 = uVar15 + (uVar15 >> 8);
      uVar15 = (int)puVar17 + (uVar15 + (uVar15 >> 0x10) & 0x3f);
      lVar22 = lVar22 + -1;
      puVar17 = (undefined8 *)(ulonglong)uVar15;
    } while (-1 < lVar22);
  }
  uVar28 = *(uint *)(param_1 + 0x318);
  local_190 = (undefined8 *)CONCAT44(local_190._4_4_,uVar28);
  puVar20 = (uint *)(param_1 + 0x4a0);
  if ((uVar28 != *(uint *)(param_1 + 0x4a4)) || (uVar15 != *puVar20)) {
    local_198 = (longlong *)((ulonglong)uVar28 + 3 & 0xfffffffc);
    uVar24 = (ulonglong)(uVar15 + 1) * 8 + 0xf & 0xfffffff0;
    lVar22 = uVar24 + ((longlong)local_198 * (longlong)(int)uVar15 + 8) * 4;
    *(longlong *)(param_1 + 0x4a8) = lVar22;
    FUN_180481140(param_1 + 0x4b8,lVar22,
                  CONCAT71((int7)((ulonglong)lVar16 >> 8),*(char *)(param_1 + 0x5c0) != '\0'));
    *(longlong *)(param_1 + 0x4b0) = *(longlong *)(param_1 + 0x4b8);
    lVar16 = *(longlong *)(param_1 + 0x4b8) + uVar24;
    if (0 < (int)uVar15) {
      puVar17 = puVar23;
      do {
        *(longlong *)(*(longlong *)(param_1 + 0x4b0) + (longlong)puVar17 * 8) = lVar16;
        lVar16 = lVar16 + (longlong)local_198 * 4;
        puVar17 = (undefined8 *)((longlong)puVar17 + 1);
      } while ((longlong)puVar17 < (longlong)(int)uVar15);
    }
    *(undefined8 *)(*(longlong *)(param_1 + 0x4b0) + (longlong)(int)uVar15 * 8) = 0;
    *(undefined4 *)(param_1 + 0x4a4) = local_190._0_4_;
    *puVar20 = uVar15;
  }
  FUN_180480870(puVar20);
  local_190 = (undefined8 *)0x0;
  puVar17 = puVar23;
  puVar25 = puVar23;
  do {
    plVar18 = local_1a0;
    lVar16 = *plVar12;
    if (lVar16 == 0) {
      lVar16 = param_1 + 0x358;
    }
    iVar9 = *(int *)(param_1 + 0x370) >> 5;
    uVar27 = (ulonglong)iVar9;
    uVar24 = uVar27;
    if (-1 < iVar9) {
LAB_1813b3b21:
      uVar15 = *(uint *)(lVar16 + uVar27 * 4);
      if (uVar15 == 0) goto code_r0x0001813b3b2d;
      local_fc = 0x1f;
      if (uVar15 != 0) {
        for (; uVar15 >> local_fc == 0; local_fc = local_fc + -1) {
        }
      }
      iVar9 = (int)uVar24 * 0x20 + local_fc;
      goto LAB_1813b3b3a;
    }
LAB_1813b3b35:
    iVar9 = -1;
LAB_1813b3b3a:
    iVar26 = (int)puVar25;
    if (iVar9 < iVar26) goto LAB_1813b3d79;
    local_188 = puVar23;
    if ((iVar26 <= *(int *)(param_1 + 0x370)) && (-1 < iVar26)) {
      lVar16 = *plVar12;
      if (lVar16 == 0) {
        lVar16 = param_1 + 0x358;
      }
      if ((*(uint *)(lVar16 + (longlong)(iVar26 >> 5) * 4) & 1 << ((byte)puVar25 & 0x1f)) != 0) {
        LOCK();
        *(undefined1 *)(param_1 + 0x5c0) = 0;
        UNLOCK();
        puVar25 = (undefined8 *)((longlong)puVar17 + *(longlong *)(param_1 + 0x4b0));
        puVar17 = puVar17 + 1;
        local_188 = (undefined8 *)*puVar25;
        local_190 = puVar17;
      }
    }
    iVar9 = iVar26 + 1;
    puVar25 = puVar23;
    if ((iVar9 <= *(int *)(param_1 + 0x370)) && (-1 < iVar9)) {
      lVar16 = *plVar12;
      if (lVar16 == 0) {
        lVar16 = param_1 + 0x358;
      }
      if ((*(uint *)(lVar16 + (longlong)(iVar9 >> 5) * 4) & 1 << ((byte)iVar9 & 0x1f)) != 0) {
        LOCK();
        *(undefined1 *)(param_1 + 0x5c0) = 0;
        UNLOCK();
        puVar25 = (undefined8 *)((longlong)puVar17 + *(longlong *)(param_1 + 0x4b0));
        puVar17 = puVar17 + 1;
        puVar25 = (undefined8 *)*puVar25;
        local_190 = puVar17;
      }
    }
    if ((local_188 != (undefined8 *)0x0) || (puVar25 != (undefined8 *)0x0)) {
      plVar18 = (longlong *)FUN_1811316e0(0x70);
      uVar15 = *(uint *)(param_1 + 0x238);
      if (uVar15 < local_140._4_4_) {
        puVar10 = (undefined4 *)((longlong)(int)uVar15 * 0x10 + local_148);
        local_60 = *puVar10;
        uStack_5c = puVar10[1];
        uStack_58 = puVar10[2];
        uStack_54 = puVar10[3];
        local_180 = (undefined8 *)&local_60;
      }
      else {
        local_80 = 0;
        local_78 = 0;
        local_180 = &local_80;
      }
      local_198 = plVar18;
      if (uVar15 < uStack_15c) {
        plVar19 = (longlong *)(local_168 + (longlong)(int)uVar15 * 8);
      }
      else {
        if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8)
                     + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        plVar19 = (longlong *)&DAT_18267af68;
      }
      uVar4 = *(undefined4 *)(param_1 + 0x318);
      dVar2 = *(double *)(param_1 + 800);
      *(undefined4 *)plVar18 = 0x10;
      lVar16 = *plVar19;
      plVar18[2] = lVar16;
      if ((*(uint *)(lVar16 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar16 + -0x10) = *(int *)(lVar16 + -0x10) + 1;
        UNLOCK();
      }
      uVar6 = *(undefined4 *)((longlong)local_180 + 4);
      uVar7 = *(undefined4 *)(local_180 + 1);
      uVar8 = *(undefined4 *)((longlong)local_180 + 0xc);
      *(undefined4 *)(plVar18 + 3) = *(undefined4 *)local_180;
      *(undefined4 *)((longlong)plVar18 + 0x1c) = uVar6;
      *(undefined4 *)(plVar18 + 4) = uVar7;
      *(undefined4 *)((longlong)plVar18 + 0x24) = uVar8;
      *(int *)(plVar18 + 5) = (int)dVar2;
      *(undefined4 *)((longlong)plVar18 + 0x2c) = uVar4;
      plVar18[6] = (longlong)local_188;
      plVar18[7] = (longlong)puVar25;
      plVar18[8] = 0;
      plVar18[9] = 0;
      iVar14 = *(int *)(param_1 + 0x26c);
      iVar9 = iVar14 + 1;
      if (*(int *)(param_1 + 0x268) < iVar9) {
        if (iVar9 < 0) {
          iVar9 = iVar14 + 2;
        }
        FUN_18047cb30((longlong *)(param_1 + 0x260),iVar14 + 9 + (iVar9 >> 1) & 0xfffffff8);
      }
      iVar9 = *(int *)(param_1 + 0x26c);
      *(int *)(param_1 + 0x26c) = iVar9 + 1;
      *(longlong **)(*(longlong *)(param_1 + 0x260) + (longlong)iVar9 * 8) = plVar18;
      puVar17 = local_190;
    }
    puVar25 = (undefined8 *)(ulonglong)(iVar26 + 2);
  } while( true );
code_r0x0001813b3900:
  uVar24 = (ulonglong)((int)uVar24 - 1);
  uVar27 = uVar27 - 1;
  if ((longlong)uVar27 < 0) goto LAB_1813b3909;
  goto LAB_1813b38f5;
code_r0x0001813b398c:
  uVar27 = uVar27 - 1;
  uVar24 = (ulonglong)((int)uVar24 - 1);
  if ((longlong)uVar27 < 0) goto LAB_1813b3994;
  goto LAB_1813b3980;
code_r0x0001813b3b2d:
  uVar24 = (ulonglong)((int)uVar24 - 1);
  uVar27 = uVar27 - 1;
  if ((longlong)uVar27 < 0) goto LAB_1813b3b35;
  goto LAB_1813b3b21;
LAB_1813b3d79:
  *local_1a0 = (longlong)&DAT_1821dbf98;
  local_1a8 = 1;
  pvVar11 = GetCurrentThread();
  iVar9 = GetThreadPriority(pvVar11);
  pvVar11 = GetCurrentProcess();
  dwPriorityClass = GetPriorityClass(pvVar11);
  pvVar11 = GetCurrentThread();
  SetThreadPriority(pvVar11,0xf);
  pvVar11 = GetCurrentProcess();
  SetPriorityClass(pvVar11,0x100);
  if (0 < *(int *)(param_1 + 0x26c)) {
    bVar29 = *(int *)(param_1 + 0x26c) != 0;
    puVar17 = puVar23;
    puVar25 = puVar23;
    do {
      puVar21 = puVar23;
      if (bVar29) {
        puVar21 = *(undefined8 **)((longlong)puVar25 + *(longlong *)(param_1 + 0x260));
      }
      plVar12 = (longlong *)FUN_18054f040(puVar21,&local_f0);
      local_b0 = *plVar18;
      *plVar18 = *plVar12;
      *plVar12 = local_b0;
      puVar20 = (uint *)(local_f0 + -0x10);
      if ((*puVar20 & 0x30000000) == 0) {
        LOCK();
        uVar15 = *puVar20;
        *puVar20 = *puVar20 - 1;
        UNLOCK();
        if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar20);
        }
      }
      if (*(char *)*local_1a0 != '\0') {
        uVar13 = FUN_181249970(&local_168,puVar17);
        plVar18 = (longlong *)FUN_181246550(local_c8,"Error opening ",uVar13);
        local_198 = plVar18;
        FUN_181232e20(plVar18,&DAT_1821e4854,&DAT_1821e4857);
        plVar12 = local_1a0;
        local_120 = *plVar18;
        if ((*(uint *)(local_120 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_120 + -0x10) = *(int *)(local_120 + -0x10) + 1;
          UNLOCK();
        }
        local_1a8 = 3;
        puVar20 = (uint *)(*plVar18 + -0x10);
        if ((*puVar20 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar20;
          *puVar20 = *puVar20 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar20);
          }
        }
        plVar18 = (longlong *)FUN_181232aa0(local_d0,&local_120,local_1a0);
        local_128 = plVar18;
        FUN_181232e20(plVar18,&DAT_1821e486c,&DAT_1821e486d);
        local_128 = (longlong *)*plVar18;
        if ((*(uint *)((longlong)local_128 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)((longlong)local_128 + -0x10) = *(int *)((longlong)local_128 + -0x10) + 1;
          UNLOCK();
        }
        local_1a8 = 7;
        puVar20 = (uint *)(*plVar18 + -0x10);
        if ((*puVar20 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar20;
          *puVar20 = *puVar20 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar20);
          }
        }
        local_a8 = *plVar12;
        *plVar12 = (longlong)local_128;
        puVar20 = (uint *)(local_a8 + -0x10);
        plVar18 = local_1a0;
        if ((*puVar20 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar20;
          *puVar20 = *puVar20 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar20);
          }
        }
        break;
      }
      uVar15 = (int)puVar17 + 1;
      puVar17 = (undefined8 *)(ulonglong)uVar15;
      puVar25 = puVar25 + 1;
      bVar29 = uVar15 < *(uint *)(param_1 + 0x26c);
      plVar18 = local_1a0;
    } while ((int)uVar15 < (int)*(uint *)(param_1 + 0x26c));
  }
  if ((*(char *)*plVar18 == '\0') && (0 < *(int *)(param_1 + 0x25c))) {
    bVar29 = *(int *)(param_1 + 0x25c) != 0;
    puVar17 = puVar23;
    puVar25 = puVar23;
    do {
      puVar21 = puVar23;
      if (bVar29) {
        puVar21 = *(undefined8 **)((longlong)puVar25 + *(longlong *)(param_1 + 0x250));
      }
      plVar12 = (longlong *)FUN_1805501d0(puVar21,&local_e8);
      local_a0 = *plVar18;
      *plVar18 = *plVar12;
      *plVar12 = local_a0;
      puVar20 = (uint *)(local_e8 + -0x10);
      if ((*puVar20 & 0x30000000) == 0) {
        LOCK();
        uVar15 = *puVar20;
        *puVar20 = *puVar20 - 1;
        UNLOCK();
        if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar20);
        }
      }
      if (*(char *)*local_1a0 != '\0') {
        uVar13 = FUN_181249970(&local_158,puVar17);
        plVar18 = (longlong *)FUN_181246550(local_e0,"Error opening ",uVar13);
        local_198 = plVar18;
        FUN_181232e20(plVar18,&DAT_1821e4844,&DAT_1821e4847);
        plVar12 = local_1a0;
        local_118 = *plVar18;
        if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
          UNLOCK();
        }
        local_1a8 = local_1a8 | 8;
        puVar20 = (uint *)(*plVar18 + -0x10);
        if ((*puVar20 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar20;
          *puVar20 = *puVar20 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar20);
          }
        }
        plVar18 = (longlong *)FUN_181232aa0(local_d8,&local_118,local_1a0);
        local_178 = plVar18;
        FUN_181232e20(plVar18,&DAT_1821e481c,&DAT_1821e481d);
        local_178 = (longlong *)*plVar18;
        if ((*(uint *)((longlong)local_178 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)((longlong)local_178 + -0x10) = *(int *)((longlong)local_178 + -0x10) + 1;
          UNLOCK();
        }
        local_1a8 = local_1a8 | 0x10;
        puVar20 = (uint *)(*plVar18 + -0x10);
        if ((*puVar20 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar20;
          *puVar20 = *puVar20 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar20);
          }
        }
        local_98 = *plVar12;
        *plVar12 = (longlong)local_178;
        puVar20 = (uint *)(local_98 + -0x10);
        plVar18 = local_1a0;
        if ((*puVar20 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar20;
          *puVar20 = *puVar20 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar20);
          }
        }
        break;
      }
      uVar15 = (int)puVar17 + 1;
      puVar17 = (undefined8 *)(ulonglong)uVar15;
      puVar25 = puVar25 + 1;
      bVar29 = uVar15 < *(uint *)(param_1 + 0x25c);
      plVar18 = local_1a0;
    } while ((int)uVar15 < (int)*(uint *)(param_1 + 0x25c));
  }
  if (*(char *)*plVar18 == '\0') {
    puVar17 = puVar23;
    puVar25 = puVar23;
    if (0 < *(int *)(param_1 + 0x26c)) {
      do {
        lVar16 = *(longlong *)((longlong)puVar25 + *(longlong *)(param_1 + 0x260));
        plVar12 = *(longlong **)(lVar16 + 0x48);
        if (plVar12 != (longlong *)0x0) {
          (**(code **)(*plVar12 + 0x20))(plVar12,local_f8,lVar16 + 0x50);
        }
        uVar15 = (int)puVar17 + 1;
        puVar17 = (undefined8 *)(ulonglong)uVar15;
        puVar25 = puVar25 + 1;
      } while ((int)uVar15 < *(int *)(param_1 + 0x26c));
    }
    puVar17 = puVar23;
    if (0 < *(int *)(param_1 + 0x25c)) {
      do {
        plVar12 = *(longlong **)
                   (*(longlong *)((longlong)puVar23 + *(longlong *)(param_1 + 0x250)) + 0x58);
        if (plVar12 != (longlong *)0x0) {
          (**(code **)(*plVar12 + 0x20))(plVar12,local_f4);
        }
        uVar15 = (int)puVar17 + 1;
        puVar23 = puVar23 + 1;
        puVar17 = (undefined8 *)(ulonglong)uVar15;
      } while ((int)uVar15 < *(int *)(param_1 + 0x25c));
    }
    FUN_18122b2c0(param_1 + 0x18,9);
    Sleep(10);
    FUN_181215c10(param_1 + 0x110);
  }
  pvVar11 = GetCurrentThread();
  SetThreadPriority(pvVar11,iVar9);
  pvVar11 = GetCurrentProcess();
  SetPriorityClass(pvVar11,dwPriorityClass);
  FUN_180551fe0(&local_168);
}



############ FUN_ 1812bf6f0 size=28 ############

void FUN_1812bf6f0(longlong param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_18123d3f0(param_1 + 0x10);
  *(undefined4 *)(param_1 + 0x8c) = uVar1;
  return;
}



############ FUN_ 1812c34e0 size=237 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812c34e0(longlong param_1,char param_2)

{
  int iVar1;
  void **ppvVar2;
  uint uVar3;
  undefined1 auStack_98 [32];
  uint local_78;
  undefined8 local_70;
  void *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 local_48;
  void *local_40 [5];
  ulonglong local_18;
  
  local_70 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_78 = 0;
  iVar1 = FUN_18123d3f0(param_1 + 0x10);
  if ((iVar1 != 0) != (bool)param_2) {
    if (param_2 == '\0') {
      local_68 = (void *)0x0;
      local_50 = 4;
      local_48 = 0xffffffff;
      local_60 = 0;
      local_58 = 0;
      ppvVar2 = &local_68;
      uVar3 = 2;
    }
    else {
      FUN_18123db10(local_40,param_1 + 0x60);
      ppvVar2 = local_40;
      uVar3 = 1;
    }
    local_78 = uVar3;
    FUN_1812bfa70(param_1,ppvVar2);
    if ((uVar3 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
      free(local_68);
    }
    if ((uVar3 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
      free(local_40[0]);
    }
  }
}



############ FUN_ 1813aeb30 size=127 ############

undefined8 *
FUN_1813aeb30(undefined8 *param_1,undefined8 param_2,longlong *param_3,undefined8 param_4,
             undefined8 param_5,undefined4 param_6)

{
  longlong lVar1;
  undefined4 uVar2;
  
  param_1[1] = param_4;
  *param_1 = juce::AudioFormatWriter::vftable;
  uVar2 = FUN_18123d3f0(param_5);
  *(undefined4 *)(param_1 + 2) = uVar2;
  *(undefined4 *)((longlong)param_1 + 0x14) = param_6;
  *(undefined1 *)(param_1 + 3) = 0;
  FUN_18123db10(param_1 + 4,param_5);
  param_1[9] = param_2;
  lVar1 = *param_3;
  param_1[10] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 1813b8160 size=1775 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813b8160(longlong param_1,undefined8 *param_2,longlong *param_3,char param_4)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  uint *puVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  int *piVar12;
  char *pcVar13;
  uint uVar14;
  bool bVar15;
  undefined4 uVar16;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  undefined4 uVar17;
  undefined1 auStack_138 [32];
  undefined8 local_118;
  int local_110;
  char local_108;
  char *local_100;
  uint local_f8;
  undefined8 *local_f0;
  int local_e4;
  int local_e0;
  char *local_d8;
  longlong local_d0;
  void *local_c8;
  undefined4 local_bc;
  undefined8 local_b8;
  char *local_b0;
  undefined8 local_a8;
  void *local_98 [10];
  ulonglong local_48;
  
  local_b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_138;
  local_f8 = 0;
  local_108 = param_4;
  local_f0 = param_2;
  if (*param_3 == *(longlong *)(param_1 + 0x58)) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18048cbc0(*param_3,*(undefined8 *)(param_1 + 0x58));
  }
  if (iVar4 == 0) {
    if (param_3[1] == *(longlong *)(param_1 + 0x60)) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_18048cbc0(param_3[1],*(undefined8 *)(param_1 + 0x60));
    }
    if (((((iVar4 != 0) || ((double)param_3[2] != *(double *)(param_1 + 0x68))) ||
         ((int)param_3[3] != *(int *)(param_1 + 0x70))) ||
        ((iVar4 = FUN_18123c5f0(param_3 + 4,param_1 + 0x78), iVar4 != 0 ||
         ((char)param_3[9] != *(char *)(param_1 + 0xa0))))) ||
       ((iVar4 = FUN_18123c5f0(param_3 + 10,param_1 + 0xa8), iVar4 != 0 ||
        ((char)param_3[0xf] != *(char *)(param_1 + 0xd0))))) goto LAB_1813b8258;
    bVar15 = true;
  }
  else {
LAB_1813b8258:
    bVar15 = false;
  }
  if (bVar15) {
    if (*(longlong *)(param_1 + 0xd8) != 0) {
      *param_2 = &DAT_1821dbf98;
    }
  }
  else if (*(char *)(param_1 + 0x30) != '\0') {
    piVar1 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
    LOCK();
    bVar15 = *piVar1 == 0;
    if (bVar15) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar15) && (cVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar3 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
      UNLOCK();
    }
  }
  lVar5 = FUN_1813b89b0(param_1);
  if ((lVar5 == 0) || ((*(char *)param_3[1] == '\0' && (*(char *)*param_3 == '\0')))) {
    FUN_1813b8a40(param_1);
    if (param_4 != '\0') {
      FUN_1813b7430(param_1);
    }
    *param_2 = &DAT_1821dbf98;
  }
  FUN_1813b7e30(param_1);
  pcVar13 = "";
  local_100 = "";
  if (*(longlong *)(param_1 + 0x60) == param_3[1]) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x60),param_3[1]);
  }
  if (iVar4 == 0) {
    if (*(longlong *)(param_1 + 0x58) == *param_3) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x58),*param_3);
    }
    if ((iVar4 != 0) || (*(longlong *)(param_1 + 0xd8) == 0)) goto LAB_1813b8350;
LAB_1813b8512:
    uVar16 = FUN_180549c30(param_1 + 0x58,param_3);
    if (*(char *)(param_1 + 0xa0) == '\0') {
      uVar16 = FUN_18123d3f0(param_1 + 0x78);
      *(undefined4 *)(param_1 + 0xf0) = uVar16;
      uVar16 = extraout_XMM0_Da;
    }
    if (*(char *)(param_1 + 0xd0) == '\0') {
      uVar16 = FUN_18123d3f0(param_1 + 0xa8);
      *(undefined4 *)(param_1 + 0xf4) = uVar16;
      uVar16 = extraout_XMM0_Da_00;
    }
    uVar2 = *(undefined4 *)(param_1 + 0xf4);
    uVar17 = 0xffffffff;
    if (*(char *)(param_1 + 0xa0) != '\0') {
      uVar17 = *(undefined4 *)(param_1 + 0xf0);
    }
    uVar17 = FUN_180549d20(uVar16,param_1 + 0x60,param_1 + 0x78,uVar17);
    uVar16 = 0xffffffff;
    if (*(char *)(param_1 + 0xd0) != '\0') {
      uVar16 = uVar2;
    }
    FUN_180549d20(uVar17,param_1 + 0x58,param_1 + 0xa8,uVar16);
    lVar5 = *(longlong *)(param_1 + 0x78);
    if (lVar5 == 0) {
      lVar5 = param_1 + 0x80;
    }
    iVar4 = *(int *)(param_1 + 0x98) >> 5;
    uVar10 = (ulonglong)iVar4;
    uVar11 = uVar10;
    if (-1 < iVar4) {
LAB_1813b85c0:
      uVar14 = *(uint *)(lVar5 + uVar10 * 4);
      if (uVar14 == 0) goto code_r0x0001813b85cc;
      local_e4 = 0x1f;
      if (uVar14 != 0) {
        for (; uVar14 >> local_e4 == 0; local_e4 = local_e4 + -1) {
        }
      }
      iVar4 = (int)uVar11 * 0x20 + local_e4;
      goto LAB_1813b85d7;
    }
LAB_1813b85d4:
    iVar4 = -1;
LAB_1813b85d7:
    if (iVar4 < 0) {
      lVar5 = *(longlong *)(param_1 + 0xa8);
      if (lVar5 == 0) {
        lVar5 = param_1 + 0xb0;
      }
      iVar4 = *(int *)(param_1 + 200) >> 5;
      uVar10 = (ulonglong)iVar4;
      uVar11 = uVar10;
      if (-1 < iVar4) {
LAB_1813b8610:
        uVar14 = *(uint *)(lVar5 + uVar10 * 4);
        if (uVar14 == 0) goto code_r0x0001813b8618;
        local_e0 = 0x1f;
        if (uVar14 != 0) {
          for (; uVar14 >> local_e0 == 0; local_e0 = local_e0 + -1) {
          }
        }
        iVar4 = (int)uVar11 * 0x20 + local_e0;
        goto LAB_1813b8623;
      }
LAB_1813b8620:
      iVar4 = -1;
LAB_1813b8623:
      if (iVar4 < 0) {
        if (local_108 != '\0') {
          FUN_1813b7430(param_1);
        }
        *param_2 = &DAT_1821dbf98;
        puVar9 = (uint *)(pcVar13 + -0x10);
        if ((*puVar9 & 0x30000000) != 0) {
        }
        LOCK();
        uVar14 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar14 != 0) {
        }
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    uVar7 = FUN_1813b7f50(param_1,*(undefined8 *)(param_1 + 0x68));
    *(undefined8 *)(param_1 + 0x68) = uVar7;
    local_110 = *(int *)(param_1 + 0x70);
    uVar14 = local_f8;
    if (0 < local_110) {
      puVar8 = (undefined8 *)
               (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x20))
                         (*(longlong **)(param_1 + 0xd8),&local_c8);
      uVar14 = 2;
      piVar12 = (int *)*puVar8;
      piVar1 = piVar12 + *(int *)((longlong)puVar8 + 0xc);
      for (; piVar12 != piVar1; piVar12 = piVar12 + 1) {
        if (local_110 == *piVar12) {
          bVar15 = true;
          goto LAB_1813b86e2;
        }
      }
    }
    bVar15 = false;
LAB_1813b86e2:
    if ((uVar14 & 2) != 0) {
      local_bc = 0;
                    /* WARNING: Subroutine does not return */
      free(local_c8);
    }
    if (!bVar15) {
      local_110 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x28))();
    }
    *(int *)(param_1 + 0x70) = local_110;
    local_118 = *(undefined8 *)(param_1 + 0x68);
    puVar8 = (undefined8 *)
             (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x30))
                       (*(longlong **)(param_1 + 0xd8),&local_f0,param_1 + 0x78,param_1 + 0xa8);
    local_100 = (char *)*puVar8;
    *puVar8 = pcVar13;
    puVar9 = (uint *)(local_f0 + -2);
    local_b0 = pcVar13;
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar14 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    if (*local_100 == '\0') {
      FUN_181249460(param_1 + 0x100,*(longlong *)(param_1 + 0xd8) + 0x10);
      (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x48))
                (*(longlong **)(param_1 + 0xd8),*(undefined8 *)(param_1 + 0x328));
      uVar7 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x70))();
      *(undefined8 *)(param_1 + 0x68) = uVar7;
      uVar16 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x68))();
      *(undefined4 *)(param_1 + 0x70) = uVar16;
      puVar8 = (undefined8 *)
               (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x88))
                         (*(longlong **)(param_1 + 0xd8),local_98);
      local_a8 = *(undefined8 *)(param_1 + 0x78);
      *(undefined8 *)(param_1 + 0x78) = *puVar8;
      *puVar8 = local_a8;
      uVar7 = puVar8[2];
      *(undefined8 *)(param_1 + 0x80) = puVar8[1];
      *(undefined8 *)(param_1 + 0x88) = uVar7;
      *(undefined8 *)(param_1 + 0x90) = puVar8[3];
      *(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(puVar8 + 4);
      *(undefined1 *)(param_1 + 0x9c) = *(undefined1 *)((longlong)puVar8 + 0x24);
                    /* WARNING: Subroutine does not return */
      free(local_98[0]);
    }
LAB_1813b849a:
    pcVar13 = local_100;
    FUN_1813b8a40(param_1);
    *param_2 = pcVar13;
    if ((DAT_1821dbf88 & 0x30000000) != 0) {
    }
    LOCK();
    UNLOCK();
    uVar14 = DAT_1821dbf88;
  }
  else {
LAB_1813b8350:
    FUN_1813b8a40(param_1);
    FUN_1813b8c30(param_1);
    plVar6 = (longlong *)FUN_1813b89b0(param_1);
    if ((*(char *)*param_3 == '\0') || (cVar3 = FUN_1813b9e20(plVar6,0,param_3), cVar3 != '\0')) {
      if ((*(char *)param_3[1] == '\0') ||
         (cVar3 = FUN_1813b9e20(plVar6,1,param_3 + 1), cVar3 != '\0')) {
        uVar7 = (**(code **)(*plVar6 + 0x28))(plVar6,param_3,param_3 + 1);
        puVar8 = *(undefined8 **)(param_1 + 0xd8);
        *(undefined8 *)(param_1 + 0xd8) = uVar7;
        if (puVar8 != (undefined8 *)0x0) {
          (**(code **)*puVar8)(puVar8,1);
        }
        plVar6 = *(longlong **)(param_1 + 0xd8);
        if (plVar6 == (longlong *)0x0) {
          FUN_18049c4e0(&local_d8,
                        "Can\'t open the audio device!\n\nThis may be because another application is currently using the same device - if so, you should close any other applications and try again!"
                       );
          local_100 = local_d8;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar14 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar15 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar14;
            if (bVar15) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
        }
        else {
          puVar8 = (undefined8 *)(**(code **)(*plVar6 + 0x60))(plVar6,&local_d0);
          local_100 = (char *)*puVar8;
          *puVar8 = &DAT_1821dbf98;
          puVar9 = (uint *)(local_d0 + -0x10);
          if ((*puVar9 & 0x30000000) == 0) {
            LOCK();
            uVar14 = *puVar9;
            *puVar9 = *puVar9 - 1;
            UNLOCK();
            if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar9);
            }
          }
        }
        pcVar13 = local_100;
        if (*local_100 == '\0') goto LAB_1813b8512;
        goto LAB_1813b849a;
      }
      param_3 = param_3 + 1;
      pcVar13 = "No such device: ";
    }
    else {
      pcVar13 = "No such device: ";
    }
    FUN_181246550(param_2,pcVar13,param_3);
    if ((DAT_1821dbf88 & 0x30000000) != 0) {
    }
    LOCK();
    UNLOCK();
    uVar14 = DAT_1821dbf88;
  }
  DAT_1821dbf88 = uVar14 - 1;
  if (uVar14 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(&DAT_1821dbf88);
code_r0x0001813b85cc:
  uVar11 = (ulonglong)((int)uVar11 - 1);
  uVar10 = uVar10 - 1;
  if ((longlong)uVar10 < 0) goto LAB_1813b85d4;
  goto LAB_1813b85c0;
code_r0x0001813b8618:
  uVar10 = uVar10 - 1;
  uVar11 = (ulonglong)((int)uVar11 - 1);
  if ((longlong)uVar10 < 0) goto LAB_1813b8620;
  goto LAB_1813b8610;
}



############ FUN_ 18047bf70 size=31 ############

void FUN_18047bf70(longlong param_1)

{
  FUN_18047c500(param_1 + 0x10);
  FUN_18047c500(param_1);
  return;
}



############ FUN_ 1812c1db0 size=211 ############

ulonglong FUN_1812c1db0(longlong *param_1,char param_2,uint param_3,undefined8 param_4)

{
  longlong lVar1;
  byte bVar2;
  int iVar3;
  undefined8 in_RAX;
  ulonglong uVar4;
  longlong *plVar5;
  ulonglong *puVar6;
  bool bVar7;
  longlong local_30 [2];
  longlong local_20 [3];
  
  if (param_2 == '\0') {
    puVar6 = (ulonglong *)(param_1 + 0x1c);
  }
  else {
    puVar6 = (ulonglong *)(param_1 + 0x1a);
  }
  bVar7 = param_3 < *(uint *)((longlong)puVar6 + 0xc);
  uVar4 = CONCAT71((int7)((ulonglong)in_RAX >> 8),bVar7);
  if (bVar7) {
    uVar4 = *puVar6;
    lVar1 = *(longlong *)(uVar4 + (longlong)(int)param_3 * 8);
    if (lVar1 != 0) {
      FUN_1812bf720(lVar1,local_30,param_4,param_4,0xfffffffffffffffe);
      plVar5 = local_30;
      if (param_2 == '\0') {
        plVar5 = local_20;
      }
      iVar3 = FUN_18123c5f0(*plVar5 + (longlong)(int)param_3 * 0x28,param_4);
      if (iVar3 == 0) {
        bVar2 = (**(code **)(*param_1 + 0x160))(param_1,local_30);
      }
      else {
        bVar2 = 0;
      }
      FUN_18047c500(local_20);
      FUN_18047c500(local_30);
      return (ulonglong)bVar2;
    }
  }
  return uVar4 & 0xffffffffffffff00;
}



############ FUN_ 1804d7300 size=178 ############

undefined8 * FUN_1804d7300(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  undefined8 local_18;
  undefined4 local_10;
  undefined4 local_c;
  
  if (param_1 != param_2) {
    FUN_1804db870(&local_18);
    uVar4 = *param_1;
    *param_1 = local_18;
    uVar2 = *(undefined4 *)(param_1 + 1);
    *(undefined4 *)(param_1 + 1) = local_10;
    uVar3 = *(undefined4 *)((longlong)param_1 + 0xc);
    *(undefined4 *)((longlong)param_1 + 0xc) = local_c;
    local_18 = uVar4;
    local_10 = uVar2;
    local_c = uVar3;
    FUN_18047c500(&local_18);
  }
  puVar1 = param_1 + 2;
  if (puVar1 != param_2 + 2) {
    FUN_1804db870(&local_18);
    uVar4 = *puVar1;
    *puVar1 = local_18;
    uVar2 = *(undefined4 *)(param_1 + 3);
    *(undefined4 *)(param_1 + 3) = local_10;
    uVar3 = *(undefined4 *)((longlong)param_1 + 0x1c);
    *(undefined4 *)((longlong)param_1 + 0x1c) = local_c;
    local_18 = uVar4;
    local_10 = uVar2;
    local_c = uVar3;
    FUN_18047c500(&local_18);
  }
  return param_1;
}



############ FUN_ 18052f610 size=36 ############

void FUN_18052f610(undefined8 *param_1)

{
  FUN_180531620();
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018052f62d. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 181132518 size=31 ############

void FUN_181132518(void)

{
  undefined1 local_28 [40];
  
  FUN_1804719e0(local_28);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_28,(ThrowInfo *)&DAT_1825fec68);
}



############ FUN_ 181132538 size=31 ############

void FUN_181132538(void)

{
  undefined1 local_28 [40];
  
  FUN_1811324a0(local_28);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_28,(ThrowInfo *)&DAT_1825feb90);
}



############ FUN_ 1805a6cb0 size=336 ############

longlong * FUN_1805a6cb0(longlong *param_1,void *param_2,size_t param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  void *_Memory;
  void *pvVar5;
  longlong *_Dst;
  ulonglong uVar6;
  
  uVar1 = param_1[3];
  if (uVar1 < param_3) {
    if (0x7fffffffffffffff < param_3) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a6980();
    }
    uVar3 = param_3 | 0xf;
    uVar6 = 0x7fffffffffffffff;
    if (((uVar3 < 0x8000000000000000) && (uVar1 <= 0x7fffffffffffffff - (uVar1 >> 1))) &&
       (uVar4 = (uVar1 >> 1) + uVar1, uVar6 = uVar3, uVar3 < uVar4)) {
      uVar6 = uVar4;
    }
    uVar3 = uVar6 + 1;
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        pvVar5 = (void *)0x0;
      }
      else {
        pvVar5 = (void *)FUN_1811316e0(uVar3);
      }
    }
    else {
      uVar4 = uVar6 + 0x28;
      if (uVar4 <= uVar3) {
        uVar4 = 0xffffffffffffffff;
      }
      lVar2 = FUN_1811316e0(uVar4);
      if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      pvVar5 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0);
      *(longlong *)((longlong)pvVar5 - 8) = lVar2;
    }
    param_1[2] = param_3;
    param_1[3] = uVar6;
    memcpy(pvVar5,param_2,param_3);
    *(undefined1 *)((longlong)pvVar5 + param_3) = 0;
    if (0xf < uVar1) {
      pvVar5 = (void *)*param_1;
      _Memory = pvVar5;
      if ((0xfff < uVar1 + 1) &&
         (_Memory = *(void **)((longlong)pvVar5 + -8),
         0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_1 = (longlong)pvVar5;
  }
  else {
    _Dst = param_1;
    if (0xf < uVar1) {
      _Dst = (longlong *)*param_1;
    }
    param_1[2] = param_3;
    memmove(_Dst,param_2,param_3);
    *(undefined1 *)((longlong)_Dst + param_3) = 0;
  }
  return param_1;
}



############ FUN_ 1805a1320 size=378 ############

undefined8 *
FUN_1805a1320(undefined8 *param_1,ulonglong param_2,undefined8 param_3,void *param_4,size_t param_5)

{
  size_t _Size;
  ulonglong uVar1;
  void *_Src;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  void *pvVar6;
  
  _Size = param_1[2];
  if (0x7fffffffffffffff - _Size < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a6980();
  }
  uVar1 = param_1[3];
  uVar3 = _Size + param_2 | 0xf;
  uVar5 = 0x7fffffffffffffff;
  if (((uVar3 < 0x8000000000000000) && (uVar1 <= 0x7fffffffffffffff - (uVar1 >> 1))) &&
     (uVar4 = (uVar1 >> 1) + uVar1, uVar5 = uVar3, uVar3 < uVar4)) {
    uVar5 = uVar4;
  }
  uVar3 = uVar5 + 1;
  if (uVar3 < 0x1000) {
    if (uVar3 == 0) {
      pvVar6 = (void *)0x0;
    }
    else {
      pvVar6 = (void *)FUN_1811316e0(uVar3);
    }
  }
  else {
    uVar4 = uVar5 + 0x28;
    if (uVar4 <= uVar3) {
      uVar4 = 0xffffffffffffffff;
    }
    lVar2 = FUN_1811316e0(uVar4);
    if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    pvVar6 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)pvVar6 - 8) = lVar2;
  }
  param_1[2] = _Size + param_2;
  param_1[3] = uVar5;
  if (uVar1 < 0x10) {
    memcpy(pvVar6,param_1,_Size);
    memcpy((void *)(_Size + (longlong)pvVar6),param_4,param_5);
    *(undefined1 *)((longlong)(_Size + (longlong)pvVar6) + param_5) = 0;
    *param_1 = pvVar6;
    return param_1;
  }
  _Src = (void *)*param_1;
  memcpy(pvVar6,_Src,_Size);
  memcpy((void *)(_Size + (longlong)pvVar6),param_4,param_5);
  *(undefined1 *)((longlong)(_Size + (longlong)pvVar6) + param_5) = 0;
  pvVar6 = _Src;
  if ((0xfff < uVar1 + 1) &&
     (pvVar6 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 1805a4070 size=230 ############

undefined8 * FUN_1805a4070(undefined8 *param_1,undefined8 *param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  longlong lVar4;
  void *_Dst;
  ulonglong uVar5;
  ulonglong uVar6;
  
  _Dst = (void *)0x0;
  param_1[2] = 0;
  param_1[3] = 0;
  uVar2 = param_2[2];
  if (0xf < (ulonglong)param_2[3]) {
    param_2 = (undefined8 *)*param_2;
  }
  if (uVar2 < 0x10) {
    uVar3 = param_2[1];
    *param_1 = *param_2;
    param_1[1] = uVar3;
    param_1[2] = uVar2;
    param_1[3] = 0xf;
  }
  else {
    uVar6 = uVar2 | 0xf;
    if (0x7fffffffffffffff < uVar6) {
      uVar6 = 0x7fffffffffffffff;
    }
    uVar1 = uVar6 + 1;
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        _Dst = (void *)FUN_1811316e0(uVar1);
      }
    }
    else {
      uVar5 = uVar6 + 0x28;
      if (uVar5 <= uVar1) {
        uVar5 = 0xffffffffffffffff;
      }
      lVar4 = FUN_1811316e0(uVar5);
      if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0);
      *(longlong *)((longlong)_Dst - 8) = lVar4;
    }
    *param_1 = _Dst;
    memcpy(_Dst,param_2,uVar2 + 1);
    param_1[2] = uVar2;
    param_1[3] = uVar6;
  }
  return param_1;
}



############ FUN_ 1805c04c0 size=2707 ############

/* WARNING: Instruction at (ram,0x0001805c0fb6) overlaps instruction at (ram,0x0001805c0fb5)
    */
/* WARNING: Removing unreachable block (ram,0x0001805c0f34) */
/* WARNING: Removing unreachable block (ram,0x0001805c0bb4) */
/* WARNING: Removing unreachable block (ram,0x0001805c0b73) */
/* WARNING: Removing unreachable block (ram,0x0001805c0990) */
/* WARNING: Removing unreachable block (ram,0x0001805c0997) */
/* WARNING: Removing unreachable block (ram,0x0001805c0995) */
/* WARNING: Removing unreachable block (ram,0x0001805c05cf) */
/* WARNING: Removing unreachable block (ram,0x0001805c08d1) */
/* WARNING: Removing unreachable block (ram,0x0001805c0a31) */
/* WARNING: Removing unreachable block (ram,0x0001805c0b98) */
/* WARNING: Removing unreachable block (ram,0x0001805c0bb9) */
/* WARNING: Removing unreachable block (ram,0x0001805c0de8) */
/* WARNING: Removing unreachable block (ram,0x0001805c0fb1) */
/* WARNING: Removing unreachable block (ram,0x0001805c0b7f) */

undefined8 FUN_1805c04c0(void)

{
  int iVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  uint uVar4;
  uint uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  undefined8 *puVar10;
  bool bVar11;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint auStackX_8 [4];
  undefined8 local_res18;
  undefined4 local_res20;
  code *pcStack_68;
  undefined8 local_60;
  undefined4 *local_58;
  undefined8 *local_50;
  
  local_60 = 0xfffffffffffffffe;
  puVar10 = (undefined8 *)0x0;
  local_res20 = 0xf00;
  lVar9 = (longlong)&DAT_18265dd50 +
          (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18265dd50),8) >> 5) * -0x29;
  LOCK();
  iVar1 = *(int *)(&DAT_18265dbd0 + lVar9 * 4);
  *(int *)(&DAT_18265dbd0 + lVar9 * 4) = 1;
  UNLOCK();
  puVar7 = puVar10;
  puVar8 = DAT_18265dd50;
  while (DAT_18265dd50 = puVar8, iVar1 != 0) {
    uVar4 = (uint)puVar7;
    if ((3 < uVar4) && (0xf < uVar4)) {
      Sleep((uint)(0x1f < uVar4));
    }
    puVar7 = (undefined8 *)(ulonglong)(uVar4 + 1);
    LOCK();
    iVar1 = *(int *)(&DAT_18265dbd0 + lVar9 * 4);
    *(int *)(&DAT_18265dbd0 + lVar9 * 4) = 1;
    UNLOCK();
    puVar8 = DAT_18265dd50;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar9 * 4) = 0;
  local_res18 = 0xb97d1d49;
  if (puVar8 == (undefined8 *)0x0) {
    local_58 = &DAT_18265dd58;
    LOCK();
    bVar11 = DAT_18265dd58 == 0;
    if (bVar11) {
      DAT_18265dd58 = 1;
    }
    UNLOCK();
    while (!bVar11) {
      LOCK();
      bVar11 = DAT_18265dd58 == 0;
      if (bVar11) {
        DAT_18265dd58 = 1;
      }
      UNLOCK();
    }
    LOCK();
    iVar1 = *(int *)(&DAT_18265dbd0 + lVar9 * 4);
    *(int *)(&DAT_18265dbd0 + lVar9 * 4) = 1;
    UNLOCK();
    puVar7 = puVar10;
    puVar8 = DAT_18265dd50;
    while (DAT_18265dd50 = puVar8, iVar1 != 0) {
      uVar4 = (uint)puVar7;
      if ((3 < uVar4) && (0xf < uVar4)) {
        Sleep((uint)(0x1f < uVar4));
      }
      puVar7 = (undefined8 *)(ulonglong)(uVar4 + 1);
      LOCK();
      iVar1 = *(int *)(&DAT_18265dbd0 + lVar9 * 4);
      *(int *)(&DAT_18265dbd0 + lVar9 * 4) = 1;
      UNLOCK();
      puVar8 = DAT_18265dd50;
    }
    *(undefined4 *)(&DAT_18265dbd0 + lVar9 * 4) = 0;
    if (puVar8 == (undefined8 *)0x0) {
      local_50 = (undefined8 *)FUN_1811316e0(0x10);
      puVar7 = puVar10;
      if (local_50 != (undefined8 *)0x0) {
        *local_50 = 0;
        local_50[1] = 0;
        puVar7 = local_50;
      }
      FUN_1805ccdd0(FUN_1805c1760,puVar7);
      LOCK();
      iVar1 = *(int *)(&DAT_18265dbd0 + lVar9 * 4);
      *(int *)(&DAT_18265dbd0 + lVar9 * 4) = 1;
      UNLOCK();
      puVar8 = puVar10;
      while (iVar1 != 0) {
        uVar4 = (uint)puVar8;
        if ((3 < uVar4) && (0xf < uVar4)) {
          Sleep((uint)(0x1f < uVar4));
        }
        puVar8 = (undefined8 *)(ulonglong)(uVar4 + 1);
        LOCK();
        iVar1 = *(int *)(&DAT_18265dbd0 + lVar9 * 4);
        *(int *)(&DAT_18265dbd0 + lVar9 * 4) = 1;
        UNLOCK();
      }
      DAT_18265dd50 = puVar7;
      *(undefined4 *)(&DAT_18265dbd0 + lVar9 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_18265dd58 = 0;
  }
  do {
    puVar10 = (undefined8 *)((-(longlong)puVar10 ^ 0xffffffffffffffffU) + 1);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    FUN_1805ca55f();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    FUN_1805c24d5();
    FUN_1805ca55f();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar9 = 0xd;
  do {
    lVar9 = lVar9 + -1;
  } while (lVar9 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001805c0f38();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar9 = 0x17;
  do {
    lVar9 = lVar9 + -1;
  } while (lVar9 != 0);
  do {
    FUN_1805c1138();
                    /* WARNING: Call to offcut address within same function */
    func_0x0001805c0f38();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    FUN_1805c1d8e(0x7838);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    FUN_1805bf7e8();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_res18 = 0xfecac20910efede2;
  do {
    uVar3 = rdtsc();
    uVar5 = (uint)((ulonglong)uVar3 >> 0x20);
    uVar6 = CONCAT44((int)((ulonglong)auStackX_8 >> 0x20),uVar5);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar3 ^ uVar5) * 0x5bd1ed55;
  auStackX_8[0] = (uVar4 >> 0x18 ^ uVar4) * -0x5028166b;
  if (auStackX_8[0] < 0xae4c40f) {
    do {
      uVar6 = 0xdedd;
      pcStack_68 = FUN_1813bba80;
                    /* WARNING: Call to offcut address within same function */
      func_0x0001805c09e8(&pcStack_68,0xdedd);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar2 = (*pcStack_68)();
    if (1 < uVar2) {
      lVar9 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar9 != -0x3333333333333334) {
        *(undefined8 **)register0x00000020 = puVar10;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar9 = *(longlong *)register0x00000020;
      }
    }
  }
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = FUN_1805ef049(0,(~uVar6 + 1 ^ 0xffffffffffffffff) + 1,FUN_1805ef049);
  return uVar3;
}



############ FUN_ 1806afd50 size=4643 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806afd50(longlong param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined8 *param_6,undefined8 *param_7)

{
  int *piVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  ulonglong uVar4;
  size_t _Size;
  char cVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  uint uVar9;
  undefined8 uVar10;
  HANDLE pvVar11;
  longlong lVar12;
  undefined8 *puVar13;
  tm *ptVar14;
  void **ppvVar15;
  longlong lVar16;
  longlong *plVar17;
  undefined1 *puVar18;
  undefined1 *puVar19;
  uint *puVar20;
  ushort uVar21;
  size_t _Size_00;
  ushort uVar22;
  ushort uVar23;
  char *_Buf2;
  undefined1 auStack_1cc8 [32];
  void **local_1ca8;
  void ***local_1ca0;
  undefined1 local_1c98 [4];
  uint local_1c94;
  undefined4 local_1c90;
  longlong local_1c88;
  ulonglong local_1c80;
  undefined8 local_1c78;
  longlong local_1c70;
  void *local_1c68;
  longlong lStack_1c60;
  undefined8 local_1c58;
  undefined4 local_1c50;
  undefined4 local_1c4c;
  undefined4 local_1c40 [2];
  undefined4 local_1c38 [2];
  undefined4 local_1c30 [2];
  undefined4 local_1c28 [2];
  undefined4 local_1c20 [2];
  undefined4 local_1c18 [2];
  undefined4 local_1c10 [2];
  undefined4 local_1c08 [2];
  undefined4 local_1c00 [4];
  undefined4 local_1bf0 [2];
  undefined8 *local_1be8;
  undefined4 local_1be0 [2];
  longlong local_1bd8 [2];
  void **local_1bc8;
  undefined1 *puStack_1bc0;
  undefined1 local_1bb8 [8];
  ulonglong local_1bb0;
  undefined8 local_1ba8;
  undefined8 uStack_1ba0;
  undefined8 local_1b98;
  void **local_1b88;
  longlong lStack_1b80;
  longlong local_1b78;
  char *local_1b70;
  undefined8 local_1b68;
  char *local_1b60;
  undefined1 local_1b58 [8];
  undefined8 local_1b50;
  undefined8 local_1b48;
  char *local_1b40;
  longlong local_1b38;
  char *local_1b30;
  longlong local_1b28;
  longlong local_1b20;
  char *local_1b18;
  char *local_1b10;
  char *local_1b08;
  longlong local_1b00;
  longlong local_1af8;
  char *local_1af0 [2];
  char *local_1ae0;
  longlong local_1ad8;
  longlong local_1ad0;
  undefined1 local_1ac8 [8];
  undefined1 local_1ac0 [8];
  int *local_1ab8;
  char local_1ab0;
  undefined8 local_1aa8;
  longlong local_1aa0;
  int *local_1a98;
  char local_1a90;
  int *local_1a88;
  char local_1a80;
  undefined8 local_1a78;
  __time64_t local_1a70;
  undefined8 local_1a68;
  longlong local_1a60;
  longlong lStack_1a58;
  undefined8 local_1a50;
  undefined8 local_1a48;
  undefined8 uStack_1a40;
  undefined8 local_1a38;
  undefined8 local_1a30;
  undefined8 uStack_1a28;
  undefined8 local_1a20;
  void **local_1a18;
  longlong lStack_1a10;
  undefined1 local_1a08 [8];
  longlong *local_1a00;
  void **local_19f8;
  undefined1 *puStack_19f0;
  undefined1 local_19e8 [16];
  undefined1 local_19d8 [8];
  undefined8 local_19d0;
  undefined1 auStack_19c4 [4];
  undefined1 auStack_19c0 [8];
  undefined8 local_19b8;
  undefined8 uStack_19b0;
  undefined8 local_19a8;
  undefined8 uStack_19a0;
  undefined8 local_1998;
  undefined8 uStack_1990;
  undefined8 local_1988;
  undefined8 uStack_1980;
  undefined8 local_1978;
  undefined8 uStack_1970;
  undefined4 local_1968;
  undefined4 uStack_1964;
  undefined4 uStack_1960;
  undefined4 uStack_195c;
  undefined4 local_1958;
  undefined4 uStack_1954;
  undefined4 uStack_1950;
  undefined4 uStack_194c;
  undefined1 local_1948 [32];
  longlong local_1928 [48];
  undefined **local_17a8;
  undefined1 local_17a0;
  undefined7 uStack_179f;
  longlong local_1790;
  ulonglong local_1788;
  undefined8 local_1780;
  undefined8 local_1778;
  undefined8 uStack_1770;
  undefined8 local_1768;
  undefined8 uStack_1760;
  undefined8 local_1758;
  undefined8 local_1750;
  undefined4 local_1748 [2];
  undefined8 local_1740;
  undefined4 local_1738;
  undefined2 local_1734;
  undefined1 local_1732;
  undefined1 local_1728;
  undefined7 uStack_1727;
  ulonglong local_1718;
  ulonglong local_1710;
  char local_1708;
  undefined7 uStack_1707;
  size_t local_16f8;
  ulonglong local_16f0;
  undefined **local_16e8;
  undefined1 local_16e0;
  undefined7 uStack_16df;
  longlong local_16d0;
  ulonglong local_16c8;
  undefined8 local_16c0;
  undefined8 local_16b8;
  undefined8 uStack_16b0;
  undefined8 local_16a8;
  undefined8 uStack_16a0;
  undefined8 local_1698;
  undefined8 uStack_1690;
  undefined8 local_1688;
  undefined8 uStack_1680;
  undefined8 local_1678;
  undefined8 local_1670;
  undefined8 local_1668;
  undefined8 uStack_1660;
  undefined8 local_1658;
  undefined8 uStack_1650;
  undefined8 local_1648;
  undefined8 local_1640;
  undefined4 local_1638;
  undefined1 local_1634;
  undefined4 local_1628;
  undefined4 uStack_1624;
  undefined4 uStack_1620;
  undefined4 uStack_161c;
  undefined1 local_1618 [16];
  undefined8 local_1608;
  undefined8 local_1600;
  undefined8 local_15f8;
  undefined8 local_15f0;
  undefined8 local_15e8;
  undefined8 local_15e0;
  undefined8 local_15d8;
  undefined8 local_15d0;
  undefined8 local_15c8;
  undefined1 local_15c0 [32];
  undefined1 local_15a0 [32];
  undefined1 local_1580 [32];
  undefined1 local_1560 [56];
  undefined1 local_1528 [48];
  ulonglong local_14f8;
  uint uStack_14f0;
  undefined8 local_14e8;
  undefined8 uStack_14e0;
  undefined8 local_14d8;
  undefined8 uStack_14d0;
  undefined8 local_14c8;
  undefined8 uStack_14c0;
  undefined8 local_14b8;
  undefined8 uStack_14b0;
  undefined8 local_14a8;
  undefined8 uStack_14a0;
  undefined4 local_1498;
  undefined4 uStack_1494;
  undefined4 uStack_1490;
  undefined4 uStack_148c;
  undefined4 local_1488;
  undefined4 uStack_1484;
  undefined4 uStack_1480;
  undefined4 uStack_147c;
  undefined4 local_1478;
  undefined4 uStack_1474;
  undefined4 uStack_1470;
  undefined4 uStack_146c;
  undefined1 local_1348 [112];
  undefined1 local_12d8 [112];
  undefined1 local_1268 [112];
  undefined1 local_11f8 [8];
  longlong local_11f0 [281];
  undefined1 local_928 [2240];
  ulonglong local_68;
  undefined8 uStack_48;
  
  uStack_48 = 0x1806afd6f;
  local_19d0 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_1cc8;
  local_1c70 = CONCAT44(local_1c70._4_4_,param_3);
  local_1c20[0] = param_5;
  local_1a78 = 0x7ffffffffffffffe;
  local_1c50 = 0xfffffffe;
  local_1c90 = param_4;
  local_1c4c = param_2;
  local_1ad0 = param_1;
  FUN_1805b41e0(&local_1c88,&local_1c50,&local_1a78);
  local_1ad8 = param_1 + 0x18;
  FUN_1805b45f0(&local_1ab8,local_1ad8);
  uVar10 = FUN_1806ab5b0();
  local_1ca8 = (void **)CONCAT44(local_1ca8._4_4_,1);
  uVar10 = FUN_18066b810(local_1a08,uVar10,0,2);
  FUN_18067dba0(param_1 + 8,uVar10);
  if (local_1a00 != (longlong *)0x0) {
    LOCK();
    plVar17 = local_1a00 + 1;
    lVar12 = *plVar17;
    *(int *)plVar17 = (int)*plVar17 + -1;
    UNLOCK();
    if ((int)lVar12 == 1) {
      (**(code **)(*local_1a00 + 8))(local_1a00);
      LOCK();
      piVar1 = (int *)((longlong)local_1a00 + 0xc);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)(*local_1a00 + 0x10))(local_1a00);
      }
    }
  }
  uVar3 = local_1c4c;
  *(undefined4 *)(param_1 + 0x30) = local_1c4c;
  uVar8 = (undefined4)local_1c70;
  *(undefined4 *)(param_1 + 0x34) = (undefined4)local_1c70;
  *(undefined4 *)(param_1 + 0x38) = local_1c90;
  *(undefined4 *)(param_1 + 0x3c) = param_5;
  if ((local_1ab0 != '\0') && (*local_1ab8 = *local_1ab8 + -1, *local_1ab8 == 0)) {
    LOCK();
    local_1ab8[1] = 0;
    UNLOCK();
    puVar20 = (uint *)(local_1ab8 + 2);
    LOCK();
    uVar6 = *puVar20;
    *puVar20 = *puVar20 + 0x80000000;
    UNLOCK();
    if (((uVar6 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar6)) {
      LOCK();
      uVar6 = *puVar20;
      *puVar20 = *puVar20 | 0x40000000;
      UNLOCK();
      if ((uVar6 >> 0x1e & 1) == 0) {
        pvVar11 = (HANDLE)FUN_1805a9100();
        SetEvent(pvVar11);
      }
    }
  }
  if (param_6 != (undefined8 *)0x0) {
    param_6[2] = 0;
    puVar13 = param_6;
    if (0xf < (ulonglong)param_6[3]) {
      puVar13 = (undefined8 *)*param_6;
    }
    *(undefined1 *)puVar13 = 0;
  }
  if (param_7 != (undefined8 *)0x0) {
    param_7[2] = 0;
    puVar13 = param_7;
    if (0xf < (ulonglong)param_7[3]) {
      puVar13 = (undefined8 *)*param_7;
    }
    *(undefined1 *)puVar13 = 0;
  }
  FUN_1806863a0(param_1);
  local_17a8 = pace::eden::thrift::authorize::OpenEncryptedChannelInput::vftable;
  local_1790 = 0;
  local_1788 = 0xf;
  local_17a0 = 0;
  FUN_1805a6cb0(&local_17a0,&DAT_181baf991,0);
  local_1780 = 0;
  local_1778 = 0;
  uStack_1770 = 0;
  local_1768 = 0;
  uStack_1760 = 0;
  local_1758 = 0;
  local_1750 = 0;
  local_1748[0] = 0;
  local_1740 = 0;
  local_1738 = 0;
  local_1734 = 0;
  local_1732 = 0;
  local_16e8 = pace::eden::thrift::authorize::OpenEncryptedChannelReturn::vftable;
  local_16d0 = 0;
  local_16c8 = 0xf;
  local_16e0 = 0;
  FUN_1805a6cb0(&local_16e0,&DAT_181baf991,0);
  uVar2 = local_1c90;
  local_16c0 = 0;
  local_16b8 = 0;
  uStack_16b0 = 0;
  local_16a8 = 0;
  uStack_16a0 = 0;
  local_1698 = 0;
  uStack_1690 = 0;
  local_1688 = 0;
  uStack_1680 = 0;
  local_1678 = 0;
  local_1670 = 0;
  local_1668 = 0;
  uStack_1660 = 0;
  local_1658 = 0;
  uStack_1650 = 0;
  local_1648 = 0;
  local_1640 = 4;
  local_1638 = 0;
  local_1634 = 0;
  local_1750 = CONCAT44(uVar8,uVar3);
  local_1748[0] = local_1c90;
  local_1740 = FUN_1806d2560();
  FUN_180738860(local_928,local_1750 & 0xffffffff);
  uVar6 = FUN_1807002d0(uVar2);
  local_1c94 = uVar6;
  if (uVar6 == 0) {
    local_1be8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_1be8 == (undefined8 *)0x0) {
      lVar12 = 0;
    }
    else {
      lVar12 = FUN_1805a48c0(local_1be8,"Encryption Algorithm %d not supported");
    }
    puVar13 = (undefined8 *)FUN_1811316e0(0x18);
    local_1be8 = puVar13;
    if (puVar13 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar13,"|__FILE__|%s|__LINE__|%d");
      *puVar13 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),local_1748);
  }
  FUN_180937700(local_11f8,local_1750 & 0xffffffff);
  (**(code **)(local_11f0[0] + 0x20))(local_11f0,&local_15f8,local_1348);
  FUN_18073e970(local_1348,&local_1780,&local_1768);
  _time64(&local_1a70);
  ptVar14 = _gmtime64(&local_1a70);
  if (ptVar14 == (tm *)0x0) {
    uVar10 = FUN_1805b6c80(local_1948,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
    FUN_1805b3e60(uVar10);
  }
  FUN_1805bd670(local_1bb8,ptVar14);
  FUN_180663c70(local_1bb8,&local_17a0);
  local_1c68 = (void *)0x0;
  lStack_1c60 = 0;
  ppvVar15 = (void **)0x0;
  local_1c58 = 0;
  local_1c98[0] = 0xa5;
  local_1bc8 = &local_1c68;
  puStack_1bc0 = local_1c98;
  local_19f8 = local_1bc8;
  puStack_19f0 = puStack_1bc0;
  FUN_1805e1ee0(&local_1c68,0x10,&local_19f8);
  local_1bc8 = (void **)0x0;
  puStack_1bc0 = (undefined1 *)0x0;
  local_1c70 = FUN_1811316e0(0x240);
  if (local_1c70 != 0) {
    local_1ca8 = &local_1c68;
    ppvVar15 = (void **)FUN_18063c260(local_1c70,0,1,0);
  }
  local_1b88 = ppvVar15;
  FUN_18066b4e0(&lStack_1b80,ppvVar15);
  FUN_1805ae620(&local_1b88,ppvVar15,ppvVar15);
  ppvVar15 = local_1b88;
  local_1bc8 = local_1b88;
  puStack_1bc0 = (undefined1 *)lStack_1b80;
  local_1a30 = 0;
  uStack_1a28 = 0;
  local_1a20 = 0;
  local_1a60 = 0;
  lStack_1a58 = 0;
  local_1a50 = 0;
  FUN_180673ff0(&local_17a8,&local_1a30,1);
  FUN_1805b45f0(&local_1a98,param_1 + 0x18);
  local_1a18 = ppvVar15;
  lStack_1a10 = lStack_1b80;
  if (lStack_1b80 != 0) {
    LOCK();
    *(int *)(lStack_1b80 + 8) = *(int *)(lStack_1b80 + 8) + 1;
    UNLOCK();
    uVar6 = local_1c94;
  }
  local_1aa8 = *(undefined8 *)(param_1 + 8);
  local_1aa0 = *(longlong *)(param_1 + 0x10);
  if (local_1aa0 != 0) {
    LOCK();
    *(int *)(local_1aa0 + 8) = *(int *)(local_1aa0 + 8) + 1;
    UNLOCK();
    uVar6 = local_1c94;
  }
  _Size_00 = (size_t)uVar6;
  local_1ca0 = &local_1a18;
  local_1ca8 = (void **)((ulonglong)local_1ca8 & 0xffffffff00000000);
  FUN_1806b91d0(0x1a,&local_1a30,&local_1a60,&local_1aa8);
  if ((local_1a90 != '\0') && (*local_1a98 = *local_1a98 + -1, *local_1a98 == 0)) {
    LOCK();
    local_1a98[1] = 0;
    UNLOCK();
    puVar20 = (uint *)(local_1a98 + 2);
    LOCK();
    uVar6 = *puVar20;
    *puVar20 = *puVar20 + 0x80000000;
    UNLOCK();
    if (((uVar6 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar6)) {
      LOCK();
      uVar6 = *puVar20;
      *puVar20 = *puVar20 | 0x40000000;
      UNLOCK();
      if ((uVar6 >> 0x1e & 1) == 0) {
        pvVar11 = (HANDLE)FUN_1805a9100();
        SetEvent(pvVar11);
      }
    }
    _Size_00 = (size_t)local_1c94;
  }
  FUN_180671f40(local_1a60,lStack_1a58 - local_1a60,&local_16e8);
  FUN_1805b45f0(&local_1a88,param_1 + 0x18);
  *(undefined4 *)(param_1 + 0x40) = (undefined4)local_1678;
  if ((local_1a80 != '\0') && (*local_1a88 = *local_1a88 + -1, *local_1a88 == 0)) {
    LOCK();
    local_1a88[1] = 0;
    UNLOCK();
    puVar20 = (uint *)(local_1a88 + 2);
    LOCK();
    uVar6 = *puVar20;
    *puVar20 = *puVar20 + 0x80000000;
    UNLOCK();
    if (((uVar6 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar6)) {
      LOCK();
      uVar6 = *puVar20;
      *puVar20 = *puVar20 | 0x40000000;
      UNLOCK();
      if ((uVar6 >> 0x1e & 1) == 0) {
        pvVar11 = (HANDLE)FUN_1805a9100();
        SetEvent(pvVar11);
      }
    }
    _Size_00 = (size_t)local_1c94;
  }
  FUN_180660c00(local_1bd8,&local_16e0,0);
  local_1a68 = 0x7ffffffffffffffe;
  local_1c40[0] = 0xfffffffe;
  FUN_1805b41e0(&local_1b78,local_1c40,&local_1a68);
  if (local_1bd8[0] == local_1b78) {
    lVar12 = FUN_1805c0220("licenseD_CallTime (%s) is not a valid date");
    lVar16 = FUN_1805c0260();
    FUN_1805b2240(*(undefined8 *)(lVar12 + 8),&local_16e0);
    local_1c38[0] = 0xd80;
    local_1b70 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar16 + 8),&local_1b70);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_1c38);
  }
  FUN_1805c5170(&local_1c78,local_1bd8,local_1bb8);
  FUN_180661ba0(&local_1c78,&local_1c80);
  local_1b68 = 0;
  iVar7 = FUN_1805bd370(&local_1c78,&local_1b68);
  if ((iVar7 != -1) && (300 < local_1c80)) {
    lVar12 = FUN_1805c0220(
                          "The openEncryptedChannel client_CallTime to licenseD_CallTime (%d second) was too long "
                          );
    lVar16 = FUN_1805c0260();
    FUN_1805b2520(*(undefined8 *)(lVar12 + 8),&local_1c80);
    local_1c30[0] = 0xd8b;
    local_1b60 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar16 + 8),&local_1b60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_1c30);
  }
  FUN_1806a8a70(local_1b58);
  FUN_1805c5170(&local_1b50,local_1b58,local_1bd8);
  local_1c78 = local_1b50;
  FUN_180661ba0(&local_1c78,&local_1c80);
  local_1b48 = 0;
  iVar7 = FUN_1805bd370(&local_1c78,&local_1b48);
  if ((iVar7 != -1) && (300 < local_1c80)) {
    lVar12 = FUN_1805c0220(
                          "The openEncryptedChannel licenseD_CallTime to command finish (%d second) was too long"
                          );
    lVar16 = FUN_1805c0260();
    FUN_1805b2520(*(undefined8 *)(lVar12 + 8),&local_1c80);
    local_1c28[0] = 0xd98;
    local_1b40 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar16 + 8),&local_1b40);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_1c28);
  }
  local_1ba8 = 0;
  uStack_1ba0 = 0;
  local_1b98 = 0;
  puVar18 = &local_17a0;
  if (0xf < local_1788) {
    puVar18 = (undefined1 *)CONCAT71(uStack_179f,local_17a0);
  }
  puVar19 = &local_17a0;
  if (0xf < local_1788) {
    puVar19 = (undefined1 *)CONCAT71(uStack_179f,local_17a0);
  }
  FUN_1805e1990(&local_1ba8,puVar19,puVar18 + local_1790);
  uVar21 = (ushort)((ulonglong)local_1740 >> 0x10);
  uVar22 = (ushort)((ulonglong)local_1740 >> 0x20);
  uVar23 = (ushort)((ulonglong)local_1740 >> 0x30);
  local_1bb0 = (ulonglong)
               CONCAT22((ushort)local_1740 << 8 | (ushort)local_1740 >> 8,uVar21 << 8 | uVar21 >> 8)
               << 0x20 | (ulonglong)(ushort)(uVar22 << 8 | uVar22 >> 8) << 0x10 |
               (ulonglong)(ushort)(uVar23 << 8 | uVar23 >> 8);
  local_1ca8._0_1_ = local_1c98[0];
  FUN_1805d5a60(&local_1ba8,uStack_1ba0,&local_1bb0,&local_1ba8);
  puVar18 = &local_16e0;
  if (0xf < local_16c8) {
    puVar18 = (undefined1 *)CONCAT71(uStack_16df,local_16e0);
  }
  puVar19 = &local_16e0;
  if (0xf < local_16c8) {
    puVar19 = (undefined1 *)CONCAT71(uStack_16df,local_16e0);
  }
  local_1ca8 = (void **)CONCAT71(local_1ca8._1_7_,local_1c98[0]);
  FUN_1805d5a60(&local_1ba8,uStack_1ba0,puVar19,puVar18 + local_16d0);
  FUN_18073d980(&local_16c0,&local_16a8,local_12d8);
  local_1ca0 = &local_1c68;
  local_1ca8 = (void **)&local_1ba8;
  uVar6 = (uint)_Size_00;
  FUN_180938570(local_11f8,_Size_00,&local_15f8,local_12d8);
  if (lStack_1c60 - (longlong)local_1c68 != _Size_00) {
    lVar12 = FUN_1805c0220("The actual key size %d is not the expected size %d");
    lVar16 = FUN_1805c0260();
    local_1b38 = lStack_1c60 - (longlong)local_1c68;
    FUN_1805b2520(*(undefined8 *)(lVar12 + 8),&local_1b38);
    FUN_18060e760(*(undefined8 *)(lVar12 + 8),&local_1c94);
    local_1be0[0] = 0xdd9;
    local_1b30 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar16 + 8),&local_1b30);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_1be0);
  }
  local_15f8 = 0;
  local_15f0 = 0;
  local_15e8 = 0;
  local_15e0 = 0;
  local_15d8 = 0;
  local_15d0 = 0;
  local_15c8 = 0;
  FUN_1807da7c0(local_1528,0,local_1c20,&uStack_1690);
  if ((param_6 != (undefined8 *)0x0) || (param_7 != (undefined8 *)0x0)) {
    local_1628 = local_1478;
    uStack_1624 = uStack_1474;
    uStack_1620 = uStack_1470;
    uStack_161c = uStack_146c;
    if (param_6 != (undefined8 *)0x0) {
      plVar17 = (longlong *)FUN_18076a230(local_19d8,&local_1628);
      local_1c88 = *plVar17;
      FUN_1805b6b80(&local_1b28,0);
      if (local_1c88 != local_1b28) {
        uVar10 = FUN_180662d40(local_15c0,&local_1c88);
        FUN_1805a5a40(param_6,uVar10);
        FUN_180485450(local_15c0);
      }
    }
    if (param_7 != (undefined8 *)0x0) {
      plVar17 = (longlong *)FUN_18076a230(local_1ac8,&uStack_1620);
      local_1c88 = *plVar17;
      FUN_1805b6b80(&local_1b20,0);
      if (local_1c88 != local_1b20) {
        uVar10 = FUN_180662d40(local_15a0,&local_1c88);
        FUN_1805a5a40(param_7,uVar10);
        FUN_180485450(local_15a0);
      }
    }
  }
  uVar10 = FUN_1807e3f30(local_1528,local_1580);
  cVar5 = FUN_18093c400(uVar10);
  FUN_180485450(local_1580);
  if (cVar5 != '\0') {
    FUN_1805c0220("LicenseD\'s cert is no longer valid");
    lVar12 = FUN_1805c0260();
    local_1c18[0] = 0xe14;
    local_1b18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_1b18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_1c18);
  }
  local_19b8 = local_14e8;
  uStack_19b0 = uStack_14e0;
  local_19a8 = local_14d8;
  uStack_19a0 = uStack_14d0;
  local_1998 = local_14c8;
  uStack_1990 = uStack_14c0;
  local_1988 = local_14b8;
  uStack_1980 = uStack_14b0;
  local_1978 = local_14a8;
  uStack_1970 = uStack_14a0;
  local_1968 = local_1498;
  uStack_1964 = uStack_1494;
  uStack_1960 = uStack_1490;
  uStack_195c = uStack_148c;
  local_1958 = local_1488;
  uStack_1954 = uStack_1484;
  uStack_1950 = uStack_1480;
  uStack_194c = uStack_147c;
  uVar9 = (uint)(local_14f8 >> 0x20);
  if (((((uVar9 & 0x800028) != 0x800028) || ((local_14f8 >> 0x20 & 0x10) != 0)) ||
      ((uVar9 & 0x80003f) != 0x80002a)) || (((uStack_14f0 & 0x800) == 0 || ((byte)local_14f8 < 2))))
  {
    lVar12 = FUN_1805c0220(
                          "Bad privileges (Privilege: 0x%08X, MorePrivilege: 0x%08X) for a LicenseD certificate"
                          );
    lVar16 = FUN_1805c0260();
    FUN_18060e760(*(undefined8 *)(lVar12 + 8),auStack_19c4);
    FUN_18060e760(*(undefined8 *)(lVar12 + 8),auStack_19c0);
    local_1c10[0] = 0xe28;
    local_1b10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar16 + 8),&local_1b10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_1c10);
  }
  local_1718 = 0;
  local_1710 = 0xf;
  local_1728 = 0;
  local_16f8 = 0;
  local_16f0 = 0xf;
  local_1708 = '\0';
  FUN_1805a6cb0(&local_1708,"LicenseD ",9);
  FUN_1807e1d40(local_1528,&local_1728);
  _Size = local_16f8;
  uVar4 = local_1718;
  _Buf2 = &local_1708;
  if (0xf < local_16f0) {
    _Buf2 = (char *)CONCAT71(uStack_1707,local_1708);
  }
  puVar18 = (undefined1 *)CONCAT71(uStack_1727,local_1728);
  puVar19 = &local_1728;
  if (0xf < local_1710) {
    puVar19 = puVar18;
  }
  if (local_16f8 <= local_1718) {
    if (local_16f8 == 0) {
LAB_1806b0c88:
      local_1608 = 0;
      local_1600 = 0xf;
      local_1618[0] = 0;
      if (uVar4 < _Size) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69e0();
      }
      local_1b00 = uVar4 - _Size;
      puVar19 = &local_1728;
      if (0xf < local_1710) {
        puVar19 = puVar18;
      }
      local_1af8 = local_1b00;
      FUN_1805a6cb0(local_1618,puVar19 + _Size,local_1b00);
      iVar7 = FUN_18060c070(local_1618);
      if (iVar7 != (int)local_1640) {
        FUN_1805c0220(
                     "The LicenseD service version in the cert does not match the service version on the openEncryptedChannel function"
                     );
        lVar12 = FUN_1805c0260();
        local_1c00[0] = 0xe3e;
        local_1af0[0] =
             "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),local_1af0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar10,local_1c00);
      }
      FUN_1807dfee0(local_1528,local_1750 & 0xffffffff,local_1ac0,local_1268);
      local_1a48 = 0;
      uStack_1a40 = 0;
      local_1a38 = 0;
      FUN_180682a40(&local_16e8,&local_17a8,&local_1a48,4);
      uVar8 = 0x20;
      if (local_1678._4_4_ == 0) {
        uVar8 = FUN_180741570(local_928);
      }
      else if (local_1678._4_4_ != 2) {
        lVar12 = FUN_1805c0220("Hash truncation method %d is not supported");
        FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),(longlong)&local_1678 + 4);
      }
      FUN_180610750(local_1928,local_1750._4_4_);
      FUN_180616fa0(local_1928,&local_1a48);
      (**(code **)(local_1928[0] + 0x40))(local_1928,uVar8,0,local_1560);
      local_1ca8 = (void **)&local_1658;
      cVar5 = FUN_180746170(local_928,local_1268,local_1560,&local_1670);
      if (cVar5 == '\0') {
        FUN_1805c0220("Bad signature on openEncryptedChannel command");
        lVar12 = FUN_1805c0260();
        local_1bf0[0] = 0xeb1;
        local_1ae0 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_1ae0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar10,local_1bf0);
      }
      uVar9 = (int)local_1668 - (int)local_1670;
      if (uVar6 < uVar9) {
        uVar9 = uVar6;
      }
      if (uVar9 != 0) {
        FUN_180620470(local_1c68,local_1670,uVar9);
      }
      uVar9 = (int)uStack_1650 - (int)local_1658;
      if (uVar6 < uVar9) {
        uVar9 = uVar6;
      }
      if (uVar9 != 0) {
        FUN_180620470(local_1c68,local_1658,uVar9);
      }
      local_1ca8 = &local_1c68;
      (**(code **)((longlong)*local_1b88 + 0x10))(local_1b88,local_1c90,1,0);
      memset(local_1c68,0,_Size_00);
      FUN_1805b45f0(local_19e8,local_1ad8);
      FUN_180644560(local_1ad0 + 0x48,&local_1bc8);
      FUN_1805b7220(local_19e8);
      FUN_1806120b0(local_1928);
      FUN_180575ed0(&local_1a48);
      FUN_180485450(local_1618);
      FUN_180485450(&local_1708);
      FUN_180485450(&local_1728);
      FUN_1807dc8a0(local_1528);
      FUN_180575ed0(&local_1ba8);
      FUN_180575ed0(&local_1a60);
      FUN_180575ed0(&local_1a30);
      FUN_1805a4e80(&local_1bc8);
      FUN_180575ed0(&local_1c68);
      FUN_1809383a0(local_11f8);
      FUN_18073a080(local_928);
      FUN_18067c7b0(&local_16e8);
      FUN_18067c6a0(&local_17a8);
    }
    lVar12 = local_1718 - local_16f8;
    puVar18 = memchr(puVar19,(int)*_Buf2,lVar12 + 1);
    while (puVar18 != (undefined1 *)0x0) {
      iVar7 = memcmp(puVar18,_Buf2,_Size);
      if (iVar7 == 0) {
        if (puVar18 == puVar19) {
          puVar18 = (undefined1 *)CONCAT71(uStack_1727,local_1728);
          goto LAB_1806b0c88;
        }
        break;
      }
      puVar18 = memchr(puVar18 + 1,(int)*_Buf2,
                       (size_t)(puVar19 + ((lVar12 + 1) - (longlong)(puVar18 + 1))));
    }
  }
  lVar12 = FUN_1805c0220(
                        "\"LicenseD \" is not at the beginning of the cert\'s BusinessCategory (Actual: %s)"
                        );
  lVar16 = FUN_1805c0260();
  FUN_1805b2240(*(undefined8 *)(lVar12 + 8),&local_1728);
  local_1c08[0] = 0xe34;
  local_1b08 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar16 + 8),&local_1b08);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar10,local_1c08);
}



############ FUN_ 1805a0a80 size=93 ############

undefined8 * FUN_1805a0a80(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<boost::io::basic_altstringbuf<char,std::char_traits<char>,std::allocator<char>_>*___ptr64,boost::io::basic_oaltstringstream<char,std::char_traits<char>,std::allocator<char>_>::No_Op>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805a14a0 size=313 ############

undefined8 * FUN_1805a14a0(undefined8 *param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  void *_Src;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  void *pvVar7;
  
  lVar1 = param_1[2];
  if (0x7fffffffffffffffU - lVar1 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a6980();
  }
  uVar2 = param_1[3];
  uVar4 = lVar1 + param_2 | 0xf;
  uVar6 = 0x7fffffffffffffff;
  if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) &&
     (uVar5 = (uVar2 >> 1) + uVar2, uVar6 = uVar4, uVar4 < uVar5)) {
    uVar6 = uVar5;
  }
  uVar4 = uVar6 + 1;
  if (uVar4 < 0x1000) {
    if (uVar4 == 0) {
      pvVar7 = (void *)0x0;
    }
    else {
      pvVar7 = (void *)FUN_1811316e0(uVar4);
    }
  }
  else {
    uVar5 = uVar6 + 0x28;
    if (uVar5 <= uVar4) {
      uVar5 = 0xffffffffffffffff;
    }
    lVar3 = FUN_1811316e0(uVar5);
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    pvVar7 = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)pvVar7 - 8) = lVar3;
  }
  param_1[2] = lVar1 + param_2;
  param_1[3] = uVar6;
  if (uVar2 < 0x10) {
    memcpy(pvVar7,param_1,lVar1 + 1U);
    *param_1 = pvVar7;
    return param_1;
  }
  _Src = (void *)*param_1;
  memcpy(pvVar7,_Src,lVar1 + 1U);
  pvVar7 = _Src;
  if ((0xfff < uVar2 + 1) &&
     (pvVar7 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 1805a48c0 size=147 ############

undefined8 *
FUN_1805a48c0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  *param_1 = pace::PaceFormatter::vftable;
  lVar2 = FUN_1811316e0(0x108);
  if (lVar2 == 0) {
    lVar2 = 0;
  }
  else {
    lVar2 = FUN_1805a3f20(lVar2,param_2);
  }
  plVar1 = param_1 + 1;
  *plVar1 = lVar2;
  FUN_1805a0ae0(param_1 + 2,lVar2);
  FUN_1805ae620(plVar1,lVar2,lVar2,param_4,uVar3);
  *(undefined1 *)(*plVar1 + 0x68) = 0;
  return param_1;
}



############ FUN_ 1805a0ae0 size=97 ############

undefined8 * FUN_1805a0ae0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<boost::basic_format<char,std::char_traits<char>,std::allocator<char>_>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805a15e0 size=378 ############

undefined8 *
FUN_1805a15e0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,size_t param_4,char param_5)

{
  size_t _Size;
  ulonglong uVar1;
  void *_Src;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  void *pvVar6;
  
  _Size = param_1[2];
  if (0x7fffffffffffffff - _Size < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a6980();
  }
  uVar1 = param_1[3];
  uVar3 = _Size + param_2 | 0xf;
  uVar5 = 0x7fffffffffffffff;
  if (((uVar3 < 0x8000000000000000) && (uVar1 <= 0x7fffffffffffffff - (uVar1 >> 1))) &&
     (uVar4 = (uVar1 >> 1) + uVar1, uVar5 = uVar3, uVar3 < uVar4)) {
    uVar5 = uVar4;
  }
  uVar3 = uVar5 + 1;
  if (uVar3 < 0x1000) {
    if (uVar3 == 0) {
      pvVar6 = (void *)0x0;
    }
    else {
      pvVar6 = (void *)FUN_1811316e0(uVar3);
    }
  }
  else {
    uVar4 = uVar5 + 0x28;
    if (uVar4 <= uVar3) {
      uVar4 = 0xffffffffffffffff;
    }
    lVar2 = FUN_1811316e0(uVar4);
    if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    pvVar6 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)pvVar6 - 8) = lVar2;
  }
  param_1[2] = _Size + param_2;
  param_1[3] = uVar5;
  if (uVar1 < 0x10) {
    memcpy(pvVar6,param_1,_Size);
    memset((void *)((longlong)pvVar6 + _Size),(int)param_5,param_4);
    *(undefined1 *)((longlong)((longlong)pvVar6 + _Size) + param_4) = 0;
    *param_1 = pvVar6;
    return param_1;
  }
  _Src = (void *)*param_1;
  memcpy(pvVar6,_Src,_Size);
  memset((void *)((longlong)pvVar6 + _Size),(int)param_5,param_4);
  *(undefined1 *)((longlong)((longlong)pvVar6 + _Size) + param_4) = 0;
  pvVar6 = _Src;
  if ((0xfff < uVar1 + 1) &&
     (pvVar6 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 1805a6a00 size=116 ############

void FUN_1805a6a00(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x90;
  if (param_2 < 0x1c71c71c71c71c8) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805a1150 size=450 ############

undefined8 *
FUN_1805a1150(undefined8 *param_1,ulonglong param_2,undefined8 param_3,size_t param_4,
             longlong param_5,void *param_6,size_t param_7)

{
  longlong lVar1;
  ulonglong uVar2;
  void *_Src;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  void *pvVar7;
  
  lVar1 = param_1[2];
  if (0x7fffffffffffffffU - lVar1 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a6980();
  }
  uVar2 = param_1[3];
  uVar4 = lVar1 + param_2 | 0xf;
  uVar6 = 0x7fffffffffffffff;
  if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) &&
     (uVar5 = (uVar2 >> 1) + uVar2, uVar6 = uVar4, uVar4 < uVar5)) {
    uVar6 = uVar5;
  }
  uVar4 = uVar6 + 1;
  if (uVar4 < 0x1000) {
    if (uVar4 == 0) {
      pvVar7 = (void *)0x0;
    }
    else {
      pvVar7 = (void *)FUN_1811316e0(uVar4);
    }
  }
  else {
    uVar5 = uVar6 + 0x28;
    if (uVar5 <= uVar4) {
      uVar5 = 0xffffffffffffffff;
    }
    lVar3 = FUN_1811316e0(uVar5);
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    pvVar7 = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)pvVar7 - 8) = lVar3;
  }
  param_1[2] = lVar1 + param_2;
  param_1[3] = uVar6;
  if (uVar2 < 0x10) {
    memcpy(pvVar7,param_1,param_4);
    memcpy((void *)((longlong)pvVar7 + param_4),param_6,param_7);
    memcpy((void *)((longlong)((longlong)pvVar7 + param_4) + param_7),
           (void *)(param_5 + param_4 + (longlong)param_1),((lVar1 - param_4) - param_5) + 1);
    *param_1 = pvVar7;
    return param_1;
  }
  _Src = (void *)*param_1;
  memcpy(pvVar7,_Src,param_4);
  memcpy((void *)((longlong)pvVar7 + param_4),param_6,param_7);
  memcpy((void *)((longlong)((longlong)pvVar7 + param_4) + param_7),
         (void *)((longlong)_Src + param_5 + param_4),((lVar1 - param_4) - param_5) + 1);
  pvVar7 = _Src;
  if ((0xfff < uVar2 + 1) &&
     (pvVar7 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 1805a19c0 size=499 ############

void FUN_1805a19c0(longlong *param_1,ulonglong param_2,longlong param_3)

{
  undefined4 *puVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined4 *puVar7;
  void *pvVar8;
  ulonglong uVar9;
  
  puVar7 = (undefined4 *)param_1[1];
  lVar4 = *param_1;
  uVar9 = (longlong)puVar7 - lVar4 >> 2;
  uVar5 = param_1[2] - lVar4 >> 2;
  if (param_2 <= uVar5) {
    if (uVar9 < param_2) {
      puVar1 = *(undefined4 **)(param_3 + 8);
      for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
        *puVar7 = *puVar1;
        puVar7 = puVar7 + 1;
      }
      param_1[1] = (longlong)puVar7;
      return;
    }
    if (param_2 != uVar9) {
      param_1[1] = lVar4 + param_2 * 4;
    }
    return;
  }
  if (0x3fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar3 = param_2;
  if ((uVar5 <= 0x3fffffffffffffff - (uVar5 >> 1)) &&
     (uVar3 = (uVar5 >> 1) + uVar5, uVar3 < param_2)) {
    uVar3 = param_2;
  }
  uVar5 = uVar3 * 4;
  if (uVar3 < 0x4000000000000000) {
    uVar3 = uVar5;
    if (uVar5 < 0x1000) {
      if (uVar5 == 0) {
        pvVar8 = (void *)0x0;
      }
      else {
        pvVar8 = (void *)FUN_1811316e0(uVar5);
      }
      goto LAB_1805a1ab0;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar6 = uVar3 + 0x27;
  if (uVar6 <= uVar3) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar6);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar8 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar8 - 8) = lVar4;
LAB_1805a1ab0:
  puVar7 = (undefined4 *)((longlong)pvVar8 + uVar9 * 4);
  puVar1 = *(undefined4 **)(param_3 + 8);
  for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
    *puVar7 = *puVar1;
    puVar7 = puVar7 + 1;
  }
  memmove(pvVar8,(void *)*param_1,param_1[1] - *param_1);
  pvVar2 = (void *)*param_1;
  if (pvVar2 != (void *)0x0) {
    pvVar8 = pvVar2;
    if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffffcU)) &&
       (pvVar8 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar8);
  }
  *param_1 = (longlong)pvVar8;
  param_1[1] = (longlong)((longlong)pvVar8 + param_2 * 4);
  param_1[2] = (longlong)(uVar5 + (longlong)pvVar8);
  return;
}



############ FUN_ 1805c0220 size=64 ############

undefined8
FUN_1805c0220(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  lVar1 = FUN_1811316e0(0x18);
  if (lVar1 != 0) {
    uVar2 = FUN_1805a48c0(lVar1,param_1,param_3,param_4,uVar2);
    return uVar2;
  }
  return 0;
}



############ FUN_ 1805c0260 size=80 ############

undefined8 *
FUN_1805c0260(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 1805bc8b0 size=91 ############

ulonglong FUN_1805bc8b0(undefined8 param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  
  if (param_2 < 0x1000) {
    if (param_2 != 0) {
      uVar2 = FUN_1811316e0(param_2);
      return uVar2;
    }
    return 0;
  }
  uVar2 = param_2 + 0x27;
  if (uVar2 <= param_2) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar1 = FUN_1811316e0(uVar2);
  if (lVar1 != 0) {
    uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
    *(longlong *)(uVar2 - 8) = lVar1;
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805f1950 size=354 ############

_Facet_base * FUN_1805f1950(longlong param_1)

{
  longlong lVar1;
  _Facet_base *p_Var2;
  __uint64 _Var3;
  _Locimp *p_Var4;
  facet *this;
  undefined8 uVar5;
  char *pcVar6;
  _Facet_base *p_Var7;
  _Facet_base *p_Var8;
  _Lockit local_res10 [8];
  facet *local_res18;
  _Locinfo local_90 [104];
  
  p_Var7 = (_Facet_base *)0x0;
  std::_Lockit::_Lockit(local_res10,0);
  p_Var2 = DAT_18265f138;
  _Var3 = std::locale::id::operator_unsigned___int64((id *)id_exref);
  lVar1 = *(longlong *)(param_1 + 8);
  p_Var8 = p_Var7;
  if ((_Var3 < *(ulonglong *)(lVar1 + 0x18)) &&
     (p_Var8 = *(_Facet_base **)(*(longlong *)(lVar1 + 0x10) + _Var3 * 8),
     p_Var8 != (_Facet_base *)0x0)) goto LAB_1805f1a93;
  if (*(char *)(lVar1 + 0x24) == '\0') {
LAB_1805f19ce:
    if (p_Var8 != (_Facet_base *)0x0) goto LAB_1805f1a93;
  }
  else {
    p_Var4 = std::locale::_Getgloballocale();
    if (_Var3 < *(ulonglong *)(p_Var4 + 0x18)) {
      p_Var8 = *(_Facet_base **)(*(longlong *)(p_Var4 + 0x10) + _Var3 * 8);
      goto LAB_1805f19ce;
    }
  }
  p_Var8 = p_Var2;
  if (p_Var2 == (_Facet_base *)0x0) {
    this = (facet *)FUN_1811316e0(0x30);
    p_Var8 = p_Var7;
    local_res18 = this;
    if (this != (facet *)0x0) {
      lVar1 = *(longlong *)(param_1 + 8);
      if (lVar1 == 0) {
        pcVar6 = "";
      }
      else {
        pcVar6 = *(char **)(lVar1 + 0x28);
        if (pcVar6 == (char *)0x0) {
          pcVar6 = (char *)(lVar1 + 0x30);
        }
      }
      uVar5 = std::_Locinfo::_Locinfo(local_90,pcVar6);
      p_Var7 = (_Facet_base *)0x1;
      std::locale::facet::facet(this,0);
      *(undefined ***)this = std::numpunct<char>::vftable;
      FUN_1805f2b30(this,uVar5,1);
      p_Var8 = (_Facet_base *)this;
    }
    if (p_Var7 != (_Facet_base *)0x0) {
      std::_Locinfo::~_Locinfo(local_90);
    }
    std::_Facet_Register(p_Var8);
    (**(code **)(*(longlong *)p_Var8 + 8))(p_Var8);
    DAT_18265f138 = p_Var8;
  }
LAB_1805f1a93:
  std::_Lockit::~_Lockit(local_res10);
  return p_Var8;
}



############ FUN_ 18063f370 size=447 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18063f370(longlong param_1,ulonglong param_2,undefined2 param_3,undefined8 param_4,
                  undefined8 *param_5)

{
  uint uVar1;
  longlong lVar2;
  char *pcVar3;
  undefined8 uVar4;
  void *_Memory;
  ulonglong _Size;
  ulonglong uVar5;
  undefined1 auStack_c8 [32];
  void **local_a8;
  int local_98 [2];
  char *local_90;
  void *local_88;
  undefined8 uStack_80;
  longlong local_78;
  undefined8 local_70;
  undefined1 local_68 [48];
  ulonglong local_38;
  
  local_70 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  *(undefined1 *)(param_1 + 0x210) = 0;
  local_88 = (void *)0x0;
  uStack_80 = 0;
  local_78 = 0;
  local_98[0] = CONCAT22(local_98[0]._2_2_,param_3);
  local_a8 = &local_88;
  FUN_18063f7c0(0,param_2,local_98);
  uVar1 = FUN_1807002d0(param_2 & 0xffffffff);
  uVar5 = (ulonglong)uVar1;
  _Size = param_5[1] - (longlong)*param_5;
  if (uVar5 < _Size) {
    _Size = uVar5;
  }
  memcpy(local_68,(void *)*param_5,_Size);
  memset(local_68 + _Size,0,uVar5 - _Size);
  local_a8 = (void **)local_68;
  local_98[0] = FUN_180700350(param_2 & 0xffffffff,param_1 + 8,(undefined2)local_98[0],local_88);
  if (local_98[0] != 0) {
    local_90 = (char *)FUN_1811316e0(0x18);
    if (local_90 == (char *)0x0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(local_90,"[%d] ENCR_Init error");
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    local_90 = pcVar3;
    if (pcVar3 == (char *)0x0) {
      pcVar3 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),local_98);
    local_98[0] = 0xef;
    local_90 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_98);
  }
  *(undefined1 *)(param_1 + 0x210) = 1;
  if (local_88 == (void *)0x0) {
  }
  _Memory = local_88;
  if ((0xfff < (ulonglong)(local_78 - (longlong)local_88)) &&
     (_Memory = *(void **)((longlong)local_88 + -8),
     0x1f < (ulonglong)((longlong)local_88 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18063f7c0 size=480 ############

void FUN_18063f7c0(longlong param_1,undefined4 param_2,short *param_3,longlong param_4,
                  undefined8 param_5)

{
  short sVar1;
  undefined1 uVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  undefined8 *local_res8;
  undefined4 local_res10 [2];
  char *local_res18;
  undefined8 *local_38;
  undefined8 *puStack_30;
  
  *(short *)(param_1 + 0x238) = *param_3;
  local_res10[0] = param_2;
  iVar3 = FUN_180700270(param_2);
  uVar2 = (undefined1)param_5;
  *(int *)(param_1 + 0x234) = iVar3;
  puVar7 = (undefined8 *)0x0;
  if (iVar3 != 0) {
    sVar1 = *param_3;
    *(bool *)(param_1 + 0x211) = sVar1 == 2;
    if ((param_4 == 0) || (sVar1 == 2)) {
      ((undefined8 *)CONCAT71(param_5._1_7_,(undefined1)param_5))[1] =
           *(undefined8 *)CONCAT71(param_5._1_7_,(undefined1)param_5);
    }
    else {
      FUN_1805b9910(CONCAT71(param_5._1_7_,(undefined1)param_5),param_4);
    }
    local_38 = (undefined8 *)CONCAT71(param_5._1_7_,uVar2);
    param_5._0_1_ = 0;
    puStack_30 = &param_5;
    FUN_1805e1ee0(local_38,*(undefined4 *)(param_1 + 0x234),&local_38);
    if (*(char *)(param_1 + 0x211) != '\0') {
      *param_3 = 0;
      puVar7 = (undefined8 *)(param_1 + 0x218);
      if (param_4 == 0) {
        *(undefined8 *)(param_1 + 0x220) = *puVar7;
      }
      else {
        FUN_1805b9910(puVar7,param_4);
      }
      param_5._0_1_ = 0;
      puStack_30 = &param_5;
      local_38 = puVar7;
      FUN_1805e1ee0(puVar7,*(undefined4 *)(param_1 + 0x234),&local_38);
      *(undefined4 *)(param_1 + 0x230) = 0;
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  puVar4 = puVar7;
  if (local_res8 != (undefined8 *)0x0) {
    puVar4 = (undefined8 *)
             FUN_1805a48c0(local_res8,
                           "The encryption Algorithm (ID = %d) is not supported by the Encryptor");
  }
  puVar5 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
    *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    puVar7 = puVar5;
  }
  FUN_18060e760(puVar4[1],local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x322);
  local_res18 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
  uVar6 = FUN_1805a21d0(puVar7[1],&local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar6,&local_res8);
}



############ FUN_ 18066b4e0 size=97 ############

undefined8 * FUN_18066b4e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Encryptor>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b810 size=874 ############

undefined8 *
FUN_18066b810(undefined8 *param_1,undefined8 param_2,undefined1 param_3,undefined4 param_4,
             int param_5)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  longlong *local_f8;
  longlong local_f0;
  longlong local_e8;
  undefined8 local_d8;
  longlong *plStack_d0;
  longlong local_c8 [2];
  undefined8 local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  longlong *plStack_a0;
  undefined8 local_98;
  longlong *plStack_90;
  undefined8 local_88;
  longlong *plStack_80;
  undefined8 local_78;
  longlong *plStack_70;
  undefined8 local_68;
  longlong *plStack_60;
  undefined8 local_58;
  undefined1 local_50 [40];
  
  local_58 = 0xfffffffffffffffe;
  uVar7 = 0;
  lVar5 = FUN_1811316e0(0xb0);
  uVar6 = uVar7;
  local_c8[0] = lVar5;
  if (lVar5 != 0) {
    uVar6 = FUN_1805a4070(local_50,param_2);
    uVar6 = FUN_180927880(lVar5,uVar6);
  }
  local_d8 = uVar6;
  FUN_18066b780(&plStack_d0,uVar6);
  FUN_1805ae620(&local_d8,uVar6,uVar6);
  lVar5 = __RTDynamicCast(local_d8,0,&apache::thrift::transport::TTransport::RTTI_Type_Descriptor,
                          &apache::thrift::transport::TAsioLocalSocket::RTTI_Type_Descriptor,0);
  local_f8 = plStack_d0;
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
    UNLOCK();
  }
  if (lVar5 == 0) {
    local_c8[0] = 0;
    FUN_18060c7a0(&local_f8,local_c8);
  }
  plVar1 = local_f8;
  FUN_18092b460(lVar5,param_5 * 1000);
  plVar4 = local_f8;
  if (plVar1 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar1 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_f8 + 8))(local_f8);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_f8 + 0x10))();
      }
    }
  }
  local_f0 = FUN_1811316e0(0x50);
  uVar6 = uVar7;
  if (local_f0 != 0) {
    local_98 = local_d8;
    plStack_90 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    uVar6 = FUN_180623170(local_f0,&local_98);
  }
  local_b8 = uVar6;
  FUN_1806230a0(&plStack_b0,uVar6);
  FUN_1805ae620(&local_b8,uVar6,uVar6);
  local_e8 = FUN_1811316e0(0x40);
  uVar6 = uVar7;
  if (local_e8 != 0) {
    local_88 = local_b8;
    plStack_80 = plStack_b0;
    if (plStack_b0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_b0 + 1) = (int)plStack_b0[1] + 1;
      UNLOCK();
    }
    uVar6 = FUN_1806222c0(local_e8,&local_88);
  }
  local_a8 = uVar6;
  FUN_180621590(&plStack_a0,uVar6);
  FUN_1805ae620(&local_a8,uVar6,uVar6);
  local_78 = local_b8;
  plStack_70 = plStack_b0;
  if (plStack_b0 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_b0 + 1) = (int)plStack_b0[1] + 1;
    UNLOCK();
  }
  FUN_1806233d0(&local_78,param_3,param_4,0);
  local_e8 = FUN_1811316e0(0x60);
  if (local_e8 != 0) {
    local_68 = local_a8;
    plStack_60 = plStack_a0;
    if (plStack_a0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_a0 + 1) = (int)plStack_a0[1] + 1;
      UNLOCK();
    }
    uVar7 = FUN_180674ad0(local_e8,&local_68,1);
  }
  *param_1 = uVar7;
  FUN_18066b470(param_1 + 1,uVar7);
  FUN_1805ae620(param_1,uVar7,uVar7);
  if (plStack_a0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_a0 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_a0 + 8))(plStack_a0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_a0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_a0 + 0x10))(plStack_a0);
      }
    }
  }
  if (plStack_b0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_b0 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_b0 + 8))(plStack_b0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_b0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_b0 + 0x10))(plStack_b0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
  return param_1;
}



############ FUN_ 180621590 size=96 ############

undefined8 * FUN_180621590(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<apache::thrift::protocol::TBinaryProtocol>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1806230a0 size=97 ############

undefined8 * FUN_1806230a0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<apache::thrift::transport::TBufferedTransport>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b470 size=97 ############

undefined8 * FUN_18066b470(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<pace::eden::thrift::authorize::AuthorizationFullClient>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b780 size=97 ############

undefined8 * FUN_18066b780(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<apache::thrift::transport::TAsioLocalSocket>::vftable
    ;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180671f40 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180671f40(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18079d9a0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 1805d5580 size=97 ############

undefined8 * FUN_1805d5580(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<apache::thrift::transport::TMemoryBuffer>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180673ff0 size=446 ############

void FUN_180673ff0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b4930(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1806acfc0 size=1156 ############

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

undefined * FUN_1806acfc0(void)

{
  undefined *puVar1;
  int iVar2;
  longlong lVar3;
  uint uVar4;
  undefined1 auStack_a8 [56];
  uint local_70;
  undefined1 *local_68;
  uint local_5c;
  undefined1 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  uVar4 = (uint)&stack0x00000000 & 0x1ff;
  iVar2 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_70 = (((iVar2 >> 1) - (iVar2 >> 3)) + iVar2 * 0x55555555 >> 0x1e) + 0x5b08U ^ 0x5798;
  uVar4 = (uint)&stack0x00000000 & 0xbff;
  uVar4 = (uVar4 * uVar4 * 0x10 + 4) % 0x13 | 0x1fb6f6b4;
  local_5c = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xd37e ^ 0xdaee;
  local_68 = (undefined1 *)FUN_1811316e0(0x20);
  puVar1 = PTR_s_____pipe_com_paceap_eden_license_18260be90;
  if (local_68 != (undefined1 *)0x0) {
    *(undefined8 *)(local_68 + 0x10) = 0;
    *(undefined8 *)(local_68 + 0x18) = 0xf;
    *local_68 = 0;
    lVar3 = -1;
    do {
      lVar3 = lVar3 + 1;
    } while (puVar1[lVar3] != '\0');
    local_58 = local_68;
    FUN_1805a6cb0(local_68);
  }
  return &DAT_1807e9958;
}



############ FUN_ 1806b91d0 size=2156 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806b91d0(undefined4 param_1,undefined8 *param_2,void **param_3,longlong *param_4,
                  uint param_5,longlong *param_6)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong *plVar9;
  ulonglong uVar10;
  void *_Memory;
  byte bVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  byte *pbVar14;
  byte *pbVar15;
  ulonglong uVar16;
  byte bVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  undefined1 auStack_228 [32];
  undefined1 local_208 [8];
  undefined4 local_200 [2];
  byte **local_1f8;
  undefined1 *puStack_1f0;
  undefined4 local_1e8 [2];
  undefined4 local_1e0 [6];
  uint local_1c8;
  undefined **local_1b0;
  void *local_1a8;
  undefined8 uStack_1a0;
  longlong local_198;
  undefined8 local_190;
  undefined1 local_188;
  undefined8 local_184;
  undefined1 local_17c;
  longlong *local_178;
  char *local_170;
  char *local_168 [4];
  ulonglong local_148;
  undefined8 local_140;
  longlong *local_138;
  longlong *local_130;
  undefined8 local_128;
  undefined8 local_120;
  byte **local_118;
  undefined1 *puStack_110;
  undefined **local_108;
  uint local_100;
  byte *local_f8;
  longlong lStack_f0;
  undefined8 local_e8;
  int local_e0;
  byte *local_d8;
  undefined8 uStack_d0;
  undefined8 local_c8;
  uint local_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined1 local_a8 [16];
  undefined8 local_98;
  undefined8 local_90;
  undefined1 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined4 local_60;
  undefined2 local_5c;
  undefined1 local_5a;
  ulonglong local_58;
  
  local_140 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_228;
  local_130 = param_6;
  local_108 = pace::eden::thrift::authorize::SendEncryptedCommandInput::vftable;
  local_100 = 0;
  local_f8 = (byte *)0x0;
  lStack_f0 = 0;
  local_e8 = 0;
  local_e0 = 0;
  local_d8 = (byte *)0x0;
  uStack_d0 = 0;
  local_c8 = 0;
  local_c0 = 0;
  local_b8 = 0;
  uStack_b0 = 0;
  local_98 = 0;
  local_90 = 0xf;
  local_a8[0] = 0;
  local_200[0] = param_1;
  local_178 = param_4;
  local_138 = param_4;
  FUN_1805a6cb0(local_a8,&DAT_181baf991,0);
  local_88 = 0;
  local_80 = 0;
  local_78 = 0;
  uStack_70 = 0;
  local_68 = 4;
  local_60 = 0;
  local_5c = 0;
  local_5a = 0;
  local_1b0 = pace::eden::thrift::authorize::SendEncryptedCommandReturn::vftable;
  local_1a8 = (void *)0x0;
  uStack_1a0 = 0;
  local_198 = 0;
  local_190 = 0;
  local_188 = 0;
  local_184 = 4;
  local_17c = 0;
  if (*param_6 == 0) {
    local_1f8 = (byte **)FUN_1811316e0(0x18);
    if (local_1f8 != (byte **)0x0) {
      FUN_1805a48c0(local_1f8,
                    "Channel encryptor not provided to sendEncryptedCommand_AuthorizationServer");
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    local_1f8 = (byte **)puVar5;
    if (puVar5 == (undefined8 *)0x0) {
      puVar5 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_1e8[0] = 0x187c;
    local_170 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar6 = FUN_1805a21d0(puVar5[1],&local_170);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_1e8);
  }
  uVar4 = (**(code **)(*(longlong *)*param_6 + 0x48))();
  uVar18 = (ulonglong)uVar4;
  if (uVar4 == 0) {
    local_1f8 = (byte **)FUN_1811316e0(0x18);
    if (local_1f8 != (byte **)0x0) {
      FUN_1805a48c0(local_1f8,"Channel encryptor not setup properly. Blocksize is zero.");
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    local_1f8 = (byte **)puVar5;
    if (puVar5 == (undefined8 *)0x0) {
      puVar5 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_1e0[0] = 0x1884;
    local_168[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar6 = FUN_1805a21d0(puVar5[1],local_168);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_1e0);
  }
  local_e0 = (int)param_2[1] - (int)*param_2;
  if (local_e0 < 1) {
    local_1f8 = (byte **)FUN_1811316e0(0x18);
    if (local_1f8 == (byte **)0x0) {
      lVar7 = 0;
    }
    else {
      lVar7 = FUN_1805a48c0(local_1f8,
                            "The command %d provided to sendEncryptedCommand_AuthorizationServer has no data"
                           );
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    local_1f8 = (byte **)puVar5;
    if (puVar5 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar7 + 8),local_200);
  }
  local_128 = param_2[1];
  local_120 = *param_2;
  FUN_1805e1990(&local_f8,local_120,local_128,local_208[0]);
  local_208[0] = 0x5a;
  local_1f8 = &local_f8;
  puStack_1f0 = local_208;
  local_118 = local_1f8;
  puStack_110 = puStack_1f0;
  FUN_1805e1ee0(&local_f8,
                (uVar18 - ((longlong)local_e0 + 4U) % uVar18) % uVar18 + (longlong)local_e0 + 4,
                &local_118);
  lVar7 = lStack_f0 - (longlong)local_f8;
  FUN_180621500(param_1,local_f8 + lVar7 + -4);
  FUN_1805b1330(&local_d8,uVar18,&local_d8);
  FUN_180605430(local_d8,uVar18);
  uVar19 = 0xffffffff;
  uVar13 = 0xffffffff;
  uVar8 = 0;
  uVar10 = uVar8;
  uVar12 = uVar8;
  do {
    if ((uVar13 & 1) != 0) {
      uVar10 = (ulonglong)((uint)uVar10 | 1 << (0x1fU - (int)uVar12 & 0x1f));
    }
    uVar12 = uVar12 + 1;
    uVar13 = uVar13 >> 1;
  } while (uVar12 < 0x20);
  if (DAT_18265fac0 == '\0') {
    bVar17 = 0;
    do {
      bVar11 = 0x80;
      uVar13 = uVar8;
      do {
        uVar4 = (uint)uVar13;
        if ((bVar17 & bVar11) != 0) {
          uVar4 = uVar4 ^ 0x80000000;
        }
        if ((int)uVar4 < 0) {
          uVar4 = uVar4 * 2 ^ 0x4c11db7;
        }
        else {
          uVar4 = uVar4 * 2;
        }
        uVar13 = (ulonglong)uVar4;
        bVar11 = bVar11 >> 1;
        uVar12 = uVar8;
        uVar16 = uVar8;
      } while (bVar11 != 0);
      do {
        if ((uVar13 & 1) != 0) {
          uVar16 = (ulonglong)((uint)uVar16 | 1 << (0x1fU - (int)uVar12 & 0x1f));
        }
        uVar12 = uVar12 + 1;
        uVar13 = uVar13 >> 1;
      } while (uVar12 < 0x20);
      uVar12 = 0;
      uVar13 = uVar8;
      bVar11 = bVar17;
      do {
        if ((bVar11 & 1) != 0) {
          uVar12 = (ulonglong)((uint)uVar12 & 0xff | 1 << (7U - (int)uVar13 & 0x1f));
        }
        uVar13 = uVar13 + 1;
        bVar11 = bVar11 >> 1;
      } while (uVar13 < 8);
      *(int *)(&DAT_18265f6c0 + (uVar12 & 0xff) * 4) = (int)uVar16;
      bVar17 = bVar17 + 1;
    } while (bVar17 != 0);
    DAT_18265fac0 = '\x01';
  }
  uVar13 = (longlong)(local_d8 + uVar18) - (longlong)local_d8;
  if (local_d8 + uVar18 < local_d8) {
    uVar13 = uVar8;
  }
  if (uVar13 != 0) {
    pbVar14 = local_d8;
    do {
      uVar10 = (ulonglong)
               (*(uint *)(&DAT_18265f6c0 + (ulonglong)(byte)((byte)uVar10 ^ *pbVar14) * 4) ^
               (uint)(uVar10 >> 8));
      pbVar14 = pbVar14 + 1;
    } while ((ulonglong)((longlong)pbVar14 - (longlong)local_d8) < uVar13);
  }
  local_c0 = (uint)uVar10;
  uVar13 = (longlong)(local_f8 + lVar7) - (longlong)local_f8;
  if (local_f8 + lVar7 < local_f8) {
    uVar13 = uVar8;
  }
  if (uVar13 != 0) {
    pbVar14 = local_f8;
    do {
      local_c0 = *(uint *)(&DAT_18265f6c0 + (ulonglong)(byte)((byte)uVar10 ^ *pbVar14) * 4) ^
                 (uint)(uVar10 >> 8);
      uVar10 = (ulonglong)local_c0;
      pbVar14 = pbVar14 + 1;
    } while ((ulonglong)((longlong)pbVar14 - (longlong)local_f8) < uVar13);
  }
  local_c0 = ~local_c0;
  (**(code **)(*(longlong *)*param_6 + 0x20))((longlong *)*param_6,1,&local_d8);
  (**(code **)(*(longlong *)*param_6 + 0x40))((longlong *)*param_6,&local_f8);
  local_100 = FUN_180620450(local_d8 + 0xb);
  local_100 = local_100 ^ param_5;
  plVar9 = (longlong *)((longlong)*(int *)(*(longlong *)*local_178 + 8) + *local_178);
  (**(code **)(*plVar9 + 0x128))(plVar9,&local_1b0,&local_108,4);
  if (param_3 != &local_1a8) {
    FUN_1805e1990(param_3,local_1a8,uStack_1a0);
  }
  uVar13 = (longlong)param_3[1] - (longlong)*param_3;
  local_148 = uVar13;
  if (uVar13 != 0) {
    (**(code **)(*(longlong *)*param_6 + 0x30))((longlong *)*param_6,param_3);
    uVar10 = uVar8;
    uVar12 = uVar8;
    do {
      if ((uVar19 & 1) != 0) {
        uVar12 = (ulonglong)((uint)uVar12 | 1 << (0x1fU - (int)uVar10 & 0x1f));
      }
      uVar10 = uVar10 + 1;
      uVar19 = uVar19 >> 1;
    } while (uVar10 < 0x20);
    uVar19 = (longlong)(local_d8 + uVar18) - (longlong)local_d8;
    if (local_d8 + uVar18 < local_d8) {
      uVar19 = uVar8;
    }
    if (uVar19 != 0) {
      pbVar14 = local_d8;
      do {
        uVar12 = (ulonglong)
                 (*(uint *)(&DAT_18265f6c0 + (ulonglong)(byte)((byte)uVar12 ^ *pbVar14) * 4) ^
                 (uint)(uVar12 >> 8));
        pbVar14 = pbVar14 + 1;
      } while ((ulonglong)((longlong)pbVar14 - (longlong)local_d8) < uVar19);
    }
    local_1c8 = (uint)uVar12;
    pbVar14 = *param_3;
    uVar19 = (longlong)(pbVar14 + uVar13) - (longlong)pbVar14;
    if (pbVar14 + uVar13 < pbVar14) {
      uVar19 = uVar8;
    }
    if (uVar19 != 0) {
      pbVar15 = pbVar14;
      do {
        local_1c8 = *(uint *)(&DAT_18265f6c0 + (ulonglong)(byte)((byte)uVar12 ^ *pbVar15) * 4) ^
                    (uint)(uVar12 >> 8);
        uVar12 = (ulonglong)local_1c8;
        pbVar15 = pbVar15 + 1;
      } while ((ulonglong)((longlong)pbVar15 - (longlong)pbVar14) < uVar19);
    }
    local_1c8 = ~local_1c8;
    if (local_1c8 != local_190._4_4_) {
      local_1f8 = (byte **)FUN_1811316e0(0x18);
      if (local_1f8 != (byte **)0x0) {
        uVar8 = FUN_1805a48c0(local_1f8,
                              "The result for command %d has a bad checksum (calculated: 0x%08X, provided: 0x%08X)"
                             );
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      local_1f8 = (byte **)puVar5;
      if (puVar5 != (undefined8 *)0x0) {
        FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
        *puVar5 = pace::PaceLocationInfoFormatter::vftable;
      }
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(uVar8 + 8),local_200);
    }
    uVar19 = (ulonglong)(int)local_190;
    if (((uVar19 == 0) || (uVar13 < uVar19)) || (uVar19 <= uVar13 - uVar18)) {
      local_1f8 = (byte **)FUN_1811316e0(0x18);
      if (local_1f8 == (byte **)0x0) {
        lVar7 = 0;
      }
      else {
        lVar7 = FUN_1805a48c0(local_1f8,
                              "The result for command %d has a bad size of %d (encrypted size: %d)")
        ;
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      local_1f8 = (byte **)puVar5;
      if (puVar5 != (undefined8 *)0x0) {
        FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
        *puVar5 = pace::PaceLocationInfoFormatter::vftable;
      }
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar7 + 8),local_200);
    }
    FUN_1805b0f50(param_3,uVar19,param_3);
    local_1b0 = pace::eden::thrift::authorize::SendEncryptedCommandReturn::vftable;
    if (local_1a8 == (void *)0x0) {
      FUN_18067d1b0(&local_108);
      plVar9 = (longlong *)local_178[1];
      if (plVar9 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar9 + 1;
        lVar7 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          (**(code **)(*plVar9 + 8))(plVar9);
          LOCK();
          piVar2 = (int *)((longlong)plVar9 + 0xc);
          iVar3 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)(*plVar9 + 0x10))(plVar9);
          }
        }
      }
      plVar9 = (longlong *)param_6[1];
      if (plVar9 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar9 + 1;
        lVar7 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          (**(code **)(*plVar9 + 8))(plVar9);
          LOCK();
          piVar2 = (int *)((longlong)plVar9 + 0xc);
          iVar3 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)(*plVar9 + 0x10))(plVar9);
          }
        }
      }
    }
    _Memory = local_1a8;
    if ((0xfff < (ulonglong)(local_198 - (longlong)local_1a8)) &&
       (_Memory = *(void **)((longlong)local_1a8 + -8),
       0x1f < (ulonglong)((longlong)local_1a8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_1f8 = (byte **)FUN_1811316e0(0x18);
  if (local_1f8 != (byte **)0x0) {
    uVar8 = FUN_1805a48c0(local_1f8,"The result for command %d has no result data");
  }
  puVar5 = (undefined8 *)FUN_1811316e0(0x18);
  local_1f8 = (byte **)puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
    *puVar5 = pace::PaceLocationInfoFormatter::vftable;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(uVar8 + 8),local_200);
}



############ FUN_ 1806054c0 size=717 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018060578a) overlaps instruction at (ram,0x000180605789)
    */
/* WARNING: Removing unreachable block (ram,0x0001806057f8) */
/* WARNING: Removing unreachable block (ram,0x000180605520) */
/* WARNING: Removing unreachable block (ram,0x000180605788) */

void FUN_1806054c0(void)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong *plVar3;
  char cVar4;
  uint uVar5;
  int unaff_retaddr;
  undefined1 auStack_a8 [32];
  undefined4 local_88;
  undefined *local_80;
  undefined *local_78;
  longlong local_70;
  undefined4 local_5c;
  uint local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_5c = 0xea0;
  uVar5 = (uint)&stack0x00000000 & 0x32ff;
  lVar2 = 0;
  uVar5 = uVar5 * uVar5 + 1;
  local_58 = (0x5062U - (0 >> ((char)uVar5 + (char)(uVar5 / 7) * -7 & 0x1fU)) | 0x5c6a) ^ 0x5c0a;
  local_70 = 0;
  local_78 = &DAT_180605a24;
  local_80 = &DAT_1806454dc;
  local_88 = 0x811c9dc5;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_70 = FUN_1811316e0(0x10,0x180000000);
  if (local_70 != 0) {
    lVar2 = FUN_180600e30(local_70);
  }
  plVar3 = (longlong *)FUN_180608a30();
  puVar1 = (undefined8 *)*plVar3;
  *plVar3 = lVar2;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    cVar4 = (char)uVar5;
  } while (uVar5 != 0);
                    /* WARNING: Call to offcut address within same function */
  lVar2 = func_0x00018060582c();
  *(char *)(lVar2 + 5) = *(char *)(lVar2 + 5) - cVar4;
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180608a30 size=408 ############

undefined8 *
FUN_180608a30(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  uint uVar4;
  undefined8 *puVar5;
  longlong lVar6;
  bool bVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  lVar6 = (longlong)&DAT_18265f298 +
          (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18265f298),8) >> 5) * -0x29;
  puVar5 = (undefined8 *)0x0;
  LOCK();
  iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
  *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
  UNLOCK();
  puVar2 = puVar5;
  puVar3 = DAT_18265f298;
  while (DAT_18265f298 = puVar3, iVar1 != 0) {
    uVar4 = (uint)puVar2;
    if ((3 < uVar4) && (0xf < uVar4)) {
      Sleep((uint)(0x1f < uVar4));
    }
    puVar2 = (undefined8 *)(ulonglong)(uVar4 + 1);
    LOCK();
    iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
    *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
    UNLOCK();
    puVar3 = DAT_18265f298;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
  if (puVar3 == (undefined8 *)0x0) {
    LOCK();
    bVar7 = DAT_18265f2a0 == 0;
    if (bVar7) {
      DAT_18265f2a0 = 1;
    }
    UNLOCK();
    while (!bVar7) {
      LOCK();
      bVar7 = DAT_18265f2a0 == 0;
      if (bVar7) {
        DAT_18265f2a0 = 1;
      }
      UNLOCK();
    }
    LOCK();
    iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
    *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
    UNLOCK();
    puVar2 = puVar5;
    puVar3 = DAT_18265f298;
    while (DAT_18265f298 = puVar3, iVar1 != 0) {
      uVar4 = (uint)puVar2;
      if ((3 < uVar4) && (0xf < uVar4)) {
        Sleep((uint)(0x1f < uVar4));
      }
      puVar2 = (undefined8 *)(ulonglong)(uVar4 + 1);
      LOCK();
      iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
      *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
      UNLOCK();
      puVar3 = DAT_18265f298;
    }
    *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
    if (puVar3 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)FUN_1811316e0(8);
      puVar3 = puVar5;
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = 0;
        puVar3 = puVar2;
      }
      FUN_1805ccdd0(FUN_180608bd0,puVar3,param_3,param_4,uVar8);
      LOCK();
      iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
      *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
      UNLOCK();
      while (iVar1 != 0) {
        uVar4 = (uint)puVar5;
        if ((3 < uVar4) && (0xf < uVar4)) {
          Sleep((uint)(0x1f < uVar4));
        }
        puVar5 = (undefined8 *)(ulonglong)(uVar4 + 1);
        LOCK();
        iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
        *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
        UNLOCK();
      }
      DAT_18265f298 = puVar3;
      *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_18265f2a0 = 0;
  }
  return puVar3;
}



############ FUN_ 1805bc910 size=116 ############

void FUN_1805bc910(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 4;
  if (param_2 < 0x4000000000000000) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1806d2860 size=2075 ############

/* WARNING: Instruction at (ram,0x0001806d2e2b) overlaps instruction at (ram,0x0001806d2e2a)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001806d2a21) */
/* WARNING: Removing unreachable block (ram,0x0001806d2ab3) */
/* WARNING: Removing unreachable block (ram,0x0001806d2d47) */
/* WARNING: Removing unreachable block (ram,0x0001806d2d4c) */
/* WARNING: Removing unreachable block (ram,0x0001806d2e72) */
/* WARNING: Heritage AFTER dead removal. Example location: s0x00000008 : 0x0001806d2e4d */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_1806d2860(undefined8 *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4
                       ,undefined8 param_5)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  undefined1 *puVar5;
  longlong *plVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  longlong *plVar9;
  int iVar10;
  uint *puVar11;
  uint uVar12;
  uint *puVar13;
  bool bVar14;
  float10 in_ST0;
  float10 in_ST1;
  float10 in_ST2;
  float10 in_ST3;
  float10 in_ST4;
  float10 in_ST5;
  float10 in_ST6;
  float10 in_ST7;
  uint unaff_retaddr;
  int local_res8;
  uint local_res10;
  int local_a8 [2];
  undefined8 local_a0;
  undefined1 local_98 [32];
  uint local_78;
  undefined8 local_70;
  int *local_68;
  undefined8 *local_60;
  undefined4 local_54;
  uint local_50;
  undefined8 local_48;
  
  puVar5 = local_98;
  local_48 = 0xfffffffffffffffe;
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = pace::PaceException::vftable;
  *(undefined4 *)(param_1 + 3) = param_2;
  uVar2 = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[9] = 0;
  param_1[10] = 0xf;
  *(undefined1 *)(param_1 + 7) = 0;
  local_60 = param_1;
  FUN_1805a6cb0(param_1 + 7,&DAT_181baf991,0);
  param_1[0xd] = 0;
  param_1[0xe] = 0xf;
  *(undefined1 *)(param_1 + 0xb) = 0;
  FUN_1805a6cb0(param_1 + 0xb,&DAT_181baf991,0);
  param_1[0x11] = 0;
  param_1[0x12] = 0xf;
  *(undefined1 *)(param_1 + 0xf) = 0;
  FUN_1805a6cb0(param_1 + 0xf,&DAT_181baf991,0);
  param_1[0x15] = 0;
  param_1[0x16] = 0xf;
  *(undefined1 *)(param_1 + 0x13) = 0;
  FUN_1805a6cb0(param_1 + 0x13,&DAT_181baf991,0);
  FUN_1805a4070(param_1 + 0x17,param_3);
  param_1[0x1d] = 0;
  param_1[0x1e] = 0xf;
  *(undefined1 *)(param_1 + 0x1b) = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0xf;
  *(undefined1 *)(param_1 + 0x1f) = 0;
  *(undefined1 *)(param_1 + 0x23) = 0;
  local_68 = (int *)FUN_1811316e0(0x40);
  if (local_68 != (int *)0x0) {
    uVar2 = FUN_1806d42d0(local_68,param_4,param_5);
  }
  param_1[0x24] = uVar2;
  uVar12 = (uint)&stack0x00000000 & 0x27f;
  uVar4 = (uint)&stack0x00000000 & 0x3bf;
  local_50 = (((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 ^ ((uVar12 + 2) * (uVar12 + 1) * uVar12) % 3)
             + 0xfcb7 ^ 0xf8f7;
  local_54 = 0x570;
  uVar2 = 0x180000000;
  local_68 = &DAT_180bd47b8;
  puVar11 = (uint *)0x1b873593;
  local_70 = 0x11b873593;
  uVar4 = (DAT_180bd47b8 * 0x16a88000 | (uint)(DAT_180bd47b8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0xd7befa70;
  uVar4 = (DAT_180bd47bc * 0x16a88000 | (uint)(DAT_180bd47bc * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (DAT_180bd47c0 * 0x16a88000 | (uint)(DAT_180bd47c0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (DAT_180bd47c4 * 0x16a88000 | (uint)(DAT_180bd47c4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  local_78 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  puVar13 = (uint *)register0x00000020;
  do {
    *(undefined8 *)(puVar5 + -8) = 0x1806d2d2b;
    FUN_1806d285b();
    uVar4 = *puVar13;
    uVar3 = (ulonglong)uVar4;
    uVar4 = (uVar4 + 1) * uVar4;
LAB_1806d2d59_1:
    uVar4 = uVar4 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  puVar13 = &DAT_180bd47c8;
  plVar6 = (longlong *)puVar5;
LAB_1806d2d80:
  do {
    uVar4 = 0x5338;
    puVar7 = (undefined1 *)plVar6;
    while( true ) {
      do {
      } while ((uVar4 & 0xc300) == 0);
      plVar6 = (longlong *)(puVar7 + -8);
      plVar9 = (longlong *)(puVar7 + -8);
      puVar5 = puVar7 + -8;
      if ((char)(uVar4 >> 8) == '\0') {
        uVar3 = (ulonglong)((uint)uVar3 & 0x49de8c17);
        uVar4 = uVar4 ^ 0x5ca6a266;
      }
      *(uint **)(puVar7 + -8) = puVar11;
      puVar11 = puVar13;
      if ((&stack0x00000000 == (undefined1 *)0xfffffffffffffff0) && ((uVar4 & 0xc3) != 0))
      goto LAB_1806d2d80;
      bVar14 = (uVar4 & 0xc300) == 0;
      if (!bVar14) break;
      puVar7 = puVar7 + -8;
      if (bVar14) goto LAB_1806d2d59_1;
    }
    puVar8 = puVar7 + -8;
    if ((uVar4 & 0xc300) == 0) {
LAB_1806d2de6:
      plVar9 = (longlong *)puVar8;
      if ((uVar4 & 0xc300) == 0) {
        return uVar3;
      }
    }
    else if ((uVar4 & 0xc300) != 0) {
      uVar3 = (ulonglong)DAT_180bd47c8;
      if ((uVar4 & 0xc300) == 0) {
        return (ulonglong)((DAT_180bd47c8 - *(int *)(puVar7 + -8)) + *(int *)(puVar7 + -0x10));
      }
      local_res10 = DAT_180bd47c8;
      puVar11 = *(uint **)(puVar7 + -8);
      puVar8 = puVar7;
      if ((uVar4 & 0xc300) == 0) {
        return uVar3;
      }
      goto LAB_1806d2de6;
    }
    uVar3 = (ulonglong)unaff_retaddr;
    lRam0000000001488d17 = (longlong)in_ST0;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    plVar6 = plVar9;
    in_ST0 = in_ST1;
    in_ST1 = in_ST2;
    in_ST2 = in_ST3;
    in_ST3 = in_ST4;
    in_ST4 = in_ST5;
    in_ST5 = in_ST6;
    in_ST6 = in_ST7;
    if (uVar4 == 0) {
      iVar10 = (int)puVar11;
      uVar4 = (local_res10 * local_res8 * 0x8000 | local_res10 * local_res8 >> 0x11) * iVar10 ^
              local_78;
                    /* WARNING: Bad instruction - Truncating control flow here */
      uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64 ^
              (DAT_180bd47cc * local_res8 * 0x8000 | (uint)(DAT_180bd47cc * local_res8) >> 0x11) *
              iVar10;
      uVar4 = (DAT_180bd47d0 * local_res8 * 0x8000 | (uint)(DAT_180bd47d0 * local_res8) >> 0x11) *
              iVar10 ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
      uVar4 = (DAT_180bd47d4 * local_res8 * 0x8000 | (uint)(DAT_180bd47d4 * local_res8) >> 0x11) *
              iVar10 ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
      uVar4 = (DAT_180bd47d8 * local_res8 * 0x8000 | (uint)(DAT_180bd47d8 * local_res8) >> 0x11) *
              iVar10 ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
      uVar4 = (DAT_180bd47dc * local_res8 * 0x8000 | (uint)(DAT_180bd47dc * local_res8) >> 0x11) *
              iVar10 ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
      uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
      uVar12 = (DAT_180bd47e0 * local_res8 * 0x8000 | (uint)(DAT_180bd47e0 * local_res8) >> 0x11) *
               iVar10 ^ uVar4;
      plVar9[-1] = 0x1806d2f27;
      FUN_1806d395f((uVar12 << 0xd | uVar12 >> 0x13) * 5 + -0x19ab949c,uVar4,0);
      plVar9[-1] = uVar2;
      plVar9[-2] = (longlong)puVar11;
                    /* WARNING: Call to offcut address within same function */
      plVar9[-3] = 0x1806d2f60;
      func_0x0001806d2f63();
      lVar1 = plVar9[1];
      plVar9[1] = lVar1 + 0x14b;
      *plVar9 = lVar1 + 0x4603;
      plVar9[-1] = lVar1 + -0x1c3;
      plVar9[-2] = lVar1 + -0x1393;
      plVar9[-3] = lVar1 + -0x736e;
      plVar9[-4] = lVar1 + -0x13ad;
                    /* WARNING: Could not recover jumptable at 0x0001806d30a9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar3 = (*(code *)(lVar1 + 0x84d))();
      return uVar3;
    }
  } while( true );
}



############ FUN_ 180741570 size=3011 ############

/* WARNING: Instruction at (ram,0x000180741e21) overlaps instruction at (ram,0x000180741e1f)
    */
/* WARNING: Removing unreachable block (ram,0x000180741e1f) */
/* WARNING: Removing unreachable block (ram,0x0001807416d6) */
/* WARNING: Removing unreachable block (ram,0x0001807415ea) */
/* WARNING: Removing unreachable block (ram,0x000180741d20) */
/* WARNING: Removing unreachable block (ram,0x0001807421c3) */

ulonglong FUN_180741570(longlong param_1)

{
  undefined1 *puVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined1 *puVar9;
  undefined1 *puVar10;
  undefined8 uVar11;
  undefined8 *puVar12;
  uint7 uVar13;
  longlong lVar14;
  int unaff_retaddr;
  undefined1 auStack_98 [32];
  undefined8 local_78;
  undefined4 local_70 [2];
  undefined4 *local_68;
  undefined *local_60;
  char *local_58;
  undefined8 local_50;
  
  puVar9 = auStack_98;
  local_50 = 0xfffffffffffffffe;
  uVar8 = (uint)&stack0x00000000 & 0x3bf;
  uVar4 = 0;
  uVar11 = 0x5f1;
  puVar12 = (undefined8 *)0x0;
  local_68 = &DAT_1815b9c1c;
  local_60 = &DAT_1815b9d1c;
  local_78 = 0x1cc98ede;
  if (*(char *)(param_1 + 8) == '\0') {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 != 0) {
      FUN_1805a48c0(lVar2,"Signer object has not been initialized");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      puVar12 = puVar3;
    }
    local_70[0] = 0x156;
    local_58 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar4 = FUN_1805a21d0(puVar12[1],&local_58);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_70);
  }
  uVar6 = (DAT_1815b9c1c * 0x16a88000 | (uint)(DAT_1815b9c1c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0x66b5e5b0;
  uVar6 = (DAT_1815b9c20 * 0x16a88000 | (uint)(DAT_1815b9c20 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c24 * 0x16a88000 | (uint)(DAT_1815b9c24 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c28 * 0x16a88000 | (uint)(DAT_1815b9c28 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c2c * 0x16a88000 | (uint)(DAT_1815b9c2c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c30 * 0x16a88000 | (uint)(DAT_1815b9c30 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c34 * 0x16a88000 | (uint)(DAT_1815b9c34 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c38 * 0x16a88000 | (uint)(DAT_1815b9c38 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c3c * 0x16a88000 | (uint)(DAT_1815b9c3c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c40 * 0x16a88000 | (uint)(DAT_1815b9c40 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c44 * 0x16a88000 | (uint)(DAT_1815b9c44 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c48 * 0x16a88000 | (uint)(DAT_1815b9c48 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c4c * 0x16a88000 | (uint)(DAT_1815b9c4c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c50 * 0x16a88000 | (uint)(DAT_1815b9c50 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c54 * 0x16a88000 | (uint)(DAT_1815b9c54 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c58 * 0x16a88000 | (uint)(DAT_1815b9c58 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c5c * 0x16a88000 | (uint)(DAT_1815b9c5c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c60 * 0x16a88000 | (uint)(DAT_1815b9c60 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c64 * 0x16a88000 | (uint)(DAT_1815b9c64 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c68 * 0x16a88000 | (uint)(DAT_1815b9c68 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c6c * 0x16a88000 | (uint)(DAT_1815b9c6c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c70 * 0x16a88000 | (uint)(DAT_1815b9c70 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c74 * 0x16a88000 | (uint)(DAT_1815b9c74 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c78 * 0x16a88000 | (uint)(DAT_1815b9c78 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c7c * 0x16a88000 | (uint)(DAT_1815b9c7c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c80 * 0x16a88000 | (uint)(DAT_1815b9c80 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c84 * 0x16a88000 | (uint)(DAT_1815b9c84 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c88 * 0x16a88000 | (uint)(DAT_1815b9c88 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c8c * 0x16a88000 | (uint)(DAT_1815b9c8c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c90 * 0x16a88000 | (uint)(DAT_1815b9c90 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c94 * 0x16a88000 | (uint)(DAT_1815b9c94 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1815b9c98 * 0x16a88000 | (uint)(DAT_1815b9c98 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9c9c * 0x16a88000 | (uint)(DAT_1815b9c9c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9ca0 * 0x16a88000 | (uint)(DAT_1815b9ca0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9ca4 * 0x16a88000 | (uint)(DAT_1815b9ca4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9ca8 * 0x16a88000 | (uint)(DAT_1815b9ca8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cac * 0x16a88000 | (uint)(DAT_1815b9cac * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cb0 * 0x16a88000 | (uint)(DAT_1815b9cb0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cb4 * 0x16a88000 | (uint)(DAT_1815b9cb4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cb8 * 0x16a88000 | (uint)(DAT_1815b9cb8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cbc * 0x16a88000 | (uint)(DAT_1815b9cbc * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cc0 * 0x16a88000 | (uint)(DAT_1815b9cc0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cc4 * 0x16a88000 | (uint)(DAT_1815b9cc4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cc8 * 0x16a88000 | (uint)(DAT_1815b9cc8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1815b9ccc * 0x16a88000 | (uint)(DAT_1815b9ccc * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cd0 * 0x16a88000 | (uint)(DAT_1815b9cd0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cd4 * 0x16a88000 | (uint)(DAT_1815b9cd4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cd8 * 0x16a88000 | (uint)(DAT_1815b9cd8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cdc * 0x16a88000 | (uint)(DAT_1815b9cdc * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9ce0 * 0x16a88000 | (uint)(DAT_1815b9ce0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9ce4 * 0x16a88000 | (uint)(DAT_1815b9ce4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_1807400de();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1815b9ce8 * 0x16a88000 | (uint)(DAT_1815b9ce8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cec * 0x16a88000 | (uint)(DAT_1815b9cec * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cf0 * 0x16a88000 | (uint)(DAT_1815b9cf0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cf4 * 0x16a88000 | (uint)(DAT_1815b9cf4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cf8 * 0x16a88000 | (uint)(DAT_1815b9cf8 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9cfc * 0x16a88000 | (uint)(DAT_1815b9cfc * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9d00 * 0x16a88000 | (uint)(DAT_1815b9d00 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9d04 * 0x16a88000 | (uint)(DAT_1815b9d04 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9d08 * 0x16a88000 | (uint)(DAT_1815b9d08 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9d0c * 0x16a88000 | (uint)(DAT_1815b9d0c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  lVar2 = 0x170;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807416dc(0x7200);
    lVar14 = (longlong)register0x00000020 + (longlong)puVar12;
    puVar12 = (undefined8 *)
              (((~((longlong)puVar12 - lVar14) + 1U) - lVar14 ^ 0xffffffffffffffff) + 1);
    register0x00000020 = (BADSPACEBASE *)(lVar14 - (longlong)puVar12);
    uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1815b9d10 * 0x16a88000 | (uint)(DAT_1815b9d10 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (DAT_1815b9d14 * 0x16a88000 | (uint)(DAT_1815b9d14 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64 ^
          (DAT_1815b9d18 * 0x16a88000 | (uint)(DAT_1815b9d18 * -0x3361d2af) >> 0x11) * 0x1b873593;
  uVar6 = (uVar6 << 0xd | uVar6 >> 0x13) * 5 + 0xe6546b64;
  uVar6 = ~((uVar6 * 0x2000 | uVar6 >> 0x13) + 0x3c719dda) ^ 0x66abbc6;
  uVar5 = (ulonglong)uVar6;
  uVar13 = (uint7)((ulonglong)puVar12 >> 8);
  puVar1 = puVar9;
  if ((int)CONCAT71(uVar13,uVar6 == 0x635d4cba) == (int)(((ulonglong)uVar13 & 0xffffff) << 4)) {
    do {
      puVar10 = puVar1;
      *(undefined8 *)(puVar10 + -8) = 0x18074207a;
      lVar14 = lVar2;
      FUN_18074023e(lVar2,uVar5);
      *(undefined8 *)(puVar10 + -8) = uVar11;
      *(undefined8 *)(puVar10 + -0x10) = uVar4;
      *(longlong *)(puVar10 + -0x18) = lVar2;
      lVar14 = -lVar14;
      lVar2 = *(longlong *)(puVar10 + lVar14 + 0x158);
      uVar4 = *(undefined8 *)(puVar10 + lVar14 + 0x160);
      uVar11 = *(undefined8 *)(puVar10 + lVar14 + 0x168);
      uVar8 = (*(int *)(puVar10 + lVar14 + 0x208) + 1) * *(int *)(puVar10 + lVar14 + 0x208) &
              0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      puVar1 = puVar10 + lVar14 + 0x170;
    } while (uVar8 != 0);
    return (ulonglong)(uint)(*(int *)(*(longlong *)(puVar10 + lVar14 + 0x210) + 0x18) << 2);
  }
  uVar5 = thunk_FUN_1805a9280((((uVar8 + 2) * (uVar8 + 1) * uVar8) % 3 | 0xf388) ^ 0xfa38,uVar5);
  return uVar5;
}



############ FUN_ 18076a230 size=3536 ############

/* WARNING: Instruction at (ram,0x00018076af69) overlaps instruction at (ram,0x00018076af67)
    */
/* WARNING: Removing unreachable block (ram,0x00018076a2bc) */
/* WARNING: Removing unreachable block (ram,0x00018076a907) */
/* WARNING: Type propagation algorithm not settling */

void FUN_18076a230(undefined8 param_1,byte *param_2)

{
  longlong *plVar1;
  byte bVar2;
  byte bVar3;
  char cVar4;
  char *pcVar5;
  char *pcVar6;
  undefined8 uVar7;
  ulonglong uVar8;
  longlong lVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  char *pcVar13;
  int *piVar14;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  longlong local_res10;
  uint local_1b0 [2];
  uint local_1a8;
  code *local_1a0;
  char *local_198;
  int *local_190;
  undefined4 local_188 [2];
  uint local_180;
  uint local_17c [3];
  uint local_170 [2];
  undefined4 local_168 [2];
  uint local_160 [2];
  undefined4 local_158 [2];
  uint local_150;
  undefined4 local_120;
  char *local_e8;
  char *local_e0;
  uint local_d8 [2];
  char *local_d0;
  char *local_c8;
  char *local_c0 [13];
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  pcVar13 = (char *)0x0;
  local_120 = 0x2a0;
  uVar10 = (uint)&stack0x00000000 & 0x19ff;
  iVar11 = uVar10 * uVar10 + 1;
  uVar10 = (iVar11 >> 4) + (iVar11 >> 1) + iVar11 * 0x24924924 >> 0x1d;
  uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
  uVar10 = (int)(-uVar10 | uVar10) >> 0x1f;
  local_150 = ((int)(-uVar10 | uVar10) >> 0x1f) * -0xe279 ^ 0xe5d9;
  local_190 = &DAT_1814f4278;
  bVar2 = FUN_18061e560(param_2[3],0x164,0);
  piVar14 = local_190;
  if (bVar2 == 0xff) {
    local_e8 = (char *)FUN_1811316e0(0x18);
    pcVar5 = pcVar13;
    if (local_e8 != (char *)0x0) {
      pcVar5 = (char *)FUN_1805a48c0(local_e8,
                                     "Error converting the upper two digits of the Year from ILokTime (%d) to ptime."
                                    );
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_e8 = pcVar6;
    if (pcVar6 != (char *)0x0) {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
      pcVar13 = pcVar6;
    }
    local_d8[0] = (uint)param_2[3];
    FUN_18060e760(*(undefined8 *)(pcVar5 + 8),local_d8);
    local_188[0] = 0xf24;
    local_e8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),&local_e8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_188);
  }
  uVar10 = (*local_190 + 0x70c53f1e) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + local_190[1]) * -0x395b586d;
  bVar3 = FUN_18061e560(param_2[2],100,0);
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[2]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[3]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[4]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[5]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[6]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[7]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[8]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[9]) * -0x395b586d;
  if (bVar3 == 0xff) {
    local_e0 = (char *)FUN_1811316e0(0x18);
    pcVar5 = pcVar13;
    if (local_e0 != (char *)0x0) {
      pcVar5 = (char *)FUN_1805a48c0(local_e0,
                                     "Error converting the lower two digits of the Year from ILokTime (%d) to ptime."
                                    );
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_e0 = pcVar6;
    if (pcVar6 != (char *)0x0) {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
      pcVar13 = pcVar6;
    }
    local_180 = (uint)param_2[2];
    FUN_18060e760(*(undefined8 *)(pcVar5 + 8),&local_180);
    local_1b0[0] = 0xf2f;
    local_e0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),&local_e0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_1b0);
  }
  uVar10 = (piVar14[10] + (uVar10 ^ uVar10 >> 0x10)) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0xb]) * -0x395b586d;
  uVar12 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0xc]) * -0x395b586d;
  uVar10 = ((uVar12 >> 0x10 ^ uVar12) + piVar14[0xd]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0xe]) * -0x395b586d;
  cVar4 = FUN_18061e560(param_2[1],CONCAT71((uint7)(uint3)(uVar12 >> 8),0xc),
                        CONCAT71((uint7)(uint3)((uint)bVar3 + (uint)bVar2 * 100 >> 8),1));
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0xf]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x10]) * -0x395b586d;
  do {
    uVar7 = rdtsc();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = ((uint)uVar7 ^ (uint)((ulonglong)uVar7 >> 0x20)) * 0x5bd1e995;
  local_1a8 = (uVar12 >> 0x18 ^ uVar12) * -0x733212ab;
  if (local_1a8 < 0x2702703) {
    do {
      local_1a0 = FUN_181194940;
      FUN_18076a4bc(&local_1a0,0x34af);
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar8 = (*local_1a0)();
    if (1 < uVar8) {
      lVar9 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar9 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar9 = *plVar1;
      }
    }
  }
  uVar10 = (piVar14[0x11] + (uVar10 ^ uVar10 >> 0x10)) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x12]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x13]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x14]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x15]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x16]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x17]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x18]) * -0x395b586d;
  do {
    piVar14 = (int *)-(((ulonglong)piVar14 ^ 0xffffffffffffffff) + 1);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar10 = (piVar14[0x19] + (uVar10 ^ uVar10 >> 0x10)) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x1a]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x1b]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x1c]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x1d]) * -0x395b586d;
  do {
    FUN_18076c80a(0xdb2c);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar10 = (piVar14[0x1e] + (uVar10 ^ uVar10 >> 0x10)) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x1f]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x20]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x21]) * -0x395b586d;
  uVar12 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x22]) * -0x395b586d;
  local_1b0[0] = 0x1517863;
  uVar10 = ((uVar12 >> 0x10 ^ uVar12) + piVar14[0x23]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x24]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x25]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x26]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x27]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x28]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x29]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x2a]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x2b]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x2c]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x2d]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x2e]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x2f]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x30]) * -0x395b586d;
  if (cVar4 == -2) {
    local_198 = (char *)FUN_1811316e0(0x18);
    pcVar5 = pcVar13;
    if (local_198 != (char *)0x0) {
      pcVar5 = (char *)FUN_1805a48c0(local_198,
                                     "Error converting the Month from ILokTime (%d) to ptime.");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_198 = pcVar6;
    if (pcVar6 != (char *)0x0) {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
      pcVar13 = pcVar6;
    }
    local_17c[0] = (uint)param_2[1];
    FUN_18060e760(*(undefined8 *)(pcVar5 + 8),local_17c);
    local_17c[1] = 0xf3e;
    local_d0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),&local_d0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_17c + 1);
  }
  uVar10 = (piVar14[0x31] + (uVar10 ^ uVar10 >> 0x10)) * -0x395b586d;
  bVar2 = FUN_18061e560(*param_2,CONCAT71((uint7)(uint3)(uVar12 >> 8),0x1f));
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x32]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x33]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x34]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x35]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x36]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x37]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x38]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x39]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x3a]) * -0x395b586d;
  uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x3b]) * -0x395b586d;
  if (bVar2 + 1 == 0xff) {
    lVar9 = FUN_1811316e0(0x18);
    if (lVar9 == 0) {
      local_res10 = 0;
    }
    else {
      local_res10 = FUN_1805a48c0(lVar9,"Error converting the Day from ILokTime (%d) to ptime.");
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    local_198 = pcVar5;
    if (pcVar5 != (char *)0x0) {
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
      pcVar13 = pcVar5;
    }
    local_170[0] = (uint)*param_2;
    FUN_18060e760(*(undefined8 *)(local_res10 + 8),local_170);
    local_168[0] = 0xf4b;
    local_c8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),&local_c8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_168);
  }
  uVar7 = CONCAT71((uint7)(uint3)(bVar2 + 1 >> 8),0x18);
  cVar4 = FUN_18061e560(param_2[7],uVar7);
  uVar10 = ((uVar10 ^ uVar10 >> 0x10) + piVar14[0x3c]) * -0x395b586d;
  if (cVar4 != -1) {
    uVar10 = (piVar14[0x3d] + (uVar10 ^ uVar10 >> 0x10)) * -0x395b586d;
    uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x3e]) * -0x395b586d;
    uVar10 = ((uVar10 >> 0x10 ^ uVar10) + piVar14[0x3f]) * -0x395b586d;
    uVar12 = uVar10 >> 0x10 ^ uVar10;
    uVar10 = (uVar12 << 2 | uVar10 >> 0x1e) & 0x99999999 |
             (uVar12 >> 2 | uVar12 << 0x1e) & 0x66666666;
    lVar9 = CONCAT71((int7)((ulonglong)uVar7 >> 8),0x3c);
    FUN_18061e560(param_2[6],lVar9);
    do {
      FUN_18076b007();
                    /* WARNING: Call to offcut address within same function */
      func_0x00018076a689();
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    if ((char)((((uVar10 >> 0x10 | uVar10 << 0x10) & 0x932d6cd2 |
                (uVar10 << 0x10 | uVar10 >> 0x10) & 0x6cd2932d) != local_1b0[0]) * '6') != '\0') {
      FUN_18076a4bc();
      thunk_FUN_1805a9280();
      return;
    }
    FUN_18076b008((longlong)(int)local_150,-lVar9);
    return;
  }
  local_198 = (char *)FUN_1811316e0(0x18);
  if (local_198 == (char *)0x0) {
    local_1a0 = (code *)0x0;
  }
  else {
    local_1a0 = (code *)FUN_1805a48c0(local_198,
                                      "Error converting the Hour from ILokTime (%d) to ptime.");
  }
  pcVar5 = (char *)FUN_1811316e0(0x18);
  local_198 = pcVar5;
  if (pcVar5 != (char *)0x0) {
    FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    pcVar13 = pcVar5;
  }
  local_160[0] = (uint)param_2[7];
  FUN_18060e760(*(undefined8 *)(local_1a0 + 8),local_160);
  local_158[0] = 0xf5a;
  local_c0[0] = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),local_c0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar7,local_158);
}



############ FUN_ 1807e3f30 size=1081 ############

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

void FUN_1807e3f30(longlong param_1,undefined8 param_2)

{
  byte bVar1;
  basic_ostream<char,struct_std::char_traits<char>_> *pbVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  uint uVar6;
  int iVar7;
  undefined1 auStack_258 [40];
  longlong local_230;
  undefined8 local_228;
  undefined *local_220;
  undefined *local_218;
  undefined4 local_210;
  undefined4 local_208 [2];
  uint local_200;
  uint local_1fc;
  undefined8 local_1f8;
  int iStack_1ec;
  undefined *local_1e8 [2];
  undefined *local_1d8;
  undefined **local_1d0 [10];
  undefined1 auStack_180 [24];
  undefined8 local_168;
  undefined4 local_160;
  basic_ios<char,std::char_traits<char>_> local_150 [104];
  char *local_e8;
  longlong local_e0;
  undefined8 local_d8;
  undefined1 local_d0 [16];
  undefined1 local_c0 [120];
  ulonglong local_48;
  
  local_d8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_258;
  local_210 = 0;
  uVar6 = (uint)&stack0x00000000 & 0x6aff;
  iVar7 = uVar6 * uVar6 + 1;
  uVar6 = (iVar7 >> 4) + (iVar7 >> 1) + iVar7 * 0x24924924 >> 0x1d;
  uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
  uVar6 = (int)(-uVar6 | uVar6) >> 0x1f;
  local_1fc = ((int)(-uVar6 | uVar6) >> 0x1f) * -0xd64a ^ 0xd09a;
  uVar6 = (uint)&stack0x00000000 & 0x12ff;
  uVar6 = (uVar6 + 1) * uVar6 + 7;
  local_200 = (0 >> ((char)uVar6 + (char)(uVar6 / 0x51) * -0x51 & 0x1fU) | 0x6216U) ^ 0x6fe6;
  local_1e8[0] = &DAT_181bb76c0;
  local_1d8 = &DAT_181bb76c8;
  local_230 = param_2;
  local_1f8 = param_2;
  local_e0 = param_1;
  std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_150);
  local_210 = 2;
  std::basic_iostream<char,std::char_traits<char>_>::basic_iostream<char,std::char_traits<char>_>
            ((basic_iostream<char,std::char_traits<char>_> *)local_1e8,
             (basic_streambuf<char,std::char_traits<char>_> *)local_1d0);
  *(undefined ***)((longlong)local_1e8 + (longlong)*(int *)(local_1e8[0] + 4)) =
       std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  *(int *)((longlong)&iStack_1ec + (longlong)*(int *)(local_1e8[0] + 4)) =
       *(int *)(local_1e8[0] + 4) + -0x98;
  std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
            ((basic_streambuf<char,std::char_traits<char>_> *)local_1d0);
  local_1d0[0] = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  local_168 = 0;
  local_160 = 0;
  uVar6 = *(uint *)(param_1 + 400);
  if (uVar6 == 0) {
    if (*(int *)(param_1 + 0x194) == 0) {
      local_230 = FUN_1811316e0(0x18);
      if (local_230 != 0) {
        FUN_1805a48c0(local_230,
                      "The iLok device serial number portion of the cert serial number is invalid (it\'s zero)."
                     );
      }
      lVar4 = FUN_1805c0260();
      local_208[0] = 0x230;
      local_e8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilokcert.cpp";
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_e8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,local_208);
    }
  }
  else {
    pbVar2 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                       ((basic_ostream<char,std::char_traits<char>_> *)&local_1d8,
                        (_func_ios_base_ptr_ios_base_ptr *)&LAB_18060ce80);
    pbVar2 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                       ((basic_ostream<char,std::char_traits<char>_> *)pbVar2,
                        (_func_ios_base_ptr_ios_base_ptr *)&LAB_18063bb30);
    std::basic_ostream<char,std::char_traits<char>_>::operator<<
              ((basic_ostream<char,std::char_traits<char>_> *)pbVar2,uVar6);
    puVar3 = (undefined8 *)std::setw((__int64)local_d0);
    (*(code *)*puVar3)((longlong)local_1d0 + (longlong)*(int *)(local_1d8 + 4) + -8,puVar3[1]);
    auStack_180[*(int *)(local_1d8 + 4)] = 0x30;
  }
  pbVar2 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                     ((basic_ostream<char,std::char_traits<char>_> *)&local_1d8,
                      (_func_ios_base_ptr_ios_base_ptr *)&LAB_18060ce80);
  pbVar2 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                     ((basic_ostream<char,std::char_traits<char>_> *)pbVar2,
                      (_func_ios_base_ptr_ios_base_ptr *)&LAB_18063bb30);
  std::basic_ostream<char,std::char_traits<char>_>::operator<<
            ((basic_ostream<char,std::char_traits<char>_> *)pbVar2,*(uint *)(param_1 + 0x194));
  puVar3 = (undefined8 *)std::setw((__int64)local_c0);
  (*(code *)*puVar3)((longlong)local_1d0 + (longlong)*(int *)(local_1d8 + 4) + -8,puVar3[1]);
  auStack_180[*(int *)(local_1d8 + 4)] = 0x30;
  bVar1 = *(byte *)(param_1 + 0x19a);
  pbVar2 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                     ((basic_ostream<char,std::char_traits<char>_> *)&local_1d8,
                      (_func_ios_base_ptr_ios_base_ptr *)&LAB_18060ce80);
  pbVar2 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                     ((basic_ostream<char,std::char_traits<char>_> *)pbVar2,
                      (_func_ios_base_ptr_ios_base_ptr *)&LAB_18063bb30);
  std::basic_ostream<char,std::char_traits<char>_>::operator<<
            ((basic_ostream<char,std::char_traits<char>_> *)pbVar2,(uint)bVar1);
  local_230 = 0;
  local_228 = 0x1c4e398;
  local_218 = &DAT_181c4e398;
  local_220 = &DAT_181c52390;
  FUN_1807e26da();
  FUN_1807e4381();
  return;
}



############ FUN_ 18097edd0 size=140 ############

undefined8 *
FUN_18097edd0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  *param_1 = apache::thrift::concurrency::Mutex::vftable;
  lVar1 = FUN_1811316e0(8);
  if (lVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_18097ee60(lVar1,param_2);
  }
  param_1[1] = uVar2;
  FUN_18097ed20(param_1 + 2,uVar2);
  FUN_1805ae620(param_1 + 1,uVar2,uVar2,param_4,uVar3);
  return param_1;
}



############ FUN_ 18097ed20 size=97 ############

undefined8 * FUN_18097ed20(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<apache::thrift::concurrency::Mutex::impl>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 181131014 size=56 ############

/* Library Function - Single Match
    void __cdecl std::_Facet_Register(class std::_Facet_base * __ptr64)
   
   Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */

void __cdecl std::_Facet_Register(_Facet_base *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  if (puVar1 != (undefined8 *)0x0) {
    *puVar1 = DAT_1826729f8;
    puVar1[1] = param_1;
  }
  DAT_1826729f8 = puVar1;
  return;
}



############ FUN_ 180480500 size=89 ############

void FUN_180480500(ulonglong param_1)

{
  longlong lVar1;
  ulonglong uVar2;
  
  if (param_1 < 0x1000) {
    if (param_1 != 0) {
      FUN_1811316e0();
      return;
    }
    return;
  }
  uVar2 = param_1 + 0x27;
  if (uVar2 <= param_1) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar1 = FUN_1811316e0(uVar2);
  if (lVar1 != 0) {
    *(longlong *)((lVar1 + 0x27U & 0xffffffffffffffe0) - 8) = lVar1;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805bca90 size=115 ############

void FUN_1805bca90(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x8c0;
  if (param_2 < 0x1d41d41d41d41e) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805bcb90 size=116 ############

void FUN_1805bcb90(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 8;
  if (param_2 < 0x2000000000000000) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805c7ba0 size=95 ############

ulonglong FUN_1805c7ba0(undefined8 param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  
  if (param_2 == 0) {
    uVar2 = 0;
  }
  else {
    if (0xfff < param_2) {
      if (param_2 + 0x27 <= param_2) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_alloc();
      }
      lVar1 = FUN_1811316e0();
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
      return uVar2;
    }
    uVar2 = FUN_1811316e0(param_2);
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
  return uVar2;
}



############ FUN_ 1805d2670 size=445 ############

undefined1 * FUN_1805d2670(void)

{
  int iVar1;
  undefined1 *puVar2;
  undefined1 *puVar3;
  uint uVar4;
  undefined1 *puVar5;
  longlong lVar6;
  undefined8 in_R9;
  bool bVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  lVar6 = (longlong)&DAT_18265de08 +
          (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18265de08),8) >> 5) * -0x29;
  puVar5 = (undefined1 *)0x0;
  LOCK();
  iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
  *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
  UNLOCK();
  puVar2 = puVar5;
  puVar3 = DAT_18265de08;
  while (DAT_18265de08 = puVar3, iVar1 != 0) {
    uVar4 = (uint)puVar2;
    if ((3 < uVar4) && (0xf < uVar4)) {
      Sleep((uint)(0x1f < uVar4));
    }
    puVar2 = (undefined1 *)(ulonglong)(uVar4 + 1);
    LOCK();
    iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
    *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
    UNLOCK();
    puVar3 = DAT_18265de08;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
  if (puVar3 == (undefined1 *)0x0) {
    LOCK();
    bVar7 = DAT_18265de10 == 0;
    if (bVar7) {
      DAT_18265de10 = 1;
    }
    UNLOCK();
    while (!bVar7) {
      LOCK();
      bVar7 = DAT_18265de10 == 0;
      if (bVar7) {
        DAT_18265de10 = 1;
      }
      UNLOCK();
    }
    LOCK();
    iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
    *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
    UNLOCK();
    puVar2 = puVar5;
    puVar3 = DAT_18265de08;
    while (DAT_18265de08 = puVar3, iVar1 != 0) {
      uVar4 = (uint)puVar2;
      if ((3 < uVar4) && (0xf < uVar4)) {
        Sleep((uint)(0x1f < uVar4));
      }
      puVar2 = (undefined1 *)(ulonglong)(uVar4 + 1);
      LOCK();
      iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
      *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
      UNLOCK();
      puVar3 = DAT_18265de08;
    }
    *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
    if (puVar3 == (undefined1 *)0x0) {
      puVar2 = (undefined1 *)FUN_1811316e0(0x20);
      puVar3 = puVar5;
      if (puVar2 != (undefined1 *)0x0) {
        *(undefined8 *)(puVar2 + 0x10) = 0;
        *(undefined8 *)(puVar2 + 0x18) = 0xf;
        *puVar2 = 0;
        FUN_1805a6cb0(puVar2,"An error occurred while trying to build this string.",0x34,in_R9,uVar8
                     );
        puVar3 = puVar2;
      }
      FUN_1805ccdd0(FUN_1805d2830,puVar3);
      LOCK();
      iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
      *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
      UNLOCK();
      while (iVar1 != 0) {
        uVar4 = (uint)puVar5;
        if ((3 < uVar4) && (0xf < uVar4)) {
          Sleep((uint)(0x1f < uVar4));
        }
        puVar5 = (undefined1 *)(ulonglong)(uVar4 + 1);
        LOCK();
        iVar1 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
        *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
        UNLOCK();
      }
      DAT_18265de08 = puVar3;
      *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_18265de10 = 0;
  }
  return puVar3;
}



############ FUN_ 1805bbc20 size=180 ############

ulonglong FUN_1805bbc20(ulonglong *param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (param_2 != 0) {
    if (0x864b8a7de6d1d6 < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = param_2 * 0x1e8;
    uVar3 = 0xffffffffffffffff;
    if ((param_2 < 0x864b8a7de6d1d7) && (uVar3 = uVar4, uVar4 < 0x1000)) {
      if (uVar4 != 0) {
        uVar2 = FUN_1811316e0(uVar4);
      }
    }
    else {
      uVar2 = uVar3 + 0x27;
      if (uVar3 + 0x27 <= uVar3) {
        uVar2 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar2);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
    }
    *param_1 = uVar2;
    param_1[1] = uVar2;
    param_1[2] = uVar4 + *param_1;
    uVar2 = CONCAT71((int7)(*param_1 >> 8),1);
  }
  return uVar2;
}



############ FUN_ 1805bbce0 size=177 ############

ulonglong FUN_1805bbce0(ulonglong *param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (param_2 != 0) {
    if (0x276276276276276 < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = param_2 * 0x68;
    uVar3 = 0xffffffffffffffff;
    if ((param_2 < 0x276276276276277) && (uVar3 = uVar4, uVar4 < 0x1000)) {
      if (uVar4 != 0) {
        uVar2 = FUN_1811316e0(uVar4);
      }
    }
    else {
      uVar2 = uVar3 + 0x27;
      if (uVar3 + 0x27 <= uVar3) {
        uVar2 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar2);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
    }
    *param_1 = uVar2;
    param_1[1] = uVar2;
    param_1[2] = uVar4 + *param_1;
    uVar2 = CONCAT71((int7)(*param_1 >> 8),1);
  }
  return uVar2;
}



############ FUN_ 1805bca10 size=115 ############

void FUN_1805bca10(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x438;
  if (param_2 < 0x3cae759203cae8) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805bcc10 size=112 ############

void FUN_1805bcc10(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 2;
  if (param_2 < 0x8000000000000000) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 181a24a40 size=90 ############

undefined * Catch_181a24a40(undefined8 param_1,longlong param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x20) = lVar2;
  uVar3 = 0;
  if (lVar2 != 0) {
    uVar3 = FUN_1805a48c0(lVar2,
                          "Ilok2Protocols::~Ilok2Protocols: Suppressing exception trying to close the connection."
                         );
  }
  cVar1 = FUN_1805f42d0(param_2 + 0x50,*(undefined8 *)(param_2 + 0x40),uVar3);
  if (cVar1 != '\0') {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  return &DAT_180643868;
}



############ FUN_ 181a24a9c size=88 ############

undefined * Catch_All_181a24a9c(undefined8 param_1,longlong param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x20) = lVar2;
  uVar3 = 0;
  if (lVar2 != 0) {
    uVar3 = FUN_1805a48c0(lVar2);
  }
  cVar1 = FUN_1805f42d0(param_2 + 0x50,0,uVar3);
  if (cVar1 != '\0') {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  return &DAT_180643868;
}



############ FUN_ 18063fa90 size=432 ############

longlong FUN_18063fa90(longlong *param_1,void *param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  void *pvVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  void *_Dst;
  void *pvVar7;
  longlong lVar8;
  ulonglong uVar9;
  size_t _Size;
  ulonglong uVar10;
  
  lVar2 = *param_1;
  lVar8 = param_1[1] - lVar2 >> 5;
  if (lVar8 == 0x7ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0(param_1,param_2,0x7ffffffffffffff,param_4,0xfffffffffffffffe);
  }
  uVar9 = lVar8 + 1;
  uVar5 = param_1[2] - lVar2 >> 5;
  uVar10 = uVar9;
  if ((uVar5 <= 0x7ffffffffffffff - (uVar5 >> 1)) && (uVar10 = (uVar5 >> 1) + uVar5, uVar10 < uVar9)
     ) {
    uVar10 = uVar9;
  }
  uVar5 = uVar10 * 0x20;
  if (uVar10 < 0x800000000000000) {
    uVar10 = uVar5;
    if (uVar5 < 0x1000) {
      if (uVar5 == 0) {
        pvVar7 = (void *)0x0;
      }
      else {
        pvVar7 = (void *)FUN_1811316e0(uVar5);
      }
      goto LAB_18063fb7d;
    }
  }
  else {
    uVar10 = 0xffffffffffffffff;
  }
  uVar6 = uVar10 + 0x27;
  if (uVar6 <= uVar10) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar8 = FUN_1811316e0(uVar6);
  if (lVar8 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar7 = (void *)(lVar8 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar7 - 8) = lVar8;
LAB_18063fb7d:
  uVar10 = (longlong)param_2 - lVar2 & 0xffffffffffffffe0;
  uVar4 = param_3[1];
  *(undefined8 *)(uVar10 + (longlong)pvVar7) = *param_3;
  ((undefined8 *)(uVar10 + (longlong)pvVar7))[1] = uVar4;
  uVar4 = param_3[3];
  puVar1 = (undefined8 *)(uVar10 + 0x10 + (longlong)pvVar7);
  *puVar1 = param_3[2];
  puVar1[1] = uVar4;
  pvVar3 = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)pvVar3;
    _Dst = pvVar7;
    param_2 = pvVar3;
  }
  else {
    memmove(pvVar7,pvVar3,(longlong)param_2 - (longlong)pvVar3);
    _Dst = (void *)(uVar10 + 0x20 + (longlong)pvVar7);
    _Size = param_1[1] - (longlong)param_2;
  }
  memmove(_Dst,param_2,_Size);
  pvVar3 = (void *)*param_1;
  if (pvVar3 == (void *)0x0) {
    *param_1 = (longlong)pvVar7;
    param_1[1] = (longlong)(uVar9 * 0x20 + (longlong)pvVar7);
    param_1[2] = (longlong)(uVar5 + (longlong)pvVar7);
    return *param_1 + uVar10;
  }
  pvVar7 = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xffffffffffffffe0U)) &&
     (pvVar7 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 181a24b30 size=90 ############

undefined * Catch_181a24b30(undefined8 param_1,longlong param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x58) = lVar2;
  uVar3 = 0;
  if (lVar2 != 0) {
    uVar3 = FUN_1805a48c0(lVar2,
                          "Ilok2ProtocolsOpener::~Ilok2ProtocolsOpener: Suppressing exception trying to close the connection."
                         );
  }
  cVar1 = FUN_1805f42d0(param_2 + 0x70,*(undefined8 *)(param_2 + 0x68),uVar3);
  if (cVar1 != '\0') {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  return &DAT_180643c76;
}



############ FUN_ 181a24b8c size=88 ############

undefined * Catch_All_181a24b8c(undefined8 param_1,longlong param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x58) = lVar2;
  uVar3 = 0;
  if (lVar2 != 0) {
    uVar3 = FUN_1805a48c0(lVar2);
  }
  cVar1 = FUN_1805f42d0(param_2 + 0x70,0,uVar3);
  if (cVar1 != '\0') {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  return &DAT_180643c76;
}



############ FUN_ 18060b550 size=347 ############

undefined8 *
FUN_18060b550(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined1 param_4)

{
  size_t _Size;
  ulonglong uVar1;
  void *_Src;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  void *pvVar5;
  ulonglong uVar6;
  
  _Size = param_1[2];
  if (0x7fffffffffffffff - _Size < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a6980();
  }
  uVar1 = param_1[3];
  uVar3 = _Size + param_2 | 0xf;
  uVar6 = 0x7fffffffffffffff;
  if (((uVar3 < 0x8000000000000000) && (uVar1 <= 0x7fffffffffffffff - (uVar1 >> 1))) &&
     (uVar4 = (uVar1 >> 1) + uVar1, uVar6 = uVar3, uVar3 < uVar4)) {
    uVar6 = uVar4;
  }
  uVar3 = uVar6 + 1;
  if (uVar3 < 0x1000) {
    if (uVar3 == 0) {
      pvVar5 = (void *)0x0;
    }
    else {
      pvVar5 = (void *)FUN_1811316e0(uVar3);
    }
  }
  else {
    uVar4 = uVar6 + 0x28;
    if (uVar4 <= uVar3) {
      uVar4 = 0xffffffffffffffff;
    }
    lVar2 = FUN_1811316e0(uVar4);
    if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    pvVar5 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)pvVar5 - 8) = lVar2;
  }
  param_1[2] = _Size + param_2;
  param_1[3] = uVar6;
  if (uVar1 < 0x10) {
    memcpy(pvVar5,param_1,_Size);
    *(undefined1 *)((longlong)pvVar5 + _Size) = param_4;
    *(undefined1 *)((longlong)pvVar5 + _Size + 1) = 0;
    *param_1 = pvVar5;
    return param_1;
  }
  _Src = (void *)*param_1;
  memcpy(pvVar5,_Src,_Size);
  *(undefined1 *)((longlong)pvVar5 + _Size) = param_4;
  *(undefined1 *)((longlong)pvVar5 + _Size + 1) = 0;
  pvVar5 = _Src;
  if ((0xfff < uVar1 + 1) &&
     (pvVar5 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 181a27540 size=218 ############

undefined * Catch_181a27540(undefined8 param_1,longlong param_2)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = *(longlong *)(param_2 + 0x110);
  *(undefined8 *)(lVar2 + 0x18) = *(undefined8 *)(lVar2 + 0x10);
  *(undefined8 *)(lVar2 + 0x30) = *(undefined8 *)(lVar2 + 0x28);
  iVar1 = *(int *)(*(longlong *)(param_2 + 400) + 0x128);
  if ((iVar1 != 0x3f3) && (iVar1 != 0x45e)) {
    if (iVar1 != 0x3cf) {
                    /* WARNING: Subroutine does not return */
      _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
    }
    lVar2 = FUN_1811316e0(0x18);
    *(longlong *)(param_2 + 0xf0) = lVar2;
    if (lVar2 != 0) {
      FUN_1805a48c0(lVar2,&DAT_181baf991);
    }
    lVar2 = FUN_1805c0260();
    *(undefined4 *)(param_2 + 0xc0) = 0x547;
    *(char **)(param_2 + 0xf0) =
         "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar2 + 8),param_2 + 0xf0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,param_2 + 0xc0);
  }
  *(undefined1 *)(lVar2 + 8) = 1;
  return &DAT_180695a3e;
}



############ FUN_ 18060d220 size=490 ############

longlong FUN_18060d220(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  void *_Memory;
  ulonglong uVar7;
  longlong lVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  undefined8 uVar14;
  
  uVar14 = 0xfffffffffffffffe;
  uVar1 = *param_1;
  lVar8 = (longlong)(param_1[1] - uVar1) >> 5;
  if (lVar8 == 0x7ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = lVar8 + 1;
  uVar4 = (longlong)(param_1[2] - uVar1) >> 5;
  uVar3 = uVar9;
  if ((uVar4 <= 0x7ffffffffffffff - (uVar4 >> 1)) && (uVar3 = (uVar4 >> 1) + uVar4, uVar3 < uVar9))
  {
    uVar3 = uVar9;
  }
  uVar4 = uVar3 * 0x20;
  if (uVar3 < 0x800000000000000) {
    uVar7 = uVar4;
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar7 = 0;
      }
      else {
        uVar7 = FUN_1811316e0(uVar4);
      }
      goto LAB_18060d31e;
    }
  }
  else {
    uVar7 = 0xffffffffffffffff;
  }
  uVar5 = uVar7 + 0x27;
  if (uVar5 <= uVar7) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar8 = FUN_1811316e0(uVar5);
  if (lVar8 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar7 = lVar8 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar7 - 8) = lVar8;
LAB_18060d31e:
  uVar11 = param_2 - uVar1 & 0xffffffffffffffe0;
  lVar8 = uVar11 + uVar7;
  uVar1 = lVar8 + 0x20;
  uVar12 = uVar7;
  uVar13 = uVar1;
  FUN_1805a4070(lVar8,param_3);
  uVar5 = param_1[1];
  uVar6 = *param_1;
  uVar10 = uVar7;
  if (param_2 != uVar5) {
    FUN_1805cffb0(*param_1,param_2,uVar7,param_1,uVar12,uVar3,uVar13,uVar14);
    uVar5 = param_1[1];
    uVar6 = param_2;
    uVar10 = uVar1;
  }
  FUN_1805cffb0(uVar6,uVar5,uVar10,param_1,uVar12,uVar3,uVar13,uVar14);
  if (*param_1 == 0) {
    *param_1 = uVar7;
    param_1[1] = uVar9 * 0x20 + uVar7;
    param_1[2] = uVar7 + uVar4;
    return *param_1 + uVar11;
  }
  FUN_18048c550(*param_1,param_1[1],param_1);
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a28466 size=750 ############

void Catch_181a28466(undefined8 param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined8 uVar7;
  
  lVar2 = *(longlong *)(param_2 + 0x5c0);
  if (*(int *)(lVar2 + 0x128) == 0x454) {
    lVar2 = FUN_1811316e0(0x18);
    *(longlong *)(param_2 + 0x310) = lVar2;
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "ILok2 Auth (a:0x%08X, p:0x%08X, i:0x%08X) Expired: Time limit not valid yet."
                           );
    }
    lVar3 = FUN_1805c0260();
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 0x108);
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 0x104);
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 0x10c);
    *(undefined4 *)(param_2 + 0x1a0) = 0x37da;
    *(char **)(param_2 + 0x88) =
         "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),param_2 + 0x88);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,param_2 + 0x1a0);
  }
  if ((*(int *)(lVar2 + 0x128) == 0x455) || (*(int *)(lVar2 + 0x128) == 0x456)) {
    *(undefined ***)(param_2 + 0x230) =
         pace::eden::thrift::authorize::ReportStaleCachedAuthEntryInput::vftable;
    *(undefined8 *)(param_2 + 0x240) = 0;
    *(undefined8 *)(param_2 + 0x248) = 0;
    *(undefined ***)(param_2 + 0x150) =
         pace::eden::thrift::authorize::ReportStaleCachedAuthEntryReturn::vftable;
    *(undefined4 *)(param_2 + 0x158) = 4;
    *(undefined1 *)(param_2 + 0x15c) = 0;
    *(undefined8 *)(param_2 + 0x238) = *(undefined8 *)(*(longlong *)(param_2 + 0x138) + 0x70);
    plVar1 = (longlong *)(*(longlong *)(param_2 + 0x138) + 8);
    lVar3 = *plVar1;
    *(undefined4 *)(param_2 + 0x240) = *(undefined4 *)(lVar3 + 8);
    *(undefined4 *)(param_2 + 0x244) = *(undefined4 *)(lVar3 + 0xc);
    *(undefined4 *)(param_2 + 0x248) = *(undefined4 *)(lVar3 + 0x10);
    *(undefined8 *)(param_2 + 0x3b8) = 0;
    *(undefined8 *)(param_2 + 0x3c0) = 0;
    *(undefined8 *)(param_2 + 0x3c8) = 0;
    *(undefined8 *)(param_2 + 0x388) = 0;
    *(undefined8 *)(param_2 + 0x390) = 0;
    *(undefined8 *)(param_2 + 0x398) = 0;
    FUN_180674370(param_2 + 0x230,param_2 + 0x3b8,1);
    FUN_1806b86d0(*(undefined8 *)(param_2 + 0x140),0x1d,param_2 + 0x3b8,param_2 + 0x388);
    FUN_180670800(*(longlong *)(param_2 + 0x388),
                  *(longlong *)(param_2 + 0x390) - *(longlong *)(param_2 + 0x388),param_2 + 0x150);
    if (*(int *)(lVar2 + 0x128) == 0x455) {
      uVar4 = FUN_1805c0220("ILok2 Auth (a:0x%08X, p:0x%08X, i:0x%08X) Expired: Time limit expired."
                           );
      uVar5 = FUN_1805c0260();
      lVar2 = FUN_18067dee0(plVar1,0);
      lVar3 = FUN_18067dee0(plVar1,0);
      lVar6 = FUN_18067dee0(plVar1,0);
      uVar7 = FUN_18066b7f0(uVar4,lVar6 + 8);
      uVar7 = FUN_18066b7f0(uVar7,lVar3 + 0xc);
      FUN_18066b7f0(uVar7,lVar2 + 0x10);
      uVar7 = 0x37fd;
    }
    else {
      uVar4 = FUN_1805c0220(
                           "ILok2 Auth (a:0x%08X, p:0x%08X, i:0x%08X) Expired: Count limit expired."
                           );
      uVar5 = FUN_1805c0260();
      lVar2 = FUN_18067dee0(plVar1,0);
      lVar3 = FUN_18067dee0(plVar1,0);
      lVar6 = FUN_18067dee0(plVar1,0);
      uVar7 = FUN_18066b7f0(uVar4,lVar6 + 8);
      uVar7 = FUN_18066b7f0(uVar7,lVar3 + 0xc);
      FUN_18066b7f0(uVar7,lVar2 + 0x10);
      uVar7 = 0x3808;
    }
    FUN_1805bc880(uVar5,
                  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
                  ,uVar7);
    FUN_1806c8b00(0x19,uVar4,uVar5);
    FUN_180575ed0(param_2 + 0x388);
    FUN_180575ed0();
  }
                    /* WARNING: Subroutine does not return */
  _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
}



############ FUN_ 180670800 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670800(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18078b8c0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180674370 size=447 ############

void FUN_180674370(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b6100(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180609880 size=485 ############

undefined4 *
FUN_180609880(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  longlong lVar6;
  undefined4 *puVar7;
  bool bVar8;
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  lVar6 = (longlong)&DAT_18265f288 +
          (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18265f288),8) >> 5) * -0x29;
  puVar7 = (undefined4 *)0x0;
  LOCK();
  iVar2 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
  *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
  UNLOCK();
  puVar3 = puVar7;
  puVar4 = DAT_18265f288;
  while (DAT_18265f288 = puVar4, iVar2 != 0) {
    uVar5 = (uint)puVar3;
    if ((3 < uVar5) && (0xf < uVar5)) {
      Sleep((uint)(0x1f < uVar5));
    }
    puVar3 = (undefined4 *)(ulonglong)(uVar5 + 1);
    LOCK();
    iVar2 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
    *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
    UNLOCK();
    puVar4 = DAT_18265f288;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
  if (puVar4 == (undefined4 *)0x0) {
    LOCK();
    bVar8 = DAT_18265f290 == 0;
    if (bVar8) {
      DAT_18265f290 = 1;
    }
    UNLOCK();
    while (!bVar8) {
      LOCK();
      bVar8 = DAT_18265f290 == 0;
      if (bVar8) {
        DAT_18265f290 = 1;
      }
      UNLOCK();
    }
    LOCK();
    iVar2 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
    *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
    UNLOCK();
    puVar3 = puVar7;
    puVar4 = DAT_18265f288;
    while (DAT_18265f288 = puVar4, iVar2 != 0) {
      uVar5 = (uint)puVar3;
      if ((3 < uVar5) && (0xf < uVar5)) {
        Sleep((uint)(0x1f < uVar5));
      }
      puVar3 = (undefined4 *)(ulonglong)(uVar5 + 1);
      LOCK();
      iVar2 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
      *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
      UNLOCK();
      puVar4 = DAT_18265f288;
    }
    *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
    if (puVar4 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)FUN_1811316e0(0x9c8);
      puVar4 = puVar7;
      if (puVar3 != (undefined4 *)0x0) {
        *puVar3 = 0x1571;
        *(undefined8 *)(puVar3 + 0x270) = 1;
        do {
          piVar1 = puVar3 + *(longlong *)(puVar3 + 0x270);
          *piVar1 = ((uint)piVar1[-1] >> 0x1e ^ piVar1[-1]) * 0x6c078965 + puVar3[0x270];
          *(longlong *)(puVar3 + 0x270) = *(longlong *)(puVar3 + 0x270) + 1;
          puVar4 = puVar3;
        } while (*(ulonglong *)(puVar3 + 0x270) < 0x270);
      }
      FUN_1805ccdd0(FUN_180609a70,puVar4,param_3,param_4,uVar9);
      LOCK();
      iVar2 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
      *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
      UNLOCK();
      while (iVar2 != 0) {
        uVar5 = (uint)puVar7;
        if ((3 < uVar5) && (0xf < uVar5)) {
          Sleep((uint)(0x1f < uVar5));
        }
        puVar7 = (undefined4 *)(ulonglong)(uVar5 + 1);
        LOCK();
        iVar2 = *(int *)(&DAT_18265dbd0 + lVar6 * 4);
        *(int *)(&DAT_18265dbd0 + lVar6 * 4) = 1;
        UNLOCK();
      }
      DAT_18265f288 = puVar4;
      *(undefined4 *)(&DAT_18265dbd0 + lVar6 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_18265f290 = 0;
  }
  return puVar4;
}



############ FUN_ 1807efe60 size=1672 ############

/* WARNING: Instruction at (ram,0x0001807f025c) overlaps instruction at (ram,0x0001807f025b)
    */
/* WARNING: Removing unreachable block (ram,0x0001807eff73) */
/* WARNING: Removing unreachable block (ram,0x0001807f0253) */
/* WARNING: Removing unreachable block (ram,0x0001807f025a) */
/* WARNING: Removing unreachable block (ram,0x0001807f0258) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

longlong FUN_1807efe60(longlong param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint uVar5;
  uint unaff_retaddr;
  undefined1 auStack_328 [32];
  undefined8 *local_308;
  undefined4 *local_2f8;
  undefined *local_2f0;
  undefined4 local_2e8;
  undefined8 local_2e0;
  undefined4 local_2d8 [2];
  undefined4 local_2d0;
  uint local_2cc;
  uint local_2c8;
  longlong local_290;
  undefined **ppuStack_288;
  undefined **ppuStack_280;
  undefined8 uStack_278;
  undefined8 uStack_270;
  undefined8 uStack_268;
  undefined4 uStack_260;
  undefined2 uStack_25c;
  undefined1 uStack_25a;
  undefined **ppuStack_258;
  undefined8 uStack_250;
  undefined8 uStack_248;
  undefined8 uStack_240;
  undefined4 uStack_238;
  undefined2 uStack_234;
  undefined1 uStack_232;
  undefined4 uStack_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined8 uStack_218;
  undefined8 uStack_210;
  undefined8 uStack_208;
  undefined8 uStack_200;
  undefined4 uStack_1f8;
  undefined1 uStack_1f4;
  char *local_1e8;
  undefined8 local_1e0;
  undefined8 local_1c8;
  undefined8 local_1b8;
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_328;
  uVar3 = (uint)&stack0x00000000;
  uVar5 = ((uVar3 & 0x15ff) * (uVar3 & 0x15ff) * 0x10 + 4) % 0x13 | uVar3;
  local_2cc = ((int)(-uVar5 | uVar5) >> 0x1f) * 0xc35 & 0x13c3U ^ 0x1463;
  uVar3 = ((uVar3 & 0x8ff) + 1) * (uVar3 & 0x8ff) + 0x1a61 & 0x80000001;
  uVar3 = (int)(-uVar3 | uVar3) >> 0x1f;
  local_2c8 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x1f47 ^ 0x11f7;
  local_2d0 = 0xc60e42d7;
  local_2f8 = &DAT_180bc6828;
  local_2f0 = &DAT_180bc6928;
  local_2e0 = 0xc7ade98d;
  puVar4 = (undefined8 *)0x0;
  local_2e8 = param_2;
  local_290 = param_1;
  local_1e0 = param_3;
  local_1c8 = param_4;
  if (*(longlong *)(param_1 + 8) != 0) {
    FUN_1807f1440(param_1,param_3,param_2);
    do {
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    ppuStack_288 = pace::eden::thrift::ilok::CommandPacket::vftable;
    ppuStack_280 = pace::eden::thrift::ilok::CommandTarget::vftable;
    uStack_278 = 0;
    uStack_270 = 0;
    uStack_268 = 0;
    uStack_260 = 0;
    uStack_25c = 0;
    uStack_25a = 0;
    ppuStack_258 = pace::eden::thrift::ilok::CommandTarget::vftable;
    uStack_250 = 0;
    uStack_248 = 0;
    uStack_240 = 0;
    uStack_238 = 0;
    uStack_234 = 0;
    uStack_232 = 0;
    uStack_230 = 0;
    local_228 = 0;
    uStack_220 = 0;
    uStack_218 = 0;
    uStack_210 = 0;
    uStack_208 = 0;
    uStack_200 = 0;
    uStack_1f8 = 0;
    uStack_1f4 = 0;
    do {
      FUN_1807f0f54();
      FUN_1807ec904();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    return ~-(ulonglong)unaff_retaddr + 1;
  }
  local_308 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_308 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_308,"ILok conduit not set");
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_308 = puVar1;
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    puVar4 = puVar1;
  }
  local_2d8[0] = 0x2c9;
  local_1e8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok1commander.cpp";
  uVar2 = FUN_1805a21d0(puVar4[1],&local_1e8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_2d8);
}



############ FUN_ 1807f74d0 size=1731 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x0001807f7829) overlaps instruction at (ram,0x0001807f7828)
    */
/* WARNING: Removing unreachable block (ram,0x0001807f77e0) */
/* WARNING: Removing unreachable block (ram,0x0001807f75aa) */
/* WARNING: Removing unreachable block (ram,0x0001807f75c8) */
/* WARNING: Removing unreachable block (ram,0x0001807f75cd) */
/* WARNING: Removing unreachable block (ram,0x0001807f77ce) */
/* WARNING: Removing unreachable block (ram,0x0001807f77fd) */
/* WARNING: Removing unreachable block (ram,0x0001807f783e) */
/* WARNING: Removing unreachable block (ram,0x0001807f77d7) */
/* WARNING: Removing unreachable block (ram,0x0001807f781d) */
/* WARNING: Removing unreachable block (ram,0x0001807f7787) */
/* WARNING: Removing unreachable block (ram,0x0001807f77ef) */
/* WARNING: Removing unreachable block (ram,0x0001807f77f9) */
/* WARNING: Removing unreachable block (ram,0x0001807f7807) */
/* WARNING: Removing unreachable block (ram,0x0001807f7829) */
/* WARNING: Removing unreachable block (ram,0x0001807f782c) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xfffffffffffffeb8 : 0x0001807f7691 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_1807f74d0(void)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  ulonglong uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  int unaff_retaddr;
  longlong *local_138;
  longlong lStack_130;
  ulonglong local_128;
  ulonglong local_120;
  longlong local_118;
  undefined8 local_110;
  longlong *local_108;
  undefined8 uStack_100;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined4 local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  undefined4 local_c8;
  undefined4 local_c4;
  uint local_c0;
  uint local_bc;
  longlong *local_b8;
  undefined8 local_b0;
  longlong local_a8;
  longlong *local_a0;
  undefined8 local_98;
  ulonglong local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined8 local_60;
  undefined8 uStack_58;
  
  local_88 = 0xfffffffffffffffe;
  if (((ulonglong)&stack0x00000000 & 0x1f00) == 0) {
    uVar3 = (uint)&stack0x00000000 & 0x3bf;
    uVar3 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3 | 0x3990;
  }
  else {
    uVar3 = 0x3990;
  }
  local_c0 = uVar3 ^ 0x3a20;
  uVar3 = (uint)&stack0x00000000 & 0x2ff;
  local_bc = 0xa8d3 << ((char)(((uVar3 + 2) * (uVar3 + 1) * uVar3) / 3) * -3 & 0x1fU) ^ 0xad03;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_182666c40) && (_Init_thread_header(&DAT_182666c40), DAT_182666c40 == -1)) {
    local_c8 = 0x41;
    local_c4 = 7;
    local_d0 = 0x40;
    local_cc = 6;
    local_d8 = 0x3f;
    local_d4 = 5;
    local_e0 = 0x3e;
    local_dc = 4;
    local_138 = (longlong *)0x0;
    lStack_130 = 0;
    local_128 = 0;
    local_120 = 0;
    local_118 = 0;
    local_138 = (longlong *)FUN_1811316e0(0x10);
    local_70 = 0;
    uStack_68 = 0;
    *local_138 = 0;
    local_138[1] = 0;
    *local_138 = (longlong)&local_138;
    local_80 = 0x3b00000001;
    if ((((int)local_120 + (int)local_118 & 1U) == 0) && (local_128 <= local_118 + 2U >> 1)) {
      FUN_1807ec1f0(&local_138,1);
    }
    local_120 = local_120 & local_128 * 2 - 1;
    uVar4 = local_118 + local_120;
    lVar1 = (uVar4 >> 1 & local_128 - 1) * 8;
    if (*(longlong *)(lVar1 + lStack_130) == 0) {
      uVar2 = FUN_1811316e0(0x10);
      *(undefined8 *)(lVar1 + lStack_130) = uVar2;
    }
    *(undefined8 *)(*(longlong *)(lVar1 + lStack_130) + (ulonglong)((uint)uVar4 & 1) * 8) =
         0x3b00000001;
    local_118 = local_118 + 1;
    local_108 = (longlong *)0x0;
    uStack_100 = 0;
    local_f8 = 0;
    local_f0 = 0;
    local_e8 = 0;
    local_108 = (longlong *)FUN_1811316e0(0x10);
    local_60 = 0;
    uStack_58 = 0;
    *local_108 = 0;
    local_108[1] = 0;
    *local_108 = (longlong)&local_108;
    local_a8 = local_118 + local_120;
    local_b0 = 0;
    local_b8 = local_138;
    local_98 = 0;
    local_90 = local_120;
    local_a0 = local_138;
    FUN_1807ea970(&local_108,&local_a0,&local_b8);
    FUN_1807ec3f0(&local_138);
                    /* WARNING: Subroutine does not return */
    free(local_138);
  }
  local_110 = 0x5ce0ce56;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
                    /* WARNING: Bad instruction - Truncating control flow here */
  uVar5 = ((((uint)(DAT_181400278 * 0x5bd1e995) >> 0x18 ^ DAT_181400278 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_181400274 * 0x5bd1e995) >> 0x18 ^ DAT_181400274 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_181400270 * 0x5bd1e995) >> 0x18 ^ DAT_181400270 * 0x5bd1e995) * 0x5bd1e995 ^
           0x2f013439) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995 ^
          ((uint)(DAT_18140027c * 0x5bd1e995) >> 0x18 ^ DAT_18140027c * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995 ^
          ((uint)(DAT_181400280 * 0x5bd1e995) >> 0x18 ^ DAT_181400280 * 0x5bd1e995) * 0x5bd1e995;
  uVar3 = uVar5 & 0x17f;
  iVar6 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  uVar3 = uVar5 & 0xf;
  uVar7 = uVar5 & 0x3f | 0xc;
  uVar4 = (ulonglong)
          (uVar5 * 0x5bd1e995 ^
          ((uint)(*(int *)(&UNK_181400304 +
                          -((longlong)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555) >> 0x1e &
                            (ulonglong)(uVar7 * uVar7 * 0xfbb1 == 0x8b5c) ^
                           (ulonglong)
                           (~(0xffffdffd - ((uVar3 + 1) * (uVar3 + 1) * uVar3 * uVar3 & 2) &
                             0xffffff7f) & 0x4bbd))) * 0x5bd1e995) >> 0x18 ^
          *(int *)(&UNK_181400304 +
                  -((longlong)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555) >> 0x1e &
                    (ulonglong)(uVar7 * uVar7 * 0xfbb1 == 0x8b5c) ^
                   (ulonglong)
                   (~(0xffffdffd - ((uVar3 + 1) * (uVar3 + 1) * uVar3 * uVar3 & 2) & 0xffffff7f) &
                   0x4bbd))) * 0x5bd1e995) * 0x5bd1e995);
  uVar8 = FUN_1807f8979();
  FUN_1807f799d(uVar8,uVar4);
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18060cad0 size=55 ############

void FUN_18060cad0(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x28);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 18060cb10 size=63 ############

void FUN_18060cb10(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 1807ea970 size=248 ############

void FUN_1807ea970(longlong param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  
  while (*(longlong *)(param_2 + 0x10) != *(longlong *)(param_3 + 0x10)) {
    puVar2 = (undefined8 *)FUN_1807ec090(param_2);
    if (((*(char *)(param_1 + 0x18) + (char)*(longlong *)(param_1 + 0x20) & 1U) == 0) &&
       (*(ulonglong *)(param_1 + 0x10) <= *(longlong *)(param_1 + 0x20) + 2U >> 1)) {
      FUN_1807ec1f0(param_1,1);
    }
    *(ulonglong *)(param_1 + 0x18) =
         *(ulonglong *)(param_1 + 0x18) & *(longlong *)(param_1 + 0x10) * 2 - 1U;
    uVar4 = *(longlong *)(param_1 + 0x18) + *(longlong *)(param_1 + 0x20);
    lVar1 = (uVar4 >> 1 & *(longlong *)(param_1 + 0x10) - 1U) * 8;
    if (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) == 0) {
      uVar3 = FUN_1811316e0(0x10);
      *(undefined8 *)(lVar1 + *(longlong *)(param_1 + 8)) = uVar3;
    }
    *(undefined8 *)
     (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) + (ulonglong)((uint)uVar4 & 1) * 8) =
         *puVar2;
    *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + 1;
    *(longlong *)(param_2 + 0x10) = *(longlong *)(param_2 + 0x10) + 1;
  }
  return;
}



############ FUN_ 1807ec1f0 size=499 ############

void FUN_1807ec1f0(longlong param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  size_t sVar6;
  size_t sVar7;
  void *pvVar8;
  ulonglong uVar9;
  
  uVar2 = *(ulonglong *)(param_1 + 0x10);
  uVar5 = 1;
  if (uVar2 != 0) {
    uVar5 = uVar2;
  }
  for (; (uVar5 - uVar2 < param_2 || (uVar5 < 8)); uVar5 = uVar5 * 2) {
    if (0xfffffffffffffff - uVar5 < uVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_180618c80(param_1);
    }
  }
  uVar5 = uVar5 - uVar2;
  uVar9 = *(ulonglong *)(param_1 + 0x18) >> 1;
  uVar4 = (uVar2 + uVar5) * 8;
  if (uVar2 + uVar5 < 0x2000000000000000) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        pvVar8 = (void *)0x0;
      }
      else {
        pvVar8 = (void *)FUN_1811316e0(uVar4);
      }
      goto LAB_1807ec2bc;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar1 = FUN_1811316e0(uVar2);
  if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar8 = (void *)(lVar1 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar8 - 8) = lVar1;
LAB_1807ec2bc:
  sVar7 = uVar9 * 8;
  pvVar3 = (void *)(*(longlong *)(param_1 + 8) + sVar7);
  sVar6 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar3) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar7 + (longlong)pvVar8),pvVar3,sVar6);
  pvVar3 = (void *)(sVar6 + (longlong)(sVar7 + (longlong)pvVar8));
  if (uVar5 < uVar9) {
    sVar6 = uVar5 * 8;
    memmove(pvVar3,*(void **)(param_1 + 8),sVar6);
    pvVar3 = (void *)(sVar6 + *(longlong *)(param_1 + 8));
    sVar7 = (*(longlong *)(param_1 + 8) - (longlong)pvVar3) + sVar7;
    memmove(pvVar8,pvVar3,sVar7);
    pvVar3 = (void *)(sVar7 + (longlong)pvVar8);
  }
  else {
    memmove(pvVar3,*(void **)(param_1 + 8),sVar7);
    memset((void *)(sVar7 + (longlong)pvVar3),0,(uVar5 - uVar9) * 8);
    pvVar3 = pvVar8;
    sVar6 = sVar7;
  }
  memset(pvVar3,0,sVar6);
  pvVar3 = *(void **)(param_1 + 8);
  if (pvVar3 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar8;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar5;
    return;
  }
  pvVar8 = pvVar3;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar8 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar8);
}



############ FUN_ 1806d2580 size=325 ############

undefined8 *
FUN_1806d2580(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong lVar2;
  
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = pace::PaceException::vftable;
  *(undefined4 *)(param_1 + 3) = *(undefined4 *)(param_2 + 0x18);
  param_1[4] = *(undefined8 *)(param_2 + 0x20);
  lVar2 = *(longlong *)(param_2 + 0x28);
  param_1[5] = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  param_1[6] = *(undefined8 *)(param_2 + 0x30);
  FUN_1805a4070(param_1 + 7,param_2 + 0x38,param_3,param_4,0xfffffffffffffffe);
  FUN_1805a4070(param_1 + 0xb,param_2 + 0x58);
  FUN_1805a4070(param_1 + 0xf,param_2 + 0x78);
  FUN_1805a4070(param_1 + 0x13,param_2 + 0x98);
  FUN_1805a4070(param_1 + 0x17,param_2 + 0xb8);
  param_1[0x1d] = 0;
  param_1[0x1e] = 0xf;
  *(undefined1 *)(param_1 + 0x1b) = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0xf;
  *(undefined1 *)(param_1 + 0x1f) = 0;
  *(undefined1 *)(param_1 + 0x23) = *(undefined1 *)(param_2 + 0x118);
  lVar2 = 0;
  if (*(longlong *)(param_2 + 0x120) != 0) {
    lVar1 = FUN_1811316e0(0x40);
    if (lVar1 != 0) {
      lVar2 = *(longlong *)(param_2 + 0x120);
      FUN_1805a4070(lVar1,lVar2);
      FUN_1805a4070(lVar1 + 0x20,lVar2 + 0x20);
      lVar2 = lVar1;
    }
  }
  param_1[0x24] = lVar2;
  return param_1;
}



############ FUN_ 181a2e160 size=90 ############

undefined * Catch_181a2e160(undefined8 param_1,longlong param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x40) = lVar2;
  uVar3 = 0;
  if (lVar2 != 0) {
    uVar3 = FUN_1805a48c0(lVar2,
                          "ClientConnectionOpener::closeNoThrow: Suppressing exception trying to close the connection."
                         );
  }
  cVar1 = FUN_1805f42d0(param_2 + 0x60,*(undefined8 *)(param_2 + 0x58),uVar3);
  if (cVar1 != '\0') {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  return &DAT_18092fceb;
}



############ FUN_ 181a2e1bc size=88 ############

undefined * Catch_All_181a2e1bc(undefined8 param_1,longlong param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x40) = lVar2;
  uVar3 = 0;
  if (lVar2 != 0) {
    uVar3 = FUN_1805a48c0(lVar2);
  }
  cVar1 = FUN_1805f42d0(param_2 + 0x60,0,uVar3);
  if (cVar1 != '\0') {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  return &DAT_18092fceb;
}



############ FUN_ 181a31640 size=545 ############

void Catch_181a31640(undefined8 param_1,longlong param_2)

{
  void *pvVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  void *pvVar5;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x38) = lVar2;
  if (lVar2 == 0) {
    lVar2 = 0;
  }
  else {
    lVar2 = FUN_1805a48c0(lVar2,
                          "Could not construct a Certifier using parameters from the cache. Failed attempting to verify signature of the object with selfRelation %s and uuid %s."
                         );
  }
  lVar3 = FUN_1805c0260();
  *(longlong *)(param_2 + 0x38) = param_2 + 0x3f0;
  *(longlong *)(param_2 + 0x78) = param_2 + 0x3d0;
  *(undefined8 *)(param_2 + 0x400) = 0;
  *(undefined8 *)(param_2 + 0x408) = 0xf;
  *(undefined1 *)(param_2 + 0x3f0) = 0;
  FUN_1805a6cb0(param_2 + 0x3f0,&DAT_181bb56a0,2);
  *(undefined8 *)(param_2 + 0x3e0) = 0;
  *(undefined8 *)(param_2 + 1000) = 0xf;
  *(undefined1 *)(param_2 + 0x3d0) = 0;
  FUN_1805a6cb0(param_2 + 0x3d0,&DAT_181bb1ed8,1);
  *(undefined8 *)(param_2 + 0x658) = 0;
  *(undefined8 *)(param_2 + 0x660) = 0xf;
  *(undefined1 *)(param_2 + 0x648) = 0;
  FUN_1805a6cb0(param_2 + 0x648,&DAT_181bdf740,1);
  uVar4 = FUN_18080c630(param_2 + 0x768,*(undefined8 *)(param_2 + 0x58),param_2 + 0x648,
                        param_2 + 0x3d0,param_2 + 0x3f0);
  FUN_1805b2240(*(undefined8 *)(lVar2 + 8),uVar4);
  FUN_1805b2240(*(undefined8 *)(lVar2 + 8),*(undefined8 *)(param_2 + 0x5c0));
  if (0xf < *(ulonglong *)(param_2 + 0x780)) {
    pvVar1 = *(void **)(param_2 + 0x768);
    pvVar5 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_2 + 0x780) + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  *(undefined8 *)(param_2 + 0x778) = 0;
  *(undefined8 *)(param_2 + 0x780) = 0xf;
  *(undefined1 *)(param_2 + 0x768) = 0;
  if (*(ulonglong *)(param_2 + 0x660) < 0x10) {
    *(undefined4 *)(param_2 + 0xf8) = 0xa3;
    *(char **)(param_2 + 0x1d8) =
         "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),param_2 + 0x1d8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,param_2 + 0xf8);
  }
  pvVar1 = *(void **)(param_2 + 0x648);
  pvVar5 = pvVar1;
  if ((0xfff < *(ulonglong *)(param_2 + 0x660) + 1) &&
     (pvVar5 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 1806d26d0 size=395 ############

undefined8 *
FUN_1806d26d0(undefined8 *param_1,undefined4 param_2,longlong *param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6)

{
  longlong lVar1;
  undefined8 uVar2;
  
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = pace::PaceException::vftable;
  *(undefined4 *)(param_1 + 3) = param_2;
  uVar2 = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[9] = 0;
  param_1[10] = 0xf;
  *(undefined1 *)(param_1 + 7) = 0;
  FUN_1805a6cb0(param_1 + 7,&DAT_181baf991,0,param_4,0xfffffffffffffffe);
  param_1[0xd] = 0;
  param_1[0xe] = 0xf;
  *(undefined1 *)(param_1 + 0xb) = 0;
  FUN_1805a6cb0(param_1 + 0xb,&DAT_181baf991,0);
  param_1[0x11] = 0;
  param_1[0x12] = 0xf;
  *(undefined1 *)(param_1 + 0xf) = 0;
  FUN_1805a6cb0(param_1 + 0xf,&DAT_181baf991,0);
  param_1[0x15] = 0;
  param_1[0x16] = 0xf;
  *(undefined1 *)(param_1 + 0x13) = 0;
  FUN_1805a6cb0(param_1 + 0x13,&DAT_181baf991,0);
  FUN_1805a4070(param_1 + 0x17,param_4);
  param_1[0x1d] = 0;
  param_1[0x1e] = 0xf;
  *(undefined1 *)(param_1 + 0x1b) = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0xf;
  *(undefined1 *)(param_1 + 0x1f) = 0;
  *(undefined1 *)(param_1 + 0x23) = 0;
  lVar1 = FUN_1811316e0(0x40);
  if (lVar1 != 0) {
    uVar2 = FUN_1806d42d0(lVar1,param_5,param_6);
  }
  param_1[0x24] = uVar2;
  uVar2 = (**(code **)(*param_3 + 0x10))(param_3);
  FUN_1805d0030(param_1 + 4,uVar2);
  *(undefined1 *)(param_1[4] + 0x118) = 1;
  return param_1;
}



############ FUN_ 1805cfa60 size=97 ############

undefined8 * FUN_1805cfa60(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::PaceException>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 181a3188b size=569 ############

void Catch_181a3188b(undefined8 param_1,longlong param_2)

{
  void *pvVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  void *pvVar6;
  
  lVar2 = FUN_1811316e0(0x18);
  *(longlong *)(param_2 + 0x38) = lVar2;
  if (lVar2 == 0) {
    lVar2 = 0;
  }
  else {
    lVar2 = FUN_1805a48c0(lVar2,
                          "The data digest method is unrecognized: \"%s\" Failed attempting to verify signature of the object with selfRelation % s and uuid %s."
                         );
  }
  lVar3 = FUN_1805c0260();
  *(longlong *)(param_2 + 0x38) = param_2 + 0x390;
  *(longlong *)(param_2 + 0x78) = param_2 + 0x370;
  *(undefined8 *)(param_2 + 0x3a0) = 0;
  *(undefined8 *)(param_2 + 0x3a8) = 0xf;
  *(undefined1 *)(param_2 + 0x390) = 0;
  FUN_1805a6cb0(param_2 + 0x390,&DAT_181bb56a0,2);
  *(undefined8 *)(param_2 + 0x380) = 0;
  *(undefined8 *)(param_2 + 0x388) = 0xf;
  *(undefined1 *)(param_2 + 0x370) = 0;
  FUN_1805a6cb0(param_2 + 0x370,&DAT_181bb1ed8,1);
  *(undefined8 *)(param_2 + 0x638) = 0;
  *(undefined8 *)(param_2 + 0x640) = 0xf;
  *(undefined1 *)(param_2 + 0x628) = 0;
  FUN_1805a6cb0(param_2 + 0x628,&DAT_181bdf740,1);
  uVar4 = FUN_18080c630(param_2 + 0x788,*(undefined8 *)(param_2 + 0x58),param_2 + 0x628,
                        param_2 + 0x370,param_2 + 0x390);
  uVar5 = FUN_180a8ff00(*(undefined8 *)(param_2 + 0x50));
  FUN_1805b2240(*(undefined8 *)(lVar2 + 8),uVar5);
  FUN_1805b2240(*(undefined8 *)(lVar2 + 8),uVar4);
  FUN_1805b2240(*(undefined8 *)(lVar2 + 8),*(undefined8 *)(param_2 + 0x5c0));
  if (0xf < *(ulonglong *)(param_2 + 0x7a0)) {
    pvVar1 = *(void **)(param_2 + 0x788);
    pvVar6 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_2 + 0x7a0) + 1) &&
       (pvVar6 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  *(undefined8 *)(param_2 + 0x798) = 0;
  *(undefined8 *)(param_2 + 0x7a0) = 0xf;
  *(undefined1 *)(param_2 + 0x788) = 0;
  if (*(ulonglong *)(param_2 + 0x640) < 0x10) {
    *(undefined4 *)(param_2 + 0x100) = 0xc3;
    *(char **)(param_2 + 0x1e8) =
         "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),param_2 + 0x1e8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,param_2 + 0x100);
  }
  pvVar1 = *(void **)(param_2 + 0x628);
  pvVar6 = pvVar1;
  if ((0xfff < *(ulonglong *)(param_2 + 0x640) + 1) &&
     (pvVar6 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 18080ca00 size=216 ############

void FUN_18080ca00(longlong *param_1,char param_2,undefined8 param_3)

{
  longlong lVar1;
  char *pcVar2;
  undefined8 uVar3;
  undefined4 local_res10 [2];
  undefined8 local_res18;
  char *local_res20;
  
  if (param_2 == '\0') {
    local_res18 = param_3;
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,"The isset flag is false for field %s::%s");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res20 = (char *)(**(code **)(*param_1 + 0x28))(param_1);
    FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res20);
    FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res18);
    local_res10[0] = 0x9b;
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\lsproxybase.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res10);
  }
  return;
}



############ FUN_ 1813baca0 size=666 ############

void FUN_1813baca0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  double param_5)

{
  uint *puVar1;
  uint uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *plVar8;
  double dVar9;
  
  if (*(longlong **)(param_1 + 0x40) == param_2) {
    if (*(longlong **)(param_1 + 0x40) == (longlong *)0x0) {
      return;
    }
    FUN_1813baca0(param_1,0,0,0,0,2,0xfffffffffffffffe);
  }
  plVar6 = (longlong *)0x0;
  *(undefined4 *)(param_1 + 0xb4) = 0;
  *(double *)(param_1 + 0xa8) = param_5;
  puVar3 = *(undefined8 **)(param_1 + 0x48);
  puVar4 = *(undefined8 **)(param_1 + 0x50);
  plVar5 = *(longlong **)(param_1 + 0x60);
  plVar7 = plVar6;
  plVar8 = plVar6;
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 0x20))(param_2,0);
    plVar8 = param_2;
    if (0.0 < param_5) {
      plVar6 = (longlong *)FUN_1811316e0(0x1e0);
      *plVar6 = (longlong)juce::ResamplingAudioSource::vftable;
      plVar6[1] = (longlong)param_2;
      *(undefined1 *)(plVar6 + 2) = 0;
      plVar6[3] = 0x3ff0000000000000;
      plVar6[4] = 0x3ff0000000000000;
      plVar6[5] = 0;
      plVar6[6] = 0;
      plVar6[7] = (longlong)(plVar6 + 9);
      plVar6[8] = 0;
      *(undefined1 *)(plVar6 + 0x29) = 0;
      plVar6[0x2a] = 0;
      plVar6[0x2b] = 0;
      *(undefined4 *)(plVar6 + 0x32) = 0;
      LOCK();
      *(undefined4 *)(plVar6 + 0x32) = 0;
      UNLOCK();
      InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)plVar6 + 0x194));
      *(undefined4 *)(plVar6 + 0x38) = 2;
      plVar6[0x39] = 0;
      plVar6[0x3a] = 0;
      plVar6[0x3b] = 0;
      plVar6[0x2c] = 0;
      plVar6[0x2d] = 0;
      plVar6[0x2e] = 0;
      plVar6[0x2f] = 0;
      plVar6[0x30] = 0;
      plVar6[0x31] = 0;
      plVar8 = plVar6;
    }
    plVar7 = param_2;
    if (*(char *)(param_1 + 0xb8) != '\0') {
      if (((plVar6 != (longlong *)0x0) && (0.0 < *(double *)(param_1 + 0xa8))) &&
         (0.0 < *(double *)(param_1 + 0xa0))) {
        dVar9 = *(double *)(param_1 + 0xa8) / *(double *)(param_1 + 0xa0);
        do {
          LOCK();
          puVar1 = (uint *)(plVar6 + 0x32);
          uVar2 = *puVar1;
          *puVar1 = *puVar1 | 1;
          UNLOCK();
        } while ((uVar2 & 1) != 0);
        if (dVar9 <= 0.0) {
          dVar9 = 0.0;
        }
        plVar6[3] = (longlong)dVar9;
        LOCK();
        *(undefined4 *)(plVar6 + 0x32) = 0;
        UNLOCK();
      }
      (**(code **)(*plVar8 + 8))
                (plVar8,*(undefined4 *)(param_1 + 0xb0),*(undefined8 *)(param_1 + 0xa0));
    }
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x68));
  *(longlong **)(param_1 + 0x40) = param_2;
  *(longlong **)(param_1 + 0x48) = plVar6;
  *(undefined8 *)(param_1 + 0x50) = 0;
  *(longlong **)(param_1 + 0x60) = plVar8;
  *(longlong **)(param_1 + 0x58) = plVar7;
  *(undefined1 *)(param_1 + 0xb9) = 0;
  LOCK();
  *(undefined1 *)(param_1 + 0x9c) = 0;
  UNLOCK();
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x68));
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x10))(plVar5);
  }
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  return;
}



############ FUN_ 1804e6f50 size=534 ############

longlong FUN_1804e6f50(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  void *_Memory;
  undefined8 *puVar1;
  void *pvVar2;
  int iVar3;
  ulonglong uVar4;
  uint uVar5;
  ulonglong uVar6;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x100);
  FUN_1812a59f0(puVar1);
  *puVar1 = juce::MouseInputSourceInternal::vftable;
  *(undefined4 *)(puVar1 + 2) = param_2;
  *(undefined4 *)((longlong)puVar1 + 0x14) = param_3;
  uVar4 = 0;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  puVar1[7] = 0;
  *(undefined2 *)(puVar1 + 8) = 0;
  puVar1[9] = 0;
  puVar1[10] = 0;
  puVar1[0xb] = 0;
  puVar1[0xc] = 0;
  *(undefined4 *)(puVar1 + 0xd) = 0;
  puVar1[0xe] = 0;
  puVar1[0xf] = 0;
  puVar1[0x10] = 0;
  *(undefined1 *)(puVar1 + 0x11) = 0;
  puVar1[0x12] = 0;
  puVar1[0x13] = 0;
  puVar1[0x14] = 0;
  *(undefined1 *)(puVar1 + 0x15) = 0;
  puVar1[0x16] = 0;
  puVar1[0x17] = 0;
  puVar1[0x18] = 0;
  *(undefined1 *)(puVar1 + 0x19) = 0;
  puVar1[0x1a] = 0;
  puVar1[0x1b] = 0;
  puVar1[0x1c] = 0;
  *(undefined1 *)(puVar1 + 0x1d) = 0;
  puVar1[0x1e] = 0;
  *(undefined1 *)(puVar1 + 0x1f) = 0;
  iVar3 = *(int *)(param_1 + 0x24) + 1;
  if ((int)*(uint *)(param_1 + 0x20) < iVar3) {
    uVar5 = *(int *)(param_1 + 0x24) + 9 + iVar3 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 0x20) != uVar5) {
      pvVar2 = *(void **)(param_1 + 0x18);
      if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
        free(pvVar2);
      }
      if (pvVar2 == (void *)0x0) {
        pvVar2 = malloc((longlong)(int)uVar5 * 8);
        *(void **)(param_1 + 0x18) = pvVar2;
      }
      else {
        pvVar2 = realloc(pvVar2,(longlong)(int)uVar5 * 8);
        *(void **)(param_1 + 0x18) = pvVar2;
      }
    }
    *(uint *)(param_1 + 0x20) = uVar5;
  }
  iVar3 = *(int *)(param_1 + 0x24);
  *(int *)(param_1 + 0x24) = iVar3 + 1;
  *(undefined8 **)(*(longlong *)(param_1 + 0x18) + (longlong)iVar3 * 8) = puVar1;
  iVar3 = *(int *)(param_1 + 0x34) + 1;
  if ((int)*(uint *)(param_1 + 0x30) < iVar3) {
    uVar5 = *(int *)(param_1 + 0x34) + 9 + iVar3 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 0x30) != uVar5) {
      if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
        free(*(void **)(param_1 + 0x28));
      }
      pvVar2 = malloc((longlong)(int)uVar5 << 3);
      uVar6 = uVar4;
      if (0 < *(int *)(param_1 + 0x34)) {
        do {
          *(undefined8 *)(uVar6 + (longlong)pvVar2) =
               *(undefined8 *)(uVar6 + *(longlong *)(param_1 + 0x28));
          uVar5 = (int)uVar4 + 1;
          uVar4 = (ulonglong)uVar5;
          uVar6 = uVar6 + 8;
        } while ((int)uVar5 < *(int *)(param_1 + 0x34));
      }
      _Memory = *(void **)(param_1 + 0x28);
      *(void **)(param_1 + 0x28) = pvVar2;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *(uint *)(param_1 + 0x30) = uVar5;
  }
  iVar3 = *(int *)(param_1 + 0x34);
  *(int *)(param_1 + 0x34) = iVar3 + 1;
  *(undefined8 **)(*(longlong *)(param_1 + 0x28) + (longlong)iVar3 * 8) = puVar1;
  return *(longlong *)(param_1 + 0x28) + (longlong)(*(int *)(param_1 + 0x34) + -1) * 8;
}



############ FUN_ 181131fe4 size=26 ############

void FUN_181131fe4(void)

{
  FUN_1811316e0();
  return;
}



############ FUN_ 18051e4b0 size=762 ############

undefined8 * FUN_18051e4b0(undefined8 *param_1,longlong *param_2,int *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  double dVar3;
  longlong *plVar4;
  float *pfVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  float fVar8;
  undefined4 local_res8;
  undefined4 local_res10;
  double local_res18;
  double local_res20;
  undefined8 local_80;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  
  if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
    uStack_50 = *(undefined8 *)(param_3 + 2);
    local_58 = CONCAT44(param_3[1] + (int)((ulonglong)param_2[4] >> 0x20),*param_3 + (int)param_2[4]
                       );
    *(undefined8 *)param_3 = local_58;
    *(undefined8 *)(param_3 + 2) = uStack_50;
  }
  else {
    if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
      if (param_2[3] == 0) goto LAB_18051e75b;
      plVar4 = (longlong *)FUN_18134c2e0(param_2[3],param_2,param_3,param_4,0xfffffffffffffffe);
    }
    else {
      plVar4 = (longlong *)FUN_1812d2bd0(param_2);
    }
    if (plVar4 != (longlong *)0x0) {
      local_68 = *(undefined8 *)param_3;
      uStack_60 = *(undefined8 *)(param_3 + 2);
      fVar8 = (float)(**(code **)(*param_2 + 0x80))(param_2);
      dVar3 = DAT_1824c4520;
      if (fVar8 == DAT_1824c3ea4) {
        local_58 = *(undefined8 *)param_3;
        uStack_50 = *(undefined8 *)(param_3 + 2);
        puVar7 = &local_58;
      }
      else {
        local_res20 = (double)((float)uStack_60._4_4_ * fVar8) + DAT_1824c4520;
        local_res18 = (double)((float)(int)uStack_60 * fVar8) + DAT_1824c4520;
        local_res10 = SUB84((double)((float)local_68._4_4_ * fVar8) + DAT_1824c4520,0);
        local_68 = CONCAT44(local_res10,
                            SUB84((double)((float)(int)local_68 * fVar8) + DAT_1824c4520,0));
        uStack_60 = CONCAT44(local_res20._0_4_,SUB84(local_res18,0));
        puVar7 = &local_68;
      }
      local_58 = *puVar7;
      uStack_50 = puVar7[1];
      if ((undefined **)*plVar4 == juce::HWNDComponentPeer::vftable) {
        pfVar5 = (float *)(*(code *)juce::HWNDComponentPeer::vftable[9])
                                    (plVar4,&local_res18,
                                     CONCAT44((float)(int)((ulonglong)local_58 >> 0x20),
                                              (float)(int)local_58));
        local_res8 = SUB84((double)*pfVar5 + dVar3,0);
        local_80._0_4_ = local_res8;
        local_res10 = SUB84((double)pfVar5[1] + dVar3,0);
        local_80._4_4_ = local_res10;
        uStack_78 = (undefined4)uStack_50;
        uStack_74 = uStack_50._4_4_;
        puVar7 = &local_80;
      }
      else {
        puVar7 = (undefined8 *)(*(code *)((undefined **)*plVar4)[8])(plVar4,&local_80,&local_58);
      }
      uVar1 = *puVar7;
      uVar2 = puVar7[1];
      local_68 = uVar1;
      uStack_60 = uVar2;
      if (DAT_182673700 == 0) {
        uVar6 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar6);
      }
      fVar8 = *(float *)(DAT_182673700 + 0xc0);
      local_58 = uVar1;
      uStack_50 = uVar2;
      if (fVar8 != DAT_1824c3ea4) {
        local_res20 = (double)((float)uStack_60._4_4_ / fVar8) + dVar3;
        local_res18 = (double)((float)(int)uStack_60 / fVar8) + dVar3;
        local_res10 = SUB84((double)((float)local_68._4_4_ / fVar8) + dVar3,0);
        local_58 = CONCAT44(local_res10,SUB84((double)((float)(int)local_68 / fVar8) + dVar3,0));
        uStack_50 = CONCAT44(local_res20._0_4_,SUB84(local_res18,0));
      }
      *(undefined8 *)param_3 = local_58;
      *(undefined8 *)(param_3 + 2) = uStack_50;
    }
  }
LAB_18051e75b:
  if (param_2[7] != 0) {
    puVar7 = (undefined8 *)FUN_1804b1290(param_3,&local_58);
    uVar1 = puVar7[1];
    *(undefined8 *)param_3 = *puVar7;
    *(undefined8 *)(param_3 + 2) = uVar1;
  }
  uVar1 = *(undefined8 *)(param_3 + 2);
  *param_1 = *(undefined8 *)param_3;
  param_1[1] = uVar1;
  return param_1;
}



############ FUN_ 18134b820 size=61 ############

void FUN_18134b820(void)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  return;
}



############ FUN_ 18134c310 size=132 ############

void FUN_18134c310(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
    FUN_1804e5060();
    puVar1 = (undefined8 *)FUN_1812d2bd0(param_1);
    *(byte *)(param_1 + 0xa8) = *(byte *)(param_1 + 0xa8) & 0xfe;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1,(undefined8 *)*puVar1,param_4,uVar2);
    }
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    FUN_180488600(DAT_182673700 + 0x58,param_1);
    return;
  }
  return;
}



############ FUN_ 181343030 size=267 ############

ulonglong FUN_181343030(longlong *param_1)

{
  longlong lVar1;
  uint uVar2;
  undefined8 *puVar3;
  longlong *plVar5;
  longlong lVar6;
  longlong *plVar7;
  longlong *plVar4;
  
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar3);
    FUN_1812a7230(puVar3 + 2);
    *puVar3 = juce::ModalComponentManager::vftable;
    puVar3[2] = juce::ModalComponentManager::vftable;
    puVar3[3] = 0;
    puVar3[4] = 0;
    DAT_182673c20 = puVar3;
  }
  uVar2 = *(int *)((longlong)DAT_182673c20 + 0x24) - 1;
  plVar4 = (longlong *)(ulonglong)uVar2;
  lVar6 = (longlong)(int)uVar2;
  plVar5 = plVar4;
  if (-1 < (int)uVar2) {
    plVar7 = (longlong *)0x0;
    do {
      plVar5 = plVar7;
      lVar1 = *(longlong *)(DAT_182673c20[3] + lVar6 * 8);
      plVar7 = plVar5;
      if ((*(char *)(lVar1 + 0x5c) != '\0') &&
         (plVar7 = (longlong *)(ulonglong)((int)plVar5 + 1), plVar4 = plVar5, (int)plVar5 == 0)) {
        plVar4 = *(longlong **)(lVar1 + 0x40);
        goto LAB_1813430db;
      }
      lVar6 = lVar6 + -1;
      plVar5 = plVar4;
    } while (-1 < lVar6);
  }
  plVar4 = (longlong *)0x0;
LAB_1813430db:
  plVar7 = param_1;
  if (plVar4 != (longlong *)0x0) {
    while (plVar4 != plVar7) {
      if (plVar7 == (longlong *)0x0) {
        plVar5 = (longlong *)(**(code **)(*plVar4 + 0x138))(plVar4,param_1);
        if ((char)plVar5 == '\0') {
          return 1;
        }
        break;
      }
      plVar5 = (longlong *)plVar7[3];
      plVar7 = plVar5;
    }
  }
  return (ulonglong)plVar5 & 0xffffffffffffff00;
}



############ FUN_ 1812cc560 size=399 ############

void FUN_1812cc560(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *_Dst;
  int iVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  ulonglong uVar4;
  int iVar5;
  ulonglong uVar6;
  
  *param_1 = juce::TopLevelWindow::vftable;
  puVar3 = (undefined8 *)param_1[0x17];
  uVar4 = 0;
  param_1[0x17] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1,param_3,param_4,0xfffffffffffffffe);
  }
  if (DAT_182673b08 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x38);
    *puVar3 = juce::Timer::vftable;
    puVar3[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar3 + 2) = 0;
    FUN_1812a7230(puVar3 + 3);
    *puVar3 = juce::TopLevelWindowManager::vftable;
    puVar3[3] = juce::TopLevelWindowManager::vftable;
    puVar3[4] = 0;
    puVar3[5] = 0;
    puVar3[6] = 0;
    DAT_182673b08 = puVar3;
  }
  puVar3 = DAT_182673b08;
  FUN_1812a77d0(DAT_182673b08,10);
  if ((undefined8 *)puVar3[6] == param_1) {
    puVar3[6] = 0;
  }
  iVar1 = *(int *)((longlong)puVar3 + 0x2c);
  uVar6 = uVar4;
  if (0 < iVar1) {
    do {
      iVar5 = (int)uVar6;
      if (param_1 == *(undefined8 **)(puVar3[4] + uVar4 * 8)) {
        _Dst = (void *)(puVar3[4] + (longlong)iVar5 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar5) + -1) << 3);
        *(int *)((longlong)puVar3 + 0x2c) = *(int *)((longlong)puVar3 + 0x2c) + -1;
        iVar1 = *(int *)((longlong)puVar3 + 0x2c);
        iVar5 = 0;
        if (0 < iVar1 * 2) {
          iVar5 = iVar1 * 2;
        }
        if (iVar5 < *(int *)(puVar3 + 5)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(puVar3 + 5)) {
            FUN_18047cb30(puVar3 + 4,iVar1);
          }
        }
        break;
      }
      uVar6 = (ulonglong)(iVar5 + 1);
      uVar4 = uVar4 + 1;
    } while ((longlong)uVar4 < (longlong)iVar1);
  }
  puVar2 = DAT_182673b08;
  if ((*(int *)((longlong)puVar3 + 0x2c) == 0) &&
     (DAT_182673b08 = (undefined8 *)0x0, puVar2 != (undefined8 *)0x0)) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar3 = (undefined8 *)param_1[0x17];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 1812a7460 size=224 ############

undefined1 FUN_1812a7460(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined1 uVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong local_60 [7];
  longlong *local_28;
  
  uVar4 = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x50);
  local_28 = (longlong *)0x0;
  FUN_180488560(local_60,param_1);
  *(undefined4 *)(puVar3 + 1) = 0;
  *puVar3 = `public:_static_bool___cdecl_juce::MessageManager::callAsync(std::function<void___cdecl(void)>)'
            ::__l2::AsyncCallInvoker::vftable;
  puVar3[9] = 0;
  FUN_180488560(puVar3 + 2,local_60);
  if (local_28 != (longlong *)0x0) {
    (**(code **)(*local_28 + 0x20))(local_28,local_28 != local_60,*local_28,param_4,uVar4);
    local_28 = (longlong *)0x0;
  }
  uVar2 = FUN_1812a6720(puVar3);
  plVar1 = (longlong *)param_1[7];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1);
    param_1[7] = 0;
  }
  return uVar2;
}



############ FUN_ 18051f9d0 size=107 ############

longlong FUN_18051f9d0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if (param_1 != 0) {
    lVar2 = FUN_1811316e0(0x20);
    FUN_18051b380(lVar2,param_1,param_3,param_4,uVar3);
    lVar1 = *(longlong *)(param_1 + 0x18);
    *(longlong *)(lVar2 + 0x18) = lVar1;
    if (lVar1 != 0) {
      LOCK();
      *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
      UNLOCK();
    }
    return lVar2;
  }
  return 0;
}



############ FUN_ 181343150 size=787 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181343150(longlong param_1,undefined4 param_2)

{
  int *piVar1;
  longlong *plVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  undefined8 *puVar7;
  char cVar8;
  DWORD DVar9;
  int iVar10;
  longlong lVar11;
  undefined8 *puVar12;
  ulonglong uVar13;
  float *pfVar14;
  undefined8 **ppuVar15;
  longlong lVar16;
  longlong *plVar17;
  bool bVar18;
  undefined1 auStack_118 [32];
  float local_f8;
  float fStack_f4;
  longlong local_f0;
  float local_e8;
  float local_e4;
  undefined8 *local_e0;
  undefined1 local_d8 [8];
  undefined8 local_d0;
  undefined8 local_c8;
  undefined **local_c0 [2];
  undefined4 local_b0;
  undefined ***local_88;
  longlong local_70;
  ushort local_68;
  ulonglong local_60;
  
  local_c8 = 0xfffffffffffffffe;
  local_60 = DAT_182615970 ^ (ulonglong)auStack_118;
  cVar8 = FUN_18134aa20(param_1,0);
  if (cVar8 != '\0') {
    lVar11 = FUN_1812a7550();
    DVar9 = GetCurrentThreadId();
    if ((ulonglong)DVar9 == *(ulonglong *)(lVar11 + 0x10)) {
      if (DAT_182673c20 == (undefined8 *)0x0) {
        puVar12 = (undefined8 *)FUN_1811316e0(0x28);
        local_e0 = puVar12;
        FUN_1812a59f0(puVar12);
        FUN_1812a7230(puVar12 + 2);
        *puVar12 = juce::ModalComponentManager::vftable;
        puVar12[2] = juce::ModalComponentManager::vftable;
        puVar12[3] = 0;
        puVar12[4] = 0;
        DAT_182673c20 = puVar12;
      }
      puVar12 = DAT_182673c20;
      iVar10 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
      lVar11 = (longlong)iVar10;
      if (-1 < iVar10) {
        do {
          lVar16 = *(longlong *)(puVar12[3] + lVar11 * 8);
          if (((*(longlong *)(lVar16 + 0x40) == param_1) &&
              (*(undefined4 *)(lVar16 + 0x58) = param_2, *(char *)(lVar16 + 0x5c) != '\0')) &&
             (*(undefined1 *)(lVar16 + 0x5c) = 0, puVar7 = DAT_182673c20,
             DAT_182673c20 != (undefined8 *)0x0)) {
            LOCK();
            bVar18 = *(int *)(DAT_182673c20[1] + 0x18) == 0;
            if (bVar18) {
              *(int *)(DAT_182673c20[1] + 0x18) = 1;
            }
            UNLOCK();
            if ((bVar18) && (cVar8 = FUN_1812a6720(puVar7[1]), cVar8 == '\0')) {
              LOCK();
              *(undefined4 *)(puVar7[1] + 0x18) = 0;
              UNLOCK();
            }
          }
          lVar11 = lVar11 + -1;
        } while (-1 < lVar11);
      }
      FUN_18133b010(puVar12,1);
      if (DAT_182673700 == 0) {
        local_f0 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_f0);
      }
      fVar6 = DAT_1824c3ea4;
      plVar17 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
      plVar2 = plVar17 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
      for (; plVar17 != plVar2; plVar17 = plVar17 + 1) {
        local_f0 = *plVar17;
        if (*(longlong *)(local_f0 + 0x48) == 0) {
          lVar11 = 0;
        }
        else {
          lVar11 = *(longlong *)(*(longlong *)(local_f0 + 0x48) + 0x10);
        }
        if (lVar11 != 0) {
          _ftime64_s(&local_70);
          lVar16 = local_70 * 1000;
          uVar13 = (ulonglong)local_68;
          pfVar14 = (float *)FUN_1804e5a90(*plVar17,local_d8);
          fVar3 = *pfVar14;
          fVar4 = pfVar14[1];
          puVar12 = *(undefined8 **)pfVar14;
          if (DAT_182673700 == 0) {
            local_d0 = FUN_1811316e0(0x130);
            DAT_182673700 = FUN_18133c6c0(local_d0);
          }
          fVar5 = *(float *)(DAT_182673700 + 0xc0);
          if (fVar5 == fVar6) {
            local_e0 = puVar12;
            ppuVar15 = &local_e0;
          }
          else {
            local_e8 = fVar3 / fVar5;
            local_e4 = fVar4 / fVar5;
            ppuVar15 = (undefined8 **)&local_e8;
          }
          local_f8 = fVar3;
          fStack_f4 = fVar4;
          FUN_1813412b0(lVar11,&local_f0,*ppuVar15,lVar16 + uVar13);
        }
      }
    }
    else {
      FUN_1804de690(&local_f8,param_1);
      if (CONCAT44(fStack_f4,local_f8) != 0) {
        LOCK();
        piVar1 = (int *)(CONCAT44(fStack_f4,local_f8) + 8);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
      lVar11 = CONCAT44(fStack_f4,local_f8);
      local_c0[0] = std::_Func_impl_no_alloc<<lambda_a5bafc1a9787f941c90cf3a71e19d05c>,void>::
                    vftable;
      local_88 = local_c0;
      local_b0 = param_2;
      FUN_1812a7460(local_c0);
      if (lVar11 != 0) {
        LOCK();
        piVar1 = (int *)(lVar11 + 8);
        iVar10 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar10 == 1) {
          (*(code *)**(undefined8 **)CONCAT44(fStack_f4,local_f8))
                    ((undefined8 *)CONCAT44(fStack_f4,local_f8),1);
        }
      }
    }
  }
}



############ FUN_ 1804e5a90 size=248 ############

float * FUN_1804e5a90(longlong param_1,float *param_2)

{
  int iVar1;
  undefined8 uVar2;
  tagPOINT *ptVar3;
  char cVar4;
  float fVar5;
  float fVar6;
  tagPOINT local_res8;
  undefined1 local_res10 [8];
  
  if (*(int *)(param_1 + 0x14) == 1) {
    fVar5 = *(float *)(param_1 + 0x18);
    fVar6 = *(float *)(param_1 + 0x1c);
  }
  else {
    GetCursorPos(&local_res8);
    FUN_1812c75b0();
    if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
      cVar4 = FUN_1812c7510();
    }
    else {
      uVar2 = (*DAT_182678f18)();
      iVar1 = (*DAT_182678ec8)(uVar2);
      cVar4 = iVar1 == 2;
    }
    if (cVar4 != '\0') {
      if (DAT_182673700 == 0) {
        uVar2 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar2);
      }
      ptVar3 = (tagPOINT *)
               FUN_18051ece0(*(undefined8 *)(DAT_182673700 + 0x78),local_res10,local_res8,0);
      local_res8 = *ptVar3;
    }
    fVar5 = (float)local_res8.x;
    fVar6 = (float)local_res8.y;
  }
  *param_2 = fVar5 + *(float *)(param_1 + 0x20);
  param_2[1] = fVar6 + *(float *)(param_1 + 0x24);
  return param_2;
}



############ FUN_ 18051ece0 size=239 ############

int * FUN_18051ece0(undefined8 param_1,int *param_2,undefined8 param_3,longlong param_4)

{
  float fVar1;
  int iVar2;
  int iVar3;
  undefined8 uVar4;
  double dVar5;
  
  if (param_4 == 0) {
    param_4 = FUN_18133d700(param_1,param_3,1,0,0xfffffffffffffffe);
  }
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  fVar1 = *(float *)(DAT_182673700 + 0xc0);
  iVar2 = *(int *)(param_4 + 8);
  iVar3 = *(int *)(param_4 + 0x28);
  dVar5 = *(double *)(param_4 + 0x30) / (double)fVar1;
  *param_2 = (int)((double)((int)param_3 - *(int *)(param_4 + 0x24)) / dVar5) +
             (int)((float)*(int *)(param_4 + 4) * fVar1);
  param_2[1] = (int)((double)((int)((ulonglong)param_3 >> 0x20) - iVar3) / dVar5) +
               (int)((float)iVar2 * fVar1);
  return param_2;
}



############ FUN_ 1812a7550 size=452 ############

undefined8 * FUN_1812a7550(void)

{
  uint uVar1;
  ushort *puVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  ushort *_Memory;
  uint *_Memory_00;
  longlong *local_res8;
  undefined *local_res10;
  longlong local_res18;
  
  if (DAT_1826736d0 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar4 = 0;
    puVar4[1] = 0;
    DVar3 = GetCurrentThreadId();
    puVar4[2] = (ulonglong)DVar3;
    puVar4[3] = 0;
    if (DAT_1826736d8 != 0) {
      FUN_18049c4e0(&local_res8,"JUCE Message Thread");
      _Memory_00 = (uint *)(local_res8 + -2);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
    }
    DAT_1826736d0 = puVar4;
    OleInitialize((LPVOID)0x0);
    if (DAT_182673ad8 == (longlong *)0x0) {
      local_res10 = &DAT_182673aa8;
      EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673aa8);
      if ((DAT_182673ad8 == (longlong *)0x0) && (DAT_18267aa98 == '\0')) {
        DAT_18267aa98 = 1;
        plVar5 = (longlong *)FUN_1811316e0(0x48);
        *plVar5 = 0;
        local_res8 = plVar5;
        InitializeCriticalSection((LPCRITICAL_SECTION)(plVar5 + 1));
        plVar5[7] = 0;
        plVar5[8] = 0;
        local_res18 = FUN_1811316e0(0x10);
        _Memory = (ushort *)FUN_1804cf280(local_res18,&DAT_1821e11d8,FUN_1804d1550);
        if (plVar5 == &local_res18) {
          if (_Memory != (ushort *)0x0) {
            DestroyWindow(*(HWND *)(_Memory + 4));
            UnregisterClassW((LPCWSTR)(ulonglong)*_Memory,(HINSTANCE)0x0);
            goto LAB_1812a76d2;
          }
        }
        else {
          puVar2 = (ushort *)*plVar5;
          *plVar5 = (longlong)_Memory;
          if (puVar2 != (ushort *)0x0) {
            DestroyWindow(*(HWND *)(puVar2 + 4));
            UnregisterClassW((LPCWSTR)(ulonglong)*puVar2,(HINSTANCE)0x0);
            _Memory = puVar2;
LAB_1812a76d2:
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        DAT_1826736b0 = *(undefined8 *)(*plVar5 + 8);
        DAT_18267aa98 = '\0';
        DAT_182673ad8 = plVar5;
      }
      LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673aa8);
    }
  }
  return DAT_1826736d0;
}



############ FUN_ 1813412b0 size=593 ############

void FUN_1813412b0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  char cVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  undefined8 *local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  double local_e0;
  undefined8 local_d8;
  undefined8 local_c8;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  uint local_b8;
  double local_b0;
  undefined8 local_a8;
  float local_98;
  float local_94;
  undefined4 local_90;
  undefined4 local_8c;
  uint local_88;
  undefined8 local_84;
  undefined8 local_7c;
  undefined4 local_74;
  undefined8 local_70;
  longlong *local_68;
  longlong *local_60;
  undefined8 local_58;
  undefined8 local_50;
  longlong local_48;
  undefined2 local_40;
  undefined8 local_38;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  local_38 = 0xfffffffffffffffe;
  local_e8 = param_3;
  cVar3 = FUN_181343030();
  if (cVar3 == '\0') {
    if ((*(byte *)((longlong)param_1 + 0xa9) & 8) != 0) {
      uStack_bc = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_c0 = (undefined4)param_1[5];
      local_c8 = 0;
      local_28 = 0;
      uStack_24 = 0;
      uStack_20 = uStack_c0;
      uStack_1c = uStack_bc;
      FUN_181342870(param_1,&local_28,1);
    }
    FUN_1804de690(&local_f8,param_1);
    local_48 = *param_2;
    local_b8 = DAT_182673aec & 0xffffff8f;
    local_88 = *(uint *)(local_48 + 0x28) | local_b8;
    local_98 = (float)local_e8;
    local_94 = local_e8._4_4_;
    local_b0 = (double)(float)local_e8 + DAT_1824c4520;
    local_90 = local_b0._0_4_;
    local_e0 = (double)local_e8._4_4_ + DAT_1824c4520;
    local_8c = local_e0._0_4_;
    local_84 = 0;
    local_7c = 0;
    local_74 = 0;
    local_40 = 0;
    local_70 = param_3;
    local_68 = param_1;
    local_60 = param_1;
    local_58 = param_4;
    local_50 = param_4;
    (**(code **)(*param_1 + 0x10))(param_1,&local_98);
    if (local_f8 == (undefined8 *)0x0) {
      lVar4 = 0;
    }
    else {
      lVar4 = local_f8[2];
    }
    if (lVar4 != 0) {
      if (DAT_182673700 == 0) {
        local_d8 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_d8);
      }
      lVar4 = DAT_182673700;
      FUN_18133bd90(DAT_182673700);
      iVar6 = *(int *)(lVar4 + 0x44);
      while( true ) {
        if (local_f8 == (undefined8 *)0x0) {
          lVar5 = 0;
        }
        else {
          lVar5 = local_f8[2];
        }
        if ((lVar5 == 0) || (iVar6 < 1)) break;
        iVar6 = iVar6 + -1;
        if ((*(int *)(lVar4 + 0x44) <= iVar6) && (iVar6 = *(int *)(lVar4 + 0x44) + -1, iVar6 < 0))
        break;
        plVar2 = *(longlong **)(*(longlong *)(lVar4 + 0x38) + (longlong)iVar6 * 8);
        (**(code **)(*plVar2 + 0x10))(plVar2,&local_98);
      }
      FUN_18051e7b0(param_1,&local_f8,FUN_180526060,&local_98);
    }
    if (local_f8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_f8 + 1);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)*local_f8)(local_f8,1);
      }
    }
  }
  else {
    local_a8 = 0;
    local_f0 = 0;
    FUN_1804e6d20(*param_2,&local_f0,0);
  }
  return;
}



############ FUN_ 1804e6d20 size=363 ############

void FUN_1804e6d20(longlong param_1,longlong *param_2,char param_3,undefined8 param_4)

{
  longlong lVar1;
  uint uVar2;
  char cVar3;
  HCURSOR pHVar4;
  HCURSOR pHVar5;
  
  pHVar5 = (HCURSOR)0x0;
  if ((*(char *)(param_1 + 0x40) == '\0') ||
     (((*(float *)(param_1 + 0x20) == 0.0 && (*(float *)(param_1 + 0x24) == 0.0)) &&
      (*(char *)(param_1 + 0x41) != '\0')))) {
    if (param_3 == '\0') {
      pHVar4 = pHVar5;
      if (*param_2 != 0) {
        pHVar4 = *(HCURSOR *)(*param_2 + 8);
      }
      if (pHVar4 == *(HCURSOR *)(param_1 + 0x60)) goto LAB_1804e6e6e;
    }
  }
  else {
    do {
      LOCK();
      uVar2 = DAT_182673b68 & 1;
      DAT_182673b68 = DAT_182673b68 | 1;
      UNLOCK();
    } while (uVar2 != 0);
    if (DAT_18267aad8 == (undefined8 *)0x0) {
      DAT_18267aad8 =
           (undefined8 *)FUN_1811316e0(0x20,&DAT_182673b68,param_3,param_4,0xfffffffffffffffe);
      *DAT_18267aad8 = 0;
      DAT_18267aad8[1] = 0x7ef4;
      *(undefined4 *)(DAT_18267aad8 + 2) = 1;
      *(undefined4 *)((longlong)DAT_18267aad8 + 0x14) = 1;
      *(undefined1 *)(DAT_18267aad8 + 3) = 1;
    }
    else {
      LOCK();
      *(int *)(DAT_18267aad8 + 2) = *(int *)(DAT_18267aad8 + 2) + 1;
      UNLOCK();
    }
    LOCK();
    DAT_182673b68 = 0;
    UNLOCK();
    lVar1 = *param_2;
    *param_2 = (longlong)DAT_18267aad8;
    if (lVar1 != 0) {
      FUN_1804e9060(lVar1);
    }
  }
  pHVar4 = pHVar5;
  if (*param_2 != 0) {
    pHVar4 = *(HCURSOR *)(*param_2 + 8);
  }
  *(HCURSOR *)(param_1 + 0x60) = pHVar4;
  cVar3 = FUN_1812d2b50(*(undefined8 *)(param_1 + 0x58));
  if (cVar3 == '\0') {
    *(undefined8 *)(param_1 + 0x58) = 0;
  }
  pHVar4 = pHVar5;
  if (*param_2 != 0) {
    pHVar4 = *(HCURSOR *)(*param_2 + 8);
  }
  if (pHVar4 == (HCURSOR)0x0) {
    pHVar4 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
  }
  else if (pHVar4 == (HCURSOR)0x7ef4) {
    pHVar4 = pHVar5;
  }
  SetCursor(pHVar4);
LAB_1804e6e6e:
  if (*param_2 != 0) {
    FUN_1804e9060();
  }
  return;
}



############ FUN_ 1812d2b50 size=110 ############

longlong FUN_1812d2b50(longlong param_1)

{
  longlong *plVar1;
  undefined8 uVar2;
  uint7 uVar3;
  longlong *plVar4;
  
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  plVar4 = *(longlong **)(DAT_182673700 + 0x68);
  plVar1 = plVar4 + *(int *)(DAT_182673700 + 0x74);
  uVar3 = (uint7)(int3)((uint)*(int *)(DAT_182673700 + 0x74) >> 8);
  while( true ) {
    if (plVar4 == plVar1) {
      return (ulonglong)uVar3 << 8;
    }
    if (param_1 == *plVar4) break;
    plVar4 = plVar4 + 1;
  }
  return CONCAT71(uVar3,1);
}



############ FUN_ 18133bd90 size=285 ############

void FUN_18133bd90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float *pfVar4;
  undefined8 local_res8;
  undefined8 local_res10;
  
  if (*(int *)(param_1 + 0x44) == 0) {
    FUN_1812a7720(param_1 + 8);
  }
  else {
    FUN_1812a77d0(param_1 + 8,100,param_3,param_4,0xfffffffffffffffe);
  }
  if (DAT_182673700 == 0) {
    local_res8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8);
  }
  pfVar4 = (float *)FUN_1804e5a90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),
                                  &local_res8);
  fVar1 = *pfVar4;
  fVar2 = pfVar4[1];
  if (DAT_182673700 == 0) {
    local_res10 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res10);
  }
  fVar3 = *(float *)(DAT_182673700 + 0xc0);
  local_res8._0_4_ = fVar1;
  local_res8._4_4_ = fVar2;
  if (fVar3 != DAT_1824c3ea4) {
    local_res8._0_4_ = fVar1 / fVar3;
    local_res8._4_4_ = fVar2 / fVar3;
  }
  *(float *)(param_1 + 0x80) = (float)local_res8;
  *(float *)(param_1 + 0x84) = local_res8._4_4_;
  return;
}



############ FUN_ 18134aa20 size=264 ############

longlong FUN_18134aa20(ulonglong param_1,char param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong *plVar5;
  uint7 uVar6;
  longlong lVar7;
  longlong *plVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  
  uVar9 = 0;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar2);
    FUN_1812a7230(puVar2 + 2);
    *puVar2 = juce::ModalComponentManager::vftable;
    puVar2[2] = juce::ModalComponentManager::vftable;
    puVar2[3] = 0;
    puVar2[4] = 0;
    DAT_182673c20 = puVar2;
  }
  if (param_2 == '\0') {
    plVar5 = (longlong *)DAT_182673c20[3];
    plVar8 = plVar5 + *(int *)((longlong)DAT_182673c20 + 0x24);
    for (; uVar6 = (uint7)((ulonglong)plVar5 >> 8), plVar5 != plVar8; plVar5 = plVar5 + 1) {
      if ((*(char *)(*plVar5 + 0x5c) != '\0') && (*(ulonglong *)(*plVar5 + 0x40) == param_1)) {
        return CONCAT71(uVar6,1);
      }
    }
    lVar7 = (ulonglong)uVar6 << 8;
  }
  else {
    uVar1 = *(int *)((longlong)DAT_182673c20 + 0x24) - 1;
    uVar4 = (ulonglong)uVar1;
    if (-1 < (int)uVar1) {
      lVar7 = (longlong)(int)uVar1;
      uVar3 = DAT_182673c20[3];
      plVar8 = (longlong *)(uVar3 + lVar7 * 8);
      uVar10 = uVar9;
      do {
        uVar4 = uVar10;
        uVar10 = uVar4;
        if ((*(char *)(*plVar8 + 0x5c) != '\0') &&
           (uVar10 = (ulonglong)((int)uVar4 + 1), uVar3 = uVar4, (int)uVar4 == 0)) {
          uVar9 = *(ulonglong *)(*plVar8 + 0x40);
          break;
        }
        plVar8 = plVar8 + -1;
        lVar7 = lVar7 + -1;
        uVar4 = uVar3;
      } while (-1 < lVar7);
    }
    lVar7 = CONCAT71((int7)(uVar4 >> 8),param_1 == uVar9);
  }
  return lVar7;
}



############ FUN_ 1812e2030 size=279 ############

void FUN_1812e2030(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *local_20;
  undefined8 local_18;
  undefined8 local_10;
  
  uVar4 = 0xfffffffffffffffe;
  *param_1 = juce::TextEditor::vftable;
  param_1[0x16] = juce::TextEditor::vftable;
  param_1[0x17] = juce::TextEditor::vftable;
  if (*(char *)((longlong)param_1 + 500) != '\0') {
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      if (param_1[3] == 0) goto LAB_1812e20b7;
      plVar1 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar1 = (longlong *)FUN_1812d2bd0();
    }
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0xd8))(plVar1);
    }
  }
LAB_1812e20b7:
  lVar3 = param_1[0x3a] + 200;
  if (param_1[0x3a] == 0) {
    lVar3 = 0;
  }
  FUN_1813514c0(param_1 + 0x5b,lVar3,param_3,param_4,uVar4);
  puVar2 = (undefined8 *)FUN_1811316e0(0x40);
  FUN_181351450(puVar2);
  *puVar2 = juce::SimpleValueSource::vftable;
  puVar2[2] = juce::SimpleValueSource::vftable;
  puVar2[6] = &PTR_vftable_18262b558;
  LOCK();
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  UNLOCK();
  local_18 = 0;
  local_10 = 0;
  local_20 = puVar2;
  FUN_181351620(param_1 + 0x5b,&local_20);
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 181252ea0 size=371 ############

void FUN_181252ea0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint *puVar2;
  int iVar3;
  uint uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  uint *local_res8;
  undefined *local_res10;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  if (DAT_182673a68 == (uint *)0x0) {
    local_res10 = &DAT_182673a38;
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
    if ((DAT_182673a68 == (uint *)0x0) && (DAT_18267aa70 == '\0')) {
      DAT_18267aa70 = 1;
      puVar6 = (uint *)FUN_1811316e0(0x1a0);
      local_res8 = puVar6;
      FUN_1812a7230(puVar6);
      *(undefined ***)puVar6 = juce::TypefaceCache::vftable;
      puVar6[2] = 0;
      puVar6[3] = 0;
      FUN_18122bd40(puVar6 + 4);
      puVar6[0x62] = 0;
      puVar6[99] = 0;
      puVar6[100] = 0;
      puVar6[0x65] = 0;
      puVar6[0x66] = 0;
      puVar6[0x67] = 0;
      FUN_1804a2290(puVar6,10);
      DAT_18267aa70 = '\0';
      DAT_182673a68 = puVar6;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
  }
  puVar6 = DAT_182673a68;
  FUN_180493780(&local_res8,DAT_182673a68 + 4,param_3,param_4,uVar7);
  FUN_1804a2290(puVar6,puVar6[0x65]);
  puVar5 = *(undefined8 **)(puVar6 + 2);
  puVar6[2] = 0;
  puVar6[3] = 0;
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar5 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  do {
    puVar6 = local_res8;
    LOCK();
    uVar4 = *local_res8;
    *local_res8 = *local_res8 | 1;
    UNLOCK();
  } while ((uVar4 & 1) != 0);
  puVar2 = local_res8 + 0x57;
  *puVar2 = *puVar2 - 1;
  if (*puVar2 == 0) {
    local_res8[0x58] = 0;
    local_res8[0x59] = 0;
    FUN_181215c10(local_res8 + 2);
    FUN_181215c10(puVar6 + 0x2c);
  }
  LOCK();
  *puVar6 = 0;
  UNLOCK();
  uVar7 = FUN_1804a8480();
  FUN_1804a83f0(uVar7);
  if (DAT_1826736c0 != (code *)0x0) {
    (*DAT_1826736c0)();
  }
  return;
}



############ FUN_ 1804a8480 size=115 ############

undefined8 * FUN_1804a8480(void)

{
  undefined8 *puVar1;
  
  puVar1 = DAT_18267aa68;
  if (DAT_18267aa68 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x50);
    FUN_1812a7230(puVar1);
    *puVar1 = juce::RenderingHelpers::
              GlyphCache<juce::RenderingHelpers::CachedGlyphEdgeTable<juce::RenderingHelpers::SoftwareRendererSavedState>,juce::RenderingHelpers::SoftwareRendererSavedState>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
    *(undefined4 *)(puVar1 + 4) = 0;
    InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)puVar1 + 0x24));
    FUN_1804a83f0(puVar1);
  }
  DAT_18267aa68 = puVar1;
  return puVar1;
}



############ FUN_ 1804ac500 size=255 ############

void FUN_1804ac500(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  int iVar4;
  
  iVar4 = *(int *)(param_1 + 0x14) + param_2;
  plVar1 = (longlong *)(param_1 + 8);
  if (*(int *)(param_1 + 0x10) < iVar4) {
    FUN_18047cb30(plVar1,iVar4 + 8 + iVar4 / 2 & 0xfffffff8,iVar4,param_4,0xfffffffffffffffe);
  }
  while (param_2 = param_2 + -1, -1 < param_2) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x30);
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
    puVar3[4] = 0;
    puVar3[5] = 0;
    *(undefined4 *)(puVar3 + 1) = 0;
    *puVar3 = juce::RenderingHelpers::
              CachedGlyphEdgeTable<juce::RenderingHelpers::SoftwareRendererSavedState>::vftable;
    FUN_181252d20(puVar3 + 2);
    puVar3[3] = 0;
    puVar3[4] = 0;
    *(undefined1 *)(puVar3 + 5) = 0;
    iVar2 = *(int *)(param_1 + 0x14);
    iVar4 = iVar2 + 1;
    if (*(int *)(param_1 + 0x10) < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iVar2 + 2;
      }
      FUN_18047cb30(plVar1,iVar2 + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iVar4 = *(int *)(param_1 + 0x14);
    *(int *)(param_1 + 0x14) = iVar4 + 1;
    *(undefined8 **)(*plVar1 + (longlong)iVar4 * 8) = puVar3;
    LOCK();
    *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
    UNLOCK();
  }
  return;
}



############ FUN_ 181252d20 size=368 ############

undefined8 * FUN_181252d20(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  longlong lVar4;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x40);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::Font::SharedFontInternal::vftable;
  if (DAT_182673a68 == (undefined8 *)0x0) {
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
    if ((DAT_182673a68 == (undefined8 *)0x0) && (DAT_18267aa70 == '\0')) {
      DAT_18267aa70 = 1;
      puVar2 = (undefined8 *)FUN_1811316e0(0x1a0);
      FUN_1812a7230(puVar2);
      *puVar2 = juce::TypefaceCache::vftable;
      puVar2[1] = 0;
      FUN_18122bd40(puVar2 + 2);
      puVar2[0x31] = 0;
      puVar2[0x32] = 0;
      puVar2[0x33] = 0;
      FUN_1804a2290(puVar2,10);
      DAT_18267aa70 = '\0';
      DAT_182673a68 = puVar2;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
  }
  lVar4 = DAT_182673a68[1];
  puVar1[2] = lVar4;
  if (lVar4 != 0) {
    LOCK();
    *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
    UNLOCK();
  }
  plVar3 = (longlong *)FUN_181252610();
  lVar4 = *plVar3;
  puVar1[3] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  lVar4 = FUN_181252610();
  lVar4 = *(longlong *)(lVar4 + 0x18);
  puVar1[4] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(puVar1 + 5) = 0x41600000;
  *(undefined8 *)((longlong)puVar1 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar1 + 0x34) = 0;
  *(undefined1 *)(puVar1 + 7) = 0;
  *param_1 = puVar1;
  LOCK();
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  UNLOCK();
  return param_1;
}



############ FUN_ 1805989c0 size=172 ############

ulonglong * FUN_1805989c0(void)

{
  ulonglong uVar1;
  ulonglong uVar2;
  DWORD DVar3;
  ulonglong *puVar4;
  ulonglong *puVar5;
  bool bVar6;
  
  DVar3 = GetCurrentThreadId();
  uVar2 = (ulonglong)DVar3;
  for (puVar4 = DAT_182674808; puVar5 = DAT_182674808, puVar4 != (ulonglong *)0x0;
      puVar4 = (ulonglong *)puVar4[1]) {
    if (*puVar4 == uVar2) goto LAB_180598a62;
  }
  do {
    puVar4 = puVar5;
    if (puVar4 == (ulonglong *)0x0) {
LAB_180598a1d:
      puVar4 = (ulonglong *)FUN_1811316e0(0x18);
      puVar5 = DAT_182674808;
      *puVar4 = uVar2;
      puVar4[2] = 0;
      do {
        puVar4[1] = (ulonglong)puVar5;
        LOCK();
        bVar6 = puVar5 != DAT_182674808;
        puVar5 = puVar4;
        if (bVar6) {
          puVar5 = DAT_182674808;
        }
        DAT_182674808 = puVar5;
        UNLOCK();
        puVar5 = DAT_182674808;
      } while (bVar6);
LAB_180598a62:
      return puVar4 + 2;
    }
    LOCK();
    uVar1 = *puVar4;
    if (uVar1 == 0) {
      *puVar4 = uVar2;
    }
    UNLOCK();
    if (uVar1 == 0) {
      if (puVar4 != (ulonglong *)0x0) {
        puVar4[2] = 0;
        goto LAB_180598a62;
      }
      goto LAB_180598a1d;
    }
    puVar5 = (ulonglong *)puVar4[1];
  } while( true );
}



############ FUN_ 1812d2cf0 size=331 ############

void FUN_1812d2cf0(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  char cVar5;
  longlong lVar6;
  int iVar7;
  bool bVar8;
  
  *param_1 = juce::ComponentPeer::vftable;
  if (DAT_182673700 == 0) {
    FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0();
  }
  lVar4 = DAT_182673700;
  iVar7 = 0;
  lVar6 = 0;
  iVar2 = *(int *)(DAT_182673700 + 0x74);
  if (0 < iVar2) {
    do {
      if (param_1 == *(undefined8 **)(*(longlong *)(DAT_182673700 + 0x68) + lVar6 * 8)) {
        _Dst = (void *)(*(longlong *)(DAT_182673700 + 0x68) + (longlong)iVar7 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar4 + 0x74) = *(int *)(lVar4 + 0x74) + -1;
        iVar2 = *(int *)(lVar4 + 0x74);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar4 + 0x70)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar4 + 0x70)) {
            FUN_18047cb30(lVar4 + 0x68);
          }
        }
        break;
      }
      iVar7 = iVar7 + 1;
      lVar6 = lVar6 + 1;
    } while (lVar6 < iVar2);
  }
  piVar1 = (int *)(*(longlong *)(lVar4 + 0x28) + 0x18);
  LOCK();
  bVar8 = *piVar1 == 0;
  if (bVar8) {
    *piVar1 = 1;
  }
  UNLOCK();
  if ((bVar8) && (cVar5 = FUN_1812a6720(*(undefined8 *)(lVar4 + 0x28)), cVar5 == '\0')) {
    LOCK();
    *(undefined4 *)(*(longlong *)(lVar4 + 0x28) + 0x18) = 0;
    UNLOCK();
  }
  puVar3 = (undefined8 *)param_1[9];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[8];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001812d2e34. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)param_1[6]);
  return;
}



############ FUN_ 180462310 size=218 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180462310(void)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res8 [4];
  
  uVar2 = FUN_18122bf10();
  FUN_18122c1b0(uVar2,local_res8,&DAT_182673800);
  DAT_1826738b0 = (undefined8 *)FUN_1811316e0(0x50);
  *(undefined4 *)(DAT_1826738b0 + 1) = 0;
  *DAT_1826738b0 = juce::ValueTree::SharedObject::vftable;
  DAT_1826738b0[2] = local_res8[0];
  if ((*(uint *)(local_res8[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8[0] + -0x10) = *(int *)(local_res8[0] + -0x10) + 1;
    UNLOCK();
  }
  DAT_1826738b0[3] = 0;
  DAT_1826738b0[4] = 0;
  DAT_1826738b0[5] = 0;
  DAT_1826738b0[6] = 0;
  DAT_1826738b0[7] = 0;
  DAT_1826738b0[8] = 0;
  DAT_1826738b0[9] = 0;
  LOCK();
  *(int *)(DAT_1826738b0 + 1) = *(int *)(DAT_1826738b0 + 1) + 1;
  UNLOCK();
  DAT_1826738b8 = 0;
  _DAT_1826738c0 = 0;
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  atexit(FUN_181a4a430);
  return;
}



############ FUN_ 1805a2340 size=1022 ############

longlong * FUN_1805a2340(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  char cVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *local_res8;
  longlong *local_res10;
  longlong *local_res18;
  undefined4 uVar7;
  longlong local_100;
  longlong *aplStack_f8 [2];
  undefined **local_e8;
  longlong *local_e0;
  char *local_d8;
  char *local_d0;
  undefined4 local_c8;
  undefined **local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined **local_a8 [4];
  undefined **local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined4 local_68;
  undefined **local_60;
  char *local_58;
  undefined8 local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  plVar6 = (longlong *)0x0;
  local_80 = (longlong *)0x0;
  local_78 = 0;
  uStack_70 = 0;
  local_68 = 0xffffffff;
  local_50 = 0;
  local_58 = "bad allocation";
  local_88 = boost::exception_detail::bad_alloc_::vftable;
  local_60 = boost::exception_detail::bad_alloc_::vftable;
  local_a8[0] = (undefined **)&DAT_181bae6c8;
  local_a8[2] = boost::exception_detail::clone_base::vftable;
  uVar7 = 2;
  local_e8 = boost::exception::vftable;
  local_e0 = (longlong *)0x0;
  local_d8 = (char *)0x0;
  local_d0 = (char *)0x0;
  local_c8 = 0xffffffff;
  local_c0 = std::exception::vftable;
  local_b8 = 0;
  local_b0 = 0;
  local_res8 = param_1;
  __std_exception_copy(&local_58,&local_b8,param_3,param_4,2);
  local_e8 = boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
  local_c0 = boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
  *(undefined ***)((longlong)local_a8 + (longlong)*(int *)((longlong)local_a8[0] + 4)) =
       boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
  *(int *)((longlong)local_a8 + (longlong)*(int *)((longlong)local_a8[0] + 4) + -4) =
       *(int *)((longlong)local_a8[0] + 4) + -0x10;
  local_res10 = (longlong *)0x0;
  plVar5 = plVar6;
  if (local_80 != (longlong *)0x0) {
    plVar5 = (longlong *)(**(code **)(*local_80 + 0x28))(local_80,&local_res8);
    plVar5 = (longlong *)*plVar5;
    local_res10 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      (**(code **)(*plVar5 + 0x18))(plVar5);
    }
    if ((local_res8 != (longlong *)0x0) &&
       (cVar4 = (**(code **)(*local_res8 + 0x20))(), cVar4 != '\0')) {
      local_res8 = plVar6;
    }
  }
  local_d0 = (char *)uStack_70;
  local_c8 = local_68;
  local_d8 = (char *)local_78;
  if (local_e0 != (longlong *)0x0) {
    (**(code **)(*local_e0 + 0x20))();
  }
  local_e0 = plVar5;
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x18))(plVar5);
    (**(code **)(*plVar5 + 0x20))(plVar5);
  }
  local_d8 = 
  "class boost::exception_ptr __cdecl boost::exception_detail::get_static_exception_object<struct boost::exception_detail::bad_alloc_>(void)"
  ;
  local_d0 = 
  "d:\\jenkins\\full\\eden\\client\\thirdpartylibs\\installedwin32\\individual\\boost\\include\\boost\\exception\\detail\\exception_ptr.hpp"
  ;
  local_c8 = 0x7c;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18265db80) && (_Init_thread_header(&DAT_18265db80), DAT_18265db80 == -1)) {
    plVar5 = (longlong *)FUN_1811316e0(0x58);
    local_res18 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      plVar5[8] = (longlong)&DAT_181bae6c8;
      plVar5[10] = (longlong)boost::exception_detail::clone_base::vftable;
      uVar7 = 6;
      *plVar5 = (longlong)boost::exception::vftable;
      plVar5[1] = (longlong)local_e0;
      if (local_e0 != (longlong *)0x0) {
        (**(code **)(*local_e0 + 0x18))();
      }
      plVar5[2] = (longlong)local_d8;
      plVar5[3] = (longlong)local_d0;
      *(undefined4 *)(plVar5 + 4) = local_c8;
      plVar5[5] = (longlong)std::exception::vftable;
      plVar5[6] = 0;
      plVar5[7] = 0;
      __std_exception_copy(&local_b8);
      *plVar5 = (longlong)
                boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
      plVar5[5] = (longlong)
                  boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
      *(undefined ***)((longlong)*(int *)(plVar5[8] + 4) + 0x40 + (longlong)plVar5) =
           boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
      *(undefined4 *)((longlong)*(int *)(plVar5[8] + 4) + 0x3c + (longlong)plVar5) = 0;
      plVar6 = plVar5;
    }
    if (plVar6 == (longlong *)0x0) {
      local_100 = 0;
    }
    else {
      local_100 = (longlong)plVar6 + (longlong)*(int *)(plVar6[8] + 4) + 0x40;
    }
    FUN_1805a0b50(aplStack_f8,plVar6);
    FUN_1805ae620(&local_100,plVar6,plVar6,param_4,uVar7);
    DAT_18265db70 = local_100;
    DAT_18265db78 = aplStack_f8[0];
    if (aplStack_f8[0] != (longlong *)0x0) {
      LOCK();
      *(int *)(aplStack_f8[0] + 1) = (int)aplStack_f8[0][1] + 1;
      UNLOCK();
      LOCK();
      plVar5 = aplStack_f8[0] + 1;
      lVar3 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar3 == 1) {
        (**(code **)(*aplStack_f8[0] + 8))(aplStack_f8[0]);
        LOCK();
        piVar1 = (int *)((longlong)aplStack_f8[0] + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*aplStack_f8[0] + 0x10))(aplStack_f8[0]);
        }
      }
    }
    atexit(FUN_181a502e0);
    _Init_thread_footer(&DAT_18265db80);
  }
  *param_1 = DAT_18265db70;
  plVar5 = DAT_18265db78;
  param_1[1] = (longlong)DAT_18265db78;
  if (plVar5 != (longlong *)0x0) {
    LOCK();
    plVar5 = plVar5 + 1;
    *(int *)plVar5 = (int)*plVar5 + 1;
    UNLOCK();
  }
  FUN_1805a0480(&local_e8);
  local_88 = boost::exception_detail::bad_alloc_::vftable;
  local_60 = std::exception::vftable;
  __std_exception_destroy(&local_58);
  local_88 = boost::exception::vftable;
  if (local_80 != (longlong *)0x0) {
    (**(code **)(*local_80 + 0x20))();
  }
  return param_1;
}



############ FUN_ 1805a0b50 size=97 ############

undefined8 * FUN_1805a0b50(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805a2740 size=1022 ############

longlong * FUN_1805a2740(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  char cVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *local_res8;
  longlong *local_res10;
  longlong *local_res18;
  undefined4 uVar7;
  longlong local_100;
  longlong *aplStack_f8 [2];
  undefined **local_e8;
  longlong *local_e0;
  char *local_d8;
  char *local_d0;
  undefined4 local_c8;
  undefined **local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined **local_a8 [4];
  undefined **local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined4 local_68;
  undefined **local_60;
  char *local_58;
  undefined8 local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  plVar6 = (longlong *)0x0;
  local_80 = (longlong *)0x0;
  local_78 = 0;
  uStack_70 = 0;
  local_68 = 0xffffffff;
  local_50 = 0;
  local_58 = "bad exception";
  local_88 = boost::exception_detail::bad_exception_::vftable;
  local_60 = boost::exception_detail::bad_exception_::vftable;
  local_a8[0] = (undefined **)&DAT_181bae828;
  local_a8[2] = boost::exception_detail::clone_base::vftable;
  uVar7 = 2;
  local_e8 = boost::exception::vftable;
  local_e0 = (longlong *)0x0;
  local_d8 = (char *)0x0;
  local_d0 = (char *)0x0;
  local_c8 = 0xffffffff;
  local_c0 = std::exception::vftable;
  local_b8 = 0;
  local_b0 = 0;
  local_res8 = param_1;
  __std_exception_copy(&local_58,&local_b8,param_3,param_4,2);
  local_e8 = boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::vftable;
  local_c0 = boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::vftable;
  *(undefined ***)((longlong)local_a8 + (longlong)*(int *)((longlong)local_a8[0] + 4)) =
       boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::vftable;
  *(int *)((longlong)local_a8 + (longlong)*(int *)((longlong)local_a8[0] + 4) + -4) =
       *(int *)((longlong)local_a8[0] + 4) + -0x10;
  local_res10 = (longlong *)0x0;
  plVar5 = plVar6;
  if (local_80 != (longlong *)0x0) {
    plVar5 = (longlong *)(**(code **)(*local_80 + 0x28))(local_80,&local_res8);
    plVar5 = (longlong *)*plVar5;
    local_res10 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      (**(code **)(*plVar5 + 0x18))(plVar5);
    }
    if ((local_res8 != (longlong *)0x0) &&
       (cVar4 = (**(code **)(*local_res8 + 0x20))(), cVar4 != '\0')) {
      local_res8 = plVar6;
    }
  }
  local_d0 = (char *)uStack_70;
  local_c8 = local_68;
  local_d8 = (char *)local_78;
  if (local_e0 != (longlong *)0x0) {
    (**(code **)(*local_e0 + 0x20))();
  }
  local_e0 = plVar5;
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x18))(plVar5);
    (**(code **)(*plVar5 + 0x20))(plVar5);
  }
  local_d8 = 
  "class boost::exception_ptr __cdecl boost::exception_detail::get_static_exception_object<struct boost::exception_detail::bad_exception_>(void)"
  ;
  local_d0 = 
  "d:\\jenkins\\full\\eden\\client\\thirdpartylibs\\installedwin32\\individual\\boost\\include\\boost\\exception\\detail\\exception_ptr.hpp"
  ;
  local_c8 = 0x7c;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18265db98) && (_Init_thread_header(&DAT_18265db98), DAT_18265db98 == -1)) {
    plVar5 = (longlong *)FUN_1811316e0(0x58);
    local_res18 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      plVar5[8] = (longlong)&DAT_181bae828;
      plVar5[10] = (longlong)boost::exception_detail::clone_base::vftable;
      uVar7 = 6;
      *plVar5 = (longlong)boost::exception::vftable;
      plVar5[1] = (longlong)local_e0;
      if (local_e0 != (longlong *)0x0) {
        (**(code **)(*local_e0 + 0x18))();
      }
      plVar5[2] = (longlong)local_d8;
      plVar5[3] = (longlong)local_d0;
      *(undefined4 *)(plVar5 + 4) = local_c8;
      plVar5[5] = (longlong)std::exception::vftable;
      plVar5[6] = 0;
      plVar5[7] = 0;
      __std_exception_copy(&local_b8);
      *plVar5 = (longlong)
                boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::
                vftable;
      plVar5[5] = (longlong)
                  boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::
                  vftable;
      *(undefined ***)((longlong)*(int *)(plVar5[8] + 4) + 0x40 + (longlong)plVar5) =
           boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::vftable;
      *(undefined4 *)((longlong)*(int *)(plVar5[8] + 4) + 0x3c + (longlong)plVar5) = 0;
      plVar6 = plVar5;
    }
    if (plVar6 == (longlong *)0x0) {
      local_100 = 0;
    }
    else {
      local_100 = (longlong)plVar6 + (longlong)*(int *)(plVar6[8] + 4) + 0x40;
    }
    FUN_1805a0bc0(aplStack_f8,plVar6);
    FUN_1805ae620(&local_100,plVar6,plVar6,param_4,uVar7);
    DAT_18265db88 = local_100;
    DAT_18265db90 = aplStack_f8[0];
    if (aplStack_f8[0] != (longlong *)0x0) {
      LOCK();
      *(int *)(aplStack_f8[0] + 1) = (int)aplStack_f8[0][1] + 1;
      UNLOCK();
      LOCK();
      plVar5 = aplStack_f8[0] + 1;
      lVar3 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar3 == 1) {
        (**(code **)(*aplStack_f8[0] + 8))(aplStack_f8[0]);
        LOCK();
        piVar1 = (int *)((longlong)aplStack_f8[0] + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*aplStack_f8[0] + 0x10))(aplStack_f8[0]);
        }
      }
    }
    atexit(FUN_181a50340);
    _Init_thread_footer(&DAT_18265db98);
  }
  *param_1 = DAT_18265db88;
  plVar5 = DAT_18265db90;
  param_1[1] = (longlong)DAT_18265db90;
  if (plVar5 != (longlong *)0x0) {
    LOCK();
    plVar5 = plVar5 + 1;
    *(int *)plVar5 = (int)*plVar5 + 1;
    UNLOCK();
  }
  FUN_1805a05f0(&local_e8);
  local_88 = boost::exception_detail::bad_exception_::vftable;
  local_60 = std::exception::vftable;
  __std_exception_destroy(&local_58);
  local_88 = boost::exception::vftable;
  if (local_80 != (longlong *)0x0) {
    (**(code **)(*local_80 + 0x20))();
  }
  return param_1;
}



############ FUN_ 1805a0bc0 size=97 ############

undefined8 * FUN_1805a0bc0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180469e10 size=386 ############

void FUN_180469e10(void)

{
  undefined *_Memory;
  code *pcVar1;
  _Locimp *p_Var2;
  codecvt<wchar_t,char,_Mbstatet> *pcVar3;
  _Locimp *p_Var4;
  void *_Dst;
  undefined8 *puVar5;
  char *pcVar6;
  char *pcVar7;
  codecvt<wchar_t,char,_Mbstatet> *local_res8;
  
  pcVar3 = (codecvt<wchar_t,char,_Mbstatet> *)FUN_1811316e0(0x40);
  local_res8 = pcVar3;
  if (pcVar3 == (codecvt<wchar_t,char,_Mbstatet> *)0x0) {
    pcVar3 = (codecvt<wchar_t,char,_Mbstatet> *)0x0;
  }
  else {
    std::codecvt<wchar_t,char,_Mbstatet>::codecvt<wchar_t,char,_Mbstatet>(pcVar3,0);
    *(undefined ***)pcVar3 = boost::filesystem::detail::utf8_codecvt_facet::vftable;
  }
  p_Var4 = std::locale::_Init(true);
  DAT_18265f150 = std::locale::_Locimp::_New_Locimp(p_Var4);
  pcVar1 = id_exref;
  if (pcVar3 != (codecvt<wchar_t,char,_Mbstatet> *)0x0) {
    if (*(longlong *)id_exref == 0) {
      std::_Lockit::_Lockit((_Lockit *)&local_res8,0);
      if (*(longlong *)pcVar1 == 0) {
        *(int *)_Id_cnt_exref = *(int *)_Id_cnt_exref + 1;
        *(longlong *)pcVar1 = (longlong)*(int *)_Id_cnt_exref;
      }
      std::_Lockit::~_Lockit((_Lockit *)&local_res8);
    }
    std::locale::_Locimp::_Locimp_Addfac(DAT_18265f150,(facet *)pcVar3,*(__uint64 *)pcVar1);
    *(undefined4 *)(DAT_18265f150 + 0x20) = 0;
    p_Var2 = DAT_18265f150;
    _Memory = *(undefined **)(DAT_18265f150 + 0x28);
    if (_Memory != &DAT_181bb5c8c) {
      if (_Memory != (undefined *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      *(undefined8 *)(DAT_18265f150 + 0x28) = 0;
      pcVar6 = "*";
      do {
        pcVar7 = pcVar6;
        pcVar6 = pcVar7 + 1;
      } while (*pcVar6 != '\0');
      pcVar7 = pcVar7 + -0x181bb5c8a;
      _Dst = malloc((size_t)pcVar7);
      *(void **)(p_Var2 + 0x28) = _Dst;
      if (_Dst != (void *)0x0) {
        memcpy(_Dst,&DAT_181bb5c8c,(size_t)pcVar7);
      }
    }
  }
  if (p_Var4 != (_Locimp *)0x0) {
    puVar5 = (undefined8 *)(**(code **)(*(longlong *)p_Var4 + 0x10))(p_Var4);
    if (puVar5 != (undefined8 *)0x0) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  atexit(FUN_181a50bd0);
  return;
}



############ FUN_ 180715e00 size=55 ############

void FUN_180715e00(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x30);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 1809c31c0 size=74 ############

void FUN_1809c31c0(undefined8 param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)FUN_1811316e0(0x18);
  if (param_2 == (longlong *)0x0) {
    param_2 = plVar1;
    param_3 = plVar1;
  }
  *plVar1 = (longlong)param_2;
  plVar1[1] = (longlong)param_3;
  return;
}



############ FUN_ 18097dd10 size=182 ############

undefined8 *
FUN_18097dd10(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  *param_1 = apache::thrift::concurrency::Monitor::vftable;
  puVar1 = (undefined8 *)FUN_1811316e0(0x48);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar2 = (undefined4 *)FUN_1811316e0(0x10);
    puVar3 = (undefined4 *)0x0;
    if (puVar2 != (undefined4 *)0x0) {
      *puVar2 = 0;
      *(undefined8 *)(puVar2 + 2) = 0;
      puVar3 = puVar2;
    }
    *puVar1 = puVar3;
    FUN_18097d7d0(puVar1 + 1,puVar3);
    FUN_1805ae620(puVar1,puVar3,puVar3,param_4,uVar4);
    *(undefined4 *)(puVar1 + 2) = 0;
    puVar1[3] = 0;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    puVar1[7] = 0;
    puVar1[8] = 0;
  }
  param_1[1] = puVar1;
  return param_1;
}



############ FUN_ 18097d7d0 size=97 ############

undefined8 * FUN_18097d7d0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<boost::mutex>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b0bb20 size=55 ############

void FUN_180b0bb20(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x38);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 180473bd0 size=252 ############

LRESULT FUN_180473bd0(int param_1,WPARAM param_2,ushort *param_3)

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  BOOL BVar5;
  undefined8 uVar6;
  longlong lVar7;
  longlong lVar8;
  HWND hWnd;
  LRESULT LVar9;
  
  if ((-1 < param_1) && (param_2 == 0x20a)) {
    uVar4 = *(undefined8 *)param_3;
    if (DAT_182673700 == 0) {
      uVar6 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar6);
    }
    lVar7 = FUN_18134b740(DAT_182673700,uVar4);
    if ((lVar7 != 0) && (lVar8 = FUN_18134b8d0(lVar7), lVar8 != 0)) {
      uVar1 = *param_3;
      iVar2 = *(int *)(param_3 + 2);
      uVar3 = *(uint *)(param_3 + 0x10);
      hWnd = (HWND)FUN_18134b8d0(lVar7);
      BVar5 = PostMessageW(hWnd,0x20a,(ulonglong)uVar3 & 0xffff0000,
                           (ulonglong)uVar1 | (longlong)(iVar2 << 0x10));
      return (longlong)BVar5;
    }
  }
  LVar9 = CallNextHookEx(DAT_182674ca8,param_1,param_2,(LPARAM)param_3);
  return LVar9;
}



############ FUN_ 1805131b0 size=268 ############

undefined8 FUN_1805131b0(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  longlong lVar6;
  ulonglong uVar7;
  
  FUN_18050fa30();
  switch(param_2) {
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x14:
  case 0x5b:
  case 0x5c:
  case 0x5d:
  case 0x90:
  case 0x91:
  case 0xa0:
  case 0xa1:
  case 0xa2:
  case 0xa3:
  case 0xa4:
  case 0xa5:
    FUN_180513100(param_1);
  }
  cVar2 = FUN_1812d21d0(param_1,0);
  if (cVar2 == '\0') {
    uVar5 = 0;
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar4 = (undefined8 *)FUN_1811316e0(0x28);
      FUN_1812a59f0(puVar4);
      FUN_1812a7230(puVar4 + 2);
      *puVar4 = juce::ModalComponentManager::vftable;
      puVar4[2] = juce::ModalComponentManager::vftable;
      puVar4[3] = 0;
      puVar4[4] = 0;
      DAT_182673c20 = puVar4;
    }
    iVar3 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
    lVar6 = (longlong)iVar3;
    if (-1 < iVar3) {
      uVar7 = uVar5;
      do {
        lVar1 = *(longlong *)(DAT_182673c20[3] + lVar6 * 8);
        if ((*(char *)(lVar1 + 0x5c) != '\0') &&
           (iVar3 = (int)uVar7, uVar7 = (ulonglong)(iVar3 + 1), iVar3 == 0)) {
          uVar5 = *(ulonglong *)(lVar1 + 0x40);
          break;
        }
        lVar6 = lVar6 + -1;
      } while (-1 < lVar6);
    }
    if (uVar5 == 0) {
      return 0;
    }
  }
  return 1;
}



############ FUN_ 180513360 size=616 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_180513360(longlong param_1,longlong param_2)

{
  char cVar1;
  char cVar2;
  WCHAR WVar3;
  BOOL BVar4;
  UINT UVar5;
  UINT wScanCode;
  int iVar6;
  undefined8 *puVar7;
  longlong lVar8;
  int iVar9;
  undefined7 uVar10;
  UINT uCode;
  bool bVar11;
  undefined1 auStackY_1d8 [32];
  undefined8 *local_1a8;
  uint local_1a0;
  undefined8 local_198;
  tagMSG local_190;
  ulonglong local_160;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  BYTE local_138 [256];
  ulonglong local_38;
  
  local_198 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStackY_1d8;
  FUN_18050fa30();
  iVar9 = 0;
  uCode = (UINT)param_2;
  uVar10 = (undefined7)
           ((ulonglong)(&switchD_1805133c8::switchdataD_1805135e0)[*(byte *)(param_2 + 0x1805135dc)]
            + 0x180000000 >> 8);
  switch(param_2) {
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x14:
  case 0x5b:
  case 0x5c:
  case 0x5d:
  case 0x90:
  case 0x91:
  case 0xa0:
  case 0xa1:
  case 0xa2:
  case 0xa3:
  case 0xa4:
  case 0xa5:
    cVar1 = FUN_1812d21d0(param_1,CONCAT71(uVar10,1));
    FUN_180513100(param_1);
    goto joined_r0x0001805134db;
  default:
    cVar1 = FUN_1812d21d0(param_1,1);
    BVar4 = PeekMessageW(&local_190,*(HWND *)(param_1 + 0x88),0x102,0x103,0);
    if (BVar4 != 0) goto joined_r0x0001805134db;
    UVar5 = MapVirtualKeyW(uCode,2);
    wScanCode = MapVirtualKeyW(uCode,0);
    GetKeyboardState(local_138);
    local_160 = 0;
    local_158 = 0;
    local_150 = 0;
    local_148 = 0;
    iVar6 = ToUnicode(uCode,wScanCode,local_138,(LPWSTR)&local_160,8,0);
    if (iVar6 == 1) {
      WVar3 = (WCHAR)local_160;
    }
    else {
      local_160 = local_160 & 0xffffffffffff0000;
      WVar3 = L'\0';
    }
    local_1a8 = (undefined8 *)(CONCAT44(DAT_182673aec,UVar5) & 0xffffff8f0000ffff);
    local_1a0 = (uint)(ushort)WVar3;
    cVar2 = FUN_1812d2340(param_1,&local_1a8);
    break;
  case 0x21:
  case 0x22:
  case 0x23:
  case 0x24:
  case 0x25:
  case 0x26:
  case 0x27:
  case 0x28:
  case 0x2d:
  case 0x2e:
  case 0x70:
  case 0x71:
  case 0x72:
  case 0x73:
  case 0x74:
  case 0x75:
  case 0x76:
  case 0x77:
  case 0x78:
  case 0x79:
  case 0x7a:
  case 0x7b:
  case 0x7c:
  case 0x7d:
  case 0x7e:
  case 0x7f:
  case 0x80:
  case 0x81:
  case 0x82:
  case 0x83:
  case 0x84:
  case 0x85:
  case 0x86:
  case 0x87:
    cVar1 = FUN_1812d21d0(param_1,CONCAT71(uVar10,1));
    local_1a8 = (undefined8 *)(CONCAT44(DAT_182673aec,uCode) & 0xffffff8fffffffff | 0x10000);
    local_1a0 = 0;
    cVar2 = FUN_1812d2340(param_1,&local_1a8);
  }
  if (cVar2 != '\0') {
  }
joined_r0x0001805134db:
  if (cVar1 == '\0') {
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar7 = (undefined8 *)FUN_1811316e0(0x28);
      local_1a8 = puVar7;
      FUN_1812a59f0(puVar7);
      FUN_1812a7230(puVar7 + 2);
      *puVar7 = juce::ModalComponentManager::vftable;
      puVar7[2] = juce::ModalComponentManager::vftable;
      puVar7[3] = 0;
      puVar7[4] = 0;
      DAT_182673c20 = puVar7;
    }
    iVar6 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
    lVar8 = (longlong)iVar6;
    if (-1 < iVar6) {
      do {
        if ((*(char *)(*(longlong *)(DAT_182673c20[3] + lVar8 * 8) + 0x5c) != '\0') &&
           (bVar11 = iVar9 == 0, iVar9 = iVar9 + 1, bVar11)) {
        }
        lVar8 = lVar8 + -1;
      } while (-1 < lVar8);
    }
  }
}



############ FUN_ 1812d2590 size=223 ############

ulonglong FUN_1812d2590(longlong param_1)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  
  uVar8 = DAT_182673708;
  if (DAT_182673708 == 0) {
    uVar8 = *(ulonglong *)(param_1 + 8);
  }
  cVar2 = FUN_181343030(uVar8);
  if (cVar2 != '\0') {
    uVar7 = 0;
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar4 = (undefined8 *)FUN_1811316e0(0x28);
      FUN_1812a59f0(puVar4);
      FUN_1812a7230(puVar4 + 2);
      *puVar4 = juce::ModalComponentManager::vftable;
      puVar4[2] = juce::ModalComponentManager::vftable;
      puVar4[3] = 0;
      puVar4[4] = 0;
      DAT_182673c20 = puVar4;
    }
    iVar3 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
    lVar5 = (longlong)iVar3;
    if (-1 < iVar3) {
      uVar6 = uVar7;
      do {
        lVar1 = *(longlong *)(DAT_182673c20[3] + lVar5 * 8);
        if ((*(char *)(lVar1 + 0x5c) != '\0') &&
           (iVar3 = (int)uVar6, uVar6 = (ulonglong)(iVar3 + 1), iVar3 == 0)) {
          uVar7 = *(ulonglong *)(lVar1 + 0x40);
          break;
        }
        lVar5 = lVar5 + -1;
      } while (-1 < lVar5);
    }
    if (uVar7 != 0) {
      uVar8 = uVar7;
    }
  }
  return uVar8;
}



############ FUN_ 181341760 size=191 ############

void FUN_181341760(void)

{
  longlong lVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  
  plVar6 = (longlong *)0x0;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar3);
    FUN_1812a7230(puVar3 + 2);
    *puVar3 = juce::ModalComponentManager::vftable;
    puVar3[2] = juce::ModalComponentManager::vftable;
    puVar3[3] = 0;
    puVar3[4] = 0;
    DAT_182673c20 = puVar3;
  }
  iVar2 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
  lVar4 = (longlong)iVar2;
  if (-1 < iVar2) {
    plVar5 = plVar6;
    do {
      lVar1 = *(longlong *)(DAT_182673c20[3] + lVar4 * 8);
      if ((*(char *)(lVar1 + 0x5c) != '\0') &&
         (iVar2 = (int)plVar5, plVar5 = (longlong *)(ulonglong)(iVar2 + 1), iVar2 == 0)) {
        plVar6 = *(longlong **)(lVar1 + 0x40);
        break;
      }
      lVar4 = lVar4 + -1;
    } while (-1 < lVar4);
  }
  if (plVar6 != (longlong *)0x0) {
    (**(code **)(*plVar6 + 0x140))(plVar6);
  }
  return;
}



############ FUN_ 180473fe0 size=442 ############

void FUN_180473fe0(longlong *param_1,longlong *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  uint uVar7;
  
  FUN_18047cbc0(param_1 + 2);
  puVar6 = (undefined8 *)0x0;
  if ((int)param_1[3] != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
  *(undefined4 *)(param_1 + 3) = 0;
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
  if ((int)param_1[1] == 0) {
    *(undefined4 *)(param_1 + 1) = 0;
    *(undefined1 *)(param_1 + 4) = 0;
    if (*(code **)(*param_2 + 0x170) == FUN_1812beb90) {
      iVar3 = *(int *)((longlong)param_2 + 0x144);
    }
    else {
      iVar3 = (**(code **)(*param_2 + 0x170))(param_2);
    }
    *(bool *)((longlong)param_1 + 0x21) = *(int *)((longlong)param_2 + 0x144) == iVar3;
    puVar5 = puVar6;
    puVar4 = puVar6;
    if (0 < iVar3) {
      do {
        uVar7 = (uint)puVar4;
        if (*(char *)((longlong)param_1 + 0x21) == '\0') {
          puVar4 = (undefined8 *)FUN_1811316e0(0x60);
          *puVar4 = juce::AudioProcessorParameter::vftable;
          puVar4[1] = 0;
          *(undefined4 *)(puVar4 + 2) = 0xffffffff;
          InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)puVar4 + 0x14));
          puVar4[8] = 0;
          puVar4[9] = 0;
          puVar4[10] = 0;
          puVar4[0xb] = 0;
          *puVar4 = juce::LegacyAudioParameter::vftable;
          puVar4[1] = param_2;
          *(uint *)(puVar4 + 2) = uVar7;
          iVar1 = *(int *)((longlong)param_1 + 0x1c);
          iVar2 = iVar1 + 1;
          if ((int)param_1[3] < iVar2) {
            if (iVar2 < 0) {
              iVar2 = iVar1 + 2;
            }
            FUN_18047cb30(param_1 + 2,iVar1 + 9 + (iVar2 >> 1) & 0xfffffff8);
          }
          iVar2 = *(int *)((longlong)param_1 + 0x1c);
          *(int *)((longlong)param_1 + 0x1c) = iVar2 + 1;
          *(undefined8 **)(param_1[2] + (longlong)iVar2 * 8) = puVar4;
        }
        else {
          puVar4 = puVar6;
          if (uVar7 < *(uint *)((longlong)param_2 + 0x144)) {
            puVar4 = *(undefined8 **)(param_2[0x27] + (longlong)puVar5 * 8);
          }
        }
        iVar1 = *(int *)((longlong)param_1 + 0xc);
        iVar2 = iVar1 + 1;
        if ((int)param_1[1] < iVar2) {
          if (iVar2 < 0) {
            iVar2 = iVar1 + 2;
          }
          FUN_18047cb30(param_1,iVar1 + 9 + (iVar2 >> 1) & 0xfffffff8);
        }
        iVar2 = *(int *)((longlong)param_1 + 0xc);
        puVar5 = (undefined8 *)((longlong)puVar5 + 1);
        *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
        *(undefined8 **)(*param_1 + (longlong)iVar2 * 8) = puVar4;
        puVar4 = (undefined8 *)(ulonglong)(uVar7 + 1);
      } while ((longlong)puVar5 < (longlong)iVar3);
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18047c920 size=516 ############

uint * FUN_18047c920(longlong param_1,uint param_2)

{
  longlong *plVar1;
  uint *puVar2;
  uint *puVar3;
  void *_Memory;
  int iVar4;
  uint *puVar5;
  undefined8 *puVar6;
  uint uVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong lVar10;
  int iVar11;
  longlong lVar12;
  undefined8 *puVar13;
  undefined8 *local_38;
  undefined4 local_30;
  uint uStack_2c;
  
  plVar1 = (longlong *)(param_1 + 8);
  uVar7 = param_2 % *(uint *)(param_1 + 0x14);
  puVar2 = *(uint **)((longlong)(int)uVar7 * 8 + *plVar1);
  for (puVar3 = puVar2; puVar3 != (uint *)0x0; puVar3 = *(uint **)(puVar3 + 4)) {
    if (*puVar3 == param_2) {
      return puVar3 + 2;
    }
  }
  puVar5 = (uint *)FUN_1811316e0(0x18);
  *puVar5 = param_2;
  puVar3 = puVar5 + 2;
  puVar6 = (undefined8 *)0x0;
  *(uint **)(puVar5 + 4) = puVar2;
  puVar3[0] = 0;
  puVar3[1] = 0;
  if (-1 < (int)uVar7) {
    if ((int)uVar7 < *(int *)(param_1 + 0x14)) {
      *(uint **)((longlong)(int)uVar7 * 8 + *plVar1) = puVar5;
    }
    else {
      FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
      iVar4 = *(int *)(param_1 + 0x14);
      *(int *)(param_1 + 0x14) = iVar4 + 1;
      *(uint **)(*plVar1 + (longlong)iVar4 * 8) = puVar5;
    }
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  if ((*(int *)(param_1 + 0x14) * 3) / 2 < *(int *)(param_1 + 0x18)) {
    uVar7 = *(int *)(param_1 + 0x14) * 2;
    local_38 = (undefined8 *)0x0;
    local_30 = 0;
    uStack_2c = 0;
    puVar13 = puVar6;
    if (0 < (int)uVar7) {
      FUN_18047e060(&local_38);
      uVar8 = uStack_2c;
      puVar13 = local_38;
      if (uStack_2c != 0) {
        memmove(local_38 + (int)uVar7,local_38,(longlong)(int)uStack_2c << 3);
      }
      if (0 < (int)uVar7) {
        uVar9 = (ulonglong)uVar7;
        puVar6 = puVar13;
        do {
          *puVar6 = 0;
          uVar9 = uVar9 - 1;
          puVar6 = puVar6 + 1;
        } while (uVar9 != 0);
      }
      uStack_2c = uVar8 + uVar7;
      puVar6 = (undefined8 *)(ulonglong)uStack_2c;
    }
    iVar11 = (int)puVar6;
    iVar4 = *(int *)(param_1 + 0x14) + -1;
    lVar10 = (longlong)iVar4;
    if (-1 < iVar4) {
      do {
        puVar2 = *(uint **)(*plVar1 + lVar10 * 8);
        while (puVar3 = puVar2, iVar11 = (int)puVar6, puVar3 != (uint *)0x0) {
          puVar2 = *(uint **)(puVar3 + 4);
          uVar8 = *puVar3 % uVar7;
          *(undefined8 *)(puVar3 + 4) = puVar13[(int)uVar8];
          if (-1 < (int)uVar8) {
            if ((int)uVar8 < iVar11) {
              puVar13[(int)uVar8] = puVar3;
            }
            else {
              FUN_18047e060(&local_38);
              lVar12 = (longlong)(int)uStack_2c;
              uStack_2c = uStack_2c + 1;
              puVar6 = (undefined8 *)(ulonglong)uStack_2c;
              local_38[lVar12] = puVar3;
              puVar13 = local_38;
            }
          }
        }
        lVar10 = lVar10 + -1;
      } while (-1 < lVar10);
    }
    _Memory = (void *)*plVar1;
    *plVar1 = (longlong)puVar13;
    *(undefined4 *)(param_1 + 0x10) = local_30;
    *(int *)(param_1 + 0x14) = iVar11;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return puVar3;
}



############ FUN_ 18047c390 size=164 ############

ulonglong * FUN_18047c390(void)

{
  ulonglong uVar1;
  ulonglong uVar2;
  DWORD DVar3;
  ulonglong *puVar4;
  ulonglong *puVar5;
  bool bVar6;
  
  DVar3 = GetCurrentThreadId();
  uVar2 = (ulonglong)DVar3;
  for (puVar4 = DAT_182673720; puVar5 = DAT_182673720, puVar4 != (ulonglong *)0x0;
      puVar4 = (ulonglong *)puVar4[1]) {
    if (*puVar4 == uVar2) goto LAB_18047c42a;
  }
  do {
    puVar4 = puVar5;
    if (puVar4 == (ulonglong *)0x0) {
LAB_18047c3ed:
      puVar4 = (ulonglong *)FUN_1811316e0(0x18);
      puVar5 = DAT_182673720;
      *puVar4 = uVar2;
      *(undefined1 *)(puVar4 + 2) = 0;
      do {
        puVar4[1] = (ulonglong)puVar5;
        LOCK();
        bVar6 = puVar5 != DAT_182673720;
        puVar5 = puVar4;
        if (bVar6) {
          puVar5 = DAT_182673720;
        }
        DAT_182673720 = puVar5;
        UNLOCK();
        puVar5 = DAT_182673720;
      } while (bVar6);
LAB_18047c42a:
      return puVar4 + 2;
    }
    LOCK();
    uVar1 = *puVar4;
    if (uVar1 == 0) {
      *puVar4 = uVar2;
    }
    UNLOCK();
    if (uVar1 == 0) {
      if (puVar4 != (ulonglong *)0x0) {
        *(undefined1 *)(puVar4 + 2) = 0;
        goto LAB_18047c42a;
      }
      goto LAB_18047c3ed;
    }
    puVar5 = (ulonglong *)puVar4[1];
  } while( true );
}



############ FUN_ 1804764e0 size=599 ############

bool FUN_1804764e0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  char *pcVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined8 uVar9;
  undefined **local_40;
  char *local_38;
  uint local_30;
  
  uVar9 = 0xfffffffffffffffe;
  if ((param_2 == (longlong *)0x0) || (*(longlong *)(param_1 + 0x78) != 0)) {
    bVar8 = true;
  }
  else {
    bVar8 = *(longlong *)(param_1 + 0x10) == 0;
    if (bVar8) {
      *(longlong **)(param_1 + 0x10) = param_2;
      (**(code **)(*param_2 + 8))(param_2);
    }
    bVar8 = !bVar8;
    plVar3 = *(longlong **)(param_1 + 0x78);
    *(undefined8 *)(param_1 + 0x78) = 0;
    if (plVar3 != (longlong *)0x0) {
      if ((undefined **)*plVar3 == juce::JuceAudioProcessor::vftable) {
        LOCK();
        plVar4 = plVar3 + 4;
        lVar1 = *plVar4;
        *(int *)plVar4 = (int)*plVar4 + -1;
        UNLOCK();
        if ((int)lVar1 == 1) {
          (**(code **)(*plVar3 + 0x78))(plVar3,1,juce::JuceAudioProcessor::vftable,param_4,uVar9);
        }
      }
      else {
        (*(code *)((undefined **)*plVar3)[2])();
      }
    }
    iVar2 = (**(code **)*param_2)(param_2,&DAT_18262b380,param_1 + 0x78);
    if (iVar2 == 0) {
      FUN_180477210(param_1 + -0x18);
    }
    else {
      lVar1 = param_1 + -0x18;
      plVar3 = (longlong *)FUN_181137870(lVar1);
      if (plVar3 != (longlong *)0x0) {
        (**(code **)(*plVar3 + 0x20))(plVar3,"JuceVST3EditController");
        plVar4 = (longlong *)(**(code **)(*plVar3 + 0x28))(plVar3);
        if ((undefined **)*plVar4 == Steinberg::Vst::HostAttributeList::vftable) {
          FUN_181135760();
          plVar5 = (longlong *)FUN_1811316e0(0x10);
          plVar5[1] = 0;
          *plVar5 = lVar1;
          local_38 = (char *)0x0;
          local_30 = local_30 & 0x80000000;
          local_40 = Steinberg::String::vftable;
          pcVar6 = malloc(0x17);
          if (pcVar6 != (char *)0x0) {
            if ((local_30 & 0x40000000) == 0) {
              *pcVar6 = '\0';
              pcVar6[0x16] = '\0';
            }
            else {
              pcVar6[0] = '\0';
              pcVar6[1] = '\0';
              pcVar6[0x2c] = '\0';
              pcVar6[0x2d] = '\0';
            }
            uVar9 = s_JuceVST3EditController_182493708._8_8_;
            if (pcVar6 != (char *)0x0) {
              *(undefined8 *)pcVar6 = s_JuceVST3EditController_182493708._0_8_;
              *(undefined8 *)(pcVar6 + 8) = uVar9;
              *(undefined4 *)(pcVar6 + 0x10) = s_JuceVST3EditController_182493708._16_4_;
              *(undefined2 *)(pcVar6 + 0x14) = s_JuceVST3EditController_182493708._20_2_;
            }
            local_30 = local_30 & 0x80000016 | 0x16;
            local_38 = pcVar6;
          }
          puVar7 = (undefined8 *)FUN_18047c5d0(plVar4 + 2,&local_40);
          *puVar7 = plVar5;
          local_40 = Steinberg::String::vftable;
          if (local_38 != (char *)0x0) {
                    /* WARNING: Subroutine does not return */
            free(local_38);
          }
        }
        else {
          (*(code *)((undefined **)*plVar4)[3])(plVar4,"JuceVST3EditController",lVar1);
        }
        plVar4 = *(longlong **)(param_1 + 0x10);
        if (plVar4 != (longlong *)0x0) {
          (**(code **)(*plVar4 + 0x28))(plVar4,plVar3);
        }
        (**(code **)(*plVar3 + 0x10))(plVar3);
      }
    }
  }
  return bVar8;
}



############ FUN_ 180477210 size=757 ############

void FUN_180477210(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  uint *puVar3;
  longlong *plVar4;
  longlong *plVar5;
  undefined8 uVar6;
  longlong *plVar7;
  undefined8 *_Memory;
  int iVar8;
  undefined8 *local_58;
  undefined8 local_50;
  
  if (*(longlong *)(param_1 + 0x90) == 0) {
    return;
  }
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x90) + 0x28);
  if (plVar1 == (longlong *)0x0) {
    return;
  }
  plVar5 = (longlong *)(param_1 + 0x80);
  if (*(code **)(*plVar1 + 0x120) == FUN_1812c1130) {
    EnterCriticalSection((LPCRITICAL_SECTION)((longlong)plVar1 + 0x74));
    plVar7 = (longlong *)plVar1[3];
    iVar8 = *(int *)((longlong)plVar1 + 0x24);
    plVar4 = plVar7 + iVar8;
    for (; plVar7 != plVar4; plVar7 = plVar7 + 1) {
      if (plVar5 == (longlong *)*plVar7) goto LAB_1804772e4;
    }
    if ((int)plVar1[4] < iVar8 + 1) {
      FUN_18047cb30(plVar1 + 3,iVar8 + 9 + (iVar8 + 1) / 2 & 0xfffffff8);
    }
    iVar8 = *(int *)((longlong)plVar1 + 0x24);
    *(int *)((longlong)plVar1 + 0x24) = iVar8 + 1;
    *(longlong **)(plVar1[3] + (longlong)iVar8 * 8) = plVar5;
LAB_1804772e4:
    LeaveCriticalSection((LPCRITICAL_SECTION)((longlong)plVar1 + 0x74));
  }
  else {
    (**(code **)(*plVar1 + 0x120))(plVar1);
  }
  lVar2 = *(longlong *)(param_1 + 0x90);
  if (*(char *)(lVar2 + 0x1c) == '\0') {
    for (puVar3 = *(uint **)(*(longlong *)(lVar2 + 0x60) +
                            (longlong)(int)(*(uint *)(lVar2 + 0x18) % *(uint *)(lVar2 + 0x6c)) * 8);
        puVar3 != (uint *)0x0; puVar3 = *(uint **)(puVar3 + 4)) {
      if (*puVar3 == *(uint *)(lVar2 + 0x18)) {
        uVar6 = *(undefined8 *)(puVar3 + 2);
        goto LAB_180477334;
      }
    }
    uVar6 = 0;
LAB_180477334:
    FUN_1812c3e50(uVar6);
  }
  plVar4 = *(longlong **)(param_1 + 0x50);
  if ((plVar4 == (longlong *)0x0) || ((int)(plVar4[1] - *plVar4 >> 3) < 1)) {
    if (0 < *(int *)(*(longlong *)(param_1 + 0x90) + 0x14)) {
      lVar2 = *(longlong *)(param_1 + 0x90);
      puVar3 = *(uint **)(*(longlong *)(lVar2 + 0x60) +
                         (longlong)(int)(**(uint **)(lVar2 + 8) % *(uint *)(lVar2 + 0x6c)) * 8);
      do {
        if (puVar3 == (uint *)0x0) {
          uVar6 = 0;
LAB_1804773d9:
          _Memory = (undefined8 *)0x0;
          local_58 = (undefined8 *)0x0;
          local_50._0_4_ = 0;
          local_50._4_4_ = 0;
          iVar8 = 0;
          plVar5 = (longlong *)FUN_1812b6910(plVar1 + 0x21,uVar6);
          if (plVar5 != (longlong *)0x0) {
            for (; plVar5 != plVar1 + 0x21; plVar5 = (longlong *)plVar5[5]) {
              FUN_18047e060(&local_58,iVar8 + 1);
              iVar8 = local_50._4_4_;
              _Memory = local_58;
              if (local_50._4_4_ != 0) {
                memmove(local_58 + 1,local_58,(longlong)local_50._4_4_ << 3);
              }
              *_Memory = plVar5;
              iVar8 = iVar8 + 1;
              local_50._4_4_ = iVar8;
            }
          }
          local_50 = (ulonglong)(uint)local_50;
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        if (*puVar3 == **(uint **)(lVar2 + 8)) {
          uVar6 = *(undefined8 *)(puVar3 + 2);
          goto LAB_1804773d9;
        }
        puVar3 = *(uint **)(puVar3 + 4);
      } while( true );
    }
    if (*(code **)(*plVar1 + 0xc0) ==
        .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
        vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      if ((int)plVar1[1] != 3) goto LAB_180477727;
    }
    else {
      iVar8 = (**(code **)(*plVar1 + 0xc0))(plVar1);
      if (iVar8 < 2) goto LAB_180477727;
    }
    uVar6 = FUN_1811316e0(0x340);
    uVar6 = FUN_180475ba0(uVar6,plVar1);
    FUN_1811368e0((longlong *)(param_1 + 0x50),uVar6);
  }
LAB_180477727:
  (**(code **)(*plVar5 + 0x10))(plVar5,plVar1);
  return;
}



############ FUN_ 1811368e0 size=377 ############

longlong * FUN_1811368e0(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *local_res8;
  undefined8 *local_res20;
  
  if (*param_1 == 0) {
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    *plVar4 = 0;
    plVar4[1] = 0;
    plVar4[2] = 0;
    *param_1 = (longlong)plVar4;
    if ((ulonglong)(plVar4[2] - *plVar4 >> 3) < 10) {
      FUN_18047cf30(plVar4);
    }
  }
  lVar1 = ((longlong *)*param_1)[1];
  lVar2 = *(longlong *)*param_1;
  puVar3 = (undefined8 *)param_1[1];
  puVar8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar6 = (undefined8 *)puVar3[1];
    do {
      if (*(uint *)(puVar6 + 4) < *(uint *)(param_2 + 2)) {
        puVar7 = (undefined8 *)puVar6[2];
      }
      else {
        puVar7 = (undefined8 *)*puVar6;
        puVar8 = puVar6;
      }
      puVar6 = puVar7;
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  if ((puVar8 == puVar3) || (*(uint *)(param_2 + 2) < *(uint *)(puVar8 + 4))) {
    lVar5 = FUN_180481d40(param_1 + 1);
    FUN_180481d70(param_1 + 1,&local_res20,puVar8,lVar5 + 0x20,lVar5);
    puVar8 = local_res20;
  }
  puVar8[5] = lVar1 - lVar2 >> 3;
  lVar1 = *param_1;
  puVar3 = *(undefined8 **)(lVar1 + 8);
  if (*(undefined8 **)(lVar1 + 0x10) == puVar3) {
    local_res8 = param_2;
    FUN_180480240(lVar1,puVar3,&local_res8);
  }
  else {
    local_res8 = (longlong *)0x0;
    *puVar3 = param_2;
    *(longlong *)(lVar1 + 8) = *(longlong *)(lVar1 + 8) + 8;
  }
  if (local_res8 != (longlong *)0x0) {
    if (*(code **)(*local_res8 + 0x10) == FUN_18113d7a0) {
      LOCK();
      plVar4 = local_res8 + 1;
      lVar1 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar1 == 1) {
        *(undefined4 *)(local_res8 + 1) = 0xfffffc18;
        (**(code **)(*local_res8 + 0x20))(local_res8,1);
      }
    }
    else {
      (**(code **)(*local_res8 + 0x10))(local_res8);
    }
  }
  return param_2;
}



############ FUN_ 180476bb0 size=193 ############

longlong FUN_180476bb0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  char cVar2;
  undefined8 uVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  if ((((*(longlong *)(param_1 + 0x60) == 0) ||
       (plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x60) + 0x28), plVar1 == (longlong *)0x0))
      || ((*(code **)(*plVar1 + 0xb0) !=
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ &&
          (cVar2 = (**(code **)(*plVar1 + 0xb0))(plVar1), cVar2 == '\0')))) || (param_2 == 0)) {
LAB_180476c4f:
    lVar5 = 0;
  }
  else {
    lVar5 = 0;
    lVar4 = lVar5;
    do {
      lVar6 = lVar4 + 1;
      if (*(char *)(param_2 + lVar4) != "editor"[lVar4]) goto LAB_180476c4f;
      lVar4 = lVar6;
    } while (lVar6 != 7);
    uVar3 = FUN_1811316e0(0x80);
    lVar4 = FUN_180477760(uVar3,param_1 + -0x30,plVar1,param_4,uVar7);
    if (lVar4 != 0) {
      lVar5 = lVar4 + 0x10;
    }
  }
  return lVar5;
}



############ FUN_ 180477760 size=408 ############

undefined8 * FUN_180477760(undefined8 *param_1,longlong *param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  int iVar2;
  DWORD DVar3;
  HINSTANCE pHVar4;
  undefined8 uVar5;
  bool bVar6;
  
  *(undefined4 *)(param_1 + 1) = 1;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  *param_1 = Steinberg::Vst::EditorView::vftable;
  param_1[2] = Steinberg::Vst::EditorView::vftable;
  param_1[7] = param_2;
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 8))(param_2);
  }
  param_1[10] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0xb) = 0;
  *param_1 = juce::JuceVST3EditController::JuceVST3Editor::vftable;
  param_1[2] = juce::JuceVST3EditController::JuceVST3Editor::vftable;
  param_1[8] = juce::JuceVST3EditController::JuceVST3Editor::vftable;
  param_1[9] = juce::JuceVST3EditController::JuceVST3Editor::vftable;
  param_1[0xc] = param_2;
  if (param_2 != (longlong *)0x0) {
    if ((undefined **)*param_2 == juce::JuceVST3EditController::vftable) {
      LOCK();
      *(int *)(param_2 + 1) = (int)param_2[1] + 1;
      UNLOCK();
    }
    else {
      (*(code *)((undefined **)*param_2)[1])(param_2);
    }
  }
  param_1[0xd] = param_3;
  param_1[0xe] = 0;
  *(undefined4 *)(param_1 + 0xf) = 0x3f800000;
  iVar2 = DAT_182674ca0 + 1;
  bVar6 = DAT_182674ca0 == 0;
  DAT_182674ca0 = iVar2;
  if (bVar6) {
    DVar3 = GetCurrentThreadId();
    pHVar4 = (HINSTANCE)FUN_181249ad0();
    DAT_182674ca8 = SetWindowsHookExW(7,FUN_180473bd0,pHVar4,DVar3);
    DVar3 = GetCurrentThreadId();
    pHVar4 = (HINSTANCE)FUN_181249ad0();
    DAT_182674cb0 = SetWindowsHookExW(3,FUN_180473cd0,pHVar4,DVar3);
  }
  *(int *)(param_1 + 0xf) = (int)param_2[0xc44];
  uVar5 = FUN_1811316e0(0xd8);
  uVar5 = FUN_1804783a0(uVar5,param_1,param_3);
  puVar1 = (undefined8 *)param_1[0xe];
  param_1[0xe] = uVar5;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  return param_1;
}



############ FUN_ 180520340 size=777 ############

undefined8 * FUN_180520340(undefined8 *param_1,longlong *param_2,int *param_3,undefined8 param_4)

{
  double dVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  float *pfVar5;
  float fVar6;
  undefined8 uVar7;
  double local_res8;
  double local_res10;
  double local_res18;
  double local_res20;
  undefined8 local_b0;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [16];
  undefined1 local_68 [64];
  
  if (param_2[7] != 0) {
    uVar2 = FUN_1812a04f0(param_2[7],local_68,param_3,param_4,0xfffffffffffffffe);
    puVar3 = (undefined8 *)FUN_1804b1290(param_3,local_78,uVar2);
    uVar2 = puVar3[1];
    *(undefined8 *)param_3 = *puVar3;
    *(undefined8 *)(param_3 + 2) = uVar2;
  }
  if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
    uVar7 = *(undefined8 *)(param_3 + 2);
    local_88 = CONCAT44(param_3[1] - (int)((ulonglong)param_2[4] >> 0x20),*param_3 - (int)param_2[4]
                       );
    uVar2 = local_88;
  }
  else {
    if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
      if (param_2[3] == 0) goto LAB_18052060f;
      plVar4 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar4 = (longlong *)FUN_1812d2bd0(param_2);
    }
    if (plVar4 == (longlong *)0x0) goto LAB_18052060f;
    local_98 = *(undefined8 *)param_3;
    uStack_90 = *(undefined8 *)(param_3 + 2);
    if (DAT_182673700 == 0) {
      local_res8 = (double)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res8);
    }
    dVar1 = DAT_1824c4520;
    fVar6 = *(float *)(DAT_182673700 + 0xc0);
    if (fVar6 == DAT_1824c3ea4) {
      local_88 = *(undefined8 *)param_3;
      uStack_80 = *(undefined8 *)(param_3 + 2);
      puVar3 = &local_88;
    }
    else {
      local_res20 = (double)((float)uStack_90._4_4_ * fVar6) + DAT_1824c4520;
      local_res18 = (double)((float)(int)uStack_90 * fVar6) + DAT_1824c4520;
      local_res10 = (double)((float)local_98._4_4_ * fVar6) + DAT_1824c4520;
      local_res8 = (double)((float)(int)local_98 * fVar6) + DAT_1824c4520;
      local_98 = CONCAT44(local_res10._0_4_,SUB84(local_res8,0));
      uStack_90 = CONCAT44(local_res20._0_4_,SUB84(local_res18,0));
      puVar3 = &local_98;
    }
    local_88 = *puVar3;
    uStack_80 = puVar3[1];
    if ((undefined **)*plVar4 == juce::HWNDComponentPeer::vftable) {
      pfVar5 = (float *)(*(code *)juce::HWNDComponentPeer::vftable[0xb])
                                  (plVar4,&local_res8,
                                   CONCAT44((float)(int)((ulonglong)local_88 >> 0x20),
                                            (float)(int)local_88));
      local_res10 = (double)pfVar5[1] + dVar1;
      local_res8 = (double)*pfVar5 + dVar1;
      local_b0._0_4_ = local_res8._0_4_;
      local_b0._4_4_ = local_res10._0_4_;
      uStack_a8 = (undefined4)uStack_80;
      uStack_a4 = uStack_80._4_4_;
      puVar3 = &local_b0;
    }
    else {
      puVar3 = (undefined8 *)(*(code *)((undefined **)*plVar4)[10])(plVar4,&local_b0,&local_88);
    }
    uVar2 = *puVar3;
    uVar7 = puVar3[1];
    local_98 = uVar2;
    uStack_90 = uVar7;
    fVar6 = (float)(**(code **)(*param_2 + 0x80))(param_2);
    if (fVar6 != DAT_1824c3ea4) {
      local_res10._0_4_ = SUB84((double)((float)local_98._4_4_ / fVar6) + dVar1,0);
      uVar2 = CONCAT44(local_res10._0_4_,SUB84((double)((float)(int)local_98 / fVar6) + dVar1,0));
      local_res20._0_4_ = SUB84((double)((float)uStack_90._4_4_ / fVar6) + dVar1,0);
      uVar7 = CONCAT44(local_res20._0_4_,SUB84((double)((float)(int)uStack_90 / fVar6) + dVar1,0));
    }
  }
  *(undefined8 *)param_3 = uVar2;
  *(undefined8 *)(param_3 + 2) = uVar7;
LAB_18052060f:
  uVar2 = *(undefined8 *)(param_3 + 2);
  *param_1 = *(undefined8 *)param_3;
  param_1[1] = uVar2;
  return param_1;
}



############ FUN_ 1804779a0 size=373 ############

undefined8 FUN_1804779a0(longlong param_1,longlong param_2,longlong param_3,undefined8 param_4)

{
  code *pcVar1;
  undefined8 *puVar2;
  char cVar3;
  undefined8 uVar4;
  int *piVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  if (((param_2 != 0) && (param_3 != 0)) &&
     ((pcVar1 = *(code **)(**(longlong **)(param_1 + 0x58) + 0xb0),
      pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ ||
      (cVar3 = (*pcVar1)(), cVar3 != '\0')))) {
    lVar6 = 0;
    while (lVar7 = lVar6 + 1, *(char *)(param_3 + lVar6) == (&DAT_1821d8ff4)[lVar6]) {
      lVar6 = lVar7;
      if (lVar7 == 5) {
        if (*(longlong *)(param_1 + 0x60) == 0) {
          uVar4 = FUN_1811316e0(0xd8);
          uVar4 = FUN_1804783a0(uVar4,param_1 + -0x10,*(undefined8 *)(param_1 + 0x58));
          puVar2 = *(undefined8 **)(param_1 + 0x60);
          *(undefined8 *)(param_1 + 0x60) = uVar4;
          if (puVar2 != (undefined8 *)0x0) {
            (**(code **)*puVar2)(puVar2,1);
          }
        }
        .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                  (*(undefined8 *)(param_1 + 0x60),0,param_2,param_4,uVar8);
        FUN_18134bd50(*(undefined8 *)(param_1 + 0x60),1);
        .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                  (*(undefined8 *)(param_1 + 0x60),1);
        FUN_180478740(*(undefined8 *)(param_1 + 0x60));
        FUN_1804780b0(param_1 + 0x30,*(undefined4 *)(param_1 + 0x68));
        FUN_1804789b0(*(undefined8 *)(param_1 + 0x60));
        *(longlong *)(param_1 + 0x18) = param_2;
        if ((*(longlong **)(param_1 + 0x28) != (longlong *)0x0) &&
           (pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0xa8),
           pcVar1 != _guard_check_icall)) {
          (*pcVar1)();
        }
        piVar5 = (int *)FUN_180473b00();
        if (*piVar5 - 0x30U < 5) {
          FUN_1812a77d0(param_1 + 0x38,200);
        }
        return 0;
      }
    }
  }
  return 1;
}



############ FUN_ 180478b30 size=454 ############

undefined8 * FUN_180478b30(undefined8 *param_1,longlong *param_2)

{
  undefined8 *puVar1;
  longlong *plVar2;
  int iVar3;
  undefined8 uVar4;
  undefined1 *puVar5;
  bool bVar6;
  
  puVar1 = param_1 + 4;
  *param_1 = juce::JuceVST3Component::vftable;
  param_1[1] = juce::JuceVST3Component::vftable;
  param_1[2] = juce::JuceVST3Component::vftable;
  param_1[3] = juce::JuceVST3Component::vftable;
  *puVar1 = juce::JuceVST3Component::vftable;
  iVar3 = DAT_182678e90 + 1;
  bVar6 = DAT_182678e90 == 0;
  DAT_182678e90 = iVar3;
  if (bVar6) {
    FUN_1812a7550();
  }
  *(undefined4 *)((longlong)param_1 + 0x2c) = 1;
  uVar4 = FUN_18134db00();
  param_1[6] = uVar4;
  param_1[7] = param_2;
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 8))(param_2);
  }
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = param_1 + 0x25;
  param_1[0x24] = 0;
  *(undefined1 *)(param_1 + 0x45) = 0;
  param_1[0x46] = 0;
  param_1[0x47] = 0;
  param_1[0x48] = param_1 + 0x4a;
  param_1[0x49] = 0;
  *(undefined1 *)(param_1 + 0x6a) = 0;
  *(undefined2 *)(param_1 + 0x6b) = 0;
  puVar5 = (undefined1 *)FUN_18047c390();
  *puVar5 = 0;
  uVar4 = FUN_1811316e0(0x90);
  FUN_180474240(uVar4,param_1[6]);
  FUN_18047c290(param_1 + 8);
  memset(param_1 + 10,0,0x70);
  *(undefined4 *)(param_1 + 0x19) = 0x400;
  param_1[0x18] = 0;
  param_1[0x1a] = 0x40e5888000000000;
  plVar2 = (longlong *)param_1[6];
  if (*(code **)(*plVar2 + 0x130) == FUN_1812c11d0) {
    LOCK();
    plVar2[2] = (longlong)puVar1;
    UNLOCK();
  }
  else {
    (**(code **)(*plVar2 + 0x130))(plVar2,puVar1);
  }
  return param_1;
}



############ FUN_ 1804daf90 size=170 ############

ulonglong * FUN_1804daf90(void)

{
  ulonglong uVar1;
  ulonglong uVar2;
  DWORD DVar3;
  ulonglong *puVar4;
  ulonglong *puVar5;
  bool bVar6;
  
  DVar3 = GetCurrentThreadId();
  uVar2 = (ulonglong)DVar3;
  for (puVar4 = DAT_182673ae0; puVar5 = DAT_182673ae0, puVar4 != (ulonglong *)0x0;
      puVar4 = (ulonglong *)puVar4[1]) {
    if (*puVar4 == uVar2) goto LAB_1804db030;
  }
  do {
    puVar4 = puVar5;
    if (puVar4 == (ulonglong *)0x0) {
LAB_1804dafed:
      puVar4 = (ulonglong *)FUN_1811316e0(0x18);
      puVar5 = DAT_182673ae0;
      *puVar4 = uVar2;
      *(undefined4 *)(puVar4 + 2) = 0;
      do {
        puVar4[1] = (ulonglong)puVar5;
        LOCK();
        bVar6 = puVar5 != DAT_182673ae0;
        puVar5 = puVar4;
        if (bVar6) {
          puVar5 = DAT_182673ae0;
        }
        DAT_182673ae0 = puVar5;
        UNLOCK();
        puVar5 = DAT_182673ae0;
      } while (bVar6);
LAB_1804db030:
      return puVar4 + 2;
    }
    LOCK();
    uVar1 = *puVar4;
    if (uVar1 == 0) {
      *puVar4 = uVar2;
    }
    UNLOCK();
    if (uVar1 == 0) {
      if (puVar4 != (ulonglong *)0x0) {
        *(undefined4 *)(puVar4 + 2) = 0;
        goto LAB_1804db030;
      }
      goto LAB_1804dafed;
    }
    puVar5 = (ulonglong *)puVar4[1];
  } while( true );
}



############ FUN_ 181350900 size=898 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181350900(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  ulonglong uVar6;
  undefined1 auStack_c8 [32];
  char *local_a8;
  longlong local_a0;
  void *local_98;
  int local_8c;
  char *local_88;
  longlong local_80;
  longlong *local_78;
  undefined8 *local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  longlong *local_50;
  undefined1 local_48 [8];
  ulonglong local_40;
  
  local_58 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_78 = param_1;
  (**(code **)(*param_2 + 0x90))(param_2,&local_a8);
  if (*local_a8 == '\0') {
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    puVar5 = (uint *)(local_a8 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  uVar3 = FUN_18122bf10();
  FUN_18122c1b0(uVar3,&local_78,&local_a8);
  puVar4 = (undefined8 *)FUN_1811316e0(0x50);
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = juce::ValueTree::SharedObject::vftable;
  puVar4[2] = local_78;
  puVar5 = (uint *)(local_78 + -2);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  puVar4[3] = 0;
  puVar4[4] = 0;
  puVar4[5] = 0;
  puVar4[6] = 0;
  puVar4[7] = 0;
  puVar4[8] = 0;
  puVar4[9] = 0;
  LOCK();
  *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
  UNLOCK();
  local_68 = 0;
  local_60 = 0;
  local_70 = puVar4;
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  uVar1 = (**(code **)(*param_2 + 0x80))(param_2);
  if ((int)uVar1 < 0) {
    *param_1 = (longlong)puVar4;
    param_1[1] = 0;
    param_1[2] = 0;
    if (*param_1 != 0) {
      FUN_180527d40(*param_1 + 0x38,&local_70);
    }
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  if (0 < (int)uVar1) {
    uVar6 = (ulonglong)uVar1;
    do {
      (**(code **)(*param_2 + 0x90))(param_2,&local_88);
      if (*local_88 != '\0') {
        uVar3 = FUN_18122bf10();
        FUN_18122c1b0(uVar3,&local_80,&local_88);
        uVar3 = FUN_181226cb0(&local_50,param_2);
        FUN_181243e80(puVar4 + 3,&local_80,uVar3);
        (**(code **)(*local_50 + 0xb0))(local_50,local_48);
        puVar5 = (uint *)(local_80 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
      }
      puVar5 = (uint *)(local_88 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      uVar6 = uVar6 - 1;
    } while (uVar6 != 0);
  }
  iVar2 = (**(code **)(*param_2 + 0x80))(param_2);
  if (*(int *)(puVar4 + 6) < iVar2) {
    FUN_18047cb30(puVar4 + 5,iVar2 / 2 + 8 + iVar2 & 0xfffffff8);
  }
  if (iVar2 < 1) {
    *param_1 = (longlong)puVar4;
    param_1[1] = 0;
    param_1[2] = 0;
    if (*param_1 != 0) {
      FUN_180527d40(*param_1 + 0x38,&local_70);
    }
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  FUN_181350900(&local_a0,param_2);
  if (local_a0 == 0) {
    *param_1 = (longlong)puVar4;
    param_1[1] = 0;
    param_1[2] = 0;
    if (*param_1 != 0) {
      FUN_180527d40(*param_1 + 0x38,&local_70);
    }
    if ((local_8c != 0) && (local_a0 != 0)) {
      FUN_180527d40(local_a0 + 0x38,&local_a0);
    }
    local_8c = 0;
                    /* WARNING: Subroutine does not return */
    free(local_98);
  }
  FUN_180527fa0(puVar4 + 5,local_a0);
  *(undefined8 **)(local_a0 + 0x48) = puVar4;
  if ((local_8c != 0) && (local_a0 != 0)) {
    FUN_180527d40(local_a0 + 0x38,&local_a0);
  }
  local_8c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_98);
}



############ FUN_ 180479810 size=743 ############

void FUN_180479810(longlong param_1,undefined8 param_2)

{
  LPCRITICAL_SECTION p_Var1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  undefined1 *puVar5;
  longlong lVar6;
  undefined8 *puVar7;
  uint *_Memory;
  undefined1 auStack_138 [32];
  undefined8 local_118;
  undefined1 *local_108;
  longlong local_100;
  char *local_f8;
  longlong local_f0;
  undefined **local_e8 [2];
  void **local_d8;
  void *local_d0 [2];
  void *local_c0;
  void *local_b0;
  undefined8 local_98;
  char *local_90;
  undefined8 *local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  LPCRITICAL_SECTION local_68;
  LPCRITICAL_SECTION local_60;
  undefined **local_58;
  undefined1 local_50 [8];
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_138;
  (**(code **)(**(longlong **)(param_1 + 0x30) + 0xe8))();
  FUN_18124a4b0(local_e8,0x100);
  local_98 = 0;
  (*(code *)local_e8[0][4])(local_e8,&local_98,8);
  lVar6 = (**(code **)(**(longlong **)(param_1 + 0x30) + 0x98))();
  if (lVar6 != 0) {
    local_f0 = (longlong)local_b0 + -8;
    (*(code *)local_e8[0][4])(local_e8,&local_f0,8);
    (*(code *)local_e8[0][4])(local_e8,"JUCEPrivateData",0xf);
    if (local_d8 != (void **)0x0) {
      if (local_b0 < local_d8[1]) {
        *(undefined1 *)((longlong)local_b0 + (longlong)*local_d8) = 0;
      }
      local_c0 = *local_d8;
    }
    FUN_18124a110(param_2,local_c0);
    local_e8[0] = juce::MemoryOutputStream::vftable;
    if ((local_d8 != local_d0) && (local_d8 != (void **)0x0)) {
      FUN_18124a200(local_d8,local_b0,0);
    }
                    /* WARNING: Subroutine does not return */
    free(local_d0[0]);
  }
  lVar6 = FUN_18122bf10();
  if (s_JUCEPrivateData_1821d9fa0[0] == '\0') {
    local_108 = &DAT_1821dbf98;
  }
  else {
    p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
    local_68 = p_Var1;
    EnterCriticalSection(p_Var1);
    FUN_18122c130(lVar6);
    local_90 = "JUCEPrivateData";
    FUN_181211b90(&local_108,lVar6,&local_90);
    LeaveCriticalSection(p_Var1);
  }
  puVar5 = local_108;
  puVar7 = (undefined8 *)FUN_1811316e0(0x50);
  *(undefined4 *)(puVar7 + 1) = 0;
  *puVar7 = juce::ValueTree::SharedObject::vftable;
  puVar7[2] = puVar5;
  if ((*(uint *)(puVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(puVar5 + -0x10) = *(int *)(puVar5 + -0x10) + 1;
    UNLOCK();
  }
  puVar7[3] = 0;
  puVar7[4] = 0;
  puVar7[5] = 0;
  puVar7[6] = 0;
  puVar7[7] = 0;
  puVar7[8] = 0;
  puVar7[9] = 0;
  LOCK();
  *(int *)(puVar7 + 1) = *(int *)(puVar7 + 1) + 1;
  UNLOCK();
  local_80 = 0;
  local_78 = 0;
  local_88 = puVar7;
  if ((*(uint *)(puVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar2 = (int *)(puVar5 + -0x10);
    iVar3 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5 + -0x10);
    }
  }
  lVar6 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
  local_60 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar6);
  local_f8 = "Bypass";
  FUN_181211b90(&local_100,lVar6,&local_f8);
  LeaveCriticalSection(p_Var1);
  local_50[0] = FUN_180479510(param_1);
  local_58 = &PTR_vftable_18262b550;
  local_118 = 0;
  FUN_180526e00(puVar7,&local_100,&local_58,0);
  (**(code **)(*local_58 + 0xb0))(local_58,local_50);
  _Memory = (uint *)(local_100 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180527630(local_e8,puVar7);
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 180526e00 size=442 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180526e00(longlong param_1,longlong *param_2,undefined8 *param_3,longlong param_4,
                  undefined8 param_5)

{
  longlong *plVar1;
  char cVar2;
  undefined8 uVar3;
  longlong *plVar4;
  undefined1 auStack_c8 [32];
  undefined ***local_a8;
  undefined1 local_a0;
  undefined1 local_98;
  undefined8 local_90;
  longlong local_88;
  undefined4 local_80;
  longlong local_78;
  undefined8 local_70;
  undefined8 local_68;
  longlong local_60;
  longlong local_58;
  undefined **local_50;
  undefined1 local_48 [8];
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_80 = 0;
  if (param_4 == 0) {
    cVar2 = FUN_181243cd0(param_1 + 0x18);
    if (cVar2 != '\0') {
      FUN_180526c70(param_1,param_2,param_5);
    }
  }
  else {
    plVar4 = *(longlong **)(param_1 + 0x18);
    plVar1 = plVar4 + (longlong)*(int *)(param_1 + 0x24) * 3;
    if (plVar4 != plVar1) {
      local_60 = *param_2;
      do {
        local_58 = *plVar4;
        if (local_58 == local_60) {
          plVar1 = plVar4 + 1;
          if (plVar1 != (longlong *)0x0) {
            cVar2 = (**(code **)(*(longlong *)*plVar1 + 0xc0))
                              ((longlong *)*plVar1,plVar4 + 2,param_3 + 1,*param_3);
            if (cVar2 != '\0') {
            }
            local_70 = FUN_1811316e0(0x48);
            LOCK();
            *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
            UNLOCK();
            local_90 = param_5;
            local_98 = 0;
            local_a0 = 0;
            local_a8 = (undefined ***)plVar1;
            local_78 = param_1;
            uVar3 = FUN_180527710(local_70,&local_78,param_2,param_3);
            FUN_1813526d0(param_4,uVar3);
          }
          break;
        }
        plVar4 = plVar4 + 3;
      } while (plVar4 != plVar1);
    }
    local_70 = FUN_1811316e0(0x48);
    local_50 = &PTR_vftable_18262b558;
    local_80 = 1;
    LOCK();
    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
    UNLOCK();
    local_90 = param_5;
    local_98 = 0;
    local_a0 = 1;
    local_a8 = &local_50;
    local_88 = param_1;
    uVar3 = FUN_180527710(local_70,&local_88,param_2,param_3);
    FUN_1813526d0(param_4,uVar3);
    (**(code **)(*local_50 + 0xb0))(local_50,local_48);
  }
}



############ FUN_ 1813526d0 size=867 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813526d0(longlong param_1,ulonglong *param_2)

{
  uint uVar1;
  longlong *plVar2;
  ulonglong uVar3;
  char cVar4;
  int iVar5;
  ulonglong *puVar6;
  uint uVar7;
  void *_Src;
  undefined8 *puVar8;
  ulonglong *puVar9;
  ulonglong *puVar10;
  ulonglong *puVar11;
  undefined1 auStack_78 [32];
  ulonglong *local_58;
  ulonglong *local_50;
  undefined8 local_48;
  longlong local_40;
  ushort local_38;
  ulonglong local_30;
  
  local_48 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  if (param_2 != (ulonglong *)0x0) {
    local_58 = param_2;
    if (*(char *)(param_1 + 0x71) == '\0') {
      cVar4 = (**(code **)(*param_2 + 8))(param_2);
      if (cVar4 == '\0') {
        (**(code **)*param_2)(param_2,1);
      }
      uVar7 = *(int *)(param_1 + 0x6c) - 1;
      puVar10 = (ulonglong *)0x0;
      puVar9 = puVar10;
      if (uVar7 < *(uint *)(param_1 + 0x44)) {
        puVar9 = *(ulonglong **)(*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar7 * 8);
      }
      if ((puVar9 == (ulonglong *)0x0) || (*(char *)(param_1 + 0x70) != '\0')) {
        puVar9 = (ulonglong *)FUN_1811316e0(0x20);
        *puVar9 = 0;
        puVar9[1] = 0;
        uVar3 = *(ulonglong *)(param_1 + 0x58);
        puVar9[2] = uVar3;
        if ((*(uint *)(uVar3 - 0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(uVar3 - 0x10) = *(int *)(uVar3 - 0x10) + 1;
          UNLOCK();
        }
        local_50 = puVar9;
        _ftime64_s(&local_40);
        puVar9[3] = local_40 * 1000 + (ulonglong)local_38;
        uVar7 = *(uint *)(param_1 + 0x6c);
        iVar5 = *(int *)(param_1 + 0x44) + 1;
        if (*(int *)(param_1 + 0x40) < iVar5) {
          FUN_18047cb30(param_1 + 0x38,*(int *)(param_1 + 0x44) + 9 + iVar5 / 2 & 0xfffffff8);
        }
        uVar1 = *(uint *)(param_1 + 0x44);
        if (uVar7 < uVar1) {
          _Src = (void *)(*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar7 * 8);
          memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - uVar7) << 3);
          puVar8 = (undefined8 *)(*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar7 * 8);
        }
        else {
          puVar8 = (undefined8 *)(*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar1 * 8);
        }
        *puVar8 = puVar9;
        *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + 1;
        *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
        param_2 = local_58;
      }
      else if (((0 < *(int *)((longlong)puVar9 + 0xc)) &&
               (plVar2 = *(longlong **)
                          (*puVar9 + (longlong)(*(int *)((longlong)puVar9 + 0xc) + -1) * 8),
               plVar2 != (longlong *)0x0)) &&
              (puVar6 = (ulonglong *)(**(code **)(*plVar2 + 0x20))(plVar2,param_2),
              puVar6 != (ulonglong *)0x0)) {
        local_58 = puVar6;
        (**(code **)*param_2)(param_2,1);
        iVar5 = (**(code **)(*plVar2 + 0x18))(plVar2);
        *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - iVar5;
        param_2 = puVar6;
        if (*(int *)((longlong)puVar9 + 0xc) < 2) {
          FUN_18047cbc0();
          if ((int)puVar9[1] != 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)*puVar9);
          }
          *(undefined4 *)(puVar9 + 1) = 0;
        }
        else {
          FUN_180528070(puVar9,*(int *)((longlong)puVar9 + 0xc) + -1);
        }
      }
      iVar5 = (**(code **)(*param_2 + 0x18))(param_2);
      *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + iVar5;
      local_58 = (ulonglong *)0x0;
      iVar5 = *(int *)((longlong)puVar9 + 0xc) + 1;
      if ((int)puVar9[1] < iVar5) {
        FUN_18047cb30(puVar9,*(int *)((longlong)puVar9 + 0xc) + 9 + iVar5 / 2 & 0xfffffff8);
      }
      iVar5 = *(int *)((longlong)puVar9 + 0xc);
      *(int *)((longlong)puVar9 + 0xc) = iVar5 + 1;
      *(ulonglong **)(*puVar9 + (longlong)iVar5 * 8) = param_2;
      *(undefined1 *)(param_1 + 0x70) = 0;
      FUN_18134fcc0(param_1);
      iVar5 = *(int *)(param_1 + 0x6c);
      while (((0 < iVar5 && (*(int *)(param_1 + 100) < *(int *)(param_1 + 0x60))) &&
             (*(int *)(param_1 + 0x68) < *(int *)(param_1 + 0x44)))) {
        puVar9 = puVar10;
        if (0 < *(int *)(param_1 + 0x44)) {
          puVar9 = (ulonglong *)**(undefined8 **)(param_1 + 0x38);
        }
        puVar8 = (undefined8 *)*puVar9;
        puVar6 = (ulonglong *)
                 ((ulonglong)
                  ((longlong)(puVar8 + *(int *)((longlong)puVar9 + 0xc)) + (7 - (longlong)puVar8))
                 >> 3);
        if (puVar8 + *(int *)((longlong)puVar9 + 0xc) < puVar8) {
          puVar6 = puVar10;
        }
        puVar9 = puVar10;
        puVar11 = puVar10;
        uVar7 = 0;
        if (puVar6 != (ulonglong *)0x0) {
          do {
            iVar5 = (**(code **)(*(longlong *)*puVar8 + 0x18))();
            uVar7 = (int)puVar11 + iVar5;
            puVar11 = (ulonglong *)(ulonglong)uVar7;
            puVar8 = puVar8 + 1;
            puVar9 = (ulonglong *)((longlong)puVar9 + 1);
          } while (puVar9 != puVar6);
        }
        *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - uVar7;
        puVar9 = puVar10;
        if (*(int *)(param_1 + 0x44) != 0) {
          puVar8 = *(undefined8 **)(param_1 + 0x38);
          puVar9 = (ulonglong *)*puVar8;
          memmove(puVar8,puVar8 + 1,(longlong)(*(int *)(param_1 + 0x44) + -1) << 3);
          *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + -1;
        }
        if ((*(int *)(param_1 + 0x44) * 2 < *(int *)(param_1 + 0x40)) &&
           (*(int *)(param_1 + 0x44) < *(int *)(param_1 + 0x40))) {
          FUN_18047cb30(param_1 + 0x38);
        }
        if (puVar9 != (ulonglong *)0x0) {
          FUN_180528290(puVar9);
        }
        *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
        iVar5 = *(int *)(param_1 + 0x6c);
      }
      FUN_1812a5820(param_1);
      param_2 = puVar10;
    }
    if (param_2 != (ulonglong *)0x0) {
      (**(code **)*param_2)(param_2,1);
    }
  }
}



############ FUN_ 18047b360 size=600 ############

ulonglong FUN_18047b360(undefined8 *param_1,undefined8 *param_2,longlong param_3,undefined8 param_4)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  ulonglong in_RAX;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  undefined7 uVar10;
  undefined7 extraout_var;
  int iVar11;
  undefined8 *puVar12;
  ulonglong uVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  int iVar16;
  char *pcVar17;
  undefined8 *local_res8;
  
  lVar5 = DAT_182674c98;
  if (param_3 == 0) {
    uVar13 = in_RAX & 0xffffffffffffff00;
  }
  else {
    local_res8 = param_1;
    puVar7 = (undefined8 *)FUN_1811316e0(0x480,param_2,param_3,param_4,0xfffffffffffffffe);
    lVar8 = 3;
    iVar16 = 0x80;
    puVar15 = param_2;
    puVar6 = puVar7;
    do {
      puVar14 = puVar6;
      puVar12 = puVar15;
      uVar9 = puVar12[1];
      *puVar14 = *puVar12;
      puVar14[1] = uVar9;
      uVar9 = puVar12[3];
      puVar14[2] = puVar12[2];
      puVar14[3] = uVar9;
      uVar9 = puVar12[5];
      puVar14[4] = puVar12[4];
      puVar14[5] = uVar9;
      uVar9 = puVar12[7];
      puVar14[6] = puVar12[6];
      puVar14[7] = uVar9;
      uVar9 = puVar12[9];
      puVar14[8] = puVar12[8];
      puVar14[9] = uVar9;
      uVar9 = puVar12[0xb];
      puVar14[10] = puVar12[10];
      puVar14[0xb] = uVar9;
      uVar9 = puVar12[0xd];
      puVar14[0xc] = puVar12[0xc];
      puVar14[0xd] = uVar9;
      uVar9 = puVar12[0xf];
      puVar14[0xe] = puVar12[0xe];
      puVar14[0xf] = uVar9;
      lVar8 = lVar8 + -1;
      puVar15 = puVar12 + 0x10;
      puVar6 = puVar14 + 0x10;
    } while (lVar8 != 0);
    uVar9 = puVar12[0x11];
    puVar14[0x10] = puVar12[0x10];
    puVar14[0x11] = uVar9;
    uVar9 = puVar12[0x13];
    puVar14[0x12] = puVar12[0x12];
    puVar14[0x13] = uVar9;
    uVar9 = puVar12[0x15];
    puVar14[0x14] = puVar12[0x14];
    puVar14[0x15] = uVar9;
    puVar14[0x16] = puVar12[0x16];
    puVar7[0x37] = 0;
    puVar7[0x38] = 0;
    *(undefined4 *)(puVar7 + 0x39) = 0;
    memset((void *)((longlong)puVar7 + 0x1cc),0,0xa0);
    *(undefined4 *)((longlong)puVar7 + 0x26c) = 0;
    memset(puVar7 + 0x4e,0,0x200);
    puVar7[0x8e] = param_3;
    *(undefined1 *)(puVar7 + 0x8f) = 0;
    uVar2 = *(undefined4 *)((longlong)param_2 + 4);
    uVar3 = *(undefined4 *)(param_2 + 1);
    uVar4 = *(undefined4 *)((longlong)param_2 + 0xc);
    *(undefined4 *)(puVar7 + 0x37) = *(undefined4 *)param_2;
    *(undefined4 *)((longlong)puVar7 + 0x1bc) = uVar2;
    *(undefined4 *)(puVar7 + 0x38) = uVar3;
    *(undefined4 *)((longlong)puVar7 + 0x1c4) = uVar4;
    *(undefined4 *)(puVar7 + 0x39) = *(undefined4 *)(param_2 + 2);
    iVar11 = 0x20;
    pcVar17 = (char *)((longlong)puVar7 + 0x1cc);
    do {
      cVar1 = pcVar17[(longlong)param_2 + (0x14 - ((longlong)puVar7 + 0x1cc))];
      *pcVar17 = cVar1;
      pcVar17 = pcVar17 + 1;
      if (cVar1 == '\0') {
        if ((iVar11 != 0) && (uVar13 = (ulonglong)(iVar11 - 1U), iVar11 - 1U != 0)) {
          for (; uVar13 != 0; uVar13 = uVar13 - 1) {
            *pcVar17 = '\0';
            pcVar17 = pcVar17 + 1;
          }
        }
        break;
      }
      iVar11 = iVar11 + -1;
    } while (iVar11 != 0);
    local_res8 = puVar7;
    FUN_180471230((longlong)puVar7 + 0x1ec,(undefined4 *)((longlong)param_2 + 0x34));
    *(undefined4 *)((longlong)puVar7 + 0x26c) = *(undefined4 *)((longlong)param_2 + 0x74);
    pcVar17 = (char *)(puVar7 + 0x4e);
    lVar8 = 0x78 - (longlong)pcVar17;
    do {
      cVar1 = pcVar17[(longlong)param_2 + lVar8];
      *pcVar17 = cVar1;
      pcVar17 = pcVar17 + 1;
      if (cVar1 == '\0') {
        if ((iVar16 != 0) && (iVar16 - 1U != 0)) {
          for (uVar13 = (ulonglong)(iVar16 - 1U); uVar13 != 0; uVar13 = uVar13 - 1) {
            *pcVar17 = '\0';
            pcVar17 = pcVar17 + 1;
          }
        }
        break;
      }
      iVar16 = iVar16 + -1;
    } while (iVar16 != 0);
    FUN_180471230(puVar7 + 0x5e,param_2 + 0x1f);
    FUN_180471230(puVar7 + 0x6e,param_2 + 0x27);
    uVar9 = FUN_180471230(puVar7 + 0x7e,param_2 + 0x2f);
    puVar15 = *(undefined8 **)(lVar5 + 0x1e0);
    uVar10 = (undefined7)((ulonglong)uVar9 >> 8);
    if (*(undefined8 **)(lVar5 + 0x1e8) == puVar15) {
      FUN_18047f980(lVar5 + 0x1d8,puVar15,&local_res8);
      puVar15 = local_res8;
      uVar10 = extraout_var;
    }
    else {
      *puVar15 = puVar7;
      *(longlong *)(lVar5 + 0x1e0) = *(longlong *)(lVar5 + 0x1e0) + 8;
      puVar15 = (undefined8 *)0x0;
    }
    if (puVar15 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
    uVar13 = CONCAT71(uVar10,1);
  }
  return uVar13;
}



############ FUN_ 1804839b0 size=444 ############

longlong FUN_1804839b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined1 uVar5;
  undefined8 uVar6;
  undefined1 uVar7;
  undefined8 uVar8;
  undefined **local_40;
  undefined8 local_38;
  undefined8 local_30;
  char local_28;
  undefined8 *local_20;
  
  uVar4 = 0xfffffffffffffffe;
  _Mtx_init_in_situ(param_1,2,param_3,param_4,0xfffffffffffffffe);
  _Cnd_init_in_situ(param_1 + 0x50);
  *(undefined4 *)(param_1 + 0x98) = 0;
  *(undefined2 *)(param_1 + 0x9c) = 0;
  *(undefined1 *)(param_1 + 0x9e) = 0;
  *(undefined8 *)(param_1 + 0xd8) = 0;
  puVar3 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar3 = FUN_180483bf0;
  puVar3[1] = param_1;
  iVar1 = _Cnd_init(&local_38);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  uVar5 = 1;
  uVar6 = local_38;
  iVar1 = _Mtx_init(&local_30,1);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  uVar7 = 1;
  local_28 = '\0';
  uVar8 = local_30;
  iVar1 = _Mtx_lock();
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  local_40 = std::
             _LaunchPad<std::unique_ptr<std::tuple<std::_Binder<std::_Unforced,void_(__cdecl_WorkerThread::*)(void)___ptr64,WorkerThread*___ptr64>_>,std::default_delete<std::tuple<std::_Binder<std::_Unforced,void_(__cdecl_WorkerThread::*)(void)___ptr64,WorkerThread*___ptr64>_>_>_>_>
             ::vftable;
  local_20 = puVar3;
  iVar2 = _Thrd_start(param_1 + 0xe0,FUN_1804836d0,&local_40,param_4,uVar4,uVar5,uVar6,uVar7,uVar8);
  iVar1 = 1;
  if (iVar2 != 4) {
    iVar1 = iVar2;
  }
  uVar4 = local_38;
  uVar6 = local_30;
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
    uVar4 = local_38;
    uVar6 = local_30;
  }
  while (local_28 == '\0') {
    local_38 = uVar4;
    local_30 = uVar6;
    iVar1 = _Cnd_wait(uVar4,uVar6);
    uVar4 = local_38;
    uVar6 = local_30;
    if (iVar1 != 0) {
      std::_Throw_C_error(iVar1);
      uVar4 = local_38;
      uVar6 = local_30;
    }
  }
  if (local_20 == (undefined8 *)0x0) {
    iVar1 = _Mtx_unlock(uVar6);
    if (iVar1 != 0) {
      std::_Throw_C_error(iVar1);
    }
    _Mtx_destroy(uVar6);
    _Cnd_destroy(uVar4);
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  free(local_20);
}



############ FUN_ 1812459c0 size=264 ############

bool FUN_1812459c0(longlong *param_1,undefined4 param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  int *piVar1;
  undefined8 *_Memory;
  longlong *_Memory_00;
  longlong lVar2;
  longlong local_res8 [2];
  LPCRITICAL_SECTION local_res18;
  undefined8 local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 1);
  local_res18 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  if (*param_1 == 0) {
    local_res20 = FUN_1811316e0(0x10);
    local_res8[0] = param_1[7];
    if ((*(uint *)(local_res8[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8[0] + -0x10) = *(int *)(local_res8[0] + -0x10) + 1;
      UNLOCK();
    }
    lVar2 = FUN_18049a330(local_res20,local_res8,param_2,local_res20,uVar3);
    _Memory = (undefined8 *)*param_1;
    *param_1 = lVar2;
    if (_Memory != (undefined8 *)0x0) {
      if ((HANDLE)*_Memory != (HANDLE)0x0) {
        ReleaseMutex((HANDLE)*_Memory);
        CloseHandle((HANDLE)*_Memory);
        *_Memory = 0;
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    _Memory_00 = (longlong *)*param_1;
    if ((*_Memory_00 == 0) && (*param_1 = 0, _Memory_00 != (longlong *)0x0)) {
      if ((HANDLE)*_Memory_00 != (HANDLE)0x0) {
        ReleaseMutex((HANDLE)*_Memory_00);
        CloseHandle((HANDLE)*_Memory_00);
        *_Memory_00 = 0;
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  else {
    piVar1 = (int *)(*param_1 + 8);
    *piVar1 = *piVar1 + 1;
  }
  lVar2 = *param_1;
  LeaveCriticalSection(lpCriticalSection);
  return lVar2 != 0;
}



############ FUN_ 180485b80 size=193 ############

longlong * FUN_180485b80(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  if (param_2 != 0) {
    if (*(longlong *)(param_2 + 0x2c0) == 0) {
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::WeakReference<ParameterFloat,juce::ReferenceCountedObject>::SharedPointer::
                vftable;
      puVar5[2] = param_2;
      if (*(undefined8 **)(param_2 + 0x2c0) != puVar5) {
        LOCK();
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        UNLOCK();
        puVar3 = *(undefined8 **)(param_2 + 0x2c0);
        *(undefined8 **)(param_2 + 0x2c0) = puVar5;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
    }
    lVar4 = *(longlong *)(param_2 + 0x2c0);
    *param_1 = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
      UNLOCK();
    }
    return param_1;
  }
  *param_1 = 0;
  return param_1;
}



############ FUN_ 1804864d0 size=534 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804864d0(longlong param_1,uint param_2)

{
  longlong *plVar1;
  uint *puVar2;
  void *_Memory;
  uint *puVar3;
  int iVar4;
  uint *puVar5;
  uint *puVar6;
  uint uVar7;
  uint uVar8;
  ulonglong uVar9;
  int iVar10;
  longlong lVar11;
  longlong lVar12;
  undefined1 auStack_c8 [32];
  uint *local_a8;
  undefined4 local_a0;
  uint uStack_9c;
  undefined8 local_98;
  ulonglong local_48;
  
  local_98 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_a8 = (uint *)((ulonglong)local_a8 & 0xffffffff00000000);
  plVar1 = (longlong *)(param_1 + 8);
  uVar7 = param_2 % *(uint *)(param_1 + 0x14);
  puVar6 = *(uint **)((longlong)(int)uVar7 * 8 + *plVar1);
  for (puVar5 = puVar6; puVar5 != (uint *)0x0; puVar5 = *(uint **)(puVar5 + 0x12)) {
    if (*puVar5 == param_2) {
    }
  }
  puVar5 = (uint *)FUN_1811316e0(0x50);
  *puVar5 = param_2;
  local_a8 = puVar5 + 2;
  puVar5[0x10] = 0;
  puVar5[0x11] = 0;
  *(uint **)(puVar5 + 0x12) = puVar6;
  if (-1 < (int)uVar7) {
    if ((int)uVar7 < *(int *)(param_1 + 0x14)) {
      *(uint **)((longlong)(int)uVar7 * 8 + *plVar1) = puVar5;
    }
    else {
      FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
      iVar4 = *(int *)(param_1 + 0x14);
      *(int *)(param_1 + 0x14) = iVar4 + 1;
      *(uint **)(*plVar1 + (longlong)iVar4 * 8) = puVar5;
    }
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  if (*(int *)(param_1 + 0x18) <= (*(int *)(param_1 + 0x14) * 3) / 2) {
  }
  uVar7 = *(int *)(param_1 + 0x14) * 2;
  puVar6 = (uint *)0x0;
  local_a8 = (uint *)0x0;
  local_a0 = 0;
  uStack_9c = 0;
  puVar5 = puVar6;
  if (0 < (int)uVar7) {
    FUN_18047e060(&local_a8);
    uVar8 = uStack_9c;
    puVar5 = local_a8;
    if (uStack_9c != 0) {
      memmove(local_a8 + (longlong)(int)uVar7 * 2,local_a8,(longlong)(int)uStack_9c << 3);
    }
    if (0 < (int)uVar7) {
      uVar9 = (ulonglong)uVar7;
      puVar6 = puVar5;
      do {
        puVar6[0] = 0;
        puVar6[1] = 0;
        uVar9 = uVar9 - 1;
        puVar6 = puVar6 + 2;
      } while (uVar9 != 0);
    }
    uStack_9c = uVar8 + uVar7;
    puVar6 = (uint *)(ulonglong)uStack_9c;
  }
  iVar10 = (int)puVar6;
  iVar4 = *(int *)(param_1 + 0x14) + -1;
  lVar12 = (longlong)iVar4;
  if (-1 < iVar4) {
    do {
      puVar2 = *(uint **)(*plVar1 + lVar12 * 8);
      while (puVar3 = puVar2, iVar10 = (int)puVar6, puVar3 != (uint *)0x0) {
        uVar8 = *puVar3 % uVar7;
        puVar2 = *(uint **)(puVar3 + 0x12);
        *(undefined8 *)(puVar3 + 0x12) = *(undefined8 *)(puVar5 + (longlong)(int)uVar8 * 2);
        if (-1 < (int)uVar8) {
          if ((int)uVar8 < iVar10) {
            *(uint **)(puVar5 + (longlong)(int)uVar8 * 2) = puVar3;
          }
          else {
            FUN_18047e060(&local_a8);
            lVar11 = (longlong)(int)uStack_9c;
            uStack_9c = uStack_9c + 1;
            puVar6 = (uint *)(ulonglong)uStack_9c;
            *(uint **)(local_a8 + lVar11 * 2) = puVar3;
            puVar5 = local_a8;
          }
        }
      }
      lVar12 = lVar12 + -1;
    } while (-1 < lVar12);
  }
  _Memory = (void *)*plVar1;
  *plVar1 = (longlong)puVar5;
  *(undefined4 *)(param_1 + 0x10) = local_a0;
  *(int *)(param_1 + 0x14) = iVar10;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048a5b0 size=93 ############

undefined8 * FUN_18048a5b0(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0();
  *(undefined4 *)(puVar1 + 2) = 0;
  puVar1[1] = 0xffffffffffffffff;
  *puVar1 = CloudyAsyncCaller::vftable;
  *(undefined4 *)(puVar1 + 3) = 0x400;
  puVar1[0xb] = 0;
  FUN_1812a77d0(puVar1,0x10);
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180490e00 size=91 ############

undefined8 *
FUN_180490e00(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar1 = std::_Func_impl_no_alloc<CloudyAsyncCaller::FuncWithLeakDetector,void>::vftable;
  puVar1[8] = 0;
  FUN_180488560(puVar1 + 1,param_1,param_3,param_4,uVar2);
  return puVar1;
}



############ FUN_ 18048a7b0 size=74 ############

undefined8 *
FUN_18048a7b0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x18);
  uVar1 = FUN_1811e4400(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048a800 size=197 ############

undefined8 *
FUN_18048a800(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  bool bVar3;
  undefined8 *local_res8 [2];
  longlong local_res18;
  undefined8 *local_res20;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  local_res8[0] = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  local_res20 = puVar2;
  FUN_18049c4e0(local_res8,"AlternativeStateOption",param_3,param_4,uVar4);
  *puVar2 = ProcessorStateOption::vftable;
  puVar2[1] = local_res8[0];
  puVar2[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *puVar2 = AlternativeStateOption::vftable;
  local_res18 = puVar2[1];
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1811efc90(param_2,&local_res18);
  *param_1 = puVar2;
  return param_1;
}



############ FUN_ 18048a8d0 size=74 ############

undefined8 *
FUN_18048a8d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x18);
  uVar1 = FUN_1811e4590(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048a920 size=74 ############

undefined8 *
FUN_18048a920(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x18);
  uVar1 = FUN_180484030(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048ac50 size=472 ############

void FUN_18048ac50(longlong param_1,undefined8 *param_2)

{
  uint *puVar1;
  void **ppvVar2;
  uint uVar3;
  undefined8 uVar4;
  void *pvVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  void *_Memory;
  undefined4 *puVar9;
  void *local_res18;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined **local_40;
  undefined8 local_38;
  undefined8 local_30;
  char local_28;
  undefined4 *local_20;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0xa8);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar3 & 1) != 0) {
    return;
  }
  ppvVar2 = (void **)(param_1 + 0xb0);
  if (*ppvVar2 != (void *)0x0) {
    FUN_1804836e0();
  }
  uVar4 = *param_2;
  _Memory = (void *)FUN_1811316e0(0x10);
  local_res18 = _Memory;
  puVar9 = (undefined4 *)FUN_1811316e0(0x10);
  local_70 = (undefined4)param_1;
  uStack_6c = (undefined4)((ulonglong)param_1 >> 0x20);
  uStack_68 = (undefined4)uVar4;
  uStack_64 = (undefined4)((ulonglong)uVar4 >> 0x20);
  *puVar9 = local_70;
  puVar9[1] = uStack_6c;
  puVar9[2] = uStack_68;
  puVar9[3] = uStack_64;
  iVar7 = _Cnd_init(&local_38);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  iVar7 = _Mtx_init(&local_30,1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_28 = '\0';
  iVar7 = _Mtx_lock();
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_40 = std::
             _LaunchPad<std::unique_ptr<std::tuple<<lambda_b4e65c467aba9fb02f49b856cca3c2f2>_>,std::default_delete<std::tuple<<lambda_b4e65c467aba9fb02f49b856cca3c2f2>_>_>_>_>
             ::vftable;
  local_20 = puVar9;
  iVar8 = _Thrd_start(_Memory,FUN_1804836d0,&local_40);
  iVar7 = 1;
  if (iVar8 != 4) {
    iVar7 = iVar8;
  }
  uVar4 = local_38;
  uVar6 = local_30;
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
    uVar4 = local_38;
    uVar6 = local_30;
  }
  while (local_28 == '\0') {
    local_38 = uVar4;
    local_30 = uVar6;
    iVar7 = _Cnd_wait(uVar4,uVar6);
    uVar4 = local_38;
    uVar6 = local_30;
    if (iVar7 != 0) {
      std::_Throw_C_error(iVar7);
      uVar4 = local_38;
      uVar6 = local_30;
    }
  }
  if (local_20 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_20);
  }
  iVar7 = _Mtx_unlock(uVar6);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  _Mtx_destroy(uVar6);
  _Cnd_destroy(uVar4);
  if (ppvVar2 == &local_res18) {
    if (*(int *)((longlong)_Memory + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
  else {
    pvVar5 = *ppvVar2;
    *ppvVar2 = _Memory;
    if (pvVar5 == (void *)0x0) {
      return;
    }
    _Memory = pvVar5;
    if (*(int *)((longlong)pvVar5 + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048ae30 size=472 ############

void FUN_18048ae30(longlong param_1,undefined8 *param_2)

{
  uint *puVar1;
  void **ppvVar2;
  uint uVar3;
  undefined8 uVar4;
  void *pvVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  void *_Memory;
  undefined4 *puVar9;
  void *local_res18;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined **local_40;
  undefined8 local_38;
  undefined8 local_30;
  char local_28;
  undefined4 *local_20;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0xa8);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar3 & 1) != 0) {
    return;
  }
  ppvVar2 = (void **)(param_1 + 0xb0);
  if (*ppvVar2 != (void *)0x0) {
    FUN_1804836e0();
  }
  uVar4 = *param_2;
  _Memory = (void *)FUN_1811316e0(0x10);
  local_res18 = _Memory;
  puVar9 = (undefined4 *)FUN_1811316e0(0x10);
  local_70 = (undefined4)param_1;
  uStack_6c = (undefined4)((ulonglong)param_1 >> 0x20);
  uStack_68 = (undefined4)uVar4;
  uStack_64 = (undefined4)((ulonglong)uVar4 >> 0x20);
  *puVar9 = local_70;
  puVar9[1] = uStack_6c;
  puVar9[2] = uStack_68;
  puVar9[3] = uStack_64;
  iVar7 = _Cnd_init(&local_38);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  iVar7 = _Mtx_init(&local_30,1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_28 = '\0';
  iVar7 = _Mtx_lock();
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_40 = std::
             _LaunchPad<std::unique_ptr<std::tuple<<lambda_44d8c7cd38d45ce8414c8d251bf53af3>_>,std::default_delete<std::tuple<<lambda_44d8c7cd38d45ce8414c8d251bf53af3>_>_>_>_>
             ::vftable;
  local_20 = puVar9;
  iVar8 = _Thrd_start(_Memory,FUN_1804836d0,&local_40);
  iVar7 = 1;
  if (iVar8 != 4) {
    iVar7 = iVar8;
  }
  uVar4 = local_38;
  uVar6 = local_30;
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
    uVar4 = local_38;
    uVar6 = local_30;
  }
  while (local_28 == '\0') {
    local_38 = uVar4;
    local_30 = uVar6;
    iVar7 = _Cnd_wait(uVar4,uVar6);
    uVar4 = local_38;
    uVar6 = local_30;
    if (iVar7 != 0) {
      std::_Throw_C_error(iVar7);
      uVar4 = local_38;
      uVar6 = local_30;
    }
  }
  if (local_20 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_20);
  }
  iVar7 = _Mtx_unlock(uVar6);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  _Mtx_destroy(uVar6);
  _Cnd_destroy(uVar4);
  if (ppvVar2 == &local_res18) {
    if (*(int *)((longlong)_Memory + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
  else {
    pvVar5 = *ppvVar2;
    *ppvVar2 = _Memory;
    if (pvVar5 == (void *)0x0) {
      return;
    }
    _Memory = pvVar5;
    if (*(int *)((longlong)pvVar5 + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048b010 size=472 ############

void FUN_18048b010(longlong param_1,undefined8 *param_2)

{
  uint *puVar1;
  void **ppvVar2;
  uint uVar3;
  undefined8 uVar4;
  void *pvVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  void *_Memory;
  undefined4 *puVar9;
  void *local_res18;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined **local_40;
  undefined8 local_38;
  undefined8 local_30;
  char local_28;
  undefined4 *local_20;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0xa8);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar3 & 1) != 0) {
    return;
  }
  ppvVar2 = (void **)(param_1 + 0xb0);
  if (*ppvVar2 != (void *)0x0) {
    FUN_1804836e0();
  }
  uVar4 = *param_2;
  _Memory = (void *)FUN_1811316e0(0x10);
  local_res18 = _Memory;
  puVar9 = (undefined4 *)FUN_1811316e0(0x10);
  local_70 = (undefined4)param_1;
  uStack_6c = (undefined4)((ulonglong)param_1 >> 0x20);
  uStack_68 = (undefined4)uVar4;
  uStack_64 = (undefined4)((ulonglong)uVar4 >> 0x20);
  *puVar9 = local_70;
  puVar9[1] = uStack_6c;
  puVar9[2] = uStack_68;
  puVar9[3] = uStack_64;
  iVar7 = _Cnd_init(&local_38);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  iVar7 = _Mtx_init(&local_30,1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_28 = '\0';
  iVar7 = _Mtx_lock();
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_40 = std::
             _LaunchPad<std::unique_ptr<std::tuple<<lambda_c2d4ba45a1b439a879d91d1bc23cb74f>_>,std::default_delete<std::tuple<<lambda_c2d4ba45a1b439a879d91d1bc23cb74f>_>_>_>_>
             ::vftable;
  local_20 = puVar9;
  iVar8 = _Thrd_start(_Memory,FUN_1804836d0,&local_40);
  iVar7 = 1;
  if (iVar8 != 4) {
    iVar7 = iVar8;
  }
  uVar4 = local_38;
  uVar6 = local_30;
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
    uVar4 = local_38;
    uVar6 = local_30;
  }
  while (local_28 == '\0') {
    local_38 = uVar4;
    local_30 = uVar6;
    iVar7 = _Cnd_wait(uVar4,uVar6);
    uVar4 = local_38;
    uVar6 = local_30;
    if (iVar7 != 0) {
      std::_Throw_C_error(iVar7);
      uVar4 = local_38;
      uVar6 = local_30;
    }
  }
  if (local_20 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_20);
  }
  iVar7 = _Mtx_unlock(uVar6);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  _Mtx_destroy(uVar6);
  _Cnd_destroy(uVar4);
  if (ppvVar2 == &local_res18) {
    if (*(int *)((longlong)_Memory + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
  else {
    pvVar5 = *ppvVar2;
    *ppvVar2 = _Memory;
    if (pvVar5 == (void *)0x0) {
      return;
    }
    _Memory = pvVar5;
    if (*(int *)((longlong)pvVar5 + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048b1f0 size=472 ############

void FUN_18048b1f0(longlong param_1,undefined8 *param_2)

{
  uint *puVar1;
  void **ppvVar2;
  uint uVar3;
  undefined8 uVar4;
  void *pvVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  void *_Memory;
  undefined4 *puVar9;
  void *local_res18;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined **local_40;
  undefined8 local_38;
  undefined8 local_30;
  char local_28;
  undefined4 *local_20;
  
  LOCK();
  puVar1 = (uint *)(param_1 + 0xa8);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 | 1;
  UNLOCK();
  if ((uVar3 & 1) != 0) {
    return;
  }
  ppvVar2 = (void **)(param_1 + 0xb0);
  if (*ppvVar2 != (void *)0x0) {
    FUN_1804836e0();
  }
  uVar4 = *param_2;
  _Memory = (void *)FUN_1811316e0(0x10);
  local_res18 = _Memory;
  puVar9 = (undefined4 *)FUN_1811316e0(0x10);
  local_70 = (undefined4)param_1;
  uStack_6c = (undefined4)((ulonglong)param_1 >> 0x20);
  uStack_68 = (undefined4)uVar4;
  uStack_64 = (undefined4)((ulonglong)uVar4 >> 0x20);
  *puVar9 = local_70;
  puVar9[1] = uStack_6c;
  puVar9[2] = uStack_68;
  puVar9[3] = uStack_64;
  iVar7 = _Cnd_init(&local_38);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  iVar7 = _Mtx_init(&local_30,1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_28 = '\0';
  iVar7 = _Mtx_lock();
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_40 = std::
             _LaunchPad<std::unique_ptr<std::tuple<<lambda_6b83aa2b98bc64a6f69dd7745f015710>_>,std::default_delete<std::tuple<<lambda_6b83aa2b98bc64a6f69dd7745f015710>_>_>_>_>
             ::vftable;
  local_20 = puVar9;
  iVar8 = _Thrd_start(_Memory,FUN_1804836d0,&local_40);
  iVar7 = 1;
  if (iVar8 != 4) {
    iVar7 = iVar8;
  }
  uVar4 = local_38;
  uVar6 = local_30;
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
    uVar4 = local_38;
    uVar6 = local_30;
  }
  while (local_28 == '\0') {
    local_38 = uVar4;
    local_30 = uVar6;
    iVar7 = _Cnd_wait(uVar4,uVar6);
    uVar4 = local_38;
    uVar6 = local_30;
    if (iVar7 != 0) {
      std::_Throw_C_error(iVar7);
      uVar4 = local_38;
      uVar6 = local_30;
    }
  }
  if (local_20 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_20);
  }
  iVar7 = _Mtx_unlock(uVar6);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  _Mtx_destroy(uVar6);
  _Cnd_destroy(uVar4);
  if (ppvVar2 == &local_res18) {
    if (*(int *)((longlong)_Memory + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
  else {
    pvVar5 = *ppvVar2;
    *ppvVar2 = _Memory;
    if (pvVar5 == (void *)0x0) {
      return;
    }
    _Memory = pvVar5;
    if (*(int *)((longlong)pvVar5 + 8) != 0) {
                    /* WARNING: Subroutine does not return */
      terminate();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048b6f0 size=97 ############

undefined8 * FUN_18048b6f0(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar1 = *param_2;
  *param_2 = 0;
  puVar1[1] = param_2[1];
  param_2[1] = 0;
  puVar1[2] = param_2[2];
  param_2[2] = 0;
  puVar1[3] = param_2[3];
  param_2[3] = &DAT_1821dbf98;
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18048b840 size=54 ############

undefined8 * FUN_18048b840(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0();
  puVar1[1] = 0;
  *puVar1 = BaseUpdater::vftable;
  *(undefined4 *)(puVar1 + 1) = 0;
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18048b880 size=136 ############

undefined8 *
FUN_18048b880(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined1 local_60 [56];
  undefined8 local_28;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x60);
  local_28 = 0;
  FUN_180488560(local_60,param_3);
  uVar1 = FUN_1811afba0(uVar1,param_2,local_60,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048b950 size=164 ############

undefined8 *
FUN_18048b950(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
             undefined8 param_5)

{
  undefined8 uVar1;
  undefined1 local_58 [56];
  undefined8 local_20;
  
  uVar1 = FUN_1811316e0(0x78);
  local_20 = 0;
  FUN_180488560(local_58,param_3);
  uVar1 = FUN_1811aeda0(uVar1,param_2,local_58,*param_4,param_5);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048ba90 size=106 ############

undefined8 * FUN_18048ba90(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  uVar2 = FUN_18122bf10();
  FUN_18122c1b0(uVar2,puVar1 + 3,param_2);
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18048bb90 size=277 ############

void FUN_18048bb90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint *_Memory;
  longlong local_res8;
  undefined8 *local_res18 [2];
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  local_res8 = FUN_1811316e0(0x18);
  puVar4 = (undefined8 *)FUN_1811e4400(local_res8,param_2);
  local_res18[0] = puVar4;
  FUN_181184660(param_1,puVar4);
  local_res8 = puVar4[1];
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  plVar2 = *(longlong **)(param_1 + 0x38);
  if (*(longlong **)(param_1 + 0x40) == plVar2) {
    FUN_18048d8d0(param_1 + 0x30,plVar2,&local_res8,param_4,uVar5);
  }
  else {
    *plVar2 = local_res8;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 8;
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar3 = *(undefined8 **)(param_1 + 0x50);
  if (*(undefined8 **)(param_1 + 0x58) == puVar3) {
    FUN_18048cfc0(param_1 + 0x48,puVar3,local_res18);
    puVar4 = local_res18[0];
  }
  else {
    *puVar3 = puVar4;
    *(longlong *)(param_1 + 0x50) = *(longlong *)(param_1 + 0x50) + 8;
    puVar4 = (undefined8 *)0x0;
  }
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  return;
}



############ FUN_ 181184660 size=175 ############

void FUN_181184660(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *local_res8;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res8 = (void *)FUN_1811316e0(0x10);
  pvVar2 = (void *)(param_1 + 8);
  if (param_1 == 0) {
    pvVar2 = (void *)0x0;
  }
  local_res8 = (void *)FUN_1811e8780(local_res8,param_2,pvVar2,param_4,uVar3);
  puVar1 = *(undefined8 **)(param_1 + 0x98);
  if (*(undefined8 **)(param_1 + 0xa0) == puVar1) {
    FUN_18048bdd0(param_1 + 0x90,puVar1,&local_res8);
    pvVar2 = local_res8;
  }
  else {
    *puVar1 = local_res8;
    *(longlong *)(param_1 + 0x98) = *(longlong *)(param_1 + 0x98) + 8;
    pvVar2 = (void *)0x0;
  }
  if (pvVar2 != (void *)0x0) {
    FUN_1811e6b70(pvVar2);
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  return;
}



############ FUN_ 18048bcb0 size=277 ############

void FUN_18048bcb0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint *_Memory;
  longlong local_res8;
  undefined8 *local_res18 [2];
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  local_res8 = FUN_1811316e0(0x18);
  puVar4 = (undefined8 *)FUN_1811e4590(local_res8,param_2);
  local_res18[0] = puVar4;
  FUN_181184660(param_1,puVar4);
  local_res8 = puVar4[1];
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  plVar2 = *(longlong **)(param_1 + 0x38);
  if (*(longlong **)(param_1 + 0x40) == plVar2) {
    FUN_18048d8d0(param_1 + 0x30,plVar2,&local_res8,param_4,uVar5);
  }
  else {
    *plVar2 = local_res8;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x38) + 8;
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar3 = *(undefined8 **)(param_1 + 0x50);
  if (*(undefined8 **)(param_1 + 0x58) == puVar3) {
    FUN_18048cfc0(param_1 + 0x48,puVar3,local_res18);
    puVar4 = local_res18[0];
  }
  else {
    *puVar3 = puVar4;
    *(longlong *)(param_1 + 0x50) = *(longlong *)(param_1 + 0x50) + 8;
    puVar4 = (undefined8 *)0x0;
  }
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  return;
}



############ FUN_ 18048bff0 size=124 ############

undefined8 *
FUN_18048bff0(undefined8 *param_1,longlong *param_2,undefined1 *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *local_res8;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res8 = param_1;
  uVar1 = FUN_1811316e0(0x40);
  local_res8 = (undefined8 *)*param_2;
  if ((*(uint *)(local_res8 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -2) = *(int *)(local_res8 + -2) + 1;
    UNLOCK();
  }
  uVar1 = FUN_181184390(uVar1,&local_res8,*param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048c070 size=58 ############

undefined8 * FUN_18048c070(undefined8 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x40);
  uVar1 = FUN_1811718a0(uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048c0b0 size=74 ############

undefined8 *
FUN_18048c0b0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x50);
  uVar1 = FUN_181167a50(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 181168f80 size=678 ############

ulonglong FUN_181168f80(longlong param_1,longlong *param_2)

{
  uint uVar1;
  bool bVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  undefined8 *puVar7;
  uint *puVar8;
  char *local_res18;
  undefined8 *local_res20;
  longlong local_a8;
  longlong local_a0;
  undefined1 *local_98;
  undefined8 local_90;
  undefined2 local_88;
  undefined1 *local_80;
  undefined1 *local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined2 local_60;
  undefined8 *local_58;
  undefined8 local_50;
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined8 local_38;
  
  local_50 = 0xfffffffffffffffe;
  FUN_181245100(param_2,&local_res18,"folder.xml");
  bVar2 = true;
  if (*local_res18 != '\0') {
    puVar4 = (undefined8 *)FUN_18049a930(local_48,&local_res18);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar4);
    if (DVar3 != 0xffffffff) goto LAB_181168ff5;
  }
  bVar2 = false;
LAB_181168ff5:
  if (bVar2) {
    local_98 = &DAT_1821dbf98;
    local_90 = 0;
    local_88 = 0;
    local_80 = &DAT_1821dbf98;
    local_78 = &DAT_1821dbf98;
    local_70 = 0;
    local_68 = 0;
    local_60 = 0x100;
    local_res20 = (undefined8 *)FUN_1811316e0(0x18);
    *local_res20 = juce::FileInputSource::vftable;
    local_res20[1] = local_res18;
    if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
      UNLOCK();
    }
    *(undefined1 *)(local_res20 + 2) = 0;
    local_58 = local_res20;
    FUN_181248430(&local_98,&local_res20);
    FUN_181248660(&local_98);
    puVar4 = local_res20;
    if (local_res20 != (undefined8 *)0x0) {
      lVar5 = FUN_181246a60(local_res20,&DAT_1821da79c);
      lVar6 = FUN_181246a60(puVar4,"GROUP");
      if ((lVar5 != 0) && (lVar6 != 0)) {
        puVar4 = (undefined8 *)FUN_181246700(lVar5,&local_a8);
        local_40 = *(undefined8 *)(param_1 + 0x20);
        *(undefined8 *)(param_1 + 0x20) = *puVar4;
        *puVar4 = local_40;
        puVar8 = (uint *)(local_a8 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar7 = (undefined8 *)FUN_181246700(lVar6,&local_a0);
        puVar4 = local_res20;
        local_38 = *(undefined8 *)(param_1 + 0x28);
        *(undefined8 *)(param_1 + 0x28) = *puVar7;
        *puVar7 = local_38;
        puVar8 = (uint *)(local_a0 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        if (local_res20 == (undefined8 *)0x0) {
          puVar8 = (uint *)(local_res18 + -0x10);
          if ((*puVar8 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
          puVar8 = (uint *)(*param_2 + -0x10);
          uVar1 = *puVar8;
          if ((uVar1 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            uVar1 = uVar1 - 1;
            if (uVar1 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
          return CONCAT71((uint7)(uint3)(uVar1 >> 8),1);
        }
        FUN_1812472e0(local_res20);
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    if (puVar4 != (undefined8 *)0x0) {
      FUN_1812472e0(puVar4);
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar8 = (uint *)(local_res18 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(*param_2 + -0x10);
  uVar1 = *puVar8;
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    uVar1 = uVar1 - 1;
    if (uVar1 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return (ulonglong)uVar1 & 0xffffffffffffff00;
}



############ FUN_ 1812425c0 size=1704 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812425c0(longlong *param_1,byte *param_2,byte *param_3,undefined8 *param_4,
                  ulonglong *param_5,ulonglong *param_6,byte *param_7)

{
  uint *puVar1;
  void *pvVar2;
  DWORD DVar3;
  char cVar4;
  byte bVar5;
  BOOL BVar6;
  uint uVar7;
  undefined8 *puVar8;
  HANDLE pvVar9;
  longlong *plVar10;
  longlong lVar11;
  uint uVar12;
  uint *puVar13;
  byte *pbVar14;
  undefined8 *puVar15;
  byte *pbVar16;
  int iVar17;
  uint uVar18;
  bool bVar19;
  undefined1 auStack_398 [32];
  ulonglong *local_378;
  ulonglong *local_370;
  byte *local_368;
  byte local_358 [4];
  uint local_354;
  byte local_350;
  byte *local_348;
  byte *local_340;
  longlong local_338;
  longlong local_330;
  undefined8 *local_328;
  byte *local_320;
  ulonglong *local_318;
  ulonglong *local_310;
  longlong local_308;
  longlong local_300;
  byte *local_2f8;
  byte *local_2f0;
  longlong *local_2e8;
  longlong *local_2e0;
  longlong local_2d8;
  undefined8 local_2d0;
  undefined1 local_2c8 [8];
  byte *local_2c0;
  undefined8 local_2b8;
  longlong local_2b0;
  _WIN32_FIND_DATAW local_2a8;
  ulonglong local_58;
  
  local_2d0 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_398;
  local_318 = param_5;
  local_310 = param_6;
  local_320 = param_7;
  local_354 = 0;
  local_348 = param_3;
  local_328 = param_4;
  local_2f8 = param_2;
LAB_181242650:
  pbVar16 = &DAT_1821dbf98;
  *(undefined1 *)((longlong)param_1 + 0x35) = 1;
  if (param_1[7] != 0) {
    local_378 = local_318;
    local_370 = local_310;
    local_368 = local_320;
    cVar4 = FUN_1812425c0(param_1[7],local_2f8,local_348,local_328);
    if (cVar4 != '\0') {
    }
    pvVar2 = (void *)param_1[7];
    param_1[7] = 0;
    if (pvVar2 != (void *)0x0) {
      FUN_181242dc0(pvVar2);
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  local_340 = &DAT_1821dbf98;
  local_358[0] = 0;
LAB_1812426b2:
  while( true ) {
    if ((local_348 == (byte *)0x0) && ((*(byte *)(param_1 + 6) & 4) == 0)) {
      pbVar14 = (byte *)0x0;
    }
    else {
      pbVar14 = local_358;
    }
    lVar11 = param_1[2];
    if (*(HANDLE *)(lVar11 + 8) == (HANDLE)0xffffffffffffffff) {
      puVar8 = (undefined8 *)FUN_18049a930(local_2c8,lVar11);
      pvVar9 = FindFirstFileW((LPCWSTR)*puVar8,&local_2a8);
      *(HANDLE *)(lVar11 + 8) = pvVar9;
      bVar19 = pvVar9 == (HANDLE)0xffffffffffffffff;
    }
    else {
      BVar6 = FindNextFileW(*(HANDLE *)(lVar11 + 8),&local_2a8);
      bVar19 = BVar6 == 0;
    }
    if (bVar19) break;
    FUN_18049c800(&local_2f0,local_2a8.cFileName);
    DVar3 = local_2a8.dwFileAttributes;
    local_340 = local_2f0;
    puVar1 = (uint *)(pbVar16 + -0x10);
    local_2f0 = pbVar16;
    local_2c0 = pbVar16;
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    uVar18 = local_2a8.dwFileAttributes >> 4;
    local_350 = (byte)uVar18 & 1;
    if (pbVar14 != (byte *)0x0) {
      *pbVar14 = (byte)(local_2a8.dwFileAttributes >> 1) & 1;
    }
    pbVar16 = local_340;
    if (local_320 != (byte *)0x0) {
      *local_320 = (byte)DVar3 & 1;
    }
    if (local_328 != (undefined8 *)0x0) {
      *local_328 = CONCAT44(local_2a8.nFileSizeHigh,local_2a8.nFileSizeLow);
    }
    if (local_318 != (ulonglong *)0x0) {
      *local_318 = ((longlong)local_2a8.ftLastWriteTime + 0xfe624e212ac18000U) / 10000;
    }
    if (local_310 != (ulonglong *)0x0) {
      *local_310 = ((longlong)local_2a8.ftCreationTime + 0xfe624e212ac18000U) / 10000;
    }
    *(int *)(param_1 + 5) = (int)param_1[5] + 1;
    bVar5 = *local_340;
    pbVar14 = local_340;
    while (bVar5 != 0) {
      bVar5 = *pbVar14;
      pbVar14 = pbVar14 + 1;
      uVar12 = (uint)bVar5;
      if ((char)bVar5 < '\0') {
        uVar12 = 0x7f;
        uVar7 = 0x40;
        iVar17 = 0;
        if ((bVar5 & 0x40) != 0) {
          do {
            if (uVar7 < 9) break;
            uVar12 = uVar12 >> 1;
            iVar17 = iVar17 + 1;
            uVar7 = uVar7 >> 1;
          } while ((bVar5 & uVar7) != 0);
        }
        uVar12 = bVar5 & uVar12;
        for (; (iVar17 = iVar17 + -1, -1 < iVar17 && ((*pbVar14 & 0xc0) == 0x80));
            pbVar14 = pbVar14 + 1) {
          uVar12 = *pbVar14 & 0x3f | uVar12 << 6;
        }
      }
      iVar17 = FUN_18049bc80(&DAT_1821d96ec,uVar12);
      if (iVar17 < 0) {
        if ((uVar18 & 1) == 0) {
          bVar5 = (byte)(*(uint *)(param_1 + 6) >> 1);
        }
        else {
          if ((*(char *)((longlong)param_1 + 0x34) != '\0') &&
             (((*(byte *)(param_1 + 6) & 4) == 0 || (local_358[0] == 0)))) {
            plVar10 = (longlong *)FUN_1811316e0(0x48);
            local_338 = param_1[4];
            if ((*(uint *)(local_338 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_338 + -0x10) = *(int *)(local_338 + -0x10) + 1;
              UNLOCK();
            }
            local_2e8 = &local_338;
            local_2e0 = plVar10;
            local_2e8 = (longlong *)FUN_181232d30(&local_338,&local_340);
            uVar18 = local_354;
            local_2e8 = (longlong *)*local_2e8;
            puVar1 = (uint *)((longlong)local_2e8 + -0x10);
            if ((*puVar1 & 0x30000000) == 0) {
              LOCK();
              *puVar1 = *puVar1 + 1;
              UNLOCK();
            }
            puVar13 = (uint *)(local_338 + -0x10);
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar12 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar12 == 0) {
                local_354 = local_354 | 4;
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
            if ((*puVar1 & 0x30000000) == 0) {
              LOCK();
              *puVar1 = *puVar1 + 1;
              UNLOCK();
            }
            LOCK();
            UNLOCK();
            local_330 = (longlong)local_2e8;
            if ((DAT_1821dbf88 & 0x30000000) == 0) {
              LOCK();
              uVar12 = DAT_1821dbf88 - 1;
              UNLOCK();
              bVar19 = DAT_1821dbf88 == 0;
              DAT_1821dbf88 = uVar12;
              if (bVar19) {
                local_354 = local_354 | 5;
                    /* WARNING: Subroutine does not return */
                free(&DAT_1821dbf88);
              }
            }
            local_354 = local_354 | 7;
            local_378 = (ulonglong *)CONCAT44(local_378._4_4_,(int)param_1[6]);
            lVar11 = FUN_181242e90(plVar10,&local_330,1,param_1 + 3);
            pvVar2 = (void *)param_1[7];
            param_1[7] = lVar11;
            if (pvVar2 != (void *)0x0) {
              FUN_181242dc0(pvVar2);
                    /* WARNING: Subroutine does not return */
              free(pvVar2);
            }
            local_354 = uVar18 & 0xfffffffd | 5;
            puVar13 = (uint *)(local_330 + -0x10);
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar18 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
            pbVar16 = local_340;
            if (((local_354 & 1) != 0) &&
               (local_354 = local_354 & 0xfffffffe, (*puVar1 & 0x30000000) == 0)) {
              LOCK();
              uVar18 = *puVar1;
              *puVar1 = *puVar1 - 1;
              UNLOCK();
              if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar1);
              }
            }
          }
          bVar5 = *(byte *)(param_1 + 6);
        }
        bVar19 = (bool)(bVar5 & 1);
        if (bVar19 == false) goto LAB_181242a9d;
        if ((*(char *)((longlong)param_1 + 0x34) == '\0') && (*(int *)((longlong)param_1 + 0xc) < 2)
           ) goto LAB_181242a86;
        puVar15 = (undefined8 *)*param_1;
        puVar8 = puVar15 + *(int *)((longlong)param_1 + 0xc);
        goto joined_r0x000181242a61;
      }
      bVar5 = *pbVar14;
    }
  }
LAB_181242c59:
  puVar1 = (uint *)(pbVar16 + -0x10);
  if ((*puVar1 & 0x30000000) != 0) {
  }
  LOCK();
  uVar18 = *puVar1;
  *puVar1 = *puVar1 - 1;
  UNLOCK();
  if (uVar18 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(puVar1);
joined_r0x000181242a61:
  if (puVar15 == puVar8) goto LAB_181242a9d;
  local_2b8 = *puVar15;
  cVar4 = FUN_18049aaa0(local_2b8,pbVar16,1);
  if (cVar4 == '\0') {
    puVar15 = puVar15 + 1;
    goto joined_r0x000181242a61;
  }
  bVar19 = true;
LAB_181242a86:
  if ((*(byte *)(param_1 + 6) & 4) != 0) {
    bVar19 = local_358[0] == 0;
  }
  if (bVar19 != false) {
    local_308 = param_1[4];
    if ((*(uint *)(local_308 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_308 + -0x10) = *(int *)(local_308 + -0x10) + 1;
      UNLOCK();
    }
    local_2e0 = &local_308;
    plVar10 = (longlong *)FUN_181232d30(&local_308,&local_340);
    local_2d8 = *plVar10;
    puVar1 = (uint *)(local_2d8 + -0x10);
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      *puVar1 = *puVar1 + 1;
      UNLOCK();
    }
    puVar13 = (uint *)(local_308 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      *puVar1 = *puVar1 + 1;
      UNLOCK();
    }
    LOCK();
    UNLOCK();
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar18 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar19 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar18;
      if (bVar19) {
        local_300 = local_2d8;
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    local_300 = param_1[8];
    param_1[8] = local_2d8;
    puVar13 = (uint *)(local_300 + -0x10);
    local_2b0 = local_300;
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    if (local_348 != (byte *)0x0) {
      *local_348 = local_358[0];
    }
    pbVar16 = local_340;
    if (local_2f8 != (byte *)0x0) {
      *local_2f8 = local_350;
    }
    goto LAB_181242c59;
  }
LAB_181242a9d:
  if (param_1[7] != 0) goto code_r0x000181242aad;
  goto LAB_1812426b2;
code_r0x000181242aad:
  puVar1 = (uint *)(pbVar16 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  goto LAB_181242650;
}



############ FUN_ 181242e90 size=420 ############

longlong FUN_181242e90(longlong param_1,undefined8 param_2,undefined8 param_3,longlong *param_4,
                      undefined4 param_5)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint *puVar4;
  uint uVar5;
  longlong *plVar6;
  longlong local_res10;
  uint local_res18;
  longlong local_res20;
  
  local_res18 = 0;
  FUN_181242d50(param_1,param_4,param_3,param_4,0xfffffffffffffffe);
  if (((char)param_3 == '\0') && (*(int *)(param_1 + 0xc) < 2)) {
    local_res20 = *param_4;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    plVar6 = &local_res20;
    uVar5 = 1;
    local_res18 = 1;
  }
  else {
    FUN_18049c4e0(&local_res10,&DAT_1821d9604);
    plVar6 = &local_res10;
    uVar5 = 2;
    local_res18 = 2;
  }
  uVar3 = FUN_1811316e0(0x10);
  uVar3 = FUN_180498c40(uVar3,param_2,plVar6);
  *(undefined8 *)(param_1 + 0x10) = uVar3;
  if ((uVar5 & 2) != 0) {
    local_res18 = uVar5 & 0xfffffffd;
    puVar4 = (uint *)(local_res10 + -0x10);
    uVar5 = local_res18;
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  if (((uVar5 & 1) != 0) && (puVar4 = (uint *)(local_res20 + -0x10), (*puVar4 & 0x30000000) == 0)) {
    LOCK();
    uVar5 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  lVar2 = *param_4;
  *(longlong *)(param_1 + 0x18) = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1812416f0(param_1 + 0x20,param_2);
  *(undefined8 *)(param_1 + 0x28) = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x30) = param_5;
  *(char *)(param_1 + 0x34) = (char)param_3;
  *(undefined1 *)(param_1 + 0x35) = 0;
  *(undefined8 *)(param_1 + 0x38) = 0;
  *(undefined1 **)(param_1 + 0x40) = &DAT_1821dbf98;
  return param_1;
}



############ FUN_ 181248430 size=548 ############

undefined8 FUN_181248430(longlong *param_1,undefined8 param_2,undefined1 param_3)

{
  uint *_Memory;
  uint uVar1;
  char cVar2;
  longlong lVar3;
  undefined8 *puVar4;
  char *pcVar5;
  longlong local_res8;
  undefined1 local_res18 [8];
  undefined8 *local_res20;
  longlong local_68 [2];
  longlong *local_58;
  char *local_40;
  ulonglong local_30;
  
  local_res18[0] = param_3;
  if ((*(char *)*param_1 == '\0') && (lVar3 = param_1[8], lVar3 != 0)) {
    local_res8 = FUN_1811316e0(0x28);
    puVar4 = (undefined8 *)FUN_18123efe0(local_res8,lVar3 + 8);
    if (*(char *)puVar4[4] != '\0') {
      (**(code **)*puVar4)(puVar4,1);
      puVar4 = (undefined8 *)0x0;
    }
    local_res20 = puVar4;
    if (puVar4 != (undefined8 *)0x0) {
      FUN_18124a4b0(local_68,0x100);
      FUN_181234ba0(local_68,puVar4,0xffffffffffffffff);
      if (2 < local_30) {
        local_res18[0] = 0;
        (**(code **)(local_68[0] + 0x20))(local_68,local_res18,1);
        pcVar5 = local_40;
        if (local_58 != (longlong *)0x0) {
          if (local_30 < (ulonglong)local_58[1]) {
            *(undefined1 *)(local_30 + *local_58) = 0;
          }
          pcVar5 = (char *)*local_58;
        }
        cVar2 = *pcVar5;
        if (((cVar2 != -2) || (pcVar5[1] != -1)) && ((cVar2 != -1 || (pcVar5[1] != -2)))) {
          if (((cVar2 == -0x11) && (pcVar5[1] == -0x45)) && (pcVar5[2] == -0x41)) {
            pcVar5 = pcVar5 + 3;
          }
          FUN_1812258f0(param_1,param_2,pcVar5);
          FUN_18124a420(local_68);
          if (puVar4 == (undefined8 *)0x0) {
            return param_2;
          }
          (**(code **)*puVar4)(puVar4,1);
          return param_2;
        }
        if (local_58 != (longlong *)0x0) {
          if (local_30 < (ulonglong)local_58[1]) {
            *(undefined1 *)(local_30 + *local_58) = 0;
          }
          local_40 = (char *)*local_58;
        }
        FUN_18122f8f0(&local_res8,local_40,local_30 & 0xffffffff);
        lVar3 = *param_1;
        *param_1 = local_res8;
        _Memory = (uint *)(lVar3 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
      }
      FUN_18124a420(local_68);
    }
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  FUN_1812258f0(param_1,param_2,*param_1);
  return param_2;
}



############ FUN_ 181224610 size=1360 ############

undefined8 * FUN_181224610(longlong param_1,char param_2)

{
  uint uVar1;
  longlong lVar2;
  byte bVar3;
  byte bVar4;
  longlong lVar5;
  byte bVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  undefined8 uVar12;
  longlong *plVar13;
  undefined8 uVar14;
  byte *pbVar15;
  uint *puVar16;
  uint *puVar17;
  longlong local_res18;
  longlong *local_res20;
  longlong *local_98;
  longlong local_90;
  longlong *local_88;
  longlong local_80;
  undefined1 local_78 [8];
  longlong local_70;
  longlong local_68;
  undefined1 local_60 [8];
  undefined8 local_58;
  undefined1 local_50 [16];
  
  local_58 = 0xfffffffffffffffe;
  FUN_181224ea0();
  if (*(char *)(param_1 + 0x10) == '\0') {
    iVar8 = FUN_180492f10(param_1 + 8);
    if (iVar8 != 0x3c) {
      return (undefined8 *)0x0;
    }
    bVar3 = **(byte **)(param_1 + 8);
    pbVar15 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar15;
    if ((char)bVar3 < '\0') {
      bVar6 = 0x40;
      bVar4 = bVar3 & 0x40;
      while ((bVar4 != 0 && (8 < bVar6))) {
        pbVar15 = pbVar15 + 1;
        *(byte **)(param_1 + 8) = pbVar15;
        bVar6 = bVar6 >> 1;
        bVar4 = bVar3 & bVar6;
      }
    }
    FUN_181225d60(&local_res18,*(undefined8 *)(param_1 + 8));
    if (local_res18 == *(longlong *)(param_1 + 8)) {
      FUN_181224ea0(param_1);
      plVar10 = (longlong *)FUN_181225d60(local_50,*(undefined8 *)(param_1 + 8));
      local_res18 = *plVar10;
      if (local_res18 == *(longlong *)(param_1 + 8)) {
        FUN_18049c4e0(&local_res20,"tag name missing");
        if ((*(uint *)(local_res20 + -2) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -2) = (int)local_res20[-2] + 1;
          UNLOCK();
        }
        LOCK();
        lVar2 = *(longlong *)(param_1 + 0x18);
        *(longlong *)(param_1 + 0x18) = (longlong)local_res20;
        UNLOCK();
        puVar16 = (uint *)(lVar2 + -0x10);
        if ((*puVar16 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar16;
          *puVar16 = *puVar16 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar16);
          }
        }
        *(undefined1 *)(param_1 + 0x11) = 1;
        if ((*(uint *)(local_res20 + -2) & 0x30000000) == 0) {
          LOCK();
          plVar10 = local_res20 + -2;
          lVar2 = *plVar10;
          *(int *)plVar10 = (int)*plVar10 + -1;
          UNLOCK();
          if ((int)lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(local_res20 + -2);
          }
        }
        goto LAB_181224746;
      }
    }
    lVar2 = local_res18;
    puVar11 = (undefined8 *)FUN_1811316e0(0x20);
    uVar14 = *(undefined8 *)(param_1 + 8);
    *puVar11 = 0;
    puVar11[1] = 0;
    puVar11[2] = 0;
    local_res20 = puVar11 + 3;
    uVar12 = FUN_18122bf10();
    FUN_18122c3d0(uVar12,puVar11 + 3,uVar14,lVar2);
    *(longlong *)(param_1 + 8) = lVar2;
    plVar10 = puVar11 + 2;
    while( true ) {
      FUN_181224ea0(param_1);
      iVar8 = FUN_180492f10(param_1 + 8);
      if (iVar8 == 0x2f) {
        iVar9 = FUN_180493050(param_1 + 8,1);
        if (iVar9 == 0x3e) {
          bVar3 = **(byte **)(param_1 + 8);
          pbVar15 = *(byte **)(param_1 + 8) + 1;
          *(byte **)(param_1 + 8) = pbVar15;
          if ((char)bVar3 < '\0') {
            bVar6 = 0x40;
            bVar4 = bVar3 & 0x40;
            while ((bVar4 != 0 && (8 < bVar6))) {
              pbVar15 = pbVar15 + 1;
              *(byte **)(param_1 + 8) = pbVar15;
              bVar6 = bVar6 >> 1;
              bVar4 = bVar3 & bVar6;
            }
          }
          bVar3 = **(byte **)(param_1 + 8);
          *(byte **)(param_1 + 8) = *(byte **)(param_1 + 8) + 1;
          if (-1 < (char)bVar3) {
            return puVar11;
          }
          bVar6 = 0x40;
          bVar4 = bVar3 & 0x40;
          while( true ) {
            if (bVar4 == 0) {
              return puVar11;
            }
            if (bVar6 < 9) break;
            *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 1;
            bVar6 = bVar6 >> 1;
            bVar4 = bVar3 & bVar6;
          }
          return puVar11;
        }
      }
      else if (iVar8 == 0x3e) {
        bVar3 = **(byte **)(param_1 + 8);
        pbVar15 = *(byte **)(param_1 + 8) + 1;
        *(byte **)(param_1 + 8) = pbVar15;
        if ((char)bVar3 < '\0') {
          bVar6 = 0x40;
          bVar4 = bVar3 & 0x40;
          while ((bVar4 != 0 && (8 < bVar6))) {
            pbVar15 = pbVar15 + 1;
            *(byte **)(param_1 + 8) = pbVar15;
            bVar6 = bVar6 >> 1;
            bVar4 = bVar3 & bVar6;
          }
        }
        if (param_2 == '\0') {
          return puVar11;
        }
        FUN_1812237a0(param_1,puVar11);
        return puVar11;
      }
      cVar7 = FUN_181225e90(iVar8);
      if (cVar7 == '\0') {
        if (*(char *)(param_1 + 0x10) != '\0') {
          return puVar11;
        }
        plVar10 = (longlong *)FUN_181246550(local_60,"illegal character found in ",local_res20);
        local_res20 = plVar10;
        FUN_181232e20(plVar10,&DAT_1821db2f4,&DAT_1821db2f7);
        local_90 = *plVar10;
        if ((*(uint *)(local_90 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_90 + -0x10) = *(int *)(local_90 + -0x10) + 1;
          UNLOCK();
        }
        puVar16 = (uint *)(*plVar10 + -0x10);
        if ((*puVar16 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar16;
          *puVar16 = *puVar16 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar16);
          }
        }
        plVar10 = (longlong *)FUN_181232a20(&local_88,&local_90,iVar8);
        local_98 = plVar10;
        FUN_181232e20(plVar10,&DAT_1821db2dc,&DAT_1821db2dd);
        local_98 = (longlong *)*plVar10;
        puVar16 = (uint *)(local_98 + -2);
        if ((*puVar16 & 0x30000000) == 0) {
          LOCK();
          *puVar16 = *puVar16 + 1;
          UNLOCK();
        }
        puVar17 = (uint *)(*plVar10 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        FUN_181225cf0(param_1,&local_98,0);
        if ((*puVar16 & 0x30000000) != 0) {
          return puVar11;
        }
        LOCK();
        uVar1 = *puVar16;
        *puVar16 = *puVar16 - 1;
        UNLOCK();
        if (uVar1 != 0) {
          return puVar11;
        }
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
      FUN_181225d60(&local_80,*(undefined8 *)(param_1 + 8));
      lVar5 = local_80;
      lVar2 = *(longlong *)(param_1 + 8);
      if (local_80 == lVar2) {
        return puVar11;
      }
      *(longlong *)(param_1 + 8) = local_80;
      FUN_181224ea0(param_1);
      iVar8 = FUN_181225af0(param_1);
      if (iVar8 != 0x3d) break;
      FUN_181224ea0(param_1);
      iVar8 = FUN_180492f10(param_1 + 8);
      if ((iVar8 != 0x22) && (iVar8 != 0x27)) {
        return puVar11;
      }
      plVar13 = (longlong *)FUN_1811316e0(0x18);
      *plVar13 = 0;
      local_98 = plVar13;
      local_88 = plVar13 + 1;
      uVar14 = FUN_18122bf10();
      FUN_18122c3d0(uVar14,plVar13 + 1,lVar2,lVar5);
      plVar13[2] = (longlong)&DAT_1821dbf98;
      FUN_181224b70(param_1);
      *plVar10 = (longlong)plVar13;
      plVar10 = plVar13;
    }
    uVar14 = FUN_18124a8a0(&local_68,lVar2,lVar5);
    plVar10 = (longlong *)FUN_181246550(local_78,"expected \'=\' after attribute \'",uVar14);
    local_res20 = plVar10;
    FUN_181232e20(plVar10,&DAT_1821db2c4,&DAT_1821db2c5);
    local_70 = *plVar10;
    puVar16 = (uint *)(local_70 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      *puVar16 = *puVar16 + 1;
      UNLOCK();
    }
    puVar17 = (uint *)(*plVar10 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      *puVar16 = *puVar16 + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *(longlong *)(param_1 + 0x18);
    *(longlong *)(param_1 + 0x18) = local_70;
    UNLOCK();
    puVar17 = (uint *)(lVar2 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    *(undefined1 *)(param_1 + 0x11) = 1;
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    puVar16 = (uint *)(local_68 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
  }
  else {
LAB_181224746:
    puVar11 = (undefined8 *)0x0;
  }
  return puVar11;
}



############ FUN_ 1812207e0 size=156 ############

undefined8 *
FUN_1812207e0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  uint *_Memory;
  longlong local_res10 [3];
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  puVar2[3] = &DAT_1821dbf98;
  uVar3 = FUN_18122bf10();
  FUN_18122c1b0(uVar3,local_res10,&DAT_1826739f0,param_4,uVar4);
  FUN_181246b70(puVar2,local_res10,param_1);
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return puVar2;
}



############ FUN_ 181225b40 size=421 ############

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

undefined8 * FUN_181225b40(longlong param_1,undefined8 *param_2,undefined8 param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *plVar6;
  uint *puVar7;
  longlong local_res8;
  longlong local_res20;
  longlong local_38;
  longlong local_30 [3];
  undefined8 local_18;
  longlong *local_10;
  
  local_30[1] = 0xfffffffffffffffe;
  lVar2 = *(longlong *)(param_1 + 0x40);
  if (lVar2 != 0) {
    uVar3 = FUN_181248e40(param_3,local_30);
    puVar4 = (undefined8 *)FUN_181230ba0(uVar3,&local_38);
    uVar3 = *puVar4;
    local_30[2] = uVar3;
    uVar5 = FUN_181241230(lVar2 + 8,&local_res20);
    FUN_181245100(uVar5,&local_res8,uVar3);
    puVar7 = (uint *)(local_res20 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_18 = FUN_1811316e0(0x28);
    plVar6 = (longlong *)FUN_18123efe0(local_18,&local_res8);
    if (*(char *)plVar6[4] != '\0') {
      (**(code **)*plVar6)(plVar6,1);
      plVar6 = (longlong *)0x0;
    }
    puVar7 = (uint *)(local_res8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_38 + -0x10);
    local_10 = plVar6;
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_30[0] + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (plVar6 != (longlong *)0x0) {
      (**(code **)(*plVar6 + 0x98))(plVar6,param_2);
      (**(code **)*plVar6)(plVar6,1);
      return param_2;
    }
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 181246b70 size=342 ############

void FUN_181246b70(longlong param_1,longlong *param_2,longlong *param_3)

{
  int iVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  int *piVar5;
  
  puVar3 = *(undefined8 **)(param_1 + 0x10);
  if (puVar3 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    *puVar3 = 0;
    lVar2 = *param_2;
    puVar3[1] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    lVar2 = *param_3;
    puVar3[2] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    *(undefined8 **)(param_1 + 0x10) = puVar3;
    return;
  }
  lVar2 = puVar3[1];
  while (lVar2 != *param_2) {
    puVar4 = (undefined8 *)*puVar3;
    if (puVar4 == (undefined8 *)0x0) {
      puVar4 = (undefined8 *)FUN_1811316e0(0x18);
      *puVar4 = 0;
      lVar2 = *param_2;
      puVar4[1] = lVar2;
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
        UNLOCK();
      }
      lVar2 = *param_3;
      puVar4[2] = lVar2;
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
        UNLOCK();
      }
      *puVar3 = puVar4;
      return;
    }
    puVar3 = puVar4;
    lVar2 = puVar4[1];
  }
  if ((*(uint *)(*param_3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar5 = (int *)(*param_3 + -0x10);
    *piVar5 = *piVar5 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = puVar3[2];
  puVar3[2] = *param_3;
  UNLOCK();
  piVar5 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar5;
    *piVar5 = *piVar5 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar5);
    }
  }
  return;
}



############ FUN_ 18048c100 size=129 ############

undefined8 *
FUN_18048c100(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined1 *param_4)

{
  undefined8 uVar1;
  undefined8 *local_res8;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res8 = param_1;
  uVar1 = FUN_1811316e0(0x50);
  local_res8 = (undefined8 *)*param_2;
  *param_2 = &DAT_1821dbf98;
  uVar1 = FUN_18116c900(uVar1,&local_res8,param_3,*param_4,uVar2,uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18048f570 size=83 ############

undefined8 *
FUN_18048f570(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar1 = std::
            _Func_impl_no_alloc<<lambda_5b1a9ecbe61d1e3bc210d3d83c4a925a>,juce::String,float,int>::
            vftable;
  FUN_180487140(puVar1 + 1,param_1,param_3,param_4,uVar2);
  return puVar1;
}



############ FUN_ 18048d490 size=466 ############

undefined8
FUN_18048d490(undefined8 param_1,undefined8 param_2,longlong *param_3,longlong *param_4,
             undefined8 *param_5)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined **local_30;
  undefined8 local_28;
  undefined8 local_20;
  char local_18;
  undefined8 *local_10;
  
  puVar6 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar6 = *param_5;
  lVar1 = *param_4;
  puVar6[1] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  lVar1 = *param_3;
  puVar6[2] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  puVar6[3] = param_2;
  iVar4 = _Cnd_init(&local_28);
  if (iVar4 != 0) {
    std::_Throw_C_error(iVar4);
  }
  iVar4 = _Mtx_init(&local_20,1);
  if (iVar4 != 0) {
    std::_Throw_C_error(iVar4);
  }
  local_18 = '\0';
  iVar4 = _Mtx_lock();
  if (iVar4 != 0) {
    std::_Throw_C_error(iVar4);
  }
  local_30 = std::
             _LaunchPad<std::unique_ptr<std::tuple<void_(__cdecl*)(juce::String_const&___ptr64,juce::String_const&___ptr64,CloudyUpdateChecker::Callback*___ptr64),juce::String,juce::String,CloudyUpdateChecker::Callback*___ptr64>,std::default_delete<std::tuple<void_(__cdecl*)(juce::String_const&___ptr64,juce::String_const&___ptr64,CloudyUpdateChecker::Callback*___ptr64),juce::String,juce::String,CloudyUpdateChecker::Callback*___ptr64>_>_>_>
             ::vftable;
  local_10 = puVar6;
  iVar5 = _Thrd_start(param_1,FUN_1804836d0,&local_30);
  iVar4 = 1;
  if (iVar5 != 4) {
    iVar4 = iVar5;
  }
  uVar2 = local_28;
  uVar3 = local_20;
  puVar6 = local_10;
  if (iVar4 != 0) {
    std::_Throw_C_error(iVar4);
    uVar2 = local_28;
    uVar3 = local_20;
    puVar6 = local_10;
  }
  while (local_10 = puVar6, local_18 == '\0') {
    local_28 = uVar2;
    local_20 = uVar3;
    iVar4 = _Cnd_wait(uVar2,uVar3);
    uVar2 = local_28;
    uVar3 = local_20;
    puVar6 = local_10;
    if (iVar4 != 0) {
      std::_Throw_C_error(iVar4);
      uVar2 = local_28;
      uVar3 = local_20;
      puVar6 = local_10;
    }
  }
  if (puVar6 != (undefined8 *)0x0) {
    FUN_18048dee0(puVar6);
                    /* WARNING: Subroutine does not return */
    free(puVar6);
  }
  iVar4 = _Mtx_unlock(uVar3);
  if (iVar4 != 0) {
    std::_Throw_C_error(iVar4);
  }
  _Mtx_destroy(uVar3);
  _Cnd_destroy(uVar2);
  return param_1;
}



############ FUN_ 18048ec10 size=75 ############

undefined8 * FUN_18048ec10(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  *puVar1 = std::
            _Func_impl_no_alloc<<lambda_b81d8d81ba9038d41cc34d1966ac8822>,float,juce::String_const&___ptr64>
            ::vftable;
  puVar1[1] = 0;
  puVar1[2] = 0;
  FUN_18048c4c0(puVar1 + 1,*param_1,*(undefined4 *)((longlong)param_1 + 0xc));
  return puVar1;
}



############ FUN_ 18048ec60 size=75 ############

undefined8 * FUN_18048ec60(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  *puVar1 = std::_Func_impl_no_alloc<<lambda_3a2624da4601d3ed520d0c9409be6641>,juce::String,float>::
            vftable;
  puVar1[1] = 0;
  puVar1[2] = 0;
  FUN_18048c4c0(puVar1 + 1,*param_1,*(undefined4 *)((longlong)param_1 + 0xc));
  return puVar1;
}



############ FUN_ 18048ecb0 size=118 ############

undefined8 *
FUN_18048ecb0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<<lambda_5b1a9ecbe61d1e3bc210d3d83c4a925a>,juce::String,float,int>::
            vftable;
  puVar2[8] = 0;
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,puVar2 + 1,param_3,param_4,uVar3);
    puVar2[8] = uVar3;
  }
  return puVar2;
}



############ FUN_ 180490ab0 size=113 ############

undefined8 *
FUN_180490ab0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::_Func_impl_no_alloc<CloudyAsyncCaller::FuncWithLeakDetector,void>::vftable;
  puVar2[8] = 0;
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,puVar2 + 1,param_3,param_4,uVar3);
    puVar2[8] = uVar3;
  }
  return puVar2;
}



############ FUN_ 1811fc470 size=655 ############

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

void FUN_1811fc470(LPCRITICAL_SECTION param_1,undefined1 *param_2,char param_3)

{
  uint uVar1;
  undefined8 uVar2;
  undefined1 *puVar3;
  char cVar4;
  int iVar5;
  void *_Memory;
  uint *puVar6;
  void *pvVar7;
  longlong lVar8;
  bool bVar9;
  undefined1 *local_a8;
  longlong local_a0;
  longlong local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined1 *local_80;
  undefined1 *local_78;
  undefined1 *local_70;
  undefined1 local_68;
  undefined4 local_64;
  undefined *local_60;
  undefined8 local_58;
  LPCRITICAL_SECTION local_50;
  void *local_48;
  
  local_58 = 0xfffffffffffffffe;
  local_a8 = param_2;
  local_50 = param_1;
  EnterCriticalSection(param_1);
  lVar8._0_4_ = param_1[2].LockCount;
  lVar8._4_4_ = param_1[2].RecursionCount;
  if (lVar8 == 0) {
    local_98 = 0;
  }
  else {
    local_a8 = (undefined1 *)FUN_1811316e0(0x50);
    uVar2._0_4_ = param_1[2].LockCount;
    uVar2._4_4_ = param_1[2].RecursionCount;
    local_98 = FUN_180526910(local_a8,uVar2);
    LOCK();
    *(int *)(local_98 + 8) = *(int *)(local_98 + 8) + 1;
    UNLOCK();
  }
  uStack_90 = 0;
  _Memory = (void *)0x0;
  local_88 = 0;
  pvVar7 = _Memory;
  if (param_3 != '\0') {
    while( true ) {
      iVar5 = 0;
      if (*(longlong *)&param_1[2].LockCount != 0) {
        iVar5 = *(int *)(*(longlong *)&param_1[2].LockCount + 0x24);
      }
      if (iVar5 <= (int)pvVar7) break;
      FUN_181352050(&param_1[2].LockCount,&local_a0,pvVar7);
      iVar5 = FUN_180488a80(&param_1[4].LockSemaphore,&local_a0);
      lVar8 = local_98;
      if (((iVar5 < 0) && (local_98 != 0)) &&
         (cVar4 = FUN_181243b40(local_98 + 0x18,&local_a0), cVar4 != '\0')) {
        FUN_180526c70(lVar8,&local_a0,0);
      }
      puVar6 = (uint *)(local_a0 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      pvVar7 = (void *)(ulonglong)((int)pvVar7 + 1);
    }
  }
  local_80 = &DAT_1821dbf98;
  local_78 = &DAT_1821dbf98;
  local_70 = &DAT_1821dbf98;
  local_68 = 1;
  local_64 = 0x3c;
  local_60 = &DAT_1821db4e4;
  if (local_98 != 0) {
    _Memory = (void *)FUN_1805273a0();
  }
  local_48 = _Memory;
  if (_Memory == (void *)0x0) {
    local_a8 = &DAT_1821dbf98;
  }
  else {
    FUN_181220ef0(_Memory,&local_a8,&local_80);
    if (_Memory != (void *)0x0) {
      FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar3 = local_a8;
  lVar8 = -1;
  do {
    lVar8 = lVar8 + 1;
  } while (local_a8[lVar8] != '\0');
  FUN_181247930(param_2,local_a8);
  puVar6 = (uint *)(puVar3 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar9 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar9) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar9 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar9) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar9 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar9) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 180526910 size=277 ############

undefined8 *
FUN_180526910(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  longlong lVar5;
  int iVar6;
  undefined8 *puVar7;
  
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 1) = 0;
  *param_1 = juce::ValueTree::SharedObject::vftable;
  lVar5 = *(longlong *)(param_2 + 0x10);
  param_1[2] = lVar5;
  if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049b090(param_1 + 3,param_2 + 0x18,param_3,param_4,0xfffffffffffffffe);
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  puVar7 = *(undefined8 **)(param_2 + 0x28);
  puVar1 = puVar7 + *(int *)(param_2 + 0x34);
  for (; puVar7 != puVar1; puVar7 = puVar7 + 1) {
    uVar3 = *puVar7;
    uVar4 = FUN_1811316e0(0x50);
    lVar5 = FUN_180526910(uVar4,uVar3);
    *(undefined8 **)(lVar5 + 0x48) = param_1;
    iVar2 = *(int *)((longlong)param_1 + 0x34);
    iVar6 = iVar2 + 1;
    if (*(int *)(param_1 + 6) < iVar6) {
      if (iVar6 < 0) {
        iVar6 = iVar2 + 2;
      }
      FUN_18047cb30(param_1 + 5,iVar2 + 9 + (iVar6 >> 1) & 0xfffffff8);
    }
    iVar6 = *(int *)((longlong)param_1 + 0x34);
    *(int *)((longlong)param_1 + 0x34) = iVar6 + 1;
    *(longlong *)(param_1[5] + (longlong)iVar6 * 8) = lVar5;
    LOCK();
    *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 1805273a0 size=166 ############

undefined8 * FUN_1805273a0(longlong param_1)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  longlong lVar4;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  lVar4 = *(longlong *)(param_1 + 0x10);
  puVar2[3] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  FUN_181243430(param_1 + 0x18,puVar2);
  iVar1 = *(int *)(param_1 + 0x34) + -1;
  lVar4 = (longlong)iVar1;
  if (-1 < iVar1) {
    do {
      puVar3 = (undefined8 *)
               FUN_1805273a0(*(undefined8 *)(*(longlong *)(param_1 + 0x28) + lVar4 * 8));
      if (puVar3 != (undefined8 *)0x0) {
        *puVar3 = puVar2[1];
        puVar2[1] = puVar3;
      }
      lVar4 = lVar4 + -1;
    } while (-1 < lVar4);
  }
  return puVar2;
}



############ FUN_ 180493bc0 size=64 ############

void FUN_180493bc0(longlong param_1)

{
  undefined1 uVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  uVar1 = *(undefined1 *)(param_1 + 0x18);
  puVar2[2] = *(undefined8 *)(param_1 + 0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::Expression::Helpers::Constant::vftable;
  *(undefined1 *)(puVar2 + 3) = uVar1;
  return;
}



############ FUN_ 180493c20 size=89 ############

undefined8 * FUN_180493c20(longlong param_1,undefined8 *param_2)

{
  undefined1 uVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  uVar1 = *(undefined1 *)(param_1 + 0x18);
  puVar2[2] = CONCAT44((uint)((ulonglong)*(undefined8 *)(param_1 + 0x10) >> 0x20) ^
                       DAT_1824c4f20._4_4_,
                       (uint)*(undefined8 *)(param_1 + 0x10) ^ (uint)DAT_1824c4f20);
  *puVar2 = juce::Expression::Helpers::Constant::vftable;
  *(undefined1 *)(puVar2 + 3) = uVar1;
  *param_2 = puVar2;
  *(undefined4 *)(puVar2 + 1) = 1;
  return param_2;
}



############ FUN_ 180493e40 size=300 ############

undefined8 *
FUN_180493e40(longlong *param_1,undefined8 *param_2,undefined8 param_3,ulonglong param_4)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined8 *local_res10;
  undefined8 *local_40;
  undefined8 local_38;
  undefined8 *local_30;
  
  local_38 = 0xfffffffffffffffe;
  local_res10 = param_2;
  puVar6 = (undefined8 *)FUN_1811316e0(0x20,param_2,param_3,param_4,0);
  local_30 = puVar6;
  puVar7 = (undefined8 *)
           (**(code **)(*(longlong *)param_1[3] + 0x18))
                     ((longlong *)param_1[3],&local_40,param_3,param_4 & 0xffffffff);
  plVar2 = (longlong *)*puVar7;
  puVar7 = (undefined8 *)
           (**(code **)(*(longlong *)param_1[2] + 0x18))
                     ((longlong *)param_1[2],&local_res10,param_3,param_4 & 0xffffffff,1);
  plVar3 = (longlong *)*puVar7;
  lVar4 = *param_1;
  uVar8 = (**(code **)(*plVar2 + 0x28))(plVar2);
  uVar9 = (**(code **)(*plVar3 + 0x28))(plVar3);
  uVar5 = (**(code **)(lVar4 + 0x78))(param_1,uVar9,uVar8);
  *puVar6 = juce::Expression::Helpers::Constant::vftable;
  puVar6[2] = uVar5;
  *(undefined1 *)(puVar6 + 3) = 0;
  *param_2 = puVar6;
  *(undefined4 *)(puVar6 + 1) = 1;
  if (local_res10 != (undefined8 *)0x0) {
    piVar1 = (int *)(local_res10 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  if (local_40 != (undefined8 *)0x0) {
    piVar1 = (int *)(local_40 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*local_40)(local_40,1);
    }
  }
  return param_2;
}



############ FUN_ 1804941a0 size=201 ############

undefined8 *
FUN_1804941a0(longlong param_1,undefined8 *param_2,undefined8 param_3,longlong param_4,
             undefined8 param_5,undefined8 param_6)

{
  longlong *plVar1;
  undefined8 *puVar2;
  
  if ((param_4 != *(longlong *)(param_1 + 0x10)) && (param_4 != *(longlong *)(param_1 + 0x18))) {
    *param_2 = 0;
    return param_2;
  }
  plVar1 = (longlong *)FUN_180494bc0(param_6,param_1);
  if (plVar1 == (longlong *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x20);
    puVar2[2] = param_5;
    *(undefined4 *)(puVar2 + 1) = 0;
    *puVar2 = juce::Expression::Helpers::Constant::vftable;
    *(undefined1 *)(puVar2 + 3) = 0;
    *param_2 = puVar2;
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  else {
    (**(code **)(*plVar1 + 0x58))(plVar1,param_2,param_3,param_1,param_5,param_6);
  }
  return param_2;
}



############ FUN_ 180494290 size=111 ############

undefined8 *
FUN_180494290(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  puVar3 = (undefined8 *)(**(code **)(**(longlong **)(param_1 + 0x10) + 0x10))();
  *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::Expression::Helpers::Negate::vftable;
  puVar2[2] = puVar3;
  iVar1 = *(int *)(puVar3 + 1);
  *(int *)(puVar3 + 1) = iVar1;
  if (iVar1 == 0) {
    (**(code **)*puVar3)(puVar3,1,(undefined8 *)*puVar3,param_4,uVar4);
  }
  return puVar2;
}



############ FUN_ 180494300 size=199 ############

undefined8 *
FUN_180494300(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined4 param_4)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  uint uVar4;
  uint uVar5;
  undefined8 *local_res10;
  undefined4 uVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  uVar6 = 0;
  local_res10 = param_2;
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  puVar3 = (undefined8 *)
           (**(code **)(**(longlong **)(param_1 + 0x10) + 0x18))
                     (*(longlong **)(param_1 + 0x10),&local_res10,param_3,param_4,uVar6,uVar7,puVar2
                     );
  uVar7 = (**(code **)(*(longlong *)*puVar3 + 0x28))();
  uVar4 = (uint)uVar7 ^ (uint)DAT_1824c4f20;
  uVar5 = (uint)((ulonglong)uVar7 >> 0x20) ^ DAT_1824c4f20._4_4_;
  *puVar2 = juce::Expression::Helpers::Constant::vftable;
  puVar2[2] = CONCAT44(uVar5,uVar4);
  *(undefined1 *)(puVar2 + 3) = 0;
  *param_2 = puVar2;
  *(undefined4 *)(puVar2 + 1) = 1;
  if (local_res10 != (undefined8 *)0x0) {
    piVar1 = (int *)(local_res10 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  return param_2;
}



############ FUN_ 180494420 size=353 ############

undefined8 *
FUN_180494420(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 **ppuVar6;
  bool bVar7;
  undefined8 *local_res10;
  undefined4 uVar8;
  undefined8 *local_30;
  undefined8 local_28;
  
  local_28 = 0xfffffffffffffffe;
  uVar8 = 0;
  local_res10 = param_2;
  plVar4 = (longlong *)FUN_180494bc0(param_6,param_1);
  puVar5 = (undefined8 *)FUN_1811316e0(0x18);
  bVar7 = plVar4 != (longlong *)0x0;
  local_res10 = puVar5;
  if (bVar7) {
    ppuVar6 = (undefined8 **)
              (**(code **)(*plVar4 + 0x58))(plVar4,&local_30,param_3,param_1,param_5,param_6,uVar8);
  }
  else {
    local_res10 = (undefined8 *)FUN_1811316e0(0x20);
    *local_res10 = juce::Expression::Helpers::Constant::vftable;
    local_res10[2] = param_5;
    *(undefined1 *)(local_res10 + 3) = 0;
    *(undefined4 *)(local_res10 + 1) = 1;
    ppuVar6 = &local_res10;
  }
  puVar3 = local_res10;
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = juce::Expression::Helpers::Negate::vftable;
  puVar2 = *ppuVar6;
  puVar5[2] = puVar2;
  if (puVar2 != (undefined8 *)0x0) {
    *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  }
  *param_2 = puVar5;
  *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
  if (bVar7) {
    if (local_30 != (undefined8 *)0x0) {
      piVar1 = (int *)(local_30 + 1);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        (**(code **)*local_30)(local_30,1);
      }
    }
  }
  if ((!bVar7) && (puVar3 != (undefined8 *)0x0)) {
    piVar1 = (int *)(puVar3 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  return param_2;
}



############ FUN_ 180494750 size=120 ############

void FUN_180494750(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong local_res10;
  longlong local_res18;
  undefined8 local_res20;
  undefined8 uVar3;
  longlong *plVar4;
  
  uVar3 = 0xfffffffffffffffe;
  uVar2 = FUN_1811316e0(0x20);
  plVar4 = &local_res10;
  plVar1 = *(longlong **)(param_1 + 0x10);
  local_res20 = uVar2;
  local_res10 = (**(code **)(**(longlong **)(param_1 + 0x18) + 0x10))();
  *(int *)(local_res10 + 8) = *(int *)(local_res10 + 8) + 1;
  local_res18 = (**(code **)(*plVar1 + 0x10))(plVar1);
  *(int *)(local_res18 + 8) = *(int *)(local_res18 + 8) + 1;
  FUN_1804946b0(uVar2,&local_res18,&local_res10,param_4,uVar3,plVar4);
  return;
}



############ FUN_ 180494840 size=233 ############

longlong *
FUN_180494840(longlong param_1,longlong *param_2,undefined8 param_3,longlong param_4,
             undefined8 param_5,undefined8 param_6)

{
  int *piVar1;
  undefined8 uVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *local_38;
  longlong local_30;
  undefined8 *local_28;
  undefined8 local_20;
  undefined8 local_18;
  
  local_20 = 0xfffffffffffffffe;
  FUN_1804941a0(param_5,&local_38,param_3,param_4,param_5,param_6);
  if (local_38 == (undefined8 *)0x0) {
    *param_2 = 0;
  }
  else {
    uVar2 = FUN_1811316e0(0x20);
    plVar4 = (longlong *)(param_1 + 0x10);
    if (param_4 == *plVar4) {
      plVar4 = (longlong *)(param_1 + 0x18);
    }
    local_18 = uVar2;
    local_30 = (**(code **)(*(longlong *)*plVar4 + 0x10))();
    *(int *)(local_30 + 8) = *(int *)(local_30 + 8) + 1;
    local_28 = local_38;
    if (local_38 != (undefined8 *)0x0) {
      *(int *)(local_38 + 1) = *(int *)(local_38 + 1) + 1;
    }
    lVar3 = FUN_180494930(uVar2,&local_28,&local_30);
    *param_2 = lVar3;
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    if (local_38 != (undefined8 *)0x0) {
      piVar1 = (int *)(local_38 + 1);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        (**(code **)*local_38)(local_38,1);
      }
    }
  }
  return param_2;
}



############ FUN_ 1804949d0 size=120 ############

void FUN_1804949d0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong local_res10;
  longlong local_res18;
  undefined8 local_res20;
  undefined8 uVar3;
  longlong *plVar4;
  
  uVar3 = 0xfffffffffffffffe;
  uVar2 = FUN_1811316e0(0x20);
  plVar4 = &local_res10;
  plVar1 = *(longlong **)(param_1 + 0x10);
  local_res20 = uVar2;
  local_res10 = (**(code **)(**(longlong **)(param_1 + 0x18) + 0x10))();
  *(int *)(local_res10 + 8) = *(int *)(local_res10 + 8) + 1;
  local_res18 = (**(code **)(*plVar1 + 0x10))(plVar1);
  *(int *)(local_res18 + 8) = *(int *)(local_res18 + 8) + 1;
  FUN_180494930(uVar2,&local_res18,&local_res10,param_4,uVar3,plVar4);
  return;
}



############ FUN_ 180494a80 size=310 ############

longlong *
FUN_180494a80(longlong param_1,longlong *param_2,undefined8 param_3,longlong param_4,
             undefined8 param_5,undefined8 param_6)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 *local_38;
  longlong local_30;
  undefined8 *local_28;
  undefined8 local_20;
  undefined8 local_18;
  undefined8 **local_10;
  
  local_20 = 0xfffffffffffffffe;
  FUN_1804941a0(param_5,&local_38,param_3,param_4,param_5,param_6);
  if (local_38 == (undefined8 *)0x0) {
    *param_2 = 0;
  }
  else {
    if (param_4 == *(longlong *)(param_1 + 0x10)) {
      uVar3 = FUN_1811316e0(0x20);
      local_18 = uVar3;
      local_30 = (**(code **)(**(longlong **)(param_1 + 0x18) + 0x10))();
      *(int *)(local_30 + 8) = *(int *)(local_30 + 8) + 1;
      local_28 = local_38;
      *(int *)(local_38 + 1) = *(int *)(local_38 + 1) + 1;
      lVar4 = FUN_1804946b0(uVar3,&local_28,&local_30);
    }
    else {
      uVar3 = FUN_1811316e0(0x20);
      local_10 = &local_28;
      plVar2 = *(longlong **)(param_1 + 0x10);
      local_28 = local_38;
      *(int *)(local_38 + 1) = *(int *)(local_38 + 1) + 1;
      local_18 = uVar3;
      local_30 = (**(code **)(*plVar2 + 0x10))();
      *(int *)(local_30 + 8) = *(int *)(local_30 + 8) + 1;
      lVar4 = FUN_180494930(uVar3,&local_30,&local_28);
    }
    *param_2 = lVar4;
    *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
    if (local_38 != (undefined8 *)0x0) {
      piVar1 = (int *)(local_38 + 1);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        (**(code **)*local_38)(local_38,1);
        return param_2;
      }
    }
  }
  return param_2;
}



############ FUN_ 180496520 size=422 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180496520(undefined8 param_1,undefined8 *param_2,longlong param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  int iVar3;
  undefined8 *puVar4;
  uint uVar5;
  longlong *plVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  longlong local_68;
  int local_60;
  uint local_5c;
  undefined8 *local_58;
  undefined8 local_50;
  undefined **local_48;
  undefined8 local_40;
  ulonglong local_38;
  
  local_50 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  plVar6 = (longlong *)0x0;
  local_68 = 0;
  local_60 = 0;
  local_5c = 0;
  local_78 = 0;
  local_58 = param_2;
  lVar1 = __RTDynamicCast(*(undefined8 *)(param_3 + 8),0,
                          &juce::ReferenceCountedObject::RTTI_Type_Descriptor,
                          &juce::var::VariantType_Array::RefCountedArray::RTTI_Type_Descriptor);
  plVar7 = (longlong *)(lVar1 + 0x10);
  if (lVar1 == 0) {
    plVar7 = plVar6;
  }
  if (plVar7 != (longlong *)0x0) {
    iVar3 = *(int *)((longlong)plVar7 + 0xc);
    if (0 < iVar3) {
      FUN_180489a50(&local_68,iVar3 + 8 + iVar3 / 2 & 0xfffffff8);
      plVar6 = (longlong *)(ulonglong)local_5c;
    }
    puVar2 = (undefined8 *)*plVar7;
    puVar8 = puVar2 + (longlong)*(int *)((longlong)plVar7 + 0xc) * 2;
    for (; puVar2 != puVar8; puVar2 = puVar2 + 2) {
      (**(code **)(*(longlong *)*puVar2 + 0x48))((longlong *)*puVar2,&local_48,puVar2);
      uVar5 = (uint)plVar6;
      iVar3 = uVar5 + 1;
      if (local_60 < iVar3) {
        if (iVar3 < 0) {
          iVar3 = uVar5 + 2;
        }
        FUN_180489a50(&local_68,uVar5 + 9 + (iVar3 >> 1) & 0xfffffff8);
        uVar5 = local_5c;
      }
      local_5c = uVar5 + 1;
      plVar6 = (longlong *)(ulonglong)local_5c;
      puVar4 = (undefined8 *)((longlong)(int)uVar5 * 0x10 + local_68);
      *puVar4 = local_48;
      puVar4[1] = local_40;
      local_48 = &PTR_vftable_18262b558;
      (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_40);
    }
  }
  *param_2 = &PTR_vftable_18262b4c8;
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::var::VariantType_Array::RefCountedArray::vftable;
  local_58 = puVar2;
  FUN_18049b170(puVar2 + 2,&local_68);
  LOCK();
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  UNLOCK();
  param_2[1] = puVar2;
  FUN_180487600(&local_68);
}



############ FUN_ 1804969f0 size=67 ############

void FUN_1804969f0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x10);
  uVar1 = FUN_18123aa50(uVar1,*param_3);
  *param_2 = uVar1;
  return;
}



############ FUN_ 180496b60 size=67 ############

void FUN_180496b60(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x40);
  uVar1 = FUN_18049b230(uVar1,*param_3);
  *param_2 = uVar1;
  return;
}



############ FUN_ 180497890 size=761 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180497890(longlong param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  byte bVar3;
  byte bVar4;
  char *pcVar5;
  char cVar6;
  int iVar7;
  byte *pbVar8;
  undefined8 uVar9;
  undefined8 uVar10;
  undefined8 uVar11;
  undefined8 uVar12;
  byte bVar13;
  uint *puVar14;
  undefined1 auStack_c8 [32];
  undefined8 *local_a8;
  undefined4 local_a0;
  char *local_98;
  undefined1 local_90 [8];
  longlong local_88;
  undefined1 local_80 [8];
  undefined1 local_78 [8];
  undefined1 local_70 [8];
  undefined8 local_68;
  undefined8 *local_60;
  longlong *local_58;
  undefined1 local_50 [8];
  ulonglong local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_a0 = 0;
  local_60 = param_2;
  local_a8 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(local_a8 + 1) = 0;
  *local_a8 = juce::DynamicObject::vftable;
  puVar1 = local_a8 + 2;
  *puVar1 = 0;
  local_a8[3] = 0;
  *param_2 = &PTR_vftable_18262b4d0;
  param_2[1] = local_a8;
  LOCK();
  *(int *)(local_a8 + 1) = *(int *)(local_a8 + 1) + 1;
  UNLOCK();
  local_a0 = 1;
  uVar12 = *(undefined8 *)(param_1 + 8);
  while( true ) {
    pbVar8 = *(byte **)(param_1 + 8);
    while ((bVar3 = *pbVar8, bVar3 == 0x20 || ((byte)(bVar3 - 9) < 5))) {
      pbVar8 = pbVar8 + 1;
      if ((char)bVar3 < '\0') {
        bVar13 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          bVar13 = bVar13 >> 1;
          bVar4 = bVar3 & bVar13;
        }
      }
    }
    *(byte **)(param_1 + 8) = pbVar8;
    iVar7 = FUN_180483820(param_1 + 8);
    if (iVar7 == 0x7d) {
    }
    if (iVar7 == 0) {
      uVar11 = FUN_18124a880(&local_a8,"Unexpected EOF in object declaration");
                    /* WARNING: Subroutine does not return */
      FUN_180496e50(param_1,uVar11,uVar12);
    }
    if (iVar7 != 0x22) {
      uVar12 = FUN_18124a880(local_90,"Expected a property name in double-quotes");
                    /* WARNING: Subroutine does not return */
      FUN_180496e50(param_1,uVar12,pbVar8);
    }
    uVar11 = *(undefined8 *)(param_1 + 8);
    uVar9 = FUN_1804970d0(param_1,&local_88,0x22);
    uVar10 = FUN_18122bf10();
    FUN_18122c1b0(uVar10,&local_98,uVar9);
    pcVar5 = local_98;
    puVar14 = (uint *)(local_88 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    if (*local_98 == '\0') {
      uVar12 = FUN_18124a880(local_70,"Invalid property name");
                    /* WARNING: Subroutine does not return */
      FUN_180496e50(param_1,uVar12,uVar11);
    }
    pbVar8 = *(byte **)(param_1 + 8);
    while ((bVar3 = *pbVar8, bVar3 == 0x20 || ((byte)(bVar3 - 9) < 5))) {
      pbVar8 = pbVar8 + 1;
      if ((char)bVar3 < '\0') {
        bVar13 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          bVar13 = bVar13 >> 1;
          bVar4 = bVar3 & bVar13;
        }
      }
    }
    *(byte **)(param_1 + 8) = pbVar8;
    iVar7 = FUN_180483820(param_1 + 8);
    if (iVar7 != 0x3a) {
      uVar12 = FUN_18124a880(local_78,"Expected \':\'");
                    /* WARNING: Subroutine does not return */
      FUN_180496e50(param_1,uVar12,pbVar8);
    }
    uVar11 = FUN_1804973f0(param_1,&local_58);
    FUN_181243e80(puVar1,&local_98,uVar11);
    (**(code **)(*local_58 + 0xb0))(local_58,local_50);
    FUN_180496f90(param_1);
    cVar6 = FUN_180496fe0(param_1,0x2c);
    if (cVar6 == '\0') break;
    puVar14 = (uint *)(pcVar5 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
  }
  cVar6 = FUN_180496fe0(param_1,0x7d);
  if (cVar6 == '\0') {
    uVar12 = FUN_18124a880(local_80,"Expected \',\' or \'}\'");
                    /* WARNING: Subroutine does not return */
    FUN_180496e50(param_1,uVar12,*(undefined8 *)(param_1 + 8));
  }
  puVar14 = (uint *)(pcVar5 + -0x10);
  if ((*puVar14 & 0x30000000) != 0) {
  }
  LOCK();
  uVar2 = *puVar14;
  *puVar14 = *puVar14 - 1;
  UNLOCK();
  if (uVar2 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(puVar14);
}



############ FUN_ 1812464d0 size=118 ############

undefined8 * FUN_1812464d0(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  *param_1 = &PTR_vftable_18262b4c8;
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::var::VariantType_Array::RefCountedArray::vftable;
  puVar1[2] = *param_2;
  *param_2 = 0;
  *(undefined4 *)(puVar1 + 3) = *(undefined4 *)(param_2 + 1);
  *(undefined4 *)((longlong)puVar1 + 0x1c) = *(undefined4 *)((longlong)param_2 + 0xc);
  param_2[1] = 0;
  LOCK();
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  UNLOCK();
  param_1[1] = puVar1;
  return param_1;
}



############ FUN_ 18049a870 size=180 ############

ulonglong * FUN_18049a870(ulonglong *param_1)

{
  ulonglong uVar1;
  DWORD DVar2;
  ulonglong *puVar3;
  ulonglong uVar4;
  
  DVar2 = GetCurrentThreadId();
  uVar1 = (ulonglong)DVar2;
  for (puVar3 = (ulonglong *)*param_1; puVar3 != (ulonglong *)0x0; puVar3 = (ulonglong *)puVar3[1])
  {
    if (*puVar3 == uVar1) {
      return puVar3 + 2;
    }
  }
  puVar3 = (ulonglong *)*param_1;
  do {
    if (puVar3 == (ulonglong *)0x0) {
LAB_18049a8cd:
      puVar3 = (ulonglong *)FUN_1811316e0(0x18);
      uVar4 = *param_1;
      *puVar3 = uVar1;
      puVar3[2] = 0;
      while( true ) {
        puVar3[1] = uVar4;
        LOCK();
        uVar1 = *param_1;
        if (uVar4 == uVar1) {
          *param_1 = (ulonglong)puVar3;
        }
        UNLOCK();
        if (uVar4 == uVar1) break;
        uVar4 = *param_1;
      }
LAB_18049a915:
      return puVar3 + 2;
    }
    LOCK();
    uVar4 = *puVar3;
    if (uVar4 == 0) {
      *puVar3 = uVar1;
    }
    UNLOCK();
    if (uVar4 == 0) {
      if (puVar3 != (ulonglong *)0x0) {
        puVar3[2] = 0;
        goto LAB_18049a915;
      }
      goto LAB_18049a8cd;
    }
    puVar3 = (ulonglong *)puVar3[1];
  } while( true );
}



############ FUN_ 18049f430 size=408 ############

longlong * FUN_18049f430(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  undefined8 *local_res8 [2];
  int local_res18;
  int iStackX_1c;
  undefined **local_res20;
  undefined8 *local_60;
  undefined8 local_58;
  int local_50;
  int local_4c;
  undefined4 local_48;
  undefined4 local_44;
  
  local_58 = 0xfffffffffffffffe;
  local_res8[0] = (undefined8 *)FUN_1811316e0(0x78);
  plVar5 = (longlong *)FUN_18049f9a0(local_res8[0],param_1);
  param_1 = (longlong *)*param_1;
  if (param_1 != (longlong *)0x0) {
    (**(code **)(*param_1 + 0x58))(param_1,&local_50);
    local_res20 = juce::NativeImageType::vftable;
    (*(code *)PTR_FUN_1824988f0)(&local_res20,local_res8,2,local_48,local_44,1);
    puVar3 = (undefined8 *)plVar5[0xd];
    plVar5[0xd] = (longlong)local_res8[0];
    local_res8[0] = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
    *(undefined4 *)((longlong)plVar5 + 100) = param_2;
    if ((char)plVar5[5] == '\0') {
      *(int *)(plVar5 + 1) = (int)plVar5[1];
      *(undefined4 *)((longlong)plVar5 + 0xc) = *(undefined4 *)((longlong)plVar5 + 0xc);
      *(float *)(plVar5 + 2) = (float)-local_50 + *(float *)(plVar5 + 2);
      *(undefined4 *)((longlong)plVar5 + 0x14) = *(undefined4 *)((longlong)plVar5 + 0x14);
      plVar5[3] = CONCAT44((float)-local_4c + *(float *)((longlong)plVar5 + 0x1c),(int)plVar5[3]);
    }
    else {
      *(int *)(plVar5 + 4) = (int)plVar5[4] + -local_50;
      *(int *)((longlong)plVar5 + 0x24) = *(int *)((longlong)plVar5 + 0x24) + -local_4c;
    }
    plVar6 = (longlong *)*plVar5;
    if (1 < (int)plVar6[1]) {
      plVar6 = (longlong *)(**(code **)(*plVar6 + 8))(plVar6,&local_60);
      lVar4 = *plVar5;
      *plVar5 = *plVar6;
      *plVar6 = lVar4;
      if (local_60 != (undefined8 *)0x0) {
        piVar1 = (int *)(local_60 + 1);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*local_60)(local_60,1);
        }
      }
    }
    local_res18 = -local_50;
    iStackX_1c = -local_4c;
    (**(code **)(*(longlong *)*plVar5 + 0x48))((longlong *)*plVar5,CONCAT44(iStackX_1c,local_res18))
    ;
  }
  return plVar5;
}



############ FUN_ 1804b0230 size=97 ############

undefined8 * FUN_1804b0230(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  if (param_1 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x28);
    *puVar1 = *param_1;
    puVar1[1] = param_1[1];
    *(undefined1 *)(puVar1 + 2) = *(undefined1 *)(param_1 + 2);
    FUN_1804aaeb0(puVar1 + 3,param_1 + 3);
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 18049f5d0 size=891 ############

void FUN_18049f5d0(longlong *param_1,undefined4 param_2,float *param_3)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  int iVar9;
  float fVar10;
  undefined8 uVar11;
  longlong *plVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  double dVar15;
  float fVar16;
  undefined8 *local_res8;
  undefined8 *local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  float local_a0;
  float local_9c;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  undefined1 local_88 [112];
  
  fVar10 = DAT_1824c3ea4;
  local_b0 = 0xfffffffffffffffe;
  if (*param_1 != 0) {
    fVar2 = param_3[1];
    if ((((fVar2 == 0.0) && (param_3[3] == 0.0)) && (*param_3 == DAT_1824c3ea4)) &&
       ((param_3[4] == DAT_1824c3ea4 && (*(char *)((longlong)param_1 + 0x29) == '\0')))) {
      uVar11 = FUN_1804a8480();
      fVar2 = param_3[5];
      fVar16 = param_3[2];
      if ((char)param_1[5] == '\0') {
        fVar3 = *(float *)((longlong)param_1 + 0x14);
        fVar4 = *(float *)(param_1 + 3);
        fVar5 = *(float *)((longlong)param_1 + 0x1c);
        fVar6 = *(float *)((longlong)param_1 + 0xc);
        fVar7 = *(float *)(param_1 + 1);
        fVar8 = *(float *)(param_1 + 2);
        local_res8 = (undefined8 *)param_1[0xe];
        if (local_res8 != (undefined8 *)0x0) {
          LOCK();
          *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
          UNLOCK();
        }
        FUN_1812520a0(&local_res8,*(float *)(param_1[0xe] + 0x28) * *(float *)(param_1 + 3));
        dVar15 = (double)(*(float *)(param_1 + 1) / *(float *)(param_1 + 3) - fVar10);
        if (DAT_1824c3c70 <
            (float)(double)CONCAT44((uint)((ulonglong)dVar15 >> 0x20) & DAT_1824c4f10._4_4_,
                                    SUB84(dVar15,0) & (uint)DAT_1824c4f10)) {
          FUN_181251de0(&local_res8);
        }
        FUN_1804a8250(uVar11,param_1,&local_res8,param_2,
                      CONCAT44(fVar16 * fVar3 + fVar2 * fVar4 + fVar5,
                               fVar2 * fVar6 + fVar16 * fVar7 + fVar8));
        if (local_res8 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_res8 + 1);
          iVar9 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar9 == 1) {
            (**(code **)*local_res8)(local_res8,1);
          }
        }
      }
      else {
        FUN_1804a8250(uVar11,param_1,param_1 + 0xe,param_2,
                      CONCAT44((float)*(int *)((longlong)param_1 + 0x24) + fVar2,
                               (float)(int)param_1[4] + fVar16));
      }
    }
    else {
      fVar10 = *(float *)(param_1[0xe] + 0x28);
      fVar16 = *(float *)(param_1[0xe] + 0x2c) * fVar10;
      local_94 = param_3[4] * 0.0;
      local_90 = param_3[3] * 0.0;
      local_8c = local_90 + local_94 + param_3[5];
      local_90 = param_3[4] * fVar10 + local_90;
      local_94 = param_3[3] * fVar16 + local_94;
      local_9c = *param_3 * 0.0;
      local_98 = local_9c + fVar2 * 0.0 + param_3[2];
      local_9c = fVar2 * fVar10 + local_9c;
      local_a0 = *param_3 * fVar16 + fVar2 * 0.0;
      FUN_18049eab0(param_1 + 1,local_88,&local_a0);
      plVar12 = (longlong *)FUN_181252280(param_1 + 0xe);
      puVar13 = (undefined8 *)(**(code **)(*plVar12 + 0x40))(plVar12,param_2,local_88,fVar10);
      if (puVar13 != (undefined8 *)0x0) {
        local_a8 = puVar13;
        puVar14 = (undefined8 *)FUN_1811316e0(0x38);
        *(undefined4 *)(puVar14 + 1) = 0;
        *puVar14 = juce::RenderingHelpers::
                   ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion
                   ::vftable;
        local_res8 = puVar14;
        FUN_18129f450(puVar14 + 2,puVar13);
        *(int *)(puVar14 + 1) = *(int *)(puVar14 + 1) + 1;
        local_b8 = puVar14;
        FUN_1804a9960(param_1,&local_b8);
                    /* WARNING: Subroutine does not return */
        free((void *)*puVar13);
      }
    }
  }
  return;
}



############ FUN_ 1804a8250 size=408 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804a8250(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  int *piVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined4 extraout_XMM0_Db;
  float fVar7;
  undefined4 uVar8;
  undefined8 *local_48;
  undefined8 *local_40;
  double local_38;
  undefined8 local_30;
  undefined1 local_28 [32];
  
  local_30 = 0xfffffffffffffffe;
  FUN_1804ac600(param_1,&local_48);
  puVar4 = local_48;
  if (local_48 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(param_1 + 0x18);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + 1;
    UNLOCK();
    *(int *)((longlong)local_48 + 0x24) = iVar2 + 1;
    uVar8 = 0;
    if (*(char *)(local_48 + 5) != '\0') {
      param_5._0_4_ = floorf((float)param_5 + DAT_1824c3d8c);
      uVar8 = extraout_XMM0_Db;
    }
    if (puVar4[3] != 0) {
      local_38 = (double)param_5._4_4_ + DAT_1824c4520;
      uVar3 = puVar4[3];
      if (*param_2 != 0) {
        puVar5 = (undefined8 *)FUN_1811316e0(0x38);
        *(undefined4 *)(puVar5 + 1) = 0;
        *puVar5 = juce::RenderingHelpers::
                  ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion::
                  vftable;
        local_40 = puVar5;
        FUN_18129f450(puVar5 + 2,uVar3);
        FUN_18129eee0(puVar5 + 2,CONCAT44(uVar8,(float)param_5),(ulonglong)local_38 & 0xffffffff);
        if ((param_2[7] == 0) && (param_2[8] == 0)) {
          lVar6 = FUN_18049fa40(local_28,(int)param_2[6]);
          fVar7 = *(float *)(lVar6 + 8) - DAT_1824c3d8c;
          if (0.0 < fVar7) {
            FUN_18129ee60(puVar5 + 2,fVar7 * _DAT_1824c3fb4 + DAT_1824c3ea4);
          }
        }
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        local_40 = puVar5;
        FUN_1804a9960(param_2,&local_40);
      }
    }
  }
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_48)(local_48,1);
    }
  }
  return;
}



############ FUN_ 1804ad350 size=1109 ############

void FUN_1804ad350(undefined8 *param_1,longlong *param_2,undefined8 param_3,longlong *param_4)

{
  undefined1 uVar1;
  longlong lVar2;
  int iVar3;
  undefined1 auVar4 [16];
  undefined1 auVar5 [16];
  longlong *plVar6;
  undefined8 *puVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  longlong *local_res8;
  undefined8 in_stack_ffffffffffffff48;
  undefined4 uVar17;
  undefined8 uVar16;
  undefined1 local_98 [16];
  longlong *local_88;
  float local_80;
  float local_7c;
  float local_78;
  float local_74;
  float local_70;
  float local_6c;
  void *local_68;
  ulonglong local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  undefined8 local_40;
  longlong *local_38;
  
  uVar17 = (undefined4)((ulonglong)in_stack_ffffffffffffff48 >> 0x20);
  local_40 = 0xfffffffffffffffe;
  plVar6 = param_4;
  FUN_18049eab0(param_1 + 1,&local_80);
  uVar1 = *(undefined1 *)((longlong)param_1 + 0x33);
  uVar14 = (uint)DAT_1824c4f10;
  uVar15 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
  if (((((float)(double)CONCAT44((uint)((ulonglong)(double)local_7c >> 0x20) & uVar15,
                                 SUB84((double)local_7c,0) & uVar14) < DAT_1824c3c5c) &&
       ((float)(double)CONCAT44((uint)((ulonglong)(double)local_74 >> 0x20) & uVar15,
                                SUB84((double)local_74,0) & uVar14) < DAT_1824c3c5c)) &&
      ((float)(double)CONCAT44((uint)((ulonglong)(double)(local_80 - DAT_1824c3ea4) >> 0x20) &
                               uVar15,SUB84((double)(local_80 - DAT_1824c3ea4),0) & uVar14) <
       DAT_1824c3c5c)) &&
     ((float)(double)CONCAT44((uint)((ulonglong)(double)(local_70 - DAT_1824c3ea4) >> 0x20) & uVar15
                              ,SUB84((double)(local_70 - DAT_1824c3ea4),0) & uVar14) < DAT_1824c3c5c
     )) {
    if ((*(int *)(param_1 + 0xc) == 0) ||
       ((((int)(local_6c * DAT_1824c4550) | (int)(local_78 * DAT_1824c4550)) & 0xe0U) == 0)) {
      iVar13 = (int)((int)(local_78 * DAT_1824c4550) + 0x80U) >> 8;
      iVar12 = (int)((int)(local_6c * DAT_1824c4550) + 0x80U) >> 8;
      if (plVar6 != (longlong *)0x0) {
        (**(code **)(*param_4 + 0x88))
                  (plVar6,param_1,param_2,uVar1,CONCAT44(uVar17,iVar13),iVar12,1);
        return;
      }
      lVar2 = *param_2;
      iVar10 = 0;
      iVar9 = 0;
      if (lVar2 != 0) {
        iVar10 = *(int *)(lVar2 + 0x18);
        iVar9 = *(int *)(lVar2 + 0x14);
      }
      if (param_1[0xd] == 0) {
        local_98 = ZEXT416(0);
      }
      else {
        auVar4._8_8_ = 0;
        auVar4._0_8_ = *(ulonglong *)(param_1[0xd] + 0x14);
        local_98 = auVar4 << 0x40;
      }
      iVar11 = iVar13;
      if (iVar13 < 0) {
        iVar11 = 0;
      }
      iVar3 = iVar12;
      if (iVar12 < 0) {
        iVar3 = 0;
      }
      iVar8 = iVar9 + iVar13;
      if (local_98._8_4_ < iVar9 + iVar13) {
        iVar8 = local_98._8_4_;
      }
      iVar8 = iVar8 - iVar11;
      if (iVar8 < 0) {
        return;
      }
      iVar9 = iVar10 + iVar12;
      if (local_98._12_4_ < iVar10 + iVar12) {
        iVar9 = local_98._12_4_;
      }
      local_98._12_4_ = iVar9 - iVar3;
      if ((int)local_98._12_4_ < 0) {
        return;
      }
      local_98._4_4_ = iVar3;
      local_98._0_4_ = iVar11;
      local_98._8_4_ = iVar8;
      if (iVar8 < 1) {
        return;
      }
      if ((int)local_98._12_4_ < 1) {
        return;
      }
      plVar6 = (longlong *)FUN_1811316e0(0x38);
      *(undefined4 *)(plVar6 + 1) = 0;
      *plVar6 = (longlong)
                juce::RenderingHelpers::
                ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion::
                vftable;
      local_38 = plVar6;
      FUN_18129fce0(plVar6 + 2,local_98);
      *(int *)(plVar6 + 1) = (int)plVar6[1] + 1;
      local_res8 = plVar6;
      (**(code **)(*(longlong *)*param_1 + 0x10))((longlong *)*param_1,&local_88,&local_res8);
      if (local_res8 != (longlong *)0x0) {
        plVar6 = local_res8 + 1;
        *(int *)plVar6 = (int)*plVar6 + -1;
        if ((int)*plVar6 == 0) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      if (local_88 != (longlong *)0x0) {
        (**(code **)(*local_88 + 0x88))
                  (local_88,param_1,param_2,uVar1,CONCAT44(uVar17,iVar13),iVar12,0);
      }
      if (local_88 == (longlong *)0x0) {
        return;
      }
      plVar6 = local_88 + 1;
      *(int *)plVar6 = (int)*plVar6 + -1;
      if ((int)*plVar6 != 0) {
        return;
      }
      (**(code **)*local_88)(local_88,1);
      return;
    }
  }
  if (local_70 * local_80 - local_74 * local_7c != 0.0) {
    if (plVar6 == (longlong *)0x0) {
      local_68 = (void *)0x0;
      local_60 = 0;
      local_58 = 0;
      uStack_50 = 0;
      local_48 = 1;
      if (*param_2 == 0) {
        local_98 = ZEXT816(0);
      }
      else {
        auVar5._8_8_ = 0;
        auVar5._0_8_ = *(ulonglong *)(*param_2 + 0x14);
        local_98 = auVar5 << 0x40;
      }
      uVar16 = CONCAT44(uVar17,(float)(int)local_98._12_4_);
      FUN_18129d850(&local_68);
      puVar7 = (undefined8 *)
               (**(code **)(*(longlong *)*param_1 + 8))((longlong *)*param_1,&local_88);
      (**(code **)(*(longlong *)*puVar7 + 0x30))
                ((longlong *)*puVar7,&local_res8,&local_68,&local_80,uVar16);
      if (local_88 != (longlong *)0x0) {
        plVar6 = local_88 + 1;
        *(int *)plVar6 = (int)*plVar6 + -1;
        if ((int)*plVar6 == 0) {
          (**(code **)*local_88)(local_88,1);
        }
      }
      if (local_res8 != (longlong *)0x0) {
        (**(code **)(*local_res8 + 0x80))
                  (local_res8,param_1,param_2,uVar1,&local_80,*(undefined4 *)(param_1 + 0xc),0);
      }
      if (local_res8 != (longlong *)0x0) {
        plVar6 = local_res8 + 1;
        *(int *)plVar6 = (int)*plVar6 + -1;
        if ((int)*plVar6 == 0) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_68);
    }
    (**(code **)(*param_4 + 0x80))
              (plVar6,param_1,param_2,uVar1,&local_80,*(undefined4 *)(param_1 + 0xc),1);
  }
  return;
}



############ FUN_ 181252280 size=331 ############

undefined8 FUN_181252280(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *local_res8;
  undefined *local_res10;
  undefined8 *local_res18;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (*(longlong *)(*param_1 + 0x10) == 0) {
    if (DAT_182673a68 == (undefined8 *)0x0) {
      local_res10 = &DAT_182673a38;
      EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
      if ((DAT_182673a68 == (undefined8 *)0x0) && (DAT_18267aa70 == '\0')) {
        DAT_18267aa70 = 1;
        puVar3 = (undefined8 *)FUN_1811316e0(0x1a0);
        local_res18 = puVar3;
        FUN_1812a7230(puVar3);
        *puVar3 = juce::TypefaceCache::vftable;
        puVar3[1] = 0;
        FUN_18122bd40(puVar3 + 2);
        puVar3[0x31] = 0;
        puVar3[0x32] = 0;
        puVar3[0x33] = 0;
        FUN_1804a2290(puVar3,10);
        DAT_18267aa70 = '\0';
        DAT_182673a68 = puVar3;
      }
      LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
    }
    puVar3 = (undefined8 *)FUN_1804a23e0(DAT_182673a68,&local_res8,param_1,param_4,uVar4);
    local_res18 = *(undefined8 **)(*param_1 + 0x10);
    *(undefined8 *)(*param_1 + 0x10) = *puVar3;
    *puVar3 = local_res18;
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    return *(undefined8 *)(*param_1 + 0x10);
  }
  return *(undefined8 *)(*param_1 + 0x10);
}



############ FUN_ 18124abe0 size=413 ############

undefined8 *
FUN_18124abe0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  uint uVar2;
  longlong lVar3;
  int iVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  HDC pHVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  do {
    LOCK();
    uVar2 = DAT_18267aa78 & 1;
    DAT_18267aa78 = DAT_18267aa78 | 1;
    UNLOCK();
  } while (uVar2 != 0);
  iVar4 = DAT_18267aa88 + 1;
  if (iVar4 == 1) {
    iVar1 = DAT_18267aa88 + 0x30;
    DAT_18267aa88 = iVar4;
    uVar5 = FUN_1811316e0(iVar1);
    uVar5 = FUN_1804a4110(uVar5);
    FUN_1804af690(&DAT_18267aa80,uVar5);
    iVar4 = DAT_18267aa88;
  }
  DAT_18267aa88 = iVar4;
  lVar3 = DAT_18267aa80;
  LOCK();
  DAT_18267aa78 = 0;
  UNLOCK();
  if (*(longlong *)(DAT_18267aa80 + 0x10) != 0) {
    uVar5 = FUN_1811316e0(0x90);
    puVar6 = (undefined8 *)
             FUN_1804a4410(uVar5,param_2,*(undefined8 *)(lVar3 + 0x10),param_4,uVar8,uVar5);
    if (puVar6[0xc] != 0) {
      *param_1 = puVar6;
      LOCK();
      *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
      UNLOCK();
      do {
        LOCK();
        uVar2 = DAT_18267aa78 & 1;
        DAT_18267aa78 = DAT_18267aa78 | 1;
        UNLOCK();
      } while (uVar2 != 0);
      goto LAB_18124ad4c;
    }
    (**(code **)*puVar6)(puVar6,1);
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x108);
  FUN_181254d40(puVar6,*param_2 + 0x18,*param_2 + 0x20,param_4,uVar8,puVar6);
  *puVar6 = juce::WindowsTypeface::vftable;
  puVar6[0xb] = 0;
  puVar6[0xc] = 0;
  pHVar7 = CreateCompatibleDC((HDC)0x0);
  puVar6[0xd] = pHVar7;
  puVar6[0x16] = 0;
  *(undefined4 *)(puVar6 + 0x17) = 0x3f800000;
  *(undefined4 *)((longlong)puVar6 + 0xbc) = 0x3f800000;
  *(undefined4 *)(puVar6 + 0x18) = 0xffffffff;
  *(undefined4 *)((longlong)puVar6 + 0xc4) = 0;
  FUN_1804a7550(puVar6 + 0x19);
  FUN_1804a6370(puVar6);
  *param_1 = puVar6;
  LOCK();
  *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
  UNLOCK();
  do {
    LOCK();
    uVar2 = DAT_18267aa78 & 1;
    DAT_18267aa78 = DAT_18267aa78 | 1;
    UNLOCK();
  } while (uVar2 != 0);
LAB_18124ad4c:
  DAT_18267aa88 = DAT_18267aa88 + -1;
  if (DAT_18267aa88 == 0) {
    FUN_1804af690(&DAT_18267aa80,0);
  }
  LOCK();
  DAT_18267aa78 = 0;
  UNLOCK();
  return param_1;
}



############ FUN_ 1804a4410 size=1018 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804a4410(undefined8 *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  int iVar2;
  int iVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  void *_Memory;
  HDC hdc;
  double dVar6;
  double dVar7;
  float fVar8;
  float fVar9;
  uint uVar10;
  uint uVar11;
  undefined1 auStack_118 [32];
  undefined4 local_f8;
  undefined4 local_f4;
  int local_f0 [2];
  longlong *local_e8;
  int local_e0;
  int local_dc;
  longlong *local_d8;
  longlong *local_d0;
  undefined1 local_c8 [12];
  undefined8 uStack_bc;
  undefined4 uStack_b4;
  undefined8 local_a8;
  undefined8 *local_a0;
  uint *local_98;
  undefined8 local_90;
  undefined1 local_88 [8];
  void *local_80;
  ushort local_78;
  ushort local_76;
  ushort local_74;
  ulonglong local_60;
  
  local_a8 = 0xfffffffffffffffe;
  local_60 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_a0 = param_1;
  FUN_181254d40(param_1,*param_2 + 0x18,*param_2 + 0x20);
  *param_1 = juce::WindowsDirectWriteTypeface::vftable;
  local_98 = &DAT_18267aa78;
  do {
    LOCK();
    uVar10 = DAT_18267aa78 & 1;
    DAT_18267aa78 = DAT_18267aa78 | 1;
    UNLOCK();
  } while (uVar10 != 0);
  iVar2 = DAT_18267aa88 + 1;
  if (iVar2 == 1) {
    iVar3 = DAT_18267aa88 + 0x30;
    DAT_18267aa88 = iVar2;
    local_90 = FUN_1811316e0(iVar3);
    uVar4 = FUN_1804a4110(local_90);
    FUN_1804af690(&DAT_18267aa80,uVar4);
    iVar2 = DAT_18267aa88;
  }
  DAT_18267aa88 = iVar2;
  param_1[0xb] = DAT_18267aa80;
  LOCK();
  DAT_18267aa78 = 0;
  UNLOCK();
  param_1[0xc] = 0;
  *(undefined4 *)(param_1 + 0xd) = 0x3f800000;
  *(undefined8 *)((longlong)param_1 + 0x6c) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x74) = 0;
  param_1[0xf] = 0x3f800000;
  param_1[0x10] = 0;
  param_1[0x11] = 0x3f800000;
  local_e0 = 0;
  local_f4 = 0;
  puVar5 = (undefined8 *)FUN_18049a930(local_88,*param_2 + 0x18);
  (**(code **)(*param_3 + 0x28))(param_3,*puVar5,&local_f4,&local_e0);
  if (local_e0 == 0) {
    local_f4 = 0;
  }
  local_d0 = (longlong *)0x0;
  (**(code **)(*param_3 + 0x20))(param_3,local_f4,&local_d0);
  local_e8 = (longlong *)0x0;
  iVar2 = (**(code **)(*local_d0 + 0x20))();
  plVar1 = local_d0;
  iVar2 = iVar2 + -1;
  if (-1 < iVar2) {
    if (local_e8 != (longlong *)0x0) {
      (**(code **)(*local_e8 + 0x10))();
    }
    local_e8 = (longlong *)0x0;
    (**(code **)(*plVar1 + 0x28))(plVar1,iVar2,&local_e8);
    if (iVar2 != 0) {
      local_d8 = (longlong *)0x0;
      (**(code **)(*local_e8 + 0x40))(local_e8,&local_d8);
      plVar1 = local_d8;
      local_f8 = 0;
      local_dc = 0;
      (**(code **)(*local_d8 + 0x20))(local_d8,L"en-us",&local_f8,&local_dc);
      if (local_dc == 0) {
        local_f8 = 0;
      }
      local_f0[0] = 0;
      (**(code **)(*plVar1 + 0x38))(plVar1,local_f8,local_f0);
      _Memory = malloc((ulonglong)(local_f0[0] + 1) * 2);
      local_80 = _Memory;
      (**(code **)(*plVar1 + 0x40))(plVar1,local_f8,_Memory,local_f0[0] + 1);
      FUN_18049c800(local_c8,_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  plVar1 = local_e8;
  if ((longlong *)param_1[0xc] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[0xc] + 0x10))();
  }
  param_1[0xc] = 0;
  (**(code **)(*plVar1 + 0x68))(plVar1,param_1 + 0xc);
  if (local_e8 != (longlong *)0x0) {
    (**(code **)(*local_e8 + 0x10))();
  }
  plVar1 = (longlong *)param_1[0xc];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x40))(plVar1,&local_78);
    *(uint *)((longlong)param_1 + 0x74) = (uint)local_78;
    uVar10 = (uint)DAT_1824c4f10;
    uVar11 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
    fVar9 = (float)(double)CONCAT44((uint)((ulonglong)(double)local_76 >> 0x20) & uVar11,
                                    SUB84((double)local_76,0) & uVar10);
    fVar8 = (float)(double)CONCAT44((uint)((ulonglong)(double)local_74 >> 0x20) & uVar11,
                                    SUB84((double)local_74,0) & uVar10) + fVar9;
    *(float *)(param_1 + 0xe) = fVar9 / fVar8;
    *(float *)(param_1 + 0xd) = (float)local_78 / fVar8;
    hdc = GetDC((HWND)0x0);
    iVar2 = GetDeviceCaps(hdc,0x5a);
    iVar3 = GetDeviceCaps(hdc,0x58);
    fVar8 = (float)(iVar2 + iVar3) * DAT_1824c3d8c;
    iVar2 = GetDeviceCaps(hdc,0x5a);
    *(float *)((longlong)param_1 + 0x6c) = (fVar8 / (float)iVar2) * *(float *)(param_1 + 0xd);
    ReleaseDC((HWND)0x0,hdc);
    dVar6 = (double)(((float)local_76 * DAT_1824c45a4) / (float)*(int *)((longlong)param_1 + 0x74));
    dVar7 = (double)(((float)local_74 * DAT_1824c45a4) / (float)*(int *)((longlong)param_1 + 0x74));
    fVar8 = DAT_1824c3ea4 /
            ((float)(double)CONCAT44((uint)((ulonglong)dVar7 >> 0x20) & uVar11,
                                     SUB84(dVar7,0) & uVar10) +
            (float)(double)CONCAT44((uint)((ulonglong)dVar6 >> 0x20) & uVar11,
                                    SUB84(dVar6,0) & uVar10));
    uStack_bc = 0;
    uStack_b4 = 0;
    *(float *)(param_1 + 0xf) = fVar8;
    *(undefined4 *)((longlong)param_1 + 0x7c) = 0;
    *(undefined4 *)(param_1 + 0x10) = 0;
    *(undefined4 *)((longlong)param_1 + 0x84) = 0;
    param_1[0x11] = (ulonglong)(uint)fVar8;
  }
  if (local_d0 != (longlong *)0x0) {
    (**(code **)(*local_d0 + 0x10))();
  }
}



############ FUN_ 181252760 size=239 ############

ulonglong FUN_181252760(ulonglong *param_1)

{
  uint *puVar1;
  uint uVar2;
  ulonglong uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  
  uVar7 = *param_1;
  if (1 < *(int *)(uVar7 + 8)) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x40);
    uVar3 = *param_1;
    puVar6[1] = 0;
    *(undefined4 *)(puVar6 + 1) = 0;
    *puVar6 = juce::Font::SharedFontInternal::vftable;
    lVar4 = *(longlong *)(uVar3 + 0x10);
    puVar6[2] = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
      UNLOCK();
    }
    lVar4 = *(longlong *)(uVar3 + 0x18);
    puVar6[3] = lVar4;
    if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
      UNLOCK();
    }
    lVar4 = *(longlong *)(uVar3 + 0x20);
    puVar6[4] = lVar4;
    if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
      UNLOCK();
    }
    *(undefined4 *)(puVar6 + 5) = *(undefined4 *)(uVar3 + 0x28);
    *(undefined4 *)((longlong)puVar6 + 0x2c) = *(undefined4 *)(uVar3 + 0x2c);
    *(undefined4 *)(puVar6 + 6) = *(undefined4 *)(uVar3 + 0x30);
    *(undefined4 *)((longlong)puVar6 + 0x34) = *(undefined4 *)(uVar3 + 0x34);
    uVar7 = (ulonglong)*(byte *)(uVar3 + 0x38);
    *(byte *)(puVar6 + 7) = *(byte *)(uVar3 + 0x38);
    if ((undefined8 *)*param_1 != puVar6) {
      LOCK();
      puVar1 = (uint *)(puVar6 + 1);
      uVar7 = (ulonglong)*puVar1;
      *puVar1 = *puVar1 + 1;
      UNLOCK();
      puVar5 = (undefined8 *)*param_1;
      *param_1 = (ulonglong)puVar6;
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        puVar1 = (uint *)(puVar5 + 1);
        uVar2 = *puVar1;
        uVar7 = (ulonglong)uVar2;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar2 == 1) {
                    /* WARNING: Could not recover jumptable at 0x000181252846. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          uVar7 = (**(code **)*puVar5)(puVar5,1);
          return uVar7;
        }
      }
    }
  }
  return uVar7;
}



############ FUN_ 1804a01c0 size=129 ############

undefined8 *
FUN_1804a01c0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *local_res10;
  undefined8 local_res18;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res10 = param_2;
  FUN_181291830();
  LOCK();
  *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + 1;
  UNLOCK();
  local_res10 = param_1;
  local_res18 = FUN_1811316e0(0x20);
  uVar3 = FUN_181291bd0(local_res18,&local_res10,param_3,param_4,uVar3);
  *param_2 = uVar3;
  if (param_1 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(param_1 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*param_1)(param_1,1);
    }
  }
  return param_2;
}



############ FUN_ 181291bd0 size=399 ############

undefined8 * FUN_181291bd0(undefined8 *param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined1 (*pauVar7) [16];
  undefined8 local_60 [2];
  undefined8 local_50;
  undefined8 uStack_48;
  undefined1 local_38 [16];
  
  puVar4 = (undefined8 *)FUN_1811316e0(0x78);
  lVar2 = *param_2;
  if (lVar2 == 0) {
    local_50 = 0;
    uStack_48 = 0;
    pauVar7 = (undefined1 (*) [16])&local_50;
  }
  else {
    local_60[1]._4_4_ = *(undefined4 *)(lVar2 + 0x18);
    local_60[1]._0_4_ = *(undefined4 *)(lVar2 + 0x14);
    local_60[0] = 0;
    pauVar7 = (undefined1 (*) [16])local_60;
  }
  puVar5 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::RectangleListRegion::vftable;
  puVar5[2] = 0;
  puVar5[3] = 0;
  local_38 = *pauVar7;
  if ((0 < local_38._8_4_) && (local_38._12_4_ != 0 && -1 < local_38._8_8_)) {
    FUN_18049ba20(puVar5 + 2,8);
    iVar1 = *(int *)((longlong)puVar5 + 0x1c);
    *(int *)((longlong)puVar5 + 0x1c) = iVar1 + 1;
    puVar6 = (undefined8 *)((longlong)iVar1 * 0x10 + puVar5[2]);
    uVar3 = *(undefined8 *)(*pauVar7 + 8);
    *puVar6 = *(undefined8 *)*pauVar7;
    puVar6[1] = uVar3;
  }
  *puVar4 = puVar5;
  *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
  puVar4[1] = 0x3f800000;
  puVar4[2] = 0;
  puVar4[3] = 0x3f800000;
  puVar4[4] = 0;
  *(undefined2 *)(puVar4 + 5) = 1;
  *(undefined4 *)(puVar4 + 6) = 0xff000000;
  puVar4[7] = 0;
  puVar4[8] = 0;
  puVar4[9] = 0x3f800000;
  puVar4[10] = 0;
  puVar4[0xb] = 0x3f800000;
  *(undefined4 *)(puVar4 + 0xc) = 1;
  *(undefined4 *)((longlong)puVar4 + 100) = 0x3f800000;
  lVar2 = *param_2;
  puVar4[0xd] = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  FUN_181252d20(puVar4 + 0xe);
  param_1[1] = puVar4;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = juce::LowLevelGraphicsSoftwareRenderer::vftable;
  return param_1;
}



############ FUN_ 1804a0290 size=120 ############

longlong * FUN_1804a0290(longlong param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x50);
  lVar2 = FUN_1804a00e0(uVar1,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14),
                        *(undefined4 *)(param_1 + 0x18),0);
  memcpy(*(void **)(lVar2 + 0x40),*(void **)(param_1 + 0x40),
         (longlong)*(int *)(param_1 + 0x4c) * (longlong)*(int *)(param_1 + 0x18));
  *param_2 = lVar2;
  LOCK();
  *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
  UNLOCK();
  return param_2;
}



############ FUN_ 1804a0310 size=46 ############

undefined8 * FUN_1804a0310(undefined8 param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = juce::SoftwareImageType::vftable;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 181252a20 size=292 ############

undefined8 * FUN_181252a20(undefined8 *param_1,longlong *param_2,longlong *param_3,float param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  uint *_Memory;
  float fVar6;
  
  puVar4 = (undefined8 *)FUN_1811316e0(0x40);
  fVar6 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= param_4) && (fVar6 = DAT_1824c45c8, param_4 <= DAT_1824c45c8)) {
    fVar6 = param_4;
  }
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = juce::Font::SharedFontInternal::vftable;
  puVar4[2] = 0;
  lVar3 = *param_2;
  puVar4[3] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = *param_3;
  puVar4[4] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  *(float *)(puVar4 + 5) = fVar6;
  *(undefined8 *)((longlong)puVar4 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar4 + 0x34) = 0;
  *(undefined1 *)(puVar4 + 7) = 0;
  if (*(char *)puVar4[3] == '\0') {
    plVar5 = (longlong *)FUN_181252610();
    if ((*(uint *)(*plVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar5 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar3 = puVar4[3];
    puVar4[3] = *plVar5;
    UNLOCK();
    _Memory = (uint *)(lVar3 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  *param_1 = puVar4;
  LOCK();
  *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
  UNLOCK();
  return param_1;
}



############ FUN_ 1804a1870 size=453 ############

undefined8 *
FUN_1804a1870(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined4 uVar5;
  undefined8 *local_res10;
  undefined8 *local_res18;
  undefined8 *local_res20;
  
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  LOCK();
  *(int *)(param_2 + 1) = *(int *)(param_2 + 1) + 1;
  UNLOCK();
  local_res10 = (undefined8 *)FUN_1811316e0(0x40,param_2,param_3,param_4,0xfffffffffffffffe,param_2)
  ;
  *(undefined4 *)(local_res10 + 1) = 0;
  *local_res10 = juce::Font::SharedFontInternal::vftable;
  local_res10[2] = param_2;
  if (param_2 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(param_2 + 1) = *(int *)(param_2 + 1) + 1;
    UNLOCK();
  }
  lVar3 = param_2[2];
  local_res10[3] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = param_2[3];
  local_res10[4] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(local_res10 + 5) = 0x41600000;
  *(undefined8 *)((longlong)local_res10 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)local_res10 + 0x34) = 0;
  *(undefined1 *)(local_res10 + 7) = 0;
  LOCK();
  *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
  UNLOCK();
  LOCK();
  piVar1 = (int *)(param_2 + 1);
  iVar2 = *piVar1;
  *piVar1 = *piVar1 + -1;
  UNLOCK();
  if (iVar2 == 1) {
    (**(code **)*param_2)(param_2,1);
  }
  local_res18 = local_res10;
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_res18,DAT_1824c44dc);
  puVar4 = local_res10;
  local_res20 = local_res10;
  local_res10 = local_res18;
  local_res18 = puVar4;
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  uVar5 = FUN_1804a1ef0(&local_res10,"BDEFPRTZOQ",1);
  *(undefined4 *)(param_1 + 3) = uVar5;
  uVar5 = FUN_1804a1ef0(&local_res10,"acegmnopqrsuvwxy",1);
  *(undefined4 *)((longlong)param_1 + 0x1c) = uVar5;
  uVar5 = FUN_1804a1ef0(&local_res10,"BDELZOC",0);
  *(undefined4 *)(param_1 + 4) = uVar5;
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  return param_1;
}



############ FUN_ 1804a2b80 size=481 ############

undefined8 * FUN_1804a2b80(undefined8 *param_1,ulonglong param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  char *pcVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  char *pcVar8;
  
  *(undefined4 *)(param_1 + 1) = 0;
  *param_1 = juce::Font::SharedFontInternal::vftable;
  param_1[2] = 0;
  plVar4 = (longlong *)FUN_181252610();
  lVar3 = *plVar4;
  param_1[3] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  if ((param_2 & 1) == 0) {
    pcVar8 = "Italic";
    pcVar5 = "Regular";
  }
  else {
    pcVar8 = "Bold Italic";
    pcVar5 = "Bold";
  }
  if (((param_2 & 0xffffffff) >> 1 & 1) == 0) {
    pcVar8 = pcVar5;
  }
  FUN_18049c4e0(param_1 + 4,pcVar8);
  *(undefined4 *)(param_1 + 5) = param_3;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x34) = 0;
  *(byte *)(param_1 + 7) = (byte)(param_2 >> 2) & 1;
  if ((int)param_2 != 0) {
    return param_1;
  }
  if (DAT_182673a68 == (undefined8 *)0x0) {
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
    if ((DAT_182673a68 == (undefined8 *)0x0) && (DAT_18267aa70 == '\0')) {
      DAT_18267aa70 = 1;
      puVar6 = (undefined8 *)FUN_1811316e0(0x1a0);
      FUN_1812a7230(puVar6);
      *puVar6 = juce::TypefaceCache::vftable;
      puVar6[1] = 0;
      FUN_18122bd40(puVar6 + 2);
      puVar6[0x31] = 0;
      puVar6[0x32] = 0;
      puVar6[0x33] = 0;
      FUN_1804a2290(puVar6,10);
      DAT_18267aa70 = '\0';
      DAT_182673a68 = puVar6;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
  }
  lVar3 = DAT_182673a68[1];
  if (lVar3 == 0) {
    puVar6 = (undefined8 *)param_1[2];
    param_1[2] = 0;
    if (puVar6 == (undefined8 *)0x0) {
      return param_1;
    }
    LOCK();
    piVar1 = (int *)(puVar6 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 != 1) {
      return param_1;
    }
    puVar7 = (undefined8 *)*puVar6;
  }
  else {
    if (param_1[2] == lVar3) {
      return param_1;
    }
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
    puVar6 = (undefined8 *)param_1[2];
    param_1[2] = lVar3;
    if (puVar6 == (undefined8 *)0x0) {
      return param_1;
    }
    LOCK();
    piVar1 = (int *)(puVar6 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 != 1) {
      return param_1;
    }
    puVar7 = (undefined8 *)*puVar6;
  }
  (*(code *)*puVar7)(puVar6,1);
  return param_1;
}



############ FUN_ 1804a2d70 size=434 ############

undefined8 *
FUN_1804a2d70(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  *(undefined4 *)(param_1 + 1) = 0;
  *param_1 = juce::Font::SharedFontInternal::vftable;
  param_1[2] = 0;
  lVar3 = *param_2;
  param_1[3] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(param_1 + 4,"Regular",param_3,param_4,0xfffffffffffffffe);
  *(undefined4 *)(param_1 + 5) = param_4;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x34) = 0;
  *(undefined1 *)(param_1 + 7) = 0;
  if (*(char *)param_1[3] != '\0') {
    return param_1;
  }
  if (DAT_182673a68 == (undefined8 *)0x0) {
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
    if ((DAT_182673a68 == (undefined8 *)0x0) && (DAT_18267aa70 == '\0')) {
      DAT_18267aa70 = 1;
      puVar4 = (undefined8 *)FUN_1811316e0(0x1a0);
      FUN_1812a7230(puVar4);
      *puVar4 = juce::TypefaceCache::vftable;
      puVar4[1] = 0;
      FUN_18122bd40(puVar4 + 2);
      puVar4[0x31] = 0;
      puVar4[0x32] = 0;
      puVar4[0x33] = 0;
      FUN_1804a2290(puVar4,10);
      DAT_18267aa70 = '\0';
      DAT_182673a68 = puVar4;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a38);
  }
  lVar3 = DAT_182673a68[1];
  if (lVar3 == 0) {
    puVar4 = (undefined8 *)param_1[2];
    param_1[2] = 0;
    if (puVar4 == (undefined8 *)0x0) {
      return param_1;
    }
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 != 1) {
      return param_1;
    }
    puVar5 = (undefined8 *)*puVar4;
  }
  else {
    if (param_1[2] == lVar3) {
      return param_1;
    }
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
    puVar4 = (undefined8 *)param_1[2];
    param_1[2] = lVar3;
    if (puVar4 == (undefined8 *)0x0) {
      return param_1;
    }
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 != 1) {
      return param_1;
    }
    puVar5 = (undefined8 *)*puVar4;
  }
  (*(code *)*puVar5)(puVar4,1);
  return param_1;
}



############ FUN_ 1804a30a0 size=2577 ############

/* WARNING: Removing unreachable block (ram,0x0001804a3ae7) */
/* WARNING: Removing unreachable block (ram,0x0001804a3a97) */
/* WARNING: Removing unreachable block (ram,0x0001804a372f) */
/* WARNING: Removing unreachable block (ram,0x0001804a33b0) */
/* WARNING: Removing unreachable block (ram,0x0001804a33a5) */
/* WARNING: Removing unreachable block (ram,0x0001804a3412) */

void FUN_1804a30a0(longlong *param_1,longlong param_2,ulonglong *param_3)

{
  uint uVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  int iVar5;
  char *pcVar6;
  bool bVar7;
  char cVar8;
  undefined8 uVar9;
  undefined8 *puVar10;
  longlong *plVar11;
  longlong *plVar12;
  undefined4 *puVar13;
  longlong lVar14;
  float *pfVar15;
  uint *puVar16;
  longlong lVar17;
  longlong *plVar18;
  longlong lVar19;
  undefined8 *puVar20;
  ulonglong uVar21;
  int iVar22;
  uint uVar23;
  ulonglong uVar24;
  undefined4 uVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  uint local_174;
  char *local_148;
  longlong local_140;
  undefined8 local_138;
  uint uStack_134;
  longlong local_130;
  longlong local_128;
  undefined8 *local_120;
  void *local_118;
  ulonglong local_110;
  longlong local_108;
  undefined4 local_100;
  uint uStack_fc;
  uint local_f8;
  uint uStack_f4;
  undefined4 local_f0;
  uint uStack_ec;
  longlong *local_e8;
  undefined4 local_e0;
  uint uStack_dc;
  undefined4 local_d8;
  uint uStack_d4;
  longlong *local_d0;
  longlong local_c8 [2];
  char *local_b8;
  undefined8 local_b0;
  undefined1 local_a8 [104];
  
  local_c8[1] = 0xfffffffffffffffe;
  uVar23 = 0;
  iVar22 = (int)param_1[2];
  if ((int)param_3[1] < iVar22) {
    FUN_18047cb30(param_3,iVar22 + 8 + iVar22 / 2 & 0xfffffff8,param_3,iVar22,0);
  }
  iVar22 = *(int *)(param_2 + 0x24);
  lVar17 = (longlong)iVar22;
  iVar5 = 0x40;
  if (0x40 < iVar22) {
    iVar5 = iVar22;
  }
  FUN_18047e060(param_1,iVar5);
  if (0 < iVar22) {
    lVar19 = 0;
    do {
      lVar14 = *(longlong *)(param_2 + 0x18);
      FUN_1812490c0(param_2,&local_108,*(ulonglong *)(lVar19 + lVar14) & 0xffffffff,
                    *(ulonglong *)(lVar19 + lVar14) >> 0x20);
      uVar23 = uVar23 | 1;
      FUN_1804a3b30(param_1,&local_108,lVar14 + 8 + lVar19,*(undefined4 *)(lVar19 + 0x10 + lVar14),
                    uVar23);
      puVar16 = (uint *)(local_108 + -0x10);
      if ((*puVar16 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar16;
        *puVar16 = *puVar16 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar16);
        }
      }
      lVar19 = lVar19 + 0x18;
      lVar17 = lVar17 + -1;
    } while (lVar17 != 0);
  }
  FUN_1804a3e70(param_1,(int)param_3[2],*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0x10)
               );
  fVar26 = DAT_1824c3d8c;
  local_174 = 0;
  bVar7 = true;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    local_128 = 0;
    puVar20 = *(undefined8 **)*param_1;
    local_140 = 0;
    local_138 = 0;
    local_118 = (void *)0x0;
    local_110 = 0;
    local_120 = puVar20;
    uVar9 = FUN_181230800(puVar20,&local_148);
    if ((*local_148 == '\0') && (*(char *)*puVar20 != '\0')) {
      puVar10 = (undefined8 *)
                FUN_1812314e0(puVar20,local_c8,&DAT_182498440,&DAT_18249843c,uVar23 | 2);
      local_b8 = local_148;
      pcVar6 = (char *)*puVar10;
      *puVar10 = local_148;
      puVar16 = (uint *)(local_c8[0] + -0x10);
      local_148 = pcVar6;
      if ((*puVar16 & 0x30000000) == 0) {
        LOCK();
        uVar23 = *puVar16;
        *puVar16 = *puVar16 - 1;
        UNLOCK();
        if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar16);
        }
      }
    }
    plVar18 = puVar20 + 1;
    FUN_181251660(plVar18,uVar9,&local_140,&local_118);
    puVar16 = (uint *)(local_148 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar23 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    lVar17 = FUN_1811316e0(0x28);
    FUN_181252d20(lVar17);
    *(undefined4 *)(lVar17 + 8) = 0xff000000;
    *(undefined8 *)(lVar17 + 0x10) = 0;
    *(undefined8 *)(lVar17 + 0x18) = 0;
    *(undefined8 *)(lVar17 + 0x20) = 0;
    plVar11 = (longlong *)FUN_1811316e0(0x30);
    *plVar11 = 0;
    plVar11[1] = 0;
    plVar11[2] = 0;
    plVar11[3] = 0;
    plVar11[4] = 0;
    *(undefined4 *)(plVar11 + 5) = 0;
    if ((int)uStack_134 < 1) {
      if ((*(char *)((longlong)puVar20 + 0x2c) != '\0') ||
         (uVar23 = 0, *(char *)((longlong)puVar20 + 0x2d) != '\0')) {
        uVar23 = 1;
      }
    }
    else {
      FUN_1804aea80(lVar17 + 0x10,uStack_134 + *(int *)(lVar17 + 0x1c));
      if (*(float *)(*plVar18 + 0x34) == 0.0) {
        plVar12 = (longlong *)FUN_181252280(plVar18);
        lVar19 = *plVar18;
        uVar25 = (**(code **)(*plVar12 + 0x10))();
        *(undefined4 *)(lVar19 + 0x34) = uVar25;
      }
      local_b0 = *(undefined8 *)((longlong)puVar20 + 0x14);
      fVar27 = *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28) +
               (float)((ulonglong)local_b0 >> 0x20);
      fVar28 = (float)local_b0 + 0.0;
      *(float *)(plVar11 + 3) = fVar28;
      *(float *)((longlong)plVar11 + 0x1c) = fVar27;
      bVar7 = false;
      fVar26 = *(float *)((longlong)plVar11 + 0x1c);
      fVar2 = *(float *)(plVar11 + 3);
      uVar23 = uStack_134;
      if (0 < (int)uStack_134) {
        lVar19 = 0;
        iVar22 = 0;
        do {
          fVar3 = *(float *)(lVar19 + (longlong)local_118);
          fVar4 = *(float *)(lVar19 + 4 + (longlong)local_118);
          uVar25 = *(undefined4 *)(lVar19 + local_140);
          FUN_1804aea80(lVar17 + 0x10,*(int *)(lVar17 + 0x1c) + 1);
          iVar5 = *(int *)(lVar17 + 0x1c);
          *(int *)(lVar17 + 0x1c) = iVar5 + 1;
          puVar13 = (undefined4 *)((longlong)iVar5 * 0x10 + *(longlong *)(lVar17 + 0x10));
          *puVar13 = uVar25;
          puVar13[1] = (fVar28 - fVar2) + fVar3;
          puVar13[2] = (fVar27 - fVar26) + 0.0;
          puVar13[3] = fVar4 - fVar3;
          iVar22 = iVar22 + 1;
          lVar19 = lVar19 + 4;
        } while (iVar22 < (int)uStack_134);
        plVar18 = local_120 + 1;
        puVar20 = local_120;
        uVar23 = uStack_134;
      }
    }
    if ((*(uint *)((longlong)param_1 + 0xc) < 2) ||
       (lVar19 = *(longlong *)(local_128 + 8 + *param_1), lVar19 == 0)) {
      local_e0 = 0;
      uStack_dc = 0;
      if (0 < (int)uVar23) {
        uStack_dc = uVar23;
      }
      *(ulonglong *)(lVar17 + 0x20) = (ulonglong)uStack_dc << 0x20;
      FUN_181252990(lVar17,plVar18);
      *(undefined4 *)(lVar17 + 8) = *(undefined4 *)(puVar20 + 2);
      if (*(float *)(*plVar18 + 0x34) == 0.0) {
        plVar12 = (longlong *)FUN_181252280(plVar18);
        lVar19 = *plVar18;
        uVar25 = (**(code **)(*plVar12 + 0x10))(plVar12);
        *(undefined4 *)(lVar19 + 0x34) = uVar25;
      }
      fVar26 = *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28);
      if (fVar26 <= *(float *)(plVar11 + 4)) {
        fVar26 = *(float *)(plVar11 + 4);
      }
      *(float *)(plVar11 + 4) = fVar26;
      lVar19 = *plVar18;
      if (*(float *)(lVar19 + 0x34) == 0.0) {
        plVar12 = (longlong *)FUN_181252280(plVar18);
        lVar14 = *plVar18;
        uVar25 = (**(code **)(*plVar12 + 0x10))(plVar12);
        *(undefined4 *)(lVar14 + 0x34) = uVar25;
      }
      fVar26 = *(float *)(lVar19 + 0x28) - *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28)
      ;
      if (fVar26 <= *(float *)((longlong)plVar11 + 0x24)) {
        fVar26 = *(float *)((longlong)plVar11 + 0x24);
      }
      *(float *)((longlong)plVar11 + 0x24) = fVar26;
      FUN_18047e060(plVar11,*(int *)((longlong)plVar11 + 0xc) + 1);
      iVar22 = *(int *)((longlong)plVar11 + 0xc);
      *(int *)((longlong)plVar11 + 0xc) = iVar22 + 1;
      *(longlong *)(*plVar11 + (longlong)iVar22 * 8) = lVar17;
      local_d8 = 0;
      uStack_d4 = 0;
      if (0 < (int)uVar23) {
        uStack_d4 = uVar23;
      }
      plVar11[2] = (ulonglong)uStack_d4 << 0x20;
      if (!bVar7) {
        local_d0 = plVar11;
        FUN_18124e930(param_3,&local_d0);
      }
    }
    else {
      cVar8 = FUN_181252880(plVar18,lVar19 + 8);
      if ((cVar8 == '\0') || (lVar14 = lVar17, *(int *)(puVar20 + 2) != *(int *)(lVar19 + 0x10))) {
        lVar14 = 0;
        local_100 = 0;
        uStack_fc = 0;
        if (0 < (int)uVar23) {
          uStack_fc = uVar23;
        }
        *(ulonglong *)(lVar17 + 0x20) = (ulonglong)uStack_fc << 0x20;
        local_130 = lVar17;
        FUN_181252990(lVar17,plVar18);
        *(undefined4 *)(lVar17 + 8) = *(undefined4 *)(puVar20 + 2);
        if (*(float *)(*plVar18 + 0x34) == 0.0) {
          plVar12 = (longlong *)FUN_181252280(plVar18);
          lVar17 = *plVar18;
          uVar25 = (**(code **)(*plVar12 + 0x10))(plVar12);
          *(undefined4 *)(lVar17 + 0x34) = uVar25;
        }
        fVar26 = *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28);
        if (fVar26 <= *(float *)(plVar11 + 4)) {
          fVar26 = *(float *)(plVar11 + 4);
        }
        *(float *)(plVar11 + 4) = fVar26;
        local_120 = (undefined8 *)*plVar18;
        if (*(float *)((longlong)local_120 + 0x34) == 0.0) {
          plVar12 = (longlong *)FUN_181252280(plVar18);
          lVar17 = *plVar18;
          uVar25 = (**(code **)(*plVar12 + 0x10))(plVar12);
          *(undefined4 *)(lVar17 + 0x34) = uVar25;
        }
        fVar26 = *(float *)(local_120 + 5) -
                 *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28);
        if (fVar26 <= *(float *)((longlong)plVar11 + 0x24)) {
          fVar26 = *(float *)((longlong)plVar11 + 0x24);
        }
        *(float *)((longlong)plVar11 + 0x24) = fVar26;
        FUN_18047e060(plVar11,*(int *)((longlong)plVar11 + 0xc) + 1);
        iVar22 = *(int *)((longlong)plVar11 + 0xc);
        *(int *)((longlong)plVar11 + 0xc) = iVar22 + 1;
        *(longlong *)(*plVar11 + (longlong)iVar22 * 8) = local_130;
        local_174 = uVar23;
      }
      if (*(int *)((longlong)puVar20 + 0x24) != *(int *)(lVar19 + 0x24)) {
        if (lVar14 == 0) {
          lVar14 = FUN_1811316e0(0x28);
          FUN_181252d20();
          *(undefined4 *)(lVar14 + 8) = 0xff000000;
          *(undefined8 *)(lVar14 + 0x10) = 0;
          *(undefined8 *)(lVar14 + 0x18) = 0;
          *(undefined8 *)(lVar14 + 0x20) = 0;
        }
        local_f8 = local_174;
        uStack_f4 = local_174;
        if ((int)local_174 < (int)uVar23) {
          uStack_f4 = uVar23;
        }
        *(ulonglong *)(lVar14 + 0x20) = CONCAT44(uStack_f4,local_174);
        FUN_181252990(lVar14,plVar18);
        *(undefined4 *)(lVar14 + 8) = *(undefined4 *)(puVar20 + 2);
        if (*(float *)(*plVar18 + 0x34) == 0.0) {
          plVar12 = (longlong *)FUN_181252280(plVar18);
          lVar17 = *plVar18;
          uVar25 = (**(code **)(*plVar12 + 0x10))(plVar12);
          *(undefined4 *)(lVar17 + 0x34) = uVar25;
        }
        fVar26 = *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28);
        if (fVar26 <= *(float *)(plVar11 + 4)) {
          fVar26 = *(float *)(plVar11 + 4);
        }
        *(float *)(plVar11 + 4) = fVar26;
        lVar17 = *plVar18;
        if (*(float *)(lVar17 + 0x34) == 0.0) {
          plVar12 = (longlong *)FUN_181252280(plVar18);
          lVar19 = *plVar18;
          uVar25 = (**(code **)(*plVar12 + 0x10))(plVar12);
          *(undefined4 *)(lVar19 + 0x34) = uVar25;
        }
        fVar26 = *(float *)(lVar17 + 0x28) -
                 *(float *)(*plVar18 + 0x34) * *(float *)(*plVar18 + 0x28);
        if (fVar26 <= *(float *)((longlong)plVar11 + 0x24)) {
          fVar26 = *(float *)((longlong)plVar11 + 0x24);
        }
        *(float *)((longlong)plVar11 + 0x24) = fVar26;
        FUN_18047e060(plVar11,*(int *)((longlong)plVar11 + 0xc) + 1);
        iVar22 = *(int *)((longlong)plVar11 + 0xc);
        *(int *)((longlong)plVar11 + 0xc) = iVar22 + 1;
        *(longlong *)(*plVar11 + (longlong)iVar22 * 8) = lVar14;
        local_f0 = 0;
        uStack_ec = 0;
        if (0 < (int)uVar23) {
          uStack_ec = uVar23;
        }
        plVar11[2] = (ulonglong)uStack_ec << 0x20;
        if (!bVar7) {
          local_e8 = plVar11;
          FUN_18124e930(param_3,&local_e8);
        }
      }
    }
    local_110 = local_110 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_118);
  }
  uVar23 = *(uint *)(param_2 + 0xc);
  uVar24 = 0;
  if ((uVar23 & 6) != 0) {
    fVar2 = *(float *)(param_3 + 2);
    plVar18 = (longlong *)*param_3;
    uVar21 = (ulonglong)
             ((longlong)(plVar18 + *(int *)((longlong)param_3 + 0xc)) + (7 - (longlong)plVar18)) >>
             3;
    if (plVar18 + *(int *)((longlong)param_3 + 0xc) < plVar18) {
      uVar21 = uVar24;
    }
    if (uVar21 != 0) {
      do {
        lVar17 = *plVar18;
        pfVar15 = (float *)FUN_18124eb40(lVar17,local_a8);
        fVar27 = fVar2 - (pfVar15[1] - *pfVar15);
        if ((uVar23 >> 2 & 1) != 0) {
          fVar27 = fVar27 * fVar26;
        }
        *(float *)(lVar17 + 0x18) = fVar27 + *(float *)(lVar17 + 0x18);
        plVar18 = plVar18 + 1;
        uVar24 = uVar24 + 1;
      } while (uVar24 != uVar21);
    }
  }
  return;
}



############ FUN_ 1804a3b30 size=819 ############

void FUN_1804a3b30(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined4 param_4)

{
  char *pcVar1;
  uint uVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  ulonglong uVar8;
  byte *pbVar9;
  byte bVar10;
  longlong lVar11;
  byte bVar12;
  char *local_res10;
  longlong local_48 [3];
  char *local_30;
  
  local_48[1] = 0xfffffffffffffffe;
  pbVar9 = (byte *)*param_2;
  local_res10 = "";
  bVar10 = 0;
LAB_1804a3b71:
  do {
    bVar12 = *pbVar9;
    pbVar9 = pbVar9 + 1;
    uVar5 = (uint)bVar12;
    if ((char)bVar12 < '\0') {
      uVar5 = 0x7f;
      uVar2 = 0x40;
      iVar7 = 0;
      if ((bVar12 & 0x40) != 0) {
        do {
          if (uVar2 < 9) break;
          uVar5 = uVar5 >> 1;
          iVar7 = iVar7 + 1;
          uVar2 = uVar2 >> 1;
        } while ((bVar12 & uVar2) != 0);
      }
      uVar5 = bVar12 & uVar5;
      for (; (iVar7 = iVar7 + -1, -1 < iVar7 && ((*pbVar9 & 0xc0) == 0x80)); pbVar9 = pbVar9 + 1) {
        uVar5 = *pbVar9 & 0x3f | uVar5 << 6;
      }
    }
    if (uVar5 == 0) {
      if (*local_res10 != '\0') {
        local_48[2] = FUN_1811316e0(0x30);
        uVar3 = FUN_1804a2fe0(local_48[2],&local_res10,param_3,param_4,bVar10 == 2);
        FUN_18047e060(param_1,*(int *)((longlong)param_1 + 0xc) + 1);
        iVar7 = *(int *)((longlong)param_1 + 0xc);
        *(int *)((longlong)param_1 + 0xc) = iVar7 + 1;
        *(undefined8 *)(*param_1 + (longlong)iVar7 * 8) = uVar3;
      }
      puVar6 = (uint *)(local_res10 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      return;
    }
    if ((uVar5 == 0xd) || (uVar5 == 10)) {
      bVar12 = 0;
LAB_1804a3c1b:
      if (*local_res10 != '\0') {
        local_48[2] = FUN_1811316e0(0x30);
        uVar3 = FUN_1804a2fe0(local_48[2],&local_res10,param_3,param_4,(bVar10 & 0xfd) == 0);
        FUN_18047e060(param_1,*(int *)((longlong)param_1 + 0xc) + 1);
        iVar7 = *(int *)((longlong)param_1 + 0xc);
        *(int *)((longlong)param_1 + 0xc) = iVar7 + 1;
        *(undefined8 *)(*param_1 + (longlong)iVar7 * 8) = uVar3;
      }
      puVar4 = (undefined8 *)FUN_181233f40(local_48,uVar5);
      local_30 = local_res10;
      pcVar1 = (char *)*puVar4;
      *puVar4 = local_res10;
      puVar6 = (uint *)(local_48[0] + -0x10);
      local_res10 = pcVar1;
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      bVar10 = bVar12;
      if (uVar5 == 0xd) {
        bVar12 = *pbVar9;
        uVar5 = (uint)bVar12;
        if ((char)bVar12 < '\0') {
          uVar5 = 0x7f;
          uVar8 = 0x7f;
          uVar2 = 0x40;
          iVar7 = 0;
          if ((bVar12 & 0x40) != 0) {
            do {
              uVar5 = (uint)uVar8;
              if (uVar2 < 9) break;
              uVar8 = uVar8 >> 1;
              uVar5 = (uint)uVar8;
              iVar7 = iVar7 + 1;
              uVar2 = uVar2 >> 1;
            } while ((bVar12 & uVar2) != 0);
          }
          uVar5 = bVar12 & uVar5;
          lVar11 = 1;
          if (0 < (longlong)iVar7) {
            do {
              if ((pbVar9[lVar11] & 0xc0) != 0x80) break;
              uVar5 = pbVar9[lVar11] & 0x3f | uVar5 << 6;
              lVar11 = lVar11 + 1;
            } while (lVar11 <= iVar7);
          }
        }
        if (uVar5 == 10) {
          pbVar9 = pbVar9 + 1;
          if ((char)bVar12 < '\0') {
            uVar5 = 0x40;
            iVar7 = 0;
            if ((bVar12 & 0x40) != 0) {
              do {
                if (uVar5 < 9) break;
                iVar7 = iVar7 + 1;
                uVar5 = uVar5 >> 1;
              } while ((bVar12 & uVar5) != 0);
            }
            for (; (iVar7 = iVar7 + -1, -1 < iVar7 && ((*pbVar9 & 0xc0) == 0x80));
                pbVar9 = pbVar9 + 1) {
            }
          }
          FUN_181232b70(&local_res10);
        }
      }
      goto LAB_1804a3b71;
    }
    iVar7 = iswspace((wint_t)uVar5);
    bVar12 = (iVar7 != 0) + 1;
    if ((bVar12 == 0) || (bVar12 != bVar10)) goto LAB_1804a3c1b;
    FUN_181232b70(&local_res10);
    bVar10 = bVar12;
  } while( true );
}



############ FUN_ 1804a4e80 size=288 ############

undefined8 FUN_1804a4e80(longlong param_1,undefined2 param_2,longlong *param_3)

{
  longlong *plVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong lVar4;
  char cVar5;
  longlong *plVar6;
  undefined2 local_res10 [4];
  
  local_res10[0] = param_2;
  plVar6 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar6 + 1) = 0;
  *plVar6 = (longlong)juce::WindowsDirectWriteTypeface::PathGeometrySink::vftable;
  plVar1 = plVar6 + 2;
  *plVar1 = 0;
  plVar6[3] = 0;
  plVar6[4] = 0;
  plVar6[5] = 0;
  *(undefined1 *)(plVar6 + 6) = 1;
  (**(code **)(*plVar6 + 8))(plVar6);
  (**(code **)(**(longlong **)(param_1 + 0x60) + 0x70))
            (*(longlong **)(param_1 + 0x60),DAT_1824c45a4,local_res10,0,0,1,0,0,plVar6);
  if (param_3 != plVar1) {
    FUN_1804aaf40(param_3,plVar1);
    uVar2 = *(undefined4 *)((longlong)plVar6 + 0x24);
    lVar4 = plVar6[5];
    uVar3 = *(undefined4 *)((longlong)plVar6 + 0x2c);
    *(int *)(param_3 + 2) = (int)plVar6[4];
    *(undefined4 *)((longlong)param_3 + 0x14) = uVar2;
    *(int *)(param_3 + 3) = (int)lVar4;
    *(undefined4 *)((longlong)param_3 + 0x1c) = uVar3;
    *(char *)(param_3 + 4) = (char)plVar6[6];
  }
  param_1 = param_1 + 0x78;
  cVar5 = FUN_1812a0b10(param_1);
  if (cVar5 == '\0') {
    FUN_18129b680(param_3,param_1);
  }
  if ((undefined **)*plVar6 == juce::WindowsDirectWriteTypeface::PathGeometrySink::vftable) {
    plVar1 = plVar6 + 1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    if ((int)*plVar1 == 0) {
      (*(code *)juce::WindowsDirectWriteTypeface::PathGeometrySink::vftable[10])(plVar6,1);
    }
  }
  else {
    (*(code *)((undefined **)*plVar6)[2])(plVar6);
  }
  return 1;
}



############ FUN_ 1804a52d0 size=899 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804a52d0(longlong param_1,longlong *param_2,float param_3,float param_4,undefined8 param_5
                  ,undefined8 *param_6,longlong param_7,longlong *param_8)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  ushort uVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong *plVar7;
  longlong *plVar8;
  uint *puVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  ulonglong uVar13;
  float fVar14;
  undefined1 auStack_108 [32];
  undefined4 local_e8;
  int local_d8;
  int iStack_d4;
  undefined8 *local_d0;
  undefined8 *local_c8;
  longlong *local_c0;
  undefined8 local_b8;
  longlong local_b0;
  ushort local_a8;
  ushort local_a6;
  ushort local_a4;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined4 local_84;
  ulonglong local_80;
  
  local_b8 = 0xfffffffffffffffe;
  local_80 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_c0 = param_8;
  if ((param_4 < _DAT_1824c4764) || (DAT_1824c4620 < param_4)) {
    param_4 = 0.0;
  }
  uVar13 = 0;
  if (param_4 != *(float *)(param_1 + 0x24)) {
    *(float *)(param_1 + 0x24) = param_4;
    *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
    if (*(int *)((longlong)param_2 + 0xc) <= *(int *)(param_1 + 0x20)) {
      local_c8 = (undefined8 *)FUN_1811316e0(0x30);
      *local_c8 = 0;
      local_c8[1] = 0;
      local_c8[2] = 0;
      local_c8[3] = 0;
      local_c8[4] = 0;
      *(undefined4 *)(local_c8 + 5) = 0;
      *(float *)(local_c8 + 3) = param_3;
      *(float *)((longlong)local_c8 + 0x1c) = param_4;
      FUN_18124e930(param_2,&local_c8);
    }
  }
  plVar8 = *(longlong **)(*param_2 + (longlong)*(int *)(param_1 + 0x20) * 8);
  (**(code **)(*(longlong *)*param_6 + 0x40))((longlong *)*param_6,&local_a8);
  uVar10 = (uint)DAT_1824c4f10;
  uVar12 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
  fVar14 = ((float)(double)CONCAT44((uint)((ulonglong)(double)local_a6 >> 0x20) & uVar12,
                                    SUB84((double)local_a6,0) & uVar10) / (float)local_a8) *
           *(float *)(param_6 + 1);
  if (fVar14 <= *(float *)(plVar8 + 4)) {
    fVar14 = *(float *)(plVar8 + 4);
  }
  *(float *)(plVar8 + 4) = fVar14;
  fVar14 = ((float)(double)CONCAT44((uint)((ulonglong)(double)local_a4 >> 0x20) & uVar12,
                                    SUB84((double)local_a4,0) & uVar10) / (float)local_a8) *
           *(float *)(param_6 + 1);
  if (fVar14 <= *(float *)((longlong)plVar8 + 0x24)) {
    fVar14 = *(float *)((longlong)plVar8 + 0x24);
  }
  *(float *)((longlong)plVar8 + 0x24) = fVar14;
  plVar7 = (longlong *)FUN_1811316e0(0x28);
  local_d8 = *(int *)(param_7 + 0x20);
  iVar11 = *(int *)(param_7 + 0x10) + local_d8;
  iStack_d4 = local_d8;
  if (local_d8 < iVar11) {
    iStack_d4 = iVar11;
  }
  uVar5 = *(undefined4 *)((longlong)param_6 + 0xc);
  FUN_181252d20(plVar7);
  *(undefined4 *)(plVar7 + 1) = 0xff000000;
  plVar7[2] = 0;
  plVar7[3] = 0;
  plVar7[4] = CONCAT44(iStack_d4,local_d8);
  FUN_1804aea80(plVar7 + 2,uVar5);
  FUN_18047e060(plVar8,*(int *)((longlong)plVar8 + 0xc) + 1);
  iVar11 = *(int *)((longlong)plVar8 + 0xc);
  *(int *)((longlong)plVar8 + 0xc) = iVar11 + 1;
  *(longlong **)(*plVar8 + (longlong)iVar11 * 8) = plVar7;
  (**(code **)(*(longlong *)*param_6 + 0x40))((longlong *)*param_6,&local_a8);
  plVar8 = (longlong *)
           FUN_1804a5690(param_1,&local_d0,param_6,
                         *(float *)(param_6 + 1) /
                         ((float)local_a8 /
                         ((float)(double)CONCAT44((uint)((ulonglong)(double)local_a4 >> 0x20) &
                                                  uVar12,SUB84((double)local_a4,0) & uVar10) +
                         (float)(double)CONCAT44((uint)((ulonglong)(double)local_a6 >> 0x20) &
                                                 uVar12,SUB84((double)local_a6,0) & uVar10))));
  local_b0 = *plVar7;
  *plVar7 = *plVar8;
  *plVar8 = local_b0;
  if (local_d0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_d0 + 1);
    iVar11 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar11 == 1) {
      (**(code **)*local_d0)(local_d0,1);
    }
  }
  iVar11 = DAT_18262b59c;
  if (local_c0 != (longlong *)0x0) {
    (**(code **)(*local_c0 + 0x48))(local_c0,&local_90);
    local_e8 = local_84;
    FUN_1812a2fc0(&local_d8,local_90,local_8c,local_88);
    iVar11 = local_d8;
  }
  *(int *)(plVar7 + 1) = iVar11;
  lVar6 = *(longlong *)(*param_2 + (longlong)*(int *)(param_1 + 0x20) * 8);
  param_3 = param_3 - *(float *)(lVar6 + 0x18);
  fVar14 = *(float *)(*plVar7 + 0x30) * *(float *)(*plVar7 + 0x28);
  if (*(int *)((longlong)param_6 + 0xc) != 0) {
    uVar10 = *(uint *)((longlong)param_6 + 0x2c) & 1;
    fVar2 = *(float *)(lVar6 + 0x1c);
    do {
      fVar3 = *(float *)(param_6[3] + uVar13 * 4);
      if (uVar10 != 0) {
        param_3 = param_3 - (fVar3 + fVar14);
      }
      uVar4 = *(ushort *)(param_6[2] + uVar13 * 2);
      FUN_1804aea80(plVar7 + 2,*(int *)((longlong)plVar7 + 0x1c) + 1);
      iVar11 = *(int *)((longlong)plVar7 + 0x1c);
      *(int *)((longlong)plVar7 + 0x1c) = iVar11 + 1;
      puVar9 = (uint *)((longlong)iVar11 * 0x10 + plVar7[2]);
      *puVar9 = (uint)uVar4;
      puVar9[1] = (uint)param_3;
      puVar9[2] = (uint)(param_4 - fVar2);
      puVar9[3] = (uint)fVar3;
      uVar10 = *(uint *)((longlong)param_6 + 0x2c) & 1;
      if (uVar10 == 0) {
        param_3 = param_3 + fVar3 + fVar14;
      }
      uVar12 = (int)uVar13 + 1;
      uVar13 = (ulonglong)uVar12;
    } while (uVar12 < *(uint *)((longlong)param_6 + 0xc));
  }
}



############ FUN_ 1804ad7b0 size=402 ############

void FUN_1804ad7b0(longlong *param_1,longlong param_2)

{
  int iVar1;
  int *piVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *local_res8;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  int local_88;
  int iStack_84;
  int iStack_80;
  int iStack_7c;
  int local_78;
  int iStack_74;
  int iStack_70;
  int iStack_6c;
  int local_68;
  int iStack_64;
  int iStack_60;
  int iStack_5c;
  undefined1 local_58 [16];
  undefined1 local_48 [48];
  
  plVar4 = (longlong *)*param_1;
  if (plVar4 != (longlong *)0x0) {
    FUN_18049eab0(param_1 + 1,local_48);
    (**(code **)(*plVar4 + 0x58))(plVar4,&local_78);
    iVar1 = local_78;
    local_94 = *(float *)(param_2 + 0x18);
    local_98 = *(float *)(param_2 + 0x10);
    local_8c = *(float *)(param_2 + 0x1c) - local_94;
    local_90 = *(float *)(param_2 + 0x14) - local_98;
    local_88 = local_78;
    iStack_84 = iStack_74;
    iStack_80 = iStack_70;
    iStack_7c = iStack_6c;
    FUN_1804ab160(&local_98,&local_68,local_48);
    piVar2 = (int *)FUN_1804ab070(&local_68,local_58);
    if (iVar1 < *piVar2 + piVar2[2]) {
      if ((((iStack_84 < piVar2[1] + piVar2[3]) && (*piVar2 < iVar1 + iStack_80)) &&
          (piVar2[1] < iStack_84 + iStack_7c)) &&
         (((0 < piVar2[2] && (0 < piVar2[3])) && ((0 < iStack_80 && (0 < iStack_7c)))))) {
        puVar3 = (undefined8 *)FUN_1811316e0(0x38);
        local_68 = local_78;
        iStack_64 = iStack_74;
        iStack_60 = iStack_70;
        iStack_5c = iStack_6c;
        *(undefined4 *)(puVar3 + 1) = 0;
        *puVar3 = juce::RenderingHelpers::
                  ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion::
                  vftable;
        FUN_18129fdb0(puVar3 + 2,&local_68,param_2,local_48);
        *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
        local_res8 = puVar3;
        FUN_1804a9960(param_1,&local_res8);
      }
    }
  }
  return;
}



############ FUN_ 1804af920 size=516 ############

void FUN_1804af920(undefined8 *param_1,float *param_2)

{
  uint uVar1;
  uint uVar2;
  float fVar3;
  byte bVar4;
  int *piVar5;
  undefined8 *puVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined8 local_res8;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  undefined1 local_58 [80];
  
  if ((param_1[7] == 0) && (param_1[8] == 0)) {
    uVar1 = *(uint *)(param_1 + 6);
    local_68 = *param_2;
    fStack_64 = param_2[1];
    fStack_60 = param_2[2];
    fStack_5c = param_2[3];
    uVar2 = uVar1 >> 0x18;
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar1);
    if (uVar2 < 0xff) {
      if (uVar2 == 0) {
        bVar4 = (byte)(uVar1 >> 0x18);
        local_res8._0_3_ = CONCAT12(bVar4,(ushort)bVar4);
      }
      else {
        local_res8._0_3_ =
             CONCAT12((char)((uVar1 >> 0x10 & 0xff) * uVar2 + 0x7f >> 8),
                      CONCAT11((char)((uVar1 >> 8 & 0xff) * uVar2 + 0x7f >> 8),
                               (char)((uVar1 & 0xff) * uVar2 + 0x7f >> 8)));
      }
      uVar1 = (uint)local_res8;
    }
    (**(code **)(*(longlong *)*param_1 + 0x60))((longlong *)*param_1,param_1,&local_68,uVar1);
    return;
  }
  fVar9 = *param_2;
  fVar3 = param_2[1];
  fVar11 = param_2[2];
  fStack_5c = param_2[3];
  local_68 = fVar9;
  fStack_64 = fVar3;
  fStack_60 = fVar11;
  piVar5 = (int *)(**(code **)(*(longlong *)*param_1 + 0x58))((longlong *)*param_1,local_58);
  fVar7 = (float)*piVar5;
  fVar11 = fVar9 + fVar11;
  if (fVar9 <= fVar7) {
    fVar9 = fVar7;
  }
  fVar8 = (float)piVar5[1];
  if (fVar7 + (float)piVar5[2] <= fVar11) {
    fVar11 = fVar7 + (float)piVar5[2];
  }
  fVar7 = fVar3;
  if (fVar3 <= fVar8) {
    fVar7 = fVar8;
  }
  fVar11 = fVar11 - fVar9;
  if (0.0 <= fVar11) {
    fVar10 = fVar3 + fStack_5c;
    if (fVar8 + (float)piVar5[3] <= fVar3 + fStack_5c) {
      fVar10 = fVar8 + (float)piVar5[3];
    }
    fVar10 = fVar10 - fVar7;
    if (((0.0 <= fVar10) && (0.0 < fVar11)) && (0.0 < fVar10)) {
      puVar6 = (undefined8 *)FUN_1811316e0(0x38);
      *(undefined4 *)(puVar6 + 1) = 0;
      *puVar6 = juce::RenderingHelpers::
                ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion::
                vftable;
      local_68 = fVar9;
      fStack_64 = fVar7;
      fStack_60 = fVar11;
      fStack_5c = fVar10;
      FUN_18129f510(puVar6 + 2,&local_68);
      *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
      local_res8 = puVar6;
      FUN_1804a9960(param_1,&local_res8);
    }
  }
  return;
}



############ FUN_ 1804afb30 size=461 ############

void FUN_1804afb30(undefined8 *param_1,undefined1 (*param_2) [16],undefined1 param_3)

{
  undefined8 *puVar1;
  undefined1 auVar2 [16];
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  byte bVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  undefined8 local_res8;
  undefined1 local_48 [16];
  undefined1 local_38 [32];
  
  if ((param_1[7] == 0) && (param_1[8] == 0)) {
    uVar3 = *(uint *)(param_1 + 6);
    local_48 = *param_2;
    uVar7 = uVar3 >> 0x18;
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar3);
    if (uVar7 < 0xff) {
      if (uVar7 == 0) {
        bVar8 = (byte)(uVar3 >> 0x18);
        local_res8._0_3_ = CONCAT12(bVar8,(ushort)bVar8);
      }
      else {
        local_res8._0_3_ =
             CONCAT12((char)((uVar3 >> 0x10 & 0xff) * uVar7 + 0x7f >> 8),
                      CONCAT11((char)((uVar3 >> 8 & 0xff) * uVar7 + 0x7f >> 8),
                               (char)((uVar3 & 0xff) * uVar7 + 0x7f >> 8)));
      }
      uVar3 = (uint)local_res8;
    }
    (**(code **)(*(longlong *)*param_1 + 0x68))((longlong *)*param_1,param_1,local_48,uVar3,param_3)
    ;
    return;
  }
  auVar2 = *param_2;
  local_48 = auVar2;
  piVar9 = (int *)(**(code **)(*(longlong *)*param_1 + 0x58))((longlong *)*param_1,local_38);
  iVar10 = auVar2._0_4_;
  iVar11 = *piVar9;
  iVar4 = piVar9[1];
  iVar5 = iVar11;
  if (iVar11 < iVar10) {
    iVar5 = iVar10;
  }
  iVar12 = auVar2._4_4_;
  iVar6 = iVar4;
  if (iVar4 < iVar12) {
    iVar6 = iVar12;
  }
  iVar10 = iVar10 + auVar2._8_4_;
  iVar13 = piVar9[2] + iVar11;
  if (iVar10 < piVar9[2] + iVar11) {
    iVar13 = iVar10;
  }
  iVar13 = iVar13 - iVar5;
  if (-1 < iVar13) {
    iVar11 = piVar9[3] + iVar4;
    if (local_48._12_4_ + iVar12 < piVar9[3] + iVar4) {
      iVar11 = local_48._12_4_ + iVar12;
    }
    local_48._12_4_ = iVar11 - iVar6;
    if (-1 < (int)local_48._12_4_) {
      local_48._4_4_ = iVar6;
      local_48._0_4_ = iVar5;
      local_48._8_4_ = iVar13;
      if ((0 < iVar13) && (0 < (int)local_48._12_4_)) {
        local_res8 = (undefined8 *)FUN_1811316e0();
        *(undefined4 *)(local_res8 + 1) = 0;
        *local_res8 = juce::RenderingHelpers::
                      ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::
                      RectangleListRegion::vftable;
        local_res8[2] = 0;
        local_res8[3] = 0;
        if (0 < local_48._12_4_) {
          FUN_18049ba20(local_res8 + 2,8);
          iVar11 = *(int *)((longlong)local_res8 + 0x1c);
          *(int *)((longlong)local_res8 + 0x1c) = iVar11 + 1;
          puVar1 = (undefined8 *)(local_res8[2] + (longlong)iVar11 * 0x10);
          *puVar1 = local_48._0_8_;
          puVar1[1] = local_48._8_8_;
        }
        *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
        FUN_1804a9960(param_1,&local_res8);
      }
    }
  }
  return;
}



############ FUN_ 1804ac3b0 size=115 ############

void FUN_1804ac3b0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x78);
  uVar1 = FUN_18049f9a0(uVar1,*param_1,param_3,param_4,uVar3);
  iVar2 = *(int *)((longlong)param_1 + 0x14) + 1;
  if (*(int *)(param_1 + 2) < iVar2) {
    FUN_18047cb30(param_1 + 1,*(int *)((longlong)param_1 + 0x14) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)((longlong)param_1 + 0x14);
  *(int *)((longlong)param_1 + 0x14) = iVar2 + 1;
  *(undefined8 *)(param_1[1] + (longlong)iVar2 * 8) = uVar1;
  return;
}



############ FUN_ 1804a98b0 size=96 ############

undefined8 * FUN_1804a98b0(longlong param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x38);
  puVar1[1] = 0;
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::EdgeTableRegion::vftable;
  FUN_18129f450(puVar1 + 2,param_1 + 0x10);
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 1804ace60 size=174 ############

undefined8
FUN_1804ace60(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined4 param_5)

{
  longlong *plVar1;
  longlong *plVar2;
  
  plVar2 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar2 + 1) = 0;
  *plVar2 = (longlong)
            juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::EdgeTableRegion::vftable;
  FUN_18129fae0(plVar2 + 2,param_1 + 0x10);
  *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
  (**(code **)(*plVar2 + 0x40))(plVar2,param_2,param_3,param_4,param_5);
  plVar1 = plVar2 + 1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  if ((int)*plVar1 == 0) {
    (**(code **)*plVar2)(plVar2,1);
  }
  return param_2;
}



############ FUN_ 1804acf10 size=159 ############

undefined8 FUN_1804acf10(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  plVar2 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar2 + 1) = 0;
  *plVar2 = (longlong)
            juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::EdgeTableRegion::vftable;
  FUN_18129fae0(plVar2 + 2,param_1 + 0x10);
  *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
  (**(code **)(*plVar2 + 0x38))(plVar2,param_2,param_3,*plVar2,uVar3);
  plVar1 = plVar2 + 1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  if ((int)*plVar1 == 0) {
    (**(code **)*plVar2)(plVar2,1);
  }
  return param_2;
}



############ FUN_ 1804acfb0 size=163 ############

undefined8 FUN_1804acfb0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  plVar2 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar2 + 1) = 0;
  *plVar2 = (longlong)
            juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::EdgeTableRegion::vftable;
  FUN_18129fae0(plVar2 + 2,param_1 + 0x10);
  *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
  (**(code **)(*plVar2 + 0x30))(plVar2,param_2,param_3,param_4,uVar3);
  plVar1 = plVar2 + 1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  if ((int)*plVar1 == 0) {
    (**(code **)*plVar2)(plVar2,1);
  }
  return param_2;
}



############ FUN_ 1804ad2f0 size=96 ############

undefined8 * FUN_1804ad2f0(longlong param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  puVar1[1] = 0;
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::RectangleListRegion::vftable;
  FUN_1804aaeb0(puVar1 + 2,param_1 + 0x10);
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 1804ad950 size=587 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804ad950(longlong *param_1,longlong *param_2)

{
  int iVar1;
  int iVar2;
  void *_Src;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  float *pfVar6;
  undefined8 uVar7;
  float *pfVar8;
  int iVar9;
  undefined8 *local_res8;
  float *local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 uStack_60;
  ulonglong local_58;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  ulonglong local_40;
  
  if (*param_1 != 0) {
    iVar1 = *(int *)((longlong)param_2 + 0xc);
    if (iVar1 == 1) {
      puVar5 = (undefined8 *)*param_2;
      local_78 = (float *)*puVar5;
      uStack_70 = puVar5[1];
      FUN_1804adba0(*(undefined4 *)puVar5,&local_78);
    }
    else {
      if ((((char)param_1[5] == '\0') || ((int)param_1[4] != 0)) ||
         (*(int *)((longlong)param_1 + 0x24) != 0)) {
        if (*(char *)((longlong)param_1 + 0x29) == '\0') {
          local_78 = (float *)0x0;
          uStack_70 = 0;
          _Src = (void *)*param_2;
          iVar9 = 0;
          if (0 < iVar1) {
            FUN_18049ba20(&local_78,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
            iVar9 = uStack_70._4_4_;
          }
          pfVar8 = local_78;
          memcpy(local_78 + (longlong)iVar9 * 4,_Src,(longlong)iVar1 << 4);
          uStack_70 = CONCAT44(iVar9 + iVar1,(undefined4)uStack_70);
          if ((char)param_1[5] == '\0') {
            lVar4 = param_1[1];
            lVar3 = param_1[2];
            local_58 = param_1[3];
            local_68._0_4_ = (undefined4)lVar4;
            local_68._4_4_ = (undefined4)((ulonglong)lVar4 >> 0x20);
            uStack_60._0_4_ = (undefined4)lVar3;
            uStack_60._4_4_ = (undefined4)((ulonglong)lVar3 >> 0x20);
            local_50 = (undefined4)local_68;
            uStack_4c = local_68._4_4_;
            uStack_48 = (undefined4)uStack_60;
            uStack_44 = uStack_60._4_4_;
            local_68 = lVar4;
            uStack_60 = lVar3;
            local_40 = local_58;
            FUN_1804afd00(&local_78,&local_50);
          }
          else {
            iVar2 = *(int *)((longlong)param_1 + 0x24);
            lVar4 = param_1[4];
            pfVar6 = pfVar8 + (longlong)(iVar9 + iVar1) * 4;
            for (; pfVar8 != pfVar6; pfVar8 = pfVar8 + 4) {
              *pfVar8 = (float)(int)lVar4 + *pfVar8;
              pfVar8[1] = (float)iVar2 + pfVar8[1];
            }
          }
          puVar5 = (undefined8 *)FUN_1811316e0(0x38);
          *(undefined4 *)(puVar5 + 1) = 0;
          *puVar5 = juce::RenderingHelpers::
                    ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion
                    ::vftable;
          FUN_18129f7b0(puVar5 + 2,&local_78);
          *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
          local_res8 = puVar5;
          FUN_1804a9960(param_1,&local_res8);
          pfVar8 = local_78;
        }
        else {
          local_68 = _DAT_1824c4780;
          uStack_60 = _UNK_1824c4788;
          local_58 = (ulonglong)DAT_1824c3ea4;
          uVar7 = FUN_1804a9f10(param_2,&local_50);
          FUN_1804ad7b0(param_1,uVar7,&local_68);
          uStack_44 = 0;
          pfVar8 = (float *)CONCAT44(uStack_4c,local_50);
        }
                    /* WARNING: Subroutine does not return */
        free(pfVar8);
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x38);
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::RenderingHelpers::
                ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>::EdgeTableRegion::
                vftable;
      FUN_18129f7b0(puVar5 + 2,param_2);
      *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
      local_res8 = puVar5;
      FUN_1804a9960(param_1,&local_res8);
    }
  }
  return;
}



############ FUN_ 1804d0350 size=509 ############

void FUN_1804d0350(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  DWORD DVar4;
  DWORD DVar5;
  undefined8 *puVar6;
  longlong lVar7;
  int iVar8;
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  DVar4 = timeGetTime();
  if (DVar4 < DAT_1826737fc) {
    if (DVar4 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar4;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar4;
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x10);
  *(undefined4 *)(puVar6 + 1) = 0;
  *puVar6 = juce::Timer::TimerThread::CallTimersMessage::vftable;
  LOCK();
  *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
  UNLOCK();
LAB_1804d03e0:
  do {
    while( true ) {
      if (*(int *)(param_1 + 0x1b8) != 0) {
        LOCK();
        piVar1 = (int *)(puVar6 + 1);
        iVar8 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)*puVar6)(puVar6,1,param_3,param_4,uVar9);
        }
        return;
      }
      DVar5 = timeGetTime();
      if (DVar5 < DAT_1826737fc) {
        if (DVar5 < DAT_1826737fc - 1000) {
          LOCK();
          UNLOCK();
          DAT_1826737fc = DVar5;
        }
      }
      else {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DVar5;
      }
      iVar8 = (DVar5 - DVar4) + -1;
      if (DVar4 <= DVar5) {
        iVar8 = DVar5 - DVar4;
      }
      EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673a78);
      lVar2 = *(longlong *)(param_1 + 0x220);
      DVar4 = DVar5;
      if (*(longlong *)(param_1 + 0x218) != lVar2) break;
      LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a78);
      iVar8 = 1000;
LAB_1804d0464:
      if (100 < iVar8) {
        iVar8 = 100;
      }
      FUN_181215c90(param_1 + 0xf8,iVar8);
    }
    for (lVar7 = *(longlong *)(param_1 + 0x218); lVar7 != lVar2; lVar7 = lVar7 + 0x10) {
      *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) - iVar8;
    }
    iVar8 = *(int *)(*(longlong *)(param_1 + 0x218) + 8);
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673a78);
    if ((0 < iVar8) || (cVar3 = FUN_181215c90(param_1 + 0x230,0), cVar3 != '\0')) {
      if (0 < iVar8) goto LAB_1804d0464;
      FUN_181215c90(param_1 + 0xf8,1);
      goto LAB_1804d03e0;
    }
    FUN_1812a6720(puVar6);
    cVar3 = FUN_181215c90(param_1 + 0x230,300);
    if (cVar3 == '\0') {
      FUN_1812a6720(puVar6);
    }
  } while( true );
}



############ FUN_ 1812a5530 size=170 ############

void FUN_1812a5530(longlong *param_1)

{
  undefined8 uVar1;
  
  FUN_18122b1d0(param_1[0xb]);
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  if (param_1[7] != 0) {
    FUN_1812388c0();
  }
  if (param_1[8] != 0) {
    FUN_181217150();
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  FUN_18122afa0(param_1[0xb],4000);
  FUN_1812a54d0(param_1);
  if ((char)param_1[9] != '\0') {
    *(undefined1 *)(param_1 + 9) = 0;
    if (*(char *)((longlong)param_1 + 0x49) != '\0') {
      uVar1 = FUN_1811316e0(0x20);
      uVar1 = FUN_1804d0b70(uVar1,param_1,0);
      FUN_1812a6720(uVar1);
      return;
    }
    (**(code **)(*param_1 + 0x10))(param_1);
  }
  return;
}



############ FUN_ 1804d1aa0 size=178 ############

longlong * FUN_1804d1aa0(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  if (param_2 != 0) {
    if (*(longlong *)(param_2 + 0x68) == 0) {
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::WeakReference<juce::InterprocessConnection,juce::ReferenceCountedObject>::
                SharedPointer::vftable;
      puVar5[2] = param_2;
      if (*(undefined8 **)(param_2 + 0x68) != puVar5) {
        LOCK();
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        UNLOCK();
        puVar3 = *(undefined8 **)(param_2 + 0x68);
        *(undefined8 **)(param_2 + 0x68) = puVar5;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
    }
    lVar4 = *(longlong *)(param_2 + 0x68);
    *param_1 = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
      UNLOCK();
    }
    return param_1;
  }
  *param_1 = 0;
  return param_1;
}



############ FUN_ 1804d1550 size=226 ############

LRESULT FUN_1804d1550(HWND param_1,UINT param_2,WPARAM param_3,longlong *param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  LRESULT LVar4;
  
  if (param_1 == DAT_1826736b0) {
    if (param_2 == 0x47b) {
      if (DAT_182673ad8 != 0) {
        FUN_1804d17d0();
      }
    }
    else {
      if (param_2 != 0x4a) {
        if ((param_2 == 0x1a) && (DAT_1826736f0 != (code *)0x0)) {
          (*DAT_1826736f0)();
        }
        goto LAB_1804d160b;
      }
      if ((param_4 != (longlong *)0x0) && (*param_4 == 0xc403)) {
        puVar3 = (undefined8 *)FUN_1811316e0(0x18);
        uVar1 = *(uint *)(param_4 + 1);
        lVar2 = param_4[2];
        *(undefined4 *)(puVar3 + 1) = 0;
        *puVar3 = `private:_static_void___cdecl_juce::InternalMessageQueue::handleBroadcastMessage(tagCOPYDATASTRUCT_const*___ptr64)'
                  ::__l5::BroadcastMessage::vftable;
        FUN_18049ce10(puVar3 + 2,lVar2,uVar1 >> 2);
        FUN_1812a6720(puVar3);
        return 0;
      }
    }
    LVar4 = 0;
  }
  else {
LAB_1804d160b:
    LVar4 = DefWindowProcW(param_1,param_2,param_3,(LPARAM)param_4);
  }
  return LVar4;
}



############ FUN_ 1812a5a90 size=347 ############

void FUN_1812a5a90(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x18));
  iVar5 = *(int *)(param_1 + 0x14) + -1;
  lVar8 = (longlong)iVar5;
  if (-1 < iVar5) {
    do {
      puVar6 = (undefined8 *)FUN_1811316e0(0x28);
      uVar2 = *(undefined8 *)(*(longlong *)(param_1 + 8) + lVar8 * 8);
      *(undefined4 *)(puVar6 + 1) = 0;
      *puVar6 = juce::ActionBroadcaster::ActionMessage::vftable;
      if (param_1 == 0) {
        puVar6[2] = 0;
      }
      else {
        if (*(longlong *)(param_1 + 0x48) == 0) {
          puVar7 = (undefined8 *)FUN_1811316e0(0x18);
          *(undefined4 *)(puVar7 + 1) = 0;
          *puVar7 = juce::WeakReference<juce::ActionBroadcaster,juce::ReferenceCountedObject>::
                    SharedPointer::vftable;
          puVar7[2] = param_1;
          if (*(undefined8 **)(param_1 + 0x48) != puVar7) {
            LOCK();
            *(int *)(puVar7 + 1) = *(int *)(puVar7 + 1) + 1;
            UNLOCK();
            puVar3 = *(undefined8 **)(param_1 + 0x48);
            *(undefined8 **)(param_1 + 0x48) = puVar7;
            if (puVar3 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar3 + 1);
              iVar5 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar5 == 1) {
                (**(code **)*puVar3)(puVar3,1,param_3,param_4,uVar9);
              }
            }
          }
        }
        lVar4 = *(longlong *)(param_1 + 0x48);
        puVar6[2] = lVar4;
        if (lVar4 != 0) {
          LOCK();
          *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
          UNLOCK();
        }
      }
      lVar4 = *param_2;
      puVar6[3] = lVar4;
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
        UNLOCK();
      }
      puVar6[4] = uVar2;
      FUN_1812a6720(puVar6);
      lVar8 = lVar8 + -1;
    } while (-1 < lVar8);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812a5be4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x18));
  return;
}



############ FUN_ 18051b750 size=238 ############

longlong * FUN_18051b750(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  longlong lVar5;
  
  if (param_2 == 0) {
    lVar5 = 0;
  }
  else {
    if (*(longlong *)(param_2 + 0x120) == 0) {
      puVar4 = (undefined8 *)FUN_1811316e0();
      *(undefined4 *)(puVar4 + 1) = 0;
      *puVar4 = juce::WeakReference<juce::LookAndFeel,juce::ReferenceCountedObject>::SharedPointer::
                vftable;
      puVar4[2] = param_2;
      if (*(undefined8 **)(param_2 + 0x120) != puVar4) {
        LOCK();
        *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
        UNLOCK();
        puVar3 = *(undefined8 **)(param_2 + 0x120);
        *(undefined8 **)(param_2 + 0x120) = puVar4;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
    }
    lVar5 = *(longlong *)(param_2 + 0x120);
    if (lVar5 != 0) {
      LOCK();
      *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
      UNLOCK();
    }
  }
  puVar4 = (undefined8 *)*param_1;
  *param_1 = lVar5;
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  return param_1;
}



############ FUN_ 1804d8e40 size=263 ############

void FUN_1804d8e40(longlong param_1)

{
  undefined1 uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 local_68;
  undefined8 local_60;
  void *local_58 [3];
  
  (**(code **)(*(longlong *)(param_1 + 0x48) + 0x58))((longlong *)(param_1 + 0x48),0);
  puVar3 = (undefined8 *)FUN_1811316e0(0x48);
  local_68 = 0;
  local_60 = 0;
  FUN_18048c4c0(&local_68,*(undefined8 *)(param_1 + 0x4d8),*(undefined4 *)(param_1 + 0x4e4));
  uVar1 = *(undefined1 *)(param_1 + 0xfa4);
  lVar2 = *(longlong *)(param_1 + 0x18);
  uVar4 = *(undefined8 *)(param_1 + 0x20);
  *puVar3 = *(undefined8 *)(lVar2 + 200);
  puVar3[1] = uVar4;
  puVar3[2] = 0;
  puVar3[3] = 0;
  lVar2 = *(longlong *)(lVar2 + 0xd0);
  puVar3[4] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  puVar3[5] = 0;
  puVar3[6] = 0;
  puVar3[7] = 0;
  *(undefined1 *)(puVar3 + 8) = uVar1;
  FUN_18123e3a0(&local_68);
  uVar4 = (**(code **)(*(longlong *)puVar3[1] + 0x50))
                    ((longlong *)puVar3[1],local_58,&local_68,1,*(undefined1 *)(puVar3 + 8));
  FUN_1812b9c40(puVar3,uVar4);
  FUN_180488c50(local_58);
                    /* WARNING: Subroutine does not return */
  free(local_58[0]);
}



############ FUN_ 18122a910 size=371 ############

void FUN_18122a910(longlong param_1,int param_2,longlong param_3)

{
  int iVar1;
  int iVar2;
  undefined8 *puVar3;
  void *pvVar4;
  uint *_Memory;
  ulonglong uVar5;
  int iVar6;
  ulonglong uVar7;
  uint uVar8;
  longlong local_res18 [2];
  
  iVar6 = 1;
  if (1 < param_2) {
    iVar6 = param_2;
  }
  uVar7 = 0;
  local_res18[0] = param_3;
  do {
    iVar6 = iVar6 + -1;
    if (iVar6 < 0) {
      puVar3 = *(undefined8 **)(param_1 + 0x10);
      uVar5 = (ulonglong)((longlong)(puVar3 + *(int *)(param_1 + 0x1c)) + (7 - (longlong)puVar3)) >>
              3;
      if (puVar3 + *(int *)(param_1 + 0x1c) < puVar3) {
        uVar5 = uVar7;
      }
      if (uVar5 != 0) {
        do {
          FUN_18122b350(*puVar3);
          puVar3 = puVar3 + 1;
          uVar7 = uVar7 + 1;
        } while (uVar7 != uVar5);
      }
      return;
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x210);
    FUN_18049c4e0(local_res18,&DAT_1824968b4);
    FUN_18122b770(puVar3,local_res18);
    _Memory = (uint *)(local_res18[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar8 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    *puVar3 = juce::ThreadPool::ThreadPoolThread::vftable;
    puVar3[0x40] = 0;
    puVar3[0x41] = param_1;
    iVar1 = *(int *)(param_1 + 0x1c);
    iVar2 = iVar1 + 1;
    if ((int)*(uint *)(param_1 + 0x18) < iVar2) {
      if (iVar2 < 0) {
        iVar2 = iVar1 + 2;
      }
      uVar8 = iVar1 + 9 + (iVar2 >> 1) & 0xfffffff8;
      if (*(uint *)(param_1 + 0x18) != uVar8) {
        pvVar4 = *(void **)(param_1 + 0x10);
        if ((int)uVar8 < 1) {
                    /* WARNING: Subroutine does not return */
          free(pvVar4);
        }
        if (pvVar4 == (void *)0x0) {
          pvVar4 = malloc((longlong)(int)uVar8 * 8);
          *(void **)(param_1 + 0x10) = pvVar4;
        }
        else {
          pvVar4 = realloc(pvVar4,(longlong)(int)uVar8 * 8);
          *(void **)(param_1 + 0x10) = pvVar4;
        }
      }
      *(uint *)(param_1 + 0x18) = uVar8;
    }
    iVar2 = *(int *)(param_1 + 0x1c);
    *(int *)(param_1 + 0x1c) = iVar2 + 1;
    *(undefined8 **)(*(longlong *)(param_1 + 0x10) + (longlong)iVar2 * 8) = puVar3;
  } while( true );
}



############ FUN_ 1812d3dc0 size=3438 ############

void FUN_1812d3dc0(longlong param_1,char param_2)

{
  uint *_Memory;
  float fVar1;
  uint uVar2;
  byte bVar3;
  double dVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  int iVar7;
  longlong lVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  int *piVar11;
  longlong lVar12;
  int iVar13;
  uint *_Memory_00;
  byte *pbVar14;
  longlong *plVar15;
  longlong *plVar16;
  int iVar17;
  int iVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  int iVar21;
  ulonglong uVar22;
  float fVar23;
  float fVar24;
  undefined8 uVar25;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar26 [16];
  ulonglong local_res8;
  undefined1 local_res20 [8];
  longlong local_1f8;
  undefined1 *local_1f0;
  undefined4 local_1e8;
  undefined4 local_1e4;
  undefined8 local_1e0;
  int *local_1d8;
  undefined8 local_1d0;
  longlong local_1c8;
  byte *local_1c0;
  undefined4 local_1b8;
  int iStack_1b4;
  undefined4 local_1b0;
  int iStack_1ac;
  undefined4 local_1a8;
  int iStack_1a4;
  int local_1a0;
  int iStack_19c;
  undefined4 local_198;
  int iStack_194;
  int local_190;
  int iStack_18c;
  int local_188;
  int iStack_184;
  int local_180;
  int iStack_17c;
  undefined8 local_178;
  undefined4 uStack_170;
  undefined4 uStack_16c;
  undefined8 local_168;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined8 *local_158;
  double local_150;
  double local_148;
  double local_140;
  double local_138;
  undefined8 local_130;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined1 local_c8 [16];
  undefined1 local_b8 [16];
  undefined1 local_a8 [16];
  undefined1 local_98 [16];
  undefined1 local_88 [16];
  
  local_130 = 0xfffffffffffffffe;
  lVar8 = FUN_18134adf0();
  plVar15 = (longlong *)(lVar8 + 0x38);
  (**(code **)(*plVar15 + 0x38))(plVar15,&local_1f8);
  plVar9 = (longlong *)FUN_181252280(&local_1f8);
  fVar23 = (float)(**(code **)(*plVar9 + 0x28))(plVar9,param_1 + 8);
  iVar18 = 0;
  if (*(float *)(local_1f8 + 0x30) != 0.0) {
    pbVar14 = *(byte **)(param_1 + 8);
    iVar13 = iVar18;
    while( true ) {
      while( true ) {
        bVar3 = *pbVar14;
        pbVar14 = pbVar14 + 1;
        if (-1 < (char)bVar3) break;
        if ((*pbVar14 & 0xc0) != 0x80) goto LAB_1812d3e77;
        do {
          pbVar14 = pbVar14 + 1;
        } while ((*pbVar14 & 0xc0) == 0x80);
        iVar13 = iVar13 + 1;
      }
      if (bVar3 == 0) break;
LAB_1812d3e77:
      iVar13 = iVar13 + 1;
    }
    fVar23 = fVar23 + (float)iVar13 * *(float *)(local_1f8 + 0x30);
  }
  fVar23 = ceilf(fVar23 * *(float *)(local_1f8 + 0x28) * *(float *)(local_1f8 + 0x2c));
  plVar9 = (longlong *)FUN_181252280(&local_1f8);
  uVar25 = (**(code **)(*plVar9 + 0x28))(plVar9,param_1 + 0xc0);
  auVar26._8_4_ = (int)extraout_XMM0_Qb;
  auVar26._0_8_ = uVar25;
  auVar26._12_4_ = (int)((ulonglong)extraout_XMM0_Qb >> 0x20);
  if (*(float *)(local_1f8 + 0x30) != 0.0) {
    pbVar14 = *(byte **)(param_1 + 0xc0);
    while( true ) {
      while( true ) {
        bVar3 = *pbVar14;
        pbVar14 = pbVar14 + 1;
        if (-1 < (char)bVar3) break;
        if ((*pbVar14 & 0xc0) != 0x80) goto LAB_1812d3f17;
        do {
          pbVar14 = pbVar14 + 1;
        } while ((*pbVar14 & 0xc0) == 0x80);
        iVar18 = iVar18 + 1;
      }
      if (bVar3 == 0) break;
LAB_1812d3f17:
      iVar18 = iVar18 + 1;
    }
    auVar26._0_4_ = (float)uVar25 + (float)iVar18 * *(float *)(local_1f8 + 0x30);
  }
  fVar1 = *(float *)(local_1f8 + 0x28);
  fVar24 = ceilf(fVar1 * auVar26._0_4_ * *(float *)(local_1f8 + 0x2c));
  iVar18 = (int)fVar24;
  if ((int)fVar24 < (int)fVar23) {
    iVar18 = (int)fVar23;
  }
  sqrtf((float)iVar18 * fVar1);
  if (*(longlong *)(param_1 + 0x18) == 0) {
    FUN_181344bc0(param_1,local_c8);
  }
  fVar23 = DAT_1824c3df0;
  iVar13 = 0;
  local_1f0 = &DAT_1821dbf98;
  local_1e8 = 0;
  local_1e4 = 1;
  local_1e0 = 1;
  local_1d8 = (int *)0x0;
  local_1d0 = 0;
  uVar25 = (**(code **)(*plVar15 + 0x30))(plVar15,&local_158);
  FUN_181232d30(&local_1f0,param_1 + 8);
  pbVar14 = *(byte **)(param_1 + 8);
  uVar20 = 0;
  iVar18 = 0;
  uVar22 = uVar20;
  while( true ) {
    while( true ) {
      bVar3 = *pbVar14;
      pbVar14 = pbVar14 + 1;
      if (-1 < (char)bVar3) break;
      if ((*pbVar14 & 0xc0) != 0x80) goto LAB_1812d4028;
      do {
        pbVar14 = pbVar14 + 1;
      } while ((*pbVar14 & 0xc0) == 0x80);
      uVar22 = uVar22 + 1;
    }
    if (bVar3 == 0) break;
LAB_1812d4028:
    uVar22 = uVar22 + 1;
  }
  FUN_1812554b0(&local_1d8,uVar22 & 0xffffffff,uVar25,0);
  if (local_158 != (undefined8 *)0x0) {
    LOCK();
    piVar11 = (int *)(local_158 + 1);
    iVar21 = *piVar11;
    *piVar11 = *piVar11 + -1;
    UNLOCK();
    if (iVar21 == 1) {
      (**(code **)*local_158)(local_158,1);
    }
  }
  if (**(char **)(param_1 + 0xc0) != '\0') {
    FUN_18049c4e0(&local_1c8,&DAT_1821e32bc);
    puVar10 = (undefined8 *)FUN_181232d30(&local_1c8,param_1 + 0xc0);
    local_1c0 = (byte *)*puVar10;
    _Memory = (uint *)(local_1c0 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    _Memory_00 = (uint *)(local_1c8 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory_00;
      *_Memory_00 = *_Memory_00 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
    }
    FUN_181232d30(&local_1f0,&local_1c0);
    pbVar14 = local_1c0;
    uVar22 = uVar20;
    while( true ) {
      while( true ) {
        bVar3 = *pbVar14;
        pbVar14 = pbVar14 + 1;
        if (-1 < (char)bVar3) break;
        if ((*pbVar14 & 0xc0) != 0x80) goto LAB_1812d4128;
        do {
          pbVar14 = pbVar14 + 1;
        } while ((*pbVar14 & 0xc0) == 0x80);
        uVar22 = uVar22 + 1;
      }
      if (bVar3 == 0) break;
LAB_1812d4128:
      uVar22 = uVar22 + 1;
    }
    FUN_1812554b0(&local_1d8,uVar22,&local_1f8,0);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  piVar11 = (int *)FUN_18134a8d0(param_1,local_res20,0x1001810,0);
  iVar21 = *piVar11;
  iVar7 = iVar18;
  if (local_1d0._4_4_ != 0) {
    iVar7 = local_1d8[(longlong)(local_1d0._4_4_ + -1) * 6 + 1];
  }
  local_1b8 = 0;
  iStack_1b4 = iVar18;
  if (0 < iVar7) {
    iStack_1b4 = iVar7;
  }
  if (local_1d0._4_4_ != 0) {
    iVar18 = local_1d8[(longlong)(local_1d0._4_4_ + -1) * 6 + 1];
  }
  local_1b0 = 0;
  iStack_1ac = 0;
  if (0 < iVar18) {
    iStack_1ac = iVar18;
  }
  iVar18 = iStack_1b4;
  if (iStack_1ac < iStack_1b4) {
    iVar18 = iStack_1ac;
  }
  local_1a8 = 0;
  iVar7 = 0;
  if (0 < iVar18) {
    iVar7 = iVar18;
  }
  iStack_1a4 = iVar7;
  if (iVar7 != 0) {
    FUN_181255950(&local_1d8,0);
    FUN_181255950(&local_1d8,iVar7);
  }
  for (piVar11 = local_1d8; piVar11 != local_1d8 + (longlong)local_1d0._4_4_ * 6;
      piVar11 = piVar11 + 6) {
    if (0 < piVar11[1]) {
      if (iVar7 <= *piVar11) break;
      piVar11[4] = iVar21;
    }
  }
  FUN_181255700(&local_1d8);
  if (*(int *)(param_1 + 0xe8) == 0) {
    local_1e4 = 0xc;
    FUN_18124e270(param_1 + 200,&local_1f0);
  }
  else {
    local_1e4 = 9;
    FUN_18124e270(param_1 + 200,&local_1f0);
    iVar13 = 0x50;
  }
  iVar13 = (int)*(float *)(param_1 + 0xd8) + 0x28 + iVar13;
  iVar18 = 0x15e;
  if (0x15e < iVar13) {
    iVar18 = iVar13;
  }
  if (*(longlong *)(param_1 + 0x18) == 0) {
    lVar8 = FUN_181344bc0(param_1,local_b8);
    iVar13 = *(int *)(lVar8 + 8);
  }
  else {
    iVar13 = *(int *)(*(longlong *)(param_1 + 0x18) + 0x28);
  }
  iVar13 = (int)((float)iVar13 * fVar23);
  if (iVar13 < iVar18) {
    iVar18 = iVar13;
  }
  iVar21 = (int)*(float *)(param_1 + 0xdc) + 0x28;
  iVar13 = 0x28;
  plVar15 = *(longlong **)(param_1 + 0x140);
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x14c)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x14c) < plVar15) {
    uVar22 = uVar20;
  }
  uVar19 = uVar20;
  if (uVar22 != 0) {
    do {
      iVar13 = iVar13 + 0x10 + *(int *)(*plVar15 + 0x28);
      plVar15 = plVar15 + 1;
      uVar19 = uVar19 + 1;
    } while (uVar19 != uVar22);
  }
  if (iVar13 < iVar18) {
    iVar13 = iVar18;
  }
  iVar18 = (*(int *)(param_1 + 0x17c) + *(int *)(param_1 + 0x16c) + *(int *)(param_1 + 0x15c)) *
           0x32 + iVar21;
  if ((*(int *)(param_1 + 0x14c) != 0) && (**(longlong **)(param_1 + 0x140) != 0)) {
    iVar18 = iVar18 + *(int *)(**(longlong **)(param_1 + 0x140) + 0x2c) + 0x14;
  }
  plVar15 = *(longlong **)(param_1 + 0x180);
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x18c)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x18c) < plVar15) {
    uVar22 = uVar20;
  }
  uVar19 = uVar20;
  if (uVar22 != 0) {
    do {
      lVar8 = *plVar15;
      iVar7 = (*(int *)(lVar8 + 0x28) * 100) / 0x50;
      if (iVar13 < iVar7) {
        iVar13 = iVar7;
      }
      iVar18 = iVar18 + *(int *)(lVar8 + 0x2c) + 10;
      if (**(char **)(lVar8 + 8) != '\0') {
        iVar18 = iVar18 + 0x12;
      }
      plVar15 = plVar15 + 1;
      uVar19 = uVar19 + 1;
    } while (uVar19 != uVar22);
  }
  plVar15 = *(longlong **)(param_1 + 400);
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x19c)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x19c) < plVar15) {
    uVar22 = uVar20;
  }
  if (uVar22 != 0) {
    do {
      if (iVar13 < *(int *)(*plVar15 + 800)) {
        iVar13 = *(int *)(*plVar15 + 800);
      }
      plVar15 = plVar15 + 1;
      uVar20 = uVar20 + 1;
    } while (uVar20 != uVar22);
  }
  if (*(longlong *)(param_1 + 0x18) == 0) {
    uStack_16c = *(undefined4 *)(param_1 + 0x2c);
    uStack_170 = *(undefined4 *)(param_1 + 0x28);
    local_178 = 0;
    uVar6 = 0;
    uVar25 = local_128;
    uVar5 = uStack_120;
    uStack_120 = *(undefined8 *)(param_1 + 0x28);
    for (lVar8 = param_1; local_128 = uVar6, lVar8 != 0; lVar8 = *(longlong *)(lVar8 + 0x18)) {
      puVar10 = (undefined8 *)FUN_18051e4b0(local_a8,lVar8,&local_128);
      uVar6 = *puVar10;
      uVar25 = local_128;
      uVar5 = uStack_120;
      uStack_120 = puVar10[1];
    }
    local_118 = local_128;
    uStack_110 = uStack_120;
    local_108 = local_128;
    uStack_100 = uStack_120;
    if (DAT_182673700 == 0) {
      local_128 = uVar25;
      uStack_120 = uVar5;
      local_108 = local_118;
      uStack_100 = uStack_110;
      uVar25 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar25);
      uVar25 = local_128;
      uVar5 = uStack_120;
    }
    uStack_120 = uVar5;
    local_128 = uVar25;
    lVar8 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),&local_108,0);
    iVar7 = *(int *)(lVar8 + 0x1c);
  }
  else {
    iVar7 = *(int *)(*(longlong *)(param_1 + 0x18) + 0x28);
  }
  fVar1 = DAT_1824c3e28;
  iVar7 = (int)((float)iVar7 * fVar23);
  if (iVar7 < iVar13) {
    iVar13 = iVar7;
  }
  plVar15 = *(longlong **)(param_1 + 400);
  uVar20 = 0;
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x19c)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x19c) < plVar15) {
    uVar22 = uVar20;
  }
  if (uVar22 != 0) {
    fVar23 = (float)iVar13 * DAT_1824c3e28;
    do {
      lVar8 = *plVar15;
      FUN_18050beb0(lVar8,(int)fVar23);
      iVar18 = iVar18 + 10 + *(int *)(lVar8 + 0x2c);
      plVar15 = plVar15 + 1;
      uVar20 = uVar20 + 1;
    } while (uVar20 != uVar22);
  }
  if (*(longlong *)(param_1 + 0x18) == 0) {
    uStack_15c = *(undefined4 *)(param_1 + 0x2c);
    uStack_160 = *(undefined4 *)(param_1 + 0x28);
    local_168 = 0;
    uVar6 = 0;
    uVar25 = local_f8;
    uVar5 = uStack_f0;
    uStack_f0 = *(undefined8 *)(param_1 + 0x28);
    for (lVar8 = param_1; local_f8 = uVar6, lVar8 != 0; lVar8 = *(longlong *)(lVar8 + 0x18)) {
      puVar10 = (undefined8 *)FUN_18051e4b0(local_98,lVar8,&local_f8);
      uVar6 = *puVar10;
      uVar25 = local_f8;
      uVar5 = uStack_f0;
      uStack_f0 = puVar10[1];
    }
    local_e8 = local_f8;
    uStack_e0 = uStack_f0;
    local_d8 = local_f8;
    uStack_d0 = uStack_f0;
    if (DAT_182673700 == 0) {
      local_f8 = uVar25;
      uStack_f0 = uVar5;
      local_d8 = local_e8;
      uStack_d0 = uStack_e0;
      uVar25 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar25);
      uVar25 = local_f8;
      uVar5 = uStack_f0;
    }
    uStack_f0 = uVar5;
    local_f8 = uVar25;
    lVar8 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),&local_d8,0);
    iVar7 = SUB164(*(undefined1 (*) [16])(lVar8 + 0x14),0xc);
  }
  else {
    iVar7 = *(int *)(*(longlong *)(param_1 + 0x18) + 0x2c);
  }
  iVar17 = iVar7 + -0x32;
  if (iVar18 < iVar7 + -0x32) {
    iVar17 = iVar18;
  }
  if (param_2 != '\0') {
    if (iVar13 < *(int *)(param_1 + 0x28)) {
      iVar13 = *(int *)(param_1 + 0x28);
    }
    if (iVar17 < *(int *)(param_1 + 0x2c)) {
      iVar17 = *(int *)(param_1 + 0x2c);
    }
  }
  if ((*(byte *)(param_1 + 0xa8) >> 1 & 1) == 0) {
    FUN_1812cbe70(param_1,*(undefined8 *)(param_1 + 0x1d0),iVar13,iVar17);
  }
  else {
    local_88 = *(undefined1 (*) [16])(param_1 + 0x20);
    iStack_184 = local_88._4_4_ + (local_88._12_4_ - iVar17) / 2;
    local_188 = (local_88._8_4_ - iVar13) / 2 + local_88._0_4_;
    local_180 = iVar13;
    iStack_17c = iVar17;
    FUN_18134bfe0(param_1,local_188,iStack_184,iVar13,iVar17);
  }
  *(undefined4 *)(param_1 + 0x130) = 10;
  *(undefined4 *)(param_1 + 0x134) = 10;
  *(int *)(param_1 + 0x138) = iVar13 + -0x14;
  *(int *)(param_1 + 0x13c) = iVar17 + -10;
  dVar4 = DAT_1824c4520;
  fVar23 = DAT_1824c3e7c;
  iVar18 = -0x10;
  plVar15 = *(longlong **)(param_1 + 0x140);
  uVar20 = 0;
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x14c)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x14c) < plVar15) {
    uVar22 = uVar20;
  }
  uVar19 = uVar20;
  if (uVar22 != 0) {
    do {
      iVar18 = iVar18 + 0x10 + *(int *)(*plVar15 + 0x28);
      plVar15 = plVar15 + 1;
      uVar19 = uVar19 + 1;
    } while (uVar19 != uVar22);
  }
  iVar13 = (iVar13 - iVar18) / 2;
  iVar18 = (int)((float)*(int *)(param_1 + 0x2c) * DAT_1824c3e7c);
  plVar15 = *(longlong **)(param_1 + 0x140);
  local_res8 = 0;
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x14c)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x14c) < plVar15) {
    uVar22 = uVar20;
  }
  if (uVar22 != 0) {
    do {
      lVar8 = *plVar15;
      local_150 = (double)((float)*(int *)(param_1 + 0x2c) * fVar23) + dVar4;
      iVar7 = local_150._0_4_ - *(int *)(lVar8 + 0x2c);
      local_1a0 = iVar13;
      iStack_19c = iVar7;
      FUN_18134bfe0(lVar8,iVar13,iVar7,*(undefined4 *)(lVar8 + 0x28),*(int *)(lVar8 + 0x2c));
      if (iVar7 < iVar18) {
        iVar18 = iVar7;
      }
      iVar13 = iVar13 + *(int *)(lVar8 + 0x28) + 0x10;
      FUN_181344f60(lVar8,0);
      plVar15 = plVar15 + 1;
      local_res8 = local_res8 + 1;
    } while (local_res8 != uVar22);
  }
  fVar23 = DAT_1824c3cb8;
  uVar20 = 0;
  plVar15 = *(longlong **)(param_1 + 0x1a0);
  uVar22 = (ulonglong)((longlong)(plVar15 + *(int *)(param_1 + 0x1ac)) + (7 - (longlong)plVar15)) >>
           3;
  if (plVar15 + *(int *)(param_1 + 0x1ac) < plVar15) {
    uVar22 = uVar20;
  }
  if (uVar22 != 0) {
    do {
      lVar8 = *plVar15;
      iVar18 = 0x16;
      lVar12 = __RTDynamicCast(lVar8,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::ComboBox::RTTI_Type_Descriptor,0);
      plVar9 = *(longlong **)(param_1 + 0x160);
      for (plVar16 = plVar9; plVar16 != plVar9 + *(int *)(param_1 + 0x16c); plVar16 = plVar16 + 1) {
        if (lVar12 == *plVar16) {
          if ((-1 < (int)((longlong)plVar16 - (longlong)plVar9 >> 3)) &&
             (puVar10 = (undefined8 *)FUN_181249970(param_1 + 0x1c0), *(char *)*puVar10 != '\0')) {
            iVar21 = iVar21 + 0x12;
          }
          break;
        }
      }
      lVar12 = __RTDynamicCast(lVar8,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::TextEditor::RTTI_Type_Descriptor,0);
      plVar9 = *(longlong **)(param_1 + 0x150);
      for (plVar16 = plVar9; plVar16 != plVar9 + *(int *)(param_1 + 0x15c); plVar16 = plVar16 + 1) {
        if (lVar12 == *plVar16) {
          if ((-1 < (int)((longlong)plVar16 - (longlong)plVar9 >> 3)) &&
             (puVar10 = (undefined8 *)FUN_181249970(param_1 + 0x1b0), *(char *)*puVar10 != '\0')) {
            iVar21 = iVar21 + 0x12;
          }
          break;
        }
      }
      plVar16 = *(longlong **)(param_1 + 0x180);
      plVar9 = plVar16 + *(int *)(param_1 + 0x18c);
      for (; plVar16 != plVar9; plVar16 = plVar16 + 1) {
        if (lVar8 == *plVar16) {
          if (**(char **)(lVar8 + 8) != '\0') {
            iVar21 = iVar21 + 0x12;
          }
          local_148 = (double)((float)*(int *)(param_1 + 0x28) * fVar23) + dVar4;
          local_198 = SUB84(local_148,0);
          iStack_194 = iVar21;
          FUN_18134bfe0(lVar8,(ulonglong)local_148 & 0xffffffff,iVar21,*(undefined4 *)(lVar8 + 0x28)
                        ,*(undefined4 *)(lVar8 + 0x2c));
          iVar18 = *(int *)(lVar8 + 0x2c);
          goto LAB_1812d4a4c;
        }
      }
      plVar16 = *(longlong **)(param_1 + 400);
      plVar9 = plVar16 + *(int *)(param_1 + 0x19c);
      for (; plVar16 != plVar9; plVar16 = plVar16 + 1) {
        if (lVar8 == *plVar16) {
          local_190 = (*(int *)(param_1 + 0x28) - *(int *)(lVar8 + 0x28)) / 2;
          iStack_18c = iVar21;
          FUN_18134bfe0(lVar8,local_190,iVar21,*(int *)(lVar8 + 0x28),*(undefined4 *)(lVar8 + 0x2c))
          ;
          iVar18 = *(int *)(lVar8 + 0x2c);
          goto LAB_1812d4a4c;
        }
      }
      local_140 = (double)((float)*(int *)(param_1 + 0x28) * fVar1) + dVar4;
      local_138 = (double)((float)*(int *)(param_1 + 0x28) * fVar23) + dVar4;
      FUN_18134bfe0(lVar8,(ulonglong)local_138 & 0xffffffff,iVar21,(ulonglong)local_140 & 0xffffffff
                    ,0x16);
LAB_1812d4a4c:
      iVar21 = iVar21 + 10 + iVar18;
      plVar15 = plVar15 + 1;
      uVar20 = uVar20 + 1;
    } while (uVar20 != uVar22);
  }
  *(byte *)(param_1 + 0xa8) =
       *(byte *)(param_1 + 0xa8) ^
       ((*(int *)(param_1 + 0x4c) == 0) << 5 ^ *(byte *)(param_1 + 0xa8)) & 0x20;
  FUN_1804aed10(&local_1d8);
                    /* WARNING: Subroutine does not return */
  free(local_1d8);
}



############ FUN_ 18124b8d0 size=335 ############

undefined8 FUN_18124b8d0(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  int iVar2;
  undefined8 uVar3;
  longlong lVar4;
  int iVar5;
  ulonglong in_stack_ffffffffffffffc8;
  
  iVar2 = *(int *)(param_2 + 0x24);
  iVar5 = 0;
  if (0 < iVar2) {
    do {
      uVar3 = FUN_181252280(*(longlong *)(param_2 + 0x18) + ((longlong)iVar5 * 3 + 1) * 8);
      in_stack_ffffffffffffffc8 = in_stack_ffffffffffffffc8 & 0xffffffff00000000;
      lVar4 = __RTDynamicCast(uVar3,0,&juce::Typeface::RTTI_Type_Descriptor,
                              &juce::WindowsDirectWriteTypeface::RTTI_Type_Descriptor,
                              in_stack_ffffffffffffffc8);
      if (lVar4 == 0) {
        return 0;
      }
      iVar5 = iVar5 + 1;
    } while (iVar5 < iVar2);
  }
  do {
    LOCK();
    uVar1 = DAT_18267aa78 & 1;
    DAT_18267aa78 = DAT_18267aa78 | 1;
    UNLOCK();
  } while (uVar1 != 0);
  iVar2 = DAT_18267aa88 + 1;
  if (iVar2 == 1) {
    iVar5 = DAT_18267aa88 + 0x30;
    DAT_18267aa88 = iVar2;
    uVar3 = FUN_1811316e0(iVar5);
    uVar3 = FUN_1804a4110(uVar3);
    FUN_1804af690(&DAT_18267aa80,uVar3);
    iVar2 = DAT_18267aa88;
  }
  DAT_18267aa88 = iVar2;
  LOCK();
  DAT_18267aa78 = 0;
  UNLOCK();
  if ((*DAT_18267aa80 == 0) || (DAT_18267aa80[2] == 0)) {
    uVar3 = 0;
  }
  else {
    FUN_18124bac0(param_1,param_2,DAT_18267aa80[1],DAT_18267aa80[2],DAT_18267aa80[3]);
    uVar3 = 1;
  }
  do {
    LOCK();
    uVar1 = DAT_18267aa78 & 1;
    DAT_18267aa78 = DAT_18267aa78 | 1;
    UNLOCK();
  } while (uVar1 != 0);
  DAT_18267aa88 = DAT_18267aa88 + -1;
  if (DAT_18267aa88 == 0) {
    FUN_1804af690(&DAT_18267aa80,0);
  }
  LOCK();
  UNLOCK();
  DAT_18267aa78 = 0;
  return uVar3;
}



############ FUN_ 18124bac0 size=765 ############

void FUN_18124bac0(longlong *param_1,longlong param_2,ulonglong param_3,longlong param_4,
                  undefined8 param_5)

{
  longlong *plVar1;
  float fVar2;
  longlong lVar3;
  uint uVar4;
  char cVar5;
  int iVar6;
  longlong *plVar7;
  void *_Memory;
  int iVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  int *piVar11;
  longlong lVar12;
  float fVar13;
  uint local_res8 [2];
  undefined8 local_58;
  longlong *local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  uVar9 = 0;
  local_50 = (longlong *)0x0;
  cVar5 = FUN_18124bdd0(param_2,(int)param_1[2],*(undefined4 *)((longlong)param_1 + 0x14),param_5,
                        param_3,param_4,&local_50);
  if (cVar5 != '\0') {
    local_res8[0] = 0;
    (**(code **)(*local_50 + 0x1d8))(local_50,0,0,local_res8);
    if ((int)param_1[1] < (int)local_res8[0]) {
      FUN_18047cb30(param_1,local_res8[0] + 8 + (int)local_res8[0] / 2 & 0xfffffff8);
    }
    plVar7 = (longlong *)FUN_1811316e0(0x28);
    *(undefined4 *)(plVar7 + 1) = 0;
    *plVar7 = (longlong)juce::DirectWriteTypeLayout::CustomDirectWriteTextRenderer::vftable;
    plVar7[2] = param_2;
    plVar7[3] = param_4;
    *(undefined4 *)(plVar7 + 4) = 0xffffffff;
    *(undefined4 *)((longlong)plVar7 + 0x24) = 0xc61c4000;
    (*(code *)PTR_FUN_182498678)(plVar7);
    fVar13 = 0.0;
    (**(code **)(*local_50 + 0x1d0))(local_50,param_1,plVar7,0,param_3 & 0xffffffff00000000);
    if ((undefined **)*plVar7 == juce::DirectWriteTypeLayout::CustomDirectWriteTextRenderer::vftable
       ) {
      plVar1 = plVar7 + 1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      if ((int)*plVar1 == 0) {
        (*(code *)PTR_FUN_1824986c0)(plVar7,1);
      }
    }
    else {
      (*(code *)((undefined **)*plVar7)[2])(plVar7);
    }
    _Memory = malloc((ulonglong)local_res8[0] * 0x18);
    (**(code **)(*local_50 + 0x1d8))(local_50,_Memory,local_res8[0],local_res8);
    uVar4 = local_res8[0];
    if (*(int *)((longlong)param_1 + 0xc) < (int)local_res8[0]) {
      uVar4 = *(uint *)((longlong)param_1 + 0xc);
    }
    fVar2 = *(float *)(param_2 + 8);
    lVar12 = (longlong)(int)uVar4;
    uVar10 = uVar9;
    if (3 < lVar12) {
      piVar11 = (int *)((longlong)_Memory + 0x30);
      do {
        lVar3 = *(longlong *)(*param_1 + uVar10 * 8);
        iVar8 = (int)uVar9;
        iVar6 = iVar8;
        if (iVar8 < piVar11[-0xc] + iVar8) {
          iVar6 = piVar11[-0xc] + iVar8;
        }
        local_58 = CONCAT44(iVar6,iVar8);
        *(undefined8 *)(lVar3 + 0x10) = local_58;
        *(float *)(lVar3 + 0x1c) = fVar13 + *(float *)(lVar3 + 0x1c);
        iVar8 = iVar8 + piVar11[-0xc];
        lVar3 = *(longlong *)(*param_1 + 8 + uVar10 * 8);
        iVar6 = iVar8;
        if (iVar8 < piVar11[-6] + iVar8) {
          iVar6 = piVar11[-6] + iVar8;
        }
        local_58 = CONCAT44(iVar6,iVar8);
        *(undefined8 *)(lVar3 + 0x10) = local_58;
        *(float *)(lVar3 + 0x1c) = fVar13 + fVar2 + *(float *)(lVar3 + 0x1c);
        fVar13 = fVar13 + fVar2 + fVar2;
        iVar8 = iVar8 + piVar11[-6];
        lVar3 = *(longlong *)(*param_1 + 0x10 + uVar10 * 8);
        iVar6 = iVar8;
        if (iVar8 < *piVar11 + iVar8) {
          iVar6 = *piVar11 + iVar8;
        }
        local_58 = CONCAT44(iVar6,iVar8);
        *(undefined8 *)(lVar3 + 0x10) = local_58;
        *(float *)(lVar3 + 0x1c) = fVar13 + *(float *)(lVar3 + 0x1c);
        fVar13 = fVar13 + fVar2;
        iVar8 = iVar8 + *piVar11;
        lVar3 = *(longlong *)(*param_1 + 0x18 + uVar10 * 8);
        iVar6 = iVar8;
        if (iVar8 < piVar11[6] + iVar8) {
          iVar6 = piVar11[6] + iVar8;
        }
        local_58 = CONCAT44(iVar6,iVar8);
        *(undefined8 *)(lVar3 + 0x10) = local_58;
        *(float *)(lVar3 + 0x1c) = fVar13 + *(float *)(lVar3 + 0x1c);
        fVar13 = fVar13 + fVar2;
        uVar9 = (ulonglong)(uint)(iVar8 + piVar11[6]);
        uVar10 = uVar10 + 4;
        piVar11 = piVar11 + 0x18;
      } while ((longlong)uVar10 < lVar12 + -3);
    }
    if ((longlong)uVar10 < lVar12) {
      piVar11 = (int *)((longlong)_Memory + uVar10 * 0x18);
      do {
        lVar3 = *(longlong *)(*param_1 + uVar10 * 8);
        iVar8 = (int)uVar9;
        iVar6 = iVar8;
        if (iVar8 < *piVar11 + iVar8) {
          iVar6 = *piVar11 + iVar8;
        }
        local_58 = CONCAT44(iVar6,iVar8);
        *(undefined8 *)(lVar3 + 0x10) = local_58;
        *(float *)(lVar3 + 0x1c) = fVar13 + *(float *)(lVar3 + 0x1c);
        fVar13 = fVar13 + fVar2;
        uVar9 = (ulonglong)(uint)(iVar8 + *piVar11);
        uVar10 = uVar10 + 1;
        piVar11 = piVar11 + 6;
      } while ((longlong)uVar10 < lVar12);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x10))();
  }
  return;
}



############ FUN_ 1804e4fb0 size=161 ############

undefined8 * FUN_1804e4fb0(undefined8 *param_1,longlong param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  char *pcVar4;
  undefined8 uVar5;
  char *pcVar6;
  char *pcVar7;
  
  lVar3 = *(longlong *)(param_2 + 0x18);
  if (lVar3 == 0) {
    if (DAT_182673700 == 0) {
      uVar5 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar5);
    }
    pcVar4 = (char *)**(undefined8 **)(DAT_182673700 + 0x78);
    for (pcVar6 = pcVar4;
        (pcVar7 = pcVar4,
        pcVar6 != pcVar4 + (longlong)
                           *(int *)((longlong)*(undefined8 **)(DAT_182673700 + 0x78) + 0xc) * 0x40
        && (pcVar7 = pcVar6, *pcVar6 == '\0')); pcVar6 = pcVar6 + 0x40) {
    }
    uVar5 = *(undefined8 *)(pcVar7 + 0x1c);
    *param_1 = *(undefined8 *)(pcVar7 + 0x14);
    param_1[1] = uVar5;
    return param_1;
  }
  uVar1 = *(undefined4 *)(lVar3 + 0x2c);
  uVar2 = *(undefined4 *)(lVar3 + 0x28);
  *param_1 = 0;
  *(undefined4 *)(param_1 + 1) = uVar2;
  *(undefined4 *)((longlong)param_1 + 0xc) = uVar1;
  return param_1;
}



############ FUN_ 1812cbb60 size=425 ############

ulonglong FUN_1812cbb60(void)

{
  longlong lVar1;
  undefined8 *puVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  
  uVar4 = 0;
  iVar8 = -1;
  if (DAT_182673b08 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x38);
    *puVar2 = juce::Timer::vftable;
    puVar2[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar2 + 2) = 0;
    FUN_1812a7230();
    *puVar2 = juce::TopLevelWindowManager::vftable;
    puVar2[3] = juce::TopLevelWindowManager::vftable;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    DAT_182673b08 = puVar2;
  }
  uVar9 = *(int *)((longlong)DAT_182673b08 + 0x2c) - 1;
  lVar10 = (longlong)(int)uVar9;
  puVar2 = DAT_182673b08;
  if (-1 < (int)uVar9) {
    do {
      if (puVar2 == (undefined8 *)0x0) {
        puVar2 = (undefined8 *)FUN_1811316e0(0x38);
        *puVar2 = juce::Timer::vftable;
        puVar2[1] = 0xffffffffffffffff;
        *(undefined4 *)(puVar2 + 2) = 0;
        FUN_1812a7230();
        *puVar2 = juce::TopLevelWindowManager::vftable;
        puVar2[3] = juce::TopLevelWindowManager::vftable;
        puVar2[4] = 0;
        puVar2[5] = 0;
        puVar2[6] = 0;
        DAT_182673b08 = puVar2;
      }
      uVar5 = 0;
      uVar6 = uVar5;
      if (uVar9 < *(uint *)((longlong)puVar2 + 0x2c)) {
        uVar6 = *(ulonglong *)(puVar2[4] + lVar10 * 8);
      }
      if (*(char *)(uVar6 + 0xb2) != '\0') {
        iVar7 = 0;
        for (lVar1 = *(longlong *)(uVar6 + 0x18); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
          lVar3 = __RTDynamicCast(lVar1,0,&juce::Component::RTTI_Type_Descriptor,
                                  &juce::TopLevelWindow::RTTI_Type_Descriptor,0);
          if (lVar3 != 0) {
            uVar5 = (ulonglong)((int)uVar5 + 1);
          }
          iVar7 = (int)uVar5;
          puVar2 = DAT_182673b08;
        }
        if (iVar8 < iVar7) {
          uVar4 = uVar6;
          iVar8 = iVar7;
        }
      }
      uVar9 = uVar9 - 1;
      lVar10 = lVar10 + -1;
    } while (-1 < lVar10);
  }
  return uVar4;
}



############ FUN_ 181344bc0 size=182 ############

undefined8 *
FUN_181344bc0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined1 local_18 [16];
  
  uVar3 = 0xfffffffffffffffe;
  uStack_1c = *(undefined4 *)(param_1 + 0x2c);
  uStack_20 = *(undefined4 *)(param_1 + 0x28);
  local_28 = 0;
  uStack_24 = 0;
  for (; param_1 != 0; param_1 = *(longlong *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)FUN_18051e4b0(local_18,param_1,&local_28,param_4,uVar3);
    local_28 = *puVar1;
    uStack_24 = puVar1[1];
    uStack_20 = puVar1[2];
    uStack_1c = puVar1[3];
  }
  if (DAT_182673700 == 0) {
    uVar3 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar3);
  }
  lVar2 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),&local_28,0);
  uVar3 = *(undefined8 *)(lVar2 + 0x1c);
  *param_2 = *(undefined8 *)(lVar2 + 0x14);
  param_2[1] = uVar3;
  return param_2;
}



############ FUN_ 18133f490 size=639 ############

void FUN_18133f490(longlong *param_1)

{
  int *piVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong lVar6;
  longlong *plVar7;
  int iVar8;
  longlong *plVar9;
  uint uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  bool bVar13;
  undefined8 *local_res8;
  undefined8 *local_res10;
  
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    if (DAT_182673700 == 0) {
      local_res8 = (undefined8 *)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res8);
    }
    plVar9 = (longlong *)(DAT_182673700 + 0x58);
    plVar4 = (longlong *)*plVar9;
    for (plVar7 = plVar4; plVar7 != plVar4 + *(int *)(DAT_182673700 + 100); plVar7 = plVar7 + 1) {
      if (param_1 == (longlong *)*plVar7) {
        lVar6 = (longlong)plVar7 - (longlong)plVar4 >> 3;
        if (-1 < (int)lVar6) {
          iVar8 = -1;
          if ((*(byte *)((longlong)param_1 + 0xa9) & 1) != 0) goto LAB_18133f55f;
          uVar10 = *(uint *)(DAT_182673700 + 100);
          uVar11 = (ulonglong)(int)uVar10;
          if ((int)uVar10 < 1) goto LAB_18133f55c;
          uVar12 = uVar11;
          goto LAB_18133f540;
        }
        break;
      }
    }
  }
  goto LAB_18133f567;
  while( true ) {
    uVar10 = uVar10 - 1;
    uVar11 = (ulonglong)uVar10;
    uVar12 = uVar12 - 1;
    if ((longlong)uVar12 < 1) break;
LAB_18133f540:
    uVar10 = (uint)uVar11;
    if ((*(byte *)(*(longlong *)(*plVar9 + -8 + uVar12 * 8) + 0xa9) & 1) == 0) break;
  }
LAB_18133f55c:
  iVar8 = uVar10 - 1;
LAB_18133f55f:
  FUN_18051b170(plVar9,lVar6,iVar8);
LAB_18133f567:
  FUN_1804de690(&local_res8,param_1);
  (**(code **)(*param_1 + 0x128))(param_1);
  puVar3 = local_res8;
  bVar13 = local_res8 != (undefined8 *)0x0;
  plVar9 = (longlong *)0x0;
  plVar4 = plVar9;
  if (bVar13) {
    plVar4 = (longlong *)local_res8[2];
  }
  if (plVar4 != (longlong *)0x0) {
    iVar8 = *(int *)((longlong)param_1 + 0x8c);
    while( true ) {
      plVar4 = plVar9;
      if (bVar13) {
        plVar4 = (longlong *)puVar3[2];
      }
      if ((plVar4 == (longlong *)0x0) || (iVar8 < 1)) break;
      iVar8 = iVar8 + -1;
      if ((*(int *)((longlong)param_1 + 0x8c) <= iVar8) &&
         (iVar8 = *(int *)((longlong)param_1 + 0x8c) + -1, iVar8 < 0)) break;
      plVar4 = *(longlong **)(param_1[0x10] + (longlong)iVar8 * 8);
      (**(code **)(*plVar4 + 0x10))(plVar4,param_1);
    }
    plVar4 = plVar9;
    if (bVar13) {
      plVar4 = (longlong *)puVar3[2];
    }
    if (plVar4 != (longlong *)0x0) {
      if (DAT_182673c20 == (undefined8 *)0x0) {
        puVar5 = (undefined8 *)FUN_1811316e0(0x28);
        local_res10 = puVar5;
        FUN_1812a59f0(puVar5);
        FUN_1812a7230(puVar5 + 2);
        *puVar5 = juce::ModalComponentManager::vftable;
        puVar5[2] = juce::ModalComponentManager::vftable;
        puVar5[3] = 0;
        puVar5[4] = 0;
        DAT_182673c20 = puVar5;
      }
      iVar8 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
      lVar6 = (longlong)iVar8;
      if (-1 < iVar8) {
        plVar4 = plVar9;
        do {
          lVar2 = *(longlong *)(DAT_182673c20[3] + lVar6 * 8);
          if ((*(char *)(lVar2 + 0x5c) != '\0') &&
             (iVar8 = (int)plVar4, plVar4 = (longlong *)(ulonglong)(iVar8 + 1), iVar8 == 0)) {
            plVar9 = *(longlong **)(lVar2 + 0x40);
            break;
          }
          lVar6 = lVar6 + -1;
        } while (-1 < lVar6);
      }
      if (plVar9 != (longlong *)0x0) {
        plVar4 = (longlong *)plVar9[3];
        while (plVar7 = plVar4, plVar7 != (longlong *)0x0) {
          plVar9 = plVar7;
          plVar4 = (longlong *)plVar7[3];
        }
        plVar4 = (longlong *)param_1[3];
        while (plVar7 = plVar4, plVar7 != (longlong *)0x0) {
          param_1 = plVar7;
          plVar4 = (longlong *)plVar7[3];
        }
        if (plVar9 != param_1) {
          FUN_18133b010(DAT_182673c20,0);
        }
      }
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 180500d50 size=1146 ############

void FUN_180500d50(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong *plVar6;
  int *piVar7;
  undefined8 uVar8;
  int iVar9;
  char cVar10;
  ulonglong uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  ulonglong uVar16;
  int local_res8;
  undefined4 uStackX_c;
  int local_res10;
  undefined4 local_res18;
  int local_res20;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  
  *(undefined1 *)(param_1 + 0x1dc) = 1;
  iVar9 = *(int *)(*(longlong *)(param_1 + 0x1b8) + 0xf4);
  uVar16 = 0;
  uVar11 = uVar16;
  if (*(longlong *)(param_1 + 0x180) != 0) {
    uVar11 = *(ulonglong *)(*(longlong *)(param_1 + 0x180) + 0x10);
  }
  local_res8 = iVar9;
  if (0 < iVar9) {
    iVar13 = *(int *)(param_1 + 0x18c);
    local_res18 = *(undefined4 *)(uVar11 + 0x28);
    iVar12 = *(int *)(param_1 + 0xfc) / iVar9 + 2;
    plVar1 = (longlong *)(param_1 + 0x1c0);
    local_res10 = iVar13;
    local_res20 = iVar12;
    FUN_18051a5c0(plVar1,iVar12,*(undefined4 *)(param_1 + 0x1cc));
    iVar14 = *(int *)(param_1 + 0x1cc);
    while (iVar14 < iVar12) {
      plVar6 = (longlong *)FUN_1811316e0(0xd0);
      lVar3 = *(longlong *)(param_1 + 0x1b8);
      plVar6[1] = (longlong)&DAT_1821dbf98;
      plVar6[2] = (longlong)&DAT_1821dbf98;
      plVar6[3] = 0;
      plVar6[4] = 0;
      plVar6[5] = 0;
      plVar6[6] = 0;
      plVar6[7] = 0;
      plVar6[8] = 0;
      plVar6[9] = 0;
      plVar6[10] = 0;
      plVar6[0xb] = 0;
      plVar6[0xc] = 0;
      plVar6[0xd] = 0;
      plVar6[0xe] = 0;
      plVar6[0xf] = 0;
      plVar6[0x10] = 0;
      plVar6[0x11] = 0;
      plVar6[0x12] = 0;
      plVar6[0x13] = 0;
      plVar6[0x14] = 0;
      *(undefined4 *)(plVar6 + 0x15) = 0;
      *(undefined1 *)((longlong)plVar6 + 0xac) = 0;
      plVar6[0x16] = (longlong)juce::TooltipClient::vftable;
      *plVar6 = (longlong)juce::ListBox::RowComponent::vftable;
      plVar6[0x16] = (longlong)juce::ListBox::RowComponent::vftable;
      plVar6[0x17] = lVar3;
      plVar6[0x18] = 0;
      *(undefined4 *)(plVar6 + 0x19) = 0xffffffff;
      *(undefined4 *)((longlong)plVar6 + 0xcc) = 0;
      iVar14 = *(int *)(param_1 + 0x1cc);
      iVar9 = iVar14 + 1;
      if (*(int *)(param_1 + 0x1c8) < iVar9) {
        if (iVar9 < 0) {
          iVar9 = iVar14 + 2;
        }
        FUN_18047cb30(plVar1,iVar14 + 9 + (iVar9 >> 1) & 0xfffffff8);
      }
      iVar9 = *(int *)(param_1 + 0x1cc);
      *(int *)(param_1 + 0x1cc) = iVar9 + 1;
      *(longlong **)(*plVar1 + (longlong)iVar9 * 8) = plVar6;
      (**(code **)(*plVar6 + 0x58))(plVar6,1);
      FUN_181343cc0(uVar11,plVar6,0xffffffff);
      iVar9 = local_res8;
      iVar13 = local_res10;
      iVar14 = *(int *)(param_1 + 0x1cc);
    }
    *(int *)(param_1 + 0x1d0) = iVar13 / iVar9;
    *(int *)(param_1 + 0x1d4) = (iVar9 + -1 + iVar13) / iVar9;
    *(int *)(param_1 + 0x1d8) = (*(int *)(param_1 + 0xfc) + -1 + iVar13) / iVar9;
    if (0 < iVar12) {
      do {
        iVar13 = *(int *)(param_1 + 0x1d0) + (int)uVar16;
        iVar14 = 1;
        if (1 < *(int *)(param_1 + 0x1cc)) {
          iVar14 = *(int *)(param_1 + 0x1cc);
        }
        if (((uint)(iVar13 % iVar14) < *(uint *)(param_1 + 0x1cc)) &&
           (lVar3 = *(longlong *)(*plVar1 + (longlong)(iVar13 % iVar14) * 8), lVar3 != 0)) {
          FUN_18134bfe0(lVar3,0,iVar13 * iVar9,local_res18,iVar9);
          piVar7 = *(int **)(*(longlong *)(param_1 + 0x1b8) + 0xe0);
          piVar2 = piVar7 + (longlong)*(int *)(*(longlong *)(param_1 + 0x1b8) + 0xec) * 2;
          for (; (piVar7 != piVar2 && (*piVar7 <= iVar13)); piVar7 = piVar7 + 2) {
            if (iVar13 < piVar7[1]) {
              cVar10 = '\x01';
              goto LAB_18050101d;
            }
          }
          cVar10 = '\0';
LAB_18050101d:
          if ((*(int *)(lVar3 + 200) != iVar13) || (*(char *)(lVar3 + 0xcc) != cVar10)) {
            uStack_4c = *(undefined4 *)(lVar3 + 0x2c);
            uStack_50 = *(undefined4 *)(lVar3 + 0x28);
            local_58 = 0;
            uStack_54 = 0;
            FUN_181342870(lVar3,&local_58,1);
            *(int *)(lVar3 + 200) = iVar13;
            *(char *)(lVar3 + 0xcc) = cVar10;
          }
          plVar6 = *(longlong **)(*(longlong *)(lVar3 + 0xb8) + 0xc0);
          if (plVar6 != (longlong *)0x0) {
            uVar8 = (**(code **)(*plVar6 + 0x68))(plVar6,&local_res8,*(undefined4 *)(lVar3 + 200));
            FUN_181342db0(lVar3,uVar8);
            if (CONCAT44(uStackX_c,local_res8) != 0) {
              FUN_1804e9060();
            }
            uVar8 = *(undefined8 *)(lVar3 + 0xc0);
            *(undefined8 *)(lVar3 + 0xc0) = 0;
            uVar8 = (**(code **)(*plVar6 + 0x18))(plVar6,iVar13,cVar10,uVar8);
            puVar4 = *(undefined8 **)(lVar3 + 0xc0);
            *(undefined8 *)(lVar3 + 0xc0) = uVar8;
            if (puVar4 != (undefined8 *)0x0) {
              (**(code **)*puVar4)(puVar4,1);
            }
            plVar6 = *(longlong **)(lVar3 + 0xc0);
            if (plVar6 != (longlong *)0x0) {
              (**(code **)(*plVar6 + 0x58))(plVar6,1);
              FUN_181343cc0(lVar3,plVar6,0xffffffff);
              FUN_18134bfe0(*(undefined8 *)(lVar3 + 0xc0),0,0,*(undefined4 *)(lVar3 + 0x28),
                            *(undefined4 *)(lVar3 + 0x2c));
            }
          }
        }
        uVar15 = (int)uVar16 + 1;
        uVar16 = (ulonglong)uVar15;
      } while ((int)uVar15 < local_res20);
    }
  }
  lVar3 = *(longlong *)(param_1 + 0x1b8);
  lVar5 = *(longlong *)(lVar3 + 0xd0);
  if (lVar5 != 0) {
    iVar9 = *(int *)(lVar3 + 0xfc);
    iVar14 = *(int *)(lVar3 + 0x28) + iVar9 * -2;
    if (iVar14 < *(int *)(uVar11 + 0x28)) {
      iVar14 = *(int *)(uVar11 + 0x28);
    }
    FUN_18134bfe0(lVar5,*(int *)(uVar11 + 0x20) + iVar9,iVar9,iVar14,*(undefined4 *)(lVar5 + 0x2c));
  }
  return;
}



############ FUN_ 1812e8530 size=289 ############

undefined8 * FUN_1812e8530(undefined8 *param_1)

{
  longlong *plVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  
  puVar3 = param_1;
  FUN_1813453e0();
  puVar3[0x17] = &DAT_1821dbf98;
  *puVar3 = juce::ListBox::vftable;
  puVar3[0x16] = juce::ListBox::vftable;
  puVar3[0x18] = 0;
  puVar3[0x19] = 0;
  puVar3[0x1a] = 0;
  puVar3[0x1b] = 0;
  puVar3[0x1c] = 0;
  puVar3[0x1d] = 0;
  *(undefined4 *)(puVar3 + 0x1e) = 0;
  *(undefined8 *)((longlong)puVar3 + 0xf4) = 0x16;
  *(undefined4 *)((longlong)puVar3 + 0xfc) = 0;
  *(undefined4 *)(puVar3 + 0x20) = 0xffffffff;
  *(undefined4 *)((longlong)puVar3 + 0x104) = 0x1000000;
  uVar2 = FUN_1811316e0(0x1e0);
  uVar2 = FUN_180500af0(uVar2,param_1);
  puVar3 = (undefined8 *)param_1[0x19];
  param_1[0x19] = uVar2;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  plVar1 = (longlong *)param_1[0x19];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x58))(plVar1,1);
    FUN_181343cc0(param_1,plVar1,0xffffffff);
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x20;
  FUN_1812e7390(param_1);
  return param_1;
}



############ FUN_ 180500af0 size=356 ############

undefined8 *
FUN_180500af0(undefined8 *param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  bool bVar3;
  undefined1 *local_res10;
  
  local_res10 = &DAT_1821dbf98;
  FUN_18134a630(param_1,&local_res10,param_3,param_4,0xfffffffffffffffe);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = juce::ListBox::ListViewport::vftable;
  param_1[0x16] = juce::ListBox::ListViewport::vftable;
  param_1[0x17] = juce::ListBox::ListViewport::vftable;
  param_1[0x37] = param_2;
  param_1[0x38] = 0;
  param_1[0x39] = 0;
  param_1[0x3a] = 0;
  *(undefined4 *)(param_1 + 0x3b) = 0;
  *(undefined1 *)((longlong)param_1 + 0x1dc) = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  puVar2 = (undefined8 *)FUN_1811316e0(0xb0);
  *puVar2 = juce::Component::vftable;
  puVar2[1] = &DAT_1821dbf98;
  puVar2[2] = &DAT_1821dbf98;
  puVar2[3] = 0;
  puVar2[4] = 0;
  puVar2[5] = 0;
  puVar2[6] = 0;
  puVar2[7] = 0;
  puVar2[8] = 0;
  puVar2[9] = 0;
  puVar2[10] = 0;
  puVar2[0xb] = 0;
  puVar2[0xc] = 0;
  puVar2[0xd] = 0;
  puVar2[0xe] = 0;
  puVar2[0xf] = 0;
  puVar2[0x10] = 0;
  puVar2[0x11] = 0;
  puVar2[0x12] = 0;
  puVar2[0x13] = 0;
  puVar2[0x14] = 0;
  *(undefined4 *)(puVar2 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar2 + 0xac) = 0;
  FUN_18134a370(param_1,puVar2,1);
  *(byte *)(puVar2 + 0x15) = *(byte *)(puVar2 + 0x15) & 0xdf;
  return param_1;
}



############ FUN_ 1813379d0 size=423 ############

undefined8 *
FUN_1813379d0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = param_1;
  FUN_1813453e0();
  puVar3[0x17] = &DAT_1821dbf98;
  *puVar3 = juce::Button::vftable;
  puVar3[0x16] = juce::Button::vftable;
  lVar4 = 0;
  puVar3[0x1f] = 0;
  puVar3[0x27] = 0;
  puVar3[0x28] = 0;
  puVar3[0x29] = 0;
  puVar3[0x2a] = 0;
  lVar1 = *param_2;
  param_1[0x2b] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  param_1[0x2f] = 0;
  param_1[0x30] = 0;
  *(undefined4 *)(param_1 + 0x31) = 0xffffffff;
  *(undefined4 *)((longlong)param_1 + 0x18c) = 0;
  *(undefined4 *)(param_1 + 0x32) = 0xffffffff;
  *(undefined8 *)((longlong)param_1 + 0x194) = 0;
  *(undefined8 *)((longlong)param_1 + 0x19c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x1a4) = 0;
  FUN_181351c70(param_1 + 0x35);
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)((longlong)param_1 + 0x1c4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x1c6) = 0;
  puVar2 = (undefined8 *)FUN_1811316e0(0x38);
  puVar2[1] = 0xffffffffffffffff;
  *(undefined4 *)(puVar2 + 2) = 0;
  *puVar2 = juce::Button::CallbackHelper::vftable;
  puVar2[3] = juce::Button::CallbackHelper::vftable;
  puVar2[4] = juce::Button::CallbackHelper::vftable;
  puVar2[5] = juce::Button::CallbackHelper::vftable;
  puVar2[6] = param_1;
  puVar3 = (undefined8 *)param_1[0x2e];
  param_1[0x2e] = puVar2;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1,param_3,param_4,uVar5);
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  if (param_1[0x2e] != 0) {
    lVar4 = param_1[0x2e] + 0x20;
  }
  FUN_181351570(param_1 + 0x35,lVar4);
  return param_1;
}



############ FUN_ 181342db0 size=180 ############

void FUN_181342db0(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong lVar4;
  
  lVar2 = 0;
  lVar4 = lVar2;
  if (*(longlong *)(param_1 + 0x58) != 0) {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x58) + 8);
  }
  lVar1 = *param_2;
  if (lVar1 != 0) {
    lVar2 = *(longlong *)(lVar1 + 8);
  }
  if (lVar4 != lVar2) {
    if (lVar1 != 0) {
      LOCK();
      *(int *)(lVar1 + 0x10) = *(int *)(lVar1 + 0x10) + 1;
      UNLOCK();
    }
    if (*(longlong *)(param_1 + 0x58) != 0) {
      FUN_1804e9060();
    }
    *(longlong *)(param_1 + 0x58) = *param_2;
    if ((*(byte *)(param_1 + 0xa8) & 2) != 0) {
      if (DAT_182673700 == 0) {
        uVar3 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar3);
      }
      FUN_1804e6e90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),1);
    }
  }
  return;
}



############ FUN_ 181346e20 size=556 ############

void FUN_181346e20(longlong param_1,longlong param_2)

{
  double dVar1;
  longlong *plVar2;
  void *pvVar3;
  int iVar4;
  uint uVar5;
  double dVar6;
  
  plVar2 = (longlong *)FUN_1811316e0(0x108);
  plVar2[1] = (longlong)&DAT_1821dbf98;
  plVar2[2] = (longlong)&DAT_1821dbf98;
  plVar2[3] = 0;
  plVar2[4] = 0;
  plVar2[5] = 0;
  plVar2[6] = 0;
  plVar2[7] = 0;
  plVar2[8] = 0;
  plVar2[9] = 0;
  plVar2[10] = 0;
  plVar2[0xb] = 0;
  plVar2[0xc] = 0;
  plVar2[0xd] = 0;
  plVar2[0xe] = 0;
  plVar2[0xf] = 0;
  plVar2[0x10] = 0;
  plVar2[0x11] = 0;
  plVar2[0x12] = 0;
  plVar2[0x13] = 0;
  plVar2[0x14] = 0;
  *(undefined4 *)(plVar2 + 0x15) = 0;
  *(undefined1 *)((longlong)plVar2 + 0xac) = 0;
  plVar2[0x17] = (longlong)&DAT_1821dbf98;
  plVar2[0x19] = -1;
  *(undefined4 *)(plVar2 + 0x1a) = 0;
  *plVar2 = (longlong)juce::ProgressBar::vftable;
  plVar2[0x16] = (longlong)juce::ProgressBar::vftable;
  plVar2[0x18] = (longlong)juce::ProgressBar::vftable;
  plVar2[0x1b] = param_2;
  *(undefined1 *)(plVar2 + 0x1d) = 1;
  plVar2[0x1e] = (longlong)&DAT_1821dbf98;
  plVar2[0x1f] = (longlong)&DAT_1821dbf98;
  *(undefined4 *)(plVar2 + 0x20) = 0;
  dVar1 = *(double *)plVar2[0x1b];
  dVar6 = 0.0;
  if ((0.0 <= dVar1) && (dVar6 = DAT_1824c4140, dVar1 <= DAT_1824c4140)) {
    dVar6 = dVar1;
  }
  plVar2[0x1c] = (longlong)dVar6;
  iVar4 = *(int *)(param_1 + 0x17c) + 1;
  if ((int)*(uint *)(param_1 + 0x178) < iVar4) {
    uVar5 = *(int *)(param_1 + 0x17c) + 9 + iVar4 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 0x178) != uVar5) {
      pvVar3 = *(void **)(param_1 + 0x170);
      if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
        free(pvVar3);
      }
      if (pvVar3 == (void *)0x0) {
        pvVar3 = malloc((longlong)(int)uVar5 * 8);
        *(void **)(param_1 + 0x170) = pvVar3;
      }
      else {
        pvVar3 = realloc(pvVar3,(longlong)(int)uVar5 * 8);
        *(void **)(param_1 + 0x170) = pvVar3;
      }
    }
    *(uint *)(param_1 + 0x178) = uVar5;
  }
  iVar4 = *(int *)(param_1 + 0x17c);
  *(int *)(param_1 + 0x17c) = iVar4 + 1;
  *(longlong **)(*(longlong *)(param_1 + 0x170) + (longlong)iVar4 * 8) = plVar2;
  iVar4 = *(int *)(param_1 + 0x1ac) + 1;
  if (*(int *)(param_1 + 0x1a8) < iVar4) {
    FUN_18047cb30((longlong *)(param_1 + 0x1a0),
                  *(int *)(param_1 + 0x1ac) + 9 + iVar4 / 2 & 0xfffffff8);
  }
  iVar4 = *(int *)(param_1 + 0x1ac);
  *(int *)(param_1 + 0x1ac) = iVar4 + 1;
  *(longlong **)(*(longlong *)(param_1 + 0x1a0) + (longlong)iVar4 * 8) = plVar2;
  (**(code **)(*plVar2 + 0x58))(plVar2,1);
  FUN_181343cc0(param_1,plVar2,0xffffffff);
  FUN_1812d3dc0(param_1,0);
  return;
}



############ FUN_ 181347060 size=1143 ############

void FUN_181347060(longlong param_1,undefined8 param_2,undefined4 param_3,int *param_4,int *param_5)

{
  uint *_Memory;
  ulonglong *puVar1;
  undefined ***pppuVar2;
  undefined ***pppuVar3;
  void *_Src;
  undefined4 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  int iVar10;
  ulonglong uVar11;
  undefined4 uVar12;
  uint uVar13;
  ulonglong uVar14;
  bool bVar15;
  undefined1 auStack_148 [32];
  undefined4 local_128;
  longlong local_118;
  undefined4 local_110;
  int iStack_10c;
  undefined4 local_108;
  undefined4 local_104;
  void *local_100;
  uint local_f4;
  longlong *local_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined1 *local_d0;
  undefined **local_c8;
  undefined4 local_c0;
  undefined4 uStack_bc;
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  undefined ***local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_d8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_148;
  local_108 = 0;
  local_104 = param_3;
  plVar5 = (longlong *)FUN_1811316e0(0x1c8);
  local_d0 = &DAT_1821dbf98;
  local_108 = 1;
  local_f0 = plVar5;
  FUN_1813379d0(plVar5,param_2);
  *plVar5 = (longlong)juce::TextButton::vftable;
  plVar5[0x16] = (longlong)juce::TextButton::vftable;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  LOCK();
  lVar7 = plVar5[0x17];
  plVar5[0x17] = (longlong)&DAT_1821dbf98;
  UNLOCK();
  _Memory = (uint *)(lVar7 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar13 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined1 *)((longlong)plVar5 + 0x1c6) = 0;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar13 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar15 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar13;
    if (bVar15) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  puVar1 = (ulonglong *)(param_1 + 0x140);
  FUN_18047e060(puVar1,*(int *)(param_1 + 0x14c) + 1);
  iVar10 = *(int *)(param_1 + 0x14c);
  *(int *)(param_1 + 0x14c) = iVar10 + 1;
  *(longlong **)(*puVar1 + (longlong)iVar10 * 8) = plVar5;
  *(byte *)(plVar5 + 0x15) = *(byte *)(plVar5 + 0x15) | 0xa0;
  *(undefined4 *)((longlong)plVar5 + 0x19c) = local_104;
  *(undefined1 *)((longlong)plVar5 + 0x1c6) = 0;
  lVar7 = plVar5[0x30];
  if (lVar7 != 0) {
    if (plVar5[0x2e] == 0) {
      lVar8 = 0;
    }
    else {
      lVar8 = plVar5[0x2e] + 0x18;
    }
    iVar9 = 0;
    iVar10 = *(int *)(lVar7 + 0x34);
    plVar6 = *(longlong **)(lVar7 + 0x28);
    if (iVar10 < 1) {
LAB_18134724c:
      plVar5[0x30] = 0;
    }
    else {
      do {
        if (lVar8 == *plVar6) {
          plVar6 = *(longlong **)(lVar7 + 0x28) + iVar9;
          memmove(plVar6,plVar6 + 1,(longlong)((iVar10 - iVar9) + -1) << 3);
          *(int *)(lVar7 + 0x34) = *(int *)(lVar7 + 0x34) + -1;
          iVar10 = *(int *)(lVar7 + 0x34);
          iVar9 = 0;
          if (0 < iVar10 * 2) {
            iVar9 = iVar10 * 2;
          }
          if (iVar9 < *(int *)(lVar7 + 0x30)) {
            if (iVar10 < 8) {
              iVar10 = 8;
            }
            if (iVar10 < *(int *)(lVar7 + 0x30)) {
              FUN_18047cb30(lVar7 + 0x28);
            }
          }
          goto LAB_18134724c;
        }
        iVar9 = iVar9 + 1;
        plVar6 = plVar6 + 1;
      } while (iVar9 < iVar10);
      plVar5[0x30] = 0;
    }
  }
  uVar13 = 0;
  if (plVar5[0x30] == 0) {
    FUN_18133e970(plVar5,1);
  }
  else {
    FUN_181335fc0();
  }
  if (*param_4 != 0) {
    FUN_18051b4d0(plVar5 + 0x28,param_4);
    (**(code **)(*plVar5 + 0x88))(plVar5);
  }
  if (*param_5 != 0) {
    FUN_18051b4d0(plVar5 + 0x28);
    (**(code **)(*plVar5 + 0x88))(plVar5);
  }
  pppuVar2 = (undefined ***)(plVar5 + 0x18);
  local_c8 = std::_Func_impl_no_alloc<<lambda_268ed139f2698278a8a6c3da8f71dc80>,void>::vftable;
  local_e8._0_4_ = (undefined4)param_1;
  local_e8._4_4_ = (undefined4)((ulonglong)param_1 >> 0x20);
  uStack_e0._0_4_ = SUB84(plVar5,0);
  uStack_e0._4_4_ = (undefined4)((ulonglong)plVar5 >> 0x20);
  local_c0 = (undefined4)local_e8;
  uStack_bc = local_e8._4_4_;
  uStack_b8 = (undefined4)uStack_e0;
  uStack_b4 = uStack_e0._4_4_;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_e8 = param_1;
  uStack_e0 = plVar5;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824aabc8)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar3 = (undefined ***)plVar5[0x1f];
  if (pppuVar3 != (undefined ***)0x0) {
    if (pppuVar3 == pppuVar2) {
      local_90 = (undefined ***)(*(code *)(*pppuVar3)[1])(pppuVar3,&local_c8);
      pppuVar3 = (undefined ***)plVar5[0x1f];
      if (pppuVar3 == (undefined ***)0x0) goto LAB_181347366;
      (*(code *)(*pppuVar3)[4])(pppuVar3,pppuVar3 != pppuVar2);
      pppuVar3 = local_90;
    }
    local_90 = pppuVar3;
    plVar5[0x1f] = 0;
  }
LAB_181347366:
  FUN_180488560(pppuVar2,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  iVar10 = *(int *)(param_1 + 0x14c);
  _Src = (void *)*puVar1;
  local_118 = 0;
  _local_110 = 0;
  FUN_18047e060(&local_118,iVar10);
  memcpy((void *)(local_118 + (longlong)iStack_10c * 8),_Src,(longlong)iVar10 << 3);
  _local_110 = CONCAT44(iStack_10c + iVar10,local_110);
  lVar7 = FUN_18134adf0(param_1);
  plVar6 = (longlong *)(lVar7 + 0x38);
  uVar4 = (**(code **)(*plVar6 + 0x28))(plVar6);
  (**(code **)(*plVar6 + 0x20))(plVar6,&local_100,param_1,&local_118);
  plVar6 = (longlong *)*puVar1;
  uVar11 = 0;
  uVar14 = (ulonglong)((longlong)(plVar6 + *(int *)(param_1 + 0x14c)) + (7 - (longlong)plVar6)) >> 3
  ;
  if (plVar6 + *(int *)(param_1 + 0x14c) < plVar6) {
    uVar14 = uVar11;
  }
  if (uVar14 != 0) {
    do {
      lVar7 = *plVar6;
      if (uVar13 < local_f4) {
        uVar12 = *(undefined4 *)((longlong)local_100 + uVar11 * 4);
      }
      else {
        uVar12 = 0;
      }
      local_128 = uVar4;
      FUN_18134bfe0(lVar7,*(undefined4 *)(lVar7 + 0x20),*(undefined4 *)(lVar7 + 0x24),uVar12);
      uVar13 = uVar13 + 1;
      plVar6 = plVar6 + 1;
      uVar11 = uVar11 + 1;
      plVar5 = local_f0;
    } while (uVar11 != uVar14);
  }
  (**(code **)(*plVar5 + 0x58))(plVar5,1);
  FUN_181343cc0(param_1,plVar5,0);
  FUN_1812d3dc0(param_1,0);
  local_f4 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_100);
}



############ FUN_ 1812c81b0 size=807 ############

void FUN_1812c81b0(longlong param_1)

{
  char *pcVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined8 *puVar6;
  char cVar7;
  undefined8 uVar8;
  longlong lVar9;
  int iVar10;
  int iVar11;
  longlong lVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  uint uVar16;
  longlong lVar17;
  bool bVar18;
  undefined8 *local_res20;
  int iVar19;
  
  pcVar1 = (char *)(param_1 + 0x30);
  if (*pcVar1 == '\0') {
    *pcVar1 = '\x01';
    if ((((*(longlong *)(param_1 + 8) == 0) || (cVar7 = FUN_181345240(), cVar7 == '\0')) ||
        (*(int *)(*(longlong *)(param_1 + 8) + 0x28) < 1)) ||
       (*(int *)(*(longlong *)(param_1 + 8) + 0x2c) < 1)) {
      FUN_18047cbc0(param_1 + 0x10);
      if (*(int *)(param_1 + 0x18) != 0) {
                    /* WARNING: Subroutine does not return */
        free(*(void **)(param_1 + 0x10));
      }
      *(undefined4 *)(param_1 + 0x18) = 0;
    }
    else {
      iVar15 = *(int *)(param_1 + 0x1c);
      while (iVar15 < 4) {
        uVar8 = FUN_1811316e0(200);
        uVar8 = FUN_18050cf50(uVar8,*(undefined8 *)(param_1 + 8),param_1 + 0x20);
        FUN_180485fc0(param_1 + 0x10,uVar8);
        iVar15 = *(int *)(param_1 + 0x1c);
      }
      iVar15 = *(int *)(param_1 + 0x28);
      if (*(int *)(param_1 + 0x28) < *(int *)(param_1 + 0x2c)) {
        iVar15 = *(int *)(param_1 + 0x2c);
      }
      iVar15 = iVar15 + *(int *)(param_1 + 0x24);
      lVar12 = *(longlong *)(param_1 + 8);
      iVar4 = *(int *)(lVar12 + 0x20);
      iVar10 = *(int *)(lVar12 + 0x24) - iVar15;
      iVar5 = *(int *)(lVar12 + 0x28);
      iVar3 = *(int *)(lVar12 + 0x2c) + iVar15 * 2;
      lVar12 = 0;
      uVar16 = 3;
      lVar17 = 0x18;
      do {
        lVar9 = lVar12;
        if (uVar16 < *(uint *)(param_1 + 0x1c)) {
          lVar9 = *(longlong *)(lVar17 + *(longlong *)(param_1 + 0x10));
        }
        FUN_1804de690(&local_res20,lVar9);
        puVar6 = local_res20;
        bVar18 = local_res20 == (undefined8 *)0x0;
        lVar9 = lVar12;
        if (!bVar18) {
          lVar9 = local_res20[2];
        }
        if (lVar9 != 0) {
          lVar9 = lVar12;
          if (!bVar18) {
            lVar9 = local_res20[2];
          }
          FUN_18134b0f0(lVar9,*(byte *)(*(longlong *)(param_1 + 8) + 0xa9) & 1);
          lVar9 = lVar12;
          if (!bVar18) {
            lVar9 = puVar6[2];
          }
          if (lVar9 != 0) {
            lVar9 = lVar12;
            iVar19 = iVar3;
            iVar13 = iVar10;
            iVar14 = iVar15;
            if (uVar16 == 0) {
              if (!bVar18) {
                lVar9 = puVar6[2];
              }
              iVar11 = iVar4 - iVar15;
LAB_1812c8403:
              FUN_18134bfe0(lVar9,iVar11,iVar13,iVar14,iVar19);
            }
            else {
              if (uVar16 == 1) {
                if (bVar18) {
                  iVar11 = iVar5 + iVar4;
                }
                else {
                  lVar9 = puVar6[2];
                  iVar11 = iVar5 + iVar4;
                }
                goto LAB_1812c8403;
              }
              iVar19 = iVar15;
              iVar11 = iVar4;
              iVar14 = iVar5;
              if (uVar16 == 2) {
                if (!bVar18) {
                  lVar9 = puVar6[2];
                }
                goto LAB_1812c8403;
              }
              if (uVar16 == 3) {
                iVar13 = *(int *)(*(longlong *)(param_1 + 8) + 0x2c) +
                         *(int *)(*(longlong *)(param_1 + 8) + 0x24);
                if (!bVar18) {
                  lVar9 = puVar6[2];
                }
                goto LAB_1812c8403;
              }
            }
            lVar9 = lVar12;
            if (!bVar18) {
              lVar9 = puVar6[2];
            }
            if (lVar9 != 0) {
              if (uVar16 == 3) {
                uVar8 = *(undefined8 *)(param_1 + 8);
              }
              else {
                uVar8 = *(undefined8 *)(*(longlong *)(param_1 + 0x10) + 8 + lVar17);
              }
              lVar9 = lVar12;
              if (!bVar18) {
                lVar9 = puVar6[2];
              }
              FUN_181344e50(lVar9,uVar8);
              goto LAB_1812c8444;
            }
          }
          if (puVar6 != (undefined8 *)0x0) {
            LOCK();
            piVar2 = (int *)(puVar6 + 1);
            iVar15 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar15 == 1) {
              (**(code **)*local_res20)(local_res20,1);
            }
          }
          break;
        }
LAB_1812c8444:
        if (puVar6 != (undefined8 *)0x0) {
          LOCK();
          piVar2 = (int *)(puVar6 + 1);
          iVar13 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar13 == 1) {
            (**(code **)*local_res20)(local_res20,1);
          }
        }
        lVar17 = lVar17 + -8;
        uVar16 = uVar16 - 1;
      } while (-1 < (int)uVar16);
    }
    *pcVar1 = '\0';
  }
  return;
}



############ FUN_ 1812cc700 size=350 ############

undefined8 * FUN_1812cc700(undefined8 *param_1,undefined8 param_2,char param_3,undefined8 param_4)

{
  undefined1 uVar1;
  undefined8 *puVar2;
  int iVar3;
  uint uVar4;
  undefined7 uVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  puVar2 = param_1;
  FUN_1813453e0();
  *puVar2 = juce::TopLevelWindow::vftable;
  *(undefined2 *)(puVar2 + 0x16) = 1;
  *(undefined1 *)((longlong)puVar2 + 0xb2) = 0;
  puVar2[0x17] = 0;
  uVar5 = (undefined7)((ulonglong)param_2 >> 8);
  FUN_18134bd50();
  if (param_3 == '\0') {
    FUN_1812cc270(param_1,CONCAT71(uVar5,1));
  }
  else {
    uVar4 = 1;
    if (*(char *)(param_1 + 0x16) != '\0') {
      uVar4 = 0x101;
    }
    if (*(char *)((longlong)param_1 + 0xb1) != '\0') {
      uVar4 = uVar4 | 8;
    }
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
              (param_1,uVar4,0,param_4,uVar6);
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x20;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 4;
  if (DAT_182673b08 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x38);
    *puVar2 = juce::Timer::vftable;
    puVar2[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar2 + 2) = 0;
    FUN_1812a7230(puVar2 + 3);
    *puVar2 = juce::TopLevelWindowManager::vftable;
    puVar2[3] = juce::TopLevelWindowManager::vftable;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    DAT_182673b08 = puVar2;
  }
  puVar2 = DAT_182673b08;
  iVar3 = *(int *)((longlong)DAT_182673b08 + 0x2c) + 1;
  if (*(int *)(DAT_182673b08 + 5) < iVar3) {
    FUN_18047cb30(DAT_182673b08 + 4,
                  *(int *)((longlong)DAT_182673b08 + 0x2c) + 9 + iVar3 / 2 & 0xfffffff8);
  }
  iVar3 = *(int *)((longlong)puVar2 + 0x2c);
  *(int *)((longlong)puVar2 + 0x2c) = iVar3 + 1;
  *(undefined8 **)(puVar2[4] + (longlong)iVar3 * 8) = param_1;
  FUN_1812a77d0(puVar2,10);
  uVar1 = FUN_18050ca90(puVar2,param_1);
  *(undefined1 *)((longlong)param_1 + 0xb2) = uVar1;
  return param_1;
}



############ FUN_ 181347bc0 size=237 ############

undefined8 *
FUN_181347bc0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  longlong local_60 [7];
  longlong *local_28;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x48);
  local_28 = (longlong *)0x0;
  puVar1 = (undefined8 *)param_1[7];
  if (puVar1 != (undefined8 *)0x0) {
    local_28 = (longlong *)(**(code **)*puVar1)(puVar1,local_60);
  }
  *puVar3 = juce::LambdaCallback::vftable;
  puVar3[8] = 0;
  if (local_28 != (longlong *)0x0) {
    uVar4 = (**(code **)*local_28)(local_28,puVar3 + 1);
    puVar3[8] = uVar4;
  }
  if (local_28 != (longlong *)0x0) {
    (**(code **)(*local_28 + 0x20))(local_28,local_28 != local_60,*local_28,param_4,uVar5);
    local_28 = (longlong *)0x0;
  }
  plVar2 = (longlong *)param_1[7];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != param_1);
    param_1[7] = 0;
  }
  return puVar3;
}



############ FUN_ 18134a630 size=449 ############

undefined8 *
FUN_18134a630(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  puVar3 = param_1;
  FUN_1813453e0();
  *puVar3 = juce::Viewport::vftable;
  puVar3[0x16] = juce::Viewport::vftable;
  puVar3[0x17] = juce::Viewport::vftable;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  plVar2 = param_1 + 0x1a;
  *plVar2 = (longlong)juce::Component::vftable;
  param_1[0x1b] = &DAT_1821dbf98;
  param_1[0x1c] = &DAT_1821dbf98;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  *(undefined4 *)(param_1 + 0x2f) = 0;
  *(undefined1 *)((longlong)param_1 + 0x17c) = 0;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  param_1[0x32] = 0;
  *(undefined4 *)(param_1 + 0x33) = 0;
  *(undefined4 *)((longlong)param_1 + 0x19c) = 0x10;
  *(undefined4 *)(param_1 + 0x34) = 0x10;
  *(undefined4 *)((longlong)param_1 + 0x1a4) = 0x10101;
  *(undefined4 *)(param_1 + 0x35) = 0x1010000;
  param_1[0x36] = 0;
  (**(code **)(*plVar2 + 0x58))(plVar2,1);
  FUN_181343cc0(param_1,plVar2,0xffffffff,param_4,uVar4);
  *(byte *)(param_1 + 0x2f) = *(byte *)(param_1 + 0x2f) | 0x18;
  plVar2 = (longlong *)FUN_18134adf0(param_1);
  uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2);
  *(undefined4 *)(param_1 + 0x33) = uVar1;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x38;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  FUN_181317020(param_1,*(int *)(**(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18) + 0x14)
                        == 1);
  FUN_1813175f0(param_1);
  return param_1;
}



############ FUN_ 181317020 size=125 ############

void FUN_181317020(longlong param_1,char param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if ((*(longlong *)(param_1 + 0x1b0) != 0) != (bool)param_2) {
    if (param_2 == '\0') {
      puVar2 = *(undefined8 **)(param_1 + 0x1b0);
      *(undefined8 *)(param_1 + 0x1b0) = 0;
    }
    else {
      uVar1 = FUN_1811316e0(0x118);
      uVar3 = FUN_1804f8630(uVar1,param_1,param_3,param_4,uVar3);
      puVar2 = *(undefined8 **)(param_1 + 0x1b0);
      *(undefined8 *)(param_1 + 0x1b0) = uVar3;
    }
    if (puVar2 != (undefined8 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x000181317094. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)*puVar2)(puVar2,1);
      return;
    }
  }
  return;
}



############ FUN_ 1813175f0 size=592 ############

void FUN_1813175f0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  
  puVar3 = (undefined8 *)param_1[0x18];
  param_1[0x18] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1,param_3,param_4,0xfffffffffffffffe);
  }
  puVar3 = (undefined8 *)param_1[0x19];
  param_1[0x19] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if (*(code **)(*param_1 + 0x168) == FUN_181316130) {
    uVar4 = FUN_1811316e0(0x150);
    lVar5 = FUN_18131e970(uVar4,1);
  }
  else {
    lVar5 = (**(code **)(*param_1 + 0x168))(param_1,1);
  }
  puVar3 = (undefined8 *)param_1[0x18];
  param_1[0x18] = lVar5;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if (*(code **)(*param_1 + 0x168) == FUN_181316130) {
    uVar4 = FUN_1811316e0(0x150);
    lVar5 = FUN_18131e970(uVar4,0);
  }
  else {
    lVar5 = (**(code **)(*param_1 + 0x168))(param_1,0);
  }
  puVar3 = (undefined8 *)param_1[0x19];
  param_1[0x19] = lVar5;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if (param_1[0x18] != 0) {
    FUN_181343cc0(param_1,param_1[0x18],0xffffffff);
  }
  if (param_1[0x19] != 0) {
    FUN_181343cc0(param_1,param_1[0x19],0xffffffff);
  }
  plVar1 = param_1 + 0x17;
  if (plVar1 != (longlong *)0x0) {
    lVar5 = param_1[0x18];
    plVar7 = (longlong *)(lVar5 + 0x140);
    puVar6 = (undefined8 *)*plVar7;
    iVar2 = *(int *)(lVar5 + 0x14c);
    puVar3 = puVar6 + iVar2;
    for (; puVar6 != puVar3; puVar6 = puVar6 + 1) {
      if (plVar1 == (longlong *)*puVar6) goto LAB_181317782;
    }
    if (*(int *)(lVar5 + 0x148) < iVar2 + 1) {
      FUN_18047cb30(plVar7,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar5 + 0x14c);
    *(int *)(lVar5 + 0x14c) = iVar2 + 1;
    *(longlong **)(*plVar7 + (longlong)iVar2 * 8) = plVar1;
LAB_181317782:
    if (plVar1 != (longlong *)0x0) {
      lVar5 = param_1[0x19];
      plVar7 = (longlong *)(lVar5 + 0x140);
      puVar6 = (undefined8 *)*plVar7;
      iVar2 = *(int *)(lVar5 + 0x14c);
      puVar3 = puVar6 + iVar2;
      for (; puVar6 != puVar3; puVar6 = puVar6 + 1) {
        if (plVar1 == (longlong *)*puVar6) goto LAB_1813177e4;
      }
      if (*(int *)(lVar5 + 0x148) < iVar2 + 1) {
        FUN_18047cb30(plVar7,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)(lVar5 + 0x14c);
      *(int *)(lVar5 + 0x14c) = iVar2 + 1;
      *(longlong **)(*plVar7 + (longlong)iVar2 * 8) = plVar1;
    }
  }
LAB_1813177e4:
  if (*(code **)(*param_1 + 0x108) != thunk_FUN_1813165e0) {
    (**(code **)(*param_1 + 0x108))(param_1);
    return;
  }
  FUN_1813165e0();
  return;
}



############ FUN_ 181341570 size=288 ############

void FUN_181341570(longlong param_1,longlong param_2,char param_3)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  int iVar6;
  longlong *plVar7;
  
  if (*(longlong *)(param_1 + 0x70) == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0();
    *puVar5 = 0;
    puVar5[1] = 0;
    *(undefined4 *)(puVar5 + 2) = 0;
    puVar3 = *(undefined8 **)(param_1 + 0x70);
    *(undefined8 **)(param_1 + 0x70) = puVar5;
    if (puVar3 != (undefined8 *)0x0) {
      *(undefined4 *)((longlong)puVar3 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar3);
    }
  }
  plVar4 = *(longlong **)(param_1 + 0x70);
  plVar7 = (longlong *)*plVar4;
  iVar2 = *(int *)((longlong)plVar4 + 0xc);
  plVar1 = plVar7 + iVar2;
  while( true ) {
    if (plVar7 == plVar1) {
      iVar6 = iVar2 + 1;
      if (param_3 == '\0') {
        if ((int)plVar4[1] < iVar6) {
          FUN_18047cb30(plVar4,iVar2 + 9 + iVar6 / 2 & 0xfffffff8);
        }
        iVar2 = *(int *)((longlong)plVar4 + 0xc);
        *(int *)((longlong)plVar4 + 0xc) = iVar2 + 1;
        *(longlong *)(*plVar4 + (longlong)iVar2 * 8) = param_2;
      }
      else {
        if ((int)plVar4[1] < iVar6) {
          FUN_18047cb30(plVar4,iVar2 + 9 + iVar6 / 2 & 0xfffffff8);
        }
        if (*(int *)((longlong)plVar4 + 0xc) == 0) {
          *(longlong *)*plVar4 = param_2;
          *(int *)((longlong)plVar4 + 0xc) = *(int *)((longlong)plVar4 + 0xc) + 1;
          *(int *)(plVar4 + 2) = (int)plVar4[2] + 1;
        }
        else {
          memmove((void *)(*plVar4 + 8),(void *)*plVar4,
                  (longlong)*(int *)((longlong)plVar4 + 0xc) << 3);
          *(longlong *)*plVar4 = param_2;
          *(int *)((longlong)plVar4 + 0xc) = *(int *)((longlong)plVar4 + 0xc) + 1;
          *(int *)(plVar4 + 2) = (int)plVar4[2] + 1;
        }
      }
      return;
    }
    if (param_2 == *plVar7) break;
    plVar7 = plVar7 + 1;
  }
  return;
}



############ FUN_ 18134ab30 size=349 ############

void FUN_18134ab30(longlong *param_1,char param_2,undefined8 param_3,undefined1 param_4)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  int iVar4;
  
  cVar1 = FUN_18134aa20(param_1,0,param_3,param_4,0xfffffffffffffffe);
  if (cVar1 == '\0') {
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)FUN_1811316e0(0x28);
      FUN_1812a59f0(puVar2);
      FUN_1812a7230(puVar2 + 2);
      *puVar2 = juce::ModalComponentManager::vftable;
      puVar2[2] = juce::ModalComponentManager::vftable;
      puVar2[3] = 0;
      puVar2[4] = 0;
      DAT_182673c20 = puVar2;
    }
    puVar2 = DAT_182673c20;
    if (param_1 != (longlong *)0x0) {
      puVar3 = (undefined8 *)FUN_1811316e0(0x60);
      FUN_181322bc0(puVar3,param_1);
      *puVar3 = juce::ModalComponentManager::ModalItem::vftable;
      puVar3[8] = param_1;
      puVar3[9] = 0;
      puVar3[10] = 0;
      *(undefined4 *)(puVar3 + 0xb) = 0;
      *(undefined1 *)((longlong)puVar3 + 0x5c) = 1;
      *(undefined1 *)((longlong)puVar3 + 0x5d) = param_4;
      iVar4 = *(int *)((longlong)puVar2 + 0x24) + 1;
      if (*(int *)(puVar2 + 4) < iVar4) {
        FUN_18047cb30(puVar2 + 3,*(int *)((longlong)puVar2 + 0x24) + 9 + iVar4 / 2 & 0xfffffff8);
      }
      iVar4 = *(int *)((longlong)puVar2 + 0x24);
      *(int *)((longlong)puVar2 + 0x24) = iVar4 + 1;
      *(undefined8 **)(puVar2[3] + (longlong)iVar4 * 8) = puVar3;
    }
    FUN_18133b470(puVar2,param_1,param_3);
    (**(code **)(*param_1 + 0x58))(param_1,1);
    if (param_2 != '\0') {
      FUN_18133ed60(param_1,2,1);
    }
  }
  return;
}



############ FUN_ 181351c70 size=122 ############

undefined8 * FUN_181351c70(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x40);
  FUN_181351450(puVar1);
  *puVar1 = juce::SimpleValueSource::vftable;
  puVar1[2] = juce::SimpleValueSource::vftable;
  puVar1[6] = &PTR_vftable_18262b558;
  *param_1 = puVar1;
  LOCK();
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  UNLOCK();
  param_1[1] = 0;
  param_1[2] = 0;
  return param_1;
}



############ FUN_ 1812192a0 size=212 ############

undefined8 * FUN_1812192a0(undefined8 *param_1,undefined8 param_2)

{
  int iVar1;
  void *_Dst;
  
  *param_1 = juce::OutputStream::vftable;
  FUN_18049c4e0(param_1 + 1);
  *param_1 = juce::GZIPCompressorOutputStream::vftable;
  param_1[2] = param_2;
  *(undefined1 *)(param_1 + 3) = 0;
  _Dst = (void *)FUN_1811316e0(0x8060);
  *(undefined4 *)((longlong)_Dst + 0x58) = 9;
  *(undefined2 *)((longlong)_Dst + 0x5c) = 1;
  *(undefined1 *)((longlong)_Dst + 0x5e) = 0;
  memset(_Dst,0,0x58);
  iVar1 = FUN_18121fbc0(_Dst,*(undefined4 *)((longlong)_Dst + 0x58),8,0xf,8,0,"1.2.3");
  *(bool *)((longlong)_Dst + 0x5d) = iVar1 == 0;
  param_1[4] = _Dst;
  *param_1 = juce::GZIPCompressorOutputStream::vftable;
  return param_1;
}



############ FUN_ 18134f2a0 size=908 ############

undefined8 FUN_18134f2a0(longlong param_1)

{
  LPCRITICAL_SECTION p_Var1;
  uint *_Memory;
  uint uVar2;
  undefined1 *puVar3;
  undefined1 uVar4;
  char cVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  longlong *plVar9;
  bool bVar10;
  undefined1 *local_res10 [2];
  undefined1 local_res20 [8];
  undefined8 local_128;
  longlong alStack_120 [2];
  undefined1 *local_110;
  longlong local_108 [2];
  undefined2 local_f8;
  undefined1 *local_f0;
  undefined1 *local_e8;
  void *local_e0;
  undefined8 local_d8;
  undefined2 local_d0;
  undefined8 *local_c8;
  char *local_c0;
  char *local_b8 [3];
  undefined1 *local_a0;
  undefined1 *local_98;
  undefined1 *local_90;
  undefined1 local_88;
  undefined4 local_84;
  undefined *local_80;
  undefined8 local_78;
  LPCRITICAL_SECTION local_70;
  undefined8 *local_68;
  LPCRITICAL_SECTION local_60;
  undefined8 *local_50;
  
  local_78 = 0xfffffffffffffffe;
  local_128 = 0;
  alStack_120[0] = 0;
  puVar7 = (undefined8 *)0x0;
  alStack_120[1] = 0;
  lVar6 = FUN_18122bf10();
  if (s_PROPERTIES_1821e7430[0] == '\0') {
    local_110 = &DAT_1821dbf98;
  }
  else {
    p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
    local_70 = p_Var1;
    EnterCriticalSection(p_Var1);
    FUN_18122c130(lVar6);
    local_c0 = "PROPERTIES";
    FUN_181211b90(&local_110,lVar6,&local_c0);
    LeaveCriticalSection(p_Var1);
  }
  if (0 < *(int *)(param_1 + 0x14)) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar7 = 0;
    puVar7[1] = 0;
    puVar7[2] = 0;
    local_68 = puVar7;
    uVar8 = FUN_18122bf10();
    FUN_18122c330(uVar8,puVar7 + 3,"VALUE");
    plVar9 = alStack_120;
    lVar6 = alStack_120[0];
    while (lVar6 != 0) {
      plVar9 = (longlong *)*plVar9;
      lVar6 = *plVar9;
    }
    *plVar9 = (longlong)puVar7;
    lVar6 = FUN_18122bf10();
    if (DAT_1821e7428 == '\0') {
      local_res10[0] = &DAT_1821dbf98;
    }
    else {
      p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
      local_60 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar6);
      local_b8[0] = "name";
      FUN_181211b90(local_res10,lVar6,local_b8);
      LeaveCriticalSection(p_Var1);
    }
    puVar3 = local_res10[0];
    uVar8 = FUN_181249970(param_1 + 8,0);
    FUN_181246b70(puVar7,local_res10,uVar8);
    _Memory = (uint *)(puVar3 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    plVar9 = (longlong *)FUN_181249970(param_1 + 0x18,0);
    local_108[0] = *plVar9;
    if ((*(uint *)(local_108[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_108[0] + -0x10) = *(int *)(local_108[0] + -0x10) + 1;
      UNLOCK();
    }
    local_108[1] = 0;
    local_f8 = 0;
    local_f0 = &DAT_1821dbf98;
    local_e8 = &DAT_1821dbf98;
    local_e0 = (void *)0x0;
    local_d8 = 0;
    local_d0 = 0x100;
    local_c8 = (undefined8 *)0x0;
    FUN_181248430(local_108,local_res20);
    if (local_c8 != (undefined8 *)0x0) {
      (**(code **)*local_c8)(local_c8,1);
    }
    FUN_180488c50(&local_e0);
                    /* WARNING: Subroutine does not return */
    free(local_e0);
  }
  if (*(longlong *)(param_1 + 0xf0) != 0) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x10);
    uVar8 = *(undefined8 *)(param_1 + 0xf0);
    *puVar7 = uVar8;
    uVar4 = FUN_1812459c0(uVar8,0xffffffff);
    *(undefined1 *)(puVar7 + 1) = uVar4;
  }
  local_50 = puVar7;
  if ((puVar7 == (undefined8 *)0x0) || (*(char *)(puVar7 + 1) != '\0')) {
    local_a0 = &DAT_1821dbf98;
    local_98 = &DAT_1821dbf98;
    local_90 = &DAT_1821dbf98;
    local_88 = 1;
    local_84 = 0x3c;
    local_80 = &DAT_1821db4e4;
    cVar5 = FUN_1812470e0(&local_128,param_1 + 0xb8,&local_a0);
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    if (cVar5 != '\0') {
      *(undefined1 *)(param_1 + 0xf9) = 0;
      uVar8 = 1;
      goto LAB_18134f759;
    }
  }
  uVar8 = 0;
LAB_18134f759:
  if (puVar7 == (undefined8 *)0x0) {
    FUN_1812472e0(&local_128);
    return uVar8;
  }
  FUN_181245930(*puVar7);
                    /* WARNING: Subroutine does not return */
  free(puVar7);
}



############ FUN_ 18134f980 size=101 ############

undefined8 *
FUN_18134f980(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined1 uVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0xf0) != 0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x10);
    uVar1 = *(undefined8 *)(param_1 + 0xf0);
    *puVar3 = uVar1;
    uVar2 = FUN_1812459c0(uVar1,0xffffffff,param_3,param_4,uVar4);
    *(undefined1 *)(puVar3 + 1) = uVar2;
    return puVar3;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 181346500 size=1188 ############

ulonglong FUN_181346500(undefined4 param_1,longlong *param_2,longlong *param_3,undefined8 *param_4,
                       undefined8 *param_5,undefined8 param_6,longlong param_7)

{
  int *piVar1;
  undefined8 *puVar2;
  char *pcVar3;
  bool bVar4;
  longlong lVar5;
  int iVar6;
  undefined8 uVar7;
  ulonglong uVar8;
  longlong *plVar9;
  uint uVar10;
  uint *puVar11;
  char **ppcVar12;
  longlong lVar13;
  bool bVar14;
  undefined4 local_d8;
  undefined4 uStack_d4;
  char *local_d0;
  char *local_c8;
  char *local_c0;
  longlong local_b8;
  char *local_b0;
  longlong local_a8;
  longlong local_a0;
  char *local_98;
  char *local_90;
  undefined1 *local_88;
  undefined4 local_80;
  undefined8 local_7c;
  undefined1 local_70 [8];
  longlong local_68;
  undefined1 local_60;
  undefined8 local_58;
  undefined4 *local_48;
  
  local_58 = 0xfffffffffffffffe;
  lVar13 = 0;
  local_d8 = 0;
  if (DAT_182673700 == 0) {
    local_c8 = (char *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_c8);
  }
  lVar5 = DAT_182673700;
  if (*(longlong *)(DAT_182673700 + 0x98) != 0) {
    lVar13 = *(longlong *)(*(longlong *)(DAT_182673700 + 0x98) + 0x10);
  }
  if (lVar13 == 0) {
    if (*(longlong *)(DAT_182673700 + 0x90) == 0) {
      uVar7 = FUN_1811316e0(0x170);
      uVar7 = FUN_1812fbfd0(uVar7);
      puVar2 = *(undefined8 **)(lVar5 + 0x90);
      *(undefined8 *)(lVar5 + 0x90) = uVar7;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
      }
    }
    lVar13 = *(longlong *)(lVar5 + 0x90);
    FUN_18051b750(lVar5 + 0x98,lVar13);
  }
  if (*(char *)(lVar13 + 0x118) == '\0') {
    local_a8 = *param_2;
    if ((*(uint *)(local_a8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a8 + -0x10) = *(int *)(local_a8 + -0x10) + 1;
      UNLOCK();
    }
    local_a0 = *param_3;
    if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
      UNLOCK();
    }
    local_98 = "";
    local_90 = "";
    local_88 = &DAT_1821dbf98;
    bVar4 = false;
    bVar14 = true;
    local_7c = 2;
    local_80 = param_1;
    FUN_1804de690(local_70,param_6);
    local_68 = param_7;
    local_60 = param_7 == 0;
    pcVar3 = (char *)*param_4;
    if (*pcVar3 == '\0') {
      FUN_18049c4e0(&local_d8,&DAT_1821e337c);
      lVar13 = DAT_1826739f8;
      local_48 = &DAT_182673984;
      do {
        LOCK();
        uVar10 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar10 != 0);
      if (DAT_1826739f8 == 0) {
        local_d0 = (char *)CONCAT44(uStack_d4,local_d8);
        if ((*(uint *)(local_d0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
          UNLOCK();
        }
      }
      else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
              (iVar6 = FUN_1812498b0(DAT_1826739f8 + 0x18,CONCAT44(uStack_d4,local_d8),
                                     *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar6)) {
        iVar6 = FUN_1812498b0(lVar13 + 0x18,CONCAT44(uStack_d4,local_d8),
                              *(undefined1 *)(lVar13 + 0x38),0);
        if (iVar6 < 0) {
          local_d0 = (char *)CONCAT44(uStack_d4,local_d8);
          uVar10 = *(uint *)(local_d0 + -0x10);
        }
        else {
          plVar9 = (longlong *)FUN_181249970(lVar13 + 0x28,iVar6);
          local_d0 = (char *)*plVar9;
          uVar10 = *(uint *)(local_d0 + -0x10);
        }
        if ((uVar10 & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(*(undefined8 *)(lVar13 + 0x40),&local_d0,&local_d8,&local_d8);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar11 = (uint *)(CONCAT44(uStack_d4,local_d8) + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      ppcVar12 = &local_d0;
      bVar4 = true;
      bVar14 = false;
    }
    else {
      local_c0 = pcVar3;
      if ((*(uint *)(pcVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pcVar3 + -0x10) = *(int *)(pcVar3 + -0x10) + 1;
        UNLOCK();
      }
      ppcVar12 = &local_c0;
    }
    if ((*(uint *)(*ppcVar12 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*ppcVar12 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    pcVar3 = *ppcVar12;
    LOCK();
    UNLOCK();
    puVar11 = (uint *)(local_98 + -0x10);
    local_98 = pcVar3;
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((bVar14) && (puVar11 = (uint *)(local_c0 + -0x10), (*puVar11 & 0x30000000) == 0)) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((bVar4) && (puVar11 = (uint *)(local_d0 + -0x10), (*puVar11 & 0x30000000) == 0)) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    pcVar3 = (char *)*param_5;
    if (*pcVar3 == '\0') {
      FUN_18049c4e0(&local_b8,"Cancel");
      FUN_1812344e0(&local_c8,&local_b8);
      puVar11 = (uint *)(local_b8 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      ppcVar12 = &local_c8;
      bVar4 = true;
      bVar14 = false;
    }
    else {
      local_b0 = pcVar3;
      if ((*(uint *)(pcVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pcVar3 + -0x10) = *(int *)(pcVar3 + -0x10) + 1;
        UNLOCK();
      }
      ppcVar12 = &local_b0;
      bVar4 = false;
      bVar14 = true;
    }
    if ((*(uint *)(*ppcVar12 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*ppcVar12 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    pcVar3 = *ppcVar12;
    LOCK();
    UNLOCK();
    puVar11 = (uint *)(local_90 + -0x10);
    local_90 = pcVar3;
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((bVar14) && (puVar11 = (uint *)(local_b0 + -0x10), (*puVar11 & 0x30000000) == 0)) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((bVar4) && (puVar11 = (uint *)(local_c8 + -0x10), (*puVar11 & 0x30000000) == 0)) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    uVar7 = FUN_1812a7550();
    FUN_1812a6500(uVar7,FUN_18050c240,&local_a8);
    bVar14 = local_7c._4_4_ != 0;
    FUN_18050c250(&local_a8);
    uVar8 = (ulonglong)bVar14;
  }
  else {
    uVar8 = FUN_1812c6290(param_1,param_2,param_3,param_6,param_7);
  }
  return uVar8;
}



############ FUN_ 1812a6500 size=248 ############

undefined8 FUN_1812a6500(longlong param_1,code *param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  DWORD DVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  
  DVar4 = GetCurrentThreadId();
  if ((ulonglong)DVar4 == *(ulonglong *)(param_1 + 0x10)) {
    uVar5 = (*param_2)(param_3);
  }
  else {
    puVar6 = (undefined8 *)FUN_1811316e0(0xd0);
    uVar5 = 0;
    *(undefined4 *)(puVar6 + 1) = 0;
    *puVar6 = juce::AsyncFunctionCallback::vftable;
    *(undefined1 *)(puVar6 + 2) = 0;
    _Mtx_init_in_situ(puVar6 + 3,2);
    _Cnd_init_in_situ(puVar6 + 0xd);
    *(undefined1 *)(puVar6 + 0x16) = 0;
    puVar6[0x17] = 0;
    puVar6[0x18] = param_2;
    puVar6[0x19] = param_3;
    LOCK();
    *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
    UNLOCK();
    cVar3 = FUN_1812a6720(puVar6);
    if (cVar3 != '\0') {
      FUN_181215c90(puVar6 + 2,0xffffffff);
      uVar5 = puVar6[0x17];
    }
    LOCK();
    piVar1 = (int *)(puVar6 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
  return uVar5;
}



############ FUN_ 1812c6290 size=202 ############

bool FUN_1812c6290(undefined4 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  bool bVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  uVar2 = FUN_1811316e0(0x38);
  puVar3 = (undefined8 *)
           FUN_1805166a0(uVar2,param_1,param_2,param_3,param_4,1,param_5,param_5 != 0,uVar5,uVar2);
  if (param_5 == 0) {
    iVar1 = FUN_1805167d0(puVar3);
    bVar4 = iVar1 != 0;
  }
  else {
    puVar3 = (undefined8 *)0x0;
    bVar4 = false;
  }
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  return bVar4;
}



############ FUN_ 1813469b0 size=917 ############

void FUN_1813469b0(undefined4 param_1,longlong *param_2,longlong *param_3,undefined8 *param_4,
                  char *param_5,char *param_6)

{
  int *piVar1;
  undefined8 *puVar2;
  char *pcVar3;
  bool bVar4;
  bool bVar5;
  longlong lVar6;
  int iVar7;
  undefined8 uVar8;
  ulonglong *puVar9;
  uint uVar10;
  uint *puVar11;
  char **ppcVar12;
  longlong lVar13;
  char *local_b8 [2];
  longlong local_a8;
  longlong local_a0;
  char *local_98;
  undefined1 *local_90;
  undefined1 *local_88;
  undefined4 local_80;
  undefined8 local_7c;
  undefined1 local_70 [8];
  undefined8 local_68;
  undefined1 local_60;
  undefined8 local_58;
  undefined4 *local_48;
  
  local_58 = 0xfffffffffffffffe;
  lVar13 = 0;
  param_5 = (char *)((ulonglong)param_5 & 0xffffffff00000000);
  if (DAT_182673700 == 0) {
    param_5 = (char *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(param_5);
  }
  lVar6 = DAT_182673700;
  if (*(longlong *)(DAT_182673700 + 0x98) != 0) {
    lVar13 = *(longlong *)(*(longlong *)(DAT_182673700 + 0x98) + 0x10);
  }
  if (lVar13 == 0) {
    if (*(longlong *)(DAT_182673700 + 0x90) == 0) {
      uVar8 = FUN_1811316e0(0x170);
      uVar8 = FUN_1812fbfd0(uVar8);
      puVar2 = *(undefined8 **)(lVar6 + 0x90);
      *(undefined8 *)(lVar6 + 0x90) = uVar8;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
      }
    }
    lVar13 = *(longlong *)(lVar6 + 0x90);
    FUN_18051b750(lVar6 + 0x98,lVar13);
  }
  if (*(char *)(lVar13 + 0x118) == '\0') {
    local_a8 = *param_2;
    if ((*(uint *)(local_a8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a8 + -0x10) = *(int *)(local_a8 + -0x10) + 1;
      UNLOCK();
    }
    local_a0 = *param_3;
    if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
      UNLOCK();
    }
    local_98 = "";
    local_90 = &DAT_1821dbf98;
    local_88 = &DAT_1821dbf98;
    local_7c = 1;
    local_80 = param_1;
    FUN_1804de690(local_70,0);
    local_68 = 0;
    local_60 = 0;
    pcVar3 = (char *)*param_4;
    if (*pcVar3 == '\0') {
      FUN_18049c4e0(&param_5,&DAT_1821e327c);
      lVar13 = DAT_1826739f8;
      local_48 = &DAT_182673984;
      do {
        LOCK();
        uVar10 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar10 != 0);
      if (DAT_1826739f8 == 0) {
        param_6 = param_5;
        if ((*(uint *)(param_5 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(param_5 + -0x10) = *(int *)(param_5 + -0x10) + 1;
          UNLOCK();
        }
      }
      else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
              (iVar7 = FUN_1812498b0(DAT_1826739f8 + 0x18,param_5,
                                     *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar7)) {
        iVar7 = FUN_1812498b0(lVar13 + 0x18,param_5,*(undefined1 *)(lVar13 + 0x38),0);
        if (iVar7 < 0) {
          uVar10 = *(uint *)(param_5 + -0x10);
          param_6 = param_5;
        }
        else {
          puVar9 = (ulonglong *)FUN_181249970(lVar13 + 0x28,iVar7);
          uVar10 = *(uint *)((char *)*puVar9 + -0x10);
          param_6 = (char *)*puVar9;
        }
        if ((uVar10 & 0x30000000) == 0) {
          LOCK();
          *(int *)(param_6 + -0x10) = *(int *)(param_6 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(*(undefined8 *)(lVar13 + 0x40),&param_6,&param_5,&param_5);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar11 = (uint *)(param_5 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      ppcVar12 = &param_6;
      bVar5 = true;
      bVar4 = false;
    }
    else {
      local_b8[0] = pcVar3;
      if ((*(uint *)(pcVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pcVar3 + -0x10) = *(int *)(pcVar3 + -0x10) + 1;
        UNLOCK();
      }
      ppcVar12 = local_b8;
      bVar5 = false;
      bVar4 = true;
    }
    if ((*(uint *)(*ppcVar12 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*ppcVar12 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    pcVar3 = *ppcVar12;
    LOCK();
    UNLOCK();
    puVar11 = (uint *)(local_98 + -0x10);
    local_98 = pcVar3;
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((bVar4) && (puVar11 = (uint *)(local_b8[0] + -0x10), (*puVar11 & 0x30000000) == 0)) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((bVar5) && (puVar11 = (uint *)(param_6 + -0x10), (*puVar11 & 0x30000000) == 0)) {
      LOCK();
      uVar10 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    uVar8 = FUN_1812a7550();
    FUN_1812a6500(uVar8,FUN_18050c240,&local_a8);
    FUN_18050c250(&local_a8);
  }
  else {
    param_5 = (char *)FUN_1811316e0(0x38);
    FUN_1805166a0(param_5,param_1,param_2,param_3,0,0,0,1);
  }
  return;
}



############ FUN_ 1812b9780 size=1152 ############

/* WARNING: Removing unreachable block (ram,0x0001812b98b4) */
/* WARNING: Removing unreachable block (ram,0x0001812b98da) */
/* WARNING: Removing unreachable block (ram,0x0001812b98e0) */
/* WARNING: Removing unreachable block (ram,0x0001812b9924) */
/* WARNING: Removing unreachable block (ram,0x0001812b98eb) */
/* WARNING: Removing unreachable block (ram,0x0001812b9930) */
/* WARNING: Removing unreachable block (ram,0x0001812b9934) */
/* WARNING: Removing unreachable block (ram,0x0001812b9966) */
/* WARNING: Removing unreachable block (ram,0x0001812b9945) */
/* WARNING: Removing unreachable block (ram,0x0001812b9949) */
/* WARNING: Removing unreachable block (ram,0x0001812b9952) */

undefined4 FUN_1812b9780(longlong *param_1,undefined8 param_2,undefined8 *param_3)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  char *pcVar4;
  int iVar5;
  undefined8 *puVar6;
  void *pvVar7;
  undefined8 uVar8;
  uint *puVar9;
  int iVar10;
  longlong lVar11;
  void *pvVar12;
  longlong lVar13;
  char *local_res8;
  int local_res10;
  undefined8 *local_res18;
  char *local_res20;
  void *local_c8 [2];
  char *local_b8;
  longlong local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  void *local_98;
  longlong local_90;
  longlong local_88;
  longlong local_80 [2];
  LPCRITICAL_SECTION local_70;
  undefined8 local_60;
  undefined8 local_58;
  
  local_80[1] = 0xfffffffffffffffe;
  LOCK();
  plVar1 = param_1 + 7;
  lVar3 = *plVar1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  UNLOCK();
  iVar10 = (int)lVar3 + -1;
  if (-1 < iVar10) {
    local_res10 = iVar10;
    local_res18 = param_3;
    puVar6 = (undefined8 *)FUN_181249970(param_1 + 2,iVar10);
    local_res8 = (char *)*puVar6;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    if (*local_res8 != '\0') {
      local_b0 = param_1[1];
      lVar3 = *param_1;
      local_70 = (LPCRITICAL_SECTION)(lVar3 + 0x8c);
      EnterCriticalSection(local_70);
      pcVar4 = local_res8;
      lVar11 = *(longlong *)(lVar3 + 0x38);
      lVar13 = (longlong)*(int *)(lVar3 + 0x44) * 0x60 + lVar11;
      pvVar12 = (void *)0x0;
      if (lVar11 != lVar13) {
        puVar6 = (undefined8 *)(lVar11 + 0x30);
        do {
          iVar10 = 0;
          if ((char *)*puVar6 != pcVar4) {
            iVar10 = FUN_18048cbc0(*puVar6,pcVar4);
          }
          if (iVar10 == 0) {
            uVar8 = FUN_1811316e0(0x60);
            pvVar7 = (void *)FUN_1804d7090(uVar8,lVar11);
            local_98 = pvVar7;
            LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x8c));
            goto LAB_1812b988a;
          }
          lVar11 = lVar11 + 0x60;
          puVar6 = puVar6 + 0xc;
        } while (lVar11 != lVar13);
      }
      local_98 = (void *)0x0;
      LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x8c));
      pvVar7 = pvVar12;
LAB_1812b988a:
      if (pvVar7 != (void *)0x0) {
        FUN_1804d7190(pvVar7);
                    /* WARNING: Subroutine does not return */
        free(pvVar7);
      }
      puVar6 = (undefined8 *)
               (**(code **)(*(longlong *)param_1[1] + 0x28))
                         ((longlong *)param_1[1],&local_90,&local_res8);
      local_60 = *local_res18;
      *local_res18 = *puVar6;
      *puVar6 = local_60;
      puVar9 = (uint *)(local_90 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      local_a8 = 0;
      local_a0 = 0;
      FUN_1812ba080(local_c8,param_1 + 4);
      FUN_18122d7a0(local_c8,local_res8,0);
      local_res20 = local_res8;
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
      FUN_18122dc00(local_c8,&local_res20);
      if (*(char *)param_1[4] != '\0') {
        uVar8 = FUN_18122d360(local_c8,&local_88,&DAT_1821e2754);
        FUN_1812447f0(param_1 + 4,uVar8,1,1,&DAT_1821e2764);
        puVar9 = (uint *)(local_88 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
      }
      FUN_1812ba960(*param_1,&local_res8);
      FUN_18122d7a0(local_c8,local_res8,0);
      if (*(char *)param_1[4] != '\0') {
        uVar8 = FUN_18122d360(local_c8,local_80,&DAT_1821e2754);
        FUN_1812447f0(param_1 + 4,uVar8,1,1,&DAT_1821e2764);
        puVar9 = (uint *)(local_80[0] + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
      }
      pcVar4 = local_res8;
      if (local_a0._4_4_ == 0) {
        iVar10 = *(int *)(*param_1 + 0x54);
        if (0 < iVar10) {
          puVar6 = *(undefined8 **)(*param_1 + 0x48);
          pvVar7 = pvVar12;
          do {
            local_58 = *puVar6;
            iVar5 = FUN_18048cbc0(pcVar4);
            if (iVar5 == 0) {
              if (-1 < (int)pvVar7) goto LAB_1812b9b80;
              break;
            }
            pvVar7 = (void *)(ulonglong)((int)pvVar7 + 1);
            pvVar12 = (void *)((longlong)pvVar12 + 1);
            puVar6 = puVar6 + 1;
          } while ((longlong)pvVar12 < (longlong)iVar10);
        }
        local_b8 = pcVar4;
        if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(pcVar4 + -0x10) = *(int *)(pcVar4 + -0x10) + 1;
          UNLOCK();
        }
        FUN_18122dc00(param_1 + 5,&local_b8);
      }
LAB_1812b9b80:
      FUN_180488c50(local_c8);
                    /* WARNING: Subroutine does not return */
      free(local_c8[0]);
    }
    puVar9 = (uint *)(local_res8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  *(float *)((longlong)param_1 + 0x3c) =
       DAT_1824c3ea4 - (float)(int)param_1[7] / (float)*(int *)((longlong)param_1 + 0x1c);
  return CONCAT31((int3)((uint)(int)param_1[7] >> 8),0 < iVar10);
}



############ FUN_ 1812ba960 size=1188 ############

bool FUN_1812ba960(longlong param_1,longlong *param_2,undefined8 param_3,longlong *param_4,
                  longlong *param_5)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong lVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  longlong *plVar6;
  longlong *plVar7;
  undefined8 uVar8;
  longlong *plVar9;
  void *pvVar10;
  int iVar11;
  uint *_Memory;
  uint uVar12;
  longlong *plVar13;
  int iVar14;
  undefined8 *puVar15;
  longlong lVar16;
  bool bVar17;
  longlong *local_98;
  undefined8 local_90;
  void *local_88;
  longlong local_80;
  LPCRITICAL_SECTION local_78;
  undefined8 local_70;
  LPCRITICAL_SECTION local_68;
  LPCRITICAL_SECTION local_60;
  longlong local_58;
  undefined8 local_50;
  LPCRITICAL_SECTION local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_78 = (LPCRITICAL_SECTION)(param_1 + 0x60);
  local_68 = local_78;
  EnterCriticalSection(local_78);
  plVar6 = (longlong *)FUN_1812bb2e0(param_1,&local_88,param_2);
  bVar17 = false;
  if (local_88 != (void *)0x0) {
    FUN_1804d7190(local_88);
                    /* WARNING: Subroutine does not return */
    free(local_88);
  }
  if (*plVar6 == 0) {
LAB_1812bab3c:
    lVar1 = *param_2;
    iVar14 = 0;
    iVar11 = *(int *)(param_1 + 0x54);
    local_58 = lVar1;
    if (0 < iVar11) {
      lVar16 = 0;
      puVar15 = *(undefined8 **)(param_1 + 0x48);
      do {
        local_50 = *puVar15;
        iVar5 = FUN_18048cbc0(lVar1);
        if (iVar5 == 0) {
          if (-1 < iVar14) {
            bVar17 = false;
            goto LAB_1812badde;
          }
          break;
        }
        iVar14 = iVar14 + 1;
        lVar16 = lVar16 + 1;
        puVar15 = puVar15 + 1;
      } while (lVar16 < iVar11);
    }
    local_98 = (longlong *)0x0;
    local_90 = 0;
    lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x60);
    local_48 = lpCriticalSection;
    LeaveCriticalSection(lpCriticalSection);
    plVar6 = *(longlong **)(param_1 + 0x58);
    if (plVar6 == (longlong *)0x0) {
      (**(code **)(*param_5 + 0x18))(param_5,&local_98,param_2);
    }
    else {
      cVar4 = (**(code **)(*plVar6 + 8))(plVar6,param_5,&local_98,param_2);
      if (cVar4 == '\0') {
        FUN_1812ba430(param_1,param_2);
      }
    }
    EnterCriticalSection(lpCriticalSection);
    plVar6 = local_98 + local_90._4_4_;
    plVar13 = local_98;
    if (local_98 != plVar6) {
      do {
        plVar7 = (longlong *)*plVar13;
        FUN_1812bb1d0(param_1,plVar7);
        plVar9 = (longlong *)FUN_1811316e0(0x60);
        lVar1 = *plVar7;
        *plVar9 = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        lVar1 = plVar7[1];
        plVar9[1] = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        lVar1 = plVar7[2];
        plVar9[2] = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        lVar1 = plVar7[3];
        plVar9[3] = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        lVar1 = plVar7[4];
        plVar9[4] = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        lVar1 = plVar7[5];
        plVar9[5] = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        lVar1 = plVar7[6];
        plVar9[6] = lVar1;
        if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
          UNLOCK();
        }
        plVar9[7] = plVar7[7];
        plVar9[8] = plVar7[8];
        *(int *)(plVar9 + 9) = (int)plVar7[9];
        *(undefined1 *)((longlong)plVar9 + 0x4c) = *(undefined1 *)((longlong)plVar7 + 0x4c);
        *(int *)(plVar9 + 10) = (int)plVar7[10];
        *(undefined4 *)((longlong)plVar9 + 0x54) = *(undefined4 *)((longlong)plVar7 + 0x54);
        *(char *)(plVar9 + 0xb) = (char)plVar7[0xb];
        iVar14 = *(int *)((longlong)param_4 + 0xc);
        iVar11 = iVar14 + 1;
        if ((int)*(uint *)(param_4 + 1) < iVar11) {
          if (iVar11 < 0) {
            iVar11 = iVar14 + 2;
          }
          uVar12 = iVar14 + 9 + (iVar11 >> 1) & 0xfffffff8;
          if (*(uint *)(param_4 + 1) != uVar12) {
            pvVar10 = (void *)*param_4;
            if ((int)uVar12 < 1) {
                    /* WARNING: Subroutine does not return */
              free(pvVar10);
            }
            if (pvVar10 == (void *)0x0) {
              pvVar10 = malloc((longlong)(int)uVar12 * 8);
              *param_4 = (longlong)pvVar10;
            }
            else {
              pvVar10 = realloc(pvVar10,(longlong)(int)uVar12 * 8);
              *param_4 = (longlong)pvVar10;
            }
          }
          *(uint *)(param_4 + 1) = uVar12;
        }
        iVar11 = *(int *)((longlong)param_4 + 0xc);
        *(int *)((longlong)param_4 + 0xc) = iVar11 + 1;
        *(longlong **)(*param_4 + (longlong)iVar11 * 8) = plVar9;
        plVar13 = plVar13 + 1;
      } while (plVar13 != plVar6);
    }
    bVar17 = local_90._4_4_ != 0;
    FUN_1804db390(&local_98);
  }
  else {
    bVar3 = false;
    local_60 = (LPCRITICAL_SECTION)(param_1 + 0x8c);
    EnterCriticalSection(local_60);
    plVar6 = *(longlong **)(param_1 + 0x38);
    iVar11 = *(int *)(param_1 + 0x44);
    if (plVar6 != plVar6 + (longlong)iVar11 * 0xc) {
      plVar13 = plVar6 + 2;
      do {
        if (plVar13[4] == *param_2) {
          iVar14 = 0;
        }
        else {
          iVar14 = FUN_18048cbc0(plVar13[4],*param_2);
        }
        if (iVar14 == 0) {
          plVar7 = (longlong *)(**(code **)(*param_5 + 0x10))(param_5,&local_80);
          bVar17 = true;
          if (*plVar13 == *plVar7) {
            iVar14 = 0;
          }
          else {
            iVar14 = FUN_18048cbc0(*plVar13,*plVar7);
          }
          if (iVar14 != 0) goto LAB_1812baa9b;
          bVar2 = true;
        }
        else {
LAB_1812baa9b:
          bVar2 = false;
        }
        if (bVar17) {
          bVar17 = false;
          _Memory = (uint *)(local_80 + -0x10);
          if ((*_Memory & 0x30000000) == 0) {
            LOCK();
            uVar12 = *_Memory;
            *_Memory = *_Memory - 1;
            UNLOCK();
            if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
        }
        if (bVar2) {
          cVar4 = (**(code **)(*param_5 + 0x30))(param_5,plVar13 + -2);
          if (cVar4 == '\0') {
            uVar8 = FUN_1811316e0(0x60);
            uVar8 = FUN_1804d7090(uVar8,plVar13 + -2);
            FUN_180485e60(param_4,uVar8);
          }
          else {
            bVar3 = true;
          }
        }
        plVar7 = plVar13 + 10;
        plVar13 = plVar13 + 0xc;
      } while (plVar7 != plVar6 + (longlong)iVar11 * 0xc);
      if (bVar3) {
        LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
        goto LAB_1812bab3c;
      }
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
    bVar17 = false;
  }
LAB_1812badde:
  LeaveCriticalSection(local_78);
  return bVar17;
}



############ FUN_ 1812bb2e0 size=206 ############

undefined8 * FUN_1812bb2e0(longlong param_1,undefined8 *param_2,longlong *param_3)

{
  longlong lVar1;
  int iVar2;
  undefined8 uVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong lVar6;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  lVar6 = *(longlong *)(param_1 + 0x38);
  lVar5 = (longlong)*(int *)(param_1 + 0x44) * 0x60 + lVar6;
  if (lVar6 != lVar5) {
    lVar1 = *param_3;
    plVar4 = (longlong *)(lVar6 + 0x30);
    do {
      if (*plVar4 == lVar1) {
        iVar2 = 0;
      }
      else {
        iVar2 = FUN_18048cbc0(*plVar4,lVar1);
      }
      if (iVar2 == 0) {
        uVar3 = FUN_1811316e0(0x60);
        uVar3 = FUN_1804d7090(uVar3,lVar6);
        *param_2 = uVar3;
        goto LAB_1812bb371;
      }
      lVar6 = lVar6 + 0x60;
      plVar4 = plVar4 + 0xc;
    } while (lVar6 != lVar5);
  }
  *param_2 = 0;
LAB_1812bb371:
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  return param_2;
}



############ FUN_ 1804dbe40 size=962 ############

void FUN_1804dbe40(undefined8 *param_1,longlong param_2,undefined4 param_3)

{
  longlong *plVar1;
  uint *puVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  undefined8 *puVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  uint *puVar15;
  int iVar16;
  uint uVar17;
  longlong lVar19;
  undefined8 local_res8;
  longlong local_a8;
  int local_a0;
  uint uStack_9c;
  undefined8 local_98;
  int local_90;
  undefined4 local_8c;
  int iStack_88;
  int local_84;
  undefined8 local_80;
  longlong *local_78;
  uint *local_70;
  uint *local_68;
  longlong local_60;
  undefined8 local_58;
  uint uVar18;
  
  local_58 = 0xfffffffffffffffe;
  local_78 = *(longlong **)(param_2 + 0x28);
  iVar13 = (int)local_78[0x20];
  iVar7 = *(int *)((longlong)local_78 + 0x104);
  local_90 = iVar13;
  if (iVar13 < iVar7) {
    local_90 = iVar7;
  }
  uVar5 = 0;
  local_a8 = 0;
  local_a0 = 0;
  uStack_9c = 0;
  uVar14 = *(uint *)(param_2 + 0x10);
  FUN_1812bcde0(*param_1);
  uVar17 = uVar5;
  uVar18 = uVar5;
  for (puVar15 = local_70; puVar15 != local_68; puVar15 = puVar15 + 4) {
    if (puVar15[2] == uVar14) {
      for (puVar2 = *(uint **)(param_1[9] +
                              (longlong)(int)(*puVar15 % *(uint *)((longlong)param_1 + 0x54)) * 8);
          puVar2 != (uint *)0x0; puVar2 = *(uint **)(puVar2 + 2)) {
        if (*puVar2 == *puVar15) {
          uVar10 = puVar2[1];
          goto LAB_1804dbf03;
        }
      }
      uVar10 = 0;
LAB_1804dbf03:
      bVar3 = (int)uVar17 < (int)uVar10;
      uVar17 = uVar18;
      if (bVar3) {
        uVar17 = uVar10;
        uVar18 = uVar10;
      }
    }
  }
  if (local_70 != (uint *)0x0) {
    puVar15 = local_70;
    if ((0xfff < (local_60 - (longlong)local_70 & 0xfffffffffffffff0U)) &&
       (puVar15 = *(uint **)(local_70 + -2),
       0x1f < (ulonglong)((longlong)local_70 + (-8 - (longlong)puVar15)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(puVar15);
  }
  iVar12 = 0;
  if (0 < iVar13) {
    do {
      iVar6 = FUN_1804dd330(param_1,param_2,iVar12,param_3,uVar17);
      iVar16 = uVar5 + 1;
      uVar14 = uVar5;
      local_84 = iVar6;
      if (local_a0 < iVar16) {
        iVar11 = iVar16;
        if (iVar16 < 0) {
          iVar11 = uVar5 + 2;
        }
        FUN_1804af790(&local_a8,iVar16 + (iVar11 >> 1) + 8 & 0xfffffff8);
        uVar14 = uStack_9c;
      }
      uVar5 = uVar14 + 1;
      *(int *)(local_a8 + (longlong)(int)uVar14 * 4) = iVar6;
      if (iVar12 < iVar7) {
        local_98 = CONCAT44(iVar12,*(undefined4 *)(param_2 + 0x10));
        *(undefined8 *)(param_1[4] + (longlong)iVar6 * 8) = local_98;
      }
      iVar12 = iVar12 + 1;
      uStack_9c = uVar5;
    } while (iVar12 < iVar13);
  }
  if (iVar13 < iVar7) {
    plVar1 = param_1 + 4;
    lVar19 = local_a8;
    iVar12 = local_a0;
    do {
      iVar16 = iVar13;
      iVar13 = 1;
      if (1 < *(int *)((longlong)param_1 + 0x2c)) {
        piVar8 = (int *)*plVar1;
        do {
          piVar8 = piVar8 + 2;
          if (*piVar8 == 0x7fffffff) goto LAB_1804dc03b;
          iVar13 = iVar13 + 1;
        } while (iVar13 < *(int *)((longlong)param_1 + 0x2c));
      }
      local_98 = 0x7fffffff;
      local_80 = 0x7fffffff;
      FUN_1804dbb20(plVar1,&local_80);
      iVar13 = *(int *)((longlong)param_1 + 0x2c) + -1;
LAB_1804dc03b:
      iVar6 = uVar5 + 1;
      uVar14 = uVar5;
      if (iVar12 < iVar6) {
        if (iVar6 < 0) {
          iVar6 = uVar5 + 2;
        }
        FUN_1804af790(&local_a8,uVar5 + 9 + (iVar6 >> 1) & 0xfffffff8);
        lVar19 = local_a8;
        uVar14 = uStack_9c;
        iVar12 = local_a0;
      }
      uVar5 = uVar14 + 1;
      *(int *)(lVar19 + (longlong)(int)uVar14 * 4) = iVar13;
      local_8c = *(undefined4 *)(param_2 + 0x10);
      *(ulonglong *)(*plVar1 + (longlong)iVar13 * 8) = CONCAT44(iVar16,local_8c);
      iVar13 = iVar16 + 1;
      iStack_88 = iVar16;
      uStack_9c = uVar5;
    } while (iVar16 + 1 < iVar7);
  }
  iVar13 = FUN_1804dcf30(param_1,param_2,param_3);
  plVar1 = local_78;
  if ((*(code **)(*local_78 + 0x78) !=
       .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
       vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) &&
     (cVar4 = (**(code **)(*local_78 + 0x78))(local_78), cVar4 != '\0')) {
    local_res8 = CONCAT44(0x1000,*(undefined4 *)(param_2 + 0x10));
    *(undefined8 *)(param_1[6] + (longlong)iVar13 * 8) = local_res8;
  }
  iVar12 = *(int *)((longlong)plVar1 + 0x3c);
  piVar8 = (int *)FUN_1804def70(param_1 + 8,*(undefined4 *)(param_2 + 0x10));
  *piVar8 = iVar12 + uVar17;
  if (iVar7 == 0) {
    *(uint *)(param_1 + 0xc) = uVar17;
  }
  LOCK();
  *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
  UNLOCK();
  puVar9 = (undefined8 *)FUN_1811316e0(0x288);
  *puVar9 = juce::GraphRenderSequence<double>::ProcessOp::vftable;
  puVar9[1] = param_2;
  LOCK();
  *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
  UNLOCK();
  puVar9[2] = *(undefined8 *)(param_2 + 0x28);
  puVar9[3] = 0;
  puVar9[4] = 0;
  FUN_1804e0430(puVar9 + 3,local_a8,uStack_9c);
  puVar9[5] = 0;
  puVar9[6] = 0;
  puVar9[7] = 0;
  puVar9[8] = puVar9 + 10;
  puVar9[9] = 0;
  *(undefined1 *)(puVar9 + 0x2a) = 0;
  puVar9[0x2b] = 0;
  puVar9[0x2c] = 0;
  puVar9[0x2d] = puVar9 + 0x2f;
  puVar9[0x2e] = 0;
  *(undefined1 *)(puVar9 + 0x4f) = 0;
  iVar7 = 1;
  if (1 < local_90) {
    iVar7 = local_90;
  }
  *(int *)(puVar9 + 0x50) = iVar7;
  *(int *)((longlong)puVar9 + 0x284) = iVar13;
                    /* WARNING: Subroutine does not return */
  free((void *)puVar9[5]);
}



############ FUN_ 1804dcf30 size=990 ############

void FUN_1804dcf30(longlong param_1,longlong param_2,undefined4 param_3)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  char cVar4;
  undefined4 uVar5;
  int iVar6;
  undefined8 *puVar7;
  int *piVar8;
  int iVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  int iVar12;
  longlong lVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  undefined8 local_res10;
  undefined8 *local_50;
  int local_44;
  
  plVar2 = *(longlong **)(param_2 + 0x28);
  FUN_1804de830(param_1,&local_50,param_2,0x1000,0xfffffffffffffffe);
  iVar6 = local_44;
  if (local_44 == 0) {
    uVar5 = FUN_1804dcec0(param_1 + 0x30);
    if (((*(code **)(*plVar2 + 0x70) !=
          .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) &&
        (cVar4 = (**(code **)(*plVar2 + 0x70))(plVar2), cVar4 != '\0')) ||
       ((*(code **)(*plVar2 + 0x78) !=
         .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
         vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ &&
        (cVar4 = (**(code **)(*plVar2 + 0x78))(plVar2), cVar4 != '\0')))) {
      lVar13 = *(longlong *)(param_1 + 8);
      puVar7 = (undefined8 *)FUN_1811316e0(0x10);
      *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_b59fdc3edb85c0b9d8a54f66d51ac68b>_>(<lambda_b59fdc3edb85c0b9d8a54f66d51ac68b>&&___ptr64)___ptr64'
                ::__l2::LambdaOp::vftable;
      *(undefined4 *)(puVar7 + 1) = uVar5;
      FUN_180485e60(lVar13 + 0x298,puVar7);
    }
  }
  else if (local_44 == 1) {
    uVar11 = *local_50;
    iVar6 = FUN_1804de7d0(param_1,uVar11);
    if (iVar6 < 0) {
      FUN_1804dcec0(param_1 + 0x30);
    }
    else {
      cVar4 = FUN_1804dcca0(param_1,param_3,0x1000,uVar11);
      if (cVar4 != '\0') {
        uVar5 = FUN_1804dcec0(param_1 + 0x30);
        FUN_1804deb80(*(undefined8 *)(param_1 + 8),iVar6,uVar5);
      }
    }
  }
  else {
    iVar12 = 0;
    puVar7 = local_50;
    if (0 < local_44) {
      do {
        iVar14 = 0;
        iVar16 = (int)((ulonglong)*puVar7 >> 0x20);
        puVar10 = (undefined8 *)(param_1 + 0x30);
        if (iVar16 != 0x1000) {
          puVar10 = (undefined8 *)(param_1 + 0x20);
        }
        piVar8 = (int *)*puVar10;
        piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar10 + 0xc) * 2;
        for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
          if ((*piVar8 == (int)*puVar7) && (piVar8[1] == iVar16)) {
            if ((-1 < iVar14) && (cVar4 = FUN_1804dcca0(param_1,param_3), cVar4 == '\0')) {
              if (-1 < iVar12) goto LAB_1804dd1a8;
              goto LAB_1804dd0fe;
            }
            break;
          }
          iVar14 = iVar14 + 1;
        }
        iVar12 = iVar12 + 1;
        puVar7 = puVar7 + 1;
      } while (iVar12 < iVar6);
    }
LAB_1804dd0fe:
    puVar7 = (undefined8 *)(param_1 + 0x30);
    iVar14 = FUN_1804dcec0(puVar7);
    iVar6 = 0;
    iVar12 = (int)((ulonglong)*local_50 >> 0x20);
    if (iVar12 != 0x1000) {
      puVar7 = (undefined8 *)(param_1 + 0x20);
    }
    piVar8 = (int *)*puVar7;
    piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
    for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
      if ((*piVar8 == (int)*local_50) && (piVar8[1] == iVar12)) {
        if (-1 < iVar6) {
          lVar13 = *(longlong *)(param_1 + 8);
          local_res10 = CONCAT44(iVar6,iVar14);
          puVar7 = (undefined8 *)FUN_1811316e0(0x10);
          *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_b29f0ca119678205ab591c03cbe33de7>_>(<lambda_b29f0ca119678205ab591c03cbe33de7>&&___ptr64)___ptr64'
                    ::__l2::LambdaOp::vftable;
          puVar7[1] = local_res10;
          goto LAB_1804dd192;
        }
        break;
      }
      iVar6 = iVar6 + 1;
    }
    lVar13 = *(longlong *)(param_1 + 8);
    puVar7 = (undefined8 *)FUN_1811316e0(0x10);
    *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_b59fdc3edb85c0b9d8a54f66d51ac68b>_>(<lambda_b59fdc3edb85c0b9d8a54f66d51ac68b>&&___ptr64)___ptr64'
              ::__l2::LambdaOp::vftable;
    *(int *)(puVar7 + 1) = iVar14;
LAB_1804dd192:
    FUN_180485e60(lVar13 + 0x298,puVar7);
    iVar12 = 0;
    iVar6 = local_44;
LAB_1804dd1a8:
    iVar16 = 0;
    if (0 < iVar6) {
      lVar13 = 0;
      do {
        if (lVar13 != iVar12) {
          iVar15 = 0;
          iVar9 = (int)((ulonglong)local_50[lVar13] >> 0x20);
          puVar7 = (undefined8 *)(param_1 + 0x30);
          if (iVar9 != 0x1000) {
            puVar7 = (undefined8 *)(param_1 + 0x20);
          }
          piVar8 = (int *)*puVar7;
          piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
          for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
            if ((*piVar8 == (int)local_50[lVar13]) && (piVar8[1] == iVar9)) {
              if (-1 < iVar15) {
                lVar3 = *(longlong *)(param_1 + 8);
                local_res10 = CONCAT44(iVar15,iVar14);
                puVar7 = (undefined8 *)FUN_1811316e0(0x10);
                *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_941b512290cad6a4bdcf85c7121e0d74>_>(<lambda_941b512290cad6a4bdcf85c7121e0d74>&&___ptr64)___ptr64'
                          ::__l2::LambdaOp::vftable;
                puVar7[1] = local_res10;
                FUN_180485e60(lVar3 + 0x298,puVar7);
                iVar6 = local_44;
              }
              break;
            }
            iVar15 = iVar15 + 1;
          }
        }
        iVar16 = iVar16 + 1;
        lVar13 = lVar13 + 1;
      } while (iVar16 < iVar6);
    }
  }
  local_44 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1804dd330 size=1397 ############

void FUN_1804dd330(longlong param_1,longlong param_2,int param_3,undefined4 param_4,int param_5)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined8 *puVar7;
  int *piVar8;
  int iVar9;
  longlong *plVar10;
  longlong lVar11;
  int iVar12;
  ulonglong *puVar13;
  ulonglong uVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  undefined8 local_res10;
  longlong local_60;
  ulonglong *local_48;
  int local_3c;
  
  iVar9 = *(int *)(*(longlong *)(param_2 + 0x28) + 0x104);
  FUN_1804de830(param_1,&local_48,param_2,param_3);
  iVar4 = local_3c;
  if (local_3c == 0) {
    if (param_3 < iVar9) {
      uVar3 = FUN_1804dcec0(param_1 + 0x20);
      lVar11 = *(longlong *)(param_1 + 8);
      puVar7 = (undefined8 *)FUN_1811316e0(0x10);
      *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_85313353c4582748ba13f0080e319bd6>_>(<lambda_85313353c4582748ba13f0080e319bd6>&&___ptr64)___ptr64'
                ::__l2::LambdaOp::vftable;
      *(undefined4 *)(puVar7 + 1) = uVar3;
      FUN_180485e60(lVar11 + 0x298,puVar7);
    }
    goto LAB_1804dd897;
  }
  if (local_3c == 1) {
    uVar14 = *local_48;
    iVar4 = FUN_1804de7d0(param_1);
    if (iVar4 < 0) {
      iVar4 = 0;
    }
    iVar5 = iVar4;
    if ((param_3 < iVar9) && (cVar2 = FUN_1804dcca0(param_1,param_4,param_3,uVar14), cVar2 != '\0'))
    {
      iVar5 = FUN_1804dcec0(param_1 + 0x20);
      FUN_1804debd0(*(undefined8 *)(param_1 + 8),iVar4,iVar5);
    }
    for (piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                           (longlong)
                           (int)((uVar14 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) * 8);
        piVar1 != (int *)0x0; piVar1 = *(int **)(piVar1 + 2)) {
      if (*piVar1 == (int)uVar14) {
        iVar9 = piVar1[1];
        goto LAB_1804dd460;
      }
    }
    iVar9 = 0;
LAB_1804dd460:
    if (iVar9 < param_5) {
      FUN_1804deaf0(*(undefined8 *)(param_1 + 8),iVar5,param_5 - iVar9);
    }
    goto LAB_1804dd897;
  }
  iVar16 = 0;
  iVar5 = 0;
  puVar13 = local_48;
  iVar9 = iVar16;
  if (0 < local_3c) {
    do {
      uVar14 = *puVar13;
      iVar15 = (int)(uVar14 >> 0x20);
      puVar7 = (undefined8 *)(param_1 + 0x30);
      if (iVar15 != 0x1000) {
        puVar7 = (undefined8 *)(param_1 + 0x20);
      }
      piVar8 = (int *)*puVar7;
      piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
      iVar12 = iVar16;
      for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
        if ((*piVar8 == (int)uVar14) && (piVar8[1] == iVar15)) {
          if ((-1 < iVar12) && (cVar2 = FUN_1804dcca0(param_1,param_4,param_3), cVar2 == '\0')) {
            piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                              (longlong)
                              (int)((uVar14 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) *
                              8);
            goto joined_r0x0001804dd538;
          }
          break;
        }
        iVar12 = iVar12 + 1;
      }
      iVar9 = iVar9 + 1;
      puVar13 = puVar13 + 1;
    } while (iVar9 < iVar4);
  }
LAB_1804dd57a:
  plVar10 = (longlong *)(param_1 + 0x20);
  iVar12 = FUN_1804dcec0(plVar10);
  *(undefined8 *)(*plVar10 + (longlong)iVar12 * 8) = 0x7ffffffd;
  if (local_3c < 1) {
    local_res10 = 0;
  }
  else {
    local_res10 = *local_48;
  }
  iVar9 = (int)(local_res10 >> 0x20);
  if (iVar9 == 0x1000) {
    plVar10 = (longlong *)(param_1 + 0x30);
  }
  piVar8 = (int *)*plVar10;
  piVar1 = piVar8 + (longlong)*(int *)((longlong)plVar10 + 0xc) * 2;
  iVar4 = iVar16;
  for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
    if ((*piVar8 == (int)local_res10) && (piVar8[1] == iVar9)) {
      if (-1 < iVar4) {
        lVar11 = *(longlong *)(param_1 + 8);
        local_res10 = CONCAT44(iVar4,iVar12);
        puVar7 = (undefined8 *)FUN_1811316e0(0x10);
        *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_205f655f755a8746b22387db6b564301>_>(<lambda_205f655f755a8746b22387db6b564301>&&___ptr64)___ptr64'
                  ::__l2::LambdaOp::vftable;
        puVar7[1] = local_res10;
        goto LAB_1804dd62a;
      }
      break;
    }
    iVar4 = iVar4 + 1;
  }
  lVar11 = *(longlong *)(param_1 + 8);
  puVar7 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_85313353c4582748ba13f0080e319bd6>_>(<lambda_85313353c4582748ba13f0080e319bd6>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  *(int *)(puVar7 + 1) = iVar12;
LAB_1804dd62a:
  FUN_180485e60(lVar11 + 0x298);
  if (local_3c < 1) {
    local_res10 = 0;
  }
  else {
    local_res10 = *local_48;
  }
  for (piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                         (longlong)
                         (int)((local_res10 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) *
                         8); iVar15 = iVar5, piVar1 != (int *)0x0; piVar1 = *(int **)(piVar1 + 2)) {
    if (*piVar1 == (int)local_res10) {
      iVar15 = piVar1[1];
      break;
    }
  }
  iVar4 = local_3c;
  iVar9 = iVar5;
  if (iVar15 < param_5) {
    FUN_1804deaf0(*(undefined8 *)(param_1 + 8),iVar12,param_5 - iVar15);
    iVar4 = local_3c;
    iVar9 = 0;
  }
  goto LAB_1804dd6d5;
joined_r0x0001804dd538:
  iVar15 = iVar5;
  if (piVar1 == (int *)0x0) goto LAB_1804dd551;
  if (*piVar1 == (int)uVar14) {
    iVar15 = piVar1[1];
    goto LAB_1804dd551;
  }
  piVar1 = *(int **)(piVar1 + 2);
  goto joined_r0x0001804dd538;
joined_r0x0001804dd78a:
  iVar4 = iVar5;
  if (piVar1 == (int *)0x0) goto LAB_1804dd7a1;
  if (*piVar1 == (int)uVar14) {
    iVar4 = piVar1[1];
    goto LAB_1804dd7a1;
  }
  piVar1 = *(int **)(piVar1 + 2);
  goto joined_r0x0001804dd78a;
LAB_1804dd7a1:
  iVar6 = iVar17;
  if (iVar4 < param_5) {
    cVar2 = FUN_1804dcca0(param_1,param_4,param_3);
    if (cVar2 == '\0') {
      FUN_1804deaf0(*(undefined8 *)(param_1 + 8),iVar17,param_5 - iVar4);
    }
    else {
      iVar6 = FUN_1804dcec0(param_1 + 0x20);
      lVar11 = *(longlong *)(param_1 + 8);
      puVar7 = (undefined8 *)FUN_1811316e0(0x10);
      *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_205f655f755a8746b22387db6b564301>_>(<lambda_205f655f755a8746b22387db6b564301>&&___ptr64)___ptr64'
                ::__l2::LambdaOp::vftable;
      puVar7[1] = CONCAT44(iVar17,iVar6);
      FUN_180485e60(lVar11 + 0x298,puVar7);
      FUN_1804deaf0(*(undefined8 *)(param_1 + 8),iVar6,param_5 - iVar4);
    }
  }
  lVar11 = *(longlong *)(param_1 + 8);
  puVar7 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_2d486936d47a6cfa89ee98bf4bface72>_>(<lambda_2d486936d47a6cfa89ee98bf4bface72>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  puVar7[1] = CONCAT44(iVar6,iVar12);
  FUN_180485e60(lVar11 + 0x298,puVar7);
  iVar4 = local_3c;
LAB_1804dd87c:
  iVar15 = iVar15 + 1;
  local_60 = local_60 + 1;
  if (iVar4 <= iVar15) goto LAB_1804dd897;
  goto LAB_1804dd6f3;
LAB_1804dd551:
  if (iVar15 < param_5) {
    FUN_1804deaf0(*(undefined8 *)(param_1 + 8),iVar12,param_5 - iVar15);
    iVar4 = local_3c;
  }
  if (iVar9 < 0) goto LAB_1804dd57a;
LAB_1804dd6d5:
  if (0 < iVar4) {
    local_60 = 0;
    iVar15 = iVar16;
LAB_1804dd6f3:
    if (local_60 != iVar9) {
      uVar14 = local_48[local_60];
      iVar6 = (int)(uVar14 >> 0x20);
      puVar7 = (undefined8 *)(param_1 + 0x30);
      if (iVar6 != 0x1000) {
        puVar7 = (undefined8 *)(param_1 + 0x20);
      }
      piVar8 = (int *)*puVar7;
      piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
      iVar17 = iVar16;
      for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
        if ((*piVar8 == (int)uVar14) && (piVar8[1] == iVar6)) {
          if (-1 < iVar17) {
            piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                              (longlong)
                              (int)((uVar14 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) *
                              8);
            goto joined_r0x0001804dd78a;
          }
          break;
        }
        iVar17 = iVar17 + 1;
      }
    }
    goto LAB_1804dd87c;
  }
LAB_1804dd897:
  local_3c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 1804deaf0 size=90 ############

void FUN_1804deaf0(undefined8 param_1,undefined4 param_2,int param_3)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar1 = juce::GraphRenderSequence<double>::DelayChannelOp::vftable;
  puVar1[1] = 0;
  *(undefined4 *)(puVar1 + 2) = param_2;
  *(int *)((longlong)puVar1 + 0x14) = param_3 + 1;
  *(undefined4 *)(puVar1 + 3) = 0;
  *(int *)((longlong)puVar1 + 0x1c) = param_3;
                    /* WARNING: Subroutine does not return */
  free((void *)puVar1[1]);
}



############ FUN_ 1804deb80 size=72 ############

void FUN_1804deb80(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar1 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_b29f0ca119678205ab591c03cbe33de7>_>(<lambda_b29f0ca119678205ab591c03cbe33de7>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  puVar1[1] = CONCAT44(param_2,param_3);
  FUN_180485e60(param_1 + 0x298,puVar1);
  return;
}



############ FUN_ 1804debd0 size=72 ############

void FUN_1804debd0(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar1 = `private:_void___cdecl_juce::GraphRenderSequence<double>::createOp<<lambda_205f655f755a8746b22387db6b564301>_>(<lambda_205f655f755a8746b22387db6b564301>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  puVar1[1] = CONCAT44(param_2,param_3);
  FUN_180485e60(param_1 + 0x298,puVar1);
  return;
}



############ FUN_ 1804def70 size=516 ############

uint * FUN_1804def70(longlong param_1,uint param_2)

{
  longlong *plVar1;
  uint *puVar2;
  void *_Memory;
  int iVar3;
  uint *puVar4;
  undefined8 *puVar5;
  uint uVar6;
  uint uVar7;
  ulonglong uVar8;
  longlong lVar9;
  int iVar10;
  longlong lVar11;
  undefined8 *puVar12;
  undefined8 *local_38;
  undefined4 local_30;
  uint uStack_2c;
  
  plVar1 = (longlong *)(param_1 + 8);
  uVar6 = param_2 % *(uint *)(param_1 + 0x14);
  puVar2 = *(uint **)((longlong)(int)uVar6 * 8 + *plVar1);
  for (puVar4 = puVar2; puVar4 != (uint *)0x0; puVar4 = *(uint **)(puVar4 + 2)) {
    if (*puVar4 == param_2) {
      return puVar4 + 1;
    }
  }
  puVar4 = (uint *)FUN_1811316e0(0x10);
  *puVar4 = param_2;
  puVar5 = (undefined8 *)0x0;
  *(uint **)(puVar4 + 2) = puVar2;
  puVar4[1] = 0;
  if (-1 < (int)uVar6) {
    if ((int)uVar6 < *(int *)(param_1 + 0x14)) {
      *(uint **)((longlong)(int)uVar6 * 8 + *plVar1) = puVar4;
    }
    else {
      FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
      iVar3 = *(int *)(param_1 + 0x14);
      *(int *)(param_1 + 0x14) = iVar3 + 1;
      *(uint **)(*plVar1 + (longlong)iVar3 * 8) = puVar4;
    }
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  if ((*(int *)(param_1 + 0x14) * 3) / 2 < *(int *)(param_1 + 0x18)) {
    uVar6 = *(int *)(param_1 + 0x14) * 2;
    local_38 = (undefined8 *)0x0;
    local_30 = 0;
    uStack_2c = 0;
    puVar12 = puVar5;
    if (0 < (int)uVar6) {
      FUN_18047e060(&local_38);
      uVar7 = uStack_2c;
      puVar12 = local_38;
      if (uStack_2c != 0) {
        memmove(local_38 + (int)uVar6,local_38,(longlong)(int)uStack_2c << 3);
      }
      if (0 < (int)uVar6) {
        uVar8 = (ulonglong)uVar6;
        puVar5 = puVar12;
        do {
          *puVar5 = 0;
          uVar8 = uVar8 - 1;
          puVar5 = puVar5 + 1;
        } while (uVar8 != 0);
      }
      uStack_2c = uVar7 + uVar6;
      puVar5 = (undefined8 *)(ulonglong)uStack_2c;
    }
    iVar10 = (int)puVar5;
    iVar3 = *(int *)(param_1 + 0x14) + -1;
    lVar9 = (longlong)iVar3;
    if (-1 < iVar3) {
      do {
        puVar2 = *(uint **)(*plVar1 + lVar9 * 8);
        while (puVar4 = puVar2, iVar10 = (int)puVar5, puVar4 != (uint *)0x0) {
          puVar2 = *(uint **)(puVar4 + 2);
          uVar7 = *puVar4 % uVar6;
          *(undefined8 *)(puVar4 + 2) = puVar12[(int)uVar7];
          if (-1 < (int)uVar7) {
            if ((int)uVar7 < iVar10) {
              puVar12[(int)uVar7] = puVar4;
            }
            else {
              FUN_18047e060(&local_38);
              lVar11 = (longlong)(int)uStack_2c;
              uStack_2c = uStack_2c + 1;
              puVar5 = (undefined8 *)(ulonglong)uStack_2c;
              local_38[lVar11] = puVar4;
              puVar12 = local_38;
            }
          }
        }
        lVar9 = lVar9 + -1;
      } while (-1 < lVar9);
    }
    _Memory = (void *)*plVar1;
    *plVar1 = (longlong)puVar12;
    *(undefined4 *)(param_1 + 0x10) = local_30;
    *(int *)(param_1 + 0x14) = iVar10;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return puVar4 + 1;
}



############ FUN_ 1804dc2b0 size=962 ############

void FUN_1804dc2b0(undefined8 *param_1,longlong param_2,undefined4 param_3)

{
  longlong *plVar1;
  uint *puVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  undefined8 *puVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  uint *puVar15;
  int iVar16;
  uint uVar17;
  longlong lVar19;
  undefined8 local_res8;
  longlong local_a8;
  int local_a0;
  uint uStack_9c;
  undefined8 local_98;
  int local_90;
  undefined4 local_8c;
  int iStack_88;
  int local_84;
  undefined8 local_80;
  longlong *local_78;
  uint *local_70;
  uint *local_68;
  longlong local_60;
  undefined8 local_58;
  uint uVar18;
  
  local_58 = 0xfffffffffffffffe;
  local_78 = *(longlong **)(param_2 + 0x28);
  iVar13 = (int)local_78[0x20];
  iVar7 = *(int *)((longlong)local_78 + 0x104);
  local_90 = iVar13;
  if (iVar13 < iVar7) {
    local_90 = iVar7;
  }
  uVar5 = 0;
  local_a8 = 0;
  local_a0 = 0;
  uStack_9c = 0;
  uVar14 = *(uint *)(param_2 + 0x10);
  FUN_1812bcde0(*param_1);
  uVar17 = uVar5;
  uVar18 = uVar5;
  for (puVar15 = local_70; puVar15 != local_68; puVar15 = puVar15 + 4) {
    if (puVar15[2] == uVar14) {
      for (puVar2 = *(uint **)(param_1[9] +
                              (longlong)(int)(*puVar15 % *(uint *)((longlong)param_1 + 0x54)) * 8);
          puVar2 != (uint *)0x0; puVar2 = *(uint **)(puVar2 + 2)) {
        if (*puVar2 == *puVar15) {
          uVar10 = puVar2[1];
          goto LAB_1804dc373;
        }
      }
      uVar10 = 0;
LAB_1804dc373:
      bVar3 = (int)uVar17 < (int)uVar10;
      uVar17 = uVar18;
      if (bVar3) {
        uVar17 = uVar10;
        uVar18 = uVar10;
      }
    }
  }
  if (local_70 != (uint *)0x0) {
    puVar15 = local_70;
    if ((0xfff < (local_60 - (longlong)local_70 & 0xfffffffffffffff0U)) &&
       (puVar15 = *(uint **)(local_70 + -2),
       0x1f < (ulonglong)((longlong)local_70 + (-8 - (longlong)puVar15)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(puVar15);
  }
  iVar12 = 0;
  if (0 < iVar13) {
    do {
      iVar6 = FUN_1804ddcc0(param_1,param_2,iVar12,param_3,uVar17);
      iVar16 = uVar5 + 1;
      uVar14 = uVar5;
      local_84 = iVar6;
      if (local_a0 < iVar16) {
        iVar11 = iVar16;
        if (iVar16 < 0) {
          iVar11 = uVar5 + 2;
        }
        FUN_1804af790(&local_a8,iVar16 + (iVar11 >> 1) + 8 & 0xfffffff8);
        uVar14 = uStack_9c;
      }
      uVar5 = uVar14 + 1;
      *(int *)(local_a8 + (longlong)(int)uVar14 * 4) = iVar6;
      if (iVar12 < iVar7) {
        local_98 = CONCAT44(iVar12,*(undefined4 *)(param_2 + 0x10));
        *(undefined8 *)(param_1[4] + (longlong)iVar6 * 8) = local_98;
      }
      iVar12 = iVar12 + 1;
      uStack_9c = uVar5;
    } while (iVar12 < iVar13);
  }
  if (iVar13 < iVar7) {
    plVar1 = param_1 + 4;
    lVar19 = local_a8;
    iVar12 = local_a0;
    do {
      iVar16 = iVar13;
      iVar13 = 1;
      if (1 < *(int *)((longlong)param_1 + 0x2c)) {
        piVar8 = (int *)*plVar1;
        do {
          piVar8 = piVar8 + 2;
          if (*piVar8 == 0x7fffffff) goto LAB_1804dc4ab;
          iVar13 = iVar13 + 1;
        } while (iVar13 < *(int *)((longlong)param_1 + 0x2c));
      }
      local_98 = 0x7fffffff;
      local_80 = 0x7fffffff;
      FUN_1804dbb20(plVar1,&local_80);
      iVar13 = *(int *)((longlong)param_1 + 0x2c) + -1;
LAB_1804dc4ab:
      iVar6 = uVar5 + 1;
      uVar14 = uVar5;
      if (iVar12 < iVar6) {
        if (iVar6 < 0) {
          iVar6 = uVar5 + 2;
        }
        FUN_1804af790(&local_a8,uVar5 + 9 + (iVar6 >> 1) & 0xfffffff8);
        lVar19 = local_a8;
        uVar14 = uStack_9c;
        iVar12 = local_a0;
      }
      uVar5 = uVar14 + 1;
      *(int *)(lVar19 + (longlong)(int)uVar14 * 4) = iVar13;
      local_8c = *(undefined4 *)(param_2 + 0x10);
      *(ulonglong *)(*plVar1 + (longlong)iVar13 * 8) = CONCAT44(iVar16,local_8c);
      iVar13 = iVar16 + 1;
      iStack_88 = iVar16;
      uStack_9c = uVar5;
    } while (iVar16 + 1 < iVar7);
  }
  iVar13 = FUN_1804dd8c0(param_1,param_2,param_3);
  plVar1 = local_78;
  if ((*(code **)(*local_78 + 0x78) !=
       .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
       vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) &&
     (cVar4 = (**(code **)(*local_78 + 0x78))(local_78), cVar4 != '\0')) {
    local_res8 = CONCAT44(0x1000,*(undefined4 *)(param_2 + 0x10));
    *(undefined8 *)(param_1[6] + (longlong)iVar13 * 8) = local_res8;
  }
  iVar12 = *(int *)((longlong)plVar1 + 0x3c);
  piVar8 = (int *)FUN_1804def70(param_1 + 8,*(undefined4 *)(param_2 + 0x10));
  *piVar8 = iVar12 + uVar17;
  if (iVar7 == 0) {
    *(uint *)(param_1 + 0xc) = uVar17;
  }
  LOCK();
  *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
  UNLOCK();
  puVar9 = (undefined8 *)FUN_1811316e0(0x288);
  *puVar9 = juce::GraphRenderSequence<float>::ProcessOp::vftable;
  puVar9[1] = param_2;
  LOCK();
  *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
  UNLOCK();
  puVar9[2] = *(undefined8 *)(param_2 + 0x28);
  puVar9[3] = 0;
  puVar9[4] = 0;
  FUN_1804e0430(puVar9 + 3,local_a8,uStack_9c);
  puVar9[5] = 0;
  puVar9[6] = 0;
  puVar9[7] = 0;
  puVar9[8] = puVar9 + 10;
  puVar9[9] = 0;
  *(undefined1 *)(puVar9 + 0x2a) = 0;
  puVar9[0x2b] = 0;
  puVar9[0x2c] = 0;
  puVar9[0x2d] = puVar9 + 0x2f;
  puVar9[0x2e] = 0;
  *(undefined1 *)(puVar9 + 0x4f) = 0;
  iVar7 = 1;
  if (1 < local_90) {
    iVar7 = local_90;
  }
  *(int *)(puVar9 + 0x50) = iVar7;
  *(int *)((longlong)puVar9 + 0x284) = iVar13;
                    /* WARNING: Subroutine does not return */
  free((void *)puVar9[5]);
}



############ FUN_ 1804dd8c0 size=990 ############

void FUN_1804dd8c0(longlong param_1,longlong param_2,undefined4 param_3)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  char cVar4;
  undefined4 uVar5;
  int iVar6;
  undefined8 *puVar7;
  int *piVar8;
  int iVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  int iVar12;
  longlong lVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  undefined8 local_res10;
  undefined8 *local_50;
  int local_44;
  
  plVar2 = *(longlong **)(param_2 + 0x28);
  FUN_1804de830(param_1,&local_50,param_2,0x1000,0xfffffffffffffffe);
  iVar6 = local_44;
  if (local_44 == 0) {
    uVar5 = FUN_1804dcec0(param_1 + 0x30);
    if (((*(code **)(*plVar2 + 0x70) !=
          .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) &&
        (cVar4 = (**(code **)(*plVar2 + 0x70))(plVar2), cVar4 != '\0')) ||
       ((*(code **)(*plVar2 + 0x78) !=
         .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
         vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ &&
        (cVar4 = (**(code **)(*plVar2 + 0x78))(plVar2), cVar4 != '\0')))) {
      lVar13 = *(longlong *)(param_1 + 8);
      puVar7 = (undefined8 *)FUN_1811316e0(0x10);
      *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_3af06350f12810607ea25b8cf7f83e75>_>(<lambda_3af06350f12810607ea25b8cf7f83e75>&&___ptr64)___ptr64'
                ::__l2::LambdaOp::vftable;
      *(undefined4 *)(puVar7 + 1) = uVar5;
      FUN_180485e60(lVar13 + 0x298,puVar7);
    }
  }
  else if (local_44 == 1) {
    uVar11 = *local_50;
    iVar6 = FUN_1804de7d0(param_1,uVar11);
    if (iVar6 < 0) {
      FUN_1804dcec0(param_1 + 0x30);
    }
    else {
      cVar4 = FUN_1804dcca0(param_1,param_3,0x1000,uVar11);
      if (cVar4 != '\0') {
        uVar5 = FUN_1804dcec0(param_1 + 0x30);
        FUN_1804deed0(*(undefined8 *)(param_1 + 8),iVar6,uVar5);
      }
    }
  }
  else {
    iVar12 = 0;
    puVar7 = local_50;
    if (0 < local_44) {
      do {
        iVar14 = 0;
        iVar16 = (int)((ulonglong)*puVar7 >> 0x20);
        puVar10 = (undefined8 *)(param_1 + 0x30);
        if (iVar16 != 0x1000) {
          puVar10 = (undefined8 *)(param_1 + 0x20);
        }
        piVar8 = (int *)*puVar10;
        piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar10 + 0xc) * 2;
        for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
          if ((*piVar8 == (int)*puVar7) && (piVar8[1] == iVar16)) {
            if ((-1 < iVar14) && (cVar4 = FUN_1804dcca0(param_1,param_3), cVar4 == '\0')) {
              if (-1 < iVar12) goto LAB_1804ddb38;
              goto LAB_1804dda8e;
            }
            break;
          }
          iVar14 = iVar14 + 1;
        }
        iVar12 = iVar12 + 1;
        puVar7 = puVar7 + 1;
      } while (iVar12 < iVar6);
    }
LAB_1804dda8e:
    puVar7 = (undefined8 *)(param_1 + 0x30);
    iVar14 = FUN_1804dcec0(puVar7);
    iVar6 = 0;
    iVar12 = (int)((ulonglong)*local_50 >> 0x20);
    if (iVar12 != 0x1000) {
      puVar7 = (undefined8 *)(param_1 + 0x20);
    }
    piVar8 = (int *)*puVar7;
    piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
    for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
      if ((*piVar8 == (int)*local_50) && (piVar8[1] == iVar12)) {
        if (-1 < iVar6) {
          lVar13 = *(longlong *)(param_1 + 8);
          local_res10 = CONCAT44(iVar6,iVar14);
          puVar7 = (undefined8 *)FUN_1811316e0(0x10);
          *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_b262a53c7f84b94c661ee8ac879c8cd1>_>(<lambda_b262a53c7f84b94c661ee8ac879c8cd1>&&___ptr64)___ptr64'
                    ::__l2::LambdaOp::vftable;
          puVar7[1] = local_res10;
          goto LAB_1804ddb22;
        }
        break;
      }
      iVar6 = iVar6 + 1;
    }
    lVar13 = *(longlong *)(param_1 + 8);
    puVar7 = (undefined8 *)FUN_1811316e0(0x10);
    *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_3af06350f12810607ea25b8cf7f83e75>_>(<lambda_3af06350f12810607ea25b8cf7f83e75>&&___ptr64)___ptr64'
              ::__l2::LambdaOp::vftable;
    *(int *)(puVar7 + 1) = iVar14;
LAB_1804ddb22:
    FUN_180485e60(lVar13 + 0x298,puVar7);
    iVar12 = 0;
    iVar6 = local_44;
LAB_1804ddb38:
    iVar16 = 0;
    if (0 < iVar6) {
      lVar13 = 0;
      do {
        if (lVar13 != iVar12) {
          iVar15 = 0;
          iVar9 = (int)((ulonglong)local_50[lVar13] >> 0x20);
          puVar7 = (undefined8 *)(param_1 + 0x30);
          if (iVar9 != 0x1000) {
            puVar7 = (undefined8 *)(param_1 + 0x20);
          }
          piVar8 = (int *)*puVar7;
          piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
          for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
            if ((*piVar8 == (int)local_50[lVar13]) && (piVar8[1] == iVar9)) {
              if (-1 < iVar15) {
                lVar3 = *(longlong *)(param_1 + 8);
                local_res10 = CONCAT44(iVar15,iVar14);
                puVar7 = (undefined8 *)FUN_1811316e0(0x10);
                *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_8284ce494121fafd49a0e4ba9cac7731>_>(<lambda_8284ce494121fafd49a0e4ba9cac7731>&&___ptr64)___ptr64'
                          ::__l2::LambdaOp::vftable;
                puVar7[1] = local_res10;
                FUN_180485e60(lVar3 + 0x298,puVar7);
                iVar6 = local_44;
              }
              break;
            }
            iVar15 = iVar15 + 1;
          }
        }
        iVar16 = iVar16 + 1;
        lVar13 = lVar13 + 1;
      } while (iVar16 < iVar6);
    }
  }
  local_44 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1804ddcc0 size=1397 ############

void FUN_1804ddcc0(longlong param_1,longlong param_2,int param_3,undefined4 param_4,int param_5)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined8 *puVar7;
  int *piVar8;
  int iVar9;
  longlong *plVar10;
  longlong lVar11;
  int iVar12;
  ulonglong *puVar13;
  ulonglong uVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  undefined8 local_res10;
  longlong local_60;
  ulonglong *local_48;
  int local_3c;
  
  iVar9 = *(int *)(*(longlong *)(param_2 + 0x28) + 0x104);
  FUN_1804de830(param_1,&local_48,param_2,param_3);
  iVar4 = local_3c;
  if (local_3c == 0) {
    if (param_3 < iVar9) {
      uVar3 = FUN_1804dcec0(param_1 + 0x20);
      lVar11 = *(longlong *)(param_1 + 8);
      puVar7 = (undefined8 *)FUN_1811316e0(0x10);
      *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_a16520e32b6d754188223dd494cacdc6>_>(<lambda_a16520e32b6d754188223dd494cacdc6>&&___ptr64)___ptr64'
                ::__l2::LambdaOp::vftable;
      *(undefined4 *)(puVar7 + 1) = uVar3;
      FUN_180485e60(lVar11 + 0x298,puVar7);
    }
    goto LAB_1804de227;
  }
  if (local_3c == 1) {
    uVar14 = *local_48;
    iVar4 = FUN_1804de7d0(param_1);
    if (iVar4 < 0) {
      iVar4 = 0;
    }
    iVar5 = iVar4;
    if ((param_3 < iVar9) && (cVar2 = FUN_1804dcca0(param_1,param_4,param_3,uVar14), cVar2 != '\0'))
    {
      iVar5 = FUN_1804dcec0(param_1 + 0x20);
      FUN_1804def20(*(undefined8 *)(param_1 + 8),iVar4,iVar5);
    }
    for (piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                           (longlong)
                           (int)((uVar14 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) * 8);
        piVar1 != (int *)0x0; piVar1 = *(int **)(piVar1 + 2)) {
      if (*piVar1 == (int)uVar14) {
        iVar9 = piVar1[1];
        goto LAB_1804dddf0;
      }
    }
    iVar9 = 0;
LAB_1804dddf0:
    if (iVar9 < param_5) {
      FUN_1804dee40(*(undefined8 *)(param_1 + 8),iVar5,param_5 - iVar9);
    }
    goto LAB_1804de227;
  }
  iVar16 = 0;
  iVar5 = 0;
  puVar13 = local_48;
  iVar9 = iVar16;
  if (0 < local_3c) {
    do {
      uVar14 = *puVar13;
      iVar15 = (int)(uVar14 >> 0x20);
      puVar7 = (undefined8 *)(param_1 + 0x30);
      if (iVar15 != 0x1000) {
        puVar7 = (undefined8 *)(param_1 + 0x20);
      }
      piVar8 = (int *)*puVar7;
      piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
      iVar12 = iVar16;
      for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
        if ((*piVar8 == (int)uVar14) && (piVar8[1] == iVar15)) {
          if ((-1 < iVar12) && (cVar2 = FUN_1804dcca0(param_1,param_4,param_3), cVar2 == '\0')) {
            piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                              (longlong)
                              (int)((uVar14 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) *
                              8);
            goto joined_r0x0001804ddec8;
          }
          break;
        }
        iVar12 = iVar12 + 1;
      }
      iVar9 = iVar9 + 1;
      puVar13 = puVar13 + 1;
    } while (iVar9 < iVar4);
  }
LAB_1804ddf0a:
  plVar10 = (longlong *)(param_1 + 0x20);
  iVar12 = FUN_1804dcec0(plVar10);
  *(undefined8 *)(*plVar10 + (longlong)iVar12 * 8) = 0x7ffffffd;
  if (local_3c < 1) {
    local_res10 = 0;
  }
  else {
    local_res10 = *local_48;
  }
  iVar9 = (int)(local_res10 >> 0x20);
  if (iVar9 == 0x1000) {
    plVar10 = (longlong *)(param_1 + 0x30);
  }
  piVar8 = (int *)*plVar10;
  piVar1 = piVar8 + (longlong)*(int *)((longlong)plVar10 + 0xc) * 2;
  iVar4 = iVar16;
  for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
    if ((*piVar8 == (int)local_res10) && (piVar8[1] == iVar9)) {
      if (-1 < iVar4) {
        lVar11 = *(longlong *)(param_1 + 8);
        local_res10 = CONCAT44(iVar4,iVar12);
        puVar7 = (undefined8 *)FUN_1811316e0(0x10);
        *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_a90524d1ee830c53b17154771f762ff9>_>(<lambda_a90524d1ee830c53b17154771f762ff9>&&___ptr64)___ptr64'
                  ::__l2::LambdaOp::vftable;
        puVar7[1] = local_res10;
        goto LAB_1804ddfba;
      }
      break;
    }
    iVar4 = iVar4 + 1;
  }
  lVar11 = *(longlong *)(param_1 + 8);
  puVar7 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_a16520e32b6d754188223dd494cacdc6>_>(<lambda_a16520e32b6d754188223dd494cacdc6>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  *(int *)(puVar7 + 1) = iVar12;
LAB_1804ddfba:
  FUN_180485e60(lVar11 + 0x298);
  if (local_3c < 1) {
    local_res10 = 0;
  }
  else {
    local_res10 = *local_48;
  }
  for (piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                         (longlong)
                         (int)((local_res10 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) *
                         8); iVar15 = iVar5, piVar1 != (int *)0x0; piVar1 = *(int **)(piVar1 + 2)) {
    if (*piVar1 == (int)local_res10) {
      iVar15 = piVar1[1];
      break;
    }
  }
  iVar4 = local_3c;
  iVar9 = iVar5;
  if (iVar15 < param_5) {
    FUN_1804dee40(*(undefined8 *)(param_1 + 8),iVar12,param_5 - iVar15);
    iVar4 = local_3c;
    iVar9 = 0;
  }
  goto LAB_1804de065;
joined_r0x0001804ddec8:
  iVar15 = iVar5;
  if (piVar1 == (int *)0x0) goto LAB_1804ddee1;
  if (*piVar1 == (int)uVar14) {
    iVar15 = piVar1[1];
    goto LAB_1804ddee1;
  }
  piVar1 = *(int **)(piVar1 + 2);
  goto joined_r0x0001804ddec8;
joined_r0x0001804de11a:
  iVar4 = iVar5;
  if (piVar1 == (int *)0x0) goto LAB_1804de131;
  if (*piVar1 == (int)uVar14) {
    iVar4 = piVar1[1];
    goto LAB_1804de131;
  }
  piVar1 = *(int **)(piVar1 + 2);
  goto joined_r0x0001804de11a;
LAB_1804de131:
  iVar6 = iVar17;
  if (iVar4 < param_5) {
    cVar2 = FUN_1804dcca0(param_1,param_4,param_3);
    if (cVar2 == '\0') {
      FUN_1804dee40(*(undefined8 *)(param_1 + 8),iVar17,param_5 - iVar4);
    }
    else {
      iVar6 = FUN_1804dcec0(param_1 + 0x20);
      lVar11 = *(longlong *)(param_1 + 8);
      puVar7 = (undefined8 *)FUN_1811316e0(0x10);
      *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_a90524d1ee830c53b17154771f762ff9>_>(<lambda_a90524d1ee830c53b17154771f762ff9>&&___ptr64)___ptr64'
                ::__l2::LambdaOp::vftable;
      puVar7[1] = CONCAT44(iVar17,iVar6);
      FUN_180485e60(lVar11 + 0x298,puVar7);
      FUN_1804dee40(*(undefined8 *)(param_1 + 8),iVar6,param_5 - iVar4);
    }
  }
  lVar11 = *(longlong *)(param_1 + 8);
  puVar7 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar7 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_63580a400b5300fc7ab01320d4d13879>_>(<lambda_63580a400b5300fc7ab01320d4d13879>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  puVar7[1] = CONCAT44(iVar6,iVar12);
  FUN_180485e60(lVar11 + 0x298,puVar7);
  iVar4 = local_3c;
LAB_1804de20c:
  iVar15 = iVar15 + 1;
  local_60 = local_60 + 1;
  if (iVar4 <= iVar15) goto LAB_1804de227;
  goto LAB_1804de083;
LAB_1804ddee1:
  if (iVar15 < param_5) {
    FUN_1804dee40(*(undefined8 *)(param_1 + 8),iVar12,param_5 - iVar15);
    iVar4 = local_3c;
  }
  if (iVar9 < 0) goto LAB_1804ddf0a;
LAB_1804de065:
  if (0 < iVar4) {
    local_60 = 0;
    iVar15 = iVar16;
LAB_1804de083:
    if (local_60 != iVar9) {
      uVar14 = local_48[local_60];
      iVar6 = (int)(uVar14 >> 0x20);
      puVar7 = (undefined8 *)(param_1 + 0x30);
      if (iVar6 != 0x1000) {
        puVar7 = (undefined8 *)(param_1 + 0x20);
      }
      piVar8 = (int *)*puVar7;
      piVar1 = piVar8 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 2;
      iVar17 = iVar16;
      for (; piVar8 != piVar1; piVar8 = piVar8 + 2) {
        if ((*piVar8 == (int)uVar14) && (piVar8[1] == iVar6)) {
          if (-1 < iVar17) {
            piVar1 = *(int **)(*(longlong *)(param_1 + 0x48) +
                              (longlong)
                              (int)((uVar14 & 0xffffffff) % (ulonglong)*(uint *)(param_1 + 0x54)) *
                              8);
            goto joined_r0x0001804de11a;
          }
          break;
        }
        iVar17 = iVar17 + 1;
      }
    }
    goto LAB_1804de20c;
  }
LAB_1804de227:
  local_3c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 1804dee40 size=90 ############

void FUN_1804dee40(undefined8 param_1,undefined4 param_2,int param_3)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar1 = juce::GraphRenderSequence<float>::DelayChannelOp::vftable;
  puVar1[1] = 0;
  *(undefined4 *)(puVar1 + 2) = param_2;
  *(int *)((longlong)puVar1 + 0x14) = param_3 + 1;
  *(undefined4 *)(puVar1 + 3) = 0;
  *(int *)((longlong)puVar1 + 0x1c) = param_3;
                    /* WARNING: Subroutine does not return */
  free((void *)puVar1[1]);
}



############ FUN_ 1804deed0 size=72 ############

void FUN_1804deed0(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar1 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_b262a53c7f84b94c661ee8ac879c8cd1>_>(<lambda_b262a53c7f84b94c661ee8ac879c8cd1>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  puVar1[1] = CONCAT44(param_2,param_3);
  FUN_180485e60(param_1 + 0x298,puVar1);
  return;
}



############ FUN_ 1804def20 size=72 ############

void FUN_1804def20(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar1 = `private:_void___cdecl_juce::GraphRenderSequence<float>::createOp<<lambda_a90524d1ee830c53b17154771f762ff9>_>(<lambda_a90524d1ee830c53b17154771f762ff9>&&___ptr64)___ptr64'
            ::__l2::LambdaOp::vftable;
  puVar1[1] = CONCAT44(param_2,param_3);
  FUN_180485e60(param_1 + 0x298,puVar1);
  return;
}



############ FUN_ 1812b7150 size=1104 ############

void FUN_1812b7150(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 *puVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  longlong lVar7;
  int iVar8;
  undefined8 uVar9;
  longlong *plVar10;
  char **ppcVar11;
  uint uVar12;
  uint *puVar13;
  char **ppcVar14;
  char *local_res20;
  char *local_88;
  char *local_80;
  char *local_78;
  char *local_70;
  char *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined4 *local_50;
  undefined4 *local_48;
  
  local_60 = 0xfffffffffffffffe;
  uVar9 = FUN_1811316e0(0xfb0);
  pcVar1 = *(char **)(param_1 + 0x3e0);
  local_58 = uVar9;
  if (*pcVar1 == '\0') {
    FUN_18049c4e0(&local_res20,"Searching for all possible plug-in files...");
    lVar7 = DAT_1826739f8;
    local_50 = &DAT_182673984;
    do {
      LOCK();
      uVar12 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar12 != 0);
    if (DAT_1826739f8 == 0) {
      local_78 = local_res20;
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar8 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar8)) {
      iVar8 = FUN_1812498b0(lVar7 + 0x18,local_res20,*(undefined1 *)(lVar7 + 0x38),0);
      if (iVar8 < 0) {
        uVar12 = *(uint *)(local_res20 + -0x10);
        local_78 = local_res20;
      }
      else {
        plVar10 = (longlong *)FUN_181249970(lVar7 + 0x28,iVar8);
        uVar12 = *(uint *)((char *)*plVar10 + -0x10);
        local_78 = (char *)*plVar10;
      }
      if ((uVar12 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar7 + 0x40),&local_78,&local_res20,&local_res20);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar13 = (uint *)(local_res20 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar12 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    ppcVar14 = &local_78;
    bVar6 = true;
    bVar3 = false;
  }
  else {
    if ((*(uint *)(pcVar1 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar1 + -0x10) = *(int *)(pcVar1 + -0x10) + 1;
      UNLOCK();
    }
    ppcVar14 = &local_68;
    bVar6 = false;
    bVar3 = true;
    local_68 = pcVar1;
  }
  pcVar1 = *(char **)(param_1 + 0x3d8);
  if (*pcVar1 == '\0') {
    FUN_18049c4e0(&local_88,"Scanning for plug-ins...");
    lVar7 = DAT_1826739f8;
    local_48 = &DAT_182673984;
    do {
      LOCK();
      uVar12 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar12 != 0);
    if (DAT_1826739f8 == 0) {
      local_80 = local_88;
      if ((*(uint *)(local_88 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_88 + -0x10) = *(int *)(local_88 + -0x10) + 1;
        UNLOCK();
      }
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar8 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_88,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar8)) {
      iVar8 = FUN_1812498b0(lVar7 + 0x18,local_88,*(undefined1 *)(lVar7 + 0x38),0);
      if (iVar8 < 0) {
        uVar12 = *(uint *)(local_88 + -0x10);
        local_80 = local_88;
      }
      else {
        plVar10 = (longlong *)FUN_181249970(lVar7 + 0x28,iVar8);
        uVar12 = *(uint *)((char *)*plVar10 + -0x10);
        local_80 = (char *)*plVar10;
      }
      if ((uVar12 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_80 + -0x10) = *(int *)(local_80 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar7 + 0x40),&local_80,&local_88,&local_88);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar13 = (uint *)(local_88 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar12 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    ppcVar11 = &local_80;
    bVar5 = false;
    bVar4 = true;
  }
  else {
    if ((*(uint *)(pcVar1 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar1 + -0x10) = *(int *)(pcVar1 + -0x10) + 1;
      UNLOCK();
    }
    ppcVar11 = &local_70;
    bVar5 = true;
    bVar4 = false;
    local_70 = pcVar1;
  }
  uVar9 = FUN_1804d81b0(uVar9,param_1,param_2,param_3,*(undefined8 *)(param_1 + 0x3d0),
                        *(undefined1 *)(param_1 + 1000),*(undefined4 *)(param_1 + 0x3ec),ppcVar11,
                        ppcVar14);
  puVar2 = *(undefined8 **)(param_1 + 0x3f8);
  *(undefined8 *)(param_1 + 0x3f8) = uVar9;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  if ((bVar4) && (puVar13 = (uint *)(local_80 + -0x10), (*puVar13 & 0x30000000) == 0)) {
    LOCK();
    uVar12 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  if ((bVar5) && (puVar13 = (uint *)(local_70 + -0x10), (*puVar13 & 0x30000000) == 0)) {
    LOCK();
    uVar12 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  if ((bVar6) && (puVar13 = (uint *)(local_78 + -0x10), (*puVar13 & 0x30000000) == 0)) {
    LOCK();
    uVar12 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  if ((bVar3) && (puVar13 = (uint *)(local_68 + -0x10), (*puVar13 & 0x30000000) == 0)) {
    LOCK();
    uVar12 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  return;
}



############ FUN_ 1813434a0 size=452 ############

ulonglong FUN_1813434a0(undefined8 param_1)

{
  longlong lVar1;
  char cVar2;
  DWORD DVar3;
  int iVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  int iVar8;
  bool bVar9;
  undefined8 *local_res10;
  uint local_res18 [2];
  undefined1 local_res20 [8];
  undefined8 uVar10;
  undefined **local_60;
  uint *local_58;
  undefined8 **ppuStack_50;
  undefined ***local_28;
  
  uVar10 = 0xfffffffffffffffe;
  lVar5 = FUN_1812a7550();
  DVar3 = GetCurrentThreadId();
  if ((ulonglong)DVar3 != *(ulonglong *)(lVar5 + 0x10)) {
    uVar10 = FUN_1812a7550();
    uVar6 = FUN_1812a6500(uVar10,FUN_1804e4cd0,param_1);
    return uVar6;
  }
  cVar2 = FUN_18134aa20(param_1,0);
  if (cVar2 == '\0') {
    FUN_18134ab30(param_1,1,0,0,uVar10);
  }
  iVar8 = 0;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x28);
    local_res10 = puVar7;
    FUN_1812a59f0(puVar7);
    FUN_1812a7230(puVar7 + 2);
    *puVar7 = juce::ModalComponentManager::vftable;
    puVar7[2] = juce::ModalComponentManager::vftable;
    puVar7[3] = 0;
    puVar7[4] = 0;
    DAT_182673c20 = puVar7;
  }
  puVar7 = DAT_182673c20;
  local_res18[0] = 0;
  iVar4 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
  lVar5 = (longlong)iVar4;
  if (-1 < iVar4) {
    do {
      lVar1 = *(longlong *)(DAT_182673c20[3] + lVar5 * 8);
      if ((*(char *)(lVar1 + 0x5c) != '\0') && (bVar9 = iVar8 == 0, iVar8 = iVar8 + 1, bVar9)) {
        lVar5 = *(longlong *)(lVar1 + 0x40);
        if (lVar5 == 0) {
          return 0;
        }
        FUN_1804de690(local_res20,DAT_182673708);
        local_res10 = (undefined8 *)((ulonglong)local_res10 & 0xffffffffffffff00);
        local_58 = local_res18;
        ppuStack_50 = &local_res10;
        local_60 = std::_Func_impl_no_alloc<<lambda_e9497a67ceca33c41238fd92e5d477a0>,void,int>::
                   vftable;
        local_28 = &local_60;
        uVar10 = FUN_181347bc0(&local_60);
        FUN_18133b470(puVar7,lVar5,uVar10);
        goto joined_r0x000181343626;
      }
      lVar5 = lVar5 + -1;
    } while (-1 < lVar5);
  }
  return 0;
joined_r0x000181343626:
  if ((char)local_res10 != '\0') {
LAB_181343643:
    FUN_1804e4a90(local_res20);
    return (ulonglong)local_res18[0];
  }
  uVar10 = FUN_1812a7550();
  cVar2 = FUN_1812a6650(uVar10);
  if (cVar2 == '\0') goto LAB_181343643;
  goto joined_r0x000181343626;
}



############ FUN_ 18051dc40 size=746 ############

float * FUN_18051dc40(float *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  float fVar1;
  float fVar2;
  float fVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  float *pfVar8;
  undefined8 *puVar9;
  float fVar10;
  float local_res18;
  float fStackX_1c;
  undefined8 local_98;
  float local_90;
  float local_8c;
  float local_88;
  float fStack_84;
  float local_80;
  float local_7c;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined1 local_58 [64];
  
  fVar3 = DAT_1824c3ea4;
  local_60 = 0xfffffffffffffffe;
  local_98._4_4_ = (float)((ulonglong)param_4 >> 0x20);
  local_98._0_4_ = (float)param_4;
  for (; param_3 != (longlong *)0x0; param_3 = (longlong *)param_3[3]) {
    plVar7 = param_2;
    if (param_3 == param_2) goto LAB_18051dee2;
    while (plVar7 != (longlong *)0x0) {
      plVar7 = (longlong *)plVar7[3];
      if (plVar7 == param_3) {
        if ((longlong *)param_2[3] == param_3) {
          FUN_1805200f0(param_1,param_2,param_4);
          return param_1;
        }
        puVar9 = (undefined8 *)FUN_1805200a0(&local_res18,param_3,(longlong *)param_2[3],param_4);
        FUN_1805200f0(param_1,param_2,*puVar9);
        return param_1;
      }
    }
    if ((*(byte *)(param_3 + 0x15) & 1) == 0) {
      local_98._0_4_ = (float)(int)param_3[4] + (float)local_98;
      local_98._4_4_ = (float)(int)((ulonglong)param_3[4] >> 0x20) + local_98._4_4_;
    }
    else {
      if ((*(byte *)(param_3 + 0x15) & 1) == 0) {
        if (param_3[3] == 0) goto LAB_18051de05;
        plVar7 = (longlong *)FUN_18134c2e0();
      }
      else {
        plVar7 = (longlong *)FUN_1812d2bd0(param_3);
      }
      if (plVar7 != (longlong *)0x0) {
        local_res18 = (float)local_98;
        fStackX_1c = local_98._4_4_;
        fVar10 = (float)(**(code **)(*param_3 + 0x80))(param_3);
        if (fVar10 == fVar3) {
          local_70 = CONCAT44(fStackX_1c,local_res18);
          pfVar8 = (float *)&local_70;
        }
        else {
          local_90 = (float)local_98 * fVar10;
          local_8c = local_98._4_4_ * fVar10;
          pfVar8 = &local_90;
        }
        pfVar8 = (float *)(**(code **)(*plVar7 + 0x48))(plVar7,local_58,*(undefined8 *)pfVar8);
        fVar10 = *pfVar8;
        fVar1 = pfVar8[1];
        uVar4 = *(undefined8 *)pfVar8;
        if (DAT_182673700 == 0) {
          local_78 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(local_78);
        }
        fVar2 = *(float *)(DAT_182673700 + 0xc0);
        local_88 = fVar10;
        fStack_84 = fVar1;
        if (fVar2 == fVar3) {
          local_68 = uVar4;
          pfVar8 = (float *)&local_68;
        }
        else {
          local_80 = fVar10 / fVar2;
          local_7c = fVar1 / fVar2;
          pfVar8 = &local_80;
        }
        local_98._0_4_ = (float)*(undefined8 *)pfVar8;
        local_98._4_4_ = (float)((ulonglong)*(undefined8 *)pfVar8 >> 0x20);
      }
    }
LAB_18051de05:
    pfVar8 = (float *)param_3[7];
    fVar10 = (float)local_98;
    if (pfVar8 != (float *)0x0) {
      fVar10 = local_98._4_4_ * pfVar8[1] + (float)local_98 * *pfVar8 + pfVar8[2];
      local_98._4_4_ = (float)local_98 * pfVar8[3] + local_98._4_4_ * pfVar8[4] + pfVar8[5];
    }
    local_98 = CONCAT44(local_98._4_4_,fVar10);
    param_4 = local_98;
    local_98._0_4_ = fVar10;
  }
  if (param_2 == (longlong *)0x0) {
LAB_18051dee2:
    *param_1 = (float)local_98;
    param_1[1] = local_98._4_4_;
  }
  else {
    plVar6 = (longlong *)param_2[3];
    plVar7 = param_2;
    while (plVar5 = plVar6, plVar5 != (longlong *)0x0) {
      plVar7 = plVar5;
      plVar6 = (longlong *)plVar5[3];
    }
    pfVar8 = (float *)FUN_1805200f0(&local_res18,plVar7,param_4);
    fVar3 = pfVar8[1];
    if (plVar7 == param_2) {
      *param_1 = *pfVar8;
      param_1[1] = fVar3;
    }
    else {
      FUN_1805200a0(param_1,plVar7,param_2,*(undefined8 *)pfVar8);
    }
  }
  return param_1;
}



############ FUN_ 1805200f0 size=486 ############

float * FUN_1805200f0(float *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  float *pfVar1;
  longlong *plVar2;
  undefined8 uVar3;
  float fVar4;
  float fVar5;
  undefined8 local_res8;
  undefined1 local_res10 [16];
  undefined1 local_50 [56];
  
  local_res8._0_4_ = (float)param_3;
  local_res8._4_4_ = (float)((ulonglong)param_3 >> 0x20);
  fVar5 = local_res8._4_4_;
  if (param_2[7] != 0) {
    pfVar1 = (float *)FUN_1812a04f0(param_2[7],local_50,param_3,param_4,0xfffffffffffffffe);
    fVar5 = (float)local_res8 * pfVar1[3];
    local_res8._0_4_ = local_res8._4_4_ * pfVar1[1] + (float)local_res8 * *pfVar1 + pfVar1[2];
    fVar5 = fVar5 + local_res8._4_4_ * pfVar1[4] + pfVar1[5];
  }
  if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
    local_res8._4_4_ = (float)((ulonglong)param_2[4] >> 0x20);
    local_res8._0_4_ = (float)local_res8 - (float)(int)param_2[4];
    fVar5 = fVar5 - (float)(int)local_res8._4_4_;
  }
  else {
    if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
      if (param_2[3] == 0) goto LAB_1805202b0;
      plVar2 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar2 = (longlong *)FUN_1812d2bd0(param_2);
    }
    if (plVar2 != (longlong *)0x0) {
      if (DAT_182673700 == 0) {
        uVar3 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar3);
      }
      fVar4 = *(float *)(DAT_182673700 + 0xc0);
      local_res8 = CONCAT44(fVar5,(float)local_res8);
      if (fVar4 != DAT_1824c3ea4) {
        local_res8 = CONCAT44(fVar5 * fVar4,(float)local_res8 * fVar4);
      }
      pfVar1 = (float *)(**(code **)(*plVar2 + 0x58))(plVar2,local_res10,local_res8);
      local_res8._0_4_ = *pfVar1;
      fVar5 = pfVar1[1];
      fVar4 = (float)(**(code **)(*param_2 + 0x80))(param_2);
      if (fVar4 != DAT_1824c3ea4) {
        fVar5 = fVar5 / fVar4;
        local_res8._0_4_ = (float)local_res8 / fVar4;
      }
    }
  }
LAB_1805202b0:
  *param_1 = (float)local_res8;
  param_1[1] = fVar5;
  return param_1;
}



############ FUN_ 1804e5b90 size=159 ############

void FUN_1804e5b90(undefined8 param_1,ulonglong param_2,undefined4 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  undefined8 uVar2;
  undefined8 local_res8;
  
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130,param_2,param_3,param_4,0xfffffffffffffffe);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  local_res8._0_4_ = (float)param_2;
  uVar1 = param_2;
  if (*(float *)(DAT_182673700 + 0xc0) != DAT_1824c3ea4) {
    local_res8 = (ulonglong)(uint)((float)local_res8 * *(float *)(DAT_182673700 + 0xc0));
    uVar1 = local_res8;
  }
  local_res8 = uVar1;
  FUN_1812c60b0(local_res8);
  return;
}



############ FUN_ 1812c60b0 size=238 ############

void FUN_1812c60b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 uVar2;
  ulonglong *puVar3;
  ulonglong uVar4;
  char cVar5;
  float local_res10;
  float fStackX_14;
  undefined4 local_res18;
  undefined1 local_res20 [8];
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  fStackX_14 = (float)((ulonglong)param_1 >> 0x20);
  local_res10 = (float)param_1;
  local_res10 = SUB84((double)local_res10 + DAT_1824c4520,0);
  local_res18 = SUB84((double)fStackX_14 + DAT_1824c4520,0);
  uVar4 = CONCAT44(local_res18,local_res10);
  FUN_1812c75b0();
  if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar5 = FUN_1812c7510();
  }
  else {
    uVar2 = (*DAT_182678f18)();
    iVar1 = (*DAT_182678ec8)(uVar2);
    cVar5 = iVar1 == 2;
  }
  if (cVar5 != '\0') {
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    puVar3 = (ulonglong *)
             FUN_18051edd0(*(undefined8 *)(DAT_182673700 + 0x78),local_res20,uVar4,param_4,uVar6);
    uVar4 = *puVar3;
    local_res10 = (float)uVar4;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812c6197. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  SetCursorPos(local_res10,uVar4 >> 0x20);
  return;
}



############ FUN_ 18051edd0 size=238 ############

int * FUN_18051edd0(undefined8 param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  double dVar6;
  
  lVar4 = FUN_18133d700(param_1,param_3,0,param_4,0xfffffffffffffffe);
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  fVar1 = *(float *)(DAT_182673700 + 0xc0);
  iVar2 = *(int *)(lVar4 + 0x28);
  iVar3 = *(int *)(lVar4 + 8);
  dVar6 = *(double *)(lVar4 + 0x30) / (double)fVar1;
  *param_2 = (int)((double)((int)param_3 - (int)((float)*(int *)(lVar4 + 4) * fVar1)) * dVar6) +
             *(int *)(lVar4 + 0x24);
  param_2[1] = (int)((double)((int)((ulonglong)param_3 >> 0x20) - (int)((float)iVar3 * fVar1)) *
                    dVar6) + iVar2;
  return param_2;
}



############ FUN_ 1804e5c30 size=989 ############

bool FUN_1804e5c30(longlong param_1,undefined8 param_2,undefined8 param_3,uint param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  undefined8 *puVar12;
  longlong lVar13;
  longlong lVar14;
  longlong *plVar15;
  bool bVar16;
  bool bVar17;
  float local_f8;
  float fStack_f4;
  longlong local_f0;
  longlong local_e8;
  undefined8 *local_e0;
  undefined8 local_d8;
  undefined1 local_d0 [8];
  undefined1 local_c8 [144];
  
  local_d8 = 0xfffffffffffffffe;
  if (*(uint *)(param_1 + 0x28) == param_4) {
    return false;
  }
  if (((*(uint *)(param_1 + 0x28) & 0x70) == 0) || ((param_4 & 0x70) != 0)) {
    FUN_1804e62b0(param_1,param_2,param_3,0);
  }
  uVar9 = *(uint *)(param_1 + 0x28);
  bVar16 = (uVar9 & 0x70) != 0;
  bVar17 = (param_4 & 0x70) != 0;
  if (bVar16 == bVar17) {
    *(uint *)(param_1 + 0x28) = param_4;
    return false;
  }
  iVar10 = *(int *)(param_1 + 0x68);
  fStack_f4 = (float)((ulonglong)param_2 >> 0x20);
  local_f8 = (float)param_2;
  if (bVar16) {
    if (*(longlong *)(param_1 + 0x48) == 0) {
      lVar13 = 0;
    }
    else {
      lVar13 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x10);
    }
    if (lVar13 != 0) {
      uVar11 = DAT_182673aec & 0xffffff8f;
      *(uint *)(param_1 + 0x28) = param_4;
      uVar3 = *(undefined4 *)(param_1 + 0x3c);
      uVar4 = *(undefined4 *)(param_1 + 0x38);
      uVar5 = *(undefined4 *)(param_1 + 0x34);
      uVar6 = *(undefined4 *)(param_1 + 0x30);
      uVar7 = *(undefined4 *)(param_1 + 0x2c);
      local_f0 = param_1;
      puVar12 = (undefined8 *)
                FUN_1804e5790(local_d0,lVar13,
                              CONCAT44(*(float *)(param_1 + 0x24) + fStack_f4,
                                       *(float *)(param_1 + 0x20) + local_f8));
      FUN_1813403f0(lVar13,&local_f0,*puVar12,param_3,uVar9 | uVar11,uVar7,uVar6,uVar5,uVar4,uVar3);
      if (iVar10 != *(int *)(param_1 + 0x68)) {
        return true;
      }
    }
    FUN_1804e67c0(param_1,0);
  }
  *(uint *)(param_1 + 0x28) = param_4;
  if (!bVar17) goto LAB_1804e5fc8;
  lVar13 = FUN_18134b820();
  *(int *)(lVar13 + 0x88) = *(int *)(lVar13 + 0x88) + 1;
  if (*(longlong *)(param_1 + 0x48) == 0) {
    lVar13 = 0;
  }
  else {
    lVar13 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x10);
  }
  if (lVar13 == 0) goto LAB_1804e5fc8;
  *(undefined8 *)(param_1 + 0xd0) = *(undefined8 *)(param_1 + 0xb0);
  *(undefined8 *)(param_1 + 0xd8) = *(undefined8 *)(param_1 + 0xb8);
  *(undefined8 *)(param_1 + 0xe0) = *(undefined8 *)(param_1 + 0xc0);
  *(undefined8 *)(param_1 + 0xe8) = *(undefined8 *)(param_1 + 200);
  *(undefined8 *)(param_1 + 0xb0) = *(undefined8 *)(param_1 + 0x90);
  *(undefined8 *)(param_1 + 0xb8) = *(undefined8 *)(param_1 + 0x98);
  *(undefined8 *)(param_1 + 0xc0) = *(undefined8 *)(param_1 + 0xa0);
  *(undefined8 *)(param_1 + 200) = *(undefined8 *)(param_1 + 0xa8);
  *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_1 + 0x70);
  *(undefined4 *)(param_1 + 0x94) = *(undefined4 *)(param_1 + 0x74);
  *(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(param_1 + 0x78);
  *(undefined4 *)(param_1 + 0x9c) = *(undefined4 *)(param_1 + 0x7c);
  *(undefined4 *)(param_1 + 0xa0) = *(undefined4 *)(param_1 + 0x80);
  *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_1 + 0x84);
  *(undefined4 *)(param_1 + 0xa8) = *(undefined4 *)(param_1 + 0x88);
  *(undefined4 *)(param_1 + 0xac) = *(undefined4 *)(param_1 + 0x8c);
  *(float *)(param_1 + 0x70) = local_f8;
  *(float *)(param_1 + 0x74) = fStack_f4;
  *(undefined8 *)(param_1 + 0x78) = param_3;
  *(uint *)(param_1 + 0x80) = *(uint *)(param_1 + 0x28) & 0x70;
  *(bool *)(param_1 + 0x88) = *(int *)(param_1 + 0x14) == 1;
  if ((*(byte *)(lVar13 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar13 + 0x18) != 0) {
      lVar14 = FUN_18134c2e0();
      goto LAB_1804e5efa;
    }
LAB_1804e5f0a:
    *(undefined4 *)(param_1 + 0x84) = 0;
  }
  else {
    if (DAT_182673700 == 0) {
      local_e0 = (undefined8 *)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_e0);
    }
    plVar15 = *(longlong **)(DAT_182673700 + 0x68);
    plVar2 = plVar15 + *(int *)(DAT_182673700 + 0x74);
    for (; plVar15 != plVar2; plVar15 = plVar15 + 1) {
      lVar14 = *plVar15;
      if (*(longlong *)(lVar14 + 8) == lVar13) goto LAB_1804e5efa;
    }
    lVar14 = 0;
LAB_1804e5efa:
    if (lVar14 == 0) goto LAB_1804e5f0a;
    *(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(lVar14 + 0x58);
  }
  *(undefined1 *)(param_1 + 0xf8) = 0;
  local_e0 = *(undefined8 **)(param_1 + 0x50);
  *(undefined8 *)(param_1 + 0x50) = 0;
  if (local_e0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_e0 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_e0)(local_e0,1);
    }
  }
  uVar3 = *(undefined4 *)(param_1 + 0x3c);
  uVar4 = *(undefined4 *)(param_1 + 0x38);
  uVar5 = *(undefined4 *)(param_1 + 0x34);
  uVar6 = *(undefined4 *)(param_1 + 0x30);
  uVar7 = *(undefined4 *)(param_1 + 0x2c);
  local_e8 = param_1;
  puVar12 = (undefined8 *)FUN_1804e5790(local_c8,lVar13,param_2);
  FUN_1813409c0(lVar13,&local_e8,*puVar12,param_3,uVar7,uVar6,uVar5,uVar4,uVar3);
LAB_1804e5fc8:
  return iVar10 != *(int *)(param_1 + 0x68);
}



############ FUN_ 1804e67c0 size=503 ############

void FUN_1804e67c0(longlong param_1,char param_2)

{
  float fVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong lVar4;
  char cVar5;
  float fVar6;
  float fVar7;
  undefined8 local_res8;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined1 local_38 [48];
  
  if ((param_2 == '\0') || ((*(byte *)(param_1 + 0x28) & 0x70) == 0)) {
    cVar5 = '\0';
  }
  else {
    cVar5 = '\x01';
  }
  *(undefined1 *)(param_1 + 0x41) = 0;
  if (cVar5 != *(char *)(param_1 + 0x40)) {
    lVar4 = 0;
    if (cVar5 == '\0') {
      if (*(longlong *)(param_1 + 0x48) != 0) {
        lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x10);
      }
      if (lVar4 != 0) {
        fVar6 = *(float *)(param_1 + 0x18);
        fVar7 = *(float *)(param_1 + 0x1c);
        local_res8 = *(undefined8 *)(param_1 + 0x18);
        if (DAT_182673700 == 0) {
          uVar2 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(uVar2);
        }
        fVar1 = *(float *)(DAT_182673700 + 0xc0);
        if (fVar1 != DAT_1824c3ea4) {
          local_res8 = CONCAT44(fVar7 / fVar1,fVar6 / fVar1);
        }
        uStack_40 = *(undefined8 *)(lVar4 + 0x28);
        local_48 = 0;
        do {
          if (lVar4 == 0) break;
          puVar3 = (undefined8 *)FUN_18051e4b0(local_38,lVar4,&local_48);
          local_48 = *puVar3;
          uStack_40 = puVar3[1];
          lVar4 = *(longlong *)(lVar4 + 0x18);
        } while (lVar4 != 0);
        fVar6 = (float)(int)local_48;
        fVar7 = (float)(int)((ulonglong)local_48 >> 0x20);
        if ((fVar6 <= (float)local_res8) &&
           (fVar6 = fVar6 + (float)(int)uStack_40, (float)local_res8 <= fVar6)) {
          fVar6 = (float)local_res8;
        }
        if ((fVar7 <= local_res8._4_4_) &&
           (fVar7 = fVar7 + (float)(int)((ulonglong)uStack_40 >> 0x20), local_res8._4_4_ <= fVar7))
        {
          fVar7 = local_res8._4_4_;
        }
        FUN_1804e5b90(CONCAT44(fVar7,fVar6),CONCAT44(fVar7,fVar6));
      }
    }
    *(char *)(param_1 + 0x40) = cVar5;
    *(undefined8 *)(param_1 + 0x20) = 0;
    FUN_1804e6e90(param_1,1);
  }
  return;
}



############ FUN_ 1804e69c0 size=864 ############

void FUN_1804e69c0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  int iVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float local_res8;
  float fStackX_c;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [16];
  undefined1 local_68 [80];
  
  piVar4 = (int *)FUN_181344bc0(param_2,local_78,param_3,param_4,0xfffffffffffffffe);
  iVar8 = 0;
  if (0 < piVar4[2] + -4) {
    iVar8 = piVar4[2] + -4;
  }
  iVar7 = 0;
  if (0 < piVar4[3] + -4) {
    iVar7 = piVar4[3] + -4;
  }
  iVar2 = piVar4[1];
  iVar3 = *piVar4;
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  fVar1 = *(float *)(DAT_182673700 + 0xc0);
  if (fVar1 == DAT_1824c3ea4) {
    local_88._4_4_ = (float)(iVar2 + 2);
    local_88._0_4_ = (float)(iVar3 + 2);
    uStack_80._0_4_ = (float)iVar8;
    uStack_80._4_4_ = (float)iVar7;
  }
  else {
    local_88._4_4_ = fVar1 * (float)(iVar2 + 2);
    local_88._0_4_ = (float)(iVar3 + 2) * fVar1;
    uStack_80._0_4_ = fVar1 * (float)iVar8;
    uStack_80._4_4_ = fVar1 * (float)iVar7;
  }
  fVar1 = (float)local_88;
  if ((fVar1 <= *(float *)(param_1 + 0x18)) && (local_88._4_4_ <= *(float *)(param_1 + 0x1c))) {
    if (*(float *)(param_1 + 0x18) < fVar1 + (float)uStack_80) {
      if (*(float *)(param_1 + 0x1c) < local_88._4_4_ + uStack_80._4_4_) {
        if (*(char *)(param_1 + 0x41) == '\0') {
          return;
        }
        if ((*(float *)(param_1 + 0x20) == 0.0) && (*(float *)(param_1 + 0x24) == 0.0)) {
          return;
        }
        fVar10 = *(float *)(param_1 + 0x20) + *(float *)(param_1 + 0x18);
        fVar9 = *(float *)(param_1 + 0x24) + *(float *)(param_1 + 0x1c);
        if (fVar10 < fVar1) {
          return;
        }
        if (fVar9 < local_88._4_4_) {
          return;
        }
        if (fVar1 + (float)uStack_80 <= fVar10) {
          return;
        }
        if (local_88._4_4_ + uStack_80._4_4_ <= fVar9) {
          return;
        }
        FUN_1812c60b0(CONCAT44(*(float *)(param_1 + 0x24) + *(float *)(param_1 + 0x1c),
                               *(float *)(param_1 + 0x20) + *(float *)(param_1 + 0x18)));
        *(undefined8 *)(param_1 + 0x20) = 0;
        return;
      }
    }
  }
  uStack_80 = *(undefined8 *)(param_2 + 0x28);
  local_88 = 0;
  for (; param_2 != 0; param_2 = *(longlong *)(param_2 + 0x18)) {
    puVar6 = (undefined8 *)FUN_18051e4b0(local_68,param_2,&local_88);
    local_88 = *puVar6;
    uStack_80 = puVar6[1];
  }
  fStackX_c = (float)(int)((ulonglong)uStack_80 >> 0x20) * DAT_1824c3d8c +
              (float)(int)((ulonglong)local_88 >> 0x20);
  local_res8 = (float)(int)uStack_80 * DAT_1824c3d8c + (float)(int)local_88;
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  fVar1 = *(float *)(DAT_182673700 + 0xc0);
  if (fVar1 != DAT_1824c3ea4) {
    fStackX_c = fVar1 * fStackX_c;
    local_res8 = local_res8 * fVar1;
  }
  *(float *)(param_1 + 0x20) =
       (*(float *)(param_1 + 0x18) - local_res8) + *(float *)(param_1 + 0x20);
  *(float *)(param_1 + 0x24) = (*(float *)(param_1 + 0x1c) - fStackX_c) + *(float *)(param_1 + 0x24)
  ;
  FUN_1804e5b90();
  return;
}



############ FUN_ 18133fcf0 size=493 ############

void FUN_18133fcf0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  char cVar4;
  longlong lVar5;
  int iVar6;
  undefined8 *local_c8;
  double local_c0;
  undefined8 local_b8;
  uint local_b0;
  double local_a8;
  float local_98;
  float local_94;
  undefined4 local_90;
  undefined4 local_8c;
  uint local_88;
  undefined8 local_84;
  undefined8 local_7c;
  undefined4 local_74;
  undefined8 local_70;
  longlong *local_68;
  longlong *local_60;
  undefined8 local_58;
  undefined8 local_50;
  longlong local_48;
  undefined2 local_40;
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  local_b8 = param_3;
  if (DAT_182673700 == 0) {
    local_c0 = (double)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_c0);
  }
  lVar3 = DAT_182673700;
  cVar4 = FUN_181343030(param_1);
  if (cVar4 == '\0') {
    FUN_1804de690(&local_c8,param_1);
    local_48 = *param_2;
    local_b0 = DAT_182673aec & 0xffffff8f;
    local_88 = *(uint *)(local_48 + 0x28) | local_b0;
    local_98 = (float)local_b8;
    local_94 = local_b8._4_4_;
    local_a8 = (double)(float)local_b8 + DAT_1824c4520;
    local_90 = local_a8._0_4_;
    local_c0 = (double)local_b8._4_4_ + DAT_1824c4520;
    local_8c = local_c0._0_4_;
    local_84 = 0;
    local_7c = 0;
    local_74 = 0;
    local_40 = 0;
    local_70 = param_3;
    local_68 = param_1;
    local_60 = param_1;
    local_58 = param_4;
    local_50 = param_4;
    (**(code **)(*param_1 + 8))(param_1,&local_98);
    if (local_c8 == (undefined8 *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = local_c8[2];
    }
    if (lVar5 != 0) {
      FUN_18133bd90(lVar3);
      iVar6 = *(int *)(lVar3 + 0x44);
      while( true ) {
        if (local_c8 == (undefined8 *)0x0) {
          lVar5 = 0;
        }
        else {
          lVar5 = local_c8[2];
        }
        if ((lVar5 == 0) || (iVar6 < 1)) break;
        iVar6 = iVar6 + -1;
        if ((*(int *)(lVar3 + 0x44) <= iVar6) && (iVar6 = *(int *)(lVar3 + 0x44) + -1, iVar6 < 0))
        break;
        plVar2 = *(longlong **)(*(longlong *)(lVar3 + 0x38) + (longlong)iVar6 * 8);
        (**(code **)(*plVar2 + 8))(plVar2,&local_98);
      }
      FUN_18051e7b0(param_1,&local_c8,FUN_180492ef8,&local_98);
    }
    if (local_c8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_c8 + 1);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)*local_c8)(local_c8,1);
      }
    }
  }
  else {
    FUN_18133b830(lVar3);
  }
  return;
}



############ FUN_ 18133b830 size=930 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18133b830(longlong param_1)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong lVar6;
  double dVar7;
  longlong lVar8;
  float *pfVar9;
  longlong lVar10;
  undefined8 *puVar11;
  int iVar12;
  undefined8 uVar13;
  undefined1 auStack_148 [32];
  undefined8 local_128;
  float local_120;
  float fStack_11c;
  double local_118;
  float local_110;
  float local_10c;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined8 local_100;
  double local_f8;
  double local_f0;
  undefined8 local_e8;
  double local_e0;
  float local_d8;
  float local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  uint local_c8;
  undefined8 local_c4;
  undefined8 local_bc;
  undefined4 local_b4;
  float local_b0;
  float local_ac;
  longlong local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  undefined8 local_88;
  undefined2 local_80;
  undefined8 local_78;
  undefined1 local_70 [8];
  undefined1 local_68 [8];
  undefined1 local_60 [8];
  longlong local_58;
  ushort local_50;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_148;
  if (*(int *)(param_1 + 0x44) != 0) {
    FUN_1812a77d0(param_1 + 8,0x14);
    if (DAT_182673700 == 0) {
      local_118 = (double)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_118);
    }
    pfVar9 = (float *)FUN_1804e5a90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),
                                    local_70);
    local_120 = *pfVar9;
    fStack_11c = pfVar9[1];
    uVar13 = *(undefined8 *)pfVar9;
    if (DAT_182673700 == 0) {
      local_118 = (double)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_118);
    }
    fVar2 = *(float *)(DAT_182673700 + 0xc0);
    if (fVar2 == DAT_1824c3ea4) {
      local_100 = uVar13;
      pfVar9 = (float *)&local_100;
    }
    else {
      local_110 = local_120 / fVar2;
      local_10c = fStack_11c / fVar2;
      pfVar9 = &local_110;
    }
    fVar2 = *pfVar9;
    fVar3 = pfVar9[1];
    *(float *)(param_1 + 0x84) = fVar3;
    dVar7 = DAT_1824c4520;
    local_f0 = (double)fVar3 + DAT_1824c4520;
    *(float *)(param_1 + 0x80) = fVar2;
    local_f8 = (double)fVar2 + dVar7;
    local_108 = local_f8._0_4_;
    uStack_104 = local_f0._0_4_;
    lVar10 = FUN_18134b740(param_1,CONCAT44(local_f0._0_4_,local_f8._0_4_));
    if (lVar10 != 0) {
      FUN_1804de690(&local_120,lVar10);
      local_128 = *(undefined8 *)(param_1 + 0x80);
      lVar8 = *(longlong *)(lVar10 + 0x18);
      lVar5 = lVar10;
      while (lVar6 = lVar8, lVar6 != 0) {
        lVar5 = lVar6;
        lVar8 = *(longlong *)(lVar6 + 0x18);
      }
      puVar11 = (undefined8 *)FUN_1805200f0(local_68,lVar5,local_128);
      uVar13 = *puVar11;
      local_128 = uVar13;
      if (lVar5 != lVar10) {
        if (*(longlong *)(lVar10 + 0x18) != lVar5) {
          puVar11 = (undefined8 *)FUN_1805200a0(local_60,lVar5,*(longlong *)(lVar10 + 0x18),uVar13);
          uVar13 = *puVar11;
        }
        FUN_1805200f0(&local_128,lVar10,uVar13);
      }
      _ftime64_s(&local_58);
      local_98 = local_58 * 1000 + (ulonglong)local_50;
      local_e8 = **(undefined8 **)(*(longlong *)(param_1 + 0x30) + 0x18);
      local_d8 = (float)local_128;
      local_d4 = local_128._4_4_;
      local_e0 = (double)(float)local_128 + dVar7;
      local_d0 = local_e0._0_4_;
      local_118 = (double)local_128._4_4_ + dVar7;
      local_cc = local_118._0_4_;
      local_c8 = DAT_182673aec;
      local_c4 = 0;
      local_bc = 0;
      local_b4 = 0;
      local_b0 = (float)local_128;
      local_ac = local_128._4_4_;
      local_80 = 0;
      iVar12 = *(int *)(param_1 + 0x44);
      lVar5 = CONCAT44(fStack_11c,local_120);
      local_a8 = lVar10;
      local_a0 = lVar10;
      local_90 = local_98;
      local_88 = local_e8;
      if ((DAT_182673aec & 0x70) == 0) {
        while( true ) {
          if (lVar5 == 0) {
            lVar10 = 0;
          }
          else {
            lVar10 = *(longlong *)(lVar5 + 0x10);
          }
          if ((lVar10 == 0) || (iVar12 < 1)) break;
          iVar12 = iVar12 + -1;
          if ((*(int *)(param_1 + 0x44) <= iVar12) &&
             (iVar12 = *(int *)(param_1 + 0x44) + -1, iVar12 < 0)) break;
          plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x38) + (longlong)iVar12 * 8);
          (**(code **)(*plVar4 + 8))(plVar4,&local_d8);
        }
      }
      else {
        while( true ) {
          if (lVar5 == 0) {
            lVar10 = 0;
          }
          else {
            lVar10 = *(longlong *)(lVar5 + 0x10);
          }
          if ((lVar10 == 0) || (iVar12 < 1)) break;
          iVar12 = iVar12 + -1;
          if ((*(int *)(param_1 + 0x44) <= iVar12) &&
             (iVar12 = *(int *)(param_1 + 0x44) + -1, iVar12 < 0)) break;
          plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x38) + (longlong)iVar12 * 8);
          (**(code **)(*plVar4 + 0x28))(plVar4,&local_d8);
        }
      }
      if (lVar5 != 0) {
        LOCK();
        piVar1 = (int *)(lVar5 + 8);
        iVar12 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar12 == 1) {
          (*(code *)**(undefined8 **)CONCAT44(fStack_11c,local_120))
                    ((undefined8 *)CONCAT44(fStack_11c,local_120),1);
        }
      }
    }
  }
}



############ FUN_ 18133fef0 size=1264 ############

void FUN_18133fef0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                  undefined4 param_9)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined1 uVar7;
  longlong *plVar8;
  undefined8 uVar9;
  longlong *plVar10;
  char cVar11;
  int iVar12;
  float *pfVar13;
  undefined8 *puVar14;
  longlong lVar15;
  longlong lVar16;
  int iVar17;
  undefined8 uVar18;
  double dVar19;
  uint uVar20;
  undefined8 local_128;
  float local_120;
  float fStack_11c;
  undefined8 *local_118;
  longlong *local_110;
  float local_108;
  float local_104;
  undefined8 local_100;
  longlong local_f8;
  double local_f0;
  uint local_e8;
  uint local_e4;
  undefined8 local_e0;
  float local_d8;
  float local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  uint local_c8;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  longlong *local_a8;
  longlong *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  longlong local_88;
  char local_80;
  undefined1 local_7f;
  undefined8 local_78;
  undefined8 local_70;
  undefined1 local_68 [8];
  undefined1 local_60 [8];
  undefined8 local_58;
  
  local_78 = 0xfffffffffffffffe;
  local_100 = param_3;
  cVar11 = FUN_181343030();
  if (cVar11 == '\0') {
    FUN_1804de690(&local_118,param_1);
    local_110 = &local_f8;
    local_f8 = *param_2;
    if ((*(char *)(local_f8 + 0xf8) == '\0') &&
       (*(longlong *)(local_f8 + 0xf0) <= *(longlong *)(local_f8 + 0x78) + (longlong)DAT_1824c4328))
    {
      uVar7 = 0;
    }
    else {
      uVar7 = 1;
    }
    cVar11 = '\x01';
    if ((*(char *)(local_f8 + 0xf8) == '\0') &&
       (*(longlong *)(local_f8 + 0xf0) <= *(longlong *)(local_f8 + 0x78) + (longlong)DAT_1824c4328))
    {
      iVar17 = 1;
      pfVar13 = (float *)(local_f8 + 0x94);
      cVar11 = '\x01';
      while( true ) {
        iVar12 = iVar17;
        if (2 < iVar17) {
          iVar12 = 2;
        }
        if ((double)(iVar12 * 400) * DAT_1824c3e30 <=
            (double)(*(longlong *)(local_f8 + 0x78) - *(longlong *)(pfVar13 + 1)) * DAT_1824c3e30)
        break;
        dVar19 = (double)(*(float *)(local_f8 + 0x70) - pfVar13[-1]);
        uVar20 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
        iVar12 = 8;
        if (*(char *)(local_f8 + 0x88) != '\0') {
          iVar12 = 0x19;
        }
        if (((((float)iVar12 <=
               (float)(double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) & uVar20,
                                       SUB84(dVar19,0) & (uint)DAT_1824c4f10)) ||
             (dVar19 = (double)(*(float *)(local_f8 + 0x74) - *pfVar13),
             (float)iVar12 <=
             (float)(double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) & uVar20,
                                     SUB84(dVar19,0) & (uint)DAT_1824c4f10))) ||
            (*(float *)(local_f8 + 0x80) != pfVar13[3])) ||
           (*(float *)(local_f8 + 0x84) != pfVar13[4])) break;
        cVar11 = cVar11 + '\x01';
        iVar17 = iVar17 + 1;
        pfVar13 = pfVar13 + 8;
        if (3 < iVar17) break;
      }
    }
    uVar5 = *(undefined8 *)(local_f8 + 0x78);
    fVar2 = *(float *)(local_f8 + 0x70);
    fVar3 = *(float *)(local_f8 + 0x74);
    uVar9 = *(undefined8 *)(local_f8 + 0x70);
    local_70 = uVar5;
    if (DAT_182673700 == 0) {
      local_f0 = (double)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_f0);
    }
    fVar4 = *(float *)(DAT_182673700 + 0xc0);
    if (fVar4 == DAT_1824c3ea4) {
      local_e0 = uVar9;
      pfVar13 = (float *)&local_e0;
    }
    else {
      local_108 = fVar2 / fVar4;
      local_104 = fVar3 / fVar4;
      pfVar13 = &local_108;
    }
    local_120 = *pfVar13;
    fStack_11c = pfVar13[1];
    local_128 = *(undefined8 *)pfVar13;
    uVar9 = *(undefined8 *)pfVar13;
    if (param_1 != (longlong *)0x0) {
      plVar10 = (longlong *)param_1[3];
      plVar6 = param_1;
      while (plVar8 = plVar10, plVar8 != (longlong *)0x0) {
        plVar6 = plVar8;
        plVar10 = (longlong *)plVar8[3];
      }
      puVar14 = (undefined8 *)FUN_1805200f0(local_68,plVar6,*(undefined8 *)pfVar13);
      uVar18 = *puVar14;
      uVar9 = *puVar14;
      if (plVar6 != param_1) {
        local_128 = uVar18;
        if ((longlong *)param_1[3] != plVar6) {
          puVar14 = (undefined8 *)FUN_1805200a0(local_60,plVar6,(longlong *)param_1[3],uVar18);
          uVar18 = *puVar14;
        }
        FUN_1805200f0(&local_128,param_1,uVar18);
        uVar9 = local_128;
      }
    }
    local_128 = uVar9;
    local_e8 = DAT_182673aec & 0xffffff8f;
    local_e4 = *(uint *)(*param_2 + 0x28) | local_e8;
    local_d8 = (float)local_100;
    local_d4 = local_100._4_4_;
    local_f0 = (double)(float)local_100 + DAT_1824c4520;
    local_d0 = local_f0._0_4_;
    local_110 = (longlong *)((double)local_100._4_4_ + DAT_1824c4520);
    local_cc = local_110._0_4_;
    local_c4 = param_5;
    local_c0 = param_6;
    local_bc = param_7;
    local_b8 = param_8;
    local_b4 = param_9;
    local_b0 = (undefined4)local_128;
    local_ac = local_128._4_4_;
    local_88 = local_f8;
    local_c8 = local_e4;
    local_a8 = param_1;
    local_a0 = param_1;
    local_98 = param_4;
    local_90 = uVar5;
    local_80 = cVar11;
    local_7f = uVar7;
    (**(code **)(*param_1 + 0x28))(param_1,&local_d8);
    if (local_118 == (undefined8 *)0x0) {
      lVar15 = 0;
    }
    else {
      lVar15 = local_118[2];
    }
    if (lVar15 != 0) {
      if (DAT_182673700 == 0) {
        local_58 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_58);
      }
      lVar15 = DAT_182673700;
      FUN_18133bd90(DAT_182673700);
      iVar17 = *(int *)(lVar15 + 0x44);
      while( true ) {
        if (local_118 == (undefined8 *)0x0) {
          lVar16 = 0;
        }
        else {
          lVar16 = local_118[2];
        }
        if ((lVar16 == 0) || (iVar17 < 1)) break;
        iVar17 = iVar17 + -1;
        if ((*(int *)(lVar15 + 0x44) <= iVar17) &&
           (iVar17 = *(int *)(lVar15 + 0x44) + -1, iVar17 < 0)) break;
        plVar6 = *(longlong **)(*(longlong *)(lVar15 + 0x38) + (longlong)iVar17 * 8);
        (**(code **)(*plVar6 + 0x28))(plVar6,&local_d8);
      }
      FUN_18051e7b0(param_1,&local_118,&LAB_180526748,&local_d8);
    }
    if (local_118 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_118 + 1);
      iVar17 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar17 == 1) {
        (**(code **)*local_118)(local_118,1);
      }
    }
  }
  return;
}



############ FUN_ 1813403f0 size=1479 ############

void FUN_1813403f0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                  undefined4 param_9,undefined4 param_10)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined1 uVar7;
  longlong *plVar8;
  longlong *plVar9;
  char cVar10;
  int iVar11;
  float *pfVar12;
  undefined8 *puVar13;
  longlong lVar14;
  longlong lVar15;
  int iVar16;
  undefined8 uVar17;
  byte bVar18;
  double dVar19;
  uint uVar20;
  undefined8 *local_res8;
  float local_138;
  float fStack_134;
  longlong *local_130;
  float local_128;
  float local_124;
  float local_120;
  float fStack_11c;
  undefined8 local_118;
  longlong local_110;
  double local_108;
  undefined8 local_f8;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  float local_e8;
  float local_e4;
  undefined4 local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  undefined4 local_c8;
  undefined4 local_c4;
  float local_c0;
  float local_bc;
  longlong *local_b8;
  longlong *local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  longlong local_98;
  byte local_90;
  undefined1 local_8f;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined1 local_70 [8];
  undefined1 local_68 [8];
  undefined8 local_60;
  undefined8 local_58;
  longlong lStack_50;
  
  local_80 = 0xfffffffffffffffe;
  local_118 = param_3;
  if (((*(byte *)((longlong)param_1 + 0xa9) & 0x80) == 0) ||
     (cVar10 = FUN_181343030(), cVar10 == '\0')) {
    FUN_1804de690(&local_res8,param_1);
    if ((*(byte *)((longlong)param_1 + 0xa9) & 8) != 0) {
      uStack_ec = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_f0 = (undefined4)param_1[5];
      lStack_50 = param_1[5];
      local_f8 = 0;
      local_58 = 0;
      FUN_181342870(param_1,&local_58,1);
    }
    local_130 = &local_110;
    local_110 = *param_2;
    if ((*(char *)(local_110 + 0xf8) == '\0') &&
       (*(longlong *)(local_110 + 0xf0) <= *(longlong *)(local_110 + 0x78) + (longlong)DAT_1824c4328
       )) {
      uVar7 = 0;
    }
    else {
      uVar7 = 1;
    }
    bVar18 = 1;
    if ((*(char *)(local_110 + 0xf8) == '\0') &&
       (*(longlong *)(local_110 + 0xf0) <= *(longlong *)(local_110 + 0x78) + (longlong)DAT_1824c4328
       )) {
      iVar16 = 1;
      pfVar12 = (float *)(local_110 + 0x94);
      bVar18 = 1;
      while( true ) {
        iVar11 = iVar16;
        if (2 < iVar16) {
          iVar11 = 2;
        }
        if ((double)(iVar11 * 400) * DAT_1824c3e30 <=
            (double)(*(longlong *)(local_110 + 0x78) - *(longlong *)(pfVar12 + 1)) * DAT_1824c3e30)
        break;
        dVar19 = (double)(*(float *)(local_110 + 0x70) - pfVar12[-1]);
        uVar20 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
        iVar11 = 8;
        if (*(char *)(local_110 + 0x88) != '\0') {
          iVar11 = 0x19;
        }
        if (((((float)iVar11 <=
               (float)(double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) & uVar20,
                                       SUB84(dVar19,0) & (uint)DAT_1824c4f10)) ||
             (dVar19 = (double)(*(float *)(local_110 + 0x74) - *pfVar12),
             (float)iVar11 <=
             (float)(double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) & uVar20,
                                     SUB84(dVar19,0) & (uint)DAT_1824c4f10))) ||
            (*(float *)(local_110 + 0x80) != pfVar12[3])) ||
           (*(float *)(local_110 + 0x84) != pfVar12[4])) break;
        bVar18 = bVar18 + 1;
        iVar16 = iVar16 + 1;
        pfVar12 = pfVar12 + 8;
        if (3 < iVar16) break;
      }
    }
    uVar5 = *(undefined8 *)(local_110 + 0x78);
    fVar2 = *(float *)(local_110 + 0x70);
    fVar3 = *(float *)(local_110 + 0x74);
    uVar17 = *(undefined8 *)(local_110 + 0x70);
    local_78 = uVar5;
    if (DAT_182673700 == 0) {
      local_108 = (double)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_108);
    }
    fVar4 = *(float *)(DAT_182673700 + 0xc0);
    if (fVar4 == DAT_1824c3ea4) {
      local_88 = uVar17;
      pfVar12 = (float *)&local_88;
    }
    else {
      local_128 = fVar2 / fVar4;
      local_124 = fVar3 / fVar4;
      pfVar12 = &local_128;
    }
    local_138 = *pfVar12;
    local_120 = local_138;
    fStack_134 = pfVar12[1];
    plVar9 = (longlong *)param_1[3];
    plVar6 = param_1;
    while (plVar8 = plVar9, plVar8 != (longlong *)0x0) {
      plVar6 = plVar8;
      plVar9 = (longlong *)plVar8[3];
    }
    fStack_11c = fStack_134;
    pfVar12 = (float *)FUN_1805200f0(local_70,plVar6,*(undefined8 *)pfVar12);
    local_138 = *pfVar12;
    fStack_134 = pfVar12[1];
    uVar17 = *(undefined8 *)pfVar12;
    if (plVar6 != param_1) {
      if ((longlong *)param_1[3] != plVar6) {
        puVar13 = (undefined8 *)
                  FUN_1805200a0(local_68,plVar6,(longlong *)param_1[3],*(undefined8 *)pfVar12);
        uVar17 = *puVar13;
      }
      FUN_1805200f0(&local_138,param_1,uVar17);
    }
    local_e8 = (float)local_118;
    local_e4 = local_118._4_4_;
    local_108 = (double)(float)local_118 + DAT_1824c4520;
    local_e0 = local_108._0_4_;
    local_130 = (longlong *)((double)local_118._4_4_ + DAT_1824c4520);
    local_dc = local_130._0_4_;
    local_d8 = param_5;
    local_d4 = param_6;
    local_d0 = param_7;
    local_cc = param_8;
    local_c8 = param_9;
    local_c4 = param_10;
    local_c0 = local_138;
    local_bc = fStack_134;
    local_98 = local_110;
    local_b8 = param_1;
    local_b0 = param_1;
    local_a8 = param_4;
    local_a0 = uVar5;
    local_90 = bVar18;
    local_8f = uVar7;
    (**(code **)(*param_1 + 0x30))(param_1,&local_e8);
    if (local_res8 == (undefined8 *)0x0) {
      lVar14 = 0;
    }
    else {
      lVar14 = local_res8[2];
    }
    if (lVar14 != 0) {
      if (DAT_182673700 == 0) {
        local_60 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_60);
      }
      lVar14 = DAT_182673700;
      FUN_18133bd90(DAT_182673700);
      iVar16 = *(int *)(lVar14 + 0x44);
      while( true ) {
        if (local_res8 == (undefined8 *)0x0) {
          lVar15 = 0;
        }
        else {
          lVar15 = local_res8[2];
        }
        if ((lVar15 == 0) || (iVar16 < 1)) break;
        iVar16 = iVar16 + -1;
        if ((*(int *)(lVar14 + 0x44) <= iVar16) &&
           (iVar16 = *(int *)(lVar14 + 0x44) + -1, iVar16 < 0)) break;
        plVar6 = *(longlong **)(*(longlong *)(lVar14 + 0x38) + (longlong)iVar16 * 8);
        (**(code **)(*plVar6 + 0x30))(plVar6,&local_e8);
      }
      FUN_18051e7b0(param_1,&local_res8,&LAB_180526148,&local_e8);
      if (local_res8 == (undefined8 *)0x0) {
        lVar15 = 0;
      }
      else {
        lVar15 = local_res8[2];
      }
      if ((lVar15 != 0) && (1 < local_90)) {
        (**(code **)(*param_1 + 0x38))(param_1,&local_e8);
        if (local_res8 == (undefined8 *)0x0) {
          lVar15 = 0;
        }
        else {
          lVar15 = local_res8[2];
        }
        if (lVar15 != 0) {
          iVar16 = *(int *)(lVar14 + 0x44);
          while( true ) {
            if (local_res8 == (undefined8 *)0x0) {
              lVar15 = 0;
            }
            else {
              lVar15 = local_res8[2];
            }
            if ((lVar15 == 0) || (iVar16 < 1)) break;
            iVar16 = iVar16 + -1;
            if ((*(int *)(lVar14 + 0x44) <= iVar16) &&
               (iVar16 = *(int *)(lVar14 + 0x44) + -1, iVar16 < 0)) break;
            plVar6 = *(longlong **)(*(longlong *)(lVar14 + 0x38) + (longlong)iVar16 * 8);
            (**(code **)(*plVar6 + 0x38))(plVar6,&local_e8);
          }
          FUN_18051e7b0(param_1,&local_res8,&LAB_180526798,&local_e8);
        }
      }
    }
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 1813409c0 size=1669 ############

void FUN_1813409c0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                  undefined4 param_9)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  float *pfVar6;
  longlong *plVar7;
  int iVar8;
  double dVar9;
  uint uVar10;
  undefined8 *local_168 [2];
  double local_158;
  undefined8 local_150;
  undefined8 local_148;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  uint local_138;
  uint local_134;
  longlong local_130;
  double local_128;
  double local_120;
  longlong local_118;
  double local_110;
  float local_108;
  float local_104;
  undefined4 local_100;
  undefined4 local_fc;
  uint local_f8;
  undefined4 local_f4;
  undefined4 local_f0;
  undefined4 local_ec;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined8 local_e0;
  longlong *local_d8;
  longlong *local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  longlong local_b8;
  char local_b0;
  undefined1 local_af;
  float local_a8;
  float local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  uint local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined8 local_80;
  longlong *local_78;
  longlong *local_70;
  undefined8 local_68;
  undefined8 local_60;
  longlong local_58;
  char local_50;
  undefined1 local_4f;
  undefined8 local_48;
  undefined8 local_38;
  longlong lStack_30;
  
  local_48 = 0xfffffffffffffffe;
  local_150 = param_3;
  if (DAT_182673700 == 0) {
    local_158 = (double)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_158);
  }
  lVar2 = DAT_182673700;
  FUN_1804de690(local_168,param_1);
  cVar3 = FUN_181343030(param_1);
  if (cVar3 != '\0') {
    *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 0x80;
    FUN_181341760();
    if (local_168[0] == (undefined8 *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = local_168[0][2];
    }
    if (lVar5 == 0) goto LAB_181341005;
    cVar3 = FUN_181343030(param_1);
    if (cVar3 != '\0') {
      local_130 = *param_2;
      local_50 = '\x01';
      if ((*(char *)(local_130 + 0xf8) == '\0') &&
         (*(longlong *)(local_130 + 0xf0) <=
          *(longlong *)(local_130 + 0x78) + (longlong)DAT_1824c4328)) {
        iVar8 = 1;
        pfVar6 = (float *)(local_130 + 0x94);
        local_50 = '\x01';
        while( true ) {
          iVar4 = iVar8;
          if (2 < iVar8) {
            iVar4 = 2;
          }
          if ((double)(iVar4 * 400) * DAT_1824c3e30 <=
              (double)(*(longlong *)(local_130 + 0x78) - *(longlong *)(pfVar6 + 1)) * DAT_1824c3e30)
          break;
          dVar9 = (double)(*(float *)(local_130 + 0x70) - pfVar6[-1]);
          uVar10 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
          iVar4 = 8;
          if (*(char *)(local_130 + 0x88) != '\0') {
            iVar4 = 0x19;
          }
          if (((((float)iVar4 <=
                 (float)(double)CONCAT44((uint)((ulonglong)dVar9 >> 0x20) & uVar10,
                                         SUB84(dVar9,0) & (uint)DAT_1824c4f10)) ||
               (dVar9 = (double)(*(float *)(local_130 + 0x74) - *pfVar6),
               (float)iVar4 <=
               (float)(double)CONCAT44((uint)((ulonglong)dVar9 >> 0x20) & uVar10,
                                       SUB84(dVar9,0) & (uint)DAT_1824c4f10))) ||
              (*(float *)(local_130 + 0x80) != pfVar6[3])) ||
             (*(float *)(local_130 + 0x84) != pfVar6[4])) break;
          local_50 = local_50 + '\x01';
          iVar8 = iVar8 + 1;
          pfVar6 = pfVar6 + 8;
          if (3 < iVar8) break;
        }
      }
      local_138 = DAT_182673aec & 0xffffff8f;
      local_98 = *(uint *)(local_130 + 0x28) | local_138;
      local_a8 = (float)local_150;
      local_a4 = local_150._4_4_;
      local_128 = (double)(float)local_150 + DAT_1824c4520;
      local_a0 = local_128._0_4_;
      local_120 = (double)local_150._4_4_ + DAT_1824c4520;
      local_9c = local_120._0_4_;
      local_94 = param_5;
      local_90 = param_6;
      local_8c = param_7;
      local_88 = param_8;
      local_84 = param_9;
      local_4f = 0;
      local_80 = param_3;
      local_78 = param_1;
      local_70 = param_1;
      local_68 = param_4;
      local_60 = param_4;
      local_58 = local_130;
      FUN_18133bd90(lVar2);
      iVar8 = *(int *)(lVar2 + 0x44);
      while( true ) {
        if (local_168[0] == (undefined8 *)0x0) {
          lVar5 = 0;
        }
        else {
          lVar5 = local_168[0][2];
        }
        if ((lVar5 == 0) || (iVar8 < 1)) break;
        iVar8 = iVar8 + -1;
        if ((*(int *)(lVar2 + 0x44) <= iVar8) && (iVar8 = *(int *)(lVar2 + 0x44) + -1, iVar8 < 0))
        break;
        plVar7 = *(longlong **)(*(longlong *)(lVar2 + 0x38) + (longlong)iVar8 * 8);
        (**(code **)(*plVar7 + 0x20))(plVar7,&local_a8);
      }
      goto LAB_181341005;
    }
  }
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) & 0x7f;
  plVar7 = param_1;
  do {
    if ((*(byte *)((longlong)plVar7 + 0xa9) >> 2 & 1) != 0) {
      FUN_181344f60(plVar7,1);
      if (local_168[0] == (undefined8 *)0x0) {
        lVar5 = 0;
      }
      else {
        lVar5 = local_168[0][2];
      }
      if (lVar5 == 0) goto LAB_181341005;
    }
    plVar7 = (longlong *)plVar7[3];
  } while (plVar7 != (longlong *)0x0);
  if ((*(byte *)(param_1 + 0x15) & 0x80) == 0) {
    FUN_18133ed60(param_1,0,1);
    if (local_168[0] == (undefined8 *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = local_168[0][2];
    }
    if (lVar5 == 0) goto LAB_181341005;
  }
  if ((*(byte *)((longlong)param_1 + 0xa9) & 8) != 0) {
    uStack_13c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_140 = (undefined4)param_1[5];
    lStack_30 = param_1[5];
    local_148 = 0;
    local_38 = 0;
    FUN_181342870(param_1,&local_38,1);
  }
  local_118 = *param_2;
  local_b0 = '\x01';
  if ((*(char *)(local_118 + 0xf8) == '\0') &&
     (*(longlong *)(local_118 + 0xf0) <= *(longlong *)(local_118 + 0x78) + (longlong)DAT_1824c4328))
  {
    iVar8 = 1;
    pfVar6 = (float *)(local_118 + 0x94);
    local_b0 = '\x01';
    while( true ) {
      iVar4 = iVar8;
      if (2 < iVar8) {
        iVar4 = 2;
      }
      if ((double)(iVar4 * 400) * DAT_1824c3e30 <=
          (double)(*(longlong *)(local_118 + 0x78) - *(longlong *)(pfVar6 + 1)) * DAT_1824c3e30)
      break;
      dVar9 = (double)(*(float *)(local_118 + 0x70) - pfVar6[-1]);
      uVar10 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
      iVar4 = 8;
      if (*(char *)(local_118 + 0x88) != '\0') {
        iVar4 = 0x19;
      }
      if (((((float)iVar4 <=
             (float)(double)CONCAT44((uint)((ulonglong)dVar9 >> 0x20) & uVar10,
                                     SUB84(dVar9,0) & (uint)DAT_1824c4f10)) ||
           (dVar9 = (double)(*(float *)(local_118 + 0x74) - *pfVar6),
           (float)iVar4 <=
           (float)(double)CONCAT44((uint)((ulonglong)dVar9 >> 0x20) & uVar10,
                                   SUB84(dVar9,0) & (uint)DAT_1824c4f10))) ||
          (*(float *)(local_118 + 0x80) != pfVar6[3])) ||
         (*(float *)(local_118 + 0x84) != pfVar6[4])) break;
      local_b0 = local_b0 + '\x01';
      iVar8 = iVar8 + 1;
      pfVar6 = pfVar6 + 8;
      if (3 < iVar8) break;
    }
  }
  local_134 = DAT_182673aec & 0xffffff8f;
  local_f8 = *(uint *)(local_118 + 0x28) | local_134;
  local_108 = (float)local_150;
  local_104 = local_150._4_4_;
  local_110 = (double)(float)local_150 + DAT_1824c4520;
  local_100 = local_110._0_4_;
  local_158 = (double)local_150._4_4_ + DAT_1824c4520;
  local_fc = local_158._0_4_;
  local_f4 = param_5;
  local_f0 = param_6;
  local_ec = param_7;
  local_e8 = param_8;
  local_e4 = param_9;
  local_af = 0;
  local_e0 = param_3;
  local_d8 = param_1;
  local_d0 = param_1;
  local_c8 = param_4;
  local_c0 = param_4;
  local_b8 = local_118;
  (**(code **)(*param_1 + 0x20))(param_1,&local_108);
  if (local_168[0] == (undefined8 *)0x0) {
    lVar5 = 0;
  }
  else {
    lVar5 = local_168[0][2];
  }
  if (lVar5 != 0) {
    FUN_18133bd90(lVar2);
    iVar8 = *(int *)(lVar2 + 0x44);
    while( true ) {
      if (local_168[0] == (undefined8 *)0x0) {
        lVar5 = 0;
      }
      else {
        lVar5 = local_168[0][2];
      }
      if ((lVar5 == 0) || (iVar8 < 1)) break;
      iVar8 = iVar8 + -1;
      if ((*(int *)(lVar2 + 0x44) <= iVar8) && (iVar8 = *(int *)(lVar2 + 0x44) + -1, iVar8 < 0))
      break;
      plVar7 = *(longlong **)(*(longlong *)(lVar2 + 0x38) + (longlong)iVar8 * 8);
      (**(code **)(*plVar7 + 0x20))(plVar7,&local_108);
    }
    FUN_18051e7b0(param_1,local_168,&LAB_1805260b0,&local_108);
  }
LAB_181341005:
  if (local_168[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_168[0] + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_168[0])(local_168[0],1);
    }
  }
  return;
}



############ FUN_ 181341050 size=593 ############

void FUN_181341050(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  char cVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  undefined8 *local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  double local_e0;
  undefined8 local_d8;
  undefined8 local_c8;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  uint local_b8;
  double local_b0;
  undefined8 local_a8;
  float local_98;
  float local_94;
  undefined4 local_90;
  undefined4 local_8c;
  uint local_88;
  undefined8 local_84;
  undefined8 local_7c;
  undefined4 local_74;
  undefined8 local_70;
  longlong *local_68;
  longlong *local_60;
  undefined8 local_58;
  undefined8 local_50;
  longlong local_48;
  undefined2 local_40;
  undefined8 local_38;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  local_38 = 0xfffffffffffffffe;
  local_e8 = param_3;
  cVar3 = FUN_181343030();
  if (cVar3 == '\0') {
    if ((*(byte *)((longlong)param_1 + 0xa9) & 8) != 0) {
      uStack_bc = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_c0 = (undefined4)param_1[5];
      local_c8 = 0;
      local_28 = 0;
      uStack_24 = 0;
      uStack_20 = uStack_c0;
      uStack_1c = uStack_bc;
      FUN_181342870(param_1,&local_28,1);
    }
    FUN_1804de690(&local_f8,param_1);
    local_48 = *param_2;
    local_b8 = DAT_182673aec & 0xffffff8f;
    local_88 = *(uint *)(local_48 + 0x28) | local_b8;
    local_98 = (float)local_e8;
    local_94 = local_e8._4_4_;
    local_b0 = (double)(float)local_e8 + DAT_1824c4520;
    local_90 = local_b0._0_4_;
    local_e0 = (double)local_e8._4_4_ + DAT_1824c4520;
    local_8c = local_e0._0_4_;
    local_84 = 0;
    local_7c = 0;
    local_74 = 0;
    local_40 = 0;
    local_70 = param_3;
    local_68 = param_1;
    local_60 = param_1;
    local_58 = param_4;
    local_50 = param_4;
    (**(code **)(*param_1 + 0x18))(param_1,&local_98);
    if (local_f8 == (undefined8 *)0x0) {
      lVar4 = 0;
    }
    else {
      lVar4 = local_f8[2];
    }
    if (lVar4 != 0) {
      if (DAT_182673700 == 0) {
        local_d8 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_d8);
      }
      lVar4 = DAT_182673700;
      FUN_18133bd90(DAT_182673700);
      iVar6 = *(int *)(lVar4 + 0x44);
      while( true ) {
        if (local_f8 == (undefined8 *)0x0) {
          lVar5 = 0;
        }
        else {
          lVar5 = local_f8[2];
        }
        if ((lVar5 == 0) || (iVar6 < 1)) break;
        iVar6 = iVar6 + -1;
        if ((*(int *)(lVar4 + 0x44) <= iVar6) && (iVar6 = *(int *)(lVar4 + 0x44) + -1, iVar6 < 0))
        break;
        plVar2 = *(longlong **)(*(longlong *)(lVar4 + 0x38) + (longlong)iVar6 * 8);
        (**(code **)(*plVar2 + 0x18))(plVar2,&local_98);
      }
      FUN_18051e7b0(param_1,&local_f8,FUN_1805266f8,&local_98);
    }
    if (local_f8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_f8 + 1);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)*local_f8)(local_f8,1);
      }
    }
  }
  else {
    local_a8 = 0;
    local_f0 = 0;
    FUN_1804e6d20(*param_2,&local_f0,0);
  }
  return;
}



############ FUN_ 1804e65c0 size=396 ############

void FUN_1804e65c0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  longlong lVar7;
  longlong *local_res8;
  longlong local_58;
  undefined8 *local_50;
  undefined8 local_48;
  undefined1 local_40 [8];
  undefined8 local_38;
  undefined1 local_30 [24];
  
  local_48 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res8 = (longlong *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8);
  }
  *(int *)(DAT_182673700 + 0x8c) = *(int *)(DAT_182673700 + 0x8c) + 1;
  local_res8 = (longlong *)0x0;
  lVar7 = 0;
  lVar4 = lVar7;
  if (*(longlong *)(param_1 + 0x50) != 0) {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x50) + 0x10);
  }
  if ((lVar4 == 0) || (*(char *)(param_5 + 10) == '\0')) {
    uVar6 = FUN_1804e6500(param_1,param_2,param_3,param_4,&local_res8);
    puVar5 = (undefined8 *)FUN_1804de690(&local_50,uVar6);
    local_38 = *(undefined8 *)(param_1 + 0x50);
    *(undefined8 *)(param_1 + 0x50) = *puVar5;
    *puVar5 = local_38;
    if (local_50 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_50 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_50)(local_50,1);
      }
    }
  }
  else {
    puVar5 = (undefined8 *)(**(code **)(*param_2 + 0x48))(param_2,local_40,param_3);
    local_res8 = (longlong *)*puVar5;
  }
  if (*(longlong *)(param_1 + 0x50) != 0) {
    lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x50) + 0x10);
  }
  if (lVar7 != 0) {
    plVar3 = local_res8;
    local_res8 = &local_58;
    local_58 = param_1;
    puVar5 = (undefined8 *)FUN_1804e5790(local_30,lVar7,plVar3);
    FUN_18133fa80(lVar7,&local_58,*puVar5,param_4,param_5);
  }
  return;
}



############ FUN_ 18133fa80 size=604 ############

void FUN_18133fa80(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  char cVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong lVar7;
  int iVar8;
  double dVar9;
  undefined8 *local_res10 [2];
  undefined8 local_res20;
  undefined4 local_c8;
  float local_b8;
  float local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  uint local_a8;
  undefined8 local_a4;
  undefined8 local_9c;
  undefined4 local_94;
  undefined8 local_90;
  longlong *local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong local_68;
  undefined2 local_60;
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  local_res20 = (double)param_3;
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  lVar3 = DAT_182673700;
  FUN_1804de690(local_res10,param_1);
  local_68 = *param_2;
  local_a8 = *(uint *)(local_68 + 0x28) | DAT_182673aec & 0xffffff8f;
  local_b8 = (float)local_res20;
  local_b4 = local_res20._4_4_;
  dVar9 = (double)(float)local_res20;
  local_res20._0_4_ = SUB84(dVar9 + DAT_1824c4520,0);
  local_b0 = (float)local_res20;
  local_c8 = SUB84((double)local_res20._4_4_ + DAT_1824c4520,0);
  local_ac = local_c8;
  local_a4 = 0;
  local_9c = 0;
  local_94 = 0;
  local_60 = 0;
  local_res20 = dVar9 + DAT_1824c4520;
  local_90 = param_3;
  local_88 = param_1;
  local_80 = param_1;
  local_78 = param_4;
  local_70 = param_4;
  cVar4 = FUN_181343030(param_1);
  if (cVar4 == '\0') {
    (**(code **)(*param_1 + 0x40))(param_1,&local_b8,param_5);
    lVar6 = 0;
    lVar7 = lVar6;
    if (local_res10[0] != (undefined8 *)0x0) {
      lVar7 = local_res10[0][2];
    }
    if (lVar7 != 0) {
      iVar8 = *(int *)(lVar3 + 0x44);
      while( true ) {
        lVar7 = lVar6;
        if (local_res10[0] != (undefined8 *)0x0) {
          lVar7 = local_res10[0][2];
        }
        if ((lVar7 == 0) || (iVar8 < 1)) break;
        iVar8 = iVar8 + -1;
        if ((*(int *)(lVar3 + 0x44) <= iVar8) && (iVar8 = *(int *)(lVar3 + 0x44) + -1, iVar8 < 0))
        break;
        plVar2 = *(longlong **)(*(longlong *)(lVar3 + 0x38) + (longlong)iVar8 * 8);
        (**(code **)(*plVar2 + 0x40))(plVar2,&local_b8,param_5);
      }
      if (local_res10[0] != (undefined8 *)0x0) {
        lVar6 = local_res10[0][2];
      }
      if (lVar6 != 0) {
        FUN_18051e930(param_1,local_res10);
      }
    }
  }
  else {
    iVar8 = *(int *)(lVar3 + 0x44);
    while( true ) {
      lVar6 = 0;
      if (local_res10[0] != (undefined8 *)0x0) {
        lVar6 = local_res10[0][2];
      }
      if ((lVar6 == 0) || (iVar8 < 1)) break;
      iVar8 = iVar8 + -1;
      if ((*(int *)(lVar3 + 0x44) <= iVar8) && (iVar8 = *(int *)(lVar3 + 0x44) + -1, iVar8 < 0))
      break;
      plVar2 = *(longlong **)(*(longlong *)(lVar3 + 0x38) + (longlong)iVar8 * 8);
      (**(code **)(*plVar2 + 0x40))(plVar2,&local_b8,param_5);
    }
  }
  if (local_res10[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10[0] + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_res10[0])(local_res10[0],1);
    }
  }
  return;
}



############ FUN_ 1804e7240 size=506 ############

uint FUN_1804e7240(longlong param_1)

{
  uint *puVar1;
  longlong *plVar2;
  longlong lVar3;
  ushort uVar4;
  int iVar5;
  undefined8 uVar6;
  tagPOINT *ptVar7;
  uint uVar8;
  tagPOINT tVar9;
  longlong *plVar10;
  bool bVar11;
  char cVar12;
  bool bVar13;
  float fVar14;
  float fVar15;
  tagPOINT local_68;
  undefined8 local_60;
  undefined1 local_58 [8];
  undefined8 local_50;
  
  local_60 = 0xfffffffffffffffe;
  bVar13 = false;
  plVar10 = *(longlong **)(param_1 + 0x18);
  plVar2 = plVar10 + *(int *)(param_1 + 0x24);
  if (plVar10 != plVar2) {
    do {
      lVar3 = *plVar10;
      bVar11 = (*(byte *)(lVar3 + 0x28) & 0x70) != 0;
      uVar8 = (uint)bVar11;
      if (bVar11) {
        if (DAT_182673ba8 != 0) {
          FUN_18050fa30();
          uVar4 = GetAsyncKeyState(1);
          uVar8 = 0;
          if ((uVar4 & 0x8000) != 0) {
            uVar8 = 0x10;
          }
          uVar4 = GetAsyncKeyState(2);
          if ((uVar4 & 0x8000) != 0) {
            uVar8 = uVar8 | 0x20;
          }
          uVar4 = GetAsyncKeyState(4);
          if ((uVar4 & 0x8000) != 0) {
            uVar8 = uVar8 | 0x40;
          }
          DAT_182673aec = DAT_182673aec & 0xffffff8f | uVar8;
        }
        bVar11 = (DAT_182673aec & 0x70) != 0;
        uVar8 = (uint)bVar11;
        if (bVar11) {
          if (*(int *)(lVar3 + 0x14) == 1) {
            fVar14 = *(float *)(lVar3 + 0x18);
            fVar15 = *(float *)(lVar3 + 0x1c);
          }
          else {
            GetCursorPos(&local_68);
            tVar9 = local_68;
            FUN_1812c75b0();
            if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
              cVar12 = FUN_1812c7510();
            }
            else {
              uVar6 = (*DAT_182678f18)();
              iVar5 = (*DAT_182678ec8)(uVar6);
              cVar12 = iVar5 == 2;
            }
            if (cVar12 != '\0') {
              if (DAT_182673700 == 0) {
                uVar6 = FUN_1811316e0(0x130);
                DAT_182673700 = FUN_18133c6c0(uVar6);
              }
              ptVar7 = (tagPOINT *)
                       FUN_18051ece0(*(undefined8 *)(DAT_182673700 + 0x78),local_58,tVar9,0);
              tVar9 = *ptVar7;
            }
            fVar15 = (float)tVar9.y;
            fVar14 = (float)tVar9.x;
          }
          local_50 = CONCAT44(fVar15 + *(float *)(lVar3 + 0x24),fVar14 + *(float *)(lVar3 + 0x20));
          *(undefined8 *)(lVar3 + 0x18) = local_50;
          puVar1 = (uint *)(*(longlong *)(lVar3 + 8) + 0x18);
          LOCK();
          uVar8 = *puVar1;
          bVar13 = uVar8 == 0;
          if (bVar13) {
            *puVar1 = 1;
            uVar8 = 0;
          }
          UNLOCK();
          if ((bVar13) && (uVar8 = FUN_1812a6720(*(undefined8 *)(lVar3 + 8)), (char)uVar8 == '\0'))
          {
            LOCK();
            puVar1 = (uint *)(*(longlong *)(lVar3 + 8) + 0x18);
            uVar8 = *puVar1;
            *puVar1 = 0;
            UNLOCK();
          }
          bVar13 = true;
        }
      }
      plVar10 = plVar10 + 1;
    } while (plVar10 != plVar2);
    if (bVar13) {
      return uVar8;
    }
  }
  uVar8 = FUN_1812a7720(param_1);
  return uVar8;
}



############ FUN_ 1804e8770 size=860 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804e8770(longlong param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong *plVar6;
  longlong *plVar7;
  char cVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong lVar12;
  longlong lVar13;
  uint uVar14;
  bool bVar15;
  undefined1 auStack_e8 [32];
  undefined4 local_c8;
  undefined8 *local_b8;
  longlong local_b0;
  undefined8 *local_a8;
  undefined8 local_a0;
  undefined8 *local_98;
  undefined8 local_90;
  undefined1 local_88 [8];
  undefined1 local_80 [8];
  undefined1 local_78 [8];
  undefined1 local_70 [8];
  undefined1 local_68 [8];
  longlong *local_60;
  undefined1 local_58 [8];
  undefined8 *local_50;
  undefined8 local_48;
  ulonglong local_40;
  
  local_90 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_e8;
  lVar3 = *(longlong *)(param_1 + 0x18);
  local_b8 = param_4;
  local_b0 = param_1;
  local_98 = param_3;
  if (lVar3 == 0) {
    if (DAT_182673700 == 0) {
      local_a0 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_a0);
    }
    lVar3 = DAT_182673700;
    uVar14 = *(int *)(DAT_182673700 + 100) - 1;
    lVar13 = (longlong)(int)uVar14;
    bVar15 = (int)uVar14 < 0;
    while (!bVar15) {
      if (uVar14 < *(uint *)(lVar3 + 100)) {
        lVar12 = *(longlong *)(*(longlong *)(lVar3 + 0x58) + lVar13 * 8);
        puVar9 = param_2;
        if (lVar12 != 0) {
          lVar4 = lVar12;
          for (lVar5 = *(longlong *)(lVar12 + 0x18); lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)
              ) {
            lVar4 = lVar5;
          }
          puVar9 = (undefined8 *)FUN_18051e060(local_88,lVar4,param_2);
          puVar9 = (undefined8 *)*puVar9;
          if (lVar4 != lVar12) {
            if (*(longlong *)(lVar12 + 0x18) != lVar4) {
              puVar9 = (undefined8 *)
                       FUN_180520050(local_80,lVar4,*(longlong *)(lVar12 + 0x18),puVar9);
              puVar9 = (undefined8 *)*puVar9;
            }
            FUN_18051e060(&local_a8,lVar12,puVar9);
            puVar9 = local_a8;
          }
        }
      }
      else {
        lVar12 = 0;
        puVar9 = param_2;
      }
      local_a8 = puVar9;
      puVar9 = local_a8;
      plVar10 = (longlong *)FUN_181343e50(lVar12,local_a8);
      if (plVar10 != (longlong *)0x0) {
        FUN_18051db10(&local_a0,plVar10,lVar12,puVar9);
        cVar8 = (**(code **)(*plVar10 + 0x98))(plVar10,local_a0 & 0xffffffff,local_a0._4_4_);
        param_4 = local_b8;
        param_3 = local_98;
        param_1 = local_b0;
        if (cVar8 != '\0') goto LAB_1804e8954;
      }
      uVar14 = uVar14 - 1;
      lVar13 = lVar13 + -1;
      bVar15 = lVar13 < 0;
    }
    plVar10 = (longlong *)0x0;
    param_4 = local_b8;
    param_3 = local_98;
    param_1 = local_b0;
  }
  else {
    lVar13 = lVar3;
    for (lVar12 = *(longlong *)(lVar3 + 0x18); lVar12 != 0; lVar12 = *(longlong *)(lVar12 + 0x18)) {
      lVar13 = lVar12;
    }
    plVar10 = (longlong *)FUN_18051e060(&local_98,lVar13,param_2);
    lVar12 = *plVar10;
    if (lVar13 != lVar3) {
      if (*(longlong *)(lVar3 + 0x18) != lVar13) {
        plVar10 = (longlong *)FUN_180520050(local_78,lVar13);
        lVar12 = *plVar10;
      }
      FUN_18051e060(&local_b0,lVar3,lVar12);
      lVar12 = local_b0;
    }
    local_b0 = lVar12;
    plVar10 = (longlong *)FUN_181343e50(lVar3,local_b0);
  }
LAB_1804e8954:
  local_60 = *(longlong **)(param_1 + 200);
  (**(code **)(*local_60 + 0xb8))(local_60,local_58,param_1 + 0xd0);
  local_50 = *(undefined8 **)(param_1 + 0xd8);
  if (local_50 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_50 + 1) = *(int *)(local_50 + 1) + 1;
    UNLOCK();
  }
  local_48 = *(undefined8 *)(param_1 + 0xe0);
  do {
    if (plVar10 == (longlong *)0x0) {
      *param_4 = 0;
LAB_1804e8a00:
      if (local_50 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_50 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_50)(local_50,1);
        }
      }
      (**(code **)(*local_60 + 0xb0))(local_60,local_58);
    }
    local_c8 = 0;
    plVar11 = (longlong *)
              __RTDynamicCast(plVar10,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::DragAndDropTarget::RTTI_Type_Descriptor);
    if ((plVar11 != (longlong *)0x0) &&
       (cVar8 = (**(code **)(*plVar11 + 8))(plVar11), cVar8 != '\0')) {
      puVar9 = param_2;
      if (plVar10 != (longlong *)0x0) {
        plVar7 = (longlong *)plVar10[3];
        plVar11 = plVar10;
        while (plVar6 = plVar7, plVar6 != (longlong *)0x0) {
          plVar11 = plVar6;
          plVar7 = (longlong *)plVar6[3];
        }
        puVar9 = (undefined8 *)FUN_18051e060(local_70,plVar11,param_2);
        puVar9 = (undefined8 *)*puVar9;
        if (plVar11 != plVar10) {
          if ((longlong *)plVar10[3] != plVar11) {
            puVar9 = (undefined8 *)FUN_180520050(local_68,plVar11);
            puVar9 = (undefined8 *)*puVar9;
          }
          FUN_18051e060(&local_b8,plVar10,puVar9);
          puVar9 = local_b8;
        }
      }
      local_b8 = puVar9;
      *param_3 = local_b8;
      *param_4 = plVar10;
      goto LAB_1804e8a00;
    }
    plVar10 = (longlong *)plVar10[3];
  } while( true );
}



############ FUN_ 1804e8d50 size=552 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804e8d50(longlong *param_1,char param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  longlong *plVar5;
  char cVar6;
  undefined8 *puVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 local_res8;
  int iStackX_1c;
  undefined8 uVar10;
  undefined8 local_30;
  longlong lStack_28;
  
  uVar10 = 0xfffffffffffffffe;
  (**(code **)(*param_1 + 0x58))(param_1,1);
  if (DAT_182673700 == 0) {
    local_res8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8);
  }
  lVar1 = DAT_182673700 + 200;
  if (((param_2 != '\0') && (lVar2 = param_1[0x1b], lVar2 != 0)) &&
     (*(longlong *)(lVar2 + 0x10) != 0)) {
    lVar9 = 0;
    lVar8 = lVar9;
    if (lVar2 != 0) {
      lVar8 = *(longlong *)(lVar2 + 0x10);
    }
    local_res8 = CONCAT44(*(int *)(lVar8 + 0x2c) / 2,*(int *)(lVar8 + 0x28) / 2);
    uVar3 = local_res8;
    if (param_1[0x1b] != 0) {
      lVar9 = *(longlong *)(param_1[0x1b] + 0x10);
    }
    for (; lVar9 != 0; lVar9 = *(longlong *)(lVar9 + 0x18)) {
      puVar7 = (undefined8 *)FUN_18051e290(&local_res8,lVar9,uVar3);
      uVar3 = *puVar7;
    }
    local_res8 = CONCAT44(*(int *)((longlong)param_1 + 0x2c) / 2,(int)param_1[5] / 2);
    uVar4 = local_res8;
    for (plVar5 = param_1; plVar5 != (longlong *)0x0; plVar5 = (longlong *)plVar5[3]) {
      puVar7 = (undefined8 *)FUN_18051e290(&local_res8,plVar5,uVar4);
      uVar4 = *puVar7;
    }
    iStackX_1c = (int)((ulonglong)uVar3 >> 0x20);
    lStack_28 = param_1[5];
    local_30 = CONCAT44(*(int *)((longlong)param_1 + 0x24) +
                        (iStackX_1c - (int)((ulonglong)uVar4 >> 0x20)),
                        (int)param_1[4] + ((int)uVar3 - (int)uVar4));
    FUN_181323e20(lVar1,param_1,&local_30,0,0x78,1,_DAT_1824c4da0,_UNK_1824c4da8,uVar10);
    return;
  }
  cVar6 = FUN_181345240(param_1);
  if (cVar6 != '\0') {
    local_30 = param_1[4];
    lStack_28 = param_1[5];
    FUN_181323e20(lVar1,param_1,&local_30,0,0x78,1,_DAT_1824c4da0,_UNK_1824c4da8,uVar10);
  }
                    /* WARNING: Could not recover jumptable at 0x0001804e8f74. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x58))(param_1,0);
  return;
}



############ FUN_ 181323e20 size=447 ############

void FUN_181323e20(longlong param_1,longlong param_2,undefined8 param_3,undefined4 param_4,
                  undefined4 param_5,undefined1 param_6,undefined8 param_7,undefined8 param_8)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  DWORD DVar4;
  longlong lVar5;
  longlong lVar6;
  int iVar7;
  bool bVar8;
  
  if (param_2 != 0) {
    iVar7 = *(int *)(param_1 + 0x5c) + -1;
    lVar6 = (longlong)iVar7;
    if (-1 < iVar7) {
      do {
        lVar2 = **(longlong **)(*(longlong *)(param_1 + 0x50) + lVar6 * 8);
        lVar5 = 0;
        if (lVar2 != 0) {
          lVar5 = *(longlong *)(lVar2 + 0x10);
        }
        if (param_2 == lVar5) {
          lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x50) + (longlong)iVar7 * 8);
          if (lVar6 != 0) goto LAB_181323f37;
          break;
        }
        iVar7 = iVar7 + -1;
        lVar6 = lVar6 + -1;
      } while (-1 < lVar6);
    }
    lVar6 = FUN_1811316e0(0x88);
    FUN_1804de690(lVar6,param_2);
    *(undefined8 *)(lVar6 + 8) = 0;
    *(undefined8 *)(lVar6 + 0x10) = 0;
    *(undefined8 *)(lVar6 + 0x18) = 0;
    *(undefined8 *)(lVar6 + 0x80) = 0;
    iVar7 = *(int *)(param_1 + 0x5c) + 1;
    if (*(int *)(param_1 + 0x58) < iVar7) {
      FUN_18047cb30(param_1 + 0x50,*(int *)(param_1 + 0x5c) + 9 + iVar7 / 2 & 0xfffffff8);
    }
    iVar7 = *(int *)(param_1 + 0x5c);
    *(int *)(param_1 + 0x5c) = iVar7 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x50) + (longlong)iVar7 * 8) = lVar6;
    if (*(char *)(param_1 + 0x30) != '\0') {
      piVar1 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
      LOCK();
      bVar8 = *piVar1 == 0;
      if (bVar8) {
        *piVar1 = 1;
      }
      UNLOCK();
      if ((bVar8) && (cVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar3 == '\0')) {
        LOCK();
        *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
        UNLOCK();
      }
    }
LAB_181323f37:
    FUN_1804f6770(lVar6,param_3,param_4,param_5,param_6,param_7,param_8);
    if (*(int *)(param_1 + 0x48) < 1) {
      DVar4 = timeGetTime();
      if (DVar4 < DAT_1826737fc) {
        if (DVar4 < DAT_1826737fc - 1000) {
          LOCK();
          UNLOCK();
          DAT_1826737fc = DVar4;
        }
      }
      else {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DVar4;
      }
      *(DWORD *)(param_1 + 0x60) = DVar4;
      FUN_1812a77d0(param_1 + 0x38,0x14);
    }
  }
  return;
}



############ FUN_ 1804f6770 size=686 ############

void FUN_1804f6770(longlong *param_1,longlong *param_2,float param_3,int param_4,char param_5,
                  undefined8 *param_6,double param_7)

{
  int *piVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong lVar4;
  float fVar5;
  undefined1 uVar6;
  int iVar7;
  longlong *plVar8;
  undefined8 uVar9;
  double *pdVar10;
  longlong *plVar11;
  double dVar12;
  double dVar13;
  
  plVar11 = (longlong *)0x0;
  *(undefined4 *)(param_1 + 5) = 0;
  iVar7 = 1;
  if (1 < param_4) {
    iVar7 = param_4;
  }
  *(int *)((longlong)param_1 + 0x2c) = iVar7;
  param_1[9] = 0;
  lVar2 = param_2[1];
  param_1[2] = *param_2;
  param_1[3] = lVar2;
  param_1[4] = (longlong)(double)param_3;
  lVar2 = *param_1;
  plVar8 = plVar11;
  if (lVar2 != 0) {
    plVar8 = *(longlong **)(lVar2 + 0x10);
  }
  lVar4 = plVar8[4];
  if (((((int)*param_2 == (int)lVar4) &&
       (*(int *)((longlong)param_2 + 4) == *(int *)((longlong)plVar8 + 0x24))) &&
      ((int)param_2[1] == (int)plVar8[5])) &&
     (*(int *)((longlong)param_2 + 0xc) == *(int *)((longlong)plVar8 + 0x2c))) {
    uVar6 = 0;
  }
  else {
    uVar6 = 1;
  }
  *(undefined1 *)(param_1 + 0xf) = uVar6;
  fVar5 = DAT_1824c4548;
  plVar8 = plVar11;
  if (lVar2 != 0) {
    plVar8 = *(longlong **)(lVar2 + 0x10);
  }
  *(bool *)((longlong)param_1 + 0x79) =
       param_3 != (float)(int)(0xff - (uint)*(byte *)((longlong)plVar8 + 0xac)) / DAT_1824c4548;
  lVar2 = *param_1;
  plVar8 = plVar11;
  if (lVar2 != 0) {
    plVar8 = *(longlong **)(lVar2 + 0x10);
  }
  param_1[10] = (longlong)(double)(int)plVar8[4];
  plVar8 = plVar11;
  if (lVar2 != 0) {
    plVar8 = *(longlong **)(lVar2 + 0x10);
  }
  param_1[0xb] = (longlong)(double)*(int *)((longlong)plVar8 + 0x24);
  plVar8 = plVar11;
  if (lVar2 != 0) {
    plVar8 = *(longlong **)(lVar2 + 0x10);
  }
  param_1[0xc] = (longlong)(double)((int)plVar8[5] + (int)plVar8[4]);
  plVar8 = plVar11;
  if (*param_1 != 0) {
    plVar8 = *(longlong **)(*param_1 + 0x10);
  }
  param_1[0xd] = (longlong)
                 (double)(*(int *)((longlong)plVar8 + 0x2c) + *(int *)((longlong)plVar8 + 0x24));
  plVar8 = plVar11;
  if (*param_1 != 0) {
    plVar8 = *(longlong **)(*param_1 + 0x10);
  }
  param_1[0xe] = (longlong)
                 (double)((float)(int)(0xff - (uint)*(byte *)((longlong)plVar8 + 0xac)) / fVar5);
  dVar12 = DAT_1824c4228 / ((double)param_6 + param_7 + DAT_1824c41e8);
  dVar13 = dVar12 * (double)param_6;
  if (dVar12 * (double)param_6 <= 0.0) {
    dVar13 = 0.0;
  }
  param_1[6] = (longlong)dVar13;
  param_1[7] = (longlong)dVar12;
  dVar13 = dVar12 * param_7;
  if (dVar12 * param_7 <= 0.0) {
    dVar13 = 0.0;
  }
  param_1[8] = (longlong)dVar13;
  if ((param_1[1] != 0) &&
     (puVar3 = *(undefined8 **)(param_1[1] + 0x10), puVar3 != (undefined8 *)0x0)) {
    (**(code **)*puVar3)(puVar3,1,param_3,param_4,0xfffffffffffffffe,(int)lVar4);
  }
  if (param_5 != '\0') {
    param_6 = (undefined8 *)FUN_1811316e0(0xb8);
    plVar8 = plVar11;
    if (*param_1 != 0) {
      plVar8 = *(longlong **)(*param_1 + 0x10);
    }
    uVar9 = FUN_1804f6ea0(param_6,plVar8);
    pdVar10 = (double *)FUN_1804de690(&param_6,uVar9);
    param_7 = (double)param_1[1];
    param_1[1] = (longlong)*pdVar10;
    *pdVar10 = param_7;
    if (param_6 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(param_6 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*param_6)(param_6,1);
      }
    }
  }
  if (*param_1 != 0) {
    plVar11 = *(longlong **)(*param_1 + 0x10);
  }
                    /* WARNING: Could not recover jumptable at 0x0001804f6a1a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar11 + 0x58))(plVar11,param_5 == '\0');
  return;
}



############ FUN_ 1804f6ea0 size=869 ############

/* WARNING: Removing unreachable block (ram,0x0001804f707e) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

longlong * FUN_1804f6ea0(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  double dVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  byte bVar6;
  longlong lVar7;
  undefined8 *puVar8;
  longlong lVar9;
  longlong *plVar10;
  float fVar11;
  undefined8 *local_res10;
  longlong local_res18;
  undefined8 local_e8;
  undefined8 uStack_e0;
  ulonglong local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  longlong lStack_c0;
  undefined8 local_b8;
  longlong lStack_b0;
  undefined8 local_a8;
  longlong lStack_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined8 local_60;
  undefined1 local_58 [16];
  undefined1 local_48 [32];
  
  local_d0 = 0xfffffffffffffffe;
  param_1[1] = (longlong)&DAT_1821dbf98;
  param_1[2] = (longlong)&DAT_1821dbf98;
  lVar9 = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = (longlong)juce::ComponentAnimator::AnimationTask::ProxyComponent::vftable;
  param_1[0x16] = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  local_58 = *(undefined1 (*) [16])(param_2 + 0x20);
  FUN_18134bfe0(param_1,local_58._0_8_,local_58._0_8_ >> 0x20,local_58._8_4_,local_58._12_4_);
  puVar8 = *(undefined8 **)(param_2 + 0x38);
  if (puVar8 == (undefined8 *)0x0) {
    local_e8 = _DAT_1824c4780;
    uStack_e0 = _UNK_1824c4788;
    local_d8 = (ulonglong)DAT_1824c3ea4;
    puVar8 = &local_e8;
  }
  else {
    local_88 = *puVar8;
    uStack_80 = puVar8[1];
    local_78 = puVar8[2];
    puVar8 = &local_88;
  }
  local_70 = *puVar8;
  uStack_68 = puVar8[1];
  local_60 = puVar8[2];
  FUN_18134af50(param_1,&local_70);
  FUN_181342bf0(param_1,(float)(int)(0xff - (uint)*(byte *)(param_2 + 0xac)) / DAT_1824c4548);
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  lVar7 = *(longlong *)(param_2 + 0x18);
  if (lVar7 == 0) {
    bVar6 = *(byte *)(param_2 + 0xa8) & 1;
    if (((bVar6 != 0) && (bVar6 != 0)) && (lVar7 = FUN_1812d2bd0(param_2), lVar7 != 0)) {
      if ((*(byte *)(param_2 + 0xa8) & 1) == 0) {
        if (*(longlong *)(param_2 + 0x18) != 0) {
          lVar9 = FUN_18134c2e0();
        }
      }
      else {
        lVar9 = FUN_1812d2bd0(param_2);
      }
      .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                (param_1,*(uint *)(lVar9 + 0x10) | 0x400,0);
    }
  }
  else {
    (**(code **)(*param_1 + 0x58))(param_1,1);
    FUN_181343cc0(lVar7,param_1,0xffffffff);
  }
  uVar5 = 0;
  uVar4 = local_c8;
  lVar9 = lStack_c0;
  lStack_c0 = param_1[5];
  for (plVar10 = param_1; local_c8 = uVar5, plVar10 != (longlong *)0x0;
      plVar10 = (longlong *)plVar10[3]) {
    puVar8 = (undefined8 *)FUN_18051e4b0(local_48,plVar10,&local_c8);
    uVar5 = *puVar8;
    uVar4 = local_c8;
    lVar9 = lStack_c0;
    lStack_c0 = puVar8[1];
  }
  local_b8 = local_c8;
  lStack_b0 = lStack_c0;
  local_a8 = local_c8;
  lStack_a0 = lStack_c0;
  if (DAT_182673700 == 0) {
    local_c8 = uVar4;
    lStack_c0 = lVar9;
    local_a8 = local_b8;
    lStack_a0 = lStack_b0;
    local_res10 = (undefined8 *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res10);
    uVar4 = local_c8;
    lVar9 = lStack_c0;
  }
  lStack_c0 = lVar9;
  local_c8 = uVar4;
  lVar9 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),&local_a8,0);
  dVar3 = *(double *)(lVar9 + 0x30);
  fVar11 = (float)FUN_181344210(param_2);
  uStack_90 = *(undefined8 *)(param_2 + 0x28);
  local_98 = 0;
  plVar10 = (longlong *)FUN_181341cd0(param_2,&local_res10,&local_98,0,fVar11 * (float)dVar3);
  local_res18 = param_1[0x16];
  param_1[0x16] = *plVar10;
  *plVar10 = local_res18;
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,1);
  FUN_181344e50(param_1,param_2);
  return param_1;
}



############ FUN_ 181344210 size=696 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

float FUN_181344210(longlong *param_1)

{
  undefined8 *puVar1;
  float fVar2;
  float *pfVar3;
  undefined8 uVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 uStack_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 uStack_b8;
  undefined8 local_b0;
  undefined8 local_98;
  
  local_c8 = 0xfffffffffffffffe;
  local_e0 = _DAT_1824c4780;
  uStack_d8 = _UNK_1824c4788;
  fVar9 = 0.0;
  fVar10 = DAT_1824c3ea4;
  if (param_1 != (longlong *)0x0) {
    while( true ) {
      puVar1 = (undefined8 *)param_1[7];
      if (puVar1 == (undefined8 *)0x0) {
        local_f8 = _DAT_1824c4780;
        uStack_f0 = _UNK_1824c4788;
        local_e8 = 0x3f800000;
        pfVar3 = (float *)&local_f8;
      }
      else {
        local_c0 = *puVar1;
        uStack_b8 = puVar1[1];
        local_b0 = puVar1[2];
        pfVar3 = (float *)&local_c0;
      }
      fVar5 = *pfVar3;
      fVar2 = pfVar3[1];
      fVar6 = pfVar3[3];
      uVar4 = *(undefined8 *)(pfVar3 + 4);
      fVar7 = (float)uVar4;
      local_98._4_4_ = (float)((ulonglong)uVar4 >> 0x20);
      fVar8 = fVar7 * fVar9 + fVar6 * (float)uStack_d8 + local_98._4_4_;
      fVar11 = fVar7 * fVar10 + fVar6 * local_e0._4_4_;
      fVar6 = fVar7 * uStack_d8._4_4_ + fVar6 * (float)local_e0;
      fVar7 = fVar2 * fVar9 + fVar5 * (float)uStack_d8 + pfVar3[2];
      fVar10 = fVar2 * fVar10 + fVar5 * local_e0._4_4_;
      fVar9 = fVar2 * uStack_d8._4_4_ + fVar5 * (float)local_e0;
      local_f8 = CONCAT44(fVar10,fVar9);
      uStack_f0 = CONCAT44(fVar6,fVar7);
      local_e0 = CONCAT44(fVar10,fVar9);
      uStack_d8 = CONCAT44(fVar6,fVar7);
      local_d0 = CONCAT44(fVar8,fVar11);
      local_98 = uVar4;
      if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
        fVar5 = (float)(**(code **)(*param_1 + 0x80))(param_1);
        local_f8 = CONCAT44(fVar10 * fVar5,fVar9 * fVar5);
        uStack_f0 = CONCAT44(fVar6 * fVar5,fVar7 * fVar5);
        local_e0 = CONCAT44(fVar10 * fVar5,fVar9 * fVar5);
        uStack_d8 = CONCAT44(fVar6 * fVar5,fVar7 * fVar5);
        local_d0 = CONCAT44(fVar8 * fVar5,fVar11 * fVar5);
      }
      param_1 = (longlong *)param_1[3];
      fVar10 = (float)local_d0;
      if (param_1 == (longlong *)0x0) break;
      fVar9 = local_d0._4_4_;
    }
  }
  fVar9 = ((float)(double)CONCAT44((uint)((ulonglong)(double)fVar10 >> 0x20) & DAT_1824c4f10._4_4_,
                                   SUB84((double)fVar10,0) & (uint)DAT_1824c4f10) +
          (float)(double)CONCAT44((uint)((ulonglong)(double)(float)local_e0 >> 0x20) &
                                  DAT_1824c4f10._4_4_,
                                  SUB84((double)(float)local_e0,0) & (uint)DAT_1824c4f10)) *
          DAT_1824c3d8c;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  return fVar9 / *(float *)(DAT_182673700 + 0xc0);
}



############ FUN_ 18134af50 size=396 ############

void FUN_18134af50(longlong param_1,float *param_2)

{
  float *pfVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined8 uVar5;
  char cVar6;
  undefined8 *puVar7;
  void *_Memory;
  float *pfVar8;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  pfVar8 = param_2;
  cVar6 = FUN_1812a0b10(param_2);
  if (cVar6 == '\0') {
    pfVar1 = *(float **)(param_1 + 0x38);
    if (pfVar1 != (float *)0x0) {
      if ((((*pfVar1 == *pfVar8) && (pfVar1[1] == pfVar8[1])) && (pfVar1[2] == pfVar8[2])) &&
         (((pfVar1[3] == pfVar8[3] && (pfVar1[4] == pfVar8[4])) && (pfVar1[5] == pfVar8[5])))) {
        return;
      }
      FUN_18134bdf0(param_1);
      pfVar8 = *(float **)(param_1 + 0x38);
      fVar2 = param_2[1];
      fVar3 = param_2[2];
      fVar4 = param_2[3];
      *pfVar8 = *param_2;
      pfVar8[1] = fVar2;
      pfVar8[2] = fVar3;
      pfVar8[3] = fVar4;
      *(undefined8 *)(pfVar8 + 4) = *(undefined8 *)(param_2 + 4);
      FUN_18134bdf0(param_1);
      goto LAB_18134b0ba;
    }
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    uVar5 = *(undefined8 *)(param_2 + 2);
    *puVar7 = *(undefined8 *)param_2;
    puVar7[1] = uVar5;
    puVar7[2] = *(undefined8 *)(param_2 + 4);
    _Memory = *(void **)(param_1 + 0x38);
    *(undefined8 **)(param_1 + 0x38) = puVar7;
  }
  else {
    if (*(longlong *)(param_1 + 0x38) == 0) {
      return;
    }
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
    _Memory = *(void **)(param_1 + 0x38);
    *(undefined8 *)(param_1 + 0x38) = 0;
  }
  if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
LAB_18134b0ba:
  FUN_181344840(param_1,0,0);
  return;
}



############ FUN_ 1804e8170 size=1051 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804e8170(longlong *param_1,char param_2,undefined8 param_3)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  ulonglong *puVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong lVar9;
  ulonglong uVar10;
  int iVar11;
  undefined8 local_res18 [2];
  undefined1 auStack_e8 [32];
  undefined4 local_c8;
  undefined8 local_b8;
  ulonglong local_b0;
  longlong local_a8;
  undefined8 *local_a0;
  undefined8 local_98;
  undefined1 local_90 [8];
  undefined1 local_88 [8];
  longlong local_80;
  undefined8 local_70;
  longlong *local_68;
  undefined1 local_60 [8];
  undefined8 *local_58;
  longlong local_50;
  longlong local_48;
  ushort local_40;
  ulonglong local_38;
  
  local_98 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_68 = (longlong *)param_1[0x19];
  local_res18[0] = param_3;
  (**(code **)(*local_68 + 0xb8))(local_68,local_60,param_1 + 0x1a);
  local_58 = (undefined8 *)param_1[0x1b];
  if (local_58 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_58 + 1) = *(int *)(local_58 + 1) + 1;
    UNLOCK();
    param_3 = local_res18[0];
  }
  local_50 = param_1[0x1c];
  iVar11 = (int)param_3 - (int)param_1[0x21];
  local_b8 = CONCAT44((int)((ulonglong)param_3 >> 0x20) - (int)((ulonglong)param_1[0x21] >> 0x20),
                      iVar11);
  lVar9 = param_1[3];
  if (lVar9 != 0) {
    lVar7 = lVar9;
    for (lVar2 = *(longlong *)(lVar9 + 0x18); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      lVar7 = lVar2;
    }
    puVar4 = (ulonglong *)FUN_18051e060(local_90,lVar7,local_b8);
    uVar10 = *puVar4;
    if (lVar7 == lVar9) {
      local_b8._0_4_ = (int)uVar10;
      iVar11 = (int)local_b8;
      local_b8 = uVar10;
      local_b0 = uVar10;
    }
    else {
      if (*(longlong *)(lVar9 + 0x18) != lVar7) {
        puVar4 = (ulonglong *)FUN_180520050(local_88,lVar7);
        uVar10 = *puVar4;
      }
      FUN_18051e060(&local_b0,lVar9,uVar10);
      local_b8 = local_b0;
      uVar10 = local_b8;
      local_b8._0_4_ = (int)local_b0;
      iVar11 = (int)local_b8;
      local_b8 = uVar10;
    }
  }
  local_c8 = *(undefined4 *)((longlong)param_1 + 0x2c);
  FUN_18134bfe0(param_1,iVar11,local_b8 >> 0x20,(int)param_1[5]);
  plVar5 = (longlong *)FUN_1804e8770(param_1,param_3,&local_50,&local_a8);
  if (((plVar5 == (longlong *)0x0) || (*(code **)(*plVar5 + 0x30) == FUN_181339d20)) ||
     (cVar3 = (**(code **)(*plVar5 + 0x30))(plVar5), cVar3 != '\0')) {
    uVar8 = 1;
  }
  else {
    uVar8 = 0;
  }
  (**(code **)(*param_1 + 0x58))(param_1,uVar8);
  lVar9 = param_1[0x20];
  if (lVar9 == 0) {
    lVar7 = 0;
  }
  else {
    lVar7 = *(longlong *)(lVar9 + 0x10);
  }
  if (local_a8 != lVar7) {
    if (lVar9 == 0) {
      uVar8 = 0;
    }
    else {
      uVar8 = *(undefined8 *)(lVar9 + 0x10);
    }
    local_c8 = 0;
    plVar6 = (longlong *)
             __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                             &juce::DragAndDropTarget::RTTI_Type_Descriptor);
    if (plVar6 != (longlong *)0x0) {
      if (local_58 == (undefined8 *)0x0) {
        lVar9 = 0;
      }
      else {
        lVar9 = local_58[2];
      }
      if ((lVar9 != 0) && (cVar3 = (**(code **)(*plVar6 + 8))(plVar6,&local_68), cVar3 != '\0')) {
        (**(code **)(*plVar6 + 0x20))(plVar6,&local_68);
      }
    }
    plVar6 = (longlong *)FUN_1804de690(&local_a0,local_a8);
    local_80 = param_1[0x20];
    param_1[0x20] = *plVar6;
    *plVar6 = local_80;
    if (local_a0 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_a0 + 1);
      iVar11 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar11 == 1) {
        (**(code **)*local_a0)(local_a0,1);
      }
    }
    if ((plVar5 != (longlong *)0x0) &&
       (cVar3 = (**(code **)(*plVar5 + 8))(plVar5,&local_68), cVar3 != '\0')) {
      (**(code **)(*plVar5 + 0x10))(plVar5,&local_68);
    }
  }
  if (param_1[0x20] == 0) {
    uVar8 = 0;
  }
  else {
    uVar8 = *(undefined8 *)(param_1[0x20] + 0x10);
  }
  local_c8 = 0;
  plVar5 = (longlong *)
           __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                           &juce::DragAndDropTarget::RTTI_Type_Descriptor);
  if (plVar5 != (longlong *)0x0) {
    cVar3 = (**(code **)(*plVar5 + 8))(plVar5,&local_68);
    if (cVar3 != '\0') {
      (**(code **)(*plVar5 + 0x18))(plVar5,&local_68);
    }
  }
  if (param_2 != '\0') {
    _ftime64_s(&local_48);
    lVar9 = local_48 * 1000 + (ulonglong)local_40;
    if (param_1[0x20] == 0) {
      uVar8 = 0;
    }
    else {
      uVar8 = *(undefined8 *)(param_1[0x20] + 0x10);
    }
    local_c8 = 0;
    lVar7 = __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::DragAndDropTarget::RTTI_Type_Descriptor);
    if (lVar7 == 0) {
      if ((param_1[0x23] + (longlong)_DAT_1824c4338 < lVar9) && ((char)param_1[0x22] == '\0')) {
        FUN_1804e8af0(param_1,&local_68,local_res18);
      }
    }
    else {
      param_1[0x23] = lVar9;
    }
  }
  if (DAT_182673700 == 0) {
    local_b8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_b8);
  }
  local_70 = **(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18);
  FUN_1804e6e90(local_70,1);
  if (local_58 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_58 + 1);
    iVar11 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar11 == 1) {
      (**(code **)*local_58)(local_58,1);
    }
  }
  (**(code **)(*local_68 + 0xb0))(local_68,local_60);
}



############ FUN_ 1804e8af0 size=574 ############

void FUN_1804e8af0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3)

{
  uint uVar1;
  char cVar2;
  longlong lVar3;
  byte *pbVar4;
  uint *_Memory;
  bool bVar5;
  ulonglong local_res20;
  void *local_d0;
  undefined8 local_c8;
  void *local_c0;
  undefined8 local_b8;
  undefined1 local_b0;
  char *local_a8;
  undefined1 local_a0 [8];
  undefined **local_98;
  void *local_90;
  undefined4 local_88;
  undefined4 local_84;
  undefined1 local_80;
  undefined ***local_60;
  undefined8 local_58;
  undefined **local_50;
  char *local_48;
  undefined ***local_18;
  
  local_58 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res20 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res20);
  }
  lVar3 = FUN_18134b740(DAT_182673700,*param_3);
  if (lVar3 != 0) {
    return;
  }
  *(undefined1 *)(param_1 + 0x22) = 1;
  pbVar4 = (byte *)FUN_1812d0cb0(local_a0);
  if ((*pbVar4 & 0x70) == 0) {
    return;
  }
  local_d0 = (void *)0x0;
  local_c8 = 0;
  local_res20 = local_res20 & 0xffffffffffffff00;
  cVar2 = (**(code **)(*(longlong *)param_1[0x1e] + 8))
                    ((longlong *)param_1[0x1e],param_2,&local_d0,&local_res20);
  if ((cVar2 != '\0') && (local_c8._4_4_ != 0)) {
    local_c0 = (void *)0x0;
    local_b8 = 0;
    FUN_18048c4c0(&local_c0,local_d0);
    local_b0 = (undefined1)local_res20;
    local_98 = std::_Func_impl_no_alloc<<lambda_fe2df7e428391890adf2967b6a81e420>,void>::vftable;
    local_90 = local_c0;
    local_c0 = (void *)0x0;
    local_88 = (undefined4)local_b8;
    local_84 = local_b8._4_4_;
    local_b8 = 0;
    local_80 = (undefined1)local_res20;
    local_60 = &local_98;
    FUN_180488c50(&local_c0);
                    /* WARNING: Subroutine does not return */
    free(local_c0);
  }
  local_a8 = "";
  cVar2 = (**(code **)(*(longlong *)param_1[0x1e] + 0x10))
                    ((longlong *)param_1[0x1e],param_2,&local_a8);
  if ((cVar2 == '\0') || (*local_a8 == '\0')) {
    _Memory = (uint *)(local_a8 + -0x10);
    if ((*_Memory & 0x30000000) != 0) goto LAB_1804e8d1c;
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
  }
  else {
    if ((*(uint *)(local_a8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a8 + -0x10) = *(int *)(local_a8 + -0x10) + 1;
      UNLOCK();
    }
    local_50 = std::_Func_impl_no_alloc<<lambda_4639ba94ddd790eb3b2d959ff5280a8f>,void>::vftable;
    local_48 = local_a8;
    local_18 = &local_50;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar1 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar5 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar1;
      if (bVar5) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    FUN_1812a7460(&local_50);
    (**(code **)*param_1)(param_1,1);
    _Memory = (uint *)(local_a8 + -0x10);
    if ((*_Memory & 0x30000000) != 0) goto LAB_1804e8d1c;
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
  }
  if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
LAB_1804e8d1c:
  FUN_180488c50(&local_d0);
                    /* WARNING: Subroutine does not return */
  free(local_d0);
}



############ FUN_ 1804e85b0 size=342 ############

void FUN_1804e85b0(longlong param_1)

{
  longlong *plVar1;
  bool bVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  longlong lVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    uVar3 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar3);
  }
  FUN_1804e6e90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),1);
  lVar7 = 0;
  lVar4 = lVar7;
  if (*(longlong *)(param_1 + 0x28) != 0) {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x28) + 0x10);
  }
  if (lVar4 == 0) {
    if ((undefined8 *)(param_1 + -0xb0) != (undefined8 *)0x0) {
      puVar5 = *(undefined8 **)(param_1 + -0xb0);
LAB_1804e86ef:
      (*(code *)*puVar5)(param_1 + -0xb0,1);
    }
  }
  else {
    if (DAT_182673700 == 0) {
      uVar3 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar3);
    }
    plVar6 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
    plVar1 = plVar6 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
    if (plVar6 != plVar1) {
      puVar5 = (undefined8 *)(param_1 + -0xb0);
      do {
        lVar4 = *plVar6;
        if ((*(int *)(lVar4 + 0x14) != *(int *)(param_1 + 0x74)) ||
           (bVar2 = true, *(int *)(lVar4 + 0x10) != *(int *)(param_1 + 0x70))) {
          bVar2 = false;
        }
        if ((bVar2) && ((*(byte *)(lVar4 + 0x28) & 0x70) == 0)) {
          lVar4 = *(longlong *)(param_1 + 0x48);
          if ((lVar4 != 0) && (*(longlong *)(lVar4 + 0x10) != 0)) {
            if (lVar4 != 0) {
              lVar7 = *(longlong *)(lVar4 + 0x10);
            }
            FUN_181341510(lVar7,puVar5,plVar1,*(int *)(param_1 + 0x74),uVar8);
          }
          if (puVar5 == (undefined8 *)0x0) {
            return;
          }
          puVar5 = (undefined8 *)*puVar5;
          goto LAB_1804e86ef;
        }
        plVar6 = plVar6 + 1;
      } while (plVar6 != plVar1);
    }
  }
  return;
}



############ FUN_ 181336e60 size=161 ############

void FUN_181336e60(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined1 uVar3;
  undefined8 uVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined1 uVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  plVar6 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar6 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  do {
    if (plVar6 == plVar1) {
      uVar7 = 0;
LAB_181336ede:
      uVar3 = FUN_18133e590(param_1,1,plVar1,param_4,uVar8);
      FUN_181336db0(param_1,uVar3,uVar7);
      return;
    }
    lVar2 = *(longlong *)(*plVar6 + 0x48);
    lVar5 = 0;
    if (lVar2 != 0) {
      lVar5 = *(longlong *)(lVar2 + 0x10);
    }
    if ((lVar5 == param_1) && ((*(byte *)(*plVar6 + 0x28) & 0x70) != 0)) {
      uVar7 = 1;
      goto LAB_181336ede;
    }
    plVar6 = plVar6 + 1;
  } while( true );
}



############ FUN_ 18133e590 size=754 ############

undefined8 FUN_18133e590(longlong param_1,char param_2)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  longlong lVar5;
  longlong lVar6;
  float fVar7;
  double dVar8;
  undefined8 uVar9;
  char cVar10;
  float *pfVar11;
  undefined8 *puVar12;
  longlong lVar13;
  longlong lVar14;
  undefined8 uVar15;
  longlong *plVar16;
  undefined8 local_res18;
  double local_res20;
  float local_c0;
  float local_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined8 local_b0;
  double local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined1 local_90 [8];
  undefined1 local_88 [8];
  undefined1 local_80 [72];
  
  local_98 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res18 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res18);
  }
  dVar8 = DAT_1824c4520;
  fVar7 = DAT_1824c3ea4;
  plVar16 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar16 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  do {
    if (plVar16 == plVar1) {
      return 0;
    }
    lVar13 = *plVar16;
    if (*(longlong *)(lVar13 + 0x48) == 0) {
      lVar14 = 0;
    }
    else {
      lVar14 = *(longlong *)(*(longlong *)(lVar13 + 0x48) + 0x10);
    }
    if (lVar14 == param_1) {
LAB_18133e676:
      if (((*(byte *)(lVar13 + 0x28) & 0x70) != 0) ||
         ((*(int *)(lVar13 + 0x14) != 1 && (*(int *)(lVar13 + 0x14) != 2)))) {
        pfVar11 = (float *)FUN_1804e5a90(lVar13,local_90);
        fVar2 = *pfVar11;
        fVar3 = pfVar11[1];
        uVar9 = *(undefined8 *)pfVar11;
        if (DAT_182673700 == 0) {
          local_res20 = (double)FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(local_res20);
        }
        fVar4 = *(float *)(DAT_182673700 + 0xc0);
        if (fVar4 == fVar7) {
          local_b0 = uVar9;
          pfVar11 = (float *)&local_b0;
        }
        else {
          local_c0 = fVar2 / fVar4;
          local_bc = fVar3 / fVar4;
          pfVar11 = &local_c0;
        }
        local_res20 = *(double *)pfVar11;
        uVar9 = *(undefined8 *)pfVar11;
        if (lVar14 != 0) {
          lVar5 = *(longlong *)(lVar14 + 0x18);
          lVar13 = lVar14;
          while (lVar6 = lVar5, lVar6 != 0) {
            lVar13 = lVar6;
            lVar5 = *(longlong *)(lVar6 + 0x18);
          }
          puVar12 = (undefined8 *)FUN_1805200f0(local_88,lVar13,*(undefined8 *)pfVar11);
          uVar15 = *puVar12;
          uVar9 = *puVar12;
          if (lVar13 != lVar14) {
            local_res20 = (double)uVar15;
            if (*(longlong *)(lVar14 + 0x18) != lVar13) {
              puVar12 = (undefined8 *)
                        FUN_1805200a0(local_80,lVar13,*(longlong *)(lVar14 + 0x18),uVar15);
              uVar15 = *puVar12;
            }
            FUN_1805200f0(&local_res18,lVar14,uVar15);
            uVar9 = local_res18;
          }
        }
        local_res18 = uVar9;
        local_a8 = (double)local_res18._4_4_ + dVar8;
        local_res20 = (double)(float)local_res18 + dVar8;
        local_b8 = local_res20._0_4_;
        uStack_b4 = local_a8._0_4_;
        uVar9 = CONCAT44(local_a8._0_4_,local_res20._0_4_);
        cVar10 = FUN_181343fe0(lVar14,uVar9);
        if (cVar10 != '\0') {
          lVar5 = *(longlong *)(lVar14 + 0x18);
          lVar13 = lVar14;
          while (lVar6 = lVar5, lVar6 != 0) {
            lVar13 = lVar6;
            lVar5 = *(longlong *)(lVar6 + 0x18);
          }
          FUN_18051db10(&local_a0,lVar13,lVar14,uVar9);
          lVar13 = FUN_181343e50(lVar13,local_a0);
          if (lVar13 == lVar14) {
            return 1;
          }
        }
      }
    }
    else {
      lVar5 = lVar14;
      if (param_2 != '\0') {
        do {
          if (lVar5 == 0) goto LAB_18133e840;
          lVar5 = *(longlong *)(lVar5 + 0x18);
        } while (lVar5 != param_1);
        goto LAB_18133e676;
      }
    }
LAB_18133e840:
    plVar16 = plVar16 + 1;
  } while( true );
}



############ FUN_ 1804e9bf0 size=1518 ############

longlong FUN_1804e9bf0(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  longlong *plVar8;
  undefined8 uVar9;
  uint *puVar10;
  uint *_Memory;
  undefined8 *puVar11;
  undefined4 uVar12;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  float fVar13;
  float fVar14;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  longlong local_res20;
  longlong local_168;
  longlong local_160;
  longlong lStack_158;
  undefined8 local_150;
  undefined8 uStack_148;
  longlong local_140;
  longlong lStack_138;
  longlong local_130;
  longlong local_128;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  undefined8 local_f8;
  float local_f0;
  float local_ec;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined4 local_e0;
  undefined4 local_dc;
  longlong local_d8;
  longlong local_d0 [3];
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined1 local_90 [24];
  undefined1 local_78 [56];
  
  local_b8 = 0xfffffffffffffffe;
  local_res8 = FUN_1811316e0(0xf0);
  lVar7 = FUN_1813327c0(local_res8);
  FUN_1804eb420(lVar7,param_2);
  local_168 = *param_1;
  bVar2 = true;
  if ((*(uint *)(local_168 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_168 + -0x10) = *(int *)(local_168 + -0x10) + 1;
    UNLOCK();
  }
  local_160 = param_1[1];
  lStack_158 = param_1[2];
  local_150 = param_1[3];
  uStack_148 = param_1[4];
  local_140 = param_1[5];
  lStack_138 = param_1[6];
  local_130 = param_1[7];
  local_128 = param_1[8];
  if ((*(uint *)(local_128 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_128 + -0x10) = *(int *)(local_128 + -0x10) + 1;
    UNLOCK();
  }
  for (puVar11 = *(undefined8 **)(*param_2 + 0x10); puVar11 != (undefined8 *)0x0;
      puVar11 = (undefined8 *)*puVar11) {
    local_b0 = puVar11[1];
    iVar5 = FUN_18048cbc0(local_b0,"transform");
    if (iVar5 == 0) goto LAB_1804e9ce2;
  }
  puVar11 = (undefined8 *)0x0;
LAB_1804e9ce2:
  if (puVar11 != (undefined8 *)0x0) {
    FUN_1804f0910(&local_168,param_2);
  }
  uVar12 = FUN_1812339a0(&local_110,SUB84((double)(float)local_150,0),0,0);
  local_118 = local_110;
  for (puVar11 = *(undefined8 **)(*param_2 + 0x10); local_110 = local_118,
      puVar11 != (undefined8 *)0x0; puVar11 = (undefined8 *)*puVar11) {
    local_a8 = puVar11[1];
    iVar5 = FUN_18048cbc0(local_a8,"width");
    uVar12 = extraout_XMM0_Da;
    if (iVar5 == 0) {
      local_118 = puVar11[2];
      puVar10 = (uint *)(local_118 + -0x10);
      uVar6 = *puVar10;
      goto LAB_1804e9d52;
    }
    local_118 = local_110;
  }
  puVar10 = (uint *)(local_118 + -0x10);
  uVar6 = *puVar10;
LAB_1804e9d52:
  if ((uVar6 & 0x30000000) == 0) {
    LOCK();
    *puVar10 = *puVar10 + 1;
    UNLOCK();
  }
  uVar12 = FUN_1804f0b80(uVar12,&local_118,(int)param_1[4]);
  local_150 = CONCAT44(local_150._4_4_,uVar12);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_110 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  uVar12 = FUN_1812339a0(&local_100,SUB84((double)local_150._4_4_,0),0,0);
  local_108 = local_100;
  for (puVar11 = *(undefined8 **)(*param_2 + 0x10); local_100 = local_108,
      puVar11 != (undefined8 *)0x0; puVar11 = (undefined8 *)*puVar11) {
    local_a0 = puVar11[1];
    iVar5 = FUN_18048cbc0(local_a0,"height");
    uVar12 = extraout_XMM0_Da_00;
    if (iVar5 == 0) {
      local_108 = puVar11[2];
      puVar10 = (uint *)(local_108 + -0x10);
      uVar6 = *puVar10;
      goto LAB_1804e9e13;
    }
    local_108 = local_100;
  }
  puVar10 = (uint *)(local_108 + -0x10);
  uVar6 = *puVar10;
LAB_1804e9e13:
  if ((uVar6 & 0x30000000) == 0) {
    LOCK();
    *puVar10 = *puVar10 + 1;
    UNLOCK();
  }
  fVar13 = (float)FUN_1804f0b80(uVar12,&local_108,*(undefined4 *)((longlong)param_1 + 0x24));
  local_150._4_4_ = fVar13;
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_100 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if ((float)local_150 <= 0.0) {
    local_150._0_4_ = DAT_1824c44dc;
  }
  if (fVar13 <= 0.0) {
    local_150._4_4_ = DAT_1824c44dc;
  }
  local_res18 = 0;
  lVar1 = *param_2;
  fVar13 = (float)local_150;
  fVar14 = local_150._4_4_;
  for (puVar11 = *(undefined8 **)(lVar1 + 0x10); puVar11 != (undefined8 *)0x0;
      puVar11 = (undefined8 *)*puVar11) {
    local_98 = puVar11[1];
    iVar5 = FUN_18048cbc0(local_98,"viewBox");
    if (iVar5 == 0) goto LAB_1804e9ef2;
  }
  puVar11 = (undefined8 *)0x0;
LAB_1804e9ef2:
  if (puVar11 == (undefined8 *)0x0) {
    if (*(float *)(param_1 + 4) == 0.0) {
      uStack_148 = CONCAT44(uStack_148._4_4_,fVar13);
    }
    if (*(float *)((longlong)param_1 + 0x24) == 0.0) {
      uStack_148 = CONCAT44(fVar14,(undefined4)uStack_148);
    }
  }
  else {
    plVar8 = (longlong *)FUN_181246db0(lVar1,"viewBox");
    local_res20 = *plVar8;
    puVar10 = (uint *)(local_res20 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      *puVar10 = *puVar10 + 1;
      UNLOCK();
    }
    local_res10 = 0;
    local_d8 = local_res20;
    cVar4 = FUN_1804f0ad0(param_1,&local_res20,&local_res18,1,1);
    if ((cVar4 == '\0') ||
       (cVar4 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_res18 + 4,1,0), cVar4 == '\0'))
    {
      bVar3 = false;
    }
    else {
      bVar3 = true;
    }
    if (bVar3) {
      cVar4 = FUN_1804f0ad0(param_1,&local_res20,&local_res10,1,1);
      if ((cVar4 == '\0') ||
         (cVar4 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_res10 + 4,1,0), cVar4 == '\0')
         ) {
        bVar2 = false;
      }
      if (((bVar2) && (0.0 < (float)local_res10)) && (0.0 < local_res10._4_4_)) {
        uStack_148 = local_res10;
        uVar9 = FUN_181246db0(*param_2,"preserveAspectRatio");
        uVar9 = FUN_181248e40(uVar9,local_d0);
        iVar5 = FUN_1804f1750(uVar9);
        _Memory = (uint *)(local_d0[0] + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar6 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        if (iVar5 != 0) {
          local_f8 = 0;
          local_f0 = (float)local_150;
          local_ec = local_150._4_4_;
          local_e8 = (undefined4)local_res18;
          local_e4 = local_res18._4_4_;
          local_e0 = (float)local_res10;
          local_dc = local_res10._4_4_;
          local_res8 = CONCAT44(local_res8._4_4_,iVar5);
          uVar9 = FUN_1812971a0(&local_res8,local_90,&local_e8,&local_f8);
          plVar8 = (longlong *)FUN_1812a0a40(uVar9,local_78,&local_140);
          local_140 = *plVar8;
          lStack_138 = plVar8[1];
          local_130 = plVar8[2];
        }
      }
    }
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  FUN_1804eb590(&local_168,param_2,lVar7,1);
  *(undefined4 *)(lVar7 + 0xd8) = (undefined4)local_res18;
  *(undefined4 *)(lVar7 + 0xdc) = local_res18._4_4_;
  *(undefined4 *)(lVar7 + 0xe0) = (undefined4)uStack_148;
  *(undefined4 *)(lVar7 + 0xe4) = uStack_148._4_4_;
  FUN_181331c50(lVar7);
  FUN_1804f34a0(&local_168);
  return lVar7;
}



############ FUN_ 1804ebe50 size=439 ############

longlong * FUN_1804ebe50(longlong *param_1,longlong *param_2,char param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  longlong *plVar6;
  undefined8 uVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined8 *puVar10;
  undefined1 local_70 [24];
  longlong local_58;
  longlong local_50;
  longlong lStack_48;
  longlong local_40;
  longlong lStack_38;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  longlong local_20;
  longlong local_18;
  
  if (param_3 != '\0') {
    for (puVar10 = *(undefined8 **)(*param_2 + 0x10); puVar10 != (undefined8 *)0x0;
        puVar10 = (undefined8 *)*puVar10) {
      iVar5 = FUN_18048cbc0(puVar10[1],"transform");
      if (iVar5 == 0) goto LAB_1804ebeb6;
    }
    puVar10 = (undefined8 *)0x0;
LAB_1804ebeb6:
    if (puVar10 != (undefined8 *)0x0) {
      local_58 = *param_1;
      if ((*(uint *)(local_58 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_58 + -0x10) = *(int *)(local_58 + -0x10) + 1;
        UNLOCK();
      }
      local_50 = param_1[1];
      lStack_48 = param_1[2];
      local_40 = param_1[3];
      lStack_38 = param_1[4];
      local_30 = (undefined4)param_1[5];
      uStack_2c = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_28 = (undefined4)param_1[6];
      uStack_24 = *(undefined4 *)((longlong)param_1 + 0x34);
      local_20 = param_1[7];
      local_18 = param_1[8];
      if ((*(uint *)(local_18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_18 + -0x10) = *(int *)(local_18 + -0x10) + 1;
        UNLOCK();
      }
      FUN_1804f0910(&local_58,param_2);
      plVar6 = (longlong *)FUN_1804ebe50(&local_58,param_2,0);
      puVar9 = (uint *)(local_18 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_58 + -0x10);
      if ((*puVar9 & 0x30000000) != 0) {
        return plVar6;
      }
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 != 0) {
        return plVar6;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  uVar7 = FUN_1811316e0(0xf0);
  plVar6 = (longlong *)FUN_1813327c0(uVar7);
  FUN_1804eb420(plVar6,param_2);
  FUN_1804eb590(param_1,param_2,plVar6,1);
  puVar8 = (undefined4 *)(**(code **)(*plVar6 + 0x168))(plVar6,local_70);
  uVar2 = puVar8[1];
  uVar3 = puVar8[2];
  uVar4 = puVar8[3];
  *(undefined4 *)(plVar6 + 0x1b) = *puVar8;
  *(undefined4 *)((longlong)plVar6 + 0xdc) = uVar2;
  *(undefined4 *)(plVar6 + 0x1c) = uVar3;
  *(undefined4 *)((longlong)plVar6 + 0xe4) = uVar4;
  FUN_181331c50(plVar6);
  return plVar6;
}



############ FUN_ 1804ed050 size=1890 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_1804ed050(longlong *param_1,longlong *param_2,undefined8 *param_3,char param_4,char *param_5)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  bool bVar7;
  char cVar8;
  int iVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  undefined8 uVar12;
  undefined8 uVar13;
  uint *puVar14;
  undefined8 *puVar15;
  undefined1 *local_1e8;
  undefined1 *local_1e0;
  undefined1 *local_1d8;
  undefined1 *local_1d0;
  undefined1 *local_1c8;
  undefined1 *local_1c0;
  char *local_1b8;
  undefined8 *local_1b0;
  undefined8 local_1a8;
  undefined4 uStack_1a0;
  undefined4 uStack_19c;
  longlong local_198;
  longlong local_190;
  longlong local_188;
  int local_180 [2];
  undefined8 local_178;
  undefined8 uStack_170;
  undefined8 local_168;
  undefined8 uStack_160;
  undefined4 local_158;
  undefined4 uStack_154;
  int local_150;
  undefined8 local_14c;
  undefined8 uStack_144;
  undefined8 local_13c;
  undefined8 *local_130;
  undefined8 local_128;
  longlong local_118;
  longlong local_110;
  longlong lStack_108;
  longlong local_100;
  longlong lStack_f8;
  undefined4 local_f0;
  undefined4 uStack_ec;
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  longlong local_e0;
  longlong local_d8;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined1 local_a8 [16];
  undefined1 local_98 [8];
  longlong local_90;
  undefined8 *local_88;
  undefined1 local_68 [64];
  
  local_c8 = 0xfffffffffffffffe;
  if (param_4 != '\0') {
    for (puVar10 = *(undefined8 **)(*param_2 + 0x10); puVar15 = (undefined8 *)0x0,
        puVar10 != (undefined8 *)0x0; puVar10 = (undefined8 *)*puVar10) {
      local_c0 = puVar10[1];
      iVar9 = FUN_18048cbc0(local_c0,"transform");
      puVar15 = puVar10;
      if (iVar9 == 0) break;
    }
    if (puVar15 != (undefined8 *)0x0) {
      local_118 = *param_1;
      if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
        UNLOCK();
      }
      local_110 = param_1[1];
      lStack_108 = param_1[2];
      local_100 = param_1[3];
      lStack_f8 = param_1[4];
      local_f0 = (undefined4)param_1[5];
      uStack_ec = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_e8 = (undefined4)param_1[6];
      uStack_e4 = *(undefined4 *)((longlong)param_1 + 0x34);
      local_e0 = param_1[7];
      local_d8 = param_1[8];
      if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
        UNLOCK();
      }
      FUN_1804f0910(&local_118,param_2);
      puVar10 = (undefined8 *)FUN_1804ed050(&local_118,param_2,param_3,0,0);
      puVar14 = (uint *)(local_d8 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_118 + -0x10);
      if ((*puVar14 & 0x30000000) != 0) {
        return puVar10;
      }
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 != 0) {
        return puVar10;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar10 = (undefined8 *)FUN_1811316e0(400);
  local_1b0 = puVar10;
  FUN_181330640(puVar10);
  *puVar10 = juce::DrawablePath::vftable;
  FUN_1804eb420(puVar10,param_2);
  uVar13 = _UNK_1824c4788;
  uVar12 = _DAT_1824c4780;
  local_180[0] = DAT_182673b60;
  local_178 = 0;
  uStack_170 = 0;
  local_168 = _DAT_1824c4780;
  uStack_160 = _UNK_1824c4788;
  local_158 = DAT_1824c3ea4;
  uStack_154 = 0;
  piVar1 = (int *)(puVar10 + 0x26);
  iVar9 = DAT_182673b60;
  if ((((*piVar1 != DAT_182673b60) || (puVar10[0x28] != 0)) ||
      (cVar8 = FUN_1812a0bf0(puVar10 + 0x29,&local_168), cVar8 == '\0')) ||
     (bVar7 = true, puVar10[0x27] != 0)) {
    bVar7 = false;
  }
  if (!bVar7) {
    if (piVar1 != local_180) {
      *piVar1 = iVar9;
      uVar11 = FUN_1804b0230(0);
      lVar3 = puVar10[0x27];
      puVar10[0x27] = uVar11;
      if (lVar3 != 0) {
        *(undefined4 *)(lVar3 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
        free(*(void **)(lVar3 + 0x18));
      }
      FUN_1812911c0(puVar10 + 0x28,&uStack_170);
      puVar10[0x29] = uVar12;
      puVar10[0x2a] = uVar13;
      puVar10[0x2b] = CONCAT44(uStack_154,local_158);
    }
    uStack_19c = *(undefined4 *)((longlong)puVar10 + 0x2c);
    uStack_1a0 = *(undefined4 *)(puVar10 + 5);
    local_1a8 = 0;
    local_b8 = 0;
    uStack_b4 = 0;
    uStack_b0 = uStack_1a0;
    uStack_ac = uStack_19c;
    FUN_181342870(puVar10,&local_b8,1);
  }
  FUN_18129b680(param_3,param_1 + 5);
  if (puVar10 + 0x1c != param_3) {
    FUN_1804aaf40(puVar10 + 0x1c,param_3);
    uVar4 = *(undefined4 *)((longlong)param_3 + 0x14);
    uVar5 = *(undefined4 *)(param_3 + 3);
    uVar6 = *(undefined4 *)((longlong)param_3 + 0x1c);
    *(undefined4 *)(puVar10 + 0x1e) = *(undefined4 *)(param_3 + 2);
    *(undefined4 *)((longlong)puVar10 + 0xf4) = uVar4;
    *(undefined4 *)(puVar10 + 0x1f) = uVar5;
    *(undefined4 *)((longlong)puVar10 + 0xfc) = uVar6;
    *(undefined1 *)(puVar10 + 0x20) = *(undefined1 *)(param_3 + 4);
  }
  FUN_181330000(puVar10);
  local_150 = 0;
  local_14c = 0;
  uStack_144 = 0;
  local_13c = 0;
  local_128 = *param_3;
  local_130 = param_3;
  cVar8 = FUN_181299d60(&local_150);
  while ((iVar9 = DAT_182673b60, cVar8 != '\0' && (iVar9 = DAT_18262b5b8, local_150 != 4))) {
    cVar8 = FUN_181299d60(&local_150);
  }
  local_1e0 = &DAT_1821dbf98;
  uVar12 = FUN_1804f1300(param_1,&local_190,param_2,"opacity",&local_1e0);
  local_1e8 = &DAT_1821dbf98;
  uVar13 = FUN_1804f1300(param_1,&local_198,param_2,"fill-opacity",&local_1e8);
  uVar12 = FUN_1804eebf0(param_1,local_98,param_3,param_2,&DAT_18249f004,uVar13,uVar12,iVar9);
  FUN_181330430(puVar10,uVar12);
  if (local_88 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_88 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_88)(local_88,1);
    }
  }
  if (local_90 == 0) {
    puVar14 = (uint *)(local_198 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    puVar14 = (uint *)(local_1e8 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    puVar14 = (uint *)(local_190 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    puVar14 = (uint *)(local_1e0 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    local_1d8 = &DAT_1821dbf98;
    FUN_1804f1300(param_1,&local_1b8,param_2,"stroke",&local_1d8);
    puVar14 = (uint *)(local_1d8 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    if ((*local_1b8 != '\0') && (iVar9 = FUN_18049bb30(local_1b8,&DAT_18249ef08), iVar9 != 0)) {
      local_1c8 = &DAT_1821dbf98;
      uVar12 = FUN_1804f1300(param_1,&local_1b0,param_2,"opacity",&local_1c8);
      local_1d0 = &DAT_1821dbf98;
      uVar13 = FUN_1804f1300(param_1,&local_188,param_2,"stroke-opacity",&local_1d0);
      uVar12 = FUN_1804eebf0(param_1,local_68,param_3,param_2,"stroke",uVar13,uVar12,DAT_182673b60);
      cVar8 = FUN_1812a0d20(puVar10 + 0x2c,uVar12);
      if (cVar8 != '\0') {
        FUN_1812a0f40(puVar10 + 0x2c,uVar12);
        FUN_18134bdf0(puVar10);
      }
      FUN_1812a0e00(local_68);
      puVar14 = (uint *)(local_188 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_1d0 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_1b0 + -2);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_1c8 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      uVar12 = FUN_1804eef10(param_1,local_a8,param_2);
      FUN_181330370(puVar10,uVar12);
    }
    local_1c0 = &DAT_1821dbf98;
    FUN_1804f1300(param_1,&param_5,param_2,"stroke-dasharray",&local_1c0);
    puVar14 = (uint *)(local_1c0 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    if (*param_5 != '\0') {
      FUN_1804ed7e0(param_1,&param_5,puVar10);
    }
    puVar14 = (uint *)(param_5 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    puVar14 = (uint *)(local_1b8 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    return puVar10;
  }
  *(undefined4 *)(local_90 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(local_90 + 0x18));
}



############ FUN_ 1804ef190 size=2390 ############

undefined8 FUN_1804ef190(longlong *param_1,longlong *param_2,char param_3,longlong param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  longlong *plVar4;
  float fVar5;
  char cVar6;
  int iVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  longlong lVar10;
  longlong *plVar11;
  undefined8 *puVar12;
  longlong *plVar13;
  uint *puVar14;
  float *pfVar15;
  undefined1 uVar16;
  undefined8 *puVar17;
  float fVar18;
  undefined4 uVar19;
  double dVar20;
  double dVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  undefined4 local_res18;
  undefined8 in_stack_fffffffffffffd98;
  ulonglong uVar27;
  longlong *local_258;
  longlong local_250;
  undefined8 local_248;
  char *local_240;
  float *local_238;
  undefined8 local_230;
  float *local_228;
  undefined8 local_220;
  undefined1 *local_218;
  longlong local_210;
  longlong local_208;
  void *local_200;
  undefined8 local_1f8;
  undefined8 local_1f0;
  undefined8 local_1e8;
  undefined8 local_1e0;
  float local_1d8;
  undefined4 local_1d4;
  undefined4 local_1d0;
  float local_1cc;
  undefined1 local_1c8 [8];
  longlong local_1c0;
  longlong local_1b8;
  longlong local_1b0;
  longlong local_1a8;
  undefined8 local_1a0;
  double local_198;
  longlong local_190;
  longlong *local_188;
  undefined8 *local_180;
  undefined8 local_178;
  float local_170;
  float fStack_16c;
  float fStack_168;
  float fStack_164;
  undefined8 local_160;
  longlong *local_158;
  longlong *local_150;
  longlong local_148;
  longlong local_140;
  longlong lStack_138;
  longlong local_130;
  longlong lStack_128;
  undefined4 local_120;
  undefined4 uStack_11c;
  undefined4 uStack_118;
  undefined4 uStack_114;
  longlong local_110;
  longlong local_108;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  float local_d8;
  float fStack_d4;
  float fStack_d0;
  float fStack_cc;
  undefined8 local_c8;
  undefined1 local_b8 [128];
  
  local_f8 = 0xfffffffffffffffe;
  if (param_3 != '\0') {
    for (puVar12 = *(undefined8 **)(*param_2 + 0x10); puVar17 = (undefined8 *)0x0,
        puVar12 != (undefined8 *)0x0; puVar12 = (undefined8 *)*puVar12) {
      local_f0 = puVar12[1];
      iVar7 = FUN_18048cbc0(local_f0,"transform");
      puVar17 = puVar12;
      if (iVar7 == 0) break;
    }
    if (puVar17 != (undefined8 *)0x0) {
      local_148 = *param_1;
      if ((*(uint *)(local_148 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_148 + -0x10) = *(int *)(local_148 + -0x10) + 1;
        UNLOCK();
      }
      local_140 = param_1[1];
      lStack_138 = param_1[2];
      local_130 = param_1[3];
      lStack_128 = param_1[4];
      local_120 = (undefined4)param_1[5];
      uStack_11c = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_118 = (undefined4)param_1[6];
      uStack_114 = *(undefined4 *)((longlong)param_1 + 0x34);
      local_110 = param_1[7];
      local_108 = param_1[8];
      if ((*(uint *)(local_108 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_108 + -0x10) = *(int *)(local_108 + -0x10) + 1;
        UNLOCK();
      }
      FUN_1804f0910(&local_148,param_2);
      uVar8 = FUN_1804ef190(&local_148,param_2,0,param_4);
      puVar14 = (uint *)(local_108 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_148 + -0x10);
      if ((*puVar14 & 0x30000000) != 0) {
        return uVar8;
      }
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 != 0) {
        return uVar8;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  iVar7 = FUN_18049bb30(*(undefined8 *)(*param_2 + 0x18),&DAT_18249ef3c);
  if (iVar7 == 0) {
    lVar3 = *param_2;
    dVar20 = (double)FUN_181246d40(lVar3,&DAT_18249efb8,0);
    dVar21 = (double)FUN_181246d40(lVar3,&DAT_18249efb4,0);
    local_1d8 = (float)dVar21;
    local_1e0 = 0x3f800000;
    local_1d4 = 0;
    local_1d0 = 0x3f800000;
    local_180 = &local_1e0;
    local_178 = 0;
    local_1cc = (float)dVar20;
    local_188 = param_1;
    FUN_1804ecd50(&local_240,param_2);
    if (*local_240 != '\0') {
      FUN_18051f620(param_1 + 1,&local_240,&local_188);
    }
    puVar14 = (uint *)(local_240 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
  }
  else {
    iVar7 = FUN_18049bb30(*(undefined8 *)(*param_2 + 0x18),&DAT_18249ef20);
    if ((iVar7 == 0) || (cVar6 = FUN_181220e10(*param_2,"tspan"), cVar6 != '\0')) {
      local_228 = (float *)0x0;
      local_220 = 0;
      local_238 = (float *)0x0;
      local_230 = 0;
      local_1f0 = 0;
      local_1e8 = 0;
      local_200 = (void *)0x0;
      local_1f8 = 0;
      uVar8 = FUN_1804f1690(param_1,&local_1c0,param_2,&DAT_18249efb4);
      uVar27 = CONCAT71((int7)((ulonglong)in_stack_fffffffffffffd98 >> 8),1);
      FUN_1804f0cc0(param_1,&local_228,uVar8);
      puVar14 = (uint *)(local_1c0 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      uVar8 = FUN_1804f1690(param_1,&local_1b8,param_2,&DAT_18249efb8,uVar27);
      uVar27 = uVar27 & 0xffffffffffffff00;
      FUN_1804f0cc0(param_1,&local_238,uVar8);
      puVar14 = (uint *)(local_1b8 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      uVar8 = FUN_1804f1690(param_1,&local_1b0,param_2,&DAT_18249f134,uVar27);
      uVar9 = 1;
      FUN_1804f0cc0(param_1,&local_1f0,uVar8);
      puVar14 = (uint *)(local_1b0 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      uVar8 = FUN_1804f1690(param_1,&local_1a8,param_2,&DAT_18249f130,uVar9);
      FUN_1804f0cc0(param_1,&local_200,uVar8);
      puVar14 = (uint *)(local_1a8 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      FUN_1804efb20(param_1,&local_258,param_2);
      local_218 = &DAT_1821dbf98;
      FUN_1804f1300(param_1,&local_208,param_2,"text-anchor",&local_218);
      puVar14 = (uint *)(local_218 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      local_248 = FUN_1811316e0(0xf0);
      uVar8 = FUN_1813327c0(local_248);
      local_248 = uVar8;
      FUN_1804eb420(uVar8,param_2);
      dVar20 = DAT_1824c4520;
      fVar5 = DAT_1824c3d8c;
      for (plVar4 = *(longlong **)(*param_2 + 8); plVar4 != (longlong *)0x0;
          plVar4 = (longlong *)*plVar4) {
        if (*(char *)plVar4[3] == '\0') {
          uVar9 = FUN_181220890();
          FUN_181248e40(uVar9,&local_250);
          local_e8 = FUN_1811316e0(0x100);
          lVar10 = FUN_18132fad0(local_e8);
          FUN_18134bf20(uVar8,lVar10,0xffffffff);
          lVar3 = local_250;
          if (*(longlong *)(lVar10 + 0xf0) == local_250) {
            iVar7 = 0;
          }
          else {
            iVar7 = FUN_18048cbc0(*(undefined8 *)(lVar10 + 0xf0),local_250);
          }
          if (iVar7 != 0) {
            if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
              LOCK();
              piVar1 = (int *)(lVar3 + -0x10);
              *piVar1 = *piVar1 + 1;
              UNLOCK();
            }
            LOCK();
            lVar3 = *(longlong *)(lVar10 + 0xf0);
            *(longlong *)(lVar10 + 0xf0) = local_250;
            UNLOCK();
            puVar14 = (uint *)(lVar3 + -0x10);
            if ((*puVar14 & 0x30000000) == 0) {
              LOCK();
              uVar2 = *puVar14;
              *puVar14 = *puVar14 - 1;
              UNLOCK();
              if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar14);
              }
            }
            FUN_18132f430(lVar10);
          }
          FUN_18132f6a0(lVar10,&local_258);
          if (param_4 == 0) {
            plVar11 = param_1 + 5;
          }
          else {
            plVar11 = (longlong *)FUN_1812a0a40(param_1 + 5,local_b8,param_4);
          }
          FUN_18134af50(lVar10,plVar11);
          FUN_18049c4e0(&local_210,&DAT_18249f074);
          plVar11 = &local_210;
          puVar12 = (undefined8 *)FUN_1804f1300(param_1,&local_190,param_2,"fill-opacity",plVar11);
          uVar19 = (undefined4)((ulonglong)plVar11 >> 0x20);
          local_1a0 = *puVar12;
          dVar21 = (double)FUN_18049bd80(&local_1a0);
          puVar14 = (uint *)FUN_1804f2100(param_1,local_1c8,param_2,&DAT_18249f004,
                                          CONCAT44(uVar19,DAT_18262b5b8));
          local_198 = (double)((float)(*puVar14 >> 0x18) * (float)dVar21) + dVar20;
          uVar16 = 0xff;
          if (SUB84(local_198,0) < 0xff) {
            uVar16 = SUB81(local_198,0);
          }
          local_res18 = CONCAT13(uVar16,(int3)*puVar14);
          FUN_18132f710(lVar10,local_res18);
          puVar14 = (uint *)(local_190 + -0x10);
          if ((*puVar14 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar14;
            *puVar14 = *puVar14 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar14);
            }
          }
          puVar14 = (uint *)(local_210 + -0x10);
          if ((*puVar14 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar14;
            *puVar14 = *puVar14 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar14);
            }
          }
          fVar26 = *(float *)(local_258 + 5);
          plVar11 = (longlong *)FUN_181252280(&local_258);
          fVar18 = (float)(**(code **)(*plVar11 + 0x28))(plVar11,&local_250);
          fVar25 = *(float *)(local_258 + 6);
          plVar11 = local_258;
          if (fVar25 != 0.0) {
            iVar7 = FUN_180493130(&local_250);
            fVar18 = fVar18 + (float)iVar7 * fVar25;
          }
          fVar25 = fVar18 * *(float *)(plVar11 + 5) * *(float *)((longlong)plVar11 + 0x2c);
          if (local_230._4_4_ == 0) {
            fVar18 = 0.0;
          }
          else {
            fVar18 = *local_238;
          }
          if (*(float *)((longlong)plVar11 + 0x34) == 0.0) {
            plVar13 = (longlong *)FUN_181252280(&local_258);
            plVar11 = local_258;
            uVar19 = (**(code **)(*plVar13 + 0x10))(plVar13);
            *(undefined4 *)((longlong)plVar11 + 0x34) = uVar19;
            plVar11 = local_258;
          }
          lVar3 = local_208;
          if (local_220._4_4_ == 0) {
            fVar22 = 0.0;
          }
          else {
            fVar22 = *local_228;
          }
          fVar18 = fVar18 - *(float *)((longlong)plVar11 + 0x34) * *(float *)(plVar11 + 5);
          iVar7 = FUN_18048cbc0(local_208,"middle");
          if (iVar7 == 0) {
            fVar22 = fVar22 - fVar25 * fVar5;
          }
          else {
            iVar7 = FUN_18048cbc0(lVar3,&DAT_18249f15c);
            if (iVar7 == 0) {
              fVar22 = fVar22 - fVar25;
            }
          }
          fVar25 = fVar22 + fVar25;
          fVar26 = fVar26 + fVar18;
          local_160 = CONCAT44(fVar26,fVar22);
          pfVar15 = (float *)(lVar10 + 0xc0);
          fVar23 = fVar18;
          fVar24 = fVar22;
          local_170 = fVar22;
          fStack_16c = fVar18;
          fStack_168 = fVar25;
          fStack_164 = fVar18;
          local_d8 = fVar22;
          fStack_d4 = fVar18;
          fStack_d0 = fVar25;
          fStack_cc = fVar18;
          local_c8 = local_160;
          cVar6 = FUN_18051b310(pfVar15,&local_d8);
          if (cVar6 != '\0') {
            *pfVar15 = fVar22;
            pfVar15[1] = fVar18;
            pfVar15[2] = fVar25;
            pfVar15[3] = fVar23;
            *(ulonglong *)(pfVar15 + 4) = CONCAT44(fVar26,fVar24);
            FUN_18132f430(lVar10);
          }
          puVar14 = (uint *)(local_250 + -0x10);
          uVar8 = local_248;
          if ((*puVar14 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar14;
            *puVar14 = *puVar14 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar14);
            }
          }
        }
        else {
          cVar6 = FUN_181220e10(plVar4,"tspan");
          if (cVar6 != '\0') {
            local_158 = plVar4;
            local_150 = param_2;
            uVar9 = FUN_1804ef190(param_1,&local_158,1,0);
            FUN_18134bf20(uVar8,uVar9,0xffffffff);
          }
        }
      }
      puVar14 = (uint *)(local_208 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      if (local_258 != (longlong *)0x0) {
        LOCK();
        plVar4 = local_258 + 1;
        lVar3 = *plVar4;
        *(int *)plVar4 = (int)*plVar4 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)*local_258)(local_258,1);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(local_200);
    }
    local_178 = 0;
  }
  return local_178;
}



############ FUN_ 1804eff90 size=2413 ############

/* WARNING: Removing unreachable block (ram,0x0001804f0880) */
/* WARNING: Removing unreachable block (ram,0x0001804f0891) */
/* WARNING: Removing unreachable block (ram,0x0001804f0899) */

undefined8 * FUN_1804eff90(longlong *param_1,longlong *param_2,char param_3,longlong param_4)

{
  int *piVar1;
  byte bVar2;
  byte bVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  byte bVar8;
  char cVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  undefined4 uVar14;
  undefined8 *puVar15;
  longlong *plVar16;
  undefined8 uVar17;
  uint *puVar18;
  byte *pbVar19;
  undefined8 *puVar20;
  undefined1 *puVar21;
  undefined8 *puVar22;
  longlong lVar23;
  int iVar24;
  undefined8 *local_278;
  byte *local_270;
  byte *local_268;
  longlong local_260;
  undefined8 *local_258;
  char *local_250;
  longlong local_248;
  longlong local_240;
  float local_238;
  float local_234;
  float local_230;
  float local_22c;
  undefined8 local_228;
  float local_220;
  undefined4 local_21c;
  undefined4 local_218;
  float local_214;
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  undefined8 *local_1e0;
  longlong local_1d8;
  uint *local_1d0;
  longlong *local_1c8;
  undefined8 *local_1c0;
  undefined8 *local_1b8;
  longlong local_1a8;
  longlong local_1a0;
  longlong lStack_198;
  longlong local_190;
  longlong lStack_188;
  undefined4 local_180;
  undefined4 uStack_17c;
  undefined4 uStack_178;
  undefined4 uStack_174;
  longlong local_170;
  longlong local_168;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  undefined1 local_138 [16];
  longlong *local_128;
  longlong local_110;
  ulonglong local_100;
  undefined1 local_e8 [24];
  undefined1 local_d0 [24];
  undefined1 local_b8 [24];
  undefined1 local_a0 [24];
  undefined1 local_88 [80];
  
  local_158 = 0xfffffffffffffffe;
  puVar15 = (undefined8 *)0x0;
  iVar24 = 0;
  if (param_3 != '\0') {
    for (puVar20 = *(undefined8 **)(*param_2 + 0x10); puVar22 = puVar15,
        puVar20 != (undefined8 *)0x0; puVar20 = (undefined8 *)*puVar20) {
      local_150 = puVar20[1];
      iVar10 = FUN_18048cbc0(local_150,"transform");
      puVar22 = puVar20;
      if (iVar10 == 0) break;
    }
    if (puVar22 != (undefined8 *)0x0) {
      local_1a8 = *param_1;
      if ((*(uint *)(local_1a8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_1a8 + -0x10) = *(int *)(local_1a8 + -0x10) + 1;
        UNLOCK();
      }
      local_1a0 = param_1[1];
      lStack_198 = param_1[2];
      local_190 = param_1[3];
      lStack_188 = param_1[4];
      local_180 = (undefined4)param_1[5];
      uStack_17c = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_178 = (undefined4)param_1[6];
      uStack_174 = *(undefined4 *)((longlong)param_1 + 0x34);
      local_170 = param_1[7];
      local_168 = param_1[8];
      if ((*(uint *)(local_168 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_168 + -0x10) = *(int *)(local_168 + -0x10) + 1;
        UNLOCK();
      }
      FUN_1804f0910(&local_1a8,param_2);
      puVar15 = (undefined8 *)FUN_1804eff90(&local_1a8,param_2,0,param_4);
      puVar18 = (uint *)(local_168 + -0x10);
      if ((*puVar18 & 0x30000000) == 0) {
        LOCK();
        uVar13 = *puVar18;
        *puVar18 = *puVar18 - 1;
        UNLOCK();
        if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar18);
        }
      }
      puVar18 = (uint *)(local_1a8 + -0x10);
      if ((*puVar18 & 0x30000000) != 0) {
        return puVar15;
      }
      LOCK();
      uVar13 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar13 != 0) {
        return puVar15;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  iVar10 = FUN_18049bb30(*(undefined8 *)(*param_2 + 0x18),&DAT_18249ef3c);
  if (iVar10 == 0) {
    lVar23 = *param_2;
    dVar4 = (double)FUN_181246d40(lVar23,&DAT_18249efb8);
    dVar5 = (double)FUN_181246d40(lVar23,&DAT_18249efb4);
    local_220 = (float)dVar5;
    local_228 = 0x3f800000;
    local_21c = 0;
    local_218 = 0x3f800000;
    local_1c0 = &local_228;
    local_1b8 = (undefined8 *)0x0;
    local_214 = (float)dVar4;
    local_1c8 = param_1;
    FUN_1804ecd50(&local_250,param_2);
    if (*local_250 != '\0') {
      FUN_18051f710(param_1 + 1,&local_250,&local_1c8);
    }
    puVar18 = (uint *)(local_250 + -0x10);
    if ((*puVar18 & 0x30000000) != 0) {
      return local_1b8;
    }
    LOCK();
    uVar13 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar13 != 0) {
      return local_1b8;
    }
                    /* WARNING: Subroutine does not return */
    free(puVar18);
  }
  iVar10 = FUN_18049bb30(*(undefined8 *)(*param_2 + 0x18),"image");
  if (iVar10 != 0) {
    return (undefined8 *)0x0;
  }
  plVar16 = (longlong *)FUN_181246db0(*param_2,"xlink:href");
  local_260 = *plVar16;
  local_1d0 = (uint *)(local_260 + -0x10);
  if ((*local_1d0 & 0x30000000) == 0) {
    LOCK();
    *local_1d0 = *local_1d0 + 1;
    UNLOCK();
  }
  local_278 = (undefined8 *)0x0;
  FUN_18124a4b0(local_138,0x100);
  lVar23 = local_260;
  pbVar19 = &DAT_18249f1a4;
  puVar20 = puVar15;
  while( true ) {
    while( true ) {
      bVar2 = *pbVar19;
      pbVar19 = pbVar19 + 1;
      if (-1 < (char)bVar2) break;
      if ((*pbVar19 & 0xc0) != 0x80) goto LAB_1804f0289;
      do {
        pbVar19 = pbVar19 + 1;
      } while ((*pbVar19 & 0xc0) == 0x80);
      puVar20 = (undefined8 *)((longlong)puVar20 + 1);
    }
    if (bVar2 == 0) break;
LAB_1804f0289:
    puVar20 = (undefined8 *)((longlong)puVar20 + 1);
  }
  iVar10 = FUN_18049da40(local_260,&DAT_18249f1a4,(ulonglong)puVar20 & 0xffffffff);
  if (iVar10 == 0) {
    iVar10 = FUN_181249270(&local_260,&DAT_182495df0);
    uVar17 = FUN_1812490c0(&local_260,&local_210,5,iVar10);
    FUN_181248e40(uVar17,&local_270);
    puVar18 = (uint *)(local_210 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    iVar11 = FUN_181249270(&local_270,&DAT_18249f1a0);
    pbVar19 = local_270;
    iVar12 = iVar11;
    if (iVar11 + 1 < 1) {
      local_268 = local_270;
      if ((*(uint *)(local_270 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_270 + -0x10) = *(int *)(local_270 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      for (; -1 < iVar12; iVar12 = iVar12 + -1) {
        bVar2 = *pbVar19;
        if (bVar2 == 0) {
          local_268 = &DAT_1821dbf98;
          goto LAB_1804f039e;
        }
        pbVar19 = pbVar19 + 1;
        if ((char)bVar2 < '\0') {
          bVar8 = 0x40;
          bVar3 = bVar2 & 0x40;
          while ((bVar3 != 0 && (8 < bVar8))) {
            pbVar19 = pbVar19 + 1;
            bVar8 = bVar8 >> 1;
            bVar3 = bVar2 & bVar8;
          }
        }
      }
      FUN_18049c9e0(&local_268);
    }
LAB_1804f039e:
    puVar20 = (undefined8 *)FUN_181248e40(&local_268,&local_208);
    iVar12 = FUN_18049bb30(*puVar20,"base64");
    puVar18 = (uint *)(local_208 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    puVar18 = (uint *)(local_268 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    if (iVar12 == 0) {
      uVar17 = FUN_1812490c0(&local_270,&local_200,0,iVar11);
      FUN_181248e40(uVar17,&local_248);
      lVar23 = local_248;
      puVar18 = (uint *)(local_200 + -0x10);
      if ((*puVar18 & 0x30000000) == 0) {
        LOCK();
        uVar13 = *puVar18;
        *puVar18 = *puVar18 - 1;
        UNLOCK();
        if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar18);
        }
      }
      iVar12 = FUN_18049bb30(local_248,"image/png");
      if ((iVar12 == 0) || (iVar12 = FUN_18049bb30(lVar23,"image/jpeg"), iVar12 == 0)) {
        uVar17 = FUN_1812491d0(&local_260,&local_1f8,iVar10 + 1);
        FUN_1812487f0(uVar17,&local_1f0,&DAT_18249f1c4);
        puVar18 = (uint *)(local_1f8 + -0x10);
        if ((*puVar18 & 0x30000000) == 0) {
          LOCK();
          uVar13 = *puVar18;
          *puVar18 = *puVar18 - 1;
          UNLOCK();
          if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar18);
          }
        }
        cVar9 = FUN_181247a90(local_138,local_1f0);
        if (cVar9 != '\0') {
          local_278 = (undefined8 *)FUN_1811316e0(0x30);
          if (local_128 != (longlong *)0x0) {
            if (local_100 < (ulonglong)local_128[1]) {
              *(undefined1 *)(*local_128 + local_100) = 0;
            }
            local_110 = *local_128;
          }
          *local_278 = juce::MemoryInputStream::vftable;
          local_278[1] = local_110;
          local_278[2] = local_100;
          local_278[3] = 0;
          local_278[4] = 0;
          local_278[5] = 0;
        }
        puVar18 = (uint *)(local_1f0 + -0x10);
        lVar23 = local_248;
        if ((*puVar18 & 0x30000000) == 0) {
          LOCK();
          uVar13 = *puVar18;
          *puVar18 = *puVar18 - 1;
          UNLOCK();
          if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar18);
          }
        }
      }
      puVar18 = (uint *)(lVar23 + -0x10);
      if ((*puVar18 & 0x30000000) == 0) {
        LOCK();
        uVar13 = *puVar18;
        *puVar18 = *puVar18 - 1;
        UNLOCK();
        if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar18);
        }
      }
    }
    puVar18 = (uint *)(local_270 + -0x10);
    uVar13 = *puVar18;
  }
  else {
    uVar17 = FUN_181241230(param_1,&local_1e8);
    FUN_181245100(uVar17,&local_240,lVar23);
    puVar18 = (uint *)(local_1e8 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    cVar9 = FUN_1812457c0(&local_240);
    if (cVar9 != '\0') {
      local_278 = (undefined8 *)FUN_18123fa60(&local_240);
    }
    puVar18 = (uint *)(local_240 + -0x10);
    uVar13 = *puVar18;
  }
  if ((uVar13 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  if ((local_278 != (undefined8 *)0x0) &&
     (FUN_18128e6a0(&local_258,local_278), local_258 != (undefined8 *)0x0)) {
    local_148 = FUN_1811316e0(0xe8);
    puVar15 = (undefined8 *)FUN_1813316f0(local_148);
    FUN_1804eb420(puVar15,param_2);
    iVar10 = 0;
    if (local_258 != (undefined8 *)0x0) {
      iVar10 = *(int *)(local_258 + 3);
    }
    lVar23 = *param_2;
    if (local_258 != (undefined8 *)0x0) {
      iVar24 = *(int *)((longlong)local_258 + 0x14);
    }
    dVar4 = (double)FUN_181246d40(lVar23,"height",(double)iVar10);
    dVar5 = (double)FUN_181246d40(lVar23,"width",(double)iVar24);
    dVar6 = (double)FUN_181246d40(lVar23,&DAT_18249efb8);
    dVar7 = (double)FUN_181246d40(lVar23,&DAT_18249efb4);
    local_238 = (float)dVar7;
    local_234 = (float)dVar6;
    local_230 = (float)dVar5;
    local_22c = (float)dVar4;
    uVar17 = FUN_181290d60(&local_258,&local_1e0,(int)dVar5,(int)dVar4);
    FUN_181331340(puVar15,uVar17);
    if (local_1e0 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_1e0 + 1);
      iVar24 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar24 == 1) {
        (**(code **)*local_1e0)(local_1e0,1);
      }
    }
    uVar17 = FUN_181246db0(*param_2,"preserveAspectRatio");
    uVar17 = FUN_181248e40(uVar17,&local_1d8);
    uVar14 = FUN_1804f1750(uVar17);
    FUN_181332820(puVar15,&local_238,uVar14);
    puVar18 = (uint *)(local_1d8 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    if (param_4 == 0) {
      uVar17 = FUN_18134bf70(puVar15,local_a0,param_1 + 5);
      puVar21 = local_88;
    }
    else {
      uVar17 = FUN_18134bf70(puVar15,local_e8,param_1 + 5);
      uVar17 = FUN_1812a0a40(uVar17,local_d0);
      puVar21 = local_b8;
    }
    uVar17 = FUN_1812a0a40(uVar17,puVar21);
    FUN_18134af50(puVar15,uVar17);
    if (local_258 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_258 + 1);
      iVar24 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar24 == 1) {
        (**(code **)*local_258)(local_258,1);
      }
    }
  }
  FUN_18124a420(local_138);
  if (local_278 != (undefined8 *)0x0) {
    (**(code **)*local_278)(local_278,1);
  }
  if ((*local_1d0 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *local_1d0;
    *local_1d0 = *local_1d0 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(local_1d0);
    }
  }
  return puVar15;
}



############ FUN_ 18051f240 size=352 ############

undefined8 FUN_18051f240(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  undefined8 *local_30;
  longlong *local_28;
  
  puVar6 = *(undefined8 **)(*param_1 + 8);
  do {
    if (puVar6 == (undefined8 *)0x0) {
      return 0;
    }
    local_30 = puVar6;
    local_28 = param_1;
    for (puVar1 = (undefined8 *)puVar6[2]; puVar1 != (undefined8 *)0x0;
        puVar1 = (undefined8 *)*puVar1) {
      iVar5 = FUN_18048cbc0(puVar1[1],&DAT_18249ef04);
      if (iVar5 == 0) {
        iVar5 = FUN_18048cbc0(puVar1[2],*param_2);
        if ((iVar5 == 0) && (iVar5 = FUN_18049bb30(puVar6[3],&DAT_18249ef44), iVar5 != 0)) {
          uVar2 = param_3[1];
          uVar3 = *param_3;
          cVar4 = FUN_181220e10(local_30,"clipPath");
          if (cVar4 == '\0') {
            return 0;
          }
          local_res8 = (undefined8 *)FUN_1811316e0(0xf0);
          puVar6 = (undefined8 *)FUN_1813327c0(local_res8);
          FUN_1804eb590(uVar3,&local_30,puVar6,0);
          if (0 < *(int *)((longlong)puVar6 + 0x4c)) {
            FUN_1804eb420(puVar6,&local_30);
            local_res8 = puVar6;
            FUN_181332ad0(uVar2,&local_res8);
            return 1;
          }
          if (puVar6 == (undefined8 *)0x0) {
            return 0;
          }
          (**(code **)*puVar6)(puVar6,1);
          return 0;
        }
        break;
      }
    }
    cVar4 = FUN_18051f240(&local_30,param_2,param_3);
    if (cVar4 != '\0') {
      return 1;
    }
    puVar6 = (undefined8 *)*puVar6;
  } while( true );
}



############ FUN_ 18123fa60 size=76 ############

undefined8 *
FUN_18123fa60(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x28);
  puVar2 = (undefined8 *)FUN_18123efe0(uVar1,param_1);
  if (*(char *)puVar2[4] != '\0') {
    (**(code **)*puVar2)(puVar2,1,(undefined8 *)*puVar2,param_4,uVar3);
    puVar2 = (undefined8 *)0x0;
  }
  return puVar2;
}



############ FUN_ 1812a1120 size=132 ############

undefined4 * FUN_1812a1120(undefined4 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0xff000000;
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = *param_2;
  puVar1[1] = param_2[1];
  *(undefined1 *)(puVar1 + 2) = *(undefined1 *)(param_2 + 2);
  FUN_1804aaeb0(puVar1 + 3,param_2 + 3);
  *(undefined8 **)(param_1 + 2) = puVar1;
  *(undefined8 *)(param_1 + 4) = 0;
  *(undefined8 *)(param_1 + 8) = 0;
  *(undefined8 *)(param_1 + 6) = 0x3f800000;
  *(undefined8 *)(param_1 + 10) = 0x3f800000;
  return param_1;
}



############ FUN_ 18132fad0 size=409 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_18132fad0(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  bool bVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  undefined8 *local_res10;
  undefined8 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  
  uVar8 = 0xfffffffffffffffe;
  puVar7 = param_1;
  FUN_1813331e0(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  *puVar7 = juce::DrawableText::vftable;
  puVar7[0x18] = 0;
  puVar7[0x19] = 0;
  puVar7[0x1a] = 0;
  FUN_181252d20(puVar7 + 0x1c);
  FUN_181252d20(param_1 + 0x1d);
  param_1[0x1e] = &DAT_1821dbf98;
  *(undefined4 *)(param_1 + 0x1f) = DAT_18262b5b8;
  *(undefined4 *)((longlong)param_1 + 0xfc) = 0x21;
  uVar5 = _UNK_1824c47fc;
  uVar10 = _UNK_1824c47f8;
  uVar4 = _UNK_1824c47f4;
  uVar9 = _DAT_1824c47f0;
  if ((((*(float *)(param_1 + 0x18) == 0.0) && (*(float *)((longlong)param_1 + 0xc4) == 0.0)) &&
      (*(float *)(param_1 + 0x19) == DAT_1824c44a8)) &&
     (((*(float *)((longlong)param_1 + 0xcc) == 0.0 && (*(float *)(param_1 + 0x1a) == 0.0)) &&
      (*(float *)((longlong)param_1 + 0xd4) == DAT_1824c442c)))) {
    bVar3 = true;
  }
  else {
    bVar3 = false;
  }
  if (!bVar3) {
    *(undefined4 *)(param_1 + 0x18) = _DAT_1824c47f0;
    *(undefined4 *)((longlong)param_1 + 0xc4) = uVar4;
    *(undefined4 *)(param_1 + 0x19) = uVar10;
    *(undefined4 *)((longlong)param_1 + 0xcc) = uVar5;
    param_1[0x1a] = 0x41a0000000000000;
    FUN_18132f430(param_1);
  }
  uVar6 = FUN_1811316e0(0x40);
  puVar7 = (undefined8 *)FUN_1804a2b80(uVar6,0,DAT_1824c4418,param_4,uVar8,uVar9,uVar10);
  if (puVar7 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar7 + 1) = *(int *)(puVar7 + 1) + 1;
    UNLOCK();
  }
  local_res10 = puVar7;
  FUN_18132f6a0(param_1,&local_res10);
  if (puVar7 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar7 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar7)(puVar7,1);
    }
  }
  return param_1;
}



############ FUN_ 181329360 size=1065 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181329360(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined1 param_5,undefined4 param_6,longlong param_7)

{
  undefined ***pppuVar1;
  longlong lVar2;
  undefined ***pppuVar3;
  undefined1 auStack_118 [32];
  undefined4 local_f8;
  undefined8 local_e8;
  longlong *local_e0;
  undefined8 local_d8;
  undefined **local_c8;
  longlong *local_c0;
  undefined ***local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_e8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_e0 = param_1;
  FUN_1812cfab0(param_1,param_2,param_6,param_7 == 0);
  *param_1 = (longlong)juce::FileChooserDialogBox::vftable;
  param_1[0x28] = (longlong)juce::FileChooserDialogBox::vftable;
  *(undefined1 *)(param_1 + 0x2a) = param_5;
  local_d8 = FUN_1811316e0(0x638);
  lVar2 = FUN_1804f3d50(local_d8,param_2,param_3,param_4);
  param_1[0x29] = lVar2;
  FUN_1812cf600(param_1,lVar2,1,0);
  FUN_1812cec00(param_1,1);
  local_f8 = 1000;
  FUN_1812cea70(param_1,300,300,0x4b0);
  lVar2 = param_1[0x29];
  pppuVar3 = (undefined ***)(lVar2 + 0x178);
  local_c8 = std::_Func_impl_no_alloc<<lambda_52b54301a466331a003a117599ff9e1c>,void>::vftable;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_c0 = param_1;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824aa780)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar1 = *(undefined ****)(lVar2 + 0x1b0);
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == pppuVar3) {
      local_90 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_c8);
      pppuVar1 = *(undefined ****)(lVar2 + 0x1b0);
      if (pppuVar1 == (undefined ***)0x0) goto LAB_1813294e2;
      (*(code *)(*pppuVar1)[4])(pppuVar1,pppuVar1 != pppuVar3);
      pppuVar1 = local_90;
    }
    local_90 = pppuVar1;
    *(undefined8 *)(lVar2 + 0x1b0) = 0;
  }
LAB_1813294e2:
  FUN_180488560(pppuVar3,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  lVar2 = param_1[0x29];
  pppuVar3 = (undefined ***)(lVar2 + 0x340);
  local_c8 = std::_Func_impl_no_alloc<<lambda_0ed69c026b4d974a3f489e3d46e694c2>,void>::vftable;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_c0 = param_1;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824a1c38)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar1 = *(undefined ****)(lVar2 + 0x378);
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == pppuVar3) {
      local_90 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_c8);
      pppuVar1 = *(undefined ****)(lVar2 + 0x378);
      if (pppuVar1 == (undefined ***)0x0) goto LAB_1813295db;
      (*(code *)(*pppuVar1)[4])(pppuVar1,pppuVar1 != pppuVar3);
      pppuVar1 = local_90;
    }
    local_90 = pppuVar1;
    *(undefined8 *)(lVar2 + 0x378) = 0;
  }
LAB_1813295db:
  FUN_180488560(pppuVar3,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  lVar2 = param_1[0x29];
  pppuVar3 = (undefined ***)(lVar2 + 0x508);
  local_c8 = std::_Func_impl_no_alloc<<lambda_3ba439bf89ce10841c527a1bcaa2fb69>,void>::vftable;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_c0 = param_1;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824a14a8)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar1 = *(undefined ****)(lVar2 + 0x540);
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == pppuVar3) {
      local_90 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_c8);
      pppuVar1 = *(undefined ****)(lVar2 + 0x540);
      if (pppuVar1 == (undefined ***)0x0) goto LAB_1813296d4;
      (*(code *)(*pppuVar1)[4])(pppuVar1,pppuVar1 != pppuVar3);
      pppuVar1 = local_90;
    }
    local_90 = pppuVar1;
    *(undefined8 *)(lVar2 + 0x540) = 0;
  }
LAB_1813296d4:
  FUN_180488560(pppuVar3,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  FUN_18051ae50(*(longlong *)(param_1[0x29] + 0xb0) + 0x110,param_1 + 0x28);
  FUN_1813290e0(param_1 + 0x28);
  if (param_7 != 0) {
    (**(code **)(*param_1 + 0x58))(param_1,1);
    FUN_181343cc0(param_7,param_1,0xffffffff);
  }
}



############ FUN_ 1812cec00 size=849 ############

void FUN_1812cec00(longlong *param_1,char param_2,char param_3)

{
  undefined8 *puVar1;
  code *pcVar2;
  bool bVar3;
  char cVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  longlong lVar7;
  undefined8 *puVar8;
  longlong lVar9;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  
  lVar9 = 0;
  if (param_2 == '\0') {
    puVar1 = (undefined8 *)param_1[0x18];
    param_1[0x18] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    puVar1 = (undefined8 *)param_1[0x19];
    param_1[0x19] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
  }
  else if (param_3 == '\0') {
    puVar1 = (undefined8 *)param_1[0x18];
    param_1[0x18] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    if (param_1[0x19] == 0) {
      puVar8 = (undefined8 *)FUN_1811316e0(0xe8);
      lVar7 = param_1[0x27];
      puVar8[1] = &DAT_1821dbf98;
      puVar8[2] = &DAT_1821dbf98;
      puVar8[3] = 0;
      puVar8[4] = 0;
      puVar8[5] = 0;
      puVar8[6] = 0;
      puVar8[7] = 0;
      puVar8[8] = 0;
      puVar8[9] = 0;
      puVar8[10] = 0;
      puVar8[0xb] = 0;
      puVar8[0xc] = 0;
      puVar8[0xd] = 0;
      puVar8[0xe] = 0;
      puVar8[0xf] = 0;
      puVar8[0x10] = 0;
      puVar8[0x11] = 0;
      puVar8[0x12] = 0;
      puVar8[0x13] = 0;
      puVar8[0x14] = 0;
      *(undefined4 *)(puVar8 + 0x15) = 0;
      *(undefined1 *)((longlong)puVar8 + 0xac) = 0;
      *puVar8 = juce::ResizableBorderComponent::vftable;
      FUN_1804de690(puVar8 + 0x16,param_1);
      puVar8[0x17] = lVar7;
      *(undefined4 *)(puVar8 + 0x18) = 5;
      *(undefined4 *)((longlong)puVar8 + 0xc4) = 5;
      *(undefined4 *)(puVar8 + 0x19) = 5;
      *(undefined8 *)((longlong)puVar8 + 0xcc) = 5;
      *(undefined8 *)((longlong)puVar8 + 0xd4) = 0;
      *(undefined8 *)((longlong)puVar8 + 0xdc) = 0;
      puVar1 = (undefined8 *)param_1[0x19];
      param_1[0x19] = (longlong)puVar8;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      if (param_1[0x19] != 0) {
        FUN_181343cc0(param_1,param_1[0x19],0xffffffff);
      }
    }
  }
  else {
    puVar1 = (undefined8 *)param_1[0x19];
    param_1[0x19] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    if (param_1[0x18] == 0) {
      uVar6 = FUN_1811316e0(0xd0);
      lVar7 = FUN_1813490d0(uVar6,param_1,param_1[0x27]);
      puVar1 = (undefined8 *)param_1[0x18];
      param_1[0x18] = lVar7;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      if (param_1[0x18] != 0) {
        FUN_181343cc0(param_1,param_1[0x18],0xffffffff);
      }
      FUN_18134b0f0(param_1[0x18],1);
    }
  }
  if ((*(char *)((longlong)param_1 + 0xb1) == '\0') ||
     (((*(byte *)(param_1 + 0x15) & 1) == 0 && (cVar4 = FUN_181345240(param_1), cVar4 != '\0')))) {
    bVar3 = false;
  }
  else {
    bVar3 = true;
  }
  if ((bVar3) && ((*(byte *)(param_1 + 0x15) & 1) != 0)) {
    uVar5 = (**(code **)(*param_1 + 0x160))(param_1);
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar5,0);
    FUN_181344f60(param_1,1);
  }
  lVar7 = lVar9;
  if (param_1[0x1a] != 0) {
    lVar7 = *(longlong *)(param_1[0x1a] + 0x10);
  }
  pcVar2 = *(code **)(*param_1 + 0x118);
  if (pcVar2 == FUN_1812cf070) {
    if (param_1[0x1a] != 0) {
      lVar9 = *(longlong *)(param_1[0x1a] + 0x10);
    }
    if (((lVar7 == lVar9) && (lVar7 != 0)) && (*(char *)((longlong)param_1 + 0xe1) != '\0')) {
      (**(code **)(*param_1 + 0x170))(param_1,&local_30);
      FUN_18134bfe0(param_1,(int)param_1[4],*(undefined4 *)((longlong)param_1 + 0x24),
                    *(int *)(lVar7 + 0x28) + local_24 + local_2c,
                    *(int *)(lVar7 + 0x2c) + local_30 + local_28);
    }
  }
  else {
    (*pcVar2)(param_1,lVar7);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812cef40. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x108))(param_1);
  return;
}



############ FUN_ 1812d8fe0 size=625 ############

undefined8 * FUN_1812d8fe0(undefined8 *param_1)

{
  longlong *plVar1;
  uint uVar2;
  undefined8 *puVar3;
  bool bVar4;
  undefined8 *local_res18;
  
  puVar3 = param_1;
  FUN_1813453e0();
  puVar3[0x17] = &DAT_1821dbf98;
  *puVar3 = juce::TreeView::vftable;
  puVar3[0x16] = juce::TreeView::vftable;
  puVar3[0x18] = juce::TreeView::vftable;
  puVar3[0x19] = juce::TreeView::vftable;
  puVar3 = (undefined8 *)FUN_1811316e0(0x1c0);
  local_res18 = (undefined8 *)&DAT_1821dbf98;
  FUN_18134a630(puVar3,&local_res18);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *puVar3 = juce::TreeView::TreeViewport::vftable;
  puVar3[0x16] = juce::TreeView::TreeViewport::vftable;
  puVar3[0x17] = juce::TreeView::TreeViewport::vftable;
  *(undefined4 *)(puVar3 + 0x37) = 0xffffffff;
  param_1[0x1a] = puVar3;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1b));
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  *(undefined4 *)(param_1 + 0x24) = 0xffffffff;
  *(undefined4 *)((longlong)param_1 + 0x124) = 0x10100;
  *(undefined1 *)(param_1 + 0x25) = 1;
  plVar1 = (longlong *)param_1[0x1a];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x58))(plVar1,1);
    FUN_181343cc0(param_1,plVar1,0xffffffff);
  }
  puVar3 = (undefined8 *)FUN_1811316e0(0xf0);
  *puVar3 = juce::Component::vftable;
  puVar3[1] = &DAT_1821dbf98;
  puVar3[2] = &DAT_1821dbf98;
  puVar3[3] = 0;
  puVar3[4] = 0;
  puVar3[5] = 0;
  puVar3[6] = 0;
  puVar3[7] = 0;
  puVar3[8] = 0;
  puVar3[9] = 0;
  puVar3[10] = 0;
  puVar3[0xb] = 0;
  puVar3[0xc] = 0;
  puVar3[0xd] = 0;
  puVar3[0xe] = 0;
  puVar3[0xf] = 0;
  puVar3[0x10] = 0;
  puVar3[0x11] = 0;
  puVar3[0x12] = 0;
  puVar3[0x13] = 0;
  puVar3[0x14] = 0;
  *(undefined4 *)(puVar3 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar3 + 0xac) = 0;
  puVar3[0x16] = juce::TooltipClient::vftable;
  local_res18 = puVar3;
  FUN_1812a59f0(puVar3 + 0x17);
  *puVar3 = juce::TreeView::ContentComponent::vftable;
  puVar3[0x16] = juce::TreeView::ContentComponent::vftable;
  puVar3[0x17] = juce::TreeView::ContentComponent::vftable;
  puVar3[0x19] = param_1;
  puVar3[0x1a] = 0;
  puVar3[0x1b] = 0;
  puVar3[0x1c] = 0;
  *(undefined2 *)(puVar3 + 0x1d) = 0;
  FUN_18134a370(param_1[0x1a],puVar3,1);
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x20;
  return param_1;
}



############ FUN_ 1812dc240 size=1332 ############

void FUN_1812dc240(longlong param_1,undefined8 param_2,longlong param_3,int param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  longlong lVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  longlong lVar12;
  ulonglong uVar13;
  int iVar14;
  ulonglong uVar15;
  longlong *plVar16;
  longlong lVar17;
  void *pvVar18;
  void *pvVar19;
  int iVar20;
  uint uVar21;
  ulonglong uVar22;
  int iVar24;
  longlong *local_88;
  void *local_58;
  int local_50;
  uint local_4c;
  void *pvVar23;
  
  iVar14 = (int)((ulonglong)param_2 >> 0x20);
  iVar10 = (int)param_2;
  if (iVar10 != iVar14) {
    uVar13 = 0;
    if (0 < *(int *)(param_1 + 0x2b4)) {
      uVar15 = uVar13;
      uVar22 = uVar13;
      iVar9 = 0;
      do {
        iVar24 = iVar9 + 1;
        iVar20 = (int)uVar22;
        lVar17 = *(longlong *)(uVar13 + *(longlong *)(param_1 + 0x2a8));
        iVar11 = 0;
        lVar6 = *(longlong *)(lVar17 + 0x10);
        lVar17 = (longlong)*(int *)(lVar17 + 0x1c) * 0x10 + lVar6;
        for (; lVar6 != lVar17; lVar6 = lVar6 + 0x10) {
          iVar11 = iVar11 + *(int *)(lVar6 + 0xc);
        }
        iVar4 = (int)uVar15;
        uVar5 = iVar11 + iVar4;
        if (((iVar4 < iVar10) && (iVar11 = iVar10, iVar10 < (int)uVar5)) ||
           ((iVar4 < iVar14 && (iVar11 = iVar14, iVar14 < (int)uVar5)))) {
          uVar7 = FUN_180506840(*(undefined8 *)(uVar13 + *(longlong *)(param_1 + 0x2a8)),
                                iVar11 - iVar4);
          FUN_18051b0d0(param_1 + 0x2a8,iVar24,uVar7);
          iVar20 = iVar20 + -1;
          uVar13 = uVar13 - 8;
          iVar24 = iVar9;
        }
        else {
          uVar15 = (ulonglong)uVar5;
          if (iVar14 < (int)uVar5) break;
        }
        uVar22 = (ulonglong)(iVar20 + 1U);
        uVar13 = uVar13 + 8;
        iVar9 = iVar24;
      } while ((int)(iVar20 + 1U) < *(int *)(param_1 + 0x2b4));
    }
    pvVar18 = (void *)0x0;
    if (param_3 != 0) {
      local_58 = (void *)0x0;
      local_50 = 0;
      local_4c = 0;
      plVar16 = *(longlong **)(param_1 + 0x2a8);
      plVar2 = plVar16 + *(int *)(param_1 + 0x2b4);
      pvVar19 = pvVar18;
      pvVar23 = pvVar18;
      while ((uVar5 = (uint)pvVar18, plVar16 != plVar2 && (lVar17 = *plVar16, iVar10 < iVar14))) {
        iVar9 = 0;
        lVar6 = *(longlong *)(lVar17 + 0x10);
        lVar12 = (longlong)*(int *)(lVar17 + 0x1c) * 0x10 + lVar6;
        for (; lVar6 != lVar12; lVar6 = lVar6 + 0x10) {
          iVar9 = iVar9 + *(int *)(lVar6 + 0xc);
        }
        iVar11 = (int)pvVar23;
        uVar21 = iVar9 + iVar11;
        pvVar23 = (void *)(ulonglong)uVar21;
        if ((iVar10 <= iVar11) && ((int)uVar21 <= iVar14)) {
          uVar7 = FUN_1811316e0(0x28);
          uVar7 = FUN_180508fb0(uVar7,lVar17);
          iVar9 = uVar5 + 1;
          if (local_50 < iVar9) {
            iVar11 = iVar9;
            if (iVar9 < 0) {
              iVar11 = uVar5 + 2;
            }
            FUN_18047cb30(&local_58,iVar9 + (iVar11 >> 1) + 8 & 0xfffffff8);
            pvVar19 = local_58;
            uVar5 = local_4c;
          }
          local_4c = uVar5 + 1;
          pvVar18 = (void *)(ulonglong)local_4c;
          *(undefined8 *)((longlong)pvVar19 + (longlong)(int)uVar5 * 8) = uVar7;
        }
        plVar16 = plVar16 + 1;
      }
      if ((((*(char *)(param_3 + 0x70) == '\0') &&
           (uVar21 = *(int *)(param_3 + 0x6c) - 1, uVar21 < *(uint *)(param_3 + 0x44))) &&
          (lVar17 = *(longlong *)(*(longlong *)(param_3 + 0x38) + (longlong)(int)uVar21 * 8),
          lVar17 != 0)) && (100 < *(int *)(lVar17 + 0xc))) {
        uVar5 = DAT_1826737fc;
        if (DAT_1826737fc == 0) {
          uVar5 = timeGetTime();
          if (uVar5 < DAT_1826737fc) {
            if (uVar5 < DAT_1826737fc - 1000) {
              LOCK();
              UNLOCK();
              DAT_1826737fc = uVar5;
            }
          }
          else {
            LOCK();
            UNLOCK();
            DAT_1826737fc = uVar5;
          }
        }
        *(uint *)(param_1 + 0x290) = uVar5;
        FUN_181352640(param_1 + 0x200);
        uVar5 = local_4c;
      }
      puVar8 = (undefined8 *)FUN_1811316e0(0x30);
      uVar3 = *(undefined4 *)(param_1 + 0x2a4);
      *puVar8 = juce::TextEditor::RemoveAction::vftable;
      puVar8[1] = param_1;
      puVar8[2] = param_2;
      *(undefined4 *)(puVar8 + 3) = uVar3;
      *(int *)((longlong)puVar8 + 0x1c) = param_4;
      puVar8[4] = 0;
      puVar8[5] = 0;
      if (0 < (int)uVar5) {
        FUN_18047cb30(puVar8 + 4,uVar5 + 8 + (int)uVar5 / 2 & 0xfffffff8);
      }
      memcpy((void *)(puVar8[4] + (longlong)*(int *)((longlong)puVar8 + 0x2c) * 8),local_58,
             (longlong)(int)uVar5 << 3);
      *(int *)((longlong)puVar8 + 0x2c) = *(int *)((longlong)puVar8 + 0x2c) + uVar5;
      FUN_1813526d0(param_3,puVar8);
                    /* WARNING: Subroutine does not return */
      free(local_58);
    }
    if (0 < *(int *)(param_1 + 0x2b4)) {
      plVar2 = (longlong *)(param_1 + 0x2a8);
      pvVar19 = pvVar18;
      pvVar23 = pvVar18;
      do {
        iVar9 = 0;
        uVar5 = (uint)pvVar19;
        lVar17 = *(longlong *)(*(longlong *)((longlong)pvVar18 + *plVar2) + 0x10);
        lVar6 = (longlong)*(int *)(*(longlong *)((longlong)pvVar18 + *plVar2) + 0x1c) * 0x10 +
                lVar17;
        for (; lVar17 != lVar6; lVar17 = lVar17 + 0x10) {
          iVar9 = iVar9 + *(int *)(lVar17 + 0xc);
        }
        iVar11 = (int)pvVar23;
        uVar21 = iVar9 + iVar11;
        if ((iVar11 < iVar10) || (iVar14 < (int)uVar21)) {
          pvVar23 = (void *)(ulonglong)uVar21;
        }
        else {
          local_88 = (longlong *)0x0;
          if (uVar5 < *(uint *)(param_1 + 0x2b4)) {
            local_88 = *(longlong **)(*plVar2 + (longlong)pvVar18);
            pvVar19 = (void *)(*plVar2 + (longlong)(int)uVar5 * 8);
            memmove(pvVar19,(void *)((longlong)pvVar19 + 8),
                    (longlong)(int)((*(uint *)(param_1 + 0x2b4) - uVar5) + -1) << 3);
            *(int *)(param_1 + 0x2b4) = *(int *)(param_1 + 0x2b4) + -1;
          }
          if ((*(int *)(param_1 + 0x2b4) * 2 < *(int *)(param_1 + 0x2b0)) &&
             (*(int *)(param_1 + 0x2b4) < *(int *)(param_1 + 0x2b0))) {
            FUN_18047cb30(plVar2);
          }
          if (local_88 != (longlong *)0x0) {
            FUN_18051a4c0(local_88 + 2);
            puVar8 = (undefined8 *)*local_88;
            if (puVar8 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar8 + 1);
              iVar14 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar14 == 1) {
                (**(code **)*puVar8)(puVar8,1);
              }
            }
                    /* WARNING: Subroutine does not return */
            free(local_88);
          }
          iVar14 = (iVar14 - uVar21) + iVar11;
          if ((iVar14 < iVar10) || (iVar14 == iVar10)) break;
          uVar5 = uVar5 - 1;
          pvVar18 = (void *)((longlong)pvVar18 - 8);
        }
        pvVar19 = (void *)(ulonglong)(uVar5 + 1);
        pvVar18 = (void *)((longlong)pvVar18 + 8);
      } while ((int)(uVar5 + 1) < *(int *)(param_1 + 0x2b4));
    }
    FUN_1812db150(param_1);
    *(undefined4 *)(param_1 + 0x2a0) = 0xffffffff;
    *(undefined1 *)(param_1 + 0x1f8) = 1;
    *(undefined4 *)(param_1 + 0x2f8) = 0;
    FUN_1812e0940(param_1,*(undefined8 *)(param_1 + 0x280));
    iVar14 = 0;
    if ((-1 < param_4) && (iVar9 = FUN_1812dbb90(param_1), iVar14 = param_4, iVar9 < param_4)) {
      iVar14 = iVar9;
    }
    if (iVar14 != *(int *)(param_1 + 0x2a4)) {
      *(int *)(param_1 + 0x2a4) = iVar14;
      FUN_1812a77d0(*(longlong *)(param_1 + 0x1d0) + 0xb0,0x15e);
      FUN_1812e0240(param_1);
      FUN_1812e16d0(param_1);
    }
    *(ulonglong *)(param_1 + 0x280) =
         CONCAT44(*(undefined4 *)(param_1 + 0x2a4),*(undefined4 *)(param_1 + 0x2a4));
    iVar9 = FUN_1812dbb90(param_1);
    iVar14 = iVar10;
    if (iVar10 < iVar9) {
      iVar14 = iVar9;
    }
    FUN_1812e0940(param_1,CONCAT44(iVar14,iVar10));
  }
  return;
}



############ FUN_ 180506840 size=1547 ############

longlong * FUN_180506840(longlong *param_1,int param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  byte bVar3;
  undefined4 uVar4;
  int iVar5;
  byte bVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 *puVar9;
  byte bVar10;
  int iVar11;
  longlong *plVar12;
  undefined8 uVar13;
  int iVar14;
  ulonglong uVar15;
  uint *puVar16;
  byte *pbVar17;
  byte *pbVar18;
  uint *puVar19;
  uint uVar20;
  byte *pbVar21;
  undefined8 *puVar22;
  longlong *plVar23;
  uint uVar24;
  uint uVar25;
  longlong lVar26;
  uint uVar27;
  ulonglong uVar28;
  ulonglong uVar29;
  uint uVar30;
  ulonglong uVar31;
  bool bVar32;
  undefined4 uVar33;
  uint local_res18;
  byte *local_c8;
  undefined8 *local_c0;
  byte *local_b8;
  undefined4 local_b0;
  uint local_ac;
  undefined1 *local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  uint *local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong local_68;
  longlong local_58;
  
  local_78 = 0xfffffffffffffffe;
  uVar31 = 0;
  plVar12 = (longlong *)FUN_1811316e0(0x28);
  local_a8 = &DAT_1821dbf98;
  lVar7 = param_1[4];
  lVar8 = param_1[1];
  lVar26 = *param_1;
  *plVar12 = lVar26;
  if (lVar26 != 0) {
    LOCK();
    *(int *)(lVar26 + 8) = *(int *)(lVar26 + 8) + 1;
    UNLOCK();
  }
  *(int *)(plVar12 + 1) = (int)lVar8;
  plVar1 = plVar12 + 2;
  *plVar1 = 0;
  plVar12[3] = 0;
  *(int *)(plVar12 + 4) = (int)lVar7;
  local_80 = plVar12;
  FUN_180506e50(plVar12,&local_a8);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar27 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar32 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar27;
    if (bVar32) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_res18 = 0;
  plVar2 = param_1 + 2;
  if (0 < *(int *)((longlong)param_1 + 0x1c)) {
    uVar15 = uVar31;
    uVar28 = uVar31;
    uVar29 = uVar31;
    do {
      uVar27 = (uint)uVar29;
      local_c0 = (undefined8 *)(uVar15 + *plVar2);
      iVar11 = (int)uVar28;
      uVar20 = *(int *)((longlong)local_c0 + 0xc) + iVar11;
      if (iVar11 == param_2) {
        if ((int)uVar27 < *(int *)((longlong)param_1 + 0x1c)) {
          lVar26 = (longlong)(int)uVar27 << 4;
          do {
            lVar7 = *plVar2;
            local_58 = *(longlong *)(lVar26 + lVar7);
            if ((*(uint *)(local_58 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_58 + -0x10) = *(int *)(local_58 + -0x10) + 1;
              UNLOCK();
            }
            uVar33 = *(undefined4 *)(lVar26 + 8 + lVar7);
            uVar4 = *(undefined4 *)(lVar26 + 0xc + lVar7);
            iVar14 = *(int *)((longlong)plVar12 + 0x1c);
            iVar11 = iVar14 + 1;
            if ((int)plVar12[3] < iVar11) {
              if (iVar11 < 0) {
                iVar11 = iVar14 + 2;
              }
              FUN_18051d4f0(plVar1,iVar14 + 9 + (iVar11 >> 1) & 0xfffffff8);
            }
            iVar11 = *(int *)((longlong)plVar12 + 0x1c);
            *(int *)((longlong)plVar12 + 0x1c) = iVar11 + 1;
            plVar23 = (longlong *)((longlong)iVar11 * 0x10 + *plVar1);
            *plVar23 = local_58;
            *(undefined4 *)(plVar23 + 1) = uVar33;
            *(undefined4 *)((longlong)plVar23 + 0xc) = uVar4;
            if ((DAT_1821dbf88 & 0x30000000) == 0) {
              LOCK();
              uVar27 = DAT_1821dbf88 - 1;
              UNLOCK();
              bVar32 = DAT_1821dbf88 == 0;
              DAT_1821dbf88 = uVar27;
              if (bVar32) {
                    /* WARNING: Subroutine does not return */
                free(&DAT_1821dbf88);
              }
            }
            uVar20 = (int)uVar29 + 1;
            uVar29 = (ulonglong)uVar20;
            lVar26 = lVar26 + 0x10;
            uVar27 = local_res18;
          } while ((int)uVar20 < *(int *)((longlong)param_1 + 0x1c));
        }
        uVar20 = *(uint *)((longlong)param_1 + 0x1c);
        uVar24 = *(int *)((longlong)param_1 + 0x1c) + uVar27;
        uVar30 = 0;
        uVar25 = uVar30;
        if ((-1 < (int)uVar24) && (uVar25 = uVar24, (int)uVar20 < (int)uVar24)) {
          uVar25 = uVar20;
        }
        uVar24 = uVar30;
        if ((-1 < (int)uVar27) && (uVar24 = uVar27, (int)uVar20 < (int)uVar27)) {
          uVar24 = uVar20;
        }
        iVar11 = uVar25 - uVar24;
        if (iVar11 < 1) {
          return local_80;
        }
        FUN_18051fd30(plVar2,uVar24,iVar11);
        *(int *)((longlong)param_1 + 0x1c) = *(int *)((longlong)param_1 + 0x1c) - iVar11;
        iVar11 = *(int *)((longlong)param_1 + 0x1c);
        if (0 < iVar11 * 2) {
          uVar30 = iVar11 * 2;
        }
        if ((int)param_1[3] <= (int)uVar30) {
          return local_80;
        }
        if (iVar11 < 4) {
          iVar11 = 4;
        }
        if ((int)param_1[3] <= iVar11) {
          return local_80;
        }
        FUN_18051d4f0(plVar2);
        return local_80;
      }
      if ((iVar11 < param_2) && (param_2 < (int)uVar20)) {
        local_b8 = &DAT_1821dbf98;
        iVar11 = param_2 - iVar11;
        if (iVar11 < 1) {
          local_c8 = (byte *)*local_c0;
          if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
            UNLOCK();
          }
          goto LAB_1805069ec;
        }
        pbVar21 = (byte *)*local_c0;
        iVar14 = iVar11;
        goto joined_r0x0001805069a6;
      }
      uVar28 = (ulonglong)uVar20;
      local_res18 = uVar27 + 1;
      uVar29 = (ulonglong)local_res18;
      uVar15 = uVar15 + 0x10;
    } while ((int)local_res18 < *(int *)((longlong)param_1 + 0x1c));
  }
  return local_80;
joined_r0x0001805069a6:
  iVar14 = iVar14 + -1;
  if (-1 < iVar14) {
    bVar3 = *pbVar21;
    if (bVar3 == 0) {
      local_c8 = &DAT_1821dbf98;
      goto LAB_1805069ec;
    }
    pbVar21 = pbVar21 + 1;
    if ((char)bVar3 < '\0') {
      bVar10 = 0x40;
      bVar6 = bVar3 & 0x40;
      while ((bVar6 != 0 && (8 < bVar10))) {
        pbVar21 = pbVar21 + 1;
        bVar10 = bVar10 >> 1;
        bVar6 = bVar3 & bVar10;
      }
    }
    goto joined_r0x0001805069a6;
  }
  FUN_18049c9e0(&local_c8);
LAB_1805069ec:
  local_b8 = local_c8;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar20 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar32 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar20;
    if (bVar32) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  uVar13 = FUN_180506630(&local_b8,&local_a0,(int)param_1[4]);
  local_b0 = FUN_1812518d0(param_1,uVar13);
  pbVar21 = local_c8;
  puVar16 = (uint *)(local_a0 + -0x10);
  pbVar17 = local_c8;
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar20 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar20 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  do {
    while( true ) {
      pbVar18 = pbVar17 + 1;
      if (-1 < (char)*pbVar17) break;
      if ((*pbVar18 & 0xc0) != 0x80) goto LAB_180506aa1;
      do {
        pbVar18 = pbVar18 + 1;
      } while ((*pbVar18 & 0xc0) == 0x80);
      uVar31 = uVar31 + 1;
      pbVar17 = pbVar18;
    }
    if (*pbVar17 == 0) {
      local_ac = (uint)uVar31 & 0xffff;
      iVar14 = *(int *)((longlong)plVar12 + 0x1c) + 1;
      if ((int)plVar12[3] < iVar14) {
        FUN_18051d4f0(plVar1,*(int *)((longlong)plVar12 + 0x1c) + 9 + iVar14 / 2 & 0xfffffff8);
      }
      puVar9 = local_c0;
      iVar14 = *(int *)((longlong)plVar12 + 0x1c);
      *(int *)((longlong)plVar12 + 0x1c) = iVar14 + 1;
      puVar22 = (undefined8 *)((longlong)iVar14 * 0x10 + *plVar1);
      *puVar22 = pbVar21;
      puVar16 = (uint *)(pbVar21 + -0x10);
      if ((*puVar16 & 0x30000000) == 0) {
        LOCK();
        *puVar16 = *puVar16 + 1;
        UNLOCK();
      }
      *(undefined4 *)(puVar22 + 1) = local_b0;
      *(uint *)((longlong)puVar22 + 0xc) = local_ac;
      local_88 = puVar16;
      puVar22 = (undefined8 *)FUN_1812490c0(local_c0,&local_98,0,iVar11);
      local_70 = *puVar9;
      *puVar9 = *puVar22;
      *puVar22 = local_70;
      puVar19 = (uint *)(local_98 + -0x10);
      if ((*puVar19 & 0x30000000) == 0) {
        LOCK();
        uVar20 = *puVar19;
        *puVar19 = *puVar19 - 1;
        UNLOCK();
        if (uVar20 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar19);
        }
      }
      uVar13 = FUN_180506630(local_c0,&local_90,(int)param_1[4]);
      uVar33 = FUN_1812518d0(param_1,uVar13);
      *(undefined4 *)(local_c0 + 1) = uVar33;
      puVar19 = (uint *)(local_90 + -0x10);
      if ((*puVar19 & 0x30000000) == 0) {
        LOCK();
        uVar20 = *puVar19;
        *puVar19 = *puVar19 - 1;
        UNLOCK();
        if (uVar20 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar19);
        }
      }
      *(uint *)((longlong)local_c0 + 0xc) = (uint)(ushort)((short)param_2 - (short)uVar28);
      iVar11 = uVar27 + 1;
      uVar31 = (ulonglong)iVar11;
      if (iVar11 < *(int *)((longlong)param_1 + 0x1c)) {
        lVar26 = uVar31 << 4;
        do {
          lVar7 = *plVar2;
          local_68 = *(longlong *)(lVar26 + lVar7);
          if ((*(uint *)(local_68 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_68 + -0x10) = *(int *)(local_68 + -0x10) + 1;
            UNLOCK();
          }
          uVar33 = *(undefined4 *)(lVar26 + 8 + lVar7);
          uVar4 = *(undefined4 *)(lVar26 + 0xc + lVar7);
          iVar5 = *(int *)((longlong)plVar12 + 0x1c);
          iVar14 = iVar5 + 1;
          if ((int)plVar12[3] < iVar14) {
            if (iVar14 < 0) {
              iVar14 = iVar5 + 2;
            }
            FUN_18051d4f0(plVar1,iVar5 + 9 + (iVar14 >> 1) & 0xfffffff8);
          }
          iVar14 = *(int *)((longlong)plVar12 + 0x1c);
          *(int *)((longlong)plVar12 + 0x1c) = iVar14 + 1;
          plVar23 = (longlong *)((longlong)iVar14 * 0x10 + *plVar1);
          *plVar23 = local_68;
          *(undefined4 *)(plVar23 + 1) = uVar33;
          *(undefined4 *)((longlong)plVar23 + 0xc) = uVar4;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar27 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar32 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar27;
            if (bVar32) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
          uVar27 = (int)uVar31 + 1;
          uVar31 = (ulonglong)uVar27;
          lVar26 = lVar26 + 0x10;
          puVar16 = local_88;
        } while ((int)uVar27 < *(int *)((longlong)param_1 + 0x1c));
      }
      FUN_18051a540(plVar2,iVar11,*(undefined4 *)((longlong)param_1 + 0x1c));
      if ((*puVar16 & 0x30000000) != 0) {
        return local_80;
      }
      LOCK();
      uVar27 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar27 != 0) {
        return local_80;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
LAB_180506aa1:
    uVar31 = uVar31 + 1;
    pbVar17 = pbVar18;
  } while( true );
}



############ FUN_ 1812dccb0 size=962 ############

void FUN_1812dccb0(longlong param_1,longlong *param_2,int param_3,longlong *param_4,
                  undefined4 param_5,longlong param_6,undefined4 param_7)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong *plVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  int iVar10;
  longlong lVar11;
  
  if (*(char *)*param_2 != '\0') {
    if (param_6 == 0) {
      FUN_1812dbb90();
      FUN_1812e0940(param_1);
      iVar7 = 0;
      iVar8 = 0;
      if (0 < *(int *)(param_1 + 0x2b4)) {
        lVar11 = 0;
        iVar10 = 0;
        do {
          lVar9 = *(longlong *)(lVar11 + *(longlong *)(param_1 + 0x2a8));
          iVar7 = 0;
          lVar3 = *(longlong *)(lVar9 + 0x10);
          lVar9 = (longlong)*(int *)(lVar9 + 0x1c) * 0x10 + lVar3;
          for (; lVar3 != lVar9; lVar3 = lVar3 + 0x10) {
            iVar7 = iVar7 + *(int *)(lVar3 + 0xc);
          }
          iVar7 = iVar7 + iVar10;
          if (param_3 == iVar10) {
            plVar5 = (longlong *)FUN_1811316e0(0x28);
            uVar1 = *(undefined4 *)(param_1 + 0x2c4);
            lVar11 = *param_4;
            *plVar5 = lVar11;
            if (lVar11 != 0) {
              LOCK();
              *(int *)(lVar11 + 8) = *(int *)(lVar11 + 8) + 1;
              UNLOCK();
            }
            *(undefined4 *)(plVar5 + 1) = param_5;
            plVar5[2] = 0;
            plVar5[3] = 0;
            *(undefined4 *)(plVar5 + 4) = uVar1;
            FUN_180506e50(plVar5,param_2);
            FUN_18051b0d0(param_1 + 0x2a8,iVar8,plVar5);
            break;
          }
          if ((iVar10 < param_3) && (param_3 < iVar7)) {
            uVar4 = FUN_180506840(*(undefined8 *)
                                   (*(longlong *)(param_1 + 0x2a8) + (longlong)iVar8 * 8),
                                  param_3 - iVar10);
            FUN_18051b0d0(param_1 + 0x2a8,iVar8 + 1,uVar4);
            uVar4 = FUN_1811316e0(0x28);
            uVar4 = FUN_1805067e0(uVar4,param_2,param_4,param_5,*(undefined4 *)(param_1 + 0x2c4));
            FUN_18051b0d0(param_1 + 0x2a8,iVar8 + 1,uVar4);
            break;
          }
          iVar8 = iVar8 + 1;
          lVar11 = lVar11 + 8;
          iVar10 = iVar7;
        } while (iVar8 < *(int *)(param_1 + 0x2b4));
      }
      if (iVar7 == param_3) {
        plVar5 = (longlong *)FUN_1811316e0(0x28);
        uVar1 = *(undefined4 *)(param_1 + 0x2c4);
        lVar11 = *param_4;
        *plVar5 = lVar11;
        if (lVar11 != 0) {
          LOCK();
          *(int *)(lVar11 + 8) = *(int *)(lVar11 + 8) + 1;
          UNLOCK();
        }
        *(undefined4 *)(plVar5 + 1) = param_5;
        plVar5[2] = 0;
        plVar5[3] = 0;
        *(undefined4 *)(plVar5 + 4) = uVar1;
        FUN_180506e50(plVar5,param_2);
        iVar7 = *(int *)(param_1 + 0x2b4) + 1;
        if (*(int *)(param_1 + 0x2b0) < iVar7) {
          FUN_18047cb30((longlong *)(param_1 + 0x2a8),
                        *(int *)(param_1 + 0x2b4) + 9 + iVar7 / 2 & 0xfffffff8);
        }
        iVar7 = *(int *)(param_1 + 0x2b4);
        *(int *)(param_1 + 0x2b4) = iVar7 + 1;
        *(longlong **)(*(longlong *)(param_1 + 0x2a8) + (longlong)iVar7 * 8) = plVar5;
      }
      FUN_1812db150(param_1);
      *(undefined4 *)(param_1 + 0x2a0) = 0xffffffff;
      *(undefined1 *)(param_1 + 0x1f8) = 1;
      FUN_1812e0480(param_1);
      *(undefined4 *)(param_1 + 0x2f8) = 0;
      FUN_1812e0940(param_1,*(undefined8 *)(param_1 + 0x280));
      FUN_1812e08d0(param_1,param_7);
      *(ulonglong *)(param_1 + 0x280) =
           CONCAT44(*(undefined4 *)(param_1 + 0x2a4),*(undefined4 *)(param_1 + 0x2a4));
      iVar8 = FUN_1812dbb90(param_1);
      iVar7 = param_3;
      if (param_3 < iVar8) {
        iVar7 = iVar8;
      }
      FUN_1812e0940(param_1,CONCAT44(iVar7,param_3));
    }
    else {
      if ((((*(char *)(param_6 + 0x70) == '\0') &&
           (uVar6 = *(int *)(param_6 + 0x6c) - 1, uVar6 < *(uint *)(param_6 + 0x44))) &&
          (lVar11 = *(longlong *)(*(longlong *)(param_6 + 0x38) + (longlong)(int)uVar6 * 8),
          lVar11 != 0)) && (100 < *(int *)(lVar11 + 0xc))) {
        FUN_1812e1fc0(param_1);
      }
      puVar2 = (undefined8 *)FUN_1811316e0(0x38);
      uVar1 = *(undefined4 *)(param_1 + 0x2a4);
      *puVar2 = juce::TextEditor::InsertAction::vftable;
      puVar2[1] = param_1;
      lVar11 = *param_2;
      puVar2[2] = lVar11;
      if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
        UNLOCK();
      }
      *(int *)(puVar2 + 3) = param_3;
      *(undefined4 *)((longlong)puVar2 + 0x1c) = uVar1;
      *(undefined4 *)(puVar2 + 4) = param_7;
      lVar11 = *param_4;
      puVar2[5] = lVar11;
      if (lVar11 != 0) {
        LOCK();
        *(int *)(lVar11 + 8) = *(int *)(lVar11 + 8) + 1;
        UNLOCK();
      }
      *(undefined4 *)(puVar2 + 6) = param_5;
      FUN_1813526d0(param_6);
    }
  }
  return;
}



############ FUN_ 1812e1780 size=458 ############

void FUN_1812e1780(longlong param_1)

{
  code *pcVar1;
  undefined8 *puVar2;
  char cVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  if (((*(char *)(param_1 + 0x1ed) == '\0') || (*(char *)(param_1 + 0x1ec) != '\0')) ||
     ((*(byte *)(param_1 + 0xa9) & 0x10) != 0)) {
LAB_1812e1911:
    puVar5 = *(undefined8 **)(param_1 + 0x278);
    *(undefined8 *)(param_1 + 0x278) = 0;
    if (puVar5 != (undefined8 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001812e1933. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)*puVar5)(puVar5,1);
      return;
    }
  }
  else {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      cVar3 = FUN_18133eaa0();
      if (cVar3 == '\0') goto LAB_1812e1911;
    }
    if (*(longlong *)(param_1 + 0x278) == 0) {
      lVar4 = FUN_18134adf0(param_1);
      pcVar1 = *(code **)(*(longlong *)(lVar4 + 0x18) + 0x18);
      if (pcVar1 == FUN_18130f9a0) {
        puVar5 = (undefined8 *)FUN_1811316e0(0xd0);
        puVar5[1] = &DAT_1821dbf98;
        puVar5[2] = &DAT_1821dbf98;
        puVar5[3] = 0;
        puVar5[4] = 0;
        puVar5[5] = 0;
        puVar5[6] = 0;
        puVar5[7] = 0;
        puVar5[8] = 0;
        puVar5[9] = 0;
        puVar5[10] = 0;
        puVar5[0xb] = 0;
        puVar5[0xc] = 0;
        puVar5[0xd] = 0;
        puVar5[0xe] = 0;
        puVar5[0xf] = 0;
        puVar5[0x10] = 0;
        puVar5[0x11] = 0;
        puVar5[0x12] = 0;
        puVar5[0x13] = 0;
        puVar5[0x14] = 0;
        *(undefined4 *)(puVar5 + 0x15) = 0;
        *(undefined1 *)((longlong)puVar5 + 0xac) = 0;
        *(undefined4 *)(puVar5 + 0x18) = 0;
        puVar5[0x17] = 0xffffffffffffffff;
        *(byte *)((longlong)puVar5 + 0xa9) = *(byte *)((longlong)puVar5 + 0xa9) | 0x40;
        *puVar5 = juce::CaretComponent::vftable;
        puVar5[0x16] = juce::CaretComponent::vftable;
        puVar5[0x19] = param_1;
        *(byte *)(puVar5 + 0x15) = *(byte *)(puVar5 + 0x15) & 0xef | 8;
      }
      else {
        puVar5 = (undefined8 *)(*pcVar1)(lVar4 + 0x18,param_1);
      }
      puVar2 = *(undefined8 **)(param_1 + 0x278);
      *(undefined8 **)(param_1 + 0x278) = puVar5;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
      }
      if (*(longlong *)(param_1 + 0x278) != 0) {
        FUN_181343cc0(*(undefined8 *)(param_1 + 0x1d0),*(longlong *)(param_1 + 0x278),0xffffffff);
      }
      FUN_1812e16d0(param_1);
      return;
    }
  }
  return;
}



############ FUN_ 1812e2370 size=975 ############

undefined8 * FUN_1812e2370(undefined8 *param_1,undefined8 param_2,undefined4 param_3)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined8 uVar3;
  longlong lVar4;
  longlong *plVar5;
  HCURSOR pHVar6;
  undefined8 *puVar7;
  bool bVar8;
  longlong *local_res20;
  undefined1 *local_38;
  undefined8 local_30;
  undefined4 *local_28;
  longlong *local_20;
  
  local_30 = 0xfffffffffffffffe;
  puVar7 = param_1;
  FUN_1813453e0();
  puVar7[0x18] = &DAT_1821dbf98;
  *puVar7 = juce::TextEditor::vftable;
  puVar7[0x16] = juce::TextEditor::vftable;
  puVar7[0x17] = juce::TextEditor::vftable;
  puVar7[0x20] = 0;
  puVar7[0x28] = 0;
  puVar7[0x30] = 0;
  puVar7[0x38] = 0;
  puVar7[0x39] = 0;
  *(undefined4 *)(puVar7 + 0x3b) = 1;
  *(undefined4 *)((longlong)puVar7 + 0x1dc) = 1;
  *(undefined4 *)(puVar7 + 0x3c) = 1;
  *(undefined4 *)((longlong)puVar7 + 0x1e4) = 3;
  *(undefined4 *)(puVar7 + 0x3d) = 1;
  *(undefined4 *)((longlong)puVar7 + 0x1ec) = 0x100;
  *(undefined4 *)(puVar7 + 0x3e) = 0x1000100;
  *(undefined4 *)((longlong)puVar7 + 500) = 0x100;
  *(undefined2 *)(puVar7 + 0x3f) = 0x100;
  FUN_181352b90(puVar7 + 0x40);
  param_1[0x4f] = 0;
  param_1[0x50] = 0;
  *(undefined4 *)(param_1 + 0x51) = 4;
  *(undefined8 *)((longlong)param_1 + 0x28c) = 4;
  local_res20 = param_1 + 0x53;
  uVar3 = FUN_1811316e0(0x40);
  lVar4 = FUN_1804a2b80(uVar3,0,DAT_1824c4414);
  param_1[0x53] = lVar4;
  if (lVar4 != 0) {
    LOCK();
    *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
    UNLOCK();
  }
  param_1[0x54] = 0;
  param_1[0x55] = 0;
  param_1[0x56] = 0;
  param_1[0x57] = &DAT_1821dbf98;
  *(undefined4 *)(param_1 + 0x58) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2c4) = param_3;
  param_1[0x59] = 0;
  *(undefined1 *)(param_1 + 0x5a) = 0;
  FUN_181351c70(param_1 + 0x5b);
  *(undefined4 *)(param_1 + 0x5e) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2f4) = 0x3f800000;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  param_1[99] = 0;
  local_28 = &DAT_182673b68;
  do {
    LOCK();
    uVar2 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar2 != 0);
  if (DAT_18267aaf0 == (longlong *)0x0) {
    plVar5 = (longlong *)FUN_1811316e0(0x20);
    *plVar5 = 0;
    local_20 = plVar5;
    pHVar6 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f01);
    if (pHVar6 == (HCURSOR)0x0) {
      pHVar6 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    }
    plVar5[1] = (longlong)pHVar6;
    *(undefined4 *)(plVar5 + 2) = 1;
    *(undefined4 *)((longlong)plVar5 + 0x14) = 4;
    *(undefined1 *)(plVar5 + 3) = 1;
    DAT_18267aaf0 = plVar5;
  }
  else {
    LOCK();
    *(int *)(DAT_18267aaf0 + 2) = (int)DAT_18267aaf0[2] + 1;
    UNLOCK();
  }
  plVar5 = DAT_18267aaf0;
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  local_res20 = DAT_18267aaf0;
  FUN_181342db0(param_1,&local_res20);
  if (plVar5 != (longlong *)0x0) {
    FUN_1804e9060(plVar5);
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x1c8);
  local_38 = &DAT_1821dbf98;
  local_20 = puVar7;
  FUN_18134a630(puVar7,&local_38);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar8 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar8) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *puVar7 = juce::TextEditor::TextEditorViewport::vftable;
  puVar7[0x16] = juce::TextEditor::TextEditorViewport::vftable;
  puVar7[0x17] = juce::TextEditor::TextEditorViewport::vftable;
  puVar7[0x37] = param_1;
  *(undefined4 *)(puVar7 + 0x38) = 0;
  *(undefined1 *)((longlong)puVar7 + 0x1c4) = 0;
  puVar1 = (undefined8 *)param_1[0x39];
  param_1[0x39] = puVar7;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  plVar5 = (longlong *)param_1[0x39];
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x58))(plVar5,1);
    FUN_181343cc0(param_1,plVar5,0xffffffff);
  }
  local_res20 = (longlong *)FUN_1811316e0(0xd8);
  uVar3 = FUN_1805088d0(local_res20,param_1);
  param_1[0x3a] = uVar3;
  FUN_18134a370(param_1[0x39],uVar3,1);
  *(byte *)(param_1[0x39] + 0xa8) = *(byte *)(param_1[0x39] + 0xa8) & 0xdf;
  lVar4 = param_1[0x39];
  *(undefined2 *)(lVar4 + 0x1a8) = 0;
  if ((*(char *)(lVar4 + 0x1a5) != '\0') || (*(char *)(lVar4 + 0x1a4) != '\0')) {
    *(undefined2 *)(lVar4 + 0x1a4) = 0;
    FUN_1813165e0();
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x20;
  FUN_1812e1780(param_1);
  return param_1;
}



############ FUN_ 1805088d0 size=430 ############

undefined8 *
FUN_1805088d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  uint uVar2;
  undefined8 *puVar3;
  HCURSOR pHVar4;
  undefined8 *local_res10;
  undefined4 *local_res18;
  undefined8 *local_res20;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  param_1[0x17] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *param_1 = juce::TextEditor::TextHolderComponent::vftable;
  param_1[0x16] = juce::TextEditor::TextHolderComponent::vftable;
  param_1[0x19] = juce::TextEditor::TextHolderComponent::vftable;
  param_1[0x1a] = param_2;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x18;
  local_res18 = &DAT_182673b68;
  do {
    LOCK();
    uVar2 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar2 != 0);
  if (DAT_18267aad0 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar3 = 0;
    local_res20 = puVar3;
    pHVar4 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    if (pHVar4 == (HCURSOR)0x0) {
      pHVar4 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    }
    puVar3[1] = pHVar4;
    puVar3[2] = 1;
    *(undefined1 *)(puVar3 + 3) = 1;
    DAT_18267aad0 = puVar3;
  }
  else {
    LOCK();
    *(int *)(DAT_18267aad0 + 2) = *(int *)(DAT_18267aad0 + 2) + 1;
    UNLOCK();
  }
  puVar3 = DAT_18267aad0;
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  local_res10 = DAT_18267aad0;
  FUN_181342db0(param_1,&local_res10,param_3,param_4,uVar5);
  if (puVar3 != (undefined8 *)0x0) {
    FUN_1804e9060(puVar3);
  }
  lVar1 = param_1[0x1a];
  FUN_1812e1050(lVar1);
  FUN_181351570(lVar1 + 0x2d8,param_1 + 0x19);
  return param_1;
}



############ FUN_ 181324bd0 size=160 ############

void FUN_181324bd0(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar1 = *(undefined8 **)(param_1 + 0x108);
  FUN_1812d8df0(param_1,0);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  uVar2 = FUN_1811316e0(0xf8);
  uVar3 = FUN_1804f5420(uVar2,param_1,0,0,*(longlong *)(param_1 + 0x138) + 0x48,
                        *(undefined8 *)(*(longlong *)(param_1 + 0x138) + 0x58),uVar3);
  FUN_1804f5ae0(uVar3,*(undefined8 *)(param_1 + 0x138),0);
  FUN_1812d8df0(param_1,uVar3);
  return;
}



############ FUN_ 18050ac50 size=1214 ############

void FUN_18050ac50(longlong *param_1)

{
  ulonglong *puVar1;
  void *_Dst;
  undefined4 uVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  int iVar6;
  uint uVar7;
  longlong *plVar8;
  longlong lVar9;
  undefined8 uVar10;
  longlong *plVar11;
  uint uVar12;
  undefined8 *puVar13;
  longlong *plVar14;
  int iVar15;
  longlong *plVar16;
  int iVar17;
  longlong *plVar18;
  longlong *plVar19;
  int iVar20;
  undefined1 local_50 [24];
  
  iVar20 = -*(int *)((longlong)param_1 + 0x24);
  if (param_1[3] == 0) {
    lVar9 = FUN_181344bc0(param_1,local_50);
    iVar15 = *(int *)(lVar9 + 0xc);
  }
  else {
    iVar15 = *(int *)(param_1[3] + 0x2c);
  }
  puVar1 = (ulonglong *)(param_1 + 0x1a);
  plVar8 = (longlong *)*puVar1;
  plVar19 = (longlong *)0x0;
  iVar17 = 0;
  plVar14 = (longlong *)
            ((ulonglong)
             ((longlong)(plVar8 + *(int *)((longlong)param_1 + 0xdc)) + (7 - (longlong)plVar8)) >> 3
            );
  if (plVar8 + *(int *)((longlong)param_1 + 0xdc) < plVar8) {
    plVar14 = plVar19;
  }
  plVar18 = plVar19;
  if (plVar14 != (longlong *)0x0) {
    do {
      *(undefined1 *)(*plVar8 + 0x14) = 0;
      plVar8 = plVar8 + 1;
      plVar18 = (longlong *)((longlong)plVar18 + 1);
    } while (plVar18 != plVar14);
  }
  plVar8 = *(longlong **)(param_1[0x19] + 0x108);
  if ((plVar8 != (longlong *)0x0) && (*(char *)(param_1[0x19] + 0x126) == '\0')) {
    iVar17 = -*(int *)((longlong)plVar8 + 0x2c);
  }
joined_r0x00018050ad1c:
  do {
    plVar14 = plVar8;
    if ((plVar14 == (longlong *)0x0) || (iVar15 + iVar20 <= iVar17)) break;
    iVar17 = iVar17 + *(int *)((longlong)plVar14 + 0x2c);
    if (iVar20 <= iVar17) {
      plVar18 = (longlong *)*puVar1;
      plVar8 = plVar18 + *(int *)((longlong)param_1 + 0xdc);
      if (plVar18 != plVar8) {
        do {
          if (*(int *)(*plVar18 + 0x10) == *(int *)((longlong)plVar14 + 0x3c)) {
            *(undefined1 *)(*plVar18 + 0x14) = 1;
            goto LAB_18050ae01;
          }
          plVar18 = plVar18 + 1;
        } while (plVar18 != plVar8);
      }
      plVar8 = (longlong *)(**(code **)(*plVar14 + 0x38))(plVar14);
      if (plVar8 != (longlong *)0x0) {
        lVar9 = FUN_1811316e0(0x18);
        uVar2 = *(undefined4 *)((longlong)plVar14 + 0x3c);
        FUN_1804de690(lVar9,plVar8);
        *(longlong **)(lVar9 + 8) = plVar14;
        *(undefined4 *)(lVar9 + 0x10) = uVar2;
        *(undefined1 *)(lVar9 + 0x14) = 1;
        iVar3 = *(int *)((longlong)param_1 + 0xdc);
        iVar6 = iVar3 + 1;
        if ((int)param_1[0x1b] < iVar6) {
          if (iVar6 < 0) {
            iVar6 = iVar3 + 2;
          }
          FUN_18047cb30(puVar1,iVar3 + 9 + (iVar6 >> 1) & 0xfffffff8);
        }
        iVar6 = *(int *)((longlong)param_1 + 0xdc);
        *(int *)((longlong)param_1 + 0xdc) = iVar6 + 1;
        *(longlong *)(*puVar1 + (longlong)iVar6 * 8) = lVar9;
        (**(code **)(*plVar8 + 0x58))(plVar8,1);
        FUN_181343cc0(param_1,plVar8,0xffffffff);
      }
      plVar19 = (longlong *)0x0;
    }
LAB_18050ae01:
    uVar7 = *(uint *)((longlong)plVar14 + 0x44) & 3;
    plVar8 = plVar19;
    if (uVar7 == 0) {
      if ((plVar14[1] != 0) && (*(char *)(plVar14[1] + 0x124) != '\0')) {
LAB_18050ae7b:
        if (*(int *)((longlong)plVar14 + 0x24) != 0) {
          if (0 < *(int *)((longlong)plVar14 + 0x24)) {
            plVar8 = *(longlong **)plVar14[3];
          }
          goto joined_r0x00018050ad1c;
        }
      }
    }
    else if (uVar7 == 2) goto LAB_18050ae7b;
    lVar9 = plVar14[2];
    if (lVar9 == 0) break;
    puVar4 = *(undefined8 **)(lVar9 + 0x18);
    for (puVar13 = puVar4; puVar13 != puVar4 + *(int *)(lVar9 + 0x24); puVar13 = puVar13 + 1) {
      if (plVar14 == (longlong *)*puVar13) {
        iVar6 = (int)((longlong)puVar13 - (longlong)puVar4 >> 3);
        goto LAB_18050ae53;
      }
    }
    iVar6 = -1;
LAB_18050ae53:
    uVar7 = iVar6 + 1;
    if ((int)uVar7 < (int)*(uint *)(lVar9 + 0x24)) {
      if (uVar7 < *(uint *)(lVar9 + 0x24)) {
        plVar8 = (longlong *)puVar4[(int)uVar7];
      }
    }
    else {
      plVar8 = (longlong *)FUN_1812d5970(lVar9,0);
    }
  } while( true );
  uVar7 = *(int *)((longlong)param_1 + 0xdc) - 1;
  if (-1 < (int)uVar7) {
    lVar9 = (longlong)(int)uVar7 * 8;
    do {
      plVar8 = *(longlong **)(lVar9 + *puVar1);
      plVar14 = plVar19;
      if (*plVar8 != 0) {
        plVar14 = *(longlong **)(*plVar8 + 0x10);
      }
      do {
        if (plVar14 == (longlong *)0x0) goto LAB_18050af14;
        plVar14 = (longlong *)plVar14[3];
      } while (plVar14 != param_1);
      if (*(char *)((longlong)plVar8 + 0x14) == '\0') {
LAB_18050b03e:
        plVar14 = plVar19;
        if (*plVar8 != 0) {
          plVar14 = *(longlong **)(*plVar8 + 0x10);
        }
        if (DAT_182673700 == 0) {
          uVar10 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(uVar10);
          plVar19 = (longlong *)0x0;
        }
        plVar16 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
        plVar18 = plVar16 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
        for (; plVar16 != plVar18; plVar16 = plVar16 + 1) {
          if ((*(byte *)(*plVar16 + 0x28) & 0x70) != 0) {
            lVar5 = *(longlong *)(*plVar16 + 0x48);
            plVar11 = plVar19;
            if (lVar5 != 0) {
              plVar11 = *(longlong **)(lVar5 + 0x10);
            }
            if (plVar11 != (longlong *)0x0) {
              if (plVar14 == plVar11) {
LAB_18050b0e4:
                plVar14 = plVar19;
                if (*plVar8 != 0) {
                  plVar14 = *(longlong **)(*plVar8 + 0x10);
                }
                FUN_18134bfe0(plVar14,(int)plVar14[4],*(undefined4 *)((longlong)plVar14 + 0x24),0,
                              (int)plVar19);
                goto LAB_18050af6d;
              }
              do {
                plVar11 = (longlong *)plVar11[3];
                if (plVar11 == plVar14) goto LAB_18050b0e4;
              } while (plVar11 != (longlong *)0x0);
            }
          }
        }
LAB_18050af14:
        if (uVar7 < *(uint *)((longlong)param_1 + 0xdc)) {
          plVar19 = *(longlong **)(lVar9 + *puVar1);
          _Dst = (void *)(*puVar1 + (longlong)(int)uVar7 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),
                  (longlong)(int)((*(uint *)((longlong)param_1 + 0xdc) - uVar7) + -1) << 3);
          *(int *)((longlong)param_1 + 0xdc) = *(int *)((longlong)param_1 + 0xdc) + -1;
        }
        if ((*(int *)((longlong)param_1 + 0xdc) * 2 < (int)param_1[0x1b]) &&
           (*(int *)((longlong)param_1 + 0xdc) < (int)param_1[0x1b])) {
          FUN_18047cb30(puVar1);
        }
        if (plVar19 != (longlong *)0x0) {
          FUN_18051dab0(plVar19);
        }
      }
      else {
        lVar5 = plVar8[1];
        iVar17 = FUN_1812d65b0(lVar5);
        uVar12 = *(uint *)(lVar5 + 0x34);
        if ((*(longlong *)(lVar5 + 8) != 0) && ((int)uVar12 < 0)) {
          uVar12 = *(int *)(*(longlong *)(*(longlong *)(lVar5 + 8) + 0xd0) + 400) - iVar17;
        }
        iVar6 = *(int *)(lVar5 + 0x28);
        plVar19 = (longlong *)0x0;
        plVar14 = plVar19;
        if (0 < (int)uVar12) {
          plVar14 = (longlong *)(ulonglong)uVar12;
        }
        if ((*(int *)(plVar8[1] + 0x2c) + iVar6 < iVar20) || (iVar15 + iVar20 <= iVar6))
        goto LAB_18050b03e;
        if (*plVar8 != 0) {
          plVar19 = *(longlong **)(*plVar8 + 0x10);
        }
        FUN_18134bfe0(plVar19,iVar17,iVar6,plVar14,*(int *)(plVar8[1] + 0x2c));
      }
LAB_18050af6d:
      lVar9 = lVar9 + -8;
      uVar7 = uVar7 - 1;
      plVar19 = (longlong *)0x0;
    } while (-1 < (int)uVar7);
  }
  return;
}



############ FUN_ 18132e120 size=320 ############

void FUN_18132e120(longlong param_1)

{
  uint uVar1;
  void *_Memory;
  bool bVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  uint *_Memory_00;
  longlong local_res10;
  undefined1 local_res18 [8];
  undefined8 local_res20;
  
  FUN_18132e310();
  *(bool *)(param_1 + 0xa9) = *(int *)(param_1 + 0x9c) == 0;
  FUN_18051c700(param_1 + 0x90);
  if (*(int *)(param_1 + 0x98) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x90));
  }
  *(undefined4 *)(param_1 + 0x98) = 0;
  puVar4 = (undefined8 *)FUN_18049a930(local_res18,param_1 + 0x48);
  DVar3 = GetFileAttributesW((LPCWSTR)*puVar4);
  if (((DVar3 & 0x10) == 0) || (bVar2 = true, DVar3 == 0xffffffff)) {
    bVar2 = false;
  }
  if (bVar2) {
    uVar5 = FUN_1811316e0(0x48);
    local_res20 = uVar5;
    FUN_18049c4e0(&local_res10,&DAT_1821e2b74);
    uVar5 = FUN_181242e90(uVar5,param_1 + 0x48,0,&local_res10,*(undefined4 *)(param_1 + 0x60));
    _Memory = *(void **)(param_1 + 0xa0);
    *(undefined8 *)(param_1 + 0xa0) = uVar5;
    if (_Memory != (void *)0x0) {
      FUN_181242dc0(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    _Memory_00 = (uint *)(local_res10 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory_00;
      *_Memory_00 = *_Memory_00 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
    }
    LOCK();
    *(undefined1 *)(param_1 + 0xa8) = 0;
    UNLOCK();
    FUN_181229aa0(*(undefined8 *)(param_1 + 0x58),param_1 + 0x38);
  }
  return;
}



############ FUN_ 1813489c0 size=794 ############

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

void FUN_1813489c0(longlong *param_1,longlong param_2,int *param_3,undefined1 param_4,
                  undefined1 param_5,undefined1 param_6,undefined1 param_7)

{
  undefined1 auVar1 [16];
  int iVar2;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  int iVar7;
  longlong *plVar8;
  undefined8 uVar9;
  longlong lVar10;
  undefined8 *puVar11;
  int iVar12;
  int iVar13;
  undefined8 uVar14;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined1 local_58 [16];
  undefined1 local_48 [16];
  
  uVar14 = 0xfffffffffffffffe;
  local_68 = 0;
  uStack_60 = 0;
  local_a8 = *(undefined8 *)param_3;
  uStack_a0 = *(undefined8 *)(param_3 + 2);
  local_88 = 0;
  uStack_80 = 0;
  if (*(longlong *)(param_2 + 0x18) == 0) {
    if (((*(byte *)(param_2 + 0xa8) & 1) != 0) &&
       (plVar8 = (longlong *)FUN_1812d2bd0(param_2), plVar8 != (longlong *)0x0)) {
      if ((undefined **)*plVar8 == juce::HWNDComponentPeer::vftable) {
        local_78 = plVar8[0x17];
        uStack_70 = plVar8[0x18];
        puVar11 = &local_78;
      }
      else {
        puVar11 = (undefined8 *)(*(code *)((undefined **)*plVar8)[0x13])(plVar8,&local_78);
      }
      local_88 = *puVar11;
      uStack_80 = puVar11[1];
    }
    iVar7 = param_3[3];
    iVar13 = param_3[1];
    iVar2 = param_3[2];
    iVar3 = *param_3;
    if (DAT_182673700 == 0) {
      uVar9 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar9);
    }
    lVar10 = FUN_18133d700(*(undefined8 *)(DAT_182673700 + 0x78),
                           CONCAT44(iVar7 / 2 + iVar13,iVar2 / 2 + iVar3),0);
    uVar9 = *(undefined8 *)(param_2 + 0x20);
    lVar6 = *(longlong *)(param_2 + 0x18);
    lVar5 = param_2;
    while (lVar4 = lVar6, lVar4 != 0) {
      lVar5 = lVar4;
      lVar6 = *(longlong *)(lVar4 + 0x18);
    }
    local_78 = *(undefined8 *)(lVar10 + 0x14);
    uStack_70 = *(undefined8 *)(lVar10 + 0x1c);
    puVar11 = (undefined8 *)FUN_180520340(local_58,lVar5,&local_78);
    local_78 = *puVar11;
    uStack_70 = puVar11[1];
    if (lVar5 != param_2) {
      if (*(longlong *)(param_2 + 0x18) != lVar5) {
        puVar11 = (undefined8 *)
                  FUN_1805202e0(local_48,lVar5,*(longlong *)(param_2 + 0x18),&local_78);
        local_78 = *puVar11;
        uStack_70 = puVar11[1];
      }
      FUN_180520340(&local_98,param_2,&local_78);
      local_78 = local_98;
      uStack_70 = uStack_90;
    }
    uStack_90 = uStack_70;
    local_98 = local_78;
    local_78 = CONCAT44((int)((ulonglong)uVar9 >> 0x20) + local_98._4_4_,(int)local_98 + (int)uVar9)
    ;
    local_68 = local_78;
    uStack_60 = uStack_90;
  }
  else {
    uStack_60 = *(undefined8 *)(*(longlong *)(param_2 + 0x18) + 0x28);
  }
  iVar13 = local_88._4_4_;
  iVar7 = (int)local_88;
  local_78 = CONCAT44(local_a8._4_4_ - (int)local_88,(int)local_a8 - local_88._4_4_);
  iVar3 = uStack_80._4_4_;
  iVar2 = (int)uStack_80;
  uStack_70 = CONCAT44(uStack_a0._4_4_ + (int)uStack_80 + (int)local_88,
                       (int)uStack_a0 + uStack_80._4_4_ + local_88._4_4_);
  local_a8 = local_78;
  uStack_a0 = uStack_70;
  auVar1 = *(undefined1 (*) [16])(param_2 + 0x20);
  local_78 = CONCAT44(auVar1._4_4_ - (int)local_88,auVar1._0_4_ - local_88._4_4_);
  uStack_70 = CONCAT44(auVar1._12_4_ + (int)uStack_80 + (int)local_88,
                       auVar1._8_4_ + uStack_80._4_4_ + local_88._4_4_);
  (**(code **)(*param_1 + 8))
            (param_1,&local_a8,&local_78,&local_68,param_4,param_5,param_6,param_7,uVar14);
  iVar12 = (int)local_a8 + iVar13;
  local_a8._4_4_ = local_a8._4_4_ + iVar7;
  local_98 = CONCAT44(local_a8._4_4_,iVar12);
  iVar13 = ((int)uStack_a0 - iVar3) - iVar13;
  iVar7 = (uStack_a0._4_4_ - iVar2) - iVar7;
  uStack_90 = CONCAT44(iVar7,iVar13);
  local_a8 = local_98;
  uStack_a0 = uStack_90;
  local_78 = local_98;
  uStack_70 = uStack_90;
  if ((undefined **)*param_1 == juce::ComponentBoundsConstrainer::vftable) {
    plVar8 = *(longlong **)(param_2 + 0x30);
    if (plVar8 == (longlong *)0x0) {
      FUN_18134bfe0(param_2,iVar12,local_a8._4_4_,iVar13,iVar7);
    }
    else {
      (**(code **)(*plVar8 + 8))(plVar8,&local_78);
    }
  }
  else {
    (*(code *)((undefined **)*param_1)[4])(param_1,param_2,&local_78);
  }
  return;
}



############ FUN_ 1813490d0 size=378 ############

undefined8 * FUN_1813490d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  undefined8 *puVar2;
  HCURSOR pHVar3;
  undefined8 *local_res18;
  undefined4 *local_res20;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::ResizableCornerComponent::vftable;
  param_1[0x16] = param_3;
  local_res18 = param_1 + 0x17;
  FUN_1804de690();
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 8;
  local_res20 = &DAT_182673b68;
  do {
    LOCK();
    uVar1 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar1 != 0);
  if (DAT_18267ab68 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar2 = 0;
    pHVar3 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f82);
    if (pHVar3 == (HCURSOR)0x0) {
      pHVar3 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    }
    puVar2[1] = pHVar3;
    *(undefined4 *)(puVar2 + 2) = 1;
    *(undefined4 *)((longlong)puVar2 + 0x14) = 0x13;
    *(undefined1 *)(puVar2 + 3) = 1;
    DAT_18267ab68 = puVar2;
  }
  else {
    LOCK();
    *(int *)(DAT_18267ab68 + 2) = *(int *)(DAT_18267ab68 + 2) + 1;
    UNLOCK();
  }
  puVar2 = DAT_18267ab68;
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  local_res18 = DAT_18267ab68;
  FUN_181342db0(param_1,&local_res18);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1804e9060(puVar2);
  }
  return param_1;
}



############ FUN_ 1812eadd0 size=1387 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812eadd0(longlong *param_1)

{
  int *piVar1;
  uint uVar2;
  code *pcVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined ***pppuVar6;
  byte bVar7;
  int iVar8;
  longlong lVar9;
  longlong *plVar10;
  undefined8 uVar11;
  undefined4 *puVar12;
  uint *puVar13;
  char cVar14;
  undefined ***pppuVar15;
  bool bVar16;
  undefined1 auStack_158 [32];
  longlong local_138;
  undefined4 local_130;
  undefined1 *local_128;
  longlong local_120 [2];
  undefined4 uStack_110;
  undefined4 uStack_10c;
  undefined8 local_108;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  int local_f8;
  undefined1 local_f4 [4];
  undefined1 local_f0 [4];
  undefined1 local_ec [4];
  undefined1 *local_e8;
  longlong local_e0 [3];
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined **local_a8;
  longlong *local_a0;
  undefined ***local_70;
  longlong local_68 [7];
  longlong *local_30;
  ulonglong local_28;
  
  local_e0[1] = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_130 = 0;
  uStack_10c = *(undefined4 *)((longlong)param_1 + 0x2c);
  uStack_110 = (undefined4)param_1[5];
  local_120[1] = 0;
  local_c8 = 0;
  uStack_c4 = 0;
  uStack_c0 = uStack_110;
  uStack_bc = uStack_10c;
  FUN_181342870(param_1,&local_c8,1);
  lVar9 = FUN_18134adf0(param_1);
  pcVar3 = *(code **)(*(longlong *)(lVar9 + 0x48) + 0x18);
  if (pcVar3 == FUN_18130f1f0) {
    local_120[0] = FUN_1811316e0(0x208);
    local_e8 = &DAT_1821dbf98;
    local_128 = &DAT_1821dbf98;
    local_130 = 3;
    lVar9 = FUN_18134a080(local_120[0],&local_128,&local_e8);
    puVar13 = (uint *)(local_128 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar16 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar16) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  else {
    lVar9 = (*pcVar3)();
  }
  lVar4 = param_1[0x2e];
  local_138 = lVar9;
  local_e0[2] = lVar9;
  if (lVar4 != 0) {
    if ((*(char *)(lVar4 + 0x200) == '\0') && (*(char *)(lVar4 + 0x201) == '\0')) {
      cVar14 = '\0';
    }
    else {
      cVar14 = '\x01';
    }
    *(char *)(lVar9 + 0x200) = cVar14;
    *(undefined2 *)(lVar9 + 0x201) = 0;
    *(byte *)(lVar9 + 0xa8) = *(byte *)(lVar9 + 0xa8) & 0xdf;
    *(byte *)(lVar9 + 0xa8) = *(byte *)(lVar9 + 0xa8) | (cVar14 != '\0') << 5;
    *(byte *)(lVar9 + 0xa8) =
         ((cVar14 != '\0') << 6 ^ *(byte *)(lVar9 + 0xa8)) & 0x40 ^ *(byte *)(lVar9 + 0xa8);
    local_f8 = *(int *)(param_1[0x2e] + 0x1c0);
    if (*(int *)(lVar9 + 0x1c0) != local_f8) {
      *(int *)(lVar9 + 0x1c0) = local_f8;
      uStack_fc = *(undefined4 *)(lVar9 + 0x2c);
      uStack_100 = *(undefined4 *)(lVar9 + 0x28);
      local_108 = 0;
      local_b8 = 0;
      uStack_b4 = 0;
      uStack_b0 = uStack_100;
      uStack_ac = uStack_fc;
      FUN_181342870(lVar9,&local_b8,1);
    }
    plVar10 = (longlong *)
              (**(code **)(*(longlong *)(param_1[0x2e] + 0xb0) + 8))
                        ((longlong *)(param_1[0x2e] + 0xb0),local_e0);
    pcVar3 = *(code **)(*(longlong *)(lVar9 + 0xb0) + 0x10);
    if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
      if ((*(uint *)(*plVar10 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar1 = (int *)(*plVar10 + -0x10);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = *(longlong *)(lVar9 + 0xb8);
      *(longlong *)(lVar9 + 0xb8) = *plVar10;
      UNLOCK();
      puVar13 = (uint *)(lVar4 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
    }
    else {
      (*pcVar3)(lVar9 + 0xb0,plVar10);
    }
    puVar13 = (uint *)(local_e0[0] + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    uVar11 = FUN_1812ea010(param_1[0x2e],local_120);
    FUN_181349c50(local_138,uVar11,0);
    puVar13 = (uint *)(local_120[0] + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
  }
  puVar5 = (undefined8 *)param_1[0x2e];
  param_1[0x2e] = local_138;
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  plVar10 = (longlong *)param_1[0x2e];
  if (plVar10 != (longlong *)0x0) {
    (**(code **)(*plVar10 + 0x58))(plVar10,1);
    FUN_181343cc0(param_1,plVar10,0xffffffff);
  }
  if ((*(char *)(param_1[0x2e] + 0x200) == '\0') && (*(char *)(param_1[0x2e] + 0x201) == '\0')) {
    bVar7 = 0;
  }
  else {
    bVar7 = 1;
  }
  iVar8 = bVar7 + 1;
  if (iVar8 != (int)param_1[0x31]) {
    *(int *)(param_1 + 0x31) = iVar8;
    *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
    *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | (iVar8 == 1) << 5;
  }
  lVar9 = param_1[0x2e];
  pppuVar15 = (undefined ***)(lVar9 + 0xd8);
  local_a8 = std::_Func_impl_no_alloc<<lambda_595e298f105b8f7c99b9a7728d80a920>,void>::vftable;
  local_70 = &local_a8;
  local_30 = (longlong *)0x0;
  local_a0 = param_1;
  local_30 = (longlong *)(*(code *)PTR_FUN_18249db20)(&local_a8,local_68);
  if (local_70 != (undefined ***)0x0) {
    (*(code *)(*local_70)[4])(local_70,local_70 != &local_a8);
    local_70 = (undefined ***)0x0;
  }
  pppuVar6 = *(undefined ****)(lVar9 + 0x110);
  if (pppuVar6 != (undefined ***)0x0) {
    if (pppuVar6 == pppuVar15) {
      local_70 = (undefined ***)(*(code *)(*pppuVar6)[1])(pppuVar6,&local_a8);
      pppuVar6 = *(undefined ****)(lVar9 + 0x110);
      if (pppuVar6 == (undefined ***)0x0) goto LAB_1812eb1d6;
      (*(code *)(*pppuVar6)[4])(pppuVar6,pppuVar6 != pppuVar15);
      pppuVar6 = local_70;
    }
    local_70 = pppuVar6;
    *(undefined8 *)(lVar9 + 0x110) = 0;
  }
LAB_1812eb1d6:
  FUN_180488560(pppuVar15,local_68);
  if (local_30 != (longlong *)0x0) {
    (**(code **)(*local_30 + 0x20))(local_30,local_30 != local_68);
  }
  if (local_70 != (undefined ***)0x0) {
    (*(code *)(*local_70)[4])
              (local_70,CONCAT71((int7)((ulonglong)&local_a8 >> 8),local_70 != &local_a8));
  }
  FUN_181341570(param_1[0x2e],param_1,0);
  FUN_18134a800(param_1[0x2e],0x1000280,DAT_182673b60);
  lVar9 = param_1[0x2e];
  puVar12 = (undefined4 *)FUN_18134a8d0(param_1,local_f4,0x1000a00,0);
  FUN_18134a800(lVar9,0x1000281,*puVar12);
  lVar9 = param_1[0x2e];
  puVar12 = (undefined4 *)FUN_18134a8d0(param_1,local_f0,0x1000a00,0);
  FUN_18134a800(lVar9,0x1000201,*puVar12);
  FUN_18134a800(param_1[0x2e],0x1000200,DAT_182673b60);
  lVar9 = param_1[0x2e];
  puVar12 = (undefined4 *)FUN_18134a8d0(param_1,local_ec,0x1000202,0);
  FUN_18134a800(lVar9,0x1000202,*puVar12);
  FUN_18134a800(param_1[0x2e],0x1000205,DAT_182673b60);
  (**(code **)(*param_1 + 0x108))(param_1);
}



############ FUN_ 18134a080 size=601 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18134a080(undefined8 *param_1,undefined8 param_2,longlong *param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined1 auStack_78 [32];
  longlong *local_58;
  undefined8 local_50;
  undefined8 *local_48;
  undefined **local_40;
  longlong local_38;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  puVar4 = param_1;
  local_48 = param_1;
  FUN_1813453e0();
  puVar4[0x17] = &DAT_1821dbf98;
  *puVar4 = juce::Label::vftable;
  puVar4[0x16] = juce::Label::vftable;
  puVar4[0x18] = juce::Label::vftable;
  puVar4[0x19] = juce::Label::vftable;
  puVar4[0x1a] = juce::Label::vftable;
  puVar4[0x22] = 0;
  puVar4[0x2a] = 0;
  puVar4[0x32] = 0;
  local_40 = &PTR_vftable_18262b560;
  local_38 = *param_3;
  if ((*(uint *)(local_38 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_38 + -0x10) = *(int *)(local_38 + -0x10) + 1;
    UNLOCK();
  }
  puVar4 = param_1 + 0x33;
  local_58 = puVar4;
  puVar1 = (undefined8 *)FUN_1811316e0(0x40);
  local_58 = puVar1;
  FUN_181351450(puVar1);
  *puVar1 = juce::SimpleValueSource::vftable;
  puVar1[2] = juce::SimpleValueSource::vftable;
  puVar1[6] = local_40;
  (**(code **)(*local_40 + 0xb8))(local_40,puVar1 + 7,&local_38);
  *puVar4 = puVar1;
  LOCK();
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  UNLOCK();
  param_1[0x34] = 0;
  param_1[0x35] = 0;
  (**(code **)(*local_40 + 0xb0))(local_40,&local_38);
  lVar3 = *param_3;
  param_1[0x36] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  local_58 = param_1 + 0x37;
  uVar2 = FUN_1811316e0(0x40);
  lVar3 = FUN_1804a2b80(uVar2,0,DAT_1824c4418);
  param_1[0x37] = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  *(undefined4 *)(param_1 + 0x38) = 0x21;
  param_1[0x39] = 0;
  param_1[0x3a] = 0;
  param_1[0x3b] = 0;
  param_1[0x3c] = 0;
  *(undefined4 *)(param_1 + 0x3d) = 1;
  *(undefined4 *)((longlong)param_1 + 0x1ec) = 5;
  *(undefined4 *)(param_1 + 0x3e) = 1;
  *(undefined8 *)((longlong)param_1 + 500) = 5;
  *(undefined8 *)((longlong)param_1 + 0x1fc) = 0;
  FUN_18134a800(param_1,0x1000201,DAT_18262b5b8);
  FUN_18134a800(param_1,0x1000200,DAT_182673b60);
  FUN_18134a800(param_1,0x1000205,DAT_182673b60);
  FUN_181351570(puVar4,param_1 + 0x1a);
}



############ FUN_ 18128f8e0 size=360 ############

void FUN_18128f8e0(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  uint uVar3;
  undefined8 *puVar4;
  int iVar5;
  
  if (DAT_182673a70 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x60);
    *puVar4 = juce::Timer::vftable;
    puVar4[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar4 + 2) = 0;
    FUN_1812a7230(puVar4 + 3);
    *puVar4 = juce::ImageCache::Pimpl::vftable;
    puVar4[3] = juce::ImageCache::Pimpl::vftable;
    puVar4[4] = 0;
    puVar4[5] = 0;
    InitializeCriticalSection((LPCRITICAL_SECTION)(puVar4 + 6));
    *(undefined4 *)((longlong)puVar4 + 0x5c) = 5000;
    DAT_182673a70 = puVar4;
  }
  puVar4 = DAT_182673a70;
  if (*param_1 != 0) {
    if (*(int *)(DAT_182673a70 + 2) < 1) {
      FUN_1812a77d0(DAT_182673a70,2000);
    }
    EnterCriticalSection((LPCRITICAL_SECTION)(puVar4 + 6));
    lVar2 = *param_1;
    if (lVar2 != 0) {
      LOCK();
      *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
      UNLOCK();
    }
    uVar3 = DAT_1826737fc;
    if (DAT_1826737fc == 0) {
      uVar3 = timeGetTime();
      if (uVar3 < DAT_1826737fc) {
        if (uVar3 < DAT_1826737fc - 1000) {
          LOCK();
          UNLOCK();
          DAT_1826737fc = uVar3;
        }
      }
      else {
        LOCK();
        UNLOCK();
        DAT_1826737fc = uVar3;
      }
    }
    iVar5 = *(int *)((longlong)puVar4 + 0x2c) + 1;
    if (*(int *)(puVar4 + 5) < iVar5) {
      FUN_1804b0100(puVar4 + 4,*(int *)((longlong)puVar4 + 0x2c) + 9 + iVar5 / 2 & 0xfffffff8);
    }
    iVar5 = *(int *)((longlong)puVar4 + 0x2c);
    *(int *)((longlong)puVar4 + 0x2c) = iVar5 + 1;
    plVar1 = (longlong *)(puVar4[4] + (longlong)iVar5 * 0x18);
    *plVar1 = lVar2;
    plVar1[1] = param_2;
    *(uint *)(plVar1 + 2) = uVar3;
    LeaveCriticalSection((LPCRITICAL_SECTION)(puVar4 + 6));
  }
  return;
}



############ FUN_ 1804f5950 size=288 ############

void FUN_1804f5950(longlong param_1,char param_2)

{
  uint uVar1;
  code *pcVar2;
  char cVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 local_res18 [2];
  
  if (param_2 != '\0') {
    FUN_1812d7200();
    puVar5 = (undefined8 *)FUN_18049a930(local_res18,param_1 + 0x70);
    DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
    if (((DVar4 & 0x10) == 0) || (DVar4 == 0xffffffff)) {
      cVar3 = '\0';
    }
    else {
      cVar3 = '\x01';
    }
    *(char *)(param_1 + 0xa0) = cVar3;
    if (cVar3 != '\0') {
      if (*(longlong *)(param_1 + 0x90) == 0) {
        local_res18[0] = FUN_1811316e0(0xb0);
        uVar6 = FUN_18132e630(local_res18[0],*(undefined8 *)(*(longlong *)(param_1 + 0x80) + 0x50),
                              *(undefined8 *)(param_1 + 0xa8));
        uVar1 = *(uint *)(*(longlong *)(param_1 + 0x80) + 0x60);
        FUN_18132e3a0(uVar6,param_1 + 0x70,*(byte *)(*(longlong *)(param_1 + 0x80) + 0x60) & 1,
                      CONCAT31((uint3)(uVar1 >> 9),(char)(uVar1 >> 1)) & 0xffffff01);
        FUN_1804f5ae0(param_1,uVar6,1);
      }
      pcVar2 = *(code **)(*(longlong *)(param_1 + 0x68) + 8);
      if (pcVar2 != FUN_1804f5d10) {
        (*pcVar2)((longlong *)(param_1 + 0x68),0);
        return;
      }
      FUN_1804f5d20(param_1);
      return;
    }
  }
  return;
}



############ FUN_ 1804f5d20 size=490 ############

void FUN_1804f5d20(longlong param_1)

{
  LPCRITICAL_SECTION p_Var1;
  int iVar2;
  longlong lVar3;
  uint uVar4;
  undefined8 uVar5;
  uint *_Memory;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined1 *local_res10;
  undefined8 local_res18;
  LPCRITICAL_SECTION local_res20;
  
  uVar6 = 0;
  FUN_1812d7200();
  uVar4 = *(uint *)(param_1 + 0x44) & 3;
  if (uVar4 == 0) {
    if (*(longlong *)(param_1 + 8) == 0) {
      return;
    }
    if (*(char *)(*(longlong *)(param_1 + 8) + 0x124) == '\0') {
      return;
    }
  }
  else if (uVar4 != 2) {
    return;
  }
  lVar3 = *(longlong *)(param_1 + 0x90);
  if (lVar3 != 0) {
    EnterCriticalSection((LPCRITICAL_SECTION)(lVar3 + 100));
    iVar2 = *(int *)(lVar3 + 0x9c);
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 100));
    uVar7 = uVar6;
    if (0 < iVar2) {
      do {
        uVar5 = FUN_1811316e0(0xf8);
        lVar3 = *(longlong *)(param_1 + 0x90);
        p_Var1 = (LPCRITICAL_SECTION)(lVar3 + 100);
        local_res18 = uVar5;
        local_res20 = p_Var1;
        EnterCriticalSection(p_Var1);
        if (((uint)uVar6 < *(uint *)(lVar3 + 0x9c)) &&
           (*(longlong *)(uVar7 + *(longlong *)(lVar3 + 0x90)) != 0)) {
          FUN_181245100(lVar3 + 0x48,&local_res10);
        }
        else {
          local_res10 = &DAT_1821dbf98;
        }
        LeaveCriticalSection(p_Var1);
        uVar5 = FUN_1804f5420(uVar5,*(undefined8 *)(param_1 + 0x78),*(undefined8 *)(param_1 + 0x90),
                              uVar6,&local_res10,*(undefined8 *)(param_1 + 0xa8));
        FUN_1812d6fd0(param_1,uVar5);
        _Memory = (uint *)(local_res10 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar4 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        uVar4 = (uint)uVar6 + 1;
        uVar6 = (ulonglong)uVar4;
        lVar3 = *(longlong *)(param_1 + 0x90);
        p_Var1 = (LPCRITICAL_SECTION)(lVar3 + 100);
        EnterCriticalSection(p_Var1);
        iVar2 = *(int *)(lVar3 + 0x9c);
        LeaveCriticalSection(p_Var1);
        uVar7 = uVar7 + 8;
      } while ((int)uVar4 < iVar2);
    }
  }
  return;
}



############ FUN_ 18051a960 size=193 ############

longlong * FUN_18051a960(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  if (param_2 != 0) {
    if (*(longlong *)(param_2 + 0x80) == 0) {
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::
                WeakReference<juce::ComponentAnimator::AnimationTask,juce::ReferenceCountedObject>::
                SharedPointer::vftable;
      puVar5[2] = param_2;
      if (*(undefined8 **)(param_2 + 0x80) != puVar5) {
        LOCK();
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        UNLOCK();
        puVar3 = *(undefined8 **)(param_2 + 0x80);
        *(undefined8 **)(param_2 + 0x80) = puVar5;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
    }
    lVar4 = *(longlong *)(param_2 + 0x80);
    *param_1 = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
      UNLOCK();
    }
    return param_1;
  }
  *param_1 = 0;
  return param_1;
}



############ FUN_ 181319110 size=1777 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181319110(longlong param_1)

{
  undefined8 *puVar1;
  undefined ***pppuVar2;
  double dVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 uVar9;
  undefined ***pppuVar10;
  longlong *plVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  int iVar15;
  bool bVar16;
  double dVar17;
  undefined1 auStack_168 [32];
  int local_148;
  undefined8 local_138;
  int local_130;
  longlong *local_128;
  ulonglong uStack_120;
  int local_118;
  int local_114;
  longlong local_110;
  undefined4 local_108;
  uint uStack_104;
  undefined4 uStack_100;
  int iStack_fc;
  uint local_f8;
  undefined4 uStack_f4;
  int iStack_f0;
  undefined4 uStack_ec;
  undefined8 local_e8;
  undefined **local_d8;
  longlong local_d0;
  undefined ***local_a0;
  longlong local_98 [7];
  longlong *local_60;
  ulonglong local_58;
  
  local_e8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_168;
  lVar7 = FUN_18134adf0();
  iVar12 = *(int *)(param_1 + 0x28);
  iVar15 = *(int *)(param_1 + 0x2c);
  if (1 < *(int *)(param_1 + 0xf8) - 2U) {
    iVar12 = *(int *)(param_1 + 0x2c);
    iVar15 = *(int *)(param_1 + 0x28);
  }
  local_110 = CONCAT44(local_110._4_4_,iVar15);
  plVar11 = (longlong *)(lVar7 + 0x78);
  local_128 = plVar11;
  local_118 = iVar12;
  iVar4 = (**(code **)(*plVar11 + 0x10))(plVar11,iVar12);
  iVar5 = (**(code **)(*plVar11 + 8))(plVar11);
  local_130 = iVar4 + iVar5 * 2;
  iVar4 = 0;
  if (0 < local_130) {
    iVar4 = local_130;
  }
  local_114 = *(int *)(param_1 + 0xf4);
  iVar5 = 0;
  if (0 < local_114) {
    iVar15 = 0;
    if (0 < local_130 / 2) {
      iVar15 = local_130 / 2;
    }
    lVar7 = 0;
    do {
      plVar11 = (longlong *)**(longlong **)(lVar7 + *(longlong *)(param_1 + 0xe8));
      if ((undefined **)*plVar11 == juce::TabBarButton::vftable) {
        lVar8 = FUN_18134adf0();
        iVar6 = (**(code **)(*(longlong *)(lVar8 + 0x78) + 0x18))
                          ((longlong *)(lVar8 + 0x78),plVar11,iVar12);
      }
      else {
        iVar6 = (*(code *)((undefined **)*plVar11)[0x31])(plVar11,iVar12);
      }
      iVar4 = iVar4 + (iVar6 - local_130);
      *(int *)(plVar11 + 0x3a) = iVar15;
      iVar5 = iVar5 + 1;
      lVar7 = lVar7 + 8;
    } while (iVar5 < *(int *)(param_1 + 0xf4));
    plVar11 = local_128;
    iVar15 = (int)local_110;
  }
  dVar3 = DAT_1824c4520;
  dVar17 = DAT_1824c4140;
  if (iVar15 < iVar4) {
    dVar17 = (double)iVar15 / (double)iVar4;
    if ((double)iVar15 / (double)iVar4 <= *(double *)(param_1 + 0x100)) {
      dVar17 = *(double *)(param_1 + 0x100);
    }
  }
  if ((int)((double)iVar4 * dVar17) <= iVar15) {
    puVar1 = *(undefined8 **)(param_1 + 0x118);
    *(undefined8 *)(param_1 + 0x118) = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    goto LAB_1813195cb;
  }
  if (*(longlong *)(param_1 + 0x118) == 0) {
    uVar9 = (**(code **)(*plVar11 + 0x60))(plVar11);
    puVar1 = *(undefined8 **)(param_1 + 0x118);
    *(undefined8 *)(param_1 + 0x118) = uVar9;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    plVar11 = *(longlong **)(param_1 + 0x118);
    if (plVar11 != (longlong *)0x0) {
      (**(code **)(*plVar11 + 0x58))(plVar11,1);
      FUN_181343cc0(param_1,plVar11,0xffffffff);
    }
    FUN_18134b0f0(*(undefined8 *)(param_1 + 0x118),1);
    *(undefined1 *)(*(longlong *)(param_1 + 0x118) + 0x1c5) = 1;
    lVar7 = *(longlong *)(param_1 + 0x118);
    pppuVar10 = (undefined ***)(lVar7 + 0xc0);
    local_d8 = std::_Func_impl_no_alloc<<lambda_b35832574168a497f5fce54d28b07bbb>,void>::vftable;
    local_a0 = &local_d8;
    local_60 = (longlong *)0x0;
    local_d0 = param_1;
    local_60 = (longlong *)(*(code *)PTR_FUN_18249f860)(&local_d8,local_98);
    if (local_a0 != (undefined ***)0x0) {
      (*(code *)(*local_a0)[4])(local_a0,local_a0 != &local_d8);
      local_a0 = (undefined ***)0x0;
    }
    pppuVar2 = *(undefined ****)(lVar7 + 0xf8);
    if (pppuVar2 != (undefined ***)0x0) {
      if (pppuVar2 == pppuVar10) {
        local_a0 = (undefined ***)(*(code *)(*pppuVar2)[1])(pppuVar2,&local_d8);
        pppuVar2 = *(undefined ****)(lVar7 + 0xf8);
        if (pppuVar2 == (undefined ***)0x0) goto LAB_1813193c9;
        (*(code *)(*pppuVar2)[4])(pppuVar2,pppuVar2 != pppuVar10);
        pppuVar2 = local_a0;
      }
      local_a0 = pppuVar2;
      *(undefined8 *)(lVar7 + 0xf8) = 0;
    }
LAB_1813193c9:
    FUN_180488560(pppuVar10,local_98);
    if (local_60 != (longlong *)0x0) {
      (**(code **)(*local_60 + 0x20))(local_60,local_60 != local_98);
    }
    if (local_a0 != (undefined ***)0x0) {
      (*(code *)(*local_a0)[4])(local_a0,local_a0 != &local_d8);
    }
  }
  local_138 = (longlong *)((double)((float)*(int *)(param_1 + 0x2c) * DAT_1824c3df0) + dVar3);
  local_128 = (longlong *)((double)((float)*(int *)(param_1 + 0x28) * DAT_1824c3df0) + dVar3);
  plVar11 = local_128;
  if ((int)local_138 < (int)local_128) {
    plVar11 = local_138;
  }
  lVar7 = *(longlong *)(param_1 + 0x118);
  iVar15 = (int)plVar11;
  local_148 = iVar15;
  FUN_18134bfe0(lVar7,*(undefined4 *)(lVar7 + 0x20),*(undefined4 *)(lVar7 + 0x24),
                (ulonglong)plVar11 & 0xffffffff);
  if (*(int *)(param_1 + 0xf8) - 2U < 2) {
    iVar15 = (*(int *)(param_1 + 0x2c) - iVar15 / 2) + -1;
    local_138 = (longlong *)CONCAT44(iVar15,*(int *)(param_1 + 0x28) / 2);
  }
  else {
    iVar15 = (*(int *)(param_1 + 0x28) - iVar15 / 2) + -1;
    local_138 = (longlong *)CONCAT44(*(int *)(param_1 + 0x2c) / 2,iVar15);
  }
  FUN_181344690(*(undefined8 *)(param_1 + 0x118),local_138);
  iVar5 = 0;
  iVar4 = 0;
  if (0 < *(int *)(param_1 + 0xf4)) {
    lVar7 = 0;
    do {
      plVar11 = (longlong *)**(undefined8 **)(*(longlong *)(param_1 + 0xe8) + lVar7 * 8);
      if ((undefined **)*plVar11 == juce::TabBarButton::vftable) {
        lVar8 = FUN_18134adf0();
        iVar6 = (**(code **)(*(longlong *)(lVar8 + 0x78) + 0x18))
                          ((longlong *)(lVar8 + 0x78),plVar11,iVar12);
      }
      else {
        iVar6 = (*(code *)((undefined **)*plVar11)[0x31])(plVar11,iVar12);
      }
      if ((0 < lVar7) && ((double)iVar15 < (double)(iVar6 + iVar5) * *(double *)(param_1 + 0x100)))
      {
        iVar5 = iVar5 + local_130;
        break;
      }
      iVar4 = iVar4 + 1;
      iVar5 = (iVar6 + iVar5) - local_130;
      lVar7 = lVar7 + 1;
      local_114 = iVar4;
    } while (iVar4 < *(int *)(param_1 + 0xf4));
  }
  dVar17 = (double)iVar15 / (double)iVar5;
  if ((double)iVar15 / (double)iVar5 <= *(double *)(param_1 + 0x100)) {
    dVar17 = *(double *)(param_1 + 0x100);
  }
LAB_1813195cb:
  uVar13 = 0;
  local_138 = (longlong *)0x0;
  if (DAT_182673700 == 0) {
    local_128 = (longlong *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_128);
  }
  iVar12 = local_118;
  local_110 = DAT_182673700 + 200;
  uVar14 = 0;
  plVar11 = (longlong *)0x0;
  if (0 < *(int *)(param_1 + 0xf4)) {
    lVar7 = 0;
    bVar16 = *(int *)(param_1 + 0xf4) != 0;
    do {
      if (((bVar16) &&
          (plVar11 = *(longlong **)(*(longlong *)(param_1 + 0xe8) + lVar7 * 8),
          plVar11 != (longlong *)0x0)) &&
         (plVar11 = (longlong *)*plVar11, plVar11 != (longlong *)0x0)) {
        if ((undefined **)*plVar11 == juce::TabBarButton::vftable) {
          lVar8 = FUN_18134adf0();
          iVar15 = (**(code **)(*(longlong *)(lVar8 + 0x78) + 0x18))
                             ((longlong *)(lVar8 + 0x78),plVar11,iVar12);
        }
        else {
          iVar15 = (*(code *)((undefined **)*plVar11)[0x31])(plVar11,iVar12);
        }
        local_128 = (longlong *)((double)iVar15 * dVar17 + dVar3);
        iVar15 = (int)local_128;
        if (lVar7 < local_114) {
          if (*(int *)(param_1 + 0xf8) - 2U < 2) {
            local_108 = 0;
            uStack_100 = *(undefined4 *)(param_1 + 0x28);
            local_128 = (longlong *)((ulonglong)uVar13 << 0x20);
            uStack_120 = CONCAT44(iVar15,uStack_100);
            uStack_104 = uVar13;
            iStack_fc = iVar15;
          }
          else {
            uStack_f4 = 0;
            uStack_ec = *(undefined4 *)(param_1 + 0x2c);
            local_128 = (longlong *)(ulonglong)uVar13;
            uStack_120 = CONCAT44(uStack_ec,iVar15);
            local_f8 = uVar13;
            iStack_f0 = iVar15;
          }
          FUN_181323c50(local_110,plVar11);
          local_148 = (int)(uStack_120 >> 0x20);
          FUN_18134bfe0(plVar11,local_128,(ulonglong)local_128 >> 0x20,uStack_120 & 0xffffffff);
          FUN_181344d70(plVar11);
          if (uVar14 == *(uint *)(param_1 + 0x108)) {
            local_138 = plVar11;
          }
          uVar9 = 1;
        }
        else {
          uVar9 = 0;
        }
        (**(code **)(*plVar11 + 0x58))(plVar11,uVar9);
        uVar13 = uVar13 + (iVar15 - local_130);
      }
      uVar14 = uVar14 + 1;
      lVar7 = lVar7 + 1;
      bVar16 = uVar14 < *(uint *)(param_1 + 0xf4);
      plVar11 = local_138;
    } while ((int)uVar14 < (int)*(uint *)(param_1 + 0xf4));
  }
  local_128 = (longlong *)0x0;
  local_148 = *(undefined4 *)(param_1 + 0x2c);
  uStack_120 = *(undefined8 *)(param_1 + 0x28);
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x110),0,0);
  if (plVar11 != (longlong *)0x0) {
    FUN_181344f60(plVar11,0);
    FUN_181344e50(*(undefined8 *)(param_1 + 0x110),plVar11);
  }
}



############ FUN_ 18131d0b0 size=345 ############

void FUN_18131d0b0(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int iVar7;
  ulonglong uVar8;
  
  *param_1 = juce::SidePanel::vftable;
  param_1[0x16] = juce::SidePanel::vftable;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  lVar2 = DAT_182673700;
  uVar6 = 0;
  uVar5 = uVar6;
  uVar8 = uVar6;
  if (0 < (longlong)*(int *)(DAT_182673700 + 0x44)) {
    do {
      if (param_1 == *(undefined8 **)(*(longlong *)(DAT_182673700 + 0x38) + uVar5 * 8)) {
        FUN_18049b4a0(DAT_182673700 + 0x38,uVar8);
        break;
      }
      uVar8 = (ulonglong)((int)uVar8 + 1);
      uVar5 = uVar5 + 1;
    } while ((longlong)uVar5 < (longlong)*(int *)(DAT_182673700 + 0x44));
  }
  FUN_18133bd90(lVar2);
  lVar2 = param_1[0x27];
  if (lVar2 != 0) {
    lVar3 = *(longlong *)(lVar2 + 0x80);
    iVar1 = *(int *)(lVar2 + 0x8c);
    uVar5 = uVar6;
    if (0 < iVar1) {
      do {
        iVar7 = (int)uVar5;
        if (param_1 + 0x16 == *(undefined8 **)(lVar3 + uVar6 * 8)) {
          _Dst = (void *)(lVar3 + (longlong)iVar7 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar7) + -1) << 3);
          *(int *)(lVar2 + 0x8c) = *(int *)(lVar2 + 0x8c) + -1;
          iVar1 = *(int *)(lVar2 + 0x8c);
          iVar7 = 0;
          if (0 < iVar1 * 2) {
            iVar7 = iVar1 * 2;
          }
          if (iVar7 < *(int *)(lVar2 + 0x88)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar2 + 0x88)) {
              FUN_18047cb30((longlong *)(lVar2 + 0x80));
            }
          }
          break;
        }
        uVar5 = (ulonglong)(iVar7 + 1);
        uVar6 = uVar6 + 1;
      } while ((longlong)uVar6 < (longlong)iVar1);
    }
  }
  param_1[0x6d] = juce::ShapeButton::vftable;
  param_1[0x83] = juce::ShapeButton::vftable;
  *(undefined4 *)((longlong)param_1 + 0x574) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0xad]);
}



############ FUN_ 1804f8510 size=114 ############

void FUN_1804f8510(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  undefined8 uVar2;
  
  plVar1 = *(longlong **)(param_1 + 0x120);
  if (*(code **)(*plVar1 + 0x168) == FUN_181318800) {
    uVar2 = FUN_1811316e0(0x1e8);
    FUN_18131ab40(uVar2,param_2,plVar1[0x16]);
    return;
  }
  (**(code **)(*plVar1 + 0x168))(plVar1);
  return;
}



############ FUN_ 1804f8940 size=268 ############

void FUN_1804f8940(undefined8 *param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  uint uVar4;
  longlong *plVar5;
  ulonglong uVar6;
  undefined8 uVar7;
  longlong lVar8;
  int iVar9;
  
  *param_1 = juce::Viewport::DragToScrollListener::vftable;
  param_1[1] = juce::Viewport::DragToScrollListener::vftable;
  plVar1 = *(longlong **)(param_1[2] + 0x140);
  if (plVar1 != (longlong *)0x0) {
    plVar2 = (longlong *)*plVar1;
    for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)((longlong)plVar1 + 0xc); plVar5 = plVar5 + 1)
    {
      if (param_1 == (undefined8 *)*plVar5) {
        uVar6 = (longlong)plVar5 - (longlong)plVar2 >> 3;
        uVar4 = (uint)uVar6;
        if (-1 < (int)uVar4) {
          if ((int)uVar4 < (int)plVar1[2]) {
            *(int *)(plVar1 + 2) = (int)plVar1[2] + -1;
          }
          if (uVar4 < *(uint *)((longlong)plVar1 + 0xc)) {
            FUN_18049b4a0(plVar1,uVar6 & 0xffffffff,plVar1,plVar2,0xfffffffffffffffe);
          }
        }
        break;
      }
    }
  }
  if (DAT_182673700 == 0) {
    uVar7 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar7);
  }
  lVar3 = DAT_182673700;
  iVar9 = 0;
  lVar8 = 0;
  if (0 < (longlong)*(int *)(DAT_182673700 + 0x44)) {
    do {
      if (param_1 == *(undefined8 **)(*(longlong *)(DAT_182673700 + 0x38) + lVar8 * 8)) {
        FUN_18049b4a0(DAT_182673700 + 0x38,iVar9);
        break;
      }
      iVar9 = iVar9 + 1;
      lVar8 = lVar8 + 1;
    } while (lVar8 < *(int *)(DAT_182673700 + 0x44));
  }
  FUN_18133bd90(lVar3);
  *(undefined4 *)((longlong)param_1 + 0x104) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1f]);
}



############ FUN_ 1804f8ae0 size=198 ############

void FUN_1804f8ae0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  if (*(char *)(param_1 + 0x111) == '\0') {
    uVar1 = *(undefined8 *)(param_1 + 0x48);
    FUN_1812a7720(param_1 + 0x18,param_2,param_3,param_4,0xfffffffffffffffe);
    FUN_18051c3e0(param_1 + 0x18,(int)uVar1);
    uVar1 = *(undefined8 *)(param_1 + 0xc0);
    FUN_1812a7720(param_1 + 0x90);
    FUN_18051c3e0(param_1 + 0x90,(int)uVar1);
    FUN_181341510(*(longlong *)(param_1 + 0x10) + 0xd0,param_1);
    if (DAT_182673700 == 0) {
      uVar1 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar1);
    }
    FUN_18134b370(DAT_182673700,param_1);
    *(undefined1 *)(param_1 + 0x111) = 1;
  }
  return;
}



############ FUN_ 1804f8bb0 size=499 ############

void FUN_1804f8bb0(longlong param_1,float *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  longlong lVar2;
  longlong *plVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  float fVar7;
  int local_res18;
  int local_res20;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130,param_2,param_3,param_4,0xfffffffffffffffe);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  uVar4 = 0;
  plVar3 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18);
  uVar6 = (ulonglong)
          ((longlong)(plVar3 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x24)) +
          (7 - (longlong)plVar3)) >> 3;
  if (plVar3 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x24) < plVar3) {
    uVar6 = uVar4;
  }
  uVar5 = uVar4;
  if (uVar6 != 0) {
    do {
      if ((*(byte *)(*plVar3 + 0x28) & 0x70) != 0) {
        uVar5 = (ulonglong)((int)uVar5 + 1);
      }
      plVar3 = plVar3 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar6);
    if ((int)uVar5 == 1) {
      lVar2 = *(longlong *)(param_2 + 0xc);
      if (lVar2 != 0) {
        do {
          if (lVar2 == *(longlong *)(param_1 + 0x10)) break;
          if ((*(byte *)(lVar2 + 0xaa) & 4) != 0) {
            return;
          }
          lVar2 = *(longlong *)(lVar2 + 0x18);
        } while (lVar2 != 0);
      }
      local_res18 = SUB84((double)(*param_2 - param_2[10]) + DAT_1824c4520,0);
      local_res20 = SUB84((double)(param_2[1] - param_2[0xb]) + DAT_1824c4520,0);
      if (*(char *)(param_1 + 0x110) == '\0') {
        fVar7 = _hypotf((float)local_res18,(float)local_res20);
        if (DAT_1824c43d8 < fVar7) {
          *(undefined1 *)(param_1 + 0x110) = 1;
          *(undefined8 *)(param_1 + 0x108) = *(undefined8 *)(*(longlong *)(param_1 + 0x10) + 0x188);
          FUN_1812a7720(param_1 + 0x18);
          FUN_18051c3e0(param_1 + 0x18,0);
          *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(param_1 + 0x48);
          *(undefined8 *)(param_1 + 0x58) = 0;
          FUN_1812a7720(param_1 + 0x18);
          lVar2 = param_1 + 0x90;
          FUN_1812a7720(lVar2);
          FUN_18051c3e0(lVar2,0);
          *(undefined8 *)(param_1 + 200) = *(undefined8 *)(param_1 + 0xc0);
          *(undefined8 *)(param_1 + 0xd0) = 0;
          FUN_1812a7720(lVar2);
        }
        if (*(char *)(param_1 + 0x110) == '\0') {
          return;
        }
      }
      FUN_18051a830(param_1 + 0x18,(double)local_res18);
      FUN_18051a830(param_1 + 0x90,(double)local_res20);
    }
  }
  return;
}



############ FUN_ 1804f8db0 size=364 ############

void FUN_1804f8db0(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  longlong *plVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x111) != '\0') {
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    uVar3 = 0;
    plVar4 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18);
    uVar5 = (ulonglong)
            ((longlong)(plVar4 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x24)) +
            (7 - (longlong)plVar4)) >> 3;
    if (plVar4 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x24) < plVar4) {
      uVar5 = uVar3;
    }
    uVar6 = uVar3;
    uVar7 = uVar3;
    if (uVar5 != 0) {
      do {
        if ((*(byte *)(*plVar4 + 0x28) & 0x70) != 0) {
          uVar7 = (ulonglong)((int)uVar7 + 1);
        }
        plVar4 = plVar4 + 1;
        uVar6 = uVar6 + 1;
      } while (uVar6 != uVar5);
      if ((int)uVar7 != 0) {
        return;
      }
    }
    FUN_1812a77d0(param_1 + 0x18,0x10,uVar6,uVar7,uVar8);
    FUN_1812a77d0(param_1 + 0x90,0x10);
    *(undefined1 *)(param_1 + 0x110) = 0;
    FUN_181341570(*(longlong *)(param_1 + 0x10) + 0xd0,param_1,1);
    if (DAT_182673700 == 0) {
      uVar8 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar8);
    }
    lVar1 = DAT_182673700;
    uVar5 = uVar3;
    if (0 < (longlong)*(int *)(DAT_182673700 + 0x44)) {
      do {
        if (param_1 == *(longlong *)(*(longlong *)(DAT_182673700 + 0x38) + uVar3 * 8)) {
          FUN_18049b4a0(DAT_182673700 + 0x38,uVar5);
          break;
        }
        uVar5 = (ulonglong)((int)uVar5 + 1);
        uVar3 = uVar3 + 1;
      } while ((longlong)uVar3 < (longlong)*(int *)(DAT_182673700 + 0x44));
    }
    FUN_18133bd90(lVar1);
    *(undefined1 *)(param_1 + 0x111) = 0;
  }
  return;
}



############ FUN_ 181296970 size=266 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181296970(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined4 local_40 [2];
  undefined8 *local_38;
  undefined8 *local_30;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined4 local_18;
  undefined4 local_14;
  
  local_40[0] = 0xff000000;
  local_38 = (undefined8 *)FUN_1811316e0(0x28,param_2,param_3,param_4,0xfffffffffffffffe);
  *local_38 = *param_2;
  local_38[1] = param_2[1];
  *(undefined1 *)(local_38 + 2) = *(undefined1 *)(param_2 + 2);
  local_38[3] = param_2[3];
  param_2[3] = 0;
  *(undefined4 *)(local_38 + 4) = *(undefined4 *)(param_2 + 4);
  *(undefined4 *)((longlong)local_38 + 0x24) = *(undefined4 *)((longlong)param_2 + 0x24);
  param_2[4] = 0;
  local_30 = (undefined8 *)0x0;
  local_28 = _DAT_1824c4780;
  uStack_20 = _UNK_1824c4788;
  local_18 = DAT_1824c3ea4;
  local_14 = 0;
  if (*(char *)(param_1 + 0x10) != '\0') {
    *(undefined1 *)(param_1 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_1 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_1 + 8) + 0x88))(*(longlong **)(param_1 + 8),local_40);
  if (local_30 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_30 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_30)(local_30,1);
    }
  }
  if (local_38 != (undefined8 *)0x0) {
    *(undefined4 *)((longlong)local_38 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)local_38[3]);
  }
  return;
}



############ FUN_ 181296a90 size=256 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181296a90(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined4 local_40 [2];
  undefined8 *local_38;
  undefined8 *local_30;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined4 local_18;
  undefined4 local_14;
  
  local_40[0] = 0xff000000;
  puVar3 = (undefined8 *)FUN_1811316e0(0x28,param_2,param_3,param_4,0xfffffffffffffffe);
  *puVar3 = *param_2;
  puVar3[1] = param_2[1];
  *(undefined1 *)(puVar3 + 2) = *(undefined1 *)(param_2 + 2);
  FUN_1804aaeb0(puVar3 + 3,param_2 + 3);
  local_30 = (undefined8 *)0x0;
  local_28 = _DAT_1824c4780;
  uStack_20 = _UNK_1824c4788;
  local_18 = DAT_1824c3ea4;
  local_14 = 0;
  local_38 = puVar3;
  if (*(char *)(param_1 + 0x10) != '\0') {
    *(undefined1 *)(param_1 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_1 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_1 + 8) + 0x88))(*(longlong **)(param_1 + 8),local_40);
  if (local_30 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_30 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_30)(local_30,1);
    }
  }
  if (local_38 != (undefined8 *)0x0) {
    *(undefined4 *)((longlong)local_38 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)local_38[3]);
  }
  return;
}



############ FUN_ 1804f9e00 size=193 ############

void FUN_1804f9e00(undefined8 *param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong *plVar3;
  int iVar4;
  
  *param_1 = juce::MenuBarComponent::vftable;
  param_1[0x16] = juce::MenuBarComponent::vftable;
  param_1[0x17] = juce::MenuBarComponent::vftable;
  FUN_1812f40d0();
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  lVar1 = DAT_182673700;
  plVar3 = *(longlong **)(DAT_182673700 + 0x38);
  iVar4 = 0;
  if (0 < *(int *)(DAT_182673700 + 0x44)) {
    do {
      if (param_1 == (undefined8 *)*plVar3) {
        FUN_18049b4a0(DAT_182673700 + 0x38);
        break;
      }
      iVar4 = iVar4 + 1;
      plVar3 = plVar3 + 1;
    } while (iVar4 < *(int *)(DAT_182673700 + 0x44));
  }
  FUN_18133bd90(lVar1);
  *(undefined4 *)((longlong)param_1 + 0xf4) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1d]);
}



############ FUN_ 1804fa3a0 size=744 ############

longlong * FUN_1804fa3a0(longlong *param_1,longlong param_2,undefined4 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  uint *_Memory;
  int iVar8;
  undefined4 uVar9;
  int local_res10 [2];
  undefined8 in_stack_ffffffffffffff78;
  undefined4 *puVar10;
  undefined4 local_78 [2];
  undefined8 *local_70;
  undefined8 local_68;
  undefined8 local_58;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uVar11;
  
  uVar11 = (undefined4)((ulonglong)in_stack_ffffffffffffff78 >> 0x20);
  local_68 = 0xfffffffffffffffe;
  param_1[1] = (longlong)&DAT_1821dbf98;
  param_1[2] = (longlong)&DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = (longlong)juce::PopupMenu::HelperClasses::ItemComponent::vftable;
  plVar3 = param_1 + 0x16;
  FUN_1812f0e30(plVar3);
  lVar5 = *(longlong *)(param_2 + 0x60);
  param_1[0x27] = lVar5;
  if (lVar5 != 0) {
    *(int *)(lVar5 + 0xb8) = *(int *)(lVar5 + 0xb8) + 1;
  }
  *(undefined1 *)(param_1 + 0x28) = 0;
  if (*(char *)((longlong)param_1 + 0x137) != '\0') {
    puVar4 = (undefined8 *)FUN_1811316e0(0xd0);
    puVar7 = puVar4;
    local_70 = puVar4;
    uVar9 = FUN_1812effb0(puVar4,0);
    *puVar7 = juce::PopupMenu::HelperClasses::HeaderItemComponent::vftable;
    puVar7[0x16] = juce::PopupMenu::HelperClasses::HeaderItemComponent::vftable;
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(uVar9,plVar3);
    if ((undefined8 *)param_1[0x27] != puVar4) {
      *(int *)(puVar4 + 0x17) = *(int *)(puVar4 + 0x17) + 1;
      puVar7 = (undefined8 *)param_1[0x27];
      param_1[0x27] = (longlong)puVar4;
      if (puVar7 != (undefined8 *)0x0) {
        piVar1 = (int *)(puVar7 + 0x17);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*puVar7)(puVar7,1);
        }
      }
    }
  }
  lVar5 = param_1[0x27];
  if (lVar5 != 0) {
    *(longlong **)(lVar5 + 200) = plVar3;
    uStack_4c = *(undefined4 *)(lVar5 + 0x2c);
    uStack_50 = *(undefined4 *)(lVar5 + 0x28);
    local_58 = 0;
    local_48 = 0;
    uStack_44 = 0;
    uStack_40 = uStack_50;
    uStack_3c = uStack_4c;
    FUN_181342870(lVar5,&local_48,1);
    plVar3 = (longlong *)param_1[0x27];
    (**(code **)(*plVar3 + 0x58))(plVar3,1);
    FUN_181343cc0(param_1,plVar3,0xffffffff);
  }
  (**(code **)(*param_1 + 0x58))(param_1,1);
  FUN_181343cc0(param_4,param_1,0xffffffff);
  FUN_1804fa930(param_1);
  local_78[0] = 0x50;
  local_res10[0] = 0x10;
  plVar3 = (longlong *)param_1[0x27];
  if (plVar3 == (longlong *)0x0) {
    lVar5 = FUN_18134adf0(param_1);
    uVar6 = FUN_1804fad70(param_1,&local_70);
    puVar10 = local_78;
    (**(code **)(*(longlong *)(lVar5 + 0x40) + 0x30))
              ((longlong *)(lVar5 + 0x40),uVar6,*(undefined1 *)((longlong)param_1 + 0x136),param_3,
               puVar10,local_res10);
    uVar11 = (undefined4)((ulonglong)puVar10 >> 0x20);
    _Memory = (uint *)(local_70 + -2);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  else {
    (**(code **)(*plVar3 + 0x158))(plVar3,local_78,local_res10);
  }
  iVar8 = 1;
  if ((0 < local_res10[0]) && (iVar8 = local_res10[0], 600 < local_res10[0])) {
    iVar8 = 600;
  }
  FUN_18134bfe0(param_1,(int)param_1[4],*(undefined4 *)((longlong)param_1 + 0x24),local_78[0],
                CONCAT44(uVar11,iVar8));
  FUN_181341570(param_1,param_4,0);
  return param_1;
}



############ FUN_ 1804faf50 size=2107 ############

undefined8 *
FUN_1804faf50(undefined8 *param_1,longlong *param_2,longlong param_3,undefined8 *param_4,
             undefined1 param_5,undefined1 param_6,undefined8 param_7,undefined4 param_8)

{
  uint *_Memory;
  int *piVar1;
  int *piVar2;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  undefined8 uVar6;
  char cVar7;
  DWORD DVar8;
  uint uVar9;
  uint uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  undefined8 uVar14;
  undefined8 *puVar15;
  longlong *plVar16;
  int iVar17;
  ulonglong uVar18;
  longlong *plVar19;
  undefined4 uVar20;
  undefined1 local_res10 [8];
  longlong local_res18;
  undefined8 *local_res20;
  undefined8 local_108;
  undefined8 local_100;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_ec;
  undefined8 local_e8;
  undefined8 uStack_e0;
  longlong local_d8;
  longlong *local_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined1 local_8c;
  undefined4 local_88;
  undefined8 local_80;
  undefined1 local_78 [8];
  undefined1 local_70 [8];
  undefined8 local_68;
  undefined8 uStack_60;
  undefined1 local_58 [24];
  
  local_80 = 0xfffffffffffffffe;
  local_res18 = param_3;
  local_res20 = param_4;
  FUN_18049c4e0(&local_d8,&DAT_18249f288);
  *param_1 = juce::Component::vftable;
  param_1[1] = local_d8;
  _Memory = (uint *)(local_d8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  uVar18 = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar10 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::PopupMenu::HelperClasses::MenuWindow::vftable;
  param_1[0x16] = param_3;
  piVar2 = (int *)(param_1 + 0x17);
  uVar14 = param_4[1];
  *(undefined8 *)piVar2 = *param_4;
  param_1[0x18] = uVar14;
  param_1[0x19] = param_4[2];
  param_1[0x1a] = param_4[3];
  lVar13 = param_4[4];
  param_1[0x1b] = lVar13;
  if (lVar13 != 0) {
    LOCK();
    *(int *)(lVar13 + 8) = *(int *)(lVar13 + 8) + 1;
    UNLOCK();
  }
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_4 + 5);
  *(undefined4 *)((longlong)param_1 + 0xe4) = *(undefined4 *)((longlong)param_4 + 0x2c);
  *(undefined4 *)(param_1 + 0x1d) = *(undefined4 *)(param_4 + 6);
  *(undefined4 *)((longlong)param_1 + 0xec) = *(undefined4 *)((longlong)param_4 + 0x34);
  *(undefined4 *)(param_1 + 0x1e) = *(undefined4 *)(param_4 + 7);
  *(undefined1 *)((longlong)param_1 + 0xf4) = *(undefined1 *)((longlong)param_4 + 0x3c);
  *(undefined4 *)(param_1 + 0x1f) = *(undefined4 *)(param_4 + 8);
  plVar16 = param_1 + 0x20;
  *plVar16 = 0;
  param_1[0x21] = 0;
  param_1[0x22] = param_7;
  FUN_1804de690(param_1 + 0x23,param_1[0x19]);
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  *(undefined2 *)(param_1 + 0x27) = 0;
  *(undefined1 *)((longlong)param_1 + 0x13a) = param_6;
  *(undefined2 *)((longlong)param_1 + 0x13b) = 0;
  *(undefined1 *)((longlong)param_1 + 0x13d) = 0;
  param_1[0x28] = 0;
  *(undefined4 *)(param_1 + 0x29) = 0;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  DVar8 = timeGetTime();
  if (DVar8 < DAT_1826737fc) {
    if (DVar8 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar8;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar8;
  }
  *(DWORD *)(param_1 + 0x2e) = DVar8;
  *(DWORD *)((longlong)param_1 + 0x174) = DVar8;
  *(DWORD *)(param_1 + 0x2f) = DVar8;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  uVar20 = DAT_1824c3ea4;
  if (param_3 != 0) {
    uVar20 = param_8;
  }
  *(undefined4 *)(param_1 + 0x32) = uVar20;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x80;
  FUN_18134b0f0(param_1,CONCAT71((uint7)(uint3)(DVar8 >> 8),1));
  if (param_1[0x16] == 0) {
    if (param_2[3] == 0) {
      uVar11 = 0;
    }
    else {
      uVar11 = *(ulonglong *)(param_2[3] + 0x10);
    }
  }
  else {
    uVar11 = FUN_18134adf0();
  }
  uVar12 = uVar18;
  if (param_1[10] != 0) {
    uVar12 = *(ulonglong *)(param_1[10] + 0x10);
  }
  if (uVar12 != uVar11) {
    FUN_18051b750(param_1 + 10);
    FUN_181341b10(param_1);
  }
  lVar13 = FUN_18134adf0(param_1);
  plVar19 = (longlong *)(lVar13 + 0x40);
  local_d0 = plVar19;
  if (*(code **)(*plVar19 + 0x68) == FUN_18130fd70) {
    local_b0 = param_1[0x1a];
  }
  else {
    local_b0 = (**(code **)(*plVar19 + 0x68))(plVar19,piVar2);
  }
  param_1[0x24] = local_b0;
  local_c8 = *(undefined8 *)piVar2;
  uStack_c0 = param_1[0x18];
  local_b8 = param_1[0x19];
  puVar15 = (undefined8 *)param_1[0x1b];
  if (puVar15 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar15 + 1) = *(int *)(puVar15 + 1) + 1;
    UNLOCK();
  }
  local_a0 = *(undefined4 *)(param_1 + 0x1c);
  local_9c = *(undefined4 *)((longlong)param_1 + 0xe4);
  local_98 = *(undefined4 *)(param_1 + 0x1d);
  local_94 = *(undefined4 *)((longlong)param_1 + 0xec);
  local_90 = *(undefined4 *)(param_1 + 0x1e);
  local_8c = *(undefined1 *)((longlong)param_1 + 0xf4);
  local_88 = *(undefined4 *)(param_1 + 0x1f);
  local_a8 = puVar15;
  FUN_1804ff130(piVar2,&local_c8);
  if (puVar15 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar15 + 1);
    iVar17 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar17 == 1) {
      (**(code **)*local_a8)(local_a8,1);
    }
  }
  if ((((param_1[0x24] == 0) && (local_res18 == 0)) &&
      ((*(code **)(*plVar19 + 0x78) == FUN_18130fd50 ||
       (cVar7 = (**(code **)(*plVar19 + 0x78))(plVar19,piVar2), cVar7 != '\0')))) &&
     (param_1[0x19] != 0)) {
    uVar20 = FUN_181344210();
    *(undefined4 *)(param_1 + 0x32) = uVar20;
  }
  lVar13 = FUN_181346420(lVar13,local_res10,0x1000700);
  FUN_18134bd50(param_1,*(char *)(lVar13 + 3) == -1);
  lVar13 = param_2[1];
  lVar3 = lVar13 - *param_2 >> 0x3f;
  uVar11 = uVar18;
  if ((lVar13 - *param_2) / 0x88 + lVar3 != lVar3) {
    do {
      lVar3 = *param_2 + uVar11;
      uVar18 = uVar18 + 1;
      if ((uVar18 < (ulonglong)((lVar13 - *param_2) / 0x88)) || (*(char *)(lVar3 + 0x86) == '\0')) {
        local_res18 = FUN_1811316e0(0x148);
        uVar14 = FUN_1804fa3a0(local_res18,lVar3,*(undefined4 *)(param_1 + 0x1e),param_1);
        iVar4 = *(int *)((longlong)param_1 + 0x10c);
        iVar17 = iVar4 + 1;
        if (*(int *)(param_1 + 0x21) < iVar17) {
          if (iVar17 < 0) {
            iVar17 = iVar4 + 2;
          }
          FUN_18047cb30(plVar16,iVar4 + 9 + (iVar17 >> 1) & 0xfffffff8);
        }
        iVar17 = *(int *)((longlong)param_1 + 0x10c);
        *(int *)((longlong)param_1 + 0x10c) = iVar17 + 1;
        *(undefined8 *)(*plVar16 + (longlong)iVar17 * 8) = uVar14;
      }
      lVar13 = param_2[1];
      plVar19 = local_d0;
      uVar11 = uVar11 + 0x88;
    } while (uVar18 < (ulonglong)((lVar13 - *param_2) / 0x88));
  }
  local_f8 = *(float *)(param_1 + 0x32);
  local_e8 = *(undefined8 *)piVar2;
  uStack_e0 = param_1[0x18];
  local_ec = (float)*(int *)((longlong)param_1 + 0xc4) / local_f8;
  local_f0 = (float)*(int *)(param_1 + 0x18) / local_f8;
  local_f4 = (float)*(int *)((longlong)param_1 + 0xbc) / local_f8;
  local_f8 = (float)*piVar2 / local_f8;
  puVar15 = (undefined8 *)FUN_1804ab070(&local_f8,local_58);
  local_e8 = *puVar15;
  uStack_e0 = puVar15[1];
  local_68 = local_e8;
  uStack_60 = uStack_e0;
  FUN_1804fcbe0(param_1,&local_68,param_5);
  FUN_18134bfe0(param_1,param_1[0x25] & 0xffffffff,(ulonglong)param_1[0x25] >> 0x20,
                *(undefined4 *)(param_1 + 5),*(undefined4 *)((longlong)param_1 + 0x2c));
  FUN_1804fd880(param_1);
  iVar17 = *(int *)(param_1 + 0x1c);
  if (iVar17 != 0) {
    lVar13 = param_1[0x24];
    uVar14 = local_e8;
    uVar6 = local_108;
    if (lVar13 != 0) {
      lVar3 = lVar13;
      for (lVar5 = *(longlong *)(lVar13 + 0x18); lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
        lVar3 = lVar5;
      }
      puVar15 = (undefined8 *)FUN_18051e060(local_78,lVar3,local_e8);
      uVar14 = *puVar15;
      uVar6 = uVar14;
      if (lVar3 != lVar13) {
        if (*(longlong *)(lVar13 + 0x18) != lVar3) {
          puVar15 = (undefined8 *)FUN_180520050(local_70,lVar3);
          uVar14 = *puVar15;
        }
        FUN_18051e060(&local_108,lVar13,uVar14);
        uVar14 = local_108;
        uVar6 = local_108;
      }
    }
    local_108 = uVar6;
    uVar9 = (int)((ulonglong)uVar14 >> 0x20) - *(int *)((longlong)param_1 + 300);
    uVar10 = 0xffffffff;
    if (uVar9 < *(uint *)((longlong)param_1 + 0x134)) {
      uVar10 = uVar9;
    }
    FUN_1804fd500(param_1,iVar17,uVar10);
  }
  FUN_1804fd6e0(param_1);
  if (param_1[0x24] == 0) {
    if (*(code **)(*plVar19 + 0x38) == FUN_181310180) {
      uVar10 = 0x100;
    }
    else {
      uVar10 = (**(code **)(*plVar19 + 0x38))(plVar19);
    }
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar10 | 0x402,0);
    if (DAT_182673700 == 0) {
      local_res18 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res18);
    }
    FUN_18134b370(DAT_182673700,param_1);
  }
  else {
    FUN_181343cc0(param_1[0x24],param_1,0xffffffff);
  }
  plVar16 = (longlong *)FUN_1804fc440();
  iVar17 = *(int *)((longlong)plVar16 + 0xc) + 1;
  if ((int)plVar16[1] < iVar17) {
    FUN_18047cb30(plVar16,*(int *)((longlong)plVar16 + 0xc) + 9 + iVar17 / 2 & 0xfffffff8);
  }
  iVar17 = *(int *)((longlong)plVar16 + 0xc);
  *(int *)((longlong)plVar16 + 0xc) = iVar17 + 1;
  *(undefined8 **)(*plVar16 + (longlong)iVar17 * 8) = param_1;
  if (*(code **)(*plVar19 + 0x70) != FUN_18130fd60) {
    (**(code **)(*plVar19 + 0x70))(plVar19,param_1);
  }
  if (DAT_182673700 == 0) {
    local_res18 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res18);
  }
  local_100 = **(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18);
  FUN_1804fc4c0(param_1,&local_100);
  puVar15 = (undefined8 *)local_res20[4];
  if (puVar15 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(puVar15 + 1);
    iVar17 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar17 == 1) {
      (**(code **)*puVar15)(puVar15,1);
    }
  }
  return param_1;
}



############ FUN_ 1804fc4c0 size=468 ############

undefined8 * FUN_1804fc4c0(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  void *pvVar5;
  int iVar6;
  ulonglong *puVar7;
  undefined8 *puVar8;
  uint uVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  
  puVar7 = *(ulonglong **)(param_1 + 0x180);
  puVar4 = (undefined8 *)0x0;
  puVar11 = (undefined8 *)
            ((ulonglong)((longlong)(puVar7 + *(int *)(param_1 + 0x18c)) + (7 - (longlong)puVar7)) >>
            3);
  if (puVar7 + *(int *)(param_1 + 0x18c) < puVar7) {
    puVar11 = puVar4;
  }
  puVar10 = puVar4;
  if (puVar11 != (undefined8 *)0x0) {
    do {
      puVar8 = (undefined8 *)*puVar7;
      plVar1 = puVar8 + 4;
      if ((*plVar1 != *param_2) &&
         (puVar8 = puVar4, *(int *)(*plVar1 + 0x14) != *(int *)(*param_2 + 0x14))) {
        FUN_1812a7720();
      }
      puVar7 = puVar7 + 1;
      puVar10 = (undefined8 *)((longlong)puVar10 + 1);
      puVar4 = puVar8;
    } while (puVar10 != puVar11);
    if (puVar8 != (undefined8 *)0x0) {
      return puVar8;
    }
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x48);
  lVar2 = *param_2;
  puVar4[1] = 0xffffffffffffffff;
  *(undefined4 *)(puVar4 + 2) = 0;
  *puVar4 = juce::PopupMenu::HelperClasses::MouseSourceState::vftable;
  puVar4[3] = param_1;
  puVar4[4] = lVar2;
  puVar4[5] = 0;
  puVar4[6] = 0;
  DVar3 = timeGetTime();
  if (DVar3 < DAT_1826737fc) {
    if (DVar3 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar3;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar3;
  }
  *(DWORD *)(puVar4 + 7) = DVar3;
  *(undefined4 *)((longlong)puVar4 + 0x3c) = 0;
  *(undefined1 *)(puVar4 + 8) = 0;
  FUN_1812a77d0(puVar4,0x32);
  iVar6 = *(int *)(param_1 + 0x18c) + 1;
  if ((int)*(uint *)(param_1 + 0x188) < iVar6) {
    uVar9 = *(int *)(param_1 + 0x18c) + 9 + iVar6 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 0x188) != uVar9) {
      pvVar5 = *(void **)(param_1 + 0x180);
      if ((int)uVar9 < 1) {
                    /* WARNING: Subroutine does not return */
        free(pvVar5);
      }
      if (pvVar5 == (void *)0x0) {
        pvVar5 = malloc((longlong)(int)uVar9 * 8);
        *(void **)(param_1 + 0x180) = pvVar5;
      }
      else {
        pvVar5 = realloc(pvVar5,(longlong)(int)uVar9 * 8);
        *(void **)(param_1 + 0x180) = pvVar5;
      }
    }
    *(uint *)(param_1 + 0x188) = uVar9;
  }
  iVar6 = *(int *)(param_1 + 0x18c);
  *(int *)(param_1 + 0x18c) = iVar6 + 1;
  *(undefined8 **)(*(longlong *)(param_1 + 0x180) + (longlong)iVar6 * 8) = puVar4;
  return puVar4;
}



############ FUN_ 1804fc960 size=626 ############

undefined8 * FUN_1804fc960(longlong param_1,undefined8 *param_2,undefined8 param_3,longlong param_4)

{
  float fVar1;
  code *pcVar2;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 *puVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  undefined1 local_res18 [8];
  undefined8 local_res20;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined1 local_38 [16];
  
  if (param_4 != 0) {
    for (; param_4 != 0; param_4 = *(longlong *)(param_4 + 0x18)) {
      puVar6 = (undefined8 *)FUN_18051e290(local_res18,param_4);
      param_3 = *puVar6;
    }
  }
  fVar1 = *(float *)(param_1 + 400);
  if (DAT_182673700 == 0) {
    local_res20 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res20);
  }
  lVar7 = FUN_18133d700(*(undefined8 *)(DAT_182673700 + 0x78),
                        CONCAT44((int)((float)(int)((ulonglong)param_3 >> 0x20) * fVar1),
                                 (int)((float)(int)param_3 * fVar1)),0);
  local_48 = *(undefined8 *)(lVar7 + 4);
  uStack_40 = *(undefined8 *)(lVar7 + 0xc);
  if (*(longlong *)(param_1 + 0x120) == 0) goto LAB_1804fcb79;
  lVar7 = FUN_18134adf0(param_1);
  pcVar2 = *(code **)(*(longlong *)(lVar7 + 0x40) + 0x80);
  if (pcVar2 == FUN_18130fd40) {
    iVar11 = 2;
  }
  else {
    iVar11 = (*pcVar2)();
  }
  lVar7 = *(longlong *)(param_1 + 0x120);
  uStack_50 = *(undefined8 *)(lVar7 + 0x28);
  local_58 = 0;
  for (; lVar7 != 0; lVar7 = *(longlong *)(lVar7 + 0x18)) {
    puVar6 = (undefined8 *)FUN_18051e4b0(local_38,lVar7,&local_58);
    local_58 = *puVar6;
    uStack_50 = puVar6[1];
  }
  iVar8 = (int)uStack_50 + iVar11 * -2;
  iVar9 = (int)((ulonglong)uStack_50 >> 0x20) + iVar11 * -2;
  iVar10 = (int)local_58 + iVar11;
  iVar11 = (int)((ulonglong)local_58 >> 0x20) + iVar11;
  iVar12 = 0;
  if (0 < iVar8) {
    iVar12 = iVar8;
  }
  iVar8 = 0;
  if (0 < iVar9) {
    iVar8 = iVar9;
  }
  iVar9 = iVar10;
  if (iVar10 < (int)local_48) {
    iVar9 = (int)local_48;
  }
  local_48._4_4_ = (int)((ulonglong)local_48 >> 0x20);
  iVar3 = iVar11;
  if (iVar11 < local_48._4_4_) {
    iVar3 = local_48._4_4_;
  }
  iVar13 = iVar12 + iVar10;
  if ((int)local_48 + (int)uStack_40 < iVar12 + iVar10) {
    iVar13 = (int)local_48 + (int)uStack_40;
  }
  if (iVar13 - iVar9 < 0) {
LAB_1804fcb2f:
    local_48 = 0;
    uStack_40 = 0;
  }
  else {
    uStack_40._4_4_ = (int)((ulonglong)uStack_40 >> 0x20);
    iVar12 = iVar8 + iVar11;
    if (uStack_40._4_4_ + local_48._4_4_ < iVar8 + iVar11) {
      iVar12 = uStack_40._4_4_ + local_48._4_4_;
    }
    if (iVar12 - iVar3 < 0) goto LAB_1804fcb2f;
    local_58 = CONCAT44(iVar3,iVar9);
    uStack_50 = CONCAT44(iVar12 - iVar3,iVar13 - iVar9);
    local_48 = local_58;
    uStack_40 = uStack_50;
  }
  lVar7 = *(longlong *)(param_1 + 0x120);
  if (lVar7 == 0) {
    *param_2 = local_48;
    param_2[1] = uStack_40;
    return param_2;
  }
  lVar4 = lVar7;
  for (lVar5 = *(longlong *)(lVar7 + 0x18); lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
    lVar4 = lVar5;
  }
  puVar6 = (undefined8 *)FUN_180520340(local_38,lVar4,&local_48);
  local_48 = *puVar6;
  uStack_40 = puVar6[1];
  if (lVar4 != lVar7) {
    if (*(longlong *)(lVar7 + 0x18) != lVar4) {
      puVar6 = (undefined8 *)FUN_1805202e0(local_38,lVar4,*(longlong *)(lVar7 + 0x18),&local_48);
      local_48 = *puVar6;
      uStack_40 = puVar6[1];
    }
    FUN_180520340(param_2,lVar7,&local_48);
    return param_2;
  }
LAB_1804fcb79:
  *param_2 = local_48;
  param_2[1] = uStack_40;
  return param_2;
}



############ FUN_ 1804fbba0 size=83 ############

float FUN_1804fbba0(longlong param_1)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  return *(float *)(DAT_182673700 + 0xc0) * *(float *)(param_1 + 400);
}



############ FUN_ 1804fdba0 size=822 ############

undefined8 FUN_1804fdba0(longlong param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  undefined4 *puVar8;
  undefined8 uVar9;
  undefined4 uVar10;
  undefined4 local_158;
  undefined4 uStack_154;
  undefined4 local_138;
  undefined4 uStack_134;
  undefined4 uStack_130;
  undefined4 uStack_12c;
  undefined8 local_128;
  undefined8 local_120;
  undefined8 *local_118;
  undefined4 local_110;
  undefined4 local_10c;
  undefined4 local_108;
  undefined4 local_104;
  undefined4 local_100;
  undefined1 local_fc;
  undefined4 local_f8;
  undefined8 local_f0;
  undefined4 local_e8;
  undefined4 uStack_e4;
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined1 local_d8 [16];
  undefined1 local_c8 [72];
  undefined1 local_80 [32];
  undefined8 *local_60;
  
  local_f0 = 0xfffffffffffffffe;
  puVar3 = *(undefined8 **)(param_1 + 0x158);
  *(undefined8 *)(param_1 + 0x158) = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if ((((param_2 != 0) && (*(char *)(param_2 + 0x134) != '\0')) &&
      (plVar4 = *(longlong **)(param_2 + 0x100), plVar4 != (longlong *)0x0)) &&
     ((plVar4[1] - *plVar4) / 0x88 != 0)) {
    uVar7 = FUN_1811316e0(0x198);
    uStack_12c = *(undefined4 *)(param_2 + 0x2c);
    uVar10 = *(undefined4 *)(param_2 + 0x28);
    local_158 = 0;
    uStack_154 = 0;
    uStack_134 = uStack_154;
    for (lVar5 = param_2; lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
      local_e8 = local_158;
      uStack_e4 = uStack_134;
      uStack_e0 = uVar10;
      uStack_dc = uStack_12c;
      puVar8 = (undefined4 *)FUN_18051e4b0(local_d8,lVar5,&local_e8);
      local_158 = *puVar8;
      uStack_134 = puVar8[1];
      uVar10 = puVar8[2];
      uStack_12c = puVar8[3];
    }
    local_128 = *(undefined8 *)(param_1 + 200);
    local_120 = *(undefined8 *)(param_1 + 0xd0);
    puVar3 = *(undefined8 **)(param_1 + 0xd8);
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
      UNLOCK();
    }
    local_110 = *(undefined4 *)(param_1 + 0xe0);
    local_108 = *(undefined4 *)(param_1 + 0xe8);
    local_104 = *(undefined4 *)(param_1 + 0xec);
    local_100 = *(undefined4 *)(param_1 + 0xf0);
    local_fc = *(undefined1 *)(param_1 + 0xf4);
    local_f8 = *(undefined4 *)(param_1 + 0xf8);
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
      UNLOCK();
    }
    local_10c = 0;
    local_138 = local_158;
    uStack_130 = uVar10;
    local_118 = puVar3;
    uVar9 = FUN_1812f0830(&local_138,local_80,0);
    uVar9 = FUN_1812f0590(uVar9,local_c8,*(undefined8 *)(param_1 + 0x120));
    uVar7 = FUN_1804faf50(uVar7,*(undefined8 *)(param_2 + 0x100),param_1,uVar9,0,
                          *(undefined1 *)(param_1 + 0x13a),*(undefined8 *)(param_1 + 0x110),
                          *(undefined4 *)(param_1 + 400),local_158,uVar10);
    puVar6 = *(undefined8 **)(param_1 + 0x158);
    *(undefined8 *)(param_1 + 0x158) = uVar7;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
    if (local_60 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_60 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_60)(local_60,1);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
    (**(code **)(**(longlong **)(param_1 + 0x158) + 0x58))(*(longlong **)(param_1 + 0x158),1);
    FUN_18134ab30(*(undefined8 *)(param_1 + 0x158),0,0,0);
    FUN_181344f60(*(undefined8 *)(param_1 + 0x158),0);
    return 1;
  }
  return 0;
}



############ FUN_ 1804fbed0 size=793 ############

void FUN_1804fbed0(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  int iVar6;
  longlong *plVar7;
  longlong lVar8;
  float fVar9;
  double dVar10;
  undefined8 *puVar11;
  longlong lVar12;
  char cVar13;
  float *pfVar14;
  undefined8 uVar15;
  longlong lVar16;
  longlong lVar17;
  undefined8 *puVar18;
  longlong *plVar19;
  undefined8 uVar20;
  longlong lVar21;
  bool bVar22;
  undefined8 local_res8;
  float local_res10;
  float local_res14;
  undefined4 local_res18;
  undefined4 uStackX_1c;
  undefined8 *local_res20;
  undefined4 local_d8;
  undefined8 local_d0;
  double local_c8;
  undefined8 local_c0;
  undefined1 local_b8 [8];
  undefined8 local_b0;
  undefined1 local_a8 [8];
  undefined1 local_a0 [8];
  undefined1 local_98 [88];
  
  local_c0 = 0xfffffffffffffffe;
  FUN_1804de690(&local_res20,param_1);
  puVar11 = local_res20;
  dVar10 = DAT_1824c4520;
  fVar9 = DAT_1824c3ea4;
  plVar19 = *(longlong **)(param_1 + 0x180);
  plVar2 = plVar19 + *(int *)(param_1 + 0x18c);
  lVar21 = 0;
  if (plVar19 != plVar2) {
    bVar22 = local_res20 != (undefined8 *)0x0;
    do {
      plVar7 = (longlong *)*plVar19;
      if ((undefined **)*plVar7 == juce::PopupMenu::HelperClasses::MouseSourceState::vftable) {
        if ((((*(int *)(plVar7[4] + 0x14) != 1) && (*(int *)(plVar7[4] + 0x14) != 2)) ||
            (cVar13 = FUN_1804fed30(plVar7), cVar13 != '\0')) &&
           (cVar13 = FUN_1804fc2d0(plVar7[3]), cVar13 != '\0')) {
          pfVar14 = (float *)FUN_1804e5a90(plVar7[4],local_b8);
          fVar3 = *pfVar14;
          fVar4 = pfVar14[1];
          uVar20 = *(undefined8 *)pfVar14;
          if (DAT_182673700 == 0) {
            uVar15 = FUN_1811316e0(0x130);
            DAT_182673700 = FUN_18133c6c0(uVar15);
          }
          fVar5 = *(float *)(DAT_182673700 + 0xc0);
          if (fVar5 == fVar9) {
            local_d0 = uVar20;
            pfVar14 = (float *)&local_d0;
          }
          else {
            local_res14 = fVar4 / fVar5;
            local_res10 = fVar3 / fVar5;
            pfVar14 = &local_res10;
          }
          local_b0 = *(undefined8 *)pfVar14;
          local_c8 = (double)(float)local_b0 + dVar10;
          local_res18 = local_c8._0_4_;
          local_d8 = SUB84((double)(float)((ulonglong)local_b0 >> 0x20) + dVar10,0);
          uStackX_1c = local_d8;
          local_res8 = uVar20;
          FUN_1804fe350(plVar7,CONCAT44(local_d8,local_c8._0_4_));
        }
      }
      else {
        (*(code *)((undefined **)*plVar7)[1])(plVar7);
      }
      lVar16 = lVar21;
      if (bVar22) {
        lVar16 = puVar11[2];
      }
      if (lVar16 == 0) goto LAB_1804fc191;
      plVar19 = plVar19 + 1;
    } while (plVar19 != plVar2);
  }
  cVar13 = FUN_1804fc6a0(param_1);
  if (cVar13 == '\0') {
    lVar16 = *(longlong *)(param_1 + 0x118);
    lVar17 = lVar21;
    if (lVar16 != 0) {
      lVar17 = *(longlong *)(lVar16 + 0x10);
    }
    if (lVar17 != 0) {
      lVar17 = lVar21;
      if (lVar16 != 0) {
        lVar17 = *(longlong *)(lVar16 + 0x10);
      }
      puVar18 = (undefined8 *)FUN_18133c1f0(local_a8);
      uVar20 = *puVar18;
      if (lVar17 != 0) {
        lVar12 = *(longlong *)(lVar17 + 0x18);
        lVar16 = lVar17;
        while (lVar8 = lVar12, lVar8 != 0) {
          lVar16 = lVar8;
          lVar12 = *(longlong *)(lVar8 + 0x18);
        }
        puVar18 = (undefined8 *)FUN_18051e060(local_a0,lVar16);
        uVar20 = *puVar18;
        if (lVar16 != lVar17) {
          if (*(longlong *)(lVar17 + 0x18) != lVar16) {
            puVar18 = (undefined8 *)FUN_180520050(local_98,lVar16);
            uVar20 = *puVar18;
          }
          FUN_18051e060(&local_res8,lVar17,uVar20);
          uVar20 = local_res8;
        }
      }
      local_res8 = uVar20;
      if (*(longlong *)(param_1 + 0x118) != 0) {
        lVar21 = *(longlong *)(*(longlong *)(param_1 + 0x118) + 0x10);
      }
      cVar13 = FUN_181343f20(lVar21,local_res8,1);
      if (cVar13 != '\0') {
        FUN_1813416b0(param_1,0x6287345f);
        goto LAB_1804fc191;
      }
    }
    FUN_1804fbaf0(param_1,0);
  }
LAB_1804fc191:
  if (puVar11 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar11 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  return;
}



############ FUN_ 1804fc2d0 size=354 ############

undefined8 FUN_1804fc2d0(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  longlong lVar6;
  ulonglong uVar7;
  
  if ((*(byte *)(param_1 + 0xa8) >> 1 & 1) != 0) {
    uVar7 = 0;
    uVar4 = uVar7;
    if (*(longlong *)(param_1 + 0x118) != 0) {
      uVar4 = *(ulonglong *)(*(longlong *)(param_1 + 0x118) + 0x10);
    }
    if (uVar4 == *(ulonglong *)(param_1 + 200)) {
      if (DAT_182673c20 == (undefined8 *)0x0) {
        puVar5 = (undefined8 *)FUN_1811316e0(0x28);
        FUN_1812a59f0(puVar5);
        FUN_1812a7230(puVar5 + 2);
        *puVar5 = juce::ModalComponentManager::vftable;
        puVar5[2] = juce::ModalComponentManager::vftable;
        puVar5[3] = 0;
        puVar5[4] = 0;
        DAT_182673c20 = puVar5;
      }
      iVar3 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
      lVar6 = (longlong)iVar3;
      if (-1 < iVar3) {
        uVar4 = uVar7;
        do {
          lVar1 = *(longlong *)(DAT_182673c20[3] + lVar6 * 8);
          if ((*(char *)(lVar1 + 0x5c) != '\0') &&
             (iVar3 = (int)uVar4, uVar4 = (ulonglong)(iVar3 + 1), iVar3 == 0)) {
            uVar7 = *(ulonglong *)(lVar1 + 0x40);
            break;
          }
          lVar6 = lVar6 + -1;
        } while (-1 < lVar6);
      }
      lVar6 = __RTDynamicCast(uVar7,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::PopupMenu::HelperClasses::MenuWindow::RTTI_Type_Descriptor,0);
      if (lVar6 != 0) {
        lVar1 = *(longlong *)(param_1 + 0xb0);
        while (lVar2 = lVar1, lVar2 != 0) {
          param_1 = lVar2;
          lVar1 = *(longlong *)(lVar2 + 0xb0);
        }
        while (param_1 != lVar6) {
          param_1 = *(longlong *)(param_1 + 0x158);
          if (param_1 == 0) {
            return 0;
          }
        }
      }
      return 1;
    }
    FUN_1804fbaf0(param_1,0);
  }
  return 0;
}



############ FUN_ 1804fc750 size=526 ############

undefined8 FUN_1804fc750(longlong param_1)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  float fVar9;
  double dVar10;
  float fVar11;
  char cVar12;
  float *pfVar13;
  undefined8 *puVar14;
  longlong *plVar15;
  undefined8 uVar16;
  float local_res8;
  float local_resc;
  double local_res10;
  float local_res18;
  float fStackX_1c;
  float local_res20;
  float local_res24;
  undefined8 local_b0;
  double local_a8;
  undefined8 local_a0;
  undefined1 local_98 [8];
  undefined1 local_90 [8];
  undefined1 local_88 [88];
  
  dVar10 = DAT_1824c4520;
  fVar9 = DAT_1824c3ea4;
  local_a0 = 0xfffffffffffffffe;
  plVar15 = *(longlong **)(param_1 + 0x180);
  plVar1 = plVar15 + *(int *)(param_1 + 0x18c);
  while( true ) {
    if (plVar15 == plVar1) {
      return 0;
    }
    lVar5 = *plVar15;
    pfVar13 = (float *)FUN_1804e5a90(*(undefined8 *)(lVar5 + 0x20),local_98);
    fVar2 = *pfVar13;
    fVar3 = pfVar13[1];
    uVar16 = *(undefined8 *)pfVar13;
    if (DAT_182673700 == 0) {
      local_res10 = (double)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res10);
    }
    fVar4 = *(float *)(DAT_182673700 + 0xc0);
    if (fVar4 == fVar9) {
      local_b0 = uVar16;
      pfVar13 = (float *)&local_b0;
    }
    else {
      local_res24 = fVar3 / fVar4;
      local_res20 = fVar2 / fVar4;
      pfVar13 = &local_res20;
    }
    local_res10 = *(double *)pfVar13;
    lVar6 = *(longlong *)(lVar5 + 0x18);
    fVar4 = *pfVar13;
    fVar11 = pfVar13[1];
    local_res18 = fVar2;
    fStackX_1c = fVar3;
    if (lVar6 != 0) {
      lVar7 = lVar6;
      for (lVar8 = *(longlong *)(lVar6 + 0x18); lVar8 != 0; lVar8 = *(longlong *)(lVar8 + 0x18)) {
        lVar7 = lVar8;
      }
      pfVar13 = (float *)FUN_1805200f0(local_90,lVar7,*(undefined8 *)pfVar13);
      uVar16 = *(undefined8 *)pfVar13;
      fVar4 = *pfVar13;
      fVar11 = pfVar13[1];
      if (lVar7 != lVar6) {
        local_res10 = (double)uVar16;
        if (*(longlong *)(lVar6 + 0x18) != lVar7) {
          puVar14 = (undefined8 *)FUN_1805200a0(local_88,lVar7,*(longlong *)(lVar6 + 0x18),uVar16);
          uVar16 = *puVar14;
        }
        FUN_1805200f0(&local_res8,lVar6,uVar16);
        fVar4 = local_res8;
        fVar11 = local_resc;
      }
    }
    local_resc = fVar11;
    local_res8 = fVar4;
    local_a8 = (double)local_resc + dVar10;
    local_res10 = (double)local_res8 + dVar10;
    cVar12 = FUN_181343f20(*(undefined8 *)(lVar5 + 0x18),CONCAT44(local_a8._0_4_,local_res10._0_4_),
                           1);
    if (cVar12 != '\0') break;
    plVar15 = plVar15 + 1;
  }
  return 1;
}



############ FUN_ 1804fe600 size=546 ############

void FUN_1804fe600(longlong param_1,undefined8 param_2,uint param_3,char param_4,char param_5,
                  char param_6)

{
  longlong lVar1;
  undefined1 uVar2;
  char cVar3;
  DWORD DVar4;
  byte *pbVar5;
  HWND hWnd;
  undefined8 uVar6;
  longlong *plVar7;
  longlong lVar8;
  uint uVar9;
  bool bVar10;
  DWORD local_res8 [2];
  
  if ((*(char *)(*(longlong *)(param_1 + 0x18) + 0x138) == '\0') ||
     ((((byte)DAT_182673aec & 0x70) == 0 &&
      (pbVar5 = (byte *)FUN_1812d0cb0(local_res8), (*pbVar5 & 0x70) == 0)))) {
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  *(undefined1 *)(param_1 + 0x40) = uVar2;
  lVar1 = *(longlong *)(param_1 + 0x18);
  hWnd = GetForegroundWindow();
  if (hWnd != (HWND)0x0) {
    local_res8[0] = 0;
    GetWindowThreadProcessId(hWnd,local_res8);
    DVar4 = GetCurrentProcessId();
    if (local_res8[0] != DVar4) goto LAB_1804fe7b3;
  }
  bVar10 = true;
  if (DAT_182673708 == 0) {
    bVar10 = *(char *)(lVar1 + 0x13d) == '\0';
    if (DAT_182673700 == 0) {
      uVar6 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar6);
    }
    uVar9 = *(int *)(DAT_182673700 + 0x74) - 1;
    lVar8 = (longlong)(int)uVar9;
    if (-1 < (int)uVar9) {
      do {
        if (DAT_182673700 == 0) {
          uVar6 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(uVar6);
        }
        if (uVar9 < *(uint *)(DAT_182673700 + 0x74)) {
          plVar7 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x68) + lVar8 * 8);
        }
        else {
          plVar7 = (longlong *)0x0;
        }
        cVar3 = (**(code **)(*plVar7 + 0xc0))();
        if (cVar3 != '\0') {
          *(undefined1 *)(lVar1 + 0x13d) = 1;
          goto LAB_1804fe767;
        }
        uVar9 = uVar9 - 1;
        lVar8 = lVar8 + -1;
      } while (-1 < lVar8);
    }
  }
  if (bVar10) {
LAB_1804fe767:
    if ((((param_4 == '\0') || (param_3 <= *(int *)(*(longlong *)(param_1 + 0x18) + 0x170) + 0xfaU))
        || (*(char *)(param_1 + 0x40) != '\0')) || (param_5 != '\0')) {
      *(uint *)(*(longlong *)(param_1 + 0x18) + 0x174) = param_3;
      return;
    }
    cVar3 = FUN_181343f20(*(longlong *)(param_1 + 0x18),param_2,1);
    lVar1 = *(longlong *)(param_1 + 0x18);
    if (cVar3 != '\0') {
      FUN_1804fdee0();
      return;
    }
    if ((*(char *)(lVar1 + 0x138) == '\0') && (*(char *)(lVar1 + 0x13a) != '\0')) {
      return;
    }
    if (param_6 != '\0') {
      return;
    }
    FUN_1804fbaf0(lVar1,0);
    return;
  }
LAB_1804fe7b3:
  if (*(int *)(*(longlong *)(param_1 + 0x18) + 0x174) + 10U < param_3) {
    DAT_182678e96 = 1;
    FUN_1804fbaf0(*(longlong *)(param_1 + 0x18),0);
  }
  return;
}



############ FUN_ 1804fed30 size=505 ############

longlong FUN_1804fed30(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  longlong lVar2;
  float *pfVar3;
  undefined8 *puVar4;
  uint7 uVar6;
  longlong lVar5;
  longlong lVar7;
  undefined8 uVar8;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined1 local_res18 [16];
  
  pfVar3 = (float *)FUN_1804e5a90(*(undefined8 *)(param_1 + 0x20),&local_res8,param_3,param_4,
                                  0xfffffffffffffffe);
  local_res8._0_4_ = *pfVar3;
  local_res8._4_4_ = pfVar3[1];
  if (DAT_182673700 == 0) {
    local_res10 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res10);
  }
  fVar1 = *(float *)(DAT_182673700 + 0xc0);
  if (fVar1 != DAT_1824c3ea4) {
    local_res8._4_4_ = local_res8._4_4_ / fVar1;
    local_res8._0_4_ = (float)local_res8 / fVar1;
  }
  local_res10 = CONCAT44(local_res8._4_4_,(float)local_res8);
  lVar5 = *(longlong *)(param_1 + 0x18);
  uVar8 = local_res10;
  if (*(longlong *)(lVar5 + 0x158) == 0) {
    if (lVar5 == 0) goto LAB_1804feeff;
    lVar7 = lVar5;
    for (lVar2 = *(longlong *)(lVar5 + 0x18); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      lVar7 = lVar2;
    }
    puVar4 = (undefined8 *)FUN_1805200f0(&local_res10,lVar7,local_res10);
    local_res8 = *puVar4;
    uVar8 = *puVar4;
    if (lVar7 == lVar5) goto LAB_1804feeff;
  }
  else {
    lVar5 = *(longlong *)(lVar5 + 0x158);
    if (lVar5 == 0) goto LAB_1804feeff;
    lVar7 = lVar5;
    for (lVar2 = *(longlong *)(lVar5 + 0x18); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      lVar7 = lVar2;
    }
    puVar4 = (undefined8 *)FUN_1805200f0(&local_res10,lVar7,local_res10);
    local_res8 = *puVar4;
    uVar8 = *puVar4;
    if (lVar7 == lVar5) goto LAB_1804feeff;
  }
  uVar8 = local_res8;
  if (*(longlong *)(lVar5 + 0x18) != lVar7) {
    puVar4 = (undefined8 *)FUN_1805200a0(local_res18,lVar7,*(longlong *)(lVar5 + 0x18),local_res8);
    uVar8 = *puVar4;
  }
  FUN_1805200f0(&local_res8,lVar5,uVar8);
  uVar8 = local_res8;
LAB_1804feeff:
  local_res8 = uVar8;
  uVar6 = (uint7)((ulonglong)&local_res8 >> 8);
  if ((0.0 <= (float)local_res8) || (0.0 <= local_res8._4_4_)) {
    lVar5 = CONCAT71(uVar6,1);
  }
  else {
    lVar5 = (ulonglong)uVar6 << 8;
  }
  return lVar5;
}



############ FUN_ 18133c1f0 size=288 ############

undefined4 *
FUN_18133c1f0(undefined4 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float *pfVar4;
  double dVar5;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8);
  }
  pfVar4 = (float *)FUN_1804e5a90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),
                                  &local_res8,param_3,param_4,uVar6);
  fVar1 = *pfVar4;
  fVar2 = pfVar4[1];
  if (DAT_182673700 == 0) {
    local_res10 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res10);
  }
  fVar3 = *(float *)(DAT_182673700 + 0xc0);
  local_res8._0_4_ = fVar1;
  local_res8._4_4_ = fVar2;
  if (fVar3 != DAT_1824c3ea4) {
    local_res8._0_4_ = fVar1 / fVar3;
    local_res8._4_4_ = fVar2 / fVar3;
  }
  dVar5 = (double)local_res8._4_4_ + DAT_1824c4520;
  local_res8._0_4_ = SUB84((double)(float)local_res8 + DAT_1824c4520,0);
  *param_1 = (float)local_res8;
  local_res10._0_4_ = SUB84(dVar5,0);
  param_1[1] = (undefined4)local_res10;
  return param_1;
}



############ FUN_ 1804fe210 size=317 ############

void FUN_1804fe210(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  int iVar2;
  char cVar3;
  float *pfVar4;
  undefined8 uVar5;
  float local_res8;
  float fStackX_c;
  undefined4 local_res10;
  undefined1 local_res18 [16];
  
  iVar2 = *(int *)(*(longlong *)(param_1 + 0x20) + 0x14);
  if ((((iVar2 != 1) && (iVar2 != 2)) ||
      (cVar3 = FUN_1804fed30(param_1,param_2,param_3,param_4,0xfffffffffffffffe), cVar3 != '\0')) &&
     (cVar3 = FUN_1804fc2d0(*(undefined8 *)(param_1 + 0x18)), cVar3 != '\0')) {
    pfVar4 = (float *)FUN_1804e5a90(*(undefined8 *)(param_1 + 0x20),local_res18);
    local_res8 = *pfVar4;
    fStackX_c = pfVar4[1];
    if (DAT_182673700 == 0) {
      uVar5 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar5);
    }
    fVar1 = *(float *)(DAT_182673700 + 0xc0);
    if (fVar1 != DAT_1824c3ea4) {
      fStackX_c = fStackX_c / fVar1;
      local_res8 = local_res8 / fVar1;
    }
    local_res10 = SUB84((double)fStackX_c + DAT_1824c4520,0);
    FUN_1804fe350(param_1,CONCAT44(local_res10,SUB84((double)local_res8 + DAT_1824c4520,0)));
  }
  return;
}



############ FUN_ 1812f1110 size=360 ############

void FUN_1812f1110(undefined8 *param_1)

{
  int iVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 uVar5;
  ulonglong uVar6;
  longlong *plVar7;
  int iVar8;
  ulonglong uVar9;
  
  *param_1 = juce::PopupMenu::HelperClasses::MenuWindow::vftable;
  plVar4 = (longlong *)FUN_1804fc440();
  uVar6 = 0;
  iVar1 = *(int *)((longlong)plVar4 + 0xc);
  plVar7 = (longlong *)*plVar4;
  uVar9 = uVar6;
  if (0 < iVar1) {
    do {
      iVar8 = (int)uVar9;
      if (param_1 == (undefined8 *)*plVar7) {
        plVar7 = (longlong *)*plVar4 + iVar8;
        memmove(plVar7,plVar7 + 1,(longlong)((iVar1 - iVar8) + -1) << 3);
        *(int *)((longlong)plVar4 + 0xc) = *(int *)((longlong)plVar4 + 0xc) + -1;
        iVar1 = *(int *)((longlong)plVar4 + 0xc);
        iVar8 = 0;
        if (0 < iVar1 * 2) {
          iVar8 = iVar1 * 2;
        }
        if (iVar8 < (int)plVar4[1]) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < (int)plVar4[1]) {
            FUN_18047cb30(plVar4);
          }
        }
        break;
      }
      plVar7 = plVar7 + 1;
      uVar9 = (ulonglong)(iVar8 + 1U);
    } while ((int)(iVar8 + 1U) < iVar1);
  }
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  lVar3 = DAT_182673700;
  uVar9 = uVar6;
  if (0 < (longlong)*(int *)(DAT_182673700 + 0x44)) {
    do {
      if (param_1 == *(undefined8 **)(*(longlong *)(DAT_182673700 + 0x38) + uVar6 * 8)) {
        FUN_18049b4a0(DAT_182673700 + 0x38,uVar9);
        break;
      }
      uVar9 = (ulonglong)((int)uVar9 + 1);
      uVar6 = uVar6 + 1;
    } while ((longlong)uVar6 < (longlong)*(int *)(DAT_182673700 + 0x44));
  }
  FUN_18133bd90(lVar3);
  puVar2 = (undefined8 *)param_1[0x2b];
  param_1[0x2b] = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_18047cbc0(param_1 + 0x20);
  if (*(int *)(param_1 + 0x21) == 0) {
    *(undefined4 *)(param_1 + 0x21) = 0;
    FUN_180485f00(param_1 + 0x30);
    *(undefined4 *)((longlong)param_1 + 0x16c) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x2c]);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x20]);
}



############ FUN_ 1804ff360 size=229 ############

undefined8 * FUN_1804ff360(longlong param_1,undefined8 *param_2,undefined8 param_3)

{
  int iVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined4 uVar4;
  undefined1 local_res20 [8];
  
  iVar1 = FUN_1812ef770(param_3);
  if (iVar1 == 6) {
    iVar1 = *(int *)(*(longlong *)(param_1 + 8) + 0x28);
  }
  else {
    if (iVar1 != 7) {
      lVar2 = FUN_1804ff580(*(undefined8 *)(param_1 + 8),param_3,local_res20);
      if (lVar2 != 0) {
        uVar4 = FUN_18123b890(lVar2 + 8,param_1);
        FUN_18123b9e0(param_2,uVar4);
        return param_2;
      }
      FUN_18123b2a0(param_1,param_2,param_3);
      return param_2;
    }
    iVar1 = *(int *)(*(longlong *)(param_1 + 8) + 0x2c);
  }
  puVar3 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar3 + 1) = 0;
  *puVar3 = juce::Expression::Helpers::Constant::vftable;
  puVar3[2] = (double)iVar1;
  *(undefined1 *)(puVar3 + 3) = 0;
  *param_2 = puVar3;
  *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
  return param_2;
}



############ FUN_ 18123b2a0 size=131 ############

undefined8 *
FUN_18123b2a0(undefined8 param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined1 local_res18 [16];
  undefined1 local_30 [40];
  
  if (*(char *)*param_3 == '\0') {
    puVar1 = (undefined8 *)FUN_1811316e0(0x20);
    *(undefined4 *)(puVar1 + 1) = 0;
    *puVar1 = juce::Expression::Helpers::Constant::vftable;
    puVar1[2] = 0;
    *(undefined1 *)(puVar1 + 3) = 0;
    *param_2 = puVar1;
    *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
    return param_2;
  }
  uVar2 = FUN_181246550(local_res18,"Unknown symbol: ",param_3,param_4,0xfffffffffffffffe);
  FUN_180493b80(local_30,uVar2);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_30,(ThrowInfo *)&DAT_1825fede0);
}



############ FUN_ 18123b9e0 size=78 ############

undefined8 * FUN_18123b9e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  puVar1[2] = param_2;
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::Expression::Helpers::Constant::vftable;
  *(undefined1 *)(puVar1 + 3) = 0;
  *param_1 = puVar1;
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  return param_1;
}



############ FUN_ 18133a190 size=2538 ############

/* WARNING: Removing unreachable block (ram,0x00018133a78e) */
/* WARNING: Removing unreachable block (ram,0x00018133a81c) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xfffffffffffffe08 : 0x00018133a7b0 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_18133a190(longlong *param_1,undefined8 param_2,longlong param_3,longlong *param_4,
                  char param_5,int *param_6,undefined8 param_7)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong lVar7;
  double dVar8;
  float fVar9;
  undefined4 uVar10;
  double dVar11;
  undefined4 uVar12;
  double dVar13;
  int iVar14;
  uint uVar15;
  BOOL BVar16;
  longlong lVar17;
  longlong *plVar18;
  float *pfVar19;
  undefined8 uVar20;
  longlong *plVar21;
  undefined8 *puVar22;
  longlong lVar23;
  uint uVar24;
  int iVar25;
  uint uVar26;
  undefined8 uVar27;
  longlong lVar28;
  int iVar29;
  uint uVar30;
  bool bVar31;
  float fVar32;
  undefined8 in_stack_fffffffffffffd58;
  undefined4 uVar33;
  int local_278;
  undefined8 local_270;
  longlong local_268;
  ulonglong local_260;
  float local_258;
  float local_254;
  int local_250;
  int iStack_24c;
  int local_248;
  int iStack_244;
  int local_240;
  int iStack_23c;
  int local_238;
  int iStack_234;
  undefined8 *local_230;
  double local_228;
  longlong *local_220;
  undefined8 local_218;
  undefined4 uStack_210;
  undefined4 uStack_20c;
  undefined8 local_208;
  undefined4 local_200;
  undefined4 local_1fc;
  undefined8 local_1f8;
  int local_1f0;
  int local_1ec;
  undefined8 local_1e8;
  int local_1e0;
  int local_1dc;
  undefined8 local_1d8;
  double local_1d0;
  double local_1c8;
  undefined8 *local_1c0;
  undefined8 *local_1b8;
  undefined8 local_1b0;
  undefined8 uStack_1a8;
  undefined8 local_180;
  undefined8 uStack_178;
  undefined8 local_170;
  undefined8 uStack_168;
  uint *local_160 [2];
  undefined4 local_14c;
  undefined4 local_148;
  undefined8 *local_140;
  undefined1 local_138 [8];
  undefined1 local_130 [8];
  undefined1 local_128 [8];
  undefined1 local_120 [8];
  undefined8 local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 uStack_100;
  longlong local_f8;
  undefined1 local_f0 [16];
  tagMSG local_e0 [3];
  
  uVar33 = (undefined4)((ulonglong)in_stack_fffffffffffffd58 >> 0x20);
  local_118 = 0xfffffffffffffffe;
  plVar21 = (longlong *)param_1[1];
  plVar18 = plVar21 + *(int *)((longlong)param_1 + 0x14);
  lVar28 = 0;
  plVar5 = param_1;
  for (; plVar21 != plVar18; plVar21 = plVar21 + 1) {
    plVar5 = *(longlong **)(*plVar21 + 0xd8);
    lVar17 = lVar28;
    if (plVar5 != (longlong *)0x0) {
      lVar17 = plVar5[2];
    }
    if (lVar17 == param_3) {
      puVar22 = (undefined8 *)*param_4;
      goto LAB_18133ab16;
    }
  }
  plVar18 = (longlong *)FUN_181339e10(plVar5,param_3,param_7);
  local_220 = plVar18;
  if ((plVar18 == (longlong *)0x0) || (lVar17 = *plVar18, (*(byte *)(lVar17 + 0x28) & 0x70) == 0)) {
    puVar22 = (undefined8 *)*param_4;
LAB_18133ab16:
    if (puVar22 == (undefined8 *)0x0) {
      return;
    }
    LOCK();
    piVar1 = (int *)(puVar22 + 1);
    iVar14 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    goto LAB_18133ab28;
  }
  fVar2 = *(float *)(lVar17 + 0x70);
  fVar3 = *(float *)(lVar17 + 0x74);
  uVar27 = *(undefined8 *)(lVar17 + 0x70);
  if (DAT_182673700 == 0) {
    local_228 = (double)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_228);
  }
  dVar8 = DAT_1824c4520;
  fVar4 = *(float *)(DAT_182673700 + 0xc0);
  if (fVar4 == DAT_1824c3ea4) {
    local_1d8 = uVar27;
    pfVar19 = (float *)&local_1d8;
  }
  else {
    local_258 = fVar2 / fVar4;
    local_254 = fVar3 / fVar4;
    pfVar19 = &local_258;
  }
  local_110 = *(undefined8 *)pfVar19;
  local_1c8 = (double)(float)((ulonglong)local_110 >> 0x20) + DAT_1824c4520;
  dVar13 = local_1c8;
  local_1d0 = (double)(float)local_110 + DAT_1824c4520;
  dVar11 = local_1d0;
  uVar10 = local_1d0._0_4_;
  uVar12 = local_1c8._0_4_;
  lVar17 = *param_4;
  uVar27 = CONCAT44(local_1c8._0_4_,local_1d0._0_4_);
  iVar14 = 0;
  local_1d0 = dVar11;
  local_1c8 = dVar13;
  if (lVar17 == 0) {
    uStack_20c = *(undefined4 *)(param_3 + 0x2c);
    uStack_210 = *(undefined4 *)(param_3 + 0x28);
    uStack_100 = *(undefined8 *)(param_3 + 0x28);
    local_218 = 0;
    local_108 = 0;
    uVar20 = FUN_181341cd0(param_3,&local_1b8,&local_108,1,CONCAT44(uVar33,DAT_1824c3ea4));
    plVar21 = (longlong *)FUN_181290930(uVar20,&local_1c0,2);
    local_f8 = *param_4;
    *param_4 = *plVar21;
    *plVar21 = local_f8;
    if (local_1c0 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_1c0 + 1);
      iVar29 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar29 == 1) {
        (**(code **)*local_1c0)(local_1c0,1);
      }
    }
    if (local_1b8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_1b8 + 1);
      iVar29 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar29 == 1) {
        (**(code **)*local_1b8)(local_1b8,1);
      }
    }
    FUN_1812900e0(param_4,DAT_1824c3db8);
    if (param_3 != 0) {
      lVar23 = *(longlong *)(param_3 + 0x18);
      lVar17 = param_3;
      while (lVar7 = lVar23, lVar7 != 0) {
        lVar17 = lVar7;
        lVar23 = *(longlong *)(lVar7 + 0x18);
      }
      puVar22 = (undefined8 *)FUN_18051e060(local_138,lVar17,uVar27);
      uVar27 = *puVar22;
      if (lVar17 != param_3) {
        if (*(longlong *)(param_3 + 0x18) != lVar17) {
          puVar22 = (undefined8 *)
                    FUN_180520050(local_130,lVar17,*(longlong *)(param_3 + 0x18),uVar27);
          uVar27 = *puVar22;
        }
        FUN_18051e060(&local_270,param_3,uVar27);
        uVar27 = local_270;
      }
    }
    local_270 = uVar27;
    lVar17 = *param_4;
    if (lVar17 == 0) {
      local_1b0 = 0;
      uStack_1a8 = 0;
      puVar22 = &local_1b0;
    }
    else {
      local_208 = 0;
      local_200 = *(undefined4 *)(lVar17 + 0x14);
      local_1fc = *(undefined4 *)(lVar17 + 0x18);
      puVar22 = &local_208;
    }
    uVar27 = *puVar22;
    uVar20 = puVar22[1];
    local_278 = (int)uVar27;
    iVar25 = (int)uVar20 + local_278;
    iVar29 = (int)local_270;
    if ((local_278 <= iVar29) && (local_278 = iVar29, iVar25 < iVar29)) {
      local_278 = iVar25;
    }
    local_180._4_4_ = (int)((ulonglong)uVar27 >> 0x20);
    uStack_178._4_4_ = (int)((ulonglong)uVar20 >> 0x20);
    iVar25 = (int)((ulonglong)local_270 >> 0x20);
    iVar29 = local_180._4_4_;
    if ((local_180._4_4_ <= iVar25) &&
       (iVar29 = iVar25, uStack_178._4_4_ + local_180._4_4_ < iVar25)) {
      iVar29 = uStack_178._4_4_ + local_180._4_4_;
    }
    local_260 = 1;
    local_250 = local_278;
    iStack_24c = iVar29;
    local_180 = uVar27;
    uStack_178 = uVar20;
    FUN_18123ad30(&local_260);
    fVar9 = DAT_1824c4750;
    fVar4 = DAT_1824c4544;
    fVar3 = DAT_1824c3c6c;
    fVar2 = DAT_1824c3c24;
    if (*param_4 != 0) {
      iVar14 = *(int *)(*param_4 + 0x18);
    }
    uVar30 = iVar14 - 1;
    if (-1 < (int)uVar30) {
      iVar29 = uVar30 - iVar29;
      do {
        iVar14 = FUN_1812910f0(param_4);
        uVar26 = iVar14 - 1;
        if (-1 < (int)uVar26) {
          iVar14 = uVar26 - local_278;
          do {
            local_228 = sqrt((double)(iVar14 * iVar14 + iVar29 * iVar29));
            local_228 = local_228 + dVar8;
            iVar25 = SUB84(local_228,0);
            if (0x96 < iVar25) {
              if (iVar25 < 0x191) {
                local_260 = local_260 * 0x5deece66d + 0xb & 0xffffffffffff;
                fVar32 = (float)(400 - iVar25) / fVar4 + (float)(local_260 >> 0x10) * fVar2 * fVar3;
              }
              else {
                fVar32 = 0.0;
              }
              plVar18 = (longlong *)*param_4;
              bVar31 = plVar18 != (longlong *)0x0;
              uVar15 = 0;
              uVar24 = uVar15;
              if (bVar31) {
                uVar24 = *(uint *)((longlong)plVar18 + 0x14);
              }
              if (uVar26 < uVar24) {
                uVar24 = uVar15;
                if (bVar31) {
                  uVar24 = *(uint *)(plVar18 + 3);
                }
                if (uVar30 < uVar24) {
                  uVar24 = uVar15;
                  if (bVar31) {
                    uVar24 = *(uint *)(plVar18 + 2);
                  }
                  if (uVar24 != 1) {
                    local_14c = 1;
                    local_148 = 1;
                    local_140 = (undefined8 *)0x0;
                    (**(code **)(*plVar18 + 0x20))(plVar18,local_160,uVar26,uVar30,2);
                    if (*param_4 != 0) {
                      uVar15 = *(uint *)(*param_4 + 0x10);
                    }
                    if (uVar15 == 2) {
                      iVar25 = 1 - (int)(fVar32 * fVar9);
                      uVar24 = *local_160[0] >> 8 & 0xff00ff;
                      *local_160[0] =
                           ((*local_160[0] & 0xff00ff) * iVar25 >> 8 ^ uVar24 * iVar25) & 0xff00ff ^
                           uVar24 * iVar25;
                    }
                    else {
                      *(byte *)local_160[0] = (byte)(int)((float)(byte)*local_160[0] * fVar32);
                    }
                    if (local_140 != (undefined8 *)0x0) {
                      (**(code **)*local_140)(local_140,1);
                    }
                  }
                }
              }
            }
            iVar14 = iVar14 + -1;
            uVar26 = uVar26 - 1;
          } while (-1 < (int)uVar26);
        }
        iVar29 = iVar29 + -1;
        uVar30 = uVar30 - 1;
        plVar18 = local_220;
      } while (-1 < (int)uVar30);
    }
    uVar27 = CONCAT44(iStack_24c,local_250);
  }
  else if (param_6 == (int *)0x0) {
    local_1ec = *(int *)(lVar17 + 0x18);
    local_1f0 = *(int *)(lVar17 + 0x14);
    local_1f8 = 0;
    local_1f8 = 0;
    local_f0._8_8_ = 0;
    local_f0._0_8_ = *(ulonglong *)(lVar17 + 0x14);
    local_f0 = local_f0 << 0x40;
    iStack_244 = local_1ec / 2;
    local_248 = local_1f0 / 2;
    uVar27 = CONCAT44(iStack_244,local_248);
  }
  else {
    iStack_23c = -param_6[1];
    local_240 = -*param_6;
    local_1dc = *(int *)(lVar17 + 0x18);
    local_1e0 = *(int *)(lVar17 + 0x14);
    uStack_168 = *(undefined8 *)(lVar17 + 0x14);
    local_1e8 = 0;
    local_1e8 = 0;
    local_170 = 0;
    local_238 = 0;
    if ((-1 < local_240) && (local_238 = local_240, local_1e0 < local_240)) {
      local_238 = local_1e0;
    }
    local_170._4_4_ = 0;
    iStack_234 = local_170._4_4_;
    if ((-1 < iStack_23c) && (iStack_234 = iStack_23c, local_1dc < iStack_23c)) {
      iStack_234 = local_1dc;
    }
    uVar27 = CONCAT44(iStack_234,local_238);
  }
  lVar17 = CONCAT44(uVar12,uVar10);
  local_220 = (longlong *)FUN_1811316e0(0x128);
  plVar21 = (longlong *)FUN_1804e7920(local_220,param_4,param_2,param_3,plVar18,param_1,uVar27);
  iVar14 = *(int *)((longlong)param_1 + 0x14) + 1;
  if ((int)param_1[2] < iVar14) {
    FUN_18047cb30(param_1 + 1,*(int *)((longlong)param_1 + 0x14) + 9 + iVar14 / 2 & 0xfffffff8);
  }
  iVar14 = *(int *)((longlong)param_1 + 0x14);
  *(int *)((longlong)param_1 + 0x14) = iVar14 + 1;
  *(longlong **)(param_1[1] + (longlong)iVar14 * 8) = plVar21;
  if (param_5 == '\0') {
    lVar23 = __RTDynamicCast(param_1,0,&juce::DragAndDropContainer::RTTI_Type_Descriptor,
                             &juce::Component::RTTI_Type_Descriptor,
                             (ulonglong)plVar18 & 0xffffffff00000000);
    if (lVar23 != 0) {
      if (plVar21 != (longlong *)0x0) {
        FUN_181343cc0(lVar23,plVar21,0xffffffff);
      }
      goto LAB_18133a95f;
    }
  }
  else {
    (**(code **)(*plVar21 + 0x68))(plVar21,0x406,0);
LAB_18133a95f:
    lVar23 = lVar17;
    if (param_3 != 0) {
      lVar23 = *(longlong *)(param_3 + 0x18);
      lVar7 = param_3;
      while (lVar6 = lVar23, lVar6 != 0) {
        lVar7 = lVar6;
        lVar23 = *(longlong *)(lVar6 + 0x18);
      }
      plVar18 = (longlong *)FUN_18051e060(local_128,lVar7,lVar17);
      lVar23 = *plVar18;
      if (lVar7 != param_3) {
        if (*(longlong *)(param_3 + 0x18) != lVar7) {
          plVar18 = (longlong *)FUN_180520050(local_120,lVar7);
          lVar23 = *plVar18;
        }
        FUN_18051e060(&local_268,param_3,lVar23);
        lVar23 = local_268;
      }
    }
    local_268 = lVar23;
    plVar21[0x1c] = local_268;
    FUN_1804e8170(plVar21,0,lVar17);
    if ((*(byte *)(plVar21 + 0x15) & 1) == 0) {
      if (plVar21[3] != 0) {
        plVar18 = (longlong *)FUN_18134c2e0();
        goto LAB_18133aa19;
      }
    }
    else {
      plVar18 = (longlong *)FUN_1812d2bd0(plVar21);
LAB_18133aa19:
      if (plVar18 != (longlong *)0x0) {
        if ((undefined **)*plVar18 == juce::HWNDComponentPeer::vftable) {
          if ((*(byte *)(plVar18[1] + 0xa8) >> 1 & 1) != 0) {
            FUN_1804de690(&local_230);
            puVar22 = local_230;
            if (((*(byte *)(plVar18[1] + 0xa8) >> 2 & 1) == 0) ||
               (BVar16 = PeekMessageW(local_e0,(HWND)plVar18[0x11],0xf,0xf,1), BVar16 != 0)) {
              if (puVar22 != (undefined8 *)0x0) {
                lVar28 = puVar22[2];
              }
              if (lVar28 != 0) {
                FUN_1805113b0(plVar18);
              }
            }
            if (puVar22 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar22 + 1);
              iVar14 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar14 == 1) {
                (**(code **)*local_230)(local_230,1);
              }
            }
          }
        }
        else {
          (*(code *)((undefined **)*plVar18)[0x1d])(plVar18);
        }
      }
    }
    if (*(code **)(*param_1 + 0x18) != .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      (**(code **)(*param_1 + 0x18))(param_1,plVar21 + 0x19);
    }
  }
  puVar22 = (undefined8 *)*param_4;
  if (puVar22 == (undefined8 *)0x0) {
    return;
  }
  LOCK();
  piVar1 = (int *)(puVar22 + 1);
  iVar14 = *piVar1;
  *piVar1 = *piVar1 + -1;
  UNLOCK();
LAB_18133ab28:
  if (iVar14 == 1) {
    (**(code **)*puVar22)(puVar22,1);
  }
  return;
}



############ FUN_ 180511500 size=1664 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180511500(longlong *param_1,HDC param_2,HRGN param_3,int param_4,longlong param_5)

{
  longlong *plVar1;
  HWND hWnd;
  int iVar2;
  longlong lVar3;
  HRGN hrgn;
  DWORD DVar4;
  int iVar5;
  int *piVar6;
  longlong lVar7;
  HRGN hrgnSrc2;
  longlong *plVar8;
  int iVar9;
  int yDest;
  int iVar10;
  undefined8 *puVar11;
  int iVar12;
  undefined8 *puVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  HDC hdc;
  int iVar17;
  bool bVar18;
  double dVar19;
  undefined1 auStackY_21d8 [32];
  int local_2164;
  undefined8 *local_2160;
  undefined8 local_2158;
  undefined4 local_2150;
  BLENDFUNCTION local_214c;
  int local_2148;
  undefined8 local_2144;
  undefined8 uStack_213c;
  longlong *local_2130;
  longlong *local_2128;
  HDC local_2120;
  int local_2118;
  int iStack_2114;
  POINT local_2110;
  SIZE local_2108;
  POINT local_2100;
  undefined8 local_20f8;
  undefined8 local_20f0;
  int local_20e8;
  int iStack_20e4;
  undefined8 local_20e0;
  int iStack_20d8;
  int iStack_20d4;
  float local_20d0 [5];
  undefined4 local_20bc;
  undefined8 *local_20b8;
  RECT *local_20b0;
  HRGN local_20a8;
  HDC local_20a0;
  longlong *local_2098;
  undefined8 **local_2090;
  int local_2088;
  int local_2084;
  int local_2080;
  undefined8 local_2078;
  undefined1 local_2070 [16];
  undefined1 local_2060 [24];
  _RGNDATA local_2048;
  int local_2024 [2039];
  ulonglong local_48;
  undefined8 uStack_40;
  
  uStack_40 = 0x18051151e;
  local_2078 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStackY_21d8;
  local_20b0 = (RECT *)(param_5 + 0xc);
  local_2164 = local_20b0->left;
  yDest = *(int *)(param_5 + 0x10);
  iVar10 = *(int *)(param_5 + 0x14) - local_2164;
  iVar12 = *(int *)(param_5 + 0x18) - yDest;
  bVar18 = (*(byte *)(param_1[1] + 0xa8) >> 2 & 1) == 0;
  local_2148 = param_4;
  local_2130 = param_1;
  local_2120 = param_2;
  local_20a8 = param_3;
  if (bVar18) {
    piVar6 = (int *)FUN_1812c6d70(local_2070);
    yDest = 0;
    local_2164 = 0;
    iVar10 = piVar6[2] - *piVar6;
    iVar12 = piVar6[3] - piVar6[1];
  }
  if ((iVar10 < 1) || (iVar12 < 1)) {
  }
  plVar1 = param_1 + 0x28;
  if (*plVar1 == 0) {
LAB_180511643:
    local_20f8 = FUN_1811316e0(0xe0);
    lVar7 = FUN_18050d450(local_20f8,bVar18 + 1,iVar10 + 0x1fU & 0xffffffe0,
                          iVar12 + 0x1fU & 0xffffffe0);
    if (lVar7 != 0) {
      LOCK();
      *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1;
      UNLOCK();
    }
    local_20b8 = (undefined8 *)*plVar1;
    *plVar1 = lVar7;
    if (local_20b8 != (undefined8 *)0x0) {
      LOCK();
      piVar6 = (int *)(local_20b8 + 1);
      iVar17 = *piVar6;
      *piVar6 = *piVar6 + -1;
      UNLOCK();
      if (iVar17 == 1) {
        (**(code **)*local_20b8)(local_20b8,1);
      }
    }
  }
  else {
    lVar7 = *plVar1;
    iVar5 = 0;
    iVar17 = iVar5;
    if (lVar7 != 0) {
      iVar17 = *(int *)(lVar7 + 0x14);
    }
    if (iVar17 < iVar10) goto LAB_180511643;
    iVar17 = iVar5;
    if (lVar7 != 0) {
      iVar17 = *(int *)(lVar7 + 0x18);
    }
    if (iVar17 < iVar12) goto LAB_180511643;
    if (lVar7 != 0) {
      iVar5 = *(int *)(lVar7 + 0x10);
    }
    if (iVar5 != bVar18 + 1) goto LAB_180511643;
  }
  FUN_1812a77d0(param_1 + 0x25,3000);
  local_2160 = (undefined8 *)0x0;
  local_2158._0_4_ = 0;
  local_2158._4_4_ = 0;
  local_20f0 = 0;
  local_20e8 = iVar10;
  iStack_20e4 = iVar12;
  if ((local_2148 == 3) && (!bVar18)) {
    hrgnSrc2 = CreateRectRgnIndirect(local_20b0);
    hrgn = local_20a8;
    CombineRgn(local_20a8,local_20a8,hrgnSrc2,1);
    DeleteObject(hrgnSrc2);
    DVar4 = GetRegionData(hrgn,0x2000,&local_2048);
    if ((DVar4 - 1 < 0x2000) &&
       (((local_2048.rdh.iType == 1 &&
         (iVar10 <= local_2048.rdh.rcBound.right - local_2048.rdh.rcBound.left)) &&
        (iVar12 <= local_2048.rdh.rcBound.bottom - local_2048.rdh.rcBound.top)))) {
      iVar17 = local_2048.rdh.nCount - 1;
      if (-1 < iVar17) {
        local_2148 = iVar10 + local_2164;
        piVar6 = local_2024 + 1;
        do {
          param_1 = local_2130;
          if ((local_2148 < *piVar6) || (iVar12 + yDest < piVar6[1])) goto LAB_180511a9e;
          iVar5 = local_2164;
          if (local_2164 < piVar6[-2]) {
            iVar5 = piVar6[-2];
          }
          iVar15 = piVar6[-1] - yDest;
          iVar9 = iVar5 - local_2164;
          iVar2 = iVar9;
          if (iVar9 < 0) {
            iVar2 = 0;
          }
          iVar16 = (int)((ulonglong)local_20f0 >> 0x20);
          iVar14 = iVar15;
          if (iVar15 < iVar16) {
            iVar14 = iVar16;
          }
          iVar9 = (*piVar6 - iVar5) + iVar9;
          if (iVar10 < iVar9) {
            iVar9 = iVar10;
          }
          iVar9 = iVar9 - iVar2;
          if (iVar9 < 0) {
LAB_18051187a:
            local_2144 = 0;
            uStack_213c = 0;
          }
          else {
            iVar15 = iVar15 + (piVar6[1] - piVar6[-1]);
            if (iStack_20e4 + iVar16 < iVar15) {
              iVar15 = iStack_20e4 + iVar16;
            }
            iVar15 = iVar15 - iVar14;
            if (iVar15 < 0) goto LAB_18051187a;
            local_2144 = CONCAT44(iVar14,iVar2);
            uStack_213c = CONCAT44(iVar15,iVar9);
            if ((0 < iVar9) && (0 < iVar15)) {
              iVar5 = local_2158._4_4_ + 1;
              if ((int)(uint)local_2158 < iVar5) {
                if (iVar5 < 0) {
                  iVar5 = local_2158._4_4_ + 2;
                }
                FUN_18049ba20(&local_2160,local_2158._4_4_ + 9 + (iVar5 >> 1) & 0xfffffff8);
              }
              local_2158._4_4_ = 1;
              *local_2160 = local_2144;
              local_2160[1] = uStack_213c;
            }
          }
          piVar6 = piVar6 + 4;
          iVar17 = iVar17 + -1;
          param_1 = local_2130;
        } while (-1 < iVar17);
      }
      goto LAB_18051189e;
    }
  }
LAB_180511a9e:
  local_2158._4_4_ = 0;
  local_20e0 = 0;
  iStack_20d8 = iVar10;
  iStack_20d4 = iVar12;
  if (0 < iVar12) {
    iVar10 = 0;
    if ((int)(uint)local_2158 < 1) {
      FUN_18049ba20(&local_2160,8);
      iVar10 = local_2158._4_4_;
    }
    local_2158._4_4_ = iVar10 + 1;
    local_2160[(longlong)iVar10 * 2] = local_20e0;
    (local_2160 + (longlong)iVar10 * 2)[1] = CONCAT44(iStack_20d4,iStack_20d8);
  }
LAB_18051189e:
  local_20a0 = local_2120;
  local_2090 = &local_2160;
  local_2088 = local_2164;
  local_2080 = 0;
  local_2098 = param_1;
  local_2084 = yDest;
  EnumChildWindows((HWND)param_1[0x11],FUN_180511260,(LPARAM)&local_20a0);
  hdc = local_2120;
  if (local_2158._4_4_ != 0) {
    if ((bVar18) && (puVar11 = local_2160 + (longlong)local_2158._4_4_ * 2, local_2160 != puVar11))
    {
      local_2150 = 0;
      puVar13 = local_2160;
      do {
        FUN_1812904a0(plVar1,puVar13,0);
        puVar13 = puVar13 + 2;
      } while (puVar13 != puVar11);
    }
    plVar8 = (longlong *)FUN_18134adf0(param_1[1]);
    iVar10 = -local_2164;
    iVar12 = -yDest;
    local_2118 = iVar10;
    iStack_2114 = iVar12;
    (**(code **)(*plVar8 + 0x50))(plVar8,&local_2128,plVar1,CONCAT44(iVar12,iVar10));
    plVar8 = local_2128;
    dVar19 = (double)(**(code **)(*param_1 + 0x110))(param_1);
    local_20d0[0] = (float)dVar19;
    local_20d0[1] = 0.0;
    local_20d0[2] = 0.0;
    local_20d0[3] = 0.0;
    local_20bc = 0;
    local_20d0[4] = local_20d0[0];
    (**(code **)(*plVar8 + 0x18))(plVar8,local_20d0);
    FUN_1812d2680(param_1,local_2128);
    if (local_2128 != (longlong *)0x0) {
      (**(code **)*local_2128)(local_2128,1);
    }
    hdc = local_2120;
    lVar7 = *plVar1;
    lVar3 = param_1[0x1b];
    hWnd = (HWND)param_1[0x11];
    SetMapMode(local_2120,1);
    if (bVar18) {
      piVar6 = (int *)FUN_1812c6d70(local_2060,hWnd);
      local_2100.x = *piVar6;
      local_2100.y = piVar6[1];
      local_2108.cx = piVar6[2] - local_2100.x;
      local_2108.cy = piVar6[3] - local_2100.y;
      local_214c.AlphaFormat = '\x01';
      local_214c.BlendOp = '\0';
      local_214c.BlendFlags = '\0';
      local_214c.SourceConstantAlpha = (BYTE)lVar3;
      local_2110.x = iVar10;
      local_2110.y = iVar12;
      UpdateLayeredWindow(hWnd,(HDC)0x0,&local_2100,&local_2108,*(HDC *)(lVar7 + 0xc0),&local_2110,0
                          ,&local_214c,2);
    }
    else {
      StretchDIBits(hdc,local_2164,yDest,*(int *)(lVar7 + 0x14),*(int *)(lVar7 + 0x18),0,0,
                    *(int *)(lVar7 + 0x14),*(int *)(lVar7 + 0x18),*(void **)(lVar7 + 200),
                    (BITMAPINFO *)(lVar7 + 0x50),0,0xcc0020);
    }
  }
  if (local_2080 != 0) {
    RestoreDC(hdc,local_2080);
  }
  local_2158 = (ulonglong)(uint)local_2158;
                    /* WARNING: Subroutine does not return */
  free(local_2160);
}



############ FUN_ 181339e10 size=701 ############

longlong * FUN_181339e10(undefined8 param_1,longlong param_2,longlong *param_3,undefined8 param_4)

{
  float fVar1;
  longlong lVar2;
  float fVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  float *pfVar7;
  ulonglong uVar8;
  longlong *plVar9;
  longlong *plVar10;
  int iVar11;
  uint uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float local_res8;
  float fStackX_c;
  float local_res18;
  float local_res1c;
  undefined8 local_res20;
  undefined1 local_c0 [24];
  undefined8 local_a8;
  undefined8 uStack_a0;
  
  fVar18 = DAT_1824c4628;
  if (param_3 == (longlong *)0x0) {
    if (DAT_182673700 == 0) {
      uVar5 = FUN_1811316e0(0x130,param_2,0,param_4,0xfffffffffffffffe);
      DAT_182673700 = FUN_18133c6c0(uVar5);
    }
    lVar4 = DAT_182673700;
    uVar15 = 0;
    if (param_2 == 0) {
      local_res8 = 0.0;
      fStackX_c = 0.0;
    }
    else {
      uStack_a0 = *(undefined8 *)(param_2 + 0x28);
      local_a8 = 0;
      do {
        if (param_2 == 0) break;
        puVar6 = (undefined8 *)FUN_18051e4b0(local_c0,param_2,&local_a8);
        local_a8 = *puVar6;
        uStack_a0 = puVar6[1];
        param_2 = *(longlong *)(param_2 + 0x18);
      } while (param_2 != 0);
      fStackX_c = (float)((int)((ulonglong)local_a8 >> 0x20) +
                         (int)((ulonglong)uStack_a0 >> 0x20) / 2);
      local_res8 = (float)((int)uStack_a0 / 2 + (int)local_a8);
    }
    fVar3 = DAT_1824c3ea4;
    lVar2 = *(longlong *)(lVar4 + 0x30);
    iVar11 = 0;
    plVar9 = *(longlong **)(lVar2 + 0x18);
    uVar13 = (ulonglong)((longlong)(plVar9 + *(int *)(lVar2 + 0x24)) + (7 - (longlong)plVar9)) >> 3;
    if (plVar9 + *(int *)(lVar2 + 0x24) < plVar9) {
      uVar13 = uVar15;
    }
    uVar8 = uVar15;
    uVar14 = uVar15;
    if (uVar13 != 0) {
      do {
        if ((*(byte *)(*plVar9 + 0x28) & 0x70) != 0) {
          uVar8 = (ulonglong)((int)uVar8 + 1);
        }
        iVar11 = (int)uVar8;
        plVar9 = plVar9 + 1;
        uVar14 = uVar14 + 1;
      } while (uVar14 != uVar13);
    }
    uVar13 = uVar15;
    if (0 < iVar11) {
      do {
        lVar2 = *(longlong *)(lVar4 + 0x30);
        plVar10 = *(longlong **)(lVar2 + 0x28);
        plVar9 = plVar10 + *(int *)(lVar2 + 0x34);
        uVar8 = uVar15;
        for (; plVar10 != plVar9; plVar10 = plVar10 + 1) {
          if ((*(byte *)(*plVar10 + 0x28) & 0x70) != 0) {
            if ((int)uVar13 == (int)uVar8) {
              if (plVar10 != (longlong *)0x0) {
                pfVar7 = (float *)FUN_1804e5a90(*plVar10,local_c0);
                fVar16 = *pfVar7;
                fVar17 = pfVar7[1];
                uVar5 = *(undefined8 *)pfVar7;
                if (DAT_182673700 == 0) {
                  local_a8 = FUN_1811316e0(0x130);
                  DAT_182673700 = FUN_18133c6c0(local_a8);
                }
                fVar1 = *(float *)(DAT_182673700 + 0xc0);
                if (fVar1 == fVar3) {
                  local_res20 = uVar5;
                  pfVar7 = (float *)&local_res20;
                }
                else {
                  local_res18 = fVar16 / fVar1;
                  local_res1c = fVar17 / fVar1;
                  pfVar7 = &local_res18;
                }
                fVar16 = (float)*(undefined8 *)pfVar7 - local_res8;
                fVar17 = (float)((ulonglong)*(undefined8 *)pfVar7 >> 0x20) - fStackX_c;
                fVar16 = fVar17 * fVar17 + fVar16 * fVar16;
                if (fVar16 < fVar18) {
                  param_3 = plVar10;
                  fVar18 = fVar16;
                }
              }
              break;
            }
            uVar8 = (ulonglong)((int)uVar8 + 1);
          }
        }
        uVar12 = (int)uVar13 + 1;
        uVar13 = (ulonglong)uVar12;
      } while ((int)uVar12 < iVar11);
    }
  }
  return param_3;
}



############ FUN_ 1805023a0 size=2094 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805023a0(longlong param_1,longlong param_2)

{
  int *piVar1;
  byte *pbVar2;
  longlong lVar3;
  longlong lVar4;
  code *pcVar5;
  undefined ***pppuVar6;
  longlong *plVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  HCURSOR pHVar10;
  undefined8 uVar11;
  uint *puVar12;
  uint uVar13;
  undefined ***pppuVar14;
  undefined4 uVar15;
  undefined1 auStack_238 [32];
  uint local_218;
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  undefined8 *local_1e8;
  undefined8 local_1e0;
  undefined4 *local_1d8;
  undefined8 *local_1d0;
  longlong *local_1c8;
  undefined1 local_1c0 [8];
  undefined **local_1b8;
  longlong local_1b0;
  undefined ***local_180;
  undefined **local_178;
  longlong local_170;
  undefined ***local_140;
  undefined **local_138;
  longlong local_130;
  undefined ***local_100;
  longlong local_f8 [7];
  longlong *local_c0;
  longlong local_b8 [7];
  longlong *local_80;
  longlong local_78 [7];
  longlong *local_40;
  ulonglong local_38;
  
  local_1e0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_238;
  uVar11 = 0;
  local_218 = 0;
  if (*(int *)(param_1 + 0x208) == 0) {
    puVar9 = *(undefined8 **)(param_1 + 0x250);
    *(undefined8 *)(param_1 + 0x250) = 0;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
    goto LAB_18050286c;
  }
  if (*(longlong *)(param_1 + 0x250) == 0) {
    (**(code **)(**(longlong **)(param_1 + 0x38) + 8))(*(longlong **)(param_1 + 0x38),&local_1c8);
    local_218 = 10;
    uVar15 = (**(code **)(*local_1c8 + 0x18))(local_1c8,local_1c0);
    plVar7 = (longlong *)
             (**(code **)(**(longlong **)(param_1 + 0x18) + 0x178))
                       (*(longlong **)(param_1 + 0x18),&local_200,uVar15);
    local_218 = 0xe;
  }
  else {
    plVar7 = (longlong *)FUN_1812ea010(*(undefined8 *)(param_1 + 0x250),&local_1f8);
    local_218 = 1;
  }
  local_208 = *plVar7;
  *plVar7 = (longlong)&DAT_1821dbf98;
  if ((local_218 & 4) != 0) {
    local_218 = local_218 & 0xfffffffb;
    puVar12 = (uint *)(local_200 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  uVar13 = local_218;
  if ((local_218 & 2) != 0) {
    uVar13 = local_218 & 0xfffffffd;
    local_218 = uVar13;
    (**(code **)(*local_1c8 + 0xb0))(local_1c8,local_1c0);
  }
  if (((uVar13 & 1) != 0) && (puVar12 = (uint *)(local_1f8 + -0x10), (*puVar12 & 0x30000000) == 0))
  {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  puVar9 = *(undefined8 **)(param_1 + 0x250);
  *(undefined8 *)(param_1 + 0x250) = 0;
  if (puVar9 != (undefined8 *)0x0) {
    (**(code **)*puVar9)(puVar9,1);
  }
  uVar8 = (**(code **)(*(longlong *)(param_2 + 0x58) + 0x38))
                    ((longlong *)(param_2 + 0x58),*(undefined8 *)(param_1 + 0x18));
  puVar9 = *(undefined8 **)(param_1 + 0x250);
  *(undefined8 *)(param_1 + 0x250) = uVar8;
  if (puVar9 != (undefined8 *)0x0) {
    (**(code **)*puVar9)(puVar9,1);
  }
  plVar7 = *(longlong **)(param_1 + 0x250);
  uVar8 = *(undefined8 *)(param_1 + 0x18);
  if (plVar7 != (longlong *)0x0) {
    (**(code **)(*plVar7 + 0x58))(plVar7,1);
    FUN_181343cc0(uVar8,plVar7,0xffffffff);
  }
  pbVar2 = (byte *)(*(longlong *)(param_1 + 0x250) + 0xa8);
  *pbVar2 = *pbVar2 & 0xdf;
  FUN_181349c50(*(undefined8 *)(param_1 + 0x250),&local_208,0);
  lVar4 = *(longlong *)(param_1 + 0x250);
  plVar7 = (longlong *)(*(longlong *)(param_1 + 0x18) + 0xb0);
  plVar7 = (longlong *)(**(code **)(*plVar7 + 8))(plVar7,&local_1f0);
  pcVar5 = *(code **)(*(longlong *)(lVar4 + 0xb0) + 0x10);
  if (pcVar5 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    if ((*(uint *)(*plVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar7 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar3 = *(longlong *)(lVar4 + 0xb8);
    *(longlong *)(lVar4 + 0xb8) = *plVar7;
    UNLOCK();
    puVar12 = (uint *)(lVar3 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  else {
    (*pcVar5)(lVar4 + 0xb0,plVar7);
  }
  puVar12 = (uint *)(local_1f0 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  FUN_1805022f0(param_1);
  lVar4 = *(longlong *)(param_1 + 0x250);
  pppuVar14 = (undefined ***)(lVar4 + 0xd8);
  local_1b8 = std::_Func_impl_no_alloc<<lambda_8245c3f2a61094db3685a0988eea292f>,void>::vftable;
  local_180 = &local_1b8;
  local_c0 = (longlong *)0x0;
  local_1b0 = param_1;
  local_c0 = (longlong *)(*(code *)PTR_FUN_1824a0650)(&local_1b8,local_f8);
  if (local_180 != (undefined ***)0x0) {
    (*(code *)(*local_180)[4])(local_180,local_180 != &local_1b8);
    local_180 = (undefined ***)0x0;
  }
  pppuVar6 = *(undefined ****)(lVar4 + 0x110);
  if (pppuVar6 != (undefined ***)0x0) {
    if (pppuVar6 == pppuVar14) {
      local_180 = (undefined ***)(*(code *)(*pppuVar6)[1])(pppuVar6,&local_1b8);
      pppuVar6 = *(undefined ****)(lVar4 + 0x110);
      if (pppuVar6 == (undefined ***)0x0) goto LAB_1805026f3;
      (*(code *)(*pppuVar6)[4])(pppuVar6,pppuVar6 != pppuVar14);
      pppuVar6 = local_180;
    }
    local_180 = pppuVar6;
    *(undefined8 *)(lVar4 + 0x110) = 0;
  }
LAB_1805026f3:
  FUN_180488560(pppuVar14,local_f8);
  if (local_c0 != (longlong *)0x0) {
    (**(code **)(*local_c0 + 0x20))(local_c0,local_c0 != local_f8);
  }
  if (local_180 != (undefined ***)0x0) {
    (*(code *)(*local_180)[4])(local_180,local_180 != &local_1b8);
  }
  if (*(int *)(param_1 + 0x20) - 2U < 2) {
    FUN_181341570(*(undefined8 *)(param_1 + 0x250),*(undefined8 *)(param_1 + 0x18),0);
    local_1d8 = &DAT_182673b68;
    do {
      LOCK();
      uVar13 = DAT_182673b68 & 1;
      DAT_182673b68 = DAT_182673b68 | 1;
      UNLOCK();
    } while (uVar13 != 0);
    if (DAT_18267aad0 == (undefined8 *)0x0) {
      puVar9 = (undefined8 *)FUN_1811316e0(0x20);
      *puVar9 = 0;
      local_1d0 = puVar9;
      pHVar10 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
      if (pHVar10 == (HCURSOR)0x0) {
        pHVar10 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
      }
      puVar9[1] = pHVar10;
      puVar9[2] = 1;
      *(undefined1 *)(puVar9 + 3) = 1;
      DAT_18267aad0 = puVar9;
    }
    else {
      LOCK();
      *(int *)(DAT_18267aad0 + 2) = *(int *)(DAT_18267aad0 + 2) + 1;
      UNLOCK();
    }
    puVar9 = DAT_18267aad0;
    LOCK();
    DAT_182673b68 = 0;
    UNLOCK();
    local_1e8 = DAT_18267aad0;
    FUN_181342db0(*(undefined8 *)(param_1 + 0x250),&local_1e8);
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1804e9060(puVar9);
    }
  }
  puVar12 = (uint *)(local_208 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
LAB_18050286c:
  if (*(int *)(param_1 + 0x20) == 8) {
    uVar8 = (**(code **)(*(longlong *)(param_2 + 0x58) + 0x30))
                      (param_2 + 0x58,*(undefined8 *)(param_1 + 0x18),1);
    puVar9 = *(undefined8 **)(param_1 + 600);
    *(undefined8 *)(param_1 + 600) = uVar8;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
    uVar8 = (**(code **)(*(longlong *)(param_2 + 0x58) + 0x30))
                      (param_2 + 0x58,*(undefined8 *)(param_1 + 0x18),0);
    puVar9 = *(undefined8 **)(param_1 + 0x260);
    *(undefined8 *)(param_1 + 0x260) = uVar8;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
    FUN_18134bf20(*(undefined8 *)(param_1 + 0x18),*(undefined8 *)(param_1 + 600),0xffffffff);
    FUN_18134bf20(*(undefined8 *)(param_1 + 0x18),*(undefined8 *)(param_1 + 0x260),0xffffffff);
    lVar4 = *(longlong *)(param_1 + 600);
    local_178 = std::_Func_impl_no_alloc<<lambda_2b9a083d6713162494b06c12cb2d3f08>,void>::vftable;
    local_140 = &local_178;
    local_80 = (longlong *)0x0;
    local_170 = param_1;
    FUN_180488560(local_b8,&local_178);
    FUN_180488560(&local_178,lVar4 + 0xc0);
    FUN_180488560(lVar4 + 0xc0,local_b8);
    if (local_80 != (longlong *)0x0) {
      (**(code **)(*local_80 + 0x20))(local_80,local_80 != local_b8);
    }
    if (local_140 != (undefined ***)0x0) {
      (*(code *)(*local_140)[4])(local_140,local_140 != &local_178);
    }
    lVar4 = *(longlong *)(param_1 + 0x260);
    local_138 = std::_Func_impl_no_alloc<<lambda_de325e4ca54d4d9cb870b62fdb144321>,void>::vftable;
    local_40 = (longlong *)0x0;
    local_130 = param_1;
    local_100 = &local_138;
    FUN_180488560(local_78,&local_138);
    FUN_180488560(&local_138,lVar4 + 0xc0);
    FUN_180488560(lVar4 + 0xc0,local_78);
    if (local_40 != (longlong *)0x0) {
      (**(code **)(*local_40 + 0x20))(local_40,local_40 != local_78);
    }
    if (local_100 != (undefined ***)0x0) {
      (*(code *)(*local_100)[4])(local_100,local_100 != &local_138);
    }
    if (*(int *)(param_1 + 0x224) == 0) {
      lVar4 = *(longlong *)(param_1 + 600);
      *(undefined4 *)(lVar4 + 0x188) = 300;
      *(undefined4 *)(lVar4 + 0x18c) = 100;
      *(undefined4 *)(lVar4 + 400) = 0x14;
      lVar4 = *(longlong *)(param_1 + 0x260);
      *(undefined4 *)(lVar4 + 0x188) = 300;
      *(undefined4 *)(lVar4 + 0x18c) = 100;
      *(undefined4 *)(lVar4 + 400) = 0x14;
    }
    else {
      FUN_181341570(*(undefined8 *)(param_1 + 600),*(undefined8 *)(param_1 + 0x18),0);
      FUN_181341570(*(undefined8 *)(param_1 + 0x260),*(undefined8 *)(param_1 + 0x18),0);
    }
    plVar7 = (longlong *)(*(longlong *)(param_1 + 0x18) + 0xb0);
    (**(code **)(*plVar7 + 8))(plVar7,&local_210);
    plVar7 = (longlong *)(*(longlong *)(param_1 + 600) + 0xb0);
    (**(code **)(*plVar7 + 0x10))(plVar7,&local_210);
    plVar7 = (longlong *)(*(longlong *)(param_1 + 0x260) + 0xb0);
    (**(code **)(*plVar7 + 0x10))(plVar7,&local_210);
    puVar12 = (uint *)(local_210 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  else {
    puVar9 = *(undefined8 **)(param_1 + 600);
    *(undefined8 *)(param_1 + 600) = 0;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
    puVar9 = *(undefined8 **)(param_1 + 0x260);
    *(undefined8 *)(param_1 + 0x260) = 0;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
  }
  pcVar5 = *(code **)(*(longlong *)(param_2 + 0x58) + 0x40);
  if (pcVar5 != FUN_18130ccb0) {
    uVar11 = (*pcVar5)((longlong *)(param_2 + 0x58),*(undefined8 *)(param_1 + 0x18));
  }
  FUN_181341c80(*(undefined8 *)(param_1 + 0x18),uVar11);
  (**(code **)(**(longlong **)(param_1 + 0x18) + 0x108))();
  FUN_18134bdf0(*(undefined8 *)(param_1 + 0x18));
}



############ FUN_ 1812f0230 size=628 ############

undefined8 FUN_1812f0230(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  longlong lVar1;
  bool bVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined8 uVar12;
  undefined1 local_88 [80];
  
  puVar3 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar3 = juce::PopupMenuCompletionCallback::vftable;
  lVar9 = 0;
  puVar3[1] = 0;
  puVar3[2] = 0;
  FUN_1804de690(puVar3 + 3,DAT_182673708);
  lVar1 = puVar3[3];
  lVar4 = lVar9;
  if (lVar1 != 0) {
    lVar4 = *(longlong *)(lVar1 + 0x10);
  }
  if (lVar4 != 0) {
    if (lVar1 != 0) {
      lVar9 = *(longlong *)(lVar1 + 0x10);
    }
    lVar1 = *(longlong *)(lVar9 + 0x18);
    while (lVar4 = lVar1, lVar4 != 0) {
      lVar9 = lVar4;
      lVar1 = *(longlong *)(lVar4 + 0x18);
    }
  }
  FUN_1804de690(puVar3 + 4,lVar9);
  DAT_182678e96 = 0;
  puVar10 = param_3;
  puVar11 = puVar3;
  if (*param_1 != param_1[1]) {
    uVar5 = FUN_1811316e0(0x198);
    uVar12 = uVar5;
    uVar6 = FUN_1804ff0d0(local_88,param_2);
    if ((*(int *)(param_2 + 1) < 1) || (*(int *)((longlong)param_2 + 0xc) < 1)) {
      bVar2 = true;
    }
    else {
      bVar2 = false;
    }
    plVar7 = (longlong *)
             FUN_1804faf50(uVar5,param_1,0,uVar6,!bVar2,((byte)DAT_182673aec & 0x70) != 0,puVar3 + 1
                           ,DAT_1824c3ea4,uVar12,*param_2,*(int *)(param_2 + 1));
    if (plVar7 != (longlong *)0x0) {
      puVar10 = (undefined8 *)puVar3[2];
      puVar3[2] = plVar7;
      if (puVar10 != (undefined8 *)0x0) {
        (**(code **)*puVar10)(puVar10,1);
      }
      (**(code **)(*plVar7 + 0x58))(plVar7,1);
      puVar10 = (undefined8 *)0x0;
      FUN_18134ab30(plVar7,0,param_3,0);
      puVar11 = (undefined8 *)0x0;
      if (DAT_182673c20 == (undefined8 *)0x0) {
        puVar8 = (undefined8 *)FUN_1811316e0(0x28);
        FUN_1812a59f0(puVar8);
        FUN_1812a7230(puVar8 + 2);
        *puVar8 = juce::ModalComponentManager::vftable;
        puVar8[2] = juce::ModalComponentManager::vftable;
        puVar8[3] = 0;
        puVar8[4] = 0;
        DAT_182673c20 = puVar8;
      }
      FUN_18133b470(DAT_182673c20,plVar7,puVar3);
      FUN_181344f60(plVar7,0);
    }
  }
  if (puVar11 != (undefined8 *)0x0) {
    (**(code **)*puVar11)(puVar11,1);
  }
  if (puVar10 != (undefined8 *)0x0) {
    (**(code **)*puVar10)(puVar10,1);
  }
  return 0;
}



############ FUN_ 181348420 size=519 ############

void FUN_181348420(longlong param_1,longlong *param_2,longlong *param_3,undefined8 param_4,
                  longlong *param_5)

{
  int *piVar1;
  undefined8 *puVar2;
  uint uVar3;
  longlong lVar4;
  undefined8 uVar5;
  int iVar6;
  uint *_Memory;
  bool bVar7;
  longlong local_158;
  undefined4 local_150;
  undefined8 local_110;
  longlong *local_108;
  longlong alStack_100 [4];
  undefined1 *local_e0;
  undefined4 local_d8;
  undefined1 local_d4;
  ushort local_d3;
  undefined1 local_d1;
  undefined8 local_c8;
  undefined1 local_c0 [136];
  
  local_c8 = 0xfffffffffffffffe;
  local_158 = *param_2;
  *param_2 = (longlong)&DAT_1821dbf98;
  iVar6 = 0;
  local_110 = 0;
  local_108 = (longlong *)0x0;
  alStack_100[0] = 0;
  alStack_100[1] = 0;
  alStack_100[2] = 0;
  alStack_100[3] = 0;
  local_e0 = &DAT_1821dbf98;
  local_d8 = 0;
  local_d3 = 0;
  local_d1 = 0;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_150 = 0;
  lVar4 = *param_3;
  if (lVar4 != param_3[1]) {
    do {
      if (*(char *)(lVar4 + 0x86) == '\0') {
        iVar6 = iVar6 + 1;
      }
      lVar4 = lVar4 + 0x88;
    } while (lVar4 != param_3[1]);
    local_d4 = 1;
    if (0 < iVar6) goto LAB_1813484f5;
  }
  local_d4 = 0;
LAB_1813484f5:
  local_108 = (longlong *)FUN_1811316e0(0x20);
  *local_108 = 0;
  local_108[1] = 0;
  local_108[2] = 0;
  *local_108 = *param_3;
  local_108[1] = param_3[1];
  local_108[2] = param_3[2];
  *param_3 = 0;
  param_3[1] = 0;
  param_3[2] = 0;
  local_108[3] = param_3[3];
  param_3[3] = 0;
  local_d3 = local_d3 & 0xff00;
  if (alStack_100 != param_5) {
    alStack_100[0] = *param_5;
    *param_5 = 0;
  }
  uVar5 = FUN_181348200(local_c0,&local_158);
  lVar4 = *(longlong *)(param_1 + 8);
  if (*(longlong *)(param_1 + 0x10) == lVar4) {
    FUN_18051fa90(param_1,lVar4,uVar5,param_4,uVar5);
  }
  else {
    FUN_181348200(lVar4,uVar5);
    *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 0x88;
  }
  FUN_1804d80a0(uVar5);
  FUN_1804d80a0(&local_158);
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar2 = (undefined8 *)param_3[3];
  if (puVar2 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar2 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  FUN_18051c930(param_3);
  puVar2 = (undefined8 *)*param_5;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  return;
}



############ FUN_ 180503a60 size=884 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180503a60(longlong param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  float fVar2;
  uint uVar3;
  uint uVar4;
  bool bVar5;
  char cVar6;
  undefined4 uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  double dVar11;
  double dVar12;
  undefined8 uVar13;
  undefined1 auStack_88 [40];
  undefined8 local_60;
  longlong *local_58;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_88;
  *(undefined2 *)(param_1 + 0x235) = 0;
  uVar7 = *param_2;
  uVar1 = param_2[1];
  *(undefined4 *)(param_1 + 0x1d0) = uVar7;
  *(undefined4 *)(param_1 + 0x1d4) = uVar1;
  *(undefined4 *)(param_1 + 0x1c8) = uVar7;
  *(undefined4 *)(param_1 + 0x1cc) = uVar1;
  puVar10 = *(undefined8 **)(param_1 + 0x200);
  *(undefined8 *)(param_1 + 0x200) = 0;
  if (puVar10 != (undefined8 *)0x0) {
    FUN_180501f20(*puVar10);
                    /* WARNING: Subroutine does not return */
    free(puVar10);
  }
  puVar10 = *(undefined8 **)(param_1 + 0x268);
  *(undefined8 *)(param_1 + 0x268) = 0;
  if (puVar10 != (undefined8 *)0x0) {
    (**(code **)*puVar10)(puVar10,1);
  }
  if ((*(byte *)(*(longlong *)(param_1 + 0x18) + 0xa9) & 0x10) == 0) {
    if ((*(longlong *)(*(longlong *)(param_1 + 0x18) + 0x18) != 0) &&
       (cVar6 = FUN_18133eaa0(), cVar6 == '\0')) {
    }
    uVar3 = param_2[4];
    uVar9 = (ulonglong)((uVar3 >> 0xd) << 8);
    if (((uVar3 >> 5 & 1) == 0) || (*(char *)(param_1 + 0x234) == '\0')) {
      if ((*(char *)(param_1 + 0x22d) == '\0') ||
         (((*(int *)(param_1 + 0x20) == 8 ||
           (*(double *)(param_1 + 0x180) < *(double *)(param_1 + 0x98))) ||
          (bVar5 = true, *(double *)(param_1 + 0xa0) < *(double *)(param_1 + 0x180))))) {
        bVar5 = false;
      }
      if (bVar5) {
        uVar4 = *(uint *)(param_1 + 0x248);
        uVar9 = (ulonglong)uVar4;
        if ((uVar4 != 0) && ((uVar3 & 0xffffff8f) == uVar4)) {
          FUN_180504780(param_1);
        }
      }
      if (*(double *)(param_1 + 0x98) <= *(double *)(param_1 + 0xa0) &&
          *(double *)(param_1 + 0xa0) != *(double *)(param_1 + 0x98)) {
        *(undefined1 *)(param_1 + 0x235) = 1;
        if (*(longlong *)(param_1 + 0x250) != 0) {
          FUN_1812e8fb0(*(longlong *)(param_1 + 0x250),CONCAT71((int7)(uVar9 >> 8),1));
        }
        uVar7 = FUN_1805031b0(param_1,param_2);
        *(undefined4 *)(param_1 + 0x1e0) = uVar7;
        puVar10 = (undefined8 *)(param_1 + 0x68);
        (**(code **)(*(longlong *)*puVar10 + 8))((longlong *)*puVar10,&local_58);
        (**(code **)(**(longlong **)(param_1 + 0x50) + 8))(*(longlong **)(param_1 + 0x50),&local_48)
        ;
        dVar11 = (double)(**(code **)(*local_58 + 0x18))(local_58,local_50);
        dVar12 = (double)(**(code **)(*local_48 + 0x18))(local_48,local_40);
        *(double *)(param_1 + 0x1b0) = dVar11 - dVar12;
        (**(code **)(*local_48 + 0xb0))(local_48,local_40);
        (**(code **)(*local_58 + 0xb0))(local_58,local_50);
        if (1 < *(int *)(param_1 + 0x20) - 9U) {
          (**(code **)(**(longlong **)(param_1 + 0x38) + 8))
                    (*(longlong **)(param_1 + 0x38),&local_58);
          uVar13 = (**(code **)(*local_58 + 0x18))(local_58,local_50);
          fVar2 = *(float *)(param_1 + 0x1bc);
          dVar11 = (double)(**(code **)(**(longlong **)(param_1 + 0x18) + 0x188))
                                     (*(longlong **)(param_1 + 0x18),uVar13);
          *(double *)(param_1 + 0x198) =
               dVar11 * (double)(*(float *)(param_1 + 0x1c0) - fVar2) + (double)fVar2;
          (**(code **)(*local_58 + 0xb0))(local_58,local_50);
        }
        if ((*(int *)(param_1 + 0x1e0) != 2) &&
           (puVar10 = (undefined8 *)(param_1 + 0x50), *(int *)(param_1 + 0x1e0) != 1)) {
          puVar10 = (undefined8 *)(param_1 + 0x38);
        }
        (**(code **)(*(longlong *)*puVar10 + 8))((longlong *)*puVar10,&local_58);
        uVar13 = (**(code **)(*local_58 + 0x18))(local_58,local_50);
        *(undefined8 *)(param_1 + 0x188) = uVar13;
        (**(code **)(*local_58 + 0xb0))(local_58,local_50);
        *(undefined8 *)(param_1 + 400) = *(undefined8 *)(param_1 + 0x188);
        if ((*(char *)(param_1 + 0x232) != '\0') || (*(char *)(param_1 + 0x233) != '\0')) {
          FUN_180504460(param_1);
          if (*(longlong *)(param_1 + 0x268) != 0) {
            FUN_1812a7720(*(longlong *)(param_1 + 0x268) + 0xe8);
          }
        }
        plVar8 = (longlong *)FUN_1811316e0(8);
        *plVar8 = param_1;
        local_48 = plVar8;
        FUN_180501e20(param_1);
        puVar10 = *(undefined8 **)(param_1 + 0x200);
        *(longlong **)(param_1 + 0x200) = plVar8;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_180501f20(*puVar10);
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
        FUN_180503df0(param_1,param_2);
      }
    }
    else {
      FUN_180502bf0(param_1);
    }
  }
}



############ FUN_ 180504460 size=541 ############

void FUN_180504460(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  code *pcVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  undefined4 uVar8;
  undefined4 local_30;
  undefined8 local_2c;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  
  if ((*(int *)(param_1 + 0x20) != 8) && (*(longlong *)(param_1 + 0x268) == 0)) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x118,param_2,param_3,param_4,0xfffffffffffffffe);
    lVar6 = *(longlong *)(param_1 + 0x270);
    uVar1 = *(undefined8 *)(param_1 + 0x18);
    FUN_1812c9050(puVar4);
    puVar4[0x1e] = 0xffffffffffffffff;
    lVar7 = 0;
    *(undefined4 *)(puVar4 + 0x1f) = 0;
    *puVar4 = juce::Slider::Pimpl::PopupDisplayComponent::vftable;
    puVar4[0x1d] = juce::Slider::Pimpl::PopupDisplayComponent::vftable;
    puVar4[0x20] = uVar1;
    lVar5 = FUN_18134adf0(uVar1);
    (**(code **)(*(longlong *)(lVar5 + 0x58) + 0x48))
              ((longlong *)(lVar5 + 0x58),puVar4 + 0x21,uVar1);
    puVar4[0x22] = &DAT_1821dbf98;
    if (lVar6 == 0) {
      local_30 = FUN_181344210(uVar1);
      local_2c = 0;
      local_24 = 0;
      local_1c = 0;
      local_20 = local_30;
      FUN_18134af50(puVar4,&local_30);
    }
    FUN_18134b0f0(puVar4,1);
    lVar6 = FUN_18134adf0(puVar4[0x20]);
    pcVar2 = *(code **)(*(longlong *)(lVar6 + 0x58) + 0x50);
    if (pcVar2 == FUN_18130cbe0) {
      uVar8 = 0xf;
    }
    else {
      uVar8 = (*pcVar2)((longlong *)(lVar6 + 0x58),uVar1);
    }
    *(undefined4 *)(puVar4 + 0x19) = uVar8;
    lVar6 = FUN_18134adf0(uVar1);
    if (puVar4[10] != 0) {
      lVar7 = *(longlong *)(puVar4[10] + 0x10);
    }
    if (lVar7 != lVar6) {
      FUN_18051b750(puVar4 + 10,lVar6);
      FUN_181341b10(puVar4);
    }
    puVar3 = *(undefined8 **)(param_1 + 0x268);
    *(undefined8 **)(param_1 + 0x268) = puVar4;
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
    if (*(longlong *)(param_1 + 0x270) == 0) {
      (**(code **)(**(longlong **)(param_1 + 0x268) + 0x68))
                (*(longlong **)(param_1 + 0x268),0x406,0);
    }
    else if (*(longlong *)(param_1 + 0x268) != 0) {
      FUN_181343cc0(*(longlong *)(param_1 + 0x270),*(longlong *)(param_1 + 0x268),0xffffffff);
    }
    if (*(int *)(param_1 + 0x20) - 9U < 2) {
      if (*(int *)(param_1 + 0x1e0) == 2) {
        uVar8 = FUN_180501d40();
      }
      else {
        uVar8 = FUN_180501cd0(param_1);
      }
    }
    else {
      uVar8 = FUN_180501460();
    }
    FUN_180504680(param_1,uVar8);
    (**(code **)(**(longlong **)(param_1 + 0x268) + 0x58))(*(longlong **)(param_1 + 0x268),1);
  }
  return;
}



############ FUN_ 180504a80 size=1410 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180504a80(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  float fVar6;
  float fVar7;
  double dVar8;
  double dVar9;
  uint uVar10;
  undefined8 uVar11;
  char cVar12;
  int iVar13;
  undefined8 *puVar14;
  float *pfVar15;
  int iVar16;
  int iVar17;
  undefined8 uVar18;
  bool bVar19;
  longlong *plVar20;
  double dVar21;
  double dVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  undefined1 auStack_198 [32];
  float local_178;
  float fStack_174;
  undefined8 local_170;
  float local_168;
  float fStack_164;
  undefined8 local_158;
  undefined8 uStack_150;
  float local_148;
  float fStack_144;
  float local_140;
  float local_13c;
  undefined1 local_138 [8];
  undefined8 local_130;
  undefined8 local_128;
  undefined4 uStack_120;
  undefined4 uStack_11c;
  undefined8 local_118;
  undefined1 local_110 [8];
  undefined1 local_108 [8];
  undefined1 local_100 [16];
  longlong *local_f0;
  undefined1 local_e8 [8];
  longlong *local_e0;
  undefined1 local_d8 [8];
  ulonglong local_d0;
  
  local_118 = 0xfffffffffffffffe;
  local_d0 = DAT_182615970 ^ (ulonglong)auStack_198;
  bVar19 = false;
  local_178 = 0.0;
  if (DAT_182673700 == 0) {
    local_130 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_130);
  }
  uVar10 = DAT_1824c4f30;
  dVar9 = DAT_1824c4140;
  dVar8 = DAT_1824c4050;
  fVar7 = DAT_1824c3ea4;
  fVar6 = DAT_1824c3d8c;
  plVar20 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar20 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  if (plVar20 != plVar1) {
    do {
      if (*(char *)(*plVar20 + 0x40) != '\0') {
        FUN_1804e67c0(*plVar20,0);
        if (*(int *)(param_1 + 0x1e0) == 2) {
          (**(code **)(**(longlong **)(param_1 + 0x68) + 8))
                    (*(longlong **)(param_1 + 0x68),&local_f0);
          dVar21 = (double)(**(code **)(*local_f0 + 0x18))(local_f0,local_e8);
          (**(code **)(*local_f0 + 0xb0))(local_f0,local_e8);
        }
        else if (*(int *)(param_1 + 0x1e0) == 1) {
          dVar21 = (double)FUN_180501cd0(param_1);
        }
        else {
          (**(code **)(**(longlong **)(param_1 + 0x38) + 8))
                    (*(longlong **)(param_1 + 0x38),&local_e0);
          bVar19 = true;
          dVar21 = (double)(**(code **)(*local_e0 + 0x18))(local_e0,local_d8);
        }
        if (bVar19) {
          bVar19 = false;
          (**(code **)(*local_e0 + 0xb0))(local_e0,local_d8);
        }
        if (*(int *)(param_1 + 0x20) - 4U < 4) {
          pfVar15 = (float *)(*plVar20 + 0x70);
          fVar23 = *pfVar15;
          fVar26 = *(float *)(*plVar20 + 0x74);
          uVar18 = *(undefined8 *)pfVar15;
          if (DAT_182673700 == 0) {
            local_158 = FUN_1811316e0(0x130);
            DAT_182673700 = FUN_18133c6c0(local_158);
          }
          fVar24 = *(float *)(DAT_182673700 + 0xc0);
          if (fVar24 == fVar7) {
            local_130 = uVar18;
            pfVar15 = (float *)&local_130;
          }
          else {
            local_140 = fVar23 / fVar24;
            local_13c = fVar26 / fVar24;
            pfVar15 = &local_140;
          }
          fVar24 = *pfVar15;
          fVar25 = pfVar15[1];
          plVar2 = *(longlong **)(param_1 + 0x18);
          local_148 = fVar23;
          fStack_144 = fVar26;
          dVar21 = (double)(**(code **)(*plVar2 + 0x188))(plVar2,*(undefined8 *)(param_1 + 400));
          dVar22 = (double)(**(code **)(*plVar2 + 0x188))(plVar2);
          fVar23 = (float)((double)*(int *)(param_1 + 0x1e4) * (dVar21 - dVar22));
          if (*(int *)(param_1 + 0x20) == 5) {
            fVar23 = (float)((uint)fVar23 ^ uVar10);
            fVar26 = 0.0;
LAB_180504d3a:
            fVar24 = fVar23 + fVar24;
            fVar23 = fVar26;
          }
          else {
            if (*(int *)(param_1 + 0x20) != 6) {
              fVar26 = fVar23 * fVar6;
              fVar23 = fVar23 * DAT_1824c4670;
              goto LAB_180504d3a;
            }
            fVar24 = fVar24 + 0.0;
          }
          fVar25 = fVar25 + fVar23;
          lVar3 = *(longlong *)(param_1 + 0x18);
          uStack_11c = *(undefined4 *)(lVar3 + 0x2c);
          uStack_120 = *(undefined4 *)(lVar3 + 0x28);
          uStack_150 = *(undefined8 *)(lVar3 + 0x28);
          local_128 = 0;
          local_158 = 0;
          for (; lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
            puVar14 = (undefined8 *)FUN_18051e4b0(local_100,lVar3,&local_158);
            local_158 = *puVar14;
            uStack_150 = puVar14[1];
          }
          iVar13 = (int)uStack_150 + -8;
          iVar17 = 0;
          if (0 < iVar13) {
            iVar17 = iVar13;
          }
          iVar16 = (int)((ulonglong)uStack_150 >> 0x20) + -8;
          iVar13 = 0;
          if (0 < iVar16) {
            iVar13 = iVar16;
          }
          fVar23 = (float)((int)((ulonglong)local_158 >> 0x20) + 4);
          fVar26 = (float)((int)local_158 + 4);
          local_178 = fVar26;
          if ((fVar26 <= fVar24) &&
             (local_178 = fVar26 + (float)iVar17, fVar24 <= fVar26 + (float)iVar17)) {
            local_178 = fVar24;
          }
          fStack_174 = fVar23;
          if ((fVar23 <= fVar25) &&
             (fStack_174 = (float)iVar13 + fVar23, fVar25 <= (float)iVar13 + fVar23)) {
            fStack_174 = fVar25;
          }
          lVar3 = *(longlong *)(param_1 + 0x18);
          local_168 = local_178;
          fStack_164 = fStack_174;
          if (lVar3 == 0) {
            uVar11 = CONCAT44(fStack_174,local_178);
          }
          else {
            lVar4 = lVar3;
            for (lVar5 = *(longlong *)(lVar3 + 0x18); lVar5 != 0;
                lVar5 = *(longlong *)(lVar5 + 0x18)) {
              lVar4 = lVar5;
            }
            pfVar15 = (float *)FUN_1805200f0(local_110,lVar4,CONCAT44(fStack_174,local_178));
            local_178 = *pfVar15;
            fStack_174 = pfVar15[1];
            uVar18 = *(undefined8 *)pfVar15;
            uVar11 = *(undefined8 *)pfVar15;
            if (lVar4 != lVar3) {
              if (*(longlong *)(lVar3 + 0x18) != lVar4) {
                puVar14 = (undefined8 *)
                          FUN_1805200a0(local_108,lVar4,*(longlong *)(lVar3 + 0x18),
                                        *(undefined8 *)pfVar15);
                uVar18 = *puVar14;
              }
              FUN_1805200f0(&local_170,lVar3,uVar18);
              uVar11 = local_170;
            }
          }
          local_170 = uVar11;
          *(undefined8 *)(param_1 + 0x1c8) = local_170;
          *(undefined8 *)(param_1 + 0x1d0) = local_170;
          *(undefined8 *)(param_1 + 400) = *(undefined8 *)(param_1 + 0x188);
        }
        else {
          dVar22 = dVar8;
          if (*(double *)(param_1 + 0x98) < *(double *)(param_1 + 0xa0)) {
            if (*(double *)(param_1 + 0x98) <= dVar21) {
              dVar22 = dVar9;
              if (dVar21 <= *(double *)(param_1 + 0xa0)) {
                dVar22 = (double)(**(code **)(**(longlong **)(param_1 + 0x18) + 0x188))();
              }
            }
            else {
              dVar22 = 0.0;
            }
          }
          if ((*(uint *)(param_1 + 0x20) < 0xd) &&
             ((0x150aU >> (*(uint *)(param_1 + 0x20) & 0x1f) & 1) != 0)) {
            dVar22 = dVar9 - dVar22;
          }
          fVar26 = (float)((double)*(int *)(param_1 + 0x1dc) * dVar22 +
                          (double)*(int *)(param_1 + 0x1d8));
          cVar12 = FUN_180501440(param_1);
          fVar23 = fVar26;
          if (cVar12 == '\0') {
            fVar23 = (float)*(int *)(*(longlong *)(param_1 + 0x18) + 0x2c) * fVar6;
          }
          cVar12 = FUN_180501420(param_1);
          if (cVar12 == '\0') {
            fVar26 = (float)*(int *)(*(longlong *)(param_1 + 0x18) + 0x28) * fVar6;
          }
          FUN_18051dc40(local_138,0,*(undefined8 *)(param_1 + 0x18),CONCAT44(fVar23,fVar26));
        }
        FUN_1804e5b90();
      }
      plVar20 = plVar20 + 1;
    } while (plVar20 != plVar1);
  }
}



############ FUN_ 1812dc780 size=1307 ############

void FUN_1812dc780(longlong param_1,uint param_2,longlong *param_3)

{
  void *pvVar1;
  uint uVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  undefined8 uVar6;
  longlong *plVar7;
  longlong *plVar8;
  longlong lVar9;
  undefined4 *puVar10;
  ulonglong uVar11;
  undefined8 *puVar12;
  ulonglong uVar13;
  longlong *plVar14;
  longlong lVar15;
  ulonglong uVar16;
  longlong *plVar17;
  int iVar18;
  ulonglong uVar19;
  longlong *plVar20;
  uint uVar21;
  uint uVar22;
  ulonglong uVar23;
  
  uVar13 = 0;
  uVar4 = 0;
  if (0 < *(int *)(param_1 + 0x2b4)) {
    plVar14 = (longlong *)(param_1 + 0x2a8);
    uVar16 = uVar13;
    uVar19 = uVar13;
    uVar23 = uVar13;
    do {
      lVar15 = *(longlong *)(uVar19 + *plVar14);
      lVar9 = *(longlong *)(lVar15 + 0x10);
      lVar15 = (longlong)*(int *)(lVar15 + 0x1c) * 0x10 + lVar9;
      uVar11 = uVar13;
      for (; lVar9 != lVar15; lVar9 = lVar9 + 0x10) {
        uVar11 = (ulonglong)(uint)((int)uVar11 + *(int *)(lVar9 + 0xc));
      }
      uVar2 = (uint)uVar16;
      uVar4 = (int)uVar11 + uVar2;
      uVar21 = (uint)uVar23;
      if (param_2 == uVar2) {
        iVar5 = *(int *)((longlong)param_3 + 0xc) + -1;
        lVar15 = (longlong)iVar5;
        if (-1 < iVar5) {
          do {
            plVar7 = (longlong *)FUN_1811316e0(0x28);
            plVar20 = *(longlong **)(*param_3 + lVar15 * 8);
            lVar9 = *plVar20;
            *plVar7 = lVar9;
            if (lVar9 != 0) {
              LOCK();
              *(int *)(lVar9 + 8) = *(int *)(lVar9 + 8) + 1;
              UNLOCK();
            }
            *(int *)(plVar7 + 1) = (int)plVar20[1];
            plVar7[2] = 0;
            plVar7[3] = 0;
            iVar5 = *(int *)((longlong)plVar20 + 0x1c);
            lVar9 = plVar20[2];
            if (0 < iVar5) {
              iVar18 = iVar5;
              if (iVar5 < 0) {
                iVar18 = iVar5 + 1;
              }
              FUN_18051d4f0(plVar7 + 2,(iVar18 >> 1) + 8 + iVar5 & 0xfffffff8);
            }
            iVar18 = iVar5 + -1;
            if (-1 < iVar18) {
              puVar10 = (undefined4 *)(lVar9 + 0xc);
              plVar8 = (longlong *)((longlong)*(int *)((longlong)plVar7 + 0x1c) * 0x10 + plVar7[2]);
              do {
                lVar9 = *(longlong *)(puVar10 + -3);
                *plVar8 = lVar9;
                if ((*(uint *)(lVar9 + -0x10) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(lVar9 + -0x10) = *(int *)(lVar9 + -0x10) + 1;
                  UNLOCK();
                }
                *(undefined4 *)(plVar8 + 1) = puVar10[-1];
                uVar3 = *puVar10;
                puVar10 = puVar10 + 4;
                iVar18 = iVar18 + -1;
                *(undefined4 *)((longlong)plVar8 + 0xc) = uVar3;
                plVar8 = plVar8 + 2;
              } while (-1 < iVar18);
            }
            *(int *)((longlong)plVar7 + 0x1c) = *(int *)((longlong)plVar7 + 0x1c) + iVar5;
            *(int *)(plVar7 + 4) = (int)plVar20[4];
            iVar18 = *(int *)(param_1 + 0x2b4);
            iVar5 = iVar18 + 1;
            if (*(int *)(param_1 + 0x2b0) < iVar5) {
              if (iVar5 < 0) {
                iVar5 = iVar18 + 2;
              }
              FUN_18047cb30(plVar14,iVar18 + 9 + (iVar5 >> 1) & 0xfffffff8);
            }
            uVar2 = *(uint *)(param_1 + 0x2b4);
            if (uVar21 < uVar2) {
              pvVar1 = (void *)(*plVar14 + (longlong)(int)uVar21 * 8);
              memmove((void *)((longlong)pvVar1 + 8),pvVar1,(longlong)(int)(uVar2 - uVar21) << 3);
              puVar12 = (undefined8 *)(*plVar14 + (longlong)(int)uVar21 * 8);
            }
            else {
              puVar12 = (undefined8 *)(*plVar14 + (longlong)(int)uVar2 * 8);
            }
            *puVar12 = plVar7;
            *(int *)(param_1 + 0x2b4) = *(int *)(param_1 + 0x2b4) + 1;
            lVar15 = lVar15 + -1;
          } while (-1 < lVar15);
        }
        break;
      }
      if (((int)uVar2 < (int)param_2) && ((int)param_2 < (int)uVar4)) {
        uVar22 = uVar21 + 1;
        uVar6 = FUN_180506840(*(undefined8 *)(*plVar14 + (longlong)(int)uVar21 * 8),param_2 - uVar2)
        ;
        FUN_18051b0d0(plVar14,uVar22,uVar6);
        iVar5 = *(int *)((longlong)param_3 + 0xc) + -1;
        lVar15 = (longlong)iVar5;
        if (-1 < iVar5) {
          do {
            plVar7 = (longlong *)FUN_1811316e0(0x28);
            plVar20 = *(longlong **)(*param_3 + lVar15 * 8);
            lVar9 = *plVar20;
            *plVar7 = lVar9;
            if (lVar9 != 0) {
              LOCK();
              *(int *)(lVar9 + 8) = *(int *)(lVar9 + 8) + 1;
              UNLOCK();
            }
            *(int *)(plVar7 + 1) = (int)plVar20[1];
            plVar7[2] = 0;
            plVar7[3] = 0;
            iVar5 = *(int *)((longlong)plVar20 + 0x1c);
            lVar9 = plVar20[2];
            if (0 < iVar5) {
              iVar18 = iVar5;
              if (iVar5 < 0) {
                iVar18 = iVar5 + 1;
              }
              FUN_18051d4f0(plVar7 + 2,(iVar18 >> 1) + 8 + iVar5 & 0xfffffff8);
            }
            iVar18 = iVar5 + -1;
            if (-1 < iVar18) {
              puVar10 = (undefined4 *)(lVar9 + 0xc);
              plVar8 = (longlong *)((longlong)*(int *)((longlong)plVar7 + 0x1c) * 0x10 + plVar7[2]);
              do {
                lVar9 = *(longlong *)(puVar10 + -3);
                *plVar8 = lVar9;
                if ((*(uint *)(lVar9 + -0x10) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(lVar9 + -0x10) = *(int *)(lVar9 + -0x10) + 1;
                  UNLOCK();
                }
                *(undefined4 *)(plVar8 + 1) = puVar10[-1];
                uVar3 = *puVar10;
                puVar10 = puVar10 + 4;
                iVar18 = iVar18 + -1;
                *(undefined4 *)((longlong)plVar8 + 0xc) = uVar3;
                plVar8 = plVar8 + 2;
              } while (-1 < iVar18);
            }
            *(int *)((longlong)plVar7 + 0x1c) = *(int *)((longlong)plVar7 + 0x1c) + iVar5;
            *(int *)(plVar7 + 4) = (int)plVar20[4];
            iVar18 = *(int *)(param_1 + 0x2b4);
            iVar5 = iVar18 + 1;
            if (*(int *)(param_1 + 0x2b0) < iVar5) {
              if (iVar5 < 0) {
                iVar5 = iVar18 + 2;
              }
              FUN_18047cb30(plVar14,iVar18 + 9 + (iVar5 >> 1) & 0xfffffff8);
            }
            uVar2 = *(uint *)(param_1 + 0x2b4);
            if (uVar22 < uVar2) {
              pvVar1 = (void *)(*plVar14 + (longlong)(int)uVar22 * 8);
              memmove((void *)((longlong)pvVar1 + 8),pvVar1,(longlong)(int)(uVar2 - uVar22) << 3);
              puVar12 = (undefined8 *)(*plVar14 + (longlong)(int)uVar22 * 8);
            }
            else {
              puVar12 = (undefined8 *)(*plVar14 + (longlong)(int)uVar2 * 8);
            }
            *puVar12 = plVar7;
            *(int *)(param_1 + 0x2b4) = *(int *)(param_1 + 0x2b4) + 1;
            lVar15 = lVar15 + -1;
          } while (-1 < lVar15);
        }
        break;
      }
      uVar23 = (ulonglong)(uVar21 + 1);
      uVar19 = uVar19 + 8;
      uVar16 = (ulonglong)uVar4;
    } while ((int)(uVar21 + 1) < *(int *)(param_1 + 0x2b4));
  }
  if (uVar4 == param_2) {
    plVar14 = (longlong *)*param_3;
    plVar20 = plVar14 + *(int *)((longlong)param_3 + 0xc);
    if (plVar14 != plVar20) {
      do {
        plVar7 = (longlong *)*plVar14;
        plVar8 = (longlong *)FUN_1811316e0(0x28);
        lVar15 = *plVar7;
        *plVar8 = lVar15;
        if (lVar15 != 0) {
          LOCK();
          *(int *)(lVar15 + 8) = *(int *)(lVar15 + 8) + 1;
          UNLOCK();
        }
        *(int *)(plVar8 + 1) = (int)plVar7[1];
        plVar8[2] = 0;
        plVar8[3] = 0;
        iVar5 = *(int *)((longlong)plVar7 + 0x1c);
        lVar15 = plVar7[2];
        if (0 < iVar5) {
          iVar18 = iVar5;
          if (iVar5 < 0) {
            iVar18 = iVar5 + 1;
          }
          FUN_18051d4f0(plVar8 + 2,(iVar18 >> 1) + 8 + iVar5 & 0xfffffff8);
        }
        iVar18 = iVar5 + -1;
        if (-1 < iVar18) {
          puVar10 = (undefined4 *)(lVar15 + 0xc);
          plVar17 = (longlong *)((longlong)*(int *)((longlong)plVar8 + 0x1c) * 0x10 + plVar8[2]);
          do {
            lVar15 = *(longlong *)(puVar10 + -3);
            *plVar17 = lVar15;
            if ((*(uint *)(lVar15 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(lVar15 + -0x10) = *(int *)(lVar15 + -0x10) + 1;
              UNLOCK();
            }
            *(undefined4 *)(plVar17 + 1) = puVar10[-1];
            uVar3 = *puVar10;
            puVar10 = puVar10 + 4;
            iVar18 = iVar18 + -1;
            *(undefined4 *)((longlong)plVar17 + 0xc) = uVar3;
            plVar17 = plVar17 + 2;
          } while (-1 < iVar18);
        }
        *(int *)((longlong)plVar8 + 0x1c) = *(int *)((longlong)plVar8 + 0x1c) + iVar5;
        *(int *)(plVar8 + 4) = (int)plVar7[4];
        iVar18 = *(int *)(param_1 + 0x2b4);
        iVar5 = iVar18 + 1;
        if (*(int *)(param_1 + 0x2b0) < iVar5) {
          if (iVar5 < 0) {
            iVar5 = iVar18 + 2;
          }
          FUN_18047cb30((longlong *)(param_1 + 0x2a8),iVar18 + 9 + (iVar5 >> 1) & 0xfffffff8);
        }
        iVar5 = *(int *)(param_1 + 0x2b4);
        plVar14 = plVar14 + 1;
        *(int *)(param_1 + 0x2b4) = iVar5 + 1;
        *(longlong **)(*(longlong *)(param_1 + 0x2a8) + (longlong)iVar5 * 8) = plVar8;
      } while (plVar14 != plVar20);
    }
  }
  FUN_1812db150(param_1);
  *(undefined4 *)(param_1 + 0x2a0) = 0xffffffff;
  *(undefined1 *)(param_1 + 0x1f8) = 1;
  return;
}



############ FUN_ 1812e0ae0 size=570 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e0ae0(longlong param_1)

{
  longlong lVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  undefined1 auStackY_78 [32];
  undefined8 *local_48;
  undefined8 local_40;
  undefined1 local_38 [16];
  IID local_28;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_78;
  if (((*(char *)(param_1 + 500) == '\0') && (uVar5 = 0, DAT_182673708 == param_1)) &&
     (cVar2 = FUN_181343030(), cVar2 == '\0')) {
    *(undefined1 *)(param_1 + 500) = 1;
    if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
      if (*(longlong *)(param_1 + 0x18) == 0) {
      }
      plVar3 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar3 = (longlong *)FUN_1812d2bd0(param_1);
    }
    if ((plVar3 != (longlong *)0x0) && (cVar2 = FUN_1812e1d20(param_1), cVar2 == '\0')) {
      lVar1 = param_1 + 0xb0;
      local_48 = (undefined8 *)0x0;
      for (; param_1 != 0; param_1 = *(longlong *)(param_1 + 0x18)) {
        puVar4 = (undefined8 *)FUN_18051e290(&local_48,param_1,uVar5);
        uVar5 = *puVar4;
      }
      puVar4 = (undefined8 *)FUN_1812d17d0(plVar3,local_38);
      if ((undefined **)*plVar3 == juce::HWNDComponentPeer::vftable) {
        if (*(char *)((longlong)plVar3 + 0xb3) == '\0') {
          *(undefined1 *)((longlong)plVar3 + 0xb3) = 1;
          CreateCaret((HWND)plVar3[0x11],(HBITMAP)0x1,0,0);
        }
        ShowCaret((HWND)plVar3[0x11]);
        SetCaretPos(0,0);
        cVar2 = FUN_18050dc40(plVar3 + 0x1c,plVar3[0x11]);
        if (cVar2 != '\0') {
          if ((DAT_182673b00 == (undefined8 *)0x0) && (DAT_18267ab70 == '\0')) {
            DAT_18267ab70 = 1;
            puVar4 = (undefined8 *)FUN_1811316e0(0x30);
            local_48 = puVar4;
            FUN_1812a7230(puVar4);
            puVar4[2] = 0xffffffffffffffff;
            *(undefined4 *)(puVar4 + 3) = 0;
            *puVar4 = juce::OnScreenKeyboard::vftable;
            puVar4[1] = juce::OnScreenKeyboard::vftable;
            *(undefined2 *)(puVar4 + 4) = 0;
            local_28.Data1 = 0x4ce576fa;
            local_28.Data2 = 0x83dc;
            local_28.Data3 = 0x4f88;
            local_28.Data4[0] = 0x95;
            local_28.Data4[1] = '\x1c';
            local_28.Data4[2] = 0x9d;
            local_28.Data4[3] = '\a';
            local_28.Data4[4] = 0x82;
            local_28.Data4[5] = 0xb4;
            local_28.Data4[6] = 0xe3;
            local_28.Data4[7] = 'v';
            puVar4[5] = (LPVOID)0x0;
            CoCreateInstance(&local_28,(LPUNKNOWN)0x0,6,(IID *)&DAT_18249bbf8,(LPVOID *)(puVar4 + 5)
                            );
            DAT_18267ab70 = '\0';
            DAT_182673b00 = puVar4;
          }
          puVar4 = DAT_182673b00;
          *(undefined1 *)(DAT_182673b00 + 4) = 1;
          FUN_1812a77d0(puVar4 + 1,10);
        }
      }
      else {
        (*(code *)((undefined **)*plVar3)[0x1a])(plVar3,*puVar4,lVar1);
      }
    }
  }
}



############ FUN_ 1805090d0 size=550 ############

undefined8 *
FUN_1805090d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  undefined8 *local_res18;
  undefined8 *local_res20;
  undefined8 *local_40;
  undefined8 local_38;
  undefined4 local_30;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::ToolbarItemComponent::ItemDragAndDropOverlayComponent::vftable;
  *(undefined1 *)(param_1 + 0x16) = 0;
  FUN_18134b0f0(param_1,1,param_3,param_4,0xfffffffffffffffe);
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 8;
  do {
    LOCK();
    uVar3 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar3 != 0);
  if (DAT_18267ab10 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar4 = 0;
    if (DAT_18267aaa8 == 0) {
      plVar5 = (longlong *)FUN_18128e5a0(&local_res18,&GIF_18249e780,99);
      local_40 = (undefined8 *)*plVar5;
      if (local_40 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_40 + 1) = *(int *)(local_40 + 1) + 1;
        UNLOCK();
      }
      local_38 = 0x700000008;
      local_30 = DAT_1824c3ea4;
      DAT_18267aaa8 = FUN_1812c50f0(&local_40);
      if (local_40 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_40 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_40)(local_40,1);
        }
      }
      if (local_res18 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_res18 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res18)(local_res18,1);
        }
      }
    }
    puVar4[1] = DAT_18267aaa8;
    *(undefined4 *)(puVar4 + 2) = 1;
    *(undefined4 *)((longlong)puVar4 + 0x14) = 8;
    *(undefined1 *)(puVar4 + 3) = 1;
    DAT_18267ab10 = puVar4;
  }
  else {
    LOCK();
    *(int *)(DAT_18267ab10 + 2) = *(int *)(DAT_18267ab10 + 2) + 1;
    UNLOCK();
  }
  puVar4 = DAT_18267ab10;
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  local_res20 = DAT_18267ab10;
  FUN_181342db0(param_1,&local_res20);
  if (puVar4 != (undefined8 *)0x0) {
    FUN_1804e9060(puVar4);
  }
  return param_1;
}



############ FUN_ 1812c66b0 size=442 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

HICON FUN_1812c66b0(longlong *param_1,BOOL param_2,DWORD param_3,DWORD param_4)

{
  longlong *plVar1;
  longlong lVar2;
  char cVar3;
  undefined8 uVar4;
  longlong *plVar5;
  HBITMAP ho;
  HICON pHVar6;
  int nWidth;
  int nHeight;
  undefined4 uVar7;
  undefined4 uVar8;
  longlong *local_88;
  longlong *local_80;
  undefined1 local_78;
  ICONINFO local_70;
  undefined8 local_50;
  undefined8 uStack_48;
  undefined4 local_40;
  undefined4 local_3c;
  undefined8 local_38;
  longlong *local_30;
  
  local_38 = 0xfffffffffffffffe;
  uVar4 = FUN_1811316e0(0xe0);
  lVar2 = *param_1;
  if (lVar2 == 0) {
    uVar8 = 0;
    uVar7 = 0;
  }
  else {
    uVar8 = *(undefined4 *)(lVar2 + 0x18);
    uVar7 = *(undefined4 *)(lVar2 + 0x14);
  }
  plVar5 = (longlong *)FUN_18050d450(uVar4,2,uVar7,uVar8,1);
  local_30 = plVar5;
  if (plVar5 == (longlong *)0x0) {
    local_88 = (longlong *)0x0;
  }
  else {
    LOCK();
    *(int *)(plVar5 + 1) = (int)plVar5[1] + 1;
    UNLOCK();
    (**(code **)(*plVar5 + 8))(plVar5,&local_88);
  }
  local_78 = 0;
  local_50 = _DAT_1824c4780;
  uStack_48 = _UNK_1824c4788;
  local_40 = DAT_1824c3ea4;
  local_3c = 0;
  local_80 = local_88;
  if ((*param_1 != 0) && (cVar3 = (**(code **)(*local_88 + 0x60))(), cVar3 == '\0')) {
    (**(code **)(*local_80 + 0xc0))(local_80,param_1,&local_50);
  }
  if (local_88 != (longlong *)0x0) {
    (**(code **)*local_88)(local_88,1);
  }
  lVar2 = *param_1;
  if (lVar2 == 0) {
    nHeight = 0;
    nWidth = 0;
  }
  else {
    nHeight = *(int *)(lVar2 + 0x18);
    nWidth = *(int *)(lVar2 + 0x14);
  }
  ho = CreateBitmap(nWidth,nHeight,1,1,(void *)0x0);
  local_70.hbmColor = (HBITMAP)plVar5[8];
  local_70.fIcon = param_2;
  local_70.xHotspot = param_3;
  local_70.yHotspot = param_4;
  local_70.hbmMask = ho;
  pHVar6 = CreateIconIndirect(&local_70);
  DeleteObject(ho);
  LOCK();
  plVar1 = plVar5 + 1;
  lVar2 = *plVar1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  UNLOCK();
  if ((int)lVar2 == 1) {
    (**(code **)*plVar5)(plVar5,1);
  }
  return pHVar6;
}



############ FUN_ 18133e440 size=137 ############

ulonglong FUN_18133e440(longlong param_1)

{
  ulonglong *puVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  ulonglong *puVar4;
  longlong lVar5;
  
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  puVar4 = *(ulonglong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  uVar3 = (ulonglong)*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  puVar1 = puVar4 + uVar3;
  while( true ) {
    if (puVar4 == puVar1) {
      return uVar3 & 0xffffffffffffff00;
    }
    uVar3 = *puVar4;
    lVar5 = 0;
    if (*(longlong *)(uVar3 + 0x48) != 0) {
      lVar5 = *(longlong *)(*(longlong *)(uVar3 + 0x48) + 0x10);
    }
    if ((lVar5 == param_1) &&
       (((*(byte *)(uVar3 + 0x28) & 0x70) != 0 || (*(int *)(uVar3 + 0x14) != 1)))) break;
    puVar4 = puVar4 + 1;
  }
  return CONCAT71((int7)(uVar3 >> 8),1);
}



############ FUN_ 1812da170 size=1201 ############

void FUN_1812da170(longlong param_1,char param_2)

{
  longlong *plVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  longlong lVar5;
  undefined8 uVar6;
  uint uVar7;
  double *pdVar8;
  double *pdVar9;
  undefined8 uVar10;
  uint uVar11;
  ulonglong uVar12;
  uint uVar13;
  longlong *plVar14;
  int iVar15;
  ulonglong uVar16;
  uint uVar17;
  longlong *plVar18;
  bool bVar19;
  double dVar20;
  int local_res8;
  int iStackX_c;
  char local_res10;
  uint local_res18 [2];
  double *local_res20;
  uint *in_stack_ffffffffffffff28;
  uint local_a0;
  uint uStack_9c;
  int local_98;
  int iStack_94;
  double *local_90;
  undefined8 local_88;
  
  uVar3 = (undefined4)((ulonglong)in_stack_ffffffffffffff28 >> 0x20);
  if ((0 < *(int *)(param_1 + 0x28)) && (0 < *(int *)(param_1 + 0x2c))) {
    uVar16 = 0;
    local_90 = (double *)0x0;
    local_88 = 0;
    plVar18 = *(longlong **)(param_1 + 0xe0);
    uVar12 = (ulonglong)((longlong)(plVar18 + *(int *)(param_1 + 0xec)) + (7 - (longlong)plVar18))
             >> 3;
    if (plVar18 + *(int *)(param_1 + 0xec) < plVar18) {
      uVar12 = uVar16;
    }
    local_res10 = param_2;
    if (uVar12 != 0) {
      do {
        plVar14 = (longlong *)*plVar18;
        FUN_1812daaf0(plVar14,*(char *)(param_1 + 0xd9) != '\0');
        (**(code **)(*plVar14 + 0x188))(plVar14,param_1 + 0xdc);
        lVar5 = __RTDynamicCast(plVar14,0,&juce::ToolbarItemComponent::RTTI_Type_Descriptor,
                                &juce::Toolbar::Spacer::RTTI_Type_Descriptor,
                                (ulonglong)in_stack_ffffffffffffff28 & 0xffffffff00000000);
        local_res20 = (double *)CONCAT44(local_res20._4_4_,1);
        local_res18[0] = 1;
        local_res8 = 1;
        uVar3 = FUN_1812da680(param_1);
        in_stack_ffffffffffffff28 = local_res18;
        cVar2 = (**(code **)(*plVar14 + 400))
                          (plVar14,uVar3,*(undefined1 *)(param_1 + 0xd8),&local_res20,
                           in_stack_ffffffffffffff28,&local_res8);
        if (cVar2 == '\0') {
          *(undefined1 *)(plVar14 + 0x3d) = 0;
          (**(code **)(*plVar14 + 0x58))(plVar14,0);
        }
        else {
          *(undefined1 *)(plVar14 + 0x3d) = 1;
          if (lVar5 == 0) {
            uVar17 = 2;
          }
          else {
            uVar17 = (uint)(0.0 < *(float *)(lVar5 + 0x200));
          }
          in_stack_ffffffffffffff28 =
               (uint *)CONCAT44((int)((ulonglong)in_stack_ffffffffffffff28 >> 0x20),uVar17);
          FUN_18131ae50(&local_90,(double)(int)local_res20,(double)(int)local_res18[0],
                        (double)local_res8,in_stack_ffffffffffffff28);
        }
        uVar3 = (undefined4)((ulonglong)in_stack_ffffffffffffff28 >> 0x20);
        plVar18 = plVar18 + 1;
        uVar16 = uVar16 + 1;
      } while (uVar16 != uVar12);
    }
    uVar17 = 0;
    if (*(char *)(param_1 + 0xd8) == '\0') {
      iVar15 = *(int *)(param_1 + 0x28);
    }
    else {
      iVar15 = *(int *)(param_1 + 0x2c);
    }
    FUN_18131abb0(&local_90,(double)iVar15);
    pdVar8 = local_90;
    uVar13 = 0;
    uVar11 = local_88._4_4_;
    if (0 < (int)local_88._4_4_) {
      bVar19 = local_88._4_4_ != 0;
      pdVar9 = local_90;
      uVar13 = uVar17;
      uVar7 = uVar17;
      do {
        if (bVar19) {
          dVar20 = *pdVar9;
        }
        else {
          dVar20 = 0.0;
        }
        uVar13 = uVar13 + (int)dVar20;
        uVar7 = uVar7 + 1;
        pdVar9 = pdVar9 + 4;
        bVar19 = uVar7 < local_88._4_4_;
      } while ((int)uVar7 < (int)local_88._4_4_);
    }
    if (*(char *)(param_1 + 0xd8) == '\0') {
      iVar15 = *(int *)(param_1 + 0x28);
    }
    else {
      iVar15 = *(int *)(param_1 + 0x2c);
    }
    if (*(char *)(param_1 + 0xd8) == '\0') {
      iVar4 = *(int *)(param_1 + 0x2c);
    }
    else {
      iVar4 = *(int *)(param_1 + 0x28);
    }
    iVar4 = iVar4 / 2;
    lVar5 = *(longlong *)(param_1 + 0xd0);
    uVar6 = CONCAT44(uVar3,iVar4);
    FUN_18134bfe0(lVar5,*(undefined4 *)(lVar5 + 0x20),*(undefined4 *)(lVar5 + 0x24),iVar4,uVar6);
    (**(code **)(**(longlong **)(param_1 + 0xd0) + 0x58))
              (*(longlong **)(param_1 + 0xd0),iVar15 < (int)uVar13);
    FUN_18133e970(*(undefined8 *)(param_1 + 0xd0),*(char *)(param_1 + 0xd9) == '\0');
    if (*(char *)(param_1 + 0xd8) == '\0') {
      local_res8 = (*(int *)(param_1 + 0x28) - iVar4 / 2) + -4;
      iStackX_c = *(int *)(param_1 + 0x2c) / 2;
    }
    else {
      local_res8 = *(int *)(param_1 + 0x28) / 2;
      iStackX_c = (*(int *)(param_1 + 0x2c) - iVar4 / 2) + -4;
    }
    FUN_181344690(*(undefined8 *)(param_1 + 0xd0),CONCAT44(iStackX_c,local_res8));
    if (iVar15 < (int)uVar13) {
      if (*(char *)(param_1 + 0xd8) == '\0') {
        local_res8 = *(int *)(*(longlong *)(param_1 + 0xd0) + 0x20) + -4;
      }
      else {
        local_res8 = *(int *)(*(longlong *)(param_1 + 0xd0) + 0x24) + -4;
      }
    }
    else if (*(char *)(param_1 + 0xd8) == '\0') {
      local_res8 = *(int *)(param_1 + 0x28);
    }
    else {
      local_res8 = *(int *)(param_1 + 0x2c);
    }
    plVar14 = *(longlong **)(param_1 + 0xe0);
    plVar18 = plVar14 + *(int *)(param_1 + 0xec);
    uVar13 = uVar17;
    pdVar9 = pdVar8;
    for (; plVar14 != plVar18; plVar14 = plVar14 + 1) {
      uVar3 = (undefined4)((ulonglong)uVar6 >> 0x20);
      plVar1 = (longlong *)*plVar14;
      if ((char)plVar1[0x3d] != '\0') {
        if (uVar13 < uVar11) {
          dVar20 = *pdVar8;
        }
        else {
          dVar20 = 0.0;
        }
        iVar15 = (int)dVar20;
        local_res18[0] = uVar13 + 1;
        local_res20 = pdVar8 + 4;
        if (*(char *)(param_1 + 0xd8) == '\0') {
          iStack_94 = *(int *)(param_1 + 0x2c);
          uStack_9c = 0;
          iVar4 = iVar15;
          local_a0 = uVar17;
        }
        else {
          local_a0 = 0;
          iVar4 = *(int *)(param_1 + 0x28);
          uStack_9c = uVar17;
          iStack_94 = iVar15;
        }
        uVar11 = local_a0;
        local_98 = iVar4;
        if (DAT_182673700 == 0) {
          uVar6 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(uVar6);
        }
        if (local_res10 == '\0') {
          FUN_181323c50(DAT_182673700 + 200,plVar1);
          uVar6 = CONCAT44(uVar3,iStack_94);
          FUN_18134bfe0(plVar1,uVar11,uStack_9c,iVar4,uVar6);
        }
        else {
          uVar6 = CONCAT44(uVar3,200);
          FUN_181323e20(DAT_182673700 + 200,plVar1,&local_a0);
        }
        uVar17 = uVar17 + iVar15;
        if ((local_res8 < (int)uVar17) ||
           ((*(char *)((longlong)plVar1 + 0x1e9) != '\0' &&
            (*(int *)((longlong)plVar1 + 0x1cc) != 2)))) {
          uVar10 = 0;
        }
        else {
          uVar10 = 1;
        }
        (**(code **)(*plVar1 + 0x58))(plVar1,uVar10);
        pdVar8 = local_res20;
        uVar11 = local_88._4_4_;
        uVar13 = local_res18[0];
      }
      pdVar9 = local_90;
    }
                    /* WARNING: Subroutine does not return */
    free(pdVar9);
  }
  return;
}



############ FUN_ 1812daaf0 size=271 ############

void FUN_1812daaf0(longlong *param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)((longlong)param_1 + 0x1cc) == param_2) {
    return;
  }
  *(int *)((longlong)param_1 + 0x1cc) = param_2;
  uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
  uStack_10 = (undefined4)param_1[5];
  local_18 = 0;
  FUN_181342870(0,&local_18,1,param_4,0xfffffffffffffffe);
  if (*(int *)((longlong)param_1 + 0x1cc) == 0) {
    puVar1 = (undefined8 *)param_1[0x3b];
    param_1[0x3b] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
                    /* WARNING: Could not recover jumptable at 0x0001812dab7c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*param_1 + 0x108))(param_1);
      return;
    }
  }
  else if (param_1[0x3b] == 0) {
    uVar2 = FUN_1811316e0(0xb8);
    lVar3 = FUN_1805090d0(uVar2);
    puVar1 = (undefined8 *)param_1[0x3b];
    param_1[0x3b] = lVar3;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    FUN_18134bf20(param_1,param_1[0x3b],0xffffffff);
    (**(code **)(*(longlong *)param_1[0x3b] + 0x120))();
  }
                    /* WARNING: Could not recover jumptable at 0x0001812dabf2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x108))(param_1);
  return;
}



############ FUN_ 18050c070 size=462 ############

void FUN_18050c070(longlong param_1)

{
  longlong lVar1;
  undefined4 uVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  ulonglong local_res8;
  undefined8 *local_res10;
  
  lVar1 = *(longlong *)(param_1 + 0x38);
  if (lVar1 == 0) {
    lVar3 = 0;
  }
  else {
    lVar3 = *(longlong *)(lVar1 + 0x10);
  }
  if (lVar3 == 0) {
    if (DAT_182673700 == 0) {
      local_res8 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res8);
    }
    lVar1 = DAT_182673700;
    if (*(longlong *)(DAT_182673700 + 0x98) == 0) {
      lVar3 = 0;
    }
    else {
      lVar3 = *(longlong *)(*(longlong *)(DAT_182673700 + 0x98) + 0x10);
    }
    if (lVar3 == 0) {
      if (*(longlong *)(DAT_182673700 + 0x90) == 0) {
        uVar4 = FUN_1811316e0(0x170);
        uVar4 = FUN_1812fbfd0(uVar4);
        puVar5 = *(undefined8 **)(lVar1 + 0x90);
        *(undefined8 *)(lVar1 + 0x90) = uVar4;
        if (puVar5 != (undefined8 *)0x0) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
      lVar3 = *(longlong *)(lVar1 + 0x90);
      FUN_18051b750(lVar1 + 0x98,lVar3);
    }
  }
  else if (lVar1 == 0) {
    lVar3 = FUN_18134adf0(0);
  }
  else {
    lVar3 = FUN_18134adf0(*(undefined8 *)(lVar1 + 0x10));
  }
  if (*(longlong *)(param_1 + 0x38) == 0) {
    uVar4 = 0;
  }
  else {
    uVar4 = *(undefined8 *)(*(longlong *)(param_1 + 0x38) + 0x10);
  }
  puVar5 = (undefined8 *)
           (**(code **)(*(longlong *)(lVar3 + 0x38) + 8))
                     ((longlong *)(lVar3 + 0x38),param_1,param_1 + 8,param_1 + 0x10,param_1 + 0x18,
                      param_1 + 0x20,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c)
                      ,uVar4);
  local_res8 = local_res8 & 0xffffffffffffff00;
  local_res10 = puVar5;
  EnumWindows(FUN_1812c6400,(LPARAM)&local_res8);
  FUN_18134b0f0(puVar5,local_res8 & 0xff);
  if (*(char *)(param_1 + 0x48) == '\0') {
    FUN_18134ab30(puVar5,1,*(undefined8 *)(param_1 + 0x40));
    puVar5 = (undefined8 *)0x0;
  }
  else {
    uVar2 = FUN_1813434a0();
    *(undefined4 *)(param_1 + 0x30) = uVar2;
  }
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  return;
}



############ FUN_ 1812ce2f0 size=136 ############

bool FUN_1812ce2f0(longlong param_1)

{
  byte bVar1;
  undefined1 uVar2;
  longlong *plVar3;
  undefined8 uVar4;
  
  bVar1 = *(byte *)(param_1 + 0xa8) & 1;
  if (bVar1 != 0) {
    if (bVar1 == 0) {
      if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812ce33d;
      plVar3 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar3 = (longlong *)FUN_1812d2bd0();
    }
    if (plVar3 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001812ce336. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar2 = (**(code **)(*plVar3 + 0x80))(plVar3);
      return (bool)uVar2;
    }
  }
LAB_1812ce33d:
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  return *(longlong *)(DAT_182673700 + 0xa0) == param_1;
}



############ FUN_ 18050c870 size=518 ############

ulonglong FUN_18050c870(longlong param_1)

{
  uint *puVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  longlong *plVar7;
  char cVar8;
  DWORD DVar9;
  HWND hWnd;
  undefined4 extraout_var;
  longlong lVar10;
  ulonglong uVar11;
  longlong lVar12;
  uint uVar13;
  DWORD local_res8 [2];
  undefined8 local_res10;
  
  iVar5 = *(int *)(param_1 + 0x10) * 2;
  iVar4 = 0x6c3;
  if (iVar5 < 0x6c3) {
    iVar4 = iVar5;
  }
  FUN_1812a77d0(param_1,iVar4);
  hWnd = GetForegroundWindow();
  if (hWnd == (HWND)0x0) {
LAB_18050c8d4:
    plVar2 = DAT_182673708;
    lVar10 = __RTDynamicCast(DAT_182673708,0,&juce::Component::RTTI_Type_Descriptor,
                             &juce::TopLevelWindow::RTTI_Type_Descriptor,0);
    if (lVar10 == 0) {
      if (plVar2 != (longlong *)0x0) {
        for (lVar12 = plVar2[3]; lVar12 != 0; lVar12 = *(longlong *)(lVar12 + 0x18)) {
          lVar10 = __RTDynamicCast(lVar12,0,&juce::Component::RTTI_Type_Descriptor,
                                   &juce::TopLevelWindow::RTTI_Type_Descriptor,0);
          if (lVar10 != 0) goto LAB_18050c946;
        }
      }
      uVar11 = 0;
      lVar10 = *(longlong *)(param_1 + 0x30);
      if (lVar10 == 0) goto LAB_18050c952;
    }
LAB_18050c946:
    uVar11 = FUN_181345240(lVar10);
    if ((char)uVar11 != '\0') goto LAB_18050c955;
  }
  else {
    local_res8[0] = 0;
    GetWindowThreadProcessId(hWnd,local_res8);
    DVar9 = GetCurrentProcessId();
    uVar11 = CONCAT71((int7)(CONCAT44(extraout_var,DVar9) >> 8),local_res8[0] == DVar9);
    if (local_res8[0] == DVar9) goto LAB_18050c8d4;
  }
LAB_18050c952:
  lVar10 = 0;
LAB_18050c955:
  if (lVar10 != *(longlong *)(param_1 + 0x30)) {
    *(longlong *)(param_1 + 0x30) = lVar10;
    uVar13 = *(int *)(param_1 + 0x2c) - 1;
    lVar10 = (longlong)(int)uVar13;
    if (-1 < (int)uVar13) {
LAB_18050c980:
      if ((uVar13 < *(uint *)(param_1 + 0x2c)) &&
         (plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x20) + lVar10 * 8),
         plVar2 != (longlong *)0x0)) {
        for (plVar3 = *(longlong **)(param_1 + 0x30); plVar2 != plVar3;
            plVar3 = (longlong *)plVar3[3]) {
          plVar7 = DAT_182673708;
          if (plVar3 == (longlong *)0x0) goto joined_r0x00018050c9bd;
        }
        goto LAB_18050c9dd;
      }
      goto LAB_18050ca08;
    }
LAB_18050ca13:
    if (DAT_182673700 == 0) {
      local_res10 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res10);
    }
    lVar10 = DAT_182673700;
    uVar11 = 0;
    puVar1 = (uint *)(*(longlong *)(DAT_182673700 + 0x28) + 0x18);
    LOCK();
    uVar13 = *puVar1;
    if (uVar13 == 0) {
      *puVar1 = 1;
    }
    else {
      uVar11 = (ulonglong)uVar13;
    }
    UNLOCK();
    if ((uVar13 == 0) &&
       (uVar11 = FUN_1812a6720(*(undefined8 *)(lVar10 + 0x28)), (char)uVar11 == '\0')) {
      uVar11 = *(ulonglong *)(lVar10 + 0x28);
      LOCK();
      *(undefined4 *)(uVar11 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar11;
joined_r0x00018050c9bd:
  if (plVar7 == plVar2) goto LAB_18050c9d6;
  if (plVar7 == (longlong *)0x0) {
    bVar6 = false;
    goto LAB_18050c9d9;
  }
  plVar7 = (longlong *)plVar7[3];
  goto joined_r0x00018050c9bd;
LAB_18050c9d6:
  bVar6 = true;
LAB_18050c9d9:
  if (bVar6) {
LAB_18050c9dd:
    cVar8 = FUN_181345240(plVar2);
    lVar12 = 1;
    if (cVar8 != '\0') goto LAB_18050c9ee;
  }
  lVar12 = 0;
LAB_18050c9ee:
  if (*(char *)((longlong)plVar2 + 0xb2) != (char)lVar12) {
    *(char *)((longlong)plVar2 + 0xb2) = (char)lVar12;
    (**(code **)(*plVar2 + 0x158))(plVar2);
  }
LAB_18050ca08:
  uVar13 = uVar13 - 1;
  lVar10 = lVar10 + -1;
  if (lVar10 < 0) goto LAB_18050ca13;
  goto LAB_18050c980;
}



############ FUN_ 1812cb880 size=275 ############

void FUN_1812cb880(undefined8 *param_1)

{
  longlong *plVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  int iVar8;
  ulonglong uVar9;
  
  *param_1 = juce::ApplicationCommandManager::vftable;
  param_1[2] = juce::ApplicationCommandManager::vftable;
  if (DAT_182673700 == 0) {
    uVar6 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar6);
  }
  lVar5 = DAT_182673700;
  plVar1 = (longlong *)(DAT_182673700 + 0x48);
  lVar3 = *plVar1;
  uVar7 = 0;
  iVar2 = *(int *)(DAT_182673700 + 0x54);
  uVar9 = uVar7;
  if (0 < iVar2) {
    do {
      iVar8 = (int)uVar9;
      if (param_1 + 2 == *(undefined8 **)(lVar3 + uVar7 * 8)) {
        _Dst = (void *)(lVar3 + (longlong)iVar8 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar8) + -1) << 3);
        *(int *)(lVar5 + 0x54) = *(int *)(lVar5 + 0x54) + -1;
        iVar2 = *(int *)(lVar5 + 0x54);
        iVar8 = 0;
        if (0 < iVar2 * 2) {
          iVar8 = iVar2 * 2;
        }
        if (iVar8 < *(int *)(lVar5 + 0x50)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar5 + 0x50)) {
            FUN_18047cb30(plVar1);
          }
        }
        break;
      }
      uVar9 = (ulonglong)(iVar8 + 1);
      uVar7 = uVar7 + 1;
    } while ((longlong)uVar7 < (longlong)iVar2);
  }
  puVar4 = (undefined8 *)param_1[7];
  param_1[7] = 0;
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  puVar4 = (undefined8 *)param_1[7];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  *(undefined4 *)((longlong)param_1 + 0x34) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[5]);
}



############ FUN_ 18050cd10 size=269 ############

void FUN_18050cd10(undefined8 *param_1)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong *plVar6;
  int iVar7;
  
  *param_1 = juce::KeyPressMappingSet::vftable;
  param_1[1] = juce::KeyPressMappingSet::vftable;
  param_1[8] = juce::KeyPressMappingSet::vftable;
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  lVar4 = DAT_182673700;
  plVar1 = (longlong *)(DAT_182673700 + 0x48);
  plVar3 = (longlong *)*plVar1;
  iVar7 = 0;
  iVar2 = *(int *)(DAT_182673700 + 0x54);
  plVar6 = plVar3;
  if (0 < iVar2) {
    do {
      if (param_1 + 8 == (undefined8 *)*plVar6) {
        plVar3 = plVar3 + iVar7;
        memmove(plVar3,plVar3 + 1,(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar4 + 0x54) = *(int *)(lVar4 + 0x54) + -1;
        iVar2 = *(int *)(lVar4 + 0x54);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar4 + 0x50)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar4 + 0x50)) {
            FUN_18047cb30(plVar1);
          }
        }
        break;
      }
      iVar7 = iVar7 + 1;
      plVar6 = plVar6 + 1;
    } while (iVar7 < iVar2);
  }
  FUN_18051b430(param_1 + 0xc);
  FUN_18051ccc0(param_1 + 10);
  *(undefined4 *)((longlong)param_1 + 0x5c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 18050d110 size=125 ############

ulonglong FUN_18050d110(longlong param_1)

{
  longlong lVar1;
  longlong *plVar2;
  undefined8 uVar3;
  longlong *plVar4;
  ulonglong uVar5;
  
  lVar1 = *(longlong *)(param_1 + 0xb0);
  plVar4 = (longlong *)0x0;
  plVar2 = plVar4;
  if (lVar1 != 0) {
    plVar2 = *(longlong **)(lVar1 + 0x10);
  }
  if (plVar2 == (longlong *)0x0) {
    if (DAT_182673700 == 0) {
      uVar3 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar3);
    }
    return (ulonglong)*(uint *)(DAT_182673700 + 0xc0);
  }
  if (lVar1 != 0) {
    plVar4 = *(longlong **)(lVar1 + 0x10);
  }
                    /* WARNING: Could not recover jumptable at 0x00018050d14e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar5 = (**(code **)(*plVar4 + 0x80))();
  return uVar5;
}



############ FUN_ 18050d6b0 size=46 ############

undefined8 * FUN_18050d6b0(undefined8 param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = juce::NativeImageType::vftable;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 18050d6e0 size=134 ############

undefined8 *
FUN_18050d6e0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *local_res10;
  undefined8 local_res18;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res10 = param_2;
  FUN_181291830();
  if (param_1 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + 1;
    UNLOCK();
  }
  local_res10 = param_1;
  local_res18 = FUN_1811316e0(0x20);
  uVar3 = FUN_181291bd0(local_res18,&local_res10,param_3,param_4,uVar3);
  *param_2 = uVar3;
  if (param_1 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(param_1 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*param_1)(param_1,1);
    }
  }
  return param_2;
}



############ FUN_ 18050d7c0 size=173 ############

longlong * FUN_18050d7c0(longlong param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  
  uVar1 = FUN_1811316e0(0xe0);
  lVar2 = FUN_18050d450(uVar1,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14),
                        *(undefined4 *)(param_1 + 0x18),0);
  iVar3 = 0;
  if (0 < *(int *)(param_1 + 0x18)) {
    do {
      lVar4 = (longlong)(*(int *)(param_1 + 0xd4) * iVar3);
      memcpy((void *)(*(longlong *)(lVar2 + 0xd8) + lVar4),
             (void *)(*(longlong *)(param_1 + 0xd8) + lVar4),(longlong)*(int *)(param_1 + 0xd4));
      iVar3 = iVar3 + 1;
    } while (iVar3 < *(int *)(param_1 + 0x18));
  }
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 180510be0 size=1160 ############

void FUN_180510be0(longlong *param_1)

{
  undefined1 auVar1 [16];
  ushort uVar2;
  uint uVar3;
  char *pcVar4;
  char cVar5;
  int iVar6;
  undefined8 uVar7;
  HINSTANCE hInstance;
  HWND pHVar8;
  LONG_PTR dwNewLong;
  longlong *plVar9;
  undefined8 *puVar10;
  longlong lVar11;
  char *pcVar12;
  char *pcVar13;
  HMODULE pHVar14;
  FARPROC pFVar15;
  uint dwExStyle;
  uint dwStyle;
  undefined8 local_28;
  undefined8 uStack_20;
  
  uVar3 = *(uint *)(param_1 + 2);
  if ((uVar3 >> 3 & 1) == 0) {
    dwStyle = 0x86080000;
    if (param_1[0x12] != 0) {
      dwStyle = 0x46000000;
    }
  }
  else {
    dwStyle = 0x6000000;
    if ((uVar3 & 0x80) != 0) {
      dwStyle = 0x6080000;
    }
    if ((uVar3 & 0x10) != 0) {
      dwStyle = dwStyle | 0x40000;
    }
  }
  dwExStyle = 0x40000;
  if ((uVar3 & 1) == 0) {
    dwExStyle = 0x80;
  }
  if ((uVar3 & 0x20) != 0) {
    dwStyle = dwStyle | 0x20000;
  }
  if ((uVar3 & 0x40) != 0) {
    dwStyle = dwStyle | 0x10000;
  }
  if ((uVar3 & 4) != 0) {
    dwExStyle = dwExStyle | 0x20;
  }
  if ((uVar3 >> 0x1e & 1) != 0) {
    dwExStyle = dwExStyle | 0x80000;
  }
  if (DAT_182673bd8 == 0) {
    uVar7 = FUN_1811316e0(0x10);
    DAT_182673bd8 = FUN_180510480(uVar7);
  }
  uVar2 = *(ushort *)(DAT_182673bd8 + 8);
  hInstance = (HINSTANCE)FUN_181249ad0();
  pHVar8 = CreateWindowExW(dwExStyle,(LPCWSTR)(ulonglong)uVar2,L"",dwStyle,0,0,0,0,
                           (HWND)param_1[0x12],(HMENU)0x0,hInstance,(LPVOID)0x0);
  param_1[0x11] = (longlong)pHVar8;
  if (pHVar8 != (HWND)0x0) {
    SetWindowLongPtrW(pHVar8,0,0);
    SetWindowLongPtrW((HWND)param_1[0x11],8,(LONG_PTR)param_1);
    pHVar8 = (HWND)param_1[0x11];
    dwNewLong = FUN_1804cf4b0();
    SetWindowLongPtrW(pHVar8,-0x15,dwNewLong);
    if (param_1[0x1a] == 0) {
      if (((char)param_1[0x10] == '\0') ||
         (plVar9 = (longlong *)FUN_18050f9e0(param_1[0x12]), plVar9 == (longlong *)0x0)) {
        plVar9 = param_1;
      }
      puVar10 = (undefined8 *)FUN_1811316e0(0x40);
      *(undefined4 *)(puVar10 + 1) = 1;
      *puVar10 = juce::HWNDComponentPeer::FileDropTarget::vftable;
      puVar10[2] = plVar9;
      puVar10[3] = 0;
      puVar10[4] = 0;
      puVar10[5] = &DAT_1821dbf98;
      puVar10[6] = 0;
      *(undefined1 *)(puVar10 + 7) = 0;
      param_1[0x1a] = (longlong)puVar10;
    }
    RegisterDragDrop((HWND)param_1[0x11],(LPDROPTARGET)param_1[0x1a]);
    cVar5 = FUN_1812c78b0();
    if (cVar5 != '\0') {
      (*DAT_182678ed0)(param_1[0x11],0);
    }
    FUN_1812c75b0();
    FUN_1812c75b0();
    if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
      cVar5 = FUN_1812c7510();
    }
    else {
      uVar7 = (*DAT_182678f18)();
      iVar6 = (*DAT_182678ec8)(uVar7);
      cVar5 = iVar6 == 2;
    }
    if (cVar5 != '\0') {
      lVar11 = param_1[1];
      auVar1 = *(undefined1 (*) [16])(lVar11 + 0x20);
      if ((auVar1._8_4_ < 1) || (auVar1._12_4_ == 0 || auVar1._8_8_ < 0)) {
        lVar11 = FUN_18134b820();
        pcVar4 = (char *)**(undefined8 **)(lVar11 + 0x78);
        for (pcVar12 = pcVar4;
            (pcVar13 = pcVar4,
            pcVar12 !=
            pcVar4 + (longlong)*(int *)((longlong)*(undefined8 **)(lVar11 + 0x78) + 0xc) * 0x40 &&
            (pcVar13 = pcVar12, *pcVar12 == '\0')); pcVar12 = pcVar12 + 0x40) {
        }
        param_1[0x23] = *(longlong *)(pcVar13 + 0x30);
      }
      else {
        local_28 = *(undefined8 *)(lVar11 + 0x20);
        uStack_20 = *(undefined8 *)(lVar11 + 0x28);
        lVar11 = FUN_18134b820();
        lVar11 = FUN_18133d8f0(*(undefined8 *)(lVar11 + 0x78),&local_28,0);
        param_1[0x23] = *(longlong *)(lVar11 + 0x30);
      }
      if (DAT_182673700 == 0) {
        uVar7 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar7);
      }
      param_1[0x23] = (longlong)((double)param_1[0x23] / (double)*(float *)(DAT_182673700 + 0xc0));
    }
    pHVar14 = GetModuleHandleA("user32.dll");
    pFVar15 = GetProcAddress(pHVar14,"ChangeWindowMessageFilterEx");
    if (pFVar15 != (FARPROC)0x0) {
      (*pFVar15)(param_1[0x11],0x233,1);
      (*pFVar15)(param_1[0x11],0x4a,1);
      (*pFVar15)(param_1[0x11],0x49,1);
    }
    FUN_18050e380(param_1);
    pHVar14 = GetModuleHandleA("user32.dll");
    DAT_182678f28 = GetProcAddress(pHVar14,"GetPointerType");
    pHVar14 = GetModuleHandleA("user32.dll");
    DAT_182678e98 = GetProcAddress(pHVar14,"GetPointerTouchInfo");
    pHVar14 = GetModuleHandleA("user32.dll");
    DAT_182678f00 = GetProcAddress(pHVar14,"GetPointerPenInfo");
    if (((DAT_182678f28 == (FARPROC)0x0) || (DAT_182678e98 == (FARPROC)0x0)) ||
       (DAT_182674aaf = 1, DAT_182678f00 == (FARPROC)0x0)) {
      DAT_182674aaf = 0;
    }
    if (DAT_1826736d8 == 0) {
      DAT_1826736f0 = FUN_1805148d0;
    }
    GetSystemMenu((HWND)param_1[0x11],0);
    if ((float)(int)(0xff - (uint)*(byte *)(param_1[1] + 0xac)) / DAT_1824c4548 < DAT_1824c3ea4) {
      (**(code **)(*param_1 + 0xf0))(param_1);
    }
  }
  return;
}



############ FUN_ 1812c6ef0 size=313 ############

void FUN_1812c6ef0(HWND param_1,int *param_2,UINT param_3,char param_4)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int *piVar5;
  int iVar6;
  char cVar7;
  int iVar8;
  int iStackX_14;
  undefined1 local_30 [8];
  int local_28;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  undefined1 local_18 [16];
  
  FUN_1812c75b0();
  if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar7 = FUN_1812c7510();
  }
  else {
    uVar2 = (*DAT_182678f08)(param_1);
    iVar1 = (*DAT_182678ec8)(uVar2);
    cVar7 = iVar1 == 2;
  }
  if (cVar7 != '\0') {
    if (param_4 == '\0') {
      piVar5 = (int *)FUN_1812c7190(local_18,param_2,param_1);
      iVar6 = *piVar5;
      iStackX_14 = piVar5[1];
      iVar1 = piVar5[2];
      iVar8 = piVar5[3];
    }
    else {
      if (DAT_182673700 == 0) {
        uVar2 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar2);
      }
      puVar3 = (undefined8 *)
               FUN_18051edd0(*(undefined8 *)(DAT_182673700 + 0x78),local_30,*(undefined8 *)param_2);
      uVar2 = *puVar3;
      lVar4 = FUN_1812c7190(local_18,param_2,param_1);
      iVar6 = (int)uVar2;
      iStackX_14 = (int)((ulonglong)uVar2 >> 0x20);
      iStack_24 = iStackX_14;
      iVar1 = *(int *)(lVar4 + 8);
      iVar8 = *(int *)(lVar4 + 0xc);
      local_28 = iVar6;
      iStack_20 = iVar1;
      iStack_1c = iVar8;
    }
    *param_2 = iVar6;
    param_2[1] = iStackX_14;
    param_2[2] = iVar1;
    param_2[3] = iVar8;
  }
  SetWindowPos(param_1,(HWND)0x0,*param_2,param_2[1],param_2[2],param_2[3],param_3);
  return;
}



############ FUN_ 1812c7190 size=217 ############

undefined4 * FUN_1812c7190(undefined4 *param_1,undefined4 *param_2,undefined8 param_3)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1812c75b0();
  if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar4 = FUN_1812c7510();
  }
  else {
    uVar2 = (*DAT_182678f08)(param_3);
    iVar1 = (*DAT_182678ec8)(uVar2);
    cVar4 = iVar1 == 2;
  }
  local_18 = *param_2;
  uStack_14 = param_2[1];
  uStack_10 = param_2[2];
  uStack_c = param_2[3];
  if (cVar4 != '\0') {
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    uVar2 = *(undefined8 *)(DAT_182673700 + 0x78);
    uVar3 = FUN_1812c59b0(param_3);
    FUN_18133d410(uVar2,param_1,&local_18,uVar3);
    return param_1;
  }
  *param_1 = local_18;
  param_1[1] = uStack_14;
  param_1[2] = uStack_10;
  param_1[3] = uStack_c;
  return param_1;
}



############ FUN_ 1812c59b0 size=1048 ############

void FUN_1812c59b0(HWND param_1)

{
  float fVar1;
  undefined1 auVar2 [16];
  ulonglong uVar3;
  longlong lVar4;
  double dVar5;
  double dVar6;
  int iVar7;
  LONG_PTR LVar8;
  longlong lVar9;
  longlong *plVar10;
  undefined8 uVar11;
  ulonglong *_Memory;
  undefined1 (*pauVar12) [16];
  undefined8 *puVar13;
  int iVar14;
  char *pcVar15;
  int iVar16;
  int iVar17;
  uint uVar18;
  char *pcVar19;
  int iVar20;
  ulonglong uVar21;
  uint uVar22;
  int iVar23;
  ulonglong uVar24;
  ulonglong *puVar25;
  int iVar26;
  ulonglong uVar27;
  int iVar28;
  ulonglong *puVar29;
  double dVar30;
  double dVar31;
  double dVar32;
  uint uVar33;
  uint uVar34;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined1 local_a8 [16];
  undefined1 local_98 [96];
  
  _Memory = (ulonglong *)0x0;
  if (param_1 == (HWND)0x0) {
LAB_1812c5a42:
    dVar30 = (double)FUN_1812c7030(param_1);
  }
  else {
    LVar8 = GetWindowLongPtrW(param_1,-0x15);
    lVar9 = FUN_1804cf4b0();
    if ((LVar8 != lVar9) ||
       (plVar10 = (longlong *)GetWindowLongPtrW(param_1,8), plVar10 == (longlong *)0x0))
    goto LAB_1812c5a42;
    dVar30 = (double)(**(code **)(*plVar10 + 0x110))(plVar10);
  }
  if (DAT_182673700 == 0) {
    uVar11 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar11);
  }
  dVar6 = DAT_1824c3c80;
  dVar5 = DAT_1824c3c18;
  fVar1 = *(float *)(DAT_182673700 + 0xc0);
  uVar21 = **(ulonglong **)(DAT_182673700 + 0x78);
  uVar27 = (longlong)*(int *)((longlong)*(ulonglong **)(DAT_182673700 + 0x78) + 0xc) * 0x40 + uVar21
  ;
  if (uVar21 != uVar27) {
    uVar33 = (uint)DAT_1824c4f10;
    uVar34 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
    puVar25 = _Memory;
    puVar29 = _Memory;
    do {
      dVar32 = *(double *)(uVar21 + 0x30) / (double)fVar1;
      uVar22 = SUB84(dVar32 - dVar30,0);
      uVar18 = (uint)((ulonglong)(dVar32 - dVar30) >> 0x20);
      dVar31 = dVar30;
      if (dVar30 <= dVar32) {
        dVar31 = dVar32;
      }
      if (((double)CONCAT44(uVar18 & uVar34,uVar22 & uVar33) <= dVar31 * dVar6) ||
         ((double)CONCAT44(uVar18 & uVar34,uVar22 & uVar33) < dVar5)) {
        iVar28 = (int)puVar29;
        uVar22 = iVar28 + 1;
        if ((int)(uint)puVar25 < (int)uVar22) {
          uVar18 = uVar22;
          if ((int)uVar22 < 0) {
            uVar18 = iVar28 + 2;
          }
          uVar18 = iVar28 + 9 + ((int)uVar18 >> 1) & 0xfffffff8;
          if ((uint)puVar25 != uVar18) {
            if ((int)uVar18 < 1) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
            if (_Memory == (ulonglong *)0x0) {
              _Memory = malloc((longlong)(int)uVar18 * 8);
            }
            else {
              _Memory = realloc(_Memory,(longlong)(int)uVar18 * 8);
            }
          }
          puVar25 = (ulonglong *)(ulonglong)uVar18;
        }
        puVar29 = (ulonglong *)(ulonglong)uVar22;
        _Memory[iVar28] = uVar21;
      }
      uVar21 = uVar21 + 0x40;
    } while (uVar21 != uVar27);
    iVar28 = (int)puVar29;
    if (0 < iVar28) {
      if (iVar28 == 1) goto LAB_1812c5dc1;
      if (param_1 == (HWND)0x0) {
LAB_1812c5bf8:
        pauVar12 = (undefined1 (*) [16])FUN_1812c6d70(local_a8,param_1);
        auVar2 = *pauVar12;
        local_b8 = auVar2._0_8_;
        uStack_b0 = CONCAT44(auVar2._12_4_ - auVar2._4_4_,auVar2._8_4_ - auVar2._0_4_);
        if (DAT_182673700 == 0) {
          uVar11 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(uVar11);
        }
        puVar13 = (undefined8 *)
                  FUN_18133d580(*(undefined8 *)(DAT_182673700 + 0x78),local_98,&local_b8,0);
        local_b8 = *puVar13;
        uStack_b0 = puVar13[1];
      }
      else {
        LVar8 = GetWindowLongPtrW(param_1,-0x15);
        lVar9 = FUN_1804cf4b0();
        if ((LVar8 != lVar9) || (LVar8 = GetWindowLongPtrW(param_1,8), LVar8 == 0))
        goto LAB_1812c5bf8;
        lVar9 = *(longlong *)(LVar8 + 8);
        for (lVar4 = *(longlong *)(*(longlong *)(LVar8 + 8) + 0x18); lVar4 != 0;
            lVar4 = *(longlong *)(lVar4 + 0x18)) {
          lVar9 = lVar4;
        }
        local_b8 = *(undefined8 *)(lVar9 + 0x20);
        uStack_b0 = *(undefined8 *)(lVar9 + 0x28);
      }
      uVar21 = 0;
      iVar20 = -1;
      uVar27 = (ulonglong)((longlong)(_Memory + iVar28) + (7 - (longlong)_Memory)) >> 3;
      if (_Memory + iVar28 < _Memory) {
        uVar27 = uVar21;
      }
      if (uVar27 != 0) {
        iVar28 = (int)local_b8;
        iVar7 = (int)uStack_b0 + iVar28;
        uVar24 = uVar21;
        puVar25 = _Memory;
        do {
          uVar3 = *puVar25;
          iVar23 = *(int *)(uVar3 + 4);
          iVar16 = iVar23;
          if (iVar23 < iVar28) {
            iVar16 = iVar28;
          }
          iVar17 = *(int *)(uVar3 + 8);
          iVar14 = (int)((ulonglong)local_b8 >> 0x20);
          iVar26 = iVar17;
          if (iVar17 < iVar14) {
            iVar26 = iVar14;
          }
          iVar23 = *(int *)(uVar3 + 0xc) + iVar23;
          if (iVar7 < iVar23) {
            iVar23 = iVar7;
          }
          iVar23 = iVar23 - iVar16;
          if (iVar23 < 0) {
LAB_1812c5d34:
            iVar23 = 0;
            iVar16 = iVar23;
          }
          else {
            iVar14 = (int)((ulonglong)uStack_b0 >> 0x20) + iVar14;
            iVar17 = *(int *)(uVar3 + 0x10) + iVar17;
            if (iVar14 < iVar17) {
              iVar17 = iVar14;
            }
            iVar16 = iVar17 - iVar26;
            if (iVar17 - iVar26 < 0) goto LAB_1812c5d34;
          }
          if (iVar20 < iVar23 * iVar16) {
            uVar21 = uVar3;
            iVar20 = iVar23 * iVar16;
          }
          puVar25 = puVar25 + 1;
          uVar24 = uVar24 + 1;
        } while (uVar24 != uVar27);
        if (uVar21 != 0) goto LAB_1812c5dc1;
      }
    }
  }
  if (DAT_182673700 == 0) {
    uVar11 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar11);
  }
  pcVar19 = (char *)**(undefined8 **)(DAT_182673700 + 0x78);
  pcVar15 = pcVar19 + (longlong)*(int *)((longlong)*(undefined8 **)(DAT_182673700 + 0x78) + 0xc) *
                      0x40;
  for (; (pcVar19 != pcVar15 && (*pcVar19 == '\0')); pcVar19 = pcVar19 + 0x40) {
  }
LAB_1812c5dc1:
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812c7270 size=217 ############

undefined4 * FUN_1812c7270(undefined4 *param_1,undefined4 *param_2,undefined8 param_3)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1812c75b0();
  if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar4 = FUN_1812c7510();
  }
  else {
    uVar2 = (*DAT_182678f08)(param_3);
    iVar1 = (*DAT_182678ec8)(uVar2);
    cVar4 = iVar1 == 2;
  }
  local_18 = *param_2;
  uStack_14 = param_2[1];
  uStack_10 = param_2[2];
  uStack_c = param_2[3];
  if (cVar4 != '\0') {
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    uVar2 = *(undefined8 *)(DAT_182673700 + 0x78);
    uVar3 = FUN_1812c59b0(param_3);
    FUN_18133d580(uVar2,param_1,&local_18,uVar3);
    return param_1;
  }
  *param_1 = local_18;
  param_1[1] = uStack_14;
  param_1[2] = uStack_10;
  param_1[3] = uStack_c;
  return param_1;
}



############ FUN_ 18050ef60 size=511 ############

ulonglong FUN_18050ef60(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined1 auVar1 [16];
  int iVar2;
  BOOL BVar3;
  undefined1 (*pauVar4) [16];
  ulonglong uVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  HWND hWnd;
  LONG LVar8;
  char cVar9;
  POINT local_res10;
  undefined1 local_res20 [8];
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  undefined1 local_40 [24];
  
  pauVar4 = (undefined1 (*) [16])
            FUN_1812c6d70(local_40,*(undefined8 *)(param_1 + 0x88),param_3,param_4,
                          0xfffffffffffffffe);
  auVar1 = *pauVar4;
  local_5c = auVar1._4_4_;
  local_54 = auVar1._12_4_ - local_5c;
  local_60 = auVar1._0_4_;
  local_58 = auVar1._8_4_ - local_60;
  uVar5 = FUN_1812c7270(&local_50,&local_60,*(undefined8 *)(param_1 + 0x88));
  iVar2 = (int)param_2;
  if ((((iVar2 < 0) || (local_res10.y = (LONG)((ulonglong)param_2 >> 0x20), param_2 < 0)) ||
      (local_48 <= iVar2)) || (local_44 <= local_res10.y)) {
    return uVar5 & 0xffffffffffffff00;
  }
  pauVar4 = (undefined1 (*) [16])FUN_1812c6d70(local_40,*(undefined8 *)(param_1 + 0x88));
  auVar1 = *pauVar4;
  local_5c = auVar1._4_4_;
  local_54 = auVar1._12_4_ - local_5c;
  local_60 = auVar1._0_4_;
  local_58 = auVar1._8_4_ - local_60;
  FUN_1812c7270(&local_50,&local_60,*(undefined8 *)(param_1 + 0x88));
  LVar8 = iVar2 + local_50 + *(int *)(param_1 + 0xbc);
  local_res10.y = local_4c + *(int *)(param_1 + 0xb8) + local_res10.y;
  local_res10.x = LVar8;
  FUN_1812c75b0();
  if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar9 = FUN_1812c7510();
  }
  else {
    uVar6 = (*DAT_182678f18)();
    iVar2 = (*DAT_182678ec8)(uVar6);
    cVar9 = iVar2 == 2;
  }
  if ((cVar9 != '\0') || (cVar9 = FUN_1812c74c0(*(undefined8 *)(param_1 + 0x88)), cVar9 != '\0')) {
    if (DAT_182673700 == 0) {
      uVar6 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar6);
    }
    puVar7 = (undefined8 *)
             FUN_18051edd0(*(undefined8 *)(DAT_182673700 + 0x78),local_res20,local_res10);
    local_res10 = (POINT)*puVar7;
    LVar8 = local_res10.x;
  }
  local_res10.y = (LONG)((ulonglong)local_res10 >> 0x20);
  local_res10.x = LVar8;
  hWnd = WindowFromPoint(local_res10);
  if ((hWnd != *(HWND *)(param_1 + 0x88)) &&
     (((char)param_3 == '\0' || (BVar3 = IsChild(*(HWND *)(param_1 + 0x88),hWnd), BVar3 == 0)))) {
    return 0;
  }
  return 1;
}



############ FUN_ 18050f400 size=379 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18050f400(longlong param_1)

{
  LPVOID *ppv;
  char cVar1;
  undefined8 *puVar2;
  undefined1 auStackY_68 [32];
  IID local_28;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_68;
  if (*(char *)(param_1 + 0xb3) == '\0') {
    *(undefined1 *)(param_1 + 0xb3) = 1;
    CreateCaret(*(HWND *)(param_1 + 0x88),(HBITMAP)0x1,0,0);
  }
  ShowCaret(*(HWND *)(param_1 + 0x88));
  SetCaretPos(0,0);
  cVar1 = FUN_18050dc40(param_1 + 0xe0,*(undefined8 *)(param_1 + 0x88));
  if (cVar1 != '\0') {
    if ((DAT_182673b00 == (undefined8 *)0x0) && (DAT_18267ab70 == '\0')) {
      DAT_18267ab70 = 1;
      puVar2 = (undefined8 *)FUN_1811316e0(0x30);
      FUN_1812a7230(puVar2);
      puVar2[2] = 0xffffffffffffffff;
      *(undefined4 *)(puVar2 + 3) = 0;
      *puVar2 = juce::OnScreenKeyboard::vftable;
      puVar2[1] = juce::OnScreenKeyboard::vftable;
      *(undefined2 *)(puVar2 + 4) = 0;
      ppv = (LPVOID *)(puVar2 + 5);
      *ppv = (LPVOID)0x0;
      local_28.Data1 = 0x4ce576fa;
      local_28.Data2 = 0x83dc;
      local_28.Data3 = 0x4f88;
      local_28.Data4[0] = 0x95;
      local_28.Data4[1] = '\x1c';
      local_28.Data4[2] = 0x9d;
      local_28.Data4[3] = '\a';
      local_28.Data4[4] = 0x82;
      local_28.Data4[5] = 0xb4;
      local_28.Data4[6] = 0xe3;
      local_28.Data4[7] = 'v';
      if (*ppv != (longlong *)0x0) {
        (**(code **)(*(longlong *)*ppv + 0x10))();
      }
      *ppv = (LPVOID)0x0;
      CoCreateInstance(&local_28,(LPUNKNOWN)0x0,6,(IID *)&DAT_18249bbf8,ppv);
      DAT_18267ab70 = '\0';
      DAT_182673b00 = puVar2;
    }
    puVar2 = DAT_182673b00;
    *(undefined1 *)(DAT_182673b00 + 4) = 1;
    FUN_1812a77d0(puVar2 + 1,10);
  }
}



############ FUN_ 18050f590 size=368 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18050f590(longlong param_1)

{
  HWND pHVar1;
  char cVar2;
  HIMC pHVar3;
  undefined8 *puVar4;
  undefined1 auStackY_68 [32];
  IID local_28;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_68;
  pHVar1 = *(HWND *)(param_1 + 0x88);
  if (*(char *)(param_1 + 0x150) != '\0') {
    *(undefined1 *)(param_1 + 0x150) = 0;
    pHVar3 = ImmGetContext(pHVar1);
    if (pHVar3 != (HIMC)0x0) {
      ImmNotifyIME(pHVar3,0x15,1,0);
      ImmReleaseContext(pHVar1,pHVar3);
    }
  }
  cVar2 = FUN_18050dc40(param_1 + 0xe0,*(undefined8 *)(param_1 + 0x88));
  if (cVar2 != '\0') {
    if ((DAT_182673b00 == (undefined8 *)0x0) && (DAT_18267ab70 == '\0')) {
      DAT_18267ab70 = 1;
      puVar4 = (undefined8 *)FUN_1811316e0(0x30);
      FUN_1812a7230(puVar4);
      puVar4[2] = 0xffffffffffffffff;
      *(undefined4 *)(puVar4 + 3) = 0;
      *puVar4 = juce::OnScreenKeyboard::vftable;
      puVar4[1] = juce::OnScreenKeyboard::vftable;
      *(undefined2 *)(puVar4 + 4) = 0;
      local_28.Data1 = 0x4ce576fa;
      local_28.Data2 = 0x83dc;
      local_28.Data3 = 0x4f88;
      local_28.Data4[0] = 0x95;
      local_28.Data4[1] = '\x1c';
      local_28.Data4[2] = 0x9d;
      local_28.Data4[3] = '\a';
      local_28.Data4[4] = 0x82;
      local_28.Data4[5] = 0xb4;
      local_28.Data4[6] = 0xe3;
      local_28.Data4[7] = 'v';
      puVar4[5] = (LPVOID)0x0;
      CoCreateInstance(&local_28,(LPUNKNOWN)0x0,6,(IID *)&DAT_18249bbf8,(LPVOID *)(puVar4 + 5));
      DAT_18267ab70 = '\0';
      DAT_182673b00 = puVar4;
    }
    puVar4 = DAT_182673b00;
    *(undefined1 *)(DAT_182673b00 + 4) = 0;
    FUN_1812a77d0(puVar4 + 1,10);
  }
}



############ FUN_ 18050f720 size=455 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18050f720(longlong *param_1,int *param_2)

{
  longlong lVar1;
  char *pcVar2;
  int iVar3;
  undefined8 uVar4;
  int *piVar5;
  char *pcVar6;
  char *pcVar7;
  char cVar8;
  double dVar9;
  undefined1 auStack_98 [32];
  undefined1 local_78 [12];
  int iStack_6c;
  double local_68;
  double dStack_60;
  undefined8 local_58;
  undefined1 local_50 [24];
  RECT local_38;
  ulonglong local_28;
  
  local_58 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_98;
  dVar9 = (double)(**(code **)(*param_1 + 0x110))();
  FUN_1812c75b0();
  if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar8 = FUN_1812c7510();
  }
  else {
    uVar4 = (*DAT_182678f18)();
    iVar3 = (*DAT_182678ec8)(uVar4);
    cVar8 = iVar3 == 2;
  }
  if (cVar8 != '\0') {
    lVar1 = param_1[0x11];
    FUN_1812c75b0();
    if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
      cVar8 = FUN_1812c7510();
    }
    else {
      uVar4 = (*DAT_182678f08)(lVar1);
      iVar3 = (*DAT_182678ec8)(uVar4);
      cVar8 = iVar3 == 2;
    }
    if (cVar8 == '\0') {
      if (DAT_182673700 == 0) {
        local_78._0_8_ = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_78._0_8_);
      }
      pcVar2 = (char *)**(undefined8 **)(DAT_182673700 + 0x78);
      for (pcVar6 = pcVar2;
          (pcVar7 = pcVar2,
          pcVar6 != pcVar2 + (longlong)
                             *(int *)((longlong)*(undefined8 **)(DAT_182673700 + 0x78) + 0xc) * 0x40
          && (pcVar7 = pcVar6, *pcVar6 == '\0')); pcVar6 = pcVar6 + 0x40) {
      }
      dVar9 = DAT_1824c4140 / *(double *)(pcVar7 + 0x30);
    }
  }
  local_78._0_8_ = (double)*param_2 * dVar9;
  register0x00001240 = (double)param_2[1] * dVar9;
  local_68 = (double)param_2[2] * dVar9;
  dStack_60 = (double)param_2[3] * dVar9;
  piVar5 = (int *)FUN_18051bbd0(local_78,local_50);
  local_78._0_4_ = piVar5[0];
  local_78._4_4_ = piVar5[1];
  iStack_6c = piVar5[3] + piVar5[1];
  local_78._8_4_ = *piVar5 + piVar5[2];
  local_38.right = *piVar5 + piVar5[2];
  local_38.bottom = piVar5[3] + piVar5[1];
  local_38._0_8_ = local_78._0_8_;
  InvalidateRect((HWND)param_1[0x11],&local_38,0);
}



############ FUN_ 1812c70b0 size=203 ############

undefined8 * FUN_1812c70b0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  
  FUN_1812c75b0();
  if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar4 = FUN_1812c7510();
  }
  else {
    uVar2 = (*DAT_182678f08)(param_3);
    iVar1 = (*DAT_182678ec8)(uVar2);
    cVar4 = iVar1 == 2;
  }
  if (cVar4 == '\0') {
    *param_1 = *param_2;
  }
  else {
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    uVar2 = *(undefined8 *)(DAT_182673700 + 0x78);
    uVar3 = FUN_1812c59b0(param_3);
    FUN_18051ece0(uVar2,param_1,*param_2,uVar3);
  }
  return param_1;
}



############ FUN_ 180523f00 size=51 ############

undefined8 FUN_180523f00(undefined8 param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x50);
  FUN_180522290(uVar1,param_1);
  return uVar1;
}



############ FUN_ 1805106e0 size=291 ############

undefined8 FUN_1805106e0(HWND param_1)

{
  longlong lVar1;
  char cVar2;
  BOOL BVar3;
  undefined8 uVar4;
  longlong lVar5;
  longlong *plVar6;
  HWND hWndParent;
  longlong lVar7;
  uint uVar8;
  
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  uVar8 = *(int *)(DAT_182673700 + 100) - 1;
  lVar7 = (longlong)(int)uVar8;
  lVar5 = DAT_182673700;
  if (-1 < (int)uVar8) {
    do {
      if (lVar5 == 0) {
        uVar4 = FUN_1811316e0(0x130);
        lVar5 = FUN_18133c6c0(uVar4);
        DAT_182673700 = lVar5;
      }
      if (((uVar8 < *(uint *)(lVar5 + 100)) &&
          (lVar1 = *(longlong *)(*(longlong *)(lVar5 + 0x58) + lVar7 * 8), lVar1 != 0)) &&
         (cVar2 = FUN_181343030(lVar1), lVar5 = DAT_182673700, cVar2 == '\0')) {
        if ((*(byte *)(lVar1 + 0xa8) & 1) == 0) {
          if (*(longlong *)(lVar1 + 0x18) != 0) {
            plVar6 = (longlong *)FUN_18134c2e0();
            goto LAB_1805107a7;
          }
LAB_1805107bd:
          hWndParent = (HWND)0x0;
        }
        else {
          plVar6 = (longlong *)FUN_1812d2bd0(lVar1);
LAB_1805107a7:
          if (plVar6 == (longlong *)0x0) goto LAB_1805107bd;
          if ((undefined **)*plVar6 == juce::HWNDComponentPeer::vftable) {
            hWndParent = (HWND)plVar6[0x11];
          }
          else {
            hWndParent = (HWND)(*(code *)((undefined **)*plVar6)[1])(plVar6);
          }
        }
        BVar3 = IsChild(hWndParent,param_1);
        lVar5 = DAT_182673700;
        if (BVar3 != 0) {
          return 0;
        }
      }
      uVar8 = uVar8 - 1;
      lVar7 = lVar7 + -1;
    } while (-1 < lVar7);
  }
  return 1;
}



############ FUN_ 180510810 size=537 ############

undefined8 FUN_180510810(undefined8 *param_1)

{
  uint uVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  undefined8 *puVar5;
  LONG_PTR LVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong *plVar12;
  longlong *plVar13;
  
  plVar10 = (longlong *)0x0;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar5);
    FUN_1812a7230(puVar5 + 2);
    *puVar5 = juce::ModalComponentManager::vftable;
    puVar5[2] = juce::ModalComponentManager::vftable;
    puVar5[3] = 0;
    puVar5[4] = 0;
    DAT_182673c20 = puVar5;
  }
  plVar9 = (longlong *)DAT_182673c20[3];
  plVar13 = (longlong *)
            ((ulonglong)
             ((longlong)(plVar9 + *(int *)((longlong)DAT_182673c20 + 0x24)) + (7 - (longlong)plVar9)
             ) >> 3);
  if (plVar9 + *(int *)((longlong)DAT_182673c20 + 0x24) < plVar9) {
    plVar13 = plVar10;
  }
  plVar11 = plVar10;
  plVar12 = plVar10;
  if (plVar13 != (longlong *)0x0) {
    do {
      if (*(char *)(*plVar9 + 0x5c) != '\0') {
        plVar12 = (longlong *)(ulonglong)((int)plVar12 + 1);
      }
      plVar9 = plVar9 + 1;
      plVar11 = (longlong *)((longlong)plVar11 + 1);
    } while (plVar11 != plVar13);
  }
  if ((int)plVar12 != 0) {
    LVar6 = GetWindowLongPtrW((HWND)*param_1,-0x15);
    lVar7 = FUN_1804cf4b0();
    if (LVar6 != lVar7) {
      uVar1 = *(uint *)(param_1 + 1);
      if (0x200 < uVar1) {
        if (0x319 < uVar1) {
          return 0;
        }
        if (uVar1 != 0x319) {
          switch(uVar1 - 0x201) {
          case 0:
          case 2:
          case 3:
          case 5:
          case 6:
          case 8:
          case 0x41:
          case 0x45:
            goto switchD_18051092c_caseD_80;
          case 1:
          case 4:
          case 7:
          case 9:
          case 0xd:
          case 0x3f:
          case 0x40:
          case 0x44:
          case 0x46:
          case 0x4a:
          case 0x4d:
          case 0x4e:
          case 0x9f:
          case 0xa0:
            break;
          default:
            goto switchD_18051092c_caseD_1;
          }
        }
        goto switchD_18051092c_caseD_0;
      }
      if (uVar1 == 0x200) {
switchD_18051092c_caseD_0:
        uVar8 = FUN_1805106e0(*param_1);
        return uVar8;
      }
      switch(uVar1 - 0x21) {
      case 0:
      case 0x7f:
      case 0xe0:
      case 0xe1:
      case 0xe4:
        goto switchD_18051092c_caseD_0;
      default:
        break;
      case 0x80:
      case 0x82:
      case 0x83:
      case 0x85:
      case 0x86:
      case 0x88:
      case 0xdf:
      case 0xe3:
switchD_18051092c_caseD_80:
        cVar3 = FUN_1805106e0(*param_1);
        if (cVar3 != '\0') {
          if (DAT_182673c20 == (undefined8 *)0x0) {
            puVar5 = (undefined8 *)FUN_1811316e0(0x28);
            FUN_1812a59f0(puVar5);
            FUN_1812a7230(puVar5 + 2);
            *puVar5 = juce::ModalComponentManager::vftable;
            puVar5[2] = juce::ModalComponentManager::vftable;
            puVar5[3] = 0;
            puVar5[4] = 0;
            DAT_182673c20 = puVar5;
          }
          iVar4 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
          lVar7 = (longlong)iVar4;
          if (-1 < iVar4) {
            plVar9 = plVar10;
            do {
              lVar2 = *(longlong *)(DAT_182673c20[3] + lVar7 * 8);
              if ((*(char *)(lVar2 + 0x5c) != '\0') &&
                 (iVar4 = (int)plVar9, plVar9 = (longlong *)(ulonglong)(iVar4 + 1), iVar4 == 0)) {
                plVar10 = *(longlong **)(lVar2 + 0x40);
                break;
              }
              lVar7 = lVar7 + -1;
            } while (-1 < lVar7);
          }
          if (plVar10 != (longlong *)0x0) {
            (**(code **)(*plVar10 + 0x140))(plVar10);
          }
          return 1;
        }
      }
    }
  }
switchD_18051092c_caseD_1:
  return 0;
}



############ FUN_ 180511ba0 size=269 ############

void FUN_180511ba0(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong *plVar4;
  longlong local_58 [3];
  undefined4 local_40;
  
  local_58[1] = 0xfffffffffffffffe;
  local_58[2] = 0;
  local_40 = 0;
  uVar3 = FUN_1812c6c70();
  if (DAT_182673700 == 0) {
    local_58[0] = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_58[0]);
  }
  lVar2 = *(longlong *)(DAT_182673700 + 0x30);
  plVar4 = *(longlong **)(lVar2 + 0x28);
  plVar1 = plVar4 + *(int *)(lVar2 + 0x34);
  while( true ) {
    if (plVar4 == plVar1) {
      FUN_1804e6f50(lVar2,0,0);
      return;
    }
    if (*(int *)(*plVar4 + 0x14) == 0) break;
    plVar4 = plVar4 + 1;
  }
  local_58[0] = *plVar4;
  FUN_18133dc10(local_58,param_1,param_2,uVar3,param_5,param_3,param_4,local_58 + 2);
  return;
}



############ FUN_ 180511d50 size=116 ############

longlong FUN_180511d50(void)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong *plVar3;
  uint7 uVar4;
  
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  plVar3 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar3 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  while( true ) {
    uVar4 = (uint7)((ulonglong)plVar3 >> 8);
    if (plVar3 == plVar1) {
      return (ulonglong)uVar4 << 8;
    }
    if (((*(byte *)(*plVar3 + 0x28) & 0x70) != 0) && (*(int *)(*plVar3 + 0x14) - 1U < 2)) break;
    plVar3 = plVar3 + 1;
  }
  return CONCAT71(uVar4,1);
}



############ FUN_ 180511dd0 size=690 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180511dd0(longlong *param_1,undefined8 param_2,char param_3)

{
  char cVar1;
  ushort uVar2;
  int iVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined8 uVar6;
  uint uVar7;
  uint uVar8;
  float local_58;
  float fStack_54;
  undefined4 local_50;
  tagTRACKMOUSEEVENT local_40;
  
  uVar7 = DAT_182673aec;
  if ((DAT_182678ed0 != 0) && (uVar4 = GetMessageExtraInfo(), (uVar4 & 0xffffff80) == 0xff515780)) {
    return;
  }
  cVar1 = FUN_180511d50();
  if (cVar1 == '\0') {
    if (*(char *)((longlong)param_1 + 0xb2) == '\0') {
      *(undefined1 *)((longlong)param_1 + 0xb2) = 1;
      if ((param_3 != '\0') && (DAT_182673ba8 != 0)) {
        FUN_18050fa30();
        uVar2 = GetAsyncKeyState(1);
        uVar8 = 0;
        if ((uVar2 & 0x8000) != 0) {
          uVar8 = 0x10;
        }
        uVar2 = GetAsyncKeyState(2);
        if ((uVar2 & 0x8000) != 0) {
          uVar8 = uVar8 | 0x20;
        }
        uVar2 = GetAsyncKeyState(4);
        if ((uVar2 & 0x8000) != 0) {
          uVar8 = uVar8 | 0x40;
        }
        DAT_182673aec = DAT_182673aec & 0xffffff8f | uVar8;
      }
      FUN_18050fa30();
      if ((longlong *)param_1[0x22] != (longlong *)0x0) {
        uVar8 = (**(code **)(*(longlong *)param_1[0x22] + 8))();
        DAT_182673aec = DAT_182673aec | uVar8;
      }
      local_40.cbSize = 0x18;
      local_40.dwFlags = 2;
      local_40.hwndTrack = (HWND)param_1[0x11];
      local_40.dwHoverTime = 0;
      TrackMouseEvent(&local_40);
      lVar5 = FUN_18134b820();
      FUN_1804e6e90(**(undefined8 **)(*(longlong *)(lVar5 + 0x30) + 0x18),1);
    }
    else if (*(char *)((longlong)param_1 + 0xb1) == '\0') {
      fStack_54 = (float)((ulonglong)param_2 >> 0x20);
      local_58 = (float)param_2;
      local_50 = SUB84((double)fStack_54 + DAT_1824c4520,0);
      cVar1 = (**(code **)(*param_1 + 0x90))
                        (param_1,CONCAT44(local_50,SUB84((double)local_58 + DAT_1824c4520,0)),0);
      if (cVar1 == '\0') {
        return;
      }
    }
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) +
                 0xc) < DAT_18267b0f4) && (_Init_thread_header(&DAT_18267b0f4), DAT_18267b0f4 == -1)
       ) {
      iVar3 = FUN_181216340();
      DAT_18267b0c4 = 0x10;
      if (0x202 < iVar3) {
        DAT_18267b0c4 = 0;
      }
      _Init_thread_footer(&DAT_18267b0f4);
    }
    uVar8 = FUN_181228e30();
    if (DAT_182673700 == 0) {
      uVar6 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar6);
    }
    if ((*(byte *)(**(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18) + 0x28) & 0x70) == 0)
    {
      uVar7 = uVar7 & 0xffffff8f;
    }
    if (DAT_18267b0c4 + _DAT_18267aac0 <= uVar8) {
      _DAT_18267aac0 = uVar8;
      FUN_180511ba0(param_1,param_2,0,0,uVar7);
    }
  }
  return;
}



############ FUN_ 180512270 size=363 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180512270(undefined8 param_1,ulonglong param_2,char param_3)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined4 uVar5;
  float fVar6;
  undefined1 auStack_78 [32];
  float *local_58;
  int local_48 [2];
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  float local_28;
  float local_24;
  undefined2 local_20;
  undefined1 local_1e;
  ulonglong local_18;
  
  local_38 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_78;
  FUN_18050fa30();
  fVar6 = (float)(int)(short)(param_2 >> 0x10) * DAT_1824c3d8c;
  local_24 = DAT_1824c4754;
  if ((DAT_1824c4754 <= fVar6) && (local_24 = DAT_1824c459c, fVar6 <= DAT_1824c459c)) {
    local_24 = fVar6;
  }
  if (param_3 == '\0') {
    local_28 = local_24 * _DAT_1824c4648;
    local_24 = 0.0;
  }
  else {
    local_28 = 0.0;
    local_24 = local_24 * _DAT_1824c3c60;
  }
  local_20 = 0;
  local_1e = 0;
  local_40 = 0;
  lVar2 = FUN_180512190(param_1,&local_40);
  if (lVar2 == 0) {
  }
  if ((DAT_182678f28 != (code *)0x0) &&
     (iVar1 = (*DAT_182678f28)(param_2 & 0xffff,local_48), iVar1 != 0)) {
    if (local_48[0] == 2) {
      uVar5 = 1;
      goto LAB_18051236b;
    }
    if (local_48[0] == 3) {
      uVar5 = 2;
      goto LAB_18051236b;
    }
  }
  uVar5 = 0;
LAB_18051236b:
  uVar3 = FUN_1812c6c70();
  if (DAT_182673700 == 0) {
    local_30 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_30);
  }
  puVar4 = (undefined8 *)FUN_1804e7170(*(undefined8 *)(DAT_182673700 + 0x30),uVar5,0);
  if (puVar4 != (undefined8 *)0x0) {
    local_58 = &local_28;
    FUN_1804e65c0(*puVar4,lVar2,local_40,uVar3);
  }
}



############ FUN_ 1805123f0 size=513 ############

undefined8 FUN_1805123f0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  double dVar9;
  double dVar10;
  longlong local_res18;
  undefined8 local_res20;
  undefined4 uVar11;
  undefined4 local_78;
  int iStack_74;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  longlong local_50;
  undefined8 local_48;
  
  local_70 = 0;
  local_68 = 0;
  local_60 = 0;
  local_58 = 0;
  local_50 = 0;
  local_48 = 0;
  local_78 = 0x38;
  iStack_74 = 0;
  if ((DAT_182678ec0 != (code *)0x0) && (iVar4 = (*DAT_182678ec0)(param_2,&local_78), iVar4 != 0)) {
    FUN_18050fa30();
    local_res18 = 0;
    lVar5 = FUN_180512190(param_1,&local_res18);
    if ((lVar5 != 0) && ((int)local_70 == 3)) {
      if ((iStack_74 != 1) && (lVar2 = *(longlong *)(param_1 + 0xa8), lVar2 != 0)) {
        dVar9 = (double)local_50;
        if (local_50 < 0) {
          dVar9 = dVar9 + DAT_1824c4570;
        }
        dVar10 = (double)lVar2;
        if (lVar2 < 0) {
          dVar10 = dVar10 + DAT_1824c4570;
        }
        uVar6 = FUN_1812c6c70();
        if (DAT_182673700 == 0) {
          local_res20 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(local_res20);
        }
        lVar2 = *(longlong *)(DAT_182673700 + 0x30);
        plVar7 = *(longlong **)(lVar2 + 0x28);
        plVar1 = plVar7 + *(int *)(lVar2 + 0x34);
        for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
          if ((*(int *)(*plVar7 + 0x14) == 1) && (*(int *)(*plVar7 + 0x10) == 0))
          goto LAB_180512559;
        }
        cVar3 = FUN_1812c78b0();
        if (cVar3 != '\0') {
          plVar7 = (longlong *)FUN_1804e6f50(lVar2,0,1);
LAB_180512559:
          if (plVar7 != (longlong *)0x0) {
            lVar2 = *plVar7;
            local_res20 = 0;
            puVar8 = &local_res20;
            lVar5 = FUN_1804e6500(lVar2,lVar5,local_res18,uVar6,puVar8);
            uVar11 = (undefined4)((ulonglong)puVar8 >> 0x20);
            if (lVar5 != 0) {
              local_res18 = lVar2;
              puVar8 = (undefined8 *)FUN_1804e5790(&local_res20,lVar5,local_res20);
              FUN_18133f820(lVar5,&local_res18,*puVar8,uVar6,
                            CONCAT44(uVar11,(float)(dVar9 / dVar10)));
            }
          }
        }
      }
      *(longlong *)(param_1 + 0xa8) = local_50;
      return 1;
    }
  }
  return 0;
}



############ FUN_ 18133f820 size=587 ############

void FUN_18133f820(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  char cVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong lVar7;
  int iVar8;
  double dVar9;
  undefined8 *local_res10 [2];
  undefined8 local_res20;
  undefined4 local_b8;
  float local_a8;
  float local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  uint local_98;
  undefined8 local_94;
  undefined8 local_8c;
  undefined4 local_84;
  undefined8 local_80;
  longlong *local_78;
  longlong *local_70;
  undefined8 local_68;
  undefined8 local_60;
  longlong local_58;
  undefined2 local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  local_res20 = (double)param_3;
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  lVar3 = DAT_182673700;
  FUN_1804de690(local_res10,param_1);
  local_58 = *param_2;
  local_98 = *(uint *)(local_58 + 0x28) | DAT_182673aec & 0xffffff8f;
  local_a8 = (float)local_res20;
  local_a4 = local_res20._4_4_;
  dVar9 = (double)(float)local_res20;
  local_res20._0_4_ = SUB84(dVar9 + DAT_1824c4520,0);
  local_a0 = (float)local_res20;
  local_b8 = SUB84((double)local_res20._4_4_ + DAT_1824c4520,0);
  local_9c = local_b8;
  local_94 = 0;
  local_8c = 0;
  local_84 = 0;
  local_50 = 0;
  local_res20 = dVar9 + DAT_1824c4520;
  local_80 = param_3;
  local_78 = param_1;
  local_70 = param_1;
  local_68 = param_4;
  local_60 = param_4;
  cVar4 = FUN_181343030(param_1);
  if (cVar4 == '\0') {
    (**(code **)(*param_1 + 0x48))(param_1,&local_a8,param_5);
    lVar6 = 0;
    lVar7 = lVar6;
    if (local_res10[0] != (undefined8 *)0x0) {
      lVar7 = local_res10[0][2];
    }
    if (lVar7 != 0) {
      iVar8 = *(int *)(lVar3 + 0x44);
      while( true ) {
        lVar7 = lVar6;
        if (local_res10[0] != (undefined8 *)0x0) {
          lVar7 = local_res10[0][2];
        }
        if ((lVar7 == 0) || (iVar8 < 1)) break;
        iVar8 = iVar8 + -1;
        if ((*(int *)(lVar3 + 0x44) <= iVar8) && (iVar8 = *(int *)(lVar3 + 0x44) + -1, iVar8 < 0))
        break;
        plVar2 = *(longlong **)(*(longlong *)(lVar3 + 0x38) + (longlong)iVar8 * 8);
        (**(code **)(*plVar2 + 0x48))(plVar2,&local_a8,param_5);
      }
      if (local_res10[0] != (undefined8 *)0x0) {
        lVar6 = local_res10[0][2];
      }
      if (lVar6 != 0) {
        FUN_18051ead0(param_1,local_res10);
      }
    }
  }
  else {
    iVar8 = *(int *)(lVar3 + 0x44);
    while( true ) {
      lVar6 = 0;
      if (local_res10[0] != (undefined8 *)0x0) {
        lVar6 = local_res10[0][2];
      }
      if ((lVar6 == 0) || (iVar8 < 1)) break;
      iVar8 = iVar8 + -1;
      if ((*(int *)(lVar3 + 0x44) <= iVar8) && (iVar8 = *(int *)(lVar3 + 0x44) + -1, iVar8 < 0))
      break;
      plVar2 = *(longlong **)(*(longlong *)(lVar3 + 0x38) + (longlong)iVar8 * 8);
      (**(code **)(*plVar2 + 0x48))(plVar2,&local_a8,param_5);
    }
  }
  if (local_res10[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10[0] + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_res10[0])(local_res10[0],1);
    }
  }
  return;
}



############ FUN_ 1812d2a10 size=212 ############

void FUN_1812d2a10(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined8 param_7,undefined8 param_8,
                  undefined4 param_9)

{
  undefined8 *puVar1;
  undefined8 local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_28 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_28);
  }
  puVar1 = (undefined8 *)FUN_1804e7170(*(undefined8 *)(DAT_182673700 + 0x30),param_2,param_9);
  if (puVar1 != (undefined8 *)0x0) {
    local_28 = *puVar1;
    FUN_18133dc10(&local_28,param_1,param_3,param_7,param_4,param_5,param_6,param_8);
  }
  return;
}



############ FUN_ 180512d70 size=904 ############

undefined8
FUN_180512d70(undefined8 param_1,longlong param_2,undefined8 param_3,undefined4 param_4,char param_5
             ,char param_6)

{
  longlong *plVar1;
  longlong lVar2;
  uint uVar3;
  ulonglong uVar4;
  char cVar5;
  undefined8 uVar6;
  longlong *plVar7;
  uint uVar8;
  uint uVar9;
  float fVar10;
  longlong local_res10;
  undefined8 uVar11;
  undefined8 local_68;
  float local_60;
  
  uVar11 = 0xfffffffffffffffe;
  uVar6 = FUN_1812c6c70();
  uVar9 = DAT_182673aec;
  uVar8 = *(uint *)(param_2 + 100);
  fVar10 = 0.0;
  if ((uVar8 & 2) != 0) {
    fVar10 = (float)*(uint *)(param_2 + 0x6c) * DAT_1824c3c78;
  }
  local_68 = (ulonglong)(uint)fVar10;
  if ((uVar8 & 4) != 0) {
    local_68 = CONCAT44((float)*(int *)(param_2 + 0x70) / DAT_1824c44d0,fVar10);
  }
  uVar4 = local_68;
  if ((uVar8 & 8) == 0) {
    local_60 = 0.0;
  }
  else {
    local_60 = (float)*(int *)(param_2 + 0x74) / DAT_1824c44d0;
  }
  fVar10 = local_60;
  uVar8 = *(uint *)(param_2 + 0xc);
  if ((uVar8 & 0x10) == 0) {
    if ((uVar8 & 0x20) != 0) {
      DAT_182673aec = DAT_182673aec & 0xffffff8f | 0x20;
    }
  }
  else {
    DAT_182673aec = DAT_182673aec & 0xffffff8f | 0x10;
  }
  uVar3 = DAT_182673aec;
  if (param_5 == '\0') {
    if ((param_6 != '\0') || ((uVar8 & 4) == 0)) {
      uVar9 = uVar9 & 0xffffff8f;
      DAT_182673aec = DAT_182673aec & 0xffffff8f;
    }
  }
  else {
    uVar8 = DAT_182673aec & 0xffffff8f;
    if (DAT_182673700 == 0) {
      local_res10 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res10);
    }
    lVar2 = *(longlong *)(DAT_182673700 + 0x30);
    plVar7 = *(longlong **)(lVar2 + 0x28);
    plVar1 = plVar7 + *(int *)(lVar2 + 0x34);
    for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
      if (*(int *)(*plVar7 + 0x14) == 2) {
        local_res10 = *plVar7;
        FUN_18133dc10(&local_res10,param_1,param_3,uVar6,uVar8,param_4,0,&local_68,uVar11);
        goto LAB_180512ee0;
      }
    }
    FUN_1804e6f50(lVar2,0,2);
LAB_180512ee0:
    cVar5 = FUN_1812d2b50(param_1);
    uVar9 = uVar3;
    if (cVar5 == '\0') {
      return 0;
    }
  }
  local_68 = uVar4;
  local_60 = fVar10;
  if (DAT_182673700 == 0) {
    local_res10 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res10);
  }
  lVar2 = *(longlong *)(DAT_182673700 + 0x30);
  plVar7 = *(longlong **)(lVar2 + 0x28);
  plVar1 = plVar7 + *(int *)(lVar2 + 0x34);
  for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
    if (*(int *)(*plVar7 + 0x14) == 2) {
      local_res10 = *plVar7;
      FUN_18133dc10(&local_res10,param_1,param_3,uVar6,uVar9,param_4,0,&local_68,uVar11);
      goto LAB_180512fb4;
    }
  }
  FUN_1804e6f50(lVar2,0,2);
LAB_180512fb4:
  cVar5 = FUN_1812d2b50(param_1);
  uVar8 = DAT_182673aec;
  uVar11 = DAT_18248a358;
  if (cVar5 == '\0') {
    return 0;
  }
  if (param_6 != '\0') {
    local_68 = uVar4;
    local_60 = fVar10;
    if (DAT_182673700 == 0) {
      local_res10 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res10);
    }
    lVar2 = *(longlong *)(DAT_182673700 + 0x30);
    plVar7 = *(longlong **)(lVar2 + 0x28);
    plVar1 = plVar7 + *(int *)(lVar2 + 0x34);
    for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
      if (*(int *)(*plVar7 + 0x14) == 2) {
        local_res10 = *plVar7;
        FUN_18133dc10(&local_res10,param_1,uVar11,uVar6,uVar8,param_4,0,&local_68);
        goto LAB_180513047;
      }
    }
    FUN_1804e6f50(lVar2,0,2);
LAB_180513047:
    cVar5 = FUN_1812d2b50(param_1);
    if (cVar5 == '\0') {
      return 0;
    }
  }
  return 1;
}



############ FUN_ 180513100 size=171 ############

void FUN_180513100(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong *plVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (DAT_182673b64 != DAT_182673aec) {
    DAT_182673b64 = DAT_182673aec;
    if (DAT_182673700 == 0) {
      uVar2 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar2);
    }
    lVar1 = *(longlong *)(**(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18) + 0x48);
    plVar3 = (longlong *)0x0;
    if (lVar1 != 0) {
      plVar3 = *(longlong **)(lVar1 + 0x10);
    }
    if ((plVar3 == (longlong *)0x0) && (plVar3 = DAT_182673708, DAT_182673708 == (longlong *)0x0)) {
      plVar3 = *(longlong **)(param_1 + 8);
    }
    FUN_18133f790();
    (**(code **)(*plVar3 + 0xe8))(plVar3,&DAT_182673aec,param_3,param_4,uVar4);
  }
  return;
}



############ FUN_ 180513850 size=551 ############

undefined8 FUN_180513850(longlong *param_1,double *param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  bool bVar3;
  char cVar4;
  undefined8 *puVar5;
  void **ppvVar6;
  undefined8 uVar7;
  float fVar8;
  undefined4 local_res20;
  double local_b8 [2];
  double local_a8;
  int local_a0;
  int local_9c;
  undefined8 local_98;
  undefined8 local_88;
  undefined8 uStack_80;
  void *local_78;
  void *pvStack_70;
  undefined1 local_68 [64];
  
  local_98 = 0xfffffffffffffffe;
  if (((param_1[5] == 0) || (((byte)(int)param_1[2] & 0x18) != 0x18)) ||
     (cVar4 = (**(code **)(*param_1 + 0x80))(), cVar4 != '\0')) {
    bVar3 = false;
  }
  else {
    bVar3 = true;
  }
  if (bVar3) {
    local_9c = *(int *)((longlong)param_2 + 0xc) - *(int *)((longlong)param_2 + 4);
    local_a8 = *param_2;
    local_a0 = *(int *)(param_2 + 1) - *(int *)param_2;
    puVar5 = (undefined8 *)FUN_1812c7270(local_b8,&local_a8,param_1[0x11]);
    pvVar1 = (void *)*puVar5;
    uVar2 = puVar5[1];
    local_88 = pvVar1;
    uStack_80 = uVar2;
    fVar8 = (float)(**(code **)(*(longlong *)param_1[1] + 0x80))();
    if (fVar8 == DAT_1824c3ea4) {
      local_78 = pvVar1;
      pvStack_70 = (void *)uVar2;
      ppvVar6 = &local_78;
    }
    else {
      local_a8 = (double)((float)uStack_80._4_4_ / fVar8) + DAT_1824c4520;
      local_b8[0] = (double)((float)(int)uStack_80 / fVar8) + DAT_1824c4520;
      local_res20 = SUB84((double)((float)local_88._4_4_ / fVar8) + DAT_1824c4520,0);
      local_88 = (void *)CONCAT44(local_res20,
                                  SUB84((double)((float)(int)local_88 / fVar8) + DAT_1824c4520,0));
      uStack_80 = CONCAT44(local_a8._0_4_,SUB84(local_b8[0],0));
      ppvVar6 = (void **)&local_88;
    }
    local_78 = *ppvVar6;
    pvStack_70 = ppvVar6[1];
    FUN_1805136e0(param_1,local_68);
    if (DAT_182673700 == 0) {
      uVar7 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar7);
    }
    uVar7 = FUN_18133d310(*(undefined8 *)(DAT_182673700 + 0x78),&local_88);
    FUN_1804aa5a0(uVar7,&local_a8);
    uStack_80 = uStack_80 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_88);
  }
  return 1;
}



############ FUN_ 180514460 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180514460(longlong *param_1,short param_2)

{
  longlong lVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  char cVar7;
  undefined1 auStack_78 [32];
  undefined8 *local_58;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined8 local_48;
  WINDOWPLACEMENT local_40;
  ulonglong local_10;
  
  local_48 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_78;
  DAT_182673b64 = 0xffffffff;
  FUN_18050fa30();
  if ((undefined **)*param_1 == juce::HWNDComponentPeer::vftable) {
    local_40.length = 0x2c;
    GetWindowPlacement((HWND)param_1[0x11],&local_40);
    cVar7 = local_40.showCmd == 2;
  }
  else {
    cVar7 = (*(code *)((undefined **)*param_1)[0xd])(param_1);
  }
  plVar6 = (longlong *)0x0;
  if (cVar7 != '\0') {
    lVar4 = param_1[1];
    uStack_4c = *(undefined4 *)(lVar4 + 0x2c);
    uStack_50 = *(undefined4 *)(lVar4 + 0x28);
    local_58 = (undefined8 *)0x0;
    FUN_181342870(lVar4,&local_58,1);
    FUN_1812d1d10(param_1);
    cVar7 = FUN_1812d2b50(param_1);
    if (cVar7 == '\0') {
    }
  }
  puVar3 = (undefined8 *)FUN_18133e370(param_1[1],&local_58);
  lVar4 = FUN_181343e50(param_1[1],*puVar3);
  if (lVar4 == 0) {
    lVar4 = param_1[1];
  }
  cVar7 = FUN_181343030(lVar4);
  if (cVar7 == '\0') {
    FUN_18133f490(param_1[1]);
  }
  else if (param_2 == 2) {
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)FUN_1811316e0(0x28);
      local_58 = puVar3;
      FUN_1812a59f0(puVar3);
      FUN_1812a7230(puVar3 + 2);
      *puVar3 = juce::ModalComponentManager::vftable;
      puVar3[2] = juce::ModalComponentManager::vftable;
      puVar3[3] = 0;
      puVar3[4] = 0;
      DAT_182673c20 = puVar3;
    }
    iVar2 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
    lVar4 = (longlong)iVar2;
    if (-1 < iVar2) {
      plVar5 = plVar6;
      do {
        lVar1 = *(longlong *)(DAT_182673c20[3] + lVar4 * 8);
        if ((*(char *)(lVar1 + 0x5c) != '\0') &&
           (iVar2 = (int)plVar5, plVar5 = (longlong *)(ulonglong)(iVar2 + 1), iVar2 == 0)) {
          plVar6 = *(longlong **)(lVar1 + 0x40);
          break;
        }
        lVar4 = lVar4 + -1;
      } while (-1 < lVar4);
    }
    (**(code **)(*plVar6 + 0x140))(plVar6);
  }
  else {
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)FUN_1811316e0(0x28);
      local_58 = puVar3;
      FUN_1812a59f0(puVar3);
      FUN_1812a7230(puVar3 + 2);
      *puVar3 = juce::ModalComponentManager::vftable;
      puVar3[2] = juce::ModalComponentManager::vftable;
      puVar3[3] = 0;
      puVar3[4] = 0;
      DAT_182673c20 = puVar3;
    }
    FUN_18133b010(DAT_182673c20,1);
  }
}



############ FUN_ 180514680 size=583 ############

void FUN_180514680(longlong *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  HWND hWnd;
  undefined8 uVar3;
  char cVar4;
  int iVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  longlong lVar8;
  int *piVar9;
  float fVar10;
  undefined4 local_res10;
  undefined4 local_res20;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined1 local_38 [32];
  
  if (DAT_182673700 == 0) {
    uVar6 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar6);
  }
  FUN_18133d120(*(undefined8 *)(DAT_182673700 + 0x78));
  if (((char)param_1[0x16] != '\0') &&
     (cVar4 = (**(code **)(*param_1 + 0x68))(param_1), cVar4 == '\0')) {
    lVar8 = param_1[1];
    uVar1 = *(undefined4 *)(lVar8 + 0x2c);
    uVar2 = *(undefined4 *)(lVar8 + 0x28);
    local_48._0_4_ = 0;
    local_48._4_4_ = 0;
    for (; lVar8 != 0; lVar8 = *(longlong *)(lVar8 + 0x18)) {
      uStack_40 = CONCAT44(uVar1,uVar2);
      puVar7 = (undefined4 *)FUN_18051e4b0(local_38,lVar8,&local_48);
      local_48._0_4_ = *puVar7;
      local_48._4_4_ = puVar7[1];
      uVar2 = puVar7[2];
      uVar1 = puVar7[3];
    }
    uStack_40 = CONCAT44(uVar1,uVar2);
    if (DAT_182673700 == 0) {
      uVar6 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar6);
    }
    lVar8 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),&local_48,0);
    uVar6 = *(undefined8 *)(lVar8 + 0x14);
    uVar3 = *(undefined8 *)(lVar8 + 0x1c);
    local_48 = uVar6;
    uStack_40 = uVar3;
    fVar10 = (float)(**(code **)(*(longlong *)param_1[1] + 0x80))();
    if (fVar10 != DAT_1824c3ea4) {
      local_res10 = SUB84((double)((float)local_48._4_4_ * fVar10) + DAT_1824c4520,0);
      local_res20 = SUB84((double)((float)uStack_40._4_4_ * fVar10) + DAT_1824c4520,0);
      uVar6 = CONCAT44(local_res10,SUB84((double)((float)(int)local_48 * fVar10) + DAT_1824c4520,0))
      ;
      uVar3 = CONCAT44(local_res20,SUB84((double)((float)(int)uStack_40 * fVar10) + DAT_1824c4520,0)
                      );
    }
    uStack_40 = uVar3;
    local_48 = uVar6;
    hWnd = (HWND)param_1[0x11];
    FUN_1812c75b0();
    if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
      cVar4 = FUN_1812c7510();
    }
    else {
      uVar6 = (*DAT_182678f08)(hWnd);
      iVar5 = (*DAT_182678ec8)(uVar6);
      cVar4 = iVar5 == 2;
    }
    if (cVar4 != '\0') {
      piVar9 = (int *)FUN_1812c7190(local_38,&local_48,hWnd);
      local_48._0_4_ = *piVar9;
      local_48._4_4_ = piVar9[1];
      uStack_40._0_4_ = piVar9[2];
      uStack_40._4_4_ = piVar9[3];
    }
    SetWindowPos(hWnd,(HWND)0x0,(int)local_48,local_48._4_4_,(int)uStack_40,uStack_40._4_4_,0x614);
  }
  return;
}



############ FUN_ 18133d120 size=411 ############

void FUN_18133d120(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  void *_Memory;
  char cVar2;
  undefined8 uVar3;
  void *pvVar4;
  longlong lVar5;
  longlong *plVar6;
  uint uVar7;
  longlong lVar8;
  
  _Memory = (void *)*param_1;
  *param_1 = 0;
  lVar5 = param_1[1];
  *(undefined4 *)(param_1 + 1) = 0;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
  if (DAT_182673700 == 0) {
    uVar3 = FUN_1811316e0(0x130,param_2,param_3,param_4,0xfffffffffffffffe,_Memory,(int)lVar5);
    DAT_182673700 = FUN_18133c6c0(uVar3);
  }
  FUN_1812c53e0(param_1,*(undefined4 *)(DAT_182673700 + 0xc0));
  if (iVar1 == *(int *)((longlong)param_1 + 0xc)) {
    lVar5 = *param_1;
    lVar8 = (longlong)*(int *)((longlong)param_1 + 0xc) * 0x40 + lVar5;
    pvVar4 = _Memory;
    if (lVar5 != lVar8) {
      do {
        cVar2 = FUN_18133d090(pvVar4);
        pvVar4 = (void *)((longlong)pvVar4 + 0x40);
        if (cVar2 == '\0') goto LAB_18133d1e1;
        lVar5 = lVar5 + 0x40;
      } while (lVar5 != lVar8);
    }
  }
  else {
LAB_18133d1e1:
    if (DAT_182673700 == 0) {
      uVar3 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar3);
    }
    uVar7 = *(int *)(DAT_182673700 + 0x74) - 1;
    lVar8 = (longlong)(int)uVar7;
    lVar5 = DAT_182673700;
    if (-1 < (int)uVar7) {
      do {
        if (lVar5 == 0) {
          uVar3 = FUN_1811316e0(0x130);
          lVar5 = FUN_18133c6c0(uVar3);
          DAT_182673700 = lVar5;
        }
        if (uVar7 < *(uint *)(lVar5 + 0x74)) {
          plVar6 = *(longlong **)(*(longlong *)(lVar5 + 0x68) + lVar8 * 8);
        }
        else {
          plVar6 = (longlong *)0x0;
        }
        if (plVar6 != (longlong *)0x0) {
          if ((undefined **)*plVar6 == juce::HWNDComponentPeer::vftable) {
            (**(code **)(*(longlong *)plVar6[1] + 0x120))();
            FUN_1812d1d10(plVar6);
            lVar5 = DAT_182673700;
          }
          else {
            (*(code *)((undefined **)*plVar6)[0x14])(plVar6);
            lVar5 = DAT_182673700;
          }
        }
        uVar7 = uVar7 - 1;
        lVar8 = lVar8 + -1;
      } while (-1 < lVar8);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x00018133d2ad. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(_Memory);
  return;
}



############ FUN_ 1805148d0 size=69 ############

void FUN_1805148d0(void)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  FUN_18133d120(*(undefined8 *)(DAT_182673700 + 0x78));
  return;
}



############ FUN_ 180514a70 size=398 ############

float * FUN_180514a70(longlong *param_1,float *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  int *piVar5;
  short sVar6;
  char cVar7;
  undefined8 local_res8;
  undefined1 local_res20 [8];
  undefined1 local_30 [24];
  
  lVar1 = param_1[0x11];
  FUN_1812c75b0(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar7 = FUN_1812c7510();
  }
  else {
    uVar3 = (*DAT_182678f08)(lVar1);
    iVar2 = (*DAT_182678ec8)(uVar3);
    cVar7 = iVar2 == 2;
  }
  sVar6 = (short)((ulonglong)param_3 >> 0x10);
  if (cVar7 != '\0') {
    puVar4 = (undefined8 *)FUN_1812c6d70(local_30,param_1[0x11]);
    local_res8._0_4_ =
         SUB84((double)*(int *)((longlong)param_1 + 0xbc) * (double)param_1[0x23] + DAT_1824c4520,0)
    ;
    iVar2 = (int)local_res8 + (short)param_3;
    local_res8._0_4_ = SUB84((double)(int)param_1[0x17] * (double)param_1[0x23] + DAT_1824c4520,0);
    local_res8 = CONCAT44((int)((ulonglong)*puVar4 >> 0x20) + (int)local_res8 + (int)sVar6,
                          iVar2 + (int)*puVar4);
    if (DAT_182673700 == 0) {
      uVar3 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar3);
    }
    piVar5 = (int *)FUN_18051ece0(*(undefined8 *)(DAT_182673700 + 0x78),local_res20,local_res8,0);
    (**(code **)(*param_1 + 0x58))(param_1,param_2,CONCAT44((float)piVar5[1],(float)*piVar5));
    return param_2;
  }
  *param_2 = (float)(int)(short)param_3;
  param_2[1] = (float)(int)sVar6;
  return param_2;
}



############ FUN_ 180515c40 size=227 ############

undefined8 FUN_180515c40(longlong param_1)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong *plVar6;
  longlong *plVar7;
  
  cVar2 = FUN_181343030(*(undefined8 *)(param_1 + 8));
  if (cVar2 == '\0') {
    return 0;
  }
  plVar7 = (longlong *)0x0;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar4);
    FUN_1812a7230(puVar4 + 2);
    *puVar4 = juce::ModalComponentManager::vftable;
    puVar4[2] = juce::ModalComponentManager::vftable;
    puVar4[3] = 0;
    puVar4[4] = 0;
    DAT_182673c20 = puVar4;
  }
  iVar3 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
  lVar5 = (longlong)iVar3;
  if (-1 < iVar3) {
    plVar6 = plVar7;
    do {
      lVar1 = *(longlong *)(DAT_182673c20[3] + lVar5 * 8);
      if ((*(char *)(lVar1 + 0x5c) != '\0') &&
         (iVar3 = (int)plVar6, plVar6 = (longlong *)(ulonglong)(iVar3 + 1), iVar3 == 0)) {
        plVar7 = *(longlong **)(lVar1 + 0x40);
        break;
      }
      lVar5 = lVar5 + -1;
    } while (-1 < lVar5);
  }
  if (plVar7 != (longlong *)0x0) {
    (**(code **)(*plVar7 + 0x140))(plVar7);
  }
  return 1;
}



############ FUN_ 1805165e0 size=177 ############

undefined8 * FUN_1805165e0(undefined8 *param_1,ulonglong param_2)

{
  ushort uVar1;
  HINSTANCE hInstance;
  
  *param_1 = juce::HWNDComponentPeer::WindowClassHolder::vftable;
  if (DAT_182673700 == 0) {
    FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0();
  }
  if (*(int *)(DAT_182673700 + 0x74) == 0) {
    uVar1 = *(ushort *)(param_1 + 1);
    hInstance = (HINSTANCE)FUN_181249ad0();
    UnregisterClassW((LPCWSTR)(ulonglong)uVar1,hInstance);
  }
  if (DAT_182673bd8 == param_1) {
    DAT_182673bd8 = (undefined8 *)0x0;
  }
  FUN_1812a7170(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805169f0 size=106 ############

undefined8 FUN_1805169f0(longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  if (param_2 == (undefined8 *)0x0) {
    return 0x80004003;
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  uVar1 = *(undefined8 *)(param_1 + 0x10);
  *(undefined4 *)(puVar2 + 3) = 0;
  *(undefined4 *)(puVar2 + 1) = 1;
  *puVar2 = juce::DragAndDropHelpers::JuceEnumFormatEtc::vftable;
  puVar2[2] = uVar1;
  *(undefined4 *)(puVar2 + 3) = *(undefined4 *)(param_1 + 0x18);
  *param_2 = puVar2;
  return 0;
}



############ FUN_ 180516c90 size=126 ############

undefined8 FUN_180516c90(longlong param_1,int param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  if (param_3 == (undefined8 *)0x0) {
    return 0x80004003;
  }
  if (param_2 == 1) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x20);
    uVar1 = *(undefined8 *)(param_1 + 0x10);
    *(undefined4 *)(puVar2 + 1) = 1;
    *puVar2 = juce::DragAndDropHelpers::JuceEnumFormatEtc::vftable;
    puVar2[2] = uVar1;
    *(undefined4 *)(puVar2 + 3) = 0;
    *param_3 = puVar2;
    return 0;
  }
  *param_3 = 0;
  return 0x80004001;
}



############ FUN_ 180516e80 size=329 ############

undefined8 FUN_180516e80(longlong param_1)

{
  LPDATAOBJECT pIVar1;
  LPDROPSOURCE pIVar2;
  LPDROPSOURCE pDropSource;
  LPDATAOBJECT pDataObj;
  DWORD local_res8 [2];
  LPDATAOBJECT local_res10;
  undefined1 local_60 [56];
  undefined8 local_28;
  
  OleInitialize((LPVOID)0x0);
  pDropSource = (LPDROPSOURCE)FUN_1811316e0(0x10);
  *(undefined4 *)&pDropSource[1].lpVtbl = 1;
  pDropSource->lpVtbl = (IDropSourceVtbl *)juce::DragAndDropHelpers::JuceDropSource::vftable;
  local_res10 = (LPDATAOBJECT)pDropSource;
  pDataObj = (LPDATAOBJECT)FUN_1811316e0(0x20);
  *(undefined4 *)&pDataObj[1].lpVtbl = 1;
  pDataObj->lpVtbl = (IDataObjectVtbl *)juce::DragAndDropHelpers::JuceDataObject::vftable;
  pDataObj[2].lpVtbl = (IDataObjectVtbl *)(param_1 + 0x60);
  pDataObj[3].lpVtbl = (IDataObjectVtbl *)(param_1 + 0x80);
  local_res10 = pDataObj;
  DoDragDrop(pDataObj,pDropSource,*(DWORD *)(param_1 + 0x98),local_res8);
  if (pDataObj->lpVtbl == (IDataObjectVtbl *)juce::DragAndDropHelpers::JuceDataObject::vftable) {
    pIVar1 = pDataObj + 1;
    *(int *)&pIVar1->lpVtbl = *(int *)&pIVar1->lpVtbl + -1;
    if (*(int *)&pIVar1->lpVtbl == 0) {
      (*(code *)juce::DragAndDropHelpers::JuceDataObject::vftable[0xc])(pDataObj,1);
    }
  }
  else {
    (*pDataObj->lpVtbl->Release)(pDataObj);
  }
  if (pDropSource->lpVtbl == (IDropSourceVtbl *)juce::DragAndDropHelpers::JuceDropSource::vftable) {
    pIVar2 = pDropSource + 1;
    *(int *)&pIVar2->lpVtbl = *(int *)&pIVar2->lpVtbl + -1;
    if (*(int *)&pIVar2->lpVtbl == 0) {
      (*(code *)juce::DragAndDropHelpers::JuceDropSource::vftable[5])(pDropSource,1);
    }
  }
  else {
    (*pDropSource->lpVtbl->Release)(pDropSource);
  }
  OleUninitialize();
  if (*(longlong *)(param_1 + 0xd8) != 0) {
    local_res10 = (LPDATAOBJECT)local_60;
    local_28 = 0;
    FUN_180488560(local_60,param_1 + 0xa0);
    FUN_1812a7460(local_60);
  }
  return 0;
}



############ FUN_ 180518790 size=731 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180518790(longlong param_1,HWND param_2)

{
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  double dVar2;
  int cy;
  DWORD DVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  int iVar10;
  int iVar11;
  undefined1 auStackY_188 [32];
  undefined8 *local_148;
  double local_140;
  int local_138;
  int iStack_134;
  int iStack_130;
  int iStack_12c;
  undefined8 *local_120;
  tagRECT local_118;
  double local_108;
  HWND local_100;
  undefined **local_f8 [2];
  tagRECT local_e8;
  double local_d8;
  HWND local_d0;
  undefined ***local_c0;
  undefined8 local_b8;
  LPCRITICAL_SECTION local_b0;
  undefined1 local_a8 [8];
  undefined8 uStack_a0;
  tagRECT local_70;
  tagRECT local_60;
  ulonglong local_50;
  
  local_b8 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStackY_188;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x300);
  local_b0 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  uVar4 = FUN_180518400();
  plVar5 = (longlong *)FUN_18051c1b0(uVar4,param_2);
  *plVar5 = param_1;
  if (*(int *)(param_1 + 0x350) == 0) {
    LOCK();
    *(HWND *)(param_1 + 0x348) = param_2;
    UNLOCK();
    if (*(longlong *)(param_1 + 0x238) != 0) {
      FUN_1804de690(&local_148);
      GetWindowRect(param_2,&local_70);
      GetClientRect(param_2,&local_60);
      local_138 = local_70.left;
      iStack_134 = local_70.top;
      iVar10 = local_70.right - local_70.left;
      iVar11 = local_70.bottom - local_70.top;
      uStack_a0 = CONCAT44(iVar11,iVar10);
      iStack_130 = iVar10;
      iStack_12c = iVar11;
      if (DAT_182673700 == 0) {
        local_140 = (double)FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_140);
      }
      lVar6 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),local_a8,1);
      local_120 = local_148;
      dVar2 = *(double *)(lVar6 + 0x30);
      if (local_148 == (undefined8 *)0x0) {
        lVar6 = 0;
      }
      else {
        lVar6 = local_148[2];
      }
      local_140 = (double)*(int *)(lVar6 + 0x28) * dVar2 + DAT_1824c4520;
      cy = 0x96;
      if (0x96 < iVar11) {
        cy = iVar11;
      }
      iVar11 = 0x96;
      if (0x96 < iVar10) {
        iVar11 = iVar10;
      }
      SetWindowPos(param_2,(HWND)0x0,local_70.left,local_70.top,iVar11 + local_140._0_4_,cy,0x214);
      puVar9 = local_120;
      if (local_120 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_120 + 1) = *(int *)(local_120 + 1) + 1;
        UNLOCK();
        puVar9 = local_148;
      }
      local_118.left = local_60.left;
      local_118.top = local_60.top;
      local_118.right = local_60.right;
      local_118.bottom = local_60.bottom;
      local_108 = dVar2;
      local_100 = param_2;
      lVar6 = FUN_1812a7550();
      DVar3 = GetCurrentThreadId();
      if ((ulonglong)DVar3 == *(ulonglong *)(lVar6 + 0x10)) {
        FUN_180518a90(&local_120);
      }
      else {
        puVar7 = (undefined8 *)0x0;
        if (puVar9 != (undefined8 *)0x0) {
          LOCK();
          *(int *)(puVar9 + 1) = *(int *)(puVar9 + 1) + 1;
          UNLOCK();
          puVar7 = local_148;
        }
        local_f8[0] = std::_Func_impl_no_alloc<<lambda_c5afe99d8756d97ba8c5df7bd394e45f>,void>::
                      vftable;
        puVar8 = (undefined8 *)0x0;
        if (puVar7 != (undefined8 *)0x0) {
          LOCK();
          *(int *)(puVar7 + 1) = *(int *)(puVar7 + 1) + 1;
          UNLOCK();
          puVar8 = local_148;
        }
        local_e8.left = local_118.left;
        local_e8.top = local_118.top;
        local_e8.right = local_118.right;
        local_e8.bottom = local_118.bottom;
        local_c0 = local_f8;
        puVar9 = (undefined8 *)0x0;
        local_d8 = dVar2;
        local_d0 = param_2;
        if (puVar8 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar8 + 1);
          iVar10 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          puVar9 = local_148;
          if (iVar10 == 1) {
            (**(code **)*local_148)(local_148,1);
          }
        }
        FUN_1812a7460(local_f8);
      }
      if (local_120 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_120 + 1);
        iVar10 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        puVar9 = local_148;
        if (iVar10 == 1) {
          (**(code **)*local_120)(local_120,1);
          puVar9 = local_148;
        }
      }
      if (puVar9 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar9 + 1);
        iVar10 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar10 == 1) {
          (**(code **)*local_148)(local_148,1);
        }
      }
    }
  }
  else {
    EndDialog(param_2,0);
  }
  LeaveCriticalSection(lpCriticalSection);
}



############ FUN_ 18051c1b0 size=546 ############

ulonglong * FUN_18051c1b0(longlong param_1,ulonglong param_2)

{
  longlong *plVar1;
  void *_Memory;
  uint uVar2;
  int iVar3;
  ulonglong *puVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  ulonglong *puVar7;
  longlong lVar8;
  undefined4 uVar9;
  longlong lVar10;
  undefined8 *puVar11;
  undefined8 *local_38;
  undefined8 local_30;
  
  plVar1 = (longlong *)(param_1 + 8);
  iVar3 = (int)(param_2 % (ulonglong)(longlong)*(int *)(param_1 + 0x14));
  puVar7 = *(ulonglong **)((longlong)iVar3 * 8 + *plVar1);
  for (puVar4 = puVar7; puVar4 != (ulonglong *)0x0; puVar4 = (ulonglong *)puVar4[2]) {
    if (*puVar4 == param_2) {
      return puVar4 + 1;
    }
  }
  puVar4 = (ulonglong *)FUN_1811316e0(0x18);
  puVar4[1] = 0;
  *puVar4 = param_2;
  puVar4[2] = (ulonglong)puVar7;
  if (-1 < iVar3) {
    if (iVar3 < *(int *)(param_1 + 0x14)) {
      *(ulonglong **)((longlong)iVar3 * 8 + *plVar1) = puVar4;
    }
    else {
      FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
      iVar3 = *(int *)(param_1 + 0x14);
      *(int *)(param_1 + 0x14) = iVar3 + 1;
      *(ulonglong **)(*plVar1 + (longlong)iVar3 * 8) = puVar4;
    }
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  if ((*(int *)(param_1 + 0x14) * 3) / 2 < *(int *)(param_1 + 0x18)) {
    puVar5 = (undefined8 *)0x0;
    uVar2 = *(int *)(param_1 + 0x14) * 2;
    uVar6 = (ulonglong)uVar2;
    local_38 = (undefined8 *)0x0;
    local_30 = 0;
    puVar11 = puVar5;
    if (0 < (int)uVar2) {
      FUN_18047e060(&local_38);
      puVar11 = local_38;
      iVar3 = local_30._4_4_;
      if (local_30._4_4_ != 0) {
        memmove(local_38 + (int)uVar2,local_38,(longlong)local_30._4_4_ << 3);
      }
      puVar5 = puVar11;
      if (0 < (int)uVar2) {
        do {
          *puVar5 = 0;
          uVar6 = uVar6 - 1;
          puVar5 = puVar5 + 1;
        } while (uVar6 != 0);
      }
      puVar5 = (undefined8 *)(ulonglong)(iVar3 + uVar2);
      local_30 = CONCAT44(iVar3 + uVar2,(undefined4)local_30);
    }
    uVar9 = SUB84(puVar5,0);
    iVar3 = *(int *)(param_1 + 0x14) + -1;
    lVar8 = (longlong)iVar3;
    if (-1 < iVar3) {
      do {
        puVar7 = *(ulonglong **)(*plVar1 + lVar8 * 8);
        if (puVar7 != (ulonglong *)0x0) {
          do {
            puVar4 = (ulonglong *)puVar7[2];
            iVar3 = (int)(*puVar7 % (ulonglong)(longlong)(int)uVar2);
            puVar7[2] = puVar11[iVar3];
            if (-1 < iVar3) {
              if (iVar3 < (int)puVar5) {
                puVar11[iVar3] = puVar7;
              }
              else {
                FUN_18047e060(&local_38);
                lVar10 = (longlong)local_30._4_4_;
                puVar5 = (undefined8 *)(ulonglong)(local_30._4_4_ + 1U);
                local_30 = CONCAT44(local_30._4_4_ + 1U,(undefined4)local_30);
                local_38[lVar10] = puVar7;
                puVar11 = local_38;
              }
            }
            puVar7 = puVar4;
          } while (puVar4 != (ulonglong *)0x0);
        }
        uVar9 = SUB84(puVar5,0);
        lVar8 = lVar8 + -1;
      } while (-1 < lVar8);
    }
    _Memory = (void *)*plVar1;
    *plVar1 = (longlong)puVar11;
    *(undefined4 *)(param_1 + 0x10) = (undefined4)local_30;
    *(undefined4 *)(param_1 + 0x14) = uVar9;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return puVar4 + 1;
}



############ FUN_ 180519350 size=520 ############

undefined8 *
FUN_180519350(undefined8 *param_1,longlong param_2,undefined4 param_3,ulonglong param_4)

{
  undefined1 auVar1 [16];
  char *pcVar2;
  longlong lVar3;
  char *pcVar4;
  char *pcVar5;
  ulonglong local_res20;
  ulonglong uVar6;
  longlong lVar7;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::FileChooser::Native::vftable;
  param_1[0x16] = juce::FileChooser::Native::vftable;
  param_1[0x17] = param_2;
  local_res20 = param_4;
  local_res20 = FUN_1811316e0(0x358);
  lVar7 = param_2 + 8;
  uVar6 = param_2 + 0x10;
  lVar3 = FUN_1805170d0(local_res20,param_1,param_3);
  param_1[0x18] = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  if (DAT_182673700 == 0) {
    local_res20 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res20);
  }
  pcVar2 = (char *)**(undefined8 **)(DAT_182673700 + 0x78);
  for (pcVar4 = pcVar2;
      (pcVar5 = pcVar2,
      pcVar4 != pcVar2 + (longlong)*(int *)((longlong)*(undefined8 **)(DAT_182673700 + 0x78) + 0xc)
                         * 0x40 && (pcVar5 = pcVar4, *pcVar4 == '\0')); pcVar4 = pcVar4 + 0x40) {
  }
  auVar1 = *(undefined1 (*) [16])(pcVar5 + 0x14);
  FUN_18134bfe0(param_1,((int)((auVar1._8_4_ >> 0x1f & 3U) + auVar1._8_4_) >> 2) + auVar1._0_4_,
                auVar1._4_4_ + ((int)(auVar1._12_4_ + (auVar1._12_4_ >> 0x1f & 3U)) >> 2),0,
                uVar6 & 0xffffffff00000000,param_2,lVar7);
  FUN_18134bd50(param_1,1);
  local_res20 = local_res20 & 0xffffffffffffff00;
  EnumWindows(FUN_1812c6400,(LPARAM)&local_res20);
  FUN_18134b0f0(param_1,local_res20 & 0xff);
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,0,0);
  return param_1;
}



############ FUN_ 18051ec70 size=103 ############

undefined8
FUN_18051ec70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130,param_2,param_3,param_4,0xfffffffffffffffe);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  FUN_18051ffe0(param_1,*(undefined4 *)(DAT_182673700 + 0xc0),param_2);
  return param_1;
}



############ FUN_ 180521630 size=364 ############

void FUN_180521630(longlong param_1)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined8 uStack_a0;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined8 local_88;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  longlong local_58 [7];
  longlong *local_20;
  
  local_88 = 0xfffffffffffffffe;
  local_20 = (longlong *)0x0;
  cVar1 = *(char *)(param_1 + 0x18);
  if (*(int *)(param_1 + 0x14) != 0) {
    local_a8 = CONCAT22(local_a8._2_2_,0xf);
    uStack_a0 = 0;
    local_98 = 1;
    uStack_94 = 0xffffffff;
    uStack_90 = 1;
    uVar4 = 1;
    local_c8 = 1;
    local_b8 = 0;
    uStack_c0 = FUN_1812c4b40();
    if ((DAT_182673b10 == (undefined8 *)0x0) && (DAT_18267ab71 == '\0')) {
      DAT_18267ab71 = 1;
      puVar2 = (undefined8 *)FUN_1811316e0(0x100);
      memset(puVar2,0,0x100);
      FUN_1812a7230(puVar2);
      *puVar2 = juce::DragAndDropHelpers::ThreadPoolHolder::vftable;
      FUN_18122abb0(puVar2 + 1,1);
      DAT_18267ab71 = '\0';
      DAT_182673b10 = puVar2;
    }
    puVar2 = DAT_182673b10;
    uVar3 = FUN_1811316e0(0xe0);
    local_78 = CONCAT44(uStack_c4,local_c8);
    uStack_70 = uStack_c0;
    local_68 = local_b8;
    local_c8 = local_a8;
    uStack_c4 = uStack_a4;
    uStack_c0 = uStack_a0;
    local_b8 = CONCAT44(uStack_94,local_98);
    uStack_b0 = uStack_90;
    uStack_ac = uStack_8c;
    if (cVar1 != '\0') {
      uVar4 = 3;
    }
    uVar3 = FUN_180516d60(uVar3,&local_c8,&local_78,uVar4,local_58);
    FUN_18122a750(puVar2 + 1,uVar3,1);
    if (local_20 != (longlong *)0x0) {
      (**(code **)(*local_20 + 0x20))
                (local_20,CONCAT71((int7)((ulonglong)local_58 >> 8),local_20 != local_58));
    }
  }
  return;
}



############ FUN_ 1812c4770 size=506 ############

undefined8 FUN_1812c4770(undefined8 *param_1,undefined8 param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  HGLOBAL hMem;
  LPVOID pvVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  undefined4 local_78;
  undefined4 uStack_74;
  HGLOBAL pvStack_70;
  undefined8 local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined8 local_58;
  HGLOBAL pvStack_50;
  undefined8 local_48;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined8 uStack_30;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  if (*(char *)*param_1 == '\0') {
    plVar1 = (longlong *)param_3[7];
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_3);
      param_3[7] = 0;
    }
    uVar5 = 0;
  }
  else {
    uStack_30 = 0;
    local_28 = 1;
    uStack_24 = 0xffffffff;
    uStack_20 = 1;
    local_78 = 1;
    local_68 = 0;
    lVar2 = FUN_18049d580();
    hMem = GlobalAlloc(0x42,lVar2 + 2U);
    pvStack_70 = hMem;
    pvVar3 = GlobalLock(hMem);
    FUN_18122f5a0(param_1,pvVar3,lVar2 + 2U);
    local_38 = CONCAT22(local_38._2_2_,0xd);
    GlobalUnlock(hMem);
    if ((DAT_182673b10 == (undefined8 *)0x0) && (DAT_18267ab71 == '\0')) {
      DAT_18267ab71 = 1;
      puVar4 = (undefined8 *)FUN_1811316e0(0x100);
      memset(puVar4,0,0x100);
      FUN_1812a7230(puVar4);
      *puVar4 = juce::DragAndDropHelpers::ThreadPoolHolder::vftable;
      FUN_18122abb0(puVar4 + 1,1);
      DAT_18267ab71 = '\0';
      DAT_182673b10 = puVar4;
    }
    puVar4 = DAT_182673b10;
    uVar5 = FUN_1811316e0(0xe0);
    local_58 = CONCAT44(uStack_74,local_78);
    pvStack_50 = pvStack_70;
    local_48 = local_68;
    local_78 = local_38;
    uStack_74 = uStack_34;
    pvStack_70 = (HGLOBAL)uStack_30;
    local_68 = CONCAT44(uStack_24,local_28);
    uStack_60 = uStack_20;
    uStack_5c = uStack_1c;
    uVar5 = FUN_180516d60(uVar5,&local_78,&local_58,3,param_3);
    FUN_18122a750(puVar4 + 1,uVar5,1);
    plVar1 = (longlong *)param_3[7];
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_3);
      param_3[7] = 0;
    }
    uVar5 = 1;
  }
  return uVar5;
}



############ FUN_ 180522350 size=222 ############

undefined8 * FUN_180522350(longlong *param_1)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x50);
  *puVar2 = std::_Func_impl_no_alloc<<lambda_2199c94359b7f117dceb95c34a5ba035>,void>::vftable;
  lVar1 = *param_1;
  puVar2[1] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  puVar2[2] = 0;
  puVar2[3] = 0;
  FUN_18048c4c0(puVar2 + 2,param_1[1],*(undefined4 *)((longlong)param_1 + 0x14));
  lVar1 = param_1[3];
  puVar2[4] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  puVar2[5] = param_1[4];
  puVar2[6] = 0;
  puVar2[7] = 0;
  FUN_18048c4c0(puVar2 + 6,param_1[5],*(undefined4 *)((longlong)param_1 + 0x34));
  lVar1 = param_1[7];
  puVar2[8] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  puVar2[9] = param_1[8];
  return puVar2;
}



############ FUN_ 181329c90 size=223 ############

longlong FUN_181329c90(longlong param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  FUN_18051c520(param_1 + 0x20);
  lVar4 = 0;
  if (*(int *)(param_1 + 0x28) == 0) {
    *(undefined4 *)(param_1 + 0x28) = 0;
    if (*(longlong *)(param_1 + 0x78) != 0) {
      puVar1 = *(undefined8 **)(param_1 + 0x78);
      *(undefined8 *)(param_1 + 0x78) = 0;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
    }
    if ((*(char *)(param_1 + 0x30) == '\0') ||
       ((((param_2 & 0xffffffff) >> 2 & 1) != 0 && ((param_2 >> 3 & 1) != 0)))) {
      uVar3 = FUN_1811316e0(0xc08);
      lVar4 = FUN_1804f36a0(uVar3,param_1,param_2 & 0xffffffff,param_4,uVar5);
    }
    else {
      uVar5 = FUN_1811316e0(200);
      lVar2 = FUN_180519350(uVar5,param_1,param_2 & 0xffffffff);
      if (lVar2 != 0) {
        lVar4 = lVar2 + 0xb0;
      }
    }
    return lVar4;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x20));
}



############ FUN_ 1805278e0 size=248 ############

undefined8 FUN_1805278e0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong local_res8 [2];
  longlong local_res18;
  longlong local_res20;
  ulonglong in_stack_ffffffffffffffb8;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if (((*(byte *)(param_1 + 0x38) & 1) == 0) && ((*(byte *)(param_1 + 0x38) & 2) == 0)) {
    lVar1 = __RTDynamicCast(param_2,0,&juce::UndoableAction::RTTI_Type_Descriptor,
                            &juce::ValueTree::SharedObject::SetPropertyAction::RTTI_Type_Descriptor,
                            in_stack_ffffffffffffffb8 & 0xffffffff00000000);
    if ((lVar1 != 0) && (*(longlong *)(lVar1 + 8) == *(longlong *)(param_1 + 8))) {
      local_res18 = *(longlong *)(param_1 + 0x10);
      local_res20 = *(longlong *)(lVar1 + 0x10);
      if ((local_res20 == local_res18) && ((*(byte *)(lVar1 + 0x38) & 3) == 0)) {
        uVar2 = FUN_1811316e0(0x48);
        local_res8[0] = *(longlong *)(param_1 + 8);
        LOCK();
        *(int *)(local_res8[0] + 8) = *(int *)(local_res8[0] + 8) + 1;
        UNLOCK();
        uVar3 = FUN_180527710(uVar2,local_res8,param_1 + 0x10,lVar1 + 0x18,param_1 + 0x28,0,0,0,
                              uVar3,uVar2);
        return uVar3;
      }
    }
  }
  return 0;
}



############ FUN_ 180533980 size=505 ############

void FUN_180533980(longlong param_1)

{
  undefined8 *puVar1;
  int iVar2;
  int iVar3;
  undefined8 *puVar4;
  void *pvVar5;
  uint uVar6;
  longlong lVar7;
  
  lVar7 = 8;
  do {
    puVar4 = (undefined8 *)FUN_1811316e0(0xe0);
    *puVar4 = AudioProcessingModule<float,2>::vftable;
    puVar4[1] = 0;
    *(undefined4 *)(puVar4 + 2) = 0x3f800000;
    *(undefined8 *)((longlong)puVar4 + 0x24) = 0;
    *(undefined4 *)((longlong)puVar4 + 0x2c) = 0x3f800000;
    *(undefined4 *)(puVar4 + 6) = 2;
    *(undefined4 *)((longlong)puVar4 + 0x44) = 1;
    puVar4[9] = 0;
    puVar4[10] = 0;
    *(undefined4 *)(puVar4 + 0xb) = 0x3f800000;
    *(undefined4 *)((longlong)puVar4 + 0x1c) = 0x3f800000;
    *(undefined4 *)((longlong)puVar4 + 0x14) = 0x3f800000;
    *(undefined4 *)(puVar4 + 4) = 0x3f800000;
    *(undefined4 *)(puVar4 + 3) = 0x3f800000;
    puVar1 = puVar4 + 0xc;
    *puVar1 = juce::ChangeBroadcaster::vftable;
    FUN_1812a59f0(puVar4 + 0xd);
    puVar4[0xd] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
    puVar4[0x10] = 0;
    puVar4[0x11] = 0;
    *(undefined1 *)(puVar4 + 0x12) = 0;
    puVar4[0xf] = puVar1;
    *puVar4 = IIRFilterExtended<float,2>::vftable;
    *puVar1 = IIRFilterExtended<float,2>::vftable;
    puVar4[0x17] = 0;
    puVar4[0x18] = 0;
    puVar4[0x19] = 0;
    puVar4[0x1a] = 0;
    puVar4[0x1b] = 0;
    puVar1 = puVar4 + 0x13;
    if (((ulonglong)puVar1 & 0xf) == 0) {
      *(undefined4 *)puVar1 = 0;
      *(undefined4 *)((longlong)puVar4 + 0x9c) = 0;
      *(undefined4 *)(puVar4 + 0x14) = 0;
      *(undefined4 *)((longlong)puVar4 + 0xa4) = 0;
    }
    else {
      *(undefined4 *)puVar1 = 0;
      *(undefined4 *)((longlong)puVar4 + 0x9c) = 0;
      *(undefined4 *)(puVar4 + 0x14) = 0;
      *(undefined4 *)((longlong)puVar4 + 0xa4) = 0;
    }
    puVar1 = puVar4 + 0x15;
    if (((ulonglong)puVar1 & 0xf) == 0) {
      *(undefined4 *)puVar1 = 0;
      *(undefined4 *)((longlong)puVar4 + 0xac) = 0;
      *(undefined4 *)(puVar4 + 0x16) = 0;
      *(undefined4 *)((longlong)puVar4 + 0xb4) = 0;
    }
    else {
      *(undefined4 *)puVar1 = 0;
      *(undefined4 *)((longlong)puVar4 + 0xac) = 0;
      *(undefined4 *)(puVar4 + 0x16) = 0;
      *(undefined4 *)((longlong)puVar4 + 0xb4) = 0;
    }
    iVar2 = *(int *)(param_1 + 0x7c);
    iVar3 = iVar2 + 1;
    if ((int)*(uint *)(param_1 + 0x78) < iVar3) {
      if (iVar3 < 0) {
        iVar3 = iVar2 + 2;
      }
      uVar6 = iVar2 + 9 + (iVar3 >> 1) & 0xfffffff8;
      if (*(uint *)(param_1 + 0x78) != uVar6) {
        pvVar5 = *(void **)(param_1 + 0x70);
        if ((int)uVar6 < 1) {
                    /* WARNING: Subroutine does not return */
          free(pvVar5);
        }
        if (pvVar5 == (void *)0x0) {
          pvVar5 = malloc((longlong)(int)uVar6 * 8);
          *(void **)(param_1 + 0x70) = pvVar5;
        }
        else {
          pvVar5 = realloc(pvVar5,(longlong)(int)uVar6 * 8);
          *(void **)(param_1 + 0x70) = pvVar5;
        }
      }
      *(uint *)(param_1 + 0x78) = uVar6;
    }
    iVar3 = *(int *)(param_1 + 0x7c);
    *(int *)(param_1 + 0x7c) = iVar3 + 1;
    *(undefined8 **)(*(longlong *)(param_1 + 0x70) + (longlong)iVar3 * 8) = puVar4;
    lVar7 = lVar7 + -1;
  } while (lVar7 != 0);
  return;
}



############ FUN_ 180533b80 size=504 ############

void FUN_180533b80(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  float fVar3;
  double dVar4;
  void *_Dst;
  int iVar5;
  longlong lVar6;
  longlong lVar7;
  double dVar8;
  
  plVar1 = (longlong *)(param_1 + 0x60);
  FUN_180533240(plVar1);
  lVar7 = 0;
  if (*(int *)(param_1 + 0x68) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar1);
  }
  *(undefined4 *)(param_1 + 0x68) = 0;
  dVar4 = DAT_1824c4390;
  dVar8 = DAT_1824c41e8;
  fVar3 = DAT_1824c3cc8;
  _Dst = (void *)FUN_1811316e0(0x828);
  memset(_Dst,0,0x828);
  _eh_vector_constructor_iterator_(_Dst,0x80,0x10,FUN_180534680,_guard_check_icall);
  *(undefined4 *)((longlong)_Dst + 0x800) = 8;
  *(undefined8 *)((longlong)_Dst + 0x804) = 0x447a0000;
  *(undefined4 *)((longlong)_Dst + 0x80c) = 0x3f34fdf4;
  *(undefined1 *)((longlong)_Dst + 0x810) = 0;
  *(undefined4 *)((longlong)_Dst + 0x814) = 1;
  *(undefined8 *)((longlong)_Dst + 0x818) = 0;
  *(undefined8 *)((longlong)_Dst + 0x820) = 0;
  iVar2 = *(int *)(param_1 + 0x6c);
  iVar5 = iVar2 + 1;
  if (*(int *)(param_1 + 0x68) < iVar5) {
    if (iVar5 < 0) {
      iVar5 = iVar2 + 2;
    }
    FUN_18047cb30(plVar1,iVar2 + 9 + (iVar5 >> 1) & 0xfffffff8);
  }
  iVar5 = *(int *)(param_1 + 0x6c);
  *(int *)(param_1 + 0x6c) = iVar5 + 1;
  *(void **)(*plVar1 + (longlong)iVar5 * 8) = _Dst;
  dVar8 = pow((double)(fVar3 * 1.0),dVar8);
  lVar6 = lVar7;
  if (*(int *)(param_1 + 0x6c) != 0) {
    lVar6 = *(longlong *)*plVar1;
  }
  *(float *)(lVar6 + 0x804) = (float)(dVar8 * dVar4);
  lVar6 = lVar7;
  if (*(int *)(param_1 + 0x6c) != 0) {
    lVar6 = *(longlong *)*plVar1;
  }
  *(undefined4 *)(lVar6 + 0x80c) = 0x3f333333;
  if (*(int *)(param_1 + 0x6c) != 0) {
    lVar7 = *(longlong *)*plVar1;
  }
  *(undefined4 *)(lVar7 + 0x808) = 0;
  iVar5 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar5 != 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0();
}



############ FUN_ 1812c06e0 size=392 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001812c07e6) */
/* WARNING: Removing unreachable block (ram,0x0001812c0813) */
/* WARNING: Removing unreachable block (ram,0x0001812c081a) */
/* WARNING: Removing unreachable block (ram,0x0001812c0824) */
/* WARNING: Removing unreachable block (ram,0x0001812c083b) */

void FUN_1812c06e0(undefined8 param_1,undefined8 param_2,longlong *param_3)

{
  longlong lVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  void **ppvVar7;
  bool bVar8;
  undefined1 auStack_b8 [32];
  undefined8 *local_98;
  void *local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  void *local_68 [5];
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_98 = (undefined8 *)((ulonglong)local_98 & 0xffffffff00000000);
  puVar6 = (undefined8 *)FUN_1811316e0(0x90);
  lVar5 = param_3[6];
  *puVar6 = param_1;
  lVar1 = *param_3;
  puVar6[1] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  bVar8 = (char)lVar5 == '\0';
  local_98 = puVar6;
  if (bVar8) {
    local_90 = (void *)0x0;
    ppvVar7 = &local_90;
    local_78 = 4;
    local_70 = 0xffffffff;
    local_88 = 0;
    local_80 = 0;
  }
  else {
    FUN_18123db10(local_68,param_3 + 1);
    ppvVar7 = local_68;
  }
  puVar6[2] = *ppvVar7;
  *ppvVar7 = (void *)0x0;
  puVar6[5] = ppvVar7[3];
  *(undefined4 *)(puVar6 + 6) = *(undefined4 *)(ppvVar7 + 4);
  *(undefined1 *)((longlong)puVar6 + 0x34) = *(undefined1 *)((longlong)ppvVar7 + 0x24);
  uVar2 = *(undefined4 *)((longlong)ppvVar7 + 0xc);
  uVar3 = *(undefined4 *)(ppvVar7 + 2);
  uVar4 = *(undefined4 *)((longlong)ppvVar7 + 0x14);
  *(undefined4 *)(puVar6 + 3) = *(undefined4 *)(ppvVar7 + 1);
  *(undefined4 *)((longlong)puVar6 + 0x1c) = uVar2;
  *(undefined4 *)(puVar6 + 4) = uVar3;
  *(undefined4 *)((longlong)puVar6 + 0x24) = uVar4;
  if (!bVar8) {
                    /* WARNING: Subroutine does not return */
    free(local_68[0]);
  }
                    /* WARNING: Subroutine does not return */
  free(local_90);
}



############ FUN_ 181352ec0 size=137 ############

undefined8 * FUN_181352ec0(undefined8 *param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x50);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::ValueTree::SharedObject::vftable;
  lVar1 = *param_2;
  puVar2[2] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  puVar2[3] = 0;
  puVar2[4] = 0;
  puVar2[5] = 0;
  puVar2[6] = 0;
  puVar2[7] = 0;
  puVar2[8] = 0;
  puVar2[9] = 0;
  *param_1 = puVar2;
  LOCK();
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  UNLOCK();
  param_1[1] = 0;
  param_1[2] = 0;
  return param_1;
}



############ FUN_ 1805c4280 size=3417 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001805c5081) */

void FUN_1805c4280(undefined8 param_1,longlong param_2,longlong param_3,longlong param_4)

{
  longlong lVar1;
  int iVar2;
  bool bVar3;
  char cVar4;
  int *piVar5;
  int *piVar6;
  undefined8 uVar7;
  int *piVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  int *piVar12;
  undefined1 auStack_cd8 [32];
  longlong local_cb8;
  char local_ca8;
  undefined1 local_ca7;
  undefined1 local_ca6;
  undefined1 local_ca5;
  undefined1 local_ca4;
  undefined1 local_ca3;
  undefined1 local_ca2;
  undefined1 local_ca1;
  longlong local_ca0;
  int *local_c98;
  undefined8 local_c90;
  undefined **local_c88;
  undefined1 local_c80;
  undefined8 local_c78;
  undefined8 uStack_c70;
  undefined8 local_c68;
  longlong lStack_c60;
  undefined1 *local_c58;
  undefined1 *puStack_c50;
  int local_c48 [2];
  undefined8 local_c40;
  undefined4 local_c38;
  undefined1 local_c34;
  longlong local_c28;
  longlong local_c20;
  char *local_c18;
  undefined4 local_c10 [2];
  undefined4 local_c08 [4];
  undefined4 local_bf8 [2];
  undefined4 local_bf0 [2];
  char *local_be8;
  int *local_be0;
  longlong local_bd8;
  longlong local_bd0;
  longlong lStack_bc8;
  longlong local_bc0;
  undefined8 local_bb8;
  undefined1 local_bb0 [8];
  longlong local_ba8;
  ulonglong local_ba0;
  longlong local_b98;
  undefined8 local_b90;
  longlong local_b88;
  char *local_b80;
  int *local_b78;
  char *local_b70;
  undefined **local_b68;
  longlong local_b60;
  longlong local_b58;
  undefined8 uStack_b50;
  longlong local_b48;
  longlong lStack_b40;
  undefined8 local_b38;
  undefined8 local_b30;
  undefined1 local_b28;
  longlong local_b18;
  longlong lStack_b10;
  undefined8 local_b08;
  undefined **local_af8;
  undefined4 local_af0;
  undefined4 local_aec;
  undefined8 local_ae8;
  undefined4 local_ae0;
  int *local_ad8;
  int *piStack_ad0;
  undefined8 local_ac8;
  undefined4 local_ac0;
  undefined1 local_abc;
  longlong local_ab0;
  char *local_aa8;
  char *local_aa0 [2];
  longlong local_a90;
  char *local_a88;
  longlong local_a80;
  char *local_a78 [6];
  undefined8 local_a48;
  undefined **local_a28;
  undefined4 local_a20;
  undefined2 local_a1c;
  undefined4 local_a18;
  undefined1 local_a14;
  undefined1 local_a10 [16];
  undefined8 local_a00;
  undefined8 local_9f8;
  undefined1 local_9f0 [16];
  undefined8 local_9e0;
  undefined8 local_9d8;
  undefined8 local_9d0;
  undefined8 local_9c8;
  undefined2 local_9c0;
  undefined1 local_9be;
  undefined1 local_9b8 [8];
  int local_9b0;
  int local_9ac;
  undefined1 local_9a8;
  undefined4 local_970;
  undefined2 local_928;
  ulonglong local_40;
  
  local_a48 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_cd8;
  piVar8 = (int *)0x0;
  *(undefined4 *)(param_4 + 8) = 0;
  puVar11 = (undefined8 *)(param_4 + 0x50);
  *(undefined8 *)(param_4 + 0x60) = 0;
  if (0xf < *(ulonglong *)(param_4 + 0x68)) {
    puVar11 = (undefined8 *)*puVar11;
  }
  *(undefined1 *)puVar11 = 0;
  *(undefined8 *)(param_3 + 0x28) = *(undefined8 *)(param_3 + 0x20);
  *(undefined8 *)(param_3 + 0x40) = *(undefined8 *)(param_3 + 0x38);
  *(undefined1 *)(param_3 + 0x88) = 0;
  puVar11 = *(undefined8 **)(param_3 + 0x78);
  local_bd8 = param_3;
  local_ca0 = param_4;
  for (puVar10 = *(undefined8 **)(param_3 + 0x70); local_ba8 = param_2, puVar10 != puVar11;
      puVar10 = puVar10 + 0x87) {
    (**(code **)*puVar10)(puVar10,0);
    param_2 = local_ba8;
  }
  *(undefined8 *)(param_3 + 0x78) = *(undefined8 *)(param_3 + 0x70);
  if (*(longlong *)(param_2 + 0x10) - *(longlong *)(param_2 + 8) != 0x20) {
    local_c98 = (int *)FUN_1811316e0(0x18);
    piVar5 = piVar8;
    if (local_c98 != (int *)0x0) {
      piVar5 = (int *)FUN_1805a48c0(local_c98,"Bad randomData size ($d).  This should be 32.");
    }
    piVar6 = (int *)FUN_1811316e0(0x18);
    local_c98 = piVar6;
    if (piVar6 != (int *)0x0) {
      FUN_1805a48c0(piVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)piVar6 = pace::PaceLocationInfoFormatter::vftable;
      piVar8 = piVar6;
    }
    local_b88 = *(longlong *)(param_2 + 0x10) - *(longlong *)(param_2 + 8);
    FUN_1805b2520(*(undefined8 *)(piVar5 + 2),&local_b88);
    local_c28 = CONCAT44(local_c28._4_4_,0xc70);
    local_b80 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(piVar8 + 2),&local_b80);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,&local_c28);
  }
  local_af8 = pace::eden::thrift::fusion::DynamicCryptoLicenseData::vftable;
  local_ae8 = 0;
  local_ad8 = (int *)0x0;
  piStack_ad0 = (int *)0x0;
  local_ac8 = 0;
  local_ac0 = 0;
  local_abc = 0;
  local_af0 = 1;
  local_aec = 1;
  FUN_1805de600(param_1,&local_af8);
  piVar5 = piStack_ad0;
  local_bd0 = 0;
  lStack_bc8 = 0;
  local_bc0 = 0;
  local_be0 = piStack_ad0;
  bVar3 = true;
  piVar6 = local_ad8;
  while( true ) {
    local_b78 = piVar6;
    if ((!bVar3) || (piVar6 == piVar5)) break;
    bVar3 = false;
    while (!bVar3) {
      FUN_1805b5490(local_9b8);
      local_9b0 = piVar6[4];
      local_9ac = piVar6[5];
      local_9a8 = (undefined1)piVar6[6];
      local_970 = local_ae0;
      local_928 = 1;
      if (local_bc0 == lStack_bc8) {
        FUN_1805b0190(&local_bd0,lStack_bc8);
      }
      else {
        FUN_1805b53c0(lStack_bc8,local_9b8);
        lStack_bc8 = lStack_bc8 + 0xa8;
      }
      FUN_1805b7ad0(local_9b8);
      bVar3 = true;
    }
    piVar6 = piVar6 + 0x3a;
  }
  lVar9 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lStack_bc8 - local_bd0),8) +
          (lStack_bc8 - local_bd0);
  if (lVar9 >> 7 != lVar9 >> 0x3f) {
    local_a28 = pace::eden::thrift::pub::FindAuthOptions::vftable;
    local_a20 = 1;
    local_a1c = 0;
    local_a14 = 0;
    local_a00 = 0;
    local_9f8 = 0xf;
    local_a10[0] = 0;
    FUN_1805a6cb0(local_a10,&DAT_181baf991,0);
    local_9e0 = 0;
    local_9d8 = 0xf;
    local_9f0[0] = 0;
    FUN_1805a6cb0(local_9f0,&DAT_181baf991,0);
    local_9c8 = 0;
    local_9c0 = 0;
    local_9be = 0;
    local_a18 = 0;
    local_9d0 = local_ae8;
    local_b18 = 0;
    lStack_b10 = 0;
    local_b08 = 0;
    FUN_1805bdb50(&local_bb8,0);
    local_b90 = 1;
    local_c98 = (int *)FUN_1806a4f70(local_bb8);
    local_ba0 = (ulonglong)local_c98;
    local_c18 = (char *)FUN_1806a35e0(local_bb8);
    local_cb8 = param_3 + 0x358;
    local_be8 = local_c18;
    FUN_18069bc20(local_bb8,&local_bd0,&local_a28,&local_b18);
    lVar9 = local_b18;
    local_b98 = local_b18;
    local_c20 = (lStack_b10 - local_b18) / 0x2f0;
    if (local_c20 == 0) {
      local_be0 = (int *)FUN_1811316e0(0x18);
      if (local_be0 != (int *)0x0) {
        FUN_1805a48c0(local_be0,"No authorized licenses found.");
      }
      piVar5 = (int *)FUN_1811316e0(0x18);
      local_be0 = piVar5;
      if (piVar5 != (int *)0x0) {
        FUN_1805a48c0(piVar5,"|__FILE__|%s|__LINE__|%d");
        *(undefined ***)piVar5 = pace::PaceLocationInfoFormatter::vftable;
        piVar8 = piVar5;
      }
      local_c90 = CONCAT44(local_c90._4_4_,0xcce);
      local_b70 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
      ;
      uVar7 = FUN_1805a21d0(*(undefined8 *)(piVar8 + 2),&local_b70);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar7,&local_c90);
    }
    local_c90 = 1;
    local_ab0 = lStack_b10;
    cVar4 = '\x01';
    while( true ) {
      if ((cVar4 == '\0') || (lVar9 == local_ab0)) {
        FUN_1805b9860(local_bb0);
        FUN_1805bc0b0(&local_b18);
        FUN_1805b8040(&local_a28);
        FUN_1805b72a0(&local_bd0);
        local_af8 = pace::eden::thrift::fusion::DynamicCryptoLicenseData::vftable;
        FUN_1805b7370(&local_ad8);
      }
      local_c28 = lVar9;
      local_ca8 = '\0';
      piVar5 = local_ad8 + 5;
      while ((piVar6 = piVar5 + -5, piVar12 = piVar8, piVar6 != piStack_ad0 &&
             ((piVar5[-1] != *(int *)(*(longlong *)(lVar9 + 8) + 8) ||
              ((iVar2 = *(int *)(*(longlong *)(lVar9 + 8) + 0xc), piVar12 = piVar6, *piVar5 != iVar2
               && (((char)piVar5[1] == '\0' || (iVar2 != -1))))))))) {
        piVar5 = piVar5 + 0x3a;
      }
      if (piVar12 == (int *)0x0) {
        local_be0 = (int *)FUN_1811316e0(0x18);
        if (local_be0 != (int *)0x0) {
          FUN_1805a48c0(local_be0,
                        "The DynamicCryptoLicenseData has no product information for the given AuthChain"
                       );
        }
        lVar9 = FUN_1805c0260();
        local_c10[0] = 0xcea;
        local_aa8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
        ;
        uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_aa8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar7,local_c10);
      }
      local_c88 = pace::eden::thrift::fusion::DynamicCryptoKeyExchangeInput::vftable;
      local_c78 = 0;
      uStack_c70 = 0;
      local_c68 = 0;
      lStack_c60 = 0;
      local_c58 = (undefined1 *)0x0;
      puStack_c50 = (undefined1 *)0x0;
      local_c48[0] = 3;
      local_c40 = 0;
      local_c38 = 0;
      local_c34 = 0;
      local_b68 = pace::eden::thrift::fusion::DynamicCryptoKeyExchangeOutput::vftable;
      local_b60 = 0;
      local_b58 = 0;
      uStack_b50 = 0;
      local_b48 = 0;
      lStack_b40 = 0;
      local_b38 = 0;
      local_b30 = 0;
      local_b28 = 0;
      local_c80 = *(undefined1 *)((longlong)piVar12 + 0x19);
      FUN_1805b9910(&local_c78,local_ba8 + 8);
      if ((ulonglong)((longlong)puStack_c50 - lStack_c60) < 7) {
        FUN_1805bbf80(&lStack_c60,7);
      }
      local_ca7 = 0x92;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca7);
      }
      else {
        *local_c58 = 0x92;
        local_c58 = local_c58 + 1;
      }
      local_ca6 = 0x75;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca6);
      }
      else {
        *local_c58 = 0x75;
        local_c58 = local_c58 + 1;
      }
      local_ca5 = 0xf6;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca5);
      }
      else {
        *local_c58 = 0xf6;
        local_c58 = local_c58 + 1;
      }
      local_ca4 = 0x1a;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca4);
      }
      else {
        *local_c58 = 0x1a;
        local_c58 = local_c58 + 1;
      }
      local_ca3 = 0xfe;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca3);
      }
      else {
        *local_c58 = 0xfe;
        local_c58 = local_c58 + 1;
      }
      local_ca2 = 0xd3;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca2);
      }
      else {
        *local_c58 = 0xd3;
        local_c58 = local_c58 + 1;
      }
      local_ca1 = 0x6b;
      if (puStack_c50 == local_c58) {
        FUN_1805b0850(&lStack_c60,local_c58,&local_ca1);
      }
      else {
        *local_c58 = 0x6b;
        local_c58 = local_c58 + 1;
      }
      local_c48[0] = piVar12[0x12];
      FUN_1806995c0(local_bb8,lVar9,&local_c88,&local_b68);
      if (local_b30._4_1_ != '\0') {
        local_b70 = (char *)FUN_1811316e0(0x18);
        if (local_b70 != (char *)0x0) {
          FUN_1805a48c0(local_b70,"Location needs to be updated.");
        }
        lVar9 = FUN_1805c0260();
        local_c08[0] = 0xd04;
        local_aa0[0] = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
        ;
        uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),local_aa0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar7,local_c08);
      }
      if (local_c48[0] != (int)local_b30) {
        local_b78 = (int *)FUN_1811316e0(0x18);
        if (local_b78 != (int *)0x0) {
          piVar8 = (int *)FUN_1805a48c0(local_b78,
                                        "Requested algorithmId $d, but algorithmId %d was used.");
        }
        FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(piVar8 + 2),local_c48);
      }
      if (local_b58 - local_b60 != 0x20) break;
      if (lStack_b40 - local_b48 != 0x20) {
        local_b88 = FUN_1811316e0(0x18);
        if (local_b88 != 0) {
          piVar8 = (int *)FUN_1805a48c0(local_b88,
                                        "Bad Integral Domain Data size (%d).  This should be 32.");
        }
        lVar9 = FUN_1805c0260();
        local_a80 = lStack_b40 - local_b48;
        FUN_1805b2520(*(undefined8 *)(piVar8 + 2),&local_a80);
        local_bf0[0] = 0xd17;
        local_a78[0] = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
        ;
        uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),local_a78);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar7,local_bf0);
      }
      lVar1 = param_3 + 8;
      if ((local_ba0 & *(ulonglong *)(lVar9 + 0x68)) == 0) {
        if (((ulonglong)local_c18 & *(ulonglong *)(lVar9 + 0x68)) == 0) {
          FUN_1805b9910(lVar1,piVar12 + 0x20);
          FUN_1805b9910(param_3 + 0x50,piVar12 + 0x26);
        }
        else {
          FUN_1805b9910(lVar1,piVar12 + 0x2c);
          FUN_1805b9910(param_3 + 0x50,piVar12 + 0x32);
        }
      }
      else {
        FUN_1805b9910(lVar1,piVar12 + 0x14);
        FUN_1805b9910(param_3 + 0x50,piVar12 + 0x1a);
      }
      FUN_1805b9910(param_3 + 0x20,&local_b60);
      FUN_1805b9910(param_3 + 0x38,&local_b48);
      FUN_1805b9ea0(param_3 + 0x68,lVar9);
      FUN_1805b7e80(&local_b68);
      FUN_1805b7dc0(&local_c88);
      cVar4 = local_ca8;
    }
    local_b80 = (char *)FUN_1811316e0(0x18);
    if (local_b80 != (char *)0x0) {
      piVar8 = (int *)FUN_1805a48c0(local_b80,"Bad Exchange Data size (%d).  This should be 32.");
    }
    lVar9 = FUN_1805c0260();
    local_a90 = local_b58 - local_b60;
    FUN_1805b2520(*(undefined8 *)(piVar8 + 2),&local_a90);
    local_bf8[0] = 0xd11;
    local_a88 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_a88);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_bf8);
  }
  local_c98 = (int *)FUN_1811316e0(0x18);
  if (local_c98 != (int *)0x0) {
    FUN_1805a48c0(local_c98,"The Pace Eden license data has no product information");
  }
  piVar5 = (int *)FUN_1811316e0(0x18);
  local_c98 = piVar5;
  if (piVar5 != (int *)0x0) {
    FUN_1805a48c0(piVar5,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)piVar5 = pace::PaceLocationInfoFormatter::vftable;
    piVar8 = piVar5;
  }
  local_c20 = CONCAT44(local_c20._4_4_,0xc90);
  local_be8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
  uVar7 = FUN_1805a21d0(*(undefined8 *)(piVar8 + 2),&local_be8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar7,&local_c20);
}



############ FUN_ 1805b0190 size=694 ############

longlong FUN_1805b0190(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  if (lVar5 == 0x186186186186186) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0x186186186186186 - (uVar6 >> 1)) &&
     (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 0xa8;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0x186186186186187) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_1805b02d2;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_1805b02d2:
  lVar8 = lVar7 * 0xa8 + uVar6;
  lVar7 = lVar8 + 0xa8;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_1805b53c0(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 0xa8) {
      FUN_1805b53c0(uVar9);
      uVar9 = uVar9 + 0xa8;
    }
  }
  else {
    FUN_1805bc3b0(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_1805bc3b0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x15) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 7) - (lVar5 >> 0x3f)) * 0xa8)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 0xa8 + uVar6;
  param_1[2] = uVar12 * 0xa8 + uVar6;
  return lVar5 * 0xa8 + *param_1;
}



############ FUN_ 1805b0850 size=311 ############

longlong FUN_1805b0850(longlong *param_1,void *param_2,undefined1 *param_3)

{
  ulonglong uVar1;
  void *_Src;
  ulonglong uVar2;
  longlong lVar3;
  void *_Dst;
  ulonglong uVar4;
  void *_Dst_00;
  size_t _Size;
  longlong lVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lVar3 = *param_1;
  lVar5 = (longlong)param_2 - lVar3;
  if (param_1[1] - lVar3 == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = (param_1[1] - lVar3) + 1;
  uVar2 = param_1[2] - lVar3;
  uVar4 = uVar1;
  if ((uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1)) && (uVar4 = (uVar2 >> 1) + uVar2, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  if (uVar4 < 0x1000) {
    if (uVar4 == 0) {
      _Dst_00 = (void *)0x0;
    }
    else {
      _Dst_00 = (void *)FUN_1811316e0(uVar4);
    }
  }
  else {
    uVar2 = uVar4 + 0x27;
    if (uVar2 <= uVar4) {
      uVar2 = 0xffffffffffffffff;
    }
    lVar3 = FUN_1811316e0(uVar2);
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    _Dst_00 = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)_Dst_00 - 8) = lVar3;
  }
  *(undefined1 *)((longlong)_Dst_00 + lVar5) = *param_3;
  _Src = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)_Src;
    _Dst = _Dst_00;
    param_2 = _Src;
  }
  else {
    memmove(_Dst_00,_Src,(longlong)param_2 - (longlong)_Src);
    _Dst = (void *)(lVar5 + 1 + (longlong)_Dst_00);
    _Size = param_1[1] - (longlong)param_2;
  }
  memmove(_Dst,param_2,_Size);
  FUN_1805bbe20(param_1,_Dst_00,uVar1,uVar4,uVar6);
  return *param_1 + lVar5;
}



############ FUN_ 1805b49f0 size=268 ############

ulonglong * FUN_1805b49f0(ulonglong *param_1,longlong *param_2)

{
  void *_Dst;
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  size_t _Size;
  
  uVar3 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  uVar2 = param_2[1] - *param_2 >> 2;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (uVar2 != 0) {
    if (0x3fffffffffffffff < uVar2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar2 = uVar2 * 4;
    if (uVar2 < 0x1000) {
      if (uVar2 != 0) {
        uVar3 = FUN_1811316e0(uVar2);
      }
    }
    else {
      uVar3 = uVar2 + 0x27;
      if (uVar3 <= uVar2) {
        uVar3 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar3);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar3 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar3 - 8) = lVar1;
    }
    *param_1 = uVar3;
    param_1[1] = uVar3;
    _Dst = (void *)*param_1;
    param_1[2] = (ulonglong)(uVar2 + (longlong)_Dst);
    _Size = param_2[1] - *param_2;
    memmove(_Dst,(void *)*param_2,_Size);
    param_1[1] = _Size + (longlong)_Dst;
  }
  return param_1;
}



############ FUN_ 1805bbf80 size=176 ############

void FUN_1805bbf80(longlong *param_1,ulonglong param_2)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  ulonglong uVar4;
  void *_Dst;
  
  lVar1 = param_1[1];
  lVar2 = *param_1;
  if (param_2 < 0x1000) {
    if (param_2 == 0) {
      _Dst = (void *)0x0;
    }
    else {
      _Dst = (void *)FUN_1811316e0(param_2);
    }
  }
  else {
    uVar4 = param_2 + 0x27;
    if (uVar4 <= param_2) {
      uVar4 = 0xffffffffffffffff;
    }
    lVar3 = FUN_1811316e0(uVar4);
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)_Dst - 8) = lVar3;
  }
  memmove(_Dst,(void *)*param_1,param_1[1] - *param_1);
  FUN_1805bbe20(param_1,_Dst,lVar1 - lVar2,param_2);
  return;
}



############ FUN_ 1805bdb50 size=798 ############

/* WARNING: Removing unreachable block (ram,0x0001805bdd1f) */
/* WARNING: Removing unreachable block (ram,0x0001805bdd30) */
/* WARNING: Removing unreachable block (ram,0x0001805bdd47) */
/* WARNING: Removing unreachable block (ram,0x0001805bde31) */
/* WARNING: Removing unreachable block (ram,0x0001805bde42) */
/* WARNING: Removing unreachable block (ram,0x0001805bde59) */

undefined8 * FUN_1805bdb50(undefined8 *param_1,char param_2)

{
  uint uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  longlong lVar4;
  HANDLE pvVar5;
  undefined8 *puVar6;
  uint *puVar7;
  longlong local_res18;
  char *local_res20;
  undefined8 local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  int *local_58;
  char local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  longlong local_30;
  
  uVar3 = 0;
  uVar2 = FUN_1805c2740();
  FUN_1805b45f0(&local_58,uVar2);
  if (DAT_18265dd28 == 0) {
    local_res18 = FUN_1811316e0(0x1b0);
    if (local_res18 != 0) {
      uVar3 = FUN_180675cd0(local_res18);
    }
    local_68 = uVar3;
    FUN_1805aeea0(&uStack_60,uVar3);
    FUN_1805ae620(&local_68,uVar3,uVar3);
    uVar2 = local_68;
    if (param_2 == '\0') {
      FUN_1806afd50(local_68,0,2,0,0,0,0);
    }
    else {
      FUN_1806b10b0();
    }
    uVar3 = FUN_1805c04c0();
    FUN_18069ae50(uVar2,&DAT_18265dd28,uVar3,0);
    if (DAT_18265dd28 == 0) {
      local_res18 = FUN_1811316e0(0x18);
      if (local_res18 != 0) {
        FUN_1805a48c0(local_res18,&DAT_181baf991);
      }
      lVar4 = FUN_1805c0260();
      local_res18 = CONCAT44(local_res18._4_4_,0x3b2);
      local_res20 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
      ;
      uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar2,&local_res18);
    }
    *param_1 = uVar2;
    param_1[1] = CONCAT44(uStack_5c,uStack_60);
    if ((local_50 != '\0') && (*local_58 = *local_58 + -1, *local_58 == 0)) {
      LOCK();
      local_58[1] = 0;
      UNLOCK();
      puVar7 = (uint *)(local_58 + 2);
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 + 0x80000000;
      UNLOCK();
      if (((uVar1 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar1)) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 | 0x40000000;
        UNLOCK();
        if ((uVar1 >> 0x1e & 1) == 0) {
          pvVar5 = (HANDLE)FUN_1805a9100();
          SetEvent(pvVar5);
        }
      }
    }
  }
  else {
    lVar4 = FUN_1811316e0(0x1b0);
    if (lVar4 != 0) {
      puVar6 = (undefined8 *)FUN_1805c04c0();
      local_38 = *puVar6;
      local_30 = puVar6[1];
      if (local_30 != 0) {
        LOCK();
        *(int *)(local_30 + 8) = *(int *)(local_30 + 8) + 1;
        UNLOCK();
      }
      uVar3 = FUN_180674d00(lVar4,DAT_18265dd28,&local_38,0);
    }
    local_48 = uVar3;
    FUN_1805aeea0(&local_40,uVar3);
    FUN_1805ae620(&local_48,uVar3,uVar3);
    *param_1 = local_48;
    param_1[1] = local_40;
    if ((local_50 != '\0') && (*local_58 = *local_58 + -1, *local_58 == 0)) {
      LOCK();
      local_58[1] = 0;
      UNLOCK();
      puVar7 = (uint *)(local_58 + 2);
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 + 0x80000000;
      UNLOCK();
      if (((uVar1 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar1)) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 | 0x40000000;
        UNLOCK();
        if ((uVar1 >> 0x1e & 1) == 0) {
          pvVar5 = (HANDLE)FUN_1805a9100();
          SetEvent(pvVar5);
        }
      }
    }
  }
  return param_1;
}



############ FUN_ 1805aeea0 size=97 ############

undefined8 * FUN_1805aeea0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::AuthorizationVerifier>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180674d00 size=2454 ############

/* WARNING: Instruction at (ram,0x000180675844) overlaps instruction at (ram,0x00018067583f)
    */
/* WARNING: Removing unreachable block (ram,0x00018067583f) */
/* WARNING: Removing unreachable block (ram,0x000180675148) */
/* WARNING: Removing unreachable block (ram,0x000180674e48) */
/* WARNING: Removing unreachable block (ram,0x000180674ed1) */
/* WARNING: Removing unreachable block (ram,0x00018067535a) */
/* WARNING: Removing unreachable block (ram,0x000180675a4a) */

undefined8 * FUN_180674d00(undefined8 *param_1,int param_2,longlong *param_3,undefined1 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  int *piVar3;
  longlong *plVar4;
  code *pcVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined1 *puVar9;
  char cVar10;
  char *pcVar11;
  char *pcVar12;
  undefined8 uVar13;
  char *pcVar14;
  undefined8 uVar15;
  undefined8 *puVar16;
  HANDLE hEvent;
  int iVar17;
  uint uVar18;
  undefined8 *puVar19;
  ulonglong uVar20;
  uint *puVar21;
  uint uVar22;
  longlong lVar23;
  ulonglong uVar24;
  longlong lVar25;
  undefined1 *puVar26;
  longlong lVar27;
  uint uVar28;
  uint uVar29;
  ulonglong uVar30;
  uint uVar31;
  byte bVar32;
  int unaff_retaddr;
  int local_res10 [2];
  longlong *local_res18;
  undefined1 local_res20;
  undefined1 auStack_c8 [32];
  undefined1 *local_a8;
  ulonglong local_a0;
  undefined4 *local_98;
  int local_90;
  uint local_8c;
  undefined4 local_88 [2];
  longlong *local_80;
  char *local_78;
  undefined8 local_70;
  undefined1 local_68 [16];
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  *param_1 = pace::AuthorizationVerifier::vftable;
  pcVar14 = (char *)0x0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  param_1[5] = 0;
  plVar4 = param_1 + 9;
  *plVar4 = 0;
  param_1[10] = 0;
  local_res10[0] = param_2;
  local_res18 = param_3;
  local_res20 = param_4;
  local_80 = param_3;
  FUN_180677430(param_1 + 0xc);
  uVar18 = (uint)&stack0x00000000;
  iVar17 = (uVar18 & 0x70ff) * (uVar18 & 0x70ff) + 1;
  uVar22 = (iVar17 >> 4) + (iVar17 >> 1) + iVar17 * 0x24924924 >> 0x1d;
  if (((int)(uVar22 - 7) >> 0x1f & uVar22 & 0x10) == 0) {
    uVar22 = uVar18 & 0x1bf;
    bVar32 = (char)((ulonglong)((longlong)(int)((uVar22 + 2) * (uVar22 + 1) * uVar22) * 0x55555556)
                   >> 0x20) * -3;
  }
  else {
    bVar32 = 0;
  }
  uVar28 = ((uVar18 & 0x10ff) * (uVar18 & 0x10ff) + 1) % 7;
  uVar22 = ((uVar18 & 0x1bff) + 1) * (uVar18 & 0x1bff) + 0x334d & 0x80000001;
  local_8c = (((int)(-uVar28 | uVar28) >> 0x1f) - ((int)(-uVar22 | uVar22) >> 0x1f)) + 0x320bU ^
             0x7bfb << (bVar32 & 0x1f) & 0x33ebU;
  local_90 = 0xda0;
  FUN_1805b45f0(local_68,param_1 + 3);
  local_98 = &DAT_18114a948;
  local_a8 = &LAB_18114aa48;
  local_70 = 0x100;
  uVar22 = (((uint)(DAT_18114a948 * 0x401) >> 6 ^ DAT_18114a948 * 0x401) + DAT_18114a94c) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a950) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a954) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a958) * 0x401;
  uVar22 = uVar22 ^ uVar22 >> 6;
  local_a0 = (ulonglong)uVar22;
  FUN_1806a8b40(param_1);
  local_a8 = (undefined1 *)CONCAT44(local_a8._4_4_,local_res10[0]);
  if ((local_res10[0] == 0) || (*local_80 == 0)) {
    local_78 = (char *)FUN_1811316e0(0x18);
    pcVar11 = pcVar14;
    if (local_78 != (char *)0x0) {
      pcVar11 = (char *)FUN_1805a48c0(local_78,
                                      "The AuthorizationVerifier constructor was not provided a proper channel encyptor (ID = %d)"
                                     );
    }
    pcVar12 = (char *)FUN_1811316e0(0x18);
    local_78 = pcVar12;
    if (pcVar12 != (char *)0x0) {
      FUN_1805a48c0(pcVar12,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar12 = pace::PaceLocationInfoFormatter::vftable;
      pcVar14 = pcVar12;
    }
    FUN_18060e760(*(undefined8 *)(pcVar11 + 8),local_res10);
    local_88[0] = 199;
    local_78 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar13 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,local_88);
  }
  local_98 = (undefined4 *)FUN_1811316e0(0x240);
  if (local_98 != (undefined4 *)0x0) {
    pcVar14 = (char *)FUN_18063c2c0(local_98);
  }
  FUN_180672510(plVar4,pcVar14);
  uVar22 = (DAT_18114a95c + uVar22) * 0x401;
  do {
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar18 != 0);
  uVar22 = (DAT_18114a960 + (uVar22 ^ uVar22 >> 6)) * 0x401;
  local_a0 = CONCAT44(local_a0._4_4_,uVar22 ^ uVar22 >> 6);
  lVar27 = *local_80;
  lVar25 = *plVar4;
  puVar16 = (undefined8 *)(lVar27 + 8);
  lVar23 = 4;
  puVar19 = (undefined8 *)(lVar25 + 8);
  do {
    uVar13 = puVar16[1];
    *puVar19 = *puVar16;
    puVar19[1] = uVar13;
    uVar13 = puVar16[3];
    puVar19[2] = puVar16[2];
    puVar19[3] = uVar13;
    uVar13 = puVar16[5];
    puVar19[4] = puVar16[4];
    puVar19[5] = uVar13;
    uVar13 = puVar16[7];
    puVar19[6] = puVar16[6];
    puVar19[7] = uVar13;
    uVar13 = puVar16[9];
    puVar19[8] = puVar16[8];
    puVar19[9] = uVar13;
    uVar13 = puVar16[0xb];
    puVar19[10] = puVar16[10];
    puVar19[0xb] = uVar13;
    uVar6 = *(undefined4 *)((longlong)puVar16 + 100);
    uVar7 = *(undefined4 *)(puVar16 + 0xd);
    uVar8 = *(undefined4 *)((longlong)puVar16 + 0x6c);
    *(undefined4 *)(puVar19 + 0xc) = *(undefined4 *)(puVar16 + 0xc);
    *(undefined4 *)((longlong)puVar19 + 100) = uVar6;
    *(undefined4 *)(puVar19 + 0xd) = uVar7;
    *(undefined4 *)((longlong)puVar19 + 0x6c) = uVar8;
    puVar2 = puVar19 + 0x10;
    uVar6 = *(undefined4 *)((longlong)puVar16 + 0x74);
    uVar7 = *(undefined4 *)(puVar16 + 0xf);
    uVar8 = *(undefined4 *)((longlong)puVar16 + 0x7c);
    *(undefined4 *)(puVar19 + 0xe) = *(undefined4 *)(puVar16 + 0xe);
    *(undefined4 *)((longlong)puVar19 + 0x74) = uVar6;
    *(undefined4 *)(puVar19 + 0xf) = uVar7;
    *(undefined4 *)((longlong)puVar19 + 0x7c) = uVar8;
    puVar16 = puVar16 + 0x10;
    lVar23 = lVar23 + -1;
    puVar19 = puVar2;
  } while (lVar23 != 0);
  *puVar2 = *puVar16;
  *(undefined1 *)(lVar25 + 0x210) = *(undefined1 *)(lVar27 + 0x210);
  *(undefined1 *)(lVar25 + 0x211) = *(undefined1 *)(lVar27 + 0x211);
  if ((undefined8 *)(lVar25 + 0x218) != (undefined8 *)(lVar27 + 0x218)) {
    FUN_1805e1990((undefined8 *)(lVar25 + 0x218),*(undefined8 *)(lVar27 + 0x218),
                  *(undefined8 *)(lVar27 + 0x220));
  }
  uVar13 = local_70;
  *(undefined4 *)(lVar25 + 0x230) = *(undefined4 *)(lVar27 + 0x230);
  *(undefined4 *)(lVar25 + 0x234) = *(undefined4 *)(lVar27 + 0x234);
  *(undefined2 *)(lVar25 + 0x238) = *(undefined2 *)(lVar27 + 0x238);
  uVar22 = (DAT_18114a964 + (int)local_a0) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a968) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a96c) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a970) * 0x401;
  *(undefined1 *)(param_1 + 0xb) = 1;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a974) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a978) * 0x401;
  uVar31 = ((uVar22 >> 6 ^ uVar22) + DAT_18114a97c) * 0x401;
  uVar31 = uVar31 ^ uVar31 >> 6;
  uVar22 = (uint)local_70;
  iVar17 = ((uint)local_70 & 0x68ff) * ((uint)local_70 & 0x68ff) + 1;
  uVar18 = (iVar17 >> 4) + (iVar17 >> 1) + iVar17 * 0x24924924 >> 0x1d;
  uVar18 = (int)(uVar18 - 7) >> 0x1f & uVar18;
  uVar30 = (ulonglong)uVar18;
  uVar28 = uVar31 & 0x7f | 0x6e;
  uVar28 = (uVar28 * uVar28 * 0x3611 == 0xa804ae5) + 5;
  uVar24 = (ulonglong)(~(((int)(-uVar18 | uVar18) >> 0x1f) + 1U) & 0x9600) ^
           (longlong)(((int)(-uVar28 | uVar28) >> 0x1f) * -0x9700);
  uVar18 = (*(int *)(&UNK_18114a880 + uVar24) + uVar31) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a884 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a888 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a88c + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a890 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a894 + uVar24)) * 0x401;
  *(uint *)(param_1 + 8) = (uint)local_a8;
  *(undefined4 *)(param_1 + 6) = 0;
  *(undefined4 *)((longlong)param_1 + 0x34) = 2;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a898 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a89c + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8a0 + uVar24)) * 0x401;
  local_70 = 0xdd01652dea47ec50;
  local_a8 = (undefined1 *)CONCAT44(local_a8._4_4_,0xea47ec50);
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8a4 + uVar24)) * 0x401;
  do {
    uVar20 = 0xf304;
    cVar10 = FUN_180676fca();
    if ((uVar20 & 0xe300) == 0) {
      DAT_c08548c18b410ceb = cVar10 + '\r';
    }
    uVar28 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar28 < 0) {
      uVar28 = (uVar28 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar28 != 0);
  uVar18 = (*(int *)(&UNK_18114a8a8 + uVar24) + (uVar18 ^ uVar18 >> 6)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8ac + uVar24)) * 0x401;
  *(undefined4 *)(param_1 + 7) = *(undefined4 *)(param_1[9] + 8);
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8b0 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8b4 + uVar24)) * 0x401;
  *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8b8 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8bc + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8c0 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8c4 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8c8 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8cc + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8d0 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8d4 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8d8 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8dc + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8e0 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8e4 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8e8 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8ec + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8f0 + uVar24)) * 0x401;
  do {
    uVar20 = 0xf304;
    uVar15 = func_0x000180674082();
    if ((uVar20 & 0x41) != 0) {
      *(byte *)(uVar24 - 200) = *(byte *)(uVar24 - 200) | (byte)(uVar20 >> 8);
      return (undefined8 *)
             (ulonglong)
             ((int)CONCAT71((int7)((ulonglong)uVar15 >> 8),(char)uVar15 + '9') + 0x8067569a);
    }
    func_0x0001806738ee();
    uVar28 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar28 < 0) {
      uVar28 = (uVar28 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar28 != 0);
  uVar18 = (*(int *)(&UNK_18114a8f4 + uVar24) + (uVar18 ^ uVar18 >> 6)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8f8 + uVar24)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a8fc + uVar24)) * 0x401;
  uVar29 = ((uVar18 >> 6 ^ uVar18) + *(int *)(&UNK_18114a900 + uVar24)) * 0x401;
  uVar28 = (uint)(uVar24 - 0x48);
  uVar18 = uVar28 & 0x3fff;
  uVar18 = ((uVar18 + 1) * uVar18 + 7) % 0x51;
  uVar31 = ((int)(-uVar18 | uVar18) >> 0x1f) >> ((byte)uVar13 & 0x1f);
  uVar28 = uVar28 & 0x14ff;
  uVar18 = (uVar28 * uVar28 * 0x10 + 4) % 0x13 | uVar22;
  lVar25 = (uVar24 - 0x48) +
           (((longlong)(((int)(-uVar31 | uVar31) >> 0x1f) * -0x40cd) ^ 0x42cdU) -
           ((longlong)(((int)(-uVar18 | uVar18) >> 0x1f) * -0xacbc) ^ 0xaebcU));
  uVar18 = ((uVar29 >> 6 ^ uVar29) + *(int *)(lVar25 + 0x18114a94c)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a950)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a954)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a958)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a95c)) * 0x401;
  lVar27 = (longlong)local_90;
  do {
    uVar28 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar28 < 0) {
      uVar28 = (uVar28 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar28 != 0);
  uVar28 = (*(int *)(lVar25 + 0x18114a960) + (uVar18 ^ uVar18 >> 6)) * 0x401;
  uVar28 = uVar28 ^ uVar28 >> 6;
  uVar18 = uVar28 & 0xbf;
  iVar17 = (uVar18 + 2) * (uVar18 + 1) * uVar18;
  lVar25 = lVar25 + 0x18 +
           (0x7f71L >>
            ((byte)(((iVar17 >> 1) - (iVar17 >> 3)) + iVar17 * 0x55555555 >> 0x1e) &
             (byte)(lVar25 + 0x18) & 0x3f) ^ 0x7f75U);
  uVar18 = (*(int *)(lVar25 + 0x18114a948) + uVar28) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a94c)) * 0x401;
  uVar18 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a950)) * 0x401;
  uVar31 = ((uVar18 >> 6 ^ uVar18) + *(int *)(lVar25 + 0x18114a954)) * 0x401;
  uVar18 = (uint)(lVar25 + 0xc) & 0x3eff;
  iVar17 = uVar18 * uVar18 + 1;
  uVar28 = (iVar17 >> 4) + (iVar17 >> 1) + iVar17 * 0x24924924 >> 0x1d;
  uVar24 = (ulonglong)uVar28;
  uVar18 = uVar22 & 0x7f | 0x16;
  uVar22 = uVar22 & 0x1f | 0x67;
  uVar22 = ((int)(uVar28 - 7) >> 0x1f & uVar28) -
           (uint)(uVar22 * uVar22 * 0x5afb == uVar18 * uVar18 * 0xf3c1);
  lVar25 = lVar25 + 0xc + ((longlong)(((int)(-uVar22 | uVar22) >> 0x1f) * -0xe4ce) ^ 0xe4caU);
  uVar22 = ((uVar31 >> 6 ^ uVar31) + *(int *)(lVar25 + 0x18114a948)) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + *(int *)(lVar25 + 0x18114a94c)) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + *(int *)(lVar25 + 0x18114a950)) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + *(int *)(lVar25 + 0x18114a954)) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + *(int *)(lVar25 + 0x18114a958)) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + *(int *)(lVar25 + 0x18114a95c)) * 0x401;
  uVar22 = ((uVar22 >> 6 ^ uVar22) + *(int *)(lVar25 + 0x18114a960)) * 0x401;
  uVar22 = uVar22 ^ uVar22 >> 6;
  do {
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar18 != 0);
  uVar22 = (uVar22 >> 0x17 | uVar22 << 9) + 0xbc0cf0d0;
  uVar22 = (uVar22 >> 0x17 | uVar22 * 0x200) + 0xe2ea0ade;
  uVar22 = (uint)local_a8 ^ (uVar22 >> 6 | uVar22 * 0x4000000) + 0x5199b4d4;
  *(undefined1 *)(param_1 + 0x35) = local_res20;
  puVar9 = auStack_c8;
  if (uVar22 == 0 && (uVar22 & 0x3fffff) == 0) {
    do {
      puVar26 = puVar9;
      *(undefined **)(puVar26 + -8) = &UNK_180675aac;
      lVar25 = lVar27;
      func_0x000180674cf4();
      *(ulonglong *)(puVar26 + -8) = uVar24;
      *(longlong *)(puVar26 + -0x10) = lVar27;
      *(ulonglong *)(puVar26 + -0x18) = uVar30;
      lVar25 = -lVar25;
      uVar30 = *(ulonglong *)(puVar26 + lVar25 + 0xd88);
      lVar27 = *(longlong *)(puVar26 + lVar25 + 0xd90);
      uVar24 = *(ulonglong *)(puVar26 + lVar25 + 0xd98);
      uVar22 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar22 < 0) {
        uVar22 = (uVar22 - 1 | 0xfffffffe) + 1;
      }
      puVar9 = puVar26 + lVar25 + 0xda0;
    } while (uVar22 != 0);
    if (puVar26[lVar25 + 0xe08] != '\0') {
      piVar3 = *(int **)(puVar26 + lVar25 + 0xe00);
      *piVar3 = *piVar3 + -1;
      if (*piVar3 == 0) {
        LOCK();
        piVar3[1] = 0;
        UNLOCK();
        puVar21 = (uint *)(*(longlong *)(puVar26 + lVar25 + 0xe00) + 8);
        LOCK();
        uVar22 = *puVar21;
        *puVar21 = *puVar21 + 0x80000000;
        UNLOCK();
        if (((uVar22 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar22)) {
          LOCK();
          uVar22 = *puVar21;
          *puVar21 = *puVar21 | 0x40000000;
          UNLOCK();
          if ((uVar22 >> 0x1e & 1) == 0) {
            *(undefined8 *)(puVar26 + lVar25 + 0xd98) = 0x180675c73;
            hEvent = (HANDLE)FUN_1805a9100();
            *(undefined8 *)(puVar26 + lVar25 + 0xd98) = 0x180675c7c;
            SetEvent(hEvent);
          }
        }
      }
    }
    plVar4 = *(longlong **)(*(longlong *)(puVar26 + lVar25 + 0xde8) + 8);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar27 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar27 == 1) {
        pcVar5 = *(code **)(*plVar4 + 8);
        *(undefined8 *)(puVar26 + lVar25 + 0xd98) = 0x180675ca5;
        (*pcVar5)(plVar4);
        LOCK();
        piVar3 = (int *)((longlong)plVar4 + 0xc);
        iVar17 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar17 == 1) {
          pcVar5 = *(code **)(*plVar4 + 0x10);
          *(undefined8 *)(puVar26 + lVar25 + 0xd98) = 0x180675cb8;
          (*pcVar5)(plVar4);
        }
      }
    }
    return param_1;
  }
  puVar16 = (undefined8 *)thunk_FUN_1805a9280((longlong)(int)local_8c,thunk_FUN_1805a9280,uVar24);
  return puVar16;
}



############ FUN_ 1805bc990 size=115 ############

void FUN_1805bc990(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x2f0;
  if (param_2 < 0x572620ae4c415d) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 18066bb80 size=568 ############

void FUN_18066bb80(ulonglong *param_1,longlong param_2,longlong param_3)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  
  puVar1 = (undefined8 *)param_1[1];
  puVar4 = (undefined8 *)*param_1;
  lVar3 = (longlong)puVar1 - (longlong)puVar4;
  lVar2 = (param_3 - param_2) + SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_3 - param_2),8);
  uVar7 = (lVar2 >> 7) - (lVar2 >> 0x3f);
  lVar3 = lVar3 + SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lVar3),8);
  uVar8 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar2 = (param_1[2] - (longlong)puVar4) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - (longlong)puVar4)),8
                );
  uVar9 = (lVar2 >> 7) - (lVar2 >> 0x3f);
  if (uVar9 < uVar7) {
    if (0x186186186186186 < uVar7) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar8 = uVar7;
    if ((uVar9 <= 0x186186186186186 - (uVar9 >> 1)) && (uVar8 = (uVar9 >> 1) + uVar9, uVar8 < uVar7)
       ) {
      uVar8 = uVar7;
    }
    if (puVar4 != (undefined8 *)0x0) {
      for (; puVar4 != puVar1; puVar4 = puVar4 + 0x15) {
        (**(code **)*puVar4)(puVar4,0);
      }
      FUN_1805bd8b0(param_1,*param_1,uVar9);
    }
    uVar7 = 0;
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar8 != 0) {
      if (0x186186186186186 < uVar8) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      uVar5 = uVar8 * 0xa8;
      uVar9 = 0xffffffffffffffff;
      if ((uVar8 < 0x186186186186187) && (uVar9 = uVar5, uVar5 < 0x1000)) {
        if (uVar5 != 0) {
          uVar7 = FUN_1811316e0(uVar5);
        }
      }
      else {
        uVar7 = uVar9 + 0x27;
        if (uVar9 + 0x27 <= uVar9) {
          uVar7 = 0xffffffffffffffff;
        }
        lVar2 = FUN_1811316e0(uVar7);
        if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
        uVar7 = lVar2 + 0x27U & 0xffffffffffffffe0;
        *(longlong *)(uVar7 - 8) = lVar2;
      }
      *param_1 = uVar7;
      param_1[1] = uVar7;
      param_1[2] = *param_1 + uVar5;
    }
    uVar7 = FUN_18066e1c0(param_1,param_2,param_3,*param_1);
    param_1[1] = uVar7;
  }
  else if (uVar8 < uVar7) {
    lVar2 = uVar8 * 0xa8 + param_2;
    FUN_18066c7e0(param_2,lVar2,puVar4);
    uVar7 = FUN_18066e1c0(param_1,lVar2,param_3,param_1[1]);
    param_1[1] = uVar7;
  }
  else {
    FUN_18066c7e0(param_2,param_3,puVar4);
    puVar1 = (undefined8 *)param_1[1];
    for (puVar6 = puVar4 + uVar7 * 0x15; puVar6 != puVar1; puVar6 = puVar6 + 0x15) {
      (**(code **)*puVar6)(puVar6,0);
    }
    param_1[1] = (ulonglong)(puVar4 + uVar7 * 0x15);
  }
  return;
}



############ FUN_ 1806713a0 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806713a0(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_1807930d0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180673570 size=447 ############

void FUN_180673570(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807ab570(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180622660 size=164 ############

ulonglong FUN_180622660(ulonglong *param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  
  uVar2 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (param_2 != 0) {
    if (0x3fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    param_2 = param_2 * 4;
    if (param_2 < 0x1000) {
      if (param_2 != 0) {
        uVar2 = FUN_1811316e0(param_2);
      }
    }
    else {
      uVar2 = param_2 + 0x27;
      if (param_2 + 0x27 <= param_2) {
        uVar2 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar2);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
    }
    *param_1 = uVar2;
    param_1[1] = uVar2;
    param_1[2] = param_2 + *param_1;
    uVar2 = CONCAT71((int7)(*param_1 >> 8),1);
  }
  return uVar2;
}



############ FUN_ 1806b10b0 size=2473 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_1806b10b0(longlong param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  longlong *plVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  undefined8 uVar5;
  HANDLE pvVar6;
  longlong lVar7;
  undefined8 *puVar8;
  tm *ptVar9;
  void **ppvVar10;
  longlong lVar11;
  uint *puVar12;
  undefined1 *puVar13;
  undefined1 *puVar14;
  ulonglong uVar15;
  undefined1 auStack_d78 [32];
  void **local_d58;
  void ***local_d50;
  undefined1 local_d48 [4];
  undefined4 local_d44;
  uint local_d40 [2];
  undefined8 local_d38;
  ulonglong local_d30;
  void *local_d28;
  longlong lStack_d20;
  undefined8 local_d18;
  undefined4 local_d08 [2];
  undefined4 local_d00 [2];
  undefined4 local_cf8 [2];
  undefined4 local_cf0 [2];
  undefined4 local_ce8 [2];
  longlong local_ce0;
  undefined8 *local_cd8;
  void **local_cc8;
  undefined1 *puStack_cc0;
  undefined1 local_cb8 [16];
  void **local_ca8;
  longlong lStack_ca0;
  void **local_c98;
  longlong alStack_c90 [4];
  char *local_c70;
  undefined1 local_c68 [8];
  undefined8 local_c60;
  undefined8 local_c58;
  char *local_c50;
  longlong local_c48;
  char *local_c40;
  __time64_t local_c38 [2];
  int *local_c28;
  char local_c20;
  undefined8 local_c18;
  longlong local_c10;
  int *local_c08;
  char local_c00;
  int *local_bf8;
  char local_bf0;
  longlong local_be8;
  char *local_be0;
  undefined8 local_bd8;
  longlong local_bd0;
  longlong lStack_bc8;
  undefined8 local_bc0;
  undefined8 local_bb8;
  undefined8 uStack_bb0;
  undefined8 local_ba8;
  undefined1 local_ba0 [16];
  undefined8 local_b90;
  undefined1 local_b88 [8];
  longlong *local_b80;
  void **local_b78;
  undefined1 *puStack_b70;
  undefined1 local_b68 [32];
  undefined **local_b48;
  undefined8 local_b40;
  undefined8 local_b38;
  undefined8 uStack_b30;
  undefined8 local_b28;
  undefined8 uStack_b20;
  undefined8 local_b18;
  undefined8 local_b10;
  undefined1 local_b08;
  undefined7 uStack_b07;
  longlong local_af8;
  ulonglong local_af0;
  undefined8 local_ae8;
  undefined8 local_ae0;
  undefined2 local_ad8;
  undefined1 local_ad6;
  undefined **local_ac8;
  undefined4 local_ac0;
  undefined8 local_ab8;
  undefined8 uStack_ab0;
  undefined8 local_aa8;
  undefined8 local_aa0;
  undefined8 local_a98;
  undefined8 uStack_a90;
  undefined1 local_a88;
  undefined7 uStack_a87;
  longlong local_a78;
  ulonglong local_a70;
  undefined8 local_a68;
  undefined1 local_a60;
  undefined8 local_a58;
  undefined8 local_a50;
  undefined8 local_a48;
  undefined8 local_a40;
  undefined8 local_a38;
  undefined8 local_a30;
  undefined8 local_a28;
  undefined1 local_a18 [112];
  undefined1 local_9a8 [112];
  undefined1 local_938 [8];
  longlong local_930 [281];
  ulonglong local_68;
  
  local_b90 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_d78;
  local_d44 = param_4;
  FUN_1805b45f0(&local_c28,param_1 + 0x18);
  uVar5 = FUN_1806ab5b0();
  local_d58 = (void **)CONCAT44(local_d58._4_4_,1);
  uVar5 = FUN_18066b810(local_b88,uVar5,0,2);
  FUN_18067dba0(param_1 + 8,uVar5);
  if (local_b80 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_b80 + 1;
    lVar7 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    param_4 = local_d44;
    if ((int)lVar7 == 1) {
      (**(code **)(*local_b80 + 8))(local_b80);
      LOCK();
      piVar2 = (int *)((longlong)local_b80 + 0xc);
      iVar4 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      param_4 = local_d44;
      if (iVar4 == 1) {
        (**(code **)(*local_b80 + 0x10))(local_b80);
        param_4 = local_d44;
      }
    }
  }
  if ((local_c20 != '\0') && (*local_c28 = *local_c28 + -1, *local_c28 == 0)) {
    LOCK();
    local_c28[1] = 0;
    UNLOCK();
    puVar12 = (uint *)(local_c28 + 2);
    LOCK();
    uVar3 = *puVar12;
    *puVar12 = *puVar12 + 0x80000000;
    UNLOCK();
    if (((uVar3 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar3)) {
      LOCK();
      uVar3 = *puVar12;
      *puVar12 = *puVar12 | 0x40000000;
      UNLOCK();
      if ((uVar3 >> 0x1e & 1) == 0) {
        pvVar6 = (HANDLE)FUN_1805a9100();
        SetEvent(pvVar6);
      }
    }
  }
  FUN_1806863a0(param_1);
  local_b48 = pace::eden::thrift::authorize::OpenQuicklyEncryptedChannelInput::vftable;
  local_b40 = 0;
  local_b38 = 0;
  uStack_b30 = 0;
  local_b28 = 0;
  uStack_b20 = 0;
  local_b18 = 0;
  local_b10 = 0;
  local_af8 = 0;
  local_af0 = 0xf;
  local_b08 = 0;
  FUN_1805a6cb0(&local_b08,&DAT_181baf991,0);
  local_ae8 = 0;
  local_ae0 = 0;
  local_ad8 = 0;
  local_ad6 = 0;
  local_ac8 = pace::eden::thrift::authorize::OpenQuicklyEncryptedChannelReturn::vftable;
  local_ac0 = 0;
  local_ab8 = 0;
  uStack_ab0 = 0;
  local_aa8 = 0;
  local_aa0 = 0;
  local_a98 = 0;
  uStack_a90 = 0;
  local_a78 = 0;
  local_a70 = 0xf;
  local_a88 = 0;
  FUN_1805a6cb0(&local_a88,&DAT_181baf991,0);
  local_a68 = 4;
  local_a60 = 0;
  local_ae0 = CONCAT44(local_ae0._4_4_,param_3);
  local_ae8._0_4_ = param_4;
  local_ae8._4_4_ = param_2;
  local_b10 = FUN_1806d2560();
  local_d40[0] = FUN_1807002d0(param_4);
  if (local_d40[0] == 0) {
    local_cd8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_cd8 == (undefined8 *)0x0) {
      lVar7 = 0;
    }
    else {
      lVar7 = FUN_1805a48c0(local_cd8,"Encryption Algorithm %d not supported");
    }
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_cd8 = puVar8;
    if (puVar8 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar7 + 8),&local_ae8);
  }
  ppvVar10 = (void **)0x0;
  FUN_180937700(local_938,local_ae8._4_4_);
  (**(code **)(local_930[0] + 0x20))(local_930,&local_a58,local_a18);
  FUN_18073e970(local_a18,&local_b28,&local_b40);
  _time64(local_c38);
  ptVar9 = _gmtime64(local_c38);
  if (ptVar9 == (tm *)0x0) {
    uVar5 = FUN_1805b6c80(local_b68,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
    FUN_1805b3e60(uVar5);
  }
  FUN_1805bd670(local_cb8,ptVar9);
  FUN_180663c70(local_cb8,&local_b08);
  local_d28 = (void *)0x0;
  lStack_d20 = 0;
  local_d18 = 0;
  local_d48[0] = 0xa5;
  local_cc8 = &local_d28;
  puStack_cc0 = local_d48;
  local_b78 = local_cc8;
  puStack_b70 = puStack_cc0;
  FUN_1805e1ee0(&local_d28,0x10,&local_b78);
  local_cc8 = (void **)0x0;
  puStack_cc0 = (undefined1 *)0x0;
  local_ca8 = (void **)FUN_1811316e0(0x240);
  if (local_ca8 != (void **)0x0) {
    local_d58 = &local_d28;
    ppvVar10 = (void **)FUN_18063c260(local_ca8,0,1,0);
  }
  local_c98 = ppvVar10;
  FUN_18066b4e0(alStack_c90,ppvVar10);
  FUN_1805ae620(&local_c98,ppvVar10,ppvVar10);
  ppvVar10 = local_c98;
  local_cc8 = local_c98;
  puStack_cc0 = (undefined1 *)alStack_c90[0];
  local_bb8 = 0;
  uStack_bb0 = 0;
  local_ba8 = 0;
  local_bd0 = 0;
  lStack_bc8 = 0;
  local_bc0 = 0;
  FUN_1806741b0(&local_b48,&local_bb8,1);
  FUN_1805b45f0(&local_c08,param_1 + 0x18);
  local_ca8 = ppvVar10;
  lStack_ca0 = alStack_c90[0];
  if (alStack_c90[0] != 0) {
    LOCK();
    *(int *)(alStack_c90[0] + 8) = *(int *)(alStack_c90[0] + 8) + 1;
    UNLOCK();
  }
  local_c18 = *(undefined8 *)(param_1 + 8);
  local_c10 = *(longlong *)(param_1 + 0x10);
  if (local_c10 != 0) {
    LOCK();
    *(int *)(local_c10 + 8) = *(int *)(local_c10 + 8) + 1;
    UNLOCK();
  }
  local_d50 = &local_ca8;
  local_d58 = (void **)((ulonglong)local_d58 & 0xffffffff00000000);
  FUN_1806b91d0(0x1b,&local_bb8,&local_bd0,&local_c18);
  if ((local_c00 != '\0') && (*local_c08 = *local_c08 + -1, *local_c08 == 0)) {
    LOCK();
    local_c08[1] = 0;
    UNLOCK();
    puVar12 = (uint *)(local_c08 + 2);
    LOCK();
    uVar3 = *puVar12;
    *puVar12 = *puVar12 + 0x80000000;
    UNLOCK();
    if (((uVar3 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar3)) {
      LOCK();
      uVar3 = *puVar12;
      *puVar12 = *puVar12 | 0x40000000;
      UNLOCK();
      if ((uVar3 >> 0x1e & 1) == 0) {
        pvVar6 = (HANDLE)FUN_1805a9100();
        SetEvent(pvVar6);
      }
    }
  }
  FUN_180672130(local_bd0,lStack_bc8 - local_bd0,&local_ac8);
  FUN_1805b45f0(&local_bf8,param_1 + 0x18);
  *(undefined4 *)(param_1 + 0x40) = local_ac0;
  if ((local_bf0 != '\0') && (*local_bf8 = *local_bf8 + -1, *local_bf8 == 0)) {
    LOCK();
    local_bf8[1] = 0;
    UNLOCK();
    puVar12 = (uint *)(local_bf8 + 2);
    LOCK();
    uVar3 = *puVar12;
    *puVar12 = *puVar12 + 0x80000000;
    UNLOCK();
    if (((uVar3 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar3)) {
      LOCK();
      uVar3 = *puVar12;
      *puVar12 = *puVar12 | 0x40000000;
      UNLOCK();
      if ((uVar3 >> 0x1e & 1) == 0) {
        pvVar6 = (HANDLE)FUN_1805a9100();
        SetEvent(pvVar6);
      }
    }
  }
  FUN_180660c00(&local_ce0,&local_a88,0);
  local_c38[1] = 0x7ffffffffffffffe;
  local_d08[0] = 0xfffffffe;
  FUN_1805b41e0(&local_be8,local_d08,local_c38 + 1);
  if (local_ce0 != local_be8) {
    FUN_1805c5170(&local_d38,&local_ce0,local_cb8);
    FUN_180661ba0(&local_d38,&local_d30);
    local_bd8 = 0;
    iVar4 = FUN_1805bd370(&local_d38,&local_bd8);
    if ((iVar4 != -1) && (300 < local_d30)) {
      lVar7 = FUN_1805c0220(
                           "The openQuicklyEncryptedChannel client_CallTime to licenseD_CallTime (%d second) was too long "
                           );
      lVar11 = FUN_1805c0260();
      FUN_1805b2520(*(undefined8 *)(lVar7 + 8),&local_d30);
      local_cf8[0] = 0xf63;
      local_c70 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar11 + 8),&local_c70);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,local_cf8);
    }
    FUN_1806a8a70(local_c68);
    FUN_1805c5170(&local_c60,local_c68,&local_ce0);
    local_d38 = local_c60;
    FUN_180661ba0(&local_d38,&local_d30);
    local_c58 = 0;
    iVar4 = FUN_1805bd370(&local_d38,&local_c58);
    if ((iVar4 != -1) && (300 < local_d30)) {
      lVar7 = FUN_1805c0220(
                           "The openQuicklyEncryptedChannel licenseD_CallTime to command finish (%d second) was too long"
                           );
      lVar11 = FUN_1805c0260();
      FUN_1805b2520(*(undefined8 *)(lVar7 + 8),&local_d30);
      local_cf0[0] = 0xf70;
      local_c50 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar11 + 8),&local_c50);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,local_cf0);
    }
    alStack_c90[1] = 0;
    alStack_c90[2] = 0;
    alStack_c90[3] = 0;
    puVar14 = &local_a88;
    if (0xf < local_a70) {
      puVar14 = (undefined1 *)CONCAT71(uStack_a87,local_a88);
    }
    puVar13 = &local_a88;
    if (0xf < local_a70) {
      puVar13 = (undefined1 *)CONCAT71(uStack_a87,local_a88);
    }
    FUN_1805e1990(alStack_c90 + 1,puVar13,puVar14 + local_a78);
    puVar14 = &local_b08;
    if (0xf < local_af0) {
      puVar14 = (undefined1 *)CONCAT71(uStack_b07,local_b08);
    }
    puVar13 = &local_b08;
    if (0xf < local_af0) {
      puVar13 = (undefined1 *)CONCAT71(uStack_b07,local_b08);
    }
    local_d58 = (void **)CONCAT71(local_d58._1_7_,local_d48[0]);
    FUN_1805d5a60(alStack_c90 + 1,alStack_c90[2],puVar13,puVar14 + local_af8);
    FUN_18073d980(&local_aa0,&local_ab8,local_9a8);
    uVar3 = local_d40[0];
    local_d50 = &local_d28;
    local_d58 = (void **)(alStack_c90 + 1);
    uVar15 = (ulonglong)local_d40[0];
    FUN_180938570(local_938,uVar15,&local_a58,local_9a8);
    if (lStack_d20 - (longlong)local_d28 == uVar15) {
      local_a58 = 0;
      local_a50 = 0;
      local_a48 = 0;
      local_a40 = 0;
      local_a38 = 0;
      local_a30 = 0;
      local_a28 = 0;
      local_d58 = &local_d28;
      (**(code **)((longlong)*local_c98 + 0x10))(local_c98,local_d44,1,0);
      memset(local_d28,0,(ulonglong)uVar3);
      FUN_1805b45f0(local_ba0,param_1 + 0x18);
      FUN_180644560(param_1 + 0x48,&local_cc8);
      FUN_1805b7220(local_ba0);
      FUN_180575ed0(alStack_c90 + 1);
      FUN_180575ed0(&local_bd0);
      FUN_180575ed0(&local_bb8);
      FUN_1805a4e80(&local_cc8);
      FUN_180575ed0(&local_d28);
      FUN_1809383a0(local_938);
      FUN_18067cad0(&local_ac8);
      FUN_18067c9c0(&local_b48);
    }
    lVar7 = FUN_1805c0220("The actual key size %d is not the expected size %d");
    lVar11 = FUN_1805c0260();
    local_c48 = lStack_d20 - (longlong)local_d28;
    FUN_1805b2520(*(undefined8 *)(lVar7 + 8),&local_c48);
    FUN_18060e760(*(undefined8 *)(lVar7 + 8),local_d40);
    local_ce8[0] = 0xfab;
    local_c40 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar11 + 8),&local_c40);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_ce8);
  }
  lVar7 = FUN_1805c0220("licenseD_CallTime (%s) is not a valid date");
  lVar11 = FUN_1805c0260();
  FUN_1805b2240(*(undefined8 *)(lVar7 + 8),&local_a88);
  local_d00[0] = 0xf58;
  local_be0 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar11 + 8),&local_be0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,local_d00);
}



############ FUN_ 180672130 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180672130(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18079ee40(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 1806741b0 size=447 ############

void FUN_1806741b0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b5ca0(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180671970 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180671970(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_1807980a0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180673ab0 size=447 ############

void FUN_180673ab0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b0250(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180538300 size=154 ############

undefined8 *
FUN_180538300(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<std::function<float___cdecl(juce::String)>,float,juce::String_const&___ptr64>
            ::vftable;
  puVar2[8] = 0;
  plVar1 = (longlong *)param_1[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_1) {
      uVar3 = (**(code **)(*plVar1 + 8))(plVar1,puVar2 + 1,param_3,param_4,uVar3);
      puVar2[8] = uVar3;
      plVar1 = (longlong *)param_1[7];
      if (plVar1 == (longlong *)0x0) {
        return puVar2;
      }
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1);
    }
    else {
      puVar2[8] = plVar1;
    }
    param_1[7] = 0;
  }
  return puVar2;
}



############ FUN_ 1805351c0 size=44 ############

undefined8 * FUN_1805351c0(undefined8 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x2400c0);
  uVar1 = FUN_180533130(uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1805351f0 size=166 ############

undefined8 *
FUN_1805351f0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,int *param_4,
             undefined8 param_5)

{
  undefined8 uVar1;
  undefined **local_48;
  undefined8 local_40;
  undefined ***local_10;
  
  uVar1 = FUN_1811316e0(0x78);
  local_40 = *param_3;
  local_48 = std::_Func_impl_no_alloc<<lambda_90f11a37284714a0628a84c3c4fcec65>,void,float>::vftable
  ;
  local_10 = &local_48;
  uVar1 = FUN_1811aeda0(uVar1,param_2,&local_48,(double)*param_4,param_5);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 180535580 size=74 ############

undefined8 *
FUN_180535580(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x5408c0);
  uVar1 = FUN_180535ae0(uVar1,*param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 180538220 size=113 ############

undefined8 *
FUN_180538220(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<std::function<float___cdecl(juce::String)>,float,juce::String_const&___ptr64>
            ::vftable;
  puVar2[8] = 0;
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,puVar2 + 1,param_3,param_4,uVar3);
    puVar2[8] = uVar3;
  }
  return puVar2;
}



############ FUN_ 18054a740 size=1079 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

bool FUN_18054a740(longlong param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  uint *puVar1;
  uint uVar2;
  longlong *plVar3;
  longlong *plVar4;
  byte bVar5;
  char cVar6;
  int iVar7;
  int iVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  int iVar12;
  uint uVar13;
  undefined4 local_res8;
  undefined4 uStackX_c;
  longlong *local_res10;
  
  local_res8 = 0;
  *(undefined8 *)(param_1 + 0x18) = param_2;
  FUN_18123d980(param_1 + 0x60,param_3);
  lVar10 = *(longlong *)(param_1 + 0x60);
  if (lVar10 == 0) {
    lVar10 = param_1 + 0x68;
  }
  iVar7 = *(int *)(param_1 + 0x80) >> 5;
  uVar11 = (ulonglong)iVar7;
  uVar9 = uVar11;
  if (-1 < iVar7) {
LAB_18054a7a0:
    uVar13 = *(uint *)(lVar10 + uVar11 * 4);
    if (uVar13 == 0) goto code_r0x00018054a7ab;
    iVar7 = 0x1f;
    if (uVar13 != 0) {
      for (; uVar13 >> iVar7 == 0; iVar7 = iVar7 + -1) {
      }
    }
    iVar7 = (int)uVar9 * 0x20 + iVar7;
    goto LAB_18054a7ba;
  }
LAB_18054a7b4:
  iVar7 = -1;
LAB_18054a7ba:
  iVar12 = *(int *)(param_1 + 0x2c);
  iVar7 = iVar7 - iVar12;
  if (-1 < iVar7) {
    bVar5 = (byte)iVar12 & 0x1f;
    uVar13 = 1 << bVar5 | 1U >> 0x20 - bVar5;
    do {
      if ((-1 < iVar12) && (iVar12 <= *(int *)(param_1 + 0x80))) {
        lVar10 = *(longlong *)(param_1 + 0x60);
        if (lVar10 == 0) {
          lVar10 = param_1 + 0x68;
        }
        puVar1 = (uint *)(lVar10 + (longlong)(iVar12 >> 5) * 4);
        *puVar1 = *puVar1 & ~uVar13;
        if (iVar12 == *(int *)(param_1 + 0x80)) {
          lVar10 = *(longlong *)(param_1 + 0x60);
          if (lVar10 == 0) {
            lVar10 = param_1 + 0x68;
          }
          iVar8 = *(int *)(param_1 + 0x80) >> 5;
          uVar11 = (ulonglong)iVar8;
          uVar9 = uVar11;
          if (-1 < iVar8) {
LAB_18054a830:
            uVar2 = *(uint *)(lVar10 + uVar11 * 4);
            if (uVar2 == 0) goto code_r0x00018054a83c;
            iVar8 = 0x1f;
            if (uVar2 != 0) {
              for (; uVar2 >> iVar8 == 0; iVar8 = iVar8 + -1) {
              }
            }
            iVar8 = (int)uVar9 * 0x20 + iVar8;
            goto LAB_18054a849;
          }
LAB_18054a844:
          iVar8 = -1;
LAB_18054a849:
          *(int *)(param_1 + 0x80) = iVar8;
        }
      }
      iVar12 = iVar12 + 1;
      uVar13 = uVar13 << 1 | (uint)((int)uVar13 < 0);
      iVar7 = iVar7 + -1;
    } while (-1 < iVar7);
  }
  lVar10 = *(longlong *)(param_1 + 0x60);
  if (lVar10 == 0) {
    lVar10 = param_1 + 0x68;
  }
  iVar7 = *(int *)(param_1 + 0x80) >> 5;
  uVar11 = (ulonglong)iVar7;
  uVar9 = uVar11;
  if (-1 < iVar7) {
    do {
      uVar13 = *(uint *)(lVar10 + uVar11 * 4);
      if (uVar13 != 0) {
        iVar7 = 0x1f;
        if (uVar13 != 0) {
          for (; uVar13 >> iVar7 == 0; iVar7 = iVar7 + -1) {
          }
        }
        iVar7 = (int)uVar9 * 0x20 + iVar7;
        goto LAB_18054a899;
      }
      uVar9 = (ulonglong)((int)uVar9 - 1);
      uVar11 = uVar11 - 1;
    } while (-1 < (longlong)uVar11);
  }
  iVar7 = -1;
LAB_18054a899:
  *(int *)(param_1 + 0x28) = iVar7 + 1;
  if (iVar7 + 1 == 0) {
    return true;
  }
  local_res10 = (longlong *)0x0;
  local_res8 = 1;
  plVar3 = *(longlong **)(param_1 + 8);
  if (plVar3 != (longlong *)0x0) {
    local_res10 = (longlong *)0x0;
    (**(code **)(*plVar3 + 0x18))(plVar3,&DAT_1824adc10,1,0,&local_res10);
  }
  plVar3 = local_res10;
  if (local_res10 != (longlong *)0x0) {
    (**(code **)(*local_res10 + 8))();
  }
  plVar4 = *(longlong **)(param_1 + 0x10);
  if (plVar4 != (longlong *)0x0) {
    (**(code **)(*plVar4 + 0x10))(plVar4);
  }
  *(longlong **)(param_1 + 0x10) = plVar3;
  if (local_res10 != (longlong *)0x0) {
    (**(code **)(*local_res10 + 0x10))();
  }
  if ((*(longlong *)(param_1 + 0x10) == 0) ||
     (cVar6 = FUN_18054af40(param_1,param_4), cVar6 == '\0')) {
    return false;
  }
  *(undefined2 *)(param_1 + 0xa4) = 0;
  plVar3 = (longlong *)(param_1 + 0x88);
  FUN_1804d5930(plVar3);
  uVar13 = 0;
  while( true ) {
    lVar10 = *(longlong *)(param_1 + 0x60);
    if (lVar10 == 0) {
      lVar10 = param_1 + 0x68;
    }
    iVar7 = *(int *)(param_1 + 0x80) >> 5;
    uVar11 = (ulonglong)iVar7;
    uVar9 = uVar11;
    if (-1 < iVar7) break;
LAB_18054a9c5:
    iVar7 = -1;
LAB_18054a9ca:
    if (iVar7 < (int)uVar13) {
      iVar7 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x28))
                        (*(longlong **)(param_1 + 0x10),&local_res8);
      if (-1 < iVar7) {
        local_res10 = (longlong *)
                      ((double)CONCAT44(uStackX_c,local_res8) * *(double *)(param_1 + 0x18) *
                       _DAT_1824c3d30 + DAT_1824c4520);
        *(undefined4 *)(param_1 + 0x38) = local_res10._0_4_;
      }
      (**(code **)(**(longlong **)(param_1 + 0x10) + 0x20))
                (*(longlong **)(param_1 + 0x10),param_1 + 0x98);
      FUN_18054ac60(param_1);
      plVar3 = *(longlong **)(param_1 + 0x10);
      if (*(longlong **)(param_1 + 0xe8) != (longlong *)0x0) {
        (**(code **)(**(longlong **)(param_1 + 0xe8) + 0x10))();
      }
      *(undefined8 *)(param_1 + 0xe8) = 0;
      (**(code **)(*plVar3 + 0x70))(plVar3,&DAT_1824ade88,param_1 + 0xe8);
      if (*(longlong *)(param_1 + 0xe8) != 0) {
        local_res10 = (longlong *)FUN_1811316e0(0x18);
        *(undefined4 *)(local_res10 + 1) = 1;
        *local_res10 = (longlong)
                       juce::WasapiClasses::WASAPIDeviceBase::SessionEventCallback::vftable;
        local_res10[2] = param_1;
        FUN_1805555f0(param_1 + 0xf0,local_res10);
        (**(code **)(**(longlong **)(param_1 + 0xe8) + 0x50))
                  (*(longlong **)(param_1 + 0xe8),*(undefined8 *)(param_1 + 0xf0));
        plVar3 = *(longlong **)(param_1 + 0xf0);
        if ((undefined **)*plVar3 ==
            juce::WasapiClasses::WASAPIDeviceBase::SessionEventCallback::vftable) {
          plVar4 = plVar3 + 1;
          *(int *)plVar4 = (int)*plVar4 + -1;
          if ((int)*plVar4 == 0) {
            (*(code *)juce::WasapiClasses::WASAPIDeviceBase::SessionEventCallback::vftable[10])
                      (plVar3,1);
          }
        }
        else {
          (*(code *)((undefined **)*plVar3)[2])();
        }
      }
      iVar7 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x68))
                        (*(longlong **)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x58));
      return -1 < iVar7;
    }
    if (((int)uVar13 <= *(int *)(param_1 + 0x80)) && (-1 < (int)uVar13)) {
      lVar10 = *(longlong *)(param_1 + 0x60);
      if (lVar10 == 0) {
        lVar10 = param_1 + 0x68;
      }
      if ((*(uint *)(lVar10 + (longlong)((int)uVar13 >> 5) * 4) >> (uVar13 & 0x1f) & 1) != 0) {
        iVar12 = *(int *)(param_1 + 0x94);
        iVar7 = iVar12 + 1;
        if (*(int *)(param_1 + 0x90) < iVar7) {
          if (iVar7 < 0) {
            iVar7 = iVar12 + 2;
          }
          FUN_1804af790(plVar3,iVar12 + 9 + (iVar7 >> 1) & 0xfffffff8);
        }
        iVar7 = *(int *)(param_1 + 0x94);
        *(int *)(param_1 + 0x94) = iVar7 + 1;
        *(uint *)(*plVar3 + (longlong)iVar7 * 4) = uVar13;
      }
    }
    uVar13 = uVar13 + 1;
  }
LAB_18054a9b5:
  uVar2 = *(uint *)(lVar10 + uVar11 * 4);
  if (uVar2 == 0) goto code_r0x00018054a9bd;
  iVar7 = 0x1f;
  if (uVar2 != 0) {
    for (; uVar2 >> iVar7 == 0; iVar7 = iVar7 + -1) {
    }
  }
  iVar7 = (int)uVar9 * 0x20 + iVar7;
  goto LAB_18054a9ca;
code_r0x00018054a7ab:
  uVar11 = uVar11 - 1;
  uVar9 = (ulonglong)((int)uVar9 - 1);
  if ((longlong)uVar11 < 0) goto LAB_18054a7b4;
  goto LAB_18054a7a0;
code_r0x00018054a83c:
  uVar9 = (ulonglong)((int)uVar9 - 1);
  uVar11 = uVar11 - 1;
  if ((longlong)uVar11 < 0) goto LAB_18054a844;
  goto LAB_18054a830;
code_r0x00018054a9bd:
  uVar9 = (ulonglong)((int)uVar9 - 1);
  uVar11 = uVar11 - 1;
  if ((longlong)uVar11 < 0) goto LAB_18054a9c5;
  goto LAB_18054a9b5;
}



############ FUN_ 18054b300 size=310 ############

void FUN_18054b300(longlong param_1,char param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (param_2 != '\0') {
    puVar3 = (undefined8 *)FUN_1811316e0(0x10);
    uVar1 = *(undefined4 *)(param_1 + 0x2c);
    *puVar3 = juce::AudioData::
              ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::NonConst>_>
              ::vftable;
    *(undefined4 *)(puVar3 + 1) = uVar1;
    *(undefined4 *)((longlong)puVar3 + 0xc) = 1;
    puVar2 = *(undefined8 **)(param_1 + 0x128);
    *(undefined8 **)(param_1 + 0x128) = puVar3;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1,param_3,param_4,uVar4);
    }
    return;
  }
  if (*(int *)(param_1 + 0x9c) == 4) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x10);
    uVar1 = *(undefined4 *)(param_1 + 0x2c);
    *puVar3 = juce::AudioData::
              ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Int32,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::NonConst>_>
              ::vftable;
    *(undefined4 *)(puVar3 + 1) = uVar1;
    *(undefined4 *)((longlong)puVar3 + 0xc) = 1;
    puVar2 = *(undefined8 **)(param_1 + 0x128);
    *(undefined8 **)(param_1 + 0x128) = puVar3;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    return;
  }
  if (*(int *)(param_1 + 0x9c) == 3) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x10);
    uVar1 = *(undefined4 *)(param_1 + 0x2c);
    *puVar3 = juce::AudioData::
              ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Int24,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::NonConst>_>
              ::vftable;
    *(undefined4 *)(puVar3 + 1) = uVar1;
    *(undefined4 *)((longlong)puVar3 + 0xc) = 1;
    puVar2 = *(undefined8 **)(param_1 + 0x128);
    *(undefined8 **)(param_1 + 0x128) = puVar3;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    return;
  }
  puVar3 = (undefined8 *)FUN_1811316e0(0x10);
  uVar1 = *(undefined4 *)(param_1 + 0x2c);
  *puVar3 = juce::AudioData::
            ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Int16,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::NonConst>_>
            ::vftable;
  *(undefined4 *)(puVar3 + 1) = uVar1;
  *(undefined4 *)((longlong)puVar3 + 0xc) = 1;
  puVar2 = *(undefined8 **)(param_1 + 0x128);
  *(undefined8 **)(param_1 + 0x128) = puVar3;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  return;
}



############ FUN_ 18054b640 size=166 ############

void FUN_18054b640(longlong param_1,char param_2)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined **ppuVar4;
  
  if (param_2 == '\0') {
    if (*(int *)(param_1 + 0x9c) == 4) {
      puVar3 = (undefined8 *)FUN_1811316e0(0x10);
      ppuVar4 = juce::AudioData::
                ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Int32,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::NonConst>_>
                ::vftable;
    }
    else if (*(int *)(param_1 + 0x9c) == 3) {
      puVar3 = (undefined8 *)FUN_1811316e0(0x10);
      ppuVar4 = juce::AudioData::
                ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Int24,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::NonConst>_>
                ::vftable;
    }
    else {
      puVar3 = (undefined8 *)FUN_1811316e0(0x10);
      ppuVar4 = juce::AudioData::
                ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Int16,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::NonConst>_>
                ::vftable;
    }
    *(undefined4 *)((longlong)puVar3 + 0xc) = *(undefined4 *)(param_1 + 0x2c);
    *puVar3 = ppuVar4;
  }
  else {
    puVar3 = (undefined8 *)FUN_1811316e0(0x10);
    uVar1 = *(undefined4 *)(param_1 + 0x2c);
    *puVar3 = juce::AudioData::
              ConverterInstance<juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::NativeEndian,juce::AudioData::NonInterleaved,juce::AudioData::Const>,juce::AudioData::Pointer<juce::AudioData::Float32,juce::AudioData::LittleEndian,juce::AudioData::Interleaved,juce::AudioData::NonConst>_>
              ::vftable;
    *(undefined4 *)((longlong)puVar3 + 0xc) = uVar1;
  }
  *(undefined4 *)(puVar3 + 1) = 1;
  puVar2 = *(undefined8 **)(param_1 + 0x100);
  *(undefined8 **)(param_1 + 0x100) = puVar3;
  if (puVar2 != (undefined8 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018054b6dd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)*puVar2)(puVar2,1);
    return;
  }
  return;
}



############ FUN_ 18054d8d0 size=1131 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18054d8d0(longlong param_1)

{
  uint *puVar1;
  uint uVar2;
  undefined8 *puVar3;
  HRESULT HVar4;
  int iVar5;
  int iVar6;
  undefined8 *puVar7;
  undefined ***pppuVar8;
  undefined ***pppuVar9;
  char *pcVar10;
  uint uVar11;
  undefined1 auStackY_148 [32];
  longlong *local_110;
  uint local_108 [2];
  char *local_100;
  int local_f8 [2];
  longlong *local_f0;
  longlong *local_e8;
  longlong *local_e0;
  undefined8 local_d8;
  undefined8 *local_d0;
  undefined8 *local_c8;
  undefined **local_b8;
  longlong local_b0;
  undefined ***local_80;
  undefined **local_78;
  longlong local_70;
  undefined ***local_40;
  ulonglong local_38;
  
  local_d8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStackY_148;
  uVar11 = 0;
  local_e0 = (longlong *)0x0;
  HVar4 = CoCreateInstance((IID *)&DAT_1824ae0a0,(LPUNKNOWN)0x0,1,(IID *)&DAT_1824adbb8,&local_e0);
  if (-1 < HVar4) {
    local_e8 = (longlong *)0x0;
    iVar5 = (**(code **)(*local_e0 + 0x18))(local_e0,2,1,&local_e8);
    if (-1 < iVar5) {
      local_108[0] = 0;
      iVar5 = (**(code **)(*local_e8 + 0x18))(local_e8,local_108);
      if ((-1 < iVar5) && (local_108[0] != 0)) {
        do {
          local_110 = (longlong *)0x0;
          iVar5 = (**(code **)(*local_e8 + 0x20))(local_e8,uVar11,&local_110);
          if (iVar5 < 0) {
            if (local_110 != (longlong *)0x0) {
              (**(code **)(*local_110 + 0x10))();
            }
          }
          else {
            FUN_1813b4890(&local_100,local_110);
            if (*local_100 == '\0') {
              puVar1 = (uint *)(local_100 + -0x10);
              if ((*puVar1 & 0x30000000) == 0) {
                LOCK();
                uVar2 = *puVar1;
                *puVar1 = *puVar1 - 1;
                UNLOCK();
                if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar1);
                }
              }
              if (local_110 != (longlong *)0x0) {
                (**(code **)(*local_110 + 0x10))();
              }
            }
            else {
              local_f8[0] = 0;
              local_f0 = (longlong *)0x0;
              if (local_110 != (longlong *)0x0) {
                local_f0 = (longlong *)0x0;
                iVar5 = (**(code **)*local_110)(local_110,&DAT_1824adb10,&local_f0);
                if (-1 < iVar5) {
                  (**(code **)(*local_f0 + 0x18))(local_f0,local_f8);
                }
              }
              iVar5 = local_f8[0];
              if (local_f0 != (longlong *)0x0) {
                (**(code **)(*local_f0 + 0x10))();
              }
              pcVar10 = local_100;
              iVar6 = 0;
              if (local_100 != *(char **)(param_1 + 0x230)) {
                iVar6 = FUN_18048cbc0(local_100,*(undefined8 *)(param_1 + 0x230));
              }
              if ((iVar6 == 0) && (iVar5 == 1)) {
                puVar7 = (undefined8 *)FUN_1811316e0(0x130);
                local_b8 = std::_Func_impl_no_alloc<<lambda_7b6b0df3295af9b8aabf61b2dc45a9f1>,void>
                           ::vftable;
                local_80 = &local_b8;
                local_d0 = puVar7;
                local_b0 = param_1;
                FUN_18054a0b0(puVar7,&local_110,*(undefined1 *)(param_1 + 0x250),&local_b8);
                *puVar7 = juce::WasapiClasses::WASAPIInputDevice::vftable;
                puVar7[0x1f] = 0;
                puVar7[0x20] = 0;
                puVar7[0x21] = 0;
                puVar7[0x25] = 0;
                puVar3 = *(undefined8 **)(param_1 + 0x240);
                *(undefined8 **)(param_1 + 0x240) = puVar7;
                if (puVar3 != (undefined8 *)0x0) {
                  (**(code **)*puVar3)(puVar3,1);
                }
                pcVar10 = local_100;
                if (local_80 != (undefined ***)0x0) {
                  pppuVar8 = &local_b8;
                  pppuVar9 = local_80;
LAB_18054dc4a:
                  (*(code *)(*pppuVar9)[4])(pppuVar9,pppuVar9 != pppuVar8);
                  pcVar10 = local_100;
                }
              }
              else {
                iVar6 = 0;
                if (pcVar10 != *(char **)(param_1 + 0x228)) {
                  iVar6 = FUN_18048cbc0(pcVar10,*(undefined8 *)(param_1 + 0x228));
                }
                if ((iVar6 == 0) && (iVar5 == 0)) {
                  puVar7 = (undefined8 *)FUN_1811316e0(0x108);
                  local_78 = std::
                             _Func_impl_no_alloc<<lambda_7b6b0df3295af9b8aabf61b2dc45a9f1>,void>::
                             vftable;
                  local_40 = &local_78;
                  local_c8 = puVar7;
                  local_70 = param_1;
                  FUN_18054a0b0(puVar7,&local_110,*(undefined1 *)(param_1 + 0x250),&local_78);
                  *puVar7 = juce::WasapiClasses::WASAPIOutputDevice::vftable;
                  puVar7[0x1f] = 0;
                  puVar7[0x20] = 0;
                  puVar3 = *(undefined8 **)(param_1 + 0x248);
                  *(undefined8 **)(param_1 + 0x248) = puVar7;
                  if (puVar3 != (undefined8 *)0x0) {
                    (**(code **)*puVar3)(puVar3,1);
                  }
                  pcVar10 = local_100;
                  if (local_40 != (undefined ***)0x0) {
                    pppuVar8 = &local_78;
                    pppuVar9 = local_40;
                    goto LAB_18054dc4a;
                  }
                }
              }
              puVar1 = (uint *)(pcVar10 + -0x10);
              if ((*puVar1 & 0x30000000) == 0) {
                LOCK();
                uVar2 = *puVar1;
                *puVar1 = *puVar1 - 1;
                UNLOCK();
                if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar1);
                }
              }
              if (local_110 != (longlong *)0x0) {
                (**(code **)(*local_110 + 0x10))();
              }
            }
          }
          uVar11 = uVar11 + 1;
        } while (uVar11 < local_108[0]);
      }
    }
    if (local_e8 != (longlong *)0x0) {
      (**(code **)(*local_e8 + 0x10))();
    }
  }
  if (local_e0 != (longlong *)0x0) {
    (**(code **)(*local_e0 + 0x10))();
  }
}



############ FUN_ 18054e570 size=1515 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18054e570(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  int *piVar1;
  longlong *plVar2;
  LPVOID *ppv;
  undefined8 *puVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 uVar6;
  HRESULT HVar7;
  int iVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  uint *puVar11;
  undefined8 uVar12;
  uint uVar13;
  longlong **pplVar14;
  uint uVar15;
  bool bVar16;
  undefined1 auStackY_138 [32];
  longlong *local_108;
  uint local_100;
  int local_fc;
  undefined8 local_f8;
  longlong *local_f0;
  longlong *local_e8;
  longlong *local_e0;
  longlong *local_d8;
  longlong *local_d0;
  longlong *local_c8;
  longlong *local_c0;
  longlong *local_b8;
  longlong *local_b0;
  longlong *local_a8;
  longlong *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  ulonglong local_50;
  
  local_70 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStackY_138;
  local_90 = param_5;
  ppv = (LPVOID *)(param_1 + 0x90);
  uVar15 = 0;
  local_f8 = param_3;
  local_98 = param_4;
  if (*ppv == (LPVOID)0x0) {
    if (*ppv != (longlong *)0x0) {
      (**(code **)(*(longlong *)*ppv + 0x10))();
    }
    *ppv = (LPVOID)0x0;
    HVar7 = CoCreateInstance((IID *)&DAT_1824ae0a0,(LPUNKNOWN)0x0,1,(IID *)&DAT_1824adbb8,ppv);
    if (HVar7 < 0) {
    }
    plVar9 = (longlong *)FUN_1811316e0(0x18);
    *(undefined4 *)(plVar9 + 1) = 0;
    *plVar9 = (longlong)
              juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable;
    plVar5 = plVar9 + 2;
    local_d0 = plVar5;
    local_c8 = plVar9;
    if (*(longlong *)(param_1 + 0xa0) == 0) {
      puVar10 = (undefined8 *)FUN_1811316e0(0x18);
      *(undefined4 *)(puVar10 + 1) = 0;
      *puVar10 = juce::
                 WeakReference<juce::WasapiClasses::WASAPIAudioIODeviceType,juce::ReferenceCountedObject>
                 ::SharedPointer::vftable;
      puVar10[2] = param_1;
      if (*(undefined8 **)(param_1 + 0xa0) != puVar10) {
        LOCK();
        *(int *)(puVar10 + 1) = *(int *)(puVar10 + 1) + 1;
        UNLOCK();
        puVar3 = *(undefined8 **)(param_1 + 0xa0);
        *(undefined8 **)(param_1 + 0xa0) = puVar10;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar8 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar8 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
    }
    lVar4 = *(longlong *)(param_1 + 0xa0);
    *plVar5 = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
      UNLOCK();
    }
    if ((undefined **)*plVar9 ==
        juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable) {
      *(int *)(plVar9 + 1) = (int)plVar9[1] + 1;
    }
    else {
      (*(code *)((undefined **)*plVar9)[1])(plVar9);
    }
    plVar5 = *(longlong **)(param_1 + 0x98);
    if (plVar5 != (longlong *)0x0) {
      if ((undefined **)*plVar5 ==
          juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable) {
        plVar2 = plVar5 + 1;
        *(int *)plVar2 = (int)*plVar2 + -1;
        if ((int)*plVar2 == 0) {
          (*(code *)juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable
                    [8])(plVar5,1);
        }
      }
      else {
        (*(code *)((undefined **)*plVar5)[2])();
      }
    }
    *(longlong **)(param_1 + 0x98) = plVar9;
    (**(code **)(*(longlong *)*ppv + 0x30))(*ppv,plVar9);
  }
  uVar6 = local_f8;
  FUN_18054e490(&local_a0,*ppv,0);
  FUN_18054e490(&local_a8,*ppv,1);
  local_100 = 0;
  local_d8 = (longlong *)0x0;
  iVar8 = (**(code **)(*(longlong *)*ppv + 0x18))(*ppv,2,1,&local_d8);
  if ((-1 < iVar8) && (iVar8 = (**(code **)(*local_d8 + 0x18))(local_d8,&local_100), -1 < iVar8)) {
    if (local_100 != 0) {
      do {
        local_108 = (longlong *)0x0;
        iVar8 = (**(code **)(*local_d8 + 0x20))(local_d8,uVar15,&local_108);
        if (iVar8 < 0) {
          if (local_108 != (longlong *)0x0) {
            (**(code **)(*local_108 + 0x10))();
          }
        }
        else {
          local_fc = 0;
          iVar8 = (**(code **)(*local_108 + 0x30))(local_108,&local_fc);
          if ((iVar8 < 0) || (local_fc != 1)) {
            if (local_108 != (longlong *)0x0) {
              (**(code **)(*local_108 + 0x10))();
            }
          }
          else {
            FUN_1813b4890(&local_e0,local_108);
            local_e8 = (longlong *)&DAT_1821dbf98;
            local_f0 = (longlong *)0x0;
            iVar8 = (**(code **)(*local_108 + 0x20))(local_108,0,&local_f0);
            if (iVar8 < 0) {
              if (local_f0 != (longlong *)0x0) {
                (**(code **)(*local_f0 + 0x10))();
              }
              if ((DAT_1821dbf88 & 0x30000000) == 0) {
                LOCK();
                uVar13 = DAT_1821dbf88 - 1;
                UNLOCK();
                bVar16 = DAT_1821dbf88 == 0;
                DAT_1821dbf88 = uVar13;
                if (bVar16) {
                    /* WARNING: Subroutine does not return */
                  free(&DAT_1821dbf88);
                }
              }
              puVar11 = (uint *)(local_e0 + -2);
              if ((*puVar11 & 0x30000000) == 0) {
                LOCK();
                uVar13 = *puVar11;
                *puVar11 = *puVar11 - 1;
                UNLOCK();
                if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar11);
                }
              }
              if (local_108 != (longlong *)0x0) {
                (**(code **)(*local_108 + 0x10))();
              }
            }
            else {
              local_88 = 0;
              local_80 = 0;
              local_78 = 0;
              local_68 = 0xa45c254e;
              local_64 = 0x4efddf1c;
              local_60 = 0xd1672080;
              local_5c = 0xe050a846;
              local_58 = 0xe;
              iVar8 = (**(code **)(*local_f0 + 0x28))(local_f0,&local_68,&local_88);
              if (-1 < iVar8) {
                FUN_18049c800(&local_c0,local_80);
                local_e8 = local_c0;
                local_c0 = (longlong *)&DAT_1821dbf98;
                if ((DAT_1821dbf88 & 0x30000000) == 0) {
                  LOCK();
                  uVar13 = DAT_1821dbf88 - 1;
                  UNLOCK();
                  bVar16 = DAT_1821dbf88 == 0;
                  DAT_1821dbf88 = uVar13;
                  if (bVar16) {
                    /* WARNING: Subroutine does not return */
                    free(&DAT_1821dbf88);
                  }
                }
              }
              PropVariantClear((PROPVARIANT *)&local_88);
              if (local_f0 != (longlong *)0x0) {
                (**(code **)(*local_f0 + 0x10))();
              }
              iVar8 = FUN_1813b4810(&local_108);
              plVar5 = local_e0;
              if (iVar8 == 0) {
                iVar8 = 0;
                if (local_e0 != local_a0) {
                  iVar8 = FUN_18048cbc0(local_e0);
                }
                uVar13 = (uint)(iVar8 == 0);
                local_b8 = plVar5;
                if ((*(uint *)(plVar5 + -2) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(plVar5 + -2) = (int)plVar5[-2] + 1;
                  UNLOCK();
                }
                FUN_18122dbb0(local_98,uVar13 - 1,&local_b8);
                local_b0 = local_e8;
                if ((*(uint *)(local_e8 + -2) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(local_e8 + -2) = (int)local_e8[-2] + 1;
                  UNLOCK();
                }
                pplVar14 = &local_b0;
                uVar12 = param_2;
LAB_18054ea35:
                FUN_18122dbb0(uVar12,uVar13 - 1,pplVar14);
              }
              else if (iVar8 == 1) {
                iVar8 = 0;
                if (local_e0 != local_a8) {
                  iVar8 = FUN_18048cbc0(local_e0);
                }
                uVar13 = (uint)(iVar8 == 0);
                local_d0 = plVar5;
                if ((*(uint *)(plVar5 + -2) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(plVar5 + -2) = (int)plVar5[-2] + 1;
                  UNLOCK();
                }
                FUN_18122dbb0(local_90,uVar13 - 1,&local_d0);
                local_c8 = local_e8;
                if ((*(uint *)(local_e8 + -2) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(local_e8 + -2) = (int)local_e8[-2] + 1;
                  UNLOCK();
                }
                pplVar14 = &local_c8;
                uVar12 = uVar6;
                goto LAB_18054ea35;
              }
              puVar11 = (uint *)(local_e8 + -2);
              if ((*puVar11 & 0x30000000) == 0) {
                LOCK();
                uVar13 = *puVar11;
                *puVar11 = *puVar11 - 1;
                UNLOCK();
                if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar11);
                }
              }
              puVar11 = (uint *)(local_e0 + -2);
              if ((*puVar11 & 0x30000000) == 0) {
                LOCK();
                uVar13 = *puVar11;
                *puVar11 = *puVar11 - 1;
                UNLOCK();
                if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar11);
                }
              }
              if (local_108 != (longlong *)0x0) {
                (**(code **)(*local_108 + 0x10))();
              }
            }
          }
        }
        uVar15 = uVar15 + 1;
      } while (uVar15 < local_100);
    }
    FUN_18122cad0(uVar6);
    FUN_18122cad0(param_2);
  }
  if (local_d8 != (longlong *)0x0) {
    (**(code **)(*local_d8 + 0x10))();
  }
  puVar11 = (uint *)(local_a8 + -2);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar15 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_a0 + -2);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar15 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
}



############ FUN_ 18054e2d0 size=369 ############

undefined8 * FUN_18054e2d0(longlong param_1,undefined8 *param_2,undefined8 *param_3)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  longlong lVar9;
  int iVar10;
  
  uVar5 = *param_2;
  iVar10 = 0;
  iVar1 = *(int *)(param_1 + 0x54);
  if (0 < iVar1) {
    lVar9 = 0;
    puVar8 = *(undefined8 **)(param_1 + 0x48);
    do {
      iVar3 = FUN_18048cbc0(uVar5,*puVar8);
      if (iVar3 == 0) goto LAB_18054e344;
      iVar10 = iVar10 + 1;
      lVar9 = lVar9 + 1;
      puVar8 = puVar8 + 1;
    } while (lVar9 < iVar1);
  }
  iVar10 = -1;
LAB_18054e344:
  uVar5 = *param_3;
  iVar3 = 0;
  iVar1 = *(int *)(param_1 + 0x74);
  if (0 < iVar1) {
    lVar9 = 0;
    puVar8 = *(undefined8 **)(param_1 + 0x68);
    do {
      iVar4 = FUN_18048cbc0(uVar5,*puVar8);
      if (iVar4 == 0) goto LAB_18054e382;
      iVar3 = iVar3 + 1;
      lVar9 = lVar9 + 1;
      puVar8 = puVar8 + 1;
    } while (lVar9 < iVar1);
  }
  iVar3 = -1;
LAB_18054e382:
  if ((-1 < iVar10) || (-1 < iVar3)) {
    uVar5 = FUN_1811316e0(0x328);
    if (*(char *)*param_2 != '\0') {
      param_3 = param_2;
    }
    uVar6 = FUN_181249970(param_1 + 0x78,iVar3);
    uVar7 = FUN_181249970(param_1 + 0x58,iVar10);
    puVar8 = (undefined8 *)
             FUN_18054b9d0(uVar5,param_3,param_1 + 8,uVar7,uVar6,*(undefined1 *)(param_1 + 0x88));
    cVar2 = FUN_18054bdc0(puVar8);
    if (cVar2 != '\0') {
      return puVar8;
    }
    if (puVar8 != (undefined8 *)0x0) {
      (**(code **)*puVar8)(puVar8,1);
    }
  }
  return (undefined8 *)0x0;
}



############ FUN_ 180552290 size=251 ############

undefined8 FUN_180552290(longlong param_1,undefined8 *param_2,undefined8 *param_3)

{
  int iVar1;
  int iVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  
  uVar3 = *param_2;
  uVar6 = 0;
  iVar1 = *(int *)(param_1 + 0x54);
  if (0 < iVar1) {
    puVar9 = *(undefined8 **)(param_1 + 0x48);
    uVar8 = uVar6;
    uVar7 = uVar6;
    do {
      iVar4 = (int)uVar8;
      iVar2 = FUN_18048cbc0(uVar3,*puVar9);
      if (iVar2 == 0) goto LAB_1805522f5;
      uVar8 = (ulonglong)(iVar4 + 1);
      uVar7 = uVar7 + 1;
      puVar9 = puVar9 + 1;
    } while ((longlong)uVar7 < (longlong)iVar1);
  }
  iVar4 = -1;
LAB_1805522f5:
  uVar3 = *param_3;
  iVar1 = *(int *)(param_1 + 100);
  if (0 < iVar1) {
    puVar9 = *(undefined8 **)(param_1 + 0x58);
    uVar8 = uVar6;
    do {
      iVar5 = (int)uVar6;
      iVar2 = FUN_18048cbc0(uVar3,*puVar9);
      if (iVar2 == 0) goto LAB_180552332;
      uVar6 = (ulonglong)(iVar5 + 1);
      uVar8 = uVar8 + 1;
      puVar9 = puVar9 + 1;
    } while ((longlong)uVar8 < (longlong)iVar1);
  }
  iVar5 = -1;
LAB_180552332:
  if ((iVar4 < 0) && (iVar5 < 0)) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_1811316e0(0x600);
    if (*(char *)*param_2 != '\0') {
      param_3 = param_2;
    }
    uVar3 = FUN_1805509c0(uVar3,param_3,iVar4,iVar5);
  }
  return uVar3;
}



############ FUN_ 180552970 size=125 ############

void FUN_180552970(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x50);
  *puVar1 = juce::Win32MidiService::Win32InputWrapper::vftable;
  puVar1[1] = param_2;
  puVar1[2] = param_4;
  *(undefined4 *)((longlong)puVar1 + 0x1c) = 0;
  puVar1[4] = 0;
  puVar1[5] = 0x1000;
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 1805531b0 size=952 ############

void FUN_1805531b0(longlong *param_1,longlong param_2,longlong *param_3)

{
  uint *_Memory;
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar2;
  uint uVar3;
  longlong lVar4;
  MMRESULT MVar5;
  undefined8 *dwInstance;
  int iVar6;
  uint *puVar7;
  longlong *plVar8;
  longlong *plVar9;
  UINT UVar10;
  bool bVar11;
  UINT local_res20;
  undefined1 *local_b8;
  longlong *local_a8;
  int local_9c;
  undefined1 *local_98;
  longlong local_90;
  undefined1 *local_88;
  longlong local_80;
  HMIDIIN local_78;
  undefined8 local_70;
  LPCRITICAL_SECTION local_68;
  undefined8 *local_60;
  undefined1 local_58 [32];
  
  local_70 = 0xfffffffffffffffe;
  local_res20 = 0xffffffff;
  local_b8 = &DAT_1821dbf98;
  FUN_180554b70(&local_a8);
  UVar10 = 0;
  plVar9 = local_a8;
  if (0 < local_9c) {
    do {
      local_98 = (undefined1 *)*plVar9;
      puVar7 = (uint *)(local_98 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        *puVar7 = *puVar7 + 1;
        UNLOCK();
      }
      local_90 = plVar9[1];
      _Memory = (uint *)(local_90 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        *_Memory = *_Memory + 1;
        UNLOCK();
      }
      if (local_90 == *param_3) {
        iVar6 = 0;
      }
      else {
        iVar6 = FUN_18048cbc0(local_90,*param_3);
      }
      if (iVar6 == 0) {
        if ((*(uint *)(local_98 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_98 + -0x10) = *(int *)(local_98 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        local_b8 = local_98;
        UNLOCK();
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar3 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar11 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar3;
          if (bVar11) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
        puVar7 = (uint *)(local_90 + -0x10);
        if ((*puVar7 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar7;
          *puVar7 = *puVar7 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar7);
          }
        }
        local_res20 = UVar10;
        if ((*(uint *)(local_98 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar1 = (int *)(local_98 + -0x10);
          iVar6 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
            free(local_98 + -0x10);
          }
        }
        break;
      }
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar3 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      UVar10 = UVar10 + 1;
      plVar9 = plVar9 + 2;
    } while ((int)UVar10 < local_9c);
  }
  lpCriticalSection = (LPCRITICAL_SECTION)(param_2 + 0x20);
  local_68 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  plVar9 = (longlong *)(param_2 + 0x50);
  plVar8 = (longlong *)*plVar9;
  plVar2 = plVar8 + *(int *)(param_2 + 0x5c);
  if (plVar8 != plVar2) {
    lVar4 = *param_3;
    do {
      if (*(longlong *)(*plVar8 + 0x18) == lVar4) {
        iVar6 = 0;
      }
      else {
        iVar6 = FUN_18048cbc0(*(undefined8 *)(*plVar8 + 0x18),lVar4);
      }
      if (iVar6 == 0) {
        lVar4 = *plVar8;
        *param_1 = lVar4;
        if (lVar4 != 0) {
          LOCK();
          *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
          UNLOCK();
        }
        LeaveCriticalSection(lpCriticalSection);
        FUN_180555c90(&local_a8);
                    /* WARNING: Subroutine does not return */
        free(local_a8);
      }
      plVar8 = plVar8 + 1;
    } while (plVar8 != plVar2);
  }
  dwInstance = (undefined8 *)FUN_1811316e0(0x2e80);
  local_88 = local_b8;
  if ((*(uint *)(local_b8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_b8 + -0x10) = *(int *)(local_b8 + -0x10) + 1;
    UNLOCK();
  }
  local_80 = *param_3;
  if ((*(uint *)(local_80 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_80 + -0x10) = *(int *)(local_80 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(dwInstance + 1) = 0;
  *dwInstance = juce::Win32MidiService::MidiInCollector::vftable;
  dwInstance[2] = local_b8;
  if ((*(uint *)(local_b8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_b8 + -0x10) = *(int *)(local_b8 + -0x10) + 1;
    UNLOCK();
  }
  dwInstance[3] = local_80;
  if ((*(uint *)(local_80 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_80 + -0x10) = *(int *)(local_80 + -0x10) + 1;
    UNLOCK();
  }
  dwInstance[4] = 0;
  dwInstance[5] = param_2;
  InitializeCriticalSection((LPCRITICAL_SECTION)(dwInstance + 6));
  dwInstance[0xc] = 0;
  dwInstance[0xd] = 0;
  *(undefined1 *)(dwInstance + 0xe) = 0;
  dwInstance[0xf] = 0;
  FUN_1804d1090(&local_88);
  LOCK();
  *(int *)(dwInstance + 1) = *(int *)(dwInstance + 1) + 1;
  UNLOCK();
  local_60 = dwInstance;
  MVar5 = midiInOpen(&local_78,local_res20,0x180552e30,(DWORD_PTR)dwInstance,0x30000);
  if (MVar5 != 0) {
    FUN_1805499d0(local_58,"Failed to create Windows input device wrapper");
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_58,(ThrowInfo *)&DAT_1825feea8);
  }
  dwInstance[4] = local_78;
  iVar6 = *(int *)(param_2 + 0x5c) + 1;
  if (*(int *)(param_2 + 0x58) < iVar6) {
    FUN_18047cb30(plVar9,*(int *)(param_2 + 0x5c) + 9 + iVar6 / 2 & 0xfffffff8);
  }
  iVar6 = *(int *)(param_2 + 0x5c);
  *(int *)(param_2 + 0x5c) = iVar6 + 1;
  *(undefined8 **)(*plVar9 + (longlong)iVar6 * 8) = dwInstance;
  LOCK();
  *(int *)(dwInstance + 1) = *(int *)(dwInstance + 1) + 1;
  UNLOCK();
  *param_1 = (longlong)dwInstance;
  LeaveCriticalSection(lpCriticalSection);
  FUN_180555c90(&local_a8);
                    /* WARNING: Subroutine does not return */
  free(local_a8);
}



############ FUN_ 180552af0 size=67 ############

void FUN_180552af0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x18);
  FUN_180553670(uVar1,param_1,param_2,param_4,uVar2);
  return;
}



############ FUN_ 180553670 size=1078 ############

void FUN_180553670(undefined8 *param_1,undefined8 param_2,longlong *param_3)

{
  uint *_Memory;
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  int iVar5;
  MMRESULT MVar6;
  uint uVar7;
  undefined8 *puVar8;
  uint *puVar9;
  int *piVar10;
  UINT UVar11;
  longlong lVar12;
  longlong *plVar13;
  HMIDIOUT pHVar14;
  UINT uDeviceID;
  bool bVar15;
  undefined1 *local_res10;
  HMIDIOUT local_res20;
  longlong *local_b8;
  int local_ac;
  undefined8 *local_a8;
  undefined1 *local_a0;
  longlong local_98;
  undefined1 *local_90;
  longlong local_88;
  undefined8 *local_80;
  longlong local_78;
  longlong local_70;
  undefined8 local_68;
  undefined1 local_60 [32];
  
  local_68 = 0xfffffffffffffffe;
  *param_1 = juce::Win32MidiService::Win32OutputWrapper::vftable;
  param_1[1] = param_2;
  local_a8 = param_1 + 2;
  *local_a8 = 0;
  FUN_180554470(&local_b8);
  local_res10 = &DAT_1821dbf98;
  uDeviceID = 0;
  plVar13 = local_b8;
  UVar11 = 0xffffffff;
  if (0 < local_ac) {
    do {
      local_a0 = (undefined1 *)*plVar13;
      puVar9 = (uint *)(local_a0 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        *puVar9 = *puVar9 + 1;
        UNLOCK();
      }
      local_98 = plVar13[1];
      _Memory = (uint *)(local_98 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        *_Memory = *_Memory + 1;
        UNLOCK();
      }
      if (local_98 == *param_3) {
        iVar5 = 0;
      }
      else {
        iVar5 = FUN_18048cbc0(local_98,*param_3);
      }
      if (iVar5 == 0) {
        if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        local_res10 = local_a0;
        UNLOCK();
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar7 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar15 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar7;
          if (bVar15) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
        puVar9 = (uint *)(local_98 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar10 = (int *)(local_a0 + -0x10);
          iVar5 = *piVar10;
          *piVar10 = *piVar10 + -1;
          UNLOCK();
          if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
            free(local_a0 + -0x10);
          }
        }
        UVar11 = uDeviceID;
        if (uDeviceID != 0xffffffff) goto LAB_1805538d2;
        break;
      }
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar7 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      uDeviceID = uDeviceID + 1;
      plVar13 = plVar13 + 2;
    } while ((int)uDeviceID < local_ac);
  }
  uDeviceID = UVar11;
  UVar11 = 0;
  if (0 < local_ac) {
    do {
      FUN_180555f30(&local_b8,&local_78);
      iVar5 = FUN_18049d2f0(local_78,"microsoft");
      puVar9 = (uint *)(local_70 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_78 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      if (-1 < iVar5) {
        uDeviceID = UVar11;
      }
      UVar11 = UVar11 + 1;
    } while ((int)UVar11 < local_ac);
  }
LAB_1805538d2:
  iVar5 = *(int *)(param_1[1] + 0x6c) + -1;
  if (-1 < iVar5) {
    lVar1 = *param_3;
    lVar12 = (longlong)iVar5;
    lVar2 = *(longlong *)(param_1[1] + 0x60);
    do {
      lVar3 = *(longlong *)(lVar2 + lVar12 * 8);
      if (*(longlong *)(lVar3 + 0x20) == lVar1) {
        iVar5 = 0;
      }
      else {
        iVar5 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 0x20),*param_3);
      }
      if (iVar5 == 0) {
        FUN_180554b10(local_a8,lVar3);
        uVar7 = *(uint *)(local_res10 + -0x10);
        goto LAB_180553a59;
      }
      lVar12 = lVar12 + -1;
    } while (-1 < lVar12);
  }
  iVar5 = 3;
  do {
    local_res20 = (HMIDIOUT)0x0;
    MVar6 = midiOutOpen(&local_res20,uDeviceID,0,0,0);
    if (MVar6 == 0) {
      puVar8 = (undefined8 *)FUN_1811316e0(0x30);
      local_90 = local_res10;
      if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
        UNLOCK();
      }
      local_88 = *param_3;
      if ((*(uint *)(local_88 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_88 + -0x10) = *(int *)(local_88 + -0x10) + 1;
        UNLOCK();
      }
      uVar4 = param_1[1];
      *(undefined4 *)(puVar8 + 1) = 0;
      *puVar8 = juce::Win32MidiService::MidiOutHandle::vftable;
      puVar8[2] = uVar4;
      pHVar14 = local_res20;
      local_80 = puVar8;
      FUN_180549a80(puVar8 + 3,&local_90);
      puVar8[5] = pHVar14;
      lVar1 = puVar8[2];
      iVar5 = *(int *)(lVar1 + 0x6c) + 1;
      if (*(int *)(lVar1 + 0x68) < iVar5) {
        FUN_18047cb30(lVar1 + 0x60,*(int *)(lVar1 + 0x6c) + 9 + iVar5 / 2 & 0xfffffff8);
      }
      iVar5 = *(int *)(lVar1 + 0x6c);
      *(int *)(lVar1 + 0x6c) = iVar5 + 1;
      *(undefined8 **)(*(longlong *)(lVar1 + 0x60) + (longlong)iVar5 * 8) = puVar8;
      FUN_1804d1090(&local_90);
      FUN_180554b10(local_a8,puVar8);
      uVar7 = *(uint *)(local_res10 + -0x10);
LAB_180553a59:
      piVar10 = (int *)(local_res10 + -0x10);
      if ((uVar7 & 0x30000000) == 0) {
        LOCK();
        iVar5 = *piVar10;
        *piVar10 = *piVar10 + -1;
        UNLOCK();
        if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar10);
        }
      }
      FUN_180555c90(&local_b8);
                    /* WARNING: Subroutine does not return */
      free(local_b8);
    }
    if (MVar6 != 4) break;
    Sleep(100);
    iVar5 = iVar5 + -1;
  } while (-1 < iVar5);
  FUN_1805499d0(local_60,"Failed to create Windows output device wrapper");
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_60,(ThrowInfo *)&DAT_1825feea8);
}



############ FUN_ 180553f00 size=280 ############

undefined8 FUN_180553f00(void)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  
  if (DAT_182673e90 == (undefined8 *)0x0) {
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673e60);
    if ((DAT_182673e90 == (undefined8 *)0x0) && (DAT_18267ab78 == '\0')) {
      DAT_18267ab78 = 1;
      puVar2 = (undefined8 *)FUN_1811316e0(0x10);
      FUN_1812a7230(puVar2);
      *puVar2 = juce::MidiService::vftable;
      puVar2[1] = 0;
      puVar3 = (undefined8 *)FUN_1811316e0(0x70);
      puVar3[2] = 0xffffffffffffffff;
      *(undefined4 *)(puVar3 + 3) = 0;
      *puVar3 = juce::Win32MidiService::vftable;
      puVar3[1] = juce::Win32MidiService::vftable;
      InitializeCriticalSection((LPCRITICAL_SECTION)(puVar3 + 4));
      puVar3[10] = 0;
      puVar3[0xb] = 0;
      puVar3[0xc] = 0;
      puVar3[0xd] = 0;
      puVar1 = (undefined8 *)puVar2[1];
      puVar2[1] = puVar3;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      DAT_18267ab78 = '\0';
      DAT_182673e90 = puVar2;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673e60);
  }
  return DAT_182673e90[1];
}



############ FUN_ 180556230 size=128 ############

undefined8 *
FUN_180556230(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  lVar1 = *(longlong *)(param_2 + 0x18);
  puVar2[3] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1812217a0(puVar2,param_2,param_3,param_4,uVar3);
  *param_1 = puVar2;
  return param_1;
}



############ FUN_ 1812217a0 size=226 ############

void FUN_1812217a0(longlong param_1,longlong param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  
  plVar3 = (longlong *)(param_1 + 8);
  for (puVar1 = *(undefined8 **)(param_2 + 8); puVar1 != (undefined8 *)0x0;
      puVar1 = (undefined8 *)*puVar1) {
    uVar5 = FUN_1811316e0(0x20);
    plVar6 = (longlong *)FUN_181247410(uVar5,puVar1);
    *plVar6 = *plVar3;
    *plVar3 = (longlong)plVar6;
    plVar3 = plVar6;
  }
  puVar4 = (undefined8 *)(param_1 + 0x10);
  for (puVar1 = *(undefined8 **)(param_2 + 0x10); puVar1 != (undefined8 *)0x0;
      puVar1 = (undefined8 *)*puVar1) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    *puVar7 = 0;
    lVar2 = puVar1[1];
    puVar7[1] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    lVar2 = puVar1[2];
    puVar7[2] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    *puVar7 = *puVar4;
    *puVar4 = puVar7;
    puVar4 = puVar7;
  }
  return;
}



############ FUN_ 180557d90 size=500 ############

void FUN_180557d90(longlong *param_1,byte *param_2)

{
  byte bVar1;
  byte bVar2;
  bool bVar3;
  byte bVar4;
  longlong lVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  
  bVar3 = false;
  iVar7 = 0;
LAB_180557dc0:
  if (*param_2 == 0) {
    return;
  }
  iVar15 = 0;
  pbVar9 = param_2;
  iVar14 = iVar7;
  iVar10 = 0;
  do {
    bVar1 = *pbVar9;
    pbVar9 = pbVar9 + 1;
    uVar8 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar8 = 0x7f;
      uVar6 = 0x40;
      iVar12 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar6 < 9) break;
          uVar8 = uVar8 >> 1;
          iVar12 = iVar12 + 1;
          uVar6 = uVar6 >> 1;
        } while ((bVar1 & uVar6) != 0);
      }
      uVar8 = bVar1 & uVar8;
      for (; (iVar12 = iVar12 + -1, -1 < iVar12 && ((*pbVar9 & 0xc0) == 0x80)); pbVar9 = pbVar9 + 1)
      {
        uVar8 = *pbVar9 & 0x3f | uVar8 << 6;
      }
    }
    if (uVar8 == 0) {
      bVar3 = true;
      iVar12 = iVar14;
      iVar11 = iVar10;
      goto LAB_180557ef5;
    }
    iVar12 = iVar14 + 1;
    iVar11 = iVar10 + 1;
    if (uVar8 == 0xd) {
      iVar15 = 1;
      bVar1 = *pbVar9;
      uVar8 = (uint)bVar1;
      if (-1 < (char)bVar1) goto LAB_180557ec3;
      uVar8 = 0x7f;
      uVar6 = 0x40;
      iVar13 = 0;
      if ((bVar1 & 0x40) != 0) goto LAB_180557e85;
      goto LAB_180557e95;
    }
    iVar14 = iVar12;
    iVar10 = iVar11;
  } while (uVar8 != 10);
  iVar15 = 1;
  goto LAB_180557ef5;
  while( true ) {
    uVar8 = uVar8 >> 1;
    iVar13 = iVar13 + 1;
    uVar6 = uVar6 >> 1;
    if ((bVar1 & uVar6) == 0) break;
LAB_180557e85:
    if (uVar6 < 9) break;
  }
LAB_180557e95:
  uVar8 = bVar1 & uVar8;
  lVar5 = 1;
  if (0 < (longlong)iVar13) {
    do {
      if ((pbVar9[lVar5] & 0xc0) != 0x80) break;
      uVar8 = pbVar9[lVar5] & 0x3f | uVar8 << 6;
      lVar5 = lVar5 + 1;
    } while (lVar5 <= iVar13);
  }
LAB_180557ec3:
  if (uVar8 == 10) {
    pbVar9 = pbVar9 + 1;
    if ((char)bVar1 < '\0') {
      bVar4 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar4))) {
        pbVar9 = pbVar9 + 1;
        bVar4 = bVar4 >> 1;
        bVar2 = bVar1 & bVar4;
      }
    }
    iVar15 = 2;
    iVar12 = iVar14 + 2;
    iVar11 = iVar10 + 2;
  }
LAB_180557ef5:
  lVar5 = FUN_1811316e0(0x18);
  FUN_18124a8a0(lVar5,param_2);
  *(int *)(lVar5 + 8) = iVar7;
  *(int *)(lVar5 + 0xc) = iVar11;
  *(int *)(lVar5 + 0x10) = iVar11 - iVar15;
  iVar14 = *(int *)((longlong)param_1 + 0xc);
  iVar7 = iVar14 + 1;
  if ((int)param_1[1] < iVar7) {
    if (iVar7 < 0) {
      iVar7 = iVar14 + 2;
    }
    FUN_18047cb30(param_1,iVar14 + 9 + (iVar7 >> 1) & 0xfffffff8);
  }
  iVar7 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar7 + 1;
  *(longlong *)(*param_1 + (longlong)iVar7 * 8) = lVar5;
  param_2 = pbVar9;
  iVar7 = iVar12;
  if (bVar3) {
    return;
  }
  goto LAB_180557dc0;
}



############ FUN_ 1813c6950 size=1169 ############

void FUN_1813c6950(longlong *param_1,longlong *param_2,int param_3,char param_4)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  char *pcVar4;
  longlong lVar5;
  undefined4 uVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong *plVar10;
  int iVar11;
  uint *puVar12;
  ulonglong uVar13;
  void *_Src;
  longlong lVar14;
  longlong *plVar15;
  uint uVar16;
  undefined4 uVar17;
  longlong *plVar18;
  uint uVar19;
  ulonglong uVar20;
  char *local_b0;
  longlong local_a8;
  longlong *local_a0;
  undefined8 local_98;
  longlong *local_90;
  undefined8 local_88;
  undefined4 local_80;
  undefined1 local_7c;
  undefined1 local_78 [8];
  char *local_70;
  longlong local_68;
  longlong *local_60;
  longlong *local_58;
  undefined8 local_50;
  char *local_48;
  
  local_50 = 0xfffffffffffffffe;
  pcVar4 = (char *)*param_2;
  if (*pcVar4 != '\0') {
    if (param_4 == '\0') {
      plVar18 = (longlong *)0x0;
      local_88 = 0;
      uVar17 = 0;
      local_80 = 0;
      local_7c = 0;
      local_90 = param_1;
      FUN_1813c8260(&local_90,param_3);
      uVar6 = local_80;
      lVar14 = local_88;
      uVar19 = local_88._4_4_;
      uVar20 = (ulonglong)(int)local_88._4_4_;
      plVar15 = plVar18;
      if (local_88._4_4_ < *(uint *)((longlong)param_1 + 0xc)) {
        plVar15 = *(longlong **)(*param_1 + uVar20 * 8);
      }
      if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pcVar4 + -0x10) = *(int *)(pcVar4 + -0x10) + 1;
        UNLOCK();
      }
      local_b0 = pcVar4;
      if (plVar15 != (longlong *)0x0) {
        uVar8 = FUN_1812491d0(plVar15,&local_68,local_80);
        plVar9 = (longlong *)FUN_1812490c0(plVar15,local_78,0,uVar6);
        local_58 = plVar9;
        plVar10 = (longlong *)FUN_181232d30(plVar9,&local_b0);
        local_a8 = *plVar10;
        if ((*(uint *)(local_a8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_a8 + -0x10) = *(int *)(local_a8 + -0x10) + 1;
          UNLOCK();
        }
        puVar12 = (uint *)(*plVar9 + -0x10);
        if ((*puVar12 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar12;
          *puVar12 = *puVar12 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar12);
          }
        }
        local_58 = &local_a8;
        puVar7 = (undefined8 *)FUN_181232d30(&local_a8,uVar8);
        local_70 = (char *)*puVar7;
        if ((*(uint *)(local_70 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_70 + -0x10) = *(int *)(local_70 + -0x10) + 1;
          UNLOCK();
        }
        puVar12 = (uint *)(local_a8 + -0x10);
        if ((*puVar12 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar12;
          *puVar12 = *puVar12 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar12);
          }
        }
        local_48 = local_b0;
        puVar12 = (uint *)(local_b0 + -0x10);
        local_b0 = local_70;
        if ((*puVar12 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar12;
          *puVar12 = *puVar12 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar12);
          }
        }
        puVar12 = (uint *)(local_68 + -0x10);
        if ((*puVar12 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar12;
          *puVar12 = *puVar12 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar12);
          }
        }
      }
      *(undefined4 *)(param_1 + 0x14) = 0xffffffff;
      local_a0 = (longlong *)0x0;
      local_98 = 0;
      FUN_180557d90(&local_a0,local_b0);
      plVar9 = (longlong *)*local_a0;
      if (plVar15 != (longlong *)0x0) {
        uVar17 = (undefined4)plVar15[1];
      }
      *(undefined4 *)(plVar9 + 1) = uVar17;
      if (-1 < lVar14) {
        iVar11 = *(int *)((longlong)param_1 + 0xc);
        if ((int)uVar19 < iVar11) {
          plVar15 = (longlong *)(*param_1 + uVar20 * 8);
          local_60 = (longlong *)*plVar15;
          if (local_60 == plVar9) {
            local_60 = plVar18;
          }
          *plVar15 = (longlong)plVar9;
          if (local_60 != (longlong *)0x0) {
            puVar12 = (uint *)(*local_60 + -0x10);
            if ((*puVar12 & 0x30000000) == 0) {
              LOCK();
              uVar19 = *puVar12;
              *puVar12 = *puVar12 - 1;
              UNLOCK();
              if (uVar19 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar12);
              }
            }
                    /* WARNING: Subroutine does not return */
            free(local_60);
          }
        }
        else {
          if ((int)param_1[1] < iVar11 + 1) {
            FUN_18047cb30(param_1,iVar11 + 9 + (iVar11 + 1) / 2 & 0xfffffff8);
          }
          iVar11 = *(int *)((longlong)param_1 + 0xc);
          *(int *)((longlong)param_1 + 0xc) = iVar11 + 1;
          *(longlong **)(*param_1 + (longlong)iVar11 * 8) = plVar9;
        }
      }
      if ((1 < local_98._4_4_) && (uVar1 = local_98._4_4_ - 1, 0 < (int)uVar1)) {
        plVar15 = local_a0 + 1;
        iVar11 = *(int *)((longlong)param_1 + 0xc) + uVar1;
        if ((int)param_1[1] < iVar11) {
          FUN_18047cb30(param_1,iVar11 + 8 + iVar11 / 2 & 0xfffffff8);
        }
        uVar16 = uVar19 + 1;
        uVar2 = *(uint *)((longlong)param_1 + 0xc);
        if (uVar16 < uVar2) {
          _Src = (void *)(*param_1 + (longlong)(int)uVar16 * 8);
          memmove((void *)((longlong)_Src + (longlong)(int)uVar1 * 8),_Src,
                  (longlong)(int)(uVar2 - uVar16) << 3);
          lVar14 = *param_1 + (longlong)(int)uVar16 * 8;
        }
        else {
          lVar14 = *param_1 + (longlong)(int)uVar2 * 8;
        }
        if (0 < (int)uVar1) {
          lVar14 = lVar14 - (longlong)plVar15;
          uVar13 = (ulonglong)uVar1;
          do {
            *(longlong *)((longlong)plVar15 + lVar14) = *plVar15;
            plVar15 = plVar15 + 1;
            uVar13 = uVar13 - 1;
          } while (uVar13 != 0);
        }
        *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + uVar1;
      }
      iVar11 = (int)plVar9[1];
      if ((int)uVar19 < *(int *)((longlong)param_1 + 0xc)) {
        lVar14 = uVar20 * 8;
        do {
          lVar5 = *(longlong *)(lVar14 + *param_1);
          *(int *)(lVar5 + 8) = iVar11;
          iVar11 = iVar11 + *(int *)(lVar5 + 0xc);
          uVar19 = (int)uVar20 + 1;
          uVar20 = (ulonglong)uVar19;
          lVar14 = lVar14 + 8;
        } while ((int)uVar19 < *(int *)((longlong)param_1 + 0xc));
      }
      FUN_1813c6ed0(param_1);
      iVar11 = FUN_180493130(param_2);
      plVar15 = (longlong *)param_1[2];
      plVar9 = (longlong *)
               ((ulonglong)
                ((longlong)(plVar15 + *(int *)((longlong)param_1 + 0x1c)) + (7 - (longlong)plVar15))
               >> 3);
      if (plVar15 + *(int *)((longlong)param_1 + 0x1c) < plVar15) {
        plVar9 = plVar18;
      }
      if (plVar9 != (longlong *)0x0) {
        do {
          iVar3 = *(int *)(*plVar15 + 8);
          if (param_3 <= iVar3) {
            FUN_1813c8260(*plVar15,iVar3 + iVar11);
          }
          plVar15 = plVar15 + 1;
          plVar18 = (longlong *)((longlong)plVar18 + 1);
        } while (plVar18 != plVar9);
      }
      iVar11 = *(int *)((longlong)param_1 + 0xb4);
      while (0 < iVar11) {
        iVar11 = iVar11 + -1;
        if ((*(int *)((longlong)param_1 + 0xb4) <= iVar11) &&
           (iVar11 = *(int *)((longlong)param_1 + 0xb4) + -1, iVar11 < 0)) break;
        plVar15 = *(longlong **)(param_1[0x15] + (longlong)iVar11 * 8);
        (**(code **)(*plVar15 + 8))(plVar15,param_2,param_3);
      }
                    /* WARNING: Subroutine does not return */
      free(local_a0);
    }
    puVar7 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar7 = juce::CodeDocument::InsertAction::vftable;
    puVar7[1] = param_1;
    lVar14 = *param_2;
    puVar7[2] = lVar14;
    if ((*(uint *)(lVar14 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar14 + -0x10) = *(int *)(lVar14 + -0x10) + 1;
      UNLOCK();
    }
    *(int *)(puVar7 + 3) = param_3;
    FUN_1813526d0(param_1 + 4);
  }
  return;
}



############ FUN_ 1813c6ed0 size=321 ############

void FUN_1813c6ed0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  iVar4 = *(int *)((longlong)param_1 + 0xc);
  while ((0 < iVar4 && (*(int *)(*(longlong *)(*param_1 + (longlong)(iVar4 + -1) * 8) + 0xc) == 0)))
  {
    if (iVar4 == 1) {
LAB_1813c6f36:
      FUN_18055c880(param_1);
      if ((int)param_1[1] != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*param_1);
      }
      *(undefined4 *)(param_1 + 1) = 0;
    }
    else {
      lVar2 = *(longlong *)(*param_1 + (longlong)(iVar4 + -2) * 8);
      if (*(int *)(lVar2 + 0x10) != *(int *)(lVar2 + 0xc)) break;
      if (iVar4 < 2) goto LAB_1813c6f36;
      FUN_18055c460(param_1,iVar4 + -1,1,param_4,uVar5);
    }
    iVar4 = *(int *)((longlong)param_1 + 0xc);
  }
  if (((0 < *(int *)((longlong)param_1 + 0xc)) &&
      (lVar2 = *(longlong *)(*param_1 + (longlong)(*(int *)((longlong)param_1 + 0xc) + -1) * 8),
      lVar2 != 0)) && (*(int *)(lVar2 + 0x10) != *(int *)(lVar2 + 0xc))) {
    lVar3 = FUN_1811316e0(0x18);
    iVar4 = *(int *)(lVar2 + 8);
    iVar1 = *(int *)(lVar2 + 0xc);
    FUN_18124a8a0(lVar3,&DAT_1821da804,&DAT_1821da804);
    *(int *)(lVar3 + 8) = iVar4 + iVar1;
    *(undefined8 *)(lVar3 + 0xc) = 0;
    iVar4 = *(int *)((longlong)param_1 + 0xc) + 1;
    if ((int)param_1[1] < iVar4) {
      FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar4 / 2 & 0xfffffff8);
    }
    iVar4 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar4 + 1;
    *(longlong *)(*param_1 + (longlong)iVar4 * 8) = lVar3;
  }
  return;
}



############ FUN_ 1813c64d0 size=1136 ############

void FUN_1813c64d0(longlong *param_1,int param_2,int param_3,char param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *plVar6;
  longlong *plVar7;
  uint *puVar8;
  ulonglong uVar9;
  int iVar10;
  longlong lVar11;
  int iVar12;
  ulonglong uVar13;
  longlong *plVar14;
  longlong *local_e8;
  longlong *local_e0;
  undefined8 local_d8;
  undefined4 local_d0;
  char local_cc;
  longlong *local_c8;
  undefined8 local_c0;
  undefined4 local_b8;
  char local_b4;
  longlong *local_b0;
  undefined8 local_a8;
  undefined4 local_a0;
  char local_9c;
  longlong *local_98;
  undefined8 local_90;
  undefined4 local_88;
  char local_84;
  undefined1 local_80 [8];
  longlong local_78;
  longlong local_70;
  undefined1 local_68 [8];
  longlong *local_60;
  longlong local_58;
  longlong local_50;
  undefined8 local_48;
  longlong local_40;
  
  if (param_2 < param_3) {
    local_48 = 0xfffffffffffffffe;
    if (param_4 == '\0') {
      uVar9 = 0;
      local_d8 = 0;
      iVar12 = 0;
      local_d0 = 0;
      local_cc = '\0';
      local_e0 = param_1;
      FUN_1813c8260(&local_e0);
      local_c0 = 0;
      local_b8 = 0;
      local_b4 = '\0';
      local_c8 = param_1;
      FUN_1813c8260(&local_c8,param_3);
      *(undefined4 *)(param_1 + 0x14) = 0xffffffff;
      iVar10 = local_d8._4_4_;
      iVar3 = local_c0._4_4_;
      plVar14 = *(longlong **)(*param_1 + (longlong)local_d8._4_4_ * 8);
      if (local_d8._4_4_ == local_c0._4_4_) {
        uVar5 = FUN_1812491d0(plVar14,&local_70);
        plVar6 = (longlong *)FUN_1812490c0(plVar14,local_80,0,local_d0);
        local_e8 = plVar6;
        plVar7 = (longlong *)FUN_181232d30(plVar6,uVar5);
        local_78 = *plVar7;
        if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
          UNLOCK();
        }
        puVar8 = (uint *)(*plVar6 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        local_50 = *plVar14;
        *plVar14 = local_78;
        puVar8 = (uint *)(local_50 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_70 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        FUN_180557f90(plVar14);
      }
      else {
        uVar5 = FUN_1812491d0(*(undefined8 *)(*param_1 + (longlong)local_c0._4_4_ * 8),&local_e8,
                              local_b8);
        local_60 = (longlong *)FUN_1812490c0(plVar14,local_68,0,local_d0);
        plVar6 = (longlong *)FUN_181232d30(local_60,uVar5);
        local_58 = *plVar6;
        if ((*(uint *)(local_58 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_58 + -0x10) = *(int *)(local_58 + -0x10) + 1;
          UNLOCK();
        }
        puVar8 = (uint *)(*local_60 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        local_40 = *plVar14;
        *plVar14 = local_58;
        puVar8 = (uint *)(local_40 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_e8 + -2);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        FUN_180557f90(plVar14);
        FUN_18055c460(param_1,iVar10 + 1,iVar3 - iVar10);
      }
      iVar10 = iVar10 + 1;
      if (iVar10 < *(int *)((longlong)param_1 + 0xc)) {
        lVar11 = (longlong)iVar10 * 8;
        do {
          lVar2 = *(longlong *)(lVar11 + -8 + *param_1);
          *(int *)(*(longlong *)(lVar11 + *param_1) + 8) =
               *(int *)(lVar2 + 0xc) + *(int *)(lVar2 + 8);
          iVar10 = iVar10 + 1;
          lVar11 = lVar11 + 8;
        } while (iVar10 < *(int *)((longlong)param_1 + 0xc));
      }
      FUN_1813c6ed0(param_1);
      if ((0 < *(int *)((longlong)param_1 + 0xc)) &&
         (lVar11 = *(longlong *)(*param_1 + (longlong)(*(int *)((longlong)param_1 + 0xc) + -1) * 8),
         lVar11 != 0)) {
        iVar12 = *(int *)(lVar11 + 0xc) + *(int *)(lVar11 + 8);
      }
      plVar14 = (longlong *)param_1[2];
      uVar13 = (ulonglong)
               ((longlong)(plVar14 + *(int *)((longlong)param_1 + 0x1c)) + (7 - (longlong)plVar14))
               >> 3;
      if (plVar14 + *(int *)((longlong)param_1 + 0x1c) < plVar14) {
        uVar13 = uVar9;
      }
      if (uVar13 != 0) {
        do {
          lVar11 = *plVar14;
          if ((int)local_d8 < *(int *)(lVar11 + 8)) {
            iVar3 = (*(int *)(lVar11 + 8) - param_3) + param_2;
            iVar10 = param_2;
            if (param_2 < iVar3) {
              iVar10 = iVar3;
            }
            FUN_1813c8260(lVar11,iVar10);
          }
          if (iVar12 < *(int *)(lVar11 + 8)) {
            FUN_1813c8260(lVar11,iVar12);
          }
          plVar14 = plVar14 + 1;
          uVar9 = uVar9 + 1;
        } while (uVar9 != uVar13);
      }
      iVar10 = *(int *)((longlong)param_1 + 0xb4);
      while (0 < iVar10) {
        iVar10 = iVar10 + -1;
        if ((*(int *)((longlong)param_1 + 0xb4) <= iVar10) &&
           (iVar10 = *(int *)((longlong)param_1 + 0xb4) + -1, iVar10 < 0)) break;
        plVar14 = *(longlong **)(param_1[0x15] + (longlong)iVar10 * 8);
        (**(code **)(*plVar14 + 0x10))(plVar14,param_2,param_3);
      }
      if (local_b4 != '\0') {
        FUN_1813c8030(&local_c8,0);
      }
      if (local_cc != '\0') {
        FUN_1813c8030(&local_e0,0);
      }
    }
    else {
      puVar4 = (undefined8 *)FUN_1811316e0(0x20);
      *puVar4 = juce::CodeDocument::DeleteAction::vftable;
      puVar4[1] = param_1;
      *(int *)(puVar4 + 2) = param_2;
      *(int *)((longlong)puVar4 + 0x14) = param_3;
      local_90 = 0;
      local_88 = 0;
      local_84 = '\0';
      local_98 = param_1;
      FUN_1813c8260(&local_98,param_3);
      local_a8 = 0;
      local_a0 = 0;
      local_9c = '\0';
      local_b0 = param_1;
      FUN_1813c8260(&local_b0,param_2);
      FUN_1813c7d80(param_1,puVar4 + 3,&local_b0,&local_98);
      if (local_9c != '\0') {
        FUN_1813c8030(&local_b0,0);
      }
      if (local_84 != '\0') {
        FUN_1813c8030(&local_98,0);
      }
      FUN_1813526d0(param_1 + 4,puVar4);
    }
  }
  return;
}



############ FUN_ 18055a400 size=514 ############

void FUN_18055a400(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  void *_Dst;
  int iVar2;
  longlong *plVar3;
  undefined **ppuVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  
  *param_1 = juce::ActiveXControlComponent::Pimpl::vftable;
  param_1[8] = juce::ActiveXControlComponent::Pimpl::vftable;
  plVar3 = (longlong *)param_1[0xd];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x30))(plVar3,1,param_3,param_4,0xfffffffffffffffe);
    (**(code **)(*(longlong *)param_1[0xd] + 0x10))();
  }
  ppuVar4 = *(undefined ***)param_1[0xc];
  if (ppuVar4 == juce::ActiveXHelpers::JuceIOleClientSite::vftable) {
    plVar3 = (longlong *)param_1[0xc] + 1;
    *(int *)plVar3 = (int)*plVar3 + -1;
    if ((int)*plVar3 == 0) {
      (*(code *)juce::ActiveXHelpers::JuceIOleClientSite::vftable[9])();
    }
  }
  else {
    (*(code *)ppuVar4[2])();
  }
  plVar3 = (longlong *)param_1[0xb];
  if (*(code **)(*plVar3 + 0x10) == FUN_18055b900) {
    plVar1 = plVar3 + 1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    if ((int)*plVar1 == 0) {
      (**(code **)(*plVar3 + 0x90))();
    }
  }
  else {
    (**(code **)(*plVar3 + 0x10))();
  }
  uVar9 = 0;
  lVar10 = 0;
  lVar5 = DAT_182673700;
LAB_18055a4d0:
  do {
    if (lVar5 == 0) {
      FUN_1811316e0(0x130);
      lVar5 = FUN_18133c6c0();
      DAT_182673700 = lVar5;
    }
    if (*(int *)(lVar5 + 0x74) <= (int)uVar9) {
      FUN_181322ab0(param_1);
      return;
    }
    if (lVar5 == 0) {
      FUN_1811316e0(0x130);
      lVar5 = FUN_18133c6c0();
      DAT_182673700 = lVar5;
    }
    if (uVar9 < *(uint *)(lVar5 + 0x74)) {
      lVar7 = *(longlong *)(lVar10 + *(longlong *)(lVar5 + 0x68));
    }
    else {
      lVar7 = 0;
    }
    if (lVar7 != 0) {
      iVar8 = 0;
      lVar6 = 0;
      iVar2 = *(int *)(lVar7 + 0x3c);
      if (0 < iVar2) {
        do {
          if (param_1 + 8 == *(undefined8 **)(*(longlong *)(lVar7 + 0x30) + lVar6 * 8)) {
            _Dst = (void *)(*(longlong *)(lVar7 + 0x30) + (longlong)iVar8 * 8);
            memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar8) + -1) << 3);
            *(int *)(lVar7 + 0x3c) = *(int *)(lVar7 + 0x3c) + -1;
            iVar2 = *(int *)(lVar7 + 0x3c);
            iVar8 = 0;
            if (0 < iVar2 * 2) {
              iVar8 = iVar2 * 2;
            }
            if (iVar8 < *(int *)(lVar7 + 0x38)) {
              if (iVar2 < 8) {
                iVar2 = 8;
              }
              if (iVar2 < *(int *)(lVar7 + 0x38)) {
                FUN_18047cb30();
                lVar5 = DAT_182673700;
              }
            }
            goto LAB_18055a5c0;
          }
          iVar8 = iVar8 + 1;
          lVar6 = lVar6 + 1;
        } while (lVar6 < iVar2);
        uVar9 = uVar9 + 1;
        lVar10 = lVar10 + 8;
        goto LAB_18055a4d0;
      }
    }
LAB_18055a5c0:
    uVar9 = uVar9 + 1;
    lVar10 = lVar10 + 8;
  } while( true );
}



############ FUN_ 18055ae40 size=443 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18055ae40(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  longlong *local_68;
  undefined8 local_60;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  ulonglong local_28;
  
  local_60 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_58 = _DAT_1824ae3f8;
  uStack_54 = _UNK_1824ae3fc;
  uStack_50 = _UNK_1824ae400;
  uStack_4c = _UNK_1824ae404;
  FUN_1813bd860(_DAT_1824ae3f8,&local_58);
  local_48 = _DAT_1824af610;
  uStack_44 = _UNK_1824af614;
  uStack_40 = _UNK_1824af618;
  uStack_3c = _UNK_1824af61c;
  local_38 = _DAT_1824af5d0;
  uStack_34 = _UNK_1824af5d4;
  uStack_30 = _UNK_1824af5d8;
  uStack_2c = _UNK_1824af5dc;
  local_68 = (longlong *)0x0;
  lVar3 = *(longlong *)(param_1 + 0xb0);
  if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x68) != 0)) {
    iVar2 = (**(code **)**(undefined8 **)(lVar3 + 0x68))
                      (*(undefined8 **)(lVar3 + 0x68),&local_48,&local_68);
    if (-1 < iVar2) goto LAB_18055aeda;
  }
  local_68 = (longlong *)0x0;
LAB_18055aeda:
  *(longlong **)(param_1 + 0xc0) = local_68;
  local_68 = (longlong *)0x0;
  lVar3 = *(longlong *)(param_1 + 0xb0);
  if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x68) != 0)) {
    iVar2 = (**(code **)**(undefined8 **)(lVar3 + 0x68))
                      (*(undefined8 **)(lVar3 + 0x68),&local_38,&local_68);
    if ((-1 < iVar2) && (local_68 != (longlong *)0x0)) {
      (**(code **)(*local_68 + 0x20))(local_68,&DAT_1824aec60,param_1 + 200);
      if (*(longlong *)(param_1 + 200) != 0) {
        local_78 = 0;
        lVar3 = __RTDynamicCast(*(undefined8 *)(param_1 + 0x18),0,
                                &juce::Component::RTTI_Type_Descriptor,
                                &juce::WebBrowserComponent::RTTI_Type_Descriptor);
        plVar4 = (longlong *)FUN_1811316e0(0x58);
        *(undefined4 *)(plVar4 + 1) = 1;
        *plVar4 = (longlong)juce::ComBaseClassHelper<IDispatch>::vftable;
        local_68 = plVar4;
        FUN_181322bc0(plVar4 + 2,lVar3);
        *plVar4 = (longlong)juce::WebBrowserComponent::Pimpl::EventHandler::vftable;
        plVar4[2] = (longlong)juce::WebBrowserComponent::Pimpl::EventHandler::vftable;
        plVar4[10] = lVar3;
        (**(code **)(**(longlong **)(param_1 + 200) + 0x28))
                  (*(longlong **)(param_1 + 200),plVar4,param_1 + 0xd0);
        if ((undefined **)*plVar4 == juce::WebBrowserComponent::Pimpl::EventHandler::vftable) {
          plVar1 = plVar4 + 1;
          *(int *)plVar1 = (int)*plVar1 + -1;
          if ((int)*plVar1 == 0) {
            (*(code *)juce::WebBrowserComponent::Pimpl::EventHandler::vftable[7])(plVar4,1);
          }
        }
        else {
          (*(code *)((undefined **)*plVar4)[2])(plVar4);
        }
      }
    }
  }
}



############ FUN_ 1813bd860 size=1058 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813bd860(longlong param_1,IID *param_2)

{
  LPVOID *ppvObj;
  undefined8 *puVar1;
  longlong lVar2;
  HRESULT HVar3;
  int iVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  LPOLECLIENTSITE pClientSite;
  IOleClientSiteVtbl *pIVar7;
  _func_6217 *p_Var8;
  LONG_PTR LVar9;
  _func_6216 *p_Var10;
  float fVar11;
  float fVar12;
  undefined1 auStackY_f8 [32];
  undefined8 local_b8;
  int iStack_b0;
  int iStack_ac;
  undefined8 *local_a8;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined8 local_98;
  int iStack_90;
  int iStack_8c;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  LPOLECLIENTSITE local_70;
  int local_68;
  int local_64;
  undefined4 local_58;
  undefined4 uStack_54;
  int iStack_50;
  int iStack_4c;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStackY_f8;
  puVar6 = *(undefined8 **)(param_1 + 0xb0);
  *(undefined8 *)(param_1 + 0xb0) = 0;
  if (puVar6 != (undefined8 *)0x0) {
    (**(code **)*puVar6)(puVar6,1);
  }
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) {
    }
    plVar5 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar5 = (longlong *)FUN_1812d2bd0(param_1);
  }
  if (plVar5 != (longlong *)0x0) {
    uStack_9c = *(undefined4 *)(param_1 + 0x2c);
    uStack_a0 = *(undefined4 *)(param_1 + 0x28);
    uStack_80 = *(undefined8 *)(param_1 + 0x28);
    local_a8 = (undefined8 *)0x0;
    local_88 = 0.0;
    FUN_18051df30(&local_b8,plVar5[1],param_1,&local_88);
    fVar11 = (float)(**(code **)(*(longlong *)plVar5[1] + 0x80))();
    if (fVar11 == DAT_1824c3ea4) {
      uStack_80._0_4_ = iStack_b0;
      uStack_80._4_4_ = iStack_ac;
      local_88 = (double)local_b8;
    }
    else {
      local_a8 = (undefined8 *)((double)((float)iStack_ac * fVar11) + DAT_1824c4520);
      local_70 = (LPOLECLIENTSITE)((double)((float)iStack_b0 * fVar11) + DAT_1824c4520);
      fVar12 = (float)local_b8._4_4_;
      local_b8 = (IOleClientSiteVtbl *)((double)((float)(int)local_b8 * fVar11) + DAT_1824c4520);
      local_98._0_4_ = SUB84((double)(fVar12 * fVar11) + DAT_1824c4520,0);
      local_88 = (double)CONCAT44((int)local_98,(int)local_b8);
      uStack_80._0_4_ = (int)local_70;
      uStack_80._4_4_ = (int)local_a8;
    }
    local_98._0_4_ = SUB84(local_88,0);
    local_98._4_4_ = local_88._4_4_;
    iStack_90 = (int)uStack_80;
    iStack_8c = uStack_80._4_4_;
    if ((undefined **)*plVar5 == juce::HWNDComponentPeer::vftable) {
      p_Var10 = (_func_6216 *)plVar5[0x11];
    }
    else {
      p_Var10 = (_func_6216 *)(*(code *)((undefined **)*plVar5)[1])(plVar5);
    }
    puVar6 = (undefined8 *)FUN_1811316e0(0x78);
    local_a8 = puVar6;
    FUN_181322bc0(puVar6,param_1);
    *puVar6 = juce::ActiveXControlComponent::Pimpl::vftable;
    puVar6[8] = juce::ActiveXControlComponent::Pimpl::vftable;
    puVar6[9] = param_1;
    puVar6[10] = 0;
    local_70 = (LPOLECLIENTSITE)FUN_1811316e0(0x10);
    *(undefined4 *)(local_70 + 1) = 1;
    *local_70 = (IOleClientSite)juce::ActiveXHelpers::JuceIStorage::vftable;
    puVar6[0xb] = local_70;
    pClientSite = (LPOLECLIENTSITE)FUN_1811316e0(0x18);
    *(undefined4 *)&pClientSite[1].lpVtbl = 1;
    pClientSite->lpVtbl = (IOleClientSiteVtbl *)juce::ActiveXHelpers::JuceIOleClientSite::vftable;
    local_70 = pClientSite;
    pIVar7 = (IOleClientSiteVtbl *)FUN_1811316e0(0x20);
    *(undefined4 *)&pIVar7->AddRef = 1;
    pIVar7->QueryInterface = (_func_6214 *)juce::ActiveXHelpers::JuceIOleInPlaceSite::vftable;
    pIVar7->Release = p_Var10;
    local_b8 = pIVar7;
    p_Var8 = (_func_6217 *)FUN_1811316e0(0x20);
    p_Var10 = pIVar7->Release;
    *(undefined4 *)(p_Var8 + 8) = 1;
    *(undefined ***)p_Var8 = juce::ActiveXHelpers::JuceOleInPlaceFrame::vftable;
    *(_func_6216 **)(p_Var8 + 0x10) = p_Var10;
    *(undefined8 *)(p_Var8 + 0x18) = 0;
    pIVar7->SaveObject = p_Var8;
    pClientSite[2].lpVtbl = pIVar7;
    puVar6[0xc] = pClientSite;
    ppvObj = (LPVOID *)(puVar6 + 0xd);
    *ppvObj = (LPVOID)0x0;
    puVar6[0xe] = 0;
    local_a8 = puVar6;
    HVar3 = OleCreate(param_2,(IID *)&DAT_1824af048,1,(LPFORMATETC)0x0,pClientSite,
                      (LPSTORAGE)puVar6[0xb],ppvObj);
    if (HVar3 == 0) {
      (**(code **)(*(longlong *)*ppvObj + 0x28))(*ppvObj,L"JUCE",0);
      HVar3 = OleSetContainedObject(*ppvObj,1);
      if (HVar3 == 0) {
        local_70 = (LPOLECLIENTSITE)CONCAT44(local_98._4_4_,(int)local_98);
        local_68 = (int)local_98 + iStack_90;
        local_64 = iStack_8c + local_98._4_4_;
        iVar4 = (**(code **)(*(longlong *)*ppvObj + 0x58))(*ppvObj,0xffffffff,0,puVar6[0xc]);
        if (iVar4 == 0) {
          local_a8 = (undefined8 *)0x0;
          puVar1 = *(undefined8 **)(param_1 + 0xb0);
          *(undefined8 **)(param_1 + 0xb0) = puVar6;
          if (puVar1 != (undefined8 *)0x0) {
            (**(code **)*puVar1)(puVar1,1);
          }
          local_b8 = (IOleClientSiteVtbl *)0x0;
          local_58 = _DAT_1824b00b0;
          uStack_54 = _UNK_1824b00b4;
          iStack_50 = _UNK_1824b00b8;
          iStack_4c = _UNK_1824b00bc;
          local_98 = (longlong *)0x0;
          lVar2 = *(longlong *)(param_1 + 0xb0);
          if ((((lVar2 != 0) && (*(longlong *)(lVar2 + 0x68) != 0)) &&
              (iVar4 = (**(code **)**(undefined8 **)(lVar2 + 0x68))
                                 (*(undefined8 **)(lVar2 + 0x68),&local_58,&local_98),
              plVar5 = local_98, -1 < iVar4)) && (local_98 != (longlong *)0x0)) {
            (**(code **)(*local_98 + 0x18))(local_98,&local_b8);
            (**(code **)(*plVar5 + 0x10))(plVar5);
          }
          *(IOleClientSiteVtbl **)(*(longlong *)(param_1 + 0xb0) + 0x50) = local_b8;
          if (*(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x50) == 0) {
          }
          local_58 = (undefined4)local_88;
          uStack_54 = local_88._4_4_;
          iStack_50 = (int)uStack_80;
          iStack_4c = uStack_80._4_4_;
          FUN_18055a610(*(longlong *)(param_1 + 0xb0),&local_58);
          lVar2 = *(longlong *)(param_1 + 0xb0);
          LVar9 = GetWindowLongPtrW(*(HWND *)(lVar2 + 0x50),-4);
          *(LONG_PTR *)(lVar2 + 0x70) = LVar9;
          SetWindowLongPtrW(*(HWND *)(*(longlong *)(param_1 + 0xb0) + 0x50),-4,0x18055aaf0);
        }
      }
    }
    (**(code **)*puVar6)(puVar6,1);
  }
}



############ FUN_ 1813c7b70 size=250 ############

void FUN_1813c7b70(longlong param_1,int param_2,int param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  longlong local_40 [2];
  undefined4 local_30;
  char local_2c;
  longlong local_28 [2];
  undefined4 local_18;
  char local_14;
  
  if (param_2 < param_3) {
    uVar2 = 0xfffffffffffffffe;
    puVar1 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar1 = juce::CodeDocument::DeleteAction::vftable;
    puVar1[1] = param_1;
    *(int *)(puVar1 + 2) = param_2;
    *(int *)((longlong)puVar1 + 0x14) = param_3;
    local_28[1] = 0;
    local_18 = 0;
    local_14 = '\0';
    local_28[0] = param_1;
    FUN_1813c8260(local_28,param_3);
    local_40[1] = 0;
    local_30 = 0;
    local_2c = '\0';
    local_40[0] = param_1;
    FUN_1813c8260(local_40,param_2);
    FUN_1813c7d80(param_1,puVar1 + 3,local_40,local_28,uVar2);
    if (local_2c != '\0') {
      FUN_1813c8030(local_40,0);
    }
    if (local_14 != '\0') {
      FUN_1813c8030(local_28,0);
    }
    FUN_1813526d0(param_1 + 0x20,puVar1);
  }
  return;
}



############ FUN_ 18055f8f0 size=819 ############

undefined8 *
FUN_18055f8f0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,longlong *param_6,undefined4 param_7)

{
  undefined8 *puVar1;
  char cVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined4 uVar6;
  float fVar7;
  longlong *plVar8;
  undefined8 uVar9;
  longlong *plVar10;
  float fVar11;
  float fVar12;
  undefined **local_88;
  undefined8 *local_80;
  undefined ***local_50;
  
  *param_1 = CueVisualisationBase::vftable;
  param_1[1] = CueVisualisationBase::vftable;
  *(undefined4 *)(param_1 + 2) = 0;
  *(undefined8 *)((longlong)param_1 + 0x14) = 0x3f800000;
  param_1[4] = param_5;
  param_1[0xc] = 0;
  FUN_180488560(param_1 + 5,param_6,param_3,param_4,0xfffffffffffffffe);
  FUN_180484da0(param_1 + 0xd,param_2);
  puVar1 = param_1 + 0x28;
  FUN_181411e40(puVar1,DAT_1824c4508,DAT_1824c3ea4,param_7);
  param_1[0x5c] = param_4;
  FUN_1811e50d0(param_1 + 0x5d,param_3);
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  *(undefined4 *)(param_1 + 99) = 0x3f800000;
  param_1[100] = 0;
  *(undefined8 *)((longlong)param_1 + 0x2d4) = DAT_18235df78;
  *(undefined4 *)((longlong)param_1 + 0x2dc) = DAT_18235df80;
  fVar7 = DAT_1824c44a8;
  uVar6 = DAT_1824c3df0;
  plVar3 = (longlong *)param_1[0x57];
  plVar10 = (longlong *)*plVar3;
  if (plVar10 != plVar3) {
    fVar11 = sqrtf(DAT_1824c4584);
    fVar11 = fVar11 * DAT_1824c41e0;
    fVar12 = sqrtf(DAT_1824c45ac);
    fVar12 = fVar12 / DAT_1824c459c;
    do {
      lVar4 = *(longlong *)(plVar10[5] + 0x10);
      *(undefined8 *)(lVar4 + 0x78) = 0x447a000042480000;
      *(undefined4 *)(lVar4 + 0x80) = uVar6;
      *(float *)(lVar4 + 0x84) = fVar7 / fVar11;
      *(float *)(lVar4 + 0x88) = fVar12;
      plVar5 = (longlong *)plVar10[2];
      if (*(char *)((longlong)plVar5 + 0x19) == '\0') {
        cVar2 = *(char *)(*plVar5 + 0x19);
        plVar10 = plVar5;
        plVar5 = (longlong *)*plVar5;
        while (cVar2 == '\0') {
          cVar2 = *(char *)(*plVar5 + 0x19);
          plVar10 = plVar5;
          plVar5 = (longlong *)*plVar5;
        }
      }
      else {
        cVar2 = *(char *)(plVar10[1] + 0x19);
        plVar8 = (longlong *)plVar10[1];
        plVar5 = plVar10;
        while ((plVar10 = plVar8, cVar2 == '\0' && (plVar5 == (longlong *)plVar10[2]))) {
          cVar2 = *(char *)(plVar10[1] + 0x19);
          plVar8 = (longlong *)plVar10[1];
          plVar5 = plVar10;
        }
      }
    } while (plVar10 != plVar3);
  }
  FUN_181410d30(puVar1,"alpha",0);
  FUN_181411b10(puVar1,"offset",0);
  local_88 = std::
             _Func_impl_no_alloc<<lambda_7e838aa0b6c670f0718c4ab2ca2bab7a>,void,juce::StringRef,float>
             ::vftable;
  local_50 = &local_88;
  local_80 = param_1;
  FUN_181410000(puVar1,&local_88);
  uVar9 = FUN_1811316e0(0x10);
  uVar9 = FUN_1811e8780(uVar9,param_1 + 0x5d,param_1 + 1);
  FUN_180485e60(param_1 + 0x60,uVar9);
  uVar9 = FUN_1811316e0(0x40);
  local_88 = std::_Func_impl_no_alloc<<lambda_c96ecc9cc0c2982d8a43eef072a2bf2b>,void,float>::vftable
  ;
  local_50 = &local_88;
  local_80 = param_1;
  uVar9 = FUN_18055e880(uVar9,param_4,&local_88);
  lVar4 = param_1[100];
  param_1[100] = uVar9;
  if (lVar4 != 0) {
    FUN_18056a070();
  }
  FUN_181414200(param_5,param_1);
  FUN_180484cd0(param_2);
  plVar3 = (longlong *)param_6[7];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_6);
    param_6[7] = 0;
  }
  return param_1;
}



############ FUN_ 180573920 size=154 ############

undefined8 *
FUN_180573920(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<std::function<void___cdecl(juce::StringRef,float)>,void,juce::String,float>
            ::vftable;
  puVar2[8] = 0;
  plVar1 = (longlong *)param_1[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_1) {
      uVar3 = (**(code **)(*plVar1 + 8))(plVar1,puVar2 + 1,param_3,param_4,uVar3);
      puVar2[8] = uVar3;
      plVar1 = (longlong *)param_1[7];
      if (plVar1 == (longlong *)0x0) {
        return puVar2;
      }
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1);
    }
    else {
      puVar2[8] = plVar1;
    }
    param_1[7] = 0;
  }
  return puVar2;
}



############ FUN_ 181406d20 size=837 ############

void FUN_181406d20(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  uint uVar2;
  char cVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined4 **ppuVar12;
  longlong lVar13;
  uint *puVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  undefined4 *local_res18;
  longlong local_res20;
  longlong local_108;
  undefined8 local_100;
  longlong local_f8;
  undefined4 *local_e8;
  undefined4 local_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined4 *local_c8;
  undefined4 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined4 *local_98;
  undefined4 *local_90;
  undefined8 local_88;
  longlong local_80;
  undefined **local_78;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined ***local_40;
  
  local_b8 = 0xfffffffffffffffe;
  FUN_18049c9e0();
  puVar10 = *(undefined8 **)(param_1 + 0x168);
  puVar11 = (undefined8 *)puVar10[1];
  cVar3 = *(char *)((longlong)puVar11 + 0x19);
  puVar6 = puVar10;
  puVar15 = puVar11;
  while (cVar3 == '\0') {
    uVar5 = puVar15[4];
    local_b0 = uVar5;
    iVar8 = FUN_18048cbc0(uVar5,local_108);
    if (iVar8 < 0) {
      puVar16 = (undefined8 *)puVar15[2];
      puVar15 = puVar6;
    }
    else {
      if ((*(char *)((longlong)puVar10 + 0x19) != '\0') &&
         (local_a8 = uVar5, iVar8 = FUN_18048cbc0(local_108,uVar5), iVar8 < 0)) {
        puVar10 = puVar15;
      }
      puVar16 = (undefined8 *)*puVar15;
    }
    puVar6 = puVar15;
    puVar15 = puVar16;
    cVar3 = *(char *)((longlong)puVar16 + 0x19);
  }
  if (*(char *)((longlong)puVar10 + 0x19) == '\0') {
    puVar11 = (undefined8 *)*puVar10;
  }
  cVar3 = *(char *)((longlong)puVar11 + 0x19);
  while (cVar3 == '\0') {
    local_a0 = puVar11[4];
    iVar8 = FUN_18048cbc0();
    if (iVar8 < 0) {
      puVar15 = (undefined8 *)*puVar11;
      puVar10 = puVar11;
    }
    else {
      puVar15 = (undefined8 *)puVar11[2];
    }
    puVar11 = puVar15;
    cVar3 = *(char *)((longlong)puVar15 + 0x19);
  }
  lVar13 = 0;
  while (puVar6 != puVar10) {
    lVar13 = lVar13 + 1;
    puVar11 = (undefined8 *)puVar6[2];
    if (*(char *)((longlong)puVar11 + 0x19) == '\0') {
      cVar3 = *(char *)((longlong)*puVar11 + 0x19);
      puVar6 = puVar11;
      puVar11 = (undefined8 *)*puVar11;
      while (cVar3 == '\0') {
        cVar3 = *(char *)((longlong)*puVar11 + 0x19);
        puVar6 = puVar11;
        puVar11 = (undefined8 *)*puVar11;
      }
    }
    else {
      cVar3 = *(char *)((longlong)puVar6[1] + 0x19);
      puVar15 = (undefined8 *)puVar6[1];
      puVar11 = puVar6;
      while ((puVar6 = puVar15, cVar3 == '\0' && (puVar11 == (undefined8 *)puVar6[2]))) {
        cVar3 = *(char *)((longlong)puVar6[1] + 0x19);
        puVar15 = (undefined8 *)puVar6[1];
        puVar11 = puVar6;
      }
    }
  }
  puVar14 = (uint *)(local_108 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  if (lVar13 != 0) {
    return;
  }
  puVar9 = (undefined4 *)FUN_1811316e0(0x48);
  local_res18 = *(undefined4 **)(param_1 + 0x188);
  uVar4 = *(undefined4 *)(param_1 + 400);
  *puVar9 = 0x3f800000;
  *(undefined1 **)(puVar9 + 2) = &DAT_1821dbf98;
  plVar1 = (longlong *)(puVar9 + 4);
  *plVar1 = 0;
  puVar7 = puVar9 + 6;
  *puVar7 = 0x3f800000;
  local_c8 = local_res18;
  local_c0 = uVar4;
  local_98 = puVar9;
  InitializeCriticalSection((LPCRITICAL_SECTION)(puVar9 + 7));
  local_d8 = param_1 + 0x58;
  uStack_d0 = puVar9;
  local_90 = puVar7;
  local_88 = FUN_1811316e0(0x88);
  local_e8 = local_res18;
  local_78 = std::_Func_impl_no_alloc<<lambda_a82580d2ec5bbe7e3c208454bceab682>,void,float>::vftable
  ;
  local_70 = (undefined4)local_d8;
  uStack_6c = local_d8._4_4_;
  uStack_68 = (undefined4)uStack_d0;
  uStack_64 = uStack_d0._4_4_;
  local_40 = &local_78;
  local_e0 = uVar4;
  puVar10 = (undefined8 *)FUN_1813bb890(local_88,puVar7,puVar9,&local_78,&local_e8);
  if (plVar1 == &local_80) {
    if (puVar10 == (undefined8 *)0x0) goto LAB_181406f90;
    puVar11 = (undefined8 *)*puVar10;
  }
  else {
    puVar6 = (undefined8 *)*plVar1;
    *plVar1 = (longlong)puVar10;
    if (puVar6 == (undefined8 *)0x0) goto LAB_181406f90;
    puVar11 = (undefined8 *)*puVar6;
    puVar10 = puVar6;
  }
  (*(code *)*puVar11)(puVar10,1);
LAB_181406f90:
  local_res18 = puVar9;
  FUN_18049c9e0(&local_100,param_2);
  local_f8 = *(longlong *)(puVar9 + 2);
  *(undefined8 *)(puVar9 + 2) = local_100;
  puVar14 = (uint *)(local_f8 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  FUN_18049c9e0(&local_res20,param_2);
  ppuVar12 = (undefined4 **)FUN_1805714d0(param_1 + 0x168,&local_res20);
  if (ppuVar12 != &local_res18) {
    local_res18 = (undefined4 *)0x0;
    puVar7 = *ppuVar12;
    *ppuVar12 = puVar9;
    if (puVar7 != (undefined4 *)0x0) {
      FUN_18056e160();
    }
  }
  puVar14 = (uint *)(local_res20 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  if (local_res18 != (undefined4 *)0x0) {
    FUN_18056e160();
  }
  return;
}



############ FUN_ 181406a70 size=672 ############

void FUN_181406a70(longlong param_1,undefined8 param_2)

{
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  int iVar6;
  longlong *plVar7;
  longlong lVar8;
  uint *puVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  undefined8 *puVar13;
  longlong local_res18;
  longlong local_res20;
  longlong local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  longlong local_58;
  undefined8 local_48;
  undefined4 local_40;
  
  local_78 = 0xfffffffffffffffe;
  FUN_18049c9e0();
  puVar11 = *(undefined8 **)(param_1 + 0x178);
  puVar13 = (undefined8 *)puVar11[1];
  cVar2 = *(char *)((longlong)puVar13 + 0x19);
  puVar5 = puVar11;
  puVar10 = puVar13;
  while (cVar2 == '\0') {
    uVar3 = puVar10[4];
    local_70 = uVar3;
    iVar6 = FUN_18048cbc0(uVar3,local_88);
    if (iVar6 < 0) {
      puVar12 = (undefined8 *)puVar10[2];
      puVar10 = puVar5;
    }
    else {
      if ((*(char *)((longlong)puVar11 + 0x19) != '\0') &&
         (local_68 = uVar3, iVar6 = FUN_18048cbc0(local_88,uVar3), iVar6 < 0)) {
        puVar11 = puVar10;
      }
      puVar12 = (undefined8 *)*puVar10;
    }
    puVar5 = puVar10;
    puVar10 = puVar12;
    cVar2 = *(char *)((longlong)puVar12 + 0x19);
  }
  if (*(char *)((longlong)puVar11 + 0x19) == '\0') {
    puVar13 = (undefined8 *)*puVar11;
  }
  cVar2 = *(char *)((longlong)puVar13 + 0x19);
  while (cVar2 == '\0') {
    local_60 = puVar13[4];
    iVar6 = FUN_18048cbc0();
    if (iVar6 < 0) {
      puVar10 = (undefined8 *)*puVar13;
      puVar11 = puVar13;
    }
    else {
      puVar10 = (undefined8 *)puVar13[2];
    }
    puVar13 = puVar10;
    cVar2 = *(char *)((longlong)puVar10 + 0x19);
  }
  lVar8 = 0;
  while (puVar5 != puVar11) {
    lVar8 = lVar8 + 1;
    puVar13 = (undefined8 *)puVar5[2];
    if (*(char *)((longlong)puVar13 + 0x19) == '\0') {
      cVar2 = *(char *)((longlong)*puVar13 + 0x19);
      puVar5 = puVar13;
      puVar13 = (undefined8 *)*puVar13;
      while (cVar2 == '\0') {
        cVar2 = *(char *)((longlong)*puVar13 + 0x19);
        puVar5 = puVar13;
        puVar13 = (undefined8 *)*puVar13;
      }
    }
    else {
      cVar2 = *(char *)((longlong)puVar5[1] + 0x19);
      puVar10 = (undefined8 *)puVar5[1];
      puVar13 = puVar5;
      while ((puVar5 = puVar10, cVar2 == '\0' && (puVar13 == (undefined8 *)puVar5[2]))) {
        cVar2 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar10 = (undefined8 *)puVar5[1];
        puVar13 = puVar5;
      }
    }
  }
  puVar9 = (uint *)(local_88 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (lVar8 == 0) {
    local_res18 = FUN_1811316e0(0x48);
    local_48 = *(undefined8 *)(param_1 + 0x194);
    local_40 = *(undefined4 *)(param_1 + 0x19c);
    lVar8 = FUN_180572270(local_res18,param_1 + 0x58,&local_48);
    local_res18 = lVar8;
    FUN_18049c9e0(&local_80,param_2);
    local_58 = *(longlong *)(lVar8 + 8);
    *(undefined8 *)(lVar8 + 8) = local_80;
    puVar9 = (uint *)(local_58 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    FUN_18049c9e0(&local_res20,param_2);
    plVar7 = (longlong *)FUN_1805714d0(param_1 + 0x178,&local_res20);
    if (plVar7 != &local_res18) {
      local_res18 = 0;
      lVar4 = *plVar7;
      *plVar7 = lVar8;
      if (lVar4 != 0) {
        FUN_18056e160();
      }
    }
    puVar9 = (uint *)(local_res20 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    if (local_res18 != 0) {
      FUN_18056e160();
    }
  }
  return;
}



############ FUN_ 180572270 size=525 ############

undefined4 * FUN_180572270(undefined4 *param_1,undefined8 param_2,undefined8 *param_3)

{
  undefined4 **ppuVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  float fVar6;
  float fVar7;
  undefined4 *local_res8;
  undefined8 *local_res10;
  undefined ***local_res20;
  float fStack_114;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined **local_f8;
  undefined4 local_f0;
  undefined4 uStack_ec;
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  undefined ***local_c0;
  undefined8 local_b8;
  undefined1 local_b0 [56];
  undefined8 local_78;
  
  local_b8 = 0xfffffffffffffffe;
  *param_1 = 0x3f800000;
  *(undefined1 **)(param_1 + 2) = &DAT_1821dbf98;
  ppuVar1 = (undefined4 **)(param_1 + 4);
  *ppuVar1 = (undefined4 *)0x0;
  param_1[6] = 0x3f800000;
  local_res8 = param_1;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 7));
  puVar4 = (undefined8 *)FUN_1811316e0(0x98);
  uVar2 = *param_3;
  fVar7 = *(float *)(param_3 + 1);
  local_f8 = std::_Func_impl_no_alloc<<lambda_1701b4394cdefd3e0b12dae0f5ff408a>,void,float>::vftable
  ;
  local_108 = (undefined4)param_2;
  uStack_104 = (undefined4)((ulonglong)param_2 >> 0x20);
  uStack_100 = SUB84(param_1,0);
  uStack_fc = (undefined4)((ulonglong)param_1 >> 0x20);
  local_f0 = local_108;
  uStack_ec = uStack_104;
  uStack_e8 = uStack_100;
  uStack_e4 = uStack_fc;
  local_c0 = &local_f8;
  local_res20 = &local_f8;
  local_78 = 0;
  local_res10 = puVar4;
  local_78 = (*(code *)std::
                       _Func_impl_no_alloc<<lambda_1701b4394cdefd3e0b12dae0f5ff408a>,void,float>::
                       vftable[0])(&local_f8,local_b0);
  FUN_1813bbb50(puVar4,param_1 + 6,param_1,local_b0);
  *puVar4 = SpringInterpolator::vftable;
  puVar4[0xc] = 0;
  puVar4[0xd] = 0;
  puVar4[0xe] = 0;
  *(undefined4 *)(puVar4 + 0xf) = 0x41a00000;
  *(undefined4 *)((longlong)puVar4 + 0x7c) = 0x43960000;
  *(undefined4 *)(puVar4 + 0x10) = 0x3ecccccd;
  *(undefined4 *)((longlong)puVar4 + 0x8c) = 0x3ba3d70a;
  *(undefined4 *)(puVar4 + 0x12) = 0x3ba3d70a;
  fStack_114 = (float)((ulonglong)uVar2 >> 0x20);
  puVar4[0xf] = uVar2;
  *(float *)(puVar4 + 0x10) = fVar7;
  fVar6 = sqrtf(fStack_114 * fVar7);
  *(float *)((longlong)puVar4 + 0x84) = (float)uVar2 / (fVar6 * DAT_1824c41e0);
  fVar7 = sqrtf(fStack_114 / fVar7);
  *(float *)(puVar4 + 0x11) = fVar7 / DAT_1824c459c;
  if (local_c0 != (undefined ***)0x0) {
    (*(code *)(*local_c0)[4])(local_c0,local_c0 != &local_f8);
  }
  if (ppuVar1 == &local_res8) {
    puVar5 = (undefined8 *)*puVar4;
  }
  else {
    puVar3 = (undefined8 *)*ppuVar1;
    *ppuVar1 = (undefined4 *)puVar4;
    if (puVar3 == (undefined8 *)0x0) {
      return param_1;
    }
    puVar5 = (undefined8 *)*puVar3;
    puVar4 = puVar3;
  }
  (*(code *)*puVar5)(puVar4,1);
  return param_1;
}



############ FUN_ 181414060 size=243 ############

void FUN_181414060(longlong param_1,undefined8 param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  longlong local_res8;
  undefined8 uVar3;
  undefined1 local_60 [56];
  undefined8 local_28;
  
  uVar3 = 0xfffffffffffffffe;
  lVar2 = FUN_1811316e0(0x40);
  local_28 = 0;
  local_res8 = lVar2;
  FUN_180488560(local_60,param_3);
  local_res8 = FUN_18055e880(lVar2,param_2,local_60);
  plVar1 = *(longlong **)(param_1 + 0x2400f8);
  if (*(longlong **)(param_1 + 0x240100) == plVar1) {
    FUN_180571dd0(param_1 + 0x2400f0,plVar1,&local_res8,plVar1,uVar3);
    lVar2 = local_res8;
  }
  else {
    *plVar1 = local_res8;
    *(longlong *)(param_1 + 0x2400f8) = *(longlong *)(param_1 + 0x2400f8) + 8;
    lVar2 = 0;
  }
  if (lVar2 != 0) {
    FUN_18056a070();
  }
  plVar1 = (longlong *)param_3[7];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_3);
    param_3[7] = 0;
  }
  return;
}



############ FUN_ 180561650 size=633 ############

void FUN_180561650(longlong param_1,int param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined4 *puVar4;
  longlong *plVar5;
  longlong *local_c0;
  longlong *local_b8;
  undefined1 local_b0;
  undefined8 *local_a8;
  int *local_a0;
  undefined8 *local_98;
  float local_90;
  float local_8c;
  undefined8 local_88;
  undefined1 local_80;
  void *local_78;
  undefined8 local_70;
  undefined **local_68;
  undefined8 local_60;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined1 local_48 [24];
  
  local_60 = 0xfffffffffffffffe;
  local_68 = juce::NativeImageType::vftable;
  (*(code *)PTR_FUN_1824988f0)(&local_68,&local_a8,2,param_2,param_3,1,0);
  local_98 = *(undefined8 **)(param_1 + 0x80);
  *(undefined8 **)(param_1 + 0x80) = local_a8;
  local_a8 = local_98;
  if (local_98 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_98 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_98)(local_98,1);
    }
  }
  plVar5 = *(longlong **)(param_1 + 0x80);
  if (plVar5 == (longlong *)0x0) {
    local_c0 = (longlong *)0x0;
  }
  else {
    (**(code **)(*plVar5 + 8))(plVar5,&local_c0);
  }
  local_b0 = 0;
  local_78 = (void *)0x0;
  local_70 = 0;
  local_80 = 1;
  local_90 = (float)param_2 * DAT_1824c3db8;
  local_8c = (float)param_3 * DAT_1824c4334;
  local_88 = CONCAT44((float)param_3 * DAT_1824c4680,local_90);
  local_b8 = local_c0;
  FUN_1812a1940(&local_90);
  FUN_1812a1940(&local_90,DAT_1824c4080,0xffe0dcda);
  FUN_1812a1940(&local_90,DAT_1824c40b0,0xffcccccc);
  FUN_1812a1940(&local_90,DAT_1824c40e0,0xffb2c0c6);
  FUN_1812a1940(&local_90,DAT_1824c40f8,0xffa7b9c0);
  FUN_1812a1940(&local_90,DAT_1824c4140,0xffb2c0c6);
  FUN_181296a90(&local_c0,&local_90);
  puVar4 = (undefined4 *)(**(code **)(*local_b8 + 0x58))(local_b8,local_48);
  local_58 = *puVar4;
  uStack_54 = puVar4[1];
  uStack_50 = puVar4[2];
  uStack_4c = puVar4[3];
  (**(code **)(*local_b8 + 0xa8))(local_b8,&local_58,0);
  plVar5 = (longlong *)FUN_1805989c0();
  lVar3 = *plVar5;
  local_a0 = (int *)FUN_1811316e0(0x18);
  local_a0[0] = 0;
  local_a0[1] = 0;
  local_a0[2] = 0;
  local_a0[4] = 0;
  local_a0[5] = 0;
  *(undefined4 *)(lVar3 + 500) = 0;
  FUN_18163bd70(local_a0,param_1 + 0x80);
  FUN_1805684e0(param_1 + 0x88,&local_a0);
  piVar1 = local_a0;
  if (local_a0 != (int *)0x0) {
    if (*local_a0 != 0) {
      plVar5 = (longlong *)FUN_1805989c0();
      if (*(longlong *)(piVar1 + 4) == *plVar5) {
        glDeleteTextures(1,piVar1);
        piVar1[0] = 0;
        piVar1[1] = 0;
        piVar1[2] = 0;
      }
    }
                    /* WARNING: Subroutine does not return */
    free(piVar1);
  }
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 180561f90 size=1187 ############

void FUN_180561f90(longlong param_1,undefined8 *param_2,longlong *param_3)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  undefined4 uVar5;
  longlong *plVar6;
  ulonglong *puVar7;
  ulonglong uVar8;
  uint *puVar9;
  float fVar10;
  float fVar11;
  undefined8 *local_res8;
  int *local_a8;
  longlong local_a0;
  longlong local_98;
  undefined **local_90;
  undefined8 *local_88;
  undefined8 local_80;
  undefined8 local_70;
  undefined8 uStack_68;
  
  local_80 = 0xfffffffffffffffe;
  if ((*(longlong *)(param_1 + 0x80) != 0) &&
     ((*(byte *)(*(longlong *)(param_1 + 0x80) + 0xa8) >> 1 & 1) != 0)) {
    fVar11 = (float)(double)param_2[0x33];
    local_70 = *(undefined8 *)(param_1 + 0xb8);
    uStack_68 = *(undefined8 *)(param_1 + 0xc0);
    (*(code *)*param_2)(0x84c0);
    if (*(char *)(param_1 + 0xd1) != '\0') {
      *(undefined1 *)(param_1 + 0xd1) = 0;
      plVar6 = (longlong *)FUN_1805989c0();
      if (*plVar6 != 0) {
        fVar10 = (float)*(double *)(*plVar6 + 0x198);
        local_90 = juce::NativeImageType::vftable;
        (*(code *)PTR_FUN_1824988f0)
                  (&local_90,&local_res8,2,(int)((float)*(int *)(param_1 + 0xa0) * fVar10),
                   (int)((float)SUB164(*(undefined1 (*) [16])(param_1 + 0x98),0xc) * fVar10),1);
        local_88 = *(undefined8 **)(param_1 + 0xd8);
        *(undefined8 **)(param_1 + 0xd8) = local_res8;
        local_res8 = local_88;
        if (local_88 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_88 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*local_88)(local_88,1);
          }
        }
        plVar6 = (longlong *)FUN_1805989c0();
        lVar4 = *plVar6;
        local_a8 = (int *)FUN_1811316e0(0x18);
        local_a8[0] = 0;
        local_a8[1] = 0;
        local_a8[2] = 0;
        local_a8[4] = 0;
        local_a8[5] = 0;
        *(undefined4 *)(lVar4 + 500) = 0;
        FUN_18163bd70(local_a8,param_1 + 0xd8);
        FUN_1805684e0(param_1 + 0xe0,&local_a8);
        piVar1 = local_a8;
        if (local_a8 != (int *)0x0) {
          if (*local_a8 != 0) {
            plVar6 = (longlong *)FUN_1805989c0();
            if (*(longlong *)(piVar1 + 4) == *plVar6) {
              glDeleteTextures(1,piVar1);
              piVar1[0] = 0;
              piVar1[1] = 0;
              piVar1[2] = 0;
            }
          }
                    /* WARNING: Subroutine does not return */
          free(piVar1);
        }
      }
      glCopyTexSubImage2D(0xde1,0,0,0,(int)((float)(int)local_70 * fVar11),
                          (int)((float)local_70._4_4_ * fVar11),
                          (int)((float)(int)uStack_68 * fVar11),
                          (int)((float)uStack_68._4_4_ * fVar11));
    }
    glBindTexture(0xde1,**(undefined4 **)(param_1 + 0xe0));
    glReadBuffer(0x405);
    puVar7 = (ulonglong *)FUN_18123aca0();
    uVar8 = *puVar7 * 0x5deece66d + 0xb & 0xffffffffffff;
    *puVar7 = uVar8;
    fVar10 = (float)((longlong)uVar8 >> 0x10) * DAT_1824c3c24;
    puVar7 = (ulonglong *)FUN_18123aca0();
    *puVar7 = *puVar7 * 0x5deece66d + 0xb & 0xffffffffffff;
    uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"jitter");
    (**(code **)(*param_3 + 0xd0))(uVar5,*param_3,fVar10);
    uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"alpha");
    (**(code **)(*param_3 + 0xc0))(uVar5);
    uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"desaturation");
    (**(code **)(*param_3 + 0xc0))(uVar5);
    uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"baseColour");
    (**(code **)(*param_3 + 0xd8))(uVar5,*param_3,DAT_1824c3e54,DAT_1824c3e60);
    glDrawArrays(6,0,*(undefined4 *)(param_1 + 0x94));
    FUN_18049c4e0(&local_a0,"BlurLayer draw");
    puVar9 = (uint *)(local_a0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    glCopyTexSubImage2D(0xde1,0,0,0,(int)((float)(int)local_70 * fVar11),
                        (int)((float)local_70._4_4_ * fVar11),(int)((float)(int)uStack_68 * fVar11),
                        (int)((float)uStack_68._4_4_ * fVar11));
    FUN_18049c4e0(&local_98,"BlurLayer glCopyTexSubImage");
    puVar9 = (uint *)(local_98 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  return;
}



############ FUN_ 180562b00 size=794 ############

undefined8 *
FUN_180562b00(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,
             undefined4 *param_9,undefined8 param_10)

{
  undefined8 *puVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined8 uVar7;
  int iVar8;
  longlong *plVar9;
  LPCRITICAL_SECTION lpCriticalSection;
  undefined **local_60;
  undefined8 *local_58;
  undefined ***local_28;
  
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[1] = Soothe2VertexData::vftable;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  *(undefined2 *)(param_1 + 0xe) = 0;
  *(undefined1 *)((longlong)param_1 + 0x72) = 0;
  puVar1 = param_1 + 0x11;
  *param_1 = FilterCurveLayer::vftable;
  param_1[0xf] = FilterCurveLayer::vftable;
  param_1[0x10] = FilterCurveLayer::vftable;
  *puVar1 = FilterCurveLayer::vftable;
  *(undefined2 *)(param_1 + 0x12) = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = param_3;
  param_1[0x17] = 0;
  param_1[0x18] = 0xffffffffffffffff;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0x1c,0x18,6,(_func_void_void_ptr *)&LAB_180485d70,FUN_18047cfb0);
  param_1[0x2e] = param_2;
  param_1[0x2f] = param_4;
  param_1[0x30] = param_5;
  param_1[0x31] = param_6;
  *(undefined4 *)(param_1 + 0x32) = 0xfa;
  *(undefined4 *)((longlong)param_1 + 0x194) = 2000;
  param_1[0xa033] = param_10;
  uVar4 = param_9[1];
  uVar5 = param_9[2];
  uVar6 = param_9[3];
  *(undefined4 *)(param_1 + 0x19) = *param_9;
  *(undefined4 *)((longlong)param_1 + 0xcc) = uVar4;
  *(undefined4 *)(param_1 + 0x1a) = uVar5;
  *(undefined4 *)((longlong)param_1 + 0xd4) = uVar6;
  param_1[0x1b] = *(undefined8 *)(param_9 + 4);
  FUN_18056cd00(param_1 + 5,0x13fb);
  FUN_18056c7b0(param_1 + 8,0x13fb);
  FUN_18056c7b0(param_1 + 0xb,0x13fb);
  lVar3 = param_1[0x2e];
  lpCriticalSection = (LPCRITICAL_SECTION)(lVar3 + 0x570);
  EnterCriticalSection(lpCriticalSection);
  plVar9 = *(longlong **)(lVar3 + 0x5a0);
  plVar2 = plVar9 + *(int *)(lVar3 + 0x5ac);
  for (; plVar9 != plVar2; plVar9 = plVar9 + 1) {
    if (puVar1 == (undefined8 *)*plVar9) goto LAB_180562d83;
  }
  LeaveCriticalSection(lpCriticalSection);
  if (puVar1 != (undefined8 *)0x0) {
    EnterCriticalSection(lpCriticalSection);
    EnterCriticalSection(lpCriticalSection);
    plVar9 = *(longlong **)(lVar3 + 0x5a0);
    plVar2 = plVar9 + *(int *)(lVar3 + 0x5ac);
    for (; plVar9 != plVar2; plVar9 = plVar9 + 1) {
      if (puVar1 == (undefined8 *)*plVar9) goto LAB_180562d7a;
    }
    LeaveCriticalSection(lpCriticalSection);
    EnterCriticalSection(lpCriticalSection);
    iVar8 = *(int *)(lVar3 + 0x5ac) + 1;
    if (*(int *)(lVar3 + 0x5a8) < iVar8) {
      FUN_18048a270(lpCriticalSection,*(int *)(lVar3 + 0x5ac) + 9 + iVar8 / 2 & 0xfffffff8);
    }
    iVar8 = *(int *)(lVar3 + 0x5ac);
    *(int *)(lVar3 + 0x5ac) = iVar8 + 1;
    *(undefined8 **)(*(longlong *)(lVar3 + 0x5a0) + (longlong)iVar8 * 8) = puVar1;
LAB_180562d7a:
    LeaveCriticalSection(lpCriticalSection);
LAB_180562d83:
    LeaveCriticalSection(lpCriticalSection);
  }
  uVar7 = FUN_1811316e0(0x40);
  local_60 = std::_Func_impl_no_alloc<<lambda_426489f193a649820eaec73a4f4fb397>,void,float>::vftable
  ;
  local_28 = &local_60;
  local_58 = param_1;
  uVar7 = FUN_18055e880(uVar7,param_3,&local_60);
  lVar3 = param_1[0x17];
  param_1[0x17] = uVar7;
  if (lVar3 != 0) {
    FUN_18056a070();
  }
  FUN_180562fe0(param_1);
  FUN_181414200(param_4,param_1 + 0x10);
  return param_1;
}



############ FUN_ 1805653d0 size=1510 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805653d0(longlong param_1,float param_2,undefined8 param_3,float param_4,
                  undefined8 param_5,float param_6)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  uint uVar9;
  undefined8 *puVar10;
  undefined8 in_RDX;
  longlong lVar11;
  longlong lVar12;
  double dVar13;
  float fVar14;
  double dVar15;
  undefined4 uVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  undefined1 auStack_228 [32];
  undefined ***local_208;
  undefined1 *local_200;
  undefined4 local_1f8;
  undefined4 uStack_1f4;
  undefined8 uStack_1f0;
  longlong local_1e8;
  float local_1e0;
  float local_1dc;
  double local_1d8;
  double local_1d0;
  double local_1c8;
  undefined8 local_1c0;
  longlong local_1b8;
  undefined **local_1b0;
  undefined8 local_1a8;
  longlong lStack_1a0;
  undefined ***local_178;
  undefined1 local_170 [56];
  undefined8 local_138;
  undefined **local_128;
  float local_120;
  float fStack_11c;
  float fStack_118;
  undefined4 uStack_114;
  longlong local_110;
  undefined ***local_f0;
  ulonglong local_e8;
  
  local_1c0 = 0xfffffffffffffffe;
  local_e8 = DAT_182615970 ^ (ulonglong)auStack_228;
  fVar14 = (float)param_3;
  lVar11 = 0;
  local_138 = 0;
  local_1b0 = std::
              _Func_impl_no_alloc<<lambda_17c8196088cc2adc18d40d7c2d76fdb6>,float,float,float,float>
              ::vftable;
  local_1a8 = CONCAT44(uStack_1f4,0x2000);
  local_178 = &local_1b0;
  local_1f8 = 0x2000;
  local_128 = std::
              _Func_impl_no_alloc<<lambda_c71e65fc779d7546fe0a3d1ba82d2388>,float,float,float,float>
              ::vftable;
  uStack_1f0._0_4_ = (undefined4)param_1;
  uStack_1f0._4_4_ = (undefined4)((ulonglong)param_1 >> 0x20);
  local_120 = 1.14794e-41;
  fStack_118 = (float)(undefined4)uStack_1f0;
  uStack_114 = uStack_1f0._4_4_;
  local_200 = local_170;
  local_208 = &local_1b0;
  uStack_1f0 = param_1;
  local_1e0 = fVar14;
  local_1dc = param_2;
  local_1b8 = param_1;
  lStack_1a0 = param_1;
  local_f0 = &local_128;
  FUN_1804db1b0(0x2000,in_RDX,param_3,&local_128);
  *(float *)(param_1 + 0xd8) = param_2;
  *(float *)(param_1 + 0xdc) = fVar14;
  *(undefined8 *)(param_1 + 0xe0) = 0;
  *(undefined8 *)(param_1 + 0xe8) = 0x3ff0000000000000;
  *(undefined4 *)(param_1 + 0xf0) = 0x2000;
  plVar1 = (longlong *)(param_1 + 0xf8);
  *plVar1 = 0;
  plVar2 = (longlong *)(param_1 + 0x100);
  *plVar2 = 0;
  dVar6 = (double)param_4;
  *(double *)(param_1 + 0x108) = dVar6;
  dVar5 = exp(dVar6);
  dVar8 = DAT_1824c4140;
  dVar13 = DAT_1824c4140 / (dVar5 + DAT_1824c4140);
  *(double *)(param_1 + 0x110) = dVar13;
  *(double *)(param_1 + 0x118) = (dVar5 - dVar8) * dVar13;
  *(double *)(param_1 + 0x120) = (double)param_2;
  *(double *)(param_1 + 0x128) = (double)fVar14;
  *(double *)(param_1 + 0x130) = (double)fVar14 / dVar6;
  local_1c8 = tanh(dVar6);
  local_1d0 = (double)atanh();
  local_1d0 = dVar8 / local_1d0;
  local_1d8 = *(double *)(param_1 + 0x128) - *(double *)(param_1 + 0x120);
  puVar10 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar10 = 0;
  puVar10[1] = 0;
  if (plVar1 == (longlong *)&local_1f8) {
    *(undefined4 *)((longlong)puVar10 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  puVar3 = (undefined8 *)*plVar1;
  *plVar1 = (longlong)puVar10;
  if (puVar3 == (undefined8 *)0x0) {
    FUN_180534840(*plVar1,0x2000);
    lVar4 = *(longlong *)*plVar1;
    local_208 = (undefined ***)CONCAT44(local_208._4_4_,0x2000);
    FUN_180557920(lVar4,DAT_1824c3ea4,0,DAT_1824c3ea4);
    dVar6 = local_1d0;
    uVar9 = DAT_1824c4f30;
    dVar5 = DAT_1824c4050;
    uVar18 = (undefined4)DAT_1824c41e8;
    uVar19 = (undefined4)((ulonglong)DAT_1824c41e8 >> 0x20);
    lVar12 = lVar11;
    do {
      dVar13 = (double)*(float *)(lVar4 + lVar12 * 4);
      if (0.0 <= param_6) {
        dVar7 = (double)param_6;
        if (dVar7 != 0.0) {
          dVar13 = (double)log2(SUB84(dVar7 * dVar13 + dVar8,0));
          dVar7 = (double)log2(SUB84(dVar7 + dVar8,0));
          dVar13 = dVar13 / dVar7;
        }
      }
      else {
        dVar7 = (double)(float)((uint)param_6 ^ uVar9);
        dVar13 = dVar8 - dVar13;
        if (dVar7 != 0.0) {
          dVar13 = (double)log2(SUB84(dVar13 * dVar7 + dVar8,0));
          dVar7 = (double)log2(SUB84(dVar7 + dVar8,0));
          dVar13 = dVar13 / dVar7;
        }
        dVar13 = dVar8 - dVar13;
        uVar18 = (undefined4)DAT_1824c41e8;
        uVar19 = (undefined4)((ulonglong)DAT_1824c41e8 >> 0x20);
      }
      dVar13 = (double)atanh(SUB84((dVar13 - dVar5) * (double)CONCAT44(uVar19,uVar18) * local_1c8,0)
                            );
      uVar16 = SUB84(local_1d8,0);
      uVar17 = (undefined4)((ulonglong)local_1d8 >> 0x20);
      *(float *)(lVar4 + lVar12 * 4) =
           (float)((dVar13 * dVar6 + dVar8) * dVar5 * local_1d8 + *(double *)(param_1 + 0x120));
      lVar12 = lVar12 + 1;
    } while (lVar12 < 0x2000);
    local_1f8 = 0;
    uStack_1f4 = 0x3f800000;
    uStack_1f0 = CONCAT44(uStack_1f0._4_4_,0x45fff800);
    local_128 = std::_Func_impl_no_alloc<<lambda_03f01822f76fc2673078ee71b606abaa>,float,float>::
                vftable;
    local_120 = 0.0;
    fStack_11c = 1.0;
    fStack_118 = 8191.0;
    uStack_114 = uStack_1f0._4_4_;
    local_1e8 = lVar4;
    local_110 = lVar4;
    local_f0 = &local_128;
    (*(code *)
      PTR_vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M___1824b0a58
    )(&local_128,0);
    puVar10 = (undefined8 *)FUN_1811316e0(0x10);
    *puVar10 = 0;
    puVar10[1] = 0;
    if (plVar2 == (longlong *)&local_1f8) {
      *(undefined4 *)((longlong)puVar10 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
    puVar3 = (undefined8 *)*plVar2;
    *plVar2 = (longlong)puVar10;
    if (puVar3 == (undefined8 *)0x0) {
      FUN_180534840(*plVar2,0x2000);
      lVar4 = *(longlong *)*plVar2;
      local_208 = (undefined ***)CONCAT44(local_208._4_4_,0x2000);
      FUN_180557920(lVar4,DAT_1824c3ea4,local_1dc,local_1e0);
      dVar13 = local_1c8;
      dVar6 = local_1d0;
      do {
        dVar7 = tanh(((((double)*(float *)(lVar4 + lVar11 * 4) - *(double *)(param_1 + 0x120)) /
                      (double)CONCAT44(uVar17,uVar16)) * (double)CONCAT44(uVar19,uVar18) - dVar8) /
                     dVar6);
        dVar7 = (dVar7 / dVar13) * dVar5 + dVar5;
        dVar15 = *(double *)(param_1 + 0xe0);
        if ((*(double *)(param_1 + 0xe0) <= dVar7) &&
           (dVar15 = *(double *)(param_1 + 0xe8), dVar7 <= *(double *)(param_1 + 0xe8))) {
          dVar15 = dVar7;
        }
        if (0.0 <= param_6) {
          dVar7 = (double)param_6;
          if (dVar7 != 0.0) {
            dVar15 = pow(dVar7 + dVar8,dVar15);
            dVar15 = (dVar15 - dVar8) / dVar7;
          }
        }
        else {
          dVar7 = (double)(float)((uint)param_6 ^ uVar9);
          dVar15 = dVar8 - dVar15;
          if (dVar7 != 0.0) {
            dVar15 = pow(dVar7 + dVar8,dVar15);
            dVar15 = (dVar15 - dVar8) / dVar7;
          }
          dVar15 = dVar8 - dVar15;
        }
        *(float *)(lVar4 + lVar11 * 4) = (float)dVar15;
        lVar11 = lVar11 + 1;
        uVar16 = SUB84(local_1d8,0);
        uVar17 = (undefined4)((ulonglong)local_1d8 >> 0x20);
      } while (lVar11 < 0x2000);
      fStack_118 = DAT_1824c45c0 / (local_1e0 - local_1dc);
      local_128 = std::_Func_impl_no_alloc<<lambda_03f01822f76fc2673078ee71b606abaa>,float,float>::
                  vftable;
      local_120 = local_1dc;
      fStack_11c = local_1e0;
      uStack_114 = uStack_1f0._4_4_;
      local_1e8 = lVar4;
      local_110 = lVar4;
      local_f0 = &local_128;
      (*(code *)
        PTR_vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M___1824b0a58
      )(&local_128,0);
    }
    *(undefined4 *)((longlong)puVar3 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar3);
  }
  *(undefined4 *)((longlong)puVar3 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar3);
}



############ FUN_ 18056a2c0 size=230 ############

void FUN_18056a2c0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  void *_Src;
  int *_Memory;
  int iVar3;
  undefined8 uVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  int *local_40;
  undefined8 local_38;
  
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130,param_2,param_3,param_4,0xfffffffffffffffe);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  local_40 = (int *)0x0;
  local_38 = 0;
  iVar2 = *(int *)((longlong)*(undefined8 **)(DAT_182673700 + 0x78) + 0xc);
  _Src = (void *)**(undefined8 **)(DAT_182673700 + 0x78);
  FUN_18051d660(&local_40,iVar2);
  _Memory = local_40;
  iVar3 = local_38._4_4_;
  memcpy(local_40 + (longlong)local_38._4_4_ * 0x10,_Src,(longlong)iVar2 << 6);
  iVar6 = 0;
  iVar5 = 0;
  if (_Memory != _Memory + (longlong)(iVar3 + iVar2) * 0x10) {
    piVar7 = _Memory + 8;
    do {
      if (iVar6 < piVar7[-1]) {
        iVar6 = piVar7[-1];
      }
      if (iVar5 < *piVar7) {
        iVar5 = *piVar7;
      }
      piVar1 = piVar7 + 8;
      piVar7 = piVar7 + 0x10;
    } while (piVar1 != _Memory + (longlong)(iVar3 + iVar2) * 0x10);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18163b610 size=339 ############

void FUN_18163b610(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  bool bVar3;
  char cVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = *(undefined4 *)(param_2 + 0x2c);
  uStack_10 = *(undefined4 *)(param_2 + 0x28);
  lVar5 = 0;
  local_18 = 0;
  FUN_181342870(param_2,&local_18,CONCAT71((uint7)(uint3)((uint)uStack_c >> 8),1),param_4,
                0xfffffffffffffffe);
  lVar1 = *(longlong *)(param_1 + 0x1a0);
  if ((lVar1 != 0) && (*(longlong *)(lVar1 + 8) != 0)) {
    lVar5 = *(longlong *)(*(longlong *)(lVar1 + 8) + 0x10);
  }
  if (lVar5 != param_2) {
    if (lVar1 != 0) {
      FUN_180597f80();
      puVar6 = *(undefined8 **)(param_1 + 0x1a0);
      *(undefined8 *)(param_1 + 0x1a0) = 0;
      if (puVar6 != (undefined8 *)0x0) {
        (**(code **)*puVar6)(puVar6,1);
      }
    }
    *(undefined8 *)(param_1 + 0x188) = 0;
    puVar6 = (undefined8 *)FUN_1811316e0(0x60);
    FUN_181322bc0(puVar6,param_2);
    puVar6[9] = 0xffffffffffffffff;
    *(undefined4 *)(puVar6 + 10) = 0;
    *puVar6 = juce::OpenGLContext::Attachment::vftable;
    puVar6[8] = juce::OpenGLContext::Attachment::vftable;
    puVar6[0xb] = param_1;
    if ((((*(char *)(param_1 + 499) == '\0') && (0 < *(int *)(param_2 + 0x28))) &&
        (0 < *(int *)(param_2 + 0x2c))) && (cVar4 = FUN_180598290(param_2), cVar4 != '\0')) {
      bVar3 = true;
    }
    else {
      bVar3 = false;
    }
    if (bVar3) {
      FUN_180598300(puVar6);
    }
    puVar2 = *(undefined8 **)(param_1 + 0x1a0);
    *(undefined8 **)(param_1 + 0x1a0) = puVar6;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  return;
}



############ FUN_ 180598300 size=378 ############

void FUN_180598300(longlong param_1)

{
  undefined8 *puVar1;
  void *_Memory;
  undefined8 uVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar4 = 0;
  lVar5 = lVar4;
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar5 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  uVar2 = FUN_1811316e0(0x400);
  lVar3 = *(longlong *)(param_1 + 0x58);
  uVar6 = *(ulonglong *)(lVar3 + 0x1d8);
  lVar3 = FUN_180596440(uVar2,lVar3,lVar5,lVar3 + 0x1a8,uVar6);
  if (*(longlong *)(lVar5 + 0x68) != lVar3) {
    puVar1 = *(undefined8 **)(lVar5 + 0x68);
    *(longlong *)(lVar5 + 0x68) = lVar3;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    uStack_c = *(undefined4 *)(lVar5 + 0x2c);
    uStack_10 = *(undefined4 *)(lVar5 + 0x28);
    local_18 = 0;
    FUN_181342870(lVar5,&local_18,1);
  }
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  lVar4 = __RTDynamicCast(*(undefined8 *)(lVar4 + 0x68),0,
                          &juce::CachedComponentImage::RTTI_Type_Descriptor,
                          &juce::OpenGLContext::CachedImage::RTTI_Type_Descriptor,
                          uVar6 & 0xffffffff00000000);
  if (lVar4 != 0) {
    if (*(longlong *)(lVar4 + 0x68) != 0) {
      uVar2 = FUN_1811316e0(0xf8);
      uVar2 = FUN_18122abb0(uVar2,1);
      _Memory = *(void **)(lVar4 + 0x300);
      *(undefined8 *)(lVar4 + 0x300) = uVar2;
      if (_Memory != (void *)0x0) {
        FUN_18122aa90(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (*(longlong *)(lVar4 + 0x300) != 0) {
        FUN_18122a750(*(longlong *)(lVar4 + 0x300),lVar4 + 8,0);
      }
    }
    FUN_180596f80(lVar4,1);
    FUN_1812a77d0(param_1 + 0x40,400);
  }
  return;
}



############ FUN_ 180596440 size=721 ############

undefined8 *
FUN_180596440(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5)

{
  uint *_Memory;
  uint uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  longlong local_res10;
  
  *param_1 = juce::CachedComponentImage::vftable;
  FUN_18049c4e0(&local_res10,"OpenGL Rendering");
  param_1[1] = juce::ThreadPoolJob::vftable;
  param_1[2] = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[3] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x22) = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 5));
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::OpenGLContext::CachedImage::vftable;
  param_1[1] = juce::OpenGLContext::CachedImage::vftable;
  param_1[0xd] = 0;
  param_1[0xe] = param_2;
  param_1[0xf] = param_3;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0x3ff0000000000000;
  param_1[0x19] = 0x3f800000;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0x3f800000;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  *(undefined1 *)(param_1 + 0x20) = 0;
  _Mtx_init_in_situ(param_1 + 0x21,2);
  _Cnd_init_in_situ(param_1 + 0x2b);
  *(undefined1 *)(param_1 + 0x34) = 0;
  *(undefined1 *)(param_1 + 0x35) = 0;
  _Mtx_init_in_situ(param_1 + 0x36,2);
  _Cnd_init_in_situ(param_1 + 0x40);
  *(undefined1 *)(param_1 + 0x49) = 0;
  *(undefined1 *)(param_1 + 0x4a) = 0;
  _Mtx_init_in_situ(param_1 + 0x4b,2);
  _Cnd_init_in_situ(param_1 + 0x55);
  *(undefined1 *)(param_1 + 0x5e) = 0;
  param_1[0x5f] = 0x10000;
  param_1[0x60] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x61));
  param_1[0x67] = 0;
  param_1[0x68] = 0;
  param_1[0x69] = 0;
  *(undefined1 *)(param_1 + 0x6a) = 0;
  _Mtx_init_in_situ(param_1 + 0x6b,2);
  _Cnd_init_in_situ(param_1 + 0x75);
  *(undefined1 *)(param_1 + 0x7e) = 0;
  param_1[0x7f] = 0;
  local_res10 = FUN_1811316e0(0x68);
  uVar3 = FUN_180595860(local_res10,param_1[0xf],param_4,param_5);
  puVar2 = (undefined8 *)param_1[0xd];
  param_1[0xd] = uVar3;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = (undefined8 *)param_1[0xd];
  if (puVar2[5] == 0) {
    param_1[0xd] = 0;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  else {
    *(undefined8 **)(param_1[0xe] + 0x188) = puVar2;
  }
  return param_1;
}



############ FUN_ 180595860 size=1264 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180595860(undefined8 *param_1,longlong param_2,int *param_3,HGLRC param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  int format;
  BOOL BVar5;
  HGLRC pHVar6;
  HGLRC pHVar7;
  PROC pPVar8;
  char *pcVar9;
  int iVar10;
  undefined1 auStack_1c8 [32];
  int *local_1a8;
  undefined8 **local_1a0;
  undefined8 *local_198;
  undefined8 uStack_190;
  int local_188 [2];
  undefined8 local_180;
  undefined8 *local_178;
  PIXELFORMATDESCRIPTOR local_170;
  undefined8 local_148;
  undefined8 uStack_140;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined4 local_128;
  undefined4 local_124;
  undefined4 local_120;
  int local_11c;
  undefined4 local_118;
  int local_114;
  undefined4 local_110;
  int local_10c;
  undefined4 local_108;
  int local_104;
  undefined4 local_100;
  int local_fc;
  undefined4 local_f8;
  int local_f4;
  undefined4 local_f0;
  int local_ec;
  undefined4 local_e8;
  int local_e4;
  undefined4 local_e0;
  int local_dc;
  undefined4 local_d8;
  int local_d4;
  undefined4 local_d0;
  int local_cc;
  undefined4 local_c8;
  undefined4 local_c4;
  undefined4 local_c0;
  uint local_bc;
  ulonglong local_48;
  
  local_180 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  param_1[1] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 2) = 0;
  *param_1 = juce::OpenGLContext::NativeContext::vftable;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[7] = 0;
  param_1[8] = 0x3ff0000000000000;
  param_1[9] = 0;
  local_178 = param_1;
  local_198 = (undefined8 *)FUN_1811316e0(0xb8);
  local_198[1] = &DAT_1821dbf98;
  local_198[2] = &DAT_1821dbf98;
  local_198[3] = 0;
  local_198[4] = 0;
  local_198[5] = 0;
  local_198[6] = 0;
  local_198[7] = 0;
  local_198[8] = 0;
  local_198[9] = 0;
  local_198[10] = 0;
  local_198[0xb] = 0;
  local_198[0xc] = 0;
  local_198[0xd] = 0;
  local_198[0xe] = 0;
  local_198[0xf] = 0;
  local_198[0x10] = 0;
  local_198[0x11] = 0;
  local_198[0x12] = 0;
  local_198[0x13] = 0;
  local_198[0x14] = 0;
  *(undefined4 *)(local_198 + 0x15) = 0;
  *(undefined1 *)((longlong)local_198 + 0xac) = 0;
  *local_198 = juce::OpenGLContext::NativeContext::DummyComponent::vftable;
  local_198[0x16] = param_1;
  puVar1 = (undefined8 *)param_1[3];
  param_1[3] = local_198;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_180596030(param_1,param_2);
  local_170.dwVisibleMask = 0;
  local_170.dwDamageMask = 0;
  local_170.nSize = 0x28;
  local_170.nVersion = 1;
  local_170.dwFlags = 0x25;
  local_170._8_4_ =
       (uint)CONCAT11((char)*param_3,(char)param_3[1] + (char)*param_3 + (char)param_3[2]) << 8;
  local_170.cGreenBits = (char)param_3[1];
  local_170.cGreenShift = '\0';
  local_170.cBlueBits = (char)param_3[2];
  local_170.cBlueShift = '\0';
  local_170.cAuxBuffers = '\0';
  local_170.iLayerType = '\0';
  local_170.bReserved = '\0';
  local_170.dwLayerMask = 0;
  local_170.cStencilBits = *(byte *)(param_3 + 5);
  local_170.cAlphaShift = '\0';
  local_170.cAlphaBits = *(byte *)(param_3 + 3);
  local_170.cAccumBits = (BYTE)param_3[7] + (BYTE)param_3[6] + (BYTE)param_3[8] + (BYTE)param_3[9];
  local_170.cAccumRedBits = (BYTE)param_3[6];
  local_170.cAccumGreenBits = (BYTE)param_3[7];
  local_170.cAccumBlueBits = (BYTE)param_3[8];
  local_170.cAccumAlphaBits = (BYTE)param_3[9];
  local_170.cDepthBits = (BYTE)param_3[4];
  format = ChoosePixelFormat((HDC)param_1[6],&local_170);
  if (format != 0) {
    SetPixelFormat((HDC)param_1[6],format,&local_170);
  }
  pHVar6 = wglCreateContext((HDC)param_1[6]);
  param_1[5] = pHVar6;
  if (pHVar6 != (HGLRC)0x0) {
    pHVar7 = wglGetCurrentContext();
    if (pHVar7 != pHVar6) {
      wglMakeCurrent((HDC)param_1[6],pHVar6);
    }
    pPVar8 = wglGetProcAddress("wglChoosePixelFormatARB");
    param_1[10] = pPVar8;
    pPVar8 = wglGetProcAddress("wglSwapIntervalEXT");
    param_1[0xb] = pPVar8;
    pPVar8 = wglGetProcAddress("wglGetSwapIntervalEXT");
    param_1[0xc] = pPVar8;
    local_188[0] = 0;
    if (param_1[10] != 0) {
      local_148 = _DAT_1824c4850;
      uStack_140 = _UNK_1824c4858;
      local_138 = _DAT_1824c4940;
      uStack_130 = _UNK_1824c4948;
      local_128 = 0x2003;
      local_124 = 0x2027;
      local_120 = 0x2014;
      local_11c = param_3[2] + *param_3 + param_3[1];
      local_118 = 0x2015;
      local_114 = *param_3;
      local_110 = 0x2017;
      local_10c = param_3[1];
      local_108 = 0x2019;
      local_104 = param_3[2];
      local_100 = 0x201b;
      local_fc = param_3[3];
      local_f8 = 0x2022;
      local_f4 = param_3[4];
      local_f0 = 0x2023;
      local_ec = param_3[5];
      local_e8 = 0x201e;
      local_e4 = param_3[6];
      local_e0 = 0x201f;
      local_dc = param_3[7];
      local_d8 = 0x2020;
      local_d4 = param_3[8];
      local_d0 = 0x2021;
      local_cc = param_3[9];
      iVar10 = 0x20;
      if ((char)param_3[10] != '\0') {
        pcVar9 = (char *)glGetString(0x1f03);
        for (pcVar9 = strstr(pcVar9,"GL_ARB_multisample"); pcVar9 != (char *)0x0;
            pcVar9 = strstr(pcVar9 + 0x12,"GL_ARB_multisample")) {
          if ((pcVar9[0x12] & 0xdfU) == 0) {
            local_c8 = 0x2041;
            local_c4 = 1;
            local_c0 = 0x2042;
            local_bc = (uint)*(byte *)(param_3 + 10);
            iVar10 = 0x24;
            break;
          }
        }
      }
      *(undefined4 *)((longlong)&local_148 + (longlong)iVar10 * 4) = 0;
      local_198 = (undefined8 *)((ulonglong)local_198 & 0xffffffff00000000);
      local_1a0 = &local_198;
      local_1a8 = local_188;
      (*(code *)param_1[10])(param_1[6],&local_148,0,1);
    }
    iVar10 = local_188[0];
    wglMakeCurrent((HDC)0x0,(HGLRC)0x0);
    if ((iVar10 != format) && (iVar10 != 0)) {
      FUN_1805962f0(param_1);
      puVar1 = (undefined8 *)param_1[4];
      param_1[4] = 0;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      FUN_180596030(param_1,param_2);
      BVar5 = SetPixelFormat((HDC)param_1[6],iVar10,&local_170);
      if (BVar5 != 0) {
        if ((HGLRC)param_1[5] != (HGLRC)0x0) {
          wglDeleteContext((HGLRC)param_1[5]);
          param_1[5] = 0;
        }
        pHVar6 = wglCreateContext((HDC)param_1[6]);
        param_1[5] = pHVar6;
      }
    }
    if (param_4 != (HGLRC)0x0) {
      wglShareLists(param_4,(HGLRC)param_1[5]);
    }
    lVar4 = *(longlong *)(param_2 + 0x18);
    lVar3 = param_2;
    while (lVar2 = lVar4, lVar2 != 0) {
      lVar3 = lVar2;
      lVar4 = *(longlong *)(lVar2 + 0x18);
    }
    uStack_190 = *(undefined8 *)(lVar3 + 0x28);
    local_198 = (undefined8 *)0x0;
    FUN_181342870(lVar3,&local_198,1);
    uStack_190 = *(undefined8 *)(param_2 + 0x28);
    local_198 = (undefined8 *)0x0;
    FUN_181342870(param_2,&local_198,
                  CONCAT71((uint7)(uint3)((uint)*(undefined4 *)(param_2 + 0x2c) >> 8),1));
  }
}



############ FUN_ 180596030 size=692 ############

void FUN_180596030(longlong param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined **ppuVar4;
  longlong lVar5;
  longlong lVar6;
  char cVar7;
  longlong *plVar8;
  undefined8 uVar9;
  undefined4 *puVar10;
  HDC pHVar11;
  HWND hWnd;
  longlong lVar12;
  float fVar13;
  undefined8 *local_res8;
  double local_res10;
  double local_res18;
  double local_res20;
  undefined4 local_a8;
  int local_98;
  int iStack_94;
  int iStack_90;
  int iStack_8c;
  undefined8 local_88;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58 [4];
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  lVar12 = *(longlong *)(param_2 + 0x18);
  lVar6 = param_2;
  while (lVar5 = lVar12, lVar5 != 0) {
    lVar6 = lVar5;
    lVar12 = *(longlong *)(lVar5 + 0x18);
  }
  if ((*(byte *)(lVar6 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar6 + 0x18) != 0) {
      plVar8 = (longlong *)FUN_18134c2e0();
      goto LAB_180596095;
    }
LAB_1805960b2:
    lVar12 = 0;
  }
  else {
    plVar8 = (longlong *)FUN_1812d2bd0(lVar6);
LAB_180596095:
    if (plVar8 == (longlong *)0x0) goto LAB_1805960b2;
    if ((undefined **)*plVar8 == juce::HWNDComponentPeer::vftable) {
      lVar12 = plVar8[0x11];
    }
    else {
      lVar12 = (*(code *)((undefined **)*plVar8)[1])();
    }
  }
  uVar9 = *(undefined8 *)(param_1 + 0x18);
  local_res8 = (undefined8 *)FUN_1811316e0(0x158);
  uVar9 = FUN_18050dd00(local_res8,uVar9,4,lVar12,1);
  puVar3 = *(undefined8 **)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = uVar9;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if ((*(byte *)(lVar6 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar6 + 0x18) == 0) goto LAB_180596296;
    plVar8 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar8 = (longlong *)FUN_1812d2bd0(lVar6);
  }
  if (plVar8 != (longlong *)0x0) {
    FUN_1804de690(&local_res8,param_2);
    FUN_1804a9e60(param_1 + 0x48,&local_res8);
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    uVar9 = (**(code **)(*plVar8 + 0x110))(plVar8);
    *(undefined8 *)(param_1 + 0x40) = uVar9;
    cVar7 = FUN_18134ce40();
    if (cVar7 != '\0') {
      *(double *)(param_1 + 0x40) = *(double *)(param_1 + 0x40) * *(double *)(param_1 + 0x40);
    }
    FUN_1812a77d0(param_1,0x32);
    uStack_7c = *(undefined4 *)(param_2 + 0x2c);
    uStack_80 = *(undefined4 *)(param_2 + 0x28);
    local_88 = 0;
    local_68 = 0;
    uStack_64 = 0;
    uStack_60 = uStack_80;
    uStack_5c = uStack_7c;
    FUN_18051df30(&local_98,plVar8[1],param_2,&local_68);
    fVar13 = (float)(**(code **)(*(longlong *)plVar8[1] + 0x80))();
    if (fVar13 == DAT_1824c3ea4) {
      puVar10 = local_58;
    }
    else {
      local_res20 = (double)((float)iStack_90 * fVar13) + DAT_1824c4520;
      local_res18 = (double)((float)iStack_94 * fVar13) + DAT_1824c4520;
      local_res10 = (double)((float)local_98 * fVar13) + DAT_1824c4520;
      local_78 = local_res10._0_4_;
      local_74 = local_res18._0_4_;
      local_70 = local_res20._0_4_;
      local_a8 = SUB84((double)((float)iStack_8c * fVar13) + DAT_1824c4520,0);
      local_6c = local_a8;
      puVar10 = &local_78;
    }
    local_48 = *puVar10;
    uStack_44 = puVar10[1];
    uStack_40 = puVar10[2];
    uStack_3c = puVar10[3];
    FUN_180595d70(param_1,&local_48);
  }
LAB_180596296:
  (**(code **)(**(longlong **)(param_1 + 0x20) + 0x10))(*(longlong **)(param_1 + 0x20),1);
  ppuVar4 = (undefined **)**(longlong **)(param_1 + 0x20);
  if (ppuVar4 == juce::HWNDComponentPeer::vftable) {
    hWnd = (HWND)(*(longlong **)(param_1 + 0x20))[0x11];
  }
  else {
    hWnd = (HWND)(*(code *)ppuVar4[1])();
  }
  pHVar11 = GetDC(hWnd);
  *(HDC *)(param_1 + 0x30) = pHVar11;
  return;
}



############ FUN_ 180596f80 size=1161 ############

void FUN_180596f80(longlong *param_1,char param_2)

{
  double dVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  longlong lVar10;
  undefined4 *puVar11;
  undefined8 uVar12;
  longlong lVar13;
  longlong *plVar14;
  undefined8 *puVar15;
  char cVar16;
  float fVar17;
  undefined4 local_res8;
  undefined4 local_res18;
  undefined4 local_res20;
  int local_198;
  int iStack_194;
  int iStack_190;
  int iStack_18c;
  undefined8 local_188;
  undefined4 uStack_180;
  undefined4 uStack_17c;
  undefined8 local_178;
  int iStack_170;
  int iStack_16c;
  undefined8 local_168;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined4 local_158;
  undefined4 local_154;
  undefined4 local_150;
  undefined4 local_14c;
  double local_148;
  float local_140;
  undefined8 uStack_13c;
  undefined4 uStack_134;
  ulonglong local_130;
  undefined1 local_128 [8];
  int local_120;
  int local_11c;
  longlong local_118;
  longlong lStack_110;
  double local_108;
  double local_100;
  double local_f8;
  double local_f0;
  undefined8 local_e8;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88 [2];
  undefined8 local_78;
  undefined8 uStack_70;
  undefined1 local_68 [16];
  undefined1 local_58 [32];
  
  local_e8 = 0xfffffffffffffffe;
  lVar10 = param_1[0xf];
  if ((*(byte *)(lVar10 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar10 + 0x18) == 0) {
      return;
    }
    lVar10 = FUN_18134c2e0();
  }
  else {
    lVar10 = FUN_1812d2bd0(lVar10);
  }
  if (lVar10 == 0) {
    return;
  }
  lVar13 = param_1[0xf];
  for (lVar7 = *(longlong *)(param_1[0xf] + 0x18); lVar7 != 0; lVar7 = *(longlong *)(lVar7 + 0x18))
  {
    lVar13 = lVar7;
  }
  uVar2 = *(undefined4 *)(lVar13 + 0x2c);
  uVar3 = *(undefined4 *)(lVar13 + 0x28);
  local_188 = 0;
  local_188._0_4_ = 0;
  local_188._4_4_ = 0;
  uStack_17c = uVar2;
  uStack_180 = uVar3;
  uVar5 = (undefined4)local_188;
  uVar6 = local_188._4_4_;
  for (; lVar13 != 0; lVar13 = *(longlong *)(lVar13 + 0x18)) {
    local_d8 = uVar5;
    uStack_d4 = uVar6;
    uStack_d0 = uVar3;
    uStack_cc = uVar2;
    puVar11 = (undefined4 *)FUN_18051e4b0(local_68,lVar13,&local_d8);
    uVar5 = *puVar11;
    uVar6 = puVar11[1];
    uVar3 = puVar11[2];
    uVar2 = puVar11[3];
  }
  plVar14 = *(longlong **)(param_1[0xd] + 0x20);
  local_c8 = uVar5;
  uStack_c4 = uVar6;
  uStack_c0 = uVar3;
  uStack_bc = uVar2;
  if (plVar14 != (longlong *)0x0) {
    if ((undefined **)*plVar14 == juce::HWNDComponentPeer::vftable) {
      lVar13 = plVar14[0x11];
    }
    else {
      lVar13 = (*(code *)((undefined **)*plVar14)[1])();
    }
    FUN_1812c75b0();
    if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
      cVar16 = FUN_1812c7510();
    }
    else {
      uVar12 = (*DAT_182678f08)(lVar13);
      iVar8 = (*DAT_182678ec8)(uVar12);
      cVar16 = iVar8 == 2;
    }
    if (cVar16 != '\0') {
      local_b8 = uVar5;
      uStack_b4 = uVar6;
      uStack_b0 = uVar3;
      uStack_ac = uVar2;
      if (DAT_182673700 == 0) {
        uVar12 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar12);
      }
      lVar13 = FUN_18133d8f0(*(undefined8 *)(DAT_182673700 + 0x78),&local_b8,0);
      dVar1 = *(double *)(lVar13 + 0x30);
      goto LAB_180597129;
    }
  }
  if (DAT_182673700 == 0) {
    uVar12 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar12);
  }
  dVar1 = (double)*(float *)(DAT_182673700 + 0xc0);
LAB_180597129:
  lVar13 = param_1[0xf];
  iVar8 = *(int *)(lVar13 + 0x2c);
  iVar4 = *(int *)(lVar13 + 0x28);
  uStack_a0 = *(undefined8 *)(lVar13 + 0x28);
  local_178 = 0;
  local_a8 = 0;
  iStack_170 = iVar4;
  iStack_16c = iVar8;
  FUN_18051df30(local_128,*(undefined8 *)(lVar10 + 8),lVar13,&local_a8);
  local_f0 = (double)local_11c * dVar1;
  local_f8 = (double)local_120 * dVar1;
  local_100 = dVar1 * 0.0;
  local_108 = dVar1 * 0.0;
  plVar14 = (longlong *)FUN_18051bbd0(&local_108,local_58,local_100,local_f8,0);
  local_118 = *plVar14;
  lStack_110 = plVar14[1];
  iVar9 = (int)((ulonglong)lStack_110 >> 0x20);
  if (((((double)param_1[0x18] != dVar1) || ((int)param_1[0x14] != (int)local_118)) ||
      (*(int *)((longlong)param_1 + 0xa4) != (int)((ulonglong)local_118 >> 0x20))) ||
     (((int)param_1[0x15] != (int)lStack_110 || (*(int *)((longlong)param_1 + 0xac) != iVar9)))) {
    param_1[0x18] = (longlong)dVar1;
    param_1[0x14] = local_118;
    param_1[0x15] = lStack_110;
    local_140 = (float)(int)lStack_110 / (float)iVar4;
    uStack_13c = 0;
    uStack_134 = 0;
    *(float *)(param_1 + 0x19) = local_140;
    *(undefined4 *)((longlong)param_1 + 0xcc) = 0;
    *(undefined4 *)(param_1 + 0x1a) = 0;
    *(undefined4 *)((longlong)param_1 + 0xd4) = 0;
    local_130 = (ulonglong)(uint)((float)iVar9 / (float)iVar8);
    param_1[0x1b] = local_130;
    lVar13 = param_1[0xf];
    uStack_15c = *(undefined4 *)(lVar13 + 0x2c);
    uStack_160 = *(undefined4 *)(lVar13 + 0x28);
    uStack_90 = *(undefined8 *)(lVar13 + 0x28);
    local_168 = 0;
    local_98 = 0;
    FUN_18051df30(&local_198,*(undefined8 *)(lVar10 + 8),lVar13,&local_98);
    fVar17 = (float)(**(code **)(**(longlong **)(lVar10 + 8) + 0x80))();
    if (fVar17 == DAT_1824c3ea4) {
      puVar15 = local_88;
    }
    else {
      local_148 = (double)((float)iStack_18c * fVar17) + DAT_1824c4520;
      dVar1 = local_148;
      local_res8 = SUB84((double)((float)local_198 * fVar17) + DAT_1824c4520,0);
      local_158 = local_res8;
      local_res18 = SUB84((double)((float)iStack_194 * fVar17) + DAT_1824c4520,0);
      local_154 = local_res18;
      local_res20 = SUB84((double)((float)iStack_190 * fVar17) + DAT_1824c4520,0);
      local_150 = local_res20;
      local_14c = local_148._0_4_;
      puVar15 = (undefined8 *)&local_158;
      local_148 = dVar1;
    }
    local_78 = *puVar15;
    uStack_70 = puVar15[1];
    FUN_180595d70(param_1[0xd],&local_78);
    if (param_2 != '\0') {
      if ((undefined **)*param_1 == juce::OpenGLContext::CachedImage::vftable) {
        *(undefined4 *)((longlong)param_1 + 0x9c) = 0;
        LOCK();
        *(undefined1 *)((longlong)param_1 + 0x2fa) = 1;
        UNLOCK();
        FUN_181215c10(param_1 + 0x4a);
      }
      else {
        (*(code *)((undefined **)*param_1)[2])(param_1);
      }
    }
  }
  return;
}



############ FUN_ 180565ca0 size=58 ############

undefined8 * FUN_180565ca0(undefined8 param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x300);
  uVar1 = FUN_1814d78a0(uVar1);
  *param_2 = uVar1;
  return param_2;
}



############ FUN_ 1814d78a0 size=1164 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814d78a0(longlong *param_1)

{
  undefined8 **ppuVar1;
  longlong *plVar2;
  longlong *plVar3;
  uint uVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined ***pppuVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  uint *_Memory;
  undefined ***pppuVar10;
  undefined1 auStack_188 [32];
  longlong local_168;
  longlong local_160;
  undefined8 *local_158;
  undefined8 local_150;
  longlong *local_148;
  longlong local_140;
  undefined **local_138;
  longlong *local_130;
  undefined ***local_100;
  undefined **local_f8;
  longlong *local_f0;
  undefined ***local_c0;
  longlong local_b8 [7];
  longlong *local_80;
  longlong local_78 [7];
  longlong *local_40;
  ulonglong local_38;
  
  local_150 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_188;
  local_148 = param_1;
  FUN_1813f4190();
  param_1[0x51] = 0;
  *(undefined1 *)(param_1 + 0x52) = 0;
  param_1[0x54] = -1;
  *(undefined4 *)(param_1 + 0x55) = 0;
  *param_1 = (longlong)ConfigMenu::vftable;
  param_1[0x50] = (longlong)ConfigMenu::vftable;
  param_1[0x53] = (longlong)ConfigMenu::vftable;
  ppuVar1 = (undefined8 **)(param_1 + 0x56);
  *ppuVar1 = (undefined8 *)0x0;
  plVar2 = param_1 + 0x57;
  *plVar2 = 0;
  param_1[0x58] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 0;
  param_1[0x5c] = 0;
  param_1[0x5d] = 0;
  *(undefined4 *)(param_1 + 0x5e) = 0;
  plVar3 = param_1 + 0x5f;
  *plVar3 = 0;
  FUN_18049c4e0(&local_168,"Config menu");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_168);
  _Memory = (uint *)(local_168 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_168 = FUN_1811316e0(0x490);
  puVar8 = (undefined8 *)FUN_1814b7eb0(local_168);
  if (plVar2 == &local_160) {
    if (puVar8 != (undefined8 *)0x0) {
      puVar9 = (undefined8 *)*puVar8;
      goto LAB_1814d7a05;
    }
  }
  else {
    puVar5 = (undefined8 *)*plVar2;
    *plVar2 = (longlong)puVar8;
    if (puVar5 != (undefined8 *)0x0) {
      puVar9 = (undefined8 *)*puVar5;
      puVar8 = puVar5;
LAB_1814d7a05:
      (*(code *)*puVar9)(puVar8,1);
    }
  }
  local_160 = FUN_1811316e0(0x498);
  puVar8 = (undefined8 *)FUN_1814be8d0(local_160);
  if (ppuVar1 == &local_158) {
    if (puVar8 != (undefined8 *)0x0) {
      puVar9 = (undefined8 *)*puVar8;
      goto LAB_1814d7a4b;
    }
  }
  else {
    puVar5 = *ppuVar1;
    *ppuVar1 = puVar8;
    if (puVar5 != (undefined8 *)0x0) {
      puVar9 = (undefined8 *)*puVar5;
      puVar8 = puVar5;
LAB_1814d7a4b:
      (*(code *)*puVar9)(puVar8,1);
    }
  }
  (**(code **)(*param_1 + 0x188))(param_1,*ppuVar1);
  (**(code **)(*param_1 + 0x188))(param_1,*plVar2);
  FUN_1812a77d0(param_1 + 0x53,0x21);
  FUN_18134bd50(param_1);
  puVar8 = (undefined8 *)FUN_1811316e0(0x100);
  local_158 = puVar8;
  memset(puVar8,0,0x100);
  *puVar8 = std::_Func_impl_no_alloc<<lambda_191bfacb41d410c5baa542311fec1847>,void>::vftable;
  puVar8[7] = puVar8;
  puVar8[8] = std::_Func_impl_no_alloc<<lambda_1af6f68916b393ab74c270408a7a647e>,void>::vftable;
  puVar8[0xf] = puVar8 + 8;
  puVar8[0x10] = std::_Func_impl_no_alloc<<lambda_5b8ffd48389f5112e3b0d585eda87aaf>,void>::vftable;
  puVar8[0x17] = puVar8 + 0x10;
  puVar8[0x18] = std::_Func_impl_no_alloc<<lambda_61829a2b33e1a9af49eaf4ef2038dc86>,void>::vftable;
  puVar8[0x1f] = puVar8 + 0x18;
  if (plVar3 == &local_140) {
    FUN_18056ae80(puVar8);
LAB_1814d7b24:
                    /* WARNING: Subroutine does not return */
    free(puVar8);
  }
  puVar9 = (undefined8 *)*plVar3;
  *plVar3 = (longlong)puVar8;
  if (puVar9 != (undefined8 *)0x0) {
    FUN_18056ae80(puVar9);
    puVar8 = puVar9;
    goto LAB_1814d7b24;
  }
  lVar6 = *plVar3;
  pppuVar10 = (undefined ***)(lVar6 + 0x40);
  local_138 = std::_Func_impl_no_alloc<<lambda_d79de9ec19dbe6bc9e11df450481ddef>,void>::vftable;
  local_100 = &local_138;
  local_80 = (longlong *)0x0;
  local_130 = param_1;
  local_80 = (longlong *)(*(code *)PTR_FUN_1824b6220)(&local_138,local_b8);
  if (local_100 != (undefined ***)0x0) {
    (*(code *)(*local_100)[4])(local_100,local_100 != &local_138);
    local_100 = (undefined ***)0x0;
  }
  pppuVar7 = *(undefined ****)(lVar6 + 0x78);
  if (pppuVar7 != (undefined ***)0x0) {
    if (pppuVar7 == pppuVar10) {
      local_100 = (undefined ***)(*(code *)(*pppuVar7)[1])(pppuVar7,&local_138);
      pppuVar7 = *(undefined ****)(lVar6 + 0x78);
      if (pppuVar7 == (undefined ***)0x0) goto LAB_1814d7bcb;
      (*(code *)(*pppuVar7)[4])(pppuVar7,pppuVar7 != pppuVar10);
      pppuVar7 = local_100;
    }
    local_100 = pppuVar7;
    *(undefined8 *)(lVar6 + 0x78) = 0;
  }
LAB_1814d7bcb:
  FUN_180488560(pppuVar10,local_b8);
  if (local_80 != (longlong *)0x0) {
    (**(code **)(*local_80 + 0x20))(local_80,local_80 != local_b8);
  }
  if (local_100 != (undefined ***)0x0) {
    (*(code *)(*local_100)[4])(local_100,local_100 != &local_138);
  }
  lVar6 = *plVar3;
  pppuVar10 = (undefined ***)(lVar6 + 0x80);
  local_f8 = std::_Func_impl_no_alloc<<lambda_2d8780d6ff625b29bd717eb223d3e1b4>,void>::vftable;
  local_c0 = &local_f8;
  local_40 = (longlong *)0x0;
  local_f0 = param_1;
  local_40 = (longlong *)(*(code *)PTR_FUN_1824b6970)(&local_f8,local_78);
  if (local_c0 != (undefined ***)0x0) {
    (*(code *)(*local_c0)[4])(local_c0,local_c0 != &local_f8);
    local_c0 = (undefined ***)0x0;
  }
  pppuVar7 = *(undefined ****)(lVar6 + 0xb8);
  if (pppuVar7 != (undefined ***)0x0) {
    if (pppuVar7 == pppuVar10) {
      local_c0 = (undefined ***)(*(code *)(*pppuVar7)[1])(pppuVar7,&local_f8);
      pppuVar7 = *(undefined ****)(lVar6 + 0xb8);
      if (pppuVar7 == (undefined ***)0x0) goto LAB_1814d7cb8;
      (*(code *)(*pppuVar7)[4])(pppuVar7,pppuVar7 != pppuVar10);
      pppuVar7 = local_c0;
    }
    local_c0 = pppuVar7;
    *(undefined8 *)(lVar6 + 0xb8) = 0;
  }
LAB_1814d7cb8:
  FUN_180488560(pppuVar10,local_78);
  if (local_40 != (longlong *)0x0) {
    (**(code **)(*local_40 + 0x20))(local_40,local_40 != local_78);
  }
  if (local_c0 != (undefined ***)0x0) {
    (*(code *)(*local_c0)[4])(local_c0,local_c0 != &local_f8);
  }
  FUN_18056aa40(param_1 + 0x16,*plVar3);
}



############ FUN_ 1814b7eb0 size=1056 ############

/* WARNING: Instruction at (ram,0x0001814b81a0) overlaps instruction at (ram,0x0001814b819c)
    */
/* WARNING: Removing unreachable block (ram,0x0001814b819c) */
/* WARNING: Removing unreachable block (ram,0x0001814b8300) */
/* WARNING: Removing unreachable block (ram,0x0001814b800d) */

void FUN_1814b7eb0(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  uint uVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined1 auStack_198 [104];
  undefined4 local_130;
  uint local_128;
  uint local_124;
  undefined1 local_118 [32];
  undefined1 *local_f8;
  undefined1 local_f0 [16];
  undefined8 *local_e0;
  undefined1 local_c0 [8];
  undefined8 local_b8;
  undefined8 *local_b0;
  ulonglong local_30;
  
  local_b8 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_198;
  local_e0 = param_1;
  local_b0 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = NoTooltipOption::vftable;
  FUN_1814d5360(param_1,puVar1);
  *param_1 = NoTooltipOptionComponent::vftable;
  param_1[0x16] = NoTooltipOptionComponent::vftable;
  param_1[0x19] = NoTooltipOptionComponent::vftable;
  param_1[0x1e] = NoTooltipOptionComponent::vftable;
  local_f8 = local_118;
  uVar2 = (**(code **)(*(longlong *)param_1[0x1a] + 0x10))((longlong *)param_1[0x1a],local_c0);
  FUN_18049c4e0(local_118,"");
  uVar2 = FUN_1812465e0(local_f0,uVar2,"Button");
  FUN_18160ae50(param_1 + 0x1f,uVar2,local_118);
  uVar3 = (uint)&stack0x00000000 & 0x39ff;
  uVar3 = (uVar3 * uVar3 + 1) % 7;
  local_128 = ~((int)(-uVar3 | uVar3) >> 0x1f & 0x106U) & 0xb16;
  uVar3 = (uint)&stack0x00000000 & 0x30ff;
  uVar3 = (uVar3 + 1) * uVar3 + 7;
  uVar4 = uVar3 % 0x51;
  local_124 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xba50 ^ 0xbda0;
  (**(code **)(param_1[0x1f] + 0x58))(param_1 + 0x1f,CONCAT71((uint7)(uint3)(uVar3 / 0x51 >> 8),1));
  FUN_181343cc0(param_1,param_1 + 0x1f,0xffffffff);
  do {
    local_130 = 0xd79d49ec;
    FUN_1814b9956();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  return;
}



############ FUN_ 1814be8d0 size=806 ############

/* WARNING: Removing unreachable block (ram,0x0001814beb78) */
/* WARNING: Removing unreachable block (ram,0x0001814bebeb) */
/* WARNING: Removing unreachable block (ram,0x0001814bea0e) */

short FUN_1814be8d0(undefined8 *param_1)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined1 uVar3;
  byte bVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  uint uVar8;
  uint *puVar9;
  code **ppcVar10;
  int iVar11;
  int unaff_retaddr;
  undefined1 local_218 [32];
  undefined *puStack_1f8;
  undefined4 uStack_1f0;
  undefined8 uStack_1e8;
  undefined *puStack_1e0;
  undefined8 uStack_1d8;
  undefined8 uStack_1d0;
  uint auStack_1c0 [9];
  uint local_19c;
  uint local_198;
  undefined8 *local_190;
  undefined4 uStack_188;
  code *apcStack_180 [4];
  undefined8 *local_160;
  undefined1 local_138 [8];
  undefined1 *local_130;
  undefined1 local_120 [8];
  undefined1 local_118 [56];
  undefined8 local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined1 auStack_c8 [152];
  ulonglong local_30;
  
  local_e0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)local_218;
  local_190 = param_1;
  local_d8 = param_1;
  puVar5 = (undefined8 *)FUN_1811316e0(8);
  *puVar5 = NoOpenGLOption::vftable;
  FUN_1814d5360(param_1,puVar5);
  puVar5 = param_1 + 0x1e;
  *param_1 = NoOpenGLOptionComponent::vftable;
  param_1[0x16] = NoOpenGLOptionComponent::vftable;
  param_1[0x19] = NoOpenGLOptionComponent::vftable;
  *puVar5 = NoOpenGLOptionComponent::vftable;
  local_130 = local_138;
  puVar1 = param_1 + 0x1a;
  local_160 = puVar1;
  uVar6 = (**(code **)(*(longlong *)*puVar1 + 0x10))((longlong *)*puVar1,local_120);
  FUN_18049c4e0(local_138,&DAT_1821d912f);
  uVar6 = FUN_1812465e0(local_118,uVar6,"Button");
  plVar2 = param_1 + 0x1f;
  FUN_18160ae50(plVar2,uVar6,local_138);
  param_1[0x92] = NoOpenGLOption::vftable;
  uVar8 = (uint)&stack0x00000000 & 0x1ff;
  iVar11 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  local_198 = 0x74ad >> ((byte)(((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e) &
                        0x1f) ^ 0x74ed;
  if (((ulonglong)&stack0x00000000 & 0x1b00) == 0) {
    uVar8 = 1;
  }
  else {
    uVar8 = 0xd9efb50;
  }
  local_19c = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x84b3 ^ 0x8d93;
  (**(code **)(*plVar2 + 0x58))(plVar2,1);
  FUN_181343cc0(param_1,plVar2,0xffffffff);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uStack_188 = 0x91ba20ca;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uStack_1f0 = 0x9cf52717;
  if (puVar5 != (undefined8 *)0x0) {
    FUN_180488690(param_1 + 0x4b,puVar5);
  }
  puVar5 = (undefined8 *)(**(code **)(*(longlong *)*puVar1 + 0x20))((longlong *)*puVar1,&plStack_d0)
  ;
  uVar3 = (**(code **)(*(longlong *)*puVar5 + 0x28))((longlong *)*puVar5,puVar5 + 1);
  (**(code **)(*plStack_d0 + 0xb0))(plStack_d0,auStack_c8);
  do {
    func_0x0001814bf93e(0xe714);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  puStack_1e0 = &UNK_182161970;
  puStack_1f8 = &UNK_182175948;
  uStack_1e8 = 0x16b98123;
  uStack_1d8 = 0x13fd8;
  uStack_1d0._4_4_ = 1;
  uStack_1d0._0_4_ = 0x1b5c86d8;
  FUN_181337080(plVar2,uVar3,2);
  uStack_1d0 = CONCAT44(uStack_1d0._4_4_,0x1a00680) ^ 0x5a71ef15;
  do {
    puVar9 = auStack_1c0;
    func_0x0001814bd338(puVar9,auStack_1c0);
    uVar6 = rdtsc();
    *puVar9 = (uint)uVar6 ^ (uint)((ulonglong)uVar6 >> 0x20);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  auStack_1c0[0] =
       (auStack_1c0[0] * -0x73327a15 >> 0x18 ^ auStack_1c0[0] * -0x73327a15) * -0x35943d4e;
  if (auStack_1c0[0] < 0x7fffffff) {
    apcStack_180[0] = (code *)0x0;
    do {
      ppcVar10 = apcStack_180;
      func_0x0001814c0bfb(ppcVar10,apcStack_180);
      *ppcVar10 = FUN_181194940;
      func_0x0001814be6d6();
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar7 = (*apcStack_180[0])();
    if (1 < uVar7) {
      FUN_18113eab0();
    }
  }
  func_0x0001814c0e96();
                    /* WARNING: Call to offcut address within same function */
  bVar4 = func_0x0001814befce();
  return (ushort)bVar4 * (ushort)bRam00000000dbd85e72;
}



############ FUN_ 18160ae50 size=418 ############

undefined8 *
FUN_18160ae50(undefined8 *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint *puVar5;
  undefined8 local_78;
  undefined4 local_70;
  undefined **local_68;
  undefined8 *local_60;
  undefined ***local_30;
  
  FUN_1813379d0(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  *(undefined1 *)((longlong)param_1 + 0x1c1) = 1;
  param_1[0x3a] = 0;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  *param_1 = CloudyBigToggle::vftable;
  param_1[0x16] = CloudyBigToggle::vftable;
  param_1[0x39] = CloudyBigToggle::vftable;
  lVar2 = *param_3;
  param_1[0x3c] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  local_78 = DAT_18235df78;
  local_70 = DAT_18235df80;
  FUN_181408750(param_1 + 0x3e,&local_78);
  *(undefined4 *)(param_1 + 0x72) = 0;
  FUN_181411b10(param_1 + 0x3e,"bgAlpha",0);
  local_68 = std::
             _Func_impl_no_alloc<<lambda_e40566439cba64d2ab5c6476c75954fa>,void,juce::StringRef,float>
             ::vftable;
  local_30 = &local_68;
  local_60 = param_1;
  FUN_181410000(param_1 + 0x3e,&local_68);
  if (param_1[0xd] == 0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar4 = juce::StandardCachedComponentImage::vftable;
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = param_1;
    *(undefined4 *)(puVar4 + 5) = 0x3f800000;
    puVar3 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar4;
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar5 = (uint *)(*param_2 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(*param_3 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_1;
}



############ FUN_ 180566250 size=306 ############

void FUN_180566250(longlong *param_1)

{
  longlong lVar1;
  longlong lVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong local_res8;
  
  plVar3 = (longlong *)0x0;
  lVar2 = __RTDynamicCast(param_1,0,
                          &CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::
                           RTTI_Type_Descriptor,&CloudyOpenGLRendererCallbacks::RTTI_Type_Descriptor
                          ,0);
  if (lVar2 != 0) {
    param_1[0x8f] = lVar2;
  }
  FUN_180569a90(param_1 + 0x33);
  local_res8 = FUN_1811316e0(0x18);
  plVar4 = param_1 + 0x22;
  if (param_1 == (longlong *)0x0) {
    plVar4 = plVar3;
  }
  lVar2 = FUN_1804841f0(local_res8,param_1 + 0xa4,plVar4);
  plVar4 = param_1 + 0xab;
  if (plVar4 != &local_res8) {
    lVar1 = *plVar4;
    *plVar4 = lVar2;
    lVar2 = lVar1;
  }
  if (lVar2 != 0) {
    FUN_18056ae10(lVar2);
  }
  local_res8 = FUN_1811316e0(0x18);
  if (param_1 != (longlong *)0x0) {
    plVar3 = param_1 + 0x22;
  }
  lVar2 = FUN_1804841f0(local_res8,param_1 + 0xa7,plVar3);
  plVar3 = param_1 + 0xac;
  if (plVar3 != &local_res8) {
    lVar1 = *plVar3;
    *plVar3 = lVar2;
    lVar2 = lVar1;
  }
  if (lVar2 != 0) {
    FUN_18056ae10(lVar2);
  }
                    /* WARNING: Could not recover jumptable at 0x00018056637b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x1a0))
            (param_1,*(undefined8 *)(*(longlong *)(param_1[0x93] + 0x100) + 0x1f0));
  return;
}



############ FUN_ 1814d4600 size=239 ############

void FUN_1814d4600(longlong *param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  
  if ((longlong *)param_1[0x2f5] != (longlong *)0x0) {
    lVar1 = (**(code **)(*(longlong *)param_1[0x2f5] + 0x60))();
    if (lVar1 != 0) {
      uVar2 = FUN_1811316e0(0x28);
      uVar3 = FUN_1811316e0(0x40);
      uVar3 = FUN_1811829c0(uVar3,param_1[0x2f5]);
      uVar4 = FUN_1811316e0(0x40);
      uVar4 = FUN_1811829c0(uVar4,param_1[0x2f4]);
      uVar2 = FUN_181152830(uVar2,uVar4,uVar3,param_1[0x58]);
      if (*(char *)(*(longlong *)param_1[0x58] + 0x1b8) == '\0') {
        uVar3 = FUN_18118c230();
        FUN_181352640(uVar3);
        FUN_1813526d0(uVar3,uVar2);
      }
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001814d46e8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x168))(param_1);
  return;
}



############ FUN_ 1811829c0 size=392 ############

void FUN_1811829c0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  void *_Memory;
  char cVar4;
  undefined8 uVar5;
  uint *puVar6;
  void *local_40;
  undefined8 local_38;
  
  *param_1 = Preset::vftable;
  param_1[1] = 0;
  param_1[2] = &DAT_1821dbf98;
  FUN_18049c4e0(param_1 + 3,&DAT_1821d8e5a,param_3,param_4,0xfffffffffffffffe);
  param_1[4] = &DAT_1821dbf98;
  param_1[6] = 0;
  param_1[7] = 0;
  if ((undefined **)*param_2 == Preset::vftable) {
    cVar4 = (char)param_2[5];
  }
  else {
    cVar4 = (*(code *)((undefined **)*param_2)[9])(param_2);
  }
  if (cVar4 != '\0') {
    *(undefined1 *)(param_1 + 5) = 1;
  }
  if (param_2[1] != 0) {
    uVar5 = FUN_1811316e0(0x20);
    uVar5 = FUN_181247410(uVar5,param_2[1]);
    _Memory = (void *)param_1[1];
    param_1[1] = uVar5;
    if (_Memory != (void *)0x0) {
      FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*(uint *)(param_2[2] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(param_2[2] + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar3 = param_1[2];
  param_1[2] = param_2[2];
  UNLOCK();
  puVar6 = (uint *)(lVar3 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if ((*(uint *)(param_2[4] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(param_2[4] + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar3 = param_1[4];
  param_1[4] = param_2[4];
  UNLOCK();
  puVar6 = (uint *)(lVar3 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  local_40 = (void *)0x0;
  local_38 = 0;
  FUN_18048c4c0(&local_40,param_2[6],*(undefined4 *)((longlong)param_2 + 0x3c));
  FUN_1804876e0(param_1 + 6,&local_40);
  FUN_180488c50(&local_40);
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 180566b50 size=3557 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180566b50(undefined8 *param_1,longlong param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined ***pppuVar8;
  bool bVar9;
  longlong lVar10;
  char cVar11;
  DWORD DVar12;
  undefined8 *puVar13;
  undefined8 uVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  undefined8 *puVar17;
  uint *puVar18;
  longlong *plVar19;
  undefined ***pppuVar20;
  longlong *plVar21;
  undefined1 auStack_3c8 [32];
  undefined8 local_3a8;
  undefined8 *local_398;
  undefined8 *local_390;
  char *local_388;
  longlong *local_380;
  char *local_378;
  longlong local_370;
  undefined **local_368;
  undefined8 *local_360;
  undefined **local_358;
  undefined1 local_350;
  undefined **local_348;
  undefined4 local_340;
  undefined **local_338;
  undefined4 local_330;
  longlong *local_320;
  undefined8 local_318;
  undefined8 *local_310;
  longlong local_308;
  longlong local_300;
  undefined1 local_2f8 [8];
  longlong local_2f0;
  longlong local_2e8;
  undefined **local_2e0;
  undefined1 local_2d8 [16];
  undefined **local_2c8;
  undefined8 *local_2c0;
  undefined ***local_290;
  undefined **local_288;
  undefined8 *local_280;
  undefined ***local_250;
  longlong *local_248;
  undefined1 local_240 [8];
  undefined **local_238;
  undefined8 *local_230;
  undefined ***local_200;
  undefined **local_1f8;
  undefined8 *local_1f0;
  undefined ***local_1c0;
  undefined **local_1b8;
  undefined8 *local_1b0;
  undefined ***local_180;
  longlong local_178 [7];
  longlong *local_140;
  undefined1 local_138 [56];
  longlong *local_100;
  longlong local_f8 [7];
  longlong *local_c0;
  longlong local_b8 [7];
  longlong *local_80;
  longlong local_78 [7];
  longlong *local_40;
  ulonglong local_38;
  
  local_318 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_3c8;
  local_398 = (undefined8 *)param_2;
  local_310 = param_1;
  FUN_1812bdb90();
  param_1[0x22] = ConfigOptionListener::vftable;
  puVar17 = param_1 + 0x23;
  *puVar17 = juce::Button::Listener::vftable;
  param_1[0x24] = CloudyTooltip::Positioner::vftable;
  param_1[0x25] = juce::DragAndDropContainer::vftable;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  puVar16 = param_1 + 0x28;
  param_1[0x29] = 0;
  *puVar16 = StylerSource::vftable;
  local_380 = puVar16;
  puVar13 = (undefined8 *)FUN_1811316e0(0x90);
  local_380 = puVar13;
  memset(puVar13,0,0x90);
  *puVar13 = Styler::vftable;
  *(undefined1 *)(puVar13 + 1) = 0;
  puVar15 = puVar13 + 2;
  *puVar15 = 0;
  puVar13[3] = 0;
  local_390 = puVar15;
  uVar14 = FUN_18048a0f0();
  *puVar15 = uVar14;
  puVar15 = puVar13 + 4;
  *puVar15 = 0;
  puVar13[5] = 0;
  local_390 = puVar15;
  uVar14 = FUN_18048a0f0();
  *puVar15 = uVar14;
  puVar15 = puVar13 + 6;
  *puVar15 = 0;
  puVar13[7] = 0;
  local_390 = puVar15;
  uVar14 = FUN_18048a0f0();
  *puVar15 = uVar14;
  puVar13[8] = NoOpenGLOption::vftable;
  FUN_1814143a0(puVar13 + 9);
  *(undefined4 *)(puVar13 + 0x11) = 0;
  param_1[0x2a] = puVar13;
  param_1[0x29] = puVar13;
  param_1[0x2b] = CloudyModalContainer::vftable;
  param_1[0x2c] = ProcessorStateManagerOptionListener::vftable;
  plVar5 = param_1 + 0x2d;
  *plVar5 = 0;
  param_1[0x2e] = 0;
  local_380 = plVar5;
  puVar15 = (undefined8 *)FUN_1811316e0(0x668);
  *(undefined4 *)(puVar15 + 1) = 1;
  *(undefined4 *)((longlong)puVar15 + 0xc) = 1;
  *puVar15 = std::_Ref_count_obj<InlineTooltip>::vftable;
  local_390 = puVar15;
  FUN_1815dc2d0(puVar15 + 2,param_1);
  *plVar5 = (longlong)(puVar15 + 2);
  plVar5 = (longlong *)param_1[0x2e];
  param_1[0x2e] = puVar15;
  local_320 = plVar5;
  if (plVar5 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar5 + 1;
    lVar10 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar10 == 1) {
      if ((undefined **)*plVar5 == std::_Ref_count_obj<InlineTooltip>::vftable) {
        (**(code **)plVar5[2])(plVar5 + 2,0);
      }
      else {
        (**(code **)*plVar5)(plVar5);
      }
      LOCK();
      piVar2 = (int *)((longlong)plVar5 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        if ((undefined **)*local_320 == std::_Ref_count_obj<InlineTooltip>::vftable) {
          (*(code *)std::_Ref_count_obj<InlineTooltip>::vftable[2])(local_320,1);
        }
        else {
          (*(code *)((undefined **)*local_320)[1])();
        }
      }
    }
  }
  *param_1 = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x22] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  *puVar17 = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x24] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x25] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  *puVar16 = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x2b] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x2c] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x2f] = local_398;
  lVar10 = (longlong)local_398 + 0x338;
  param_1[0x30] = lVar10;
  param_1[0x31] = (longlong)local_398 + 0x178;
  param_1[0x32] = (longlong)local_398 + 0x400;
  param_1[0x35] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x36) = 0;
  param_1[0x33] = CloudyOpenGLRenderer<Soothe2VertexData>::vftable;
  param_1[0x34] = CloudyOpenGLRenderer<Soothe2VertexData>::vftable;
  param_1[0x37] = NoOpenGLOption::vftable;
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  param_1[0x41] = 0;
  param_1[0x42] = 0;
  *(undefined4 *)(param_1 + 0x43) = 0;
  *(undefined8 *)((longlong)param_1 + 0x21c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x224) = 0;
  *(undefined8 *)((longlong)param_1 + 0x22c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x234) = 0;
  *(undefined8 *)((longlong)param_1 + 0x23c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x244) = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0x24c));
  param_1[0x4f] = param_1;
  FUN_18163b800(param_1 + 0x50);
  param_1[0x8f] = 0;
  param_1[0x90] = 0;
  param_1[0x91] = 0;
  param_1[0x92] = 0;
  plVar5 = param_1 + 0x93;
  *plVar5 = 0;
  param_1[0x94] = 0;
  param_1[0x95] = 0;
  FUN_1814da360(param_1 + 0x96,param_1);
  FUN_18055e510(param_1 + 0xa4);
  param_1[0xa7] = NoOpenGLOption::vftable;
  FUN_180484030(param_1 + 0xa8,lVar10);
  param_1[0xab] = 0;
  param_1[0xac] = 0;
  param_1[0xad] = 0;
  param_1[0xae] = 0;
  param_1[0xaf] = 0;
  FUN_1814d7030(param_1 + 0xb0,param_1,param_1 + 0x24,lVar10);
  *(undefined4 *)(param_1 + 0x110) = 0x313;
  *(undefined4 *)((longlong)param_1 + 0x884) = 0x1b8;
  *(undefined4 *)((longlong)param_1 + 0x88c) = 0x43480000;
  FUN_18049c4e0(&local_370,"CloudyAudioProcessorEditor");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_370);
  puVar18 = (uint *)(local_370 + -0x10);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  uVar14 = param_1[0x2f];
  uVar6 = param_1[0x32];
  uVar7 = param_1[0x30];
  local_398 = (undefined8 *)FUN_1811316e0(0x150);
  local_3a8 = uVar14;
  puVar15 = (undefined8 *)FUN_1814d1e10(local_398,uVar7,uVar6,param_1);
  if (plVar5 == &local_308) {
    if (puVar15 != (undefined8 *)0x0) {
      puVar16 = (undefined8 *)*puVar15;
      goto LAB_18056703d;
    }
  }
  else {
    puVar13 = (undefined8 *)*plVar5;
    *plVar5 = (longlong)puVar15;
    if (puVar13 != (undefined8 *)0x0) {
      puVar16 = (undefined8 *)*puVar13;
      puVar15 = puVar13;
LAB_18056703d:
      (*(code *)*puVar16)(puVar15,1);
    }
  }
  local_398 = (undefined8 *)FUN_1811316e0(0x550);
  puVar15 = (undefined8 *)FUN_1814d7d60(local_398,param_1);
  plVar1 = param_1 + 0x94;
  if (plVar1 == &local_300) {
    if (puVar15 != (undefined8 *)0x0) {
      puVar16 = (undefined8 *)*puVar15;
      goto LAB_18056708c;
    }
  }
  else {
    puVar13 = (undefined8 *)*plVar1;
    *plVar1 = (longlong)puVar15;
    if (puVar13 != (undefined8 *)0x0) {
      puVar16 = (undefined8 *)*puVar13;
      puVar15 = puVar13;
LAB_18056708c:
      (*(code *)*puVar16)(puVar15,1);
    }
  }
  local_368 = HelpOpenedOption::vftable;
  local_2e0 = &PTR_vftable_18262b550;
  local_2d8[0] = 0;
  puVar15 = (undefined8 *)
            .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
            vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                      (&local_368,&local_248);
  cVar11 = (**(code **)(*(longlong *)*puVar15 + 0xc0))
                     ((longlong *)*puVar15,puVar15 + 1,local_2d8,local_2e0);
  (**(code **)(*local_248 + 0xb0))(local_248,local_240);
  (**(code **)(*local_2e0 + 0xb0))(local_2e0,local_2d8);
  if (cVar11 != '\0') {
    FUN_1814d7520();
    local_358 = &PTR_vftable_18262b550;
    local_350 = 1;
    FUN_1811d0a50(&local_368,&local_358);
  }
  lVar10 = *(longlong *)(*plVar5 + 0xf8);
  pppuVar20 = (undefined ***)(lVar10 + 0xd0);
  local_2c8 = std::_Func_impl_no_alloc<<lambda_e5b259fdcd65121b9a327d9e99c99ca0>,void>::vftable;
  local_140 = (longlong *)0x0;
  local_2c0 = param_1;
  local_290 = &local_2c8;
  local_140 = (longlong *)
              (*(code *)
                PTR_vtbl___AV__GainRangeScalingOptionComponent_VSoothe2GainRangeScalingOption_____1824b1e48
              )(&local_2c8,local_178);
  if (local_290 != (undefined ***)0x0) {
    (*(code *)(*local_290)[4])(local_290,local_290 != &local_2c8);
    local_290 = (undefined ***)0x0;
  }
  pppuVar8 = *(undefined ****)(lVar10 + 0x108);
  if (pppuVar8 != (undefined ***)0x0) {
    if (pppuVar8 == pppuVar20) {
      local_290 = (undefined ***)(*(code *)(*pppuVar8)[1])(pppuVar8,&local_2c8);
      pppuVar8 = *(undefined ****)(lVar10 + 0x108);
      if (pppuVar8 == (undefined ***)0x0) goto LAB_1805671e9;
      (*(code *)(*pppuVar8)[4])(pppuVar8,pppuVar8 != pppuVar20);
      pppuVar8 = local_290;
    }
    local_290 = pppuVar8;
    *(undefined8 *)(lVar10 + 0x108) = 0;
  }
LAB_1805671e9:
  FUN_180488560(pppuVar20,local_178);
  if (local_140 != (longlong *)0x0) {
    (**(code **)(*local_140 + 0x20))(local_140,local_140 != local_178);
  }
  if (local_290 != (undefined ***)0x0) {
    (*(code *)(*local_290)[4])(local_290,local_290 != &local_2c8);
  }
  lVar10 = *(longlong *)(*plVar5 + 0x108);
  if (puVar17 != (undefined8 *)0x0) {
    plVar21 = (longlong *)(lVar10 + 0x160);
    plVar19 = (longlong *)*plVar21;
    iVar3 = *(int *)(lVar10 + 0x16c);
    plVar1 = plVar19 + iVar3;
    for (; plVar19 != plVar1; plVar19 = plVar19 + 1) {
      if (puVar17 == (undefined8 *)*plVar19) goto LAB_1805672af;
    }
    if (*(int *)(lVar10 + 0x168) < iVar3 + 1) {
      FUN_18047cb30(plVar21,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(lVar10 + 0x16c);
    *(int *)(lVar10 + 0x16c) = iVar3 + 1;
    *(undefined8 **)(*plVar21 + (longlong)iVar3 * 8) = puVar17;
  }
LAB_1805672af:
  *(undefined1 *)(*(longlong *)(*plVar5 + 0x108) + 0x1c5) = 1;
  FUN_181341570(param_1,param_1,1);
  pppuVar20 = (undefined ***)(param_1 + 0x99);
  local_288 = std::_Func_impl_no_alloc<<lambda_49068aab286985657684fee0710a9fe2>,void>::vftable;
  local_250 = &local_288;
  local_100 = (longlong *)0x0;
  local_280 = param_1;
  local_100 = (longlong *)(*(code *)PTR_FUN_1824b0ef8)(&local_288,local_138);
  if (local_250 != (undefined ***)0x0) {
    (*(code *)(*local_250)[4])(local_250,local_250 != &local_288);
    local_250 = (undefined ***)0x0;
  }
  pppuVar8 = (undefined ***)param_1[0xa0];
  if (pppuVar8 != (undefined ***)0x0) {
    if (pppuVar8 == pppuVar20) {
      local_250 = (undefined ***)(*(code *)(*pppuVar8)[1])(pppuVar8,&local_288);
      pppuVar8 = (undefined ***)param_1[0xa0];
      if (pppuVar8 == (undefined ***)0x0) goto LAB_180567384;
      (*(code *)(*pppuVar8)[4])(pppuVar8,pppuVar8 != pppuVar20);
      pppuVar8 = local_250;
    }
    local_250 = pppuVar8;
    param_1[0xa0] = 0;
  }
LAB_180567384:
  FUN_180488560(pppuVar20);
  if (local_100 != (longlong *)0x0) {
    (**(code **)(*local_100 + 0x20))();
  }
  if (local_250 != (undefined ***)0x0) {
    (*(code *)(*local_250)[4])();
  }
  puVar15 = (undefined8 *)FUN_1811316e0(0x100);
  local_398 = puVar15;
  memset(puVar15,0,0x100);
  *puVar15 = std::_Func_impl_no_alloc<<lambda_191bfacb41d410c5baa542311fec1847>,void>::vftable;
  puVar15[7] = puVar15;
  puVar15[8] = std::_Func_impl_no_alloc<<lambda_1af6f68916b393ab74c270408a7a647e>,void>::vftable;
  puVar15[0xf] = puVar15 + 8;
  puVar15[0x10] = std::_Func_impl_no_alloc<<lambda_5b8ffd48389f5112e3b0d585eda87aaf>,void>::vftable;
  puVar15[0x17] = puVar15 + 0x10;
  puVar15[0x18] = std::_Func_impl_no_alloc<<lambda_61829a2b33e1a9af49eaf4ef2038dc86>,void>::vftable;
  puVar15[0x1f] = puVar15 + 0x18;
  local_360 = puVar15;
  FUN_180569e60(param_1 + 0x92,&local_360);
  puVar15 = local_360;
  if (local_360 != (undefined8 *)0x0) {
    FUN_18056ae80(local_360);
                    /* WARNING: Subroutine does not return */
    free(puVar15);
  }
  lVar10 = param_1[0x92];
  local_238 = std::_Func_impl_no_alloc<<lambda_8b849f32d8b44d9a025135fa9350954a>,void>::vftable;
  local_200 = &local_238;
  local_c0 = (longlong *)0x0;
  local_230 = param_1;
  FUN_180488560(local_f8,&local_238);
  FUN_180488560(&local_238,lVar10 + 0x40);
  FUN_180488560(lVar10 + 0x40,local_f8);
  if (local_c0 != (longlong *)0x0) {
    (**(code **)(*local_c0 + 0x20))(local_c0,local_c0 != local_f8);
  }
  if (local_200 != (undefined ***)0x0) {
    (*(code *)(*local_200)[4])(local_200,local_200 != &local_238);
  }
  lVar10 = param_1[0x92];
  local_1f8 = std::_Func_impl_no_alloc<<lambda_956debc8de420b31937468eef2d9c9bc>,void>::vftable;
  local_1c0 = &local_1f8;
  local_80 = (longlong *)0x0;
  local_1f0 = param_1;
  FUN_180488560(local_b8,&local_1f8);
  FUN_180488560(&local_1f8,lVar10 + 0xc0);
  FUN_180488560(lVar10 + 0xc0,local_b8);
  if (local_80 != (longlong *)0x0) {
    (**(code **)(*local_80 + 0x20))(local_80,local_80 != local_b8);
  }
  if (local_1c0 != (undefined ***)0x0) {
    (*(code *)(*local_1c0)[4])(local_1c0,local_1c0 != &local_1f8);
  }
  lVar10 = param_1[0x92];
  local_1b8 = std::_Func_impl_no_alloc<<lambda_bcb38e394b903ac1284f71989cde1f7f>,void>::vftable;
  local_180 = &local_1b8;
  local_40 = (longlong *)0x0;
  local_1b0 = param_1;
  FUN_180488560(local_78,&local_1b8);
  FUN_180488560(&local_1b8,lVar10 + 0x80);
  FUN_180488560(lVar10 + 0x80,local_78);
  if (local_40 != (longlong *)0x0) {
    (**(code **)(*local_40 + 0x20))(local_40,local_40 != local_78);
  }
  if (local_180 != (undefined ***)0x0) {
    (*(code *)(*local_180)[4])(local_180,local_180 != &local_1b8);
  }
  uVar14 = FUN_1814d9640(&local_390);
  FUN_181245100(uVar14,&local_388,"tutorials.xml");
  puVar18 = (uint *)(local_390 + -2);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  if (*local_388 == '\0') {
LAB_180567734:
    bVar9 = false;
  }
  else {
    puVar15 = (undefined8 *)FUN_18049a930(local_2f8,&local_388);
    DVar12 = GetFileAttributesW((LPCWSTR)*puVar15);
    bVar9 = true;
    if ((DVar12 & 0x10) != 0) goto LAB_180567734;
  }
  if (!bVar9) {
    local_338 = &PTR_vftable_18262b570;
    local_330 = 0;
    (**(code **)(param_1[0xa8] + 0x18))(param_1 + 0xa8,&local_338);
    goto LAB_1805678eb;
  }
  local_380 = (longlong *)param_1[0xa9];
  puVar18 = (uint *)(local_380 + -2);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    *puVar18 = *puVar18 + 1;
    UNLOCK();
  }
  FUN_1811f8160(param_1[0x30],local_380,param_1 + 0x2c);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  lVar10 = param_1[0x2f];
  local_398 = (undefined8 *)FUN_1811316e0(0x138);
  puVar15 = (undefined8 *)FUN_18114e3f0(local_398);
  plVar5 = (longlong *)(lVar10 + 0x5b8);
  if (plVar5 == &local_2f0) {
    if (puVar15 != (undefined8 *)0x0) {
      puVar17 = (undefined8 *)*puVar15;
      goto LAB_1805677e4;
    }
  }
  else {
    puVar16 = (undefined8 *)*plVar5;
    *plVar5 = (longlong)puVar15;
    if (puVar16 != (undefined8 *)0x0) {
      puVar17 = (undefined8 *)*puVar16;
      puVar15 = puVar16;
LAB_1805677e4:
      (*(code *)*puVar17)(puVar15,1);
    }
  }
  (**(code **)(*(longlong *)(*plVar5 + 0x70) + 8))
            ((longlong *)(*plVar5 + 0x70),*(undefined4 *)(lVar10 + 0x38),
             *(undefined8 *)(lVar10 + 0x30));
  local_348 = &PTR_vftable_18262b570;
  local_340 = 1;
  (**(code **)(*(longlong *)(lVar10 + 0x5c0) + 0x18))((longlong *)(lVar10 + 0x5c0),&local_348);
  uVar14 = *(undefined8 *)(param_1[0x2f] + 0x5b8);
  uVar6 = param_1[0x30];
  local_398 = (undefined8 *)FUN_1811316e0(0x548);
  local_378 = local_388;
  if ((*(uint *)(local_388 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_388 + -0x10) = *(int *)(local_388 + -0x10) + 1;
    UNLOCK();
  }
  local_3a8 = uVar14;
  puVar15 = (undefined8 *)FUN_1814d9850(local_398,param_1,uVar6,&local_378);
  plVar5 = param_1 + 0x95;
  if (plVar5 == &local_2e8) {
    if (puVar15 != (undefined8 *)0x0) {
      puVar17 = (undefined8 *)*puVar15;
      goto LAB_1805678af;
    }
  }
  else {
    puVar16 = (undefined8 *)*plVar5;
    *plVar5 = (longlong)puVar15;
    if (puVar16 != (undefined8 *)0x0) {
      puVar17 = (undefined8 *)*puVar16;
      puVar15 = puVar16;
LAB_1805678af:
      (*(code *)*puVar17)(puVar15,1);
    }
  }
  if (*plVar5 != 0) {
    FUN_181343cc0(param_1,*plVar5,0xffffffff);
  }
LAB_1805678eb:
  puVar18 = (uint *)(local_388 + -0x10);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
}



############ FUN_ 18114e3f0 size=1023 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18114e3f0(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined ****ppppuVar3;
  uint uVar4;
  undefined ***pppuVar5;
  undefined8 uVar6;
  undefined ***pppuVar7;
  undefined **ppuVar8;
  uint *puVar9;
  undefined1 auStack_378 [32];
  undefined8 local_358;
  undefined4 local_350;
  undefined ***local_348;
  undefined8 local_340;
  undefined8 **local_338;
  undefined ***local_330;
  undefined ***local_328;
  undefined4 local_320;
  undefined4 local_308;
  longlong local_300;
  longlong local_2f8;
  longlong local_2f0;
  undefined8 *local_2e8;
  undefined ***local_2e0;
  undefined8 local_2d8;
  undefined8 *local_2d0;
  undefined8 local_2c8;
  undefined ***local_2c0;
  undefined ***local_2b8;
  undefined **local_2b0;
  undefined8 *local_2a8;
  undefined ***local_278;
  undefined **local_270 [7];
  undefined ***local_238;
  undefined **local_230 [7];
  undefined ***local_1f8;
  undefined1 local_1f0 [216];
  undefined4 local_118;
  undefined4 uStack_114;
  undefined4 uStack_110;
  undefined4 uStack_10c;
  undefined1 local_108;
  longlong local_100 [7];
  longlong *local_c8;
  longlong local_c0 [7];
  longlong *local_88;
  longlong local_80 [7];
  longlong *local_48;
  ulonglong local_38;
  
  local_2d8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_378;
  local_308 = 0;
  *param_1 = CloudyTutorialAudioPlayer::vftable;
  param_1[1] = std::_Func_impl_no_alloc<<lambda_95b7fde7a02c4b6e888ff2c425dce4da>,void,bool>::
               vftable;
  param_1[8] = param_1 + 1;
  *(undefined4 *)(param_1 + 9) = 0x3f000000;
  param_1[10] = 0;
  param_1[0xb] = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  param_1[0xd] = 0;
  param_1[0xe] = juce::PositionableAudioSource::vftable;
  puVar1 = param_1 + 0xf;
  *puVar1 = juce::ChangeBroadcaster::vftable;
  puVar2 = param_1 + 0x10;
  local_2e8 = puVar2;
  local_2d0 = param_1;
  FUN_1812a59f0(puVar2);
  *puVar2 = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined1 *)(param_1 + 0x15) = 0;
  param_1[0x12] = puVar1;
  param_1[0xe] = juce::AudioTransportSource::vftable;
  *puVar1 = juce::AudioTransportSource::vftable;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1b));
  *(undefined4 *)((longlong)param_1 + 0x104) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x21) = 0x3f800000;
  *(undefined2 *)((longlong)param_1 + 0x10c) = 0x100;
  param_1[0x22] = 0x40e5888000000000;
  param_1[0x23] = 0;
  param_1[0x24] = 0x80;
  *(undefined2 *)(param_1 + 0x25) = 0;
  ppppuVar3 = (undefined ****)(param_1 + 0x26);
  *ppppuVar3 = (undefined ***)0x0;
  FUN_1813b0270(param_1 + 10);
  FUN_1812a73a0(param_1 + 0xf,param_1);
  local_118 = _DAT_1824c4b40;
  uStack_114 = _UNK_1824c4b44;
  uStack_110 = _UNK_1824c4b48;
  uStack_10c = _UNK_1824c4b4c;
  local_108 = 0;
  local_c8 = (longlong *)0x0;
  local_88 = (longlong *)0x0;
  local_48 = (longlong *)0x0;
  uVar6 = FUN_1811316e0(0x2c8);
  local_2c0 = local_270;
  local_2b8 = local_230;
  local_2e8 = DAT_1824c43b8;
  local_2e0 = &local_2b0;
  local_2c8 = uVar6;
  FUN_18049c4e0(&local_2f0,"tutorial volume");
  local_308 = 1;
  FUN_18049c4e0(&local_2f8,"tutorial volume");
  local_308 = 3;
  FUN_18049c4e0(&local_300,"tutorial volume");
  local_308 = 7;
  local_270[0] = std::
                 _Func_impl_no_alloc<<lambda_1b558b15762a32ba0e0965538775c42f>,float,juce::String_const&___ptr64>
                 ::vftable;
  local_238 = local_270;
  local_230[0] = std::
                 _Func_impl_no_alloc<<lambda_6128993b21bf46221286728bf29aa4aa>,juce::String,float>::
                 vftable;
  local_1f8 = local_230;
  local_2b0 = std::_Func_impl_no_alloc<<lambda_8ef550dacbd7e76e2d6b0f4623f54a1e>,void,float>::
              vftable;
  local_278 = &local_2b0;
  local_2a8 = param_1;
  local_358 = FUN_180485290(local_1f0,&local_118);
  local_320 = 0;
  local_328 = local_270;
  local_330 = local_230;
  local_338 = &local_2e8;
  local_340 = DAT_1824c42d8;
  local_348 = &local_2b0;
  local_350 = DAT_1824c3d8c;
  pppuVar7 = (undefined ***)FUN_1811c75f0(uVar6,&local_300,&local_2f8,&local_2f0);
  puVar9 = (uint *)(local_300 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_2f8 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_2f0 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (ppppuVar3 == &local_2e0) {
    if (pppuVar7 == (undefined ***)0x0) goto LAB_18114e760;
    ppuVar8 = *pppuVar7;
  }
  else {
    pppuVar5 = *ppppuVar3;
    *ppppuVar3 = pppuVar7;
    if (pppuVar5 == (undefined ***)0x0) goto LAB_18114e760;
    ppuVar8 = *pppuVar5;
    pppuVar7 = pppuVar5;
  }
  (*(code *)*ppuVar8)(pppuVar7,1);
LAB_18114e760:
  if (local_48 != (longlong *)0x0) {
    (**(code **)(*local_48 + 0x20))(local_48,local_48 != local_80);
  }
  if (local_88 != (longlong *)0x0) {
    (**(code **)(*local_88 + 0x20))(local_88,local_88 != local_c0);
  }
  if (local_c8 != (longlong *)0x0) {
    (**(code **)(*local_c8 + 0x20))(local_c8,local_c8 != local_100);
  }
}



############ FUN_ 1812bd920 size=266 ############

void FUN_1812bd920(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  byte bVar4;
  longlong lVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  longlong *plVar8;
  
  *(undefined1 *)(param_1 + 200) = 0;
  if (*(longlong *)(param_1 + 0x100) != param_1 + 0xd0) {
    *(longlong *)(param_1 + 0x100) = param_1 + 0xd0;
    bVar4 = *(byte *)(param_1 + 0xa8) & 1;
    if (bVar4 != 0) {
      if (bVar4 == 0) {
        if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812bd982;
        lVar5 = FUN_18134c2e0();
      }
      else {
        lVar5 = FUN_1812d2bd0();
      }
      if (lVar5 != 0) {
        *(undefined8 *)(lVar5 + 0x28) = *(undefined8 *)(param_1 + 0x100);
      }
    }
  }
LAB_1812bd982:
  puVar6 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar6 = juce::AudioProcessorEditor::AudioProcessorEditorListener::vftable;
  puVar6[1] = param_1;
  puVar3 = *(undefined8 **)(param_1 + 0xc0);
  *(undefined8 **)(param_1 + 0xc0) = puVar6;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  lVar5 = *(longlong *)(param_1 + 0xc0);
  if (lVar5 != 0) {
    plVar8 = (longlong *)(param_1 + 0x80);
    plVar7 = (longlong *)*plVar8;
    iVar2 = *(int *)(param_1 + 0x8c);
    plVar1 = plVar7 + iVar2;
    for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
      if (lVar5 == *plVar7) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x88) < iVar2 + 1) {
      FUN_18047cb30(plVar8,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x8c);
    *(int *)(param_1 + 0x8c) = iVar2 + 1;
    *(longlong *)(*plVar8 + (longlong)iVar2 * 8) = lVar5;
  }
  return;
}



############ FUN_ 1813b0270 size=718 ############

void FUN_1813b0270(longlong *param_1)

{
  uint uVar1;
  undefined *puVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined **ppuVar5;
  int iVar6;
  uint *puVar7;
  undefined8 *local_res10;
  longlong local_res18;
  undefined8 *local_res20;
  void *local_38;
  undefined8 local_30;
  
  local_res10 = (undefined8 *)FUN_1811316e0(0x20);
  lVar3 = FUN_18136d830(local_res10);
  if (lVar3 != 0) {
    iVar6 = *(int *)((longlong)param_1 + 0xc);
    *(int *)(param_1 + 2) = iVar6;
    if ((int)param_1[1] < iVar6 + 1) {
      FUN_18047cb30(param_1,iVar6 + 9 + (iVar6 + 1) / 2 & 0xfffffff8);
    }
    iVar6 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
    *(longlong *)(*param_1 + (longlong)iVar6 * 8) = lVar3;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar4 = juce::AudioFormat::vftable;
  local_res10 = puVar4;
  FUN_18049c9e0(puVar4 + 1,"AIFF file");
  FUN_18122ce70(puVar4 + 2,".aiff .aif");
  *puVar4 = juce::AiffAudioFormat::vftable;
  iVar6 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar6) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar6 / 2 & 0xfffffff8);
  }
  iVar6 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
  *(undefined8 **)(*param_1 + (longlong)iVar6 * 8) = puVar4;
  puVar4 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar4 = juce::AudioFormat::vftable;
  local_res10 = puVar4;
  FUN_18049c9e0(puVar4 + 1,"FLAC file");
  FUN_18122ce70(puVar4 + 2,".flac");
  *puVar4 = juce::FlacAudioFormat::vftable;
  iVar6 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar6) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar6 / 2 & 0xfffffff8);
  }
  iVar6 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
  *(undefined8 **)(*param_1 + (longlong)iVar6 * 8) = puVar4;
  local_res10 = (undefined8 *)FUN_1811316e0(0x20);
  lVar3 = FUN_18136f570(local_res10);
  if (lVar3 != 0) {
    iVar6 = *(int *)((longlong)param_1 + 0xc) + 1;
    if ((int)param_1[1] < iVar6) {
      FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar6 / 2 & 0xfffffff8);
    }
    iVar6 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
    *(longlong *)(*param_1 + (longlong)iVar6 * 8) = lVar3;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x20);
  local_38 = (void *)0x0;
  local_30 = 0;
  ppuVar5 = &PTR_DAT_18235baa0;
  puVar2 = PTR_DAT_18235baa0;
  while (puVar2 != (undefined *)0x0) {
    ppuVar5 = ppuVar5 + 1;
    puVar2 = *ppuVar5;
  }
  local_res20 = puVar4;
  FUN_18049d400(&local_38);
  FUN_18049c4e0(&local_res18,"Windows Media");
  FUN_1812344e0(&local_res10,&local_res18);
  puVar7 = (uint *)(local_res18 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  *puVar4 = juce::AudioFormat::vftable;
  puVar4[1] = local_res10;
  if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -2) = *(int *)(local_res10 + -2) + 1;
    UNLOCK();
  }
  puVar4[2] = 0;
  puVar4[3] = 0;
  FUN_18048c4c0(puVar4 + 2,local_38,local_30._4_4_);
  puVar7 = (uint *)(local_res10 + -2);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_180488c50(&local_38);
                    /* WARNING: Subroutine does not return */
  free(local_38);
}



############ FUN_ 1814143a0 size=2461 ############

/* WARNING: Removing unreachable block (ram,0x00018141447f) */
/* WARNING: Removing unreachable block (ram,0x000181414462) */
/* WARNING: Removing unreachable block (ram,0x000181414527) */

void FUN_1814143a0(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined1 *puVar4;
  int unaff_retaddr;
  undefined1 auStack_368 [32];
  undefined8 local_348;
  undefined8 local_340;
  undefined8 local_338;
  undefined4 local_330;
  undefined8 local_328;
  undefined4 local_320;
  undefined8 local_318;
  undefined8 local_310;
  code *local_308;
  undefined4 local_300;
  undefined4 local_2fc;
  undefined4 local_2f8;
  undefined4 local_2f4;
  undefined4 local_2f0;
  undefined4 local_2ec;
  undefined8 *local_2e8;
  undefined *local_2e0;
  undefined4 local_2c4;
  undefined4 local_2bc;
  undefined4 local_2b8;
  IMAGE_DEBUG_DIRECTORY *local_2b0;
  undefined *local_2a8;
  undefined *local_298;
  IMAGE_DIRECTORY_ENTRY_EXPORT *local_290;
  undefined *local_288;
  undefined *local_280;
  undefined4 *local_278;
  undefined *local_270;
  undefined4 *local_268;
  undefined *local_260;
  code *local_258;
  undefined8 local_250;
  undefined *local_248;
  undefined *local_230;
  char *local_228;
  undefined8 local_218;
  undefined *local_210;
  undefined8 local_200;
  undefined *local_1e8;
  undefined1 local_1e0 [24];
  undefined1 local_1c8 [8];
  undefined8 *local_1c0;
  undefined8 local_1a8;
  undefined8 *local_1a0;
  undefined1 local_198 [48];
  undefined1 local_168 [48];
  undefined1 local_138 [264];
  ulonglong local_30;
  
  local_1a8 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_368;
  *param_1 = 0;
  puVar1 = param_1 + 1;
  *puVar1 = 0;
  param_1[2] = 0;
  local_2e8 = param_1;
  local_1a0 = param_1;
  FUN_18051f800(param_1 + 3);
  FUN_18051f800(param_1 + 4);
  FUN_18051f800(param_1 + 5);
  FUN_18051f800(param_1 + 6);
  local_1c0 = param_1 + 7;
  FUN_18051f800(local_1c0);
  local_2fc = 0xa60;
  local_300 = 0x550;
  FUN_1812351d0(local_198,&DAT_1823ca040,0x42ed,0);
  local_330 = 0xc1;
  local_308 = FUN_180001000;
  local_250 = 0x180001004;
  local_2f8 = 0xc1;
  local_2e0 = &DAT_182603de4;
  local_228 = "";
  local_320 = 0xc1;
  local_270 = &DAT_181140964;
  local_230 = &DAT_18114bd50;
  local_2f4 = 0xc1;
  local_278 = &DAT_186f01000;
  local_298 = &DAT_186f47cc0;
  local_2f0 = 0xc1;
  local_338 = 0x180000000;
  local_248 = &DAT_1824d5e88;
  local_290 = &IMAGE_DIRECTORY_ENTRY_EXPORT_1825feee0;
  local_2ec = 0xc1;
  local_340 = 0x180000000;
  local_268 = &DAT_18114bd58;
  local_288 = &DAT_181414de8;
  local_2c4 = 0xc1;
  local_218 = 0x180000000;
  local_260 = &DAT_181415930;
  local_280 = &DAT_181a5268c;
  local_2bc = 0xc1;
  local_1e8 = &DAT_181bae4d8;
  local_2b0 = &IMAGE_DEBUG_DIRECTORY_1824d5d20;
  local_210 = &DAT_186f03e18;
  local_2b8 = 0xc1;
  local_200 = 0x180000000;
  local_348 = 0;
  local_328 = 0x1000;
  local_310 = 0x113e818;
  local_258 = FUN_180001000;
  local_2a8 = &DAT_18113f818;
  local_318 = FUN_1811316e0(0x170);
  uVar2 = FUN_181254070(local_318,local_198);
  *local_2e8 = uVar2;
  uVar2 = FUN_180571c80(local_1e0,local_2e8);
  FUN_180571460(local_2e8 + 4,uVar2);
  FUN_180568b10(local_1e0);
  FUN_1812351d0(local_138,&DAT_182472270,0x393e,0);
  local_318 = FUN_1811316e0(0x170);
  uVar2 = FUN_181254070(local_318,local_138);
  *puVar1 = uVar2;
  uVar2 = FUN_180571c80(local_1c8,puVar1);
  puVar1 = local_2e8;
  FUN_180571460(local_2e8 + 5,uVar2);
  FUN_180568b10(local_1c8);
  FUN_1812351d0(local_168,&DAT_18238c8c0,0xd989,0);
  local_318 = FUN_1811316e0(0x170);
  puVar4 = local_168;
  uVar2 = FUN_181254070(local_318,puVar4);
  puVar1[2] = uVar2;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  FUN_18141e8b8(0,~(((ulonglong)puVar4 ^ 0xffffffffffffffff) + 1) + 1);
  return;
}



############ FUN_ 180571c80 size=148 ############

undefined8 *
FUN_180571c80(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 *local_res8;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  local_res8 = param_1;
  uVar4 = FUN_1811316e0(8);
  puVar3 = (undefined8 *)*param_2;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
    UNLOCK();
  }
  local_res8 = puVar3;
  uVar4 = FUN_181252c60(uVar4,&local_res8,param_3,param_4,1,uVar5);
  *param_1 = uVar4;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  return param_1;
}



############ FUN_ 181252c60 size=173 ############

undefined8 * FUN_181252c60(undefined8 *param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x40);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::Font::SharedFontInternal::vftable;
  lVar1 = *param_2;
  puVar2[2] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  lVar1 = *(longlong *)(*param_2 + 0x10);
  puVar2[3] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  lVar1 = *(longlong *)(*param_2 + 0x18);
  puVar2[4] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(puVar2 + 5) = 0x41600000;
  *(undefined8 *)((longlong)puVar2 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar2 + 0x34) = 0;
  *(undefined1 *)(puVar2 + 7) = 0;
  *param_1 = puVar2;
  LOCK();
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  UNLOCK();
  return param_1;
}



############ FUN_ 1812196a0 size=242 ############

undefined8 *
FUN_1812196a0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  int iVar2;
  void *pvVar3;
  undefined4 *puVar4;
  longlong lVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  *param_1 = juce::GZIPDecompressorInputStream::vftable;
  param_1[1] = param_2;
  *(undefined1 *)(param_1 + 2) = 0;
  param_1[3] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 5) = 0;
  if ((undefined **)*param_2 == juce::MemoryInputStream::vftable) {
    lVar5 = param_2[3];
  }
  else {
    lVar5 = (*(code *)((undefined **)*param_2)[0x15])(param_2);
  }
  param_1[6] = lVar5;
  param_1[7] = 0;
  pvVar3 = malloc(0x8000);
  param_1[8] = pvVar3;
  puVar4 = (undefined4 *)FUN_1811316e0(0x70);
  *puVar4 = 0x10001;
  *(undefined8 *)(puVar4 + 0x18) = 0;
  *(undefined8 *)(puVar4 + 0x1a) = 0;
  memset(puVar4 + 2,0,0x58);
  iVar2 = FUN_18121d700(puVar4 + 2,0xf,"1.2.3",param_4,uVar6);
  *(bool *)((longlong)puVar4 + 3) = iVar2 == 0;
  bVar1 = iVar2 != 0;
  *(bool *)((longlong)puVar4 + 2) = bVar1;
  *(bool *)puVar4 = bVar1;
  param_1[9] = puVar4;
  return param_1;
}



############ FUN_ 181253de0 size=202 ############

void FUN_181253de0(longlong param_1,ulonglong param_2,longlong param_3,uint param_4)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint *puVar4;
  int iVar5;
  ulonglong in_R9;
  
  if ((uint)param_2 < 0x80) {
    in_R9 = (ulonglong)*(uint *)(param_1 + 0x6c);
    *(short *)(param_1 + 0x70 + (param_2 & 0xffffffff) * 2) = (short)*(uint *)(param_1 + 0x6c);
  }
  puVar4 = (uint *)FUN_1811316e0(0x48,param_2,param_3,in_R9,0xfffffffffffffffe);
  *puVar4 = (uint)param_2;
  FUN_1804ab000(puVar4 + 2,param_3);
  uVar1 = *(uint *)(param_3 + 0x14);
  uVar2 = *(uint *)(param_3 + 0x18);
  uVar3 = *(uint *)(param_3 + 0x1c);
  puVar4[6] = *(uint *)(param_3 + 0x10);
  puVar4[7] = uVar1;
  puVar4[8] = uVar2;
  puVar4[9] = uVar3;
  *(undefined1 *)(puVar4 + 10) = *(undefined1 *)(param_3 + 0x20);
  puVar4[0xc] = param_4;
  puVar4[0xe] = 0;
  puVar4[0xf] = 0;
  puVar4[0x10] = 0;
  puVar4[0x11] = 0;
  iVar5 = *(int *)(param_1 + 0x6c) + 1;
  if (*(int *)(param_1 + 0x68) < iVar5) {
    FUN_18047cb30(param_1 + 0x60,*(int *)(param_1 + 0x6c) + 9 + iVar5 / 2 & 0xfffffff8);
  }
  iVar5 = *(int *)(param_1 + 0x6c);
  *(int *)(param_1 + 0x6c) = iVar5 + 1;
  *(uint **)(*(longlong *)(param_1 + 0x60) + (longlong)iVar5 * 8) = puVar4;
  return;
}



############ FUN_ 1814d1e10 size=2126 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814d1e10(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  longlong *plVar1;
  undefined8 **ppuVar2;
  undefined8 *puVar3;
  void *_Memory;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  longlong *plVar8;
  longlong lVar9;
  longlong lVar10;
  undefined8 uVar11;
  uint *puVar12;
  uint uVar13;
  longlong lVar14;
  undefined1 auStack_1e8 [32];
  undefined4 local_1c8;
  undefined8 *local_1c0;
  longlong local_1b8;
  longlong local_1b0;
  void *local_1a8;
  longlong local_1a0;
  undefined8 local_198;
  undefined8 *local_190;
  undefined8 *local_188;
  undefined8 *local_180;
  undefined8 local_178;
  undefined8 *local_170;
  longlong local_168;
  longlong local_160;
  undefined **local_158;
  undefined8 *local_150;
  undefined ***local_120;
  undefined **local_118;
  undefined8 *local_110;
  undefined ***local_e0;
  longlong local_d8 [7];
  longlong *local_a0;
  longlong local_98 [7];
  longlong *local_60;
  ulonglong local_58;
  
  local_178 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  lVar14 = 0;
  local_1c8 = 0;
  local_198 = param_4;
  local_170 = param_1;
  FUN_180579c10(param_1,"Toolbar");
  *param_1 = PluginToolbar::vftable;
  param_1[0x16] = PluginToolbar::vftable;
  param_1[0x19] = PluginToolbar::vftable;
  param_1[0x1a] = PluginToolbar::vftable;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  plVar1 = param_1 + 0x1d;
  *plVar1 = 0;
  param_1[0x1e] = 0;
  ppuVar2 = (undefined8 **)(param_1 + 0x1f);
  *ppuVar2 = (undefined8 *)0x0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  *(undefined1 *)(param_1 + 0x23) = 0;
  param_1[0x24] = param_3;
  uVar4 = FUN_1811f0330(param_2);
  param_1[0x25] = uVar4;
  param_1[0x26] = param_2;
  FUN_180484030(param_1 + 0x27,param_2);
  if (param_1[0xd] == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar5 = juce::StandardCachedComponentImage::vftable;
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = param_1;
    *(undefined4 *)(puVar5 + 5) = 0x3f800000;
    puVar6 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar5;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
  local_1a0 = FUN_1811316e0(0x318);
  puVar6 = (undefined8 *)FUN_1814a0f10(local_1a0,param_2,param_3);
  if (ppuVar2 == &local_180) {
    if (puVar6 != (undefined8 *)0x0) {
      puVar5 = (undefined8 *)*puVar6;
      goto LAB_1814d1faa;
    }
  }
  else {
    puVar3 = *ppuVar2;
    *ppuVar2 = puVar6;
    if (puVar3 != (undefined8 *)0x0) {
      puVar5 = (undefined8 *)*puVar3;
      puVar6 = puVar3;
LAB_1814d1faa:
      (*(code *)*puVar5)(puVar6,1);
    }
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x210);
  local_180 = puVar6;
  FUN_180578e30(puVar6,param_2);
  *puVar6 = SwapABSwitchButton::vftable;
  puVar6[0x16] = SwapABSwitchButton::vftable;
  puVar6[0x39] = SwapABSwitchButton::vftable;
  puVar6[0x3c] = SwapABSwitchButton::vftable;
  if ((*(uint *)(DAT_1826742c8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(DAT_1826742c8 + -0x10) = *(int *)(DAT_1826742c8 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar10 = puVar6[0x17];
  puVar6[0x17] = DAT_1826742c8;
  UNLOCK();
  puVar12 = (uint *)(lVar10 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  *(undefined1 *)((longlong)puVar6 + 0x1c6) = 0;
  puVar5 = (undefined8 *)param_1[0x1b];
  param_1[0x1b] = puVar6;
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x210);
  local_1c0 = puVar6;
  FUN_180578e30(puVar6,param_2);
  *puVar6 = CopyABSwitchButton::vftable;
  puVar6[0x16] = CopyABSwitchButton::vftable;
  puVar6[0x39] = CopyABSwitchButton::vftable;
  puVar6[0x3c] = CopyABSwitchButton::vftable;
  if ((*(uint *)(DAT_1826742e0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(DAT_1826742e0 + -0x10) = *(int *)(DAT_1826742e0 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar10 = puVar6[0x17];
  puVar6[0x17] = DAT_1826742e0;
  UNLOCK();
  puVar12 = (uint *)(lVar10 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  *(undefined1 *)((longlong)puVar6 + 0x1c6) = 0;
  puVar5 = (undefined8 *)param_1[0x1c];
  param_1[0x1c] = puVar6;
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x220);
  local_1c0 = puVar6;
  FUN_18049c4e0(&local_1b8,"configButton");
  local_1c8 = 0xf;
  FUN_1813379d0(puVar6,&local_1b8);
  *puVar6 = juce::DrawableButton::vftable;
  puVar6[0x16] = juce::DrawableButton::vftable;
  *(undefined4 *)(puVar6 + 0x39) = 0;
  puVar6[0x3a] = 0;
  puVar6[0x3b] = 0;
  puVar6[0x3c] = 0;
  puVar6[0x3d] = 0;
  puVar6[0x3e] = 0;
  puVar6[0x3f] = 0;
  puVar6[0x40] = 0;
  puVar6[0x41] = 0;
  puVar6[0x42] = 0;
  *(undefined4 *)(puVar6 + 0x43) = 3;
  puVar12 = (uint *)(local_1b8 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  plVar7 = param_1 + 0x21;
  if (plVar7 == &local_168) {
    puVar5 = (undefined8 *)*puVar6;
LAB_1814d2214:
    (*(code *)*puVar5)(puVar6,1);
  }
  else {
    puVar3 = (undefined8 *)*plVar7;
    *plVar7 = (longlong)puVar6;
    if (puVar3 != (undefined8 *)0x0) {
      puVar5 = (undefined8 *)*puVar3;
      puVar6 = puVar3;
      goto LAB_1814d2214;
    }
  }
  (**(code **)(*(longlong *)(param_1[0x21] + 0xb0) + 0x10))
            ((longlong *)(param_1[0x21] + 0xb0),&DAT_1826742f0);
  local_1c0 = (undefined8 *)FUN_1811316e0(0x658);
  puVar6 = (undefined8 *)FUN_1814c3700(local_1c0,local_198,param_2,param_5);
  plVar7 = param_1 + 0x20;
  if (plVar7 == &local_160) {
    if (puVar6 == (undefined8 *)0x0) goto LAB_1814d2290;
    puVar5 = (undefined8 *)*puVar6;
  }
  else {
    puVar3 = (undefined8 *)*plVar7;
    *plVar7 = (longlong)puVar6;
    if (puVar3 == (undefined8 *)0x0) goto LAB_1814d2290;
    puVar5 = (undefined8 *)*puVar3;
    puVar6 = puVar3;
  }
  (*(code *)*puVar5)(puVar6,1);
LAB_1814d2290:
  plVar7 = (longlong *)FUN_180579f50(&local_190,&DAT_1822b05c4);
  if (plVar1 != plVar7) {
    lVar10 = *plVar7;
    *plVar7 = 0;
    puVar6 = (undefined8 *)*plVar1;
    *plVar1 = lVar10;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
  if (local_190 != (undefined8 *)0x0) {
    (**(code **)*local_190)(local_190,1);
  }
  plVar8 = (longlong *)FUN_180579f50(&local_188,&DAT_1822b2714);
  plVar7 = param_1 + 0x1e;
  if (plVar7 != plVar8) {
    lVar10 = *plVar8;
    *plVar8 = 0;
    puVar6 = (undefined8 *)*plVar7;
    *plVar7 = lVar10;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
  if (local_188 != (undefined8 *)0x0) {
    (**(code **)*local_188)(local_188,1);
  }
  lVar10 = *plVar1;
  local_158 = std::_Func_impl_no_alloc<<lambda_c91a25c0a66b56811e78f388a7e48aab>,void>::vftable;
  local_120 = &local_158;
  local_a0 = (longlong *)0x0;
  local_150 = param_1;
  FUN_180488560(local_d8,&local_158);
  FUN_180488560(&local_158,lVar10 + 0xc0);
  FUN_180488560(lVar10 + 0xc0,local_d8);
  if (local_a0 != (longlong *)0x0) {
    (**(code **)(*local_a0 + 0x20))(local_a0,local_a0 != local_d8);
  }
  if (local_120 != (undefined ***)0x0) {
    (*(code *)(*local_120)[4])(local_120,local_120 != &local_158);
  }
  lVar10 = param_1[0x1e];
  local_118 = std::_Func_impl_no_alloc<<lambda_fc7177779024c354fd20b8abf737aac7>,void>::vftable;
  local_e0 = &local_118;
  local_60 = (longlong *)0x0;
  local_110 = param_1;
  FUN_180488560(local_98,&local_118);
  FUN_180488560(&local_118,lVar10 + 0xc0);
  FUN_180488560(lVar10 + 0xc0,local_98);
  if (local_60 != (longlong *)0x0) {
    (**(code **)(*local_60 + 0x20))(local_60,local_60 != local_98);
  }
  if (local_e0 != (undefined ***)0x0) {
    (*(code *)(*local_e0)[4])(local_e0,local_e0 != &local_118);
  }
  lVar9 = FUN_18118c230(param_1[0x25]);
  uVar13 = *(int *)(lVar9 + 0x6c) - 1;
  lVar10 = lVar14;
  if (uVar13 < *(uint *)(lVar9 + 0x44)) {
    lVar10 = *(longlong *)(*(longlong *)(lVar9 + 0x38) + (longlong)(int)uVar13 * 8);
  }
  FUN_18133e970(*plVar1,CONCAT71((int7)((ulonglong)lVar10 >> 8),lVar10 != 0));
  lVar10 = FUN_18118c230(param_1[0x25]);
  uVar13 = *(uint *)(lVar10 + 0x6c);
  if (uVar13 < *(uint *)(lVar10 + 0x44)) {
    lVar14 = *(longlong *)(*(longlong *)(lVar10 + 0x38) + (longlong)(int)uVar13 * 8);
  }
  FUN_18133e970(param_1[0x1e],CONCAT71((int7)(int3)(uVar13 >> 8),lVar14 != 0));
  uVar4 = param_1[0x21];
  uVar11 = FUN_1811316e0(0x40);
  local_1c0 = (undefined8 *)uVar11;
  FUN_18049c4e0(&local_1b0,"Update available");
  local_1c8 = 0x77;
  local_1a8 = (void *)FUN_1816057f0(uVar11,uVar4,&local_1b0);
  puVar12 = (uint *)(local_1b0 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  FUN_180578cc0(param_1 + 0x22,&local_1a8);
  _Memory = local_1a8;
  if (local_1a8 == (void *)0x0) {
    *(undefined1 *)(param_1[0x22] + 0x10) = 0;
    FUN_18134bf20(param_1,param_1[0x1f],0xffffffff);
    FUN_18134bf20(param_1,param_1[0x1b],0xffffffff);
    FUN_18134bf20(param_1,param_1[0x1c],0xffffffff);
    FUN_18134bf20(param_1,param_1[0x21],0xffffffff);
    FUN_18134bf20(param_1,*plVar1,0xffffffff);
    FUN_18134bf20(param_1,param_1[0x1e],0xffffffff);
    FUN_18134bf20(param_1,param_1[0x20],0xffffffff);
    FUN_181188cc0(param_1[0x25],param_1 + 0x19);
    local_1a0 = param_1[0x28];
    puVar12 = (uint *)(local_1a0 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      *puVar12 = *puVar12 + 1;
      UNLOCK();
    }
    FUN_1811f8160(param_2,local_1a0,param_1 + 0x1a);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar13 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  FUN_1816056e0(local_1a8);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180578e30 size=202 ############

undefined8 *
FUN_180578e30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  FUN_181346350();
  param_1[0x3a] = 0;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  *param_1 = SwitchButton<AorBStateOption>::vftable;
  param_1[0x16] = SwitchButton<AorBStateOption>::vftable;
  param_1[0x39] = SwitchButton<AorBStateOption>::vftable;
  param_1[0x3c] = SwitchButton<AorBStateOption>::vftable;
  param_1[0x3d] = param_2;
  FUN_1811e4400(param_1 + 0x3e,param_2);
  uVar1 = FUN_1811316e0(0x10);
  uVar1 = FUN_1811e8780(uVar1,param_1 + 0x3e,param_1 + 0x3c,param_4,uVar2);
  param_1[0x41] = uVar1;
  return param_1;
}



############ FUN_ 180579f50 size=190 ############

undefined8 *
FUN_180579f50(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  undefined8 *local_res8 [2];
  undefined8 *local_res18;
  undefined8 **local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res8[0] = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x1e0);
  local_res18 = puVar2;
  FUN_18049c4e0(local_res8,param_2,param_3,param_4,uVar3);
  local_res20 = local_res8;
  FUN_1813379d0(puVar2,local_res8);
  puVar2[0x3a] = 0;
  *(undefined1 *)(puVar2 + 0x3b) = 0;
  *puVar2 = PluginToolbarButton::vftable;
  puVar2[0x16] = PluginToolbarButton::vftable;
  puVar2[0x39] = PluginToolbarButton::vftable;
  _Memory = (uint *)(local_res8[0] + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = puVar2;
  return param_1;
}



############ FUN_ 1814a0f10 size=1453 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814a0f10(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  longlong *plVar1;
  uint uVar2;
  undefined8 *puVar3;
  undefined ***pppuVar4;
  longlong *plVar5;
  longlong *plVar6;
  void *pvVar7;
  longlong lVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  ulonglong uVar11;
  undefined8 *puVar12;
  void *_Memory;
  uint *puVar13;
  undefined ***pppuVar14;
  undefined1 auStack_258 [32];
  undefined8 local_238;
  undefined1 local_230 [8];
  longlong local_228;
  undefined1 local_220 [8];
  longlong local_218;
  longlong local_210;
  longlong local_208 [2];
  undefined8 local_1f8;
  undefined8 *local_1f0;
  longlong local_1e8;
  undefined **local_1e0;
  undefined8 *local_1d8;
  undefined ***local_1a8;
  undefined1 local_1a0 [40];
  undefined1 local_178 [48];
  undefined **local_148;
  undefined8 local_140;
  undefined ***local_110;
  undefined **local_108;
  undefined8 local_100;
  undefined ***local_d0;
  longlong local_c8 [7];
  longlong *local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_1f8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_258;
  uVar10 = param_3;
  local_1f0 = param_1;
  FUN_18056b680(param_1,param_2,param_3,param_2);
  *param_1 = PresetButton::vftable;
  param_1[0x16] = PresetButton::vftable;
  param_1[0x19] = PresetButton::vftable;
  param_1[0x1a] = std::_Func_impl_no_alloc<<lambda_cfb88000350e51a6345d7643ba57e8d2>,void>::vftable;
  param_1[0x21] = param_1 + 0x1a;
  plVar5 = param_1 + 0x22;
  *plVar5 = 0;
  plVar6 = param_1 + 0x23;
  *plVar6 = 0;
  param_1[0x24] = uVar10;
  FUN_1811e4590(param_1 + 0x25,param_2);
  plVar1 = param_1 + 0x28;
  *plVar1 = 0;
  FUN_181408890(param_1 + 0x29);
  param_1[0x5d] = 0;
  param_1[0x5e] = 0;
  param_1[0x5f] = 0;
  param_1[0x60] = 0;
  *(undefined1 *)(param_1 + 0x61) = 0;
  *(undefined8 *)((longlong)param_1 + 0x30c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x314) = 0;
  lVar8 = FUN_1811316e0(0x238);
  local_228 = lVar8;
  FUN_18049c4e0(local_220,"");
  puVar9 = (undefined8 *)FUN_1815ef4d0(lVar8,local_220);
  if (plVar5 == local_208) {
    if (puVar9 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar9;
      goto LAB_1814a1067;
    }
  }
  else {
    puVar3 = (undefined8 *)*plVar5;
    *plVar5 = (longlong)puVar9;
    if (puVar3 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar3;
      puVar9 = puVar3;
LAB_1814a1067:
      (*(code *)*puVar12)(puVar9,1);
    }
  }
  FUN_18049c4e0(&local_218,
                "<svg width=\"10\" height=\"16\" viewBox=\"0 0 10 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M8.48 15.8413C8.31438 15.8428 8.15018 15.8107 7.99725 15.7472C7.84431 15.6836 7.7058 15.5898 7.59 15.4713L0 7.93135L7.59 0.301346C7.83315 0.0951735 8.14495 -0.0120134 8.46347 0.00107106C8.782 0.0141555 9.08395 0.146554 9.30937 0.371975C9.53479 0.597396 9.66719 0.899351 9.68027 1.21788C9.69336 1.5364 9.58617 1.8482 9.38 2.09135L3.58 7.93135L9.38 13.7213C9.61633 13.9593 9.74896 14.281 9.74896 14.6163C9.74896 14.9517 9.61633 15.2734 9.38 15.5113C9.13519 15.7356 8.81176 15.8542 8.48 15.8413Z\" fill=\"black\"/>\n</svg>\n"
               );
  uVar10 = FUN_180576a30(local_1a0,&local_218);
  FUN_1815ef420(*plVar5,uVar10);
  puVar13 = (uint *)(local_218 + -0x10);
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  local_238 = (ulonglong)local_238._4_4_ << 0x20;
  *(undefined4 *)(*plVar5 + 0x208) = 0;
  lVar8 = *plVar5;
  pppuVar14 = (undefined ***)(lVar8 + 0xc0);
  local_148 = std::_Func_impl_no_alloc<<lambda_d9a1c79d06751d734cc74284992dd01f>,void>::vftable;
  local_110 = &local_148;
  local_90 = (longlong *)0x0;
  local_140 = param_3;
  local_90 = (longlong *)(*(code *)PTR_FUN_1824b6dd8)(&local_148,local_c8);
  if (local_110 != (undefined ***)0x0) {
    (*(code *)(*local_110)[4])(local_110,local_110 != &local_148);
    local_110 = (undefined ***)0x0;
  }
  pppuVar4 = *(undefined ****)(lVar8 + 0xf8);
  if (pppuVar4 != (undefined ***)0x0) {
    if (pppuVar4 == pppuVar14) {
      local_110 = (undefined ***)(*(code *)(*pppuVar4)[1])(pppuVar4,&local_148);
      pppuVar4 = *(undefined ****)(lVar8 + 0xf8);
      if (pppuVar4 == (undefined ***)0x0) goto LAB_1814a1185;
      (*(code *)(*pppuVar4)[4])(pppuVar4,pppuVar4 != pppuVar14);
      pppuVar4 = local_110;
    }
    local_110 = pppuVar4;
    *(undefined8 *)(lVar8 + 0xf8) = 0;
  }
LAB_1814a1185:
  FUN_180488560(pppuVar14,local_c8);
  if (local_90 != (longlong *)0x0) {
    (**(code **)(*local_90 + 0x20))(local_90,local_90 != local_c8);
  }
  if (local_110 != (undefined ***)0x0) {
    (*(code *)(*local_110)[4])(local_110,local_110 != &local_148);
  }
  plVar5 = (longlong *)*plVar5;
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x58))(plVar5,1);
    FUN_181343cc0(param_1,plVar5,0xffffffff);
  }
  uVar11 = FUN_1811316e0(0x238);
  local_238 = uVar11;
  FUN_18049c4e0(local_230,"");
  puVar9 = (undefined8 *)FUN_1815ef4d0(uVar11,local_230);
  if (plVar6 == &local_210) {
    if (puVar9 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar9;
      goto LAB_1814a125f;
    }
  }
  else {
    puVar3 = (undefined8 *)*plVar6;
    *plVar6 = (longlong)puVar9;
    if (puVar3 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar3;
      puVar9 = puVar3;
LAB_1814a125f:
      (*(code *)*puVar12)(puVar9,1);
    }
  }
  FUN_18049c4e0(&local_228,
                "<svg width=\"10\" height=\"16\" viewBox=\"0 0 10 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1.27 15.91C1.10294 15.9111 0.937346 15.8789 0.782837 15.8154C0.628328 15.7519 0.487993 15.6583 0.369997 15.54C0.133671 15.3021 0.0010376 14.9803 0.0010376 14.645C0.0010376 14.3097 0.133671 13.9879 0.369997 13.75L6.16 8L0.369997 2.16C0.163824 1.91685 0.0566368 1.60505 0.0697213 1.28653C0.0828058 0.968004 0.215205 0.666049 0.440626 0.440628C0.666046 0.215207 0.968001 0.0828086 1.28653 0.0697242C1.60505 0.0566397 1.91685 0.163827 2.16 0.369999L9.75 8L2.16 15.54C2.0442 15.6584 1.90568 15.7522 1.75275 15.8158C1.59981 15.8794 1.43561 15.9114 1.27 15.91Z\" fill=\"black\"/>\n</svg>\n"
               );
  uVar10 = FUN_180576a30(local_178,&local_228);
  FUN_1815ef420(*plVar6,uVar10);
  puVar13 = (uint *)(local_228 + -0x10);
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  local_238 = local_238 & 0xffffffff00000000;
  *(undefined4 *)(*plVar6 + 0x208) = 0;
  lVar8 = *plVar6;
  pppuVar14 = (undefined ***)(lVar8 + 0xc0);
  local_108 = std::_Func_impl_no_alloc<<lambda_9039e1dcb8b4742ff2dd9cef61c11e44>,void>::vftable;
  local_d0 = &local_108;
  local_50 = (longlong *)0x0;
  local_100 = param_3;
  local_50 = (longlong *)
             (*(code *)PTR_vtbl___AVSoothe2_DynamicCryptoManager_eden_pace___1824b2610)
                       (&local_108,local_88);
  if (local_d0 != (undefined ***)0x0) {
    (*(code *)(*local_d0)[4])(local_d0,local_d0 != &local_108);
    local_d0 = (undefined ***)0x0;
  }
  pppuVar4 = *(undefined ****)(lVar8 + 0xf8);
  if (pppuVar4 != (undefined ***)0x0) {
    if (pppuVar4 == pppuVar14) {
      local_d0 = (undefined ***)(*(code *)(*pppuVar4)[1])(pppuVar4,&local_108);
      pppuVar4 = *(undefined ****)(lVar8 + 0xf8);
      if (pppuVar4 == (undefined ***)0x0) goto LAB_1814a1383;
      (*(code *)(*pppuVar4)[4])(pppuVar4,pppuVar4 != pppuVar14);
      pppuVar4 = local_d0;
    }
    local_d0 = pppuVar4;
    *(undefined8 *)(lVar8 + 0xf8) = 0;
  }
LAB_1814a1383:
  FUN_180488560(pppuVar14,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_d0 != (undefined ***)0x0) {
    (*(code *)(*local_d0)[4])(local_d0,local_d0 != &local_108);
  }
  plVar6 = (longlong *)*plVar6;
  if (plVar6 != (longlong *)0x0) {
    (**(code **)(*plVar6 + 0x58))(plVar6,1);
    FUN_181343cc0(param_1,plVar6,0xffffffff);
  }
  FUN_181411b10(param_1 + 0x29,"phase",0);
  local_1e0 = std::
              _Func_impl_no_alloc<<lambda_869bd1ceecda01ccdd450afca50a5c60>,void,juce::StringRef,float>
              ::vftable;
  local_1a8 = &local_1e0;
  local_1d8 = param_1;
  FUN_181410000(param_1 + 0x29,&local_1e0);
  local_210 = FUN_1811316e0(0x10);
  _Memory = (void *)FUN_1811e8780(local_210,param_1 + 0x25,param_1 + 0x19);
  if (plVar1 == &local_1e8) {
    if (_Memory == (void *)0x0) {
    }
    FUN_1811e6b70(_Memory);
  }
  else {
    pvVar7 = (void *)*plVar1;
    *plVar1 = (longlong)_Memory;
    if (pvVar7 == (void *)0x0) {
    }
    FUN_1811e6b70(pvVar7);
    _Memory = pvVar7;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1814c3700 size=978 ############

void FUN_1814c3700(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  longlong local_388;
  longlong local_380;
  undefined1 local_378 [128];
  undefined8 *local_2f8;
  undefined8 local_2f0;
  undefined4 local_2e8;
  undefined4 local_2e4;
  undefined8 local_2a0;
  void *local_298;
  undefined8 *local_290;
  void *local_a8;
  undefined4 local_9c;
  
  local_2a0 = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_388,"HelpMenuButton");
  FUN_1813379d0(param_1,&local_388);
  puVar6 = (uint *)(local_388 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  param_1[0x3a] = 0;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  *param_1 = HelpMenuButton::vftable;
  param_1[0x16] = HelpMenuButton::vftable;
  param_1[0x39] = HelpMenuButton::vftable;
  param_1[0x3c] = HelpMenuButton::vftable;
  lVar2 = __RTDynamicCast(param_2,0,&juce::Component::RTTI_Type_Descriptor,
                          &CloudyModalContainer::RTTI_Type_Descriptor,0);
  *(bool *)(param_1 + 0x3d) = lVar2 != 0;
  puVar3 = (undefined8 *)FUN_1811316e0(0x8a8);
  local_290 = puVar3;
  FUN_1815ef340(puVar3,param_2,*(char *)(param_1 + 0x3d) == '\0');
  *puVar3 = ShortcutModal::vftable;
  puVar3[0x16] = ShortcutModal::vftable;
  puVar5 = puVar3 + 0x10f;
  *puVar5 = 0;
  puVar3[0x110] = 0;
  local_2f8 = puVar5;
  uVar4 = FUN_18047e380();
  *puVar5 = uVar4;
  puVar3[0x111] = 0;
  puVar3[0x112] = 0;
  *(undefined4 *)(puVar3 + 0x113) = 0x41a00000;
  *(undefined4 *)((longlong)puVar3 + 0x89c) = 0x41600000;
  *(undefined4 *)(puVar3 + 0x114) = 0x40800000;
  FUN_18049c4e0(&local_380,"ShortcutModal");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(puVar3,&local_380);
  puVar6 = (uint *)(local_380 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  param_1[0x3e] = puVar3;
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  param_1[0x41] = 0;
  param_1[0x42] = 0;
  *(undefined1 *)(param_1 + 0x43) = 1;
  param_1[0x44] = 0;
  param_1[0x45] = 0;
  param_1[0x46] = 0;
  param_1[0x47] = 0;
  *(undefined1 *)(param_1 + 0x48) = 1;
  param_1[0x49] = 0;
  param_1[0x4a] = 0;
  param_1[0x4b] = 0;
  param_1[0x4c] = 0;
  *(undefined1 *)(param_1 + 0x4d) = 1;
  param_1[0x4e] = 0;
  param_1[0x4f] = 0;
  param_1[0x50] = 0;
  param_1[0x51] = 0;
  *(undefined1 *)(param_1 + 0x52) = 1;
  param_1[0x53] = 0;
  param_1[0x54] = 0;
  param_1[0x55] = 0;
  param_1[0x56] = 0;
  *(undefined1 *)(param_1 + 0x57) = 1;
  param_1[0x58] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 0;
  *(undefined1 *)(param_1 + 0x5c) = 1;
  param_1[0x5d] = 0;
  FUN_181600080(param_1 + 0x5e,param_1,param_2);
  FUN_180484030(param_1 + 199,param_3);
  puVar5 = (undefined8 *)FUN_1811316e0(0x980);
  local_2f8 = puVar5;
  FUN_1815ef340(puVar5,param_2,1);
  *puVar5 = AboutModal::vftable;
  puVar5[0x16] = AboutModal::vftable;
  puVar5[0x10f] = param_4;
  FUN_1815ef760(puVar5 + 0x110);
  FUN_18134a370(puVar5 + 0xa7,puVar5 + 0x110,0);
  param_1[0xca] = puVar5;
  FUN_18049c4e0(local_378,&DAT_18242bf10);
  puVar3 = (undefined8 *)FUN_180576a30(&local_a8,local_378);
  puVar5 = param_1 + 0x3f;
  if (puVar5 != puVar3) {
    local_2f0 = *puVar3;
    *puVar3 = 0;
    local_2e8 = *(undefined4 *)(puVar3 + 1);
    local_2e4 = *(undefined4 *)((longlong)puVar3 + 0xc);
    puVar3[1] = 0;
    local_298 = (void *)*puVar5;
    *puVar5 = local_2f0;
    *(undefined4 *)(param_1 + 0x40) = local_2e8;
    *(undefined4 *)((longlong)param_1 + 0x204) = local_2e4;
                    /* WARNING: Subroutine does not return */
    free(local_298);
  }
  uVar4 = puVar3[3];
  param_1[0x41] = puVar3[2];
  param_1[0x42] = uVar4;
  *(undefined1 *)(param_1 + 0x43) = *(undefined1 *)(puVar3 + 4);
  local_9c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_a8);
}



############ FUN_ 1814d7030 size=522 ############

undefined8 *
FUN_1814d7030(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined **local_f0;
  undefined8 *local_e8;
  undefined ***local_b8;
  undefined **local_b0;
  undefined8 *local_a8;
  undefined ***local_78;
  undefined1 local_70 [56];
  undefined8 local_38;
  
  FUN_180579c10(param_1,"tooltip");
  param_1[0x1a] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x1b) = 0;
  *param_1 = CloudyTooltip::vftable;
  param_1[0x16] = CloudyTooltip::vftable;
  param_1[0x19] = CloudyTooltip::vftable;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = &DAT_1821dbf98;
  param_1[0x1f] = &DAT_1821dbf98;
  param_1[0x20] = 700;
  param_1[0x21] = 0;
  *(undefined4 *)(param_1 + 0x22) = 0;
  *(undefined1 *)((longlong)param_1 + 0x114) = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  *(undefined4 *)(param_1 + 0x26) = 9;
  param_1[0x27] = param_3;
  FUN_1815f84a0(param_1 + 0x28);
  FUN_180484030(param_1 + 0x5d,param_4);
  FUN_18134b0f0(param_1,1);
  FUN_18134bd50(param_1,1);
  FUN_181343cc0(param_2,param_1,0xffffffff);
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  if (*(int *)(**(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18) + 0x14) != 1) {
    FUN_1812a77d0(param_1 + 0x19,0xfa);
  }
  local_38 = 0;
  local_f0 = std::_Func_impl_no_alloc<<lambda_581e84151c1062410a7824a876ce5918>,juce::Path*___ptr64>
             ::vftable;
  local_b8 = &local_f0;
  local_b0 = std::_Func_impl_no_alloc<<lambda_c00a73e2c1271ce70bc6cbb3158cd142>,int>::vftable;
  local_78 = &local_b0;
  local_e8 = param_1;
  local_a8 = param_1;
  FUN_1815f8200(param_1 + 0x28,param_1,&local_b0,&local_f0,local_70);
  FUN_181342bf0(param_1 + 0x28,DAT_1824c3d18);
  return param_1;
}



############ FUN_ 1814d9850 size=2785 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814d9850(undefined8 *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4,
                  undefined8 param_5)

{
  longlong *plVar1;
  undefined ***pppuVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined ***pppuVar6;
  bool bVar7;
  char cVar8;
  undefined1 uVar9;
  DWORD DVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  undefined8 uVar13;
  longlong *plVar14;
  undefined8 uVar15;
  void *pvVar16;
  undefined8 *puVar17;
  uint uVar18;
  int iVar19;
  uint *puVar20;
  longlong *plVar22;
  int iVar23;
  ulonglong uVar24;
  undefined1 auStack_308 [32];
  longlong *local_2e8;
  undefined8 local_2e0;
  longlong *local_2d8;
  undefined8 local_2d0;
  int local_2c8;
  undefined8 local_2c0;
  undefined1 local_2b8 [8];
  longlong local_2b0;
  longlong local_2a8;
  longlong local_2a0;
  longlong local_298;
  longlong local_290;
  void *local_288;
  longlong *local_280;
  undefined1 local_278 [8];
  undefined8 local_270;
  undefined8 local_268;
  longlong local_260;
  undefined8 *local_258;
  longlong *local_250;
  longlong local_248;
  longlong local_240;
  longlong local_238;
  undefined1 local_230 [8];
  undefined8 local_228;
  longlong *local_220;
  undefined8 local_218;
  undefined8 local_210;
  undefined8 local_208;
  undefined8 local_200;
  longlong local_1f8;
  undefined1 local_1f0 [40];
  undefined **local_1c8;
  undefined8 *local_1c0;
  undefined ***local_190;
  undefined **local_188;
  undefined8 *local_180;
  undefined ***local_150;
  undefined **local_148;
  undefined8 *local_140;
  undefined ***local_110;
  longlong local_108 [7];
  longlong *local_d0;
  longlong local_c8 [7];
  longlong *local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  ulonglong uVar21;
  
  local_218 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_308;
  local_270 = param_5;
  local_2c0 = param_2;
  local_280 = param_4;
  local_268 = param_3;
  local_258 = param_1;
  local_250 = param_4;
  FUN_180579c10(param_1,"Tutorial Panel");
  puVar17 = param_1 + 0x1a;
  *param_1 = CloudyTutorialPanel::vftable;
  param_1[0x16] = CloudyTutorialPanel::vftable;
  param_1[0x19] = CloudyTutorialPanel::vftable;
  *puVar17 = CloudyTutorialPanel::vftable;
  param_1[0x1b] = param_3;
  FUN_180484030(param_1 + 0x1c,param_3);
  lVar4 = *param_4;
  param_1[0x1f] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x20] = param_2;
  plVar14 = param_1 + 0x21;
  uVar24 = 0;
  *plVar14 = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  *(undefined4 *)(param_1 + 0x25) = 0xffffffff;
  param_1[0x26] = CompletedTutorialsOption::vftable;
  FUN_18049c4e0(local_2b8,&DAT_1821d912e);
  FUN_1815ef4d0(param_1 + 0x27,local_2b8);
  FUN_1815f84a0(param_1 + 0x6e);
  param_1[0xa3] = 0;
  param_1[0xa4] = 0;
  plVar1 = param_1 + 0xa5;
  *plVar1 = 0;
  *(undefined8 *)((longlong)param_1 + 0x534) = 0;
  *(undefined8 *)((longlong)param_1 + 0x53c) = 0;
  puVar11 = (undefined8 *)FUN_1811316e0(0xb0);
  *puVar11 = juce::Component::vftable;
  puVar11[1] = &DAT_1821dbf98;
  puVar11[2] = &DAT_1821dbf98;
  puVar11[3] = 0;
  puVar11[4] = 0;
  puVar11[5] = 0;
  puVar11[6] = 0;
  puVar11[7] = 0;
  puVar11[8] = 0;
  puVar11[9] = 0;
  puVar11[10] = 0;
  puVar11[0xb] = 0;
  puVar11[0xc] = 0;
  puVar11[0xd] = 0;
  puVar11[0xe] = 0;
  puVar11[0xf] = 0;
  puVar11[0x10] = 0;
  puVar11[0x11] = 0;
  puVar11[0x12] = 0;
  puVar11[0x13] = 0;
  puVar11[0x14] = 0;
  *(undefined4 *)(puVar11 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar11 + 0xac) = 0;
  if (plVar14 == &local_248) {
    puVar12 = (undefined8 *)*puVar11;
LAB_1814d9a76:
    (*(code *)*puVar12)(puVar11,1);
  }
  else {
    puVar5 = (undefined8 *)*plVar14;
    *plVar14 = (longlong)puVar11;
    if (puVar5 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar5;
      puVar11 = puVar5;
      goto LAB_1814d9a76;
    }
  }
  plVar14 = (longlong *)*plVar14;
  if (plVar14 != (longlong *)0x0) {
    (**(code **)(*plVar14 + 0x58))(plVar14,1);
    FUN_181343cc0(param_1,plVar14,0xffffffff);
  }
  local_2d8 = (longlong *)FUN_1811316e0(0xe0);
  puVar11 = (undefined8 *)FUN_1814d0240(local_2d8);
  plVar14 = param_1 + 0xa4;
  if (plVar14 == &local_240) {
    if (puVar11 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar11;
      goto LAB_1814d9ae3;
    }
  }
  else {
    puVar5 = (undefined8 *)*plVar14;
    *plVar14 = (longlong)puVar11;
    if (puVar5 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar5;
      puVar11 = puVar5;
LAB_1814d9ae3:
      (*(code *)*puVar12)(puVar11,1);
    }
  }
  uVar13 = local_2c0;
  if (*plVar14 != 0) {
    FUN_181343cc0(local_2c0,*plVar14,0xffffffff);
  }
  local_2d8 = (longlong *)FUN_1811316e0(0x2a8);
  puVar11 = (undefined8 *)FUN_1814cfbf0(local_2d8);
  if (plVar1 == &local_238) {
    if (puVar11 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar11;
      goto LAB_1814d9b40;
    }
  }
  else {
    puVar5 = (undefined8 *)*plVar1;
    *plVar1 = (longlong)puVar11;
    if (puVar5 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar5;
      puVar11 = puVar5;
LAB_1814d9b40:
      (*(code *)*puVar12)(puVar11,1);
    }
  }
  if (*plVar1 != 0) {
    FUN_181343cc0(uVar13,*plVar1,0xffffffff);
  }
  (**(code **)(param_1[0x27] + 0x58))(param_1 + 0x27,1);
  FUN_181343cc0(param_1,param_1 + 0x27,0xffffffff);
  FUN_18049c4e0(&local_2b0,
                "<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.2573 0.945632C19.8396 1.53487 19.834 2.4846 19.2447 3.06692L12.634 9.59995L20.0544 16.9331C20.6436 17.5154 20.6492 18.4651 20.0669 19.0544C19.4846 19.6436 18.5349 19.6492 17.9456 19.0669L10.5 11.7088L3.05437 19.0669C2.46513 19.6492 1.5154 19.6436 0.933085 19.0543C0.350774 18.4651 0.356391 17.5154 0.945632 16.9331L8.36601 9.59995L1.75526 3.06693C1.16601 2.48462 1.1604 1.53489 1.74271 0.945649C2.32502 0.356408 3.27475 0.350791 3.86399 0.933102L10.5 7.49106L17.136 0.933085C17.7252 0.350774 18.675 0.356391 19.2573 0.945632Z\" fill=\"black\"/>\n</svg>\n"
               );
  uVar13 = FUN_180576a30(local_1f0,&local_2b0);
  FUN_1815ef420(param_1 + 0x27,uVar13);
  puVar20 = (uint *)(local_2b0 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  pppuVar2 = (undefined ***)(param_1 + 0x3f);
  local_1c8 = std::_Func_impl_no_alloc<<lambda_f61ff04bad9e2e28200000829fb902d2>,void>::vftable;
  local_190 = &local_1c8;
  local_d0 = (longlong *)0x0;
  local_1c0 = param_1;
  local_d0 = (longlong *)(*(code *)PTR_FUN_1824b3ba8)(&local_1c8,local_108);
  if (local_190 != (undefined ***)0x0) {
    (*(code *)(*local_190)[4])(local_190,local_190 != &local_1c8);
    local_190 = (undefined ***)0x0;
  }
  pppuVar6 = (undefined ***)param_1[0x46];
  if (pppuVar6 != (undefined ***)0x0) {
    if (pppuVar6 == pppuVar2) {
      local_190 = (undefined ***)(*(code *)(*pppuVar6)[1])(pppuVar6,&local_1c8);
      pppuVar6 = (undefined ***)param_1[0x46];
      if (pppuVar6 == (undefined ***)0x0) goto LAB_1814d9c89;
      (*(code *)(*pppuVar6)[4])(pppuVar6,pppuVar6 != pppuVar2);
      pppuVar6 = local_190;
    }
    local_190 = pppuVar6;
    param_1[0x46] = 0;
  }
LAB_1814d9c89:
  FUN_180488560(pppuVar2,local_108);
  if (local_d0 != (longlong *)0x0) {
    (**(code **)(*local_d0 + 0x20))(local_d0,local_d0 != local_108);
  }
  if (local_190 != (undefined ***)0x0) {
    (*(code *)(*local_190)[4])(local_190,local_190 != &local_1c8);
  }
  plVar14 = local_280;
  if (*(char *)*local_280 == '\0') {
LAB_1814d9d1c:
    bVar7 = false;
  }
  else {
    puVar11 = (undefined8 *)FUN_18049a930(local_230,local_280);
    DVar10 = GetFileAttributesW((LPCWSTR)*puVar11);
    bVar7 = true;
    if ((DVar10 & 0x10) != 0) goto LAB_1814d9d1c;
  }
  if ((!bVar7) || (cVar8 = FUN_1814c5d10(), cVar8 == '\0')) goto LAB_1814da2ff;
  FUN_181225f50(&local_288,plVar14);
  local_2d8 = (longlong *)((longlong)local_288 + 8);
  iVar23 = -1;
  while( true ) {
    uVar18 = 0;
    uVar21 = uVar24;
    for (puVar11 = (undefined8 *)*local_2d8; puVar11 != (undefined8 *)0x0;
        puVar11 = (undefined8 *)*puVar11) {
      uVar18 = (int)uVar21 + 1;
      uVar21 = (ulonglong)uVar18;
    }
    local_2c8 = iVar23 + 1;
    plVar14 = local_2d8;
    if ((int)uVar18 <= local_2c8) break;
    while ((-1 < iVar23 && ((longlong *)*plVar14 != (longlong *)0x0))) {
      iVar23 = iVar23 + -1;
      plVar14 = (longlong *)*plVar14;
    }
    lVar4 = *plVar14;
    uVar13 = FUN_1811316e0(0x348);
    local_220 = &local_2a8;
    local_228 = uVar13;
    for (puVar11 = *(undefined8 **)(lVar4 + 0x10); puVar11 != (undefined8 *)0x0;
        puVar11 = (undefined8 *)*puVar11) {
      local_210 = puVar11[1];
      iVar23 = FUN_18048cbc0(local_210,&DAT_1822a3b14);
      if (iVar23 == 0) {
        plVar14 = puVar11 + 2;
        goto LAB_1814d9dee;
      }
    }
    plVar14 = (longlong *)FUN_181220d40();
LAB_1814d9dee:
    local_2a8 = *plVar14;
    if ((*(uint *)(local_2a8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_2a8 + -0x10) = *(int *)(local_2a8 + -0x10) + 1;
      UNLOCK();
    }
    uVar15 = FUN_181246700(lVar4,local_278);
    for (puVar11 = *(undefined8 **)(lVar4 + 0x10); puVar11 != (undefined8 *)0x0;
        puVar11 = (undefined8 *)*puVar11) {
      local_208 = puVar11[1];
      iVar23 = FUN_18048cbc0(local_208,&DAT_1822a4ef4);
      if (iVar23 == 0) {
        plVar14 = puVar11 + 2;
        goto LAB_1814d9e5e;
      }
    }
    plVar14 = (longlong *)FUN_181220d40();
LAB_1814d9e5e:
    local_2a0 = *plVar14;
    if ((*(uint *)(local_2a0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_2a0 + -0x10) = *(int *)(local_2a0 + -0x10) + 1;
      UNLOCK();
    }
    for (puVar11 = *(undefined8 **)(lVar4 + 0x10); puVar11 != (undefined8 *)0x0;
        puVar11 = (undefined8 *)*puVar11) {
      local_200 = puVar11[1];
      iVar23 = FUN_18048cbc0(local_200,&DAT_1821e9924);
      if (iVar23 == 0) {
        plVar14 = puVar11 + 2;
        goto LAB_1814d9ebe;
      }
    }
    plVar14 = (longlong *)FUN_181220d40();
LAB_1814d9ebe:
    local_298 = *plVar14;
    if ((*(uint *)(local_298 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_298 + -0x10) = *(int *)(local_298 + -0x10) + 1;
      UNLOCK();
    }
    local_2e8 = &local_2a8;
    plVar14 = (longlong *)FUN_1814d1530(uVar13,&local_298,&local_2a0,uVar15);
    local_290 = plVar14[0x3c];
    if ((*(uint *)(local_290 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_290 + -0x10) = *(int *)(local_290 + -0x10) + 1;
      UNLOCK();
    }
    uVar9 = FUN_1811ca880(param_1 + 0x26,&local_290);
    *(undefined1 *)(plVar14 + 0x43) = uVar9;
    if (puVar17 != (undefined8 *)0x0) {
      plVar1 = plVar14 + 0x2c;
      plVar22 = (longlong *)*plVar1;
      iVar23 = *(int *)((longlong)plVar14 + 0x16c);
      plVar3 = plVar22 + iVar23;
      for (; plVar22 != plVar3; plVar22 = plVar22 + 1) {
        if (puVar17 == (undefined8 *)*plVar22) goto LAB_1814d9f94;
      }
      iVar19 = iVar23 + 1;
      if ((int)plVar14[0x2d] < iVar19) {
        if (iVar19 < 0) {
          iVar19 = iVar23 + 2;
        }
        FUN_18047cb30(plVar1,iVar23 + 9 + (iVar19 >> 1) & 0xfffffff8);
      }
      iVar23 = *(int *)((longlong)plVar14 + 0x16c);
      *(int *)((longlong)plVar14 + 0x16c) = iVar23 + 1;
      *(undefined8 **)(*plVar1 + (longlong)iVar23 * 8) = puVar17;
    }
LAB_1814d9f94:
    uVar13 = param_1[0x21];
    (**(code **)(*plVar14 + 0x58))(plVar14,1);
    FUN_181343cc0(uVar13,plVar14,0xffffffff);
    iVar19 = *(int *)((longlong)param_1 + 0x124);
    iVar23 = iVar19 + 1;
    if ((int)*(uint *)(param_1 + 0x24) < iVar23) {
      if (iVar23 < 0) {
        iVar23 = iVar19 + 2;
      }
      uVar18 = iVar19 + 9 + (iVar23 >> 1) & 0xfffffff8;
      if (*(uint *)(param_1 + 0x24) != uVar18) {
        pvVar16 = (void *)param_1[0x23];
        if ((int)uVar18 < 1) {
                    /* WARNING: Subroutine does not return */
          free(pvVar16);
        }
        if (pvVar16 == (void *)0x0) {
          pvVar16 = malloc((longlong)(int)uVar18 * 8);
          param_1[0x23] = pvVar16;
        }
        else {
          pvVar16 = realloc(pvVar16,(longlong)(int)uVar18 * 8);
          param_1[0x23] = pvVar16;
        }
      }
      *(uint *)(param_1 + 0x24) = uVar18;
    }
    iVar23 = *(int *)((longlong)param_1 + 0x124);
    *(int *)((longlong)param_1 + 0x124) = iVar23 + 1;
    *(longlong **)(param_1[0x23] + (longlong)iVar23 * 8) = plVar14;
    iVar23 = local_2c8;
  }
  plVar14 = (longlong *)param_1[0xa5];
  uVar13 = param_1[0xa4];
  local_2d0 = FUN_1811316e0(0xdb8);
  uVar15 = local_2c0;
  local_2e0 = local_270;
  local_2e8 = plVar14;
  puVar17 = (undefined8 *)FUN_1814c9b60(local_2d0,local_2c0,local_268,uVar13);
  plVar14 = param_1 + 0x22;
  if (plVar14 == &local_1f8) {
    if (puVar17 != (undefined8 *)0x0) {
      puVar11 = (undefined8 *)*puVar17;
      goto LAB_1814da0ef;
    }
  }
  else {
    puVar12 = (undefined8 *)*plVar14;
    *plVar14 = (longlong)puVar17;
    if (puVar12 != (undefined8 *)0x0) {
      puVar11 = (undefined8 *)*puVar12;
      puVar17 = puVar12;
LAB_1814da0ef:
      (*(code *)*puVar11)(puVar17,1);
    }
  }
  if (*plVar14 != 0) {
    FUN_181343cc0(param_1,*plVar14,0xffffffff);
  }
  lVar4 = *plVar14;
  local_188 = std::_Func_impl_no_alloc<<lambda_e5602e5b20e36ee242ab8cb6990b3c83>,void>::vftable;
  local_150 = &local_188;
  local_90 = (longlong *)0x0;
  local_180 = param_1;
  FUN_180488560(local_c8,&local_188);
  FUN_180488560(&local_188,lVar4 + 0xd38);
  FUN_180488560(lVar4 + 0xd38,local_c8);
  if (local_90 != (longlong *)0x0) {
    (**(code **)(*local_90 + 0x20))(local_90,local_90 != local_c8);
  }
  if (local_150 != (undefined ***)0x0) {
    (*(code *)(*local_150)[4])(local_150,local_150 != &local_188);
  }
  lVar4 = *plVar14;
  local_148 = std::_Func_impl_no_alloc<<lambda_dd0acd2f51d4d59b59de753af6ab5a19>,void>::vftable;
  local_110 = &local_148;
  local_50 = (longlong *)0x0;
  local_140 = param_1;
  FUN_180488560(local_88,&local_148);
  FUN_180488560(&local_148,lVar4 + 0xd78);
  FUN_180488560(lVar4 + 0xd78,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_110 != (undefined ***)0x0) {
    (*(code *)(*local_110)[4])(local_110,local_110 != &local_148);
  }
  uVar13 = (**(code **)(param_1[0x26] + 0x10))(param_1 + 0x26,&local_260);
  FUN_1811e1fd0(uVar13,param_1 + 0x19);
  puVar20 = (uint *)(local_260 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  if (*plVar14 != 0) {
    uVar24 = *plVar14 + 0xd0;
  }
  FUN_18133e2b0(uVar15,uVar24);
  if (local_288 != (void *)0x0) {
    FUN_1812472e0(local_288);
                    /* WARNING: Subroutine does not return */
    free(local_288);
  }
LAB_1814da2ff:
  puVar20 = (uint *)(*local_280 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
}



############ FUN_ 181225f50 size=182 ############

undefined8 FUN_181225f50(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 *local_50;
  undefined8 local_48;
  undefined2 local_40;
  undefined1 *local_38;
  undefined1 *local_30;
  undefined8 local_28;
  undefined8 local_20;
  undefined2 local_18;
  undefined8 *local_10;
  
  uVar2 = 0xfffffffffffffffe;
  local_50 = &DAT_1821dbf98;
  local_48 = 0;
  local_40 = 0;
  local_38 = &DAT_1821dbf98;
  local_30 = &DAT_1821dbf98;
  local_28 = 0;
  local_20 = 0;
  local_18 = 0x100;
  local_10 = (undefined8 *)FUN_1811316e0(0x18);
  *local_10 = juce::FileInputSource::vftable;
  lVar1 = *param_2;
  local_10[1] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined1 *)(local_10 + 2) = 0;
  FUN_181248430(&local_50,param_1,lVar1,param_4,uVar2);
  FUN_181248660(&local_50);
  return param_1;
}



############ FUN_ 18133e2b0 size=173 ############

void FUN_18133e2b0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  
  if (*(longlong *)(param_1 + 0x78) == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0();
    *puVar5 = 0;
    puVar5[1] = 0;
    puVar3 = *(undefined8 **)(param_1 + 0x78);
    *(undefined8 **)(param_1 + 0x78) = puVar5;
    if (puVar3 != (undefined8 *)0x0) {
      *(undefined4 *)((longlong)puVar3 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar3);
    }
  }
  plVar4 = *(longlong **)(param_1 + 0x78);
  plVar6 = (longlong *)*plVar4;
  iVar2 = *(int *)((longlong)plVar4 + 0xc);
  plVar1 = plVar6 + iVar2;
  while( true ) {
    if (plVar6 == plVar1) {
      if ((int)plVar4[1] < iVar2 + 1) {
        FUN_18047cb30(plVar4,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)((longlong)plVar4 + 0xc);
      *(int *)((longlong)plVar4 + 0xc) = iVar2 + 1;
      *(longlong *)(*plVar4 + (longlong)iVar2 * 8) = param_2;
      return;
    }
    if (param_2 == *plVar6) break;
    plVar6 = plVar6 + 1;
  }
  return;
}



############ FUN_ 1814d0240 size=398 ############

undefined8 *
FUN_1814d0240(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  longlong local_res10;
  
  FUN_18049c4e0(&local_res10,"Tutorial overlay",param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::Component::vftable;
  param_1[1] = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  *param_1 = CloudyTutorialOverlay::vftable;
  param_1[0x16] = CloudyTutorialOverlay::vftable;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) & 0xf7;
  if (param_1[0xd] == 0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar3 = juce::StandardCachedComponentImage::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
    puVar3[4] = param_1;
    *(undefined4 *)(puVar3 + 5) = 0x3f800000;
    puVar2 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar3;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  return param_1;
}



############ FUN_ 1815dc2d0 size=596 ############

longlong * FUN_1815dc2d0(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  uint *_Memory;
  undefined1 *local_res10;
  undefined1 *local_res18;
  longlong local_res20;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined **local_68;
  longlong *local_60;
  undefined ***local_30;
  
  local_res10 = &DAT_1821dbf98;
  local_res18 = &DAT_1821dbf98;
  FUN_1815d7db0(param_1,&local_res18,&local_res10,param_4,0xfffffffffffffffe);
  *param_1 = (longlong)InlineTooltip::vftable;
  param_1[0x16] = (longlong)InlineTooltip::vftable;
  param_1[0x18] = (longlong)InlineTooltip::vftable;
  param_1[0x19] = (longlong)InlineTooltip::vftable;
  param_1[0x1a] = (longlong)InlineTooltip::vftable;
  param_1[0x41] = (longlong)InlineTooltip::vftable;
  param_1[0x44] = (longlong)InlineTooltip::vftable;
  param_1[0x47] = (longlong)InlineTooltip::vftable;
  param_1[0x48] = (longlong)InlineTooltip::vftable;
  *(undefined4 *)(param_1 + 0x94) = 2;
  param_1[0x95] = param_2;
  FUN_181408890(param_1 + 0x96);
  param_1[0xca] = 0;
  *(undefined2 *)(param_1 + 0x40) = 0;
  *(undefined1 *)((longlong)param_1 + 0x202) = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0x8f | 8;
  if (param_1[0xd] == 0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar3 = juce::StandardCachedComponentImage::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
    puVar3[4] = param_1;
    *(undefined4 *)(puVar3 + 5) = 0x3f800000;
    puVar2 = (undefined8 *)param_1[0xd];
    param_1[0xd] = (longlong)puVar3;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  FUN_18049c4e0(&local_res20,"InlineTooltip");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_res20);
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*param_1 + 0x58))(param_1,1);
  FUN_181343cc0(param_2,param_1,0xffffffff);
  FUN_181342bf0(param_1,0);
  if ((int)param_1[0x38] != 4) {
    *(undefined4 *)(param_1 + 0x38) = 4;
    uStack_6c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_70 = (undefined4)param_1[5];
    local_78 = 0;
    uStack_74 = 0;
    FUN_181342870(param_1,&local_78,1);
  }
  FUN_181410d30(param_1 + 0x96,"alpha",0);
  local_68 = std::
             _Func_impl_no_alloc<<lambda_5e470c6fc58798f87e5be04e4b48f622>,void,juce::StringRef,float>
             ::vftable;
  local_30 = &local_68;
  local_60 = param_1;
  FUN_181410000(param_1 + 0x96,&local_68);
  return param_1;
}



############ FUN_ 1814dbc30 size=1063 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814dbc30(longlong *param_1,longlong param_2,longlong *param_3,undefined1 param_4)

{
  undefined ***pppuVar1;
  undefined ***pppuVar2;
  undefined8 *puVar3;
  uint uVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  longlong *plVar7;
  uint *_Memory;
  bool bVar8;
  undefined1 auStack_188 [32];
  undefined4 local_168;
  undefined4 local_158;
  longlong *local_150;
  undefined1 *local_148;
  longlong local_140;
  undefined8 local_138;
  undefined4 local_130;
  undefined8 local_128;
  longlong *local_120;
  longlong *local_118;
  undefined **local_110;
  longlong *local_108;
  undefined ***local_d8;
  undefined **local_c8;
  longlong *local_c0;
  undefined ***local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_128 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_188;
  plVar7 = param_1;
  local_140 = param_2;
  local_120 = param_1;
  local_118 = param_3;
  FUN_1813453e0(param_1,param_3);
  plVar7[0x17] = 0;
  *(undefined1 *)(plVar7 + 0x18) = 0;
  *plVar7 = (longlong)CloudyModal::vftable;
  plVar7[0x16] = (longlong)CloudyModal::vftable;
  *(undefined4 *)(plVar7 + 0x19) = 0;
  plVar7[0x1a] = param_2;
  plVar6 = plVar7 + 0x1b;
  local_150 = plVar6;
  FUN_1813ec2b0(plVar6);
  plVar7[0x3b] = 0;
  *(undefined1 *)(plVar7 + 0x3c) = 0;
  *plVar6 = (longlong)CloudyModal::ContentBackground::vftable;
  plVar7[0x3a] = (longlong)CloudyModal::ContentBackground::vftable;
  FUN_1815f84a0(plVar7 + 0x3d);
  *(undefined1 *)(param_1 + 0x72) = param_4;
  local_138 = DAT_18235df78;
  local_130 = DAT_18235df80;
  FUN_181408750(param_1 + 0x73,&local_138);
  local_148 = &DAT_1821dbf98;
  FUN_18134a630(param_1 + 0xa7,&local_148);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar4 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar8 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar4;
    if (bVar8) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  param_1[0xde] = 0;
  *(undefined4 *)(param_1 + 0xdf) = 0x41000000;
  plVar7 = param_1 + 0xe0;
  FUN_181605530(plVar7,1);
  FUN_181411b10(param_1 + 0x73,"alpha",0);
  local_110 = std::
              _Func_impl_no_alloc<<lambda_cf8cbdc50017c1cc0a404b058aa33d6a>,void,juce::StringRef,float>
              ::vftable;
  local_d8 = &local_110;
  local_108 = param_1;
  FUN_181410000(param_1 + 0x73,&local_110);
  pppuVar1 = (undefined ***)(param_1 + 0x76);
  local_c8 = std::_Func_impl_no_alloc<<lambda_edc465cb3f5e064b0ca1984211b4ca67>,void>::vftable;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_c0 = param_1;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824bdcc0)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar2 = (undefined ***)param_1[0x7d];
  if (pppuVar2 != (undefined ***)0x0) {
    if (pppuVar2 == pppuVar1) {
      local_90 = (undefined ***)(*(code *)(*pppuVar2)[1])(pppuVar2,&local_c8);
      pppuVar2 = (undefined ***)param_1[0x7d];
      if (pppuVar2 == (undefined ***)0x0) goto LAB_1814dbe8a;
      (*(code *)(*pppuVar2)[4])(pppuVar2,pppuVar2 != pppuVar1);
      pppuVar2 = local_90;
    }
    local_90 = pppuVar2;
    param_1[0x7d] = 0;
  }
LAB_1814dbe8a:
  FUN_180488560(pppuVar1,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  local_158 = 0x1010101;
  *(undefined4 *)(param_1 + 0x39) = 0x1010101;
  (**(code **)(*plVar6 + 0x58))(plVar6,1);
  FUN_181343cc0(param_1,plVar6,0xffffffff);
  (**(code **)(param_1[0xa7] + 0x58))(param_1 + 0xa7,1);
  FUN_181343cc0(param_1,param_1 + 0xa7,0xffffffff);
  if (param_1[0xd] == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar5 = juce::StandardCachedComponentImage::vftable;
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = param_1;
    *(undefined4 *)(puVar5 + 5) = 0x3f800000;
    puVar3 = (undefined8 *)param_1[0xd];
    param_1[0xd] = (longlong)puVar5;
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  plVar6 = (longlong *)0x0;
  if (param_1[10] != 0) {
    plVar6 = *(longlong **)(param_1[10] + 0x10);
  }
  if (plVar6 != plVar7) {
    FUN_18051b750(param_1 + 10,plVar7);
    FUN_181341b10(param_1);
  }
  local_168 = 0;
  plVar6 = (longlong *)
           __RTDynamicCast(local_140,0,&juce::Component::RTTI_Type_Descriptor,
                           &CloudyModalContainer::RTTI_Type_Descriptor);
  if ((plVar6 != (longlong *)0x0) && ((char)param_1[0x72] == '\0')) {
    if ((undefined **)*plVar6 == Soothe2AudioProcessorEditor::vftable) {
      puVar3 = (undefined8 *)plVar6[0x83];
      local_150 = param_1;
      if ((undefined8 *)plVar6[0x84] == puVar3) {
        FUN_1804803a0(plVar6 + 0x82,puVar3,&local_150);
      }
      else {
        *puVar3 = param_1;
        plVar6[0x83] = plVar6[0x83] + 8;
      }
    }
    else {
      (**(code **)*plVar6)(plVar6,param_1);
    }
  }
  _Memory = (uint *)(*param_3 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1815ef420 size=149 ############

void FUN_1815ef420(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong lVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lVar5 = FUN_1811316e0(0x28);
  FUN_1804ab000(lVar5,param_2,param_3,param_4,uVar6);
  uVar2 = *(undefined4 *)((longlong)param_2 + 0x14);
  uVar3 = *(undefined4 *)(param_2 + 3);
  uVar4 = *(undefined4 *)((longlong)param_2 + 0x1c);
  *(undefined4 *)(lVar5 + 0x10) = *(undefined4 *)(param_2 + 2);
  *(undefined4 *)(lVar5 + 0x14) = uVar2;
  *(undefined4 *)(lVar5 + 0x18) = uVar3;
  *(undefined4 *)(lVar5 + 0x1c) = uVar4;
  *(undefined1 *)(lVar5 + 0x20) = *(undefined1 *)(param_2 + 4);
  puVar1 = (undefined8 *)param_1[0x3f];
  param_1[0x3f] = lVar5;
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)((longlong)puVar1 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  (**(code **)(*param_1 + 0x108))(param_1);
  *(undefined4 *)((longlong)param_2 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001815ef4b9. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_2);
  return;
}



############ FUN_ 181345120 size=134 ############

void FUN_181345120(longlong param_1,char param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  
  if (param_2 == '\0') {
    puVar1 = *(undefined8 **)(param_1 + 0x68);
    *(undefined8 *)(param_1 + 0x68) = 0;
    if (puVar1 != (undefined8 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018134519d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)*puVar1)(puVar1,1);
      return;
    }
  }
  else if (*(longlong *)(param_1 + 0x68) == 0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar2 = juce::StandardCachedComponentImage::vftable;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = param_1;
    *(undefined4 *)(puVar2 + 5) = 0x3f800000;
    puVar1 = *(undefined8 **)(param_1 + 0x68);
    *(undefined8 **)(param_1 + 0x68) = puVar2;
    if (puVar1 != (undefined8 *)0x0) {
                    /* WARNING: Jumptable with 0 entries at 0x00018134517b */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)*puVar1)(puVar1,1);
      return;
    }
  }
  return;
}



############ FUN_ 1805679e0 size=419 ############

void .?AV?$CloudyOpenGLRenderer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLRenderer_USoothe2VertexData____(longlong param_1)

{
  void *_Memory;
  longlong lVar1;
  undefined8 uVar2;
  undefined **local_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined8 local_60;
  undefined8 uStack_58;
  undefined8 local_50;
  undefined8 uStack_48;
  undefined8 local_40;
  undefined2 local_38;
  undefined1 local_36;
  
  if (*(char *)(param_1 + 0x7a) != '\0') {
    if (*(longlong *)(param_1 + 0x70) == 0) {
      EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xac));
      lVar1 = FUN_1811316e0(0x68);
      memset(&local_a0,0,0x70);
      local_98 = 0;
      uStack_90 = 0;
      local_88 = 0;
      local_a0 = Soothe2VertexData::vftable;
      local_80 = 0;
      uStack_78 = 0;
      local_70 = 0;
      uStack_68 = 0;
      local_60 = 0;
      uStack_58 = 0;
      local_50 = 0;
      uStack_48 = 0;
      local_40 = 0;
      local_38 = 0;
      local_36 = 0;
      (*(code *)Soothe2VertexData::vftable[1])(&local_a0,lVar1);
      FUN_1805619f0(&local_a0);
      *(undefined8 *)(lVar1 + 0x18) = 0;
      *(undefined8 *)(lVar1 + 0x20) = 0;
      uVar2 = FUN_18047e100();
      *(undefined8 *)(lVar1 + 0x18) = uVar2;
      *(undefined8 *)(lVar1 + 0x28) = 0;
      *(undefined8 *)(lVar1 + 0x30) = 0;
      *(undefined8 *)(lVar1 + 0x38) = 0;
      *(undefined8 *)(lVar1 + 0x40) = 0;
      *(undefined8 *)(lVar1 + 0x48) = 0;
      *(undefined8 *)(lVar1 + 0x50) = 0;
      *(undefined8 *)(lVar1 + 0x58) = 0;
      uVar2 = FUN_180489c00();
      *(undefined8 *)(lVar1 + 0x50) = uVar2;
      *(undefined8 *)(lVar1 + 0x60) = 0;
      _Memory = *(void **)(param_1 + 0x70);
      *(longlong *)(param_1 + 0x70) = lVar1;
      if (_Memory != (void *)0x0) {
        FUN_18056afc0(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (*(longlong **)(param_1 + 0x2d8) != (longlong *)0x0) {
        (**(code **)(**(longlong **)(param_1 + 0x2d8) + 8))();
      }
      FUN_181413d90(*(undefined8 *)(param_1 + 0xd8));
      LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xac));
    }
    LOCK();
    *(undefined1 *)(param_1 + 0x7a) = 0;
    UNLOCK();
  }
  lVar1 = FUN_181639c10(param_1 + 0xe0);
  if (lVar1 != 0) {
    LOCK();
    *(undefined1 *)(lVar1 + 0x2fa) = 1;
    UNLOCK();
    FUN_181215c10(lVar1 + 0x250);
  }
  return;
}



############ FUN_ 180569930 size=337 ############

void FUN_180569930(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  void *_Memory;
  char cVar2;
  longlong *plVar3;
  uint *puVar4;
  longlong *_Memory_00;
  longlong local_res8;
  longlong local_res10;
  longlong *local_res18;
  
  (**(code **)(**(longlong **)(param_1 + 0x2e0) + 0x18))
            (*(longlong **)(param_1 + 0x2e0),&local_res10,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(**(longlong **)(param_1 + 0x2e0) + 0x20))
            (*(longlong **)(param_1 + 0x2e0),&local_res8);
  plVar3 = (longlong *)FUN_1811316e0(0x18);
  *plVar3 = param_1 + 0xe8;
  *(undefined4 *)(plVar3 + 1) = 0;
  plVar3[2] = (longlong)&DAT_1821dbf98;
  local_res18 = plVar3;
  cVar2 = FUN_18163a160(plVar3,&local_res10,0x8b31);
  _Memory_00 = plVar3;
  if (cVar2 != '\0') {
    cVar2 = FUN_18163a160(plVar3,&local_res8,0x8b30);
    if (cVar2 != '\0') {
      cVar2 = FUN_18163bb70(plVar3);
      if (cVar2 != '\0') {
        _Memory_00 = (longlong *)0x0;
        local_res18 = (longlong *)0x0;
        _Memory = *(void **)(param_1 + 0x68);
        *(longlong **)(param_1 + 0x68) = plVar3;
        if (_Memory != (void *)0x0) {
          FUN_18163bcd0(_Memory);
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        (**(code **)(**(longlong **)(param_1 + 0x68) + 0x70))
                  ((int)(*(longlong **)(param_1 + 0x68))[1]);
      }
    }
  }
  if (_Memory_00 != (longlong *)0x0) {
    FUN_18163bcd0(_Memory_00);
                    /* WARNING: Subroutine does not return */
    free(_Memory_00);
  }
  puVar4 = (uint *)(local_res8 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 18056b720 size=58 ############

undefined8 * FUN_18056b720(undefined8 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x490);
  uVar1 = FUN_1814d7240(uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1814d7240 size=700 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814d7240(undefined8 *param_1)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  uint uVar4;
  longlong lVar5;
  int iVar6;
  undefined1 *puVar7;
  undefined1 uVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  uint *puVar11;
  longlong *plVar12;
  undefined1 auStack_88 [32];
  longlong *local_68;
  undefined1 *local_60;
  undefined1 local_58 [8];
  undefined1 local_50 [8];
  longlong local_48 [2];
  undefined8 *local_38;
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_48[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_38 = param_1;
  puVar9 = (undefined8 *)FUN_1811316e0(8);
  *puVar9 = AutoBandSoloOption::vftable;
  FUN_1814d5360(param_1,puVar9);
  puVar9 = param_1 + 0x1e;
  *param_1 = AutoBandSoloOptionComponent::vftable;
  param_1[0x16] = AutoBandSoloOptionComponent::vftable;
  param_1[0x19] = AutoBandSoloOptionComponent::vftable;
  *puVar9 = AutoBandSoloOptionComponent::vftable;
  local_60 = local_50;
  plVar10 = (longlong *)param_1[0x1a];
  FUN_18049c4e0(local_50,"");
  plVar10 = (longlong *)(**(code **)(*plVar10 + 0x10))(plVar10,local_58);
  local_68 = plVar10;
  FUN_181232e20(plVar10,"Button","");
  local_48[0] = *plVar10;
  if ((*(uint *)(local_48[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_48[0] + -0x10) = *(int *)(local_48[0] + -0x10) + 1;
    UNLOCK();
  }
  puVar11 = (uint *)(*plVar10 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  plVar10 = param_1 + 0x1f;
  FUN_18160ae50(plVar10,local_48,local_50);
  (**(code **)(*plVar10 + 0x58))(plVar10,1);
  FUN_181343cc0(param_1,plVar10,0xffffffff);
  if (puVar9 != (undefined8 *)0x0) {
    plVar2 = param_1 + 0x4b;
    plVar12 = (longlong *)*plVar2;
    iVar6 = *(int *)((longlong)param_1 + 0x264);
    plVar3 = plVar12 + iVar6;
    for (; plVar12 != plVar3; plVar12 = plVar12 + 1) {
      if (puVar9 == (undefined8 *)*plVar12) goto LAB_1814d73ef;
    }
    if (*(int *)(param_1 + 0x4c) < iVar6 + 1) {
      FUN_18047cb30(plVar2,iVar6 + 9 + (iVar6 + 1) / 2 & 0xfffffff8);
    }
    iVar6 = *(int *)((longlong)param_1 + 0x264);
    *(int *)((longlong)param_1 + 0x264) = iVar6 + 1;
    *(undefined8 **)(*plVar2 + (longlong)iVar6 * 8) = puVar9;
  }
LAB_1814d73ef:
  FUN_18049c4e0(&local_68,"Auto band listen");
  FUN_181347ea0(plVar10,&local_68);
  puVar11 = (uint *)(local_68 + -2);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  FUN_18049c4e0(&local_60,"Use this to automatically enable band listen when dragging an EQ node.");
  puVar7 = local_60;
  if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar5 = param_1[0x5b];
  param_1[0x5b] = local_60;
  UNLOCK();
  puVar11 = (uint *)(lVar5 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if ((*(uint *)(puVar7 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(puVar7 + -0x10);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7 + -0x10);
    }
  }
  puVar9 = (undefined8 *)
           (**(code **)(*(longlong *)param_1[0x1a] + 0x20))((longlong *)param_1[0x1a],&local_30);
  uVar8 = (**(code **)(*(longlong *)*puVar9 + 0x28))((longlong *)*puVar9,puVar9 + 1);
  (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  FUN_181337080(plVar10,uVar8,0,0);
}



############ FUN_ 18056b760 size=58 ############

undefined8 * FUN_18056b760(undefined8 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x490);
  uVar1 = FUN_1814d53d0(uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1814d53d0 size=700 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814d53d0(undefined8 *param_1)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  uint uVar4;
  longlong lVar5;
  int iVar6;
  undefined1 *puVar7;
  undefined1 uVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  uint *puVar11;
  longlong *plVar12;
  undefined1 auStack_88 [32];
  longlong *local_68;
  undefined1 *local_60;
  undefined1 local_58 [8];
  undefined1 local_50 [8];
  longlong local_48 [2];
  undefined8 *local_38;
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_48[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_38 = param_1;
  puVar9 = (undefined8 *)FUN_1811316e0(8);
  *puVar9 = BypassOnSoloOption::vftable;
  FUN_1814d5360(param_1,puVar9);
  puVar9 = param_1 + 0x1e;
  *param_1 = BypassOnSoloOptionComponent::vftable;
  param_1[0x16] = BypassOnSoloOptionComponent::vftable;
  param_1[0x19] = BypassOnSoloOptionComponent::vftable;
  *puVar9 = BypassOnSoloOptionComponent::vftable;
  local_60 = local_50;
  plVar10 = (longlong *)param_1[0x1a];
  FUN_18049c4e0(local_50,"");
  plVar10 = (longlong *)(**(code **)(*plVar10 + 0x10))(plVar10,local_58);
  local_68 = plVar10;
  FUN_181232e20(plVar10,"Button","");
  local_48[0] = *plVar10;
  if ((*(uint *)(local_48[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_48[0] + -0x10) = *(int *)(local_48[0] + -0x10) + 1;
    UNLOCK();
  }
  puVar11 = (uint *)(*plVar10 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  plVar10 = param_1 + 0x1f;
  FUN_18160ae50(plVar10,local_48,local_50);
  (**(code **)(*plVar10 + 0x58))(plVar10,1);
  FUN_181343cc0(param_1,plVar10,0xffffffff);
  if (puVar9 != (undefined8 *)0x0) {
    plVar2 = param_1 + 0x4b;
    plVar12 = (longlong *)*plVar2;
    iVar6 = *(int *)((longlong)param_1 + 0x264);
    plVar3 = plVar12 + iVar6;
    for (; plVar12 != plVar3; plVar12 = plVar12 + 1) {
      if (puVar9 == (undefined8 *)*plVar12) goto LAB_1814d557f;
    }
    if (*(int *)(param_1 + 0x4c) < iVar6 + 1) {
      FUN_18047cb30(plVar2,iVar6 + 9 + (iVar6 + 1) / 2 & 0xfffffff8);
    }
    iVar6 = *(int *)((longlong)param_1 + 0x264);
    *(int *)((longlong)param_1 + 0x264) = iVar6 + 1;
    *(undefined8 **)(*plVar2 + (longlong)iVar6 * 8) = puVar9;
  }
LAB_1814d557f:
  FUN_18049c4e0(&local_68,"Use dry signal with band listen");
  FUN_181347ea0(plVar10,&local_68);
  puVar11 = (uint *)(local_68 + -2);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  FUN_18049c4e0(&local_60,"Use this to hear the unprocessed input when band listen is enabled.");
  puVar7 = local_60;
  if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar5 = param_1[0x5b];
  param_1[0x5b] = local_60;
  UNLOCK();
  puVar11 = (uint *)(lVar5 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if ((*(uint *)(puVar7 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(puVar7 + -0x10);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7 + -0x10);
    }
  }
  puVar9 = (undefined8 *)
           (**(code **)(*(longlong *)param_1[0x1a] + 0x20))((longlong *)param_1[0x1a],&local_30);
  uVar8 = (**(code **)(*(longlong *)*puVar9 + 0x28))((longlong *)*puVar9,puVar9 + 1);
  (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  FUN_181337080(plVar10,uVar8,0,0);
}



############ FUN_ 18056b7a0 size=58 ############

undefined8 * FUN_18056b7a0(undefined8 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x318);
  uVar1 = FUN_18056d8c0(uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056d8c0 size=1578 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18056d8c0(undefined8 *param_1)

{
  undefined ***pppuVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined ***pppuVar4;
  int iVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong *plVar9;
  void *pvVar10;
  uint *puVar11;
  uint uVar12;
  undefined4 *puVar13;
  bool bVar14;
  undefined1 auStack_1c8 [32];
  undefined4 local_1a8;
  undefined4 local_198;
  undefined4 local_194;
  undefined4 local_190 [2];
  longlong local_188;
  undefined1 *local_180;
  undefined1 local_178 [8];
  longlong local_170;
  undefined8 *local_168 [2];
  undefined8 local_158;
  undefined4 uStack_150;
  undefined4 uStack_14c;
  undefined8 local_148;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  undefined1 *local_138;
  longlong local_130 [2];
  undefined4 local_120;
  undefined4 uStack_11c;
  undefined8 *puStack_118;
  undefined8 local_110;
  undefined8 *local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined **local_d8;
  undefined4 local_d0 [2];
  undefined **local_c8;
  undefined8 local_c0;
  undefined8 *puStack_b8;
  undefined ***local_90;
  longlong *local_88;
  undefined1 local_80 [8];
  longlong local_78 [7];
  longlong *local_40;
  ulonglong local_38;
  
  local_110 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  local_108 = param_1;
  puVar6 = (undefined8 *)FUN_1811316e0(0x18);
  *puVar6 = GainRangeScalingOption::vftable;
  puVar6[1] = 0;
  puVar6[2] = 0;
  local_198 = 0;
  local_168[0] = puVar6;
  FUN_180568b90(puVar6 + 1,&local_198);
  local_194 = 1;
  FUN_180568b90(puVar6 + 1,&local_194);
  local_190[0] = 2;
  FUN_180568b90(puVar6 + 1,local_190);
  *puVar6 = Soothe2GainRangeScalingOption::vftable;
  FUN_1814d5360(param_1,puVar6);
  *param_1 = GainRangeScalingOptionComponent<Soothe2GainRangeScalingOption>::vftable;
  param_1[0x16] = GainRangeScalingOptionComponent<Soothe2GainRangeScalingOption>::vftable;
  param_1[0x19] = GainRangeScalingOptionComponent<Soothe2GainRangeScalingOption>::vftable;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  local_138 = &DAT_1821dbf98;
  local_180 = &DAT_1821dbf98;
  FUN_18134a080(param_1 + 0x20,&local_180,&local_138);
  puVar11 = (uint *)(local_180 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar12 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar12 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar14 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar12;
    if (bVar14) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *(undefined4 *)(param_1 + 0x61) = 0x41c00000;
  local_1a8 = 0;
  lVar7 = __RTDynamicCast(param_1[0x1a],0,&ConfigOption::RTTI_Type_Descriptor,
                          &Soothe2GainRangeScalingOption::RTTI_Type_Descriptor);
  param_1[0x62] = lVar7;
  puVar13 = *(undefined4 **)(lVar7 + 8);
  puVar2 = puVar13 + *(int *)(lVar7 + 0x14);
  do {
    if (puVar13 == puVar2) {
      plVar9 = param_1 + 0x20;
      uVar8 = (**(code **)(*(longlong *)param_1[0x1a] + 0x18))((longlong *)param_1[0x1a],local_130);
      FUN_181349c50(plVar9,uVar8,3);
      puVar11 = (uint *)(local_130[0] + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar12 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      if ((((*(int *)(param_1 + 0x5d) == 0) && (*(int *)((longlong)param_1 + 0x2ec) == 0)) &&
          (*(int *)(param_1 + 0x5e) == 0)) && (*(int *)((longlong)param_1 + 0x2f4) == 0)) {
        bVar14 = true;
      }
      else {
        bVar14 = false;
      }
      if (!bVar14) {
        param_1[0x5d] = 0;
        param_1[0x5e] = 0;
        uStack_14c = *(undefined4 *)((longlong)param_1 + 300);
        uStack_150 = *(undefined4 *)(param_1 + 0x25);
        uStack_f0 = param_1[0x25];
        local_158 = 0;
        local_f8 = 0;
        FUN_181342870(plVar9,&local_f8,1);
      }
      if (*(int *)(param_1 + 0x58) != 0x21) {
        *(undefined4 *)(param_1 + 0x58) = 0x21;
        uStack_13c = *(undefined4 *)((longlong)param_1 + 300);
        uStack_140 = *(undefined4 *)(param_1 + 0x25);
        uStack_e0 = param_1[0x25];
        local_148 = 0;
        local_e8 = 0;
        FUN_181342870(plVar9,&local_e8,1);
      }
      uVar8 = (**(code **)(*(longlong *)param_1[0x62] + 0x20))((longlong *)param_1[0x62],&local_88);
      uVar8 = (**(code **)(*(longlong *)param_1[0x62] + 0x38))
                        ((longlong *)param_1[0x62],local_168,uVar8);
      FUN_180568ed0(param_1,uVar8);
      puVar11 = (uint *)(local_168[0] + -2);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar12 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      (**(code **)(*local_88 + 0xb0))(local_88,local_80);
      (**(code **)(*plVar9 + 0x58))(plVar9,1);
      FUN_181343cc0(param_1,plVar9,0xffffffff);
    }
    local_d0[0] = *puVar13;
    local_d8 = &PTR_vftable_18262b570;
    (**(code **)(*(longlong *)param_1[0x62] + 0x38))((longlong *)param_1[0x62],&local_188,&local_d8)
    ;
    (**(code **)(*local_d8 + 0xb0))(local_d8,local_d0);
    uVar8 = FUN_1811316e0(0x398);
    local_100 = uVar8;
    FUN_18049c4e0(local_178,&DAT_18249336a);
    local_170 = local_188;
    if ((*(uint *)(local_188 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_188 + -0x10) = *(int *)(local_188 + -0x10) + 1;
      UNLOCK();
    }
    plVar9 = (longlong *)FUN_18160ae50(uVar8,&local_170,local_178);
    (**(code **)(*plVar9 + 0x50))(plVar9,&local_188);
    if ((*(int *)((longlong)plVar9 + 0x194) != 1) &&
       (*(undefined4 *)((longlong)plVar9 + 0x194) = 1, (char)plVar9[0x38] != '\0')) {
      FUN_181336f60(plVar9,1,1);
    }
    local_120 = *puVar13;
    pppuVar1 = (undefined ***)(plVar9 + 0x18);
    local_c8 = std::_Func_impl_no_alloc<<lambda_828c8e4c40c3b6172ea0644d2f4dfd3d>,void>::vftable;
    local_c0 = CONCAT44(uStack_11c,local_120);
    local_40 = (longlong *)0x0;
    puStack_118 = param_1;
    puStack_b8 = param_1;
    local_90 = &local_c8;
    local_40 = (longlong *)(*(code *)PTR_FUN_1824b1a98)(&local_c8,local_78);
    if (local_90 != (undefined ***)0x0) {
      (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
      local_90 = (undefined ***)0x0;
    }
    pppuVar4 = (undefined ***)plVar9[0x1f];
    if (pppuVar4 != (undefined ***)0x0) {
      if (pppuVar4 == pppuVar1) {
        local_90 = (undefined ***)(*(code *)(*pppuVar4)[1])(pppuVar4,&local_c8);
        pppuVar4 = (undefined ***)plVar9[0x1f];
        if (pppuVar4 == (undefined ***)0x0) goto LAB_18056dbf6;
        (*(code *)(*pppuVar4)[4])(pppuVar4,pppuVar4 != pppuVar1);
        pppuVar4 = local_90;
      }
      local_90 = pppuVar4;
      plVar9[0x1f] = 0;
    }
LAB_18056dbf6:
    FUN_180488560(pppuVar1,local_78);
    if (local_40 != (longlong *)0x0) {
      (**(code **)(*local_40 + 0x20))(local_40,local_40 != local_78);
    }
    if (local_90 != (undefined ***)0x0) {
      (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    }
    iVar3 = *(int *)((longlong)param_1 + 0xfc);
    iVar5 = iVar3 + 1;
    if ((int)*(uint *)(param_1 + 0x1f) < iVar5) {
      if (iVar5 < 0) {
        iVar5 = iVar3 + 2;
      }
      uVar12 = iVar3 + 9 + (iVar5 >> 1) & 0xfffffff8;
      if (*(uint *)(param_1 + 0x1f) != uVar12) {
        pvVar10 = (void *)param_1[0x1e];
        if ((int)uVar12 < 1) {
                    /* WARNING: Subroutine does not return */
          free(pvVar10);
        }
        if (pvVar10 == (void *)0x0) {
          pvVar10 = malloc((longlong)(int)uVar12 * 8);
          param_1[0x1e] = pvVar10;
        }
        else {
          pvVar10 = realloc(pvVar10,(longlong)(int)uVar12 * 8);
          param_1[0x1e] = pvVar10;
        }
      }
      *(uint *)(param_1 + 0x1f) = uVar12;
    }
    iVar5 = *(int *)((longlong)param_1 + 0xfc);
    *(int *)((longlong)param_1 + 0xfc) = iVar5 + 1;
    *(longlong **)(param_1[0x1e] + (longlong)iVar5 * 8) = plVar9;
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(param_1,plVar9,0xffffffff);
    puVar11 = (uint *)(local_188 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar12 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    puVar13 = puVar13 + 1;
  } while( true );
}



############ FUN_ 18056b7e0 size=90 ############

undefined8 *
FUN_18056b7e0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(800);
  uVar1 = FUN_18163edd0(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18163edd0 size=2154 ############

undefined8 * FUN_18163edd0(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  longlong lVar2;
  code *pcVar3;
  undefined1 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  uint *puVar8;
  longlong *plVar9;
  longlong local_res20;
  undefined1 local_80 [8];
  undefined1 local_78 [8];
  longlong local_70;
  undefined1 local_68 [8];
  undefined1 local_60 [8];
  undefined1 local_58 [8];
  undefined1 local_50 [8];
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  puVar7 = param_1;
  FUN_1813ec2b0();
  puVar7[0x20] = 0;
  *(undefined1 *)(puVar7 + 0x21) = 0;
  *puVar7 = LeftControls::vftable;
  puVar7[0x1f] = LeftControls::vftable;
  puVar7[0x22] = LeftControls::vftable;
  uVar4 = FUN_1813592b0(param_3);
  *(undefined1 *)(param_1 + 0x23) = uVar4;
  param_1[0x24] = param_2;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  FUN_1815f84a0(param_1 + 0x2f);
  FUN_18049c4e0(&local_res20,"LeftControls");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_res20);
  puVar8 = (uint *)(local_res20 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  *(undefined4 *)(param_1 + 0x1e) = 0x10100;
  uVar5 = FUN_1811316e0(0x128);
  FUN_18049c4e0(local_80,"STEREO");
  uVar5 = FUN_18058fde0(uVar5,local_80,1);
  puVar7 = (undefined8 *)param_1[0x2a];
  param_1[0x2a] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  plVar9 = (longlong *)param_1[0x2a];
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(param_1,plVar9,0xffffffff);
  }
  uVar5 = FUN_1811316e0(0x128);
  FUN_18049c4e0(local_78,&DAT_1822fa8e4);
  uVar5 = FUN_18058fde0(uVar5,local_78,1);
  puVar7 = (undefined8 *)param_1[0x2b];
  param_1[0x2b] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  plVar9 = (longlong *)param_1[0x2b];
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(param_1,plVar9,0xffffffff);
  }
  uVar5 = FUN_1811316e0(0xc30);
  FUN_18049c4e0(&local_70,&DAT_1822fabe4);
  uVar6 = FUN_18119aa60(param_2,"stereo mode");
  uVar5 = FUN_1815345c0(uVar5,&local_70,uVar6,param_1);
  puVar7 = (undefined8 *)param_1[0x2c];
  param_1[0x2c] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  puVar8 = (uint *)(local_70 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  lVar2 = param_1[0x2c];
  plVar9 = (longlong *)(lVar2 + 0x810);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    if ((*(uint *)(DAT_182674958 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_182674958 + -0x10) = *(int *)(DAT_182674958 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    plVar9 = (longlong *)(lVar2 + 0x818);
    lVar2 = *plVar9;
    *plVar9 = DAT_182674958;
    UNLOCK();
    puVar8 = (uint *)(lVar2 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  else {
    (*pcVar3)(plVar9,&DAT_182674958);
  }
  plVar9 = (longlong *)param_1[0x2c];
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(param_1,plVar9,0xffffffff);
  }
  uVar5 = FUN_1811316e0(0x870);
  FUN_18049c4e0(local_68,&DAT_1822fd694);
  uVar6 = FUN_18119aa60(param_2,"stereo link");
  uVar5 = FUN_181550d40(uVar5,local_68,uVar6);
  puVar7 = (undefined8 *)param_1[0x2d];
  param_1[0x2d] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  lVar2 = param_1[0x2d];
  plVar9 = (longlong *)(lVar2 + 0x840);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    if ((*(uint *)(DAT_182674870 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_182674870 + -0x10) = *(int *)(DAT_182674870 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    plVar9 = (longlong *)(lVar2 + 0x848);
    lVar2 = *plVar9;
    *plVar9 = DAT_182674870;
    UNLOCK();
    puVar8 = (uint *)(lVar2 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  else {
    (*pcVar3)(plVar9,&DAT_182674870);
  }
  plVar9 = (longlong *)param_1[0x2d];
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(param_1,plVar9,0xffffffff);
  }
  uVar5 = FUN_1811316e0(0xa30);
  local_40 = uVar5;
  FUN_18049c4e0(local_60,"balance");
  uVar6 = FUN_18119aa60(param_2,"stereo balance");
  uVar5 = FUN_181567090(uVar5,local_60,uVar6,1,0);
  puVar7 = (undefined8 *)param_1[0x2e];
  param_1[0x2e] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  lVar2 = param_1[0x2e];
  plVar9 = (longlong *)(lVar2 + 0x100);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    if ((*(uint *)(DAT_182674860 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_182674860 + -0x10) = *(int *)(DAT_182674860 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    plVar9 = (longlong *)(lVar2 + 0x108);
    lVar2 = *plVar9;
    *plVar9 = DAT_182674860;
    UNLOCK();
    puVar8 = (uint *)(lVar2 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  else {
    (*pcVar3)(plVar9,&DAT_182674860);
  }
  lVar2 = param_1[0x2e];
  *(undefined4 *)(lVar2 + 0xa04) = 1;
  *(undefined4 *)(lVar2 + 0xfc) = 0x3f800000;
  FUN_18134bf20(param_1,param_1[0x2e],0xffffffff);
  uVar5 = FUN_18119aa60(param_2,"stereo mode");
  FUN_1811be290(uVar5,param_1 + 0x22);
  uVar5 = FUN_1811316e0(0xd0);
  uVar5 = FUN_18059c980(uVar5);
  puVar7 = (undefined8 *)param_1[0x25];
  param_1[0x25] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  FUN_18134bf20(param_1,param_1[0x25],0xffffffff);
  uVar5 = FUN_1811316e0(0x368);
  uVar6 = FUN_181199120(param_2,&DAT_1822fc344);
  uVar5 = FUN_18059d230(uVar5,uVar6);
  puVar7 = (undefined8 *)param_1[0x26];
  param_1[0x26] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  plVar9 = (longlong *)(param_1[0x26] + 200);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    FUN_181249460(param_1[0x26] + 0xd0);
  }
  else {
    (*pcVar3)(plVar9,&DAT_182674938);
  }
  FUN_18134bf20(param_1,param_1[0x26],0xffffffff);
  uVar5 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(local_58,"depth");
  uVar6 = FUN_18119aa60(param_2,"depth");
  uVar5 = FUN_181567090(uVar5,local_58,uVar6,1,0);
  puVar7 = (undefined8 *)param_1[0x27];
  param_1[0x27] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  plVar9 = (longlong *)(param_1[0x27] + 0x100);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    FUN_181249460(param_1[0x27] + 0x108);
  }
  else {
    (*pcVar3)(plVar9,&DAT_182674838);
  }
  FUN_18134bf20(param_1,param_1[0x27],0xffffffff);
  uVar5 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(local_50,"sharpness");
  uVar6 = FUN_18119aa60(param_2,"sharpness");
  uVar5 = FUN_181567090(uVar5,local_50,uVar6,0,0);
  puVar7 = (undefined8 *)param_1[0x28];
  param_1[0x28] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  plVar9 = (longlong *)(param_1[0x28] + 0x100);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    FUN_181249460(param_1[0x28] + 0x108);
  }
  else {
    (*pcVar3)(plVar9,&DAT_1826748a0);
  }
  FUN_18134bf20(param_1,param_1[0x28],0xffffffff);
  uVar5 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(local_48,"selectivity");
  uVar6 = FUN_18119aa60(param_2,"selectivity");
  uVar5 = FUN_181567090(uVar5,local_48,uVar6,0,0);
  puVar7 = (undefined8 *)param_1[0x29];
  param_1[0x29] = uVar5;
  if (puVar7 != (undefined8 *)0x0) {
    (**(code **)*puVar7)(puVar7,1);
  }
  plVar9 = (longlong *)(param_1[0x29] + 0x100);
  pcVar3 = *(code **)(*plVar9 + 0x10);
  if (pcVar3 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    FUN_181249460(param_1[0x29] + 0x108);
  }
  else {
    (*pcVar3)(plVar9,&DAT_182674920);
  }
  FUN_18134bf20(param_1,param_1[0x29],0xffffffff);
  return param_1;
}



############ FUN_ 18058fde0 size=304 ############

undefined8 * FUN_18058fde0(undefined8 *param_1,longlong *param_2,undefined1 param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  puVar4 = param_1;
  FUN_18056b680();
  *puVar4 = Soothe2SectionHeader::vftable;
  puVar4[0x16] = Soothe2SectionHeader::vftable;
  lVar2 = *param_2;
  param_1[0x19] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  *(undefined1 *)(param_1 + 0x1e) = 1;
  *(undefined1 *)(param_1 + 0x1f) = param_3;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  *(undefined1 *)(param_1 + 0x22) = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  if (param_1[0xd] == 0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar3 = juce::StandardCachedComponentImage::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
    puVar3[4] = param_1;
    *(undefined4 *)(puVar3 + 5) = 0x3f800000;
    puVar4 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar3;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18059c980 size=476 ############

undefined8 * FUN_18059c980(undefined8 *param_1)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  uint *puVar7;
  longlong local_res10;
  longlong local_res18;
  void *local_res20;
  undefined8 *local_98;
  undefined8 local_90;
  longlong local_88 [2];
  undefined2 local_78;
  undefined1 *local_70;
  undefined1 *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined2 local_50;
  undefined8 local_48;
  
  local_90 = 0xfffffffffffffffe;
  puVar6 = param_1;
  FUN_18056b680();
  *puVar6 = Soothe2Header::vftable;
  puVar6[0x16] = Soothe2Header::vftable;
  plVar1 = puVar6 + 0x19;
  *plVar1 = 0;
  FUN_18049c4e0(&local_res10,"header");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_res10);
  puVar7 = (uint *)(local_res10 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_18049c4e0(&local_res18,&DAT_18238b470);
  local_88[0] = local_res18;
  puVar7 = (uint *)(local_res18 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    *puVar7 = *puVar7 + 1;
    UNLOCK();
  }
  local_88[1] = 0;
  local_78 = 0;
  local_70 = &DAT_1821dbf98;
  local_68 = &DAT_1821dbf98;
  local_60 = 0;
  local_58 = 0;
  local_50 = 0x100;
  local_48 = 0;
  FUN_181248430(local_88,&local_res20);
  FUN_181248660(local_88);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  plVar4 = (longlong *)FUN_18132eac0(&local_98,local_res20);
  if (plVar1 != plVar4) {
    lVar3 = *plVar4;
    *plVar4 = 0;
    puVar6 = (undefined8 *)*plVar1;
    *plVar1 = lVar3;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
  if (local_98 != (undefined8 *)0x0) {
    (**(code **)*local_98)(local_98,1);
  }
  if (param_1[0xd] == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar5 = juce::StandardCachedComponentImage::vftable;
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = param_1;
    *(undefined4 *)(puVar5 + 5) = 0x3f800000;
    puVar6 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar5;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
  if (local_res20 != (void *)0x0) {
    FUN_1812472e0(local_res20);
                    /* WARNING: Subroutine does not return */
    free(local_res20);
  }
  return param_1;
}



############ FUN_ 18059d230 size=743 ############

undefined8 * FUN_18059d230(undefined8 *param_1,longlong param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  uint *_Memory;
  longlong local_res10;
  undefined **local_60;
  undefined8 *local_58;
  undefined ***local_28;
  
  puVar8 = param_1;
  FUN_18056b680();
  puVar8[0x19] = juce::SettableTooltipClient::vftable;
  puVar8[0x1a] = &DAT_1821dbf98;
  puVar8[0x1b] = ParameterFloat::Listener::vftable;
  puVar8[0x1c] = ParameterControllingComponent::vftable;
  FUN_18057f340(puVar8 + 0x1d,param_1);
  *param_1 = ModeSelector::vftable;
  param_1[0x16] = ModeSelector::vftable;
  param_1[0x19] = ModeSelector::vftable;
  param_1[0x1b] = ModeSelector::vftable;
  param_1[0x1c] = ModeSelector::vftable;
  param_1[99] = 0;
  param_1[100] = param_2;
  plVar5 = (longlong *)FUN_181249970(param_2 + 0x2c8,0);
  lVar4 = *plVar5;
  param_1[0x65] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  plVar5 = (longlong *)FUN_181249970(param_1[100] + 0x2c8,1);
  lVar4 = *plVar5;
  param_1[0x66] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x67] = 0;
  param_1[0x68] = 0;
  param_1[0x69] = 0;
  *(undefined1 *)((longlong)param_1 + 0x354) = 0;
  *(undefined4 *)(param_1 + 0x6b) = 0x43c80000;
  *(undefined4 *)((longlong)param_1 + 0x35c) = 0x40400000;
  *(undefined4 *)(param_1 + 0x6c) = 0x42f00000;
  *(undefined4 *)((longlong)param_1 + 0x364) = 0x3f800000;
  FUN_18049c4e0(&local_res10,"mode-selector");
  if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar4 = param_1[2];
  param_1[2] = local_res10;
  UNLOCK();
  _Memory = (uint *)(lVar4 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_res10 + -0x10);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(local_res10 + -0x10));
    }
  }
  if (param_1[0xd] == 0) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar6 = juce::StandardCachedComponentImage::vftable;
    puVar6[1] = 0;
    puVar6[2] = 0;
    puVar6[3] = 0;
    puVar6[4] = param_1;
    *(undefined4 *)(puVar6 + 5) = 0x3f800000;
    puVar8 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar6;
    if (puVar8 != (undefined8 *)0x0) {
      (**(code **)*puVar8)(puVar8,1);
    }
  }
  local_res10 = FUN_1811316e0(0x1a0);
  uVar7 = FUN_181411e40(local_res10,DAT_1824c44dc,DAT_1824c3d8c,DAT_1824c44bc);
  puVar8 = (undefined8 *)param_1[99];
  param_1[99] = uVar7;
  if (puVar8 != (undefined8 *)0x0) {
    (**(code **)*puVar8)(puVar8,1);
  }
  local_60 = std::
             _Func_impl_no_alloc<<lambda_944df82b6467b334a2d0ded5f49455b7>,void,int,juce::Colour>::
             vftable;
  local_28 = &local_60;
  local_58 = param_1;
  FUN_181407070(param_1[99],&local_60);
  FUN_1811be290(param_1[100],param_1 + 0x1b);
  return param_1;
}



############ FUN_ 180585b20 size=660 ############

undefined8 *
FUN_180585b20(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  longlong *plVar1;
  undefined1 **ppuVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined1 *local_res18;
  undefined1 *local_res20;
  undefined **local_60;
  undefined8 *local_58;
  undefined ***local_28;
  
  puVar4 = param_1;
  FUN_1813453e0(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  puVar4[0x17] = 0;
  *puVar4 = Styled<juce::Component>::vftable;
  puVar4[0x16] = Styled<juce::Component>::vftable;
  *(undefined1 *)(puVar4 + 0x18) = 0;
  local_60 = std::_Func_impl_no_alloc<<lambda_b7fc9cd0d7ffb462e05c12f877dbf44c>,juce::Path*___ptr64>
             ::vftable;
  local_28 = &local_60;
  local_58 = puVar4;
  FUN_18057f2a0(puVar4 + 0x19,param_1,&local_60);
  *param_1 = CloudyBoxLayout<Styled<juce::Component>_>::vftable;
  param_1[0x16] = CloudyBoxLayout<Styled<juce::Component>_>::vftable;
  *(undefined4 *)(param_1 + 0x5f) = 0x40400000;
  *(undefined4 *)((longlong)param_1 + 0x2fc) = 0x3f170a3d;
  *(undefined4 *)(param_1 + 0x60) = 0x3ef0a3d7;
  *(undefined4 *)((longlong)param_1 + 0x304) = 0x3f4ccccd;
  *(undefined4 *)(param_1 + 0x61) = 0x3f4ccccd;
  *(undefined4 *)((longlong)param_1 + 0x30c) = 0x3f4ccccd;
  *(undefined4 *)(param_1 + 0x62) = 0x3f2b851f;
  *(undefined4 *)((longlong)param_1 + 0x314) = 0x3f800000;
  *(undefined4 *)(param_1 + 99) = 0x3f800000;
  *(undefined2 *)((longlong)param_1 + 0x31c) = 0x100;
  param_1[100] = 0;
  param_1[0x65] = 0;
  param_1[0x66] = 0;
  param_1[0x67] = 0;
  *(undefined4 *)(param_1 + 0x68) = 1;
  FUN_181252d20(param_1 + 0x69);
  FUN_181252d20(param_1 + 0x6a);
  local_res18 = &DAT_1821dbf98;
  local_res20 = &DAT_1821dbf98;
  plVar1 = param_1 + 0x6b;
  FUN_1815d7db0(plVar1,&local_res20,&local_res18);
  *(undefined4 *)(param_1 + 0xff) = 0;
  ppuVar2 = (undefined1 **)(param_1 + 0x100);
  *ppuVar2 = (undefined1 *)0x0;
  local_res18 = (undefined1 *)FUN_1811316e0(0x1a0);
  puVar4 = (undefined8 *)FUN_181411e40(local_res18,DAT_1824c4540,DAT_1824c3d8c,DAT_1824c44bc);
  if (ppuVar2 == &local_res18) {
    if (puVar4 == (undefined8 *)0x0) goto LAB_180585d03;
    puVar5 = (undefined8 *)*puVar4;
  }
  else {
    puVar3 = (undefined8 *)*ppuVar2;
    *ppuVar2 = (undefined1 *)puVar4;
    if (puVar3 == (undefined8 *)0x0) goto LAB_180585d03;
    puVar5 = (undefined8 *)*puVar3;
    puVar4 = puVar3;
  }
  (*(code *)*puVar5)(puVar4,1);
LAB_180585d03:
  local_60 = std::
             _Func_impl_no_alloc<<lambda_1e00cb6ae67cf9854f1c9f8e1cf85184>,void,int,juce::Colour>::
             vftable;
  local_28 = &local_60;
  local_58 = param_1;
  FUN_181407070(*ppuVar2,&local_60);
  if (param_1[0xd] == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar5 = juce::StandardCachedComponentImage::vftable;
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = param_1;
    *(undefined4 *)(puVar5 + 5) = 0x3f800000;
    puVar4 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar5;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  (**(code **)(*plVar1 + 0x58))(plVar1,1);
  FUN_181343cc0(param_1,plVar1,0xffffffff);
  *(byte *)(param_1 + 0x80) = *(byte *)(param_1 + 0x80) & 0xef | 8;
  return param_1;
}



############ FUN_ 1805857c0 size=642 ############

undefined8 *
FUN_1805857c0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined4 *param_4)

{
  longlong *plVar1;
  undefined1 **ppuVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined1 *local_68;
  undefined1 *local_60;
  undefined8 local_58;
  undefined **local_50;
  undefined8 *local_48;
  undefined ***local_18;
  
  local_58 = 0xfffffffffffffffe;
  FUN_1815aa800(param_1,param_2,*param_3,*param_4);
  local_50 = std::_Func_impl_no_alloc<<lambda_2bbe0a88916e489de924d978f40cf216>,juce::Path*___ptr64>
             ::vftable;
  local_18 = &local_50;
  local_48 = param_1;
  FUN_18057f2a0(param_1 + 0x20,param_1,&local_50);
  *param_1 = CloudyBoxLayout<CloudySliderBase>::vftable;
  param_1[0x16] = CloudyBoxLayout<CloudySliderBase>::vftable;
  param_1[0x19] = CloudyBoxLayout<CloudySliderBase>::vftable;
  *(undefined4 *)(param_1 + 0x66) = 0x40400000;
  *(undefined4 *)((longlong)param_1 + 0x334) = 0x3f170a3d;
  *(undefined4 *)(param_1 + 0x67) = 0x3ef0a3d7;
  *(undefined4 *)((longlong)param_1 + 0x33c) = 0x3f4ccccd;
  *(undefined4 *)(param_1 + 0x68) = 0x3f4ccccd;
  *(undefined4 *)((longlong)param_1 + 0x344) = 0x3f4ccccd;
  *(undefined4 *)(param_1 + 0x69) = 0x3f2b851f;
  *(undefined4 *)((longlong)param_1 + 0x34c) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x6a) = 0x3f800000;
  *(undefined2 *)((longlong)param_1 + 0x354) = 0x100;
  param_1[0x6b] = 0;
  param_1[0x6c] = 0;
  param_1[0x6d] = 0;
  param_1[0x6e] = 0;
  *(undefined4 *)(param_1 + 0x6f) = 1;
  FUN_181252d20(param_1 + 0x70);
  FUN_181252d20(param_1 + 0x71);
  local_68 = &DAT_1821dbf98;
  local_60 = &DAT_1821dbf98;
  plVar1 = param_1 + 0x72;
  FUN_1815d7db0(plVar1,&local_60,&local_68);
  *(undefined4 *)(param_1 + 0x106) = 0;
  ppuVar2 = (undefined1 **)(param_1 + 0x107);
  *ppuVar2 = (undefined1 *)0x0;
  local_60 = (undefined1 *)FUN_1811316e0(0x1a0);
  puVar4 = (undefined8 *)FUN_181411e40(local_60,DAT_1824c4540,DAT_1824c3d8c,DAT_1824c44bc);
  if (ppuVar2 == &local_60) {
    if (puVar4 == (undefined8 *)0x0) goto LAB_180585988;
    puVar5 = (undefined8 *)*puVar4;
  }
  else {
    puVar3 = (undefined8 *)*ppuVar2;
    *ppuVar2 = (undefined1 *)puVar4;
    if (puVar3 == (undefined8 *)0x0) goto LAB_180585988;
    puVar5 = (undefined8 *)*puVar3;
    puVar4 = puVar3;
  }
  (*(code *)*puVar5)(puVar4,1);
LAB_180585988:
  local_50 = std::
             _Func_impl_no_alloc<<lambda_1e1819f56c3f6fa96997f2f0f3e7c8e9>,void,int,juce::Colour>::
             vftable;
  local_18 = &local_50;
  local_48 = param_1;
  FUN_181407070(*ppuVar2,&local_50);
  if (param_1[0xd] == 0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar5 = juce::StandardCachedComponentImage::vftable;
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = param_1;
    *(undefined4 *)(puVar5 + 5) = 0x3f800000;
    puVar4 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar5;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  (**(code **)(*plVar1 + 0x58))(plVar1,1);
  FUN_181343cc0(param_1,plVar1,0xffffffff);
  *(byte *)(param_1 + 0x87) = *(byte *)(param_1 + 0x87) & 0xef | 8;
  return param_1;
}



############ FUN_ 18056b840 size=90 ############

undefined8 *
FUN_18056b840(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x130);
  uVar1 = FUN_181637840(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056b8a0 size=98 ############

undefined8 *
FUN_18056b8a0(undefined8 *param_1,undefined8 param_2,undefined4 *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 local_res10 [3];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10[0] = param_2;
  uVar1 = FUN_1811316e0(0xf8);
  FUN_18049c4e0(local_res10,"graphAndToolbarContainer");
  uVar1 = FUN_181413ea0(uVar1,local_res10,*param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056b910 size=151 ############

undefined8 *
FUN_18056b910(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6,undefined1 *param_7)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x6d0);
  uVar1 = FUN_1816140c0(uVar1,param_2,param_3,param_4,param_5,param_6,*param_7);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1816140c0 size=4214 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1816140c0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 *param_5,undefined4 *param_6,char param_7)

{
  ulonglong *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char *pcVar7;
  undefined8 uVar8;
  undefined4 *puVar9;
  longlong lVar10;
  longlong lVar11;
  undefined8 uVar12;
  undefined8 uVar13;
  undefined8 uVar14;
  undefined8 uVar15;
  undefined8 *puVar16;
  ulonglong uVar17;
  void *pvVar18;
  uint *puVar19;
  longlong *plVar20;
  ulonglong uVar21;
  uint uVar22;
  longlong *plVar23;
  ulonglong uVar24;
  ulonglong uVar25;
  char *_Dst;
  undefined1 auStack_2a8 [32];
  undefined8 local_288;
  undefined8 local_280;
  undefined8 local_278;
  undefined8 local_270;
  uint local_268;
  uint *local_260;
  undefined4 local_258;
  undefined4 local_254;
  undefined4 local_250;
  undefined4 local_24c;
  char *local_248;
  char *local_240;
  char *local_238;
  undefined4 *local_230;
  int local_228;
  char *local_220;
  char *local_218;
  char *local_210;
  char *local_208;
  char *local_200;
  char *local_1f8;
  undefined1 *local_1f0;
  undefined4 *local_1e8;
  undefined8 local_1e0;
  undefined8 local_1d8;
  undefined1 local_1d0 [8];
  undefined4 *local_1c8;
  undefined8 *local_1c0;
  undefined8 *local_1b8;
  char *local_1b0;
  undefined4 *local_1a8;
  undefined8 *local_1a0;
  undefined4 *local_198;
  undefined1 local_190 [8];
  undefined4 *local_188;
  void *local_180;
  undefined1 local_178 [8];
  undefined1 local_170 [8];
  undefined1 local_168 [8];
  undefined1 local_160 [8];
  char *local_158;
  char *local_150;
  undefined8 local_148;
  undefined8 local_140;
  longlong local_138;
  uint *local_130;
  uint *local_128;
  uint *local_120;
  uint *local_118;
  uint *local_110;
  undefined8 local_108;
  undefined1 local_100 [8];
  char *local_f8;
  char *local_f0;
  char *local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  char *local_d0;
  char **local_c8;
  char **local_c0;
  char **local_b8;
  char **local_b0;
  char **local_a8;
  char **local_a0;
  char *local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 *local_80;
  undefined1 local_59;
  ulonglong local_58 [3];
  
  local_88 = 0xfffffffffffffffe;
  local_58[0] = DAT_182615970 ^ (ulonglong)auStack_2a8;
  local_268 = 0;
  local_1e0 = param_2;
  local_1b8 = param_1;
  local_e0 = param_3;
  local_80 = param_1;
  FUN_18158ea10();
  param_1[0x62] = 0;
  *(undefined1 *)(param_1 + 99) = 0;
  *param_1 = Soothe2XYSliderArea::vftable;
  param_1[0x16] = Soothe2XYSliderArea::vftable;
  param_1[0x17] = Soothe2XYSliderArea::vftable;
  param_1[0x18] = Soothe2XYSliderArea::vftable;
  param_1[0x19] = Soothe2XYSliderArea::vftable;
  param_1[0x61] = Soothe2XYSliderArea::vftable;
  param_1[100] = Soothe2XYSliderArea::vftable;
  param_1[0x65] = Soothe2XYSliderArea::vftable;
  puVar16 = param_1 + 0x66;
  FUN_181600080(puVar16,param_1,param_2);
  uVar8 = FUN_1811f0330(param_3);
  param_1[0xce] = uVar8;
  *(undefined4 *)(param_1 + 0xcf) = 0xffffffff;
  FUN_1811e4250(param_1 + 0xd0,param_3);
  FUN_1811e4f60(param_1 + 0xd3,param_3);
  param_1[0xd6] = 0;
  param_1[0xd7] = 0;
  param_1[0xd8] = 0;
  param_1[0xd9] = 0;
  puVar9 = (undefined4 *)FUN_1811316e0(0x2a0);
  local_1f0 = local_168;
  local_230 = puVar9;
  FUN_18049c4e0(local_168,"enabled");
  FUN_18049c4e0(local_178,"on/off");
  lVar10 = FUN_181601d30(puVar9,local_178,local_168);
  lVar11 = lVar10 + 0x1e0;
  if (lVar10 == 0) {
    lVar11 = 0;
  }
  FUN_1815eeb30(puVar16,lVar11,*(undefined4 *)((longlong)param_1 + 0x5ec));
  puVar9 = (undefined4 *)FUN_1811316e0(0x2a0);
  local_1f0 = local_160;
  local_230 = puVar9;
  FUN_18049c4e0(local_160,"listen");
  FUN_18049c4e0(local_170,"listen");
  lVar10 = FUN_181601d30(puVar9,local_170,local_160);
  lVar11 = lVar10 + 0x1e0;
  if (lVar10 == 0) {
    lVar11 = 0;
  }
  FUN_1815eeb30(puVar16,lVar11,*(undefined4 *)((longlong)param_1 + 0x5ec));
  FUN_1815fe840(puVar16,param_1 + 100);
  FUN_181344f60(param_1,1);
  local_250 = CONCAT13(0x54,(int3)DAT_18262bb7c);
  lVar11 = FUN_18119aa60(param_1[0xce],"band solo on");
  uVar8 = FUN_18119aa60(param_1[0xce],"band0 mode");
  uVar12 = FUN_18119aa60(param_1[0xce],"band0 on");
  uVar13 = FUN_18119aa60(param_1[0xce],"band0 balance");
  uVar14 = FUN_18119aa60(param_1[0xce],"band0 q");
  uVar15 = FUN_18119aa60(param_1[0xce],"band0 freq");
  local_1c0 = (undefined8 *)FUN_1811316e0();
  local_1c0[7] = 0;
  *(undefined4 *)(local_1c0 + 7) = 0;
  local_268 = 6;
  *local_1c0 = uVar15;
  local_1c0[1] = 0;
  local_1c0[2] = uVar14;
  local_1c0[3] = uVar13;
  local_1c0[4] = uVar12;
  local_1c0[5] = uVar8;
  local_1c0[6] = lVar11;
  if (lVar11 != 0) {
    *(undefined4 *)(local_1c0 + 7) = 1;
  }
  local_230 = (undefined4 *)FUN_1811316e0(0x28);
  uVar4 = param_5[1];
  uVar5 = param_5[2];
  uVar6 = param_5[3];
  uVar8 = *(undefined8 *)(param_5 + 4);
  uVar2 = *param_6;
  *local_230 = *param_5;
  local_230[1] = uVar4;
  local_230[2] = uVar5;
  local_230[3] = uVar6;
  *(undefined8 *)(local_230 + 4) = uVar8;
  local_230[6] = uVar2;
  local_230[7] = local_250;
  *(undefined1 *)(local_230 + 8) = 1;
  local_1c8 = local_230;
  puVar9 = (undefined4 *)FUN_1811316e0(0x100);
  local_230 = puVar9;
  FUN_18049c4e0(local_1d0,"eq node 0");
  uVar8 = FUN_181595b30(puVar9,local_1d0,&local_1c0,&local_1c8);
  FUN_18157f7a0(param_1,uVar8);
  if (local_1c8 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_1c8);
  }
  if (local_1c0 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_1c0);
  }
  puVar9 = (undefined4 *)FUN_1811316e0(0x2c0);
  local_258 = 0xffc8dceb;
  local_230 = puVar9;
  uVar8 = FUN_18119aa60(param_1[0xce],"band0 mode");
  local_288 = (ulonglong)local_288._4_4_ << 0x20;
  uVar8 = __RTDynamicCast(uVar8,0,&ParameterFloat::RTTI_Type_Descriptor,
                          &ParameterChoice::RTTI_Type_Descriptor);
  local_280 = CONCAT44(local_280._4_4_,local_258);
  local_108 = FUN_1814fee80(puVar9,uVar8,&DAT_182673f90,local_1e0);
  if (param_1[0xd8] == param_1[0xd7]) {
    FUN_1804803a0(param_1 + 0xd6,param_1[0xd7],&local_108);
  }
  else {
    *(undefined8 *)param_1[0xd7] = local_108;
    param_1[0xd7] = param_1[0xd7] + 8;
  }
  local_228 = 1;
  local_c8 = &local_240;
  local_c0 = &local_220;
  local_b8 = &local_218;
  local_b0 = &local_210;
  local_a8 = &local_208;
  local_a0 = &local_200;
  local_254 = 0xffc8dceb;
  local_198 = param_6 + 1;
  do {
    lVar11 = FUN_181233e10(local_58,local_228);
    FUN_180495150(&local_1f8,lVar11,&local_59 + -lVar11);
    FUN_18049c4e0(&local_238,&DAT_1822cf694);
    pcVar7 = local_238;
    if (*local_238 == '\0') {
      if ((*(uint *)(local_1f8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_1f8 + -0x10) = *(int *)(local_1f8 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      local_238 = local_1f8;
      UNLOCK();
      puVar19 = (uint *)(pcVar7 + -0x10);
      if ((*puVar19 & 0x30000000) == 0) {
        LOCK();
        uVar22 = *puVar19;
        *puVar19 = *puVar19 - 1;
        UNLOCK();
        if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar19);
        }
      }
    }
    else {
      lVar11 = -1;
      do {
        lVar11 = lVar11 + 1;
      } while (local_1f8[lVar11] != '\0');
      local_98 = local_1f8 + lVar11;
      FUN_181232e20(&local_238);
    }
    pcVar7 = local_238;
    local_248 = local_238;
    if ((*(uint *)(local_238 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_238 + -0x10) = *(int *)(local_238 + -0x10) + 1;
      UNLOCK();
    }
    local_268 = local_268 | 8;
    puVar19 = (uint *)(local_238 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_240 = local_238;
    if ((*(uint *)(local_238 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_238 + -0x10) = *(int *)(local_238 + -0x10) + 1;
      UNLOCK();
    }
    lVar11 = -1;
    do {
      lVar10 = lVar11;
      lVar11 = lVar10 + 1;
    } while (local_238[lVar11] != '\0');
    FUN_1812342b0(&local_240,lVar10 + 6);
    _Dst = local_240 + (int)lVar11;
    memcpy(_Dst," mode",5);
    _Dst[5] = '\0';
    local_f8 = local_240;
    local_260 = (uint *)(local_240 + -0x10);
    if ((*local_260 & 0x30000000) == 0) {
      LOCK();
      *local_260 = *local_260 + 1;
      UNLOCK();
    }
    local_268 = local_268 | 0x10;
    puVar19 = (uint *)(local_240 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_220 = local_248;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_220,&DAT_182217fe4,&DAT_182217fe7);
    local_f0 = local_220;
    local_110 = (uint *)(local_220 + -0x10);
    if ((*local_110 & 0x30000000) == 0) {
      LOCK();
      *local_110 = *local_110 + 1;
      UNLOCK();
    }
    local_268 = local_268 | 0x20;
    puVar19 = (uint *)(local_220 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_218 = local_248;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_218," balance","");
    local_e8 = local_218;
    local_118 = (uint *)(local_218 + -0x10);
    if ((*local_118 & 0x30000000) == 0) {
      LOCK();
      *local_118 = *local_118 + 1;
      UNLOCK();
    }
    local_268 = local_268 | 0x40;
    puVar19 = (uint *)(local_218 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_210 = local_248;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_210,&DAT_1822178c4,&DAT_1822178c6);
    local_d0 = local_210;
    local_120 = (uint *)(local_210 + -0x10);
    if ((*local_120 & 0x30000000) == 0) {
      LOCK();
      *local_120 = *local_120 + 1;
      UNLOCK();
    }
    local_268 = local_268 | 0x80;
    puVar19 = (uint *)(local_210 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_208 = local_248;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_208," sens","");
    local_158 = local_208;
    local_128 = (uint *)(local_208 + -0x10);
    if ((*local_128 & 0x30000000) == 0) {
      LOCK();
      *local_128 = *local_128 + 1;
      UNLOCK();
    }
    local_268 = local_268 | 0x100;
    puVar19 = (uint *)(local_208 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_200 = local_248;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_200,&DAT_1822cf044,&DAT_1822cf049);
    local_150 = local_200;
    local_130 = (uint *)(local_200 + -0x10);
    if ((*local_130 & 0x30000000) == 0) {
      LOCK();
      *local_130 = *local_130 + 1;
      UNLOCK();
    }
    local_268 = local_268 | 0x200;
    puVar19 = (uint *)(local_200 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
    local_138 = FUN_18119aa60(param_1[0xce],"band solo on");
    local_140 = FUN_18119aa60(param_1[0xce],local_f8);
    local_148 = FUN_18119aa60(param_1[0xce],local_f0);
    uVar8 = FUN_18119aa60(param_1[0xce],local_e8);
    puVar16 = local_1b8;
    uVar12 = FUN_18119aa60(local_1b8[0xce],local_d0);
    uVar13 = FUN_18119aa60(puVar16[0xce],local_158);
    uVar14 = FUN_18119aa60(puVar16[0xce],local_150);
    local_1a0 = (undefined8 *)FUN_1811316e0(0x40);
    local_1a0[7] = 0;
    *(undefined4 *)(local_1a0 + 7) = 0;
    local_268 = local_268 | 0xc00;
    *local_1a0 = uVar14;
    local_1a0[1] = uVar13;
    local_1a0[2] = uVar12;
    local_1a0[3] = uVar8;
    local_1a0[4] = local_148;
    local_1a0[5] = local_140;
    local_1a0[6] = local_138;
    if (local_138 != 0) {
      *(undefined4 *)(local_1a0 + 7) = 1;
    }
    if ((*local_130 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *local_130;
      *local_130 = *local_130 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_130);
      }
    }
    if ((*local_128 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *local_128;
      *local_128 = *local_128 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_128);
      }
    }
    if ((*local_120 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *local_120;
      *local_120 = *local_120 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_120);
      }
    }
    if ((*local_118 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *local_118;
      *local_118 = *local_118 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_118);
      }
    }
    if ((*local_110 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *local_110;
      *local_110 = *local_110 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_110);
      }
    }
    if ((*local_260 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *local_260;
      *local_260 = *local_260 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_260);
      }
    }
    local_260 = (uint *)FUN_1811316e0(0x28);
    puVar9 = local_198;
    uVar4 = param_5[1];
    uVar5 = param_5[2];
    uVar6 = param_5[3];
    uVar8 = *(undefined8 *)(param_5 + 4);
    uVar2 = *local_198;
    *local_260 = *param_5;
    local_260[1] = uVar4;
    local_260[2] = uVar5;
    local_260[3] = uVar6;
    *(undefined8 *)(local_260 + 4) = uVar8;
    local_260[6] = uVar2;
    local_260[7] = local_250;
    *(undefined1 *)(local_260 + 8) = 0;
    local_1a8 = local_260;
    uVar8 = FUN_1811316e0(0x100);
    local_90 = uVar8;
    uVar12 = FUN_181246550(local_100,"eq node ",&local_1f8);
    uVar8 = FUN_181595b30(uVar8,uVar12,&local_1a0,&local_1a8);
    param_1 = local_1b8;
    FUN_18157f7a0(local_1b8,uVar8);
    uVar8 = FUN_1811316e0(0x2c0);
    local_1b0 = local_248;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    local_d8 = uVar8;
    puVar16 = (undefined8 *)FUN_1812465e0(&local_1f0,&local_1b0," mode");
    uVar22 = local_268;
    local_268 = local_268 | 1;
    local_1e8 = (undefined4 *)*puVar16;
    uVar12 = FUN_18119aa60(param_1[0xce]);
    local_288 = local_288 & 0xffffffff00000000;
    uVar12 = __RTDynamicCast(uVar12,0,&ParameterFloat::RTTI_Type_Descriptor,
                             &ParameterChoice::RTTI_Type_Descriptor);
    local_280 = CONCAT44(local_280._4_4_,local_254);
    local_1d8 = FUN_1814fee80(uVar8,uVar12,&DAT_182673f68,local_1e0);
    puVar1 = param_1 + 0xd6;
    if (param_1[0xd8] == param_1[0xd7]) {
      FUN_1804803a0(puVar1,param_1[0xd7],&local_1d8);
    }
    else {
      *(undefined8 *)param_1[0xd7] = local_1d8;
      param_1[0xd7] = param_1[0xd7] + 8;
    }
    local_268 = uVar22 & 0xfffffffe;
    FUN_180495200(local_1f0);
    if (local_1a8 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(local_1a8);
    }
    if (local_1a0 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(local_1a0);
    }
    FUN_180495200(local_248);
    FUN_180495200(local_1f8);
    local_228 = local_228 + 1;
    local_198 = puVar9 + 1;
  } while (local_228 < 5);
  uVar8 = FUN_18119aa60(param_1[0xce],"band solo on");
  uVar12 = FUN_18119aa60(param_1[0xce],"band5 mode");
  uVar13 = FUN_18119aa60(param_1[0xce],"band5 on");
  uVar17 = FUN_18119aa60(param_1[0xce],"band5 balance");
  uVar14 = FUN_18119aa60(param_1[0xce],"band5 q");
  uVar15 = FUN_18119aa60(param_1[0xce],"band5 freq");
  local_288 = uVar17;
  local_280 = uVar13;
  local_278 = uVar12;
  local_270 = uVar8;
  FUN_18058eb30(&local_180,uVar15,0,uVar14);
  local_1e8 = (undefined4 *)FUN_1811316e0(0x28);
  uVar4 = param_5[1];
  uVar5 = param_5[2];
  uVar6 = param_5[3];
  uVar8 = *(undefined8 *)(param_5 + 4);
  uVar2 = param_6[5];
  *local_1e8 = *param_5;
  local_1e8[1] = uVar4;
  local_1e8[2] = uVar5;
  local_1e8[3] = uVar6;
  *(undefined8 *)(local_1e8 + 4) = uVar8;
  local_1e8[6] = uVar2;
  local_1e8[7] = local_250;
  *(undefined1 *)(local_1e8 + 8) = 1;
  local_188 = local_1e8;
  uVar8 = FUN_1811316e0(0x100);
  local_1e8 = (undefined4 *)uVar8;
  FUN_18049c4e0(local_190,"eq node 5");
  uVar8 = FUN_181595b30(uVar8,local_190,&local_180,&local_188);
  FUN_18157f7a0(param_1,uVar8);
  if (local_188 != (undefined4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_188);
  }
  if (local_180 == (void *)0x0) {
    uVar8 = FUN_1811316e0(0x2c0);
    local_24c = 0xffc8dceb;
    local_1e8 = (undefined4 *)uVar8;
    uVar12 = FUN_18119aa60(param_1[0xce],"band5 mode");
    uVar17 = 0;
    local_288 = local_288 & 0xffffffff00000000;
    uVar12 = __RTDynamicCast(uVar12,0,&ParameterFloat::RTTI_Type_Descriptor,
                             &ParameterChoice::RTTI_Type_Descriptor);
    local_280 = CONCAT44(local_280._4_4_,local_24c);
    local_230 = (undefined4 *)FUN_1814fee80(uVar8,uVar12,&DAT_182673f50,local_1e0);
    if (param_1[0xd8] == param_1[0xd7]) {
      FUN_1804803a0(puVar1,param_1[0xd7],&local_230);
    }
    else {
      *(undefined4 **)param_1[0xd7] = local_230;
      param_1[0xd7] = param_1[0xd7] + 8;
    }
    plVar23 = (longlong *)*puVar1;
    uVar25 = (param_1[0xd7] - (longlong)plVar23) + 7U >> 3;
    if ((longlong *)param_1[0xd7] < plVar23) {
      uVar25 = uVar17;
    }
    uVar24 = uVar17;
    if (uVar25 != 0) {
      do {
        uVar21 = *plVar23 + 0x1e0;
        if (*plVar23 == 0) {
          uVar21 = uVar17;
        }
        FUN_1815eeb30(param_1 + 0x66,uVar21,*(undefined4 *)((longlong)param_1 + 0x5ec));
        plVar23 = plVar23 + 1;
        uVar24 = uVar24 + 1;
      } while (uVar24 != uVar25);
    }
    if (param_7 == '\0') {
      uVar8 = FUN_1811316e0(0x2e8);
      local_1e8 = (undefined4 *)uVar8;
      uVar12 = FUN_1811f0330(local_e0);
      uVar8 = FUN_1816116b0(uVar8,uVar12);
      puVar16 = (undefined8 *)param_1[0xd9];
      param_1[0xd9] = uVar8;
      if (puVar16 != (undefined8 *)0x0) {
        (**(code **)*puVar16)(puVar16,1);
      }
      FUN_18134bf20(param_1,param_1[0xd9],0xffffffff);
    }
    if (param_1 != (undefined8 *)0xfffffffffffffcd8) {
      plVar23 = (longlong *)param_1[0x1a];
      iVar3 = *(int *)((longlong)param_1 + 0xdc);
      for (plVar20 = plVar23; plVar20 != plVar23 + iVar3; plVar20 = plVar20 + 1) {
        if (param_1 + 0x65 == (undefined8 *)*plVar20) {
        }
      }
      if ((int)*(uint *)(param_1 + 0x1b) < iVar3 + 1) {
        uVar22 = iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8;
        if (*(uint *)(param_1 + 0x1b) != uVar22) {
          if ((int)uVar22 < 1) {
                    /* WARNING: Subroutine does not return */
            free(plVar23);
          }
          if (plVar23 == (longlong *)0x0) {
            pvVar18 = malloc((longlong)(int)uVar22 * 8);
            param_1[0x1a] = pvVar18;
          }
          else {
            pvVar18 = realloc(plVar23,(longlong)(int)uVar22 * 8);
            param_1[0x1a] = pvVar18;
          }
        }
        *(uint *)(param_1 + 0x1b) = uVar22;
      }
      iVar3 = *(int *)((longlong)param_1 + 0xdc);
      *(int *)((longlong)param_1 + 0xdc) = iVar3 + 1;
      *(undefined8 **)(param_1[0x1a] + (longlong)iVar3 * 8) = param_1 + 0x65;
    }
  }
                    /* WARNING: Subroutine does not return */
  free(local_180);
}



############ FUN_ 18058eb30 size=184 ############

longlong *
FUN_18058eb30(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6,undefined8 param_7,longlong param_8)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0();
  puVar1[7] = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  *(undefined4 *)(puVar1 + 7) = 0;
  *param_1 = (longlong)puVar1;
  *puVar1 = param_2;
  *(undefined8 *)(*param_1 + 8) = param_3;
  *(undefined8 *)(*param_1 + 0x10) = param_4;
  *(undefined8 *)(*param_1 + 0x18) = param_5;
  *(undefined8 *)(*param_1 + 0x20) = param_6;
  *(undefined8 *)(*param_1 + 0x28) = param_7;
  *(longlong *)(*param_1 + 0x30) = param_8;
  if (param_8 != 0) {
    *(undefined4 *)(*param_1 + 0x38) = 1;
  }
  return param_1;
}



############ FUN_ 1814fee80 size=786 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814fee80(undefined8 *param_1,undefined8 param_2,longlong *param_3,undefined8 param_4,
                  undefined8 param_5,undefined4 param_6)

{
  undefined1 **ppuVar1;
  undefined1 **ppuVar2;
  undefined8 *puVar3;
  undefined1 *puVar4;
  undefined ***pppuVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined ***pppuVar9;
  undefined1 auStack_138 [32];
  undefined1 local_118 [8];
  undefined1 *local_110;
  undefined1 local_108 [8];
  undefined8 local_100;
  undefined8 uStack_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 *local_e0;
  undefined8 *local_d8;
  undefined **local_c8;
  undefined8 *local_c0;
  undefined ***local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_e8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_138;
  local_d8 = &local_100;
  local_110 = local_118;
  local_100 = 0;
  uStack_f8 = 0;
  local_f0 = 0;
  local_e0 = param_1;
  FUN_18049c4e0(local_118,"bandMode");
  FUN_18049c4e0(local_108,"bandMode");
  FUN_181601a20(param_1,local_108,local_118,&local_100);
  *param_1 = BandModePopupMenuItem::vftable;
  param_1[0x16] = BandModePopupMenuItem::vftable;
  param_1[0x39] = BandModePopupMenuItem::vftable;
  param_1[0x3c] = BandModePopupMenuItem::vftable;
  param_1[0x40] = BandModePopupMenuItem::vftable;
  ppuVar1 = (undefined1 **)(param_1 + 0x54);
  *ppuVar1 = (undefined1 *)0x0;
  ppuVar2 = (undefined1 **)(param_1 + 0x55);
  *ppuVar2 = (undefined1 *)0x0;
  *(int *)(param_1 + 0x56) = (int)(param_3[1] - *param_3 >> 2);
  *(undefined4 *)((longlong)param_1 + 0x2b4) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x57) = param_6;
  local_110 = (undefined1 *)FUN_1811316e0(0xf8);
  puVar7 = (undefined8 *)FUN_1813ec2b0(local_110);
  if (ppuVar1 == &local_110) {
    if (puVar7 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar7;
      goto LAB_1814fefe2;
    }
  }
  else {
    puVar3 = (undefined8 *)*ppuVar1;
    *ppuVar1 = (undefined1 *)puVar7;
    if (puVar3 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar3;
      puVar7 = puVar3;
LAB_1814fefe2:
      (*(code *)*puVar8)(puVar7,1);
    }
  }
  local_110 = (undefined1 *)FUN_1811316e0(0x168);
  puVar7 = (undefined8 *)FUN_1815073e0(local_110,param_2,param_3,param_4);
  if (ppuVar2 == &local_110) {
    if (puVar7 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar7;
      goto LAB_1814ff031;
    }
  }
  else {
    puVar3 = (undefined8 *)*ppuVar2;
    *ppuVar2 = (undefined1 *)puVar7;
    if (puVar3 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar3;
      puVar7 = puVar3;
LAB_1814ff031:
      (*(code *)*puVar8)(puVar7,1);
    }
  }
  puVar4 = *ppuVar2;
  pppuVar9 = (undefined ***)(puVar4 + 0xe8);
  local_c8 = std::_Func_impl_no_alloc<<lambda_b7f4678175382cc3e283cd6ff0595884>,void>::vftable;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_c0 = param_1;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824b8ea8)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar5 = *(undefined ****)(puVar4 + 0x120);
  if (pppuVar5 != (undefined ***)0x0) {
    if (pppuVar5 == pppuVar9) {
      local_90 = (undefined ***)(*(code *)(*pppuVar5)[1])(pppuVar5,&local_c8);
      pppuVar5 = *(undefined ****)(puVar4 + 0x120);
      if (pppuVar5 == (undefined ***)0x0) goto LAB_1814ff0d2;
      (*(code *)(*pppuVar5)[4])(pppuVar5,pppuVar5 != pppuVar9);
      pppuVar5 = local_90;
    }
    local_90 = pppuVar5;
    *(undefined8 *)(puVar4 + 0x120) = 0;
  }
LAB_1814ff0d2:
  FUN_180488560(pppuVar9,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  plVar6 = (longlong *)*ppuVar1;
  if (plVar6 != (longlong *)0x0) {
    (**(code **)(*plVar6 + 0x58))(plVar6,1);
    FUN_181343cc0(param_1,plVar6,0xffffffff);
  }
  plVar6 = (longlong *)*ppuVar2;
  if (plVar6 != (longlong *)0x0) {
    (**(code **)(*plVar6 + 0x58))(plVar6,1);
    FUN_181343cc0(param_1,plVar6,0xffffffff);
  }
  *(undefined4 *)(*ppuVar1 + 0xf0) = 0x1010000;
}



############ FUN_ 180583530 size=708 ############

longlong * FUN_180583530(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  uint *_Memory;
  uint uVar2;
  longlong *plVar3;
  longlong lVar4;
  void *_Memory_00;
  longlong lVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  longlong lVar12;
  undefined8 *puVar13;
  longlong lVar14;
  undefined8 *local_58;
  undefined4 local_50;
  uint uStack_4c;
  
  plVar1 = (longlong *)(param_1 + 8);
  iVar7 = FUN_18057ee50(param_2,*(undefined4 *)(param_1 + 0x14));
  lVar14 = *param_2;
  _Memory = (uint *)(lVar14 + -0x10);
  plVar3 = *(longlong **)((longlong)iVar7 * 8 + *plVar1);
  plVar9 = plVar3;
  if ((*(uint *)(lVar14 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  do {
    if (plVar9 == (longlong *)0x0) {
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      plVar9 = (longlong *)FUN_1811316e0(0x18);
      lVar14 = *param_2;
      *plVar9 = lVar14;
      if ((*(uint *)(lVar14 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar14 + -0x10) = *(int *)(lVar14 + -0x10) + 1;
        UNLOCK();
      }
      plVar9[1] = 0;
      plVar9[2] = (longlong)plVar3;
      if (-1 < iVar7) {
        if (iVar7 < *(int *)(param_1 + 0x14)) {
          *(longlong **)((longlong)iVar7 * 8 + *plVar1) = plVar9;
        }
        else {
          FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
          iVar7 = *(int *)(param_1 + 0x14);
          *(int *)(param_1 + 0x14) = iVar7 + 1;
          *(longlong **)(*plVar1 + (longlong)iVar7 * 8) = plVar9;
        }
      }
      *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
      if ((*(int *)(param_1 + 0x14) * 3) / 2 < *(int *)(param_1 + 0x18)) {
        puVar10 = (undefined8 *)0x0;
        uVar2 = *(int *)(param_1 + 0x14) * 2;
        local_58 = (undefined8 *)0x0;
        local_50 = 0;
        uStack_4c = 0;
        puVar13 = puVar10;
        if (0 < (int)uVar2) {
          FUN_18047e060(&local_58,uVar2);
          uVar6 = uStack_4c;
          puVar13 = local_58;
          if (uStack_4c != 0) {
            memmove(local_58 + (int)uVar2,local_58,(longlong)(int)uStack_4c << 3);
          }
          if (0 < (int)uVar2) {
            uVar11 = (ulonglong)uVar2;
            puVar10 = puVar13;
            do {
              *puVar10 = 0;
              uVar11 = uVar11 - 1;
              puVar10 = puVar10 + 1;
            } while (uVar11 != 0);
          }
          uStack_4c = uVar6 + uVar2;
          puVar10 = (undefined8 *)(ulonglong)uStack_4c;
        }
        iVar8 = (int)puVar10;
        iVar7 = *(int *)(param_1 + 0x14) + -1;
        lVar14 = (longlong)iVar7;
        if (-1 < iVar7) {
          do {
            lVar4 = *(longlong *)(*plVar1 + lVar14 * 8);
            while (lVar5 = lVar4, iVar8 = (int)puVar10, lVar5 != 0) {
              iVar7 = FUN_18057ee50(lVar5,uVar2);
              lVar4 = *(longlong *)(lVar5 + 0x10);
              *(undefined8 *)(lVar5 + 0x10) = puVar13[iVar7];
              if (-1 < iVar7) {
                if (iVar7 < iVar8) {
                  puVar13[iVar7] = lVar5;
                }
                else {
                  FUN_18047e060(&local_58,iVar8 + 1);
                  lVar12 = (longlong)(int)uStack_4c;
                  uStack_4c = uStack_4c + 1;
                  puVar10 = (undefined8 *)(ulonglong)uStack_4c;
                  local_58[lVar12] = lVar5;
                  puVar13 = local_58;
                }
              }
            }
            lVar14 = lVar14 + -1;
          } while (-1 < lVar14);
        }
        _Memory_00 = (void *)*plVar1;
        *plVar1 = (longlong)puVar13;
        *(undefined4 *)(param_1 + 0x10) = local_50;
        *(int *)(param_1 + 0x14) = iVar8;
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
LAB_1805837e3:
      return plVar9 + 1;
    }
    if (*plVar9 == lVar14) {
      iVar8 = 0;
    }
    else {
      iVar8 = FUN_18048cbc0(*plVar9,lVar14);
    }
    if (iVar8 == 0) {
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      goto LAB_1805837e3;
    }
    plVar9 = (longlong *)plVar9[2];
  } while( true );
}



############ FUN_ 181595b30 size=921 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181595b30(undefined8 *param_1,longlong *param_2,undefined8 *param_3,undefined8 *param_4)

{
  undefined8 *puVar1;
  longlong **pplVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  uint *_Memory;
  longlong *plVar10;
  undefined1 auStack_e8 [32];
  longlong *local_c8;
  longlong *local_c0;
  longlong *plStack_b8;
  longlong local_b0;
  longlong *local_a8;
  longlong *local_a0;
  undefined8 local_98;
  undefined8 *local_90;
  longlong *local_88;
  undefined8 *local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  ulonglong local_50 [2];
  
  local_98 = 0xfffffffffffffffe;
  local_50[0] = DAT_182615970 ^ (ulonglong)auStack_e8;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  puVar1 = param_1 + 0x16;
  *param_1 = XYSlider::vftable;
  *puVar1 = XYSlider::vftable;
  uVar4 = *param_3;
  *param_3 = 0;
  param_1[0x17] = uVar4;
  uVar4 = *param_4;
  *param_4 = 0;
  param_1[0x18] = uVar4;
  pplVar2 = (longlong **)(param_1 + 0x19);
  *pplVar2 = (longlong *)0x0;
  *(undefined1 *)(param_1 + 0x1a) = *(undefined1 *)(param_1[0x18] + 0x20);
  *(undefined8 *)((longlong)param_1 + 0xd4) = 0;
  *(undefined8 *)((longlong)param_1 + 0xdc) = 0;
  *(undefined4 *)((longlong)param_1 + 0xe4) = 0x40d66666;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  local_a8 = param_2;
  local_90 = param_1;
  local_88 = param_2;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2);
  uVar4 = param_1[0x18];
  uVar5 = param_1[0x17];
  local_c8 = (longlong *)FUN_1811316e0(1000);
  plVar7 = (longlong *)FUN_1815aa120(local_c8,uVar5,uVar4);
  if (pplVar2 == &local_a0) {
    if (plVar7 == (longlong *)0x0) goto LAB_181595cc5;
    puVar8 = (undefined8 *)*plVar7;
  }
  else {
    plVar10 = *pplVar2;
    *pplVar2 = plVar7;
    if (plVar10 == (longlong *)0x0) goto LAB_181595cc5;
    puVar8 = (undefined8 *)*plVar10;
    plVar7 = plVar10;
  }
  (*(code *)*puVar8)(plVar7,1);
LAB_181595cc5:
  (**(code **)(**pplVar2 + 0x50))(*pplVar2,param_2);
  plVar7 = *pplVar2;
  if (plVar7 != (longlong *)0x0) {
    (**(code **)(*plVar7 + 0x58))(plVar7,1);
    FUN_181343cc0(param_1,plVar7,0xffffffff);
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x18;
  FUN_1815924a0(param_1,*(undefined4 *)((longlong)param_1 + 0xe4));
  puVar8 = (undefined8 *)param_1[0x17];
  local_78 = *puVar8;
  local_70 = puVar8[1];
  local_68 = puVar8[2];
  local_60 = puVar8[3];
  local_58 = puVar8[4];
  local_c0 = (longlong *)0x0;
  plStack_b8 = (longlong *)0x0;
  local_b0 = 0;
  FUN_180535640(&local_c0,&local_78,local_50);
  plVar7 = local_c0;
  plVar10 = local_c0;
  if (local_c0 != plStack_b8) {
    do {
      lVar6 = *plVar10;
      if (lVar6 != 0) {
        local_80 = puVar1;
        plVar9 = (longlong *)FUN_1811316e0(0x50);
        *plVar9 = lVar6;
        plVar9[1] = (longlong)puVar1;
        plVar9[2] = (longlong)
                    std::_Func_impl_no_alloc<<lambda_d0c96f0cf5ca6df18cd759bcc4deb312>,void>::
                    vftable;
        plVar9[3] = (longlong)plVar9;
        plVar9[9] = (longlong)(plVar9 + 2);
        local_a0 = plVar9;
        FUN_1811be290(*plVar9,plVar9[1]);
        puVar8 = (undefined8 *)param_1[0x1e];
        if ((undefined8 *)param_1[0x1f] == puVar8) {
          local_c8 = plVar9;
          FUN_180584e30(param_1 + 0x1d,puVar8,&local_c8);
        }
        else {
          local_c8 = (longlong *)0x0;
          *puVar8 = plVar9;
          param_1[0x1e] = param_1[0x1e] + 8;
        }
        plVar9 = local_c8;
        if (local_c8 != (longlong *)0x0) {
          plVar7 = local_c8 + 2;
          if ((longlong *)local_c8[9] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
            std::_Xbad_function_call();
          }
          (**(code **)(*(longlong *)local_c8[9] + 0x10))();
          plVar10 = (longlong *)plVar9[9];
          if (plVar10 != (longlong *)0x0) {
            (**(code **)(*plVar10 + 0x20))(plVar10,plVar10 != plVar7);
            plVar9[9] = 0;
          }
                    /* WARNING: Subroutine does not return */
          free(plVar9);
        }
      }
      plVar10 = plVar10 + 1;
    } while (plVar10 != plStack_b8);
  }
  if (plVar7 == (longlong *)0x0) {
    _Memory = (uint *)(*local_a8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  plVar10 = plVar7;
  if ((0xfff < (ulonglong)((local_b0 - (longlong)plVar7 >> 3) * 8)) &&
     (plVar10 = (longlong *)plVar7[-1],
     0x1f < (ulonglong)((longlong)plVar7 + (-8 - (longlong)plVar10)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(plVar10);
}



############ FUN_ 1815aa120 size=796 ############

undefined8 * FUN_1815aa120(undefined8 *param_1,longlong *param_2,undefined8 param_3)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  longlong local_res10;
  longlong *local_res18;
  undefined8 local_c8;
  undefined4 local_c0;
  undefined8 local_b8;
  undefined **local_b0;
  undefined8 *local_a8;
  undefined ***local_78;
  undefined **local_70;
  undefined8 *local_68;
  undefined ***local_38;
  
  local_b8 = 0xfffffffffffffffe;
  puVar4 = param_1;
  FUN_18056b680();
  local_b0 = std::_Func_impl_no_alloc<<lambda_73b245e47723466bd66d92b4f69d0c82>,juce::Path*___ptr64>
             ::vftable;
  local_78 = &local_b0;
  local_a8 = puVar4;
  FUN_18057f2a0(puVar4 + 0x1c,param_1,&local_b0);
  param_1[0x1a] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x1b) = 0;
  *param_1 = XYThumb::vftable;
  param_1[0x16] = XYThumb::vftable;
  param_1[0x19] = XYThumb::vftable;
  param_1[0x62] = 0;
  param_1[99] = param_3;
  param_1[100] = param_2;
  param_1[0x65] = *param_2;
  param_1[0x66] = param_2[1];
  param_1[0x67] = param_2[2];
  param_1[0x68] = param_2[3];
  param_1[0x69] = param_2[4];
  param_1[0x6a] = param_2[5];
  param_1[0x6b] = param_2[6];
  local_res10 = FUN_1811316e0(0x1a0);
  local_c8 = DAT_18235df78;
  local_c0 = DAT_18235df80;
  uVar3 = FUN_181408750(local_res10,&local_c8);
  param_1[0x6c] = uVar3;
  puVar4 = (undefined8 *)param_1[99];
  *(undefined4 *)(param_1 + 0x6d) = *(undefined4 *)(puVar4 + 3);
  *(undefined4 *)((longlong)param_1 + 0x36c) = *(undefined4 *)((longlong)puVar4 + 0x1c);
  param_1[0x6e] = *puVar4;
  param_1[0x6f] = puVar4[1];
  *(undefined1 *)(param_1 + 0x70) = 0;
  *(undefined8 *)((longlong)param_1 + 900) = 0;
  *(undefined8 *)((longlong)param_1 + 0x38c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x394) = 0;
  *(undefined8 *)((longlong)param_1 + 0x39c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x3a4) = 0;
  *(undefined8 *)((longlong)param_1 + 0x3ac) = 0;
  *(undefined1 *)((longlong)param_1 + 0x3b4) = 0;
  param_1[0x77] = 0;
  *(undefined4 *)(param_1 + 0x78) = 0;
  *(undefined4 *)((longlong)param_1 + 0x3c4) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x79) = 0x3f800000;
  *(undefined2 *)((longlong)param_1 + 0x3cc) = 0;
  *(undefined4 *)(param_1 + 0x7a) = 0x3f800000;
  *(undefined2 *)((longlong)param_1 + 0x3d4) = 0;
  param_1[0x7b] = 500;
  param_1[0x7c] = 0;
  local_res10 = *(longlong *)(*param_2 + 0x60);
  if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
    UNLOCK();
  }
  local_res18 = &local_res10;
  FUN_181232e20(&local_res10,&DAT_1822bc2f4,&DAT_1822bc2fa);
  local_res18 = (longlong *)local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  puVar5 = (uint *)(local_res10 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[2];
  param_1[2] = local_res10;
  UNLOCK();
  puVar5 = (uint *)(lVar2 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_70 = std::
             _Func_impl_no_alloc<<lambda_942f837225f022970ed0627dd74ec4a8>,void,juce::StringRef,float>
             ::vftable;
  local_38 = &local_70;
  local_68 = param_1;
  FUN_181410000(param_1[0x6c],&local_70);
  FUN_181411b10(param_1[0x6c],"scaling",DAT_1824c3df0);
  return param_1;
}



############ FUN_ 181601a20 size=767 ############

undefined8 *
FUN_181601a20(undefined8 *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  uint *puVar7;
  longlong local_b8;
  undefined8 *local_b0;
  longlong local_a8;
  void *local_a0;
  longlong local_98 [2];
  undefined2 local_88;
  undefined1 *local_80;
  undefined1 *local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined2 local_60;
  undefined8 local_58;
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  FUN_1813379d0(param_1,param_3);
  param_1[0x3a] = 0;
  *param_1 = Styled<juce::TextButton>::vftable;
  param_1[0x16] = Styled<juce::TextButton>::vftable;
  param_1[0x39] = Styled<juce::TextButton>::vftable;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  local_b8 = *param_2;
  if ((*(uint *)(local_b8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_b8 + -0x10) = *(int *)(local_b8 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1815fb460(param_1 + 0x3c,&local_b8);
  *param_1 = CloudyPopupMenuItem::vftable;
  param_1[0x16] = CloudyPopupMenuItem::vftable;
  param_1[0x39] = CloudyPopupMenuItem::vftable;
  param_1[0x3c] = CloudyPopupMenuItem::vftable;
  param_1[0x40] = CloudyPopupMenuItem::vftable;
  param_1[0x48] = 0;
  *(undefined4 *)(param_1 + 0x49) = 0x3f800000;
  FUN_180584230(param_1 + 0x4a,param_4);
  param_1[0x4d] = 0;
  plVar1 = param_1 + 0x4e;
  *plVar1 = 0;
  *(undefined8 *)((longlong)param_1 + 0x284) = 0;
  *(undefined8 *)((longlong)param_1 + 0x28c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x294) = 0x41800000;
  *(undefined4 *)(param_1 + 0x53) = 0x40000000;
  *(undefined4 *)((longlong)param_1 + 0x29c) = 0x41600000;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_3);
  FUN_18049c4e0(&local_a8,
                "<svg width=\"10\" height=\"16\" viewBox=\"0 0 10 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1.27 15.91C1.10294 15.9111 0.937346 15.8789 0.782837 15.8154C0.628328 15.7519 0.487993 15.6583 0.369997 15.54C0.133671 15.3021 0.0010376 14.9803 0.0010376 14.645C0.0010376 14.3097 0.133671 13.9879 0.369997 13.75L6.16 8L0.369997 2.16C0.163824 1.91685 0.0566368 1.60505 0.0697213 1.28653C0.0828058 0.968004 0.215205 0.666049 0.440626 0.440628C0.666046 0.215207 0.968001 0.0828086 1.28653 0.0697242C1.60505 0.0566397 1.91685 0.163827 2.16 0.369999L9.75 8L2.16 15.54C2.0442 15.6584 1.90568 15.7522 1.75275 15.8158C1.59981 15.8794 1.43561 15.9114 1.27 15.91Z\" fill=\"black\"/>\n</svg>\n"
               );
  local_98[0] = local_a8;
  puVar7 = (uint *)(local_a8 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    *puVar7 = *puVar7 + 1;
    UNLOCK();
  }
  local_98[1] = 0;
  local_88 = 0;
  local_80 = &DAT_1821dbf98;
  local_78 = &DAT_1821dbf98;
  local_70 = 0;
  local_68 = 0;
  local_60 = 0x100;
  local_58 = 0;
  FUN_181248430(local_98,&local_a0);
  FUN_181248660(local_98);
  plVar5 = (longlong *)FUN_18132eac0(&local_b0,local_a0);
  if (plVar1 != plVar5) {
    lVar3 = *plVar5;
    *plVar5 = 0;
    puVar4 = (undefined8 *)*plVar1;
    *plVar1 = lVar3;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  if (local_b0 != (undefined8 *)0x0) {
    (**(code **)*local_b0)(local_b0,1);
  }
  if (local_a0 != (void *)0x0) {
    FUN_1812472e0(local_a0);
                    /* WARNING: Subroutine does not return */
    free(local_a0);
  }
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if (param_1[0xd] == 0) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar6 = juce::StandardCachedComponentImage::vftable;
    puVar6[1] = 0;
    puVar6[2] = 0;
    puVar6[3] = 0;
    puVar6[4] = param_1;
    *(undefined4 *)(puVar6 + 5) = 0x3f800000;
    puVar4 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar6;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar7 = (uint *)(*param_2 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(*param_3 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_18047cfb0(param_4);
  return param_1;
}



############ FUN_ 18056b9b0 size=122 ############

undefined8 *
FUN_18056b9b0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 *param_5,undefined4 *param_6)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x598);
  uVar1 = FUN_1816071a0(uVar1,param_5,param_3,param_4,*param_5,*param_6);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1816071a0 size=1003 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1816071a0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5,int param_6)

{
  undefined8 *puVar1;
  undefined ***pppuVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined ***pppuVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  uint *_Memory;
  longlong lVar8;
  undefined1 auStack_1a8 [32];
  longlong local_188 [2];
  undefined8 local_178;
  undefined4 local_170;
  undefined8 local_168;
  undefined8 local_160;
  undefined8 *local_158;
  undefined **local_150;
  undefined8 *local_148;
  undefined ***local_118;
  undefined **local_110;
  undefined8 *local_108;
  undefined ***local_d8;
  undefined **local_c8;
  undefined8 *local_c0;
  undefined ***local_90;
  longlong local_88 [7];
  longlong *local_50;
  ulonglong local_48;
  
  local_160 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  local_168 = param_4;
  local_158 = param_1;
  FUN_1813f4190();
  param_1[0x51] = 0;
  *(undefined1 *)(param_1 + 0x52) = 0;
  puVar1 = param_1 + 0x54;
  *puVar1 = std::_Func_impl_no_alloc<<lambda_191bfacb41d410c5baa542311fec1847>,void>::vftable;
  param_1[0x5b] = puVar1;
  param_1[0x5c] = std::_Func_impl_no_alloc<<lambda_1af6f68916b393ab74c270408a7a647e>,void>::vftable;
  param_1[99] = param_1 + 0x5c;
  param_1[100] = std::_Func_impl_no_alloc<<lambda_5b8ffd48389f5112e3b0d585eda87aaf>,void>::vftable;
  param_1[0x6b] = param_1 + 100;
  param_1[0x6c] = std::_Func_impl_no_alloc<<lambda_61829a2b33e1a9af49eaf4ef2038dc86>,void>::vftable;
  param_1[0x73] = param_1 + 0x6c;
  *param_1 = CloudySliderArea::vftable;
  param_1[0x50] = CloudySliderArea::vftable;
  param_1[0x53] = CloudySliderArea::vftable;
  param_1[0x74] = 0;
  param_1[0x75] = 0;
  param_1[0x76] = 0;
  param_1[0x77] = param_4;
  FUN_18057f1a0(param_1 + 0x78,param_3);
  param_1[0x7b] = 0;
  param_1[0x7c] = 0;
  param_1[0x7d] = 0;
  *(undefined2 *)(param_1 + 0x7e) = 0x101;
  local_178 = DAT_18235df78;
  local_170 = DAT_18235df80;
  FUN_181408750(param_1 + 0x7f,&local_178);
  *(undefined4 *)((longlong)param_1 + 0x3f4) = 1;
  lVar8 = 0;
  if (0 < (longlong)param_6) {
    do {
      FUN_181605870(param_1,*(undefined8 *)(param_5 + lVar8 * 8));
      lVar8 = lVar8 + 1;
    } while (lVar8 < param_6);
  }
  if (param_1[0xd] == 0) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar6 = juce::StandardCachedComponentImage::vftable;
    puVar6[1] = 0;
    puVar6[2] = 0;
    puVar6[3] = 0;
    puVar6[4] = param_1;
    *(undefined4 *)(puVar6 + 5) = 0x3f800000;
    puVar4 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar6;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  local_188[0] = FUN_1811316e0(0x10);
  uVar7 = FUN_1811e8780(local_188[0],param_1 + 0x78,param_1 + 0x53);
  FUN_180485e60(param_1 + 0x7c,uVar7);
  FUN_18049c4e0(local_188,"CloudySliderArea");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,local_188);
  _Memory = (uint *)(local_188[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_188[0] = FUN_1811316e0(0x40);
  local_150 = std::_Func_impl_no_alloc<<lambda_c89f2a6cc1db792ab4353e9535847f63>,void,float>::
              vftable;
  local_118 = &local_150;
  local_148 = param_1;
  uVar7 = FUN_18055e880(local_188[0],local_168,&local_150);
  lVar8 = param_1[0x76];
  param_1[0x76] = uVar7;
  if (lVar8 != 0) {
    FUN_18056a070();
  }
  FUN_181411b10(param_1 + 0x7f,"alpha",0);
  local_110 = std::
              _Func_impl_no_alloc<<lambda_2d38ab7dec67bc47e1e82d69f5ddec32>,void,juce::StringRef,float>
              ::vftable;
  local_d8 = &local_110;
  local_108 = param_1;
  FUN_181410000(param_1 + 0x7f,&local_110);
  pppuVar2 = (undefined ***)(param_1 + 100);
  local_c8 = std::_Func_impl_no_alloc<<lambda_5dccf18838ce526706240e7723d5abd7>,void>::vftable;
  local_90 = &local_c8;
  local_50 = (longlong *)0x0;
  local_c0 = param_1;
  local_50 = (longlong *)(*(code *)PTR_FUN_1824bdaf0)(&local_c8,local_88);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar5 = (undefined ***)param_1[0x6b];
  if (pppuVar5 != (undefined ***)0x0) {
    if (pppuVar5 == pppuVar2) {
      local_90 = (undefined ***)(*(code *)(*pppuVar5)[1])(pppuVar5,&local_c8);
      pppuVar5 = (undefined ***)param_1[0x6b];
      if (pppuVar5 == (undefined ***)0x0) goto LAB_181607515;
      (*(code *)(*pppuVar5)[4])(pppuVar5,pppuVar5 != pppuVar2);
      pppuVar5 = local_90;
    }
    local_90 = pppuVar5;
    param_1[0x6b] = 0;
  }
LAB_181607515:
  FUN_180488560(pppuVar2,local_88);
  if (local_50 != (longlong *)0x0) {
    (**(code **)(*local_50 + 0x20))(local_50,local_50 != local_88);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  FUN_18056aa40(param_1 + 0x16,puVar1);
}



############ FUN_ 18056ba30 size=74 ############

undefined8 *
FUN_18056ba30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x200);
  uVar1 = FUN_1816075b0(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056ba80 size=225 ############

undefined8 *
FUN_18056ba80(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4,
             undefined8 param_5,undefined8 param_6,undefined8 *param_7)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined ***pppuVar4;
  undefined **local_70;
  undefined8 local_68;
  undefined ***local_38;
  undefined1 local_30 [24];
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x188);
  pppuVar4 = &local_70;
  local_68 = *param_7;
  local_70 = std::_Func_impl_no_alloc<<lambda_5dcc2fe3fc1dfb627427a919a03f5f39>,juce::String,float>
             ::vftable;
  local_38 = &local_70;
  uVar2 = FUN_18052cf30(local_30,param_3);
  uVar1 = FUN_18160a660(uVar1,param_2,uVar2,*param_4,param_5,param_6,&local_70,0,uVar3,pppuVar4);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18160a660 size=1753 ############

undefined8 *
FUN_18160a660(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined4 param_4,
             undefined8 param_5,undefined8 param_6,longlong *param_7,char param_8)

{
  undefined1 **ppuVar1;
  float fVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  longlong lVar13;
  uint *puVar14;
  uint uVar15;
  float *pfVar16;
  undefined8 *local_res10;
  undefined8 *local_res18;
  uint local_res20;
  longlong local_168;
  longlong local_160;
  longlong *local_158;
  longlong local_150;
  longlong local_148;
  longlong local_140;
  longlong local_138;
  longlong local_130;
  undefined1 local_128 [8];
  undefined1 local_120 [8];
  float *local_118;
  longlong *local_110;
  longlong *local_108;
  undefined8 local_100;
  undefined1 *local_f8;
  undefined8 local_f0;
  longlong *local_e8;
  longlong local_e0;
  longlong local_d8;
  undefined **local_d0;
  longlong *local_c8;
  undefined ***local_98;
  
  local_f0 = 0xfffffffffffffffe;
  local_res20 = 0;
  puVar11 = param_3;
  local_res18 = param_3;
  FUN_18056b680();
  *param_1 = GraphLabels::vftable;
  param_1[0x16] = GraphLabels::vftable;
  param_1[0x19] = GraphLabels::vftable;
  param_1[0x1a] = 0;
  param_1[0x1b] = param_2;
  FUN_18052cf30(param_1 + 0x1c,puVar11);
  *(undefined4 *)(param_1 + 0x1f) = param_4;
  local_res10 = param_1 + 0x20;
  param_1[0x27] = 0;
  plVar9 = (longlong *)param_7[7];
  if (plVar9 != (longlong *)0x0) {
    if (plVar9 == param_7) {
      uVar8 = (**(code **)(*plVar9 + 8))(plVar9,local_res10);
      param_1[0x27] = uVar8;
      plVar9 = (longlong *)param_7[7];
      if (plVar9 == (longlong *)0x0) goto LAB_18160a768;
      (**(code **)(*plVar9 + 0x20))(plVar9,plVar9 != param_7);
    }
    else {
      param_1[0x27] = plVar9;
    }
    param_7[7] = 0;
  }
LAB_18160a768:
  FUN_18057f0f0(param_1 + 0x28,param_5);
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  param_1[0x2f] = param_6;
  param_1[0x30] = 0;
  uVar7 = DAT_1824c44dc;
  uVar6 = DAT_1824c44bc;
  uVar5 = DAT_1824c3ea4;
  pfVar16 = (float *)*param_3;
  local_118 = (float *)local_res18[1];
  uVar15 = 0;
  if (pfVar16 != local_118) {
    do {
      fVar2 = *pfVar16;
      local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,fVar2);
      plVar9 = (longlong *)param_1[0x27];
      if (plVar9 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*plVar9 + 0x10))(plVar9,&local_130,&local_res10);
      local_res20 = uVar15 | 2;
      plVar9 = (longlong *)FUN_1811316e0(0x4a8);
      local_110 = &local_168;
      local_168 = local_130;
      if ((*(uint *)(local_130 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_130 + -0x10) = *(int *)(local_130 + -0x10) + 1;
        UNLOCK();
      }
      local_108 = &local_168;
      local_e8 = plVar9;
      FUN_1812339a0(&local_138,(double)fVar2,0,0);
      local_res20 = local_res20 | 1;
      FUN_18049c4e0(&local_148,"Label for: ");
      plVar10 = (longlong *)FUN_181232d30(&local_148,&local_138);
      local_160 = *plVar10;
      if ((*(uint *)(local_160 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_160 + -0x10) = *(int *)(local_160 + -0x10) + 1;
        UNLOCK();
      }
      local_res20 = local_res20 | 4;
      puVar14 = (uint *)(local_148 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar15 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      local_110 = &local_160;
      local_150 = local_168;
      if ((*(uint *)(local_168 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_168 + -0x10) = *(int *)(local_168 + -0x10) + 1;
        UNLOCK();
      }
      if ((*(uint *)(local_160 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_160 + -0x10) = *(int *)(local_160 + -0x10) + 1;
        UNLOCK();
      }
      local_140 = local_160;
      FUN_1815d7db0(plVar9,&local_140,&local_150);
      *plVar9 = (longlong)GraphLabels::Label::vftable;
      plVar9[0x16] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x18] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x19] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x1a] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x41] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x44] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x47] = (longlong)GraphLabels::Label::vftable;
      plVar9[0x48] = (longlong)GraphLabels::Label::vftable;
      ppuVar1 = (undefined1 **)(plVar9 + 0x94);
      *ppuVar1 = (undefined1 *)0x0;
      puVar14 = (uint *)(local_160 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar15 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_168 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar15 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      local_158 = plVar9;
      if ((local_res20 & 1) != 0) {
        local_res20 = local_res20 & 0xfffffffe;
        puVar14 = (uint *)(local_138 + -0x10);
        if ((*puVar14 & 0x30000000) == 0) {
          LOCK();
          uVar15 = *puVar14;
          *puVar14 = *puVar14 - 1;
          UNLOCK();
          if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar14);
          }
        }
      }
      uVar15 = local_res20;
      *(undefined2 *)(plVar9 + 0x40) = 0;
      *(undefined1 *)((longlong)plVar9 + 0x202) = 0;
      *(byte *)(plVar9 + 0x15) = *(byte *)(plVar9 + 0x15) & 0x9f;
      local_100 = FUN_1811316e0(0x1a0);
      puVar11 = (undefined8 *)FUN_181411e40(local_100,uVar7,uVar5,uVar6);
      local_res20 = uVar15 | 8;
      if (ppuVar1 == &local_f8) {
        if (puVar11 != (undefined8 *)0x0) {
          puVar12 = (undefined8 *)*puVar11;
          goto LAB_18160aacf;
        }
      }
      else {
        puVar3 = (undefined8 *)*ppuVar1;
        *ppuVar1 = (undefined1 *)puVar11;
        if (puVar3 != (undefined8 *)0x0) {
          puVar12 = (undefined8 *)*puVar3;
          puVar11 = puVar3;
LAB_18160aacf:
          (*(code *)*puVar12)(puVar11,1);
        }
      }
      FUN_181410d30(*ppuVar1,"alpha",uVar5);
      local_d0 = std::
                 _Func_impl_no_alloc<<lambda_3a0d6a548eb57c486ae69bf36664b1c1>,void,juce::StringRef,float>
                 ::vftable;
      local_98 = &local_d0;
      local_c8 = plVar9;
      FUN_181410000(*ppuVar1,&local_d0);
      puVar11 = (undefined8 *)param_1[0x2d];
      if ((undefined8 *)param_1[0x2e] == puVar11) {
        FUN_180586090(param_1 + 0x2c,puVar11,&local_158);
        plVar9 = local_158;
      }
      else {
        *puVar11 = plVar9;
        param_1[0x2d] = param_1[0x2d] + 8;
      }
      if (plVar9 != (longlong *)0x0) {
        (**(code **)(*plVar9 + 0x58))(plVar9,1);
        FUN_181343cc0(param_1,plVar9,0xffffffff);
      }
      puVar14 = (uint *)(local_130 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar15 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar15 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      pfVar16 = pfVar16 + 1;
      uVar15 = local_res20;
    } while (pfVar16 != local_118);
  }
  plVar9 = param_1 + 0x2b;
  if (param_8 == '\0') goto LAB_18160ac7d;
  puVar11 = (undefined8 *)FUN_1811316e0(0x4a8);
  local_f8 = local_128;
  local_res10 = puVar11;
  FUN_18049c4e0(local_128,"");
  FUN_18049c4e0(local_120,"Sliding graph label display");
  puVar11 = (undefined8 *)FUN_18057f890(puVar11,local_120,local_128);
  if (plVar9 == &local_e0) {
    if (puVar11 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar11;
      goto LAB_18160ac38;
    }
  }
  else {
    puVar3 = (undefined8 *)*plVar9;
    *plVar9 = (longlong)puVar11;
    if (puVar3 != (undefined8 *)0x0) {
      puVar12 = (undefined8 *)*puVar3;
      puVar11 = puVar3;
LAB_18160ac38:
      (*(code *)*puVar12)(puVar11,1);
    }
  }
  lVar13 = *plVar9;
  *(undefined2 *)(lVar13 + 0x200) = 0;
  *(undefined1 *)(lVar13 + 0x202) = 0;
  *(byte *)(lVar13 + 0xa8) = *(byte *)(lVar13 + 0xa8) & 0x9f;
  plVar9 = (longlong *)*plVar9;
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(param_1,plVar9,0xffffffff);
  }
LAB_18160ac7d:
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  lVar13 = FUN_1804841f0(local_res10,param_6,param_1 + 0x19);
  plVar9 = param_1 + 0x30;
  if (plVar9 != &local_d8) {
    lVar4 = *plVar9;
    *plVar9 = lVar13;
    lVar13 = lVar4;
  }
  if (lVar13 != 0) {
    FUN_18056ae10(lVar13);
  }
  FUN_18052fa60(local_res18);
  plVar9 = (longlong *)param_7[7];
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x20))(plVar9,plVar9 != param_7);
    param_7[7] = 0;
  }
  return param_1;
}



############ FUN_ 18056bb70 size=225 ############

undefined8 *
FUN_18056bb70(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4,
             undefined8 param_5,undefined8 param_6,undefined4 *param_7)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined ***pppuVar4;
  undefined **local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined ***local_38;
  undefined1 local_30 [24];
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x188);
  pppuVar4 = &local_70;
  local_70 = std::_Func_impl_no_alloc<<lambda_8c988d725825969e906df41397bbd15b>,juce::String,float>
             ::vftable;
  local_68 = *param_7;
  uStack_64 = param_7[1];
  uStack_60 = param_7[2];
  uStack_5c = param_7[3];
  local_38 = &local_70;
  uVar2 = FUN_18052cf30(local_30,param_3);
  uVar1 = FUN_18160a660(uVar1,param_2,uVar2,*param_4,param_5,param_6,&local_70,0,uVar3,pppuVar4);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056bc60 size=219 ############

undefined8 *
FUN_18056bc60(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4,
             undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined1 *param_8)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined1 local_78 [24];
  undefined **local_60 [7];
  undefined ***local_28;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x188);
  local_60[0] = std::
                _Func_impl_no_alloc<<lambda_48d6b72469a596964c681047269cabb2>,juce::String,float>::
                vftable;
  local_28 = local_60;
  uVar2 = FUN_18052cf30(local_78,param_3);
  uVar1 = FUN_18160a660(uVar1,param_2,uVar2,*param_4,param_5,param_6,local_60,*param_8,uVar3);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056bd40 size=239 ############

undefined8 *
FUN_18056bd40(undefined8 *param_1,longlong param_2,longlong param_3,undefined8 param_4,
             undefined8 param_5)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  longlong local_res10;
  longlong local_res18 [2];
  
  local_res10 = param_2;
  local_res18[0] = param_3;
  uVar2 = FUN_1811316e0(0x1d0);
  FUN_18049c4e0(&local_res10,"1.1.2");
  FUN_18049c4e0(local_res18,"soothe2");
  uVar2 = FUN_1814d2680(uVar2,local_res18,&local_res10,param_4,param_5);
  *param_1 = uVar2;
  puVar3 = (uint *)(local_res18[0] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(local_res10 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  return param_1;
}



############ FUN_ 1814d2680 size=1207 ############

undefined8 *
FUN_1814d2680(undefined8 *param_1,longlong *param_2,longlong *param_3,undefined8 param_4,
             longlong param_5)

{
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong *plVar12;
  longlong *plVar13;
  undefined8 local_res10;
  undefined8 local_res18;
  undefined8 local_res20;
  longlong local_60;
  longlong local_58;
  longlong local_50 [2];
  
  puVar7 = param_1;
  local_res20 = param_4;
  FUN_18056b680();
  puVar1 = puVar7 + 0x1a;
  puVar7[0x1c] = 0xffffffffffffffff;
  *(undefined4 *)(puVar7 + 0x1d) = 0;
  *puVar7 = PluginUpdateComponent::vftable;
  puVar7[0x16] = PluginUpdateComponent::vftable;
  puVar7[0x19] = PluginUpdateComponent::vftable;
  *puVar1 = PluginUpdateComponent::vftable;
  puVar7[0x1b] = PluginUpdateComponent::vftable;
  InitializeCriticalSection((LPCRITICAL_SECTION)(puVar7 + 0x1e));
  lVar3 = *param_2;
  param_1[0x24] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = *param_3;
  param_1[0x25] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x26] = param_5;
  param_1[0x27] = &DAT_1821dbf98;
  param_1[0x28] = &DAT_1821dbf98;
  param_1[0x29] = &DAT_1821dbf98;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  param_1[0x2f] = 0;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  *(undefined2 *)(param_1 + 0x32) = 0;
  *(undefined1 *)((longlong)param_1 + 0x192) = 0;
  *(undefined8 *)((longlong)param_1 + 0x194) = 0;
  *(undefined8 *)((longlong)param_1 + 0x19c) = 0;
  plVar5 = param_1 + 0x35;
  *plVar5 = 0;
  plVar10 = param_1 + 0x36;
  *plVar10 = 0;
  plVar13 = param_1 + 0x37;
  *plVar13 = 0;
  param_1[0x38] = 0;
  param_1[0x39] = LastSeenUpdateOption::vftable;
  uVar6 = FUN_1811316e0(0x238);
  FUN_18049c4e0(&local_res10,"Download");
  puVar7 = (undefined8 *)FUN_1815ef4d0(uVar6,&local_res10);
  if (plVar5 == &local_60) {
    if (puVar7 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar7;
      goto LAB_1814d286d;
    }
  }
  else {
    puVar4 = (undefined8 *)*plVar5;
    *plVar5 = (longlong)puVar7;
    if (puVar4 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar4;
      puVar7 = puVar4;
LAB_1814d286d:
      (*(code *)*puVar8)(puVar7,1);
    }
  }
  lVar3 = *plVar5;
  if (puVar1 != (undefined8 *)0x0) {
    plVar11 = (longlong *)(lVar3 + 0x160);
    plVar12 = (longlong *)*plVar11;
    iVar2 = *(int *)(lVar3 + 0x16c);
    plVar9 = plVar12 + iVar2;
    for (; plVar12 != plVar9; plVar12 = plVar12 + 1) {
      if (puVar1 == (undefined8 *)*plVar12) goto LAB_1814d28d2;
    }
    if (*(int *)(lVar3 + 0x168) < iVar2 + 1) {
      FUN_18047cb30(plVar11,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar3 + 0x16c);
    *(int *)(lVar3 + 0x16c) = iVar2 + 1;
    *(undefined8 **)(*plVar11 + (longlong)iVar2 * 8) = puVar1;
  }
LAB_1814d28d2:
  *(undefined4 *)(*plVar5 + 0x208) = 0x1000000;
  plVar5 = (longlong *)*plVar5;
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x58))(plVar5,1);
    FUN_181343cc0(param_1,plVar5,0xffffffff);
  }
  uVar6 = FUN_1811316e0(0x238);
  FUN_18049c4e0(&local_res18,"Show changes");
  puVar7 = (undefined8 *)FUN_1815ef4d0(uVar6,&local_res18);
  if (plVar10 == &local_58) {
    if (puVar7 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar7;
      goto LAB_1814d2972;
    }
  }
  else {
    puVar4 = (undefined8 *)*plVar10;
    *plVar10 = (longlong)puVar7;
    if (puVar4 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar4;
      puVar7 = puVar4;
LAB_1814d2972:
      (*(code *)*puVar8)(puVar7,1);
    }
  }
  *(undefined4 *)(*plVar10 + 0x208) = 0x10000;
  lVar3 = *plVar10;
  if (puVar1 != (undefined8 *)0x0) {
    plVar12 = (longlong *)(lVar3 + 0x160);
    plVar9 = (longlong *)*plVar12;
    iVar2 = *(int *)(lVar3 + 0x16c);
    plVar5 = plVar9 + iVar2;
    for (; plVar9 != plVar5; plVar9 = plVar9 + 1) {
      if (puVar1 == (undefined8 *)*plVar9) goto LAB_1814d29f2;
    }
    if (*(int *)(lVar3 + 0x168) < iVar2 + 1) {
      FUN_18047cb30(plVar12,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar3 + 0x16c);
    *(int *)(lVar3 + 0x16c) = iVar2 + 1;
    *(undefined8 **)(*plVar12 + (longlong)iVar2 * 8) = puVar1;
  }
LAB_1814d29f2:
  plVar10 = (longlong *)*plVar10;
  if (plVar10 != (longlong *)0x0) {
    (**(code **)(*plVar10 + 0x58))(plVar10,1);
    FUN_181343cc0(param_1,plVar10,0xffffffff);
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x978);
  FUN_1815ef340(puVar7,local_res20,1);
  *puVar7 = PluginUpdateComponent::ChangeLogModal::vftable;
  puVar7[0x16] = PluginUpdateComponent::ChangeLogModal::vftable;
  FUN_1815ef760(puVar7 + 0x10f);
  *(undefined4 *)(puVar7 + 0x12e) = DAT_18262bb5c;
  FUN_18134a370(puVar7 + 0xa7,puVar7 + 0x10f,0);
  if (plVar13 == local_50) {
    puVar8 = (undefined8 *)*puVar7;
  }
  else {
    puVar4 = (undefined8 *)*plVar13;
    *plVar13 = (longlong)puVar7;
    if (puVar4 == (undefined8 *)0x0) goto LAB_1814d2ab0;
    puVar8 = (undefined8 *)*puVar4;
    puVar7 = puVar4;
  }
  (*(code *)*puVar8)(puVar7,1);
LAB_1814d2ab0:
  lVar3 = *(longlong *)(param_5 + 0x108);
  if (puVar1 != (undefined8 *)0x0) {
    plVar13 = (longlong *)(lVar3 + 0x160);
    plVar10 = (longlong *)*plVar13;
    iVar2 = *(int *)(lVar3 + 0x16c);
    plVar5 = plVar10 + iVar2;
    for (; plVar10 != plVar5; plVar10 = plVar10 + 1) {
      if (puVar1 == (undefined8 *)*plVar10) goto LAB_1814d2b12;
    }
    if (*(int *)(lVar3 + 0x168) < iVar2 + 1) {
      FUN_18047cb30(plVar13,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar3 + 0x16c);
    *(int *)(lVar3 + 0x16c) = iVar2 + 1;
    *(undefined8 **)(*plVar13 + (longlong)iVar2 * 8) = puVar1;
  }
LAB_1814d2b12:
  FUN_1812a77d0(param_1 + 0x1b,1000);
  return param_1;
}



############ FUN_ 18056be30 size=303 ############

undefined8 *
FUN_18056be30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint *_Memory;
  bool bVar5;
  undefined8 *local_res8;
  undefined1 *local_res10;
  undefined8 *local_res18;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  local_res8 = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x2d0);
  puVar4 = puVar2;
  local_res18 = puVar2;
  FUN_18056b680();
  *puVar4 = InvalidLicenceOverlay::vftable;
  puVar4[0x16] = InvalidLicenceOverlay::vftable;
  local_res10 = &DAT_1821dbf98;
  local_res8 = (undefined8 *)&DAT_1821dbf98;
  FUN_18134a080(puVar4 + 0x19,&local_res8,&local_res10,param_4,uVar6);
  _Memory = (uint *)(local_res8 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar5 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar5) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (puVar2[0xd] == 0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar3 = juce::StandardCachedComponentImage::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
    puVar3[4] = puVar2;
    *(undefined4 *)(puVar3 + 5) = 0x3f800000;
    puVar4 = (undefined8 *)puVar2[0xd];
    puVar2[0xd] = puVar3;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  *param_1 = puVar2;
  return param_1;
}



############ FUN_ 18056bf60 size=126 ############

undefined8 *
FUN_18056bf60(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined **local_50;
  undefined8 local_48;
  undefined ***local_18;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x40);
  local_48 = *param_3;
  local_50 = std::_Func_impl_no_alloc<<lambda_c0e1c24dcee68a22e2e61de0818ed38e>,void,float>::vftable
  ;
  local_18 = &local_50;
  uVar1 = FUN_18055e880(uVar1,param_2,&local_50,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18056f940 size=353 ############

void .?AV?$GainRangeScalingOptionComponent@VSoothe2GainRangeScalingOption@@@@::
     vtbl___AV__GainRangeScalingOptionComponent_VSoothe2GainRangeScalingOption____(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res8;
  undefined1 local_18 [16];
  
  plVar2 = *(longlong **)(param_1 + 8);
  plVar1 = plVar2 + 0x91;
  if (*plVar1 != 0) goto LAB_18056fa0f;
  uVar6 = (**(code **)(*plVar2 + 0x180))(plVar2);
  lVar3 = plVar2[0x32];
  local_res8 = FUN_1811316e0(0x1950);
  puVar7 = (undefined8 *)FUN_1814d4700(local_res8,lVar3,plVar2);
  if (plVar1 == &local_res8) {
    if (puVar7 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar7;
      goto LAB_18056f9ce;
    }
  }
  else {
    puVar4 = (undefined8 *)*plVar1;
    *plVar1 = (longlong)puVar7;
    if (puVar4 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)*puVar4;
      puVar7 = puVar4;
LAB_18056f9ce:
      (*(code *)*puVar8)(puVar7,1);
    }
  }
  FUN_18056aa40(*plVar1 + 0xb0,plVar2[0x92]);
  plVar5 = (longlong *)*plVar1;
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x58))(plVar5,1);
    FUN_181343cc0(uVar6,plVar5,0xffffffff);
  }
LAB_18056fa0f:
  if ((*(int *)(*plVar1 + 0xc0) - 1U & 0xfffffffd) == 0) {
    (**(code **)(*plVar2 + 0x188))(plVar2,local_18);
    lVar3 = *plVar1;
    *(undefined1 (*) [16])(lVar3 + 0xc4) = local_18;
    FUN_18134bfe0(lVar3,local_18._0_8_,local_18._0_8_ >> 0x20,local_18._8_8_,local_18._12_4_);
    FUN_181344f60(*plVar1,1);
    (**(code **)(*(longlong *)*plVar1 + 0x160))();
  }
  else {
    FUN_1814d4600();
  }
  return;
}



############ FUN_ 1814d4700 size=2752 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814d4700(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  undefined ***pppuVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined ***pppuVar6;
  uint uVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined8 *puVar11;
  longlong *plVar12;
  longlong *plVar13;
  longlong *plVar14;
  undefined4 *puVar15;
  longlong *plVar16;
  bool bVar17;
  undefined1 auStack_178 [32];
  undefined8 *local_158;
  undefined4 local_150;
  undefined4 local_148;
  undefined4 local_144;
  undefined4 local_140;
  undefined4 local_13c;
  undefined4 local_138 [2];
  undefined1 local_130 [8];
  undefined1 local_128 [8];
  undefined1 local_120 [8];
  undefined1 local_118 [8];
  undefined1 *local_110;
  undefined1 local_108 [8];
  undefined1 *local_100;
  undefined1 local_f8 [8];
  undefined1 local_f0 [8];
  undefined8 local_e8;
  undefined8 *local_e0;
  longlong local_d8 [2];
  undefined **local_c8;
  undefined8 *local_c0;
  undefined ***local_90;
  undefined1 local_88 [16];
  longlong local_78 [7];
  longlong *local_40;
  ulonglong local_38;
  
  local_e8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_178;
  local_e0 = param_1;
  FUN_1813f4190();
  param_1[0x51] = 0;
  *(undefined1 *)(param_1 + 0x52) = 0;
  puVar9 = param_1 + 0x53;
  puVar11 = param_1 + 0x55;
  *param_1 = PresetMenu::vftable;
  param_1[0x50] = PresetMenu::vftable;
  *puVar9 = PresetMenu::vftable;
  param_1[0x54] = PresetMenu::vftable;
  *puVar11 = PresetMenu::vftable;
  param_1[0x56] = PresetMenu::vftable;
  param_1[0x57] = param_3;
  param_1[0x58] = param_2;
  plVar4 = param_1 + 0x59;
  *plVar4 = (longlong)juce::Component::vftable;
  param_1[0x5a] = &DAT_1821dbf98;
  param_1[0x5b] = &DAT_1821dbf98;
  param_1[0x5c] = 0;
  param_1[0x5d] = 0;
  param_1[0x5e] = 0;
  param_1[0x5f] = 0;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  param_1[99] = 0;
  param_1[100] = 0;
  param_1[0x65] = 0;
  param_1[0x66] = 0;
  param_1[0x67] = 0;
  param_1[0x68] = 0;
  param_1[0x69] = 0;
  param_1[0x6a] = 0;
  param_1[0x6b] = 0;
  param_1[0x6c] = 0;
  param_1[0x6d] = 0;
  *(undefined4 *)(param_1 + 0x6e) = 0;
  *(undefined1 *)((longlong)param_1 + 0x374) = 0;
  FUN_1813b0610(local_88,"rootpanel",9);
  uVar8 = FUN_1813b0fe0(local_88,&local_100);
  FUN_181465d70(param_1 + 0x6f,param_1,uVar8);
  param_1[0xe7] = 0;
  param_1[0xe8] = 0;
  FUN_180576700(param_1 + 0xe9);
  local_158 = (undefined8 *)&DAT_1821dbf98;
  plVar14 = param_1 + 0x101;
  FUN_18134a630(plVar14,&local_158);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar7 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar17 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar7;
    if (bVar17) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_181601800(param_1 + 0x138,0);
  FUN_180576700(param_1 + 0x1a1);
  FUN_18049c4e0(local_138,"Cancel");
  FUN_1815ef4d0(param_1 + 0x1b9,local_138);
  FUN_18049c4e0(local_130,"Open from file");
  FUN_1815ef4d0(param_1 + 0x200,local_130);
  FUN_18049c4e0(local_128,&DAT_1822b5094);
  FUN_1815ef4d0(param_1 + 0x247,local_128);
  FUN_18049c4e0(local_120,"Set as default");
  FUN_1815ef4d0(param_1 + 0x28e,local_120);
  plVar16 = param_1 + 0x2d5;
  FUN_1813ec2b0(plVar16);
  param_1[0x2f4] = 0;
  param_1[0x2f5] = 0;
  puVar5 = param_1 + 0x2f6;
  *puVar5 = 0;
  param_1[0x2f7] = 0;
  local_158 = puVar5;
  uVar8 = FUN_18047e380();
  *puVar5 = uVar8;
  FUN_181605530(param_1 + 0x2f8,0);
  param_1[0x327] = 0;
  param_1[0x328] = 0;
  param_1[0x329] = LastUsedPresetFolderOption::vftable;
  FUN_1811620a0(param_1[0x58]);
  (**(code **)(*plVar4 + 0x58))(plVar4,1);
  FUN_181343cc0(param_1,plVar4,0xffffffff);
  FUN_181341570(plVar4,param_1,0);
  FUN_18144c7e0(param_1);
  (**(code **)(param_1[0x6f] + 0x58))(param_1 + 0x6f,1);
  FUN_181343cc0(param_1,param_1 + 0x6f,0xffffffff);
  FUN_18134a370(plVar14,param_1 + 0xe9,0);
  *(undefined2 *)(param_1 + 0x136) = 0;
  if ((*(char *)((longlong)param_1 + 0x9ad) != '\0') ||
     (*(char *)((longlong)param_1 + 0x9ac) != '\x01')) {
    *(undefined2 *)((longlong)param_1 + 0x9ac) = 1;
    FUN_1813165e0(plVar14);
  }
  (**(code **)(*plVar14 + 0x58))(plVar14,1);
  FUN_181343cc0(param_1,plVar14,0xffffffff);
  if (puVar9 != (undefined8 *)0x0) {
    plVar4 = param_1 + 0x198;
    plVar12 = (longlong *)*plVar4;
    iVar2 = *(int *)((longlong)param_1 + 0xccc);
    plVar14 = plVar12 + iVar2;
    for (; plVar12 != plVar14; plVar12 = plVar12 + 1) {
      if (puVar9 == (undefined8 *)*plVar12) goto LAB_1814d4b24;
    }
    if (*(int *)(param_1 + 0x199) < iVar2 + 1) {
      FUN_18047cb30(plVar4,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)((longlong)param_1 + 0xccc);
    *(int *)((longlong)param_1 + 0xccc) = iVar2 + 1;
    *(undefined8 **)(*plVar4 + (longlong)iVar2 * 8) = puVar9;
  }
LAB_1814d4b24:
  FUN_18133e2b0(param_1 + 0x138,param_1 + 0x54);
  FUN_18049c4e0(local_118,"search...");
  FUN_181600150(param_1 + 0x138,local_118);
  (**(code **)(param_1[0x138] + 0x58))(param_1 + 0x138,1);
  FUN_181343cc0(param_1,param_1 + 0x138,0xffffffff);
  *(undefined4 *)(param_1 + 0x1b7) = 2;
  plVar4 = param_1 + 0x1a1;
  (**(code **)(*plVar4 + 0x58))(plVar4,1);
  FUN_181343cc0(param_1,plVar4,0xffffffff);
  plVar14 = param_1 + 0x1b9;
  (**(code **)(*plVar14 + 0x58))(plVar14,1);
  FUN_181343cc0(plVar4,plVar14,0xffffffff);
  plVar12 = param_1 + 0x247;
  (**(code **)(*plVar12 + 0x58))(plVar12,1);
  FUN_181343cc0(plVar4,plVar12,0xffffffff);
  plVar12 = param_1 + 0x200;
  (**(code **)(*plVar12 + 0x58))(plVar12,1);
  FUN_181343cc0(plVar4,plVar12,0xffffffff);
  (**(code **)(param_1[0x28e] + 0x58))(param_1 + 0x28e,1);
  FUN_181343cc0(plVar4,param_1 + 0x28e,0xffffffff);
  if (puVar11 != (undefined8 *)0x0) {
    plVar4 = param_1 + 0x1e5;
    plVar13 = (longlong *)*plVar4;
    iVar2 = *(int *)((longlong)param_1 + 0xf34);
    plVar12 = plVar13 + iVar2;
    for (; plVar13 != plVar12; plVar13 = plVar13 + 1) {
      if (puVar11 == (undefined8 *)*plVar13) goto LAB_1814d4c9f;
    }
    if (*(int *)(param_1 + 0x1e6) < iVar2 + 1) {
      FUN_18047cb30(plVar4,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)((longlong)param_1 + 0xf34);
    *(int *)((longlong)param_1 + 0xf34) = iVar2 + 1;
    *(undefined8 **)(*plVar4 + (longlong)iVar2 * 8) = puVar11;
LAB_1814d4c9f:
    if (puVar11 != (undefined8 *)0x0) {
      plVar4 = param_1 + 0x273;
      plVar13 = (longlong *)*plVar4;
      iVar2 = *(int *)((longlong)param_1 + 0x13a4);
      plVar12 = plVar13 + iVar2;
      for (; plVar13 != plVar12; plVar13 = plVar13 + 1) {
        if (puVar11 == (undefined8 *)*plVar13) goto LAB_1814d4cff;
      }
      if (*(int *)(param_1 + 0x274) < iVar2 + 1) {
        FUN_18047cb30(plVar4,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)((longlong)param_1 + 0x13a4);
      *(int *)((longlong)param_1 + 0x13a4) = iVar2 + 1;
      *(undefined8 **)(*plVar4 + (longlong)iVar2 * 8) = puVar11;
LAB_1814d4cff:
      if (puVar11 != (undefined8 *)0x0) {
        plVar4 = param_1 + 0x22c;
        plVar13 = (longlong *)*plVar4;
        iVar2 = *(int *)((longlong)param_1 + 0x116c);
        plVar12 = plVar13 + iVar2;
        for (; plVar13 != plVar12; plVar13 = plVar13 + 1) {
          if (puVar11 == (undefined8 *)*plVar13) goto LAB_1814d4d5f;
        }
        if (*(int *)(param_1 + 0x22d) < iVar2 + 1) {
          FUN_18047cb30(plVar4,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
        }
        iVar2 = *(int *)((longlong)param_1 + 0x116c);
        *(int *)((longlong)param_1 + 0x116c) = iVar2 + 1;
        *(undefined8 **)(*plVar4 + (longlong)iVar2 * 8) = puVar11;
LAB_1814d4d5f:
        if (puVar11 != (undefined8 *)0x0) {
          plVar4 = param_1 + 0x2ba;
          plVar13 = (longlong *)*plVar4;
          iVar2 = *(int *)((longlong)param_1 + 0x15dc);
          plVar12 = plVar13 + iVar2;
          for (; plVar13 != plVar12; plVar13 = plVar13 + 1) {
            if (puVar11 == (undefined8 *)*plVar13) goto LAB_1814d4dbf;
          }
          if (*(int *)(param_1 + 699) < iVar2 + 1) {
            FUN_18047cb30(plVar4,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
          }
          iVar2 = *(int *)((longlong)param_1 + 0x15dc);
          *(int *)((longlong)param_1 + 0x15dc) = iVar2 + 1;
          *(undefined8 **)(*plVar4 + (longlong)iVar2 * 8) = puVar11;
        }
      }
    }
  }
LAB_1814d4dbf:
  FUN_18133e970(plVar14,0);
  *(byte *)(param_1 + 0x1ce) = *(byte *)(param_1 + 0x1ce) & 0xdf;
  *(byte *)(param_1 + 0x1ce) = *(byte *)(param_1 + 0x1ce) | 0x80;
  *(byte *)(param_1 + 0x25c) = *(byte *)(param_1 + 0x25c) & 0xdf;
  *(byte *)(param_1 + 0x25c) = *(byte *)(param_1 + 0x25c) | 0x80;
  *(byte *)(param_1 + 0x215) = *(byte *)(param_1 + 0x215) & 0xdf;
  *(byte *)(param_1 + 0x215) = *(byte *)(param_1 + 0x215) | 0x80;
  *(byte *)(param_1 + 0x2a3) = *(byte *)(param_1 + 0x2a3) & 0xdf;
  *(byte *)(param_1 + 0x2a3) = *(byte *)(param_1 + 0x2a3) | 0x80;
  local_150 = CONCAT13(0x26,(int3)DAT_18262bb60);
  local_140 = local_150;
  local_13c = DAT_1826742e8;
  local_148 = 0;
  local_144 = DAT_1824c3ea4;
  puVar9 = (undefined8 *)0x0;
  *(undefined4 *)((longlong)param_1 + 0x177c) = 0;
  if (*(int *)(param_1 + 0x2ef) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x2ee]);
  }
  *(undefined4 *)(param_1 + 0x2ef) = 0;
  param_1[0x2eb] = 0;
  param_1[0x2ec] = 0x3f800000;
  *(undefined1 *)(param_1 + 0x2ed) = 0;
  puVar15 = &local_140;
  do {
    FUN_1812a1940(param_1 + 0x2eb,(double)(float)puVar15[-2],*puVar15);
    puVar15 = puVar15 + 1;
  } while (puVar15 != local_138);
  *(byte *)(param_1 + 0x2ea) = *(byte *)(param_1 + 0x2ea) & 0xef | 8;
  *(byte *)((longlong)param_1 + 0x1751) = *(byte *)((longlong)param_1 + 0x1751) & 0xf7;
  (**(code **)(*plVar16 + 0x58))(plVar16,1);
  FUN_181343cc0(param_1,plVar16,0xffffffff);
  FUN_181344e50(plVar16,param_1 + 0x6f);
  if (param_1[10] != 0) {
    puVar9 = *(undefined8 **)(param_1[10] + 0x10);
  }
  if (puVar9 != param_1 + 0x2f8) {
    FUN_18051b750(param_1 + 10);
    FUN_181341b10(param_1);
  }
  lVar3 = param_1[0x11a];
  puVar9 = param_1 + 0x56;
  if (puVar9 != (undefined8 *)0x0) {
    plVar16 = (longlong *)(lVar3 + 0x140);
    plVar14 = (longlong *)*plVar16;
    iVar2 = *(int *)(lVar3 + 0x14c);
    plVar4 = plVar14 + iVar2;
    for (; plVar14 != plVar4; plVar14 = plVar14 + 1) {
      if (puVar9 == (undefined8 *)*plVar14) goto LAB_1814d4faf;
    }
    if (*(int *)(lVar3 + 0x148) < iVar2 + 1) {
      FUN_18047cb30(plVar16,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar3 + 0x14c);
    *(int *)(lVar3 + 0x14c) = iVar2 + 1;
    *(undefined8 **)(*plVar16 + (longlong)iVar2 * 8) = puVar9;
  }
LAB_1814d4faf:
  puVar9 = (undefined8 *)FUN_1811316e0(0x48);
  local_100 = local_108;
  plVar4 = *(longlong **)param_1[0x58];
  local_158 = puVar9;
  FUN_18049c4e0(local_108,"cancelpreset");
  uVar8 = FUN_180576610(param_1[0x58],local_f0);
  local_110 = &DAT_1821dbf98;
  uVar10 = (**(code **)(*plVar4 + 0x10))(plVar4,local_f8,&local_110);
  puVar9 = (undefined8 *)FUN_181174a20(puVar9,uVar10,uVar8,local_108);
  plVar4 = param_1 + 0x2f4;
  if (plVar4 == local_d8) {
    if (puVar9 != (undefined8 *)0x0) {
      puVar11 = (undefined8 *)*puVar9;
      goto LAB_1814d505b;
    }
  }
  else {
    puVar5 = (undefined8 *)*plVar4;
    *plVar4 = (longlong)puVar9;
    if (puVar5 != (undefined8 *)0x0) {
      puVar11 = (undefined8 *)*puVar5;
      puVar9 = puVar5;
LAB_1814d505b:
      (*(code *)*puVar11)(puVar9,1);
    }
  }
  pppuVar1 = (undefined ***)(param_1 + 0x89);
  local_c8 = std::_Func_impl_no_alloc<<lambda_f78f9908255e2b1f7b716c68b7c12b99>,void>::vftable;
  local_90 = &local_c8;
  local_40 = (longlong *)0x0;
  local_c0 = param_1;
  local_40 = (longlong *)(*(code *)PTR_FUN_1824b5290)(&local_c8,local_78);
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
    local_90 = (undefined ***)0x0;
  }
  pppuVar6 = (undefined ***)param_1[0x90];
  if (pppuVar6 != (undefined ***)0x0) {
    if (pppuVar6 == pppuVar1) {
      local_90 = (undefined ***)(*(code *)(*pppuVar6)[1])(pppuVar6,&local_c8);
      pppuVar6 = (undefined ***)param_1[0x90];
      if (pppuVar6 == (undefined ***)0x0) goto LAB_1814d510e;
      (*(code *)(*pppuVar6)[4])(pppuVar6,pppuVar6 != pppuVar1);
      pppuVar6 = local_90;
    }
    local_90 = pppuVar6;
    param_1[0x90] = 0;
  }
LAB_1814d510e:
  FUN_180488560(pppuVar1,local_78);
  if (local_40 != (longlong *)0x0) {
    (**(code **)(*local_40 + 0x20))(local_40,local_40 != local_78);
  }
  if (local_90 != (undefined ***)0x0) {
    (*(code *)(*local_90)[4])(local_90,local_90 != &local_c8);
  }
  if (param_1[0xd] == 0) {
    puVar11 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar11 = juce::StandardCachedComponentImage::vftable;
    puVar11[1] = 0;
    puVar11[2] = 0;
    puVar11[3] = 0;
    puVar11[4] = param_1;
    *(undefined4 *)(puVar11 + 5) = 0x3f800000;
    puVar9 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar11;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
  }
}



############ FUN_ 180571ae0 size=319 ############

undefined8 * FUN_180571ae0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3)

{
  undefined8 **ppuVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  undefined8 *local_98;
  undefined4 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined **local_68;
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined ***local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_res8 = param_1;
  puVar4 = (undefined8 *)FUN_1811316e0(0x48);
  local_res8 = (undefined8 *)*param_3;
  uVar2 = *(undefined4 *)(param_3 + 1);
  *puVar4 = 0;
  ppuVar1 = (undefined8 **)(puVar4 + 1);
  *ppuVar1 = (undefined8 *)0x0;
  *(undefined4 *)(puVar4 + 2) = 0;
  *(undefined8 *)((longlong)puVar4 + 0x14) = 0x3f800000;
  InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)puVar4 + 0x1c));
  local_88 = param_2;
  uStack_80 = puVar4;
  local_70 = FUN_1811316e0(0x88);
  local_98 = local_res8;
  local_68 = std::_Func_impl_no_alloc<<lambda_d8187e250f411ed81f043da604eb1b88>,void,float>::vftable
  ;
  local_60 = (undefined4)local_88;
  uStack_5c = local_88._4_4_;
  uStack_58 = (undefined4)uStack_80;
  uStack_54 = uStack_80._4_4_;
  local_30 = &local_68;
  local_90 = uVar2;
  puVar5 = (undefined8 *)
           FUN_1813bb890(local_70,(longlong)puVar4 + 0x14,puVar4 + 2,&local_68,&local_98);
  if (ppuVar1 == &local_res8) {
    if (puVar5 == (undefined8 *)0x0) goto LAB_180571bfc;
    puVar6 = (undefined8 *)*puVar5;
  }
  else {
    puVar3 = *ppuVar1;
    *ppuVar1 = puVar5;
    if (puVar3 == (undefined8 *)0x0) goto LAB_180571bfc;
    puVar6 = (undefined8 *)*puVar3;
    puVar5 = puVar3;
  }
  (*(code *)*puVar6)(puVar5,1);
LAB_180571bfc:
  *param_1 = puVar4;
  return param_1;
}



############ FUN_ 180571d20 size=74 ############

undefined8 *
FUN_180571d20(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(8);
  uVar1 = FUN_181252c60(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 180571d70 size=81 ############

undefined8 *
FUN_180571d70(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(8,param_2,param_3,param_4,0xfffffffffffffffe);
  uVar1 = FUN_181252bd0(uVar1);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 181252bd0 size=106 ############

longlong * FUN_181252bd0(longlong *param_1,float param_2,undefined4 param_3)

{
  undefined8 uVar1;
  longlong lVar2;
  float fVar3;
  
  uVar1 = FUN_1811316e0(0x40);
  fVar3 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= param_2) && (fVar3 = DAT_1824c45c8, param_2 <= DAT_1824c45c8)) {
    fVar3 = param_2;
  }
  lVar2 = FUN_1804a2b80(uVar1,param_3,fVar3);
  *param_1 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 180573680 size=113 ############

undefined8 *
FUN_180573680(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<std::function<void___cdecl(juce::StringRef,float)>,void,juce::String,float>
            ::vftable;
  puVar2[8] = 0;
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,puVar2 + 1,param_3,param_4,uVar3);
    puVar2[8] = uVar3;
  }
  return puVar2;
}



############ FUN_ 1805785f0 size=570 ############

void FUN_1805785f0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  char cVar3;
  undefined8 uVar4;
  longlong lVar5;
  uint *puVar6;
  byte *pbVar7;
  byte *pbVar8;
  longlong lVar9;
  longlong lVar10;
  byte *local_res8;
  longlong *local_res10;
  longlong local_res18;
  longlong local_res20;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  plVar2 = *(longlong **)(*param_1 + 0x448);
  lVar10 = 0;
  local_res10 = param_2;
  if (*(code **)(*plVar2 + 0x50) == FUN_181176450) {
    uVar4 = FUN_181248c30(param_2,&local_res20,FUN_181176450,param_4,0xfffffffffffffffe);
    FUN_181248e40(uVar4,&local_res8);
    puVar6 = (uint *)(local_res20 + -0x10);
    pbVar7 = local_res8;
    lVar9 = lVar10;
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    while( true ) {
      while( true ) {
        pbVar8 = pbVar7 + 1;
        if (-1 < (char)*pbVar7) break;
        if ((*pbVar8 & 0xc0) != 0x80) goto LAB_1805786c7;
        do {
          pbVar8 = pbVar8 + 1;
        } while ((*pbVar8 & 0xc0) == 0x80);
        pbVar7 = pbVar8;
        lVar9 = lVar9 + 1;
      }
      if (*pbVar7 == 0) break;
LAB_1805786c7:
      pbVar7 = pbVar8;
      lVar9 = lVar9 + 1;
    }
    if ((int)lVar9 == 0) {
      puVar6 = (uint *)(local_res8 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      goto LAB_1805787f2;
    }
    cVar3 = FUN_180486900(plVar2 + 6,&local_res8);
    FUN_181176290(plVar2);
    puVar6 = (uint *)(local_res8 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  else {
    cVar3 = (**(code **)(*plVar2 + 0x50))(plVar2);
  }
  if (cVar3 != '\0') {
    (**(code **)(**(longlong **)(*param_1 + 0x448) + 0x10))();
    uVar4 = FUN_1811316e0(0x2b8);
    local_res18 = *param_2;
    if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
      UNLOCK();
    }
    lVar5 = FUN_18148b250(uVar4,&local_res18);
    lVar9 = lVar10;
    if (*param_1 != 0) {
      lVar9 = *param_1 + 0xe0;
    }
    FUN_18056aa40(lVar5 + 0xf0,lVar9);
    if (lVar5 != 0) {
      lVar10 = lVar5 + 200;
    }
    FUN_1815eeb30(*param_1 + 0x108,lVar10,*(int *)(*param_1 + 0x3c4) + -1,param_4,uVar11,uVar4);
    FUN_1815ecd00(*param_1 + 0x108);
  }
LAB_1805787f2:
  puVar6 = (uint *)(*param_2 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return;
}



############ FUN_ 181176290 size=428 ############

void FUN_181176290(longlong param_1)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong lVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *_Memory;
  int iVar5;
  longlong lVar6;
  undefined8 *puVar7;
  longlong lVar8;
  longlong lVar9;
  char *local_res8;
  undefined8 *local_res10;
  LPCRITICAL_SECTION local_res18;
  
  lVar1 = *(longlong *)(param_1 + 8);
  puVar7 = *(undefined8 **)(lVar1 + 8);
  do {
    _Memory = puVar7;
    if (_Memory == (undefined8 *)0x0) {
      lVar6 = FUN_1812469a0(*(undefined8 *)(param_1 + 8),"KEYWORDS");
      lVar9 = *(longlong *)(param_1 + 0x30);
      lVar1 = lVar9 + (longlong)*(int *)(param_1 + 0x3c) * 8;
      if (lVar9 != lVar1) {
        local_res8 = "KEYWORD";
        do {
          puVar7 = (undefined8 *)FUN_1811316e0(0x20);
          *puVar7 = 0;
          plVar4 = puVar7 + 1;
          *plVar4 = 0;
          puVar7[2] = 0;
          local_res10 = puVar7;
          local_res18 = (LPCRITICAL_SECTION)(puVar7 + 3);
          lVar8 = FUN_18122bf10();
          lpCriticalSection = (LPCRITICAL_SECTION)(lVar8 + 0x10);
          local_res18 = lpCriticalSection;
          EnterCriticalSection(lpCriticalSection);
          FUN_18122c130(lVar8);
          FUN_181211b90(puVar7 + 3,lVar8,&local_res8);
          LeaveCriticalSection(lpCriticalSection);
          lVar8 = FUN_1812207e0(lVar9);
          if (lVar8 != 0) {
            lVar3 = *plVar4;
            while (lVar3 != 0) {
              plVar4 = (longlong *)*plVar4;
              lVar3 = *plVar4;
            }
            *plVar4 = lVar8;
          }
          lVar8 = *(longlong *)(lVar6 + 8);
          plVar4 = (longlong *)(lVar6 + 8);
          while (lVar8 != 0) {
            plVar4 = (longlong *)*plVar4;
            lVar8 = *plVar4;
          }
          *plVar4 = (longlong)puVar7;
          lVar9 = lVar9 + 8;
        } while (lVar9 != lVar1);
      }
      return;
    }
    puVar7 = (undefined8 *)*_Memory;
    iVar5 = FUN_18049bb30(_Memory[3],"KEYWORDS");
  } while (iVar5 != 0);
  puVar7 = (undefined8 *)(lVar1 + 8);
  puVar2 = *(undefined8 **)(lVar1 + 8);
  do {
    if (puVar2 == (undefined8 *)0x0) {
LAB_181176317:
      FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (puVar2 == _Memory) {
      puVar2 = (undefined8 *)*puVar7;
      if (puVar2 != (undefined8 *)0x0) {
        *puVar7 = *puVar2;
        *puVar2 = 0;
      }
      goto LAB_181176317;
    }
    puVar7 = puVar2;
    puVar2 = (undefined8 *)*puVar2;
  } while( true );
}



############ FUN_ 1812469a0 size=135 ############

undefined8 *
FUN_1812469a0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar3 = 0;
  puVar3[1] = 0;
  puVar3[2] = 0;
  uVar4 = FUN_18122bf10();
  FUN_18122c330(uVar4,puVar3 + 3,param_2,param_4,uVar5);
  plVar1 = (longlong *)(param_1 + 8);
  lVar2 = *plVar1;
  while (lVar2 != 0) {
    plVar1 = (longlong *)*plVar1;
    lVar2 = *plVar1;
  }
  *plVar1 = (longlong)puVar3;
  return puVar3;
}



############ FUN_ 18148b250 size=909 ############

undefined8 * FUN_18148b250(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  uint *puVar10;
  longlong *plVar11;
  longlong *plVar12;
  longlong local_res20;
  longlong local_d8;
  longlong local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined **local_b8;
  undefined8 *local_b0;
  undefined ***local_80;
  undefined1 local_78 [56];
  
  local_c0 = 0xfffffffffffffffe;
  FUN_18056b680();
  local_res20 = *param_2;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1815fb460(param_1 + 0x19,&local_res20);
  puVar5 = param_1 + 0x1d;
  *param_1 = PresetKeywordMenuItem::vftable;
  param_1[0x16] = PresetKeywordMenuItem::vftable;
  param_1[0x19] = PresetKeywordMenuItem::vftable;
  *puVar5 = PresetKeywordMenuItem::vftable;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  FUN_181408890(param_1 + 0x21);
  lVar3 = *param_2;
  param_1[0x55] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x56] = 0;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2);
  if (param_1[0xd] == 0) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar6 = juce::StandardCachedComponentImage::vftable;
    puVar6[1] = 0;
    puVar6[2] = 0;
    puVar6[3] = 0;
    puVar6[4] = param_1;
    *(undefined4 *)(puVar6 + 5) = 0x3f800000;
    puVar9 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar6;
    if (puVar9 != (undefined8 *)0x0) {
      (**(code **)*puVar9)(puVar9,1);
    }
  }
  uVar7 = FUN_1811316e0(0x3d8);
  local_c8 = uVar7;
  FUN_18049c4e0(&local_d0,
                "<svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.2573 0.945632C19.8396 1.53487 19.834 2.4846 19.2447 3.06692L12.634 9.59995L20.0544 16.9331C20.6436 17.5154 20.6492 18.4651 20.0669 19.0544C19.4846 19.6436 18.5349 19.6492 17.9456 19.0669L10.5 11.7088L3.05437 19.0669C2.46513 19.6492 1.5154 19.6436 0.933085 19.0543C0.350774 18.4651 0.356391 17.5154 0.945632 16.9331L8.36601 9.59995L1.75526 3.06693C1.16601 2.48462 1.1604 1.53489 1.74271 0.945649C2.32502 0.356408 3.27475 0.350791 3.86399 0.933102L10.5 7.49106L17.136 0.933085C17.7252 0.350774 18.675 0.356391 19.2573 0.945632Z\" fill=\"black\"/>\n</svg>\n"
               );
  FUN_18049c4e0(&local_d8,"delete keyword");
  uVar8 = FUN_180576a30(local_78,&local_d0);
  uVar7 = FUN_1815f9c50(uVar7,&local_d8,uVar8,DAT_18262bb60);
  puVar9 = (undefined8 *)param_1[0x20];
  param_1[0x20] = uVar7;
  if (puVar9 != (undefined8 *)0x0) {
    (**(code **)*puVar9)(puVar9,1);
  }
  puVar10 = (uint *)(local_d8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_d0 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  plVar4 = (longlong *)param_1[0x20];
  if (plVar4 != (longlong *)0x0) {
    (**(code **)(*plVar4 + 0x58))(plVar4,1);
    FUN_181343cc0(param_1,plVar4,0xffffffff);
  }
  FUN_181342bf0(param_1[0x20],0);
  lVar3 = param_1[0x20];
  if (puVar5 != (undefined8 *)0x0) {
    plVar12 = (longlong *)(lVar3 + 0x160);
    plVar11 = (longlong *)*plVar12;
    iVar2 = *(int *)(lVar3 + 0x16c);
    plVar4 = plVar11 + iVar2;
    for (; plVar11 != plVar4; plVar11 = plVar11 + 1) {
      if (puVar5 == (undefined8 *)*plVar11) goto LAB_18148b50f;
    }
    if (*(int *)(lVar3 + 0x168) < iVar2 + 1) {
      FUN_18047cb30(plVar12,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar3 + 0x16c);
    *(int *)(lVar3 + 0x16c) = iVar2 + 1;
    *(undefined8 **)(*plVar12 + (longlong)iVar2 * 8) = puVar5;
  }
LAB_18148b50f:
  FUN_181341570(param_1[0x20],param_1,0);
  FUN_181410d30(param_1 + 0x21,"deleteButtonAlpha",0);
  local_b8 = std::
             _Func_impl_no_alloc<<lambda_28297e8d2b3e89615a5bd9577e8301b5>,void,juce::StringRef,float>
             ::vftable;
  local_80 = &local_b8;
  local_b0 = param_1;
  FUN_181410000(param_1 + 0x21,&local_b8);
  if (param_1[0xd] == 0) {
    puVar9 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar9 = juce::StandardCachedComponentImage::vftable;
    puVar9[1] = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    puVar9[4] = param_1;
    *(undefined4 *)(puVar9 + 5) = 0x3f800000;
    puVar5 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar9;
    if (puVar5 != (undefined8 *)0x0) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  puVar10 = (uint *)(*param_2 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return param_1;
}



############ FUN_ 180579d20 size=102 ############

undefined8 * FUN_180579d20(undefined8 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_1811316e0(0x20);
  uVar1 = *param_2;
  *(undefined8 *)(puVar2 + 2) = 0;
  *(undefined8 *)(puVar2 + 4) = 0;
  *(undefined8 *)(puVar2 + 6) = 0;
  *(undefined8 *)(puVar2 + 2) = *(undefined8 *)(param_2 + 2);
  *(undefined8 *)(puVar2 + 4) = *(undefined8 *)(param_2 + 4);
  *puVar2 = uVar1;
  *(undefined8 *)(puVar2 + 6) = *(undefined8 *)(param_2 + 6);
  *(undefined8 *)(param_2 + 2) = 0;
  *(undefined8 *)(param_2 + 4) = 0;
  *(undefined8 *)(param_2 + 6) = 0;
  *param_1 = puVar2;
  return param_1;
}



############ FUN_ 18114e120 size=657 ############

void FUN_18114e120(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  uint uVar2;
  double dVar3;
  double dVar4;
  code *pcVar5;
  undefined8 *puVar6;
  char cVar7;
  char cVar8;
  undefined8 uVar9;
  undefined8 *puVar10;
  longlong lVar11;
  longlong *plVar12;
  uint *_Memory;
  void *pvVar13;
  undefined8 *puVar14;
  void *local_58;
  int local_4c;
  
  cVar7 = *(char *)(param_1 + 0x10c);
  puVar14 = *(undefined8 **)(param_1 + 0x50);
  puVar6 = puVar14 + *(int *)(param_1 + 0x5c);
LAB_18114e161:
  do {
    if (puVar14 == puVar6) {
LAB_18114e365:
      _Memory = (uint *)(*param_2 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      return;
    }
    plVar12 = (longlong *)*puVar14;
    pcVar5 = *(code **)(*plVar12 + 0x10);
    if (pcVar5 == .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__) {
      (**(code **)(*plVar12 + 8))(plVar12,&local_58);
      pvVar1 = (void *)((longlong)local_58 + (longlong)local_4c * 8);
      pvVar13 = local_58;
      while( true ) {
        if (pvVar13 == pvVar1) {
          FUN_180488c50(&local_58);
                    /* WARNING: Subroutine does not return */
          free(local_58);
        }
        cVar7 = FUN_18123fe10(param_2);
        if (cVar7 != '\0') break;
        pvVar13 = (void *)((longlong)pvVar13 + 8);
      }
      FUN_180488c50(&local_58);
                    /* WARNING: Subroutine does not return */
      free(local_58);
    }
    cVar8 = (*pcVar5)(plVar12,param_2);
    if (cVar8 != '\0') {
      uVar9 = FUN_1811316e0(0x28);
      puVar10 = (undefined8 *)FUN_18123efe0(uVar9,param_2);
      if (*(char *)puVar10[4] == '\0') {
        lVar11 = (**(code **)(*plVar12 + 0x50))(plVar12,puVar10,1);
        if (lVar11 == 0) goto LAB_18114e25c;
        plVar12 = (longlong *)FUN_1811316e0(0x28);
        *plVar12 = (longlong)juce::AudioFormatReaderSource::vftable;
        plVar12[1] = lVar11;
        *(undefined1 *)(plVar12 + 2) = 1;
        plVar12[3] = 0;
        *(undefined1 *)(plVar12 + 4) = 0;
        if ((undefined **)*plVar12 == juce::AudioFormatReaderSource::vftable) {
          *(undefined1 *)(plVar12 + 4) = 1;
        }
        else {
          (*(code *)((undefined **)*plVar12)[8])(plVar12,1);
        }
        uVar9 = *(undefined8 *)(lVar11 + 8);
        FUN_1813baca0(param_1 + 0x70,plVar12);
        puVar6 = *(undefined8 **)(param_1 + 0x68);
        *(longlong **)(param_1 + 0x68) = plVar12;
        if (puVar6 != (undefined8 *)0x0) {
          (**(code **)*puVar6)(puVar6,1);
        }
        if (cVar7 != '\0') {
          dVar3 = *(double *)(param_1 + 0x110);
          if (0.0 < dVar3) {
            lVar11 = (longlong)(dVar3 * 0.0);
            plVar12 = *(longlong **)(param_1 + 200);
            if (plVar12 != (longlong *)0x0) {
              dVar4 = *(double *)(param_1 + 0x118);
              if (0.0 < dVar4) {
                lVar11 = (longlong)(((double)lVar11 * dVar4) / dVar3);
              }
              (**(code **)(*plVar12 + 0x20))(plVar12,lVar11,dVar3,dVar4,uVar9);
              if (*(longlong *)(param_1 + 0xb8) != 0) {
                FUN_1812aa290();
              }
              *(undefined1 *)(param_1 + 0x129) = 0;
            }
          }
          FUN_1813bab70(param_1 + 0x70);
        }
        goto LAB_18114e365;
      }
      (**(code **)*puVar10)(puVar10,1);
      puVar14 = puVar14 + 1;
      goto LAB_18114e161;
    }
LAB_18114e25c:
    puVar14 = puVar14 + 1;
  } while( true );
}



############ FUN_ 1814c67f0 size=1393 ############

void FUN_1814c67f0(longlong param_1)

{
  int iVar1;
  undefined8 *puVar2;
  longlong lVar3;
  float fVar4;
  double dVar5;
  uint uVar6;
  int iVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong lVar10;
  undefined8 uVar11;
  undefined8 *puVar12;
  longlong *plVar13;
  longlong lVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  undefined4 local_res10;
  undefined4 local_res18;
  undefined1 *puVar18;
  undefined4 uVar19;
  undefined8 local_1f0;
  undefined8 uStack_1e8;
  undefined8 local_1e0;
  longlong local_1d8;
  undefined8 local_1d0;
  undefined8 uStack_1c8;
  double local_1c0;
  double local_1b8;
  double local_1b0;
  longlong *local_1a8;
  byte local_1a0;
  undefined8 local_198;
  undefined8 local_190;
  longlong local_188;
  undefined8 *local_180;
  longlong *local_178;
  undefined **local_170;
  longlong *local_168;
  undefined ***local_138;
  undefined **local_130;
  longlong *local_128;
  undefined ***local_f8;
  undefined1 local_f0 [16];
  undefined1 local_e0 [56];
  undefined8 local_a8;
  
  local_198 = 0xfffffffffffffffe;
  FUN_1814c65c0();
  puVar2 = *(undefined8 **)(*(longlong *)(param_1 + 0xd8) + 0x98);
  puVar12 = *(undefined8 **)(*(longlong *)(param_1 + 0xd8) + 0x90);
  fVar4 = DAT_1824c41e0;
  dVar5 = DAT_1824c4520;
  uVar6 = DAT_1824c4f30;
  do {
    DAT_1824c41e0 = fVar4;
    DAT_1824c4520 = dVar5;
    DAT_1824c4f30 = uVar6;
    if (puVar12 == puVar2) {
      lVar14 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 0xa8);
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 0xb0);
      if (lVar14 != lVar3) {
        local_180 = &local_1f0;
        do {
          plVar9 = (longlong *)FUN_1811316e0(1000);
          local_1f0 = 0;
          uStack_1e8 = 0;
          local_1e0 = 0;
          local_1d8 = *(longlong *)(lVar14 + 0x18);
          if ((*(uint *)(local_1d8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_1d8 + -0x10) = *(int *)(local_1d8 + -0x10) + 1;
            UNLOCK();
          }
          local_178 = plVar9;
          FUN_1812217a0(&local_1f0,lVar14);
          local_1d0 = *(undefined8 *)(lVar14 + 0x20);
          uStack_1c8 = *(undefined8 *)(lVar14 + 0x28);
          FUN_180579c10(plVar9,"Tutorial float");
          *plVar9 = (longlong)CloudyTutorialFloat::vftable;
          plVar9[0x16] = (longlong)CloudyTutorialFloat::vftable;
          FUN_180577240(plVar9 + 0x19,&local_1f0);
          plVar13 = plVar9 + 0x1f;
          FUN_1814cd550(plVar13);
          FUN_1815f84a0(plVar9 + 0x47);
          *(undefined4 *)(plVar9 + 0x7c) = 0x3f000000;
          FUN_1814cdcf0(plVar13,&local_1f0);
          local_res10 = CONCAT13(0x7f,(int3)DAT_18262bb60);
          *(undefined4 *)(plVar9 + 0x3e) = local_res10;
          (**(code **)(*plVar13 + 0x58))(plVar13,1);
          FUN_181343cc0(plVar9,plVar13,0xffffffff);
          *(byte *)(plVar9 + 0x15) = *(byte *)(plVar9 + 0x15) & 0xef | 8;
          local_res18 = CONCAT13(0x19,(int3)DAT_18262bb5c);
          *(undefined4 *)((longlong)plVar9 + 0x30c) = local_res18;
          local_a8 = 0;
          local_170 = std::
                      _Func_impl_no_alloc<<lambda_9513ec08231a7074696b3f499432f453>,juce::Path*___ptr64>
                      ::vftable;
          local_138 = &local_170;
          local_130 = std::_Func_impl_no_alloc<<lambda_6e5e2e913c92b735bbacc9fa6df078f6>,int>::
                      vftable;
          local_f8 = &local_130;
          puVar18 = local_e0;
          local_168 = plVar9;
          local_128 = plVar9;
          FUN_1815f8200(plVar9 + 0x47,plVar9,&local_130,&local_170,puVar18);
          uVar19 = (undefined4)((ulonglong)puVar18 >> 0x20);
          FUN_1812472e0(&local_1f0);
          uVar11 = *(undefined8 *)(param_1 + 0x130);
          (**(code **)(*plVar9 + 0x58))(plVar9,1);
          FUN_181343cc0(uVar11,plVar9,0xffffffff);
          if ((undefined **)*plVar9 == CloudyTutorialFloat::vftable) {
            fVar16 = *(float *)((longlong)plVar9 + 0xf4);
            lVar10 = (**(code **)(plVar9[0x16] + 8))();
            fVar17 = (float)((uint)(*(float *)(lVar10 + 0x88) * fVar16 * *(float *)(plVar9 + 0x7c))
                            ^ uVar6);
            fVar16 = fVar17 * fVar4 + (float)(int)plVar9[5];
            if (fVar16 <= 0.0) {
              fVar16 = 0.0;
            }
            fVar15 = fVar17 * fVar4 + (float)*(int *)((longlong)plVar9 + 0x2c);
            if (fVar15 <= 0.0) {
              fVar15 = 0.0;
            }
            local_1c0 = (double)(0.0 - fVar17) + dVar5;
            local_1b8 = (double)fVar16 + dVar5;
            local_1b0 = (double)fVar15 + dVar5;
            FUN_18134bfe0(plVar13,(ulonglong)((double)(0.0 - fVar17) + dVar5) & 0xffffffff,
                          (ulonglong)local_1c0 & 0xffffffff,(ulonglong)local_1b8 & 0xffffffff,
                          CONCAT44(uVar19,local_1b0._0_4_));
          }
          else {
            (*(code *)((undefined **)*plVar9)[0x21])(plVar9);
          }
          iVar1 = *(int *)(param_1 + 0xd24);
          iVar7 = iVar1 + 1;
          if (*(int *)(param_1 + 0xd20) < iVar7) {
            if (iVar7 < 0) {
              iVar7 = iVar1 + 2;
            }
            FUN_18047cb30((longlong *)(param_1 + 0xd18),iVar1 + 9 + (iVar7 >> 1) & 0xfffffff8);
          }
          iVar7 = *(int *)(param_1 + 0xd24);
          *(int *)(param_1 + 0xd24) = iVar7 + 1;
          *(longlong **)(*(longlong *)(param_1 + 0xd18) + (longlong)iVar7 * 8) = plVar9;
          lVar14 = lVar14 + 0x30;
        } while (lVar14 != lVar3);
      }
      lVar14 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 0x70);
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 0x78);
      if (lVar14 != lVar3) {
        do {
          uVar11 = FUN_1811316e0(1000);
          lVar10 = FUN_1814ceea0(uVar11,lVar14);
          if (lVar10 != 0) {
            FUN_181343cc0(param_1,lVar10,0xffffffff);
          }
          iVar1 = *(int *)(param_1 + 0xd04);
          iVar7 = iVar1 + 1;
          if (*(int *)(param_1 + 0xd00) < iVar7) {
            if (iVar7 < 0) {
              iVar7 = iVar1 + 2;
            }
            FUN_18047cb30((longlong *)(param_1 + 0xcf8),iVar1 + 9 + (iVar7 >> 1) & 0xfffffff8);
          }
          iVar7 = *(int *)(param_1 + 0xd04);
          *(int *)(param_1 + 0xd04) = iVar7 + 1;
          *(longlong *)(*(longlong *)(param_1 + 0xcf8) + (longlong)iVar7 * 8) = lVar10;
          FUN_181341570(lVar10,param_1,1);
          lVar14 = lVar14 + 0x60;
        } while (lVar14 != lVar3);
      }
      return;
    }
    uVar11 = *puVar12;
    plVar13 = *(longlong **)(*(longlong *)(param_1 + 0x130) + 0x40);
    plVar9 = plVar13 + *(int *)(*(longlong *)(param_1 + 0x130) + 0x4c);
    local_190 = uVar11;
    for (; plVar13 != plVar9; plVar13 = plVar13 + 1) {
      plVar8 = (longlong *)*plVar13;
      local_188 = plVar8[2];
      iVar7 = FUN_18048cbc0(local_188,uVar11);
      if ((iVar7 == 0) ||
         (plVar8 = (longlong *)FUN_1813438f0(plVar8,uVar11,1), plVar8 != (longlong *)0x0)) {
        if (plVar8 != (longlong *)0x0) {
          local_1a0 = *(byte *)(plVar8 + 0x15) >> 1 & 1;
          local_1a8 = plVar8;
          FUN_18057bd50(param_1 + 0xd08,local_f0);
          (**(code **)(*plVar8 + 0x58))(plVar8,0);
        }
        break;
      }
    }
    puVar12 = puVar12 + 1;
    fVar4 = DAT_1824c41e0;
    dVar5 = DAT_1824c4520;
    uVar6 = DAT_1824c4f30;
  } while( true );
}



############ FUN_ 1814cd650 size=1637 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814cd650(longlong param_1)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  ulonglong *puVar6;
  longlong lVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined8 *puVar11;
  int iVar12;
  ulonglong uVar13;
  uint *puVar14;
  uint *puVar15;
  undefined8 *puVar16;
  int iVar17;
  bool bVar18;
  undefined1 auStack_1e8 [32];
  longlong local_1c8;
  char *local_1b8;
  undefined4 local_1b0 [2];
  longlong local_1a8;
  longlong local_1a0;
  longlong *local_198;
  float local_190;
  float local_18c;
  float local_188;
  float local_184;
  undefined1 *local_180;
  longlong local_178;
  undefined8 local_170;
  longlong local_168;
  void *local_160;
  longlong *local_158;
  longlong local_150;
  undefined8 *local_148;
  undefined8 *local_140;
  undefined8 *local_138;
  longlong *local_130;
  undefined8 *local_128;
  longlong local_120;
  undefined8 *local_118;
  undefined1 *local_110;
  void *local_108;
  undefined4 local_fc;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_ec;
  longlong local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined1 local_c8 [8];
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 *local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [55];
  undefined1 local_41;
  ulonglong local_40 [3];
  
  local_90 = 0xfffffffffffffffe;
  local_40[0] = DAT_182615970 ^ (ulonglong)auStack_1e8;
  plVar8 = (longlong *)(param_1 + 0x130);
  lVar7 = *plVar8;
  local_198 = plVar8;
  local_120 = param_1;
  FUN_18048a070(plVar8,*(undefined8 *)(lVar7 + 8));
  *(longlong *)(*plVar8 + 8) = lVar7;
  *(longlong *)*plVar8 = lVar7;
  *(longlong *)(*plVar8 + 0x10) = lVar7;
  *(undefined8 *)(param_1 + 0x138) = 0;
  puVar5 = (undefined8 *)FUN_1811316e0(0x170);
  local_110 = &DAT_1821dbf98;
  local_180 = &DAT_1821dbf98;
  local_138 = puVar5;
  FUN_181254d40(puVar5,&local_180,&local_110);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar18 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar18) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar18 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar18) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *puVar5 = juce::CustomTypeface::vftable;
  puVar5[0xc] = 0;
  puVar5[0xd] = 0;
  FUN_181253f80(puVar5);
  puVar6 = (ulonglong *)FUN_18123aca0();
  uVar13 = *puVar6 * 0x5deece66d + 0xb & 0xffffffffffff;
  *puVar6 = uVar13;
  lVar7 = FUN_181233e10(local_40,uVar13 >> 0x10);
  FUN_180495150(&local_1a0,lVar7,&local_41 + -lVar7);
  FUN_18049c4e0(&local_1a8,"icon font");
  plVar8 = (longlong *)FUN_181232d30(&local_1a8,&local_1a0);
  local_178 = *plVar8;
  puVar15 = (uint *)(local_178 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    *puVar15 = *puVar15 + 1;
    UNLOCK();
  }
  puVar14 = (uint *)(local_1a8 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    *puVar15 = *puVar15 + 1;
    UNLOCK();
  }
  LOCK();
  lVar7 = puVar5[2];
  puVar5[2] = local_178;
  UNLOCK();
  puVar14 = (uint *)(lVar7 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  *(undefined4 *)(puVar5 + 0xb) = 1;
  *(undefined4 *)((longlong)puVar5 + 0x5c) = 0x3e99999a;
  FUN_18049c4e0(&local_170,"Regular");
  local_e0 = puVar5[3];
  puVar5[3] = local_170;
  puVar14 = (uint *)(local_e0 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  puVar15 = (uint *)(local_1a0 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  uVar3 = DAT_1824c3f20;
  local_130 = (longlong *)(param_1 + 0x108);
  iVar17 = 1;
  do {
    iVar12 = 0;
    for (puVar9 = (undefined8 *)*local_130; puVar9 != (undefined8 *)0x0;
        puVar9 = (undefined8 *)*puVar9) {
      iVar12 = iVar12 + 1;
    }
    if (iVar12 <= iVar17 + -1) {
      LOCK();
      *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
      UNLOCK();
      local_128 = puVar5;
      puVar9 = (undefined8 *)FUN_181252c60(&local_118,&local_128);
      local_98 = *(undefined8 *)(local_120 + 0x120);
      *(undefined8 *)(local_120 + 0x120) = *puVar9;
      *puVar9 = local_98;
      if (local_118 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_118 + 1);
        iVar17 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar17 == 1) {
          (**(code **)*local_118)(local_118,1);
        }
      }
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar17 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar17 == 1) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
    iVar12 = iVar17 + -2;
    plVar8 = local_130;
    while ((-1 < iVar12 && ((longlong *)*plVar8 != (longlong *)0x0))) {
      iVar12 = iVar12 + -1;
      plVar8 = (longlong *)*plVar8;
    }
    lVar7 = *plVar8;
    iVar12 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x18),&DAT_1822845d4);
    if (iVar12 == 0) {
      for (puVar9 = *(undefined8 **)(lVar7 + 0x10); puVar9 != (undefined8 *)0x0;
          puVar9 = (undefined8 *)*puVar9) {
        local_d8 = puVar9[1];
        iVar12 = FUN_18048cbc0(local_d8,&DAT_182284884);
        if (iVar12 == 0) {
          puVar9 = puVar9 + 2;
          goto LAB_1814cd9bc;
        }
      }
      puVar9 = (undefined8 *)FUN_181220d40();
LAB_1814cd9bc:
      uVar10 = FUN_1814d9640(&local_168);
      local_d0 = *puVar9;
      FUN_181245100(uVar10,&local_1b8);
      puVar15 = (uint *)(local_168 + -0x10);
      if ((*puVar15 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar15;
        *puVar15 = *puVar15 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar15);
        }
      }
      if (*local_1b8 == '\0') {
LAB_1814cda2f:
        bVar18 = false;
      }
      else {
        puVar11 = (undefined8 *)FUN_18049a930(local_c8,&local_1b8);
        DVar4 = GetFileAttributesW((LPCWSTR)*puVar11);
        bVar18 = true;
        if ((DVar4 & 0x10) != 0) goto LAB_1814cda2f;
      }
      if (bVar18) {
        uVar10 = FUN_181244920(&local_1b8,&local_150);
        FUN_1812483a0(&local_160,uVar10);
        FUN_18132eac0(&local_158,local_160);
        (**(code **)(*local_158 + 0x160))(local_158,&local_108);
        (**(code **)*local_158)(local_158,1);
        if (local_160 != (void *)0x0) {
          FUN_1812472e0(local_160);
                    /* WARNING: Subroutine does not return */
          free(local_160);
        }
        puVar15 = (uint *)(local_150 + -0x10);
        if ((*puVar15 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar15;
          *puVar15 = *puVar15 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar15);
          }
        }
        local_88 = _DAT_1824c4b60;
        uStack_80 = _UNK_1824c4b68;
        local_1b0[0] = 0x24;
        local_184 = local_ec - local_f0;
        local_188 = local_f4 - local_f8;
        local_190 = local_f8;
        local_18c = local_f0;
        FUN_1812971a0(local_1b0,local_78,&local_190,&local_88);
        FUN_18129b680(&local_108,local_78);
        FUN_181253de0(puVar5,iVar17,&local_108,uVar3);
        local_b0 = (undefined8 *)*local_198;
        puVar5 = local_b0;
        if (*(char *)((longlong)local_b0[1] + 0x19) == '\0') {
          uVar10 = *puVar9;
          puVar16 = local_b0;
          puVar11 = (undefined8 *)local_b0[1];
          local_c0 = uVar10;
          do {
            puVar5 = puVar11;
            local_b8 = puVar5[4];
            iVar12 = FUN_18048cbc0(local_b8,uVar10);
            if (iVar12 < 0) {
              puVar11 = (undefined8 *)puVar5[2];
              puVar5 = puVar16;
            }
            else {
              puVar11 = (undefined8 *)*puVar5;
            }
            puVar16 = puVar5;
          } while (*(char *)((longlong)puVar11 + 0x19) == '\0');
        }
        plVar8 = local_198;
        if (puVar5 != local_b0) {
          local_a8 = puVar5[4];
          local_a0 = *puVar9;
          iVar12 = FUN_18048cbc0();
          if (-1 < iVar12) goto LAB_1814cdbf2;
        }
        local_148 = puVar9;
        local_1c8 = FUN_18048fc10(plVar8);
        FUN_18048fc70(plVar8,&local_140,puVar5,local_1c8 + 0x20);
        puVar5 = local_140;
LAB_1814cdbf2:
        *(int *)(puVar5 + 5) = iVar17;
        local_fc = 0;
                    /* WARNING: Subroutine does not return */
        free(local_108);
      }
      puVar15 = (uint *)(local_1b8 + -0x10);
      if ((*puVar15 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar15;
        *puVar15 = *puVar15 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar15);
        }
      }
    }
    iVar17 = iVar17 + 1;
  } while( true );
}



############ FUN_ 18057c850 size=212 ############

undefined8 * FUN_18057c850(longlong param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  *(undefined1 *)(puVar1 + 4) = 1;
  (**(code **)(*(longlong *)(*(longlong *)(param_1 + 8) + 0xb0) + 8))();
  FUN_18129d5a0(puVar1,0);
  return puVar1;
}



############ FUN_ 18057cd60 size=145 ############

undefined8 * FUN_18057cd60(void)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  *(undefined1 *)(puVar1 + 4) = 1;
  FUN_18129d850(puVar1,0);
  return puVar1;
}



############ FUN_ 1811caa60 size=1010 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811caa60(undefined8 param_1,longlong *param_2)

{
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong *plVar5;
  int iVar6;
  uint *puVar7;
  undefined8 *puVar8;
  bool bVar9;
  undefined1 auStack_118 [32];
  longlong local_f8;
  longlong *local_f0;
  longlong local_e8;
  undefined1 *local_e0;
  longlong local_d8;
  undefined8 local_d0;
  longlong local_c8;
  undefined **local_c0;
  undefined8 local_b8;
  undefined **local_b0;
  longlong local_a8;
  undefined8 local_a0;
  longlong *local_98;
  undefined **local_90;
  longlong local_88;
  undefined **local_80;
  longlong local_78;
  longlong *local_70;
  undefined1 local_68 [8];
  undefined **local_60;
  longlong *local_58;
  longlong *local_50;
  undefined1 local_48 [8];
  ulonglong local_40;
  
  local_a0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_d0 = param_1;
  local_98 = param_2;
  puVar3 = (undefined8 *)
           .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
           vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                     (param_1,&local_50);
  (**(code **)(*(longlong *)*puVar3 + 0x20))((longlong *)*puVar3,&local_d8,puVar3 + 1);
  (**(code **)(*local_50 + 0xb0))(local_50,local_48);
  FUN_181249700(&local_70,&local_d8);
  cVar2 = (**(code **)(*local_70 + 0x90))();
  if (cVar2 == '\0') {
    FUN_18049c4e0(&local_e8,&DAT_1821d9354);
    plVar4 = (longlong *)FUN_181232d30(&local_e8,param_2);
    local_f8 = *plVar4;
    if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(local_e8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_f0 = &local_f8;
    FUN_181232e20(&local_f8,&DAT_1821d9324,&DAT_1821d9326);
    local_e0 = (undefined1 *)local_f8;
    if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(local_f8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_b0 = &PTR_vftable_18262b560;
    local_a8 = local_f8;
    local_e0 = &DAT_1821dbf98;
    FUN_1811d0a50(param_1,&local_b0);
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar1 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar9 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar1;
      if (bVar9) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  else {
    plVar4 = (longlong *)(**(code **)(*local_70 + 0x38))(local_70,local_68);
    local_90 = &PTR_vftable_18262b560;
    local_88 = *param_2;
    if ((*(uint *)(local_88 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_88 + -0x10) = *(int *)(local_88 + -0x10) + 1;
      UNLOCK();
    }
    puVar3 = (undefined8 *)*plVar4;
    puVar8 = puVar3 + (longlong)*(int *)((longlong)plVar4 + 0xc) * 2;
    for (; puVar3 != puVar8; puVar3 = puVar3 + 2) {
      cVar2 = (**(code **)(*local_90 + 0xc0))(local_90,&local_88,puVar3 + 1,*puVar3);
      if (cVar2 != '\0') {
        bVar9 = true;
        goto LAB_1811cab7b;
      }
    }
    bVar9 = false;
LAB_1811cab7b:
    (**(code **)(*local_90 + 0xb0))(local_90,&local_88);
    if (!bVar9) {
      local_80 = &PTR_vftable_18262b560;
      local_78 = *param_2;
      if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
        UNLOCK();
      }
      iVar6 = *(int *)((longlong)plVar4 + 0xc) + 1;
      if ((int)plVar4[1] < iVar6) {
        FUN_180489a50(plVar4,*(int *)((longlong)plVar4 + 0xc) + 9 + iVar6 / 2 & 0xfffffff8);
      }
      iVar6 = *(int *)((longlong)plVar4 + 0xc);
      *(int *)((longlong)plVar4 + 0xc) = iVar6 + 1;
      puVar3 = (undefined8 *)((longlong)iVar6 * 0x10 + *plVar4);
      *puVar3 = local_80;
      puVar3[1] = local_78;
      local_80 = &PTR_vftable_18262b558;
      (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_78);
      local_60 = &PTR_vftable_18262b4c8;
      plVar5 = (longlong *)FUN_1811316e0(0x20);
      *(undefined4 *)(plVar5 + 1) = 0;
      *plVar5 = (longlong)juce::var::VariantType_Array::RefCountedArray::vftable;
      local_f0 = plVar5;
      FUN_18049b170(plVar5 + 2,plVar4);
      LOCK();
      *(int *)(plVar5 + 1) = (int)plVar5[1] + 1;
      UNLOCK();
      local_58 = plVar5;
      puVar3 = (undefined8 *)FUN_1812495e0(&local_c8,&local_60,1);
      local_c0 = &PTR_vftable_18262b560;
      local_b8 = *puVar3;
      *puVar3 = &DAT_1821dbf98;
      FUN_1811d0a50(local_d0,&local_c0);
      puVar7 = (uint *)(local_c8 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      (**(code **)(*local_60 + 0xb0))(local_60,&local_58);
    }
  }
  (**(code **)(*local_70 + 0xb0))(local_70,local_68);
  puVar7 = (uint *)(local_d8 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(*param_2 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
}



############ FUN_ 18057dab0 size=203 ############

void FUN_18057dab0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  uint uVar4;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  
  plVar1 = *(longlong **)(param_1 + 8);
  if (0 < (int)plVar1[9]) {
    FUN_1811528b0(plVar1,&local_res10,param_3,param_4,0xfffffffffffffffe);
    uVar4 = (int)plVar1[9] - 1;
    uVar2 = 0;
    if (uVar4 < *(uint *)((longlong)plVar1 + 0x44)) {
      uVar2 = *(undefined8 *)(plVar1[7] + (longlong)(int)uVar4 * 8);
    }
    FUN_18115d300(plVar1,uVar2);
    FUN_1811528b0(plVar1,&local_res8);
    local_res18 = FUN_1811316e0(0x28);
    uVar3 = local_res10;
    uVar2 = local_res8;
    local_res8 = 0;
    local_res10 = 0;
    uVar2 = FUN_181152830(local_res18,uVar3,uVar2,plVar1);
    if (*(char *)(*plVar1 + 0x1b8) == '\0') {
      uVar3 = FUN_18118c230();
      FUN_181352640(uVar3);
      FUN_1813526d0(uVar3,uVar2);
    }
  }
  return;
}



############ FUN_ 1811528b0 size=244 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811528b0(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined1 auStack_88 [32];
  undefined8 *local_68;
  undefined1 *local_60;
  undefined1 local_58 [8];
  undefined8 local_50 [2];
  undefined8 local_40;
  undefined8 local_38;
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_40 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_68 = param_2;
  puVar1 = (undefined8 *)(**(code **)(param_1[1] + 0x10))(param_1 + 1,&local_30);
  local_60 = &DAT_1821dbf98;
  puVar2 = (undefined8 *)
           (**(code **)(*(longlong *)*param_1 + 0x10))((longlong *)*param_1,&local_68,&local_60);
  uVar3 = FUN_1811316e0(0x40);
  local_38 = uVar3;
  (**(code **)(*(longlong *)*puVar1 + 0x20))((longlong *)*puVar1,local_58,puVar1 + 1);
  local_50[0] = *puVar2;
  *puVar2 = 0;
  uVar3 = FUN_181182b70(uVar3,local_50,local_58);
  puVar1 = local_68;
  *param_2 = uVar3;
  if (local_68 != (undefined8 *)0x0) {
    FUN_1812472e0(local_68);
                    /* WARNING: Subroutine does not return */
    free(puVar1);
  }
  (**(code **)(*local_30 + 0xb0))(local_30,local_28);
}



############ FUN_ 18057db80 size=207 ############

void .?AVSoothe2_DynamicCryptoManager@eden@pace@@::vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
               (longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  uint uVar4;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  
  plVar1 = *(longlong **)(param_1 + 8);
  if ((int)plVar1[9] < *(int *)((longlong)plVar1 + 0x44) + -1) {
    FUN_1811528b0(plVar1,&local_res10,param_3,param_4,0xfffffffffffffffe);
    uVar4 = (int)plVar1[9] + 1;
    uVar2 = 0;
    if (uVar4 < *(uint *)((longlong)plVar1 + 0x44)) {
      uVar2 = *(undefined8 *)(plVar1[7] + (longlong)(int)uVar4 * 8);
    }
    FUN_18115d300(plVar1,uVar2);
    FUN_1811528b0(plVar1,&local_res8);
    local_res18 = FUN_1811316e0(0x28);
    uVar3 = local_res10;
    uVar2 = local_res8;
    local_res8 = 0;
    local_res10 = 0;
    uVar2 = FUN_181152830(local_res18,uVar3,uVar2,plVar1);
    if (*(char *)(*plVar1 + 0x1b8) == '\0') {
      uVar3 = FUN_18118c230();
      FUN_181352640(uVar3);
      FUN_1813526d0(uVar3,uVar2);
    }
  }
  return;
}



############ FUN_ 1805832e0 size=546 ############

ulonglong * FUN_1805832e0(longlong param_1,ulonglong param_2)

{
  longlong *plVar1;
  void *_Memory;
  uint uVar2;
  int iVar3;
  ulonglong *puVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  ulonglong *puVar7;
  longlong lVar8;
  undefined4 uVar9;
  longlong lVar10;
  undefined8 *puVar11;
  undefined8 *local_38;
  undefined8 local_30;
  
  plVar1 = (longlong *)(param_1 + 8);
  iVar3 = (int)(param_2 % (ulonglong)(longlong)*(int *)(param_1 + 0x14));
  puVar7 = *(ulonglong **)((longlong)iVar3 * 8 + *plVar1);
  for (puVar4 = puVar7; puVar4 != (ulonglong *)0x0; puVar4 = (ulonglong *)puVar4[2]) {
    if (*puVar4 == param_2) {
      return puVar4 + 1;
    }
  }
  puVar4 = (ulonglong *)FUN_1811316e0(0x18);
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = param_2;
  puVar4[2] = (ulonglong)puVar7;
  if (-1 < iVar3) {
    if (iVar3 < *(int *)(param_1 + 0x14)) {
      *(ulonglong **)((longlong)iVar3 * 8 + *plVar1) = puVar4;
    }
    else {
      FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
      iVar3 = *(int *)(param_1 + 0x14);
      *(int *)(param_1 + 0x14) = iVar3 + 1;
      *(ulonglong **)(*plVar1 + (longlong)iVar3 * 8) = puVar4;
    }
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  if ((*(int *)(param_1 + 0x14) * 3) / 2 < *(int *)(param_1 + 0x18)) {
    puVar5 = (undefined8 *)0x0;
    uVar2 = *(int *)(param_1 + 0x14) * 2;
    uVar6 = (ulonglong)uVar2;
    local_38 = (undefined8 *)0x0;
    local_30 = 0;
    puVar11 = puVar5;
    if (0 < (int)uVar2) {
      FUN_18047e060(&local_38);
      puVar11 = local_38;
      iVar3 = local_30._4_4_;
      if (local_30._4_4_ != 0) {
        memmove(local_38 + (int)uVar2,local_38,(longlong)local_30._4_4_ << 3);
      }
      puVar5 = puVar11;
      if (0 < (int)uVar2) {
        do {
          *puVar5 = 0;
          uVar6 = uVar6 - 1;
          puVar5 = puVar5 + 1;
        } while (uVar6 != 0);
      }
      puVar5 = (undefined8 *)(ulonglong)(iVar3 + uVar2);
      local_30 = CONCAT44(iVar3 + uVar2,(undefined4)local_30);
    }
    uVar9 = SUB84(puVar5,0);
    iVar3 = *(int *)(param_1 + 0x14) + -1;
    lVar8 = (longlong)iVar3;
    if (-1 < iVar3) {
      do {
        puVar7 = *(ulonglong **)(*plVar1 + lVar8 * 8);
        if (puVar7 != (ulonglong *)0x0) {
          do {
            puVar4 = (ulonglong *)puVar7[2];
            iVar3 = (int)(*puVar7 % (ulonglong)(longlong)(int)uVar2);
            puVar7[2] = puVar11[iVar3];
            if (-1 < iVar3) {
              if (iVar3 < (int)puVar5) {
                puVar11[iVar3] = puVar7;
              }
              else {
                FUN_18047e060(&local_38);
                lVar10 = (longlong)local_30._4_4_;
                puVar5 = (undefined8 *)(ulonglong)(local_30._4_4_ + 1U);
                local_30 = CONCAT44(local_30._4_4_ + 1U,(undefined4)local_30);
                local_38[lVar10] = puVar7;
                puVar11 = local_38;
              }
            }
            puVar7 = puVar4;
          } while (puVar4 != (ulonglong *)0x0);
        }
        uVar9 = SUB84(puVar5,0);
        lVar8 = lVar8 + -1;
      } while (-1 < lVar8);
    }
    _Memory = (void *)*plVar1;
    *plVar1 = (longlong)puVar11;
    *(undefined4 *)(param_1 + 0x10) = (undefined4)local_30;
    *(undefined4 *)(param_1 + 0x14) = uVar9;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return puVar4 + 1;
}



############ FUN_ 1805823c0 size=724 ############

longlong * FUN_1805823c0(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  uint *_Memory;
  uint uVar2;
  longlong *plVar3;
  longlong lVar4;
  void *_Memory_00;
  longlong lVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  longlong lVar12;
  undefined8 *puVar13;
  longlong lVar14;
  undefined8 *local_58;
  undefined4 local_50;
  uint uStack_4c;
  
  plVar1 = (longlong *)(param_1 + 8);
  iVar7 = FUN_18057ee50(param_2,*(undefined4 *)(param_1 + 0x14));
  lVar14 = *param_2;
  _Memory = (uint *)(lVar14 + -0x10);
  plVar3 = *(longlong **)((longlong)iVar7 * 8 + *plVar1);
  plVar9 = plVar3;
  if ((*(uint *)(lVar14 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  for (; plVar9 != (longlong *)0x0; plVar9 = (longlong *)plVar9[2]) {
    if (*plVar9 == lVar14) {
      iVar8 = 0;
    }
    else {
      iVar8 = FUN_18048cbc0(*plVar9,lVar14);
    }
    if (iVar8 == 0) {
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      return plVar9 + 1;
    }
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  plVar9 = (longlong *)FUN_1811316e0(0x18);
  lVar14 = *param_2;
  *plVar9 = lVar14;
  if ((*(uint *)(lVar14 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar14 + -0x10) = *(int *)(lVar14 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(plVar9 + 1) = 0;
  plVar9[2] = (longlong)plVar3;
  if (-1 < iVar7) {
    if (iVar7 < *(int *)(param_1 + 0x14)) {
      *(longlong **)((longlong)iVar7 * 8 + *plVar1) = plVar9;
    }
    else {
      FUN_18047e060(plVar1,*(int *)(param_1 + 0x14) + 1);
      iVar7 = *(int *)(param_1 + 0x14);
      *(int *)(param_1 + 0x14) = iVar7 + 1;
      *(longlong **)(*plVar1 + (longlong)iVar7 * 8) = plVar9;
    }
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  if (*(int *)(param_1 + 0x18) <= (*(int *)(param_1 + 0x14) * 3) / 2) {
    return plVar9 + 1;
  }
  puVar10 = (undefined8 *)0x0;
  uVar2 = *(int *)(param_1 + 0x14) * 2;
  local_58 = (undefined8 *)0x0;
  local_50 = 0;
  uStack_4c = 0;
  puVar13 = puVar10;
  if (0 < (int)uVar2) {
    FUN_18047e060(&local_58,uVar2);
    uVar6 = uStack_4c;
    puVar13 = local_58;
    if (uStack_4c != 0) {
      memmove(local_58 + (int)uVar2,local_58,(longlong)(int)uStack_4c << 3);
    }
    if (0 < (int)uVar2) {
      uVar11 = (ulonglong)uVar2;
      puVar10 = puVar13;
      do {
        *puVar10 = 0;
        uVar11 = uVar11 - 1;
        puVar10 = puVar10 + 1;
      } while (uVar11 != 0);
    }
    uStack_4c = uVar6 + uVar2;
    puVar10 = (undefined8 *)(ulonglong)uStack_4c;
  }
  iVar8 = (int)puVar10;
  iVar7 = *(int *)(param_1 + 0x14) + -1;
  lVar14 = (longlong)iVar7;
  if (-1 < iVar7) {
    do {
      lVar4 = *(longlong *)(*plVar1 + lVar14 * 8);
      while (lVar5 = lVar4, iVar8 = (int)puVar10, lVar5 != 0) {
        iVar7 = FUN_18057ee50(lVar5,uVar2);
        lVar4 = *(longlong *)(lVar5 + 0x10);
        *(undefined8 *)(lVar5 + 0x10) = puVar13[iVar7];
        if (-1 < iVar7) {
          if (iVar7 < iVar8) {
            puVar13[iVar7] = lVar5;
          }
          else {
            FUN_18047e060(&local_58,iVar8 + 1);
            lVar12 = (longlong)(int)uStack_4c;
            uStack_4c = uStack_4c + 1;
            puVar10 = (undefined8 *)(ulonglong)uStack_4c;
            local_58[lVar12] = lVar5;
            puVar13 = local_58;
          }
        }
      }
      lVar14 = lVar14 + -1;
    } while (-1 < lVar14);
  }
  _Memory_00 = (void *)*plVar1;
  *plVar1 = (longlong)puVar13;
  *(undefined4 *)(param_1 + 0x10) = local_50;
  *(int *)(param_1 + 0x14) = iVar8;
                    /* WARNING: Subroutine does not return */
  free(_Memory_00);
}



############ FUN_ 180585190 size=145 ############

undefined **
FUN_180585190(undefined **param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
             undefined1 *param_5)

{
  undefined *puVar1;
  undefined **local_res8;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res8 = param_1;
  puVar1 = (undefined *)FUN_1811316e0(8);
  local_res8 = juce::NativeImageType::vftable;
  (*(code *)PTR_FUN_1824988f0)(&local_res8,puVar1,*param_2,*param_3,*param_4,*param_5,uVar2,puVar1);
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180585fa0 size=100 ############

undefined8 *
FUN_180585fa0(undefined8 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x1a0,param_2,param_3,param_4,0xfffffffffffffffe);
  uVar1 = FUN_181411e40(uVar1,*param_2,*param_3,DAT_1824c44bc);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 180586030 size=93 ############

undefined8 * FUN_180586030(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar2 = *param_2;
  *param_2 = 0;
  *(undefined4 *)(puVar2 + 1) = *(undefined4 *)(param_2 + 1);
  *(undefined4 *)((longlong)puVar2 + 0xc) = *(undefined4 *)((longlong)param_2 + 0xc);
  param_2[1] = 0;
  uVar1 = param_2[3];
  puVar2[2] = param_2[2];
  puVar2[3] = uVar1;
  *(undefined1 *)(puVar2 + 4) = *(undefined1 *)(param_2 + 4);
  *param_1 = puVar2;
  return param_1;
}



############ FUN_ 180586ff0 size=246 ############

undefined8 * FUN_180586ff0(longlong param_1)

{
  undefined8 *puVar1;
  longlong lVar2;
  float fVar3;
  float local_38;
  float fStack_34;
  float fStack_30;
  float fStack_2c;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  *(undefined1 *)(puVar1 + 4) = 1;
  lVar2 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 8) + 0xb0) + 8))();
  fVar3 = (float)((uint)(*(float *)(lVar2 + 0x88) * DAT_1824c41e0) ^ DAT_1824c4f30);
  local_38 = 0.0 - fVar3;
  fStack_34 = 0.0 - fVar3;
  fStack_30 = fVar3 * DAT_1824c41e0 + (float)*(int *)(*(longlong *)(param_1 + 8) + 0x28);
  fStack_2c = fVar3 * DAT_1824c41e0 + (float)*(int *)(*(longlong *)(param_1 + 8) + 0x2c);
  if (fStack_30 <= 0.0) {
    fStack_30 = 0.0;
  }
  if (fStack_2c <= 0.0) {
    fStack_2c = 0.0;
  }
  FUN_18129d1e0(puVar1,&local_38);
  return puVar1;
}



############ FUN_ 180587190 size=176 ############

undefined8 * FUN_180587190(longlong param_1)

{
  longlong lVar1;
  undefined8 *puVar2;
  float local_18;
  float fStack_14;
  float fStack_10;
  float fStack_c;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  puVar2[3] = 0;
  *(undefined1 *)(puVar2 + 4) = 1;
  lVar1 = *(longlong *)(param_1 + 8);
  fStack_10 = (float)*(int *)(lVar1 + 0x380) * DAT_1824c41e0;
  local_18 = *(float *)(lVar1 + 900) - fStack_10 * DAT_1824c3d8c;
  fStack_14 = *(float *)(lVar1 + 0x388) - fStack_10 * DAT_1824c3d8c;
  fStack_c = fStack_10;
  FUN_18129d1e0(puVar2,&local_18);
  return puVar2;
}



############ FUN_ 180587400 size=184 ############

undefined8 * FUN_180587400(longlong param_1)

{
  longlong lVar1;
  undefined8 *puVar2;
  float local_18;
  float fStack_14;
  float fStack_10;
  float fStack_c;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar2 = 0;
  puVar2[1] = 0;
  puVar2[2] = 0;
  puVar2[3] = 0;
  *(undefined1 *)(puVar2 + 4) = 1;
  lVar1 = *(longlong *)(param_1 + 8);
  fStack_10 = (float)*(int *)(lVar1 + 0x380) * DAT_1824c41e0 * DAT_1824c3e50;
  local_18 = *(float *)(lVar1 + 900) - fStack_10 * DAT_1824c3d8c;
  fStack_14 = *(float *)(lVar1 + 0x388) - fStack_10 * DAT_1824c3d8c;
  fStack_c = fStack_10;
  FUN_18129d1e0(puVar2,&local_18);
  return puVar2;
}



############ FUN_ 180587e60 size=152 ############

undefined8 * FUN_180587e60(void)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  *(undefined1 *)(puVar1 + 4) = 1;
  FUN_18129d850(puVar1);
  return puVar1;
}



############ FUN_ 180587fd0 size=152 ############

undefined8 * FUN_180587fd0(void)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  *(undefined1 *)(puVar1 + 4) = 1;
  FUN_18129d850(puVar1);
  return puVar1;
}



############ FUN_ 18058cd10 size=541 ############

void FUN_18058cd10(longlong param_1,undefined8 param_2,longlong *param_3)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  undefined8 uVar4;
  float fVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  uint *_Memory;
  undefined8 *puVar9;
  undefined1 local_res8 [8];
  undefined1 local_res18 [8];
  longlong local_res20;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  
  FUN_1804aaf40(param_1 + 0xd0);
  fVar5 = DAT_1824c3ea4;
  puVar9 = (undefined8 *)*param_3;
  puVar1 = puVar9 + *(int *)((longlong)param_3 + 0xc);
  if (puVar9 != puVar1) {
    do {
      uVar4 = *puVar9;
      uVar7 = FUN_1811316e0(0x4a0);
      FUN_18049c9e0(local_res8,uVar4);
      FUN_18049c9e0(local_res18,uVar4);
      plVar8 = (longlong *)FUN_1815d7db0(uVar7,local_res18,local_res8);
      FUN_18049c4e0(&local_res20,"gridLabel");
      (**(code **)(*plVar8 + 0x50))(plVar8,&local_res20);
      _Memory = (uint *)(local_res20 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if (*(float *)(plVar8 + 0x3f) != fVar5) {
        *(undefined4 *)(plVar8 + 0x3f) = 0x3f800000;
        uStack_60 = (undefined4)plVar8[5];
        uStack_5c = *(undefined4 *)((longlong)plVar8 + 0x2c);
        local_68 = 0;
        uStack_64 = 0;
        FUN_181342870(plVar8,&local_68,1);
      }
      if ((int)plVar8[0x38] != 0x24) {
        *(undefined4 *)(plVar8 + 0x38) = 0x24;
        uStack_50 = (undefined4)plVar8[5];
        uStack_4c = *(undefined4 *)((longlong)plVar8 + 0x2c);
        local_58 = 0;
        uStack_54 = 0;
        FUN_181342870(plVar8,&local_58,1);
      }
      iVar3 = *(int *)(param_1 + 0xfc);
      iVar6 = iVar3 + 1;
      if (*(int *)(param_1 + 0xf8) < iVar6) {
        if (iVar6 < 0) {
          iVar6 = iVar3 + 2;
        }
        FUN_18047cb30((longlong *)(param_1 + 0xf0),iVar3 + 9 + (iVar6 >> 1) & 0xfffffff8);
      }
      iVar6 = *(int *)(param_1 + 0xfc);
      *(int *)(param_1 + 0xfc) = iVar6 + 1;
      *(longlong **)(*(longlong *)(param_1 + 0xf0) + (longlong)iVar6 * 8) = plVar8;
      (**(code **)(*plVar8 + 0x58))(plVar8,1);
      FUN_181343cc0(param_1,plVar8,0xffffffff);
      puVar9 = puVar9 + 1;
    } while (puVar9 != puVar1);
  }
  plVar8 = *(longlong **)(param_1 + 0x120);
  if (plVar8 != (longlong *)0x0) {
    (**(code **)(*plVar8 + 0x58))(plVar8,1);
    FUN_181343cc0(param_1,plVar8,0xffffffff);
  }
  return;
}



############ FUN_ 18058d330 size=1597 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18058d330(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  float *pfVar3;
  uint uVar4;
  int iVar5;
  ulonglong uVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  double dVar10;
  float fVar11;
  char *pcVar12;
  int iVar13;
  longlong lVar14;
  undefined8 uVar15;
  longlong *plVar16;
  uint *puVar17;
  float *pfVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  uint uVar22;
  undefined1 auStack_248 [32];
  float local_228 [2];
  undefined4 local_220 [2];
  undefined4 local_218 [2];
  undefined1 local_210 [8];
  undefined1 local_208 [8];
  longlong local_200;
  char *local_1f8;
  undefined1 local_1f0 [8];
  undefined1 local_1e8 [8];
  longlong local_1e0;
  char *local_1d8 [2];
  undefined8 local_1c8;
  undefined4 uStack_1c0;
  undefined4 uStack_1bc;
  undefined8 local_1b8;
  undefined4 uStack_1b0;
  undefined4 uStack_1ac;
  undefined8 local_1a8;
  undefined4 uStack_1a0;
  undefined4 uStack_19c;
  undefined8 local_198;
  undefined4 uStack_190;
  undefined4 uStack_18c;
  double local_188;
  double local_180;
  undefined1 *local_178;
  undefined1 *local_170;
  undefined8 local_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined4 local_148;
  undefined4 uStack_144;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  undefined4 local_138;
  undefined4 uStack_134;
  undefined4 uStack_130;
  undefined4 uStack_12c;
  undefined4 local_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  undefined4 uStack_11c;
  undefined4 local_118;
  undefined4 uStack_114;
  undefined4 uStack_110;
  undefined4 uStack_10c;
  undefined1 local_e9 [32];
  undefined1 local_c9;
  ulonglong local_c8 [20];
  
  local_168 = 0xfffffffffffffffe;
  local_c8[0] = DAT_182615970 ^ (ulonglong)auStack_248;
  plVar1 = (longlong *)(param_1 + 0x100);
  FUN_18047cbc0(plVar1);
  if (*(int *)(param_1 + 0x108) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar1);
  }
  *(undefined4 *)(param_1 + 0x108) = 0;
  plVar2 = (longlong *)(param_1 + 0x110);
  FUN_18047cbc0(plVar2);
  if (*(int *)(param_1 + 0x118) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar2);
  }
  *(undefined4 *)(param_1 + 0x118) = 0;
  fVar11 = DAT_1824c4680;
  dVar10 = DAT_1824c4520;
  fVar9 = DAT_1824c41e0;
  fVar8 = DAT_1824c3ea4;
  fVar7 = DAT_1824c3d8c;
  pfVar18 = *(float **)(param_1 + 0xe0);
  pfVar3 = pfVar18 + *(int *)(param_1 + 0xec);
  if (pfVar18 != pfVar3) {
    uVar22 = (uint)DAT_1824c4f10;
    uVar6 = (ulonglong)DAT_1824c4f10 >> 0x20;
    do {
      fVar19 = fVar8 - *pfVar18;
      if (0.0 <= fVar19) {
        fVar20 = fVar8;
        if (fVar19 <= fVar8) {
          fVar20 = fVar19;
        }
      }
      else {
        fVar20 = 0.0;
      }
      if (*(longlong *)(param_1 + 0x178) == 0) {
        if (*(char *)(param_1 + 0x138) == '\0') {
          fVar19 = *(float *)(param_1 + 0x134);
          if ((fVar19 != fVar8) && (0.0 < fVar20)) {
            fVar20 = logf(fVar20);
            fVar20 = expf(fVar20 / fVar19);
          }
          fVar19 = (*(float *)(param_1 + 300) - *(float *)(param_1 + 0x128)) * fVar20 +
                   *(float *)(param_1 + 0x128);
        }
        else {
          fVar20 = fVar20 * fVar9 - fVar8;
          fVar19 = *(float *)(param_1 + 0x134);
          if ((fVar19 != fVar8) && (fVar20 != 0.0)) {
            fVar21 = fVar8;
            if (fVar20 < 0.0) {
              fVar21 = fVar11;
            }
            fVar20 = logf((float)(double)CONCAT44((uint)((ulonglong)(double)fVar20 >> 0x20) &
                                                  (uint)uVar6,SUB84((double)fVar20,0) & uVar22));
            fVar20 = expf(fVar20 / fVar19);
            fVar20 = fVar20 * fVar21;
          }
          fVar19 = (*(float *)(param_1 + 300) - *(float *)(param_1 + 0x128)) * fVar7 *
                   (fVar20 + fVar8) + *(float *)(param_1 + 0x128);
        }
      }
      else {
        local_220[0] = *(undefined4 *)(param_1 + 300);
        local_218[0] = *(undefined4 *)(param_1 + 0x128);
        plVar16 = *(longlong **)(param_1 + 0x178);
        local_228[0] = fVar20;
        if (plVar16 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar19 = (float)(**(code **)(*plVar16 + 0x10))(plVar16,local_218,local_220,local_228);
      }
      local_188 = (double)fVar19 + dVar10;
      lVar14 = FUN_181233e10(local_e9 + 1,(ulonglong)local_188 & 0xffffffff);
      FUN_180495150(&local_1f8,lVar14,local_e9 + -lVar14);
      uVar15 = FUN_1811316e0(0x4a0);
      local_178 = local_210;
      local_160 = uVar15;
      FUN_18049c9e0(local_210,local_1f8);
      FUN_18049c9e0(local_208,local_1f8);
      plVar16 = (longlong *)FUN_1815d7db0(uVar15,local_208,local_210);
      FUN_18049c4e0(&local_200,"gridLabel");
      (**(code **)(*plVar16 + 0x50))(plVar16,&local_200);
      puVar17 = (uint *)(local_200 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      if (*(float *)(plVar16 + 0x3f) != fVar8) {
        *(undefined4 *)(plVar16 + 0x3f) = 0x3f800000;
        uStack_1bc = *(undefined4 *)((longlong)plVar16 + 0x2c);
        uStack_1c0 = (undefined4)plVar16[5];
        local_1c8 = 0;
        local_148 = 0;
        uStack_144 = 0;
        uStack_140 = uStack_1c0;
        uStack_13c = uStack_1bc;
        FUN_181342870(plVar16,&local_148,1);
      }
      if ((int)plVar16[0x38] != 2) {
        *(undefined4 *)(plVar16 + 0x38) = 2;
        uStack_1ac = *(undefined4 *)((longlong)plVar16 + 0x2c);
        uStack_1b0 = (undefined4)plVar16[5];
        local_1b8 = 0;
        local_138 = 0;
        uStack_134 = 0;
        uStack_130 = uStack_1b0;
        uStack_12c = uStack_1ac;
        FUN_181342870(plVar16,&local_138,1);
      }
      pcVar12 = local_1f8;
      if (*local_1f8 != '\0') {
        iVar5 = *(int *)(param_1 + 0x10c);
        iVar13 = iVar5 + 1;
        if (*(int *)(param_1 + 0x108) < iVar13) {
          if (iVar13 < 0) {
            iVar13 = iVar5 + 2;
          }
          FUN_18047cb30(plVar1,iVar5 + 9 + (iVar13 >> 1) & 0xfffffff8);
        }
        iVar13 = *(int *)(param_1 + 0x10c);
        *(int *)(param_1 + 0x10c) = iVar13 + 1;
        *(longlong **)(*plVar1 + (longlong)iVar13 * 8) = plVar16;
        (**(code **)(*plVar16 + 0x58))(plVar16,1);
        FUN_181343cc0(param_1,plVar16,0xffffffff);
      }
      puVar17 = (uint *)(pcVar12 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      local_180 = (double)(fVar19 / *(float *)(param_1 + 0x20c)) + dVar10;
      lVar14 = FUN_181233e10(local_c8,(ulonglong)local_180 & 0xffffffff);
      FUN_180495150(local_1d8,lVar14,&local_c9 + -lVar14);
      uVar15 = FUN_1811316e0(0x4a0);
      local_170 = local_1f0;
      local_158 = uVar15;
      FUN_18049c9e0(local_1f0,local_1d8[0]);
      FUN_18049c9e0(local_1e8,local_1d8[0]);
      plVar16 = (longlong *)FUN_1815d7db0(uVar15,local_1e8,local_1f0);
      FUN_18049c4e0(&local_1e0,"gridLabel");
      (**(code **)(*plVar16 + 0x50))(plVar16,&local_1e0);
      puVar17 = (uint *)(local_1e0 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      if (*(float *)(plVar16 + 0x3f) != fVar8) {
        *(undefined4 *)(plVar16 + 0x3f) = 0x3f800000;
        uStack_19c = *(undefined4 *)((longlong)plVar16 + 0x2c);
        uStack_1a0 = (undefined4)plVar16[5];
        local_1a8 = 0;
        local_128 = 0;
        uStack_124 = 0;
        uStack_120 = uStack_1a0;
        uStack_11c = uStack_19c;
        FUN_181342870(plVar16,&local_128,1);
      }
      if ((int)plVar16[0x38] != 2) {
        *(undefined4 *)(plVar16 + 0x38) = 2;
        uStack_18c = *(undefined4 *)((longlong)plVar16 + 0x2c);
        uStack_190 = (undefined4)plVar16[5];
        local_198 = 0;
        local_118 = 0;
        uStack_114 = 0;
        uStack_110 = uStack_190;
        uStack_10c = uStack_18c;
        FUN_181342870(plVar16,&local_118,1);
      }
      pcVar12 = local_1d8[0];
      if (*local_1d8[0] != '\0') {
        iVar5 = *(int *)(param_1 + 0x11c);
        iVar13 = iVar5 + 1;
        if (*(int *)(param_1 + 0x118) < iVar13) {
          if (iVar13 < 0) {
            iVar13 = iVar5 + 2;
          }
          FUN_18047cb30(plVar2,iVar5 + 9 + (iVar13 >> 1) & 0xfffffff8);
        }
        iVar13 = *(int *)(param_1 + 0x11c);
        *(int *)(param_1 + 0x11c) = iVar13 + 1;
        *(longlong **)(*plVar2 + (longlong)iVar13 * 8) = plVar16;
        (**(code **)(*plVar16 + 0x58))(plVar16,1);
        FUN_181343cc0(param_1,plVar16,0xffffffff);
      }
      puVar17 = (uint *)(pcVar12 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      pfVar18 = pfVar18 + 1;
    } while (pfVar18 != pfVar3);
  }
}



############ FUN_ 18058bc50 size=2114 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18058bc50(longlong *param_1,longlong param_2,longlong param_3,longlong param_4,
                  float param_5,int param_6,longlong param_7,longlong param_8,longlong param_9,
                  longlong param_10)

{
  uint *_Memory;
  byte bVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  double dVar4;
  longlong lVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 uVar10;
  int iVar11;
  ulonglong uVar12;
  uint uVar13;
  char *pcVar14;
  char *pcVar15;
  bool bVar16;
  double dVar17;
  float fVar18;
  undefined1 auStackY_198 [32];
  longlong *local_168;
  longlong local_160;
  longlong local_158;
  undefined8 local_150;
  undefined8 local_148;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  longlong local_138;
  undefined8 local_130;
  longlong *local_128;
  undefined8 local_118;
  longlong lStack_110;
  undefined **local_108;
  longlong *local_100;
  undefined ***local_d0;
  undefined **local_c8;
  longlong *local_c0;
  undefined ***local_90;
  char local_6b [3];
  ulonglong local_68;
  
  local_130 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStackY_198;
  local_138 = param_8;
  local_158 = param_9;
  plVar7 = param_1;
  local_128 = param_1;
  FUN_18056b680();
  plVar7[0x19] = (longlong)juce::Timer::vftable;
  plVar7[0x1a] = -1;
  uVar12 = 0;
  *(undefined4 *)(plVar7 + 0x1b) = 0;
  *param_1 = (longlong)FilterGraph<float,6,512>::vftable;
  param_1[0x16] = (longlong)FilterGraph<float,6,512>::vftable;
  param_1[0x19] = (longlong)FilterGraph<float,6,512>::vftable;
  param_1[0x1c] = (longlong)FilterGraph<float,6,512>::vftable;
  param_1[0x1d] = (longlong)FilterGraph<float,6,512>::vftable;
  param_1[0x1e] = (longlong)FilterGraph<float,6,512>::vftable;
  param_1[0x1f] = 0;
  param_1[0x20] = param_10;
  local_168 = param_1 + 0x21;
  param_1[0x28] = 0;
  plVar7 = *(longlong **)(param_2 + 0x38);
  if (plVar7 != (longlong *)0x0) {
    if ((undefined **)*plVar7 ==
        std::
        _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>::
        vftable) {
      lVar5 = FUN_18058e8d0(plVar7 + 1);
    }
    else {
      lVar5 = (**(code **)*plVar7)(plVar7,local_168);
    }
    param_1[0x28] = lVar5;
  }
  local_168 = param_1 + 0x29;
  param_1[0x30] = 0;
  puVar2 = *(undefined8 **)(param_3 + 0x38);
  if (puVar2 != (undefined8 *)0x0) {
    lVar5 = (**(code **)*puVar2)(puVar2,local_168);
    param_1[0x30] = lVar5;
  }
  local_168 = param_1 + 0x31;
  param_1[0x38] = 0;
  plVar7 = *(longlong **)(param_4 + 0x38);
  if (plVar7 != (longlong *)0x0) {
    if ((undefined **)*plVar7 ==
        std::_Func_impl_no_alloc<std::function<float___cdecl(void)>,double_const_>::vftable) {
      lVar5 = FUN_18058e850(plVar7 + 1);
    }
    else {
      lVar5 = (**(code **)*plVar7)(plVar7,local_168);
    }
    param_1[0x38] = lVar5;
  }
  *(int *)(param_1 + 0x130f) = param_6;
  param_1[0x1310] = 0;
  param_1[0x1311] = 0;
  *(undefined4 *)(param_1 + 0x1312) = 3;
  *(undefined4 *)((longlong)param_1 + 0x9894) = 0x10;
  *(undefined4 *)(param_1 + 0x1313) = 0x10;
  *(undefined4 *)((longlong)param_1 + 0x989c) = 0x21;
  local_168 = (longlong *)FUN_1811316e0(0x1a0);
  lVar5 = FUN_181411e40(local_168);
  param_1[0x1314] = lVar5;
  param_1[0x1315] = 0;
  param_1[0x1316] = 0;
  param_1[0x1317] = 0;
  param_1[0x1318] = 0;
  *(undefined1 *)(param_1 + 0x1319) = 1;
  _eh_vector_constructor_iterator_(param_1 + 0x131a,0x28,6,FUN_18129e350,FUN_18129e330);
  *(undefined4 *)(param_1 + 0x1338) = DAT_182490e78;
  *(undefined8 *)((longlong)param_1 + 0x99c4) = 0;
  *(undefined8 *)((longlong)param_1 + 0x99cc) = 0;
  *(undefined8 *)((longlong)param_1 + 0x99d4) = 0;
  *(undefined4 *)(param_1 + 0x133d) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x99ec) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x133e) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x99f4) = 0x40000000;
  *(undefined4 *)(param_1 + 0x133f) = 0x41f00000;
  *(undefined4 *)((longlong)param_1 + 0x99fc) = 0x3f800000;
  *(undefined2 *)(param_1 + 0x1340) = 0;
  *(undefined1 *)(param_1 + 0x1341) = 0;
  *(undefined8 *)((longlong)param_1 + 0x9a0c) = 0;
  param_1[0x1343] = 0;
  param_1[0x1344] = 0;
  param_1[0x1345] = 0;
  param_1[0x1346] = 0;
  *(undefined4 *)(param_1 + 0x1347) = 0;
  *(undefined8 *)((longlong)param_1 + 0x9a3c) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x9a44) = 0x3f800000;
  *(undefined1 *)(param_1 + 0x1349) = 0;
  param_1[0x1351] = 0;
  param_1[0x1359] = 0;
  param_1[0x1361] = 0;
  *(undefined4 *)(param_1 + 0x1362) = 0;
  *(undefined8 *)((longlong)param_1 + 0x9b14) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x9b1c) = 0x3f800000;
  *(undefined1 *)(param_1 + 0x1364) = 0;
  param_1[0x136c] = 0;
  param_1[0x1374] = 0;
  param_1[0x137c] = 0;
  plVar6 = (longlong *)FUN_1811316e0(0xf8);
  plVar6[1] = 0;
  *(undefined4 *)(plVar6 + 2) = 0x3f800000;
  *(undefined8 *)((longlong)plVar6 + 0x24) = 0;
  *(undefined4 *)((longlong)plVar6 + 0x2c) = 0x3f800000;
  lVar5 = 2;
  *(undefined4 *)(plVar6 + 6) = 2;
  *(undefined4 *)((longlong)plVar6 + 0x44) = 1;
  plVar6[9] = 0;
  plVar6[10] = 0;
  *(undefined4 *)(plVar6 + 0xb) = 0x3f800000;
  *(undefined4 *)((longlong)plVar6 + 0x1c) = 0x3f800000;
  *(undefined4 *)((longlong)plVar6 + 0x14) = 0x3f800000;
  *(undefined4 *)(plVar6 + 4) = 0x3f800000;
  *(undefined4 *)(plVar6 + 3) = 0x3f800000;
  *plVar6 = (longlong)DigitalFilter<float,16,2>::vftable;
  *(undefined4 *)(plVar6 + 0xc) = 0;
  *(undefined4 *)((longlong)plVar6 + 100) = 1;
  *(undefined4 *)(plVar6 + 0xd) = 0x3f800000;
  plVar7 = plVar6 + 0xe;
  do {
    *(undefined8 *)((longlong)plVar7 + -4) = 0;
    *(undefined8 *)((longlong)plVar7 + 4) = 0;
    *(undefined8 *)((longlong)plVar7 + 0xc) = 0;
    *(undefined8 *)((longlong)plVar7 + 0x14) = 0;
    *(undefined8 *)((longlong)plVar7 + 0x1c) = 0;
    *(undefined8 *)((longlong)plVar7 + 0x24) = 0;
    *(undefined8 *)((longlong)plVar7 + 0x2c) = 0;
    *(undefined8 *)((longlong)plVar7 + 0x34) = 0;
    plVar7 = plVar7 + 8;
    lVar5 = lVar5 + -1;
  } while (lVar5 != 0);
  *plVar6 = (longlong)LowPassFilter<float,16,2>::vftable;
  *(undefined4 *)((longlong)plVar6 + 100) = 1;
  dVar4 = DAT_1824c4140;
  local_168 = plVar6;
  dVar17 = pow(DAT_1824c41e8,DAT_1824c4140);
  dVar17 = sqrt(dVar17 - dVar4);
  fVar18 = (float)((dVar4 / dVar17) * DAT_1824c46b8);
  *(float *)((longlong)plVar6 + 0xf4) = fVar18;
  *(undefined4 *)(plVar6 + 0xd) = 0x461c4000;
  fVar18 = expf((DAT_1824c45c8 / *(float *)((longlong)plVar6 + 0x24)) * fVar18);
  *(float *)(plVar6 + 0xc) = fVar18;
  *(float *)(plVar6 + 0x1e) = (float)(dVar4 - (double)fVar18);
  param_1[0x137d] = (longlong)plVar6;
  param_1[0x137e] = 0;
  param_1[0x137f] = 0;
  param_1[0x1380] = 0;
  param_1[0x1381] = 0;
  param_1[0x1382] = 0;
  param_1[0x1383] = param_8;
  param_1[0x1384] = 0;
  plVar7 = param_1 + 0x1385;
  local_168 = plVar7;
  FUN_18049c4e0(&local_160,"CWFreqOption");
  lVar5 = local_158;
  *plVar7 = (longlong)ProcessorStateOption::vftable;
  param_1[0x1386] = local_160;
  param_1[4999] = param_7;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar13 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar16 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar13;
    if (bVar16) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *plVar7 = (longlong)CueFreqDisplayFreqOption::vftable;
  param_1[5000] = 0;
  param_1[0x1389] = 0;
  param_1[0x138a] = 0;
  param_1[0x138b] = 0;
  param_1[0x138c] = local_158;
  *(undefined4 *)((longlong)param_1 + 0x9a02) = 0x1010101;
  *(undefined2 *)((longlong)param_1 + 0x9a06) = 0x101;
  fVar18 = DAT_1824c3d8c;
  *(float *)((longlong)param_1 + 0x99dc) = (float)*(int *)((longlong)param_1 + 0x2c) * DAT_1824c3d8c
  ;
  *(float *)(param_1 + 0x133c) = (float)(int)param_1[5] / (float)(int)param_1[0x1312];
  *(undefined4 *)(param_1 + 0x133f) = 0x41200000;
  *(float *)((longlong)param_1 + 0x99fc) =
       (fVar18 / *(float *)(param_1 + 0x133d)) * (float)*(int *)((longlong)param_1 + 0x9894);
  bVar1 = *(byte *)(param_1 + 0x15);
  *(byte *)(param_1 + 0x15) = bVar1 & 0xef | 8;
  if ((bVar1 & 4) != 0) {
    *(byte *)(param_1 + 0x15) = bVar1 & 0xeb | 8;
    if (((bVar1 & 1) != 0) && (lVar8 = FUN_1812d2bd0(param_1), lVar8 != 0)) {
      (**(code **)(*param_1 + 0x68))(param_1,*(undefined4 *)(lVar8 + 0x10),0);
    }
    uStack_13c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_140 = (undefined4)param_1[5];
    lStack_110 = param_1[5];
    local_148 = 0;
    local_118 = 0;
    FUN_181342870(param_1,&local_118,1);
  }
  local_108 = std::
              _Func_impl_no_alloc<<lambda_9bfa14f9c2678396df24fa38689fe38a>,void,juce::StringRef,float>
              ::vftable;
  local_d0 = &local_108;
  local_100 = param_1;
  FUN_181410000(param_1[0x1314],&local_108);
  if (0 < param_6) {
    do {
      iVar11 = (int)uVar12;
      pcVar14 = local_6b + 2;
      local_6b[2] = 0;
      if (iVar11 < 0) {
        uVar13 = -iVar11;
        do {
          pcVar15 = pcVar14;
          pcVar14 = pcVar15 + -1;
          *pcVar14 = (char)uVar13 + (char)((ulonglong)uVar13 / 10) * -10 + '0';
          uVar13 = (uint)((ulonglong)uVar13 / 10);
        } while (uVar13 != 0);
        pcVar14 = pcVar15 + -2;
        *pcVar14 = '-';
      }
      else {
        do {
          pcVar14 = pcVar14 + -1;
          uVar3 = uVar12 / 10;
          *pcVar14 = (char)uVar12 + (char)uVar3 * -10 + '0';
          uVar12 = uVar3;
        } while ((int)uVar3 != 0);
      }
      FUN_180495150(&local_168,pcVar14,local_6b + (2 - (longlong)pcVar14));
      plVar6 = local_168;
      FUN_181411be0(param_1[0x1314],local_168,0);
      _Memory = (uint *)(plVar6 + -2);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar13 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      uVar12 = (ulonglong)(iVar11 + 1U);
      lVar5 = local_158;
    } while ((int)(iVar11 + 1U) < param_6);
  }
  local_150 = FUN_1811316e0(0x40);
  local_c8 = std::_Func_impl_no_alloc<<lambda_5f6a5d2a7cdbea1eee7ffe03e43db8dd>,void,float>::vftable
  ;
  local_90 = &local_c8;
  local_c0 = param_1;
  lVar9 = FUN_18055e880(local_150,local_138,&local_c8);
  lVar8 = param_1[0x1384];
  param_1[0x1384] = lVar9;
  if (lVar8 != 0) {
    FUN_18056a070();
  }
  local_150 = FUN_1811316e0(0x10);
  uVar10 = FUN_1811e8780(local_150,plVar7,param_1 + 0x1c);
  FUN_180485e60(param_1 + 5000,uVar10);
  FUN_181341570(param_1,param_1,1);
  FUN_181341570(lVar5,param_1,1);
  *(int *)(param_1 + 0x1313) = (int)(DAT_1824c459c / param_5);
  FUN_1812a77d0(param_1 + 0x19);
}



############ FUN_ 18058e850 size=113 ############

undefined8 *
FUN_18058e850(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::_Func_impl_no_alloc<std::function<float___cdecl(void)>,double_const_>::vftable;
  puVar2[8] = 0;
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,puVar2 + 1,param_3,param_4,uVar3);
    puVar2[8] = uVar3;
  }
  return puVar2;
}



############ FUN_ 18058e8d0 size=113 ############

undefined8 *
FUN_18058e8d0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>
            ::vftable;
  puVar2[8] = 0;
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,puVar2 + 1,param_3,param_4,uVar3);
    puVar2[8] = uVar3;
  }
  return puVar2;
}



############ FUN_ 18058cf30 size=570 ############

void FUN_18058cf30(longlong *param_1)

{
  longlong *plVar1;
  undefined8 *puVar2;
  float fVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  void *pvVar7;
  int iVar8;
  uint uVar9;
  longlong *plVar10;
  longlong local_res8;
  
  local_res8 = FUN_1811316e0(0x220);
  puVar4 = (undefined8 *)FUN_18058e000(local_res8);
  plVar1 = param_1 + 0x1f;
  if (plVar1 == &local_res8) {
    if (puVar4 == (undefined8 *)0x0) goto LAB_18058cfa6;
    puVar5 = (undefined8 *)*puVar4;
  }
  else {
    puVar2 = (undefined8 *)*plVar1;
    *plVar1 = (longlong)puVar4;
    if (puVar2 == (undefined8 *)0x0) goto LAB_18058cfa6;
    puVar5 = (undefined8 *)*puVar2;
    puVar4 = puVar2;
  }
  (*(code *)*puVar5)(puVar4,1);
LAB_18058cfa6:
  local_res8 = FUN_1811316e0(0x18);
  if (param_1 == (longlong *)0x0) {
    plVar10 = (longlong *)0x0;
  }
  else {
    plVar10 = param_1 + 0x1d;
  }
  uVar6 = FUN_1804841f0(local_res8,param_1[0x20],plVar10);
  iVar8 = *(int *)((longlong)param_1 + 0x9c5c) + 1;
  if ((int)*(uint *)(param_1 + 0x138b) < iVar8) {
    uVar9 = *(int *)((longlong)param_1 + 0x9c5c) + 9 + iVar8 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 0x138b) != uVar9) {
      pvVar7 = (void *)param_1[0x138a];
      if ((int)uVar9 < 1) {
                    /* WARNING: Subroutine does not return */
        free(pvVar7);
      }
      if (pvVar7 == (void *)0x0) {
        pvVar7 = malloc((longlong)(int)uVar9 * 8);
        param_1[0x138a] = (longlong)pvVar7;
      }
      else {
        pvVar7 = realloc(pvVar7,(longlong)(int)uVar9 * 8);
        param_1[0x138a] = (longlong)pvVar7;
      }
    }
    *(uint *)(param_1 + 0x138b) = uVar9;
  }
  iVar8 = *(int *)((longlong)param_1 + 0x9c5c);
  *(int *)((longlong)param_1 + 0x9c5c) = iVar8 + 1;
  *(undefined8 *)(param_1[0x138a] + (longlong)iVar8 * 8) = uVar6;
  plVar10 = (longlong *)*plVar1;
  if (plVar10 != (longlong *)0x0) {
    (**(code **)(*plVar10 + 0x58))(plVar10,1);
    FUN_181343cc0(param_1,plVar10,0xffffffff);
  }
  if (*(code **)(*param_1 + 0x108) ==
      .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__) {
    if (*plVar1 != 0) {
      FUN_18134bfe0(*plVar1,0,0,(int)param_1[5],*(undefined4 *)((longlong)param_1 + 0x2c));
    }
    fVar3 = DAT_1824c3d8c;
    *(float *)((longlong)param_1 + 0x99dc) =
         (float)*(int *)((longlong)param_1 + 0x2c) * DAT_1824c3d8c;
    *(float *)(param_1 + 0x133c) = (float)(int)param_1[5] / (float)(int)param_1[0x1312];
    *(undefined4 *)(param_1 + 0x133f) = 0x41200000;
    *(float *)((longlong)param_1 + 0x99fc) =
         (fVar3 / *(float *)(param_1 + 0x133d)) * (float)*(int *)((longlong)param_1 + 0x9894);
  }
  else {
    (**(code **)(*param_1 + 0x108))(param_1);
  }
  return;
}



############ FUN_ 18058e000 size=569 ############

undefined8 *
FUN_18058e000(undefined8 *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined1 uVar3;
  undefined8 in_RDX;
  double dVar4;
  undefined4 local_res10;
  
  puVar2 = param_1;
  FUN_18056b680(param_1,in_RDX,param_3,param_4,0xfffffffffffffffe);
  *puVar2 = FilterGraphGrid<float>::vftable;
  puVar2[0x16] = FilterGraphGrid<float>::vftable;
  dVar4 = (double)((float)(DAT_18262bb74 >> 0x18) * DAT_1824c3d54) + DAT_1824c4520;
  uVar3 = 0xff;
  if (SUB84(dVar4,0) < 0xff) {
    uVar3 = SUB81(dVar4,0);
  }
  local_res10 = CONCAT13(uVar3,(int3)DAT_18262bb74);
  *(undefined4 *)(param_1 + 0x19) = local_res10;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  puVar2 = (undefined8 *)FUN_1811316e0(0xe0);
  puVar2[1] = &DAT_1821dbf98;
  puVar2[2] = &DAT_1821dbf98;
  puVar2[3] = 0;
  puVar2[4] = 0;
  puVar2[5] = 0;
  puVar2[6] = 0;
  puVar2[7] = 0;
  puVar2[8] = 0;
  puVar2[9] = 0;
  puVar2[10] = 0;
  puVar2[0xb] = 0;
  puVar2[0xc] = 0;
  puVar2[0xd] = 0;
  puVar2[0xe] = 0;
  puVar2[0xf] = 0;
  puVar2[0x10] = 0;
  puVar2[0x11] = 0;
  puVar2[0x12] = 0;
  puVar2[0x13] = 0;
  puVar2[0x14] = 0;
  *(undefined4 *)(puVar2 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar2 + 0xac) = 0;
  *puVar2 = FilterGraphGrid<float>::Lines::vftable;
  puVar2[0x16] = param_1;
  puVar2[0x17] = 0;
  puVar2[0x18] = 0;
  *(undefined1 *)(puVar2 + 0x19) = 0;
  puVar2[0x1a] = 0;
  puVar2[0x1b] = 0;
  param_1[0x24] = puVar2;
  *(undefined4 *)(param_1 + 0x25) = 0;
  *(undefined8 *)((longlong)param_1 + 300) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x134) = 0x3f800000;
  *(undefined1 *)(param_1 + 0x27) = 0;
  param_1[0x2f] = 0;
  param_1[0x37] = 0;
  param_1[0x3f] = 0;
  *(undefined4 *)(param_1 + 0x40) = 0x3f800000;
  *(undefined8 *)((longlong)param_1 + 0x204) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x20c) = param_2;
  param_1[0x42] = 1;
  *(undefined1 *)(param_1 + 0x43) = 0;
  plVar1 = (longlong *)param_1[0x24];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x58))(plVar1,1);
    FUN_181343cc0(param_1,plVar1,0xffffffff);
  }
  return param_1;
}



############ FUN_ 18058dc10 size=992 ############

undefined8 *
FUN_18058dc10(undefined8 *param_1,longlong param_2,undefined8 param_3,longlong param_4,
             undefined4 *param_5,undefined4 *param_6,longlong param_7,undefined8 param_8,
             undefined8 *param_9,undefined8 param_10)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong *plVar10;
  bool bVar11;
  undefined4 uVar12;
  longlong *plVar13;
  longlong local_148 [7];
  longlong *local_110;
  longlong local_108 [7];
  longlong *local_d0;
  undefined8 local_c8;
  longlong local_b8 [7];
  longlong *local_80;
  longlong local_78 [7];
  longlong *local_40;
  
  local_c8 = 0xfffffffffffffffe;
  puVar7 = (undefined8 *)FUN_1811316e0(0x20a4a8);
  local_110 = (longlong *)0x0;
  puVar4 = *(undefined8 **)(param_4 + 0x38);
  if (puVar4 != (undefined8 *)0x0) {
    local_110 = (longlong *)(**(code **)*puVar4)(puVar4,local_148);
  }
  local_40 = (longlong *)0x0;
  if (local_110 != (longlong *)0x0) {
    local_40 = (longlong *)FUN_18058e9f0(local_148);
  }
  if (local_110 != (longlong *)0x0) {
    (**(code **)(*local_110 + 0x20))(local_110,local_110 != local_148);
    local_110 = (longlong *)0x0;
  }
  local_d0 = (longlong *)0x0;
  puVar4 = *(undefined8 **)(param_2 + 0x38);
  if (puVar4 != (undefined8 *)0x0) {
    local_d0 = (longlong *)(**(code **)*puVar4)(puVar4,local_108);
  }
  plVar13 = local_108;
  local_80 = (longlong *)0x0;
  if (local_d0 != (longlong *)0x0) {
    local_80 = (longlong *)FUN_18058e950(local_108);
  }
  if (local_d0 != (longlong *)0x0) {
    (**(code **)(*local_d0 + 0x20))(local_d0,local_d0 != local_108);
    local_d0 = (longlong *)0x0;
  }
  uVar12 = 3;
  uVar5 = *param_9;
  uVar2 = *param_6;
  uVar1 = *param_5;
  uVar8 = FUN_18119aa60(param_7 + 0x178,"selected band");
  FUN_18058bc50(puVar7,local_b8,param_3,local_78,uVar1,uVar2,param_7 + 0x338,uVar8,uVar5,param_10,
                uVar12,plVar13);
  puVar4 = puVar7 + 0x138d;
  *puVar7 = Soothe2FilterGraph::vftable;
  puVar7[0x16] = Soothe2FilterGraph::vftable;
  puVar7[0x19] = Soothe2FilterGraph::vftable;
  puVar7[0x1c] = Soothe2FilterGraph::vftable;
  puVar7[0x1d] = Soothe2FilterGraph::vftable;
  puVar7[0x1e] = Soothe2FilterGraph::vftable;
  *puVar4 = Soothe2FilterGraph::vftable;
  puVar7[0x138e] = param_7;
  puVar7[0x138f] = param_8;
  puVar7[0x41390] = 0;
  puVar7[0x41391] = 0;
  puVar7[0x41392] = 0;
  puVar7[0x41393] = 0;
  *(undefined1 *)(puVar7 + 0x41394) = 1;
  lVar6 = *(longlong *)(puVar7[0x138e] + 0x168);
  if (puVar4 != (undefined8 *)0x0) {
    plVar10 = (longlong *)(lVar6 + 0x2404c0);
    plVar9 = (longlong *)*plVar10;
    iVar3 = *(int *)(lVar6 + 0x2404cc);
    plVar13 = plVar9 + iVar3;
    for (; plVar9 != plVar13; plVar9 = plVar9 + 1) {
      if (puVar4 == (undefined8 *)*plVar9) goto LAB_18058deef;
    }
    if (*(int *)(lVar6 + 0x2404c8) < iVar3 + 1) {
      FUN_18047cb30(plVar10,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(lVar6 + 0x2404cc);
    *(int *)(lVar6 + 0x2404cc) = iVar3 + 1;
    *(undefined8 **)(*plVar10 + (longlong)iVar3 * 8) = puVar4;
  }
LAB_18058deef:
  plVar13 = local_80;
  *param_1 = puVar7;
  if (local_80 != (longlong *)0x0) {
    bVar11 = local_80 != local_b8;
    if ((undefined **)*local_80 ==
        std::
        _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>::
        vftable) {
      plVar9 = (longlong *)local_80[8];
      if (plVar9 != (longlong *)0x0) {
        (**(code **)(*plVar9 + 0x20))(plVar9,plVar9 != local_80 + 1);
        plVar13[8] = 0;
      }
      if (bVar11) {
                    /* WARNING: Subroutine does not return */
        free(plVar13);
      }
    }
    else {
      (*(code *)((undefined **)*local_80)[4])(local_80,bVar11);
    }
  }
  plVar13 = local_40;
  if (local_40 != (longlong *)0x0) {
    bVar11 = local_40 != local_78;
    if ((undefined **)*local_40 ==
        std::_Func_impl_no_alloc<std::function<float___cdecl(void)>,double_const_>::vftable) {
      plVar9 = (longlong *)local_40[8];
      if (plVar9 != (longlong *)0x0) {
        (**(code **)(*plVar9 + 0x20))(plVar9,plVar9 != local_40 + 1);
        plVar13[8] = 0;
      }
      if (bVar11) {
                    /* WARNING: Subroutine does not return */
        free(plVar13);
      }
    }
    else {
      (*(code *)((undefined **)*local_40)[4])(local_40,bVar11);
    }
  }
  return param_1;
}



############ FUN_ 18058e950 size=154 ############

undefined8 *
FUN_18058e950(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::
            _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>
            ::vftable;
  puVar2[8] = 0;
  plVar1 = (longlong *)param_1[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_1) {
      uVar3 = (**(code **)(*plVar1 + 8))(plVar1,puVar2 + 1,param_3,param_4,uVar3);
      puVar2[8] = uVar3;
      plVar1 = (longlong *)param_1[7];
      if (plVar1 == (longlong *)0x0) {
        return puVar2;
      }
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1);
    }
    else {
      puVar2[8] = plVar1;
    }
    param_1[7] = 0;
  }
  return puVar2;
}



############ FUN_ 18058e9f0 size=154 ############

undefined8 *
FUN_18058e9f0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar2 = std::_Func_impl_no_alloc<std::function<float___cdecl(void)>,double_const_>::vftable;
  puVar2[8] = 0;
  plVar1 = (longlong *)param_1[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_1) {
      uVar3 = (**(code **)(*plVar1 + 8))(plVar1,puVar2 + 1,param_3,param_4,uVar3);
      puVar2[8] = uVar3;
      plVar1 = (longlong *)param_1[7];
      if (plVar1 == (longlong *)0x0) {
        return puVar2;
      }
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1);
    }
    else {
      puVar2[8] = plVar1;
    }
    param_1[7] = 0;
  }
  return puVar2;
}



############ FUN_ 18058f240 size=111 ############

undefined8 * FUN_18058f240(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  undefined8 *local_res8;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res8 = param_1;
  uVar1 = FUN_1811316e0(0x360);
  FUN_18049c4e0(&local_res8,&DAT_18249336a);
  uVar1 = FUN_1814fa810(uVar1,param_2,param_3,&local_res8,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1814fa810 size=1892 ############

/* WARNING: Removing unreachable block (ram,0x0001814faa38) */
/* WARNING: Removing unreachable block (ram,0x0001814fa9cd) */
/* WARNING: Removing unreachable block (ram,0x0001814faa88) */
/* WARNING: Removing unreachable block (ram,0x0001814faa16) */

void FUN_1814fa810(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong *plVar2;
  int *piVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  undefined1 uVar6;
  ulonglong uVar7;
  uint uVar8;
  uint uVar9;
  ulonglong uVar10;
  longlong lVar11;
  ulonglong uVar12;
  int unaff_retaddr;
  undefined1 auStack_258 [36];
  uint local_234;
  uint local_230;
  uint local_22c;
  undefined4 local_208;
  uint local_1ec;
  undefined4 local_1e8;
  undefined4 local_1e4;
  undefined8 *local_1e0;
  undefined8 *local_1d8;
  undefined8 local_1d0;
  ulonglong local_1c8;
  ulonglong local_1c0;
  undefined8 local_1b8;
  undefined4 local_1b0;
  undefined8 local_198;
  undefined4 local_188;
  undefined8 local_178;
  undefined4 local_170;
  undefined8 local_150;
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined8 *local_130;
  ulonglong local_40;
  
  local_138 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_258;
  local_1d8 = param_1;
  local_1d0 = param_4;
  local_198 = param_2;
  local_150 = param_4;
  local_130 = param_1;
  FUN_18056b680();
  param_1[0x19] = juce::SettableTooltipClient::vftable;
  param_1[0x1a] = &DAT_1821dbf98;
  param_1[0x1b] = ParameterControllingComponent::vftable;
  local_1e0 = param_1 + 0x1d;
  FUN_1815df540(local_1e0,param_1);
  *param_1 = CloudyToggleButton::vftable;
  param_1[0x16] = CloudyToggleButton::vftable;
  param_1[0x19] = CloudyToggleButton::vftable;
  param_1[0x1b] = CloudyToggleButton::vftable;
  param_1[0x1c] = CloudyToggleButton::vftable;
  *(undefined4 *)(param_1 + 99) = 0;
  *(undefined2 *)((longlong)param_1 + 0x31c) = 0x100;
  *(undefined1 *)((longlong)param_1 + 0x31e) = 0;
  param_1[100] = param_3;
  local_1e0 = (undefined8 *)FUN_1811316e0(0x1a0);
  local_178 = DAT_18235df78;
  local_170 = DAT_18235df80;
  local_148 = FUN_181408750(local_1e0,&local_178);
  param_1[0x65] = local_148;
  param_1[0x66] = 0x3f333333;
  param_1[0x67] = 0;
  param_1[0x68] = 0;
  param_1[0x69] = 0;
  param_1[0x6a] = &DAT_1821dbf98;
  local_140 = 0;
  param_1[0x6b] = 0;
  local_1e8 = 0xd80;
  local_1e4 = 0xd30;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2);
  FUN_181345120(param_1,1);
  do {
    FUN_1814fa08e(0xea10);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  FUN_18134a800(param_1,0x1006502,DAT_18262bb68);
  FUN_18134a800(param_1,0x1006504,DAT_1826742ec);
  do {
    local_230 = 0x1c0585d9;
    local_1b0 = 0x2e;
    local_1c0 = 0x1814fab4a;
    FUN_1814f8d62();
    uVar5 = local_1c0;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar9 = (local_230 << 0x10 | local_230 >> 0x10) & 0xd690296f |
          (local_230 >> 0x10 | local_230 << 0x10) & 0x296fd690;
  uVar8 = (uVar9 >> 0x10 | uVar9 << 0x10) & 0xcb0d34f2 |
          (uVar9 << 0x10 | uVar9 >> 0x10) & 0x34f2cb0d;
  uVar8 = (uVar8 >> 2 | uVar8 << 0x1e) & 0x99999999 |
          (uVar8 << 2 | (uVar9 & 0xffff) >> 0xe) & 0x66666666;
  uVar9 = uVar8 >> 0x16 | uVar8 << 10;
  uVar8 = ((uVar8 & 0x3fffff) >> 0xd ^ uVar9) & 0x1f;
  uVar9 = (uVar8 << 0x17 | uVar8) ^ uVar9;
  uVar8 = uVar9 + 0x9123f770;
  uVar8 = (uVar8 >> 4 | uVar9 << 0x1c) & 0xb4b4b4b4 | (uVar8 * 0x10 | uVar8 >> 0x1c) & 0x4b4b4b4b;
  do {
    local_188 = 0x27;
    local_1b8 = 0x1814fac27;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar11 = (longlong)(int)((uVar8 >> 0x19 | uVar8 << 7) ^ 0x1f18b29a);
  local_230 = 0;
  local_208 = 0;
  plVar2 = (longlong *)(lVar11 + 4 + local_1c0);
  *plVar2 = *plVar2 + (ulonglong)((uint)((ulonglong)dvs_0x88601756_mfort6317_ >> 0x13) & 0x14430625)
  ;
  do {
    uVar4 = rdtsc();
    local_1ec = (int)uVar4 - (int)((ulonglong)uVar4 >> 0x20);
    register0x00000020 = (BADSPACEBASE *)(~-(longlong)register0x00000020 + 1);
    uVar7 = (ulonglong)local_1ec +
            ((ulonglong)(local_1ec >> 0x10) | (ulonglong)local_1ec << 0x30) + 0xe84ab04;
    lVar1 = (uVar7 >> 6) + 0x11cceef1 + uVar7 * 2;
    uVar7 = lVar1 * 9;
    uVar7 = (uVar7 >> 9 | uVar7 << 0x37) + lVar1 * 2;
    uVar7 = uVar7 ^ uVar7 * 0x20 + 0x6cf3f578;
    uVar8 = (int)uVar7 + ((uint)(uVar7 << 8) | (uint)(byte)(uVar7 >> 0x38)) & 0x2735f44b;
    uVar9 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  piVar3 = (int *)(lVar11 + 8 + local_1c0);
  *piVar3 = *piVar3 + (uVar8 ^ 0x419c55e1);
  piVar3 = (int *)(lVar11 + 4 + local_1c0);
  *piVar3 = *piVar3 + (uVar8 ^ 0x56dd29c9);
  uVar7 = *(ulonglong *)(lVar11 + 4 + local_1c0);
  uVar8 = (uint)((uVar7 >> 0x12 ^ uVar7) >> 6) & 0x7ff;
  uVar7 = (((ulonglong)uVar8 << 0x12 | (ulonglong)uVar8) << 6 ^ uVar7) + 0xa6ecc3168f4576b6;
  uVar10 = uVar7 >> 4 & 0xf0f0f0f0f0f0f0f;
  uVar12 = (uVar7 * 0x10 & 0xf0f0f0f0f0f0f0f0 | uVar10) + 0xc6f12e26545d1a28;
  uVar7 = (ulonglong)((uint)((uVar12 >> 0xb ^ uVar12) >> 0x1b) & 0x7f);
  uVar12 = uVar12 << 0x37 | (uVar12 ^ (uVar7 << 0xb | uVar7) << 0x1b) >> 9;
  uVar7 = (ulonglong)((uint)((uVar12 >> 0x18 ^ uVar12) >> 0x12) & 0x7ff);
  uVar12 = uVar12 ^ (uVar7 << 0x18 | uVar7) << 0x12;
  uVar7 = uVar12 << 0xc | uVar12 >> 0x34;
  uVar7 = (uVar7 << 2 | (uVar12 & 0xfffffffffffff) >> 0x32) & 0x9999999999999999 |
          (uVar7 >> 2 | (uVar12 >> 0x34) << 0x3e) & 0x6666666666666666;
  *(ulonglong *)(lVar11 + 4 + local_1c0) = uVar7;
  dvs_0x88601756_mfort6317_ =
       (uint *)((longlong)dvs_0x88601756_mfort6317_ + (ulonglong)((uint)(uVar7 >> 6) & 0x300c1282));
  local_22c = (uint)(*(ulonglong *)(lVar11 + 4 + local_1c0) >> 0x19) & 0x7fffffff;
  local_234 = (uint)(*(ulonglong *)(lVar11 + 4 + local_1c0) >> 6) ^ 0x3451b4ed;
  local_1c8 = *(ulonglong *)(lVar11 + 4 + local_1c0) ^ 0x9606259f61bce06d;
  uVar6 = FUN_1814faf97();
  lVar11 = ((uVar10 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
  out((short)lVar11,uVar6);
  (*(code *)0x1132969)(uVar5 & 0xffffffff,lVar11);
  return;
}



############ FUN_ 18058f2b0 size=140 ############

undefined8 *
FUN_18058f2b0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined1 *param_4,
             undefined1 *param_5)

{
  undefined8 uVar1;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  uVar1 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(&local_res8,param_2);
  uVar1 = FUN_181567090(uVar1,&local_res8,*param_3,*param_4,*param_5);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18058f340 size=99 ############

undefined8 *
FUN_18058f340(undefined8 *param_1,undefined8 param_2,undefined1 *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 local_res10 [3];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10[0] = param_2;
  uVar1 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(local_res10,&DAT_1822e7db4);
  uVar1 = FUN_181566f90(uVar1,local_res10,*param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18058f3b0 size=132 ############

undefined8 *
FUN_18058f3b0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined1 *param_4,
             undefined1 *param_5)

{
  undefined8 uVar1;
  undefined8 local_res10;
  
  local_res10 = param_2;
  uVar1 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(&local_res10,&DAT_18221a7c4);
  uVar1 = FUN_181567090(uVar1,&local_res10,*param_3,*param_4,*param_5);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18058f440 size=99 ############

undefined8 *
FUN_18058f440(undefined8 *param_1,undefined8 param_2,undefined1 *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 local_res10 [3];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10[0] = param_2;
  uVar1 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(local_res10,"balance");
  uVar1 = FUN_181566f90(uVar1,local_res10,*param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18058f4b0 size=132 ############

undefined8 *
FUN_18058f4b0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined1 *param_4,
             undefined1 *param_5)

{
  undefined8 uVar1;
  undefined8 local_res10;
  
  local_res10 = param_2;
  uVar1 = FUN_1811316e0(0xa30);
  FUN_18049c4e0(&local_res10,"balance");
  uVar1 = FUN_181567090(uVar1,&local_res10,*param_3,*param_4,*param_5);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18058f540 size=108 ############

undefined8 *
FUN_18058f540(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x168);
  uVar1 = FUN_1815073e0(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18058f5b0 size=365 ############

undefined8 *
FUN_18058f5b0(undefined8 *param_1,longlong param_2,undefined8 param_3,longlong param_4,
             undefined8 param_5)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  undefined8 *local_res8;
  longlong local_res10;
  longlong local_res20;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  
  uVar5 = 0xfffffffffffffffe;
  local_res8 = param_1;
  local_res10 = param_2;
  local_res20 = param_4;
  puVar2 = (undefined8 *)FUN_1811316e0(0x380);
  puVar6 = puVar2;
  FUN_18049c4e0(&local_res8,"listen");
  uVar4 = 1;
  FUN_18049c4e0(&local_res20,DAT_18262ae48);
  local_res10 = local_res20;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1814fa810(puVar2,&local_res8,param_3,&local_res10,uVar4,uVar5,puVar6,&local_res20);
  *puVar2 = AutoCueOverridingToggleButton::vftable;
  puVar2[0x16] = AutoCueOverridingToggleButton::vftable;
  puVar2[0x19] = AutoCueOverridingToggleButton::vftable;
  puVar2[0x1b] = AutoCueOverridingToggleButton::vftable;
  puVar2[0x1c] = AutoCueOverridingToggleButton::vftable;
  puVar2[0x6c] = AutoCueOverridingToggleButton::vftable;
  FUN_1811e4250(puVar2 + 0x6d,param_5);
  puVar3 = (uint *)(local_res20 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  *param_1 = puVar2;
  puVar3 = (uint *)(local_res8 + -2);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  return param_1;
}



############ FUN_ 1805913f0 size=462 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805913f0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
                  undefined4 *param_5,undefined8 *param_6)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  undefined1 auStack_168 [32];
  undefined ***local_148;
  undefined ***local_140;
  undefined1 *local_138;
  undefined4 local_128;
  undefined8 *local_120;
  undefined1 local_118 [8];
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined **local_e8;
  undefined8 local_e0;
  undefined ***local_b0;
  undefined **local_a8;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined ***local_70;
  undefined **local_68;
  undefined8 local_60;
  undefined ***local_30;
  ulonglong local_28;
  
  local_108 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_128 = 0;
  local_120 = param_1;
  uVar2 = FUN_1811316e0(0x4b8);
  local_110 = *param_6;
  local_68 = std::_Func_impl_no_alloc<<lambda_5445efb76c2d60cfb07b6c83a78fcb29>,bool>::vftable;
  local_a8 = std::
             _Func_impl_no_alloc<<lambda_b7e6a7c1d447699894d7c8abafac00a9>,void,juce::MouseEvent_const&___ptr64>
             ::vftable;
  local_a0 = *param_5;
  uStack_9c = param_5[1];
  uStack_98 = param_5[2];
  uStack_94 = param_5[3];
  local_70 = &local_a8;
  local_f8 = *param_4;
  local_e8 = std::_Func_impl_no_alloc<<lambda_2c80028211894637137390c8a7d5df6c>,bool>::vftable;
  local_b0 = &local_e8;
  local_128 = 7;
  local_100 = uVar2;
  local_e0 = local_f8;
  local_60 = local_110;
  local_30 = &local_68;
  FUN_18049c4e0(&local_120,"delta");
  local_128 = 0xf;
  FUN_18049c4e0(local_118,&DAT_18249336a);
  local_138 = local_118;
  local_148 = &local_a8;
  local_140 = &local_68;
  uVar2 = FUN_1814ec2d0(uVar2,&local_120,param_3,&local_e8);
  *param_1 = uVar2;
  _Memory = (uint *)(local_120 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_b0 != (undefined ***)0x0) {
    (*(code *)(*local_b0)[4])(local_b0,local_b0 != &local_e8);
    local_b0 = (undefined ***)0x0;
  }
  if (local_70 != (undefined ***)0x0) {
    (*(code *)(*local_70)[4])(local_70,local_70 != &local_a8);
    local_70 = (undefined ***)0x0;
  }
  if (local_30 != (undefined ***)0x0) {
    (*(code *)(*local_30)[4])(local_30,local_30 != &local_68);
  }
}



############ FUN_ 1805915e0 size=462 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805915e0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
                  undefined4 *param_5,undefined8 *param_6)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  undefined1 auStack_168 [32];
  undefined ***local_148;
  undefined ***local_140;
  undefined1 *local_138;
  undefined4 local_128;
  undefined8 *local_120;
  undefined1 local_118 [8];
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined **local_e8;
  undefined8 local_e0;
  undefined ***local_b0;
  undefined **local_a8;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined ***local_70;
  undefined **local_68;
  undefined8 local_60;
  undefined ***local_30;
  ulonglong local_28;
  
  local_108 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_128 = 0;
  local_120 = param_1;
  uVar2 = FUN_1811316e0(0x4b8);
  local_110 = *param_6;
  local_68 = std::_Func_impl_no_alloc<<lambda_527aaeded7940dbf5a71a7cc51e1d99f>,bool>::vftable;
  local_a8 = std::
             _Func_impl_no_alloc<<lambda_84ea0dba2bc97e3e926107529aba3f9f>,void,juce::MouseEvent_const&___ptr64>
             ::vftable;
  local_a0 = *param_5;
  uStack_9c = param_5[1];
  uStack_98 = param_5[2];
  uStack_94 = param_5[3];
  local_70 = &local_a8;
  local_f8 = *param_4;
  local_e8 = std::_Func_impl_no_alloc<<lambda_ff7b2582554aee47d65b6a1971f3abf7>,bool>::vftable;
  local_b0 = &local_e8;
  local_128 = 7;
  local_100 = uVar2;
  local_e0 = local_f8;
  local_60 = local_110;
  local_30 = &local_68;
  FUN_18049c4e0(&local_120,"bypass");
  local_128 = 0xf;
  FUN_18049c4e0(local_118,&DAT_18249336a);
  local_138 = local_118;
  local_148 = &local_a8;
  local_140 = &local_68;
  uVar2 = FUN_1814ec2d0(uVar2,&local_120,param_3,&local_e8);
  *param_1 = uVar2;
  _Memory = (uint *)(local_120 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_b0 != (undefined ***)0x0) {
    (*(code *)(*local_b0)[4])(local_b0,local_b0 != &local_e8);
    local_b0 = (undefined ***)0x0;
  }
  if (local_70 != (undefined ***)0x0) {
    (*(code *)(*local_70)[4])(local_70,local_70 != &local_a8);
    local_70 = (undefined ***)0x0;
  }
  if (local_30 != (undefined ***)0x0) {
    (*(code *)(*local_30)[4])(local_30,local_30 != &local_68);
  }
}



############ FUN_ 180591d70 size=74 ############

undefined8 *
FUN_180591d70(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x2d0);
  uVar1 = FUN_181635990(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 181635990 size=3514 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000181635c24) overlaps instruction at (ram,0x000181635c22)
    */
/* WARNING: Removing unreachable block (ram,0x00018163657a) */
/* WARNING: Removing unreachable block (ram,0x000181635a8c) */
/* WARNING: Removing unreachable block (ram,0x000181635ab8) */
/* WARNING: Removing unreachable block (ram,0x000181636604) */
/* WARNING: Removing unreachable block (ram,0x0001816365bc) */
/* WARNING: Removing unreachable block (ram,0x00018163662d) */
/* WARNING: Removing unreachable block (ram,0x000181636613) */

void FUN_181635990(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  byte *pbVar13;
  uint *puVar14;
  uint uVar15;
  uint *puVar16;
  uint uVar17;
  IMAGE_DOS_HEADER *pIVar18;
  uint uVar19;
  undefined4 *puVar20;
  ulonglong uVar21;
  longlong lVar22;
  longlong *plVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  int iVar27;
  uint unaff_retaddr;
  undefined1 auStack_388 [32];
  undefined1 local_368;
  undefined1 local_360;
  longlong local_358;
  undefined4 local_350;
  uint local_34c;
  ulonglong local_348;
  uint local_33c;
  undefined4 local_338;
  longlong local_330;
  undefined4 *local_328;
  undefined4 local_320;
  int iStack_31c;
  undefined4 *local_310;
  int local_308;
  undefined1 local_304 [4];
  undefined4 local_300;
  uint local_2fc;
  uint local_2f8;
  int local_2f4;
  undefined8 local_2f0;
  uint local_2e8;
  uint local_2e4;
  undefined8 local_2e0;
  undefined8 *local_2d8;
  undefined1 local_2d0 [8];
  undefined1 local_2c8 [8];
  undefined8 local_2c0;
  undefined8 local_2b8;
  undefined1 local_2b0 [8];
  undefined4 local_2a8;
  undefined4 local_298;
  undefined8 local_290;
  char *local_288;
  undefined1 local_280 [24];
  int local_268;
  int local_264;
  int local_260;
  uint local_25c;
  undefined4 local_258;
  undefined4 local_254;
  undefined8 local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 *local_228;
  undefined4 local_80 [14];
  ulonglong local_48;
  
  local_240 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_388;
  local_2f0 = param_2;
  local_2d8 = param_1;
  local_228 = param_1;
  FUN_1805718f0();
  *param_1 = RightControls::TimePanel::vftable;
  param_1[0x1f] = RightControls::TimePanel::vftable;
  local_250 = 0;
  param_1[0x22] = 0;
  puVar1 = param_1 + 0x23;
  local_248 = 0;
  *puVar1 = 0;
  local_290 = 0;
  param_1[0x24] = 0;
  FUN_1815f84a0(param_1 + 0x25);
  uVar12 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x340) == 0) {
    uVar10 = ((uVar12 & 0x15ff) + 1) * (uVar12 & 0x15ff) + 0x23ef & 0x80000001;
  }
  else {
    uVar10 = (((uVar12 & 0x2ff) + 1) * (uVar12 & 0x2ff) + 7) % 0x51;
  }
  local_2e4 = (int)(-uVar10 | uVar10) >> 0x1f & 0x1137U ^ 0x1c37;
  iVar11 = (uVar12 & 0x35ff) * (uVar12 & 0x35ff) + 1;
  uVar10 = (iVar11 >> 4) + (iVar11 >> 1) + iVar11 * 0x24924924 >> 0x1d;
  uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
  uVar21 = (ulonglong)uVar10;
  uVar24 = (uVar12 & 0xbff) * (uVar12 & 0xbff) * 0x10 + 4;
  uVar25 = uVar24 % 0x13;
  uVar12 = (int)((-uVar10 | uVar10) & (-uVar25 | uVar25)) >> 0x1f;
  local_2e8 = (int)(-uVar12 | uVar12) >> 0x1f & 0x99c4U ^ 0x9374;
  uVar12 = local_2e8;
  do {
    uVar21 = uVar21 ^ 0x2d8b1cad ^ (ulonglong)uVar25;
    lVar22 = uVar12 + uVar21;
    uVar21 = lVar22 - ((uVar21 - lVar22 ^ 0xffffffffffffffff) + 1) ^ (ulonglong)uVar25 ^ 0x2d8b1cad;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
    uVar12 = unaff_retaddr;
  } while (uVar10 != 0);
  uVar4 = FUN_1811316e0(0x128,uVar24 / 0x13,uVar21);
  local_2e0 = uVar4;
  FUN_18049c4e0(local_2d0,"SPEED");
  uVar4 = FUN_18058fde0(uVar4,local_2d0,0);
  FUN_180485d90(param_1 + 0x22,uVar4);
  do {
    pbVar13 = &DAT_00004234;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001816366fb();
    if (((ulonglong)pbVar13 & 0x43) != 0) {
      LOCK();
      *(int *)(pbVar13 + -0x7d) = *(int *)(pbVar13 + -0x7d) + -1;
      UNLOCK();
      *pbVar13 = *pbVar13 << 4 | *pbVar13 >> 4;
    }
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar4 = FUN_1811316e0(0xa30);
  local_2e0 = uVar4;
  uVar5 = FUN_18124a880(local_280,"attack");
  local_288 = "attack";
  uVar6 = FUN_18119aa60(param_2);
  local_360 = 0;
  local_368 = 0;
  uVar4 = FUN_181567090(uVar4,uVar5,uVar6);
  FUN_180485d90(puVar1,uVar4);
  local_330 = 0;
  local_348 = 0x1ffc;
  local_310 = &DAT_180010fe0;
  local_358 = 0x180012fdc;
  lVar22 = FUN_1804730e0(puVar1);
  (**(code **)(*(longlong *)(lVar22 + 0x100) + 0x10))((longlong *)(lVar22 + 0x100),&DAT_182674770);
  do {
    local_2a8 = 0x3e;
    local_2c0 = 0x181635d77;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  do {
    local_298 = 0x79;
    local_2b8 = 0x181635e57;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar21 = 0x4c2ff812;
  local_350 = 0;
  local_320 = 0;
  dvs_0xb9eb9a72_mfort6317_ =
       (uint *)((longlong)dvs_0xb9eb9a72_mfort6317_ +
               (ulonglong)((uint)((ulonglong)dvs_0x469510d1_mfort6317_ >> 0x1f) & 0x8448002));
  do {
    puVar16 = &local_2f8;
    puVar14 = &local_34c;
    FUN_181635845(puVar14,puVar16,uVar21);
    uVar4 = rdtsc();
    uVar12 = (int)uVar4 + (int)((ulonglong)uVar4 >> 0x20) * 4;
    *puVar16 = uVar12;
    uVar7 = (ulonglong)uVar12 + ((ulonglong)uVar12 * 3 >> 0xf) + 0x69c1de38;
    uVar7 = -((uVar7 >> 1 | uVar7 << 0x3f) + 0x33f53fea) -
            ((uVar7 * 0x2000 ^ 0xffffffffffffffff) + 1);
    uVar7 = uVar7 ^ uVar7 * 0x1400;
    uVar8 = uVar7 << 10 | uVar7 >> 0x36;
    uVar7 = uVar8 * 5;
    uVar7 = (uVar7 >> 0xe | uVar7 << 0x32) + uVar8 * 4;
    uVar7 = uVar7 ^ (uVar7 >> 0xd) + 0x62a1b4bd;
    uVar7 = uVar7 ^ uVar7 >> 0xc;
    uVar21 = -((uVar21 ^ 0xffffffffffffffff) + 1);
    lVar22 = uVar7 + (uVar7 >> 7);
    *puVar14 = ((int)lVar22 * 0x200 | (uint)((ulonglong)lVar22 >> 0x37)) & 0xa6269bbc;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = dvs_0xb9eb9a72_mfort6317_._4_4_ + (local_34c ^ 0x8508b55d);
  dvs_0xb9eb9a72_mfort6317_ =
       (uint *)CONCAT44(uVar12,(int)dvs_0xb9eb9a72_mfort6317_ + (local_34c ^ 0x685128d9));
  uVar3 = (undefined4)(((ulonglong)uVar12 ^ (ulonglong)dvs_0xb9eb9a72_mfort6317_) >> 0xd);
  uVar21 = (CONCAT44(uVar3,uVar3) & 0xfff00000fff) << 0xd ^ (ulonglong)dvs_0xb9eb9a72_mfort6317_;
  uVar21 = (uVar21 << 8 | uVar21 >> 0x38) & 0xcc33cc33cc33cc33 |
           (uVar21 >> 8 | (longlong)dvs_0xb9eb9a72_mfort6317_ << 0x38) & 0x33cc33cc33cc33cc;
  uVar21 = (uVar21 >> 0x38 | uVar21 << 8) ^ 0xcc98ed70ef4006e3;
  uVar7 = uVar21 << 0x20 | uVar21 >> 0x20;
  uVar7 = (uVar7 << 4 | (uVar21 & 0xffffffff) >> 0x1c) & 0xd2d2d2d2d2d2d2d2 |
          (uVar7 >> 4 | (uVar21 >> 0x20) << 0x3c) & 0x2d2d2d2d2d2d2d2d;
  uVar21 = (ulonglong)((uint)((uVar7 >> 0x2c ^ uVar7) >> 1) & 0x3ff);
  uVar7 = uVar7 ^ (uVar21 << 0x2c | uVar21) * 2;
  dvs_0xb9eb9a72_mfort6317_ =
       (uint *)~((uVar7 << 0x10 | uVar7 >> 0x30) & 0xed2512daed2512da |
                (uVar7 >> 0x10 | uVar7 << 0x30) & 0x12daed2512daed25);
  dvs_0x469510d1_mfort6317_ =
       (uint *)((longlong)dvs_0x469510d1_mfort6317_ +
               (ulonglong)((uint)((ulonglong)dvs_0xb9eb9a72_mfort6317_ >> 0x18) & 0x290102b));
  local_34c = (uint)((ulonglong)dvs_0xb9eb9a72_mfort6317_ >> 0x13) & 0x7fffffff;
  local_33c = (uint)((ulonglong)dvs_0xb9eb9a72_mfort6317_ >> 1) ^ 0xdd764adc;
  local_348 = (ulonglong)dvs_0xb9eb9a72_mfort6317_ ^ 0xdff92ff5f6c7c362;
  uVar4 = FUN_1811316e0(0xa30);
  local_328 = (undefined4 *)uVar4;
  uVar5 = FUN_18124a880(local_2b0,"release");
  puVar9 = (undefined8 *)FUN_181249f00(local_2c8,"release");
  uVar6 = FUN_18119aa60(local_2f0,*puVar9);
  local_360 = 0;
  local_368 = 0;
  uVar4 = FUN_181567090(uVar4,uVar5,uVar6,1);
  puVar9 = local_2d8;
  FUN_180485d90(local_2d8 + 0x24,uVar4);
  local_338 = 0x1382b97;
  local_328 = local_310;
  local_330 = local_358 - (longlong)local_310;
  lVar22 = FUN_1804730e0(puVar9 + 0x24);
  (**(code **)(*(longlong *)(lVar22 + 0x100) + 0x10))((longlong *)(lVar22 + 0x100),&DAT_1826746a8);
  uVar4 = FUN_1804730e0(puVar9 + 0x22);
  FUN_18134bf20(puVar9,uVar4,0xffffffff);
  uVar4 = FUN_1804730e0(puVar1);
  FUN_18134bf20(puVar9,uVar4,0xffffffff);
  local_338 = 0xc6a4a793;
  do {
    local_308 = -0x334cd03a;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001816361dc();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = ~((local_308 + 0x2058a09U) * 0x2000 | local_308 + 0x2058a09U >> 0x13) ^ 0x86440f5b;
  uVar12 = (uVar12 << 0x17 | uVar12 >> 9) ^ 0xfd340692;
  uVar17 = ~(uVar12 << 5 | uVar12 >> 0x1b) ^ 0x9f7ef294;
  uVar4 = FUN_1804730e0(puVar9 + 0x24);
  FUN_18134bf20(puVar9,uVar4,0xffffffff);
  puVar2 = local_328;
  local_258 = 0x3ca2dad1;
  local_254 = 0x3047ce3f;
  uVar12 = (uint)local_348 ^ local_33c;
  uVar24 = uVar12 & 0x2bfd4af1 ^ local_33c;
  uVar12 = uVar12 & 0xd402b50e ^ local_33c ^ uVar24;
  uVar15 = uVar12 & 0xf0f0f0f0 ^ uVar24;
  uVar24 = uVar12 & 0xf0f0f0f ^ uVar24;
  uVar12 = (uVar17 >> 0xf ^ uVar17) & 0x7fff;
  uVar17 = (uVar12 << 0xf | uVar12) ^ uVar17;
  uVar12 = (uVar15 >> 6 ^ uVar15) >> 2 & 3;
  uVar10 = (uVar24 >> 0x16 ^ uVar24) >> 5 & 3;
  uVar19 = (uint)(local_348 >> 0x20);
  uVar25 = (uVar19 >> 0x14 ^ uVar19) >> 3 & 0x1ff;
  uVar12 = (uVar12 << 6 | uVar12) << 2 ^ uVar15 ^ uVar17;
  uVar15 = ~(uVar12 & 0x74575030 ^ uVar17);
  uVar26 = ~(uVar12 & 0x8ba8afcf ^ uVar17);
  uVar17 = ~((uVar10 << 0x16 | uVar10) << 5 ^ uVar24);
  uVar12 = ~((uVar25 << 0x14 | uVar25) << 3 ^ uVar19);
  uVar24 = (uVar15 << 2 | uVar15 >> 0x1e) & 0x99999999 | (uVar15 >> 2 | uVar15 << 0x1e) & 0x66666666
  ;
  uVar12 = (uVar12 >> 2 | uVar12 << 0x1e) & 0x99999999 | (uVar12 << 2 | uVar12 >> 0x1e) & 0x66666666
  ;
  uVar10 = uVar12 << 5 | uVar12 >> 0x1b;
  uVar12 = uVar10 ^ (uVar24 << 0x15 | uVar24 >> 0xb);
  uVar24 = uVar12 & 0xaaaaaaaa ^ uVar10;
  local_2f4 = (uVar10 ^ uVar12 & 0x55555555) + 0x26edbe0b;
  local_264 = ((uVar26 >> 4 & 0xf0f0f0f0 | uVar26 << 0x1c |
               (uVar26 & 0xf0f0f0) << 4 | uVar26 >> 0x1c) >> 2 | (uVar26 >> 0x1c) << 0x1e) +
              0xd1b1c41;
  local_2f0 = CONCAT44(local_2f0._4_4_,local_264);
  local_260 = (((uVar17 >> 8 | uVar17 << 0x18) & 0xdd22dd22 |
               (uVar17 << 8 | uVar17 >> 0x18) & 0x22dd22dd) << 2 | (uVar17 & 0xff) >> 6) +
              0xd1de1f70;
  local_310 = (undefined4 *)CONCAT44(local_310._4_4_,local_260);
  local_25c = uVar24 ^ 0x724d0b9e;
  local_348 = CONCAT44(uVar19,uVar24) ^ 0x724d0b9e;
  local_358 = 0x36da64a4ce46871d;
  local_300 = 0;
  local_2fc = (uint)local_330 ^ 0x8598;
  local_268 = local_2f4;
  if ((((uint)local_330 ^ 0xffffd7bc) & 0xadd3 | local_2fc) == 0x8598) {
    iVar11 = 0x8598;
    iStack_31c = -0xa39a6cd;
    do {
      iVar27 = iVar11 + iStack_31c;
      iVar11 = (iStack_31c - iVar27 ^ 0xffffffffU) + 1;
      iStack_31c = iVar27 - iVar11;
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    FUN_181636903();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  puVar20 = puVar2;
  if (-1 < (longlong)IMAGE_DOS_HEADER_180000000._0_8_) {
    local_328 = (undefined4 *)0x2621fc0;
    lVar22 = IMAGE_DOS_HEADER_180000000._0_8_;
    pIVar18 = &IMAGE_DOS_HEADER_180000000;
    do {
      if (puVar2 < IMAGE_DOS_HEADER_180000000.e_magic + lVar22 + 8) {
        if (-1 < lVar22) {
          plVar23 = (longlong *)(lVar22 + 0x180000000);
          if (plVar23 < puVar2 + 1) {
            local_80[0] = *puVar2;
            goto LAB_181636740;
          }
        }
        break;
      }
      lVar22._0_2_ = pIVar18->e_cparhdr;
      lVar22._2_2_ = pIVar18->e_minalloc;
      lVar22._4_2_ = pIVar18->e_maxalloc;
      lVar22._6_2_ = pIVar18->e_ss;
      pIVar18 = (IMAGE_DOS_HEADER *)&pIVar18->e_cparhdr;
    } while (-1 < lVar22);
  }
  goto LAB_18163675f;
  while (plVar23 = (longlong *)(lVar22 + 0x180000000), plVar23 < puVar2 + 1) {
LAB_181636740:
    *(longlong *)(&stack0x00017fffff80 + (lVar22 - (longlong)puVar2)) = *plVar23 + -0x180000000;
    pIVar18 = (IMAGE_DOS_HEADER *)&pIVar18->e_cparhdr;
    lVar22 = *(longlong *)pIVar18;
    puVar20 = local_80;
    if (lVar22 < 0) break;
  }
LAB_18163675f:
  FUN_1816367a5(&DAT_00004234,puVar20,0,local_304);
  return;
}



############ FUN_ 180591dc0 size=90 ############

undefined8 *
FUN_180591dc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x828);
  uVar1 = FUN_181631d30(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 181631d30 size=1395 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181631fa6) */

void FUN_181631d30(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  uint uVar8;
  int unaff_retaddr;
  undefined1 auStack_2f8 [48];
  undefined1 local_2c8 [4];
  undefined4 local_2c4;
  undefined *local_2b8;
  undefined8 local_2a0;
  undefined *local_298;
  undefined *local_290;
  undefined8 local_278;
  longlong local_270;
  undefined8 local_268;
  uint local_25c;
  uint local_258;
  undefined8 *local_248;
  longlong local_240;
  longlong local_238;
  undefined1 local_230 [56];
  undefined8 local_1f8;
  undefined8 *local_1f0;
  undefined8 local_1e8;
  undefined1 local_1e0 [8];
  undefined1 local_1d8 [400];
  ulonglong local_48;
  
  local_1f8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2f8;
  local_270 = param_3;
  local_268 = param_2;
  local_248 = param_1;
  local_1f0 = param_1;
  FUN_1805718f0();
  *param_1 = RightControls::QualityPanel::vftable;
  param_1[0x1f] = RightControls::QualityPanel::vftable;
  param_1[0x22] = RightControls::QualityPanel::vftable;
  FUN_181408890(param_1 + 0x23);
  local_1e8 = 0;
  param_1[0x57] = 0;
  param_1[0x58] = param_2;
  FUN_1815f84a0(param_1 + 0x59);
  *(undefined4 *)(param_1 + 0x8e) = 0;
  FUN_18124ea80(param_1 + 0x8f);
  param_1[0x93] = 0;
  param_1[0x94] = 0;
  FUN_181600080(param_1 + 0x95,param_1,param_3,1);
  FUN_18049c4e0(&local_240,"");
  FUN_1816057f0(param_1 + 0xfd,param_1,&local_240);
  FUN_1804951e0(local_240 + -0x10);
  uVar8 = (uint)&stack0x00000000;
  uVar5 = uVar8 & 0x23f;
  iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  if ((((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e & 0x2aU) == 0) {
    uVar5 = 1;
  }
  else {
    iVar6 = (uVar8 & 0x2dff) * (uVar8 & 0x2dff) + 1;
    uVar5 = iVar6 * 0x24924924 + (iVar6 >> 4) + (iVar6 >> 1) >> 0x1d;
    uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  }
  local_25c = ((int)(-uVar5 | uVar5) >> 0x1f) * -0xc691 ^ 0xc721;
  if ((((uVar8 & 0x19ff) * (uVar8 & 0x19ff) * 0x10 + 4) % 0x13 & 0x118) == 0) {
    uVar5 = ((uVar8 & 0xdff) * (uVar8 & 0xdff) * 0x10 + 4) % 0x13;
  }
  else {
    iVar6 = (uVar8 & 0x77ff) * (uVar8 & 0x77ff) + 1;
    uVar5 = iVar6 * 0x24924924 + (iVar6 >> 4) + (iVar6 >> 1) >> 0x1d;
    uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  }
  local_258 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x9bf2 ^ 0x9a42;
  local_2a0 = 0x6f115a0;
  local_278 = 0x1ffc0;
  local_298 = &DAT_18230d618;
  local_2b8 = &DAT_18232d5d8;
  FUN_18049c4e0(&local_238,"quality-panel");
  FUN_181249460(param_1 + 2,&local_238);
  FUN_1804951e0(local_238 + -0x10);
  local_2c4 = 0;
  uVar1 = FUN_1811316e0(0x128);
  local_290 = (undefined *)uVar1;
  uVar2 = FUN_18124a880(local_230,"QUALITY");
  uVar1 = FUN_18058fde0(uVar1,uVar2,0);
  FUN_180485d90(param_1 + 0x57,uVar1);
  uVar1 = FUN_1804730e0(param_1 + 0x57);
  FUN_18134bf20(param_1,uVar1,0xffffffff);
  local_290 = (undefined *)FUN_1811316e0(0x2e8);
  lVar3 = FUN_181a0ef80(local_290,param_2,local_270);
  lVar7 = lVar3 + 0x1e0;
  if (lVar3 == 0) {
    lVar7 = 0;
  }
  FUN_1815eeb10(param_1 + 0x95,lVar7);
  local_2c8[0] = 0;
  FUN_180590f70(param_1 + 0xf2,local_2c8);
  puVar4 = (undefined8 *)FUN_181249f00(local_1e0,"resolution");
  uVar1 = FUN_18119aa60(param_2,*puVar4);
  FUN_1811be290(uVar1,param_1 + 0x22);
  puVar4 = (undefined8 *)FUN_181249f00(local_1d8,"oversample");
  uVar1 = FUN_18119aa60(param_2,*puVar4);
  FUN_1811be290(uVar1,param_1 + 0x22);
  do {
    FUN_181631520(0xdb38);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_270 = (longlong)local_2b8 - (longlong)local_298;
  local_290 = local_298;
  FUN_1816322b6();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180591e20 size=74 ############

undefined8 * FUN_180591e20(undefined8 *param_1,undefined8 param_2)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x150);
  uVar1 = FUN_181626ed0(uVar1,param_2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 180591e70 size=90 ############

undefined8 *
FUN_180591e70(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x2f8);
  uVar1 = FUN_18161f8c0(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 18161f8c0 size=1895 ############

undefined8 * FUN_18161f8c0(undefined8 *param_1,undefined8 param_2,longlong param_3)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined **ppuVar7;
  code *pcVar8;
  longlong lVar9;
  longlong lVar10;
  void *pvVar11;
  undefined8 *puVar12;
  undefined8 uVar13;
  undefined8 uVar14;
  undefined8 *puVar15;
  longlong *plVar16;
  uint *puVar17;
  undefined1 local_res20 [8];
  undefined8 in_stack_fffffffffffffdf8;
  uint uVar18;
  void *local_1f8;
  longlong local_1f0;
  undefined1 local_1e8 [8];
  undefined1 local_1e0 [8];
  longlong local_1d8;
  longlong local_1d0;
  longlong *local_1c8;
  longlong *local_1c0;
  longlong *local_1b8;
  longlong *local_1b0;
  longlong local_1a8;
  undefined8 local_1a0;
  longlong *local_198;
  undefined8 *local_190;
  longlong *local_188;
  undefined8 *local_180;
  undefined8 local_178;
  longlong local_170;
  undefined8 local_168;
  longlong local_160;
  longlong local_158;
  undefined **local_150;
  undefined8 *local_148;
  undefined ***local_118;
  undefined **local_110;
  undefined8 *local_108;
  undefined ***local_d8;
  undefined **local_d0;
  undefined8 *local_c8;
  undefined ***local_98;
  undefined1 local_90 [56];
  undefined8 local_58;
  
  uVar18 = (uint)((ulonglong)in_stack_fffffffffffffdf8 >> 0x20);
  local_178 = 0xfffffffffffffffe;
  lVar10 = 0;
  puVar12 = param_1;
  FUN_1813ec2b0();
  puVar12[0x20] = 0;
  *(undefined1 *)(puVar12 + 0x21) = 0;
  *puVar12 = RightControls::OutputPanel::vftable;
  puVar12[0x1f] = RightControls::OutputPanel::vftable;
  plVar16 = puVar12 + 0x22;
  *plVar16 = 0;
  plVar2 = puVar12 + 0x23;
  *plVar2 = 0;
  plVar3 = puVar12 + 0x24;
  *plVar3 = 0;
  lVar9 = __RTDynamicCast(*(undefined8 *)(param_3 + 0xb0),0,
                          &juce::AudioProcessor::RTTI_Type_Descriptor,
                          &WithAutoCue::RTTI_Type_Descriptor,(ulonglong)uVar18 << 0x20);
  if (lVar9 != 0) {
    lVar10 = lVar9 + 0x30;
  }
  plVar4 = param_1 + 0x25;
  *plVar4 = lVar10;
  local_1c8 = plVar4;
  local_1c0 = plVar4;
  local_198 = plVar4;
  local_190 = param_1 + 0x26;
  FUN_18119aa60(param_2,"delta");
  FUN_1805913f0(param_1 + 0x26);
  local_180 = param_1 + 0x27;
  local_1b8 = plVar4;
  local_1b0 = plVar4;
  local_188 = plVar4;
  FUN_18119aa60(param_2,"bypass");
  FUN_1805915e0();
  param_1[0x28] = 0;
  plVar4 = param_1 + 0x29;
  *plVar4 = 0;
  FUN_1815f84a0(param_1 + 0x2a);
  pvVar11 = (void *)FUN_1811316e0(0x128);
  local_1f8 = pvVar11;
  FUN_18049c4e0(local_res20,"OUTPUT");
  puVar12 = (undefined8 *)FUN_18058fde0(pvVar11,local_res20,0);
  if (plVar16 == &local_1a8) {
    if (puVar12 != (undefined8 *)0x0) {
      puVar15 = (undefined8 *)*puVar12;
      goto LAB_18161fa9a;
    }
  }
  else {
    puVar6 = (undefined8 *)*plVar16;
    *plVar16 = (longlong)puVar12;
    if (puVar6 != (undefined8 *)0x0) {
      puVar15 = (undefined8 *)*puVar6;
      puVar12 = puVar6;
LAB_18161fa9a:
      (*(code *)*puVar15)(puVar12,1);
    }
  }
  plVar16 = (longlong *)*plVar16;
  if (plVar16 != (longlong *)0x0) {
    (**(code **)(*plVar16 + 0x58))(plVar16,1);
    FUN_181343cc0(param_1,plVar16,0xffffffff);
  }
  uVar13 = FUN_18119aa60(param_2,&DAT_18221c38c);
  lVar9 = FUN_1811316e0(0x870);
  local_1a8 = lVar9;
  FUN_18049c4e0(local_1e8,&DAT_18221c0d4);
  puVar12 = (undefined8 *)FUN_181550d40(lVar9,local_1e8,uVar13);
  if (plVar2 == &local_170) {
    if (puVar12 != (undefined8 *)0x0) {
      puVar15 = (undefined8 *)*puVar12;
      goto LAB_18161fb33;
    }
  }
  else {
    puVar6 = (undefined8 *)*plVar2;
    *plVar2 = (longlong)puVar12;
    if (puVar6 != (undefined8 *)0x0) {
      puVar15 = (undefined8 *)*puVar6;
      puVar12 = puVar6;
LAB_18161fb33:
      (*(code *)*puVar15)(puVar12,1);
    }
  }
  lVar9 = *plVar2;
  plVar16 = (longlong *)(lVar9 + 0x840);
  ppuVar7 = (undefined **)*plVar16;
  if (ppuVar7 == CloudyBoxSlider::vftable) {
    if ((*(uint *)(DAT_182674760 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_182674760 + -0x10) = *(int *)(DAT_182674760 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    plVar16 = (longlong *)(lVar9 + 0x848);
    lVar9 = *plVar16;
    *plVar16 = DAT_182674760;
    UNLOCK();
    puVar17 = (uint *)(lVar9 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
  }
  else {
    (*(code *)ppuVar7[2])(plVar16,&DAT_182674760);
  }
  uVar13 = FUN_18119aa60(param_2,&DAT_1822f55a4);
  uVar14 = FUN_1811316e0(0x870);
  local_168 = uVar14;
  FUN_18049c4e0(local_1e0,&DAT_1822f49b4);
  puVar12 = (undefined8 *)FUN_181550d40(uVar14,local_1e0,uVar13);
  if (plVar3 == &local_160) {
    if (puVar12 == (undefined8 *)0x0) goto LAB_18161fc12;
    puVar15 = (undefined8 *)*puVar12;
  }
  else {
    puVar6 = (undefined8 *)*plVar3;
    *plVar3 = (longlong)puVar12;
    if (puVar6 == (undefined8 *)0x0) goto LAB_18161fc12;
    puVar15 = (undefined8 *)*puVar6;
    puVar12 = puVar6;
  }
  (*(code *)*puVar15)(puVar12,1);
LAB_18161fc12:
  lVar9 = *plVar3;
  plVar16 = (longlong *)(lVar9 + 0x840);
  ppuVar7 = (undefined **)*plVar16;
  if (ppuVar7 == CloudyBoxSlider::vftable) {
    if ((*(uint *)(DAT_1826746f0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_1826746f0 + -0x10) = *(int *)(DAT_1826746f0 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    plVar16 = (longlong *)(lVar9 + 0x848);
    lVar9 = *plVar16;
    *plVar16 = DAT_1826746f0;
    UNLOCK();
    puVar17 = (uint *)(lVar9 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
  }
  else {
    (*(code *)ppuVar7[2])(plVar16,&DAT_1826746f0);
  }
  FUN_18049c4e0(&local_1d8,"delta-control");
  lVar9 = param_1[0x26];
  if ((*(uint *)(local_1d8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_1d8 + -0x10) = *(int *)(local_1d8 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar10 = *(longlong *)(lVar9 + 0x10);
  *(longlong *)(lVar9 + 0x10) = local_1d8;
  UNLOCK();
  puVar17 = (uint *)(lVar10 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  if ((*(uint *)(local_1d8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_1d8 + -0x10);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(local_1d8 + -0x10));
    }
  }
  lVar9 = param_1[0x26];
  plVar16 = (longlong *)(lVar9 + 200);
  pcVar8 = *(code **)(*plVar16 + 0x10);
  if (pcVar8 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    if ((*(uint *)(DAT_182674700 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_182674700 + -0x10) = *(int *)(DAT_182674700 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    plVar16 = (longlong *)(lVar9 + 0xd0);
    lVar9 = *plVar16;
    *plVar16 = DAT_182674700;
    UNLOCK();
    puVar17 = (uint *)(lVar9 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar18 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
  }
  else {
    (*pcVar8)(plVar16,&DAT_182674700);
  }
  FUN_18049c4e0(&local_1d0,"bypass-control");
  lVar9 = param_1[0x27];
  if ((*(uint *)(local_1d0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_1d0 + -0x10) = *(int *)(local_1d0 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar10 = *(longlong *)(lVar9 + 0x10);
  *(longlong *)(lVar9 + 0x10) = local_1d0;
  UNLOCK();
  puVar17 = (uint *)(lVar10 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  if ((*(uint *)(local_1d0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_1d0 + -0x10);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(local_1d0 + -0x10));
    }
  }
  plVar16 = (longlong *)(param_1[0x27] + 200);
  pcVar8 = *(code **)(*plVar16 + 0x10);
  if (pcVar8 == .?AVSoothe2Header@@::vtbl___AVSoothe2Header__) {
    FUN_181249460(param_1[0x27] + 0xd0);
  }
  else {
    (*pcVar8)(plVar16,&DAT_182674720);
  }
  lVar9 = *plVar2;
  uVar13 = FUN_1811316e0(0x40);
  local_1a0 = uVar13;
  FUN_18049c4e0(&local_1f0,&DAT_18221d1a4);
  local_1f8 = (void *)FUN_1816057f0(uVar13,lVar9,&local_1f0);
  puVar17 = (uint *)(local_1f0 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar18 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  FUN_180578cc0(param_1 + 0x28,&local_1f8);
  pvVar11 = local_1f8;
  if (local_1f8 != (void *)0x0) {
    FUN_1816056e0(local_1f8);
                    /* WARNING: Subroutine does not return */
    free(pvVar11);
  }
  uVar13 = FUN_18119aa60(param_2,&DAT_18221c934);
  uVar14 = FUN_1811316e0(0x40);
  local_150 = std::_Func_impl_no_alloc<<lambda_13e650dc7f03bbde13f5672519a5a432>,void,float>::
              vftable;
  local_118 = &local_150;
  local_148 = param_1;
  lVar9 = FUN_18055e880(uVar14,uVar13,&local_150);
  if (plVar4 != &local_158) {
    lVar10 = *plVar4;
    *plVar4 = lVar9;
    lVar9 = lVar10;
  }
  if (lVar9 != 0) {
    FUN_18056a070(&local_158,lVar9);
  }
  FUN_18134bf20(param_1,*plVar2,0xffffffff);
  FUN_18134bf20(param_1,*plVar3,0xffffffff);
  FUN_18134bf20(param_1,param_1[0x26],0xffffffff);
  FUN_18134bf20(param_1,param_1[0x27],0xffffffff);
  local_58 = 0;
  local_110 = std::
              _Func_impl_no_alloc<<lambda_b8d20a52157970307c8d69f0a77ce784>,juce::Path*___ptr64>::
              vftable;
  local_d8 = &local_110;
  local_d0 = std::_Func_impl_no_alloc<<lambda_bb693e7348a7636b36efe1d75e7dc9e4>,int>::vftable;
  local_98 = &local_d0;
  local_108 = param_1;
  local_c8 = param_1;
  FUN_1815f8200(param_1 + 0x2a,param_1,&local_d0,&local_110,local_90);
  FUN_181342bf0(param_1 + 0x2a,DAT_1824c3d54);
  return param_1;
}



############ FUN_ 1805920b0 size=41 ############

void .?AVSoothe2SectionHeader@@::vtbl___AVSoothe2SectionHeader__(longlong param_1)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x28);
  FUN_180570fc0(*(undefined8 *)(param_1 + 8),uVar1);
  return;
}



############ FUN_ 180592500 size=873 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180592500(longlong param_1,undefined8 *param_2,longlong *param_3)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong *plVar5;
  ulonglong *puVar6;
  int iVar7;
  uint uVar8;
  longlong *plVar9;
  ulonglong *puVar10;
  ulonglong uVar12;
  ulonglong uVar13;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  longlong *local_88 [2];
  undefined8 local_78;
  undefined4 local_70;
  undefined4 uStack_6c;
  ushort uStack_68;
  undefined2 uStack_66;
  longlong local_58;
  ushort local_50;
  ulonglong local_48;
  ulonglong uVar11;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_b8;
  lVar2 = *param_3;
  plVar9 = *(longlong **)(param_1 + 0x20);
  plVar3 = plVar9 + *(int *)(param_1 + 0x2c);
  for (; plVar9 != plVar3; plVar9 = plVar9 + 1) {
    plVar5 = (longlong *)*plVar9;
    if (plVar5[1] == lVar2) {
      if (plVar5 != (longlong *)0x0) goto LAB_180592798;
      break;
    }
  }
  uVar13 = 0;
  local_98 = 0;
  lVar4 = __RTDynamicCast(lVar2,0,&juce::ImagePixelData::RTTI_Type_Descriptor,
                          &juce::OpenGLFrameBufferImage::RTTI_Type_Descriptor);
  if ((lVar4 == 0) || ((longlong *)(lVar4 + 0x48) == (longlong *)0x0)) {
    plVar5 = (longlong *)FUN_1811316e0(0x40);
    *plVar5 = param_1;
    plVar5[1] = lVar2;
    plVar5[2] = 0;
    *(undefined4 *)(plVar5 + 3) = 0;
    plVar5[4] = 0;
    local_88[0] = plVar5;
    _ftime64_s(&local_58);
    plVar5[5] = local_58 * 1000 + (ulonglong)local_50;
    plVar5[6] = (longlong)(*(int *)(lVar2 + 0x18) * *(int *)(lVar2 + 0x14));
    *(undefined1 *)(plVar5 + 7) = 1;
    uVar12 = uVar13;
    if (*plVar5 != 0) {
      uVar12 = *plVar5 + 0x10;
    }
    lVar2 = plVar5[1];
    if (uVar12 != 0) {
      puVar10 = *(ulonglong **)(lVar2 + 0x30);
      iVar7 = *(int *)(lVar2 + 0x3c);
      puVar6 = puVar10 + iVar7;
      for (; puVar10 != puVar6; puVar10 = puVar10 + 1) {
        if (uVar12 == *puVar10) goto LAB_1805926b9;
      }
      if (*(int *)(lVar2 + 0x38) < iVar7 + 1) {
        FUN_18047cb30(lVar2 + 0x30,iVar7 + 9 + (iVar7 + 1) / 2 & 0xfffffff8);
      }
      iVar7 = *(int *)(lVar2 + 0x3c);
      *(int *)(lVar2 + 0x3c) = iVar7 + 1;
      *(ulonglong *)(*(longlong *)(lVar2 + 0x30) + (longlong)iVar7 * 8) = uVar12;
    }
LAB_1805926b9:
    iVar7 = *(int *)(param_1 + 0x2c) + 1;
    if (*(int *)(param_1 + 0x28) < iVar7) {
      FUN_18047cb30(param_1 + 0x20,*(int *)(param_1 + 0x2c) + 9 + iVar7 / 2 & 0xfffffff8);
    }
    iVar7 = *(int *)(param_1 + 0x2c);
    *(int *)(param_1 + 0x2c) = iVar7 + 1;
    *(longlong **)(*(longlong *)(param_1 + 0x20) + (longlong)iVar7 * 8) = plVar5;
    *(longlong *)(param_1 + 0x30) = *(longlong *)(param_1 + 0x30) + plVar5[6];
    if (*(ulonglong *)(param_1 + 0x38) < *(ulonglong *)(param_1 + 0x30)) {
      do {
        if ((*(int *)(param_1 + 0x2c) < 2) || (*(longlong *)(param_1 + 0x30) == 0)) break;
        puVar10 = *(ulonglong **)(param_1 + 0x20);
        puVar6 = puVar10 + *(int *)(param_1 + 0x2c);
        uVar12 = uVar13;
        if (puVar10 != puVar6) {
          do {
            if ((uVar12 == 0) || (*(longlong *)(*puVar10 + 0x28) < *(longlong *)(uVar12 + 0x28))) {
              uVar12 = *puVar10;
            }
            puVar10 = puVar10 + 1;
          } while (puVar10 != puVar6);
          if (uVar12 != 0) {
            *(longlong *)(param_1 + 0x30) =
                 *(longlong *)(param_1 + 0x30) - *(longlong *)(uVar12 + 0x30);
            if (0 < *(int *)(param_1 + 0x2c)) {
              puVar6 = *(ulonglong **)(param_1 + 0x20);
              uVar11 = uVar13;
              do {
                if (uVar12 == *puVar6) {
                  FUN_180599eb0(param_1 + 0x20);
                  break;
                }
                uVar8 = (int)uVar11 + 1;
                uVar11 = (ulonglong)uVar8;
                puVar6 = puVar6 + 1;
              } while ((int)uVar8 < *(int *)(param_1 + 0x2c));
            }
          }
        }
      } while (*(ulonglong *)(param_1 + 0x38) < *(ulonglong *)(param_1 + 0x30));
    }
LAB_180592798:
    if (((char)plVar5[7] != '\0') && (plVar3 = (longlong *)plVar5[1], plVar3 != (longlong *)0x0)) {
      *(undefined1 *)(plVar5 + 7) = 0;
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
      local_88[0] = plVar3;
      FUN_18163bd70(plVar5 + 2,local_88);
      if (plVar3 != (longlong *)0x0) {
        LOCK();
        plVar9 = plVar3 + 1;
        lVar2 = *plVar9;
        *(int *)plVar9 = (int)*plVar9 + -1;
        UNLOCK();
        if ((int)lVar2 == 1) {
          (**(code **)*plVar3)(plVar3,1);
        }
      }
    }
    *(int *)param_2 = (int)plVar5[2];
    iVar7 = *(int *)(plVar5[1] + 0x14);
    *(int *)((longlong)param_2 + 4) = iVar7;
    iVar1 = *(int *)(plVar5[1] + 0x18);
    *(int *)(param_2 + 1) = iVar1;
    *(float *)((longlong)param_2 + 0xc) = (float)iVar7 / (float)*(int *)((longlong)plVar5 + 0x14);
    *(float *)(param_2 + 2) = (float)iVar1 / (float)(int)plVar5[3];
    _ftime64_s(&local_70);
    plVar5[5] = CONCAT44(uStack_6c,local_70) * 1000 + (ulonglong)uStack_68;
  }
  else {
    lVar2 = *(longlong *)(lVar4 + 0x48);
    if (lVar2 == 0) {
      local_70 = 0;
    }
    else {
      local_70 = *(undefined4 *)(lVar2 + 0x10);
    }
    lVar2 = *param_3;
    if (lVar2 == 0) {
      uStack_6c = 0;
      uStack_68 = 0;
      uStack_66 = 0;
    }
    else {
      uStack_6c = *(undefined4 *)(lVar2 + 0x14);
      uStack_68 = (ushort)*(undefined4 *)(lVar2 + 0x18);
      uStack_66 = (undefined2)((uint)*(undefined4 *)(lVar2 + 0x18) >> 0x10);
    }
    *param_2 = CONCAT44(uStack_6c,local_70);
    param_2[1] = CONCAT44(0x3f800000,CONCAT22(uStack_66,uStack_68));
    *(undefined4 *)(param_2 + 2) = 0x3f800000;
  }
}



############ FUN_ 180593430 size=430 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180593430(longlong param_1,undefined8 *param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  int iVar3;
  uint uVar4;
  undefined1 auStack_478 [48];
  undefined8 *local_448;
  undefined1 local_438 [1024];
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_478;
  if (*(char *)(param_1 + 0x24) != '\0') {
    *(undefined1 *)(param_1 + 0x24) = 0;
    if (*(int *)(param_1 + 0x1c) < 10) {
      *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x1c);
      *param_2 = 0;
      *(undefined4 *)(param_2 + 1) = 0;
      puVar1 = (undefined8 *)FUN_1811316e0(0x18);
      *puVar1 = 0;
      *(undefined4 *)(puVar1 + 1) = 0;
      puVar1[2] = 0;
      iVar3 = *(int *)(param_1 + 0x1c) + 1;
      local_448 = puVar1;
      if ((int)*(uint *)(param_1 + 0x18) < iVar3) {
        uVar4 = *(int *)(param_1 + 0x1c) + 9 + iVar3 / 2 & 0xfffffff8;
        if (*(uint *)(param_1 + 0x18) != uVar4) {
          pvVar2 = *(void **)(param_1 + 0x10);
          if ((int)uVar4 < 1) {
                    /* WARNING: Subroutine does not return */
            free(pvVar2);
          }
          if (pvVar2 == (void *)0x0) {
            pvVar2 = malloc((longlong)(int)uVar4 * 8);
            *(void **)(param_1 + 0x10) = pvVar2;
          }
          else {
            pvVar2 = realloc(pvVar2,(longlong)(int)uVar4 * 8);
            *(void **)(param_1 + 0x10) = pvVar2;
          }
        }
        *(uint *)(param_1 + 0x18) = uVar4;
      }
      iVar3 = *(int *)(param_1 + 0x1c);
      *(int *)(param_1 + 0x1c) = iVar3 + 1;
      *(undefined8 **)(*(longlong *)(param_1 + 0x10) + (longlong)iVar3 * 8) = puVar1;
    }
    else {
      *(int *)(param_1 + 0x20) = (*(int *)(param_1 + 0x20) + 1) % 10;
    }
    FUN_1812a1520(param_3,local_438,0x100);
    FUN_181639e20(*(undefined8 *)
                   (*(longlong *)(param_1 + 0x10) + (longlong)*(int *)(param_1 + 0x20) * 8),0x100,1,
                  local_438);
  }
  iVar3 = **(int **)(*(longlong *)(param_1 + 0x10) + (longlong)*(int *)(param_1 + 0x20) * 8);
  if (*(int *)((longlong)param_2 + (longlong)*(int *)(param_2 + 2) * 4) != iVar3) {
    *(int *)((longlong)param_2 + (longlong)*(int *)(param_2 + 2) * 4) = iVar3;
    glBindTexture(0xde1);
  }
}



############ FUN_ 180593710 size=275 ############

undefined8 *
FUN_180593710(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  
  *param_1 = param_2;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  lVar3 = FUN_181639ad0(*param_1,"GraphicsContextPrograms",param_3,param_4,0xfffffffffffffffe);
  if (lVar3 == 0) {
    puVar5 = (undefined8 *)param_1[1];
    param_1[1] = 0;
LAB_18059377b:
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
  }
  else if (param_1[1] != lVar3) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
    puVar5 = (undefined8 *)param_1[1];
    param_1[1] = lVar3;
    goto LAB_18059377b;
  }
  if (param_1[1] != 0) {
    return param_1;
  }
  uVar4 = FUN_1811316e0(0x940);
  lVar3 = FUN_180592a00(uVar4,*param_1);
  if (lVar3 == 0) {
    puVar5 = (undefined8 *)param_1[1];
    param_1[1] = 0;
  }
  else {
    if (param_1[1] == lVar3) goto LAB_1805937fc;
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
    puVar5 = (undefined8 *)param_1[1];
    param_1[1] = lVar3;
  }
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar5 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
LAB_1805937fc:
  FUN_1816398a0(*param_1,"GraphicsContextPrograms",param_1[1]);
  return param_1;
}



############ FUN_ 180593a40 size=830 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180593a40(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  short *psVar9;
  short sVar10;
  undefined1 auStack_68 [32];
  int local_48;
  undefined4 local_44;
  undefined8 local_40;
  char local_38 [8];
  char local_30 [4];
  char local_2c;
  ulonglong local_28;
  
  local_40 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_68;
  *param_1 = *param_2;
  *(int *)(param_1 + 1) = (int)param_2[1];
  lVar8 = param_2[2];
  uVar3 = *(undefined4 *)((longlong)param_2 + 0x14);
  lVar4 = param_2[3];
  *(undefined4 *)((longlong)param_1 + 0xc) = *(undefined4 *)((longlong)param_2 + 0xc);
  *(int *)(param_1 + 2) = (int)lVar8;
  *(undefined4 *)((longlong)param_1 + 0x14) = uVar3;
  *(int *)(param_1 + 3) = (int)lVar4;
  *(undefined1 *)(param_1 + 4) = 0;
  *(undefined8 *)((longlong)param_1 + 0x24) = 0;
  lVar8 = *param_2;
  *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
  *(undefined4 *)(param_1 + 8) = 0xffffffff;
  param_1[9] = lVar8;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  *(undefined4 *)(param_1 + 0xe) = 0;
  *(undefined1 *)((longlong)param_1 + 0x74) = 1;
  FUN_180593710(param_1 + 0xf,*param_2);
  param_1[0x595] = *param_2;
  param_1[0x596] = 0;
  param_1[0x597] = 0;
  glGetIntegerv(0x8ca6,&local_44);
  *(undefined4 *)(param_1 + 0x598) = local_44;
  if (*(code **)(*param_1 + 0x150) != (code *)0x0) {
    (**(code **)(*param_1 + 0x150))(0x8d40,(int)param_1[1]);
  }
  glViewport(0,0,*(undefined4 *)((longlong)param_1 + 0x14),(int)param_1[3]);
  glDisable(0xb71);
  glDisable(0xbe2);
  *(undefined8 *)((longlong)param_1 + 0x24) = 0;
  param_1[6] = 0;
  *(undefined4 *)(param_1 + 7) = 0;
  local_48 = 0;
  glGetIntegerv(0x80e9,&local_48);
  iVar7 = local_48 / 6 + (local_48 >> 0x1f) +
          (int)(((longlong)local_48 / 6 + ((longlong)local_48 >> 0x3f) & 0xffffffffU) >> 0x1f);
  iVar6 = 0x100;
  if (iVar7 < 0x100) {
    iVar6 = iVar7;
  }
  *(int *)((longlong)param_1 + 0x2cb4) = iVar6 * 4 + -4;
  if (0 < iVar6 * 6) {
    sVar10 = 2;
    psVar9 = (short *)((longlong)param_1 + 0x20ae);
    lVar8 = ((longlong)(iVar6 * 6) - 1U) / 6 + 1;
    do {
      psVar9[-3] = sVar10 + -2;
      *psVar9 = sVar10 + -1;
      psVar9[-2] = sVar10 + -1;
      psVar9[1] = sVar10;
      psVar9[-1] = sVar10;
      psVar9[2] = sVar10 + 1;
      psVar9 = psVar9 + 6;
      sVar10 = sVar10 + 4;
      lVar8 = lVar8 + -1;
    } while (lVar8 != 0);
  }
  (**(code **)(param_1[0x595] + 0x18))(2,param_1 + 0x14);
  (**(code **)(param_1[0x595] + 8))(0x8893,(int)param_1[0x14]);
  (**(code **)(param_1[0x595] + 0x20))(0x8893,0xc00,param_1 + 0x415,0x88e4);
  (**(code **)(param_1[0x595] + 8))(0x8892,*(undefined4 *)((longlong)param_1 + 0xa4));
  (**(code **)(param_1[0x595] + 0x20))(0x8892,0x2000,param_1 + 0x15,0x88e0);
  lVar8 = *param_2;
  local_38[0] = s_CachedImages_1824c0868[0];
  local_38[1] = s_CachedImages_1824c0868[1];
  local_38[2] = s_CachedImages_1824c0868[2];
  local_38[3] = s_CachedImages_1824c0868[3];
  local_38[4] = s_CachedImages_1824c0868[4];
  local_38[5] = s_CachedImages_1824c0868[5];
  local_38[6] = s_CachedImages_1824c0868[6];
  local_38[7] = s_CachedImages_1824c0868[7];
  local_30[0] = s_CachedImages_1824c0868[8];
  local_30[1] = s_CachedImages_1824c0868[9];
  local_30[2] = s_CachedImages_1824c0868[10];
  local_30[3] = s_CachedImages_1824c0868[0xb];
  local_2c = s_CachedImages_1824c0868[0xc];
  puVar5 = (undefined8 *)FUN_181639ad0(lVar8,local_38);
  if (puVar5 == (undefined8 *)0x0) {
    puVar5 = (undefined8 *)FUN_1811316e0(0x40);
    *(undefined4 *)(puVar5 + 1) = 0;
    *puVar5 = juce::OpenGLRendering::CachedImageList::vftable;
    puVar5[2] = juce::OpenGLRendering::CachedImageList::vftable;
    puVar5[3] = lVar8;
    puVar5[4] = 0;
    puVar5[5] = 0;
    puVar5[6] = 0;
    puVar5[7] = *(undefined8 *)(lVar8 + 0x1e8);
    FUN_1816398a0(lVar8,local_38,puVar5);
  }
  if (puVar5 == (undefined8 *)0x0) {
    puVar5 = (undefined8 *)param_1[0x597];
    param_1[0x597] = 0;
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
  }
  else if ((undefined8 *)param_1[0x597] != puVar5) {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
    puVar2 = (undefined8 *)param_1[0x597];
    param_1[0x597] = (longlong)puVar5;
    if (puVar2 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar2 + 1);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)*puVar2)(puVar2,1);
      }
    }
  }
}



############ FUN_ 180594650 size=219 ############

longlong * FUN_180594650(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  
  lVar1 = *param_2;
  *param_1 = lVar1;
  if (lVar1 != 0) {
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
  }
  uVar3 = *(undefined4 *)((longlong)param_2 + 0xc);
  lVar1 = param_2[2];
  uVar4 = *(undefined4 *)((longlong)param_2 + 0x14);
  *(int *)(param_1 + 1) = (int)param_2[1];
  *(undefined4 *)((longlong)param_1 + 0xc) = uVar3;
  *(int *)(param_1 + 2) = (int)lVar1;
  *(undefined4 *)((longlong)param_1 + 0x14) = uVar4;
  uVar3 = *(undefined4 *)((longlong)param_2 + 0x1c);
  lVar1 = param_2[4];
  uVar4 = *(undefined4 *)((longlong)param_2 + 0x24);
  *(int *)(param_1 + 3) = (int)param_2[3];
  *(undefined4 *)((longlong)param_1 + 0x1c) = uVar3;
  *(int *)(param_1 + 4) = (int)lVar1;
  *(undefined4 *)((longlong)param_1 + 0x24) = uVar4;
  *(int *)(param_1 + 5) = (int)param_2[5];
  FUN_1812a0fd0(param_1 + 6,param_2 + 6,param_3,param_4,0xfffffffffffffffe);
  *(int *)(param_1 + 0xc) = (int)param_2[0xc];
  *(undefined4 *)((longlong)param_1 + 100) = *(undefined4 *)((longlong)param_2 + 100);
  lVar1 = param_2[0xd];
  param_1[0xd] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  param_1[0xe] = param_2[0xe];
  *(undefined1 *)(param_1 + 0xf) = 0;
  lVar1 = param_2[0x10];
  param_1[0x10] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  puVar2 = (undefined8 *)param_2[0x11];
  if (puVar2 == (undefined8 *)0x0) {
    puVar6 = (undefined8 *)0x0;
  }
  else {
    puVar6 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar6 = *puVar2;
    *(undefined4 *)(puVar6 + 1) = *(undefined4 *)(puVar2 + 1);
    uVar5 = *(undefined8 *)((longlong)puVar2 + 0x14);
    *(undefined8 *)((longlong)puVar6 + 0xc) = *(undefined8 *)((longlong)puVar2 + 0xc);
    *(undefined8 *)((longlong)puVar6 + 0x14) = uVar5;
  }
  param_1[0x11] = (longlong)puVar6;
  return param_1;
}



############ FUN_ 180594730 size=559 ############

longlong * FUN_180594730(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  void *_Memory;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  longlong *plVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  longlong lVar10;
  longlong *plVar11;
  undefined4 uVar12;
  undefined8 local_res8;
  undefined **local_res18;
  undefined8 *local_res20;
  undefined8 *local_78;
  undefined8 local_70;
  longlong local_68;
  undefined1 local_60 [8];
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  
  local_70 = 0xfffffffffffffffe;
  local_res8 = FUN_1811316e0(0x90);
  plVar7 = (longlong *)FUN_180594650(local_res8,param_1);
  plVar8 = (longlong *)*param_1;
  if (plVar8 != (longlong *)0x0) {
    (**(code **)(*plVar8 + 0x58))(plVar8,local_60);
    lVar10 = param_1[0xe];
    if (0 < *(int *)(lVar10 + 0x2cb0)) {
      FUN_1805936a0(lVar10 + 0xa0);
    }
    FUN_1805939d0(lVar10 + 0x78,lVar10 + 0xa0);
    local_res18 = juce::OpenGLImageType::vftable;
    plVar8 = (longlong *)
             (*(code *)PTR_FUN_1824bff70)(&local_res18,&local_res8,2,local_58,local_54,1);
    local_68 = *plVar8;
    plVar11 = (longlong *)0x0;
    uVar12 = 0;
    *plVar8 = 0;
    local_res20 = (undefined8 *)plVar7[0x10];
    plVar7[0x10] = local_68;
    if (local_res20 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res20 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res20)(local_res20,1);
      }
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x20);
    puVar3 = (undefined8 *)param_1[0xe];
    *puVar9 = *puVar3;
    *(undefined4 *)(puVar9 + 1) = *(undefined4 *)(puVar3 + 1);
    uVar4 = *(undefined4 *)(puVar3 + 2);
    uVar5 = *(undefined4 *)((longlong)puVar3 + 0x14);
    uVar6 = *(undefined4 *)(puVar3 + 3);
    *(undefined4 *)((longlong)puVar9 + 0xc) = *(undefined4 *)((longlong)puVar3 + 0xc);
    *(undefined4 *)(puVar9 + 2) = uVar4;
    *(undefined4 *)((longlong)puVar9 + 0x14) = uVar5;
    *(undefined4 *)(puVar9 + 3) = uVar6;
    _Memory = (void *)plVar7[0x11];
    plVar7[0x11] = (longlong)puVar9;
    if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    lVar10 = __RTDynamicCast(plVar7[0x10],0,&juce::ImagePixelData::RTTI_Type_Descriptor,
                             &juce::OpenGLFrameBufferImage::RTTI_Type_Descriptor,0);
    if (lVar10 != 0) {
      plVar11 = (longlong *)(lVar10 + 0x48);
    }
    lVar10 = *plVar11;
    uStack_38 = uVar12;
    uVar4 = uVar12;
    if (lVar10 != 0) {
      uVar12 = *(undefined4 *)(lVar10 + 8);
      uStack_38 = *(undefined4 *)(lVar10 + 0xc);
      uVar4 = *(undefined4 *)(lVar10 + 0x14);
    }
    local_44 = local_60._0_4_;
    uStack_40 = local_60._4_4_;
    lVar10 = param_1[0xe];
    *(undefined4 *)(lVar10 + 8) = uVar4;
    *(undefined4 *)(lVar10 + 0xc) = local_44;
    *(undefined4 *)(lVar10 + 0x10) = uStack_40;
    *(undefined4 *)(lVar10 + 0x14) = uVar12;
    *(undefined4 *)(lVar10 + 0x18) = uStack_38;
    *(undefined4 *)((longlong)plVar7 + 100) = param_2;
    plVar8 = (longlong *)*plVar7;
    uStack_3c = uVar12;
    if (1 < (int)plVar8[1]) {
      plVar8 = (longlong *)(**(code **)(*plVar8 + 8))(plVar8,&local_78);
      lVar10 = *plVar7;
      *plVar7 = *plVar8;
      *plVar8 = lVar10;
      if (local_78 != (undefined8 *)0x0) {
        piVar1 = (int *)(local_78 + 1);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*local_78)(local_78,1);
        }
      }
    }
    FUN_1805929a0(plVar7[0xe]);
  }
  return plVar7;
}



############ FUN_ 180594960 size=891 ############

void FUN_180594960(longlong *param_1,undefined4 param_2,float *param_3)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  int iVar9;
  float fVar10;
  undefined8 uVar11;
  longlong *plVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  double dVar15;
  float fVar16;
  undefined8 *local_res8;
  undefined8 *local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  float local_a0;
  float local_9c;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  undefined1 local_88 [112];
  
  fVar10 = DAT_1824c3ea4;
  local_b0 = 0xfffffffffffffffe;
  if (*param_1 != 0) {
    fVar2 = param_3[1];
    if ((((fVar2 == 0.0) && (param_3[3] == 0.0)) && (*param_3 == DAT_1824c3ea4)) &&
       ((param_3[4] == DAT_1824c3ea4 && (*(char *)((longlong)param_1 + 0x29) == '\0')))) {
      uVar11 = FUN_180599280();
      fVar2 = param_3[5];
      fVar16 = param_3[2];
      if ((char)param_1[5] == '\0') {
        fVar3 = *(float *)((longlong)param_1 + 0x14);
        fVar4 = *(float *)(param_1 + 3);
        fVar5 = *(float *)((longlong)param_1 + 0x1c);
        fVar6 = *(float *)((longlong)param_1 + 0xc);
        fVar7 = *(float *)(param_1 + 1);
        fVar8 = *(float *)(param_1 + 2);
        local_res8 = (undefined8 *)param_1[0xd];
        if (local_res8 != (undefined8 *)0x0) {
          LOCK();
          *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
          UNLOCK();
        }
        FUN_1812520a0(&local_res8,*(float *)(param_1[0xd] + 0x28) * *(float *)(param_1 + 3));
        dVar15 = (double)(*(float *)(param_1 + 1) / *(float *)(param_1 + 3) - fVar10);
        if (DAT_1824c3c70 <
            (float)(double)CONCAT44((uint)((ulonglong)dVar15 >> 0x20) & DAT_1824c4f10._4_4_,
                                    SUB84(dVar15,0) & (uint)DAT_1824c4f10)) {
          FUN_181251de0(&local_res8);
        }
        FUN_180599050(uVar11,param_1,&local_res8,param_2,
                      CONCAT44(fVar16 * fVar3 + fVar2 * fVar4 + fVar5,
                               fVar2 * fVar6 + fVar16 * fVar7 + fVar8));
        if (local_res8 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_res8 + 1);
          iVar9 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar9 == 1) {
            (**(code **)*local_res8)(local_res8,1);
          }
        }
      }
      else {
        FUN_180599050(uVar11,param_1,param_1 + 0xd,param_2,
                      CONCAT44((float)*(int *)((longlong)param_1 + 0x24) + fVar2,
                               (float)(int)param_1[4] + fVar16));
      }
    }
    else {
      fVar10 = *(float *)(param_1[0xd] + 0x28);
      fVar16 = *(float *)(param_1[0xd] + 0x2c) * fVar10;
      local_94 = param_3[4] * 0.0;
      local_90 = param_3[3] * 0.0;
      local_8c = local_90 + local_94 + param_3[5];
      local_90 = param_3[4] * fVar10 + local_90;
      local_94 = param_3[3] * fVar16 + local_94;
      local_9c = *param_3 * 0.0;
      local_98 = local_9c + fVar2 * 0.0 + param_3[2];
      local_9c = fVar2 * fVar10 + local_9c;
      local_a0 = *param_3 * fVar16 + fVar2 * 0.0;
      FUN_18049eab0(param_1 + 1,local_88,&local_a0);
      plVar12 = (longlong *)FUN_181252280(param_1 + 0xd);
      puVar13 = (undefined8 *)(**(code **)(*plVar12 + 0x40))(plVar12,param_2,local_88,fVar10);
      if (puVar13 != (undefined8 *)0x0) {
        local_a8 = puVar13;
        puVar14 = (undefined8 *)FUN_1811316e0(0x38);
        *(undefined4 *)(puVar14 + 1) = 0;
        *puVar14 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                   EdgeTableRegion::vftable;
        local_res8 = puVar14;
        FUN_18129f450(puVar14 + 2,puVar13);
        *(int *)(puVar14 + 1) = *(int *)(puVar14 + 1) + 1;
        local_b8 = puVar14;
        FUN_1805998c0(param_1,&local_b8);
                    /* WARNING: Subroutine does not return */
        free((void *)*puVar13);
      }
    }
  }
  return;
}



############ FUN_ 180599050 size=408 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180599050(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  int *piVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined4 extraout_XMM0_Db;
  float fVar7;
  undefined4 uVar8;
  undefined8 *local_48;
  undefined8 *local_40;
  double local_38;
  undefined8 local_30;
  undefined1 local_28 [32];
  
  local_30 = 0xfffffffffffffffe;
  FUN_18059a460(param_1,&local_48);
  puVar4 = local_48;
  if (local_48 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(param_1 + 0x18);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + 1;
    UNLOCK();
    *(int *)((longlong)local_48 + 0x24) = iVar2 + 1;
    uVar8 = 0;
    if (*(char *)(local_48 + 5) != '\0') {
      param_5._0_4_ = floorf((float)param_5 + DAT_1824c3d8c);
      uVar8 = extraout_XMM0_Db;
    }
    if (puVar4[3] != 0) {
      local_38 = (double)param_5._4_4_ + DAT_1824c4520;
      uVar3 = puVar4[3];
      if (*param_2 != 0) {
        puVar5 = (undefined8 *)FUN_1811316e0(0x38);
        *(undefined4 *)(puVar5 + 1) = 0;
        *puVar5 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                  EdgeTableRegion::vftable;
        local_40 = puVar5;
        FUN_18129f450(puVar5 + 2,uVar3);
        FUN_18129eee0(puVar5 + 2,CONCAT44(uVar8,(float)param_5),(ulonglong)local_38 & 0xffffffff);
        if ((param_2[7] == 0) && (param_2[8] == 0)) {
          lVar6 = FUN_18049fa40(local_28,(int)param_2[6]);
          fVar7 = *(float *)(lVar6 + 8) - DAT_1824c3d8c;
          if (0.0 < fVar7) {
            FUN_18129ee60(puVar5 + 2,fVar7 * _DAT_1824c3fb4 + DAT_1824c3ea4);
          }
        }
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        local_40 = puVar5;
        FUN_1805998c0(param_2,&local_40);
      }
    }
  }
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_48)(local_48,1);
    }
  }
  return;
}



############ FUN_ 180599280 size=115 ############

undefined8 * FUN_180599280(void)

{
  undefined8 *puVar1;
  
  puVar1 = DAT_18267ab80;
  if (DAT_18267ab80 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x50);
    FUN_1812a7230(puVar1);
    *puVar1 = juce::RenderingHelpers::
              GlyphCache<juce::RenderingHelpers::CachedGlyphEdgeTable<juce::OpenGLRendering::SavedState>,juce::OpenGLRendering::SavedState>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
    *(undefined4 *)(puVar1 + 4) = 0;
    InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)puVar1 + 0x24));
    FUN_1805991f0(puVar1);
  }
  DAT_18267ab80 = puVar1;
  return puVar1;
}



############ FUN_ 18059a360 size=255 ############

void FUN_18059a360(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  int iVar4;
  
  iVar4 = *(int *)(param_1 + 0x14) + param_2;
  plVar1 = (longlong *)(param_1 + 8);
  if (*(int *)(param_1 + 0x10) < iVar4) {
    FUN_18047cb30(plVar1,iVar4 + 8 + iVar4 / 2 & 0xfffffff8,iVar4,param_4,0xfffffffffffffffe);
  }
  while (param_2 = param_2 + -1, -1 < param_2) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x30);
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
    puVar3[4] = 0;
    puVar3[5] = 0;
    *(undefined4 *)(puVar3 + 1) = 0;
    *puVar3 = juce::RenderingHelpers::CachedGlyphEdgeTable<juce::OpenGLRendering::SavedState>::
              vftable;
    FUN_181252d20(puVar3 + 2);
    puVar3[3] = 0;
    puVar3[4] = 0;
    *(undefined1 *)(puVar3 + 5) = 0;
    iVar2 = *(int *)(param_1 + 0x14);
    iVar4 = iVar2 + 1;
    if (*(int *)(param_1 + 0x10) < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iVar2 + 2;
      }
      FUN_18047cb30(plVar1,iVar2 + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iVar4 = *(int *)(param_1 + 0x14);
    *(int *)(param_1 + 0x14) = iVar4 + 1;
    *(undefined8 **)(*plVar1 + (longlong)iVar4 * 8) = puVar3;
    LOCK();
    *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
    UNLOCK();
  }
  return;
}



############ FUN_ 18059ac10 size=1075 ############

void FUN_18059ac10(undefined8 *param_1,longlong *param_2,undefined8 param_3,longlong *param_4)

{
  undefined1 auVar1 [16];
  undefined1 uVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  longlong *local_res8;
  undefined8 in_stack_ffffffffffffff48;
  undefined4 uVar18;
  undefined8 uVar17;
  undefined8 local_98;
  int iStack_90;
  int iStack_8c;
  longlong *local_88;
  float local_80;
  float local_7c;
  float local_78;
  float local_74;
  float local_70;
  float local_6c;
  void *local_68;
  ulonglong local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  undefined8 local_40;
  longlong *local_38;
  
  uVar18 = (undefined4)((ulonglong)in_stack_ffffffffffffff48 >> 0x20);
  local_40 = 0xfffffffffffffffe;
  plVar7 = param_4;
  FUN_18049eab0(param_1 + 1,&local_80);
  uVar2 = *(undefined1 *)((longlong)param_1 + 0x33);
  uVar15 = (uint)DAT_1824c4f10;
  uVar16 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
  if (((((float)(double)CONCAT44((uint)((ulonglong)(double)local_7c >> 0x20) & uVar16,
                                 SUB84((double)local_7c,0) & uVar15) < DAT_1824c3c5c) &&
       ((float)(double)CONCAT44((uint)((ulonglong)(double)local_74 >> 0x20) & uVar16,
                                SUB84((double)local_74,0) & uVar15) < DAT_1824c3c5c)) &&
      ((float)(double)CONCAT44((uint)((ulonglong)(double)(local_80 - DAT_1824c3ea4) >> 0x20) &
                               uVar16,SUB84((double)(local_80 - DAT_1824c3ea4),0) & uVar15) <
       DAT_1824c3c5c)) &&
     ((float)(double)CONCAT44((uint)((ulonglong)(double)(local_70 - DAT_1824c3ea4) >> 0x20) & uVar16
                              ,SUB84((double)(local_70 - DAT_1824c3ea4),0) & uVar15) < DAT_1824c3c5c
     )) {
    if ((*(int *)(param_1 + 0xc) == 0) ||
       ((((int)(local_6c * DAT_1824c4550) | (int)(local_78 * DAT_1824c4550)) & 0xe0U) == 0)) {
      iVar14 = (int)((int)(local_78 * DAT_1824c4550) + 0x80U) >> 8;
      iVar13 = (int)((int)(local_6c * DAT_1824c4550) + 0x80U) >> 8;
      if (plVar7 != (longlong *)0x0) {
        (**(code **)(*param_4 + 0x88))
                  (plVar7,param_1,param_2,uVar2,CONCAT44(uVar18,iVar14),iVar13,1);
        return;
      }
      lVar3 = *param_2;
      iVar11 = 0;
      if (lVar3 == 0) {
        iVar6 = 0;
      }
      else {
        iVar11 = *(int *)(lVar3 + 0x18);
        iVar6 = *(int *)(lVar3 + 0x14);
      }
      auVar1 = *(undefined1 (*) [16])(param_1[0xe] + 0xc);
      iVar5 = auVar1._0_4_;
      iVar12 = iVar14;
      if (iVar14 < iVar5) {
        iVar12 = iVar5;
      }
      iVar9 = auVar1._4_4_;
      iVar4 = iVar13;
      if (iVar13 < iVar9) {
        iVar4 = iVar9;
      }
      iVar5 = iVar5 + auVar1._8_4_;
      iVar10 = iVar6 + iVar14;
      if (iVar5 < iVar6 + iVar14) {
        iVar10 = iVar5;
      }
      iVar10 = iVar10 - iVar12;
      if (iVar10 < 0) {
        return;
      }
      iVar9 = auVar1._12_4_ + iVar9;
      iVar6 = iVar11 + iVar13;
      if (iVar9 < iVar11 + iVar13) {
        iVar6 = iVar9;
      }
      iVar6 = iVar6 - iVar4;
      if (iVar6 < 0) {
        return;
      }
      local_98 = CONCAT44(iVar4,iVar12);
      _iStack_90 = CONCAT44(iVar6,iVar10);
      if (iVar10 < 1) {
        return;
      }
      if (iVar6 < 1) {
        return;
      }
      plVar7 = (longlong *)FUN_1811316e0(0x38);
      *(undefined4 *)(plVar7 + 1) = 0;
      *plVar7 = (longlong)
                juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                EdgeTableRegion::vftable;
      local_38 = plVar7;
      FUN_18129fce0(plVar7 + 2,&local_98);
      *(int *)(plVar7 + 1) = (int)plVar7[1] + 1;
      local_res8 = plVar7;
      (**(code **)(*(longlong *)*param_1 + 0x10))((longlong *)*param_1,&local_88,&local_res8);
      if (local_res8 != (longlong *)0x0) {
        plVar7 = local_res8 + 1;
        *(int *)plVar7 = (int)*plVar7 + -1;
        if ((int)*plVar7 == 0) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      if (local_88 != (longlong *)0x0) {
        (**(code **)(*local_88 + 0x88))
                  (local_88,param_1,param_2,uVar2,CONCAT44(uVar18,iVar14),iVar13,0);
      }
      if (local_88 == (longlong *)0x0) {
        return;
      }
      plVar7 = local_88 + 1;
      *(int *)plVar7 = (int)*plVar7 + -1;
      if ((int)*plVar7 != 0) {
        return;
      }
      (**(code **)*local_88)(local_88,1);
      return;
    }
  }
  if (local_70 * local_80 - local_74 * local_7c != 0.0) {
    if (plVar7 == (longlong *)0x0) {
      local_68 = (void *)0x0;
      local_60 = 0;
      local_58 = 0;
      uStack_50 = 0;
      local_48 = 1;
      lVar3 = *param_2;
      if (lVar3 == 0) {
        iStack_90 = 0;
        iStack_8c = 0;
      }
      else {
        iStack_8c = *(int *)(lVar3 + 0x18);
        iStack_90 = *(undefined4 *)(lVar3 + 0x14);
      }
      local_98 = 0;
      uVar17 = CONCAT44(uVar18,(float)iStack_8c);
      FUN_18129d850(&local_68);
      puVar8 = (undefined8 *)
               (**(code **)(*(longlong *)*param_1 + 8))((longlong *)*param_1,&local_88);
      (**(code **)(*(longlong *)*puVar8 + 0x30))
                ((longlong *)*puVar8,&local_res8,&local_68,&local_80,uVar17);
      if (local_88 != (longlong *)0x0) {
        plVar7 = local_88 + 1;
        *(int *)plVar7 = (int)*plVar7 + -1;
        if ((int)*plVar7 == 0) {
          (**(code **)*local_88)(local_88,1);
        }
      }
      if (local_res8 != (longlong *)0x0) {
        (**(code **)(*local_res8 + 0x80))
                  (local_res8,param_1,param_2,uVar2,&local_80,*(undefined4 *)(param_1 + 0xc),0);
      }
      if (local_res8 != (longlong *)0x0) {
        plVar7 = local_res8 + 1;
        *(int *)plVar7 = (int)*plVar7 + -1;
        if ((int)*plVar7 == 0) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_68);
    }
    (**(code **)(*param_4 + 0x80))
              (plVar7,param_1,param_2,uVar2,&local_80,*(undefined4 *)(param_1 + 0xc),1);
  }
  return;
}



############ FUN_ 180594cf0 size=370 ############

undefined8 *
FUN_180594cf0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = juce::OpenGLRendering::ShaderContext::vftable;
  FUN_180593a40(param_1 + 4);
  puVar4 = (undefined8 *)FUN_1811316e0(0x90);
  uVar3 = *(undefined8 *)((longlong)param_1 + 0x2c);
  lVar2 = *(longlong *)((longlong)param_1 + 0x34);
  puVar5 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
            RectangleListRegion::vftable;
  puVar5[2] = 0;
  puVar5[3] = 0;
  if ((0 < (int)lVar2) && ((int)((ulonglong)lVar2 >> 0x20) != 0 && -1 < lVar2)) {
    FUN_18049ba20(puVar5 + 2,8,param_3,param_4,uVar7);
    iVar1 = *(int *)((longlong)puVar5 + 0x1c);
    *(int *)((longlong)puVar5 + 0x1c) = iVar1 + 1;
    puVar6 = (undefined8 *)((longlong)iVar1 * 0x10 + puVar5[2]);
    *puVar6 = uVar3;
    puVar6[1] = lVar2;
  }
  *puVar4 = puVar5;
  *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
  puVar4[1] = 0x3f800000;
  puVar4[2] = 0;
  puVar4[3] = 0x3f800000;
  puVar4[4] = 0;
  *(undefined2 *)(puVar4 + 5) = 1;
  *(undefined4 *)(puVar4 + 6) = 0xff000000;
  puVar4[7] = 0;
  puVar4[8] = 0;
  puVar4[9] = 0x3f800000;
  puVar4[10] = 0;
  puVar4[0xb] = 0x3f800000;
  *(undefined4 *)(puVar4 + 0xc) = 1;
  *(undefined4 *)((longlong)puVar4 + 100) = 0x3f800000;
  FUN_181252d20(puVar4 + 0xd);
  puVar4[0xe] = param_1 + 4;
  *(undefined1 *)(puVar4 + 0xf) = 0;
  puVar4[0x10] = 0;
  puVar4[0x11] = 0;
  lVar2 = param_1[1];
  param_1[1] = puVar4;
  if (lVar2 != 0) {
    FUN_18059b800();
  }
  return param_1;
}



############ FUN_ 1816395b0 size=711 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1816395b0(longlong param_1,undefined4 *param_2,int *param_3,undefined8 param_4,int param_5)

{
  undefined4 uVar1;
  bool bVar2;
  int iVar3;
  longlong lVar4;
  undefined1 auStack_88 [32];
  undefined4 local_68;
  undefined8 local_60;
  char local_58 [4];
  undefined4 local_54;
  undefined8 local_50;
  undefined8 local_48;
  float local_40;
  float local_3c;
  short local_38;
  short local_36;
  short local_34;
  short local_32;
  short local_30;
  short local_2e;
  short local_2c;
  short local_2a;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_88;
  if (0 < param_5) {
    glBlendFunc(1,0x303);
    glEnable(0xbe2);
    glGetBooleanv(0xb71,local_58);
    if (local_58[0] != '\0') {
      glDisable(0xb71);
    }
    lVar4 = FUN_181639c10(param_1);
    if ((lVar4 == 0) || (*(char *)(lVar4 + 0x2f8) == '\0')) {
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
    if (bVar2) {
      local_38 = (short)*param_2;
      local_34 = (short)param_2[2] + local_38;
      local_2e = (short)param_2[1];
      local_36 = (short)param_2[3] + local_2e;
      local_32 = local_36;
      local_30 = local_38;
      local_2c = local_34;
      local_2a = local_2e;
      lVar4 = FUN_181639ad0(param_1,"juceGLComponentOverlayShader");
      if (lVar4 == 0) {
        local_48 = FUN_1811316e0(0x78);
        lVar4 = FUN_180598630(local_48,param_1);
        FUN_1816398a0(param_1,"juceGLComponentOverlayShader",lVar4);
      }
      (**(code **)(*(longlong *)(lVar4 + 0x10) + 0x70))(*(undefined4 *)(lVar4 + 0x18));
      local_3c = (float)param_3[3];
      local_40 = (float)param_3[2];
      local_48 = CONCAT44((float)param_3[1],(float)*param_3);
      (**(code **)(*(longlong *)(lVar4 + 0x60) + 0xf0))(*(undefined4 *)(lVar4 + 0x58),4,&local_48);
      (**(code **)(*(longlong *)(lVar4 + 0x50) + 200))(*(undefined4 *)(lVar4 + 0x48),0);
      (**(code **)(*(longlong *)(lVar4 + 0x40) + 0xd0))(*(undefined4 *)(lVar4 + 0x38));
      (**(code **)(*(longlong *)(lVar4 + 0x70) + 0xd0))(*(undefined4 *)(lVar4 + 0x68));
      local_54 = 0;
      (**(code **)(param_1 + 0x18))(1,&local_54);
      (**(code **)(param_1 + 8))(0x8892,local_54);
      (**(code **)(param_1 + 0x20))(0x8892,0x10,&local_38);
      uVar1 = *(undefined4 *)(lVar4 + 0x30);
      local_60 = 0;
      local_68 = 4;
      (**(code **)(param_1 + 0xa8))(uVar1,2,0x1402);
      (**(code **)(param_1 + 0xb0))(uVar1);
      iVar3 = (**(code **)(param_1 + 0x168))(0x8d40);
      if (iVar3 == 0x8cd5) {
        glDrawArrays(5,0,4);
        (**(code **)(param_1 + 8))(0x8892,0);
        (**(code **)(param_1 + 0x70))(0);
        (**(code **)(param_1 + 0xb8))(uVar1);
        (**(code **)(param_1 + 0x10))(1,&local_54);
      }
      else {
        do {
          iVar3 = glGetError();
        } while (iVar3 != 0);
      }
    }
    if (local_58[0] != '\0') {
      glEnable(0xb71);
    }
  }
}



############ FUN_ 18163ac10 size=456 ############

bool FUN_18163ac10(longlong *param_1,longlong param_2,undefined4 param_3,undefined4 param_4)

{
  longlong lVar1;
  bool bVar2;
  longlong *plVar3;
  
  lVar1 = *param_1;
  *param_1 = 0;
  if (lVar1 != 0) {
    FUN_18059b780();
  }
  plVar3 = (longlong *)FUN_1811316e0(0x20);
  *plVar3 = param_2;
  *(undefined4 *)(plVar3 + 1) = param_3;
  *(undefined4 *)((longlong)plVar3 + 0xc) = param_4;
  plVar3[2] = 0;
  *(undefined4 *)(plVar3 + 3) = 0;
  *(undefined2 *)((longlong)plVar3 + 0x1c) = 0;
  if (*(code **)(param_2 + 0x160) != (code *)0x0) {
    (**(code **)(param_2 + 0x160))(1,(longlong)plVar3 + 0x14);
    (**(code **)(*plVar3 + 0x150))(0x8d40,*(undefined4 *)((longlong)plVar3 + 0x14));
    glGenTextures(1,plVar3 + 2);
    glBindTexture(0xde1,(int)plVar3[2]);
    glTexParameteri(0xde1,0x2801,0x2601);
    glTexParameteri(0xde1,0x2800,0x2601);
    glTexParameteri(0xde1,0x2802,0x812f);
    glTexParameteri(0xde1,0x2803,0x812f);
    glTexImage2D(0xde1,0,0x1908,(int)plVar3[1],*(undefined4 *)((longlong)plVar3 + 0xc),0,0x1908,
                 0x1401,0);
    (**(code **)(*plVar3 + 0x170))(0x8d40,0x8ce0,0xde1,(int)plVar3[2],0);
    (**(code **)(*plVar3 + 0x150))(0x8d40,0);
  }
  lVar1 = *param_1;
  *param_1 = (longlong)plVar3;
  if (lVar1 != 0) {
    FUN_18059b780();
  }
  lVar1 = *param_1;
  if ((*(int *)(lVar1 + 0x14) == 0) || (bVar2 = true, *(int *)(lVar1 + 0x10) == 0)) {
    bVar2 = false;
  }
  if ((!bVar2) && (*param_1 = 0, lVar1 != 0)) {
    FUN_18059b780();
  }
  return *param_1 != 0;
}



############ FUN_ 18163a690 size=315 ############

undefined8 * FUN_18163a690(undefined8 *param_1,undefined8 *param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  bool bVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *local_res10;
  undefined **local_res18;
  undefined8 *local_res20;
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  DAT_1826736c0 = FUN_18163a7e0;
  lVar7 = FUN_181639c10(*param_2);
  if ((lVar7 == 0) || (*(char *)(lVar7 + 0x2f8) == '\0')) {
    bVar6 = false;
  }
  else {
    bVar6 = true;
  }
  if (bVar6) {
    local_res18 = (undefined **)FUN_1811316e0(0x2ce8);
    uVar9 = FUN_180594cf0(local_res18,param_2);
    *param_1 = uVar9;
    return param_1;
  }
  local_res18 = juce::SoftwareImageType::vftable;
  (*(code *)PTR_FUN_182498650)
            (&local_res18,&local_res10,2,*(undefined4 *)((longlong)param_2 + 0x14),
             *(undefined4 *)(param_2 + 3),1,uVar9);
  local_res18 = juce::ImageType::vftable;
  puVar8 = (undefined8 *)FUN_1811316e0(0x48);
  local_res20 = puVar8;
  FUN_181291bd0(puVar8,&local_res10);
  *puVar8 = juce::OpenGLRendering::NonShaderContext::vftable;
  puVar8[4] = *param_2;
  *(undefined4 *)(puVar8 + 5) = *(undefined4 *)(param_2 + 1);
  uVar3 = *(undefined4 *)(param_2 + 2);
  uVar4 = *(undefined4 *)((longlong)param_2 + 0x14);
  uVar5 = *(undefined4 *)(param_2 + 3);
  *(undefined4 *)((longlong)puVar8 + 0x2c) = *(undefined4 *)((longlong)param_2 + 0xc);
  *(undefined4 *)(puVar8 + 6) = uVar3;
  *(undefined4 *)((longlong)puVar8 + 0x34) = uVar4;
  *(undefined4 *)(puVar8 + 7) = uVar5;
  puVar8[8] = local_res10;
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  *param_1 = puVar8;
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  return param_1;
}



############ FUN_ 180595210 size=46 ############

undefined8 * FUN_180595210(undefined8 param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = juce::OpenGLImageType::vftable;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 180595240 size=448 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 * FUN_180595240(longlong *param_1,undefined8 *param_2)

{
  longlong *plVar1;
  undefined4 uVar2;
  longlong lVar3;
  longlong lVar4;
  char cVar5;
  longlong *plVar6;
  longlong *local_res18;
  longlong *local_res20;
  longlong *local_78;
  longlong *local_70;
  undefined1 local_68;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined4 local_48;
  undefined4 local_44;
  undefined8 local_40;
  longlong *local_30;
  
  local_40 = 0xfffffffffffffffe;
  plVar6 = (longlong *)FUN_1811316e0(0x60);
  lVar4 = param_1[3];
  uVar2 = *(undefined4 *)((longlong)param_1 + 0x14);
  lVar3 = param_1[8];
  *(undefined4 *)(plVar6 + 1) = 0;
  *(undefined4 *)(plVar6 + 2) = 2;
  *(undefined4 *)((longlong)plVar6 + 0x14) = uVar2;
  *(int *)(plVar6 + 3) = (int)lVar4;
  plVar6[4] = 0;
  plVar6[5] = 0;
  plVar6[6] = 0;
  plVar6[7] = 0;
  *plVar6 = (longlong)juce::OpenGLFrameBufferImage::vftable;
  plVar6[8] = lVar3;
  plVar6[9] = 0;
  plVar6[10] = 0;
  *(undefined4 *)(plVar6 + 0xb) = 4;
  *(int *)((longlong)plVar6 + 0x5c) = *(int *)((longlong)plVar6 + 0x14) << 2;
  local_res18 = plVar6;
  local_res20 = plVar6;
  cVar5 = FUN_180595150(plVar6);
  if (cVar5 == '\0') {
    *param_2 = 0;
    (**(code **)*plVar6)(plVar6,1);
  }
  else {
    local_res20 = (longlong *)0x0;
    LOCK();
    *(int *)(plVar6 + 1) = (int)plVar6[1] + 1;
    UNLOCK();
    local_30 = plVar6;
    (**(code **)(*plVar6 + 8))(plVar6,&local_78);
    local_70 = local_78;
    local_68 = 0;
    LOCK();
    *(int *)(param_1 + 1) = (int)param_1[1] + 1;
    UNLOCK();
    local_58 = _DAT_1824c4780;
    uStack_50 = _UNK_1824c4788;
    local_48 = DAT_1824c3ea4;
    local_44 = 0;
    local_res18 = param_1;
    cVar5 = (**(code **)(*local_78 + 0x60))();
    if (cVar5 == '\0') {
      (**(code **)(*local_70 + 0xc0))(local_70,&local_res18,&local_58);
    }
    if (local_res18 != (longlong *)0x0) {
      LOCK();
      plVar1 = local_res18 + 1;
      lVar3 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar3 == 1) {
        (**(code **)*local_res18)(local_res18,1);
      }
    }
    *param_2 = plVar6;
    LOCK();
    *(int *)(plVar6 + 1) = (int)plVar6[1] + 1;
    UNLOCK();
    if (local_78 != (longlong *)0x0) {
      (**(code **)*local_78)(local_78,1);
    }
    LOCK();
    plVar1 = plVar6 + 1;
    lVar3 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar3 == 1) {
      (**(code **)*plVar6)(plVar6,1);
    }
  }
  return param_2;
}



############ FUN_ 180595400 size=544 ############

void FUN_180595400(longlong param_1,undefined8 *param_2,undefined4 param_3,undefined4 param_4,
                  int param_5)

{
  int iVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  void *pvVar5;
  
  *(undefined4 *)(param_2 + 1) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)((longlong)param_2 + 0xc) = *(undefined4 *)(param_1 + 0x5c);
  *(undefined4 *)(param_2 + 2) = *(undefined4 *)(param_1 + 0x58);
  if (param_5 == 0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x18);
    iVar1 = *(int *)((longlong)param_2 + 0x14);
    iVar2 = *(int *)(param_2 + 3);
    *puVar4 = juce::OpenGLFrameBufferImage::
              DataReleaser<juce::OpenGLFrameBufferImage::Reader,juce::OpenGLFrameBufferImage::Dummy>
              ::vftable;
    pvVar5 = malloc((longlong)(iVar1 * iVar2) << 2);
    puVar4[1] = pvVar5;
    puVar3 = (undefined8 *)param_2[4];
    param_2[4] = puVar4;
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
    *param_2 = puVar4[1];
    *(uint *)((longlong)param_2 + 0xc) =
         *(int *)(param_2 + 2) * *(int *)((longlong)param_2 + 0x14) + 3U & 0xfffffffc;
    FUN_180595620(param_1 + 0x48,param_2,param_3,param_4);
    return;
  }
  if (param_5 == 1) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x28);
    iVar1 = *(int *)((longlong)param_2 + 0x14);
    iVar2 = *(int *)(param_2 + 3);
    *puVar4 = juce::OpenGLFrameBufferImage::
              DataReleaser<juce::OpenGLFrameBufferImage::Dummy,juce::OpenGLFrameBufferImage::Writer>
              ::vftable;
    pvVar5 = malloc((longlong)(iVar1 * iVar2) << 2);
    puVar4[1] = pvVar5;
    puVar4[2] = param_1 + 0x48;
    *(undefined4 *)(puVar4 + 3) = param_3;
    *(undefined4 *)((longlong)puVar4 + 0x1c) = param_4;
    *(int *)(puVar4 + 4) = iVar1;
    *(int *)((longlong)puVar4 + 0x24) = iVar2;
    puVar3 = (undefined8 *)param_2[4];
    param_2[4] = puVar4;
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
    *param_2 = puVar4[1];
    *(uint *)((longlong)param_2 + 0xc) =
         *(int *)(param_2 + 2) * *(int *)((longlong)param_2 + 0x14) + 3U & 0xfffffffc;
  }
  else {
    if (param_5 == 2) {
      puVar4 = (undefined8 *)FUN_1811316e0(0x28);
      iVar1 = *(int *)((longlong)param_2 + 0x14);
      iVar2 = *(int *)(param_2 + 3);
      *puVar4 = juce::OpenGLFrameBufferImage::
                DataReleaser<juce::OpenGLFrameBufferImage::Reader,juce::OpenGLFrameBufferImage::Writer>
                ::vftable;
      pvVar5 = malloc((longlong)(iVar1 * iVar2) << 2);
      puVar4[1] = pvVar5;
      puVar4[2] = param_1 + 0x48;
      *(undefined4 *)(puVar4 + 3) = param_3;
      *(undefined4 *)((longlong)puVar4 + 0x1c) = param_4;
      *(int *)(puVar4 + 4) = iVar1;
      *(int *)((longlong)puVar4 + 0x24) = iVar2;
      puVar3 = (undefined8 *)param_2[4];
      param_2[4] = puVar4;
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      *param_2 = puVar4[1];
      *(uint *)((longlong)param_2 + 0xc) =
           *(int *)(param_2 + 2) * *(int *)((longlong)param_2 + 0x14) + 3U & 0xfffffffc;
      FUN_180595620(param_1 + 0x48,param_2,param_3,param_4);
      FUN_181291830(param_1);
      return;
    }
    if (param_5 == 0) {
      return;
    }
  }
  FUN_181291830(param_1);
  return;
}



############ FUN_ 1812a60a0 size=463 ############

ulonglong FUN_1812a60a0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  DWORD DVar5;
  ulonglong in_RAX;
  undefined4 extraout_var;
  undefined8 *puVar6;
  ulonglong extraout_RAX;
  ulonglong uVar7;
  undefined8 uVar8;
  
  lVar4 = DAT_1826736d0;
  uVar8 = 0xfffffffffffffffe;
  if (DAT_1826736d0 != 0) {
    in_RAX = (ulonglong)*(uint *)(param_1 + 0x16);
    if (*(uint *)(param_1 + 0x16) == 0) {
      DVar5 = GetCurrentThreadId();
      uVar7 = CONCAT44(extraout_var,DVar5);
      if (((ulonglong)DVar5 == *(ulonglong *)(lVar4 + 0x10)) ||
         (uVar7 = *(ulonglong *)(lVar4 + 0x18), DVar5 == uVar7)) {
LAB_1812a61e8:
        return CONCAT71((int7)(uVar7 >> 8),1);
      }
      puVar6 = (undefined8 *)FUN_1811316e0(0xf0);
      *(undefined4 *)(puVar6 + 1) = 0;
      *puVar6 = juce::MessageManager::Lock::BlockingMessage::vftable;
      InitializeCriticalSection((LPCRITICAL_SECTION)(puVar6 + 2));
      puVar6[8] = param_1;
      *(undefined1 *)(puVar6 + 9) = 0;
      _Mtx_init_in_situ(puVar6 + 10,2,param_3,param_4,uVar8);
      _Cnd_init_in_situ(puVar6 + 0x14);
      *(undefined1 *)(puVar6 + 0x1d) = 0;
      if ((undefined8 *)*param_1 != puVar6) {
        LOCK();
        *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
        UNLOCK();
        puVar3 = (undefined8 *)*param_1;
        *param_1 = (longlong)puVar6;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
      }
      in_RAX = FUN_1812a6720(*param_1);
      if ((char)in_RAX != '\0') {
        while ((int)param_1[0x16] == 0) {
          FUN_181215c90(param_1 + 1,0xffffffff);
        }
        LOCK();
        *(undefined4 *)(param_1 + 0x16) = 0;
        UNLOCK();
        if (*(int *)((longlong)param_1 + 0xb4) != 0) {
          DVar5 = GetCurrentThreadId();
          LOCK();
          uVar7 = *(ulonglong *)(lVar4 + 0x18);
          *(ulonglong *)(lVar4 + 0x18) = (ulonglong)DVar5;
          UNLOCK();
          goto LAB_1812a61e8;
        }
        FUN_181215c10(*param_1 + 0x48);
        lVar4 = *param_1;
        EnterCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0x10));
        LOCK();
        *(undefined4 *)((longlong)param_1 + 0xb4) = 0;
        UNLOCK();
        LOCK();
        *(undefined8 *)(*param_1 + 0x40) = 0;
        UNLOCK();
        LeaveCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0x10));
        in_RAX = extraout_RAX;
      }
      puVar6 = (undefined8 *)*param_1;
      *param_1 = 0;
      if (puVar6 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar6 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        in_RAX = (ulonglong)(iVar2 - 1U);
        if (iVar2 - 1U == 0) {
          uVar7 = (**(code **)*puVar6)(puVar6,1);
          return uVar7 & 0xffffffffffffff00;
        }
      }
    }
    else {
      LOCK();
      *(undefined4 *)(param_1 + 0x16) = 0;
      UNLOCK();
    }
  }
  return in_RAX & 0xffffffffffffff00;
}



############ FUN_ 18059b050 size=402 ############

void FUN_18059b050(longlong *param_1,longlong param_2)

{
  int iVar1;
  int *piVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *local_res8;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  int local_88;
  int iStack_84;
  int iStack_80;
  int iStack_7c;
  int local_78;
  int iStack_74;
  int iStack_70;
  int iStack_6c;
  int local_68;
  int iStack_64;
  int iStack_60;
  int iStack_5c;
  undefined1 local_58 [16];
  undefined1 local_48 [48];
  
  plVar4 = (longlong *)*param_1;
  if (plVar4 != (longlong *)0x0) {
    FUN_18049eab0(param_1 + 1,local_48);
    (**(code **)(*plVar4 + 0x58))(plVar4,&local_78);
    iVar1 = local_78;
    local_94 = *(float *)(param_2 + 0x18);
    local_98 = *(float *)(param_2 + 0x10);
    local_8c = *(float *)(param_2 + 0x1c) - local_94;
    local_90 = *(float *)(param_2 + 0x14) - local_98;
    local_88 = local_78;
    iStack_84 = iStack_74;
    iStack_80 = iStack_70;
    iStack_7c = iStack_6c;
    FUN_1804ab160(&local_98,&local_68,local_48);
    piVar2 = (int *)FUN_1804ab070(&local_68,local_58);
    if (iVar1 < *piVar2 + piVar2[2]) {
      if ((((iStack_84 < piVar2[1] + piVar2[3]) && (*piVar2 < iVar1 + iStack_80)) &&
          (piVar2[1] < iStack_84 + iStack_7c)) &&
         (((0 < piVar2[2] && (0 < piVar2[3])) && ((0 < iStack_80 && (0 < iStack_7c)))))) {
        puVar3 = (undefined8 *)FUN_1811316e0(0x38);
        local_68 = local_78;
        iStack_64 = iStack_74;
        iStack_60 = iStack_70;
        iStack_5c = iStack_6c;
        *(undefined4 *)(puVar3 + 1) = 0;
        *puVar3 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                  EdgeTableRegion::vftable;
        FUN_18129fdb0(puVar3 + 2,&local_68,param_2,local_48);
        *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
        local_res8 = puVar3;
        FUN_1805998c0(param_1,&local_res8);
      }
    }
  }
  return;
}



############ FUN_ 18059b8b0 size=516 ############

void FUN_18059b8b0(undefined8 *param_1,float *param_2)

{
  uint uVar1;
  uint uVar2;
  float fVar3;
  byte bVar4;
  int *piVar5;
  undefined8 *puVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined8 local_res8;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  undefined1 local_58 [80];
  
  if ((param_1[7] == 0) && (param_1[8] == 0)) {
    uVar1 = *(uint *)(param_1 + 6);
    local_68 = *param_2;
    fStack_64 = param_2[1];
    fStack_60 = param_2[2];
    fStack_5c = param_2[3];
    uVar2 = uVar1 >> 0x18;
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar1);
    if (uVar2 < 0xff) {
      if (uVar2 == 0) {
        bVar4 = (byte)(uVar1 >> 0x18);
        local_res8._0_3_ = CONCAT12(bVar4,(ushort)bVar4);
      }
      else {
        local_res8._0_3_ =
             CONCAT12((char)((uVar1 >> 0x10 & 0xff) * uVar2 + 0x7f >> 8),
                      CONCAT11((char)((uVar1 >> 8 & 0xff) * uVar2 + 0x7f >> 8),
                               (char)((uVar1 & 0xff) * uVar2 + 0x7f >> 8)));
      }
      uVar1 = (uint)local_res8;
    }
    (**(code **)(*(longlong *)*param_1 + 0x60))((longlong *)*param_1,param_1,&local_68,uVar1);
    return;
  }
  fVar9 = *param_2;
  fVar3 = param_2[1];
  fVar11 = param_2[2];
  fStack_5c = param_2[3];
  local_68 = fVar9;
  fStack_64 = fVar3;
  fStack_60 = fVar11;
  piVar5 = (int *)(**(code **)(*(longlong *)*param_1 + 0x58))((longlong *)*param_1,local_58);
  fVar7 = (float)*piVar5;
  fVar11 = fVar9 + fVar11;
  if (fVar9 <= fVar7) {
    fVar9 = fVar7;
  }
  fVar8 = (float)piVar5[1];
  if (fVar7 + (float)piVar5[2] <= fVar11) {
    fVar11 = fVar7 + (float)piVar5[2];
  }
  fVar7 = fVar3;
  if (fVar3 <= fVar8) {
    fVar7 = fVar8;
  }
  fVar11 = fVar11 - fVar9;
  if (0.0 <= fVar11) {
    fVar10 = fVar3 + fStack_5c;
    if (fVar8 + (float)piVar5[3] <= fVar3 + fStack_5c) {
      fVar10 = fVar8 + (float)piVar5[3];
    }
    fVar10 = fVar10 - fVar7;
    if (((0.0 <= fVar10) && (0.0 < fVar11)) && (0.0 < fVar10)) {
      puVar6 = (undefined8 *)FUN_1811316e0(0x38);
      *(undefined4 *)(puVar6 + 1) = 0;
      *puVar6 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                EdgeTableRegion::vftable;
      local_68 = fVar9;
      fStack_64 = fVar7;
      fStack_60 = fVar11;
      fStack_5c = fVar10;
      FUN_18129f510(puVar6 + 2,&local_68);
      *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
      local_res8 = puVar6;
      FUN_1805998c0(param_1,&local_res8);
    }
  }
  return;
}



############ FUN_ 18059b5b0 size=461 ############

void FUN_18059b5b0(undefined8 *param_1,undefined1 (*param_2) [16],undefined1 param_3)

{
  undefined8 *puVar1;
  undefined1 auVar2 [16];
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  byte bVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  undefined8 local_res8;
  undefined1 local_48 [16];
  undefined1 local_38 [32];
  
  if ((param_1[7] == 0) && (param_1[8] == 0)) {
    uVar3 = *(uint *)(param_1 + 6);
    local_48 = *param_2;
    uVar7 = uVar3 >> 0x18;
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar3);
    if (uVar7 < 0xff) {
      if (uVar7 == 0) {
        bVar8 = (byte)(uVar3 >> 0x18);
        local_res8._0_3_ = CONCAT12(bVar8,(ushort)bVar8);
      }
      else {
        local_res8._0_3_ =
             CONCAT12((char)((uVar3 >> 0x10 & 0xff) * uVar7 + 0x7f >> 8),
                      CONCAT11((char)((uVar3 >> 8 & 0xff) * uVar7 + 0x7f >> 8),
                               (char)((uVar3 & 0xff) * uVar7 + 0x7f >> 8)));
      }
      uVar3 = (uint)local_res8;
    }
    (**(code **)(*(longlong *)*param_1 + 0x68))((longlong *)*param_1,param_1,local_48,uVar3,param_3)
    ;
    return;
  }
  auVar2 = *param_2;
  local_48 = auVar2;
  piVar9 = (int *)(**(code **)(*(longlong *)*param_1 + 0x58))((longlong *)*param_1,local_38);
  iVar10 = auVar2._0_4_;
  iVar11 = *piVar9;
  iVar4 = piVar9[1];
  iVar5 = iVar11;
  if (iVar11 < iVar10) {
    iVar5 = iVar10;
  }
  iVar12 = auVar2._4_4_;
  iVar6 = iVar4;
  if (iVar4 < iVar12) {
    iVar6 = iVar12;
  }
  iVar10 = iVar10 + auVar2._8_4_;
  iVar13 = piVar9[2] + iVar11;
  if (iVar10 < piVar9[2] + iVar11) {
    iVar13 = iVar10;
  }
  iVar13 = iVar13 - iVar5;
  if (-1 < iVar13) {
    iVar11 = piVar9[3] + iVar4;
    if (local_48._12_4_ + iVar12 < piVar9[3] + iVar4) {
      iVar11 = local_48._12_4_ + iVar12;
    }
    local_48._12_4_ = iVar11 - iVar6;
    if (-1 < (int)local_48._12_4_) {
      local_48._4_4_ = iVar6;
      local_48._0_4_ = iVar5;
      local_48._8_4_ = iVar13;
      if ((0 < iVar13) && (0 < (int)local_48._12_4_)) {
        local_res8 = (undefined8 *)FUN_1811316e0();
        *(undefined4 *)(local_res8 + 1) = 0;
        *local_res8 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                      RectangleListRegion::vftable;
        local_res8[2] = 0;
        local_res8[3] = 0;
        if (0 < local_48._12_4_) {
          FUN_18049ba20(local_res8 + 2,8);
          iVar11 = *(int *)((longlong)local_res8 + 0x1c);
          *(int *)((longlong)local_res8 + 0x1c) = iVar11 + 1;
          puVar1 = (undefined8 *)(local_res8[2] + (longlong)iVar11 * 0x10);
          *puVar1 = local_48._0_8_;
          puVar1[1] = local_48._8_8_;
        }
        *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
        FUN_1805998c0(param_1,&local_res8);
      }
    }
  }
  return;
}



############ FUN_ 18059a2e0 size=115 ############

void FUN_18059a2e0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x90);
  uVar1 = FUN_180594650(uVar1,*param_1,param_3,param_4,uVar3);
  iVar2 = *(int *)((longlong)param_1 + 0x14) + 1;
  if (*(int *)(param_1 + 2) < iVar2) {
    FUN_18047cb30(param_1 + 1,*(int *)((longlong)param_1 + 0x14) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)((longlong)param_1 + 0x14);
  *(int *)((longlong)param_1 + 0x14) = iVar2 + 1;
  *(undefined8 *)(param_1[1] + (longlong)iVar2 * 8) = uVar1;
  return;
}



############ FUN_ 180599860 size=96 ############

undefined8 * FUN_180599860(longlong param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x38);
  puVar1[1] = 0;
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::EdgeTableRegion
            ::vftable;
  FUN_18129f450(puVar1 + 2,param_1 + 0x10);
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 18059a9b0 size=174 ############

undefined8
FUN_18059a9b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined4 param_5)

{
  longlong *plVar1;
  longlong *plVar2;
  
  plVar2 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar2 + 1) = 0;
  *plVar2 = (longlong)
            juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::EdgeTableRegion
            ::vftable;
  FUN_18129fae0(plVar2 + 2,param_1 + 0x10);
  *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
  (**(code **)(*plVar2 + 0x40))(plVar2,param_2,param_3,param_4,param_5);
  plVar1 = plVar2 + 1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  if ((int)*plVar1 == 0) {
    (**(code **)*plVar2)(plVar2,1);
  }
  return param_2;
}



############ FUN_ 18059aa60 size=159 ############

undefined8 FUN_18059aa60(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  plVar2 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar2 + 1) = 0;
  *plVar2 = (longlong)
            juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::EdgeTableRegion
            ::vftable;
  FUN_18129fae0(plVar2 + 2,param_1 + 0x10);
  *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
  (**(code **)(*plVar2 + 0x38))(plVar2,param_2,param_3,*plVar2,uVar3);
  plVar1 = plVar2 + 1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  if ((int)*plVar1 == 0) {
    (**(code **)*plVar2)(plVar2,1);
  }
  return param_2;
}



############ FUN_ 18059ab00 size=163 ############

undefined8 FUN_18059ab00(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  plVar2 = (longlong *)FUN_1811316e0(0x38);
  *(undefined4 *)(plVar2 + 1) = 0;
  *plVar2 = (longlong)
            juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::EdgeTableRegion
            ::vftable;
  FUN_18129fae0(plVar2 + 2,param_1 + 0x10);
  *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
  (**(code **)(*plVar2 + 0x30))(plVar2,param_2,param_3,param_4,uVar3);
  plVar1 = plVar2 + 1;
  *(int *)plVar1 = (int)*plVar1 + -1;
  if ((int)*plVar1 == 0) {
    (**(code **)*plVar2)(plVar2,1);
  }
  return param_2;
}



############ FUN_ 18059abb0 size=96 ############

undefined8 * FUN_18059abb0(longlong param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  puVar1[1] = 0;
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
            RectangleListRegion::vftable;
  FUN_1804aaeb0(puVar1 + 2,param_1 + 0x10);
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  *param_2 = puVar1;
  return param_2;
}



############ FUN_ 18059b1f0 size=587 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18059b1f0(longlong *param_1,longlong *param_2)

{
  int iVar1;
  int iVar2;
  void *_Src;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  float *pfVar6;
  undefined8 uVar7;
  float *pfVar8;
  int iVar9;
  undefined8 *local_res8;
  float *local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 uStack_60;
  ulonglong local_58;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  ulonglong local_40;
  
  if (*param_1 != 0) {
    iVar1 = *(int *)((longlong)param_2 + 0xc);
    if (iVar1 == 1) {
      puVar5 = (undefined8 *)*param_2;
      local_78 = (float *)*puVar5;
      uStack_70 = puVar5[1];
      FUN_18059b440(*(undefined4 *)puVar5,&local_78);
    }
    else {
      if ((((char)param_1[5] == '\0') || ((int)param_1[4] != 0)) ||
         (*(int *)((longlong)param_1 + 0x24) != 0)) {
        if (*(char *)((longlong)param_1 + 0x29) == '\0') {
          local_78 = (float *)0x0;
          uStack_70 = 0;
          _Src = (void *)*param_2;
          iVar9 = 0;
          if (0 < iVar1) {
            FUN_18049ba20(&local_78,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
            iVar9 = uStack_70._4_4_;
          }
          pfVar8 = local_78;
          memcpy(local_78 + (longlong)iVar9 * 4,_Src,(longlong)iVar1 << 4);
          uStack_70 = CONCAT44(iVar9 + iVar1,(undefined4)uStack_70);
          if ((char)param_1[5] == '\0') {
            lVar4 = param_1[1];
            lVar3 = param_1[2];
            local_58 = param_1[3];
            local_68._0_4_ = (undefined4)lVar4;
            local_68._4_4_ = (undefined4)((ulonglong)lVar4 >> 0x20);
            uStack_60._0_4_ = (undefined4)lVar3;
            uStack_60._4_4_ = (undefined4)((ulonglong)lVar3 >> 0x20);
            local_50 = (undefined4)local_68;
            uStack_4c = local_68._4_4_;
            uStack_48 = (undefined4)uStack_60;
            uStack_44 = uStack_60._4_4_;
            local_68 = lVar4;
            uStack_60 = lVar3;
            local_40 = local_58;
            FUN_1804afd00(&local_78,&local_50);
          }
          else {
            iVar2 = *(int *)((longlong)param_1 + 0x24);
            lVar4 = param_1[4];
            pfVar6 = pfVar8 + (longlong)(iVar9 + iVar1) * 4;
            for (; pfVar8 != pfVar6; pfVar8 = pfVar8 + 4) {
              *pfVar8 = (float)(int)lVar4 + *pfVar8;
              pfVar8[1] = (float)iVar2 + pfVar8[1];
            }
          }
          puVar5 = (undefined8 *)FUN_1811316e0(0x38);
          *(undefined4 *)(puVar5 + 1) = 0;
          *puVar5 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                    EdgeTableRegion::vftable;
          FUN_18129f7b0(puVar5 + 2,&local_78);
          *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
          local_res8 = puVar5;
          FUN_1805998c0(param_1,&local_res8);
          pfVar8 = local_78;
        }
        else {
          local_68 = _DAT_1824c4780;
          uStack_60 = _UNK_1824c4788;
          local_58 = (ulonglong)DAT_1824c3ea4;
          uVar7 = FUN_1804a9f10(param_2,&local_50);
          FUN_18059b050(param_1,uVar7,&local_68);
          uStack_44 = 0;
          pfVar8 = (float *)CONCAT44(uStack_4c,local_50);
        }
                    /* WARNING: Subroutine does not return */
        free(pfVar8);
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x38);
      *(undefined4 *)(puVar5 + 1) = 0;
      *puVar5 = juce::RenderingHelpers::ClipRegions<juce::OpenGLRendering::SavedState>::
                EdgeTableRegion::vftable;
      FUN_18129f7b0(puVar5 + 2,param_2);
      *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
      local_res8 = puVar5;
      FUN_1805998c0(param_1,&local_res8);
    }
  }
  return;
}



############ FUN_ 18059f620 size=177 ############

undefined8 *
FUN_18059f620(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  uVar2 = FUN_1811316e0(0xc30);
  FUN_18049c4e0(&local_res8,param_2);
  uVar2 = FUN_1815345c0(uVar2,&local_res8,param_3,param_4);
  *param_1 = uVar2;
  _Memory = (uint *)(local_res8 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1805e1ad0 size=556 ############

void FUN_1805e1ad0(ulonglong *param_1,longlong param_2,longlong param_3)

{
  undefined8 *puVar1;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  
  puVar1 = (undefined8 *)param_1[1];
  puVar7 = (undefined8 *)*param_1;
  uVar3 = (param_3 - param_2) / 0x450;
  uVar5 = ((longlong)puVar1 - (longlong)puVar7) / 0x450;
  uVar4 = (longlong)(param_1[2] - (longlong)puVar7) / 0x450;
  if (uVar4 < uVar3) {
    if (0x3b5cc0ed7303b5 < uVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar5 = uVar3;
    if ((uVar4 <= 0x3b5cc0ed7303b5 - (uVar4 >> 1)) && (uVar5 = (uVar4 >> 1) + uVar4, uVar5 < uVar3))
    {
      uVar5 = uVar3;
    }
    if (puVar7 != (undefined8 *)0x0) {
      for (; puVar7 != puVar1; puVar7 = puVar7 + 0x8a) {
        (**(code **)*puVar7)(puVar7,0);
      }
      FUN_1805e86e0(param_1,*param_1,uVar4);
    }
    uVar3 = 0;
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar5 != 0) {
      if (0x3b5cc0ed7303b5 < uVar5) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      uVar8 = uVar5 * 0x450;
      uVar4 = 0xffffffffffffffff;
      if ((uVar5 < 0x3b5cc0ed7303b6) && (uVar4 = uVar8, uVar8 < 0x1000)) {
        if (uVar8 != 0) {
          uVar3 = FUN_1811316e0(uVar8);
        }
      }
      else {
        uVar3 = uVar4 + 0x27;
        if (uVar4 + 0x27 <= uVar4) {
          uVar3 = 0xffffffffffffffff;
        }
        lVar2 = FUN_1811316e0(uVar3);
        if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
        uVar3 = lVar2 + 0x27U & 0xffffffffffffffe0;
        *(longlong *)(uVar3 - 8) = lVar2;
      }
      *param_1 = uVar3;
      param_1[1] = uVar3;
      param_1[2] = *param_1 + uVar8;
    }
    uVar3 = FUN_1805e2000(param_1,param_2,param_3,*param_1);
    param_1[1] = uVar3;
  }
  else if (uVar5 < uVar3) {
    lVar2 = uVar5 * 0x450 + param_2;
    FUN_1805e1d00(param_2,lVar2,puVar7);
    uVar3 = FUN_1805e2000(param_1,lVar2,param_3,param_1[1]);
    param_1[1] = uVar3;
  }
  else {
    FUN_1805e1d00(param_2,param_3,puVar7);
    puVar1 = (undefined8 *)param_1[1];
    for (puVar6 = puVar7 + uVar3 * 0x8a; puVar6 != puVar1; puVar6 = puVar6 + 0x8a) {
      (**(code **)*puVar6)(puVar6,0);
    }
    param_1[1] = (ulonglong)(puVar7 + uVar3 * 0x8a);
  }
  return;
}



############ FUN_ 1805d6980 size=116 ############

void FUN_1805d6980(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x18;
  if (param_2 < 0xaaaaaaaaaaaaaab) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805e4e50 size=179 ############

ulonglong FUN_1805e4e50(ulonglong *param_1,ulonglong param_2)

{
  ulonglong in_RAX;
  longlong lVar1;
  ulonglong uVar2;
  
  uVar2 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (param_2 == 0) {
    return in_RAX & 0xffffffffffffff00;
  }
  if (param_2 < 0xaaaaaaaaaaaaaab) {
    param_2 = param_2 * 0x18;
    if (param_2 < 0x1000) {
      if (param_2 != 0) {
        uVar2 = FUN_1811316e0(param_2);
      }
    }
    else {
      uVar2 = param_2 + 0x27;
      if (uVar2 <= param_2) {
        uVar2 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar2);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
    }
    *param_1 = uVar2;
    param_1[1] = uVar2;
    param_1[2] = param_2 + *param_1;
    return CONCAT71((int7)(*param_1 >> 8),1);
  }
                    /* WARNING: Subroutine does not return */
  FUN_1805a69c0();
}



############ FUN_ 1805a7490 size=227 ############

longlong FUN_1805a7490(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x68);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[10] = &DAT_181baff38;
    puVar1[0xc] = boost::exception_detail::clone_base::vftable;
    FUN_1805a4470(puVar1,param_1 + -0x60,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::io::bad_format_string>_>
              ::vftable;
    puVar1[5] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::io::bad_format_string>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[10] + 4) + 0x50 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::io::bad_format_string>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[10] + 4) + 0x4c + (longlong)puVar1) =
         *(int *)(puVar1[10] + 4) + -0x10;
    if (param_1 + -0x60 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 5,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[10] + 4) + 0x50;
}



############ FUN_ 1805a7580 size=234 ############

longlong FUN_1805a7580(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x88);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[0xe] = &DAT_181baffb0;
    puVar1[0x10] = boost::exception_detail::clone_base::vftable;
    FUN_1805a4530(puVar1,param_1 + -0x80,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::lock_error>_>::vftable;
    puVar1[9] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::lock_error>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[0xe] + 4) + 0x70 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::lock_error>_>::vftable;
    *(int *)((longlong)*(int *)(puVar1[0xe] + 4) + 0x6c + (longlong)puVar1) =
         *(int *)(puVar1[0xe] + 4) + -0x10;
    if (param_1 + -0x80 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 9,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[0xe] + 4) + 0x70;
}



############ FUN_ 1805a7680 size=234 ############

longlong FUN_1805a7680(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x88);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[0xe] = &DAT_181bafec0;
    puVar1[0x10] = boost::exception_detail::clone_base::vftable;
    FUN_1805a45d0(puVar1,param_1 + -0x80,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::thread_resource_error>_>
              ::vftable;
    puVar1[9] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::thread_resource_error>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[0xe] + 4) + 0x70 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::thread_resource_error>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[0xe] + 4) + 0x6c + (longlong)puVar1) =
         *(int *)(puVar1[0xe] + 4) + -0x10;
    if (param_1 + -0x80 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 9,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[0xe] + 4) + 0x70;
}



############ FUN_ 1805a7780 size=227 ############

longlong FUN_1805a7780(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x68);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[10] = &DAT_181bb0060;
    puVar1[0xc] = boost::exception_detail::clone_base::vftable;
    FUN_1805a4670(puVar1,param_1 + -0x60,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::io::too_few_args>_>::
              vftable;
    puVar1[5] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::io::too_few_args>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[10] + 4) + 0x50 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::io::too_few_args>_>::vftable
    ;
    *(int *)((longlong)*(int *)(puVar1[10] + 4) + 0x4c + (longlong)puVar1) =
         *(int *)(puVar1[10] + 4) + -0x10;
    if (param_1 + -0x60 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 5,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[10] + 4) + 0x50;
}



############ FUN_ 1805a7870 size=227 ############

longlong FUN_1805a7870(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x68);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[10] = &DAT_181bb00f0;
    puVar1[0xc] = boost::exception_detail::clone_base::vftable;
    FUN_1805a4730(puVar1,param_1 + -0x60,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::io::too_many_args>_>::
              vftable;
    puVar1[5] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::io::too_many_args>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[10] + 4) + 0x50 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::io::too_many_args>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[10] + 4) + 0x4c + (longlong)puVar1) =
         *(int *)(puVar1[10] + 4) + -0x10;
    if (param_1 + -0x60 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 5,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[10] + 4) + 0x50;
}



############ FUN_ 1805a7960 size=216 ############

longlong FUN_1805a7960(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bae6c8;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_1805a0690(puVar1,param_1 + -0x50);
    *puVar1 = boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
    puVar1[5] = boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::clone_impl<boost::exception_detail::bad_alloc_>::vftable;
    iVar2 = *(int *)(puVar1[8] + 4) + -0x10;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) = iVar2;
    FUN_1805a7b20(puVar1,param_1 + -0x50,iVar2,param_4,uVar3);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1805a7a40 size=216 ############

longlong FUN_1805a7a40(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bae828;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_1805a07a0(puVar1,param_1 + -0x50);
    *puVar1 = boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::vftable;
    puVar1[5] = boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::clone_impl<boost::exception_detail::bad_exception_>::vftable;
    iVar2 = *(int *)(puVar1[8] + 4) + -0x10;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) = iVar2;
    FUN_1805a7b20(puVar1,param_1 + -0x50,iVar2,param_4,uVar3);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1805a9740 size=603 ############

ulonglong FUN_1805a9740(basic_streambuf<char,std::char_traits<char>_> *param_1,uint param_2)

{
  basic_streambuf<char,std::char_traits<char>_> bVar1;
  void *_Src;
  longlong *plVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  void *_Dst;
  int iVar10;
  
  if (param_2 == 0xffffffff) {
    return 0;
  }
  uVar9 = **(ulonglong **)(param_1 + 0x40);
  if ((uVar9 != 0) && (uVar9 < (longlong)**(int **)(param_1 + 0x58) + uVar9)) {
    std::basic_streambuf<char,std::char_traits<char>_>::sputc(param_1,(char)param_2);
    return (ulonglong)param_2;
  }
  if (((byte)param_1[0x74] & 2) == 0) {
    return 0xffffffffffffffff;
  }
  if (**(longlong **)(param_1 + 0x40) == 0) {
    uVar9 = 0;
  }
  else {
    uVar9 = ((longlong)**(int **)(param_1 + 0x58) - **(longlong **)(param_1 + 0x18)) +
            **(longlong **)(param_1 + 0x40);
  }
  uVar6 = uVar9 >> 1;
  if (uVar6 < 0x100) {
    uVar6 = 0x100;
  }
  _Src = (void *)**(undefined8 **)(param_1 + 0x18);
  for (; uVar8 = uVar9, _Dst = (void *)0x0, uVar6 != 0; uVar6 = uVar6 >> 1) {
    if (uVar9 <= -uVar6 - 1) {
      if (uVar6 != 0) {
        uVar8 = uVar6 + uVar9;
        if (uVar8 < 0x1000) {
          _Dst = (void *)0x0;
          if (uVar8 != 0) {
            _Dst = (void *)FUN_1811316e0(uVar8);
          }
        }
        else {
          uVar6 = uVar8 + 0x27;
          if (uVar6 <= uVar8) {
            uVar6 = 0xffffffffffffffff;
          }
          lVar7 = FUN_1811316e0(uVar6);
          if (lVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
          _Dst = (void *)(lVar7 + 0x27U & 0xffffffffffffffe0);
          *(longlong *)((longlong)_Dst - 8) = lVar7;
        }
      }
      break;
    }
  }
  if (uVar9 != 0) {
    memcpy(_Dst,_Src,uVar9);
  }
  if (param_1[0x70] != (basic_streambuf<char,std::char_traits<char>_>)0x0) {
    FUN_1805a7bf0(param_1 + 0x78,_Src,uVar9);
  }
  param_1[0x70] = (basic_streambuf<char,std::char_traits<char>_>)0x1;
  if (uVar9 == 0) {
    *(void **)(param_1 + 0x68) = _Dst;
    **(undefined8 **)(param_1 + 0x20) = _Dst;
    **(undefined8 **)(param_1 + 0x40) = _Dst;
    **(int **)(param_1 + 0x58) = (int)uVar8;
    bVar1 = param_1[0x74];
    **(undefined8 **)(param_1 + 0x18) = _Dst;
    puVar5 = *(undefined8 **)(param_1 + 0x38);
    if (((byte)bVar1 & 1) != 0) {
      *puVar5 = _Dst;
      **(undefined4 **)(param_1 + 0x50) = 1;
      goto LAB_1805a9970;
    }
  }
  else {
    plVar2 = *(longlong **)(param_1 + 0x20);
    *(longlong *)(param_1 + 0x68) =
         (longlong)_Dst + (*(longlong *)(param_1 + 0x68) - (longlong)_Src);
    lVar7 = (*plVar2 - (longlong)_Src) + (longlong)_Dst;
    iVar10 = **(int **)(param_1 + 0x40) - (int)*plVar2;
    uVar3 = **(undefined8 **)(param_1 + 0x38);
    uVar4 = **(undefined8 **)(param_1 + 0x18);
    *plVar2 = lVar7;
    **(longlong **)(param_1 + 0x40) = lVar7;
    **(int **)(param_1 + 0x58) = ((int)_Dst - (int)lVar7) + (int)uVar8;
    **(int **)(param_1 + 0x58) = **(int **)(param_1 + 0x58) - iVar10;
    **(longlong **)(param_1 + 0x40) = **(longlong **)(param_1 + 0x40) + (longlong)iVar10;
    if (((byte)param_1[0x74] & 1) != 0) {
      lVar7 = (longlong)((int)uVar3 - (int)uVar4) + (longlong)_Dst;
      uVar3 = **(undefined8 **)(param_1 + 0x40);
      **(undefined8 **)(param_1 + 0x18) = _Dst;
      **(longlong **)(param_1 + 0x38) = lVar7;
      **(int **)(param_1 + 0x50) = ((int)uVar3 - (int)lVar7) + 1;
      goto LAB_1805a9970;
    }
    **(undefined8 **)(param_1 + 0x18) = _Dst;
    puVar5 = *(undefined8 **)(param_1 + 0x38);
  }
  *puVar5 = 0;
  **(int **)(param_1 + 0x50) = (int)_Dst;
LAB_1805a9970:
  std::basic_streambuf<char,std::char_traits<char>_>::sputc(param_1,(char)param_2);
  return (ulonglong)param_2;
}



############ FUN_ 1805bbde0 size=63 ############

void FUN_1805bbde0(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 1805bcb10 size=115 ############

void FUN_1805bcb10(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 << 6;
  if (param_2 < 0x400000000000000) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1805bbda0 size=55 ############

void FUN_1805bbda0(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x20);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 1805bce80 size=227 ############

longlong FUN_1805bce80(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bb32b8;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_1805b4310(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_month>_>
              ::vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_month>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_month>_>
         ::vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1805bcf70 size=227 ############

longlong FUN_1805bcf70(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bb3330;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_1805b43c0(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_month>_>
              ::vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_month>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_month>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1805bd060 size=227 ############

longlong FUN_1805bd060(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bb33a8;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_1805b4470(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_year>_>
              ::vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_year>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_year>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1805bd150 size=227 ############

longlong FUN_1805bd150(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bb3240;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_1805b4520(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<std::runtime_error>_>::vftable
    ;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<std::runtime_error>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<std::runtime_error>_>::vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1805bd240 size=234 ############

longlong FUN_1805bd240(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x88);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[0xe] = &DAT_181bb0238;
    puVar1[0x10] = boost::exception_detail::clone_base::vftable;
    FUN_1805aebe0(puVar1,param_1 + -0x80,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error>_>
              ::vftable;
    puVar1[9] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[0xe] + 4) + 0x70 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[0xe] + 4) + 0x6c + (longlong)puVar1) =
         *(int *)(puVar1[0xe] + 4) + -0x10;
    if (param_1 + -0x80 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 9,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[0xe] + 4) + 0x70;
}



############ FUN_ 180672320 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180672320(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18079fea0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180674530 size=447 ############

void FUN_180674530(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b7af0(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1805c52d0 size=9372 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805c52d0(uint *param_1,undefined8 *param_2)

{
  uint uVar1;
  undefined **ppuVar2;
  bool bVar3;
  char cVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  int iVar7;
  undefined1 *puVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  tm *ptVar11;
  undefined1 *puVar12;
  ulonglong uVar13;
  int *piVar14;
  int *piVar15;
  undefined8 uVar16;
  void *pvVar17;
  void *pvVar18;
  longlong lVar19;
  ulonglong uVar20;
  undefined ***pppuVar21;
  undefined8 *puVar22;
  int *piVar23;
  uint *puVar24;
  ulonglong uVar25;
  void *pvVar26;
  longlong lVar27;
  int *piVar28;
  size_t sVar29;
  undefined1 *_Size;
  ulonglong uVar30;
  undefined1 *puVar31;
  undefined ***pppuVar32;
  bool bVar33;
  undefined1 *_Src;
  undefined1 auStack_10f8 [32];
  longlong *local_10d8;
  ulonglong local_10d0;
  longlong *local_10c8;
  char *local_10c0;
  undefined8 local_10b8;
  undefined8 local_10b0;
  char local_10a8;
  char local_10a7;
  uint *local_10a0;
  undefined8 *local_1098;
  undefined8 *local_1090;
  char *local_1088;
  longlong local_1080;
  uint *local_1078;
  uint local_1070;
  ulonglong local_1068;
  longlong local_1060;
  longlong lStack_1058;
  undefined8 local_1050;
  undefined8 local_1048 [2];
  undefined **local_1038;
  undefined2 local_1030;
  void *local_1028;
  void *pvStack_1020;
  longlong local_1018;
  void *pvStack_1010;
  void *local_1008;
  longlong lStack_1000;
  uint local_ff8;
  undefined2 local_ff4;
  undefined ***local_fe8;
  undefined **local_fd8;
  undefined1 local_fd0;
  uint local_fcc;
  uint uStack_fc8;
  uint local_fc4;
  void *local_fc0;
  longlong local_fb8;
  undefined8 uStack_fb0;
  void *local_fa8;
  void *pvStack_fa0;
  longlong local_f98;
  undefined4 local_f90;
  undefined2 local_f8c;
  longlong local_f88;
  longlong lStack_f80;
  longlong local_f78;
  ulonglong local_f70;
  ulonglong local_f68;
  ulonglong local_f60;
  longlong *local_f58;
  undefined8 local_f50 [2];
  __time64_t local_f40;
  undefined1 local_f38 [8];
  __time64_t local_f30;
  undefined1 local_f28 [8];
  undefined8 *local_f20;
  longlong local_f18;
  undefined8 *local_f10;
  longlong local_f08;
  int *local_f00;
  undefined8 local_ea0;
  longlong local_e98;
  undefined **local_e80 [2];
  undefined8 *local_e70;
  longlong local_e68;
  undefined8 *local_e60;
  longlong local_e58;
  undefined **local_e48;
  int local_e40;
  undefined1 local_e38 [16];
  undefined8 local_e28;
  undefined8 local_e20;
  undefined1 local_e18 [16];
  undefined8 local_e08;
  undefined8 local_e00;
  undefined1 local_df8;
  undefined7 uStack_df7;
  undefined8 local_de8;
  ulonglong local_de0;
  undefined4 local_dd8;
  undefined1 local_dc8;
  undefined7 uStack_dc7;
  longlong local_db8;
  ulonglong local_db0;
  longlong local_da8;
  longlong lStack_da0;
  longlong local_d98;
  longlong local_d88;
  longlong lStack_d80;
  undefined8 local_d78;
  undefined8 local_d68;
  undefined8 local_d60;
  undefined **local_d58;
  undefined4 local_d50;
  undefined2 local_d4c;
  undefined4 local_d48;
  undefined1 local_d44;
  undefined1 local_d40 [16];
  undefined8 local_d30;
  undefined8 local_d28;
  undefined1 local_d20 [16];
  undefined8 local_d10;
  undefined8 local_d08;
  undefined8 local_d00;
  undefined8 local_cf8;
  undefined2 local_cf0;
  undefined1 local_cee;
  undefined **local_ce8;
  undefined8 local_ce0;
  int local_cd8;
  uint uStack_cd4;
  uint uStack_cd0;
  uint local_ccc;
  undefined **local_cc8;
  undefined8 uStack_cc0;
  undefined **local_cb8;
  undefined8 uStack_cb0;
  undefined8 local_ca8;
  undefined4 local_ca0;
  undefined8 local_c98;
  void *local_c90 [2];
  undefined8 local_c80;
  ulonglong local_c78;
  void *local_c70;
  undefined8 local_c68;
  longlong lStack_c60;
  undefined8 local_c58;
  undefined8 local_c50;
  undefined2 local_c48;
  undefined **local_bd8;
  longlong local_bd0 [3];
  undefined2 local_bb8;
  undefined2 uStack_bb6;
  undefined4 uStack_bb4;
  undefined1 local_bb0;
  undefined7 uStack_baf;
  undefined **local_ba0;
  ulonglong local_b98;
  undefined1 local_b90 [16];
  undefined8 local_b80;
  undefined8 local_b78;
  undefined8 local_b70;
  undefined8 local_b68;
  undefined1 local_b60 [16];
  undefined8 local_b50;
  undefined8 local_b48;
  undefined1 local_b40;
  undefined4 local_b3c;
  undefined1 local_b38 [336];
  undefined4 local_9e8;
  undefined1 local_9e4;
  undefined8 local_9e0;
  undefined8 local_9d8;
  undefined8 uStack_9d0;
  undefined8 local_9c8;
  undefined **local_9c0;
  undefined8 local_9b8;
  undefined1 local_9b0 [16];
  undefined8 local_9a0;
  undefined8 local_998;
  undefined1 local_990 [16];
  undefined8 local_980;
  undefined8 local_978;
  undefined4 local_970;
  undefined8 local_96c;
  undefined4 local_964;
  undefined8 local_960;
  undefined8 local_958;
  undefined8 uStack_950;
  undefined8 local_948;
  undefined8 local_940;
  undefined2 local_938;
  undefined8 local_930;
  undefined8 local_928;
  undefined8 uStack_920;
  undefined8 local_918;
  undefined8 uStack_910;
  undefined8 local_908;
  undefined8 local_900;
  undefined8 local_8f8;
  undefined2 local_8f0;
  undefined1 local_8ee;
  undefined1 local_768;
  undefined4 local_764;
  undefined4 local_760;
  undefined4 local_75c;
  undefined1 local_758 [1080];
  undefined4 local_320;
  undefined2 local_31c;
  undefined1 local_31a;
  undefined **local_318;
  undefined **local_310;
  undefined8 local_308;
  undefined8 uStack_300;
  undefined8 local_2f8;
  undefined4 local_2f0;
  undefined4 local_2ec;
  int *local_2e8;
  int *piStack_2e0;
  undefined8 local_2d8;
  undefined4 local_2d0;
  undefined4 local_2c8;
  undefined4 local_2c4;
  undefined1 local_2c0 [12];
  undefined4 local_2b4;
  undefined4 local_40;
  ulonglong local_30;
  
  local_ea0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_10f8;
  local_1070 = 0;
  local_10a0 = param_1;
  local_1098 = param_2;
  local_1090 = param_2;
  local_1078 = param_1;
LAB_1805c5360:
  puVar22 = (undefined8 *)0x0;
  local_10a7 = '\0';
  *param_2 = 0x1b0;
  param_2[1] = 0;
  param_2[2] = 0;
  *(undefined4 *)(param_2 + 3) = 0;
  *(undefined1 *)((longlong)param_2 + 0x1c) = 0;
  *(undefined1 *)((longlong)param_2 + 0x5c) = 0;
  *(undefined1 *)((longlong)param_2 + 0x9c) = 0;
  param_2[0x34] = 0;
  param_2[0x35] = 0;
  local_10a8 = '\0';
  local_e48 = pace::eden::thrift::pub::ErrorInfo::vftable;
  local_e40 = 0;
  local_e28 = 0;
  local_e20 = 0xf;
  local_e38[0] = 0;
  FUN_1805a6cb0(local_e38,&DAT_181baf991,0);
  local_e08 = 0;
  local_e00 = 0xf;
  local_e18[0] = 0;
  FUN_1805a6cb0(local_e18,&DAT_181baf991,0);
  local_de8 = 0;
  local_de0 = 0xf;
  local_df8 = 0;
  FUN_1805a6cb0(&local_df8,&DAT_181baf991,0);
  local_dd8 = 0;
  local_1060 = 0;
  lStack_1058 = 0;
  local_1050 = 0;
  local_318 = pace::eden::thrift::fusion::PaceEdenLicenseData::vftable;
  local_310 = pace::eden::thrift::fusion::FusionLicenseData::vftable;
  local_308 = 0;
  uStack_300 = 0;
  local_2f8 = 0;
  local_2e8 = (int *)0x0;
  piStack_2e0 = (int *)0x0;
  local_2d8 = 0;
  local_2d0 = 0;
  local_2f0 = 1;
  local_2ec = 1;
  FUN_1805b6350(local_2c0);
  local_40 = 0;
  local_2c8 = 1;
  local_2c4 = 1;
  local_e40 = 0;
  local_de8 = 0;
  puVar8 = &local_df8;
  if (0xf < local_de0) {
    puVar8 = (undefined1 *)CONCAT71(uStack_df7,local_df8);
  }
  *puVar8 = 0;
  if (param_1[1] != 0) {
    local_e98 = FUN_1811316e0(0x18);
    if (local_e98 != 0) {
      FUN_1805a48c0(local_e98,&DAT_181baf991);
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_e70 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar22 = puVar9;
    }
    local_1080 = CONCAT44(local_1080._4_4_,0x190f);
    local_1088 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
    uVar10 = FUN_1805a21d0(puVar22[1],&local_1088);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_1080);
  }
  if (*param_1 < 0x50) {
    local_e68 = FUN_1811316e0(0x18);
    if (local_e68 != 0) {
      FUN_1805a48c0(local_e68,&DAT_181baf991);
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_e60 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar22 = puVar9;
    }
    local_1080 = CONCAT44(local_1080._4_4_,0x1914);
    local_1088 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
    uVar10 = FUN_1805a21d0(puVar22[1],&local_1088);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_1080);
  }
  FUN_1805dfee0(*(undefined8 *)(param_1 + 0x12),&local_318);
  piVar23 = piStack_2e0;
  if (local_40._3_1_ == '\0') {
    local_e58 = FUN_1811316e0(0x18);
    if (local_e58 != 0) {
      FUN_1805a48c0(local_e58,
                    "You need to regenerate your PACE Eden License Data to match the current SDK");
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_f20 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar22 = puVar9;
    }
    local_1080 = CONCAT44(local_1080._4_4_,0x191f);
    local_1088 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
    uVar10 = FUN_1805a21d0(puVar22[1],&local_1088);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_1080);
  }
  local_f88 = 0;
  lStack_f80 = 0;
  local_f78 = 0;
  bVar3 = true;
  for (piVar14 = local_2e8; (bVar3 && (piVar14 != piVar23)); piVar14 = piVar14 + 0x114) {
    bVar3 = false;
    while (!bVar3) {
      local_ce8 = pace::eden::thrift::pub::AuthSearch::vftable;
      local_ce0 = 0;
      local_cd8._0_1_ = 1;
      uStack_cd4 = 0;
      uStack_cd0 = 0;
      local_cc8 = _DAT_181bb33f0;
      uStack_cc0 = _UNK_181bb33f8;
      local_cb8 = _DAT_181bb33f0;
      uStack_cb0 = _UNK_181bb33f8;
      local_ca8 = 0xffffffffffffffff;
      local_c98 = 0;
      local_c80 = 0;
      local_c78 = 0xf;
      local_c90[0] = (void *)((ulonglong)local_c90[0] & 0xffffffffffffff00);
      FUN_1805a6cb0(local_c90,&DAT_181baf991,0);
      local_c70 = (void *)0x0;
      local_c68 = 0;
      lStack_c60 = 0;
      local_c58 = 1;
      local_c50 = 0;
      local_c48 = 0;
      local_ce0 = *(ulonglong *)(piVar14 + 4);
      local_cd8 = CONCAT31(local_cd8._1_3_,(char)piVar14[6]);
      local_ca0 = local_2b4;
      if (local_f78 == lStack_f80) {
        FUN_1805b0190(&local_f88,lStack_f80);
      }
      else {
        FUN_1805b53c0(lStack_f80,&local_ce8);
        lStack_f80 = lStack_f80 + 0xa8;
      }
      if (local_c70 != (void *)0x0) {
        pvVar18 = local_c70;
        if ((0xfff < (lStack_c60 - (longlong)local_c70 & 0xfffffffffffffffcU)) &&
           (pvVar18 = *(void **)((longlong)local_c70 + -8),
           0x1f < (ulonglong)((longlong)local_c70 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar18);
      }
      if (0xf < local_c78) {
        pvVar18 = local_c90[0];
        if ((0xfff < local_c78 + 1) &&
           (pvVar18 = *(void **)((longlong)local_c90[0] + -8),
           0x1f < (ulonglong)((longlong)local_c90[0] + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar18);
      }
      bVar3 = true;
    }
  }
  lVar19 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lStack_f80 - local_f88),8) +
           (lStack_f80 - local_f88);
  if (lVar19 >> 7 == lVar19 >> 0x3f) {
    local_f18 = FUN_1811316e0(0x18);
    if (local_f18 != 0) {
      FUN_1805a48c0(local_f18,"The Pace Eden license data has no product information");
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_f10 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar22 = puVar9;
    }
    local_1080 = CONCAT44(local_1080._4_4_,0x1933);
    local_1088 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp";
    uVar10 = FUN_1805a21d0(puVar22[1],&local_1088);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_1080);
  }
  local_d58 = pace::eden::thrift::pub::FindAuthOptions::vftable;
  local_d50 = 1;
  local_d4c = 0;
  local_d44 = 0;
  local_d30 = 0;
  local_d28 = 0xf;
  local_d40[0] = 0;
  FUN_1805a6cb0(local_d40,&DAT_181baf991,0);
  local_d10 = 0;
  local_d08 = 0xf;
  local_d20[0] = 0;
  FUN_1805a6cb0(local_d20,&DAT_181baf991,0);
  param_1 = local_10a0;
  local_cf8 = 0;
  local_cf0 = 0;
  local_cee = 0;
  local_d48 = 0;
  local_d00 = *(undefined8 *)(local_10a0 + 8);
  local_da8 = 0;
  lStack_da0 = 0;
  local_d98 = 0;
  FUN_1805bdb50(local_1048,1);
  param_2 = local_1090;
  if (*(char *)((longlong)param_1 + 0xe) == '\0') {
    local_1088 = (char *)0x1;
    local_10d8 = &local_1060;
    FUN_18069bc20(local_1048[0],&local_f88,&local_d58,&local_da8);
    uVar10 = local_1048[0];
    uVar20 = FUN_1806a4f70(local_1048[0]);
    uVar13 = FUN_1806a4590(uVar10);
    local_1088 = (char *)(uVar13 & uVar20);
    local_f60 = FUN_1806a7ae0(local_1048[0]);
    local_f68 = FUN_1806a35e0(local_1048[0]);
  }
  else {
    local_bd8 = pace::eden::thrift::pub::AuthChain::vftable;
    local_bd0[0] = 0;
    local_bd0[1] = 0;
    local_bd0[2] = 0;
    local_bb8 = 0;
    uStack_bb4 = 0;
    local_ba0 = (undefined **)0x0;
    local_b98 = 0xf;
    local_bb0 = 0;
    FUN_1805a6cb0(&local_bb0,&DAT_181baf991,0);
    local_b80 = 0;
    local_b78 = 0xf;
    local_b90[0] = 0;
    FUN_1805a6cb0(local_b90,&DAT_181baf991,0);
    local_b70 = 0;
    local_b68 = 0xffffffffffffffff;
    local_b50 = 0;
    local_b48 = 0xf;
    local_b60[0] = 0;
    FUN_1805a6cb0(local_b60,&DAT_181baf991,0);
    local_b40 = 0;
    local_b3c = 0;
    FUN_180574b80(local_b38);
    local_9e4 = 0;
    local_9e0 = 0;
    local_9d8 = 0;
    uStack_9d0 = 0;
    local_9c8 = 0;
    local_fe8 = &local_9c0;
    local_9c0 = pace::eden::thrift::pub::SharedLicenseInfo::vftable;
    local_9b8 = 0;
    local_9a0 = 0;
    local_998 = 0xf;
    local_9b0[0] = 0;
    FUN_1805a6cb0(local_9b0,&DAT_181baf991,0);
    local_980 = 0;
    local_978 = 0xf;
    local_990[0] = 0;
    FUN_1805a6cb0(local_990,&DAT_181baf991,0);
    local_970 = 1;
    local_96c = 1;
    local_964 = 0;
    local_960 = 0;
    local_958 = 0;
    uStack_950 = 0;
    local_948 = 0;
    local_940 = 0;
    local_938 = 0;
    local_930 = 0;
    local_928 = 0;
    uStack_920 = 0;
    local_918 = 0;
    uStack_910 = 0;
    local_908 = 0;
    local_900 = 0;
    local_8f8 = 0;
    local_8f0 = 0;
    local_8ee = 0;
    local_9e8 = 0;
    local_bb8 = 1;
    uStack_bb4 = 100;
    _time64(&local_f40);
    ptVar11 = _gmtime64(&local_f40);
    if (ptVar11 == (tm *)0x0) {
      uVar10 = FUN_1805b6c80(&local_d88,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
      FUN_1805b3e60(uVar10);
    }
    FUN_1805bd670(local_f38,ptVar11);
    FUN_180663c70(local_f38,&local_bb0);
    puVar8 = &local_bb0;
    if (0xf < local_b98) {
      puVar8 = (undefined1 *)CONCAT71(uStack_baf,local_bb0);
    }
    FUN_1805a6cb0(local_b90,puVar8,local_ba0);
    local_b70 = 0x20;
    local_b68 = 0x12345678;
    local_b3c = 1;
    local_9e4 = 1;
    local_9e0 = 0;
    FUN_1805b10b0(local_bd0,1,local_bd0);
    *(undefined4 *)(local_bd0[0] + 8) = *(undefined4 *)(local_f88 + 8);
    *(undefined4 *)(local_bd0[0] + 0xc) = *(undefined4 *)(local_f88 + 0xc);
    *(undefined4 *)(local_bd0[0] + 0x10) = 1;
    local_db8 = 0;
    local_db0 = 0xf;
    local_dc8 = 0;
    FUN_1805a6cb0(&local_dc8,"6A2522CA-0D8F-39DF-2D1E-93236A8710D3",0x24);
    lVar27 = local_bd0[0];
    lVar19 = local_db8;
    puVar8 = &local_dc8;
    if (0xf < local_db0) {
      puVar8 = (undefined1 *)CONCAT71(uStack_dc7,local_dc8);
    }
    _Src = &local_dc8;
    if (0xf < local_db0) {
      _Src = (undefined1 *)CONCAT71(uStack_dc7,local_dc8);
    }
    _Size = puVar8 + (local_db8 - (longlong)_Src);
    pvVar18 = *(void **)(local_bd0[0] + 0x18);
    puVar12 = (undefined1 *)(*(longlong *)(local_bd0[0] + 0x20) - (longlong)pvVar18);
    puVar31 = (undefined1 *)(*(longlong *)(local_bd0[0] + 0x28) - (longlong)pvVar18);
    if (puVar31 < _Size) {
      if ((undefined1 *)0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      uVar20 = *(longlong *)(local_bd0[0] + 0x28) - (longlong)pvVar18;
      puVar8 = _Size;
      if ((uVar20 <= 0x7fffffffffffffff - (uVar20 >> 1)) &&
         (puVar8 = (undefined1 *)((uVar20 >> 1) + uVar20), puVar8 < _Size)) {
        puVar8 = _Size;
      }
      if (pvVar18 != (void *)0x0) {
        pvVar17 = pvVar18;
        if (((undefined1 *)0xfff < puVar31) &&
           (pvVar17 = *(void **)((longlong)pvVar18 + -8),
           0x1f < (ulonglong)((longlong)pvVar18 + (-8 - (longlong)pvVar17)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar17);
      }
      FUN_1805bbbc0(local_bd0[0] + 0x18,puVar8);
      pvVar18 = *(void **)(lVar27 + 0x18);
      memmove(pvVar18,_Src,(size_t)_Size);
      *(undefined1 **)(lVar27 + 0x20) = _Size + (longlong)pvVar18;
    }
    else if (puVar12 < _Size) {
      puVar12 = _Src + (longlong)puVar12;
      memmove(pvVar18,_Src,(longlong)puVar12 - (longlong)_Src);
      pvVar18 = *(void **)(lVar27 + 0x20);
      memmove(pvVar18,puVar12,(size_t)(puVar8 + (lVar19 - (longlong)puVar12)));
      *(undefined1 **)(lVar27 + 0x20) = puVar8 + (lVar19 - (longlong)puVar12) + (longlong)pvVar18;
    }
    else {
      memmove(pvVar18,_Src,(size_t)_Size);
      *(undefined1 **)(lVar27 + 0x20) = (undefined1 *)((longlong)pvVar18 + (longlong)_Size);
    }
    *(undefined8 *)(local_bd0[0] + 0x30) = 8;
    *(undefined8 *)(local_bd0[0] + 0x38) = 1;
    *(undefined8 *)(local_bd0[0] + 0x40) = 1;
    *(undefined8 *)(local_bd0[0] + 0x48) = 0x155961;
    *(undefined4 *)(local_bd0[0] + 0x50) = 0x1c;
    *(undefined4 *)(local_bd0[0] + 0x54) = 1;
    *(undefined1 *)(local_bd0[0] + 0x58) = 1;
    *(undefined1 *)(local_bd0[0] + 0x59) = 1;
    if (local_d98 == lStack_da0) {
      FUN_1805aff70(&local_da8,lStack_da0);
    }
    else {
      FUN_1805b4bc0(lStack_da0,&local_bd8);
      lStack_da0 = lStack_da0 + 0x2f0;
    }
    uVar10 = local_1048[0];
    uVar20 = FUN_1806a4f70(local_1048[0]);
    uVar13 = FUN_1806a4590(uVar10);
    local_1088 = (char *)(uVar13 & uVar20);
    local_f60 = FUN_1806a7ae0(local_1048[0]);
    local_f68 = FUN_1806a35e0(local_1048[0]);
    if (0xf < local_db0) {
      pvVar17 = (void *)CONCAT71(uStack_dc7,local_dc8);
      pvVar18 = pvVar17;
      if ((0xfff < local_db0 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar17 + -8),
         0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_db8 = 0;
    local_db0 = 0xf;
    local_dc8 = 0;
    FUN_1805753e0(&local_bd8);
    param_1 = local_10a0;
    param_2 = local_1090;
  }
  uVar20 = 0;
  local_f70 = (lStack_da0 - local_da8) / 0x2f0;
LAB_1805c6269:
  puVar24 = local_10a0;
  piVar23 = (int *)0x0;
  local_1068 = uVar20;
  if (local_f70 <= uVar20) goto LAB_1805c6f95;
  pppuVar32 = (undefined ***)(uVar20 * 0x2f0 + local_da8);
  local_fe8 = pppuVar32;
  if (*(char *)(pppuVar32 + 4) != '\0') {
    piVar14 = local_2e8 + 5;
    while ((piVar15 = piVar14 + -5, piVar28 = piVar23, piVar15 != piStack_2e0 &&
           ((piVar14[-1] != *(int *)(pppuVar32[1] + 1) ||
            ((iVar7 = *(int *)((longlong)pppuVar32[1] + 0xc), piVar28 = piVar15, *piVar14 != iVar7
             && (((char)piVar14[1] == '\0' || (iVar7 != -1))))))))) {
      piVar14 = piVar14 + 0x114;
    }
    param_1 = local_10a0;
    if (piVar28 == (int *)0x0) goto LAB_1805c6eb1;
    local_ce8 = (undefined **)0x60;
    local_ce0 = local_ce0 & 0xffffffff00000000;
    local_cd8 = *(int *)(pppuVar32[1] + 1);
    uStack_cd4 = *(uint *)((longlong)pppuVar32[1] + 0xc) | local_cd8 >> 0x1f;
    uStack_cd0 = local_10a0[6];
    local_ccc = local_10a0[7];
    _time64(&local_f30);
    ptVar11 = _gmtime64(&local_f30);
    if (ptVar11 == (tm *)0x0) {
      uVar10 = FUN_1805b6c80(&local_d88,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
      FUN_1805b3e60(uVar10);
    }
    FUN_1805bd670(local_f28,ptVar11);
    uStack_cc0 = FUN_18065ffa0(local_f28);
    FUN_180605430(&local_ca8,0x10);
    local_c98 = *(undefined8 *)(puVar24 + 0xe);
    local_c90[0] = *(void **)(puVar24 + 10);
    local_cc8 = *(undefined ***)(puVar24 + 8);
    ppuVar2 = pppuVar32[0xd];
    if (((ulonglong)local_1088 & (ulonglong)ppuVar2) == 0) {
      if ((local_f60 & (ulonglong)ppuVar2) != 0) {
        local_ce0 = CONCAT44(2,(undefined4)local_ce0);
LAB_1805c645b:
        local_d88 = 0;
        lStack_d80 = 0;
        local_d78 = 0;
        FUN_1806d12a0(pppuVar32 + 0xf,&local_d88);
        local_1080 = lStack_d80 - local_d88;
        if (local_1080 != 0x10) {
          local_f08 = FUN_1811316e0(0x18);
          piVar14 = piVar23;
          if (local_f08 != 0) {
            piVar14 = (int *)FUN_1805a48c0(local_f08,
                                           "A Guid serial number string should always translate into 16 hex bytes, not %d bytes."
                                          );
          }
          piVar15 = (int *)FUN_1811316e0(0x18);
          local_f00 = piVar15;
          if (piVar15 != (int *)0x0) {
            FUN_1805a48c0(piVar15,"|__FILE__|%s|__LINE__|%d");
            *(undefined ***)piVar15 = pace::PaceLocationInfoFormatter::vftable;
            piVar23 = piVar15;
          }
          FUN_1805b2520(*(undefined8 *)(piVar14 + 2),&local_1080);
          local_1080 = CONCAT44(local_1080._4_4_,0x19f7);
          local_f58 = (longlong *)0x181bb2d00;
          uVar10 = FUN_1805a21d0(*(undefined8 *)(piVar23 + 2),&local_f58);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar10,&local_1080);
        }
        FUN_1805ca0c0(&local_cb8);
        if (local_d88 != 0) {
          FUN_1805a7bf0(&local_d88);
        }
        goto LAB_1805c65a1;
      }
      if ((local_f68 & (ulonglong)ppuVar2) != 0) {
        local_ce0 = CONCAT44(3,(undefined4)local_ce0);
        goto LAB_1805c645b;
      }
      uVar20 = uVar20 + 1;
      param_1 = puVar24;
      goto LAB_1805c6269;
    }
    local_ce0 = CONCAT44(1,(undefined4)local_ce0);
    local_cb8 = pppuVar32[0xe];
    uVar5 = FUN_180603ca0();
    uVar6 = FUN_180603ca0();
    uStack_cb0 = CONCAT44(uVar5,uVar6);
    puVar24 = local_10a0;
LAB_1805c65a1:
    local_d68 = 0x10;
    local_d60 = 0;
    cVar4 = (**(code **)(puVar24 + 0xc))(&local_ce8,&local_d68);
    param_1 = local_10a0;
    if (cVar4 == '\0') goto LAB_1805c6eb1;
    local_fd8 = pace::eden::thrift::fusion::DlcKeyExchangeInput::vftable;
    local_fc0 = (void *)0x0;
    local_fb8 = 0;
    uStack_fb0 = 0;
    local_fa8 = (void *)0x0;
    pvStack_fa0 = (void *)0x0;
    local_f98 = 0;
    local_f90 = 0;
    local_f8c = 0;
    local_1038 = pace::eden::thrift::fusion::DlcKeyExchangeOutput::vftable;
    local_1030 = 0;
    local_1028 = (void *)0x0;
    pvStack_1020 = (void *)0x0;
    local_1018 = 0;
    pvStack_1010 = (void *)0x0;
    local_1008 = (void *)0x0;
    lStack_1000 = 0;
    local_ff8 = 0;
    local_ff4 = 0;
    local_fd0 = *(undefined1 *)((longlong)piVar28 + 0x19);
    _local_fcc = CONCAT44(puVar24[5],puVar24[6]);
    local_fc4 = puVar24[4];
    FUN_1805b1330(&local_fc0,0x10,&local_fc0);
    FUN_1805ce9b0(local_fc0,&local_ca8,0x10);
    pvVar18 = *(void **)(puVar24 + 10);
    uVar1 = puVar24[7];
    uVar13 = (ulonglong)uVar1;
    uVar30 = local_f98 - (longlong)local_fa8;
    if (uVar30 < uVar13) {
      if (0x7fffffffffffffff < uVar13) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      uVar25 = uVar13;
      if ((uVar30 <= 0x7fffffffffffffff - (uVar30 >> 1)) &&
         (uVar25 = (uVar30 >> 1) + uVar30, uVar25 < uVar13)) {
        uVar25 = uVar13;
      }
      if (local_fa8 != (void *)0x0) {
        FUN_1805a7bf0(&local_fa8,local_fa8);
      }
      local_fa8 = (void *)0x0;
      pvStack_fa0 = (void *)0x0;
      local_f98 = 0;
      if (uVar25 != 0) {
        if (0x7fffffffffffffff < uVar25) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        pvStack_fa0 = (void *)FUN_1805bc8b0(&local_fa8,uVar25);
        local_f98 = (longlong)pvStack_fa0 + uVar25;
      }
      pvVar17 = pvStack_fa0;
      local_fa8 = pvStack_fa0;
      memmove(pvStack_fa0,pvVar18,uVar13);
      pvStack_fa0 = (void *)(uVar13 + (longlong)pvVar17);
    }
    else if ((ulonglong)((longlong)pvStack_fa0 - (longlong)local_fa8) < uVar13) {
      pvVar17 = (void *)(((longlong)pvStack_fa0 - (longlong)local_fa8) + (longlong)pvVar18);
      memmove(local_fa8,pvVar18,(longlong)pvVar17 - (longlong)pvVar18);
      pvVar26 = pvStack_fa0;
      sVar29 = (longlong)pvVar18 + ((ulonglong)uVar1 - (longlong)pvVar17);
      memmove(pvStack_fa0,pvVar17,sVar29);
      pvStack_fa0 = (void *)(sVar29 + (longlong)pvVar26);
    }
    else {
      lVar19 = (longlong)local_fa8 + uVar13;
      memmove(local_fa8,pvVar18,uVar13);
      pvStack_fa0 = (void *)lVar19;
    }
    lVar19 = local_fb8;
    pvVar18 = local_fc0;
    if (*(char *)((longlong)local_10a0 + 0xe) == '\0') {
      FUN_180694cf0(local_1048[0],pppuVar32,&local_fd8,&local_1038);
    }
    else {
      local_ff8 = local_ff8 & 0xffffff00;
      local_1030 = 0;
      uVar13 = local_fb8 - (longlong)local_fc0;
      uVar30 = local_1018 - (longlong)local_1028;
      if (uVar30 < uVar13) {
        if (0x7fffffffffffffff < uVar13) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        uVar25 = uVar13;
        if ((uVar30 <= 0x7fffffffffffffff - (uVar30 >> 1)) &&
           (uVar25 = (uVar30 >> 1) + uVar30, uVar25 < uVar13)) {
          uVar25 = uVar13;
        }
        if (local_1028 != (void *)0x0) {
          FUN_1805a7bf0(&local_1028,local_1028);
        }
        FUN_1805bbbc0(&local_1028,uVar25);
        pvVar17 = local_1028;
        sVar29 = lVar19 - (longlong)pvVar18;
        memmove(local_1028,pvVar18,sVar29);
        pvStack_1020 = (void *)(sVar29 + (longlong)pvVar17);
      }
      else if ((ulonglong)((longlong)pvStack_1020 - (longlong)local_1028) < uVar13) {
        pvVar18 = (void *)((longlong)local_fc0 + ((longlong)pvStack_1020 - (longlong)local_1028));
        memmove(local_1028,local_fc0,(longlong)pvVar18 - (longlong)local_fc0);
        pvVar17 = pvStack_1020;
        sVar29 = lVar19 - (longlong)pvVar18;
        memmove(pvStack_1020,pvVar18,sVar29);
        pvStack_1020 = (void *)(sVar29 + (longlong)pvVar17);
      }
      else {
        pvVar18 = (void *)((longlong)local_1028 + uVar13);
        memmove(local_1028,local_fc0,uVar13);
        pvStack_1020 = pvVar18;
      }
      pvVar17 = pvStack_fa0;
      pvVar18 = local_fa8;
      uVar13 = (longlong)pvStack_fa0 - (longlong)local_fa8;
      uVar30 = lStack_1000 - (longlong)pvStack_1010;
      if (uVar30 < uVar13) {
        if (0x7fffffffffffffff < uVar13) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        uVar25 = uVar13;
        if ((uVar30 <= 0x7fffffffffffffff - (uVar30 >> 1)) &&
           (uVar25 = uVar30 + (uVar30 >> 1), uVar25 < uVar13)) {
          uVar25 = uVar13;
        }
        if (pvStack_1010 != (void *)0x0) {
          FUN_1805a7bf0(&pvStack_1010,pvStack_1010);
        }
        FUN_1805bbbc0(&pvStack_1010,uVar25);
        pvVar26 = pvStack_1010;
      }
      else {
        if (uVar13 <= (ulonglong)((longlong)local_1008 - (longlong)pvStack_1010)) {
          pvVar18 = (void *)(uVar13 + (longlong)pvStack_1010);
          memmove(pvStack_1010,local_fa8,uVar13);
          local_1008 = pvVar18;
          goto LAB_1805c6a86;
        }
        pvVar18 = (void *)(((longlong)local_1008 - (longlong)pvStack_1010) + (longlong)local_fa8);
        memmove(pvStack_1010,local_fa8,(longlong)pvVar18 - (longlong)local_fa8);
        pvVar26 = local_1008;
      }
      memmove(pvVar26,pvVar18,(longlong)pvVar17 - (longlong)pvVar18);
      local_1008 = (void *)(((longlong)pvVar17 - (longlong)pvVar18) + (longlong)pvVar26);
    }
LAB_1805c6a86:
    lVar19 = lStack_1058;
    if ((char)local_ff8 != '\0') {
      bVar33 = true;
      bVar3 = true;
      for (lVar27 = local_1060; (bVar3 && (lVar27 != lVar19)); lVar27 = lVar27 + 0x8c0) {
        bVar3 = false;
        local_bd8 = pace::eden::thrift::pub::AuthSituation::vftable;
        local_bd0[0] = CONCAT44(local_bd0[0]._4_4_,*(undefined4 *)(lVar27 + 8));
        FUN_1805b5c00(local_bd0 + 1,lVar27 + 0x10);
        local_768 = *(undefined1 *)(lVar27 + 0x470);
        local_764 = *(undefined4 *)(lVar27 + 0x474);
        local_760 = *(undefined4 *)(lVar27 + 0x478);
        local_75c = *(undefined4 *)(lVar27 + 0x47c);
        FUN_1805b4dc0(local_758,lVar27 + 0x480);
        local_320 = *(undefined4 *)(lVar27 + 0x8b8);
        local_31c = *(undefined2 *)(lVar27 + 0x8bc);
        local_31a = *(undefined1 *)(lVar27 + 0x8be);
        if (((int)local_bd0[0] == 6) &&
           ((undefined **)CONCAT44(uStack_bb4,CONCAT22(uStack_bb6,local_bb8)) == pppuVar32[0xe])) {
          pppuVar21 = pppuVar32 + 0xf;
          if ((undefined **)0xf < pppuVar32[0x12]) {
            pppuVar21 = (undefined ***)pppuVar32[0xf];
          }
          puVar8 = &local_bb0;
          if (0xf < local_b98) {
            puVar8 = (undefined1 *)CONCAT71(uStack_baf,local_bb0);
          }
          if ((local_ba0 != pppuVar32[0x11]) ||
             (iVar7 = memcmp(puVar8,pppuVar21,(size_t)local_ba0), iVar7 != 0)) goto LAB_1805c6bc1;
          bVar33 = false;
        }
        else {
LAB_1805c6bc1:
          bVar3 = true;
        }
        local_bd8 = pace::eden::thrift::pub::AuthSituation::vftable;
        FUN_1805b7720(local_758);
        FUN_1805b8780(local_bd0 + 1);
        if (!bVar3) break;
      }
      if (bVar33) {
        FUN_1805bc560(pppuVar32,6);
      }
    }
    lVar19 = lStack_1058;
    if ((char)local_1030 != '\0') {
      bVar33 = true;
      bVar3 = true;
      for (lVar27 = local_1060; (bVar3 && (lVar27 != lVar19)); lVar27 = lVar27 + 0x8c0) {
        bVar3 = false;
        local_bd8 = pace::eden::thrift::pub::AuthSituation::vftable;
        local_bd0[0] = CONCAT44(local_bd0[0]._4_4_,*(undefined4 *)(lVar27 + 8));
        FUN_1805b5c00(local_bd0 + 1,lVar27 + 0x10);
        local_768 = *(undefined1 *)(lVar27 + 0x470);
        local_764 = *(undefined4 *)(lVar27 + 0x474);
        local_760 = *(undefined4 *)(lVar27 + 0x478);
        local_75c = *(undefined4 *)(lVar27 + 0x47c);
        FUN_1805b4dc0(local_758,lVar27 + 0x480);
        local_320 = *(undefined4 *)(lVar27 + 0x8b8);
        local_31c = *(undefined2 *)(lVar27 + 0x8bc);
        local_31a = *(undefined1 *)(lVar27 + 0x8be);
        if (((int)local_bd0[0] == 0x10) &&
           ((undefined **)CONCAT44(uStack_bb4,CONCAT22(uStack_bb6,local_bb8)) == pppuVar32[0xe])) {
          pppuVar21 = pppuVar32 + 0xf;
          if ((undefined **)0xf < pppuVar32[0x12]) {
            pppuVar21 = (undefined ***)pppuVar32[0xf];
          }
          puVar8 = &local_bb0;
          if (0xf < local_b98) {
            puVar8 = (undefined1 *)CONCAT71(uStack_baf,local_bb0);
          }
          if ((local_ba0 != pppuVar32[0x11]) ||
             (iVar7 = memcmp(puVar8,pppuVar21,(size_t)local_ba0), iVar7 != 0)) goto LAB_1805c6d4f;
          bVar33 = false;
        }
        else {
LAB_1805c6d4f:
          bVar3 = true;
        }
        local_bd8 = pace::eden::thrift::pub::AuthSituation::vftable;
        FUN_1805b7720(local_758);
        FUN_1805b8780(local_bd0 + 1);
        if (!bVar3) break;
      }
      if (bVar33) {
        FUN_1805bc560(pppuVar32,0x10);
      }
    }
    lVar19 = lStack_1058;
    if (local_1030._1_1_ != '\0') {
      bVar3 = true;
      bVar33 = true;
      for (lVar27 = local_1060; (bVar33 && (lVar27 != lVar19)); lVar27 = lVar27 + 0x8c0) {
        bVar33 = false;
        FUN_1805b5540(&local_bd8,lVar27);
        if (((int)local_bd0[0] == 7) &&
           (((undefined **)CONCAT44(uStack_bb4,CONCAT22(uStack_bb6,local_bb8)) == pppuVar32[0xe] &&
            (cVar4 = FUN_1805aef10(&local_bb0,pppuVar32 + 0xf), cVar4 != '\0')))) {
          bVar3 = false;
        }
        else {
          bVar33 = true;
        }
        FUN_1805b7ba0(&local_bd8);
        if (!bVar33) break;
      }
      if (bVar3) {
        FUN_1805bc560(pppuVar32,7);
      }
    }
    param_2 = local_1090;
    if (((longlong)pvStack_1020 - (longlong)local_1028 == 0x10) ||
       ((longlong)local_1008 - (longlong)pvStack_1010 == (longlong)pvStack_fa0 - (longlong)local_fa8
       )) {
      FUN_1805ca0c0(local_1090 + 0x34,local_1028,2);
      param_1 = local_10a0;
      memcpy(*(void **)(local_10a0 + 10),pvStack_1010,(ulonglong)local_10a0[7]);
      *(undefined4 *)((longlong)param_2 + 0xc) = local_ce0._4_4_;
      param_2[2] = CONCAT44(uStack_cd4,local_cd8);
      local_10a8 = '\x01';
      FUN_1805b7d00(&local_1038);
      FUN_1805b7c40(&local_fd8);
      goto switchD_1805c6fde_default;
    }
    FUN_1805b7d00(&local_1038);
    FUN_1805b7c40(&local_fd8);
    param_1 = local_10a0;
    param_2 = local_1090;
  }
LAB_1805c6eb1:
  uVar20 = uVar20 + 1;
  goto LAB_1805c6269;
LAB_1805c6f95:
  lVar19 = FUN_1805c5140(&local_1060);
  if ((lVar19 == 0) || ((char)param_1[3] != '\0')) {
    uVar10 = FUN_1805c0220(&DAT_181baf991);
    uVar16 = FUN_1805c0260();
    FUN_1805bc880(uVar16,
                  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                  ,0x1ab4);
    FUN_1806c45b0(0x3e,uVar10);
  }
  else {
    switch(*(undefined4 *)(local_1060 + 8)) {
    case 0:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1abf);
      FUN_1806c45b0(0x48,uVar10,uVar16);
    case 0xe:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ac4);
      FUN_1806c45b0(0x49,uVar10,uVar16);
    case 1:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ac9);
      FUN_1806c45b0(0x4a,uVar10,uVar16);
    case 2:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ace);
      FUN_1806c45b0(0x4b,uVar10,uVar16);
    case 3:
    case 7:
    case 8:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ad5);
      FUN_1806c45b0(0x4c,uVar10,uVar16);
    case 4:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ada);
      FUN_1806c45b0(0x4d,uVar10,uVar16);
    case 5:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1adf);
      FUN_1806c45b0(0x1b,uVar10,uVar16);
    case 6:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ae4);
      FUN_1806c45b0(0x4e,uVar10,uVar16);
    case 9:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1ae9);
      FUN_1806c45b0(0x4f,uVar10,uVar16);
    case 10:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1aee);
      FUN_1806c45b0(0x50,uVar10,uVar16);
    case 0xb:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1af3);
      FUN_1806c45b0(0x51,uVar10,uVar16);
    case 0xc:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1af8);
      FUN_1806c45b0(0x52,uVar10,uVar16);
    case 0xd:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1afd);
      FUN_1806c45b0(0x53,uVar10,uVar16);
    case 0xf:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1b02);
      FUN_1806c45b0(0x54,uVar10,uVar16);
    case 0x10:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1b07);
      FUN_1806c45b0(0x55,uVar10,uVar16);
    case 0x11:
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1b0c);
      FUN_1806c45b0(0x57,uVar10);
    }
  }
switchD_1805c6fde_default:
  FUN_1805a4e80(local_1048);
  FUN_1805bc0b0(&local_da8);
  FUN_1805b8040(&local_d58);
  FUN_1805b72a0(&local_f88);
  if (local_e40 != 0) {
    local_10d8 = (longlong *)((longlong)param_2 + 0x9c);
    FUN_1805bba40(&local_e48,param_2 + 3,(longlong)param_2 + 0x1c,(longlong)param_2 + 0x5c);
  }
  local_db8 = 0;
  local_db0 = 0xf;
  local_dc8 = 0;
  if (*(longlong *)(param_1 + 0x10) != 0) {
    FUN_1805b98f0(&local_dc8);
  }
  if (local_10a8 == '\0') {
    FUN_1805bdb50(local_f50,1);
    local_10d8 = (longlong *)CONCAT44(local_10d8._4_4_,1);
    uVar20 = FUN_1806a2680(local_f50[0],local_2b4,0,0);
    local_10a8 = '\0';
    local_fe8 = local_e80;
    local_f58 = &local_d88;
    uVar10 = FUN_1805b45d0(local_e80,local_f50);
    uVar13 = FUN_1805a4070(&local_d88,&local_df8);
    local_10d8 = (longlong *)FUN_1805a4070(&local_da8,&local_dc8);
    local_10b8 = *(undefined8 *)(local_10a0 + 8);
    local_10c0 = &local_10a8;
    local_10c8 = &local_1060;
    local_10d0 = uVar13;
    local_10b0 = uVar10;
    local_10a7 = FUN_1805bdf40((char)local_10a0[3] != '\0',(local_f60 & uVar20) != 0,
                               (local_f68 & uVar20) != 0,0);
    if (local_10a8 != '\0') {
      local_e40 = 0;
      FUN_1805bce50(&local_df8);
      uVar10 = FUN_1805c0220(&DAT_181baf991);
      uVar16 = FUN_1805c0260();
      FUN_1805bc880(uVar16,
                    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\paceeden.cpp"
                    ,0x1b4e);
      FUN_1806c45b0(2,uVar10,uVar16);
      local_10d8 = (longlong *)((longlong)local_1090 + 0x9c);
      FUN_1805bba40(&local_e48,local_1090 + 3,(longlong)local_1090 + 0x1c,
                    (longlong)local_1090 + 0x5c);
      FUN_1805a4e80(local_f50);
      FUN_180485450(&local_dc8);
      FUN_1805b8be0(&local_318);
      FUN_180575f30(&local_1060);
      FUN_180575800(&local_e48);
    }
    FUN_1805a4e80(local_f50);
    param_1 = local_10a0;
  }
  if (((*(char *)((longlong)param_1 + 0xd) != '\0') && (*(int *)(param_2 + 3) != 0)) &&
     (local_10a7 == '\0')) {
    if (local_db8 == 0) {
      FUN_1805b98f0(&local_dc8,"This software");
    }
    uVar10 = FUN_1805a3f20(&local_ce8,"%s %s");
    uVar10 = FUN_1805b2240(uVar10,local_e18);
    uVar10 = FUN_1805b2240(uVar10,local_e38);
    FUN_1805ae640(uVar10,&local_da8);
    local_1070 = local_1070 | 1;
    FUN_1805a4fa0(&local_ce8);
    uVar10 = FUN_1805a3f20(&local_bd8,"%s cannot run, because an error occurred.\n\n%s");
    uVar10 = FUN_1805b2240(uVar10,&local_dc8);
    uVar10 = FUN_1805b2240(uVar10,&local_df8);
    FUN_1805ae640(uVar10,&local_d88);
    local_1070 = local_1070 | 2;
    FUN_1805a4fa0(&local_bd8);
    local_10d0 = local_10d0 & 0xffffffffffffff00;
    local_10d8 = (longlong *)((ulonglong)local_10d8 & 0xffffffffffffff00);
    FUN_1805f02b0(&local_da8,&local_d88,0,0);
    FUN_180485450(&local_d88);
    FUN_180485450(&local_da8);
  }
  FUN_180485450(&local_dc8);
  FUN_1805b8be0(&local_318);
  FUN_180575f30(&local_1060);
  FUN_180575800(&local_e48);
  if (local_10a7 == '\0') {
  }
  goto LAB_1805c5360;
}



############ FUN_ 1805dfee0 size=3244 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x0001805e0b5f) overlaps instruction at (ram,0x0001805e0b5e)
    */
/* WARNING: Removing unreachable block (ram,0x0001805dff78) */
/* WARNING: Removing unreachable block (ram,0x0001805e099a) */

void FUN_1805dfee0(uint *param_1)

{
  int iVar1;
  ulonglong *puVar2;
  longlong lVar3;
  undefined8 *puVar4;
  uint uVar5;
  int iVar6;
  char cVar9;
  ulonglong uVar7;
  ulonglong uVar8;
  uint uVar10;
  uint *puVar11;
  ulonglong uVar12;
  int *piVar13;
  ulonglong *puVar14;
  ulonglong *puVar15;
  ulonglong uVar16;
  uint *puVar17;
  uint *puVar18;
  uint uVar19;
  int iVar20;
  int unaff_retaddr;
  uint local_res18 [2];
  undefined4 local_res20;
  undefined1 auStack_d8 [32];
  ulonglong local_b8;
  undefined1 *local_b0;
  uint *local_a0;
  undefined8 local_98;
  undefined4 local_90 [4];
  undefined4 local_80;
  undefined8 local_78;
  undefined8 *local_70;
  ulonglong local_68;
  undefined8 local_60;
  undefined8 local_58;
  
  uVar16 = (longlong)&local_60 + 1;
  puVar14 = (ulonglong *)auStack_d8;
  local_58 = 0xfffffffffffffffe;
  local_res20 = 0xae0;
  local_80 = 0xca0;
  local_78 = 0x180bc8fa0;
  local_a0 = (uint *)0x180bc90a0;
  local_b8 = 0x4c1dcc63;
  puVar17 = (uint *)&DAT_e6546b64;
  local_b0 = &DAT_e6546b64;
  local_68 = (ulonglong)*param_1;
  lVar3 = 0;
  local_98 = local_a0;
  local_60 = local_78;
  if (local_68 == 0x5b625031) {
    uVar5 = (iRam0000000180bc8fa0 * 0x16a88000 | (uint)(iRam0000000180bc8fa0 * -0x3361d2af) >> 0x11)
            * 0x1b873593 ^ 0xf1175bbc;
    uVar5 = (iRam0000000180bc8fa4 * 0x16a88000 | (uint)(iRam0000000180bc8fa4 * -0x3361d2af) >> 0x11)
            * 0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar5 = (iRam0000000180bc8fa8 * 0x16a88000 | (uint)(iRam0000000180bc8fa8 * -0x3361d2af) >> 0x11)
            * 0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar19 = (((uVar5 & 0x18ff) + 1) * (uVar5 & 0x18ff) + 7) % 0x51;
    iVar6 = (uVar5 & 0x5ff) * (uVar5 & 0x5ff) + 1;
    uVar10 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
    uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
    uVar10 = (int)((-uVar10 | uVar10) & (-uVar19 | uVar19)) >> 0x1f;
    iVar20 = 0;
    uVar7 = (longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0x5894) ^ 0xffffffffffffa768;
    uVar5 = (*(int *)(uVar7 + 0x180bc8fb0) * 0x16a88000 |
            (uint)(*(int *)(uVar7 + 0x180bc8fb0) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar5;
    uVar5 = (*(int *)(uVar7 + 0x180bc8fb4) * 0x16a88000 |
            (uint)(*(int *)(uVar7 + 0x180bc8fb4) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar5 = (*(int *)(uVar7 + 0x180bc8fb8) * 0x16a88000 |
            (uint)(*(int *)(uVar7 + 0x180bc8fb8) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    iVar6 = *(int *)(uVar7 + 0x180bc8fbc);
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = uVar5 & 0x23f;
    iVar6 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
    piVar13 = (int *)((((longlong)
                        ((((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) + 0x3a95) ^
                       0x3ab9U) - 0x28) + (longlong)(uVar7 + 0x180bc8fbc));
    uVar5 = (*piVar13 * 0x16a88000 | (uint)(*piVar13 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar5;
    uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    uVar10 = (uint)piVar13 & 0x23f;
    uVar19 = uVar5 & 0x7ff;
    iVar6 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
    piVar13 = (int *)((longlong)piVar13 +
                     (0x34 - ((longlong)
                              (int)(iVar6 + (iVar6 / 3 + (iVar6 >> 0x1f) +
                                            (int)(((longlong)iVar6 / 3 + ((longlong)iVar6 >> 0x3f) &
                                                  0xffffffffU) >> 0x1f)) * -3 +
                                    ((uVar19 - 1) * uVar19 & 1) ^ 0xe904) ^ 0xe934U)));
    uVar5 = (*piVar13 * 0x16a88000 | (uint)(*piVar13 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar5;
    uVar5 = (piVar13[1] * 0x16a88000 | (uint)(piVar13[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    local_res18[0] =
         (piVar13[2] * 0x16a88000 | (uint)(piVar13[2] * -0x3361d2af) >> 0x11) * 0x1b873593;
    uVar5 = local_res18[0] ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
    local_b8 = (ulonglong)((uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64);
    local_68 = 0x5b625031;
    do {
      puVar18 = local_res18;
      puVar11 = (uint *)(piVar13 + 3);
      uVar8 = 0x5018;
      *(undefined8 *)((longlong)puVar14 + -8) = 0x1805e04a2;
      uVar7 = FUN_1805e1914();
      puVar2 = puVar14;
      if (((uVar8 & 0xc3) == 0) && ((uVar8 & 0xc3) == 0)) {
        *(uint **)((longlong)puVar14 + -8) = puVar17;
        puVar2 = (ulonglong *)((longlong)puVar14 + -8);
        puVar17 = puVar11;
        if (((uVar7 & 0xc3) != 0) &&
           (puVar2 = (ulonglong *)((longlong)puVar14 + -8), (uVar7 & 0xc3) == 0)) {
          puVar2 = (ulonglong *)((longlong)puVar14 + -8);
        }
      }
      do {
        do {
          puVar15 = puVar2;
          puVar2 = puVar15;
        } while ((uVar8 & 0xc3) != 0);
        *puVar18 = *puVar17;
        puVar17 = (uint *)*puVar15;
        puVar14 = puVar15 + 1;
        puVar2 = puVar15 + 1;
      } while (((uVar8 & 0xc300) == 0) || (puVar2 = puVar15 + 1, (uVar8 & 0xc3) != 0));
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = (local_res18[0] * 0x16a88000 | local_res18[0] * -0x3361d2af >> 0x11) * 0x1b873593 ^
            (uint)local_b8;
    iVar6 = (int)puVar17;
    uVar5 = (piVar13[4] * 0x16a88000 | (uint)(piVar13[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[5] * 0x16a88000 | (uint)(piVar13[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[6] * 0x16a88000 | (uint)(piVar13[6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[7] * 0x16a88000 | (uint)(piVar13[7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[8] * 0x16a88000 | (uint)(piVar13[8] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[9] * 0x16a88000 | (uint)(piVar13[9] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    local_a0 = param_1 + 2;
    uVar5 = (piVar13[10] * 0x16a88000 | (uint)(piVar13[10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0xb] * 0x16a88000 | (uint)(piVar13[0xb] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    local_res18[0] =
         (piVar13[0xc] * 0x16a88000 | (uint)(piVar13[0xc] * -0x3361d2af) >> 0x11) * 0x1b873593;
    uVar5 = local_res18[0] ^ iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    do {
      *puVar15 = 0x1805e067b;
      FUN_1805e0f39();
      *puVar15 = 0x1805e0699;
      FUN_1805df7a3();
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar5 = (piVar13[0xd] * 0x16a88000 | (uint)(piVar13[0xd] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            iVar6 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0xe] * 0x16a88000 | (uint)(piVar13[0xe] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0xf] * 0x16a88000 | (uint)(piVar13[0xf] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x10] * 0x16a88000 | (uint)(piVar13[0x10] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = uVar5 << 0xd | uVar5 >> 0x13;
    iVar6 = (int)local_b0 + uVar5 * 4;
    iVar1 = iVar6;
    do {
      iVar20 = iVar20 + iVar1;
      iVar20 = iVar20 - (~((~(iVar1 - iVar20) + 1U) - iVar20) + 1);
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
      iVar1 = unaff_retaddr;
    } while (uVar10 != 0);
    uVar5 = (piVar13[0x11] * 0x16a88000 | (uint)(piVar13[0x11] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ uVar5 + iVar6;
    uVar5 = (piVar13[0x12] * 0x16a88000 | (uint)(piVar13[0x12] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x13] * 0x16a88000 | (uint)(piVar13[0x13] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x14] * 0x16a88000 | (uint)(piVar13[0x14] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x15] * 0x16a88000 | (uint)(piVar13[0x15] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x16] * 0x16a88000 | (uint)(piVar13[0x16] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x17] * 0x16a88000 | (uint)(piVar13[0x17] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x18] * 0x16a88000 | (uint)(piVar13[0x18] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (piVar13[0x19] * 0x16a88000 | (uint)(piVar13[0x19] * -0x3361d2af) >> 0x11) * 0x1b873593
            ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    iVar6 = piVar13[0x1a];
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar8 = (ulonglong)uVar5;
    iVar6 = ((uint)local_98 & 0x7aff) * ((uint)local_98 & 0x7aff) + 1;
    uVar10 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
    uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
    uVar19 = ((uVar5 & 0xaff) * (uVar5 & 0xaff) * 0x10 + 4) % 0x13;
    uVar10 = (int)((-uVar19 | uVar19) & (-uVar10 | uVar10)) >> 0x1f;
    piVar13 = (int *)((longlong)(piVar13 + 0x1a) +
                     (0x18 - ((longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0x1f04) ^ 0x1f10U)));
    iVar6 = *piVar13;
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar5;
    piVar13 = piVar13 + 1;
    uVar10 = (*piVar13 * 0x16a88000 | (uint)(*piVar13 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
             (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (uint)piVar13 & 0x7f;
    uVar7 = (longlong)
            (int)((0xe0c3 - (uVar5 * uVar5 * (uVar5 + 1) * (uVar5 + 1) & 0x80000003)) -
                 (iVar20 * iVar20 * (iVar20 + 1) * (iVar20 + 1) & 1U)) ^ 0xe047;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x80));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar10 << 0xd | uVar10 >> 0x13) * 5;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x7c));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x78));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x74));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x70));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x6c));
    local_res18[0] = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593;
    uVar5 = local_res18[0] ^ (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar5 = (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    do {
      *puVar15 = 0x1805e0a7a;
      FUN_1805e1abc();
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x68));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar5;
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 100));
    uVar5 = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
            (int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5;
    uVar12 = (ulonglong)((int)local_b0 + (uVar5 << 0xd | uVar5 >> 0x13) * 5);
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x60));
    local_res18[0] = (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593;
    do {
      cVar9 = 'P';
      *puVar15 = 0x1805e0b4a;
      FUN_1805e0efe();
      if (cVar9 == '\0') {
        uVar16 = (ulonglong)(uint)((int)uVar16 + (int)uVar12);
      }
      *puVar15 = 0x1805e0b6e;
      FUN_1805e0efe();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    iVar6 = *(int *)((longlong)piVar13 + (uVar7 - 0x5c));
    *(uint *)(uVar16 + 0x77) =
         (iVar6 * 0x16a88000 | (uint)(iVar6 * -0x3361d2af) >> 0x11) * 0x1b873593;
    *puVar15 = uVar8;
    puVar15[-1] = uVar16 + 0x5f;
    puVar15[-2] = 0x1805e0bbe;
    FUN_1805e0bf2();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  local_70 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_70 != (undefined8 *)0x0) {
    lVar3 = FUN_1805a48c0(local_70,
                          "The actual thriftId 0x%08X does not match the expected thriftId 0x%08X");
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x18);
  local_70 = puVar4;
  if (puVar4 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
    *puVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_90[0] = 0x5b625031;
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_68);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),local_90);
}



############ FUN_ 180671d50 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180671d50(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18079b3d0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180673e30 size=447 ############

void FUN_180673e30(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b2370(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1805c79f0 size=392 ############

void FUN_1805c79f0(ulonglong *param_1,ulonglong param_2,size_t param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong *puVar3;
  ulonglong uVar4;
  void *_Memory;
  ulonglong *_Dst;
  ulonglong uVar5;
  
  uVar5 = param_2 | 0xf;
  if (uVar5 != 0xffffffffffffffff) {
    uVar1 = param_1[3];
    uVar4 = uVar1 >> 1;
    param_2 = uVar5;
    if ((uVar5 / 3 < uVar4) && (param_2 = 0xfffffffffffffffe, uVar1 <= -uVar4 - 2)) {
      param_2 = uVar1 + uVar4;
    }
  }
  if (param_2 == 0xffffffffffffffff) {
    _Dst = (ulonglong *)0x0;
  }
  else if (param_2 + 1 < 0x1000) {
    _Dst = (ulonglong *)FUN_1811316e0();
    if (_Dst == (ulonglong *)0x0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
  else {
    if (param_2 + 0x28 <= param_2 + 1) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_alloc();
    }
    uVar5 = FUN_1811316e0(param_2 + 0x28);
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    _Dst = (ulonglong *)(uVar5 + 0x27 & 0xffffffffffffffe0);
    _Dst[-1] = uVar5;
  }
  if (param_3 != 0) {
    puVar3 = param_1;
    if (0xf < param_1[3]) {
      puVar3 = (ulonglong *)*param_1;
    }
    if (param_3 != 0) {
      memcpy(_Dst,puVar3,param_3);
    }
  }
  if (param_1[3] < 0x10) {
    param_1[3] = 0xf;
    param_1[2] = 0;
    puVar3 = param_1;
    if (0xf < param_1[3]) {
      puVar3 = (ulonglong *)*param_1;
    }
    *(undefined1 *)puVar3 = 0;
    *param_1 = (ulonglong)_Dst;
    param_1[3] = param_2;
    param_1[2] = param_3;
    if (0xf < param_1[3]) {
      param_1 = _Dst;
    }
    *(undefined1 *)((longlong)param_1 + param_3) = 0;
    return;
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if (0xfff < param_1[3] + 1) {
    if (((ulonglong)pvVar2 & 0x1f) != 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    _Memory = *(void **)((longlong)pvVar2 - 8);
    if (pvVar2 <= _Memory) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    if ((ulonglong)((longlong)pvVar2 - (longlong)_Memory) < 8) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    if (0x27 < (ulonglong)((longlong)pvVar2 - (longlong)_Memory)) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805c9c00 size=495 ############

longlong FUN_1805c9c00(ulonglong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  void *pvVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  void *_Memory;
  ulonglong uVar10;
  ulonglong uVar11;
  
  uVar11 = *param_1;
  lVar6 = (longlong)(param_1[1] - uVar11) >> 4;
  if (lVar6 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar6 + 1;
  uVar8 = (longlong)(param_1[2] - uVar11) >> 4;
  uVar10 = uVar1;
  if ((uVar8 <= 0xfffffffffffffff - (uVar8 >> 1)) && (uVar10 = (uVar8 >> 1) + uVar8, uVar10 < uVar1)
     ) {
    uVar10 = uVar1;
  }
  uVar8 = uVar10 * 0x10;
  if (uVar10 < 0x1000000000000000) {
    uVar10 = uVar8;
    if (uVar8 < 0x1000) {
      if (uVar8 == 0) {
        uVar10 = 0;
      }
      else {
        uVar10 = FUN_1811316e0(uVar8);
      }
      goto LAB_1805c9cee;
    }
  }
  else {
    uVar10 = 0xffffffffffffffff;
  }
  uVar9 = uVar10 + 0x27;
  if (uVar9 <= uVar10) {
    uVar9 = 0xffffffffffffffff;
  }
  lVar6 = FUN_1811316e0(uVar9);
  if (lVar6 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar10 = lVar6 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar10 - 8) = lVar6;
LAB_1805c9cee:
  uVar11 = (longlong)param_2 - uVar11 & 0xfffffffffffffff0;
  uVar5 = param_3[1];
  *(undefined8 *)(uVar11 + uVar10) = *param_3;
  ((undefined8 *)(uVar11 + uVar10))[1] = uVar5;
  puVar3 = (undefined8 *)param_1[1];
  puVar7 = (undefined8 *)*param_1;
  if (param_2 == puVar3) {
    if (puVar7 != puVar3) {
      lVar6 = uVar10 - (longlong)puVar7;
      do {
        uVar5 = puVar7[1];
        puVar2 = (undefined8 *)((longlong)puVar7 + lVar6);
        *puVar2 = *puVar7;
        puVar2[1] = uVar5;
        puVar7 = puVar7 + 2;
      } while (puVar7 != puVar3);
    }
  }
  else {
    if (puVar7 != param_2) {
      lVar6 = uVar10 - (longlong)puVar7;
      do {
        uVar5 = puVar7[1];
        puVar3 = (undefined8 *)((longlong)puVar7 + lVar6);
        *puVar3 = *puVar7;
        puVar3[1] = uVar5;
        puVar7 = puVar7 + 2;
      } while (puVar7 != param_2);
    }
    puVar3 = (undefined8 *)param_1[1];
    if (param_2 != puVar3) {
      lVar6 = (uVar11 + 0x10 + uVar10) - (longlong)param_2;
      do {
        uVar5 = param_2[1];
        puVar7 = (undefined8 *)((longlong)param_2 + lVar6);
        *puVar7 = *param_2;
        puVar7[1] = uVar5;
        param_2 = param_2 + 2;
      } while (param_2 != puVar3);
    }
  }
  pvVar4 = (void *)*param_1;
  if (pvVar4 == (void *)0x0) {
    *param_1 = uVar10;
    param_1[1] = uVar1 * 0x10 + uVar10;
    param_1[2] = uVar10 + uVar8;
    return *param_1 + uVar11;
  }
  _Memory = pvVar4;
  if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xfffffffffffffff0)) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805cfe00 size=423 ############

undefined8 *
FUN_1805cfe00(undefined8 *param_1,ulonglong param_2,undefined8 param_3,size_t param_4,void *param_5,
             size_t param_6)

{
  longlong lVar1;
  ulonglong uVar2;
  void *_Src;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  void *pvVar7;
  
  lVar1 = param_1[2];
  if (0x7fffffffffffffffU - lVar1 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a6980();
  }
  uVar2 = param_1[3];
  uVar4 = lVar1 + param_2 | 0xf;
  uVar6 = 0x7fffffffffffffff;
  if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) &&
     (uVar5 = (uVar2 >> 1) + uVar2, uVar6 = uVar4, uVar4 < uVar5)) {
    uVar6 = uVar5;
  }
  uVar4 = uVar6 + 1;
  if (uVar4 < 0x1000) {
    if (uVar4 == 0) {
      pvVar7 = (void *)0x0;
    }
    else {
      pvVar7 = (void *)FUN_1811316e0(uVar4);
    }
  }
  else {
    uVar5 = uVar6 + 0x28;
    if (uVar5 <= uVar4) {
      uVar5 = 0xffffffffffffffff;
    }
    lVar3 = FUN_1811316e0(uVar5);
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    pvVar7 = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
    *(longlong *)((longlong)pvVar7 - 8) = lVar3;
  }
  param_1[2] = lVar1 + param_2;
  param_1[3] = uVar6;
  if (uVar2 < 0x10) {
    memcpy(pvVar7,param_1,param_4);
    memcpy((void *)((longlong)pvVar7 + param_4),param_5,param_6);
    memcpy((void *)((longlong)((longlong)pvVar7 + param_4) + param_6),
           (void *)((longlong)param_1 + param_4),(lVar1 - param_4) + 1);
    *param_1 = pvVar7;
    return param_1;
  }
  _Src = (void *)*param_1;
  memcpy(pvVar7,_Src,param_4);
  memcpy((void *)((longlong)pvVar7 + param_4),param_5,param_6);
  memcpy((void *)((longlong)((longlong)pvVar7 + param_4) + param_6),
         (void *)((longlong)_Src + param_4),(lVar1 - param_4) + 1);
  pvVar7 = _Src;
  if ((0xfff < uVar2 + 1) &&
     (pvVar7 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 1805cfbf0 size=520 ############

longlong FUN_1805cfbf0(longlong *param_1,longlong param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  void *_Memory;
  longlong lVar9;
  undefined4 *puVar10;
  longlong lVar11;
  ulonglong uVar12;
  undefined4 *puVar13;
  ulonglong uVar14;
  undefined4 *puVar15;
  undefined4 *puVar16;
  undefined8 uVar17;
  
  uVar17 = 0xfffffffffffffffe;
  lVar9 = *param_1;
  lVar11 = param_1[1] - lVar9 >> 5;
  if (lVar11 == 0x7ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar11 + 1;
  uVar7 = param_1[2] - lVar9 >> 5;
  uVar6 = uVar12;
  if ((uVar7 <= 0x7ffffffffffffff - (uVar7 >> 1)) && (uVar6 = (uVar7 >> 1) + uVar7, uVar6 < uVar12))
  {
    uVar6 = uVar12;
  }
  uVar14 = uVar6 * 0x20;
  uVar7 = uVar6;
  if (uVar6 < 0x800000000000000) {
    if (uVar14 < 0x1000) {
      if (uVar14 == 0) {
        puVar10 = (undefined4 *)0x0;
      }
      else {
        puVar10 = (undefined4 *)FUN_1811316e0(uVar14);
      }
      goto LAB_1805cfcef;
    }
  }
  else {
    uVar14 = 0xffffffffffffffff;
  }
  uVar8 = uVar14 + 0x27;
  if (uVar8 <= uVar14) {
    uVar8 = 0xffffffffffffffff;
  }
  lVar11 = FUN_1811316e0(uVar8);
  if (lVar11 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined4 *)(lVar11 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)(puVar10 + -2) = lVar11;
LAB_1805cfcef:
  uVar14 = param_2 - lVar9 & 0xffffffffffffffe0;
  puVar15 = (undefined4 *)(uVar14 + (longlong)puVar10);
  puVar1 = puVar15 + 8;
  *(undefined8 *)(puVar15 + 4) = 0;
  *(undefined8 *)(puVar15 + 6) = 0;
  uVar3 = param_3[1];
  uVar4 = param_3[2];
  uVar5 = param_3[3];
  *puVar15 = *param_3;
  puVar15[1] = uVar3;
  puVar15[2] = uVar4;
  puVar15[3] = uVar5;
  uVar3 = param_3[5];
  uVar4 = param_3[6];
  uVar5 = param_3[7];
  puVar15[4] = param_3[4];
  puVar15[5] = uVar3;
  puVar15[6] = uVar4;
  puVar15[7] = uVar5;
  *(undefined8 *)(param_3 + 4) = 0;
  *(undefined8 *)(param_3 + 6) = 0xf;
  *(undefined1 *)param_3 = 0;
  lVar9 = param_1[1];
  lVar11 = *param_1;
  puVar13 = puVar10;
  puVar16 = puVar1;
  if (param_2 != lVar9) {
    FUN_1805cffb0(*param_1,param_2,puVar10,param_1,puVar15,uVar7,puVar1,uVar17);
    lVar9 = param_1[1];
    lVar11 = param_2;
    puVar13 = puVar1;
    puVar15 = puVar10;
  }
  FUN_1805cffb0(lVar11,lVar9,puVar13,param_1,puVar15,uVar7,puVar16,uVar17);
  if (*param_1 == 0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + uVar12 * 8);
    param_1[2] = (longlong)(puVar10 + uVar6 * 8);
    return *param_1 + uVar14;
  }
  FUN_18048c550(*param_1,param_1[1],param_1);
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805d55f0 size=97 ############

undefined8 * FUN_1805d55f0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::VerifiedBinaryProtocol>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805d5d20 size=488 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d5d20(longlong param_1,int param_2,undefined8 param_3,undefined4 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_128 [32];
  int local_108;
  undefined8 *local_f8;
  longlong *local_f0;
  undefined8 *local_e8;
  longlong *plStack_e0;
  undefined8 *local_d8;
  undefined8 *local_c8;
  longlong *plStack_c0;
  undefined8 local_b8;
  undefined1 local_b0 [40];
  undefined1 local_88 [64];
  ulonglong local_48;
  
  local_b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_d8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_b0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_88,6,local_b0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_88,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_108 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_e8 = puVar7;
  FUN_1805d5580(&plStack_e0,puVar7);
  FUN_1805ae620(&local_e8,puVar7,puVar7);
  local_d8 = (undefined8 *)FUN_1811316e0(0x90);
  if (local_d8 != (undefined8 *)0x0) {
    local_c8 = local_e8;
    plStack_c0 = plStack_e0;
    if (plStack_e0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_e0 + 1) = (int)plStack_e0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806f2b90(local_d8,&local_c8,param_4,0);
  }
  local_f8 = puVar6;
  FUN_1805d55f0(&local_f0,puVar6);
  FUN_1805ae620(&local_f8,puVar6,puVar6);
  FUN_1806e08c0(param_3,local_f8);
  if (local_f0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_f0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_f0 + 8))(local_f0);
      LOCK();
      piVar2 = (int *)((longlong)local_f0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_f0 + 0x10))(local_f0);
      }
    }
  }
  if (plStack_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_e0 + 8))(plStack_e0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_e0 + 0x10))(plStack_e0);
      }
    }
  }
}



############ FUN_ 1805d5f20 size=488 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d5f20(longlong param_1,int param_2,undefined8 param_3,undefined4 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_128 [32];
  int local_108;
  undefined8 *local_f8;
  longlong *local_f0;
  undefined8 *local_e8;
  longlong *plStack_e0;
  undefined8 *local_d8;
  undefined8 *local_c8;
  longlong *plStack_c0;
  undefined8 local_b8;
  undefined1 local_b0 [40];
  undefined1 local_88 [64];
  ulonglong local_48;
  
  local_b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_d8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_b0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_88,6,local_b0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_88,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_108 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_e8 = puVar7;
  FUN_1805d5580(&plStack_e0,puVar7);
  FUN_1805ae620(&local_e8,puVar7,puVar7);
  local_d8 = (undefined8 *)FUN_1811316e0(0x90);
  if (local_d8 != (undefined8 *)0x0) {
    local_c8 = local_e8;
    plStack_c0 = plStack_e0;
    if (plStack_e0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_e0 + 1) = (int)plStack_e0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806f2b90(local_d8,&local_c8,param_4,0);
  }
  local_f8 = puVar6;
  FUN_1805d55f0(&local_f0,puVar6);
  FUN_1805ae620(&local_f8,puVar6,puVar6);
  FUN_1806e3860(param_3,local_f8);
  if (local_f0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_f0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_f0 + 8))(local_f0);
      LOCK();
      piVar2 = (int *)((longlong)local_f0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_f0 + 0x10))(local_f0);
      }
    }
  }
  if (plStack_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_e0 + 8))(plStack_e0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_e0 + 0x10))(plStack_e0);
      }
    }
  }
}



############ FUN_ 1805d6120 size=488 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d6120(longlong param_1,int param_2,undefined8 param_3,undefined4 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_128 [32];
  int local_108;
  undefined8 *local_f8;
  longlong *local_f0;
  undefined8 *local_e8;
  longlong *plStack_e0;
  undefined8 *local_d8;
  undefined8 *local_c8;
  longlong *plStack_c0;
  undefined8 local_b8;
  undefined1 local_b0 [40];
  undefined1 local_88 [64];
  ulonglong local_48;
  
  local_b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_d8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_b0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_88,6,local_b0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_88,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_108 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_e8 = puVar7;
  FUN_1805d5580(&plStack_e0,puVar7);
  FUN_1805ae620(&local_e8,puVar7,puVar7);
  local_d8 = (undefined8 *)FUN_1811316e0(0x90);
  if (local_d8 != (undefined8 *)0x0) {
    local_c8 = local_e8;
    plStack_c0 = plStack_e0;
    if (plStack_e0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_e0 + 1) = (int)plStack_e0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806f2b90(local_d8,&local_c8,param_4,0);
  }
  local_f8 = puVar6;
  FUN_1805d55f0(&local_f0,puVar6);
  FUN_1805ae620(&local_f8,puVar6,puVar6);
  FUN_1806e6310(param_3,local_f8);
  if (local_f0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_f0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_f0 + 8))(local_f0);
      LOCK();
      piVar2 = (int *)((longlong)local_f0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_f0 + 0x10))(local_f0);
      }
    }
  }
  if (plStack_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_e0 + 8))(plStack_e0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_e0 + 0x10))(plStack_e0);
      }
    }
  }
}



############ FUN_ 1805df0f0 size=811 ############

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

void FUN_1805df0f0(uint *param_1,undefined8 param_2)

{
  char cVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  longlong local_e8;
  longlong local_e0;
  undefined4 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined8 *local_80;
  uint *local_78;
  undefined8 local_70;
  ulonglong local_68 [5];
  ulonglong local_40;
  
  local_68[1] = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)&local_e8;
  local_8c = 0x720;
  local_88 = 0xb10;
  local_98 = 0;
  uVar5 = 0x651808;
  local_a0 = 0x651808;
  local_c0 = 0x180651808;
  uVar4 = 0x1806536d8;
  local_c8 = 0x811c9dc5;
  local_68[0] = (ulonglong)*param_1;
  lVar2 = 0;
  local_b8 = uVar4;
  local_78 = param_1;
  local_70 = param_2;
  if (local_68[0] != 0x6c736142) {
    local_80 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_80 != (undefined8 *)0x0) {
      lVar2 = FUN_1805a48c0(local_80,
                            "The actual thriftId 0x%08X does not match the expected thriftId 0x%08X"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_80 = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_90 = 0x6c736142;
    FUN_1805b2520(*(undefined8 *)(lVar2 + 8),local_68);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),&local_90);
  }
  local_98 = 0x9c7eec28dce8232e;
  local_a0 = 0xdce8232e;
  func_0x0001805e0961();
                    /* WARNING: Call to offcut address within same function */
  lVar2 = func_0x0001805df3e4();
  LOCK();
  cVar1 = *(char *)(lVar2 + -0x7d);
  *(char *)(lVar2 + -0x7d) = (char)uVar4;
  lVar2 = CONCAT71((int7)((ulonglong)uVar4 >> 8),cVar1);
  UNLOCK();
  in((short)uVar5);
  (&stack0x00000074)[lVar2 * 4] = (&stack0x00000074)[lVar2 * 4] - cVar1;
  local_e0 = (longlong)param_1 + 0x1c7;
  local_e8 = (longlong)param_1 + -0x1a73;
                    /* WARNING: Could not recover jumptable at 0x0001805df57e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(param_1 + -0x16ca))(lVar2,~((uVar5 ^ 0xffffffffffffffff) + 1) + 1);
  return;
}



############ FUN_ 1805e4f10 size=8121 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_1805e4f10(char *param_1,char param_2,longlong *param_3,undefined8 *param_4)

{
  size_t *psVar1;
  longlong lVar2;
  size_t sVar3;
  void *pvVar4;
  bool bVar5;
  int iVar6;
  undefined8 uVar7;
  char *pcVar8;
  longlong *plVar9;
  undefined8 *******pppppppuVar10;
  ulonglong uVar11;
  longlong lVar12;
  void *pvVar13;
  undefined1 *puVar14;
  undefined8 *******pppppppuVar15;
  undefined1 *puVar16;
  undefined8 *puVar17;
  undefined8 *******pppppppuVar18;
  uint uVar19;
  undefined8 *puVar20;
  undefined1 auStack_c78 [32];
  size_t local_c58;
  undefined1 local_c50;
  uint local_c48 [2];
  longlong local_c40;
  longlong lStack_c38;
  longlong local_c30;
  char *local_c28;
  char *local_c20;
  undefined8 *local_c18;
  longlong local_c10;
  longlong local_c08;
  longlong *local_c00;
  undefined8 *local_bf8;
  undefined8 local_bf0;
  undefined8 *******local_be8;
  longlong lStack_be0;
  ulonglong local_bd8;
  char *pcStack_bd0;
  longlong local_bc8 [2];
  ulonglong local_bb8;
  ulonglong uStack_bb0;
  ulonglong local_ba8;
  longlong lStack_ba0;
  longlong local_b98;
  undefined8 local_b90;
  undefined8 *******local_b88;
  longlong lStack_b80;
  longlong local_b78;
  ulonglong uStack_b70;
  undefined8 *******local_b68 [2];
  ulonglong local_b58;
  char *pcStack_b50;
  undefined8 ******local_b48 [2];
  undefined8 local_b38;
  undefined8 local_b30;
  undefined1 local_b28;
  undefined7 uStack_b27;
  longlong local_b18;
  ulonglong local_b10;
  undefined1 local_b08 [16];
  undefined8 local_af8;
  undefined8 local_af0;
  undefined1 local_ae8 [16];
  undefined8 local_ad8;
  undefined8 local_ad0;
  undefined1 local_ac8 [8];
  undefined4 local_ac0;
  undefined4 local_abc;
  undefined4 local_ab4;
  undefined8 local_a88;
  undefined8 local_a78;
  undefined8 local_a70 [7];
  undefined2 local_a38;
  undefined1 local_9b8 [16];
  undefined8 local_9a8;
  undefined8 local_9a0;
  undefined1 local_998 [112];
  undefined **local_928;
  int local_920;
  undefined1 local_918 [1136];
  undefined1 local_4a8 [1088];
  ulonglong local_68;
  
  local_bf0 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_c78;
  puVar20 = (undefined8 *)0x0;
  local_c48[0] = 0;
  local_c40 = 0;
  lStack_c38 = 0;
  local_c30 = 0;
  local_c08 = param_3[1];
  bVar5 = true;
  local_c28 = param_1;
  local_c20 = param_1;
  local_c00 = param_3;
  local_bf8 = param_4;
  for (lVar12 = *param_3; (local_c10 = lVar12, bVar5 && (lVar12 != local_c08));
      lVar12 = lVar12 + 0x8c0) {
    bVar5 = false;
    FUN_1805b5540(&local_928,lVar12);
    while (!bVar5) {
      if (local_920 == 0xf) {
        local_b88 = (undefined8 *******)0x0;
        lStack_b80 = 0;
        local_b78 = 0;
        FUN_1805b5490(local_ac8);
        local_ba8 = 0;
        lStack_ba0 = 0;
        local_b98 = 0;
        FUN_1805b57c0(local_998);
        lVar2 = *param_3;
        local_ac0 = *(undefined4 *)(lVar2 + 0x474);
        local_abc = *(undefined4 *)(lVar2 + 0x478);
        local_ab4 = *(undefined4 *)(lVar2 + 0x47c);
        local_a88 = *(undefined8 *)(lVar2 + 0x18);
        local_a78 = *(undefined8 *)(lVar2 + 0x20);
        puVar17 = (undefined8 *)(lVar2 + 0x28);
        if (local_a70 != puVar17) {
          if (0xf < *(ulonglong *)(lVar2 + 0x40)) {
            puVar17 = (undefined8 *)*puVar17;
          }
          FUN_1805a6cb0(local_a70,puVar17,*(undefined8 *)(lVar2 + 0x38));
        }
        local_a38 = 0x100;
        if (local_b78 == lStack_b80) {
          FUN_1805b0190(&local_b88,lStack_b80,local_ac8);
        }
        else {
          FUN_1805b53c0(lStack_b80,local_ac8);
          lStack_b80 = lStack_b80 + 0xa8;
        }
        local_c58 = 0;
        FUN_18069bc20(*param_4,&local_b88,local_998,&local_ba8);
        if ((longlong)(lStack_ba0 - local_ba8) / 0x2f0 != 0) {
          FUN_1806bb800(*param_4,local_ba8,0,0x80000000);
          FUN_1805b8040(local_998);
          FUN_1805b7280(&local_ba8);
          FUN_1805b7ad0(local_ac8);
          FUN_1805b72a0(&local_b88);
          local_928 = pace::eden::thrift::pub::AuthSituation::vftable;
          FUN_1805b7720(local_4a8);
          FUN_1805b8780(local_918);
          FUN_180575f30(&local_c40);
          FUN_180575f30(param_3);
          FUN_1805a4e80(param_4);
        }
        FUN_1805b8040(local_998);
        FUN_1805b7280(&local_ba8);
        FUN_1805b7ad0(local_ac8);
        FUN_1805b72a0(&local_b88);
        bVar5 = true;
      }
      else if (local_c30 == lStack_c38) {
        FUN_1805b0450(&local_c40,lStack_c38,&local_928);
        bVar5 = true;
      }
      else {
        FUN_1805b5540(lStack_c38,&local_928);
        lStack_c38 = lStack_c38 + 0x8c0;
        bVar5 = true;
      }
    }
    local_928 = pace::eden::thrift::pub::AuthSituation::vftable;
    FUN_1805b7720(local_4a8);
    FUN_1805b8780(local_918);
  }
  if (param_2 != '\0') {
    local_c18 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_c18 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_c18,&DAT_181baf991);
    }
    puVar17 = (undefined8 *)FUN_1811316e0(0x18);
    local_c18 = puVar17;
    if (puVar17 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar17,"|__FILE__|%s|__LINE__|%d");
      *puVar17 = pace::PaceLocationInfoFormatter::vftable;
      puVar20 = puVar17;
    }
    local_c48[0] = 0x5a2;
    local_c28 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\licensecallbackhandler.cpp"
    ;
    uVar7 = FUN_1805a21d0(puVar20[1],&local_c28);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_c48);
  }
  local_9a8 = 0;
  local_9a0 = 0xf;
  local_9b8[0] = 0;
  FUN_1805a6cb0(local_9b8,"Authorization Required",0x16);
  pcVar8 = local_c20;
  local_b58 = 0;
  pcStack_b50 = (char *)0xf;
  local_b68[0] = (undefined8 *******)((ulonglong)local_b68[0] & 0xffffffffffffff00);
  if (local_c20[9] == '\0') {
    uVar7 = FUN_1805a3f20(local_ac8,
                          "Please insert an iLok with a license for %s and then press the \"OK\" button to continue using this product. Press \"Cancel\" to stop using this product."
                         );
    uVar7 = FUN_1805b2240(uVar7,pcVar8 + 0x10);
    FUN_1805ae640(uVar7,&local_be8);
    uVar19 = 2;
    FUN_180485450(local_b68);
  }
  else {
    uVar7 = FUN_1805a3f20(local_ac8,
                          "Please insert an iLok with a license for %s or activate a license for %s to your computer, and then press the \"OK\" button to continue using this product. Press \"Cancel\" to stop using this product."
                         );
    uVar7 = FUN_1805b2240(uVar7,pcVar8 + 0x10);
    uVar7 = FUN_1805b2240(uVar7,pcVar8 + 0x10);
    FUN_1805ae640(uVar7,&local_be8);
    uVar19 = 1;
    FUN_180485450(local_b68);
  }
  local_b68[0] = local_be8;
  local_b58 = local_bd8;
  pcStack_b50 = pcStack_bd0;
  FUN_1805a4fa0(local_ac8);
  if (pcVar8[8] != '\0') {
    if ((longlong)pcStack_b50 - local_b58 < 0x4a) {
      local_c58 = 0x4a;
      FUN_1805a1320(local_b68,0x4a,0,
                    "\n\nNote that this product is not compatible with the first-generation iLok.");
    }
    else {
      pppppppuVar10 = local_b68;
      if ((char *)0xf < pcStack_b50) {
        pppppppuVar10 = local_b68[0];
      }
      pvVar13 = (void *)((longlong)pppppppuVar10 + local_b58);
      local_b58 = local_b58 + 0x4a;
      memmove(pvVar13,"\n\nNote that this product is not compatible with the first-generation iLok."
              ,0x4a);
      *(undefined1 *)((longlong)pvVar13 + 0x4a) = 0;
    }
  }
  if ((lStack_c38 - local_c40) / 0x8c0 == 0) goto LAB_1805e6e41;
  local_b78 = 0;
  uStack_b70 = 0xf;
  local_b88 = (undefined8 *******)((ulonglong)local_b88 & 0xffffffffffffff00);
  local_ad8 = 0;
  local_ad0 = 0xf;
  local_ae8[0] = 0;
  local_af8 = 0;
  local_af0 = 0xf;
  local_b08[0] = 0;
  local_b98 = 0;
  local_b90 = 0xf;
  local_ba8 = local_ba8 & 0xffffffffffffff00;
  local_b18 = 0;
  local_b10 = 0xf;
  local_b28 = 0;
  pcVar8 = (char *)FUN_1806a68d0(*param_4);
  local_c20 = pcVar8;
  if ((*(ulonglong *)(local_c40 + 0x18) & (ulonglong)pcVar8) == 0) {
    FUN_1805a6cb0(local_ae8,&DAT_181bb21d4,4);
    FUN_1805a6cb0(local_b08,&DAT_181bb21dc,4);
  }
  else {
    FUN_1805a6cb0(&local_b88,"iLok Server",0xb);
    FUN_1805a6cb0(local_ae8,&DAT_181bb2154,3);
    FUN_1805a6cb0(local_b08,&DAT_181bb2158,3);
    FUN_1805a6cb0(&local_ba8,"Please contact the iLok Server\'s administrator for help.",0x38);
    lVar12 = local_c40;
    if (*(char *)(local_c40 + 0x450) != '\0') {
      puVar20 = (undefined8 *)(local_c40 + 0x58);
      if (*(longlong *)(local_c40 + 0x68) != 0) {
        local_bb8 = 0;
        uStack_bb0 = 0xf;
        local_bc8[0]._0_1_ = 0;
        local_c48[0] = uVar19 | 4;
        psVar1 = (size_t *)(local_c40 + 0x68);
        uVar11 = *psVar1 + 2;
        if (0xf < uVar11) {
          FUN_1805a14a0(local_bc8,uVar11,0);
        }
        local_bb8 = 0;
        if (uStack_bb0 < 2) {
          local_c58 = 2;
          FUN_1805a1320(local_bc8,2,0,&DAT_181bb1ee0);
        }
        else {
          local_bb8 = 2;
          puVar14 = (undefined1 *)local_bc8;
          if (0xf < uStack_bb0) {
            puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          }
          memmove(puVar14,&DAT_181bb1ee0,2);
          puVar14[2] = 0;
        }
        if (0xf < *(ulonglong *)(lVar12 + 0x70)) {
          puVar20 = (undefined8 *)*puVar20;
        }
        sVar3 = *psVar1;
        if (uStack_bb0 - local_bb8 < sVar3) {
          local_c58 = sVar3;
          FUN_1805a1320(local_bc8,sVar3,0,puVar20);
        }
        else {
          puVar14 = (undefined1 *)local_bc8;
          if (0xf < uStack_bb0) {
            puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          }
          puVar14 = puVar14 + local_bb8;
          local_bb8 = local_bb8 + sVar3;
          memmove(puVar14,puVar20,sVar3);
          puVar14[sVar3] = 0;
        }
        if (uStack_bb0 == local_bb8) {
          local_c58 = 1;
          plVar9 = (longlong *)FUN_1805a1320(local_bc8,1,0,&DAT_181bb1ed8);
        }
        else {
          puVar14 = (undefined1 *)local_bc8;
          if (0xf < uStack_bb0) {
            puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          }
          puVar14 = puVar14 + local_bb8;
          local_bb8 = local_bb8 + 1;
          memmove(puVar14,&DAT_181bb1ed8,1);
          puVar14[1] = 0;
          plVar9 = local_bc8;
        }
        pppppppuVar10 = (undefined8 *******)*plVar9;
        lStack_be0 = plVar9[1];
        uVar11 = plVar9[2];
        local_c28 = (char *)plVar9[3];
        plVar9[2] = 0;
        plVar9[3] = 0xf;
        *(undefined1 *)plVar9 = 0;
        local_c48[0] = uVar19 | 0xc;
        pppppppuVar18 = &local_be8;
        if ((char *)0xf < local_c28) {
          pppppppuVar18 = pppppppuVar10;
        }
        local_be8 = pppppppuVar10;
        local_bd8 = uVar11;
        pcStack_bd0 = local_c28;
        if (uStack_b70 - local_b78 < uVar11) {
          local_c58 = uVar11;
          FUN_1805a1320(&local_b88,uVar11,0);
          pcVar8 = pcStack_bd0;
          pppppppuVar10 = local_be8;
        }
        else {
          pppppppuVar15 = &local_b88;
          if (0xf < uStack_b70) {
            pppppppuVar15 = local_b88;
          }
          pvVar13 = (void *)((longlong)pppppppuVar15 + local_b78);
          local_b78 = local_b78 + uVar11;
          memmove(pvVar13,pppppppuVar18,uVar11);
          *(undefined1 *)((longlong)pvVar13 + uVar11) = 0;
          pcVar8 = local_c28;
        }
        if ((char *)0xf < pcVar8) {
          pppppppuVar18 = pppppppuVar10;
          if (((char *)0xfff < pcVar8 + 1) &&
             (pppppppuVar18 = (undefined8 *******)pppppppuVar10[-1],
             0x1f < (ulonglong)((longlong)pppppppuVar10 + (-8 - (longlong)pppppppuVar18)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pppppppuVar18);
        }
        uVar19 = uVar19 | 8;
        if (0xf < uStack_bb0) {
          pvVar4 = (void *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          pvVar13 = pvVar4;
          if ((0xfff < uStack_bb0 + 1) &&
             (pvVar13 = *(void **)((longlong)pvVar4 + -8),
             0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar13)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar13);
        }
      }
      lVar12 = local_c40;
      puVar20 = (undefined8 *)(local_c40 + 0x128);
      pcVar8 = local_c20;
      if (*(longlong *)(local_c40 + 0x138) != 0) {
        local_bb8 = 0;
        uStack_bb0 = 0xf;
        local_bc8[0]._0_1_ = 0;
        local_c48[0] = uVar19 | 0x10;
        psVar1 = (size_t *)(local_c40 + 0x138);
        uVar11 = *psVar1 + 8;
        if (0xf < uVar11) {
          FUN_1805a14a0(local_bc8,uVar11,0);
        }
        local_bb8 = 0;
        if (uStack_bb0 < 8) {
          local_c58 = 8;
          FUN_1805a1320(local_bc8,8,0," (Name: ");
        }
        else {
          local_bb8 = 8;
          puVar14 = (undefined1 *)local_bc8;
          if (0xf < uStack_bb0) {
            puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          }
          memmove(puVar14," (Name: ",8);
          puVar14[8] = 0;
        }
        if (0xf < *(ulonglong *)(lVar12 + 0x140)) {
          puVar20 = (undefined8 *)*puVar20;
        }
        sVar3 = *psVar1;
        if (uStack_bb0 - local_bb8 < sVar3) {
          local_c58 = sVar3;
          FUN_1805a1320(local_bc8,sVar3,0,puVar20);
        }
        else {
          puVar14 = (undefined1 *)local_bc8;
          if (0xf < uStack_bb0) {
            puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          }
          puVar14 = puVar14 + local_bb8;
          local_bb8 = local_bb8 + sVar3;
          memmove(puVar14,puVar20,sVar3);
          puVar14[sVar3] = 0;
        }
        uVar11 = local_bb8;
        puVar14 = (undefined1 *)local_bc8;
        if (0xf < uStack_bb0) {
          puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
        }
        if (local_b10 - local_b18 < local_bb8) {
          local_c58 = local_bb8;
          FUN_1805a1320(&local_b28,local_bb8,0);
        }
        else {
          puVar16 = &local_b28;
          if (0xf < local_b10) {
            puVar16 = (undefined1 *)CONCAT71(uStack_b27,local_b28);
          }
          puVar16 = puVar16 + local_b18;
          local_b18 = local_b18 + local_bb8;
          memmove(puVar16,puVar14,local_bb8);
          puVar16[uVar11] = 0;
        }
        lVar12 = local_c40;
        if (0xf < uStack_bb0) {
          pvVar4 = (void *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          pvVar13 = pvVar4;
          if ((0xfff < uStack_bb0 + 1) &&
             (pvVar13 = *(void **)((longlong)pvVar4 + -8),
             0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar13)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar13);
        }
        puVar20 = (undefined8 *)(local_c40 + 0x148);
        local_bb8 = 0;
        uStack_bb0 = 0xf;
        local_bc8[0]._0_1_ = 0;
        local_c48[0] = uVar19 | 0x20;
        plVar9 = (longlong *)(local_c40 + 0x158);
        uVar11 = *plVar9 + 9;
        if (0xf < uVar11) {
          FUN_1805a14a0(local_bc8,uVar11,0);
        }
        local_bb8 = 0;
        if (uStack_bb0 < 9) {
          local_c58 = 9;
          FUN_1805a1320(local_bc8,9,0,", Phone: ");
        }
        else {
          local_bb8 = 9;
          puVar14 = (undefined1 *)local_bc8;
          if (0xf < uStack_bb0) {
            puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
          }
          memmove(puVar14,", Phone: ",9);
          puVar14[9] = 0;
        }
        if (0xf < *(ulonglong *)(lVar12 + 0x160)) {
          puVar20 = (undefined8 *)*puVar20;
        }
        FUN_1805a6a80(local_bc8,puVar20,*plVar9);
        puVar14 = (undefined1 *)local_bc8;
        if (0xf < uStack_bb0) {
          puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
        }
        FUN_1805a6a80(&local_b28,puVar14,local_bb8);
        FUN_180485450(local_bc8);
        uVar7 = FUN_1805af050(local_b48,", Email: ",local_c40 + 0x168);
        plVar9 = (longlong *)FUN_1805a6a80(uVar7,&DAT_181bb1ed8,1);
        local_be8 = (undefined8 *******)*plVar9;
        lStack_be0 = plVar9[1];
        local_bd8 = plVar9[2];
        pcStack_bd0 = (char *)plVar9[3];
        plVar9[2] = 0;
        plVar9[3] = 0xf;
        *(undefined1 *)plVar9 = 0;
        uVar19 = uVar19 | 0x40;
        pppppppuVar10 = &local_be8;
        if ((char *)0xf < pcStack_bd0) {
          pppppppuVar10 = local_be8;
        }
        FUN_1805a6a80(&local_b28,pppppppuVar10,local_bd8);
        FUN_180485450(&local_be8);
        FUN_180485450(local_b48);
        puVar14 = &local_b28;
        if (0xf < local_b10) {
          puVar14 = (undefined1 *)CONCAT71(uStack_b27,local_b28);
        }
        FUN_1805a6a80(&local_ba8,puVar14,local_b18);
        pcVar8 = local_c20;
      }
    }
    FUN_1805a6a80(&local_ba8,&DAT_181bb1edc,1);
  }
  lVar12 = local_c40;
  uVar11 = FUN_1806a4f70(*param_4);
  lVar2 = local_c40;
  if ((*(ulonglong *)(lVar12 + 0x18) & uVar11) == 0) {
    uVar11 = FUN_1806a7ae0(*param_4);
    if ((*(ulonglong *)(lVar2 + 0x18) & uVar11) == 0) {
      FUN_1805a6cb0(&local_b88,"license location with the serial number ",0x28);
      if (*(longlong *)(local_c40 + 0x38) == 0) {
        uVar7 = FUN_1805a3f20(local_ac8,&DAT_181bb2264);
        uVar7 = FUN_1805b23b0(uVar7,local_c40 + 0x20);
        FUN_1805ae640(uVar7,&local_be8);
        uVar19 = uVar19 | 0x400;
        pppppppuVar10 = &local_be8;
        if ((char *)0xf < pcStack_bd0) {
          pppppppuVar10 = local_be8;
        }
        FUN_1805a6a80(&local_b88,pppppppuVar10,local_bd8);
        FUN_180485450(&local_be8);
      }
      else {
        uVar7 = FUN_1805a3f20(local_ac8,&DAT_181bb2268);
        uVar7 = FUN_1805b2240(uVar7,local_c40 + 0x28);
        FUN_1805ae640(uVar7,&local_be8);
        uVar19 = uVar19 | 0x800;
        pppppppuVar10 = &local_be8;
        if ((char *)0xf < pcStack_bd0) {
          pppppppuVar10 = local_be8;
        }
        FUN_1805a6a80(&local_b88,pppppppuVar10,local_bd8);
        FUN_180485450(&local_be8);
      }
      FUN_1805a4fa0(local_ac8);
    }
    else if ((*(ulonglong *)(local_c40 + 0x18) & (ulonglong)pcVar8) == 0) {
      FUN_1805a6cb0(&local_b88,"computer",8);
    }
  }
  else {
    uVar7 = FUN_1805a3f20(local_ac8,"iLok (serial number %X)");
    uVar7 = FUN_1805b23b0(uVar7,local_c40 + 0x20);
    FUN_1805ae640(uVar7,local_bc8);
    FUN_1805a4fa0(local_ac8);
    uVar11 = local_bb8;
    if ((*(ulonglong *)(local_c40 + 0x18) & (ulonglong)pcVar8) == 0) {
      puVar14 = (undefined1 *)local_bc8;
      if (0xf < uStack_bb0) {
        puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
      }
      FUN_1805a6cb0(&local_b88,puVar14,local_bb8);
      uVar19 = uVar19 | 0x80;
    }
    else {
      local_b38 = 0;
      local_b30 = 0xf;
      local_b48[0]._0_1_ = 0;
      local_c48[0] = uVar19 | 0x180;
      if (0xf < local_bb8 + 8) {
        FUN_1805a14a0(local_b48,local_bb8 + 8,0);
      }
      local_b38 = 0;
      puVar14 = (undefined1 *)local_bc8;
      if (0xf < uStack_bb0) {
        puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
      }
      FUN_1805a6a80(local_b48,puVar14,uVar11);
      FUN_1805a6a80(local_b48," on the ",8);
      pppppppuVar10 = &local_b88;
      if (0xf < uStack_b70) {
        pppppppuVar10 = local_b88;
      }
      plVar9 = (longlong *)FUN_1805a6a80(local_b48,pppppppuVar10,local_b78);
      pppppppuVar10 = (undefined8 *******)*plVar9;
      lVar12 = plVar9[1];
      lVar2 = plVar9[2];
      uVar11 = plVar9[3];
      plVar9[2] = 0;
      plVar9[3] = 0xf;
      *(undefined1 *)plVar9 = 0;
      local_be8 = pppppppuVar10;
      lStack_be0 = lVar12;
      local_bd8 = lVar2;
      pcStack_bd0 = (char *)uVar11;
      FUN_180485450(&local_b88);
      local_bd8 = 0;
      pcStack_bd0 = (char *)0xf;
      local_be8 = (undefined8 *******)((ulonglong)local_be8 & 0xffffffffffffff00);
      local_b88 = pppppppuVar10;
      lStack_b80 = lVar12;
      local_b78 = lVar2;
      uStack_b70 = uVar11;
      FUN_180485450(&local_be8);
      FUN_180485450(local_b48);
      uVar19 = uVar19 | 0x280;
    }
    FUN_180485450(local_bc8);
  }
  FUN_1805a6a80(local_b68,"\n\nProblem Found: ",0x11);
  switch(*(undefined4 *)(local_c40 + 8)) {
  case 0:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Please launch the ILok License Manager app, which will automatically refresh this license."
                    ,0x5a);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s has an expired Lost or Stolen license. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 1:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,"Please contact support at www.ilok.com to find out why.",0x37);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"The licenses on %s %s cannot be used. %s");
    uVar7 = FUN_1805b2240(uVar7,local_ae8);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 2:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Please disconnect and reconnect this device when switching to another OS/Computer."
                    ,0x52);
    }
    uVar7 = FUN_1805a3f20(local_ac8,
                          "The licenses on %s %s cannot be shared across multiple operating systems or computers. %s"
                         );
    uVar7 = FUN_1805b2240(uVar7,local_ae8);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 3:
  case 7:
  case 8:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Launch the ILok License Manager app, which will automatically fix your database."
                    ,0x50);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s database needs updating. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 4:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Please launch the ILok License Manager app, which will automatically refresh this license if allowed by the publisher."
                    ,0x76);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s has an expired NFR (Not for Resale) license. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 5:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Please correct your computer clock, then launch the ILok License Manager app and sign in.  For an iLok, right-click on the iLok\'s icon, and select Synchonize."
                    ,0x9e);
    }
    uVar7 = FUN_1805a3f20(local_ac8,
                          "%s computer clock for %s %s appears to have been turned backward. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,local_ae8);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 6:
    local_bb8 = 0;
    uStack_bb0 = 0xf;
    local_bc8[0]._0_1_ = 0;
    FUN_1805a6cb0(local_bc8,
                  "lease go to iLok.com and download and install the latest License Support.",0x49);
    uVar11 = local_bb8;
    if (local_b98 == 0) {
      local_b38 = 0;
      local_b30 = 0xf;
      local_b48[0]._0_1_ = 0;
      local_c48[0] = uVar19 | 0x40000;
      if (0xf < local_bb8 + 1) {
        FUN_1805a14a0(local_b48,local_bb8 + 1,0);
      }
      local_b38 = 0;
      FUN_1805a6a80(local_b48,&DAT_181bb2714,1);
      puVar14 = (undefined1 *)local_bc8;
      if (0xf < uStack_bb0) {
        puVar14 = (undefined1 *)CONCAT71(local_bc8[0]._1_7_,(undefined1)local_bc8[0]);
      }
      FUN_1805a6a80(local_b48,puVar14,uVar11);
      FUN_1805a5a40(&local_ba8,local_b48);
      pppppppuVar10 = local_b48;
    }
    else {
      puVar17 = (undefined8 *)FUN_1805af050(&local_be8," Also, p",local_bc8);
      puVar20 = puVar17;
      if (0xf < (ulonglong)puVar17[3]) {
        puVar20 = (undefined8 *)*puVar17;
      }
      FUN_1805a6a80(&local_ba8,puVar20,puVar17[2]);
      pppppppuVar10 = &local_be8;
    }
    FUN_180485450(pppppppuVar10);
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s has an old version of License Support. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    FUN_1805a4fa0(local_ac8);
    FUN_180485450(local_bc8);
    goto switchD_1805e61e1_caseD_f;
  case 9:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Please launch the ILok License Manager app and use it to refresh this license."
                    ,0x4e);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s has an expired subscription license. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 10:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,"Please contact the iLok Server\'s administrator for help.",0x38);
    }
    uVar7 = FUN_1805a3f20(local_ac8,
                          "%s %s is offline. This could be why a valid license cannot be found. %s")
    ;
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 0xb:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,"Please contact the iLok Server\'s administrator for help.",0x38);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s has an expired license. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 0xc:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,"Please contact the iLok Server\'s administrator for help.",0x38);
    }
    uVar7 = FUN_1805a3f20(local_ac8,
                          "%s %s requires a password to access. This could be why a valid license cannot be found. %s"
                         );
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 0xd:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,"Please contact the iLok Server\'s administrator for help.",0x38);
    }
    uVar7 = FUN_1805a3f20(local_ac8,
                          "%s %s requires information that is not set in your iLok Server client settings. This could be why a valid license cannot be found. %s"
                         );
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  case 0xe:
    uVar7 = FUN_1805af050(local_b48,
                          "If leases are often not available, please contact the iLok Server\'s administrator"
                          ,&local_b28);
    plVar9 = (longlong *)FUN_1805a6a80(uVar7,&DAT_181bb1edc,1);
    local_be8 = (undefined8 *******)*plVar9;
    lStack_be0 = plVar9[1];
    local_bd8 = plVar9[2];
    pcStack_bd0 = (char *)plVar9[3];
    plVar9[2] = 0;
    plVar9[3] = 0xf;
    *(undefined1 *)plVar9 = 0;
    FUN_1805a5a40(&local_ba8,&local_be8);
    FUN_180485450(&local_be8);
    FUN_180485450(local_b48);
    uVar7 = FUN_1805a3f20(local_ac8,
                          "All of the leases for the shared license on %s %s are in use by others. When someone stops using this shared license, a lease for this shared license will become available for use, and then you should be able to run this product at that time. Please try again later. %s"
                         );
    uVar7 = FUN_1805b2240(uVar7,local_ae8);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
    break;
  default:
    goto switchD_1805e61e1_caseD_f;
  case 0x10:
    if (local_b98 == 0) {
      FUN_1805a6cb0(&local_ba8,
                    "Please launch the ILok License Manager app.  The firmware will be updated if you activate or deactivate any license on the iLok or if you right-click on the iLok icon and select Synchonize."
                    ,0xbd);
    }
    uVar7 = FUN_1805a3f20(local_ac8,"%s %s needs a firmware update. %s");
    uVar7 = FUN_1805b2240(uVar7,local_b08);
    uVar7 = FUN_1805b2240(uVar7,&local_b88);
    uVar7 = FUN_1805b2240(uVar7,&local_ba8);
    FUN_1805ae640(uVar7,&local_be8);
    pppppppuVar10 = &local_be8;
    if ((char *)0xf < pcStack_bd0) {
      pppppppuVar10 = local_be8;
    }
    FUN_1805a6a80(local_b68,pppppppuVar10,local_bd8);
    FUN_180485450(&local_be8);
  }
  FUN_1805a4fa0(local_ac8);
switchD_1805e61e1_caseD_f:
  FUN_180485450(&local_b28);
  FUN_180485450(&local_ba8);
  FUN_180485450(local_b08);
  FUN_180485450(local_ae8);
  FUN_180485450(&local_b88);
LAB_1805e6e41:
  local_c50 = 0;
  local_c58 = CONCAT71(local_c58._1_7_,1);
  iVar6 = FUN_1805f02b0(local_9b8,local_b68,0,1);
  if (iVar6 != 2) {
    FUN_180485450(local_b68);
    FUN_180485450(local_9b8);
    FUN_180575f30(&local_c40);
    FUN_180575f30(param_3);
    FUN_1805a4e80(param_4);
  }
  local_c18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_c18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_c18,&DAT_181baf991);
  }
  lVar12 = FUN_1805c0260();
  local_c48[0] = 0x724;
  local_c28 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\licensecallbackhandler.cpp"
  ;
  uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_c28);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar7,local_c48);
}



############ FUN_ 1805eb269 size=1747 ############

/* WARNING: Instruction at (ram,0x0001805eb6a2) overlaps instruction at (ram,0x0001805eb69f)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001805eb86b) */
/* WARNING: Removing unreachable block (ram,0x0001805eb69f) */
/* WARNING: Removing unreachable block (ram,0x0001805eb25f) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_1805eb269(undefined8 param_1,undefined8 param_2,longlong param_3,undefined8 param_4,
                  undefined8 param_5,int param_6,int param_7,undefined8 param_8,undefined4 param_9,
                  undefined8 param_10,int param_11)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined1 *puVar4;
  undefined8 *puVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  longlong lVar10;
  uint unaff_EBX;
  longlong lVar11;
  undefined1 *puVar12;
  longlong unaff_RBP;
  longlong unaff_RSI;
  int *unaff_RDI;
  undefined8 in_R10;
  longlong *unaff_R12;
  longlong *unaff_R14;
  
  FUN_1805eae1c();
  uVar6 = (*unaff_RDI + 1) * *unaff_RDI & 0x80000001;
  if ((int)uVar6 < 0) {
    uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
  }
  if (uVar6 != 0) {
    FUN_1805eb269();
    return;
  }
  uVar6 = *(uint *)(unaff_RSI + 0x48);
  uVar9 = *(uint *)(unaff_RSI + 0x4c);
  uVar2 = *(uint *)(unaff_RSI + 0x50);
  do {
    uVar7 = (*unaff_RDI + 1) * *unaff_RDI & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = *(uint *)(unaff_RSI + 0x54);
  *(longlong **)(unaff_RBP + -0x78) = unaff_R12;
  lVar10 = unaff_R12[1];
  iVar3 = *(int *)(unaff_RBP + 0xb0);
  for (lVar11 = *unaff_R12; lVar11 != lVar10; lVar11 = lVar11 + 0x40) {
    if (((param_6 == 0) || (param_6 == *(int *)(lVar11 + 8))) &&
       ((iVar3 == 0 || (iVar3 == *(int *)(lVar11 + 0xc))))) {
      FUN_1805b5490(unaff_RBP + -0x70);
      *(undefined4 *)(unaff_RBP + -0x68) = *(undefined4 *)(lVar11 + 8);
      *(undefined4 *)(unaff_RBP + -100) = *(undefined4 *)(lVar11 + 0xc);
      *(undefined1 *)(unaff_RBP + -0x60) = *(undefined1 *)(lVar11 + 0x10);
      *(undefined4 *)(unaff_RBP + -0x28) = param_9;
      if (unaff_R14[2] == unaff_R14[1]) {
        param_3 = unaff_RBP + -0x70;
        FUN_1805b0190();
      }
      else {
        FUN_1805b53c0();
        unaff_R14[1] = unaff_R14[1] + 0xa8;
      }
      FUN_1805b7ad0(unaff_RBP + -0x70);
    }
  }
  lVar11 = (longlong)param_7;
  piVar1 = (int *)(unaff_RBP + 0x88);
  do {
    uVar8 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar6 = ~((*(uint *)(unaff_RSI + 0xec) ^
            (*(uint *)(unaff_RSI + 0xe8) ^
            (*(uint *)(unaff_RSI + 0xe4) ^
            (*(uint *)(unaff_RSI + 0xe0) ^
            (*(uint *)(unaff_RSI + 0xdc) ^
            (*(uint *)(unaff_RSI + 0xd8) ^
            (*(uint *)(unaff_RSI + 0xd4) ^
            (*(uint *)(unaff_RSI + 0xd0) ^
            (*(uint *)(unaff_RSI + 0xcc) ^
            (*(uint *)(unaff_RSI + 200) ^
            (*(uint *)(unaff_RSI + 0xc4) ^
            (*(uint *)(unaff_RSI + 0xc0) ^
            (*(uint *)(unaff_RSI + 0xbc) ^
            (*(uint *)(unaff_RSI + 0xb8) ^
            (*(uint *)(unaff_RSI + 0xb4) ^
            (*(uint *)(unaff_RSI + 0xb0) ^
            (*(uint *)(unaff_RSI + 0xac) ^
            (*(uint *)(unaff_RSI + 0xa8) ^
            (*(uint *)(unaff_RSI + 0xa4) ^
            (*(uint *)(unaff_RSI + 0xa0) ^
            (*(uint *)(unaff_RSI + 0x9c) ^
            (*(uint *)(unaff_RSI + 0x98) ^
            (*(uint *)(unaff_RSI + 0x94) ^
            (*(uint *)(unaff_RSI + 0x90) ^
            (*(uint *)(unaff_RSI + 0x8c) ^
            (*(uint *)(unaff_RSI + 0x88) ^
            (*(uint *)(unaff_RSI + 0x84) ^
            (*(uint *)(unaff_RSI + 0x80) ^
            (*(uint *)(unaff_RSI + 0x7c) ^
            (*(uint *)(unaff_RSI + 0x78) ^
            (*(uint *)(unaff_RSI + 0x74) ^
            (*(uint *)(unaff_RSI + 0x70) ^
            (*(uint *)(unaff_RSI + 0x6c) ^
            (*(uint *)(unaff_RSI + 0x68) ^
            (*(uint *)(unaff_RSI + 100) ^
            (*(uint *)(unaff_RSI + 0x60) ^
            (*(uint *)(unaff_RSI + 0x5c) ^
            (*(uint *)(unaff_RSI + 0x58) ^
            (uVar7 ^ (uVar2 ^ (uVar9 ^ (uVar6 ^ unaff_EBX) * 0x1000181) * 0x1000181) * 0x1000181) *
            0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
            * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
            0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
            * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
            0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
            * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) +
          0x23a5cdd4;
  do {
    uVar9 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    uVar9 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar10 = unaff_R14[1] - *unaff_R14;
  if (((uVar6 >> 0x1a | uVar6 * 0x40) + 0x75e228eb) * 0x2a == 0) {
    lVar10 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lVar10),8) + lVar10;
    if (lVar10 >> 7 == lVar10 >> 0x3f) {
      lVar11 = FUN_1811316e0(0x18);
      if (lVar11 == 0) {
        lVar11 = 0;
      }
      else {
        lVar11 = FUN_1805a48c0(lVar11,
                               "The generated license data has no products or has no product(s) matching the authId %08X (if nonzero) and productId %08X (if nonzero)"
                              );
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      if (puVar5 != (undefined8 *)0x0) {
        FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
        *puVar5 = pace::PaceLocationInfoFormatter::vftable;
      }
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar11 + 8),&param_6);
    }
    puVar4 = (undefined1 *)register0x00000020;
    do {
      puVar12 = puVar4;
      *(undefined8 *)(puVar12 + -8) = in_R10;
      *(longlong *)(puVar12 + -0x10) = lVar11;
      *(undefined8 *)(puVar12 + -0x18) = param_4;
      lVar10 = -(longlong)param_11;
      param_4 = *(undefined8 *)(puVar12 + lVar10 + 0x7b8);
      lVar11 = *(longlong *)(puVar12 + lVar10 + 0x7c0);
      in_R10 = *(undefined8 *)(puVar12 + lVar10 + 0x7c8);
      uVar6 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
      puVar4 = puVar12 + lVar10 + 2000;
    } while (uVar6 != 0);
    *(undefined **)(puVar12 + lVar10 + 0x7c8) = &UNK_1805eba7d;
  }
  lVar10 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lVar10),8) + lVar10;
  if (lVar10 >> 7 != lVar10 >> 0x3f) {
    lVar11 = FUN_1811316e0(0x18);
    if (lVar11 == 0) {
      lVar11 = 0;
    }
    else {
      lVar11 = FUN_1805a48c0(lVar11,
                             "The generated license data has no products or has no product(s) matching the authId %08X (if nonzero) and productId %08X (if nonzero)"
                            );
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar5 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar11 + 8),&param_6);
  }
  FUN_1805ea4e5(lVar11,0,param_3);
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 1805f15c0 size=97 ############

undefined8 * FUN_1805f15c0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::ExceptionInfoWrapper>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805f2d20 size=227 ############

longlong FUN_1805f2d20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x68);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[10] = &DAT_181bb5798;
    puVar1[0xc] = boost::exception_detail::clone_base::vftable;
    FUN_1805f1b50(puVar1,param_1 + -0x60,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast>_>::
              vftable;
    puVar1[5] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[10] + 4) + 0x50 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::bad_lexical_cast>_>::vftable
    ;
    *(int *)((longlong)*(int *)(puVar1[10] + 4) + 0x4c + (longlong)puVar1) =
         *(int *)(puVar1[10] + 4) + -0x10;
    if (param_1 + -0x60 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 5,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[10] + 4) + 0x50;
}



############ FUN_ 1805f2f20 size=4902 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f2f20(longlong *param_1,longlong *param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  char *pcVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  void *pvVar7;
  ulonglong uVar8;
  longlong lVar9;
  longlong *plVar10;
  longlong lVar11;
  undefined8 uVar12;
  undefined4 *puVar13;
  undefined1 *puVar14;
  uint *puVar15;
  longlong *plVar16;
  int iVar17;
  void *pvVar18;
  uint uVar19;
  uint *puVar20;
  longlong lVar21;
  longlong lVar22;
  undefined1 auStack_638 [32];
  undefined8 local_618;
  undefined1 local_608;
  uint local_604;
  longlong local_600;
  longlong *plStack_5f8;
  undefined8 local_5f0;
  undefined8 uStack_5e8;
  undefined4 local_5e0;
  longlong *local_5d8;
  longlong *local_5d0;
  undefined8 local_5c8;
  longlong local_5c0;
  undefined **local_5b8;
  code *local_5b0;
  undefined ***local_5a8;
  undefined8 local_5a0;
  longlong local_598;
  undefined **local_588;
  undefined **local_580;
  undefined8 local_578;
  undefined8 local_570;
  longlong local_568;
  undefined **local_560;
  undefined **local_558;
  undefined8 local_550;
  undefined8 local_548;
  undefined1 local_540 [440];
  char *local_388;
  undefined ***local_380;
  undefined1 local_378;
  undefined7 uStack_377;
  undefined8 local_368;
  ulonglong local_360;
  uint local_358;
  undefined4 uStack_354;
  undefined4 uStack_350;
  undefined4 uStack_34c;
  longlong local_348;
  longlong *plStack_340;
  uint local_338;
  uint uStack_334;
  uint uStack_330;
  uint uStack_32c;
  undefined8 local_328;
  ulonglong uStack_320;
  uint local_318;
  uint uStack_314;
  uint uStack_310;
  uint uStack_30c;
  undefined8 local_308;
  ulonglong uStack_300;
  uint local_2f8;
  uint uStack_2f4;
  uint uStack_2f0;
  uint uStack_2ec;
  undefined8 local_2e8;
  ulonglong uStack_2e0;
  undefined1 local_2d8;
  undefined7 uStack_2d7;
  undefined8 local_2c8;
  ulonglong local_2c0;
  undefined1 local_2b8;
  undefined7 uStack_2b7;
  undefined8 local_2a8;
  ulonglong local_2a0;
  undefined1 local_298;
  undefined7 uStack_297;
  undefined8 local_288;
  ulonglong local_280;
  undefined1 local_278;
  undefined7 uStack_277;
  undefined8 local_268;
  ulonglong local_260;
  undefined1 local_258;
  undefined7 uStack_257;
  undefined8 local_248;
  ulonglong local_240;
  undefined1 local_238;
  undefined7 uStack_237;
  undefined8 local_228;
  ulonglong local_220;
  undefined1 local_218;
  undefined7 uStack_217;
  undefined8 local_208;
  ulonglong local_200;
  undefined1 local_1f8;
  undefined7 uStack_1f7;
  undefined8 local_1e8;
  ulonglong local_1e0;
  undefined1 local_1d8;
  undefined7 uStack_1d7;
  undefined8 local_1c8;
  ulonglong local_1c0;
  undefined4 local_1b8;
  undefined4 uStack_1b4;
  undefined4 uStack_1b0;
  undefined4 uStack_1ac;
  undefined8 local_1a8;
  undefined8 uStack_1a0;
  undefined1 local_198 [16];
  undefined8 local_188;
  undefined8 local_180;
  undefined1 local_178;
  undefined7 uStack_177;
  undefined8 local_168;
  ulonglong local_160;
  undefined1 local_158;
  undefined7 uStack_157;
  undefined8 local_148;
  ulonglong local_140;
  undefined1 local_138;
  undefined7 uStack_137;
  undefined8 local_128;
  ulonglong local_120;
  undefined1 local_118;
  undefined7 uStack_117;
  undefined8 local_108;
  ulonglong local_100;
  undefined4 local_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined1 local_d8 [16];
  undefined8 local_c8;
  undefined8 local_c0;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined1 local_78 [52];
  undefined1 local_44 [4];
  ulonglong local_40;
  
  local_5a0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_638;
  lVar11 = 0;
  local_5e0 = 0;
  local_604 = (uint)local_40 & 0xffffff00;
  local_608 = 0;
  *(undefined4 *)(param_1 + 1) = 0xc;
  plVar16 = param_1 + 2;
  param_1[4] = 0;
  plVar10 = plVar16;
  if (0xf < (ulonglong)param_1[5]) {
    plVar10 = (longlong *)*plVar16;
  }
  *(undefined1 *)plVar10 = 0;
  plVar10 = param_1 + 6;
  param_1[8] = 0;
  if (0xf < (ulonglong)param_1[9]) {
    plVar10 = (longlong *)*plVar10;
  }
  *(undefined1 *)plVar10 = 0;
  param_1[0xb] = 0;
  plVar10 = (longlong *)param_1[0xc];
  param_1[0xc] = 0;
  lVar21 = -1;
  local_5d8 = param_1;
  local_5d0 = param_2;
  local_5c8 = param_3;
  if (plVar10 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar10 + 1;
    lVar9 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*plVar10 + 8))(plVar10);
      LOCK();
      piVar2 = (int *)((longlong)plVar10 + 0xc);
      iVar4 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)(*plVar10 + 0x10))(plVar10);
      }
    }
  }
  param_1[0xd] = 0;
  plVar10 = (longlong *)param_1[0xe];
  param_1[0xe] = 0;
  if (plVar10 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar10 + 1;
    lVar9 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*plVar10 + 8))(plVar10);
      LOCK();
      piVar2 = (int *)((longlong)plVar10 + 0xc);
      iVar4 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)(*plVar10 + 0x10))(plVar10);
      }
    }
  }
  if (param_2 == (longlong *)0x0) {
    FUN_1805a6cb0(plVar16,"Unknown",7);
  }
  else {
    lVar9 = __RTtypeid(param_2);
    lVar9 = __std_type_info_name(lVar9 + 8,&DAT_182673010);
    local_208 = 0;
    local_200 = 0xf;
    local_218 = 0;
    lVar22 = -1;
    do {
      lVar22 = lVar22 + 1;
    } while (*(char *)(lVar9 + lVar22) != '\0');
    FUN_1805a6cb0(&local_218,lVar9);
    plVar10 = (longlong *)FUN_1807029f0(&local_1d8,&local_218);
    if (plVar16 != plVar10) {
      FUN_180485450(plVar16);
      uVar5 = *(undefined4 *)((longlong)plVar10 + 4);
      lVar9 = plVar10[1];
      uVar6 = *(undefined4 *)((longlong)plVar10 + 0xc);
      *(int *)plVar16 = (int)*plVar10;
      *(undefined4 *)((longlong)param_1 + 0x14) = uVar5;
      *(int *)(param_1 + 3) = (int)lVar9;
      *(undefined4 *)((longlong)param_1 + 0x1c) = uVar6;
      lVar9 = plVar10[3];
      param_1[4] = plVar10[2];
      param_1[5] = lVar9;
      plVar10[2] = 0;
      plVar10[3] = 0xf;
      *(undefined1 *)plVar10 = 0;
    }
    if (0xf < local_1c0) {
      pvVar7 = (void *)CONCAT71(uStack_1d7,local_1d8);
      pvVar18 = pvVar7;
      if ((0xfff < local_1c0 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar7 + -8),
         0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_1c8 = 0;
    local_1c0 = 0xf;
    local_1d8 = 0;
    if (0xf < local_200) {
      pvVar7 = (void *)CONCAT71(uStack_217,local_218);
      pvVar18 = pvVar7;
      if ((0xfff < local_200 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar7 + -8),
         0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_618 = (undefined1 *)((ulonglong)local_618._4_4_ << 0x20);
    lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                            &pace::PaceUtilMemoryAllocationError::RTTI_Type_Descriptor);
    if (lVar9 == 0) {
      local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
      plVar16 = (longlong *)
                __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                &pace::PaceException::RTTI_Type_Descriptor);
      if (plVar16 == (longlong *)0x0) {
        local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
        lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                &pace::eden::thrift::exception::PaceThriftExceptionWire::
                                 RTTI_Type_Descriptor);
        if (lVar9 == 0) {
          local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
          lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                  &apache::thrift::TException::RTTI_Type_Descriptor);
          if (lVar9 == 0) {
            local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
            lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                    &litesql::Except::RTTI_Type_Descriptor);
            if (lVar9 == 0) {
              local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
              lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                      &boost::filesystem::filesystem_error::RTTI_Type_Descriptor);
              if (lVar9 == 0) {
                local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
                lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                        &boost::system::system_error::RTTI_Type_Descriptor);
                if (lVar9 == 0) {
                  local_618 = (undefined1 *)((ulonglong)local_618 & 0xffffffff00000000);
                  lVar9 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                                          &std::bad_alloc::RTTI_Type_Descriptor);
                  *(uint *)(param_1 + 1) = 0xb - (uint)(lVar9 != 0);
                }
                else {
                  *(undefined4 *)(param_1 + 1) = 7;
                }
              }
              else {
                *(undefined4 *)(param_1 + 1) = 6;
              }
            }
            else {
              *(undefined4 *)(param_1 + 1) = 5;
            }
          }
          else {
            *(undefined4 *)(param_1 + 1) = 4;
          }
        }
        else {
          *(undefined4 *)(param_1 + 1) = 3;
        }
      }
      else {
        *(undefined4 *)(param_1 + 1) = 2;
        lVar9 = (**(code **)(*plVar16 + 0x10))(plVar16);
        local_600 = lVar9;
        FUN_1805cfa60(&plStack_5f8,lVar9);
        FUN_1805ae620(&local_600,lVar9,lVar9);
        local_598 = local_600;
        lVar9 = param_1[0xb];
        param_1[0xb] = local_600;
        plVar16 = (longlong *)param_1[0xc];
        param_1[0xc] = (longlong)plStack_5f8;
        local_600 = lVar9;
        plStack_5f8 = plVar16;
        if (plVar16 != (longlong *)0x0) {
          LOCK();
          plVar10 = plVar16 + 1;
          lVar9 = *plVar10;
          *(int *)plVar10 = (int)*plVar10 + -1;
          UNLOCK();
          if ((int)lVar9 == 1) {
            (**(code **)(*plVar16 + 8))(plVar16);
            LOCK();
            piVar2 = (int *)((longlong)plVar16 + 0xc);
            iVar4 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar4 == 1) {
              (**(code **)(*plVar16 + 0x10))(plVar16);
            }
          }
        }
      }
    }
    else {
      *(undefined4 *)(param_1 + 1) = 1;
    }
  }
  iVar4 = (int)param_1[1];
  if (iVar4 == 3) {
    local_618 = (undefined1 *)((ulonglong)local_618._4_4_ << 0x20);
    lVar21 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                             &pace::eden::thrift::exception::PaceThriftExceptionWire::
                              RTTI_Type_Descriptor);
    if (lVar21 != 0) {
      local_580 = pace::ThriftClassWrapperParentInfo::vftable;
      local_578 = 0;
      local_570 = 0;
      local_588 = pace::PaceThriftExceptionWireWrapper::vftable;
      pcVar3 = (char *)(lVar21 + 0x130);
      local_558 = pace::ThriftClassWrapperParentInfo::vftable;
      local_550 = 0;
      local_548 = 0;
      local_560 = pace::ThriftClassWrapperHolder<pace::ExceptionInfoWrapper>::vftable;
      local_5b8 = pace::ThriftClassWrapperParentInfo::vftable;
      local_5b0 = FUN_1805f4c00;
      local_5a8 = &local_560;
      local_568 = lVar21;
      FUN_1805f1c60(local_540,lVar21 + 0x38,&local_5b8);
      local_380 = &local_588;
      local_288 = 0;
      local_280 = 0xf;
      local_298 = 0;
      local_348 = 0;
      plStack_340 = (longlong *)0xf;
      local_358 = local_358 & 0xffffff00;
      local_388 = pcVar3;
      if (*pcVar3 != '\0') {
        local_5c0 = FUN_1811316e0(0x1b8);
        if (local_5c0 != 0) {
          lVar11 = FUN_1805f1e80(local_5c0,local_540);
        }
        local_5f0 = lVar11;
        FUN_1805f15c0(&uStack_5e8,lVar11);
        FUN_1805ae620(&local_5f0,lVar11,lVar11);
        local_5c0 = local_5f0;
        lVar11 = param_1[0xd];
        param_1[0xd] = local_5f0;
        plVar16 = (longlong *)param_1[0xe];
        param_1[0xe] = (longlong)uStack_5e8;
        local_5f0 = lVar11;
        uStack_5e8 = plVar16;
        if (plVar16 != (longlong *)0x0) {
          LOCK();
          plVar10 = plVar16 + 1;
          lVar11 = *plVar10;
          *(int *)plVar10 = (int)*plVar10 + -1;
          UNLOCK();
          if ((int)lVar11 == 1) {
            (**(code **)(*plVar16 + 8))(plVar16);
            LOCK();
            piVar2 = (int *)((longlong)plVar16 + 0xc);
            iVar4 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar4 == 1) {
              (**(code **)(*plVar16 + 0x10))(plVar16);
            }
          }
        }
        plVar16 = *(longlong **)(param_1[0xd] + 0x78);
        if ((longlong *)&local_298 != plVar16) {
          plVar10 = plVar16;
          if (0xf < (ulonglong)plVar16[3]) {
            plVar10 = (longlong *)*plVar16;
          }
          FUN_1805a6cb0(&local_298,plVar10,plVar16[2]);
        }
        if (**(char **)(param_1[0xd] + 0x1a8) == '\0') {
          puVar15 = *(uint **)(param_1[0xd] + 0x98);
          if (&local_358 != puVar15) {
            puVar20 = puVar15;
            if (0xf < *(ulonglong *)(puVar15 + 6)) {
              puVar20 = *(uint **)puVar15;
            }
            FUN_1805a6cb0(&local_358,puVar20,*(longlong *)(puVar15 + 4));
          }
        }
        else {
          local_1e8 = 0;
          local_1e0 = 0xf;
          local_1f8 = 0;
          FUN_1805a6cb0(&local_1f8,&DAT_181bb56a0,2);
          local_2a8 = 0;
          local_2a0 = 0xf;
          local_2b8 = 0;
          FUN_1805a6cb0(&local_2b8,&DAT_181bb56a0,2);
          local_268 = 0;
          local_260 = 0xf;
          local_278 = 0;
          FUN_1805a6cb0(&local_278,&DAT_181bb56a0,2);
          local_368 = 0;
          local_360 = 0xf;
          local_378 = 0;
          local_5e0 = 2;
          iVar4 = **(int **)(param_1[0xd] + 0x130);
          iVar17 = iVar4;
          if (iVar4 < 0) {
            iVar17 = -iVar4;
          }
          puVar14 = (undefined1 *)FUN_1805f1740(iVar17,local_44);
          if (iVar4 < 0) {
            puVar14 = puVar14 + -1;
            *puVar14 = 0x2d;
          }
          local_618 = local_44 + -(longlong)puVar14;
          FUN_1805a9f40(&local_378,0,local_368);
          local_2c8 = 0;
          local_2c0 = 0xf;
          local_2d8 = 0;
          FUN_1805a6cb0(&local_2d8,&DAT_181bb56a0,2);
          plVar16 = *(longlong **)(param_1[0xd] + 0x110);
          plVar10 = plVar16;
          if (0xf < (ulonglong)plVar16[3]) {
            plVar10 = (longlong *)*plVar16;
          }
          puVar15 = (uint *)FUN_1805f4610(&local_2d8,0,plVar10,plVar16[2]);
          local_2f8 = *puVar15;
          uStack_2f4 = puVar15[1];
          uStack_2f0 = puVar15[2];
          uStack_2ec = puVar15[3];
          local_2e8 = *(undefined8 *)(puVar15 + 4);
          uStack_2e0 = *(ulonglong *)(puVar15 + 6);
          puVar15[4] = 0;
          puVar15[5] = 0;
          puVar15[6] = 0xf;
          puVar15[7] = 0;
          *(undefined1 *)puVar15 = 0;
          uVar12 = FUN_1805f1630(&local_118,&local_2f8,&local_378);
          uVar12 = FUN_1805f1630(&local_138,uVar12,&local_278);
          plVar16 = *(longlong **)(param_1[0xd] + 0x150);
          plVar10 = plVar16;
          if (0xf < (ulonglong)plVar16[3]) {
            plVar10 = (longlong *)*plVar16;
          }
          puVar15 = (uint *)FUN_1805a6a80(uVar12,plVar10,plVar16[2]);
          local_318 = *puVar15;
          uStack_314 = puVar15[1];
          uStack_310 = puVar15[2];
          uStack_30c = puVar15[3];
          local_308 = *(undefined8 *)(puVar15 + 4);
          uStack_300 = *(ulonglong *)(puVar15 + 6);
          puVar15[4] = 0;
          puVar15[5] = 0;
          puVar15[6] = 0xf;
          puVar15[7] = 0;
          *(undefined1 *)puVar15 = 0;
          uVar12 = FUN_1805f1630(&local_158,&local_318,&local_2b8);
          plVar16 = *(longlong **)(param_1[0xd] + 400);
          plVar10 = plVar16;
          if (0xf < (ulonglong)plVar16[3]) {
            plVar10 = (longlong *)*plVar16;
          }
          puVar15 = (uint *)FUN_1805a6a80(uVar12,plVar10,plVar16[2]);
          local_338 = *puVar15;
          uStack_334 = puVar15[1];
          uStack_330 = puVar15[2];
          uStack_32c = puVar15[3];
          local_328 = *(undefined8 *)(puVar15 + 4);
          uStack_320 = *(ulonglong *)(puVar15 + 6);
          puVar15[4] = 0;
          puVar15[5] = 0;
          puVar15[6] = 0xf;
          puVar15[7] = 0;
          *(undefined1 *)puVar15 = 0;
          uVar12 = FUN_1805f1630(&local_178,&local_338,&local_1f8);
          plVar16 = *(longlong **)(param_1[0xd] + 0x170);
          plVar10 = plVar16;
          if (0xf < (ulonglong)plVar16[3]) {
            plVar10 = (longlong *)*plVar16;
          }
          plVar16 = (longlong *)FUN_1805a6a80(uVar12,plVar10,plVar16[2]);
          local_5f0 = *plVar16;
          uStack_5e8 = (longlong *)plVar16[1];
          local_600 = plVar16[2];
          plStack_5f8 = (longlong *)plVar16[3];
          plVar16[2] = 0;
          plVar16[3] = 0xf;
          *(undefined1 *)plVar16 = 0;
          FUN_180485450(&local_358);
          local_358 = (uint)local_5f0;
          uStack_354 = local_5f0._4_4_;
          uStack_350 = (undefined4)uStack_5e8;
          uStack_34c = uStack_5e8._4_4_;
          local_348 = local_600;
          plStack_340 = plStack_5f8;
          if (0xf < local_160) {
            pvVar7 = (void *)CONCAT71(uStack_177,local_178);
            pvVar18 = pvVar7;
            if ((0xfff < local_160 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_168 = 0;
          local_160 = 0xf;
          local_178 = 0;
          if (0xf < uStack_320) {
            pvVar7 = (void *)CONCAT44(uStack_334,local_338);
            pvVar18 = pvVar7;
            if ((0xfff < uStack_320 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_328 = 0;
          uStack_320 = 0xf;
          local_338 = local_338 & 0xffffff00;
          if (0xf < local_140) {
            pvVar7 = (void *)CONCAT71(uStack_157,local_158);
            pvVar18 = pvVar7;
            if ((0xfff < local_140 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_148 = 0;
          local_140 = 0xf;
          local_158 = 0;
          if (0xf < uStack_300) {
            pvVar7 = (void *)CONCAT44(uStack_314,local_318);
            pvVar18 = pvVar7;
            if ((0xfff < uStack_300 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_308 = 0;
          uStack_300 = 0xf;
          local_318 = local_318 & 0xffffff00;
          if (0xf < local_120) {
            pvVar7 = (void *)CONCAT71(uStack_137,local_138);
            pvVar18 = pvVar7;
            if ((0xfff < local_120 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_128 = 0;
          local_120 = 0xf;
          local_138 = 0;
          if (0xf < local_100) {
            pvVar7 = (void *)CONCAT71(uStack_117,local_118);
            pvVar18 = pvVar7;
            if ((0xfff < local_100 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_108 = 0;
          local_100 = 0xf;
          local_118 = 0;
          if (0xf < uStack_2e0) {
            pvVar7 = (void *)CONCAT44(uStack_2f4,local_2f8);
            pvVar18 = pvVar7;
            if ((0xfff < uStack_2e0 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_2e8 = 0;
          uStack_2e0 = 0xf;
          local_2f8 = local_2f8 & 0xffffff00;
          if (0xf < local_2c0) {
            pvVar7 = (void *)CONCAT71(uStack_2d7,local_2d8);
            pvVar18 = pvVar7;
            if ((0xfff < local_2c0 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_2c8 = 0;
          local_2c0 = 0xf;
          local_2d8 = 0;
          if (0xf < local_360) {
            pvVar7 = (void *)CONCAT71(uStack_377,local_378);
            pvVar18 = pvVar7;
            if ((0xfff < local_360 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_368 = 0;
          local_360 = 0xf;
          local_378 = 0;
          if (0xf < local_260) {
            pvVar7 = (void *)CONCAT71(uStack_277,local_278);
            pvVar18 = pvVar7;
            if ((0xfff < local_260 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_268 = 0;
          local_260 = 0xf;
          local_278 = 0;
          if (0xf < local_2a0) {
            pvVar7 = (void *)CONCAT71(uStack_2b7,local_2b8);
            pvVar18 = pvVar7;
            if ((0xfff < local_2a0 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
          local_2a8 = 0;
          local_2a0 = 0xf;
          local_2b8 = 0;
          if (0xf < local_1e0) {
            pvVar7 = (void *)CONCAT71(uStack_1f7,local_1f8);
            pvVar18 = pvVar7;
            if ((0xfff < local_1e0 + 1) &&
               (pvVar18 = *(void **)((longlong)pvVar7 + -8),
               0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar18);
          }
        }
      }
      local_c8 = 0;
      local_c0 = 0xf;
      local_d8[0] = 0;
      FUN_1805a6cb0(local_d8,&DAT_181bb3b44,2);
      puVar14 = &local_298;
      if (0xf < local_280) {
        puVar14 = (undefined1 *)CONCAT71(uStack_297,local_298);
      }
      puVar13 = (undefined4 *)FUN_1805f4610(local_d8,0,puVar14,local_288);
      local_f8 = *puVar13;
      uStack_f4 = puVar13[1];
      uStack_f0 = puVar13[2];
      uStack_ec = puVar13[3];
      local_e8 = *(undefined8 *)(puVar13 + 4);
      uStack_e0 = *(undefined8 *)(puVar13 + 6);
      *(undefined8 *)(puVar13 + 4) = 0;
      *(undefined8 *)(puVar13 + 6) = 0xf;
      *(undefined1 *)puVar13 = 0;
      puVar15 = &local_358;
      if ((longlong *)0xf < plStack_340) {
        puVar15 = (uint *)CONCAT44(uStack_354,local_358);
      }
      puVar13 = (undefined4 *)FUN_1805a6a80(&local_f8,puVar15,local_348);
      local_98 = *puVar13;
      uStack_94 = puVar13[1];
      uStack_90 = puVar13[2];
      uStack_8c = puVar13[3];
      local_88 = puVar13[4];
      uStack_84 = puVar13[5];
      uStack_80 = puVar13[6];
      uStack_7c = puVar13[7];
      *(undefined8 *)(puVar13 + 4) = 0;
      *(undefined8 *)(puVar13 + 6) = 0xf;
      *(undefined1 *)puVar13 = 0;
      FUN_1805a5a40(param_1 + 6,&local_98);
      FUN_180485450(&local_98);
      FUN_180485450(&local_f8);
      FUN_180485450(local_d8);
      FUN_180485450(&local_358);
      FUN_180485450(&local_298);
      FUN_1805f2180(&local_560);
    }
  }
  else if (iVar4 == 4) {
    local_228 = 0;
    local_220 = 0xf;
    local_238 = 0;
    FUN_1805a6cb0(&local_238,"TException",10);
    local_248 = 0;
    local_240 = 0xf;
    local_258 = 0;
    if (param_2 != (longlong *)0x0) {
      lVar11 = (**(code **)(*param_2 + 8))(param_2);
      do {
        lVar21 = lVar21 + 1;
      } while (*(char *)(lVar11 + lVar21) != '\0');
      FUN_1805a6cb0(&local_258,lVar11,lVar21);
    }
    uVar8 = local_240;
    uVar12 = local_248;
    local_188 = 0;
    local_180 = 0xf;
    local_198[0] = 0;
    FUN_1805a6cb0(local_198,&DAT_181baf994,2);
    puVar14 = &local_238;
    if (0xf < local_220) {
      puVar14 = (undefined1 *)CONCAT71(uStack_237,local_238);
    }
    puVar13 = (undefined4 *)FUN_1805f4610(local_198,0,puVar14,local_228);
    local_1b8 = *puVar13;
    uStack_1b4 = puVar13[1];
    uStack_1b0 = puVar13[2];
    uStack_1ac = puVar13[3];
    local_1a8 = *(undefined8 *)(puVar13 + 4);
    uStack_1a0 = *(undefined8 *)(puVar13 + 6);
    *(undefined8 *)(puVar13 + 4) = 0;
    *(undefined8 *)(puVar13 + 6) = 0xf;
    *(undefined1 *)puVar13 = 0;
    puVar14 = &local_258;
    if (0xf < uVar8) {
      puVar14 = (undefined1 *)CONCAT71(uStack_257,local_258);
    }
    puVar13 = (undefined4 *)FUN_1805a6a80(&local_1b8,puVar14,uVar12);
    local_b8 = *puVar13;
    uStack_b4 = puVar13[1];
    uStack_b0 = puVar13[2];
    uStack_ac = puVar13[3];
    local_a8 = puVar13[4];
    uStack_a4 = puVar13[5];
    uStack_a0 = puVar13[6];
    uStack_9c = puVar13[7];
    *(undefined8 *)(puVar13 + 4) = 0;
    *(undefined8 *)(puVar13 + 6) = 0xf;
    *(undefined1 *)puVar13 = 0;
    FUN_1805a5a40(param_1 + 6,&local_b8);
    FUN_180485450(&local_b8);
    FUN_180485450(&local_1b8);
    FUN_180485450(local_198);
    FUN_180485450(&local_258);
    FUN_180485450(&local_238);
  }
  else if (iVar4 == 5) {
    local_618 = (undefined1 *)((ulonglong)local_618._4_4_ << 0x20);
    lVar11 = __RTDynamicCast(param_2,0,&std::exception::RTTI_Type_Descriptor,
                             &litesql::Except::RTTI_Type_Descriptor);
    if (lVar11 != 0) {
      uVar12 = FUN_1805f49a0(local_78,lVar11);
      FUN_1805a5a40(param_1 + 6,uVar12);
      FUN_180485450(local_78);
    }
  }
  else if (iVar4 == 8) {
    FUN_1805a6cb0(param_1 + 6,
                  "Error processing the command line because multiple occurances of the same option was provided."
                  ,0x5e);
  }
  else if (iVar4 == 0xc) {
    FUN_1805a6cb0(param_1 + 6,"Unknown exception!",0x12);
  }
  else if (param_2 != (longlong *)0x0) {
    lVar11 = (**(code **)(*param_2 + 8))(param_2);
    do {
      lVar21 = lVar21 + 1;
    } while (*(char *)(lVar11 + lVar21) != '\0');
    FUN_1805a6cb0(param_1 + 6,lVar11,lVar21);
  }
  if ((((int)param_1[1] == 1) || (uVar19 = local_604, (int)param_1[1] == 10)) &&
     (uVar19 = local_604 & 0xff, (char)param_1[10] == '\0')) {
    uVar19 = 1;
  }
  (**(code **)(*param_1 + 0x10))(param_1,uVar19,param_2,local_5c8);
}



############ FUN_ 1805fd6e0 size=97 ############

undefined8 * FUN_1805fd6e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<boost::filesystem::detail::dir_itr_imp>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805fd750 size=97 ############

undefined8 * FUN_1805fd750(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<boost::filesystem::filesystem_error::m_imp>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1805fd960 size=181 ############

undefined8 *
FUN_1805fd960(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x38);
  if (puVar1 != (undefined8 *)0x0) {
    puVar1[3] = 7;
    puVar1[2] = 0;
    puVar2 = puVar1;
    if (7 < (ulonglong)puVar1[3]) {
      puVar2 = (undefined8 *)*puVar1;
    }
    *(undefined2 *)puVar2 = 0;
    *(undefined4 *)(puVar1 + 4) = 0;
    *(undefined8 *)((longlong)puVar1 + 0x24) = 0xffff;
    *(undefined4 *)((longlong)puVar1 + 0x2c) = 0xffff;
    puVar1[6] = 0;
  }
  *param_1 = puVar1;
  FUN_1805fd6e0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1,param_4,uVar3);
  FUN_1805ff070(param_1,param_2,0);
  return param_1;
}



############ FUN_ 1805fda70 size=260 ############

undefined8 *
FUN_1805fda70(undefined8 *param_1,undefined8 *param_2,longlong param_3,undefined4 *param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 *local_40;
  undefined1 local_38;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  uVar4 = 0xfffffffffffffffe;
  local_28 = *param_4;
  uStack_24 = param_4[1];
  uStack_20 = param_4[2];
  uStack_1c = param_4[3];
  if (0xf < (ulonglong)param_2[3]) {
    param_2 = (undefined8 *)*param_2;
  }
  *param_1 = std::exception::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  local_38 = 1;
  local_40 = param_2;
  __std_exception_copy(&local_40);
  *param_1 = boost::system::system_error::vftable;
  *(undefined4 *)(param_1 + 3) = local_28;
  *(undefined4 *)((longlong)param_1 + 0x1c) = uStack_24;
  *(undefined4 *)(param_1 + 4) = uStack_20;
  *(undefined4 *)((longlong)param_1 + 0x24) = uStack_1c;
  puVar1 = param_1 + 5;
  param_1[8] = 0xf;
  uVar3 = 0;
  param_1[7] = 0;
  if (0xf < (ulonglong)param_1[8]) {
    puVar1 = (undefined8 *)*puVar1;
  }
  *(undefined1 *)puVar1 = 0;
  *param_1 = boost::filesystem::filesystem_error::vftable;
  param_1[9] = 0;
  param_1[10] = 0;
  lVar2 = FUN_1811316e0(0x60);
  if (lVar2 != 0) {
    uVar3 = FUN_1805fdc70(lVar2);
  }
  FUN_1805fd8c0(param_1 + 9,uVar3);
  if (param_1[9] != param_3) {
    FUN_1805f6da0(param_1[9],param_3,0,0xffffffffffffffff,uVar4);
  }
  return param_1;
}



############ FUN_ 1805fdb80 size=231 ############

undefined8 * FUN_1805fdb80(undefined8 *param_1,undefined8 *param_2,undefined4 *param_3)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *local_30;
  undefined1 local_28;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  local_18 = *param_3;
  uStack_14 = param_3[1];
  uStack_10 = param_3[2];
  uStack_c = param_3[3];
  if (0xf < (ulonglong)param_2[3]) {
    param_2 = (undefined8 *)*param_2;
  }
  *param_1 = std::exception::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  local_28 = 1;
  local_30 = param_2;
  __std_exception_copy(&local_30);
  *param_1 = boost::system::system_error::vftable;
  *(undefined4 *)(param_1 + 3) = local_18;
  *(undefined4 *)((longlong)param_1 + 0x1c) = uStack_14;
  *(undefined4 *)(param_1 + 4) = uStack_10;
  *(undefined4 *)((longlong)param_1 + 0x24) = uStack_c;
  puVar1 = param_1 + 5;
  param_1[8] = 0xf;
  uVar3 = 0;
  param_1[7] = 0;
  if (0xf < (ulonglong)param_1[8]) {
    puVar1 = (undefined8 *)*puVar1;
  }
  *(undefined1 *)puVar1 = 0;
  *param_1 = boost::filesystem::filesystem_error::vftable;
  param_1[9] = 0;
  param_1[10] = 0;
  lVar2 = FUN_1811316e0(0x60);
  if (lVar2 != 0) {
    uVar3 = FUN_1805fdc70(lVar2);
  }
  FUN_1805fd8c0(param_1 + 9,uVar3);
  return param_1;
}



############ FUN_ 18060cc00 size=115 ############

void FUN_18060cc00(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 << 5;
  if (param_2 < 0x800000000000000) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 18060cc80 size=227 ############

longlong FUN_18060cc80(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bb7740;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_18060c320(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr>_>::
              vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr>_>::vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 18061da50 size=190 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18061da50(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  undefined4 *puVar2;
  undefined8 uVar3;
  undefined1 auStack_48 [32];
  undefined8 local_28;
  undefined4 *local_20;
  ulonglong local_18;
  
  local_28 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_48;
  local_20 = param_2;
  if (*(ulonglong *)(param_1 + 0x10) <= *(longlong *)(param_1 + 0x20) + 1U) {
    FUN_180618890(param_1,1);
  }
  *(ulonglong *)(param_1 + 0x18) =
       *(ulonglong *)(param_1 + 0x18) & *(longlong *)(param_1 + 0x10) - 1U;
  lVar1 = (*(longlong *)(param_1 + 0x10) - 1U &
          *(longlong *)(param_1 + 0x18) + *(longlong *)(param_1 + 0x20)) * 8;
  if (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) == 0) {
    uVar3 = FUN_1811316e0(0x28);
    *(undefined8 *)(lVar1 + *(longlong *)(param_1 + 8)) = uVar3;
  }
  puVar2 = *(undefined4 **)(lVar1 + *(longlong *)(param_1 + 8));
  *puVar2 = *param_2;
  FUN_1805a4070(puVar2 + 2,param_2 + 2);
  *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + 1;
  FUN_180611fb0(param_2);
}



############ FUN_ 180618890 size=496 ############

void FUN_180618890(longlong param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  void *pvVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  size_t sVar7;
  size_t sVar8;
  void *pvVar9;
  
  uVar3 = *(ulonglong *)(param_1 + 0x10);
  uVar6 = 1;
  if (uVar3 != 0) {
    uVar6 = uVar3;
  }
  for (; (uVar6 - uVar3 < param_2 || (uVar6 < 8)); uVar6 = uVar6 * 2) {
    if (0x666666666666666 - uVar6 < uVar6) {
                    /* WARNING: Subroutine does not return */
      FUN_180618c80(param_1);
    }
  }
  uVar6 = uVar6 - uVar3;
  uVar1 = *(ulonglong *)(param_1 + 0x18);
  uVar5 = (uVar3 + uVar6) * 8;
  if (uVar3 + uVar6 < 0x2000000000000000) {
    if (uVar5 < 0x1000) {
      if (uVar5 == 0) {
        pvVar9 = (void *)0x0;
      }
      else {
        pvVar9 = (void *)FUN_1811316e0(uVar5);
      }
      goto LAB_180618959;
    }
  }
  else {
    uVar5 = 0xffffffffffffffff;
  }
  uVar3 = uVar5 + 0x27;
  if (uVar3 <= uVar5) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar9 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar9 - 8) = lVar2;
LAB_180618959:
  sVar8 = uVar1 * 8;
  pvVar4 = (void *)(*(longlong *)(param_1 + 8) + sVar8);
  sVar7 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar4) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar8 + (longlong)pvVar9),pvVar4,sVar7);
  pvVar4 = (void *)(sVar7 + (longlong)(sVar8 + (longlong)pvVar9));
  if (uVar6 < uVar1) {
    sVar7 = uVar6 * 8;
    memmove(pvVar4,*(void **)(param_1 + 8),sVar7);
    pvVar4 = (void *)(sVar7 + *(longlong *)(param_1 + 8));
    sVar8 = (*(longlong *)(param_1 + 8) - (longlong)pvVar4) + sVar8;
    memmove(pvVar9,pvVar4,sVar8);
    pvVar4 = (void *)(sVar8 + (longlong)pvVar9);
  }
  else {
    memmove(pvVar4,*(void **)(param_1 + 8),sVar8);
    memset((void *)(sVar8 + (longlong)pvVar4),0,(uVar6 - uVar1) * 8);
    pvVar4 = pvVar9;
    sVar7 = sVar8;
  }
  memset(pvVar4,0,sVar7);
  pvVar4 = *(void **)(param_1 + 8);
  if (pvVar4 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar9;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar6;
    return;
  }
  pvVar9 = pvVar4;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar9 = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar9);
}



############ FUN_ 18060d080 size=224 ############

void FUN_18060d080(longlong param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined8 uVar4;
  
  while (*(longlong *)(param_2 + 0x10) != *(longlong *)(param_3 + 0x10)) {
    puVar3 = (undefined4 *)FUN_180489600(param_2);
    if (*(ulonglong *)(param_1 + 0x10) <= *(longlong *)(param_1 + 0x20) + 1U) {
      FUN_180618890(param_1,1);
    }
    *(ulonglong *)(param_1 + 0x18) =
         *(ulonglong *)(param_1 + 0x18) & *(longlong *)(param_1 + 0x10) - 1U;
    lVar1 = (*(longlong *)(param_1 + 0x10) - 1U &
            *(longlong *)(param_1 + 0x18) + *(longlong *)(param_1 + 0x20)) * 8;
    if (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) == 0) {
      uVar4 = FUN_1811316e0(0x28);
      *(undefined8 *)(lVar1 + *(longlong *)(param_1 + 8)) = uVar4;
    }
    puVar2 = *(undefined4 **)(lVar1 + *(longlong *)(param_1 + 8));
    *puVar2 = *puVar3;
    FUN_1805a4070(puVar2 + 2,puVar3 + 2);
    *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + 1;
    *(longlong *)(param_2 + 0x10) = *(longlong *)(param_2 + 0x10) + 1;
  }
  return;
}



############ FUN_ 180612340 size=2305 ############

/* WARNING: Instruction at (ram,0x000180612765) overlaps instruction at (ram,0x000180612762)
    */
/* WARNING: Removing unreachable block (ram,0x000180612762) */
/* WARNING: Removing unreachable block (ram,0x0001806123b6) */
/* WARNING: Removing unreachable block (ram,0x000180612833) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_180612340(longlong param_1,uint param_2,longlong param_3,longlong param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  uint uVar7;
  uint uVar8;
  longlong lVar9;
  undefined1 *puVar10;
  ulonglong uVar11;
  uint unaff_retaddr;
  int local_res8 [2];
  uint local_res10;
  undefined8 *local_res18;
  undefined4 local_res20 [2];
  undefined1 auStack_d8 [32];
  longlong local_b8;
  undefined8 local_b0;
  longlong local_a8;
  undefined *local_98;
  uint *local_90;
  uint local_88;
  undefined4 local_80 [2];
  uint local_78;
  char *local_70;
  char *local_68;
  char *local_60;
  undefined8 local_58;
  
  puVar10 = auStack_d8;
  local_58 = 0xfffffffffffffffe;
  uVar1 = (uint)&stack0x00000000 & 0x35ff;
  uVar1 = ((uVar1 + 1) * uVar1 + 7) % 0x51;
  local_88 = (int)(-uVar1 | uVar1) >> 0x1f & 0x8a6eU ^ 0x833e;
  uVar1 = (uint)&stack0x00000000 & 0x4eff;
  uVar1 = (uVar1 * uVar1 + 1) % 7;
  local_78 = ((int)(uVar1 | -uVar1) >> 0x1f) * -0xc28f ^ 0xceaf;
  local_90 = &DAT_1815942fc;
  local_98 = &DAT_1815943fc;
  puVar4 = (undefined8 *)0x0;
  local_res10 = param_2;
  if (*(char *)(param_1 + 0x170) == '\0') {
    local_res18 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res18 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res18,"Hasher object has not been initialized");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res18 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x13e);
    local_70 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],&local_70);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res18);
  }
  uVar1 = DAT_1815942fc ^ 0x811c9dc5;
  do {
    FUN_18061074e(0x662c);
    uVar8 = local_res10;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_98 = (undefined *)0x253b035a16b5dd23;
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x16b5dd23);
  uVar1 = DAT_181594324 ^
          (DAT_181594320 ^
          (DAT_18159431c ^
          (DAT_181594318 ^
          (DAT_181594314 ^
          (DAT_181594310 ^
          (DAT_18159430c ^
          (DAT_181594308 ^
          (DAT_181594304 ^ (DAT_181594300 ^ uVar1 * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
          ) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  if (param_4 != 0) {
    FUN_18070abe0(param_4);
  }
  uVar1 = (DAT_181594334 ^
          (DAT_181594330 ^
          (DAT_18159432c ^ (DAT_181594328 ^ uVar1 * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
          ) * 0x1000181;
  uVar6 = (ulonglong)uVar1;
  if (*(longlong *)(param_1 + 0x160) == *(longlong *)(param_1 + 0x158)) {
    uVar11 = 0;
    local_b8 = param_3;
    local_res8[0] = FUN_18070ace0();
  }
  else {
    local_b0 = 0;
    uVar11 = (ulonglong)uVar8;
    local_b8 = param_4;
    local_a8 = param_3;
    local_res8[0] = FUN_18070b8c0(param_1 + 8);
  }
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar1 = DAT_18159437c ^
          (DAT_181594378 ^
          (DAT_181594374 ^
          (DAT_181594370 ^
          (DAT_18159436c ^
          (DAT_181594368 ^
          (DAT_181594364 ^
          (DAT_181594360 ^
          (DAT_18159435c ^
          (DAT_181594358 ^
          (DAT_181594354 ^
          (DAT_181594350 ^
          (DAT_18159434c ^
          (DAT_181594348 ^
          (DAT_181594344 ^
          (DAT_181594340 ^ (DAT_18159433c ^ (DAT_181594338 ^ uVar1) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181;
  do {
    FUN_180613048(0x662c);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar1 = DAT_1815943f8 ^
          (DAT_1815943f4 ^
          (DAT_1815943f0 ^
          (DAT_1815943ec ^
          (DAT_1815943e8 ^
          (DAT_1815943e4 ^
          (DAT_1815943e0 ^
          (DAT_1815943dc ^
          (DAT_1815943d8 ^
          (DAT_1815943d4 ^
          (DAT_1815943d0 ^
          (DAT_1815943cc ^
          (DAT_1815943c8 ^
          (DAT_1815943c4 ^
          (DAT_1815943c0 ^
          (DAT_1815943bc ^
          (DAT_1815943b8 ^
          (DAT_1815943b4 ^
          (DAT_1815943b0 ^
          (DAT_1815943ac ^
          (DAT_1815943a8 ^
          (DAT_1815943a4 ^
          (DAT_1815943a0 ^
          (DAT_18159439c ^
          (DAT_181594398 ^
          (DAT_181594394 ^
          (DAT_181594390 ^
          (DAT_18159438c ^
          (DAT_181594388 ^
          (DAT_181594384 ^ (DAT_181594380 ^ uVar1 * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
          ) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  do {
    FUN_180613195(0x662c);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar1 = (uVar1 * 0x40000000 | uVar1 * 0x1000181 >> 2) ^ 0x88bdc9a;
  if (~((uVar1 >> 2 | uVar1 << 0x1e) ^ 0x12c3b62e) == (uint)local_res18) {
    if (local_res8[0] == 0) {
      lVar5 = (longlong)(int)local_78;
      do {
        *(undefined8 *)(puVar10 + -8) = 0x180612cc8;
        lVar9 = lVar5;
        FUN_180610ebe();
        *(undefined8 **)(puVar10 + -8) = puVar4;
        *(ulonglong *)(puVar10 + -0x10) = uVar6;
        *(ulonglong *)(puVar10 + -0x18) = uVar11;
        lVar9 = -lVar9;
        uVar11 = *(ulonglong *)(puVar10 + lVar9 + 0xc08);
        uVar6 = *(ulonglong *)(puVar10 + lVar9 + 0xc10);
        puVar4 = *(undefined8 **)(puVar10 + lVar9 + 0xc18);
        puVar10 = puVar10 + lVar9 + 0xc20;
        uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar1 < 0) {
          uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar1 != 0);
      return (ulonglong)unaff_retaddr;
    }
    local_res18 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res18 != (undefined8 *)0x0) {
      puVar4 = (undefined8 *)FUN_1805a48c0(local_res18,"[%d] HASH_ByID_ProcessBuffer error");
    }
    lVar5 = FUN_1805c0260();
    FUN_18060e760(puVar4[1],local_res8);
    local_80[0] = 0x160;
    local_60 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_80);
  }
  if (local_res8[0] != 0) {
    uVar6 = thunk_FUN_1805a9280();
    return uVar6;
  }
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_1805a48c0(local_res18,"[%d] HASH_ByID_ProcessBuffer error");
  }
  lVar5 = FUN_1805c0260();
  FUN_18060e760(puVar4[1],local_res8);
  local_res20[0] = 0x186;
  local_68 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
  uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_68);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,local_res20);
}



############ FUN_ 180615200 size=2990 ############

/* WARNING: Instruction at (ram,0x0001806159b3) overlaps instruction at (ram,0x0001806159b2)
    */
/* WARNING: Removing unreachable block (ram,0x000180615a8b) */
/* WARNING: Removing unreachable block (ram,0x00018061574e) */
/* WARNING: Removing unreachable block (ram,0x00018061552c) */
/* WARNING: Removing unreachable block (ram,0x000180615737) */
/* WARNING: Removing unreachable block (ram,0x0001806159b2) */
/* WARNING: Removing unreachable block (ram,0x000180615c3c) */
/* WARNING: Removing unreachable block (ram,0x000180615505) */
/* WARNING: Removing unreachable block (ram,0x0001806152aa) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180615200(longlong param_1,undefined4 param_2)

{
  char *pcVar1;
  char *pcVar2;
  undefined8 uVar3;
  uint uVar4;
  uint uVar5;
  longlong lVar6;
  uint uVar7;
  char *pcVar8;
  undefined1 *puVar9;
  uint uVar10;
  int iVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  int unaff_retaddr;
  int local_res20 [2];
  undefined1 auStack_98 [32];
  undefined4 local_78 [2];
  uint *local_70;
  undefined *local_68;
  char *local_60;
  undefined8 local_58;
  
  puVar9 = auStack_98;
  local_58 = 0xfffffffffffffffe;
  uVar10 = (uint)&stack0x00000000 & 0x40ff;
  iVar11 = uVar10 * uVar10 + 1;
  uVar10 = (iVar11 >> 4) + (iVar11 >> 1) + iVar11 * 0x24924924 >> 0x1d;
  if (((int)(uVar10 - 7) >> 0x1f & uVar10 & 0x2a00) == 0) {
    uVar10 = (uint)&stack0x00000000 & 0x37f;
    iVar11 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
    uVar10 = 0x816e - (((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e);
  }
  else {
    uVar10 = 0x816e;
  }
  pcVar8 = (char *)0x0;
  local_70 = &DAT_1814a8438;
  local_68 = &UNK_1814a8538;
  uVar7 = DAT_1814a843c ^ DAT_1814a8438 >> 0x1c ^ (DAT_1814a8438 ^ 0xb30) << 4;
  uVar7 = _DAT_1814a8440 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8444 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  do {
    FUN_180616515(0xd938);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar7 = _DAT_1814a8448 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  *(undefined1 *)(param_1 + 0x170) = 0;
  uVar7 = _DAT_1814a844c ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8450 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8454 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8458 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a845c ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8460 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8464 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8468 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a846c ^ uVar7 >> 0x1c ^ uVar7 << 4;
  *(undefined8 *)(param_1 + 0x160) = *(undefined8 *)(param_1 + 0x158);
  uVar7 = _DAT_1814a8470 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8474 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8478 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a847c ^ uVar7 >> 0x1c ^ uVar7 << 4;
  local_res20[0] = FUN_18070b240(param_2,param_1 + 8,0x40);
  uVar7 = _DAT_1814a8480 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8484 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar4 = _DAT_1814a8488 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar13 = (ulonglong)(uVar10 ^ 0x8b8e);
  uVar7 = uVar4 << 4;
  uVar12 = (ulonglong)uVar7;
  uVar7 = _DAT_1814a848c ^ uVar4 >> 0x1c ^ uVar7;
  uVar7 = _DAT_1814a8490 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _DAT_1814a8494 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a8498 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a849c ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84a0 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84a4 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84a8 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84ac ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84b0 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84b4 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84b8 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  if (local_res20[0] != 0) {
    local_60 = (char *)FUN_1811316e0(0x18);
    pcVar1 = pcVar8;
    if (local_60 != (char *)0x0) {
      pcVar1 = (char *)FUN_1805a48c0(local_60,"[%d] HASH_ByID_Init error");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_60 = pcVar2;
    if (pcVar2 != (char *)0x0) {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
      pcVar8 = pcVar2;
    }
    FUN_18060e760(*(undefined8 *)(pcVar1 + 8),local_res20);
    local_78[0] = 0x9a;
    local_60 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar8 + 8),&local_60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_78);
  }
  uVar7 = _UNK_1814a84bc ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84c0 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84c4 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84c8 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84cc ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84d0 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84d4 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84d8 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84dc ^ uVar7 >> 0x1c ^ uVar7 << 4;
  do {
    uVar12 = (-uVar12 ^ 0xffffffffffffffff) + 1;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar7 = _UNK_1814a84e0 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84e4 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = _UNK_1814a84e8 ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar4 = _UNK_1814a84ec ^ uVar7 >> 0x1c ^ uVar7 << 4;
  iVar11 = (uVar4 & 0x59ff) * (uVar4 & 0x59ff) + 1;
  uVar7 = (iVar11 >> 4) + (iVar11 >> 1) + iVar11 * 0x24924924 >> 0x1d;
  if (((int)(uVar7 - 7) >> 0x1f & uVar7 & 0x360) == 0) {
    uVar7 = uVar4 & 0xf | 0x76;
    uVar7 = (uint)(uVar7 * uVar7 * 0x86a7 == 0x1a03790);
  }
  else {
    uVar7 = 0;
  }
  lVar6 = -((longlong)(int)(0x582b - uVar7) ^ 0x592bU);
  uVar7 = *(uint *)(&UNK_1814a85f0 + lVar6) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar7 = *(uint *)(&UNK_1814a85f4 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a85f8 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a85fc + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8600 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8604 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8608 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a860c + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8610 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8614 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8618 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a861c + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8620 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8624 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a8628 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar4 = uVar7 << 4;
  uVar7 = *(uint *)(&UNK_1814a862c + lVar6) ^ uVar7 >> 0x1c ^ uVar4;
  uVar7 = uVar7 >> 0x1c ^ uVar7 << 4 ^ *(uint *)(&UNK_1814a8630 + lVar6);
  uVar7 = *(uint *)(&UNK_1814a8634 + lVar6) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = (uVar7 >> 8 ^ uVar7) >> 1 & 3;
  uVar7 = (uVar5 << 8 | uVar5) * 2 ^ uVar7;
  uVar7 = (uVar7 >> 5 | uVar7 << 0x1b) + 0x83fa7d52;
  uVar5 = uVar7 * 0x10 & 0xf0f0f0f0 | uVar7 >> 4 & 0xf0f0f0f;
  uVar7 = (uVar5 >> 0xc ^ uVar5) >> 0xb & 0xf;
  *(undefined1 *)(param_1 + 0x170) = 1;
  if (((uVar7 << 0xc | uVar7) << 0xb ^ uVar5) != 0x792344c7) {
    thunk_FUN_1805a9280((longlong)(int)(uVar10 ^ 0x8b8e),uVar5,
                        (~(ulonglong)uVar4 + 1 ^ 0xffffffffffffffff) + 1,uVar12);
    return;
  }
  local_res20[0] = 0;
  uVar3 = 0;
  do {
    *(undefined8 *)(puVar9 + -8) = 0x180615e08;
    lVar6 = 0x550;
    FUN_180616099();
    *(undefined8 *)(puVar9 + -8) = uVar3;
    *(BADSPACEBASE **)(puVar9 + -0x10) = register0x00000020;
    *(ulonglong *)(puVar9 + -0x18) = uVar13;
    lVar6 = -lVar6;
    uVar13 = *(ulonglong *)(puVar9 + lVar6 + 0x538);
    register0x00000020 = *(BADSPACEBASE **)(puVar9 + lVar6 + 0x540);
    uVar3 = *(undefined8 *)(puVar9 + lVar6 + 0x548);
    puVar9 = puVar9 + lVar6 + 0x550;
    uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  return;
}



############ FUN_ 180617db0 size=386 ############

void FUN_180617db0(longlong param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 *puVar3;
  char *pcVar4;
  longlong lVar5;
  undefined8 local_res8;
  char *local_res20;
  
  if (*(char *)(param_1 + 0x170) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Hasher object has not been initialized");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)0x0;
      local_res8._4_4_ = 0;
    }
    else {
      local_res8 = puVar3;
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xce);
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
    uVar1 = FUN_1805a21d0(puVar3[1],&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar1,&local_res8);
  }
  iVar2 = FUN_18070b4b0(param_1 + 8,param_2,param_3,param_4,0xfffffffffffffffe);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar2);
  if (iVar2 == 0) {
    return;
  }
  local_res20 = (char *)FUN_1811316e0(0x18);
  if (local_res20 == (char *)0x0) {
    lVar5 = 0;
  }
  else {
    lVar5 = FUN_1805a48c0(local_res20,"[%d] HASH_ByID_ProcessBuffer error");
  }
  pcVar4 = (char *)FUN_1811316e0(0x18);
  local_res20 = pcVar4;
  if (pcVar4 == (char *)0x0) {
    pcVar4 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xd1);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
  uVar1 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar1,&local_res8);
}



############ FUN_ 1806c91c0 size=328 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806c91c0(undefined8 param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4,
                  undefined1 param_5,undefined1 param_6,undefined8 param_7)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined2 *puVar5;
  undefined1 auStack_b8 [32];
  undefined1 local_98;
  undefined1 local_90;
  undefined8 local_88;
  undefined2 *local_78;
  longlong *local_70;
  undefined2 *local_68;
  undefined8 local_60;
  undefined1 local_58 [32];
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  FUN_1806ca1c0(local_58,param_1);
  puVar5 = (undefined2 *)FUN_1811316e0(0x38);
  if (puVar5 != (undefined2 *)0x0) {
    *(undefined8 *)(puVar5 + 8) = 0;
    *(undefined8 *)(puVar5 + 0xc) = 7;
    *puVar5 = 0;
    *(undefined4 *)(puVar5 + 0x10) = 0;
    *(undefined8 *)(puVar5 + 0x12) = 0xffff;
    *(undefined4 *)(puVar5 + 0x16) = 0xffff;
    *(undefined8 *)(puVar5 + 0x18) = 0;
  }
  local_78 = puVar5;
  local_68 = puVar5;
  FUN_1805fd6e0(&local_70,puVar5);
  FUN_1805ae620(&local_78,puVar5,puVar5);
  FUN_1805ff070(&local_78,local_58,0);
  local_88 = param_7;
  local_90 = param_6;
  local_98 = param_5;
  FUN_1806c8cb0(&local_78,param_2,param_3,param_4);
  if (local_70 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_70 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_70 + 8))(local_70);
      LOCK();
      piVar2 = (int *)((longlong)local_70 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_70 + 0x10))(local_70);
      }
    }
  }
  FUN_1805bc2c0(local_58);
}



############ FUN_ 1806c8e90 size=564 ############

longlong FUN_1806c8e90(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  void *_Memory;
  longlong lVar8;
  longlong lVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong *puVar12;
  undefined8 uVar13;
  
  uVar13 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar8 = (longlong)(param_2 - uVar11) >> 5;
  lVar3 = (longlong)(param_1[1] - uVar11) >> 5;
  if (lVar3 == 0x7ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar3 + 1;
  uVar6 = (longlong)(param_1[2] - uVar11) >> 5;
  uVar11 = uVar1;
  if ((uVar6 <= 0x7ffffffffffffff - (uVar6 >> 1)) && (uVar11 = (uVar6 >> 1) + uVar6, uVar11 < uVar1)
     ) {
    uVar11 = uVar1;
  }
  uVar4 = uVar11 << 5;
  uVar6 = uVar11;
  lVar3 = lVar8;
  puVar12 = param_1;
  if (uVar11 < 0x800000000000000) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_1806c8f88;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar7 = uVar4 + 0x27;
  if (uVar7 <= uVar4) {
    uVar7 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar7);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_1806c8f88:
  lVar9 = lVar8 * 0x20 + uVar4;
  lVar8 = lVar9 + 0x20;
  lVar5 = lVar8;
  uVar10 = uVar4;
  FUN_1805b3ee0(lVar9,param_3);
  uVar7 = param_1[1];
  if (param_2 == uVar7) {
    uVar10 = uVar4;
    for (uVar6 = *param_1; uVar6 != uVar7; uVar6 = uVar6 + 0x20) {
      FUN_1805b3ee0(uVar10,uVar6);
      uVar10 = uVar10 + 0x20;
    }
  }
  else {
    FUN_1806c9150(param_1,*param_1,param_2,uVar4,uVar6,lVar3,lVar5,uVar10,puVar12,uVar13);
    FUN_1806c9150(param_1,param_2,param_1[1],lVar8);
  }
  uVar6 = *param_1;
  if (uVar6 != 0) {
    uVar11 = param_1[1];
    for (; uVar6 != uVar11; uVar6 = uVar6 + 0x20) {
      FUN_1805bc2c0(uVar6);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar1 * 0x20 + uVar4;
  param_1[2] = uVar11 * 0x20 + uVar4;
  return lVar3 * 0x20 + *param_1;
}



############ FUN_ 180618040 size=781 ############

void FUN_180618040(longlong *param_1,undefined8 *param_2)

{
  longlong *plVar1;
  void *pvVar2;
  char *pcVar3;
  undefined8 uVar4;
  uint *puVar5;
  char *pcVar6;
  ulonglong uVar7;
  char *pcVar8;
  void *_Memory;
  undefined8 *puVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  undefined1 auStack_1c8 [32];
  undefined4 local_1a8;
  undefined4 local_198 [2];
  char *local_190;
  undefined8 local_188;
  int iStack_17c;
  undefined *local_178 [22];
  basic_ios<char,std::char_traits<char>_> local_c8 [96];
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_48;
  
  local_188 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  pcVar8 = (char *)0x0;
  local_198[0] = 0;
  if ((char)param_1[0x2e] == '\0') {
    local_190 = (char *)FUN_1811316e0(0x18);
    if (local_190 != (char *)0x0) {
      FUN_1805a48c0(local_190,"Hasher object has not been initialized");
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    if (pcVar3 != (char *)0x0) {
      local_190 = pcVar3;
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
      pcVar8 = pcVar3;
    }
    local_198[0] = 0xd9;
    local_190 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar8 + 8),&local_190);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_198);
  }
  puVar5 = (uint *)FUN_180600890(&local_190,param_2,0);
  if (1 < *puVar5) {
    local_178[0] = &DAT_181bb7e88;
    std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_c8);
    local_198[0] = 4;
    puVar9 = param_2;
    if (7 < (ulonglong)param_2[3]) {
      puVar9 = (undefined8 *)*param_2;
    }
    local_1a8 = 0;
    FUN_18060f0b0(local_178,puVar9,0x20);
    *(undefined ***)((longlong)local_178 + (longlong)*(int *)(local_178[0] + 4)) =
         boost::filesystem::basic_ifstream<char,std::char_traits<char>_>::vftable;
    *(int *)((longlong)&iStack_17c + (longlong)*(int *)(local_178[0] + 4)) =
         *(int *)(local_178[0] + 4) + -0xb0;
    uVar7 = FUN_1805ff960(param_2,0);
    uVar11 = 0xa00000;
    if (uVar7 < 0xa00000) {
      uVar11 = uVar7;
    }
    pcVar8 = (char *)thunk_FUN_1811316e0(uVar11);
    local_190 = pcVar8;
    for (; uVar7 != 0; uVar7 = uVar7 - uVar10) {
      uVar10 = uVar7;
      if (uVar11 < uVar7) {
        uVar10 = uVar11;
      }
      std::basic_istream<char,std::char_traits<char>_>::read
                ((basic_istream<char,std::char_traits<char>_> *)local_178,pcVar8,uVar10);
      (**(code **)(*param_1 + 0x20))(param_1,pcVar8,uVar10 & 0xffffffff);
    }
                    /* WARNING: Subroutine does not return */
    free(pcVar8);
  }
  local_190 = (char *)FUN_1811316e0(0x18);
  pcVar3 = pcVar8;
  if (local_190 != (char *)0x0) {
    pcVar3 = (char *)FUN_1805a48c0(local_190,"This file does not exist: \"%s\"");
  }
  pcVar6 = (char *)FUN_1811316e0(0x18);
  local_190 = pcVar6;
  if (pcVar6 != (char *)0x0) {
    FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
    pcVar8 = pcVar6;
  }
  uVar4 = FUN_1805f71a0();
  local_58 = 0;
  local_50 = 0xf;
  local_68 = 0;
  local_198[0] = 2;
  plVar1 = param_2 + 2;
  if (*plVar1 != 0) {
    puVar9 = param_2;
    if (7 < (ulonglong)param_2[3]) {
      puVar9 = (undefined8 *)*param_2;
      param_2 = (undefined8 *)*param_2;
    }
    FUN_1805f5100(param_2,(longlong)puVar9 + *plVar1 * 2,&local_68,uVar4);
  }
  FUN_1805b2240(*(undefined8 *)(pcVar3 + 8),&local_68);
  if (local_50 < 0x10) {
    local_198[0] = 0xdb;
    local_190 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\hasher.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar8 + 8),&local_190);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_198);
  }
  pvVar2 = (void *)CONCAT71(uStack_67,local_68);
  _Memory = pvVar2;
  if ((0xfff < local_50 + 1) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18061ad20 size=1077 ############

void FUN_18061ad20(void)

{
  void *pvVar1;
  longlong lVar2;
  undefined8 uVar3;
  void *_Memory;
  int iVar4;
  uint uVar5;
  uint uVar6;
  longlong lVar7;
  undefined1 auStack_4c8 [48];
  longlong **local_498;
  undefined8 local_488;
  undefined4 *local_478;
  longlong local_470;
  undefined4 local_468;
  undefined4 local_464;
  undefined4 local_460;
  undefined4 local_45c;
  uint local_458;
  uint local_454;
  longlong *local_450;
  undefined8 uStack_448;
  undefined8 local_440;
  longlong local_438;
  longlong local_430;
  longlong *local_428;
  undefined8 uStack_420;
  undefined8 local_418;
  undefined8 local_410;
  undefined8 local_408;
  longlong *local_3c8;
  undefined8 local_3c0;
  longlong local_3b8;
  longlong *local_3b0;
  undefined8 local_3a8;
  longlong local_3a0;
  undefined8 local_368;
  undefined4 local_328 [2];
  undefined1 local_320 [440];
  undefined8 local_168;
  undefined8 uStack_160;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined1 local_128;
  undefined7 uStack_127;
  undefined8 local_118;
  ulonglong local_110;
  ulonglong local_30;
  
  local_368 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_4c8;
  uVar6 = (uint)&stack0x00000000 & 0x14ff;
  uVar5 = ((uVar6 + 1) * uVar6 + 7) % 0x51;
  uVar5 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_458 = (int)(-uVar5 | uVar5) >> 0x1f & 0xf8e6U ^ 0xfad6;
  uVar5 = (uint)&stack0x00000000 & 0x2ff;
  iVar4 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  uVar5 = uVar6 * uVar6 * 0x10 + 4;
  local_454 = 0xe553 << ((byte)(((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e) &
                         (char)uVar5 + (char)(uVar5 / 0x13) * -0x13 & 0x1f) ^ 0xe043;
  lVar7 = 0;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18265f368) && (_Init_thread_header(&DAT_18265f368), DAT_18265f368 == -1)) {
    lVar2 = FUN_1811316e0(0x88);
    local_498 = (longlong **)lVar2;
    if (lVar2 != 0) {
      lVar7 = lVar2 + 0x39;
      *(longlong *)(lVar2 + 8) = lVar7;
      local_470 = lVar2 + 0x28;
      uVar3 = FUN_1811316e0(0x58);
      *(undefined8 *)(lVar2 + 0x30) = uVar3;
      FUN_180619400(lVar2 + 0x39);
      FUN_1806194a0(lVar2 + 0x39);
      *(undefined8 *)(lVar2 + 0x40) = 0;
      *(longlong *)(lVar2 + 0x50) = lVar7;
      *(longlong *)(lVar2 + 0x70) = lVar7;
      lVar7 = lVar2;
    }
    DAT_18265f360 = lVar7;
    _Init_thread_footer(&DAT_18265f368);
  }
  local_498 = (longlong **)0x0;
  local_488 = 0x13c75a0;
  local_470 = 0x1813c75a0;
  local_478 = &DAT_181405818;
  local_45c = 0xb;
  local_460 = 10;
  local_464 = 9;
  local_468 = 7;
  local_450 = (longlong *)0x0;
  uStack_448 = 0;
  local_440 = 0;
  local_438 = 0;
  local_430 = 0;
  local_450 = (longlong *)FUN_1811316e0(0x10);
  local_168 = 0;
  uStack_160 = 0;
  *local_450 = 0;
  local_450[1] = 0;
  *local_450 = (longlong)&local_450;
  local_118 = 0;
  local_110 = 0xf;
  local_128 = 0;
  FUN_1805a6cb0(&local_128,"gostr3411",9);
  local_328[0] = 0;
  FUN_1805a4070(local_320,&local_128);
  FUN_18061da50(&local_450,local_328);
  if (local_110 < 0x10) {
    local_118 = 0;
    local_110 = 0xf;
    local_128 = 0;
    local_498 = &local_428;
    local_428 = (longlong *)0x0;
    uStack_420 = 0;
    local_418 = 0;
    local_410 = 0;
    local_408 = 0;
    local_428 = (longlong *)FUN_1811316e0(0x10);
    local_158 = 0;
    uStack_150 = 0;
    *local_428 = 0;
    local_428[1] = 0;
    *local_428 = (longlong)&local_428;
    local_3b8 = local_430 + local_438;
    local_3c0 = 0;
    local_3c8 = local_450;
    local_3a8 = 0;
    local_3a0 = local_438;
    local_3b0 = local_450;
    FUN_18060d080(&local_428,&local_3b0,&local_3c8);
    FUN_180618b80(&local_450);
                    /* WARNING: Subroutine does not return */
    free(local_450);
  }
  pvVar1 = (void *)CONCAT71(uStack_127,local_128);
  _Memory = pvVar1;
  if ((0xfff < local_110 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180621520 size=83 ############

undefined8 * FUN_180621520(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Certifier>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180622710 size=177 ############

ulonglong FUN_180622710(ulonglong *param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (param_2 != 0) {
    if (0x492492492492492 < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = param_2 * 0x38;
    uVar3 = 0xffffffffffffffff;
    if ((param_2 < 0x492492492492493) && (uVar3 = uVar4, uVar4 < 0x1000)) {
      if (uVar4 != 0) {
        uVar2 = FUN_1811316e0(uVar4);
      }
    }
    else {
      uVar2 = uVar3 + 0x27;
      if (uVar3 + 0x27 <= uVar3) {
        uVar2 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar2);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
    }
    *param_1 = uVar2;
    param_1[1] = uVar2;
    param_1[2] = uVar4 + *param_1;
    uVar2 = CONCAT71((int7)(*param_1 >> 8),1);
  }
  return uVar2;
}



############ FUN_ 18062cbf0 size=116 ############

void FUN_18062cbf0(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x28;
  if (param_2 < 0x666666666666667) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 180631980 size=1385 ############

/* WARNING: Instruction at (ram,0x000180631c7c) overlaps instruction at (ram,0x000180631c78)
    */
/* WARNING: Removing unreachable block (ram,0x000180631a89) */
/* WARNING: Removing unreachable block (ram,0x000180631ace) */

int FUN_180631980(void)

{
  void *pvVar1;
  int iVar2;
  longlong lVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  void *_Memory;
  longlong lVar6;
  uint uVar7;
  uint uVar8;
  ulonglong uVar9;
  int unaff_retaddr;
  undefined1 auStack_3b8 [48];
  undefined4 local_388;
  undefined4 *local_380;
  longlong **local_378;
  undefined *local_368;
  uint local_358;
  uint local_354;
  longlong *local_348;
  undefined8 uStack_340;
  undefined8 local_338;
  longlong local_330;
  longlong local_328;
  longlong *local_320;
  undefined8 uStack_318;
  undefined8 local_310;
  undefined8 local_308;
  undefined8 local_300;
  longlong *local_2e0;
  undefined8 local_2d8;
  longlong local_2d0;
  longlong *local_2c8;
  undefined8 local_2c0;
  longlong local_2b8;
  undefined8 local_268;
  undefined4 local_260 [2];
  undefined1 local_258 [328];
  undefined8 local_110;
  undefined8 uStack_108;
  undefined8 local_100;
  undefined8 uStack_f8;
  undefined1 local_f0;
  undefined7 uStack_ef;
  undefined8 local_e0;
  ulonglong local_d8;
  ulonglong local_38;
  
  local_268 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_3b8;
  uVar7 = (uint)&stack0x00000000;
  uVar8 = uVar7 & 0x3bf;
  local_354 = 0xaf0 - ((uVar8 + 2) * (uVar8 + 1) * uVar8) % 3 ^ 0xa70;
  if ((((uVar8 + 2) * (uVar8 + 1) * uVar8) % 3 & 10) == 0) {
    uVar7 = ((uVar7 & 0xfff) + 1) * (uVar7 & 0xfff) + 0x323f & 0x80000001;
  }
  else {
    uVar7 = (((uVar7 & 0x32ff) + 1) * (uVar7 & 0x32ff) + 7) % 0x51;
  }
  local_358 = ((int)(-uVar7 | uVar7) >> 0x1f) * 0x2051 & 0x59abU ^ 0x569b;
  uVar9 = (ulonglong)local_358;
  lVar6 = 0;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18265f548) && (_Init_thread_header(&DAT_18265f548), DAT_18265f548 == -1)) {
    lVar3 = FUN_1811316e0(0x88);
    local_378 = (longlong **)lVar3;
    if (lVar3 != 0) {
      lVar6 = lVar3 + 0x39;
      *(longlong *)(lVar3 + 8) = lVar6;
      local_368 = (undefined *)(lVar3 + 0x28);
      uVar4 = FUN_1811316e0(0x58);
      *(undefined8 *)(lVar3 + 0x30) = uVar4;
      FUN_180619400(lVar3 + 0x39);
      FUN_1806194a0(lVar3 + 0x39);
      *(undefined8 *)(lVar3 + 0x40) = 0;
      *(longlong *)(lVar3 + 0x50) = lVar6;
      *(longlong *)(lVar3 + 0x70) = lVar6;
      lVar6 = lVar3;
    }
    DAT_18265f540 = lVar6;
    _Init_thread_footer(&DAT_18265f548);
  }
  local_378 = (longlong **)0x0;
  local_380 = &DAT_1826dc0fc;
  local_368 = &DAT_1826dc200;
  local_388 = 0x811c9ddb;
  do {
    uVar5 = 0x501c;
    iVar2 = FUN_18062fd44();
    if ((SBORROW8(~uVar9,-1)) && ((uVar5 & 0xc700) == 0)) {
      DAT_00000000 = DAT_00000000 | (byte)(uVar5 >> 8);
      return CONCAT31((int3)((uint)(iVar2 + -0x1452d587) >> 8),(char)(iVar2 + -0x1452d587) + '$') +
             -0x7f9ce396;
    }
    uVar9 = ~(~uVar9 + 1) + 1;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_348 = (longlong *)0x0;
  uStack_340 = 0;
  local_338 = 0;
  local_330 = 0;
  local_328 = 0;
  local_348 = (longlong *)FUN_1811316e0(0x10);
  local_100 = 0;
  uStack_f8 = 0;
  *local_348 = 0;
  local_348[1] = 0;
  *local_348 = (longlong)&local_348;
  local_e0 = 0;
  local_d8 = 0xf;
  local_f0 = 0;
  FUN_1805a6cb0(&local_f0,"Undefined",9);
  local_260[0] = 0;
  FUN_1805a4070(local_258,&local_f0);
  FUN_18061da50(&local_348,local_260);
  if (local_d8 < 0x10) {
    local_e0 = 0;
    local_d8 = 0xf;
    local_f0 = 0;
    local_378 = &local_320;
    local_320 = (longlong *)0x0;
    uStack_318 = 0;
    local_310 = 0;
    local_308 = 0;
    local_300 = 0;
    local_320 = (longlong *)FUN_1811316e0(0x10);
    local_110 = 0;
    uStack_108 = 0;
    *local_320 = 0;
    local_320[1] = 0;
    *local_320 = (longlong)&local_320;
    local_2d0 = local_328 + local_330;
    local_2d8 = 0;
    local_2e0 = local_348;
    local_2c0 = 0;
    local_2b8 = local_330;
    local_2c8 = local_348;
    FUN_18060d080(&local_320,&local_2c8,&local_2e0);
    FUN_180618b80(&local_348);
                    /* WARNING: Subroutine does not return */
    free(local_348);
  }
  pvVar1 = (void *)CONCAT71(uStack_ef,local_f0);
  _Memory = pvVar1;
  if ((0xfff < local_d8 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18063cba0 size=376 ############

void FUN_18063cba0(longlong param_1,longlong *param_2)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *local_res8;
  char *local_res10;
  
  puVar4 = (undefined8 *)0x0;
  if (*(char *)(param_1 + 0x210) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Encryptor object has not been initialized");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x149);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  lVar5 = param_2[1] - *param_2;
  if (lVar5 != 0) {
    if (*(char *)(param_1 + 0x211) != '\0') {
      FUN_18063de30(param_1,0,lVar5,*param_2);
      return;
    }
    iVar1 = FUN_1806fd540(param_1 + 8);
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar1);
    if (iVar1 != 0) {
      local_res10 = (char *)FUN_1811316e0(0x18);
      if (local_res10 != (char *)0x0) {
        puVar4 = (undefined8 *)FUN_1805a48c0(local_res10,"[%d] ENCR_Decrypt error");
      }
      lVar5 = FUN_1805c0260();
      FUN_18060e760(puVar4[1],&local_res8);
      local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x159);
      local_res10 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,&local_res8);
    }
  }
  return;
}



############ FUN_ 18063cd40 size=2081 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018063d685) overlaps instruction at (ram,0x00018063d683)
    */
/* WARNING: Removing unreachable block (ram,0x00018063da58) */
/* WARNING: Removing unreachable block (ram,0x00018063ce74) */
/* WARNING: Removing unreachable block (ram,0x00018063ce8b) */
/* WARNING: Removing unreachable block (ram,0x00018063d683) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18063cd40(ulonglong param_1,longlong param_2,undefined8 param_3)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  uint uVar42;
  uint uVar43;
  uint uVar44;
  uint uVar45;
  uint uVar46;
  uint uVar47;
  uint uVar48;
  uint uVar49;
  uint uVar50;
  uint uVar51;
  uint uVar52;
  uint uVar53;
  uint uVar54;
  uint uVar55;
  uint uVar56;
  char *pcVar57;
  undefined8 uVar58;
  longlong lVar59;
  uint uVar60;
  uint uVar61;
  uint uVar62;
  uint uVar63;
  undefined1 *puVar64;
  longlong lVar65;
  int *piVar66;
  char *pcVar67;
  int unaff_retaddr;
  undefined1 auStack_c8 [32];
  undefined4 *local_a8;
  undefined *local_a0;
  undefined8 local_98;
  undefined4 local_90 [2];
  int aiStack_88 [2];
  undefined4 auStack_80 [2];
  int aiStack_78 [2];
  undefined4 auStack_70 [2];
  char *local_68;
  char *pcStack_60;
  char *pcStack_58;
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  pcVar57 = (char *)0x0;
  uVar60 = (uint)&stack0x00000000 & 0x33f;
  lVar59 = 0;
  local_a8 = &DAT_181543570;
  local_a0 = &DAT_181543670;
  local_98 = 0x13a5bc9e;
  uVar2 = DAT_181543570 * 0x5bd1e995;
  uVar3 = DAT_181543574 * 0x5bd1e995;
  uVar4 = DAT_181543578 * 0x5bd1e995;
  pcVar67 = (char *)0x0;
  if (*(char *)(param_1 + 0x210) == '\0') {
    local_68 = (char *)FUN_1811316e0(0x18);
    if (local_68 == (char *)0x0) {
      local_a8 = (undefined4 *)0x0;
    }
    else {
      local_a8 = (undefined4 *)FUN_1805a48c0(local_68,"Encryptor object has not been initialized");
    }
    pcVar57 = (char *)FUN_1811316e0(0x18);
    if (pcVar57 != (char *)0x0) {
      local_68 = pcVar57;
      FUN_1805a48c0(pcVar57,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar57 = pace::PaceLocationInfoFormatter::vftable;
      pcVar67 = pcVar57;
    }
    local_90[0] = 0x165;
    local_68 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
    uVar58 = FUN_1805a21d0(*(undefined8 *)(pcVar67 + 8),&local_68);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar58,local_90);
  }
  uVar5 = DAT_18154357c * 0x5bd1e995;
  uVar6 = DAT_181543580 * 0x5bd1e995;
  uVar7 = DAT_181543584 * 0x5bd1e995;
  uVar8 = DAT_181543588 * 0x5bd1e995;
  uVar9 = DAT_18154358c * 0x5bd1e995;
  uVar10 = DAT_181543590 * 0x5bd1e995;
  uVar11 = DAT_181543594 * 0x5bd1e995;
  uVar12 = DAT_181543598 * 0x5bd1e995;
  uVar13 = DAT_18154359c * 0x5bd1e995;
  uVar14 = DAT_1815435a0 * 0x5bd1e995;
  uVar15 = DAT_1815435a4 * 0x5bd1e995;
  uVar16 = DAT_1815435a8 * 0x5bd1e995;
  uVar17 = DAT_1815435ac * 0x5bd1e995;
  uVar18 = DAT_1815435b0 * 0x5bd1e995;
  uVar19 = DAT_1815435b4 * 0x5bd1e995;
  uVar20 = DAT_1815435b8 * 0x5bd1e995;
  uVar21 = DAT_1815435bc * 0x5bd1e995;
  uVar22 = DAT_1815435c0 * 0x5bd1e995;
  uVar23 = DAT_1815435c4 * 0x5bd1e995;
  uVar24 = DAT_1815435c8 * 0x5bd1e995;
  uVar25 = DAT_1815435cc * 0x5bd1e995;
  uVar26 = DAT_1815435d0 * 0x5bd1e995;
  uVar27 = DAT_1815435d4 * 0x5bd1e995;
  uVar28 = DAT_1815435d8 * 0x5bd1e995;
  uVar29 = DAT_1815435dc * 0x5bd1e995;
  uVar30 = DAT_1815435e0 * 0x5bd1e995;
  uVar31 = DAT_1815435e4 * 0x5bd1e995;
  uVar32 = DAT_1815435e8 * 0x5bd1e995;
  uVar33 = DAT_1815435ec * 0x5bd1e995;
  uVar34 = DAT_1815435f0 * 0x5bd1e995;
  uVar35 = DAT_1815435f4 * 0x5bd1e995;
  piVar66 = (int *)register0x00000020;
  do {
    if (param_1 == ((uint)&stack0x00000000 & 0x66ff)) {
      lVar65 = (longlong)piVar66 + lVar59;
      lVar59 = lVar59 - lVar65;
      piVar66 = (int *)-lVar59;
      lVar59 = lVar65 + lVar59;
    }
    pcVar67 = (char *)((-(longlong)pcVar67 ^ 0xffffffffffffffffU) + 1);
    uVar61 = (*piVar66 + 1) * *piVar66 & 0x80000001;
    if ((int)uVar61 < 0) {
      uVar61 = (uVar61 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar61 != 0);
  uVar61 = DAT_1815435f8 * 0x5bd1e995;
  uVar36 = DAT_1815435fc * 0x5bd1e995;
  uVar37 = DAT_181543600 * 0x5bd1e995;
  uVar38 = DAT_181543604 * 0x5bd1e995;
  uVar39 = DAT_181543608 * 0x5bd1e995;
  uVar40 = DAT_18154360c * 0x5bd1e995;
  uVar41 = DAT_181543610 * 0x5bd1e995;
  uVar42 = DAT_181543614 * 0x5bd1e995;
  uVar43 = DAT_181543618 * 0x5bd1e995;
  uVar44 = DAT_18154361c * 0x5bd1e995;
  uVar45 = DAT_181543620 * 0x5bd1e995;
  uVar46 = DAT_181543624 * 0x5bd1e995;
  uVar47 = DAT_181543628 * 0x5bd1e995;
  uVar48 = DAT_18154362c * 0x5bd1e995;
  uVar49 = DAT_181543630 * 0x5bd1e995;
  uVar50 = DAT_181543634 * 0x5bd1e995;
  uVar51 = DAT_181543638 * 0x5bd1e995;
  uVar52 = DAT_18154363c * 0x5bd1e995;
  uVar53 = DAT_181543640 * 0x5bd1e995;
  do {
    pcVar57 = pcVar67 + (longlong)(pcVar57 + -0x5a4c6c31);
    pcVar67 = (char *)(~((((longlong)pcVar67 - (longlong)pcVar57 ^ 0xffffffffffffffffU) + 1) -
                        (longlong)pcVar57) + 1);
    pcVar57 = pcVar57 + (0x5a4c6c31 - (longlong)pcVar67);
    uVar62 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar62 < 0) {
      uVar62 = (uVar62 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar62 != 0);
  uVar62 = DAT_181543644 * 0x5bd1e995;
  uVar54 = DAT_181543648 * 0x5bd1e995;
  uVar55 = _UNK_18154364c * 0x5bd1e995;
  uVar56 = _UNK_181543650 * 0x5bd1e995;
  do {
    func_0x00018063c872();
    uVar63 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar63 < 0) {
      uVar63 = (uVar63 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar63 != 0);
  do {
                    /* WARNING: Bad instruction - Truncating control flow here */
    uVar63 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar63 < 0) {
      uVar63 = (uVar63 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar63 != 0);
  uVar2 = (((uint)(_UNK_181543668 * 0x5bd1e995) >> 0x18 ^ _UNK_181543668 * 0x5bd1e995) * 0x5bd1e995
          ^ (((uint)(_UNK_181543664 * 0x5bd1e995) >> 0x18 ^ _UNK_181543664 * 0x5bd1e995) *
             0x5bd1e995 ^
            (((uint)(_UNK_181543660 * 0x5bd1e995) >> 0x18 ^ _UNK_181543660 * 0x5bd1e995) *
             0x5bd1e995 ^
            (((uint)(_UNK_18154365c * 0x5bd1e995) >> 0x18 ^ _UNK_18154365c * 0x5bd1e995) *
             0x5bd1e995 ^
            (((uint)(_UNK_181543658 * 0x5bd1e995) >> 0x18 ^ _UNK_181543658 * 0x5bd1e995) *
             0x5bd1e995 ^
            (((uint)(_UNK_181543654 * 0x5bd1e995) >> 0x18 ^ _UNK_181543654 * 0x5bd1e995) *
             0x5bd1e995 ^
            ((uVar56 >> 0x18 ^ uVar56) * 0x5bd1e995 ^
            ((uVar55 >> 0x18 ^ uVar55) * 0x5bd1e995 ^
            ((uVar54 >> 0x18 ^ uVar54) * 0x5bd1e995 ^
            ((uVar62 >> 0x18 ^ uVar62) * 0x5bd1e995 ^
            ((uVar53 >> 0x18 ^ uVar53) * 0x5bd1e995 ^
            ((uVar52 >> 0x18 ^ uVar52) * 0x5bd1e995 ^
            ((uVar51 >> 0x18 ^ uVar51) * 0x5bd1e995 ^
            ((uVar50 >> 0x18 ^ uVar50) * 0x5bd1e995 ^
            ((uVar49 >> 0x18 ^ uVar49) * 0x5bd1e995 ^
            ((uVar48 >> 0x18 ^ uVar48) * 0x5bd1e995 ^
            ((uVar47 >> 0x18 ^ uVar47) * 0x5bd1e995 ^
            ((uVar46 >> 0x18 ^ uVar46) * 0x5bd1e995 ^
            ((uVar45 >> 0x18 ^ uVar45) * 0x5bd1e995 ^
            ((uVar44 >> 0x18 ^ uVar44) * 0x5bd1e995 ^
            ((uVar43 >> 0x18 ^ uVar43) * 0x5bd1e995 ^
            ((uVar42 >> 0x18 ^ uVar42) * 0x5bd1e995 ^
            ((uVar41 >> 0x18 ^ uVar41) * 0x5bd1e995 ^
            ((uVar40 >> 0x18 ^ uVar40) * 0x5bd1e995 ^
            ((uVar39 >> 0x18 ^ uVar39) * 0x5bd1e995 ^
            ((uVar38 >> 0x18 ^ uVar38) * 0x5bd1e995 ^
            ((uVar37 >> 0x18 ^ uVar37) * 0x5bd1e995 ^
            ((uVar36 >> 0x18 ^ uVar36) * 0x5bd1e995 ^
            ((uVar61 >> 0x18 ^ uVar61) * 0x5bd1e995 ^
            ((uVar35 >> 0x18 ^ uVar35) * 0x5bd1e995 ^
            ((uVar34 >> 0x18 ^ uVar34) * 0x5bd1e995 ^
            ((uVar33 >> 0x18 ^ uVar33) * 0x5bd1e995 ^
            ((uVar32 >> 0x18 ^ uVar32) * 0x5bd1e995 ^
            ((uVar31 >> 0x18 ^ uVar31) * 0x5bd1e995 ^
            ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
            ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^
            ((uVar28 >> 0x18 ^ uVar28) * 0x5bd1e995 ^
            ((uVar27 >> 0x18 ^ uVar27) * 0x5bd1e995 ^
            ((uVar26 >> 0x18 ^ uVar26) * 0x5bd1e995 ^
            ((uVar25 >> 0x18 ^ uVar25) * 0x5bd1e995 ^
            ((uVar24 >> 0x18 ^ uVar24) * 0x5bd1e995 ^
            ((uVar23 >> 0x18 ^ uVar23) * 0x5bd1e995 ^
            ((uVar22 >> 0x18 ^ uVar22) * 0x5bd1e995 ^
            ((uVar21 >> 0x18 ^ uVar21) * 0x5bd1e995 ^
            ((uVar20 >> 0x18 ^ uVar20) * 0x5bd1e995 ^
            ((uVar19 >> 0x18 ^ uVar19) * 0x5bd1e995 ^
            ((uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
            ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
            ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
            ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
            ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
            ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
            ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
            ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
            ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
            ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
            ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
            ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
            ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
            ((uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995 ^
            (((uVar3 >> 0x18 ^ uVar3) * 0x5bd1e995 ^
             ((uVar2 >> 0x18 ^ uVar2) * 0x5bd1e995 ^ 0xf7599d4f) * 0x5bd1e995) * 0x5bd1e995 ^
            (uVar4 >> 0x18 ^ uVar4) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
            0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995 ^
          ((uint)(_UNK_18154366c * 0x5bd1e995) >> 0x18 ^ _UNK_18154366c * 0x5bd1e995) * 0x5bd1e995 ^
          0x2099770d;
  uVar2 = (uVar2 >> 6 | uVar2 << 0x1a) ^ 0x57e1fed0;
  lVar65 = (longlong)
           (int)(0xfbcf >> ((char)(((uVar60 + 2) * (uVar60 + 1) * uVar60) / 3) * -3 & 0x1fU) &
                 0xc2c3U ^ 0xcbd3);
  if ((int)CONCAT71((int7)((ulonglong)pcVar67 >> 8),(uVar2 << 0xe | uVar2 >> 0x12) == 0x2d3807fe) *
      0xb == 0) {
    if (param_2 == 0) {
      if (*(char *)(param_1 + 0x211) == '\0') {
        FUN_18063de30(param_1,0,0,param_3);
      }
      else {
        aiStack_88[0] = FUN_1806fd540(param_1 + 8);
        if (aiStack_88[0] == 0) {
          lVar59 = FUN_1811316e0(0x18);
          if (lVar59 != 0) {
            pcVar67 = (char *)FUN_1805a48c0(lVar59,"[%d] ENCR_Decrypt error");
          }
          lVar59 = FUN_1805c0260();
          FUN_18060e760(*(undefined8 *)(pcVar67 + 8),aiStack_88);
          auStack_80[0] = 0x186;
          pcStack_60 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
          uVar58 = FUN_1805a21d0(*(undefined8 *)(lVar59 + 8),&pcStack_60);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar58,auStack_80);
        }
      }
    }
    func_0x00018063c8d1();
    thunk_FUN_1805a9280();
    return;
  }
  puVar64 = auStack_c8;
  if (param_2 != 0) {
    if (*(char *)(param_1 + 0x211) == '\0') {
      aiStack_78[0] = FUN_1806fd540(param_1 + 8,param_3,param_2);
      puVar64 = auStack_c8;
      if (aiStack_78[0] != 0) {
        lVar59 = FUN_1811316e0(0x18);
        if (lVar59 != 0) {
          pcVar67 = (char *)FUN_1805a48c0(lVar59,"[%d] ENCR_Decrypt error");
        }
        lVar59 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(pcVar67 + 8),aiStack_78);
        auStack_70[0] = 0x173;
        pcStack_58 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
        uVar58 = FUN_1805a21d0(*(undefined8 *)(lVar59 + 8),&pcStack_58);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar58,auStack_70);
      }
    }
    else {
      FUN_18063de30(param_1,0,param_2,param_3);
      puVar64 = auStack_c8;
    }
  }
  do {
    *(char **)(puVar64 + -8) = pcVar67;
    *(longlong *)(puVar64 + -0x10) = lVar65;
    *(longlong *)(puVar64 + -0x18) = lVar59;
    lVar1 = -lVar65;
    lVar59 = *(longlong *)(puVar64 + lVar1 + 0x8f8);
    lVar65 = *(longlong *)(puVar64 + lVar1 + 0x900);
    pcVar67 = *(char **)(puVar64 + lVar1 + 0x908);
    puVar64 = puVar64 + lVar1 + 0x910;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  return;
}



############ FUN_ 18063daf0 size=376 ############

void FUN_18063daf0(longlong param_1,longlong *param_2)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *local_res8;
  char *local_res10;
  
  puVar4 = (undefined8 *)0x0;
  if (*(char *)(param_1 + 0x210) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Encryptor object has not been initialized");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x17e);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  lVar5 = *param_2;
  if (param_2[1] - lVar5 != 0) {
    if (*(char *)(param_1 + 0x211) != '\0') {
      FUN_18063de30(param_1,CONCAT71((int7)((ulonglong)lVar5 >> 8),1),param_2[1] - lVar5,lVar5);
      return;
    }
    iVar1 = FUN_1806fe9a0(param_1 + 8);
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar1);
    if (iVar1 != 0) {
      local_res10 = (char *)FUN_1811316e0(0x18);
      if (local_res10 != (char *)0x0) {
        puVar4 = (undefined8 *)FUN_1805a48c0(local_res10,"[%d] ENCR_Encrypt error");
      }
      lVar5 = FUN_1805c0260();
      FUN_18060e760(puVar4[1],&local_res8);
      local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x18d);
      local_res10 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,&local_res8);
    }
  }
  return;
}



############ FUN_ 18063dc90 size=379 ############

void FUN_18063dc90(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *local_res8;
  char *local_res10;
  
  puVar4 = (undefined8 *)0x0;
  if (*(char *)(param_1 + 0x210) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Encryptor object has not been initialized");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x199);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  if (param_2 != 0) {
    if (*(char *)(param_1 + 0x211) == '\0') {
      iVar1 = FUN_1806fe9a0(param_1 + 8,param_3,param_2,param_4,0xfffffffffffffffe);
      local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar1);
      if (iVar1 != 0) {
        local_res10 = (char *)FUN_1811316e0(0x18);
        if (local_res10 != (char *)0x0) {
          puVar4 = (undefined8 *)FUN_1805a48c0(local_res10,"[%d] ENCR_Encrypt error");
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(puVar4[1],&local_res8);
        local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1a6);
        local_res10 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
        uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar3,&local_res8);
      }
    }
    else {
      FUN_18063de30(param_1,1,param_2,param_3);
    }
  }
  return;
}



############ FUN_ 18063f150 size=204 ############

undefined4 FUN_18063f150(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res8;
  char *local_res10;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x210) != '\0') {
    return *(undefined4 *)(param_1 + 0x234);
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"Encryptor object has not been initialized",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x228);
  local_res10 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 18063f250 size=205 ############

void FUN_18063f250(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res8;
  char *local_res10;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x210) != '\0') {
    FUN_1807002d0(*(undefined4 *)(param_1 + 8));
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"Encryptor object has not been initialized",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x233);
  local_res10 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 18063f570 size=558 ############

void FUN_18063f570(longlong param_1,undefined2 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  longlong lVar3;
  void *_Memory;
  char *local_res8;
  int local_res10 [2];
  void *local_40;
  undefined8 uStack_38;
  longlong local_30;
  
  if (*(char *)(param_1 + 0x210) == '\0') {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"Encryptor object has not been initialized");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      local_res8 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res10[0] = 0x115;
    local_res8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_res10);
  }
  local_40 = (void *)0x0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = CONCAT22(local_res10[0]._2_2_,param_2);
  FUN_18063f7c0(param_1,*(undefined4 *)(param_1 + 8),local_res10,param_3,&local_40);
  local_res10[0] = FUN_180700580(param_1 + 8,(undefined2)local_res10[0],local_40);
  if (local_res10[0] != 0) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8,"[%d] ENCR_Reset error");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar1;
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_res10);
    local_res10[0] = 0x12a;
    local_res8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\encryptor.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_res10);
  }
  if (local_40 == (void *)0x0) {
    return;
  }
  _Memory = local_40;
  if ((0xfff < (ulonglong)(local_30 - (longlong)local_40)) &&
     (_Memory = *(void **)((longlong)local_40 + -8),
     0x1f < (ulonglong)((longlong)local_40 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18063f9b0 size=97 ############

undefined8 * FUN_18063f9b0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::ILok2Commander>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18063fa20 size=97 ############

undefined8 * FUN_18063fa20(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::eden::thrift::ilok::Ilok2CertChain>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180645aa0 size=383 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180645aa0(longlong param_1,undefined4 param_2,undefined4 param_3,longlong *param_4)

{
  void *pvVar1;
  char *pcVar2;
  undefined8 uVar3;
  void *_Memory;
  size_t _Size;
  undefined1 auStack_b8 [32];
  undefined4 local_98 [2];
  undefined1 local_90 [8];
  char *local_88;
  undefined8 local_80;
  longlong *local_78;
  undefined4 local_70;
  undefined4 local_6c;
  undefined8 local_68;
  undefined8 local_60;
  ulonglong local_58;
  
  local_80 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_b8;
  _Size = param_4[1] - *param_4;
  local_78 = param_4;
  if (*(longlong *)(param_1 + 8) == 0) {
    local_88 = (char *)FUN_1811316e0(0x18);
    if (local_88 != (char *)0x0) {
      FUN_1805a48c0(local_88,"The commander for the target iLok device has not been set");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      local_88 = pcVar2;
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_98[0] = 500;
    local_88 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2protocols.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_88);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_98);
  }
  if (_Size != 0) {
    if (0x10 < _Size) {
      _Size = 0x10;
    }
    local_68 = 0;
    local_60 = 0;
    local_70 = param_2;
    local_6c = param_3;
    memcpy(&local_68,(void *)*param_4,_Size);
    (**(code **)(**(longlong **)(param_1 + 8) + 0x100))
              (*(longlong **)(param_1 + 8),&local_70,local_90);
  }
  pvVar1 = (void *)*param_4;
  if (pvVar1 == (void *)0x0) {
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_4[2] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180647c60 size=304 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180647c60(longlong param_1,undefined8 *param_2)

{
  char *pcVar1;
  undefined8 uVar2;
  char *pcVar3;
  undefined1 auStack_a8 [32];
  undefined4 local_88 [2];
  char *local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined8 local_60;
  undefined8 uStack_58;
  undefined8 local_48;
  undefined8 local_40;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  ulonglong local_28;
  
  local_78 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_a8;
  pcVar3 = (char *)0x0;
  if (*(longlong *)(param_1 + 8) != 0) {
    local_48 = 1;
    local_40 = 0;
    local_38 = 0;
    local_34 = 0xffffffff;
    local_30 = 0;
    (**(code **)(**(longlong **)(param_1 + 8) + 0xa8))
              (*(longlong **)(param_1 + 8),&local_48,&local_70,0);
    *param_2 = local_70;
    param_2[1] = uStack_68;
    param_2[2] = local_60;
    param_2[3] = uStack_58;
  }
  local_80 = (char *)FUN_1811316e0(0x18);
  if (local_80 != (char *)0x0) {
    FUN_1805a48c0(local_80,"The commander for the target iLok device has not been set");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 != (char *)0x0) {
    local_80 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    pcVar3 = pcVar1;
  }
  local_88[0] = 0x1a5;
  local_80 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2protocols.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_80);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_88);
}



############ FUN_ 180648f40 size=1766 ############

/* WARNING: Instruction at (ram,0x000180649cf7) overlaps instruction at (ram,0x000180649cf5)
    */
/* WARNING: Removing unreachable block (ram,0x000180648fe7) */

ulonglong FUN_180648f40(longlong param_1,int param_2,undefined8 param_3,undefined8 *param_4,
                       undefined8 param_5,undefined8 param_6)

{
  longlong *plVar1;
  byte bVar2;
  char cVar3;
  uint uVar4;
  char *pcVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  uint uVar8;
  undefined1 *puVar9;
  longlong lVar10;
  ulonglong uVar11;
  uint uVar12;
  uint uVar13;
  IMAGE_DOS_HEADER *pIVar14;
  uint *puVar15;
  char *pcVar16;
  longlong *plVar17;
  uint uVar18;
  uint *puVar19;
  uint *puVar20;
  uint *puVar21;
  longlong lVar22;
  uint *puVar23;
  IMAGE_DOS_HEADER *pIVar24;
  uint uVar25;
  int unaff_retaddr;
  undefined8 local_1b0;
  undefined1 local_1a8 [48];
  undefined4 local_178;
  undefined4 local_170 [2];
  undefined *local_168;
  undefined8 local_160;
  int local_158;
  int local_150;
  undefined8 local_140;
  undefined8 *local_138;
  undefined8 local_120;
  longlong local_118;
  char *local_110;
  longlong local_108;
  undefined8 local_100;
  undefined8 *local_f8;
  undefined8 local_f0;
  undefined8 local_d0;
  int local_64;
  ulonglong local_40;
  
  plVar17 = (longlong *)local_1a8;
  local_d0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)local_1a8;
  local_138 = param_4;
  local_120 = param_3;
  local_158 = param_2;
  local_118 = param_1;
  local_108 = param_1;
  local_150 = param_2;
  local_100 = param_3;
  local_f8 = param_4;
  local_f0 = param_6;
  puVar19 = (uint *)0xe8cee8b2;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_178 = 0x811c9e07;
  pIVar14 = &IMAGE_DOS_HEADER_180000000;
  local_168 = &DAT_1805cf184;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  param_4[1] = *param_4;
  local_140 = 0x2f347895092add95;
  local_160 = 0x1092add95;
  if (*(longlong *)(param_1 + 8) == 0) {
    local_110 = (char *)FUN_1811316e0(0x18);
    if (local_110 != (char *)0x0) {
      FUN_1805a48c0(local_110,"The commander for the target iLok device has not been set");
    }
    pcVar16 = (char *)0x0;
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 != (char *)0x0) {
      local_110 = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
      pcVar16 = pcVar5;
    }
    local_170[0] = 0x315;
    local_110 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2protocols.cpp";
    uVar6 = FUN_1805a21d0(*(undefined8 *)(pcVar16 + 8),&local_110);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_170);
  }
  local_64 = param_2 + -0x20;
  uVar8 = 0x811c9e07;
  puVar20 = (uint *)&UNK_1805cf178;
  pIVar24 = pIVar14;
LAB_180649240:
  puVar21 = puVar20 + 1;
  if (puVar21 == (uint *)plVar17[8]) {
    *(int *)(plVar17 + 0xc) = (int)puVar19;
    *(undefined2 *)(plVar17 + 0x26) = 3;
    *(uint *)((longlong)plVar17 + 0x54) = uVar8;
    puVar9 = (undefined1 *)((longlong)plVar17 + 0x54);
    plVar17[-1] = (longlong)puVar19;
                    /* WARNING: Call to offcut address within same function */
    plVar17[-2] = 0x1806492a5;
    uVar7 = func_0x0001806492a8(puVar9,~-(longlong)pIVar14 + 1);
    *(char *)(plVar17 + 0x35) = (char)plVar17[0x35] + -1;
    *(int *)(uVar7 - 0x73) = *(int *)(uVar7 - 0x73) - (int)puVar9;
    lVar10 = *plVar17;
    *plVar17 = lVar10 + 0x110;
    plVar17[-1] = lVar10 + 0x60525;
    plVar17[-2] = lVar10 + -0x7be7f;
    plVar17[-3] = lVar10 + 0x1389e;
    plVar17[-4] = lVar10 + -0x391fd;
    plVar17[-5] = lVar10 + -0x4f177;
    plVar17[-6] = lVar10 + 0x181e;
    plVar17[-7] = lVar10 + 0x5ab4d;
    return uVar7 & 0xfffffffffffffff8;
  }
  do {
    uVar8 = ((int)plVar17[0x35] + 1) * (int)plVar17[0x35] & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  puVar23 = puVar21;
  if ((pIVar24 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar10._0_1_ = pIVar24->e_magic[0], lVar10._1_1_ = pIVar24->e_magic[1],
     lVar10._2_2_ = pIVar24->e_cblp, lVar10._4_2_ = pIVar24->e_cp, lVar10._6_2_ = pIVar24->e_crlc,
     -1 < lVar10)) {
    plVar17[0xd] = 0x2621fc0;
    lVar22 = (longlong)&DAT_182621fc0 + -plVar17[0xd];
    pIVar14 = pIVar24;
    do {
      if (puVar21 < (uint *)(-plVar17[0xd] + 0x182621fc8 + lVar10)) {
        pIVar24 = pIVar14;
        if (-1 < lVar10) {
          puVar15 = (uint *)(lVar22 + lVar10);
          if (puVar15 < puVar20 + 2) {
            *(uint *)(plVar17 + 0x2b) = *puVar21;
            goto LAB_180649c11;
          }
        }
        break;
      }
      pIVar24 = (IMAGE_DOS_HEADER *)&pIVar14->e_cparhdr;
      lVar10._0_2_ = pIVar14->e_cparhdr;
      lVar10._2_2_ = pIVar14->e_minalloc;
      lVar10._4_2_ = pIVar14->e_maxalloc;
      lVar10._6_2_ = pIVar14->e_ss;
      pIVar14 = pIVar24;
    } while (-1 < lVar10);
  }
  goto LAB_180649c30;
  while (puVar15 = (uint *)(lVar22 + lVar10), puVar15 < puVar20 + 2) {
LAB_180649c11:
    *(longlong *)((longlong)plVar17 + lVar10 + (lVar22 - (longlong)puVar21) + 0x158) =
         *(longlong *)puVar15 - lVar22;
    pIVar14 = (IMAGE_DOS_HEADER *)&pIVar14->e_cparhdr;
    lVar10 = *(longlong *)pIVar14;
    puVar23 = (uint *)(plVar17 + 0x2b);
    if (lVar10 < 0) break;
  }
LAB_180649c30:
  plVar1 = plVar17 + 0x35;
  do {
    puVar20 = (uint *)((longlong)plVar17 + 0x30);
    uVar11 = 0xd600;
    *(char *)((longlong)plVar17 + -8) = 'S';
    *(char *)((longlong)plVar17 + -7) = -100;
    *(char *)((longlong)plVar17 + -6) = 'd';
    *(char *)((longlong)plVar17 + -5) = -0x80;
    *(char *)((longlong)plVar17 + -4) = '\x01';
    *(char *)((longlong)plVar17 + -3) = '\0';
    *(char *)((longlong)plVar17 + -2) = '\0';
    *(char *)((longlong)plVar17 + -1) = '\0';
    puVar15 = puVar23;
    uVar7 = FUN_18064b29d(0xd600,puVar23,0);
    if ((uVar11 & 0xc300) == 0) {
      return uVar7;
    }
    if ((uVar11 & 0xc3) != 0) {
      return (ulonglong)CONCAT11((char)(uVar7 >> 8) + *(char *)plVar17,(char)uVar7);
    }
    *(uint **)((longlong)plVar17 + -8) = puVar19;
    plVar17 = (longlong *)((longlong)plVar17 + -8);
    pcVar16 = (char *)plVar17;
    if ((uVar11 & 0xc3) == 0) {
      if ((uVar11 & 0xc3) == 0) {
        uVar8 = *puVar20;
        goto LAB_180649c7a;
      }
    }
    else {
      while( true ) {
        uVar8 = (uint)uVar7;
        if ((uVar11 & 0xc300) == 0) {
          return 0x1eb0603;
        }
        *puVar20 = uVar8;
        puVar15 = *(uint **)pcVar16;
        if ((uVar11 & 0x41) != 0) {
          uVar8 = puVar15[-0x22d99ff];
          puVar19 = (uint *)(uVar11 - 1);
          bVar2 = (byte)uVar11 & 0x1f;
          *puVar19 = *puVar19 >> bVar2 | *puVar19 << 0x20 - bVar2;
          return (ulonglong)uVar8;
        }
        plVar17 = (longlong *)(pcVar16 + 8);
        pcVar16 = pcVar16 + 8;
        if ((uVar11 & 0xc300) != 0) break;
LAB_180649c7a:
        uVar7 = (ulonglong)(uVar8 ^ *puVar15);
        if ((uVar11 & 0xc300) == 0) {
          return 0x1eb068b;
        }
      }
    }
    uVar8 = ((int)*plVar1 + 1) * (int)*plVar1 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    puVar19 = puVar15;
  } while (uVar8 != 0);
  uVar8 = *(int *)((longlong)plVar17 + 0x30) * 0x10001a7;
  *(uint *)((longlong)plVar17 + 0x30) = uVar8;
  uVar18 = (uint)puVar15 | uVar8;
  uVar18 = uVar18 ^ uVar18 >> 10;
  uVar25 = uVar8 & 0x6f;
  uVar12 = uVar8 & 0x3f | 0x20;
  uVar4 = uVar8 & 0x1f | 0x76;
  cVar3 = (char)uVar25;
  uVar13 = 0;
  if ((int)(uint)(uVar4 * uVar4 * 0x4645 == uVar12 * uVar12 * 0xd3b1) >>
      ((cVar3 + '\x01') * (cVar3 + '\x01') * cVar3 * cVar3 & 2U) != 0) {
    uVar4 = uVar8 & 0x3f | 0x20;
    uVar12 = uVar8 & 0x1f | 0x76;
    uVar13 = (uVar25 + 1) * (uVar25 + 1) * uVar25 * uVar25;
    do {
      uVar18 = uVar18 ^ uVar8;
      puVar21 = puVar21 + 1;
    } while ((int)(uint)(uVar12 * uVar12 * 0x4645 == uVar4 * uVar4 * 0xd3b1) >> ((byte)uVar13 & 2)
             != 0);
  }
  pIVar14 = (IMAGE_DOS_HEADER *)(ulonglong)uVar13;
  if ((uVar18 & 3) != 0) {
    uVar18 = uVar18 + uVar8;
  }
  puVar19 = (uint *)(ulonglong)(uVar18 * 0x11);
  puVar20 = puVar21;
  goto LAB_180649240;
}



############ FUN_ 180649e20 size=3182 ############

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

void FUN_180649e20(longlong param_1,int param_2,undefined4 *param_3,undefined8 *param_4,
                  undefined8 param_5,undefined8 param_6)

{
  undefined8 uVar1;
  uint uVar2;
  uint uVar3;
  ulonglong uVar4;
  int iVar5;
  undefined8 *puVar6;
  int iVar7;
  undefined4 uVar8;
  int unaff_retaddr;
  undefined1 auStack_1c8 [48];
  char *local_198;
  undefined8 local_190;
  int local_188;
  int local_184;
  undefined4 local_180 [2];
  undefined8 local_178;
  undefined8 local_170;
  int local_168;
  undefined4 local_15c;
  undefined4 local_158;
  undefined8 *local_150;
  longlong local_148;
  undefined4 *local_140;
  undefined8 *local_138;
  undefined4 *local_130;
  undefined4 local_128 [4];
  undefined8 *local_118;
  undefined8 local_110;
  char *local_108 [5];
  longlong local_e0;
  char *local_d8;
  undefined8 local_d0;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined4 local_90;
  undefined4 uStack_8c;
  undefined4 uStack_88;
  undefined4 uStack_84;
  undefined2 local_68;
  undefined2 local_66;
  undefined8 local_64;
  undefined4 local_5c;
  undefined4 local_58;
  int local_54;
  undefined1 local_50;
  undefined1 local_4f;
  undefined2 local_4e;
  ulonglong local_48;
  
  local_d0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  local_110 = param_6;
  iVar5 = 0;
  local_158 = 0xa0;
  local_15c = 0xf20;
  local_170 = 0x2621fc0;
  local_138 = (undefined8 *)&DAT_181196320;
  local_198 = (char *)0xa08e778e;
  local_184 = -0x3361d2af;
  local_178 = 0x1e6546b64;
  local_190 = 0x11b873593;
  uVar2 = (DAT_181196320 * 0x16a88000 | (uint)(DAT_181196320 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0x97ed6be9;
  uVar2 = (DAT_181196324 * 0x16a88000 | (uint)(DAT_181196324 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196328 * 0x16a88000 | (uint)(DAT_181196328 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  iVar7 = local_184;
  do {
    iVar7 = iVar7 + iVar5;
    iVar5 = (-iVar5 ^ 0xffffffffU) + 1;
    iVar7 = iVar7 - iVar5;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = (DAT_18119632c * iVar7 * 0x8000 | (uint)(DAT_18119632c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  param_4[1] = *param_4;
  local_188 = param_2;
  local_168 = param_2;
  local_150 = param_4;
  local_148 = param_1;
  local_140 = param_3;
  local_130 = param_3;
  local_118 = param_4;
  local_e0 = param_1;
  if (*(longlong *)(param_1 + 8) == 0) {
    local_108[0] = (char *)FUN_1811316e0(0x18);
    if (local_108[0] == (char *)0x0) {
      local_170 = 0;
    }
    else {
      local_170 = FUN_1805a48c0(local_108[0],
                                "The commander for the target iLok device has not been set");
    }
    local_198 = (char *)FUN_1811316e0(0x18);
    if (local_198 == (char *)0x0) {
      local_198 = (char *)0x0;
    }
    else {
      local_108[0] = local_198;
      FUN_1805a48c0(local_198,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)local_198 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_128[0] = 0x390;
    local_108[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2protocols.cpp";
    uVar1 = FUN_1805a21d0(*(undefined8 *)(local_198 + 8),local_108);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar1,local_128);
  }
  uVar2 = (DAT_181196330 * iVar7 * 0x8000 | (uint)(DAT_181196330 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196334 * iVar7 * 0x8000 | (uint)(DAT_181196334 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196338 * iVar7 * 0x8000 | (uint)(DAT_181196338 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119633c * iVar7 * 0x8000 | (uint)(DAT_18119633c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196340 * iVar7 * 0x8000 | (uint)(DAT_181196340 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196344 * iVar7 * 0x8000 | (uint)(DAT_181196344 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196348 * iVar7 * 0x8000 | (uint)(DAT_181196348 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119634c * iVar7 * 0x8000 | (uint)(DAT_18119634c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196350 * iVar7 * 0x8000 | (uint)(DAT_181196350 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_54 = param_2 + -0x20;
  uVar2 = (DAT_181196354 * iVar7 * 0x8000 | (uint)(DAT_181196354 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196358 * iVar7 * 0x8000 | (uint)(DAT_181196358 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119635c * iVar7 * 0x8000 | (uint)(DAT_18119635c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196360 * iVar7 * 0x8000 | (uint)(DAT_181196360 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196364 * iVar7 * 0x8000 | (uint)(DAT_181196364 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196368 * iVar7 * 0x8000 | (uint)(DAT_181196368 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119636c * iVar7 * 0x8000 | (uint)(DAT_18119636c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196370 * iVar7 * 0x8000 | (uint)(DAT_181196370 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196374 * iVar7 * 0x8000 | (uint)(DAT_181196374 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_68 = 3;
  uVar2 = (DAT_181196378 * iVar7 * 0x8000 | (uint)(DAT_181196378 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119637c * iVar7 * 0x8000 | (uint)(DAT_18119637c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196380 * iVar7 * 0x8000 | (uint)(DAT_181196380 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196384 * iVar7 * 0x8000 | (uint)(DAT_181196384 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196388 * iVar7 * 0x8000 | (uint)(DAT_181196388 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119638c * iVar7 * 0x8000 | (uint)(DAT_18119638c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196390 * iVar7 * 0x8000 | (uint)(DAT_181196390 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_66 = 0;
  uVar2 = (DAT_181196394 * iVar7 * 0x8000 | (uint)(DAT_181196394 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196398 * iVar7 * 0x8000 | (uint)(DAT_181196398 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119639c * iVar7 * 0x8000 | (uint)(DAT_18119639c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963a0 * iVar7 * 0x8000 | (uint)(DAT_1811963a0 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963a4 * iVar7 * 0x8000 | (uint)(DAT_1811963a4 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963a8 * iVar7 * 0x8000 | (uint)(DAT_1811963a8 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_64 = 0;
  local_5c = 0;
  uVar2 = (DAT_1811963ac * iVar7 * 0x8000 | (uint)(DAT_1811963ac * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_58 = 0;
  uVar2 = (DAT_1811963b0 * iVar7 * 0x8000 | (uint)(DAT_1811963b0 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_50 = 1;
  uVar2 = (DAT_1811963b4 * iVar7 * 0x8000 | (uint)(DAT_1811963b4 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963b8 * iVar7 * 0x8000 | (uint)(DAT_1811963b8 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_4f = 1;
  uVar2 = (DAT_1811963bc * iVar7 * 0x8000 | (uint)(DAT_1811963bc * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963c0 * iVar7 * 0x8000 | (uint)(DAT_1811963c0 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963c4 * iVar7 * 0x8000 | (uint)(DAT_1811963c4 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963c8 * iVar7 * 0x8000 | (uint)(DAT_1811963c8 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963cc * iVar7 * 0x8000 | (uint)(DAT_1811963cc * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963d0 * iVar7 * 0x8000 | (uint)(DAT_1811963d0 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963d4 * iVar7 * 0x8000 | (uint)(DAT_1811963d4 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963d8 * iVar7 * 0x8000 | (uint)(DAT_1811963d8 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963dc * iVar7 * 0x8000 | (uint)(DAT_1811963dc * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963e0 * iVar7 * 0x8000 | (uint)(DAT_1811963e0 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963e4 * iVar7 * 0x8000 | (uint)(DAT_1811963e4 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_4e = 0;
  uVar2 = (DAT_1811963e8 * iVar7 * 0x8000 | (uint)(DAT_1811963e8 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963ec * iVar7 * 0x8000 | (uint)(DAT_1811963ec * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963f0 * iVar7 * 0x8000 | (uint)(DAT_1811963f0 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_198 = (char *)(ulonglong)uVar2;
  local_170 = 0xd4;
  (**(code **)(**(longlong **)(param_1 + 8) + 0xa8))
            (*(longlong **)(param_1 + 8),&local_68,&local_a0);
  *local_130 = local_a0;
  local_130[1] = uStack_9c;
  local_130[2] = uStack_98;
  local_130[3] = uStack_94;
  local_130[4] = local_90;
  local_130[5] = uStack_8c;
  local_130[6] = uStack_88;
  local_130[7] = uStack_84;
  uVar2 = (DAT_1811963f4 * iVar7 * 0x8000 | (uint)(DAT_1811963f4 * iVar7) >> 0x11) * 0x1b873593 ^
          uVar2;
  uVar2 = (DAT_1811963f8 * iVar7 * 0x8000 | (uint)(DAT_1811963f8 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_1811963fc * iVar7 * 0x8000 | (uint)(DAT_1811963fc * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196400 * iVar7 * 0x8000 | (uint)(DAT_181196400 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196404 * iVar7 * 0x8000 | (uint)(DAT_181196404 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196408 * iVar7 * 0x8000 | (uint)(DAT_181196408 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_18119640c * iVar7 * 0x8000 | (uint)(DAT_18119640c * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (DAT_181196410 * iVar7 * 0x8000 | (uint)(DAT_181196410 * iVar7) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (ulonglong)((uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64);
  if (local_188 != local_130[7]) {
    local_d8 = (char *)FUN_1811316e0(0x18);
    if (local_d8 == (char *)0x0) {
      local_140 = (undefined4 *)0x0;
    }
    else {
      local_140 = (undefined4 *)FUN_1805a48c0(local_d8,"The expected Auth Record was not found");
    }
    local_138 = (undefined8 *)FUN_1811316e0(0x18);
    puVar6 = (undefined8 *)0x0;
    if (local_138 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_138,"|__FILE__|%s|__LINE__|%d");
      *local_138 = pace::PaceLocationInfoFormatter::vftable;
      puVar6 = local_138;
    }
    local_180[0] = 0x421;
    local_d8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2protocols.cpp";
    uVar1 = FUN_1805a21d0(puVar6[1],&local_d8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar1,local_180);
  }
  do {
    FUN_18064ab32(0x6214);
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
                    /* WARNING: Call to offcut address within same function */
  uVar8 = func_0x00018064ab1e();
  FUN_18064ab33(uVar8,uVar4);
  return;
}



############ FUN_ 18064b020 size=309 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18064b020(longlong param_1,longlong *param_2,int param_3,undefined4 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  undefined8 local_90;
  longlong *local_88;
  undefined8 *local_80;
  int local_78;
  undefined4 local_74;
  undefined1 local_70;
  int local_68 [8];
  ulonglong local_48;
  
  local_90 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_b8;
  puVar6 = (undefined8 *)0x0;
  local_98 = 0;
  local_88 = param_2;
  local_80 = (undefined8 *)FUN_1811316e0(0x30);
  if (local_80 != (undefined8 *)0x0) {
    *local_80 = pace::eden::thrift::ilok::Ilok2CertChain::vftable;
    *(undefined4 *)(local_80 + 1) = 0;
    local_80[2] = 0;
    local_80[3] = 0;
    local_80[4] = 0;
    *(undefined2 *)(local_80 + 5) = 0;
    puVar6 = local_80;
  }
  *param_2 = (longlong)puVar6;
  FUN_18063fa20(param_2 + 1,puVar6);
  FUN_1805ae620(param_2,puVar6,puVar6);
  local_98 = 1;
  local_70 = 1;
  local_78 = param_3;
  local_74 = param_4;
  (**(code **)(**(longlong **)(param_1 + 8) + 0x68))
            (*(longlong **)(param_1 + 8),&local_78,local_68,*param_2 + 0x10);
  if (local_68[0] == -1) {
    *param_2 = 0;
    plVar4 = (longlong *)param_2[1];
    param_2[1] = 0;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar5 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  else {
    *(int *)(*param_2 + 8) = local_68[0];
    if (param_3 == 0) {
      *(undefined1 *)(param_1 + 0x18) = 1;
    }
  }
}



############ FUN_ 18065fec0 size=206 ############

ulonglong FUN_18065fec0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  undefined8 *local_res10;
  char *local_res18;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_18065ffa0();
  if (uVar1 < 0x100000000) {
    return uVar1 & 0xffffffff;
  }
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,
                  "Can\'t convert Ptime to a 32-bit Unix/Posix time, because the Unix/Posix time is larger than a 32-bit number."
                  ,param_3,param_4,uVar3);
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar3);
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x5f);
  local_res18 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\timeutils.cpp";
  uVar3 = FUN_1805a21d0(puVar2[1],&local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,&local_res10);
}



############ FUN_ 1806528f0 size=310 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806528f0(longlong param_1,undefined4 *param_2,undefined4 *param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  char *pcVar3;
  undefined1 auStack_98 [32];
  undefined4 local_78 [2];
  undefined4 local_70 [2];
  char *local_68;
  undefined8 local_60;
  undefined1 local_58 [28];
  undefined4 local_3c;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  *param_3 = 0xffffffff;
  *param_2 = *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x3b4);
  pcVar3 = (char *)0x0;
  if (*(longlong *)(param_1 + 8) != 0) {
    local_78[0] = 0x100;
    (**(code **)(**(longlong **)(param_1 + 8) + 0x1e8))
              (*(longlong **)(param_1 + 8),local_78,local_58);
    *param_3 = local_3c;
  }
  local_68 = (char *)FUN_1811316e0(0x18);
  if (local_68 != (char *)0x0) {
    FUN_1805a48c0(local_68,"The commander for the target iLok device has not been set");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 != (char *)0x0) {
    local_68 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    pcVar3 = pcVar1;
  }
  local_70[0] = 0x1c9;
  local_68 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2protocols.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_68);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_70);
}



############ FUN_ 180652c80 size=1279 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180652c80(basic_istream<char,std::char_traits<char>_> *param_1,undefined8 param_2)

{
  uint uVar1;
  void *pvVar2;
  bool bVar3;
  longlong lVar4;
  __uint64 _Var5;
  undefined8 *puVar6;
  _Locimp *p_Var7;
  facet *pfVar8;
  longlong lVar9;
  void *pvVar10;
  longlong lVar11;
  basic_istream<char,std::char_traits<char>_> *pbVar12;
  undefined1 auStack_138 [32];
  basic_istream<char,std::char_traits<char>_> *local_118;
  undefined8 local_110;
  undefined1 *local_108;
  undefined1 local_100;
  _Locimp *local_f0;
  longlong local_e8;
  longlong *local_e0;
  basic_istream<char,std::char_traits<char>_> *local_d8;
  undefined8 local_d0;
  undefined2 local_c8;
  longlong local_c0;
  undefined1 local_b8;
  undefined1 local_b7;
  basic_istream<char,std::char_traits<char>_> *local_b0;
  locale local_a8 [8];
  longlong *local_a0;
  basic_istream<char,std::char_traits<char>_> *local_98;
  uint local_90;
  undefined8 local_88;
  basic_istream<char,std::char_traits<char>_> *local_80;
  undefined1 local_78;
  undefined1 local_70 [24];
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_88 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_138;
  pbVar12 = param_1 + *(int *)(*(longlong *)param_1 + 4);
  uVar1 = *(uint *)(pbVar12 + 0x18);
  local_d8 = param_1;
  local_b0 = pbVar12;
  local_98 = pbVar12;
  local_90 = uVar1;
  local_80 = param_1;
  if (*(longlong **)(pbVar12 + 0x48) != (longlong *)0x0) {
    (**(code **)(**(longlong **)(pbVar12 + 0x48) + 8))();
  }
  local_78 = std::basic_istream<char,std::char_traits<char>_>::_Ipfx(param_1,false);
  if (!(bool)local_78) goto LAB_180653144;
  local_c0 = *(longlong *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48);
  local_b8 = local_c0 == 0;
  local_b7 = 0;
  pfVar8 = (facet *)0x0;
  local_d0 = 0;
  local_c8 = 1;
  lVar4 = std::ios_base::getloc((ios_base *)(param_1 + *(int *)(*(longlong *)param_1 + 4)));
  std::_Lockit::_Lockit((_Lockit *)&local_e8,0);
  _Var5 = std::locale::id::operator_unsigned___int64((id *)&DAT_18265f608);
  lVar4 = *(longlong *)(lVar4 + 8);
  if ((_Var5 < *(ulonglong *)(lVar4 + 0x18)) &&
     (*(longlong *)(*(longlong *)(lVar4 + 0x10) + _Var5 * 8) != 0)) {
LAB_180652d99:
    bVar3 = true;
  }
  else {
    lVar9 = 0;
    if (*(char *)(lVar4 + 0x24) == '\0') {
LAB_180652f24:
      if (lVar9 != 0) goto LAB_180652d99;
    }
    else {
      p_Var7 = std::locale::_Getgloballocale();
      if (_Var5 < *(ulonglong *)(p_Var7 + 0x18)) {
        lVar9 = *(longlong *)(*(longlong *)(p_Var7 + 0x10) + _Var5 * 8);
        goto LAB_180652f24;
      }
    }
    bVar3 = false;
  }
  std::_Lockit::~_Lockit((_Lockit *)&local_e8);
  if ((local_f0 != (_Locimp *)0x0) &&
     (puVar6 = (undefined8 *)(**(code **)(*(longlong *)local_f0 + 0x10))(),
     puVar6 != (undefined8 *)0x0)) {
    (**(code **)*puVar6)(puVar6,1);
  }
  local_110 = param_2;
  if (!bVar3) {
    local_e8 = FUN_1811316e0(0x180);
    if (local_e8 != 0) {
      pfVar8 = (facet *)FUN_18065a970(local_e8,0);
    }
    lVar4 = std::ios_base::getloc((ios_base *)(param_1 + *(int *)(*(longlong *)param_1 + 4)));
    local_f0 = std::locale::_Locimp::_New_Locimp(*(_Locimp **)(lVar4 + 8));
    if (pfVar8 != (facet *)0x0) {
      _Var5 = std::locale::id::operator_unsigned___int64((id *)&DAT_18265f608);
      std::locale::_Locimp::_Locimp_Addfac(local_f0,pfVar8,_Var5);
      *(undefined4 *)(local_f0 + 0x20) = 0;
      std::_Yarn<char>::operator=((_Yarn<char> *)(local_f0 + 0x28),"*");
    }
    if ((local_e0 != (longlong *)0x0) &&
       (puVar6 = (undefined8 *)(**(code **)(*local_e0 + 0x10))(), puVar6 != (undefined8 *)0x0)) {
      (**(code **)*puVar6)(puVar6,1);
    }
    std::basic_ios<char,std::char_traits<char>_>::imbue
              ((basic_ios<char,std::char_traits<char>_> *)
               (param_1 + *(int *)(*(longlong *)param_1 + 4)),local_a8);
    if ((local_a0 != (longlong *)0x0) &&
       (puVar6 = (undefined8 *)(**(code **)(*local_a0 + 0x10))(), puVar6 != (undefined8 *)0x0)) {
      (**(code **)*puVar6)(puVar6,1);
    }
    local_118 = param_1 + *(int *)(*(longlong *)param_1 + 4);
    local_48 = 0;
    local_40 = 0xf;
    local_58 = 0;
    local_100 = 0;
    local_108 = &local_58;
    FUN_18065ecc0(pfVar8,local_a8,&local_c0,&local_d0);
    if (0xf < local_40) {
      pvVar2 = (void *)CONCAT71(uStack_57,local_58);
      pvVar10 = pvVar2;
      if ((0xfff < local_40 + 1) &&
         (pvVar10 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar10);
    }
    if ((local_f0 != (_Locimp *)0x0) &&
       (puVar6 = (undefined8 *)(**(code **)(*(longlong *)local_f0 + 0x10))(),
       puVar6 != (undefined8 *)0x0)) {
      (**(code **)*puVar6)(puVar6,1);
    }
    goto LAB_180653144;
  }
  lVar4 = std::ios_base::getloc((ios_base *)(param_1 + *(int *)(*(longlong *)param_1 + 4)));
  std::_Lockit::_Lockit((_Lockit *)&local_e8,0);
  lVar9 = DAT_18265f648;
  _Var5 = std::locale::id::operator_unsigned___int64((id *)&DAT_18265f608);
  lVar4 = *(longlong *)(lVar4 + 8);
  if (_Var5 < *(ulonglong *)(lVar4 + 0x18)) {
    lVar11 = *(longlong *)(*(longlong *)(lVar4 + 0x10) + _Var5 * 8);
    if (lVar11 == 0) goto LAB_180652f37;
  }
  else {
    lVar11 = 0;
LAB_180652f37:
    if (*(char *)(lVar4 + 0x24) == '\0') {
LAB_180652f50:
      if (lVar11 != 0) goto LAB_180652e30;
    }
    else {
      p_Var7 = std::locale::_Getgloballocale();
      if (_Var5 < *(ulonglong *)(p_Var7 + 0x18)) {
        lVar11 = *(longlong *)(*(longlong *)(p_Var7 + 0x10) + _Var5 * 8);
        goto LAB_180652f50;
      }
    }
    lVar11 = lVar9;
    if (lVar9 == 0) {
      FUN_1805a49a0(local_70);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_70,(ThrowInfo *)&DAT_1825fd200);
    }
  }
LAB_180652e30:
  std::_Lockit::~_Lockit((_Lockit *)&local_e8);
  local_118 = param_1 + *(int *)(*(longlong *)param_1 + 4);
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  local_100 = 0;
  local_108 = &local_58;
  FUN_18065ecc0(lVar11,local_a8,&local_c0,&local_d0);
  if (0xf < local_40) {
    pvVar2 = (void *)CONCAT71(uStack_57,local_58);
    pvVar10 = pvVar2;
    if ((0xfff < local_40 + 1) &&
       (pvVar10 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar10);
  }
  if ((local_f0 != (_Locimp *)0x0) &&
     (puVar6 = (undefined8 *)(**(code **)(*(longlong *)local_f0 + 0x10))(),
     puVar6 != (undefined8 *)0x0)) {
    (**(code **)*puVar6)(puVar6,1);
  }
LAB_180653144:
  if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) !=
      (longlong *)0x0) {
    (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) +
                0x10))();
  }
  *(uint *)(pbVar12 + 0x18) = uVar1 & 0xffff;
}



############ FUN_ 18065d630 size=55 ############

void FUN_18065d630(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x40);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 18065ecc0 size=3910 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065ecc0(longlong param_1,undefined8 *param_2,undefined8 *param_3,ulonglong param_4,
                  ios_base *param_5,undefined8 *param_6,undefined8 param_7,char param_8)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void *pvVar4;
  bool bVar5;
  ulonglong uVar6;
  char cVar7;
  undefined1 uVar8;
  undefined2 uVar9;
  int iVar10;
  longlong lVar11;
  __uint64 _Var12;
  undefined8 *puVar13;
  num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *this;
  _Locimp *p_Var14;
  ushort *puVar15;
  undefined2 *puVar16;
  undefined8 uVar17;
  undefined4 *puVar18;
  longlong lVar19;
  ios_base *piVar20;
  void *pvVar21;
  num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *pnVar22;
  char *pcVar23;
  char *pcVar24;
  undefined2 uVar25;
  undefined1 auStack_188 [32];
  ulonglong *local_168;
  undefined1 *local_160;
  undefined1 local_158;
  undefined1 local_157;
  uint local_154;
  int local_150;
  ushort local_14c;
  ulonglong local_148;
  char local_140 [8];
  longlong local_138;
  undefined8 local_130;
  uint local_128 [2];
  undefined8 *local_120;
  undefined1 local_118 [8];
  undefined8 *local_110;
  int local_108;
  int local_104;
  undefined8 local_100;
  undefined8 local_f8;
  longlong *local_f0;
  ios_base *local_e8;
  longlong *local_e0;
  longlong local_d8;
  ulonglong local_d0;
  undefined8 *local_c8;
  undefined8 *local_c0;
  undefined1 local_b8 [2];
  undefined1 local_b6 [2];
  undefined1 local_b4 [4];
  undefined1 local_b0 [32];
  undefined8 local_90;
  undefined1 local_88;
  undefined7 uStack_87;
  ulonglong local_78;
  ulonglong local_70;
  undefined4 local_68;
  undefined1 local_60;
  undefined7 uStack_5f;
  _Locimp *local_58;
  undefined8 local_50;
  ulonglong local_48;
  ulonglong local_40;
  
  local_90 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_188;
  local_e8 = param_5;
  local_110 = param_6;
  local_c0 = param_6;
  local_130 = param_7;
  local_148 = param_4;
  local_138 = param_1;
  local_120 = param_2;
  local_d8 = param_1;
  local_d0 = param_4;
  local_c8 = param_3;
  cVar7 = FUN_180653530(param_3,param_4);
  pnVar22 = (num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *)0x0;
  while (cVar7 == '\0') {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar10 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                             ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
         iVar10 == -1)) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar10;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    iVar10 = isspace((int)*(char *)((longlong)param_3 + 9));
    if (iVar10 == 0) break;
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar10 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                           ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar10 == -1
       )) {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
    }
    else {
      *(undefined1 *)(param_3 + 1) = 0;
    }
    cVar7 = FUN_180653530(param_3,param_4);
  }
  local_154 = local_154 & 0xffffff00;
  local_157 = 0;
  cVar7 = FUN_180653530(param_3,param_4);
  if (cVar7 == '\0') {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar10 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                             ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
         iVar10 == -1)) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar10;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    if ((*(char *)((longlong)param_3 + 9) == '-') || (cVar7 = FUN_18065bb70(param_3), cVar7 == '+'))
    {
      if (*(char *)(param_3 + 1) == '\0') {
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
           (iVar10 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                               ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar10 == -1)) {
          *param_3 = 0;
        }
        else {
          *(char *)((longlong)param_3 + 9) = (char)iVar10;
        }
        *(undefined1 *)(param_3 + 1) = 1;
      }
      local_157 = *(undefined1 *)((longlong)param_3 + 9);
    }
  }
  local_150 = 0;
  local_104 = 0;
  local_108 = 0;
  local_100 = 0;
  local_14c = 0;
  local_128[0] = 0x578;
  uVar9 = 1;
  lVar11 = std::ios_base::getloc(param_5);
  std::_Lockit::_Lockit((_Lockit *)&local_f8,0);
  _Var12 = std::locale::id::operator_unsigned___int64((id *)id_exref);
  lVar11 = *(longlong *)(lVar11 + 8);
  if ((*(ulonglong *)(lVar11 + 0x18) <= _Var12) ||
     (*(longlong *)(*(longlong *)(lVar11 + 0x10) + _Var12 * 8) == 0)) {
    lVar19 = 0;
    if (*(char *)(lVar11 + 0x24) == '\0') {
LAB_18065ef7a:
      if (lVar19 != 0) goto LAB_18065eee9;
    }
    else {
      p_Var14 = std::locale::_Getgloballocale();
      if (_Var12 < *(ulonglong *)(p_Var14 + 0x18)) {
        lVar19 = *(longlong *)(*(longlong *)(p_Var14 + 0x10) + _Var12 * 8);
        goto LAB_18065ef7a;
      }
    }
    _Var12 = std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_>::_Getcat
                       ((facet **)0x0,(locale *)0x0);
    if (_Var12 == 0xffffffffffffffff) {
      bVar5 = false;
      goto LAB_18065eeeb;
    }
  }
LAB_18065eee9:
  bVar5 = true;
LAB_18065eeeb:
  std::_Lockit::~_Lockit((_Lockit *)&local_f8);
  if ((local_58 != (_Locimp *)0x0) &&
     (puVar13 = (undefined8 *)(**(code **)(*(longlong *)local_58 + 0x10))(),
     puVar13 != (undefined8 *)0x0)) {
    (**(code **)*puVar13)(puVar13);
  }
  if (!bVar5) {
    this = (num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *)
           FUN_1811316e0(0x10);
    local_f8 = this;
    if (this != (num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *)0x0) {
      std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_>::
      num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_>(this,0);
      *(undefined ***)this =
           std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_>::vftable;
      pnVar22 = this;
    }
    piVar20 = local_e8;
    lVar11 = std::ios_base::getloc(local_e8);
    local_58 = std::locale::_Locimp::_New_Locimp(*(_Locimp **)(lVar11 + 8));
    if (pnVar22 != (num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *)0x0) {
      _Var12 = std::locale::id::operator_unsigned___int64((id *)id_exref);
      std::locale::_Locimp::_Locimp_Addfac(local_58,(facet *)pnVar22,_Var12);
      *(undefined4 *)(local_58 + 0x20) = 0;
      std::_Yarn<char>::operator=((_Yarn<char> *)(local_58 + 0x28),"*");
    }
    if ((local_f0 != (longlong *)0x0) &&
       (puVar13 = (undefined8 *)(**(code **)(*local_f0 + 0x10))(), puVar13 != (undefined8 *)0x0)) {
      (**(code **)*puVar13)(puVar13,1);
    }
    std::ios_base::imbue(piVar20,(locale *)&local_e8);
    if ((local_e0 != (longlong *)0x0) &&
       (puVar13 = (undefined8 *)(**(code **)(*local_e0 + 0x10))(), puVar13 != (undefined8 *)0x0)) {
      (**(code **)*puVar13)(puVar13,1);
    }
    if ((local_58 != (_Locimp *)0x0) &&
       (puVar13 = (undefined8 *)(**(code **)(*(longlong *)local_58 + 0x10))(),
       puVar13 != (undefined8 *)0x0)) {
      (**(code **)*puVar13)(puVar13,1);
    }
  }
  uVar6 = local_148;
  local_e8 = (ios_base *)(local_138 + 0x10);
  pcVar24 = (char *)local_e8;
  uVar25 = uVar9;
  if (0xf < *(ulonglong *)(local_138 + 0x28)) {
    pcVar24 = *(char **)local_e8;
  }
LAB_18065f0d0:
  while( true ) {
    while( true ) {
      pcVar23 = pcVar24;
      piVar20 = local_e8;
      if (0xf < *(ulonglong *)(local_e8 + 0x18)) {
        piVar20 = *(ios_base **)local_e8;
      }
      if (((ios_base *)pcVar23 == piVar20 + *(longlong *)(local_e8 + 0x10)) ||
         (cVar7 = FUN_180653530(param_3,uVar6), pnVar22 = local_f8, cVar7 != '\0')) {
        if ((short)local_14c < 1) {
          puVar18 = (undefined4 *)FUN_1805b6990(&local_148,local_128[0],uVar9,uVar25);
        }
        else {
          local_148 = CONCAT44(local_148._4_4_,(int)(short)local_14c);
          puVar16 = (undefined2 *)FUN_18065b100(local_118,(short)local_128[0] + -1);
          uVar17 = FUN_1805b6990(local_128,*puVar16,0xc,0x1f);
          puVar18 = (undefined4 *)FUN_18065c070(uVar17,&local_154,&local_148);
        }
        uVar1 = *puVar18;
        local_168 = (ulonglong *)local_100;
        FUN_18065a5a0(&local_130,local_150,local_104,local_108);
        local_148 = CONCAT44(local_148._4_4_,uVar1);
        FUN_1805b41e0(&local_100,&local_148,&local_130);
        *local_110 = local_100;
        uVar17 = param_3[1];
        *param_2 = *param_3;
        param_2[1] = uVar17;
      }
      if (*pcVar23 == '%') break;
      pcVar24 = pcVar23 + 1;
      if ((char)local_154 == '\0') {
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
           (iVar10 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                               ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar10 == -1)) {
          *param_3 = 0;
          *(undefined1 *)(param_3 + 1) = 1;
        }
        else {
          *(undefined1 *)(param_3 + 1) = 0;
        }
      }
      else {
        local_154 = local_154 & 0xffffff00;
      }
    }
    pcVar24 = pcVar23 + 1;
    cVar7 = *pcVar24;
    if (cVar7 != '%') break;
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar10 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                           ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar10 == -1
       )) {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
      goto switchD_18065f144_caseD_43;
    }
    *(undefined1 *)(param_3 + 1) = 0;
    pcVar24 = pcVar23 + 2;
  }
  switch(cVar7) {
  case 'A':
  case 'a':
  case 'w':
    local_f8._3_5_ = SUB85(pnVar22,3);
    local_f8._0_3_ = (uint3)CONCAT11(cVar7,0x25);
    local_50 = 0;
    local_48 = 0xf;
    local_60 = 0;
    lVar11 = -1;
    do {
      lVar19 = lVar11 + 1;
      lVar11 = lVar11 + 1;
    } while (*(char *)((longlong)&local_f8 + lVar19) != '\0');
    FUN_1805a6cb0(&local_60,&local_f8);
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    local_68 = 0xffff0000;
    local_168 = (ulonglong *)FUN_1805a4070(local_b0,&local_60);
    local_160 = &local_88;
    FUN_180667750(local_138 + 0x90,local_b4,param_3,uVar6);
    uVar8 = (char)local_154;
    if ((ushort)local_68 < local_78) {
      uVar8 = 1;
    }
    local_154 = CONCAT31(local_154._1_3_,uVar8);
    if (0xf < local_70) {
      pvVar4 = (void *)CONCAT71(uStack_87,local_88);
      pvVar21 = pvVar4;
      if ((0xfff < local_70 + 1) &&
         (pvVar21 = *(void **)((longlong)pvVar4 + -8),
         0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar21)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar21);
    }
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    if (0xf < local_48) {
      pvVar4 = (void *)CONCAT71(uStack_5f,local_60);
      pvVar21 = pvVar4;
      if ((0xfff < local_48 + 1) &&
         (pvVar21 = *(void **)((longlong)pvVar4 + -8),
         0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar21)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
LAB_18065f2b8:
      local_70 = 0xf;
      local_78 = 0;
      local_88 = 0;
                    /* WARNING: Subroutine does not return */
      free(pvVar21);
    }
    break;
  case 'B':
  case 'b':
  case 'm':
    local_140[4] = 0x25;
    local_140[5] = cVar7;
    local_140[6] = 0;
    local_50 = 0;
    local_48 = 0xf;
    local_60 = 0;
    lVar11 = -1;
    do {
      lVar19 = lVar11 + 5;
      lVar11 = lVar11 + 1;
    } while (local_140[lVar19] != '\0');
    FUN_1805a6cb0(&local_60,local_140 + 4);
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    local_68 = 0xffff0000;
    local_168 = (ulonglong *)FUN_1805a4070(local_b0,&local_60);
    local_160 = &local_88;
    puVar16 = (undefined2 *)FUN_180667290(local_138 + 0x90,local_b6,param_3,uVar6);
    uVar9 = *puVar16;
    local_154 = local_154 & 0xff;
    if ((ushort)local_68 < local_78) {
      local_154 = 1;
    }
    if (0xf < local_70) {
      pvVar4 = (void *)CONCAT71(uStack_87,local_88);
      pvVar21 = pvVar4;
      if ((0xfff < local_70 + 1) &&
         (pvVar21 = *(void **)((longlong)pvVar4 + -8),
         0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar21)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar21);
    }
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    if (0xf < local_48) {
      pvVar4 = (void *)CONCAT71(uStack_5f,local_60);
      pvVar21 = pvVar4;
      if ((0xfff < local_48 + 1) &&
         (pvVar21 = *(void **)((longlong)pvVar4 + -8),
         0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar21)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      goto LAB_18065f2b8;
    }
    break;
  case 'F':
    cVar7 = FUN_18065bb70(param_3);
    if (cVar7 == '.') goto LAB_18065fb83;
    goto LAB_18065fba3;
  case 'H':
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    local_68 = 0xffff0000;
    local_158 = 0x30;
    local_168 = (ulonglong *)&local_158;
    local_150 = FUN_180655c50(param_3,uVar6,&local_88,2);
    if (local_150 == -1) {
      local_160 = (undefined1 *)CONCAT71(local_160._1_7_,local_157);
      local_168 = local_110;
      FUN_180653fa0(local_138,param_2,param_3,uVar6);
      FUN_180485450(&local_88);
    }
    FUN_180485450(&local_88);
    pcVar24 = pcVar23 + 2;
    goto LAB_18065f0d0;
  case 'M':
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    local_68 = 0xffff0000;
    local_158 = 0x30;
    local_168 = (ulonglong *)&local_158;
    local_104 = FUN_180655c50(param_3,uVar6,&local_88,2);
    if (local_104 == -1) {
      local_160 = (undefined1 *)CONCAT71(local_160._1_7_,local_157);
      local_168 = local_110;
      FUN_180653fa0(local_138,param_2,param_3,uVar6);
      FUN_180485450(&local_88);
    }
    FUN_180485450(&local_88);
    pcVar24 = pcVar23 + 2;
    goto LAB_18065f0d0;
  case 'S':
  case 's':
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    local_68 = 0xffff0000;
    local_158 = 0x30;
    local_168 = (ulonglong *)&local_158;
    local_108 = FUN_180655c50(param_3,uVar6,&local_88,2);
    if (local_108 == -1) {
      local_160 = (undefined1 *)CONCAT71(local_160._1_7_,local_157);
      local_168 = local_110;
      FUN_180653fa0(local_138,param_2,param_3,uVar6);
      FUN_180485450(&local_88);
    }
    if (*pcVar24 != 'S') {
      FUN_180485450(&local_88);
      goto switchD_18065f144_caseD_66;
    }
    FUN_180485450(&local_88);
    pcVar24 = pcVar23 + 2;
    goto LAB_18065f0d0;
  case 'Y':
  case 'y':
    local_140[0] = '%';
    local_140[1] = cVar7;
    local_140[2] = 0;
    local_50 = 0;
    local_48 = 0xf;
    local_60 = 0;
    lVar11 = -1;
    do {
      lVar19 = lVar11 + 1;
      lVar11 = lVar11 + 1;
    } while (local_140[lVar19] != '\0');
    FUN_1805a6cb0(&local_60,local_140);
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    local_68 = 0xffff0000;
    local_168 = (ulonglong *)FUN_1805a4070(local_b0,&local_60);
    local_160 = &local_88;
    puVar15 = (ushort *)FUN_180667c10(local_138 + 0x90,local_b8,param_3,uVar6);
    local_128[0] = (uint)*puVar15;
    if (0xf < local_70) {
      pvVar4 = (void *)CONCAT71(uStack_87,local_88);
      pvVar21 = pvVar4;
      if ((0xfff < local_70 + 1) &&
         (pvVar21 = *(void **)((longlong)pvVar4 + -8),
         0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar21)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar21);
    }
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
    if (0xf < local_48) {
      pvVar4 = (void *)CONCAT71(uStack_5f,local_60);
      pvVar21 = pvVar4;
      if ((0xfff < local_48 + 1) &&
         (pvVar21 = *(void **)((longlong)pvVar4 + -8),
         0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar21)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      goto LAB_18065f2b8;
    }
    break;
  case 'Z':
    if (param_8 == '\0') goto LAB_18065fba3;
    pcVar24 = pcVar23 + 2;
    if (*pcVar24 != 'P') goto LAB_18065f0d0;
    cVar7 = FUN_180653530(param_3,uVar6);
    while (cVar7 == '\0') {
      cVar7 = FUN_18065bb70(param_3);
      iVar10 = isspace((int)cVar7);
      if (iVar10 == 0) break;
      FUN_18065bbc0(param_3);
      cVar7 = FUN_180653530(param_3,uVar6);
    }
    cVar7 = FUN_180653530(param_3,uVar6);
    if (cVar7 == '\0') {
      do {
        cVar7 = FUN_18065bb70(param_3);
        iVar10 = isspace((int)cVar7);
        if (iVar10 != 0) goto switchD_18065f144_caseD_43;
        uVar8 = FUN_18065bb70(param_3);
        FUN_18062b560(local_130,uVar8);
        FUN_18065bbc0(param_3);
        cVar7 = FUN_180653530(param_3,uVar6);
      } while (cVar7 == '\0');
      pcVar24 = pcVar23 + 3;
      goto LAB_18065f0d0;
    }
    break;
  case 'd':
    puVar16 = (undefined2 *)FUN_180666eb0(local_138 + 0x90,local_118,param_3,uVar6);
    pcVar24 = pcVar23 + 2;
    uVar25 = *puVar16;
    goto LAB_18065f0d0;
  case 'f':
switchD_18065f144_caseD_66:
    cVar7 = FUN_18065bb70(param_3);
    if (cVar7 != '.') {
      local_160 = (undefined1 *)CONCAT71(local_160._1_7_,local_157);
      local_168 = local_110;
      FUN_180653fa0(local_138,param_2,param_3,uVar6);
    }
LAB_18065fb83:
    FUN_18065bbc0(param_3);
    FUN_180667020(local_138,param_3,uVar6,&local_100);
LAB_18065fba3:
    local_154 = CONCAT31(local_154._1_3_,1);
    pcVar24 = pcVar23 + 2;
    goto LAB_18065f0d0;
  case 'j':
    goto switchD_18065f144_caseD_6a;
  }
switchD_18065f144_caseD_43:
  pcVar24 = pcVar24 + 1;
  goto LAB_18065f0d0;
switchD_18065f144_caseD_6a:
  local_78 = 0;
  local_70 = 0xf;
  local_88 = 0;
  local_68 = 0xffff0000;
  local_158 = 0x30;
  local_168 = (ulonglong *)&local_158;
  local_14c = FUN_180655a40(param_3,uVar6,&local_88,3);
  if (local_14c == 0xffff) {
    local_148 = local_148 & 0xffffffff00000000;
    local_168 = &local_148;
    FUN_180666b90(local_138 + 0x148,param_3,uVar6,&local_88);
    if (local_68._2_2_ != -1) {
      puVar13 = (undefined8 *)FUN_1805b6b80(&local_130,(int)local_68._2_2_);
      *local_110 = *puVar13;
      uVar1 = *(undefined4 *)((longlong)param_3 + 4);
      uVar2 = *(undefined4 *)(param_3 + 1);
      uVar3 = *(undefined4 *)((longlong)param_3 + 0xc);
      *(undefined4 *)param_2 = *(undefined4 *)param_3;
      *(undefined4 *)((longlong)param_2 + 4) = uVar1;
      *(undefined4 *)(param_2 + 1) = uVar2;
      *(undefined4 *)((longlong)param_2 + 0xc) = uVar3;
      FUN_180485450(&local_88);
    }
  }
  if (local_14c + 1 < 2) {
                    /* WARNING: Subroutine does not return */
    FUN_180666e50(1,local_14c,0);
  }
  if (0x16e < local_14c) {
                    /* WARNING: Subroutine does not return */
    FUN_180666e50(1,local_14c,1);
  }
  FUN_180485450(&local_88);
  pcVar24 = pcVar23 + 2;
  goto LAB_18065f0d0;
}



############ FUN_ 18065d670 size=63 ############

void FUN_18065d670(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x40);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 1806531c0 size=878 ############

longlong * FUN_1806531c0(longlong *param_1,undefined8 param_2)

{
  undefined1 uVar1;
  bool bVar2;
  facet *pfVar3;
  longlong lVar4;
  __uint64 _Var5;
  undefined8 *puVar6;
  _Locimp *p_Var7;
  facet *pfVar8;
  longlong lVar9;
  ios_base *this;
  longlong local_res8;
  undefined8 local_res10;
  uint local_res18;
  longlong *local_98;
  undefined8 local_88;
  undefined8 uStack_80;
  ios_base *local_78;
  uint local_70;
  undefined1 local_68 [8];
  longlong *local_60;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  this = (ios_base *)((longlong)*(int *)(*param_1 + 4) + (longlong)param_1);
  local_res18 = *(uint *)(this + 0x18);
  local_88 = local_88 & 0xffffffffffffff00;
  uStack_80 = *(undefined8 *)(this + 0x48);
  local_res10 = param_2;
  local_78 = this;
  local_70 = local_res18;
  lVar4 = std::ios_base::getloc(this);
  std::_Lockit::_Lockit((_Lockit *)&local_res8,0);
  _Var5 = std::locale::id::operator_unsigned___int64((id *)&DAT_18265f620);
  lVar4 = *(longlong *)(lVar4 + 8);
  pfVar8 = (facet *)0x0;
  if ((_Var5 < *(ulonglong *)(lVar4 + 0x18)) &&
     (*(longlong *)(*(longlong *)(lVar4 + 0x10) + _Var5 * 8) != 0)) {
LAB_180653263:
    bVar2 = true;
  }
  else {
    lVar9 = 0;
    if (*(char *)(lVar4 + 0x24) == '\0') {
LAB_1806533a4:
      if (lVar9 != 0) goto LAB_180653263;
    }
    else {
      p_Var7 = std::locale::_Getgloballocale();
      if (_Var5 < *(ulonglong *)(p_Var7 + 0x18)) {
        lVar9 = *(longlong *)(*(longlong *)(p_Var7 + 0x10) + _Var5 * 8);
        goto LAB_1806533a4;
      }
    }
    bVar2 = false;
  }
  std::_Lockit::~_Lockit((_Lockit *)&local_res8);
  if ((local_98 != (longlong *)0x0) &&
     (puVar6 = (undefined8 *)(**(code **)(*local_98 + 0x10))(), puVar6 != (undefined8 *)0x0)) {
    (**(code **)*puVar6)(puVar6,1);
  }
  if (!bVar2) {
    local_res8 = FUN_1811316e0(0x1a8);
    if (local_res8 != 0) {
      pfVar8 = (facet *)FUN_18065a640(local_res8,0);
    }
    lVar4 = std::ios_base::getloc
                      ((ios_base *)((longlong)*(int *)(*param_1 + 4) + (longlong)param_1));
    p_Var7 = std::locale::_Locimp::_New_Locimp(*(_Locimp **)(lVar4 + 8));
    if (pfVar8 != (facet *)0x0) {
      _Var5 = std::locale::id::operator_unsigned___int64((id *)&DAT_18265f620);
      std::locale::_Locimp::_Locimp_Addfac(p_Var7,pfVar8,_Var5);
      *(undefined4 *)(p_Var7 + 0x20) = 0;
      std::_Yarn<char>::operator=((_Yarn<char> *)(p_Var7 + 0x28),"*");
    }
    if ((local_60 != (longlong *)0x0) &&
       (puVar6 = (undefined8 *)(**(code **)(*local_60 + 0x10))(), puVar6 != (undefined8 *)0x0)) {
      (**(code **)*puVar6)(puVar6,1);
    }
    std::basic_ios<char,std::char_traits<char>_>::imbue
              ((basic_ios<char,std::char_traits<char>_> *)
               ((longlong)*(int *)(*param_1 + 4) + (longlong)param_1),(locale *)&local_48);
    if (((longlong *)CONCAT44(uStack_3c,uStack_40) != (longlong *)0x0) &&
       (puVar6 = (undefined8 *)(**(code **)(*(longlong *)CONCAT44(uStack_3c,uStack_40) + 0x10))(),
       puVar6 != (undefined8 *)0x0)) {
      (**(code **)*puVar6)(puVar6,1);
    }
    local_48 = (undefined4)local_88;
    uStack_44 = local_88._4_4_;
    uStack_40 = (undefined4)uStack_80;
    uStack_3c = uStack_80._4_4_;
    lVar4 = (longlong)*(int *)(*param_1 + 4) + (longlong)param_1;
    FUN_180667f20(pfVar8,&local_88,&local_48,lVar4,*(undefined1 *)(lVar4 + 0x58),param_2);
    if ((p_Var7 != (_Locimp *)0x0) &&
       (puVar6 = (undefined8 *)(**(code **)(*(longlong *)p_Var7 + 0x10))(),
       puVar6 != (undefined8 *)0x0)) {
      (**(code **)*puVar6)(puVar6,1);
    }
    goto LAB_1806534ef;
  }
  lVar4 = std::ios_base::getloc((ios_base *)((longlong)*(int *)(*param_1 + 4) + (longlong)param_1));
  uVar1 = *(undefined1 *)((longlong)*(int *)(*param_1 + 4) + 0x58 + (longlong)param_1);
  std::_Lockit::_Lockit((_Lockit *)&local_res8,0);
  pfVar3 = DAT_18265f650;
  _Var5 = std::locale::id::operator_unsigned___int64((id *)&DAT_18265f620);
  lVar4 = *(longlong *)(lVar4 + 8);
  if ((*(ulonglong *)(lVar4 + 0x18) <= _Var5) ||
     (pfVar8 = *(facet **)(*(longlong *)(lVar4 + 0x10) + _Var5 * 8), pfVar8 == (facet *)0x0)) {
    if (*(char *)(lVar4 + 0x24) == '\0') {
LAB_18065331c:
      if (pfVar8 != (facet *)0x0) goto LAB_18065332d;
    }
    else {
      p_Var7 = std::locale::_Getgloballocale();
      if (_Var5 < *(ulonglong *)(p_Var7 + 0x18)) {
        pfVar8 = *(facet **)(*(longlong *)(p_Var7 + 0x10) + _Var5 * 8);
        goto LAB_18065331c;
      }
    }
    pfVar8 = pfVar3;
    if (pfVar3 == (facet *)0x0) {
      FUN_1805a49a0(local_68);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_68,(ThrowInfo *)&DAT_1825fd200);
    }
  }
LAB_18065332d:
  std::_Lockit::~_Lockit((_Lockit *)&local_res8);
  FUN_180667f20(pfVar8,&local_48,&local_88,(longlong)*(int *)(*param_1 + 4) + (longlong)param_1,
                uVar1,local_res10);
  if ((local_98 != (longlong *)0x0) &&
     (puVar6 = (undefined8 *)(**(code **)(*local_98 + 0x10))(), puVar6 != (undefined8 *)0x0)) {
    (**(code **)*puVar6)(puVar6,1);
  }
LAB_1806534ef:
  *(uint *)(this + 0x18) = local_res18 & 0xffff;
  return param_1;
}



############ FUN_ 180654b30 size=1094 ############

void FUN_180654b30(longlong *param_1,undefined8 *param_2,ulonglong *param_3,undefined8 *param_4,
                  ulonglong *param_5)

{
  ulonglong *puVar1;
  char *pcVar2;
  ulonglong *puVar3;
  char *pcVar4;
  undefined8 uVar5;
  longlong *plVar6;
  longlong *plVar7;
  ulonglong **ppuVar8;
  longlong *plVar9;
  ulonglong uVar10;
  longlong *plVar11;
  longlong lVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  longlong *plVar15;
  longlong *plVar16;
  ulonglong *local_res18;
  undefined1 local_res20 [8];
  longlong *local_b8;
  longlong lStack_b0;
  ulonglong local_a8;
  ulonglong local_a0;
  longlong local_98;
  longlong *local_90;
  undefined8 uStack_88;
  longlong local_80;
  longlong *local_78;
  longlong *plStack_70;
  ulonglong local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  local_78 = (longlong *)*param_4;
  plStack_70 = (longlong *)param_4[1];
  local_68 = *param_5;
  uStack_60 = (undefined4)param_5[1];
  uStack_5c = *(undefined4 *)((longlong)param_5 + 0xc);
  local_b8 = (longlong *)0x0;
  lStack_b0 = 0;
  local_a8 = 0;
  local_a0 = 0;
  local_98 = 0;
  local_res18 = param_3;
  local_b8 = (longlong *)FUN_1811316e0(0x10);
  *local_b8 = 0;
  local_b8[1] = 0;
  *local_b8 = (longlong)&local_b8;
  plVar9 = param_1;
  plVar7 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    plVar7 = (longlong *)*param_1;
    plVar9 = (longlong *)*param_1;
  }
  if (local_78 == plStack_70) {
LAB_180654e52:
    plVar6 = param_1;
    if (0xf < (ulonglong)param_1[3]) {
      plVar6 = (longlong *)*param_1;
    }
    puVar1 = (ulonglong *)(param_1 + 2);
    plVar7 = (longlong *)
             FUN_1806574a0(local_res20,&local_b8,param_1,plVar7,plVar9,*puVar1 + (longlong)plVar6);
    if (local_98 == 0) {
      uVar14 = param_1[3];
      plVar9 = param_1;
      if (0xf < uVar14) {
        plVar9 = (longlong *)*param_1;
      }
      uVar13 = *puVar1;
      plVar6 = param_1;
      if (0xf < uVar14) {
        plVar6 = (longlong *)*param_1;
      }
      uVar10 = *plVar7 - (longlong)plVar6;
      if (uVar13 < uVar10) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69e0();
      }
      param_5 = (ulonglong *)((longlong)plVar9 + (uVar13 - *plVar7));
      local_res18 = (ulonglong *)(uVar13 - uVar10);
      ppuVar8 = &local_res18;
      if (param_5 <= (ulonglong *)(uVar13 - uVar10)) {
        ppuVar8 = &param_5;
      }
      puVar3 = *ppuVar8;
      if (0xf < uVar14) {
        param_1 = (longlong *)*param_1;
      }
      uVar13 = uVar13 - (longlong)puVar3;
      *puVar1 = uVar13;
      memmove((void *)((longlong)param_1 + uVar10),
              (void *)((longlong)((longlong)param_1 + uVar10) + (longlong)puVar3),
              (uVar13 - uVar10) + 1);
    }
    else {
      local_80 = local_a0 + local_98;
      uStack_88 = 0;
      local_90 = local_b8;
      plStack_70 = (longlong *)0x0;
      local_68 = local_a0;
      local_78 = local_b8;
      plVar7 = param_1;
      if (0xf < (ulonglong)param_1[3]) {
        plVar7 = (longlong *)*param_1;
      }
      FUN_180656e30(param_1,*puVar1 + (longlong)plVar7,&local_78,&local_90);
    }
    FUN_18047c850(&local_b8);
    return;
  }
  uVar13 = CONCAT44(uStack_5c,uStack_60);
  plVar6 = plVar7;
  plVar16 = local_78;
  uVar14 = local_68;
  plVar15 = plVar9;
  plVar9 = plStack_70;
  do {
    for (; (local_98 != 0 && (plVar6 != plVar15)); plVar6 = (longlong *)((longlong)plVar6 + 1)) {
      if (local_b8 == (longlong *)0x0) {
        lVar12 = 0;
      }
      else {
        lVar12 = *local_b8;
      }
      *(undefined1 *)plVar6 =
           *(undefined1 *)
            ((ulonglong)((uint)local_a0 & 0xf) +
            *(longlong *)
             (*(longlong *)(lVar12 + 8) + (*(longlong *)(lVar12 + 0x10) - 1U & local_a0 >> 4) * 8));
      local_98 = local_98 + -1;
      if (local_98 == 0) {
        local_a0 = 0;
      }
      else {
        local_a0 = local_a0 + 1;
      }
    }
    if (local_98 == 0) {
      plVar7 = plVar16;
      if (plVar6 != plVar15) {
        memmove(plVar6,plVar15,(longlong)plVar16 - (longlong)plVar15);
        plVar7 = (longlong *)((longlong)plVar6 + ((longlong)plVar16 - (longlong)plVar15));
      }
    }
    else {
      for (; plVar7 = plVar6, plVar6 != plVar16; plVar6 = (longlong *)((longlong)plVar6 + 1)) {
        if ((((int)local_98 + (int)local_a0 & 0xfU) == 0) && (local_a8 <= local_98 + 0x10U >> 4)) {
          FUN_18065d710(&local_b8,1);
        }
        local_a0 = local_a0 & local_a8 * 0x10 - 1;
        uVar10 = local_a0 + local_98;
        lVar12 = (uVar10 >> 4 & local_a8 - 1) * 8;
        if (*(longlong *)(lVar12 + lStack_b0) == 0) {
          uVar5 = FUN_1811316e0(0x10);
          *(undefined8 *)(lVar12 + lStack_b0) = uVar5;
        }
        *(char *)((ulonglong)((uint)uVar10 & 0xf) + *(longlong *)(lVar12 + lStack_b0)) =
             (char)*plVar6;
        lVar12 = 0;
        if (local_b8 != (longlong *)0x0) {
          lVar12 = *local_b8;
        }
        *(undefined1 *)plVar6 =
             *(undefined1 *)
              ((ulonglong)((uint)local_a0 & 0xf) +
              *(longlong *)
               (*(longlong *)(lVar12 + 8) + (*(longlong *)(lVar12 + 0x10) - 1U & local_a0 >> 4) * 8)
              );
        if (local_98 == 0) {
          local_a0 = 0;
        }
        else {
          local_a0 = local_a0 + 1;
        }
      }
    }
    local_80 = local_a0 + local_98;
    local_90 = (longlong *)0x0;
    uStack_88 = 0;
    if ((local_b8 != (longlong *)0x0) && ((undefined8 *)*local_b8 != (undefined8 *)0x0)) {
      local_90 = *(longlong **)*local_b8;
    }
    FUN_1806568a0(&local_b8,&local_78,&local_90,uVar14,uVar13);
    plVar6 = param_1;
    if (0xf < (ulonglong)param_1[3]) {
      plVar6 = (longlong *)*param_1;
    }
    plVar6 = (longlong *)(param_1[2] + (longlong)plVar6);
    plVar11 = plVar6;
    plVar16 = plVar6;
    if (plVar9 != plVar6) {
      pcVar2 = (char *)param_2[1];
      plVar15 = plVar9;
      do {
        pcVar4 = (char *)*param_2;
        plVar11 = plVar15;
        if ((char *)*param_2 == pcVar2) goto LAB_180654e52;
        for (; plVar16 = plVar15, plVar11 != plVar6; plVar11 = (longlong *)((longlong)plVar11 + 1))
        {
          if (pcVar4 == pcVar2) goto LAB_180654e3a;
          if ((char)*plVar11 != *pcVar4) break;
          pcVar4 = pcVar4 + 1;
        }
      } while ((pcVar4 != pcVar2) &&
              (plVar15 = (longlong *)((longlong)plVar15 + 1), plVar11 = plVar6, plVar16 = plVar6,
              plVar15 != plVar6));
    }
LAB_180654e3a:
    if (plVar16 == plVar11) goto LAB_180654e52;
    uVar14 = *local_res18;
    uVar13 = local_res18[1];
    plVar6 = plVar7;
    plVar15 = plVar9;
    plVar9 = plVar11;
  } while( true );
}



############ FUN_ 180654f80 size=1109 ############

void FUN_180654f80(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4)

{
  ulonglong *puVar1;
  char *pcVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  char *pcVar5;
  undefined8 uVar6;
  longlong *plVar7;
  longlong *plVar8;
  ulonglong *puVar9;
  longlong *plVar10;
  ulonglong uVar11;
  longlong *plVar12;
  longlong lVar13;
  ulonglong uVar14;
  longlong *plVar15;
  longlong *plVar16;
  ulonglong local_res20;
  longlong *local_a8;
  longlong lStack_a0;
  ulonglong local_98;
  ulonglong local_90;
  longlong local_88;
  longlong *local_80;
  undefined8 uStack_78;
  longlong local_70;
  longlong *local_68;
  longlong *plStack_60;
  ulonglong local_58;
  ulonglong local_48;
  undefined8 local_40;
  undefined1 local_38 [16];
  
  local_40 = 0xfffffffffffffffe;
  local_68 = (longlong *)*param_4;
  plStack_60 = (longlong *)param_4[1];
  local_a8 = (longlong *)0x0;
  lStack_a0 = 0;
  local_98 = 0;
  local_90 = 0;
  local_88 = 0;
  local_a8 = (longlong *)FUN_1811316e0(0x10);
  *local_a8 = 0;
  local_a8[1] = 0;
  *local_a8 = (longlong)&local_a8;
  plVar10 = param_1;
  plVar8 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    plVar8 = (longlong *)*param_1;
    plVar10 = (longlong *)*param_1;
  }
  plVar7 = plVar8;
  plVar16 = local_68;
  plVar15 = plVar10;
  plVar12 = plStack_60;
  if (local_68 != plStack_60) {
    do {
      for (; (plVar10 = plVar12, local_88 != 0 && (plVar7 != plVar15));
          plVar7 = (longlong *)((longlong)plVar7 + 1)) {
        if (local_a8 == (longlong *)0x0) {
          lVar13 = 0;
        }
        else {
          lVar13 = *local_a8;
        }
        *(undefined1 *)plVar7 =
             *(undefined1 *)
              ((ulonglong)((uint)local_90 & 0xf) +
              *(longlong *)
               (*(longlong *)(lVar13 + 8) + (*(longlong *)(lVar13 + 0x10) - 1U & local_90 >> 4) * 8)
              );
        local_88 = local_88 + -1;
        if (local_88 == 0) {
          local_90 = 0;
        }
        else {
          local_90 = local_90 + 1;
        }
        plVar12 = plVar10;
      }
      if (local_88 == 0) {
        plVar8 = plVar16;
        if (plVar7 != plVar15) {
          memmove(plVar7,plVar15,(longlong)plVar16 - (longlong)plVar15);
          plVar8 = (longlong *)((longlong)plVar7 + ((longlong)plVar16 - (longlong)plVar15));
        }
      }
      else {
        for (; plVar8 = plVar7, plVar7 != plVar16; plVar7 = (longlong *)((longlong)plVar7 + 1)) {
          if ((((int)local_88 + (int)local_90 & 0xfU) == 0) && (local_98 <= local_88 + 0x10U >> 4))
          {
            FUN_18065d710(&local_a8,1);
          }
          local_90 = local_90 & local_98 * 0x10 - 1;
          uVar3 = local_90 + local_88;
          lVar13 = (uVar3 >> 4 & local_98 - 1) * 8;
          if (*(longlong *)(lVar13 + lStack_a0) == 0) {
            uVar6 = FUN_1811316e0(0x10);
            *(undefined8 *)(lVar13 + lStack_a0) = uVar6;
          }
          *(char *)((ulonglong)((uint)uVar3 & 0xf) + *(longlong *)(lVar13 + lStack_a0)) =
               (char)*plVar7;
          lVar13 = 0;
          if (local_a8 != (longlong *)0x0) {
            lVar13 = *local_a8;
          }
          *(undefined1 *)plVar7 =
               *(undefined1 *)
                ((ulonglong)((uint)local_90 & 0xf) +
                *(longlong *)
                 (*(longlong *)(lVar13 + 8) +
                 (*(longlong *)(lVar13 + 0x10) - 1U & local_90 >> 4) * 8));
          if (local_88 == 0) {
            local_90 = 0;
          }
          else {
            local_90 = local_90 + 1;
          }
        }
      }
      local_70 = local_90 + local_88;
      local_80 = (longlong *)0x0;
      uStack_78 = 0;
      if ((local_a8 != (longlong *)0x0) && ((undefined8 *)*local_a8 != (undefined8 *)0x0)) {
        local_80 = *(longlong **)*local_a8;
      }
      FUN_1806568a0(&local_a8,&local_68,&local_80,0,0);
      plVar7 = param_1;
      if (0xf < (ulonglong)param_1[3]) {
        plVar7 = (longlong *)*param_1;
      }
      plVar7 = (longlong *)(param_1[2] + (longlong)plVar7);
      plVar12 = plVar7;
      plVar16 = plVar7;
      if (plVar10 != plVar7) {
        pcVar2 = (char *)param_2[1];
        plVar15 = plVar10;
        do {
          pcVar5 = (char *)*param_2;
          plVar12 = plVar15;
          if ((char *)*param_2 == pcVar2) goto LAB_180655293;
          for (; plVar16 = plVar15, plVar12 != plVar7; plVar12 = (longlong *)((longlong)plVar12 + 1)
              ) {
            if (pcVar5 == pcVar2) goto LAB_18065528a;
            if ((char)*plVar12 != *pcVar5) break;
            pcVar5 = pcVar5 + 1;
          }
        } while ((pcVar5 != pcVar2) &&
                (plVar15 = (longlong *)((longlong)plVar15 + 1), plVar12 = plVar7, plVar16 = plVar7,
                plVar15 != plVar7));
      }
LAB_18065528a:
      plVar7 = plVar8;
      plVar15 = plVar10;
    } while (plVar16 != plVar12);
  }
LAB_180655293:
  plVar7 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    plVar7 = (longlong *)*param_1;
  }
  puVar1 = (ulonglong *)(param_1 + 2);
  plVar8 = (longlong *)
           FUN_1806574a0(local_38,&local_a8,param_1,plVar8,plVar10,*puVar1 + (longlong)plVar7);
  if (local_88 == 0) {
    uVar3 = param_1[3];
    plVar10 = param_1;
    if (0xf < uVar3) {
      plVar10 = (longlong *)*param_1;
    }
    uVar14 = *puVar1;
    plVar7 = param_1;
    if (0xf < uVar3) {
      plVar7 = (longlong *)*param_1;
    }
    uVar11 = *plVar8 - (longlong)plVar7;
    if (uVar14 < uVar11) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69e0();
    }
    local_48 = (longlong)plVar10 + (uVar14 - *plVar8);
    local_res20 = uVar14 - uVar11;
    puVar9 = &local_res20;
    if (local_48 <= local_res20) {
      puVar9 = &local_48;
    }
    uVar4 = *puVar9;
    if (0xf < uVar3) {
      param_1 = (longlong *)*param_1;
    }
    uVar14 = uVar14 - uVar4;
    *puVar1 = uVar14;
    memmove((void *)((longlong)param_1 + uVar11),
            (void *)((longlong)((longlong)param_1 + uVar11) + uVar4),(uVar14 - uVar11) + 1);
  }
  else {
    local_70 = local_90 + local_88;
    uStack_78 = 0;
    local_80 = local_a8;
    plStack_60 = (longlong *)0x0;
    local_58 = local_90;
    local_68 = local_a8;
    plVar8 = param_1;
    if (0xf < (ulonglong)param_1[3]) {
      plVar8 = (longlong *)*param_1;
    }
    FUN_180656e30(param_1,*puVar1 + (longlong)plVar8,&local_68,&local_80);
  }
  FUN_18047c850(&local_a8);
  return;
}



############ FUN_ 1806553e0 size=1101 ############

void FUN_1806553e0(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4)

{
  ulonglong *puVar1;
  char *pcVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  char *pcVar5;
  undefined8 uVar6;
  longlong *plVar7;
  ulonglong *puVar8;
  longlong *plVar9;
  longlong *plVar10;
  ulonglong uVar11;
  longlong *plVar12;
  longlong lVar13;
  ulonglong uVar14;
  longlong *plVar15;
  longlong *plVar16;
  ulonglong local_res20;
  longlong *local_a8;
  longlong lStack_a0;
  ulonglong local_98;
  ulonglong local_90;
  longlong local_88;
  longlong *local_80;
  undefined8 uStack_78;
  longlong local_70;
  longlong *local_68;
  longlong *plStack_60;
  ulonglong local_58;
  ulonglong local_48;
  undefined8 local_40;
  undefined1 local_38 [16];
  
  local_40 = 0xfffffffffffffffe;
  local_68 = (longlong *)*param_4;
  plStack_60 = (longlong *)param_4[1];
  local_a8 = (longlong *)0x0;
  lStack_a0 = 0;
  local_98 = 0;
  local_90 = 0;
  local_88 = 0;
  local_a8 = (longlong *)FUN_1811316e0(0x10);
  *local_a8 = 0;
  local_a8[1] = 0;
  *local_a8 = (longlong)&local_a8;
  plVar10 = param_1;
  plVar7 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    plVar7 = (longlong *)*param_1;
    plVar10 = (longlong *)*param_1;
  }
  plVar9 = plVar7;
  plVar16 = local_68;
  plVar15 = plVar10;
  plVar12 = plStack_60;
  if (local_68 != plStack_60) {
    do {
      for (; (plVar10 = plVar12, local_88 != 0 && (plVar9 != plVar15));
          plVar9 = (longlong *)((longlong)plVar9 + 1)) {
        if (local_a8 == (longlong *)0x0) {
          lVar13 = 0;
        }
        else {
          lVar13 = *local_a8;
        }
        *(undefined1 *)plVar9 =
             *(undefined1 *)
              ((ulonglong)((uint)local_90 & 0xf) +
              *(longlong *)
               (*(longlong *)(lVar13 + 8) + (*(longlong *)(lVar13 + 0x10) - 1U & local_90 >> 4) * 8)
              );
        local_88 = local_88 + -1;
        if (local_88 == 0) {
          local_90 = 0;
        }
        else {
          local_90 = local_90 + 1;
        }
        plVar12 = plVar10;
      }
      if (local_88 == 0) {
        plVar7 = plVar16;
        if (plVar9 != plVar15) {
          memmove(plVar9,plVar15,(longlong)plVar16 - (longlong)plVar15);
          plVar7 = (longlong *)((longlong)plVar9 + ((longlong)plVar16 - (longlong)plVar15));
        }
      }
      else {
        for (; plVar7 = plVar9, plVar9 != plVar16; plVar9 = (longlong *)((longlong)plVar9 + 1)) {
          if ((((int)local_88 + (int)local_90 & 0xfU) == 0) && (local_98 <= local_88 + 0x10U >> 4))
          {
            FUN_18065d710(&local_a8,1);
          }
          local_90 = local_90 & local_98 * 0x10 - 1;
          uVar3 = local_90 + local_88;
          lVar13 = (uVar3 >> 4 & local_98 - 1) * 8;
          if (*(longlong *)(lVar13 + lStack_a0) == 0) {
            uVar6 = FUN_1811316e0(0x10);
            *(undefined8 *)(lVar13 + lStack_a0) = uVar6;
          }
          *(char *)((ulonglong)((uint)uVar3 & 0xf) + *(longlong *)(lVar13 + lStack_a0)) =
               (char)*plVar9;
          lVar13 = 0;
          if (local_a8 != (longlong *)0x0) {
            lVar13 = *local_a8;
          }
          *(undefined1 *)plVar9 =
               *(undefined1 *)
                ((ulonglong)((uint)local_90 & 0xf) +
                *(longlong *)
                 (*(longlong *)(lVar13 + 8) +
                 (*(longlong *)(lVar13 + 0x10) - 1U & local_90 >> 4) * 8));
          if (local_88 == 0) {
            local_90 = 0;
          }
          else {
            local_90 = local_90 + 1;
          }
        }
      }
      local_70 = local_90 + local_88;
      local_80 = (longlong *)0x0;
      uStack_78 = 0;
      if ((local_a8 != (longlong *)0x0) && ((undefined8 *)*local_a8 != (undefined8 *)0x0)) {
        local_80 = *(longlong **)*local_a8;
      }
      FUN_1806568a0(&local_a8,&local_68,&local_80,0,0);
      plVar9 = param_1;
      if (0xf < (ulonglong)param_1[3]) {
        plVar9 = (longlong *)*param_1;
      }
      plVar9 = (longlong *)((longlong)plVar9 + param_1[2]);
      plVar12 = plVar9;
      plVar16 = plVar9;
      if (plVar10 != plVar9) {
        pcVar2 = (char *)param_2[1];
        plVar15 = plVar10;
        do {
          pcVar5 = (char *)*param_2;
          plVar12 = plVar15;
          if ((char *)*param_2 == pcVar2) goto LAB_1806556eb;
          for (; plVar16 = plVar15, plVar12 != plVar9; plVar12 = (longlong *)((longlong)plVar12 + 1)
              ) {
            if (pcVar5 == pcVar2) goto LAB_1806556e2;
            if ((char)*plVar12 != *pcVar5) break;
            pcVar5 = pcVar5 + 1;
          }
        } while ((pcVar5 != pcVar2) &&
                (plVar15 = (longlong *)((longlong)plVar15 + 1), plVar12 = plVar9, plVar16 = plVar9,
                plVar15 != plVar9));
      }
LAB_1806556e2:
      plVar9 = plVar7;
      plVar15 = plVar10;
    } while (plVar16 != plVar12);
  }
LAB_1806556eb:
  plVar9 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    plVar9 = (longlong *)*param_1;
  }
  puVar1 = (ulonglong *)(param_1 + 2);
  plVar7 = (longlong *)
           FUN_1806574a0(local_38,&local_a8,param_1,plVar7,plVar10,*puVar1 + (longlong)plVar9);
  if (local_88 == 0) {
    uVar3 = param_1[3];
    plVar10 = param_1;
    if (0xf < uVar3) {
      plVar10 = (longlong *)*param_1;
    }
    uVar14 = *puVar1;
    plVar9 = param_1;
    if (0xf < uVar3) {
      plVar9 = (longlong *)*param_1;
    }
    uVar11 = *plVar7 - (longlong)plVar9;
    if (uVar14 < uVar11) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69e0();
    }
    local_48 = (longlong)plVar10 + (uVar14 - *plVar7);
    local_res20 = uVar14 - uVar11;
    puVar8 = &local_res20;
    if (local_48 <= local_res20) {
      puVar8 = &local_48;
    }
    uVar4 = *puVar8;
    if (0xf < uVar3) {
      param_1 = (longlong *)*param_1;
    }
    uVar14 = uVar14 - uVar4;
    *puVar1 = uVar14;
    memmove((void *)((longlong)param_1 + uVar11),
            (void *)((longlong)((longlong)param_1 + uVar11) + uVar4),(uVar14 - uVar11) + 1);
  }
  else {
    local_70 = local_90 + local_88;
    uStack_78 = 0;
    local_80 = local_a8;
    plStack_60 = (longlong *)0x0;
    local_58 = local_90;
    local_68 = local_a8;
    plVar7 = param_1;
    if (0xf < (ulonglong)param_1[3]) {
      plVar7 = (longlong *)*param_1;
    }
    FUN_180656e30(param_1,*puVar1 + (longlong)plVar7,&local_68,&local_80);
  }
  FUN_18047c850(&local_a8);
  return;
}



############ FUN_ 1806568a0 size=992 ############

undefined8 *
FUN_1806568a0(longlong *param_1,undefined8 *param_2,longlong param_3,undefined1 *param_4,
             undefined1 *param_5)

{
  ulonglong *puVar1;
  ulonglong uVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  longlong *plVar7;
  longlong *plVar8;
  longlong lVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  undefined8 local_98;
  undefined8 uStack_90;
  longlong local_88;
  longlong *local_80;
  undefined8 uStack_78;
  longlong local_70;
  longlong *local_68;
  undefined8 local_60;
  longlong local_58;
  undefined8 local_50;
  undefined1 local_48 [32];
  
  local_50 = 0xfffffffffffffffe;
  uVar11 = *(longlong *)(param_3 + 0x10) - param_1[3];
  uVar2 = param_1[4];
  if (param_4 != param_5) {
    if (uVar2 >> 1 < uVar11) {
      for (; param_4 != param_5; param_4 = param_4 + 1) {
        if ((((char)param_1[4] + (char)param_1[3] & 0xfU) == 0) &&
           ((ulonglong)param_1[2] <= param_1[4] + 0x10U >> 4)) {
          FUN_18065d710(param_1,1);
        }
        param_1[3] = param_1[3] & param_1[2] * 0x10 - 1U;
        lVar3 = param_1[3];
        lVar4 = param_1[4];
        lVar9 = (param_1[2] - 1U & (ulonglong)(lVar3 + lVar4) >> 4) * 8;
        if (*(longlong *)(lVar9 + param_1[1]) == 0) {
          uVar6 = FUN_1811316e0(0x10);
          *(undefined8 *)(lVar9 + param_1[1]) = uVar6;
        }
        *(undefined1 *)
         ((ulonglong)((uint)(lVar3 + lVar4) & 0xf) + *(longlong *)(lVar9 + param_1[1])) = *param_4;
        param_1[4] = param_1[4] + 1;
      }
      plVar8 = (longlong *)0x0;
      local_60 = 0;
      local_88 = param_1[3];
      local_58 = param_1[4] + local_88;
      local_68 = (longlong *)*param_1;
      plVar7 = plVar8;
      if ((local_68 != (longlong *)0x0) &&
         (plVar7 = (longlong *)0x0, (undefined8 *)*local_68 != (undefined8 *)0x0)) {
        plVar7 = *(longlong **)*local_68;
      }
      local_70 = local_88 + uVar2;
      local_80 = (longlong *)0x0;
      uStack_78 = 0;
      if ((plVar7 != (longlong *)0x0) && ((undefined8 *)*plVar7 != (undefined8 *)0x0)) {
        local_80 = *(longlong **)*plVar7;
      }
      if ((local_68 != (longlong *)0x0) && ((undefined8 *)*local_68 != (undefined8 *)0x0)) {
        plVar8 = *(longlong **)*local_68;
      }
      local_88 = local_88 + uVar11;
      local_98 = 0;
      uStack_90 = 0;
      if ((plVar8 != (longlong *)0x0) && ((undefined8 *)*plVar8 != (undefined8 *)0x0)) {
        local_98 = *(undefined8 *)*plVar8;
      }
      FUN_180657d50(local_48,&local_98,&local_80,&local_68);
    }
    else {
      for (; param_4 != param_5; param_4 = param_4 + 1) {
        if (((*(byte *)(param_1 + 3) & 0xf) == 0) &&
           ((ulonglong)param_1[2] <= param_1[4] + 0x10U >> 4)) {
          FUN_18065d710(param_1,1);
        }
        puVar1 = (ulonglong *)(param_1 + 3);
        *puVar1 = *puVar1 & param_1[2] * 0x10 - 1U;
        lVar9 = param_1[3];
        if (*puVar1 == 0) {
          lVar9 = param_1[2] << 4;
        }
        uVar10 = lVar9 - 1;
        lVar9 = (param_1[2] - 1U & uVar10 >> 4) * 8;
        if (*(longlong *)(lVar9 + param_1[1]) == 0) {
          uVar6 = FUN_1811316e0(0x10);
          *(undefined8 *)(lVar9 + param_1[1]) = uVar6;
        }
        *(undefined1 *)((ulonglong)((uint)uVar10 & 0xf) + *(longlong *)(lVar9 + param_1[1])) =
             *param_4;
        param_1[3] = uVar10;
        param_1[4] = param_1[4] + 1;
      }
      lVar9 = param_1[4] - uVar2;
      local_70 = param_1[3];
      local_80 = (longlong *)*param_1;
      plVar8 = (longlong *)0x0;
      plVar7 = plVar8;
      if ((local_80 != (longlong *)0x0) &&
         (plVar7 = (longlong *)0x0, (undefined8 *)*local_80 != (undefined8 *)0x0)) {
        plVar7 = *(longlong **)*local_80;
      }
      local_88 = local_70 + lVar9;
      local_98 = 0;
      uStack_90 = 0;
      if ((plVar7 != (longlong *)0x0) && ((undefined8 *)*plVar7 != (undefined8 *)0x0)) {
        local_98 = *(undefined8 *)*plVar7;
      }
      uStack_78 = 0;
      FUN_180657c70(&local_80,&local_98);
      local_58 = param_1[3];
      local_68 = (longlong *)*param_1;
      plVar7 = plVar8;
      if ((local_68 != (longlong *)0x0) && ((undefined8 *)*local_68 != (undefined8 *)0x0)) {
        plVar7 = *(longlong **)*local_68;
      }
      local_70 = local_58 + lVar9 + uVar11;
      local_80 = (longlong *)0x0;
      uStack_78 = 0;
      if ((plVar7 != (longlong *)0x0) && ((undefined8 *)*plVar7 != (undefined8 *)0x0)) {
        local_80 = *(longlong **)*plVar7;
      }
      if ((local_68 != (longlong *)0x0) && ((undefined8 *)*local_68 != (undefined8 *)0x0)) {
        plVar8 = *(longlong **)*local_68;
      }
      local_88 = local_58 + lVar9;
      local_98 = 0;
      uStack_90 = 0;
      if ((plVar8 != (longlong *)0x0) && ((undefined8 *)*plVar8 != (undefined8 *)0x0)) {
        local_98 = *(undefined8 *)*plVar8;
      }
      local_60 = 0;
      FUN_180657d50(local_48,&local_68,&local_98,&local_80);
    }
  }
  plVar7 = (longlong *)0x0;
  lVar9 = param_1[3];
  if (((longlong *)*param_1 != (longlong *)0x0) &&
     (puVar5 = *(undefined8 **)*param_1, puVar5 != (undefined8 *)0x0)) {
    plVar7 = (longlong *)*puVar5;
  }
  *param_2 = 0;
  param_2[1] = 0;
  if ((plVar7 != (longlong *)0x0) && ((undefined8 *)*plVar7 != (undefined8 *)0x0)) {
    *param_2 = *(undefined8 *)*plVar7;
  }
  param_2[2] = lVar9 + uVar11;
  return param_2;
}



############ FUN_ 1806574a0 size=394 ############

longlong *
FUN_1806574a0(longlong *param_1,longlong param_2,undefined8 param_3,undefined1 *param_4,
             undefined1 *param_5,undefined1 *param_6)

{
  longlong *plVar1;
  longlong lVar2;
  undefined1 *puVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  
  lVar2 = *(longlong *)(param_2 + 0x20);
  for (; (lVar2 != 0 && (param_4 != param_5)); param_4 = param_4 + 1) {
    puVar3 = (undefined1 *)FUN_18065ec90(param_2);
    *param_4 = *puVar3;
    plVar1 = (longlong *)(param_2 + 0x20);
    *plVar1 = *plVar1 + -1;
    if (*plVar1 == 0) {
      *(undefined8 *)(param_2 + 0x18) = 0;
    }
    else {
      *(longlong *)(param_2 + 0x18) = *(longlong *)(param_2 + 0x18) + 1;
    }
    lVar2 = *(longlong *)(param_2 + 0x20);
  }
  if (*(longlong *)(param_2 + 0x20) == 0) {
    if (param_4 == param_5) {
      *param_1 = (longlong)param_6;
    }
    else {
      memmove(param_4,param_5,(longlong)param_6 - (longlong)param_5);
      *param_1 = (longlong)(param_4 + ((longlong)param_6 - (longlong)param_5));
    }
  }
  else {
    for (; param_4 != param_6; param_4 = param_4 + 1) {
      if ((((char)*(longlong *)(param_2 + 0x20) + *(char *)(param_2 + 0x18) & 0xfU) == 0) &&
         (*(ulonglong *)(param_2 + 0x10) <= *(longlong *)(param_2 + 0x20) + 0x10U >> 4)) {
        FUN_18065d710(param_2,1);
      }
      *(ulonglong *)(param_2 + 0x18) =
           *(ulonglong *)(param_2 + 0x18) & *(longlong *)(param_2 + 0x10) * 0x10 - 1U;
      uVar5 = *(longlong *)(param_2 + 0x18) + *(longlong *)(param_2 + 0x20);
      lVar2 = (uVar5 >> 4 & *(longlong *)(param_2 + 0x10) - 1U) * 8;
      if (*(longlong *)(lVar2 + *(longlong *)(param_2 + 8)) == 0) {
        uVar4 = FUN_1811316e0(0x10);
        *(undefined8 *)(lVar2 + *(longlong *)(param_2 + 8)) = uVar4;
      }
      *(undefined1 *)
       ((ulonglong)((uint)uVar5 & 0xf) + *(longlong *)(lVar2 + *(longlong *)(param_2 + 8))) =
           *param_4;
      *(longlong *)(param_2 + 0x20) = *(longlong *)(param_2 + 0x20) + 1;
      puVar3 = (undefined1 *)FUN_18065ec90(param_2);
      *param_4 = *puVar3;
      plVar1 = (longlong *)(param_2 + 0x20);
      *plVar1 = *plVar1 + -1;
      if (*plVar1 == 0) {
        *(undefined8 *)(param_2 + 0x18) = 0;
      }
      else {
        *(longlong *)(param_2 + 0x18) = *(longlong *)(param_2 + 0x18) + 1;
      }
    }
    *param_1 = (longlong)param_4;
  }
  return param_1;
}



############ FUN_ 18065d710 size=500 ############

void FUN_18065d710(longlong param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  size_t sVar6;
  size_t sVar7;
  void *pvVar8;
  ulonglong uVar9;
  
  uVar2 = *(ulonglong *)(param_1 + 0x10);
  uVar5 = 1;
  if (uVar2 != 0) {
    uVar5 = uVar2;
  }
  for (; (uVar5 - uVar2 < param_2 || (uVar5 < 8)); uVar5 = uVar5 * 2) {
    if (0xfffffffffffffff - uVar5 < uVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_180618c80(param_1);
    }
  }
  uVar5 = uVar5 - uVar2;
  uVar9 = *(ulonglong *)(param_1 + 0x18) >> 4;
  uVar4 = (uVar2 + uVar5) * 8;
  if (uVar2 + uVar5 < 0x2000000000000000) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        pvVar8 = (void *)0x0;
      }
      else {
        pvVar8 = (void *)FUN_1811316e0(uVar4);
      }
      goto LAB_18065d7dd;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar1 = FUN_1811316e0(uVar2);
  if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar8 = (void *)(lVar1 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar8 - 8) = lVar1;
LAB_18065d7dd:
  sVar7 = uVar9 * 8;
  pvVar3 = (void *)(*(longlong *)(param_1 + 8) + sVar7);
  sVar6 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar3) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar7 + (longlong)pvVar8),pvVar3,sVar6);
  pvVar3 = (void *)(sVar6 + (longlong)(sVar7 + (longlong)pvVar8));
  if (uVar5 < uVar9) {
    sVar6 = uVar5 * 8;
    memmove(pvVar3,*(void **)(param_1 + 8),sVar6);
    pvVar3 = (void *)(sVar6 + *(longlong *)(param_1 + 8));
    sVar7 = (*(longlong *)(param_1 + 8) - (longlong)pvVar3) + sVar7;
    memmove(pvVar8,pvVar3,sVar7);
    pvVar3 = (void *)(sVar7 + (longlong)pvVar8);
  }
  else {
    memmove(pvVar3,*(void **)(param_1 + 8),sVar7);
    memset((void *)(sVar7 + (longlong)pvVar3),0,(uVar5 - uVar9) * 8);
    pvVar3 = pvVar8;
    sVar6 = sVar7;
  }
  memset(pvVar3,0,sVar6);
  pvVar3 = *(void **)(param_1 + 8);
  if (pvVar3 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar8;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar5;
    return;
  }
  pvVar8 = pvVar3;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar8 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar8);
}



############ FUN_ 18065dd60 size=227 ############

longlong FUN_18065dd60(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bbb098;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_180659ac0(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_year>_>
              ::vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_year>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_year>_>
         ::vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 18065de50 size=227 ############

longlong FUN_18065de50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bbb110;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_180659b70(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_weekday>_>
              ::vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_weekday>_>
                ::vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_weekday>_>::
         vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 18065df40 size=227 ############

longlong FUN_18065df40(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x68);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[10] = &DAT_181bbb1b8;
    puVar1[0xc] = boost::exception_detail::clone_base::vftable;
    FUN_180659c20(puVar1,param_1 + -0x60,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<std::ios_base::failure>_>::
              vftable;
    puVar1[5] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<std::ios_base::failure>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[10] + 4) + 0x50 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<std::ios_base::failure>_>::vftable;
    *(int *)((longlong)*(int *)(puVar1[10] + 4) + 0x4c + (longlong)puVar1) =
         *(int *)(puVar1[10] + 4) + -0x10;
    if (param_1 + -0x60 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 5,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[10] + 4) + 0x50;
}



############ FUN_ 18065e030 size=227 ############

longlong FUN_18065e030(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x58);
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    puVar1[8] = &DAT_181bbaf68;
    puVar1[10] = boost::exception_detail::clone_base::vftable;
    FUN_180659cf0(puVar1,param_1 + -0x50,param_3,param_4,uVar2);
    *puVar1 = boost::exception_detail::
              clone_impl<boost::exception_detail::error_info_injector<std::out_of_range>_>::vftable;
    puVar1[3] = boost::exception_detail::
                clone_impl<boost::exception_detail::error_info_injector<std::out_of_range>_>::
                vftable;
    *(undefined ***)((longlong)*(int *)(puVar1[8] + 4) + 0x40 + (longlong)puVar1) =
         boost::exception_detail::
         clone_impl<boost::exception_detail::error_info_injector<std::out_of_range>_>::vftable;
    *(int *)((longlong)*(int *)(puVar1[8] + 4) + 0x3c + (longlong)puVar1) =
         *(int *)(puVar1[8] + 4) + -0x10;
    if (param_1 + -0x50 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + -0x38;
    }
    FUN_1805a7b20(puVar1 + 3,param_1);
  }
  if (puVar1 == (undefined8 *)0x0) {
    return 0;
  }
  return (longlong)puVar1 + (longlong)*(int *)(puVar1[8] + 4) + 0x40;
}



############ FUN_ 1806651b0 size=6278 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180665638) overlaps instruction at (ram,0x000180665635)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180665eb6) */
/* WARNING: Removing unreachable block (ram,0x0001806659d5) */
/* WARNING: Removing unreachable block (ram,0x0001806657ec) */
/* WARNING: Removing unreachable block (ram,0x0001806652d9) */
/* WARNING: Removing unreachable block (ram,0x0001806658c3) */
/* WARNING: Removing unreachable block (ram,0x000180665ae5) */
/* WARNING: Removing unreachable block (ram,0x000180665635) */
/* WARNING: Removing unreachable block (ram,0x000180665af1) */
/* WARNING: Removing unreachable block (ram,0x000180666578) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1806651b0(longlong *param_1,longlong *param_2)

{
  void *pvVar1;
  longlong *plVar2;
  undefined8 uVar3;
  uint uVar4;
  int iVar5;
  void *pvVar6;
  uint uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  undefined1 *puVar10;
  longlong *plVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  uint uVar14;
  longlong lVar15;
  ulonglong uVar16;
  uint uVar17;
  undefined1 *puVar18;
  undefined1 *puVar19;
  longlong lVar20;
  longlong lVar21;
  longlong lVar22;
  bool bVar23;
  bool bVar24;
  int unaff_retaddr;
  undefined1 auStack_268 [32];
  uint local_248;
  longlong *local_240;
  longlong *local_238;
  undefined *local_230;
  undefined8 local_228;
  undefined4 local_220 [2];
  undefined4 local_218 [2];
  uint local_210;
  uint local_20c;
  longlong *local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8 [3];
  char *local_1d0;
  char *local_1c8;
  longlong local_1c0 [3];
  longlong local_1a8 [3];
  longlong local_190 [2];
  undefined1 local_180;
  undefined7 uStack_17f;
  longlong lStack_178;
  longlong local_170;
  ulonglong uStack_168;
  undefined1 local_160;
  undefined7 uStack_15f;
  longlong lStack_158;
  longlong local_150;
  ulonglong uStack_148;
  undefined1 local_140;
  undefined7 uStack_13f;
  undefined8 local_130;
  ulonglong local_128;
  undefined1 local_120;
  undefined7 uStack_11f;
  undefined8 local_110;
  ulonglong local_108;
  undefined1 local_100;
  undefined7 uStack_ff;
  undefined8 local_f0;
  ulonglong local_e8;
  undefined1 local_e0;
  undefined7 uStack_df;
  undefined8 local_d0;
  ulonglong local_c8;
  undefined1 local_c0 [16];
  undefined8 local_b0;
  undefined8 local_a8;
  undefined1 local_a0 [16];
  undefined8 local_90;
  undefined8 local_88;
  undefined1 local_80 [16];
  undefined8 local_70;
  undefined8 local_68;
  undefined1 local_60 [32];
  ulonglong local_40;
  
  local_190[1] = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_268;
  uVar7 = (uint)&stack0x00000000;
  lVar22 = 0;
  uVar4 = ((uVar7 & 0x6dff) * (uVar7 & 0x6dff) + 1) % 7 | uVar7;
  local_20c = (int)(-uVar4 | uVar4) >> 0x1f & 0xb854U ^ 0xba54;
  uVar4 = (((uVar7 & 0x1fff) + 1) * (uVar7 & 0x1fff) + 7) % 0x51;
  local_210 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0x1f17 ^ 0x1457;
  local_240 = (longlong *)&DAT_181599c74;
  local_230 = &DAT_181599d74;
  local_228 = 0x100;
  *(undefined1 *)(param_2 + 1) = 0;
  uVar4 = (DAT_181599c74 * 0x16a88000 | (uint)(DAT_181599c74 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0x4b0768d3;
  uVar4 = (DAT_181599c78 * 0x16a88000 | (uint)(DAT_181599c78 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  local_248 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (ulonglong)local_248;
  puVar19 = (undefined1 *)register0x00000020;
  local_238 = param_2;
  local_208 = param_1;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001806662c5(0x400c,uVar12);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_248 = (_UNK_181599c7c * 0x16a88000 | (uint)(_UNK_181599c7c * -0x3361d2af) >> 0x11) *
              0x1b873593 ^ local_248;
  uVar4 = (_UNK_181599c80 * 0x16a88000 | (uint)(_UNK_181599c80 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (local_248 << 0xd | local_248 >> 0x13) * 5 + 0xe6546b64;
  local_248 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  local_240 = local_238 + 2;
  if (local_240 != local_208) {
    plVar8 = local_208;
    if (0xf < (ulonglong)local_208[3]) {
      plVar8 = (longlong *)*local_208;
    }
    FUN_1805a6cb0(local_240,plVar8,local_208[2]);
  }
  local_248 = (_UNK_181599c84 * 0x16a88000 | (uint)(_UNK_181599c84 * -0x3361d2af) >> 0x11) *
              0x1b873593 ^ local_248;
  uVar4 = (_UNK_181599c88 * 0x16a88000 | (uint)(_UNK_181599c88 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (local_248 << 0xd | local_248 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599c8c * 0x16a88000 | (uint)(_UNK_181599c8c * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599c90 * 0x16a88000 | (uint)(_UNK_181599c90 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599c94 * 0x16a88000 | (uint)(_UNK_181599c94 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599c98 * 0x16a88000 | (uint)(_UNK_181599c98 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar7 = uVar4 << 0xd | uVar4 >> 0x13;
  uVar4 = uVar7 * 4 + 0xe6546b64;
  bVar23 = CARRY4(uVar7,uVar4);
  uVar7 = uVar7 + uVar4;
  bVar24 = uVar7 == 0;
  do {
    if (bVar23 || bVar24) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      puVar18 = puVar19 + lVar22;
      lVar22 = ~((longlong)puVar19 - (longlong)puVar18) + 1;
      puVar19 = puVar18 + -lVar22;
    }
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    bVar23 = false;
    bVar24 = uVar4 == 0;
  } while (!bVar24);
  uVar7 = (_UNK_181599c9c * 0x16a88000 | (uint)(_UNK_181599c9c * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ uVar7;
  uVar4 = (_UNK_181599ca0 * 0x16a88000 | (uint)(_UNK_181599ca0 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar7 << 0xd | uVar7 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599ca4 * 0x16a88000 | (uint)(_UNK_181599ca4 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599ca8 * 0x16a88000 | (uint)(_UNK_181599ca8 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599cac * 0x16a88000 | (uint)(_UNK_181599cac * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599cb0 * 0x16a88000 | (uint)(_UNK_181599cb0 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (_UNK_181599cb4 * 0x16a88000 | (uint)(_UNK_181599cb4 * -0x3361d2af) >> 0x11) * 0x1b873593
          ^ (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar7 = uVar4 & 0x13f;
  iVar5 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  uVar14 = (uint)local_228 & 0x1f | 0x2e;
  lVar20 = (0x2002L >> (uVar14 * uVar14 * 0x2a9d == 0x412680c) ^ 0x20c2U) -
           ((longlong)
            (int)(((uVar7 + 2) * (uVar7 + 1) * uVar7) % 3 + 0x6bbc +
                 (((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e)) ^ 0x6b7cU);
  uVar4 = (*(int *)(&UNK_181599cb8 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599cb8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar4;
  uVar4 = (*(int *)(&UNK_181599cbc + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599cbc + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599cc0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599cc0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  lVar21 = lVar20 + 0x50;
  uVar14 = (*(int *)(&UNK_181599cc4 + lVar20) * 0x16a88000 |
           (uint)(*(int *)(&UNK_181599cc4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar7 = (uint)lVar21 & 0xf;
  uVar4 = uVar7 | 0x2d;
  uVar7 = uVar7 | 0x27;
  lVar20 = ((longlong)
            (0x955b <<
            (((char)local_228 + '\x01') * (char)local_228 & 1U) +
            (uVar7 * uVar7 * 0x692f == uVar4 * uVar4 * 0xea2f)) ^ 0x957bU) + lVar21;
  uVar4 = (*(int *)(&UNK_181599c58 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c58 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar14 << 0xd | uVar14 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599c5c + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c5c + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599c60 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c60 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599c64 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c64 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599c68 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c68 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599c6c + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c6c + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599c70 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599c70 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(lVar20 + 0x181599c74) * 0x16a88000 |
          (uint)(*(int *)(lVar20 + 0x181599c74) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar7 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar17 = (uint)local_228 & 0x2f;
  uVar14 = uVar7 & 0x6f;
  uVar4 = uVar17 + 1;
  uVar16 = (ulonglong)uVar4;
  uVar17 = uVar17 * uVar17 * uVar4;
  uVar12 = (ulonglong)uVar17;
  lVar20 = (((longlong)(int)(uVar14 * uVar14 * (uVar14 + 1) * (uVar14 + 1) & 0x80000003) |
            (ulonglong)(uVar17 * uVar4 & 2)) ^ 0x204) + lVar20;
  uVar7 = (*(int *)(&UNK_181599a74 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a74 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar7;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (*(int *)(&UNK_181599a78 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a78 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar7 << 0xd | uVar7 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a7c + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a7c + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a80 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a80 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a84 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a84 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a88 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a88 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a8c + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a8c + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a90 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a90 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a94 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a94 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a98 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a98 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599a9c + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599a9c + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599aa0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599aa0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599aa4 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599aa4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599aa8 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599aa8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599aac + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599aac + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ab0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ab0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ab4 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ab4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ab8 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ab8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599abc + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599abc + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ac0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ac0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ac4 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ac4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ac8 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ac8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar13 = (ulonglong)uVar4;
  *local_238 = lVar22;
  uVar4 = (*(int *)(&UNK_181599acc + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599acc + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar4;
  uVar4 = (*(int *)(&UNK_181599ad0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ad0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (ulonglong)uVar4;
  uVar4 = (*(int *)(&UNK_181599ad4 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ad4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar4;
  local_248 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  local_200 = lVar22;
  do {
    FUN_180664242(0x400c,uVar9);
    plVar8 = local_240;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_248 = (*(int *)(&UNK_181599ad8 + lVar20) * 0x16a88000 |
              (uint)(*(int *)(&UNK_181599ad8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
              local_248;
  uVar4 = (*(int *)(&UNK_181599adc + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599adc + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (local_248 << 0xd | local_248 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ae0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ae0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ae4 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ae4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599ae8 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599ae8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599aec + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599aec + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599af0 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599af0 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  lVar22 = 0;
  do {
    lVar15 = uVar13 + uVar16;
    uVar13 = (uVar16 - lVar15 ^ 0xffffffffffffffff) + 1;
    uVar16 = lVar15 - uVar13;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = (*(int *)(&UNK_181599af4 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599af4 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599af8 + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599af8 + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&UNK_181599afc + lVar20) * 0x16a88000 |
          (uint)(*(int *)(&UNK_181599afc + lVar20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (uVar4 >> 0xd | uVar4 * 0x80000) + 0x2322e4a3;
  uVar7 = (uVar4 >> 5 | uVar4 * 0x8000000) + 0x1c5b898c;
  uVar4 = (uVar7 >> 0x11 ^ uVar7) & 0x3fff;
  local_230 = (undefined *)0xf3ec432ba6de1ee1;
  local_248 = 0xa6de1ee1;
  lVar20 = local_240[2];
  if (((uVar7 ^ (uVar4 << 0x11 | uVar4) ^ 0xaa005aa6) * 9 & 0x7fffffff) != 0) {
    uVar12 = lVar20 - 1;
    uVar16 = FUN_18065e8c0(local_240,&DAT_181bbae68,0,uVar16);
    if (uVar16 != uVar12) {
      local_150 = 0;
      uStack_148 = 0xf;
      local_160 = 0;
      if ((ulonglong)plVar8[2] < uVar12) {
        uVar12 = plVar8[2];
      }
      plVar11 = plVar8;
      if (0xf < (ulonglong)plVar8[3]) {
        plVar11 = (longlong *)*plVar8;
      }
      FUN_1805a6cb0(&local_160,plVar11,uVar12);
      if (plVar8 == (longlong *)&local_160) {
        if (0xf < uStack_148) {
          pvVar1 = (void *)CONCAT71(uStack_15f,local_160);
          pvVar6 = pvVar1;
          if ((0xfff < uStack_148 + 1) &&
             (pvVar6 = *(void **)((longlong)pvVar1 + -8),
             0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar6);
        }
        *(undefined1 *)(local_238 + 1) = 1;
      }
      else {
        FUN_180485450(plVar8);
        *plVar8 = CONCAT71(uStack_15f,local_160);
        plVar8[1] = lStack_158;
        plVar8[2] = local_150;
        plVar8[3] = uStack_148;
        *(undefined1 *)(local_238 + 1) = 1;
      }
      goto LAB_180666a42;
    }
    plVar11 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar11 = (longlong *)*plVar8;
    }
    iVar5 = isdigit((int)*(char *)((longlong)plVar11 + uVar12));
    if (iVar5 != 0) {
      plVar11 = plVar8;
      if (0xf < (ulonglong)plVar8[3]) {
        plVar11 = (longlong *)*plVar8;
      }
      iVar5 = isdigit((int)*(char *)((longlong)plVar11 + lVar20 + -2));
      if (iVar5 != 0) {
        plVar11 = plVar8;
        if (0xf < (ulonglong)plVar8[3]) {
          plVar11 = (longlong *)*plVar8;
        }
        if (*(char *)((longlong)plVar11 + lVar20 + -4) == ':') {
          plVar11 = plVar8;
          if (0xf < (ulonglong)plVar8[3]) {
            plVar11 = (longlong *)*plVar8;
          }
          iVar5 = isdigit((int)*(char *)((longlong)plVar11 + lVar20 + -3));
          if (iVar5 != 0) {
            plVar11 = plVar8;
            if (0xf < (ulonglong)plVar8[3]) {
              plVar11 = (longlong *)*plVar8;
            }
            iVar5 = isdigit((int)*(char *)((longlong)plVar11 + lVar20 + -5));
            if (iVar5 != 0) {
              plVar11 = plVar8;
              if (0xf < (ulonglong)plVar8[3]) {
                plVar11 = (longlong *)*plVar8;
              }
              if (*(char *)((longlong)plVar11 + lVar20 + -6) != '-') {
                plVar11 = plVar8;
                if (0xf < (ulonglong)plVar8[3]) {
                  plVar11 = (longlong *)*plVar8;
                }
                if (*(char *)((longlong)plVar11 + lVar20 + -7) != '+') goto LAB_180666953;
              }
              plVar11 = plVar8;
              if (0xf < (ulonglong)plVar8[3]) {
                plVar11 = (longlong *)*plVar8;
              }
              iVar5 = isdigit((int)*(char *)((longlong)plVar11 + uVar12));
              if (iVar5 != 0) {
                plVar11 = plVar8;
                if (0xf < (ulonglong)plVar8[3]) {
                  plVar11 = (longlong *)*plVar8;
                }
                iVar5 = isdigit((int)*(char *)((longlong)plVar11 + lVar20 + -2));
                if (iVar5 != 0) {
                  plVar11 = plVar8;
                  if (0xf < (ulonglong)plVar8[3]) {
                    plVar11 = (longlong *)*plVar8;
                  }
                  if (*(char *)((longlong)plVar11 + lVar20 + -4) == ':') {
                    plVar11 = plVar8;
                    if (0xf < (ulonglong)plVar8[3]) {
                      plVar11 = (longlong *)*plVar8;
                    }
                    iVar5 = isdigit((int)*(char *)((longlong)plVar11 + lVar20 + -3));
                    if (iVar5 != 0) {
                      plVar11 = plVar8;
                      if (0xf < (ulonglong)plVar8[3]) {
                        plVar11 = (longlong *)*plVar8;
                      }
                      if (*(char *)((longlong)plVar11 + lVar20 + -8) != '-') {
                        plVar11 = plVar8;
                        if (0xf < (ulonglong)plVar8[3]) {
                          plVar11 = (longlong *)*plVar8;
                        }
                        if (*(char *)((longlong)plVar11 + lVar20 + -8) != '+') goto LAB_18066688c;
                      }
                      if (0xf < (ulonglong)plVar8[3]) {
                        plVar8 = (longlong *)*plVar8;
                      }
                      iVar5 = isdigit((int)*(char *)((longlong)plVar8 + uVar12));
                      if (iVar5 != 0) {
                        local_200 = FUN_1811316e0(0x18);
                        if (local_200 != 0) {
                          lVar22 = FUN_1805a48c0(local_200,
                                                 "makeIsoTimeOffsetInfoForIso8601TimeString() does not understand the time string: \"%s\""
                                                );
                        }
                        lVar21 = FUN_1805c0260();
                        FUN_1805b2240(*(undefined8 *)(lVar22 + 8),local_208);
                        local_220[0] = 0x173;
                        local_1c8 = 
                        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\timeutils.cpp"
                        ;
                        uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar21 + 8),&local_1c8);
                    /* WARNING: Subroutine does not return */
                        FUN_1805b20d0(uVar3,local_220);
                      }
                      *(undefined1 *)(local_238 + 1) = 0;
                      goto LAB_180666a42;
                    }
                  }
                }
              }
LAB_18066688c:
              uVar12 = lVar20 - 8;
              local_b0 = 0;
              local_a8 = 0xf;
              local_c0[0] = 0;
              if ((ulonglong)plVar8[2] < uVar12) {
                    /* WARNING: Subroutine does not return */
                FUN_1805a69e0();
              }
              local_1c0[1] = 0xffffffffffffffff;
              local_1c0[0] = plVar8[2] - uVar12;
              plVar11 = local_1c0;
              if (local_1c0[0] == -1) {
                plVar11 = local_1c0 + 1;
              }
              plVar2 = plVar8;
              if (0xf < (ulonglong)plVar8[3]) {
                plVar2 = (longlong *)*plVar8;
              }
              FUN_1805a6cb0(local_c0,uVar12 + (longlong)plVar2,*plVar11);
              FUN_180657e60(local_1c0 + 2,local_c0);
              plVar11 = local_238;
              *local_238 = local_1c0[2];
              FUN_180485450(local_c0);
              uVar3 = FUN_18066abd0(plVar8,local_60,0,lVar20 + -5);
              FUN_1805a5a40(plVar8,uVar3);
              FUN_180485450(local_60);
              *(undefined1 *)(plVar11 + 1) = 1;
              goto LAB_180666a42;
            }
          }
        }
      }
    }
LAB_180666953:
    uVar12 = lVar20 - 8;
    local_90 = 0;
    local_88 = 0xf;
    local_a0[0] = 0;
    if ((ulonglong)plVar8[2] < uVar12) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69e0();
    }
    local_1a8[1] = 0xffffffffffffffff;
    local_1a8[0] = plVar8[2] - uVar12;
    plVar11 = local_1a8;
    if (local_1a8[0] == -1) {
      plVar11 = local_1a8 + 1;
    }
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    FUN_1805a6cb0(local_a0,(longlong)plVar2 + uVar12,*plVar11);
    FUN_180657e60(local_1a8 + 2,local_a0);
    plVar11 = local_238;
    *local_238 = local_1a8[2];
    FUN_180485450(local_a0);
    local_70 = 0;
    local_68 = 0xf;
    local_80[0] = 0;
    if ((ulonglong)plVar8[2] < uVar12) {
      uVar12 = plVar8[2];
    }
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    FUN_1805a6cb0(local_80,plVar2,uVar12);
    FUN_1805a5a40(plVar8,local_80);
    FUN_180485450(local_80);
    *(undefined1 *)(plVar11 + 1) = 1;
LAB_180666a42:
    thunk_FUN_1805a9280();
    return;
  }
  plVar11 = (longlong *)(lVar20 - 1);
  plVar2 = (longlong *)FUN_18065e8c0(local_240,&DAT_181bbae68,0,uVar16);
  if (plVar2 == plVar11) {
    local_170 = 0;
    uStack_168 = 0xf;
    local_180 = 0;
    if ((longlong *)plVar8[2] < plVar11) {
      plVar11 = (longlong *)plVar8[2];
    }
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    FUN_1805a6cb0(&local_180,plVar2,plVar11);
    if (plVar8 == (longlong *)&local_180) {
      if (0xf < uStack_168) {
        pvVar1 = (void *)CONCAT71(uStack_17f,local_180);
        pvVar6 = pvVar1;
        if ((0xfff < uStack_168 + 1) &&
           (pvVar6 = *(void **)((longlong)pvVar1 + -8),
           0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar6);
      }
    }
    else {
      FUN_180485450(plVar8);
      *plVar8 = CONCAT71(uStack_17f,local_180);
      plVar8[1] = lStack_178;
      plVar8[2] = local_170;
      plVar8[3] = uStack_168;
    }
    *(undefined1 *)(local_238 + 1) = 1;
    goto LAB_180666512;
  }
  plVar2 = plVar8;
  if (0xf < (ulonglong)plVar8[3]) {
    plVar2 = (longlong *)*plVar8;
  }
  iVar5 = isdigit((int)*(char *)((longlong)plVar2 + (longlong)plVar11));
  if (iVar5 == 0) {
LAB_1806661da:
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    iVar5 = isdigit((int)*(char *)((longlong)plVar2 + (longlong)plVar11));
    if (iVar5 != 0) {
      plVar2 = plVar8;
      if (0xf < (ulonglong)plVar8[3]) {
        plVar2 = (longlong *)*plVar8;
      }
      iVar5 = isdigit((int)*(char *)((longlong)plVar2 + -1 + (longlong)plVar11));
      if (iVar5 != 0) {
        plVar2 = plVar8;
        if (0xf < (ulonglong)plVar8[3]) {
          plVar2 = (longlong *)*plVar8;
        }
        if (*(char *)((longlong)plVar2 + -2 + (longlong)plVar11) == ':') {
          plVar2 = plVar8;
          if (0xf < (ulonglong)plVar8[3]) {
            plVar2 = (longlong *)*plVar8;
          }
          iVar5 = isdigit((int)*(char *)((longlong)plVar2 + -3 + (longlong)plVar11));
          if (iVar5 != 0) {
            plVar2 = plVar8;
            if (0xf < (ulonglong)plVar8[3]) {
              plVar2 = (longlong *)*plVar8;
            }
            if (*(char *)((longlong)plVar2 + -4 + (longlong)plVar11) != '-') {
              plVar2 = plVar8;
              if (0xf < (ulonglong)plVar8[3]) {
                plVar2 = (longlong *)*plVar8;
              }
              if (*(char *)((longlong)plVar2 + -4 + (longlong)plVar11) != '+') goto LAB_1806663d6;
            }
            uVar16 = lVar20 - 5;
            local_f0 = 0;
            local_e8 = 0xf;
            local_100 = 0;
            if ((ulonglong)plVar8[2] < uVar16) {
                    /* WARNING: Subroutine does not return */
              FUN_1805a69e0();
            }
            local_1e8[1] = 0xffffffffffffffff;
            local_1e8[0] = plVar8[2] - uVar16;
            plVar11 = local_1e8;
            if (local_1e8[0] == -1) {
              plVar11 = local_1e8 + 1;
            }
            plVar2 = plVar8;
            if (0xf < (ulonglong)plVar8[3]) {
              plVar2 = (longlong *)*plVar8;
            }
            FUN_1805a6cb0(&local_100,(longlong)plVar2 + uVar16,*plVar11);
            FUN_180657e60(local_1e8 + 2,&local_100);
            plVar11 = local_238;
            *local_238 = local_1e8[2];
            if (0xf < local_e8) {
              pvVar1 = (void *)CONCAT71(uStack_ff,local_100);
              pvVar6 = pvVar1;
              if ((0xfff < local_e8 + 1) &&
                 (pvVar6 = *(void **)((longlong)pvVar1 + -8),
                 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
                    /* WARNING: Subroutine does not return */
              free(pvVar6);
            }
            local_d0 = 0;
            local_c8 = 0xf;
            local_e0 = 0;
            if ((ulonglong)plVar8[2] < uVar16) {
              uVar16 = plVar8[2];
            }
            plVar2 = plVar8;
            if (0xf < (ulonglong)plVar8[3]) {
              plVar2 = (longlong *)*plVar8;
            }
            FUN_1805a6cb0(&local_e0,plVar2,uVar16);
            FUN_1805a5a40(plVar8,&local_e0);
            if (0xf < local_c8) {
              pvVar1 = (void *)CONCAT71(uStack_df,local_e0);
              pvVar6 = pvVar1;
              if ((0xfff < local_c8 + 1) &&
                 (pvVar6 = *(void **)((longlong)pvVar1 + -8),
                 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
LAB_1806663c8:
                    /* WARNING: Subroutine does not return */
              free(pvVar6);
            }
            goto LAB_1806663cd;
          }
        }
      }
    }
LAB_1806663d6:
    if (0xf < (ulonglong)plVar8[3]) {
      plVar8 = (longlong *)*plVar8;
    }
    iVar5 = isdigit((int)*(char *)((longlong)plVar8 + (longlong)plVar11));
    if (iVar5 == 0) {
      local_200 = FUN_1811316e0(0x18);
      if (local_200 != 0) {
        lVar22 = FUN_1805a48c0(local_200,
                               "makeIsoTimeOffsetInfoForIso8601TimeString() does not understand the time string: \"%s\""
                              );
      }
      lVar21 = FUN_1805c0260();
      FUN_1805b2240(*(undefined8 *)(lVar22 + 8),local_208);
      local_218[0] = 0x1d5;
      local_1d0 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\timeutils.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar21 + 8),&local_1d0);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,local_218);
    }
    *(undefined1 *)(local_238 + 1) = 0;
  }
  else {
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    iVar5 = isdigit((int)*(char *)((longlong)plVar2 + -1 + (longlong)plVar11));
    if (iVar5 == 0) goto LAB_1806661da;
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    if (*(char *)((longlong)plVar2 + -2 + (longlong)plVar11) != ':') goto LAB_1806661da;
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    iVar5 = isdigit((int)*(char *)((longlong)plVar2 + -3 + (longlong)plVar11));
    if (iVar5 == 0) goto LAB_1806661da;
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    iVar5 = isdigit((int)*(char *)((longlong)plVar2 + -4 + (longlong)plVar11));
    if (iVar5 == 0) goto LAB_1806661da;
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    if (*(char *)((longlong)plVar2 + -5 + (longlong)plVar11) != '-') {
      plVar2 = plVar8;
      if (0xf < (ulonglong)plVar8[3]) {
        plVar2 = (longlong *)*plVar8;
      }
      if (*(char *)((longlong)plVar2 + -5 + (longlong)plVar11) != '+') goto LAB_1806661da;
    }
    uVar16 = lVar20 - 6;
    local_130 = 0;
    local_128 = 0xf;
    local_140 = 0;
    if ((ulonglong)plVar8[2] < uVar16) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69e0();
    }
    local_1f8 = -1;
    local_190[0] = plVar8[2] - uVar16;
    plVar11 = local_190;
    if (local_190[0] == -1) {
      plVar11 = &local_1f8;
    }
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    FUN_1805a6cb0(&local_140,uVar16 + (longlong)plVar2,*plVar11);
    FUN_180657e60(&local_1f0,&local_140);
    plVar11 = local_238;
    *local_238 = local_1f0;
    if (0xf < local_128) {
      pvVar1 = (void *)CONCAT71(uStack_13f,local_140);
      pvVar6 = pvVar1;
      if ((0xfff < local_128 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar6);
    }
    local_110 = 0;
    local_108 = 0xf;
    local_120 = 0;
    if ((ulonglong)plVar8[2] < uVar16) {
      uVar16 = plVar8[2];
    }
    plVar2 = plVar8;
    if (0xf < (ulonglong)plVar8[3]) {
      plVar2 = (longlong *)*plVar8;
    }
    FUN_1805a6cb0(&local_120,plVar2,uVar16);
    FUN_1805a5a40(plVar8,&local_120);
    if (0xf < local_108) {
      pvVar1 = (void *)CONCAT71(uStack_11f,local_120);
      pvVar6 = pvVar1;
      if ((0xfff < local_108 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      goto LAB_1806663c8;
    }
LAB_1806663cd:
    *(undefined1 *)(plVar11 + 1) = 1;
  }
LAB_180666512:
  puVar19 = auStack_268;
  do {
    puVar10 = puVar19;
    *(longlong *)(puVar10 + -8) = lVar21;
    *(longlong **)(puVar10 + -0x10) = plVar11;
    *(ulonglong *)(puVar10 + -0x18) = uVar12;
    lVar22 = -(longlong)(int)local_210;
    uVar12 = *(ulonglong *)(puVar10 + lVar22 + 0xb28);
    plVar11 = *(longlong **)(puVar10 + lVar22 + 0xb30);
    lVar21 = *(longlong *)(puVar10 + lVar22 + 0xb38);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    puVar19 = puVar10 + lVar22 + 0xb40;
  } while (uVar4 != 0);
  *(undefined **)(puVar10 + lVar22 + 0xb38) = &UNK_180666af0;
}



############ FUN_ 180669160 size=1099 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180669746) overlaps instruction at (ram,0x000180669744)
    */
/* WARNING: Removing unreachable block (ram,0x000180669a32) */
/* WARNING: Removing unreachable block (ram,0x00018066967f) */
/* WARNING: Removing unreachable block (ram,0x000180669225) */
/* WARNING: Removing unreachable block (ram,0x000180669287) */
/* WARNING: Removing unreachable block (ram,0x0001806696ef) */
/* WARNING: Removing unreachable block (ram,0x7982ed14) */
/* WARNING: Removing unreachable block (ram,0x000180669744) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined4 * FUN_180669160(void)

{
  longlong *plVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  undefined8 uVar5;
  undefined4 *puVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  ulonglong uVar10;
  longlong lVar11;
  uint *puVar12;
  uint *puVar13;
  undefined1 *puVar14;
  uint uVar15;
  undefined4 *puVar16;
  ulonglong uVar17;
  undefined8 in_R11;
  uint uVar18;
  undefined4 *puVar19;
  longlong lVar20;
  bool bVar21;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 local_88 [32];
  code *pcStack_68;
  undefined8 local_60;
  int *local_58;
  
  puVar14 = local_88;
  local_60 = 0xfffffffffffffffe;
  uVar18 = 0x660;
  lVar20 = (longlong)&DAT_18265f5f8 +
           (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18265f5f8),8) >> 5) * -0x29;
  puVar16 = (undefined4 *)0x0;
  LOCK();
  iVar2 = *(int *)(&DAT_18265dbd0 + lVar20 * 4);
  *(int *)(&DAT_18265dbd0 + lVar20 * 4) = 1;
  UNLOCK();
  puVar6 = puVar16;
  puVar19 = DAT_18265f5f8;
  while (DAT_18265f5f8 = puVar19, iVar2 != 0) {
    uVar15 = (uint)puVar6;
    if ((3 < uVar15) && (0xf < uVar15)) {
      Sleep((uint)(0x1f < uVar15));
    }
    puVar6 = (undefined4 *)(ulonglong)(uVar15 + 1);
    LOCK();
    iVar2 = *(int *)(&DAT_18265dbd0 + lVar20 * 4);
    *(int *)(&DAT_18265dbd0 + lVar20 * 4) = 1;
    UNLOCK();
    puVar19 = DAT_18265f5f8;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar20 * 4) = 0;
  uVar15 = (DAT_181558204 ^ 0x811c9e07) * 0x10001a7;
  lVar11 = 7;
  puVar12 = &DAT_181558204;
  do {
    puVar13 = puVar12;
    uVar15 = (puVar13[2] ^ (puVar13[1] ^ uVar15) * 0x10001a7) * 0x10001a7;
    lVar11 = lVar11 + -1;
    puVar12 = puVar13 + 2;
  } while (lVar11 != 0);
  if (puVar19 == (undefined4 *)0x0) {
    local_58 = &DAT_18265f600;
    LOCK();
    bVar21 = DAT_18265f600 == 0;
    if (bVar21) {
      DAT_18265f600 = 1;
    }
    UNLOCK();
    while (!bVar21) {
      LOCK();
      bVar21 = DAT_18265f600 == 0;
      if (bVar21) {
        DAT_18265f600 = 1;
      }
      UNLOCK();
    }
    LOCK();
    iVar2 = *(int *)(&DAT_18265dbd0 + lVar20 * 4);
    *(int *)(&DAT_18265dbd0 + lVar20 * 4) = 1;
    UNLOCK();
    puVar6 = puVar16;
    puVar19 = DAT_18265f5f8;
    while (DAT_18265f5f8 = puVar19, iVar2 != 0) {
      uVar7 = (uint)puVar6;
      if ((3 < uVar7) && (0xf < uVar7)) {
        Sleep((uint)(0x1f < uVar7));
      }
      puVar6 = (undefined4 *)(ulonglong)(uVar7 + 1);
      LOCK();
      iVar2 = *(int *)(&DAT_18265dbd0 + lVar20 * 4);
      *(int *)(&DAT_18265dbd0 + lVar20 * 4) = 1;
      UNLOCK();
      puVar19 = DAT_18265f5f8;
    }
    *(undefined4 *)(&DAT_18265dbd0 + lVar20 * 4) = 0;
    if (puVar19 == (undefined4 *)0x0) {
      puVar6 = (undefined4 *)FUN_1811316e0(0x10);
      puVar19 = puVar16;
      if (puVar6 != (undefined4 *)0x0) {
        *puVar6 = 0;
        *(undefined8 *)(puVar6 + 2) = 0;
        puVar19 = puVar6;
      }
      FUN_1805ccdd0(FUN_180669d60,puVar19);
      LOCK();
      iVar2 = *(int *)(&DAT_18265dbd0 + lVar20 * 4);
      *(int *)(&DAT_18265dbd0 + lVar20 * 4) = 1;
      UNLOCK();
      while (iVar2 != 0) {
        uVar7 = (uint)puVar16;
        if ((3 < uVar7) && (0xf < uVar7)) {
          Sleep((uint)(0x1f < uVar7));
        }
        puVar16 = (undefined4 *)(ulonglong)(uVar7 + 1);
        LOCK();
        iVar2 = *(int *)(&DAT_18265dbd0 + lVar20 * 4);
        *(int *)(&DAT_18265dbd0 + lVar20 * 4) = 1;
        UNLOCK();
      }
      DAT_18265f5f8 = puVar19;
      *(undefined4 *)(&DAT_18265dbd0 + lVar20 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_18265f600 = 0;
  }
  do {
    uVar18 = -((uVar18 ^ 0xffffffff) + 1);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar15 = (puVar13[0x12] ^
           (puVar13[0x11] ^
           (puVar13[0x10] ^
           (puVar13[0xf] ^
           (puVar13[0xe] ^
           (puVar13[0xd] ^
           (puVar13[0xc] ^
           (puVar13[0xb] ^
           (puVar13[10] ^
           (puVar13[9] ^
           (puVar13[8] ^
           (puVar13[7] ^
           (puVar13[6] ^
           (puVar13[5] ^ (puVar13[4] ^ (puVar13[3] ^ uVar15) * 0x10001a7) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7
           ) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  puVar12 = (uint *)((longlong)(puVar13 + 0x12) +
                    ((longlong)(int)(((uVar15 & 0x21ff) + 1) * (uVar15 & 0x21ff) & 0x80000001) >>
                     ((byte)uVar15 & 0x1f) ^ 4U));
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  puVar13 = puVar12 + 0xf;
  uVar15 = (*puVar13 ^
           (puVar12[0xe] ^
           (puVar12[0xd] ^
           (puVar12[0xc] ^
           (puVar12[0xb] ^
           (puVar12[10] ^
           (puVar12[9] ^
           (puVar12[8] ^
           (puVar12[7] ^
           (puVar12[6] ^
           (puVar12[5] ^
           (puVar12[4] ^
           (puVar12[3] ^
           (puVar12[2] ^ (puVar12[1] ^ (*puVar12 ^ uVar15) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  uVar17 = (ulonglong)uVar15;
  if (((ulonglong)puVar13 & 0x1e00) == 0) {
    uVar7 = (uint)puVar13 & 0xf | 0x68;
    uVar9 = uVar15 & 0x3f | 0x58;
    uVar7 = uVar7 * uVar7 * 0xe507 ^ uVar9 * uVar9 * 0x19cf;
  }
  else {
    uVar7 = 0x2e;
  }
  uVar10 = (ulonglong)((int)(-uVar7 | uVar7) >> 0x1f & 0x1e0e) ^ 0xffffffffffffe1da;
  uVar7 = *(uint *)((longlong)puVar13 + uVar10 + 0x30);
  uVar9 = *(uint *)((longlong)puVar13 + uVar10 + 0x34);
  uVar3 = *(uint *)((longlong)puVar13 + uVar10 + 0x38);
  uVar4 = *(uint *)((longlong)puVar13 + uVar10 + 0x3c);
  do {
    func_0x000180668314(0x6838);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar15 = (*(uint *)((longlong)puVar13 + uVar10 + 0x6c) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x68) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 100) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x60) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x5c) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x58) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x54) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x50) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x4c) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x48) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x44) ^
           (*(uint *)((longlong)puVar13 + uVar10 + 0x40) ^
           (uVar4 ^ (uVar3 ^ (uVar9 ^ (uVar7 ^ uVar15) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7 ^
           *(uint *)((longlong)puVar13 + uVar10 + 0x70);
  uVar7 = (uVar15 * 0x10001a70 | uVar15 * 0x10001a7 >> 0x1c) & 0xd2d2d2d2 |
          (uVar15 * 0x10001a7 >> 4 | uVar15 * 0x70000000) & 0x2d2d2d2d;
  uVar15 = (uVar7 >> 0x12 ^ uVar7) >> 0xd & 1;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    uVar5 = rdtsc();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = ((uint)uVar5 ^ (uint)((ulonglong)uVar5 >> 0x20)) * -0x13ac13ad;
  if ((uVar9 >> 0x18 ^ uVar9) * -0x3d4d12ab < 0x1734f0b) {
    do {
      pcStack_68 = FUN_1813f2240;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar10 = FUN_1813f2240(0,0xbe36);
    if (1 < uVar10) {
      lVar20 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar20 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar20 = *plVar1;
      }
    }
  }
  if ((char)((((uVar15 << 0x12 | uVar15) << 0xd ^ uVar7) == 0x70ef53a0) * ':') == '\0') {
    puVar6 = (undefined4 *)thunk_FUN_1805a9280();
    return puVar6;
  }
  do {
    *(undefined **)(puVar14 + -8) = &UNK_180669ca8;
    lVar20 = (longlong)(int)uVar18;
    func_0x00018066a05f();
    *(undefined8 *)(puVar14 + -8) = in_R11;
    *(ulonglong *)(puVar14 + -0x10) = uVar17;
    *(BADSPACEBASE **)(puVar14 + -0x18) = register0x00000020;
    puVar19 = (undefined4 *)-(((ulonglong)puVar19 ^ 0xffffffffffffffff) + 1);
    lVar20 = -lVar20;
    register0x00000020 = *(BADSPACEBASE **)(puVar14 + lVar20 + 0x648);
    uVar17 = *(ulonglong *)(puVar14 + lVar20 + 0x650);
    in_R11 = *(undefined8 *)(puVar14 + lVar20 + 0x658);
    puVar14 = puVar14 + lVar20 + 0x660;
    uVar15 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  return puVar19;
}



############ FUN_ 18066b550 size=97 ############

undefined8 * FUN_18066b550(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::ILokConduitAuthClient>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b5c0 size=97 ############

undefined8 * FUN_18066b5c0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Ilok1Commander>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b630 size=97 ############

undefined8 * FUN_18066b630(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Ilok1Protocols>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b6a0 size=97 ############

undefined8 * FUN_18066b6a0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Ilok2Protocols>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18066b710 size=97 ############

undefined8 * FUN_18066b710(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::MachineId>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1806818e0 size=115 ############

void FUN_1806818e0(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x88;
  if (param_2 < 0x1e1e1e1e1e1e1e2) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 18066c1a0 size=578 ############

void FUN_18066c1a0(ulonglong *param_1,longlong param_2,longlong param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  
  puVar1 = (undefined8 *)param_1[1];
  puVar7 = (undefined8 *)*param_1;
  uVar4 = (param_3 - param_2) / 0x38;
  uVar5 = ((longlong)puVar1 - (longlong)puVar7) / 0x38;
  uVar8 = (longlong)(param_1[2] - (longlong)puVar7) / 0x38;
  if (uVar4 <= uVar8) {
    if (uVar5 < uVar4) {
      lVar3 = uVar5 * 0x38 + param_2;
      FUN_18066cc30(param_2,lVar3,puVar7);
      uVar4 = FUN_18066e2f0(param_1,lVar3,param_3,param_1[1]);
      param_1[1] = uVar4;
      return;
    }
    FUN_18066cc30(param_2,param_3,puVar7);
    puVar1 = (undefined8 *)param_1[1];
    for (puVar6 = puVar7 + uVar4 * 7; puVar6 != puVar1; puVar6 = puVar6 + 7) {
      (**(code **)*puVar6)(puVar6,0);
    }
    param_1[1] = (ulonglong)(puVar7 + uVar4 * 7);
    return;
  }
  if (0x492492492492492 < uVar4) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = uVar4;
  if ((uVar8 <= 0x492492492492492 - (uVar8 >> 1)) && (uVar5 = (uVar8 >> 1) + uVar8, uVar5 < uVar4))
  {
    uVar5 = uVar4;
  }
  if (puVar7 != (undefined8 *)0x0) {
    for (; puVar7 != puVar1; puVar7 = puVar7 + 7) {
      (**(code **)*puVar7)(puVar7,0);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < uVar8 * 0x38) &&
       (_Memory = *(void **)((longlong)pvVar2 - 8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  uVar4 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (uVar5 == 0) goto LAB_18066c340;
  if (0x492492492492492 < uVar5) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar8 = uVar5 * 0x38;
  if (uVar5 < 0x492492492492493) {
    uVar5 = uVar8;
    if (0xfff < uVar8) goto LAB_18066c2f5;
    if (uVar8 != 0) {
      uVar4 = FUN_1811316e0(uVar8);
    }
  }
  else {
    uVar5 = 0xffffffffffffffff;
LAB_18066c2f5:
    uVar4 = uVar5 + 0x27;
    if (uVar4 <= uVar5) {
      uVar4 = 0xffffffffffffffff;
    }
    lVar3 = FUN_1811316e0(uVar4);
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    uVar4 = lVar3 + 0x27U & 0xffffffffffffffe0;
    *(longlong *)(uVar4 - 8) = lVar3;
  }
  *param_1 = uVar4;
  param_1[1] = uVar4;
  param_1[2] = *param_1 + uVar8;
LAB_18066c340:
  uVar4 = FUN_18066e2f0(param_1,param_2,param_3,*param_1);
  param_1[1] = uVar4;
  return;
}



############ FUN_ 1806819e0 size=115 ############

void FUN_1806819e0(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x130;
  if (param_2 < 0xd79435e50d7944) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 180681960 size=112 ############

void FUN_180681960(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x58;
  if (param_2 < 0x2e8ba2e8ba2e8bb) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 180681860 size=116 ############

void FUN_180681860(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x60;
  if (param_2 < 0x2aaaaaaaaaaaaab) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 180681a60 size=115 ############

void FUN_180681a60(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0xa8;
  if (param_2 < 0x186186186186187) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 18066ece0 size=1242 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018066ef08) */
/* WARNING: Removing unreachable block (ram,0x00018066ef16) */
/* WARNING: Removing unreachable block (ram,0x00018066ef2e) */
/* WARNING: Removing unreachable block (ram,0x00018066f0a9) */
/* WARNING: Removing unreachable block (ram,0x00018066f0b7) */
/* WARNING: Removing unreachable block (ram,0x00018066f0cf) */

void FUN_18066ece0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined4 param_4,
                  undefined8 *param_5,longlong param_6,undefined8 param_7)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined1 auStack_458 [32];
  undefined8 *local_438;
  longlong local_430;
  undefined8 local_428;
  undefined4 local_418;
  longlong local_410;
  longlong local_408;
  undefined8 local_400;
  undefined8 local_3f8;
  undefined8 local_3f0;
  undefined8 local_3e8 [2];
  undefined8 local_3d8;
  longlong *plStack_3d0;
  undefined8 local_3c8;
  longlong *plStack_3c0;
  undefined8 local_3b8;
  longlong local_3b0;
  undefined8 local_3a8;
  longlong local_3a0;
  undefined8 local_398;
  longlong *plStack_390;
  undefined8 local_388;
  longlong *plStack_380;
  undefined8 local_378;
  longlong *plStack_370;
  undefined8 local_368;
  undefined8 *local_360;
  undefined8 *local_358;
  undefined8 *local_350;
  undefined1 local_348 [248];
  undefined1 local_250 [504];
  ulonglong local_58;
  
  local_368 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_458;
  local_350 = param_5;
  local_418 = 0;
  local_360 = param_1;
  local_358 = param_2;
  local_408 = FUN_1811316e0(0x388);
  if (local_408 == 0) {
    uVar6 = 0;
  }
  else {
    local_3b8 = *param_5;
    local_3b0 = param_5[1];
    if (local_3b0 != 0) {
      LOCK();
      *(int *)(local_3b0 + 8) = *(int *)(local_3b0 + 8) + 1;
      UNLOCK();
    }
    local_3a8 = *param_2;
    local_3a0 = param_2[1];
    if (local_3a0 != 0) {
      LOCK();
      *(int *)(local_3a0 + 8) = *(int *)(local_3a0 + 8) + 1;
      UNLOCK();
    }
    local_428 = param_7;
    local_430 = param_6;
    local_438 = &local_3b8;
    uVar6 = FUN_180933ba0(local_408,&local_3a8,param_3,param_4);
  }
  uVar7 = 0;
  local_3c8 = uVar6;
  FUN_18066b550(&plStack_3c0,uVar6);
  FUN_1805ae620(&local_3c8,uVar6,uVar6);
  local_410 = FUN_1811316e0(0x40);
  uVar6 = uVar7;
  if (local_410 != 0) {
    local_398 = local_3c8;
    plStack_390 = plStack_3c0;
    if (plStack_3c0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_3c0 + 1) = (int)plStack_3c0[1] + 1;
      UNLOCK();
    }
    uVar6 = FUN_1807eb0a0(local_410,&local_398,0x5036);
  }
  local_3d8 = uVar6;
  FUN_18066b5c0(&plStack_3d0,uVar6);
  FUN_1805ae620(&local_3d8,uVar6,uVar6);
  if (*(char *)(param_6 + 0x2e3) == '\0') {
    local_410 = FUN_1811316e0(0x28);
    if (local_410 != 0) {
      local_378 = local_3d8;
      plStack_370 = plStack_3d0;
      if (plStack_3d0 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_3d0 + 1) = (int)plStack_3d0[1] + 1;
        UNLOCK();
      }
      uVar7 = FUN_1807fb700(local_410,&local_378);
    }
    local_3f0 = uVar7;
    FUN_18066b630(local_3e8,uVar7);
    FUN_1805ae620(&local_3f0,uVar7,uVar7);
    uVar6 = local_3e8[0];
    *param_1 = local_3f0;
    local_3e8[0] = 0;
    param_1[1] = uVar6;
    local_3f0 = 0;
    local_418 = 1;
    if (plStack_3d0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3d0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3d0 + 8))(plStack_3d0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3d0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3d0 + 0x10))(plStack_3d0);
        }
      }
    }
    if (plStack_3c0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3c0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3c0 + 8))(plStack_3c0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3c0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3c0 + 0x10))(plStack_3c0);
        }
      }
    }
    plVar4 = (longlong *)param_2[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    plVar4 = (longlong *)param_5[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  else {
    FUN_1805b4bc0(local_348,param_6);
    FUN_1806ae530(local_348);
    local_410 = FUN_1811316e0(0x28);
    if (local_410 != 0) {
      local_388 = local_3d8;
      plStack_380 = plStack_3d0;
      if (plStack_3d0 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_3d0 + 1) = (int)plStack_3d0[1] + 1;
        UNLOCK();
      }
      uVar7 = FUN_1807fb700(local_410,&local_388,local_250);
    }
    local_400 = uVar7;
    FUN_18066b630(&local_3f8,uVar7);
    FUN_1805ae620(&local_400,uVar7,uVar7);
    uVar6 = local_3f8;
    *param_1 = local_400;
    local_3f8 = 0;
    param_1[1] = uVar6;
    local_400 = 0;
    local_418 = 1;
    FUN_1805753e0(local_348);
    if (plStack_3d0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3d0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3d0 + 8))(plStack_3d0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3d0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3d0 + 0x10))(plStack_3d0);
        }
      }
    }
    if (plStack_3c0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3c0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3c0 + 8))(plStack_3c0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3c0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3c0 + 0x10))(plStack_3c0);
        }
      }
    }
    plVar4 = (longlong *)param_2[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    plVar4 = (longlong *)param_5[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
}



############ FUN_ 18066f1d0 size=1236 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018066f3f2) */
/* WARNING: Removing unreachable block (ram,0x00018066f400) */
/* WARNING: Removing unreachable block (ram,0x00018066f418) */
/* WARNING: Removing unreachable block (ram,0x00018066f593) */
/* WARNING: Removing unreachable block (ram,0x00018066f5a1) */
/* WARNING: Removing unreachable block (ram,0x00018066f5b9) */

void FUN_18066f1d0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined4 param_4,
                  undefined8 *param_5,longlong param_6,undefined8 param_7)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined1 auStack_458 [32];
  undefined8 *local_438;
  longlong local_430;
  undefined8 local_428;
  undefined4 local_418;
  longlong local_410;
  longlong local_408;
  undefined8 local_400;
  undefined8 local_3f8;
  undefined8 local_3f0;
  undefined8 local_3e8 [2];
  undefined8 local_3d8;
  longlong *plStack_3d0;
  undefined8 local_3c8;
  longlong *plStack_3c0;
  undefined8 local_3b8;
  longlong local_3b0;
  undefined8 local_3a8;
  longlong local_3a0;
  undefined8 local_398;
  longlong *plStack_390;
  undefined8 local_388;
  longlong *plStack_380;
  undefined8 local_378;
  longlong *plStack_370;
  undefined8 local_368;
  undefined8 *local_360;
  undefined8 *local_358;
  undefined8 *local_350;
  undefined1 local_348 [248];
  undefined1 local_250 [504];
  ulonglong local_58;
  
  local_368 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_458;
  local_350 = param_5;
  local_418 = 0;
  local_360 = param_1;
  local_358 = param_2;
  local_408 = FUN_1811316e0(0x388);
  if (local_408 == 0) {
    uVar6 = 0;
  }
  else {
    local_3b8 = *param_5;
    local_3b0 = param_5[1];
    if (local_3b0 != 0) {
      LOCK();
      *(int *)(local_3b0 + 8) = *(int *)(local_3b0 + 8) + 1;
      UNLOCK();
    }
    local_3a8 = *param_2;
    local_3a0 = param_2[1];
    if (local_3a0 != 0) {
      LOCK();
      *(int *)(local_3a0 + 8) = *(int *)(local_3a0 + 8) + 1;
      UNLOCK();
    }
    local_428 = param_7;
    local_430 = param_6;
    local_438 = &local_3b8;
    uVar6 = FUN_180933ba0(local_408,&local_3a8,param_3,param_4);
  }
  uVar7 = 0;
  local_3c8 = uVar6;
  FUN_18066b550(&plStack_3c0,uVar6);
  FUN_1805ae620(&local_3c8,uVar6,uVar6);
  local_410 = FUN_1811316e0(0x428);
  uVar6 = uVar7;
  if (local_410 != 0) {
    local_398 = local_3c8;
    plStack_390 = plStack_3c0;
    if (plStack_3c0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_3c0 + 1) = (int)plStack_3c0[1] + 1;
      UNLOCK();
    }
    uVar6 = FUN_18074feb0(local_410,&local_398);
  }
  local_3d8 = uVar6;
  FUN_18063f9b0(&plStack_3d0,uVar6);
  FUN_1805ae620(&local_3d8,uVar6,uVar6);
  if (*(char *)(param_6 + 0x2e3) == '\0') {
    local_410 = FUN_1811316e0(0x38);
    if (local_410 != 0) {
      local_378 = local_3d8;
      plStack_370 = plStack_3d0;
      if (plStack_3d0 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_3d0 + 1) = (int)plStack_3d0[1] + 1;
        UNLOCK();
      }
      uVar7 = FUN_18063fc50(local_410,&local_378);
    }
    local_3f0 = uVar7;
    FUN_18066b6a0(local_3e8,uVar7);
    FUN_1805ae620(&local_3f0,uVar7,uVar7);
    uVar6 = local_3e8[0];
    *param_1 = local_3f0;
    local_3e8[0] = 0;
    param_1[1] = uVar6;
    local_3f0 = 0;
    local_418 = 1;
    if (plStack_3d0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3d0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3d0 + 8))(plStack_3d0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3d0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3d0 + 0x10))(plStack_3d0);
        }
      }
    }
    if (plStack_3c0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3c0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3c0 + 8))(plStack_3c0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3c0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3c0 + 0x10))(plStack_3c0);
        }
      }
    }
    plVar4 = (longlong *)param_2[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    plVar4 = (longlong *)param_5[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  else {
    FUN_1805b4bc0(local_348,param_6);
    FUN_1806ae530(local_348);
    local_410 = FUN_1811316e0(0x38);
    if (local_410 != 0) {
      local_388 = local_3d8;
      plStack_380 = plStack_3d0;
      if (plStack_3d0 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_3d0 + 1) = (int)plStack_3d0[1] + 1;
        UNLOCK();
      }
      uVar7 = FUN_180640e70(local_410,&local_388,local_250);
    }
    local_400 = uVar7;
    FUN_18066b6a0(&local_3f8,uVar7);
    FUN_1805ae620(&local_400,uVar7,uVar7);
    uVar6 = local_3f8;
    *param_1 = local_400;
    local_3f8 = 0;
    param_1[1] = uVar6;
    local_400 = 0;
    local_418 = 1;
    FUN_1805753e0(local_348);
    if (plStack_3d0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3d0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3d0 + 8))(plStack_3d0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3d0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3d0 + 0x10))(plStack_3d0);
        }
      }
    }
    if (plStack_3c0 != (longlong *)0x0) {
      LOCK();
      plVar4 = plStack_3c0 + 1;
      lVar5 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plStack_3c0 + 8))(plStack_3c0);
        LOCK();
        piVar1 = (int *)((longlong)plStack_3c0 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plStack_3c0 + 0x10))(plStack_3c0);
        }
      }
    }
    plVar4 = (longlong *)param_2[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    plVar4 = (longlong *)param_5[1];
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar5 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
}



############ FUN_ 18077ac30 size=55 ############

void FUN_18077ac30(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x200);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 18077ac70 size=74 ############

void FUN_18077ac70(undefined8 param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)FUN_1811316e0(0x50);
  if (param_2 == (longlong *)0x0) {
    param_2 = plVar1;
    param_3 = plVar1;
  }
  *plVar1 = (longlong)param_2;
  plVar1[1] = (longlong)param_3;
  return;
}



############ FUN_ 180670230 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670230(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180787310(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180670420 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670420(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180788420(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180670610 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670610(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_1807891e0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 1806709f0 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806709f0(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18078ba10(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180670be0 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670be0(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18078cfd0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180670dd0 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670dd0(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18078e360(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180670fc0 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180670fc0(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180791350(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 1806711b0 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806711b0(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180791fb0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180671590 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180671590(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180794a20(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180671780 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180671780(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180795db0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 180671b60 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180671b60(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_180799c80(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 1806725b0 size=447 ############

void FUN_1806725b0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a0360(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180672770 size=447 ############

void FUN_180672770(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a1380(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180672930 size=447 ############

void FUN_180672930(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a2480(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180672af0 size=447 ############

void FUN_180672af0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a4620(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180672cb0 size=447 ############

void FUN_180672cb0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a46b0(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180672e70 size=447 ############

void FUN_180672e70(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a6640(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180673030 size=447 ############

void FUN_180673030(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a7670(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1806731f0 size=447 ############

void FUN_1806731f0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a9130(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1806733b0 size=447 ############

void FUN_1806733b0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a9ed0(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180673730 size=447 ############

void FUN_180673730(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807acea0(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1806738f0 size=447 ############

void FUN_1806738f0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807adf90(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180673c70 size=447 ############

void FUN_180673c70(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807b1430(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 1806807f0 size=2562 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806807f0(longlong *param_1,char param_2,char param_3,char param_4,undefined1 *param_5,
                  char *param_6,longlong param_7)

{
  uint uVar1;
  uint uVar2;
  bool bVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 uVar6;
  char *pcVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  int iVar10;
  int iVar11;
  undefined1 auStack_138 [32];
  char local_118;
  char local_117;
  uint local_110 [2];
  char local_108;
  char local_107;
  uint local_100 [2];
  char *local_f8;
  longlong local_f0;
  int local_e8;
  uint local_e4;
  char *local_e0;
  undefined1 *local_d8;
  undefined8 local_d0;
  undefined **local_c8;
  undefined4 local_c0;
  undefined8 local_b8 [2];
  undefined8 local_a8;
  undefined8 local_a0;
  int local_98;
  undefined1 local_90 [16];
  undefined8 local_80;
  undefined8 local_78;
  undefined1 local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined2 local_48;
  undefined1 local_46;
  ulonglong local_38;
  
  local_d0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_138;
  local_d8 = param_5;
  local_e0 = param_6;
  local_118 = '\0';
  local_e8 = 0;
  iVar11 = 0;
  local_117 = param_2;
  local_108 = param_4;
  local_107 = param_3;
  lVar4 = FUN_180870eb0();
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xdc),"counter1CurrentCount");
  lVar4 = FUN_180870eb0(param_1);
  uVar1 = *(uint *)(lVar4 + 0x34);
  local_100[0] = uVar1;
  lVar4 = FUN_180870eb0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xdd),"counter1StartCount");
  lVar4 = FUN_180870eb0(param_1);
  local_f0 = CONCAT44(local_f0._4_4_,*(undefined4 *)(lVar4 + 0x38));
  lVar4 = FUN_180870eb0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xdf),"counter2CurrentCount");
  lVar4 = FUN_180870eb0(param_1);
  uVar2 = *(uint *)(lVar4 + 0x40);
  local_110[0] = uVar2;
  lVar4 = FUN_180870eb0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xe0),"counter2StartCount");
  lVar4 = FUN_180870eb0(param_1);
  local_e4 = *(uint *)(lVar4 + 0x44);
  *param_5 = 0;
  *local_e0 = '\0';
  lVar4 = FUN_180870eb0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xe1),"counters64bitCombined");
  lVar4 = FUN_180870eb0(param_1);
  if (*(char *)(lVar4 + 0x48) != '\0') {
    lVar4 = FUN_180870eb0(param_1);
    FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xdb),"counter1CountsUpNotDown");
    lVar4 = FUN_180870eb0(param_1);
    if (*(char *)(lVar4 + 0x30) == '\0') {
      if ((((param_4 != '\0') && (uVar2 == 0 && uVar1 == 0)) && (uVar1 != (uint)local_f0)) &&
         (uVar2 != local_e4)) {
        local_f8 = (char *)FUN_1811316e0(0x18);
        if (local_f8 == (char *)0x0) {
          lVar4 = 0;
        }
        else {
          lVar4 = FUN_1805a48c0(local_f8,
                                "Software Auth Expired: The 64-bit counter reach its minimum of 0x%08X%08X"
                               );
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(lVar4 + 8),local_100);
        FUN_18060e760(*(undefined8 *)(lVar4 + 8),local_110);
        local_110[0] = 0x2798;
        local_e0 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_e0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar6,local_110);
      }
      if (local_117 == '\0') {
      }
      iVar11 = 8 - (uint)(uVar1 != 0);
      if (uVar2 == 0) {
        if (uVar1 == 0) {
        }
        lVar4 = FUN_180870eb0(param_1);
        *(uint *)(lVar4 + 0x34) = uVar1 - 1;
        lVar4 = FUN_180870eb0(param_1);
        *(undefined1 *)(lVar4 + 0xdc) = 1;
        FUN_180870d90(param_1);
        lVar4 = FUN_180870eb0(param_1);
        *(undefined4 *)(lVar4 + 0x40) = 0xffffffff;
        lVar4 = FUN_180870eb0(param_1);
        *(undefined1 *)(lVar4 + 0xdf) = 1;
        FUN_180870d90(param_1);
        local_118 = '\x01';
        local_e8 = 8;
        *local_d8 = 1;
        bVar3 = false;
        goto LAB_180681040;
      }
      iVar10 = uVar2 - 1;
    }
    else {
      if (((param_4 != '\0') && ((uVar2 & uVar1) == 0xffffffff)) &&
         ((uVar1 != (uint)local_f0 && (uVar2 != local_e4)))) {
        local_f8 = (char *)FUN_1811316e0(0x18);
        if (local_f8 == (char *)0x0) {
          lVar4 = 0;
        }
        else {
          lVar4 = FUN_1805a48c0(local_f8,
                                "Software Auth Expired: The 64-bit counter reach its maximum of 0x%08X%08X"
                               );
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(lVar4 + 8),local_100);
        FUN_18060e760(*(undefined8 *)(lVar4 + 8),local_110);
        local_110[0] = 0x2768;
        local_e0 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_e0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar6,local_110);
      }
      if (local_117 == '\0') {
      }
      iVar11 = 6 - (uint)(uVar1 != 0);
      if (uVar2 == 0xffffffff) {
        if (uVar1 == 0xffffffff) {
        }
        lVar4 = FUN_180870eb0(param_1);
        *(uint *)(lVar4 + 0x34) = uVar1 + 1;
        lVar4 = FUN_180870eb0(param_1);
        *(undefined1 *)(lVar4 + 0xdc) = 1;
        FUN_180870d90(param_1);
        lVar4 = FUN_180870eb0(param_1);
        *(undefined4 *)(lVar4 + 0x40) = 0;
        lVar4 = FUN_180870eb0(param_1);
        *(undefined1 *)(lVar4 + 0xdf) = 1;
        FUN_180870d90(param_1);
        local_118 = '\x01';
        local_e8 = 6;
        *local_d8 = 1;
        bVar3 = false;
        goto LAB_180681040;
      }
      iVar10 = uVar2 + 1;
    }
    lVar4 = FUN_180870eb0(param_1);
    *(int *)(lVar4 + 0x40) = iVar10;
    lVar4 = FUN_180870eb0(param_1);
    *(undefined1 *)(lVar4 + 0xdf) = 1;
    FUN_180870d90(param_1);
    bVar3 = true;
    *local_d8 = 1;
    goto LAB_180681040;
  }
  lVar4 = FUN_180870eb0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xdb),"counter1CountsUpNotDown");
  lVar4 = FUN_180870eb0(param_1);
  if (*(char *)(lVar4 + 0x30) == '\0') {
    if (((param_4 != '\0') && (uVar1 == 0)) && ((uint)local_f0 != 0)) {
      local_f8 = (char *)FUN_1811316e0(0x18);
      if (local_f8 == (char *)0x0) {
        local_f0 = 0;
      }
      else {
        local_f0 = FUN_1805a48c0(local_f8,
                                 "Software Auth Expired: The 32-bit counter1 reach its minimum of 0x%08X"
                                );
      }
      lVar4 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(local_f0 + 8),local_100);
      local_100[0] = 0x27e8;
      local_f8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_f8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_100);
    }
    if ((local_117 != '\0') && (uVar1 != 0)) {
      lVar4 = FUN_180870eb0(param_1);
      *(uint *)(lVar4 + 0x34) = uVar1 - 1;
      lVar4 = FUN_180870eb0(param_1);
      *(undefined1 *)(lVar4 + 0xdc) = 1;
      FUN_180870d90(param_1);
      local_e8 = 8;
      goto LAB_180680e3c;
    }
  }
  else {
    if (((param_4 != '\0') && (uVar1 == 0xffffffff)) && ((uint)local_f0 != -1)) {
      local_f8 = (char *)FUN_1811316e0(0x18);
      if (local_f8 == (char *)0x0) {
        local_f0 = 0;
      }
      else {
        local_f0 = FUN_1805a48c0(local_f8,
                                 "Software Auth Expired: The 32-bit counter1 reach its maximum of 0x%08X"
                                );
      }
      lVar4 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(local_f0 + 8),local_100);
      local_100[0] = 0x27cd;
      local_f8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_f8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_100);
    }
    if ((local_117 != '\0') && (uVar1 != 0xffffffff)) {
      lVar4 = FUN_180870eb0(param_1);
      *(uint *)(lVar4 + 0x34) = uVar1 + 1;
      lVar4 = FUN_180870eb0(param_1);
      *(undefined1 *)(lVar4 + 0xdc) = 1;
      FUN_180870d90(param_1);
      local_e8 = 6;
LAB_180680e3c:
      *local_d8 = 1;
      local_118 = '\x01';
    }
  }
  lVar4 = FUN_180870eb0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar4 + 0xde),"counter2CountsUpNotDown");
  lVar4 = FUN_180870eb0(param_1);
  if (*(char *)(lVar4 + 0x3c) == '\0') {
    if (((local_108 != '\0') && (uVar2 == 0)) && (local_e4 != 0)) {
      local_f8 = (char *)FUN_1811316e0(0x18);
      if (local_f8 == (char *)0x0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_f8,
                              "Software Auth Expired: The 32-bit counter2 reach its minimum of 0x%08X"
                             );
      }
      lVar5 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar4 + 8),local_110);
      local_110[0] = 0x2823;
      local_f8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_f8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_110);
    }
    if ((local_107 == '\0') || (uVar2 == 0)) goto LAB_18068102d;
    lVar4 = FUN_180870eb0(param_1);
    *(uint *)(lVar4 + 0x40) = uVar2 - 1;
    lVar4 = FUN_180870eb0(param_1);
    *(undefined1 *)(lVar4 + 0xdf) = 1;
    FUN_180870d90(param_1);
    bVar3 = true;
    iVar11 = 8;
    *local_e0 = '\x01';
  }
  else {
    if (((local_108 != '\0') && (uVar2 == 0xffffffff)) && (local_e4 != 0xffffffff)) {
      local_f8 = (char *)FUN_1811316e0(0x18);
      if (local_f8 == (char *)0x0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_f8,
                              "Software Auth Expired: The 32-bit counter2 reach its maximum of 0x%08X"
                             );
      }
      lVar5 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar4 + 8),local_110);
      local_110[0] = 0x2808;
      local_f8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_f8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_110);
    }
    if ((local_107 == '\0') || (uVar2 == 0xffffffff)) {
LAB_18068102d:
      bVar3 = false;
    }
    else {
      lVar4 = FUN_180870eb0(param_1);
      *(uint *)(lVar4 + 0x40) = uVar2 + 1;
      lVar4 = FUN_180870eb0(param_1);
      *(undefined1 *)(lVar4 + 0xdf) = 1;
      FUN_180870d90(param_1);
      bVar3 = true;
      iVar11 = 6;
      *local_e0 = '\x01';
    }
  }
  if ((local_118 == '\0') && (!bVar3)) {
  }
LAB_180681040:
  local_c8 = pace::eden::thrift::authorize::DatabaseCommitItem::vftable;
  local_a8 = 0;
  local_a0 = 0xf;
  local_b8[0]._0_1_ = 0;
  FUN_1805a6cb0(local_b8,&DAT_181baf991,0);
  local_80 = 0;
  local_78 = 0xf;
  local_90[0] = 0;
  FUN_1805a6cb0(local_90,&DAT_181baf991,0);
  local_70 = 0;
  local_68 = 0;
  uStack_60 = 0;
  local_58 = 0;
  local_50 = 0;
  local_48 = 0;
  local_46 = 0;
  if (param_7 != 0) {
    if (local_118 != '\0') {
      local_c0 = 400;
      puVar8 = (undefined8 *)(**(code **)(*param_1 + 0x40))(param_1);
      if (local_b8 != puVar8) {
        puVar9 = puVar8;
        if (0xf < (ulonglong)puVar8[3]) {
          puVar9 = (undefined8 *)*puVar8;
        }
        FUN_1805a6cb0(local_b8,puVar9,puVar8[2]);
      }
      local_98 = local_e8;
      lVar4 = *(longlong *)(param_7 + 8);
      if (*(longlong *)(param_7 + 0x10) == lVar4) {
        FUN_18066cf60(param_7,lVar4,&local_c8);
      }
      else {
        FUN_180676cd0(lVar4,&local_c8);
        *(longlong *)(param_7 + 8) = *(longlong *)(param_7 + 8) + 0x88;
      }
    }
    if (bVar3) {
      local_c0 = 0x191;
      puVar8 = (undefined8 *)(**(code **)(*param_1 + 0x40))(param_1);
      if (local_b8 != puVar8) {
        puVar9 = puVar8;
        if (0xf < (ulonglong)puVar8[3]) {
          puVar9 = (undefined8 *)*puVar8;
        }
        FUN_1805a6cb0(local_b8,puVar9,puVar8[2]);
      }
      lVar4 = *(longlong *)(param_7 + 8);
      local_98 = iVar11;
      if (*(longlong *)(param_7 + 0x10) == lVar4) {
        FUN_18066cf60(param_7,lVar4,&local_c8);
      }
      else {
        FUN_180676cd0(lVar4,&local_c8);
        *(longlong *)(param_7 + 8) = *(longlong *)(param_7 + 8) + 0x88;
      }
    }
    FUN_18067ae90(&local_c8);
  }
  local_f8 = (char *)FUN_1811316e0(0x18);
  if (local_f8 == (char *)0x0) {
    lVar4 = 0;
  }
  else {
    lVar4 = FUN_1805a48c0(local_f8,
                          "A counter (UUID: %s) needs updating, but it can\'t be without a pointer to the Database Commit Items"
                         );
  }
  pcVar7 = (char *)FUN_1811316e0(0x18);
  local_f8 = pcVar7;
  if (pcVar7 == (char *)0x0) {
    pcVar7 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar7,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  uVar6 = (**(code **)(*param_1 + 0x40))(param_1);
  FUN_1805b2240(*(undefined8 *)(lVar4 + 8),uVar6);
  local_110[0] = 0x283a;
  local_f8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar6 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_f8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar6,local_110);
}



############ FUN_ 180681290 size=1140 ############

void FUN_180681290(longlong param_1,char param_2,char param_3,char param_4,char param_5)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 uVar5;
  uint uVar6;
  longlong local_res8;
  uint local_58 [2];
  char *local_50;
  char *local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  uVar6 = *(uint *)(param_1 + 0x2c);
  local_res8 = CONCAT44(local_res8._4_4_,uVar6);
  uVar1 = *(uint *)(param_1 + 0x30);
  local_58[0] = *(uint *)(param_1 + 0x3c);
  uVar2 = *(uint *)(param_1 + 0x40);
  if (*(char *)(param_1 + 0x49) == '\0') {
    lVar3 = 0;
    if (*(char *)(param_1 + 0x29) == '\0') {
      if ((uVar1 != 0) && ((param_2 != '\0' || (param_4 != '\0')))) {
        if (uVar6 == 0) {
          local_48 = (char *)FUN_1811316e0(0x18);
          if (local_48 == (char *)0x0) {
            local_50 = (char *)0x0;
          }
          else {
            local_50 = (char *)FUN_1805a48c0(local_48,
                                             "Auth Expired: The 32-bit counter1 reach its minimum of 0x%08X"
                                            );
          }
          lVar3 = FUN_1805c0260();
          FUN_18060e760(*(undefined8 *)(local_50 + 8),&local_res8);
          local_res8 = CONCAT44(local_res8._4_4_,0x28da);
          local_48 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_48);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar5,&local_res8);
        }
        if ((param_2 != '\0') && (uVar6 != 0)) {
          uVar6 = uVar6 - 1;
        }
      }
    }
    else if ((uVar1 != 0xffffffff) && ((param_2 != '\0' || (param_4 != '\0')))) {
      if (uVar6 == 0xffffffff) {
        local_48 = (char *)FUN_1811316e0(0x18);
        if (local_48 == (char *)0x0) {
          local_50 = (char *)0x0;
        }
        else {
          local_50 = (char *)FUN_1805a48c0(local_48,
                                           "Auth Expired: The 32-bit counter1 reach its maximum of 0x%08X"
                                          );
        }
        lVar3 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(local_50 + 8),&local_res8);
        local_res8 = CONCAT44(local_res8._4_4_,0x28c1);
        local_48 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_48);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,&local_res8);
      }
      if ((param_2 != '\0') && (uVar6 != 0xffffffff)) {
        uVar6 = uVar6 + 1;
      }
    }
    if (*(char *)(param_1 + 0x39) == '\0') {
      if ((uVar2 == 0) || ((param_3 == '\0' && (param_5 == '\0')))) goto LAB_18068175a;
      if (local_58[0] == 0) {
        local_res8 = FUN_1811316e0(0x18);
        if (local_res8 != 0) {
          lVar3 = FUN_1805a48c0(local_res8,
                                "Auth Expired: The 32-bit counter2 reach its minimum of 0x%08X");
        }
        lVar4 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_58);
        local_res8 = CONCAT44(local_res8._4_4_,0x2910);
        local_48 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_48);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,&local_res8);
      }
      if ((param_3 == '\0') || (local_58[0] == 0)) goto LAB_18068175a;
      goto LAB_180681758;
    }
    if ((uVar2 == 0xffffffff) || ((param_3 == '\0' && (param_5 == '\0')))) goto LAB_18068175a;
    if (local_58[0] == 0xffffffff) {
      local_res8 = FUN_1811316e0(0x18);
      if (local_res8 != 0) {
        lVar3 = FUN_1805a48c0(local_res8,
                              "Auth Expired: The 32-bit counter2 reach its maximum of 0x%08X");
      }
      lVar4 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_58);
      local_res8 = CONCAT44(local_res8._4_4_,0x28f7);
      local_48 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_48);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&local_res8);
    }
    if ((param_3 == '\0') || (local_58[0] == 0xffffffff)) goto LAB_18068175a;
  }
  else {
    if (*(char *)(param_1 + 0x29) == '\0') {
      if ((uVar2 == 0 && uVar1 == 0) || ((param_2 == '\0' && (param_4 == '\0'))))
      goto LAB_18068175a;
      if (local_58[0] == 0 && uVar6 == 0) {
        local_48 = (char *)FUN_1811316e0(0x18);
        if (local_48 == (char *)0x0) {
          lVar3 = 0;
        }
        else {
          lVar3 = FUN_1805a48c0(local_48,
                                "Auth Expired: The 64-bit counter reach its minimum of 0x%08X%08X");
        }
        lVar4 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(lVar3 + 8),&local_res8);
        FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_58);
        local_res8 = CONCAT44(local_res8._4_4_,0x2897);
        local_50 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_50);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,&local_res8);
      }
      if (param_2 == '\0') goto LAB_18068175a;
      if (local_58[0] == 0) {
        if (uVar6 != 0) {
          uVar6 = uVar6 - 1;
          local_58[0] = 0xffffffff;
        }
        goto LAB_18068175a;
      }
LAB_180681758:
      local_58[0] = local_58[0] - 1;
      goto LAB_18068175a;
    }
    if (((uVar2 & uVar1) == 0xffffffff) || ((param_2 == '\0' && (param_4 == '\0'))))
    goto LAB_18068175a;
    lVar3 = 0;
    if ((local_58[0] & uVar6) == 0xffffffff) {
      local_48 = (char *)FUN_1811316e0(0x18);
      if (local_48 != (char *)0x0) {
        lVar3 = FUN_1805a48c0(local_48,
                              "Auth Expired: The 64-bit counter reach its maximum of 0x%08X%08X");
      }
      lVar4 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar3 + 8),&local_res8);
      FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_58);
      local_res8 = CONCAT44(local_res8._4_4_,0x2873);
      local_50 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_50);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&local_res8);
    }
    if (param_2 == '\0') goto LAB_18068175a;
    if (local_58[0] == 0xffffffff) {
      if (uVar6 != 0xffffffff) {
        uVar6 = uVar6 + 1;
        local_58[0] = 0;
      }
      goto LAB_18068175a;
    }
  }
  local_58[0] = local_58[0] + 1;
LAB_18068175a:
  *(uint *)(param_1 + 0x2c) = uVar6;
  *(uint *)(param_1 + 0x3c) = local_58[0];
  return;
}



############ FUN_ 180687540 size=657 ############

undefined8 * FUN_180687540(undefined8 *param_1,char *param_2,char param_3,int param_4)

{
  undefined4 uVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  char *pcVar8;
  char *local_res10;
  undefined4 local_res20 [2];
  
  puVar7 = (undefined8 *)0x0;
  *param_1 = pace::eden::thrift::pub::CountLimitRecord::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  *(undefined2 *)(param_1 + 5) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
  *(undefined2 *)(param_1 + 7) = 0;
  *(undefined8 *)((longlong)param_1 + 0x3c) = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  local_res10 = param_2;
  if (param_2 == (char *)0x0) {
    lVar3 = FUN_1811316e0(0x18);
    puVar4 = puVar7;
    if (lVar3 != 0) {
      puVar4 = (undefined8 *)
               FUN_1805a48c0(lVar3,
                             "convertCountLimitFromIlok1ToPublic was passed a bad userdata at address (0x%16X)"
                            );
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar5 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
      puVar7 = puVar5;
    }
    FUN_1805a21d0(puVar4[1],&local_res10);
    local_res20[0] = 0x2995;
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar6 = FUN_1805a21d0(puVar7[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_res20);
  }
  if ((param_2[7] & 1U) != 0) {
    *(undefined4 *)(param_1 + 1) = 0x80000000;
    if (param_4 != -1) {
      FUN_1805b1330(param_1 + 2,4,param_1 + 2,param_4,1,0xfffffffffffffffe);
      FUN_180621500(param_4,param_1[2]);
    }
    *(undefined2 *)(param_1 + 5) = 1;
    uVar1 = FUN_18061f8c0(param_2);
    *(undefined4 *)((longlong)param_1 + 0x2c) = uVar1;
    if ((param_2[7] & 4U) == 0) {
      *(undefined4 *)(param_1 + 6) = 0xffffffff;
      *(undefined1 *)(param_1 + 9) = 1;
    }
    else {
      uVar2 = FUN_18061f8c0(param_2 + 4);
      *(uint *)(param_1 + 6) = uVar2 >> 8;
    }
    *(undefined4 *)((longlong)param_1 + 0x34) = 2;
    *(undefined2 *)(param_1 + 7) = 0;
    *(undefined8 *)((longlong)param_1 + 0x3c) = 0;
    *(undefined4 *)((longlong)param_1 + 0x44) = 0;
    *(undefined1 *)((longlong)param_1 + 0x49) = 0;
    if ((*(char *)(param_1 + 9) == '\0') &&
       ((param_3 != '\0' || (*(int *)((longlong)param_1 + 0x2c) != 0)))) {
      *(undefined1 *)((longlong)param_1 + 0x4a) = 1;
    }
    else {
      *(undefined1 *)((longlong)param_1 + 0x4a) = 0;
    }
    return param_1;
  }
  local_res10 = (char *)FUN_1811316e0(0x18);
  if (local_res10 != (char *)0x0) {
    puVar7 = (undefined8 *)
             FUN_1805a48c0(local_res10,
                           "convertCountLimitFromIlok1ToPublic was passed userdata with the wrong SpecialFeatureBits (0x%02X)"
                          );
  }
  pcVar8 = (char *)FUN_1811316e0(0x18);
  local_res10 = pcVar8;
  if (pcVar8 == (char *)0x0) {
    pcVar8 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18066ea00(puVar7[1],param_2 + 7);
  local_res20[0] = 0x299c;
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar6 = FUN_1805a21d0(*(undefined8 *)(pcVar8 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar6,local_res20);
}



############ FUN_ 180687800 size=579 ############

undefined8 *
FUN_180687800(undefined8 *param_1,char *param_2,char param_3,char param_4,char param_5,char param_6,
             char param_7,undefined4 param_8)

{
  undefined1 uVar1;
  char *pcVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  char *pcVar6;
  undefined8 uVar7;
  char *local_res10;
  undefined4 local_res18 [2];
  
  pcVar6 = (char *)0x0;
  *param_1 = pace::eden::thrift::pub::CountLimitRecord::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  *(undefined2 *)(param_1 + 5) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
  *(undefined2 *)(param_1 + 7) = 0;
  *(undefined8 *)((longlong)param_1 + 0x3c) = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  if (*param_2 == -0x7e) {
    *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 4);
    FUN_1805b1330(param_1 + 2,4,param_1 + 2);
    FUN_180621500(*(undefined4 *)(param_2 + 0x1c),param_1[2]);
    *(byte *)((longlong)param_1 + 0x29) = (byte)param_2[2] >> 2 & 1;
    *(undefined4 *)((longlong)param_1 + 0x2c) = *(undefined4 *)(param_2 + 0x10);
    *(undefined4 *)(param_1 + 6) = *(undefined4 *)(param_2 + 8);
    *(uint *)((longlong)param_1 + 0x34) = ((param_2[2] & 0x10U) != 0) + 1;
    *(byte *)((longlong)param_1 + 0x39) = (byte)param_2[2] >> 3 & 1;
    *(undefined4 *)((longlong)param_1 + 0x3c) = *(undefined4 *)(param_2 + 0x14);
    *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 0xc);
    *(uint *)((longlong)param_1 + 0x44) = ((byte)param_2[2] & 0x20 | 0x10) >> 4;
    *(byte *)((longlong)param_1 + 0x49) = (byte)param_2[2] >> 1 & 1;
    if ((param_5 == '\0') && (param_7 != '\0')) {
      uVar1 = 1;
    }
    else {
      uVar1 = 0;
    }
    if ((param_3 == '\0') && (param_7 != '\0')) {
      uVar4 = 1;
    }
    else {
      uVar4 = 0;
    }
    if ((param_5 == '\0') || (param_6 != '\0')) {
      uVar7 = 0;
    }
    else {
      uVar7 = 1;
    }
    if ((param_3 == '\0') || (param_4 != '\0')) {
      uVar5 = 0;
    }
    else {
      uVar5 = 1;
    }
    FUN_180681290(param_1,uVar5,uVar7,uVar4,uVar1);
    FUN_1806bbc00(param_1,param_3,param_5,param_8);
    return param_1;
  }
  local_res10 = (char *)FUN_1811316e0(0x18);
  pcVar2 = pcVar6;
  if (local_res10 != (char *)0x0) {
    pcVar2 = (char *)FUN_1805a48c0(local_res10,
                                   "convertCountLimitFromIlok2ToPublic was passed a storage record with the wrong bRecordtype (0x%02X)"
                                  );
  }
  pcVar3 = (char *)FUN_1811316e0(0x18);
  local_res10 = pcVar3;
  if (pcVar3 != (char *)0x0) {
    FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
    pcVar6 = pcVar3;
  }
  FUN_18066ea00(*(undefined8 *)(pcVar2 + 8),param_2);
  local_res18[0] = 0x29e5;
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,local_res18);
}



############ FUN_ 180687a60 size=924 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180687a60(undefined8 *param_1,longlong *param_2,undefined1 param_3,undefined1 param_4,
                  undefined4 param_5)

{
  uint uVar1;
  char *pcVar2;
  char *pcVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined8 ****ppppuVar6;
  char *pcVar7;
  longlong *local_res10;
  undefined1 auStack_a8 [32];
  undefined1 local_88;
  undefined4 local_84;
  undefined4 local_80 [2];
  char *local_78;
  undefined8 local_70;
  undefined8 *local_68;
  undefined8 ***local_60 [2];
  size_t local_50;
  ulonglong local_48;
  ulonglong local_40;
  
  local_70 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_a8;
  pcVar7 = (char *)0x0;
  *param_1 = pace::eden::thrift::pub::CountLimitRecord::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  *(undefined2 *)(param_1 + 5) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
  *(undefined2 *)(param_1 + 7) = 0;
  *(undefined8 *)((longlong)param_1 + 0x3c) = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  local_84 = 1;
  local_res10 = param_2;
  local_88 = param_3;
  local_68 = param_1;
  if (param_2 == (longlong *)0x0) {
    local_78 = (char *)FUN_1811316e0(0x18);
    pcVar2 = pcVar7;
    if (local_78 != (char *)0x0) {
      pcVar2 = (char *)FUN_1805a48c0(local_78,"Bad LsCountLimitPtr (0x%16X)");
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    local_78 = pcVar3;
    if (pcVar3 != (char *)0x0) {
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
      pcVar7 = pcVar3;
    }
    FUN_18066eb70(*(undefined8 *)(pcVar2 + 8),&local_res10);
    local_80[0] = 0x2a37;
    local_78 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_80);
  }
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xe6),"storageId");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(lVar5 + 0x98);
  uVar4 = (**(code **)(*param_2 + 0x40))(param_2);
  FUN_1805a4070(local_60,uVar4);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xe2),"flagsReadOnly");
  lVar5 = FUN_180870eb0(param_2);
  uVar1 = *(uint *)(lVar5 + 0x4c);
  FUN_1805b1330(param_1 + 2,local_50,param_1 + 2);
  ppppuVar6 = local_60;
  if (0xf < local_48) {
    ppppuVar6 = (undefined8 ****)local_60[0];
  }
  memcpy((void *)param_1[2],ppppuVar6,local_50);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xdb),"counter1CountsUpNotDown");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined1 *)((longlong)param_1 + 0x29) = *(undefined1 *)(lVar5 + 0x30);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xdc),"counter1CurrentCount");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)((longlong)param_1 + 0x2c) = *(undefined4 *)(lVar5 + 0x34);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xdd),"counter1StartCount");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(param_1 + 6) = *(undefined4 *)(lVar5 + 0x38);
  *(uint *)((longlong)param_1 + 0x34) = 2 - (uint)((uVar1 & 1) != 0);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xde),"counter2CountsUpNotDown");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined1 *)((longlong)param_1 + 0x39) = *(undefined1 *)(lVar5 + 0x3c);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xdf),"counter2CurrentCount");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)((longlong)param_1 + 0x3c) = *(undefined4 *)(lVar5 + 0x40);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xe0),"counter2StartCount");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(lVar5 + 0x44);
  *(uint *)((longlong)param_1 + 0x44) = (int)(char)~(byte)uVar1 & 2U | 1;
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0xe1),"counters64bitCombined");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined1 *)((longlong)param_1 + 0x49) = *(undefined1 *)(lVar5 + 0x48);
  FUN_1806bbc00(param_1,local_88,param_4,param_5);
  if (local_48 < 0x10) {
  }
  ppppuVar6 = (undefined8 ****)local_60[0];
  if ((0xfff < local_48 + 1) &&
     (ppppuVar6 = (undefined8 ****)local_60[0][-1],
     0x1f < (ulonglong)((longlong)local_60[0] + (-8 - (longlong)ppppuVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(ppppuVar6);
}



############ FUN_ 180687e30 size=523 ############

undefined8 * FUN_180687e30(undefined8 *param_1,char *param_2,char param_3,int param_4)

{
  longlong lVar1;
  longlong *plVar2;
  undefined8 uVar3;
  char *local_res10;
  uint local_res18 [2];
  longlong *local_48;
  uint *puStack_40;
  
  lVar1 = 0;
  *param_1 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  plVar2 = param_1 + 5;
  *plVar2 = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  *(undefined4 *)(param_1 + 10) = 0;
  *(undefined1 *)((longlong)param_1 + 0x54) = 0;
  local_res10 = param_2;
  if (param_2 == (char *)0x0) {
    local_48 = (longlong *)FUN_1811316e0(0x18);
    if (local_48 != (longlong *)0x0) {
      lVar1 = FUN_1805a48c0(local_48,
                            "convertDevDataFromIlok1ToPublic was passed bad userdata at address (0x%16X)"
                           );
    }
    plVar2 = (longlong *)FUN_1811316e0(0x18);
    local_48 = plVar2;
    if (plVar2 == (longlong *)0x0) {
      plVar2 = (longlong *)0x0;
    }
    else {
      FUN_1805a48c0(plVar2,"|__FILE__|%s|__LINE__|%d");
      *plVar2 = (longlong)pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res10);
    local_res18[0] = 0x2a7b;
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar3 = FUN_1805a21d0(plVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  lVar1 = FUN_1805fcae0();
  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(lVar1 + 0x74);
  if (param_4 != -1) {
    FUN_1805b1330(param_1 + 2,4,param_1 + 2);
    FUN_180621500(param_4,param_1[2]);
  }
  if (param_3 == '\0') {
    FUN_1805e1990(plVar2,param_2,param_2 + 8,(undefined1)local_res18[0]);
  }
  else {
    local_res18[0] = local_res18[0] & 0xffffff00;
    puStack_40 = local_res18;
    local_48 = plVar2;
    FUN_1805e1ee0(plVar2,8,&local_48);
    if (((param_2[7] & 2U) == 0) && ((param_2[7] & 4U) == 0)) {
      *(char *)(*plVar2 + 4) = param_2[4];
      *(char *)(*plVar2 + 5) = param_2[5];
      *(char *)(*plVar2 + 6) = param_2[6];
    }
    *(char *)(*plVar2 + 7) = param_2[7];
  }
  *(undefined4 *)(param_1 + 8) = 3;
  *(undefined4 *)((longlong)param_1 + 0x44) = 8;
  *(undefined4 *)(param_1 + 9) = 0x1000000;
  return param_1;
}



############ FUN_ 180688050 size=615 ############

undefined8 * FUN_180688050(undefined8 *param_1,char *param_2,byte *param_3,byte *param_4)

{
  ushort uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  byte bVar5;
  ushort uVar6;
  undefined8 *local_res10;
  char *local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  lVar2 = 0;
  *param_1 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  *(undefined4 *)(param_1 + 10) = 0;
  *(undefined1 *)((longlong)param_1 + 0x54) = 0;
  if (*param_2 == -0x7c) {
    *(undefined1 *)((longlong)param_1 + 0x4b) = 1;
    *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 4);
    FUN_1805b1330(param_1 + 2,4,param_1 + 2,param_4,1);
    FUN_180621500(*(undefined4 *)(param_2 + 0x1c),param_1[2]);
    FUN_1805b1330(param_1 + 5,0x10,param_1 + 5);
    FUN_180621500(*(undefined4 *)(param_2 + 8),param_1[5]);
    FUN_180621500(*(undefined4 *)(param_2 + 0xc),param_1[5] + 4);
    FUN_180621500(*(undefined4 *)(param_2 + 0x10),param_1[5] + 8);
    FUN_180621500(*(undefined4 *)(param_2 + 0x14),param_1[5] + 0xc);
    uVar1 = *(ushort *)(param_2 + 2);
    uVar6 = uVar1 & 3;
    if (((uVar6 == (uVar1 >> 2 & 3)) && (uVar6 == (uVar1 >> 4 & 3))) && (uVar6 == (uVar1 >> 6 & 3)))
    {
      if (uVar6 == 0) {
        *(undefined4 *)(param_1 + 8) = 4;
      }
      else if (uVar6 == 1) {
        *(undefined4 *)(param_1 + 8) = 1;
      }
      else if (uVar6 == 2) {
        *(undefined4 *)(param_1 + 8) = 2;
      }
      else if (uVar6 == 3) {
        *(undefined4 *)(param_1 + 8) = 3;
      }
    }
    else {
      *(undefined4 *)(param_1 + 8) = 5;
      *(undefined1 *)((longlong)param_1 + 0x4b) = 0;
    }
    *(undefined4 *)((longlong)param_1 + 0x44) = 0x10;
    *(byte *)(param_1 + 9) = param_2[3] & 1;
    bVar5 = (byte)((ushort)*(undefined2 *)(param_2 + 2) >> 0xd) & 1;
    *(byte *)((longlong)param_1 + 0x49) = bVar5;
    *(byte *)((longlong)param_1 + 0x4a) = (byte)((ushort)*(undefined2 *)(param_2 + 2) >> 0xe) & 1;
    if (*(char *)((longlong)param_1 + 0x4b) != '\0') {
      *param_3 = *param_3 | bVar5;
      *param_4 = *param_4 | *(byte *)((longlong)param_1 + 0x4a);
    }
    return param_1;
  }
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    lVar2 = FUN_1805a48c0(local_res10,
                          "convertDevDataFromIlok2ToPublic was passed a storage record with the wrong bRecordtype (0x%02X)"
                         );
  }
  puVar3 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar3;
  if (puVar3 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
    *puVar3 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18066ea00(*(undefined8 *)(lVar2 + 8),param_2);
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x2abb);
  local_50 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar4 = FUN_1805a21d0(puVar3[1],&local_50);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,&local_res10);
}



############ FUN_ 1806896f0 size=1077 ############

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

void FUN_1806896f0(undefined8 param_1,char *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined1 auStack_188 [32];
  undefined4 local_168;
  undefined8 *local_160;
  undefined8 local_150;
  undefined *local_148;
  undefined *local_140;
  undefined4 local_138 [2];
  undefined4 local_130;
  uint local_12c;
  undefined **local_128;
  undefined4 local_120;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined4 local_c4;
  uint local_c0;
  undefined8 local_bc;
  undefined8 local_b4;
  undefined8 local_ac;
  char *local_98;
  undefined8 local_90;
  char *local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  ulonglong local_50;
  
  local_70 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_188;
  if (((ulonglong)&stack0x00000000 & 0x8c0) == 0) {
    uVar1 = 1;
  }
  else {
    uVar1 = (uint)&stack0x00000000 & 0x1ff;
    uVar1 = (uVar1 + 1) * uVar1 + 0x568f & 0x80000001;
  }
  local_12c = (((int)(-uVar1 | uVar1) >> 0x1f) * -0x8930 | 0x8db6U) ^ 0x8976;
  local_130 = 0x420;
  local_128 = pace::eden::thrift::pub::SecretDataRecord::vftable;
  puVar6 = (undefined8 *)0x0;
  local_120 = 0;
  local_118 = 0;
  uStack_110 = 0;
  local_108 = 0;
  uStack_100 = 0;
  local_f8 = 0;
  uStack_f0 = 0;
  local_e8 = 0;
  uStack_e0 = 0;
  local_d8 = 0;
  local_d0 = 0;
  local_c4 = 0;
  local_bc = 0;
  local_b4 = 0;
  local_ac = 0;
  local_90 = param_1;
  local_88 = param_2;
  local_80 = param_3;
  local_78 = param_4;
  if (*param_2 != -0x78) {
    local_160 = (undefined8 *)param_1;
    local_160 = (undefined8 *)FUN_1811316e0(0x18);
    puVar2 = puVar6;
    if (local_160 != (undefined8 *)0x0) {
      puVar2 = (undefined8 *)
               FUN_1805a48c0(local_160,
                             "convertSecretDataFromIlok2ToPublic was passed a storage record with the wrong bRecordtype (0x%02X)"
                            );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_160 = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      puVar6 = puVar3;
    }
    FUN_18066ea00(puVar2[1],param_2);
    local_138[0] = 0x2b41;
    local_98 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(puVar6[1],&local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_138);
  }
  local_b4 = 1;
  local_160 = (undefined8 *)0x0;
  local_150 = 0x1de6068;
  local_140 = &DAT_181de6068;
  local_148 = &DAT_181dee058;
  local_120 = *(undefined4 *)(param_2 + 4);
  FUN_1805b1330(&local_118,4,&local_118);
  FUN_180621500(*(undefined4 *)(param_2 + 0x1c),local_118);
  lVar5 = FUN_1805fcae0();
  local_c4 = *(undefined4 *)(lVar5 + 0x30);
  local_160 = (undefined8 *)0xe0b76ca51c2ebf46;
  local_150 = CONCAT44(local_150._4_4_,0x1c2ebf46);
  local_c0 = *(ushort *)(param_2 + 2) & 0x1f;
  local_168 = 0x811c9e53;
  FUN_180688e98();
  return;
}



############ FUN_ 18068a990 size=1198 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018068ac3d) overlaps instruction at (ram,0x00018068ac3c)
    */
/* WARNING: Removing unreachable block (ram,0x00018068aa26) */
/* WARNING: Removing unreachable block (ram,0x00018068aa54) */
/* WARNING: Removing unreachable block (ram,0x00018068aabd) */

void FUN_18068a990(undefined8 param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  uint uVar6;
  ulonglong uVar7;
  void *_Buf1;
  undefined8 *puVar8;
  ulonglong uVar9;
  size_t *psVar10;
  int unaff_retaddr;
  longlong local_res10 [3];
  undefined1 auStack_1f8 [32];
  undefined8 local_1d8;
  undefined *local_1d0;
  undefined8 *local_1c0;
  undefined8 local_1b0;
  undefined *local_1a8;
  undefined4 local_1a0 [2];
  undefined4 local_198 [2];
  undefined4 local_190;
  uint local_18c;
  undefined **local_178;
  undefined4 local_170;
  undefined8 local_168;
  undefined8 uStack_160;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined8 local_148;
  undefined8 uStack_140;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined8 local_120;
  undefined4 local_114;
  undefined8 local_10c;
  undefined8 local_104;
  undefined8 local_fc;
  undefined8 local_e8;
  undefined8 local_e0;
  char *local_d8 [4];
  undefined8 local_b8;
  undefined8 local_b0;
  undefined1 local_a8 [88];
  ulonglong local_50;
  
  uVar9 = (longlong)&local_fc + 4;
  local_b0 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  local_190 = 0xd20;
  uVar6 = (uint)&stack0x00000000 & 0x17f;
  local_18c = 0x453 >> ((char)(((uVar6 + 2) * (uVar6 + 1) * uVar6) / 3) * -3 & 0x1fU) ^ 99;
  local_178 = pace::eden::thrift::pub::SecretDataRecord::vftable;
  puVar8 = (undefined8 *)0x0;
  local_170 = 0;
  local_168 = 0;
  uStack_160 = 0;
  local_158 = 0;
  uStack_150 = 0;
  local_148 = 0;
  uStack_140 = 0;
  local_138 = 0;
  uStack_130 = 0;
  local_128 = 0;
  local_120 = 0;
  local_114 = 0;
  local_10c = 0;
  local_104 = 0;
  local_fc = 0;
  local_res10[0] = param_2;
  local_1c0 = (undefined8 *)param_1;
  local_e8 = param_3;
  local_e0 = param_4;
  local_b8 = param_1;
  if (param_2 == 0) {
    local_1c0 = (undefined8 *)FUN_1811316e0(0x18);
    puVar2 = puVar8;
    if (local_1c0 != (undefined8 *)0x0) {
      puVar2 = (undefined8 *)FUN_1805a48c0(local_1c0,"Bad LsAuthKeyPtr (0x%16X)");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_1c0 = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      puVar8 = puVar3;
    }
    FUN_18066eb70(puVar2[1],local_res10);
    local_1a0[0] = 0x2bc4;
    local_d8[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(puVar8[1],local_d8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_1a0);
  }
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x15a),"format");
  lVar5 = FUN_180870eb0(param_2);
  lVar5 = lVar5 + 0x78;
  FUN_1805a4070(local_a8);
  do {
    uVar7 = 0;
    FUN_180689c54();
    if ((uVar7 & 0xc3) != 0) {
      uVar9 = (ulonglong)((uint)uVar9 ^ (uint)lVar5);
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_1b0 = 0;
  local_1d8 = 0x1dde078;
  local_1a8 = &UNK_181dde078;
  local_1d0 = &DAT_181de6068;
  _Buf1 = (void *)(uVar9 + 0x50);
  if (0xf < *(ulonglong *)(uVar9 + 0x68)) {
    _Buf1 = *(void **)(uVar9 + 0x50);
  }
  *(undefined8 *)(uVar9 + 0x28) = 6;
  uVar7 = *(ulonglong *)(uVar9 + 0x60);
  *(ulonglong *)(uVar9 + 0x30) = uVar7;
  psVar10 = (size_t *)(uVar9 + 0x28);
  if (uVar7 < 7) {
    psVar10 = (size_t *)(uVar9 + 0x30);
  }
  iVar1 = memcmp(_Buf1,"binary",*psVar10);
  if ((iVar1 == 0) && (uVar7 == 6)) {
    local_1d8 = 0xddb27a1480cfe675;
    *(undefined1 *)(uVar9 - 0xc) = 1;
    FUN_18068ae70();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  local_1c0 = (undefined8 *)FUN_1811316e0(0x18);
  puVar2 = puVar8;
  if (local_1c0 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1805a48c0(local_1c0,"Key format \"%d\" is not supported");
  }
  puVar3 = (undefined8 *)FUN_1811316e0(0x18);
  local_1c0 = puVar3;
  if (puVar3 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
    *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    puVar8 = puVar3;
  }
  FUN_1805b2240(puVar2[1],uVar9 + 0x50);
  local_198[0] = 0x2bcc;
  *(char **)(uVar9 + 0x38) =
       "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar4 = FUN_1805a21d0(puVar8[1],uVar9 + 0x38);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,local_198);
}



############ FUN_ 18068c000 size=1372 ############

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

longlong FUN_18068c000(longlong param_1,undefined8 *param_2,undefined8 param_3,int param_4)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  undefined8 uVar7;
  int *piVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  longlong lVar11;
  undefined8 *local_res10;
  undefined8 local_res18;
  int local_res20 [2];
  undefined4 local_78 [2];
  undefined4 local_70;
  undefined8 *local_68;
  undefined8 local_60;
  char *local_58;
  undefined8 *local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  local_70 = 0;
  puVar10 = (undefined8 *)0x7ffffffffffffffe;
  local_58 = (char *)0x7ffffffffffffffe;
  local_78[0] = 0xfffffffe;
  local_res10 = param_2;
  local_res18 = param_3;
  local_res20[0] = param_4;
  FUN_1805b41e0(&local_60,local_78,&local_58);
  local_58 = (char *)0x7ffffffffffffffe;
  local_78[0] = 0xfffffffe;
  FUN_1805b41e0(&local_68,local_78,&local_58);
  FUN_1805b6280(param_1);
  iVar5 = local_res20[0];
  bVar3 = true;
  local_70 = 1;
  if (param_2 == (undefined8 *)0x0) {
    local_50 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_50 == (undefined8 *)0x0) {
      lVar6 = 0;
    }
    else {
      lVar6 = FUN_1805a48c0(local_50,
                            "convertTimeLimitFromIlok1ToPublic was passed bad userdata at address (0x%16X)"
                           );
    }
    puVar10 = (undefined8 *)FUN_1811316e0(0x18);
    local_50 = puVar10;
    if (puVar10 == (undefined8 *)0x0) {
      puVar10 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
      *puVar10 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_1805a21d0(*(undefined8 *)(lVar6 + 8),&local_res10);
    local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x2c17);
    local_58 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar7 = FUN_1805a21d0(puVar10[1],&local_58);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,&local_res10);
  }
  if ((*(byte *)((longlong)param_2 + 7) & 2) == 0) {
    local_res10 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res10 == (undefined8 *)0x0) {
      lVar6 = 0;
    }
    else {
      lVar6 = FUN_1805a48c0(local_res10,
                            "convertTimeLimitFromIlok1ToPublic was passed userdata with the wrong SpecialFeatureBits (0x%02X)"
                           );
    }
    puVar10 = (undefined8 *)FUN_1811316e0(0x18);
    local_res10 = puVar10;
    if (puVar10 == (undefined8 *)0x0) {
      puVar10 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
      *puVar10 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18066ea00(*(undefined8 *)(lVar6 + 8),(longlong)param_2 + 7);
    local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x2c1d);
    local_58 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar7 = FUN_1805a21d0(puVar10[1],&local_58);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,&local_res10);
  }
  if (local_res20[0] != -1) {
    FUN_1805b1330(param_1 + 0x10,4,param_1 + 0x10);
    FUN_180621500(iVar5,*(undefined8 *)(param_1 + 0x10));
  }
  *(undefined4 *)(param_1 + 8) = 0x80000000;
  uVar4 = FUN_18061f8c0((longlong)param_2 + 4);
  lVar6 = (ulonglong)((uVar4 & 0xffffff00) / 0x3c) * 0x3c +
          (longlong)(int)((uVar4 & 0xffffff00) % 0x3c);
  lVar11 = lVar6 * 1000000;
  local_58 = (char *)0x0;
  piVar8 = (int *)FUN_1805b6990(&local_res10,0x7b2,1,1);
  local_res20[0] = *piVar8;
  FUN_1805b41e0(&local_50,local_res20,&local_58);
  bVar2 = false;
  if ((0xfffffffffffffffd < (longlong)local_50 + 0x7fffffffffffffffU) ||
     (bVar1 = bVar2, local_50 == (undefined8 *)0x7ffffffffffffffe)) {
    bVar1 = true;
  }
  if (((bVar1) || (0xfffffffffffffffd < lVar11 + 0x7fffffffffffffffU)) ||
     (lVar11 == 0x7ffffffffffffffe)) {
    if ((0xfffffffffffffffd < (longlong)local_50 + 0x7fffffffffffffffU) ||
       (bVar1 = bVar2, local_50 == (undefined8 *)0x7ffffffffffffffe)) {
      bVar1 = true;
    }
    if (!bVar1) {
      if ((0xfffffffffffffffd < lVar11 + 0x7fffffffffffffffU) || (lVar11 == 0x7ffffffffffffffe)) {
        bVar2 = true;
      }
      if (!bVar2) goto LAB_18068c3ed;
    }
    local_68 = puVar10;
    if ((local_50 == (undefined8 *)0x7ffffffffffffffe) || (lVar11 == 0x7ffffffffffffffe))
    goto LAB_18068c3f1;
    if (local_50 == (undefined8 *)0x7fffffffffffffff) {
      if (lVar11 == -0x8000000000000000) goto LAB_18068c3f1;
    }
    else if (local_50 == (undefined8 *)0x8000000000000000) {
      if (lVar11 == 0x7fffffffffffffff) goto LAB_18068c3f1;
    }
    else if (local_50 != (undefined8 *)0x7fffffffffffffff) {
      bVar3 = false;
    }
    local_68 = local_50;
    if (bVar3) goto LAB_18068c3f1;
    if (lVar11 == 0x7fffffffffffffff) {
      local_68 = (undefined8 *)0x7fffffffffffffff;
      goto LAB_18068c3f1;
    }
    local_68 = (undefined8 *)0x8000000000000000;
    if (lVar11 == -0x8000000000000000) goto LAB_18068c3f1;
  }
LAB_18068c3ed:
  local_68 = local_50 + lVar6 * 0x1e848;
LAB_18068c3f1:
  FUN_180663c70(&local_68,param_1 + 0x48);
  uVar4 = FUN_18061f8c0(param_2);
  puVar10 = (undefined8 *)((ulonglong)uVar4 + 300);
  iVar5 = (int)((ulonglong)puVar10 / 0x3c);
  uVar4 = (int)puVar10 + iVar5 * -0x3c;
  if ((int)uVar4 < 0) {
    local_res10 = (undefined8 *)
                  (((longlong)iVar5 * 0x3c +
                   (longlong)(int)((uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f))) * -1000000)
    ;
  }
  else {
    local_res10 = (undefined8 *)(((longlong)iVar5 * 0x3c + (longlong)(int)uVar4) * 1000000);
  }
  puVar9 = (undefined8 *)FUN_18065bc00(&local_68,&local_50,&local_res10);
  local_60 = *puVar9;
  FUN_180663c70(&local_60,param_1 + 0x28);
  FUN_1805c5170(local_78,&local_68,local_res18);
  local_res10 = (undefined8 *)0x0;
  iVar5 = FUN_1805bd370(local_78,&local_res10);
  if (iVar5 == -1) {
    *(undefined8 *)(param_1 + 0x68) = 0;
    *(undefined1 *)(param_1 + 0x9b) = 0;
  }
  else {
    FUN_180661ba0(local_78,&local_res10);
    if (puVar10 < local_res10) {
      *(undefined8 **)(param_1 + 0x68) = puVar10;
      *(undefined1 *)(param_1 + 0x9b) = 0;
    }
    else {
      if ((undefined8 *)0x7fffffffffffffff < local_res10) {
        local_res10 = (undefined8 *)0x7fffffffffffffff;
      }
      *(undefined8 **)(param_1 + 0x68) = local_res10;
      *(bool *)(param_1 + 0x9b) = local_res10 != (undefined8 *)0x0;
    }
  }
  *(undefined1 *)(param_1 + 0x9a) = 0;
  return param_1;
}



############ FUN_ 18068c5a0 size=1124 ############

longlong FUN_18068c5a0(longlong param_1,char *param_2,undefined8 param_3,char param_4)

{
  int iVar1;
  char *pcVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  char *pcVar6;
  longlong *plVar7;
  char *local_res10 [2];
  char local_res20;
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_60;
  char *local_58;
  char *local_50;
  undefined8 local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  pcVar6 = (char *)0x0;
  local_50 = (char *)0x7ffffffffffffffe;
  local_res10[0]._0_4_ = 0xfffffffe;
  local_res20 = param_4;
  FUN_1805b41e0(&local_70,local_res10,&local_50,param_4,0);
  local_50 = (char *)0x7ffffffffffffffe;
  local_res10[0] = (char *)CONCAT44(local_res10[0]._4_4_,0xfffffffe);
  FUN_1805b41e0(&local_68,local_res10,&local_50);
  FUN_1805b6280(param_1);
  local_58 = (char *)0x0;
  if (*param_2 != -0x7f) {
    local_res10[0] = (char *)FUN_1811316e0(0x18);
    pcVar2 = pcVar6;
    if (local_res10[0] != (char *)0x0) {
      pcVar2 = (char *)FUN_1805a48c0(local_res10[0],
                                     "convertTimeLimitFromIlok2ToPublic was passed a storage record with the wrong bRecordtype (0x%02X)"
                                    );
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    local_res10[0] = pcVar3;
    if (pcVar3 != (char *)0x0) {
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
      pcVar6 = pcVar3;
    }
    FUN_18066ea00(*(undefined8 *)(pcVar2 + 8),param_2);
    local_res10[0] = (char *)CONCAT44(local_res10[0]._4_4_,0x1a18);
    local_50 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_50);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res10);
  }
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 4);
  FUN_1805b1330(param_1 + 0x10,4,param_1 + 0x10);
  FUN_180621500(*(undefined4 *)(param_2 + 0x1c),*(undefined8 *)(param_1 + 0x10));
  if ((param_2[2] & 2U) == 0) {
    *(undefined1 *)(param_1 + 0x9a) = 0;
    puVar5 = (undefined8 *)FUN_18076a230(local_res10,param_2 + 8);
    local_70 = *puVar5;
    FUN_180663c70(&local_70,param_1 + 0x28);
    FUN_1805c5170(local_res10,param_3,&local_70);
    if (*(int *)(param_2 + 0x10) == 0) {
      *(undefined8 *)(param_1 + 0x68) = 0x7fffffffffffffff;
      local_50 = (char *)0x0;
      iVar1 = FUN_1805bd370(local_res10,&local_50);
      *(bool *)(param_1 + 0x9b) = iVar1 != -1;
    }
    else {
      puVar5 = (undefined8 *)FUN_18076a230(&local_48);
      local_68 = *puVar5;
      FUN_180663c70(&local_68,param_1 + 0x48);
      FUN_1805c5170(&local_50,&local_68,param_3);
      local_48 = 0;
      iVar1 = FUN_1805bd370(&local_50,&local_48);
      if (iVar1 == -1) {
        *(undefined1 *)(param_1 + 0x9b) = 0;
        *(undefined8 *)(param_1 + 0x68) = 0;
      }
      else {
        local_48 = 0;
        iVar1 = FUN_1805bd370(local_res10,&local_48);
        if (iVar1 == -1) {
          FUN_1805c5170(local_res10,&local_68,&local_70);
          local_58 = local_res10[0];
          FUN_180661ba0(&local_58,&local_60);
          *(undefined1 *)(param_1 + 0x9b) = 0;
        }
        else {
          FUN_180661ba0(&local_50,&local_60);
          *(bool *)(param_1 + 0x9b) = local_60 != 0;
        }
        if (0x7fffffffffffffff < local_60) {
          local_60 = 0x7fffffffffffffff;
        }
        *(ulonglong *)(param_1 + 0x68) = local_60;
      }
    }
  }
  else {
    *(undefined2 *)(param_1 + 0x9a) = 1;
    local_res10[0] = (char *)FUN_180767eb0(param_3);
    puVar5 = (undefined8 *)FUN_18076a230(&local_50,local_res10);
    local_70 = *puVar5;
    plVar7 = (longlong *)(param_1 + 0x28);
    FUN_180663c70(&local_70,plVar7);
    iVar1 = FUN_18061e680(local_res10,param_2 + 8,&local_48);
    if (iVar1 == 0) {
      puVar5 = (undefined8 *)FUN_18076a230(&local_50,&local_48);
      local_68 = *puVar5;
      FUN_180663c70(&local_68,param_1 + 0x48);
      FUN_1805c5170(&local_50,&local_68,&local_70);
      local_58 = local_50;
      FUN_180661ba0(&local_58,&local_60);
      if (0x7fffffffffffffff < local_60) {
        local_60 = 0x7fffffffffffffff;
      }
      *(ulonglong *)(param_1 + 0x68) = local_60;
    }
    else {
      *(undefined8 *)(param_1 + 0x68) = 0;
      if ((longlong *)(param_1 + 0x48) != plVar7) {
        if (0xf < *(ulonglong *)(param_1 + 0x40)) {
          plVar7 = (longlong *)*plVar7;
        }
        FUN_1805a6cb0(param_1 + 0x48,plVar7,*(undefined8 *)(param_1 + 0x38));
      }
    }
  }
  if ((local_res20 != '\0') && (*(char *)(param_1 + 0x9b) == '\0')) {
    local_res10[0] = (char *)FUN_1811316e0(0x18);
    if (local_res10[0] != (char *)0x0) {
      pcVar6 = (char *)FUN_1805a48c0(local_res10[0],
                                     "TimeLimitRecord is not valid now (storageId 0x%08X)");
    }
    FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(pcVar6 + 8),param_1 + 8);
  }
  return param_1;
}



############ FUN_ 180767eb0 size=3037 ############

/* WARNING: Instruction at (ram,0x0001807687a0) overlaps instruction at (ram,0x00018076879f)
    */
/* WARNING: Removing unreachable block (ram,0x00018076873c) */
/* WARNING: Removing unreachable block (ram,0x000180767f63) */
/* WARNING: Removing unreachable block (ram,0x00018076879f) */

void FUN_180767eb0(undefined8 param_1)

{
  uint *puVar1;
  undefined1 *puVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  undefined1 uVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined8 *puVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  undefined1 *puVar15;
  longlong lVar16;
  undefined8 uVar17;
  longlong lVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  undefined1 *puVar21;
  bool bVar22;
  int unaff_retaddr;
  undefined8 *local_res10;
  undefined8 *local_res18;
  uint *local_res20;
  longlong alStack_1c8 [12];
  undefined1 auStack_168 [32];
  undefined8 *local_148;
  uint local_140 [2];
  undefined *local_138;
  undefined8 *local_130;
  uint local_128 [4];
  uint local_118 [4];
  undefined4 local_108 [2];
  undefined4 local_100 [2];
  undefined4 local_f8 [4];
  undefined4 local_e8 [6];
  uint local_d0;
  undefined4 local_cc;
  undefined8 *local_c8;
  undefined8 *local_c0;
  undefined8 *local_b8;
  undefined1 local_b0 [2];
  char local_ae;
  undefined1 local_a8 [2];
  undefined2 local_a6;
  undefined1 local_a0 [4];
  char local_9c;
  undefined1 local_98 [4];
  undefined2 local_94;
  ushort local_90 [4];
  ushort local_88 [4];
  ushort local_80 [4];
  ushort local_78 [4];
  char *local_70;
  longlong local_68 [2];
  char *local_58 [3];
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  uVar19 = 0x327b;
  uVar13 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x2300) == 0) {
    uVar12 = uVar13 & 0x2bf;
    uVar12 = ((uVar12 + 2) * (uVar12 + 1) * uVar12) % 3 - 1;
    uVar19 = (ulonglong)((int)(-uVar12 | uVar12) >> 0x1f & 0x327b);
  }
  local_d0 = 0x3bfb >> ((char)((byte)(-(((uVar13 & 0x61ff) * (uVar13 & 0x61ff) + 1) % 7) >> 0x18) ^
                              (byte)(-(((uVar13 & 0x18ff) + 1) * (uVar13 & 0x18ff) + 0x5e79 &
                                      0x80000001) >> 0x18)) >> 7 & 0x1fU) ^ (uint)uVar19;
  uVar10 = 0;
  local_cc = 0x220;
  FUN_1806227d0(param_1,local_140);
  FUN_180622ad0(param_1,local_68);
  local_148 = (undefined8 *)0x100;
  local_res20 = (uint *)&DAT_18156cd54;
  local_138 = &UNK_18156ce54;
  FUN_180622940(local_90,local_140[0]);
  bVar3 = FUN_18061ec20(local_90[0] / 100,
                        CONCAT71((uint7)((ulonglong)((longlong)(int)(uint)local_90[0] * 0x51eb851f)
                                        >> 0x28),100),0);
  puVar1 = local_res20;
  uVar13 = *local_res20 >> 0x1c ^ (*local_res20 ^ 0xb50) << 4 ^ local_res20[1];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ local_res20[2];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ local_res20[3];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ local_res20[4];
  uVar13 = local_res20[5] ^ uVar13 >> 0x1c ^ uVar13 << 4;
  puVar8 = (undefined8 *)0x0;
  if (bVar3 == 0xff) {
    local_res20 = (uint *)FUN_1811316e0(0x18);
    if (local_res20 != (uint *)0x0) {
      puVar8 = (undefined8 *)
               FUN_1805a48c0(local_res20,
                             "Error converting the upper two digits of the Year from ptime (%d) to ILokTime."
                            );
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_res20 = (uint *)puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_180622940(local_88,local_140[0]);
    local_128[0] = local_88[0] / 100;
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(puVar8[1],local_128);
  }
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ local_res20[6];
  FUN_180622940(local_80,local_140[0]);
  uVar17 = 0;
  bVar4 = FUN_18061ec20((uint)local_80[0] % 100,CONCAT71((uint7)(uint3)(local_80[0] / 100 >> 8),100)
                        ,0);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[7];
  uVar13 = puVar1[8] ^ uVar13 >> 0x1c ^ uVar13 << 4;
  if (bVar4 == 0xff) {
    local_res20 = (uint *)FUN_1811316e0(0x18);
    if (local_res20 == (uint *)0x0) {
      local_res20 = (uint *)0x0;
    }
    else {
      local_res20 = (uint *)FUN_1805a48c0(local_res20,
                                          "Error converting the lower two digits of the Year from ptime (%d) to ILokTime."
                                         );
    }
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_b8 = puVar8;
    if (puVar8 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_180622940(local_78,local_140[0]);
    local_118[0] = (uint)local_78[0] % 100;
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)((longlong)local_res20 + 8),local_118);
  }
  uVar13 = puVar1[9] ^ uVar13 >> 0x1c ^ uVar13 << 4;
  FUN_180622940(local_b0,local_140[0]);
  lVar18 = CONCAT71((int7)((ulonglong)uVar17 >> 8),1);
  bVar5 = FUN_18061ec20(local_ae + -1,0xc,lVar18);
  if (bVar5 == 0xff) {
    local_res10 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res10 == (undefined8 *)0x0) {
      local_res20 = (uint *)0x0;
    }
    else {
      local_res20 = (uint *)FUN_1805a48c0(local_res10,
                                          "Error converting the Month from ptime (%d) to ILokTime.")
      ;
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_res10 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar8 = puVar9;
    }
    FUN_180622940(local_a8,local_140[0]);
    local_res10 = (undefined8 *)CONCAT62(local_res10._2_6_,local_a6);
    FUN_18074f450(*(undefined8 *)((longlong)local_res20 + 8),&local_res10);
    local_108[0] = 0xeb7;
    local_58[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar10 = FUN_1805a21d0(puVar8[1],local_58);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_108);
  }
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[10];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0xb];
  do {
    lVar18 = ~-lVar18 + 1;
    puVar8 = (undefined8 *)((~(ulonglong)puVar8 + 1 ^ 0xffffffffffffffff) + 1);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0xc];
  FUN_180622940(local_a0,local_140[0],lVar18,uVar10);
  bVar6 = FUN_18061ec20(local_9c + -1,0x1f,1);
  uVar12 = (uint)bVar6;
  local_res20 = (uint *)CONCAT44(local_res20._4_4_,uVar12);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0xd];
  uVar13 = puVar1[0xe] ^ uVar13 >> 0x1c ^ uVar13 << 4;
  if (uVar12 == 0xff) {
    local_res18 = (undefined8 *)FUN_1811316e0(0x18);
    puVar9 = puVar8;
    if (local_res18 != (undefined8 *)0x0) {
      puVar9 = (undefined8 *)
               FUN_1805a48c0(local_res18,"Error converting the Day from ptime (%d) to ILokTime.");
    }
    puVar11 = (undefined8 *)FUN_1811316e0(0x18);
    local_res18 = puVar11;
    if (puVar11 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar11,"|__FILE__|%s|__LINE__|%d");
      *puVar11 = pace::PaceLocationInfoFormatter::vftable;
      puVar8 = puVar11;
    }
    FUN_180622940(local_98,local_140[0]);
    local_res18 = (undefined8 *)CONCAT62(local_res18._2_6_,local_94);
    FUN_18063bb40(puVar9[1],&local_res18);
    local_100[0] = 0xec5;
    local_70 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar10 = FUN_1805a21d0(puVar8[1],&local_70);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_100);
  }
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0xf];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x10];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x11];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x12];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x13];
  uVar12 = (uint)bVar3 << 0x18 | (uint)bVar4 << 0x10 | (uint)bVar5 << 8 | uVar12;
  local_138 = (undefined *)CONCAT44(local_138._4_4_,uVar12);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x14];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x15];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x16];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x17];
  do {
    FUN_180768b09();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x18];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x19];
  do {
    func_0x00018076a689();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x1a];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x1b];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x1c];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x1d];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x1e];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x1f];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x20];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x21];
  lVar18 = local_68[0] + SUB168(SEXT816(-0x674a40d3fc1ad63b) * SEXT816(local_68[0]),8);
  uVar20 = (lVar18 >> 0x1f) - (lVar18 >> 0x3f);
  bVar3 = FUN_18061ec20(uVar20 & 0xff,
                        CONCAT71(SUB167(SEXT816(-0x674a40d3fc1ad63b) * SEXT816(local_68[0]),9),0x18)
                        ,0);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x22];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x23];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar1[0x24];
  local_res20 = (uint *)CONCAT44(local_res20._4_4_,puVar1[0x25] ^ uVar13 >> 0x1c ^ uVar13 << 4);
  if (bVar3 == 0xff) {
    local_c8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_c8 != (undefined8 *)0x0) {
      puVar8 = (undefined8 *)
               FUN_1805a48c0(local_c8,"Error converting the Hours from ptime (%d) to ILokTime.");
    }
    local_148 = puVar8;
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_c8 = puVar8;
    if (puVar8 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_f8[0] = (undefined4)uVar20;
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(local_148[1],local_f8);
  }
  local_res20 = (uint *)CONCAT44(local_res20._4_4_,(int)(undefined1 *)((ulonglong)bVar3 << 0x18));
  local_68[0] = local_68[0] + SUB168(SEXT816(-0x70d59cc6bc5928d7) * SEXT816(local_68[0]),8);
  lVar16 = (local_68[0] >> 0x19) - (local_68[0] >> 0x3f);
  lVar18 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar16),8) + lVar16;
  lVar18 = (lVar18 >> 5) - (lVar18 >> 0x3f);
  uVar20 = lVar16 + lVar18 * -0x3c;
  bVar4 = FUN_18061ec20(uVar20 & 0xff,CONCAT71((int7)((ulonglong)lVar18 >> 8),0x3c),0);
  local_148 = (undefined8 *)CONCAT44(local_148._4_4_,(uint)bVar4);
  if (bVar4 == 0xff) {
    local_c0 = (undefined8 *)FUN_1811316e0(0x18);
    local_130 = puVar8;
    if (local_c0 != (undefined8 *)0x0) {
      local_130 = (undefined8 *)
                  FUN_1805a48c0(local_c0,"Error converting the Minutes from ptime (%d) to ILokTime."
                               );
    }
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_c0 = puVar8;
    if (puVar8 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_e8[0] = (undefined4)uVar20;
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(local_130[1],local_e8);
  }
  lVar18 = (ulonglong)bVar4 << 0x10;
  puVar2 = auStack_168;
  puVar21 = (undefined1 *)((ulonglong)bVar3 << 0x18);
  do {
    puVar15 = puVar2;
    local_res20 = (uint *)CONCAT44(local_res20._4_4_,(uint)puVar21 | (uint)lVar18);
    *(BADSPACEBASE **)(puVar15 + -8) = register0x00000020;
    *(ulonglong *)(puVar15 + -0x10) = (ulonglong)uVar12;
    lVar16 = lVar18 + uVar19;
    lVar18 = ~(uVar19 - lVar16) + 1;
    uVar19 = lVar16 - lVar18;
    bVar22 = (POPCOUNT(uVar19 & 0xff) & 1U) == 0;
    *(undefined8 *)(puVar15 + -0x18) = 0x180768bc0;
    uVar7 = FUN_180768bc9();
    puVar2 = puVar15 + -0x10;
    puVar21 = (undefined1 *)register0x00000020;
  } while (!bVar22);
  *(undefined1 *)puVar1 = uVar7;
  lVar18 = *(longlong *)(puVar15 + -0x10);
  *(longlong *)(puVar15 + -0x10) = lVar18 + 0x205;
  *(longlong *)(puVar15 + -0x18) = lVar18 + 0x1f211;
  *(longlong *)(puVar15 + -0x20) = lVar18 + -0x755bf;
  *(longlong *)(puVar15 + -0x28) = lVar18 + 0x7880f;
  *(longlong *)(puVar15 + -0x30) = lVar18 + 0x7246b;
  *(longlong *)(puVar15 + -0x38) = lVar18 + 0x187e5;
  *(longlong *)(puVar15 + -0x40) = lVar18 + 0x63de5;
  *(longlong *)(puVar15 + -0x48) = lVar18 + -0x228ea;
  *(longlong *)(puVar15 + -0x50) = lVar18 + 0x7880f;
  *(longlong *)(puVar15 + -0x58) = lVar18 + 0x63d7c;
  *(longlong *)(puVar15 + -0x60) = lVar18 + -0x1fa26;
  return;
}



############ FUN_ 18074e880 size=1016 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18074e880(longlong *param_1,ushort *param_2)

{
  undefined1 uVar1;
  int iVar2;
  bool bVar3;
  facet *pfVar4;
  longlong lVar5;
  __uint64 _Var6;
  undefined8 *puVar7;
  _Locimp *p_Var8;
  facet *pfVar9;
  longlong lVar10;
  ios_base *this;
  undefined1 auStack_148 [32];
  undefined1 local_128;
  undefined8 *local_120;
  undefined8 local_118;
  _Lockit local_108 [16];
  _Locimp *local_f8;
  uint local_f0;
  uint local_e8 [2];
  undefined8 uStack_e0;
  ushort *local_d8;
  longlong *local_d0;
  undefined1 local_b8 [8];
  longlong *local_b0;
  undefined8 local_a8;
  ios_base *local_a0;
  uint local_98;
  undefined1 local_90 [32];
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_60;
  undefined8 local_58;
  undefined4 local_50;
  ulonglong local_48;
  
  local_a8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_148;
  this = (ios_base *)((longlong)*(int *)(*param_1 + 4) + (longlong)param_1);
  local_f0 = *(uint *)(this + 0x18);
  local_e8[0] = local_e8[0] & 0xffffff00;
  uStack_e0 = *(undefined8 *)(this + 0x48);
  local_d8 = param_2;
  local_a0 = this;
  local_98 = local_f0;
  lVar5 = std::ios_base::getloc(this);
  std::_Lockit::_Lockit(local_108,0);
  _Var6 = std::locale::id::operator_unsigned___int64((id *)&DAT_182666b78);
  lVar5 = *(longlong *)(lVar5 + 8);
  pfVar9 = (facet *)0x0;
  if ((_Var6 < *(ulonglong *)(lVar5 + 0x18)) &&
     (*(longlong *)(*(longlong *)(lVar5 + 0x10) + _Var6 * 8) != 0)) {
LAB_18074e937:
    bVar3 = true;
  }
  else {
    lVar10 = 0;
    if (*(char *)(lVar5 + 0x24) == '\0') {
LAB_18074eab9:
      if (lVar10 != 0) goto LAB_18074e937;
    }
    else {
      p_Var8 = std::locale::_Getgloballocale();
      if (_Var6 < *(ulonglong *)(p_Var8 + 0x18)) {
        lVar10 = *(longlong *)(*(longlong *)(p_Var8 + 0x10) + _Var6 * 8);
        goto LAB_18074eab9;
      }
    }
    bVar3 = false;
  }
  std::_Lockit::~_Lockit(local_108);
  if ((local_f8 != (_Locimp *)0x0) &&
     (puVar7 = (undefined8 *)(**(code **)(*(longlong *)local_f8 + 0x10))(),
     puVar7 != (undefined8 *)0x0)) {
    (**(code **)*puVar7)(puVar7,1);
  }
  if (!bVar3) {
    local_d8 = (ushort *)FUN_1811316e0(0x188);
    if (local_d8 != (ushort *)0x0) {
      pfVar9 = (facet *)FUN_18074fb70(local_d8,0);
    }
    lVar5 = std::ios_base::getloc
                      ((ios_base *)((longlong)*(int *)(*param_1 + 4) + (longlong)param_1));
    local_f8 = std::locale::_Locimp::_New_Locimp(*(_Locimp **)(lVar5 + 8));
    if (pfVar9 != (facet *)0x0) {
      _Var6 = std::locale::id::operator_unsigned___int64((id *)&DAT_182666b78);
      std::locale::_Locimp::_Locimp_Addfac(local_f8,pfVar9,_Var6);
      *(undefined4 *)(local_f8 + 0x20) = 0;
      std::_Yarn<char>::operator=((_Yarn<char> *)(local_f8 + 0x28),"*");
    }
    if ((local_b0 != (longlong *)0x0) &&
       (puVar7 = (undefined8 *)(**(code **)(*local_b0 + 0x10))(), puVar7 != (undefined8 *)0x0)) {
      (**(code **)*puVar7)(puVar7,1);
    }
    std::basic_ios<char,std::char_traits<char>_>::imbue
              ((basic_ios<char,std::char_traits<char>_> *)
               ((longlong)*(int *)(*param_1 + 4) + (longlong)param_1),(locale *)&local_d8);
    if ((local_d0 != (longlong *)0x0) &&
       (puVar7 = (undefined8 *)(**(code **)(*local_d0 + 0x10))(), puVar7 != (undefined8 *)0x0)) {
      (**(code **)*puVar7)(puVar7,1);
    }
    lVar5 = (longlong)*(int *)(*param_1 + 4) + (longlong)param_1;
    uVar1 = *(undefined1 *)(lVar5 + 0x58);
    local_70 = 0;
    local_68 = 0;
    local_58 = 0;
    local_50 = 0;
    local_60 = (ulonglong)(*param_2 - 1);
    local_118 = FUN_1805a4070(local_90,pfVar9 + 0x30);
    local_120 = &local_70;
    local_128 = uVar1;
    (**(code **)(*(longlong *)pfVar9 + 0x30))(pfVar9,&local_d8,local_e8,lVar5);
    if ((local_f8 != (_Locimp *)0x0) &&
       (puVar7 = (undefined8 *)(**(code **)(*(longlong *)local_f8 + 0x10))(),
       puVar7 != (undefined8 *)0x0)) {
      (**(code **)*puVar7)(puVar7,1);
    }
    goto LAB_18074ec47;
  }
  lVar5 = std::ios_base::getloc((ios_base *)((longlong)*(int *)(*param_1 + 4) + (longlong)param_1));
  uVar1 = *(undefined1 *)((longlong)*(int *)(*param_1 + 4) + 0x58 + (longlong)param_1);
  std::_Lockit::_Lockit(local_108,0);
  pfVar4 = DAT_182666b80;
  _Var6 = std::locale::id::operator_unsigned___int64((id *)&DAT_182666b78);
  lVar5 = *(longlong *)(lVar5 + 8);
  if ((*(ulonglong *)(lVar5 + 0x18) <= _Var6) ||
     (pfVar9 = *(facet **)(*(longlong *)(lVar5 + 0x10) + _Var6 * 8), pfVar9 == (facet *)0x0)) {
    if (*(char *)(lVar5 + 0x24) == '\0') {
LAB_18074e9ea:
      if (pfVar9 != (facet *)0x0) goto LAB_18074e9fb;
    }
    else {
      p_Var8 = std::locale::_Getgloballocale();
      if (_Var6 < *(ulonglong *)(p_Var8 + 0x18)) {
        pfVar9 = *(facet **)(*(longlong *)(p_Var8 + 0x10) + _Var6 * 8);
        goto LAB_18074e9ea;
      }
    }
    pfVar9 = pfVar4;
    if (pfVar4 == (facet *)0x0) {
      FUN_1805a49a0(local_90);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_90,(ThrowInfo *)&DAT_1825fd200);
    }
  }
LAB_18074e9fb:
  std::_Lockit::~_Lockit(local_108);
  iVar2 = *(int *)(*param_1 + 4);
  local_70 = 0;
  local_68 = 0;
  local_58 = 0;
  local_50 = 0;
  local_60 = (ulonglong)(*local_d8 - 1);
  local_118 = FUN_1805a4070(&local_d8,pfVar9 + 0x30);
  local_120 = &local_70;
  local_128 = uVar1;
  (**(code **)(*(longlong *)pfVar9 + 0x30))
            (pfVar9,local_b8,local_e8,(longlong)iVar2 + (longlong)param_1);
  if ((local_f8 != (_Locimp *)0x0) &&
     (puVar7 = (undefined8 *)(**(code **)(*(longlong *)local_f8 + 0x10))(),
     puVar7 != (undefined8 *)0x0)) {
    (**(code **)*puVar7)(puVar7,1);
  }
LAB_18074ec47:
  *(uint *)(this + 0x18) = local_f0 & 0xffff;
}



############ FUN_ 18068ca70 size=2512 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18068ca70(undefined8 param_1,longlong *param_2,undefined8 param_3)

{
  uint uVar1;
  bool bVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  undefined8 uVar6;
  longlong lVar7;
  longlong *plVar8;
  undefined8 *******pppppppuVar9;
  char *pcVar10;
  ulonglong uVar11;
  longlong *local_res10 [3];
  undefined1 auStack_278 [32];
  char *local_258;
  undefined4 local_250;
  undefined4 uStack_24c;
  char *local_248;
  char *local_240;
  char *local_238;
  ulonglong local_230;
  char *local_228;
  char *local_220;
  undefined8 local_218;
  undefined8 local_210;
  undefined8 ******local_208 [2];
  longlong local_1f8;
  ulonglong local_1f0;
  undefined8 ******local_1e8 [2];
  undefined8 local_1d8;
  ulonglong local_1d0;
  undefined8 ******local_1c8 [2];
  size_t local_1b8;
  ulonglong local_1b0;
  undefined1 local_1a8 [8];
  undefined4 local_1a0;
  void *local_198 [3];
  undefined8 ******local_180 [2];
  undefined8 local_170;
  ulonglong local_168;
  undefined1 local_160 [16];
  longlong local_150;
  ulonglong local_140;
  undefined2 local_10e;
  undefined1 local_f8 [8];
  undefined4 local_f0;
  undefined1 local_e8 [24];
  undefined1 local_d0 [32];
  undefined1 local_b0 [32];
  undefined8 local_90;
  undefined2 local_5e;
  ulonglong local_48;
  
  local_210 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_278;
  local_248 = (char *)0x7ffffffffffffffe;
  local_250 = 0xfffffffe;
  local_res10[0] = param_2;
  local_218 = param_1;
  FUN_1805b41e0(&local_228,&local_250,&local_248);
  local_248 = (char *)0x7ffffffffffffffe;
  local_250 = 0xfffffffe;
  FUN_1805b41e0(&local_238,&local_250,&local_248);
  FUN_1805b6280(local_f8);
  FUN_1805b6280(local_1a8);
  pcVar10 = (char *)0x0;
  local_220 = (char *)0x0;
  local_240 = (char *)0x0;
  if (param_2 == (longlong *)0x0) {
    local_258 = (char *)FUN_1811316e0(0x18);
    pcVar4 = pcVar10;
    if (local_258 != (char *)0x0) {
      pcVar4 = (char *)FUN_1805a48c0(local_258,"Bad LsTimeLimitPtr (0x%16X)");
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    local_258 = pcVar5;
    if (pcVar5 != (char *)0x0) {
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
      pcVar10 = pcVar5;
    }
    FUN_18066eb70(*(undefined8 *)(pcVar4 + 8),local_res10);
    local_250 = 0x1ab2;
    local_248 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar6 = FUN_1805a21d0(*(undefined8 *)(pcVar10 + 8),&local_248);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,&local_250);
  }
  FUN_1805a6cb0(local_d0,"2011-05-04T11:44:00Z",0x14);
  pppppppuVar9 = local_180;
  if (0xf < local_168) {
    pppppppuVar9 = (undefined8 *******)local_180[0];
  }
  FUN_1805a6cb0(local_b0,pppppppuVar9,local_170);
  local_90 = 0;
  local_5e = 0;
  lVar7 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar7 + 0x14c),"storageId");
  lVar7 = FUN_180870eb0(param_2);
  local_1a0 = *(undefined4 *)(lVar7 + 0x100);
  local_f0 = local_1a0;
  uVar6 = (**(code **)(*param_2 + 0x40))(param_2);
  FUN_1805a4070(local_1c8,uVar6);
  FUN_1805b1330(local_198,local_1b8,local_198);
  pppppppuVar9 = local_1c8;
  if (0xf < local_1b0) {
    pppppppuVar9 = (undefined8 *******)local_1c8[0];
  }
  memcpy(local_198[0],pppppppuVar9,local_1b8);
  FUN_1805b9910(local_e8,local_198);
  lVar7 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar7 + 0x149),"relativeTimePeriod");
  lVar7 = FUN_180870eb0(param_2);
  uVar1 = *(uint *)(lVar7 + 0xb8);
  uVar11 = (ulonglong)uVar1;
  lVar7 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar7 + 0x14a),"relativeTimeStart");
  lVar7 = FUN_180870eb0(param_2);
  FUN_1805a4070(local_208,lVar7 + 0xc0);
  lVar7 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar7 + 0x14b),"relativeTimeStop");
  lVar7 = FUN_180870eb0(param_2);
  FUN_1805a4070(local_1e8,lVar7 + 0xe0);
  if ((uVar1 == 0) || (local_1f8 == 0)) {
    bVar2 = false;
  }
  else {
    bVar2 = true;
  }
  lVar7 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar7 + 0x147),"periodStartDate");
  lVar7 = FUN_180870eb0(param_2);
  pppppppuVar9 = (undefined8 *******)(lVar7 + 0x78);
  if (local_180 != pppppppuVar9) {
    if (0xf < *(ulonglong *)(lVar7 + 0x90)) {
      pppppppuVar9 = (undefined8 *******)*pppppppuVar9;
    }
    FUN_1805a6cb0(local_180,pppppppuVar9,*(undefined8 *)(lVar7 + 0x88));
  }
  lVar7 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar7 + 0x148),"periodStopDate");
  lVar7 = FUN_180870eb0(param_2);
  plVar8 = (longlong *)(lVar7 + 0x98);
  if ((longlong *)local_160 != plVar8) {
    if (0xf < *(ulonglong *)(lVar7 + 0xb0)) {
      plVar8 = (longlong *)*plVar8;
    }
    FUN_1805a6cb0(local_160,plVar8,*(undefined8 *)(lVar7 + 0xa8));
  }
  plVar8 = (longlong *)FUN_180660c00(&local_258,local_180,0);
  pcVar10 = (char *)*plVar8;
  local_228 = pcVar10;
  plVar8 = (longlong *)FUN_180660c00(&local_258,local_160,0);
  pcVar4 = (char *)*plVar8;
  local_248 = (char *)0x7ffffffffffffffe;
  local_250 = 0xfffffffe;
  local_238 = pcVar4;
  FUN_1805b41e0(&local_258,&local_250,&local_248);
  if ((pcVar10 == local_258) ||
     ((local_150 != 0 && (FUN_1805b6b80(&local_258,0), pcVar4 == local_258)))) {
    FUN_1805b6190(param_1,local_f8);
    FUN_180485450(local_1e8);
    FUN_180485450(local_208);
    FUN_180485450(local_1c8);
    FUN_1805b9270(local_1a8);
    FUN_1805b9270(local_f8);
  }
  if ((uVar1 == 0) || (bVar2)) {
    local_10e = (ushort)local_10e._1_1_ << 8;
    if (bVar2) {
      FUN_180660c00(&local_250,local_208,0);
      FUN_180660c00(&local_248,local_1e8,0);
      FUN_1805b6b80(&local_258,0);
      if (((char *)CONCAT44(uStack_24c,local_250) == local_258) ||
         (FUN_1805b6b80(&local_258,0), local_248 == local_258)) {
        FUN_1805b6190(param_1,local_f8);
        FUN_180485450(local_1e8);
        FUN_180485450(local_208);
        FUN_180485450(local_1c8);
        FUN_1805b9270(local_1a8);
        FUN_1805b9270(local_f8);
      }
      FUN_1805c5170(&local_258,&local_248,&local_250);
      local_240 = local_258;
      local_258 = (char *)0x0;
      iVar3 = FUN_1805bd370(&local_240,&local_258);
      if (iVar3 == -1) {
        FUN_1805b6190(param_1,local_f8);
        FUN_180485450(local_1e8);
        FUN_180485450(local_208);
        FUN_180485450(local_1c8);
        FUN_1805b9270(local_1a8);
        FUN_1805b9270(local_f8);
      }
      FUN_180661ba0(&local_240,&local_230);
      if (local_230 != uVar11) {
        FUN_1805b6190(param_1,local_f8);
        FUN_180485450(local_1e8);
        FUN_180485450(local_208);
        FUN_180485450(local_1c8);
        FUN_1805b9270(local_1a8);
        FUN_1805b9270(local_f8);
      }
      if (local_150 != 0) {
        FUN_1805c5170(&local_258,&local_238,&local_250);
        local_240 = local_258;
        local_258 = (char *)0x0;
        iVar3 = FUN_1805bd370(&local_240,&local_258);
        if (iVar3 == -1) {
          FUN_1805b6190(param_1,local_f8);
          FUN_180485450(local_1e8);
          FUN_180485450(local_208);
          FUN_180485450(local_1c8);
          FUN_1805b9270(local_1a8);
          FUN_1805b9270(local_f8);
        }
      }
      pppppppuVar9 = local_208;
      if (0xf < local_1f0) {
        pppppppuVar9 = (undefined8 *******)local_208[0];
      }
      FUN_1805a6cb0(local_180,pppppppuVar9,local_1f8);
      pppppppuVar9 = local_1e8;
      if (0xf < local_1d0) {
        pppppppuVar9 = (undefined8 *******)local_1e8[0];
      }
      FUN_1805a6cb0(local_160,pppppppuVar9,local_1d8);
      local_228 = (char *)CONCAT44(uStack_24c,local_250);
      local_238 = local_248;
    }
    FUN_1805c5170(&local_248,param_3,&local_228);
    if (local_150 == 0) {
      local_140 = 0x7fffffffffffffff;
      local_258 = (char *)0x0;
      iVar3 = FUN_1805bd370(&local_248,&local_258);
      local_10e = CONCAT11(iVar3 != -1,(undefined1)local_10e);
    }
    else {
      FUN_1805c5170(&local_250,&local_238,param_3);
      local_258 = (char *)0x0;
      iVar3 = FUN_1805bd370(&local_250,&local_258);
      if (iVar3 == -1) {
        local_10e = local_10e & 0xff;
        local_140 = 0;
      }
      else {
        local_258 = (char *)0x0;
        iVar3 = FUN_1805bd370(&local_248,&local_258);
        if (iVar3 == -1) {
          FUN_1805c5170(&local_258,&local_238,&local_228);
          local_220 = local_258;
          FUN_180661ba0(&local_220,&local_230);
          local_10e = local_10e & 0xff;
        }
        else {
          FUN_180661ba0(&local_250,&local_230);
          local_10e = CONCAT11(local_230 != 0,(undefined1)local_10e);
        }
        local_140 = local_230;
        if (0x7fffffffffffffff < local_230) {
          local_230 = 0x7fffffffffffffff;
          local_140 = local_230;
        }
      }
    }
  }
  else {
    local_10e = 1;
    local_140 = uVar11;
    if (local_150 != 0) {
      FUN_1805c5170(&local_258,&local_238,param_3);
      local_240 = local_258;
      local_258 = (char *)0x0;
      iVar3 = FUN_1805bd370(&local_240,&local_258);
      if (iVar3 == -1) {
        local_140 = 0;
      }
    }
  }
  FUN_180485450(local_1e8);
  FUN_180485450(local_208);
  FUN_1805b6190(param_1,local_1a8);
  FUN_180485450(local_1c8);
  FUN_1805b9270(local_1a8);
  FUN_1805b9270(local_f8);
}



############ FUN_ 180690270 size=3216 ############

ulonglong FUN_180690270(longlong param_1,undefined4 *param_2,longlong param_3,undefined8 param_4,
                       undefined8 param_5,undefined8 *param_6,undefined8 *param_7)

{
  void *_Src;
  void *_Src_00;
  bool bVar1;
  undefined8 *puVar2;
  undefined1 uVar3;
  HANDLE hEvent;
  longlong lVar4;
  longlong lVar5;
  undefined8 uVar6;
  uint uVar7;
  longlong *plVar8;
  uint *puVar9;
  undefined2 uVar10;
  ulonglong uVar11;
  ulonglong _Size;
  void *_Dst;
  uint uVar12;
  longlong lVar13;
  ulonglong uVar14;
  void *pvVar15;
  size_t _Size_00;
  longlong lVar16;
  undefined1 local_a38 [32];
  longlong *local_a18;
  undefined8 local_a10;
  undefined8 local_a08;
  undefined *local_9f8;
  longlong local_9f0;
  undefined1 local_9e8;
  longlong local_9e0;
  longlong local_9d8;
  undefined4 *local_9d0;
  undefined8 local_9c0;
  void *local_9b8;
  void *pvStack_9b0;
  longlong local_9a8;
  undefined4 *local_9a0;
  undefined4 local_998 [2];
  undefined4 local_990 [2];
  uint local_988;
  uint local_984;
  undefined8 local_980;
  char *local_978;
  char *local_970;
  void *local_968;
  longlong lStack_960;
  longlong local_958;
  undefined **local_948;
  undefined8 local_940;
  undefined8 local_938;
  undefined8 uStack_930;
  undefined8 local_928;
  undefined8 uStack_920;
  undefined8 local_918;
  longlong lStack_910;
  longlong local_908;
  undefined8 uStack_900;
  undefined8 local_8f8;
  undefined8 uStack_8f0;
  undefined8 local_8e8;
  undefined8 local_8e0;
  undefined1 local_8d8;
  void *local_8c8;
  undefined8 uStack_8c0;
  longlong local_8b8;
  longlong local_8b0;
  undefined8 *local_8a8;
  int *local_8a0;
  char local_898;
  undefined8 *local_890;
  longlong local_888;
  undefined8 local_880;
  undefined8 local_878;
  undefined8 local_870;
  undefined8 local_868;
  undefined8 local_860;
  undefined8 local_858;
  undefined8 local_850;
  undefined8 local_848;
  undefined8 local_840;
  undefined8 local_838;
  undefined8 local_830;
  undefined8 local_828;
  undefined1 local_820 [24];
  longlong local_808 [72];
  undefined **local_5c8;
  undefined1 local_5c0 [752];
  undefined8 local_2d0;
  undefined8 local_2c8;
  undefined8 uStack_2c0;
  undefined1 local_2b8 [568];
  undefined8 local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined4 local_60;
  undefined1 local_5c;
  ulonglong local_40;
  
  local_858 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)local_a38;
  local_880 = param_5;
  local_8a8 = param_6;
  local_890 = param_7;
  uVar12 = (uint)&stack0x00000000;
  uVar7 = ((uVar12 & 0x2cff) + 1) * (uVar12 & 0x2cff) + 7;
  local_984 = 0x3480 << ((byte)(0 >> ((char)uVar7 + (char)(uVar7 / 0x51) * -0x51 & 0x1fU)) & 0x1f) ^
              0x3fa0;
  if (((((uVar12 & 0x1cff) + 1) * (uVar12 & 0x1cff) + 7) % 0x51 & 800) == 0) {
    uVar7 = uVar12 & 0x17f;
    uVar7 = ((uVar7 + 2) * (uVar7 + 1) * uVar7) % 3 ^
            ((uVar12 & 0x4aff) * (uVar12 & 0x4aff) + 1) % 7;
    local_988 = (int)(-uVar7 | uVar7) >> 0x1f & 0x125c;
  }
  else {
    local_988 = 0x125c;
  }
  local_988 = local_988 ^ 0x18dc;
  local_5c8 = pace::eden::thrift::authorize::GetContentDecryptionKeyInput::vftable;
  local_9f0 = param_1;
  local_9e0 = param_3;
  local_9d0 = param_2;
  local_9c0 = param_4;
  FUN_180575180(local_5c0);
  local_2d0 = 0;
  local_2c8 = 0;
  uStack_2c0 = 0;
  FUN_180676e10(local_2b8);
  local_80 = 0;
  local_78 = 0;
  uStack_70 = 0;
  local_68 = 0;
  local_60 = 0;
  local_5c = 0;
  local_948 = pace::eden::thrift::authorize::GetContentDecryptionKeyReturn::vftable;
  local_940 = 0;
  local_938 = 0;
  uStack_930 = 0;
  local_928 = 0;
  uStack_920 = 0;
  local_918 = 0;
  lStack_910 = 0;
  local_908 = 0;
  uStack_900 = 0;
  local_8f8 = 0;
  uStack_8f0 = 0;
  local_8e8 = 0;
  local_8e0 = 4;
  local_8d8 = 0;
  local_9b8 = (void *)0x0;
  pvStack_9b0 = (void *)0x0;
  local_9a8 = 0;
  bVar1 = false;
  local_980 = 0;
  local_9d8 = 0x5ff4;
  local_9f8 = &DAT_181d10214;
  local_9a0 = &DAT_181d16208;
  lVar4 = 0;
  pvVar15 = (void *)0x0;
  _Dst = (void *)0x0;
  lVar5 = *(longlong *)((longlong)param_2 + 0x68);
  do {
    lVar13 = local_9e0;
    lVar16 = local_9f0;
    if (lVar5 == 2) {
      bVar1 = true;
      local_a18 = &local_940;
      FUN_18069ce00(local_9f0,param_2,local_9e0,&local_928);
LAB_1806907f5:
      local_9d0 = local_9a0;
      local_9f8._0_4_ = 0xf20e7acc;
      if (!bVar1) {
        FUN_1805b9ea0(local_5c0,param_2);
        FUN_1805b1330(&local_2d0,0x10,&local_2d0);
        FUN_180605430(local_2d0,0x10);
        FUN_1805e4990(local_2b8,lVar13);
        puVar2 = local_8a8;
        if (local_8a8 != (undefined8 *)0x0) {
          local_868 = local_8a8[1];
          local_860 = *local_8a8;
          FUN_1805e1990(&local_80,local_860,local_868,local_9e8);
        }
        lVar4 = 0;
        if (local_890 == (undefined8 *)0x0) {
          local_68 = 0;
        }
        else {
          local_68 = *local_890;
        }
        FUN_1805b45f0(&local_8a0,lVar16 + 0x18);
        if (*(longlong *)(lVar16 + 0x48) == 0) {
          plVar8 = (longlong *)
                   ((longlong)*(int *)(**(longlong **)(lVar16 + 8) + 8) +
                   (longlong)*(longlong **)(lVar16 + 8));
          (**(code **)(*plVar8 + 0xc0))(plVar8,&local_948,&local_5c8,4);
        }
        else {
          local_8c8 = (void *)0x0;
          uStack_8c0 = 0;
          local_8b8 = 0;
          local_968 = (void *)0x0;
          lStack_960 = 0;
          local_958 = 0;
          FUN_180673c70(&local_5c8,&local_8c8,1);
          FUN_1806b86d0(lVar16,0x18,&local_8c8,&local_968);
          FUN_180671b60(local_968,lStack_960 - (longlong)local_968,&local_948);
          if (local_968 != (void *)0x0) {
            pvVar15 = local_968;
            if ((0xfff < (ulonglong)(local_958 - (longlong)local_968)) &&
               (pvVar15 = *(void **)((longlong)local_968 + -8),
               0x1f < (ulonglong)((longlong)local_968 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          if (local_8c8 != (void *)0x0) {
            pvVar15 = local_8c8;
            if ((0xfff < (ulonglong)(local_8b8 - (longlong)local_8c8)) &&
               (pvVar15 = *(void **)((longlong)local_8c8 + -8),
               0x1f < (ulonglong)((longlong)local_8c8 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
        }
        if ((local_898 != '\0') && (*local_8a0 = *local_8a0 + -1, *local_8a0 == 0)) {
          LOCK();
          local_8a0[1] = 0;
          UNLOCK();
          puVar9 = (uint *)(local_8a0 + 2);
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 + 0x80000000;
          UNLOCK();
          if (((uVar7 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar7)) {
            LOCK();
            uVar7 = *puVar9;
            *puVar9 = *puVar9 | 0x40000000;
            UNLOCK();
            if ((uVar7 >> 0x1e & 1) == 0) {
              hEvent = (HANDLE)FUN_1805a9100();
              SetEvent(hEvent);
            }
          }
        }
        if (puVar2 != (undefined8 *)0x0) {
          local_830 = uStack_8f0;
          local_850 = local_8f8;
          FUN_1805b1a40(puVar2);
        }
        local_a18 = &local_2d0;
        FUN_18063c260(local_808,0,1,0);
        (**(code **)(local_808[0] + 0x30))(local_808,&local_940);
        (**(code **)(local_808[0] + 0x30))(local_808,&local_928);
        (**(code **)(local_808[0] + 0x30))(local_808,&lStack_910);
        plVar8 = (longlong *)(lVar13 + 0x18);
        if ((ulonglong)(*(longlong *)(lVar13 + 0x20) - *plVar8) < 0x10) {
          local_978 = (char *)FUN_1811316e0(0x18);
          if (local_978 != (char *)0x0) {
            lVar4 = FUN_1805a48c0(local_978,
                                  "The decryptionAssistData.keyVerificationData size (%d) is too small."
                                 );
          }
          lVar5 = FUN_1805c0260();
          local_8b0 = *(longlong *)(lVar13 + 0x20) - *plVar8;
          FUN_1805b2520(*(undefined8 *)(lVar4 + 8),&local_8b0);
          local_998[0] = 0x3a0;
          local_978 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_978);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar6,local_998);
        }
        if ((ulonglong)(local_908 - lStack_910) < 0x10) {
          local_970 = (char *)FUN_1811316e0(0x18);
          if (local_970 != (char *)0x0) {
            lVar4 = FUN_1805a48c0(local_970,
                                  "The _return.outRandomTransportKey size (%d) is too small.");
          }
          lVar5 = FUN_1805c0260();
          local_888 = local_908 - lStack_910;
          FUN_1805b2520(*(undefined8 *)(lVar4 + 8),&local_888);
          local_990[0] = 0x3a6;
          local_970 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_970);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar6,local_990);
        }
        FUN_180620470(lStack_910,*plVar8,0x10);
        FUN_180620470(lStack_910,local_2d0,0x10);
        local_a18 = &lStack_910;
        FUN_18063f370(local_808,0,1,0);
        (**(code **)(local_808[0] + 0x30))(local_808,&local_928);
        (**(code **)(local_808[0] + 0x30))(local_808,&local_940);
        local_a18 = (longlong *)CONCAT44(local_a18._4_4_,4);
        FUN_180685140(*(undefined4 *)(lVar13 + 8),&local_928,&local_940,plVar8);
        FUN_18063cad0(local_808);
      }
      uVar7 = (uint)local_9f8;
      local_9f0._0_4_ = 0x58950269;
      local_9f8._0_4_ = 0xd7116351;
      local_a08 = local_880;
      local_a10 = local_9c0;
      local_a18 = &local_940;
      uVar10 = 1;
      uVar11 = (ulonglong)*(uint *)(lVar13 + 8);
      FUN_1806917d0(uVar11,1,*(undefined4 *)(lVar13 + 0xc),&local_928);
      local_9f8 = (undefined *)
                  CONCAT44(local_9f8._4_4_,
                           ~(((uVar7 ^ 0x956eb4e4) << 0x19 | (uVar7 ^ 0x956eb4e4) >> 7) + 0xc8dcd2ff
                            ));
      local_9f0 = CONCAT44(local_9f0._4_4_,0x1b873593);
                    /* WARNING: Call to offcut address within same function */
      uVar6 = func_0x000180690da2();
      uVar3 = in(uVar10);
      (&stack0x0000005c)[uVar11 * 4] = (&stack0x0000005c)[uVar11 * 4] ^ (byte)uVar11;
      return CONCAT71((int7)((ulonglong)uVar6 >> 8),uVar3) & 0xffffffffffffff30;
    }
    if ((lVar5 - 4U < 0x3d) && ((0x1000000010000011U >> (lVar5 - 4U & 0x3f) & 1) != 0)) {
      bVar1 = true;
      local_a10 = FUN_1805b46a0(local_820,&local_9b8);
      lVar13 = local_9e0;
      lVar16 = local_9f0;
      local_a18 = &local_940;
      FUN_18069d070(local_9f0,param_2,local_9e0,&local_928);
      goto LAB_1806907f5;
    }
    local_9d8 = *(longlong *)((longlong)param_2 + 0x1f8);
    if ((local_9d8 == 0) || (bVar1)) {
      bVar1 = false;
      goto LAB_1806907f5;
    }
    if (&local_9b8 != (void **)((longlong)param_2 + 0x200)) {
      lVar5 = *(longlong *)((longlong)param_2 + 0x208);
      _Src_00 = *(void **)((longlong)param_2 + 0x200);
      _Size = lVar5 - (longlong)_Src_00;
      uVar11 = lVar4 - (longlong)_Dst;
      if (uVar11 < _Size) {
        local_848 = 0xffffffffffffffff;
        local_840 = 0x7fffffffffffffff;
        if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        local_838 = 0xffffffffffffffff;
        local_828 = 0x7fffffffffffffff;
        uVar14 = _Size;
        if ((uVar11 <= 0x7fffffffffffffff - (uVar11 >> 1)) &&
           (uVar14 = uVar11 + (uVar11 >> 1), uVar14 < _Size)) {
          uVar14 = _Size;
        }
        if (_Dst != (void *)0x0) {
          pvVar15 = _Dst;
          if ((0xfff < uVar11) &&
             (pvVar15 = *(void **)((longlong)_Dst + -8),
             0x1f < (ulonglong)((longlong)_Dst + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar15);
        }
        local_9b8 = (void *)0x0;
        pvStack_9b0 = (void *)0x0;
        local_9a8 = 0;
        if (uVar14 != 0) {
          local_878 = 0xffffffffffffffff;
          local_870 = 0x7fffffffffffffff;
          if (0x7fffffffffffffff < uVar14) {
                    /* WARNING: Subroutine does not return */
            FUN_1805a69c0();
          }
          local_9b8 = (void *)FUN_1805bc8b0(&local_9b8,uVar14);
          local_9a8 = (longlong)local_9b8 + uVar14;
        }
        lVar4 = local_9a8;
        _Dst = local_9b8;
        memmove(local_9b8,_Src_00,_Size);
        pvVar15 = (void *)(_Size + (longlong)_Dst);
        param_2 = local_9d0;
        pvStack_9b0 = pvVar15;
      }
      else if ((ulonglong)((longlong)pvVar15 - (longlong)_Dst) < _Size) {
        _Src = (void *)(((longlong)pvVar15 - (longlong)_Dst) + (longlong)_Src_00);
        memmove(_Dst,_Src_00,(longlong)_Src - (longlong)_Src_00);
        _Size_00 = lVar5 - (longlong)_Src;
        memmove(pvVar15,_Src,_Size_00);
        pvVar15 = (void *)((longlong)pvVar15 + _Size_00);
        param_2 = local_9d0;
        pvStack_9b0 = pvVar15;
      }
      else {
        memmove(_Dst,_Src_00,_Size);
        pvVar15 = (void *)((longlong)_Dst + _Size);
        param_2 = local_9d0;
        pvStack_9b0 = pvVar15;
      }
    }
    bVar1 = true;
    lVar5 = local_9d8;
  } while( true );
}



############ FUN_ 1806a0350 size=2130 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806a0350(undefined8 param_1,longlong *param_2,longlong param_3,longlong param_4,
                  undefined8 param_5,undefined8 param_6)

{
  longlong *plVar1;
  int *piVar2;
  undefined4 *puVar3;
  uint uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  longlong lVar7;
  ulonglong uVar8;
  void *_Memory;
  undefined8 uVar9;
  ulonglong uVar10;
  longlong *plVar11;
  ulonglong uVar12;
  int iVar13;
  undefined1 auStack_678 [32];
  void **local_658;
  undefined1 local_648;
  void *local_640;
  longlong lStack_638;
  longlong local_630;
  undefined4 local_628 [2];
  undefined4 local_620 [4];
  undefined4 local_610 [2];
  undefined4 local_608 [2];
  longlong local_600;
  longlong *local_5f8;
  undefined8 local_5f0;
  undefined **local_5e8;
  undefined8 local_5e0;
  undefined4 local_5d8;
  undefined1 local_5d4;
  undefined8 local_5d0;
  undefined8 local_5c8;
  undefined8 uStack_5c0;
  undefined8 local_5b8;
  undefined8 uStack_5b0;
  undefined1 local_5a8;
  undefined8 local_5a0;
  undefined8 local_598;
  undefined2 local_590;
  undefined8 local_588;
  undefined8 *local_580;
  char *local_578;
  char *local_570 [2];
  char *local_560;
  char *local_558;
  undefined8 local_550;
  longlong *local_548;
  undefined8 local_540;
  undefined8 local_538;
  undefined8 local_530;
  undefined8 local_528;
  undefined1 local_518 [576];
  undefined1 local_2d8 [576];
  undefined8 *local_98;
  undefined8 local_90;
  undefined4 local_88;
  undefined2 local_84;
  undefined1 local_82;
  undefined1 local_80 [16];
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined1 local_60 [8];
  ulonglong local_58;
  
  local_550 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_678;
  local_588 = param_5;
  local_5f0 = param_6;
  local_640 = (void *)0x0;
  lStack_638 = 0;
  local_630 = 0;
  local_600 = param_3;
  local_5f8 = param_2;
  local_548 = param_2;
  uVar4 = FUN_1807002d0(*(undefined4 *)(param_4 + 8));
  uVar8 = (ulonglong)uVar4;
  uVar4 = FUN_180700270(*(undefined4 *)(param_4 + 8));
  uVar12 = (ulonglong)uVar4;
  if ((*(longlong *)(param_3 + 0x10) - *(longlong *)(param_3 + 8)) / 0x438 == 0) {
    local_98 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_98 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_98,"The authChain provided to getContentDecryptionKey is empty");
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    local_98 = puVar5;
    if (puVar5 == (undefined8 *)0x0) {
      puVar5 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_628[0] = 0x2fc3;
    local_578 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar6 = FUN_1805a21d0(puVar5[1],&local_578);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_628);
  }
  if (*param_2 == 0) {
    local_98 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_98 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_98,"Missing a Protocols object");
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    local_98 = puVar5;
    if (puVar5 == (undefined8 *)0x0) {
      puVar5 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_620[0] = 0x2fc8;
    local_570[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar6 = FUN_1805a21d0(puVar5[1],local_570);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_620);
  }
  local_5e8 = pace::eden::thrift::fusion::LocationGroupAttributes::vftable;
  local_5e0 = 0;
  local_5d8 = 0;
  local_5d4 = 0;
  local_5d0 = 0;
  local_5c8 = 0;
  uStack_5c0 = 0;
  local_5b8 = 0;
  uStack_5b0 = 0;
  local_5a8 = 0;
  local_5a0 = 0;
  local_598 = 0;
  local_590 = 0;
  local_658 = (void **)CONCAT44(local_658._4_4_,1);
  FUN_1806a2680(param_1,*(undefined4 *)(param_4 + 0x10),&local_5e8,0);
  if (local_5e0._2_1_ == '\0') {
    local_98 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_98 == (undefined8 *)0x0) {
      lVar7 = 0;
    }
    else {
      lVar7 = FUN_1805a48c0(local_98,
                            "This iLok1 cannot produce the decryption key to decrypt the content.  ValidLocations = %d"
                           );
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    local_98 = puVar5;
    if (puVar5 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar7 + 8),param_4 + 0x10);
  }
  lVar7 = FUN_1805fcae0();
  iVar13 = *(int *)(param_4 + 0x98);
  if (iVar13 == *(int *)(lVar7 + 0x2c)) {
    iVar13 = *(int *)(param_4 + 0x30);
    uVar4 = FUN_1807002d0(iVar13);
    uVar10 = (ulonglong)uVar4;
    uVar4 = FUN_180700270(iVar13);
    if ((((*(longlong *)(param_4 + 0x88) - *(longlong *)(param_4 + 0x80) != 7) || (uVar8 == 0)) ||
        ((uVar10 == 0 ||
         ((((ulonglong)(*(longlong *)(param_4 + 0x40) - *(longlong *)(param_4 + 0x38)) < uVar8 ||
           ((ulonglong)(*(longlong *)(param_4 + 0x40) - *(longlong *)(param_4 + 0x38)) %
            (ulonglong)uVar4 != 0)) || (uVar12 < 0x10)))))) ||
       ((((ulonglong)(*(longlong *)(param_4 + 0x58) - *(longlong *)(param_4 + 0x50)) < uVar12 ||
         ((ulonglong)(*(longlong *)(param_4 + 0x58) - *(longlong *)(param_4 + 0x50)) %
          (ulonglong)uVar4 != 0)) ||
        (((ulonglong)(*(longlong *)(param_4 + 0x70) - *(longlong *)(param_4 + 0x68)) < 0x10 ||
         ((*(longlong *)(param_4 + 0x70) - *(longlong *)(param_4 + 0x68) & 0xfU) != 0)))))) {
      local_98 = (undefined8 *)FUN_1811316e0(0x18);
      if (local_98 != (undefined8 *)0x0) {
        FUN_1805a48c0(local_98,
                      "Bad data size detected in the DecryptionAssistData for iLok1 KEY EXCHANGE data"
                     );
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      local_98 = puVar5;
      if (puVar5 == (undefined8 *)0x0) {
        puVar5 = (undefined8 *)0x0;
      }
      else {
        FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
        *puVar5 = pace::PaceLocationInfoFormatter::vftable;
      }
      local_610[0] = 0x2fe9;
      local_560 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar6 = FUN_1805a21d0(puVar5[1],&local_560);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_610);
    }
    puVar3 = *(undefined4 **)(param_4 + 0x68);
    local_70 = *puVar3;
    uStack_6c = puVar3[1];
    uStack_68 = puVar3[2];
    uStack_64 = puVar3[3];
    local_658 = (void **)(param_4 + 0x50);
    FUN_18063c260(local_2d8,0,1,0);
    FUN_18063cd40(local_2d8,0x10,&local_70);
    plVar11 = local_5f8;
    puVar3 = *(undefined4 **)(param_4 + 0x80);
    local_88 = *puVar3;
    local_84 = *(undefined2 *)(puVar3 + 1);
    local_82 = *(undefined1 *)((longlong)puVar3 + 6);
    local_658 = (void **)&local_70;
    FUN_1807fc7f0(*local_5f8,local_80,*(undefined4 *)(*(longlong *)(local_600 + 8) + 8),&local_88);
    FUN_1805e1990(&local_640,local_80,&local_70);
    uVar8 = lStack_638 - (longlong)local_640;
    uVar6 = local_5f0;
    while (local_5f0 = uVar6, uVar8 < uVar10) {
      local_658._1_7_ = (undefined7)((ulonglong)local_658 >> 8);
      local_658 = (void **)CONCAT71(local_658._1_7_,local_648);
      FUN_1805d5a60(&local_640,lStack_638,local_80,&local_70);
      uVar6 = local_5f0;
      uVar8 = lStack_638 - (longlong)local_640;
    }
    local_5f8 = *(longlong **)(param_4 + 0x40);
    local_600 = *(longlong *)(param_4 + 0x38);
    FUN_1805b1a40(uVar6);
    uVar9 = local_588;
    local_5f0 = *(undefined8 *)(param_4 + 0x58);
    local_580 = *(undefined8 **)(param_4 + 0x50);
    FUN_1805b1a40(local_588);
    FUN_18063cad0(local_2d8);
  }
  else {
    uVar4 = FUN_1807002d0(iVar13);
    uVar10 = (ulonglong)uVar4;
    uVar4 = FUN_180700270(iVar13);
    plVar11 = local_5f8;
    if (((((uVar8 == 0) || (uVar10 == 0)) ||
         ((ulonglong)(*(longlong *)(param_4 + 0xc0) - *(longlong *)(param_4 + 0xb8)) < uVar8)) ||
        (((ulonglong)(*(longlong *)(param_4 + 0xc0) - *(longlong *)(param_4 + 0xb8)) %
          (ulonglong)uVar4 != 0 ||
         ((ulonglong)(*(longlong *)(param_4 + 0xd8) - *(longlong *)(param_4 + 0xd0)) < uVar12)))) ||
       (((ulonglong)(*(longlong *)(param_4 + 0xd8) - *(longlong *)(param_4 + 0xd0)) %
         (ulonglong)uVar4 != 0 ||
        ((ulonglong)(*(longlong *)(param_4 + 0xa8) - *(longlong *)(param_4 + 0xa0)) < 8)))) {
      local_580 = (undefined8 *)FUN_1811316e0(0x18);
      if (local_580 != (undefined8 *)0x0) {
        FUN_1805a48c0(local_580,
                      "Bad data size detected in the DecryptionAssistData for iLok1 QUICK CHALLENGE RESPONSE data"
                     );
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      local_580 = puVar5;
      if (puVar5 == (undefined8 *)0x0) {
        puVar5 = (undefined8 *)0x0;
      }
      else {
        FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
        *puVar5 = pace::PaceLocationInfoFormatter::vftable;
      }
      local_608[0] = 0x3028;
      local_558 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar6 = FUN_1805a21d0(puVar5[1],&local_558);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_608);
    }
    local_98 = (undefined8 *)**(undefined8 **)(param_4 + 0xa0);
    puVar5 = (undefined8 *)
             FUN_1807fb840(*local_5f8,local_60,*(undefined4 *)(*(longlong *)(local_600 + 8) + 8),
                           &local_98);
    local_90 = *puVar5;
    FUN_1805e1990(&local_640,&local_90,&local_88);
    uVar8 = lStack_638 - (longlong)local_640;
    uVar6 = local_5f0;
    while (local_5f0 = uVar6, uVar8 < uVar10) {
      local_658._1_7_ = (undefined7)((ulonglong)local_658 >> 8);
      local_658 = (void **)CONCAT71(local_658._1_7_,local_648);
      FUN_1805d5a60(&local_640,lStack_638,&local_90,&local_88);
      uVar6 = local_5f0;
      uVar8 = lStack_638 - (longlong)local_640;
    }
    local_540 = *(undefined8 *)(param_4 + 0xc0);
    local_538 = *(undefined8 *)(param_4 + 0xb8);
    FUN_1805b1a40(uVar6);
    uVar9 = local_588;
    local_530 = *(undefined8 *)(param_4 + 0xd8);
    local_528 = *(undefined8 *)(param_4 + 0xd0);
    FUN_1805b1a40(local_588);
  }
  FUN_1805b0f50(&local_640,uVar10,&local_640);
  local_658 = &local_640;
  FUN_18063c260(local_518,iVar13,1,0);
  FUN_18063cba0(local_518,uVar9);
  FUN_18063cba0(local_518,uVar6);
  local_658 = (void **)CONCAT44(local_658._4_4_,4);
  FUN_180685140(*(undefined4 *)(param_4 + 8),uVar9,uVar6,param_4 + 0x18);
  FUN_18063cad0(local_518);
  local_5e8 = pace::eden::thrift::fusion::LocationGroupAttributes::vftable;
  FUN_1805bc040(&uStack_5c0);
  if (local_640 == (void *)0x0) {
    plVar11 = (longlong *)plVar11[1];
    if (plVar11 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar11 + 1;
      lVar7 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar11 + 8))(plVar11);
        LOCK();
        piVar2 = (int *)((longlong)plVar11 + 0xc);
        iVar13 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar11 + 0x10))(plVar11);
        }
      }
    }
  }
  _Memory = local_640;
  if ((0xfff < (ulonglong)(local_630 - (longlong)local_640)) &&
     (_Memory = *(void **)((longlong)local_640 + -8),
     0x1f < (ulonglong)((longlong)local_640 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807064c0 size=1925 ############

/* WARNING: Instruction at (ram,0x000180706cfb) overlaps instruction at (ram,0x000180706cfa)
    */
/* WARNING: Removing unreachable block (ram,0x000180706e4e) */
/* WARNING: Removing unreachable block (ram,0x000180706885) */
/* WARNING: Removing unreachable block (ram,0x000180706cfa) */
/* WARNING: Removing unreachable block (ram,0x000180706c41) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_1807064c0(void)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined4 *puVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  undefined8 in_R11;
  ulonglong uVar9;
  undefined8 uVar10;
  longlong lVar11;
  bool bVar12;
  int unaff_retaddr;
  undefined4 local_68 [8];
  undefined8 local_48;
  
  puVar6 = local_68;
  local_48 = 0xfffffffffffffffe;
  uVar5 = (uint)&stack0x00000000 & 0x37f;
  uVar3 = (uint)&stack0x00000000 & 0x52ff;
  iVar4 = uVar3 * uVar3 + 1;
  iVar4 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924;
  uVar3 = (int)(((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3) >>
          ((byte)((iVar4 >> 0x1d) + -7 >> 0x1f) & (byte)(iVar4 >> 0x1d) & 0x1f);
  uVar8 = (ulonglong)uVar3;
  uVar9 = (ulonglong)(0x30ff << ((byte)uVar3 & 0x1f) ^ 0x372f);
  lVar11 = (longlong)&DAT_182664ab8 +
           (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x182664ab8),8) >> 5) * -0x29;
  uVar3 = 0;
  uVar10 = 1;
  LOCK();
  iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
  *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
  UNLOCK();
  uVar2 = DAT_182664ab8;
  while (DAT_182664ab8 = uVar2, iVar4 != 0) {
    if ((3 < uVar3) && (0xf < uVar3)) {
      Sleep((uint)(0x1f < uVar3));
    }
    uVar3 = uVar3 + 1;
    LOCK();
    iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
    *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
    UNLOCK();
    uVar2 = DAT_182664ab8;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar11 * 4) = 0;
  uVar3 = (((uint)(DAT_181470678 * 0x401) >> 6 ^ DAT_181470678 * 0x401) + DAT_18147067c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470680) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470684) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470688) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18147068c) * 0x401;
  if (uVar2 == 0) {
    LOCK();
    bVar12 = DAT_182664ac0 == 0;
    if (bVar12) {
      DAT_182664ac0 = 1;
    }
    UNLOCK();
    while (!bVar12) {
      LOCK();
      bVar12 = DAT_182664ac0 == 0;
      if (bVar12) {
        DAT_182664ac0 = 1;
      }
      UNLOCK();
    }
    uVar5 = 0;
    LOCK();
    iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
    *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
    UNLOCK();
    uVar2 = DAT_182664ab8;
    while (DAT_182664ab8 = uVar2, iVar4 != 0) {
      if ((3 < uVar5) && (0xf < uVar5)) {
        Sleep((uint)(0x1f < uVar5));
      }
      uVar5 = uVar5 + 1;
      LOCK();
      iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
      *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
      UNLOCK();
      uVar2 = DAT_182664ab8;
    }
    uVar7 = 0;
    *(undefined4 *)(&DAT_18265dbd0 + lVar11 * 4) = 0;
    if (uVar2 == 0) {
      lVar1 = FUN_1811316e0(0x3f0);
      uVar2 = uVar7;
      if (lVar1 != 0) {
        uVar2 = FUN_180703480(lVar1);
      }
      FUN_1805ccdd0(FUN_1807055a0,uVar2);
      LOCK();
      iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
      *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
      UNLOCK();
      while (iVar4 != 0) {
        uVar5 = (uint)uVar7;
        if ((3 < uVar5) && (0xf < uVar5)) {
          Sleep((uint)(0x1f < uVar5));
        }
        uVar7 = (ulonglong)(uVar5 + 1);
        LOCK();
        iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
        *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
        UNLOCK();
      }
      DAT_182664ab8 = uVar2;
      *(undefined4 *)(&DAT_18265dbd0 + lVar11 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_182664ac0 = 0;
  }
  uVar3 = (DAT_181470690 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_181470694 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470698) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18147069c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706a0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706a4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706a8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706ac) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706b0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706b4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706b8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706bc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706c0) * 0x401;
  do {
    lVar1 = uVar9 + uVar8;
    lVar11 = (~(uVar8 - lVar1) + 1) - lVar1;
    uVar8 = -lVar11;
    uVar9 = lVar1 + lVar11;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_1814706c4 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706c8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706cc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706d0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706d4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706d8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706dc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706e0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706e4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706e8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706ec) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706f0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706f4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706f8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1814706fc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470700) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470704) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470708) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18147070c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470710) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470714) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470718) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18147071c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470720) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470724) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470728) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18147072c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470730) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470734) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181470738) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18147073c) * 0x401;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (_UNK_181470740 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470744) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470748) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_18147074c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470750) * 0x401;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (_UNK_181470754 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470758) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_18147075c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470760) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470764) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470768) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_18147076c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470770) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _UNK_181470774) * 0x401;
  uVar3 = uVar3 >> 6 ^ uVar3 ^ 0xfbf15be3;
  uVar3 = (uVar3 >> 0xc | uVar3 << 0x14) ^ 0x939c0b94;
  uVar3 = (uVar3 >> 0x1a | uVar3 << 6) + 0x48441eb3;
  if ((uVar3 & 0xffffff) == 0 && uVar3 == 0) {
    uVar9 = thunk_FUN_1805a9280();
    return uVar9;
  }
  iVar4 = (int)uVar9;
  do {
    *(undefined **)((longlong)puVar6 + -8) = &UNK_180706ead;
    lVar11 = (longlong)iVar4;
    func_0x000180707e82();
    *(undefined8 *)((longlong)puVar6 + -8) = uVar10;
    *(ulonglong *)((longlong)puVar6 + -0x10) = uVar9;
    *(undefined8 *)((longlong)puVar6 + -0x18) = in_R11;
    register0x00000020 =
         (BADSPACEBASE *)(~(((ulonglong)register0x00000020 ^ 0xffffffffffffffff) + 1) + 1);
    lVar11 = -lVar11;
    in_R11 = *(undefined8 *)((longlong)puVar6 + lVar11 + 0x7b8);
    uVar9 = *(ulonglong *)((longlong)puVar6 + lVar11 + 0x7c0);
    uVar10 = *(undefined8 *)((longlong)puVar6 + lVar11 + 0x7c8);
    puVar6 = (undefined4 *)((longlong)puVar6 + lVar11 + 2000);
    uVar3 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  return uVar2;
}



############ FUN_ 1806971e0 size=1692 ############

/* WARNING: Instruction at (ram,0x000180697713) overlaps instruction at (ram,0x00018069770d)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180697301) */
/* WARNING: Removing unreachable block (ram,0x0001806972a1) */
/* WARNING: Removing unreachable block (ram,0x0001806976fc) */
/* WARNING: Removing unreachable block (ram,0x00018069775b) */
/* WARNING: Removing unreachable block (ram,0x000180697732) */
/* WARNING: Removing unreachable block (ram,0x0001806976cf) */
/* WARNING: Removing unreachable block (ram,0x000180697826) */
/* WARNING: Removing unreachable block (ram,0x000180697260) */
/* WARNING: Removing unreachable block (ram,0x000180697775) */
/* WARNING: Removing unreachable block (ram,0x000180697721) */
/* WARNING: Type propagation algorithm not settling */

void FUN_1806971e0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)

{
  uint *puVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined1 uVar4;
  uint uVar5;
  char *pcVar6;
  undefined8 uVar7;
  longlong *plVar8;
  uint uVar9;
  longlong *plVar10;
  int iVar11;
  longlong lVar12;
  IMAGE_DOS_HEADER *pIVar13;
  longlong *plVar14;
  longlong *plVar15;
  longlong *plVar16;
  longlong *plVar17;
  char *pcVar18;
  longlong *plVar19;
  IMAGE_DOS_HEADER *pIVar20;
  longlong lVar21;
  ulonglong uVar22;
  longlong in_R10;
  undefined1 *puVar23;
  int unaff_retaddr;
  undefined1 local_4f8 [32];
  undefined4 local_4d8;
  undefined *local_4d0;
  undefined4 *local_4c8;
  undefined8 local_4c0;
  undefined8 local_4b0;
  undefined4 local_4a8 [2];
  undefined4 local_4a0;
  undefined4 local_49c;
  char *local_498 [8];
  undefined **local_458;
  undefined **local_450;
  undefined8 local_448;
  undefined8 uStack_440;
  undefined8 local_438;
  undefined8 uStack_430;
  undefined8 local_428;
  undefined8 uStack_420;
  undefined8 local_418;
  undefined1 local_410;
  undefined4 local_408;
  undefined2 local_404;
  longlong local_3f8;
  undefined8 local_3f0;
  longlong local_3e8;
  undefined8 local_3e0;
  undefined **local_3d8;
  undefined1 local_3d0 [752];
  undefined4 local_e0;
  undefined **local_d8;
  undefined1 local_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined4 local_98;
  undefined8 local_90;
  undefined4 local_88;
  undefined1 local_84;
  undefined8 local_80;
  undefined4 local_78;
  ulonglong local_50;
  
  plVar14 = &local_3f8;
  plVar16 = (longlong *)local_4f8;
  local_3e0 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)local_4f8;
  pcVar18 = (char *)0x0;
  local_49c = 0x410;
  local_4a0 = 0xe10;
  local_3d8 = pace::eden::thrift::authorize::DynamicCryptoCloudKeyExchangeInput::vftable;
  local_3f8 = param_4;
  local_3f0 = param_3;
  local_3e8 = param_1;
  FUN_180575180(local_3d0);
  local_e0 = 0;
  local_d8 = pace::eden::thrift::fusion::DynamicCryptoKeyExchangeInput::vftable;
  local_d0 = 0;
  local_c8 = 0;
  uStack_c0 = 0;
  local_b8 = 0;
  uStack_b0 = 0;
  local_a8 = 0;
  uStack_a0 = 0;
  local_98 = 3;
  local_90 = 0;
  local_88 = 0;
  local_84 = 0;
  local_80 = 0;
  local_78 = 0;
  local_458 = pace::eden::thrift::authorize::DynamicCryptoCloudKeyExchangeReturn::vftable;
  local_450 = pace::eden::thrift::fusion::DynamicCryptoKeyExchangeOutput::vftable;
  local_448 = 0;
  uStack_440 = 0;
  local_438 = 0;
  uStack_430 = 0;
  local_428 = 0;
  uStack_420 = 0;
  local_418 = 0;
  local_410 = 0;
  local_408 = 4;
  local_404 = 0;
  pIVar20 = &IMAGE_DOS_HEADER_180000000;
  local_4c8 = &DAT_1826dc0fc;
  local_4d0 = &DAT_1826dc200;
  local_4d8 = 0;
  local_4c0 = 0x32b7521a5fa61899;
  local_4b0 = 0x5fa61899;
  if (*(longlong *)(param_1 + 0x48) == 0) {
    local_498[0] = (char *)FUN_1811316e0(0x18);
    if (local_498[0] != (char *)0x0) {
      FUN_1805a48c0(local_498[0],
                    "dynamicCryptoCloudKeyExchange requires an encrypted channel setup with openLicenseDaemonEncryptedChannel or openQuickLicenseDaemonEncryptedChannel"
                   );
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    if (pcVar6 != (char *)0x0) {
      local_498[0] = pcVar6;
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
      pcVar18 = pcVar6;
    }
    local_4a8[0] = 0x2de8;
    local_498[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar18 + 8),local_498);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_4a8);
  }
  puVar23 = (undefined1 *)0x0;
  do {
    FUN_180697ba0();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  plVar8 = (longlong *)FUN_1805b9ea0(local_3d0,param_2);
  puVar3 = local_4c8;
LAB_180697630:
  plVar19 = (longlong *)(puVar23 + (longlong)puVar3);
  if ((pIVar20 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar12._0_1_ = pIVar20->e_magic[0], lVar12._1_1_ = pIVar20->e_magic[1],
     lVar12._2_2_ = pIVar20->e_cblp, lVar12._4_2_ = pIVar20->e_cp, lVar12._6_2_ = pIVar20->e_crlc,
     -1 < lVar12)) {
    *(undefined8 *)((longlong)plVar16 + 0x38) = 0x2621fc0;
    lVar21 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)plVar16 + 0x38);
    pIVar13 = pIVar20;
    do {
      plVar8 = (longlong *)(-*(longlong *)((longlong)plVar16 + 0x38) + 0x182621fc8 + lVar12);
      if (plVar19 < plVar8) {
        pIVar20 = pIVar13;
        if (-1 < lVar12) {
          plVar10 = (longlong *)(lVar21 + lVar12);
          plVar17 = (longlong *)((longlong)plVar19 + 4);
          if (plVar10 < plVar17) {
            *(int *)(plVar14 + 0x73) = (int)*plVar19;
            in_R10 = lVar21 - (longlong)plVar19;
            goto LAB_1806976a4;
          }
        }
        break;
      }
      pIVar20 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
      lVar12._0_2_ = pIVar13->e_cparhdr;
      lVar12._2_2_ = pIVar13->e_minalloc;
      lVar12._4_2_ = pIVar13->e_maxalloc;
      lVar12._6_2_ = pIVar13->e_ss;
      pIVar13 = pIVar20;
    } while (-1 < lVar12);
  }
  goto LAB_1806976cb;
  while (plVar10 = (longlong *)(lVar21 + lVar12), plVar10 < plVar17) {
LAB_1806976a4:
    plVar8 = (longlong *)(in_R10 + lVar12);
    *(longlong *)((longlong)(plVar14 + 0x73) + (longlong)plVar8) = *plVar10 - lVar21;
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    lVar12 = *(longlong *)pIVar13;
    plVar19 = plVar14 + 0x73;
    if (lVar12 < 0) break;
  }
LAB_1806976cb:
  plVar17 = plVar14 + 0x7f;
                    /* WARNING: Bad instruction - Truncating control flow here */
LAB_1806976e0:
  puVar1 = (uint *)((longlong)plVar16 + 0x20);
  uVar9 = 0x732c;
  plVar10 = plVar14;
LAB_1806976fe:
  *(longlong **)((longlong)plVar16 + -8) = plVar17;
  plVar14 = (longlong *)((longlong)plVar16 + -8);
code_r0x000180697720:
                    /* WARNING: Bad instruction - Truncating control flow here */
  if ((uVar9 & 0xc300) == 0) goto code_r0x000180697725;
  goto LAB_180697727;
code_r0x000180697725:
  if (-1 < (char)(uVar9 >> 8)) goto code_r0x000180697720;
LAB_180697727:
  if ((uVar9 & 0xc3) != 0) {
    uVar9 = uVar9 | *(uint *)((longlong)plVar8 + -0x77);
    if (uVar9 == 0) goto code_r0x00018069773c;
    uVar4 = in((short)plVar19);
    plVar8 = (longlong *)CONCAT71((int7)((ulonglong)plVar8 >> 8),uVar4);
    plVar16 = plVar14 + -1;
    plVar15 = plVar14 + -1;
    plVar14[-1] = (longlong)plVar10;
    cVar2 = '\x11';
    do {
      plVar10 = plVar10 + -1;
      plVar16 = plVar16 + -1;
      *plVar16 = *plVar10;
      cVar2 = cVar2 + -1;
    } while ('\0' < cVar2);
    plVar14[-0x13] = (longlong)(plVar14 + -1);
    plVar14 = plVar14 + -0x117c;
    plVar10 = plVar15;
    goto code_r0x000180697720;
  }
  if ((uVar9 & 0xc3) == 0) {
    uVar5 = *puVar1 + (int)*plVar19;
    plVar8 = (longlong *)(ulonglong)uVar5;
    *puVar1 = uVar5;
                    /* WARNING: Bad instruction - Truncating control flow here */
    plVar17 = (longlong *)*plVar14;
    plVar16 = plVar14 + 1;
    if ((in_R10 == 0x104) || ((uVar9 & 0xc3) == 0)) {
      uVar9 = ((int)*plVar17 + 1) * (int)*plVar17 & 0x80000001;
      plVar8 = (longlong *)(ulonglong)uVar9;
      plVar14 = plVar10;
      if ((int)uVar9 < 0) {
        plVar8 = (longlong *)(ulonglong)((uVar9 - 1 | 0xfffffffe) + 1);
      }
    }
    else {
      *plVar14 = (longlong)plVar10;
      plVar16 = (longlong *)((longlong)plVar14 + -0xfffe);
    }
    if ((int)plVar8 != 0) goto LAB_1806976e0;
    uVar5 = (int)plVar16[4] * 0x401 ^ (uint)((int)plVar16[4] * 0x401) >> 6;
    *(uint *)(plVar16 + 4) = uVar5;
    uVar9 = uVar5 & 0x3ff;
    iVar11 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
    uVar9 = (uint)puVar23 & 0x2ff;
    uVar9 = ((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e ^
            (uVar9 - 1) * uVar9 - 1 & 1;
    plVar8 = (longlong *)
             ((ulonglong)(~((int)(-uVar9 | uVar9) >> 0x1f & 0xffffffdfU) & 0x4e37) - 0x1c);
    puVar23 = puVar23 + (longlong)plVar8;
    if (puVar23 == (undefined1 *)0x104) {
      lVar12 = *plVar14;
      uVar22 = (ulonglong)uVar5;
      *(uint *)(plVar16 + 8) = uVar5;
      plVar16[-1] = 0x104;
      plVar16[-2] = 0x18069786f;
      FUN_18069789c();
      *(char *)plVar19 = (char)*plVar17;
      lVar21 = 0x104;
      if ((longlong)(-lVar12 ^ 0xffffffffffffffffU) < -1) {
        lVar21 = plVar16[-1];
        plVar16[-1] = lVar21 + 0x1e5;
        uVar22 = lVar21 + 0x1ef69;
      }
      plVar16[-2] = uVar22;
      plVar16[-3] = lVar21 + 0x63bb;
      plVar16[-4] = ~((lVar21 - 0x376aaU ^ 0xffffffffffffffff) + 1) + 1;
      plVar16[-5] = lVar21 + 0x7d807;
      plVar16[-6] = lVar21 + -0x210f3;
      plVar16[-7] = lVar21 + -0x36ef9;
      plVar16[-8] = lVar21 + -0x6d24e;
      plVar16[-9] = lVar21 + -0x4a9e5;
      return;
    }
    goto LAB_180697630;
  }
code_r0x00018069773c:
  plVar16 = (longlong *)((ulonglong)(plVar14 + -8) & 0xffffffff);
  plVar17 = plVar19;
  goto LAB_1806976fe;
}



############ FUN_ 18069e810 size=673 ############

void FUN_18069e810(undefined8 param_1,char *param_2,int param_3,int param_4,int param_5,
                  undefined8 *param_6)

{
  char cVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  char *pcVar6;
  char *local_res10 [2];
  undefined4 local_res20 [2];
  
  local_res10[0] = param_2;
  if (param_2 == (char *)0x0) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,"Bad LsLicensePtr (0x%16X)");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18066eb70(*(undefined8 *)(lVar2 + 8),local_res10);
    local_res20[0] = 0x2eb3;
    local_res10[0] =
         "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(puVar3[1],local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res20);
  }
  FUN_18066dbd0(param_6,1,param_6);
  puVar3 = (undefined8 *)*param_6;
  puVar5 = (undefined8 *)FUN_1808f6e20(param_2,local_res10);
  *puVar3 = *puVar5;
  if (*(longlong *)*param_6 == 0) {
    local_res10[0] = (char *)FUN_1811316e0(0x18);
    if (local_res10[0] == (char *)0x0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(local_res10[0],"Bad LsAuthorizationPtr (0x%16X)");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_res10[0] = pcVar6;
    if (pcVar6 == (char *)0x0) {
      pcVar6 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18066eb70(*(undefined8 *)(lVar2 + 8),*param_6);
    local_res20[0] = 0x2ebe;
    local_res10[0] =
         "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res20);
  }
  uVar4 = *(undefined8 *)*param_6;
  lVar2 = FUN_180870eb0(uVar4);
  FUN_18080ca00(uVar4,*(undefined1 *)(lVar2 + 0x1f7),"publisherId");
  lVar2 = FUN_180870eb0(uVar4);
  if (*(int *)(lVar2 + 0xb8) == param_4) {
    uVar4 = *(undefined8 *)*param_6;
    lVar2 = FUN_180870eb0(uVar4);
    FUN_18080ca00(uVar4,*(undefined1 *)(lVar2 + 0x1eb),"authId");
    lVar2 = FUN_180870eb0(uVar4);
    if (*(int *)(lVar2 + 0x30) == param_3) {
      if (param_5 == 0) {
        return;
      }
      uVar4 = *(undefined8 *)*param_6;
      lVar2 = FUN_180870eb0(uVar4);
      FUN_18080ca00(uVar4,*(undefined1 *)(lVar2 + 0x1ec),"authInstance");
      lVar2 = FUN_180870eb0(uVar4);
      if (*(int *)(lVar2 + 0x34) == param_5) {
        return;
      }
    }
  }
  cVar1 = FUN_18069faa0(param_1,param_3,param_4,param_5,1,param_6);
  if (cVar1 == '\0') {
    param_6[1] = *param_6;
  }
  return;
}



############ FUN_ 18069faa0 size=1062 ############

char FUN_18069faa0(undefined8 param_1,int param_2,int param_3,int param_4,char *param_5,
                  longlong *param_6)

{
  longlong *plVar1;
  char cVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  char *local_78;
  char *local_70;
  undefined8 local_68;
  longlong local_60;
  undefined8 *local_58;
  undefined1 local_50 [8];
  longlong local_48;
  undefined8 *local_40;
  
  plVar1 = param_6;
  lVar6 = (longlong)param_5;
  local_68 = 0xfffffffffffffffe;
  lVar3 = *(longlong *)(*param_6 + -8 + (longlong)param_5 * 8);
  param_6 = (longlong *)lVar3;
  if (lVar3 == 0) {
    param_5 = (char *)FUN_1811316e0(0x18);
    if (param_5 == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(param_5,"Bad LsAuthorizationPtr (0x%16X) - input parameter");
    }
    puVar4 = (undefined8 *)FUN_1811316e0(0x18);
    param_5 = (char *)puVar4;
    if (puVar4 == (undefined8 *)0x0) {
      puVar4 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
      *puVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18066eb70(*(undefined8 *)(lVar3 + 8),&param_6);
    param_6 = (longlong *)CONCAT44(param_6._4_4_,0x2f08);
    param_5 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(puVar4[1],&param_5);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&param_6);
  }
  cVar2 = FUN_1808e6a60(lVar3);
  if (cVar2 != '\0') {
    uVar9 = lVar6 + 1;
    if ((ulonglong)(plVar1[1] - *plVar1 >> 3) < uVar9) {
      FUN_18066dbd0(plVar1,uVar9,plVar1);
    }
    FUN_1808c5910(lVar3,&param_5);
    if (param_5 == (char *)0x0) {
      param_6 = (longlong *)FUN_1811316e0(0x18);
      if (param_6 == (longlong *)0x0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(param_6,"Bad LsObjectRelationVectorAuthRelation (0x%16X)");
      }
      lVar6 = FUN_1805c0260();
      FUN_18066eb70(*(undefined8 *)(lVar3 + 8),&param_5);
      param_6 = (longlong *)CONCAT44(param_6._4_4_,0x2f1d);
      local_78 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar6 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&param_6);
    }
    uVar7 = (*(longlong **)((longlong)param_5 + 8))[1] - **(longlong **)((longlong)param_5 + 8) >> 5
    ;
    uVar8 = 0;
    if (uVar7 != 0) {
      do {
        FUN_18086f6f0(param_5,&local_78,uVar8);
        if (local_78 == (char *)0x0) {
          local_60 = FUN_1811316e0(0x18);
          if (local_60 == 0) {
            lVar3 = 0;
          }
          else {
            lVar3 = FUN_1805a48c0(local_60,"Bad LsAuthRelationPtr (0x%16X)");
          }
          puVar4 = (undefined8 *)FUN_1811316e0(0x18);
          local_58 = puVar4;
          if (puVar4 == (undefined8 *)0x0) {
            puVar4 = (undefined8 *)0x0;
          }
          else {
            FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
            *puVar4 = pace::PaceLocationInfoFormatter::vftable;
          }
          FUN_18066eb70(*(undefined8 *)(lVar3 + 8),&local_78);
          param_6 = (longlong *)CONCAT44(param_6._4_4_,0x2f2a);
          local_70 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar5 = FUN_1805a21d0(puVar4[1],&local_70);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar5,&param_6);
        }
        lVar3 = *plVar1;
        puVar4 = (undefined8 *)FUN_18086c9d0(local_78,local_50);
        *(undefined8 *)(lVar3 + uVar9 * 8 + -8) = *puVar4;
        if (*(longlong *)(*plVar1 + -8 + uVar9 * 8) == 0) {
          local_48 = FUN_1811316e0(0x18);
          if (local_48 == 0) {
            lVar3 = 0;
          }
          else {
            lVar3 = FUN_1805a48c0(local_48,
                                  "Bad LsAuthorizationPtr (0x%16X) - child of an AuthRelation");
          }
          puVar4 = (undefined8 *)FUN_1811316e0(0x18);
          local_40 = puVar4;
          if (puVar4 == (undefined8 *)0x0) {
            puVar4 = (undefined8 *)0x0;
          }
          else {
            FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
            *puVar4 = pace::PaceLocationInfoFormatter::vftable;
          }
          FUN_18066eb70(*(undefined8 *)(lVar3 + 8),*plVar1 + -8 + uVar9 * 8);
          param_6 = (longlong *)CONCAT44(param_6._4_4_,0x2f33);
          local_70 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar5 = FUN_1805a21d0(puVar4[1],&local_70);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar5,&param_6);
        }
        uVar5 = *(undefined8 *)*plVar1;
        lVar3 = FUN_180870eb0(uVar5);
        FUN_18080ca00(uVar5,*(undefined1 *)(lVar3 + 0x1f7),"publisherId");
        lVar3 = FUN_180870eb0(uVar5);
        if (*(int *)(lVar3 + 0xb8) == param_3) {
          uVar5 = *(undefined8 *)*plVar1;
          lVar3 = FUN_180870eb0(uVar5);
          FUN_18080ca00(uVar5,*(undefined1 *)(lVar3 + 0x1eb),"authId");
          lVar3 = FUN_180870eb0(uVar5);
          if (*(int *)(lVar3 + 0x30) == param_2) {
            uVar5 = *(undefined8 *)*plVar1;
            lVar3 = FUN_180870eb0(uVar5);
            FUN_18080ca00(uVar5,*(undefined1 *)(lVar3 + 0x1ec),"authInstance");
            lVar3 = FUN_180870eb0(uVar5);
            if (*(int *)(lVar3 + 0x34) == param_4) {
              FUN_18066dbd0(plVar1,uVar9,plVar1);
              return '\x01';
            }
          }
        }
        lVar3 = FUN_1805fcae0();
        if ((uVar9 < (ulonglong)(longlong)*(int *)(lVar3 + 0x28)) &&
           (cVar2 = FUN_18069faa0(param_1,param_2,param_3,param_4,uVar9,plVar1), cVar2 != '\0')) {
          return cVar2;
        }
        uVar8 = uVar8 + 1;
      } while (uVar8 < uVar7);
    }
  }
  return '\0';
}



############ FUN_ 18086c290 size=172 ############

undefined8
FUN_18086c290(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180ab8940();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorAuthorization::
                             RTTI_Type_Descriptor,1);
    uVar3 = FUN_180ac5780(lVar2,param_2,param_3,uVar3,param_4);
  }
  return uVar3;
}



############ FUN_ 18086c220 size=97 ############

undefined8 * FUN_18086c220(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorAuthorization>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 18086f6f0 size=570 ############

undefined8 FUN_18086f6f0(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorauthrelation.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorauthrelation.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_180ac2880(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180ac2630(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 1808c5910 size=922 ############

/* WARNING: Instruction at (ram,0x0001808c5ca4) overlaps instruction at (ram,0x0001808c5ca1)
    */
/* WARNING: Removing unreachable block (ram,0x0001808c5d15) */
/* WARNING: Removing unreachable block (ram,0x0001808c59a0) */
/* WARNING: Removing unreachable block (ram,0x0001808c5cae) */
/* WARNING: Removing unreachable block (ram,0x0001808c5ca1) */

undefined8 FUN_1808c5910(longlong *param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  longlong lVar3;
  longlong *plVar4;
  uint uVar5;
  undefined4 uVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 uVar9;
  longlong lVar10;
  int iVar11;
  int unaff_retaddr;
  undefined1 auStack_108 [32];
  code *local_e8;
  longlong *local_e0;
  undefined1 local_d8;
  uint local_9c;
  uint local_98;
  longlong local_90;
  longlong local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong local_68;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  uVar5 = (uint)&stack0x00000000 & 0xdff;
  uVar5 = ((uVar5 + 1) * uVar5 + 7) % 0x51;
  local_98 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x431d ^ 0x432d;
  lVar10 = 0;
  if (((ulonglong)&stack0x00000000 & 0x3400) == 0) {
    uVar5 = (uint)&stack0x00000000 & 0x23f;
    iVar11 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
    iVar11 = ((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e;
  }
  else {
    iVar11 = 0;
  }
  local_9c = iVar11 + 0x5acdU ^ 0x525d;
  local_78 = param_2;
  if (param_1[0xb] == 0) {
    lVar7 = param_1[3];
    if (lVar7 == 0) {
      lVar7 = (**(code **)(*param_1 + 0x48))(param_1);
    }
    lVar3 = param_1[8];
    lVar8 = FUN_1811316e0(0x38);
    local_90 = lVar8;
    if (lVar8 != 0) {
      uVar6 = FUN_180ac0da0();
      uVar9 = FUN_180a3d1e0(lVar3,uVar6);
      local_e8 = (code *)CONCAT44(local_e8._4_4_,1);
      __RTDynamicCast(uVar9,0,&license_services::LsCachedObjectVectorBase::RTTI_Type_Descriptor,
                      &license_services::LsCachedObjectVectorAuthRelation::RTTI_Type_Descriptor);
      local_d8 = 1;
      local_e8 = FUN_1808ec7b0;
      local_e0 = param_1;
      lVar10 = FUN_18086d7d0(lVar8,param_1,lVar7 + 0x128);
    }
    local_88 = lVar10;
    FUN_1808bea80(&local_80,lVar10);
    FUN_1805ae620(&local_88,lVar10,lVar10);
    local_68 = local_88;
    lVar10 = param_1[0xb];
    param_1[0xb] = local_88;
    plVar4 = (longlong *)param_1[0xc];
    param_1[0xc] = (longlong)local_80;
    local_88 = lVar10;
    local_80 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar10 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar10 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar11 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar11 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  lVar10 = param_1[3];
  if (lVar10 == 0) {
    lVar10 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  lVar7 = param_1[3];
  if (lVar7 == 0) {
    lVar7 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  local_90 = param_1[0xb];
  if (lVar10 != DAT_182667a58) {
    FUN_180a3b7d0(local_90,lVar7 + 0x128);
    DAT_182667a58 = lVar10;
  }
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  return 0x9ae1b7d9cf2f3fb6;
}



############ FUN_ 1808bea80 size=97 ############

undefined8 * FUN_1808bea80(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorAuthRelation>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a3dd40 size=151 ############

void FUN_180a3dd40(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 local_res10;
  undefined4 local_res18 [2];
  undefined8 *local_res20;
  
  local_res10 = param_2;
  local_res18[0] = param_3;
  local_res20 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res20 == (undefined8 *)0x0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(local_res20,
                          "Query is disallowed in minimized liblicenseservices. Error detected in file %s at line %d."
                         );
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  local_res20 = puVar2;
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(lVar1 + 8),local_res18);
}



############ FUN_ 180a3df30 size=141 ############

void FUN_180a3df30(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined4 local_res10 [2];
  undefined4 local_res18;
  undefined8 local_res20;
  
  local_res10[0] = param_2;
  local_res18 = param_3;
  local_res20 = param_4;
  lVar1 = FUN_1811316e0(0x18);
  if (lVar1 == 0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(lVar1,
                          "Wrong type of LsRelation ws provided to LsCachedObjectVector<>::get(). We expected a LsRelation with Entity ID value: %ld, but saw: %ld and instanceId: %ld. Error detected in file %s at line %d."
                         );
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(lVar1 + 8),local_res10);
}



############ FUN_ 18069ff20 size=958 ############

char FUN_18069ff20(undefined8 param_1,undefined8 *param_2,longlong param_3,longlong *param_4)

{
  ulonglong uVar1;
  ulonglong uVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  char *pcVar6;
  undefined8 uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 *_Buf1;
  ulonglong _Size;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  longlong local_res18;
  char *local_res20;
  char *local_78;
  char *local_70;
  undefined8 local_68;
  longlong local_60;
  undefined8 *local_58;
  undefined1 local_50 [8];
  longlong local_48;
  undefined8 *local_40;
  
  local_68 = 0xfffffffffffffffe;
  lVar5 = *(longlong *)(*param_4 + -8 + param_3 * 8);
  local_res18 = lVar5;
  if (lVar5 == 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = FUN_1805a48c0(local_res20,"Bad LsAuthorizationPtr (0x%16X) - input parameter");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar6;
    if (pcVar6 == (char *)0x0) {
      pcVar6 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18066eb70(*(undefined8 *)(lVar5 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x2f63);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,&local_res18);
  }
  cVar3 = FUN_1808e6a60(lVar5);
  if (cVar3 != '\0') {
    uVar11 = param_3 + 1;
    if ((ulonglong)(param_4[1] - *param_4 >> 3) < uVar11) {
      FUN_18066dbd0(param_4,uVar11,param_4);
    }
    FUN_1808c5910(lVar5,&local_res20);
    if (local_res20 == (char *)0x0) {
      local_res18 = FUN_1811316e0(0x18);
      if (local_res18 == 0) {
        lVar5 = 0;
      }
      else {
        lVar5 = FUN_1805a48c0(local_res18,"Bad LsObjectRelationVectorAuthRelation (0x%16X)");
      }
      lVar8 = FUN_1805c0260();
      FUN_18066eb70(*(undefined8 *)(lVar5 + 8),&local_res20);
      local_res18 = CONCAT44(local_res18._4_4_,0x2f78);
      local_78 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar7,&local_res18);
    }
    uVar12 = (*(longlong **)(local_res20 + 8))[1] - **(longlong **)(local_res20 + 8) >> 5;
    uVar13 = 0;
    if (uVar12 != 0) {
      do {
        FUN_18086f6f0(local_res20,&local_78,uVar13);
        if (local_78 == (char *)0x0) {
          local_60 = FUN_1811316e0(0x18);
          if (local_60 == 0) {
            lVar5 = 0;
          }
          else {
            lVar5 = FUN_1805a48c0(local_60,"Bad LsAuthRelationPtr (0x%16X)");
          }
          puVar9 = (undefined8 *)FUN_1811316e0(0x18);
          local_58 = puVar9;
          if (puVar9 == (undefined8 *)0x0) {
            puVar9 = (undefined8 *)0x0;
          }
          else {
            FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
            *puVar9 = pace::PaceLocationInfoFormatter::vftable;
          }
          FUN_18066eb70(*(undefined8 *)(lVar5 + 8),&local_78);
          local_res18 = CONCAT44(local_res18._4_4_,0x2f85);
          local_70 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar7 = FUN_1805a21d0(puVar9[1],&local_70);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar7,&local_res18);
        }
        lVar5 = *param_4;
        puVar9 = (undefined8 *)FUN_18086c9d0(local_78,local_50);
        *(undefined8 *)(lVar5 + uVar11 * 8 + -8) = *puVar9;
        if (*(longlong *)(*param_4 + -8 + uVar11 * 8) == 0) {
          local_48 = FUN_1811316e0(0x18);
          if (local_48 == 0) {
            lVar5 = 0;
          }
          else {
            lVar5 = FUN_1805a48c0(local_48,
                                  "Bad LsAuthorizationPtr (0x%16X) - child of an AuthRelation");
          }
          puVar9 = (undefined8 *)FUN_1811316e0(0x18);
          local_40 = puVar9;
          if (puVar9 == (undefined8 *)0x0) {
            puVar9 = (undefined8 *)0x0;
          }
          else {
            FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
            *puVar9 = pace::PaceLocationInfoFormatter::vftable;
          }
          FUN_18066eb70(*(undefined8 *)(lVar5 + 8),*param_4 + -8 + uVar11 * 8);
          local_res18 = CONCAT44(local_res18._4_4_,0x2f8e);
          local_70 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar7 = FUN_1805a21d0(puVar9[1],&local_70);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar7,&local_res18);
        }
        puVar10 = (undefined8 *)(**(code **)(**(longlong **)(*param_4 + -8 + uVar11 * 8) + 0x40))();
        puVar9 = puVar10;
        if (0xf < (ulonglong)puVar10[3]) {
          puVar9 = (undefined8 *)*puVar10;
        }
        _Buf1 = param_2;
        if (0xf < (ulonglong)param_2[3]) {
          _Buf1 = (undefined8 *)*param_2;
        }
        uVar1 = puVar10[2];
        uVar2 = param_2[2];
        _Size = uVar2;
        if (uVar1 < uVar2) {
          _Size = uVar1;
        }
        iVar4 = memcmp(_Buf1,puVar9,_Size);
        if (((iVar4 == 0) && (uVar1 <= uVar2)) && (uVar2 <= uVar1)) {
          FUN_18066dbd0(param_4,uVar11,param_4);
          return '\x01';
        }
        lVar5 = FUN_1805fcae0();
        if ((uVar11 < (ulonglong)(longlong)*(int *)(lVar5 + 0x28)) &&
           (cVar3 = FUN_18069ff20(param_1,param_2,uVar11,param_4), cVar3 != '\0')) {
          return cVar3;
        }
        uVar13 = uVar13 + 1;
      } while (uVar13 < uVar12);
    }
  }
  return '\0';
}



############ FUN_ 1806add50 size=605 ############

void FUN_1806add50(char *param_1,char *param_2,longlong param_3)

{
  int *piVar1;
  undefined1 uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  char *local_res8;
  char *local_res10;
  char *local_res18 [2];
  
  local_res18[0] = (char *)((*(longlong *)(param_3 + 0x40) - *(longlong *)(param_3 + 0x38)) / 0x58);
  local_res8 = param_1;
  local_res10 = param_2;
  if (((((char *)0x1 < local_res18[0]) && (param_1 < local_res18[0])) && (param_2 < local_res18[0]))
     && (param_1 != param_2)) {
    lVar6 = (longlong)param_1 * 0x58;
    lVar3 = *(longlong *)(param_3 + 0x38);
    lVar7 = (longlong)param_2 * 0x58;
    local_res8._0_1_ = SUB81(param_1,0);
    uVar2 = local_res8._0_1_;
    FUN_1805d5a60(lVar3 + lVar6 + 0x28,*(undefined8 *)(lVar3 + lVar6 + 0x30),
                  *(undefined8 *)(lVar7 + 0x28 + lVar3),*(undefined8 *)(lVar7 + 0x30 + lVar3),uVar2)
    ;
    piVar1 = (int *)(*(longlong *)(param_3 + 0x38) + lVar6 + 0x44);
    *piVar1 = *piVar1 + *(int *)(lVar7 + 0x44 + *(longlong *)(param_3 + 0x38));
    lVar3 = *(longlong *)(param_3 + 0x38) + lVar6;
    lVar8 = lVar7 + *(longlong *)(param_3 + 0x38);
    if (((*(int *)(lVar3 + 0x40) != *(int *)(lVar8 + 0x40)) ||
        (*(char *)(lVar3 + 0x48) != *(char *)(lVar8 + 0x48))) ||
       ((*(char *)(lVar3 + 0x49) != *(char *)(lVar8 + 0x49) ||
        ((*(char *)(lVar3 + 0x4a) != *(char *)(lVar8 + 0x4a) ||
         (*(char *)(lVar3 + 0x4b) != *(char *)(lVar8 + 0x4b))))))) {
      *(undefined4 *)(lVar3 + 0x40) = 5;
      *(undefined1 *)(lVar6 + 0x4b + *(longlong *)(param_3 + 0x38)) = 0;
    }
    lVar3 = *(longlong *)(param_3 + 0x40);
    lVar8 = lVar7 + 0x58 + *(longlong *)(param_3 + 0x38);
    if (lVar8 != lVar3) {
      lVar6 = lVar8 + -0x48;
      do {
        *(undefined4 *)(lVar6 + -8) = *(undefined4 *)(lVar6 + 0x50);
        FUN_1805b9910(lVar6,lVar6 + 0x58);
        FUN_1805b9910(lVar6 + 0x18,lVar6 + 0x70);
        *(undefined4 *)(lVar6 + 0x30) = *(undefined4 *)(lVar6 + 0x88);
        *(undefined4 *)(lVar6 + 0x34) = *(undefined4 *)(lVar6 + 0x8c);
        *(undefined1 *)(lVar6 + 0x38) = *(undefined1 *)(lVar6 + 0x90);
        *(undefined1 *)(lVar6 + 0x39) = *(undefined1 *)(lVar6 + 0x91);
        *(undefined1 *)(lVar6 + 0x3a) = *(undefined1 *)(lVar6 + 0x92);
        *(undefined1 *)(lVar6 + 0x3b) = *(undefined1 *)(lVar6 + 0x93);
        *(undefined8 *)(lVar6 + 0x3c) = *(undefined8 *)(lVar6 + 0x94);
        *(undefined1 *)(lVar6 + 0x44) = *(undefined1 *)(lVar6 + 0x9c);
        lVar8 = lVar8 + 0x58;
        lVar6 = lVar6 + 0x58;
      } while (lVar8 != lVar3);
    }
    puVar4 = (undefined8 *)(*(longlong *)(param_3 + 0x40) + -0x58);
    (**(code **)*puVar4)(puVar4,0);
    *(longlong *)(param_3 + 0x40) = *(longlong *)(param_3 + 0x40) + -0x58;
    return;
  }
  lVar3 = FUN_1811316e0(0x18);
  if (lVar3 == 0) {
    lVar3 = 0;
  }
  else {
    lVar3 = FUN_1805a48c0(lVar3,
                          "mergeDevDataRecords bad params: numberOfRecords = %d, inFirstRecordIndex = %d, inSecondRecordIndex = %d"
                         );
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar4 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
    *puVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res18);
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res8);
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res10);
  local_res8 = (char *)CONCAT44(local_res8._4_4_,0x31f4);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar5 = FUN_1805a21d0(puVar4[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,&local_res8);
}



############ FUN_ 1806adfc0 size=791 ############

void FUN_1806adfc0(char *param_1,char *param_2,longlong param_3)

{
  int *piVar1;
  undefined1 uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  char *local_res8;
  char *local_res10;
  char *local_res18 [2];
  
  local_res18[0] = (char *)((*(longlong *)(param_3 + 0x58) - *(longlong *)(param_3 + 0x50)) / 0x88);
  local_res8 = param_1;
  local_res10 = param_2;
  if (((((char *)0x1 < local_res18[0]) && (param_1 < local_res18[0])) && (param_2 < local_res18[0]))
     && (param_1 != param_2)) {
    lVar6 = (longlong)param_1 * 0x88;
    lVar3 = *(longlong *)(param_3 + 0x50);
    lVar7 = (longlong)param_2 * 0x88;
    local_res8._0_1_ = SUB81(param_1,0);
    uVar2 = local_res8._0_1_;
    FUN_1805d5a60(lVar3 + lVar6 + 0x28,*(undefined8 *)(lVar3 + lVar6 + 0x30),
                  *(undefined8 *)(lVar7 + 0x28 + lVar3),*(undefined8 *)(lVar7 + 0x30 + lVar3),uVar2)
    ;
    lVar3 = *(longlong *)(param_3 + 0x50);
    FUN_1805d5a60(lVar3 + lVar6 + 0x40,*(undefined8 *)(lVar3 + lVar6 + 0x48),
                  *(undefined8 *)(lVar7 + 0x40 + lVar3),*(undefined8 *)(lVar7 + 0x48 + lVar3),
                  local_res8._0_1_);
    piVar1 = (int *)(*(longlong *)(param_3 + 0x50) + lVar6 + 0x5c);
    *piVar1 = *piVar1 + *(int *)(lVar7 + 0x5c + *(longlong *)(param_3 + 0x50));
    lVar3 = *(longlong *)(param_3 + 0x50) + lVar6;
    lVar8 = lVar7 + *(longlong *)(param_3 + 0x50);
    if (((((*(int *)(lVar3 + 0x60) != *(int *)(lVar8 + 0x60)) ||
          (*(int *)(lVar3 + 100) != *(int *)(lVar8 + 100))) ||
         ((*(int *)(lVar3 + 0x58) != *(int *)(lVar8 + 0x58) ||
          ((*(char *)(lVar3 + 0x70) != *(char *)(lVar8 + 0x70) ||
           (*(char *)(lVar3 + 0x71) != *(char *)(lVar8 + 0x71))))))) ||
        (*(char *)(lVar3 + 0x72) != *(char *)(lVar8 + 0x72))) ||
       ((*(char *)(lVar3 + 0x73) != *(char *)(lVar8 + 0x73) ||
        (*(char *)(lVar3 + 0x74) != *(char *)(lVar8 + 0x74))))) {
      *(undefined4 *)(lVar3 + 0x58) = 5;
      *(undefined1 *)(lVar6 + 0x74 + *(longlong *)(param_3 + 0x50)) = 0;
    }
    lVar3 = *(longlong *)(param_3 + 0x58);
    lVar8 = lVar7 + 0x88 + *(longlong *)(param_3 + 0x50);
    if (lVar8 != lVar3) {
      lVar6 = lVar8 + -0x78;
      do {
        *(undefined4 *)(lVar6 + -8) = *(undefined4 *)(lVar6 + 0x80);
        FUN_1805b9910(lVar6,lVar6 + 0x88);
        FUN_1805b9910(lVar6 + 0x18,lVar6 + 0xa0);
        FUN_1805b9910(lVar6 + 0x30,lVar6 + 0xb8);
        *(undefined4 *)(lVar6 + 0x48) = *(undefined4 *)(lVar6 + 0xd0);
        *(undefined4 *)(lVar6 + 0x4c) = *(undefined4 *)(lVar6 + 0xd4);
        *(undefined4 *)(lVar6 + 0x50) = *(undefined4 *)(lVar6 + 0xd8);
        *(undefined4 *)(lVar6 + 0x54) = *(undefined4 *)(lVar6 + 0xdc);
        *(undefined4 *)(lVar6 + 0x58) = *(undefined4 *)(lVar6 + 0xe0);
        *(undefined4 *)(lVar6 + 0x5c) = *(undefined4 *)(lVar6 + 0xe4);
        *(undefined1 *)(lVar6 + 0x60) = *(undefined1 *)(lVar6 + 0xe8);
        *(undefined1 *)(lVar6 + 0x61) = *(undefined1 *)(lVar6 + 0xe9);
        *(undefined1 *)(lVar6 + 0x62) = *(undefined1 *)(lVar6 + 0xea);
        *(undefined1 *)(lVar6 + 99) = *(undefined1 *)(lVar6 + 0xeb);
        *(undefined1 *)(lVar6 + 100) = *(undefined1 *)(lVar6 + 0xec);
        *(undefined8 *)(lVar6 + 0x65) = *(undefined8 *)(lVar6 + 0xed);
        *(undefined4 *)(lVar6 + 0x6d) = *(undefined4 *)(lVar6 + 0xf5);
        *(undefined2 *)(lVar6 + 0x71) = *(undefined2 *)(lVar6 + 0xf9);
        *(undefined1 *)(lVar6 + 0x73) = *(undefined1 *)(lVar6 + 0xfb);
        lVar8 = lVar8 + 0x88;
        lVar6 = lVar6 + 0x88;
      } while (lVar8 != lVar3);
    }
    puVar4 = (undefined8 *)(*(longlong *)(param_3 + 0x58) + -0x88);
    (**(code **)*puVar4)(puVar4,0);
    *(longlong *)(param_3 + 0x58) = *(longlong *)(param_3 + 0x58) + -0x88;
    return;
  }
  lVar3 = FUN_1811316e0(0x18);
  if (lVar3 == 0) {
    lVar3 = 0;
  }
  else {
    lVar3 = FUN_1805a48c0(lVar3,
                          "mergeSecretDataRecords bad params: numberOfRecords = %d, inFirstRecordIndex = %d, inSecondRecordIndex = %d"
                         );
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar4 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
    *puVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res18);
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res8);
  FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res10);
  local_res8 = (char *)CONCAT44(local_res8._4_4_,0x3226);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar5 = FUN_1805a21d0(puVar4[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,&local_res8);
}



############ FUN_ 1806b1af0 size=4913 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806b1af0(longlong param_1,byte *param_2,longlong *param_3,longlong param_4,
                  ulonglong param_5,char *param_6,undefined8 param_7,char param_8,char param_9,
                  char param_10,undefined1 param_11,undefined1 param_12,char param_13,char param_14,
                  char *param_15,undefined4 param_16)

{
  int iVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  char *pcVar6;
  undefined **ppuVar7;
  longlong lVar8;
  longlong lVar9;
  longlong *plVar10;
  char *pcVar11;
  undefined2 *puVar12;
  undefined2 *puVar13;
  undefined4 *puVar14;
  undefined1 uVar15;
  char cVar16;
  ushort uVar17;
  undefined8 *puVar18;
  void *pvVar19;
  undefined4 uVar20;
  char *pcVar21;
  char cVar22;
  undefined8 unaff_R14;
  ulonglong uVar23;
  undefined1 auStack_2a8 [32];
  undefined8 local_288;
  undefined1 local_280;
  char local_278;
  undefined4 local_270;
  char local_268;
  undefined1 local_267;
  char local_266;
  char local_265;
  char local_264;
  char local_263;
  char local_260;
  char local_258;
  char local_250;
  undefined1 local_248;
  undefined1 local_240;
  undefined1 local_238;
  char local_230;
  uint local_22c;
  undefined1 local_228;
  undefined4 local_220 [2];
  undefined4 local_218;
  uint local_210;
  ulonglong local_208;
  char *local_200;
  uint local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  char *local_1e0;
  byte *local_1d8;
  undefined4 local_1d0 [2];
  undefined8 local_1c8;
  char *local_1c0;
  undefined1 local_1b8 [4];
  undefined1 local_1b4 [3];
  undefined1 local_1b1;
  undefined8 *local_1b0;
  char *local_1a8;
  undefined1 local_1a0 [8];
  longlong local_198;
  longlong local_190;
  longlong local_188;
  longlong local_180;
  longlong local_178;
  char *local_170;
  undefined1 local_168 [8];
  longlong local_160;
  byte *local_158;
  longlong *local_150;
  ulonglong local_148;
  undefined8 local_140;
  longlong local_138;
  longlong local_130;
  undefined1 local_128 [8];
  undefined1 local_120 [8];
  undefined **local_118 [2];
  void *local_108;
  longlong local_f8;
  undefined1 local_68 [32];
  undefined8 local_48;
  ulonglong local_40;
  
  local_140 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_2a8;
  local_208 = param_5;
  local_148 = param_5;
  local_1e0 = param_6;
  local_1c8 = param_7;
  local_260 = param_8;
  local_258 = param_9;
  local_250 = param_10;
  local_240 = param_11;
  local_238 = param_12;
  local_218 = param_16;
  local_268 = '\x01';
  local_265 = '\0';
  uVar23 = CONCAT71((int7)((ulonglong)unaff_R14 >> 8),1);
  local_22c = (uint)uVar23;
  local_267 = 1;
  local_266 = '\0';
  local_263 = '\0';
  local_210 = (uint)param_6 & 0xffffff00;
  local_248 = 0;
  local_1f8 = (uint)param_2 & 0xffffff00;
  local_228 = 0;
  local_230 = '\0';
  local_1d8 = param_2;
  local_160 = param_1;
  local_158 = param_2;
  local_150 = param_3;
  if ((*param_2 & 7) == 0) {
    local_1b0 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_1b0 == (undefined8 *)0x0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(local_1b0,
                            "A iLok2 auth (p:0x%08X, a:0x%08X, i:0x%08X) has an invalid record type (0x%02X)"
                           );
    }
    puVar18 = (undefined8 *)0x0;
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_1b0 = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      puVar18 = puVar3;
    }
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 4);
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 8);
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 0xc);
    FUN_18066ea00(*(undefined8 *)(lVar2 + 8),param_2);
    local_1d0[0] = 0x1c85;
    local_1c0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar4 = FUN_1805a21d0(puVar18[1],&local_1c0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_1d0);
  }
  pcVar6 = (char *)0x0;
  if (param_5 < (ulonglong)((*(longlong *)(param_1 + 0x10) - *(longlong *)(param_1 + 8)) / 0x438)) {
    lVar5 = param_5 * 0x438;
    lVar2 = *(longlong *)(param_1 + 8);
    if ((*(int *)(lVar2 + 8 + lVar5) != *(int *)(param_2 + 8)) ||
       (*(int *)(lVar5 + 0xc + lVar2) != *(int *)(param_2 + 4))) {
      puVar18 = (undefined8 *)(lVar2 + 0x210 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      puVar18 = (undefined8 *)(*(longlong *)(param_1 + 8) + 0x230 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      puVar18 = (undefined8 *)(*(longlong *)(param_1 + 8) + 0x250 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      puVar18 = (undefined8 *)(*(longlong *)(param_1 + 8) + 0x270 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      puVar18 = (undefined8 *)(*(longlong *)(param_1 + 8) + 0x290 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      puVar18 = (undefined8 *)(*(longlong *)(param_1 + 8) + 0x2b0 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      puVar18 = (undefined8 *)(*(longlong *)(param_1 + 8) + 0x2d0 + lVar5);
      puVar18[2] = 0;
      if (0xf < (ulonglong)puVar18[3]) {
        puVar18 = (undefined8 *)*puVar18;
      }
      *(undefined1 *)puVar18 = 0;
      if (*(int *)(*(longlong *)(param_1 + 8) + 0x10 + lVar5) != *(int *)(param_2 + 0xc)) {
        *(undefined1 *)(*(longlong *)(param_1 + 8) + 0x42f + lVar5) = 0;
      }
    }
  }
  else {
    FUN_1805b10b0(param_1 + 8,param_5 + 1,param_1 + 8);
  }
  lVar2 = param_5 * 0x438 + *(longlong *)(param_1 + 8);
  *(undefined4 *)(lVar2 + 8) = *(undefined4 *)(param_2 + 8);
  *(undefined4 *)(lVar2 + 0xc) = *(undefined4 *)(param_2 + 4);
  *(undefined4 *)(lVar2 + 0x10) = *(undefined4 *)(param_2 + 0xc);
  *(undefined4 *)(lVar2 + 0x14) = *(undefined4 *)(param_2 + 0x10);
  uVar17 = *(ushort *)(param_2 + 2) & 0xc0;
  if ((*(ushort *)(param_2 + 2) & 0xc0) == 0) {
    *(undefined8 *)(lVar2 + 0x30) = 1;
  }
  else if (uVar17 == 0x40) {
    *(undefined8 *)(lVar2 + 0x30) = 2;
  }
  else if (uVar17 == 0x80) {
    *(undefined8 *)(lVar2 + 0x30) = 4;
  }
  else if (uVar17 == 0xc0) {
    *(undefined8 *)(lVar2 + 0x30) = 8;
  }
  local_264 = '\0';
  local_1b0 = (undefined8 *)lVar2;
  switch(param_2[1]) {
  case 1:
    *(undefined8 *)(lVar2 + 0x38) = 1;
    break;
  case 2:
    *(undefined8 *)(lVar2 + 0x38) = 2;
    break;
  case 3:
    *(undefined8 *)(lVar2 + 0x38) = 4;
    break;
  case 4:
    *(undefined8 *)(lVar2 + 0x38) = 8;
    break;
  case 5:
    *(undefined8 *)(lVar2 + 0x38) = 0x10;
    break;
  case 6:
    *(undefined8 *)(lVar2 + 0x38) = 0x20;
    break;
  case 7:
    *(undefined8 *)(lVar2 + 0x38) = 0x40;
    break;
  case 8:
    *(undefined8 *)(lVar2 + 0x38) = 0x80;
    local_264 = '\x01';
    break;
  case 9:
    *(undefined8 *)(lVar2 + 0x38) = 0x100;
    break;
  case 10:
    *(undefined8 *)(lVar2 + 0x38) = 0x200;
    break;
  case 0xb:
    *(undefined8 *)(lVar2 + 0x38) = 0x400;
    break;
  case 0xc:
    *(undefined8 *)(lVar2 + 0x38) = 0x800;
    break;
  case 0xd:
    *(undefined8 *)(lVar2 + 0x38) = 0x1000;
    break;
  case 0xe:
    *(undefined8 *)(lVar2 + 0x38) = 0x2000;
    local_264 = '\x01';
    break;
  default:
    lVar5 = FUN_1805fcae0();
    *(undefined8 *)(lVar2 + 0x38) = *(undefined8 *)(lVar5 + 0x38);
  }
  FUN_1805b1330(lVar2 + 0x18,4,lVar2 + 0x18);
  FUN_180621500(*(undefined4 *)(param_2 + 0x1c),*(undefined8 *)(lVar2 + 0x18));
  *(bool *)(lVar2 + 0x58) = (*(ushort *)(param_2 + 2) & 0x420) != 0;
  *(undefined2 *)(lVar2 + 0x425) = 0;
  *(undefined1 *)(lVar2 + 0x59) = 0;
  *(undefined8 *)(lVar2 + 0x48) = 0;
  local_1c0 = (char *)(param_3[1] - *param_3 >> 5);
  local_1a8 = pcVar6;
LAB_1806b1ff7:
  do {
    cVar16 = local_260;
    cVar22 = (char)uVar23;
    if (local_1c0 <= local_1a8) break;
    lVar5 = (longlong)local_1a8 * 0x20;
    pcVar11 = (char *)(*param_3 + lVar5);
    if (*(int *)(pcVar11 + 4) == -0x80000000) {
      cVar22 = *pcVar11;
      if (((cVar22 != -0x7f) || ((*(ushort *)(local_1d8 + 2) & 0x2000) == 0)) ||
         (*(char *)(lVar2 + 0x58) == '\0')) {
        if (((cVar22 != -0x7e) || ((*(ushort *)(local_1d8 + 2) & 0x4000) == 0)) ||
           (*(char *)(lVar2 + 0x58) == '\0')) {
          if ((cVar22 == -0x70) && ((*(ushort *)(local_1d8 + 2) & 0x400) != 0)) {
            if ((param_13 != '\0') && (*(longlong *)(lVar2 + 0x48) == 0)) {
              FUN_1806b78e0(pcVar11[0xf],lVar2);
            }
            uVar20 = local_218;
            if ((((local_1d8[2] & 0x38) == 0x38) && (local_263 == '\0')) &&
               (*(char *)(lVar2 + 0x58) != '\0')) {
              lVar8 = *param_3;
              if ((*(byte *)(lVar8 + 0xf + lVar5) & 2) != 0) {
                local_266 = '\x01';
                local_288 = CONCAT44(local_288._4_4_,local_218);
                uVar4 = FUN_18068c000(local_118,lVar5 + 8 + lVar8,local_1c8,
                                      *(undefined4 *)(lVar8 + 0x1c + lVar5));
                FUN_1805ba930(lVar2 + 0x60,uVar4);
                FUN_1805b9270(local_118);
                *(undefined1 *)(lVar2 + 0x425) = 1;
                if (*(char *)(lVar2 + 0xfb) == '\0') {
                  local_268 = '\0';
                  local_22c = (uint)uVar23 & 0xff;
                  if (*(longlong *)(lVar2 + 200) == 0) {
                    local_22c = 0;
                  }
                  local_267 = (undefined1)local_22c;
                  uVar20 = local_218;
                }
              }
              cVar16 = local_258;
              if ((*(byte *)(*param_3 + 0xf + lVar5) & 1) != 0) {
                local_266 = '\x01';
                local_48 = *(undefined8 *)(*param_3 + 8 + lVar5);
                if ((local_258 != '\0') && (local_250 == '\0')) {
                  iVar1 = FUN_18061f8c0(&local_48);
                  FUN_180621500(iVar1 + -1,&local_48);
                }
                local_288 = CONCAT44(local_288._4_4_,uVar20);
                uVar4 = FUN_180687540(local_118,&local_48,cVar16,
                                      *(undefined4 *)(lVar5 + 0x1c + *param_3));
                FUN_1805ba400(lVar2 + 0x108,uVar4);
                local_118[0] = pace::eden::thrift::pub::CountLimitRecord::vftable;
                if (local_108 != (void *)0x0) {
                  pvVar19 = local_108;
                  if ((0xfff < (ulonglong)(local_f8 - (longlong)local_108)) &&
                     (pvVar19 = *(void **)((longlong)local_108 + -8),
                     0x1f < (ulonglong)((longlong)local_108 + (-8 - (longlong)pvVar19)))) {
                    /* WARNING: Subroutine does not return */
                    _invalid_parameter_noinfo_noreturn();
                  }
                    /* WARNING: Subroutine does not return */
                  free(pvVar19);
                }
                *(undefined1 *)(lVar2 + 0x426) = 1;
                if (*(char *)(lVar2 + 0x152) == '\0') {
                  local_268 = '\0';
                  local_22c = 0x81bb1b00;
                  local_267 = 0;
                }
              }
              *(undefined1 *)(lVar2 + 0x59) = 1;
              local_1a8 = local_1a8 + 1;
              uVar23 = (ulonglong)local_22c;
              goto LAB_1806b1ff7;
            }
          }
LAB_1806b2b44:
          local_1a8 = local_1a8 + 1;
          uVar23 = (ulonglong)local_22c;
          goto LAB_1806b1ff7;
        }
        if (local_266 != '\0') {
          local_268 = '\x01';
          local_22c = 1;
          local_267 = 1;
          local_266 = '\0';
          *(undefined1 *)(lVar2 + 0x425) = 0;
          *(undefined1 *)(lVar2 + 0x59) = 0;
        }
        local_263 = '\x01';
        local_270 = local_218;
        local_278 = local_260;
        local_280 = local_238;
        local_288 = CONCAT71(local_288._1_7_,local_240);
        uVar4 = FUN_180687800(local_118,*param_3 + lVar5,local_258,local_250);
        FUN_1805ba400(lVar2 + 0x108,uVar4);
        ppuVar7 = pace::eden::thrift::pub::CountLimitRecord::vftable;
        local_118[0] = pace::eden::thrift::pub::CountLimitRecord::vftable;
        if (local_108 != (void *)0x0) {
          pvVar19 = local_108;
          if ((0xfff < (ulonglong)(local_f8 - (longlong)local_108)) &&
             (pvVar19 = *(void **)((longlong)local_108 + -8),
             0x1f < (ulonglong)((longlong)local_108 + (-8 - (longlong)pvVar19)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar19);
        }
        if ((*(char *)(lVar2 + 0x130) != '\0') &&
           (ppuVar7 = (undefined **)*param_3, (*(byte *)((longlong)ppuVar7 + lVar5 + 2) & 0x11) == 0
           )) {
          if (cVar16 != '\0') {
            local_130 = FUN_1811316e0(0x18);
            if (local_130 != 0) {
              pcVar6 = (char *)FUN_1805a48c0(local_130,
                                             "The auth count limit does not have both the ILok2EnforcesExpiration bit and AutoAdvanceForCryptoCommands bit set! Flags: %d"
                                            );
            }
            lVar2 = FUN_1805c0260();
            FUN_18063bb40(*(undefined8 *)(pcVar6 + 8),*param_3 + 2 + lVar5);
            local_220[0] = 0x1d8d;
            local_200 = 
            "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
            ;
            uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar2 + 8),&local_200);
                    /* WARNING: Subroutine does not return */
            FUN_1805b20d0(uVar4,local_220);
          }
          *(undefined1 *)(lVar2 + 0x152) = 0;
        }
        *(undefined1 *)(lVar2 + 0x426) = 1;
        if (*(char *)(lVar2 + 0x152) == '\0') {
          local_22c = (uint)ppuVar7 & 0xffffff00;
          local_268 = '\0';
          local_267 = 0;
        }
        if ((*(char *)(lVar2 + 0x130) == '\0') &&
           ((*(char *)(lVar2 + 0x140) == '\0' || (*(char *)(lVar2 + 0x151) != '\0')))) {
          *(undefined1 *)(lVar2 + 0x59) = 0;
          local_1a8 = local_1a8 + 1;
          uVar23 = (ulonglong)local_22c;
        }
        else {
          *(undefined1 *)(lVar2 + 0x59) = 1;
          local_1a8 = local_1a8 + 1;
          uVar23 = (ulonglong)local_22c;
        }
        goto LAB_1806b1ff7;
      }
      if (local_266 != '\0') {
        local_268 = '\x01';
        local_22c = 1;
        local_267 = 1;
        local_266 = '\0';
        *(undefined1 *)(lVar2 + 0x426) = 0;
        *(undefined1 *)(lVar2 + 0x59) = 0;
      }
      local_263 = '\x01';
      local_288 = CONCAT44(local_288._4_4_,local_218);
      uVar4 = FUN_18068c5a0(local_118,*param_3 + lVar5,local_1c8,local_260);
      FUN_1805ba930(lVar2 + 0x60,uVar4);
      FUN_1805b9270(local_118);
      if (local_264 != '\0') {
        *(uint *)(lVar2 + 0xf0) = (uint)*(byte *)(*param_3 + 1 + lVar5);
        *(undefined1 *)(lVar2 + 0x102) = 1;
        *(uint *)(lVar2 + 0xf4) = (uint)*(byte *)(*param_3 + 3 + lVar5);
        *(undefined1 *)(lVar2 + 0x103) = 1;
        FUN_1806873c0(lVar2 + 0x60,local_1c8);
      }
      lVar8 = *param_3;
      if ((*(byte *)(lVar8 + 2 + lVar5) & 1) == 0) {
        if (cVar16 != '\0') {
          local_138 = FUN_1811316e0(0x18);
          if (local_138 != 0) {
            pcVar6 = (char *)FUN_1805a48c0(local_138,
                                           "The auth time limit does not have the ILok2EnforcesExpiration bit set!  Flags: %d"
                                          );
          }
          lVar2 = FUN_1805c0260();
          FUN_18063bb40(*(undefined8 *)(pcVar6 + 8),*param_3 + 2 + lVar5);
          local_220[0] = 0x1d49;
          local_200 = 
          "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
          ;
          uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar2 + 8),&local_200);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar4,local_220);
        }
        *(undefined1 *)(lVar2 + 0xfb) = 0;
        *(undefined8 *)(lVar2 + 200) = 0;
      }
      *(undefined1 *)(lVar2 + 0x425) = 1;
      if (*(char *)(lVar2 + 0xfb) == '\0') {
        local_268 = '\0';
        if (*(longlong *)(lVar2 + 200) == 0) {
          local_267 = 0;
          *(bool *)(lVar2 + 0x59) = *(longlong *)(lVar2 + 0xb8) != 0;
          local_1a8 = local_1a8 + 1;
          uVar23 = 0;
          local_22c = (uint)lVar8 & 0xffffff00;
          goto LAB_1806b1ff7;
        }
        local_210 = local_210 & 0xff;
        if (*(char *)(lVar2 + 0xfa) != '\0') {
          local_210 = 1;
        }
        local_248 = (undefined1)local_210;
      }
      *(bool *)(lVar2 + 0x59) = *(longlong *)(lVar2 + 0xb8) != 0;
      local_1a8 = local_1a8 + 1;
      uVar23 = (ulonglong)local_22c;
      goto LAB_1806b1ff7;
    }
    if (((param_13 == '\0') ||
        (lVar8 = FUN_1805fcae0(), *(int *)(pcVar11 + 4) != *(int *)(lVar8 + 0x74))) ||
       (*(char *)(lVar5 + *param_3) != -0x7c)) {
      lVar8 = *param_3;
      lVar9 = FUN_1805fcae0();
      if (((*(int *)(lVar8 + 4 + lVar5) == *(int *)(lVar9 + 0x60)) &&
          (*(char *)(*param_3 + lVar5) == -0x7f)) && (*(char *)(lVar2 + 0x58) != '\0')) {
        lVar9 = local_208 * 0x438;
        *(undefined4 *)(lVar9 + 0x170 + *(longlong *)(param_1 + 8)) =
             *(undefined4 *)(*param_3 + 4 + lVar5);
        lVar8 = lVar9 + 0x178 + *(longlong *)(param_1 + 8);
        FUN_1805b1330(lVar8,4,lVar8);
        FUN_180621500(*(undefined4 *)(*param_3 + 0x1c + lVar5),
                      *(undefined8 *)(*(longlong *)(param_1 + 8) + 0x178 + lVar9));
        local_200 = (char *)0x7ffffffffffffffe;
        local_220[0] = 0xfffffffe;
        FUN_1805b41e0(&local_1f0,local_220,&local_200);
        if (*(int *)(*param_3 + 8 + lVar5) != 0) {
          plVar10 = (longlong *)FUN_18076a230(local_128,*param_3 + 8 + lVar5);
          local_1f0 = *plVar10;
          FUN_180663c70(&local_1f0,lVar9 + 400 + *(longlong *)(param_1 + 8));
        }
        FUN_1805b6b80(&local_1e8,0);
        if (*(int *)(*param_3 + 0x10 + lVar5) != 0) {
          plVar10 = (longlong *)FUN_18076a230(local_120,*param_3 + 0x10 + lVar5);
          local_1e8 = *plVar10;
          FUN_180663c70(&local_1e8,lVar9 + 0x1b0 + *(longlong *)(param_1 + 8));
        }
        *(undefined8 *)(*(longlong *)(param_1 + 8) + 0x1d0 + lVar9) = 0;
        *(undefined1 *)(*(longlong *)(param_1 + 8) + 0x202 + lVar9) = 0;
        *(undefined1 *)(*(longlong *)(param_1 + 8) + 0x203 + lVar9) = 0;
        FUN_1805b6b80(&local_198,0);
        if (local_1f0 == local_198) {
          FUN_1805b6b80(&local_188,0);
          if ((local_1e8 == local_188) || (uVar15 = 1, *(int *)(*param_3 + 8 + lVar5) != 0))
          goto LAB_1806b2914;
        }
        else if ((*(int *)(*param_3 + 0x10 + lVar5) == 0) ||
                ((FUN_1805b6b80(&local_190,0), local_1e8 != local_190 && (local_1f0 < local_1e8))))
        {
          uVar15 = 1;
        }
        else {
LAB_1806b2914:
          uVar15 = 0;
        }
        *(undefined1 *)(lVar9 + 0x203 + *(longlong *)(param_1 + 8)) = uVar15;
        if (param_15 != (char *)0x0) {
          FUN_1805b6b80(&local_180,0);
          pcVar11 = pcVar6;
          if (local_1f0 != local_180) {
            pcVar11 = (char *)FUN_18065ffa0(&local_1f0);
          }
          pcVar21 = (char *)0xffffffffffffffff;
          FUN_1805b6b80(&local_178,0);
          if (local_1e8 != local_178) {
            pcVar21 = (char *)FUN_18065ffa0(&local_1e8);
          }
          if ((param_15 < pcVar11) || (pcVar21 < param_15)) {
            *(undefined1 *)(*(longlong *)(param_1 + 8) + 0x203 + lVar9) = 0;
          }
          if (*(char *)(*(longlong *)(param_1 + 8) + 0x203 + lVar9) == '\0') {
            local_22c = (uint)*(longlong *)(param_1 + 8) & 0xffffff00;
            local_268 = '\0';
            local_267 = 0;
          }
          local_288 = 0;
          FUN_18065a5a0(&local_170,0,(ulonglong)param_15 / 0x3c & 0xffffffff,
                        (int)param_15 + (int)((ulonglong)param_15 / 0x3c) * -0x3c);
          local_200 = local_170;
          puVar12 = (undefined2 *)FUN_180677f40(local_1b8,1);
          puVar13 = (undefined2 *)FUN_18065b100(local_1d0,0x7b2);
          puVar14 = (undefined4 *)FUN_1805b6990(local_1a0,*puVar13,*puVar12,1);
          local_220[0] = *puVar14;
          FUN_1805b41e0(local_168,local_220,&local_200);
          uVar4 = FUN_180662d40(local_68,local_168);
          FUN_1805a5a40(*(longlong *)(param_1 + 8) + 0x1d8 + lVar9,uVar4);
          FUN_180485450(local_68);
          *(undefined1 *)(*(longlong *)(param_1 + 8) + 0x209 + lVar9) = 1;
        }
        *(undefined1 *)(local_208 * 0x438 + 0x427 + *(longlong *)(param_1 + 8)) = 1;
        local_230 = '\x01';
      }
      goto LAB_1806b2b44;
    }
    *(undefined8 *)(lVar2 + 0x48) = 0;
    FUN_180621500(*(undefined4 *)(*param_3 + 0xc + lVar5),local_1b4);
    FUN_1806b78e0(local_1b1,lVar2);
    local_1a8 = local_1a8 + 1;
    uVar23 = (ulonglong)local_22c;
  } while( true );
  if ((*(char *)(lVar2 + 0x58) != '\0') &&
     ((((*(ushort *)(local_1d8 + 2) & 0x2000) != 0 && (*(char *)(lVar2 + 0x425) == '\0')) ||
      (((*(ushort *)(local_1d8 + 2) & 0x4000) != 0 && (*(char *)(lVar2 + 0x426) == '\0')))))) {
    local_268 = '\0';
    cVar22 = '\0';
  }
  if (param_13 != '\0') {
    lVar5 = *(longlong *)(lVar2 + 0x48);
    if (lVar5 == 0) {
      lVar5 = 0x55000;
    }
    *(longlong *)(lVar2 + 0x48) = lVar5;
  }
  if (*(char *)(lVar2 + 0x425) == '\0') {
    if (*(char *)(lVar2 + 0x426) == '\0') {
      *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 1;
      *(undefined4 *)(lVar2 + 0x50) = 100;
    }
    else {
      *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 2;
      *(undefined4 *)(lVar2 + 0x50) = 0x3c;
    }
  }
  else if (*(char *)(lVar2 + 0x426) == '\0') {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 4;
    *(undefined4 *)(lVar2 + 0x50) = 0x50;
  }
  else {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 8;
    *(undefined4 *)(lVar2 + 0x50) = 0x28;
  }
  if ((0x2e < *(int *)(lVar2 + 0x50)) && (local_230 != '\0')) {
    *(undefined4 *)(lVar2 + 0x50) = 0x2e;
  }
  uVar17 = *(ushort *)(local_1d8 + 2);
  cVar16 = local_268;
  if ((uVar17 & 0x8000) != 0) {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x100000;
    local_268 = local_265;
    goto LAB_1806b2ced;
  }
  if (((uVar17 & 0x400) != 0) || ((uVar17 & 8) == 0)) {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x100000;
    local_268 = local_265;
    if (param_14 != '\0') {
      *(undefined4 *)(lVar2 + 0x50) = 0;
      local_268 = '\0';
      cVar16 = '\0';
    }
    goto LAB_1806b2ced;
  }
  *(undefined1 *)(lVar2 + 0x59) = 0;
  *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x200000;
  if ((param_4 == 0) || (*(int *)(param_4 + 0x1c) == -1)) {
    if (*(char *)(param_1 + 0x2e8) == '\0') goto LAB_1806b2c8b;
  }
  else {
    *(uint *)(param_1 + 0x268) = (uint)*(ushort *)(param_4 + 10);
    *(uint *)(param_1 + 0x26c) = (uint)*(ushort *)(param_4 + 8);
LAB_1806b2c8b:
    *(int *)(param_1 + 0x270) = (int)local_208;
  }
  *(undefined1 *)(param_1 + 0x2e8) = 1;
  if (param_14 == '\0') {
    *(undefined4 *)(lVar2 + 0x50) = 0;
    cVar16 = '\0';
  }
  else {
    *(undefined4 *)(lVar2 + 0x50) = 0x19;
    local_268 = local_265;
  }
LAB_1806b2ced:
  if (((*(ushort *)(local_1d8 + 2) & 0x1000) == 0) && (*(int *)(local_1d8 + 8) != 0x4801f777)) {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x20;
  }
  else {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x10;
  }
  if ((*(ushort *)(local_1d8 + 2) & 0x8000) == 0) {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x40;
  }
  else {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x80;
  }
  if ((*(ushort *)(local_1d8 + 2) & 0x200) == 0) {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x100;
  }
  else {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x200;
  }
  if ((*(ushort *)(local_1d8 + 2) & 0x800) == 0) {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x800;
  }
  else {
    *(ulonglong *)(lVar2 + 0x48) = *(ulonglong *)(lVar2 + 0x48) | 0x400;
  }
  *(undefined4 *)(lVar2 + 0x54) = 1;
  if (*local_1d8 == 4) {
    *(undefined8 *)(lVar2 + 0x40) = 2;
    *(undefined4 *)(lVar2 + 0x50) = 0;
    *(undefined1 *)(lVar2 + 0x59) = 0;
    *(undefined2 *)(param_1 + 0x20) = 0;
    *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(lVar2 + 0x50);
  }
  else if (cVar16 == '\0') {
    cVar16 = (char)local_1f8;
    if ((*(char *)(lVar2 + 0x425) == '\0') || (cVar22 == '\0')) {
      if (local_268 == '\0') {
        *(undefined8 *)(lVar2 + 0x40) = 4;
      }
      else {
        *(undefined8 *)(lVar2 + 0x40) = 1;
      }
      *(undefined4 *)(lVar2 + 0x50) = 0;
    }
    else {
      *(undefined8 *)(lVar2 + 0x40) = 8;
      *(undefined4 *)(lVar2 + 0x50) = 1;
      if ((char)local_210 != '\0') {
        cVar16 = '\x01';
      }
      *(undefined1 *)(lVar2 + 0x59) = 0;
    }
    if (((*(ushort *)(local_1d8 + 2) & 0x8000) != 0) ||
       ((*local_1e0 == '\0' && (*(char *)(lVar2 + 0x58) != '\0')))) {
      if (*(int *)(lVar2 + 0x50) < *(int *)(param_1 + 0x24)) {
        *(int *)(param_1 + 0x24) = *(int *)(lVar2 + 0x50);
      }
      *(undefined1 *)(param_1 + 0x20) = 0;
      if (cVar16 == '\0') {
        *(undefined1 *)(param_1 + 0x21) = 0;
      }
    }
  }
  else {
    *(undefined8 *)(lVar2 + 0x40) = 1;
    if (((((*(ushort *)(local_1d8 + 2) & 0x8000) != 0) && (*(int *)(local_1d8 + 8) != 0x4801f777))
        || ((*local_1e0 == '\0' && (*(char *)(lVar2 + 0x58) != '\0')))) &&
       (*(int *)(lVar2 + 0x50) < *(int *)(param_1 + 0x24))) {
      *(int *)(param_1 + 0x24) = *(int *)(lVar2 + 0x50);
    }
  }
  if ((*(longlong *)(lVar2 + 0x30) == 2) &&
     (((*(char *)(lVar2 + 0x58) == '\0' || ((*(byte *)(lVar2 + 0x48) & 0x80) != 0)) ||
      ((local_208 != 0 && (*local_1e0 == '\0')))))) {
    *(undefined8 *)(lVar2 + 0x40) = 0x20;
    *(undefined4 *)(lVar2 + 0x50) = 0;
    *(undefined1 *)(lVar2 + 0x59) = 0;
    *(undefined2 *)(param_1 + 0x20) = 0;
    *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(lVar2 + 0x50);
  }
  if (*(char *)(lVar2 + 0x58) != '\0') {
    *local_1e0 = '\x01';
  }
}



############ FUN_ 1806b2f10 size=8710 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806b2f10(longlong param_1,longlong *param_2,longlong param_3,undefined8 ****param_4,
                  char *param_5,longlong param_6,char param_7,char param_8,longlong param_9,
                  char param_10,char *param_11,uint param_12)

{
  void *_Src;
  undefined1 uVar1;
  undefined1 uVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  char *pcVar8;
  char *pcVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  undefined2 *puVar12;
  undefined2 *puVar13;
  undefined4 *puVar14;
  byte *pbVar15;
  int *piVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  uint *puVar19;
  undefined8 ****ppppuVar20;
  void *pvVar21;
  longlong lVar22;
  char **ppcVar23;
  undefined8 uVar24;
  ulonglong uVar25;
  char *pcVar26;
  longlong lVar27;
  char cVar28;
  ulonglong _Size;
  bool bVar29;
  longlong *local_res10;
  longlong local_res18 [2];
  undefined1 auStack_2f8 [32];
  undefined1 *local_2d8;
  undefined1 *local_2d0;
  longlong local_2c8;
  uint local_2c0;
  char local_2b8;
  char local_2b7;
  char local_2b6;
  undefined1 local_2b5 [5];
  char *local_2b0;
  char *local_2a8;
  undefined1 local_2a0;
  undefined1 local_29f [7];
  undefined4 local_298 [2];
  char *local_290;
  char local_288;
  char local_287;
  undefined4 local_280 [2];
  uint local_278;
  char *local_270;
  undefined8 ***local_268;
  char *local_260;
  uint local_258;
  longlong local_250;
  longlong local_248;
  longlong local_240;
  undefined8 ***local_238;
  char *local_230;
  longlong local_228;
  longlong local_220;
  undefined1 local_218 [8];
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  longlong local_1e0;
  char *local_1d8;
  undefined1 local_1d0 [8];
  longlong local_1c8;
  undefined8 local_1c0;
  undefined1 local_1b8 [8];
  longlong local_1b0;
  longlong local_1a8;
  undefined8 ***local_1a0;
  longlong local_198;
  size_t local_190;
  ulonglong local_188;
  undefined8 ***local_180 [2];
  char *local_170;
  ulonglong local_168;
  undefined8 ***local_160 [2];
  char *local_150;
  ulonglong local_148;
  undefined8 ***local_140 [2];
  size_t local_130;
  ulonglong local_128;
  undefined1 local_120 [40];
  undefined **local_f8 [2];
  undefined1 local_e8 [160];
  ulonglong local_48;
  
  local_1c0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2f8;
  local_270 = param_5;
  local_248 = param_6;
  local_240 = param_9;
  local_258 = param_12;
  local_2b7 = '\x01';
  local_2a0 = 1;
  local_2b6 = '\x01';
  local_2b5[0] = 1;
  local_287 = '\0';
  local_278 = param_12 & 0xffffff00;
  local_29f[0] = 0;
  local_288 = '\0';
  local_268 = param_4;
  local_res10 = param_2;
  local_res18[0] = param_3;
  local_250 = param_1;
  local_238 = param_4;
  local_1c8 = param_1;
  if (param_3 == 0) {
    local_230 = (char *)FUN_1811316e0(0x18);
    if (local_230 == (char *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = FUN_1805a48c0(local_230,"Bad LsLicensePtr (0x%16X)");
    }
    puVar11 = (undefined8 *)0x0;
    puVar6 = (undefined8 *)FUN_1811316e0(0x18);
    local_230 = (char *)puVar6;
    if (puVar6 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar6,"|__FILE__|%s|__LINE__|%d");
      *puVar6 = pace::PaceLocationInfoFormatter::vftable;
      puVar11 = puVar6;
    }
    FUN_18066eb70(*(undefined8 *)(lVar5 + 8),local_res18);
    local_280[0] = 0x1fd7;
    local_2b0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar7 = FUN_1805a21d0(puVar11[1],&local_2b0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_280);
  }
  pcVar26 = (char *)0x0;
  if (param_2 == (longlong *)0x0) {
    local_230 = (char *)FUN_1811316e0(0x18);
    pcVar8 = pcVar26;
    if (local_230 != (char *)0x0) {
      pcVar8 = (char *)FUN_1805a48c0(local_230,"Bad LsAuthorizationPtr (0x%16X)");
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    local_230 = pcVar9;
    if (pcVar9 != (char *)0x0) {
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
      pcVar26 = pcVar9;
    }
    FUN_18066eb70(*(undefined8 *)(pcVar8 + 8),&local_res10);
    local_280[0] = 0x1fde;
    local_2b0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar26 + 8),&local_2b0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_280);
  }
  plVar10 = (longlong *)(param_1 + 8);
  if (param_4 < (undefined8 ****)((*(longlong *)(param_1 + 0x10) - *plVar10) / 0x438)) {
    lVar22 = (longlong)param_4 * 0x438;
    lVar5 = *plVar10;
    lVar27 = FUN_180870eb0(param_2);
    FUN_18080ca00(param_2,*(undefined1 *)(lVar27 + 0x1eb),"authId");
    lVar27 = FUN_180870eb0(param_2);
    if (*(int *)(lVar5 + 8 + lVar22) == *(int *)(lVar27 + 0x30)) {
      lVar5 = *plVar10;
      lVar27 = FUN_180870eb0(param_2);
      FUN_18080ca00(param_2,*(undefined1 *)(lVar27 + 0x1f7),"publisherId");
      lVar27 = FUN_180870eb0(param_2);
      if (*(int *)(lVar5 + 0xc + lVar22) == *(int *)(lVar27 + 0xb8)) goto LAB_1806b3337;
    }
    puVar11 = (undefined8 *)(*plVar10 + 0x210 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    puVar11 = (undefined8 *)(*plVar10 + 0x230 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    puVar11 = (undefined8 *)(*plVar10 + 0x250 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    puVar11 = (undefined8 *)(*plVar10 + 0x270 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    puVar11 = (undefined8 *)(*plVar10 + 0x290 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    puVar11 = (undefined8 *)(*plVar10 + 0x2b0 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    puVar11 = (undefined8 *)(*plVar10 + 0x2d0 + lVar22);
    puVar11[2] = 0;
    if (0xf < (ulonglong)puVar11[3]) {
      puVar11 = (undefined8 *)*puVar11;
    }
    *(undefined1 *)puVar11 = 0;
    lVar5 = *plVar10;
    lVar27 = FUN_180870eb0(param_2);
    FUN_18080ca00(param_2,*(undefined1 *)(lVar27 + 0x1ec),"authInstance");
    lVar27 = FUN_180870eb0(param_2);
    if (*(int *)(lVar5 + 0x10 + lVar22) != *(int *)(lVar27 + 0x34)) {
      *(undefined1 *)(lVar22 + 0x42f + *plVar10) = 0;
    }
  }
  else {
    FUN_1805b10b0(plVar10,(longlong)param_4 + 1,plVar10);
  }
LAB_1806b3337:
  lVar27 = (longlong)param_4 * 0x438 + *plVar10;
  local_230 = (char *)lVar27;
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1eb),"authId");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(lVar27 + 8) = *(undefined4 *)(lVar5 + 0x30);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1f7),"publisherId");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(lVar27 + 0xc) = *(undefined4 *)(lVar5 + 0xb8);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1ec),"authInstance");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(lVar27 + 0x10) = *(undefined4 *)(lVar5 + 0x34);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1f8),"skuId");
  lVar5 = FUN_180870eb0(param_2);
  *(undefined4 *)(lVar27 + 0x14) = *(undefined4 *)(lVar5 + 0xbc);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1ed),"authType");
  lVar5 = FUN_180870eb0(param_2);
  FUN_1805a4070(local_160,lVar5 + 0x38);
  lVar5 = FUN_1807064c0();
  pvVar21 = (void *)(lVar5 + 0x260);
  if (0xf < *(ulonglong *)(lVar5 + 0x278)) {
    pvVar21 = *(void **)(lVar5 + 0x260);
  }
  ppppuVar20 = local_160;
  if (0xf < local_148) {
    ppppuVar20 = (undefined8 ****)local_160[0];
  }
  pcVar8 = *(char **)(lVar5 + 0x270);
  local_2b0 = pcVar8;
  local_2a8 = local_150;
  ppcVar23 = &local_2b0;
  if (local_150 <= pcVar8) {
    ppcVar23 = &local_2a8;
  }
  iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
  if (((iVar4 == 0) && (pcVar8 <= local_150)) && (local_150 == pcVar8)) {
    *(undefined8 *)(lVar27 + 0x30) = 8;
  }
  else {
    lVar5 = FUN_1807064c0();
    pvVar21 = (void *)(lVar5 + 0x280);
    if (0xf < *(ulonglong *)(lVar5 + 0x298)) {
      pvVar21 = *(void **)(lVar5 + 0x280);
    }
    ppppuVar20 = local_160;
    if (0xf < local_148) {
      ppppuVar20 = (undefined8 ****)local_160[0];
    }
    pcVar8 = *(char **)(lVar5 + 0x290);
    local_2b0 = pcVar8;
    local_2a8 = local_150;
    ppcVar23 = &local_2b0;
    if (local_150 <= pcVar8) {
      ppcVar23 = &local_2a8;
    }
    iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
    if (((iVar4 == 0) && (pcVar8 <= local_150)) && (local_150 == pcVar8)) {
      *(undefined8 *)(lVar27 + 0x30) = 4;
    }
    else {
      lVar5 = FUN_1807064c0();
      pvVar21 = (void *)(lVar5 + 0x2c0);
      if (0xf < *(ulonglong *)(lVar5 + 0x2d8)) {
        pvVar21 = *(void **)(lVar5 + 0x2c0);
      }
      ppppuVar20 = local_160;
      if (0xf < local_148) {
        ppppuVar20 = (undefined8 ****)local_160[0];
      }
      pcVar8 = *(char **)(lVar5 + 0x2d0);
      local_2b0 = pcVar8;
      local_2a8 = local_150;
      ppcVar23 = &local_2b0;
      if (local_150 <= pcVar8) {
        ppcVar23 = &local_2a8;
      }
      iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
      if (((iVar4 == 0) && (pcVar8 <= local_150)) && (local_150 == pcVar8)) {
        *(undefined8 *)(lVar27 + 0x30) = 1;
      }
      else {
        lVar5 = FUN_1807064c0();
        pvVar21 = (void *)(lVar5 + 0x2a0);
        if (0xf < *(ulonglong *)(lVar5 + 0x2b8)) {
          pvVar21 = *(void **)(lVar5 + 0x2a0);
        }
        ppppuVar20 = local_160;
        if (0xf < local_148) {
          ppppuVar20 = (undefined8 ****)local_160[0];
        }
        pcVar8 = *(char **)(lVar5 + 0x2b0);
        local_2b0 = pcVar8;
        local_2a8 = local_150;
        ppcVar23 = &local_2b0;
        if (local_150 <= pcVar8) {
          ppcVar23 = &local_2a8;
        }
        iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
        if (((iVar4 == 0) && (pcVar8 <= local_150)) && (local_150 == pcVar8)) {
          *(undefined8 *)(lVar27 + 0x30) = 2;
        }
        else {
          lVar5 = FUN_1805fcae0();
          *(undefined8 *)(lVar27 + 0x30) = *(undefined8 *)(lVar5 + 0x38);
        }
      }
    }
  }
  local_2b8 = '\0';
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1f9),"subtype");
  lVar5 = FUN_180870eb0(param_2);
  FUN_1805a4070(local_180,lVar5 + 0xc0);
  lVar5 = FUN_1807064c0();
  pvVar21 = (void *)(lVar5 + 0x80);
  if (0xf < *(ulonglong *)(lVar5 + 0x98)) {
    pvVar21 = *(void **)(lVar5 + 0x80);
  }
  ppppuVar20 = local_180;
  if (0xf < local_168) {
    ppppuVar20 = (undefined8 ****)local_180[0];
  }
  local_290 = *(char **)(lVar5 + 0x90);
  local_2b0 = local_290;
  local_2a8 = local_170;
  ppcVar23 = &local_2b0;
  if (local_170 <= local_290) {
    ppcVar23 = &local_2a8;
  }
  iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
  if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
    uVar7 = 1;
LAB_1806b3cf8:
    *(undefined8 *)(lVar27 + 0x38) = uVar7;
  }
  else {
    lVar5 = FUN_1807064c0();
    pvVar21 = (void *)(lVar5 + 0xa0);
    if (0xf < *(ulonglong *)(lVar5 + 0xb8)) {
      pvVar21 = *(void **)(lVar5 + 0xa0);
    }
    ppppuVar20 = local_180;
    if (0xf < local_168) {
      ppppuVar20 = (undefined8 ****)local_180[0];
    }
    local_290 = *(char **)(lVar5 + 0xb0);
    local_2b0 = local_290;
    local_2a8 = local_170;
    ppcVar23 = &local_2b0;
    if (local_170 <= local_290) {
      ppcVar23 = &local_2a8;
    }
    iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
    if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
      *(undefined8 *)(lVar27 + 0x38) = 2;
    }
    else {
      lVar5 = FUN_1807064c0();
      pvVar21 = (void *)(lVar5 + 0xc0);
      if (0xf < *(ulonglong *)(lVar5 + 0xd8)) {
        pvVar21 = *(void **)(lVar5 + 0xc0);
      }
      ppppuVar20 = local_180;
      if (0xf < local_168) {
        ppppuVar20 = (undefined8 ****)local_180[0];
      }
      local_290 = *(char **)(lVar5 + 0xd0);
      local_2b0 = local_290;
      local_2a8 = local_170;
      ppcVar23 = &local_2b0;
      if (local_170 <= local_290) {
        ppcVar23 = &local_2a8;
      }
      iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
      if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
        *(undefined8 *)(lVar27 + 0x38) = 4;
      }
      else {
        lVar5 = FUN_1807064c0();
        pvVar21 = (void *)(lVar5 + 0xe0);
        if (0xf < *(ulonglong *)(lVar5 + 0xf8)) {
          pvVar21 = *(void **)(lVar5 + 0xe0);
        }
        ppppuVar20 = local_180;
        if (0xf < local_168) {
          ppppuVar20 = (undefined8 ****)local_180[0];
        }
        local_290 = *(char **)(lVar5 + 0xf0);
        local_2b0 = local_290;
        local_2a8 = local_170;
        ppcVar23 = &local_2b0;
        if (local_170 <= local_290) {
          ppcVar23 = &local_2a8;
        }
        iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
        if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
          *(undefined8 *)(lVar27 + 0x38) = 8;
        }
        else {
          lVar5 = FUN_1807064c0();
          pvVar21 = (void *)(lVar5 + 0x100);
          if (0xf < *(ulonglong *)(lVar5 + 0x118)) {
            pvVar21 = *(void **)(lVar5 + 0x100);
          }
          ppppuVar20 = local_180;
          if (0xf < local_168) {
            ppppuVar20 = (undefined8 ****)local_180[0];
          }
          local_290 = *(char **)(lVar5 + 0x110);
          local_2b0 = local_290;
          local_2a8 = local_170;
          ppcVar23 = &local_2b0;
          if (local_170 <= local_290) {
            ppcVar23 = &local_2a8;
          }
          iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
          if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
            *(undefined8 *)(lVar27 + 0x38) = 0x10;
          }
          else {
            lVar5 = FUN_1807064c0();
            pvVar21 = (void *)(lVar5 + 0x120);
            if (0xf < *(ulonglong *)(lVar5 + 0x138)) {
              pvVar21 = *(void **)(lVar5 + 0x120);
            }
            ppppuVar20 = local_180;
            if (0xf < local_168) {
              ppppuVar20 = (undefined8 ****)local_180[0];
            }
            local_290 = *(char **)(lVar5 + 0x130);
            local_2b0 = local_290;
            local_2a8 = local_170;
            ppcVar23 = &local_2b0;
            if (local_170 <= local_290) {
              ppcVar23 = &local_2a8;
            }
            iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
            if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
              *(undefined8 *)(lVar27 + 0x38) = 0x20;
            }
            else {
              lVar5 = FUN_1807064c0();
              pvVar21 = (void *)(lVar5 + 0x140);
              if (0xf < *(ulonglong *)(lVar5 + 0x158)) {
                pvVar21 = *(void **)(lVar5 + 0x140);
              }
              ppppuVar20 = local_180;
              if (0xf < local_168) {
                ppppuVar20 = (undefined8 ****)local_180[0];
              }
              local_290 = *(char **)(lVar5 + 0x150);
              local_2b0 = local_290;
              local_2a8 = local_170;
              ppcVar23 = &local_2b0;
              if (local_170 <= local_290) {
                ppcVar23 = &local_2a8;
              }
              iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
              if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
                *(undefined8 *)(lVar27 + 0x38) = 0x40;
              }
              else {
                lVar5 = FUN_1807064c0();
                pvVar21 = (void *)(lVar5 + 0x160);
                if (0xf < *(ulonglong *)(lVar5 + 0x178)) {
                  pvVar21 = *(void **)(lVar5 + 0x160);
                }
                ppppuVar20 = local_180;
                if (0xf < local_168) {
                  ppppuVar20 = (undefined8 ****)local_180[0];
                }
                local_290 = *(char **)(lVar5 + 0x170);
                local_2b0 = local_290;
                local_2a8 = local_170;
                ppcVar23 = &local_2b0;
                if (local_170 <= local_290) {
                  ppcVar23 = &local_2a8;
                }
                iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
                  *(undefined8 *)(lVar27 + 0x38) = 0x80;
                  local_2b8 = '\x01';
                }
                else {
                  lVar5 = FUN_1807064c0();
                  pvVar21 = (void *)(lVar5 + 0x180);
                  if (0xf < *(ulonglong *)(lVar5 + 0x198)) {
                    pvVar21 = *(void **)(lVar5 + 0x180);
                  }
                  ppppuVar20 = local_180;
                  if (0xf < local_168) {
                    ppppuVar20 = (undefined8 ****)local_180[0];
                  }
                  local_290 = *(char **)(lVar5 + 400);
                  local_2b0 = local_290;
                  local_2a8 = local_170;
                  ppcVar23 = &local_2b0;
                  if (local_170 <= local_290) {
                    ppcVar23 = &local_2a8;
                  }
                  iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                  if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
                    *(undefined8 *)(lVar27 + 0x38) = 0x100;
                  }
                  else {
                    lVar5 = FUN_1807064c0();
                    pvVar21 = (void *)(lVar5 + 0x1a0);
                    if (0xf < *(ulonglong *)(lVar5 + 0x1b8)) {
                      pvVar21 = *(void **)(lVar5 + 0x1a0);
                    }
                    ppppuVar20 = local_180;
                    if (0xf < local_168) {
                      ppppuVar20 = (undefined8 ****)local_180[0];
                    }
                    local_290 = *(char **)(lVar5 + 0x1b0);
                    local_2b0 = local_290;
                    local_2a8 = local_170;
                    ppcVar23 = &local_2b0;
                    if (local_170 <= local_290) {
                      ppcVar23 = &local_2a8;
                    }
                    iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                    if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
                      *(undefined8 *)(lVar27 + 0x38) = 0x200;
                    }
                    else {
                      lVar5 = FUN_1807064c0();
                      pvVar21 = (void *)(lVar5 + 0x1c0);
                      if (0xf < *(ulonglong *)(lVar5 + 0x1d8)) {
                        pvVar21 = *(void **)(lVar5 + 0x1c0);
                      }
                      ppppuVar20 = local_180;
                      if (0xf < local_168) {
                        ppppuVar20 = (undefined8 ****)local_180[0];
                      }
                      local_290 = *(char **)(lVar5 + 0x1d0);
                      local_2b0 = local_290;
                      local_2a8 = local_170;
                      ppcVar23 = &local_2b0;
                      if (local_170 <= local_290) {
                        ppcVar23 = &local_2a8;
                      }
                      iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                      if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)) {
                        *(undefined8 *)(lVar27 + 0x38) = 0x400;
                      }
                      else {
                        lVar5 = FUN_1807064c0();
                        pvVar21 = (void *)(lVar5 + 0x1e0);
                        if (0xf < *(ulonglong *)(lVar5 + 0x1f8)) {
                          pvVar21 = *(void **)(lVar5 + 0x1e0);
                        }
                        ppppuVar20 = local_180;
                        if (0xf < local_168) {
                          ppppuVar20 = (undefined8 ****)local_180[0];
                        }
                        local_290 = *(char **)(lVar5 + 0x1f0);
                        local_2b0 = local_290;
                        local_2a8 = local_170;
                        ppcVar23 = &local_2b0;
                        if (local_170 <= local_290) {
                          ppcVar23 = &local_2a8;
                        }
                        iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                        if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290))
                        {
                          *(undefined8 *)(lVar27 + 0x38) = 0x800;
                        }
                        else {
                          lVar5 = FUN_1807064c0();
                          pvVar21 = (void *)(lVar5 + 0x200);
                          if (0xf < *(ulonglong *)(lVar5 + 0x218)) {
                            pvVar21 = *(void **)(lVar5 + 0x200);
                          }
                          ppppuVar20 = local_180;
                          if (0xf < local_168) {
                            ppppuVar20 = (undefined8 ****)local_180[0];
                          }
                          local_290 = *(char **)(lVar5 + 0x210);
                          local_2b0 = local_290;
                          local_2a8 = local_170;
                          ppcVar23 = &local_2b0;
                          if (local_170 <= local_290) {
                            ppcVar23 = &local_2a8;
                          }
                          iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                          if (((iVar4 == 0) && (local_290 <= local_170)) && (local_170 == local_290)
                             ) {
                            *(undefined8 *)(lVar27 + 0x38) = 0x1000;
                          }
                          else {
                            lVar5 = FUN_1807064c0();
                            pvVar21 = (void *)(lVar5 + 0x220);
                            if (0xf < *(ulonglong *)(lVar5 + 0x238)) {
                              pvVar21 = *(void **)(lVar5 + 0x220);
                            }
                            ppppuVar20 = local_180;
                            if (0xf < local_168) {
                              ppppuVar20 = (undefined8 ****)local_180[0];
                            }
                            pcVar8 = *(char **)(lVar5 + 0x230);
                            local_2b0 = pcVar8;
                            local_2a8 = local_170;
                            ppcVar23 = &local_2b0;
                            if (local_170 <= pcVar8) {
                              ppcVar23 = &local_2a8;
                            }
                            iVar4 = memcmp(ppppuVar20,pvVar21,(size_t)*ppcVar23);
                            if (((iVar4 != 0) || (local_170 < pcVar8)) || (local_170 != pcVar8)) {
                              lVar5 = FUN_1805fcae0();
                              uVar7 = *(undefined8 *)(lVar5 + 0x38);
                              goto LAB_1806b3cf8;
                            }
                            *(undefined8 *)(lVar27 + 0x38) = 0x2000;
                            local_2b8 = '\x01';
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  cVar28 = local_2b8;
  uVar7 = (**(code **)(*param_2 + 0x40))(param_2);
  FUN_1805a4070(local_140,uVar7);
  puVar11 = (undefined8 *)(lVar27 + 0x18);
  FUN_1805b1330(puVar11,local_130,puVar11);
  ppppuVar20 = local_140;
  if (0xf < local_128) {
    ppppuVar20 = (undefined8 ****)local_140[0];
  }
  memcpy((void *)*puVar11,ppppuVar20,local_130);
  lVar5 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 500),"hasValidityTerms");
  lVar5 = FUN_180870eb0(param_2);
  cVar3 = *(char *)(lVar5 + 0x70);
  *(char *)(lVar27 + 0x58) = cVar3;
  *(undefined1 *)(lVar27 + 0x59) = 0;
  *(undefined2 *)(lVar27 + 0x425) = 0;
  if (cVar3 != '\0') {
    FUN_1808f1970(param_2,&local_2a8);
    if (local_2a8 == (char *)0x0) {
      local_210 = FUN_1811316e0(0x18);
      if (local_210 != 0) {
        FUN_1805a48c0(local_210,"Could not get a vector of TimeLimits");
      }
      lVar5 = FUN_1805c0260();
      local_280[0] = 0x207d;
      local_2b0 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_2b0);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar7,local_280);
    }
    local_290 = (char *)((*(longlong **)(local_2a8 + 8))[1] - **(longlong **)(local_2a8 + 8) >> 5);
    local_2b0 = pcVar26;
    pcVar8 = local_290;
    while (uVar1 = 0, local_2b0 < pcVar8) {
      plVar10 = (longlong *)FUN_1808be6f0(local_2a8,local_1b8);
      plVar10 = (longlong *)*plVar10;
      if (plVar10 == (longlong *)0x0) {
LAB_1806b46b0:
        local_2b0 = local_2b0 + 1;
        cVar28 = local_2b8;
      }
      else {
        lVar5 = FUN_180870eb0(param_2);
        FUN_18080ca00(param_2,*(undefined1 *)(lVar5 + 0x1fb),"timeLimited");
        lVar5 = FUN_180870eb0(param_2);
        if (*(char *)(lVar5 + 0xe1) == '\0') {
LAB_1806b41b3:
          lVar5 = FUN_180870eb0(plVar10);
          FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x14c));
          lVar5 = FUN_180870eb0(plVar10);
          if (*(int *)(lVar5 + 0x100) == -0x7ffffffe) {
            lVar5 = FUN_180870eb0(plVar10);
            FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x14c),"storageId");
            lVar5 = FUN_180870eb0(plVar10);
            *(undefined4 *)(lVar27 + 0x170) = *(undefined4 *)(lVar5 + 0x100);
            uVar7 = (**(code **)(*plVar10 + 0x40))(plVar10);
            FUN_1805a4070(&local_1a0,uVar7);
            FUN_1805b1330(lVar27 + 0x178,local_190,lVar27 + 0x178);
            ppppuVar20 = &local_1a0;
            if (0xf < local_188) {
              ppppuVar20 = (undefined8 ****)local_1a0;
            }
            memcpy(*(void **)(lVar27 + 0x178),ppppuVar20,local_190);
            lVar5 = FUN_180870eb0(plVar10);
            FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x147),"periodStartDate");
            lVar5 = FUN_180870eb0(plVar10);
            puVar11 = (undefined8 *)(lVar5 + 0x78);
            if ((undefined8 *)(lVar27 + 400) != puVar11) {
              if (0xf < *(ulonglong *)(lVar5 + 0x90)) {
                puVar11 = (undefined8 *)*puVar11;
              }
              FUN_1805a6cb0((undefined8 *)(lVar27 + 400),puVar11,*(undefined8 *)(lVar5 + 0x88));
            }
            lVar5 = FUN_180870eb0(plVar10);
            FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x148),"periodStopDate");
            lVar5 = FUN_180870eb0(plVar10);
            puVar11 = (undefined8 *)(lVar5 + 0x98);
            if ((undefined8 *)(lVar27 + 0x1b0) != puVar11) {
              if (0xf < *(ulonglong *)(lVar5 + 0xb0)) {
                puVar11 = (undefined8 *)*puVar11;
              }
              FUN_1805a6cb0((undefined8 *)(lVar27 + 0x1b0),puVar11,*(undefined8 *)(lVar5 + 0xa8));
            }
            *(undefined8 *)(lVar27 + 0x1d0) = 0;
            *(undefined1 *)(lVar27 + 0x202) = 0;
            lVar5 = FUN_180870eb0(plVar10);
            FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x147),"periodStartDate");
            lVar5 = FUN_180870eb0(plVar10);
            FUN_180660c00(&local_220,lVar5 + 0x78,0);
            lVar5 = FUN_180870eb0(plVar10);
            FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x148),"periodStopDate");
            lVar5 = FUN_180870eb0(plVar10);
            FUN_180660c00(&local_228,lVar5 + 0x98,0);
            *(undefined1 *)(lVar27 + 0x203) = 0;
            local_260 = (char *)0x7ffffffffffffffe;
            local_298[0] = 0xfffffffe;
            FUN_1805b41e0(&local_200,local_298);
            if (local_220 == local_200) {
              FUN_1805b6b80(&local_1f0,0);
              if ((local_228 == local_1f0) || (uVar2 = 1, *(longlong *)(lVar27 + 0x1a0) != 0))
              goto LAB_1806b445a;
            }
            else if ((*(longlong *)(lVar27 + 0x1c0) == 0) ||
                    ((FUN_1805b6b80(&local_1f8,0), local_228 != local_1f8 && (local_220 < local_228)
                     ))) {
              uVar2 = 1;
            }
            else {
LAB_1806b445a:
              uVar2 = uVar1;
            }
            *(undefined1 *)(lVar27 + 0x203) = uVar2;
            if (param_11 != (char *)0x0) {
              FUN_1805b6b80(&local_1e8,0);
              pcVar8 = pcVar26;
              if (local_220 != local_1e8) {
                pcVar8 = (char *)FUN_18065ffa0(&local_220);
              }
              pcVar9 = (char *)0xffffffffffffffff;
              FUN_1805b6b80(&local_1e0,0);
              if (local_228 != local_1e0) {
                pcVar9 = (char *)FUN_18065ffa0(&local_228);
              }
              lVar5 = local_250;
              if ((param_11 < pcVar8) || (pcVar9 < param_11)) {
                *(undefined1 *)((longlong)local_238 * 0x438 + 0x203 + *(longlong *)(local_250 + 8))
                     = 0;
              }
              lVar22 = (longlong)local_238 * 0x438;
              if (*(char *)(lVar22 + 0x203 + *(longlong *)(local_250 + 8)) == '\0') {
                local_2b7 = '\0';
                local_2a0 = 0;
                local_2b6 = '\0';
                local_2b5[0] = 0;
              }
              local_2d8 = (undefined1 *)0x0;
              FUN_18065a5a0(&local_1d8,0,(ulonglong)param_11 / 0x3c & 0xffffffff,
                            (int)param_11 + (int)((ulonglong)param_11 / 0x3c) * -0x3c);
              local_260 = local_1d8;
              puVar12 = (undefined2 *)FUN_180677f40(local_218,1);
              puVar13 = (undefined2 *)FUN_18065b100(local_280,0x7b2);
              puVar14 = (undefined4 *)FUN_1805b6990(local_1d0,*puVar13,*puVar12,1);
              local_298[0] = *puVar14;
              FUN_1805b41e0(&local_210,local_298);
              uVar7 = FUN_180662d40(local_120,&local_210);
              FUN_1805a5a40(*(longlong *)(lVar5 + 8) + 0x1d8 + lVar22,uVar7);
              FUN_180485450(local_120);
              *(undefined1 *)(lVar22 + 0x209 + *(longlong *)(lVar5 + 8)) = 1;
            }
            pcVar8 = local_290;
            *(undefined1 *)(lVar27 + 0x427) = 1;
            local_288 = '\x01';
            FUN_180485450(&local_1a0);
          }
          goto LAB_1806b46b0;
        }
        lVar5 = FUN_180870eb0(plVar10);
        FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x14c),"storageId");
        lVar5 = FUN_180870eb0(plVar10);
        if (*(int *)(lVar5 + 0x100) != -0x80000000) goto LAB_1806b41b3;
        uVar7 = FUN_18068ca70(local_f8,plVar10,local_248,local_258);
        FUN_1805ba930(lVar27 + 0x60,uVar7);
        FUN_1805b9270(local_f8);
        *(undefined1 *)(lVar27 + 0x425) = 1;
        if (cVar28 != '\0') {
          lVar5 = FUN_180870eb0(plVar10);
          FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x143),"flagsReadOnly");
          lVar5 = FUN_180870eb0(plVar10);
          *(uint *)(lVar27 + 0xf0) = (uint)*(byte *)(lVar5 + 0x30);
          *(undefined1 *)(lVar27 + 0x102) = 1;
          lVar5 = FUN_180870eb0(plVar10);
          FUN_18080ca00(plVar10,*(undefined1 *)(lVar5 + 0x143));
          lVar5 = FUN_180870eb0(plVar10);
          *(uint *)(lVar27 + 0xf4) = *(int *)(lVar5 + 0x30) >> 8 & 0xff;
          *(undefined1 *)(lVar27 + 0x103) = 1;
          FUN_1806873c0(lVar27 + 0x60,local_248);
        }
        if (*(char *)(lVar27 + 0xfb) == '\0') {
          local_2b7 = '\0';
          local_2a0 = 0;
          if (*(longlong *)(lVar27 + 200) == 0) {
            if (param_7 != '\0') {
              local_1b0 = FUN_1811316e0(0x18);
              if (local_1b0 != 0) {
                FUN_1805a48c0(local_1b0,"Software Auth Expired: Time limit expired");
              }
              lVar5 = FUN_1805c0260();
              local_298[0] = 0x20b5;
              local_260 = 
              "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
              ;
              uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_260);
                    /* WARNING: Subroutine does not return */
              FUN_1805b20d0(uVar7,local_298);
            }
            local_2b6 = '\0';
            local_2b5[0] = 0;
          }
          else if (*(char *)(lVar27 + 0xfa) == '\0') {
            if (param_7 != '\0') {
              local_208 = FUN_1811316e0(0x18);
              if (local_208 != 0) {
                FUN_1805a48c0(local_208,
                              "Software Auth Not Valid Yet: The current time is before the time limit starts."
                             );
              }
              lVar5 = FUN_1805c0260();
              local_298[0] = 0x20d2;
              local_260 = 
              "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
              ;
              uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_260);
                    /* WARNING: Subroutine does not return */
              FUN_1805b20d0(uVar7,local_298);
            }
          }
          else {
            if (param_7 != '\0') {
              local_1a8 = FUN_1811316e0(0x18);
              if (local_1a8 != 0) {
                FUN_1805a48c0(local_1a8,
                              "Software has a relative time limit that has not been started yet.");
              }
              lVar5 = FUN_1805c0260();
              local_298[0] = 0x20c4;
              local_260 = 
              "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
              ;
              uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_260);
                    /* WARNING: Subroutine does not return */
              FUN_1805b20d0(uVar7,local_298);
            }
            local_287 = '\x01';
          }
        }
        *(bool *)(lVar27 + 0x59) = *(longlong *)(lVar27 + 0xb8) != 0;
        local_2b0 = local_2b0 + 1;
        pcVar8 = local_290;
        cVar28 = local_2b8;
      }
    }
    pcVar8 = (char *)FUN_18068d4a0(param_2);
    if (*pcVar8 != '\0') {
      FUN_1808c6a00(param_2,&local_248);
      if (local_248 == 0) {
        FUN_1805c0220("Could not get a vector of CountLimits");
        lVar5 = FUN_1805c0260();
        local_298[0] = 0x214a;
        local_268 = (undefined8 ***)0x181bbe3b0;
        uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_268);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar7,local_298);
      }
      pcVar8 = (char *)((*(longlong **)(local_248 + 8))[1] - **(longlong **)(local_248 + 8) >> 5);
      if (pcVar8 != (char *)0x0) {
        do {
          plVar10 = (longlong *)FUN_180872df0(local_248,&local_208,pcVar26);
          lVar5 = *plVar10;
          if (lVar5 != 0) {
            lVar22 = FUN_180870eb0(lVar5);
            FUN_18080ca00(lVar5,*(undefined1 *)(lVar22 + 0xe6),"storageId");
            lVar22 = FUN_180870eb0(lVar5);
            if (*(int *)(lVar22 + 0x98) == -0x80000000) {
              if ((param_7 == '\0') ||
                 ((pcVar9 = (char *)FUN_1806bbb30(param_2), *pcVar9 == '\0' && (*local_270 != '\0'))
                 )) {
                uVar7 = 0;
              }
              else {
                uVar7 = 1;
              }
              if (((param_7 == '\0') || (param_8 == '\0')) ||
                 (pbVar15 = (byte *)FUN_18069e7b0(lVar5), (*pbVar15 & 2) != 0)) {
                uVar24 = 0;
              }
              else {
                uVar24 = 1;
              }
              local_2c0 = local_258;
              local_2c8 = local_240;
              local_2d0 = local_29f;
              local_2d8 = local_2b5;
              FUN_1806807f0(lVar5,uVar7,uVar24,param_7);
              local_2d8 = (undefined1 *)CONCAT44(local_2d8._4_4_,local_258);
              lVar22 = FUN_180687a60(local_f8,lVar5,local_2b5[0],local_29f[0]);
              *(undefined4 *)(lVar27 + 0x110) = *(undefined4 *)(lVar22 + 8);
              FUN_1805b9910(lVar27 + 0x118,lVar22 + 0x10);
              *(undefined1 *)(lVar27 + 0x130) = *(undefined1 *)(lVar22 + 0x28);
              *(undefined1 *)(lVar27 + 0x131) = *(undefined1 *)(lVar22 + 0x29);
              *(undefined4 *)(lVar27 + 0x134) = *(undefined4 *)(lVar22 + 0x2c);
              *(undefined4 *)(lVar27 + 0x138) = *(undefined4 *)(lVar22 + 0x30);
              *(undefined4 *)(lVar27 + 0x13c) = *(undefined4 *)(lVar22 + 0x34);
              *(undefined1 *)(lVar27 + 0x140) = *(undefined1 *)(lVar22 + 0x38);
              *(undefined1 *)(lVar27 + 0x141) = *(undefined1 *)(lVar22 + 0x39);
              *(undefined4 *)(lVar27 + 0x144) = *(undefined4 *)(lVar22 + 0x3c);
              *(undefined4 *)(lVar27 + 0x148) = *(undefined4 *)(lVar22 + 0x40);
              *(undefined4 *)(lVar27 + 0x14c) = *(undefined4 *)(lVar22 + 0x44);
              *(undefined1 *)(lVar27 + 0x150) = *(undefined1 *)(lVar22 + 0x48);
              *(undefined1 *)(lVar27 + 0x151) = *(undefined1 *)(lVar22 + 0x49);
              *(undefined1 *)(lVar27 + 0x152) = *(undefined1 *)(lVar22 + 0x4a);
              *(undefined8 *)(lVar27 + 0x153) = *(undefined8 *)(lVar22 + 0x4b);
              *(undefined4 *)(lVar27 + 0x15b) = *(undefined4 *)(lVar22 + 0x53);
              *(undefined2 *)(lVar27 + 0x15f) = *(undefined2 *)(lVar22 + 0x57);
              *(undefined1 *)(lVar27 + 0x161) = *(undefined1 *)(lVar22 + 0x59);
              local_f8[0] = pace::eden::thrift::pub::CountLimitRecord::vftable;
              FUN_180575ed0(local_e8);
              if ((*(char *)(lVar27 + 0x130) != '\0') &&
                 (pbVar15 = (byte *)FUN_18069e7b0(lVar5), (*pbVar15 & 1) != 0)) {
                if (param_7 != '\0') {
                  FUN_1805c0220(
                               "The auth count limit does has both the kCountLimitFlagsReadOnly_Counter1NotCryptoCounter bit set!"
                               );
                  lVar5 = FUN_1805c0260();
                  local_298[0] = 0x2189;
                  local_268 = (undefined8 ***)0x181bbe3b0;
                  uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_268);
                    /* WARNING: Subroutine does not return */
                  FUN_1805b20d0(uVar7,local_298);
                }
                *(undefined1 *)(lVar27 + 0x152) = 0;
              }
              *(undefined1 *)(lVar27 + 0x426) = 1;
              if (*(char *)(lVar27 + 0x152) == '\0') {
                local_2b7 = '\0';
                local_2b6 = '\0';
              }
              if ((*(char *)(lVar27 + 0x130) != '\0') ||
                 ((uVar2 = uVar1, *(char *)(lVar27 + 0x140) != '\0' &&
                  (*(char *)(lVar27 + 0x151) == '\0')))) {
                uVar2 = 1;
              }
              *(undefined1 *)(lVar27 + 0x59) = uVar2;
            }
          }
          pcVar26 = pcVar26 + 1;
          param_3 = local_res18[0];
        } while (pcVar26 < pcVar8);
      }
    }
    pcVar26 = (char *)FUN_1806bbb80(param_2);
    if (((*pcVar26 != '\0') && (*(char *)(lVar27 + 0x425) == '\0')) ||
       ((pcVar26 = (char *)FUN_18068d4a0(param_2), *pcVar26 != '\0' &&
        (*(char *)(lVar27 + 0x426) == '\0')))) {
      local_2b7 = '\0';
      local_2b6 = '\0';
    }
  }
  *(undefined8 *)(lVar27 + 0x48) = 0;
  if (param_10 != '\0') {
    FUN_1808c7980(param_2,&local_240);
    if (local_240 == 0) {
      FUN_1805c0220("Could not get a vector of DeveloperBlocks");
      lVar5 = FUN_1805c0260();
      local_298[0] = 0x21be;
      local_268 = (undefined8 ***)0x181bbe3b0;
      uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_268);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar7,local_298);
    }
    if ((*(longlong **)(local_240 + 8))[1] - **(longlong **)(local_240 + 8) >> 5 != 0) {
      plVar10 = (longlong *)FUN_18088b530(local_240,&local_208,0);
      lVar5 = *plVar10;
      if (lVar5 != 0) {
        piVar16 = (int *)FUN_1806bbaf0(lVar5);
        lVar22 = FUN_1805fcae0();
        if (*piVar16 == *(int *)(lVar22 + 0x74)) {
          uVar7 = FUN_18068d4f0(lVar5);
          FUN_1805b46a0(&local_1a0,uVar7);
          if (7 < (ulonglong)(local_198 - (longlong)local_1a0)) {
            FUN_1806b78e0(*(undefined1 *)((longlong)local_1a0 + 7),lVar27);
          }
          FUN_180575ed0(&local_1a0);
        }
      }
    }
    lVar5 = *(longlong *)(lVar27 + 0x48);
    if (lVar5 == 0) {
      lVar5 = 0x55000;
    }
    *(longlong *)(lVar27 + 0x48) = lVar5;
  }
  if (*(char *)(lVar27 + 0x425) == '\0') {
    if (*(char *)(lVar27 + 0x426) == '\0') {
      *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 1;
      *(undefined4 *)(lVar27 + 0x50) = 0x5a;
    }
    else {
      *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 2;
      *(undefined4 *)(lVar27 + 0x50) = 0x32;
    }
  }
  else if (*(char *)(lVar27 + 0x426) == '\0') {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 4;
    *(undefined4 *)(lVar27 + 0x50) = 0x46;
  }
  else {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 8;
    *(undefined4 *)(lVar27 + 0x50) = 0x1e;
  }
  if ((0x2d < *(int *)(lVar27 + 0x50)) && (local_288 != '\0')) {
    *(undefined4 *)(lVar27 + 0x50) = 0x2d;
  }
  pbVar15 = (byte *)FUN_18069e770(param_2);
  bVar29 = (*pbVar15 & 8) == 0;
  if (bVar29) {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x100000;
  }
  else {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x200000;
  }
  pcVar26 = (char *)FUN_1806bbb30(param_2);
  lVar5 = local_250;
  cVar28 = local_2b7;
  if (*pcVar26 == '\0') {
    if (bVar29) {
      if (*(longlong *)(local_250 + 0x68) == 0x10) goto LAB_1806b4e26;
    }
    else if (*(longlong *)(local_250 + 0x68) == 0x10) {
      *(undefined4 *)(lVar27 + 0x50) = 0x14;
      *(undefined8 *)(local_250 + 0x1f8) = 1;
      lVar22 = FUN_1807064c0();
      FUN_1805a4070(&local_1a0,lVar22 + 0x20);
      local_268 = &local_1a0;
      if (0xf < local_188) {
        local_268 = local_1a0;
      }
      local_2a8 = (char *)(local_190 + (longlong)local_268);
      puVar11 = (undefined8 *)(lVar5 + 0x200);
      _Size = (longlong)local_2a8 - (longlong)local_268;
      pvVar21 = (void *)*puVar11;
      uVar17 = *(longlong *)(lVar5 + 0x208) - (longlong)pvVar21;
      uVar25 = *(longlong *)(lVar5 + 0x210) - (longlong)pvVar21;
      if (uVar25 < _Size) {
        if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        uVar18 = *(longlong *)(lVar5 + 0x210) - (longlong)pvVar21;
        uVar17 = _Size;
        if ((uVar18 <= 0x7fffffffffffffff - (uVar18 >> 1)) &&
           (uVar17 = (uVar18 >> 1) + uVar18, uVar17 < _Size)) {
          uVar17 = _Size;
        }
        if (pvVar21 != (void *)0x0) {
          FUN_1805a7bf0(puVar11,pvVar21,uVar25);
        }
        FUN_1805bbbc0(puVar11,uVar17);
        pvVar21 = (void *)*puVar11;
        memmove(pvVar21,local_268,_Size);
        *(ulonglong *)(lVar5 + 0x208) = _Size + (longlong)pvVar21;
      }
      else if (uVar17 < _Size) {
        _Src = (void *)(uVar17 + (longlong)local_268);
        memmove(pvVar21,local_268,(longlong)_Src - (longlong)local_268);
        pvVar21 = *(void **)(lVar5 + 0x208);
        local_2a8 = local_2a8 + -(longlong)_Src;
        memmove(pvVar21,_Src,(size_t)local_2a8);
        *(char **)(lVar5 + 0x208) = local_2a8 + (longlong)pvVar21;
      }
      else {
        memmove(pvVar21,local_268,_Size);
        *(ulonglong *)(lVar5 + 0x208) = _Size + (longlong)pvVar21;
      }
      FUN_180485450(&local_1a0);
      cVar28 = local_2b7;
    }
    else {
LAB_1806b4e26:
      *(undefined4 *)(lVar27 + 0x50) = 0;
      cVar28 = '\0';
    }
  }
  else if (*(longlong *)(local_250 + 0x68) == 0x10) {
    *(undefined4 *)(lVar27 + 0x50) = 0x14;
  }
  lVar5 = local_250;
  lVar22 = FUN_180870eb0(param_3);
  FUN_18080ca00(param_3,*(undefined1 *)(lVar22 + 0x22a),"visible");
  lVar22 = FUN_180870eb0(param_3);
  if (*(char *)(lVar22 + 0x1c4) == '\0') {
LAB_1806b4eb1:
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x10;
  }
  else {
    lVar22 = FUN_180870eb0(param_2);
    FUN_18080ca00(param_2,*(undefined1 *)(lVar22 + 0x1fd),"visible");
    lVar22 = FUN_180870eb0(param_2);
    if (*(char *)(lVar22 + 0x108) == '\0') goto LAB_1806b4eb1;
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x20;
  }
  pcVar26 = (char *)FUN_1806bbb30(param_2);
  if (*pcVar26 == '\0') {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x40;
  }
  else {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x80;
  }
  cVar3 = FUN_1808eac00(param_2);
  if (cVar3 == '\0') {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x100;
  }
  else {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x200;
  }
  puVar19 = (uint *)FUN_18069e770(param_2);
  if ((*puVar19 & 0x800) == 0) {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x800;
  }
  else {
    *(ulonglong *)(lVar27 + 0x48) = *(ulonglong *)(lVar27 + 0x48) | 0x400;
  }
  puVar14 = (undefined4 *)FUN_1806aa760(param_3);
  *(undefined4 *)(lVar27 + 0x54) = *puVar14;
  uVar7 = FUN_1806bbaa0(param_3);
  FUN_1805a4070(&local_1a0,uVar7);
  lVar22 = FUN_1807064c0();
  iVar4 = FUN_18060cd70(&local_1a0,lVar22 + 0x300);
  if (iVar4 == 0) {
LAB_1806b5000:
    if (cVar28 != '\0') {
      *(undefined8 *)(lVar27 + 0x40) = 1;
      lVar22 = FUN_1807064c0();
      ppppuVar20 = (undefined8 ****)(lVar22 + 0x300);
      if (&local_1a0 != ppppuVar20) {
        if (0xf < *(ulonglong *)(lVar22 + 0x318)) {
          ppppuVar20 = (undefined8 ****)*ppppuVar20;
        }
        FUN_1805a6cb0(&local_1a0,ppppuVar20,*(undefined8 *)(lVar22 + 0x310));
      }
      goto LAB_1806b50f6;
    }
    if (local_2b6 == '\0') {
      *(undefined8 *)(lVar27 + 0x40) = 4;
      lVar22 = FUN_1807064c0();
      ppppuVar20 = (undefined8 ****)(lVar22 + 800);
      if (&local_1a0 != ppppuVar20) {
        if (0xf < *(ulonglong *)(lVar22 + 0x338)) {
          ppppuVar20 = (undefined8 ****)*ppppuVar20;
        }
        FUN_1805a6cb0(&local_1a0,ppppuVar20,*(undefined8 *)(lVar22 + 0x330));
      }
      goto LAB_1806b50f2;
    }
    *(undefined8 *)(lVar27 + 0x40) = 8;
    lVar22 = FUN_1807064c0();
    ppppuVar20 = (undefined8 ****)(lVar22 + 0x360);
    if (&local_1a0 != ppppuVar20) {
      if (0xf < *(ulonglong *)(lVar22 + 0x378)) {
        ppppuVar20 = (undefined8 ****)*ppppuVar20;
      }
      FUN_1805a6cb0(&local_1a0,ppppuVar20,*(undefined8 *)(lVar22 + 0x370));
    }
    *(undefined4 *)(lVar27 + 0x50) = 1;
    cVar3 = (char)local_278;
    if (local_287 != '\0') {
      cVar3 = '\x01';
    }
    *(undefined1 *)(lVar27 + 0x59) = 0;
  }
  else {
    lVar22 = FUN_1807064c0();
    iVar4 = FUN_18060cd70(&local_1a0,lVar22 + 0x360);
    if (iVar4 == 0) goto LAB_1806b5000;
    lVar22 = FUN_1807064c0();
    iVar4 = FUN_18060cd70(&local_1a0,lVar22 + 800);
    if (iVar4 != 0) {
      lVar22 = FUN_1807064c0();
      iVar4 = FUN_18060cd70(&local_1a0,lVar22 + 0x340);
      *(undefined4 *)(lVar27 + 0x50) = 0;
      *(undefined1 *)(lVar27 + 0x59) = 0;
      if (iVar4 == 0) {
        *(undefined8 *)(lVar27 + 0x40) = 0x10;
        *(undefined2 *)(lVar5 + 0x20) = 0;
        *(undefined4 *)(lVar5 + 0x24) = *(undefined4 *)(lVar27 + 0x50);
      }
      else {
        *(undefined8 *)(lVar27 + 0x40) = 2;
        *(undefined2 *)(lVar5 + 0x20) = 0;
        *(undefined4 *)(lVar5 + 0x24) = *(undefined4 *)(lVar27 + 0x50);
      }
      goto LAB_1806b5175;
    }
    *(undefined8 *)(lVar27 + 0x40) = 4;
    cVar28 = '\0';
LAB_1806b50f2:
    *(undefined4 *)(lVar27 + 0x50) = 0;
LAB_1806b50f6:
    cVar3 = (char)local_278;
  }
  pcVar26 = (char *)FUN_1806bbb30(param_2);
  if (cVar28 == '\0') {
    if ((*pcVar26 != '\0') || ((*local_270 == '\0' && (*(char *)(lVar27 + 0x58) != '\0')))) {
      if (*(int *)(lVar27 + 0x50) < *(int *)(lVar5 + 0x24)) {
        *(int *)(lVar5 + 0x24) = *(int *)(lVar27 + 0x50);
      }
      *(undefined1 *)(lVar5 + 0x20) = 0;
      if (cVar3 == '\0') {
        *(undefined1 *)(lVar5 + 0x21) = 0;
      }
    }
  }
  else if ((((*pcVar26 != '\0') && (*(int *)(lVar27 + 8) != 0x4801f777)) ||
           ((*local_270 == '\0' && (*(char *)(lVar27 + 0x58) != '\0')))) &&
          (*(int *)(lVar27 + 0x50) < *(int *)(lVar5 + 0x24))) {
    *(int *)(lVar5 + 0x24) = *(int *)(lVar27 + 0x50);
  }
LAB_1806b5175:
  if ((*(longlong *)(lVar27 + 0x30) == 2) &&
     (((*(char *)(lVar27 + 0x58) == '\0' || ((*(byte *)(lVar27 + 0x48) & 0x80) != 0)) ||
      (((undefined8 ****)local_238 != (undefined8 ****)0x0 && (*local_270 == '\0')))))) {
    *(undefined8 *)(lVar27 + 0x40) = 0x20;
    *(undefined4 *)(lVar27 + 0x50) = 0;
    *(undefined1 *)(lVar27 + 0x59) = 0;
    *(undefined2 *)(lVar5 + 0x20) = 0;
    *(undefined4 *)(lVar5 + 0x24) = *(undefined4 *)(lVar27 + 0x50);
  }
  if (*(char *)(lVar27 + 0x58) != '\0') {
    *local_270 = '\x01';
  }
  FUN_180485450(&local_1a0);
  FUN_180485450(local_140);
  FUN_180485450(local_180);
  FUN_180485450(local_160);
}



############ FUN_ 180872df0 size=570 ############

undefined8 FUN_180872df0(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorcountlimit.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorcountlimit.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_180ace520(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180ace2d0(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 1808be6f0 size=570 ############

undefined8 FUN_1808be6f0(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectortimelimit.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectortimelimit.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_180aecb20(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180aec8d0(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 1808c6a00 size=961 ############

/* WARNING: Instruction at (ram,0x0001808c6d26) overlaps instruction at (ram,0x0001808c6d25)
    */
/* WARNING: Removing unreachable block (ram,0x0001808c6c96) */
/* WARNING: Removing unreachable block (ram,0x0001808c6c84) */

void FUN_1808c6a00(longlong *param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong lVar9;
  longlong *plVar10;
  uint uVar11;
  longlong unaff_R13;
  bool bVar12;
  char cVar13;
  char cVar14;
  int unaff_retaddr;
  undefined1 auStack_160 [48];
  longlong lStack_130;
  longlong local_128 [2];
  undefined1 auStack_118 [32];
  code *local_f8;
  longlong *local_f0;
  undefined1 local_e8;
  undefined4 local_a8;
  uint local_a4;
  longlong local_98;
  longlong *local_90;
  undefined8 local_88;
  longlong local_80;
  undefined8 local_68;
  longlong local_60;
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_118;
  uVar11 = (uint)&stack0x00000000 & 0x1aff;
  uVar11 = (uVar11 * uVar11 * 0x10 + 4) % 0x13;
  local_a4 = (int)(-uVar11 | uVar11) >> 0x1f & 0x3e33U ^ 0x33e3;
  local_a8 = 0x4b0;
  local_88 = param_2;
  if (param_1[0xd] == 0) {
    lVar6 = param_1[3];
    if (lVar6 == 0) {
      local_128[1] = 0x1808c6b1f;
      lVar6 = (**(code **)(*param_1 + 0x48))(param_1);
    }
    lVar9 = param_1[8];
    local_128[1] = 0x1808c6b30;
    lVar7 = FUN_1811316e0(0x38);
    local_80 = lVar7;
    if (lVar7 == 0) {
      lVar6 = 0;
    }
    else {
      local_128[1] = 0x1808c6b41;
      uVar5 = FUN_180acc470();
      local_128[1] = 0x1808c6b4b;
      uVar8 = FUN_180a3d1e0(lVar9,uVar5);
      local_f8 = (code *)CONCAT44(local_f8._4_4_,1);
      local_128[1] = 0x1808c6b6b;
      uVar8 = __RTDynamicCast(uVar8,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorCountLimit::
                               RTTI_Type_Descriptor);
      local_e8 = 1;
      local_f8 = FUN_1808ec8a0;
      local_128[1] = 0x1808c6b96;
      local_f0 = param_1;
      lVar6 = FUN_180871030(lVar7,param_1,lVar6 + 0x140,uVar8);
    }
    local_128[1] = 0x1808c6bad;
    local_98 = lVar6;
    FUN_1808beaf0(&local_90,lVar6);
    local_128[1] = 0x1808c6bbc;
    FUN_1805ae620(&local_98,lVar6,lVar6);
    local_60 = local_98;
    lVar6 = param_1[0xd];
    param_1[0xd] = local_98;
    plVar4 = (longlong *)param_1[0xe];
    param_1[0xe] = (longlong)local_90;
    local_98 = lVar6;
    local_90 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar6 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        local_128[1] = 0x1808c6bff;
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          local_128[1] = 0x1808c6c12;
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  lVar6 = param_1[3];
  if (lVar6 == 0) {
    local_128[1] = 0x1808c6c29;
    lVar6 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  lVar9 = param_1[3];
  if (lVar9 == 0) {
    local_128[1] = 0x1808c6c3e;
    lVar9 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  local_80 = param_1[0xd];
  if (lVar6 != DAT_182667a60) {
    local_128[1] = 0x1808c6c5e;
    FUN_180a3b7d0(local_80,lVar9 + 0x140);
    DAT_182667a60 = lVar6;
  }
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
    cVar14 = '\0';
    cVar13 = (int)uVar11 < 0;
    bVar12 = uVar11 == 0;
  } while (!bVar12);
                    /* WARNING: Call to offcut address within same function */
  lStack_130 = 0x1808c6cc5;
  local_128[0] = lVar6;
  func_0x0001808c6cc8();
  if (bVar12 || cVar14 != cVar13) {
    plVar10 = (longlong *)(ulonglong)((int)local_128 + 0x28);
  }
  else {
    local_128[0] = CONCAT44(local_128[0]._4_4_,(int)local_128[0] + 0x13a);
    lStack_130 = unaff_R13 + -0x16f82;
    lVar6 = unaff_R13 + 0x2d22b;
    plVar10 = (longlong *)auStack_160;
  }
  plVar10[5] = lVar6;
  plVar10[4] = unaff_R13 + -0x228cf;
  plVar10[3] = unaff_R13 + 0x4d719;
  plVar10[2] = unaff_R13 + -0x62a46;
  plVar10[1] = unaff_R13 + -0x33b90;
  *plVar10 = unaff_R13 + 0x85b3b;
                    /* WARNING: Could not recover jumptable at 0x0001808c6dcb. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_R13 + 0x465ff))();
  return;
}



############ FUN_ 1808beaf0 size=97 ############

undefined8 * FUN_1808beaf0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorCountLimit>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808c7980 size=997 ############

/* WARNING: Instruction at (ram,0x0001808c7d60) overlaps instruction at (ram,0x0001808c7d5f)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001808c7f1b) */
/* WARNING: Removing unreachable block (ram,0x0001808c7a44) */
/* WARNING: Removing unreachable block (ram,0x0001808c80d5) */
/* WARNING: Removing unreachable block (ram,0x0001808c8117) */
/* WARNING: Removing unreachable block (ram,0x0001808c8119) */
/* WARNING: Removing unreachable block (ram,0x0001808c8118) */
/* WARNING: Removing unreachable block (ram,0x0001808c7d5f) */
/* WARNING: Removing unreachable block (ram,0x0001808c807d) */
/* WARNING: Removing unreachable block (ram,0x0001808c80c4) */
/* WARNING: Removing unreachable block (ram,0x0001808c811d) */

void FUN_1808c7980(longlong *param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  undefined7 uVar3;
  undefined4 uVar4;
  uint uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong lVar9;
  longlong lVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  longlong *plVar15;
  IMAGE_DOS_HEADER *pIVar16;
  uint uVar17;
  IMAGE_DOS_HEADER *pIVar18;
  int *piVar19;
  uint uVar20;
  ulonglong uVar21;
  longlong lVar22;
  int unaff_retaddr;
  undefined1 auStack_f8 [32];
  code *local_d8;
  longlong *local_d0;
  undefined1 local_c8;
  longlong local_b8;
  undefined *local_b0;
  longlong local_a8;
  int iStack_9c;
  undefined4 local_98;
  undefined4 local_94;
  longlong local_90;
  longlong local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong local_68;
  int aiStack_58 [4];
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  local_98 = 0x60;
  local_94 = 0xf40;
  lVar22 = 0;
  local_78 = param_2;
  if (param_1[0xf] == 0) {
    lVar6 = param_1[3];
    if (lVar6 == 0) {
      lVar6 = (**(code **)(*param_1 + 0x48))(param_1);
    }
    lVar10 = param_1[8];
    lVar7 = FUN_1811316e0(0x38);
    lVar9 = lVar22;
    local_90 = lVar7;
    if (lVar7 != 0) {
      uVar4 = FUN_180ad4960();
      uVar8 = FUN_180a3d1e0(lVar10,uVar4);
      local_d8 = (code *)CONCAT44(local_d8._4_4_,1);
      uVar8 = __RTDynamicCast(uVar8,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorDeveloperBlock::
                               RTTI_Type_Descriptor);
      local_c8 = 1;
      local_d8 = FUN_1808ec990;
      local_d0 = param_1;
      lVar9 = FUN_180889ab0(lVar7,param_1,lVar6 + 0x158,uVar8);
    }
    local_88 = lVar9;
    FUN_1808beb60(&local_80,lVar9);
    FUN_1805ae620(&local_88,lVar9,lVar9);
    local_68 = local_88;
    lVar6 = param_1[0xf];
    param_1[0xf] = local_88;
    plVar15 = (longlong *)param_1[0x10];
    param_1[0x10] = (longlong)local_80;
    local_88 = lVar6;
    local_80 = plVar15;
    if (plVar15 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar15 + 1;
      lVar6 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar15 + 8))(plVar15);
        LOCK();
        piVar2 = (int *)((longlong)plVar15 + 0xc);
        iVar14 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar14 == 1) {
          (**(code **)(*plVar15 + 0x10))(plVar15);
        }
      }
    }
  }
  lVar6 = param_1[3];
  if (lVar6 == 0) {
    lVar6 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  lVar10 = param_1[3];
  if (lVar10 == 0) {
    lVar10 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  local_90 = param_1[0xf];
  if (lVar6 != DAT_182667a68) {
    FUN_180a3b7d0(local_90,lVar10 + 0x158);
    DAT_182667a68 = lVar6;
  }
  pIVar18 = &IMAGE_DOS_HEADER_180000000;
  local_b8 = 0x180b4a870;
  local_b0 = &DAT_180b4c344;
  uVar21 = 0x1ad4;
  uVar17 = 0xd095f9fc;
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
    local_a8 = local_b8;
  } while (uVar11 != 0);
  do {
    func_0x0001808c797b();
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  do {
    lVar6 = (uVar21 ^ 0xffffffffffffffff) + 1;
    uVar21 = -lVar6;
    lVar22 = (-lVar22 ^ 0xffffffffffffffffU) + 1;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_b8 = 0x67c5df3aa5d1970;
  local_b0 = (undefined *)CONCAT44(local_b0._4_4_,0xaa5d1970);
  uVar20 = (uint)uVar21;
  uVar11 = uVar20 & 0x3f | 0x1a;
  uVar3 = (undefined7)((ulonglong)lVar22 >> 8);
  lVar22 = ((longlong)
            ((int)((ulonglong)lVar22 >> 8) * 0x100 -
            (int)CONCAT71(uVar3,uVar11 * uVar11 * 0xb6b1 == 0xd41f669)) ^ 0x14U) - 0x18;
  uVar11 = uVar20 & 0x1f | 0x2b;
code_r0x0001808c7ed6:
  uVar13 = (uint)lVar22;
  uVar12 = uVar17 & 7 | 0x2a;
  uVar5 = uVar13 & 0x7f | 0x54;
  if (((-(uVar12 * uVar12) ^ uVar5 * uVar5 * -0x15) & 0x30) == 0) {
    uVar5 = uVar17 & 0x37f;
    iVar14 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
    uVar5 = ((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e;
  }
  else {
    uVar5 = ((uVar20 & 0x51ff) + 1) * (uVar20 & 0x51ff) & 0x80000001;
  }
  uVar12 = uVar13 & 0x3f | 0x17;
  uVar13 = (uVar13 & 0x5fff) * (uVar13 & 0x5fff) + 1;
  lVar22 = lVar22 + 4 +
           ((((longlong)(int)uVar5 | 0x18cdU) ^ 0x18d5) -
           ((longlong)
            (0x2e4 << ((byte)((int)CONCAT71(uVar3,uVar11 * uVar11 * 0xa98b ==
                                                  uVar12 * uVar12 * 0x9e0b) >>
                             ((char)uVar13 + (char)(uVar13 / 7) * -7 & 0x1fU)) & 0x1f)) ^ 0x2fcU));
  if (-lVar22 == lVar6) {
    func_0x0001808c8162();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  piVar2 = (int *)(local_a8 + lVar22);
  piVar19 = piVar2;
  if ((pIVar18 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar10._0_1_ = pIVar18->e_magic[0], lVar10._1_1_ = pIVar18->e_magic[1],
     lVar10._2_2_ = pIVar18->e_cblp, lVar10._4_2_ = pIVar18->e_cp, lVar10._6_2_ = pIVar18->e_crlc,
     -1 < lVar10)) {
    local_b8 = 0x2621fc0;
    pIVar16 = pIVar18;
    do {
      if (piVar2 < IMAGE_DOS_HEADER_180000000.e_magic + lVar10 + 8) {
        pIVar18 = pIVar16;
        if (-1 < lVar10) {
          plVar15 = (longlong *)(lVar10 + 0x180000000);
          if (plVar15 < piVar2 + 1) {
            aiStack_58[0] = *piVar2;
            goto code_r0x0001808c8061;
          }
        }
        break;
      }
      pIVar18 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
      lVar10._0_2_ = pIVar16->e_cparhdr;
      lVar10._2_2_ = pIVar16->e_minalloc;
      lVar10._4_2_ = pIVar16->e_maxalloc;
      lVar10._6_2_ = pIVar16->e_ss;
      pIVar16 = pIVar18;
    } while (-1 < lVar10);
  }
  goto code_r0x0001808c8090;
  while (plVar15 = (longlong *)(lVar10 + 0x180000000), plVar15 < piVar2 + 1) {
code_r0x0001808c8061:
    *(longlong *)(&stack0x00017fffffa8 + (lVar10 - (longlong)piVar2)) = *plVar15 + -0x180000000;
    pIVar16 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
    lVar10 = *(longlong *)pIVar16;
    piVar19 = aiStack_58;
    if (lVar10 < 0) break;
  }
code_r0x0001808c8090:
  do {
    iStack_9c = *piVar19;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar17 = (iStack_9c + uVar17) * 0x401;
  uVar17 = uVar17 ^ uVar17 >> 6;
  goto code_r0x0001808c7ed6;
}



############ FUN_ 1808beb60 size=97 ############

undefined8 * FUN_1808beb60(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorDeveloperBlock>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808f1970 size=940 ############

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

void FUN_1808f1970(longlong *param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  uint uVar6;
  undefined4 uVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 uVar10;
  longlong in_R10;
  undefined1 local_f8 [32];
  code *local_d8;
  longlong *local_d0;
  undefined1 local_c8;
  uint local_94;
  undefined4 local_8c;
  longlong local_88;
  longlong local_80;
  longlong *local_78;
  undefined8 local_70;
  undefined8 local_68;
  longlong local_60;
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)local_f8;
  local_8c = 0x570;
  uVar6 = (uint)&stack0x00000000 & 0x7ff;
  uVar6 = (uVar6 + 1) * uVar6 + 0x622b & 0x80000001 | (uint)&stack0x00000000;
  local_94 = ((int)(-uVar6 | uVar6) >> 0x1f ^ 0xfffff7dfU) & 0xca7f;
  local_70 = param_2;
  if (param_1[0x19] == 0) {
    lVar8 = param_1[3];
    if (lVar8 == 0) {
      lVar8 = (**(code **)(*param_1 + 0x48))(param_1);
    }
    lVar4 = param_1[8];
    lVar9 = FUN_1811316e0(0x38);
    local_88 = lVar9;
    if (lVar9 == 0) {
      lVar8 = 0;
    }
    else {
      uVar7 = FUN_180aeb130();
      uVar10 = FUN_180a3d1e0(lVar4,uVar7);
      local_d8 = (code *)CONCAT44(local_d8._4_4_,1);
      uVar10 = __RTDynamicCast(uVar10,0,&license_services::LsCachedObjectVectorBase::
                                         RTTI_Type_Descriptor,
                               &license_services::LsCachedObjectVectorTimeLimit::
                                RTTI_Type_Descriptor);
      local_c8 = 1;
      local_d8 = FUN_1808ecc60;
      local_d0 = param_1;
      lVar8 = FUN_1808bcaf0(lVar9,param_1,lVar8 + 0x1d0,uVar10);
    }
    local_80 = lVar8;
    FUN_1808becb0(&local_78,lVar8);
    FUN_1805ae620(&local_80,lVar8,lVar8);
    local_60 = local_80;
    lVar8 = param_1[0x19];
    param_1[0x19] = local_80;
    plVar5 = (longlong *)param_1[0x1a];
    param_1[0x1a] = (longlong)local_78;
    local_80 = lVar8;
    local_78 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar5 + 1;
      lVar8 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar2 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
  }
  lVar8 = param_1[3];
  if (lVar8 == 0) {
    lVar8 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  if (param_1[3] == 0) {
    (**(code **)(*param_1 + 0x48))(param_1);
  }
  local_88 = param_1[0x19];
  if (lVar8 != DAT_182667a90) {
    FUN_180a3b7d0();
    DAT_182667a90 = lVar8;
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x0001808f1bd3();
                    /* WARNING: Could not recover jumptable at 0x0001808f1d2e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(in_R10 + 0x85d4))();
  return;
}



############ FUN_ 1808becb0 size=97 ############

undefined8 * FUN_1808becb0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorTimeLimit>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1806b5230 size=4140 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806b5230(ulonglong param_1,longlong *param_2,undefined8 param_3,longlong *param_4,
                  longlong param_5,longlong *param_6,uint param_7)

{
  uint uVar1;
  uint *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  longlong lVar9;
  longlong lVar10;
  undefined8 *puVar11;
  longlong lVar12;
  char cVar13;
  uint *puVar14;
  void *_Memory;
  int *piVar15;
  longlong lVar16;
  ushort uVar17;
  char cVar18;
  undefined1 uVar19;
  ulonglong uVar20;
  longlong *plVar21;
  ulonglong uVar22;
  ulonglong uVar23;
  char *pcVar24;
  char *pcVar25;
  undefined4 *puVar26;
  ushort uVar27;
  longlong lVar28;
  char *pcVar29;
  bool bVar30;
  undefined1 auStack_228 [32];
  uint local_208;
  uint local_200;
  undefined1 local_1f8;
  uint local_1f0;
  char local_1e8;
  char local_1e7;
  ushort local_1e6;
  undefined4 local_1e0;
  longlong *local_1d8;
  undefined1 local_1d0;
  undefined1 local_1cf;
  undefined1 local_1ce;
  undefined1 local_1cd;
  uint local_1cc;
  uint local_1c8;
  ulonglong local_1c0;
  char *local_1b8;
  longlong local_1b0;
  ulonglong local_1a8;
  ulonglong *local_1a0;
  longlong local_198;
  ulonglong *puStack_190;
  ulonglong *local_188;
  longlong local_180;
  ulonglong *puStack_178;
  ulonglong *local_170;
  longlong local_168;
  ulonglong *puStack_160;
  ulonglong *local_158;
  ulonglong local_150;
  undefined8 *local_148;
  longlong local_140;
  ulonglong *puStack_138;
  ulonglong *local_130;
  undefined8 *local_128;
  longlong local_120 [5];
  undefined **local_f8;
  undefined4 local_f0;
  void *local_e8;
  undefined8 uStack_e0;
  longlong local_d8;
  undefined8 uStack_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_8c;
  char local_88;
  byte local_87;
  char local_86;
  undefined1 local_85;
  undefined1 local_84;
  undefined8 local_83;
  undefined4 local_7b;
  undefined2 local_77;
  char local_75;
  ulonglong local_48;
  
  local_120[3] = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_228;
  local_1b0 = param_5;
  local_1c8 = param_7;
  local_180 = 0;
  puStack_178 = (ulonglong *)0x0;
  local_170 = (ulonglong *)0x0;
  local_140 = 0;
  puStack_138 = (ulonglong *)0x0;
  local_130 = (ulonglong *)0x0;
  local_198 = 0;
  puStack_190 = (ulonglong *)0x0;
  local_188 = (ulonglong *)0x0;
  local_168 = 0;
  puStack_160 = (ulonglong *)0x0;
  local_1a0 = (ulonglong *)0x0;
  local_158 = (ulonglong *)0x0;
  pcVar24 = (char *)0xffffffff;
  local_1cc = 0xffffff00;
  local_1cd = 0;
  local_1ce = 0;
  local_1cf = 0;
  local_1d0 = 0;
  local_1e7 = '\0';
  if ((param_4 == (longlong *)0x0) || (param_4[1] - *param_4 >> 2 == 0)) {
    cVar18 = '\x01';
  }
  else {
    cVar18 = '\0';
  }
  uVar27 = *(ushort *)(param_1 + 2) >> 0xd;
  uVar17 = uVar27 & 1;
  cVar13 = (char)uVar17;
  local_1e0 = CONCAT22(local_1e0._2_2_,uVar27) & 0xffff0001;
  uVar27 = *(ushort *)(param_1 + 2) >> 0xe & 0xff01;
  local_120[0] = 0;
  local_120[1] = 0;
  local_120[2] = 0;
  plVar21 = local_120;
  if (param_6 != (longlong *)0x0) {
    plVar21 = param_6;
  }
  local_1b8 = (char *)(param_2[1] - *param_2 >> 5);
  pcVar29 = (char *)0x0;
  local_150 = 1;
  local_1e8 = cVar18;
  local_1e6 = uVar27;
  local_1d8 = param_2;
  local_1a8 = param_1;
  local_148 = (undefined8 *)param_3;
  if (local_1b8 == (char *)0x0) {
LAB_1806b597d:
    uVar19 = (undefined1)uVar27;
    if (cVar18 == '\0') goto LAB_1806b598a;
  }
  else {
    lVar28 = 0;
    do {
      cVar13 = (char)local_1e6;
      pcVar25 = (char *)(*local_1d8 + lVar28);
      uVar1 = *(uint *)(pcVar25 + 4);
      uVar20 = (ulonglong)uVar1;
      if (uVar1 == 0x80000000) {
        if (*pcVar25 == -0x70) {
          pcVar24 = pcVar29;
        }
        if ((*pcVar25 == -0x7f) && ((char)uVar17 != '\0')) {
          if (plVar21[2] == plVar21[1]) {
            FUN_18063fa90(plVar21);
            cVar13 = (char)local_1e6;
          }
          else {
            puVar26 = (undefined4 *)plVar21[1];
            uVar5 = *(undefined4 *)(pcVar25 + 4);
            uVar6 = *(undefined4 *)(pcVar25 + 8);
            uVar7 = *(undefined4 *)(pcVar25 + 0xc);
            *puVar26 = *(undefined4 *)pcVar25;
            puVar26[1] = uVar5;
            puVar26[2] = uVar6;
            puVar26[3] = uVar7;
            uVar5 = *(undefined4 *)(pcVar25 + 0x14);
            uVar6 = *(undefined4 *)(pcVar25 + 0x18);
            uVar7 = *(undefined4 *)(pcVar25 + 0x1c);
            puVar26[4] = *(undefined4 *)(pcVar25 + 0x10);
            puVar26[5] = uVar5;
            puVar26[6] = uVar6;
            puVar26[7] = uVar7;
            plVar21[1] = plVar21[1] + 0x20;
          }
        }
        pcVar25 = (char *)(*local_1d8 + lVar28);
        if ((*pcVar25 == -0x7e) && (cVar13 != '\0')) {
LAB_1806b5404:
          if (plVar21[2] == plVar21[1]) {
            FUN_18063fa90(plVar21);
          }
          else {
            puVar26 = (undefined4 *)plVar21[1];
            uVar5 = *(undefined4 *)(pcVar25 + 4);
            uVar6 = *(undefined4 *)(pcVar25 + 8);
            uVar7 = *(undefined4 *)(pcVar25 + 0xc);
            *puVar26 = *(undefined4 *)pcVar25;
            puVar26[1] = uVar5;
            puVar26[2] = uVar6;
            puVar26[3] = uVar7;
            uVar5 = *(undefined4 *)(pcVar25 + 0x14);
            uVar6 = *(undefined4 *)(pcVar25 + 0x18);
            uVar7 = *(undefined4 *)(pcVar25 + 0x1c);
            puVar26[4] = *(undefined4 *)(pcVar25 + 0x10);
            puVar26[5] = uVar5;
            puVar26[6] = uVar6;
            puVar26[7] = uVar7;
            plVar21[1] = plVar21[1] + 0x20;
          }
        }
      }
      else if ((uVar1 == 0x80000002) && (*pcVar25 == -0x7f)) goto LAB_1806b5404;
      if (cVar18 == '\0') {
        puVar2 = (uint *)param_4[1];
        puVar14 = (uint *)*param_4;
        if (puVar14 != puVar2) {
          do {
            if (*puVar14 == uVar1) break;
            puVar14 = puVar14 + 1;
          } while (puVar14 != puVar2);
          if (puVar14 != puVar2) goto LAB_1806b546b;
        }
      }
      else {
LAB_1806b546b:
        pcVar25 = (char *)(*local_1d8 + lVar28);
        cVar13 = *pcVar25;
        if (cVar13 == -0x7f) {
          if ((uVar1 != 0x80000000) && (uVar1 != 0x80000002)) {
            local_208 = local_1c8;
            uVar8 = FUN_18068c5a0(&local_f8,pcVar25,local_148,0);
            lVar9 = local_1b0;
            if (*(longlong *)(local_1b0 + 0x18) == *(longlong *)(local_1b0 + 0x10)) {
              FUN_18066d840(local_1b0 + 8,*(undefined8 *)(local_1b0 + 0x10),uVar8);
            }
            else {
              FUN_1805b6190(*(undefined8 *)(local_1b0 + 0x10));
              *(longlong *)(lVar9 + 0x10) = *(longlong *)(lVar9 + 0x10) + 0xa8;
            }
            FUN_1805b9270(&local_f8);
            cVar18 = local_1e8;
          }
        }
        else if (cVar13 == -0x7e) {
          if (uVar1 != 0x80000000) {
            local_1f0 = local_1c8;
            local_1f8 = 0;
            local_200 = local_200 & 0xffffff00;
            local_208 = local_208 & 0xffffff00;
            uVar8 = FUN_180687800(&local_f8,pcVar25,0,0);
            lVar9 = local_1b0;
            if (*(longlong *)(local_1b0 + 0x30) == *(longlong *)(local_1b0 + 0x28)) {
              FUN_18066d290(local_1b0 + 0x20,*(undefined8 *)(local_1b0 + 0x28),uVar8);
            }
            else {
              FUN_1805b5600(*(undefined8 *)(local_1b0 + 0x28));
              *(longlong *)(lVar9 + 0x28) = *(longlong *)(lVar9 + 0x28) + 0x60;
            }
            local_f8 = pace::eden::thrift::pub::CountLimitRecord::vftable;
            cVar18 = local_1e8;
            if (local_e8 != (void *)0x0) {
              _Memory = local_e8;
              if ((0xfff < (ulonglong)(local_d8 - (longlong)local_e8)) &&
                 (_Memory = *(void **)((longlong)local_e8 + -8),
                 0x1f < (ulonglong)((longlong)local_e8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
        }
        else if (cVar13 == -0x7c) {
          lVar9 = FUN_1805fcae0();
          local_1cc = local_1cc & 0xff;
          if (uVar1 == *(uint *)(lVar9 + 0x74)) {
            local_1cc = 1;
          }
          local_208 = local_1c8;
          uVar8 = FUN_180688050(&local_f8,*local_1d8 + lVar28,&local_1cd,&local_1ce);
          lVar9 = local_1b0;
          if (*(longlong *)(local_1b0 + 0x48) == *(longlong *)(local_1b0 + 0x40)) {
            FUN_18066d410(local_1b0 + 0x38,*(undefined8 *)(local_1b0 + 0x40),uVar8);
          }
          else {
            FUN_180676fd0(*(undefined8 *)(local_1b0 + 0x40),uVar8);
            *(longlong *)(lVar9 + 0x40) = *(longlong *)(lVar9 + 0x40) + 0x58;
          }
          FUN_18067afa0(&local_f8);
          cVar18 = local_1e8;
          if ((*(ushort *)(*local_1d8 + 2 + lVar28) & 0x200) != 0) {
            if (local_170 == puStack_178) {
              local_1c0 = uVar20;
              FUN_18066d180(&local_180,puStack_178,&local_1c0);
            }
            else {
              *puStack_178 = uVar20;
              puStack_178 = puStack_178 + 1;
            }
            local_1c0 = (ulonglong)(uVar1 + 1);
            if (local_130 == puStack_138) {
              FUN_18066d180(&local_140,puStack_138,&local_1c0);
              cVar18 = local_1e8;
            }
            else {
              *puStack_138 = local_1c0;
              puStack_138 = puStack_138 + 1;
              cVar18 = local_1e8;
            }
          }
        }
        else if (cVar13 == -0x78) {
          local_208 = local_1c8;
          uVar8 = FUN_1806896f0(&local_f8,pcVar25,&local_1cf,&local_1d0);
          lVar9 = local_1b0;
          if (*(longlong *)(local_1b0 + 0x60) == *(longlong *)(local_1b0 + 0x58)) {
            FUN_18066d620(local_1b0 + 0x50,*(undefined8 *)(local_1b0 + 0x58),uVar8);
          }
          else {
            FUN_180677c80(*(undefined8 *)(local_1b0 + 0x58));
            *(longlong *)(lVar9 + 0x58) = *(longlong *)(lVar9 + 0x58) + 0x88;
          }
          FUN_18067d0a0(&local_f8);
          if ((*(ushort *)(*local_1d8 + 2 + lVar28) & 0x200) != 0) {
            if (local_188 == puStack_190) {
              local_1c0 = uVar20;
              FUN_18066d180(&local_198,puStack_190,&local_1c0);
            }
            else {
              *puStack_190 = uVar20;
              puStack_190 = puStack_190 + 1;
            }
            local_1c0 = (ulonglong)(uVar1 + 1);
            if (local_1a0 == puStack_160) {
              FUN_18066d180(&local_168,puStack_160,&local_1c0);
              local_1a0 = local_158;
            }
            else {
              *puStack_160 = local_1c0;
              puStack_160 = puStack_160 + 1;
            }
          }
          cVar18 = local_1e8;
          if (uVar1 == 0x80000000) {
            local_1e7 = '\x01';
          }
        }
      }
      uVar27 = local_1e6;
      pcVar29 = pcVar29 + 1;
      lVar28 = lVar28 + 0x20;
      uVar17 = (ushort)local_1e0;
      cVar13 = (char)local_1e0;
    } while (pcVar29 < local_1b8);
    cVar18 = local_1e8;
    if (pcVar24 == (char *)0xffffffff) goto LAB_1806b597d;
    if (((plVar21[1] - *plVar21 >> 5 == 0) && ((char)local_1e6 != '\0' || (char)local_1e0 != '\0'))
       && ((*(ushort *)(local_1a8 + 2) & 0x438) == 0x438)) {
      puVar26 = (undefined4 *)((longlong)pcVar24 * 0x20 + *local_1d8);
      if (plVar21[2] == plVar21[1]) {
        FUN_18063fa90(plVar21);
        uVar19 = 1;
      }
      else {
        puVar3 = (undefined4 *)plVar21[1];
        uVar5 = puVar26[1];
        uVar6 = puVar26[2];
        uVar7 = puVar26[3];
        *puVar3 = *puVar26;
        puVar3[1] = uVar5;
        puVar3[2] = uVar6;
        puVar3[3] = uVar7;
        uVar8 = *(undefined8 *)(puVar26 + 6);
        *(undefined8 *)(puVar3 + 4) = *(undefined8 *)(puVar26 + 4);
        *(undefined8 *)(puVar3 + 6) = uVar8;
        plVar21[1] = plVar21[1] + 0x20;
        uVar19 = 1;
      }
    }
    else {
      uVar19 = 0;
    }
    cVar18 = local_1e8;
    if ((char)local_1cc != '\0') goto LAB_1806b597d;
    if (local_1e8 != '\0') {
LAB_1806b58ed:
      local_208 = local_1c8;
      uVar8 = FUN_180687e30(&local_f8,*local_1d8 + 8 + (longlong)pcVar24 * 0x20,uVar19,
                            *(undefined4 *)(*local_1d8 + 0x1c + (longlong)pcVar24 * 0x20));
      lVar28 = local_1b0;
      if (*(longlong *)(local_1b0 + 0x48) == *(longlong *)(local_1b0 + 0x40)) {
        FUN_18066d410(local_1b0 + 0x38,*(undefined8 *)(local_1b0 + 0x40),uVar8);
      }
      else {
        FUN_180676fd0(*(undefined8 *)(local_1b0 + 0x40));
        *(longlong *)(lVar28 + 0x40) = *(longlong *)(lVar28 + 0x40) + 0x58;
      }
      FUN_18067afa0(&local_f8);
      goto LAB_1806b597d;
    }
    lVar28 = FUN_1805fcae0();
    piVar4 = (int *)param_4[1];
    piVar15 = (int *)*param_4;
    if (piVar15 != piVar4) {
      do {
        if (*piVar15 == *(int *)(lVar28 + 0x74)) break;
        piVar15 = piVar15 + 1;
      } while (piVar15 != piVar4);
      if (piVar15 != piVar4) goto LAB_1806b58ed;
    }
LAB_1806b598a:
    uVar19 = (undefined1)uVar27;
    piVar4 = (int *)param_4[1];
    piVar15 = (int *)*param_4;
    if (piVar15 == piVar4) goto LAB_1806b5a86;
    do {
      if (*piVar15 == -0x80000000) break;
      piVar15 = piVar15 + 1;
    } while (piVar15 != piVar4);
    if (piVar15 == piVar4) goto LAB_1806b5a86;
  }
  if (local_1e7 == '\0') {
    local_f8 = pace::eden::thrift::pub::SecretDataRecord::vftable;
    local_e8 = (void *)0x0;
    uStack_e0 = 0;
    local_d8 = 0;
    uStack_d0 = 0;
    local_c8 = 0;
    uStack_c0 = 0;
    local_b8 = 0;
    uStack_b0 = 0;
    local_a8 = 0;
    local_8c = 0;
    local_83 = 0;
    local_7b = 0;
    local_77 = 0;
    local_84 = 1;
    local_f0 = 0x80000000;
    local_98 = 0;
    local_94 = 3;
    local_a0 = 3;
    local_9c = 0x10;
    local_87 = *(byte *)(local_1a8 + 3) & 1;
    local_88 = local_1e7;
    local_86 = cVar13;
    local_85 = uVar19;
    local_75 = local_1e7;
    FUN_18067d0a0(&local_f8);
  }
LAB_1806b5a86:
  lVar28 = local_1b0;
  local_1e8 = '\0';
  local_1e7 = '\0';
  if ((longlong)puStack_178 - local_180 >> 3 != 0) {
    local_1a8 = 1;
    local_1c0 = 0;
    lVar9 = local_180;
    do {
      local_1e0 = *(uint *)(local_1c0 + lVar9);
      uVar1 = *(uint *)(local_140 + local_1c0);
      uVar20 = (*(longlong *)(lVar28 + 0x40) - *(longlong *)(lVar28 + 0x38)) / 0x58;
      uVar22 = 0;
      local_1cc = local_1e0;
      if (uVar20 == 0) {
LAB_1806b5b2a:
        local_148 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_148 == (undefined8 *)0x0) {
          lVar28 = 0;
        }
        else {
          lVar28 = FUN_1805a48c0(local_148,"A dev data record (storage ID: 0x%08X) has disappeared")
          ;
        }
        puVar11 = (undefined8 *)FUN_1811316e0(0x18);
        local_128 = puVar11;
        if (puVar11 == (undefined8 *)0x0) {
          puVar11 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar11,"|__FILE__|%s|__LINE__|%d");
          *puVar11 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_18060e760(*(undefined8 *)(lVar28 + 8),&local_1e0);
        local_1e0 = 0x2443;
        local_1b8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar8 = FUN_1805a21d0(puVar11[1],&local_1b8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar8,&local_1e0);
      }
      lVar10 = 0;
      while (*(uint *)(lVar10 + 8 + *(longlong *)(lVar28 + 0x38)) != local_1e0) {
        uVar22 = uVar22 + 1;
        lVar10 = lVar10 + 0x58;
        if (uVar20 <= uVar22) goto LAB_1806b5b2a;
      }
      if (uVar22 == 0xffffffff) goto LAB_1806b5b2a;
      lVar16 = *(longlong *)(lVar28 + 0x40) - *(longlong *)(lVar28 + 0x38);
      lVar10 = lVar16 >> 0x3f;
      lVar16 = lVar16 / 0x58 + lVar10;
      uVar20 = 0;
      if (lVar16 != lVar10) {
        lVar12 = 0;
        do {
          if (*(uint *)(lVar12 + 8 + *(longlong *)(lVar28 + 0x38)) == uVar1) goto LAB_1806b5c36;
          uVar20 = uVar20 + 1;
          lVar12 = lVar12 + 0x58;
        } while (uVar20 < (ulonglong)(lVar16 - lVar10));
      }
      uVar20 = 0xffffffff;
LAB_1806b5c36:
      bVar30 = true;
      if (uVar20 == 0xffffffff) {
        pcVar24 = (char *)*local_1d8;
        uVar20 = local_1d8[1] - (longlong)pcVar24 >> 5;
        uVar23 = 0;
        pcVar29 = pcVar24;
        if (uVar20 != 0) {
          do {
            if ((*pcVar29 == -0x7c) && (*(uint *)(pcVar29 + 4) == uVar1)) {
              if (uVar23 != 0xffffffff) {
                local_208 = local_1c8;
                uVar8 = FUN_180688050(&local_f8,pcVar24 + uVar23 * 0x20,&local_1e8,&local_1e7);
                if (*(longlong *)(lVar28 + 0x48) == *(longlong *)(lVar28 + 0x40)) {
                  FUN_18066d410(lVar28 + 0x38,*(undefined8 *)(lVar28 + 0x40),uVar8);
                }
                else {
                  FUN_180676fd0(*(undefined8 *)(lVar28 + 0x40),uVar8);
                  *(longlong *)(lVar28 + 0x40) = *(longlong *)(lVar28 + 0x40) + 0x58;
                }
                local_f8 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
                FUN_180575ed0(&uStack_d0);
                FUN_180575ed0(&local_e8);
                uVar20 = (*(longlong *)(lVar28 + 0x40) - *(longlong *)(lVar28 + 0x38)) / 0x58 - 1;
                if ((*(ushort *)(*local_1d8 + 2 + uVar23 * 0x20) & 0x200) == 0) goto LAB_1806b5dc5;
                pcVar24 = (char *)(ulonglong)local_1cc;
                if (local_170 == puStack_178) {
                  local_1b8 = pcVar24;
                  FUN_18066d180(&local_180,puStack_178,&local_1b8);
                  lVar9 = local_180;
                }
                else {
                  *puStack_178 = (ulonglong)pcVar24;
                  puStack_178 = puStack_178 + 1;
                }
                local_1b8 = (char *)(ulonglong)(uVar1 + 1);
                if (local_130 == puStack_138) {
                  FUN_18066d180(&local_140,puStack_138,&local_1b8);
                  bVar30 = false;
                }
                else {
                  *puStack_138 = (ulonglong)local_1b8;
                  puStack_138 = puStack_138 + 1;
                  bVar30 = false;
                }
                goto LAB_1806b5dc9;
              }
              break;
            }
            uVar23 = uVar23 + 1;
            pcVar29 = pcVar29 + 0x20;
          } while (uVar23 < uVar20);
        }
        *(undefined4 *)(*(longlong *)(lVar28 + 0x38) + 0x40 + uVar22 * 0x58) = 5;
        *(undefined1 *)(uVar22 * 0x58 + 0x4b + *(longlong *)(lVar28 + 0x38)) = 0;
      }
      else {
LAB_1806b5dc5:
        pcVar24 = (char *)(ulonglong)local_1cc;
LAB_1806b5dc9:
        FUN_1806add50(uVar22,uVar20,local_1b0,local_1c8);
        if (bVar30) {
          for (uVar20 = local_1a8; uVar20 < (ulonglong)((longlong)puStack_178 - lVar9 >> 3);
              uVar20 = uVar20 + 1) {
            if (*(ulonglong *)(lVar9 + uVar20 * 8) == (ulonglong)uVar1) {
              *(char **)(lVar9 + uVar20 * 8) = pcVar24;
              break;
            }
          }
        }
      }
      local_1c0 = local_1c0 + 8;
      uVar20 = local_1a8 + 1;
      bVar30 = local_1a8 < (ulonglong)((longlong)puStack_178 - lVar9 >> 3);
      local_1a8 = uVar20;
    } while (bVar30);
  }
  lVar28 = local_1b0;
  if ((longlong)puStack_190 - local_198 >> 3 != 0) {
    local_1c0 = 0;
    lVar9 = local_198;
    do {
      local_1e0 = *(uint *)(local_1c0 + lVar9);
      uVar1 = *(uint *)(local_168 + local_1c0);
      uVar20 = (*(longlong *)(lVar28 + 0x58) - *(longlong *)(lVar28 + 0x50)) / 0x88;
      uVar22 = 0;
      local_1cc = local_1e0;
      if (uVar20 == 0) {
LAB_1806b5eda:
        local_128 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_128 == (undefined8 *)0x0) {
          lVar28 = 0;
        }
        else {
          lVar28 = FUN_1805a48c0(local_128,"A dev data record (storage ID: 0x%08X) has disappeared")
          ;
        }
        puVar11 = (undefined8 *)FUN_1811316e0(0x18);
        local_148 = puVar11;
        if (puVar11 == (undefined8 *)0x0) {
          puVar11 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar11,"|__FILE__|%s|__LINE__|%d");
          *puVar11 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_18060e760(*(undefined8 *)(lVar28 + 8),&local_1e0);
        local_1e0 = 0x24bb;
        local_1b8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar8 = FUN_1805a21d0(puVar11[1],&local_1b8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar8,&local_1e0);
      }
      lVar10 = 0;
      while (*(uint *)(lVar10 + 8 + *(longlong *)(lVar28 + 0x50)) != local_1e0) {
        uVar22 = uVar22 + 1;
        lVar10 = lVar10 + 0x88;
        if (uVar20 <= uVar22) goto LAB_1806b5eda;
      }
      if (uVar22 == 0xffffffff) goto LAB_1806b5eda;
      lVar16 = *(longlong *)(lVar28 + 0x58) - *(longlong *)(lVar28 + 0x50);
      lVar10 = lVar16 >> 0x3f;
      lVar16 = lVar16 / 0x88 + lVar10;
      uVar20 = 0;
      if (lVar16 != lVar10) {
        lVar12 = 0;
        do {
          if (*(uint *)(lVar12 + 8 + *(longlong *)(lVar28 + 0x50)) == uVar1) goto LAB_1806b5fdb;
          uVar20 = uVar20 + 1;
          lVar12 = lVar12 + 0x88;
        } while (uVar20 < (ulonglong)(lVar16 - lVar10));
      }
      uVar20 = 0xffffffff;
LAB_1806b5fdb:
      bVar30 = true;
      if (uVar20 == 0xffffffff) {
        pcVar24 = (char *)*local_1d8;
        uVar20 = local_1d8[1] - (longlong)pcVar24 >> 5;
        uVar23 = 0;
        pcVar29 = pcVar24;
        if (uVar20 != 0) {
          do {
            if ((*pcVar29 == -0x7c) && (*(uint *)(pcVar29 + 4) == uVar1)) {
              if (uVar23 != 0xffffffff) {
                local_208 = local_1c8;
                uVar8 = FUN_1806896f0(&local_f8,pcVar24 + uVar23 * 0x20,&local_1e8,&local_1e7);
                if (*(longlong *)(lVar28 + 0x60) == *(longlong *)(lVar28 + 0x58)) {
                  FUN_18066d620(lVar28 + 0x50,*(undefined8 *)(lVar28 + 0x58),uVar8);
                }
                else {
                  FUN_180677c80(*(undefined8 *)(lVar28 + 0x58),uVar8);
                  *(longlong *)(lVar28 + 0x58) = *(longlong *)(lVar28 + 0x58) + 0x88;
                }
                local_f8 = pace::eden::thrift::pub::SecretDataRecord::vftable;
                FUN_180575ed0(&local_b8);
                FUN_180575ed0(&uStack_d0);
                FUN_180575ed0(&local_e8);
                uVar20 = (*(longlong *)(lVar28 + 0x58) - *(longlong *)(lVar28 + 0x50)) / 0x88 - 1;
                if ((*(ushort *)(*local_1d8 + 2 + uVar23 * 0x20) & 0x200) == 0) goto LAB_1806b6176;
                pcVar24 = (char *)(ulonglong)local_1cc;
                if (local_188 == puStack_190) {
                  local_1b8 = pcVar24;
                  FUN_18066d180(&local_198,puStack_190,&local_1b8);
                  lVar9 = local_198;
                }
                else {
                  *puStack_190 = (ulonglong)pcVar24;
                  puStack_190 = puStack_190 + 1;
                }
                local_1b8 = (char *)(ulonglong)(uVar1 + 1);
                if (local_1a0 == puStack_160) {
                  FUN_18066d180(&local_168,puStack_160,&local_1b8);
                  local_1a0 = local_158;
                  bVar30 = false;
                }
                else {
                  *puStack_160 = (ulonglong)local_1b8;
                  puStack_160 = puStack_160 + 1;
                  bVar30 = false;
                }
                goto LAB_1806b617a;
              }
              break;
            }
            uVar23 = uVar23 + 1;
            pcVar29 = pcVar29 + 0x20;
          } while (uVar23 < uVar20);
        }
        *(undefined4 *)(*(longlong *)(lVar28 + 0x50) + 0x58 + uVar22 * 0x88) = 5;
        *(undefined1 *)(uVar22 * 0x88 + 0x74 + *(longlong *)(lVar28 + 0x50)) = 0;
      }
      else {
LAB_1806b6176:
        pcVar24 = (char *)(ulonglong)local_1cc;
LAB_1806b617a:
        FUN_1806adfc0(uVar22,uVar20,local_1b0,local_1c8);
        if (bVar30) {
          for (uVar20 = local_150; uVar20 < (ulonglong)((longlong)puStack_190 - lVar9 >> 3);
              uVar20 = uVar20 + 1) {
            if (*(ulonglong *)(lVar9 + uVar20 * 8) == (ulonglong)uVar1) {
              *(char **)(lVar9 + uVar20 * 8) = pcVar24;
              break;
            }
          }
        }
      }
      local_1c0 = local_1c0 + 8;
      uVar20 = local_150 + 1;
      bVar30 = local_150 < (ulonglong)((longlong)puStack_190 - lVar9 >> 3);
      local_150 = uVar20;
    } while (bVar30);
  }
  local_200 = local_1c8;
  local_208 = CONCAT31(local_208._1_3_,local_1d0);
  FUN_1806a94d0(local_1b0,local_1cd,local_1ce,local_1cf);
  if (local_120[0] != 0) {
    FUN_1805bd810(local_120,local_120[0],local_120[2] - local_120[0] >> 5);
  }
  if (local_168 != 0) {
    FUN_1805bd950(&local_168,local_168,(longlong)local_1a0 - local_168 >> 3);
  }
  FUN_18047cfb0(&local_198);
  FUN_18047cfb0(&local_140);
  FUN_18047cfb0(&local_180);
}



############ FUN_ 1806b62b0 size=902 ############

/* WARNING: Instruction at (ram,0x0001806b664e) overlaps instruction at (ram,0x0001806b664d)
    */
/* WARNING: Removing unreachable block (ram,0x0001806b63ea) */
/* WARNING: Removing unreachable block (ram,0x0001806b6337) */
/* WARNING: Removing unreachable block (ram,0x0001806b664d) */

longlong FUN_1806b62b0(undefined8 param_1,undefined8 param_2,longlong *param_3,undefined8 param_4,
                      undefined8 param_5,undefined4 param_6)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  int iVar4;
  uint uVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  uint uVar8;
  longlong lVar9;
  int unaff_retaddr;
  undefined8 auStack_390 [2];
  undefined *puStack_380;
  undefined1 auStack_378 [48];
  undefined1 local_348;
  undefined1 local_347;
  undefined1 local_346;
  undefined1 local_345;
  undefined1 local_344;
  undefined4 local_340;
  undefined4 local_33c;
  undefined8 local_338;
  undefined8 local_330;
  undefined8 local_328;
  undefined8 local_310;
  undefined8 local_308;
  longlong *local_300;
  uint local_2f0;
  uint local_2ec;
  longlong local_2e8 [4];
  undefined4 local_2c8 [4];
  undefined8 *local_2b8;
  undefined8 local_298;
  char *local_280;
  undefined8 local_278;
  undefined8 local_270;
  ulonglong local_40;
  
  local_270 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_378;
  local_33c = param_6;
  uVar5 = (uint)&stack0x00000000;
  uVar8 = ((uVar5 & 0x4dff) * (uVar5 & 0x4dff) + 1) % 7;
  local_2f0 = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x6143 ^ 0x64e3;
  uVar8 = uVar5 & 0x2bf;
  iVar4 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  if ((((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e & 4U) == 0) {
    uVar8 = ((uVar5 & 0x7ff) + 1) * (uVar5 & 0x7ff) + 0x5679 & 0x80000001;
  }
  else {
    uVar8 = 0x307effc;
  }
  local_2ec = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x3d58 ^ 0x3518;
  local_344 = 0;
  local_345 = 0;
  local_346 = 0;
  local_347 = 0;
  if ((param_3 == (longlong *)0x0) || (local_348 = 0, param_3[1] - *param_3 >> 2 == 0)) {
    local_348 = 1;
  }
  puStack_380 = (undefined *)0x1806b6447;
  local_310 = param_4;
  local_300 = param_3;
  local_298 = param_1;
  local_278 = param_2;
  FUN_1808c6a00(param_1,local_2e8);
  local_340 = 0x811c9ddb;
  puVar6 = (undefined8 *)0x0;
  if (local_2e8[0] != 0) {
    puStack_380 = (undefined *)
                  ((*(longlong **)(local_2e8[0] + 8))[1] - **(longlong **)(local_2e8[0] + 8) >> 5);
    do {
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    local_330 = 0;
    local_308 = 0x9ffff0;
    local_328 = 0x1809ffff0;
    local_338 = 0x180a07fec;
    do {
      lVar9 = (longlong)param_3 + (longlong)puStack_380;
      param_3 = (longlong *)(((longlong)puStack_380 - lVar9 ^ 0xffffffffffffffffU) + 1);
      puStack_380 = (undefined *)(lVar9 - (longlong)param_3);
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    auStack_390[0] = param_1;
                    /* WARNING: Call to offcut address within same function */
    uVar3 = func_0x0001806b66ab();
    plVar7 = (longlong *)(ulonglong)((int)auStack_390 - 0x20);
    lVar9 = plVar7[4];
    plVar7[4] = lVar9 + 0x19c;
    plVar7[3] = lVar9 + 0x6bd;
    plVar7[2] = lVar9 + 0x1d4dc;
    plVar7[1] = lVar9 + 0x5d7;
    *plVar7 = lVar9 + 0x5d7;
    plVar7[-1] = lVar9 + 0x487f;
    plVar7[-2] = lVar9 + 0x4390;
    plVar7[-3] = lVar9 + 0x5d7;
    plVar7[-4] = lVar9 + 0x44ef;
    return -(~uVar3 + 1);
  }
  puStack_380 = (undefined *)0x1806b6475;
  local_2b8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_2b8 != (undefined8 *)0x0) {
    puStack_380 = (undefined *)0x1806b648d;
    FUN_1805a48c0(local_2b8,"Could not get a vector of CountLimits");
  }
  puStack_380 = (undefined *)0x1806b649f;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_2b8 = puVar1;
  if (puVar1 != (undefined8 *)0x0) {
    puStack_380 = (undefined *)0x1806b64ba;
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    puVar6 = puVar1;
  }
  local_2c8[0] = 0x2541;
  local_280 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  puStack_380 = (undefined *)0x1806b64da;
  uVar2 = FUN_1805a21d0(puVar6[1],&local_280);
                    /* WARNING: Subroutine does not return */
  puStack_380 = &UNK_1806b64e6;
  FUN_1805b20d0(uVar2,local_2c8);
}



############ FUN_ 1806bbd30 size=1369 ############

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

longlong FUN_1806bbd30(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  BOOL BVar2;
  ulonglong uVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  HANDLE hEvent;
  undefined4 extraout_var;
  undefined8 *puVar6;
  undefined1 auStack_218 [80];
  undefined1 local_1c8;
  undefined1 local_1c7;
  undefined8 local_1c0;
  undefined8 local_1b8;
  undefined8 local_1b0;
  undefined8 local_1a8;
  undefined8 uStack_1a0;
  undefined8 local_198;
  ulonglong local_188;
  undefined8 *local_178;
  undefined4 local_170 [8];
  undefined4 local_150;
  undefined4 local_14c;
  longlong local_148;
  longlong local_140;
  undefined8 local_138;
  undefined8 local_130;
  longlong local_128;
  ulonglong local_100;
  uint *local_f0;
  char local_e8;
  char *local_e0 [6];
  undefined8 local_b0;
  ulonglong local_58;
  
  local_b0 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_218;
  local_150 = 0x200;
  local_14c = 0xf30;
  local_140 = param_2 + 0x68;
  local_1a8 = 0;
  uStack_1a0 = 0;
  puVar6 = (undefined8 *)0x0;
  local_198 = 0;
  local_1c8 = 0;
  local_1c7 = 0;
  local_148 = param_2;
  local_138 = param_4;
  local_130 = param_3;
  local_128 = param_1;
  uVar3 = FUN_1806a5950(param_1);
  local_100 = FUN_1806a4590(param_1);
  local_100 = uVar3 & local_100;
  FUN_1805b45f0(&local_f0,param_1 + 0x18);
  local_1b0 = 0;
  local_188 = 0x34e0;
  local_1c0 = 0x1806c2c84;
  local_1b8 = 0x1806c6164;
  if (*(longlong *)(param_1 + 0x48) != 0) {
    uVar3 = local_188;
    if ((local_e8 != '\0') && (*local_f0 = *local_f0 - 1, *local_f0 == 0)) {
      LOCK();
      local_f0[1] = 0;
      UNLOCK();
      local_f0 = local_f0 + 2;
      LOCK();
      uVar1 = *local_f0;
      uVar3 = (ulonglong)uVar1;
      *local_f0 = *local_f0 + 0x80000000;
      UNLOCK();
      if (((uVar1 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar1)) {
        LOCK();
        uVar1 = *local_f0;
        *local_f0 = *local_f0 | 0x40000000;
        UNLOCK();
        if ((uVar1 >> 0x1e & 1) == 0) {
          hEvent = (HANDLE)FUN_1805a9100();
          BVar2 = SetEvent(hEvent);
          uVar3 = CONCAT44(extraout_var,BVar2);
        }
      }
    }
    return (-uVar3 ^ 0xffffffffffffffff) + 1;
  }
  local_178 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_178 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_178,
                  "verifyAuthFusion_LocalOnly_SwAndIlok2 requires an encrypted channel setup with openLicenseDaemonEncryptedChannel"
                 );
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x18);
  local_178 = puVar4;
  if (puVar4 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
    *puVar4 = pace::PaceLocationInfoFormatter::vftable;
    puVar6 = puVar4;
  }
  local_170[0] = 0x13c6;
  local_e0[0] = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar5 = FUN_1805a21d0(puVar6[1],local_e0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,local_170);
}



############ FUN_ 1806bd240 size=6274 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806bd240(longlong param_1,void **param_2,longlong param_3,undefined8 param_4,
                  undefined ***param_5,longlong *param_6,longlong param_7,longlong *param_8,
                  undefined8 *param_9)

{
  longlong *plVar1;
  int *piVar2;
  char *pcVar3;
  uint uVar4;
  void *pvVar5;
  longlong *plVar6;
  undefined ***pppuVar7;
  char cVar8;
  undefined1 uVar9;
  undefined4 uVar10;
  int iVar11;
  void **ppvVar12;
  undefined8 uVar13;
  longlong lVar14;
  undefined8 *puVar15;
  void **ppvVar16;
  void **ppvVar17;
  ulonglong uVar18;
  longlong lVar19;
  HANDLE hEvent;
  uint *puVar20;
  bool bVar21;
  undefined1 auStack_738 [32];
  undefined ***local_718;
  undefined ***local_710;
  undefined ***local_708;
  undefined8 *local_700;
  undefined8 local_6f8;
  undefined4 local_6f0;
  undefined1 local_6e8;
  undefined1 local_6e0;
  undefined1 local_6d8;
  undefined1 local_6d0;
  undefined8 local_6c8;
  undefined4 local_6c0;
  char local_6b8;
  char local_6b7;
  undefined1 local_6b6;
  undefined1 local_6b5 [5];
  void **local_6b0;
  longlong local_6a8;
  int local_6a0;
  int local_69c;
  int local_698 [2];
  undefined **local_690;
  longlong local_688;
  longlong lStack_680;
  undefined4 local_678;
  undefined4 local_674;
  longlong *local_670;
  longlong local_668;
  undefined8 *puStack_660;
  undefined8 *local_658;
  longlong local_650;
  longlong *local_648;
  longlong local_640;
  undefined1 local_638 [2];
  ushort local_636;
  int local_634;
  int local_630;
  int local_62c [2];
  int local_624;
  undefined4 local_61c;
  undefined4 local_618;
  undefined ***local_610;
  longlong local_608;
  void **local_600;
  longlong local_5f8;
  undefined8 *local_5e8;
  undefined1 *puStack_5e0;
  longlong local_5d8;
  longlong *local_5d0;
  undefined4 local_5c8;
  undefined4 local_5c4;
  undefined4 local_5c0 [2];
  undefined4 local_5b8 [2];
  undefined4 local_5b0 [2];
  undefined4 local_5a8 [2];
  undefined4 local_5a0 [4];
  undefined4 local_590 [2];
  undefined4 local_588 [2];
  longlong local_580;
  undefined8 local_578;
  undefined4 local_570 [2];
  void **local_568 [4];
  undefined4 local_548 [2];
  undefined4 local_540 [2];
  void *local_538;
  longlong lStack_530;
  longlong local_528;
  void *local_520;
  longlong lStack_518;
  longlong local_510;
  undefined1 local_4e8 [8];
  undefined1 local_4e0 [8];
  undefined8 *local_4d8;
  undefined **local_4c8;
  undefined1 local_4c0;
  undefined8 local_4bc;
  undefined4 local_4b4;
  undefined8 local_4b0;
  undefined8 local_4a8;
  undefined8 uStack_4a0;
  undefined8 local_498;
  undefined8 uStack_490;
  undefined8 local_488;
  undefined4 local_480;
  undefined2 local_47c;
  undefined8 local_478;
  char *local_470 [2];
  undefined8 local_460;
  undefined1 local_458 [8];
  undefined8 local_450;
  undefined8 local_448;
  char *local_440;
  char *local_438;
  char *local_430;
  void **local_428;
  undefined8 local_420;
  undefined8 local_418;
  undefined8 local_410;
  longlong local_408;
  undefined8 local_400;
  longlong local_3f8;
  longlong local_3f0;
  longlong local_3e8;
  int *local_3e0;
  char local_3d8;
  char *local_3d0;
  char *local_3c8;
  char *local_3c0;
  char *local_3b8 [4];
  undefined8 local_398;
  char *local_390 [5];
  undefined **local_368;
  undefined2 local_360;
  undefined8 local_358;
  undefined8 uStack_350;
  undefined8 local_348;
  undefined8 uStack_340;
  undefined8 local_338;
  undefined8 uStack_330;
  undefined4 local_328;
  undefined2 local_324;
  longlong local_318;
  longlong lStack_310;
  longlong local_308;
  longlong lStack_300;
  longlong local_2f8;
  longlong lStack_2f0;
  longlong local_2e8;
  longlong lStack_2e0;
  undefined **local_2d8;
  undefined8 local_2d0;
  undefined8 local_2c8;
  undefined8 uStack_2c0;
  undefined8 local_2b8;
  undefined8 uStack_2b0;
  undefined8 local_2a8;
  undefined8 uStack_2a0;
  undefined8 local_298;
  undefined8 uStack_290;
  undefined8 local_288;
  undefined8 uStack_280;
  undefined8 local_278;
  undefined4 local_270;
  undefined8 local_268;
  undefined8 uStack_260;
  undefined4 local_258;
  undefined4 uStack_254;
  undefined4 uStack_250;
  int iStack_24c;
  undefined8 local_248;
  undefined1 local_238 [8];
  undefined1 local_230 [8];
  longlong local_228;
  void **local_220;
  longlong local_218;
  undefined8 *local_208;
  undefined1 *puStack_200;
  undefined8 *local_1f8;
  undefined1 *puStack_1f0;
  undefined1 local_1e8 [8];
  longlong *local_1e0;
  undefined1 local_1d8 [8];
  longlong *local_1d0;
  undefined1 local_1c8 [8];
  undefined1 local_1c0 [8];
  undefined8 *local_1b8;
  longlong local_1b0;
  void **local_1a8;
  longlong local_1a0;
  undefined8 *local_198;
  undefined1 local_190 [8];
  longlong local_188;
  undefined1 local_170 [32];
  undefined8 local_150;
  undefined8 local_148 [2];
  undefined **local_138;
  undefined8 local_130 [2];
  undefined8 local_120;
  undefined8 local_118;
  undefined **local_110;
  int local_108;
  void *local_100;
  undefined2 local_f8;
  undefined2 local_f0;
  undefined **local_e8;
  undefined1 local_e0 [144];
  char local_50;
  ulonglong local_48;
  
  local_248 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_738;
  local_610 = param_5;
  local_648 = param_6;
  local_650 = param_7;
  local_670 = param_8;
  local_4d8 = param_9;
  ppvVar16 = (void **)0x0;
  local_608 = 0;
  local_420 = 0x7ffffffffffffffe;
  local_5c8 = 0xfffffffe;
  local_6a8 = param_1;
  local_640 = param_3;
  local_600 = param_2;
  local_5f8 = param_1;
  local_580 = param_3;
  local_478 = param_4;
  FUN_1805b41e0(&local_690,&local_5c8,&local_420);
  local_418 = 0x7ffffffffffffffe;
  local_5c4 = 0xfffffffe;
  FUN_1805b41e0(&local_578,&local_5c4,&local_418);
  local_520 = (void *)0x0;
  lStack_518 = 0;
  local_510 = 0;
  local_538 = (void *)0x0;
  lStack_530 = 0;
  local_528 = 0;
  local_668 = 0;
  puStack_660 = (undefined8 *)0x0;
  local_658 = (undefined8 *)0x0;
  if (((longlong)param_2[2] - (longlong)param_2[1]) / 0x438 == 0) {
    local_6b0 = (void **)FUN_1811316e0(0x18);
    if (local_6b0 != (void **)0x0) {
      FUN_1805a48c0(local_6b0,"The AuthChain from the caller is empty");
    }
    ppvVar12 = (void **)FUN_1811316e0(0x18);
    local_6b0 = ppvVar12;
    if (ppvVar12 != (void **)0x0) {
      FUN_1805a48c0(ppvVar12,"|__FILE__|%s|__LINE__|%d");
      *ppvVar12 = pace::PaceLocationInfoFormatter::vftable;
      ppvVar16 = ppvVar12;
    }
    local_5c0[0] = 0x36b2;
    local_3d0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar13 = FUN_1805a21d0(ppvVar16[1],&local_3d0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,local_5c0);
  }
  if (*(char *)(param_2 + 4) == '\0') {
    local_6b0 = (void **)FUN_1811316e0(0x18);
    if (local_6b0 != (void **)0x0) {
      FUN_1805a48c0(local_6b0,"Can\'t verify an authChain that is marked as not authorized.");
    }
    ppvVar12 = (void **)FUN_1811316e0(0x18);
    local_6b0 = ppvVar12;
    if (ppvVar12 != (void **)0x0) {
      FUN_1805a48c0(ppvVar12,"|__FILE__|%s|__LINE__|%d");
      *ppvVar12 = pace::PaceLocationInfoFormatter::vftable;
      ppvVar16 = ppvVar12;
    }
    local_590[0] = 0x36b9;
    local_3c8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar13 = FUN_1805a21d0(ppvVar16[1],&local_3c8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,local_590);
  }
  local_138 = pace::eden::thrift::authorize::AuthLocation::vftable;
  local_120 = 0;
  local_118 = 0xf;
  local_130[0]._0_1_ = 0;
  FUN_1805a6cb0(local_130,&DAT_181baf991,0);
  local_110 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  local_100 = (void *)0x0;
  local_f8 = 0;
  local_108 = 1;
  local_f0 = 0;
  lVar14 = FUN_1807064c0();
  puVar15 = (undefined8 *)(lVar14 + 0x40);
  if (local_130 != puVar15) {
    if (0xf < *(ulonglong *)(lVar14 + 0x58)) {
      puVar15 = (undefined8 *)*puVar15;
    }
    FUN_1805a6cb0(local_130,puVar15,*(undefined8 *)(lVar14 + 0x50));
  }
  if ((char *)local_4d8[1] == (char *)*local_4d8) {
    local_108 = 2;
  }
  else {
    local_108 = (int)*(char *)*local_4d8;
  }
  local_100 = param_2[0xe];
  local_f0 = CONCAT11(1,(undefined1)local_f0);
  FUN_1805b45f0(&local_3e0,param_1 + 0x18);
  if (*(longlong *)(param_1 + 0x48) == 0) {
    local_6b0 = (void **)FUN_1811316e0(0x18);
    if (local_6b0 != (void **)0x0) {
      FUN_1805a48c0(local_6b0,
                    "verifyAuth requires an encrypted channel setup with openLicenseDaemonEncryptedChannel or openQuickLicenseDaemonEncryptedChannel"
                   );
    }
    ppvVar12 = (void **)FUN_1811316e0(0x18);
    local_6b0 = ppvVar12;
    if (ppvVar12 != (void **)0x0) {
      FUN_1805a48c0(ppvVar12,"|__FILE__|%s|__LINE__|%d");
      *ppvVar12 = pace::PaceLocationInfoFormatter::vftable;
      ppvVar16 = ppvVar12;
    }
    local_5b8[0] = 0x36d2;
    local_3c0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar13 = FUN_1805a21d0(ppvVar16[1],&local_3c0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,local_5b8);
  }
  if (*(char *)(param_3 + 0xf) != '\0') {
    local_4c8 = pace::eden::thrift::fusion::DlcKeyExchangeInput::vftable;
    local_4bc = 0x1e;
    local_4b4 = 0;
    local_4b0 = 0;
    local_4a8 = 0;
    uStack_4a0 = 0;
    local_498 = 0;
    uStack_490 = 0;
    local_488 = 0;
    local_480 = 0;
    local_47c = 0;
    local_368 = pace::eden::thrift::fusion::DlcKeyExchangeOutput::vftable;
    local_360 = 0;
    local_358 = 0;
    uStack_350 = 0;
    local_348 = 0;
    uStack_340 = 0;
    local_338 = 0;
    uStack_330 = 0;
    local_328 = 0;
    local_324 = 0;
    local_4c0 = *(undefined1 *)(param_3 + 8);
    local_6b6 = 0;
    local_5e8 = &local_4b0;
    puStack_5e0 = &local_6b6;
    local_208 = local_5e8;
    puStack_200 = puStack_5e0;
    FUN_1805e1ee0(&local_4b0,0x10,&local_208);
    local_6b5[0] = 0;
    local_5e8 = &local_498;
    puStack_5e0 = local_6b5;
    local_1f8 = local_5e8;
    puStack_1f0 = puStack_5e0;
    FUN_1805e1ee0(&local_498,0x60,&local_1f8);
    FUN_180694cf0(param_1,param_2,&local_4c8,&local_368);
    if ((char)local_360 != '\0') {
      local_6b0 = (void **)FUN_1811316e0(0x18);
      if (local_6b0 != (void **)0x0) {
        FUN_1805a48c0(local_6b0,&DAT_181baf991);
      }
      lVar14 = FUN_1805c0260();
      local_5b0[0] = 0x36ec;
      local_3b8[0] = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar13 = FUN_1805a21d0(*(undefined8 *)(lVar14 + 8),local_3b8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar13,local_5b0);
    }
    FUN_1805b7d00(&local_368);
    FUN_1805b7c40(&local_4c8);
  }
  local_e8 = pace::eden::thrift::authorize::DirectLocationConnectionInfo::vftable;
  FUN_180574fe0(local_e0);
  local_50 = '\0';
  local_410 = *(undefined8 *)(param_1 + 0x48);
  local_408 = *(longlong *)(param_1 + 0x50);
  if (local_408 != 0) {
    LOCK();
    *(int *)(local_408 + 8) = *(int *)(local_408 + 8) + 1;
    UNLOCK();
  }
  local_400 = *(undefined8 *)(param_1 + 8);
  local_3f8 = *(longlong *)(param_1 + 0x10);
  if (local_3f8 != 0) {
    LOCK();
    *(int *)(local_3f8 + 8) = *(int *)(local_3f8 + 8) + 1;
    UNLOCK();
  }
  local_708 = &local_e8;
  local_718 = (undefined ***)&local_410;
  local_710 = param_2;
  FUN_1806ae410(&local_688,&local_400,&local_138,*(undefined4 *)(param_1 + 0x40));
  local_2f8 = local_688;
  lStack_2f0 = lStack_680;
  if (lStack_680 != 0) {
    LOCK();
    *(int *)(lStack_680 + 8) = *(int *)(lStack_680 + 8) + 1;
    UNLOCK();
  }
  local_718 = (undefined ***)((ulonglong)local_718 & 0xffffffffffffff00);
  FUN_180642440(local_170,&local_2f8,0,0);
  if (local_50 != '\0') {
    FUN_18067de20(param_2 + 0x43,local_e0);
  }
  local_3f0 = *(longlong *)(local_688 + 8);
  local_3e8 = *(longlong *)(local_688 + 0x10);
  if (local_3e8 != 0) {
    LOCK();
    *(int *)(local_3e8 + 8) = *(int *)(local_3e8 + 8) + 1;
    UNLOCK();
  }
  if (local_3f0 == 0) {
    local_568[0] = (void **)FUN_1811316e0(0x18);
    if (local_568[0] != (void **)0x0) {
      FUN_1805a48c0(local_568[0],"Protocols object is missing a commander");
    }
    ppvVar12 = (void **)FUN_1811316e0(0x18);
    if (ppvVar12 != (void **)0x0) {
      local_568[0] = ppvVar12;
      FUN_1805a48c0(ppvVar12,"|__FILE__|%s|__LINE__|%d");
      *ppvVar12 = pace::PaceLocationInfoFormatter::vftable;
      ppvVar16 = ppvVar12;
    }
    local_540[0] = 0x3726;
    local_568[0] = (void **)0x181bbe3b0;
    uVar13 = FUN_1805a21d0(ppvVar16[1],local_568);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,local_540);
  }
  if (*(uint *)(param_3 + 0x10) < 5) {
    *(uint *)(local_3f0 + 0x3c0) = *(uint *)(param_3 + 0x10);
  }
  puVar15 = (undefined8 *)FUN_18064b170(local_688,local_1e8);
  local_718 = (undefined ***)((ulonglong)local_718 & 0xffffffff00000000);
  local_5d8 = __RTDynamicCast(*puVar15,0,&pace::ILokConduit::RTTI_Type_Descriptor,
                              &pace::ILokConduitAuthClient::RTTI_Type_Descriptor);
  local_5d0 = (longlong *)puVar15[1];
  if (local_5d0 != (longlong *)0x0) {
    LOCK();
    *(int *)(local_5d0 + 1) = (int)local_5d0[1] + 1;
    UNLOCK();
  }
  if (local_5d8 == 0) {
    local_398 = 0;
    FUN_18060c7a0(&local_5d0,&local_398);
  }
  plVar1 = local_5d0;
  cVar8 = FUN_180935060(local_5d8,local_688);
  plVar6 = local_5d0;
  if (plVar1 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar1 + 1;
    lVar14 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar14 == 1) {
      (**(code **)(*local_5d0 + 8))(local_5d0);
      LOCK();
      piVar2 = (int *)((longlong)plVar6 + 0xc);
      iVar11 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar11 == 1) {
        (**(code **)(*local_5d0 + 0x10))();
      }
    }
  }
  if (local_1e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_1e0 + 1;
    lVar14 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar14 == 1) {
      (**(code **)(*local_1e0 + 8))(local_1e0);
      LOCK();
      piVar2 = (int *)((longlong)local_1e0 + 0xc);
      iVar11 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar11 == 1) {
        (**(code **)(*local_1e0 + 0x10))(local_1e0);
      }
    }
  }
  if (cVar8 == '\0') {
    FUN_18064b020(local_688,local_1d8,0,0xfffffffe);
    if (local_1d0 != (longlong *)0x0) {
      LOCK();
      plVar1 = local_1d0 + 1;
      lVar14 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar14 == 1) {
        (**(code **)(*local_1d0 + 8))(local_1d0);
        LOCK();
        piVar2 = (int *)((longlong)local_1d0 + 0xc);
        iVar11 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar11 == 1) {
          (**(code **)(*local_1d0 + 0x10))(local_1d0);
        }
      }
    }
  }
  else {
    local_608 = 1;
  }
  local_678 = *(undefined4 *)(param_1 + 0x188);
  local_618 = *(undefined4 *)(param_1 + 0x18c);
  do {
    lVar14 = local_688;
    *(undefined2 *)(param_2 + 4) = 0x101;
    pcVar3 = (char *)((longlong)param_2 + 0x24);
    pcVar3[0] = 'd';
    pcVar3[1] = '\0';
    pcVar3[2] = '\0';
    pcVar3[3] = '\0';
    local_6b7 = '\0';
    uVar10 = FUN_180604990();
    local_718 = (undefined ***)local_4e0;
    FUN_1806515e0(lVar14,uVar10,local_678,local_4e8);
    puVar15 = (undefined8 *)FUN_18076a230(local_238,local_4e8);
    local_690 = (undefined **)*puVar15;
    puVar15 = (undefined8 *)FUN_18076a230(local_230,local_4e0);
    local_578 = *puVar15;
    ppvVar12 = param_2 + 1;
    if ((ulonglong)
        (*(longlong *)((longlong)*ppvVar12 + 0x20) - *(longlong *)((longlong)*ppvVar12 + 0x18)) < 4)
    {
      local_228 = FUN_1811316e0(0x18);
      if (local_228 != 0) {
        FUN_1805a48c0(local_228,
                      "The AuthChain\'s internalReference does not have enough data for an ILok2Ref"
                     );
      }
      ppvVar12 = (void **)FUN_1811316e0(0x18);
      local_220 = ppvVar12;
      if (ppvVar12 != (void **)0x0) {
        FUN_1805a48c0(ppvVar12,"|__FILE__|%s|__LINE__|%d");
        *ppvVar12 = pace::PaceLocationInfoFormatter::vftable;
        ppvVar16 = ppvVar12;
      }
      local_548[0] = 0x378d;
      local_390[0] = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar13 = FUN_1805a21d0(ppvVar16[1],local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar13,local_548);
    }
    uVar10 = FUN_18061f8c0(*(undefined8 *)((longlong)*ppvVar12 + 0x18));
    local_674 = uVar10;
    if ((local_648 == (longlong *)0x0) || ((ulonglong)(local_648[1] - *local_648) < 8)) {
      FUN_180605430(&local_150,8);
LAB_1806bdee4:
      local_6f0 = 0;
    }
    else {
      local_150 = *(undefined8 *)*local_648;
      local_6f0 = 0x80000000;
      if (*(char *)(param_3 + 8) != '\0') goto LAB_1806bdee4;
    }
    local_6f8 = 0;
    local_700 = local_148;
    local_710 = (undefined ***)&local_150;
    local_718 = (undefined ***)local_698;
    local_708._0_4_ = *(undefined4 *)(param_1 + 400);
    FUN_180644700(local_688,uVar10,&local_6a0,&local_69c);
    pppuVar7 = local_610;
    param_3 = local_640;
    pvVar5 = *ppvVar12;
    if (((local_6a0 != *(int *)((longlong)pvVar5 + 8)) ||
        (local_69c != *(int *)((longlong)pvVar5 + 0xc))) ||
       (local_698[0] != *(int *)((longlong)pvVar5 + 0x10))) {
      local_218 = FUN_1811316e0(0x18);
      if (local_218 != 0) {
        ppvVar16 = (void **)FUN_1805a48c0(local_218,
                                          "The expected auth (a:0x%08X, p:0x%08X, i:0x%08X) does not match the iLok2 auth found (a:0x%08X, p:0x%08X, i:0x%08X) using ILok2Ref (0x%08X)"
                                         );
      }
      puVar15 = (undefined8 *)FUN_1811316e0(0x18);
      local_1b8 = puVar15;
      if (puVar15 != (undefined8 *)0x0) {
        FUN_1805a48c0(puVar15,"|__FILE__|%s|__LINE__|%d");
        *puVar15 = pace::PaceLocationInfoFormatter::vftable;
      }
      pvVar5 = param_2[1];
      FUN_18060e760(ppvVar16[1],&local_6a0);
      FUN_18060e760(ppvVar16[1],&local_69c);
      FUN_18060e760(ppvVar16[1],local_698);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(ppvVar16[1],(longlong)pvVar5 + 8);
    }
    if (((local_610 == (undefined ***)0x0) && (*(char *)(local_640 + 0xe) == '\0')) &&
       (*(char *)(local_640 + 10) == '\0')) {
      local_710 = &local_690;
      local_718 = (undefined ***)((ulonglong)local_718._1_7_ << 8);
      FUN_180649e20(local_688,uVar10,local_638,&local_668);
    }
    else {
      local_710 = &local_690;
      local_718 = (undefined ***)((ulonglong)local_718._1_7_ << 8);
      FUN_180648f40(local_688,uVar10,local_638,&local_668);
      local_2d8 = pace::eden::thrift::pub::AuthStorage::vftable;
      local_2d0 = 0;
      local_2c8 = 0;
      uStack_2c0 = 0;
      local_2b8 = 0;
      uStack_2b0 = 0;
      local_2a8 = 0;
      uStack_2a0 = 0;
      local_298 = 0;
      uStack_290 = 0;
      local_288 = 0;
      uStack_280 = 0;
      local_278 = 0;
      local_270 = 0;
      local_718 = &local_2d8;
      if (pppuVar7 != (undefined ***)0x0) {
        local_718 = pppuVar7;
      }
      local_708._0_4_ = 4;
      local_710 = (undefined ***)0x0;
      FUN_1806b5230(local_638,&local_668,&local_690,local_478);
      local_2d8 = pace::eden::thrift::pub::AuthStorage::vftable;
      FUN_1806802c0(&local_288);
      FUN_180680380(&uStack_2a0);
      FUN_180680200(&local_2b8);
      FUN_180680130(&local_2d0);
    }
    if (((local_6a0 != local_630) || (local_69c != local_634)) || (local_698[0] != local_62c[0])) {
      local_1b0 = FUN_1811316e0(0x18);
      ppvVar12 = ppvVar16;
      if (local_1b0 != 0) {
        ppvVar12 = (void **)FUN_1805a48c0(local_1b0,
                                          "The iLok2 auth (a:0x%08X, p:0x%08X, i:0x%08X) from challenge does not match the iLok2 auth (a:0x%08X, p:0x%08X, i:0x%08X) getAuthRecordWithTerms "
                                         );
      }
      ppvVar17 = (void **)FUN_1811316e0(0x18);
      local_1a8 = ppvVar17;
      if (ppvVar17 != (void **)0x0) {
        FUN_1805a48c0(ppvVar17,"|__FILE__|%s|__LINE__|%d");
        *ppvVar17 = pace::PaceLocationInfoFormatter::vftable;
        ppvVar16 = ppvVar17;
      }
      FUN_18060e760(ppvVar12[1],&local_6a0);
      FUN_18060e760(ppvVar12[1],&local_69c);
      FUN_18060e760(ppvVar12[1],local_698);
      FUN_18060e760(ppvVar12[1],&local_630);
      FUN_18060e760(ppvVar12[1],&local_634);
      FUN_18060e760(ppvVar12[1],local_62c);
      local_5a0[0] = 0x387e;
      local_470[0] = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar13 = FUN_1805a21d0(ppvVar16[1],local_470);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar13,local_5a0);
    }
    if ((*(char *)(param_3 + 9) == '\0') || ((local_636 & 0x4000) == 0)) {
      uVar9 = 0;
    }
    else {
      local_2e8 = local_688;
      lStack_2e0 = lStack_680;
      if (lStack_680 != 0) {
        LOCK();
        *(int *)(lStack_680 + 8) = *(int *)(lStack_680 + 8) + 1;
        UNLOCK();
      }
      uVar9 = FUN_180681780(param_1,&local_668,&local_2e8,local_674);
    }
    local_6b8 = '\0';
    uVar18 = FUN_1806a68d0(param_1);
    bVar21 = ((ulonglong)param_2[0xd] & uVar18) != 0;
    local_6c0 = 4;
    local_6c8 = *(undefined8 *)(param_3 + 0x18);
    local_6d8 = *(undefined1 *)(param_3 + 0xe);
    local_6e0 = 1;
    local_6f0 = CONCAT31(local_6f0._1_3_,1);
    local_6f8 = CONCAT71(local_6f8._1_7_,1);
    local_700 = (undefined8 *)CONCAT71(local_700._1_7_,1);
    local_708 = &local_690;
    local_710 = (undefined ***)&local_6b8;
    local_718 = (void **)0x0;
    local_6e8 = uVar9;
    local_6d0 = bVar21;
    FUN_1806b1af0(param_2,local_638,&local_668,0);
    ppvVar12 = ppvVar16;
    if ((*(char *)(param_3 + 9) != '\0') || (*(char *)(param_3 + 0xc) != '\0')) {
      while (local_624 != -1) {
        lVar14 = FUN_1805fcae0();
        if ((ulonglong)(longlong)*(int *)(lVar14 + 0x28) <= (longlong)ppvVar12 + 2U) {
          local_1a0 = FUN_1811316e0(0x18);
          if (local_1a0 != 0) {
            ppvVar16 = (void **)FUN_1805a48c0(local_1a0,
                                              "The authChain is too long, exceeding %d auths");
          }
          puVar15 = (undefined8 *)FUN_1811316e0(0x18);
          local_198 = puVar15;
          if (puVar15 != (undefined8 *)0x0) {
            FUN_1805a48c0(puVar15,"|__FILE__|%s|__LINE__|%d");
            *puVar15 = pace::PaceLocationInfoFormatter::vftable;
          }
          lVar14 = FUN_1805fcae0();
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(ppvVar16[1],lVar14 + 0x28);
        }
        local_710 = &local_690;
        local_718 = (undefined ***)((ulonglong)local_718 & 0xffffffffffffff00);
        FUN_180649e20(local_688,local_624,local_638,&local_668);
        if (*(char *)(param_3 + 10) != '\0') {
          local_718 = (undefined ***)&local_268;
          FUN_180647dc0(local_688,local_61c,0x81,0x80000002);
          if (iStack_24c != -1) {
            if (local_658 == puStack_660) {
              FUN_18063fa90(&local_668,puStack_660,&local_268);
            }
            else {
              *puStack_660 = local_268;
              puStack_660[1] = uStack_260;
              *(undefined4 *)(puStack_660 + 2) = local_258;
              *(undefined4 *)((longlong)puStack_660 + 0x14) = uStack_254;
              *(undefined4 *)(puStack_660 + 3) = uStack_250;
              *(int *)((longlong)puStack_660 + 0x1c) = iStack_24c;
              puStack_660 = puStack_660 + 4;
            }
          }
        }
        if (((*(char *)(param_3 + 9) == '\0') || ((local_636 & 0x4000) == 0)) ||
           (((local_636 & 0x8000) == 0 &&
            (((local_6b8 != '\0' || ((local_636 & 0x400) == 0)) || ((local_636 & 0x20) == 0)))))) {
          local_6e8 = 0;
        }
        else {
          local_318 = local_688;
          lStack_310 = lStack_680;
          if (lStack_680 != 0) {
            LOCK();
            *(int *)(lStack_680 + 8) = *(int *)(lStack_680 + 8) + 1;
            UNLOCK();
          }
          local_6e8 = FUN_180681780(local_6a8,&local_668,&local_318,local_61c);
        }
        local_6c0 = 4;
        local_6c8 = *(undefined8 *)(param_3 + 0x18);
        local_6d8 = 0;
        local_6e0 = 1;
        local_6f0 = CONCAT31(local_6f0._1_3_,1);
        local_6f8 = CONCAT71(local_6f8._1_7_,1);
        local_700 = (undefined8 *)CONCAT71(local_700._1_7_,1);
        local_708 = &local_690;
        local_710 = (undefined ***)&local_6b8;
        local_718 = (void **)((longlong)ppvVar12 + 1);
        local_6d0 = bVar21;
        FUN_1806b1af0(param_2,local_638,&local_668,0);
        ppvVar12 = (void **)((longlong)ppvVar12 + 1);
      }
    }
    plVar1 = local_670;
    param_1 = local_6a8;
    if (local_6b8 == '\0') {
      *(undefined2 *)(param_2 + 4) = 0;
      pcVar3 = (char *)((longlong)param_2 + 0x24);
      pcVar3[0] = '\0';
      pcVar3[1] = '\0';
      pcVar3[2] = '\0';
      pcVar3[3] = '\0';
    }
    else if (((*(char *)(param_2 + 4) != '\0') &&
             (*(char *)((longlong)param_2 + 0x21) = '\0', local_650 != 0)) &&
            ((local_670 != (longlong *)0x0 && (local_670[1] != *local_670)))) {
      local_308 = local_688;
      lStack_300 = lStack_680;
      if (lStack_680 != 0) {
        LOCK();
        *(int *)(lStack_680 + 8) = *(int *)(lStack_680 + 8) + 1;
        UNLOCK();
      }
      local_710 = &local_538;
      local_718 = &local_520;
      FUN_1806a0c50(local_6a8,&local_308,param_2,local_650);
      local_6b7 = '\x01';
    }
    FUN_1805b10b0(param_2 + 1,(longlong)ppvVar12 + 1,param_2 + 1);
    cVar8 = FUN_180647f00(local_688,local_618,0);
    plVar6 = local_648;
    if (cVar8 != '\0') {
      if (*(char *)(param_2 + 4) != '\0') {
        if (*(char *)(param_3 + 0xb) != '\0') {
          FUN_180681af0(param_1,param_2);
        }
        if (plVar6 != (longlong *)0x0) {
          FUN_1805b0f50(plVar6,8,plVar6);
          *(undefined8 *)*plVar6 = local_148[0];
        }
        if (local_6b7 != '\0') {
          local_708 = (undefined ***)*plVar1;
          local_710 = (undefined ***)(plVar1[1] - (longlong)local_708);
          local_718 = &local_538;
          FUN_1806917d0(*(undefined4 *)(local_650 + 8),1,*(undefined4 *)(local_650 + 0xc),&local_520
                       );
          memset(local_538,0,lStack_530 - (longlong)local_538);
          memset(local_520,0,lStack_518 - (longlong)local_520);
        }
        FUN_180663c70(&local_690,param_2 + 5);
        FUN_180663c70(&local_578,param_2 + 9);
        FUN_1805b9860(&local_3e8);
        FUN_180643940(local_170);
        FUN_1805b9860(&lStack_680);
        local_e8 = pace::eden::thrift::authorize::DirectLocationConnectionInfo::vftable;
        FUN_180575070(local_e0);
        if ((local_3d8 != '\0') && (*local_3e0 = *local_3e0 + -1, *local_3e0 == 0)) {
          LOCK();
          local_3e0[1] = 0;
          UNLOCK();
          puVar20 = (uint *)(local_3e0 + 2);
          LOCK();
          uVar4 = *puVar20;
          *puVar20 = *puVar20 + 0x80000000;
          UNLOCK();
          if (((uVar4 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar4)) {
            LOCK();
            uVar4 = *puVar20;
            *puVar20 = *puVar20 | 0x40000000;
            UNLOCK();
            if ((uVar4 >> 0x1e & 1) == 0) {
              hEvent = (HANDLE)FUN_1805a9100();
              SetEvent(hEvent);
            }
          }
        }
        FUN_1806798f0(&local_138);
        if (local_668 != 0) {
          FUN_1805bd810(&local_668,local_668,(longlong)local_658 - local_668 >> 5);
          local_668 = 0;
          puStack_660 = (undefined8 *)0x0;
          local_658 = (undefined8 *)0x0;
        }
        if (local_538 != (void *)0x0) {
          FUN_1805a7bf0(&local_538,local_538,local_528 - (longlong)local_538);
          local_538 = (void *)0x0;
          lStack_530 = 0;
          local_528 = 0;
        }
        if (local_520 != (void *)0x0) {
          FUN_1805a7bf0(&local_520,local_520,local_510 - (longlong)local_520);
          local_520 = (void *)0x0;
          lStack_518 = 0;
          local_510 = 0;
        }
        FUN_180575ed0(local_4d8);
      }
      local_460 = 300000000;
      FUN_1805c5170(local_458,&local_578,&local_690);
      puVar15 = (undefined8 *)FUN_1805af150(local_458,local_190,&local_460);
      local_448 = *puVar15;
      local_450 = 0;
      iVar11 = FUN_1805bd370(&local_448,&local_450);
      if (iVar11 == -1) {
        lVar14 = FUN_1805c0220(
                              "Not Authorized & MasterTime for location %s//%X is ahead of the computer time."
                              );
        lVar19 = FUN_1805c0260();
        FUN_1805b23b0(*(undefined8 *)(lVar14 + 8),param_2 + 0xe);
        local_5a8[0] = 0x39ba;
        local_440 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar13 = FUN_1805a21d0(*(undefined8 *)(lVar19 + 8),&local_440);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar13,local_5a8);
      }
      FUN_1805c0220("iLok1 VerifyAuth: Not authorized");
      lVar14 = FUN_1805c0260();
      local_570[0] = 0x39c2;
      local_438 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar13 = FUN_1805a21d0(*(undefined8 *)(lVar14 + 8),&local_438);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar13,local_570);
    }
    if (local_608 == 0) {
      local_608 = local_608 + -1;
      local_188 = FUN_1811316e0(0x18);
      if (local_188 != 0) {
        FUN_1805a48c0(local_188,"The iLok2\'s signature of the commands and results was wrong");
      }
      ppvVar12 = (void **)FUN_1811316e0(0x18);
      local_428 = ppvVar12;
      if (ppvVar12 != (void **)0x0) {
        FUN_1805a48c0(ppvVar12,"|__FILE__|%s|__LINE__|%d");
        *ppvVar12 = pace::PaceLocationInfoFormatter::vftable;
        ppvVar16 = ppvVar12;
      }
      local_588[0] = 0x39d2;
      local_430 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar13 = FUN_1805a21d0(ppvVar16[1],&local_430);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar13,local_588);
    }
    local_608 = local_608 + -1;
    FUN_18064b020(local_688,local_1c8,0,0xfffffffe);
    FUN_1805b9860(local_1c0);
  } while( true );
}



############ FUN_ 1806becf0 size=7386 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_1806becf0(longlong *param_1,undefined1 *param_2,longlong param_3,undefined8 param_4,
                  longlong param_5,undefined8 *param_6,longlong param_7,longlong *param_8,
                  longlong *param_9)

{
  void *pvVar1;
  char cVar2;
  int iVar3;
  char *pcVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong *plVar7;
  char *pcVar8;
  tm *ptVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  undefined8 *puVar12;
  longlong lVar13;
  undefined1 *puVar14;
  void *pvVar15;
  undefined1 *puVar16;
  uint uVar17;
  uint uVar18;
  longlong lVar19;
  uint uVar20;
  longlong *plVar21;
  undefined1 auStack_3468 [32];
  longlong *local_3448;
  longlong *local_3440;
  char *local_3438;
  undefined8 *local_3430;
  undefined8 *local_3428;
  undefined8 *local_3420;
  longlong local_3418;
  undefined4 local_3410;
  char local_3408;
  char local_3407 [3];
  uint local_3404;
  uint local_3400 [2];
  uint local_33f8 [2];
  char *local_33f0;
  longlong *local_33e8;
  undefined1 local_33e0 [8];
  int local_33d8;
  int local_33d4;
  longlong local_33d0;
  longlong lStack_33c8;
  longlong local_33c0;
  longlong local_33b8;
  longlong local_33b0;
  ulonglong local_33a8;
  longlong local_33a0;
  undefined4 local_3398 [2];
  undefined4 local_3390 [2];
  undefined4 local_3388 [2];
  undefined4 local_3380 [2];
  undefined4 local_3378 [2];
  undefined4 local_3370 [2];
  undefined4 local_3368 [2];
  undefined4 local_3360 [2];
  undefined4 local_3358 [2];
  undefined4 local_3350 [8];
  undefined4 local_3330 [2];
  undefined4 local_3328 [6];
  undefined4 local_3310 [8];
  undefined1 *local_32f0;
  char *local_32e8;
  undefined4 local_32e0 [2];
  undefined8 *local_32d8;
  undefined8 local_32c8;
  longlong lStack_32c0;
  longlong local_32b8;
  void *local_32b0;
  longlong lStack_32a8;
  longlong local_32a0;
  undefined8 local_3298;
  undefined8 uStack_3290;
  undefined8 local_3288;
  undefined8 local_3280;
  undefined8 local_3278;
  undefined8 local_3270;
  void *local_3268;
  undefined8 uStack_3260;
  longlong local_3258;
  undefined **local_3250;
  undefined8 local_3248;
  undefined8 uStack_3240;
  undefined8 local_3238;
  undefined4 local_3230;
  undefined4 local_322c;
  undefined2 local_3228;
  undefined1 local_3226;
  char *local_3220;
  char *local_3218;
  char *local_3210;
  char *local_3208 [2];
  char *local_31f8;
  undefined8 local_31f0;
  undefined8 *local_31a8;
  undefined8 local_31a0;
  undefined1 local_3198 [8];
  undefined8 local_3190;
  undefined8 local_3188;
  char *local_3180;
  longlong local_3178;
  longlong local_3170;
  longlong *local_3168;
  longlong *local_3160;
  char *local_3158;
  longlong local_3150;
  longlong local_3148;
  longlong local_3140;
  longlong local_3138;
  int *local_3130;
  char local_3128;
  char *local_3120;
  char *local_3118;
  char *local_3110;
  char *local_3108;
  longlong local_3100;
  longlong lStack_30f8;
  undefined8 local_30f0;
  undefined8 local_30e8;
  undefined8 uStack_30e0;
  undefined8 local_30d8;
  __time64_t local_30d0;
  char *local_30c8;
  undefined8 local_30c0;
  undefined8 uStack_30b8;
  undefined8 local_30b0;
  undefined8 local_30a8;
  undefined8 uStack_30a0;
  undefined8 local_3098;
  undefined8 uStack_3090;
  longlong local_3088;
  undefined8 *local_3080;
  longlong local_3078;
  undefined8 *local_3070;
  longlong local_3068;
  undefined8 *local_3060;
  undefined1 local_3058 [8];
  longlong local_3050;
  undefined8 *local_3048;
  longlong local_3040;
  undefined8 *local_3038;
  longlong local_3030;
  undefined8 *local_3028;
  longlong local_3020;
  undefined8 *local_3018;
  longlong local_3010;
  undefined8 *local_3008;
  longlong local_3000;
  undefined8 local_2ff8;
  undefined1 local_2ff0 [8];
  longlong *local_2fe8;
  longlong local_2fe0;
  undefined8 *local_2fd8;
  longlong local_2fd0;
  undefined8 *local_2fc8;
  undefined8 local_2fc0;
  undefined8 uStack_2fb8;
  longlong local_2fb0;
  undefined8 *local_2fa8;
  longlong local_2fa0;
  undefined8 *local_2f98;
  undefined1 local_2f90 [8];
  longlong local_2f88;
  undefined8 *local_2f80;
  undefined8 *local_2f78;
  longlong local_2f70;
  undefined1 local_2f68 [24];
  undefined1 local_2f50 [24];
  undefined1 local_2f38 [32];
  undefined **local_2f18;
  undefined1 local_2f10 [3224];
  undefined4 local_2278;
  undefined2 local_2274;
  undefined1 local_2268 [6592];
  undefined1 local_8a8;
  undefined7 uStack_8a7;
  undefined8 local_898;
  ulonglong local_890;
  undefined8 local_888 [2];
  undefined8 local_878;
  ulonglong local_870;
  undefined **local_868;
  uint local_860;
  undefined4 uStack_85c;
  undefined4 uStack_858;
  undefined4 uStack_854;
  undefined8 local_850;
  ulonglong uStack_848;
  undefined1 local_840 [16];
  undefined8 local_830;
  undefined8 local_828;
  undefined8 local_820;
  undefined8 local_818;
  undefined2 local_810;
  undefined1 local_80e;
  undefined1 local_808;
  undefined7 uStack_807;
  undefined8 local_7f8;
  ulonglong local_7f0;
  undefined **local_7e8;
  longlong local_7e0 [2];
  undefined8 local_7d0;
  undefined8 local_7c8;
  undefined **local_7c0;
  undefined4 local_7b8;
  undefined8 local_7b0;
  undefined2 local_7a8;
  undefined2 local_7a0;
  uint local_798;
  undefined4 uStack_794;
  undefined4 uStack_790;
  undefined4 uStack_78c;
  undefined1 local_778 [8];
  undefined4 local_770;
  undefined1 local_768 [32];
  undefined4 local_748;
  undefined1 local_740 [88];
  undefined **local_6e8;
  undefined1 local_6e0 [752];
  undefined8 local_3f0;
  undefined8 local_3e8;
  undefined8 uStack_3e0;
  undefined8 local_3d8;
  undefined4 local_3d0;
  undefined1 local_3c8 [24];
  undefined1 local_3b0 [832];
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_58;
  undefined8 uStack_48;
  
  uStack_48 = 0x1806bed0f;
  local_2ff8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_3468;
  local_3178 = param_5;
  local_31a8 = param_6;
  local_3170 = param_7;
  local_3168 = param_8;
  local_3160 = param_9;
  local_2fe8 = param_9;
  local_32c8 = 0;
  lStack_32c0 = 0;
  uVar5 = 0;
  local_32b8 = 0;
  local_30e8 = 0;
  uStack_30e0 = 0;
  local_30d8 = 0;
  local_33d0 = 0;
  lStack_33c8 = 0;
  local_33c0 = 0;
  local_3298 = 0;
  uStack_3290 = 0;
  local_3288 = 0;
  local_3280 = 0;
  local_3278 = 0;
  local_3270 = 0;
  local_33e8 = param_1;
  local_33a0 = param_3;
  local_32f0 = param_2;
  local_31f0 = param_4;
  local_3278 = FUN_1805bbda0(&local_3278);
  local_33a8 = 0;
  local_3408 = '\0';
  local_3407[0] = '\x01';
  local_898 = 0;
  local_890 = 0xf;
  local_8a8 = 0;
  local_878 = 0;
  local_870 = 0xf;
  local_888[0]._0_1_ = 0;
  if ((*(longlong *)(param_2 + 0x10) - *(longlong *)(param_2 + 8)) / 0x438 == 0) {
    local_33f0 = (char *)FUN_1811316e0(0x18);
    if (local_33f0 != (char *)0x0) {
      FUN_1805a48c0(local_33f0,"The AuthChain from the caller is empty");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_33f0 = pcVar4;
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_3398[0] = 0x3ab3;
    local_3158 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_3158);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_3398);
  }
  if (param_2[0x20] == '\0') {
    local_33f0 = (char *)FUN_1811316e0(0x18);
    if (local_33f0 != (char *)0x0) {
      FUN_1805a48c0(local_33f0,"Can\'t verify an authChain that is marked as not authorized.");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_33f0 = pcVar4;
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_3390[0] = 0x3aba;
    local_3120 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_3120);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_3390);
  }
  if ((*(char *)(param_3 + 0xf) != '\0') && (cVar2 = FUN_1806aa7e0(param_1), cVar2 == '\0')) {
    local_33f0 = (char *)FUN_1811316e0(0x18);
    if (local_33f0 != (char *)0x0) {
      FUN_1805a48c0(local_33f0,&DAT_181baf991);
    }
    lVar6 = FUN_1805c0260();
    local_3388[0] = 0x3ac3;
    local_3118 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar6 + 8),&local_3118);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_3388);
  }
  local_7e8 = pace::eden::thrift::authorize::AuthLocation::vftable;
  pcVar4 = (char *)0x0;
  local_7d0 = 0;
  local_7c8 = 0xf;
  local_7e0[0]._0_1_ = 0;
  FUN_1805a6cb0(local_7e0,&DAT_181baf991,0);
  local_7c0 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  local_7b0 = 0;
  local_7a8 = 0;
  local_7b8 = 1;
  local_7a0 = 0;
  plVar7 = (longlong *)*param_9;
  lVar6 = param_9[1] - (longlong)plVar7;
  if (lVar6 == 0) {
    lVar6 = FUN_1807064c0();
    plVar7 = (longlong *)(lVar6 + 0x20);
    if (local_7e0 != plVar7) {
      if (0xf < *(ulonglong *)(lVar6 + 0x38)) {
        plVar7 = (longlong *)*plVar7;
      }
      lVar6 = *(longlong *)(lVar6 + 0x30);
      goto LAB_1806bf0d6;
    }
  }
  else {
LAB_1806bf0d6:
    FUN_1805a6cb0(local_7e0,plVar7,lVar6);
  }
  FUN_1805b45f0(&local_3130,param_1 + 3);
  if (param_1[9] == 0) {
    local_33f0 = (char *)FUN_1811316e0(0x18);
    if (local_33f0 != (char *)0x0) {
      FUN_1805a48c0(local_33f0,
                    "verifyAuth requires an encrypted channel setup with openLicenseDaemonEncryptedChannel or openQuickLicenseDaemonEncryptedChannel"
                   );
    }
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_33f0 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar8;
    }
    local_3380[0] = 0x3ade;
    local_3110 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_3110);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_3380);
  }
  local_3150 = param_1[9];
  local_3148 = param_1[10];
  if (local_3148 != 0) {
    LOCK();
    *(int *)(local_3148 + 8) = *(int *)(local_3148 + 8) + 1;
    UNLOCK();
  }
  local_3140 = param_1[1];
  local_3138 = param_1[2];
  if (local_3138 != 0) {
    LOCK();
    *(int *)(local_3138 + 8) = *(int *)(local_3138 + 8) + 1;
    UNLOCK();
  }
  local_3428 = (undefined8 *)0x0;
  local_3430 = (undefined8 *)0x0;
  local_3438 = (char *)0x0;
  local_3448 = &local_3150;
  local_3440 = (longlong *)param_2;
  FUN_18092d1f0(local_3c8,&local_3140,&local_7e8,(int)param_1[8]);
  FUN_18066c1a0(&local_30e8,local_70,local_68,local_3408);
  lVar6 = *(longlong *)(*(longlong *)(param_2 + 8) + 0x20) -
          *(longlong *)(*(longlong *)(param_2 + 8) + 0x18);
  if (lVar6 == 0) {
    local_32e8 = (char *)FUN_1811316e0(0x18);
    if (local_32e8 != (char *)0x0) {
      FUN_1805a48c0(local_32e8,
                    "The AuthChain\'s internalReference (the license database uuid string) is empty"
                   );
    }
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_32e8 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar8;
    }
    local_3378[0] = 0x3aef;
    local_3108 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_3108);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_3378);
  }
  FUN_1805a6cb0(&local_8a8,*(undefined8 *)(*(longlong *)(param_2 + 8) + 0x18),lVar6);
  uVar18 = 0;
  local_3400[0] = 0;
  local_33f8[0] = 0;
  local_3404 = 0;
  _time64(&local_30d0);
  ptVar9 = _gmtime64(&local_30d0);
  if (ptVar9 == (tm *)0x0) {
    uVar5 = FUN_1805b6c80(local_2f38,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
    FUN_1805b3e60(uVar5);
  }
  FUN_1805bd670(&local_33b8,ptVar9);
  local_32e8 = (char *)0x7ffffffffffffffe;
  local_3370[0] = 0xfffffffe;
  FUN_1805b41e0(local_33e0,local_3370,&local_32e8);
  local_2fc0 = 0;
  uStack_2fb8 = 0;
  param_2[0x20] = 1;
  *(undefined4 *)(param_2 + 0x24) = 100;
  uVar17 = uVar18;
  uVar20 = uVar18;
  do {
    lVar6 = 0;
    local_868 = pace::eden::thrift::authorize::FindSoftwareLicensesInput::vftable;
    local_850 = 0;
    uStack_848 = 0xf;
    local_860 = local_860 & 0xffffff00;
    FUN_1805a6cb0(&local_860,&DAT_181baf991,0);
    local_830 = 0;
    local_828 = 0xf;
    local_840[0] = 0;
    FUN_1805a6cb0(local_840,&DAT_181baf991,0);
    local_820 = 0;
    local_818 = 0;
    local_810 = 0;
    local_80e = 0;
    local_2f18 = pace::eden::thrift::authorize::FindSoftwareLicensesReturn::vftable;
    FUN_180677570(local_2f10);
    local_2278 = 4;
    local_2274 = 0;
    FUN_1805a4070(&local_798,local_3b0);
    if (0xf < uStack_848) {
      pvVar1 = (void *)CONCAT44(uStack_85c,local_860);
      pvVar15 = pvVar1;
      if ((0xfff < uStack_848 + 1) &&
         (pvVar15 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar15);
    }
    local_860 = local_798;
    uStack_85c = uStack_794;
    uStack_858 = uStack_790;
    uStack_854 = uStack_78c;
    puVar16 = &local_8a8;
    if (0xf < local_890) {
      puVar16 = (undefined1 *)CONCAT71(uStack_8a7,local_8a8);
    }
    FUN_1805a6cb0(local_840,puVar16,local_898);
    local_820 = CONCAT44(uVar20,uVar18);
    local_818._0_5_ = CONCAT14(1,uVar17);
    local_3268 = (void *)0x0;
    uStack_3260 = 0;
    local_3258 = 0;
    local_32b0 = (void *)0x0;
    lStack_32a8 = 0;
    local_32a0 = 0;
    FUN_1806738f0(&local_868,&local_3268,1);
    FUN_1806b86d0(param_1,0x14,&local_3268,&local_32b0);
    FUN_180671780(local_32b0,lStack_32a8 - (longlong)local_32b0,&local_2f18);
    local_7f8 = 0;
    local_7f0 = 0xf;
    local_808 = 0;
    FUN_1805a6cb0(&local_808,&DAT_181baf991,0);
    FUN_1807ffc30(local_2268,local_2f10,&local_808,0);
    if (0xf < local_7f0) {
      pvVar1 = (void *)CONCAT71(uStack_807,local_808);
      pvVar15 = pvVar1;
      if ((0xfff < local_7f0 + 1) &&
         (pvVar15 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar15);
    }
    local_7f8 = 0;
    local_7f0 = 0xf;
    local_808 = 0;
    FUN_1808b74b0(&local_33b0,local_2268);
    if (local_33b0 == 0) {
      local_2fe0 = FUN_1811316e0(0x18);
      if (local_2fe0 != 0) {
        FUN_1805a48c0(local_2fe0,"Could not get a vector of Licenses");
      }
      puVar10 = (undefined8 *)FUN_1811316e0(0x18);
      local_2fd8 = puVar10;
      if (puVar10 == (undefined8 *)0x0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
        *puVar10 = pace::PaceLocationInfoFormatter::vftable;
      }
      local_3368[0] = 0x3b2a;
      local_30c8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
      ;
      uVar5 = FUN_1805a21d0(puVar10[1],&local_30c8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,local_3368);
    }
    uVar11 = FUN_1808ba830();
    if (uVar18 == 0) {
      if (uVar11 == 0) {
        local_2fb0 = FUN_1811316e0(0x18);
        if (local_2fb0 != 0) {
          lVar6 = FUN_1805a48c0(local_2fb0,"The target auth (uuid: %s) was not found in any license"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_2fa8 = puVar10;
        if (puVar10 == (undefined8 *)0x0) {
          puVar10 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_1805b2240(*(undefined8 *)(lVar6 + 8),&local_8a8);
        local_3360[0] = 0x3b40;
        local_3220 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(puVar10[1],&local_3220);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,local_3360);
      }
      if (1 < uVar11) {
        local_2fa0 = FUN_1811316e0(0x18);
        if (local_2fa0 != 0) {
          lVar6 = FUN_1805a48c0(local_2fa0,
                                "The target auth (uuid: %s) was found in multiple licenses");
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_2f98 = puVar10;
        if (puVar10 == (undefined8 *)0x0) {
          puVar10 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_1805b2240(*(undefined8 *)(lVar6 + 8),&local_8a8);
        local_3358[0] = 0x3b49;
        local_3218 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(puVar10[1],&local_3218);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,local_3358);
      }
      plVar7 = (longlong *)FUN_1808b4d40(local_33b0,local_2f90,0);
      plVar7 = (longlong *)*plVar7;
      if (plVar7 == (longlong *)0x0) {
        local_2f88 = FUN_1811316e0(0x18);
        if (local_2f88 == 0) {
          lVar6 = 0;
        }
        else {
          lVar6 = FUN_1805a48c0(local_2f88,
                                "Could not get a pointer to the License for the target auth (uuid: %s) "
                               );
        }
        puVar10 = (undefined8 *)0x0;
        puVar12 = (undefined8 *)FUN_1811316e0(0x18);
        local_2f78 = puVar12;
        if (puVar12 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar12,"|__FILE__|%s|__LINE__|%d");
          *puVar12 = pace::PaceLocationInfoFormatter::vftable;
          puVar10 = puVar12;
        }
        FUN_1805b2240(*(undefined8 *)(lVar6 + 8),&local_8a8);
        local_3310[0] = 0x3b52;
        local_3210 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(puVar10[1],&local_3210);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,local_3310);
      }
      puVar10 = (undefined8 *)(**(code **)(*plVar7 + 0x40))(plVar7);
      if (local_888 != puVar10) {
        puVar12 = puVar10;
        if (0xf < (ulonglong)puVar10[3]) {
          puVar12 = (undefined8 *)*puVar10;
        }
        FUN_1805a6cb0(local_888,puVar12,puVar10[2]);
      }
      cVar2 = FUN_180925360(plVar7,&local_3298);
      if (cVar2 == '\0') {
        local_2f70 = FUN_1811316e0(0x18);
        if (local_2f70 == 0) {
          lVar6 = 0;
        }
        else {
          lVar6 = FUN_1805a48c0(local_2f70,
                                "The license containing the target auth (uuid: %s) has a signature that does not verify"
                               );
        }
        puVar10 = (undefined8 *)0x0;
        puVar12 = (undefined8 *)FUN_1811316e0(0x18);
        local_2fc8 = puVar12;
        if (puVar12 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar12,"|__FILE__|%s|__LINE__|%d");
          *puVar12 = pace::PaceLocationInfoFormatter::vftable;
          puVar10 = puVar12;
        }
        FUN_1805b2240(*(undefined8 *)(lVar6 + 8),&local_8a8);
        local_3350[0] = 0x3b60;
        local_3208[0] =
             "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(puVar10[1],local_3208);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,local_3350);
      }
      lVar6 = FUN_180870eb0(plVar7);
      FUN_18080ca00(plVar7,*(undefined1 *)(lVar6 + 0x21b),"issuerId");
      lVar6 = FUN_180870eb0(plVar7);
      plVar21 = local_33e8;
      if (local_3280._4_4_ != *(int *)(lVar6 + 0xe0)) {
        local_3088 = FUN_1811316e0(0x18);
        if (local_3088 == 0) {
          lVar6 = 0;
        }
        else {
          lVar6 = FUN_1805a48c0(local_3088,
                                "The license containing the target auth (uuid: %s) was signed by an invalid issuer (ID:0x%08X)"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3080 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_1805b2240(*(undefined8 *)(lVar6 + 8),&local_8a8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),(longlong)&local_3280 + 4);
      }
      lVar6 = 0;
      iVar3 = local_3280._4_4_;
      if (local_3280._4_4_ == 1) {
        iVar3 = 0;
      }
      local_33d8 = iVar3;
      local_33d4 = iVar3;
      FUN_18069eae0(local_33e8,plVar7,&local_8a8,&local_33d0);
      lVar19 = lStack_33c8 - local_33d0 >> 3;
      if (lVar19 == 0) {
        local_3078 = FUN_1811316e0(0x18);
        if (local_3078 != 0) {
          lVar6 = FUN_1805a48c0(local_3078,
                                "The license containing the target auth (uuid: %s) was not found in the license"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3070 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_1805b2240(*(undefined8 *)(lVar6 + 8),&local_8a8);
        local_32e0[0] = 0x3b90;
        local_31f8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
        ;
        uVar5 = FUN_1805a21d0(puVar10[1],&local_31f8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar5,local_32e0);
      }
      local_3428 = (undefined8 *)FUN_1806746f0(local_2f68,&local_33d0);
      local_30a8 = 0;
      uStack_30a0 = 0;
      local_3418 = local_33a0;
      local_3420 = &local_30e8;
      local_3430 = &local_32c8;
      local_3438 = local_3407;
      local_3440 = (longlong *)local_33e0;
      local_3448 = &local_33b8;
      FUN_1806c0e30(plVar21,plVar7,local_2268,&local_30a8);
      lVar6 = local_3178;
      uVar11 = local_33a8;
      puVar16 = local_32f0;
      if (local_3178 != 0) {
        FUN_1806b79a0(plVar21,0);
        local_3440 = (longlong *)CONCAT44(local_3440._4_4_,4);
        local_3448 = (longlong *)CONCAT44(local_3448._4_4_,(int)plVar21[0xd]);
        FUN_1806b62b0(*(undefined8 *)(local_33d0 + -8 + lVar19 * 8),local_33e0,local_31f0,lVar6);
        uVar11 = local_33a8;
        puVar16 = local_32f0;
      }
    }
    else {
      if (uVar11 == 0) {
        local_3068 = FUN_1811316e0(0x18);
        if (local_3068 != 0) {
          lVar6 = FUN_1805a48c0(local_3068,
                                "An external parent auth (a:0x%08X, p:0x%08X, i:0x%08X) was not found in any license"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3060 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),local_3400);
      }
      puVar10 = (undefined8 *)FUN_1808b4d40(local_33b0,local_3058,0);
      plVar7 = (longlong *)*puVar10;
      if (plVar7 == (longlong *)0x0) {
        local_3050 = FUN_1811316e0(0x18);
        if (local_3050 == 0) {
          lVar6 = 0;
        }
        else {
          lVar6 = FUN_1805a48c0(local_3050,
                                "Could not get a pointer to the License for the auth (a:0x%08X, p:0x%08X, i:0x%08X)"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3048 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),local_3400);
      }
      cVar2 = FUN_180925360(plVar7,&local_3298);
      if (cVar2 == '\0') {
        local_3040 = FUN_1811316e0(0x18);
        if (local_3040 == 0) {
          lVar6 = 0;
        }
        else {
          lVar6 = FUN_1805a48c0(local_3040,
                                "The license containing an external parent auth (a:0x%08X, p:0x%08X, i:0x%08X) has a signature that does not verify"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3038 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),local_3400);
      }
      lVar6 = FUN_180870eb0(plVar7);
      FUN_18080ca00(plVar7,*(undefined1 *)(lVar6 + 0x21b),"issuerId");
      lVar6 = FUN_180870eb0(plVar7);
      plVar21 = local_33e8;
      if (local_3280._4_4_ != *(int *)(lVar6 + 0xe0)) {
        local_3030 = FUN_1811316e0(0x18);
        if (local_3030 == 0) {
          lVar6 = 0;
        }
        else {
          lVar6 = FUN_1805a48c0(local_3030,
                                "The license containing the target auth (a:0x%08X, p:0x%08X, i:0x%08X) was signed by an invalid issuer (ID:0x%08X)"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3028 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),local_3400);
      }
      lVar6 = 0;
      iVar3 = local_3280._4_4_;
      if (local_3280._4_4_ == 1) {
        iVar3 = 0;
      }
      local_3440 = &local_33d0;
      local_3448 = (longlong *)CONCAT44(local_3448._4_4_,local_3404);
      local_33d8 = iVar3;
      local_33d4 = iVar3;
      FUN_18069e810(local_33e8,plVar7,uVar18,uVar20);
      lVar19 = lStack_33c8 - local_33d0 >> 3;
      if (lVar19 == 0) {
        local_3020 = FUN_1811316e0(0x18);
        if (local_3020 != 0) {
          lVar6 = FUN_1805a48c0(local_3020,
                                "The license containing an external parent auth (p:0x%08X, a:0x%08X, i:0x%08X) was not found in the license"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_3018 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),local_33f8);
      }
      local_3428 = (undefined8 *)FUN_1806746f0(local_2f50,&local_33d0);
      local_3098 = 0;
      uStack_3090 = 0;
      local_3418 = local_33a0;
      local_3420 = &local_30e8;
      local_3430 = (undefined8 *)0x0;
      local_3438 = (char *)0x0;
      local_3440 = (longlong *)local_33e0;
      local_3448 = &local_33b8;
      FUN_1806c0e30(plVar21,plVar7,local_2268,&local_3098);
      uVar11 = local_33a8;
      puVar16 = local_32f0;
    }
    while (local_33a8 = uVar11, lVar19 != 0) {
      lVar6 = 0;
      lVar19 = lVar19 + -1;
      uVar5 = *(undefined8 *)(local_33d0 + lVar19 * 8);
      (**(code **)(*plVar21 + 0x10))(plVar21,uVar5);
      if (iVar3 != 0) {
        lVar13 = FUN_180870eb0(uVar5);
        FUN_18080ca00(uVar5,*(undefined1 *)(lVar13 + 0x1f7),"publisherId");
        lVar13 = FUN_180870eb0(uVar5);
        if (iVar3 != *(int *)(lVar13 + 0xb8)) {
          local_3010 = FUN_1811316e0(0x18);
          if (local_3010 != 0) {
            lVar6 = FUN_1805a48c0(local_3010,
                                  "The issuer (0x%08X) of the auth (0x%08X) cannot issue an auth with a different PublisherId (0x%08X)"
                                 );
          }
          puVar10 = (undefined8 *)FUN_1811316e0(0x18);
          local_3008 = puVar10;
          if (puVar10 != (undefined8 *)0x0) {
            FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
            *puVar10 = pace::PaceLocationInfoFormatter::vftable;
          }
          lVar19 = FUN_180870eb0(uVar5);
          FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1f7),"publisherId");
          FUN_180870eb0(uVar5);
          lVar19 = FUN_180870eb0(uVar5);
          FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1eb),"authId");
          FUN_180870eb0(uVar5);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),&local_33d8);
        }
      }
      lVar6 = FUN_1805fcae0();
      puVar16 = local_32f0;
      if ((ulonglong)(longlong)*(int *)(lVar6 + 0x28) <= uVar11 + 1) {
        local_3000 = FUN_1811316e0(0x18);
        lVar6 = 0;
        if (local_3000 != 0) {
          lVar6 = FUN_1805a48c0(local_3000,"The auth chain is too long, exceeding %d auths");
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_2f80 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
        lVar19 = FUN_1805fcae0();
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),lVar19 + 0x28);
      }
      local_3410 = 4;
      local_3418 = *(longlong *)(local_33a0 + 0x18);
      local_3420 = (undefined8 *)
                   CONCAT71(local_3420._1_7_,uVar11 == 0 & *(byte *)(local_33a0 + 0xe));
      local_3428 = &local_32c8;
      local_3430 = (undefined8 *)CONCAT71(local_3430._1_7_,*(undefined1 *)(local_33a0 + 9));
      local_3438 = (char *)CONCAT71(local_3438._1_7_,1);
      local_3440 = (longlong *)local_33e0;
      local_3448 = (longlong *)&local_3408;
      FUN_1806b2f10(local_32f0,uVar5,plVar7,uVar11);
      uVar11 = uVar11 + 1;
      iVar3 = local_33d4;
    }
    lVar6 = 0;
    local_898 = 0;
    puVar14 = &local_8a8;
    if (0xf < local_890) {
      puVar14 = (undefined1 *)CONCAT71(uStack_8a7,local_8a8);
    }
    *puVar14 = 0;
    lVar19 = FUN_180870eb0(uVar5);
    FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1ef),"externalParentAuthId");
    lVar19 = FUN_180870eb0(uVar5);
    uVar18 = *(uint *)(lVar19 + 0x5c);
    local_3400[0] = uVar18;
    lVar19 = FUN_180870eb0(uVar5);
    FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1f1),"externalParentPublisherId");
    lVar19 = FUN_180870eb0(uVar5);
    uVar20 = *(uint *)(lVar19 + 100);
    local_33f8[0] = uVar20;
    lVar19 = FUN_180870eb0(uVar5);
    FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1f0));
    lVar19 = FUN_180870eb0(uVar5);
    uVar17 = *(uint *)(lVar19 + 0x60);
    local_3404 = uVar17;
    if ((uVar18 == 0) || (uVar20 == 0)) {
      if ((uVar18 & uVar20) != 0) {
        local_2fd0 = FUN_1811316e0(0x18);
        if (local_2fd0 != 0) {
          lVar6 = FUN_1805a48c0(local_2fd0,
                                "The external parent auth (a:0x%08X, p:0x%08X, i:0x%08X) has both zero and non-zero coordinates"
                               );
        }
        puVar10 = (undefined8 *)FUN_1811316e0(0x18);
        local_32d8 = puVar10;
        if (puVar10 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
          *puVar10 = pace::PaceLocationInfoFormatter::vftable;
        }
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar6 + 8),local_3400);
      }
      if (local_3407[0] != '\0') {
        lVar19 = FUN_180870eb0(uVar5);
        FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1eb));
        lVar19 = FUN_180870eb0(uVar5);
        if (*(int *)(lVar19 + 0x30) != 0x4801f777) {
          lVar19 = FUN_180870eb0(uVar5);
          FUN_18080ca00(uVar5,*(undefined1 *)(lVar19 + 0x1f7));
          lVar19 = FUN_180870eb0(uVar5);
          if (*(int *)(lVar19 + 0xb8) != 1) {
            uVar18 = 0x4801f777;
            local_3400[0] = 0x4801f777;
            uVar20 = 1;
            local_33f8[0] = 1;
            uVar17 = 0;
            local_3404 = 0;
          }
        }
      }
    }
    FUN_180803f00(local_2268);
    if (local_32b0 != (void *)0x0) {
      pvVar15 = local_32b0;
      if ((0xfff < (ulonglong)(local_32a0 - (longlong)local_32b0)) &&
         (pvVar15 = *(void **)((longlong)local_32b0 + -8),
         0x1f < (ulonglong)((longlong)local_32b0 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar15);
    }
    if (local_3268 != (void *)0x0) {
      pvVar15 = local_3268;
      if ((0xfff < (ulonglong)(local_3258 - (longlong)local_3268)) &&
         (pvVar15 = *(void **)((longlong)local_3268 + -8),
         0x1f < (ulonglong)((longlong)local_3268 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar15);
    }
    local_2f18 = pace::eden::thrift::authorize::FindSoftwareLicensesReturn::vftable;
    FUN_18067c110(local_2f10);
    local_868 = pace::eden::thrift::authorize::FindSoftwareLicensesInput::vftable;
    FUN_180485450(local_840);
    FUN_180485450(&local_860);
    plVar7 = local_33e8;
    param_1 = local_33e8;
  } while (uVar18 != 0);
  if (local_3408 == '\0') {
    *(undefined2 *)(puVar16 + 0x20) = 0;
    *(undefined4 *)(puVar16 + 0x24) = 0;
  }
  else {
    if (puVar16[0x20] == '\0') goto LAB_1806c0afb;
    puVar16[0x21] = 0;
  }
  if (puVar16[0x20] != '\0') {
    if (*(char *)(local_33a0 + 0xb) != '\0') {
      if (*(longlong *)(puVar16 + 0x68) == 1) {
        FUN_180676d70(local_778);
        local_770 = 100;
        puVar14 = (undefined1 *)local_888;
        if (0xf < local_870) {
          puVar14 = (undefined1 *)CONCAT71(local_888[0]._1_7_,(undefined1)local_888[0]);
        }
        FUN_1805a6cb0(local_768,puVar14,local_878);
        local_748 = 1;
        FUN_180663c70(local_33e0,local_740);
        if (local_32b8 == lStack_32c0) {
          FUN_18066cf60(&local_32c8,lStack_32c0,local_778);
        }
        else {
          FUN_180676cd0(lStack_32c0,local_778);
          lStack_32c0 = lStack_32c0 + 0x88;
        }
        FUN_18067ae90(local_778);
        plVar7 = local_33e8;
      }
      else {
        FUN_180681af0(local_33e8,puVar16);
      }
    }
    puVar10 = local_31a8;
    if (local_31a8 != (undefined8 *)0x0) {
      local_6e8 = pace::eden::thrift::authorize::ChallengeLicenseDbInput::vftable;
      FUN_180575180(local_6e0);
      local_3f0 = 0;
      local_3e8 = 0;
      uStack_3e0 = 0;
      local_3d8 = 0;
      local_3d0 = 0;
      local_3250 = pace::eden::thrift::authorize::ChallengeLicenseDbReturn::vftable;
      local_3248 = 0;
      uStack_3240 = 0;
      local_3238 = 0;
      local_3230 = 0;
      local_322c = 4;
      local_3228 = 0;
      local_3226 = 0;
      FUN_1805b9ea0(local_6e0,puVar16);
      FUN_1805b9910(&local_3f0,puVar10);
      local_3d8 = CONCAT44(*(undefined4 *)((longlong)plVar7 + 0x194),0x80000000);
      local_30c0 = 0;
      uStack_30b8 = 0;
      local_30b0 = 0;
      local_3100 = 0;
      lStack_30f8 = 0;
      local_30f0 = 0;
      FUN_180672770(&local_6e8,&local_30c0,1);
      FUN_1806b86d0(plVar7,2,&local_30c0,&local_3100);
      FUN_180670420(local_3100,lStack_30f8 - local_3100,&local_3250);
      if (puVar10 != &local_3248) {
        FUN_1805e1990(puVar10,local_3248,uStack_3240);
      }
      FUN_180575ed0(&local_3100);
      FUN_180575ed0(&local_30c0);
      FUN_18067ad70(&local_3250);
      FUN_18067acf0(&local_6e8);
    }
  }
LAB_1806c0afb:
  FUN_1806961b0(plVar7,&local_32c8,&local_7e8);
  if (puVar16[0x20] != '\0') {
    FUN_180663c70(local_33e0,puVar16 + 0x28);
    FUN_180663c70(&local_33b8,puVar16 + 0x48);
    if (((local_3170 != 0) && (local_3168 != (longlong *)0x0)) && (local_3168[1] != *local_3168)) {
      local_3440 = (longlong *)0x0;
      local_3448 = (longlong *)0x0;
      FUN_18068f530(plVar7,puVar16,local_3170,local_3168);
    }
    FUN_1805b9860(&uStack_2fb8);
    FUN_18092de40(local_3c8);
    if ((local_3128 != '\0') && (*local_3130 = *local_3130 + -1, *local_3130 == 0)) {
      LOCK();
      local_3130[1] = 0;
      UNLOCK();
      FUN_1806bbbc0(local_3130 + 2);
    }
    FUN_1806798f0(&local_7e8);
    if (0xf < local_870) {
      FUN_1805a7bf0(local_888,CONCAT71(local_888[0]._1_7_,(undefined1)local_888[0]),local_870 + 1);
    }
    if (0xf < local_890) {
      FUN_1805a7bf0(&local_8a8,CONCAT71(uStack_8a7,local_8a8),local_890 + 1);
    }
    local_898 = 0;
    local_890 = 0xf;
    local_8a8 = 0;
    FUN_18067d5e0(&local_3298);
    if (local_33d0 != 0) {
      FUN_1805bd950(&local_33d0,local_33d0,local_33c0 - local_33d0 >> 3);
      local_33d0 = 0;
      lStack_33c8 = 0;
      local_33c0 = 0;
    }
    FUN_1805bc170(&local_30e8);
    FUN_1806802c0(&local_32c8);
    FUN_180575ed0(local_3160);
  }
  local_31a0 = 300000000;
  FUN_1805c5170(local_3198,&local_33b8,local_33e0);
  puVar10 = (undefined8 *)FUN_1805af150(local_3198,local_2ff0,&local_31a0);
  local_3188 = *puVar10;
  local_3190 = 0;
  iVar3 = FUN_1805bd370(&local_3188,&local_3190);
  if (iVar3 != -1) {
    local_32d8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_32d8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_32d8,"iLok1 VerifyAuth: Not authorized");
    }
    lVar6 = FUN_1805c0260();
    local_3328[0] = 0x3ceb;
    local_33f0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar6 + 8),&local_33f0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_3328);
  }
  local_32d8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_32d8 != (undefined8 *)0x0) {
    lVar6 = FUN_1805a48c0(local_32d8,
                          "Not Authorized & MasterTime for location %s//%X is ahead of the computer time."
                         );
  }
  lVar19 = FUN_1805c0260();
  FUN_1805b23b0(*(undefined8 *)(lVar6 + 8),puVar16 + 0x70);
  local_3330[0] = 0x3ce6;
  local_3180 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\authorizationverifier.cpp"
  ;
  uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar19 + 8),&local_3180);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,local_3330);
}



############ FUN_ 1806c0e30 size=8232 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806c0e30(longlong *param_1,longlong *param_2,undefined8 param_3,ulonglong *param_4,
                  longlong *param_5,longlong *param_6,undefined1 *param_7,longlong *param_8,
                  longlong *param_9,undefined8 param_10,longlong param_11)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  ulonglong *puVar5;
  char cVar6;
  int iVar7;
  int iVar8;
  longlong *plVar9;
  undefined8 uVar10;
  longlong *plVar11;
  longlong lVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  longlong lVar15;
  longlong *plVar16;
  longlong *plVar17;
  longlong lVar18;
  int *piVar19;
  void *_Buf1;
  undefined8 ******ppppppuVar20;
  void *pvVar21;
  ulonglong uVar22;
  longlong **pplVar23;
  undefined8 **ppuVar24;
  longlong *plVar25;
  ulonglong uVar26;
  longlong *plVar27;
  undefined1 auStack_3d8 [32];
  longlong **local_3b8;
  undefined8 local_3b0;
  undefined4 local_3a8;
  int local_398 [2];
  longlong *local_390;
  longlong *local_388;
  longlong *local_380;
  undefined1 local_378 [8];
  longlong *local_370;
  longlong *local_368;
  undefined8 *local_360;
  longlong *local_358;
  longlong *local_350;
  longlong *local_348;
  undefined8 *local_340;
  ulonglong local_338;
  longlong *local_330;
  longlong *local_328;
  longlong local_320;
  longlong *local_318;
  longlong *local_310;
  longlong *local_308;
  longlong local_300;
  undefined1 *local_2f8;
  longlong *local_2f0;
  undefined8 *local_2e8;
  undefined8 *local_2e0;
  longlong *local_2d8;
  undefined8 local_2d0;
  ulonglong *local_2c8;
  longlong local_2c0 [9];
  undefined8 local_278;
  int iStack_274;
  undefined8 local_270;
  undefined8 local_268;
  undefined8 local_260;
  ulonglong *local_258;
  longlong *local_250;
  undefined1 local_248 [8];
  undefined8 *****local_240;
  longlong lStack_238;
  undefined8 *local_230;
  ulonglong local_228;
  undefined8 local_220 [2];
  longlong *local_210;
  ulonglong local_208;
  undefined8 local_200 [2];
  undefined8 local_1f0;
  undefined8 local_1e8;
  undefined8 local_1e0 [2];
  undefined8 local_1d0;
  undefined8 local_1c8;
  undefined1 local_1c0 [32];
  undefined1 local_1a0 [40];
  undefined1 local_178 [8];
  undefined4 local_170;
  undefined8 local_168 [4];
  undefined4 local_148;
  undefined1 local_140 [152];
  undefined1 local_a8 [32];
  undefined1 local_88 [32];
  undefined1 local_68 [32];
  ulonglong local_48;
  
  local_260 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_3d8;
  local_350 = param_5;
  local_318 = param_6;
  local_2f8 = param_7;
  local_348 = param_8;
  local_2f0 = param_9;
  local_250 = param_9;
  local_2d0 = param_10;
  local_2c0[6] = 0;
  local_2c0[7] = 0;
  plVar16 = (longlong *)0x0;
  local_2c0[8] = 0;
  local_278 = 0;
  local_270 = 0;
  local_268 = 0;
  local_310 = param_1;
  local_2d8 = param_2;
  local_2c8 = param_4;
  local_258 = param_4;
  local_270 = FUN_1805bbda0(&local_270);
  local_210 = (longlong *)0x0;
  local_208 = 0xf;
  local_220[0]._0_1_ = 0;
  local_370 = (longlong *)0x0;
  if (param_2 == (longlong *)0x0) {
    local_390 = (longlong *)FUN_1811316e0(0x18);
    if (local_390 != (longlong *)0x0) {
      FUN_1805a48c0(local_390,
                    "No License provided to AuthorizationVerifier::verifyDatabaseInfoMachineBindingsAndMasterTime"
                   );
    }
    plVar9 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar9;
    if (plVar9 != (longlong *)0x0) {
      FUN_1805a48c0(plVar9,"|__FILE__|%s|__LINE__|%d");
      *plVar9 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar16 = plVar9;
    }
    local_398[0] = 0x3da4;
    local_368 = (longlong *)0x181bbe3b0;
    uVar10 = FUN_1805a21d0(plVar16[1],&local_368);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_398);
  }
  FUN_180815890(&local_300,param_3);
  if (local_300 == 0) {
    local_390 = (longlong *)FUN_1811316e0(0x18);
    if (local_390 != (longlong *)0x0) {
      FUN_1805a48c0(local_390,"Could not get a vector of DatabaseInfos");
    }
    plVar9 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar9;
    if (plVar9 != (longlong *)0x0) {
      FUN_1805a48c0(plVar9,"|__FILE__|%s|__LINE__|%d");
      *plVar9 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar16 = plVar9;
    }
    local_398[0] = 0x3db4;
    local_368 = (longlong *)0x181bbe3b0;
    uVar10 = FUN_1805a21d0(plVar16[1],&local_368);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_398);
  }
  plVar9 = (longlong *)FUN_180818390();
  local_368 = plVar9;
  if (plVar9 == (longlong *)0x0) {
    local_390 = (longlong *)FUN_1811316e0(0x18);
    plVar9 = plVar16;
    if (local_390 != (longlong *)0x0) {
      plVar9 = (longlong *)
               FUN_1805a48c0(local_390,"No DatabaseInfo records found for license (UUID:%s)");
    }
    plVar11 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar11;
    if (plVar11 != (longlong *)0x0) {
      FUN_1805a48c0(plVar11,"|__FILE__|%s|__LINE__|%d");
      *plVar11 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar16 = plVar11;
    }
    uVar10 = (**(code **)(*param_2 + 0x40))(param_2);
    FUN_1805b2240(plVar9[1],uVar10);
    local_398[0] = 0x3dbd;
    local_388 = (longlong *)0x181bbe3b0;
    uVar10 = FUN_1805a21d0(plVar16[1],&local_388);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_398);
  }
  lVar12 = FUN_180870eb0(param_2);
  FUN_18080ca00(param_2,*(undefined1 *)(lVar12 + 0x216),"databaseInfoGuid");
  lVar12 = FUN_180870eb0(param_2);
  puVar13 = (undefined8 *)(lVar12 + 0x78);
  if (local_220 != puVar13) {
    if (0xf < *(ulonglong *)(lVar12 + 0x90)) {
      puVar13 = (undefined8 *)*puVar13;
    }
    FUN_1805a6cb0(local_220,puVar13,*(undefined8 *)(lVar12 + 0x88));
  }
  plVar11 = local_310;
  cVar6 = '\0';
  plVar25 = plVar16;
  if (plVar9 == (longlong *)0x0) {
LAB_1806c133a:
    local_390 = (longlong *)FUN_1811316e0(0x18);
    if (local_390 == (longlong *)0x0) {
      lVar12 = 0;
    }
    else {
      lVar12 = FUN_1805a48c0(local_390,
                             "No DatabaseInfo records, validated by DLD, were found for the license (UUID:%s)"
                            );
    }
    plVar16 = (longlong *)0x0;
    plVar9 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar9;
    if (plVar9 != (longlong *)0x0) {
      FUN_1805a48c0(plVar9,"|__FILE__|%s|__LINE__|%d");
      *plVar9 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar16 = plVar9;
    }
    uVar10 = (**(code **)(*param_2 + 0x40))(param_2);
    FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
    local_398[0] = 0x3de7;
    local_388 = (longlong *)0x181bbe3b0;
    uVar10 = FUN_1805a21d0(plVar16[1],&local_388);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_398);
  }
  do {
    plVar9 = (longlong *)FUN_180812700(local_300,local_248,plVar25);
    plVar9 = (longlong *)*plVar9;
    if (plVar9 != (longlong *)0x0) {
      (**(code **)(*plVar11 + 8))(plVar11,plVar9);
      lVar12 = FUN_18086a7d0(plVar9);
      FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x21b),"databaseInfoGuid");
      lVar12 = FUN_18086a7d0(plVar9);
      plVar17 = local_210;
      pvVar21 = (void *)(lVar12 + 0x30);
      if (0xf < *(ulonglong *)(lVar12 + 0x48)) {
        pvVar21 = *(void **)(lVar12 + 0x30);
      }
      puVar13 = local_220;
      if (0xf < local_208) {
        puVar13 = (undefined8 *)CONCAT71(local_220[0]._1_7_,(undefined1)local_220[0]);
      }
      plVar27 = *(longlong **)(lVar12 + 0x40);
      local_388 = plVar27;
      local_358 = local_210;
      pplVar23 = &local_388;
      if (local_210 <= plVar27) {
        pplVar23 = &local_358;
      }
      iVar7 = memcmp(puVar13,pvVar21,(size_t)*pplVar23);
      if (((iVar7 == 0) && (plVar27 <= plVar17)) && (plVar17 == plVar27)) {
        if (cVar6 != '\0') {
          local_390 = (longlong *)FUN_1811316e0(0x18);
          if (local_390 != (longlong *)0x0) {
            FUN_1805a48c0(local_390,"PACE\'s DatabaseInfo record has duplicates");
          }
          puVar13 = (undefined8 *)0x0;
          puVar14 = (undefined8 *)FUN_1811316e0(0x18);
          local_360 = puVar14;
          if (puVar14 != (undefined8 *)0x0) {
            FUN_1805a48c0(puVar14,"|__FILE__|%s|__LINE__|%d");
            *puVar14 = pace::PaceLocationInfoFormatter::vftable;
            puVar13 = puVar14;
          }
          local_398[0] = 0x3dd6;
          local_388 = (longlong *)0x181bbe3b0;
          uVar10 = FUN_1805a21d0(puVar13[1],&local_388);
                    /* WARNING: Subroutine does not return */
          FUN_1805b20d0(uVar10,local_398);
        }
        cVar6 = FUN_18068d570(plVar11,plVar9,local_2d0);
        if (cVar6 != '\0') {
          plVar16 = plVar9;
        }
      }
    }
    plVar9 = local_2d8;
    plVar25 = (longlong *)((longlong)plVar25 + 1);
  } while (plVar25 < local_368);
  param_2 = local_2d8;
  if (cVar6 == '\0') goto LAB_1806c133a;
  cVar6 = FUN_18086b3f0(plVar16,local_2c0 + 6);
  if (cVar6 == '\0') {
    local_390 = (longlong *)FUN_1811316e0(0x18);
    if (local_390 == (longlong *)0x0) {
      lVar12 = 0;
    }
    else {
      lVar12 = FUN_1805a48c0(local_390,
                             "The DatabaseInfo (GUID: %s) has a signature that does not verify");
    }
    plVar16 = (longlong *)0x0;
    plVar9 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar9;
    if (plVar9 != (longlong *)0x0) {
      FUN_1805a48c0(plVar9,"|__FILE__|%s|__LINE__|%d");
      *plVar9 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar16 = plVar9;
    }
    FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_220);
    local_398[0] = 0x3df5;
    local_388 = (longlong *)0x181bbe3b0;
    uVar10 = FUN_1805a21d0(plVar16[1],&local_388);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_398);
  }
  lVar12 = FUN_18086a7d0(plVar16);
  FUN_18080ca00(plVar16,*(undefined1 *)(lVar12 + 0x222),"issuerId");
  lVar12 = FUN_18086a7d0(plVar16);
  if (iStack_274 != *(int *)(lVar12 + 0xf8)) {
    local_390 = (longlong *)FUN_1811316e0(0x18);
    if (local_390 == (longlong *)0x0) {
      lVar12 = 0;
    }
    else {
      lVar12 = FUN_1805a48c0(local_390,
                             "The DatabaseInfo (GUID: %s) was signed by an invalid issuer (ExpectedID:0x%08X, Actual:0x%08X)"
                            );
    }
    plVar9 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar9;
    if (plVar9 != (longlong *)0x0) {
      FUN_1805a48c0(plVar9,"|__FILE__|%s|__LINE__|%d");
      *plVar9 = (longlong)pace::PaceLocationInfoFormatter::vftable;
    }
    lVar15 = FUN_18086a7d0(plVar16);
    FUN_18080ca00(plVar16,*(undefined1 *)(lVar15 + 0x222),"issuerId");
    FUN_18086a7d0(plVar16);
    FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_220);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),&iStack_274);
  }
  lVar12 = FUN_180870eb0(plVar9);
  FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x21b),"issuerId");
  lVar12 = FUN_180870eb0(plVar9);
  if (iStack_274 != *(int *)(lVar12 + 0xe0)) {
    local_390 = (longlong *)FUN_1811316e0(0x18);
    if (local_390 == (longlong *)0x0) {
      lVar12 = 0;
    }
    else {
      lVar12 = FUN_1805a48c0(local_390,
                             "The License (UUID: %s) was signed by an invalid issuer (ExpectedID:0x%08X, Actual:0x%08X)"
                            );
    }
    plVar16 = (longlong *)FUN_1811316e0(0x18);
    local_390 = plVar16;
    if (plVar16 != (longlong *)0x0) {
      FUN_1805a48c0(plVar16,"|__FILE__|%s|__LINE__|%d");
      *plVar16 = (longlong)pace::PaceLocationInfoFormatter::vftable;
    }
    lVar15 = FUN_180870eb0(plVar9);
    FUN_18080ca00(plVar9,*(undefined1 *)(lVar15 + 0x21b),"issuerId");
    FUN_180870eb0(plVar9);
    uVar10 = (**(code **)(*plVar9 + 0x40))(plVar9);
    FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),&iStack_274);
  }
  plVar11 = (longlong *)(local_2f0[1] - *local_2f0 >> 3);
  local_390 = plVar11;
  local_388 = plVar11;
  if (plVar11 != (longlong *)0x0) {
    lVar12 = FUN_180870eb0(plVar9);
    FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x21e),"mustBeInAuthManifest");
    lVar12 = FUN_180870eb0(plVar9);
    if (*(char *)(lVar12 + 0x128) != '\0') {
      FUN_18084d2f0(plVar16,&local_358);
      if (local_358 == (longlong *)0x0) {
        local_360 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_360 == (undefined8 *)0x0) {
          lVar12 = 0;
        }
        else {
          lVar12 = FUN_1805a48c0(local_360,"Bad LsObjectRelationVectorAuthManifestElement (0x%16X)")
          ;
        }
        puVar13 = (undefined8 *)0x0;
        puVar14 = (undefined8 *)FUN_1811316e0(0x18);
        local_360 = puVar14;
        if (puVar14 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar14,"|__FILE__|%s|__LINE__|%d");
          *puVar14 = pace::PaceLocationInfoFormatter::vftable;
          puVar13 = puVar14;
        }
        FUN_18066eb70(*(undefined8 *)(lVar12 + 8),&local_358);
        local_398[0] = 0x3e23;
        local_328 = (longlong *)0x181bbe3b0;
        uVar10 = FUN_1805a21d0(puVar13[1],&local_328);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar10,local_398);
      }
      plVar25 = (longlong *)(((longlong *)local_358[1])[1] - *(longlong *)local_358[1] >> 5);
      local_328 = (longlong *)0x0;
      local_380 = plVar25;
      lVar12 = FUN_180870eb0(plVar9);
      FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x227),"state");
      lVar12 = FUN_180870eb0(plVar9);
      FUN_1805a4070(&local_240,lVar12 + 0x180);
      puVar13 = local_230;
      local_330 = (longlong *)0x0;
      if (plVar25 != (longlong *)0x0) {
        do {
          plVar11 = local_330;
          plVar17 = (longlong *)FUN_18082ebd0(local_358,&local_320,local_330);
          lVar12 = *plVar17;
          if ((lVar12 != 0) &&
             (plVar17 = (longlong *)0x0, plVar25 = local_380, local_388 != (longlong *)0x0)) {
            do {
              lVar15 = *(longlong *)(*local_2f0 + (longlong)plVar17 * 8);
              lVar18 = FUN_180870eb0(lVar15);
              FUN_18080ca00(lVar15,*(undefined1 *)(lVar18 + 0x1eb),"authId");
              lVar18 = FUN_180870eb0(lVar15);
              iVar7 = *(int *)(lVar18 + 0x30);
              lVar18 = FUN_180870eb0(lVar15);
              FUN_18080ca00(lVar15,*(undefined1 *)(lVar18 + 0x1f7),"publisherId");
              lVar18 = FUN_180870eb0(lVar15);
              local_398[0] = *(int *)(lVar18 + 0xb8);
              if (lVar15 != 0) {
                lVar18 = FUN_18082bc60(lVar12);
                FUN_18080ca00(lVar12,*(undefined1 *)(lVar18 + 0xfb),"authId");
                lVar18 = FUN_18082bc60(lVar12);
                if (iVar7 == *(int *)(lVar18 + 0x30)) {
                  lVar18 = FUN_18082bc60(lVar12);
                  FUN_18080ca00(lVar12,*(undefined1 *)(lVar18 + 0x100),"publisherId");
                  lVar18 = FUN_18082bc60(lVar12);
                  if (local_398[0] == *(int *)(lVar18 + 0x98)) {
                    lVar18 = FUN_180870eb0(lVar15);
                    FUN_18080ca00(lVar15,*(undefined1 *)(lVar18 + 0x1ec),"authInstance");
                    lVar15 = FUN_180870eb0(lVar15);
                    lVar18 = FUN_18082bc60(lVar12);
                    FUN_18080ca00(lVar12,*(undefined1 *)(lVar18 + 0xfc),"authInstance");
                    lVar18 = FUN_18082bc60(lVar12);
                    if (*(int *)(lVar15 + 0x34) == *(int *)(lVar18 + 0x34)) {
                      lVar15 = FUN_18082bc60(lVar12);
                      FUN_18080ca00(lVar12,*(undefined1 *)(lVar15 + 0xfe),"licenseIssuedDate");
                      lVar15 = FUN_18082bc60(lVar12);
                      lVar18 = FUN_180870eb0(plVar9);
                      FUN_18080ca00(plVar9,*(undefined1 *)(lVar18 + 0x21a),"issuedDate");
                      lVar18 = FUN_180870eb0(plVar9);
                      pvVar21 = (void *)(lVar15 + 0x58);
                      if (0xf < *(ulonglong *)(lVar15 + 0x70)) {
                        pvVar21 = *(void **)(lVar15 + 0x58);
                      }
                      _Buf1 = (void *)(lVar18 + 0xc0);
                      if (0xf < *(ulonglong *)(lVar18 + 0xd8)) {
                        _Buf1 = *(void **)(lVar18 + 0xc0);
                      }
                      if ((*(size_t *)(lVar18 + 0xd0) == *(size_t *)(lVar15 + 0x68)) &&
                         (iVar8 = memcmp(_Buf1,pvVar21,*(size_t *)(lVar18 + 0xd0)), iVar8 == 0)) {
                        lVar15 = FUN_18082bc60(lVar12);
                        FUN_18080ca00(lVar12,*(undefined1 *)(lVar15 + 0x101),"state");
                        lVar15 = FUN_18082bc60(lVar12);
                        pvVar21 = (void *)(lVar15 + 0xa0);
                        if (0xf < *(ulonglong *)(lVar15 + 0xb8)) {
                          pvVar21 = *(void **)(lVar15 + 0xa0);
                        }
                        ppppppuVar20 = &local_240;
                        if (0xf < local_228) {
                          ppppppuVar20 = (undefined8 ******)local_240;
                        }
                        puVar14 = *(undefined8 **)(lVar15 + 0xb0);
                        local_2e8 = puVar14;
                        local_360 = puVar13;
                        ppuVar24 = &local_2e8;
                        if (puVar13 <= puVar14) {
                          ppuVar24 = &local_360;
                        }
                        iVar8 = memcmp(ppppppuVar20,pvVar21,(size_t)*ppuVar24);
                        if (((iVar8 == 0) && (puVar14 <= puVar13)) && (puVar13 <= puVar14)) {
                          local_328 = (longlong *)((longlong)local_328 + 1);
                          plVar11 = local_330;
                          plVar25 = local_380;
                          if (((iVar7 == 0x4801f777) && (local_398[0] == 1)) &&
                             (piVar19 = (int *)FUN_1806aa760(plVar9), plVar11 = local_330,
                             plVar25 = local_380, *piVar19 != 1)) {
                            local_340 = (undefined8 *)FUN_1811316e0(0x18);
                            if (local_340 == (undefined8 *)0x0) {
                              lVar12 = 0;
                            }
                            else {
                              lVar12 = FUN_1805a48c0(local_340,
                                                                                                          
                                                  "Fixed key auth has an issuer (ID: %d) that is not PACE"
                                                  );
                            }
                            FUN_1805c0260();
                            uVar10 = FUN_1806aa760(plVar9);
                    /* WARNING: Subroutine does not return */
                            FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),uVar10);
                          }
                          break;
                        }
                      }
                    }
                  }
                }
              }
              plVar17 = (longlong *)((longlong)plVar17 + 1);
              plVar11 = local_330;
              plVar25 = local_380;
            } while (plVar17 < local_388);
          }
          if (local_328 == local_388) goto LAB_1806c1d42;
          local_330 = (longlong *)((longlong)plVar11 + 1);
          plVar11 = local_388;
        } while (local_330 < plVar25);
      }
      lVar12 = 0;
      if (local_328 != plVar11) {
        local_340 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_340 != (undefined8 *)0x0) {
          lVar12 = FUN_1805a48c0(local_340,
                                 "The License (UUID: %s) does not fully match the AuthManifest in the DatabaseInfo (IssuerId: 0x%08X). Only %d out of %d required matches"
                                );
        }
        puVar13 = (undefined8 *)FUN_1811316e0(0x18);
        local_340 = puVar13;
        if (puVar13 != (undefined8 *)0x0) {
          FUN_1805a48c0(puVar13,"|__FILE__|%s|__LINE__|%d");
          *puVar13 = pace::PaceLocationInfoFormatter::vftable;
        }
        lVar15 = FUN_180870eb0(plVar9);
        FUN_18080ca00(plVar9,*(undefined1 *)(lVar15 + 0x21b),"issuerId");
        lVar15 = FUN_180870eb0(plVar9);
        uVar10 = (**(code **)(*plVar9 + 0x40))(plVar9);
        FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),lVar15 + 0xe0);
      }
LAB_1806c1d42:
      if (0xf < local_228) {
        ppppppuVar20 = (undefined8 ******)local_240;
        if ((0xfff < local_228 + 1) &&
           (ppppppuVar20 = (undefined8 ******)local_240[-1],
           0x1f < (ulonglong)((longlong)local_240 + (-8 - (longlong)ppppppuVar20)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(ppppppuVar20);
      }
    }
  }
  lVar12 = FUN_18086a7d0(plVar16);
  FUN_18080ca00(plVar16,*(undefined1 *)(lVar12 + 0x223),"lastAuthChangeDate");
  lVar12 = FUN_18086a7d0(plVar16);
  FUN_1805a4070(local_1a0,lVar12 + 0x100);
  lVar12 = FUN_180870eb0(plVar9);
  FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x219),"insertDate");
  lVar12 = FUN_180870eb0(plVar9);
  FUN_1805a4070(local_68,lVar12 + 0xa0);
  lVar12 = FUN_180870eb0(plVar9);
  FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x21a),"issuedDate");
  lVar12 = FUN_180870eb0(plVar9);
  FUN_1805a4070(local_1c0,lVar12 + 0xc0);
  FUN_180660c00(&local_2e0,local_1a0,0);
  FUN_180660c00(&local_308,local_1c0,0);
  local_388 = (longlong *)0x11e1a300;
  local_390 = (longlong *)0x7ffffffffffffffe;
  local_398[0] = -2;
  FUN_1805b41e0(&local_360,local_398,&local_390);
  plVar11 = local_350;
  if (local_2e0 != local_360) {
    FUN_1805b6b80(&local_390,0);
    plVar11 = local_350;
    if ((longlong *)*local_350 != local_390) {
      FUN_1805c5170(&local_390,local_350,&local_2e0);
      puVar13 = (undefined8 *)FUN_1805af150(&local_390,&local_340,&local_388);
      local_370 = (longlong *)*puVar13;
      lVar12 = 0;
      local_390 = (longlong *)0x0;
      iVar7 = FUN_1805bd370(&local_370,&local_390);
      if (iVar7 == -1) {
        local_340 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_340 != (undefined8 *)0x0) {
          lVar12 = FUN_1805a48c0(local_340,
                                 "The current computer time is before the database\'s last auth change date of %s"
                                );
        }
        lVar15 = FUN_1805c0260();
        FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_1a0);
        local_398[0] = 0x3ea8;
        local_390 = (longlong *)0x181bbe3b0;
        uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar15 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar10,local_398);
      }
    }
    lVar12 = 0;
    FUN_1805b6b80(&local_390,0);
    if (local_308 != local_390) {
      FUN_1805c5170(&local_390,&local_2e0,&local_308);
      local_370 = local_390;
      local_390 = (longlong *)0x0;
      iVar7 = FUN_1805bd370(&local_370,&local_390);
      if (iVar7 == -1) {
        local_340 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_340 != (undefined8 *)0x0) {
          lVar12 = FUN_1805a48c0(local_340,
                                 "The license (UUID: %s), issued %s, was issued after the last auth change date of %s"
                                );
        }
        lVar15 = FUN_1805c0260();
        uVar10 = (**(code **)(*plVar9 + 0x40))(plVar9);
        FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
        FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_1c0);
        FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_1a0);
        local_398[0] = 0x3eb5;
        local_390 = (longlong *)0x181bbe3b0;
        uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar15 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar10,local_398);
      }
    }
  }
  FUN_1805b6b80(&local_390,0);
  if (((longlong *)*plVar11 != local_390) && (FUN_1805b6b80(&local_390,0), local_308 != local_390))
  {
    FUN_1805c5170(&local_390,plVar11,&local_308);
    puVar13 = (undefined8 *)FUN_1805af150(&local_390,&local_340,&local_388);
    local_370 = (longlong *)*puVar13;
    local_390 = (longlong *)0x0;
    iVar7 = FUN_1805bd370(&local_370,&local_390);
    if (iVar7 == -1) {
      lVar12 = FUN_1805c0220(
                            "The current computer time is before the license (UUID: %s) was issued on the date of %s"
                            );
      lVar15 = FUN_1805c0260();
      uVar10 = (**(code **)(*plVar9 + 0x40))(plVar9);
      FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
      FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_1c0);
      local_398[0] = 0x3ec6;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar15 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
  }
  puVar13 = (undefined8 *)0x0;
  lVar12 = FUN_180870eb0(plVar9);
  FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x220),"nodeLocked");
  lVar12 = FUN_180870eb0(plVar9);
  plVar11 = local_310;
  if (*(char *)(lVar12 + 0x150) != '\0') {
    cVar6 = FUN_1808649b0(plVar16);
    if (cVar6 == '\0') {
      lVar12 = FUN_1805c0220(
                            "Machine Bindings are missing from the from the DatabaseInfo (GUID: %s)"
                            );
      lVar15 = FUN_1805c0260();
      FUN_1805b2240(*(undefined8 *)(lVar12 + 8),local_220);
      local_398[0] = 0x3ed6;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar15 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    FUN_18084eb60(plVar16,&local_388);
    plVar11 = local_388;
    if (local_388 == (longlong *)0x0) {
      FUN_1805c0220("Could not get a Machine Bindings pointer from DatabaseInfo");
      lVar12 = FUN_1805c0260();
      local_398[0] = 0x3edd;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    lVar12 = FUN_1808460a0(local_388);
    FUN_18080ca00(plVar11,*(undefined1 *)(lVar12 + 399),"platform");
    lVar12 = FUN_1808460a0(plVar11);
    if (*(longlong *)(lVar12 + 0xc0) == 0) {
      FUN_1805c0220(
                   "Machine Bindings Platform is not populated. Connect to the Eden server to get this populated."
                   );
      lVar12 = FUN_1805c0260();
      local_398[0] = 0x3ee2;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    FUN_1809363d0(local_178,&local_388);
    lVar12 = FUN_180870eb0(plVar9);
    FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x214),"bindingAlgorithm");
    lVar12 = FUN_180870eb0(plVar9);
    FUN_1805a4070(local_200,lVar12 + 0x50);
    iVar8 = 0;
    local_398[0] = 0;
    lVar12 = FUN_1807064c0();
    iVar7 = FUN_18060cd70(local_200,lVar12 + 0x380);
    if (iVar7 == 0) {
      lVar12 = FUN_180870eb0(plVar9);
      FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x215),"bindingDriftAmount");
      lVar12 = FUN_180870eb0(plVar9);
      uVar1 = *(uint *)(lVar12 + 0x70);
      if ((int)uVar1 < 0x65) {
        puVar14 = (undefined8 *)(ulonglong)uVar1;
        if ((int)uVar1 < 0) {
          puVar14 = puVar13;
        }
      }
      else {
        puVar14 = (undefined8 *)0x64;
      }
      iVar8 = (int)puVar14;
      local_398[0] = iVar8;
    }
    puVar5 = local_2c8;
    if (*local_2c8 == 0) {
      local_340 = (undefined8 *)FUN_1811316e0(200);
      if (local_340 != (undefined8 *)0x0) {
        puVar13 = (undefined8 *)FUN_18062a280(local_340);
      }
      local_340 = puVar13;
      FUN_18066b710(&local_338,puVar13);
      FUN_1805ae620(&local_340,puVar13,puVar13);
      puVar13 = (undefined8 *)*puVar5;
      *puVar5 = (ulonglong)local_340;
      uVar22 = puVar5[1];
      puVar5[1] = local_338;
      local_340 = puVar13;
      local_338 = uVar22;
      FUN_1805a4e80(&local_340);
    }
    local_358 = (longlong *)0x0;
    local_378[0] = 0;
    local_3a8 = 0;
    local_3b0 = 0;
    local_3b8 = &local_358;
    cVar6 = FUN_180639a30(local_178,*puVar5,(longlong)iVar8,local_378);
    plVar11 = local_310;
    local_310[0x34] = (longlong)iVar8;
    local_310[0x33] = (longlong)local_358;
    if (cVar6 == '\0') {
      lVar12 = FUN_1805c0220(
                            "Bad Machine bindings detected while verifying license (UUID: %s) with allowed drift %d percent and actual drift %d"
                            );
      FUN_1805c0260();
      uVar10 = (**(code **)(*plVar9 + 0x40))(plVar9);
      FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar12 + 8),local_398);
    }
    FUN_180485450(local_200);
    FUN_18062b2f0(local_178);
  }
  plVar25 = local_348;
  if (local_348 == (longlong *)0x0) {
    if (local_2f8 != (undefined1 *)0x0) {
      FUN_1805c0220(
                   "outpFixedKeyActiveIsInAuthManifest has to be NULL when outpDatabaseUpdates is NULL"
                   );
      lVar12 = FUN_1805c0260();
      local_398[0] = 0x404e;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    goto LAB_1806c30b6;
  }
  piVar19 = (int *)FUN_1806aa720(plVar16);
  uVar10 = local_2d0;
  plVar17 = local_368;
  if (*piVar19 != 1) {
    cVar6 = '\0';
    plVar27 = (longlong *)0x0;
    if (local_368 == (longlong *)0x0) {
LAB_1806c26a5:
      FUN_1805c0220("No PACE DatabaseInfo record, validated by DLD, was found");
      lVar12 = FUN_1805c0260();
      local_398[0] = 0x3f36;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    do {
      plVar9 = (longlong *)FUN_180812700(local_300,&local_340,plVar27);
      plVar9 = (longlong *)*plVar9;
      if (plVar9 != (longlong *)0x0) {
        lVar12 = FUN_18086a7d0(plVar9);
        FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x222),"issuerId");
        lVar12 = FUN_18086a7d0(plVar9);
        if (*(int *)(lVar12 + 0xf8) == 1) {
          if (cVar6 != '\0') {
            local_320 = FUN_1811316e0(0x18);
            if (local_320 != 0) {
              FUN_1805a48c0(local_320,"PACE\'s DatabaseInfo record has duplicates");
            }
            puVar13 = (undefined8 *)FUN_1811316e0(0x18);
            local_360 = puVar13;
            if (puVar13 != (undefined8 *)0x0) {
              FUN_1805a48c0(puVar13,"|__FILE__|%s|__LINE__|%d");
              *puVar13 = pace::PaceLocationInfoFormatter::vftable;
            }
            local_398[0] = 0x3f27;
            local_390 = (longlong *)0x181bbe3b0;
            uVar10 = FUN_1805a21d0(puVar13[1],&local_390);
                    /* WARNING: Subroutine does not return */
            FUN_1805b20d0(uVar10,local_398);
          }
          cVar6 = FUN_18068d570(plVar11,plVar9,uVar10);
          if (cVar6 != '\0') {
            plVar16 = plVar9;
          }
        }
      }
      plVar9 = local_2d8;
      plVar25 = local_348;
      plVar27 = (longlong *)((longlong)plVar27 + 1);
    } while (plVar27 < plVar17);
    if (cVar6 == '\0') goto LAB_1806c26a5;
    cVar6 = FUN_18086b3f0(plVar16,local_2c0 + 6);
    if (cVar6 == '\0') {
      lVar12 = FUN_1805c0220("The DatabaseInfo (GUID: %s) has a signature that does not verify");
      lVar15 = FUN_1805c0260();
      uVar10 = FUN_18068d530(plVar16);
      FUN_1805b2240(*(undefined8 *)(lVar12 + 8),uVar10);
      local_398[0] = 0x3f3f;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar15 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    (**(code **)(*plVar11 + 8))(plVar11,plVar16);
  }
  lVar12 = FUN_18086a7d0(plVar16);
  FUN_18080ca00(plVar16,*(undefined1 *)(lVar12 + 0x225),"masterTime");
  lVar12 = FUN_18086a7d0(plVar16);
  FUN_1805a4070(local_a8,lVar12 + 0x140);
  FUN_180660c00(&local_380,local_a8,0);
  FUN_1805b6b80(&local_368,0);
  local_240 = (undefined8 ******)0x0;
  lStack_238 = 0;
  local_230 = (undefined8 *)0x0;
  local_2c0[3] = 0;
  local_2c0[4] = 0;
  local_2c0[5] = 0;
  FUN_18066dd70(local_2c0 + 3,1,local_2c0 + 3);
  *(undefined1 *)(local_2c0[3] + 8) = 1;
  FUN_1805a6cb0(local_2c0[3] + 0x30,"AuxiliaryMT",0xb);
  FUN_18069d3b0(plVar11,local_2c0 + 3,&local_240);
  lVar12 = lStack_238 - (longlong)local_240 >> 0x3f;
  if (((lStack_238 - (longlong)local_240) / 0x130 + lVar12 != lVar12) &&
     ((longlong)local_240[0x22] - (longlong)local_240[0x21] >> 5 != 0)) {
    puVar13 = (undefined8 *)FUN_180660c00(&local_320,local_240[0x21],0);
    local_368 = (longlong *)*puVar13;
  }
  plVar11 = local_368;
  FUN_1805b6b80(&local_390,0);
  plVar17 = plVar11;
  if ((local_380 != local_390) &&
     (FUN_1805b6b80(&local_390,0), plVar17 = local_380, plVar11 != local_390)) {
    FUN_1805c5170(&local_360,&local_380,&local_368);
    local_390 = (longlong *)0x0;
    iVar7 = FUN_1805bd370(&local_360,&local_390);
    plVar17 = local_380;
    if (iVar7 == -1) {
      plVar17 = local_368;
    }
  }
  local_380 = plVar17;
  FUN_180676d70(local_178);
  local_1f0 = 0;
  local_1e8 = 0xf;
  local_200[0]._0_1_ = 0;
  local_1d0 = 0;
  local_1c8 = 0xf;
  local_1e0[0]._0_1_ = 0;
  local_390 = (longlong *)0x7ffffffffffffffe;
  local_398[0] = -2;
  FUN_1805b41e0(&local_348,local_398,&local_390);
  local_390 = (longlong *)0x7ffffffffffffffe;
  uVar10 = FUN_180622400(&local_330,0);
  FUN_1805b41e0(&local_348,uVar10,&local_390);
  bVar3 = false;
  bVar2 = false;
  bVar4 = false;
  FUN_1805b6b80(&local_390);
  plVar11 = local_350;
  if (local_380 == local_390) {
    plVar11 = (longlong *)*local_350;
    local_380 = plVar11;
    bVar2 = bVar3;
LAB_1806c2c63:
    *local_318 = (longlong)plVar11;
  }
  else {
    local_390 = (longlong *)0x11e1a300;
    FUN_1805c5170(&local_360,local_350,&local_380);
    puVar13 = (undefined8 *)FUN_1805af150(&local_360,&local_320,&local_390);
    local_370 = (longlong *)*puVar13;
    local_390 = (longlong *)0x0;
    iVar7 = FUN_1805bd370(&local_370);
    if (iVar7 != -1) {
      plVar11 = (longlong *)*plVar11;
      local_380 = plVar11;
      bVar2 = bVar3;
      goto LAB_1806c2c63;
    }
    *local_318 = (longlong)local_380;
    lVar12 = FUN_180870eb0(plVar9);
    FUN_18080ca00(plVar9,*(undefined1 *)(lVar12 + 0x218),"gracePeriodsAllowed");
    lVar12 = FUN_180870eb0(plVar9);
    lVar15 = FUN_18086a7d0(plVar16);
    FUN_18080ca00(plVar16,*(undefined1 *)(lVar15 + 0x21f),"gracePeriodResets");
    lVar15 = FUN_18086a7d0(plVar16);
    if ((*(int *)(lVar15 + 0xb0) < *(int *)(lVar12 + 0x9c)) &&
       (piVar19 = (int *)FUN_1806a8af0(plVar9), 0 < *piVar19)) {
      lVar12 = FUN_18086a7d0(plVar16);
      FUN_18080ca00(plVar16,*(undefined1 *)(lVar12 + 0x220),"graceStartDate");
      lVar12 = FUN_18086a7d0(plVar16);
      puVar13 = (undefined8 *)(lVar12 + 0xb8);
      if (local_200 != puVar13) {
        if (0xf < *(ulonglong *)(lVar12 + 0xd0)) {
          puVar13 = (undefined8 *)*puVar13;
        }
        FUN_1805a6cb0(local_200,puVar13,*(undefined8 *)(lVar12 + 200));
      }
      plVar17 = (longlong *)FUN_180660c00(&local_320,local_200,0);
      plVar17 = (longlong *)*plVar17;
      local_348 = plVar17;
      FUN_1805b6b80(&local_390);
      if (plVar17 == local_390) {
        bVar4 = true;
        plVar11 = (longlong *)*plVar11;
        bVar2 = true;
        goto LAB_1806c2c63;
      }
      FUN_1805c5170(&local_390,plVar11,&local_348);
      local_370 = local_390;
      FUN_180661ba0(&local_370,&local_2e8);
      local_390 = (longlong *)0x0;
      iVar7 = FUN_1805bd370(&local_370);
      if (iVar7 != -1) {
        lVar12 = FUN_18086a7d0(plVar16);
        FUN_18080ca00(plVar16,*(undefined1 *)(lVar12 + 0x21e),"graceCurrentDate");
        lVar12 = FUN_18086a7d0(plVar16);
        puVar13 = (undefined8 *)(lVar12 + 0x90);
        if (local_1e0 != puVar13) {
          if (0xf < *(ulonglong *)(lVar12 + 0xa8)) {
            puVar13 = (undefined8 *)*puVar13;
          }
          FUN_1805a6cb0(local_1e0,puVar13,*(undefined8 *)(lVar12 + 0xa0));
        }
        plVar17 = (longlong *)FUN_180660c00(&local_320,local_1e0,0);
        plVar17 = (longlong *)*plVar17;
        local_348 = plVar17;
        FUN_1805b6b80(&local_390,0);
        if (plVar17 == local_390) {
          FUN_1805c5170(&local_390,plVar11,&local_348);
          local_370 = local_390;
        }
        local_390 = (longlong *)0x0;
        iVar7 = FUN_1805bd370(&local_370);
        if (iVar7 != -1) {
          bVar4 = true;
          piVar19 = (int *)FUN_1806a8af0(plVar9);
          if (local_2e8 <= (undefined8 *)(longlong)*piVar19) {
            plVar11 = (longlong *)*plVar11;
            bVar2 = bVar3;
            goto LAB_1806c2c63;
          }
        }
      }
    }
  }
  if (local_2f8 != (undefined1 *)0x0) {
    *local_2f8 = 0;
    FUN_18084d2f0(plVar16);
    if (local_350 == (longlong *)0x0) {
      lVar12 = FUN_1805c0220("Bad LsObjectRelationVectorAuthManifestElement (0x%16X)");
      lVar15 = FUN_1805c0260();
      FUN_18066eb70(*(undefined8 *)(lVar12 + 8),&local_350);
      local_398[0] = 0x3ff0;
      local_390 = (longlong *)0x181bbe3b0;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar15 + 8),&local_390);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_398);
    }
    uVar26 = ((longlong *)local_350[1])[1] - *(longlong *)local_350[1] >> 5;
    uVar22 = 0;
    if (uVar26 != 0) {
      do {
        puVar13 = (undefined8 *)FUN_18082ebd0(local_350,&local_320,uVar22);
        uVar10 = *puVar13;
        lVar12 = FUN_18082bc60(uVar10);
        FUN_18080ca00(uVar10,*(undefined1 *)(lVar12 + 0xfb),"authId");
        lVar12 = FUN_18082bc60(uVar10);
        if (*(int *)(lVar12 + 0x30) == 0x4801f777) {
          lVar12 = FUN_18082bc60(uVar10);
          FUN_18080ca00(uVar10,*(undefined1 *)(lVar12 + 0x100),"publisherId");
          lVar12 = FUN_18082bc60(uVar10);
          if (*(int *)(lVar12 + 0x98) == 1) {
            FUN_1807064c0();
            uVar10 = FUN_1806bba60(uVar10);
            cVar6 = FUN_1805aef10(uVar10);
            if (cVar6 == '\0') {
              *local_2f8 = 1;
            }
            break;
          }
        }
        uVar22 = uVar22 + 1;
      } while (uVar22 < uVar26);
    }
  }
  if (*(char *)(param_11 + 0xd) == '\0') {
    local_2c0[0] = 0;
    local_2c0[1] = 0;
    local_2c0[2] = 0;
    FUN_18066df90(local_2c0,1,local_2c0);
    *(undefined1 *)(local_2c0[0] + 8) = 1;
    FUN_1805a6cb0(local_2c0[0] + 0x30,"AuxiliaryMT",0xb);
    uVar10 = FUN_180662d40(local_88,&local_380);
    FUN_1806b7950(local_2c0[0] + 0x108,uVar10);
    FUN_180485450(local_88);
    FUN_180683d70(local_310,0,local_2c0);
    FUN_1806804d0(local_2c0);
  }
  else {
    local_170 = 4;
    puVar13 = (undefined8 *)(**(code **)(*plVar16 + 0x40))(plVar16);
    if (local_168 != puVar13) {
      puVar14 = puVar13;
      if (0xf < (ulonglong)puVar13[3]) {
        puVar14 = (undefined8 *)*puVar13;
      }
      FUN_1805a6cb0(local_168,puVar14,puVar13[2]);
    }
    local_148 = 1;
    FUN_180663c70(&local_380,local_140);
    if (plVar25[2] == plVar25[1]) {
      FUN_18066cf60(plVar25,plVar25[1],local_178);
    }
    else {
      FUN_180676cd0(plVar25[1],local_178);
      plVar25[1] = plVar25[1] + 0x88;
    }
  }
  if (bVar2) {
    local_170 = 2;
    puVar13 = (undefined8 *)(**(code **)(*plVar16 + 0x40))(plVar16);
    if (local_168 != puVar13) {
      puVar14 = puVar13;
      if (0xf < (ulonglong)puVar13[3]) {
        puVar14 = (undefined8 *)*puVar13;
      }
      FUN_1805a6cb0(local_168,puVar14,puVar13[2]);
    }
    local_148 = 3;
    if (plVar25[2] == plVar25[1]) {
      FUN_18066cf60(plVar25,plVar25[1],local_178);
    }
    else {
      FUN_180676cd0(plVar25[1],local_178);
      plVar25[1] = plVar25[1] + 0x88;
    }
  }
  if (bVar4) {
    local_170 = 1;
    puVar13 = (undefined8 *)(**(code **)(*plVar16 + 0x40))(plVar16);
    if (local_168 != puVar13) {
      puVar14 = puVar13;
      if (0xf < (ulonglong)puVar13[3]) {
        puVar14 = (undefined8 *)*puVar13;
      }
      FUN_1805a6cb0(local_168,puVar14,puVar13[2]);
    }
    local_148 = 1;
    if (plVar25[2] == plVar25[1]) {
      FUN_18066cf60(plVar25,plVar25[1],local_178);
    }
    else {
      FUN_180676cd0(plVar25[1],local_178);
      plVar25[1] = plVar25[1] + 0x88;
    }
  }
  FUN_180485450(local_1e0);
  FUN_180485450(local_200);
  FUN_18067ae90(local_178);
  FUN_180680380(local_2c0 + 3);
  FUN_1806804d0(&local_240);
  FUN_180485450(local_a8);
LAB_1806c30b6:
  FUN_180485450(local_1c0);
  FUN_180485450(local_68);
  FUN_180485450(local_1a0);
  FUN_180485450(local_220);
  FUN_18067d5e0(local_2c0 + 6);
  FUN_1805a4e80(local_2c8);
  FUN_18047cfb0(local_2f0);
}



############ FUN_ 1807ffc30 size=1663 ############

/* WARNING: Instruction at (ram,0x00018080001f) overlaps instruction at (ram,0x00018080001e)
    */
/* WARNING: Removing unreachable block (ram,0x00018080001d) */
/* WARNING: Removing unreachable block (ram,0x000180800101) */

undefined8
FUN_1807ffc30(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined1 param_4)

{
  longlong *plVar1;
  int *piVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  char *pcVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  size_t sVar8;
  longlong lVar9;
  int iVar10;
  uint uVar11;
  undefined8 *puVar12;
  uint uVar13;
  char *pcVar14;
  int unaff_retaddr;
  undefined1 auStack_f8 [32];
  undefined4 local_d8;
  undefined4 local_c8;
  undefined8 local_c0;
  char *local_b8;
  undefined *local_b0;
  undefined8 *local_a0;
  undefined4 local_98 [2];
  undefined8 local_90;
  uint local_88;
  uint local_84;
  undefined8 *local_80;
  undefined8 local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  *param_1 = license_services::LsObjectCache::vftable;
  *(undefined1 *)(param_1 + 1) = 0;
  local_a0 = param_1;
  local_80 = param_1;
  FUN_180677570(param_1 + 2);
  *(undefined1 *)(param_1 + 0x195) = param_4;
  plVar3 = param_1 + 0x196;
  uVar7 = 0;
  *plVar3 = 0;
  param_1[0x197] = 0;
  puVar4 = param_1 + 0x198;
  FUN_180677570(puVar4);
  pcVar5 = (char *)(param_1 + 0x32b);
  pcVar5[0] = '\0';
  pcVar5[1] = '\0';
  pcVar5[2] = '\0';
  pcVar5[3] = '\0';
  pcVar5[4] = '\0';
  pcVar5[5] = '\0';
  pcVar5[6] = '\0';
  pcVar5[7] = '\0';
  param_1[0x32c] = 0;
  local_b8 = pcVar5;
  uVar6 = FUN_180715e00(pcVar5);
  *(undefined8 *)pcVar5 = uVar6;
  *(undefined4 *)(param_1 + 0x32d) = 0;
  local_b8 = (char *)FUN_1811316e0(0x10);
  if (local_b8 != (char *)0x0) {
    uVar7 = FUN_180a1edf0(local_b8,puVar4);
  }
  pcVar5 = (char *)(param_1 + 0x32e);
  *(undefined8 *)pcVar5 = uVar7;
  local_b8 = pcVar5;
  FUN_1807fe7b0(param_1 + 0x32f,uVar7);
  FUN_1805ae620(pcVar5,uVar7,uVar7);
  uVar6 = 0;
  param_1[0x330] = 0;
  param_1[0x331] = 0;
  local_b8 = (char *)FUN_1811316e0(0x20);
  if (local_b8 != (char *)0x0) {
    uVar6 = FUN_1805a4070(local_b8,param_3);
  }
  pcVar14 = (char *)(local_a0 + 0x332);
  *(undefined8 *)pcVar14 = uVar6;
  local_b8 = pcVar14;
  FUN_1807fe6d0(local_a0 + 0x333,uVar6);
  FUN_1805ae620(pcVar14,uVar6,uVar6);
  *(undefined1 *)(local_a0 + 0x334) = 0;
  pcVar14 = (char *)(local_a0 + 0x335);
  pcVar14[0] = '\0';
  pcVar14[1] = '\0';
  pcVar14[2] = '\0';
  pcVar14[3] = '\0';
  pcVar14[4] = '\0';
  pcVar14[5] = '\0';
  pcVar14[6] = '\0';
  pcVar14[7] = '\0';
  local_a0[0x336] = 0;
  local_b8 = pcVar14;
  uVar6 = FUN_180807490(pcVar14);
  *(undefined8 *)pcVar14 = uVar6;
  uVar11 = (uint)&stack0x00000000;
  if ((((uVar11 & 0x11ff) * (uVar11 & 0x11ff) * 0x10 + 4) % 0x13 & 0xec) == 0) {
    uVar13 = 1;
  }
  else {
    iVar10 = (uVar11 & 0x56ff) * (uVar11 & 0x56ff) + 1;
    uVar13 = (iVar10 >> 4) + (iVar10 >> 1) + iVar10 * 0x24924924 >> 0x1d;
    uVar13 = (int)(uVar13 - 7) >> 0x1f & uVar13;
  }
  local_88 = ((int)(-uVar13 | uVar13) >> 0x1f) * -0x5f4f ^ 0x565f;
  uVar11 = uVar11 & 0x27f;
  local_84 = 0x9d78U - ((int)(((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3) >> 1) ^ 0x9638;
  sVar8 = 0xffffffffffffffff;
  do {
    sVar8 = sVar8 + 1;
  } while (PTR_DAT_18260b888[sVar8] != '\0');
  puVar12 = param_3;
  if (0xf < (ulonglong)param_3[3]) {
    puVar12 = (undefined8 *)*param_3;
  }
  if ((param_3[2] != sVar8) || (iVar10 = memcmp(puVar12,PTR_DAT_18260b888,param_3[2]), iVar10 != 0))
  {
    local_d8 = 1;
    uVar6 = FUN_1807fe820(local_70,param_3,0,2);
    FUN_18067dba0(plVar3,uVar6);
    if (local_68 != (longlong *)0x0) {
      LOCK();
      plVar1 = local_68 + 1;
      lVar9 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        (**(code **)(*local_68 + 8))(local_68);
        LOCK();
        piVar2 = (int *)((longlong)local_68 + 0xc);
        iVar10 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar10 == 1) {
          (**(code **)(*local_68 + 0x10))(local_68);
        }
      }
    }
    if (*plVar3 == 0) {
      local_b8 = (char *)FUN_1811316e0(0x18);
      if (local_b8 != (char *)0x0) {
        FUN_1805a48c0(local_b8,
                      "LsObjectCache::LsObjectCache: Could not create an instance of LicenseDbClient"
                     );
      }
      lVar9 = FUN_1805c0260();
      local_98[0] = 0xba;
      local_b8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\lsobjectcache.cpp"
      ;
      uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_b8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_98);
    }
  }
  FUN_180a2bfd0(puVar4,0);
  puVar12 = local_a0;
  local_c8 = 0x811c9e29;
  FUN_180a29ea0(local_a0);
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_90 = 0;
  local_c0 = 0x180815c18;
  local_b0 = &DAT_180818aec;
  FUN_180a2b200(puVar12,param_2,0);
  FUN_180a204e0(*(undefined8 *)pcVar5,param_2,puVar4);
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar6 = FUN_180a214b0(param_2,puVar4);
  return uVar6;
}



############ FUN_ 1807fe6d0 size=97 ############

undefined8 * FUN_1807fe6d0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1807fe7b0 size=96 ############

undefined8 * FUN_1807fe7b0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectStoreUtils>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1807fe820 size=1187 ############

undefined8 *
FUN_1807fe820(undefined8 *param_1,undefined8 param_2,undefined1 param_3,undefined4 param_4,
             int param_5)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *plVar8;
  longlong *local_100;
  longlong **local_f8;
  longlong *local_f0;
  longlong *local_e8;
  longlong *plStack_e0;
  longlong local_d8 [2];
  longlong *local_c8;
  longlong *plStack_c0;
  longlong *local_b8;
  longlong *plStack_b0;
  longlong *local_a8;
  longlong *plStack_a0;
  longlong *local_98;
  longlong *local_88;
  longlong *plStack_80;
  longlong *local_78;
  longlong *plStack_70;
  longlong *local_68;
  longlong *plStack_60;
  undefined8 local_58;
  undefined1 local_50 [40];
  
  local_58 = 0xfffffffffffffffe;
  plVar8 = (longlong *)0x0;
  lVar4 = FUN_1811316e0(0xb0);
  plVar6 = plVar8;
  local_d8[0] = lVar4;
  if (lVar4 != 0) {
    uVar5 = FUN_1805a4070(local_50,param_2);
    plVar6 = (longlong *)FUN_180927880(lVar4,uVar5);
  }
  local_e8 = plVar6;
  FUN_18066b780(&plStack_e0,plVar6);
  FUN_1805ae620(&local_e8,plVar6,plVar6);
  lVar4 = __RTDynamicCast(local_e8,0,&apache::thrift::transport::TTransport::RTTI_Type_Descriptor,
                          &apache::thrift::transport::TAsioLocalSocket::RTTI_Type_Descriptor,0);
  local_100 = plStack_e0;
  if (plStack_e0 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_e0 + 1) = (int)plStack_e0[1] + 1;
    UNLOCK();
  }
  if (lVar4 == 0) {
    local_d8[0] = 0;
    FUN_18060c7a0(&local_100,local_d8);
  }
  plVar6 = local_100;
  FUN_18092b460(lVar4,param_5 * 1000);
  plVar7 = local_100;
  if (plVar6 != (longlong *)0x0) {
    LOCK();
    plVar6 = plVar6 + 1;
    lVar4 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_100 + 8))(local_100);
      LOCK();
      piVar1 = (int *)((longlong)plVar7 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_100 + 0x10))();
      }
    }
  }
  local_f8 = (longlong **)FUN_1811316e0(0x50);
  plVar6 = plVar8;
  if (local_f8 != (longlong **)0x0) {
    local_88 = local_e8;
    plStack_80 = plStack_e0;
    if (plStack_e0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_e0 + 1) = (int)plStack_e0[1] + 1;
      UNLOCK();
    }
    plVar6 = (longlong *)FUN_180623170(local_f8,&local_88);
  }
  local_c8 = plVar6;
  FUN_1806230a0(&plStack_c0,plVar6);
  FUN_1805ae620(&local_c8,plVar6,plVar6);
  plVar7 = (longlong *)FUN_1811316e0(0x40);
  plVar6 = plVar8;
  local_98 = plVar7;
  if (plVar7 != (longlong *)0x0) {
    local_b8 = local_c8;
    plStack_b0 = plStack_c0;
    if (plStack_c0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_c0 + 1) = (int)plStack_c0[1] + 1;
      UNLOCK();
    }
    local_f8 = &local_b8;
    local_78 = local_c8;
    plStack_70 = plStack_c0;
    if (plStack_c0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_c0 + 1) = (int)plStack_c0[1] + 1;
      UNLOCK();
    }
    FUN_180622370(plVar7,&local_78);
    plVar3 = plStack_b0;
    *plVar7 = (longlong)apache::thrift::protocol::TBinaryProtocol::vftable;
    plVar7[4] = 0;
    *(undefined2 *)(plVar7 + 5) = 0x100;
    plVar7[6] = 0;
    *(undefined4 *)(plVar7 + 7) = 0;
    plVar6 = plVar7;
    if (plStack_b0 != (longlong *)0x0) {
      LOCK();
      plVar7 = plStack_b0 + 1;
      lVar4 = *plVar7;
      *(int *)plVar7 = (int)*plVar7 + -1;
      UNLOCK();
      if ((int)lVar4 == 1) {
        (**(code **)(*plStack_b0 + 8))(plStack_b0);
        LOCK();
        piVar1 = (int *)((longlong)plVar3 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar3 + 0x10))(plVar3);
        }
      }
    }
  }
  local_a8 = plVar6;
  FUN_180621590(&plStack_a0,plVar6);
  FUN_1805ae620(&local_a8,plVar6,plVar6);
  local_68 = local_c8;
  plStack_60 = plStack_c0;
  if (plStack_c0 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_c0 + 1) = (int)plStack_c0[1] + 1;
    UNLOCK();
  }
  FUN_1806233d0(&local_68,param_3,param_4,0);
  local_f0 = (longlong *)FUN_1811316e0(0x48);
  plVar6 = plStack_a0;
  if (local_f0 != (longlong *)0x0) {
    if (plStack_a0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_a0 + 1) = (int)plStack_a0[1] + 1;
      UNLOCK();
    }
    *local_f0 = (longlong)&DAT_181bdf460;
    local_f0[8] = (longlong)license_services::LicenseDbIf::vftable;
    *(undefined ***)((longlong)*(int *)(*local_f0 + 4) + (longlong)local_f0) =
         license_services::LicenseDbClient::vftable;
    *(int *)((longlong)*(int *)(*local_f0 + 4) + -4 + (longlong)local_f0) =
         *(int *)(*local_f0 + 4) + -0x40;
    local_f0[1] = (longlong)local_a8;
    local_f0[2] = (longlong)plStack_a0;
    if (plStack_a0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_a0 + 1) = (int)plStack_a0[1] + 1;
      UNLOCK();
    }
    local_f0[3] = (longlong)local_a8;
    local_f0[4] = (longlong)plStack_a0;
    if (plStack_a0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_a0 + 1) = (int)plStack_a0[1] + 1;
      UNLOCK();
    }
    local_f0[5] = (longlong)local_a8;
    local_f0[6] = (longlong)local_a8;
    plVar8 = local_f0;
    if (plStack_a0 != (longlong *)0x0) {
      LOCK();
      plVar7 = plStack_a0 + 1;
      lVar4 = *plVar7;
      *(int *)plVar7 = (int)*plVar7 + -1;
      UNLOCK();
      if ((int)lVar4 == 1) {
        (**(code **)(*plStack_a0 + 8))(plStack_a0);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar6 + 0x10))();
        }
      }
    }
  }
  *param_1 = plVar8;
  FUN_1807fe740(param_1 + 1,plVar8);
  FUN_1805ae620(param_1,plVar8,plVar8);
  if (plStack_a0 != (longlong *)0x0) {
    LOCK();
    plVar6 = plStack_a0 + 1;
    lVar4 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_a0 + 8))(plStack_a0);
      LOCK();
      piVar1 = (int *)((longlong)plStack_a0 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_a0 + 0x10))(plStack_a0);
      }
    }
  }
  if (plStack_c0 != (longlong *)0x0) {
    LOCK();
    plVar6 = plStack_c0 + 1;
    lVar4 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_c0 + 8))(plStack_c0);
      LOCK();
      piVar1 = (int *)((longlong)plStack_c0 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_c0 + 0x10))(plStack_c0);
      }
    }
  }
  if (plStack_e0 != (longlong *)0x0) {
    LOCK();
    plVar6 = plStack_e0 + 1;
    lVar4 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_e0 + 8))(plStack_e0);
      LOCK();
      piVar1 = (int *)((longlong)plStack_e0 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_e0 + 0x10))(plStack_e0);
      }
    }
  }
  return param_1;
}



############ FUN_ 1807fe740 size=97 ############

undefined8 * FUN_1807fe740(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LicenseDbClient>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180807490 size=55 ############

void FUN_180807490(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x60);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 18084d2f0 size=845 ############

/* WARNING: Removing unreachable block (ram,0x00018084d37f) */
/* WARNING: Removing unreachable block (ram,0x00018084d323) */
/* WARNING: Removing unreachable block (ram,0x00018084d631) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined1 FUN_18084d2f0(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 uVar4;
  longlong *plVar5;
  undefined1 uVar6;
  undefined4 uVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 uVar10;
  uint uVar11;
  uint uVar12;
  undefined8 *puVar13;
  char cVar14;
  char cVar15;
  int unaff_retaddr;
  undefined8 uStack_f0;
  undefined8 uStack_e0;
  undefined8 local_60;
  longlong *local_58 [3];
  
  uVar10 = 0;
  if (*(longlong *)(param_1 + 0x48) == 0) {
    lVar8 = FUN_18086a7d0(param_1);
    uVar4 = *(undefined8 *)(param_1 + 0x40);
    lVar9 = FUN_1811316e0(0x38);
    if (lVar9 != 0) {
      uVar7 = FUN_180a4ed20();
      uVar10 = FUN_180a3d1e0(uVar4,uVar7);
      uVar10 = __RTDynamicCast(uVar10,0,&license_services::LsCachedObjectVectorBase::
                                         RTTI_Type_Descriptor,
                               &license_services::LsCachedObjectVectorAuthManifestElement::
                                RTTI_Type_Descriptor);
      uVar10 = FUN_18082cbe0(lVar9,param_1,lVar8 + 0x1d0,uVar10);
    }
    local_60 = uVar10;
    FUN_180846d60(local_58,uVar10);
    FUN_1805ae620(&local_60,uVar10,uVar10);
    uVar10 = *(undefined8 *)(param_1 + 0x48);
    *(undefined8 *)(param_1 + 0x48) = local_60;
    plVar5 = *(longlong **)(param_1 + 0x50);
    *(longlong **)(param_1 + 0x50) = local_58[0];
    local_60 = uVar10;
    local_58[0] = plVar5;
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar5 + 1;
      lVar8 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar2 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
  }
  lVar9 = FUN_18086a7d0(param_1);
  lVar8 = FUN_18086a7d0(param_1);
  lVar8 = lVar8 + 0x1d0;
  if (lVar9 != DAT_1826677d0) {
    FUN_180a3b7d0(*(undefined8 *)(param_1 + 0x48));
    DAT_1826677d0 = lVar9;
  }
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = uRam000000018154f630 ^
           (uRam000000018154f62c ^ (uRam000000018154f628 ^ 0x811c9dc5) * 0x1000181) * 0x1000181;
  do {
    func_0x00018084ffbd();
    FUN_18084e2b2();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar11 = uRam000000018154f640 ^
           (uRam000000018154f63c ^
           (uRam000000018154f638 ^ (uRam000000018154f634 ^ uVar11 * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181;
  do {
    func_0x00018084be4e();
    func_0x00018084d0e2();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar11 = uRam000000018154f64c ^
           (uRam000000018154f648 ^ (uRam000000018154f644 ^ uVar11 * 0x1000181) * 0x1000181) *
           0x1000181;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018084d4c5(0x5730);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  func_0x00018084ea92((_DAT_18154f650 ^ uVar11 * 0x1000181) * 0x1000181);
  cVar15 = SBORROW8(0,-lVar8);
  cVar14 = lVar8 < 0;
  uStack_e0 = 0x18154f728;
                    /* WARNING: Call to offcut address within same function */
  uVar6 = func_0x00018084d806();
  if (cVar15 == cVar14) {
    uVar6 = in((short)lVar8);
    puVar13 = (undefined8 *)&stack0xffffffffffffff18;
    cVar14 = '\x04';
    do {
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + -8);
      puVar13 = puVar13 + -1;
      *puVar13 = *(undefined8 *)register0x00000020;
      cVar14 = cVar14 + -1;
    } while ('\0' < cVar14);
    return uVar6;
  }
  return uVar6;
}



############ FUN_ 180846d60 size=97 ############

undefined8 * FUN_180846d60(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorAuthManifestElement>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180847740 size=196 ############

undefined8
FUN_180847740(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180a61dc0();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorMachineId::RTTI_Type_Descriptor,
                            CONCAT44(uVar4,1));
    uVar3 = FUN_180a677a0(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180846dd0 size=97 ############

undefined8 * FUN_180846dd0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorMachineId>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180832c20 size=1448 ############

/* WARNING: Removing unreachable block (ram,0x000180832d46) */
/* WARNING: Removing unreachable block (ram,0x000180832cd1) */
/* WARNING: Removing unreachable block (ram,0x000180832cea) */
/* WARNING: Removing unreachable block (ram,0x000180832d84) */
/* WARNING: Removing unreachable block (ram,0x000180832fac) */

undefined8 FUN_180832c20(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 uVar8;
  uint uVar9;
  uint uVar10;
  undefined1 auStack_f8 [32];
  code *local_d8;
  longlong local_d0;
  undefined1 local_c8;
  longlong local_a0;
  uint local_98;
  uint local_90;
  undefined8 local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_f8;
  uVar9 = (uint)&stack0x00000000 & 0x5ff;
  uVar10 = (uVar9 * uVar9 * 0x10 + 4) % 0x13;
  local_98 = ((int)(-uVar10 | uVar10) >> 0x1f) * 0x2841 & 0x57b7U ^ 20999;
  uVar9 = (uVar9 * uVar9 * 0x10 + 4) % 0x13;
  local_90 = (((int)(-uVar9 | uVar9) >> 0x1f) * -0x81d2 | 0xd1d2U) ^ 0xdee2;
  local_70 = param_2;
  if (*(longlong *)(param_1 + 0x48) == 0) {
    lVar6 = FUN_1808460a0(param_1);
    uVar8 = *(undefined8 *)(param_1 + 0x40);
    lVar7 = FUN_1811316e0(0x38);
    local_a0 = lVar7;
    if (lVar7 == 0) {
      uVar8 = 0;
    }
    else {
      uVar5 = FUN_180a59120();
      uVar8 = FUN_180a3d1e0(uVar8,uVar5);
      local_d8 = (code *)CONCAT44(local_d8._4_4_,1);
      uVar8 = __RTDynamicCast(uVar8,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorMachineBinding::
                               RTTI_Type_Descriptor);
      local_c8 = 1;
      local_d8 = FUN_180841b80;
      local_d0 = param_1;
      uVar8 = FUN_180a7e710(lVar7,param_1,lVar6 + 0x158,uVar8);
    }
    local_88 = uVar8;
    FUN_1808301e0(&local_80,uVar8);
    FUN_1805ae620(&local_88,uVar8,uVar8);
    local_60 = local_88;
    uVar8 = *(undefined8 *)(param_1 + 0x48);
    *(undefined8 *)(param_1 + 0x48) = local_88;
    plVar4 = *(longlong **)(param_1 + 0x50);
    *(longlong **)(param_1 + 0x50) = local_80;
    local_88 = uVar8;
    local_80 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar6 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  lVar6 = FUN_1808460a0(param_1);
  lVar7 = FUN_1808460a0(param_1);
  local_78 = *(undefined8 *)(param_1 + 0x48);
  if (lVar6 != DAT_182666df0) {
    FUN_180a3b7d0(local_78,lVar7 + 0x158);
    DAT_182666df0 = lVar6;
  }
  return 0x1654;
}



############ FUN_ 1808301e0 size=97 ############

undefined8 * FUN_1808301e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorMachineBinding>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a29ea0 size=896 ############

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

longlong FUN_180a29ea0(ulonglong param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4)

{
  uint uVar1;
  longlong lVar2;
  ulonglong uVar3;
  undefined1 auStack_c8 [40];
  undefined *local_a0;
  undefined *local_98;
  longlong local_90;
  longlong local_70;
  uint local_68;
  undefined4 local_64;
  ulonglong local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  uVar1 = (uint)&stack0x00000000 & 0x19ff;
  local_68 = 0x33ba << ((char)((byte)(-((uVar1 + 1) * uVar1 + 0x18d3 & 0x80000001) >> 0x18) ^ 0xff)
                        >> 7 & 0x1fU) ^ 0x306a;
  uVar3 = (ulonglong)((uint)&stack0x00000000 & 0xbff);
  local_64 = 0xea0;
  local_60 = param_1;
  local_70 = FUN_1811316e0(0x80);
  if (local_70 != 0) {
    uVar3 = param_1;
    FUN_180af1760(local_70,param_1 + 0xd88);
  }
  local_90 = 0;
  local_a0 = &DAT_180a2a5d0;
  local_98 = &DAT_180a2d078;
  local_90 = FUN_1811316e0(0x80);
  lVar2 = 0;
  if (local_90 != 0) {
    lVar2 = FUN_180b270d0(local_90,param_1 + 0xde8);
    uVar3 = param_1;
  }
  if (!CARRY8(~(~(uVar3 + 0x347bb955) + 1) - 0x347bb954,param_4)) {
    lVar2 = (-(lVar2 + 0x6c4a6e08) ^ 0xffffffffffffffffU) - 0x6c4a6e07;
  }
  return lVar2;
}



############ FUN_ 180b93430 size=990 ############

longlong FUN_180b93430(undefined8 *param_1)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  undefined1 auStack_b8 [32];
  undefined8 *local_98;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_98 = param_1;
  local_60 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_98 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityActivationInfo::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b933c0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar2 = (uint)&stack0x00000000 & 0x70ff;
  iVar3 = uVar2 * uVar2 + 1;
  uVar2 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  uVar2 = (int)(uVar2 - 7) >> 0x1f & uVar2 | (uint)&stack0x00000000;
  return -(~(~(~(ulonglong)(((int)(-uVar2 | uVar2) >> 0x1f) * -0x6ec1 ^ 0x6451) + 1) + 1) + 1);
}



############ FUN_ 180b933c0 size=97 ############

undefined8 * FUN_180b933c0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityActivationInfo>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180ba3df0 size=1046 ############

/* WARNING: Removing unreachable block (ram,0x000180ba3f33) */
/* WARNING: Removing unreachable block (ram,0x000180ba3f74) */
/* WARNING: Removing unreachable block (ram,0x000180ba3f41) */

void FUN_180ba3df0(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  uint uVar3;
  char *pcVar4;
  int unaff_retaddr;
  undefined1 auStack_a8 [48];
  undefined8 *local_78;
  undefined8 *local_70;
  undefined4 local_68;
  uint local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_70 = param_1;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_78 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityArrayEntry::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180ba3d80(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  local_68 = 0x4e0;
  uVar3 = (uint)&stack0x00000000 & 0xcff;
  uVar3 = (uVar3 + 1) * uVar3 + 0x6a1 & 0x80000001;
  local_60 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x6384 ^ 0x6084;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  FUN_180ba3788(0,0x6ac350,0);
                    /* WARNING: Call to offcut address within same function */
  lVar2 = func_0x000180ba4084();
  pcVar4 = (char *)((-lVar2 ^ 0xffffffffffffffffU) + 1);
  *pcVar4 = *pcVar4 + (char)pcVar4;
                    /* WARNING: Could not recover jumptable at 0x000180ba421b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)((param_2 & 0xffffffff) + 0x151d5))();
  return;
}



############ FUN_ 180ba3d80 size=97 ############

undefined8 * FUN_180ba3d80(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityArrayEntry>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1806c31f0 size=77 ############

undefined8 * FUN_1806c31f0(undefined8 param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x128);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1806d2580(puVar1,param_1);
    *puVar1 = pace::PaceFusionException::vftable;
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 1806c5ae0 size=77 ############

undefined8 * FUN_1806c5ae0(undefined8 param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x128);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1806d2580(puVar1,param_1);
    *puVar1 = pace::AuthorizationException::vftable;
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 1806cef60 size=46 ############

void FUN_1806cef60(undefined8 param_1)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x128);
  if (lVar1 != 0) {
    FUN_1807030a0(lVar1,param_1);
    return;
  }
  return;
}



############ FUN_ 1806d9200 size=926 ############

void FUN_1806d9200(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  undefined8 *puVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar4) / 0xe8;
  uVar3 = (param_1[2] - lVar4) / 0xe8;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      lVar4 = FUN_1806da710(&local_res18,puVar10,param_2 - uVar2);
      param_1[1] = lVar4;
      return;
    }
    if (param_2 != uVar2) {
      puVar7 = (undefined8 *)(param_2 * 0xe8 + lVar4);
      for (puVar8 = puVar7; puVar8 != puVar10; puVar8 = puVar8 + 0x1d) {
        (**(code **)*puVar8)(puVar8,0);
      }
      param_1[1] = (longlong)puVar7;
    }
    return;
  }
  if (0x11a7b9611a7b961 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar3 <= 0x11a7b9611a7b961 - (uVar3 >> 1)) && (uVar9 = (uVar3 >> 1) + uVar3, uVar9 < param_2)
     ) {
    uVar9 = param_2;
  }
  uVar3 = uVar9 * 0xe8;
  local_res20 = uVar9;
  if (uVar9 < 0x11a7b9611a7b962) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1806d931c;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1806d931c:
  FUN_1806da710(&local_res18,puVar10 + uVar2 * 0x1d,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar8 = puVar10;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0xe8) {
    *puVar8 = pace::eden::thrift::fusion::DynamicCryptoProductData::vftable;
    puVar8[1] = pace::eden::thrift::pub::WrapperAuthProduct::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar6 + 0x10);
    *(undefined4 *)((longlong)puVar8 + 0x14) = *(undefined4 *)(lVar6 + 0x14);
    *(undefined1 *)(puVar8 + 3) = *(undefined1 *)(lVar6 + 0x18);
    *(undefined1 *)((longlong)puVar8 + 0x19) = *(undefined1 *)(lVar6 + 0x19);
    FUN_1805a4070(puVar8 + 4,lVar6 + 0x20);
    *(undefined4 *)(puVar8 + 8) = *(undefined4 *)(lVar6 + 0x40);
    *(undefined1 *)((longlong)puVar8 + 0x44) = *(undefined1 *)(lVar6 + 0x44);
    *(undefined4 *)(puVar8 + 9) = *(undefined4 *)(lVar6 + 0x48);
    FUN_1805b46a0(puVar8 + 10,lVar6 + 0x50);
    FUN_1805b46a0(puVar8 + 0xd,lVar6 + 0x68);
    FUN_1805b46a0(puVar8 + 0x10,lVar6 + 0x80);
    FUN_1805b46a0(puVar8 + 0x13,lVar6 + 0x98);
    FUN_1805b46a0(puVar8 + 0x16,lVar6 + 0xb0);
    FUN_1805b46a0(puVar8 + 0x19,lVar6 + 200);
    puVar8[0x1c] = *(undefined8 *)(lVar6 + 0xe0);
    puVar8 = puVar8 + 0x1d;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x1d);
    param_1[2] = (longlong)(puVar10 + uVar9 * 0x1d);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar10; puVar8 = puVar8 + 0x1d) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0xe8) * 0xe8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806d95b0 size=678 ############

void FUN_1806d95b0(longlong *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  void *pvVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  undefined4 *puVar13;
  void *_Memory;
  undefined8 *puVar14;
  undefined4 *puVar15;
  undefined1 *puVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  undefined4 *puVar19;
  undefined8 uVar20;
  
  uVar20 = 0xfffffffffffffffe;
  puVar16 = (undefined1 *)param_1[1];
  lVar10 = *param_1;
  uVar17 = (longlong)puVar16 - lVar10 >> 5;
  uVar11 = param_1[2] - lVar10 >> 5;
  if (param_2 <= uVar11) {
    if (param_2 <= uVar17) {
      if (param_2 != uVar17) {
        lVar10 = param_2 * 0x20 + lVar10;
        FUN_18048c550(lVar10,puVar16,param_1);
        param_1[1] = lVar10;
      }
      return;
    }
    for (lVar10 = param_2 - uVar17; lVar10 != 0; lVar10 = lVar10 + -1) {
      *(undefined8 *)(puVar16 + 0x10) = 0;
      *(undefined8 *)(puVar16 + 0x18) = 0xf;
      *puVar16 = 0;
      puVar16 = puVar16 + 0x20;
    }
    FUN_18048c550(puVar16,puVar16);
    param_1[1] = (longlong)puVar16;
    return;
  }
  if (0x7ffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar11 <= 0x7ffffffffffffff - (uVar11 >> 1)) &&
     (uVar9 = uVar11 + (uVar11 >> 1), uVar9 < param_2)) {
    uVar9 = param_2;
  }
  uVar18 = uVar9 * 0x20;
  uVar11 = uVar9;
  if (uVar9 < 0x800000000000000) {
    if (uVar18 < 0x1000) {
      if (uVar18 == 0) {
        puVar15 = (undefined4 *)0x0;
      }
      else {
        puVar15 = (undefined4 *)FUN_1811316e0(uVar18,uVar18,0x7ffffffffffffff,param_4,uVar9);
      }
      goto LAB_1806d96a7;
    }
  }
  else {
    uVar18 = 0xffffffffffffffff;
  }
  uVar12 = uVar18 + 0x27;
  if (uVar12 <= uVar18) {
    uVar12 = 0xffffffffffffffff;
  }
  lVar10 = FUN_1811316e0(uVar12,uVar18,0x7ffffffffffffff,param_4,uVar9);
  if (lVar10 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar15 = (undefined4 *)(lVar10 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)(puVar15 + -2) = lVar10;
LAB_1806d96a7:
  puVar19 = puVar15 + uVar17 * 8;
  puVar13 = puVar19;
  for (lVar10 = param_2 - uVar17; lVar10 != 0; lVar10 = lVar10 + -1) {
    *(undefined8 *)(puVar13 + 4) = 0;
    *(undefined8 *)(puVar13 + 6) = 0xf;
    *(undefined1 *)puVar13 = 0;
    puVar13 = puVar13 + 8;
  }
  FUN_18048c550(puVar13,puVar13,param_3);
  puVar2 = (undefined8 *)param_1[1];
  puVar3 = (undefined8 *)*param_1;
  puVar13 = puVar15;
  if (puVar3 != puVar2) {
    puVar14 = puVar3 + 3;
    do {
      *(undefined8 *)(((longlong)puVar15 - (longlong)puVar3) + -8 + (longlong)puVar14) = 0;
      *(undefined8 *)(((longlong)puVar15 - (longlong)puVar3) + (longlong)puVar14) = 0;
      uVar5 = *(undefined4 *)((longlong)puVar14 + -0x14);
      uVar6 = *(undefined4 *)(puVar14 + -2);
      uVar7 = *(undefined4 *)((longlong)puVar14 + -0xc);
      *puVar13 = *(undefined4 *)(puVar14 + -3);
      puVar13[1] = uVar5;
      puVar13[2] = uVar6;
      puVar13[3] = uVar7;
      uVar8 = *puVar14;
      *(undefined8 *)(puVar13 + 4) = puVar14[-1];
      *(undefined8 *)(puVar13 + 6) = uVar8;
      puVar14[-1] = 0;
      *puVar14 = 0xf;
      *(undefined1 *)(puVar14 + -3) = 0;
      puVar13 = puVar13 + 8;
      puVar1 = puVar14 + 1;
      puVar14 = puVar14 + 4;
    } while (puVar1 != puVar2);
  }
  FUN_18048c550(puVar13,puVar13,param_1,puVar2,uVar11,puVar19,uVar20);
  if (*param_1 == 0) {
    *param_1 = (longlong)puVar15;
    param_1[1] = (longlong)(puVar15 + param_2 * 8);
    param_1[2] = (longlong)(puVar15 + uVar9 * 8);
    return;
  }
  FUN_18048c550(*param_1,param_1[1],param_1);
  pvVar4 = (void *)*param_1;
  _Memory = pvVar4;
  if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806d9860 size=443 ############

void FUN_1806d9860(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  void *pvVar6;
  ulonglong uVar7;
  
  pvVar6 = (void *)param_1[1];
  lVar3 = *param_1;
  uVar7 = (longlong)pvVar6 - lVar3 >> 3;
  uVar4 = param_1[2] - lVar3 >> 3;
  if (param_2 <= uVar4) {
    if (param_2 <= uVar7) {
      if (param_2 != uVar7) {
        param_1[1] = lVar3 + param_2 * 8;
      }
      return;
    }
    pvVar1 = (void *)((longlong)pvVar6 + (param_2 - uVar7) * 8);
    memset(pvVar6,0,(longlong)pvVar1 - (longlong)pvVar6);
    param_1[1] = (longlong)pvVar1;
    return;
  }
  if (0x1fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar2 = param_2;
  if ((uVar4 <= 0x1fffffffffffffff - (uVar4 >> 1)) &&
     (uVar2 = (uVar4 >> 1) + uVar4, uVar2 < param_2)) {
    uVar2 = param_2;
  }
  uVar4 = uVar2 * 8;
  if (uVar2 < 0x2000000000000000) {
    uVar2 = uVar4;
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        pvVar6 = (void *)0x0;
      }
      else {
        pvVar6 = (void *)FUN_1811316e0(uVar4);
      }
      goto LAB_1806d9947;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar5 = uVar2 + 0x27;
  if (uVar5 <= uVar2) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar5);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar6 = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar6 - 8) = lVar3;
LAB_1806d9947:
  memset((void *)((longlong)pvVar6 + uVar7 * 8),0,(param_2 - uVar7) * 8);
  memmove(pvVar6,(void *)*param_1,param_1[1] - *param_1);
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = (longlong)pvVar6;
    param_1[1] = (longlong)((longlong)pvVar6 + param_2 * 8);
    param_1[2] = (longlong)(uVar4 + (longlong)pvVar6);
    return;
  }
  pvVar6 = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (pvVar6 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 1806d9b80 size=974 ############

void FUN_1806d9b80(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar4) / 0x450;
  uVar3 = (param_1[2] - lVar4) / 0x450;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0x450 + lVar4);
        for (puVar9 = puVar8; puVar9 != puVar10; puVar9 = puVar9 + 0x8a) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1806da200(puVar10);
      puVar10 = puVar10 + 0x8a;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0x3b5cc0ed7303b5 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = param_2;
  if ((uVar3 <= 0x3b5cc0ed7303b5 - (uVar3 >> 1)) && (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2))
  {
    uVar5 = param_2;
  }
  uVar3 = uVar5 * 0x450;
  if (uVar5 < 0x3b5cc0ed7303b6) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1806d9c99;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar6 = uVar3 + 0x27;
  if (uVar6 <= uVar3) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar6);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1806d9c99:
  puVar9 = puVar10 + uVar2 * 0x8a;
  for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1806da200(puVar9);
    puVar9 = puVar9 + 0x8a;
  }
  lVar4 = param_1[1];
  puVar9 = puVar10;
  for (lVar7 = *param_1; lVar7 != lVar4; lVar7 = lVar7 + 0x450) {
    *puVar9 = pace::eden::thrift::fusion::AuthVerificationData::vftable;
    puVar9[1] = pace::eden::thrift::pub::WrapperAuthProduct::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar7 + 0x10);
    *(undefined4 *)((longlong)puVar9 + 0x14) = *(undefined4 *)(lVar7 + 0x14);
    *(undefined1 *)(puVar9 + 3) = *(undefined1 *)(lVar7 + 0x18);
    *(undefined1 *)((longlong)puVar9 + 0x19) = *(undefined1 *)(lVar7 + 0x19);
    FUN_1805a4070(puVar9 + 4,lVar7 + 0x20);
    *(undefined4 *)(puVar9 + 8) = *(undefined4 *)(lVar7 + 0x40);
    *(undefined1 *)((longlong)puVar9 + 0x44) = *(undefined1 *)(lVar7 + 0x44);
    FUN_1805e30c0(puVar9 + 9,lVar7 + 0x48);
    FUN_1805e30c0(puVar9 + 0x1b,lVar7 + 0xd8);
    FUN_1805e30c0(puVar9 + 0x2d,lVar7 + 0x168);
    FUN_1805e2270(puVar9 + 0x3f,lVar7 + 0x1f8);
    FUN_1805b46a0(puVar9 + 0x86);
    *(undefined4 *)(puVar9 + 0x89) = *(undefined4 *)(lVar7 + 0x448);
    *(undefined2 *)((longlong)puVar9 + 0x44c) = *(undefined2 *)(lVar7 + 0x44c);
    puVar9 = puVar9 + 0x8a;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x8a);
    param_1[2] = (longlong)(puVar10 + uVar5 * 0x8a);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar10; puVar9 = puVar9 + 0x8a) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x450) * 0x450)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806f1e90 size=97 ############

undefined8 * FUN_1806f1e90(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<boost::posix_time::ptime>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1806f4b90 size=161 ############

void FUN_1806f4b90(void)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined4 local_28 [2];
  char *local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  local_20 = (char *)FUN_1811316e0(0x18);
  if (local_20 != (char *)0x0) {
    FUN_1805a48c0(local_20,"This version does not support verified messaging.");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_20 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_28[0] = 0x1bb;
  local_20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_28);
}



############ FUN_ 1806f4c50 size=161 ############

void FUN_1806f4c50(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res10;
  char *local_res18 [2];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"This version does not support verified messaging.",param_3,param_4,
                  uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x1c4);
  local_res18[0] =
       "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp"
  ;
  uVar2 = FUN_1805a21d0(puVar1[1],local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res10);
}



############ FUN_ 1806f4d10 size=1422 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806f4d10(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  void *pvVar5;
  longlong lVar6;
  undefined4 uVar7;
  char cVar8;
  longlong lVar9;
  undefined8 uVar10;
  byte *pbVar11;
  byte *pbVar12;
  void *pvVar13;
  byte *pbVar14;
  ulonglong uVar15;
  undefined1 auStack_1b8 [32];
  undefined4 local_198;
  uint local_188 [2];
  byte *local_180;
  undefined4 local_178 [2];
  undefined4 local_170 [2];
  uint local_168 [2];
  undefined4 local_160 [2];
  undefined4 local_158 [2];
  byte *local_150;
  longlong *local_148;
  char *local_140;
  char *local_138;
  char *local_130;
  char *local_128;
  undefined8 local_120;
  undefined8 local_118;
  longlong local_110;
  undefined1 local_108 [4];
  uint uStack_104;
  ulonglong uStack_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  int local_e8;
  undefined4 uStack_e4;
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined8 local_c8;
  byte *local_c0;
  void *local_b8;
  undefined1 local_b0;
  undefined7 uStack_af;
  undefined8 local_a0;
  ulonglong local_98;
  undefined1 local_88 [4];
  uint uStack_84;
  ulonglong uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  int local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  ulonglong local_48;
  
  local_c8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  local_120 = param_2;
  if (*(int *)(param_1 + 0x68) != 0) {
    if (*(int *)(param_1 + 0x68) != 1) {
      FUN_18071c900(param_1,param_2);
    }
    *(longlong *)(param_1 + 0x70) = *(longlong *)(param_1 + 0x70) + 1;
    FUN_1806f52ec();
    return;
  }
  pbVar11 = (byte *)0x0;
  *(undefined8 *)(param_1 + 0x80) = 0;
  plVar4 = *(longlong **)(param_1 + 0x88);
  *(undefined8 *)(param_1 + 0x88) = 0;
  lVar9 = -1;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  FUN_1806f20c0(local_88);
  FUN_1806f20c0(local_108);
  FUN_1806f3da0(param_1,local_88,0x40);
  uStack_104 = uStack_84;
  uStack_100 = uStack_80;
  local_f8 = local_78;
  uStack_f0 = uStack_70;
  local_e8 = local_68;
  uStack_e4 = uStack_64;
  uStack_e0 = uStack_60;
  uStack_dc = uStack_5c;
  local_d8 = local_58;
  uStack_d4 = uStack_54;
  uStack_d0 = uStack_50;
  uStack_cc = uStack_4c;
  cVar8 = FUN_1806f68b0(local_108);
  if (cVar8 == '\0') {
    local_180 = (byte *)FUN_1811316e0(0x18);
    if (local_180 != (byte *)0x0) {
      FUN_1805a48c0(local_180,"The thrift header sanity check failed.");
    }
    lVar9 = FUN_1805c0260();
    local_178[0] = 0x1db;
    local_130 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_130);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_178);
  }
  cVar8 = FUN_1806f9730(local_108);
  if (cVar8 == '\0') {
    local_180 = (byte *)FUN_1811316e0(0x18);
    if (local_180 != (byte *)0x0) {
      pbVar11 = (byte *)FUN_1805a48c0(local_180,
                                      "The current version = %ld; minimum version found in the header = %ld"
                                     );
    }
    lVar9 = FUN_1805c0260();
    FUN_18060e760(*(undefined8 *)(pbVar11 + 8),&DAT_181bcdbf8);
    FUN_18060e760(*(undefined8 *)(pbVar11 + 8),(longlong)&local_f8 + 4);
    local_170[0] = 0x1e0;
    local_128 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp"
    ;
    uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_128);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_170);
  }
  pbVar12 = (byte *)FUN_1811316e0(0x38);
  iVar3 = (int)uStack_100;
  uVar15 = uStack_100 & 0xffffffff;
  pbVar14 = pbVar11;
  local_180 = pbVar12;
  if (pbVar12 != (byte *)0x0) {
    pbVar12[8] = 0;
    pbVar12[9] = 0;
    pbVar12[10] = 0;
    pbVar12[0xb] = 0;
    pbVar12[0xc] = 0;
    pbVar12[0xd] = 0;
    pbVar12[0xe] = 0;
    pbVar12[0xf] = 0;
    pbVar12[0x10] = 0;
    pbVar12[0x11] = 0;
    pbVar12[0x12] = 0;
    pbVar12[0x13] = 0;
    pbVar12[0x14] = 0;
    pbVar12[0x15] = 0;
    pbVar12[0x16] = 0;
    pbVar12[0x17] = 0;
    pbVar12[0x18] = 0;
    pbVar12[0x19] = 0;
    pbVar12[0x1a] = 0;
    pbVar12[0x1b] = 0;
    pbVar12[0x1c] = 0;
    pbVar12[0x1d] = 0;
    pbVar12[0x1e] = 0;
    pbVar12[0x1f] = 0;
    pbVar12[0x20] = 0;
    pbVar12[0x21] = 0;
    pbVar12[0x22] = 0;
    pbVar12[0x23] = 0;
    pbVar12[0x24] = 0;
    pbVar12[0x25] = 0;
    pbVar12[0x26] = 0;
    pbVar12[0x27] = 0;
    *(undefined ***)pbVar12 = apache::thrift::transport::TMemoryBuffer::vftable;
    local_198 = 0;
    FUN_1805da740(pbVar12,0,uVar15,1);
    pbVar14 = pbVar12;
  }
  FUN_1806f1f20(param_1 + 0x50,pbVar14);
  uStack_84 = 0;
  (**(code **)(**(longlong **)(param_1 + 0x50) + 0x40))
            (*(longlong **)(param_1 + 0x50),local_88,0x40);
  lVar6 = *(longlong *)(param_1 + 0x50);
  FUN_1806f19c0(lVar6,iVar3 + -0x40);
  FUN_1806f3da0(param_1,*(undefined8 *)(lVar6 + 0x18),iVar3 + -0x40);
  FUN_1806f1e10(*(undefined8 *)(param_1 + 0x50),iVar3 + -0x40);
  FUN_1806f1fc0(local_188,0xffffffff);
  local_180 = *(byte **)(*(longlong *)(param_1 + 0x50) + 8);
  pbVar14 = local_180 + uVar15 + -(longlong)local_180;
  if (local_180 + uVar15 < local_180) {
    pbVar14 = pbVar11;
  }
  if (pbVar14 != (byte *)0x0) {
    pbVar12 = local_180;
    do {
      local_188[0] = *(uint *)(&DAT_18265f6c0 + (ulonglong)(byte)(*pbVar12 ^ (byte)local_188[0]) * 4
                              ) ^ local_188[0] >> 8;
      pbVar12 = pbVar12 + 1;
    } while (pbVar12 + -(longlong)local_180 < pbVar14);
  }
  local_168[0] = ~local_188[0];
  if (local_168[0] == uStack_104) {
    if ((*(int *)(param_1 + 0x60) != 0) && (local_e8 != *(int *)(param_1 + 0x60))) {
      local_138 = (char *)FUN_1811316e0(0x18);
      if (local_138 != (char *)0x0) {
        pbVar11 = (byte *)FUN_1805a48c0(local_138,
                                        "The expected thrift data ID = 0x%X; the header data ID = 0x%X"
                                       );
      }
      lVar9 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(pbVar11 + 8),param_1 + 0x60);
      FUN_18060e760(*(undefined8 *)(pbVar11 + 8),&local_e8);
      local_158[0] = 0x209;
      local_138 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp"
      ;
      uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_138);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar10,local_158);
    }
    if (uStack_f0._4_4_ != 0) {
      local_a0 = 0;
      local_98 = 0xf;
      local_b0 = 0;
      do {
        lVar9 = lVar9 + 1;
      } while (local_180[lVar9 + (ulonglong)uStack_f0._4_4_] != 0);
      FUN_1805a6cb0(&local_b0);
      local_180 = (byte *)FUN_1811316e0(8);
      if (local_180 != (byte *)0x0) {
        pbVar11 = (byte *)FUN_180660c00(local_180,&local_b0,0);
      }
      local_150 = pbVar11;
      FUN_1806f1e90(&local_148,pbVar11);
      FUN_1805ae620(&local_150,pbVar11,pbVar11);
      local_c0 = local_150;
      pbVar11 = *(byte **)(param_1 + 0x80);
      *(byte **)(param_1 + 0x80) = local_150;
      plVar4 = *(longlong **)(param_1 + 0x88);
      *(longlong **)(param_1 + 0x88) = local_148;
      local_150 = pbVar11;
      local_148 = plVar4;
      if (plVar4 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar4 + 1;
        lVar9 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar9 == 1) {
          (**(code **)(*plVar4 + 8))(plVar4);
          LOCK();
          piVar2 = (int *)((longlong)plVar4 + 0xc);
          iVar3 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)(*plVar4 + 0x10))(plVar4);
          }
        }
      }
      if (0xf < local_98) {
        pvVar5 = (void *)CONCAT71(uStack_af,local_b0);
        pvVar13 = pvVar5;
        if ((0xfff < local_98 + 1) &&
           (pvVar13 = *(void **)((longlong)pvVar5 + -8),
           0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar13)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar13);
      }
    }
    local_118 = *(undefined8 *)(param_1 + 0x50);
    local_110 = *(longlong *)(param_1 + 0x58);
    if (local_110 != 0) {
      LOCK();
      *(int *)(local_110 + 8) = *(int *)(local_110 + 8) + 1;
      UNLOCK();
    }
    FUN_1806f81b0(param_1,&local_118);
    uVar7 = uStack_e4;
    pvVar13 = (void *)thunk_FUN_1811316e0(uStack_e4);
    local_b8 = pvVar13;
    (**(code **)(**(longlong **)(param_1 + 0x50) + 0x28))
              (*(longlong **)(param_1 + 0x50),pvVar13,uVar7);
                    /* WARNING: Subroutine does not return */
    free(pvVar13);
  }
  local_140 = (char *)FUN_1811316e0(0x18);
  if (local_140 != (char *)0x0) {
    pbVar11 = (byte *)FUN_1805a48c0(local_140,
                                    "Checksum failure. The computed checksum = %ld; the header checksum = %ld"
                                   );
  }
  lVar9 = FUN_1805c0260();
  FUN_18060e760(*(undefined8 *)(pbVar11 + 8),local_168);
  FUN_18060e760(*(undefined8 *)(pbVar11 + 8),&uStack_104);
  local_160[0] = 0x201;
  local_140 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp";
  uVar10 = FUN_1805a21d0(*(undefined8 *)(lVar9 + 8),&local_140);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar10,local_160);
}



############ FUN_ 1806f5330 size=255 ############

void FUN_1806f5330(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *local_res8;
  char *local_res10;
  
  if (*(int *)(param_1 + 0x68) == 0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "The readStructEnd method was called before we found a top level struct. This should never happen and probably indicates a programming error."
                   );
    }
    puVar1 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar1;
    if (puVar1 == (undefined8 *)0x0) {
      puVar1 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
      *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x23d);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp"
    ;
    uVar2 = FUN_1805a21d0(puVar1[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,&local_res8);
  }
  if (*(int *)(param_1 + 0x68) == 1) {
    if (*(longlong *)(param_1 + 0x70) != 0) {
      *(longlong *)(param_1 + 0x70) = *(longlong *)(param_1 + 0x70) + -1;
    }
    if (*(longlong *)(param_1 + 0x70) == 0) {
      FUN_1806f5440(param_1);
      *(undefined4 *)(param_1 + 0x68) = 0;
    }
  }
  .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(param_1);
  return;
}



############ FUN_ 1806fa4e0 size=161 ############

void FUN_1806fa4e0(void)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined4 local_28 [2];
  char *local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  local_20 = (char *)FUN_1811316e0(0x18);
  if (local_20 != (char *)0x0) {
    FUN_1805a48c0(local_20,"This version does not support verified messaging.");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_20 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_28[0] = 0x111;
  local_20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_28);
}



############ FUN_ 1806fa5a0 size=161 ############

void FUN_1806fa5a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res10;
  char *local_res18 [2];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"This version does not support verified messaging.",param_3,param_4,
                  uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x11a);
  local_res18[0] =
       "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\verifiedbinaryprotocol.cpp"
  ;
  uVar2 = FUN_1805a21d0(puVar1[1],local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res10);
}



############ FUN_ 180712220 size=77 ############

undefined8 * FUN_180712220(undefined8 param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x128);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1806d2580(puVar1,param_1);
    *puVar1 = pace::IlokUtilException::vftable;
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 180742260 size=3760 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180743168) overlaps instruction at (ram,0x000180743166)
    */
/* WARNING: Possible PIC construction at 0x000180743581: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x000180743586) */
/* WARNING: Removing unreachable block (ram,0x00018074336a) */
/* WARNING: Removing unreachable block (ram,0x000180742ef1) */
/* WARNING: Removing unreachable block (ram,0x000180742bfa) */
/* WARNING: Removing unreachable block (ram,0x00018074294f) */
/* WARNING: Removing unreachable block (ram,0x000180742ed1) */
/* WARNING: Removing unreachable block (ram,0x000180743229) */
/* WARNING: Removing unreachable block (ram,0x000180743531) */
/* WARNING: Removing unreachable block (ram,0x00018074295e) */

void FUN_180742260(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  undefined *puVar2;
  char cVar3;
  uint uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  char *pcVar7;
  char *pcVar8;
  uint uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong lVar12;
  char *pcVar13;
  uint uVar14;
  int iVar15;
  uint uVar16;
  uint uVar17;
  uint *puVar18;
  longlong lVar19;
  ulonglong uVar20;
  int *piVar21;
  int unaff_retaddr;
  undefined1 auStack_198 [32];
  undefined1 local_178;
  undefined4 local_174;
  undefined4 local_170 [2];
  undefined4 local_168 [4];
  undefined *local_158;
  longlong *plStack_150;
  undefined *local_148;
  undefined8 local_138;
  longlong *plStack_130;
  undefined4 local_128 [2];
  undefined4 local_120;
  undefined4 local_11c;
  int *local_118;
  char *local_110;
  undefined8 local_108;
  undefined1 *puStack_100;
  longlong local_f8;
  _Locimp *p_Stack_f0;
  undefined1 local_e8 [8];
  _Locimp *local_e0;
  undefined8 local_d8;
  longlong local_c8;
  undefined1 *puStack_c0;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined1 *puStack_b0;
  longlong local_a8;
  longlong *plStack_a0;
  undefined4 local_98;
  undefined4 uStack_94;
  longlong *plStack_90;
  undefined1 local_88 [16];
  undefined8 local_78;
  undefined8 local_70;
  undefined1 local_68 [16];
  undefined8 local_58;
  undefined8 local_50;
  ulonglong local_48;
  
  local_d8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_198;
  pcVar13 = (char *)0x0;
  local_120 = 0x6f0;
  local_11c = 0x5c0;
  local_e0 = std::locale::_Init(true);
  puVar5 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    puVar5 = (undefined8 *)*param_1;
  }
  local_f8 = (longlong)puVar5 + param_1[2];
  p_Stack_f0 = (_Locimp *)local_e8;
  puVar5 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    puVar5 = (undefined8 *)*param_1;
  }
  puStack_100 = local_e8;
  local_58 = 0;
  local_50 = 0xf;
  local_68[0] = 0;
  local_108._0_4_ = SUB84(puVar5,0);
  local_108._4_4_ = (undefined4)((ulonglong)puVar5 >> 0x20);
  local_b8 = (undefined4)local_108;
  uStack_b4 = local_108._4_4_;
  local_108 = (char *)puVar5;
  local_c8 = local_f8;
  puStack_c0 = p_Stack_f0;
  puStack_b0 = puStack_100;
  FUN_18060d160(local_68,&local_b8,&local_c8,local_178);
  if (local_e0 != (_Locimp *)0x0) {
    puVar5 = (undefined8 *)(**(code **)(*(longlong *)local_e0 + 0x10))();
    if (puVar5 != (undefined8 *)0x0) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  local_170[0] = 0;
  local_118 = &DAT_180bd0bc8;
  local_148 = &DAT_180bd0cc8;
  local_138 = (undefined8 *)0xf7e56a20;
  local_158 = (undefined *)0x85b7d3c9;
  uVar6 = FUN_18074a680();
  cVar3 = FUN_18060e8d0(uVar6,local_68,local_170);
  if (cVar3 == '\0') {
    local_110 = (char *)FUN_1811316e0(0x18);
    pcVar7 = pcVar13;
    if (local_110 != (char *)0x0) {
      pcVar7 = (char *)FUN_1805a48c0(local_110,"PkStandard name string passed = \"%s\"");
    }
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_110 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar13 = pcVar8;
    }
    FUN_1805b2240(*(undefined8 *)(pcVar7 + 8),param_1);
    local_128[0] = 0x53c;
    local_110 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar6 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),&local_110);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_128);
  }
  p_Stack_f0 = std::locale::_Init(true);
  puVar5 = param_2;
  if (0xf < (ulonglong)param_2[3]) {
    puVar5 = (undefined8 *)*param_2;
  }
  local_158 = (undefined *)((longlong)puVar5 + param_2[2]);
  plStack_150 = &local_f8;
  puVar5 = param_2;
  if (0xf < (ulonglong)param_2[3]) {
    puVar5 = (undefined8 *)*param_2;
  }
  plStack_130 = &local_f8;
  local_78 = 0;
  local_70 = 0xf;
  local_88[0] = 0;
  local_138._0_4_ = SUB84(puVar5,0);
  local_138._4_4_ = (undefined4)((ulonglong)puVar5 >> 0x20);
  local_98 = (undefined4)local_138;
  uStack_94 = local_138._4_4_;
  local_138 = puVar5;
  local_a8 = (longlong)local_158;
  plStack_a0 = plStack_150;
  plStack_90 = plStack_130;
  FUN_18060d160(local_88,&local_98,&local_a8,local_178);
  if (p_Stack_f0 != (_Locimp *)0x0) {
    puVar5 = (undefined8 *)(**(code **)(*(longlong *)p_Stack_f0 + 0x10))();
    if (puVar5 != (undefined8 *)0x0) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  local_174 = 0;
  uVar6 = FUN_180747230();
  cVar3 = FUN_18060e8d0(uVar6,local_88,&local_174);
  if (cVar3 == '\0') {
    local_108 = (char *)FUN_1811316e0(0x18);
    pcVar7 = pcVar13;
    if (local_108 != (char *)0x0) {
      pcVar7 = (char *)FUN_1805a48c0(local_108,"Algorithm name string passed = \"%s\"");
    }
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_108 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar13 = pcVar8;
    }
    FUN_1805b2240(*(undefined8 *)(pcVar7 + 8),param_2);
    local_168[0] = 0x544;
    local_108 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar6 = FUN_1805a21d0(*(undefined8 *)(pcVar13 + 8),&local_108);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar6,local_168);
  }
  local_158 = local_148;
  uVar9 = (*local_118 * 0x16a88000 | (uint)(*local_118 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0xb94efa1b;
  uVar9 = (local_118[1] * 0x16a88000 | (uint)(local_118[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (local_118[2] * 0x16a88000 | (uint)(local_118[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (local_118[3] * 0x16a88000 | (uint)(local_118[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (local_118[4] * 0x16a88000 | (uint)(local_118[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  iVar15 = local_118[5];
  uVar9 = (iVar15 * 0x16a88000 | (uint)(iVar15 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar14 = uVar9 & 0x1cff;
  uVar4 = (uint)local_148 & 0x16ff;
  uVar4 = ((uVar4 - 1) * uVar4 & 1) + (uVar14 * uVar14 * 0x10 + 4) % 0x13;
  piVar21 = (int *)((longlong)(local_118 + 5) +
                   (0x44 - ((longlong)(((int)(-uVar4 | uVar4) >> 0x1f) * -0xfb89) ^ 0xfbc9U)));
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar9;
  uVar9 = (piVar21[1] * 0x16a88000 | (uint)(piVar21[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  piVar21 = piVar21 + 2;
  uVar4 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uint)piVar21 & 0x32ff;
  iVar15 = uVar9 * uVar9 + 1;
  uVar9 = (iVar15 >> 4) + (iVar15 >> 1) + iVar15 * 0x24924924 >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  piVar21 = (int *)((longlong)piVar21 +
                   (0x204 - ((longlong)(((int)(-uVar9 | uVar9) >> 0x1f) * -0x81df) ^ 0x83dfU)));
  do {
    FUN_1807442a5();
    FUN_1807460f1();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  iVar15 = *piVar21;
  uVar9 = (iVar15 * 0x16a88000 | (uint)(iVar15 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  piVar21 = piVar21 + 1;
  local_148 = (undefined *)0x86192962ed30abcd;
  local_168[0] = 0xed30abcd;
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar17 = (uint)local_158;
  uVar4 = uVar17 & 0x2ff;
  uVar14 = (uint)piVar21 & 0x1f | 0x19;
  uVar16 = (uint)piVar21 & 7 | 0x35;
  iVar15 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  uVar4 = (uVar9 & 0x3ff) * (uVar9 & 0x3ff) * 0x10 + 4;
  piVar21 = (int *)((longlong)piVar21 +
                   ((((longlong)(ulonglong)(uVar14 * uVar14 * 0xcfc5 == uVar16 * uVar16 * 0x8bfd) >>
                      ((byte)uVar9 & 0x1f) | 0xaa4fU) ^ 0xaaeb) -
                   ((longlong)
                    (0xa9e6 - (iVar15 + (iVar15 / 3 + (iVar15 >> 0x1f) +
                                        (int)(((longlong)iVar15 / 3 + ((longlong)iVar15 >> 0x3f) &
                                              0xffffffffU) >> 0x1f)) * -3 <<
                              ((char)uVar4 + (char)(uVar4 / 0x13) * -0x13 & 0x1fU))) ^ 0xa946U)));
  iVar15 = *piVar21;
  uVar9 = (iVar15 * 0x16a88000 | (uint)(iVar15 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar9;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  iVar15 = (uVar9 & 0x5aff) * (uVar9 & 0x5aff) + 1;
  uVar4 = iVar15 * 0x24924924 + (iVar15 >> 4) + (iVar15 >> 1) >> 0x1d;
  if (((int)(uVar4 - 7) >> 0x1f & uVar4 & 0xa80) == 0) {
    uVar4 = uVar17 & 0x65ff;
  }
  else {
    uVar4 = uVar9 & 0x29ff;
  }
  uVar14 = (uVar4 * uVar4 + 1) % 7;
  uVar16 = ((uVar17 & 0x42ff) * (uVar17 & 0x42ff) + 1) % 7;
  uVar4 = ((uVar17 & 0x1dff) + 1) * (uVar17 & 0x1dff) + 0x14e1 & 0x80000001;
  piVar21 = (int *)((longlong)piVar21 +
                   (((longlong)
                     ((((int)(-uVar16 | uVar16) >> 0x1f) - ((int)(-uVar4 | uVar4) >> 0x1f)) + 0xdc43
                     ) ^ 0xdc77U) -
                   ((longlong)(((int)(-uVar14 | uVar14) >> 0x1f) * -0x8f3) ^ 0x8c3U)));
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar9;
  uVar4 = uVar9 << 0xd | uVar9 >> 0x13;
  uVar9 = uVar4 * 4 + 0xe6546b64;
  uVar4 = uVar4 + uVar9;
  puVar18 = (uint *)register0x00000020;
  do {
    puVar18 = (uint *)(((ulonglong)uVar9 + (longlong)puVar18) -
                      (((longlong)puVar18 - ((ulonglong)uVar9 + (longlong)puVar18) ^
                       0xffffffffffffffff) + 1));
    uVar9 = *puVar18;
    uVar14 = (uVar9 + 1) * uVar9 & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar4 = (piVar21[1] * 0x16a88000 | (uint)(piVar21[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar4;
  uVar9 = (piVar21[2] * 0x16a88000 | (uint)(piVar21[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[3] * 0x16a88000 | (uint)(piVar21[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[4] * 0x16a88000 | (uint)(piVar21[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  piVar21 = piVar21 + 5;
  uVar14 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = ((uVar17 & 0x1cff) - 1) * (uVar17 & 0x1cff) - 1 & 1;
  uVar9 = (uint)piVar21 & 0xaff;
  uVar9 = (uVar9 * uVar9 + 1) % 7;
  uVar9 = (int)((-uVar9 | uVar9) & (-uVar4 | uVar4)) >> 0x1f;
  piVar21 = (int *)((((longlong)(((int)(-uVar9 | uVar9) >> 0x1f) * -0xe369) ^ 0xe669U) - 0x4fc) +
                   (longlong)piVar21);
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar14 << 0xd | uVar14 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[1] * 0x16a88000 | (uint)(piVar21[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[2] * 0x16a88000 | (uint)(piVar21[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[3] * 0x16a88000 | (uint)(piVar21[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[4] * 0x16a88000 | (uint)(piVar21[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[5] * 0x16a88000 | (uint)(piVar21[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  piVar21 = piVar21 + 6;
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar14 = (uint)piVar21 & 0x6f;
  uVar4 = uVar9 & 0x6aff;
  uVar4 = ((uVar4 + 1) * uVar4 & 0x80000001) -
          ((uVar17 & 0x18ff) * (uVar17 & 0x18ff) * 0x10 + 4) % 0x13;
  piVar21 = (int *)((longlong)piVar21 +
                   (((ulonglong)((int)(-uVar4 | uVar4) >> 0x1f & 0x2661) ^ 0x2365) -
                   ((longlong)
                    (0xfa0c - ((int)((uVar14 + 1) * (uVar14 + 1) * uVar14 * uVar14 & 3) >>
                              (((char)local_158 + '\x01') * (char)local_158 & 1U))) ^ 0xff0cU)));
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar9;
  uVar9 = (piVar21[1] * 0x16a88000 | (uint)(piVar21[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[2] * 0x16a88000 | (uint)(piVar21[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[3] * 0x16a88000 | (uint)(piVar21[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[4] * 0x16a88000 | (uint)(piVar21[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[5] * 0x16a88000 | (uint)(piVar21[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[6] * 0x16a88000 | (uint)(piVar21[6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[7] * 0x16a88000 | (uint)(piVar21[7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[8] * 0x16a88000 | (uint)(piVar21[8] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[9] * 0x16a88000 | (uint)(piVar21[9] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[10] * 0x16a88000 | (uint)(piVar21[10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0xb] * 0x16a88000 | (uint)(piVar21[0xb] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0xc] * 0x16a88000 | (uint)(piVar21[0xc] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0xd] * 0x16a88000 | (uint)(piVar21[0xd] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar11 = (ulonglong)uVar9;
  uVar9 = (piVar21[0xe] * 0x16a88000 | (uint)(piVar21[0xe] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          uVar9;
  uVar9 = (piVar21[0xf] * 0x16a88000 | (uint)(piVar21[0xf] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_180742627();
    FUN_18073f0d7();
    puVar2 = local_158;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar9 = (piVar21[0x10] * 0x16a88000 | (uint)(piVar21[0x10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0x11] * 0x16a88000 | (uint)(piVar21[0x11] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar10 = 0xda18;
    FUN_180743c24();
    if ((uVar10 & 0xc700) == 0) {
      DAT_e6546b64 = in((short)uVar11 + -0x376c);
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar9 = (piVar21[0x12] * 0x16a88000 | (uint)(piVar21[0x12] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0x13] * 0x16a88000 | (uint)(piVar21[0x13] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0x14] * 0x16a88000 | (uint)(piVar21[0x14] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  piVar21 = piVar21 + 0x15;
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  if (((ulonglong)puVar2 & 0x150) == 0) {
    uVar4 = uVar9 & 0x2ff;
    iVar15 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
    uVar4 = ((iVar15 >> 1) - (iVar15 >> 3)) + iVar15 * 0x55555555 >> 0x1e;
  }
  else {
    uVar4 = (uint)puVar2 & 0xf;
    uVar4 = (uVar4 + 1) * (uVar4 + 1) * uVar4 * uVar4 & 0x80000003;
  }
  uVar10 = (ulonglong)uVar4;
  uVar14 = (uint)piVar21 & 0x3fff;
  uVar14 = ((uVar14 + 1) * uVar14 + 7) % 0x51;
  uVar11 = (ulonglong)uVar14;
  bVar1 = (byte)uVar9 & 0xf;
  uVar14 = ((int)(-uVar14 | uVar14) >> 0x1f) >> (bVar1 * (bVar1 + 1) * (bVar1 + 1) * bVar1 & 2);
  piVar21 = (int *)((longlong)piVar21 +
                   ((longlong)(((int)(-uVar14 | uVar14) >> 0x1f) * -0x51bf) ^ 0x519fU) +
                   (((longlong)(int)uVar4 | 0x2bcdU) ^ 0xffffffffffffd429));
  uVar9 = (*piVar21 * 0x16a88000 | (uint)(*piVar21 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar9;
  uVar9 = (piVar21[1] * 0x16a88000 | (uint)(piVar21[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[2] * 0x16a88000 | (uint)(piVar21[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[3] * 0x16a88000 | (uint)(piVar21[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar9 = (piVar21[4] * 0x16a88000 | (uint)(piVar21[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[5] * 0x16a88000 | (uint)(piVar21[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[6] * 0x16a88000 | (uint)(piVar21[6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[7] * 0x16a88000 | (uint)(piVar21[7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[8] * 0x16a88000 | (uint)(piVar21[8] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[9] * 0x16a88000 | (uint)(piVar21[9] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[10] * 0x16a88000 | (uint)(piVar21[10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0xb] * 0x16a88000 | (uint)(piVar21[0xb] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0xc] * 0x16a88000 | (uint)(piVar21[0xc] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    func_0x000180743e54();
    FUN_18074d4ec();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar9 = (piVar21[0xd] * 0x16a88000 | (uint)(piVar21[0xd] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (piVar21[0xe] * 0x16a88000 | (uint)(piVar21[0xe] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar20 = (ulonglong)((uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64);
  do {
    lVar12 = uVar20 + ~(ulonglong)register0x00000020 + 1;
    lVar19 = (~(ulonglong)register0x00000020 + 1) - lVar12;
    uVar20 = -lVar19;
    register0x00000020 = (BADSPACEBASE *)(~(lVar12 + lVar19) + 1);
    uVar9 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
                    /* WARNING: Could not recover jumptable at 0x0001807436f6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)&UNK_18073b8ef)(0,uVar20,uVar11,uVar10);
  return;
}



############ FUN_ 180748370 size=690 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001807483d4) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180748370(void)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined1 auStack_2d8 [48];
  longlong local_2a8;
  undefined8 local_2a0;
  undefined8 local_288;
  longlong local_280;
  undefined4 local_278;
  undefined4 local_274;
  undefined8 local_260;
  undefined8 local_178;
  ulonglong local_38;
  
  local_178 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_2d8;
  local_278 = 0xd70;
  local_274 = 0xd80;
  lVar3 = 0;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_182666b08) && (_Init_thread_header(&DAT_182666b08), DAT_182666b08 == -1)) {
    lVar1 = FUN_1811316e0(0x88);
    local_2a8 = lVar1;
    if (lVar1 != 0) {
      lVar3 = lVar1 + 0x39;
      *(longlong *)(lVar1 + 8) = lVar3;
      local_280 = lVar1 + 0x28;
      uVar2 = FUN_1811316e0(0x58);
      *(undefined8 *)(lVar1 + 0x30) = uVar2;
      FUN_180619400(lVar1 + 0x39);
      FUN_1806194a0(lVar1 + 0x39);
      *(undefined8 *)(lVar1 + 0x40) = 0;
      *(longlong *)(lVar1 + 0x50) = lVar3;
      *(longlong *)(lVar1 + 0x70) = lVar3;
      lVar3 = lVar1;
    }
    _DAT_182666b00 = lVar3;
    _Init_thread_footer(&DAT_182666b08);
  }
  local_2a8 = 0;
  local_288 = 0x134911c;
  local_2a0 = 0x3effc;
  local_260 = 0x18134911c;
  local_280 = 0x181388118;
  FUN_180748594();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18074c5a0 size=936 ############

/* WARNING: Instruction at (ram,0x00018074c80a) overlaps instruction at (ram,0x00018074c807)
    */
/* WARNING: Removing unreachable block (ram,0x00018074c6f6) */
/* WARNING: Removing unreachable block (ram,0x00018074c70a) */
/* WARNING: Removing unreachable block (ram,0x00018074c80a) */
/* WARNING: Removing unreachable block (ram,0x00018074c80d) */
/* WARNING: Removing unreachable block (ram,0x00018074c8b0) */

char FUN_18074c5a0(void)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  undefined1 auStack_368 [64];
  longlong local_328;
  longlong local_320;
  undefined4 local_304;
  uint local_300;
  undefined8 local_218;
  ulonglong local_30;
  
  local_218 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_368;
  local_304 = 0x6d0;
  uVar4 = (uint)&stack0x00000000 & 0x5cff;
  iVar5 = uVar4 * uVar4 + 1;
  uVar6 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
  uVar4 = (uint)&stack0x00000000 & 0x7aff;
  uVar4 = (uVar4 * uVar4 + 1) % 7;
  uVar4 = (int)((-uVar4 | uVar4) & (-uVar6 | uVar6)) >> 0x1f;
  local_300 = (((int)(-uVar4 | uVar4) >> 0x1f) * -0x4e0c | 0xce0cU) ^ 0xcaec;
  lVar7 = 0;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_182666b18) && (_Init_thread_header(&DAT_182666b18), DAT_182666b18 == -1)) {
    lVar2 = FUN_1811316e0(0x88);
    local_320 = lVar2;
    if (lVar2 != 0) {
      lVar7 = lVar2 + 0x39;
      *(longlong *)(lVar2 + 8) = lVar7;
      local_328 = lVar2 + 0x28;
      uVar3 = FUN_1811316e0(0x58);
      *(undefined8 *)(lVar2 + 0x30) = uVar3;
      FUN_180619400(lVar2 + 0x39);
      FUN_1806194a0(lVar2 + 0x39);
      *(undefined8 *)(lVar2 + 0x40) = 0;
      *(longlong *)(lVar2 + 0x50) = lVar7;
      *(longlong *)(lVar2 + 0x70) = lVar7;
      lVar7 = lVar2;
    }
    DAT_182666b10 = lVar7;
    _Init_thread_footer(&DAT_182666b18);
  }
  func_0x00018074a8bf();
                    /* WARNING: Call to offcut address within same function */
  cVar1 = func_0x00018074c79d();
  return cVar1 + -0x4c;
}



############ FUN_ 1807196d0 size=748 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807196d0(longlong param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4,
                  undefined8 param_5)

{
  void *pvVar1;
  char cVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  tm *ptVar6;
  longlong lVar7;
  void *pvVar8;
  undefined8 *puVar9;
  undefined1 auStack_d8 [32];
  undefined8 *local_b8;
  undefined4 local_a8 [2];
  char *local_a0;
  char *local_98;
  undefined8 *local_90;
  undefined8 *local_88;
  undefined8 local_80;
  void *local_78 [3];
  ulonglong local_60;
  ulonglong local_58;
  
  local_80 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_d8;
  pvVar8 = (void *)*param_3;
  pvVar1 = (void *)param_3[1];
  local_90 = (undefined8 *)param_2;
  local_88 = param_3;
  if ((pvVar8 != pvVar1) && (pvVar8 != pvVar1)) {
    memmove(pvVar8,pvVar1,0);
    param_3[1] = pvVar8;
  }
  pvVar8 = (void *)*param_4;
  pvVar1 = (void *)param_4[1];
  if ((pvVar8 != pvVar1) && (pvVar8 != pvVar1)) {
    memmove(pvVar8,pvVar1,0);
    param_4[1] = pvVar8;
  }
  FUN_180719a10(param_1,param_5,
                "Can\'t sign because the certificate doesn\'t have the permissions to sign.");
  if (*(char *)(param_1 + 0xafc) != '\0') {
    local_90 = (undefined8 *)FUN_1811316e0(0x18);
    puVar9 = (undefined8 *)0x0;
    if (local_90 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_90,"The ILok2Signer is not supported in non-Sarducci libraries");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_90 = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      puVar9 = puVar3;
    }
    local_a8[0] = 300;
    local_98 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\certifier.cpp";
    uVar4 = FUN_1805a21d0(puVar9[1],&local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_a8);
  }
  lVar5 = 0;
  if (*(longlong *)(param_1 + 0xaa8) == *(longlong *)(param_1 + 0xaa0)) {
    local_a0 = (char *)FUN_1811316e0(0x18);
    if (local_a0 != (char *)0x0) {
      FUN_1805a48c0(local_a0,
                    "You need to construct this object with a private key in order to sign.");
    }
    lVar5 = FUN_1805c0260();
    local_a8[0] = 0x133;
    local_a0 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\certifier.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_a8);
  }
  _time64((__time64_t *)&local_a0);
  ptVar6 = _gmtime64((__time64_t *)&local_a0);
  if (ptVar6 == (tm *)0x0) {
    uVar4 = FUN_1805b6c80(local_78,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
    FUN_1805b3e60(uVar4);
  }
  FUN_1805bd670(&local_98,ptVar6);
  cVar2 = (**(code **)(*(longlong *)(param_1 + 0x8c8) + 0x18))
                    ((longlong *)(param_1 + 0x8c8),&local_98,0);
  if (cVar2 != '\0') {
    local_b8 = param_4;
    (**(code **)(*(longlong *)(param_1 + 8) + 0x40))
              ((longlong *)(param_1 + 8),param_1 + 0xaa0,local_90,local_88);
  }
  local_a0 = (char *)FUN_1811316e0(0x18);
  if (local_a0 != (char *)0x0) {
    lVar5 = FUN_1805a48c0(local_a0,"The signing certificate is not valid for the current date: %s.")
    ;
  }
  lVar7 = FUN_1805c0260();
  FUN_180621860(local_78,local_98);
  FUN_1805b2240(*(undefined8 *)(lVar5 + 8),local_78);
  if (local_60 < 0x10) {
    local_a8[0] = 0x13a;
    local_a0 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\certifier.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar7 + 8),&local_a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_a8);
  }
  pvVar8 = local_78[0];
  if ((0xfff < local_60 + 1) &&
     (pvVar8 = *(void **)((longlong)local_78[0] + -8),
     0x1f < (ulonglong)((longlong)local_78[0] + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar8);
}



############ FUN_ 180726340 size=97 ############

undefined8 * FUN_180726340(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<boost::asio::windows::basic_stream_handle<boost::asio::windows::stream_handle_service>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1807263e0 size=183 ############

undefined8 *
FUN_1807263e0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  int local_20 [2];
  undefined8 local_18;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x60);
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = param_1;
    puVar2[4] = 0;
    *puVar2 = boost::asio::windows::stream_handle_service::vftable;
    puVar2[5] = *(undefined8 *)(param_1 + 0x10);
    iVar1 = FUN_180726860(puVar2 + 6);
    local_18 = FUN_1805c8c70();
    if (iVar1 != 0) {
      local_20[0] = iVar1;
                    /* WARNING: Subroutine does not return */
      FUN_1805bd9a0(local_20,"mutex",param_3,param_4,uVar3);
    }
    puVar2[0xb] = 0;
  }
  return puVar2;
}



############ FUN_ 180726c90 size=97 ############

undefined8 * FUN_180726c90(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<boost::asio::io_service>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180726d00 size=389 ############

longlong FUN_180726d00(longlong param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4)

{
  int iVar1;
  DWORD DVar2;
  undefined8 *puVar3;
  HANDLE pvVar4;
  undefined8 *puVar5;
  undefined8 *local_40;
  undefined8 local_38;
  DWORD local_30 [2];
  undefined8 uStack_28;
  
  iVar1 = FUN_180726860();
  local_38 = FUN_1805c8c70();
  local_40 = (undefined8 *)CONCAT44(local_40._4_4_,iVar1);
  if (iVar1 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_1805bd9a0(&local_40,"mutex");
  }
  *(undefined8 *)(param_1 + 0x28) = param_2;
  puVar3 = (undefined8 *)FUN_1811316e0(0x98);
  puVar5 = (undefined8 *)0x0;
  if (puVar3 != (undefined8 *)0x0) {
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = param_2;
    puVar3[4] = 0;
    *puVar3 = boost::asio::detail::win_iocp_io_service::vftable;
    puVar3[5] = 0;
    puVar3[6] = 0;
    *(undefined4 *)(puVar3 + 7) = 0;
    puVar3[8] = 0;
    puVar3[9] = 0;
    *(undefined4 *)(puVar3 + 10) = 0;
    local_40 = puVar3;
    DVar2 = FUN_180726860(puVar3 + 0xb);
    uStack_28 = FUN_1805c8c70();
    local_30[0] = DVar2;
    if (DVar2 != 0) {
                    /* WARNING: Subroutine does not return */
      FUN_1805bd9a0(local_30,"mutex");
    }
    puVar3[0x10] = 0;
    puVar3[0x11] = 0;
    puVar3[0x12] = 0;
    DVar2 = (DWORD)param_4;
    if (0xffffffff < param_4) {
      DVar2 = 0xffffffff;
    }
    pvVar4 = CreateIoCompletionPort((HANDLE)0xffffffffffffffff,(HANDLE)0x0,0,DVar2);
    puVar3[5] = pvVar4;
    puVar5 = puVar3;
    if (pvVar4 == (HANDLE)0x0) {
      DVar2 = GetLastError();
      uStack_28 = FUN_1805c8c70();
      local_30[0] = DVar2;
      if (DVar2 != 0) {
                    /* WARNING: Subroutine does not return */
        FUN_1805bd9a0(local_30,&DAT_181bd2ca8);
      }
    }
  }
  *(undefined8 **)(param_1 + 0x30) = puVar5;
  puVar5[1] = &boost::asio::detail::typeid_wrapper<boost::asio::detail::win_iocp_io_service>::
               RTTI_Type_Descriptor;
  puVar5[2] = 0;
  *(undefined8 *)(*(longlong *)(param_1 + 0x30) + 0x20) = 0;
  return param_1;
}



############ FUN_ 18072ae40 size=393 ############

void FUN_18072ae40(longlong param_1,void *param_2,ulonglong param_3)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  char *pcVar4;
  undefined8 uVar5;
  uint uVar6;
  char *local_res8;
  ulonglong local_res18;
  ulonglong uVar7;
  
  local_res18 = param_3;
  if (0xffffffff < param_3) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8,"Number of bytes passed = %zu");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar4;
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0xaf);
    local_res8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\sha1utils.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res18);
  }
  uVar1 = (uint)param_3;
  uVar6 = *(uint *)(param_1 + 0x14) >> 3 & 0x3f;
  uVar7 = (ulonglong)uVar6;
  uVar2 = *(uint *)(param_1 + 0x14) + uVar1 * 8;
  *(uint *)(param_1 + 0x14) = uVar2;
  if (uVar2 < uVar1 * 8) {
    *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + ((uint)(param_3 >> 0x1d) & 7);
  if (uVar6 + uVar1 < 0x40) {
    uVar2 = 0;
  }
  else {
    uVar2 = -uVar6 + 0x40;
    memcpy((void *)(param_1 + 0x1c + (ulonglong)uVar6),param_2,(ulonglong)uVar2);
    FUN_1807275a0(param_1,param_1 + 0x1c);
    for (uVar6 = -uVar6 + 0x7f; uVar6 < uVar1; uVar6 = uVar6 + 0x40) {
      FUN_1807275a0(param_1,(ulonglong)uVar2 + (longlong)param_2);
      uVar2 = uVar2 + 0x40;
    }
    uVar7 = 0;
  }
  memcpy((void *)(param_1 + 0x1c + uVar7),(void *)((ulonglong)uVar2 + (longlong)param_2),
         (ulonglong)(uVar1 - uVar2));
  return;
}



############ FUN_ 18073af60 size=216 ############

void FUN_18073af60(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  ulonglong uVar4;
  uint uVar5;
  int local_res10 [4];
  char *local_res20;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  FUN_18070abe0(param_3);
  lVar2 = param_2[1];
  lVar3 = *param_2;
  uVar5 = (uint)(lVar2 - lVar3);
  if (uVar5 != 0) {
    uVar1 = (**(code **)(*param_1 + 0x28))(param_1);
    uVar4 = (ulonglong)uVar1;
    if (uVar5 <= uVar1) {
      uVar4 = lVar2 - lVar3 & 0xffffffff;
    }
    local_res10[0] = FUN_180707db0(uVar4,*param_2,param_3,param_4,uVar6);
    if (local_res10[0] != 0) {
      local_res20 = (char *)FUN_1811316e0(0x18);
      if (local_res20 == (char *)0x0) {
        lVar2 = 0;
      }
      else {
        lVar2 = FUN_1805a48c0(local_res20,"[%d] BIG_BytesToBigNumber error converting hash");
      }
      lVar3 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),local_res10);
      local_res10[0] = 0x109;
      local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp"
      ;
      uVar6 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar6,local_res10);
    }
  }
  return;
}



############ FUN_ 18073c2a0 size=226 ############

void FUN_18073c2a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  int local_res18 [2];
  char *local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_18070abe0(param_2);
  local_res18[0] = FUN_180708b20(param_1,param_2,0,param_4,uVar3);
  if (local_res18[0] != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,"[%d] ConvertBigNumber_CompactToStandard error");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res18);
    local_res18[0] = 0x38f;
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  return;
}



############ FUN_ 18073d1f0 size=203 ############

void FUN_18073d1f0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  int local_res18 [2];
  char *local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res18[0] = FUN_180709b40();
  if (local_res18[0] != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,"[%d] ConvertBigNumber_StandardToCompact error",param_3,
                            param_4,uVar3);
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar3);
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res18);
    local_res18[0] = 0x3e0;
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  return;
}



############ FUN_ 18073d2d0 size=1557 ############

void FUN_18073d2d0(longlong param_1,char param_2,longlong *param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  char *pcVar6;
  longlong lVar7;
  uint uVar8;
  ulonglong uVar9;
  char local_res8 [8];
  undefined4 local_res10 [2];
  undefined8 local_res18;
  char *local_78;
  undefined8 local_70;
  longlong local_68;
  undefined8 *local_60;
  longlong local_58;
  undefined8 *local_50;
  longlong local_48;
  undefined8 *local_40;
  
  local_res10[0] = CONCAT31(local_res10[0]._1_3_,param_2);
  local_70 = 0xfffffffffffffffe;
  uVar9 = param_3[1] - *param_3;
  uVar1 = FUN_1809947a0(*(undefined4 *)(param_1 + 0x10));
  if ((param_2 != '\0') && (uVar8 = (uint)uVar9, uVar9 = uVar9 & 0xffffffff, uVar1 < uVar8)) {
    uVar9 = (ulonglong)uVar1;
  }
  FUN_18070abe0(param_4);
  if ((int)uVar9 == 0) {
    local_res18 = (char *)FUN_1811316e0(0x18);
    if (local_res18 != (char *)0x0) {
      FUN_1805a48c0(local_res18,"No private key provided (empty vector)");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_res18 = (char *)puVar3;
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0x409);
    local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar4 = FUN_1805a21d0(puVar3[1],&local_78);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  local_res18._0_4_ = FUN_180707db0(uVar9 & 0xffffffff,*param_3,param_4);
  if ((int)local_res18 != 0) {
    local_78 = (char *)FUN_1811316e0(0x18);
    if (local_78 == (char *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = FUN_1805a48c0(local_78,"[%d] BIG_BytesToBigNumber error");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_78 = pcVar6;
    if (pcVar6 == (char *)0x0) {
      pcVar6 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res18);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0x412);
    local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  local_res18._0_4_ = FUN_180707e90(param_4,param_1 + 0xc0,local_res8);
  if ((int)local_res18 != 0) {
    local_78 = (char *)FUN_1811316e0(0x18);
    if (local_78 == (char *)0x0) {
      lVar5 = 0;
    }
    else {
      lVar5 = FUN_1805a48c0(local_78,"[%d] BIG_CompareBig error");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_78 = pcVar6;
    if (pcVar6 == (char *)0x0) {
      pcVar6 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res18);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0x41b);
    local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  if (-1 < local_res8[0]) {
    if ((char)local_res10[0] == '\0') {
      local_res18 = (char *)FUN_1811316e0(0x18);
      if (local_res18 == (char *)0x0) {
        lVar5 = 0;
      }
      else {
        lVar5 = FUN_1805a48c0(local_res18,
                              "The given private key value (in bytes) is too big for the current PKStandard (%d)"
                             );
      }
      lVar7 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar5 + 8),param_1 + 0x10);
      local_res18 = (char *)CONCAT44(local_res18._4_4_,0x426);
      local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
      uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar7 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,&local_res18);
    }
    while (-1 < local_res8[0]) {
      local_res18._0_4_ = 0;
      iVar2 = (int)uVar9;
      uVar1 = iVar2 - 1;
      uVar9 = (ulonglong)uVar1;
      if (uVar1 == 0) {
        local_68 = FUN_1811316e0(iVar2 + 0x17);
        if (local_68 != 0) {
          FUN_1805a48c0(local_68,"Ran out of bytes trying to trim a private key");
        }
        puVar3 = (undefined8 *)FUN_1811316e0(0x18);
        local_60 = puVar3;
        if (puVar3 == (undefined8 *)0x0) {
          puVar3 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
          *puVar3 = pace::PaceLocationInfoFormatter::vftable;
        }
        local_res18 = (char *)CONCAT44(local_res18._4_4_,0x433);
        local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
        uVar4 = FUN_1805a21d0(puVar3[1],&local_78);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar4,&local_res18);
      }
      local_res18._0_4_ = FUN_180707db0(uVar1,*param_3,param_4);
      if ((int)local_res18 != 0) {
        local_58 = FUN_1811316e0(0x18);
        if (local_58 == 0) {
          lVar5 = 0;
        }
        else {
          lVar5 = FUN_1805a48c0(local_58,"[%d] BIG_BytesToBigNumber error");
        }
        puVar3 = (undefined8 *)FUN_1811316e0(0x18);
        local_50 = puVar3;
        if (puVar3 == (undefined8 *)0x0) {
          puVar3 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
          *puVar3 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res18);
        local_res18 = (char *)CONCAT44(local_res18._4_4_,0x43b);
        local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
        uVar4 = FUN_1805a21d0(puVar3[1],&local_78);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar4,&local_res18);
      }
      local_res18._0_4_ = FUN_180707e90(param_4,param_1 + 0xc0,local_res8);
      if ((int)local_res18 != 0) {
        local_48 = FUN_1811316e0(0x18);
        if (local_48 == 0) {
          lVar5 = 0;
        }
        else {
          lVar5 = FUN_1805a48c0(local_48,"[%d] BIG_CompareBig error");
        }
        puVar3 = (undefined8 *)FUN_1811316e0(0x18);
        local_40 = puVar3;
        if (puVar3 == (undefined8 *)0x0) {
          puVar3 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
          *puVar3 = pace::PaceLocationInfoFormatter::vftable;
        }
        FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res18);
        local_res18 = (char *)CONCAT44(local_res18._4_4_,0x444);
        local_78 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
        uVar4 = FUN_1805a21d0(puVar3[1],&local_78);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar4,&local_res18);
      }
    }
  }
  local_res18._0_4_ = 0;
  uVar1 = FUN_18070aca0(param_4);
  if (uVar1 < 2) {
    if ((char)local_res10[0] == '\0') {
      local_res18 = (char *)FUN_1811316e0(0x18);
      if (local_res18 != (char *)0x0) {
        FUN_1805a48c0(local_res18,"The given private key value is a weak key and cannot be used");
      }
      puVar3 = (undefined8 *)FUN_1811316e0(0x18);
      if (puVar3 == (undefined8 *)0x0) {
        puVar3 = (undefined8 *)0x0;
      }
      else {
        local_res18 = (char *)puVar3;
        FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
        *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      }
      local_res10[0] = 0x450;
      local_res18 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp"
      ;
      uVar4 = FUN_1805a21d0(puVar3[1],&local_res18);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,local_res10);
    }
    iVar2 = FUN_18070ac50(uVar1 + 0x82937482,param_4);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,iVar2);
    if (iVar2 != 0) {
      local_40 = (undefined8 *)FUN_1811316e0(0x18);
      if (local_40 == (undefined8 *)0x0) {
        lVar5 = 0;
      }
      else {
        lVar5 = FUN_1805a48c0(local_40,"[%d] BIG_SetBigFromDword error");
      }
      puVar3 = (undefined8 *)FUN_1811316e0(0x18);
      local_40 = puVar3;
      if (puVar3 == (undefined8 *)0x0) {
        puVar3 = (undefined8 *)0x0;
      }
      else {
        FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
        *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      }
      FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res18);
      local_res10[0] = 0x458;
      local_res18 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp"
      ;
      uVar4 = FUN_1805a21d0(puVar3[1],&local_res18);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,local_res10);
    }
  }
  return;
}



############ FUN_ 18073e880 size=223 ############

void FUN_18073e880(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  int local_res18 [2];
  char *local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_18070ac10(param_2);
  local_res18[0] = FUN_180708bf0(param_1,param_2,param_3,param_4,uVar3);
  if (local_res18[0] != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,"[%d] ConvertBigPublicKey_CompactToStandard error");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res18);
    local_res18[0] = 0x498;
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  return;
}



############ FUN_ 18073f650 size=203 ############

void FUN_18073f650(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  int local_res18 [2];
  char *local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res18[0] = FUN_180709c10();
  if (local_res18[0] != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,"[%d] ConvertBigPublicKey_StandardToCompact error",param_3,
                            param_4,uVar3);
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar3);
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res18);
    local_res18[0] = 0x4bf;
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  return;
}



############ FUN_ 1807404d0 size=223 ############

void FUN_1807404d0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  int local_res18 [2];
  char *local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_18070ac10(param_2);
  local_res18[0] = FUN_180708bf0(param_1,param_2,param_3,param_4,uVar3);
  if (local_res18[0] != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,
                            "[%d] BIG_Convert_CompactSignature_To_StandardSignature error");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res18);
    local_res18[0] = 0x4f1;
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  return;
}



############ FUN_ 1807405c0 size=203 ############

void FUN_1807405c0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  int local_res18 [2];
  char *local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  local_res18[0] = FUN_180709c10();
  if (local_res18[0] != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res20,
                            "[%d] BIG_Convert_StandardSignature_To_CompactSignature error",param_3,
                            param_4,uVar3);
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar3);
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res18);
    local_res18[0] = 0x518;
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res18);
  }
  return;
}



############ FUN_ 1807406a0 size=393 ############

void FUN_1807406a0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 *puVar3;
  char *pcVar4;
  longlong lVar5;
  undefined8 local_res8;
  char *local_res20;
  
  if (*(char *)(param_1 + 8) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Signer object has not been initialized");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)0x0;
      local_res8._4_4_ = 0;
    }
    else {
      local_res8 = puVar3;
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x117);
    local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar1 = FUN_1805a21d0(puVar3[1],&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar1,&local_res8);
  }
  FUN_18070ac10(param_3);
  iVar2 = FUN_180997870(param_1 + 0x10,0,param_2,param_3);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar2);
  if (iVar2 == 0) {
    return;
  }
  local_res20 = (char *)FUN_1811316e0(0x18);
  if (local_res20 == (char *)0x0) {
    lVar5 = 0;
  }
  else {
    lVar5 = FUN_1805a48c0(local_res20,"[%d] ECC_GenerateKeyPair error");
  }
  pcVar4 = (char *)FUN_1811316e0(0x18);
  local_res20 = pcVar4;
  if (pcVar4 == (char *)0x0) {
    pcVar4 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,299);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
  uVar1 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar1,&local_res8);
}



############ FUN_ 1807442a6 size=1762 ############

/* WARNING: Instruction at (ram,0x000180744556) overlaps instruction at (ram,0x000180744555)
    */
/* WARNING: Removing unreachable block (ram,0x0001807448f9) */
/* WARNING: Removing unreachable block (ram,0x000180744394) */
/* WARNING: Removing unreachable block (ram,0x000180744555) */
/* WARNING: Removing unreachable block (ram,0x0001807443b6) */

ulonglong FUN_1807442a6(undefined8 param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4,
                       undefined8 param_5,undefined8 param_6,char *param_7)

{
  longlong in_RAX;
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint *puVar8;
  longlong lVar9;
  uint uVar10;
  longlong unaff_RBX;
  int unaff_ESI;
  uint unaff_EDI;
  longlong lVar11;
  uint *unaff_R12;
  longlong unaff_R13;
  ulonglong uVar12;
  undefined4 unaff_R14D;
  ulonglong unaff_R15;
  uint local_res20;
  uint in_stack_00000090;
  int in_stack_000000a0;
  undefined8 *in_stack_000000a8;
  
  uVar12 = unaff_R13 - in_RAX;
  uVar5 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar5 < 0) {
    uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
  }
  if (uVar5 != 0) {
    FUN_180745ea5(0xcc2c,param_2,param_3,(param_4 ^ 0xffffffffffffffff) + 1);
    uVar12 = FUN_1807442a6();
    return uVar12;
  }
  uVar5 = unaff_EDI >> 0x1c ^ unaff_EDI << 4 ^ *(uint *)(unaff_RBX + 100);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x68);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x6c);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x70);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x74);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x78);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x7c);
  lVar1 = uVar12 + 0x10;
  lVar11 = CONCAT71((int7)((ulonglong)param_3 >> 8),1);
  in_stack_000000a0 = FUN_1809947d0(unaff_R14D,(unaff_R15 ^ 0x22007fe5 ^ uVar12) & 0xff);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x80);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x84);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x88);
  do {
    uVar6 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x8c);
  uVar5 = *(uint *)(unaff_RBX + 0x90) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  if (in_stack_000000a0 == 0) {
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x94);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x98);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0x9c);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xa0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xa4);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xa8);
    do {
      lVar1 = ~-lVar1 + 1;
      lVar11 = (-lVar11 ^ 0xffffffffffffffffU) + 1;
      uVar6 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xac);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xb0);
    do {
      uVar6 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xb4);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xb8);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xbc);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xc0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xc4);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 200);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xcc);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xd0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xd4);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xd8);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xdc);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xe0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xe4);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xe8);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xec);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xf0);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xf4);
    uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)(unaff_RBX + 0xf8);
    uVar6 = (*(uint *)(unaff_RBX + 0xfc) ^ uVar5 >> 0x1c ^ uVar5 << 4) + 0xa03442fc;
    uVar5 = uVar6 >> 7;
    uVar10 = uVar6 * 0x2000000 | uVar5;
    uVar6 = (uVar10 >> 8 ^ uVar10) >> 5 & 0x7f;
    in_stack_000000a0 = 0;
    do {
      puVar8 = &stack0x00000090;
      FUN_180746648(puVar8,&stack0x00000090);
      uVar3 = rdtsc();
      *puVar8 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
      FUN_180746489();
      uVar7 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    in_stack_00000090 =
         (in_stack_00000090 * -0x50284602 >> 0x18 ^ in_stack_00000090 * -0x50284602) * -0x51ca3d4e;
    if (in_stack_00000090 < 0x3d980f7) {
      do {
        uVar7 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      uVar4 = FUN_1813bba80(0,0x99f6);
      if (1 < uVar4) {
        lVar9 = *(longlong *)unaff_R12;
        puVar8 = unaff_R12;
        while (lVar9 != -0x3333333333333334) {
          puVar8[0] = 0;
          puVar8[1] = 0;
          puVar8 = puVar8 + 0x10;
          lVar9 = *(longlong *)puVar8;
        }
      }
    }
    *(undefined1 *)(uVar12 + 8) = 1;
    if (((local_res20 ^ (((uVar6 << 8 | uVar6) << 5 ^ uVar10) >> 3 | uVar5 << 0x1d) ^ 0xe8e82d51) *
         5 & 0x7fffffff) != 0) {
      uVar12 = thunk_FUN_1805a9280();
      return uVar12;
    }
    uVar3 = 0;
    do {
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x18074488d;
      lVar9 = (longlong)unaff_ESI;
      FUN_180743371();
      *(longlong *)((longlong)register0x00000020 + -8) = lVar1;
      *(undefined8 *)((longlong)register0x00000020 + -0x10) = uVar3;
      *(longlong *)((longlong)register0x00000020 + -0x18) = lVar11;
      lVar9 = -lVar9;
      lVar11 = *(longlong *)((longlong)register0x00000020 + lVar9 + 0x668);
      uVar3 = *(undefined8 *)((longlong)register0x00000020 + lVar9 + 0x670);
      lVar1 = *(longlong *)((longlong)register0x00000020 + lVar9 + 0x678);
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar9 + 0x680);
      uVar5 = *unaff_R12;
      uVar6 = (uVar5 + 1) * uVar5 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    return (ulonglong)uVar5;
  }
  in_stack_000000a8 = (undefined8 *)FUN_1811316e0(0x18);
  if (in_stack_000000a8 == (undefined8 *)0x0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(in_stack_000000a8,"[%d] ECC_CURVE_InitializeCurve error");
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  in_stack_000000a8 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar1 + 8),&stack0x000000a0);
  in_stack_000000a8 = (undefined8 *)CONCAT44(in_stack_000000a8._4_4_,0x177);
  param_7 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
  uVar3 = FUN_1805a21d0(puVar2[1],&param_7);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,&stack0x000000a8);
}



############ FUN_ 180744a90 size=348 ############

undefined8 FUN_180744a90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *local_res8;
  char *local_res18 [2];
  
  puVar4 = (undefined8 *)0x0;
  if (*(char *)(param_1 + 8) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Signer object has not been initialized");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x186);
    local_res18[0] =
         "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],local_res18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  iVar1 = FUN_180999f60(param_1 + 0x10,param_2,param_3,param_4,0xfffffffffffffffe);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar1);
  if (iVar1 != 0x6c) {
    if (iVar1 == 0) {
      return 1;
    }
    local_res18[0] = (char *)FUN_1811316e0(0x18);
    if (local_res18[0] != (char *)0x0) {
      puVar4 = (undefined8 *)
               FUN_1805a48c0(local_res18[0],"[%d] ECC_VerifyPublicKeyIsOnCurrentCurve error");
    }
    lVar5 = FUN_1805c0260();
    FUN_18060e760(puVar4[1],&local_res8);
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x19c);
    local_res18[0] =
         "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),local_res18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return 0;
}



############ FUN_ 180744c10 size=409 ############

void FUN_180744c10(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 *puVar3;
  char *pcVar4;
  longlong lVar5;
  undefined8 local_res8;
  char *local_38;
  undefined8 local_30;
  
  local_30 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 8) == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Signer object has not been initialized");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)0x0;
      local_res8._4_4_ = 0;
    }
    else {
      local_res8 = puVar3;
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1ac);
    local_38 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar1 = FUN_1805a21d0(puVar3[1],&local_38);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar1,&local_res8);
  }
  FUN_18070ac10(param_4);
  iVar2 = FUN_180998be0(param_1 + 0x10,param_2,param_3,param_4);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar2);
  if (iVar2 == 0) {
    return;
  }
  local_38 = (char *)FUN_1811316e0(0x18);
  if (local_38 == (char *)0x0) {
    lVar5 = 0;
  }
  else {
    lVar5 = FUN_1805a48c0(local_38,"[%d] ECC_SignatureGenerate error");
  }
  pcVar4 = (char *)FUN_1811316e0(0x18);
  local_38 = pcVar4;
  if (pcVar4 == (char *)0x0) {
    pcVar4 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1c0);
  local_38 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
  uVar1 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_38);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar1,&local_res8);
}



############ FUN_ 180744dd0 size=437 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180744dd0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
                  undefined8 *param_5)

{
  void *pvVar1;
  void *pvVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined1 auStack_128 [32];
  undefined4 local_108 [2];
  char *local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined1 local_b8 [56];
  undefined1 local_80 [56];
  ulonglong local_48;
  
  local_f8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  pvVar1 = (void *)*param_4;
  pvVar2 = (void *)param_4[1];
  if ((pvVar1 != pvVar2) && (pvVar1 != pvVar2)) {
    memmove(pvVar1,pvVar2,0);
    param_4[1] = pvVar1;
  }
  pvVar1 = (void *)*param_5;
  pvVar2 = (void *)param_5[1];
  if ((pvVar1 != pvVar2) && (pvVar1 != pvVar2)) {
    memmove(pvVar1,pvVar2,0);
    param_5[1] = pvVar1;
  }
  if ((char)param_1[1] != '\0') {
    (**(code **)(*param_1 + 0x90))(param_1,1,param_2,&local_f0);
    (**(code **)(*param_1 + 0x48))(param_1,&local_f0,param_3,local_b8);
    local_f0 = 0;
    local_e8 = 0;
    local_e0 = 0;
    local_d8 = 0;
    local_d0 = 0;
    local_c8 = 0;
    local_c0 = 0;
    FUN_18073c3a0(local_b8,param_4);
    FUN_18073c3a0(local_80,param_5);
  }
  local_100 = (char *)FUN_1811316e0(0x18);
  if (local_100 != (char *)0x0) {
    FUN_1805a48c0(local_100,"Signer object has not been initialized");
  }
  pcVar3 = (char *)FUN_1811316e0(0x18);
  if (pcVar3 == (char *)0x0) {
    pcVar3 = (char *)0x0;
  }
  else {
    local_100 = pcVar3;
    FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_108[0] = 0x1d0;
  local_100 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
  uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_100);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,local_108);
}



############ FUN_ 180744fb0 size=708 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180744fb0(longlong param_1,undefined8 param_2,longlong param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  char *pcVar3;
  char *pcVar4;
  longlong lVar5;
  undefined1 auStack_f8 [32];
  char local_d8 [8];
  int local_d0 [2];
  char *local_c8;
  undefined8 local_c0;
  undefined1 local_b8 [56];
  undefined1 local_80 [56];
  ulonglong local_48;
  
  local_c0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  pcVar4 = (char *)0x0;
  if (*(char *)(param_1 + 8) == '\0') {
    local_c8 = (char *)FUN_1811316e0(0x18);
    if (local_c8 != (char *)0x0) {
      FUN_1805a48c0(local_c8,"Signer object has not been initialized");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_c8 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar1;
    }
    local_d0[0] = 0x1ed;
    local_c8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_c8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_d0);
  }
  FUN_18070ac10(local_b8);
  local_d0[0] = FUN_180997870(param_1 + 0x10,0,param_2,local_b8);
  if (local_d0[0] != 0) {
    local_c8 = (char *)FUN_1811316e0(0x18);
    pcVar1 = pcVar4;
    if (local_c8 != (char *)0x0) {
      pcVar1 = (char *)FUN_1805a48c0(local_c8,"[%d] ECC_GenerateKeyPair error");
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    local_c8 = pcVar3;
    if (pcVar3 != (char *)0x0) {
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar3;
    }
    FUN_18060e760(*(undefined8 *)(pcVar1 + 8),local_d0);
    local_d0[0] = 0x201;
    local_c8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_c8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_d0);
  }
  local_d0[0] = FUN_180707e90(local_b8,param_3,local_d8);
  if (local_d0[0] != 0) {
    local_c8 = (char *)FUN_1811316e0(0x18);
    pcVar1 = pcVar4;
    if (local_c8 != (char *)0x0) {
      pcVar1 = (char *)FUN_1805a48c0(local_c8,"[%d] BIG_CompareBig error (X coordinate)");
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    local_c8 = pcVar3;
    if (pcVar3 != (char *)0x0) {
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar3;
    }
    FUN_18060e760(*(undefined8 *)(pcVar1 + 8),local_d0);
    local_d0[0] = 0x210;
    local_c8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_c8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_d0);
  }
  if ((local_d8[0] == '\0') &&
     (local_d0[0] = FUN_180707e90(local_80,param_3 + 0x38,local_d8), local_d0[0] != 0)) {
    local_c8 = (char *)FUN_1811316e0(0x18);
    if (local_c8 != (char *)0x0) {
      pcVar4 = (char *)FUN_1805a48c0(local_c8,"[%d] BIG_CompareBig error (Y coordinate)");
    }
    lVar5 = FUN_1805c0260();
    FUN_18060e760(*(undefined8 *)(pcVar4 + 8),local_d0);
    local_d0[0] = 0x221;
    local_c8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_c8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_d0);
  }
}



############ FUN_ 180745340 size=323 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180745340(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  undefined8 uVar3;
  undefined1 auStack_198 [32];
  int local_178 [2];
  char *local_170;
  undefined8 local_168;
  undefined1 local_158 [112];
  undefined1 local_e8 [64];
  undefined1 local_a8 [112];
  ulonglong local_38;
  
  local_168 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_198;
  FUN_18070ac10(local_158);
  local_178[0] = FUN_180708bf0(param_2,local_158);
  if (local_178[0] != 0) {
    local_170 = (char *)FUN_1811316e0(0x18);
    if (local_170 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_170,"[%d] ConvertBigPublicKey_CompactToStandard error");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_170 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_178);
    local_178[0] = 0x498;
    local_170 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_170);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_178);
  }
  (**(code **)(*param_1 + 0x10))(param_1,param_3,local_e8);
  FUN_1807404d0(param_4,local_a8);
  (**(code **)(*param_1 + 0x80))(param_1,local_158,param_3,local_a8);
}



############ FUN_ 1807454b0 size=2512 ############

/* WARNING: Removing unreachable block (ram,0x0001807459f1) */
/* WARNING: Removing unreachable block (ram,0x00018074561b) */
/* WARNING: Removing unreachable block (ram,0x00018074550e) */
/* WARNING: Removing unreachable block (ram,0x0001807454ee) */
/* WARNING: Removing unreachable block (ram,0x0001807455e6) */
/* WARNING: Removing unreachable block (ram,0x00018074581d) */
/* WARNING: Removing unreachable block (ram,0x000180745ee7) */

undefined8 FUN_1807454b0(ulonglong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined1 *puVar1;
  undefined4 *puVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  undefined1 *puVar12;
  longlong lVar13;
  ulonglong uVar14;
  uint uVar15;
  bool bVar16;
  uint unaff_retaddr;
  undefined1 auStack_b8 [32];
  undefined *local_98;
  undefined4 local_90;
  uint local_88;
  undefined8 local_80;
  undefined4 local_78 [2];
  undefined8 local_70;
  undefined8 *local_68;
  char *local_60;
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  uVar15 = (uint)&stack0x00000000;
  iVar11 = (uVar15 & 0x39ff) * (uVar15 & 0x39ff) + 1;
  uVar9 = iVar11 * 0x24924924 + (iVar11 >> 4) + (iVar11 >> 1) >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  uVar8 = uVar15 & 0x3bf;
  iVar11 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  uVar8 = ((uVar15 & 0x18ff) * (uVar15 & 0x18ff) * 0x10 + 4) % 0x13 <<
          ((byte)(((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e) & 0x1f);
  uVar14 = (ulonglong)
           ((((int)(-uVar9 | uVar9) >> 0x1f) * -0x1048 | 0xb14aU) ^
           ((int)(-uVar8 | uVar8) >> 0x1f) * -0xa14a);
  local_70 = 0x100;
  puVar2 = &DAT_1811a2c58;
  local_98 = &DAT_1811a2d58;
  local_80 = 0xae272840ced9d845;
  local_88 = 0xced9d845;
  uVar9 = (DAT_1811a2c58 + 0x5effd658) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c5c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c60) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c64) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c68) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c6c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c70) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c74) * 0x401;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar9 = (DAT_1811a2c78 + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c7c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c80) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c84) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c88) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c8c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c90) * 0x401;
  puVar7 = (undefined8 *)0x0;
  if (*(char *)(param_1 + 8) == '\0') {
    local_68 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_68 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_68,"Signer object has not been initialized");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_68 = puVar3;
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
      puVar7 = puVar3;
    }
    local_78[0] = 0x249;
    local_60 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
    uVar4 = FUN_1805a21d0(puVar7[1],&local_60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_78);
  }
  uVar9 = (DAT_1811a2c94 + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c98) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2c9c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2ca0) * 0x401;
  uVar9 = uVar9 ^ uVar9 >> 6;
  bVar16 = uVar9 == 0;
  uVar8 = uVar9;
  do {
    if (!bVar16 && -1 < (int)uVar9) {
      uVar8 = -(~uVar8 + 1);
    }
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    bVar16 = uVar9 == 0;
  } while (!bVar16);
  local_90 = FUN_180998f60(param_1 + 0x10,param_2);
  uVar9 = (DAT_1811a2ca4 + uVar8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2ca8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cac) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cb0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cb4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cb8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cbc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cc0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cc4) * 0x401;
  do {
    uVar14 = ~(~uVar14 + 1) + 1;
    param_1 = (~param_1 + 1 ^ 0xffffffffffffffff) + 1;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar9 = (DAT_1811a2cc8 + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2ccc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cd0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cd4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cd8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cdc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2ce0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2ce4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2ce8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cec) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cf0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cf4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cf8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2cfc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d00) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d04) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d08) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d0c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d10) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d14) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d18) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d1c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d20) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d24) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d28) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d2c) * 0x401;
  uVar15 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d30) * 0x401;
  uVar8 = uVar15 >> 6;
  uVar9 = uVar8;
  do {
    uVar6 = (ulonglong)uVar9;
    lVar13 = param_1 + uVar6;
    if (SCARRY8(param_1,uVar6) == lVar13 < 0) {
      lVar5 = lVar13 + uVar6;
      lVar13 = (uVar6 - lVar5 ^ 0xffffffffffffffff) + 1;
      uVar6 = lVar5 - lVar13;
    }
    param_1 = lVar13 - uVar6;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
    uVar9 = unaff_retaddr;
  } while (uVar10 != 0);
  uVar9 = (DAT_1811a2d34 + (uVar15 ^ uVar8)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d38) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d3c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d40) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d44) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d48) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d4c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d50) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1811a2d54) * 0x401;
  uVar9 = uVar9 >> 6 ^ uVar9;
  uVar8 = uVar9 << 0x18 | uVar9 >> 8;
  uVar8 = (uVar8 << 4 | (uVar9 & 0xff) >> 4) & 0xd2d2d2d2 |
          (uVar8 >> 4 | (uVar9 >> 8) << 0x1c) & 0x2d2d2d2d;
  uVar6 = (ulonglong)uVar8;
  uVar9 = (uVar8 >> 3 ^ uVar8) >> 0x10 & 1;
  uVar9 = (uVar9 * 8 | uVar9) << 0x10 ^ uVar8;
  uVar8 = uVar9 << 8 | uVar8 >> 0x18;
  uVar9 = ((uVar9 & 0xffffff) >> 7 ^ uVar8) >> 8 & 0x1ff;
  uVar8 = uVar8 ^ (uVar9 << 0xf | uVar9) << 8;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  if ((uVar8 << 0x17 | uVar8 >> 9) != local_88) {
    puVar1 = auStack_b8;
    do {
      puVar12 = puVar1;
      *(undefined **)(puVar12 + -8) = &UNK_180745f48;
      lVar13 = 0xea0;
      FUN_180745ea5(0xea0,uVar6);
      *(ulonglong *)(puVar12 + -8) = uVar14;
      *(undefined4 **)(puVar12 + -0x10) = puVar2;
      *(undefined8 *)(puVar12 + -0x18) = param_3;
      lVar13 = -lVar13;
      param_3 = *(undefined8 *)(puVar12 + lVar13 + 0xe88);
      puVar2 = *(undefined4 **)(puVar12 + lVar13 + 0xe90);
      uVar14 = *(ulonglong *)(puVar12 + lVar13 + 0xe98);
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
      puVar1 = puVar12 + lVar13 + 0xea0;
    } while (uVar9 != 0);
    if (*(int *)(puVar12 + lVar13 + 0xec8) == 0x6a) {
      uVar4 = 0;
    }
    else {
      if (*(int *)(puVar12 + lVar13 + 0xec8) != 0) {
        *(undefined **)(puVar12 + lVar13 + 0xe98) = &UNK_180746020;
        lVar5 = FUN_1811316e0(0x18);
        *(longlong *)(puVar12 + lVar13 + 0xf60) = lVar5;
        if (lVar5 != 0) {
          *(undefined8 *)(puVar12 + lVar13 + 0xe98) = 0x18074603c;
          puVar7 = (undefined8 *)FUN_1805a48c0(lVar5,"[%d] ECC_SignatureVerify error");
        }
        *(undefined8 *)(puVar12 + lVar13 + 0xe98) = 0x180746044;
        lVar5 = FUN_1805c0260();
        uVar4 = puVar7[1];
        *(undefined8 *)(puVar12 + lVar13 + 0xe98) = 0x180746055;
        FUN_18060e760(uVar4,puVar12 + lVar13 + 0xec8);
        *(undefined4 *)(puVar12 + lVar13 + 0xed0) = 0x261;
        *(char **)(puVar12 + lVar13 + 0xef0) =
             "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\signer.cpp";
        uVar4 = *(undefined8 *)(lVar5 + 8);
        *(undefined8 *)(puVar12 + lVar13 + 0xe98) = 0x180746077;
        uVar4 = FUN_1805a21d0(uVar4,puVar12 + lVar13 + 0xef0);
                    /* WARNING: Subroutine does not return */
        *(undefined **)(puVar12 + lVar13 + 0xe98) = &UNK_180746084;
        FUN_1805b20d0(uVar4,puVar12 + lVar13 + 0xed0);
      }
      uVar4 = 1;
    }
    return uVar4;
  }
  uVar4 = thunk_FUN_1805a9280((longlong)(int)uVar14,uVar6,param_3,thunk_FUN_1805a9280);
  return uVar4;
}



############ FUN_ 18077acc0 size=63 ############

void FUN_18077acc0(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x200);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 180751290 size=549 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180751290(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_298[0] = 0x956;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0x160))(param_1,param_2,param_3,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_4;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  (**(code **)(*param_1 + 0x168))(param_1,param_4,&local_288,param_5);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807514f0 size=577 ############

void FUN_1807514f0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong param_4)

{
  longlong lVar1;
  char *pcVar2;
  undefined8 uVar3;
  int local_res8 [2];
  char *local_res10;
  char *local_res18;
  undefined1 local_78 [24];
  undefined8 local_60;
  undefined8 uStack_58;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined8 local_40;
  
  (**(code **)(*param_1 + 0x2a0))(param_1,local_78,param_4,0x38,0);
  local_60 = *param_2;
  uStack_58 = param_2[1];
  local_50 = *(undefined4 *)(param_2 + 2);
  uStack_4c = *(undefined4 *)((longlong)param_2 + 0x14);
  uStack_48 = *(undefined4 *)(param_2 + 3);
  uStack_44 = *(undefined4 *)((longlong)param_2 + 0x1c);
  local_40 = param_2[4];
  local_res8[0] = (int)(param_3[1] - *param_3);
  if ((local_res8[0] - 1U < 0x1010) && ((param_3[1] - *param_3 & 0xfU) == 0)) {
    if (local_res8[0] != (int)local_40) {
      local_res10 = (char *)FUN_1811316e0(0x18);
      if (local_res10 == (char *)0x0) {
        lVar1 = 0;
      }
      else {
        lVar1 = FUN_1805a48c0(local_res10,
                              "The AuthEx Program vector size (%d) does not match the stated size (%d) in the command frame."
                             );
      }
      pcVar2 = (char *)FUN_1811316e0(0x18);
      local_res10 = pcVar2;
      if (pcVar2 == (char *)0x0) {
        pcVar2 = (char *)0x0;
      }
      else {
        FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
        *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
      }
      FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res8);
      FUN_18060e760(*(undefined8 *)(lVar1 + 8),&local_40);
      local_res8[0] = 0x99a;
      local_res10 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,local_res8);
    }
    FUN_1805b1a40(param_4 + 0x78,*param_3,param_3[1]);
    *(undefined1 *)(param_4 + 0x28) = 1;
    (**(code **)(*param_1 + 0x290))(param_1,0x40,local_78,param_4,1);
    return;
  }
  local_res10 = (char *)FUN_1811316e0(0x18);
  if (local_res10 == (char *)0x0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(local_res10,"The AuthEx Program vector size (%d) is not valid.");
  }
  pcVar2 = (char *)FUN_1811316e0(0x18);
  local_res10 = pcVar2;
  if (pcVar2 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res8);
  local_res10 = (char *)CONCAT44(local_res10._4_4_,0x992);
  local_res18 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,&local_res10);
}



############ FUN_ 180751760 size=575 ############

void FUN_180751760(undefined8 param_1,uint *param_2,longlong *param_3,undefined8 *param_4)

{
  char *pcVar1;
  char *pcVar2;
  undefined8 uVar3;
  char *pcVar4;
  longlong lVar5;
  uint uVar6;
  ulonglong uVar7;
  char *local_res18;
  char *local_38;
  undefined8 local_30;
  
  local_30 = 0xfffffffffffffffe;
  uVar7 = param_3[1] - *param_3;
  uVar6 = (uint)uVar7;
  local_res18 = (char *)CONCAT44(local_res18._4_4_,uVar6);
  pcVar4 = (char *)0x0;
  if (0x1014 < uVar6) {
    local_38 = (char *)FUN_1811316e0(0x18);
    pcVar1 = pcVar4;
    if (local_38 != (char *)0x0) {
      pcVar1 = (char *)FUN_1805a48c0(local_38,
                                     "ExtraRsltDataSize (%d) is too large for the AuthEx command");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_38 = pcVar2;
    if (pcVar2 != (char *)0x0) {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar2;
    }
    FUN_18060e760(*(undefined8 *)(pcVar1 + 8),&local_res18);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0x9cc);
    local_38 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_38);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res18);
  }
  if (uVar6 == 0) {
    param_4[1] = *param_4;
    if (*param_2 != 0) {
      local_res18 = (char *)FUN_1811316e0(0x18);
      if (local_res18 != (char *)0x0) {
        pcVar4 = (char *)FUN_1805a48c0(local_res18,
                                       "No AuthEx Program was returned, but %d bytes was specified")
        ;
      }
      lVar5 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(pcVar4 + 8),param_2);
      local_res18 = (char *)CONCAT44(local_res18._4_4_,0x9d6);
      local_38 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_38);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,&local_res18);
    }
  }
  else {
    uVar6 = *param_2;
    if (((uVar6 == 0) || ((uVar7 & 0xffffffff) - 4 < (ulonglong)uVar6)) || ((uVar6 & 0xf) != 0)) {
      local_res18 = (char *)FUN_1811316e0(0x18);
      pcVar1 = pcVar4;
      if (local_res18 != (char *)0x0) {
        pcVar1 = (char *)FUN_1805a48c0(local_res18,
                                       "The AuthEx Program vector size (%d) is not valid.");
      }
      pcVar2 = (char *)FUN_1811316e0(0x18);
      local_res18 = pcVar2;
      if (pcVar2 != (char *)0x0) {
        FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
        *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
        pcVar4 = pcVar2;
      }
      FUN_18060e760(*(undefined8 *)(pcVar1 + 8),param_2);
      local_res18 = (char *)CONCAT44(local_res18._4_4_,0x9e2);
      local_38 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_38);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,&local_res18);
    }
    FUN_1805e1990(param_4,*param_3,(ulonglong)*param_2 + *param_3,uVar7 & 0xff);
  }
  return;
}



############ FUN_ 1807519e0 size=1290 ############

void FUN_1807519e0(undefined8 param_1,undefined4 param_2,longlong param_3,longlong *param_4,
                  longlong *param_5)

{
  undefined4 *puVar1;
  longlong *plVar2;
  int iVar3;
  char *pcVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  void *_Memory;
  char *local_res18;
  char *local_res20;
  void *local_2e8;
  undefined8 uStack_2e0;
  longlong local_2d8;
  undefined1 local_2c8 [4];
  undefined1 local_2c4 [4];
  int local_2c0;
  undefined4 local_29c;
  undefined4 uStack_298;
  undefined4 uStack_294;
  undefined4 uStack_290;
  undefined4 local_28c;
  undefined8 local_288;
  undefined1 local_278 [576];
  
  local_288 = 0xfffffffffffffffe;
  local_2e8 = (void *)0x0;
  uStack_2e0 = 0;
  local_2d8 = 0;
  if (param_4[1] - *param_4 != 0x14) {
    local_res18 = (char *)FUN_1811316e0(0x18);
    if (local_res18 != (char *)0x0) {
      FUN_1805a48c0(local_res18,"The machine bindings hash is the wrong size");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_res18 = pcVar4;
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0xcbc);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res18);
  }
  FUN_18077e390(param_2,&local_2e8);
  FUN_18063c260(local_278,0x1f,1,0,&local_2e8);
  local_res18 = (char *)(*(longlong *)(param_3 + 0x68) - *(longlong *)(param_3 + 0x60));
  if (local_res18 != (char *)0x40) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar6 = 0;
    }
    else {
      lVar6 = FUN_1805a48c0(local_res20,"Bad command frame size = %d ");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar4;
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_1805b2520(*(undefined8 *)(lVar6 + 8),&local_res18);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0xcd0);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res18);
  }
  memcpy(local_2c8,*(void **)(param_3 + 0x60),0x40);
  FUN_18063cd40(local_278,0x40,local_2c8);
  iVar3 = FUN_18061e5a0(local_2c4,0xf,1,local_2c8);
  plVar2 = param_5;
  local_res18 = (char *)CONCAT44(local_res18._4_4_,iVar3);
  if (iVar3 != 0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 == (char *)0x0) {
      lVar6 = 0;
    }
    else {
      lVar6 = FUN_1805a48c0(local_res20,
                            "[%d] UTILS_CRC32 error checking the CRC of the command frame");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar4;
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar6 + 8),&local_res18);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,0xce3);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res18);
  }
  if (local_2c0 == 1) {
    FUN_1805b0f50(param_5,0x14,param_5);
    puVar7 = (undefined8 *)*plVar2;
    *puVar7 = CONCAT44(uStack_298,local_29c);
    puVar7[1] = CONCAT44(uStack_290,uStack_294);
    *(undefined4 *)(puVar7 + 2) = local_28c;
    puVar1 = (undefined4 *)*param_4;
    local_29c = *puVar1;
    uStack_298 = puVar1[1];
    uStack_294 = puVar1[2];
    uStack_290 = puVar1[3];
    local_28c = puVar1[4];
    iVar3 = FUN_18061e5a0(local_2c4,0xf,0,local_2c8);
    local_res18 = (char *)CONCAT44(local_res18._4_4_,iVar3);
    if (iVar3 != 0) {
      param_5 = (longlong *)FUN_1811316e0(0x18);
      if (param_5 == (longlong *)0x0) {
        lVar6 = 0;
      }
      else {
        lVar6 = FUN_1805a48c0(param_5,"[%d] UTILS_CRC32 error updating the CRC of the command frame"
                             );
      }
      puVar7 = (undefined8 *)FUN_1811316e0(0x18);
      param_5 = puVar7;
      if (puVar7 == (undefined8 *)0x0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
        *puVar7 = pace::PaceLocationInfoFormatter::vftable;
      }
      FUN_18060e760(*(undefined8 *)(lVar6 + 8),&local_res18);
      param_5 = (longlong *)CONCAT44(param_5._4_4_,0xd0f);
      local_res18 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar5 = FUN_1805a21d0(puVar7[1],&local_res18);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&param_5);
    }
    FUN_18063f570(local_278,1,0);
    FUN_18063dc90(local_278,0x40,local_2c8);
    memcpy(*(void **)(param_3 + 0x60),local_2c8,0x40);
    FUN_18063cad0(local_278);
    if (local_2e8 == (void *)0x0) {
      return;
    }
    _Memory = local_2e8;
    if ((0xfff < (ulonglong)(local_2d8 - (longlong)local_2e8)) &&
       (_Memory = *(void **)((longlong)local_2e8 + -8),
       0x1f < (ulonglong)((longlong)local_2e8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res20 = (char *)FUN_1811316e0(0x18);
  if (local_res20 == (char *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res20,"The command ID (0x%X) is not the ID for OpenConnection");
  }
  pcVar4 = (char *)FUN_1811316e0(0x18);
  local_res20 = pcVar4;
  if (pcVar4 == (char *)0x0) {
    pcVar4 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar6 + 8),&local_res18);
  local_res18 = (char *)CONCAT44(local_res18._4_4_,0xced);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,&local_res18);
}



############ FUN_ 180751f40 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180751f40(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0x717;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x108))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180753000 size=1413 ############

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

longlong FUN_180753000(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  undefined1 auStack_2d8 [48];
  uint local_2a8;
  undefined4 uStack_2a4;
  undefined *local_2a0;
  undefined4 local_290 [2];
  uint local_288;
  char *local_280;
  undefined8 local_278;
  undefined8 local_270;
  undefined8 uStack_268;
  undefined8 local_260;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2d8;
  uVar4 = (uint)&stack0x00000000 & 0x36ff;
  uVar4 = (uVar4 * uVar4 + 1) % 7;
  local_288 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0x23e2 ^ 0x26d2;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  local_278 = param_3;
  FUN_180750800(local_1a8);
  local_270 = 0;
  uStack_268 = 0;
  local_260 = 0;
  local_2a0 = &UNK_1814722d4;
  uVar4 = (((uint)(DAT_1814721d4 * 0x401) >> 6 ^ DAT_1814721d4 * 0x401) + DAT_1814721d8) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + DAT_1814721dc) * 0x401;
  _local_2a8 = CONCAT44(1,uVar4 ^ uVar4 >> 6);
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_290[0] = 0x13e;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_290);
  }
  (**(code **)(*param_1 + 0x20))(param_1,param_2,&local_258);
  uVar3 = FUN_1807537a5();
  return -(~uVar3 + 1);
}



############ FUN_ 1807553a0 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807553a0(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0x9f6;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x178))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180755650 size=208 ############

bool FUN_180755650(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res8;
  char *local_res10;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x3e4) != '\0') {
    return *(uint *)(param_1 + 0x3b4) < 100;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"The connection has not been opened yet",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xd37);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 180755730 size=209 ############

bool FUN_180755730(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 *local_res8;
  char *local_res10;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)0x0;
  if (*(char *)(param_1 + 0x3e4) != '\0') {
    return *(int *)(param_1 + 0x3b4) - 100U < 100;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"The connection has not been opened yet",param_3,param_4,uVar3);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar3);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    puVar2 = puVar1;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xd47);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,&local_res8);
}



############ FUN_ 180755820 size=970 ############

/* WARNING: Removing unreachable block (ram,0x000180755918) */
/* WARNING: Removing unreachable block (ram,0x0001807558ff) */
/* WARNING: Removing unreachable block (ram,0x00018075597b) */
/* WARNING: Removing unreachable block (ram,0x000180755987) */

undefined1 FUN_180755820(longlong param_1)

{
  undefined1 uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined2 uVar4;
  uint uVar5;
  undefined8 in_stack_00000028;
  undefined8 in_stack_00000030;
  undefined8 in_stack_00000038;
  undefined8 in_stack_00000040;
  undefined1 auStack_338 [48];
  undefined4 local_308;
  undefined8 local_300;
  uint local_2f8;
  undefined *local_2f0;
  undefined4 local_2e8;
  undefined8 local_2e0;
  undefined4 *local_2d8;
  undefined4 local_2d0 [2];
  longlong local_2c8;
  undefined8 *local_2c0;
  undefined8 local_2b8;
  undefined8 local_2b0;
  undefined8 local_2a8;
  undefined8 local_2a0;
  undefined8 uStack_298;
  undefined8 local_290;
  char *local_288;
  undefined8 local_280;
  undefined **local_278;
  undefined **local_270;
  undefined8 local_268;
  undefined8 local_260;
  undefined8 local_258;
  undefined4 local_250;
  undefined2 local_24c;
  undefined1 local_24a;
  undefined **local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined8 uStack_230;
  undefined4 local_228;
  undefined2 local_224;
  undefined1 local_222;
  undefined4 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined4 local_1e8;
  undefined1 local_1e4;
  undefined8 local_1d8;
  undefined1 local_1c8 [376];
  ulonglong local_50;
  
  local_1d8 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_338;
  local_280 = in_stack_00000028;
  local_2a8 = in_stack_00000030;
  local_2b0 = in_stack_00000038;
  local_2b8 = in_stack_00000040;
  uVar5 = (uint)&stack0x00000000 & 0xdff;
  uVar5 = ((uVar5 + 1) * uVar5 + 7) % 0x51;
  uVar5 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_2f8 = (int)(-uVar5 | uVar5) >> 0x1f & 0xacabU ^ 0xac7b;
  local_2e8 = 0x370;
  local_278 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_270 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_268 = 0;
  local_260 = 0;
  local_258 = 0;
  local_250 = 0;
  local_24c = 0;
  local_24a = 0;
  local_248 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_240 = 0;
  local_238 = 0;
  uStack_230 = 0;
  local_228 = 0;
  local_224 = 0;
  local_222 = 0;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  local_1e4 = 0;
  local_2c8 = param_1;
  FUN_180750800(local_1c8);
  local_2a0 = 0;
  uStack_298 = 0;
  local_290 = 0;
  if (*(longlong *)(param_1 + 0x28) != 0) {
    local_308 = 0x811c9dc5;
    uVar4 = 0;
    local_2e0 = 0;
    local_2d8 = &DAT_1826dc0fc;
    local_2f0 = &DAT_1826dc200;
    local_300 = 0x352adc654542918a;
    FUN_180753ead();
                    /* WARNING: Call to offcut address within same function */
    func_0x000180755bfd();
    uVar1 = in(uVar4);
    return uVar1;
  }
  local_2c0 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_2c0 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_2c0,"ILok conduit not set");
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  local_2c0 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_2d0[0] = 0xa7d;
  local_288 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(puVar2[1],&local_288);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,local_2d0);
}



############ FUN_ 1807585e0 size=531 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807585e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_298[0] = 0x843;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0x138))(param_1,param_2,param_3,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_4;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180758830 size=355 ############

void FUN_180758830(longlong *param_1,undefined4 *param_2,undefined8 *param_3,longlong param_4)

{
  longlong lVar1;
  char *pcVar2;
  undefined8 uVar3;
  int local_res8 [2];
  char *local_res10;
  undefined1 local_58 [24];
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  
  (**(code **)(*param_1 + 0x2a0))(param_1,local_58,param_4,0x19,0);
  local_40 = *param_2;
  uStack_3c = param_2[1];
  uStack_38 = param_2[2];
  uStack_34 = param_2[3];
  local_30 = param_2[4];
  uStack_2c = param_2[5];
  uStack_28 = param_2[6];
  uStack_24 = param_2[7];
  local_res8[0] = (int)param_3[1] - (int)*param_3;
  if (local_res8[0] != 0x10) {
    local_res10 = (char *)FUN_1811316e0(0x18);
    if (local_res10 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res10,"Bad size (%d) of in_vDataToDecrypt");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res10 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res8);
    local_res8[0] = 0x884;
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res8);
  }
  FUN_1805b1a40(param_4 + 0x78,*param_3,param_3[1]);
  (**(code **)(*param_1 + 0x290))(param_1,0x40,local_58,param_4,1);
  return;
}



############ FUN_ 1807589b0 size=1107 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_1807589b0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  uint uVar3;
  int unaff_retaddr;
  undefined1 auStack_2f8 [48];
  undefined8 local_2c8;
  undefined4 local_2b8 [4];
  undefined8 local_2a8;
  undefined8 local_2a0;
  char *local_290;
  undefined8 local_288;
  undefined8 local_280;
  undefined8 local_278;
  undefined8 uStack_270;
  undefined8 local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2f8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  local_288 = param_2;
  local_280 = param_3;
  FUN_180750800(local_1a8);
  local_278 = 0;
  uStack_270 = 0;
  local_268 = 0;
  local_2a0 = 0x181500cec;
  local_2c8 = 0x181500dec;
  local_2a8 = 0xeaa94963;
  do {
    FUN_18075ab9d(0xff08);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  if (*(longlong *)(param_1 + 0x28) != 0) {
    local_288 = 0x493427c5dd5b449;
    local_2b8[0] = 0x5dd5b449;
    FUN_180758e22();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  local_290 = (char *)FUN_1811316e0(0x18);
  if (local_290 != (char *)0x0) {
    FUN_1805a48c0(local_290,"ILok conduit not set");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_290 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_2b8[0] = 0x757;
  local_290 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_2b8);
}



############ FUN_ 18075b300 size=161 ############

void FUN_18075b300(void)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined4 local_28 [2];
  char *local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  local_20 = (char *)FUN_1811316e0(0x18);
  if (local_20 != (char *)0x0) {
    FUN_1805a48c0(local_20,
                  "Need at least a Sarducci subclass to execute EncryptDecryptSerializationData");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_20 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_28[0] = 0xde7;
  local_20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_28);
}



############ FUN_ 18075b3c0 size=1499 ############

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

void FUN_18075b3c0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  uint uVar3;
  longlong lVar4;
  int iVar5;
  char *pcVar6;
  longlong lVar7;
  int unaff_retaddr;
  undefined1 auStack_2f8 [48];
  undefined1 *local_2c8;
  undefined4 local_2c0 [2];
  undefined4 *local_2b8;
  undefined4 local_2b0;
  char *local_2a8;
  undefined8 local_2a0;
  undefined8 local_298;
  undefined8 local_290;
  undefined8 uStack_288;
  undefined8 local_280;
  undefined8 local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2f8;
  local_2b0 = 0x680;
  pcVar6 = (char *)0x0;
  lVar7 = 0xbb0;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  local_2a0 = param_3;
  local_298 = param_4;
  local_278 = param_2;
  FUN_180750800(local_1b8);
  local_290 = 0;
  uStack_288 = 0;
  local_280 = 0;
  lVar4 = 0x393a;
  local_2b8 = &DAT_1815a172c;
  local_2c8 = &LAB_1815a182c;
  if (param_1[5] != 0) {
    local_2c8 = (undefined1 *)0x73b309ff804050d4;
    local_2c0[0] = 0x804050d4;
    iVar5 = (DAT_1815a172c * 0x25 + DAT_1815a1730) * 0x25 + DAT_1815a1734;
    do {
      FUN_18075a750(0xf410,lVar4);
      lVar4 = lVar4 + lVar7;
      lVar7 = (-lVar7 ^ 0xffffffffffffffffU) + 1;
      lVar4 = lVar4 - lVar7;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    do {
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    iVar5 = ((((((((((((((((iVar5 * 0x25 + DAT_1815a1738) * 0x25 + DAT_1815a173c) * 0x25 +
                         DAT_1815a1740) * 0x25 + DAT_1815a1744) * 0x25 + DAT_1815a1748) * 0x25 +
                      DAT_1815a174c) * 0x25 + DAT_1815a1750) * 0x25 + DAT_1815a1754) * 0x25 +
                   DAT_1815a1758) * 0x25 + DAT_1815a175c) * 0x25 + DAT_1815a1760) * 0x25 +
                DAT_1815a1764) * 0x25 + DAT_1815a1768) * 0x25 + DAT_1815a176c) * 0x25 +
             DAT_1815a1770) * 0x25 + DAT_1815a1774) * 0x25 + DAT_1815a1778;
    do {
      FUN_18075cbed(0xf410);
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    (**(code **)(*param_1 + 0xb0))(param_1,local_278,&local_268);
    iVar5 = ((((((iVar5 * 0x25 + DAT_1815a177c) * 0x25 + DAT_1815a1780) * 0x25 + DAT_1815a1784) *
               0x25 + DAT_1815a1788) * 0x25 + DAT_1815a178c) * 0x25 + DAT_1815a1790) * 0x25 +
            DAT_1815a1794;
    (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
    (*(code *)0x18077d839)
              ((((iVar5 * 0x25 + DAT_1815a1798) * 0x25 + DAT_1815a179c) * 0x25 + DAT_1815a17a0) *
               0x25 + DAT_1815a17a4);
    return;
  }
  local_2a8 = (char *)FUN_1811316e0(0x18);
  if (local_2a8 != (char *)0x0) {
    FUN_1805a48c0(local_2a8,"ILok conduit not set");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 != (char *)0x0) {
    local_2a8 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    pcVar6 = pcVar1;
  }
  local_2c0[0] = 0x562;
  local_2a8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_2a8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_2c0);
}



############ FUN_ 18075ea60 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18075ea60(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0x62f;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0xd8))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18075f403 size=891 ############

/* WARNING: Instruction at (ram,0x00018075f7ea) overlaps instruction at (ram,0x00018075f7e7)
    */
/* WARNING: Removing unreachable block (ram,0x00018075f4af) */
/* WARNING: Removing unreachable block (ram,0x00018075f4b5) */
/* WARNING: Removing unreachable block (ram,0x00018075f4bc) */

longlong FUN_18075f403(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                      undefined8 param_5,uint param_6)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  longlong lVar3;
  int *piVar4;
  uint uVar5;
  uint uVar6;
  ulonglong uVar7;
  longlong unaff_RBX;
  longlong unaff_RBP;
  int *unaff_RDI;
  ulonglong in_R10;
  undefined8 in_R11;
  ulonglong unaff_R13;
  longlong unaff_R14;
  bool bVar8;
  char cVar9;
  undefined4 in_stack_00000060;
  char *in_stack_00000068;
  
  uVar5 = (*unaff_RDI + 1) * *unaff_RDI & 0x80000001;
  if ((int)uVar5 < 0) {
    uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
  }
  if (uVar5 != 0) {
    lVar3 = FUN_18075f3ae(0xf804,unaff_RBX + 0x70,&param_6);
    return lVar3;
  }
  do {
    uVar5 = (*(int *)(unaff_RBP + 0x1f8) + 1) * *(int *)(unaff_RBP + 0x1f8) & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  param_6 = (*(uint *)(unaff_RBX + 0xc0) ^
            (*(uint *)(unaff_RBX + 0xbc) ^
            (*(uint *)(unaff_RBX + 0xb8) ^
            (*(uint *)(unaff_RBX + 0xb4) ^
            (*(uint *)(unaff_RBX + 0xb0) ^
            (*(uint *)(unaff_RBX + 0xac) ^
            (*(uint *)(unaff_RBX + 0xa8) ^
            (*(uint *)(unaff_RBX + 0xa4) ^
            (*(uint *)(unaff_RBX + 0xa0) ^
            (*(uint *)(unaff_RBX + 0x9c) ^
            (*(uint *)(unaff_RBX + 0x98) ^
            (*(uint *)(unaff_RBX + 0x94) ^
            (*(uint *)(unaff_RBX + 0x90) ^
            (*(uint *)(unaff_RBX + 0x8c) ^
            (*(uint *)(unaff_RBX + 0x88) ^
            (*(uint *)(unaff_RBX + 0x84) ^
            (*(uint *)(unaff_RBX + 0x80) ^
            (*(uint *)(unaff_RBX + 0x7c) ^
            (*(uint *)(unaff_RBX + 0x78) ^
            (*(uint *)(unaff_RBX + 0x74) ^ param_6 * 0x10001a7) * 0x10001a7) * 0x10001a7) *
            0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
            * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
            0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  if (*(longlong *)(unaff_R14 + 0x28) == 0) {
    in_stack_00000068 = (char *)FUN_1811316e0(0x18,param_2,param_3);
    if (in_stack_00000068 != (char *)0x0) {
      FUN_1805a48c0(in_stack_00000068,"ILok conduit not set");
    }
    puVar1 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar1 == (undefined8 *)0x0) {
      puVar1 = (undefined8 *)0x0;
    }
    else {
      in_stack_00000068 = (char *)puVar1;
      FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
      *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    in_stack_00000060 = 0x47a;
    in_stack_00000068 =
         "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(puVar1[1],&stack0x00000068);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,&stack0x00000060);
  }
  param_6 = (*(uint *)(unaff_RBX + 0xc4) ^ param_6) * 0x10001a7;
  do {
    FUN_180760496();
    FUN_180766a6e();
    uVar5 = (*(int *)(unaff_RBP + 0x1f8) + 1) * *(int *)(unaff_RBP + 0x1f8) & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = (*(uint *)(unaff_RBX + 0xe4) ^
          (*(uint *)(unaff_RBX + 0xe0) ^
          (*(uint *)(unaff_RBX + 0xdc) ^
          (*(uint *)(unaff_RBX + 0xd8) ^
          (*(uint *)(unaff_RBX + 0xd4) ^
          (*(uint *)(unaff_RBX + 0xd0) ^
          (*(uint *)(unaff_RBX + 0xcc) ^ (*(uint *)(unaff_RBX + 200) ^ param_6) * 0x10001a7) *
          0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  param_6 = uVar5;
  do {
    if ((POPCOUNT((ulonglong)uVar5 & 0xff) & 1U) == 0) {
      lVar3 = FUN_18075f7b1(0xf804);
      return lVar3;
    }
    uVar5 = *(uint *)(unaff_RBP + 0x1f8);
    uVar6 = (uVar5 + 1) * uVar5 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  while( true ) {
    uVar5 = (*(uint *)(unaff_RBX + 0xe8) ^ *(uint *)((longlong)register0x00000020 + 0x30)) *
            0x10001a7;
    uVar7 = (ulonglong)uVar5;
    *(uint *)((longlong)register0x00000020 + 0x30) = uVar5;
    *(uint *)((longlong)register0x00000020 + 0x30) =
         (*(uint *)(unaff_RBX + 0xec) ^ uVar5) * 0x10001a7;
    *(undefined8 *)((longlong)register0x00000020 + -8) = in_R11;
    in_R10 = ~-in_R10 + 1;
    cVar9 = in_R10 == 0;
    bVar8 = (POPCOUNT(in_R10 & 0xff) & 1U) == 0;
    *(undefined8 *)((longlong)register0x00000020 + -0x10) = 0x18075f836;
    piVar4 = (int *)FUN_18075f85b();
    if (bVar8) {
      unaff_R13 = ~(~unaff_R13 + 1) + 1;
      cVar9 = unaff_R13 == 0;
    }
    if (uVar7 - 1 == 0 || cVar9 != '\0') break;
    *piVar4 = *piVar4 + (int)piVar4;
    *(int *)(uVar7 - 0x74cfdbb5) = *(int *)(uVar7 - 0x74cfdbb5) + (int)(uVar7 - 1);
    register0x00000020 =
         (BADSPACEBASE *)((ulonglong)((longlong)register0x00000020 + -8) & 0xffffffff);
    *(char *)piVar4 = (char)*piVar4 + (char)piVar4;
  }
  lVar3 = *(longlong *)register0x00000020;
  *(longlong *)register0x00000020 = lVar3 + 0x1d4;
  *(longlong *)((longlong)register0x00000020 + -8) = lVar3 + -0x3a63e;
  *(longlong *)((longlong)register0x00000020 + -0x10) = lVar3 + -0x57fb0;
  *(longlong *)((longlong)register0x00000020 + -0x18) = lVar3 + -0x89e0;
  *(longlong *)((longlong)register0x00000020 + -0x20) = lVar3 + 0x7e3c1;
  *(longlong *)((longlong)register0x00000020 + -0x28) = lVar3 + 0x7238;
  *(longlong *)((longlong)register0x00000020 + -0x30) = lVar3 + -0x19560;
  *(longlong *)((longlong)register0x00000020 + -0x38) = lVar3 + 0x7b768;
  *(longlong *)((longlong)register0x00000020 + -0x40) = lVar3 + -0x44dc4;
  *(longlong *)((longlong)register0x00000020 + -0x48) = lVar3 + 0x6d170;
  return -(((-(longlong)piVar4 ^ 0xffffffffffffffffU) + 1 ^ 0xffffffffffffffff) + 1);
}



############ FUN_ 180761000 size=1553 ############

/* WARNING: Instruction at (ram,0x000180761680) overlaps instruction at (ram,0x00018076167d)
    */
/* WARNING: Removing unreachable block (ram,0x0001807616fe) */
/* WARNING: Removing unreachable block (ram,0x000180761680) */
/* WARNING: Removing unreachable block (ram,0x000180761708) */
/* WARNING: Removing unreachable block (ram,0x0001807616f5) */
/* WARNING: Removing unreachable block (ram,0x0001807618f4) */
/* WARNING: Removing unreachable block (ram,0x000180761105) */
/* WARNING: Removing unreachable block (ram,0x00018076171e) */
/* WARNING: Removing unreachable block (ram,0x0001807616ed) */
/* WARNING: Removing unreachable block (ram,0x00018076172a) */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

char FUN_180761000(longlong param_1,uint *param_2,longlong *param_3,undefined8 *param_4)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint *puVar5;
  char cVar6;
  char *pcVar7;
  char *pcVar8;
  undefined8 uVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  longlong *plVar17;
  ulonglong uVar18;
  char *pcVar19;
  ulonglong uVar20;
  longlong lVar21;
  ulonglong uVar22;
  uint uVar23;
  undefined1 *puVar24;
  int unaff_retaddr;
  ulonglong uStack_b68;
  undefined *puStack_b60;
  undefined1 auStack_b58 [32];
  uint local_b38;
  longlong lStack_b30;
  ulonglong local_b28;
  uint *local_b20;
  undefined8 local_b18;
  int aiStack_b10 [2];
  undefined4 local_b08 [2];
  undefined1 *local_b00;
  undefined8 *local_af8;
  uint local_af0 [2];
  longlong local_ae8;
  undefined4 local_ae0 [2];
  undefined4 local_ad8 [2];
  int iStack_ad0;
  int aiStack_acc [3];
  undefined4 local_ac0;
  undefined4 local_abc;
  int *local_ab8;
  char *local_ab0;
  longlong *local_aa8;
  char *local_aa0;
  char *local_a98;
  undefined1 *local_a90;
  undefined8 *local_a88;
  undefined8 local_a80;
  undefined8 uStack_a78;
  undefined8 local_a70;
  char *pcStack_a68;
  char *apcStack_a60 [2];
  undefined8 local_a50;
  undefined8 *local_a48;
  undefined8 *local_a40;
  undefined8 *local_a38;
  undefined1 auStack_988 [112];
  undefined1 auStack_918 [2240];
  ulonglong local_58;
  
  local_a50 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_b58;
  pcVar19 = (char *)0x0;
  local_ac0 = 0x350;
  local_abc = 0xc20;
  local_ab8 = &DAT_181521750;
  local_b00 = &LAB_181521850;
  local_b18 = 0x32e1cf71;
  local_b28 = 0xcc9e2d51;
  local_af0[0] = (int)param_3[1] - (int)*param_3;
  local_a80 = 0;
  uStack_a78 = 0;
  local_a70 = 0;
  local_b20 = param_2;
  local_ae8 = param_1;
  local_aa8 = param_3;
  local_a90 = local_b00;
  local_a88 = param_4;
  if (local_af0[0] < 0x4c) {
    puStack_b60 = (undefined *)0x180761300;
    local_ab0 = (char *)FUN_1811316e0(0x18);
    pcVar7 = pcVar19;
    if (local_ab0 != (char *)0x0) {
      puStack_b60 = (undefined *)0x180761318;
      pcVar7 = (char *)FUN_1805a48c0(local_ab0,
                                     "Extra result data size (%d) is too small for the GenerateAuthProtocolSignature command"
                                    );
    }
    puStack_b60 = (undefined *)0x18076132a;
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_ab0 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      puStack_b60 = (undefined *)0x180761345;
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar19 = pcVar8;
    }
    puStack_b60 = (undefined *)0x180761362;
    FUN_18060e760(*(undefined8 *)(pcVar7 + 8),local_af0);
    local_ae0[0] = 0x4fd;
    local_ab0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    puStack_b60 = (undefined *)0x180761382;
    uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar19 + 8),&local_ab0);
                    /* WARNING: Subroutine does not return */
    puStack_b60 = &UNK_18076138f;
    FUN_1805b20d0(uVar9,local_ae0);
  }
  puVar11 = (undefined8 *)*param_3;
  uVar9 = puVar11[1];
  *param_4 = *puVar11;
  param_4[1] = uVar9;
  uVar9 = puVar11[3];
  param_4[2] = puVar11[2];
  param_4[3] = uVar9;
  uVar9 = puVar11[5];
  param_4[4] = puVar11[4];
  param_4[5] = uVar9;
  uVar2 = *(undefined4 *)((longlong)puVar11 + 0x34);
  uVar3 = *(undefined4 *)(puVar11 + 7);
  uVar4 = *(undefined4 *)((longlong)puVar11 + 0x3c);
  *(undefined4 *)(param_4 + 6) = *(undefined4 *)(puVar11 + 6);
  *(undefined4 *)((longlong)param_4 + 0x34) = uVar2;
  *(undefined4 *)(param_4 + 7) = uVar3;
  *(undefined4 *)((longlong)param_4 + 0x3c) = uVar4;
  param_4[8] = puVar11[8];
  local_a48 = *(undefined8 **)(param_1 + 0x18);
  puVar11 = local_a48;
  if (*(char *)((longlong)local_a48[1] + 0x19) == '\0') {
    puVar15 = (undefined8 *)local_a48[1];
    do {
      if (*(uint *)(puVar15 + 4) < *param_2) {
        puVar16 = (undefined8 *)puVar15[2];
      }
      else {
        puVar16 = (undefined8 *)*puVar15;
        puVar11 = puVar15;
      }
      puVar15 = puVar16;
    } while (*(char *)((longlong)puVar16 + 0x19) == '\0');
  }
  puVar15 = local_a48;
  puVar16 = local_a48;
  if ((puVar11 != local_a48) && (*(uint *)(puVar11 + 4) <= *param_2)) {
    puVar15 = puVar11;
    puVar16 = local_af8;
    local_a38 = puVar11;
  }
  local_af8 = puVar16;
  local_a40 = local_a48;
  if (puVar15 == local_a48) {
    puStack_b60 = (undefined *)0x18076144b;
    local_aa0 = (char *)FUN_1811316e0(0x18);
    pcVar7 = pcVar19;
    if (local_aa0 != (char *)0x0) {
      puStack_b60 = (undefined *)0x180761463;
      pcVar7 = (char *)FUN_1805a48c0(local_aa0,
                                     "Cert (ID:%d) is not available.  Call GetILokCertChain before starting the auth protocol."
                                    );
    }
    puStack_b60 = (undefined *)0x180761475;
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_aa0 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      puStack_b60 = (undefined *)0x180761490;
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar19 = pcVar8;
    }
    puStack_b60 = (undefined *)0x1807614ad;
    FUN_18060e760(*(undefined8 *)(pcVar7 + 8),local_b20);
    local_ad8[0] = 0x50c;
    local_aa0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    puStack_b60 = (undefined *)0x1807614cc;
    uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar19 + 8),&local_aa0);
                    /* WARNING: Subroutine does not return */
    puStack_b60 = &UNK_1807614d8;
    FUN_1805b20d0(uVar9,local_ad8);
  }
  puStack_b60 = (undefined *)0x180761517;
  plVar10 = (longlong *)FUN_180751080(param_1 + 0x18,param_2);
  puStack_b60 = (undefined *)0x180761520;
  cVar6 = (**(code **)(*plVar10 + 0x10))(plVar10);
  if (cVar6 == '\0') {
    puStack_b60 = (undefined *)0x180761532;
    local_a98 = (char *)FUN_1811316e0(0x18);
    pcVar7 = pcVar19;
    if (local_a98 != (char *)0x0) {
      puStack_b60 = (undefined *)0x18076154a;
      pcVar7 = (char *)FUN_1805a48c0(local_a98,
                                     "Cert (ID:%d) is not privileged to be used in the authorization protocol."
                                    );
    }
    puStack_b60 = (undefined *)0x18076155c;
    pcVar8 = (char *)FUN_1811316e0(0x18);
    local_a98 = pcVar8;
    if (pcVar8 != (char *)0x0) {
      puStack_b60 = (undefined *)0x180761577;
      FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
      pcVar19 = pcVar8;
    }
    puStack_b60 = (undefined *)0x180761594;
    FUN_18060e760(*(undefined8 *)(pcVar7 + 8),local_b20);
    local_b08[0] = 0x514;
    local_a98 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    puStack_b60 = (undefined *)0x1807615b4;
    uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar19 + 8),&local_a98);
                    /* WARNING: Subroutine does not return */
    puStack_b60 = &UNK_1807615c1;
    FUN_1805b20d0(uVar9,local_b08);
  }
  puVar24 = &DAT_e6546b64;
  uVar12 = (DAT_181521750 * 0x16a88000 | (uint)(DAT_181521750 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           0x11bdecbe;
  uVar12 = (DAT_181521754 * 0x16a88000 | (uint)(DAT_181521754 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  local_b38 = (DAT_181521758 * 0x16a88000 | (uint)(DAT_181521758 * -0x3361d2af) >> 0x11) *
              0x1b873593;
  uVar12 = local_b38 ^ (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_b38 = (_UNK_18152175c * 0x16a88000 | (uint)(_UNK_18152175c * -0x3361d2af) >> 0x11) *
              0x1b873593;
  local_b38 = local_b38 ^ (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = (_UNK_181521760 * (int)local_b28 * 0x8000 |
           (uint)(_UNK_181521760 * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (local_b38 << 0xd | local_b38 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (_UNK_181521764 * (int)local_b28 * 0x8000 |
           (uint)(_UNK_181521764 * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (_UNK_181521768 * (int)local_b28 * 0x8000 |
           (uint)(_UNK_181521768 * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  local_b38 = (_UNK_18152176c * (int)local_b28 * 0x8000 |
              (uint)(_UNK_18152176c * (int)local_b28) >> 0x11) * 0x1b873593;
  uVar12 = local_b38 ^ (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    puStack_b60 = &UNK_1807617fc;
    FUN_180766a6e();
    puStack_b60 = &UNK_18076181a;
    func_0x000180762cce();
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar12 = (_UNK_181521770 * (int)local_b28 * 0x8000 |
           (uint)(_UNK_181521770 * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (_UNK_181521774 * (int)local_b28 * 0x8000 |
           (uint)(_UNK_181521774 * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (_UNK_181521778 * (int)local_b28 * 0x8000 |
           (uint)(_UNK_181521778 * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar13 = (_UNK_18152177c * (int)local_b28 * 0x8000 |
           (uint)(_UNK_18152177c * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar23 = (uint)local_b00;
  local_b18 = CONCAT44(local_b18._4_4_,uVar23) & 0xffffffff0000000f;
  uVar12 = uVar23 & 0x3f;
  iVar14 = (uVar12 + 2) * (uVar12 + 1) * uVar12;
  uVar12 = ((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e ^
           ((uVar23 & 0x7ff) * (uVar23 & 0x7ff) * 0x10 + 4) % 0x13;
  uVar22 = (ulonglong)uVar12;
  uVar20 = (ulonglong)(((int)(-uVar12 | uVar12) >> 0x1f ^ 0xffffff7fU) & 0xae98);
  uVar12 = (*(int *)(&UNK_181521700 + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_181521700 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar13 << 0xd | uVar13 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&UNK_181521704 + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_181521704 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&UNK_181521708 + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_181521708 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&UNK_18152170c + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_18152170c + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&UNK_181521710 + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_181521710 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (*(int *)(&UNK_181521714 + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_181521714 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  local_b38 = (*(int *)(&UNK_181521718 + uVar20) * (int)local_b28 * 0x8000 |
              (uint)(*(int *)(&UNK_181521718 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593;
  uVar12 = local_b38 ^ (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    puStack_b60 = &UNK_180761a8b;
    func_0x000180762fcc();
    puStack_b60 = &UNK_180761a93;
    FUN_18075e140();
    puStack_b60 = &UNK_180761aaf;
    func_0x00018075fbe4();
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_aa8 = (longlong *)0x63aec6abd59600ec;
  local_b08[0] = 0xd59600ec;
  local_b38 = (*(int *)(&UNK_18152171c + uVar20) * (int)local_b28 * 0x8000 |
              (uint)(*(int *)(&UNK_18152171c + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593;
  uVar12 = local_b38 ^ (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
                    /* WARNING: Call to offcut address within same function */
    puStack_b60 = &UNK_180761b11;
    func_0x00018076188f();
    puStack_b60 = &UNK_180761b2f;
    func_0x00018076258a();
    puVar5 = local_b20;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  iVar14 = (int)local_b28;
  uVar18 = local_b28 & 0xffffffff;
  uVar12 = (*(int *)(&UNK_181521720 + uVar20) * (int)local_b28 * 0x8000 |
           (uint)(*(int *)(&UNK_181521720 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593 ^
           (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  uVar12 = (uVar12 << 0xd | uVar12 >> 0x13) * 5 + 0xe6546b64;
  do {
    puVar24 = (undefined1 *)((~(ulonglong)puVar24 + 1 ^ 0xffffffffffffffff) + 1);
    uVar12 = (~uVar12 + 1 ^ 0xffffffff) + 1;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_b38 = (*(int *)(&UNK_181521724 + uVar20) * (int)local_b28 * 0x8000 |
              (uint)(*(int *)(&UNK_181521724 + uVar20) * (int)local_b28) >> 0x11) * 0x1b873593;
  uVar12 = local_b38 ^ uVar12;
  iVar1 = (int)puVar24;
  puStack_b60 = &UNK_180761c0b;
  plVar10 = (longlong *)FUN_180751080(local_ae8 + 0x18,local_b20,uVar22);
  puStack_b60 = &UNK_180761c24;
  (**(code **)(*plVar10 + 0x38))(plVar10,puVar5[1],&iStack_ad0,auStack_988);
  local_b38 = (*(int *)(&UNK_181521728 + uVar20) * iVar14 * 0x8000 |
              (uint)(*(int *)(&UNK_181521728 + uVar20) * iVar14) >> 0x11) * 0x1b873593;
  uVar12 = local_b38 ^ iVar1 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
  if (iStack_ad0 != -1) {
    puStack_b60 = &UNK_180761d38;
    FUN_180738860(auStack_918,local_b20[1]);
    puStack_b60 = (undefined *)0x180761d45;
    aiStack_b10[0] = FUN_180741570(auStack_918);
    uVar12 = (*(int *)(&UNK_18152172c + uVar20) * iVar14 * 0x8000 |
             (uint)(*(int *)(&UNK_18152172c + uVar20) * iVar14) >> 0x11) * 0x1b873593 ^
             iVar1 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar12 = (*(int *)(&UNK_181521730 + uVar20) * iVar14 * 0x8000 |
             (uint)(*(int *)(&UNK_181521730 + uVar20) * iVar14) >> 0x11) * 0x1b873593 ^
             iVar1 + (uVar12 << 0xd | uVar12 >> 0x13) * 5;
    uVar13 = *(int *)(&UNK_181521734 + uVar20) * iVar14;
    if (((uint)(&UNK_181521734 + uVar20) >> 10 & 1) == 0) {
      uVar12 = iVar1 + (((uVar13 * 0x8000 | uVar13 >> 0x11) * 0x1b873593 ^
                        iVar1 + (uVar12 << 0xd | uVar12 >> 0x13) * 5) >> 0x13) * 5 & 0x11ff;
      uVar12 = (uVar12 - 1) * uVar12 - 1 & 1;
    }
    else {
      uVar12 = (uint)local_b00 & 7 | 0x25;
      uVar12 = ((uint)local_b18 | 0x17) * ((uint)local_b18 | 0x17) * 0x66f5 ^
               uVar12 * uVar12 * 0xfadf;
    }
    lVar21 = uVar20 + 0x181521c34 +
             ((longlong)(((int)(-uVar12 | uVar12) >> 0x1f) * -0x8991) ^ 0xffffffffffff7295U);
    uVar12 = *(int *)(lVar21 + 0x10) * iVar14;
    local_b38 = (uVar12 * 0x8000 | uVar12 >> 0x11) * 0x1b873593;
    aiStack_acc[0] = aiStack_b10[0];
    if (aiStack_b10[0] - 1U < 0x20) {
      uVar12 = *(int *)(lVar21 + 0x14) * iVar14;
      local_b38 = (uVar12 * 0x8000 | uVar12 >> 0x11) * 0x1b873593;
      uStack_b68 = uVar18;
      puStack_b60 = puVar24;
                    /* WARNING: Call to offcut address within same function */
      cVar6 = func_0x000180761fed();
      plVar17 = (longlong *)(ulonglong)((int)&uStack_b68 - 0x28);
      lVar21 = plVar17[5];
      plVar17[5] = lVar21 + 0x223;
      plVar17[4] = lVar21 + -0x14afe;
      plVar17[3] = lVar21 + -0x49848;
      plVar17[2] = lVar21 + 0x356ba;
      plVar17[1] = lVar21 + -0x36234;
      *plVar17 = lVar21 + 0x3c8ef;
      plVar17[-1] = lVar21 + -0xb173;
      plVar17[-2] = lVar21 + 0xa1ff;
      plVar17[-3] = lVar21 + -0x1b716;
      return cVar6 * '\x02' +
             (0xfffffffffffffffe < ~(((ulonglong)&stack0x00000000 ^ 0xffffffffffffffff) + 1));
    }
    puStack_b60 = (undefined *)0x180761ebc;
    local_af8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_af8 == (undefined8 *)0x0) {
      lStack_b30 = 0;
    }
    else {
      puStack_b60 = (undefined *)0x180761ed5;
      lStack_b30 = FUN_1805a48c0(local_af8,
                                 "The hash size (%d) is for the PKStandardID (%d) is out of range");
    }
    puStack_b60 = (undefined *)0x180761eeb;
    puVar11 = (undefined8 *)FUN_1811316e0(0x18);
    local_af8 = puVar11;
    if (puVar11 == (undefined8 *)0x0) {
      puVar11 = (undefined8 *)0x0;
    }
    else {
      puStack_b60 = (undefined *)0x180761f07;
      FUN_1805a48c0(puVar11,"|__FILE__|%s|__LINE__|%d");
      *puVar11 = pace::PaceLocationInfoFormatter::vftable;
    }
    puStack_b60 = (undefined *)0x180761f28;
    FUN_18060e760(*(undefined8 *)(lStack_b30 + 8),aiStack_acc);
    puStack_b60 = (undefined *)0x180761f3f;
    FUN_18060e760(*(undefined8 *)(lStack_b30 + 8),local_b20 + 1);
    aiStack_acc[1] = 0x531;
    apcStack_a60[0] =
         "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    puStack_b60 = (undefined *)0x180761f5e;
    uVar9 = FUN_1805a21d0(puVar11[1],apcStack_a60);
                    /* WARNING: Subroutine does not return */
    puStack_b60 = &UNK_180761f6a;
    FUN_1805b20d0(uVar9,aiStack_acc + 1);
  }
  puStack_b60 = &UNK_180761c61;
  local_af8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_af8 == (undefined8 *)0x0) {
    lStack_b30 = 0;
  }
  else {
    puStack_b60 = (undefined *)0x180761c7a;
    lStack_b30 = FUN_1805a48c0(local_af8,
                               "Cert (ID:%d) does not have a public key with the requested PKStandardID (%d)"
                              );
  }
  puStack_b60 = (undefined *)0x180761c90;
  puVar11 = (undefined8 *)FUN_1811316e0(0x18);
  local_af8 = puVar11;
  if (puVar11 == (undefined8 *)0x0) {
    puVar11 = (undefined8 *)0x0;
  }
  else {
    puStack_b60 = (undefined *)0x180761cac;
    FUN_1805a48c0(puVar11,"|__FILE__|%s|__LINE__|%d");
    *puVar11 = pace::PaceLocationInfoFormatter::vftable;
  }
  puStack_b60 = (undefined *)0x180761cce;
  FUN_18060e760(*(undefined8 *)(lStack_b30 + 8),local_b20);
  puStack_b60 = (undefined *)0x180761ce5;
  FUN_18060e760(*(undefined8 *)(lStack_b30 + 8),local_b20 + 1);
  aiStack_b10[0] = 0x526;
  pcStack_a68 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  puStack_b60 = (undefined *)0x180761d05;
  uVar9 = FUN_1805a21d0(puVar11[1],&pcStack_a68);
                    /* WARNING: Subroutine does not return */
  puStack_b60 = &UNK_180761d12;
  FUN_1805b20d0(uVar9,aiStack_b10);
}



############ FUN_ 180762fe0 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180762fe0(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xb4a;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x1c0))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180763290 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180763290(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xbc1;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x1e0))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180763540 size=1895 ############

/* WARNING: Instruction at (ram,0x00018076382b) overlaps instruction at (ram,0x000180763828)
    */
/* WARNING: Removing unreachable block (ram,0x0001807635c7) */
/* WARNING: Removing unreachable block (ram,0x000180763637) */

void FUN_180763540(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  longlong lVar1;
  char *pcVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  char *pcVar7;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_318 [48];
  uint local_2e8;
  undefined4 *local_2e0;
  undefined *local_2d8;
  uint local_2d0;
  undefined4 local_2cc;
  undefined8 local_2c0;
  undefined *local_2b8;
  undefined4 local_2b0 [2];
  undefined4 local_2a8;
  undefined4 local_2a4;
  code *local_2a0;
  longlong *local_298;
  char *local_290;
  undefined8 local_288;
  undefined8 local_280;
  undefined8 uStack_278;
  undefined8 local_270;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [376];
  ulonglong local_40;
  
  local_1c8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_318;
  local_2a8 = 0xb70;
  local_2a4 = 0x410;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar7 = (char *)0x0;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  local_298 = param_1;
  local_288 = param_3;
  FUN_180750800(local_1b8);
  local_280 = 0;
  uStack_278 = 0;
  local_270 = 0;
  local_2d8 = (undefined *)0x0;
  local_2c0 = 0x1da60e8;
  local_2b8 = &DAT_181da60e8;
  local_2e0 = &DAT_181dae0d8;
  do {
    FUN_180765631();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_2d8 = (undefined *)0xb60ee338073f75d;
  local_2c0 = CONCAT44(local_2c0._4_4_,0x8073f75d);
  do {
    FUN_18076402a();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  if (param_1[5] != 0) {
    (**(code **)(*param_1 + 200))(param_1,param_2,&local_268);
    local_2e8 = 0x722b17a3;
    local_2cc = 0x5b6e64c8;
    (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
    local_2d8 = local_2b8;
    uVar6 = local_2e8 >> 0x11 | local_2e8 << 0xf;
    uVar5 = (local_2e8 & 0x1ffff) >> 1;
    uVar6 = ((local_2e8 & 0x1ffff) >> 1 | uVar6 << 0x10) & 0xeae3151c |
            (uVar6 << 0x10 | uVar5) & 0x151ceae3;
    local_2e0 = (undefined4 *)
                CONCAT44(local_2e0._4_4_,
                         (uVar6 & 0x26666666) << 2 | local_2e8 >> 0x1f |
                         (uVar6 >> 2 | uVar5 << 0x1e) & 0x66666666);
    local_2cc = 0x1b873593;
    do {
      uVar3 = rdtsc();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x3b3113ad;
    local_2d0 = (uVar5 >> 0x18 ^ uVar5) * -0x7a1412ab;
    if (local_2d0 < 0x7fffffff) {
      do {
        local_2a0 = FUN_18141db20;
        uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar5 < 0) {
          uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar5 != 0);
      local_2e8 = 0xcc9e2d51;
      uVar4 = FUN_18141db20();
      if (1 < uVar4) {
        lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
        while (lVar1 != -0x3333333333333334) {
          *(longlong *)register0x00000020 = 0;
          register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
          lVar1 = *(longlong *)register0x00000020;
        }
      }
    }
    return;
  }
  local_290 = (char *)FUN_1811316e0(0x18);
  if (local_290 != (char *)0x0) {
    FUN_1805a48c0(local_290,"ILok conduit not set");
  }
  pcVar2 = (char *)FUN_1811316e0(0x18);
  if (pcVar2 != (char *)0x0) {
    local_290 = pcVar2;
    FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    pcVar7 = pcVar2;
  }
  local_2b0[0] = 0x5f1;
  local_290 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,local_2b0);
}



############ FUN_ 1807671e0 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807671e0(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xb88;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x1d0))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180767490 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180767490(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xbfa;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x1f0))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180767740 size=545 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180767740(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_298[0] = 0x363;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0x70))(param_1,param_2,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  (**(code **)(*param_1 + 0x78))(param_1,param_3,&local_288,param_4);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180767af0 size=899 ############

void FUN_180767af0(longlong *param_1,uint *param_2,longlong *param_3,longlong *param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  void *_Memory;
  undefined8 *puVar7;
  int iVar8;
  ulonglong uVar9;
  longlong local_res18;
  char *local_res20;
  undefined1 local_50 [16];
  longlong local_40;
  
  uVar9 = param_3[1] - *param_3;
  iVar8 = (int)uVar9;
  local_res18 = CONCAT44(local_res18._4_4_,iVar8);
  if (param_4 != param_3) {
    FUN_1805e1990(param_4,*param_3,param_3[1],param_4,0xfffffffffffffffe);
  }
  if (iVar8 == 0) {
    if (*(char *)((longlong)param_1 + 0x3f1) != '\0') {
      puVar1 = (undefined8 *)param_1[3];
      puVar7 = puVar1;
      if (*(char *)((longlong)puVar1[1] + 0x19) == '\0') {
        puVar5 = (undefined8 *)puVar1[1];
        do {
          if (*(uint *)(puVar5 + 4) < *param_2) {
            puVar6 = (undefined8 *)puVar5[2];
          }
          else {
            puVar6 = (undefined8 *)*puVar5;
            puVar7 = puVar5;
          }
          puVar5 = puVar6;
        } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
      }
      if ((puVar7 == puVar1) || (*param_2 < *(uint *)(puVar7 + 4))) {
        puVar7 = puVar1;
      }
      lVar2 = 0;
      if (puVar7 == puVar1) {
        local_res18 = FUN_1811316e0(0x18);
        if (local_res18 != 0) {
          lVar2 = FUN_1805a48c0(local_res18,
                                "Cert Chain (ID:%d) is not available, but was supposed to be cached."
                               );
        }
        lVar3 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2);
        local_res18 = CONCAT44(local_res18._4_4_,0x402);
        local_res20 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
        uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar4,&local_res18);
      }
      lVar3 = FUN_180751080(param_1 + 3,param_2);
      FUN_1805b46a0(local_50,lVar3 + 0x10);
      if (param_4 == (longlong *)local_50) {
        if ((void *)local_50._0_8_ != (void *)0x0) {
          _Memory = (void *)local_50._0_8_;
          if ((0xfff < (ulonglong)(local_40 - local_50._0_8_)) &&
             (_Memory = *(void **)(local_50._0_8_ + -8),
             0x1f < (ulonglong)(local_50._0_8_ + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      else {
        FUN_180575ed0(param_4);
        *param_4 = local_50._0_8_;
        param_4[1] = local_50._8_8_;
        param_4[2] = local_40;
      }
      if (param_4[1] - *param_4 != (ulonglong)param_2[3]) {
        local_res18 = FUN_1811316e0(0x18);
        if (local_res18 != 0) {
          lVar2 = FUN_1805a48c0(local_res18,
                                "Cert Chain (ID:%d) is cached but its size (%d) does not match iLok\'s claimed size (%d)"
                               );
        }
        lVar3 = FUN_1805c0260();
        local_res18 = param_4[1] - *param_4;
        FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2);
        FUN_1805b2520(*(undefined8 *)(lVar2 + 8),&local_res18);
        FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 3);
        local_res18 = CONCAT44(local_res18._4_4_,0x40f);
        local_res20 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
        uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar4,&local_res18);
      }
    }
  }
  else {
    lVar2 = 0;
    if ((uVar9 & 0xffffffff) < (ulonglong)param_2[3] + 4) {
      local_res20 = (char *)FUN_1811316e0(0x18);
      if (local_res20 != (char *)0x0) {
        lVar2 = FUN_1805a48c0(local_res20,
                              "Extra result data size (%d) is too small for the GetILokCertChain command"
                             );
      }
      lVar3 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),&local_res18);
      local_res18 = CONCAT44(local_res18._4_4_,0x3e2);
      local_res20 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,&local_res18);
    }
    FUN_1805b0f50(param_4,param_2[3],param_4);
    (**(code **)(*param_1 + 0x268))(param_1,param_4,*param_2,0);
    lVar3 = FUN_180751080(param_1 + 3,param_2);
    local_50 = *(undefined1 (*) [16])(lVar3 + 400);
    if (param_2[1] != local_50._12_4_) {
      local_res18 = FUN_1811316e0(0x18);
      if (local_res18 != 0) {
        lVar2 = FUN_1805a48c0(local_res18,
                              "Cert (ID:%d): the cert\'s issue number (0x%08X) doen\'t match the iLok claimed issue number (0x%08X)"
                             );
      }
      lVar3 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2);
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),local_50 + 0xc);
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),param_2 + 1);
      local_res18 = CONCAT44(local_res18._4_4_,0x3f4);
      local_res20 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,&local_res18);
    }
  }
  return;
}



############ FUN_ 180769cd0 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180769cd0(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xc72;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x210))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180769f80 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180769f80(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xc39;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x200))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18076b650 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18076b650(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0x671;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0xe8))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18076b900 size=837 ############

/* WARNING: Instruction at (ram,0x00018076bbf5) overlaps instruction at (ram,0x00018076bbf4)
    */
/* WARNING: Removing unreachable block (ram,0x00018076bbef) */

void FUN_18076b900(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  int iVar4;
  longlong in_R10;
  int unaff_retaddr;
  undefined1 auStack_318 [56];
  undefined *local_2e0;
  undefined *local_2d8;
  undefined4 local_2c8 [2];
  undefined8 *local_2c0;
  uint local_2b8;
  uint local_2b4;
  longlong local_2b0;
  undefined8 local_2a8;
  undefined8 local_2a0;
  undefined8 local_298;
  undefined8 uStack_290;
  undefined8 local_288;
  char *local_280;
  undefined **local_278;
  undefined **local_270;
  undefined8 local_268;
  undefined8 local_260;
  undefined8 local_258;
  undefined4 local_250;
  undefined2 local_24c;
  undefined1 local_24a;
  undefined **local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined8 uStack_230;
  undefined4 local_228;
  undefined2 local_224;
  undefined1 local_222;
  undefined4 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined4 local_1e8;
  undefined1 local_1e4;
  undefined8 local_1d8;
  undefined1 local_1c8 [376];
  ulonglong local_50;
  
  local_1d8 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_318;
  uVar3 = 0;
  uVar1 = (uint)&stack0x00000000 & 0x3bff;
  uVar1 = ((uVar1 + 1) * uVar1 + 7) % 0x51;
  local_2b8 = (int)(-uVar1 | uVar1) >> 0x1f & 0xb8acU ^ 0xbc0c;
  if (((ulonglong)&stack0x00000000 & 0x3b0) == 0) {
    uVar1 = (uint)&stack0x00000000 & 0x11ff;
    iVar4 = uVar1 * uVar1 + 1;
    uVar1 = iVar4 * 0x24924924 + (iVar4 >> 4) + (iVar4 >> 1) >> 0x1d;
    uVar1 = (int)(uVar1 - 7) >> 0x1f & uVar1;
  }
  else {
    uVar1 = 1;
  }
  local_2b4 = ((int)(-uVar1 | uVar1) >> 0x1f) * -0x1b8c ^ 0x1c8c;
  local_278 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_270 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_268 = 0;
  local_260 = 0;
  local_258 = 0;
  local_250 = 0;
  local_24c = 0;
  local_24a = 0;
  local_248 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_240 = 0;
  local_238 = 0;
  uStack_230 = 0;
  local_228 = 0;
  local_224 = 0;
  local_222 = 0;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  local_1e4 = 0;
  local_2b0 = param_1;
  local_2a0 = param_4;
  FUN_180750800(local_1c8);
  local_298 = 0;
  uStack_290 = 0;
  local_288 = 0;
  if (*(longlong *)(param_1 + 0x28) != 0) {
    local_2a8 = 0;
    local_2d8 = &DAT_181d96108;
    local_2e0 = &DAT_181d9e0f8;
    do {
      uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar1 < 0) {
        uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar1 != 0);
    FUN_18076bc68(0,0x180000000,uVar3);
                    /* WARNING: Could not recover jumptable at 0x00018076bddc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)(in_R10 + 999))();
    return;
  }
  local_2c0 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_2c0 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_2c0,"ILok conduit not set");
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  local_2c0 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_2c8[0] = 0x7a2;
  local_280 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(puVar2[1],&local_280);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,local_2c8);
}



############ FUN_ 180770320 size=317 ############

void FUN_180770320(longlong *param_1,undefined8 *param_2,longlong param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *local_res8;
  char *local_res10;
  undefined1 local_58 [24];
  undefined8 local_40;
  
  if (((byte)*(undefined4 *)((longlong)param_1 + 0x3c4) & 0xf) == 0xd) {
    (**(code **)(*param_1 + 0x2a0))(param_1,local_58,param_3,6,0);
    local_40 = FUN_180766750();
    *param_2 = local_40;
    *(undefined1 *)(param_3 + 0x28) = 1;
    (**(code **)(*param_1 + 0x290))(param_1,0x20,local_58,param_3,1);
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"This command requires the use of the authority connection");
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x22f);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 180770470 size=286 ############

void FUN_180770470(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *local_res8;
  char *local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  if (param_1[5] != 0) {
    (**(code **)(*param_1 + 0x48))(param_1,param_2,param_5);
    (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],param_5,param_6);
    FUN_180750e00(param_3,param_1 + 7);
    FUN_180750ed0(param_4,param_1 + 0x1a);
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"ILok conduit not set");
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x20f);
  local_28 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_28);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 1807705a0 size=1382 ############

void FUN_1807705a0(longlong param_1,longlong param_2,char param_3,undefined4 *param_4,
                  undefined8 param_5,undefined8 param_6)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined1 auStack_c98 [64];
  undefined4 *local_c58;
  char *local_c50;
  undefined4 local_c48;
  uint local_c40 [2];
  uint local_c38 [2];
  undefined8 *local_c30;
  undefined8 local_c28;
  longlong local_c20;
  char *local_c18;
  longlong local_c10;
  uint local_c08;
  undefined8 local_bf8;
  undefined4 local_ba8;
  longlong local_ba0;
  undefined4 local_b98;
  uint uStack_b94;
  undefined4 uStack_b90;
  undefined4 uStack_b8c;
  undefined8 local_b88;
  undefined8 uStack_b80;
  undefined4 local_b78;
  undefined4 uStack_b74;
  undefined4 uStack_b70;
  undefined4 uStack_b6c;
  undefined4 local_b68;
  undefined4 uStack_b64;
  undefined4 uStack_b60;
  undefined4 uStack_b5c;
  undefined8 local_b58;
  ulonglong local_48;
  
  local_b58 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_c98;
  local_c28 = param_5;
  local_bf8 = param_6;
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 0xffffffff;
  }
  local_c20 = *(longlong *)(param_2 + 0x130) - *(longlong *)(param_2 + 0x128);
  local_c48 = (undefined4)local_c20;
  local_ba0 = *(longlong *)(param_2 + 0x148) - *(longlong *)(param_2 + 0x140);
  local_ba8 = (undefined4)local_ba0;
  puVar4 = (undefined8 *)0x0;
  local_c58 = param_4;
  local_c10 = param_2;
  if (*(longlong *)(param_1 + 0x10) == 0) {
    local_c30 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_c30 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_c30,
                    "There are no pending iLok2 commands; so no result packet cannot be processed");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_c30 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_c38[0] = 0x1019;
    local_c18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],&local_c18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_c38);
  }
  if ((*(longlong *)(param_1 + 0x3a8) != 0) &&
     (*(longlong *)(param_2 + 0x10) != *(longlong *)(param_1 + 0x3a8))) {
    local_c30 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_c30 != (undefined8 *)0x0) {
      puVar4 = (undefined8 *)
               FUN_1805a48c0(local_c30,
                             "The result packet\'s SerialNumber (0x%X) does not match the SerialNumber (0x%X) expected by ILok2Commander"
                            );
    }
    lVar5 = FUN_1805c0260();
    local_c18 = *(char **)(local_c10 + 0x10);
    FUN_1805b2520(puVar4[1],&local_c18);
    FUN_1805b2520(puVar4[1],param_1 + 0x3a8);
    local_c38[0] = 0x1024;
    local_c18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_c18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_c38);
  }
  if (*(int *)(param_2 + 0x18) != *(int *)(param_1 + 0x3c4)) {
    local_c30 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_c30 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_c30,"Result packet ConnectionID does not match that of the ILok2Commander"
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_c30 = puVar2;
    if (puVar2 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
      puVar4 = puVar2;
    }
    local_c38[0] = 0x1029;
    local_c18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar3 = FUN_1805a21d0(puVar4[1],&local_c18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_c38);
  }
  if (*(int *)(param_2 + 0x20) == 2) {
    lVar5 = **(longlong **)(param_1 + 8);
    local_b98 = *(undefined4 *)(lVar5 + 0x10);
    uStack_b94 = *(uint *)(lVar5 + 0x14);
    uStack_b90 = *(undefined4 *)(lVar5 + 0x18);
    uStack_b8c = *(undefined4 *)(lVar5 + 0x1c);
    local_b88 = *(undefined8 *)(lVar5 + 0x20);
    uStack_b80 = *(undefined8 *)(lVar5 + 0x28);
    local_b78 = *(undefined4 *)(lVar5 + 0x30);
    uStack_b74 = *(undefined4 *)(lVar5 + 0x34);
    uStack_b70 = *(undefined4 *)(lVar5 + 0x38);
    uStack_b6c = *(undefined4 *)(lVar5 + 0x3c);
    local_b68 = *(undefined4 *)(lVar5 + 0x40);
    uStack_b64 = *(undefined4 *)(lVar5 + 0x44);
    uStack_b60 = *(undefined4 *)(lVar5 + 0x48);
    uStack_b5c = *(undefined4 *)(lVar5 + 0x4c);
    local_c40[0] = uStack_b94 & 0x7fffffff;
    local_c18 = (char *)(ulonglong)local_c40[0];
    local_c38[0] = *(uint *)(param_2 + 0x1c);
    local_c08 = local_c38[0];
    if (param_3 == '\0') {
      if (local_c38[0] < local_c40[0]) {
        local_c30 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_c30 != (undefined8 *)0x0) {
          puVar4 = (undefined8 *)
                   FUN_1805a48c0(local_c30,
                                 "Result packet (seq# %d) is for a command already removed from the command queue (seq# %d)"
                                );
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(puVar4[1],local_c38);
        FUN_18060e760(puVar4[1],local_c40);
        local_c40[0] = 0x104c;
        local_c50 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
        uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_c50);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar3,local_c40);
      }
      if (*(uint *)(param_1 + 0x3d8) <= local_c38[0]) {
        local_c30 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_c30 != (undefined8 *)0x0) {
          puVar4 = (undefined8 *)
                   FUN_1805a48c0(local_c30,
                                 "Result packet (seq# %d) is for a command not queued (seq# %d) yet"
                                );
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(puVar4[1],local_c38);
        FUN_18060e760(puVar4[1],param_1 + 0x3d8);
        local_c40[0] = 0x1052;
        local_c50 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
        uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_c50);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar3,local_c40);
      }
      if (local_c40[0] != local_c38[0]) {
        plVar1 = (longlong *)**(undefined8 **)(param_1 + 8);
        *(longlong *)plVar1[1] = *plVar1;
        *(longlong *)(*plVar1 + 8) = plVar1[1];
        *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
                    /* WARNING: Subroutine does not return */
        free(plVar1);
      }
    }
    else if (local_c38[0] != local_c40[0]) {
      local_c30 = (undefined8 *)FUN_1811316e0(0x18);
      if (local_c30 != (undefined8 *)0x0) {
        FUN_1805a48c0(local_c30,"Result packet is out of sequence with next queued command");
      }
      lVar5 = FUN_1805c0260();
      local_c40[0] = 0x1040;
      local_c50 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_c50);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,local_c40);
    }
    plVar1 = (longlong *)**(undefined8 **)(param_1 + 8);
    *(longlong *)plVar1[1] = *plVar1;
    *(longlong *)(*plVar1 + 8) = plVar1[1];
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
                    /* WARNING: Subroutine does not return */
    free(plVar1);
  }
  local_c30 = (undefined8 *)FUN_1811316e0(0x18);
  puVar2 = puVar4;
  if (local_c30 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)
             FUN_1805a48c0(local_c30,
                           "Wrong iLok interface version (%d) in the result packet.  Expected version 2"
                          );
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x18);
  local_c30 = puVar6;
  if (puVar6 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar6,"|__FILE__|%s|__LINE__|%d");
    *puVar6 = pace::PaceLocationInfoFormatter::vftable;
    puVar4 = puVar6;
  }
  local_c38[0] = *(uint *)(local_c10 + 0x20);
  FUN_18060e760(puVar2[1],local_c38);
  local_c38[0] = 0x102f;
  local_c18 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(puVar4[1],&local_c18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,local_c38);
}



############ FUN_ 1807766d0 size=591 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807766d0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  undefined1 auStack_2d8 [32];
  undefined ***local_2b8;
  void **local_2b0;
  undefined4 local_2a8 [2];
  char *local_2a0;
  void *local_298;
  undefined8 uStack_290;
  longlong local_288;
  undefined8 local_280;
  undefined8 local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2d8;
  local_278 = param_6;
  local_280 = param_7;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_298 = (void *)0x0;
  uStack_290 = 0;
  local_288 = 0;
  if (param_1[5] == 0) {
    local_2a0 = (char *)FUN_1811316e0(0x18);
    if (local_2a0 != (char *)0x0) {
      FUN_1805a48c0(local_2a0,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      local_2a0 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_2a8[0] = 0x8a0;
    local_2a0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_2a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_2a8);
  }
  local_2b8 = &local_268;
  (**(code **)(*param_1 + 0x148))(param_1,param_2,param_3,param_4);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2b0 = &local_298;
  local_2b8 = (undefined ***)param_5;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  local_2b8 = (undefined ***)local_280;
  (**(code **)(*param_1 + 0x150))(param_1,param_5,&local_298,local_278);
  if (local_298 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_298;
  if ((0xfff < (ulonglong)(local_288 - (longlong)local_298)) &&
     (_Memory = *(void **)((longlong)local_298 + -8),
     0x1f < (ulonglong)((longlong)local_298 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180776960 size=749 ############

void FUN_180776960(longlong *param_1,undefined4 *param_2,longlong *param_3,undefined8 *param_4,
                  char *param_5)

{
  void **ppvVar1;
  int iVar2;
  char *pcVar3;
  char *pcVar4;
  undefined8 uVar5;
  char *pcVar6;
  longlong lVar7;
  void *_Memory;
  char *local_res8;
  longlong local_res10;
  longlong *local_res18;
  void **local_a8;
  longlong **pplStack_a0;
  void *local_98;
  undefined8 uStack_90;
  longlong local_88;
  undefined1 local_78 [24];
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined4 local_40;
  
  lVar7 = (longlong)param_5;
  local_98 = (void *)0x0;
  uStack_90 = 0;
  pcVar6 = (char *)0x0;
  local_88 = 0;
  local_res18 = param_3;
  (**(code **)(*param_1 + 0x2a0))(0,local_78,param_5,0x1a,0);
  local_60 = *param_2;
  uStack_5c = param_2[1];
  uStack_58 = param_2[2];
  uStack_54 = param_2[3];
  local_50 = param_2[4];
  uStack_4c = param_2[5];
  uStack_48 = param_2[6];
  uStack_44 = param_2[7];
  local_40 = param_2[8];
  local_res10 = param_3[1] - *param_3;
  param_5 = (char *)CONCAT44(param_5._4_4_,(int)local_res10);
  if (0x1f < (int)local_res10 - 1U) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    pcVar3 = pcVar6;
    if (local_res8 != (char *)0x0) {
      pcVar3 = (char *)FUN_1805a48c0(local_res8,"Bad size (%d) of in_vHash");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar4;
    if (pcVar4 != (char *)0x0) {
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
      pcVar6 = pcVar4;
    }
    FUN_18060e760(*(undefined8 *)(pcVar3 + 8),&param_5);
    param_5 = (char *)CONCAT44(param_5._4_4_,0x8dd);
    local_res8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&param_5);
  }
  local_40 = CONCAT13((char)local_res10,(undefined3)local_40);
  ppvVar1 = (void **)(lVar7 + 0x78);
  FUN_1805b1a40(ppvVar1,*param_3,param_3[1]);
  local_res18 = (longlong *)((ulonglong)local_res18 & 0xffffffffffffff00);
  pplStack_a0 = &local_res18;
  local_a8 = ppvVar1;
  FUN_1805e1ee0(ppvVar1,0x20,&local_a8);
  FUN_1805e1990(&local_98,*param_3,param_3[1],(ulonglong)local_res18 & 0xff);
  local_res18 = (longlong *)((ulonglong)local_res18 & 0xffffffffffffff00);
  local_a8 = &local_98;
  pplStack_a0 = &local_res18;
  FUN_1805e1ee0(&local_98,0x20,&local_a8);
  if ((param_4 != (undefined8 *)0x0) && (*(char *)((longlong)param_2 + 0x21) != '\0')) {
    iVar2 = (int)param_4[1] - (int)*param_4;
    local_res18 = (longlong *)CONCAT44(local_res18._4_4_,iVar2);
    if (iVar2 != 0x30) {
      param_5 = (char *)FUN_1811316e0(0x18);
      if (param_5 != (char *)0x0) {
        pcVar6 = (char *)FUN_1805a48c0(param_5,"Bad size (%d) of *in_pvEncryptedSecretILok1Data");
      }
      lVar7 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(pcVar6 + 8),&local_res18);
      local_res18 = (longlong *)CONCAT44(local_res18._4_4_,0x900);
      param_5 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar7 + 8),&param_5);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&local_res18);
    }
    FUN_1805d5a60(ppvVar1,*(undefined8 *)(lVar7 + 0x80),*param_4,param_4[1],0x30);
    FUN_1805d5a60(&local_98,uStack_90,*param_4,param_4[1],local_res18._0_1_);
  }
  *(undefined1 *)(lVar7 + 0x28) = 1;
  (**(code **)(*param_1 + 0x290))(param_1,0x40,local_78,lVar7,1);
  if (local_98 == (void *)0x0) {
    return;
  }
  _Memory = local_98;
  if ((0xfff < (ulonglong)(local_88 - (longlong)local_98)) &&
     (_Memory = *(void **)((longlong)local_98 + -8),
     0x1f < (ulonglong)((longlong)local_98 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180776c80 size=433 ############

void FUN_180776c80(undefined8 param_1,longlong param_2,longlong *param_3,undefined8 *param_4,
                  undefined8 *param_5)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  uint local_res10 [2];
  char *local_res18 [2];
  
  puVar1 = (undefined8 *)*param_3;
  local_res10[0] = (int)param_3[1] - (int)puVar1;
  if (*(char *)(param_2 + 4) == '\0') {
    if (local_res10[0] < 0x4c) {
      local_res18[0] = (char *)FUN_1811316e0(0x18,param_2,param_3,param_4,0xfffffffffffffffe);
      if (local_res18[0] == (char *)0x0) {
        lVar2 = 0;
      }
      else {
        lVar2 = FUN_1805a48c0(local_res18[0],
                              "Extra result data size (%d) is too small for the SignECDSA_UsingAuthRecords command even without the public key"
                             );
      }
      lVar3 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),local_res10);
      local_res10[0] = 0x93a;
      local_res18[0] =
           "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),local_res18);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,local_res10);
    }
    *param_5 = 0;
    param_5[1] = 0;
    param_5[2] = 0;
    param_5[3] = 0;
    param_5[4] = 0;
    param_5[5] = 0;
    param_5[6] = 0;
    param_5[7] = 0;
    param_5[8] = 0;
  }
  else {
    if (local_res10[0] < 0x94) {
      local_res18[0] = (char *)FUN_1811316e0(0x18,param_2,param_3,param_4,0xfffffffffffffffe);
      if (local_res18[0] == (char *)0x0) {
        lVar2 = 0;
      }
      else {
        lVar2 = FUN_1805a48c0(local_res18[0],
                              "Extra result data size (%d) is too small for the SignECDSA_UsingAuthRecords command with the public key"
                             );
      }
      lVar3 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar2 + 8),local_res10);
      local_res10[0] = 0x929;
      local_res18[0] =
           "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),local_res18);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,local_res10);
    }
    uVar4 = puVar1[10];
    *param_5 = puVar1[9];
    param_5[1] = uVar4;
    uVar4 = puVar1[0xc];
    param_5[2] = puVar1[0xb];
    param_5[3] = uVar4;
    uVar4 = puVar1[0xe];
    param_5[4] = puVar1[0xd];
    param_5[5] = uVar4;
    uVar4 = puVar1[0x10];
    param_5[6] = puVar1[0xf];
    param_5[7] = uVar4;
    param_5[8] = puVar1[0x11];
  }
  uVar4 = puVar1[1];
  *param_4 = *puVar1;
  param_4[1] = uVar4;
  uVar4 = puVar1[3];
  param_4[2] = puVar1[2];
  param_4[3] = uVar4;
  uVar4 = puVar1[5];
  param_4[4] = puVar1[4];
  param_4[5] = uVar4;
  uVar4 = puVar1[7];
  param_4[6] = puVar1[6];
  param_4[7] = uVar4;
  param_4[8] = puVar1[8];
  return;
}



############ FUN_ 180776e60 size=543 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180776e60(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_298[0] = 0x262;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0x58))(param_1,param_2,param_3,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_4;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  (**(code **)(*param_1 + 0x60))(param_1,param_4,&local_288,param_5);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807770c0 size=566 ############

void FUN_1807770c0(longlong *param_1,undefined4 *param_2,longlong *param_3,longlong param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  longlong lVar3;
  char *pcVar4;
  int iVar5;
  undefined8 *local_res8;
  char *local_res10;
  longlong local_88;
  undefined8 **ppuStack_80;
  undefined1 local_78 [24];
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined4 local_40;
  
  if (((byte)*(undefined4 *)((longlong)param_1 + 0x3c4) & 0xf) != 0xd) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"This command requires the use of the authority connection");
    }
    puVar1 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar1;
    if (puVar1 == (undefined8 *)0x0) {
      puVar1 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
      *puVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x291);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(puVar1[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,&local_res8);
  }
  (**(code **)(*param_1 + 0x2a0))(param_1,local_78,param_4,0x2e,0);
  uVar2 = FUN_180766750();
  *(undefined8 *)(param_2 + 6) = uVar2;
  iVar5 = (int)(param_3[1] - *param_3);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar5);
  if (iVar5 - 1U < 0x20) {
    *(char *)((longlong)param_2 + 0x21) = (char)(param_3[1] - *param_3);
    local_60 = *param_2;
    uStack_5c = param_2[1];
    uStack_58 = param_2[2];
    uStack_54 = param_2[3];
    local_50 = param_2[4];
    uStack_4c = param_2[5];
    uStack_48 = param_2[6];
    uStack_44 = param_2[7];
    local_40 = param_2[8];
    lVar3 = param_4 + 0x78;
    FUN_1805b1a40(lVar3,*param_3,param_3[1]);
    local_res8 = (undefined8 *)((ulonglong)local_res8 & 0xffffffffffffff00);
    ppuStack_80 = &local_res8;
    local_88 = lVar3;
    FUN_1805e1ee0(lVar3,0x20,&local_88);
    *(undefined1 *)(param_4 + 0x28) = 1;
    (**(code **)(*param_1 + 0x290))(param_1,0x40,local_78,param_4,1);
    return;
  }
  local_res10 = (char *)FUN_1811316e0(0x18);
  if (local_res10 == (char *)0x0) {
    lVar3 = 0;
  }
  else {
    lVar3 = FUN_1805a48c0(local_res10,"Bad size (%d) of in_vHash");
  }
  pcVar4 = (char *)FUN_1811316e0(0x18);
  local_res10 = pcVar4;
  if (pcVar4 == (char *)0x0) {
    pcVar4 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar3 + 8),&local_res8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x2a1);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 180777320 size=259 ############

void FUN_180777320(undefined8 param_1,undefined8 param_2,longlong *param_3,undefined8 *param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  char *pcVar3;
  undefined8 uVar4;
  uint local_res18 [2];
  char *local_res20;
  
  local_res18[0] = (int)param_3[1] - (int)*param_3;
  if (local_res18[0] < 0x4c) {
    local_res20 = (char *)FUN_1811316e0(0x18,param_2,param_3,param_4,0xfffffffffffffffe);
    if (local_res20 == (char *)0x0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(local_res20,
                            "Extra result data size (%d) is too small for the SignECDSA_UsingCertPrivateKey command"
                           );
    }
    pcVar3 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar3;
    if (pcVar3 == (char *)0x0) {
      pcVar3 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar2 + 8),local_res18);
    local_res18[0] = 0x2d3;
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res18);
  }
  puVar1 = (undefined8 *)*param_3;
  uVar4 = puVar1[1];
  *param_4 = *puVar1;
  param_4[1] = uVar4;
  uVar4 = puVar1[3];
  param_4[2] = puVar1[2];
  param_4[3] = uVar4;
  uVar4 = puVar1[5];
  param_4[4] = puVar1[4];
  param_4[5] = uVar4;
  uVar4 = puVar1[7];
  param_4[6] = puVar1[6];
  param_4[7] = uVar4;
  param_4[8] = puVar1[8];
  return;
}



############ FUN_ 180777440 size=2967 ############

/* WARNING: Instruction at (ram,0x0001807779d1) overlaps instruction at (ram,0x0001807779cf)
    */
/* WARNING: Removing unreachable block (ram,0x000180777d52) */
/* WARNING: Removing unreachable block (ram,0x000180777928) */
/* WARNING: Removing unreachable block (ram,0x000180777497) */
/* WARNING: Removing unreachable block (ram,0x0001807774ba) */
/* WARNING: Removing unreachable block (ram,0x0001807774dc) */
/* WARNING: Removing unreachable block (ram,0x0001807779cb) */
/* WARNING: Removing unreachable block (ram,0x000180777d7a) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180777440(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  undefined8 uVar4;
  uint uVar5;
  ulonglong uVar6;
  longlong lVar7;
  char *pcVar8;
  undefined8 uVar9;
  undefined8 uVar10;
  undefined4 extraout_XMM0_Da;
  int unaff_retaddr;
  undefined1 auStack_2e8 [48];
  undefined *local_2b8;
  uint local_2b0;
  undefined4 local_2a8 [2];
  undefined4 *local_2a0;
  uint local_298;
  undefined4 local_290;
  char *local_288;
  undefined8 local_280;
  undefined8 local_278;
  undefined8 local_270;
  undefined8 uStack_268;
  undefined8 local_260;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2e8;
  uVar2 = (uint)&stack0x00000000 & 0xcff;
  uVar2 = (uVar2 + 1) * uVar2 + 0x34e5 & 0x80000001;
  local_298 = (int)(-uVar2 | uVar2) >> 0x1f & 0x75a7U ^ 0x78a7;
  local_2b0 = 0x6d0;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar8 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  local_280 = param_2;
  local_278 = param_3;
  FUN_180750800(local_1a8);
  local_270 = 0;
  uStack_268 = 0;
  local_260 = 0;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  local_290 = 0x35501b9a;
  uVar4 = 0x147583c;
  local_2a0 = &DAT_18147583c;
  local_2b8 = &DAT_18147593c;
  if (param_1[5] != 0) {
    uVar2 = (((uint)(DAT_18147583c * 0x401) >> 6 ^ DAT_18147583c * 0x401) + DAT_181475840) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475844) * 0x401;
    do {
      FUN_180776159(0xea20,uVar4);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = (DAT_181475848 + (uVar2 ^ uVar2 >> 6)) * 0x401;
    (**(code **)(*param_1 + 0x88))(param_1,local_280,&local_258);
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_18147584c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475850) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475854) * 0x401;
    do {
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = (DAT_181475858 + (uVar2 ^ uVar2 >> 6)) * 0x401;
    do {
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = (DAT_18147585c + (uVar2 ^ uVar2 >> 6)) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475860) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475864) * 0x401;
    do {
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = (DAT_181475868 + (uVar2 ^ uVar2 >> 6)) * 0x401;
    (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_18147586c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475870) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475874) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475878) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_18147587c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475880) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475884) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475888) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_18147588c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475890) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475894) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_181475898) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_18147589c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1814758a0) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1814758a4) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1814758a8) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1814758ac) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1814758b0) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1814758b4) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758b8) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758bc) * 0x401;
    local_280 = 0x84;
    local_2b0 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758c0) * 0x401;
    local_2b0 = local_2b0 ^ local_2b0 >> 6;
    uVar10 = 0;
    local_2a8[0] = 0x84;
    uVar9 = 0xb64;
    uVar4 = 0x280;
    lVar7 = 0x88;
    uVar2 = (_UNK_1814758c4 + local_2b0) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758c8) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758cc) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758d0) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758d4) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758d8) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758dc) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758e0) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758e4) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758e8) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758ec) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758f0) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758f4) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758f8) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_1814758fc) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475900) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475904) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475908) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_18147590c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475910) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475914) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475918) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_18147591c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475920) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475924) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475928) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_18147592c) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475930) * 0x401;
    uVar2 = ((uVar2 >> 6 ^ uVar2) + _UNK_181475934) * 0x401;
    uVar6 = (ulonglong)((uVar2 >> 6 ^ uVar2) + _UNK_181475938);
    cVar1 = FUN_180777ffd();
    *(char *)(uVar6 + 0x6c) = *(char *)(uVar6 + 0x6c) - cVar1;
                    /* WARNING: Could not recover jumptable at 0x00018077818e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)((longlong)register0x00000020 + -0xbdf8))
              (extraout_XMM0_Da,lVar7 - (~(((-lVar7 ^ 0xffffffffffffffffU) + 1) - lVar7) + 1),uVar4,
               uVar9,(undefined1 *)((longlong)register0x00000020 + 0x22b1f),
               (undefined1 *)((longlong)register0x00000020 + -0x7e245),
               (undefined1 *)((longlong)register0x00000020 + -0x2c976),
               (undefined1 *)((longlong)register0x00000020 + 0x206),param_1,uVar10);
    return;
  }
  local_288 = (char *)FUN_1811316e0(0x18);
  if (local_288 != (char *)0x0) {
    FUN_1805a48c0(local_288,"ILok conduit not set");
  }
  pcVar3 = (char *)FUN_1811316e0(0x18);
  if (pcVar3 != (char *)0x0) {
    local_288 = pcVar3;
    FUN_1805a48c0(pcVar3,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar3 = pace::PaceLocationInfoFormatter::vftable;
    pcVar8 = pcVar3;
  }
  local_2a8[0] = 0x421;
  local_288 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar8 + 8),&local_288);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,local_2a8);
}



############ FUN_ 180779b70 size=524 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180779b70(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2b8 [32];
  undefined8 local_298;
  void **local_290;
  undefined4 local_288 [2];
  char *local_280;
  void *local_278;
  undefined8 uStack_270;
  longlong local_268;
  undefined **local_258;
  undefined **local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined4 local_230;
  undefined2 local_22c;
  undefined1 local_22a;
  undefined **local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined4 local_208;
  undefined2 local_204;
  undefined1 local_202;
  undefined4 local_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined4 local_1c8;
  undefined1 local_1c4;
  undefined8 local_1b8;
  undefined1 local_1a8 [352];
  ulonglong local_48;
  
  local_1b8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  local_258 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_250 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_248 = 0;
  local_240 = 0;
  local_238 = 0;
  local_230 = 0;
  local_22c = 0;
  local_22a = 0;
  local_228 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_220 = 0;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = 0;
  local_204 = 0;
  local_202 = 0;
  local_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  uStack_1d0 = 0;
  local_1c8 = 0;
  local_1c4 = 0;
  FUN_180750800(local_1a8);
  local_278 = (void *)0x0;
  uStack_270 = 0;
  local_268 = 0;
  if (param_1[5] == 0) {
    local_280 = (char *)FUN_1811316e0(0x18);
    if (local_280 != (char *)0x0) {
      FUN_1805a48c0(local_280,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_280 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_288[0] = 0xa34;
    local_280 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_280);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_288);
  }
  (**(code **)(*param_1 + 0x188))(param_1,param_2,&local_258);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_258,local_1a8);
  local_290 = &local_278;
  local_298 = param_3;
  (**(code **)(*param_1 + 0x250))(param_1,local_1a8,0,0);
  if (local_278 == (void *)0x0) {
    FUN_180750cf0(local_1a8);
    FUN_180750a50(&local_258);
  }
  _Memory = local_278;
  if ((0xfff < (ulonglong)(local_268 - (longlong)local_278)) &&
     (_Memory = *(void **)((longlong)local_278 + -8),
     0x1f < (ulonglong)((longlong)local_278 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180779e20 size=533 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180779e20(longlong *param_1,undefined1 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_298[0] = 0x2f5;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0x1b0))(param_1,param_2,param_3,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_4;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18077a070 size=566 ############

void FUN_18077a070(longlong *param_1,char param_2,undefined8 param_3,longlong param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  longlong lVar3;
  char *local_res8;
  int local_res10 [2];
  ulonglong in_stack_ffffffffffffff68;
  undefined1 local_78 [24];
  undefined4 local_60;
  undefined1 local_5c [36];
  
  if (((byte)*(undefined4 *)((longlong)param_1 + 0x3c4) & 0xf) != 0xd) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"This command requires the use of the authority connection");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 == (char *)0x0) {
      pcVar1 = (char *)0x0;
    }
    else {
      local_res8 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res10[0] = 0x321;
    local_res8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_res10);
  }
  (**(code **)(*param_1 + 0x2a0))
            (param_1,local_78,param_4,0x30,in_stack_ffffffffffffff68 & 0xffffffffffffff00);
  if (param_2 == '\0') {
    local_60 = 0;
  }
  else {
    local_60 = FUN_180766750();
  }
  (**(code **)(*param_1 + 0x2a8))(param_1,param_3,0,0,local_5c,(undefined8 *)(param_4 + 0x78));
  local_res10[0] = (int)*(undefined8 *)(param_4 + 0x80) - (int)*(undefined8 *)(param_4 + 0x78);
  if (local_res10[0] - 1U < 0x1f0) {
    (**(code **)(*param_1 + 0x290))(param_1,0x40,local_78,param_4,1);
    return;
  }
  local_res8 = (char *)FUN_1811316e0(0x18);
  if (local_res8 == (char *)0x0) {
    lVar3 = 0;
  }
  else {
    lVar3 = FUN_1805a48c0(local_res8,"Bad signature, target and command size (%d)");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  local_res8 = pcVar1;
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_res10);
  local_res10[0] = 0x343;
  local_res8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_res10);
}



############ FUN_ 18077a2d0 size=528 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18077a2d0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_298[0] = 0x1a1;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0x30))(param_1,param_2,param_3,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_4;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18077a520 size=563 ############

void FUN_18077a520(longlong *param_1,undefined4 *param_2,undefined8 *param_3,longlong param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  longlong lVar4;
  char *pcVar5;
  int iVar6;
  undefined8 *local_res8;
  char *local_res10;
  char *local_res18;
  undefined1 local_78 [24];
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  
  iVar1 = param_2[3];
  local_res10 = (char *)CONCAT44(local_res10._4_4_,iVar1);
  if (((byte)*(undefined4 *)((longlong)param_1 + 0x3c4) & 0xf) != 0xd) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"This command requires the use of the authority connection");
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1cb);
    local_res18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  (**(code **)(*param_1 + 0x2a0))(param_1,local_78,param_4,5,0);
  local_60 = *param_2;
  uStack_5c = param_2[1];
  uStack_58 = param_2[2];
  uStack_54 = param_2[3];
  iVar6 = (int)param_3[1] - (int)*param_3;
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar6);
  if ((iVar6 - 0x101U < 0x1300) && (iVar6 == iVar1)) {
    FUN_1805b1a40(param_4 + 0x78,*param_3,param_3[1]);
    (**(code **)(*param_1 + 0x290))(param_1,0x30,local_78,param_4,1);
    return;
  }
  local_res18 = (char *)FUN_1811316e0(0x18);
  if (local_res18 == (char *)0x0) {
    lVar4 = 0;
  }
  else {
    lVar4 = FUN_1805a48c0(local_res18,
                          "Bad cert chain size: dwTotalSize_CertChain (%d), in_vCertChain.size (%d)"
                         );
  }
  pcVar5 = (char *)FUN_1811316e0(0x18);
  local_res18 = pcVar5;
  if (pcVar5 == (char *)0x0) {
    pcVar5 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar4 + 8),&local_res10);
  FUN_18060e760(*(undefined8 *)(lVar4 + 8),&local_res8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1df);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,&local_res8);
}



############ FUN_ 18077a780 size=258 ############

void FUN_18077a780(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *local_res8;
  char *local_res18 [2];
  
  if (((byte)*(undefined4 *)((longlong)param_1 + 0x3c4) & 0xf) == 0xd) {
    (**(code **)(*param_1 + 0x2a8))(param_1,param_2,param_3,param_4,0,0,0xfffffffffffffffe);
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"This command requires the use of the authority connection");
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1f7);
  local_res18[0] =
       "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res8);
}



############ FUN_ 18077a8a0 size=531 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18077a8a0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  void *_Memory;
  char *pcVar3;
  undefined1 auStack_2c8 [32];
  undefined8 local_2a8;
  void **local_2a0;
  undefined4 local_298 [2];
  char *local_290;
  void *local_288;
  undefined8 uStack_280;
  longlong local_278;
  undefined **local_268;
  undefined **local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined4 local_240;
  undefined2 local_23c;
  undefined1 local_23a;
  undefined **local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined4 local_218;
  undefined2 local_214;
  undefined1 local_212;
  undefined4 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined1 local_1d4;
  undefined8 local_1c8;
  undefined1 local_1b8 [352];
  ulonglong local_58;
  
  local_1c8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  local_268 = pace::eden::thrift::ilok::CommandPacket::vftable;
  local_260 = pace::eden::thrift::ilok::CommandTarget::vftable;
  pcVar3 = (char *)0x0;
  local_258 = 0;
  local_250 = 0;
  local_248 = 0;
  local_240 = 0;
  local_23c = 0;
  local_23a = 0;
  local_238 = pace::eden::thrift::ilok::CommandTarget::vftable;
  local_230 = 0;
  local_228 = 0;
  uStack_220 = 0;
  local_218 = 0;
  local_214 = 0;
  local_212 = 0;
  local_210 = 0;
  local_208 = 0;
  uStack_200 = 0;
  local_1f8 = 0;
  uStack_1f0 = 0;
  local_1e8 = 0;
  uStack_1e0 = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  FUN_180750800(local_1b8);
  local_288 = (void *)0x0;
  uStack_280 = 0;
  local_278 = 0;
  if (param_1[5] == 0) {
    local_290 = (char *)FUN_1811316e0(0x18);
    if (local_290 != (char *)0x0) {
      FUN_1805a48c0(local_290,"ILok conduit not set");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_290 = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar3 = pcVar1;
    }
    local_298[0] = 0x6b0;
    local_290 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar3 + 8),&local_290);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_298);
  }
  (**(code **)(*param_1 + 0xf8))(param_1,param_2,param_3,&local_268);
  (**(code **)(*(longlong *)param_1[5] + 8))((longlong *)param_1[5],&local_268,local_1b8);
  local_2a0 = &local_288;
  local_2a8 = param_4;
  (**(code **)(*param_1 + 0x250))(param_1,local_1b8,0,0);
  if (local_288 == (void *)0x0) {
    FUN_180750cf0(local_1b8);
    FUN_180750a50(&local_268);
  }
  _Memory = local_288;
  if ((0xfff < (ulonglong)(local_278 - (longlong)local_288)) &&
     (_Memory = *(void **)((longlong)local_288 + -8),
     0x1f < (ulonglong)((longlong)local_288 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18077aaf0 size=300 ############

void FUN_18077aaf0(longlong *param_1,undefined4 *param_2,longlong *param_3,longlong param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong local_res8;
  char *local_res10;
  undefined1 local_58 [24];
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined8 local_30;
  undefined4 local_28;
  
  (**(code **)(*param_1 + 0x2a0))(param_1,local_58,param_4,0x15,0);
  local_40 = *param_2;
  uStack_3c = param_2[1];
  uStack_38 = param_2[2];
  uStack_34 = param_2[3];
  local_30 = *(undefined8 *)(param_2 + 4);
  local_28 = param_2[6];
  if (param_3[1] != *param_3) {
    if (param_3[1] - *param_3 != 0x10) {
      local_res8 = FUN_1811316e0(0x18);
      if (local_res8 != 0) {
        FUN_1805a48c0(local_res8,"ILok conduit not set");
      }
      lVar1 = FUN_1805c0260();
      local_res8 = CONCAT44(local_res8._4_4_,0x702);
      local_res10 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
      uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar2,&local_res8);
    }
    FUN_1805b1a40(param_4 + 0x78,*param_3,param_3[1]);
  }
  (**(code **)(*param_1 + 0x290))(param_1,0x40,local_58,param_4,1);
  return;
}



############ FUN_ 18077ada0 size=161 ############

void FUN_18077ada0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"Need at least a Sarducci subclass to execute augmentFrameKey",param_3
                  ,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x15ed);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 18077be50 size=902 ############

/* WARNING: Instruction at (ram,0x00018077cadd) overlaps instruction at (ram,0x00018077cad6)
    */
/* WARNING: Removing unreachable block (ram,0x00018077ca84) */
/* WARNING: Removing unreachable block (ram,0x00018077bece) */
/* WARNING: Removing unreachable block (ram,0x00018077c3df) */
/* WARNING: Removing unreachable block (ram,0x00018077ca8e) */
/* WARNING: Removing unreachable block (ram,0x00018077ca93) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_18077be50(longlong param_1,uint param_2,void *param_3,longlong param_4,char param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  undefined1 *puVar11;
  undefined1 uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  int *piVar21;
  char *pcVar22;
  char *pcVar23;
  undefined8 uVar24;
  longlong lVar25;
  uint uVar26;
  uint uVar27;
  void *pvVar28;
  longlong lVar29;
  int iVar30;
  char *pcVar31;
  longlong lVar32;
  undefined1 *puVar33;
  ulonglong uVar34;
  ulonglong uVar35;
  ulonglong uVar36;
  void *pvVar37;
  uint uVar38;
  undefined4 *puVar39;
  bool bVar40;
  undefined4 uVar41;
  int unaff_retaddr;
  uint auStackX_8 [2];
  uint local_res10 [2];
  void *local_res18;
  undefined8 *local_res20;
  undefined1 auStack_358 [32];
  longlong lStack_338;
  uint local_328 [2];
  undefined1 *local_320;
  uint local_318;
  int *local_310;
  longlong *local_308;
  undefined8 local_2f8;
  uint *puStack_2f0;
  undefined4 local_2e8 [2];
  undefined4 auStack_2e0 [2];
  undefined4 auStack_2d8 [2];
  undefined4 uStack_2d0;
  undefined4 uStack_2cb;
  undefined3 uStack_2c7;
  int local_2c4;
  char *local_2c0;
  char *pcStack_2b8;
  char *pcStack_2b0;
  char *pcStack_2a8;
  undefined8 local_2a0;
  undefined4 uStack_298;
  undefined4 uStack_294;
  undefined8 uStack_290;
  longlong alStack_288 [73];
  
  local_2a0 = 0xfffffffffffffffe;
  uVar38 = (uint)&stack0x00000000 & 0x7ff;
  uVar38 = (uVar38 + 1) * uVar38 + 0x507b & 0x80000001;
  uVar38 = (int)(-uVar38 | uVar38) >> 0x1f & 0x6ea2U ^ 0x6f42;
  uStack_2cb._3_1_ = (undefined1)uVar38;
  uStack_2c7 = (undefined3)(uVar38 >> 8);
  pcVar31 = (char *)0x0;
  local_2c4 = 0xbe0;
  local_2f8 = (longlong *)0x2621fc0;
  local_308 = (longlong *)0x1171ff4;
  piVar21 = &DAT_181171ff4;
  local_320 = &LAB_1811720f4;
  local_328[0] = 0x46c91e47;
  local_res10[0] = param_2;
  local_res18 = param_3;
  local_res20 = (undefined8 *)param_4;
  local_318 = param_2;
  if (0x3f < param_2 - 1) {
    local_310 = piVar21;
    local_2c0 = (char *)FUN_1811316e0(0x18);
    pcVar22 = pcVar31;
    if (local_2c0 != (char *)0x0) {
      pcVar22 = (char *)FUN_1805a48c0(local_2c0,
                                      "Bad command frame size (%d) while finalizing the command");
    }
    pcVar23 = (char *)FUN_1811316e0(0x18);
    local_2c0 = pcVar23;
    if (pcVar23 != (char *)0x0) {
      FUN_1805a48c0(pcVar23,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar23 = pace::PaceLocationInfoFormatter::vftable;
      pcVar31 = pcVar23;
    }
    FUN_18060e760(*(undefined8 *)(pcVar22 + 8),local_res10);
    local_2e8[0] = 0x1602;
    local_2c0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar24 = FUN_1805a21d0(*(undefined8 *)(pcVar31 + 8),&local_2c0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar24,local_2e8);
  }
  uVar38 = ((uint)(_UNK_181172004 * 0x5bd1e995) >> 0x18 ^ _UNK_181172004 * 0x5bd1e995) * 0x5bd1e995
           ^ (((uint)(_UNK_181172000 * 0x5bd1e995) >> 0x18 ^ _UNK_181172000 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(DAT_181171ffc * 0x5bd1e995) >> 0x18 ^ DAT_181171ffc * 0x5bd1e995) * 0x5bd1e995
             ^ (((uint)(DAT_181171ff8 * 0x5bd1e995) >> 0x18 ^ DAT_181171ff8 * 0x5bd1e995) *
                0x5bd1e995 ^
               (((uint)(DAT_181171ff4 * 0x5bd1e995) >> 0x18 ^ DAT_181171ff4 * 0x5bd1e995) *
                0x5bd1e995 ^ 0x70659afa) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
  puVar39 = (undefined4 *)(ulonglong)uVar38;
  local_308 = (longlong *)(param_4 + 0x78);
  uVar35 = *(longlong *)(param_4 + 0x80) - *local_308;
  local_328[0] = ((uint)(_UNK_181172030 * 0x5bd1e995) >> 0x18 ^ _UNK_181172030 * 0x5bd1e995) *
                 0x5bd1e995 ^
                 (((uint)(_UNK_18117202c * 0x5bd1e995) >> 0x18 ^ _UNK_18117202c * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172028 * 0x5bd1e995) >> 0x18 ^ _UNK_181172028 * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172024 * 0x5bd1e995) >> 0x18 ^ _UNK_181172024 * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172020 * 0x5bd1e995) >> 0x18 ^ _UNK_181172020 * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_18117201c * 0x5bd1e995) >> 0x18 ^ _UNK_18117201c * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172018 * 0x5bd1e995) >> 0x18 ^ _UNK_181172018 * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172014 * 0x5bd1e995) >> 0x18 ^ _UNK_181172014 * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172010 * 0x5bd1e995) >> 0x18 ^ _UNK_181172010 * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_18117200c * 0x5bd1e995) >> 0x18 ^ _UNK_18117200c * 0x5bd1e995) *
                  0x5bd1e995 ^
                 (((uint)(_UNK_181172008 * 0x5bd1e995) >> 0x18 ^ _UNK_181172008 * 0x5bd1e995) *
                  0x5bd1e995 ^ uVar38 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
                 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
                 0x5bd1e995;
  local_310 = (int *)uVar35;
  if ((int)uVar35 != 0) {
    uVar38 = FUN_180700270(*(undefined4 *)(param_1 + 0x3cc));
    if (param_5 != '\0') {
      uVar35 = (ulonglong)((int)uVar35 + 4);
      local_310 = (int *)uVar35;
    }
    iVar30 = (int)((uVar35 & 0xffffffff) % (ulonglong)uVar38);
    if (iVar30 != 0) {
      uVar35 = (ulonglong)((int)uVar35 + (uVar38 - iVar30));
      local_310 = (int *)uVar35;
    }
    uVar12 = FUN_180603ca0();
    auStackX_8[0] = CONCAT31(auStackX_8[0]._1_3_,uVar12);
    local_2f8 = local_308;
    plVar10 = local_2f8;
    puStack_2f0 = auStackX_8;
    local_2f8._0_4_ = SUB84(local_308,0);
    local_2f8._4_4_ = (undefined4)((ulonglong)local_308 >> 0x20);
    uStack_298 = (undefined4)local_2f8;
    uStack_294 = local_2f8._4_4_;
    puVar39 = &uStack_298;
    local_2f8 = plVar10;
    uStack_290 = puStack_2f0;
    FUN_1805e1ee0(local_308,uVar35 & 0xffffffff);
  }
  do {
    uVar38 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar38 < 0) {
      uVar38 = (uVar38 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar38 != 0);
  uVar38 = _UNK_181172034 * 0x5bd1e995;
  uVar13 = local_328[0] * 0x5bd1e995;
  uVar14 = _UNK_181172038 * 0x5bd1e995;
  uVar15 = _UNK_18117203c * 0x5bd1e995;
  uVar16 = _UNK_181172040 * 0x5bd1e995;
  uVar17 = _UNK_181172044 * 0x5bd1e995;
  do {
    func_0x00018077acb9();
                    /* WARNING: Call to offcut address within same function */
    func_0x00018077cdda();
    uVar26 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar26 < 0) {
      uVar26 = (uVar26 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar26 != 0);
  uVar26 = _UNK_181172048 * 0x5bd1e995;
  uVar18 = _UNK_18117204c * 0x5bd1e995;
  uVar19 = _UNK_181172050 * 0x5bd1e995;
  uVar20 = _UNK_181172054 * 0x5bd1e995;
  pcVar31 = (char *)0x0;
  do {
    bVar40 = false;
    uVar35 = 0xed14;
                    /* WARNING: Call to offcut address within same function */
    func_0x00018077c61b();
    pvVar37 = local_res18;
    if (bVar40) {
      lVar25 = (longlong)puVar39 + (longlong)piVar21;
      puVar39 = (undefined4 *)((longlong)piVar21 - lVar25);
      if ((uVar35 & 0xe700) == 0) {
        uStack_2cb = uStack_2cb + -1;
      }
      else {
        puVar39 = (undefined4 *)(((ulonglong)puVar39 ^ 0xffffffffffffffff) + 1);
      }
      piVar21 = (int *)(lVar25 - (longlong)puVar39);
    }
    uVar27 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar27 < 0) {
      uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar27 != 0);
  iVar30 = piVar21[0x19];
  iVar1 = piVar21[0x1a];
  iVar2 = piVar21[0x1b];
  iVar3 = piVar21[0x1c];
  iVar4 = piVar21[0x1d];
  iVar5 = piVar21[0x1e];
  iVar6 = piVar21[0x1f];
  *(int *)((longlong)local_res18 + 0x14) = (int)local_310;
  local_328[0] = FUN_18061e5a0((longlong)local_res18 + 4,(ulonglong)local_318 - 4 >> 2,0,local_res18
                              );
  uVar38 = (((uint)(piVar21[0x23] * 0x5bd1e995) >> 0x18 ^ piVar21[0x23] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(piVar21[0x22] * 0x5bd1e995) >> 0x18 ^ piVar21[0x22] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(piVar21[0x21] * 0x5bd1e995) >> 0x18 ^ piVar21[0x21] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(piVar21[0x20] * 0x5bd1e995) >> 0x18 ^ piVar21[0x20] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar6 * 0x5bd1e995) >> 0x18 ^ iVar6 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar5 * 0x5bd1e995) >> 0x18 ^ iVar5 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar4 * 0x5bd1e995) >> 0x18 ^ iVar4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar3 * 0x5bd1e995) >> 0x18 ^ iVar3 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar2 * 0x5bd1e995) >> 0x18 ^ iVar2 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar1 * 0x5bd1e995) >> 0x18 ^ iVar1 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar30 * 0x5bd1e995) >> 0x18 ^ iVar30 * 0x5bd1e995) * 0x5bd1e995 ^
           ((uVar20 >> 0x18 ^ uVar20) * 0x5bd1e995 ^
           ((uVar19 >> 0x18 ^ uVar19) * 0x5bd1e995 ^
           ((uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
           ((uVar26 >> 0x18 ^ uVar26) * 0x5bd1e995 ^
           ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
           ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
           ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
           ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
           ((uVar38 >> 0x18 ^ uVar38) * 0x5bd1e995 ^ uVar13) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995 ^
           ((uint)(piVar21[0x24] * 0x5bd1e995) >> 0x18 ^ piVar21[0x24] * 0x5bd1e995) * 0x5bd1e995;
  local_320 = (undefined1 *)CONCAT44(local_320._4_4_,uVar38);
  if (local_328[0] != 0) {
    pcStack_2b8 = (char *)FUN_1811316e0(0x18);
    if (pcStack_2b8 == (char *)0x0) {
      local_2f8 = (longlong *)0x0;
    }
    else {
      local_2f8 = (longlong *)
                  FUN_1805a48c0(pcStack_2b8,
                                "[%d] UTILS_CRC32 error setting the CRC in the command frame");
    }
    pcVar22 = (char *)FUN_1811316e0(0x18);
    pcStack_2b8 = pcVar22;
    if (pcVar22 != (char *)0x0) {
      FUN_1805a48c0(pcVar22,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar22 = pace::PaceLocationInfoFormatter::vftable;
      pcVar31 = pcVar22;
    }
    FUN_18060e760(*(undefined8 *)((longlong)local_2f8 + 8),local_328);
    auStack_2e0[0] = 0x1636;
    pcStack_2b8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar24 = FUN_1805a21d0(*(undefined8 *)(pcVar31 + 8),&pcStack_2b8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar24,auStack_2e0);
  }
  uVar38 = (((uint)(piVar21[0x28] * 0x5bd1e995) >> 0x18 ^ piVar21[0x28] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(piVar21[0x27] * 0x5bd1e995) >> 0x18 ^ piVar21[0x27] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(piVar21[0x26] * 0x5bd1e995) >> 0x18 ^ piVar21[0x26] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(piVar21[0x25] * 0x5bd1e995) >> 0x18 ^ piVar21[0x25] * 0x5bd1e995) * 0x5bd1e995 ^
           uVar38 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995 ^
           ((uint)(piVar21[0x29] * 0x5bd1e995) >> 0x18 ^ piVar21[0x29] * 0x5bd1e995) * 0x5bd1e995;
  local_320 = (undefined1 *)CONCAT44(local_320._4_4_,uVar38);
  if ((*(int *)(param_1 + 0x3bc) != 0) && (*(longlong *)(param_1 + 0x10) != 0)) {
    pcStack_2b0 = (char *)FUN_1811316e0(0x18);
    if (pcStack_2b0 == (char *)0x0) {
      local_2f8 = (longlong *)0x0;
    }
    else {
      local_2f8 = (longlong *)
                  FUN_1805a48c0(pcStack_2b0,
                                "Cannot batch command while the hashing commands option is enabled")
      ;
    }
    lVar25 = FUN_1805c0260();
    auStack_2d8[0] = 0x163e;
    pcStack_2b0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar24 = FUN_1805a21d0(*(undefined8 *)(lVar25 + 8),&pcStack_2b0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar24,auStack_2d8);
  }
  iVar30 = piVar21[0x2a];
  if (*(int *)(param_1 + 0x3bc) == 1) {
    *(undefined4 *)(param_1 + 0x3bc) = 0;
    (**(code **)(*(longlong *)(param_1 + 0x230) + 0x20))
              ((longlong *)(param_1 + 0x230),pvVar37,local_318);
    *(undefined4 *)(param_1 + 0x3bc) = 1;
  }
  iVar1 = piVar21[0x2b];
  iVar2 = piVar21[0x2c];
  iVar3 = piVar21[0x2d];
  iVar4 = piVar21[0x2e];
  iVar5 = piVar21[0x2f];
  local_2f8 = (longlong *)0xac77772e6d291af0;
  auStackX_8[0] = 0x6d291af0;
  iVar6 = piVar21[0x30];
  iVar7 = piVar21[0x31];
  iVar8 = piVar21[0x32];
  do {
    func_0x00018077e9d3();
    puVar9 = local_res20;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_res10[0] =
       ((uint)(piVar21[0x34] * 0x5bd1e995) >> 0x18 ^ piVar21[0x34] * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(piVar21[0x33] * 0x5bd1e995) >> 0x18 ^ piVar21[0x33] * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar8 * 0x5bd1e995) >> 0x18 ^ iVar8 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar7 * 0x5bd1e995) >> 0x18 ^ iVar7 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar6 * 0x5bd1e995) >> 0x18 ^ iVar6 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar5 * 0x5bd1e995) >> 0x18 ^ iVar5 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar4 * 0x5bd1e995) >> 0x18 ^ iVar4 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar3 * 0x5bd1e995) >> 0x18 ^ iVar3 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar2 * 0x5bd1e995) >> 0x18 ^ iVar2 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar1 * 0x5bd1e995) >> 0x18 ^ iVar1 * 0x5bd1e995) * 0x5bd1e995 ^
       (((uint)(iVar30 * 0x5bd1e995) >> 0x18 ^ iVar30 * 0x5bd1e995) * 0x5bd1e995 ^
       uVar38 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
       0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
  local_2f8 = (longlong *)((ulonglong)local_318 + (longlong)pvVar37);
  uVar34 = (longlong)local_2f8 - (longlong)local_res18;
  pvVar37 = *(void **)((longlong)local_res20 + 0x60);
  uVar36 = *(longlong *)((longlong)local_res20 + 0x68) - (longlong)pvVar37;
  uVar35 = *(longlong *)((longlong)local_res20 + 0x70) - (longlong)pvVar37;
  if (uVar35 < uVar34) {
    if (0x7fffffffffffffff < uVar34) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar36 = uVar34;
    if ((uVar35 <= 0x7fffffffffffffff - (uVar35 >> 1)) &&
       (uVar36 = uVar35 + (uVar35 >> 1), uVar36 < uVar34)) {
      uVar36 = uVar34;
    }
    if (pvVar37 != (void *)0x0) {
      pvVar28 = pvVar37;
      if ((0xfff < uVar35) &&
         (pvVar28 = *(void **)((longlong)pvVar37 + -8),
         0x1f < (ulonglong)((longlong)pvVar37 + (-8 - (longlong)pvVar28)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar28);
    }
    FUN_1805bbbc0((longlong)local_res20 + 0x60,uVar36);
    pvVar37 = *(void **)((longlong)puVar9 + 0x60);
    memmove(pvVar37,local_res18,uVar34);
    *(ulonglong *)((longlong)puVar9 + 0x68) = uVar34 + (longlong)pvVar37;
  }
  else if (uVar36 < uVar34) {
    pvVar28 = (void *)(uVar36 + (longlong)local_res18);
    memmove(pvVar37,local_res18,(longlong)pvVar28 - (longlong)local_res18);
    pvVar37 = *(void **)((longlong)puVar9 + 0x68);
    local_2f8 = (longlong *)((longlong)local_2f8 - (longlong)pvVar28);
    memmove(pvVar37,pvVar28,(size_t)local_2f8);
    *(longlong *)((longlong)puVar9 + 0x68) = (longlong)local_2f8 + (longlong)pvVar37;
  }
  else {
    memmove(pvVar37,local_res18,uVar34);
    *(ulonglong *)((longlong)puVar9 + 0x68) = uVar34 + (longlong)pvVar37;
  }
  iVar30 = piVar21[0x35];
  uVar38 = local_res10[0] * 0x5bd1e995;
  lStack_338 = param_1 + 0x3f8;
  FUN_18063c260(alStack_288,*(undefined4 *)(param_1 + 0x3cc),1,0);
  (**(code **)(alStack_288[0] + 0x40))(alStack_288,(longlong)puVar9 + 0x60);
  plVar10 = local_308;
  iVar1 = piVar21[0x36];
  iVar2 = piVar21[0x37];
  if ((int)local_310 != 0) {
    if (param_5 != '\0') {
      local_328[0] = FUN_18061e5a0(*local_308,((ulonglong)local_310 & 0xffffffff) - 4 >> 2,0,0);
      if (local_328[0] != 0) {
        local_res20 = (undefined8 *)FUN_1811316e0(0x18);
        if (local_res20 == (undefined8 *)0x0) {
          local_res20 = (undefined8 *)0x0;
        }
        else {
          local_res20 = (undefined8 *)
                        FUN_1805a48c0(local_res20,
                                      "[%d] UTILS_CRC32 error setting the CRC in the extra command data"
                                     );
        }
        lVar25 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)((longlong)local_res20 + 8),local_328);
        uStack_2d0 = 0x166c;
        pcStack_2a8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
        uVar24 = FUN_1805a21d0(*(undefined8 *)(lVar25 + 8),&pcStack_2a8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar24,&uStack_2d0);
      }
    }
    if (*(int *)(param_1 + 0x3bc) == 1) {
      *(undefined4 *)(param_1 + 0x3bc) = 0;
      (**(code **)(*(longlong *)(param_1 + 0x230) + 0x18))((longlong *)(param_1 + 0x230),plVar10);
      *(undefined4 *)(param_1 + 0x3bc) = 1;
    }
    (**(code **)(alStack_288[0] + 0x40))(alStack_288,plVar10);
  }
  iVar3 = piVar21[0x38];
  iVar4 = piVar21[0x39];
  iVar5 = piVar21[0x3a];
  iVar6 = piVar21[0x3b];
  lVar25 = *(longlong *)(param_1 + 8);
  local_res20 = *(undefined8 **)(lVar25 + 8);
  pvVar37 = local_res18;
  uVar24 = FUN_18074eca0(param_1 + 8,lVar25,local_res20,local_res18);
  if (*(longlong *)(param_1 + 0x10) != 0x333333333333332) {
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + 1;
    *(undefined8 *)(lVar25 + 8) = uVar24;
    *local_res20 = uVar24;
    uVar38 = ((uint)(piVar21[0x3d] * 0x5bd1e995) >> 0x18 ^ piVar21[0x3d] * 0x5bd1e995) * 0x5bd1e995
             ^ (((uint)(piVar21[0x3c] * 0x5bd1e995) >> 0x18 ^ piVar21[0x3c] * 0x5bd1e995) *
                0x5bd1e995 ^
               (((uint)(iVar6 * 0x5bd1e995) >> 0x18 ^ iVar6 * 0x5bd1e995) * 0x5bd1e995 ^
               (((uint)(iVar5 * 0x5bd1e995) >> 0x18 ^ iVar5 * 0x5bd1e995) * 0x5bd1e995 ^
               (((uint)(iVar4 * 0x5bd1e995) >> 0x18 ^ iVar4 * 0x5bd1e995) * 0x5bd1e995 ^
               (((uint)(iVar3 * 0x5bd1e995) >> 0x18 ^ iVar3 * 0x5bd1e995) * 0x5bd1e995 ^
               ((((uint)(iVar1 * 0x5bd1e995) >> 0x18 ^ iVar1 * 0x5bd1e995) * 0x5bd1e995 ^
                (uVar38 ^ ((uint)(iVar30 * 0x5bd1e995) >> 0x18 ^ iVar30 * 0x5bd1e995) * 0x5bd1e995)
                * 0x5bd1e995) * 0x5bd1e995 ^
               ((uint)(iVar2 * 0x5bd1e995) >> 0x18 ^ iVar2 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995)
               * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
    uVar35 = (ulonglong)uVar38;
    uVar38 = ((uint)(piVar21[0x3e] * 0x5bd1e995) >> 0x18 ^ piVar21[0x3e] * 0x5bd1e995) * 0x5bd1e995
             ^ uVar38 * 0x5bd1e995;
    uVar34 = (ulonglong)uVar38;
    uVar38 = uVar38 * 0x5bd1e995 ^
             ((uint)(piVar21[0x3f] * 0x5bd1e995) >> 0x18 ^ piVar21[0x3f] * 0x5bd1e995) * 0x5bd1e995;
    uVar38 = (uVar38 << 0x19 | uVar38 >> 7) + 0x541c3b87;
    *(int *)(param_1 + 0x3d8) = *(int *)(param_1 + 0x3d8) + 1;
    if ((uVar38 >> 0x1a | uVar38 * 0x40) != auStackX_8[0]) {
      uVar41 = FUN_18077c3dc();
      uVar24 = thunk_FUN_1805a9280(uVar41,-((uVar35 ^ 0xffffffffffffffff) + 1),
                                   (~uVar34 + 1 ^ 0xffffffffffffffff) + 1,
                                   ~(((ulonglong)pvVar37 ^ 0xffffffffffffffff) + 1) + 1);
      return uVar24;
    }
    lVar32 = (longlong)local_2c4;
    puVar11 = auStack_358;
    do {
      puVar33 = puVar11;
      *(undefined8 *)(puVar33 + -8) = 0x18077d058;
      lVar29 = lVar32;
      FUN_18077dfe3();
      *(ulonglong *)(puVar33 + -8) = uVar35;
      *(longlong *)(puVar33 + -0x10) = param_1;
      *(longlong *)(puVar33 + -0x18) = lVar25;
      lVar29 = -lVar29;
      lVar25 = *(longlong *)(puVar33 + lVar29 + 0xbc8);
      param_1 = *(longlong *)(puVar33 + lVar29 + 0xbd0);
      uVar35 = *(ulonglong *)(puVar33 + lVar29 + 0xbd8);
      uVar38 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar38 < 0) {
        uVar38 = (uVar38 - 1 | 0xfffffffe) + 1;
      }
      puVar11 = puVar33 + lVar29 + 0xbe0;
    } while (uVar38 != 0);
    *(undefined8 *)(puVar33 + lVar29 + 0xbd8) = 0x18077d11d;
    uVar24 = FUN_18063cad0(alStack_288);
    return uVar24;
  }
                    /* WARNING: Subroutine does not return */
  std::_Xlength_error("list<T> too long");
}



############ FUN_ 18077d150 size=2714 ############

/* WARNING: Instruction at (ram,0x00018077d8fb) overlaps instruction at (ram,0x00018077d8fa)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018077d8fe) */
/* WARNING: Removing unreachable block (ram,0x00018077d2bc) */
/* WARNING: Removing unreachable block (ram,0x00018077d8fb) */
/* WARNING: Removing unreachable block (ram,0x00018077d2c5) */
/* WARNING: Heritage AFTER dead removal. Example location: s0x00000000 : 0x00018077d7a7 */
/* WARNING: Removing unreachable block (ram,0x00018077d23a) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_18077d150(undefined8 param_1,longlong param_2,int *param_3)

{
  char *pcVar1;
  char *pcVar2;
  undefined8 uVar3;
  uint uVar4;
  uint uVar5;
  char *pcVar6;
  int unaff_retaddr;
  uint local_res10;
  undefined4 local_80 [2];
  uint *local_78;
  int local_70 [6];
  char *local_58 [3];
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  local_70[0] = *(int *)(param_2 + 0x18);
  local_78 = &DAT_181533e68;
  pcVar6 = (char *)0x0;
  if (local_70[0] == *param_3) {
    uVar4 = ((((((((((DAT_181533e68 ^ 0x811c9e29) * 0x10001ab ^ DAT_181533e6c) * 0x10001ab ^
                   DAT_181533e70) * 0x10001ab ^ DAT_181533e74) * 0x10001ab ^ DAT_181533e78) *
                 0x10001ab ^ DAT_181533e7c) * 0x10001ab ^ DAT_181533e80) * 0x10001ab ^ DAT_181533e84
              ) * 0x10001ab ^ DAT_181533e88) * 0x10001ab ^ DAT_181533e8c) * 0x10001ab ^
            DAT_181533e90;
    do {
      FUN_18077de06();
      func_0x0001807779cd();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    local_80[0] = 0xe16209c5;
    uVar4 = (((((((((uVar4 * 0x10001ab ^ DAT_181533e94) * 0x10001ab ^ DAT_181533e98) * 0x10001ab ^
                  DAT_181533e9c) * 0x10001ab ^ DAT_181533ea0) * 0x10001ab ^ DAT_181533ea4) *
                0x10001ab ^ DAT_181533ea8) * 0x10001ab ^ DAT_181533eac) * 0x10001ab ^ DAT_181533eb0)
             * 0x10001ab ^ DAT_181533eb4) * 0x10001ab ^ DAT_181533eb8;
    do {
                    /* WARNING: Call to offcut address within same function */
      func_0x00018077d5c2(0x7438);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    local_res10 = (((((((((((((uVar4 * 0x10001ab ^ DAT_181533ebc) * 0x10001ab ^ DAT_181533ec0) *
                             0x10001ab ^ DAT_181533ec4) * 0x10001ab ^ DAT_181533ec8) * 0x10001ab ^
                          DAT_181533ecc) * 0x10001ab ^ DAT_181533ed0) * 0x10001ab ^ DAT_181533ed4) *
                        0x10001ab ^ DAT_181533ed8) * 0x10001ab ^ DAT_181533edc) * 0x10001ab ^
                     DAT_181533ee0) * 0x10001ab ^ DAT_181533ee4) * 0x10001ab ^ DAT_181533ee8) *
                   0x10001ab ^ DAT_181533eec) * 0x10001ab;
    do {
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    do {
      local_res10 = local_res10 ^ DAT_181533ef0;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    local_res10 = local_res10 * 0x10001ab;
    do {
      local_res10 = local_res10 ^ DAT_181533ef4;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    local_res10 = ((local_res10 * 0x10001ab ^ DAT_181533ef8) * 0x10001ab ^ DAT_181533efc) *
                  0x10001ab;
    do {
      uVar3 = 0x1bd8f46cc;
      local_res10 = local_res10 ^ DAT_181533f00;
                    /* WARNING: Bad instruction - Truncating control flow here */
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar4 = ((((local_res10 * 0x10001ab ^ DAT_181533f04) * 0x10001ab ^ DAT_181533f08) * 0x10001ab ^
             DAT_181533f0c) * 0x10001ab ^ DAT_181533f10) * 0x10001ab ^ DAT_181533f14;
    do {
      FUN_18077bd35();
      FUN_18077dd1a();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = (((((uVar4 * 0x10001ab ^ DAT_181533f18) * 0x10001ab ^ DAT_181533f1c) * 0x10001ab ^
              DAT_181533f20) * 0x10001ab ^ DAT_181533f24) * 0x10001ab ^ DAT_181533f28) * 0x10001ab ^
            DAT_181533f2c;
    do {
      FUN_18077e29f(0x7438);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
                    /* WARNING: Call to offcut address within same function */
    DAT_daf748f024648d48 =
         func_0x00018077db12((((((((uVar4 * 0x10001ab ^ DAT_181533f30) * 0x10001ab ^ DAT_181533f34)
                                  * 0x10001ab ^ DAT_181533f38) * 0x10001ab ^ DAT_181533f3c) *
                                0x10001ab ^ DAT_181533f40) * 0x10001ab ^ DAT_181533f44) * 0x10001ab
                             ^ DAT_181533f48) * 0x10001ab ^ DAT_181533f4c,uVar3);
    return;
  }
  local_58[0] = (char *)FUN_1811316e0(0x18);
  pcVar1 = pcVar6;
  if (local_58[0] != (char *)0x0) {
    pcVar1 = (char *)FUN_1805a48c0(local_58[0],
                                   "The CertChainID in the command frame (%d) does not match that in the result frame (%d)"
                                  );
  }
  pcVar2 = (char *)FUN_1811316e0(0x18);
  local_58[0] = pcVar2;
  if (pcVar2 != (char *)0x0) {
    FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    pcVar6 = pcVar2;
  }
  FUN_18060e760(*(undefined8 *)(pcVar1 + 8),local_70);
  FUN_18060e760(*(undefined8 *)(pcVar1 + 8),param_3);
  local_80[0] = 0x4de;
  local_58[0] = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),local_58);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar3,local_80);
}



############ FUN_ 180780140 size=2319 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018078051c) overlaps instruction at (ram,0x00018078051b)
    */
/* WARNING: Removing unreachable block (ram,0x000180780a47) */
/* WARNING: Removing unreachable block (ram,0x0001807801ef) */
/* WARNING: Removing unreachable block (ram,0x000180780192) */
/* WARNING: Removing unreachable block (ram,0x000180780733) */
/* WARNING: Removing unreachable block (ram,0x0001807809ba) */
/* WARNING: Removing unreachable block (ram,0x0001807801fe) */

void FUN_180780140(longlong param_1,longlong param_2,longlong param_3,undefined4 param_4,
                  char param_5)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  longlong lVar12;
  undefined8 uVar13;
  undefined8 *puVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  undefined *puVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  uint *puVar21;
  uint *puVar22;
  undefined1 *puVar23;
  undefined8 *puVar24;
  ulonglong in_R11;
  ulonglong uVar25;
  int unaff_retaddr;
  longlong local_res8;
  undefined8 *local_res10;
  int local_res18;
  undefined4 local_res20;
  undefined1 auStack_98 [32];
  int local_78;
  undefined4 *local_70;
  undefined *local_68;
  char *local_60;
  char *local_58;
  undefined8 local_50;
  
  puVar23 = auStack_98;
  local_50 = 0xfffffffffffffffe;
  puVar24 = (undefined8 *)0x0;
  local_res18 = 0x980;
  local_78 = 0x440;
  puVar11 = &DAT_180bd9234;
  puVar18 = &DAT_180bd9334;
  local_res20 = param_4;
  local_70 = puVar11;
  local_68 = puVar18;
  if ((*(char *)(param_1 + 0x3e4) == '\0') && (param_5 == '\0')) {
    local_res8 = FUN_1811316e0(0x18);
    if (local_res8 != 0) {
      FUN_1805a48c0(local_res8,"The connection has not been opened yet or has been closed");
    }
    lVar12 = FUN_1805c0260();
    local_res8 = CONCAT44(local_res8._4_4_,0x16cc);
    local_60 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar13 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,&local_res8);
  }
  uVar10 = DAT_180bd9234 ^ 0x811c9dc5;
  uVar20 = 0x40;
  FUN_180604880(param_2);
  uVar10 = DAT_180bd923c ^ (DAT_180bd9238 ^ uVar10 * 0x1000181) * 0x1000181;
  *(char *)(param_2 + 0xc) = (char)param_4;
  if ((*(uint *)(param_1 + 0x3d8) & 0x80000000) != 0) {
    local_res10 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res10 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res10,
                    "ILok2 command sequence number hit maximum. The connection must be closed and reopened."
                   );
    }
    puVar14 = (undefined8 *)FUN_1811316e0(0x18);
    local_res10 = puVar14;
    if (puVar14 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar14,"|__FILE__|%s|__LINE__|%d");
      *puVar14 = pace::PaceLocationInfoFormatter::vftable;
      puVar24 = puVar14;
    }
    local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x16dd);
    local_58 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar13 = FUN_1805a21d0(puVar24[1],&local_58);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar13,&local_res10);
  }
  uVar10 = DAT_180bd9250 ^
           (DAT_180bd924c ^
           (DAT_180bd9248 ^
           (DAT_180bd9244 ^ (DAT_180bd9240 ^ uVar10 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181;
  do {
    uVar19 = 0;
    FUN_180781631();
    uVar25 = ~(in_R11 - (uVar20 + in_R11)) + 1;
    in_R11 = (uVar20 + in_R11) - uVar25;
    uVar20 = uVar25;
    if ((uVar19 & 0x42) != 0) {
      uVar20 = (ulonglong)puVar11 & 0xffffffff;
      puVar11 = (undefined4 *)(in_R11 & 0xffffffff);
      in_R11 = uVar25;
    }
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  if ((*(char *)(param_1 + 0x3e5) == '\0') || (*(longlong *)(param_1 + 0x10) == 0)) {
    uVar15 = *(uint *)(param_1 + 0x3d8);
  }
  else {
    uVar15 = *(uint *)(param_1 + 0x3d8) | 0x80000000;
  }
  *(uint *)(param_2 + 4) = uVar15;
  if (*(char *)(param_1 + 1000) != '\0') {
    if (*(int *)(param_1 + 0x3dc) == 0) {
      *(undefined4 *)(param_1 + 0x3dc) = *(undefined4 *)(param_1 + 0x3d8);
    }
    else if ((*(char *)(param_1 + 0x3e5) != '\0') && (*(longlong *)(param_1 + 0x10) != 0))
    goto LAB_1807805a0;
    *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(param_1 + 0x3c8);
  }
LAB_1807805a0:
  uVar15 = puVar11[8];
  uVar1 = puVar11[9];
  do {
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  *(undefined4 *)(param_2 + 8) = local_res20;
  uVar16 = puVar11[10];
  uVar2 = puVar11[0xb];
  uVar3 = puVar11[0xc];
  uVar4 = puVar11[0xd];
  uVar5 = puVar11[0xe];
  uVar6 = puVar11[0xf];
  do {
    uVar17 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar17 < 0) {
      uVar17 = (uVar17 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar17 != 0);
  *(undefined8 *)(param_3 + 0x10) = *(undefined8 *)(param_1 + 0x3a8);
  uVar17 = puVar11[0x10];
  uVar7 = puVar11[0x11];
  uVar8 = puVar11[0x12];
  puVar21 = puVar11 + 0x13;
  *(undefined4 *)(param_3 + 0x18) = *(undefined4 *)(param_1 + 0x3c4);
  uVar10 = (*puVar21 ^
           (uVar8 ^ (uVar7 ^ (uVar17 ^ (uVar6 ^ (uVar5 ^ (uVar4 ^ (uVar3 ^ (uVar2 ^ (uVar16 ^ (uVar1
                                                                                              ^ (
                                                  uVar15 ^ uVar10 * 0x1000181) * 0x1000181) *
                                                  0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
                                                  * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
                    ) * 0x1000181) * 0x1000181) * 0x1000181;
  if ((uVar10 & 0x900) == 0) {
    uVar15 = (uint)puVar21 & 0x11ff;
    uVar15 = (uVar15 + 1) * uVar15 + 0x4d8b & 0x80000001;
  }
  else {
    puVar18 = (undefined *)0x1334;
    uVar15 = 1;
  }
  puVar21 = (uint *)((longlong)puVar21 +
                    (0x104 - ((longlong)(((int)(-uVar15 | uVar15) >> 0x1f) * -0x8f26) ^ 0x8e26U)));
  uVar15 = *puVar21;
  *(undefined4 *)(param_3 + 0x1c) = *(undefined4 *)(param_1 + 0x3d8);
  uVar1 = puVar21[1];
  uVar16 = puVar21[2];
  uVar2 = puVar21[3];
  uVar3 = puVar21[4];
  uVar4 = puVar21[5];
  uVar5 = puVar21[6];
  uVar6 = puVar21[7];
  *(undefined4 *)(param_3 + 0x20) = 2;
  uVar17 = puVar21[8];
  uVar7 = puVar21[9];
  uVar8 = puVar21[10];
  uVar9 = puVar21[0xb];
  *(uint *)(param_3 + 0x24) = (uint)*(ushort *)(param_1 + 0x3e0);
  uVar10 = (puVar21[0xf] ^
           (puVar21[0xe] ^
           (puVar21[0xd] ^
           (puVar21[0xc] ^
           (uVar9 ^ (uVar8 ^ (uVar7 ^ (uVar17 ^ (uVar6 ^ (uVar5 ^ (uVar4 ^ (uVar3 ^ (uVar2 ^ (uVar16
                                                                                             ^ (
                                                  uVar1 ^ (uVar15 ^ uVar10) * 0x1000181) * 0x1000181
                                                  ) * 0x1000181) * 0x1000181) * 0x1000181) *
                                                  0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
                             * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181;
  *(undefined1 *)(param_3 + 0x28) = 0;
  *(undefined4 *)(param_3 + 0x58) = 0;
  lVar12 = 0xd;
  puVar21 = puVar21 + 0x10;
  do {
    puVar22 = puVar21;
    uVar10 = (puVar22[1] ^ (*puVar22 ^ uVar10) * 0x1000181) * 0x1000181;
    lVar12 = lVar12 + -1;
    uVar20 = 0;
    puVar21 = puVar22 + 2;
  } while (lVar12 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807806e4();
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar10 = (puVar22[3] ^ (puVar22[2] ^ uVar10) * 0x1000181) * 0x1000181 + 0x683e5859;
  uVar15 = (uVar10 >> 0xd ^ uVar10) >> 9 & 3;
  uVar10 = (uVar15 << 0xd | uVar15) << 9 ^ uVar10;
  local_68 = (undefined *)0x47c6f7fe3650f1e1;
  local_res20 = 0x3650f1e1;
  uVar15 = uVar10;
  do {
    if ((POPCOUNT(uVar15 & 0xff) & 1U) == 0) {
      uVar20 = (~uVar20 + 1 ^ 0xffffffffffffffff) + 1;
    }
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  *(undefined8 *)(param_3 + 0x80) = *(undefined8 *)(param_3 + 0x78);
  if (uVar10 == 0x3650f1e1) {
    do {
      *(undefined **)(puVar23 + -8) = puVar18;
      *(ulonglong *)(puVar23 + -0x10) = in_R11;
      *(longlong *)(puVar23 + -0x18) = param_1;
      lVar12 = -(longlong)local_78;
      param_1 = *(longlong *)(puVar23 + lVar12 + 0x428);
      in_R11 = *(ulonglong *)(puVar23 + lVar12 + 0x430);
      puVar18 = *(undefined **)(puVar23 + lVar12 + 0x438);
      puVar23 = puVar23 + lVar12 + 0x440;
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    return;
  }
  thunk_FUN_1805a9280((longlong)local_res18,uVar20);
  return;
}



############ FUN_ 180781d70 size=1088 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180781d70(undefined8 param_1,longlong *param_2,char **param_3,char *param_4,
                  undefined4 *param_5,longlong param_6)

{
  undefined8 *puVar1;
  uint uVar2;
  longlong lVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  longlong lVar8;
  char *pcVar9;
  undefined8 uVar10;
  char **ppcVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  undefined1 auStack_b8 [32];
  undefined1 local_98;
  char *local_90;
  uint local_88 [2];
  uint local_80 [2];
  char *local_78;
  char *local_70;
  longlong local_68;
  undefined8 local_60;
  char *local_58 [2];
  ulonglong local_48;
  
  local_60 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_68 = param_6;
  lVar8 = param_2[1];
  lVar3 = *param_2;
  local_80[0] = (uint)(lVar8 - lVar3);
  local_78 = param_4;
  if (local_80[0] < 0x10) {
    local_58[0] = (char *)FUN_1811316e0(0x18);
    if (local_58[0] == (char *)0x0) {
      lVar8 = 0;
    }
    else {
      lVar8 = FUN_1805a48c0(local_58[0],
                            "The signed message (%d) is too small to hold the message header (%d).")
      ;
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    local_58[0] = pcVar9;
    if (pcVar9 == (char *)0x0) {
      pcVar9 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_90 = (char *)0x10;
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_80);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_90);
    local_88[0] = 0x1732;
    local_90 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar9 + 8),&local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_88);
  }
  ppcVar11 = local_58;
  if (param_3 != (char **)0x0) {
    ppcVar11 = param_3;
  }
  puVar4 = (undefined4 *)*param_2;
  uVar5 = puVar4[1];
  uVar6 = puVar4[2];
  uVar7 = puVar4[3];
  *(undefined4 *)ppcVar11 = *puVar4;
  *(undefined4 *)((longlong)ppcVar11 + 4) = uVar5;
  *(undefined4 *)(ppcVar11 + 1) = uVar6;
  *(undefined4 *)((longlong)ppcVar11 + 0xc) = uVar7;
  uVar2 = *(uint *)((longlong)ppcVar11 + 0xc);
  uVar12 = lVar8 - lVar3 & 0xffffffff;
  local_88[0] = uVar2;
  if (uVar12 < (ulonglong)uVar2 + 0x10) {
    local_58[0] = (char *)FUN_1811316e0(0x18);
    if (local_58[0] == (char *)0x0) {
      lVar8 = 0;
    }
    else {
      lVar8 = FUN_1805a48c0(local_58[0],
                            "The signed message (%d) is too small to hold the message header (%d) and cert chain (%d)."
                           );
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    local_58[0] = pcVar9;
    if (pcVar9 == (char *)0x0) {
      pcVar9 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_90 = (char *)0x10;
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_80);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_90);
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_88);
    local_90 = (char *)CONCAT44(local_90._4_4_,0x1746);
    local_70 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar9 + 8),&local_70);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_90);
  }
  if (param_4 != (char *)0x0) {
    FUN_1805e1990(param_4,*param_2 + 0x10,(ulonglong)(uVar2 + 0x10) + *param_2,local_98);
  }
  uVar13 = (ulonglong)(uVar2 + 0x10);
  if (uVar12 < (ulonglong)uVar2 + 0x34) {
    local_58[0] = (char *)FUN_1811316e0(0x18);
    if (local_58[0] == (char *)0x0) {
      lVar8 = 0;
    }
    else {
      lVar8 = FUN_1805a48c0(local_58[0],
                            "The signed message (%d) is too small to hold the message header (%d), cert chain (%d) and preamble (%d)."
                           );
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    local_58[0] = pcVar9;
    if (pcVar9 == (char *)0x0) {
      pcVar9 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_70 = (char *)0x24;
    local_78 = (char *)0x10;
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_80);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_78);
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_88);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_70);
    local_90 = (char *)CONCAT44(local_90._4_4_,0x175c);
    local_78 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar9 + 8),&local_78);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_90);
  }
  if (param_5 != (undefined4 *)0x0) {
    lVar8 = *param_2;
    puVar4 = (undefined4 *)(uVar13 + lVar8);
    uVar5 = puVar4[1];
    uVar6 = puVar4[2];
    uVar7 = puVar4[3];
    *param_5 = *puVar4;
    param_5[1] = uVar5;
    param_5[2] = uVar6;
    param_5[3] = uVar7;
    puVar1 = (undefined8 *)(uVar13 + 0x10 + lVar8);
    uVar10 = puVar1[1];
    *(undefined8 *)(param_5 + 4) = *puVar1;
    *(undefined8 *)(param_5 + 6) = uVar10;
    param_5[8] = *(undefined4 *)(uVar13 + 0x20 + lVar8);
  }
  if (uVar12 < (ulonglong)uVar2 + 0x54) {
    local_58[0] = (char *)FUN_1811316e0(0x18);
    if (local_58[0] == (char *)0x0) {
      lVar8 = 0;
    }
    else {
      lVar8 = FUN_1805a48c0(local_58[0],
                            "The signed message (%d) is too small to hold the message header (%d), cert chain (%d), preamble (%d) signature (%d), target (%d) and a small command frame."
                           );
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    if (pcVar9 == (char *)0x0) {
      pcVar9 = (char *)0x0;
    }
    else {
      local_58[0] = pcVar9;
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_58[0] = (char *)0x14;
    local_90 = (char *)0x48;
    local_70 = (char *)0x24;
    local_78 = (char *)0x10;
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_80);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_78);
    FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_88);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_70);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),&local_90);
    FUN_1805b2520(*(undefined8 *)(lVar8 + 8),local_58);
    local_90 = (char *)CONCAT44(local_90._4_4_,0x1772);
    local_58[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar9 + 8),local_58);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_90);
  }
  if (local_68 != 0) {
    FUN_1805e1990(local_68,(ulonglong)(uVar2 + 0x34) + *param_2,param_2[1],local_98);
  }
}



############ FUN_ 180782210 size=161 ############

void FUN_180782210(void)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined4 local_28 [2];
  char *local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  local_20 = (char *)FUN_1811316e0(0x18);
  if (local_20 != (char *)0x0) {
    FUN_1805a48c0(local_20,"The iLok2 result packet is not supported by this ILok2Commander object")
    ;
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_20 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_28[0] = 0x178c;
  local_20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_28);
}



############ FUN_ 180784460 size=688 ############

void FUN_180784460(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x38;
  uVar3 = (param_1[2] - lVar4) / 0x38;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      lVar4 = FUN_180786690(&local_res18,puVar7,param_2 - uVar2);
      param_1[1] = lVar4;
      return;
    }
    if (param_2 != uVar2) {
      puVar8 = (undefined8 *)(param_2 * 0x38 + lVar4);
      for (puVar6 = puVar8; puVar6 != puVar7; puVar6 = puVar6 + 7) {
        (**(code **)*puVar6)(puVar6,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x492492492492492 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x492492492492492 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x38;
  local_res20 = uVar10;
  if (uVar10 < 0x492492492492493) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_180784578;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_180784578:
  FUN_180786690(&local_res18,puVar7 + uVar2 * 7,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar6 = puVar7;
  for (lVar9 = *param_1; lVar9 != lVar4; lVar9 = lVar9 + 0x38) {
    *puVar6 = pace::eden::thrift::authorize::DldLastAuthChangeDate::vftable;
    *(undefined4 *)(puVar6 + 1) = *(undefined4 *)(lVar9 + 8);
    FUN_1805a4070(puVar6 + 2);
    *(undefined2 *)(puVar6 + 6) = *(undefined2 *)(lVar9 + 0x30);
    puVar6 = puVar6 + 7;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 7);
    param_1[2] = (longlong)(puVar7 + uVar10 * 7);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 7) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x38) * 0x38)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180784720 size=851 ############

void FUN_180784720(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)param_1[1];
  lVar5 = *param_1;
  lVar3 = ((longlong)puVar6 - lVar5) +
          SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816((longlong)puVar6 - lVar5),8);
  uVar7 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816(param_1[2] - lVar5),8) +
          (param_1[2] - lVar5);
  uVar4 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  if (param_2 <= uVar4) {
    if (param_2 <= uVar7) {
      if (param_2 != uVar7) {
        puVar9 = (undefined8 *)(param_2 * 0xf8 + lVar5);
        for (puVar8 = puVar9; puVar8 != puVar6; puVar8 = puVar8 + 0x1f) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (longlong)puVar9;
      }
      return;
    }
    lVar3 = FUN_180786500(puVar6,param_2 - uVar7,param_3,0);
    param_1[1] = lVar3;
    return;
  }
  if (0x108421084210842 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar4 <= 0x108421084210842 - (uVar4 >> 1)) &&
     (uVar10 = (uVar4 >> 1) + uVar4, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar4 = uVar10 * 0xf8;
  if (uVar10 < 0x108421084210843) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        puVar6 = (undefined8 *)0x0;
      }
      else {
        puVar6 = (undefined8 *)FUN_1811316e0(uVar4);
      }
      goto LAB_18078483d;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar6 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar6[-1] = lVar3;
LAB_18078483d:
  FUN_180786500(puVar6 + uVar7 * 0x1f,param_2 - uVar7,param_3,0,puVar6 + uVar7 * 0x1f,puVar6,uVar11)
  ;
  lVar3 = param_1[1];
  puVar8 = puVar6;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0xf8) {
    *puVar8 = pace::eden::thrift::fusion::UserInfo::vftable;
    FUN_1805a4070(puVar8 + 1,lVar5 + 8);
    FUN_1805a4070(puVar8 + 5,lVar5 + 0x28);
    FUN_1805a4070(puVar8 + 9,lVar5 + 0x48);
    FUN_1805a4070(puVar8 + 0xd,lVar5 + 0x68);
    FUN_1805a4070(puVar8 + 0x11,lVar5 + 0x88);
    FUN_1805a4070(puVar8 + 0x15,lVar5 + 0xa8);
    FUN_1805a4070(puVar8 + 0x19);
    *(undefined1 *)(puVar8 + 0x1d) = *(undefined1 *)(lVar5 + 0xe8);
    *(undefined8 *)((longlong)puVar8 + 0xe9) = *(undefined8 *)(lVar5 + 0xe9);
    puVar8 = puVar8 + 0x1f;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar6;
    param_1[1] = (longlong)(puVar6 + param_2 * 0x1f);
    param_1[2] = (longlong)(puVar6 + uVar10 * 0x1f);
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar6; puVar8 = puVar8 + 0x1f) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xf8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180784a80 size=834 ############

void FUN_180784a80(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x8c0;
  uVar3 = (param_1[2] - lVar4) / 0x8c0;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0x8c0 + lVar4);
        for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x118) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar4 = FUN_180786730(&local_res18,puVar7,param_2 - uVar2);
    param_1[1] = lVar4;
    return;
  }
  if (0x1d41d41d41d41d < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x1d41d41d41d41d - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x8c0;
  local_res20 = uVar10;
  if (uVar10 < 0x1d41d41d41d41e) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_180784b9b;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_180784b9b:
  FUN_180786730(&local_res18,puVar7 + uVar2 * 0x118,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar9 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x8c0) {
    *puVar9 = pace::eden::thrift::pub::AuthSituation::vftable;
    *(undefined4 *)(puVar9 + 1) = *(undefined4 *)(lVar6 + 8);
    FUN_1805b5c00(puVar9 + 2,lVar6 + 0x10);
    *(undefined1 *)(puVar9 + 0x8e) = *(undefined1 *)(lVar6 + 0x470);
    *(undefined4 *)((longlong)puVar9 + 0x474) = *(undefined4 *)(lVar6 + 0x474);
    *(undefined4 *)(puVar9 + 0x8f) = *(undefined4 *)(lVar6 + 0x478);
    *(undefined4 *)((longlong)puVar9 + 0x47c) = *(undefined4 *)(lVar6 + 0x47c);
    FUN_1805b4dc0(puVar9 + 0x90);
    *(undefined4 *)(puVar9 + 0x117) = *(undefined4 *)(lVar6 + 0x8b8);
    *(undefined2 *)((longlong)puVar9 + 0x8bc) = *(undefined2 *)(lVar6 + 0x8bc);
    *(undefined1 *)((longlong)puVar9 + 0x8be) = *(undefined1 *)(lVar6 + 0x8be);
    puVar9 = puVar9 + 0x118;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x118);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x118);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x118) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x8c0) * 0x8c0)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180784dd0 size=769 ############

void FUN_180784dd0(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x2f0;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x2f0;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x2f0 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x5e) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_180575180(puVar7);
      puVar7 = puVar7 + 0x5e;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x572620ae4c415c < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x572620ae4c415c - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x2f0;
  if (uVar10 < 0x572620ae4c415d) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_180784eef;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_180784eef:
  lVar4 = uVar1 * 0x2f0 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_180575180(lVar4);
    lVar4 = lVar4 + 0x2f0;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x2f0) {
    FUN_1805b4bc0(uVar6);
    uVar6 = uVar6 + 0x2f0;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x2f0 + uVar3;
    param_1[2] = uVar10 * 0x2f0 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x5e) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x2f0) * 0x2f0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807850e0 size=941 ############

void FUN_1807850e0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar3 = ((longlong)puVar7 - lVar6) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)puVar7 - lVar6),8);
  uVar5 = (lVar3 >> 10) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar4 = (lVar3 >> 10) - (lVar3 >> 0x3f);
  local_res18 = param_3;
  if (param_2 <= uVar4) {
    if (uVar5 < param_2) {
      lVar3 = FUN_1807867f0(&local_res18,puVar7,param_2 - uVar5);
      param_1[1] = lVar3;
      return;
    }
    if (param_2 != uVar5) {
      puVar8 = (undefined8 *)(param_2 * 0x540 + lVar6);
      for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0xa8) {
        (**(code **)*puVar9)(puVar9,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x30c30c30c30c30 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar4 <= 0x30c30c30c30c30 - (uVar4 >> 1)) &&
     (uVar10 = (uVar4 >> 1) + uVar4, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar4 = uVar10 * 0x540;
  local_res20 = uVar10;
  if (uVar10 < 0x30c30c30c30c31) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar4);
      }
      goto LAB_1807851ff;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1807851ff:
  FUN_1807867f0(&local_res18,puVar7 + uVar5 * 0xa8,param_2 - uVar5);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar3; lVar6 = lVar6 + 0x540) {
    *puVar9 = pace::eden::thrift::fusion::SignerCredentials::vftable;
    FUN_1805b5c00(puVar9 + 1,lVar6 + 8);
    *(undefined4 *)(puVar9 + 0x8d) = *(undefined4 *)(lVar6 + 0x468);
    FUN_1805b46a0(puVar9 + 0x8e,lVar6 + 0x470);
    FUN_1805a4070(puVar9 + 0x91,lVar6 + 0x488);
    *(undefined4 *)(puVar9 + 0x95) = *(undefined4 *)(lVar6 + 0x4a8);
    FUN_1805a4070(puVar9 + 0x96,lVar6 + 0x4b0);
    *(undefined4 *)(puVar9 + 0x9a) = *(undefined4 *)(lVar6 + 0x4d0);
    FUN_1805a4070(puVar9 + 0x9b,lVar6 + 0x4d8);
    FUN_1805a4070(puVar9 + 0x9f,lVar6 + 0x4f8);
    FUN_180621fa0(puVar9 + 0xa3);
    *(undefined1 *)(puVar9 + 0xa6) = *(undefined1 *)(lVar6 + 0x530);
    *(undefined8 *)((longlong)puVar9 + 0x531) = *(undefined8 *)(lVar6 + 0x531);
    *(undefined2 *)((longlong)puVar9 + 0x539) = *(undefined2 *)(lVar6 + 0x539);
    *(undefined1 *)((longlong)puVar9 + 0x53b) = *(undefined1 *)(lVar6 + 0x53b);
    puVar9 = puVar9 + 0xa8;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0xa8);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0xa8);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0xa8) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 10) - (lVar3 >> 0x3f)) * 0x540)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180785490 size=769 ############

void FUN_180785490(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x460;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x460;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x460 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x8c) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1805b5e30(puVar7);
      puVar7 = puVar7 + 0x8c;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x3a83a83a83a83a < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x3a83a83a83a83a - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x460;
  if (uVar10 < 0x3a83a83a83a83b) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_1807855af;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_1807855af:
  lVar4 = uVar1 * 0x460 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1805b5e30(lVar4);
    lVar4 = lVar4 + 0x460;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x460) {
    FUN_1805b5c00(uVar6);
    uVar6 = uVar6 + 0x460;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x460 + uVar3;
    param_1[2] = uVar10 * 0x460 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x8c) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x460) * 0x460)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807857a0 size=977 ############

void FUN_1807857a0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar4) / 0x160;
  uVar3 = (param_1[2] - lVar4) / 0x160;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
        FUN_180677d60(puVar10);
        puVar10 = puVar10 + 0x2c;
      }
      param_1[1] = (longlong)puVar10;
      return;
    }
    if (param_2 != uVar2) {
      puVar7 = (undefined8 *)(param_2 * 0x160 + lVar4);
      for (puVar8 = puVar7; puVar8 != puVar10; puVar8 = puVar8 + 0x2c) {
        (**(code **)*puVar8)(puVar8,0);
      }
      param_1[1] = (longlong)puVar7;
    }
    return;
  }
  if (0xba2e8ba2e8ba2e < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar3 <= 0xba2e8ba2e8ba2e - (uVar3 >> 1)) && (uVar9 = (uVar3 >> 1) + uVar3, uVar9 < param_2))
  {
    uVar9 = param_2;
  }
  uVar3 = uVar9 * 0x160;
  if (uVar9 < 0xba2e8ba2e8ba2f) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1807858bf;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1807858bf:
  puVar8 = puVar10 + uVar2 * 0x2c;
  for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_180677d60(puVar8);
    puVar8 = puVar8 + 0x2c;
  }
  lVar4 = param_1[1];
  puVar8 = puVar10;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x160) {
    *puVar8 = pace::eden::thrift::authorize::floating::ServerConnectInfo::vftable;
    FUN_1805a4070(puVar8 + 1,lVar6 + 8);
    *(undefined4 *)(puVar8 + 5) = *(undefined4 *)(lVar6 + 0x28);
    FUN_1805a4070(puVar8 + 6,lVar6 + 0x30);
    FUN_180677e40(puVar8 + 10,lVar6 + 0x50);
    FUN_180677e40(puVar8 + 0x17,lVar6 + 0xb8);
    *(undefined1 *)(puVar8 + 0x24) = *(undefined1 *)(lVar6 + 0x120);
    *(undefined1 *)((longlong)puVar8 + 0x121) = *(undefined1 *)(lVar6 + 0x121);
    *(undefined1 *)((longlong)puVar8 + 0x122) = *(undefined1 *)(lVar6 + 0x122);
    *(undefined1 *)((longlong)puVar8 + 0x123) = *(undefined1 *)(lVar6 + 0x123);
    puVar8[0x25] = *(undefined8 *)(lVar6 + 0x128);
    FUN_1805a4070(puVar8 + 0x26);
    puVar8[0x2a] = *(undefined8 *)(lVar6 + 0x150);
    *(undefined2 *)(puVar8 + 0x2b) = *(undefined2 *)(lVar6 + 0x158);
    *(undefined1 *)((longlong)puVar8 + 0x15a) = *(undefined1 *)(lVar6 + 0x15a);
    puVar8 = puVar8 + 0x2c;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x2c);
    param_1[2] = (longlong)(puVar10 + uVar9 * 0x2c);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar10; puVar8 = puVar8 + 0x2c) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x160) * 0x160)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180785b80 size=731 ############

void FUN_180785b80(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  undefined8 *puVar9;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar9 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar9 - lVar3) / 6 + ((longlong)puVar9 - lVar3 >> 0x3f);
  uVar6 = (lVar5 >> 3) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0x30;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (uVar6 < param_2) {
      lVar3 = FUN_180786960(&local_res18,puVar9,param_2 - uVar6);
      param_1[1] = lVar3;
      return;
    }
    if (param_2 != uVar6) {
      puVar8 = (undefined8 *)(param_2 * 0x30 + lVar3);
      for (puVar7 = puVar8; puVar7 != puVar9; puVar7 = puVar7 + 6) {
        (**(code **)*puVar7)(puVar7,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x555555555555555 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x555555555555555 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0x30;
  local_res20 = uVar10;
  if (uVar10 < 0x555555555555556) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar9 = (undefined8 *)0x0;
      }
      else {
        puVar9 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_180785c9d;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar9 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar9[-1] = lVar3;
LAB_180785c9d:
  FUN_180786960(&local_res18,puVar9 + uVar6 * 6,param_2 - uVar6);
  lVar3 = param_1[1];
  puVar7 = puVar9;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0x30) {
    *puVar7 = pace::eden::thrift::fusion::CloudSessionStatusResults::vftable;
    FUN_1805a4070(puVar7 + 1);
    *(undefined1 *)(puVar7 + 5) = *(undefined1 *)(lVar5 + 0x28);
    *(undefined2 *)((longlong)puVar7 + 0x29) = *(undefined2 *)(lVar5 + 0x29);
    puVar7 = puVar7 + 6;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar9;
    param_1[1] = (longlong)(puVar9 + param_2 * 6);
    param_1[2] = (longlong)(puVar9 + uVar10 * 6);
    return;
  }
  puVar9 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar9; puVar7 = puVar7 + 6) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x30) * 0x30)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180785e60 size=866 ############

void FUN_180785e60(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x1d0;
  uVar3 = (param_1[2] - lVar4) / 0x1d0;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0x1d0 + lVar4);
        for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x3a) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar4 = FUN_180786a00(&local_res18,puVar7,param_2 - uVar2);
    param_1[1] = lVar4;
    return;
  }
  if (0x8d3dcb08d3dcb0 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x8d3dcb08d3dcb0 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x1d0;
  local_res20 = uVar10;
  if (uVar10 < 0x8d3dcb08d3dcb1) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_180785f7b;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_180785f7b:
  FUN_180786a00(&local_res18,puVar7 + uVar2 * 0x3a,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar9 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x1d0) {
    *puVar9 = pace::eden::thrift::fusion::CachedProductLocationData::vftable;
    puVar9[1] = *(undefined8 *)(lVar6 + 8);
    puVar9[2] = *(undefined8 *)(lVar6 + 0x10);
    FUN_1805a4070(puVar9 + 3,lVar6 + 0x18);
    FUN_1805b6070(puVar9 + 7,lVar6 + 0x38);
    *(undefined4 *)(puVar9 + 0x31) = *(undefined4 *)(lVar6 + 0x188);
    *(undefined1 *)((longlong)puVar9 + 0x18c) = *(undefined1 *)(lVar6 + 0x18c);
    puVar9[0x32] = pace::eden::thrift::pub::AuthProduct::vftable;
    *(undefined4 *)(puVar9 + 0x33) = *(undefined4 *)(lVar6 + 0x198);
    *(undefined4 *)((longlong)puVar9 + 0x19c) = *(undefined4 *)(lVar6 + 0x19c);
    *(undefined2 *)(puVar9 + 0x34) = *(undefined2 *)(lVar6 + 0x1a0);
    FUN_1805a4070(puVar9 + 0x35);
    puVar9[0x39] = *(undefined8 *)(lVar6 + 0x1c8);
    puVar9 = puVar9 + 0x3a;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x3a);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x3a);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x3a) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x1d0) * 0x1d0)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807861d0 size=802 ############

void FUN_1807861d0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar7 - lVar3) / 0x26 + ((longlong)puVar7 - lVar3 >> 0x3f);
  uVar6 = (lVar5 >> 2) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0x98;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (uVar6 < param_2) {
      lVar3 = FUN_180786b20(&local_res18,puVar7,param_2 - uVar6);
      param_1[1] = lVar3;
      return;
    }
    if (param_2 != uVar6) {
      puVar8 = (undefined8 *)(param_2 * 0x98 + lVar3);
      for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x13) {
        (**(code **)*puVar9)(puVar9,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x1af286bca1af286 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x1af286bca1af286 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0x98;
  local_res20 = uVar10;
  if (uVar10 < 0x1af286bca1af287) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_1807862eb;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1807862eb:
  FUN_180786b20(&local_res18,puVar7 + uVar6 * 0x13,param_2 - uVar6);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0x98) {
    *puVar9 = pace::eden::thrift::fusion::RemoteServerNotification::vftable;
    *(undefined4 *)(puVar9 + 1) = *(undefined4 *)(lVar5 + 8);
    FUN_1805a4070(puVar9 + 2,lVar5 + 0x10);
    FUN_1805a4070(puVar9 + 6,lVar5 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar5 + 0x50);
    FUN_1805a4070(puVar9 + 0xe);
    *(undefined1 *)(puVar9 + 0x12) = *(undefined1 *)(lVar5 + 0x90);
    *(undefined4 *)((longlong)puVar9 + 0x91) = *(undefined4 *)(lVar5 + 0x91);
    *(undefined2 *)((longlong)puVar9 + 0x95) = *(undefined2 *)(lVar5 + 0x95);
    puVar9 = puVar9 + 0x13;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x13);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x13);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x13) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x98) * 0x98)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180940330 size=115 ############

void FUN_180940330(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x1e8;
  if (param_2 < 0x864b8a7de6d1d7) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 1809f9520 size=782 ############

void FUN_1809f9520(ulonglong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar6 = (undefined8 *)param_1[1];
  uVar9 = *param_1;
  lVar3 = ((longlong)puVar6 - uVar9) +
          SUB168(SEXT816(-0x6ab71b6861f7d603) * SEXT816((longlong)((longlong)puVar6 - uVar9)),8);
  uVar10 = (lVar3 >> 0xb) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x6ab71b6861f7d603) * SEXT816((longlong)(param_1[2] - uVar9)),8) +
          (param_1[2] - uVar9);
  uVar4 = (lVar3 >> 0xb) - (lVar3 >> 0x3f);
  if (param_2 <= uVar4) {
    if (param_2 <= uVar10) {
      if (param_2 != uVar10) {
        puVar8 = (undefined8 *)(param_2 * 0xdb8 + uVar9);
        for (puVar7 = puVar8; puVar7 != puVar6; puVar7 = puVar7 + 0x1b7) {
          (**(code **)*puVar7)(puVar7,0);
        }
        param_1[1] = (ulonglong)puVar8;
      }
      return;
    }
    for (lVar3 = param_2 - uVar10; lVar3 != 0; lVar3 = lVar3 + -1) {
      FUN_1809f9840(puVar6);
      puVar6 = puVar6 + 0x1b7;
    }
    param_1[1] = (ulonglong)puVar6;
    return;
  }
  if (0x12a91c92f3c105 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar4 <= 0x12a91c92f3c105 - (uVar4 >> 1)) && (uVar9 = (uVar4 >> 1) + uVar4, uVar9 < param_2))
  {
    uVar9 = param_2;
  }
  uVar4 = uVar9 * 0xdb8;
  if (uVar9 < 0x12a91c92f3c106) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_1809f9643;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar3;
LAB_1809f9643:
  lVar3 = uVar10 * 0xdb8 + uVar4;
  for (lVar11 = param_2 - uVar10; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1809f9840(lVar3);
    lVar3 = lVar3 + 0xdb8;
  }
  uVar10 = param_1[1];
  uVar5 = uVar4;
  for (uVar2 = *param_1; uVar2 != uVar10; uVar2 = uVar2 + 0xdb8) {
    FUN_1806748d0(uVar5);
    uVar5 = uVar5 + 0xdb8;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = uVar4;
    param_1[1] = param_2 * 0xdb8 + uVar4;
    param_1[2] = uVar9 * 0xdb8 + uVar4;
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 0x1b7) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x6ab71b6861f7d603) * SEXT816((longlong)(param_1[2] - (longlong)pvVar1)),8
                ) + (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 0xb) - (lVar3 >> 0x3f)) * 0xdb8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809f90c0 size=1102 ############

void FUN_1809f90c0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar4 = ((longlong)puVar10 - lVar6) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)puVar10 - lVar6),8);
  uVar9 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  lVar4 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar5 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  if (param_2 <= uVar5) {
    if (param_2 <= uVar9) {
      if (param_2 != uVar9) {
        puVar7 = (undefined8 *)(param_2 * 0x150 + lVar6);
        for (puVar8 = puVar7; puVar8 != puVar10; puVar8 = puVar8 + 0x2a) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (longlong)puVar7;
      }
      return;
    }
    for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1805b5af0(puVar10);
      puVar10 = puVar10 + 0x2a;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0xc30c30c30c30c3 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar2 = param_2;
  if ((uVar5 <= 0xc30c30c30c30c3 - (uVar5 >> 1)) && (uVar2 = (uVar5 >> 1) + uVar5, uVar2 < param_2))
  {
    uVar2 = param_2;
  }
  uVar5 = uVar2 * 0x150;
  if (uVar2 < 0xc30c30c30c30c4) {
    if (uVar5 < 0x1000) {
      if (uVar5 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar5);
      }
      goto LAB_1809f91dd;
    }
  }
  else {
    uVar5 = 0xffffffffffffffff;
  }
  uVar3 = uVar5 + 0x27;
  if (uVar3 <= uVar5) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar3);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1809f91dd:
  puVar8 = puVar10 + uVar9 * 0x2a;
  for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1805b5af0(puVar8);
    puVar8 = puVar8 + 0x2a;
  }
  lVar4 = param_1[1];
  puVar8 = puVar10;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x150) {
    *puVar8 = pace::eden::thrift::pub::IlokInfo::vftable;
    puVar8[1] = pace::eden::thrift::pub::IlokIdentifier::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar8[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar8 + 4) = *(undefined2 *)(lVar6 + 0x20);
    FUN_1805a4070(puVar8 + 5,lVar6 + 0x28);
    FUN_1805a4070(puVar8 + 9,lVar6 + 0x48);
    *(undefined4 *)(puVar8 + 0xd) = *(undefined4 *)(lVar6 + 0x68);
    FUN_1805a4070(puVar8 + 0xe,lVar6 + 0x70);
    puVar8[0x12] = pace::eden::thrift::pub::ZdtAndLosInfo::vftable;
    FUN_1805a4070(puVar8 + 0x13,lVar6 + 0x98);
    FUN_1805a4070(puVar8 + 0x17,lVar6 + 0xb8);
    FUN_1805a4070(puVar8 + 0x1b,lVar6 + 0xd8);
    FUN_1805a4070(puVar8 + 0x1f,lVar6 + 0xf8);
    *(undefined1 *)(puVar8 + 0x23) = *(undefined1 *)(lVar6 + 0x118);
    *(undefined1 *)((longlong)puVar8 + 0x119) = *(undefined1 *)(lVar6 + 0x119);
    *(undefined1 *)((longlong)puVar8 + 0x11a) = *(undefined1 *)(lVar6 + 0x11a);
    *(undefined4 *)((longlong)puVar8 + 0x11b) = *(undefined4 *)(lVar6 + 0x11b);
    *(undefined2 *)((longlong)puVar8 + 0x11f) = *(undefined2 *)(lVar6 + 0x11f);
    *(undefined1 *)((longlong)puVar8 + 0x121) = *(undefined1 *)(lVar6 + 0x121);
    FUN_1805a4070(puVar8 + 0x25,lVar6 + 0x128);
    *(undefined4 *)(puVar8 + 0x29) = *(undefined4 *)(lVar6 + 0x148);
    *(undefined2 *)((longlong)puVar8 + 0x14c) = *(undefined2 *)(lVar6 + 0x14c);
    *(undefined1 *)((longlong)puVar8 + 0x14e) = *(undefined1 *)(lVar6 + 0x14e);
    puVar8 = puVar8 + 0x2a;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x2a);
    param_1[2] = (longlong)(puVar10 + uVar2 * 0x2a);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar10; puVar8 = puVar8 + 0x2a) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  lVar4 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar4 >> 8) - (lVar4 >> 0x3f)) * 0x150)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807d9f30 size=97 ############

undefined8 * FUN_1807d9f30(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Asn1ParserCert>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1807dfba0 size=744 ############

void FUN_1807dfba0(longlong param_1,int param_2,undefined4 *param_3,longlong param_4)

{
  int iVar1;
  char *pcVar2;
  undefined8 uVar3;
  char *pcVar4;
  longlong lVar5;
  char *local_res8;
  int local_res10 [2];
  int local_68;
  uint local_64;
  undefined4 local_60 [2];
  longlong local_58;
  char *local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  pcVar4 = (char *)0x0;
  local_res10[0] = param_2;
  if (*(char *)(param_1 + 8) == '\0') {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"ILokCert object has not been initialized");
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar2;
    if (pcVar2 != (char *)0x0) {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
      pcVar4 = pcVar2;
    }
    local_res8 = (char *)CONCAT44(local_res8._4_4_,0x125);
    local_50 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilokcert.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_50);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  FUN_18070ac10(param_4);
  if (param_2 == 0) {
    FUN_180709c60(param_4,param_1 + 0xc0);
    FUN_180709c60(param_4 + 0x38,param_1 + 0xf8);
    *param_3 = *(undefined4 *)(param_1 + 0x130);
  }
  else {
    local_res8._0_4_ =
         FUN_1809fe6d0(param_1 + 0x1b0,
                       (ulonglong)*(uint *)(param_1 + 0x1a8) + *(longlong *)(param_1 + 0x1a0),
                       *(undefined4 *)(param_1 + 0x1ac),param_2,&local_68,param_3,&local_58,
                       &local_64,local_60,0);
    if ((int)local_res8 != 0) {
      local_50 = (char *)FUN_1811316e0(0x18);
      if (local_50 != (char *)0x0) {
        pcVar4 = (char *)FUN_1805a48c0(local_50,"[%d] CERT_FindAndExtractPublicKey error");
      }
      lVar5 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(pcVar4 + 8),&local_res8);
      local_res8 = (char *)CONCAT44(local_res8._4_4_,0x148);
      local_50 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilokcert.cpp";
      uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_50);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar3,&local_res8);
    }
    if (local_58 == 0) {
      *param_3 = 0xffffffff;
    }
    else {
      if (local_68 != 0) {
        local_res8 = (char *)FUN_1811316e0(0x18);
        if (local_res8 != (char *)0x0) {
          pcVar4 = (char *)FUN_1805a48c0(local_res8,
                                         "Public key at index (%d) is not an ECC key.  It\'s dwPKAlgorithmID = %d"
                                        );
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(pcVar4 + 8),local_res10);
        FUN_18060e760(*(undefined8 *)(pcVar4 + 8),&local_68);
        local_res10[0] = 0x157;
        local_res8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilokcert.cpp";
        uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar3,local_res10);
      }
      iVar1 = FUN_180a028e0(*param_3,(ulonglong)local_64 + local_58,local_60[0],param_4);
      local_res8 = (char *)CONCAT44(local_res8._4_4_,iVar1);
      if (iVar1 != 0) {
        local_50 = (char *)FUN_1811316e0(0x18);
        if (local_50 != (char *)0x0) {
          pcVar4 = (char *)FUN_1805a48c0(local_50,"[%d] CERT_InterpretECC_PublicKeyValue error");
        }
        lVar5 = FUN_1805c0260();
        FUN_18060e760(*(undefined8 *)(pcVar4 + 8),&local_res8);
        local_res10[0] = 0x160;
        local_res8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilokcert.cpp";
        uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar3,local_res10);
      }
    }
  }
  return;
}



############ FUN_ 1807e93f0 size=1188 ############

void FUN_1807e93f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  longlong lVar2;
  byte bVar3;
  uint uVar4;
  undefined8 uVar5;
  char *pcVar6;
  code *UNRECOVERED_JUMPTABLE;
  uint uVar7;
  longlong lStack_138;
  longlong local_130;
  longlong local_128;
  undefined8 local_110;
  undefined8 local_100;
  undefined1 *local_f0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined4 local_c0 [6];
  uint local_a8;
  uint local_a4;
  char *local_98 [4];
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)&lStack_138;
  uVar7 = (uint)&stack0x00000000;
  uVar4 = (((uVar7 & 0x2bff) + 1) * (uVar7 & 0x2bff) + 7) % 0x51 |
          ((uVar7 & 0xfff) * (uVar7 & 0xfff) + 1) % 7;
  local_a8 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xfff1 ^ 0xf3d1;
  pcVar6 = (char *)0x0;
  uVar4 = ((uVar7 & 0x1ff) * (uVar7 & 0x1ff) * 0x10 + 4) % 0x13;
  uVar4 = (int)(-uVar4 | uVar4) >> 0x1f;
  local_a4 = ((int)(-uVar4 | uVar4) >> 0x1f) * 0x2059 & 0x9ba5U ^ 0x9df5;
  local_100 = 0;
  local_d8 = 0x1908;
  local_f0 = &LAB_1805e9d08;
  uVar5 = 0x1805eb610;
  local_110 = uVar5;
  local_d0 = param_2;
  local_78 = param_3;
  local_70 = param_4;
  if (*(char *)(param_1 + 8) == '\0') {
    local_98[0] = (char *)FUN_1811316e0(0x18);
    if (local_98[0] != (char *)0x0) {
      FUN_1805a48c0(local_98[0],"ILokCert object has not been initialized");
    }
    pcVar1 = (char *)FUN_1811316e0(0x18);
    if (pcVar1 != (char *)0x0) {
      local_98[0] = pcVar1;
      FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
      pcVar6 = pcVar1;
    }
    local_c0[0] = 0x5cd;
    local_98[0] = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilokcert.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_c0);
  }
  FUN_1807eae3f();
  bVar3 = (byte)uVar5;
                    /* WARNING: Call to offcut address within same function */
  lVar2 = func_0x0001807e9760();
  *(byte *)(lVar2 + -0x7f) = *(byte *)(lVar2 + -0x7f) & bVar3;
  DAT_26c481f8 = DAT_26c481f8 + '\x10';
  local_130 = local_128 + 0x361b;
  lStack_138 = local_128 + 0x580;
  UNRECOVERED_JUMPTABLE = (code *)(local_128 + 0x22e3);
  local_128 = local_128 + 0x1b7;
                    /* WARNING: Could not recover jumptable at 0x0001807e98c1. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



############ FUN_ 1808073d0 size=180 ############

ulonglong FUN_1808073d0(ulonglong *param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  uVar2 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (param_2 != 0) {
    if (0x7ffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = param_2 * 0x20;
    uVar3 = 0xffffffffffffffff;
    if ((param_2 < 0x800000000000000) && (uVar3 = uVar4, uVar4 < 0x1000)) {
      if (uVar4 != 0) {
        uVar2 = FUN_1811316e0(uVar4);
      }
    }
    else {
      uVar2 = uVar3 + 0x27;
      if (uVar3 + 0x27 <= uVar3) {
        uVar2 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar2);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar2 - 8) = lVar1;
    }
    *param_1 = uVar2;
    param_1[1] = uVar2;
    param_1[2] = uVar4 + *param_1;
    uVar2 = CONCAT71((int7)(*param_1 >> 8),1);
  }
  return uVar2;
}



############ FUN_ 1808074d0 size=63 ############

void FUN_1808074d0(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x30);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 180807510 size=63 ############

void FUN_180807510(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x48);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 1808077f0 size=116 ############

void FUN_1808077f0(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x50;
  if (param_2 < 0x333333333333334) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 180847690 size=172 ############

undefined8
FUN_180847690(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180a86580();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorSignature::RTTI_Type_Descriptor,1
                           );
    uVar3 = FUN_180aade30(lVar2,param_2,param_3,uVar3,param_4);
  }
  return uVar3;
}



############ FUN_ 180846e40 size=97 ############

undefined8 * FUN_180846e40(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorSignature>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808be9a0 size=97 ############

undefined8 * FUN_1808be9a0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorActivationInfo>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808f2c40 size=196 ############

undefined8
FUN_1808f2c40(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180af3800();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorActivationInfo::
                             RTTI_Type_Descriptor,CONCAT44(uVar4,1));
    uVar3 = FUN_180afefd0(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 18086c340 size=196 ############

undefined8
FUN_18086c340(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180ab8940();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorAuthorization::
                             RTTI_Type_Descriptor,CONCAT44(uVar4,1));
    uVar3 = FUN_180ac45b0(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180819130 size=196 ############

undefined8
FUN_180819130(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180813b40();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorDatabaseInfo::
                             RTTI_Type_Descriptor,CONCAT44(uVar4,1));
    uVar3 = FUN_180a54b50(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180818fa0 size=97 ############

undefined8 * FUN_180818fa0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorDatabaseInfo>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a3de20 size=170 ############

void FUN_180a3de20(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 local_res10;
  undefined8 local_res18;
  undefined4 local_res20 [2];
  
  local_res10 = param_2;
  local_res18 = param_3;
  local_res20[0] = param_4;
  lVar1 = FUN_1811316e0(0x18);
  if (lVar1 == 0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(lVar1,
                          "LsCachedObjectVector<>::at: Index out of range. Expected 0 <= index < %u, but saw index = %u for entityId: %d. Error detected in file %s at line %d."
                         );
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1805b2520(*(undefined8 *)(lVar1 + 8),&local_res10);
  FUN_1805b2520(*(undefined8 *)(lVar1 + 8),&local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(lVar1 + 8),local_res20);
}



############ FUN_ 180aab0f0 size=1329 ############

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

uint FUN_180aab0f0(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 uVar4;
  longlong *plVar5;
  undefined4 uVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 uVar9;
  uint uVar10;
  uint uVar11;
  bool bVar12;
  int unaff_retaddr;
  undefined8 in_stack_ffffffffffffff48;
  undefined4 uVar13;
  undefined8 local_70;
  longlong *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  
  uVar13 = (undefined4)((ulonglong)in_stack_ffffffffffffff48 >> 0x20);
  local_58 = 0xfffffffffffffffe;
  uVar9 = 0;
  if (*(longlong *)(param_1 + 0x48) == 0) {
    lVar7 = FUN_180aaca20(param_1);
    uVar4 = *(undefined8 *)(param_1 + 0x40);
    lVar8 = FUN_1811316e0(0x38);
    if (lVar8 != 0) {
      uVar6 = FUN_180b4a640();
      uVar9 = FUN_180a3d1e0(uVar4,uVar6);
      uVar9 = __RTDynamicCast(uVar9,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorSignedInfo::
                               RTTI_Type_Descriptor,CONCAT44(uVar13,1));
      uVar9 = FUN_180aa5ec0(lVar8,param_1,lVar7 + 0x98,uVar9,FUN_180aa9f00,param_1,1);
    }
    local_70 = uVar9;
    FUN_180aa8920(&local_68,uVar9);
    FUN_1805ae620(&local_70,uVar9,uVar9);
    local_50 = local_70;
    uVar9 = *(undefined8 *)(param_1 + 0x48);
    *(undefined8 *)(param_1 + 0x48) = local_70;
    plVar5 = *(longlong **)(param_1 + 0x50);
    *(longlong **)(param_1 + 0x50) = local_68;
    local_70 = uVar9;
    local_68 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar5 + 1;
      lVar7 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar2 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
  }
  lVar7 = FUN_180aaca20(param_1);
  lVar8 = FUN_180aaca20(param_1);
  local_60 = *(undefined8 *)(param_1 + 0x48);
  if (lVar7 != DAT_18266f170) {
    FUN_180a3b7d0(local_60,lVar8 + 0x98);
    DAT_18266f170 = lVar7;
  }
  uVar11 = (DAT_1814bb6fc + -0x2b7f4a52) * -0x395b586d;
  uVar11 = uVar11 ^ uVar11 >> 0x10;
  uVar10 = uVar11;
  do {
    bVar12 = (int)uVar10 < 0;
    FUN_180aaa512(0x4100);
    if (!bVar12) {
      uVar11 = ~(~uVar11 + 1) + 1;
    }
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar11 = (DAT_1814bb700 + uVar11) * -0x395b586d;
  return ((uVar11 >> 0x10 ^ uVar11) + DAT_1814bb704) * -0x395b586d >> 0x10;
}



############ FUN_ 180aa8920 size=97 ############

undefined8 * FUN_180aa8920(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorSignedInfo>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808bed20 size=172 ############

undefined8
FUN_1808bed20(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180af3800();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorActivationInfo::
                             RTTI_Type_Descriptor,1);
    uVar3 = FUN_180aff020(lVar2,param_2,param_3,uVar3,param_4);
  }
  return uVar3;
}



############ FUN_ 1808bedd0 size=196 ############

undefined8
FUN_1808bedd0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180afadb0();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorExpirationWarning::
                             RTTI_Type_Descriptor,CONCAT44(uVar4,1));
    uVar3 = FUN_180afe950(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 1808bebd0 size=97 ############

undefined8 * FUN_1808bebd0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorExpirationWarning>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808ecd50 size=1277 ############

/* WARNING: Removing unreachable block (ram,0x0001808ecf67) */
/* WARNING: Removing unreachable block (ram,0x0001808ecdc2) */
/* WARNING: Removing unreachable block (ram,0x0001808eced7) */

longlong FUN_1808ecd50(longlong *param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  longlong lVar3;
  longlong *plVar4;
  int iVar5;
  undefined4 uVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 uVar9;
  longlong lVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  undefined1 auStack_f8 [32];
  code *local_d8;
  longlong *local_d0;
  undefined1 local_c8;
  uint local_90;
  uint local_8c;
  longlong local_88;
  longlong *local_80;
  undefined8 local_78;
  longlong local_70;
  undefined8 local_68;
  longlong local_60;
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_f8;
  lVar10 = 0;
  uVar12 = (uint)&stack0x00000000 & 0x27f;
  iVar13 = (uVar12 + 2) * (uVar12 + 1) * uVar12;
  if (((ulonglong)&stack0x00000000 & 0x440) == 0) {
    iVar11 = 0x2ea71351;
    iVar5 = 0x3e1d7d4;
  }
  else {
    iVar11 = 0x4685b;
    iVar5 = 0x1ab040;
  }
  local_8c = (uint)(iVar5 == iVar11) ^
             (((iVar13 >> 1) - (iVar13 >> 3)) + iVar13 * 0x55555555 >> 0x1e) + 0x5092U ^ 0x59a2;
  uVar12 = (uint)&stack0x00000000 & 0x1bf;
  local_90 = ((uVar12 + 2) * (uVar12 + 1) * uVar12) % 3 + 0xe432 ^ 0xe1b2;
  local_78 = param_2;
  if (param_1[0x13] == 0) {
    lVar7 = param_1[3];
    if (lVar7 == 0) {
      lVar7 = (**(code **)(*param_1 + 0x48))(param_1);
    }
    lVar3 = param_1[8];
    lVar8 = FUN_1811316e0(0x38);
    local_70 = lVar8;
    if (lVar8 != 0) {
      uVar6 = FUN_180aded80();
      uVar9 = FUN_180a3d1e0(lVar3,uVar6);
      local_d8 = (code *)CONCAT44(local_d8._4_4_,1);
      uVar9 = __RTDynamicCast(uVar9,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorAuthKey::RTTI_Type_Descriptor);
      local_c8 = 1;
      local_d8 = FUN_1808ec6c0;
      local_d0 = param_1;
      lVar10 = FUN_1808af080(lVar8,param_1,lVar7 + 0x188,uVar9);
    }
    local_88 = lVar10;
    FUN_1808bea10(&local_80,lVar10);
    FUN_1805ae620(&local_88,lVar10,lVar10);
    local_60 = local_88;
    lVar10 = param_1[0x13];
    param_1[0x13] = local_88;
    plVar4 = (longlong *)param_1[0x14];
    param_1[0x14] = (longlong)local_80;
    local_88 = lVar10;
    local_80 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar10 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar10 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar13 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  lVar10 = param_1[3];
  if (lVar10 == 0) {
    lVar10 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  lVar7 = param_1[3];
  if (lVar7 == 0) {
    lVar7 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  local_70 = param_1[0x13];
  if (lVar10 != DAT_182667a78) {
    lVar7 = FUN_180a3b7d0(local_70,lVar7 + 0x188);
    DAT_182667a78 = lVar10;
  }
  return lVar7;
}



############ FUN_ 1808bea10 size=97 ############

undefined8 * FUN_1808bea10(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorAuthKey>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808beea0 size=196 ############

undefined8
FUN_1808beea0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_1808b5ec0();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorLicense::RTTI_Type_Descriptor,
                            CONCAT44(uVar4,1));
    uVar3 = FUN_180afec90(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 1808bec40 size=97 ############

undefined8 * FUN_1808bec40(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorLicense>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180afdd40 size=196 ############

undefined8
FUN_180afdd40(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180b3b250();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorIlokAuth::RTTI_Type_Descriptor,
                            CONCAT44(uVar4,1));
    uVar3 = FUN_180b990d0(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180afdcd0 size=97 ############

undefined8 * FUN_180afdcd0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorIlokAuth>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a8ce60 size=172 ############

undefined8
FUN_180a8ce60(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180b327a0();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorAssociativeArray::
                             RTTI_Type_Descriptor,1);
    uVar3 = FUN_180b6c1c0(lVar2,param_2,param_3,uVar3,param_4);
  }
  return uVar3;
}



############ FUN_ 180a8cd80 size=97 ############

undefined8 * FUN_180a8cd80(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::LsObjectRelationVectorAssociativeArray>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a8ff50 size=1017 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180a903f9) overlaps instruction at (ram,0x000180a903f7)
    */
/* WARNING: Removing unreachable block (ram,0x000180a8ffc2) */
/* WARNING: Removing unreachable block (ram,0x000180a903f7) */

char FUN_180a8ff50(longlong *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  byte bVar5;
  undefined4 uVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 uVar9;
  longlong lVar10;
  uint uVar11;
  ulonglong uVar12;
  ulonglong in_R11;
  int unaff_retaddr;
  undefined8 in_stack_ffffffffffffff68;
  undefined4 uVar13;
  longlong local_50;
  longlong *local_48 [2];
  
  uVar13 = (undefined4)((ulonglong)in_stack_ffffffffffffff68 >> 0x20);
  if (param_1[9] == 0) {
    lVar7 = param_1[3];
    if (lVar7 == 0) {
      lVar7 = (**(code **)(*param_1 + 0x48))(param_1);
    }
    lVar10 = param_1[8];
    lVar8 = FUN_1811316e0(0x38);
    if (lVar8 == 0) {
      lVar7 = 0;
    }
    else {
      uVar6 = FUN_180b41620();
      uVar9 = FUN_180a3d1e0(lVar10,uVar6);
      uVar9 = __RTDynamicCast(uVar9,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorSignedDigest::
                               RTTI_Type_Descriptor,CONCAT44(uVar13,1));
      lVar7 = FUN_180b72840(lVar8,param_1,lVar7 + 0x138,uVar9,FUN_180aa1cf0,param_1,1);
    }
    local_50 = lVar7;
    FUN_180a8cdf0(local_48,lVar7);
    FUN_1805ae620(&local_50,lVar7,lVar7);
    lVar7 = param_1[9];
    param_1[9] = local_50;
    plVar4 = (longlong *)param_1[10];
    param_1[10] = (longlong)local_48[0];
    local_50 = lVar7;
    local_48[0] = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar7 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  lVar7 = param_1[3];
  if (lVar7 == 0) {
    lVar7 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  lVar10 = param_1[3];
  if (lVar10 == 0) {
    lVar10 = (**(code **)(*param_1 + 0x48))(param_1);
  }
  if (lVar7 != DAT_18266f118) {
    FUN_180a3b7d0(param_1[9],lVar10 + 0x138);
    DAT_18266f118 = lVar7;
  }
  lVar7 = 0x180000000;
  do {
    uVar12 = 0;
    bVar5 = FUN_180a91530(0xd510,lVar7);
    if ((uVar12 & 0xc0) != 0) {
      return (bVar5 | 0xeb) + 0x26;
    }
    lVar10 = lVar7 + ~in_R11 + 1;
    lVar7 = ~((~in_R11 + 1) - lVar10) + 1;
    in_R11 = -(lVar10 - lVar7);
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  do {
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  func_0x000180a8f1f8();
  func_0x000180a904f0();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180a8cdf0 size=97 ############

undefined8 * FUN_180a8cdf0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorSignedDigest>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a8cf10 size=196 ############

undefined8
FUN_180a8cf10(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180a86580();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorSignature::RTTI_Type_Descriptor,
                            CONCAT44(uVar4,1));
    uVar3 = FUN_180aadde0(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180b50dc0 size=196 ############

undefined8
FUN_180b50dc0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180b4a640();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorSignedInfo::RTTI_Type_Descriptor,
                            CONCAT44(uVar4,1));
    uVar3 = FUN_180aa5ec0(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180b60140 size=196 ############

undefined8
FUN_180b60140(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined1 param_6)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 in_stack_ffffffffffffffc8;
  undefined4 uVar4;
  
  uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffffc8 >> 0x20);
  lVar2 = FUN_1811316e0(0x38);
  if (lVar2 == 0) {
    uVar3 = 0;
  }
  else {
    uVar1 = FUN_180b327a0();
    uVar3 = FUN_180a3d1e0(param_1,uVar1);
    uVar3 = __RTDynamicCast(uVar3,0,&license_services::LsCachedObjectVectorBase::
                                     RTTI_Type_Descriptor,
                            &license_services::LsCachedObjectVectorAssociativeArray::
                             RTTI_Type_Descriptor,CONCAT44(uVar4,1));
    uVar3 = FUN_180b6c170(lVar2,param_2,param_3,uVar3,param_4,param_5,param_6);
  }
  return uVar3;
}



############ FUN_ 180b65780 size=1371 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180b65a22) overlaps instruction at (ram,0x000180b65a20)
    */

void FUN_180b65780(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 uVar4;
  longlong *plVar5;
  undefined4 uVar6;
  longlong lVar7;
  longlong lVar8;
  undefined8 uVar9;
  uint uVar10;
  ulonglong uVar11;
  int unaff_retaddr;
  undefined8 in_stack_ffffffffffffff78;
  undefined4 uVar12;
  undefined8 local_48;
  longlong *local_40;
  
  uVar12 = (undefined4)((ulonglong)in_stack_ffffffffffffff78 >> 0x20);
  uVar9 = 0;
  if (*(longlong *)(param_1 + 0x48) == 0) {
    lVar7 = FUN_180b67920(param_1,1,(uint)&stack0x00000000 & 0xeff,(uint)&stack0x00000000 & 0x17ff);
    uVar4 = *(undefined8 *)(param_1 + 0x40);
    lVar8 = FUN_1811316e0(0x38);
    if (lVar8 != 0) {
      uVar6 = FUN_180b29790();
      uVar9 = FUN_180a3d1e0(uVar4,uVar6);
      uVar9 = __RTDynamicCast(uVar9,0,&license_services::LsCachedObjectVectorBase::
                                       RTTI_Type_Descriptor,
                              &license_services::LsCachedObjectVectorArrayEntry::
                               RTTI_Type_Descriptor,CONCAT44(uVar12,1));
      uVar9 = FUN_180b6f8f0(lVar8,param_1,lVar7 + 0x90,uVar9,FUN_180b66910,param_1,1);
    }
    local_48 = uVar9;
    FUN_180b646e0(&local_40,uVar9);
    FUN_1805ae620(&local_48,uVar9,uVar9);
    uVar9 = *(undefined8 *)(param_1 + 0x48);
    *(undefined8 *)(param_1 + 0x48) = local_48;
    plVar5 = *(longlong **)(param_1 + 0x50);
    *(longlong **)(param_1 + 0x50) = local_40;
    local_48 = uVar9;
    local_40 = plVar5;
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar5 + 1;
      lVar7 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar2 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
  }
  lVar7 = FUN_180b67920(param_1);
  lVar8 = FUN_180b67920(param_1);
  if (lVar7 != DAT_18266fe60) {
    FUN_180a3b7d0(*(undefined8 *)(param_1 + 0x48),lVar8 + 0x90);
    DAT_18266fe60 = lVar7;
  }
  do {
    FUN_180b64e45();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = 0x100000;
  do {
    uVar11 = 0x5334;
    FUN_180b66806();
    if ((uVar11 & 0xe300) == 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = (((uint)(DAT_18147efa8 * 0x401) >> 6 ^ DAT_18147efa8 * 0x401) + DAT_18147efac) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efb0) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efb4) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efb8) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efbc) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efc0) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efc4) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efc8) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efcc) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efd0) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efd4) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efd8) * 0x401;
  uVar10 = ((uVar10 >> 6 ^ uVar10) + DAT_18147efdc) * 0x401;
  FUN_180b65ced((uVar10 >> 6 ^ uVar10) + DAT_18147efe0,&DAT_18147efa8,uVar9);
  return;
}



############ FUN_ 180b646e0 size=97 ############

undefined8 * FUN_180b646e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsObjectRelationVectorArrayEntry>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1808091d0 size=2017 ############

/* WARNING: Instruction at (ram,0x0001808097c9) overlaps instruction at (ram,0x0001808097c8)
    */
/* WARNING: Removing unreachable block (ram,0x000180809a84) */
/* WARNING: Removing unreachable block (ram,0x000180809275) */
/* WARNING: Removing unreachable block (ram,0x00018080921e) */
/* WARNING: Removing unreachable block (ram,0x000180809232) */
/* WARNING: Removing unreachable block (ram,0x00018080988e) */
/* WARNING: Removing unreachable block (ram,0x00018080996f) */

undefined8 FUN_1808091d0(ulonglong param_1,int param_2)

{
  uint *puVar1;
  char cVar2;
  longlong lVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  uint uVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  undefined8 *puVar13;
  undefined1 *puVar14;
  undefined1 *puVar15;
  int iVar16;
  int unaff_retaddr;
  int local_res10 [2];
  undefined8 local_res18;
  uint local_res20;
  undefined1 auStack_a8 [32];
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_70;
  undefined8 *local_68;
  undefined8 *local_60;
  undefined8 *local_58;
  undefined8 *local_50;
  
  puVar14 = auStack_a8;
  local_70 = 0xfffffffffffffffe;
  if (((ulonglong)&stack0x00000000 & 0x3500) == 0) {
    if (((ulonglong)&stack0x00000000 & 0x2f00) == 0) {
      uVar7 = (uint)&stack0x00000000 & 0x1ff;
      iVar16 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
      iVar16 = ((iVar16 >> 1) - (iVar16 >> 3)) + iVar16 * 0x55555555 >> 0x1e;
    }
    else {
      iVar16 = 0;
    }
    local_res20 = iVar16 + 0xa772;
  }
  else {
    local_res20 = 0xa772;
  }
  local_res20 = local_res20 ^ 0xac22;
  local_68 = *(undefined8 **)(param_1 + 0x1958);
  cVar2 = *(char *)((longlong)local_68[1] + 0x19);
  puVar5 = local_68;
  puVar13 = (undefined8 *)local_68[1];
  while (cVar2 == '\0') {
    if (*(int *)(puVar13 + 4) < param_2) {
      puVar8 = (undefined8 *)puVar13[2];
      puVar13 = puVar5;
    }
    else {
      puVar8 = (undefined8 *)*puVar13;
    }
    puVar5 = puVar13;
    puVar13 = puVar8;
    cVar2 = *(char *)((longlong)puVar8 + 0x19);
  }
  puVar13 = local_68;
  puVar8 = local_68;
  if ((puVar5 != local_68) && (puVar8 = local_68, *(int *)(puVar5 + 4) <= param_2)) {
    puVar13 = puVar5;
    local_60 = puVar5;
    puVar8 = local_58;
  }
  local_58 = puVar8;
  uVar11 = 0x180000000;
  local_88 = 0x100;
  local_80 = 0x18157fbb0;
  local_res18 = 0x18157fcb0;
  local_50 = *(undefined8 **)(param_1 + 0x1958);
  uVar4 = 0;
  local_res10[0] = param_2;
  if (puVar13 == local_50) {
    lVar3 = FUN_1811316e0(0x18);
    if (lVar3 != 0) {
      uVar4 = FUN_1805a48c0(lVar3,
                            "LsObjectCache::getObjectVector: The entityId value supplied: %d, is invalid"
                           );
    }
    puVar5 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar5 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar5,"|__FILE__|%s|__LINE__|%d");
      *puVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(uVar4 + 8),local_res10);
  }
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  iVar16 = ((((((((((iRam000000018157fc4c * 0x6b + iRam000000018157fc50) * 0x6b +
                   iRam000000018157fc54) * 0x6b + iRam000000018157fc58) * 0x6b +
                  iRam000000018157fc38 * -0x3da6fb75 + iRam000000018157fc20 * -0x6a0c3d7d +
                  iRam000000018157fc30 * -0x40e3d38d + iRam000000018157fc28 * -0xd001ce5 +
                  iRam000000018157fc40 * -0x7c8cfe9d + iRam000000018157fc24 * -0x6f0c13b7 +
                  iRam000000018157fc2c * -0x1f396bef + iRam000000018157fc3c * -0xeee6b9f +
                  iRam000000018157fc48 * 0x43fc68fb + iRam000000018157fc44 * 0x6a7fe0e9 +
                  iRam000000018157fc34 * 0x3b34e619 +
                  ((((iRam000000018157fc0c * 0x6b + iRam000000018157fc10) * 0x6b +
                    iRam000000018157fc14) * 0x6b + iRam000000018157fc18) * 0x6b +
                   iRam000000018157fbd0 * -0x15fdac6d + iRam000000018157fbfc * -0xeee6b9f +
                   iRam000000018157fbc8 * -0x7df456c5 + iRam000000018157fbcc * -0x3107118f +
                   iRam000000018157fbb0 * -0xd0a594d + iRam000000018157fbc0 * -0x47c905d +
                   iRam000000018157fbe8 * -0xd001ce5 + iRam000000018157fbf8 * -0x3da6fb75 +
                   iRam000000018157fbe4 * -0x6f0c13b7 + iRam000000018157fbd4 * -0x2b455c87 +
                   iRam000000018157fbec * -0x1f396bef + iRam000000018157fbf0 * -0x40e3d38d +
                   iRam000000018157fbdc * -0x531db33f + iRam000000018157fbe0 * -0x6a0c3d7d +
                   iRam000000018157fc00 * -0x7c8cfe9d + iRam000000018157fbbc * 0x1fefa921 +
                   iRam000000018157fbf4 * 0x3b34e619 + iRam000000018157fbb4 * 0x4542e4d9 +
                   iRam000000018157fc08 * 0x43fc68fb + iRam000000018157fbb8 * 0x592bb0cb +
                   iRam000000018157fbc4 * 0x5adfbba9 + iRam000000018157fc04 * 0x6a7fe0e9 +
                   iRam000000018157fbd8 * 0x429614ab + iRam000000018157fc1c) * -0x531db33f +
                 iRam000000018157fc5c) * 0x6b + iRam000000018157fc60) * 0x6b + iRam000000018157fc64)
               * 0x6b + iRam000000018157fc68) * 0x6b + iRam000000018157fc6c) * 0x6b +
            iRam000000018157fc70) * 0x6b + iRam000000018157fc74) * 0x6b + iRam000000018157fc78;
  puVar15 = (undefined1 *)register0x00000020;
  do {
    uVar9 = 0xfc34;
    FUN_1808085fd();
    uVar12 = uVar11 ^ param_1;
    if ((uVar9 & 0xc700) == 0) {
      uVar12 = CONCAT62((int6)(uVar12 >> 0x10),
                        CONCAT11((char)(uVar12 >> 8) << ((byte)uVar9 & 0x1f),(char)uVar12));
      puVar1 = (uint *)(uVar9 + 0x74);
      *puVar1 = *puVar1 << 1 | *puVar1 >> 0x1f;
      uVar11 = param_1;
    }
    else if ((uVar9 & 0x41) == 0) {
      uVar12 = param_1;
    }
    uVar4 = ~((uVar4 ^ 0xffffffffffffffff) + 1) + 1;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
    param_1 = uVar12;
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ((((((((iRam000000018157fc88 * 0x6b + iRam000000018157fc8c) * 0x6b + iRam000000018157fc90)
                * 0x6b + iRam000000018157fc94) * 0x6b + iRam000000018157fc7c * -0x7c8cfe9d +
               iRam000000018157fc84 * 0x43fc68fb + iRam000000018157fc80 * 0x6a7fe0e9 +
               iVar16 * -0xeee6b9f + iRam000000018157fc98) * 0x6b + iRam000000018157fc9c) * 0x6b +
            iRam000000018157fca0) * 0x6b + iRam000000018157fca4) * 0x6b + iRam000000018157fca8) *
          0x6b + iRam000000018157fcac;
  local_res18 = 0xa0543b4366003abe;
  uVar7 = (uVar7 * -0x80000000 | uVar7 >> 1) + 0xfe314124;
  uVar4 = CONCAT71((int7)(uVar4 >> 8),(uVar7 >> 0xd | uVar7 * 0x80000) == 0x10af6e9e);
  if ((uVar4 & 0xfffffff) != 0 || (int)uVar4 != 0) {
    lVar3 = (longlong)(int)local_res20;
    do {
      *(undefined8 *)(puVar14 + -8) = 0x180809a2a;
      lVar10 = lVar3;
      FUN_180808472(lVar3,uVar11);
      *(undefined1 **)(puVar14 + -8) = puVar15;
      *(longlong *)(puVar14 + -0x10) = lVar3;
      *(BADSPACEBASE **)(puVar14 + -0x18) = register0x00000020;
      lVar10 = -lVar10;
      register0x00000020 = *(BADSPACEBASE **)(puVar14 + lVar10 + 0xb38);
      lVar3 = *(longlong *)(puVar14 + lVar10 + 0xb40);
      puVar15 = *(undefined1 **)(puVar14 + lVar10 + 0xb48);
      puVar14 = puVar14 + lVar10 + 0xb50;
      uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    return puVar13[5];
  }
  uVar6 = FUN_180809979(0xe60);
  return uVar6;
}



############ FUN_ 18080dc60 size=1998 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018080df73) overlaps instruction at (ram,0x00018080df72)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018080e535) */
/* WARNING: Removing unreachable block (ram,0x00018080ddbd) */
/* WARNING: Removing unreachable block (ram,0x00018080df6f) */
/* WARNING: Removing unreachable block (ram,0x00018080e243) */
/* WARNING: Removing unreachable block (ram,0x00018080e109) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_18080dc60(longlong *param_1,char param_2,undefined8 param_3,undefined4 param_4)

{
  ulonglong uVar1;
  undefined1 *puVar2;
  ulonglong uVar3;
  int iVar4;
  IMAGE_DOS_HEADER *pIVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined1 *puVar8;
  undefined **ppuVar9;
  undefined **ppuVar10;
  uint *puVar11;
  uint uVar12;
  longlong *plVar13;
  IMAGE_DOS_HEADER *pIVar14;
  longlong unaff_R12;
  longlong lVar15;
  ulonglong uVar16;
  int *piVar17;
  longlong lVar18;
  int unaff_retaddr;
  undefined1 auStack_f8 [32];
  char local_d8;
  uint local_d4;
  undefined **local_d0;
  undefined **local_c8;
  uint local_c0 [2];
  undefined4 local_b8;
  undefined8 local_b0;
  uint local_a8;
  uint local_90;
  longlong local_88;
  undefined8 local_80;
  longlong *local_78;
  undefined8 local_68;
  int local_58 [4];
  ulonglong local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  uVar12 = (uint)&stack0x00000000 & 0xaff;
  uVar3 = 0;
  uVar12 = (uVar12 * uVar12 + 1) % 7;
  local_90 = ((int)(-uVar12 | uVar12) >> 0x1f) * -0x88d8 ^ 0x8298;
  uVar12 = (uint)&stack0x00000000 & 0x4eff;
  iVar4 = uVar12 * uVar12 + 1;
  uVar12 = iVar4 * 0x24924924 + (iVar4 >> 4) + (iVar4 >> 1) >> 0x1d;
  uVar12 = (int)(uVar12 - 7) >> 0x1f & uVar12;
  local_a8 = ((int)(-uVar12 | uVar12) >> 0x1f) * -0x8ac9 ^ 0x8b99;
  uVar16 = (ulonglong)local_a8;
  local_d8 = param_2;
  local_b8 = param_4;
  local_80 = param_3;
  local_78 = param_1;
  do {
    FUN_18080c3d9(&DAT_00005114);
    lVar15 = uVar16 + unaff_R12;
    uVar16 = ~(unaff_R12 - lVar15) + 1;
    unaff_R12 = lVar15 - uVar16;
    uVar3 = ~(~uVar3 + 1) + 1;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  pIVar14 = &IMAGE_DOS_HEADER_180000000;
  local_b0 = 0x6f01000;
  plVar13 = (longlong *)0xffffffef;
  local_c8 = &PTR__guard_check_icall_181bab6a8;
  local_d0 = (undefined **)&DAT_181bab6b8;
  plVar7 = (longlong *)&DAT_186f01000;
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_d4 = (uint)uVar3;
  piVar17 = (int *)register0x00000020;
  do {
    FUN_18080d362(&DAT_00005114);
    piVar17 = (int *)((~(ulonglong)piVar17 + 1 ^ 0xffffffffffffffff) + 1);
    FUN_18080e6e2();
    ppuVar10 = local_c8;
    uVar12 = (*piVar17 + 1) * *piVar17 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  lVar18 = 0;
  lVar15 = (longlong)local_d0 - (longlong)local_c8;
  local_b0 = 0x31bc7b643315a3fd;
  local_c8 = (undefined **)CONCAT44(local_c8._4_4_,0x3315a3fd);
  local_c0[0] = local_d4;
  if (local_d0 != ppuVar10) {
LAB_18080e040:
    ppuVar9 = ppuVar10;
    if ((plVar7 != (longlong *)0x0) && (lVar6 = *plVar7, -1 < lVar6)) {
      local_b0 = 0x2621fc0;
      do {
        if (ppuVar10 < IMAGE_DOS_HEADER_180000000.e_magic + lVar6 + 8) {
          if (-1 < lVar6) {
            pIVar5 = (IMAGE_DOS_HEADER *)(lVar6 + 0x180000000);
            pIVar14 = (IMAGE_DOS_HEADER *)((longlong)ppuVar10 + 4);
            if (pIVar5 < pIVar14) {
              local_58[0] = *(int *)ppuVar10;
              plVar13 = plVar7;
              goto LAB_18080e0b0;
            }
          }
          break;
        }
        plVar7 = plVar7 + 1;
        lVar6 = *plVar7;
      } while (-1 < lVar6);
    }
    goto LAB_18080e0e0;
  }
LAB_18080e1c0:
  do {
    puVar11 = local_c0;
    FUN_18080fab6(&LAB_18113e030,&LAB_18113e030);
    uVar12 = FUN_18083de0b();
    *puVar11 = uVar12;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_d4 = local_c0[0] + 0xfd58303d >> 0x1b | (local_c0[0] + 0xfd58303d) * 0x20;
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar1 = CONCAT71((int7)(uVar3 >> 8),local_d4 == (uint)local_c8);
  if ((int)uVar1 != 0 || (uVar1 & 0xfffffff) != 0) {
    if (param_2 == '\0') {
      FUN_18080f035();
      thunk_FUN_1805a9280();
      return;
    }
    local_88 = FUN_1811316e0(0x18);
    if (local_88 != 0) {
      uVar3 = FUN_1805a48c0(local_88,
                            "The relation \"%s\" in the LsLicense object with selfRelation value (%d, %ld) is not marked optional, but is not populated. Test failed at line %d"
                           );
    }
    FUN_1805c0260();
    FUN_1805a21d0(*(undefined8 *)(uVar3 + 8),&local_80);
    lVar15 = (**(code **)(*param_1 + 0x38))(param_1);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(uVar3 + 8),lVar15 + 8);
  }
  if (param_2 != '\0') {
    iVar4 = (int)uVar16;
    puVar2 = auStack_f8;
    do {
      puVar8 = puVar2;
      *(ulonglong *)(puVar8 + -8) = uVar16;
      *(longlong **)(puVar8 + -0x10) = plVar13;
      *(IMAGE_DOS_HEADER **)(puVar8 + -0x18) = pIVar14;
      register0x00000020 =
           (BADSPACEBASE *)((~(ulonglong)register0x00000020 + 1 ^ 0xffffffffffffffff) + 1);
      lVar15 = -(longlong)iVar4;
      pIVar14 = *(IMAGE_DOS_HEADER **)(puVar8 + lVar15 + 0x138);
      plVar13 = *(longlong **)(puVar8 + lVar15 + 0x140);
      uVar16 = *(ulonglong *)(puVar8 + lVar15 + 0x148);
      uVar12 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
      puVar2 = puVar8 + lVar15 + 0x150;
    } while (uVar12 != 0);
    *(undefined **)(puVar8 + lVar15 + 0x148) = &UNK_18080e5b1;
  }
  local_88 = FUN_1811316e0(0x18);
  if (local_88 != 0) {
    uVar3 = FUN_1805a48c0(local_88,
                          "The relation \"%s\" in the LsLicense object with selfRelation value (%d, %ld) is not marked optional, but is not populated. Test failed at line %d"
                         );
  }
  FUN_1805c0260();
  FUN_1805a21d0(*(undefined8 *)(uVar3 + 8),&local_80);
  lVar15 = (**(code **)(*param_1 + 0x38))(param_1);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(uVar3 + 8),lVar15 + 8);
  while (pIVar5 = (IMAGE_DOS_HEADER *)(lVar6 + 0x180000000), pIVar5 < pIVar14) {
LAB_18080e0b0:
    *(longlong *)(&stack0x00017fffffa8 + (lVar6 - (longlong)ppuVar10)) =
         *(longlong *)pIVar5 + -0x180000000;
    plVar13 = plVar13 + 1;
    lVar6 = *plVar13;
    ppuVar9 = (undefined **)local_58;
    if (lVar6 < 0) break;
  }
LAB_18080e0e0:
  do {
    local_d4 = local_d4 + *(int *)ppuVar9;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_d4 = local_d4 * 0x401;
  local_d4 = local_d4 ^ local_d4 >> 6;
  lVar18 = lVar18 + 4;
  ppuVar10 = (undefined **)((longlong)ppuVar10 + 4);
  if (lVar15 == lVar18) goto code_r0x00018080e19d;
  goto LAB_18080e040;
code_r0x00018080e19d:
  uVar3 = 0;
  uVar16 = (ulonglong)local_a8;
  local_c0[0] = local_d4;
  param_2 = local_d8;
  param_1 = local_78;
  goto LAB_18080e1c0;
}



############ FUN_ 18080f490 size=420 ############

longlong FUN_18080f490(longlong *param_1,void *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  void *_Dst;
  void *pvVar8;
  longlong lVar9;
  size_t _Size;
  
  lVar5 = *param_1;
  lVar9 = (longlong)param_2 - lVar5 >> 3;
  lVar3 = param_1[1] - lVar5 >> 3;
  if (lVar3 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar3 + 1;
  uVar6 = param_1[2] - lVar5 >> 3;
  uVar4 = uVar1;
  if ((uVar6 <= 0x1fffffffffffffff - (uVar6 >> 1)) && (uVar4 = (uVar6 >> 1) + uVar6, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  uVar6 = uVar4 * 8;
  if (uVar4 < 0x2000000000000000) {
    uVar4 = uVar6;
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        pvVar8 = (void *)0x0;
      }
      else {
        pvVar8 = (void *)FUN_1811316e0(uVar6);
      }
      goto LAB_18080f583;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar7 = uVar4 + 0x27;
  if (uVar7 <= uVar4) {
    uVar7 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar7);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar8 = (void *)(lVar5 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar8 - 8) = lVar5;
LAB_18080f583:
  *(undefined8 *)((longlong)pvVar8 + lVar9 * 8) = *param_3;
  pvVar2 = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)pvVar2;
    _Dst = pvVar8;
    param_2 = pvVar2;
  }
  else {
    memmove(pvVar8,pvVar2,(longlong)param_2 - (longlong)pvVar2);
    _Dst = (void *)((longlong)pvVar8 + (lVar9 + 1) * 8);
    _Size = param_1[1] - (longlong)param_2;
  }
  memmove(_Dst,param_2,_Size);
  pvVar2 = (void *)*param_1;
  if (pvVar2 == (void *)0x0) {
    *param_1 = (longlong)pvVar8;
    param_1[1] = (longlong)((longlong)pvVar8 + uVar1 * 8);
    param_1[2] = (longlong)(uVar6 + (longlong)pvVar8);
    return *param_1 + lVar9 * 8;
  }
  pvVar8 = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
     (pvVar8 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar8);
}



############ FUN_ 18080f640 size=679 ############

longlong FUN_18080f640(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x230;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x230;
  if (lVar13 == 0x75075075075075) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x230;
  uVar11 = uVar12;
  if ((uVar4 <= 0x75075075075075 - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x230;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0x75075075075076) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_18080f77b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_18080f77b:
  lVar7 = lVar1 * 0x230 + uVar4;
  lVar1 = lVar7 + 0x230;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180810df0(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x230) {
      FUN_180810df0(uVar8);
      uVar8 = uVar8 + 0x230;
    }
  }
  else {
    FUN_180812680(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180812680(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x46) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x230) * 0x230)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x230 + uVar4;
  param_1[2] = uVar11 * 0x230 + uVar4;
  return lVar13 * 0x230 + *param_1;
}



############ FUN_ 180a3e1c0 size=1155 ############

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

void FUN_180a3e1c0(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  uint uVar3;
  undefined1 auStack_a8 [40];
  undefined *local_80;
  undefined1 *local_78;
  undefined8 *local_70;
  undefined4 local_64;
  uint local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_70 = param_1;
  local_64 = param_2;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_70 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityDatabaseInfo::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180a3e150(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar3 = (uint)&stack0x00000000 & 0x8ff;
  uVar2 = (uint)&stack0x00000000 & 0x17f;
  uVar2 = ((uVar3 + 1) * uVar3 + 0x7611 & 0x80000001) <<
          ((char)((ulonglong)((longlong)(int)((uVar2 + 2) * (uVar2 + 1) * uVar2) * 0x55555556) >>
                 0x20) * -3 & 0x1fU);
  local_60 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0x825 ^ 0x75;
  local_70 = (undefined8 *)0x0;
  local_80 = &DAT_180956a20;
  local_78 = &LAB_18095960c;
  func_0x000180a3d08b();
  return;
}



############ FUN_ 180a3e150 size=97 ############

undefined8 * FUN_180a3e150(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityDatabaseInfo>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a3dc30 size=156 ############

void FUN_180a3dc30(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 local_res10;
  undefined4 local_res18 [2];
  undefined8 local_res20;
  
  local_res10 = param_2;
  local_res18[0] = param_3;
  local_res20 = param_4;
  lVar1 = FUN_1811316e0(0x18);
  if (lVar1 == 0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(lVar1,
                          "LsCachedObjectVector<>::%s(): No object in the cache with entityId: %d and instanceId: %ld. Error detected in file %s at line %d."
                         );
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(lVar1 + 8),local_res18);
}



############ FUN_ 180a3e040 size=156 ############

void FUN_180a3e040(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 local_res10;
  undefined4 local_res18 [2];
  undefined4 local_res20;
  
  local_res10 = param_2;
  local_res18[0] = param_3;
  local_res20 = param_4;
  lVar1 = FUN_1811316e0(0x18);
  if (lVar1 == 0) {
    lVar1 = 0;
  }
  else {
    lVar1 = FUN_1805a48c0(lVar1,
                          "LsCachedObjectVector<>::%s(): Called for wrong object type. Expected entityId: %d but saw %d. Error detected in file %s at line %d."
                         );
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
    *puVar2 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(*(undefined8 *)(lVar1 + 8),local_res18);
}



############ FUN_ 180a3ffa0 size=311 ############

void FUN_180a3ffa0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180a40130(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_18080f640(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180810df0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x230;
  return;
}



############ FUN_ 180a40130 size=316 ############

longlong FUN_180a40130(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 18081a0f0 size=186 ############

longlong FUN_18081a0f0(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  
  uVar2 = *param_2;
  if (((*(char *)(param_1 + 0x18) + (char)*(longlong *)(param_1 + 0x20) & 1U) == 0) &&
     (*(ulonglong *)(param_1 + 0x10) <= *(longlong *)(param_1 + 0x20) + 2U >> 1)) {
    FUN_1807ec1f0(param_1,1);
  }
  *(ulonglong *)(param_1 + 0x18) =
       *(ulonglong *)(param_1 + 0x18) & *(longlong *)(param_1 + 0x10) * 2 - 1U;
  uVar4 = *(longlong *)(param_1 + 0x18) + *(longlong *)(param_1 + 0x20);
  lVar1 = (*(longlong *)(param_1 + 0x10) - 1U & uVar4 >> 1) * 8;
  if (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) == 0) {
    uVar3 = FUN_1811316e0(0x10);
    *(undefined8 *)(lVar1 + *(longlong *)(param_1 + 8)) = uVar3;
  }
  *(undefined8 *)
   (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) + (ulonglong)((uint)uVar4 & 1) * 8) = uVar2;
  *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + 1;
  return param_1;
}



############ FUN_ 18082ca90 size=214 ############

void FUN_18082ca90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsAuthManifestElement::targetSlowPath: The LsAuthManifestElementWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsauthmanifestelement.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180a3b570 size=399 ############

void FUN_180a3b570(longlong param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong lVar5;
  char *local_res8;
  ulonglong local_res10;
  undefined **local_30;
  undefined4 local_28;
  undefined8 local_20;
  undefined2 local_18;
  
  local_30 = license_services::LsRelation::vftable;
  local_28 = 0xffffffff;
  local_20 = 0xffffffffffffffff;
  local_18 = 0;
  plVar1 = *(longlong **)(param_1 + 8);
  lVar3 = *plVar1;
  local_res10 = param_2;
  if ((ulonglong)(plVar1[1] - lVar3 >> 5) <= param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1808077d0();
  }
  lVar5 = param_2 * 0x20;
  local_28 = *(undefined4 *)(lVar5 + 8 + lVar3);
  local_20 = *(undefined8 *)(lVar5 + 0x10 + lVar3);
  local_18 = 0x101;
  if (param_2 < (ulonglong)(plVar1[1] - *plVar1 >> 5)) {
    lVar5 = lVar5 + *plVar1;
    lVar3 = plVar1[1];
    if (lVar5 + 0x20 != lVar3) {
      puVar2 = (undefined8 *)(lVar5 + 0x10);
      lVar5 = (lVar5 + 0x20) - lVar5;
      do {
        *(undefined4 *)(puVar2 + -1) = *(undefined4 *)(lVar5 + -8 + (longlong)puVar2);
        *puVar2 = *(undefined8 *)(lVar5 + (longlong)puVar2);
        *(undefined2 *)(puVar2 + 1) = *(undefined2 *)(lVar5 + 8 + (longlong)puVar2);
        puVar2 = puVar2 + 4;
      } while (lVar5 + -0x10 + (longlong)puVar2 != lVar3);
    }
    (*(code *)**(undefined8 **)(plVar1[1] + -0x20))((undefined8 *)(plVar1[1] + -0x20),0);
    plVar1[1] = plVar1[1] + -0x20;
    FUN_180a3b70a();
    return;
  }
  if (param_2 != 0) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8,
                            "LsObjectRelationVectorBase::eraseRelation: atIndex is out of range. Expected  0 <= atIndex < %u, but saw atIndex = %u"
                           );
    }
    lVar5 = FUN_1805c0260();
    local_res8 = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res10);
    local_res10 = CONCAT44(local_res10._4_4_,0x66);
    local_res8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\lsobjectrelationvectorbase.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res10);
  }
  (**(code **)(**(longlong **)(param_1 + 0x18) + 0x20))
            (*(longlong **)(param_1 + 0x18),&local_30,lVar3,param_4,0xfffffffffffffffe);
  return;
}



############ FUN_ 180842b70 size=1419 ############

/* WARNING: Removing unreachable block (ram,0x000180842bd1) */
/* WARNING: Removing unreachable block (ram,0x000180842c27) */
/* WARNING: Removing unreachable block (ram,0x000180842be0) */
/* WARNING: Removing unreachable block (ram,0x000180842ca0) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180842b70(void)

{
  undefined8 *puVar1;
  uint uVar2;
  uint uVar3;
  int unaff_retaddr;
  undefined1 auStack_1e8 [32];
  undefined4 local_1c8;
  undefined8 local_1c0;
  undefined8 local_1b0;
  undefined8 local_1a8;
  undefined8 local_198;
  longlong **local_188;
  uint local_158;
  undefined4 local_154;
  longlong *local_148;
  undefined8 uStack_140;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 local_128;
  longlong *local_120;
  undefined8 uStack_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  longlong local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  longlong local_d0;
  undefined8 local_98;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  ulonglong local_30;
  
  local_98 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  local_154 = 0xd10;
  uVar3 = (uint)&stack0x00000000 & 0x43ff;
  uVar3 = (uVar3 * uVar3 + 1) % 7;
  if (((ulonglong)&stack0x00000000 & 0x2c0) == 0) {
    uVar2 = (uint)&stack0x00000000 & 0x2bff;
    uVar2 = ((uVar2 + 1) * uVar2 + 7) % 0x51;
  }
  else {
    uVar2 = 1;
  }
  local_158 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0xe72b ^ ((int)(-uVar3 | uVar3) >> 0x1f) * -0xe4cb;
  do {
    FUN_1808447ef(0xeb04);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_1a8 = 0;
  local_198 = 0x3fe00;
  local_1b0 = 0x18124991c;
  local_1c0 = 0x18128971c;
  local_1c8 = 0xe26b7612;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_182666dd8) && (_Init_thread_header(&DAT_182666dd8), DAT_182666dd8 == -1)) {
    _DAT_182666dd0 = (undefined8 *)FUN_1811316e0(0x18);
    if (_DAT_182666dd0 == (undefined8 *)0x0) {
      _DAT_182666dd0 = (undefined8 *)0x0;
    }
    else {
      *_DAT_182666dd0 = 0;
      _DAT_182666dd0[1] = 0;
      _DAT_182666dd0[2] = 0;
    }
    _Init_thread_footer(&DAT_182666dd8);
  }
  local_148 = (longlong *)0x0;
  uStack_140 = 0;
  local_138 = 0;
  local_130 = 0;
  local_128 = 0;
  local_148 = (longlong *)FUN_1811316e0(0x10);
  local_68 = 0;
  uStack_60 = 0;
  *local_148 = 0;
  local_148[1] = 0;
  *local_148 = (longlong)&local_148;
  puVar1 = (undefined8 *)FUN_18081a0f0(&local_148,&PTR_FUN_18260b958);
  local_188 = &local_120;
  local_120 = (longlong *)0x0;
  uStack_118 = 0;
  local_110 = 0;
  local_108 = 0;
  local_100 = 0;
  local_120 = (longlong *)FUN_1811316e0(0x10);
  local_58 = 0;
  uStack_50 = 0;
  *local_120 = 0;
  local_120[1] = 0;
  *local_120 = (longlong)&local_120;
  local_d0 = puVar1[3];
  local_e8 = puVar1[4] + local_d0;
  local_f0 = 0;
  local_f8 = *puVar1;
  local_d8 = 0;
  local_e0 = local_f8;
  FUN_1807ea970(&local_120,&local_e0,&local_f8);
  FUN_1807ec3f0(&local_148);
                    /* WARNING: Subroutine does not return */
  free(local_148);
}



############ FUN_ 180846c10 size=214 ############

void FUN_180846c10(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsMachineId::targetSlowPath: The LsMachineIdWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsmachineid.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180846eb0 size=249 ############

void FUN_180846eb0(longlong param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  undefined4 *puVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  
  while (*(longlong *)(param_2 + 0x10) != *(longlong *)(param_3 + 0x10)) {
    puVar2 = (undefined4 *)FUN_180848e10(param_2);
    if (((*(char *)(param_1 + 0x18) + (char)*(longlong *)(param_1 + 0x20) & 3U) == 0) &&
       (*(ulonglong *)(param_1 + 0x10) <= *(longlong *)(param_1 + 0x20) + 4U >> 2)) {
      FUN_180849000(param_1,1);
    }
    *(ulonglong *)(param_1 + 0x18) =
         *(ulonglong *)(param_1 + 0x18) & *(longlong *)(param_1 + 0x10) * 4 - 1U;
    uVar4 = *(longlong *)(param_1 + 0x18) + *(longlong *)(param_1 + 0x20);
    lVar1 = (uVar4 >> 2 & *(longlong *)(param_1 + 0x10) - 1U) * 8;
    if (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) == 0) {
      uVar3 = FUN_1811316e0(0x10);
      *(undefined8 *)(lVar1 + *(longlong *)(param_1 + 8)) = uVar3;
    }
    *(undefined4 *)
     (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) + (ulonglong)((uint)uVar4 & 3) * 4) =
         *puVar2;
    *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + 1;
    *(longlong *)(param_2 + 0x10) = *(longlong *)(param_2 + 0x10) + 1;
  }
  return;
}



############ FUN_ 180849000 size=499 ############

void FUN_180849000(longlong param_1,ulonglong param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  size_t sVar6;
  size_t sVar7;
  void *pvVar8;
  ulonglong uVar9;
  
  uVar2 = *(ulonglong *)(param_1 + 0x10);
  uVar5 = 1;
  if (uVar2 != 0) {
    uVar5 = uVar2;
  }
  for (; (uVar5 - uVar2 < param_2 || (uVar5 < 8)); uVar5 = uVar5 * 2) {
    if (0xfffffffffffffff - uVar5 < uVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_180618c80(param_1);
    }
  }
  uVar5 = uVar5 - uVar2;
  uVar9 = *(ulonglong *)(param_1 + 0x18) >> 2;
  uVar4 = (uVar2 + uVar5) * 8;
  if (uVar2 + uVar5 < 0x2000000000000000) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        pvVar8 = (void *)0x0;
      }
      else {
        pvVar8 = (void *)FUN_1811316e0(uVar4);
      }
      goto LAB_1808490cd;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar1 = FUN_1811316e0(uVar2);
  if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar8 = (void *)(lVar1 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar8 - 8) = lVar1;
LAB_1808490cd:
  sVar7 = uVar9 * 8;
  pvVar3 = (void *)(*(longlong *)(param_1 + 8) + sVar7);
  sVar6 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar3) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar7 + (longlong)pvVar8),pvVar3,sVar6);
  pvVar3 = (void *)(sVar6 + (longlong)(sVar7 + (longlong)pvVar8));
  if (uVar5 < uVar9) {
    sVar6 = uVar5 * 8;
    memmove(pvVar3,*(void **)(param_1 + 8),sVar6);
    pvVar3 = (void *)(sVar6 + *(longlong *)(param_1 + 8));
    sVar7 = (*(longlong *)(param_1 + 8) - (longlong)pvVar3) + sVar7;
    memmove(pvVar8,pvVar3,sVar7);
    pvVar3 = (void *)(sVar7 + (longlong)pvVar8);
  }
  else {
    memmove(pvVar3,*(void **)(param_1 + 8),sVar7);
    memset((void *)(sVar7 + (longlong)pvVar3),0,(uVar5 - uVar9) * 8);
    pvVar3 = pvVar8;
    sVar6 = sVar7;
  }
  memset(pvVar3,0,sVar6);
  pvVar3 = *(void **)(param_1 + 8);
  if (pvVar3 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar8;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar5;
    return;
  }
  pvVar8 = pvVar3;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar8 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar8);
}



############ FUN_ 180847500 size=369 ############

void FUN_180847500(undefined8 *param_1,undefined4 *param_2,undefined8 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *local_80;
  undefined8 local_78;
  longlong local_70;
  longlong *local_68;
  undefined8 local_60;
  ulonglong local_58;
  longlong *local_50;
  longlong lStack_48;
  ulonglong local_40;
  ulonglong local_38;
  longlong local_30;
  
  uVar5 = 0xfffffffffffffffe;
  local_50 = (longlong *)0x0;
  lStack_48 = 0;
  local_40 = 0;
  local_38 = 0;
  local_30 = 0;
  local_50 = (longlong *)FUN_1811316e0(0x10);
  *local_50 = 0;
  local_50[1] = 0;
  *local_50 = (longlong)&local_50;
  uVar3 = *param_2;
  if ((((int)local_38 + (int)local_30 & 3U) == 0) && (local_40 <= local_30 + 4U >> 2)) {
    FUN_180849000(&local_50,1,local_30,param_4,uVar5);
  }
  local_38 = local_38 & local_40 * 4 - 1;
  uVar1 = local_30 + local_38;
  lVar2 = (local_40 - 1 & uVar1 >> 2) * 8;
  if (*(longlong *)(lStack_48 + lVar2) == 0) {
    uVar5 = FUN_1811316e0(0x10);
    *(undefined8 *)(lStack_48 + lVar2) = uVar5;
  }
  *(undefined4 *)(*(longlong *)(lStack_48 + lVar2) + (ulonglong)((uint)uVar1 & 3) * 4) = uVar3;
  local_30 = local_30 + 1;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  puVar4 = (undefined8 *)FUN_1811316e0(0x10);
  *param_1 = puVar4;
  *puVar4 = 0;
  puVar4[1] = 0;
  *(undefined8 **)*param_1 = param_1;
  local_70 = local_30 + local_38;
  local_78 = 0;
  local_80 = local_50;
  local_60 = 0;
  local_58 = local_38;
  local_68 = local_50;
  FUN_180846eb0(param_1,&local_68,&local_80);
  FUN_1807ec3f0(&local_50);
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 180848fc0 size=55 ############

void FUN_180848fc0(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x48);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 18084e7c0 size=46 ############

void FUN_18084e7c0(undefined8 param_1)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x128);
  if (lVar1 != 0) {
    FUN_180a2dbe0(lVar1,param_1);
    return;
  }
  return;
}



############ FUN_ 180867800 size=1009 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180867b88) overlaps instruction at (ram,0x000180867b87)
    */
/* WARNING: Removing unreachable block (ram,0x00018086795e) */
/* WARNING: Removing unreachable block (ram,0x000180867ad3) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180867800(void)

{
  byte *pbVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  uint uVar5;
  uint uVar6;
  ulonglong uVar7;
  ulonglong in_R11;
  bool bVar8;
  int unaff_retaddr;
  undefined1 auStack_1c8 [48];
  undefined1 *local_198;
  undefined8 local_188;
  undefined8 local_178;
  undefined8 local_170;
  uint local_150;
  uint local_14c;
  undefined8 local_90;
  ulonglong local_30;
  
  local_90 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  uVar3 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0xe00) == 0) {
    uVar5 = ((uVar3 & 0x5fff) * (uVar3 & 0x5fff) + 1) % 7;
  }
  else {
    iVar2 = (uVar3 & 0x1bff) * (uVar3 & 0x1bff) + 1;
    uVar5 = (iVar2 >> 4) + (iVar2 >> 1) + iVar2 * 0x24924924 >> 0x1d;
    uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  }
  uVar6 = uVar3 & 0x2bf;
  local_150 = 0xc03d - ((uVar6 + 2) * (uVar6 + 1) * uVar6) % 3 ^
              ((int)(-uVar5 | uVar5) >> 0x1f) * 0x1723 & 0xc0ddU;
  uVar5 = ((uVar3 & 0x19ff) + 1) * (uVar3 & 0x19ff) + 0x55bb & 0x80000001 | uVar3;
  uVar3 = ((uVar3 & 0x30ff) + 1) * (uVar3 & 0x30ff) + 7;
  local_14c = (0 >> ((char)uVar3 + (char)(uVar3 / 0x51) * -0x51 & 0x1fU)) + 0xd912U ^
              ((int)(-uVar5 | uVar5) >> 0x1f) * 0x20d9 & 0xd022U;
  uVar7 = (ulonglong)local_14c;
  local_178 = 0x1819cdd04;
  local_198 = &LAB_181a0cfdc;
  local_188 = 0xb5af8a397d2ecd90;
  local_170 = 0x7d2ecd90;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  piVar4 = *(int **)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
  if (piVar4[3] < DAT_1826677b8) {
    piVar4 = &DAT_1826677b8;
    _Init_thread_header();
    if (DAT_1826677b8 == -1) {
      _DAT_1826677b0 = (undefined8 *)FUN_1811316e0(0x18);
      if (_DAT_1826677b0 == (undefined8 *)0x0) {
        _DAT_1826677b0 = (undefined8 *)0x0;
      }
      else {
        *_DAT_1826677b0 = 0;
        _DAT_1826677b0[1] = 0;
        _DAT_1826677b0[2] = 0;
      }
      piVar4 = &DAT_1826677b8;
      _Init_thread_footer();
    }
  }
  FUN_180865bc4();
  bVar8 = false;
  FUN_180867ba3();
  if (!bVar8) goto code_r0x000180867b92;
  bVar8 = uVar7 == in_R11;
  while (bVar8) {
    *(int *)((longlong)piVar4 + -1) = *(int *)((longlong)piVar4 + -1) + -1;
    pbVar1 = (byte *)((longlong)piVar4 + -9);
    *pbVar1 = *pbVar1 >> 3 | *pbVar1 << 5;
code_r0x000180867b92:
    bVar8 = false;
  }
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18086b2f0 size=166 ############

void FUN_18086b2f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = FUN_1811316e0(0x18);
    if (local_res8 != 0) {
      FUN_1805a48c0(local_res8,
                    "LsDatabaseInfo::targetSlowPath: The LsDatabaseInfoWire object that this object references has disappeared."
                   );
    }
    lVar2 = FUN_1805c0260();
    local_res8 = CONCAT44(local_res8._4_4_,0xf1);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsdatabaseinfo.cpp"
    ;
    uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar2 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 18086d090 size=368 ############

void FUN_18086d090(void)

{
  undefined8 *puVar1;
  undefined8 local_b8;
  undefined8 local_b0;
  longlong local_a8;
  longlong *local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  longlong *local_60;
  undefined8 uStack_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  longlong local_28;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_182667810) {
    _Init_thread_header(&DAT_182667810);
    if (DAT_182667810 == -1) {
      DAT_182667808 = (undefined8 *)FUN_1811316e0(0x18);
      if (DAT_182667808 == (undefined8 *)0x0) {
        DAT_182667808 = (undefined8 *)0x0;
      }
      else {
        *DAT_182667808 = 0;
        DAT_182667808[1] = 0;
        DAT_182667808[2] = 0;
      }
      _Init_thread_footer(&DAT_182667810);
    }
  }
  local_88 = (longlong *)0x0;
  uStack_80 = 0;
  local_78 = 0;
  local_70 = 0;
  local_68 = 0;
  local_88 = (longlong *)FUN_1811316e0(0x10);
  *local_88 = 0;
  local_88[1] = 0;
  *local_88 = (longlong)&local_88;
  puVar1 = (undefined8 *)FUN_18081a0f0(&local_88,&PTR_FUN_18260b9d0);
  local_60 = (longlong *)0x0;
  uStack_58 = 0;
  local_50 = 0;
  local_48 = 0;
  local_40 = 0;
  local_60 = (longlong *)FUN_1811316e0(0x10);
  *local_60 = 0;
  local_60[1] = 0;
  *local_60 = (longlong)&local_60;
  local_28 = puVar1[3];
  local_a8 = puVar1[4] + local_28;
  local_b0 = 0;
  local_b8 = *puVar1;
  local_30 = 0;
  local_38 = local_b8;
  FUN_1807ea970(&local_60,&local_38,&local_b8);
  FUN_1807ec3f0(&local_88);
                    /* WARNING: Subroutine does not return */
  free(local_88);
}



############ FUN_ 180a4a5f0 size=1202 ############

/* WARNING: Instruction at (ram,0x000180a4aa95) overlaps instruction at (ram,0x000180a4aa94)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180a4afe8) */
/* WARNING: Removing unreachable block (ram,0x000180a4ac14) */
/* WARNING: Removing unreachable block (ram,0x000180a4b172) */
/* WARNING: Removing unreachable block (ram,0x000180a4ab6a) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_180a4a5f0(int *param_1,undefined8 param_2,longlong param_3,undefined8 param_4,
                       undefined8 param_5,char param_6)

{
  longlong *plVar1;
  int *piVar2;
  code *pcVar3;
  longlong lVar4;
  char cVar5;
  longlong lVar6;
  longlong *plVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 uVar10;
  longlong lVar11;
  undefined8 uVar12;
  undefined8 uVar13;
  int iVar14;
  uint uVar15;
  void *pvVar16;
  ulonglong uVar17;
  void *pvVar18;
  uint uVar19;
  ulonglong uVar20;
  longlong lVar21;
  undefined1 *puVar22;
  uint uVar23;
  uint uVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  bool bVar27;
  int unaff_retaddr;
  undefined1 auStack_468 [32];
  longlong local_448;
  uint local_438;
  undefined4 uStack_434;
  int *local_430;
  longlong *local_428;
  longlong local_420;
  longlong *local_418 [2];
  undefined8 local_408;
  longlong local_400;
  undefined4 auStack_3e8 [4];
  undefined4 auStack_3d8 [2];
  undefined8 *puStack_3d0;
  uint local_3c8;
  longlong local_3b8;
  char cStack_3b0;
  undefined1 auStack_3a8 [16];
  longlong lStack_398;
  undefined8 uStack_390;
  undefined8 auStack_388 [2];
  longlong lStack_378;
  undefined8 uStack_370;
  undefined1 local_368 [16];
  longlong lStack_358;
  undefined8 uStack_350;
  undefined1 auStack_348 [16];
  longlong lStack_338;
  undefined8 uStack_330;
  undefined8 auStack_328 [2];
  longlong lStack_318;
  undefined8 uStack_310;
  undefined1 auStack_308 [16];
  longlong lStack_2f8;
  undefined8 uStack_2f0;
  undefined8 local_228;
  undefined1 local_220 [32];
  undefined8 local_200;
  undefined1 uStack_1d8;
  undefined7 uStack_1d7;
  longlong lStack_1c8;
  ulonglong uStack_1c0;
  undefined1 local_1b8;
  undefined7 uStack_1b7;
  undefined8 local_1a8;
  ulonglong local_1a0;
  longlong local_198;
  longlong *local_190;
  undefined1 uStack_148;
  undefined7 uStack_147;
  longlong lStack_138;
  ulonglong uStack_130;
  undefined1 uStack_128;
  undefined7 uStack_127;
  longlong lStack_118;
  ulonglong uStack_110;
  undefined1 uStack_e8;
  undefined7 uStack_e7;
  longlong lStack_d8;
  ulonglong uStack_d0;
  undefined1 uStack_88;
  undefined7 uStack_87;
  longlong lStack_78;
  ulonglong uStack_70;
  undefined1 uStack_68;
  undefined7 uStack_67;
  longlong lStack_58;
  ulonglong uStack_50;
  ulonglong local_48;
  
  local_228 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_468;
  uVar24 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x1d8) == 0) {
    uVar23 = ((uVar24 & 0x1dff) * (uVar24 & 0x1dff) * 0x10 + 4) % 0x13;
  }
  else {
    uVar23 = 0x17cdd217;
  }
  iVar14 = (uVar24 & 0x2cff) * (uVar24 & 0x2cff) + 1;
  uVar19 = (iVar14 >> 4) + (iVar14 >> 1) + iVar14 * 0x24924924 >> 0x1d;
  uVar19 = (int)(uVar19 - 7) >> 0x1f & uVar19;
  uVar15 = ((uVar24 & 0x1fff) * (uVar24 & 0x1fff) * 0x10 + 4) % 0x13;
  uVar23 = (((int)(-uVar19 | uVar19) >> 0x1f) - ((int)(-uVar15 | uVar15) >> 0x1f) | 0x2951U) ^
           (int)(-uVar23 | uVar23) >> 0x1f & 0x2741U;
  uVar8 = (ulonglong)uVar23;
  uVar24 = (((uVar24 & 0x31ff) + 1) * (uVar24 & 0x31ff) + 7) % 0x51;
  local_3c8 = ((int)(-uVar24 | uVar24) >> 0x1f) * -0xb8c2 ^ 0xbc12;
  puVar26 = (undefined1 *)register0x00000020;
  local_430 = param_1;
  local_408 = param_2;
  local_200 = param_2;
  lVar6 = FUN_1811316e0(0x60);
  local_400 = lVar6;
  if (lVar6 == 0) {
    lVar6 = 0;
  }
  else {
    plVar7 = (longlong *)FUN_1805a4070(local_220,param_2);
    local_428 = plVar7;
    FUN_1805a4070(lVar6,plVar7);
    *(undefined ***)(lVar6 + 0x20) = license_services::LsRelation::vftable;
    *(undefined4 *)(lVar6 + 0x28) = *(undefined4 *)(param_3 + 8);
    *(undefined8 *)(lVar6 + 0x30) = *(undefined8 *)(param_3 + 0x10);
    *(undefined2 *)(lVar6 + 0x38) = *(undefined2 *)(param_3 + 0x18);
    *(undefined8 *)(lVar6 + 0x40) = param_4;
    FUN_180a429a0(lVar6 + 0x48,param_5);
    if (0xf < (ulonglong)plVar7[3]) {
      pvVar18 = (void *)*plVar7;
      pvVar16 = pvVar18;
      if ((0xfff < plVar7[3] + 1U) &&
         (pvVar16 = *(void **)((longlong)pvVar18 + -8),
         0x1f < (ulonglong)((longlong)pvVar18 + (-8 - (longlong)pvVar16)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar16);
    }
    plVar7[2] = 0;
    plVar7[3] = 0xf;
    *(undefined1 *)plVar7 = 0;
    param_1 = local_430;
  }
  local_420 = lVar6;
  FUN_180a42260(local_418,lVar6);
  FUN_1805ae620(&local_420,lVar6);
  FUN_1805a4070(&local_1b8,param_2);
  local_198 = local_420;
  local_190 = local_418[0];
  if (local_418[0] != (longlong *)0x0) {
    LOCK();
    *(int *)(local_418[0] + 1) = (int)local_418[0][1] + 1;
    UNLOCK();
  }
  local_448 = FUN_180a42340((longlong)param_1 + 0x18,&local_1b8);
  FUN_180a42640((longlong)param_1 + 0x18,&local_3b8,0,local_448 + 0x20);
  plVar7 = local_190;
  if (local_190 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_190 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_190 + 8))(local_190);
      LOCK();
      piVar2 = (int *)((longlong)plVar7 + 0xc);
      iVar14 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar14 == 1) {
        (**(code **)(*local_190 + 0x10))();
      }
    }
  }
  if (0xf < local_1a0) {
    pvVar16 = (void *)CONCAT71(uStack_1b7,local_1b8);
    pvVar18 = pvVar16;
    if ((0xfff < local_1a0 + 1) &&
       (pvVar18 = *(void **)((longlong)pvVar16 + -8),
       0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  local_1a8 = 0;
  local_1a0 = 0xf;
  local_1b8 = 0;
  local_430 = &DAT_1814f2f84;
  local_438 = (DAT_1814f2f84 + -0x4dd9522d) * 0x401;
  local_438 = local_438 ^ local_438 >> 6;
  bVar27 = local_438 == 0;
  uStack_434 = 1;
  do {
    uVar17 = 0;
    iVar14 = FUN_180a4c192();
    uVar10 = local_408;
    if ((bVar27) && ((uVar17 & 0x43) != 0)) {
      return (ulonglong)(iVar14 + 0xebde334d);
    }
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
    bVar27 = uVar24 == 0;
  } while (!bVar27);
  uVar24 = (_UNK_1814f2f88 + local_438) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + _UNK_1814f2f8c) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + _UNK_1814f2f90) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + _UNK_1814f2f94) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + _UNK_1814f2f98) * 0x401;
  uVar15 = ((uVar24 >> 6 ^ uVar24) + _UNK_1814f2f9c) * 0x401;
  uVar15 = uVar15 ^ uVar15 >> 6;
  uVar24 = uVar15 & 0x17f;
  iVar14 = (uVar24 + 2) * (uVar24 + 1) * uVar24;
  uVar17 = (longlong)(int)(((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e | 0xc2a2) ^
           0xc1a2;
  do {
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  uVar24 = (*(int *)(uVar17 + 0x1814f2ca0) + uVar15) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2ca4)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2ca8)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cac)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cb0)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cb4)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cb8)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cbc)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cc0)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cc4)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cc8)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2ccc)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cd0)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cd4)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cd8)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cdc)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2ce0)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2ce4)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2ce8)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cec)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cf0)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cf4)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cf8)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2cfc)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d00)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d04)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d08)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d0c)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d10)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d14)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d18)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d1c)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d20)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d24)) * 0x401;
  uVar15 = ((uVar24 >> 6 ^ uVar24) + *(int *)(uVar17 + 0x1814f2d28)) * 0x401;
  uVar15 = uVar15 ^ uVar15 >> 6;
  uVar24 = uVar15 & 0x1f | 0x1e;
  lVar6 = (uVar17 - 0x25c) +
          (0x9d2dL >> (uVar24 * uVar24 * 0xcd63 == 0xe0a51bc & (byte)(uVar17 - 0x25c)) ^ 0x9d29U);
  uVar24 = (*(int *)(lVar6 + 0x1814f2f84) + uVar15) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f88 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f8c + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f90 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f94 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f98 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f9c + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fa0 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fa4 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fa8 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fac + lVar6)) * 0x401;
  uVar15 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fb0 + lVar6)) * 0x401;
  uVar17 = (ulonglong)uVar15;
  uVar24 = (uint)(lVar6 + 0x2c) & 0x4f;
  uVar24 = uVar24 * uVar24 * (uVar24 + 1) * (uVar24 + 1) & 0x80000003;
  uVar20 = (ulonglong)uVar24;
  lVar6 = lVar6 + 0x2c + ((longlong)(int)(0x434f - uVar24) ^ 0x434bU);
  uVar24 = ((uVar15 >> 6 ^ uVar15) + *(int *)(lVar6 + 0x1814f2f84)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f88 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f8c + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f90 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f94 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f98 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2f9c + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fa0 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fa4 + lVar6)) * 0x401;
  uVar24 = ((uVar24 >> 6 ^ uVar24) + *(int *)(&UNK_1814f2fa8 + lVar6)) * 0x401;
  uVar24 = (uVar24 >> 6 ^ uVar24) + 0x7764e02d;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  local_408 = 0xd94ee94fddc6fe3d;
  _local_438 = CONCAT44(uStack_434,0xddc6fe3d);
  do {
    puVar25 = puVar26 + param_3;
    param_3 = ((longlong)puVar26 - (longlong)puVar25 ^ 0xffffffffffffffffU) + 1;
    puVar26 = puVar25 + -param_3;
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  lVar6 = 0;
  if ((char)(((uVar24 * 0x8000 | uVar24 >> 0x11) == 0xddc6fe3d) * '\t') != '\0') {
    lVar21 = (longlong)(int)local_3c8;
    puVar26 = auStack_468;
    do {
      puVar22 = puVar26;
      *(undefined8 *)(puVar22 + -8) = uVar10;
      *(ulonglong *)(puVar22 + -0x10) = uVar8;
      *(longlong *)(puVar22 + -0x18) = lVar6;
      lVar4 = -lVar21;
      uVar17 = (-uVar17 ^ 0xffffffffffffffff) + 1;
      uVar20 = -(~uVar20 + 1);
      lVar6 = *(longlong *)(puVar22 + lVar4 + 0x4b8);
      uVar8 = *(ulonglong *)(puVar22 + lVar4 + 0x4c0);
      uVar10 = *(undefined8 *)(puVar22 + lVar4 + 0x4c8);
      uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar24 < 0) {
        uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
      }
      puVar26 = puVar22 + lVar4 + 0x4d0;
    } while (uVar24 != 0);
    if (cStack_3b0 == (char)lVar6) {
      uVar12 = *(undefined8 *)(local_3b8 + 0x40);
      *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4b9ee;
      cVar5 = FUN_180a47a60(*(undefined8 *)(puVar22 + lVar4 + 0x518),uVar12);
      if (cVar5 == '\0') {
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc3b;
        lVar9 = FUN_1811316e0(0x18);
        *(longlong *)(puVar22 + lVar4 + 0x538) = lVar9;
        lVar21 = lVar6;
        if (lVar9 != 0) {
          *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc54;
          lVar21 = FUN_1805a48c0(lVar9,
                                 "Duplicate uuid values detected. The offending objects have the LsRelation values %s and %s."
                                );
        }
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc61;
        lVar11 = FUN_1805c0260();
        *(undefined1 **)(puVar22 + lVar4 + 0x538) = local_368;
        *(undefined1 **)(puVar22 + lVar4 + 0x510) = auStack_348;
        puStack_3d0 = auStack_328;
        *(undefined1 **)(puVar22 + lVar4 + 0x528) = auStack_308;
        uStack_350 = 0xf;
        local_368[0] = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bcad;
        lStack_358 = lVar6;
        FUN_1805a6cb0(local_368,&DAT_181bb56a0,2);
        uStack_330 = 0xf;
        auStack_348[0] = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bcd4;
        lStack_338 = lVar6;
        FUN_1805a6cb0(auStack_348,&DAT_181bb1ed8,1);
        uStack_130 = 0xf;
        uStack_148 = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bd07;
        lStack_138 = lVar6;
        FUN_1805a6cb0(&uStack_148,&DAT_181bdf740,1);
        *(undefined1 **)(puVar22 + lVar4 + 0x4f0) = local_368;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bd2b;
        uVar12 = FUN_18080c630(&uStack_68,param_3,&uStack_148,auStack_348);
        uStack_310 = 0xf;
        auStack_328[0]._0_1_ = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bd54;
        lStack_318 = lVar6;
        FUN_1805a6cb0(auStack_328,&DAT_181bb56a0,2);
        uStack_2f0 = 0xf;
        auStack_308[0] = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bd7b;
        lStack_2f8 = lVar6;
        FUN_1805a6cb0(auStack_308,&DAT_181bb1ed8,1);
        uStack_1c0 = 0xf;
        uStack_1d8 = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bdae;
        lStack_1c8 = lVar6;
        FUN_1805a6cb0(&uStack_1d8,&DAT_181bdf740,1);
        lVar9 = *(longlong *)(local_3b8 + 0x40);
        *(undefined8 **)(puVar22 + lVar4 + 0x4f0) = auStack_328;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bdd7;
        uVar13 = FUN_18080c630(&uStack_88,lVar9 + 0x20,&uStack_1d8,auStack_308);
        uVar10 = *(undefined8 *)(lVar21 + 8);
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bde4;
        FUN_1805b2240(uVar10,uVar13);
        uVar10 = *(undefined8 *)(lVar21 + 8);
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bdf0;
        FUN_1805b2240(uVar10,uVar12);
        if (0xf < uStack_70) {
          pvVar16 = (void *)CONCAT71(uStack_87,uStack_88);
          pvVar18 = pvVar16;
          if ((0xfff < uStack_70 + 1) &&
             (pvVar18 = *(void **)((longlong)pvVar16 + -8),
             0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
            *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bf97;
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          *(undefined1 **)(puVar22 + lVar4 + 0x4c8) = &LAB_180a4be32;
          free(pvVar18);
        }
        uStack_70 = 0xf;
        uStack_88 = 0;
        lStack_78 = lVar6;
        if (0xf < uStack_1c0) {
          pvVar16 = (void *)CONCAT71(uStack_1d7,uStack_1d8);
          pvVar18 = pvVar16;
          if ((0xfff < uStack_1c0 + 1) &&
             (pvVar18 = *(void **)((longlong)pvVar16 + -8),
             0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
            *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bf9e;
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          *(undefined1 **)(puVar22 + lVar4 + 0x4c8) = &LAB_180a4be8c;
          free(pvVar18);
        }
        uStack_1c0 = 0xf;
        uStack_1d8 = 0;
        if (0xf < uStack_50) {
          pvVar16 = (void *)CONCAT71(uStack_67,uStack_68);
          pvVar18 = pvVar16;
          if ((0xfff < uStack_50 + 1) &&
             (pvVar18 = *(void **)((longlong)pvVar16 + -8),
             0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
            *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bfa5;
            lStack_1c8 = lVar6;
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          *(undefined1 **)(puVar22 + lVar4 + 0x4c8) = &LAB_180a4bee6;
          lStack_1c8 = lVar6;
          free(pvVar18);
        }
        uStack_50 = 0xf;
        uStack_68 = 0;
        lStack_58 = lVar6;
        if (uStack_130 < 0x10) {
          auStack_3d8[0] = 0x59;
          *(char **)(puVar22 + lVar4 + 0x538) =
               "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignaturegenerator.cpp"
          ;
          uVar10 = *(undefined8 *)(lVar11 + 8);
          *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bf5d;
          lStack_1c8 = lVar6;
          uVar10 = FUN_1805a21d0(uVar10,puVar22 + lVar4 + 0x538);
                    /* WARNING: Subroutine does not return */
          *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4bf69;
          FUN_1805b20d0(uVar10,auStack_3d8);
        }
        pvVar16 = (void *)CONCAT71(uStack_147,uStack_148);
        pvVar18 = pvVar16;
        if ((0xfff < uStack_130 + 1) &&
           (pvVar18 = *(void **)((longlong)pvVar16 + -8),
           0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
          *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4bfac;
          lStack_1c8 = lVar6;
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        *(undefined1 **)(puVar22 + lVar4 + 0x4c8) = &LAB_180a4bf3c;
        lStack_1c8 = lVar6;
        free(pvVar18);
      }
      if (param_6 != (char)lVar6) {
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4ba0d;
        lVar9 = FUN_1811316e0(0x18);
        *(longlong *)(puVar22 + lVar4 + 0x510) = lVar9;
        lVar21 = lVar6;
        if (lVar9 != 0) {
          *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4ba26;
          lVar21 = FUN_1805a48c0(lVar9,
                                 "The object with LsRelation value %s is already registered as a signature participant, and strint checking is on. This is not treated as an error if the \"strict\" calling argument is set false."
                                );
        }
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4ba33;
        lVar9 = FUN_1805c0260();
        *(undefined1 **)(puVar22 + lVar4 + 0x510) = auStack_3a8;
        puStack_3d0 = auStack_388;
        uStack_390 = 0xf;
        auStack_3a8[0] = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4ba6d;
        lStack_398 = lVar6;
        FUN_1805a6cb0(auStack_3a8,&DAT_181bb56a0,2);
        uStack_370 = 0xf;
        auStack_388[0]._0_1_ = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4ba94;
        lStack_378 = lVar6;
        FUN_1805a6cb0(auStack_388,&DAT_181bb1ed8,1);
        uStack_110 = 0xf;
        uStack_128 = 0;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bac7;
        lStack_118 = lVar6;
        FUN_1805a6cb0(&uStack_128,&DAT_181bdf740,1);
        *(undefined1 **)(puVar22 + lVar4 + 0x4f0) = auStack_3a8;
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4baeb;
        puStack_3d0 = (undefined8 *)FUN_18080c630(&uStack_e8,param_3,&uStack_128,auStack_388);
        if (0xf < (ulonglong)puStack_3d0[3]) {
          puStack_3d0 = (undefined8 *)*puStack_3d0;
        }
        uVar10 = *(undefined8 *)(lVar21 + 8);
        *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bb07;
        FUN_1805a21d0(uVar10,&puStack_3d0);
        if (0xf < uStack_d0) {
          pvVar16 = (void *)CONCAT71(uStack_e7,uStack_e8);
          pvVar18 = pvVar16;
          if ((0xfff < uStack_d0 + 1) &&
             (pvVar18 = *(void **)((longlong)pvVar16 + -8),
             0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
            *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc29;
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          *(undefined1 **)(puVar22 + lVar4 + 0x4c8) = &LAB_180a4bb49;
          free(pvVar18);
        }
        uStack_d0 = 0xf;
        uStack_e8 = 0;
        lStack_d8 = lVar6;
        if (uStack_110 < 0x10) {
          auStack_3e8[0] = 0x50;
          *(char **)(puVar22 + lVar4 + 0x510) =
               "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignaturegenerator.cpp"
          ;
          uVar10 = *(undefined8 *)(lVar9 + 8);
          *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bbc4;
          uVar10 = FUN_1805a21d0(uVar10,puVar22 + lVar4 + 0x510);
                    /* WARNING: Subroutine does not return */
          *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4bbd0;
          FUN_1805b20d0(uVar10,auStack_3e8);
        }
        pvVar16 = (void *)CONCAT71(uStack_127,uStack_128);
        pvVar18 = pvVar16;
        if ((0xfff < uStack_110 + 1) &&
           (pvVar18 = *(void **)((longlong)pvVar16 + -8),
           0x1f < (ulonglong)((longlong)pvVar16 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
          *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4bc30;
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        *(undefined1 **)(puVar22 + lVar4 + 0x4c8) = &LAB_180a4bba3;
        free(pvVar18);
      }
      plVar7 = *(longlong **)(puVar22 + lVar4 + 0x520);
      if (plVar7 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar7 + 1;
        lVar6 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar6 == 1) {
          pcVar3 = *(code **)(*plVar7 + 8);
          *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc00;
          (*pcVar3)(plVar7);
          LOCK();
          piVar2 = (int *)((longlong)plVar7 + 0xc);
          iVar14 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar14 == 1) {
            pcVar3 = *(code **)(*plVar7 + 0x10);
            *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc13;
            (*pcVar3)(plVar7);
          }
        }
      }
      *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bc1c;
      FUN_180485450(uVar10);
    }
    else {
      *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4bfb7;
      FUN_1805b9860(puVar22 + lVar4 + 0x520,uVar20,uVar17,0);
      *(undefined8 *)(puVar22 + lVar4 + 0x4c8) = 0x180a4bfc0;
      FUN_180485450(uVar10);
    }
    *(undefined **)(puVar22 + lVar4 + 0x4c8) = &UNK_180a4bfd1;
  }
  uVar8 = thunk_FUN_1805a9280((longlong)(int)uVar23,uVar20,&UNK_180a4b1df);
  return uVar8;
}



############ FUN_ 180a42260 size=97 ############

undefined8 * FUN_180a42260(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<license_services::DsigSignatureGenerator::_EntityControlBlock>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a429a0 size=268 ############

ulonglong * FUN_180a429a0(ulonglong *param_1,longlong *param_2)

{
  void *_Dst;
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  size_t _Size;
  
  uVar3 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  uVar2 = param_2[1] - *param_2 >> 3;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (uVar2 != 0) {
    if (0x1fffffffffffffff < uVar2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar2 = uVar2 * 8;
    if (uVar2 < 0x1000) {
      if (uVar2 != 0) {
        uVar3 = FUN_1811316e0(uVar2);
      }
    }
    else {
      uVar3 = uVar2 + 0x27;
      if (uVar3 <= uVar2) {
        uVar3 = 0xffffffffffffffff;
      }
      lVar1 = FUN_1811316e0(uVar3);
      if (lVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
      uVar3 = lVar1 + 0x27U & 0xffffffffffffffe0;
      *(longlong *)(uVar3 - 8) = lVar1;
    }
    *param_1 = uVar3;
    param_1[1] = uVar3;
    _Dst = (void *)*param_1;
    param_1[2] = (ulonglong)(uVar2 + (longlong)_Dst);
    _Size = param_2[1] - *param_2;
    memmove(_Dst,(void *)*param_2,_Size);
    param_1[1] = _Size + (longlong)_Dst;
  }
  return param_1;
}



############ FUN_ 180a47b50 size=63 ############

void FUN_180a47b50(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x50);
  *puVar1 = *param_1;
  puVar1[1] = *param_1;
  puVar1[2] = *param_1;
  return;
}



############ FUN_ 18086d670 size=214 ############

void FUN_18086d670(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsAuthRelation::targetSlowPath: The LsAuthRelationWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsauthrelation.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180870960 size=368 ############

void FUN_180870960(void)

{
  undefined8 *puVar1;
  undefined8 local_b8;
  undefined8 local_b0;
  longlong local_a8;
  longlong *local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  longlong *local_60;
  undefined8 uStack_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  longlong local_28;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_182667878) {
    _Init_thread_header(&DAT_182667878);
    if (DAT_182667878 == -1) {
      DAT_182667870 = (undefined8 *)FUN_1811316e0(0x18);
      if (DAT_182667870 == (undefined8 *)0x0) {
        DAT_182667870 = (undefined8 *)0x0;
      }
      else {
        *DAT_182667870 = 0;
        DAT_182667870[1] = 0;
        DAT_182667870[2] = 0;
      }
      _Init_thread_footer(&DAT_182667878);
    }
  }
  local_88 = (longlong *)0x0;
  uStack_80 = 0;
  local_78 = 0;
  local_70 = 0;
  local_68 = 0;
  local_88 = (longlong *)FUN_1811316e0(0x10);
  *local_88 = 0;
  local_88[1] = 0;
  *local_88 = (longlong)&local_88;
  puVar1 = (undefined8 *)FUN_18081a0f0(&local_88,&PTR_FUN_18260b9e0);
  local_60 = (longlong *)0x0;
  uStack_58 = 0;
  local_50 = 0;
  local_48 = 0;
  local_40 = 0;
  local_60 = (longlong *)FUN_1811316e0(0x10);
  *local_60 = 0;
  local_60[1] = 0;
  *local_60 = (longlong)&local_60;
  local_28 = puVar1[3];
  local_a8 = puVar1[4] + local_28;
  local_b0 = 0;
  local_b8 = *puVar1;
  local_30 = 0;
  local_38 = local_b8;
  FUN_1807ea970(&local_60,&local_38,&local_b8);
  FUN_1807ec3f0(&local_88);
                    /* WARNING: Subroutine does not return */
  free(local_88);
}



############ FUN_ 180870ed0 size=214 ############

void FUN_180870ed0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsCountLimit::targetSlowPath: The LsCountLimitWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lscountlimit.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180889960 size=214 ############

void FUN_180889960(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsDeveloperBlock::targetSlowPath: The LsDeveloperBlockWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsdeveloperblock.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 1808aef20 size=214 ############

void FUN_1808aef20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsAuthKey::targetSlowPath: The LsAuthKeyWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsauthkey.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 1808b2510 size=679 ############

longlong FUN_1808b2510(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x230;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x230;
  if (lVar13 == 0x75075075075075) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x230;
  uVar11 = uVar12;
  if ((uVar4 <= 0x75075075075075 - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x230;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0x75075075075076) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_1808b264b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_1808b264b:
  lVar7 = lVar1 * 0x230 + uVar4;
  lVar1 = lVar7 + 0x230;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_1808b3660(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x230) {
      FUN_1808b3660(uVar8);
      uVar8 = uVar8 + 0x230;
    }
  }
  else {
    FUN_1808b4cc0(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_1808b4cc0(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x46) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x230) * 0x230)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x230 + uVar4;
  param_1[2] = uVar11 * 0x230 + uVar4;
  return lVar13 * 0x230 + *param_1;
}



############ FUN_ 180ae4f30 size=2309 ############

/* WARNING: Instruction at (ram,0x000180ae5752) overlaps instruction at (ram,0x000180ae5750)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180ae53a0) */
/* WARNING: Removing unreachable block (ram,0x000180ae5318) */
/* WARNING: Removing unreachable block (ram,0x000180ae5233) */
/* WARNING: Removing unreachable block (ram,0x000180ae537d) */
/* WARNING: Removing unreachable block (ram,0x000180ae5750) */

void FUN_180ae4f30(undefined8 *param_1,undefined4 param_2)

{
  int iVar1;
  byte bVar2;
  undefined1 *puVar3;
  uint uVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  uint uVar7;
  uint uVar8;
  longlong *plVar9;
  uint *puVar10;
  undefined8 uVar11;
  longlong lVar12;
  undefined4 *puVar13;
  undefined4 *puVar14;
  undefined1 *puVar15;
  undefined4 *puVar16;
  IMAGE_DOS_HEADER *pIVar17;
  undefined1 *puVar18;
  IMAGE_DOS_HEADER *pIVar19;
  uint uVar20;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_c8 [32];
  longlong local_a8;
  undefined8 local_a0;
  uint local_98 [2];
  undefined4 *local_90;
  longlong local_88;
  uint local_80;
  uint local_7c;
  int local_78;
  uint local_74;
  code *local_70;
  undefined8 *local_68;
  undefined8 *local_60;
  undefined8 local_58;
  undefined8 *local_50;
  undefined4 local_40 [4];
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_60 = param_1;
  local_50 = param_1;
  puVar5 = (undefined8 *)FUN_1811316e0(0x60);
  local_68 = puVar5;
  if (puVar5 == (undefined8 *)0x0) {
    puVar5 = (undefined8 *)0x0;
  }
  else {
    *puVar5 = license_services::LsEntityLicense::vftable;
    FUN_180677c10(puVar5 + 1);
    puVar5[8] = 0;
    puVar5[9] = 0;
    puVar5[10] = 0;
    *(undefined2 *)(puVar5 + 0xb) = 0;
  }
  *param_1 = puVar5;
  FUN_180ae4ec0(param_1 + 1,puVar5);
  FUN_1805ae620(param_1,puVar5,puVar5);
  param_1[2] = *param_1;
  uVar7 = (uint)&stack0x00000000 & 0x1bf;
  local_74 = 0xba29 - ((uVar7 + 2) * (uVar7 + 1) * uVar7) % 3 ^ 0xb799;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  pIVar19 = &IMAGE_DOS_HEADER_180000000;
  local_88 = 0;
  uVar11 = 0x9070c;
  local_a0 = 0x29d4;
  local_90 = &DAT_180774c38;
  local_a8 = 0x18077760c;
  local_78 = 0x500;
  do {
    FUN_180ae35d5(0xe438,uVar11);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_a0._0_4_ = 0x68a691b8;
  FUN_180ae6ad0(param_1[2],param_2);
  puVar14 = local_90;
  local_68 = (undefined8 *)(local_a8 - (longlong)local_90);
  local_88 = 0;
  uVar20 = 0xaa8ee43a;
  local_a0 = CONCAT44(local_a0._4_4_,0x5bd1e995);
  local_a8 = 0xb119410ed69f160b;
  local_90 = (undefined4 *)CONCAT44(local_90._4_4_,0xd69f160b);
  uVar7 = (uint)local_68;
  bVar2 = (byte)local_68 & 0x1f;
  puVar13 = puVar14;
  iVar1 = 0x500;
  puVar16 = (undefined4 *)local_68;
  if ((uVar7 ^ 0x1ca1) == (0xc21 >> ((bVar2 + 1) * (bVar2 + 1) * bVar2 * bVar2 & 3) | 0x1ca1U)) {
LAB_180ae5560:
    do {
      puVar10 = local_98;
      FUN_180ae46e2(puVar10,local_98);
      uVar11 = rdtsc();
      *puVar10 = (uint)uVar11 ^ (uint)((ulonglong)uVar11 >> 0x20);
      FUN_180ae45dc();
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    local_98[0] = (local_98[0] * 0x1a85ec53 >> 0x18 ^ local_98[0] * 0x1a85ec53) * -0x50283595;
    if (local_98[0] < 0x3333333f) {
      do {
        local_70 = FUN_181194940;
        uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      uVar6 = FUN_181194940(0,0x713f);
      if (1 < uVar6) {
        lVar12 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
        plVar9 = (longlong *)register0x00000020;
        while (lVar12 != -0x3333333333333334) {
          *plVar9 = 0;
          plVar9 = plVar9 + 8;
          lVar12 = *plVar9;
        }
      }
    }
    do {
      FUN_180ae4bd3(0xe438);
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      local_7c = uVar20;
    } while (uVar7 != 0);
    do {
      puVar10 = &local_7c;
      puVar18 = &LAB_18113e030;
      uVar7 = FUN_180a67259(&LAB_18113e030,&LAB_18113e030);
      *puVar10 = uVar7;
      FUN_180ae6ed5();
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar20 = (local_7c >> 4 | local_7c << 0x1c) & 0xd2d2d2d2 |
             (local_7c << 4 | local_7c >> 0x1c) & 0x2d2d2d2d;
    uVar7 = (uVar20 >> 0xd ^ uVar20) & 0xfff;
    uVar20 = uVar20 ^ (uVar7 << 0xd | uVar7);
    uVar7 = (uVar20 << 8 | uVar20 >> 0x18) & 0x57a857a8;
    do {
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    if (((uint)local_90 ^ ((uVar20 >> 8 | uVar20 << 0x18) & 0xa857a857 | uVar7)) * 0x2e == 0) {
      puVar3 = auStack_c8;
      do {
        puVar15 = puVar3;
        *(undefined1 **)(puVar15 + -8) = puVar18;
        *(undefined4 **)(puVar15 + -0x10) = puVar16;
        *(undefined4 **)(puVar15 + -0x18) = puVar13;
        lVar12 = -(longlong)(int)local_74;
        puVar13 = *(undefined4 **)(puVar15 + lVar12 + 0xd98);
        puVar16 = *(undefined4 **)(puVar15 + lVar12 + 0xda0);
        puVar18 = *(undefined1 **)(puVar15 + lVar12 + 0xda8);
        uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
        puVar3 = puVar15 + lVar12 + 0xdb0;
      } while (uVar7 != 0);
      *(undefined **)(puVar15 + lVar12 + 0xda8) = &UNK_180ae592b;
    }
    thunk_FUN_1805a9280((longlong)iVar1,uVar7,puVar18,puVar10);
    return;
  }
  uVar8 = uVar7 & 0x3f;
  uVar7 = uVar7 & 0x1f;
LAB_180ae53b0:
  puVar16 = puVar14;
  if ((pIVar19 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar12._0_1_ = pIVar19->e_magic[0], lVar12._1_1_ = pIVar19->e_magic[1],
     lVar12._2_2_ = pIVar19->e_cblp, lVar12._4_2_ = pIVar19->e_cp, lVar12._6_2_ = pIVar19->e_crlc,
     -1 < lVar12)) {
    local_a8 = 0x2621fc0;
    pIVar17 = pIVar19;
    do {
      if (puVar14 < IMAGE_DOS_HEADER_180000000.e_magic + lVar12 + 8) {
        pIVar19 = pIVar17;
        if (-1 < lVar12) {
          plVar9 = (longlong *)(lVar12 + 0x180000000);
          if (plVar9 < puVar14 + 1) {
            local_40[0] = *puVar14;
            goto LAB_180ae5430;
          }
        }
        break;
      }
      pIVar19 = (IMAGE_DOS_HEADER *)&pIVar17->e_cparhdr;
      lVar12._0_2_ = pIVar17->e_cparhdr;
      lVar12._2_2_ = pIVar17->e_minalloc;
      lVar12._4_2_ = pIVar17->e_maxalloc;
      lVar12._6_2_ = pIVar17->e_ss;
      pIVar17 = pIVar19;
    } while (-1 < lVar12);
  }
  goto LAB_180ae5460;
  while (plVar9 = (longlong *)(lVar12 + 0x180000000), plVar9 < puVar14 + 1) {
LAB_180ae5430:
    *(longlong *)(&stack0x00017fffffc0 + (lVar12 - (longlong)puVar14)) = *plVar9 + -0x180000000;
    pIVar17 = (IMAGE_DOS_HEADER *)&pIVar17->e_cparhdr;
    lVar12 = *(longlong *)pIVar17;
    puVar16 = local_40;
    if (lVar12 < 0) break;
  }
LAB_180ae5460:
  do {
    puVar10 = &local_80;
    puVar13 = puVar16 + 0xf0f1bf5;
    FUN_180ae3dc7(0xe438);
    *puVar10 = puVar13[-0xf0f1bf5];
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_80 = (local_80 * (int)local_a0 >> 0x18 ^ local_80 * (int)local_a0) * (int)local_a0;
  uVar20 = uVar20 * (int)local_a0 ^ local_80;
  local_88 = local_88 + 4;
  puVar14 = puVar14 + 1;
  uVar4 = uVar20 & 0x7f;
  uVar4 = ((uVar4 + 1) * (uVar4 + 1) * uVar4 * uVar4 &
           (uVar8 + 1) * (uVar8 + 1) * uVar8 * uVar8 & 0x80000003 & 2) + 0x316b ^ (uint)local_68 ^
          0x2dca;
  puVar13 = (undefined4 *)(ulonglong)uVar4;
  iVar1 = local_78;
  if (uVar4 == ((int)(((uint)local_88 ^ 0xc21) & 0xce31) >>
                ((byte)((int)((uVar7 + 1) * (uVar7 + 1) * uVar7 * uVar7 & 0x80000003) >>
                       ((byte)local_88 & 0x1f)) & 0x1f) | (uint)local_88 ^ 0x1ca1))
  goto LAB_180ae5560;
  goto LAB_180ae53b0;
}



############ FUN_ 180ae4ec0 size=97 ############

undefined8 * FUN_180ae4ec0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityLicense>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180ae67a0 size=311 ############

void FUN_180ae67a0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180ae6930(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_1808b2510(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_1808b3660(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x230;
  return;
}



############ FUN_ 180ae6930 size=316 ############

longlong FUN_180ae6930(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 1808bc470 size=368 ############

void FUN_1808bc470(void)

{
  undefined8 *puVar1;
  undefined8 local_b8;
  undefined8 local_b0;
  longlong local_a8;
  longlong *local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  longlong *local_60;
  undefined8 uStack_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  longlong local_28;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_1826679d0) {
    _Init_thread_header(&DAT_1826679d0);
    if (DAT_1826679d0 == -1) {
      DAT_1826679c8 = (undefined8 *)FUN_1811316e0(0x18);
      if (DAT_1826679c8 == (undefined8 *)0x0) {
        DAT_1826679c8 = (undefined8 *)0x0;
      }
      else {
        *DAT_1826679c8 = 0;
        DAT_1826679c8[1] = 0;
        DAT_1826679c8[2] = 0;
      }
      _Init_thread_footer(&DAT_1826679d0);
    }
  }
  local_88 = (longlong *)0x0;
  uStack_80 = 0;
  local_78 = 0;
  local_70 = 0;
  local_68 = 0;
  local_88 = (longlong *)FUN_1811316e0(0x10);
  *local_88 = 0;
  local_88[1] = 0;
  *local_88 = (longlong)&local_88;
  puVar1 = (undefined8 *)FUN_18081a0f0(&local_88,&PTR_FUN_18260bb30);
  local_60 = (longlong *)0x0;
  uStack_58 = 0;
  local_50 = 0;
  local_48 = 0;
  local_40 = 0;
  local_60 = (longlong *)FUN_1811316e0(0x10);
  *local_60 = 0;
  local_60[1] = 0;
  *local_60 = (longlong)&local_60;
  local_28 = puVar1[3];
  local_a8 = puVar1[4] + local_28;
  local_b0 = 0;
  local_b8 = *puVar1;
  local_30 = 0;
  local_38 = local_b8;
  FUN_1807ea970(&local_60,&local_38,&local_b8);
  FUN_1807ec3f0(&local_88);
                    /* WARNING: Subroutine does not return */
  free(local_88);
}



############ FUN_ 1808bc990 size=214 ############

void FUN_1808bc990(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsTimeLimit::targetSlowPath: The LsTimeLimitWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lstimelimit.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 1808f1880 size=214 ############

void FUN_1808f1880(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsAuthorization::targetSlowPath: The LsAuthorizationWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsauthorization.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180925250 size=166 ############

void FUN_180925250(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = FUN_1811316e0(0x18);
    if (local_res8 != 0) {
      FUN_1805a48c0(local_res8,
                    "LsLicense::targetSlowPath: The LsLicenseWire object that this object references has disappeared."
                   );
    }
    lVar2 = FUN_1805c0260();
    local_res8 = CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lslicense.cpp"
    ;
    uVar3 = FUN_1805a21d0(*(undefined8 *)(lVar2 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180926600 size=97 ############

undefined8 * FUN_180926600(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<apache::thrift::transport::TAsioReadHandler<boost::asio::windows::basic_stream_handle<boost::asio::windows::stream_handle_service>,apache::thrift::transport::TAsioLocalSocket>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180926670 size=97 ############

undefined8 * FUN_180926670(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<apache::thrift::transport::TAsioWriteHandler<boost::asio::windows::basic_stream_handle<boost::asio::windows::stream_handle_service>,apache::thrift::transport::TAsioLocalSocket>_>
              ::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 1809266e0 size=97 ############

undefined8 * FUN_1809266e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<apache::thrift::transport::TAsioNamedPipeClient>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180927030 size=103 ############

undefined8 *
FUN_180927030(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x70);
  if (puVar1 != (undefined8 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = param_1;
    puVar1[4] = 0;
    *puVar1 = boost::asio::
              deadline_timer_service<boost::posix_time::ptime,boost::asio::time_traits<boost::posix_time::ptime>_>
              ::vftable;
    FUN_1809275f0(puVar1 + 5,param_1,param_3,param_4,uVar2);
  }
  return puVar1;
}



############ FUN_ 1809275f0 size=417 ############

undefined8 * FUN_1809275f0(undefined8 *param_1,longlong param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong lVar1;
  void *_Memory;
  DWORD DVar2;
  HANDLE pvVar3;
  LARGE_INTEGER LVar4;
  LARGE_INTEGER LVar5;
  LARGE_INTEGER local_res10;
  LARGE_INTEGER local_res18;
  DWORD local_50 [2];
  undefined8 local_48;
  LPCRITICAL_SECTION local_40;
  undefined1 local_38;
  
  LVar5.QuadPart = 0;
  param_1[1] = 0;
  *param_1 = boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime>_>::
             vftable;
  param_1[3] = 0;
  param_1[2] = boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::
               vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  lVar1 = *(longlong *)(param_2 + 0x10);
  param_1[8] = lVar1;
  lpCriticalSection = (LPCRITICAL_SECTION)(lVar1 + 0x58);
  local_40 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  local_38 = 1;
  param_1[1] = *(undefined8 *)(lVar1 + 0x80);
  *(undefined8 **)(lVar1 + 0x80) = param_1;
  if (*(longlong *)(lVar1 + 0x48) == 0) {
    pvVar3 = CreateWaitableTimerW((LPSECURITY_ATTRIBUTES)0x0,0,(LPCWSTR)0x0);
    *(HANDLE *)(lVar1 + 0x48) = pvVar3;
    if (pvVar3 == (HANDLE)0x0) {
      DVar2 = GetLastError();
      local_48 = FUN_1805c8c70();
      local_50[0] = DVar2;
      if (DVar2 != 0) {
                    /* WARNING: Subroutine does not return */
        FUN_1805bd9a0(local_50,"timer");
      }
    }
    local_res10.QuadPart = -3000000000;
    SetWaitableTimer(*(HANDLE *)(lVar1 + 0x48),&local_res10,300000,(PTIMERAPCROUTINE)0x0,(LPVOID)0x0
                     ,0);
  }
  if (*(longlong *)(lVar1 + 0x40) == 0) {
    LVar4.QuadPart = FUN_1811316e0(0x18);
    local_res10.QuadPart = LVar4.QuadPart;
    if ((undefined8 *)LVar4.QuadPart != (undefined8 *)0x0) {
      *(undefined8 *)(LVar4.QuadPart + 8) = 0;
      *(undefined8 *)(LVar4.QuadPart + 0x10) = 0;
      local_res18.QuadPart = FUN_1811316e0(0x20);
      if ((undefined8 *)local_res18.QuadPart != (undefined8 *)0x0) {
        *(undefined ***)local_res18 =
             boost::asio::detail::win_thread::
             func<boost::asio::detail::win_iocp_io_service::timer_thread_function>::vftable;
        *(longlong *)(local_res18.QuadPart + 0x18) = lVar1;
        LVar5.QuadPart = local_res18.QuadPart;
      }
      FUN_18092b9d0(LVar4.QuadPart,LVar5.QuadPart,0x10000);
      LVar5.QuadPart = LVar4.QuadPart;
    }
    _Memory = *(void **)(lVar1 + 0x40);
    if (_Memory != (void *)0x0) {
      CloseHandle(*(HANDLE *)((longlong)_Memory + 8));
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    ((LARGE_INTEGER *)(lVar1 + 0x40))->QuadPart = (LONGLONG)LVar5;
  }
  LeaveCriticalSection(lpCriticalSection);
  return param_1;
}



############ FUN_ 1809270a0 size=431 ############

void FUN_1809270a0(ulonglong *param_1,undefined8 *param_2)

{
  undefined4 *puVar1;
  undefined8 *puVar2;
  void *pvVar3;
  code *pcVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  longlong lVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  longlong lVar12;
  undefined1 local_res8;
  undefined8 uVar13;
  
  uVar13 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)param_1[1];
  if ((undefined8 *)param_1[2] == puVar2) {
    lVar12 = (longlong)((longlong)puVar2 - *param_1) >> 4;
    if (lVar12 == 0xfffffffffffffff) {
      FUN_1809284a0();
      pcVar4 = (code *)swi(3);
      (*pcVar4)();
      return;
    }
    uVar9 = lVar12 + 1;
    uVar10 = (longlong)((longlong)param_1[2] - *param_1) >> 4;
    uVar11 = uVar9;
    if ((uVar10 <= 0xfffffffffffffff - (uVar10 >> 1)) &&
       (uVar11 = (uVar10 >> 1) + uVar10, uVar11 < uVar9)) {
      uVar11 = uVar9;
    }
    if (uVar11 == 0) {
      uVar10 = 0;
    }
    else {
      if (0xfffffffffffffff < uVar11) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_alloc();
      }
      uVar10 = uVar11 * 0x10;
      if (uVar10 < 0x1000) {
        uVar10 = FUN_1811316e0();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
      }
      else {
        if (uVar10 + 0x27 <= uVar10) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_alloc();
        }
        lVar8 = FUN_1811316e0(uVar10 + 0x27);
        if (lVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
        uVar10 = lVar8 + 0x27U & 0xffffffffffffffe0;
        *(longlong *)(uVar10 - 8) = lVar8;
      }
    }
    uVar5 = *(undefined4 *)((longlong)param_2 + 4);
    uVar6 = *(undefined4 *)(param_2 + 1);
    uVar7 = *(undefined4 *)((longlong)param_2 + 0xc);
    puVar1 = (undefined4 *)(uVar10 + lVar12 * 0x10);
    *puVar1 = *(undefined4 *)param_2;
    puVar1[1] = uVar5;
    puVar1[2] = uVar6;
    puVar1[3] = uVar7;
    local_res8 = SUB81(param_1,0);
    FUN_180926750(*param_1,param_1[1],uVar10,param_1,local_res8,local_res8,uVar13);
    pvVar3 = (void *)*param_1;
    if (pvVar3 != (void *)0x0) {
      uVar9 = (longlong)(param_1[2] - (longlong)pvVar3) >> 4;
      if ((uVar9 < 0x1000000000000000) &&
         ((_Memory = pvVar3, uVar9 << 4 < 0x1000 ||
          (((((ulonglong)pvVar3 & 0x1f) == 0 &&
            (_Memory = *(void **)((longlong)pvVar3 - 8), _Memory < pvVar3)) &&
           ((ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)) < 0x20)))))) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    *param_1 = uVar10;
    param_1[1] = uVar9 * 0x10 + uVar10;
    param_1[2] = uVar11 * 0x10 + uVar10;
  }
  else {
    uVar13 = param_2[1];
    *puVar2 = *param_2;
    puVar2[1] = uVar13;
    param_1[1] = param_1[1] + 0x10;
  }
  return;
}



############ FUN_ 180929aa0 size=682 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180929aa0(longlong *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  char cVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 uVar8;
  undefined1 auStack_228 [32];
  undefined4 local_208;
  longlong local_1f8;
  longlong *local_1f0;
  longlong local_1e8;
  longlong *local_1e0;
  longlong local_1d8;
  longlong local_1d0;
  undefined8 local_1c8;
  undefined1 local_198 [32];
  undefined1 local_178 [96];
  undefined1 local_118 [128];
  undefined1 local_98 [128];
  ulonglong local_18;
  
  local_1c8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_228;
  cVar5 = (**(code **)(*param_1 + 8))();
  if (cVar5 != '\0') {
    FUN_180726fb0(local_118,2);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_118,(ThrowInfo *)&DAT_1825fdc30);
  }
  if (param_1[9] == 0) {
    lVar6 = FUN_1811316e0(0x18);
    local_1d8 = lVar6;
    if (lVar6 == 0) {
      lVar6 = 0;
    }
    else {
      FUN_180726f00(lVar6,1);
      local_1d0 = FUN_1811316e0(0x38);
      if (local_1d0 == 0) {
        lVar7 = 0;
      }
      else {
        lVar7 = FUN_180726d00(local_1d0,lVar6,0,0xffffffffffffffff);
      }
      *(longlong *)(lVar6 + 8) = lVar7;
      *(undefined8 *)(lVar6 + 0x10) = *(undefined8 *)(lVar7 + 0x30);
    }
    local_1f8 = lVar6;
    FUN_180726c90(&local_1f0,lVar6);
    FUN_1805ae620(&local_1f8,lVar6,lVar6);
    local_1d0 = local_1f8;
    lVar6 = param_1[9];
    param_1[9] = local_1f8;
    plVar4 = (longlong *)param_1[10];
    param_1[10] = (longlong)local_1f0;
    local_1f8 = lVar6;
    local_1f0 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar6 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
  }
  lVar6 = 0;
  local_1d8 = FUN_1811316e0(0x40);
  if (local_1d8 != 0) {
    lVar6 = FUN_18097cc70(local_1d8,param_1 + 1);
  }
  local_1e8 = lVar6;
  FUN_1809266e0(&local_1e0,lVar6);
  FUN_1805ae620(&local_1e8,lVar6,lVar6);
  local_1d8 = local_1e8;
  lVar6 = param_1[0xd];
  param_1[0xd] = local_1e8;
  plVar4 = (longlong *)param_1[0xe];
  param_1[0xe] = (longlong)local_1e0;
  local_1e8 = lVar6;
  local_1e0 = plVar4;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  local_208 = (undefined4)param_1[5];
  (**(code **)(*(longlong *)param_1[0xd] + 8))((longlong *)param_1[0xd],param_1[9],param_1 + 0xb,0);
  if (*(longlong *)(param_1[0xb] + 8) != -1) {
    if (0 < *(int *)((longlong)param_1 + 0x2c)) {
      FUN_18092b800(param_1);
    }
    if (0 < (int)param_1[6]) {
      FUN_18092b630(param_1);
    }
  }
  uVar8 = FUN_1805a4160(local_198,"TAsioLocalSocket::open(): failed for: ");
  uVar8 = FUN_180726e90(local_178,uVar8,param_1 + 1);
  FUN_1805d6590(local_98,0,uVar8);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_98,(ThrowInfo *)&DAT_1825fdc30);
}



############ FUN_ 180929f80 size=3755 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018092a276) */
/* WARNING: Removing unreachable block (ram,0x00018092a270) */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180929f80(undefined8 *param_1,undefined8 param_2,uint param_3,int param_4,int param_5,
                  char param_6)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  int iVar5;
  undefined4 uVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  undefined8 *******pppppppuVar12;
  ulonglong uVar13;
  longlong lVar14;
  undefined1 *puVar15;
  longlong lVar16;
  int iVar17;
  uint uVar18;
  undefined1 auStack_878 [32];
  undefined8 *local_858;
  uint local_848;
  undefined8 local_840;
  uint local_838;
  undefined8 *local_830;
  int local_828;
  undefined4 local_824;
  undefined4 local_820;
  undefined4 local_81c;
  undefined4 local_818 [2];
  undefined8 local_810;
  undefined8 local_808;
  longlong *local_800;
  undefined8 *local_7f8;
  ulonglong local_7e8;
  undefined8 uStack_7e0;
  longlong local_7d8 [4];
  undefined8 local_7b8;
  undefined1 local_7b0 [8];
  undefined8 local_7a8;
  undefined8 local_7a0;
  undefined8 local_798;
  undefined8 local_790;
  undefined8 local_788;
  undefined8 local_780;
  longlong local_778;
  longlong *local_770;
  LPVOID local_768;
  undefined8 local_760;
  undefined1 local_758 [8];
  undefined8 local_750;
  undefined1 local_748 [8];
  undefined8 *local_740;
  undefined8 *local_738;
  undefined8 *local_730;
  longlong local_728;
  undefined8 local_720;
  undefined1 local_718;
  undefined8 local_710;
  undefined8 local_708;
  undefined8 local_6f8;
  undefined8 uStack_6f0;
  undefined8 local_6e8;
  undefined8 local_6e0;
  longlong local_6d8;
  longlong local_6c8;
  undefined8 local_6c0;
  undefined1 local_6b8;
  undefined8 local_6b0;
  undefined8 local_6a8;
  undefined8 local_698;
  undefined8 uStack_690;
  undefined8 local_688;
  ulonglong uStack_680;
  TypeDescriptor *local_678;
  undefined8 local_670;
  TypeDescriptor *local_668;
  undefined8 local_660;
  undefined4 local_658;
  undefined4 uStack_654;
  undefined8 uStack_650;
  undefined8 local_648;
  ulonglong uStack_640;
  undefined8 local_638;
  longlong local_630;
  undefined8 local_618;
  ulonglong uStack_610;
  undefined8 local_608;
  ulonglong uStack_600;
  longlong local_5f8;
  undefined1 local_5f0 [16];
  undefined1 local_5e0 [40];
  undefined1 local_5b8 [16];
  longlong *local_5a8;
  undefined1 local_5a0 [16];
  longlong *local_590;
  undefined1 local_588 [16];
  undefined1 local_578 [16];
  undefined1 local_568 [16];
  undefined1 local_558 [16];
  undefined1 local_548 [16];
  undefined8 *******local_538;
  longlong lStack_530;
  longlong local_528;
  ulonglong uStack_520;
  undefined1 local_518;
  undefined7 uStack_517;
  undefined8 local_508;
  ulonglong uStack_500;
  undefined8 local_4f8;
  undefined8 uStack_4f0;
  undefined8 local_4e8;
  undefined8 uStack_4e0;
  undefined8 local_4d8;
  undefined8 uStack_4d0;
  undefined8 local_4c8;
  undefined8 uStack_4c0;
  undefined1 local_4b8 [16];
  undefined8 local_4a8;
  ulonglong uStack_4a0;
  undefined1 local_498 [32];
  undefined1 local_478 [32];
  undefined1 local_458 [32];
  undefined1 local_438 [32];
  undefined1 local_418 [32];
  undefined1 local_3f8 [32];
  undefined1 local_3d8 [32];
  undefined1 local_3b8 [160];
  undefined1 local_318 [32];
  undefined1 local_2f8 [32];
  undefined1 local_2d8 [160];
  undefined1 local_238 [64];
  undefined1 local_1f8 [64];
  undefined1 local_1b8 [64];
  undefined1 local_178 [64];
  undefined1 local_138 [64];
  undefined1 local_f8 [192];
  ulonglong local_38;
  
  local_638 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_878;
  uVar18 = 0;
  local_838 = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  local_848 = param_3;
  local_840 = param_2;
  local_828 = param_4;
  iVar5 = param_5 + 1;
  if (param_5 < 1) {
    iVar5 = 6;
  }
  do {
    uVar7 = 0;
    iVar17 = iVar5 + -1;
    if (iVar5 == 0) {
      local_508 = _DAT_181bd21a0;
      uStack_500 = _UNK_181bd21a8;
      local_518 = 0;
      FUN_1805a6cb0(&local_518,
                    "TAsioSocket::read() Retries exhausted. Socket closed by remote host.",0x44);
      puVar15 = &local_518;
      if (0xf < uStack_500) {
        puVar15 = (undefined1 *)CONCAT71(uStack_517,local_518);
      }
      puVar8 = (undefined8 *)FUN_180721370();
      (*(code *)*puVar8)(puVar15);
      FUN_180485450(&local_518);
    }
    uVar13 = (ulonglong)local_848;
    local_858 = param_1 + 6;
    local_648 = local_840;
    uStack_640 = uVar13;
    local_618 = local_840;
    uStack_610 = uVar13;
    iVar5 = FUN_180929070(*(longlong *)param_1[3] + 0x28,(longlong *)param_1[3] + 1,0,&local_618);
    *(int *)((longlong)param_1 + 0x44) = iVar5;
    if ((iVar5 == 0) && (0 < param_4)) {
      if (param_1[5] == 0) {
        local_630 = FUN_1811316e0(0x40);
        if (local_630 != 0) {
          uVar7 = FUN_180927570(local_630,*(undefined8 *)(*(longlong *)param_1[3] + 0x18));
        }
        param_1[5] = uVar7;
      }
      FUN_180927bc0(local_758,param_1 + 1);
      local_760 = *param_1;
      local_838 = uVar18 | 1;
      local_858 = (undefined8 *)CONCAT71(local_858._1_7_,*PTR_DAT_18260bc98);
      puVar8 = (undefined8 *)FUN_180926da0(local_5b8,FUN_180929640,&local_760,*PTR_DAT_18260bc90);
      local_688 = local_840;
      local_608 = local_840;
      plVar10 = (longlong *)param_1[3];
      lVar3 = *plVar10;
      local_6e8 = *puVar8;
      local_6e0 = puVar8[1];
      local_6d8 = puVar8[2];
      if (local_6d8 != 0) {
        LOCK();
        *(int *)(local_6d8 + 8) = *(int *)(local_6d8 + 8) + 1;
        UNLOCK();
      }
      uStack_680 = uVar13;
      uStack_600 = uVar13;
      FUN_180926880(lVar3 + 0x28,plVar10 + 1,&local_608,&local_6e8);
      plVar10 = local_5a8;
      if (local_5a8 != (longlong *)0x0) {
        LOCK();
        plVar4 = local_5a8 + 1;
        lVar3 = *plVar4;
        *(int *)plVar4 = (int)*plVar4 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_5a8 + 8))(local_5a8);
          LOCK();
          piVar1 = (int *)((longlong)plVar10 + 0xc);
          iVar5 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar5 == 1) {
            (**(code **)(*plVar10 + 0x10))(plVar10);
          }
        }
      }
      lVar14 = (longlong)param_4 * 1000;
      plVar4 = (longlong *)param_1[5];
      FUN_1805c8c70();
      plVar10 = plVar4 + 1;
      lVar3 = *plVar4;
      FUN_1805bd450(local_7d8,FUN_1805bdf00);
      if ((((local_7d8[0] + 0x7fffffffffffffffU < 0xfffffffffffffffd) &&
           (lVar14 != -0x8000000000000000)) && (lVar14 != 0x7ffffffffffffffe)) ||
         (((local_7d8[0] + 0x7fffffffffffffffU < 0xfffffffffffffffd &&
           (lVar14 != -0x8000000000000000)) && (lVar14 != 0x7ffffffffffffffe)))) {
LAB_18092a234:
        lVar16 = local_7d8[0] + lVar14;
      }
      else if ((local_7d8[0] == 0x7ffffffffffffffe) || (lVar14 == 0x7ffffffffffffffe)) {
LAB_18092a285:
        lVar16 = 0x7ffffffffffffffe;
      }
      else {
        lVar16 = local_7d8[0];
        if (local_7d8[0] == 0x7fffffffffffffff) {
          if (lVar14 == -0x8000000000000000) goto LAB_18092a285;
        }
        else if (local_7d8[0] != -0x8000000000000000) {
          if (lVar14 != -0x8000000000000000) goto LAB_18092a234;
          lVar16 = -0x8000000000000000;
        }
      }
      FUN_180928500(lVar3 + 0x28,plVar10,local_548);
      *plVar10 = lVar16;
      FUN_1805c8c70();
      FUN_180927bc0(local_748,param_1 + 1);
      local_750 = *param_1;
      uVar18 = local_838 | 2;
      puVar8 = (undefined8 *)FUN_180926c40(local_5a0,FUN_180929760,&local_750,*PTR_DAT_18260bc90);
      plVar10 = (longlong *)param_1[5];
      lVar3 = *plVar10;
      local_810 = *puVar8;
      local_808 = puVar8[1];
      local_800 = (longlong *)puVar8[2];
      if (local_800 != (longlong *)0x0) {
        LOCK();
        *(int *)(local_800 + 1) = (int)local_800[1] + 1;
        UNLOCK();
      }
      local_830 = &local_810;
      local_740 = &local_810;
      puVar8 = (undefined8 *)FUN_1809284c0(0x60,&local_810);
      local_730 = (undefined8 *)0x0;
      puVar8[4] = 0;
      puVar8[5] = FUN_1809287c0;
      *puVar8 = 0;
      puVar8[1] = 0;
      puVar8[2] = 0;
      puVar8[3] = 0;
      *(undefined4 *)(puVar8 + 6) = 0;
      *(undefined4 *)(puVar8 + 7) = 0;
      local_7f8 = puVar8;
      local_738 = puVar8;
      uVar7 = FUN_1805c8c70();
      puVar8[8] = uVar7;
      puVar8[9] = local_810;
      puVar8[10] = local_808;
      puVar8[0xb] = local_800;
      local_858 = puVar8;
      if (local_800 != (longlong *)0x0) {
        LOCK();
        *(int *)(local_800 + 1) = (int)local_800[1] + 1;
        UNLOCK();
        local_858 = local_738;
      }
      *(undefined1 *)(plVar10 + 2) = 1;
      local_730 = local_858;
      FUN_180927260(*(undefined8 *)(lVar3 + 0x68),lVar3 + 0x28,plVar10 + 1,plVar10 + 3);
      plVar10 = local_800;
      local_738 = (undefined8 *)0x0;
      if (local_800 != (longlong *)0x0) {
        LOCK();
        plVar4 = local_800 + 1;
        lVar3 = *plVar4;
        *(int *)plVar4 = (int)*plVar4 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_800 + 8))(local_800);
          LOCK();
          piVar1 = (int *)((longlong)plVar10 + 0xc);
          iVar5 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar5 == 1) {
            (**(code **)(*plVar10 + 0x10))(plVar10);
          }
        }
      }
      plVar10 = local_590;
      if (local_590 != (longlong *)0x0) {
        LOCK();
        plVar4 = local_590 + 1;
        lVar3 = *plVar4;
        *(int *)plVar4 = (int)*plVar4 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_590 + 8))(local_590);
          LOCK();
          piVar1 = (int *)((longlong)plVar10 + 0xc);
          iVar5 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar5 == 1) {
            (**(code **)(*plVar10 + 0x10))(plVar10);
          }
        }
      }
      lVar3 = *(longlong *)(*(longlong *)param_1[3] + 0x18);
      local_7e8 = local_7e8 & 0xffffffff00000000;
      uStack_7e0 = FUN_1805c8c70();
      lVar3 = *(longlong *)(lVar3 + 0x10);
      LOCK();
      piVar1 = (int *)(lVar3 + 0x30);
      iVar5 = *piVar1;
      *piVar1 = *piVar1;
      UNLOCK();
      if (iVar5 == 0) {
        LOCK();
        *(undefined4 *)(lVar3 + 0x34) = 1;
        UNLOCK();
        local_658 = 0;
        uStack_7e0 = FUN_1805c8c70();
        local_7e8 = CONCAT44(uStack_654,local_658);
        uStack_650 = uStack_7e0;
      }
      else {
        local_778 = lVar3;
        local_768 = TlsGetValue(DAT_18265dd40);
        local_770 = &local_778;
        TlsSetValue(DAT_18265dd40,&local_778);
        lVar14 = 0;
        while (lVar16 = lVar14, lVar14 = FUN_180928c80(lVar3,1,&local_7e8), lVar14 != 0) {
          lVar14 = lVar16 + 1;
          if (lVar16 == -1) {
            lVar14 = lVar16;
          }
        }
        TlsSetValue(DAT_18265dd40,local_768);
      }
      if ((int)local_7e8 != 0) {
        FUN_180929210(&local_7e8);
      }
      LOCK();
      *(undefined4 *)(*(longlong *)(*(longlong *)(*(longlong *)param_1[3] + 0x18) + 0x10) + 0x34) =
           0;
      UNLOCK();
      param_4 = local_828;
    }
    if (*(int *)((longlong)param_1 + 0x44) != 0) {
    }
    if (*(char *)(param_1 + 8) != '\0') {
      FUN_1805a4160(local_3d8,"read (timed out)");
      FUN_1805d6590(local_238,3,local_3d8);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_238,(ThrowInfo *)&DAT_1825fdc30);
    }
    iVar2 = *(int *)(param_1 + 6);
    iVar5 = iVar17;
    if (iVar2 == 0) {
      if ((param_6 == '\0') || (iVar17 == 0)) {
        uVar7 = FUN_1809293a0(param_1[2],local_3b8);
        local_4a8 = _DAT_181bd21a0;
        uStack_4a0 = _UNK_181bd21a8;
        local_4b8[0] = 0;
        FUN_1805a6cb0(local_4b8,"TAsioSocket::read() Zero bytes and no error for ",0x30);
        puVar8 = (undefined8 *)FUN_1805f1630(local_318,local_4b8,uVar7);
        if (0xf < (ulonglong)puVar8[3]) {
          puVar8 = (undefined8 *)*puVar8;
        }
        puVar11 = (undefined8 *)FUN_180721370();
        (*(code *)*puVar11)(puVar8);
        FUN_180485450(local_318);
        FUN_180485450(local_4b8);
        FUN_180485450(local_3b8);
        (**(code **)(*(longlong *)param_1[2] + 0x20))();
      }
      local_668 = &boost::asio::detail::
                   typeid_wrapper<boost::asio::deadline_timer_service<boost::posix_time::ptime,boost::asio::time_traits<boost::posix_time::ptime>_>_>
                   ::RTTI_Type_Descriptor;
      local_660 = 0;
      local_6c8 = FUN_180726890(*(undefined8 *)(*(longlong *)(*(longlong *)param_1[3] + 0x18) + 8),
                                &local_668,FUN_180927030);
      local_798 = 0x7ffffffffffffffe;
      local_81c = 0xfffffffe;
      FUN_1805b41e0(&local_6c0,&local_81c,&local_798);
      local_6b0 = 0;
      local_6a8 = 0;
      local_698 = 0;
      uStack_690 = 0;
      local_790 = 0x7ffffffffffffffe;
      local_818[0] = 0xfffffffe;
      FUN_1805b41e0(&local_788,local_818,&local_790);
      local_6c0 = local_788;
      local_6b8 = 0;
      local_780 = 0x32;
      FUN_180929280(&local_6c8,&local_780);
      FUN_18092bce0(&local_6c8);
      FUN_1805c8c70();
      FUN_180928500(local_6c8 + 0x28,&local_6c0,local_588);
      FUN_180726fe0(&local_6b0);
    }
    else {
      if (iVar2 == 2) {
      }
      if (iVar2 == 0x4d5) {
        if (iVar17 == 0) {
          FUN_1805a4160(local_2f8,"EAGAIN (unavailable resources)");
          FUN_1805d6590(local_1f8,3,local_2f8);
                    /* WARNING: Subroutine does not return */
          _CxxThrowException(local_1f8,(ThrowInfo *)&DAT_1825fdc30);
        }
        local_678 = &boost::asio::detail::
                     typeid_wrapper<boost::asio::deadline_timer_service<boost::posix_time::ptime,boost::asio::time_traits<boost::posix_time::ptime>_>_>
                     ::RTTI_Type_Descriptor;
        local_670 = 0;
        local_728 = FUN_180726890(*(undefined8 *)(*(longlong *)(*(longlong *)param_1[3] + 0x18) + 8)
                                  ,&local_678,FUN_180927030);
        local_7d8[1] = 0x7ffffffffffffffe;
        local_824 = 0xfffffffe;
        FUN_1805b41e0(&local_720,&local_824,local_7d8 + 1);
        local_710 = 0;
        local_708 = 0;
        local_6f8 = 0;
        uStack_6f0 = 0;
        local_7d8[2] = 0x7ffffffffffffffe;
        local_820 = 0xfffffffe;
        FUN_1805b41e0(local_7d8 + 3,&local_820,local_7d8 + 2);
        local_720 = local_7d8[3];
        local_718 = 0;
        local_7b8 = 0x32;
        FUN_1805c8c70();
        FUN_1805bd450(local_7b0,FUN_1805bdf00);
        FUN_18065bf70(local_7b0,&local_7a8,&local_7b8);
        FUN_180928500(local_728 + 0x28,&local_720,local_558);
        local_720 = local_7a8;
        FUN_1805c8c70();
        FUN_18092bce0(&local_728);
        FUN_1805c8c70();
        FUN_180928500(local_728 + 0x28,&local_720,local_568);
        FUN_180726fe0(&local_710);
      }
      if (param_6 == '\0') {
        if (*(int *)(param_1 + 6) != 0x2714) {
          if (*(int *)(param_1 + 6) == 0x6d) {
            (**(code **)(*(longlong *)param_1[2] + 0x20))();
          }
          uVar7 = FUN_180b03b60(local_478);
          uVar9 = FUN_1809293a0(param_1[2],local_498);
          puVar8 = (undefined8 *)FUN_1805f4610(uVar9,0,"TAsioReadHandler::read() recv() ",0x20);
          local_4d8 = *puVar8;
          uStack_4d0 = puVar8[1];
          local_4c8 = puVar8[2];
          uStack_4c0 = puVar8[3];
          puVar8[2] = 0;
          puVar8[3] = 0xf;
          *(undefined1 *)puVar8 = 0;
          puVar8 = (undefined8 *)FUN_1805a6a80(&local_4d8,&DAT_181bb5890,2);
          local_4f8 = *puVar8;
          uStack_4f0 = puVar8[1];
          local_4e8 = puVar8[2];
          uStack_4e0 = puVar8[3];
          puVar8[2] = 0;
          puVar8[3] = 0xf;
          *(undefined1 *)puVar8 = 0;
          uVar7 = FUN_1805f1630(local_2d8,&local_4f8,uVar7);
          plVar10 = (longlong *)FUN_1805a6a80(uVar7,&DAT_181be4a78,2);
          local_538 = (undefined8 *******)*plVar10;
          lStack_530 = plVar10[1];
          local_528 = plVar10[2];
          uStack_520 = plVar10[3];
          plVar10[2] = 0;
          plVar10[3] = 0xf;
          *(undefined1 *)plVar10 = 0;
          uVar6 = *(undefined4 *)(param_1 + 6);
          uVar7 = FUN_180721370();
          pppppppuVar12 = &local_538;
          if (0xf < uStack_520) {
            pppppppuVar12 = local_538;
          }
          FUN_180721b10(uVar7,pppppppuVar12,uVar6);
          FUN_180485450(&local_538);
          FUN_180485450(local_2d8);
          FUN_180485450(&local_4f8);
          FUN_180485450(&local_4d8);
          FUN_180485450(local_498);
          FUN_180485450(local_478);
          iVar5 = *(int *)(param_1 + 6);
          if (iVar5 == 0x2746) {
            FUN_1805a4160(local_458,"ECONNRESET");
            FUN_1805d6590(local_1b8,1,local_458);
                    /* WARNING: Subroutine does not return */
            _CxxThrowException(local_1b8,(ThrowInfo *)&DAT_1825fdc30);
          }
          if (iVar5 == 0x2749) {
            FUN_1805a4160(local_438,"ENOTCONN");
            FUN_1805d6590(local_178,1,local_438);
                    /* WARNING: Subroutine does not return */
            _CxxThrowException(local_178,(ThrowInfo *)&DAT_1825fdc30);
          }
          if (iVar5 != 0x274c) {
            FUN_1805a4160(local_3f8,"Unknown");
            uVar6 = FUN_1804835d0(param_1 + 6);
            FUN_180927950(local_f8,0,local_3f8,uVar6);
                    /* WARNING: Subroutine does not return */
            _CxxThrowException(local_f8,(ThrowInfo *)&DAT_1825fdc30);
          }
          FUN_1805a4160(local_418,"ETIMEDOUT");
          FUN_1805d6590(local_138,3,local_418);
                    /* WARNING: Subroutine does not return */
          _CxxThrowException(local_138,(ThrowInfo *)&DAT_1825fdc30);
        }
      }
      else if (param_1[7] == DAT_182667b20) {
        if (*(int *)(param_1 + 6) - 0xe8U < 2) {
          if (iVar17 == 0) {
          }
          FUN_180927570(&local_5f8,*(undefined8 *)(*(longlong *)param_1[3] + 0x18));
          local_7a0 = 0xfa;
          FUN_180929280(&local_5f8,&local_7a0);
          FUN_18092bce0(&local_5f8);
          lVar3 = local_5f8;
          FUN_1805c8c70();
          FUN_180928500(lVar3 + 0x28,local_5f0,local_578);
          FUN_180726fe0(local_5e0);
        }
        else if (*(int *)(param_1 + 6) == 0x6d) {
        }
      }
    }
  } while( true );
}



############ FUN_ 18092ae50 size=569 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18092ae50(longlong *param_1,undefined8 param_2,undefined4 param_3)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  char cVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  undefined1 auStack_1c8 [32];
  undefined4 local_1a8;
  undefined1 local_1a0;
  undefined8 *local_198;
  longlong *local_190;
  undefined8 *local_188;
  longlong *local_180;
  undefined8 local_178;
  undefined8 *local_170;
  undefined8 *local_168;
  undefined1 local_158 [160];
  undefined1 local_b8 [128];
  ulonglong local_38;
  
  local_178 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  cVar6 = (**(code **)(*param_1 + 8))();
  if (cVar6 != '\0') {
    if (param_1[0xf] == 0) {
      puVar7 = (undefined8 *)FUN_1811316e0(0x48);
      puVar9 = (undefined8 *)0x0;
      local_170 = puVar7;
      if (puVar7 != (undefined8 *)0x0) {
        *puVar7 = 0;
        puVar7[1] = 0;
        puVar7[2] = param_1;
        puVar7[3] = param_1[0xb];
        lVar4 = param_1[0xc];
        puVar7[4] = lVar4;
        if (lVar4 != 0) {
          LOCK();
          *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
          UNLOCK();
        }
        puVar7[5] = 0;
        *(undefined4 *)(puVar7 + 6) = 0;
        uVar8 = FUN_1805c8c70();
        puVar7[7] = uVar8;
        *(undefined2 *)(puVar7 + 8) = 0;
        *(undefined4 *)((longlong)puVar7 + 0x44) = 0;
        puVar9 = puVar7;
      }
      local_188 = puVar9;
      FUN_180926600(&local_180,puVar9);
      if ((puVar9 != (undefined8 *)0x0) && ((puVar9[1] == 0 || (*(int *)(puVar9[1] + 8) == 0)))) {
        local_190 = local_180;
        if (local_180 != (longlong *)0x0) {
          LOCK();
          *(int *)(local_180 + 1) = (int)local_180[1] + 1;
          UNLOCK();
        }
        *puVar9 = puVar9;
        local_198 = puVar9;
        if (local_180 != (longlong *)puVar9[1]) {
          if (local_180 != (longlong *)0x0) {
            LOCK();
            *(int *)((longlong)local_180 + 0xc) = *(int *)((longlong)local_180 + 0xc) + 1;
            UNLOCK();
          }
          plVar5 = (longlong *)puVar9[1];
          if (plVar5 != (longlong *)0x0) {
            LOCK();
            piVar1 = (int *)((longlong)plVar5 + 0xc);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*plVar5 + 0x10))();
            }
          }
          puVar9[1] = local_190;
        }
        plVar5 = local_190;
        if (local_190 != (longlong *)0x0) {
          LOCK();
          plVar2 = local_190 + 1;
          lVar4 = *plVar2;
          *(int *)plVar2 = (int)*plVar2 + -1;
          UNLOCK();
          if ((int)lVar4 == 1) {
            (**(code **)(*local_190 + 8))(local_190);
            LOCK();
            piVar1 = (int *)((longlong)plVar5 + 0xc);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*local_190 + 0x10))();
            }
          }
        }
      }
      local_168 = local_188;
      lVar4 = param_1[0xf];
      param_1[0xf] = (longlong)local_188;
      plVar5 = (longlong *)param_1[0x10];
      param_1[0x10] = (longlong)local_180;
      local_188 = (undefined8 *)lVar4;
      local_180 = plVar5;
      if (plVar5 != (longlong *)0x0) {
        LOCK();
        plVar2 = plVar5 + 1;
        lVar4 = *plVar2;
        *(int *)plVar2 = (int)*plVar2 + -1;
        UNLOCK();
        if ((int)lVar4 == 1) {
          (**(code **)(*plVar5 + 8))(plVar5);
          LOCK();
          piVar1 = (int *)((longlong)plVar5 + 0xc);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)(*plVar5 + 0x10))(plVar5);
          }
        }
      }
    }
    local_1a0 = 1;
    local_1a8 = (undefined4)param_1[8];
    FUN_180929f80(param_1[0xf],param_2,param_3,(int)param_1[6]);
  }
  FUN_1805a4160(local_158,"Called read on non-open socket");
  FUN_1805d6590(local_b8,1,local_158);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1825fdc30);
}



############ FUN_ 18092bfe0 size=1992 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_18092bfe0(undefined8 *param_1,longlong param_2,uint param_3,int param_4)

{
  int iVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined4 uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  ulonglong uVar8;
  int iVar9;
  uint uVar10;
  undefined1 auStack_508 [32];
  undefined8 *local_4e8;
  undefined4 local_4d8 [2];
  undefined8 *local_4d0;
  uint local_4c8;
  int local_4c4;
  undefined4 local_4c0 [2];
  longlong local_4b8;
  undefined8 local_4b0;
  undefined8 local_4a8;
  longlong local_4a0;
  undefined8 *local_498;
  undefined8 *local_490;
  undefined8 *local_488;
  longlong local_480 [4];
  undefined8 local_460;
  undefined8 *local_458;
  undefined8 local_450;
  undefined1 local_448 [8];
  undefined8 local_440;
  undefined1 local_438 [8];
  undefined8 local_430;
  undefined8 local_428;
  longlong local_420;
  longlong local_418;
  undefined8 local_410;
  undefined1 local_408;
  undefined8 local_400;
  undefined8 local_3f8;
  undefined8 local_3e8;
  undefined8 uStack_3e0;
  longlong local_3d8;
  ulonglong uStack_3d0;
  TypeDescriptor *local_3c8;
  undefined8 local_3c0;
  longlong local_3b8;
  ulonglong uStack_3b0;
  TypeDescriptor *local_3a8;
  undefined8 local_3a0;
  undefined8 local_398;
  undefined8 *local_390;
  undefined8 local_378;
  uint uStack_370;
  undefined4 uStack_36c;
  undefined8 local_368;
  uint uStack_360;
  undefined4 uStack_35c;
  undefined1 local_358 [8];
  undefined1 local_350 [16];
  undefined1 local_340 [8];
  undefined1 local_338 [32];
  undefined4 local_318;
  undefined4 uStack_314;
  undefined4 uStack_310;
  undefined4 uStack_30c;
  undefined8 local_308;
  ulonglong uStack_300;
  undefined1 local_2f8 [32];
  undefined1 local_2d8 [32];
  undefined1 local_2b8 [32];
  undefined1 local_298 [32];
  undefined1 local_278 [32];
  undefined1 local_258 [160];
  undefined1 local_1b8 [64];
  undefined1 local_178 [64];
  undefined1 local_138 [64];
  undefined1 local_f8 [64];
  undefined1 local_b8 [128];
  ulonglong local_38;
  
  local_398 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_508;
  uVar8 = 0;
  local_4d8[0] = 0;
  *(undefined1 *)(param_1 + 8) = 0;
  iVar9 = 6;
  local_4c8 = param_3;
  local_4c4 = param_4;
  local_4b8 = param_2;
  while( true ) {
    while( true ) {
      uVar10 = (uint)uVar8;
      if (param_3 <= uVar10) {
      }
      if (iVar9 == 0) {
        FUN_1805a4160(local_2f8,
                      "TAsioWriteHandler::write(): Retries exhausted. Socket closed by remote host or out of resources."
                     );
        FUN_1805d6590(local_1b8,3,local_2f8);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_1b8,(ThrowInfo *)&DAT_1825fdc30);
      }
      *(undefined4 *)((longlong)param_1 + 0x44) = 0;
      if (param_4 < 1) {
        local_3d8 = uVar8 + local_4b8;
        uStack_370 = param_3 - uVar10;
        uStack_3d0 = (ulonglong)uStack_370;
        uStack_36c = 0;
        local_4e8 = param_1 + 6;
        local_378 = local_3d8;
        uVar4 = FUN_1809273a0(*(longlong *)param_1[3] + 0x28,(longlong *)param_1[3] + 1,0,&local_378
                             );
        *(undefined4 *)((longlong)param_1 + 0x44) = uVar4;
      }
      else {
        if (param_1[5] == 0) {
          puVar5 = (undefined8 *)FUN_1811316e0(0x40);
          local_390 = puVar5;
          if (puVar5 != (undefined8 *)0x0) {
            local_3c8 = &boost::asio::detail::
                         typeid_wrapper<boost::asio::deadline_timer_service<boost::posix_time::ptime,boost::asio::time_traits<boost::posix_time::ptime>_>_>
                         ::RTTI_Type_Descriptor;
            local_3c0 = 0;
            uVar6 = FUN_180726890(*(undefined8 *)(*(longlong *)(*(longlong *)param_1[3] + 0x18) + 8)
                                  ,&local_3c8,FUN_180927030);
            *puVar5 = uVar6;
            local_4d0 = puVar5 + 1;
            puVar5[3] = 0;
            puVar5[4] = 0;
            puVar5[6] = 0;
            puVar5[7] = 0;
            *local_4d0 = 0x7ffffffffffffffe;
            *(undefined1 *)(puVar5 + 2) = 0;
          }
          param_1[5] = puVar5;
        }
        FUN_180927bc0(local_448,param_1 + 1);
        local_450 = *param_1;
        local_4e8 = (undefined8 *)CONCAT71(local_4e8._1_7_,*PTR_DAT_18260bc98);
        puVar5 = (undefined8 *)FUN_180926da0(local_358,FUN_1809296d0,&local_450,*PTR_DAT_18260bc90);
        local_3b8 = uVar8 + local_4b8;
        uStack_360 = param_3 - uVar10;
        uStack_3b0 = (ulonglong)uStack_360;
        uStack_35c = 0;
        plVar2 = (longlong *)param_1[3];
        lVar3 = *plVar2;
        local_430 = *puVar5;
        local_428 = puVar5[1];
        local_420 = puVar5[2];
        if (local_420 != 0) {
          LOCK();
          *(int *)(local_420 + 8) = *(int *)(local_420 + 8) + 1;
          UNLOCK();
        }
        local_368 = local_3b8;
        FUN_180926a60(lVar3 + 0x28,plVar2 + 1,&local_368,&local_430);
        FUN_1805fdcf0(local_350);
        local_480[0] = (longlong)param_4 * 1000;
        FUN_180929280(param_1[5],local_480);
        FUN_180927bc0(local_438,param_1 + 1);
        local_440 = *param_1;
        puVar5 = (undefined8 *)FUN_180926c40(local_340,FUN_180929850,&local_440,*PTR_DAT_18260bc90);
        plVar2 = (longlong *)param_1[5];
        lVar3 = *plVar2;
        local_4b0 = *puVar5;
        local_4a8 = puVar5[1];
        local_4a0 = puVar5[2];
        if (local_4a0 != 0) {
          LOCK();
          *(int *)(local_4a0 + 8) = *(int *)(local_4a0 + 8) + 1;
          UNLOCK();
        }
        local_4d0 = &local_4b0;
        local_498 = &local_4b0;
        puVar5 = (undefined8 *)FUN_1809284c0(0x60,&local_4b0);
        local_488 = (undefined8 *)0x0;
        puVar5[4] = 0;
        puVar5[5] = FUN_1809287c0;
        *puVar5 = 0;
        puVar5[1] = 0;
        puVar5[2] = 0;
        puVar5[3] = 0;
        *(undefined4 *)(puVar5 + 6) = 0;
        *(undefined4 *)(puVar5 + 7) = 0;
        local_490 = puVar5;
        local_458 = puVar5;
        uVar6 = FUN_1805c8c70();
        puVar5[8] = uVar6;
        puVar5[9] = local_4b0;
        puVar5[10] = local_4a8;
        puVar5[0xb] = local_4a0;
        local_4e8 = puVar5;
        if (local_4a0 != 0) {
          LOCK();
          *(int *)(local_4a0 + 8) = *(int *)(local_4a0 + 8) + 1;
          UNLOCK();
          local_4e8 = local_490;
        }
        *(undefined1 *)(plVar2 + 2) = 1;
        local_488 = local_4e8;
        FUN_180927260(*(undefined8 *)(lVar3 + 0x68),lVar3 + 0x28,plVar2 + 1,plVar2 + 3);
        local_488 = (undefined8 *)0x0;
        local_490 = (undefined8 *)0x0;
        FUN_18092b260(&local_498);
        FUN_180927d00(&local_4b0);
        FUN_1805fdcf0(local_338);
        FUN_18092b360(*(undefined8 *)(*(longlong *)param_1[3] + 0x18));
        LOCK();
        *(undefined4 *)(*(longlong *)(*(longlong *)(*(longlong *)param_1[3] + 0x18) + 0x10) + 0x34)
             = 0;
        UNLOCK();
        param_3 = local_4c8;
        param_4 = local_4c4;
      }
      if ((param_1[7] != DAT_182667b20) || (1 < *(int *)(param_1 + 6) - 0xe8U)) break;
      local_3a8 = &boost::asio::detail::
                   typeid_wrapper<boost::asio::deadline_timer_service<boost::posix_time::ptime,boost::asio::time_traits<boost::posix_time::ptime>_>_>
                   ::RTTI_Type_Descriptor;
      local_3a0 = 0;
      local_418 = FUN_180726890(*(undefined8 *)(*(longlong *)(*(longlong *)param_1[3] + 0x18) + 8),
                                &local_3a8,FUN_180927030);
      local_480[1] = 0x7ffffffffffffffe;
      local_4c0[0] = 0xfffffffe;
      FUN_1805b41e0(&local_410,local_4c0,local_480 + 1);
      local_400 = 0;
      local_3f8 = 0;
      local_3e8 = 0;
      uStack_3e0 = 0;
      local_480[2] = 0x7ffffffffffffffe;
      local_4d8[0] = 0xfffffffe;
      FUN_1805b41e0(local_480 + 3,local_4d8,local_480 + 2);
      local_410 = local_480[3];
      local_408 = 0;
      local_460 = 0xfa;
      FUN_180929280(&local_418,&local_460);
      FUN_18092bce0(&local_418);
      FUN_1805c8c70();
      FUN_180928500(local_418 + 0x28,&local_410);
      FUN_180726fe0(&local_400);
      iVar9 = iVar9 + -1;
    }
    if (*(char *)(param_1 + 8) != '\0') {
      FUN_1805a4160(local_2d8,"write (timed out)");
      FUN_1805d6590(local_178,3,local_2d8);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_178,(ThrowInfo *)&DAT_1825fdc30);
    }
    iVar1 = *(int *)(param_1 + 6);
    if (iVar1 != 0) break;
    if (*(int *)((longlong)param_1 + 0x44) == 0) {
      FUN_1805a4160(local_258,"Socket send returned 0.");
      FUN_1805d6590(local_b8,1,local_258);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1825fdc30);
    }
    uVar8 = (ulonglong)(uVar10 + *(int *)((longlong)param_1 + 0x44));
    iVar9 = iVar9 + -1;
  }
  uVar6 = FUN_1809293a0(param_1[2],local_2b8);
  puVar7 = (undefined4 *)FUN_1805f4610(uVar6,0,"TAsioSocket::write() send() ",0x1c);
  local_318 = *puVar7;
  uStack_314 = puVar7[1];
  uStack_310 = puVar7[2];
  uStack_30c = puVar7[3];
  local_308 = *(undefined8 *)(puVar7 + 4);
  uStack_300 = *(ulonglong *)(puVar7 + 6);
  *(undefined8 *)(puVar7 + 4) = 0;
  *(undefined8 *)(puVar7 + 6) = 0xf;
  *(undefined1 *)puVar7 = 0;
  uVar6 = FUN_180721370();
  puVar7 = &local_318;
  if (0xf < uStack_300) {
    puVar7 = (undefined4 *)CONCAT44(uStack_314,local_318);
  }
  FUN_180721b10(uVar6,puVar7,iVar1);
  FUN_180485450(&local_318);
  FUN_180485450(local_2b8);
  if (((iVar1 != 0x6d) && (iVar1 != 0x2746)) && (iVar1 != 0x2749)) {
    FUN_1805a4160(local_298,"write() send()");
    FUN_180927950(local_138,0,local_298,iVar1);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_138,(ThrowInfo *)&DAT_1825fdc30);
  }
  (**(code **)(*(longlong *)param_1[2] + 0x20))();
  FUN_1805a4160(local_278,"write() send()");
  FUN_180927950(local_f8,1,local_278,iVar1);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_f8,(ThrowInfo *)&DAT_1825fdc30);
}



############ FUN_ 18092c7d0 size=673 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18092c7d0(longlong *param_1,undefined8 param_2,undefined4 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  char cVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined1 auStack_1d8 [32];
  longlong local_1b8;
  longlong *local_1b0;
  undefined8 *local_1a8;
  longlong *local_1a0;
  undefined8 *local_198;
  longlong *local_190;
  longlong *local_188;
  undefined8 local_180;
  undefined8 *local_178;
  undefined8 *local_170;
  undefined1 local_160 [168];
  undefined1 local_b8 [128];
  ulonglong local_38;
  
  local_180 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1d8;
  cVar6 = (**(code **)(*param_1 + 8))();
  if (cVar6 != '\0') {
    if (param_1[0x11] == 0) {
      puVar7 = (undefined8 *)FUN_1811316e0(0x48);
      local_178 = puVar7;
      if (puVar7 == (undefined8 *)0x0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        local_1b8 = param_1[0xb];
        local_1b0 = (longlong *)param_1[0xc];
        if (local_1b0 != (longlong *)0x0) {
          LOCK();
          *(int *)(local_1b0 + 1) = (int)local_1b0[1] + 1;
          UNLOCK();
        }
        local_188 = &local_1b8;
        *puVar7 = 0;
        puVar7[1] = 0;
        puVar7[2] = param_1;
        puVar7[3] = local_1b8;
        puVar7[4] = local_1b0;
        if (local_1b0 != (longlong *)0x0) {
          LOCK();
          *(int *)(local_1b0 + 1) = (int)local_1b0[1] + 1;
          UNLOCK();
        }
        puVar7[5] = 0;
        *(undefined4 *)(puVar7 + 6) = 0;
        uVar8 = FUN_1805c8c70();
        plVar4 = local_1b0;
        puVar7[7] = uVar8;
        *(undefined1 *)(puVar7 + 8) = 0;
        *(undefined4 *)((longlong)puVar7 + 0x44) = 0;
        if (local_1b0 != (longlong *)0x0) {
          LOCK();
          plVar1 = local_1b0 + 1;
          lVar5 = *plVar1;
          *(int *)plVar1 = (int)*plVar1 + -1;
          UNLOCK();
          if ((int)lVar5 == 1) {
            (**(code **)(*local_1b0 + 8))(local_1b0);
            LOCK();
            piVar2 = (int *)((longlong)plVar4 + 0xc);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*plVar4 + 0x10))(plVar4);
            }
          }
        }
      }
      local_198 = puVar7;
      FUN_180926670(&local_190,puVar7);
      if ((puVar7 != (undefined8 *)0x0) && ((puVar7[1] == 0 || (*(int *)(puVar7[1] + 8) == 0)))) {
        local_1a0 = local_190;
        if (local_190 != (longlong *)0x0) {
          LOCK();
          *(int *)(local_190 + 1) = (int)local_190[1] + 1;
          UNLOCK();
        }
        *puVar7 = puVar7;
        local_1a8 = puVar7;
        if (local_190 != (longlong *)puVar7[1]) {
          if (local_190 != (longlong *)0x0) {
            LOCK();
            *(int *)((longlong)local_190 + 0xc) = *(int *)((longlong)local_190 + 0xc) + 1;
            UNLOCK();
          }
          plVar4 = (longlong *)puVar7[1];
          if (plVar4 != (longlong *)0x0) {
            LOCK();
            piVar2 = (int *)((longlong)plVar4 + 0xc);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*plVar4 + 0x10))();
            }
          }
          puVar7[1] = local_1a0;
        }
        plVar4 = local_1a0;
        if (local_1a0 != (longlong *)0x0) {
          LOCK();
          plVar1 = local_1a0 + 1;
          lVar5 = *plVar1;
          *(int *)plVar1 = (int)*plVar1 + -1;
          UNLOCK();
          if ((int)lVar5 == 1) {
            (**(code **)(*local_1a0 + 8))(local_1a0);
            LOCK();
            piVar2 = (int *)((longlong)plVar4 + 0xc);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*local_1a0 + 0x10))();
            }
          }
        }
      }
      local_170 = local_198;
      lVar5 = param_1[0x11];
      param_1[0x11] = (longlong)local_198;
      plVar4 = (longlong *)param_1[0x12];
      param_1[0x12] = (longlong)local_190;
      local_198 = (undefined8 *)lVar5;
      local_190 = plVar4;
      if (plVar4 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar4 + 1;
        lVar5 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar5 == 1) {
          (**(code **)(*plVar4 + 8))(plVar4);
          LOCK();
          piVar2 = (int *)((longlong)plVar4 + 0xc);
          iVar3 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)(*plVar4 + 0x10))(plVar4);
          }
        }
      }
    }
    FUN_18092bfe0(param_1[0x11],param_2,param_3,*(undefined4 *)((longlong)param_1 + 0x2c));
  }
  FUN_1805a4160(local_160,"Called write on non-open socket");
  FUN_1805d6590(local_b8,1,local_160);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1825fdc30);
}



############ FUN_ 18092ca90 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18092ca90(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18078a370(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 18092cc80 size=477 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18092cc80(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_18079c760(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 18092ce70 size=447 ############

void FUN_18092ce70(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a3340(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 18092d030 size=144 ############

void FUN_18092d030(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 uStackX_18;
  undefined8 *local_48;
  longlong *local_40;
  undefined8 *puStack_38;
  longlong *plStack_30;
  undefined8 *puStack_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&local_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    puStack_28 = local_48;
    plStack_20 = local_40;
    if (local_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(local_40 + 1) = (int)local_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&puStack_28);
  }
  puStack_38 = puVar6;
  FUN_180621590(&plStack_30,puVar6);
  FUN_1805ae620(&puStack_38,puVar6,puVar6);
  FUN_1807b3590(param_1,puStack_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,uStackX_18);
  if (plStack_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_30 + 8))(plStack_30);
      LOCK();
      piVar2 = (int *)((longlong)plStack_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_30 + 0x10))(plStack_30);
      }
    }
  }
  if (local_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_40 + 8))(local_40);
      LOCK();
      piVar2 = (int *)((longlong)local_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_40 + 0x10))(local_40);
      }
    }
  }
  return;
}



############ FUN_ 1809335c0 size=97 ############

undefined8 * FUN_1809335c0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::ClientConnectionOpener>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180933630 size=476 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180933630(longlong param_1,int param_2,undefined8 param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_118 [32];
  int local_f8;
  undefined8 *local_e8;
  longlong *local_e0;
  undefined8 *local_d8;
  longlong *plStack_d0;
  undefined8 *local_c8;
  undefined8 *local_b8;
  longlong *plStack_b0;
  undefined8 local_a8;
  undefined1 local_a0 [40];
  undefined1 local_78 [64];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar5 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  local_c8 = puVar5;
  if (puVar5 != (undefined8 *)0x0) {
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    puVar5[4] = 0;
    *puVar5 = apache::thrift::transport::TMemoryBuffer::vftable;
    if ((param_1 == 0) && (param_2 != 0)) {
      FUN_1805a4160(local_a0,"TMemoryBuffer given null buffer with non-zero size.");
      FUN_1805d6590(local_78,6,local_a0);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_78,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_f8 = param_2;
    FUN_1805da740(puVar5,param_1,param_2,0);
    puVar7 = puVar5;
  }
  local_d8 = puVar7;
  FUN_1805d5580(&plStack_d0,puVar7);
  FUN_1805ae620(&local_d8,puVar7,puVar7);
  local_c8 = (undefined8 *)FUN_1811316e0(0x40);
  if (local_c8 != (undefined8 *)0x0) {
    local_b8 = local_d8;
    plStack_b0 = plStack_d0;
    if (plStack_d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_d0 + 1) = (int)plStack_d0[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(local_c8,&local_b8);
  }
  local_e8 = puVar6;
  FUN_180621590(&local_e0,puVar6);
  FUN_1805ae620(&local_e8,puVar6,puVar6);
  FUN_1807906b0(param_3,local_e8);
  if (local_e0 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_e0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*local_e0 + 8))(local_e0);
      LOCK();
      piVar2 = (int *)((longlong)local_e0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_e0 + 0x10))(local_e0);
      }
    }
  }
  if (plStack_d0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_d0 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)(*plStack_d0 + 8))(plStack_d0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_d0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_d0 + 0x10))(plStack_d0);
      }
    }
  }
}



############ FUN_ 1809338c0 size=447 ############

void FUN_1809338c0(undefined8 param_1,undefined8 *param_2,char param_3)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 local_res18;
  undefined8 *local_48;
  longlong *plStack_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined8 *local_28;
  longlong *plStack_20;
  
  if (param_3 != '\0') {
    param_2[1] = *param_2;
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x38);
  puVar6 = (undefined8 *)0x0;
  puVar7 = puVar6;
  if (puVar4 != (undefined8 *)0x0) {
    puVar4[1] = 0;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    *puVar4 = apache::thrift::transport::TMemoryBuffer::vftable;
    FUN_1805da740(puVar4,0,0x400,1,0);
    puVar7 = puVar4;
  }
  local_48 = puVar7;
  FUN_1805d5580(&plStack_40,puVar7);
  FUN_1805ae620(&local_48,puVar7,puVar7);
  lVar5 = FUN_1811316e0(0x40);
  if (lVar5 != 0) {
    local_28 = local_48;
    plStack_20 = plStack_40;
    if (plStack_40 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_40 + 1) = (int)plStack_40[1] + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_1806222c0(lVar5,&local_28);
  }
  local_38 = puVar6;
  FUN_180621590(&local_30,puVar6);
  FUN_1805ae620(&local_38,puVar6,puVar6);
  FUN_1807a82d0(param_1,local_38);
  lVar5 = local_48[1];
  FUN_1805d5a60(param_2,param_2[1],lVar5,
                (ulonglong)(uint)(*(int *)(local_48 + 3) - (int)lVar5) + lVar5,local_res18);
  if (local_30 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_30 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_30 + 8))(local_30);
      LOCK();
      piVar2 = (int *)((longlong)local_30 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_30 + 0x10))(local_30);
      }
    }
  }
  if (plStack_40 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_40 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_40 + 8))(plStack_40);
      LOCK();
      piVar2 = (int *)((longlong)plStack_40 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_40 + 0x10))(plStack_40);
      }
    }
  }
  return;
}



############ FUN_ 180938410 size=307 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180938410(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_148 [32];
  undefined8 local_128;
  undefined8 local_120;
  undefined4 local_118 [2];
  char *local_110;
  undefined8 local_108;
  undefined1 local_100 [56];
  undefined1 local_c8 [112];
  ulonglong local_58;
  
  local_108 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_148;
  if ((char)param_1[0x118] != '\0') {
    FUN_18073c2a0(param_3,local_100);
    FUN_18073e880(param_4,local_c8);
    local_120 = param_6;
    local_128 = param_5;
    (**(code **)(*param_1 + 8))(param_1,param_2,local_100,local_c8);
  }
  local_110 = (char *)FUN_1811316e0(0x18);
  if (local_110 != (char *)0x0) {
    FUN_1805a48c0(local_110,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_110 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_118[0] = 0x8e;
  local_110 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_110);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_118);
}



############ FUN_ 180939810 size=328 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180939810(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_158 [32];
  undefined8 local_138;
  undefined8 local_130;
  undefined4 local_128 [2];
  char *local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined1 local_108 [64];
  undefined1 local_c8 [112];
  ulonglong local_58;
  
  local_110 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_118 = param_7;
  if ((char)param_1[0x118] != '\0') {
    FUN_18073b050(param_3,local_108);
    FUN_18073d980(param_4,param_5,local_c8);
    local_130 = local_118;
    local_138 = param_6;
    (**(code **)(*param_1 + 8))(param_1,param_2,local_108,local_c8);
  }
  local_120 = (char *)FUN_1811316e0(0x18);
  if (local_120 != (char *)0x0) {
    FUN_1805a48c0(local_120,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_120 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_128[0] = 0x68;
  local_120 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_120);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_128);
}



############ FUN_ 180939980 size=330 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180939980(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_168 [32];
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined4 local_128 [2];
  char *local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined1 local_108 [64];
  undefined1 local_c8 [112];
  ulonglong local_58;
  
  local_110 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_118 = param_7;
  if ((char)param_1[0x118] != '\0') {
    FUN_18073c2a0(param_3,local_108);
    FUN_18073e880(param_4,local_c8);
    local_138 = local_118;
    local_140 = param_6;
    local_148 = param_5;
    (**(code **)(*param_1 + 0x20))(param_1,param_2,local_108,local_c8);
  }
  local_120 = (char *)FUN_1811316e0(0x18);
  if (local_120 != (char *)0x0) {
    FUN_1805a48c0(local_120,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_120 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_128[0] = 0x11d;
  local_120 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_120);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_128);
}



############ FUN_ 180939af0 size=713 ############

void FUN_180939af0(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 *param_6,undefined8 *param_7)

{
  int iVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  void *_Memory;
  undefined8 *local_res8;
  char *local_298;
  void *local_290;
  undefined8 uStack_288;
  longlong local_280;
  undefined8 *local_278;
  undefined8 local_270;
  undefined1 local_268 [576];
  
  local_270 = 0xfffffffffffffffe;
  FUN_18063c2c0(local_268);
  local_290 = (void *)0x0;
  uStack_288 = 0;
  local_280 = 0;
  if ((char)param_1[0x118] == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"KeyExchanger object has not been initialized");
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar3;
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x146);
    local_298 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp";
    uVar4 = FUN_1805a21d0(puVar3[1],&local_298);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res8);
  }
  iVar1 = FUN_1807002d0(param_2);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar1);
  iVar2 = FUN_180700270(param_2);
  local_298 = (char *)CONCAT44(local_298._4_4_,iVar2);
  if ((iVar1 != 0) && (iVar2 != 0)) {
    (**(code **)(*param_1 + 8))(param_1,iVar1,param_3,param_4,param_5,&local_290);
    FUN_18063f370(local_268,param_2,1,0,&local_290);
    if (param_7 != param_6) {
      FUN_1805e1990(param_7,*param_6,param_6[1],param_7._0_1_);
    }
    FUN_18063cba0(local_268,param_7);
    FUN_1805b0f50(param_7,iVar1,param_7);
    if (local_290 == (void *)0x0) {
      FUN_18063cad0(local_268);
      return;
    }
    _Memory = local_290;
    if ((0xfff < (ulonglong)(local_280 - (longlong)local_290)) &&
       (_Memory = *(void **)((longlong)local_290 + -8),
       0x1f < (ulonglong)((longlong)local_290 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_278 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_278 == (undefined8 *)0x0) {
    lVar5 = 0;
  }
  else {
    lVar5 = FUN_1805a48c0(local_278,"Zero key or block size (dwKeySize = %d, dwBlockSize = %d)");
  }
  puVar3 = (undefined8 *)FUN_1811316e0(0x18);
  local_278 = puVar3;
  if (puVar3 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
    *puVar3 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_res8);
  FUN_18060e760(*(undefined8 *)(lVar5 + 8),&local_298);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x151);
  local_298 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar4 = FUN_1805a21d0(puVar3[1],&local_298);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,&local_res8);
}



############ FUN_ 180939df0 size=351 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180939df0(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_168 [32];
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined4 local_128 [2];
  char *local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined1 local_100 [56];
  undefined1 local_c8 [112];
  ulonglong local_58;
  
  local_108 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_110 = param_7;
  local_118 = param_8;
  if ((char)param_1[0x118] != '\0') {
    FUN_18073b050(param_3,local_100);
    FUN_18073d980(param_4,param_5,local_c8);
    local_138 = local_118;
    local_140 = local_110;
    local_148 = param_6;
    (**(code **)(*param_1 + 0x20))(param_1,param_2,local_100,local_c8);
  }
  local_120 = (char *)FUN_1811316e0(0x18);
  if (local_120 != (char *)0x0) {
    FUN_1805a48c0(local_120,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_120 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_128[0] = 0xf5;
  local_120 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_120);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_128);
}



############ FUN_ 180939f80 size=330 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180939f80(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_168 [32];
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined4 local_128 [2];
  char *local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined1 local_108 [64];
  undefined1 local_c8 [112];
  ulonglong local_58;
  
  local_110 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_118 = param_7;
  if ((char)param_1[0x118] != '\0') {
    FUN_18073c2a0(param_3,local_108);
    FUN_18073e880(param_4,local_c8);
    local_138 = local_118;
    local_140 = param_6;
    local_148 = param_5;
    (**(code **)(*param_1 + 0x38))(param_1,param_2,local_108,local_c8);
  }
  local_120 = (char *)FUN_1811316e0(0x18);
  if (local_120 != (char *)0x0) {
    FUN_1805a48c0(local_120,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_120 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_128[0] = 0x1a3;
  local_120 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_120);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_128);
}



############ FUN_ 18093a0f0 size=758 ############

void FUN_18093a0f0(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 *param_6,undefined8 *param_7)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  void *_Memory;
  undefined8 *local_res8;
  char *local_2a8;
  void *local_2a0;
  undefined8 uStack_298;
  longlong local_290;
  undefined8 *local_288;
  undefined8 local_280;
  undefined1 local_278 [576];
  
  local_280 = 0xfffffffffffffffe;
  FUN_18063c2c0(local_278);
  local_2a0 = (void *)0x0;
  uStack_298 = 0;
  local_290 = 0;
  if ((char)param_1[0x118] == '\0') {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"KeyExchanger object has not been initialized");
    }
    puVar4 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar4;
    if (puVar4 == (undefined8 *)0x0) {
      puVar4 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
      *puVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1cd);
    local_2a8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp";
    uVar5 = FUN_1805a21d0(puVar4[1],&local_2a8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res8);
  }
  uVar1 = FUN_1807002d0(param_2);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar1);
  uVar2 = FUN_180700270(param_2);
  local_2a8 = (char *)CONCAT44(local_2a8._4_4_,uVar2);
  if ((uVar1 != 0) && (uVar2 != 0)) {
    (**(code **)(*param_1 + 8))(param_1,uVar1,param_3,param_4,param_5,&local_2a0);
    FUN_18063f370(local_278,param_2,1,0,&local_2a0);
    uVar3 = uVar1;
    if (uVar1 % uVar2 != 0) {
      uVar3 = (uVar1 / uVar2 + 1) * uVar2;
    }
    FUN_1805b0f50(param_7,uVar3,param_7);
    FUN_180605430(*param_7,uVar3);
    if (param_6 != param_7) {
      FUN_1805e1990(param_6,*param_7,param_7[1],param_7._0_1_);
    }
    FUN_18063daf0(local_278,param_6);
    FUN_1805b0f50(param_7,uVar1,param_7);
    if (local_2a0 == (void *)0x0) {
      FUN_18063cad0(local_278);
      return;
    }
    _Memory = local_2a0;
    if ((0xfff < (ulonglong)(local_290 - (longlong)local_2a0)) &&
       (_Memory = *(void **)((longlong)local_2a0 + -8),
       0x1f < (ulonglong)((longlong)local_2a0 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_288 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_288 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_288,"Zero key or block size (dwKeySize = %d, dwBlockSize = %d)");
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x18);
  local_288 = puVar4;
  if (puVar4 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
    *puVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar6 + 8),&local_res8);
  FUN_18060e760(*(undefined8 *)(lVar6 + 8),&local_2a8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1d8);
  local_2a8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar5 = FUN_1805a21d0(puVar4[1],&local_2a8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,&local_res8);
}



############ FUN_ 18093a420 size=351 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18093a420(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_168 [32];
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined4 local_128 [2];
  char *local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined1 local_100 [56];
  undefined1 local_c8 [112];
  ulonglong local_58;
  
  local_108 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_168;
  local_110 = param_7;
  local_118 = param_8;
  if ((char)param_1[0x118] != '\0') {
    FUN_18073b050(param_3,local_100);
    FUN_18073d980(param_4,param_5,local_c8);
    local_138 = local_118;
    local_140 = local_110;
    local_148 = param_6;
    (**(code **)(*param_1 + 0x38))(param_1,param_2,local_100,local_c8);
  }
  local_120 = (char *)FUN_1811316e0(0x18);
  if (local_120 != (char *)0x0) {
    FUN_1805a48c0(local_120,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_120 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_128[0] = 0x17b;
  local_120 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_120);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_128);
}



############ FUN_ 18093a5b0 size=266 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18093a5b0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_118 [32];
  undefined4 local_f8 [2];
  char *local_f0;
  undefined8 local_e8;
  undefined1 local_e0 [56];
  undefined1 local_a8 [112];
  ulonglong local_38;
  
  local_e8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  if (*(char *)(param_1 + 0x8c0) != '\0') {
    (**(code **)(*(longlong *)(param_1 + 8) + 0x20))((longlong *)(param_1 + 8),local_e0,local_a8);
    FUN_18073d1f0(local_e0,param_2);
    FUN_18073f650(local_a8,param_3);
  }
  local_f0 = (char *)FUN_1811316e0(0x18);
  if (local_f0 != (char *)0x0) {
    FUN_1805a48c0(local_f0,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_f0 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_f8[0] = 0x20c;
  local_f0 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp";
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_f0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_f8);
}



############ FUN_ 18093a6e0 size=274 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18093a6e0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  undefined8 uVar2;
  undefined1 auStack_128 [32];
  undefined4 local_108 [2];
  char *local_100;
  undefined8 local_f8;
  undefined1 local_f0 [56];
  undefined1 local_b8 [112];
  ulonglong local_48;
  
  local_f8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  if (*(char *)(param_1 + 0x8c0) != '\0') {
    (**(code **)(*(longlong *)(param_1 + 8) + 0x20))((longlong *)(param_1 + 8),local_f0,local_b8);
    FUN_18073c3a0(local_f0,param_2);
    FUN_18073e970(local_b8,param_3,param_4);
  }
  local_100 = (char *)FUN_1811316e0(0x18);
  if (local_100 != (char *)0x0) {
    FUN_1805a48c0(local_100,"KeyExchanger object has not been initialized");
  }
  pcVar1 = (char *)FUN_1811316e0(0x18);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = (char *)0x0;
  }
  else {
    local_100 = pcVar1;
    FUN_1805a48c0(pcVar1,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_108[0] = 0xd4;
  local_100 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\keyexchanger.cpp"
  ;
  uVar2 = FUN_1805a21d0(*(undefined8 *)(pcVar1 + 8),&local_100);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,local_108);
}



############ FUN_ 1809403b0 size=112 ############

void FUN_1809403b0(undefined8 param_1,ulonglong param_2)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  
  uVar1 = param_2 * 0x68;
  if (param_2 < 0x276276276276277) {
    if (uVar1 < 0x1000) {
      if (uVar1 != 0) {
        FUN_1811316e0(uVar1);
        return;
      }
      return;
    }
  }
  else {
    uVar1 = 0xffffffffffffffff;
  }
  uVar3 = uVar1 + 0x27;
  if (uVar3 <= uVar1) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar3);
  if (lVar2 != 0) {
    *(longlong *)((lVar2 + 0x27U & 0xffffffffffffffe0) - 8) = lVar2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  _invalid_parameter_noinfo_noreturn();
}



############ FUN_ 18093e820 size=782 ############

void FUN_18093e820(ulonglong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar6 = (undefined8 *)param_1[1];
  uVar9 = *param_1;
  lVar3 = ((longlong)puVar6 - uVar9) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)((longlong)puVar6 - uVar9)),8);
  uVar10 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - uVar9)),8) +
          (param_1[2] - uVar9);
  uVar4 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  if (param_2 <= uVar4) {
    if (param_2 <= uVar10) {
      if (param_2 != uVar10) {
        puVar8 = (undefined8 *)(param_2 * 0xa8 + uVar9);
        for (puVar7 = puVar8; puVar7 != puVar6; puVar7 = puVar7 + 0x15) {
          (**(code **)*puVar7)(puVar7,0);
        }
        param_1[1] = (ulonglong)puVar8;
      }
      return;
    }
    for (lVar3 = param_2 - uVar10; lVar3 != 0; lVar3 = lVar3 + -1) {
      FUN_1805b6280(puVar6);
      puVar6 = puVar6 + 0x15;
    }
    param_1[1] = (ulonglong)puVar6;
    return;
  }
  if (0x186186186186186 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar4 <= 0x186186186186186 - (uVar4 >> 1)) && (uVar9 = (uVar4 >> 1) + uVar4, uVar9 < param_2)
     ) {
    uVar9 = param_2;
  }
  uVar4 = uVar9 * 0xa8;
  if (uVar9 < 0x186186186186187) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_18093e943;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar3;
LAB_18093e943:
  lVar3 = uVar10 * 0xa8 + uVar4;
  for (lVar11 = param_2 - uVar10; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1805b6280(lVar3);
    lVar3 = lVar3 + 0xa8;
  }
  uVar10 = param_1[1];
  uVar5 = uVar4;
  for (uVar2 = *param_1; uVar2 != uVar10; uVar2 = uVar2 + 0xa8) {
    FUN_1805b6190(uVar5);
    uVar5 = uVar5 + 0xa8;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = uVar4;
    param_1[1] = param_2 * 0xa8 + uVar4;
    param_1[2] = uVar9 * 0xa8 + uVar4;
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 0x15) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - (longlong)pvVar1)),8
                ) + (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xa8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18093eb40 size=704 ############

void FUN_18093eb40(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x38;
  uVar3 = (param_1[2] - lVar4) / 0x38;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      lVar4 = FUN_180940170(&local_res18,puVar7,param_2 - uVar2);
      param_1[1] = lVar4;
      return;
    }
    if (param_2 != uVar2) {
      puVar8 = (undefined8 *)(param_2 * 0x38 + lVar4);
      for (puVar6 = puVar8; puVar6 != puVar7; puVar6 = puVar6 + 7) {
        (**(code **)*puVar6)(puVar6,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x492492492492492 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x492492492492492 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x38;
  local_res20 = uVar10;
  if (uVar10 < 0x492492492492493) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_18093ec58;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_18093ec58:
  FUN_180940170(&local_res18,puVar7 + uVar2 * 7,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar6 = puVar7;
  for (lVar9 = *param_1; lVar9 != lVar4; lVar9 = lVar9 + 0x38) {
    *puVar6 = pace::eden::thrift::pub::Media::vftable;
    FUN_1805a4070(puVar6 + 1);
    *(undefined4 *)(puVar6 + 5) = *(undefined4 *)(lVar9 + 0x28);
    *(undefined4 *)((longlong)puVar6 + 0x2c) = *(undefined4 *)(lVar9 + 0x2c);
    *(undefined4 *)(puVar6 + 6) = *(undefined4 *)(lVar9 + 0x30);
    *(undefined4 *)((longlong)puVar6 + 0x34) = *(undefined4 *)(lVar9 + 0x34);
    puVar6 = puVar6 + 7;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 7);
    param_1[2] = (longlong)(puVar7 + uVar10 * 7);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 7) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x38) * 0x38)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18093ee10 size=830 ############

void FUN_18093ee10(ulonglong *param_1,ulonglong param_2)

{
  void *pvVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  void *_Memory;
  ulonglong uVar9;
  ulonglong uVar10;
  
  puVar4 = (undefined8 *)param_1[1];
  uVar9 = *param_1;
  lVar3 = (longlong)((longlong)puVar4 - uVar9) / 6 + ((longlong)((longlong)puVar4 - uVar9) >> 0x3f);
  uVar5 = (lVar3 >> 4) - (lVar3 >> 0x3f);
  uVar10 = (longlong)(param_1[2] - uVar9) / 0x60;
  if (param_2 <= uVar10) {
    if (uVar5 < param_2) {
      lVar3 = param_2 - uVar5;
      if (lVar3 != 0) {
        puVar2 = puVar4 + 4;
        do {
          *puVar4 = pace::eden::thrift::pub::CountLimitRecord::vftable;
          *(undefined4 *)(puVar2 + -3) = 0;
          puVar2[-2] = 0;
          puVar2[-1] = 0;
          *puVar2 = 0;
          *(undefined2 *)(puVar2 + 1) = 0;
          *(undefined8 *)((longlong)puVar2 + 0xc) = 0;
          *(undefined2 *)(puVar2 + 3) = 0;
          *(undefined8 *)((longlong)puVar2 + 0x1c) = 0;
          puVar2[5] = 0;
          puVar2[6] = 0;
          *(undefined2 *)(puVar2 + 7) = 0;
          puVar4 = puVar4 + 0xc;
          puVar2 = puVar2 + 0xc;
          lVar3 = lVar3 + -1;
        } while (lVar3 != 0);
      }
      param_1[1] = (ulonglong)puVar4;
      return;
    }
    if (param_2 != uVar5) {
      puVar7 = (undefined8 *)(param_2 * 0x60 + uVar9);
      for (puVar2 = puVar7; puVar2 != puVar4; puVar2 = puVar2 + 0xc) {
        (**(code **)*puVar2)(puVar2,0);
      }
      param_1[1] = (ulonglong)puVar7;
    }
    return;
  }
  if (0x2aaaaaaaaaaaaaa < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar10 <= 0x2aaaaaaaaaaaaaa - (uVar10 >> 1)) &&
     (uVar9 = uVar10 + (uVar10 >> 1), uVar9 < param_2)) {
    uVar9 = param_2;
  }
  if ((uVar9 < 0x2aaaaaaaaaaaaab) && (uVar9 * 0x60 < 0x1000)) {
    if (uVar9 * 0x60 == 0) {
      uVar10 = 0;
    }
    else {
      uVar10 = FUN_1811316e0();
    }
  }
  else {
    lVar3 = FUN_1811316e0();
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    uVar10 = lVar3 + 0x27U & 0xffffffffffffffe0;
    *(longlong *)(uVar10 - 8) = lVar3;
  }
  puVar4 = (undefined8 *)(uVar5 * 0x60 + uVar10);
  lVar3 = param_2 - uVar5;
  if (lVar3 != 0) {
    puVar2 = puVar4 + 4;
    do {
      *puVar4 = pace::eden::thrift::pub::CountLimitRecord::vftable;
      *(undefined4 *)(puVar2 + -3) = 0;
      puVar2[-2] = 0;
      puVar2[-1] = 0;
      *puVar2 = 0;
      *(undefined2 *)(puVar2 + 1) = 0;
      *(undefined8 *)((longlong)puVar2 + 0xc) = 0;
      *(undefined2 *)(puVar2 + 3) = 0;
      *(undefined8 *)((longlong)puVar2 + 0x1c) = 0;
      puVar2[5] = 0;
      puVar2[6] = 0;
      *(undefined2 *)(puVar2 + 7) = 0;
      puVar4 = puVar4 + 0xc;
      puVar2 = puVar2 + 0xc;
      lVar3 = lVar3 + -1;
    } while (lVar3 != 0);
  }
  uVar5 = param_1[1];
  uVar6 = uVar10;
  for (uVar8 = *param_1; uVar8 != uVar5; uVar8 = uVar8 + 0x60) {
    FUN_1805b5600(uVar6);
    uVar6 = uVar6 + 0x60;
  }
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar4 != puVar2; puVar4 = puVar4 + 0xc) {
      (**(code **)*puVar4)(puVar4,0);
    }
    pvVar1 = (void *)*param_1;
    _Memory = pvVar1;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar1) / 0x60) * 0x60)) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar10;
  param_1[1] = param_2 * 0x60 + uVar10;
  param_1[2] = uVar9 * 0x60 + uVar10;
  return;
}



############ FUN_ 18093f160 size=842 ############

void FUN_18093f160(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x88;
  uVar3 = (param_1[2] - lVar4) / 0x88;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      lVar4 = FUN_180940210(&local_res18,puVar7,param_2 - uVar2);
      param_1[1] = lVar4;
      return;
    }
    if (param_2 != uVar2) {
      puVar8 = (undefined8 *)(param_2 * 0x88 + lVar4);
      for (puVar6 = puVar8; puVar6 != puVar7; puVar6 = puVar6 + 0x11) {
        (**(code **)*puVar6)(puVar6,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x1e1e1e1e1e1e1e1 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x1e1e1e1e1e1e1e1 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x88;
  local_res20 = uVar10;
  if (uVar10 < 0x1e1e1e1e1e1e1e2) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_18093f27b;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_18093f27b:
  FUN_180940210(&local_res18,puVar7 + uVar2 * 0x11,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar6 = puVar7;
  for (lVar9 = *param_1; lVar9 != lVar4; lVar9 = lVar9 + 0x88) {
    *puVar6 = pace::eden::thrift::pub::SecretDataRecord::vftable;
    *(undefined4 *)(puVar6 + 1) = *(undefined4 *)(lVar9 + 8);
    FUN_1805b46a0(puVar6 + 2,lVar9 + 0x10);
    FUN_1805b46a0(puVar6 + 5,lVar9 + 0x28);
    FUN_1805b46a0(puVar6 + 8);
    *(undefined4 *)(puVar6 + 0xb) = *(undefined4 *)(lVar9 + 0x58);
    *(undefined4 *)((longlong)puVar6 + 0x5c) = *(undefined4 *)(lVar9 + 0x5c);
    *(undefined4 *)(puVar6 + 0xc) = *(undefined4 *)(lVar9 + 0x60);
    *(undefined4 *)((longlong)puVar6 + 100) = *(undefined4 *)(lVar9 + 100);
    *(undefined4 *)(puVar6 + 0xd) = *(undefined4 *)(lVar9 + 0x68);
    *(undefined4 *)((longlong)puVar6 + 0x6c) = *(undefined4 *)(lVar9 + 0x6c);
    *(undefined1 *)(puVar6 + 0xe) = *(undefined1 *)(lVar9 + 0x70);
    *(undefined1 *)((longlong)puVar6 + 0x71) = *(undefined1 *)(lVar9 + 0x71);
    *(undefined1 *)((longlong)puVar6 + 0x72) = *(undefined1 *)(lVar9 + 0x72);
    *(undefined1 *)((longlong)puVar6 + 0x73) = *(undefined1 *)(lVar9 + 0x73);
    *(undefined1 *)((longlong)puVar6 + 0x74) = *(undefined1 *)(lVar9 + 0x74);
    *(undefined8 *)((longlong)puVar6 + 0x75) = *(undefined8 *)(lVar9 + 0x75);
    *(undefined4 *)((longlong)puVar6 + 0x7d) = *(undefined4 *)(lVar9 + 0x7d);
    *(undefined2 *)((longlong)puVar6 + 0x81) = *(undefined2 *)(lVar9 + 0x81);
    *(undefined1 *)((longlong)puVar6 + 0x83) = *(undefined1 *)(lVar9 + 0x83);
    puVar6 = puVar6 + 0x11;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x11);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x11);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 0x11) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x88) * 0x88)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18093f4d0 size=478 ############

void FUN_18093f4d0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  longlong lVar7;
  void *_Memory;
  ulonglong uVar8;
  undefined8 *puVar9;
  
  puVar9 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar3 = ((longlong)puVar9 - lVar4) / 0x58;
  uVar2 = (param_1[2] - lVar4) / 0x58;
  if (param_2 <= uVar2) {
    if (uVar3 < param_2) {
      lVar4 = param_2 - uVar3;
      if (lVar4 != 0) {
        puVar5 = puVar9 + 4;
        do {
          *puVar9 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
          *(undefined4 *)(puVar5 + -3) = 0;
          puVar5[-2] = 0;
          puVar5[-1] = 0;
          *puVar5 = 0;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
          puVar5[4] = 0;
          puVar5[5] = 0;
          *(undefined4 *)(puVar5 + 6) = 0;
          *(undefined1 *)((longlong)puVar5 + 0x34) = 0;
          puVar9 = puVar9 + 0xb;
          puVar5 = puVar5 + 0xb;
          lVar4 = lVar4 + -1;
        } while (lVar4 != 0);
      }
      param_1[1] = (longlong)puVar9;
      return;
    }
    if (param_2 != uVar3) {
      puVar6 = (undefined8 *)(param_2 * 0x58 + lVar4);
      for (puVar5 = puVar6; puVar5 != puVar9; puVar5 = puVar5 + 0xb) {
        (**(code **)*puVar5)(puVar5,0);
      }
      param_1[1] = (longlong)puVar6;
    }
    return;
  }
  if (0x2e8ba2e8ba2e8ba < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar8 = param_2;
  if ((uVar2 <= 0x2e8ba2e8ba2e8ba - (uVar2 >> 1)) && (uVar8 = uVar2 + (uVar2 >> 1), uVar8 < param_2)
     ) {
    uVar8 = param_2;
  }
  if ((uVar8 < 0x2e8ba2e8ba2e8bb) && (uVar8 * 0x58 < 0x1000)) {
    if (uVar8 * 0x58 == 0) {
      puVar9 = (undefined8 *)0x0;
    }
    else {
      puVar9 = (undefined8 *)FUN_1811316e0();
    }
  }
  else {
    lVar4 = FUN_1811316e0();
    if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    puVar9 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
    puVar9[-1] = lVar4;
  }
  puVar5 = puVar9 + uVar3 * 0xb;
  lVar4 = param_2 - uVar3;
  if (lVar4 != 0) {
    puVar6 = puVar5 + 4;
    do {
      *puVar5 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
      *(undefined4 *)(puVar6 + -3) = 0;
      puVar6[-2] = 0;
      puVar6[-1] = 0;
      *puVar6 = 0;
      puVar6[1] = 0;
      puVar6[2] = 0;
      puVar6[3] = 0;
      puVar6[4] = 0;
      puVar6[5] = 0;
      *(undefined4 *)(puVar6 + 6) = 0;
      *(undefined1 *)((longlong)puVar6 + 0x34) = 0;
      puVar5 = puVar5 + 0xb;
      puVar6 = puVar6 + 0xb;
      lVar4 = lVar4 + -1;
    } while (lVar4 != 0);
  }
  lVar4 = param_1[1];
  puVar5 = puVar9;
  for (lVar7 = *param_1; lVar7 != lVar4; lVar7 = lVar7 + 0x58) {
    *puVar5 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
    *(undefined4 *)(puVar5 + 1) = *(undefined4 *)(lVar7 + 8);
    FUN_1805b46a0(puVar5 + 2,lVar7 + 0x10);
    FUN_1805b46a0(puVar5 + 5);
    *(undefined4 *)(puVar5 + 8) = *(undefined4 *)(lVar7 + 0x40);
    *(undefined4 *)((longlong)puVar5 + 0x44) = *(undefined4 *)(lVar7 + 0x44);
    *(undefined1 *)(puVar5 + 9) = *(undefined1 *)(lVar7 + 0x48);
    *(undefined1 *)((longlong)puVar5 + 0x49) = *(undefined1 *)(lVar7 + 0x49);
    *(undefined1 *)((longlong)puVar5 + 0x4a) = *(undefined1 *)(lVar7 + 0x4a);
    *(undefined1 *)((longlong)puVar5 + 0x4b) = *(undefined1 *)(lVar7 + 0x4b);
    *(undefined8 *)((longlong)puVar5 + 0x4c) = *(undefined8 *)(lVar7 + 0x4c);
    *(undefined1 *)((longlong)puVar5 + 0x54) = *(undefined1 *)(lVar7 + 0x54);
    puVar5 = puVar5 + 0xb;
  }
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 != (undefined8 *)0x0) {
    puVar9 = (undefined8 *)param_1[1];
    for (; puVar5 != puVar9; puVar5 = puVar5 + 0xb) {
      (**(code **)*puVar5)(puVar5,0);
    }
    pvVar1 = (void *)*param_1;
    _Memory = pvVar1;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x58) * 0x58)) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = (longlong)puVar9;
  param_1[1] = (longlong)(puVar9 + param_2 * 0xb);
  param_1[2] = (longlong)(puVar9 + uVar8 * 0xb);
  return;
}



############ FUN_ 18093faf0 size=654 ############

void FUN_18093faf0(longlong *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  void *_Memory;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  puVar10 = (undefined8 *)param_1[1];
  lVar2 = *param_1;
  uVar5 = (longlong)puVar10 - lVar2 >> 6;
  uVar3 = param_1[2] - lVar2 >> 6;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (uVar5 < param_2) {
      lVar2 = FUN_180940290(&local_res18,puVar10,param_2 - uVar5);
      param_1[1] = lVar2;
      return;
    }
    if (param_2 != uVar5) {
      puVar7 = (undefined8 *)(param_2 * 0x40 + lVar2);
      for (puVar6 = puVar7; puVar6 != puVar10; puVar6 = puVar6 + 8) {
        (**(code **)*puVar6)(puVar6,0);
      }
      param_1[1] = (longlong)puVar7;
    }
    return;
  }
  if (0x3ffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar3 <= 0x3ffffffffffffff - (uVar3 >> 1)) && (uVar9 = (uVar3 >> 1) + uVar3, uVar9 < param_2)
     ) {
    uVar9 = param_2;
  }
  uVar3 = uVar9 << 6;
  local_res20 = uVar9;
  if (uVar9 < 0x400000000000000) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_18093fbdf;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar4 = uVar3 + 0x27;
  if (uVar4 <= uVar3) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar2 = FUN_1811316e0(uVar4);
  if (lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar2 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar2;
LAB_18093fbdf:
  FUN_180940290(&local_res18,puVar10 + uVar5 * 8,param_2 - uVar5,param_4,puVar10 + uVar5 * 8,puVar10
                ,uVar11);
  lVar2 = param_1[1];
  puVar6 = puVar10;
  for (lVar8 = *param_1; lVar8 != lVar2; lVar8 = lVar8 + 0x40) {
    *puVar6 = pace::eden::thrift::pub::WrapperAuthProduct::vftable;
    *(undefined4 *)(puVar6 + 1) = *(undefined4 *)(lVar8 + 8);
    *(undefined4 *)((longlong)puVar6 + 0xc) = *(undefined4 *)(lVar8 + 0xc);
    *(undefined1 *)(puVar6 + 2) = *(undefined1 *)(lVar8 + 0x10);
    *(undefined1 *)((longlong)puVar6 + 0x11) = *(undefined1 *)(lVar8 + 0x11);
    FUN_1805a4070(puVar6 + 3);
    *(undefined4 *)(puVar6 + 7) = *(undefined4 *)(lVar8 + 0x38);
    *(undefined1 *)((longlong)puVar6 + 0x3c) = *(undefined1 *)(lVar8 + 0x3c);
    puVar6 = puVar6 + 8;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 8);
    param_1[2] = (longlong)(puVar10 + uVar9 * 8);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar10; puVar6 = puVar6 + 8) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xffffffffffffffc0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18097d020 size=1558 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18097d020(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  int param_5)

{
  DWORD DVar1;
  BOOL BVar2;
  longlong lVar3;
  HANDLE pvVar4;
  undefined8 uVar5;
  basic_ostream<char,std::char_traits<char>_> *pbVar6;
  basic_ostream<char,struct_std::char_traits<char>_> *pbVar7;
  longlong lVar8;
  longlong lVar9;
  LPCSTR pCVar10;
  undefined1 auStackY_288 [32];
  _FILETIME local_240;
  undefined8 local_238;
  undefined8 local_230;
  undefined ***local_228;
  int iStack_21c;
  undefined *local_218;
  undefined **local_210;
  basic_ostream<char,std::char_traits<char>_> local_208 [96];
  undefined8 local_1a8;
  undefined4 local_1a0;
  basic_ios<char,std::char_traits<char>_> local_190 [104];
  undefined8 local_128;
  _FILETIME local_120;
  _FILETIME local_118;
  _FILETIME local_110;
  undefined1 local_108 [32];
  undefined1 local_e8 [64];
  undefined1 local_a8 [32];
  undefined1 local_88 [64];
  ulonglong local_48;
  
  local_128 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStackY_288;
  lVar9 = 0;
  local_238 = param_2;
  local_230 = param_3;
  if (*(longlong *)(param_1 + 0x28) != -1) {
    FUN_1805a4160(local_108,"Called connect on connected pipe");
    FUN_1805d6590(local_e8,2,local_108);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_e8,(ThrowInfo *)&DAT_1825fdc30);
  }
  if (param_5 < 0) {
    FUN_1805a4160(local_108,"Called connect with negative timeout value");
    FUN_1805d6590(local_e8,6,local_108);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_e8,(ThrowInfo *)&DAT_1825fdc30);
  }
  lVar3 = lVar9;
  if (0 < param_5) {
    lVar3 = FUN_18097d770();
    lVar3 = lVar3 + param_5;
  }
  while( true ) {
    if (lVar3 != 0) {
      pvVar4 = GetCurrentThread();
      GetThreadTimes(pvVar4,&local_110,&local_118,&local_120,&local_240);
      if (lVar3 <= (longlong)((ulonglong)local_240 / 10000)) break;
    }
    pCVar10 = (LPCSTR)(param_1 + 8);
    if (0xf < *(ulonglong *)(param_1 + 0x20)) {
      pCVar10 = *(LPCSTR *)(param_1 + 8);
    }
    pvVar4 = CreateFileA(pCVar10,0xc0000000,0,(LPSECURITY_ATTRIBUTES)0x0,3,0x40000000,(HANDLE)0x0);
    *(HANDLE *)(param_1 + 0x28) = pvVar4;
    if (pvVar4 != (HANDLE)0xffffffffffffffff) break;
    DVar1 = GetLastError();
    if ((DVar1 != 0xe7) && (DVar1 != 2)) {
      FUN_18060c1b0(&local_218,2,1);
      pbVar6 = (basic_ostream<char,std::char_traits<char>_> *)FUN_1805a0df0(&local_218,"Error ");
      pbVar7 = std::basic_ostream<char,std::char_traits<char>_>::operator<<(pbVar6,DVar1);
      uVar5 = FUN_1805a0df0(pbVar7," from CreateFile call for named pipe: ");
      FUN_180722580(uVar5,param_1 + 8);
      uVar5 = FUN_180721f10(&local_218,local_a8);
      uVar5 = FUN_1805f5000(uVar5);
      FUN_1805a4160(local_108,uVar5);
      FUN_1805d6590(local_e8,1,local_108);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_e8,(ThrowInfo *)&DAT_1825fdc30);
    }
    local_218 = &DAT_181bb3cc0;
    std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_190)
    ;
    std::basic_ostream<char,std::char_traits<char>_>::basic_ostream<char,std::char_traits<char>_>
              ((basic_ostream<char,std::char_traits<char>_> *)&local_218,
               (basic_streambuf<char,std::char_traits<char>_> *)&local_210,false);
    *(undefined ***)((longlong)&local_218 + (longlong)*(int *)(local_218 + 4)) =
         std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    *(int *)((longlong)&iStack_21c + (longlong)*(int *)(local_218 + 4)) =
         *(int *)(local_218 + 4) + -0x88;
    local_228 = &local_210;
    std::basic_streambuf<char,std::char_traits<char>_>::
    basic_streambuf<char,std::char_traits<char>_>
              ((basic_streambuf<char,std::char_traits<char>_> *)&local_210);
    local_210 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    local_1a8 = 0;
    local_1a0 = 4;
    uVar5 = FUN_1805a0df0(&local_218,"Named pipe: ");
    lVar8 = param_1 + 8;
    if (0xf < *(ulonglong *)(param_1 + 0x20)) {
      lVar8 = *(longlong *)(param_1 + 8);
    }
    uVar5 = FUN_1805b0d80(uVar5,lVar8);
    FUN_1805a0df0(uVar5," not available yet. Waiting...\n");
    *(undefined ***)((longlong)&local_218 + (longlong)*(int *)(local_218 + 4)) =
         std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    *(int *)((longlong)&iStack_21c + (longlong)*(int *)(local_218 + 4)) =
         *(int *)(local_218 + 4) + -0x88;
    FUN_1805d0340(&local_210);
    std::basic_ostream<char,std::char_traits<char>_>::~basic_ostream<char,std::char_traits<char>_>
              (local_208);
    std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
              (local_190);
    if ((lVar3 == 0) && (DVar1 == 0xe7)) {
      pCVar10 = (LPCSTR)(param_1 + 8);
      if (0xf < *(ulonglong *)(param_1 + 0x20)) {
        pCVar10 = *(LPCSTR *)(param_1 + 8);
      }
      BVar2 = WaitNamedPipeA(pCVar10,0xffffffff);
      if ((BVar2 == 0) && (DVar1 = GetLastError(), DVar1 != 2)) {
        FUN_18060c1b0(&local_218,2,1);
        pbVar6 = (basic_ostream<char,std::char_traits<char>_> *)FUN_1805a0df0(&local_218,"Error ");
        pbVar7 = std::basic_ostream<char,std::char_traits<char>_>::operator<<(pbVar6,DVar1);
        uVar5 = FUN_1805a0df0(pbVar7," waiting to connect to named pipe: ");
        FUN_180722580(uVar5,param_1 + 8);
        uVar5 = FUN_180721f10(&local_218,local_a8);
        uVar5 = FUN_1805f5000(uVar5);
        FUN_1805a4160(local_108,uVar5);
        FUN_1805d6590(local_e8,1,local_108);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_e8,(ThrowInfo *)&DAT_1825fdc30);
      }
    }
    else {
      pCVar10 = (LPCSTR)(param_1 + 8);
      if (0xf < *(ulonglong *)(param_1 + 0x20)) {
        pCVar10 = *(LPCSTR *)(param_1 + 8);
      }
      BVar2 = WaitNamedPipeA(pCVar10,500);
      if (((BVar2 == 0) && (DVar1 = GetLastError(), DVar1 != 0x79)) && (DVar1 != 2)) {
        FUN_18060c1b0(&local_218,2,1);
        pbVar6 = (basic_ostream<char,std::char_traits<char>_> *)FUN_1805a0df0(&local_218,"Error ");
        pbVar7 = std::basic_ostream<char,std::char_traits<char>_>::operator<<(pbVar6,DVar1);
        uVar5 = FUN_1805a0df0(pbVar7," waiting with timeout to connect to named pipe: ");
        FUN_180722580(uVar5,param_1 + 8);
        FUN_180721f10(&local_218,local_a8);
        uVar5 = FUN_180721f10(&local_218,local_e8);
        uVar5 = FUN_1805f5000(uVar5);
        FUN_1805a4160(local_108,uVar5);
        FUN_1805d6590(local_88,1,local_108);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_88,(ThrowInfo *)&DAT_1825fdc30);
      }
    }
  }
  if ((0 < lVar3) && (lVar8 = FUN_18097d770(), lVar3 <= lVar8)) {
    FUN_18060c1b0(&local_218,2,1);
    uVar5 = FUN_1805a0df0(&local_218,"Timed out waiting to connect to named pipe: ");
    FUN_180722580(uVar5,param_1 + 8);
    uVar5 = FUN_180721f10(&local_218,local_e8);
    uVar5 = FUN_1805f5000(uVar5);
    FUN_1805a4160(local_108,uVar5);
    FUN_1805d6590(local_88,3,local_108);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_88,(ThrowInfo *)&DAT_1825fdc30);
  }
  local_228 = (undefined ***)FUN_1811316e0(0x28);
  if (local_228 != (undefined ***)0x0) {
    lVar9 = FUN_180726540(local_228,local_238,param_1 + 0x28);
  }
  FUN_1807264a0(param_1 + 0x30,lVar9);
  FUN_18097cd60(local_230,param_1 + 0x30);
}



############ FUN_ 18097e3a0 size=546 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18097e3a0(uint *param_1,longlong *param_2)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  BOOL BVar4;
  HANDLE pvVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  HANDLE hSourceProcessHandle;
  undefined1 auStackY_178 [32];
  undefined8 *local_138;
  HANDLE local_130;
  undefined8 local_128;
  uint *local_120;
  undefined1 local_118 [80];
  undefined1 local_c8 [80];
  undefined1 local_78 [80];
  ulonglong local_28;
  
  local_128 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStackY_178;
  local_120 = param_1;
  FUN_1805a9420();
  if (*(longlong *)(param_1 + 0xc) == 0) {
    pvVar5 = CreateSemaphoreA((LPSECURITY_ATTRIBUTES)0x0,0,0x7fffffff,(LPCSTR)0x0);
    if (pvVar5 == (HANDLE)0x0) {
      uVar6 = FUN_1805a4cc0(local_118);
                    /* WARNING: Subroutine does not return */
      FUN_1805a3bf0(uVar6);
    }
    if ((longlong)*(HANDLE *)(param_1 + 0xc) - 1U < 0xfffffffffffffffe) {
      CloseHandle(*(HANDLE *)(param_1 + 0xc));
    }
    *(HANDLE *)(param_1 + 0xc) = pvVar5;
  }
  param_1[4] = param_1[4] + 1;
  if ((*(longlong *)(param_1 + 6) == *(longlong *)(param_1 + 8)) ||
     (lVar3 = *(longlong *)(*(longlong *)(param_1 + 8) + -8), *(char *)(lVar3 + 0x14) != '\0')) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x20);
    if (puVar7 == (undefined8 *)0x0) {
      puVar7 = (undefined8 *)0x0;
    }
    else {
      local_138 = puVar7;
      pvVar5 = CreateSemaphoreA((LPSECURITY_ATTRIBUTES)0x0,0,0x7fffffff,(LPCSTR)0x0);
      if (pvVar5 == (HANDLE)0x0) {
        uVar6 = FUN_1805a4cc0(local_c8);
                    /* WARNING: Subroutine does not return */
        FUN_1805a3bf0(uVar6);
      }
      *puVar7 = pvVar5;
      pvVar5 = *(HANDLE *)(param_1 + 0xc);
      hSourceProcessHandle = GetCurrentProcess();
      local_130 = (HANDLE)0x0;
      BVar4 = DuplicateHandle(hSourceProcessHandle,pvVar5,hSourceProcessHandle,&local_130,0,0,2);
      if (BVar4 == 0) {
        uVar6 = FUN_1805a4cc0(local_78);
                    /* WARNING: Subroutine does not return */
        FUN_1805a3bf0(uVar6);
      }
      puVar7[1] = local_130;
      *(undefined4 *)(puVar7 + 2) = 1;
      *(undefined1 *)((longlong)puVar7 + 0x14) = 0;
      *(undefined4 *)(puVar7 + 3) = 0;
    }
    if (puVar7 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puVar7 + 3) = *(int *)(puVar7 + 3) + 1;
      UNLOCK();
    }
    local_138 = puVar7;
    FUN_18097db40(param_1 + 6,&local_138);
    *param_2 = (longlong)local_138;
    LOCK();
    uVar2 = *param_1;
    *param_1 = *param_1 + 0x80000000;
    UNLOCK();
    if (((uVar2 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar2)) {
      LOCK();
      uVar2 = *param_1;
      *param_1 = *param_1 | 0x40000000;
      UNLOCK();
      if ((uVar2 >> 0x1e & 1) == 0) {
        pvVar5 = (HANDLE)FUN_1805a9100(param_1);
        SetEvent(pvVar5);
      }
    }
  }
  else {
    LOCK();
    piVar1 = (int *)(lVar3 + 0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
    lVar3 = *(longlong *)(*(longlong *)(param_1 + 8) + -8);
    *param_2 = lVar3;
    if (lVar3 != 0) {
      LOCK();
      *(int *)(lVar3 + 0x18) = *(int *)(lVar3 + 0x18) + 1;
      UNLOCK();
    }
    LOCK();
    uVar2 = *param_1;
    *param_1 = *param_1 + 0x80000000;
    UNLOCK();
    if (((uVar2 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar2)) {
      LOCK();
      uVar2 = *param_1;
      *param_1 = *param_1 | 0x40000000;
      UNLOCK();
      if ((uVar2 >> 0x1e & 1) == 0) {
        pvVar5 = (HANDLE)FUN_1805a9100(param_1);
        SetEvent(pvVar5);
      }
    }
  }
}



############ FUN_ 18097db40 size=453 ############

void FUN_18097db40(ulonglong *param_1,longlong *param_2)

{
  longlong *plVar1;
  void *pvVar2;
  code *pcVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  void *_Memory;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  undefined1 local_res18;
  longlong lVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  plVar1 = (longlong *)param_1[1];
  if ((longlong *)param_1[2] == plVar1) {
    lVar7 = (longlong)((longlong)plVar1 - *param_1) >> 3;
    if (lVar7 == 0x1fffffffffffffff) {
      FUN_1809284a0();
      pcVar3 = (code *)swi(3);
      (*pcVar3)();
      return;
    }
    uVar5 = lVar7 + 1;
    uVar6 = (longlong)((longlong)param_1[2] - *param_1) >> 3;
    uVar9 = uVar5;
    if ((uVar6 <= 0x1fffffffffffffff - (uVar6 >> 1)) &&
       (uVar9 = (uVar6 >> 1) + uVar6, uVar9 < uVar5)) {
      uVar9 = uVar5;
    }
    uVar6 = uVar9;
    lVar10 = lVar7;
    if (uVar9 == 0) {
      uVar8 = 0;
    }
    else {
      if (0x1fffffffffffffff < uVar9) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_alloc();
      }
      uVar8 = uVar9 * 8;
      if (uVar8 < 0x1000) {
        uVar8 = FUN_1811316e0();
        if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
      }
      else {
        if (uVar8 + 0x27 <= uVar8) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_alloc();
        }
        lVar4 = FUN_1811316e0();
        if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
        uVar8 = lVar4 + 0x27U & 0xffffffffffffffe0;
        *(longlong *)(uVar8 - 8) = lVar4;
      }
    }
    lVar4 = *param_2;
    *(longlong *)(uVar8 + lVar7 * 8) = lVar4;
    if (lVar4 != 0) {
      LOCK();
      *(int *)(lVar4 + 0x18) = *(int *)(lVar4 + 0x18) + 1;
      UNLOCK();
    }
    FUN_18097d8d0(*param_1,param_1[1],uVar8,param_1,0,local_res18,uVar6,lVar10,uVar11);
    if (*param_1 != 0) {
      FUN_18097d840(*param_1,param_1[1],param_1);
      pvVar2 = (void *)*param_1;
      uVar5 = (longlong)(param_1[2] - (longlong)pvVar2) >> 3;
      if ((uVar5 < 0x2000000000000000) &&
         ((_Memory = pvVar2, uVar5 * 8 < 0x1000 ||
          (((((ulonglong)pvVar2 & 0x1f) == 0 &&
            (_Memory = *(void **)((longlong)pvVar2 - 8), _Memory < pvVar2)) &&
           ((ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)) < 0x20)))))) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    *param_1 = uVar8;
    param_1[1] = uVar8 + uVar5 * 8;
    param_1[2] = uVar8 + uVar9 * 8;
  }
  else {
    lVar7 = *param_2;
    *plVar1 = lVar7;
    if (lVar7 != 0) {
      LOCK();
      *(int *)(lVar7 + 0x18) = *(int *)(lVar7 + 0x18) + 1;
      UNLOCK();
    }
    param_1[1] = param_1[1] + 8;
  }
  return;
}



############ FUN_ 18097ef40 size=117 ############

void FUN_18097ef40(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined4 *puVar2;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  if (puVar1 == (undefined8 *)0x0) {
    *param_1 = 0;
  }
  else {
    *puVar1 = apache::thrift::concurrency::Mutex::impl::BoostMutexAdapter<boost::mutex>::vftable;
    puVar2 = (undefined4 *)FUN_1811316e0(0x10);
    if (puVar2 != (undefined4 *)0x0) {
      *puVar2 = 0;
      *(undefined8 *)(puVar2 + 2) = 0;
    }
    puVar1[1] = puVar2;
    *param_1 = puVar1;
  }
  return;
}



############ FUN_ 18099c900 size=77 ############

undefined8 * FUN_18099c900(undefined8 param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x128);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1806d2580(puVar1,param_1);
    *puVar1 = pace::IlokUsbException::vftable;
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 18099e400 size=131 ############

undefined8 * FUN_18099e400(undefined8 param_1)

{
  undefined8 *puVar1;
  longlong lVar2;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x130);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1806d2580(puVar1,param_1);
    *puVar1 = pace::IlokFirmwareException::vftable;
    *(undefined4 *)(puVar1 + 0x25) = 99;
    lVar2 = __RTDynamicCast(param_1,0,&pace::PaceException::RTTI_Type_Descriptor,
                            &pace::IlokFirmwareException::RTTI_Type_Descriptor,1);
    *(undefined4 *)(puVar1 + 0x25) = *(undefined4 *)(lVar2 + 0x128);
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 18099f490 size=12683 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Removing unreachable block (ram,0x00018099f5ed) */
/* WARNING: Removing unreachable block (ram,0x00018099f588) */
/* WARNING: Removing unreachable block (ram,0x00018099f569) */
/* WARNING: Removing unreachable block (ram,0x00018099f644) */
/* WARNING: Removing unreachable block (ram,0x00018099f6a5) */
/* WARNING: Removing unreachable block (ram,0x00018099f517) */

void FUN_18099f490(void)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  undefined8 *puVar10;
  int unaff_retaddr;
  undefined1 auStack_13c8 [48];
  longlong **local_1398;
  undefined8 local_1390;
  undefined8 local_1388;
  longlong *local_1370;
  longlong lStack_1368;
  ulonglong local_1360;
  ulonglong local_1358;
  longlong local_1350;
  undefined8 local_1340;
  undefined4 local_1330;
  undefined4 local_132c;
  undefined4 local_1328;
  undefined4 local_1324;
  undefined4 local_1320;
  undefined4 local_131c;
  undefined4 local_1318;
  undefined4 local_1314;
  undefined4 local_1310;
  undefined4 local_130c;
  undefined4 local_1308;
  undefined4 local_1304;
  undefined4 local_1300;
  undefined4 local_12fc;
  undefined4 local_12f8;
  undefined4 local_12f4;
  undefined4 local_12f0;
  undefined4 local_12ec;
  undefined4 local_12e8;
  undefined4 local_12e4;
  undefined4 local_12e0;
  undefined4 local_12dc;
  undefined4 local_12d8;
  undefined4 local_12d4;
  undefined4 local_12d0;
  undefined4 local_12cc;
  undefined4 local_12c8;
  undefined4 local_12c4;
  undefined4 local_12c0;
  undefined4 local_12bc;
  undefined4 local_12b8;
  undefined4 local_12b4;
  undefined4 local_12b0;
  undefined4 local_12ac;
  undefined4 local_12a8;
  undefined4 local_12a4;
  undefined4 local_12a0;
  undefined4 local_129c;
  undefined4 local_1298;
  undefined4 local_1294;
  undefined4 local_1290;
  undefined4 local_128c;
  undefined4 local_1288;
  undefined4 local_1284;
  undefined4 local_1280;
  undefined4 local_127c;
  undefined4 local_1278;
  undefined4 local_1274;
  undefined4 local_1270;
  undefined4 local_126c;
  undefined4 local_1268;
  undefined4 local_1264;
  undefined4 local_1260;
  undefined4 local_125c;
  undefined4 local_1258;
  undefined4 local_1254;
  undefined4 local_1250;
  undefined4 local_124c;
  undefined4 local_1248;
  undefined4 local_1244;
  undefined4 local_1240;
  undefined4 local_123c;
  undefined4 local_1238;
  undefined4 local_1234;
  undefined4 local_1230;
  undefined4 local_122c;
  undefined4 local_1228;
  undefined4 local_1224;
  undefined4 local_1220;
  undefined4 local_121c;
  undefined4 local_1218;
  undefined4 local_1214;
  undefined4 local_1210;
  undefined4 local_120c;
  undefined4 local_1208;
  undefined4 local_1204;
  undefined4 local_1200;
  undefined4 local_11fc;
  undefined4 local_11f8;
  undefined4 local_11f4;
  undefined4 local_11f0;
  undefined4 local_11ec;
  undefined4 local_11e8;
  undefined4 local_11e4;
  undefined4 local_11e0;
  undefined4 local_11dc;
  undefined4 local_11d8;
  undefined4 local_11d4;
  undefined4 local_11d0;
  undefined4 local_11cc;
  undefined4 local_11c8;
  undefined4 local_11c4;
  undefined4 local_11c0;
  undefined4 local_11bc;
  undefined4 local_11b8;
  undefined4 local_11b4;
  undefined4 local_11b0;
  undefined4 local_11ac;
  undefined4 local_11a8;
  undefined4 local_11a4;
  undefined4 local_11a0;
  undefined4 local_119c;
  undefined4 local_1198;
  undefined4 local_1194;
  undefined4 local_1190;
  undefined4 local_118c;
  undefined4 local_1188;
  undefined4 local_1184;
  undefined4 local_1180;
  undefined4 local_117c;
  undefined4 local_1178;
  undefined4 local_1174;
  undefined4 local_1170;
  undefined4 local_116c;
  undefined4 local_1168;
  undefined4 local_1164;
  undefined4 local_1160;
  undefined4 local_115c;
  undefined4 local_1158;
  undefined4 local_1154;
  undefined4 local_1150;
  undefined4 local_114c;
  undefined4 local_1148;
  undefined4 local_1144;
  undefined4 local_1140;
  undefined4 local_113c;
  undefined4 local_1138;
  undefined4 local_1134;
  undefined4 local_1130;
  undefined4 local_112c;
  undefined4 local_1128;
  undefined4 local_1124;
  undefined4 local_1120;
  undefined4 local_111c;
  undefined4 local_1118;
  undefined4 local_1114;
  undefined4 local_1110;
  undefined4 local_110c;
  undefined4 local_1108;
  undefined4 local_1104;
  undefined4 local_1100;
  undefined4 local_10fc;
  undefined4 local_10f8;
  undefined4 local_10f4;
  undefined4 local_10f0;
  undefined4 local_10ec;
  undefined4 local_10e8;
  undefined4 local_10e4;
  undefined4 local_10e0;
  undefined4 local_10dc;
  undefined4 local_10d8;
  undefined4 local_10d4;
  undefined4 local_10d0;
  undefined4 local_10cc;
  undefined4 local_10c8;
  undefined4 local_10c4;
  undefined4 local_10c0;
  undefined4 local_10bc;
  undefined4 local_10b8;
  undefined4 local_10b4;
  undefined4 local_10b0;
  undefined4 local_10ac;
  undefined4 local_10a8;
  undefined4 local_10a4;
  undefined4 local_10a0;
  undefined4 local_109c;
  undefined4 local_1098;
  undefined4 local_1094;
  undefined4 local_1090;
  undefined4 local_108c;
  undefined4 local_1088;
  undefined4 local_1084;
  undefined4 local_1080;
  undefined4 local_107c;
  undefined4 local_1078;
  undefined4 local_1074;
  undefined4 local_1070;
  undefined4 local_106c;
  undefined4 local_1068;
  undefined4 local_1064;
  undefined4 local_1060;
  undefined4 local_105c;
  undefined4 local_1058;
  undefined4 local_1054;
  undefined4 local_1050;
  undefined4 local_104c;
  undefined4 local_1048;
  undefined4 local_1044;
  undefined4 local_1040;
  undefined4 local_103c;
  undefined4 local_1038;
  undefined4 local_1034;
  undefined4 local_1030;
  undefined4 local_102c;
  undefined4 local_1028;
  undefined4 local_1024;
  undefined4 local_1020;
  undefined4 local_101c;
  undefined4 local_1018;
  undefined4 local_1014;
  undefined4 local_1010;
  undefined4 local_100c;
  undefined4 local_1008;
  undefined4 local_1004;
  undefined4 local_1000;
  undefined4 local_ffc;
  undefined4 local_ff8;
  undefined4 local_ff4;
  undefined4 local_ff0;
  undefined4 local_fec;
  undefined4 local_fe8;
  undefined4 local_fe4;
  undefined4 local_fe0;
  undefined4 local_fdc;
  undefined4 local_fd8;
  undefined4 local_fd4;
  undefined4 local_fd0;
  undefined4 local_fcc;
  undefined4 local_fc8;
  undefined4 local_fc4;
  undefined4 local_fc0;
  undefined4 local_fbc;
  undefined4 local_fb8;
  undefined4 local_fb4;
  undefined4 local_fb0;
  undefined4 local_fac;
  undefined4 local_fa8;
  undefined4 local_fa4;
  undefined4 local_fa0;
  undefined4 local_f9c;
  undefined4 local_f98;
  undefined4 local_f94;
  undefined4 local_f90;
  undefined4 local_f8c;
  undefined4 local_f88;
  undefined4 local_f84;
  undefined4 local_f80;
  undefined4 local_f7c;
  undefined4 local_f78;
  undefined4 local_f74;
  undefined4 local_f70;
  undefined4 local_f6c;
  undefined4 local_f68;
  undefined4 local_f64;
  undefined4 local_f60;
  undefined4 local_f5c;
  undefined4 local_f58;
  undefined4 local_f54;
  undefined4 local_f50;
  undefined4 local_f4c;
  undefined4 local_f48;
  undefined4 local_f44;
  undefined4 local_f40;
  undefined4 local_f3c;
  undefined4 local_f38;
  undefined4 local_f34;
  undefined4 local_f30;
  undefined4 local_f2c;
  undefined4 local_f28;
  undefined4 local_f24;
  undefined4 local_f20;
  undefined4 local_f1c;
  undefined4 local_f18;
  undefined4 local_f14;
  undefined4 local_f10;
  undefined4 local_f0c;
  undefined4 local_f08;
  undefined4 local_f04;
  undefined4 local_f00;
  undefined4 local_efc;
  undefined4 local_ef8;
  undefined4 local_ef4;
  undefined4 local_ef0;
  undefined4 local_eec;
  undefined4 local_ee8;
  undefined4 local_ee4;
  undefined4 local_ee0;
  undefined4 local_edc;
  undefined4 local_ed8;
  undefined4 local_ed4;
  undefined4 local_ed0;
  undefined4 local_ecc;
  undefined4 local_ec8;
  undefined4 local_ec4;
  undefined4 local_ec0;
  undefined4 local_ebc;
  undefined4 local_eb8;
  undefined4 local_eb4;
  undefined4 local_eb0;
  undefined4 local_eac;
  undefined4 local_ea8;
  undefined4 local_ea4;
  undefined4 local_ea0;
  undefined4 local_e9c;
  undefined4 local_e98;
  undefined4 local_e94;
  undefined4 local_e90;
  undefined4 local_e8c;
  undefined4 local_e88;
  undefined4 local_e84;
  undefined4 local_e80;
  undefined4 local_e7c;
  undefined4 local_e78;
  undefined4 local_e74;
  undefined4 local_e70;
  undefined4 local_e6c;
  undefined4 local_e68;
  undefined4 local_e64;
  undefined4 local_e60;
  undefined4 local_e5c;
  undefined4 local_e58;
  undefined4 local_e54;
  undefined4 local_e50;
  undefined4 local_e4c;
  undefined4 local_e48;
  undefined4 local_e44;
  undefined4 local_e40;
  undefined4 local_e3c;
  undefined4 local_e38;
  undefined4 local_e34;
  undefined4 local_e30;
  undefined4 local_e2c;
  undefined4 local_e28;
  undefined4 local_e24;
  undefined4 local_e20;
  undefined4 local_e1c;
  undefined4 local_e18;
  undefined4 local_e14;
  undefined4 local_e10;
  undefined4 local_e0c;
  undefined4 local_e08;
  undefined4 local_e04;
  undefined4 local_e00;
  undefined4 local_dfc;
  undefined4 local_df8;
  undefined4 local_df4;
  undefined4 local_df0;
  undefined4 local_dec;
  undefined4 local_de8;
  undefined4 local_de4;
  undefined4 local_de0;
  undefined4 local_ddc;
  undefined4 local_dd8;
  undefined4 local_dd4;
  undefined4 local_dd0;
  undefined4 local_dcc;
  undefined4 local_dc8;
  undefined4 local_dc4;
  undefined4 local_dc0;
  undefined4 local_dbc;
  undefined4 local_db8;
  undefined4 local_db4;
  undefined4 local_db0;
  undefined4 local_dac;
  undefined4 local_da8;
  undefined4 local_da4;
  undefined4 local_da0;
  undefined4 local_d9c;
  undefined4 local_d98;
  undefined4 local_d94;
  undefined4 local_d90;
  undefined4 local_d8c;
  undefined4 local_d88;
  undefined4 local_d84;
  undefined4 local_d80;
  undefined4 local_d7c;
  undefined4 local_d78;
  undefined4 local_d74;
  undefined4 local_d70;
  undefined4 local_d6c;
  undefined4 local_d68;
  undefined4 local_d64;
  undefined4 local_d60;
  undefined4 local_d5c;
  undefined4 local_d58;
  undefined4 local_d54;
  undefined4 local_d50;
  undefined4 local_d4c;
  undefined4 local_d48;
  undefined4 local_d44;
  undefined4 local_d40;
  undefined4 local_d3c;
  undefined4 local_d38;
  undefined4 local_d34;
  undefined4 local_d30;
  undefined4 local_d2c;
  undefined4 local_d28;
  undefined4 local_d24;
  undefined4 local_d20;
  undefined4 local_d1c;
  undefined4 local_d18;
  undefined4 local_d14;
  undefined4 local_d10;
  undefined4 local_d0c;
  undefined4 local_d08;
  undefined4 local_d04;
  undefined4 local_d00;
  undefined4 local_cfc;
  undefined4 local_cf8;
  undefined4 local_cf4;
  undefined4 local_cf0;
  undefined4 local_cec;
  undefined4 local_ce8;
  undefined4 local_ce4;
  undefined4 local_ce0;
  undefined4 local_cdc;
  undefined4 local_cd8;
  undefined4 local_cd4;
  undefined4 local_cd0;
  undefined4 local_ccc;
  undefined4 local_cc8;
  undefined4 local_cc4;
  undefined4 local_cc0;
  undefined4 local_cbc;
  undefined4 local_cb8;
  undefined4 local_cb4;
  undefined4 local_cb0;
  undefined4 local_cac;
  undefined4 local_ca8;
  undefined4 local_ca4;
  undefined4 local_ca0;
  undefined4 local_c9c;
  undefined4 local_c98;
  undefined4 local_c94;
  undefined4 local_c90;
  undefined4 local_c8c;
  undefined4 local_c88;
  undefined4 local_c84;
  undefined4 local_c80;
  undefined4 local_c7c;
  undefined4 local_c78;
  undefined4 local_c74;
  undefined4 local_c70;
  undefined4 local_c6c;
  undefined4 local_c68;
  undefined4 local_c64;
  undefined4 local_c60;
  undefined4 local_c5c;
  undefined4 local_c58;
  undefined4 local_c54;
  undefined4 local_c50;
  undefined4 local_c4c;
  undefined4 local_c48;
  undefined4 local_c44;
  undefined4 local_c40;
  undefined4 local_c3c;
  undefined4 local_c38;
  undefined4 local_c34;
  undefined4 local_c30;
  undefined4 local_c2c;
  undefined4 local_c28;
  undefined4 local_c24;
  undefined4 local_c20;
  undefined4 local_c1c;
  undefined4 local_c18;
  undefined4 local_c14;
  undefined4 local_c10;
  undefined4 local_c0c;
  undefined4 local_c08;
  undefined4 local_c04;
  undefined4 local_c00;
  undefined4 local_bfc;
  undefined4 local_bf8;
  undefined4 local_bf4;
  undefined4 local_bf0;
  undefined4 local_bec;
  undefined4 local_be8;
  undefined4 local_be4;
  undefined4 local_be0;
  undefined4 local_bdc;
  undefined4 local_bd8;
  undefined4 local_bd4;
  undefined4 local_bd0;
  undefined4 local_bcc;
  undefined4 local_bc8;
  undefined4 local_bc4;
  undefined4 local_bc0;
  undefined4 local_bbc;
  undefined4 local_bb8;
  undefined4 local_bb4;
  undefined4 local_bb0;
  undefined4 local_bac;
  undefined4 local_ba8;
  undefined4 local_ba4;
  undefined4 local_ba0;
  undefined4 local_b9c;
  undefined4 local_b98;
  undefined4 local_b94;
  undefined4 local_b90;
  undefined4 local_b8c;
  undefined4 local_b88;
  undefined4 local_b84;
  undefined4 local_b80;
  undefined4 local_b7c;
  undefined4 local_b78;
  undefined4 local_b74;
  undefined4 local_b70;
  undefined4 local_b6c;
  undefined4 local_b68;
  undefined4 local_b64;
  undefined4 local_b60;
  undefined4 local_b5c;
  undefined4 local_b58;
  undefined4 local_b54;
  undefined4 local_b50;
  undefined4 local_b4c;
  undefined4 local_b48;
  undefined4 local_b44;
  undefined4 local_b40;
  undefined4 local_b3c;
  undefined4 local_b38;
  undefined4 local_b34;
  undefined4 local_b30;
  undefined4 local_b2c;
  undefined4 local_b28;
  undefined4 local_b24;
  undefined4 local_b20;
  undefined4 local_b1c;
  undefined4 local_b18;
  undefined4 local_b14;
  undefined4 local_b10;
  undefined4 local_b0c;
  undefined4 local_b08;
  undefined4 local_b04;
  undefined4 local_b00;
  undefined4 local_afc;
  undefined4 local_af8;
  undefined4 local_af4;
  undefined4 local_af0;
  undefined4 local_aec;
  undefined4 local_ae8;
  undefined4 local_ae4;
  undefined4 local_ae0;
  undefined4 local_adc;
  undefined4 local_ad8;
  undefined4 local_ad4;
  undefined4 local_ad0;
  undefined4 local_acc;
  undefined4 local_ac8;
  undefined4 local_ac4;
  undefined4 local_ac0;
  undefined4 local_abc;
  undefined4 local_ab8;
  undefined4 local_ab4;
  undefined4 local_ab0;
  undefined4 local_aac;
  undefined4 local_aa8;
  undefined4 local_aa4;
  undefined4 local_aa0;
  undefined4 local_a9c;
  undefined4 local_a98;
  undefined4 local_a94;
  undefined4 local_a90;
  undefined4 local_a8c;
  undefined4 local_a88;
  undefined4 local_a84;
  undefined4 local_a80;
  undefined4 local_a7c;
  undefined4 local_a78;
  undefined4 local_a74;
  undefined4 local_a70;
  undefined4 local_a6c;
  undefined4 local_a68;
  undefined4 local_a64;
  undefined4 local_a60;
  undefined4 local_a5c;
  undefined4 local_a58;
  undefined4 local_a54;
  undefined4 local_a50;
  undefined4 local_a4c;
  undefined4 local_a48;
  undefined4 local_a44;
  undefined4 local_a40;
  undefined4 local_a3c;
  undefined4 local_a38;
  undefined4 local_a34;
  undefined4 local_a30;
  undefined4 local_a2c;
  undefined4 local_a28;
  undefined4 local_a24;
  undefined4 local_a20;
  undefined4 local_a1c;
  undefined4 local_a18;
  undefined4 local_a14;
  undefined4 local_a10;
  undefined4 local_a0c;
  undefined4 local_a08;
  undefined4 local_a04;
  undefined4 local_a00;
  undefined4 local_9fc;
  undefined4 local_9f8;
  undefined4 local_9f4;
  undefined4 local_9f0;
  undefined4 local_9ec;
  undefined4 local_9e8;
  undefined4 local_9e4;
  undefined4 local_9e0;
  undefined4 local_9dc;
  undefined4 local_9d8;
  undefined4 local_9d4;
  undefined4 local_9d0;
  undefined4 local_9cc;
  undefined4 local_9c8;
  undefined4 local_9c4;
  undefined4 local_9c0;
  undefined4 local_9bc;
  undefined4 local_9b8;
  undefined4 local_9b4;
  undefined4 local_9b0;
  undefined4 local_9ac;
  undefined4 local_9a8;
  undefined4 local_9a4;
  undefined4 local_9a0;
  undefined4 local_99c;
  undefined4 local_998;
  undefined4 local_994;
  undefined4 local_990;
  undefined4 local_98c;
  undefined4 local_988;
  undefined4 local_984;
  undefined4 local_980;
  undefined4 local_97c;
  undefined4 local_978;
  undefined4 local_974;
  undefined4 local_970;
  undefined4 local_96c;
  undefined4 local_968;
  undefined4 local_964;
  undefined4 local_960;
  undefined4 local_95c;
  undefined4 local_958;
  undefined4 local_954;
  undefined4 local_950;
  undefined4 local_94c;
  undefined4 local_948;
  undefined4 local_944;
  undefined4 local_940;
  undefined4 local_93c;
  undefined4 local_938;
  undefined4 local_934;
  undefined4 local_930;
  undefined4 local_92c;
  undefined4 local_928;
  undefined4 local_924;
  undefined4 local_920;
  undefined4 local_91c;
  undefined4 local_918;
  undefined4 local_914;
  undefined4 local_910;
  undefined4 local_90c;
  undefined4 local_908;
  undefined4 local_904;
  undefined4 local_900;
  undefined4 local_8fc;
  undefined4 local_8f8;
  undefined4 local_8f4;
  undefined4 local_8f0;
  undefined4 local_8ec;
  undefined4 local_8e8;
  undefined4 local_8e4;
  undefined4 local_8e0;
  undefined4 local_8dc;
  undefined4 local_8d8;
  undefined4 local_8d4;
  undefined4 local_8d0;
  undefined4 local_8cc;
  undefined4 local_8c8;
  undefined4 local_8c4;
  undefined4 local_8c0;
  undefined4 local_8bc;
  undefined4 local_8b8;
  undefined4 local_8b4;
  undefined4 local_8b0;
  undefined4 local_8ac;
  undefined4 local_8a8;
  undefined4 local_8a4;
  undefined4 local_8a0;
  undefined4 local_89c;
  undefined4 local_898;
  undefined4 local_894;
  undefined4 local_890;
  undefined4 local_88c;
  undefined4 local_888;
  undefined4 local_884;
  undefined4 local_880;
  undefined4 local_87c;
  undefined4 local_878;
  undefined4 local_874;
  undefined4 local_870;
  undefined4 local_86c;
  undefined4 local_868;
  undefined4 local_864;
  undefined4 local_860;
  undefined4 local_85c;
  undefined4 local_858;
  undefined4 local_854;
  undefined4 local_850;
  undefined4 local_84c;
  undefined4 local_848;
  undefined4 local_844;
  undefined4 local_840;
  undefined4 local_83c;
  undefined4 local_838;
  undefined4 local_834;
  undefined4 local_830;
  undefined4 local_82c;
  undefined4 local_828;
  undefined4 local_824;
  undefined4 local_820;
  undefined4 local_81c;
  undefined4 local_818;
  undefined4 local_814;
  undefined4 local_810;
  undefined4 local_80c;
  undefined4 local_808;
  undefined4 local_804;
  undefined4 local_800;
  undefined4 local_7fc;
  undefined4 local_7f8;
  undefined4 local_7f4;
  undefined4 local_7f0;
  undefined4 local_7ec;
  undefined4 local_7e8;
  undefined4 local_7e4;
  undefined4 local_7e0;
  undefined4 local_7dc;
  undefined4 local_7d8;
  undefined4 local_7d4;
  undefined4 local_7d0;
  undefined4 local_7cc;
  undefined4 local_7c8;
  undefined4 local_7c4;
  undefined4 local_7c0;
  undefined4 local_7bc;
  undefined4 local_7b8;
  undefined4 local_7b4;
  undefined4 local_7b0;
  undefined4 local_7ac;
  undefined4 local_7a8;
  undefined4 local_7a4;
  undefined4 local_7a0;
  undefined4 local_79c;
  undefined4 local_798;
  undefined4 local_794;
  undefined4 local_790;
  undefined4 local_78c;
  undefined4 local_788;
  undefined4 local_784;
  undefined4 local_780;
  undefined4 local_77c;
  undefined4 local_778;
  undefined4 local_774;
  undefined4 local_770;
  undefined4 local_76c;
  undefined4 local_768;
  undefined4 local_764;
  undefined4 local_760;
  undefined4 local_75c;
  undefined4 local_758;
  undefined4 local_754;
  undefined4 local_750;
  undefined4 local_74c;
  undefined4 local_748;
  undefined4 local_744;
  undefined4 local_740;
  undefined4 local_73c;
  undefined4 local_738;
  undefined4 local_734;
  undefined4 local_730;
  undefined4 local_72c;
  undefined4 local_728;
  undefined4 local_724;
  undefined4 local_720;
  undefined4 local_71c;
  undefined4 local_718;
  undefined4 local_714;
  undefined4 local_710;
  undefined4 local_70c;
  undefined4 local_708;
  undefined4 local_704;
  undefined4 local_700;
  undefined4 local_6fc;
  undefined4 local_6f8;
  undefined4 local_6f4;
  undefined4 local_6f0;
  undefined4 local_6ec;
  undefined4 local_6e8;
  undefined4 local_6e4;
  undefined4 local_6e0;
  undefined4 local_6dc;
  undefined4 local_6d8;
  undefined4 local_6d4;
  undefined4 local_6d0;
  undefined4 local_6cc;
  undefined4 local_6c8;
  undefined4 local_6c4;
  undefined4 local_6c0;
  undefined4 local_6bc;
  undefined4 local_6b8;
  undefined4 local_6b4;
  undefined4 local_6b0;
  undefined4 local_6ac;
  undefined4 local_6a8;
  undefined4 local_6a4;
  undefined4 local_6a0;
  undefined4 local_69c;
  undefined4 local_698;
  undefined4 local_694;
  undefined4 local_690;
  undefined4 local_68c;
  undefined4 local_688;
  undefined4 local_684;
  undefined4 local_680;
  undefined4 local_67c;
  undefined4 local_678;
  undefined4 local_674;
  undefined4 local_670;
  undefined4 local_66c;
  undefined4 local_668;
  undefined4 local_664;
  undefined4 local_660;
  undefined4 local_65c;
  undefined4 local_658;
  undefined4 local_654;
  undefined4 local_650;
  undefined4 local_64c;
  undefined4 local_648;
  undefined4 local_644;
  undefined4 local_640;
  undefined4 local_63c;
  undefined4 local_638;
  undefined4 local_634;
  undefined4 local_630;
  undefined4 local_62c;
  undefined4 local_628;
  undefined4 local_624;
  undefined4 local_620;
  undefined4 local_61c;
  undefined4 local_618;
  undefined4 local_614;
  undefined4 local_610;
  undefined4 local_60c;
  undefined4 local_608;
  undefined4 local_604;
  undefined4 local_600;
  undefined4 local_5fc;
  undefined4 local_5f8;
  undefined4 local_5f4;
  undefined4 local_5f0;
  undefined4 local_5ec;
  undefined4 local_5e8;
  undefined4 local_5e4;
  undefined4 local_5e0;
  undefined4 local_5dc;
  undefined4 local_5d8;
  undefined4 local_5d4;
  undefined4 local_5d0;
  undefined4 local_5cc;
  undefined4 local_5c8;
  undefined4 local_5c4;
  undefined4 local_5c0;
  undefined4 local_5bc;
  undefined4 local_5b8;
  undefined4 local_5b4;
  undefined4 local_5b0;
  undefined4 local_5ac;
  undefined4 local_5a8;
  undefined4 local_5a4;
  undefined4 local_5a0;
  undefined4 local_59c;
  undefined4 local_598;
  undefined4 local_594;
  undefined4 local_590;
  undefined4 local_58c;
  undefined4 local_588;
  undefined4 local_584;
  undefined4 local_580;
  undefined4 local_57c;
  undefined4 local_578;
  undefined4 local_574;
  undefined4 local_570;
  undefined4 local_56c;
  undefined4 local_568;
  undefined4 local_564;
  undefined4 local_560;
  undefined4 local_55c;
  undefined4 local_558;
  undefined4 local_554;
  undefined4 local_550;
  undefined4 local_54c;
  undefined4 local_548;
  undefined4 local_544;
  undefined4 local_540;
  undefined4 local_53c;
  undefined4 local_538;
  undefined4 local_534;
  undefined4 local_530;
  undefined4 local_52c;
  undefined4 local_528;
  undefined4 local_524;
  undefined4 local_520;
  undefined4 local_51c;
  undefined4 local_518;
  undefined4 local_514;
  undefined4 local_510;
  undefined4 local_50c;
  undefined4 local_508;
  undefined4 local_504;
  undefined4 local_500;
  undefined4 local_4fc;
  undefined4 local_4f8;
  undefined4 local_4f4;
  undefined4 local_4f0;
  undefined4 local_4ec;
  undefined4 local_4e8;
  undefined4 local_4e4;
  undefined4 local_4e0;
  undefined4 local_4dc;
  undefined4 local_4d8;
  undefined4 local_4d4;
  undefined4 local_4d0;
  undefined4 local_4cc;
  undefined4 local_4c8;
  undefined4 local_4c4;
  undefined4 local_4c0;
  undefined4 local_4bc;
  undefined4 local_4b8;
  undefined4 local_4b4;
  undefined4 local_4b0;
  undefined4 local_4ac;
  undefined4 local_4a8;
  undefined4 local_4a4;
  undefined4 local_4a0;
  undefined4 local_49c;
  undefined4 local_498;
  undefined4 local_494;
  undefined4 local_490;
  undefined4 local_48c;
  undefined4 local_488;
  undefined4 local_484;
  undefined4 local_480;
  undefined4 local_47c;
  undefined4 local_478;
  undefined4 local_474;
  undefined4 local_470;
  undefined4 local_46c;
  undefined4 local_468;
  undefined4 local_464;
  undefined4 local_460;
  undefined4 local_45c;
  undefined4 local_458;
  undefined4 local_454;
  undefined4 local_450;
  undefined4 local_44c;
  undefined4 local_448;
  undefined4 local_444;
  undefined4 local_440;
  undefined4 local_43c;
  undefined4 local_438;
  undefined4 local_434;
  undefined4 local_430;
  undefined4 local_42c;
  undefined4 local_428;
  undefined4 local_424;
  undefined4 local_420;
  undefined4 local_41c;
  undefined4 local_418;
  undefined4 local_414;
  undefined4 local_410;
  undefined4 local_40c;
  undefined4 local_408;
  undefined4 local_404;
  undefined4 local_400;
  undefined4 local_3fc;
  undefined4 local_3f8;
  undefined4 local_3f4;
  undefined4 local_3f0;
  undefined4 local_3ec;
  undefined4 local_3e8;
  undefined4 local_3e4;
  undefined4 local_3e0;
  undefined4 local_3dc;
  undefined4 local_3d8;
  undefined4 local_3d4;
  undefined4 local_3d0;
  undefined4 local_3cc;
  undefined4 local_3c8;
  undefined4 local_3c4;
  undefined4 local_3c0;
  undefined4 local_3bc;
  undefined4 local_3b8;
  undefined4 local_3b4;
  undefined4 local_3b0;
  undefined4 local_3ac;
  undefined4 local_3a8;
  undefined4 local_3a4;
  undefined4 local_3a0;
  undefined4 local_39c;
  undefined4 local_398;
  undefined4 local_394;
  undefined4 local_390;
  undefined4 local_38c;
  undefined4 local_388;
  undefined4 local_384;
  undefined4 local_380;
  undefined4 local_37c;
  undefined4 local_378;
  undefined4 local_374;
  undefined4 local_370;
  undefined4 local_36c;
  undefined4 local_368;
  undefined4 local_364;
  undefined4 local_360;
  undefined4 local_35c;
  undefined4 local_358;
  undefined4 local_354;
  undefined4 local_350;
  undefined4 local_34c;
  undefined4 local_348;
  undefined4 local_344;
  undefined4 local_340;
  undefined4 local_33c;
  undefined4 local_338;
  undefined4 local_334;
  undefined4 local_330;
  undefined4 local_32c;
  undefined4 local_328;
  undefined4 local_324;
  undefined4 local_320;
  undefined4 local_31c;
  undefined4 local_318;
  undefined4 local_314;
  undefined4 local_310;
  undefined4 local_30c;
  undefined4 local_308;
  undefined4 local_304;
  undefined4 local_300;
  undefined4 local_2fc;
  undefined4 local_2f8;
  undefined4 local_2f4;
  undefined4 local_2f0;
  undefined4 local_2ec;
  undefined4 local_2e8;
  undefined4 local_2e4;
  undefined4 local_2e0;
  undefined4 local_2dc;
  undefined4 local_2d8;
  undefined4 local_2d4;
  undefined4 local_2d0;
  undefined4 local_2cc;
  undefined4 local_2c8;
  undefined4 local_2c4;
  undefined4 local_2c0;
  undefined4 local_2bc;
  undefined4 local_2b8;
  undefined4 local_2b4;
  undefined4 local_2b0;
  undefined4 local_2ac;
  undefined4 local_2a8;
  undefined4 local_2a4;
  undefined4 local_2a0;
  undefined4 local_29c;
  undefined4 local_298;
  undefined4 local_294;
  undefined4 local_290;
  undefined4 local_28c;
  undefined4 local_288;
  undefined4 local_284;
  undefined4 local_280;
  undefined4 local_27c;
  undefined4 local_278;
  undefined4 local_274;
  undefined4 local_270;
  undefined4 local_26c;
  undefined4 local_268;
  undefined4 local_264;
  undefined4 local_260;
  undefined4 local_25c;
  undefined4 local_258;
  undefined4 local_254;
  undefined4 local_250;
  undefined4 local_24c;
  undefined4 local_248;
  undefined4 local_244;
  undefined4 local_240;
  undefined4 local_23c;
  undefined4 local_238;
  undefined4 local_234;
  undefined4 local_230;
  undefined4 local_22c;
  undefined4 local_228;
  undefined4 local_224;
  undefined4 local_220;
  undefined4 local_21c;
  undefined4 local_218;
  undefined4 local_214;
  undefined4 local_210;
  undefined4 local_20c;
  undefined4 local_208;
  undefined4 local_204;
  undefined4 local_200;
  undefined4 local_1fc;
  undefined4 local_1f8;
  undefined4 local_1f4;
  undefined4 local_1f0;
  undefined4 local_1ec;
  undefined4 local_1e8;
  undefined4 local_1e4;
  undefined4 local_1e0;
  undefined4 local_1dc;
  undefined4 local_1d8;
  undefined4 local_1d4;
  undefined4 local_1d0;
  undefined4 local_1cc;
  undefined4 local_1c8;
  undefined4 local_1c4;
  undefined4 local_1c0;
  undefined4 local_1bc;
  undefined4 local_1b8;
  undefined4 local_1b4;
  undefined4 local_1b0;
  undefined4 local_1ac;
  undefined4 local_1a8;
  undefined4 local_1a4;
  undefined4 local_1a0;
  uint local_198;
  undefined4 local_194;
  uint local_190;
  undefined4 local_18c;
  undefined4 local_188;
  undefined4 local_184;
  undefined4 local_180;
  undefined4 local_17c;
  undefined4 local_178;
  longlong *local_170;
  undefined8 uStack_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 local_150;
  longlong *local_148;
  undefined8 local_140;
  longlong local_138;
  longlong *local_130;
  undefined8 local_128;
  ulonglong local_120;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_13c8;
  uVar6 = (uint)&stack0x00000000;
  uVar7 = uVar6 & 0x1ff;
  uVar5 = ((uVar6 & 0x33ff) * (uVar6 & 0x33ff) + 1) % 7;
  local_190 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x256e ^
              ((int)(((uVar7 + 2) * (uVar7 + 1) * uVar7) % 3) >> 1 | 0x2a9eU);
  uVar7 = uVar6 & 0x3ff;
  iVar8 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  if (((ulonglong)&stack0x00000000 & 0x350) == 0) {
    iVar9 = 0;
  }
  else {
    uVar6 = uVar6 & 0x2bf;
    iVar9 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
    iVar9 = ((iVar9 >> 1) - (iVar9 >> 3)) + iVar9 * 0x55555555 >> 0x1e;
  }
  local_198 = 0xcce3U - iVar9 ^
              0xcc73U - (((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e);
  puVar10 = (undefined8 *)0x0;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18266e680) && (_Init_thread_header(&DAT_18266e680), DAT_18266e680 == -1)) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x10);
    local_1398 = (longlong **)puVar4;
    if (puVar4 != (undefined8 *)0x0) {
      *puVar4 = 0;
      puVar4[1] = 0;
      uVar3 = FUN_18060cad0(puVar4);
      *puVar4 = uVar3;
      puVar10 = puVar4;
    }
    DAT_18266e678 = puVar10;
    _Init_thread_footer(&DAT_18266e680);
  }
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001809a10e2(0xda00);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001809a10e2(0xda00);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_1398 = (longlong **)0x0;
  local_1390 = 0x3ff00;
  local_1340 = 0x18190e004;
  local_1388 = 0x18194df04;
  local_1a4 = 0x10000;
  local_1a0 = 0x10000;
  local_1ac = 1;
  local_1a8 = 1;
  local_1b4 = 0xc045;
  local_1b0 = 0xc045;
  local_1bc = 0xc044;
  local_1b8 = 0xc044;
  local_1c4 = 0xc043;
  local_1c0 = 0xc043;
  local_1cc = 0xc041;
  local_1c8 = 0xc041;
  local_1d4 = 0xc040;
  local_1d0 = 0xc040;
  local_1dc = 0xc000;
  local_1d8 = 0xc000;
  local_1e4 = 0x8000;
  local_1e0 = 0x8000;
  local_1ec = 0x4000;
  local_1e8 = 0x4000;
  local_1f4 = 0x2716;
  local_1f0 = 0x2716;
  local_1fc = 0x2715;
  local_1f8 = 0x2715;
  local_204 = 0x2714;
  local_200 = 0x2714;
  local_20c = 0x2713;
  local_208 = 0x2713;
  local_214 = 0x2712;
  local_210 = 0x2712;
  local_21c = 0x2711;
  local_218 = 0x2711;
  local_224 = 10000;
  local_220 = 10000;
  local_22c = 0x612;
  local_228 = 0x612;
  local_234 = 0x611;
  local_230 = 0x611;
  local_23c = 0x610;
  local_238 = 0x610;
  local_244 = 0x60f;
  local_240 = 0x60f;
  local_24c = 0x60e;
  local_248 = 0x60e;
  local_254 = 0x60d;
  local_250 = 0x60d;
  local_25c = 0x60c;
  local_258 = 0x60c;
  local_264 = 0x60b;
  local_260 = 0x60b;
  local_26c = 0x60a;
  local_268 = 0x60a;
  local_274 = 0x609;
  local_270 = 0x609;
  local_27c = 0x608;
  local_278 = 0x608;
  local_284 = 0x607;
  local_280 = 0x607;
  local_28c = 0x606;
  local_288 = 0x606;
  local_294 = 0x605;
  local_290 = 0x605;
  local_29c = 0x604;
  local_298 = 0x604;
  local_2a4 = 0x603;
  local_2a0 = 0x603;
  local_2ac = 0x602;
  local_2a8 = 0x602;
  local_2b4 = 0x601;
  local_2b0 = 0x601;
  local_2bc = 0x600;
  local_2b8 = 0x600;
  local_2c4 = 0x5ff;
  local_2c0 = 0x5ff;
  local_2cc = 0x5fe;
  local_2c8 = 0x5fe;
  local_2d4 = 0x5fd;
  local_2d0 = 0x5fd;
  local_2dc = 0x5fc;
  local_2d8 = 0x5fc;
  local_2e4 = 0x5fb;
  local_2e0 = 0x5fb;
  local_2ec = 0x5fa;
  local_2e8 = 0x5fa;
  local_2f4 = 0x5f9;
  local_2f0 = 0x5f9;
  local_2fc = 0x5f8;
  local_2f8 = 0x5f8;
  local_304 = 0x5f7;
  local_300 = 0x5f7;
  local_30c = 0x5f6;
  local_308 = 0x5f6;
  local_314 = 0x5f5;
  local_310 = 0x5f5;
  local_31c = 0x5f4;
  local_318 = 0x5f4;
  local_324 = 0x5f3;
  local_320 = 0x5f3;
  local_32c = 0x5f2;
  local_328 = 0x5f2;
  local_334 = 0x5f1;
  local_330 = 0x5f1;
  local_33c = 0x5f0;
  local_338 = 0x5f0;
  local_344 = 0x5ef;
  local_340 = 0x5ef;
  local_34c = 0x5ee;
  local_348 = 0x5ee;
  local_354 = 0x5ed;
  local_350 = 0x5ed;
  local_35c = 0x5ec;
  local_358 = 0x5ec;
  local_364 = 0x5eb;
  local_360 = 0x5eb;
  local_36c = 0x5ea;
  local_368 = 0x5ea;
  local_374 = 0x5e9;
  local_370 = 0x5e9;
  local_37c = 0x5e8;
  local_378 = 0x5e8;
  local_384 = 0x5e7;
  local_380 = 0x5e7;
  local_38c = 0x5e6;
  local_388 = 0x5e6;
  local_394 = 0x5e5;
  local_390 = 0x5e5;
  local_39c = 0x5e4;
  local_398 = 0x5e4;
  local_3a4 = 0x5e3;
  local_3a0 = 0x5e3;
  local_3ac = 0x5e2;
  local_3a8 = 0x5e2;
  local_3b4 = 0x5e1;
  local_3b0 = 0x5e1;
  local_3bc = 0x5e0;
  local_3b8 = 0x5e0;
  local_3c4 = 0x5df;
  local_3c0 = 0x5df;
  local_3cc = 0x5de;
  local_3c8 = 0x5de;
  local_3d4 = 0x5dd;
  local_3d0 = 0x5dd;
  local_3dc = 0x5dc;
  local_3d8 = 0x5dc;
  local_3e4 = 0x57c;
  local_3e0 = 0x57c;
  local_3ec = 0x57b;
  local_3e8 = 0x57b;
  local_3f4 = 0x57a;
  local_3f0 = 0x57a;
  local_3fc = 0x579;
  local_3f8 = 0x579;
  local_404 = 0x578;
  local_400 = 0x578;
  local_40c = 0x518;
  local_408 = 0x518;
  local_414 = 0x517;
  local_410 = 0x517;
  local_41c = 0x516;
  local_418 = 0x516;
  local_424 = 0x515;
  local_420 = 0x515;
  local_42c = 0x514;
  local_428 = 0x514;
  local_434 = 0x4c1;
  local_430 = 0x4c1;
  local_43c = 0x4c0;
  local_438 = 0x4c0;
  local_444 = 0x4bf;
  local_440 = 0x4bf;
  local_44c = 0x4be;
  local_448 = 0x4be;
  local_454 = 0x4bd;
  local_450 = 0x4bd;
  local_45c = 0x4bc;
  local_458 = 0x4bc;
  local_464 = 0x4bb;
  local_460 = 0x4bb;
  local_46c = 0x4ba;
  local_468 = 0x4ba;
  local_474 = 0x4b9;
  local_470 = 0x4b9;
  local_47c = 0x4b8;
  local_478 = 0x4b8;
  local_484 = 0x4b7;
  local_480 = 0x4b7;
  local_48c = 0x4b6;
  local_488 = 0x4b6;
  local_494 = 0x4b5;
  local_490 = 0x4b5;
  local_49c = 0x4b4;
  local_498 = 0x4b4;
  local_4a4 = 0x4b3;
  local_4a0 = 0x4b3;
  local_4ac = 0x4b2;
  local_4a8 = 0x4b2;
  local_4b4 = 0x4b1;
  local_4b0 = 0x4b1;
  local_4bc = 0x4b0;
  local_4b8 = 0x4b0;
  local_4c4 = 0x4af;
  local_4c0 = 0x4af;
  local_4cc = 0x4ae;
  local_4c8 = 0x4ae;
  local_4d4 = 0x4ad;
  local_4d0 = 0x4ad;
  local_4dc = 0x4ac;
  local_4d8 = 0x4ac;
  local_4e4 = 0x4ab;
  local_4e0 = 0x4ab;
  local_4ec = 0x4aa;
  local_4e8 = 0x4aa;
  local_4f4 = 0x4a9;
  local_4f0 = 0x4a9;
  local_4fc = 0x4a8;
  local_4f8 = 0x4a8;
  local_504 = 0x4a7;
  local_500 = 0x4a7;
  local_50c = 0x4a6;
  local_508 = 0x4a6;
  local_514 = 0x4a5;
  local_510 = 0x4a5;
  local_51c = 0x4a4;
  local_518 = 0x4a4;
  local_524 = 0x4a3;
  local_520 = 0x4a3;
  local_52c = 0x4a2;
  local_528 = 0x4a2;
  local_534 = 0x4a1;
  local_530 = 0x4a1;
  local_53c = 0x4a0;
  local_538 = 0x4a0;
  local_544 = 0x49f;
  local_540 = 0x49f;
  local_54c = 0x49e;
  local_548 = 0x49e;
  local_554 = 0x49d;
  local_550 = 0x49d;
  local_55c = 0x49c;
  local_558 = 0x49c;
  local_564 = 0x49b;
  local_560 = 0x49b;
  local_56c = 0x49a;
  local_568 = 0x49a;
  local_574 = 0x499;
  local_570 = 0x499;
  local_57c = 0x498;
  local_578 = 0x498;
  local_584 = 0x497;
  local_580 = 0x497;
  local_58c = 0x496;
  local_588 = 0x496;
  local_594 = 0x495;
  local_590 = 0x495;
  local_59c = 0x494;
  local_598 = 0x494;
  local_5a4 = 0x493;
  local_5a0 = 0x493;
  local_5ac = 0x492;
  local_5a8 = 0x492;
  local_5b4 = 0x491;
  local_5b0 = 0x491;
  local_5bc = 0x490;
  local_5b8 = 0x490;
  local_5c4 = 0x48f;
  local_5c0 = 0x48f;
  local_5cc = 0x48e;
  local_5c8 = 0x48e;
  local_5d4 = 0x48d;
  local_5d0 = 0x48d;
  local_5dc = 0x48c;
  local_5d8 = 0x48c;
  local_5e4 = 0x48b;
  local_5e0 = 0x48b;
  local_5ec = 0x48a;
  local_5e8 = 0x48a;
  local_5f4 = 0x489;
  local_5f0 = 0x489;
  local_5fc = 0x488;
  local_5f8 = 0x488;
  local_604 = 0x487;
  local_600 = 0x487;
  local_60c = 0x486;
  local_608 = 0x486;
  local_614 = 0x485;
  local_610 = 0x485;
  local_61c = 0x484;
  local_618 = 0x484;
  local_624 = 0x483;
  local_620 = 0x483;
  local_62c = 0x482;
  local_628 = 0x482;
  local_634 = 0x481;
  local_630 = 0x481;
  local_63c = 0x480;
  local_638 = 0x480;
  local_644 = 0x47f;
  local_640 = 0x47f;
  local_64c = 0x47e;
  local_648 = 0x47e;
  local_654 = 0x47d;
  local_650 = 0x47d;
  local_65c = 0x47c;
  local_658 = 0x47c;
  local_664 = 0x47b;
  local_660 = 0x47b;
  local_66c = 0x47a;
  local_668 = 0x47a;
  local_674 = 0x479;
  local_670 = 0x479;
  local_67c = 0x478;
  local_678 = 0x478;
  local_684 = 0x477;
  local_680 = 0x477;
  local_68c = 0x476;
  local_688 = 0x476;
  local_694 = 0x475;
  local_690 = 0x475;
  local_69c = 0x474;
  local_698 = 0x474;
  local_6a4 = 0x473;
  local_6a0 = 0x473;
  local_6ac = 0x472;
  local_6a8 = 0x472;
  local_6b4 = 0x471;
  local_6b0 = 0x471;
  local_6bc = 0x470;
  local_6b8 = 0x470;
  local_6c4 = 0x46f;
  local_6c0 = 0x46f;
  local_6cc = 0x46e;
  local_6c8 = 0x46e;
  local_6d4 = 0x46d;
  local_6d0 = 0x46d;
  local_6dc = 0x46c;
  local_6d8 = 0x46c;
  local_6e4 = 0x46b;
  local_6e0 = 0x46b;
  local_6ec = 0x46a;
  local_6e8 = 0x46a;
  local_6f4 = 0x469;
  local_6f0 = 0x469;
  local_6fc = 0x468;
  local_6f8 = 0x468;
  local_704 = 0x467;
  local_700 = 0x467;
  local_70c = 0x466;
  local_708 = 0x466;
  local_714 = 0x465;
  local_710 = 0x465;
  local_71c = 0x464;
  local_718 = 0x464;
  local_724 = 0x463;
  local_720 = 0x463;
  local_72c = 0x462;
  local_728 = 0x462;
  local_734 = 0x461;
  local_730 = 0x461;
  local_73c = 0x460;
  local_738 = 0x460;
  local_744 = 0x45f;
  local_740 = 0x45f;
  local_74c = 0x45e;
  local_748 = 0x45e;
  local_754 = 0x45d;
  local_750 = 0x45d;
  local_75c = 0x45c;
  local_758 = 0x45c;
  local_764 = 0x45b;
  local_760 = 0x45b;
  local_76c = 0x45a;
  local_768 = 0x45a;
  local_774 = 0x459;
  local_770 = 0x459;
  local_77c = 0x458;
  local_778 = 0x458;
  local_784 = 0x457;
  local_780 = 0x457;
  local_78c = 0x456;
  local_788 = 0x456;
  local_794 = 0x455;
  local_790 = 0x455;
  local_79c = 0x454;
  local_798 = 0x454;
  local_7a4 = 0x453;
  local_7a0 = 0x453;
  local_7ac = 0x452;
  local_7a8 = 0x452;
  local_7b4 = 0x451;
  local_7b0 = 0x451;
  local_7bc = 0x450;
  local_7b8 = 0x450;
  local_7c4 = 0x44f;
  local_7c0 = 0x44f;
  local_7cc = 0x44e;
  local_7c8 = 0x44e;
  local_7d4 = 0x44d;
  local_7d0 = 0x44d;
  local_7dc = 0x44c;
  local_7d8 = 0x44c;
  local_7e4 = 1099;
  local_7e0 = 1099;
  local_7ec = 0x44a;
  local_7e8 = 0x44a;
  local_7f4 = 0x449;
  local_7f0 = 0x449;
  local_7fc = 0x448;
  local_7f8 = 0x448;
  local_804 = 0x447;
  local_800 = 0x447;
  local_80c = 0x446;
  local_808 = 0x446;
  local_814 = 0x445;
  local_810 = 0x445;
  local_81c = 0x444;
  local_818 = 0x444;
  local_824 = 0x443;
  local_820 = 0x443;
  local_82c = 0x442;
  local_828 = 0x442;
  local_834 = 0x441;
  local_830 = 0x441;
  local_83c = 0x440;
  local_838 = 0x440;
  local_844 = 0x43f;
  local_840 = 0x43f;
  local_84c = 0x43e;
  local_848 = 0x43e;
  local_854 = 0x43d;
  local_850 = 0x43d;
  local_85c = 0x43c;
  local_858 = 0x43c;
  local_864 = 0x43b;
  local_860 = 0x43b;
  local_86c = 0x43a;
  local_868 = 0x43a;
  local_874 = 0x439;
  local_870 = 0x439;
  local_87c = 0x438;
  local_878 = 0x438;
  local_884 = 0x437;
  local_880 = 0x437;
  local_88c = 0x436;
  local_888 = 0x436;
  local_894 = 0x435;
  local_890 = 0x435;
  local_89c = 0x434;
  local_898 = 0x434;
  local_8a4 = 0x433;
  local_8a0 = 0x433;
  local_8ac = 0x432;
  local_8a8 = 0x432;
  local_8b4 = 0x431;
  local_8b0 = 0x431;
  local_8bc = 0x430;
  local_8b8 = 0x430;
  local_8c4 = 0x42f;
  local_8c0 = 0x42f;
  local_8cc = 0x42e;
  local_8c8 = 0x42e;
  local_8d4 = 0x42d;
  local_8d0 = 0x42d;
  local_8dc = 0x42c;
  local_8d8 = 0x42c;
  local_8e4 = 0x42b;
  local_8e0 = 0x42b;
  local_8ec = 0x42a;
  local_8e8 = 0x42a;
  local_8f4 = 0x429;
  local_8f0 = 0x429;
  local_8fc = 0x428;
  local_8f8 = 0x428;
  local_904 = 0x427;
  local_900 = 0x427;
  local_90c = 0x426;
  local_908 = 0x426;
  local_914 = 0x425;
  local_910 = 0x425;
  local_91c = 0x424;
  local_918 = 0x424;
  local_924 = 0x423;
  local_920 = 0x423;
  local_92c = 0x422;
  local_928 = 0x422;
  local_934 = 0x421;
  local_930 = 0x421;
  local_93c = 0x420;
  local_938 = 0x420;
  local_944 = 0x41f;
  local_940 = 0x41f;
  local_94c = 0x41e;
  local_948 = 0x41e;
  local_954 = 0x41d;
  local_950 = 0x41d;
  local_95c = 0x41c;
  local_958 = 0x41c;
  local_964 = 0x41b;
  local_960 = 0x41b;
  local_96c = 0x41a;
  local_968 = 0x41a;
  local_974 = 0x419;
  local_970 = 0x419;
  local_97c = 0x418;
  local_978 = 0x418;
  local_984 = 0x417;
  local_980 = 0x417;
  local_98c = 0x416;
  local_988 = 0x416;
  local_994 = 0x415;
  local_990 = 0x415;
  local_99c = 0x414;
  local_998 = 0x414;
  local_9a4 = 0x413;
  local_9a0 = 0x413;
  local_9ac = 0x412;
  local_9a8 = 0x412;
  local_9b4 = 0x411;
  local_9b0 = 0x411;
  local_9bc = 0x410;
  local_9b8 = 0x410;
  local_9c4 = 0x40f;
  local_9c0 = 0x40f;
  local_9cc = 0x40e;
  local_9c8 = 0x40e;
  local_9d4 = 0x40d;
  local_9d0 = 0x40d;
  local_9dc = 0x40c;
  local_9d8 = 0x40c;
  local_9e4 = 0x40b;
  local_9e0 = 0x40b;
  local_9ec = 0x40a;
  local_9e8 = 0x40a;
  local_9f4 = 0x409;
  local_9f0 = 0x409;
  local_9fc = 0x408;
  local_9f8 = 0x408;
  local_a04 = 0x407;
  local_a00 = 0x407;
  local_a0c = 0x406;
  local_a08 = 0x406;
  local_a14 = 0x405;
  local_a10 = 0x405;
  local_a1c = 0x404;
  local_a18 = 0x404;
  local_a24 = 0x403;
  local_a20 = 0x403;
  local_a2c = 0x402;
  local_a28 = 0x402;
  local_a34 = 0x401;
  local_a30 = 0x401;
  local_a3c = 0x400;
  local_a38 = 0x400;
  local_a44 = 0x3ff;
  local_a40 = 0x3ff;
  local_a4c = 0x3fe;
  local_a48 = 0x3fe;
  local_a54 = 0x3fd;
  local_a50 = 0x3fd;
  local_a5c = 0x3fc;
  local_a58 = 0x3fc;
  local_a64 = 0x3fb;
  local_a60 = 0x3fb;
  local_a6c = 0x3fa;
  local_a68 = 0x3fa;
  local_a74 = 0x3f9;
  local_a70 = 0x3f9;
  local_a7c = 0x3f8;
  local_a78 = 0x3f8;
  local_a84 = 0x3f7;
  local_a80 = 0x3f7;
  local_a8c = 0x3f6;
  local_a88 = 0x3f6;
  local_a94 = 0x3f5;
  local_a90 = 0x3f5;
  local_a9c = 0x3f4;
  local_a98 = 0x3f4;
  local_aa4 = 0x3f3;
  local_aa0 = 0x3f3;
  local_aac = 0x3f2;
  local_aa8 = 0x3f2;
  local_ab4 = 0x3f1;
  local_ab0 = 0x3f1;
  local_abc = 0x3f0;
  local_ab8 = 0x3f0;
  local_ac4 = 0x3ef;
  local_ac0 = 0x3ef;
  local_acc = 0x3ee;
  local_ac8 = 0x3ee;
  local_ad4 = 0x3ed;
  local_ad0 = 0x3ed;
  local_adc = 0x3ec;
  local_ad8 = 0x3ec;
  local_ae4 = 0x3eb;
  local_ae0 = 0x3eb;
  local_aec = 0x3ea;
  local_ae8 = 0x3ea;
  local_af4 = 0x3e9;
  local_af0 = 0x3e9;
  local_afc = 1000;
  local_af8 = 1000;
  local_b04 = 0x3cf;
  local_b00 = 0x3cf;
  local_b0c = 0x3ce;
  local_b08 = 0x3ce;
  local_b14 = 0x3cd;
  local_b10 = 0x3cd;
  local_b1c = 0x3cc;
  local_b18 = 0x3cc;
  local_b24 = 0x3cb;
  local_b20 = 0x3cb;
  local_b2c = 0x3ca;
  local_b28 = 0x3ca;
  local_b34 = 0x3c9;
  local_b30 = 0x3c9;
  local_b3c = 0x3c8;
  local_b38 = 0x3c8;
  local_b44 = 0x3c7;
  local_b40 = 0x3c7;
  local_b4c = 0x3c6;
  local_b48 = 0x3c6;
  local_b54 = 0x3c5;
  local_b50 = 0x3c5;
  local_b5c = 0x3c4;
  local_b58 = 0x3c4;
  local_b64 = 0x3c3;
  local_b60 = 0x3c3;
  local_b6c = 0x3c2;
  local_b68 = 0x3c2;
  local_b74 = 0x3c1;
  local_b70 = 0x3c1;
  local_b7c = 0x3c0;
  local_b78 = 0x3c0;
  local_b84 = 0x3bf;
  local_b80 = 0x3bf;
  local_b8c = 0x3be;
  local_b88 = 0x3be;
  local_b94 = 0x3bd;
  local_b90 = 0x3bd;
  local_b9c = 0x3bc;
  local_b98 = 0x3bc;
  local_ba4 = 0x3bb;
  local_ba0 = 0x3bb;
  local_bac = 0x3ba;
  local_ba8 = 0x3ba;
  local_bb4 = 0x3b9;
  local_bb0 = 0x3b9;
  local_bbc = 0x3b8;
  local_bb8 = 0x3b8;
  local_bc4 = 0x3b7;
  local_bc0 = 0x3b7;
  local_bcc = 0x3b6;
  local_bc8 = 0x3b6;
  local_bd4 = 0x3b5;
  local_bd0 = 0x3b5;
  local_bdc = 0x3b4;
  local_bd8 = 0x3b4;
  local_be4 = 0x3b3;
  local_be0 = 0x3b3;
  local_bec = 0x3b2;
  local_be8 = 0x3b2;
  local_bf4 = 0x3b1;
  local_bf0 = 0x3b1;
  local_bfc = 0x3b0;
  local_bf8 = 0x3b0;
  local_c04 = 0x3af;
  local_c00 = 0x3af;
  local_c0c = 0x3ae;
  local_c08 = 0x3ae;
  local_c14 = 0x3ad;
  local_c10 = 0x3ad;
  local_c1c = 0x3ac;
  local_c18 = 0x3ac;
  local_c24 = 0x3ab;
  local_c20 = 0x3ab;
  local_c2c = 0x3aa;
  local_c28 = 0x3aa;
  local_c34 = 0x3a9;
  local_c30 = 0x3a9;
  local_c3c = 0x3a8;
  local_c38 = 0x3a8;
  local_c44 = 0x3a7;
  local_c40 = 0x3a7;
  local_c4c = 0x3a6;
  local_c48 = 0x3a6;
  local_c54 = 0x3a5;
  local_c50 = 0x3a5;
  local_c5c = 0x3a4;
  local_c58 = 0x3a4;
  local_c64 = 0x3a3;
  local_c60 = 0x3a3;
  local_c6c = 0x3a2;
  local_c68 = 0x3a2;
  local_c74 = 0x3a1;
  local_c70 = 0x3a1;
  local_c7c = 0x3a0;
  local_c78 = 0x3a0;
  local_c84 = 0x39f;
  local_c80 = 0x39f;
  local_c8c = 0x39e;
  local_c88 = 0x39e;
  local_c94 = 0x39d;
  local_c90 = 0x39d;
  local_c9c = 0x39c;
  local_c98 = 0x39c;
  local_ca4 = 0x39b;
  local_ca0 = 0x39b;
  local_cac = 0x39a;
  local_ca8 = 0x39a;
  local_cb4 = 0x399;
  local_cb0 = 0x399;
  local_cbc = 0x397;
  local_cb8 = 0x397;
  local_cc4 = 0x396;
  local_cc0 = 0x396;
  local_ccc = 0x395;
  local_cc8 = 0x395;
  local_cd4 = 0x394;
  local_cd0 = 0x394;
  local_cdc = 0x393;
  local_cd8 = 0x393;
  local_ce4 = 0x392;
  local_ce0 = 0x392;
  local_cec = 0x391;
  local_ce8 = 0x391;
  local_cf4 = 0x390;
  local_cf0 = 0x390;
  local_cfc = 0x38f;
  local_cf8 = 0x38f;
  local_d04 = 0x38e;
  local_d00 = 0x38e;
  local_d0c = 0x38d;
  local_d08 = 0x38d;
  local_d14 = 0x38c;
  local_d10 = 0x38c;
  local_d1c = 0x38b;
  local_d18 = 0x38b;
  local_d24 = 0x38a;
  local_d20 = 0x38a;
  local_d2c = 0x389;
  local_d28 = 0x389;
  local_d34 = 0x388;
  local_d30 = 0x388;
  local_d3c = 0x387;
  local_d38 = 0x387;
  local_d44 = 0x386;
  local_d40 = 0x386;
  local_d4c = 0x385;
  local_d48 = 0x385;
  local_d54 = 900;
  local_d50 = 900;
  local_d5c = 0x341;
  local_d58 = 0x341;
  local_d64 = 0x340;
  local_d60 = 0x340;
  local_d6c = 0x33f;
  local_d68 = 0x33f;
  local_d74 = 0x33e;
  local_d70 = 0x33e;
  local_d7c = 0x33d;
  local_d78 = 0x33d;
  local_d84 = 0x33c;
  local_d80 = 0x33c;
  local_d8c = 0x33b;
  local_d88 = 0x33b;
  local_d94 = 0x33a;
  local_d90 = 0x33a;
  local_d9c = 0x339;
  local_d98 = 0x339;
  local_da4 = 0x338;
  local_da0 = 0x338;
  local_dac = 0x337;
  local_da8 = 0x337;
  local_db4 = 0x336;
  local_db0 = 0x336;
  local_dbc = 0x335;
  local_db8 = 0x335;
  local_dc4 = 0x334;
  local_dc0 = 0x334;
  local_dcc = 0x333;
  local_dc8 = 0x333;
  local_dd4 = 0x332;
  local_dd0 = 0x332;
  local_ddc = 0x331;
  local_dd8 = 0x331;
  local_de4 = 0x330;
  local_de0 = 0x330;
  local_dec = 0x32f;
  local_de8 = 0x32f;
  local_df4 = 0x32e;
  local_df0 = 0x32e;
  local_dfc = 0x32d;
  local_df8 = 0x32d;
  local_e04 = 0x32c;
  local_e00 = 0x32c;
  local_e0c = 0x32b;
  local_e08 = 0x32b;
  local_e14 = 0x32a;
  local_e10 = 0x32a;
  local_e1c = 0x329;
  local_e18 = 0x329;
  local_e24 = 0x328;
  local_e20 = 0x328;
  local_e2c = 0x327;
  local_e28 = 0x327;
  local_e34 = 0x326;
  local_e30 = 0x326;
  local_e3c = 0x325;
  local_e38 = 0x325;
  local_e44 = 0x324;
  local_e40 = 0x324;
  local_e4c = 0x322;
  local_e48 = 0x322;
  local_e54 = 0x321;
  local_e50 = 0x321;
  local_e5c = 800;
  local_e58 = 800;
  local_e64 = 0x2c5;
  local_e60 = 0x2c5;
  local_e6c = 0x2c4;
  local_e68 = 0x2c4;
  local_e74 = 0x2c3;
  local_e70 = 0x2c3;
  local_e7c = 0x2c2;
  local_e78 = 0x2c2;
  local_e84 = 0x2c1;
  local_e80 = 0x2c1;
  local_e8c = 0x2c0;
  local_e88 = 0x2c0;
  local_e94 = 0x2bf;
  local_e90 = 0x2bf;
  local_e9c = 0x2be;
  local_e98 = 0x2be;
  local_ea4 = 0x2bd;
  local_ea0 = 0x2bd;
  local_eac = 700;
  local_ea8 = 700;
  local_eb4 = 0x260;
  local_eb0 = 0x260;
  local_ebc = 0x25f;
  local_eb8 = 0x25f;
  local_ec4 = 0x25e;
  local_ec0 = 0x25e;
  local_ecc = 0x25d;
  local_ec8 = 0x25d;
  local_ed4 = 0x25c;
  local_ed0 = 0x25c;
  local_edc = 0x25b;
  local_ed8 = 0x25b;
  local_ee4 = 0x25a;
  local_ee0 = 0x25a;
  local_eec = 0x259;
  local_ee8 = 0x259;
  local_ef4 = 600;
  local_ef0 = 600;
  local_efc = 0x1fb;
  local_ef8 = 0x1fb;
  local_f04 = 0x1fa;
  local_f00 = 0x1fa;
  local_f0c = 0x1f9;
  local_f08 = 0x1f9;
  local_f14 = 0x1f8;
  local_f10 = 0x1f8;
  local_f1c = 0x1f7;
  local_f18 = 0x1f7;
  local_f24 = 0x1f6;
  local_f20 = 0x1f6;
  local_f2c = 0x1f5;
  local_f28 = 0x1f5;
  local_f34 = 500;
  local_f30 = 500;
  local_f3c = 0x1a8;
  local_f38 = 0x1a8;
  local_f44 = 0x1a7;
  local_f40 = 0x1a7;
  local_f4c = 0x1a6;
  local_f48 = 0x1a6;
  local_f54 = 0x1a5;
  local_f50 = 0x1a5;
  local_f5c = 0x1a4;
  local_f58 = 0x1a4;
  local_f64 = 0x1a3;
  local_f60 = 0x1a3;
  local_f6c = 0x1a2;
  local_f68 = 0x1a2;
  local_f74 = 0x1a1;
  local_f70 = 0x1a1;
  local_f7c = 0x1a0;
  local_f78 = 0x1a0;
  local_f84 = 0x19f;
  local_f80 = 0x19f;
  local_f8c = 0x19e;
  local_f88 = 0x19e;
  local_f94 = 0x19d;
  local_f90 = 0x19d;
  local_f9c = 0x19c;
  local_f98 = 0x19c;
  local_fa4 = 0x19b;
  local_fa0 = 0x19b;
  local_fac = 0x19a;
  local_fa8 = 0x19a;
  local_fb4 = 0x199;
  local_fb0 = 0x199;
  local_fbc = 0x198;
  local_fb8 = 0x198;
  local_fc4 = 0x197;
  local_fc0 = 0x197;
  local_fcc = 0x196;
  local_fc8 = 0x196;
  local_fd4 = 0x195;
  local_fd0 = 0x195;
  local_fdc = 0x194;
  local_fd8 = 0x194;
  local_fe4 = 0x193;
  local_fe0 = 0x193;
  local_fec = 0x192;
  local_fe8 = 0x192;
  local_ff4 = 0x191;
  local_ff0 = 0x191;
  local_ffc = 400;
  local_ff8 = 400;
  local_1004 = 0x183;
  local_1000 = 0x183;
  local_100c = 0x182;
  local_1008 = 0x182;
  local_1014 = 0x181;
  local_1010 = 0x181;
  local_101c = 0x180;
  local_1018 = 0x180;
  local_1024 = 0x17f;
  local_1020 = 0x17f;
  local_102c = 0x17e;
  local_1028 = 0x17e;
  local_1034 = 0x17d;
  local_1030 = 0x17d;
  local_103c = 0x17c;
  local_1038 = 0x17c;
  local_1044 = 0x17b;
  local_1040 = 0x17b;
  local_104c = 0x17a;
  local_1048 = 0x17a;
  local_1054 = 0x179;
  local_1050 = 0x179;
  local_105c = 0x178;
  local_1058 = 0x178;
  local_1064 = 0x177;
  local_1060 = 0x177;
  local_106c = 0x176;
  local_1068 = 0x176;
  local_1074 = 0x175;
  local_1070 = 0x175;
  local_107c = 0x174;
  local_1078 = 0x174;
  local_1084 = 0x173;
  local_1080 = 0x173;
  local_108c = 0x172;
  local_1088 = 0x172;
  local_1094 = 0x171;
  local_1090 = 0x171;
  local_109c = 0x170;
  local_1098 = 0x170;
  local_10a4 = 0x16f;
  local_10a0 = 0x16f;
  local_10ac = 0x16e;
  local_10a8 = 0x16e;
  local_10b4 = 0x16d;
  local_10b0 = 0x16d;
  local_10bc = 0x16c;
  local_10b8 = 0x16c;
  local_10c4 = 0x16b;
  local_10c0 = 0x16b;
  local_10cc = 0x16a;
  local_10c8 = 0x16a;
  local_10d4 = 0x169;
  local_10d0 = 0x169;
  local_10dc = 0x168;
  local_10d8 = 0x168;
  local_10e4 = 0x167;
  local_10e0 = 0x167;
  local_10ec = 0x166;
  local_10e8 = 0x166;
  local_10f4 = 0x165;
  local_10f0 = 0x165;
  local_10fc = 0x164;
  local_10f8 = 0x164;
  local_1104 = 0x163;
  local_1100 = 0x163;
  local_110c = 0x162;
  local_1108 = 0x162;
  local_1114 = 0x161;
  local_1110 = 0x161;
  local_111c = 0x160;
  local_1118 = 0x160;
  local_1124 = 0x15f;
  local_1120 = 0x15f;
  local_112c = 0x15e;
  local_1128 = 0x15e;
  local_1134 = 0x15d;
  local_1130 = 0x15d;
  local_113c = 0x15c;
  local_1138 = 0x15c;
  local_1144 = 0x15b;
  local_1140 = 0x15b;
  local_114c = 0x15a;
  local_1148 = 0x15a;
  local_1154 = 0x159;
  local_1150 = 0x159;
  local_115c = 0x158;
  local_1158 = 0x158;
  local_1164 = 0x157;
  local_1160 = 0x157;
  local_116c = 0x156;
  local_1168 = 0x156;
  local_1174 = 0x155;
  local_1170 = 0x155;
  local_117c = 0x154;
  local_1178 = 0x154;
  local_1184 = 0x153;
  local_1180 = 0x153;
  local_118c = 0x152;
  local_1188 = 0x152;
  local_1194 = 0x151;
  local_1190 = 0x151;
  local_119c = 0x150;
  local_1198 = 0x150;
  local_11a4 = 0x14f;
  local_11a0 = 0x14f;
  local_11ac = 0x14e;
  local_11a8 = 0x14e;
  local_11b4 = 0x14d;
  local_11b0 = 0x14d;
  local_11bc = 0x14c;
  local_11b8 = 0x14c;
  local_11c4 = 0x14b;
  local_11c0 = 0x14b;
  local_11cc = 0x14a;
  local_11c8 = 0x14a;
  local_11d4 = 0x149;
  local_11d0 = 0x149;
  local_11dc = 0x148;
  local_11d8 = 0x148;
  local_11e4 = 0x147;
  local_11e0 = 0x147;
  local_11ec = 0x146;
  local_11e8 = 0x146;
  local_11f4 = 0x145;
  local_11f0 = 0x145;
  local_11fc = 0x144;
  local_11f8 = 0x144;
  local_1204 = 0x143;
  local_1200 = 0x143;
  local_120c = 0x142;
  local_1208 = 0x142;
  local_1214 = 0x141;
  local_1210 = 0x141;
  local_121c = 0x140;
  local_1218 = 0x140;
  local_1224 = 0x13f;
  local_1220 = 0x13f;
  local_122c = 0x13e;
  local_1228 = 0x13e;
  local_1234 = 0x13d;
  local_1230 = 0x13d;
  local_123c = 0x13c;
  local_1238 = 0x13c;
  local_1244 = 0x13b;
  local_1240 = 0x13b;
  local_124c = 0x13a;
  local_1248 = 0x13a;
  local_1254 = 0x139;
  local_1250 = 0x139;
  local_125c = 0x138;
  local_1258 = 0x138;
  local_1264 = 0x137;
  local_1260 = 0x137;
  local_126c = 0x136;
  local_1268 = 0x136;
  local_1274 = 0x135;
  local_1270 = 0x135;
  local_127c = 0x134;
  local_1278 = 0x134;
  local_1284 = 0x133;
  local_1280 = 0x133;
  local_128c = 0x132;
  local_1288 = 0x132;
  local_1294 = 0x131;
  local_1290 = 0x131;
  local_129c = 0x130;
  local_1298 = 0x130;
  local_12a4 = 0x12f;
  local_12a0 = 0x12f;
  local_12ac = 0x12e;
  local_12a8 = 0x12e;
  local_12b4 = 0x12d;
  local_12b0 = 0x12d;
  local_12bc = 300;
  local_12b8 = 300;
  local_12c4 = 0xcb;
  local_12c0 = 0xcb;
  local_12cc = 0xca;
  local_12c8 = 0xca;
  local_12d4 = 0xc9;
  local_12d0 = 0xc9;
  local_12dc = 200;
  local_12d8 = 200;
  local_12e4 = 0x71;
  local_12e0 = 0x71;
  local_12ec = 0x70;
  local_12e8 = 0x70;
  local_12f4 = 0x6f;
  local_12f0 = 0x6f;
  local_12fc = 0x6e;
  local_12f8 = 0x6e;
  local_1304 = 0x6d;
  local_1300 = 0x6d;
  local_130c = 0x6c;
  local_1308 = 0x6c;
  local_1314 = 0x6b;
  local_1310 = 0x6b;
  local_131c = 0x6a;
  local_1318 = 0x6a;
  local_1324 = 0x69;
  local_1320 = 0x69;
  local_132c = 0x68;
  local_1328 = 0x68;
  local_178 = 0x67;
  local_1330 = 0x67;
  local_180 = 0x66;
  local_17c = 0x66;
  local_188 = 0x65;
  local_184 = 0x65;
  local_194 = 100;
  local_18c = 100;
  local_1370 = (longlong *)0x0;
  lStack_1368 = 0;
  local_1360 = 0;
  local_1358 = 0;
  local_1350 = 0;
  local_1370 = (longlong *)FUN_1811316e0(0x10);
  local_68 = 0;
  uStack_60 = 0;
  *local_1370 = 0;
  local_1370[1] = 0;
  *local_1370 = (longlong)&local_1370;
  local_1390 = 0x6300000063;
  local_70 = 0x6300000063;
  if ((((int)local_1358 + (int)local_1350 & 1U) == 0) && (local_1360 <= local_1350 + 2U >> 1)) {
    FUN_1807ec1f0(&local_1370,1);
  }
  local_1358 = local_1358 & local_1360 * 2 - 1;
  uVar1 = local_1350 + local_1358;
  lVar2 = (local_1360 - 1 & uVar1 >> 1) * 8;
  if (*(longlong *)(lStack_1368 + lVar2) == 0) {
    uVar3 = FUN_1811316e0(0x10);
    *(undefined8 *)(lStack_1368 + lVar2) = uVar3;
  }
  *(undefined8 *)(*(longlong *)(lStack_1368 + lVar2) + (ulonglong)((uint)uVar1 & 1) * 8) =
       0x6300000063;
  local_1350 = local_1350 + 1;
  local_1398 = &local_170;
  local_170 = (longlong *)0x0;
  uStack_168 = 0;
  local_160 = 0;
  local_158 = 0;
  local_150 = 0;
  local_170 = (longlong *)FUN_1811316e0(0x10);
  local_58 = 0;
  uStack_50 = 0;
  *local_170 = 0;
  local_170[1] = 0;
  *local_170 = (longlong)&local_170;
  local_138 = local_1350 + local_1358;
  local_140 = 0;
  local_148 = local_1370;
  local_128 = 0;
  local_120 = local_1358;
  local_130 = local_1370;
  FUN_1807ea970(&local_170,&local_130,&local_148);
  FUN_1807ec3f0(&local_1370);
                    /* WARNING: Subroutine does not return */
  free(local_1370);
}



############ FUN_ 1809cabc0 size=1025 ############

void FUN_1809cabc0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar4 = ((longlong)puVar10 - lVar6) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)puVar10 - lVar6),8);
  uVar9 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  lVar4 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar5 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  if (param_2 <= uVar5) {
    if (param_2 <= uVar9) {
      if (param_2 != uVar9) {
        puVar7 = (undefined8 *)(param_2 * 0x150 + lVar6);
        for (puVar8 = puVar7; puVar8 != puVar10; puVar8 = puVar8 + 0x2a) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (longlong)puVar7;
      }
      return;
    }
    for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d3050(puVar10);
      puVar10 = puVar10 + 0x2a;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0xc30c30c30c30c3 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar2 = param_2;
  if ((uVar5 <= 0xc30c30c30c30c3 - (uVar5 >> 1)) && (uVar2 = (uVar5 >> 1) + uVar5, uVar2 < param_2))
  {
    uVar2 = param_2;
  }
  uVar5 = uVar2 * 0x150;
  if (uVar2 < 0xc30c30c30c30c4) {
    if (uVar5 < 0x1000) {
      if (uVar5 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar5);
      }
      goto LAB_1809cacdd;
    }
  }
  else {
    uVar5 = 0xffffffffffffffff;
  }
  uVar3 = uVar5 + 0x27;
  if (uVar3 <= uVar5) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar3);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1809cacdd:
  puVar8 = puVar10 + uVar9 * 0x2a;
  for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1809d3050(puVar8);
    puVar8 = puVar8 + 0x2a;
  }
  lVar4 = param_1[1];
  puVar8 = puVar10;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x150) {
    *puVar8 = license_services::LsArrayEntryWire::vftable;
    puVar8[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar8[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar8 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar8 + 5) = *(undefined1 *)(lVar6 + 0x28);
    FUN_1805a4070(puVar8 + 6,lVar6 + 0x30);
    FUN_1805a4070(puVar8 + 10,lVar6 + 0x50);
    FUN_1805a4070(puVar8 + 0xe,lVar6 + 0x70);
    FUN_1805a4070(puVar8 + 0x12,lVar6 + 0x90);
    FUN_1805b46a0(puVar8 + 0x16,lVar6 + 0xb0);
    FUN_1805a4070(puVar8 + 0x19,lVar6 + 200);
    *(undefined4 *)(puVar8 + 0x1d) = *(undefined4 *)(lVar6 + 0xe8);
    FUN_1805a4070(puVar8 + 0x1e,lVar6 + 0xf0);
    FUN_18080fe30(puVar8 + 0x22,lVar6 + 0x110);
    FUN_18080fe30(puVar8 + 0x25);
    puVar8[0x28] = *(undefined8 *)(lVar6 + 0x140);
    *(undefined4 *)(puVar8 + 0x29) = *(undefined4 *)(lVar6 + 0x148);
    puVar8 = puVar8 + 0x2a;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x2a);
    param_1[2] = (longlong)(puVar10 + uVar2 * 0x2a);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar10; puVar8 = puVar8 + 0x2a) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  lVar4 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar4 >> 8) - (lVar4 >> 0x3f)) * 0x150)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cafd0 size=1038 ############

void FUN_1809cafd0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar4) / 0x178;
  uVar3 = (param_1[2] - lVar4) / 0x178;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0x178 + lVar4);
        for (puVar9 = puVar8; puVar9 != puVar10; puVar9 = puVar9 + 0x2f) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d39d0(puVar10);
      puVar10 = puVar10 + 0x2f;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0xae4c415c9882b9 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = param_2;
  if ((uVar3 <= 0xae4c415c9882b9 - (uVar3 >> 1)) && (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2))
  {
    uVar5 = param_2;
  }
  uVar3 = uVar5 * 0x178;
  if (uVar5 < 0xae4c415c9882ba) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1809cb0e9;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar6 = uVar3 + 0x27;
  if (uVar6 <= uVar3) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar6);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1809cb0e9:
  puVar9 = puVar10 + uVar2 * 0x2f;
  for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1809d39d0(puVar9);
    puVar9 = puVar9 + 0x2f;
  }
  lVar4 = param_1[1];
  puVar9 = puVar10;
  for (lVar7 = *param_1; lVar7 != lVar4; lVar7 = lVar7 + 0x178) {
    *puVar9 = license_services::LsCertificateChainWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar7 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar7 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar7 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar7 + 0x28);
    FUN_1805a4070(puVar9 + 6,lVar7 + 0x30);
    FUN_1805b46a0(puVar9 + 10,lVar7 + 0x50);
    FUN_1805a4070(puVar9 + 0xd,lVar7 + 0x68);
    FUN_1805a4070(puVar9 + 0x11,lVar7 + 0x88);
    FUN_1805a4070(puVar9 + 0x15,lVar7 + 0xa8);
    FUN_1805a4070(puVar9 + 0x19,lVar7 + 200);
    FUN_1805a4070(puVar9 + 0x1d,lVar7 + 0xe8);
    FUN_1805a4070(puVar9 + 0x21,lVar7 + 0x108);
    FUN_1805a4070(puVar9 + 0x25,lVar7 + 0x128);
    FUN_1805a4070(puVar9 + 0x29);
    puVar9[0x2d] = *(undefined8 *)(lVar7 + 0x168);
    *(undefined4 *)(puVar9 + 0x2e) = *(undefined4 *)(lVar7 + 0x170);
    puVar9 = puVar9 + 0x2f;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x2f);
    param_1[2] = (longlong)(puVar10 + uVar5 * 0x2f);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar10; puVar9 = puVar9 + 0x2f) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x178) * 0x178)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cb3f0 size=877 ############

void FUN_1809cb3f0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar7 - lVar3) / 0x36 + ((longlong)puVar7 - lVar3 >> 0x3f);
  uVar6 = (lVar5 >> 2) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0xd8;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        puVar8 = (undefined8 *)(param_2 * 0xd8 + lVar3);
        for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x1b) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar3 = FUN_1809d5490(&local_res18,puVar7,param_2 - uVar6);
    param_1[1] = lVar3;
    return;
  }
  if (0x12f684bda12f684 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x12f684bda12f684 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0xd8;
  local_res20 = uVar10;
  if (uVar10 < 0x12f684bda12f685) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_1809cb50b;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1809cb50b:
  FUN_1809d5490(&local_res18,puVar7 + uVar6 * 0x1b,param_2 - uVar6);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0xd8) {
    *puVar9 = license_services::LsMachineBindingWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar5 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar5 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar5 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar5 + 0x28);
    *(undefined4 *)((longlong)puVar9 + 0x2c) = *(undefined4 *)(lVar5 + 0x2c);
    FUN_1805b46a0(puVar9 + 6,lVar5 + 0x30);
    *(undefined4 *)(puVar9 + 9) = *(undefined4 *)(lVar5 + 0x48);
    *(undefined4 *)((longlong)puVar9 + 0x4c) = *(undefined4 *)(lVar5 + 0x4c);
    FUN_1805a4070(puVar9 + 10,lVar5 + 0x50);
    FUN_1805a4070(puVar9 + 0xe,lVar5 + 0x70);
    FUN_1805a4070(puVar9 + 0x12,lVar5 + 0x90);
    FUN_18080fe30(puVar9 + 0x16);
    puVar9[0x19] = *(undefined8 *)(lVar5 + 200);
    *(undefined2 *)(puVar9 + 0x1a) = *(undefined2 *)(lVar5 + 0xd0);
    puVar9 = puVar9 + 0x1b;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x1b);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x1b);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x1b) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0xd8) * 0xd8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cb760 size=769 ############

void FUN_1809cb760(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x230;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x230;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x230 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x46) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1808b38a0(puVar7);
      puVar7 = puVar7 + 0x46;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x75075075075075 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x75075075075075 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x230;
  if (uVar10 < 0x75075075075076) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_1809cb87f;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_1809cb87f:
  lVar4 = uVar1 * 0x230 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1808b38a0(lVar4);
    lVar4 = lVar4 + 0x230;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x230) {
    FUN_1808b3660(uVar6);
    uVar6 = uVar6 + 0x230;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x230 + uVar3;
    param_1[2] = uVar10 * 0x230 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x46) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x230) * 0x230)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cba70 size=899 ############

void FUN_1809cba70(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)param_1[1];
  lVar5 = *param_1;
  lVar3 = ((longlong)puVar6 - lVar5) +
          SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816((longlong)puVar6 - lVar5),8);
  uVar7 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816(param_1[2] - lVar5),8) +
          (param_1[2] - lVar5);
  uVar4 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  if (param_2 <= uVar4) {
    if (param_2 <= uVar7) {
      if (param_2 != uVar7) {
        puVar9 = (undefined8 *)(param_2 * 0xf8 + lVar5);
        for (puVar8 = puVar9; puVar8 != puVar6; puVar8 = puVar8 + 0x1f) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (longlong)puVar9;
      }
      return;
    }
    lVar3 = FUN_1809d2970(puVar6,param_2 - uVar7,param_3,0);
    param_1[1] = lVar3;
    return;
  }
  if (0x108421084210842 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar4 <= 0x108421084210842 - (uVar4 >> 1)) &&
     (uVar10 = (uVar4 >> 1) + uVar4, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar4 = uVar10 * 0xf8;
  if (uVar10 < 0x108421084210843) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        puVar6 = (undefined8 *)0x0;
      }
      else {
        puVar6 = (undefined8 *)FUN_1811316e0(uVar4);
      }
      goto LAB_1809cbb8d;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar6 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar6[-1] = lVar3;
LAB_1809cbb8d:
  FUN_1809d2970(puVar6 + uVar7 * 0x1f,param_2 - uVar7,param_3,0,puVar6 + uVar7 * 0x1f,puVar6,uVar11)
  ;
  lVar3 = param_1[1];
  puVar8 = puVar6;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0xf8) {
    *puVar8 = license_services::LsPreferenceWire::vftable;
    puVar8[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar5 + 0x10);
    puVar8[3] = *(undefined8 *)(lVar5 + 0x18);
    *(undefined2 *)(puVar8 + 4) = *(undefined2 *)(lVar5 + 0x20);
    *(undefined1 *)(puVar8 + 5) = *(undefined1 *)(lVar5 + 0x28);
    *(undefined1 *)((longlong)puVar8 + 0x29) = *(undefined1 *)(lVar5 + 0x29);
    FUN_1805a4070(puVar8 + 6,lVar5 + 0x30);
    FUN_1805a4070(puVar8 + 10,lVar5 + 0x50);
    FUN_1805a4070(puVar8 + 0xe,lVar5 + 0x70);
    FUN_1805b46a0(puVar8 + 0x12,lVar5 + 0x90);
    FUN_1805a4070(puVar8 + 0x15,lVar5 + 0xa8);
    FUN_1805a4070(puVar8 + 0x19);
    *(undefined4 *)(puVar8 + 0x1d) = *(undefined4 *)(lVar5 + 0xe8);
    *(undefined8 *)((longlong)puVar8 + 0xec) = *(undefined8 *)(lVar5 + 0xec);
    *(undefined2 *)((longlong)puVar8 + 0xf4) = *(undefined2 *)(lVar5 + 0xf4);
    puVar8 = puVar8 + 0x1f;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar6;
    param_1[1] = (longlong)(puVar6 + param_2 * 0x1f);
    param_1[2] = (longlong)(puVar6 + uVar10 * 0x1f);
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar6; puVar8 = puVar8 + 0x1f) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xf8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cbe00 size=850 ############

void FUN_1809cbe00(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar7 - lVar3) / 0x36 + ((longlong)puVar7 - lVar3 >> 0x3f);
  uVar6 = (lVar5 >> 2) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0xd8;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (uVar6 < param_2) {
      lVar3 = FUN_1809d55e0(&local_res18,puVar7,param_2 - uVar6);
      param_1[1] = lVar3;
      return;
    }
    if (param_2 != uVar6) {
      puVar8 = (undefined8 *)(param_2 * 0xd8 + lVar3);
      for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x1b) {
        (**(code **)*puVar9)(puVar9,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x12f684bda12f684 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x12f684bda12f684 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0xd8;
  local_res20 = uVar10;
  if (uVar10 < 0x12f684bda12f685) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_1809cbf1b;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1809cbf1b:
  FUN_1809d55e0(&local_res18,puVar7 + uVar6 * 0x1b,param_2 - uVar6);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0xd8) {
    *puVar9 = license_services::LsZZTestToManyWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar5 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar5 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar5 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar5 + 0x28);
    FUN_1805a4070(puVar9 + 6,lVar5 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar5 + 0x50);
    *(undefined4 *)(puVar9 + 0xe) = *(undefined4 *)(lVar5 + 0x70);
    FUN_1805a4070(puVar9 + 0xf,lVar5 + 0x78);
    FUN_1805a4070(puVar9 + 0x13,lVar5 + 0x98);
    FUN_18080fe30(puVar9 + 0x17);
    puVar9[0x1a] = *(undefined8 *)(lVar5 + 0xd0);
    puVar9 = puVar9 + 0x1b;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x1b);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x1b);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x1b) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0xd8) * 0xd8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cc160 size=862 ############

void FUN_1809cc160(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  undefined8 *puVar9;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar9 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar9 - lVar3) / 6 + ((longlong)puVar9 - lVar3 >> 0x3f);
  uVar6 = (lVar5 >> 5) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0xc0;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (uVar6 < param_2) {
      lVar3 = FUN_1809d5740(&local_res18,puVar9,param_2 - uVar6);
      param_1[1] = lVar3;
      return;
    }
    if (param_2 != uVar6) {
      puVar8 = (undefined8 *)(param_2 * 0xc0 + lVar3);
      for (puVar7 = puVar8; puVar7 != puVar9; puVar7 = puVar7 + 0x18) {
        (**(code **)*puVar7)(puVar7,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x155555555555555 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x155555555555555 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0xc0;
  local_res20 = uVar10;
  if (uVar10 < 0x155555555555556) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar9 = (undefined8 *)0x0;
      }
      else {
        puVar9 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_1809cc27d;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar9 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar9[-1] = lVar3;
LAB_1809cc27d:
  FUN_1809d5740(&local_res18,puVar9 + uVar6 * 0x18,param_2 - uVar6);
  lVar3 = param_1[1];
  puVar7 = puVar9;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0xc0) {
    *puVar7 = license_services::LsZZTestOnlyV2Wire::vftable;
    puVar7[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(lVar5 + 0x10);
    puVar7[3] = *(undefined8 *)(lVar5 + 0x18);
    *(undefined2 *)(puVar7 + 4) = *(undefined2 *)(lVar5 + 0x20);
    *(undefined1 *)(puVar7 + 5) = *(undefined1 *)(lVar5 + 0x28);
    FUN_1805a4070(puVar7 + 6,lVar5 + 0x30);
    *(undefined4 *)(puVar7 + 10) = *(undefined4 *)(lVar5 + 0x50);
    FUN_1805a4070(puVar7 + 0xb,lVar5 + 0x58);
    *(undefined4 *)(puVar7 + 0xf) = *(undefined4 *)(lVar5 + 0x78);
    FUN_1805a4070(puVar7 + 0x10,lVar5 + 0x80);
    FUN_18080fe30(puVar7 + 0x14);
    puVar7[0x17] = *(undefined8 *)(lVar5 + 0xb8);
    puVar7 = puVar7 + 0x18;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar9;
    param_1[1] = (longlong)(puVar9 + param_2 * 0x18);
    param_1[2] = (longlong)(puVar9 + uVar10 * 0x18);
    return;
  }
  puVar9 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar9; puVar7 = puVar7 + 0x18) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0xc0) * 0xc0)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cc4d0 size=738 ############

void FUN_1809cc4d0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  void *_Memory;
  ulonglong uVar9;
  longlong lVar10;
  undefined1 local_res8;
  ulonglong uVar11;
  ulonglong uVar12;
  undefined8 uVar13;
  longlong lVar14;
  
  uVar13 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)param_1[1];
  uVar9 = *param_1;
  uVar12 = (longlong)((longlong)puVar5 - uVar9) / 0x1a8;
  uVar11 = (longlong)(param_1[2] - uVar9) / 0x1a8;
  if (param_2 <= uVar11) {
    if (param_2 <= uVar12) {
      if (param_2 != uVar12) {
        puVar7 = (undefined8 *)(param_2 * 0x1a8 + uVar9);
        for (puVar6 = puVar7; puVar6 != puVar5; puVar6 = puVar6 + 0x35) {
          (**(code **)*puVar6)(puVar6,0);
        }
        param_1[1] = (ulonglong)puVar7;
      }
      return;
    }
    for (lVar3 = param_2 - uVar12; lVar3 != 0; lVar3 = lVar3 + -1) {
      FUN_1809d31e0(puVar5);
      puVar5 = puVar5 + 0x35;
    }
    param_1[1] = (ulonglong)puVar5;
    return;
  }
  if (0x9a90e7d95bc609 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar11 <= 0x9a90e7d95bc609 - (uVar11 >> 1)) &&
     (uVar9 = (uVar11 >> 1) + uVar11, uVar9 < param_2)) {
    uVar9 = param_2;
  }
  uVar2 = uVar9 * 0x1a8;
  uVar11 = uVar12;
  if (uVar9 < 0x9a90e7d95bc60a) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FUN_1811316e0(uVar2);
      }
      goto LAB_1809cc5ef;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar2 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar2 - 8) = lVar3;
LAB_1809cc5ef:
  lVar8 = uVar12 * 0x1a8 + uVar2;
  lVar3 = lVar8;
  uVar12 = uVar2;
  lVar14 = lVar8;
  for (lVar10 = param_2 - uVar11; lVar10 != 0; lVar10 = lVar10 + -1) {
    FUN_1809d31e0(lVar8);
    lVar8 = lVar8 + 0x1a8;
  }
  local_res8 = SUB81(param_1,0);
  FUN_1809d1f10(*param_1,param_1[1],uVar2,param_1,0,local_res8,uVar11,lVar3,uVar12,uVar13,lVar14,
                lVar8,param_3);
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 == (undefined8 *)0x0) {
    *param_1 = uVar2;
    param_1[1] = param_2 * 0x1a8 + uVar2;
    param_1[2] = uVar9 * 0x1a8 + uVar2;
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar5 != puVar6; puVar5 = puVar5 + 0x35) {
    (**(code **)*puVar5)(puVar5,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar1) / 0x1a8) * 0x1a8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cc7c0 size=834 ############

void FUN_1809cc7c0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0xb0;
  uVar3 = (param_1[2] - lVar4) / 0xb0;
  local_res18 = param_3;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0xb0 + lVar4);
        for (puVar6 = puVar8; puVar6 != puVar7; puVar6 = puVar6 + 0x16) {
          (**(code **)*puVar6)(puVar6,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar4 = FUN_1809d5880(&local_res18,puVar7,param_2 - uVar2);
    param_1[1] = lVar4;
    return;
  }
  if (0x1745d1745d1745d < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x1745d1745d1745d - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0xb0;
  local_res20 = uVar10;
  if (uVar10 < 0x1745d1745d1745e) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1809cc8db;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_1809cc8db:
  FUN_1809d5880(&local_res18,puVar7 + uVar2 * 0x16,param_2 - uVar2);
  lVar4 = param_1[1];
  puVar6 = puVar7;
  for (lVar9 = *param_1; lVar9 != lVar4; lVar9 = lVar9 + 0xb0) {
    *puVar6 = license_services::LsAssociativeArrayWire::vftable;
    puVar6[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar6 + 2) = *(undefined4 *)(lVar9 + 0x10);
    puVar6[3] = *(undefined8 *)(lVar9 + 0x18);
    *(undefined2 *)(puVar6 + 4) = *(undefined2 *)(lVar9 + 0x20);
    *(undefined1 *)(puVar6 + 5) = *(undefined1 *)(lVar9 + 0x28);
    FUN_1805a4070(puVar6 + 6,lVar9 + 0x30);
    FUN_1805a4070(puVar6 + 10,lVar9 + 0x50);
    FUN_1805a4070(puVar6 + 0xe,lVar9 + 0x70);
    FUN_18080fe30(puVar6 + 0x12);
    *(undefined4 *)(puVar6 + 0x15) = *(undefined4 *)(lVar9 + 0xa8);
    *(undefined2 *)((longlong)puVar6 + 0xac) = *(undefined2 *)(lVar9 + 0xac);
    puVar6 = puVar6 + 0x16;
  }
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x16);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x16);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 0x16) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0xb0) * 0xb0)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809ccb10 size=1134 ############

void FUN_1809ccb10(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong lVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  void *_Memory;
  undefined8 *puVar13;
  
  puVar13 = (undefined8 *)param_1[1];
  lVar7 = *param_1;
  uVar2 = ((longlong)puVar13 - lVar7) / 0x168;
  uVar6 = (param_1[2] - lVar7) / 0x168;
  if (param_2 <= uVar6) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar11 = (undefined8 *)(param_2 * 0x168 + lVar7);
        for (puVar12 = puVar11; puVar12 != puVar13; puVar12 = puVar12 + 0x2d) {
          (**(code **)*puVar12)(puVar12,0);
        }
        param_1[1] = (longlong)puVar11;
      }
      return;
    }
    for (lVar7 = param_2 - uVar2; lVar7 != 0; lVar7 = lVar7 + -1) {
      FUN_1809d33f0(puVar13);
      puVar13 = puVar13 + 0x2d;
    }
    param_1[1] = (longlong)puVar13;
    return;
  }
  if (0xb60b60b60b60b6 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar8 = param_2;
  if ((uVar6 <= 0xb60b60b60b60b6 - (uVar6 >> 1)) && (uVar8 = (uVar6 >> 1) + uVar6, uVar8 < param_2))
  {
    uVar8 = param_2;
  }
  uVar6 = uVar8 * 0x168;
  if (uVar8 < 0xb60b60b60b60b7) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        puVar13 = (undefined8 *)0x0;
      }
      else {
        puVar13 = (undefined8 *)FUN_1811316e0(uVar6);
      }
      goto LAB_1809ccc29;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar9 = uVar6 + 0x27;
  if (uVar9 <= uVar6) {
    uVar9 = 0xffffffffffffffff;
  }
  lVar7 = FUN_1811316e0(uVar9);
  if (lVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar13 = (undefined8 *)(lVar7 + 0x27U & 0xffffffffffffffe0);
  puVar13[-1] = lVar7;
LAB_1809ccc29:
  puVar12 = puVar13 + uVar2 * 0x2d;
  for (lVar7 = param_2 - uVar2; lVar7 != 0; lVar7 = lVar7 + -1) {
    FUN_1809d33f0(puVar12);
    puVar12 = puVar12 + 0x2d;
  }
  lVar7 = param_1[1];
  puVar12 = puVar13;
  for (lVar10 = *param_1; lVar10 != lVar7; lVar10 = lVar10 + 0x168) {
    *puVar12 = license_services::LsAuthKeyWire::vftable;
    puVar12[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar12 + 2) = *(undefined4 *)(lVar10 + 0x10);
    puVar12[3] = *(undefined8 *)(lVar10 + 0x18);
    *(undefined2 *)(puVar12 + 4) = *(undefined2 *)(lVar10 + 0x20);
    *(undefined1 *)(puVar12 + 5) = *(undefined1 *)(lVar10 + 0x28);
    *(undefined4 *)((longlong)puVar12 + 0x2c) = *(undefined4 *)(lVar10 + 0x2c);
    *(undefined4 *)(puVar12 + 6) = *(undefined4 *)(lVar10 + 0x30);
    *(undefined1 *)((longlong)puVar12 + 0x34) = *(undefined1 *)(lVar10 + 0x34);
    FUN_1805b46a0(puVar12 + 7,lVar10 + 0x38);
    FUN_1805b46a0(puVar12 + 10,lVar10 + 0x50);
    *(undefined4 *)(puVar12 + 0xd) = *(undefined4 *)(lVar10 + 0x68);
    *(undefined4 *)((longlong)puVar12 + 0x6c) = *(undefined4 *)(lVar10 + 0x6c);
    *(undefined4 *)(puVar12 + 0xe) = *(undefined4 *)(lVar10 + 0x70);
    FUN_1805a4070(puVar12 + 0xf,lVar10 + 0x78);
    FUN_1805a4070(puVar12 + 0x13,lVar10 + 0x98);
    *(undefined1 *)(puVar12 + 0x17) = *(undefined1 *)(lVar10 + 0xb8);
    FUN_1805a4070(puVar12 + 0x18,lVar10 + 0xc0);
    FUN_1805b46a0(puVar12 + 0x1c,lVar10 + 0xe0);
    *(undefined4 *)(puVar12 + 0x1f) = *(undefined4 *)(lVar10 + 0xf8);
    *(undefined4 *)((longlong)puVar12 + 0xfc) = *(undefined4 *)(lVar10 + 0xfc);
    *(undefined1 *)(puVar12 + 0x20) = *(undefined1 *)(lVar10 + 0x100);
    *(undefined4 *)((longlong)puVar12 + 0x104) = *(undefined4 *)(lVar10 + 0x104);
    FUN_1805a4070(puVar12 + 0x21,lVar10 + 0x108);
    *(undefined4 *)(puVar12 + 0x25) = *(undefined4 *)(lVar10 + 0x128);
    *(undefined4 *)((longlong)puVar12 + 300) = *(undefined4 *)(lVar10 + 300);
    *(undefined1 *)(puVar12 + 0x26) = *(undefined1 *)(lVar10 + 0x130);
    FUN_18080fe30(puVar12 + 0x27);
    uVar3 = *(undefined4 *)(lVar10 + 0x154);
    uVar4 = *(undefined4 *)(lVar10 + 0x158);
    uVar5 = *(undefined4 *)(lVar10 + 0x15c);
    *(undefined4 *)(puVar12 + 0x2a) = *(undefined4 *)(lVar10 + 0x150);
    *(undefined4 *)((longlong)puVar12 + 0x154) = uVar3;
    *(undefined4 *)(puVar12 + 0x2b) = uVar4;
    *(undefined4 *)((longlong)puVar12 + 0x15c) = uVar5;
    puVar12[0x2c] = *(undefined8 *)(lVar10 + 0x160);
    puVar12 = puVar12 + 0x2d;
  }
  puVar12 = (undefined8 *)*param_1;
  if (puVar12 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar13;
    param_1[1] = (longlong)(puVar13 + param_2 * 0x2d);
    param_1[2] = (longlong)(puVar13 + uVar8 * 0x2d);
    return;
  }
  puVar13 = (undefined8 *)param_1[1];
  for (; puVar12 != puVar13; puVar12 = puVar12 + 0x2d) {
    (**(code **)*puVar12)(puVar12,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x168) * 0x168)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809ccf90 size=769 ############

void FUN_1809ccf90(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x1d0;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x1d0;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x1d0 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x3a) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d2e20(puVar7);
      puVar7 = puVar7 + 0x3a;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x8d3dcb08d3dcb0 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x8d3dcb08d3dcb0 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x1d0;
  if (uVar10 < 0x8d3dcb08d3dcb1) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_1809cd0af;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_1809cd0af:
  lVar4 = uVar1 * 0x1d0 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1809d2e20(lVar4);
    lVar4 = lVar4 + 0x1d0;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x1d0) {
    FUN_1809d2c90(uVar6);
    uVar6 = uVar6 + 0x1d0;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x1d0 + uVar3;
    param_1[2] = uVar10 * 0x1d0 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x3a) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x1d0) * 0x1d0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cd2a0 size=762 ############

void FUN_1809cd2a0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  undefined8 local_res18;
  longlong local_res20;
  
  puVar5 = (undefined8 *)param_1[1];
  uVar7 = *param_1;
  uVar1 = (longlong)((longlong)puVar5 - uVar7) / 0x50;
  uVar9 = (longlong)(param_1[2] - uVar7) / 0x50;
  local_res18 = param_3;
  if (param_2 <= uVar9) {
    if (uVar1 < param_2) {
      uVar7 = FUN_1809d59c0(&local_res18,puVar5,param_2 - uVar1);
      param_1[1] = uVar7;
      return;
    }
    if (param_2 != uVar1) {
      puVar8 = (undefined8 *)(param_2 * 0x50 + uVar7);
      for (puVar6 = puVar8; puVar6 != puVar5; puVar6 = puVar6 + 10) {
        (**(code **)*puVar6)(puVar6,0);
      }
      param_1[1] = (ulonglong)puVar8;
    }
    return;
  }
  if (0x333333333333333 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar7 = param_2;
  if ((uVar9 <= 0x333333333333333 - (uVar9 >> 1)) && (uVar7 = (uVar9 >> 1) + uVar9, uVar7 < param_2)
     ) {
    uVar7 = param_2;
  }
  uVar9 = uVar7 * 0x50;
  if (uVar7 < 0x333333333333334) {
    uVar7 = uVar9;
    if (uVar9 < 0x1000) {
      if (uVar9 == 0) {
        uVar7 = 0;
      }
      else {
        uVar7 = FUN_1811316e0(uVar9);
      }
      goto LAB_1809cd3bd;
    }
  }
  else {
    uVar7 = 0xffffffffffffffff;
  }
  uVar4 = uVar7 + 0x27;
  if (uVar4 <= uVar7) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar7 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar7 - 8) = lVar3;
LAB_1809cd3bd:
  local_res20 = uVar1 * 0x50 + uVar7;
  local_res20 = FUN_1809d59c0(&local_res18,local_res20,param_2 - uVar1);
  uVar1 = param_1[1];
  if (*param_1 != uVar1) {
    lVar3 = *param_1 - uVar7;
    puVar5 = (undefined8 *)(uVar7 + 0x18);
    do {
      puVar5[-3] = license_services::LsDoubleRelation::vftable;
      puVar5[-2] = license_services::LsRelation::vftable;
      *(undefined4 *)(puVar5 + -1) = *(undefined4 *)(lVar3 + -8 + (longlong)puVar5);
      *puVar5 = *(undefined8 *)(lVar3 + (longlong)puVar5);
      *(undefined2 *)(puVar5 + 1) = *(undefined2 *)(lVar3 + 8 + (longlong)puVar5);
      puVar5[2] = license_services::LsRelation::vftable;
      *(undefined4 *)(puVar5 + 3) = *(undefined4 *)(lVar3 + 0x18 + (longlong)puVar5);
      puVar5[4] = *(undefined8 *)(lVar3 + 0x20 + (longlong)puVar5);
      *(undefined2 *)(puVar5 + 5) = *(undefined2 *)(lVar3 + 0x28 + (longlong)puVar5);
      *(undefined2 *)(puVar5 + 6) = *(undefined2 *)(lVar3 + 0x30 + (longlong)puVar5);
      uVar4 = (longlong)puVar5 + lVar3 + 0x38;
      puVar5 = puVar5 + 10;
    } while (uVar4 != uVar1);
  }
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 != (undefined8 *)0x0) {
    puVar6 = (undefined8 *)param_1[1];
    for (; puVar5 != puVar6; puVar5 = puVar5 + 10) {
      (**(code **)*puVar5)(puVar5,0);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x50) * 0x50)) &&
       (_Memory = *(void **)((longlong)pvVar2 - 8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar7;
  param_1[1] = param_2 * 0x50 + uVar7;
  param_1[2] = uVar9 + uVar7;
  return;
}



############ FUN_ 1809cd7e0 size=769 ############

void FUN_1809cd7e0(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x1b8;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x1b8;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x1b8 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x37) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d4c70(puVar7);
      puVar7 = puVar7 + 0x37;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x94f2094f2094f2 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x94f2094f2094f2 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x1b8;
  if (uVar10 < 0x94f2094f2094f3) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_1809cd8ff;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_1809cd8ff:
  lVar4 = uVar1 * 0x1b8 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1809d4c70(lVar4);
    lVar4 = lVar4 + 0x1b8;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x1b8) {
    FUN_1809d4ad0(uVar6);
    uVar6 = uVar6 + 0x1b8;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x1b8 + uVar3;
    param_1[2] = uVar10 * 0x1b8 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x37) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x1b8) * 0x1b8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cdaf0 size=1021 ############

void FUN_1809cdaf0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  void *_Memory;
  ulonglong uVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar10 - lVar3) / 0x12 + ((longlong)puVar10 - lVar3 >> 0x3f);
  uVar8 = (lVar5 >> 4) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0x120;
  if (param_2 <= uVar2) {
    if (uVar8 < param_2) {
      for (lVar3 = param_2 - uVar8; lVar3 != 0; lVar3 = lVar3 + -1) {
        FUN_1809d40a0(puVar10);
        puVar10 = puVar10 + 0x24;
      }
      param_1[1] = (longlong)puVar10;
      return;
    }
    if (param_2 != uVar8) {
      puVar6 = (undefined8 *)(param_2 * 0x120 + lVar3);
      for (puVar7 = puVar6; puVar7 != puVar10; puVar7 = puVar7 + 0x24) {
        (**(code **)*puVar7)(puVar7,0);
      }
      param_1[1] = (longlong)puVar6;
    }
    return;
  }
  if (0xe38e38e38e38e3 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar2 <= 0xe38e38e38e38e3 - (uVar2 >> 1)) && (uVar9 = uVar2 + (uVar2 >> 1), uVar9 < param_2))
  {
    uVar9 = param_2;
  }
  uVar2 = uVar9 * 0x120;
  if (uVar9 < 0xe38e38e38e38e4) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_1809cdc12;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar3;
LAB_1809cdc12:
  puVar7 = puVar10 + uVar8 * 0x24;
  for (lVar3 = param_2 - uVar8; lVar3 != 0; lVar3 = lVar3 + -1) {
    FUN_1809d40a0(puVar7);
    puVar7 = puVar7 + 0x24;
  }
  lVar3 = param_1[1];
  puVar7 = puVar10;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0x120) {
    *puVar7 = license_services::LsLocalizedTextWire::vftable;
    puVar7[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(lVar5 + 0x10);
    puVar7[3] = *(undefined8 *)(lVar5 + 0x18);
    *(undefined2 *)(puVar7 + 4) = *(undefined2 *)(lVar5 + 0x20);
    *(undefined1 *)(puVar7 + 5) = *(undefined1 *)(lVar5 + 0x28);
    FUN_1805a4070(puVar7 + 6,lVar5 + 0x30);
    FUN_1805a4070(puVar7 + 10,lVar5 + 0x50);
    FUN_1805a4070(puVar7 + 0xe,lVar5 + 0x70);
    FUN_1805a4070(puVar7 + 0x12,lVar5 + 0x90);
    FUN_1805a4070(puVar7 + 0x16,lVar5 + 0xb0);
    FUN_1805a4070(puVar7 + 0x1a,lVar5 + 0xd0);
    FUN_1805a4070(puVar7 + 0x1e);
    puVar7[0x22] = *(undefined8 *)(lVar5 + 0x110);
    *(undefined1 *)(puVar7 + 0x23) = *(undefined1 *)(lVar5 + 0x118);
    puVar7 = puVar7 + 0x24;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x24);
    param_1[2] = (longlong)(puVar10 + uVar9 * 0x24);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar10; puVar7 = puVar7 + 0x24) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x120) * 0x120)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cdf00 size=861 ############

void FUN_1809cdf00(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar3 = ((longlong)puVar7 - lVar6) +
          SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)puVar7 - lVar6),8);
  uVar5 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar4 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  local_res18 = param_3;
  if (param_2 <= uVar4) {
    if (param_2 <= uVar5) {
      if (param_2 != uVar5) {
        puVar8 = (undefined8 *)(param_2 * 200 + lVar6);
        for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x19) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar3 = FUN_1809d5a50(&local_res18,puVar7,param_2 - uVar5);
    param_1[1] = lVar3;
    return;
  }
  if (0x147ae147ae147ae < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar4 <= 0x147ae147ae147ae - (uVar4 >> 1)) &&
     (uVar10 = (uVar4 >> 1) + uVar4, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar4 = uVar10 * 200;
  local_res20 = uVar10;
  if (uVar10 < 0x147ae147ae147af) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar4);
      }
      goto LAB_1809ce01f;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1809ce01f:
  FUN_1809d5a50(&local_res18,puVar7 + uVar5 * 0x19,param_2 - uVar5);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar3; lVar6 = lVar6 + 200) {
    *puVar9 = license_services::LsAuthRelationWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar6 + 0x28);
    *(undefined4 *)((longlong)puVar9 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);
    FUN_1805a4070(puVar9 + 6,lVar6 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar6 + 0x50);
    FUN_1805a4070(puVar9 + 0xe,lVar6 + 0x70);
    FUN_18080fe30(puVar9 + 0x12,lVar6 + 0x90);
    FUN_18080fe30(puVar9 + 0x15);
    puVar9[0x18] = *(undefined8 *)(lVar6 + 0xc0);
    puVar9 = puVar9 + 0x19;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x19);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x19);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x19) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 200)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809ce260 size=750 ############

void FUN_1809ce260(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong lVar12;
  undefined1 local_res8;
  undefined8 uVar13;
  longlong lVar14;
  
  uVar13 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  lVar4 = ((longlong)puVar6 - uVar10) +
          SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)((longlong)puVar6 - uVar10)),8);
  uVar11 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  lVar4 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[2] - uVar10)),8) +
          (param_1[2] - uVar10);
  uVar5 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  if (param_2 <= uVar5) {
    if (param_2 <= uVar11) {
      if (param_2 != uVar11) {
        puVar8 = (undefined8 *)(param_2 * 400 + uVar10);
        for (puVar7 = puVar8; puVar7 != puVar6; puVar7 = puVar7 + 0x32) {
          (**(code **)*puVar7)(puVar7,0);
        }
        param_1[1] = (ulonglong)puVar8;
      }
      return;
    }
    for (lVar4 = param_2 - uVar11; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d4580(puVar6);
      puVar6 = puVar6 + 0x32;
    }
    param_1[1] = (ulonglong)puVar6;
    return;
  }
  if (0xa3d70a3d70a3d7 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar5 <= 0xa3d70a3d70a3d7 - (uVar5 >> 1)) &&
     (uVar10 = (uVar5 >> 1) + uVar5, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 400;
  uVar5 = uVar11;
  if (uVar10 < 0xa3d70a3d70a3d8) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FUN_1811316e0(uVar2);
      }
      goto LAB_1809ce383;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar3 = uVar2 + 0x27;
  if (uVar3 <= uVar2) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar3);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar2 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar2 - 8) = lVar4;
LAB_1809ce383:
  lVar9 = uVar11 * 400 + uVar2;
  lVar4 = lVar9;
  uVar11 = uVar2;
  lVar14 = lVar9;
  for (lVar12 = param_2 - uVar5; lVar12 != 0; lVar12 = lVar12 + -1) {
    FUN_1809d4580(lVar9);
    lVar9 = lVar9 + 400;
  }
  local_res8 = SUB81(param_1,0);
  FUN_1809d24a0(*param_1,param_1[1],uVar2,param_1,0,local_res8,uVar5,lVar4,uVar11,uVar13,lVar14,
                lVar9,param_3);
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = uVar2;
    param_1[1] = param_2 * 400 + uVar2;
    param_1[2] = uVar10 * 400 + uVar2;
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 0x32) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  lVar4 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[2] - (longlong)pvVar1)),8
                ) + (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar4 >> 8) - (lVar4 >> 0x3f)) * 400)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809ce560 size=862 ############

void FUN_1809ce560(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  undefined8 *puVar9;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar9 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar5 = ((longlong)puVar9 - lVar3) / 6 + ((longlong)puVar9 - lVar3 >> 0x3f);
  uVar6 = (lVar5 >> 5) - (lVar5 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0xc0;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (uVar6 < param_2) {
      lVar3 = FUN_1809d5ba0(&local_res18,puVar9,param_2 - uVar6);
      param_1[1] = lVar3;
      return;
    }
    if (param_2 != uVar6) {
      puVar8 = (undefined8 *)(param_2 * 0xc0 + lVar3);
      for (puVar7 = puVar8; puVar7 != puVar9; puVar7 = puVar7 + 0x18) {
        (**(code **)*puVar7)(puVar7,0);
      }
      param_1[1] = (longlong)puVar8;
    }
    return;
  }
  if (0x155555555555555 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x155555555555555 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0xc0;
  local_res20 = uVar10;
  if (uVar10 < 0x155555555555556) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        puVar9 = (undefined8 *)0x0;
      }
      else {
        puVar9 = (undefined8 *)FUN_1811316e0(uVar2);
      }
      goto LAB_1809ce67d;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar4 = uVar2 + 0x27;
  if (uVar4 <= uVar2) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar9 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar9[-1] = lVar3;
LAB_1809ce67d:
  FUN_1809d5ba0(&local_res18,puVar9 + uVar6 * 0x18,param_2 - uVar6);
  lVar3 = param_1[1];
  puVar7 = puVar9;
  for (lVar5 = *param_1; lVar5 != lVar3; lVar5 = lVar5 + 0xc0) {
    *puVar7 = license_services::LsZZTestOnlyV1Wire::vftable;
    puVar7[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(lVar5 + 0x10);
    puVar7[3] = *(undefined8 *)(lVar5 + 0x18);
    *(undefined2 *)(puVar7 + 4) = *(undefined2 *)(lVar5 + 0x20);
    *(undefined1 *)(puVar7 + 5) = *(undefined1 *)(lVar5 + 0x28);
    FUN_1805a4070(puVar7 + 6,lVar5 + 0x30);
    *(undefined4 *)(puVar7 + 10) = *(undefined4 *)(lVar5 + 0x50);
    FUN_1805a4070(puVar7 + 0xb,lVar5 + 0x58);
    *(undefined4 *)(puVar7 + 0xf) = *(undefined4 *)(lVar5 + 0x78);
    FUN_1805a4070(puVar7 + 0x10,lVar5 + 0x80);
    FUN_18080fe30(puVar7 + 0x14);
    puVar7[0x17] = *(undefined8 *)(lVar5 + 0xb8);
    puVar7 = puVar7 + 0x18;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar9;
    param_1[1] = (longlong)(puVar9 + param_2 * 0x18);
    param_1[2] = (longlong)(puVar9 + uVar10 * 0x18);
    return;
  }
  puVar9 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar9; puVar7 = puVar7 + 0x18) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0xc0) * 0xc0)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809ce8d0 size=896 ############

void FUN_1809ce8d0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x108;
  uVar3 = (param_1[2] - lVar4) / 0x108;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      lVar4 = FUN_1809d2660(puVar7,param_2 - uVar2,param_3,0);
      param_1[1] = lVar4;
      return;
    }
    if (param_2 != uVar2) {
      puVar9 = (undefined8 *)(param_2 * 0x108 + lVar4);
      for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x21) {
        (**(code **)*puVar8)(puVar8,0);
      }
      param_1[1] = (longlong)puVar9;
    }
    return;
  }
  if (0xf83e0f83e0f83e < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0xf83e0f83e0f83e - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x108;
  if (uVar10 < 0xf83e0f83e0f83f) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1809ce9e9;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_1809ce9e9:
  FUN_1809d2660(puVar7 + uVar2 * 0x21,param_2 - uVar2,param_3,0,puVar7 + uVar2 * 0x21,puVar7,uVar11)
  ;
  lVar4 = param_1[1];
  puVar8 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x108) {
    *puVar8 = license_services::LsAuthManifestElementWire::vftable;
    puVar8[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar8[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar8 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar8 + 5) = *(undefined1 *)(lVar6 + 0x28);
    *(undefined4 *)((longlong)puVar8 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);
    *(undefined4 *)(puVar8 + 6) = *(undefined4 *)(lVar6 + 0x30);
    *(undefined4 *)((longlong)puVar8 + 0x34) = *(undefined4 *)(lVar6 + 0x34);
    FUN_1805a4070(puVar8 + 7,lVar6 + 0x38);
    FUN_1805a4070(puVar8 + 0xb,lVar6 + 0x58);
    FUN_1805a4070(puVar8 + 0xf,lVar6 + 0x78);
    *(undefined4 *)(puVar8 + 0x13) = *(undefined4 *)(lVar6 + 0x98);
    FUN_1805a4070(puVar8 + 0x14,lVar6 + 0xa0);
    FUN_1805a4070(puVar8 + 0x18,lVar6 + 0xc0);
    FUN_18080fe30(puVar8 + 0x1c);
    puVar8[0x1f] = *(undefined8 *)(lVar6 + 0xf8);
    *(undefined4 *)(puVar8 + 0x20) = *(undefined4 *)(lVar6 + 0x100);
    puVar8 = puVar8 + 0x21;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x21);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x21);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar7; puVar8 = puVar8 + 0x21) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x108) * 0x108)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cec60 size=769 ############

void FUN_1809cec60(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x208;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x208;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x208 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x41) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d37a0(puVar7);
      puVar7 = puVar7 + 0x41;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x7e07e07e07e07e < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x7e07e07e07e07e - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x208;
  if (uVar10 < 0x7e07e07e07e07f) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_1809ced7f;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_1809ced7f:
  lVar4 = uVar1 * 0x208 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1809d37a0(lVar4);
    lVar4 = lVar4 + 0x208;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x208) {
    FUN_1809d3570(uVar6);
    uVar6 = uVar6 + 0x208;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x208 + uVar3;
    param_1[2] = uVar10 * 0x208 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x41) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x208) * 0x208)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cef70 size=896 ############

void FUN_1809cef70(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  puVar7 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar7 - lVar4) / 0x110;
  uVar3 = (param_1[2] - lVar4) / 0x110;
  if (param_2 <= uVar3) {
    if (uVar2 < param_2) {
      lVar4 = FUN_1809d2b00(puVar7,param_2 - uVar2,param_3,0);
      param_1[1] = lVar4;
      return;
    }
    if (param_2 != uVar2) {
      puVar9 = (undefined8 *)(param_2 * 0x110 + lVar4);
      for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x22) {
        (**(code **)*puVar8)(puVar8,0);
      }
      param_1[1] = (longlong)puVar9;
    }
    return;
  }
  if (0xf0f0f0f0f0f0f0 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0xf0f0f0f0f0f0f0 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x110;
  if (uVar10 < 0xf0f0f0f0f0f0f1) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1809cf089;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar4;
LAB_1809cf089:
  FUN_1809d2b00(puVar7 + uVar2 * 0x22,param_2 - uVar2,param_3,0,puVar7 + uVar2 * 0x22,puVar7,uVar11)
  ;
  lVar4 = param_1[1];
  puVar8 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x110) {
    *puVar8 = license_services::LsSignedDigestWire::vftable;
    puVar8[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar8[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar8 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar8 + 5) = *(undefined1 *)(lVar6 + 0x28);
    *(undefined4 *)((longlong)puVar8 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);
    FUN_1805a4070(puVar8 + 6,lVar6 + 0x30);
    FUN_1805b46a0(puVar8 + 10,lVar6 + 0x50);
    FUN_1805a4070(puVar8 + 0xd,lVar6 + 0x68);
    FUN_1805a4070(puVar8 + 0x11,lVar6 + 0x88);
    FUN_1805a4070(puVar8 + 0x15,lVar6 + 0xa8);
    FUN_1805a4070(puVar8 + 0x19,lVar6 + 200);
    FUN_18080fe30(puVar8 + 0x1d);
    puVar8[0x20] = *(undefined8 *)(lVar6 + 0x100);
    *(undefined2 *)(puVar8 + 0x21) = *(undefined2 *)(lVar6 + 0x108);
    puVar8 = puVar8 + 0x22;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x22);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x22);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar7; puVar8 = puVar8 + 0x22) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x110) * 0x110)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cf300 size=1038 ############

void FUN_1809cf300(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar4) / 0x160;
  uVar3 = (param_1[2] - lVar4) / 0x160;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0x160 + lVar4);
        for (puVar9 = puVar8; puVar9 != puVar10; puVar9 = puVar9 + 0x2c) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d4910(puVar10);
      puVar10 = puVar10 + 0x2c;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0xba2e8ba2e8ba2e < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = param_2;
  if ((uVar3 <= 0xba2e8ba2e8ba2e - (uVar3 >> 1)) && (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2))
  {
    uVar5 = param_2;
  }
  uVar3 = uVar5 * 0x160;
  if (uVar5 < 0xba2e8ba2e8ba2f) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1809cf419;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar6 = uVar3 + 0x27;
  if (uVar6 <= uVar3) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar6);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1809cf419:
  puVar9 = puVar10 + uVar2 * 0x2c;
  for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1809d4910(puVar9);
    puVar9 = puVar9 + 0x2c;
  }
  lVar4 = param_1[1];
  puVar9 = puVar10;
  for (lVar7 = *param_1; lVar7 != lVar4; lVar7 = lVar7 + 0x160) {
    *puVar9 = license_services::LsUserWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar7 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar7 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar7 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar7 + 0x28);
    FUN_1805a4070(puVar9 + 6,lVar7 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar7 + 0x50);
    FUN_1805a4070(puVar9 + 0xe,lVar7 + 0x70);
    FUN_1805a4070(puVar9 + 0x12,lVar7 + 0x90);
    FUN_1805a4070(puVar9 + 0x16,lVar7 + 0xb0);
    FUN_1805a4070(puVar9 + 0x1a,lVar7 + 0xd0);
    FUN_1805a4070(puVar9 + 0x1e,lVar7 + 0xf0);
    FUN_1805a4070(puVar9 + 0x22,lVar7 + 0x110);
    FUN_1805a4070(puVar9 + 0x26);
    puVar9[0x2a] = *(undefined8 *)(lVar7 + 0x150);
    *(undefined2 *)(puVar9 + 0x2b) = *(undefined2 *)(lVar7 + 0x158);
    *(undefined1 *)((longlong)puVar9 + 0x15a) = *(undefined1 *)(lVar7 + 0x15a);
    puVar9 = puVar9 + 0x2c;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x2c);
    param_1[2] = (longlong)(puVar10 + uVar5 * 0x2c);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar10; puVar9 = puVar9 + 0x2c) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x160) * 0x160)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cf720 size=1070 ############

void FUN_1809cf720(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  void *_Memory;
  ulonglong uVar9;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar4 = ((longlong)puVar10 - lVar6) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)puVar10 - lVar6),8);
  uVar9 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  lVar4 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar5 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  if (param_2 <= uVar5) {
    if (param_2 <= uVar9) {
      if (param_2 != uVar9) {
        puVar7 = (undefined8 *)(param_2 * 0x150 + lVar6);
        for (puVar8 = puVar7; puVar8 != puVar10; puVar8 = puVar8 + 0x2a) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (longlong)puVar7;
      }
      return;
    }
    for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d4770(puVar10);
      puVar10 = puVar10 + 0x2a;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0xc30c30c30c30c3 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar2 = param_2;
  if ((uVar5 <= 0xc30c30c30c30c3 - (uVar5 >> 1)) && (uVar2 = (uVar5 >> 1) + uVar5, uVar2 < param_2))
  {
    uVar2 = param_2;
  }
  uVar5 = uVar2 * 0x150;
  if (uVar2 < 0xc30c30c30c30c4) {
    if (uVar5 < 0x1000) {
      if (uVar5 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar5);
      }
      goto LAB_1809cf83d;
    }
  }
  else {
    uVar5 = 0xffffffffffffffff;
  }
  uVar3 = uVar5 + 0x27;
  if (uVar3 <= uVar5) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar3);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1809cf83d:
  puVar8 = puVar10 + uVar9 * 0x2a;
  for (lVar4 = param_2 - uVar9; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1809d4770(puVar8);
    puVar8 = puVar8 + 0x2a;
  }
  lVar4 = param_1[1];
  puVar8 = puVar10;
  for (lVar6 = *param_1; lVar6 != lVar4; lVar6 = lVar6 + 0x150) {
    *puVar8 = license_services::LsTimeLimitWire::vftable;
    puVar8[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar8 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar8[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar8 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar8 + 5) = *(undefined1 *)(lVar6 + 0x28);
    *(undefined4 *)((longlong)puVar8 + 0x2c) = *(undefined4 *)(lVar6 + 0x2c);
    *(undefined4 *)(puVar8 + 6) = *(undefined4 *)(lVar6 + 0x30);
    *(undefined4 *)((longlong)puVar8 + 0x34) = *(undefined4 *)(lVar6 + 0x34);
    FUN_1805a4070(puVar8 + 7,lVar6 + 0x38);
    FUN_1805a4070(puVar8 + 0xb,lVar6 + 0x58);
    FUN_1805a4070(puVar8 + 0xf,lVar6 + 0x78);
    FUN_1805a4070(puVar8 + 0x13,lVar6 + 0x98);
    *(undefined4 *)(puVar8 + 0x17) = *(undefined4 *)(lVar6 + 0xb8);
    FUN_1805a4070(puVar8 + 0x18,lVar6 + 0xc0);
    FUN_1805a4070(puVar8 + 0x1c,lVar6 + 0xe0);
    *(undefined4 *)(puVar8 + 0x20) = *(undefined4 *)(lVar6 + 0x100);
    FUN_1805a4070(puVar8 + 0x21,lVar6 + 0x108);
    FUN_18080fe30(puVar8 + 0x25);
    puVar8[0x28] = *(undefined8 *)(lVar6 + 0x140);
    *(undefined4 *)(puVar8 + 0x29) = *(undefined4 *)(lVar6 + 0x148);
    *(undefined2 *)((longlong)puVar8 + 0x14c) = *(undefined2 *)(lVar6 + 0x14c);
    *(undefined1 *)((longlong)puVar8 + 0x14e) = *(undefined1 *)(lVar6 + 0x14e);
    puVar8 = puVar8 + 0x2a;
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x2a);
    param_1[2] = (longlong)(puVar10 + uVar2 * 0x2a);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar8 != puVar10; puVar8 = puVar8 + 0x2a) {
    (**(code **)*puVar8)(puVar8,0);
  }
  pvVar1 = (void *)*param_1;
  lVar4 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar4 >> 8) - (lVar4 >> 0x3f)) * 0x150)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cfb60 size=1054 ############

void FUN_1809cfb60(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong lVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  void *_Memory;
  undefined8 *puVar13;
  
  puVar13 = (undefined8 *)param_1[1];
  lVar7 = *param_1;
  uVar2 = ((longlong)puVar13 - lVar7) / 0x178;
  uVar6 = (param_1[2] - lVar7) / 0x178;
  if (param_2 <= uVar6) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar11 = (undefined8 *)(param_2 * 0x178 + lVar7);
        for (puVar12 = puVar11; puVar12 != puVar13; puVar12 = puVar12 + 0x2f) {
          (**(code **)*puVar12)(puVar12,0);
        }
        param_1[1] = (longlong)puVar11;
      }
      return;
    }
    for (lVar7 = param_2 - uVar2; lVar7 != 0; lVar7 = lVar7 + -1) {
      FUN_1809d3ed0(puVar13);
      puVar13 = puVar13 + 0x2f;
    }
    param_1[1] = (longlong)puVar13;
    return;
  }
  if (0xae4c415c9882b9 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar8 = param_2;
  if ((uVar6 <= 0xae4c415c9882b9 - (uVar6 >> 1)) && (uVar8 = (uVar6 >> 1) + uVar6, uVar8 < param_2))
  {
    uVar8 = param_2;
  }
  uVar6 = uVar8 * 0x178;
  if (uVar8 < 0xae4c415c9882ba) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        puVar13 = (undefined8 *)0x0;
      }
      else {
        puVar13 = (undefined8 *)FUN_1811316e0(uVar6);
      }
      goto LAB_1809cfc79;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar9 = uVar6 + 0x27;
  if (uVar9 <= uVar6) {
    uVar9 = 0xffffffffffffffff;
  }
  lVar7 = FUN_1811316e0(uVar9);
  if (lVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar13 = (undefined8 *)(lVar7 + 0x27U & 0xffffffffffffffe0);
  puVar13[-1] = lVar7;
LAB_1809cfc79:
  puVar12 = puVar13 + uVar2 * 0x2f;
  for (lVar7 = param_2 - uVar2; lVar7 != 0; lVar7 = lVar7 + -1) {
    FUN_1809d3ed0(puVar12);
    puVar12 = puVar12 + 0x2f;
  }
  lVar7 = param_1[1];
  puVar12 = puVar13;
  for (lVar10 = *param_1; lVar10 != lVar7; lVar10 = lVar10 + 0x178) {
    *puVar12 = license_services::LsIlokWire::vftable;
    puVar12[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar12 + 2) = *(undefined4 *)(lVar10 + 0x10);
    puVar12[3] = *(undefined8 *)(lVar10 + 0x18);
    *(undefined2 *)(puVar12 + 4) = *(undefined2 *)(lVar10 + 0x20);
    *(undefined1 *)(puVar12 + 5) = *(undefined1 *)(lVar10 + 0x28);
    *(undefined4 *)((longlong)puVar12 + 0x2c) = *(undefined4 *)(lVar10 + 0x2c);
    FUN_1805a4070(puVar12 + 6,lVar10 + 0x30);
    FUN_1805a4070(puVar12 + 10,lVar10 + 0x50);
    *(undefined4 *)(puVar12 + 0xe) = *(undefined4 *)(lVar10 + 0x70);
    FUN_1805a4070(puVar12 + 0xf,lVar10 + 0x78);
    FUN_1805a4070(puVar12 + 0x13,lVar10 + 0x98);
    *(undefined4 *)(puVar12 + 0x17) = *(undefined4 *)(lVar10 + 0xb8);
    FUN_1805a4070(puVar12 + 0x18,lVar10 + 0xc0);
    *(undefined4 *)(puVar12 + 0x1c) = *(undefined4 *)(lVar10 + 0xe0);
    *(undefined4 *)((longlong)puVar12 + 0xe4) = *(undefined4 *)(lVar10 + 0xe4);
    FUN_1805a4070(puVar12 + 0x1d,lVar10 + 0xe8);
    FUN_1805a4070(puVar12 + 0x21,lVar10 + 0x108);
    FUN_1805a4070(puVar12 + 0x25,lVar10 + 0x128);
    FUN_1805a4070(puVar12 + 0x29);
    uVar3 = *(undefined4 *)(lVar10 + 0x16c);
    uVar4 = *(undefined4 *)(lVar10 + 0x170);
    uVar5 = *(undefined4 *)(lVar10 + 0x174);
    *(undefined4 *)(puVar12 + 0x2d) = *(undefined4 *)(lVar10 + 0x168);
    *(undefined4 *)((longlong)puVar12 + 0x16c) = uVar3;
    *(undefined4 *)(puVar12 + 0x2e) = uVar4;
    *(undefined4 *)((longlong)puVar12 + 0x174) = uVar5;
    puVar12 = puVar12 + 0x2f;
  }
  puVar12 = (undefined8 *)*param_1;
  if (puVar12 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar13;
    param_1[1] = (longlong)(puVar13 + param_2 * 0x2f);
    param_1[2] = (longlong)(puVar13 + uVar8 * 0x2f);
    return;
  }
  puVar13 = (undefined8 *)param_1[1];
  for (; puVar12 != puVar13; puVar12 = puVar12 + 0x2f) {
    (**(code **)*puVar12)(puVar12,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x178) * 0x178)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809cff90 size=877 ############

void FUN_1809cff90(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar3 = ((longlong)puVar7 - lVar6) +
          SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816((longlong)puVar7 - lVar6),8);
  uVar5 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar4 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  local_res18 = param_3;
  if (param_2 <= uVar4) {
    if (param_2 <= uVar5) {
      if (param_2 != uVar5) {
        puVar8 = (undefined8 *)(param_2 * 0xb8 + lVar6);
        for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x17) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar3 = FUN_1809d5ce0(&local_res18,puVar7,param_2 - uVar5);
    param_1[1] = lVar3;
    return;
  }
  if (0x1642c8590b21642 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar4 <= 0x1642c8590b21642 - (uVar4 >> 1)) &&
     (uVar10 = (uVar4 >> 1) + uVar4, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar4 = uVar10 * 0xb8;
  local_res20 = uVar10;
  if (uVar10 < 0x1642c8590b21643) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar4);
      }
      goto LAB_1809d00af;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1809d00af:
  FUN_1809d5ce0(&local_res18,puVar7 + uVar5 * 0x17,param_2 - uVar5);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar3; lVar6 = lVar6 + 0xb8) {
    *puVar9 = license_services::LsSignatureWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar6 + 0x28);
    FUN_1805a4070(puVar9 + 6,lVar6 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar6 + 0x50);
    FUN_1805a4070(puVar9 + 0xe,lVar6 + 0x70);
    *(undefined4 *)(puVar9 + 0x12) = *(undefined4 *)(lVar6 + 0x90);
    FUN_18080fe30(puVar9 + 0x13);
    *(undefined4 *)(puVar9 + 0x16) = *(undefined4 *)(lVar6 + 0xb0);
    *(undefined2 *)((longlong)puVar9 + 0xb4) = *(undefined2 *)(lVar6 + 0xb4);
    *(undefined1 *)((longlong)puVar9 + 0xb6) = *(undefined1 *)(lVar6 + 0xb6);
    puVar9 = puVar9 + 0x17;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x17);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x17);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x17) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xb8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d0300 size=990 ############

void FUN_1809d0300(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar4 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar4) / 0x128;
  uVar3 = (param_1[2] - lVar4) / 0x128;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar8 = (undefined8 *)(param_2 * 0x128 + lVar4);
        for (puVar9 = puVar8; puVar9 != puVar10; puVar9 = puVar9 + 0x25) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d4410(puVar10);
      puVar10 = puVar10 + 0x25;
    }
    param_1[1] = (longlong)puVar10;
    return;
  }
  if (0xdd67c8a60dd67c < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = param_2;
  if ((uVar3 <= 0xdd67c8a60dd67c - (uVar3 >> 1)) && (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2))
  {
    uVar5 = param_2;
  }
  uVar3 = uVar5 * 0x128;
  if (uVar5 < 0xdd67c8a60dd67d) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar3);
      }
      goto LAB_1809d0419;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar6 = uVar3 + 0x27;
  if (uVar6 <= uVar3) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar6);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar4;
LAB_1809d0419:
  puVar9 = puVar10 + uVar2 * 0x25;
  for (lVar4 = param_2 - uVar2; lVar4 != 0; lVar4 = lVar4 + -1) {
    FUN_1809d4410(puVar9);
    puVar9 = puVar9 + 0x25;
  }
  lVar4 = param_1[1];
  puVar9 = puVar10;
  for (lVar7 = *param_1; lVar7 != lVar4; lVar7 = lVar7 + 0x128) {
    *puVar9 = license_services::LsParticipantWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar7 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar7 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar7 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar7 + 0x28);
    FUN_1805a4070(puVar9 + 6,lVar7 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar7 + 0x50);
    FUN_1805a4070(puVar9 + 0xe,lVar7 + 0x70);
    FUN_1805a4070(puVar9 + 0x12,lVar7 + 0x90);
    *(undefined4 *)(puVar9 + 0x16) = *(undefined4 *)(lVar7 + 0xb0);
    FUN_1805a4070(puVar9 + 0x17,lVar7 + 0xb8);
    FUN_1805a4070(puVar9 + 0x1b,lVar7 + 0xd8);
    FUN_1805a4070(puVar9 + 0x1f);
    puVar9[0x23] = *(undefined8 *)(lVar7 + 0x118);
    *(undefined2 *)(puVar9 + 0x24) = *(undefined2 *)(lVar7 + 0x120);
    puVar9 = puVar9 + 0x25;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x25);
    param_1[2] = (longlong)(puVar10 + uVar5 * 0x25);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar10; puVar9 = puVar9 + 0x25) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x128) * 0x128)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d06f0 size=960 ############

void FUN_1809d06f0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  void *_Memory;
  ulonglong uVar13;
  undefined8 uVar14;
  
  uVar14 = 0xfffffffffffffffe;
  puVar10 = (undefined8 *)param_1[1];
  lVar7 = *param_1;
  uVar2 = ((longlong)puVar10 - lVar7) / 0x118;
  uVar6 = (param_1[2] - lVar7) / 0x118;
  if (param_2 <= uVar6) {
    if (param_2 <= uVar2) {
      if (param_2 != uVar2) {
        puVar12 = (undefined8 *)(param_2 * 0x118 + lVar7);
        for (puVar11 = puVar12; puVar11 != puVar10; puVar11 = puVar11 + 0x23) {
          (**(code **)*puVar11)(puVar11,0);
        }
        param_1[1] = (longlong)puVar12;
      }
      return;
    }
    lVar7 = FUN_1809d27f0(puVar10,param_2 - uVar2,param_3,0);
    param_1[1] = lVar7;
    return;
  }
  if (0xea0ea0ea0ea0ea < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = param_2;
  if ((uVar6 <= 0xea0ea0ea0ea0ea - (uVar6 >> 1)) &&
     (uVar13 = (uVar6 >> 1) + uVar6, uVar13 < param_2)) {
    uVar13 = param_2;
  }
  uVar6 = uVar13 * 0x118;
  if (uVar13 < 0xea0ea0ea0ea0eb) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar6);
      }
      goto LAB_1809d0809;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar8 = uVar6 + 0x27;
  if (uVar8 <= uVar6) {
    uVar8 = 0xffffffffffffffff;
  }
  lVar7 = FUN_1811316e0(uVar8);
  if (lVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar7 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar7;
LAB_1809d0809:
  FUN_1809d27f0(puVar10 + uVar2 * 0x23,param_2 - uVar2,param_3,0,puVar10 + uVar2 * 0x23,puVar10,
                uVar14);
  lVar7 = param_1[1];
  puVar11 = puVar10;
  for (lVar9 = *param_1; lVar9 != lVar7; lVar9 = lVar9 + 0x118) {
    *puVar11 = license_services::LsDeveloperBlockWire::vftable;
    puVar11[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar11 + 2) = *(undefined4 *)(lVar9 + 0x10);
    puVar11[3] = *(undefined8 *)(lVar9 + 0x18);
    *(undefined2 *)(puVar11 + 4) = *(undefined2 *)(lVar9 + 0x20);
    *(undefined1 *)(puVar11 + 5) = *(undefined1 *)(lVar9 + 0x28);
    *(undefined4 *)((longlong)puVar11 + 0x2c) = *(undefined4 *)(lVar9 + 0x2c);
    *(undefined1 *)(puVar11 + 6) = *(undefined1 *)(lVar9 + 0x30);
    FUN_1805b46a0(puVar11 + 7,lVar9 + 0x38);
    FUN_1805b46a0(puVar11 + 10,lVar9 + 0x50);
    *(undefined4 *)(puVar11 + 0xd) = *(undefined4 *)(lVar9 + 0x68);
    *(undefined4 *)((longlong)puVar11 + 0x6c) = *(undefined4 *)(lVar9 + 0x6c);
    FUN_1805a4070(puVar11 + 0xe,lVar9 + 0x70);
    FUN_1805a4070(puVar11 + 0x12,lVar9 + 0x90);
    *(undefined4 *)(puVar11 + 0x16) = *(undefined4 *)(lVar9 + 0xb0);
    *(undefined4 *)((longlong)puVar11 + 0xb4) = *(undefined4 *)(lVar9 + 0xb4);
    *(undefined1 *)(puVar11 + 0x17) = *(undefined1 *)(lVar9 + 0xb8);
    FUN_1805a4070(puVar11 + 0x18,lVar9 + 0xc0);
    *(undefined4 *)(puVar11 + 0x1c) = *(undefined4 *)(lVar9 + 0xe0);
    *(undefined1 *)((longlong)puVar11 + 0xe4) = *(undefined1 *)(lVar9 + 0xe4);
    FUN_18080fe30(puVar11 + 0x1d);
    uVar3 = *(undefined4 *)(lVar9 + 0x104);
    uVar4 = *(undefined4 *)(lVar9 + 0x108);
    uVar5 = *(undefined4 *)(lVar9 + 0x10c);
    *(undefined4 *)(puVar11 + 0x20) = *(undefined4 *)(lVar9 + 0x100);
    *(undefined4 *)((longlong)puVar11 + 0x104) = uVar3;
    *(undefined4 *)(puVar11 + 0x21) = uVar4;
    *(undefined4 *)((longlong)puVar11 + 0x10c) = uVar5;
    *(undefined1 *)(puVar11 + 0x22) = *(undefined1 *)(lVar9 + 0x110);
    puVar11 = puVar11 + 0x23;
  }
  puVar11 = (undefined8 *)*param_1;
  if (puVar11 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x23);
    param_1[2] = (longlong)(puVar10 + uVar13 * 0x23);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar11 != puVar10; puVar11 = puVar11 + 0x23) {
    (**(code **)*puVar11)(puVar11,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x118) * 0x118)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d0ac0 size=737 ############

void FUN_1809d0ac0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  void *_Memory;
  ulonglong uVar9;
  ulonglong uVar10;
  longlong lVar11;
  undefined1 local_res8;
  ulonglong uVar12;
  undefined8 uVar13;
  longlong lVar14;
  
  uVar13 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)param_1[1];
  uVar9 = *param_1;
  lVar4 = (longlong)((longlong)puVar5 - uVar9) / 6 + ((longlong)((longlong)puVar5 - uVar9) >> 0x3f);
  uVar10 = (lVar4 >> 6) - (lVar4 >> 0x3f);
  uVar12 = (longlong)(param_1[2] - uVar9) / 0x180;
  if (param_2 <= uVar12) {
    if (param_2 <= uVar10) {
      if (param_2 != uVar10) {
        puVar7 = (undefined8 *)(param_2 * 0x180 + uVar9);
        for (puVar6 = puVar7; puVar6 != puVar5; puVar6 = puVar6 + 0x30) {
          (**(code **)*puVar6)(puVar6,0);
        }
        param_1[1] = (ulonglong)puVar7;
      }
      return;
    }
    for (lVar4 = param_2 - uVar10; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d3ba0(puVar5);
      puVar5 = puVar5 + 0x30;
    }
    param_1[1] = (ulonglong)puVar5;
    return;
  }
  if (0xaaaaaaaaaaaaaa < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar12 <= 0xaaaaaaaaaaaaaa - (uVar12 >> 1)) &&
     (uVar9 = (uVar12 >> 1) + uVar12, uVar9 < param_2)) {
    uVar9 = param_2;
  }
  uVar2 = uVar9 * 0x180;
  uVar12 = uVar10;
  if (uVar9 < 0xaaaaaaaaaaaaab) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FUN_1811316e0(uVar2);
      }
      goto LAB_1809d0be0;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar3 = uVar2 + 0x27;
  if (uVar3 <= uVar2) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar3);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar2 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar2 - 8) = lVar4;
LAB_1809d0be0:
  lVar8 = uVar10 * 0x180 + uVar2;
  lVar4 = lVar8;
  uVar10 = uVar2;
  lVar14 = lVar8;
  for (lVar11 = param_2 - uVar12; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1809d3ba0(lVar8);
    lVar8 = lVar8 + 0x180;
  }
  local_res8 = SUB81(param_1,0);
  FUN_1809d20d0(*param_1,param_1[1],uVar2,param_1,0,local_res8,uVar12,lVar4,uVar10,uVar13,lVar14,
                lVar8,param_3);
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 == (undefined8 *)0x0) {
    *param_1 = uVar2;
    param_1[1] = param_2 * 0x180 + uVar2;
    param_1[2] = uVar9 * 0x180 + uVar2;
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar5 != puVar6; puVar5 = puVar5 + 0x30) {
    (**(code **)*puVar5)(puVar5,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar1) / 0x180) * 0x180)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d0db0 size=925 ############

void FUN_1809d0db0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  ulonglong uVar5;
  longlong lVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  void *_Memory;
  ulonglong uVar13;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar10 = (undefined8 *)param_1[1];
  lVar9 = *param_1;
  lVar6 = ((longlong)puVar10 - lVar9) +
          SUB168(SEXT816(-0x7777777777777777) * SEXT816((longlong)puVar10 - lVar9),8);
  uVar8 = (lVar6 >> 7) - (lVar6 >> 0x3f);
  lVar6 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(param_1[2] - lVar9),8) +
          (param_1[2] - lVar9);
  uVar7 = (lVar6 >> 7) - (lVar6 >> 0x3f);
  local_res18 = param_3;
  if (param_2 <= uVar7) {
    if (uVar8 < param_2) {
      lVar6 = FUN_1809d5e20(&local_res18,puVar10,param_2 - uVar8);
      param_1[1] = lVar6;
      return;
    }
    if (param_2 != uVar8) {
      puVar11 = (undefined8 *)(param_2 * 0xf0 + lVar9);
      for (puVar12 = puVar11; puVar12 != puVar10; puVar12 = puVar12 + 0x1e) {
        (**(code **)*puVar12)(puVar12,0);
      }
      param_1[1] = (longlong)puVar11;
    }
    return;
  }
  if (0x111111111111111 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = param_2;
  if ((uVar7 <= 0x111111111111111 - (uVar7 >> 1)) &&
     (uVar13 = (uVar7 >> 1) + uVar7, uVar13 < param_2)) {
    uVar13 = param_2;
  }
  uVar7 = uVar13 * 0xf0;
  local_res20 = uVar13;
  if (uVar13 < 0x111111111111112) {
    if (uVar7 < 0x1000) {
      if (uVar7 == 0) {
        puVar10 = (undefined8 *)0x0;
      }
      else {
        puVar10 = (undefined8 *)FUN_1811316e0(uVar7);
      }
      goto LAB_1809d0ecf;
    }
  }
  else {
    uVar7 = 0xffffffffffffffff;
  }
  uVar5 = uVar7 + 0x27;
  if (uVar5 <= uVar7) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar6 = FUN_1811316e0(uVar5);
  if (lVar6 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar10 = (undefined8 *)(lVar6 + 0x27U & 0xffffffffffffffe0);
  puVar10[-1] = lVar6;
LAB_1809d0ecf:
  FUN_1809d5e20(&local_res18,puVar10 + uVar8 * 0x1e,param_2 - uVar8);
  lVar6 = param_1[1];
  puVar12 = puVar10;
  for (lVar9 = *param_1; lVar9 != lVar6; lVar9 = lVar9 + 0xf0) {
    *puVar12 = license_services::LsCountLimitWire::vftable;
    puVar12[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar12 + 2) = *(undefined4 *)(lVar9 + 0x10);
    puVar12[3] = *(undefined8 *)(lVar9 + 0x18);
    *(undefined2 *)(puVar12 + 4) = *(undefined2 *)(lVar9 + 0x20);
    *(undefined1 *)(puVar12 + 5) = *(undefined1 *)(lVar9 + 0x28);
    *(undefined4 *)((longlong)puVar12 + 0x2c) = *(undefined4 *)(lVar9 + 0x2c);
    *(undefined1 *)(puVar12 + 6) = *(undefined1 *)(lVar9 + 0x30);
    *(undefined4 *)((longlong)puVar12 + 0x34) = *(undefined4 *)(lVar9 + 0x34);
    *(undefined4 *)(puVar12 + 7) = *(undefined4 *)(lVar9 + 0x38);
    *(undefined1 *)((longlong)puVar12 + 0x3c) = *(undefined1 *)(lVar9 + 0x3c);
    *(undefined4 *)(puVar12 + 8) = *(undefined4 *)(lVar9 + 0x40);
    *(undefined4 *)((longlong)puVar12 + 0x44) = *(undefined4 *)(lVar9 + 0x44);
    *(undefined1 *)(puVar12 + 9) = *(undefined1 *)(lVar9 + 0x48);
    *(undefined4 *)((longlong)puVar12 + 0x4c) = *(undefined4 *)(lVar9 + 0x4c);
    *(undefined4 *)(puVar12 + 10) = *(undefined4 *)(lVar9 + 0x50);
    FUN_1805a4070(puVar12 + 0xb,lVar9 + 0x58);
    FUN_1805a4070(puVar12 + 0xf,lVar9 + 0x78);
    *(undefined4 *)(puVar12 + 0x13) = *(undefined4 *)(lVar9 + 0x98);
    FUN_1805a4070(puVar12 + 0x14,lVar9 + 0xa0);
    FUN_18080fe30(puVar12 + 0x18);
    uVar2 = *(undefined4 *)(lVar9 + 0xdc);
    uVar3 = *(undefined4 *)(lVar9 + 0xe0);
    uVar4 = *(undefined4 *)(lVar9 + 0xe4);
    *(undefined4 *)(puVar12 + 0x1b) = *(undefined4 *)(lVar9 + 0xd8);
    *(undefined4 *)((longlong)puVar12 + 0xdc) = uVar2;
    *(undefined4 *)(puVar12 + 0x1c) = uVar3;
    *(undefined4 *)((longlong)puVar12 + 0xe4) = uVar4;
    *(undefined1 *)(puVar12 + 0x1d) = *(undefined1 *)(lVar9 + 0xe8);
    puVar12 = puVar12 + 0x1e;
  }
  puVar12 = (undefined8 *)*param_1;
  if (puVar12 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar10;
    param_1[1] = (longlong)(puVar10 + param_2 * 0x1e);
    param_1[2] = (longlong)(puVar10 + uVar13 * 0x1e);
    return;
  }
  puVar10 = (undefined8 *)param_1[1];
  for (; puVar12 != puVar10; puVar12 = puVar12 + 0x1e) {
    (**(code **)*puVar12)(puVar12,0);
  }
  pvVar1 = (void *)*param_1;
  lVar6 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar6 >> 7) - (lVar6 >> 0x3f)) * 0xf0)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d1150 size=769 ############

void FUN_1809d1150(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  
  puVar7 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  uVar1 = (longlong)((longlong)puVar7 - uVar10) / 0x230;
  uVar3 = (longlong)(param_1[2] - uVar10) / 0x230;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar1) {
      if (param_2 != uVar1) {
        puVar9 = (undefined8 *)(param_2 * 0x230 + uVar10);
        for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0x46) {
          (**(code **)*puVar8)(puVar8,0);
        }
        param_1[1] = (ulonglong)puVar9;
      }
      return;
    }
    for (lVar4 = param_2 - uVar1; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_180810fd0(puVar7);
      puVar7 = puVar7 + 0x46;
    }
    param_1[1] = (ulonglong)puVar7;
    return;
  }
  if (0x75075075075075 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0x75075075075075 - (uVar3 >> 1)) &&
     (uVar10 = (uVar3 >> 1) + uVar3, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar3 = uVar10 * 0x230;
  if (uVar10 < 0x75075075075076) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_1809d126f;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_1809d126f:
  lVar4 = uVar1 * 0x230 + uVar3;
  for (lVar11 = param_2 - uVar1; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_180810fd0(lVar4);
    lVar4 = lVar4 + 0x230;
  }
  uVar1 = param_1[1];
  uVar6 = uVar3;
  for (uVar5 = *param_1; uVar5 != uVar1; uVar5 = uVar5 + 0x230) {
    FUN_180810df0(uVar6);
    uVar6 = uVar6 + 0x230;
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = uVar3;
    param_1[1] = param_2 * 0x230 + uVar3;
    param_1[2] = uVar10 * 0x230 + uVar3;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0x46) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x230) * 0x230)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d1460 size=1102 ############

void FUN_1809d1460(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  void *_Memory;
  ulonglong uVar12;
  undefined8 *puVar13;
  
  puVar13 = (undefined8 *)param_1[1];
  lVar7 = *param_1;
  uVar2 = ((longlong)puVar13 - lVar7) / 0x140;
  uVar6 = (param_1[2] - lVar7) / 0x140;
  if (param_2 <= uVar6) {
    if (uVar2 < param_2) {
      for (lVar7 = param_2 - uVar2; lVar7 != 0; lVar7 = lVar7 + -1) {
        FUN_1809d3d60(puVar13);
        puVar13 = puVar13 + 0x28;
      }
      param_1[1] = (longlong)puVar13;
      return;
    }
    if (param_2 != uVar2) {
      puVar10 = (undefined8 *)(param_2 * 0x140 + lVar7);
      for (puVar11 = puVar10; puVar11 != puVar13; puVar11 = puVar11 + 0x28) {
        (**(code **)*puVar11)(puVar11,0);
      }
      param_1[1] = (longlong)puVar10;
    }
    return;
  }
  if (0xcccccccccccccc < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = param_2;
  if ((uVar6 <= 0xcccccccccccccc - (uVar6 >> 1)) &&
     (uVar12 = uVar6 + (uVar6 >> 1), uVar12 < param_2)) {
    uVar12 = param_2;
  }
  uVar6 = uVar12 * 0x140;
  if (uVar12 < 0xcccccccccccccd) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        puVar13 = (undefined8 *)0x0;
      }
      else {
        puVar13 = (undefined8 *)FUN_1811316e0(uVar6);
      }
      goto LAB_1809d1582;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar8 = uVar6 + 0x27;
  if (uVar8 <= uVar6) {
    uVar8 = 0xffffffffffffffff;
  }
  lVar7 = FUN_1811316e0(uVar8);
  if (lVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar13 = (undefined8 *)(lVar7 + 0x27U & 0xffffffffffffffe0);
  puVar13[-1] = lVar7;
LAB_1809d1582:
  puVar11 = puVar13 + uVar2 * 0x28;
  for (lVar7 = param_2 - uVar2; lVar7 != 0; lVar7 = lVar7 + -1) {
    FUN_1809d3d60(puVar11);
    puVar11 = puVar11 + 0x28;
  }
  lVar7 = param_1[1];
  puVar11 = puVar13;
  for (lVar9 = *param_1; lVar9 != lVar7; lVar9 = lVar9 + 0x140) {
    *puVar11 = license_services::LsIlokAuthWire::vftable;
    puVar11[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar11 + 2) = *(undefined4 *)(lVar9 + 0x10);
    puVar11[3] = *(undefined8 *)(lVar9 + 0x18);
    *(undefined2 *)(puVar11 + 4) = *(undefined2 *)(lVar9 + 0x20);
    *(undefined1 *)(puVar11 + 5) = *(undefined1 *)(lVar9 + 0x28);
    *(undefined4 *)((longlong)puVar11 + 0x2c) = *(undefined4 *)(lVar9 + 0x2c);
    *(undefined4 *)(puVar11 + 6) = *(undefined4 *)(lVar9 + 0x30);
    *(undefined1 *)((longlong)puVar11 + 0x34) = *(undefined1 *)(lVar9 + 0x34);
    FUN_1805a4070(puVar11 + 7,lVar9 + 0x38);
    FUN_1805a4070(puVar11 + 0xb,lVar9 + 0x58);
    *(undefined4 *)(puVar11 + 0xf) = *(undefined4 *)(lVar9 + 0x78);
    FUN_1805a4070(puVar11 + 0x10,lVar9 + 0x80);
    *(undefined4 *)(puVar11 + 0x14) = *(undefined4 *)(lVar9 + 0xa0);
    *(undefined4 *)((longlong)puVar11 + 0xa4) = *(undefined4 *)(lVar9 + 0xa4);
    FUN_1805a4070(puVar11 + 0x15,lVar9 + 0xa8);
    *(undefined4 *)(puVar11 + 0x19) = *(undefined4 *)(lVar9 + 200);
    *(undefined4 *)((longlong)puVar11 + 0xcc) = *(undefined4 *)(lVar9 + 0xcc);
    *(undefined1 *)(puVar11 + 0x1a) = *(undefined1 *)(lVar9 + 0xd0);
    FUN_1805a4070(puVar11 + 0x1b,lVar9 + 0xd8);
    FUN_18080fe30(puVar11 + 0x1f,lVar9 + 0xf8);
    FUN_18080fe30(puVar11 + 0x22);
    uVar3 = *(undefined4 *)(lVar9 + 300);
    uVar4 = *(undefined4 *)(lVar9 + 0x130);
    uVar5 = *(undefined4 *)(lVar9 + 0x134);
    *(undefined4 *)(puVar11 + 0x25) = *(undefined4 *)(lVar9 + 0x128);
    *(undefined4 *)((longlong)puVar11 + 300) = uVar3;
    *(undefined4 *)(puVar11 + 0x26) = uVar4;
    *(undefined4 *)((longlong)puVar11 + 0x134) = uVar5;
    *(undefined2 *)(puVar11 + 0x27) = *(undefined2 *)(lVar9 + 0x138);
    puVar11 = puVar11 + 0x28;
  }
  puVar11 = (undefined8 *)*param_1;
  if (puVar11 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar13;
    param_1[1] = (longlong)(puVar13 + param_2 * 0x28);
    param_1[2] = (longlong)(puVar13 + uVar12 * 0x28);
    return;
  }
  puVar13 = (undefined8 *)param_1[1];
  for (; puVar11 != puVar13; puVar11 = puVar11 + 0x28) {
    (**(code **)*puVar11)(puVar11,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x140) * 0x140)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d18c0 size=750 ############

void FUN_1809d18c0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong lVar12;
  undefined1 local_res8;
  undefined8 uVar13;
  longlong lVar14;
  
  uVar13 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)param_1[1];
  uVar10 = *param_1;
  lVar4 = ((longlong)puVar6 - uVar10) +
          SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)((longlong)puVar6 - uVar10)),8);
  uVar11 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  lVar4 = SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)(param_1[2] - uVar10)),8) +
          (param_1[2] - uVar10);
  uVar5 = (lVar4 >> 8) - (lVar4 >> 0x3f);
  if (param_2 <= uVar5) {
    if (param_2 <= uVar11) {
      if (param_2 != uVar11) {
        puVar8 = (undefined8 *)(param_2 * 0x198 + uVar10);
        for (puVar7 = puVar8; puVar7 != puVar6; puVar7 = puVar7 + 0x33) {
          (**(code **)*puVar7)(puVar7,0);
        }
        param_1[1] = (ulonglong)puVar8;
      }
      return;
    }
    for (lVar4 = param_2 - uVar11; lVar4 != 0; lVar4 = lVar4 + -1) {
      FUN_1809d4210(puVar6);
      puVar6 = puVar6 + 0x33;
    }
    param_1[1] = (ulonglong)puVar6;
    return;
  }
  if (0xa0a0a0a0a0a0a0 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar5 <= 0xa0a0a0a0a0a0a0 - (uVar5 >> 1)) &&
     (uVar10 = (uVar5 >> 1) + uVar5, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar2 = uVar10 * 0x198;
  uVar5 = uVar11;
  if (uVar10 < 0xa0a0a0a0a0a0a1) {
    if (uVar2 < 0x1000) {
      if (uVar2 == 0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FUN_1811316e0(uVar2);
      }
      goto LAB_1809d19e3;
    }
  }
  else {
    uVar2 = 0xffffffffffffffff;
  }
  uVar3 = uVar2 + 0x27;
  if (uVar3 <= uVar2) {
    uVar3 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar3);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar2 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar2 - 8) = lVar4;
LAB_1809d19e3:
  lVar9 = uVar11 * 0x198 + uVar2;
  lVar4 = lVar9;
  uVar11 = uVar2;
  lVar14 = lVar9;
  for (lVar12 = param_2 - uVar5; lVar12 != 0; lVar12 = lVar12 + -1) {
    FUN_1809d4210(lVar9);
    lVar9 = lVar9 + 0x198;
  }
  local_res8 = SUB81(param_1,0);
  FUN_1809d22e0(*param_1,param_1[1],uVar2,param_1,0,local_res8,uVar5,lVar4,uVar11,uVar13,lVar14,
                lVar9,param_3);
  puVar6 = (undefined8 *)*param_1;
  if (puVar6 == (undefined8 *)0x0) {
    *param_1 = uVar2;
    param_1[1] = param_2 * 0x198 + uVar2;
    param_1[2] = uVar10 * 0x198 + uVar2;
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar6 != puVar7; puVar6 = puVar6 + 0x33) {
    (**(code **)*puVar6)(puVar6,0);
  }
  pvVar1 = (void *)*param_1;
  lVar4 = SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)(param_1[2] - (longlong)pvVar1)),8
                ) + (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar4 >> 8) - (lVar4 >> 0x3f)) * 0x198)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809d1bc0 size=845 ############

void FUN_1809d1bc0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  
  puVar7 = (undefined8 *)param_1[1];
  lVar6 = *param_1;
  lVar3 = ((longlong)puVar7 - lVar6) +
          SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816((longlong)puVar7 - lVar6),8);
  uVar5 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816(param_1[2] - lVar6),8) +
          (param_1[2] - lVar6);
  uVar4 = (lVar3 >> 7) - (lVar3 >> 0x3f);
  local_res18 = param_3;
  if (param_2 <= uVar4) {
    if (param_2 <= uVar5) {
      if (param_2 != uVar5) {
        puVar8 = (undefined8 *)(param_2 * 0xb8 + lVar6);
        for (puVar9 = puVar8; puVar9 != puVar7; puVar9 = puVar9 + 0x17) {
          (**(code **)*puVar9)(puVar9,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    lVar3 = FUN_1809d5f80(&local_res18,puVar7,param_2 - uVar5);
    param_1[1] = lVar3;
    return;
  }
  if (0x1642c8590b21642 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar4 <= 0x1642c8590b21642 - (uVar4 >> 1)) &&
     (uVar10 = (uVar4 >> 1) + uVar4, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  uVar4 = uVar10 * 0xb8;
  local_res20 = uVar10;
  if (uVar10 < 0x1642c8590b21643) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        puVar7 = (undefined8 *)0x0;
      }
      else {
        puVar7 = (undefined8 *)FUN_1811316e0(uVar4);
      }
      goto LAB_1809d1cdf;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar2 = uVar4 + 0x27;
  if (uVar2 <= uVar4) {
    uVar2 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar2);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar7 = (undefined8 *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  puVar7[-1] = lVar3;
LAB_1809d1cdf:
  FUN_1809d5f80(&local_res18,puVar7 + uVar5 * 0x17,param_2 - uVar5);
  lVar3 = param_1[1];
  puVar9 = puVar7;
  for (lVar6 = *param_1; lVar6 != lVar3; lVar6 = lVar6 + 0xb8) {
    *puVar9 = license_services::LsZZTestToOneWire::vftable;
    puVar9[1] = license_services::LsRelation::vftable;
    *(undefined4 *)(puVar9 + 2) = *(undefined4 *)(lVar6 + 0x10);
    puVar9[3] = *(undefined8 *)(lVar6 + 0x18);
    *(undefined2 *)(puVar9 + 4) = *(undefined2 *)(lVar6 + 0x20);
    *(undefined1 *)(puVar9 + 5) = *(undefined1 *)(lVar6 + 0x28);
    FUN_1805a4070(puVar9 + 6,lVar6 + 0x30);
    FUN_1805a4070(puVar9 + 10,lVar6 + 0x50);
    *(undefined4 *)(puVar9 + 0xe) = *(undefined4 *)(lVar6 + 0x70);
    *(undefined1 *)((longlong)puVar9 + 0x74) = *(undefined1 *)(lVar6 + 0x74);
    FUN_1805a4070(puVar9 + 0xf,lVar6 + 0x78);
    FUN_18080fe30(puVar9 + 0x13);
    puVar9[0x16] = *(undefined8 *)(lVar6 + 0xb0);
    puVar9 = puVar9 + 0x17;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + param_2 * 0x17);
    param_1[2] = (longlong)(puVar7 + uVar10 * 0x17);
    return;
  }
  puVar7 = (undefined8 *)param_1[1];
  for (; puVar9 != puVar7; puVar9 = puVar9 + 0x17) {
    (**(code **)*puVar9)(puVar9,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xb8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180a0c2a0 size=97 ############

undefined8 * FUN_180a0c2a0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Asn1Container>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a0c310 size=96 ############

undefined8 * FUN_180a0c310(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Asn1Content>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a0d380 size=578 ############

void FUN_180a0d380(undefined8 *param_1,uint *param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  int iVar2;
  longlong lVar3;
  char *pcVar4;
  undefined8 uVar5;
  uint uVar6;
  byte *pbVar7;
  longlong local_res8;
  char *local_res10;
  
  pbVar7 = (byte *)*param_1;
  if (param_1[1] - (longlong)pbVar7 == 0xd) {
    uVar6 = 0x20;
    if (0x34 < *pbVar7) {
      uVar6 = 0x19;
    }
    *param_2 = uVar6;
  }
  else {
    if (param_1[1] - (longlong)pbVar7 != 0xf) {
      local_res8 = FUN_1811316e0(0x18);
      if (local_res8 != 0) {
        FUN_1805a48c0(local_res8,"Invalid cert time size");
      }
      lVar3 = FUN_1805c0260();
      local_res8 = CONCAT44(local_res8._4_4_,0x84);
      local_res10 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&local_res8);
    }
    bVar1 = *pbVar7;
    *param_2 = bVar1 - 0x30;
    *param_2 = pbVar7[1] - 0x30 | (bVar1 - 0x30) * 0x10;
    pbVar7 = pbVar7 + 2;
  }
  uVar6 = *pbVar7 - 0x30 | *param_2 << 4;
  *param_2 = uVar6;
  uVar6 = pbVar7[1] - 0x30 | uVar6 << 4;
  *param_2 = uVar6;
  uVar6 = pbVar7[2] - 0x30 | uVar6 << 4;
  *param_2 = uVar6;
  uVar6 = pbVar7[3] - 0x30 | uVar6 << 4;
  *param_2 = uVar6;
  uVar6 = pbVar7[4] - 0x30 | uVar6 << 4;
  *param_2 = uVar6;
  *param_2 = pbVar7[5] - 0x30 | uVar6 << 4;
  param_2[1] = 0;
  bVar1 = pbVar7[6];
  param_2[1] = bVar1 - 0x30;
  uVar6 = pbVar7[7] - 0x30 | (bVar1 - 0x30) * 0x10;
  param_2[1] = uVar6;
  uVar6 = pbVar7[8] - 0x30 | uVar6 << 4;
  param_2[1] = uVar6;
  uVar6 = pbVar7[9] - 0x30 | uVar6 << 4;
  param_2[1] = uVar6;
  uVar6 = pbVar7[10] - 0x30 | uVar6 << 4;
  param_2[1] = uVar6;
  param_2[1] = (pbVar7[0xb] - 0x30 | uVar6 << 4) << 8;
  iVar2 = FUN_18061e680(param_2,0,0,param_4,0xfffffffffffffffe);
  local_res8 = CONCAT44(local_res8._4_4_,iVar2);
  if (iVar2 == 0) {
    return;
  }
  local_res10 = (char *)FUN_1811316e0(0x18);
  if (local_res10 == (char *)0x0) {
    lVar3 = 0;
  }
  else {
    lVar3 = FUN_1805a48c0(local_res10,
                          "[%d] UTILS_CheckAndAddTime error. Invalid resulting iLokTime in Asn1ParserCert::ConvertCertTimeToILokTime"
                         );
  }
  pcVar4 = (char *)FUN_1811316e0(0x18);
  local_res10 = pcVar4;
  if (pcVar4 == (char *)0x0) {
    pcVar4 = (char *)0x0;
  }
  else {
    FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_18060e760(*(undefined8 *)(lVar3 + 8),&local_res8);
  local_res8 = CONCAT44(local_res8._4_4_,0xa3);
  local_res10 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,&local_res8);
}



############ FUN_ 180a0d5f0 size=405 ############

void FUN_180a0d5f0(uint *param_1,undefined8 *param_2,undefined1 *param_3,undefined8 param_4)

{
  longlong lVar1;
  char *pcVar2;
  undefined8 uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int local_res8 [2];
  char *local_res10;
  
  local_res8[0] = FUN_18061e680(param_1,0,0,param_4,0xfffffffffffffffe);
  if (local_res8[0] != 0) {
    local_res10 = (char *)FUN_1811316e0(0x18);
    if (local_res10 == (char *)0x0) {
      lVar1 = 0;
    }
    else {
      lVar1 = FUN_1805a48c0(local_res10,
                            "[%d] UTILS_CheckAndAddTime error. Invalid input iLokTime in Asn1ParserCert::ConvertILokTimeToCertTime"
                           );
    }
    pcVar2 = (char *)FUN_1811316e0(0x18);
    local_res10 = pcVar2;
    if (pcVar2 == (char *)0x0) {
      pcVar2 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar2,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar1 + 8),local_res8);
    local_res8[0] = 0xba;
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar3 = FUN_1805a21d0(*(undefined8 *)(pcVar2 + 8),&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,local_res8);
  }
  if (*(ushort *)((longlong)param_1 + 2) - 0x1950 < 0x6fa) {
    *param_3 = 0x17;
    iVar6 = 6;
    uVar5 = 0xd;
  }
  else {
    *param_3 = 0x18;
    iVar6 = 8;
    uVar5 = 0xf;
  }
  FUN_1805b0f50(param_2,uVar5,param_2);
  pcVar2 = (char *)*param_2;
  if (iVar6 != 0) {
    iVar4 = iVar6 * 4;
    do {
      iVar4 = iVar4 + -4;
      *pcVar2 = ((byte)(*param_1 >> ((byte)iVar4 & 0x1f)) & 0xf) + 0x30;
      pcVar2 = pcVar2 + 1;
      iVar6 = iVar6 + -1;
    } while (iVar6 != 0);
  }
  *pcVar2 = (byte)(param_1[1] >> 0x1c) + 0x30;
  pcVar2[1] = (*(byte *)((longlong)param_1 + 7) & 0xf) + 0x30;
  pcVar2[2] = ((byte)(param_1[1] >> 0x14) & 0xf) + 0x30;
  pcVar2[3] = (*(byte *)((longlong)param_1 + 6) & 0xf) + 0x30;
  pcVar2[4] = ((byte)(param_1[1] >> 0xc) & 0xf) + 0x30;
  pcVar2[5] = ((byte)(param_1[1] >> 8) & 0xf) + 0x30;
  pcVar2[6] = 'Z';
  return;
}



############ FUN_ 180a0f090 size=552 ############

longlong * FUN_180a0f090(longlong *param_1,longlong *param_2,int param_3,undefined1 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined4 local_res18 [2];
  char *local_res20;
  undefined1 local_68 [8];
  longlong *local_60;
  undefined1 local_58 [8];
  longlong *local_50;
  undefined1 local_48 [8];
  longlong *local_40;
  undefined1 local_38 [8];
  longlong *local_30;
  
  *param_2 = 0;
  param_2[1] = 0;
  if (param_3 == 0) {
    uVar4 = (**(code **)(*param_1 + 0x18))(param_1,local_68,&DAT_181c09e8c);
    FUN_18067dba0(param_2,uVar4);
    if (local_60 != (longlong *)0x0) {
      LOCK();
      plVar3 = local_60 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_60 + 8))(local_60);
        LOCK();
        piVar1 = (int *)((longlong)local_60 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_60 + 0x10))(local_60);
        }
      }
    }
    if (*param_2 == 0) {
      local_res20 = (char *)FUN_1811316e0(0x18);
      if (local_res20 != (char *)0x0) {
        FUN_1805a48c0(local_res20,"Main Public Key is missing");
      }
      lVar5 = FUN_1805c0260();
      local_res18[0] = 300;
      local_res20 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar5 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar4,local_res18);
    }
  }
  else {
    uVar4 = (**(code **)(*param_1 + 0x30))
                      (param_1,local_58,&DAT_181c09a20,param_4,1,0xfffffffffffffffe);
    FUN_18067dba0(param_2,uVar4);
    if (local_50 != (longlong *)0x0) {
      LOCK();
      plVar3 = local_50 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_50 + 8))(local_50);
        LOCK();
        piVar1 = (int *)((longlong)local_50 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_50 + 0x10))(local_50);
        }
      }
    }
    plVar3 = (longlong *)*param_2;
    if (plVar3 != (longlong *)0x0) {
      uVar4 = (**(code **)(*plVar3 + 0x38))(plVar3,local_48,1,0x30);
      FUN_18067dba0(param_2,uVar4);
      if (local_40 != (longlong *)0x0) {
        LOCK();
        plVar3 = local_40 + 1;
        lVar5 = *plVar3;
        *(int *)plVar3 = (int)*plVar3 + -1;
        UNLOCK();
        if ((int)lVar5 == 1) {
          (**(code **)(*local_40 + 8))(local_40);
          LOCK();
          piVar1 = (int *)((longlong)local_40 + 0xc);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)(*local_40 + 0x10))(local_40);
          }
        }
      }
      plVar3 = (longlong *)*param_2;
      if (plVar3 != (longlong *)0x0) {
        uVar4 = (**(code **)(*plVar3 + 0x38))(plVar3,local_38,param_3,0x30);
        FUN_18067dba0(param_2,uVar4);
        if (local_30 != (longlong *)0x0) {
          LOCK();
          plVar3 = local_30 + 1;
          lVar5 = *plVar3;
          *(int *)plVar3 = (int)*plVar3 + -1;
          UNLOCK();
          if ((int)lVar5 == 1) {
            (**(code **)(*local_30 + 8))(local_30);
            LOCK();
            piVar1 = (int *)((longlong)local_30 + 0xc);
            iVar2 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar2 == 1) {
              (**(code **)(*local_30 + 0x10))(local_30);
            }
          }
        }
      }
    }
  }
  return param_2;
}



############ FUN_ 180a10d40 size=559 ############

void FUN_180a10d40(longlong *param_1,undefined4 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined4 uVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  void *_Memory;
  undefined8 *local_res8;
  char *local_res10;
  undefined1 local_50 [8];
  longlong *local_48;
  void *local_40;
  undefined8 uStack_38;
  longlong local_30;
  
  local_40 = (void *)0x0;
  uStack_38 = 0;
  local_30 = 0;
  plVar7 = (longlong *)
           (**(code **)(*param_1 + 0x18))(0,local_50,&DAT_181c09e30,param_4,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar7;
  plVar4 = (longlong *)plVar7[1];
  plVar7[1] = 0;
  *plVar7 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar7 = local_48 + 1;
    lVar5 = *plVar7;
    *(int *)plVar7 = (int)*plVar7 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 == (longlong *)0x0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"CertSerialNumber is missing");
    }
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar8;
    if (puVar8 == (undefined8 *)0x0) {
      puVar8 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1d2);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar9 = FUN_1805a21d0(puVar8[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar9,&local_res8);
  }
  (**(code **)(*plVar3 + 0x30))(plVar3,&local_40);
  FUN_180b226d0(&local_40,0xf);
  uVar6 = FUN_180b214f0(local_40,4);
  *param_2 = uVar6;
  uVar6 = FUN_180b214f0((longlong)local_40 + 4,4);
  param_2[1] = uVar6;
  uVar6 = FUN_180b214f0((longlong)local_40 + 8,3);
  param_2[2] = uVar6;
  uVar6 = FUN_180b214f0((longlong)local_40 + 0xb,4);
  param_2[3] = uVar6;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar3 = plVar4 + 1;
    lVar5 = *plVar3;
    *(int *)plVar3 = (int)*plVar3 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_40 == (void *)0x0) {
    return;
  }
  _Memory = local_40;
  if ((0xfff < (ulonglong)(local_30 - (longlong)local_40)) &&
     (_Memory = *(void **)((longlong)local_40 + -8),
     0x1f < (ulonglong)((longlong)local_40 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180a10f90 size=437 ############

void FUN_180a10f90(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099e0,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "CertificateClass is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1a6);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a11160 size=437 ############

void FUN_180a11160(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099d4,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "DeviceHardwareVersion is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x215);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a11330 size=437 ############

void FUN_180a11330(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099d8,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "DeviceName is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x247);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a11500 size=437 ############

void FUN_180a11500(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c09984,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "DeviceSerialNumber is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x279);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a11730 size=1704 ############

void FUN_180a11730(longlong *param_1,undefined4 param_2,undefined4 *param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  char cVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  longlong lVar10;
  void *_Memory;
  longlong local_res8;
  void *local_178;
  longlong lStack_170;
  longlong local_168;
  undefined4 local_160 [2];
  undefined4 local_158 [2];
  undefined4 local_150 [2];
  undefined4 local_148 [2];
  int local_140 [2];
  undefined4 local_138 [2];
  longlong *local_130;
  longlong *plStack_128;
  undefined8 local_120;
  char *local_118;
  char *local_110;
  char *local_108;
  char *local_100;
  char *local_f8;
  longlong *local_f0;
  longlong *plStack_e8;
  longlong *local_e0;
  char *local_d0;
  longlong *local_c8;
  longlong *plStack_c0;
  longlong *local_b8;
  longlong *local_a8;
  longlong *local_98;
  undefined8 local_88;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  undefined1 local_50 [8];
  longlong *local_48;
  
  local_88 = 0xfffffffffffffffe;
  local_178 = (void *)0x0;
  lStack_170 = 0;
  lVar8 = 0;
  local_168 = 0;
  local_c8 = (longlong *)0x0;
  plStack_c0 = (longlong *)0x0;
  local_130 = (longlong *)0x0;
  plStack_128 = (longlong *)0x0;
  local_f0 = (longlong *)0x0;
  plStack_e8 = (longlong *)0x0;
  FUN_18070ac10(param_4);
  puVar7 = (undefined8 *)(**(code **)(*param_1 + 0x38))(param_1,local_80,param_2);
  local_c8 = (longlong *)*puVar7;
  plVar4 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_c0 = plVar4;
  local_a8 = local_c8;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_78 + 1;
    lVar10 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar10 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (local_a8 == (longlong *)0x0) {
    *param_3 = 0xffffffff;
  }
  else {
    puVar7 = (undefined8 *)(**(code **)(*local_a8 + 0x38))(local_a8,local_70,1,0x30);
    local_130 = (longlong *)*puVar7;
    plVar5 = (longlong *)puVar7[1];
    puVar7[1] = 0;
    *puVar7 = 0;
    plStack_128 = plVar5;
    local_b8 = local_130;
    if (local_68 != (longlong *)0x0) {
      LOCK();
      plVar2 = local_68 + 1;
      lVar10 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar10 == 1) {
        (**(code **)(*local_68 + 8))(local_68);
        LOCK();
        piVar1 = (int *)((longlong)local_68 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*local_68 + 0x10))(local_68);
        }
      }
    }
    if (local_b8 == (longlong *)0x0) {
      local_res8 = FUN_1811316e0(0x18);
      if (local_res8 == 0) {
        local_120 = 0;
      }
      else {
        local_120 = FUN_1805a48c0(local_res8,"Sequence containing the PKStandard is missing");
      }
      lVar8 = FUN_1805c0260();
      local_res8 = CONCAT44(local_res8._4_4_,0x2c2);
      local_d0 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_d0);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,&local_res8);
    }
    puVar7 = (undefined8 *)(**(code **)(*local_b8 + 0x38))(local_b8,local_60,2,6);
    local_130 = (longlong *)*puVar7;
    plStack_128 = (longlong *)puVar7[1];
    puVar7[1] = 0;
    *puVar7 = 0;
    local_e0 = local_130;
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar5 + 1;
      lVar10 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar10 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (local_58 != (longlong *)0x0) {
      LOCK();
      plVar5 = local_58 + 1;
      lVar10 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar10 == 1) {
        (**(code **)(*local_58 + 8))(local_58);
        LOCK();
        piVar1 = (int *)((longlong)local_58 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*local_58 + 0x10))(local_58);
        }
      }
    }
    if (local_e0 == (longlong *)0x0) {
      local_118 = (char *)FUN_1811316e0(0x18);
      if (local_118 != (char *)0x0) {
        FUN_1805a48c0(local_118,"Public Key PKStandard is missing");
      }
      lVar8 = FUN_1805c0260();
      local_160[0] = 0x2c4;
      local_118 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_118);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_160);
    }
    (**(code **)(*local_e0 + 0x30))(local_e0,&local_178);
    cVar6 = (**(code **)(*param_1 + 0x188))(param_1,&DAT_181bf4110,&local_178);
    if (cVar6 == '\0') {
      cVar6 = (**(code **)(*param_1 + 0x188))(param_1,&DAT_181bf4118,&local_178);
      if (cVar6 == '\0') {
        cVar6 = (**(code **)(*param_1 + 0x188))(param_1,&DAT_181bf4124,&local_178);
        if (cVar6 == '\0') {
          cVar6 = (**(code **)(*param_1 + 0x188))(param_1,&DAT_181bf4130,&local_178);
          if (cVar6 == '\0') {
            local_110 = (char *)FUN_1811316e0(0x18);
            if (local_110 != (char *)0x0) {
              FUN_1805a48c0(local_110,"Unsupported PKStandard found in certificate");
            }
            lVar8 = FUN_1805c0260();
            local_158[0] = 0x2da;
            local_110 = 
            "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp"
            ;
            uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_110);
                    /* WARNING: Subroutine does not return */
            FUN_1805b20d0(uVar9,local_158);
          }
          *param_3 = 3;
        }
        else {
          *param_3 = 2;
        }
      }
      else {
        *param_3 = 1;
      }
    }
    else {
      *param_3 = 0;
    }
    puVar7 = (undefined8 *)(**(code **)(*local_a8 + 0x38))(local_a8,local_50,1,3);
    local_f0 = (longlong *)*puVar7;
    plStack_e8 = (longlong *)puVar7[1];
    puVar7[1] = 0;
    *puVar7 = 0;
    local_98 = local_f0;
    if (local_48 != (longlong *)0x0) {
      LOCK();
      plVar5 = local_48 + 1;
      lVar10 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar10 == 1) {
        (**(code **)(*local_48 + 8))(local_48);
        LOCK();
        piVar1 = (int *)((longlong)local_48 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*local_48 + 0x10))(local_48);
        }
      }
    }
    if (local_98 == (longlong *)0x0) {
      local_108 = (char *)FUN_1811316e0(0x18);
      if (local_108 != (char *)0x0) {
        FUN_1805a48c0(local_108,"Public Key Value is missing");
      }
      lVar8 = FUN_1805c0260();
      local_150[0] = 0x2df;
      local_108 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_108);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_150);
    }
    (**(code **)(*local_98 + 0x30))(local_98,&local_178);
    if ((int)(lStack_170 - (longlong)local_178) == 0) {
      local_100 = (char *)FUN_1811316e0(0x18);
      if (local_100 != (char *)0x0) {
        FUN_1805a48c0(local_100,"Public Key Value content is missing");
      }
      lVar8 = FUN_1805c0260();
      local_148[0] = 0x2e4;
      local_100 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_100);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_148);
    }
    local_140[0] = FUN_180a028e0(*param_3,local_178,lStack_170 - (longlong)local_178 & 0xffffffff,
                                 param_4);
    if (local_140[0] != 0) {
      local_f8 = (char *)FUN_1811316e0(0x18);
      if (local_f8 != (char *)0x0) {
        lVar8 = FUN_1805a48c0(local_f8,
                              "[%d] CERT_InterpretECC_PublicKeyValue error in Asn1ParserCert::GetEccPublicKey"
                             );
      }
      lVar10 = FUN_1805c0260();
      FUN_18060e760(*(undefined8 *)(lVar8 + 8),local_140);
      local_138[0] = 0x2f4;
      local_f8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar10 + 8),&local_f8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_138);
    }
  }
  plVar5 = plStack_e8;
  if (plStack_e8 != (longlong *)0x0) {
    LOCK();
    plVar2 = plStack_e8 + 1;
    lVar8 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*plStack_e8 + 8))(plStack_e8);
      LOCK();
      piVar1 = (int *)((longlong)plVar5 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_e8 + 0x10))();
      }
    }
  }
  plVar5 = plStack_128;
  if (plStack_128 != (longlong *)0x0) {
    LOCK();
    plVar2 = plStack_128 + 1;
    lVar8 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*plStack_128 + 8))(plStack_128);
      LOCK();
      piVar1 = (int *)((longlong)plVar5 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_128 + 0x10))();
      }
    }
  }
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar5 = plVar4 + 1;
    lVar8 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_178 == (void *)0x0) {
    return;
  }
  _Memory = local_178;
  if ((0xfff < (ulonglong)(local_168 - (longlong)local_178)) &&
     (_Memory = *(void **)((longlong)local_178 + -8),
     0x1f < (ulonglong)((longlong)local_178 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180a11eb0 size=1415 ############

void FUN_180a11eb0(longlong *param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  int iVar5;
  undefined8 *puVar6;
  char *pcVar7;
  undefined8 uVar8;
  longlong lVar9;
  char *pcVar10;
  char *pcVar11;
  void *_Memory;
  char *local_res8;
  undefined4 local_res10 [2];
  undefined4 local_res18 [2];
  undefined8 *local_res20;
  undefined4 local_108 [2];
  undefined4 local_100 [2];
  undefined4 local_f8 [2];
  char *local_f0;
  void *local_e8;
  longlong lStack_e0;
  longlong local_d8;
  longlong *local_d0;
  longlong *plStack_c8;
  longlong *local_c0;
  char *local_b0;
  char *local_a8;
  char *local_a0;
  char *local_98;
  char *local_90;
  longlong *local_88;
  undefined8 local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  
  local_78 = 0xfffffffffffffffe;
  local_e8 = (void *)0x0;
  lStack_e0 = 0;
  local_d8 = 0;
  local_d0 = (longlong *)0x0;
  plStack_c8 = (longlong *)0x0;
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x18))(0,local_70,&DAT_181c09eb0);
  local_d0 = (longlong *)*puVar6;
  plVar3 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  plStack_c8 = plVar3;
  local_88 = local_d0;
  if (local_68 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_68 + 1;
    lVar9 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*local_68 + 8))(local_68);
      LOCK();
      piVar1 = (int *)((longlong)local_68 + 0xc);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)(*local_68 + 0x10))(local_68);
      }
    }
  }
  if (local_88 == (longlong *)0x0) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"signatureEcdsa_R is missing");
    }
    pcVar7 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar7;
    if (pcVar7 == (char *)0x0) {
      pcVar7 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar7,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar7 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res10[0] = 0x423;
    local_b0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_b0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,local_res10);
  }
  (**(code **)(*local_88 + 0x30))(local_88,&local_e8);
  if (lStack_e0 - (longlong)local_e8 == 0) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"signatureEcdsa_R data is missing");
    }
    pcVar7 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar7;
    if (pcVar7 == (char *)0x0) {
      pcVar7 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar7,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar7 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res18[0] = 0x428;
    local_a8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_a8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,local_res18);
  }
  iVar5 = FUN_180707db0(lStack_e0 - (longlong)local_e8 & 0xffffffff,local_e8,param_2);
  local_res8 = (char *)CONCAT44(local_res8._4_4_,iVar5);
  if (iVar5 != 0) {
    local_res20 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res20 == (undefined8 *)0x0) {
      lVar9 = 0;
    }
    else {
      lVar9 = FUN_1805a48c0(local_res20,
                            "[%d] BIG_BytesToBigNumber error- Getting the R Signature in Asn1ParserCert::GetEcdsaSignature"
                           );
    }
    puVar6 = (undefined8 *)FUN_1811316e0(0x18);
    local_res20 = puVar6;
    if (puVar6 == (undefined8 *)0x0) {
      puVar6 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar6,"|__FILE__|%s|__LINE__|%d");
      *puVar6 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar9 + 8),&local_res8);
    local_res20 = (undefined8 *)CONCAT44(local_res20._4_4_,0x431);
    local_a0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(puVar6[1],&local_a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,&local_res20);
  }
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_60,&DAT_181c09ec0);
  local_d0 = (longlong *)*puVar6;
  plVar4 = (longlong *)puVar6[1];
  pcVar7 = (char *)0x0;
  puVar6[1] = 0;
  *puVar6 = 0;
  plStack_c8 = plVar4;
  local_c0 = local_d0;
  if (plVar3 != (longlong *)0x0) {
    LOCK();
    plVar2 = plVar3 + 1;
    lVar9 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*plVar3 + 8))(plVar3);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)(*plVar3 + 0x10))(plVar3);
      }
    }
  }
  if (local_58 != (longlong *)0x0) {
    LOCK();
    plVar3 = local_58 + 1;
    lVar9 = *plVar3;
    *(int *)plVar3 = (int)*plVar3 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*local_58 + 8))(local_58);
      LOCK();
      piVar1 = (int *)((longlong)local_58 + 0xc);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)(*local_58 + 0x10))(local_58);
      }
    }
  }
  if (local_c0 == (longlong *)0x0) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"signatureEcdsa_S is missing");
    }
    pcVar10 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar10;
    if (pcVar10 != (char *)0x0) {
      FUN_1805a48c0(pcVar10,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar10 = pace::PaceLocationInfoFormatter::vftable;
      pcVar7 = pcVar10;
    }
    local_108[0] = 0x436;
    local_98 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,local_108);
  }
  (**(code **)(*local_c0 + 0x30))(local_c0,&local_e8);
  if (lStack_e0 - (longlong)local_e8 == 0) {
    local_res8 = (char *)FUN_1811316e0(0x18);
    if (local_res8 != (char *)0x0) {
      FUN_1805a48c0(local_res8,"signatureEcdsa_S data is missing");
    }
    pcVar10 = (char *)FUN_1811316e0(0x18);
    local_res8 = pcVar10;
    if (pcVar10 != (char *)0x0) {
      FUN_1805a48c0(pcVar10,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar10 = pace::PaceLocationInfoFormatter::vftable;
      pcVar7 = pcVar10;
    }
    local_100[0] = 0x43b;
    local_90 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,local_100);
  }
  iVar5 = FUN_180707db0(lStack_e0 - (longlong)local_e8 & 0xffffffff,local_e8,param_2 + 0x38);
  local_res8 = (char *)CONCAT44(local_res8._4_4_,iVar5);
  if (iVar5 == 0) {
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar9 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar5 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar5 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    if (local_e8 == (void *)0x0) {
      return;
    }
    _Memory = local_e8;
    if ((0xfff < (ulonglong)(local_d8 - (longlong)local_e8)) &&
       (_Memory = *(void **)((longlong)local_e8 + -8),
       0x1f < (ulonglong)((longlong)local_e8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_f0 = (char *)FUN_1811316e0(0x18);
  pcVar10 = pcVar7;
  if (local_f0 != (char *)0x0) {
    pcVar10 = (char *)FUN_1805a48c0(local_f0,
                                    "[%d] BIG_BytesToBigNumber error- Getting the S Signature in Asn1ParserCert::GetEcdsaSignature"
                                   );
  }
  pcVar11 = (char *)FUN_1811316e0(0x18);
  local_f0 = pcVar11;
  if (pcVar11 != (char *)0x0) {
    FUN_1805a48c0(pcVar11,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar11 = pace::PaceLocationInfoFormatter::vftable;
    pcVar7 = pcVar11;
  }
  FUN_18060e760(*(undefined8 *)(pcVar10 + 8),&local_res8);
  local_f8[0] = 0x444;
  local_f0 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(*(undefined8 *)(pcVar7 + 8),&local_f0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,local_f8);
}



############ FUN_ 180a124b0 size=1900 ############

void FUN_180a124b0(longlong *param_1,char *param_2,longlong param_3)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined1 uVar7;
  undefined4 uVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  uint uVar12;
  ulonglong uVar13;
  char *pcVar14;
  ulonglong uVar15;
  undefined8 *local_res8;
  undefined8 *local_res10;
  longlong local_res18;
  undefined8 *local_res20;
  undefined4 local_138 [2];
  undefined4 local_130 [4];
  undefined4 local_120 [2];
  undefined4 local_118 [2];
  undefined4 local_110 [2];
  char *local_108;
  char *local_100 [2];
  char *local_f0;
  char *local_e8;
  char *local_e0;
  longlong lStack_d8;
  longlong local_d0;
  longlong *local_c8;
  longlong *plStack_c0;
  longlong *local_b8;
  char *local_a8;
  char *local_a0;
  char *local_98;
  longlong *local_90;
  undefined8 local_80;
  undefined1 local_78 [8];
  longlong *local_70;
  undefined1 local_68 [8];
  longlong *local_60;
  undefined1 local_58 [24];
  
  local_80 = 0xfffffffffffffffe;
  local_e0 = (char *)0x0;
  lStack_d8 = 0;
  puVar10 = (undefined8 *)0x0;
  local_d0 = 0;
  local_c8 = (longlong *)0x0;
  plStack_c0 = (longlong *)0x0;
  local_res18 = param_3;
  if (param_3 != 0) {
    FUN_1805bcdc0(param_3);
  }
  puVar9 = (undefined8 *)(**(code **)(*param_1 + 0x30))(param_1,local_78,&DAT_181c099f0);
  local_c8 = (longlong *)*puVar9;
  plVar4 = (longlong *)puVar9[1];
  puVar9[1] = 0;
  *puVar9 = 0;
  plStack_c0 = plVar4;
  local_90 = local_c8;
  if (local_70 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_70 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_70 + 8))(local_70);
      LOCK();
      piVar1 = (int *)((longlong)local_70 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_70 + 0x10))(local_70);
      }
    }
  }
  if (local_90 == (longlong *)0x0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"ILokExtensionPrivileges extension is missing");
    }
    puVar10 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar10;
    if (puVar10 == (undefined8 *)0x0) {
      puVar10 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar10,"|__FILE__|%s|__LINE__|%d");
      *puVar10 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x4a9);
    local_a8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar11 = FUN_1805a21d0(puVar10[1],&local_a8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar11,&local_res8);
  }
  puVar9 = (undefined8 *)(**(code **)(*local_90 + 0x38))(local_90,local_68,1,2);
  local_c8 = (longlong *)*puVar9;
  plVar5 = (longlong *)puVar9[1];
  puVar9[1] = 0;
  *puVar9 = 0;
  plStack_c0 = plVar5;
  local_b8 = local_c8;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar2 = plVar4 + 1;
    lVar6 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_60 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_60 + 1;
    lVar6 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_60 + 8))(local_60);
      LOCK();
      piVar1 = (int *)((longlong)local_60 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_60 + 0x10))(local_60);
      }
    }
  }
  if (local_b8 == (longlong *)0x0) {
    local_res10 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res10 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res10,"ILokExtensionPrivileges extension integer is missing");
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_res10 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar10 = puVar9;
    }
    local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x4ad);
    local_a0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar11 = FUN_1805a21d0(puVar10[1],&local_a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar11,&local_res10);
  }
  (**(code **)(*local_b8 + 0x30))(local_b8);
  pcVar14 = local_e0;
  uVar15 = lStack_d8 - (longlong)local_e0;
  if (uVar15 < 0xc) {
    local_res20 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res20 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res20,"ILokExtensionPrivileges extension required integer data is missing"
                   );
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_res20 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar10 = puVar9;
    }
    local_res20 = (undefined8 *)CONCAT44(local_res20._4_4_,0x4b2);
    local_98 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar11 = FUN_1805a21d0(puVar10[1],&local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar11,&local_res20);
  }
  memset(param_2,0,0x80);
  *param_2 = *pcVar14;
  param_2[1] = pcVar14[1];
  param_2[2] = pcVar14[2];
  param_2[3] = pcVar14[3];
  uVar8 = FUN_180b214f0(pcVar14 + 4,4);
  *(undefined4 *)(param_2 + 4) = uVar8;
  uVar8 = FUN_180b214f0(pcVar14 + 8,4);
  *(undefined4 *)(param_2 + 8) = uVar8;
  pcVar14 = pcVar14 + 0xc;
  uVar15 = uVar15 - 0xc;
  if (0x7e < (byte)(*param_2 - 1U)) {
    local_108 = (char *)FUN_1811316e0(0x18);
    if (local_108 != (char *)0x0) {
      FUN_1805a48c0(local_108,"ILokExtensionPrivileges have a bad cert level value");
    }
    pcVar14 = (char *)FUN_1811316e0(0x18);
    if (pcVar14 == (char *)0x0) {
      pcVar14 = (char *)0x0;
    }
    else {
      local_108 = pcVar14;
      FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_138[0] = 0x4c9;
    local_108 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar11 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_108);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar11,local_138);
  }
  if (8 < (byte)param_2[2]) {
    local_100[0] = (char *)FUN_1811316e0(0x18);
    if (local_100[0] != (char *)0x0) {
      FUN_1805a48c0(local_100[0],
                    "ILokExtensionPrivileges number of Participant IDs exceeds the maximum");
    }
    pcVar14 = (char *)FUN_1811316e0(0x18);
    if (pcVar14 == (char *)0x0) {
      pcVar14 = (char *)0x0;
    }
    else {
      local_100[0] = pcVar14;
      FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_130[0] = 0x4ce;
    local_100[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar11 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),local_100);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar11,local_130);
  }
  if ((uint)(byte)param_2[2] * 4 + ((uint)(byte)param_2[3] + (uint)(byte)param_2[3] * 4) * 2 <=
      uVar15) {
    uVar13 = 0;
    if (param_2[2] != '\0') {
      do {
        uVar8 = FUN_180b214f0(pcVar14,4);
        *(undefined4 *)(param_2 + uVar13 * 4 + 0xc) = uVar8;
        pcVar14 = pcVar14 + 4;
        uVar15 = uVar15 - 4;
        uVar12 = (int)uVar13 + 1;
        uVar13 = (ulonglong)uVar12;
      } while (uVar12 < (byte)param_2[2]);
    }
    uVar13 = 0;
    if (param_2[3] != '\0') {
      do {
        uVar8 = FUN_180b214f0(pcVar14,4);
        *(undefined4 *)(param_2 + uVar13 * 4 + 0x2c) = uVar8;
        uVar8 = FUN_180b214f0(pcVar14 + 4,4);
        *(undefined4 *)(param_2 + uVar13 * 4 + 0x4c) = uVar8;
        param_2[uVar13 + 0x6c] = pcVar14[8];
        param_2[uVar13 + 0x74] = pcVar14[9];
        pcVar14 = pcVar14 + 10;
        uVar15 = uVar15 - 10;
        uVar12 = (int)uVar13 + 1;
        uVar13 = (ulonglong)uVar12;
      } while (uVar12 < (byte)param_2[3]);
    }
    if (3 < uVar15) {
      uVar12 = FUN_180b214f0(pcVar14,4);
      lVar6 = local_res18;
      uVar13 = (ulonglong)uVar12;
      if (uVar15 - 4 < (ulonglong)(uVar12 * 4)) {
        local_e8 = (char *)FUN_1811316e0(0x18);
        if (local_e8 != (char *)0x0) {
          FUN_1805a48c0(local_e8,"Missing some additional ParticipantID data");
        }
        pcVar14 = (char *)FUN_1811316e0(0x18);
        if (pcVar14 == (char *)0x0) {
          pcVar14 = (char *)0x0;
        }
        else {
          local_e8 = pcVar14;
          FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
          *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
        }
        local_118[0] = 0x505;
        local_e8 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
        uVar11 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_e8);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar11,local_118);
      }
      if (uVar12 != 0) {
        uVar7 = (undefined1)local_res18;
        do {
          pcVar14 = pcVar14 + 4;
          if (lVar6 != 0) {
            local_110[0] = FUN_180b214f0(pcVar14,4);
            FUN_180621700(lVar6,local_58,0,local_110,uVar7);
          }
          uVar13 = uVar13 - 1;
        } while (uVar13 != 0);
      }
    }
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar4 = plVar5 + 1;
      lVar6 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (local_e0 == (char *)0x0) {
      return;
    }
    pcVar14 = local_e0;
    if ((0xfff < (ulonglong)(local_d0 - (longlong)local_e0)) &&
       (pcVar14 = *(char **)(local_e0 + -8), (char *)0x1f < local_e0 + (-8 - (longlong)pcVar14))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pcVar14);
  }
  local_f0 = (char *)FUN_1811316e0(0x18);
  if (local_f0 != (char *)0x0) {
    FUN_1805a48c0(local_f0,
                  "ILokExtensionPrivileges missing ParticipantID and/or Descendant Limits data");
  }
  pcVar14 = (char *)FUN_1811316e0(0x18);
  if (pcVar14 == (char *)0x0) {
    pcVar14 = (char *)0x0;
  }
  else {
    local_f0 = pcVar14;
    FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_120[0] = 0x4dd;
  local_f0 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar11 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_f0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar11,local_120);
}



############ FUN_ 180a12d40 size=437 ############

void FUN_180a12d40(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099ac,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "IssueNumber is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x59f);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a12f30 size=437 ############

void FUN_180a12f30(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099e8,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "KeySpace is missing from %d, where nonzero = subject and zero = issuer)")
    ;
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x600);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a13100 size=758 ############

undefined8 *
FUN_180a13100(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  void *_Memory;
  undefined8 *puVar10;
  undefined8 *local_res8;
  undefined8 *local_res10;
  char *local_res18;
  char *local_res20;
  undefined8 uVar11;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  void *local_60;
  longlong lStack_58;
  longlong local_50;
  
  uVar11 = 0xfffffffffffffffe;
  local_60 = (void *)0x0;
  lStack_58 = 0;
  puVar10 = (undefined8 *)0x0;
  local_50 = 0;
  plVar7 = (longlong *)
           (**(code **)(*param_1 + 0x30))(0,local_80,&DAT_181c099fc,param_4,0xfffffffffffffffe,0,0);
  plVar4 = (longlong *)*plVar7;
  plVar5 = (longlong *)plVar7[1];
  plVar7[1] = 0;
  *plVar7 = 0;
  plVar7 = plVar4;
  plVar9 = plVar5;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_78 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar2 = (int *)((longlong)local_78 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (plVar4 == (longlong *)0x0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"KeyUsage extension is missing");
    }
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar8;
    if (puVar8 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
      puVar10 = puVar8;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x62b);
    local_res18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar11 = FUN_1805a21d0(puVar10[1],&local_res18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar11,&local_res8);
  }
  plVar9 = (longlong *)(**(code **)(*plVar4 + 0x38))(plVar4,local_70,1,3,uVar11,plVar7,plVar9);
  plVar4 = (longlong *)*plVar9;
  plVar7 = (longlong *)plVar9[1];
  plVar9[1] = 0;
  *plVar9 = 0;
  if (plVar5 != (longlong *)0x0) {
    LOCK();
    plVar9 = plVar5 + 1;
    lVar6 = *plVar9;
    *(int *)plVar9 = (int)*plVar9 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar5 + 8))(plVar5);
      LOCK();
      piVar2 = (int *)((longlong)plVar5 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar5 + 0x10))(plVar5);
      }
    }
  }
  if (local_68 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_68 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_68 + 8))(local_68);
      LOCK();
      piVar2 = (int *)((longlong)local_68 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_68 + 0x10))(local_68);
      }
    }
  }
  if (plVar4 != (longlong *)0x0) {
    (**(code **)(*plVar4 + 0x30))(plVar4,&local_60);
    if (1 < (ulonglong)(lStack_58 - (longlong)local_60)) {
      puVar10 = (undefined8 *)((ulonglong)*(byte *)((longlong)local_60 + 1) << 0x18);
    }
    if (plVar7 != (longlong *)0x0) {
      LOCK();
      plVar4 = plVar7 + 1;
      lVar6 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar7 + 8))(plVar7);
        LOCK();
        piVar2 = (int *)((longlong)plVar7 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar7 + 0x10))(plVar7);
        }
      }
    }
    if (local_60 == (void *)0x0) {
      return puVar10;
    }
    _Memory = local_60;
    if ((0xfff < (ulonglong)(local_50 - (longlong)local_60)) &&
       (_Memory = *(void **)((longlong)local_60 + -8),
       0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"KeyUsage extension bit string is missing");
  }
  puVar8 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar8;
  if (puVar8 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
    *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    puVar10 = puVar8;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x62f);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar11 = FUN_1805a21d0(puVar10[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar11,&local_res10);
}



############ FUN_ 180a13420 size=1530 ############

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

ulonglong FUN_180a13420(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  longlong lVar2;
  undefined4 uVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  ulonglong uVar8;
  uint uVar9;
  int iVar10;
  undefined8 *puVar11;
  char in_AF;
  int unaff_retaddr;
  undefined1 auStack_148 [32];
  undefined1 local_128 [8];
  undefined8 local_120;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  longlong local_f0;
  undefined4 local_e8 [2];
  uint local_e0;
  uint local_dc;
  undefined8 *local_d0;
  undefined8 local_c8;
  char *local_c0 [2];
  longlong local_b0;
  longlong local_a8;
  longlong lStack_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined8 local_60;
  ulonglong local_40;
  
  local_98 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_148;
  uVar9 = (uint)&stack0x00000000 & 0x1ff;
  iVar10 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  local_dc = 0x1551 << ((byte)(((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >> 0x1e) & 0x1f
                       ) ^ 0x1a71;
  uVar9 = (uint)&stack0x00000000 & 0x2ff;
  iVar10 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  local_e0 = (((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >> 0x1e | 0xaa56U) ^ 0xa796;
  local_70 = 0;
  uStack_68 = 0;
  puVar11 = (undefined8 *)0x0;
  local_60 = 0;
  local_a8 = 0;
  lStack_a0 = 0;
  local_128[0] = param_2;
  local_c8 = param_3;
  do {
    func_0x000180a123e3(0xc328);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  plVar4 = (longlong *)(**(code **)(*param_1 + 0x40))(param_1,local_80,&DAT_181c099e4,param_2);
  local_f0 = *plVar4;
  local_b0 = plVar4[1];
  plVar4[1] = 0;
  *plVar4 = 0;
  local_90 = 0;
  local_88 = 0;
  local_a8 = local_f0;
  lStack_a0 = local_b0;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_78 + 1;
    lVar2 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar2 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar10 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar10 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (local_f0 != 0) {
    local_100 = 0;
    local_110 = 0x1fe40;
    local_108 = 0x182515b08;
    local_120 = 0x182535948;
                    /* WARNING: Call to offcut address within same function */
    uVar7 = func_0x000180a13857();
    uVar8 = CONCAT62((int6)((ulonglong)uVar7 >> 0x10),CONCAT11(in_AF << 4,(char)uVar7)) | 0x600;
    uVar3 = (undefined4)uVar8;
    IMAGE_DOS_HEADER_180000000.e_magic[0] = (char)uVar3;
    IMAGE_DOS_HEADER_180000000.e_magic[1] = SUB41(uVar3,1);
    IMAGE_DOS_HEADER_180000000.e_cblp = SUB42(uVar3,2);
    return uVar8;
  }
  local_d0 = (undefined8 *)FUN_1811316e0(0x18);
  puVar5 = puVar11;
  if (local_d0 != (undefined8 *)0x0) {
    puVar5 = (undefined8 *)
             FUN_1805a48c0(local_d0,
                           "OrderNumberAndBOMID is missing from %d, where nonzero = subject and zero = issuer)"
                          );
  }
  puVar6 = (undefined8 *)FUN_1811316e0(0x18);
  local_d0 = puVar6;
  if (puVar6 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar6,"|__FILE__|%s|__LINE__|%d");
    *puVar6 = pace::PaceLocationInfoFormatter::vftable;
    puVar11 = puVar6;
  }
  FUN_1806548b0(puVar5[1],local_128);
  local_e8[0] = 0x669;
  local_c0[0] = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar7 = FUN_1805a21d0(puVar11[1],local_c0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar7,local_e8);
}



############ FUN_ 180a14510 size=437 ############

void FUN_180a14510(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099dc,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "Organization is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x6bf);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a15870 size=1166 ############

void FUN_180a15870(longlong *param_1,int *param_2,int *param_3)

{
  longlong *plVar1;
  int *piVar2;
  longlong *plVar3;
  int iVar4;
  undefined8 *puVar5;
  char *pcVar6;
  undefined8 uVar7;
  longlong lVar8;
  char *pcVar9;
  size_t sVar10;
  char cVar11;
  char *local_res20;
  char *local_e8;
  char *pcStack_e0;
  char *local_d8;
  undefined4 local_d0 [2];
  undefined4 local_c8 [2];
  undefined4 local_c0 [2];
  int local_b8 [2];
  char *local_b0;
  longlong *local_a8;
  longlong *plStack_a0;
  longlong *local_98;
  char *local_88;
  char *local_80;
  longlong *local_78;
  undefined8 local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  undefined1 local_50 [8];
  longlong *local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_e8 = (char *)0x0;
  pcStack_e0 = (char *)0x0;
  pcVar9 = (char *)0x0;
  local_d8 = (char *)0x0;
  local_a8 = (longlong *)0x0;
  plStack_a0 = (longlong *)0x0;
  puVar5 = (undefined8 *)(**(code **)(*param_1 + 0x18))(0,local_60,&DAT_181c09e40);
  local_a8 = (longlong *)*puVar5;
  plVar3 = (longlong *)puVar5[1];
  puVar5[1] = 0;
  *puVar5 = 0;
  plStack_a0 = plVar3;
  local_78 = local_a8;
  if (local_58 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_58 + 1;
    lVar8 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*local_58 + 8))(local_58);
      LOCK();
      piVar2 = (int *)((longlong)local_58 + 0xc);
      iVar4 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)(*local_58 + 0x10))(local_58);
      }
    }
  }
  if (local_78 == (longlong *)0x0) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 != (char *)0x0) {
      FUN_1805a48c0(local_res20,"signedSignatureAlgorithmOid1 is missing");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar6;
    if (pcVar6 != (char *)0x0) {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
      pcVar9 = pcVar6;
    }
    local_d0[0] = 0x77a;
    local_88 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar9 + 8),&local_88);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_d0);
  }
  (**(code **)(*local_78 + 0x30))(local_78,&local_e8);
  pcVar6 = local_e8;
  cVar11 = (char)pcStack_e0 - (char)local_e8;
  local_res20 = (char *)CONCAT71(local_res20._1_7_,cVar11);
  if (0x7e < (byte)(cVar11 - 1U)) {
    local_b0 = (char *)FUN_1811316e0(0x18);
    if (local_b0 != (char *)0x0) {
      FUN_1805a48c0(local_b0,"A properly sized signedSignatureAlgorithmOid content is missing");
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    if (pcVar6 != (char *)0x0) {
      local_b0 = pcVar6;
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
      pcVar9 = pcVar6;
    }
    local_c8[0] = 0x77f;
    local_b0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar7 = FUN_1805a21d0(*(undefined8 *)(pcVar9 + 8),&local_b0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar7,local_c8);
  }
  if (local_d8 == pcStack_e0) {
    FUN_1805b0850(&local_e8,local_e8,&local_res20);
  }
  else if (local_e8 == pcStack_e0) {
    *pcStack_e0 = cVar11;
    pcStack_e0 = pcStack_e0 + 1;
  }
  else {
    *pcStack_e0 = pcStack_e0[-1];
    sVar10 = (longlong)(pcStack_e0 + -1) - (longlong)local_e8;
    pcVar9 = pcStack_e0 + -sVar10;
    pcStack_e0 = pcStack_e0 + 1;
    memmove(pcVar9,local_e8,sVar10);
    *pcVar6 = cVar11;
  }
  iVar4 = FUN_180a00490(local_e8,param_3);
  *param_2 = iVar4;
  if ((iVar4 == -1) || (*param_3 == -0x10000)) {
    puVar5 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_50,&DAT_181c09e50);
    local_a8 = (longlong *)*puVar5;
    plStack_a0 = (longlong *)puVar5[1];
    puVar5[1] = 0;
    *puVar5 = 0;
    local_98 = local_a8;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar3 + 1;
      lVar8 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*plVar3 + 8))(plVar3);
        LOCK();
        piVar2 = (int *)((longlong)plVar3 + 0xc);
        iVar4 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar4 == 1) {
          (**(code **)(*plVar3 + 0x10))(plVar3);
        }
      }
    }
    if (local_48 != (longlong *)0x0) {
      LOCK();
      plVar3 = local_48 + 1;
      lVar8 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*local_48 + 8))(local_48);
        LOCK();
        piVar2 = (int *)((longlong)local_48 + 0xc);
        iVar4 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar4 == 1) {
          (**(code **)(*local_48 + 0x10))(local_48);
        }
      }
    }
    if (local_98 != (longlong *)0x0) {
      (**(code **)(*local_98 + 0x30))(local_98,&local_e8);
      pcVar9 = local_e8;
      cVar11 = (char)pcStack_e0 - (char)local_e8;
      local_res20 = (char *)CONCAT71(local_res20._1_7_,cVar11);
      if (0x7e < (byte)(cVar11 - 1U)) {
        lVar8 = FUN_1811316e0(0x18);
        if (lVar8 != 0) {
          FUN_1805a48c0(lVar8,"A properly sized signedSignatureAlgorithm2Oid content is missing");
        }
        lVar8 = FUN_1805c0260();
        local_c0[0] = 0x78f;
        local_80 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
        uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_80);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar7,local_c0);
      }
      if (local_d8 == pcStack_e0) {
        FUN_1805b0850(&local_e8,local_e8,&local_res20);
      }
      else if (local_e8 == pcStack_e0) {
        *pcStack_e0 = cVar11;
        pcStack_e0 = pcStack_e0 + 1;
      }
      else {
        *pcStack_e0 = pcStack_e0[-1];
        sVar10 = (longlong)(pcStack_e0 + -1) - (longlong)local_e8;
        pcVar6 = pcStack_e0 + -sVar10;
        pcStack_e0 = pcStack_e0 + 1;
        memmove(pcVar6,local_e8,sVar10);
        *pcVar9 = cVar11;
      }
      iVar4 = FUN_180a00490(local_e8,local_b8);
      if (*param_2 == -1) {
        *param_2 = iVar4;
      }
      if (*param_3 == -0x10000) {
        *param_3 = local_b8[0];
      }
    }
  }
  plVar3 = plStack_a0;
  if (plStack_a0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_a0 + 1;
    lVar8 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*plStack_a0 + 8))(plStack_a0);
      LOCK();
      piVar2 = (int *)((longlong)plVar3 + 0xc);
      iVar4 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)(*plStack_a0 + 0x10))();
      }
    }
  }
  if (local_e8 == (char *)0x0) {
    return;
  }
  pcVar9 = local_e8;
  if ((0xfff < (ulonglong)((longlong)local_d8 - (longlong)local_e8)) &&
     (pcVar9 = *(char **)(local_e8 + -8), (char *)0x1f < local_e8 + (-8 - (longlong)pcVar9))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pcVar9);
}



############ FUN_ 180a15d70 size=770 ############

void FUN_180a15d70(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  longlong *plVar9;
  void *_Memory;
  undefined8 *local_res8;
  undefined8 *local_res10;
  char *local_res18;
  char *local_res20;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  void *local_60;
  undefined8 uStack_58;
  longlong local_50;
  
  local_60 = (void *)0x0;
  uStack_58 = 0;
  local_50 = 0;
  plVar6 = (longlong *)
           (**(code **)(*param_1 + 0x18))(0,local_80,&DAT_181c09e68,param_4,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar6;
  plVar4 = (longlong *)plVar6[1];
  plVar6[1] = 0;
  *plVar6 = 0;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar6 = local_78 + 1;
    lVar5 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (plVar3 == (longlong *)0x0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"NotValidBefore is missing");
    }
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar7;
    if (puVar7 == (undefined8 *)0x0) {
      puVar7 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
      *puVar7 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x857);
    local_res18 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(puVar7[1],&local_res18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,&local_res8);
  }
  (**(code **)(*plVar3 + 0x30))(plVar3,&local_60);
  FUN_180a0d380(&local_60,param_2);
  plVar9 = (longlong *)(**(code **)(*param_1 + 0x18))(param_1,local_70,&DAT_181c09e78);
  plVar3 = (longlong *)*plVar9;
  plVar6 = (longlong *)plVar9[1];
  plVar9[1] = 0;
  *plVar9 = 0;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar9 = plVar4 + 1;
    lVar5 = *plVar9;
    *(int *)plVar9 = (int)*plVar9 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_68 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_68 + 1;
    lVar5 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_68 + 8))(local_68);
      LOCK();
      piVar1 = (int *)((longlong)local_68 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_68 + 0x10))(local_68);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x30))(plVar3,&local_60);
    FUN_180a0d380(&local_60,param_2 + 8);
    if (plVar6 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar6 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar6 + 8))(plVar6);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar6 + 0x10))(plVar6);
        }
      }
    }
    if (local_60 == (void *)0x0) {
      return;
    }
    _Memory = local_60;
    if ((0xfff < (ulonglong)(local_50 - (longlong)local_60)) &&
       (_Memory = *(void **)((longlong)local_60 + -8),
       0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"NotValidAfter is missing");
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x867);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res10);
}



############ FUN_ 180a16bd0 size=566 ############

void FUN_180a16bd0(longlong *param_1,undefined4 *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  void *_Memory;
  undefined8 *local_res8;
  char *local_res10;
  undefined8 uVar9;
  longlong *plVar10;
  undefined1 local_60 [8];
  longlong *local_58;
  void *local_50;
  undefined8 uStack_48;
  longlong local_40;
  
  uVar9 = 0xfffffffffffffffe;
  local_50 = (void *)0x0;
  uStack_48 = 0;
  local_40 = 0;
  plVar7 = (longlong *)
           (**(code **)(*param_1 + 0x18))(0,local_60,&DAT_181c09e30,param_4,0xfffffffffffffffe,0,0);
  plVar4 = (longlong *)*plVar7;
  plVar5 = (longlong *)plVar7[1];
  plVar7[1] = 0;
  *plVar7 = 0;
  plVar7 = plVar4;
  plVar10 = plVar5;
  if (local_58 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_58 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_58 + 8))(local_58);
      LOCK();
      piVar2 = (int *)((longlong)local_58 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_58 + 0x10))(local_58);
      }
    }
  }
  if (plVar4 == (longlong *)0x0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"CertSerialNumber is missing");
    }
    puVar8 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar8;
    if (puVar8 == (undefined8 *)0x0) {
      puVar8 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar8,"|__FILE__|%s|__LINE__|%d");
      *puVar8 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1ef);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar9 = FUN_1805a21d0(puVar8[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar9,&local_res8);
  }
  FUN_1805b0f50(&local_50,0xf,&local_50,param_4,uVar9,plVar7,plVar10);
  FUN_180b227b0(*param_2,local_50,4);
  FUN_180b227b0(param_2[1],(longlong)local_50 + 4,4);
  FUN_180b227b0(param_2[2],(longlong)local_50 + 8,3);
  FUN_180b227b0(param_2[3],(longlong)local_50 + 0xb,4);
  (**(code **)(*param_1 + 0x20))(param_1,&local_50);
  (**(code **)(*plVar4 + 0x50))(plVar4,&local_50);
  if (plVar5 != (longlong *)0x0) {
    LOCK();
    plVar4 = plVar5 + 1;
    lVar6 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar5 + 8))(plVar5);
      LOCK();
      piVar2 = (int *)((longlong)plVar5 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar5 + 0x10))(plVar5);
      }
    }
  }
  if (local_50 == (void *)0x0) {
    return;
  }
  _Memory = local_50;
  if ((0xfff < (ulonglong)(local_40 - (longlong)local_50)) &&
     (_Memory = *(void **)((longlong)local_50 + -8),
     0x1f < (ulonglong)((longlong)local_50 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180a16e20 size=437 ############

void FUN_180a16e20(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099e0,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "CertificateClass is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x1bf);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a16ff0 size=437 ############

void FUN_180a16ff0(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099d8,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "DeviceHardwareVersion is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x22e);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a171c0 size=437 ############

void FUN_180a171c0(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099d4,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "DeviceName is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x260);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a17390 size=437 ############

void FUN_180a17390(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c09984,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "DeviceSerialNumber is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x292);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a175e0 size=5028 ############

void FUN_180a175e0(longlong *param_1,int param_2,int param_3,longlong param_4)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  longlong lVar8;
  undefined8 uVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong *plVar12;
  char *pcVar13;
  char *pcVar14;
  undefined1 *_Memory;
  ulonglong local_res8;
  int local_res10 [2];
  int local_res18;
  longlong local_res20;
  int iVar15;
  longlong local_3e8;
  int local_3d8 [4];
  longlong *local_3c8;
  longlong *plStack_3c0;
  longlong *local_3b8;
  longlong *local_3a8;
  longlong *plStack_3a0;
  longlong *local_398;
  longlong *plStack_390;
  longlong *local_388;
  longlong *plStack_380;
  longlong *local_378;
  longlong *plStack_370;
  undefined4 local_368 [2];
  int local_360 [2];
  undefined4 local_358 [2];
  undefined4 local_350 [2];
  undefined4 local_348 [2];
  undefined4 local_340 [2];
  undefined4 local_338 [2];
  undefined4 local_330 [2];
  undefined4 local_328 [2];
  undefined4 local_320 [2];
  char *local_318;
  char *local_310;
  char *local_308;
  undefined1 *local_300;
  undefined8 uStack_2f8;
  longlong local_2f0;
  longlong *local_2e8;
  longlong *local_2e0;
  longlong *local_2d8;
  longlong *plStack_2d0;
  char *local_2c8;
  char *local_2c0;
  char *local_2b8;
  char *local_2b0;
  char *local_2a8;
  char *local_2a0;
  longlong *local_298;
  longlong *plStack_290;
  longlong *local_288;
  longlong *plStack_280;
  longlong *local_278;
  longlong *local_268;
  longlong *plStack_260;
  longlong *local_258;
  longlong *local_248;
  longlong *plStack_240;
  longlong *local_238;
  longlong *local_228;
  longlong *plStack_220;
  longlong *local_218;
  longlong *plStack_210;
  longlong *local_208;
  longlong *plStack_200;
  longlong *local_1f8;
  longlong *local_1e8;
  longlong *local_1d8;
  longlong *plStack_1d0;
  longlong *local_1c8;
  longlong *local_1b8;
  longlong *plStack_1b0;
  longlong *local_1a8;
  longlong *plStack_1a0;
  longlong *local_198;
  longlong *plStack_190;
  longlong *local_188;
  longlong *local_178;
  longlong *plStack_170;
  longlong *local_168;
  longlong *plStack_160;
  longlong *local_158;
  longlong *plStack_150;
  longlong *local_148;
  longlong *plStack_140;
  longlong *local_138;
  longlong *plStack_130;
  longlong *local_128;
  longlong *plStack_120;
  undefined8 local_118;
  undefined1 local_110 [8];
  longlong *local_108;
  undefined1 local_100 [8];
  longlong *local_f8;
  longlong *local_f0;
  undefined1 local_e0 [8];
  longlong *local_d8;
  undefined1 local_d0 [8];
  longlong *local_c8;
  undefined1 local_c0 [8];
  longlong *local_b8;
  undefined1 local_b0 [8];
  longlong *local_a8;
  undefined1 local_a0 [8];
  longlong *local_98;
  undefined1 local_90 [8];
  longlong *local_88;
  undefined1 **local_78;
  ulonglong *puStack_70;
  undefined1 local_68 [8];
  longlong *local_60;
  longlong *local_58;
  
  local_118 = 0xfffffffffffffffe;
  local_300 = (undefined1 *)0x0;
  uStack_2f8 = 0;
  plVar7 = (longlong *)0x0;
  local_2f0 = 0;
  local_398 = (longlong *)0x0;
  plStack_390 = (longlong *)0x0;
  local_3a8 = (longlong *)0x0;
  plStack_3a0 = (longlong *)0x0;
  local_3c8 = (longlong *)0x0;
  plStack_3c0 = (longlong *)0x0;
  local_298 = (longlong *)0x0;
  plStack_290 = (longlong *)0x0;
  local_288 = (longlong *)0x0;
  plStack_280 = (longlong *)0x0;
  local_268 = (longlong *)0x0;
  plStack_260 = (longlong *)0x0;
  local_248 = (longlong *)0x0;
  plStack_240 = (longlong *)0x0;
  local_res10[0] = param_2;
  local_res18 = param_3;
  local_res20 = param_4;
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x38))(param_1,local_110,param_2,param_4,0);
  local_3c8 = (longlong *)*puVar6;
  plVar4 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  plStack_3c0 = plVar4;
  local_1e8 = local_3c8;
  if (local_108 != (longlong *)0x0) {
    LOCK();
    plVar10 = local_108 + 1;
    lVar8 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    param_2 = local_res10[0];
    if ((int)lVar8 == 1) {
      (**(code **)(*local_108 + 8))(local_108);
      LOCK();
      piVar1 = (int *)((longlong)local_108 + 0xc);
      iVar15 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      param_2 = local_res10[0];
      if (iVar15 == 1) {
        (**(code **)(*local_108 + 0x10))(local_108);
        param_2 = local_res10[0];
      }
    }
  }
  if (local_1e8 == (longlong *)0x0) {
    if (param_2 == 0) {
      local_2c8 = (char *)FUN_1811316e0(0x18);
      if (local_2c8 != (char *)0x0) {
        plVar7 = (longlong *)FUN_1805a48c0(local_2c8,"Main Public Key %d is missing");
      }
      lVar8 = FUN_1805c0260();
      FUN_18060e760(plVar7[1],local_res10);
      local_368[0] = 0x330;
      local_2c8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_2c8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_368);
    }
    local_1d8 = (longlong *)0x0;
    plStack_1d0 = (longlong *)0x0;
    if (param_2 != 1) {
      puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x38))(param_1,local_100,param_2 + -1);
      local_3c8 = (longlong *)*puVar6;
      plStack_3c0 = (longlong *)puVar6[1];
      puVar6[1] = 0;
      *puVar6 = 0;
      local_f0 = local_3c8;
      if (plVar4 != (longlong *)0x0) {
        LOCK();
        plVar10 = plVar4 + 1;
        lVar8 = *plVar10;
        *(int *)plVar10 = (int)*plVar10 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plVar4 + 8))(plVar4);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plVar4 + 0x10))(plVar4);
          }
        }
      }
      if (local_f8 != (longlong *)0x0) {
        LOCK();
        plVar4 = local_f8 + 1;
        lVar8 = *plVar4;
        *(int *)plVar4 = (int)*plVar4 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*local_f8 + 8))(local_f8);
          LOCK();
          piVar1 = (int *)((longlong)local_f8 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*local_f8 + 0x10))(local_f8);
          }
        }
      }
      if (local_f0 == (longlong *)0x0) {
        local_2c0 = (char *)FUN_1811316e0(0x18);
        if (local_2c0 != (char *)0x0) {
          plVar7 = (longlong *)
                   FUN_1805a48c0(local_2c0,"Aux key #%d must be populated before Aux key #%d");
        }
        lVar8 = FUN_1805c0260();
        local_360[0] = param_2 + -1;
        FUN_18060e760(plVar7[1],local_360);
        FUN_18060e760(plVar7[1],local_res10);
        local_358[0] = 0x342;
        local_2c0 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
        uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_2c0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar9,local_358);
      }
    }
    puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_e0,&DAT_181c09e98);
    local_1d8 = (longlong *)*puVar6;
    plVar4 = (longlong *)puVar6[1];
    puVar6[1] = 0;
    *puVar6 = 0;
    plStack_1d0 = plVar4;
    local_188 = local_1d8;
    if (local_d8 != (longlong *)0x0) {
      LOCK();
      plVar10 = local_d8 + 1;
      lVar8 = *plVar10;
      *(int *)plVar10 = (int)*plVar10 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*local_d8 + 8))(local_d8);
        LOCK();
        piVar1 = (int *)((longlong)local_d8 + 0xc);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar15 == 1) {
          (**(code **)(*local_d8 + 0x10))(local_d8);
        }
      }
    }
    if (local_188 == (longlong *)0x0) {
      local_2b8 = (char *)FUN_1811316e0(0x18);
      if (local_2b8 != (char *)0x0) {
        FUN_1805a48c0(local_2b8,"Extensions are missing");
      }
      lVar8 = FUN_1805c0260();
      local_350[0] = 0x347;
      local_2b8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_2b8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_350);
    }
    puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x30))(param_1,local_68,&DAT_181c09a20);
    local_398 = (longlong *)*puVar6;
    plStack_390 = (longlong *)puVar6[1];
    puVar6[1] = 0;
    *puVar6 = 0;
    local_1c8 = local_398;
    if (local_60 != (longlong *)0x0) {
      LOCK();
      plVar10 = local_60 + 1;
      lVar8 = *plVar10;
      *(int *)plVar10 = (int)*plVar10 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*local_60 + 8))(local_60);
        LOCK();
        piVar1 = (int *)((longlong)local_60 + 0xc);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar15 == 1) {
          (**(code **)(*local_60 + 0x10))(local_60);
        }
      }
    }
    if (local_1c8 == (longlong *)0x0) {
      local_388 = (longlong *)0x0;
      plStack_380 = (longlong *)0x0;
      local_378 = (longlong *)0x0;
      plStack_370 = (longlong *)0x0;
      lVar8 = FUN_1811316e0(0x38);
      plVar10 = plVar7;
      if (lVar8 != 0) {
        plVar10 = (longlong *)FUN_180b23940(lVar8);
      }
      FUN_180a0c380(&local_388,plVar10);
      plVar10 = local_388;
      *(undefined1 *)(local_388 + 1) = 0x30;
      lVar8 = FUN_1811316e0(0x38);
      plVar11 = plVar7;
      if (lVar8 != 0) {
        plVar11 = (longlong *)FUN_180b24b00(lVar8);
      }
      FUN_180a0c420(&local_378,plVar11);
      *(undefined1 *)(local_378 + 1) = 6;
      (**(code **)(*local_378 + 0x40))(local_378,&DAT_181c09a21,DAT_181c09a20);
      plVar11 = plStack_370;
      local_1b8 = local_378;
      plStack_1b0 = plStack_370;
      if (plStack_370 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_370 + 1) = (int)plStack_370[1] + 1;
        UNLOCK();
        plVar10 = local_388;
      }
      (**(code **)(*plVar10 + 8))(plVar10,&local_1b8);
      lVar8 = FUN_1811316e0(0x38);
      plVar12 = plVar7;
      if (lVar8 != 0) {
        plVar12 = (longlong *)FUN_180b23940(lVar8);
      }
      FUN_180a0c380(&local_398,plVar12);
      plVar12 = local_398;
      *(undefined1 *)(local_398 + 1) = 4;
      local_1a8 = local_398;
      plStack_1a0 = plStack_390;
      if (plStack_390 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_390 + 1) = (int)plStack_390[1] + 1;
        UNLOCK();
        plVar10 = local_388;
        plVar11 = plStack_370;
      }
      (**(code **)(*plVar10 + 8))(plVar10,&local_1a8);
      lVar8 = FUN_1811316e0(0x38);
      plVar10 = plVar7;
      if (lVar8 != 0) {
        plVar10 = (longlong *)FUN_180b23940(lVar8);
      }
      FUN_180a0c380(&local_3a8,plVar10);
      *(undefined1 *)(local_3a8 + 1) = 0x30;
      local_198 = local_3a8;
      plStack_190 = plStack_3a0;
      if (plStack_3a0 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_3a0 + 1) = (int)plStack_3a0[1] + 1;
        UNLOCK();
        plVar11 = plStack_370;
        plVar12 = local_398;
      }
      (**(code **)(*plVar12 + 8))(plVar12,&local_198);
      plVar10 = plStack_380;
      local_178 = local_388;
      plStack_170 = plStack_380;
      if (plStack_380 != (longlong *)0x0) {
        LOCK();
        *(int *)(plStack_380 + 1) = (int)plStack_380[1] + 1;
        UNLOCK();
        plVar11 = plStack_370;
      }
      (**(code **)(*local_188 + 8))(local_188,&local_178);
      plVar12 = plStack_370;
      if (plVar11 != (longlong *)0x0) {
        LOCK();
        plVar11 = plVar11 + 1;
        lVar8 = *plVar11;
        *(int *)plVar11 = (int)*plVar11 + -1;
        UNLOCK();
        plVar10 = plStack_380;
        if ((int)lVar8 == 1) {
          (**(code **)(*plStack_370 + 8))(plStack_370);
          LOCK();
          piVar1 = (int *)((longlong)plVar12 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          plVar10 = plStack_380;
          if (iVar15 == 1) {
            (**(code **)(*plStack_370 + 0x10))();
            plVar10 = plStack_380;
          }
        }
      }
      plVar11 = plStack_380;
      if (plVar10 != (longlong *)0x0) {
        LOCK();
        plVar10 = plVar10 + 1;
        lVar8 = *plVar10;
        *(int *)plVar10 = (int)*plVar10 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plStack_380 + 8))(plStack_380);
          LOCK();
          piVar1 = (int *)((longlong)plVar11 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plStack_380 + 0x10))();
          }
        }
      }
    }
    else {
      puVar6 = (undefined8 *)(**(code **)(*local_1c8 + 0x38))(local_1c8,local_d0,1,0x30);
      local_3a8 = (longlong *)*puVar6;
      plStack_3a0 = (longlong *)puVar6[1];
      puVar6[1] = 0;
      *puVar6 = 0;
      local_58 = local_3a8;
      if (local_c8 != (longlong *)0x0) {
        LOCK();
        plVar10 = local_c8 + 1;
        lVar8 = *plVar10;
        *(int *)plVar10 = (int)*plVar10 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*local_c8 + 8))(local_c8);
          LOCK();
          piVar1 = (int *)((longlong)local_c8 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*local_c8 + 0x10))(local_c8);
          }
        }
      }
    }
    lVar8 = FUN_1811316e0(0x38);
    plVar10 = plVar7;
    if (lVar8 != 0) {
      plVar10 = (longlong *)FUN_180b23940(lVar8);
    }
    local_2e8 = plVar10;
    FUN_180a0c2a0(&local_2e0,plVar10);
    FUN_1805ae620(&local_2e8,plVar10,plVar10);
    plVar11 = local_2e8;
    plVar10 = plStack_3c0;
    local_3b8 = local_2e8;
    local_2e8 = local_3c8;
    local_3c8 = plVar11;
    plStack_3c0 = local_2e0;
    local_2e0 = plVar10;
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      plVar11 = plVar10 + 1;
      lVar8 = *plVar11;
      *(int *)plVar11 = (int)*plVar11 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*plVar10 + 8))(plVar10);
        LOCK();
        piVar1 = (int *)((longlong)plVar10 + 0xc);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar15 == 1) {
          (**(code **)(*plVar10 + 0x10))(plVar10);
        }
      }
    }
    plVar10 = local_3b8;
    *(undefined1 *)(local_3b8 + 1) = 0x30;
    lVar8 = FUN_1811316e0(0x38);
    plVar11 = plVar7;
    if (lVar8 != 0) {
      plVar11 = (longlong *)FUN_180b23940(lVar8);
    }
    local_2d8 = plVar11;
    FUN_180a0c2a0(&plStack_2d0,plVar11);
    FUN_1805ae620(&local_2d8,plVar11,plVar11);
    plVar11 = local_2d8;
    local_298 = local_2d8;
    plStack_290 = plStack_2d0;
    *(undefined1 *)(local_2d8 + 1) = 0x30;
    local_168 = local_2d8;
    plStack_160 = plStack_2d0;
    if (plStack_2d0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_2d0 + 1) = (int)plStack_2d0[1] + 1;
      UNLOCK();
      plVar10 = local_3b8;
    }
    (**(code **)(*plVar10 + 8))(plVar10,&local_168);
    lVar8 = FUN_1811316e0(0x38);
    plVar12 = plVar7;
    if (lVar8 != 0) {
      plVar12 = (longlong *)FUN_180b24b00(lVar8);
    }
    local_228 = plVar12;
    FUN_180a0c310(&plStack_220,plVar12);
    FUN_1805ae620(&local_228,plVar12,plVar12);
    local_288 = local_228;
    plStack_280 = plStack_220;
    *(undefined1 *)(local_228 + 1) = 6;
    local_128 = local_228;
    plStack_120 = plStack_220;
    if (plStack_220 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_220 + 1) = (int)plStack_220[1] + 1;
      UNLOCK();
      plVar10 = local_3b8;
      plVar11 = local_2d8;
    }
    (**(code **)(*plVar11 + 8))(plVar11,&local_128);
    lVar8 = FUN_1811316e0(0x38);
    plVar12 = plVar7;
    if (lVar8 != 0) {
      plVar12 = (longlong *)FUN_180b24b00(lVar8);
    }
    local_218 = plVar12;
    FUN_180a0c310(&plStack_210,plVar12);
    FUN_1805ae620(&local_218,plVar12,plVar12);
    local_268 = local_218;
    plStack_260 = plStack_210;
    *(undefined1 *)(local_218 + 1) = 6;
    local_158 = local_218;
    plStack_150 = plStack_210;
    if (plStack_210 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_210 + 1) = (int)plStack_210[1] + 1;
      UNLOCK();
      plVar10 = local_3b8;
      plVar11 = local_2d8;
    }
    (**(code **)(*plVar11 + 8))(plVar11,&local_158);
    lVar8 = FUN_1811316e0(0x38);
    if (lVar8 != 0) {
      plVar7 = (longlong *)FUN_180b24b00(lVar8);
    }
    local_208 = plVar7;
    FUN_180a0c310(&plStack_200,plVar7);
    FUN_1805ae620(&local_208,plVar7,plVar7);
    local_248 = local_208;
    plStack_240 = plStack_200;
    *(undefined1 *)(local_208 + 1) = 3;
    local_148 = local_208;
    plStack_140 = plStack_200;
    if (plStack_200 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_200 + 1) = (int)plStack_200[1] + 1;
      UNLOCK();
      plVar10 = local_3b8;
    }
    (**(code **)(*plVar10 + 8))(plVar10,&local_148);
    param_3 = local_res18;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar7 = plVar4 + 1;
      lVar8 = *plVar7;
      *(int *)plVar7 = (int)*plVar7 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        param_3 = local_res18;
        if (iVar15 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
          param_3 = local_res18;
        }
      }
    }
  }
  puVar6 = (undefined8 *)(**(code **)(*local_3c8 + 0x38))(local_3c8,local_c0,1,0x30);
  plVar7 = plStack_290;
  local_298 = (longlong *)*puVar6;
  plVar4 = (longlong *)puVar6[1];
  pcVar14 = (char *)0x0;
  puVar6[1] = 0;
  *puVar6 = 0;
  plVar10 = plVar4;
  local_1f8 = local_298;
  if (plStack_290 != (longlong *)0x0) {
    LOCK();
    plVar11 = plStack_290 + 1;
    lVar8 = *plVar11;
    *(int *)plVar11 = (int)*plVar11 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      lVar8 = *plStack_290;
      plStack_290 = plVar4;
      (**(code **)(lVar8 + 8))(plVar7);
      LOCK();
      piVar1 = (int *)((longlong)plVar7 + 0xc);
      iVar15 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      plVar10 = plStack_290;
      if (iVar15 == 1) {
        (**(code **)(*plVar7 + 0x10))(plVar7);
        plVar10 = plStack_290;
      }
    }
  }
  plStack_290 = plVar10;
  if (local_b8 != (longlong *)0x0) {
    LOCK();
    plVar7 = local_b8 + 1;
    lVar8 = *plVar7;
    *(int *)plVar7 = (int)*plVar7 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*local_b8 + 8))(local_b8);
      LOCK();
      piVar1 = (int *)((longlong)local_b8 + 0xc);
      iVar15 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar15 == 1) {
        (**(code **)(*local_b8 + 0x10))(local_b8);
      }
    }
  }
  if (local_1f8 == (longlong *)0x0) {
    local_318 = (char *)FUN_1811316e0(0x18);
    if (local_318 != (char *)0x0) {
      FUN_1805a48c0(local_318,"Sequence containing the PKStandard is missing");
    }
    pcVar13 = (char *)FUN_1811316e0(0x18);
    if (pcVar13 != (char *)0x0) {
      local_318 = pcVar13;
      FUN_1805a48c0(pcVar13,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar13 = pace::PaceLocationInfoFormatter::vftable;
      pcVar14 = pcVar13;
    }
    local_348[0] = 0x3b0;
    local_318 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_318);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar9,local_348);
  }
  puVar6 = (undefined8 *)(**(code **)(*local_1f8 + 0x38))(local_1f8,local_b0,1,6);
  plVar10 = plStack_280;
  local_288 = (longlong *)*puVar6;
  plVar7 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  plVar11 = plVar7;
  local_278 = local_288;
  if (plStack_280 != (longlong *)0x0) {
    LOCK();
    plVar12 = plStack_280 + 1;
    lVar8 = *plVar12;
    *(int *)plVar12 = (int)*plVar12 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      lVar8 = *plStack_280;
      plStack_280 = plVar7;
      (**(code **)(lVar8 + 8))(plVar10);
      LOCK();
      piVar1 = (int *)((longlong)plVar10 + 0xc);
      iVar15 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      plVar11 = plStack_280;
      if (iVar15 == 1) {
        (**(code **)(*plVar10 + 0x10))(plVar10);
        plVar11 = plStack_280;
      }
    }
  }
  plStack_280 = plVar11;
  if (local_a8 != (longlong *)0x0) {
    LOCK();
    plVar10 = local_a8 + 1;
    lVar8 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*local_a8 + 8))(local_a8);
      LOCK();
      piVar1 = (int *)((longlong)local_a8 + 0xc);
      iVar15 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar15 == 1) {
        (**(code **)(*local_a8 + 0x10))(local_a8);
      }
    }
  }
  if (local_278 != (longlong *)0x0) {
    (**(code **)(*local_278 + 0x40))(local_278,&DAT_181c09ad1,DAT_181c09ad0);
    puVar6 = (undefined8 *)(**(code **)(*local_1f8 + 0x38))(local_1f8,local_a0,2,6);
    plVar11 = plStack_260;
    local_268 = (longlong *)*puVar6;
    plVar10 = (longlong *)puVar6[1];
    puVar6[1] = 0;
    *puVar6 = 0;
    plVar12 = plVar10;
    local_258 = local_268;
    if (plStack_260 != (longlong *)0x0) {
      LOCK();
      plVar5 = plStack_260 + 1;
      lVar8 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        lVar8 = *plStack_260;
        plStack_260 = plVar10;
        (**(code **)(lVar8 + 8))(plVar11);
        LOCK();
        piVar1 = (int *)((longlong)plVar11 + 0xc);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        plVar12 = plStack_260;
        if (iVar15 == 1) {
          (**(code **)(*plVar11 + 0x10))(plVar11);
          plVar12 = plStack_260;
        }
      }
    }
    plStack_260 = plVar12;
    if (local_98 != (longlong *)0x0) {
      LOCK();
      plVar11 = local_98 + 1;
      lVar8 = *plVar11;
      *(int *)plVar11 = (int)*plVar11 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*local_98 + 8))(local_98);
        LOCK();
        piVar1 = (int *)((longlong)local_98 + 0xc);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar15 == 1) {
          (**(code **)(*local_98 + 0x10))(local_98);
        }
      }
    }
    if (param_3 == 0) {
      (**(code **)(*local_258 + 0x40))(local_258,&DAT_181bf4111,DAT_181bf4110);
      iVar15 = 0x14;
    }
    else if (param_3 == 1) {
      (**(code **)(*local_258 + 0x40))(local_258,&DAT_181bf4119,DAT_181bf4118);
      iVar15 = 0x18;
    }
    else if (param_3 == 2) {
      (**(code **)(*local_258 + 0x40))(local_258,&DAT_181bf4125,DAT_181bf4124);
      iVar15 = 0x1c;
    }
    else {
      if (param_3 != 3) {
        local_2b0 = (char *)FUN_1811316e0(0x18);
        if (local_2b0 != (char *)0x0) {
          FUN_1805a48c0(local_2b0,"Unsupported PKStandard found in certificate");
        }
        lVar8 = FUN_1805c0260();
        local_338[0] = 0x3dc;
        local_2b0 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
        uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar8 + 8),&local_2b0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar9,local_338);
      }
      (**(code **)(*local_258 + 0x40))(local_258,&DAT_181bf4131,DAT_181bf4130);
      iVar15 = 0x20;
    }
    puVar6 = (undefined8 *)(**(code **)(*local_3c8 + 0x38))(local_3c8,local_90,1,3);
    plVar12 = plStack_240;
    local_248 = (longlong *)*puVar6;
    plVar11 = (longlong *)puVar6[1];
    puVar6[1] = 0;
    *puVar6 = 0;
    plVar5 = plVar11;
    local_238 = local_248;
    if (plStack_240 != (longlong *)0x0) {
      LOCK();
      plVar2 = plStack_240 + 1;
      lVar8 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        lVar8 = *plStack_240;
        plStack_240 = plVar11;
        (**(code **)(lVar8 + 8))(plVar12);
        LOCK();
        piVar1 = (int *)((longlong)plVar12 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        plVar5 = plStack_240;
        if (iVar3 == 1) {
          (**(code **)(*plVar12 + 0x10))(plVar12);
          plVar5 = plStack_240;
        }
      }
    }
    plStack_240 = plVar5;
    if (local_88 != (longlong *)0x0) {
      LOCK();
      plVar12 = local_88 + 1;
      lVar8 = *plVar12;
      *(int *)plVar12 = (int)*plVar12 + -1;
      UNLOCK();
      if ((int)lVar8 == 1) {
        (**(code **)(*local_88 + 8))(local_88);
        LOCK();
        piVar1 = (int *)((longlong)local_88 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*local_88 + 0x10))(local_88);
        }
      }
    }
    plVar12 = local_238;
    if (local_238 == (longlong *)0x0) {
      local_res8 = FUN_1811316e0(0x18);
      if (local_res8 == 0) {
        local_res8 = 0;
      }
      else {
        local_res8 = FUN_1805a48c0(local_res8,"Public Key Value is missing");
      }
      pcVar14 = (char *)FUN_1811316e0(0x18);
      if (pcVar14 == (char *)0x0) {
        pcVar14 = (char *)0x0;
      }
      else {
        local_2a8 = pcVar14;
        FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
        *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
      }
      local_330[0] = 0x3e2;
      local_2a8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_2a8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_330);
    }
    local_res8 = local_res8 & 0xffffffffffffff00;
    local_78 = &local_300;
    puStack_70 = &local_res8;
    FUN_1805e1ee0(&local_300,iVar15 * 2 + 2,&local_78);
    *local_300 = 0;
    local_300[1] = 4;
    local_3d8[0] = FUN_180706f70(iVar15,local_res20,local_300 + 2,0);
    if (local_3d8[0] != 0) {
      local_308 = (char *)FUN_1811316e0(0x18);
      if (local_308 == (char *)0x0) {
        local_3e8 = 0;
      }
      else {
        local_3e8 = FUN_1805a48c0(local_308,
                                  "[%d] BIG_BigNumberToBytes error - Setting the X-coordinate in Asn1ParserCert::SetEccPublicKey"
                                 );
      }
      pcVar14 = (char *)FUN_1811316e0(0x18);
      local_308 = pcVar14;
      if (pcVar14 == (char *)0x0) {
        pcVar14 = (char *)0x0;
      }
      else {
        FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
        *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
      }
      FUN_18060e760(*(undefined8 *)(local_3e8 + 8),local_3d8);
      local_328[0] = 0x3f0;
      local_308 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_308);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_328);
    }
    local_3d8[0] = FUN_180706f70(iVar15,local_res20 + 0x38,local_300 + (iVar15 + 2),0);
    if (local_3d8[0] == 0) {
      (**(code **)(*plVar12 + 0x50))(plVar12,&local_300);
      if (local_3a8 != (longlong *)0x0) {
        local_138 = local_3c8;
        plStack_130 = plStack_3c0;
        if (plStack_3c0 != (longlong *)0x0) {
          LOCK();
          *(int *)(plStack_3c0 + 1) = (int)plStack_3c0[1] + 1;
          UNLOCK();
        }
        (**(code **)(*local_3a8 + 8))(local_3a8,&local_138);
      }
      if (plVar11 != (longlong *)0x0) {
        LOCK();
        plVar12 = plVar11 + 1;
        lVar8 = *plVar12;
        *(int *)plVar12 = (int)*plVar12 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plVar11 + 8))(plVar11);
          LOCK();
          piVar1 = (int *)((longlong)plVar11 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plVar11 + 0x10))(plVar11);
          }
        }
      }
      if (plVar10 != (longlong *)0x0) {
        LOCK();
        plVar11 = plVar10 + 1;
        lVar8 = *plVar11;
        *(int *)plVar11 = (int)*plVar11 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plVar10 + 8))(plVar10);
          LOCK();
          piVar1 = (int *)((longlong)plVar10 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plVar10 + 0x10))(plVar10);
          }
        }
      }
      if (plVar7 != (longlong *)0x0) {
        LOCK();
        plVar10 = plVar7 + 1;
        lVar8 = *plVar10;
        *(int *)plVar10 = (int)*plVar10 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plVar7 + 8))(plVar7);
          LOCK();
          piVar1 = (int *)((longlong)plVar7 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plVar7 + 0x10))(plVar7);
          }
        }
      }
      if (plVar4 != (longlong *)0x0) {
        LOCK();
        plVar7 = plVar4 + 1;
        lVar8 = *plVar7;
        *(int *)plVar7 = (int)*plVar7 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plVar4 + 8))(plVar4);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plVar4 + 0x10))(plVar4);
          }
        }
      }
      plVar4 = plStack_3c0;
      if (plStack_3c0 != (longlong *)0x0) {
        LOCK();
        plVar7 = plStack_3c0 + 1;
        lVar8 = *plVar7;
        *(int *)plVar7 = (int)*plVar7 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plStack_3c0 + 8))(plStack_3c0);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plStack_3c0 + 0x10))();
          }
        }
      }
      plVar4 = plStack_3a0;
      if (plStack_3a0 != (longlong *)0x0) {
        LOCK();
        plVar7 = plStack_3a0 + 1;
        lVar8 = *plVar7;
        *(int *)plVar7 = (int)*plVar7 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plStack_3a0 + 8))(plStack_3a0);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plStack_3a0 + 0x10))();
          }
        }
      }
      plVar4 = plStack_390;
      if (plStack_390 != (longlong *)0x0) {
        LOCK();
        plVar7 = plStack_390 + 1;
        lVar8 = *plVar7;
        *(int *)plVar7 = (int)*plVar7 + -1;
        UNLOCK();
        if ((int)lVar8 == 1) {
          (**(code **)(*plStack_390 + 8))(plStack_390);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)(*plStack_390 + 0x10))();
          }
        }
      }
      if (local_300 == (undefined1 *)0x0) {
        return;
      }
      _Memory = local_300;
      if ((0xfff < (ulonglong)(local_2f0 - (longlong)local_300)) &&
         (_Memory = *(undefined1 **)(local_300 + -8),
         (undefined1 *)0x1f < local_300 + (-8 - (longlong)_Memory))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    local_res20 = FUN_1811316e0(0x18);
    if (local_res20 == 0) {
      local_res20 = 0;
    }
    else {
      local_res20 = FUN_1805a48c0(local_res20,
                                  "[%d] BIG_BigNumberToBytes error - Setting the Y-coordinate in Asn1ParserCert::SetEccPublicKey"
                                 );
    }
    pcVar14 = (char *)FUN_1811316e0(0x18);
    local_2a0 = pcVar14;
    if (pcVar14 == (char *)0x0) {
      pcVar14 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(local_res20 + 8),local_3d8);
    local_320[0] = 0x3f9;
    local_2a0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_2a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar9,local_320);
  }
  local_310 = (char *)FUN_1811316e0(0x18);
  if (local_310 != (char *)0x0) {
    FUN_1805a48c0(local_310,"Public Key PKStandard is missing");
  }
  pcVar14 = (char *)FUN_1811316e0(0x18);
  if (pcVar14 == (char *)0x0) {
    pcVar14 = (char *)0x0;
  }
  else {
    local_310 = pcVar14;
    FUN_1805a48c0(pcVar14,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar14 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_340[0] = 0x3b4;
  local_310 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar14 + 8),&local_310);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar9,local_340);
}



############ FUN_ 180a18aa0 size=1188 ############

void FUN_180a18aa0(longlong *param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong lVar5;
  int iVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  longlong lVar9;
  char *pcVar10;
  void *_Memory;
  undefined8 *local_res8;
  undefined4 local_res10 [2];
  undefined8 *local_res18;
  undefined4 local_res20 [2];
  void *local_e8;
  undefined8 uStack_e0;
  longlong local_d8;
  undefined4 local_d0 [2];
  char *local_c8;
  longlong *local_c0;
  longlong *plStack_b8;
  longlong *local_b0;
  char *local_a0;
  char *local_98;
  char *local_90;
  longlong *local_88;
  undefined8 local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  
  local_78 = 0xfffffffffffffffe;
  local_e8 = (void *)0x0;
  uStack_e0 = 0;
  lVar9 = 0;
  local_d8 = 0;
  local_c0 = (longlong *)0x0;
  plStack_b8 = (longlong *)0x0;
  puVar7 = (undefined8 *)(**(code **)(*param_1 + 0x18))(0,local_70,&DAT_181c09eb0);
  local_c0 = (longlong *)*puVar7;
  plVar3 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_b8 = plVar3;
  local_88 = local_c0;
  if (local_68 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_68 + 1;
    lVar5 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*local_68 + 8))(local_68);
      LOCK();
      piVar1 = (int *)((longlong)local_68 + 0xc);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)(*local_68 + 0x10))(local_68);
      }
    }
  }
  plVar4 = local_88;
  if (local_88 == (longlong *)0x0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"signatureEcdsa_R is missing");
    }
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar7;
    if (puVar7 == (undefined8 *)0x0) {
      puVar7 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
      *puVar7 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res10[0] = 0x467;
    local_a0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(puVar7[1],&local_a0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,local_res10);
  }
  FUN_1805b0f50(&local_e8,0x20,&local_e8);
  iVar6 = FUN_180706f70(0x20,param_2,local_e8);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar6);
  if (iVar6 != 0) {
    local_res18 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res18 != (undefined8 *)0x0) {
      lVar9 = FUN_1805a48c0(local_res18,
                            "[%d] BIG_BigNumberToBytes error - Setting the R Signature in Asn1ParserCert::SetEcdsaSignature"
                           );
    }
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    local_res18 = puVar7;
    if (puVar7 == (undefined8 *)0x0) {
      puVar7 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
      *puVar7 = pace::PaceLocationInfoFormatter::vftable;
    }
    FUN_18060e760(*(undefined8 *)(lVar9 + 8),&local_res8);
    local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x473);
    local_98 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(puVar7[1],&local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,&local_res18);
  }
  (**(code **)(*param_1 + 0x20))(param_1,&local_e8);
  (**(code **)(*plVar4 + 0x50))(plVar4,&local_e8);
  puVar7 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_60,&DAT_181c09ec0);
  local_c0 = (longlong *)*puVar7;
  plVar4 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_b8 = plVar4;
  local_b0 = local_c0;
  if (plVar3 != (longlong *)0x0) {
    LOCK();
    plVar2 = plVar3 + 1;
    lVar9 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*plVar3 + 8))(plVar3);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)(*plVar3 + 0x10))(plVar3);
      }
    }
  }
  if (local_58 != (longlong *)0x0) {
    LOCK();
    plVar3 = local_58 + 1;
    lVar9 = *plVar3;
    *(int *)plVar3 = (int)*plVar3 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*local_58 + 8))(local_58);
      LOCK();
      piVar1 = (int *)((longlong)local_58 + 0xc);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)(*local_58 + 0x10))(local_58);
      }
    }
  }
  plVar3 = local_b0;
  if (local_b0 != (longlong *)0x0) {
    FUN_1805b0f50(&local_e8,0x20,&local_e8);
    iVar6 = FUN_180706f70(0x20,param_2 + 0x38,local_e8);
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,iVar6);
    if (iVar6 != 0) {
      local_c8 = (char *)FUN_1811316e0(0x18);
      if (local_c8 == (char *)0x0) {
        lVar9 = 0;
      }
      else {
        lVar9 = FUN_1805a48c0(local_c8,
                              "[%d] BIG_BigNumberToBytes error - Setting the S Signature in Asn1ParserCert::SetEcdsaSignature"
                             );
      }
      pcVar10 = (char *)FUN_1811316e0(0x18);
      local_c8 = pcVar10;
      if (pcVar10 == (char *)0x0) {
        pcVar10 = (char *)0x0;
      }
      else {
        FUN_1805a48c0(pcVar10,"|__FILE__|%s|__LINE__|%d");
        *(undefined ***)pcVar10 = pace::PaceLocationInfoFormatter::vftable;
      }
      FUN_18060e760(*(undefined8 *)(lVar9 + 8),&local_res8);
      local_d0[0] = 0x48b;
      local_c8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar8 = FUN_1805a21d0(*(undefined8 *)(pcVar10 + 8),&local_c8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar8,local_d0);
    }
    (**(code **)(*param_1 + 0x20))(param_1,&local_e8);
    (**(code **)(*plVar3 + 0x50))(plVar3,&local_e8);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar9 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar6 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    if (local_e8 == (void *)0x0) {
      return;
    }
    _Memory = local_e8;
    if ((0xfff < (ulonglong)(local_d8 - (longlong)local_e8)) &&
       (_Memory = *(void **)((longlong)local_e8 + -8),
       0x1f < (ulonglong)((longlong)local_e8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"signatureEcdsa_S is missing");
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res20[0] = 0x47f;
  local_90 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_90);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,local_res20);
}



############ FUN_ 180a18f90 size=1548 ############

void FUN_180a18f90(longlong *param_1,char *param_2,longlong *param_3)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *plVar8;
  char *pcVar9;
  undefined8 uVar10;
  undefined8 *puVar11;
  char *pcVar12;
  longlong lVar13;
  uint uVar14;
  char *pcVar15;
  longlong *plVar16;
  char *local_res10;
  longlong *local_res18;
  char *local_res20;
  undefined4 local_100 [2];
  undefined4 local_f8 [2];
  char *local_f0;
  char *local_e8;
  longlong *local_e0;
  ulonglong local_d8;
  char *local_d0;
  undefined8 uStack_c8;
  longlong local_c0;
  longlong *local_b8;
  longlong *plStack_b0;
  longlong *local_a8;
  char *local_98;
  char *local_90 [2];
  longlong *local_80;
  undefined8 local_70;
  undefined1 local_68 [8];
  longlong *local_60;
  undefined1 local_58 [8];
  longlong *local_50;
  
  local_70 = 0xfffffffffffffffe;
  local_d0 = (char *)0x0;
  uStack_c8 = 0;
  pcVar12 = (char *)0x0;
  local_c0 = 0;
  local_b8 = (longlong *)0x0;
  plStack_b0 = (longlong *)0x0;
  local_d8 = local_d8 & 0xffffffff00000000;
  local_res18 = param_3;
  if (0x7e < (byte)(*param_2 - 1U)) {
    local_res10 = (char *)FUN_1811316e0(0x18);
    if (local_res10 != (char *)0x0) {
      FUN_1805a48c0(local_res10,"ILokExtensionPrivileges have a bad cert level value");
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    local_res10 = pcVar9;
    if (pcVar9 != (char *)0x0) {
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
      pcVar12 = pcVar9;
    }
    local_res10 = (char *)CONCAT44(local_res10._4_4_,0x52a);
    local_98 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar12 + 8),&local_98);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_res10);
  }
  if (8 < (byte)param_2[2]) {
    local_res20 = (char *)FUN_1811316e0(0x18);
    if (local_res20 != (char *)0x0) {
      FUN_1805a48c0(local_res20,
                    "ILokExtensionPrivileges number of Participant IDs exceeds the maximum");
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    local_res20 = pcVar9;
    if (pcVar9 != (char *)0x0) {
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
      pcVar12 = pcVar9;
    }
    local_res20 = (char *)CONCAT44(local_res20._4_4_,0x52f);
    local_90[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar12 + 8),local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_res20);
  }
  puVar11 = (undefined8 *)(**(code **)(*param_1 + 0x30))(param_1,local_68,&DAT_181c099f0);
  local_b8 = (longlong *)*puVar11;
  plVar4 = (longlong *)puVar11[1];
  puVar11[1] = 0;
  *puVar11 = 0;
  plStack_b0 = plVar4;
  local_80 = local_b8;
  if (local_60 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_60 + 1;
    lVar13 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar13 == 1) {
      (**(code **)(*local_60 + 8))(local_60);
      LOCK();
      piVar1 = (int *)((longlong)local_60 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_60 + 0x10))(local_60);
      }
    }
  }
  if (local_80 == (longlong *)0x0) {
    local_f0 = (char *)FUN_1811316e0(0x18);
    if (local_f0 != (char *)0x0) {
      FUN_1805a48c0(local_f0,"ILokExtensionPrivileges extension is missing");
    }
    pcVar9 = (char *)FUN_1811316e0(0x18);
    if (pcVar9 != (char *)0x0) {
      local_f0 = pcVar9;
      FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
      pcVar12 = pcVar9;
    }
    local_100[0] = 0x539;
    local_f0 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar12 + 8),&local_f0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_100);
  }
  puVar11 = (undefined8 *)(**(code **)(*local_80 + 0x38))(local_80,local_58,1,2);
  local_b8 = (longlong *)*puVar11;
  plVar5 = (longlong *)puVar11[1];
  puVar11[1] = 0;
  *puVar11 = 0;
  plStack_b0 = plVar5;
  local_a8 = local_b8;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar16 = plVar4 + 1;
    lVar13 = *plVar16;
    *(int *)plVar16 = (int)*plVar16 + -1;
    UNLOCK();
    if ((int)lVar13 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_50 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_50 + 1;
    lVar13 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar13 == 1) {
      (**(code **)(*local_50 + 8))(local_50);
      LOCK();
      piVar1 = (int *)((longlong)local_50 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_50 + 0x10))(local_50);
      }
    }
  }
  plVar4 = local_a8;
  if (local_a8 != (longlong *)0x0) {
    lVar13 = (longlong)(int)((uint)(byte)param_2[2] << 2) + 0xc +
             (longlong)(int)(((uint)(byte)param_2[3] + (uint)(byte)param_2[3] * 4) * 2);
    if (local_res18 != (longlong *)0x0) {
      local_d8 = local_res18[1];
      if ((int)local_d8 != 0) {
        lVar13 = lVar13 + (ulonglong)((int)local_d8 * 4 + 4);
      }
    }
    FUN_1805b0f50(&local_d0,lVar13,&local_d0);
    pcVar9 = local_d0;
    *local_d0 = *param_2;
    local_d0[1] = param_2[1];
    local_d0[2] = param_2[2];
    local_d0[3] = param_2[3];
    FUN_180b227b0(*(undefined4 *)(param_2 + 4),local_d0 + 4,4);
    FUN_180b227b0(*(undefined4 *)(param_2 + 8),pcVar9 + 8,4);
    pcVar9 = pcVar9 + 0xc;
    pcVar15 = pcVar12;
    if (param_2[2] != '\0') {
      do {
        FUN_180b227b0(*(undefined4 *)(param_2 + (longlong)pcVar15 * 4 + 0xc),pcVar9,4);
        pcVar9 = pcVar9 + 4;
        uVar14 = (int)pcVar15 + 1;
        pcVar15 = (char *)(ulonglong)uVar14;
      } while (uVar14 < (byte)param_2[2]);
    }
    if (param_2[3] != '\0') {
      do {
        FUN_180b227b0(*(undefined4 *)(param_2 + (longlong)pcVar12 * 4 + 0x2c),pcVar9,4);
        FUN_180b227b0(*(undefined4 *)(param_2 + (longlong)pcVar12 * 4 + 0x4c),pcVar9 + 4,4);
        pcVar9[8] = param_2[(longlong)(pcVar12 + 0x6c)];
        pcVar9[9] = param_2[(longlong)(pcVar12 + 0x74)];
        pcVar9 = pcVar9 + 10;
        uVar14 = (int)pcVar12 + 1;
        pcVar12 = (char *)(ulonglong)uVar14;
      } while (uVar14 < (byte)param_2[3]);
    }
    if ((int)local_d8 != 0) {
      FUN_180b227b0(local_d8 & 0xffffffff,pcVar9,4);
      plVar7 = local_res18;
      local_e0 = (longlong *)*local_res18;
      plVar16 = (longlong *)*local_e0;
      if (plVar16 != local_e0) {
        do {
          pcVar9 = pcVar9 + 4;
          FUN_180b227b0(*(undefined4 *)((longlong)plVar16 + 0x1c),pcVar9,4);
          plVar6 = (longlong *)plVar16[2];
          if (*(char *)((longlong)plVar6 + 0x19) == '\0') {
            cVar3 = *(char *)(*plVar6 + 0x19);
            plVar16 = plVar6;
            plVar6 = (longlong *)*plVar6;
            while (cVar3 == '\0') {
              cVar3 = *(char *)(*plVar6 + 0x19);
              plVar16 = plVar6;
              plVar6 = (longlong *)*plVar6;
            }
          }
          else {
            cVar3 = *(char *)(plVar16[1] + 0x19);
            plVar8 = (longlong *)plVar16[1];
            plVar6 = plVar16;
            while ((plVar16 = plVar8, cVar3 == '\0' && (plVar6 == (longlong *)plVar16[2]))) {
              cVar3 = *(char *)(plVar16[1] + 0x19);
              plVar8 = (longlong *)plVar16[1];
              plVar6 = plVar16;
            }
          }
          local_e0 = (longlong *)*plVar7;
        } while (plVar16 != local_e0);
      }
    }
    (**(code **)(*plVar4 + 0x50))(plVar4,&local_d0);
    (**(code **)(*param_1 + 400))(param_1,*(uint *)(param_2 + 4) >> 0x17 & 0xffffff01);
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar4 = plVar5 + 1;
      lVar13 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar13 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (local_d0 != (char *)0x0) {
      pcVar12 = local_d0;
      if ((0xfff < (ulonglong)(local_c0 - (longlong)local_d0)) &&
         (pcVar12 = *(char **)(local_d0 + -8), (char *)0x1f < local_d0 + (-8 - (longlong)pcVar12)))
      {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pcVar12);
    }
    return;
  }
  local_e8 = (char *)FUN_1811316e0(0x18);
  if (local_e8 != (char *)0x0) {
    FUN_1805a48c0(local_e8,"ILokExtensionPrivileges extension integer is missing");
  }
  pcVar9 = (char *)FUN_1811316e0(0x18);
  if (pcVar9 != (char *)0x0) {
    local_e8 = pcVar9;
    FUN_1805a48c0(pcVar9,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar9 = pace::PaceLocationInfoFormatter::vftable;
    pcVar12 = pcVar9;
  }
  local_f8[0] = 0x53d;
  local_e8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar10 = FUN_1805a21d0(*(undefined8 *)(pcVar12 + 8),&local_e8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar10,local_f8);
}



############ FUN_ 180a19680 size=437 ############

void FUN_180a19680(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099ac,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "IssueNumber is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x5b8);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a19850 size=847 ############

void FUN_180a19850(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  char cVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  longlong *plVar11;
  undefined8 *puVar12;
  int iVar13;
  undefined8 *local_res8;
  longlong *local_res10;
  undefined8 *local_res18;
  char *local_res20;
  char *local_d8;
  longlong local_d0;
  longlong *plStack_c8;
  longlong *local_c0;
  longlong local_b0;
  longlong *local_a8;
  longlong *local_a0;
  longlong *plStack_98;
  undefined8 local_90;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  longlong local_60;
  
  local_90 = 0xfffffffffffffffe;
  local_d0 = 0;
  plStack_c8 = (longlong *)0x0;
  local_a0 = (longlong *)0x0;
  plStack_98 = (longlong *)0x0;
  puVar12 = (undefined8 *)0x0;
  local_res10 = param_2;
  if (((longlong *)*param_2 == (longlong *)0x0) ||
     (cVar8 = (**(code **)(*(longlong *)*param_2 + 0x10))(), cVar8 == '\0')) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Issuer not provided by caller");
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar12 = puVar9;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x5d7);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar10 = FUN_1805a21d0(puVar12[1],&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_res8);
  }
  puVar9 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_80,&DAT_181c09e5c);
  local_c0 = (longlong *)*puVar9;
  plVar5 = (longlong *)puVar9[1];
  puVar9[1] = 0;
  *puVar9 = 0;
  local_a0 = local_c0;
  plStack_98 = plVar5;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar6 = local_78 + 1;
    lVar7 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar13 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar13 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (local_c0 != (longlong *)0x0) {
    (**(code **)(*local_c0 + 0x18))();
    iVar13 = 1;
    while( true ) {
      plVar11 = (longlong *)
                (**(code **)(*(longlong *)*param_2 + 0x38))((longlong *)*param_2,local_70,iVar13,0);
      plVar3 = plStack_c8;
      local_d0 = *plVar11;
      plVar6 = (longlong *)plVar11[1];
      plVar11[1] = 0;
      *plVar11 = 0;
      plVar11 = plVar6;
      local_60 = local_d0;
      if (plStack_c8 != (longlong *)0x0) {
        LOCK();
        plVar2 = plStack_c8 + 1;
        lVar7 = *plVar2;
        *(int *)plVar2 = (int)*plVar2 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          lVar7 = *plStack_c8;
          plStack_c8 = plVar6;
          (**(code **)(lVar7 + 8))(plVar3);
          LOCK();
          piVar1 = (int *)((longlong)plVar3 + 0xc);
          iVar4 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          plVar11 = plStack_c8;
          if (iVar4 == 1) {
            (**(code **)(*plVar3 + 0x10))(plVar3);
            plVar11 = plStack_c8;
          }
        }
      }
      plStack_c8 = plVar11;
      plVar3 = local_68;
      iVar13 = iVar13 + 1;
      if (local_68 != (longlong *)0x0) {
        LOCK();
        plVar11 = local_68 + 1;
        lVar7 = *plVar11;
        *(int *)plVar11 = (int)*plVar11 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          (**(code **)(*local_68 + 8))(local_68);
          LOCK();
          piVar1 = (int *)((longlong)plVar3 + 0xc);
          iVar4 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar4 == 1) {
            (**(code **)(*plVar3 + 0x10))(plVar3);
          }
        }
      }
      if (local_60 == 0) break;
      local_b0 = local_60;
      if (plVar6 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar6 + 1) = (int)plVar6[1] + 1;
        UNLOCK();
      }
      local_a8 = plVar6;
      (**(code **)(*local_c0 + 8))(local_c0,&local_b0);
    }
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar5 + 1;
      lVar7 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar13 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (plVar6 != (longlong *)0x0) {
      LOCK();
      plVar5 = plVar6 + 1;
      lVar7 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar6 + 8))(plVar6);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar13 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar6 + 0x10))(plVar6);
        }
      }
    }
    plVar5 = (longlong *)param_2[1];
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar6 = plVar5 + 1;
      lVar7 = *plVar6;
      *(int *)plVar6 = (int)*plVar6 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar13 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    return;
  }
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"Issuer is missing");
  }
  puVar9 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar9;
  if (puVar9 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
    *puVar9 = pace::PaceLocationInfoFormatter::vftable;
    puVar12 = puVar9;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x5dd);
  local_d8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar10 = FUN_1805a21d0(puVar12[1],&local_d8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar10,&local_res18);
}



############ FUN_ 180a19bc0 size=437 ############

void FUN_180a19bc0(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099e8,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "KeySpace is missing from %d, where nonzero = subject and zero = issuer)")
    ;
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x619);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a19d90 size=835 ############

void FUN_180a19d90(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  void *_Memory;
  undefined8 *puVar9;
  undefined1 uVar10;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  undefined8 *local_res18;
  undefined4 local_res20 [2];
  void *local_c8;
  undefined1 *puStack_c0;
  undefined1 *local_b8;
  longlong *local_b0;
  longlong *plStack_a8;
  longlong *local_a0;
  char *local_90;
  char *local_88;
  longlong *local_80;
  undefined8 local_70;
  undefined1 local_68 [8];
  longlong *local_60;
  undefined1 local_58 [8];
  longlong *local_50;
  
  local_70 = 0xfffffffffffffffe;
  local_c8 = (void *)0x0;
  puStack_c0 = (undefined1 *)0x0;
  puVar9 = (undefined8 *)0x0;
  local_b8 = (undefined1 *)0x0;
  local_b0 = (longlong *)0x0;
  plStack_a8 = (longlong *)0x0;
  puVar7 = (undefined8 *)(**(code **)(*param_1 + 0x30))(0,local_68,&DAT_181c099fc);
  local_b0 = (longlong *)*puVar7;
  plVar4 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_a8 = plVar4;
  local_80 = local_b0;
  if (local_60 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_60 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_60 + 8))(local_60);
      LOCK();
      piVar1 = (int *)((longlong)local_60 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_60 + 0x10))(local_60);
      }
    }
  }
  if (local_80 == (longlong *)0x0) {
    local_res18 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res18 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res18,"KeyUsage extension is missing");
    }
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    local_res18 = puVar7;
    if (puVar7 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
      *puVar7 = pace::PaceLocationInfoFormatter::vftable;
      puVar9 = puVar7;
    }
    local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x648);
    local_90 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(puVar9[1],&local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,&local_res18);
  }
  puVar7 = (undefined8 *)(**(code **)(*local_80 + 0x38))(local_80,local_58,1,3);
  local_b0 = (longlong *)*puVar7;
  plVar5 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_a8 = plVar5;
  local_a0 = local_b0;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar2 = plVar4 + 1;
    lVar6 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_50 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_50 + 1;
    lVar6 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_50 + 8))(local_50);
      LOCK();
      piVar1 = (int *)((longlong)local_50 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_50 + 0x10))(local_50);
      }
    }
  }
  plVar4 = local_a0;
  if (local_a0 != (longlong *)0x0) {
    local_res10[0] = 0;
    if (local_b8 == puStack_c0) {
      FUN_1805b0850(&local_c8,puStack_c0,local_res10);
    }
    else {
      *puStack_c0 = 0;
      puStack_c0 = puStack_c0 + 1;
    }
    uVar10 = (undefined1)((uint)param_2 >> 0x18);
    local_res8 = (undefined8 *)CONCAT71(local_res8._1_7_,uVar10);
    if (local_b8 == puStack_c0) {
      FUN_1805b0850(&local_c8,puStack_c0,&local_res8);
    }
    else {
      *puStack_c0 = uVar10;
      puStack_c0 = puStack_c0 + 1;
    }
    (**(code **)(*plVar4 + 0x50))(plVar4,&local_c8);
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar4 = plVar5 + 1;
      lVar6 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (local_c8 == (void *)0x0) {
      return;
    }
    _Memory = local_c8;
    if ((0xfff < (ulonglong)((longlong)local_b8 - (longlong)local_c8)) &&
       (_Memory = *(void **)((longlong)local_c8 + -8),
       0x1f < (ulonglong)((longlong)local_c8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res8,"KeyUsage extension bit string is missing");
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
    puVar9 = puVar7;
  }
  local_res20[0] = 0x64c;
  local_88 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar9[1],&local_88);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,local_res20);
}



############ FUN_ 180a1a100 size=1401 ############

void FUN_180a1a100(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  bool bVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined8 uVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong local_res8;
  longlong *local_190;
  longlong *plStack_188;
  longlong *local_178;
  longlong *plStack_170;
  longlong *local_168;
  longlong *local_160;
  longlong *local_158;
  longlong *plStack_150;
  longlong *local_148;
  longlong *plStack_140;
  longlong *local_138;
  longlong *plStack_130;
  longlong *local_128;
  longlong *plStack_120;
  longlong *local_118;
  longlong *plStack_110;
  char *local_108 [2];
  longlong *local_f8;
  longlong *plStack_f0;
  longlong *local_e8;
  longlong *local_e0;
  longlong *local_d8;
  longlong *local_c8;
  longlong *local_b8;
  longlong *plStack_b0;
  longlong *local_a8;
  longlong *plStack_a0;
  longlong *local_98;
  longlong *plStack_90;
  undefined8 local_88;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined8 local_60;
  undefined8 uStack_58;
  undefined8 local_50;
  
  local_88 = 0xfffffffffffffffe;
  local_60 = 0;
  uStack_58 = 0;
  plVar10 = (longlong *)0x0;
  local_50 = 0;
  local_148 = (longlong *)0x0;
  plStack_140 = (longlong *)0x0;
  local_158 = (longlong *)0x0;
  plStack_150 = (longlong *)0x0;
  local_118 = (longlong *)0x0;
  plStack_110 = (longlong *)0x0;
  local_128 = (longlong *)0x0;
  plStack_120 = (longlong *)0x0;
  bVar4 = false;
  puVar5 = (undefined8 *)(**(code **)(*param_1 + 0x40))(param_1,local_80,&DAT_181c099e4,param_2);
  local_190 = (longlong *)*puVar5;
  plVar3 = (longlong *)puVar5[1];
  puVar5[1] = 0;
  *puVar5 = 0;
  local_d8 = local_190;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar8 = local_78 + 1;
    lVar6 = *plVar8;
    *(int *)plVar8 = (int)*plVar8 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  plStack_188 = plVar3;
  if (local_d8 == (longlong *)0x0) {
    puVar5 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_70,&DAT_181c09e84);
    local_148 = (longlong *)*puVar5;
    plStack_140 = (longlong *)puVar5[1];
    puVar5[1] = 0;
    *puVar5 = 0;
    local_c8 = local_148;
    if (local_68 != (longlong *)0x0) {
      LOCK();
      plVar8 = local_68 + 1;
      lVar6 = *plVar8;
      *(int *)plVar8 = (int)*plVar8 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*local_68 + 8))(local_68);
        LOCK();
        piVar1 = (int *)((longlong)local_68 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_68 + 0x10))(local_68);
        }
      }
    }
    if (local_c8 == (longlong *)0x0) {
      local_res8 = FUN_1811316e0(0x18);
      if (local_res8 != 0) {
        FUN_1805a48c0(local_res8,"Extensions are missing");
      }
      lVar6 = FUN_1805c0260();
      local_res8 = CONCAT44(local_res8._4_4_,0x685);
      local_108[0] = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar7 = FUN_1805a21d0(*(undefined8 *)(lVar6 + 8),local_108);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar7,&local_res8);
    }
    lVar6 = FUN_1811316e0(0x38);
    plVar8 = plVar10;
    if (lVar6 != 0) {
      plVar8 = (longlong *)FUN_180b23940(lVar6);
    }
    local_138 = plVar8;
    FUN_180a0c2a0(&plStack_130,plVar8);
    FUN_1805ae620(&local_138,plVar8,plVar8);
    plVar8 = local_138;
    local_158 = local_138;
    plStack_150 = plStack_130;
    *(undefined1 *)(local_138 + 1) = 0x31;
    lVar6 = FUN_1811316e0(0x38);
    plVar9 = plVar10;
    if (lVar6 != 0) {
      plVar9 = (longlong *)FUN_180b23940(lVar6);
    }
    local_178 = plVar9;
    FUN_180a0c2a0(&plStack_170,plVar9);
    FUN_1805ae620(&local_178,plVar9,plVar9);
    plVar9 = local_178;
    local_118 = local_178;
    plStack_110 = plStack_170;
    *(undefined1 *)(local_178 + 1) = 0x30;
    local_b8 = local_178;
    plStack_b0 = plStack_170;
    if (plStack_170 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_170 + 1) = (int)plStack_170[1] + 1;
      UNLOCK();
      plVar8 = local_138;
    }
    (**(code **)(*plVar8 + 8))(plVar8,&local_b8);
    lVar6 = FUN_1811316e0(0x38);
    plVar8 = plVar10;
    if (lVar6 != 0) {
      plVar8 = (longlong *)FUN_180b24b00(lVar6);
    }
    local_f8 = plVar8;
    FUN_180a0c310(&plStack_f0,plVar8);
    FUN_1805ae620(&local_f8,plVar8,plVar8);
    plVar8 = local_f8;
    local_128 = local_f8;
    plStack_120 = plStack_f0;
    *(undefined1 *)(local_f8 + 1) = 6;
    (**(code **)(*local_f8 + 0x40))(local_f8,&DAT_181c099e5,DAT_181c099e4);
    local_a8 = plVar8;
    plStack_a0 = plStack_f0;
    if (plStack_f0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_f0 + 1) = (int)plStack_f0[1] + 1;
      UNLOCK();
      plVar9 = local_178;
    }
    (**(code **)(*plVar9 + 8))(plVar9,&local_a8);
    lVar6 = FUN_1811316e0(0x38);
    if (lVar6 != 0) {
      plVar10 = (longlong *)FUN_180b24b00(lVar6);
    }
    local_168 = plVar10;
    FUN_180a0c310(&local_160,plVar10);
    FUN_1805ae620(&local_168,plVar10,plVar10);
    plVar10 = local_160;
    local_190 = local_168;
    local_168 = (longlong *)0x0;
    plStack_188 = local_160;
    local_160 = plVar3;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar8 = plVar3 + 1;
      lVar6 = *plVar8;
      *(int *)plVar8 = (int)*plVar8 + -1;
      UNLOCK();
      plVar9 = local_178;
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar3 + 8))(plVar3);
        LOCK();
        piVar1 = (int *)((longlong)plVar3 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        plVar9 = local_178;
        if (iVar2 == 1) {
          (**(code **)(*plVar3 + 0x10))(plVar3);
          plVar9 = local_178;
        }
      }
    }
    *(undefined1 *)(local_190 + 1) = 0x13;
    local_e0 = plVar10;
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar10 + 1) = (int)plVar10[1] + 1;
      UNLOCK();
      plVar9 = local_178;
    }
    local_e8 = local_190;
    (**(code **)(*plVar9 + 8))(plVar9,&local_e8);
    bVar4 = true;
  }
  (**(code **)(*local_190 + 0x48))(local_190,param_3);
  if (bVar4) {
    local_98 = local_158;
    plStack_90 = plStack_150;
    if (plStack_150 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_150 + 1) = (int)plStack_150[1] + 1;
      UNLOCK();
    }
    (**(code **)(*local_148 + 8))(local_148,&local_98);
  }
  if (plStack_188 != (longlong *)0x0) {
    LOCK();
    plVar3 = plStack_188 + 1;
    lVar6 = *plVar3;
    *(int *)plVar3 = (int)*plVar3 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plStack_188 + 8))(plStack_188);
      LOCK();
      piVar1 = (int *)((longlong)plStack_188 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_188 + 0x10))();
      }
    }
  }
  plVar3 = plStack_120;
  if (plStack_120 != (longlong *)0x0) {
    LOCK();
    plVar10 = plStack_120 + 1;
    lVar6 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plStack_120 + 8))(plStack_120);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_120 + 0x10))();
      }
    }
  }
  plVar3 = plStack_110;
  if (plStack_110 != (longlong *)0x0) {
    LOCK();
    plVar10 = plStack_110 + 1;
    lVar6 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plStack_110 + 8))(plStack_110);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_110 + 0x10))();
      }
    }
  }
  plVar3 = plStack_150;
  if (plStack_150 != (longlong *)0x0) {
    LOCK();
    plVar10 = plStack_150 + 1;
    lVar6 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plStack_150 + 8))(plStack_150);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_150 + 0x10))();
      }
    }
  }
  plVar3 = plStack_140;
  if (plStack_140 != (longlong *)0x0) {
    LOCK();
    plVar10 = plStack_140 + 1;
    lVar6 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plStack_140 + 8))(plStack_140);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_140 + 0x10))();
      }
    }
  }
  return;
}



############ FUN_ 180a1a690 size=437 ############

void FUN_180a1a690(longlong *param_1,undefined1 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined1 local_res10 [8];
  char *local_res20;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 0;
  local_res10[0] = param_2;
  plVar5 = (longlong *)
           (**(code **)(*param_1 + 0x40))(0,local_50,&DAT_181c099dc,param_2,0xfffffffffffffffe,0,0);
  plVar3 = (longlong *)*plVar5;
  plVar4 = (longlong *)plVar5[1];
  plVar5[1] = 0;
  *plVar5 = 0;
  if (local_48 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_48 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_48 + 8))(local_48);
      LOCK();
      piVar1 = (int *)((longlong)local_48 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x48))(plVar3,param_3);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar4 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return;
  }
  local_res8 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res8 == (undefined8 *)0x0) {
    lVar6 = 0;
  }
  else {
    lVar6 = FUN_1805a48c0(local_res8,
                          "Organization is missing from %d, where nonzero = subject and zero = issuer)"
                         );
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res8 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  FUN_1806548b0(*(undefined8 *)(lVar6 + 8),local_res10);
  local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x6d8);
  local_res20 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res8);
}



############ FUN_ 180a1a860 size=1659 ############

void FUN_180a1a860(longlong *param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  bool bVar3;
  longlong *plVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  undefined1 *_Memory;
  longlong *local_res8;
  undefined4 local_res10 [2];
  longlong *local_res18;
  char *local_res20;
  longlong *local_1b0;
  longlong *plStack_1a8;
  longlong *local_198;
  longlong *plStack_190;
  longlong *local_188;
  longlong *local_180;
  longlong *local_178;
  longlong *plStack_170;
  longlong *local_168;
  longlong *plStack_160;
  longlong *local_158;
  longlong *plStack_150;
  undefined1 *local_148;
  undefined8 uStack_140;
  longlong local_138;
  longlong *local_128;
  longlong *plStack_120;
  longlong *local_118;
  longlong *plStack_110;
  char *local_108 [2];
  longlong *local_f8;
  longlong *plStack_f0;
  longlong *local_e8;
  longlong *local_e0;
  longlong *local_d8;
  longlong *local_c8;
  longlong *local_b8;
  longlong *plStack_b0;
  longlong *local_a8;
  longlong *plStack_a0;
  longlong *local_98;
  longlong *plStack_90;
  undefined8 local_88;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  
  local_88 = 0xfffffffffffffffe;
  local_148 = (undefined1 *)0x0;
  uStack_140 = 0;
  plVar10 = (longlong *)0x0;
  local_138 = 0;
  local_168 = (longlong *)0x0;
  plStack_160 = (longlong *)0x0;
  local_178 = (longlong *)0x0;
  plStack_170 = (longlong *)0x0;
  local_118 = (longlong *)0x0;
  plStack_110 = (longlong *)0x0;
  local_128 = (longlong *)0x0;
  plStack_120 = (longlong *)0x0;
  bVar3 = false;
  if (param_2 == 0) {
    local_res8 = (longlong *)FUN_1811316e0(0x18);
    if (local_res8 != (longlong *)0x0) {
      FUN_1805a48c0(local_res8,"PublisherParticipantID cannot be zero");
    }
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    local_res8 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      FUN_1805a48c0(plVar4,"|__FILE__|%s|__LINE__|%d");
      *plVar4 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar10 = plVar4;
    }
    local_res10[0] = 0x736;
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar5 = FUN_1805a21d0(plVar10[1],&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_res10);
  }
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x30))(param_1,local_80,&DAT_181c09a38);
  local_1b0 = (longlong *)*puVar6;
  plVar4 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  local_d8 = local_1b0;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar8 = local_78 + 1;
    lVar7 = *plVar8;
    *(int *)plVar8 = (int)*plVar8 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  plStack_1a8 = plVar4;
  if (local_d8 == (longlong *)0x0) {
    puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_70,&DAT_181c09e98);
    local_168 = (longlong *)*puVar6;
    plStack_160 = (longlong *)puVar6[1];
    puVar6[1] = 0;
    *puVar6 = 0;
    local_c8 = local_168;
    if (local_68 != (longlong *)0x0) {
      LOCK();
      plVar8 = local_68 + 1;
      lVar7 = *plVar8;
      *(int *)plVar8 = (int)*plVar8 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*local_68 + 8))(local_68);
        LOCK();
        piVar1 = (int *)((longlong)local_68 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_68 + 0x10))(local_68);
        }
      }
    }
    if (local_c8 == (longlong *)0x0) {
      local_res8 = (longlong *)FUN_1811316e0(0x18);
      if (local_res8 != (longlong *)0x0) {
        FUN_1805a48c0(local_res8,"Extensions are missing");
      }
      lVar7 = FUN_1805c0260();
      local_res8 = (longlong *)CONCAT44(local_res8._4_4_,0x73f);
      local_108[0] = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
      uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar7 + 8),local_108);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar5,&local_res8);
    }
    lVar7 = FUN_1811316e0(0x38);
    plVar8 = plVar10;
    if (lVar7 != 0) {
      plVar8 = (longlong *)FUN_180b23940(lVar7);
    }
    local_158 = plVar8;
    FUN_180a0c2a0(&plStack_150,plVar8);
    FUN_1805ae620(&local_158,plVar8,plVar8,param_4,lVar7);
    plVar8 = local_158;
    local_178 = local_158;
    plStack_170 = plStack_150;
    *(undefined1 *)(local_158 + 1) = 0x30;
    lVar7 = FUN_1811316e0(0x38);
    plVar9 = plVar10;
    if (lVar7 != 0) {
      plVar9 = (longlong *)FUN_180b24b00(lVar7);
    }
    local_f8 = plVar9;
    FUN_180a0c310(&plStack_f0,plVar9);
    FUN_1805ae620(&local_f8,plVar9,plVar9,param_4,lVar7);
    plVar9 = local_f8;
    local_118 = local_f8;
    plStack_110 = plStack_f0;
    *(undefined1 *)(local_f8 + 1) = 6;
    (**(code **)(*local_f8 + 0x40))(local_f8,&DAT_181c09a39,DAT_181c09a20);
    local_b8 = plVar9;
    plStack_b0 = plStack_f0;
    if (plStack_f0 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_f0 + 1) = (int)plStack_f0[1] + 1;
      UNLOCK();
      plVar8 = local_158;
    }
    (**(code **)(*plVar8 + 8))(plVar8,&local_b8);
    lVar7 = FUN_1811316e0(0x38);
    plVar9 = plVar10;
    if (lVar7 != 0) {
      plVar9 = (longlong *)FUN_180b23940(lVar7);
    }
    local_198 = plVar9;
    FUN_180a0c2a0(&plStack_190,plVar9);
    FUN_1805ae620(&local_198,plVar9,plVar9,param_4,lVar7);
    plVar9 = local_198;
    local_128 = local_198;
    plStack_120 = plStack_190;
    *(undefined1 *)(local_198 + 1) = 4;
    local_a8 = local_198;
    plStack_a0 = plStack_190;
    if (plStack_190 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_190 + 1) = (int)plStack_190[1] + 1;
      UNLOCK();
      plVar8 = local_158;
    }
    (**(code **)(*plVar8 + 8))(plVar8,&local_a8);
    local_res18 = (longlong *)FUN_1811316e0(0x38);
    if (local_res18 != (longlong *)0x0) {
      plVar10 = (longlong *)FUN_180b24b00(local_res18);
    }
    local_188 = plVar10;
    FUN_180a0c310(&local_180,plVar10);
    FUN_1805ae620(&local_188,plVar10,plVar10);
    plVar10 = local_180;
    local_1b0 = local_188;
    local_res18 = local_188;
    local_188 = (longlong *)0x0;
    plStack_1a8 = local_180;
    local_180 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar8 = plVar4 + 1;
      lVar7 = *plVar8;
      *(int *)plVar8 = (int)*plVar8 + -1;
      UNLOCK();
      plVar9 = local_198;
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        plVar9 = local_198;
        if (iVar2 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
          plVar9 = local_198;
        }
      }
    }
    *(undefined1 *)(local_res18 + 1) = 3;
    local_e0 = plVar10;
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar10 + 1) = (int)plVar10[1] + 1;
      UNLOCK();
      plVar9 = local_198;
    }
    local_e8 = local_res18;
    (**(code **)(*plVar9 + 8))(plVar9,&local_e8);
    bVar3 = true;
  }
  FUN_1805b0f50(&local_148,5,&local_148);
  *local_148 = 0;
  FUN_180b227b0(param_2,local_148 + 1,4);
  (**(code **)(*local_1b0 + 0x50))(local_1b0,&local_148);
  if (bVar3) {
    local_98 = local_178;
    plStack_90 = plStack_170;
    if (plStack_170 != (longlong *)0x0) {
      LOCK();
      *(int *)(plStack_170 + 1) = (int)plStack_170[1] + 1;
      UNLOCK();
    }
    (**(code **)(*local_168 + 8))(local_168,&local_98);
  }
  if (plStack_1a8 != (longlong *)0x0) {
    LOCK();
    plVar10 = plStack_1a8 + 1;
    lVar7 = *plVar10;
    *(int *)plVar10 = (int)*plVar10 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_1a8 + 8))(plStack_1a8);
      LOCK();
      piVar1 = (int *)((longlong)plStack_1a8 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_1a8 + 0x10))();
      }
    }
  }
  plVar10 = plStack_120;
  if (plStack_120 != (longlong *)0x0) {
    LOCK();
    plVar4 = plStack_120 + 1;
    lVar7 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_120 + 8))(plStack_120);
      LOCK();
      piVar1 = (int *)((longlong)plVar10 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_120 + 0x10))();
      }
    }
  }
  plVar10 = plStack_110;
  if (plStack_110 != (longlong *)0x0) {
    LOCK();
    plVar4 = plStack_110 + 1;
    lVar7 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_110 + 8))(plStack_110);
      LOCK();
      piVar1 = (int *)((longlong)plVar10 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_110 + 0x10))();
      }
    }
  }
  plVar10 = plStack_170;
  if (plStack_170 != (longlong *)0x0) {
    LOCK();
    plVar4 = plStack_170 + 1;
    lVar7 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_170 + 8))(plStack_170);
      LOCK();
      piVar1 = (int *)((longlong)plVar10 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_170 + 0x10))();
      }
    }
  }
  plVar10 = plStack_160;
  if (plStack_160 != (longlong *)0x0) {
    LOCK();
    plVar4 = plStack_160 + 1;
    lVar7 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_160 + 8))(plStack_160);
      LOCK();
      piVar1 = (int *)((longlong)plVar10 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_160 + 0x10))();
      }
    }
  }
  if (local_148 == (undefined1 *)0x0) {
    return;
  }
  _Memory = local_148;
  if ((0xfff < (ulonglong)(local_138 - (longlong)local_148)) &&
     (_Memory = *(undefined1 **)(local_148 + -8),
     (undefined1 *)0x1f < local_148 + (-8 - (longlong)_Memory))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180a1af00 size=1804 ############

void FUN_180a1af00(longlong *param_1,undefined4 param_2,int param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong *plVar12;
  longlong *plVar13;
  longlong *local_res8;
  undefined4 local_res10;
  undefined4 local_res18 [2];
  longlong *local_res20;
  longlong *local_158;
  longlong *plStack_150;
  longlong *local_148;
  longlong *plStack_140;
  longlong *local_138;
  longlong *local_128;
  char *local_118;
  char *local_110;
  char *local_108;
  longlong *local_100;
  longlong *plStack_f8;
  longlong *local_f0;
  longlong *plStack_e8;
  longlong *local_d8;
  longlong *plStack_d0;
  longlong *local_c8 [2];
  longlong *local_b8;
  longlong *plStack_b0;
  longlong *local_a8;
  longlong *plStack_a0;
  undefined8 local_98;
  undefined1 local_90 [8];
  longlong *local_88;
  undefined1 local_80 [8];
  longlong *local_78;
  longlong *local_68;
  longlong *plStack_60;
  
  local_98 = 0xfffffffffffffffe;
  local_100 = (longlong *)0x0;
  plStack_f8 = (longlong *)0x0;
  local_f0 = (longlong *)0x0;
  plStack_e8 = (longlong *)0x0;
  local_68 = (longlong *)0x0;
  plStack_60 = (longlong *)0x0;
  local_148 = (longlong *)0x0;
  plStack_140 = (longlong *)0x0;
  plVar9 = (longlong *)0x0;
  local_res10 = param_2;
  if (param_3 != 0) {
    local_res8 = (longlong *)FUN_1811316e0(0x18);
    if (local_res8 != (longlong *)0x0) {
      FUN_1805a48c0(local_res8,"Only ECC is supported for signature algorithms");
    }
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    local_res8 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      FUN_1805a48c0(plVar4,"|__FILE__|%s|__LINE__|%d");
      *plVar4 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar9 = plVar4;
    }
    local_res18[0] = 0x7ad;
    local_118 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar5 = FUN_1805a21d0(plVar9[1],&local_118);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_res18);
  }
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_90,&DAT_181c09e38);
  local_138 = (longlong *)*puVar6;
  plVar4 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  local_100 = local_138;
  plStack_f8 = plVar4;
  if (local_88 != (longlong *)0x0) {
    LOCK();
    plVar3 = local_88 + 1;
    lVar7 = *plVar3;
    *(int *)plVar3 = (int)*plVar3 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*local_88 + 8))(local_88);
      LOCK();
      piVar1 = (int *)((longlong)local_88 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_88 + 0x10))(local_88);
      }
    }
  }
  plVar11 = local_138;
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_80,&DAT_181c09ea4);
  local_128 = (longlong *)*puVar6;
  plVar3 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  local_f0 = local_128;
  plStack_e8 = plVar3;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar11 = local_78 + 1;
    lVar7 = *plVar11;
    *(int *)plVar11 = (int)*plVar11 + -1;
    UNLOCK();
    plVar11 = local_138;
    if ((int)lVar7 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      plVar11 = local_138;
      if (iVar2 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
        plVar11 = local_138;
      }
    }
  }
  plVar12 = local_128;
  if (plVar11 == (longlong *)0x0) {
    local_res8 = (longlong *)FUN_1811316e0(0x18);
    if (local_res8 != (longlong *)0x0) {
      FUN_1805a48c0(local_res8,"signedSignatureAlgorithm is missing");
    }
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    local_res8 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      FUN_1805a48c0(plVar4,"|__FILE__|%s|__LINE__|%d");
      *plVar4 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar9 = plVar4;
    }
    local_res8 = (longlong *)CONCAT44(local_res8._4_4_,0x7b4);
    local_110 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar5 = FUN_1805a21d0(plVar9[1],&local_110);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res8);
  }
  if (local_128 == (longlong *)0x0) {
    local_res20 = (longlong *)FUN_1811316e0(0x18);
    if (local_res20 != (longlong *)0x0) {
      FUN_1805a48c0(local_res20,"unsignedSignatureAlgorithm is missing");
    }
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    local_res20 = plVar4;
    if (plVar4 != (longlong *)0x0) {
      FUN_1805a48c0(plVar4,"|__FILE__|%s|__LINE__|%d");
      *plVar4 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar9 = plVar4;
    }
    local_res20 = (longlong *)CONCAT44(local_res20._4_4_,0x7b5);
    local_108 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar5 = FUN_1805a21d0(plVar9[1],&local_108);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res20);
  }
  (**(code **)(*plVar11 + 0x18))(plVar11);
  (**(code **)(*plVar12 + 0x18))(plVar12);
  lVar7 = FUN_1811316e0(0x38);
  plVar8 = plVar9;
  if (lVar7 != 0) {
    plVar8 = (longlong *)FUN_180b24b00(lVar7);
  }
  local_158 = plVar8;
  FUN_180a0c310(&plStack_150,plVar8);
  FUN_1805ae620(&local_158,plVar8,plVar8,param_4,lVar7);
  plVar13 = plStack_150;
  plVar8 = local_158;
  local_68 = local_158;
  plStack_60 = plStack_150;
  *(undefined1 *)(local_158 + 1) = 6;
  switch(local_res10) {
  case 0:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a2d,DAT_181c09a2c);
    lVar7 = FUN_1811316e0(0x38);
    if (lVar7 != 0) {
      plVar9 = (longlong *)FUN_180b24b00(lVar7);
    }
    goto LAB_180a1b43a;
  case 1:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a51,DAT_181c09a50);
    break;
  case 2:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a69,DAT_181c09a68);
    break;
  case 3:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a45,DAT_181c09a44);
    lVar7 = FUN_1811316e0(0x38);
    if (lVar7 != 0) {
      plVar9 = (longlong *)FUN_180b24b00(lVar7);
    }
    goto LAB_180a1b43a;
  case 4:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a71,DAT_181c09a70);
    break;
  case 5:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a81,DAT_181c09a80);
    break;
  case 6:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a99,DAT_181c09a98);
    break;
  case 7:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09ab1,DAT_181c09ab0);
    break;
  case 8:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09ac1,DAT_181c09ac0);
    lVar7 = FUN_1811316e0(0x38);
    if (lVar7 != 0) {
      plVar9 = (longlong *)FUN_180b24b00(lVar7);
    }
    goto LAB_180a1b43a;
  case 9:
    (**(code **)(*local_158 + 0x40))(local_158,&DAT_181c09a5d,DAT_181c09a5c);
    lVar7 = FUN_1811316e0(0x38);
    if (lVar7 != 0) {
      plVar9 = (longlong *)FUN_180b24b00(lVar7);
    }
LAB_180a1b43a:
    FUN_180a0c420(&local_148,plVar9);
  }
  local_d8 = plVar8;
  plStack_d0 = plVar13;
  if (plVar13 != (longlong *)0x0) {
    LOCK();
    *(int *)(plVar13 + 1) = (int)plVar13[1] + 1;
    UNLOCK();
    plVar11 = local_138;
    plVar12 = local_128;
    plVar8 = local_158;
    plVar13 = plStack_150;
  }
  (**(code **)(*plVar11 + 8))(plVar11,&local_d8);
  plVar9 = (longlong *)0x0;
  if (plVar13 != (longlong *)0x0) {
    LOCK();
    *(int *)(plVar13 + 1) = (int)plVar13[1] + 1;
    UNLOCK();
    plVar9 = plStack_150;
    plVar11 = local_138;
    plVar12 = local_128;
  }
  local_c8[0] = plVar8;
  (**(code **)(*plVar12 + 8))(plVar12,local_c8);
  plVar10 = plStack_140;
  plVar13 = local_148;
  plVar8 = plStack_140;
  if (local_148 != (longlong *)0x0) {
    *(undefined1 *)(local_148 + 1) = 6;
    (**(code **)(*local_148 + 0x40))(local_148,&DAT_181c09ad1,DAT_181c09ad0);
    local_b8 = plVar13;
    plStack_b0 = plVar10;
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar10 + 1) = (int)plVar10[1] + 1;
      UNLOCK();
      plVar9 = plStack_150;
      plVar10 = plStack_140;
      plVar11 = local_138;
      plVar12 = local_128;
    }
    (**(code **)(*plVar11 + 8))(plVar11,&local_b8);
    local_a8 = local_148;
    plStack_a0 = plStack_140;
    plVar8 = (longlong *)0x0;
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar10 + 1) = (int)plVar10[1] + 1;
      UNLOCK();
      plVar9 = plStack_150;
      plVar8 = plStack_140;
      plVar12 = local_128;
    }
    (**(code **)(*plVar12 + 8))(plVar12,&local_a8);
  }
  plVar11 = plStack_140;
  if (plVar8 != (longlong *)0x0) {
    LOCK();
    plVar8 = plVar8 + 1;
    lVar7 = *plVar8;
    *(int *)plVar8 = (int)*plVar8 + -1;
    UNLOCK();
    plVar9 = plStack_150;
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_140 + 8))(plStack_140);
      LOCK();
      piVar1 = (int *)((longlong)plVar11 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      plVar9 = plStack_150;
      if (iVar2 == 1) {
        (**(code **)(*plStack_140 + 0x10))();
        plVar9 = plStack_150;
      }
    }
  }
  plVar11 = plStack_150;
  if (plVar9 != (longlong *)0x0) {
    LOCK();
    plVar9 = plVar9 + 1;
    lVar7 = *plVar9;
    *(int *)plVar9 = (int)*plVar9 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plStack_150 + 8))(plStack_150);
      LOCK();
      piVar1 = (int *)((longlong)plVar11 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plStack_150 + 0x10))();
      }
    }
  }
  if (plVar3 != (longlong *)0x0) {
    LOCK();
    plVar9 = plVar3 + 1;
    lVar7 = *plVar9;
    *(int *)plVar9 = (int)*plVar9 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plVar3 + 8))(plVar3);
      LOCK();
      piVar1 = (int *)((longlong)plVar3 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plVar3 + 0x10))(plVar3);
      }
    }
  }
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar9 = plVar4 + 1;
    lVar7 = *plVar9;
    *(int *)plVar9 = (int)*plVar9 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  return;
}



############ FUN_ 180a1b670 size=847 ############

void FUN_180a1b670(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  char cVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  longlong *plVar11;
  undefined8 *puVar12;
  int iVar13;
  undefined8 *local_res8;
  longlong *local_res10;
  undefined8 *local_res18;
  char *local_res20;
  char *local_d8;
  longlong local_d0;
  longlong *plStack_c8;
  longlong *local_c0;
  longlong local_b0;
  longlong *local_a8;
  longlong *local_a0;
  longlong *plStack_98;
  undefined8 local_90;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  longlong local_60;
  
  local_90 = 0xfffffffffffffffe;
  local_d0 = 0;
  plStack_c8 = (longlong *)0x0;
  local_a0 = (longlong *)0x0;
  plStack_98 = (longlong *)0x0;
  puVar12 = (undefined8 *)0x0;
  local_res10 = param_2;
  if (((longlong *)*param_2 == (longlong *)0x0) ||
     (cVar8 = (**(code **)(*(longlong *)*param_2 + 0x10))(), cVar8 == '\0')) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,"Subject not provided by caller");
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar9;
    if (puVar9 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
      puVar12 = puVar9;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0x830);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar10 = FUN_1805a21d0(puVar12[1],&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,&local_res8);
  }
  puVar9 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_80,&DAT_181c09e84);
  local_c0 = (longlong *)*puVar9;
  plVar5 = (longlong *)puVar9[1];
  puVar9[1] = 0;
  *puVar9 = 0;
  local_a0 = local_c0;
  plStack_98 = plVar5;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar6 = local_78 + 1;
    lVar7 = *plVar6;
    *(int *)plVar6 = (int)*plVar6 + -1;
    UNLOCK();
    if ((int)lVar7 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar13 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar13 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (local_c0 != (longlong *)0x0) {
    (**(code **)(*local_c0 + 0x18))();
    iVar13 = 1;
    while( true ) {
      plVar11 = (longlong *)
                (**(code **)(*(longlong *)*param_2 + 0x38))((longlong *)*param_2,local_70,iVar13,0);
      plVar3 = plStack_c8;
      local_d0 = *plVar11;
      plVar6 = (longlong *)plVar11[1];
      plVar11[1] = 0;
      *plVar11 = 0;
      plVar11 = plVar6;
      local_60 = local_d0;
      if (plStack_c8 != (longlong *)0x0) {
        LOCK();
        plVar2 = plStack_c8 + 1;
        lVar7 = *plVar2;
        *(int *)plVar2 = (int)*plVar2 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          lVar7 = *plStack_c8;
          plStack_c8 = plVar6;
          (**(code **)(lVar7 + 8))(plVar3);
          LOCK();
          piVar1 = (int *)((longlong)plVar3 + 0xc);
          iVar4 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          plVar11 = plStack_c8;
          if (iVar4 == 1) {
            (**(code **)(*plVar3 + 0x10))(plVar3);
            plVar11 = plStack_c8;
          }
        }
      }
      plStack_c8 = plVar11;
      plVar3 = local_68;
      iVar13 = iVar13 + 1;
      if (local_68 != (longlong *)0x0) {
        LOCK();
        plVar11 = local_68 + 1;
        lVar7 = *plVar11;
        *(int *)plVar11 = (int)*plVar11 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          (**(code **)(*local_68 + 8))(local_68);
          LOCK();
          piVar1 = (int *)((longlong)plVar3 + 0xc);
          iVar4 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar4 == 1) {
            (**(code **)(*plVar3 + 0x10))(plVar3);
          }
        }
      }
      if (local_60 == 0) break;
      local_b0 = local_60;
      if (plVar6 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar6 + 1) = (int)plVar6[1] + 1;
        UNLOCK();
      }
      local_a8 = plVar6;
      (**(code **)(*local_c0 + 8))(local_c0,&local_b0);
    }
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar5 + 1;
      lVar7 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar13 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (plVar6 != (longlong *)0x0) {
      LOCK();
      plVar5 = plVar6 + 1;
      lVar7 = *plVar5;
      *(int *)plVar5 = (int)*plVar5 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar6 + 8))(plVar6);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar13 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar6 + 0x10))(plVar6);
        }
      }
    }
    plVar5 = (longlong *)param_2[1];
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar6 = plVar5 + 1;
      lVar7 = *plVar6;
      *(int *)plVar6 = (int)*plVar6 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar13 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar13 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    return;
  }
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"Subject is missing");
  }
  puVar9 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar9;
  if (puVar9 != (undefined8 *)0x0) {
    FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
    *puVar9 = pace::PaceLocationInfoFormatter::vftable;
    puVar12 = puVar9;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x836);
  local_d8 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar10 = FUN_1805a21d0(puVar12[1],&local_d8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar10,&local_res18);
}



############ FUN_ 180a1b9e0 size=794 ############

void FUN_180a1b9e0(longlong *param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  void *_Memory;
  undefined1 local_res8 [8];
  undefined8 *local_res10;
  undefined8 *local_res18;
  char *local_res20;
  void *local_c8;
  undefined8 uStack_c0;
  longlong local_b8;
  longlong *local_b0;
  longlong *plStack_a8;
  longlong *local_a0;
  char *local_90;
  longlong *local_88;
  undefined8 local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  
  local_78 = 0xfffffffffffffffe;
  local_c8 = (void *)0x0;
  uStack_c0 = 0;
  local_b8 = 0;
  local_b0 = (longlong *)0x0;
  plStack_a8 = (longlong *)0x0;
  puVar7 = (undefined8 *)(**(code **)(*param_1 + 0x18))(0,local_70,&DAT_181c09e68);
  local_b0 = (longlong *)*puVar7;
  plVar4 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_a8 = plVar4;
  local_88 = local_b0;
  if (local_68 != (longlong *)0x0) {
    LOCK();
    plVar5 = local_68 + 1;
    lVar6 = *plVar5;
    *(int *)plVar5 = (int)*plVar5 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_68 + 8))(local_68);
      LOCK();
      piVar1 = (int *)((longlong)local_68 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_68 + 0x10))(local_68);
      }
    }
  }
  plVar5 = local_88;
  if (local_88 == (longlong *)0x0) {
    local_res10 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res10 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res10,"NotValidBefore is missing");
    }
    puVar7 = (undefined8 *)FUN_1811316e0(0x18);
    local_res10 = puVar7;
    if (puVar7 == (undefined8 *)0x0) {
      puVar7 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
      *puVar7 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x882);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(puVar7[1],&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,&local_res10);
  }
  FUN_180a0d5f0(param_2,&local_c8,local_res8);
  *(undefined1 *)(plVar5 + 1) = local_res8[0];
  (**(code **)(*plVar5 + 0x50))(plVar5,&local_c8);
  puVar7 = (undefined8 *)(**(code **)(*param_1 + 0x18))(param_1,local_60,&DAT_181c09e78);
  local_b0 = (longlong *)*puVar7;
  plVar5 = (longlong *)puVar7[1];
  puVar7[1] = 0;
  *puVar7 = 0;
  plStack_a8 = plVar5;
  local_a0 = local_b0;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar2 = plVar4 + 1;
    lVar6 = *plVar2;
    *(int *)plVar2 = (int)*plVar2 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (local_58 != (longlong *)0x0) {
    LOCK();
    plVar4 = local_58 + 1;
    lVar6 = *plVar4;
    *(int *)plVar4 = (int)*plVar4 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*local_58 + 8))(local_58);
      LOCK();
      piVar1 = (int *)((longlong)local_58 + 0xc);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*local_58 + 0x10))(local_58);
      }
    }
  }
  plVar4 = local_a0;
  if (local_a0 != (longlong *)0x0) {
    FUN_180a0d5f0(param_2 + 8,&local_c8,local_res8);
    *(undefined1 *)(plVar4 + 1) = local_res8[0];
    (**(code **)(*plVar4 + 0x50))(plVar4,&local_c8);
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar4 = plVar5 + 1;
      lVar6 = *plVar4;
      *(int *)plVar4 = (int)*plVar4 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    if (local_c8 == (void *)0x0) {
      return;
    }
    _Memory = local_c8;
    if ((0xfff < (ulonglong)(local_b8 - (longlong)local_c8)) &&
       (_Memory = *(void **)((longlong)local_c8 + -8),
       0x1f < (ulonglong)((longlong)local_c8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"NotValidAfter is missing");
  }
  puVar7 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar7;
  if (puVar7 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar7,"|__FILE__|%s|__LINE__|%d");
    *puVar7 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x896);
  local_90 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(puVar7[1],&local_90);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res18);
}



############ FUN_ 180a1bd20 size=1232 ############

void FUN_180a1bd20(longlong *param_1,byte param_2,undefined8 param_3,undefined1 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  byte bVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  undefined8 uVar8;
  longlong lVar9;
  longlong *plVar10;
  char *_Memory;
  longlong *plVar11;
  longlong *local_res8;
  byte local_res10;
  longlong *local_res18;
  longlong *local_res20;
  longlong *plVar12;
  longlong *local_110;
  longlong *local_108;
  char *local_100;
  undefined8 uStack_f8;
  longlong local_f0;
  longlong *local_e8;
  longlong *plStack_e0;
  char *local_d8;
  char *local_d0;
  longlong *local_c8;
  longlong *local_b8 [2];
  longlong *local_a8;
  longlong *local_98;
  undefined8 local_88;
  undefined1 local_80 [8];
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  
  local_88 = 0xfffffffffffffffe;
  local_100 = (char *)0x0;
  uStack_f8 = 0;
  plVar10 = (longlong *)0x0;
  local_f0 = 0;
  local_e8 = (longlong *)0x0;
  plStack_e0 = (longlong *)0x0;
  local_res10 = param_2;
  puVar6 = (undefined8 *)(**(code **)(*param_1 + 0x30))(0,local_80,&DAT_181c099ec,param_4,0,0);
  local_e8 = (longlong *)*puVar6;
  plVar7 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  plStack_e0 = plVar7;
  local_a8 = local_e8;
  if (local_78 != (longlong *)0x0) {
    LOCK();
    plVar3 = local_78 + 1;
    lVar9 = *plVar3;
    *(int *)plVar3 = (int)*plVar3 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*local_78 + 8))(local_78);
      LOCK();
      piVar1 = (int *)((longlong)local_78 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_78 + 0x10))(local_78);
      }
    }
  }
  if (local_a8 == (longlong *)0x0) {
    local_res8 = (longlong *)FUN_1811316e0(0x18);
    if (local_res8 != (longlong *)0x0) {
      FUN_1805a48c0(local_res8,"BasicConstraints extension is missing");
    }
    plVar7 = (longlong *)FUN_1811316e0(0x18);
    local_res8 = plVar7;
    if (plVar7 != (longlong *)0x0) {
      FUN_1805a48c0(plVar7,"|__FILE__|%s|__LINE__|%d");
      *plVar7 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar10 = plVar7;
    }
    local_res8 = (longlong *)CONCAT44(local_res8._4_4_,0xcbf);
    local_d8 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
    uVar8 = FUN_1805a21d0(plVar10[1],&local_d8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar8,&local_res8);
  }
  puVar6 = (undefined8 *)(**(code **)(*local_a8 + 0x38))(local_a8,local_70,1,0x30);
  local_e8 = (longlong *)*puVar6;
  plVar3 = (longlong *)puVar6[1];
  puVar6[1] = 0;
  *puVar6 = 0;
  plStack_e0 = plVar3;
  local_c8 = local_e8;
  if (plVar7 != (longlong *)0x0) {
    LOCK();
    plVar11 = plVar7 + 1;
    lVar9 = *plVar11;
    *(int *)plVar11 = (int)*plVar11 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*plVar7 + 8))(plVar7);
      LOCK();
      piVar1 = (int *)((longlong)plVar7 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*plVar7 + 0x10))(plVar7);
      }
    }
  }
  if (local_68 != (longlong *)0x0) {
    LOCK();
    plVar7 = local_68 + 1;
    lVar9 = *plVar7;
    *(int *)plVar7 = (int)*plVar7 + -1;
    UNLOCK();
    if ((int)lVar9 == 1) {
      (**(code **)(*local_68 + 8))(local_68);
      LOCK();
      piVar1 = (int *)((longlong)local_68 + 0xc);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)(*local_68 + 0x10))(local_68);
      }
    }
  }
  if (local_c8 != (longlong *)0x0) {
    puVar6 = (undefined8 *)(**(code **)(*local_c8 + 0x38))(local_c8,local_60,1,1);
    plVar11 = (longlong *)*puVar6;
    plVar4 = (longlong *)puVar6[1];
    puVar6[1] = 0;
    *puVar6 = 0;
    plVar7 = plVar4;
    local_98 = plVar11;
    if (local_58 != (longlong *)0x0) {
      LOCK();
      plVar12 = local_58 + 1;
      lVar9 = *plVar12;
      *(int *)plVar12 = (int)*plVar12 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        local_res20 = plVar11;
        (**(code **)(*local_58 + 8))(local_58);
        LOCK();
        piVar1 = (int *)((longlong)local_58 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_58 + 0x10))(local_58);
        }
      }
    }
    bVar5 = local_res10;
    local_res20 = local_98;
    plVar12 = plVar7;
    if ((local_res10 & local_98 == (longlong *)0x0) != 0) {
      lVar9 = FUN_1811316e0(0x38);
      if (lVar9 != 0) {
        plVar10 = (longlong *)FUN_180b24b00(lVar9);
      }
      local_110 = plVar10;
      FUN_180a0c310(&local_108,plVar10);
      FUN_1805ae620(&local_110,plVar10,plVar10);
      plVar10 = local_110;
      local_110 = local_res20;
      plVar11 = plVar10;
      plVar7 = local_108;
      local_108 = plVar4;
      if (plVar4 != (longlong *)0x0) {
        LOCK();
        plVar12 = plVar4 + 1;
        lVar9 = *plVar12;
        *(int *)plVar12 = (int)*plVar12 + -1;
        UNLOCK();
        if ((int)lVar9 == 1) {
          (**(code **)(*plVar4 + 8))(plVar4);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)(*plVar4 + 0x10))(plVar4);
          }
        }
      }
      *(undefined1 *)(plVar10 + 1) = 1;
      if (plVar7 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar7 + 1) = (int)plVar7[1] + 1;
        UNLOCK();
      }
      plVar12 = plVar7;
      local_b8[0] = plVar10;
      (**(code **)(*local_c8 + 8))(local_c8,local_b8);
    }
    if (plVar11 != (longlong *)0x0) {
      (**(code **)(*plVar11 + 0x30))(plVar11,&local_100);
      FUN_1805b0f50(&local_100,1,&local_100);
      *local_100 = -(bVar5 != 0);
      (**(code **)(*plVar11 + 0x50))(plVar11,&local_100);
    }
    if (plVar7 != (longlong *)0x0) {
      LOCK();
      plVar7 = plVar7 + 1;
      lVar9 = *plVar7;
      *(int *)plVar7 = (int)*plVar7 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        plVar7 = plVar12;
        (**(code **)(*plVar12 + 8))(plVar12);
        LOCK();
        piVar1 = (int *)((longlong)plVar12 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar7 + 0x10))();
        }
      }
    }
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar7 = plVar3 + 1;
      lVar9 = *plVar7;
      *(int *)plVar7 = (int)*plVar7 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        (**(code **)(*plVar3 + 8))(plVar3);
        LOCK();
        piVar1 = (int *)((longlong)plVar3 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*plVar3 + 0x10))(plVar3);
        }
      }
    }
    if (local_100 == (char *)0x0) {
      return;
    }
    _Memory = local_100;
    if ((0xfff < (ulonglong)(local_f0 - (longlong)local_100)) &&
       (_Memory = *(char **)(local_100 + -8), (char *)0x1f < local_100 + (-8 - (longlong)_Memory)))
    {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_res18 = (longlong *)FUN_1811316e0(0x18);
  if (local_res18 != (longlong *)0x0) {
    FUN_1805a48c0(local_res18,"BasicConstraints extension bit string is missing");
  }
  plVar7 = (longlong *)FUN_1811316e0(0x18);
  local_res18 = plVar7;
  if (plVar7 != (longlong *)0x0) {
    FUN_1805a48c0(plVar7,"|__FILE__|%s|__LINE__|%d");
    *plVar7 = (longlong)pace::PaceLocationInfoFormatter::vftable;
    plVar10 = plVar7;
  }
  local_res18 = (longlong *)CONCAT44(local_res18._4_4_,0xcc3);
  local_d0 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parsercert.cpp";
  uVar8 = FUN_1805a21d0(plVar10[1],&local_d0);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar8,&local_res18);
}



############ FUN_ 180a2dff0 size=679 ############

longlong FUN_180a2dff0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x178;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x178;
  if (lVar13 == 0xae4c415c9882b9) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x178;
  uVar11 = uVar12;
  if ((uVar4 <= 0xae4c415c9882b9 - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x178;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0xae4c415c9882ba) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180a2e12b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180a2e12b:
  lVar7 = lVar1 * 0x178 + uVar4;
  lVar1 = lVar7 + 0x178;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180a2f530(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x178) {
      FUN_180a2f530(uVar8);
      uVar8 = uVar8 + 0x178;
    }
  }
  else {
    FUN_180a303f0(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180a303f0(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x2f) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x178) * 0x178)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x178 + uVar4;
  param_1[2] = uVar11 * 0x178 + uVar4;
  return lVar13 * 0x178 + *param_1;
}



############ FUN_ 180a2e620 size=1883 ############

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

void FUN_180a2e620(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint uVar5;
  int iVar6;
  undefined8 uVar7;
  longlong lVar8;
  code *UNRECOVERED_JUMPTABLE;
  int unaff_retaddr;
  longlong local_f8;
  longlong lStack_f0;
  longlong local_e8;
  undefined4 local_d8;
  undefined8 *local_d0;
  undefined *local_c8;
  undefined8 local_b8;
  undefined4 local_b0;
  uint local_ac;
  undefined8 *local_a8;
  undefined8 *local_a0;
  undefined8 local_98;
  longlong local_90;
  undefined8 *local_88;
  undefined8 *local_80;
  longlong local_78;
  undefined8 local_70;
  undefined8 *local_68;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)&local_f8;
  local_a0 = param_1;
  local_98 = param_3;
  local_90 = param_2;
  local_68 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorCertificateChain::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180b68ee0(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  local_b0 = 0xf50;
  uVar5 = (uint)&stack0x00000000 & 0x42ff;
  iVar6 = uVar5 * uVar5 + 1;
  uVar5 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_ac = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x5fc6 ^ 0x5b16;
  local_d8 = 0xbf;
  do {
    func_0x000180a3057b(0xd704);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_b8 = 0x180000000;
  uVar7 = 0x27f0;
  local_d0 = (undefined8 *)0x18086b608;
  local_c8 = &DAT_18086ddf8;
  local_a8 = local_d0;
  do {
    FUN_180a2d49c(0xd704,uVar7);
    lVar2 = local_90;
    puVar1 = local_a0;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  lVar8 = *(longlong *)(param_2 + 0x40);
  local_78 = *(longlong *)(param_2 + 0x48);
  if (lVar8 != local_78) {
    do {
      local_90 = FUN_1811316e0(0x48);
      puVar3 = (undefined8 *)0x0;
      if (local_90 != 0) {
        puVar3 = (undefined8 *)FUN_180a36db0(local_90,lVar8,puVar1);
      }
      puVar4 = (undefined8 *)param_1[5];
      local_88 = puVar3;
      if ((undefined8 *)param_1[6] == puVar4) {
        FUN_18080f490(param_1 + 4,puVar4,&local_88);
      }
      else {
        *puVar4 = puVar3;
        param_1[5] = param_1[5] + 8;
      }
      puVar4 = (undefined8 *)FUN_1811316e0(0x178);
      puVar3 = (undefined8 *)0x0;
      local_d0 = puVar4;
      if (puVar4 != (undefined8 *)0x0) {
        *puVar4 = license_services::LsCertificateChainWire::vftable;
        puVar4[1] = license_services::LsRelation::vftable;
        *(undefined4 *)(puVar4 + 2) = 0xffffffff;
        puVar4[3] = 0xffffffffffffffff;
        *(undefined2 *)(puVar4 + 4) = 0;
        *(undefined1 *)(puVar4 + 5) = 0;
        puVar4[8] = 0;
        puVar4[9] = 0xf;
        *(undefined1 *)(puVar4 + 6) = 0;
        FUN_1805a6cb0(puVar4 + 6,"pace-ccjf1",10);
        puVar4[10] = 0;
        puVar4[0xb] = 0;
        puVar4[0xc] = 0;
        puVar4[0xf] = 0;
        puVar4[0x10] = 0xf;
        *(undefined1 *)(puVar4 + 0xd) = 0;
        FUN_1805a6cb0(puVar4 + 0xd,&DAT_181bb1d4c,3);
        puVar4[0x13] = 0;
        puVar4[0x14] = 0xf;
        *(undefined1 *)(puVar4 + 0x11) = 0;
        FUN_1805a6cb0(puVar4 + 0x11,&DAT_181baf991,0);
        puVar4[0x17] = 0;
        puVar4[0x18] = 0xf;
        *(undefined1 *)(puVar4 + 0x15) = 0;
        FUN_1805a6cb0(puVar4 + 0x15,&DAT_181baf991,0);
        puVar4[0x1b] = 0;
        puVar4[0x1c] = 0xf;
        *(undefined1 *)(puVar4 + 0x19) = 0;
        FUN_1805a6cb0(puVar4 + 0x19,&DAT_181baf991,0);
        puVar4[0x1f] = 0;
        puVar4[0x20] = 0xf;
        *(undefined1 *)(puVar4 + 0x1d) = 0;
        FUN_1805a6cb0(puVar4 + 0x1d,&DAT_181baf991,0);
        puVar4[0x23] = 0;
        puVar4[0x24] = 0xf;
        *(undefined1 *)(puVar4 + 0x21) = 0;
        FUN_1805a6cb0(puVar4 + 0x21,&DAT_181baf991,0);
        puVar4[0x27] = 0;
        puVar4[0x28] = 0xf;
        *(undefined1 *)(puVar4 + 0x25) = 0;
        FUN_1805a6cb0(puVar4 + 0x25,&DAT_181baf991,0);
        puVar4[0x2b] = 0;
        puVar4[0x2c] = 0xf;
        *(undefined1 *)(puVar4 + 0x29) = 0;
        FUN_1805a6cb0(puVar4 + 0x29,&DAT_181baf991,0);
        puVar4[0x2d] = 0;
        *(undefined4 *)(puVar4 + 0x2e) = 0;
        puVar3 = puVar4;
      }
      local_80 = puVar3;
      FUN_180a300c0(puVar3,lVar8);
      puVar4 = (undefined8 *)param_1[8];
      if ((undefined8 *)param_1[9] == puVar4) {
        FUN_18080f490(param_1 + 7,puVar4,&local_80);
      }
      else {
        *puVar4 = puVar3;
        param_1[8] = param_1[8] + 8;
      }
      lVar8 = lVar8 + 0x178;
      local_78 = *(longlong *)(lVar2 + 0x48);
    } while (lVar8 != local_78);
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x000180a2e911();
                    /* WARNING: Call to offcut address within same function */
  func_0x000180a2ec06();
  lStack_f0 = local_e8 + -0x55373;
  local_f8 = local_e8 + 0x4dd01;
  UNRECOVERED_JUMPTABLE = (code *)(local_e8 + -0x3c8fd);
  local_e8 = local_e8 + 0x1c6;
                    /* WARNING: Could not recover jumptable at 0x000180a2edb1. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



############ FUN_ 180b68ee0 size=986 ############

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

void FUN_180b68ee0(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined *puVar3;
  ulonglong uVar4;
  undefined1 auStack_a8 [40];
  undefined *local_80;
  undefined **local_78;
  undefined8 *local_70;
  undefined4 local_68;
  uint local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_70 = param_1;
  local_58 = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x60);
  local_70 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    *puVar2 = license_services::LsEntityCertificateChain::vftable;
    FUN_180677c10(puVar2 + 1);
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    *(undefined2 *)(puVar2 + 0xb) = 0;
  }
  *param_1 = puVar2;
  FUN_180b68e70(param_1 + 1,puVar2);
  FUN_1805ae620(param_1,puVar2,puVar2);
  param_1[2] = *param_1;
  uVar1 = (uint)&stack0x00000000 & 0x1aff;
  uVar1 = (uVar1 + 1) * uVar1 + 0x74cb & 0x80000001;
  local_60 = ((int)(-uVar1 | uVar1) >> 0x1f) * -0x9a38 ^ 0x93e8;
  local_68 = 0xcb0;
  local_70 = (undefined8 *)0x6f01000;
  uVar4 = 0x13da;
  local_78 = &PTR__guard_check_icall_181bab6a8;
  puVar3 = &DAT_181bab6b8;
  local_80 = puVar3;
                    /* WARNING: Call to offcut address within same function */
  func_0x000180b69175(&DAT_181bab6b8,0x1fa793f5);
  (&DAT_186f01004)[(longlong)puVar3 * 4] = (&DAT_186f01004)[(longlong)puVar3 * 4] - (char)puVar3;
                    /* WARNING: Could not recover jumptable at 0x000180b692c3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(~(~uVar4 + 1) + 0x9dac))();
  return;
}



############ FUN_ 180b68e70 size=97 ############

undefined8 * FUN_180b68e70(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityCertificateChain>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b6b000 size=311 ############

void FUN_180b6b000(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b6b190(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180a2dff0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180a2f530(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x178;
  return;
}



############ FUN_ 180b6b190 size=316 ############

longlong FUN_180b6b190(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180a39c70 size=214 ############

void FUN_180a39c70(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsCertificateChain::targetSlowPath: The LsCertificateChainWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lscertificatechain.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180a40e40 size=454 ############

void FUN_180a40e40(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180a40130();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x230 + *(longlong *)(lVar2 + 0x40);
    FUN_18080fac0(lVar3 + 0x230,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x230);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x230;
  }
  return;
}



############ FUN_ 180a422d0 size=97 ############

undefined8 * FUN_180a422d0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<pace::Hasher>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180a47b10 size=55 ############

void FUN_180a47b10(void)

{
  longlong lVar1;
  
  lVar1 = FUN_1811316e0(0x50);
  *(longlong *)lVar1 = lVar1;
  *(longlong *)(lVar1 + 8) = lVar1;
  *(longlong *)(lVar1 + 0x10) = lVar1;
  *(undefined2 *)(lVar1 + 0x18) = 0x101;
  return;
}



############ FUN_ 180a4bff0 size=658 ############

longlong FUN_180a4bff0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x108;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x108;
  if (lVar13 == 0xf83e0f83e0f83e) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x108;
  uVar11 = uVar12;
  if ((uVar4 <= 0xf83e0f83e0f83e - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x108;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0xf83e0f83e0f83f) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180a4c12b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180a4c12b:
  lVar7 = lVar1 * 0x108 + uVar4;
  lVar1 = lVar7 + 0x108;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180a4c470(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x108) {
      FUN_180a4c470(uVar8);
      uVar8 = uVar8 + 0x108;
    }
  }
  else {
    FUN_180a4e840(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180a4e840(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x21) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x108) * 0x108)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x108 + uVar4;
  param_1[2] = uVar11 * 0x108 + uVar4;
  return lVar13 * 0x108 + *param_1;
}



############ FUN_ 180b75e30 size=978 ############

/* WARNING: Removing unreachable block (ram,0x000180b75f3d) */
/* WARNING: Removing unreachable block (ram,0x000180b75f17) */
/* WARNING: Removing unreachable block (ram,0x000180b75f78) */

void FUN_180b75e30(undefined8 *param_1,undefined4 param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint uVar3;
  longlong lVar4;
  undefined1 auStack_b8 [40];
  undefined1 *local_90;
  undefined *local_88;
  undefined8 local_78;
  undefined4 local_70;
  uint local_6c;
  undefined8 *local_68;
  undefined8 *local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_60 = param_1;
  local_58 = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x60);
  local_68 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    *puVar2 = license_services::LsEntityAuthManifestElement::vftable;
    FUN_180677c10(puVar2 + 1);
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    *(undefined2 *)(puVar2 + 0xb) = 0;
  }
  *param_1 = puVar2;
  FUN_180b75dc0(param_1 + 1,puVar2);
  FUN_1805ae620(param_1,puVar2,puVar2);
  param_1[2] = *param_1;
  uVar1 = (uint)&stack0x00000000 & 0xaff;
  uVar3 = (uVar1 + 1) * uVar1 + 0x600b & 0x80000001;
  uVar1 = (uint)&stack0x00000000 & 0xcff;
  uVar1 = (uVar1 + 1) * uVar1 + 0x6b91 & 0x80000001;
  uVar1 = (int)((-uVar1 | uVar1) & (-uVar3 | uVar3)) >> 0x1f;
  local_6c = (int)(-uVar1 | uVar1) >> 0x1f & 0x9afeU ^ 0x975e;
  local_70 = 0xbd0;
  lVar4 = 0x180000000;
  local_78 = 0;
  local_90 = &LAB_180b60cc0;
  local_88 = &DAT_180b63968;
  FUN_180b778f0(param_1[2],param_2);
  FUN_180b75c9e();
                    /* WARNING: Call to offcut address within same function */
  func_0x000180b7613d();
                    /* WARNING: Could not recover jumptable at 0x000180b7620c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(lVar4 + -0x1ebd))();
  return;
}



############ FUN_ 180b75dc0 size=97 ############

undefined8 * FUN_180b75dc0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityAuthManifestElement>::
              vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b775c0 size=311 ############

void FUN_180b775c0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b77750(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180a4bff0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180a4c470(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x108;
  return;
}



############ FUN_ 180b77750 size=316 ############

longlong FUN_180b77750(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180a53c70 size=979 ############

/* WARNING: Instruction at (ram,0x000180a53d61) overlaps instruction at (ram,0x000180a53d5f)
    */
/* WARNING: Removing unreachable block (ram,0x000180a53cf0) */
/* WARNING: Removing unreachable block (ram,0x000180a53d5f) */
/* WARNING: Removing unreachable block (ram,0x000180a53cfc) */

char FUN_180a53c70(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char cVar1;
  undefined8 uVar2;
  uint uVar3;
  int unaff_retaddr;
  undefined1 auStack_128 [48];
  undefined4 local_f8;
  undefined4 local_c0;
  undefined4 local_bc;
  longlong local_b0;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_70;
  ulonglong local_40;
  
  local_70 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_128;
  local_bc = 0x1c0;
  local_c0 = 0x50;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_98 = param_1;
  local_b0 = FUN_1811316e0(0x108,param_2,param_3,param_4);
  uVar2 = 0;
  if (local_b0 != 0) {
    uVar2 = FUN_180a4c570(local_b0);
  }
  local_a0 = uVar2;
  FUN_180a4e6a0(uVar2,param_2);
  local_f8 = 0x811c9e07;
  FUN_18082ac10(uVar2,1);
                    /* WARNING: Call to offcut address within same function */
  cVar1 = func_0x000180a53e3a();
  return cVar1 + -0x73;
}



############ FUN_ 180a54be0 size=570 ############

undefined8 FUN_180a54be0(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectordatabaseinfo.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectordatabaseinfo.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_1808157b0(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180815560(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 180a56810 size=679 ############

longlong FUN_180a56810(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar6 = (longlong)(param_2 - uVar12) / 0x36 + ((longlong)(param_2 - uVar12) >> 0x3f);
  lVar7 = (lVar6 >> 2) - (lVar6 >> 0x3f);
  lVar6 = (longlong)(param_1[1] - uVar12) / 0xd8;
  if (lVar6 == 0x12f684bda12f684) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar6 + 1;
  uVar3 = (longlong)(param_1[2] - uVar12) / 0xd8;
  uVar12 = uVar13;
  if ((uVar3 <= 0x12f684bda12f684 - (uVar3 >> 1)) &&
     (uVar12 = (uVar3 >> 1) + uVar3, uVar12 < uVar13)) {
    uVar12 = uVar13;
  }
  uVar3 = uVar12 * 0xd8;
  lVar6 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0x12f684bda12f685) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_180a5694b;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_180a5694b:
  lVar8 = lVar7 * 0xd8 + uVar3;
  lVar7 = lVar8 + 0xd8;
  lVar4 = lVar7;
  uVar11 = uVar3;
  FUN_180a57c50(lVar8,param_3);
  uVar5 = param_1[1];
  if (param_2 == uVar5) {
    uVar9 = uVar3;
    for (uVar11 = *param_1; uVar11 != uVar5; uVar11 = uVar11 + 0xd8) {
      FUN_180a57c50(uVar9);
      uVar9 = uVar9 + 0xd8;
    }
  }
  else {
    FUN_180a58c30(param_1,*param_1,param_2,uVar3,uVar13,lVar6,lVar4,uVar11,puVar14,uVar15);
    FUN_180a58c30(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x1b) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0xd8) * 0xd8)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar3;
  param_1[1] = uVar13 * 0xd8 + uVar3;
  param_1[2] = uVar12 * 0xd8 + uVar3;
  return lVar6 * 0xd8 + *param_1;
}



############ FUN_ 180b78820 size=853 ############

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

void FUN_180b78820(undefined8 *param_1,undefined4 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong *plVar3;
  uint uVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  code **ppcVar7;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  uint local_98;
  undefined8 *local_88;
  uint local_7c;
  undefined4 local_70;
  undefined4 local_6c;
  code *local_68;
  undefined8 *local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_6c = param_2;
  local_60 = param_1;
  local_58 = param_1;
  puVar5 = (undefined8 *)FUN_1811316e0(0x60);
  local_88 = puVar5;
  if (puVar5 == (undefined8 *)0x0) {
    puVar5 = (undefined8 *)0x0;
  }
  else {
    *puVar5 = license_services::LsEntityMachineBinding::vftable;
    FUN_180677c10(puVar5 + 1);
    puVar5[8] = 0;
    puVar5[9] = 0;
    puVar5[10] = 0;
    *(undefined2 *)(puVar5 + 0xb) = 0;
  }
  *param_1 = puVar5;
  FUN_180b787b0(param_1 + 1,puVar5);
  FUN_1805ae620(param_1,puVar5,puVar5);
  param_1[2] = *param_1;
  uVar4 = (uint)&stack0x00000000 & 0x23ff;
  uVar4 = ((uVar4 + 1) * uVar4 + 7) % 0x51;
  uVar4 = (int)(-uVar4 | uVar4) >> 0x1f;
  local_7c = (int)(-uVar4 | uVar4) >> 0x1f & 0x9c7U ^ 0xb57;
  local_70 = 0xe30;
  local_a8 = 0xb5;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * 0x1a85ae35;
  local_98 = (uVar4 >> 0x18 ^ uVar4) * -0x35945029;
  if (local_98 < 0x3333333f) {
    local_68 = (code *)0x0;
    do {
      ppcVar7 = &local_68;
      FUN_180b7769b(ppcVar7,&local_68);
      *ppcVar7 = FUN_18141db20;
      func_0x000180b76c80();
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar6 = (*local_68)();
    if (1 < uVar6) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar3 = (longlong *)register0x00000020;
      while (lVar1 != -0x3333333333333334) {
        *plVar3 = 0;
        plVar3 = plVar3 + 8;
        lVar1 = *plVar3;
      }
    }
  }
  FUN_180b7704d();
  FUN_180b78b94();
  in(0xd5);
                    /* WARNING: Could not recover jumptable at 0x000180b78c99. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)&stack0x000d148e)();
  return;
}



############ FUN_ 180b787b0 size=97 ############

undefined8 * FUN_180b787b0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityMachineBinding>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b7a610 size=311 ############

void FUN_180b7a610(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b7a7a0(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180a56810(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180a57c50(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0xd8;
  return;
}



############ FUN_ 180b7a7a0 size=316 ############

longlong FUN_180b7a7a0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180a5e130 size=645 ############

/* WARNING: Instruction at (ram,0x000180a5e3b0) overlaps instruction at (ram,0x000180a5e3ac)
    */
/* WARNING: Removing unreachable block (ram,0x000180a5e669) */
/* WARNING: Removing unreachable block (ram,0x000180a5e5c2) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_180a5e130(longlong param_1,undefined8 param_2)

{
  undefined1 *puVar1;
  undefined1 uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  longlong *plVar12;
  longlong lVar13;
  int *piVar14;
  uint uVar15;
  undefined8 ****ppppuVar16;
  undefined8 ***pppuVar17;
  int iVar18;
  bool bVar19;
  int unaff_retaddr;
  undefined1 local_res8;
  undefined1 auStack_f8 [8];
  undefined *puStack_f0;
  undefined1 uStack_c8;
  undefined8 ***local_b8;
  undefined8 local_b0;
  longlong local_a8;
  longlong local_a0;
  ulonglong local_98;
  longlong local_90;
  undefined8 **ppuStack_88;
  undefined8 ***local_80 [5];
  undefined8 local_58;
  undefined1 auStack_50 [24];
  
  local_58 = 0xfffffffffffffffe;
  local_a8 = 0x181592710;
  local_b0 = 0x181592810;
  local_b8 = (undefined8 ***)0xe8df9fd7;
  local_98 = 0x100;
  puStack_f0 = (undefined *)0x180a5e27d;
  local_a0 = local_a8;
  local_90 = FUN_1811316e0(0xd8);
  if (local_90 == 0) {
    local_b8 = (undefined8 ****)0x0;
  }
  else {
    puStack_f0 = (undefined *)0x180a5e28e;
    local_b8 = (undefined8 ***)FUN_180a57d30(local_90);
  }
  pppuVar17 = local_b8;
  puStack_f0 = (undefined *)0x180a5e2e5;
  local_80[0] = local_b8;
  FUN_180a589c0(local_b8,param_2);
  iVar18 = -0x19ab949c;
  uVar9 = (iRam0000000181592710 * 0x16a88000 | (uint)(iRam0000000181592710 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ 0xc5adfa65;
  uVar9 = (iRam0000000181592714 * 0x16a88000 | (uint)(iRam0000000181592714 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar15 = (iRam0000000181592718 * 0x16a88000 | (uint)(iRam0000000181592718 * -0x3361d2af) >> 0x11)
           * 0x1b873593 ^ uVar9;
  puStack_f0 = (undefined *)0x180a5e350;
  FUN_180a7cf60(pppuVar17,CONCAT71((uint7)(uint3)(uVar9 >> 8),1));
  uVar9 = (iRam000000018159271c * 0x16a88000 | (uint)(iRam000000018159271c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar15 << 0xd | uVar15 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (iRam0000000181592720 * 0x16a88000 | (uint)(iRam0000000181592720 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar8 = 0;
    puStack_f0 = (undefined *)0x180a5e39a;
    uVar15 = FUN_180a5ddf1();
    lVar5 = local_a0;
    if ((uVar8 & 0xc1) != 0) {
      return (ulonglong)(uVar15 | _DAT_ffffffff9ccff654);
    }
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar9 = (*(int *)(local_a0 + 0x14) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x14) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x18) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x18) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x1c) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x1c) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x20) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x20) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x24) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x24) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x28) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x28) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x2c) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x2c) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x30) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x30) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x34) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x34) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x38) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x38) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x3c) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x3c) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x40) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x40) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x44) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x44) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x48) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x48) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x4c) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x4c) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x50) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x50) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar9 = (*(int *)(local_a0 + 0x54) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x54) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (*(int *)(local_a0 + 0x58) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + 0x58) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  uVar9 = (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  if ((local_98 & 0xb00) == 0) {
    uVar15 = 9;
  }
  else {
    uVar15 = 1;
  }
  uVar10 = uVar9 & 0x13f;
  iVar11 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
  lVar7 = -(longlong)
           (0xe6f9 << ((byte)(((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e) & 0x1f)
           ^ ((int)(-uVar15 | uVar15) >> 0x1f) * -0xe6e1);
  lVar13 = lVar7 + 0x74;
  uVar9 = (*(int *)(local_a0 + lVar13) * 0x16a88000 |
          (uint)(*(int *)(local_a0 + lVar13) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar9;
  ppuStack_88 = local_b8[3];
  lVar3 = *(longlong *)(param_1 + 8);
  puVar4 = *(undefined8 **)(lVar3 + 0x10);
  if (*(undefined8 **)(lVar3 + 0x18) == puVar4) {
    puStack_f0 = &UNK_180a5e751;
    FUN_180703330(lVar3 + 8,puVar4,&ppuStack_88);
  }
  else {
    *puVar4 = ppuStack_88;
    *(longlong *)(lVar3 + 0x10) = *(longlong *)(lVar3 + 0x10) + 8;
  }
  local_res8 = (undefined1)param_1;
  uStack_c8 = local_res8;
  pppuVar17 = &ppuStack_88;
  ppppuVar16 = (undefined8 ****)0x0;
  puStack_f0 = &UNK_180a5e771;
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,auStack_50,0,pppuVar17);
  lVar3 = local_a0;
  iVar11 = *(int *)(lVar5 + 4 + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  iVar11 = *(int *)(lVar5 + 8 + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  iVar11 = *(int *)(lVar5 + 0xc + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  iVar11 = *(int *)(lVar5 + 0x10 + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  do {
    iVar18 = (-iVar18 ^ 0xffffffffU) + 1;
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  iVar11 = *(int *)(local_a0 + 0x14 + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar9 << 0xd | uVar9 >> 0x13) * 5 + 0xe6546b64;
  lVar5 = *(longlong *)(param_1 + 0x18);
  lVar6 = *(longlong *)(lVar5 + 0x48);
  if (*(longlong *)(lVar5 + 0x50) == lVar6) {
    puStack_f0 = &UNK_180a5e8b5;
    ppppuVar16 = (undefined8 ****)local_b8;
    FUN_180a56810(lVar5 + 0x40,lVar6,local_b8);
  }
  else {
    puStack_f0 = &UNK_180a5e89b;
    FUN_180a57c50(lVar6,local_b8);
    *(longlong *)(lVar5 + 0x48) = *(longlong *)(lVar5 + 0x48) + 0xd8;
  }
  iVar11 = *(int *)(lVar3 + 0x18 + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          iVar18 + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
  plVar12 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar12) {
    ppppuVar16 = local_80;
    puStack_f0 = &UNK_180a5e901;
    FUN_18080f490(param_1 + 0x38,plVar12,ppppuVar16);
    local_b8 = local_80[0];
  }
  else {
    *plVar12 = (longlong)local_b8;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  iVar11 = *(int *)(lVar3 + 0x1c + lVar13);
  uVar9 = (iVar11 * 0x16a88000 | (uint)(iVar11 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          iVar18 + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
  uVar8 = (ulonglong)(iVar18 + (uVar9 << 0xd | uVar9 >> 0x13) * 5);
                    /* WARNING: Call to offcut address within same function */
  puStack_f0 = &UNK_180a5e94c;
  func_0x000180a5e61d();
  piVar14 = (int *)auStack_f8;
  bVar19 = false;
  puStack_f0 = (undefined *)0xcc9e2d51;
                    /* WARNING: Call to offcut address within same function */
  uVar9 = func_0x000180a5e95f();
  if (bVar19) {
    piVar14 = (int *)(ulonglong)((uint)auStack_f8 ^ (uint)uVar8);
  }
  LOCK();
  puVar1 = (undefined1 *)(lVar7 + 0xb0 + uVar8 * 4);
  uVar2 = *puVar1;
  *puVar1 = (char)uVar8;
  UNLOCK();
  *piVar14 = *piVar14 + 0x167;
  piVar14[-2] = -0x3359dafb;
  piVar14[-1] = 0;
  piVar14[-4] = -0x33694282;
  piVar14[-3] = 0;
  piVar14[-6] = -0x335d000a;
  piVar14[-5] = 0;
  piVar14[-8] = -0x3366eed0;
  piVar14[-7] = 0;
  piVar14[-10] = -0x33615215;
  piVar14[-9] = 0;
  piVar14[-0xc] = -0x335a8a09;
  piVar14[-0xb] = 0;
  piVar14[-0xe] = -0x3359dafb;
  piVar14[-0xd] = 0;
  uVar8 = (*(code *)0xcc9baba5)
                    (uVar2,~(~(ulonglong)plVar12 + 1) + 1,
                     (longlong)ppppuVar16 - (ulonglong)((uVar9 & 0xffffff4c) * 2),pppuVar17);
  return uVar8;
}



############ FUN_ 180a5f760 size=694 ############

longlong FUN_180a5f760(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  if (lVar5 == 0xa0a0a0a0a0a0a0) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0xa0a0a0a0a0a0a0 - (uVar6 >> 1)) && (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)
     ) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 0x198;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0xa0a0a0a0a0a0a1) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180a5f8a2;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180a5f8a2:
  lVar8 = lVar7 * 0x198 + uVar6;
  lVar7 = lVar8 + 0x198;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180a60830(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 0x198) {
      FUN_180a60830(uVar9);
      uVar9 = uVar9 + 0x198;
    }
  }
  else {
    FUN_180a618d0(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180a618d0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x33) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 8) - (lVar5 >> 0x3f)) * 0x198)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 0x198 + uVar6;
  param_1[2] = uVar12 * 0x198 + uVar6;
  return lVar5 * 0x198 + *param_1;
}



############ FUN_ 180a5fcc0 size=958 ############

/* WARNING: Instruction at (ram,0x000180a60078) overlaps instruction at (ram,0x000180a60075)
    */

uint FUN_180a5fcc0(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  char cVar2;
  undefined8 uVar3;
  uint uVar4;
  int iVar5;
  ulonglong uVar6;
  longlong lVar7;
  uint uVar8;
  uint unaff_retaddr;
  char local_f8 [32];
  longlong local_d8;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  uint local_b0;
  uint local_ac;
  undefined *local_a8;
  undefined8 local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  longlong local_80;
  undefined8 *local_78;
  undefined8 local_70;
  undefined8 *local_68;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)local_f8;
  local_a0 = param_3;
  local_78 = param_1;
  local_68 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorMachineId::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180b7b680(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  uVar8 = (uint)&stack0x00000000;
  uVar4 = uVar8 & 0x17f;
  uVar4 = ((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 ^ 0xee78300;
  local_ac = ((int)(-uVar4 | uVar4) >> 0x1f) * -0x27 ^ 0x1d7;
  iVar5 = (uVar8 & 0x4aff) * (uVar8 & 0x4aff) + 1;
  uVar4 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  local_b0 = 0x283c << ((char)((byte)(-(((uVar8 & 0x3ff) * (uVar8 & 0x3ff) * 0x10 + 4) % 0x13) >>
                                     0x18) ^ ((byte)(-uVar4 >> 0x18) | (byte)(uVar4 >> 0x18))) >> 7
                       & 0x1fU) ^ 0x266c;
  local_c8 = 0x323c;
  local_a8 = &DAT_18070cb10;
  local_b8 = 0x18070fd4c;
  local_d8 = -0x1a6b127a8af44e74;
  local_c0 = 0x750bb18c;
  lVar7 = *(longlong *)(param_2 + 0x40);
  local_80 = *(longlong *)(param_2 + 0x48);
  if (lVar7 != local_80) {
    do {
      local_98 = FUN_1811316e0(0x68);
      uVar3 = 0;
      if (local_98 != 0) {
        uVar3 = FUN_180830250(local_98,lVar7,param_1);
      }
      puVar1 = (undefined8 *)param_1[5];
      local_90 = uVar3;
      if ((undefined8 *)param_1[6] == puVar1) {
        FUN_18080f490(param_1 + 4,puVar1,&local_90);
      }
      else {
        *puVar1 = uVar3;
        param_1[5] = param_1[5] + 8;
      }
      local_d8 = FUN_1811316e0(0x198);
      uVar3 = 0;
      if (local_d8 != 0) {
        uVar3 = FUN_1809d4210(local_d8);
      }
      local_88 = uVar3;
      FUN_180a61660(uVar3,lVar7);
      puVar1 = (undefined8 *)param_1[8];
      if ((undefined8 *)param_1[9] == puVar1) {
        FUN_18080f490(param_1 + 7,puVar1,&local_88);
      }
      else {
        *puVar1 = uVar3;
        param_1[8] = param_1[8] + 8;
      }
      lVar7 = lVar7 + 0x198;
      local_80 = *(longlong *)(param_2 + 0x48);
    } while (lVar7 != local_80);
  }
  do {
    uVar6 = 0xc230;
    FUN_180a5edaa();
    if ((uVar6 & 0xe300) == 0) {
      cVar2 = FUN_18591aa24();
      return (uint)(byte)(cVar2 + local_f8[0]);
    }
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  return unaff_retaddr;
}



############ FUN_ 180b7b680 size=1112 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b7b8c1) */
/* WARNING: Removing unreachable block (ram,0x000180b7b76e) */

void FUN_180b7b680(undefined8 *param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  ulonglong uVar4;
  int iVar5;
  code **ppcVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  uint local_90;
  undefined8 *local_88;
  uint local_7c;
  uint local_78;
  code *local_70;
  undefined8 *local_68;
  undefined8 local_60;
  undefined8 *local_58;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_68 = param_1;
  local_58 = param_1;
  puVar3 = (undefined8 *)FUN_1811316e0(0x60);
  local_88 = puVar3;
  if (puVar3 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)0x0;
  }
  else {
    *puVar3 = license_services::LsEntityMachineId::vftable;
    FUN_180677c10(puVar3 + 1);
    puVar3[8] = 0;
    puVar3[9] = 0;
    puVar3[10] = 0;
    *(undefined2 *)(puVar3 + 0xb) = 0;
  }
  *param_1 = puVar3;
  FUN_180b7b610(param_1 + 1,puVar3);
  FUN_1805ae620(param_1,puVar3,puVar3);
  param_1[2] = *param_1;
  uVar8 = (uint)&stack0x00000000;
  iVar5 = (uVar8 & 0x23ff) * (uVar8 & 0x23ff) + 1;
  uVar7 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar7 = (int)(uVar7 - 7) >> 0x1f & uVar7;
  uVar9 = ((uVar8 & 0xaff) * (uVar8 & 0xaff) * 0x10 + 4) % 0x13;
  uVar7 = (int)((-uVar9 | uVar9) & (-uVar7 | uVar7)) >> 0x1f;
  local_78 = ((int)(-uVar7 | uVar7) >> 0x1f) * -0xd4cf ^ 0xd95f;
  uVar9 = ((uVar8 & 0x16ff) * (uVar8 & 0x16ff) + 1) % 7;
  uVar10 = (((uVar8 & 0x1dff) + 1) * (uVar8 & 0x1dff) + 7) % 0x51;
  uVar7 = ((uVar8 & 0xfff) + 1) * (uVar8 & 0xfff) + 0x36f5 & 0x80000001;
  local_7c = ((((int)(-uVar10 | uVar10) >> 0x1f) - ((int)(-uVar9 | uVar9) >> 0x1f)) + 0x2008U |
             0x260d) ^ ((int)(-uVar7 | uVar7) >> 0x1f) + 1U ^ 0x2ccd;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar2 = rdtsc();
    local_90 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_180b79def();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_90 = (local_90 * -0x502800af >> 0x18 ^ local_90 * -0x502800af) * 0x5bd1c2b2;
  if (local_90 < 0x3333333f) {
    local_70 = (code *)0x0;
    do {
      ppcVar6 = &local_70;
                    /* WARNING: Call to offcut address within same function */
      func_0x000180b7b71e(ppcVar6,&local_70);
      *ppcVar6 = FUN_181194940;
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar4 = (*local_70)(0,0xfa98);
    if (1 < uVar4) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  local_a8 = 0x811c9e53;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  FUN_180b7bb12();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180b7b610 size=97 ############

undefined8 * FUN_180b7b610(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityMachineId>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b7d2b0 size=311 ############

void FUN_180b7d2b0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b7d440(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180a5f760(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180a60830(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x198;
  return;
}



############ FUN_ 180b7d440 size=316 ############

longlong FUN_180b7d440(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180a6a441 size=815 ############

void FUN_180a6a441(undefined8 param_1,undefined4 *param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5,longlong param_6)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong lVar3;
  uint uVar4;
  longlong *plVar5;
  int iVar6;
  longlong unaff_RBX;
  longlong unaff_RBP;
  int *unaff_RSI;
  longlong lVar7;
  longlong *unaff_RDI;
  longlong lVar8;
  uint *puVar9;
  longlong *plVar10;
  undefined4 *puVar11;
  longlong lVar12;
  char unaff_R13B;
  uint unaff_R14D;
  uint local_res20 [2];
  
  uVar4 = (*unaff_RSI + 1) * *unaff_RSI & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 != 0) {
    FUN_180a6a441(0xcf24);
    return;
  }
  do {
    uVar4 = (*unaff_RSI + 1) * *unaff_RSI & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar7 = 0;
  local_res20[0] = 0xb3;
  if ((*(char *)(unaff_RBX + 0x10) == (byte)((-unaff_R13B ^ 0xffU) + 1)) &&
     ((*(longlong **)(unaff_RBX + 8))[1] - **(longlong **)(unaff_RBX + 8) >> 5 == 0)) {
    lVar7 = FUN_1811316e0(0x18);
    *(longlong *)(unaff_RBP + -0x21) = lVar7;
    if (lVar7 != 0) {
      FUN_1805a48c0(lVar7,"LsObjectRelationVector<>::at: This one-to-one relation is empty.");
    }
    lVar7 = FUN_1805c0260();
    *(undefined4 *)(unaff_RBP + -0x61) = 0x6e;
    *(char **)(unaff_RBP + -0x21) =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectormachineid.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar7 + 8),unaff_RBP + -0x21);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,unaff_RBP + -0x61);
  }
  if (param_5 == param_6) {
LAB_180a6a732:
    iVar6 = (int)param_2;
    *(uint *)(unaff_RBP + -0x79) = unaff_R14D;
    FUN_180a6b6b5();
    lVar3 = FUN_180a6a7a8();
    *(int *)(lVar3 * 2) = *(int *)(lVar3 * 2) + iVar6;
                    /* WARNING: Could not recover jumptable at 0x000180a6a8f3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)(lVar7 + 0x586e2))();
    return;
  }
LAB_180a6a5a0:
  puVar11 = (undefined4 *)(param_6 + lVar7);
  if ((unaff_RDI != (longlong *)0x0) && (lVar3 = *unaff_RDI, -1 < lVar3)) {
    *(undefined8 *)(unaff_RBP + -0x69) = 0x2621fc0;
    lVar8 = (longlong)&DAT_182621fc0 + -*(longlong *)(unaff_RBP + -0x69);
    do {
      if (puVar11 < (undefined4 *)(-*(longlong *)(unaff_RBP + -0x69) + 0x182621fc8 + lVar3)) {
        if (-1 < lVar3) {
          plVar5 = (longlong *)(lVar8 + lVar3);
          plVar1 = (longlong *)(puVar11 + 1);
          if (plVar5 < plVar1) {
            *(undefined4 *)(unaff_RBP + 0xf) = *puVar11;
            lVar12 = lVar8 - (longlong)puVar11;
            plVar10 = unaff_RDI;
            goto LAB_180a6a620;
          }
        }
        break;
      }
      unaff_RDI = unaff_RDI + 1;
      lVar3 = *unaff_RDI;
    } while (-1 < lVar3);
  }
  goto LAB_180a6a644;
  while (plVar5 = (longlong *)(lVar8 + lVar3), plVar5 < plVar1) {
LAB_180a6a620:
    *(longlong *)(unaff_RBP + 0xf + lVar12 + lVar3) = *plVar5 - lVar8;
    plVar10 = plVar10 + 1;
    lVar3 = *plVar10;
    puVar11 = (undefined4 *)(unaff_RBP + 0xf);
    if (lVar3 < 0) break;
  }
LAB_180a6a644:
  if ((unaff_R14D & 0x1ff) != 0) {
    unaff_R14D = unaff_R14D ^ 0x9f2c751e;
  }
  uVar4 = local_res20[0] & 0xf;
  if (((uVar4 + 1) * (uVar4 + 1) * uVar4 * uVar4 & 3) != 0) {
    do {
      unaff_R14D = unaff_R14D * -0x404a307d;
      lVar7 = lVar7 + 4;
    } while (((uVar4 + 1) * (uVar4 + 1) * uVar4 * uVar4 & 3) != 0);
  }
  local_res20[0] = local_res20[0] >> 0x1c ^ local_res20[0] << 4;
  do {
    puVar9 = local_res20;
    param_2 = puVar11 + 0xf0f39f5;
    FUN_180a69925(0xcf24);
    *puVar9 = *puVar9 ^ param_2[-0xf0f39f5];
    uVar4 = (*(int *)(unaff_RBP + 0x5f) + 1) * *(int *)(unaff_RBP + 0x5f) & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar7 = lVar7 + 4;
  if (param_5 - param_6 == lVar7) goto LAB_180a6a732;
  goto LAB_180a6a5a0;
}



############ FUN_ 180a7e5b0 size=214 ############

void FUN_180a7e5b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsMachineBinding::targetSlowPath: The LsMachineBindingWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsmachinebinding.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180a81170 size=2000 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180a81965) overlaps instruction at (ram,0x000180a81961)
    */
/* WARNING: Removing unreachable block (ram,0x000180a81bfc) */
/* WARNING: Removing unreachable block (ram,0x000180a814f3) */
/* WARNING: Removing unreachable block (ram,0x000180a811c2) */
/* WARNING: Removing unreachable block (ram,0x000180a811d6) */
/* WARNING: Removing unreachable block (ram,0x000180a81876) */
/* WARNING: Removing unreachable block (ram,0x000180a81d3c) */
/* WARNING: Removing unreachable block (ram,0x000180a814fc) */
/* WARNING: Switch with 1 destination removed at 0x000180a81fce */
/* WARNING: Type propagation algorithm not settling */

ulonglong FUN_180a81170(longlong param_1,ulonglong param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  undefined1 *puVar2;
  char cVar3;
  longlong lVar4;
  undefined8 uVar5;
  char *pcVar6;
  int iVar7;
  uint uVar8;
  ulonglong uVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  undefined8 *puVar13;
  ulonglong uVar14;
  undefined1 *puVar15;
  undefined1 *puVar17;
  undefined1 *puVar18;
  undefined8 *puVar19;
  undefined8 *puVar20;
  uint uVar21;
  ulonglong uVar22;
  uint uVar23;
  longlong lVar24;
  bool bVar25;
  uint unaff_retaddr;
  longlong local_res8;
  ulonglong local_res10;
  ulonglong local_res18;
  undefined8 local_res20;
  undefined1 auStack_c8 [32];
  undefined4 *local_a8;
  undefined8 local_a0;
  undefined4 local_98 [2];
  uint local_90;
  char *local_88;
  undefined **local_80;
  undefined4 local_78;
  undefined8 local_70;
  undefined2 local_68;
  undefined8 local_60;
  longlong local_58 [3];
  undefined1 *puVar16;
  
  puVar18 = (undefined1 *)((longlong)&local_60 + 1);
  puVar15 = auStack_c8;
  local_58[1] = 0xfffffffffffffffe;
  uVar5 = 0x9f0;
  if (((ulonglong)&stack0x00000000 & 0xa40) == 0) {
    uVar8 = (uint)&stack0x00000000 & 0x2bf;
    iVar7 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
    iVar7 = ((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e;
  }
  else {
    iVar7 = 0;
  }
  local_90 = iVar7 + 1999U ^ 0x91f;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar22 = 0x180000000;
  local_a8 = &DAT_181427c64;
  local_a0 = 0x100;
  uVar8 = (DAT_181427c64 + 0x6c95ef14) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c68) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c6c) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c70) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c74) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c78) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c7c) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c80) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c84) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c88) * 0x401;
  uVar8 = uVar8 ^ uVar8 >> 6;
  local_res20 = CONCAT44(1,uVar8);
  local_res10 = param_2;
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8 = FUN_1811316e0(0x18);
    if (local_res8 != 0) {
      FUN_1805a48c0(local_res8,"LsObjectRelationVector<>::at: This one-to-one relation is empty.");
    }
    lVar4 = FUN_1805c0260();
    local_res8 = CONCAT44(local_res8._4_4_,0x6e);
    local_60 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectormachinebinding.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(lVar4 + 8),&local_60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,&local_res8);
  }
  uVar8 = (DAT_181427c8c + uVar8) * 0x401;
  uVar10 = ((uVar8 >> 6 ^ uVar8) + DAT_181427c90) * 0x401;
  uVar10 = uVar10 ^ uVar10 >> 6;
  uVar8 = uVar10 & 0xf;
  uVar14 = ((longlong)(int)(uVar8 * uVar8 * (uVar8 + 1) * (uVar8 + 1) & 0x80000003) | 0x88e0U) ^
           0x8820;
  uVar8 = (*(int *)(&UNK_181427bd4 + uVar14) + uVar10) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bd8 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bdc + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427be0 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427be4 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427be8 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bec + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bf0 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bf4 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bf8 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427bfc + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c00 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c04 + uVar14)) * 0x401;
  local_res20 = 0x62035cd4d5bf74c7;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c08 + uVar14)) * 0x401;
  uVar10 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c0c + uVar14)) * 0x401;
  uVar8 = uVar10 >> 6;
  uVar9 = (ulonglong)(uVar10 ^ uVar8);
  do {
    if ((POPCOUNT((ulonglong)uVar8 & 0xff) & 1U) == 0) {
      lVar4 = uVar22 + uVar9;
      lVar24 = uVar9 - lVar4;
      uVar22 = -lVar24;
      uVar9 = lVar4 + lVar24;
    }
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
    uVar8 = unaff_retaddr;
  } while (uVar10 != 0);
  uVar8 = (*(int *)(&UNK_181427c10 + uVar14) + (int)uVar9) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c14 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c18 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c1c + uVar14)) * 0x401;
  uVar8 = uVar8 ^ uVar8 >> 6;
  local_res8 = CONCAT44(local_res8._4_4_,uVar8);
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_88 = (char *)FUN_1811316e0(0x18);
    if (local_88 == (char *)0x0) {
      local_a8 = (undefined4 *)0x0;
    }
    else {
      local_a8 = (undefined4 *)
                 FUN_1805a48c0(local_88,
                               "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                              );
    }
    pcVar6 = (char *)FUN_1811316e0(0x18);
    local_88 = pcVar6;
    if (pcVar6 != (char *)0x0) {
      FUN_1805a48c0(pcVar6,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar6 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_58[0] = (*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5;
    FUN_1805b2520(*(undefined8 *)((longlong)local_a8 + 8),local_58);
    FUN_1805b2520(*(undefined8 *)((longlong)local_a8 + 8),&local_res18);
    local_98[0] = 0x70;
    local_88 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectormachinebinding.cpp"
    ;
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar6 + 8),&local_88);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_98);
  }
  lVar4 = **(longlong **)(param_1 + 8);
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar4 >> 5) <= param_3) {
                    /* WARNING: Subroutine does not return */
    FUN_1808077d0();
  }
  lVar24 = param_3 * 0x20;
  local_80 = license_services::LsRelation::vftable;
  local_78 = *(undefined4 *)(lVar24 + 8 + lVar4);
  local_70 = *(undefined8 *)(lVar24 + 0x10 + lVar4);
  local_68 = *(undefined2 *)(lVar24 + 0x18 + lVar4);
  uVar8 = (*(int *)(&UNK_181427c20 + uVar14) + uVar8) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c24 + uVar14)) * 0x401;
  do {
    param_2 = ~(~param_2 + 1) + 1;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar8 = (*(int *)(&UNK_181427c28 + uVar14) + (uVar8 ^ uVar8 >> 6)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c2c + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c30 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c34 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c38 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c3c + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c40 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c44 + uVar14)) * 0x401;
  uVar10 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c48 + uVar14)) * 0x401;
  uVar10 = uVar10 ^ uVar10 >> 6;
  uVar8 = uVar10;
  do {
    bVar25 = (POPCOUNT(uVar8 & 0xff) & 1U) == 0;
    uVar9 = 0x5010;
    FUN_180a81497();
    if ((!bVar25) && ((uVar9 & 0xd700) == 0)) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = (*(int *)(&UNK_181427c4c + uVar14) + uVar10) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c50 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c54 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c58 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c5c + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(&UNK_181427c60 + uVar14)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)((longlong)&DAT_181427c64 + uVar14)) * 0x401;
  uVar9 = uVar14 + 4;
  uVar23 = ((uVar8 >> 6 ^ uVar8) + *(int *)((longlong)&DAT_181427c68 + uVar14)) * 0x401;
  uVar23 = uVar23 ^ uVar23 >> 6;
  uVar11 = uVar23 & 7 | 0x43;
  uVar8 = (uint)uVar9 & 7 | 0x19;
  uVar21 = 0xeaa0;
  uVar10 = (uint)local_a0;
  if (((uVar8 * uVar8 * 0x1b3 ^ uVar11 * uVar11 * -0x9b) & 0x250) == 0) {
    uVar8 = uVar10 & 0x7f;
    uVar21 = ((uVar8 + 2) * (uVar8 + 1) * uVar8) % 3 |
             ((uVar10 & 0x25ff) - 1) * (uVar10 & 0x25ff) & 1;
    uVar22 = (ulonglong)uVar21;
    uVar21 = uVar21 ^ 0xeaa0;
  }
  if ((uVar9 & 0x70) == 0) {
    uVar8 = (uint)uVar9 & 0x1ff;
  }
  else {
    uVar8 = uVar10 & 0x17f;
  }
  iVar12 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  iVar7 = (uVar23 & 0x71ff) * (uVar23 & 0x71ff) + 1;
  uVar8 = (iVar7 >> 4) + (iVar7 >> 1) + iVar7 * 0x24924924 >> 0x1d;
  uVar10 = (int)(uVar8 - 7) >> 0x1f & uVar8 | uVar10;
  lVar4 = uVar9 + (((longlong)(((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e) |
                   0x7483U) ^ 0xffffffffffff8bc7) +
          (longlong)(int)(((int)(-uVar10 | uVar10) >> 0x1f) * -60000 ^ uVar21);
  uVar8 = (*(int *)(lVar4 + 0x181427c64) + uVar23) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c68)) * 0x401;
  do {
    uVar14 = 0x5010;
    *(undefined **)(puVar15 + -8) = &UNK_180a81b8a;
    func_0x000180a8081d();
    if ((uVar14 & 0xdb00) == 0) {
      uVar10 = *(uint *)((ulonglong)uRam00000001ac8ba698 + 0x48c08548);
      *(uint *)((ulonglong)uRam00000001ac8ba698 + 0x48c08548) = uVar10 << 0x19 | uVar10 >> 8;
      puVar16 = puVar15 + -8;
      *(undefined1 **)(puVar15 + -8) = puVar18;
      puVar15 = puVar15 + -0x8550;
      puVar18 = puVar16;
    }
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar8 = (*(int *)(lVar4 + 0x181427c6c) + (uVar8 ^ uVar8 >> 6)) * 0x401;
  uVar8 = uVar8 ^ uVar8 >> 6;
  uVar14 = (ulonglong)uVar8;
  do {
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar8 = (*(int *)(lVar4 + 0x181427c70) + uVar8) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c74)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c78)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c7c)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c80)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c84)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c88)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c8c)) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c90)) * 0x401;
  uVar10 = ((uVar8 >> 6 ^ uVar8) + *(int *)(lVar4 + 0x181427c94)) * 0x401;
  uVar10 = uVar10 ^ uVar10 >> 6;
  uVar8 = uVar10 & 0x33f;
  iVar7 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  if ((((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e & 0x7cU) == 0) {
    uVar8 = (uint)(lVar4 + 0x30) & 0x3f;
    uVar8 = uVar8 * uVar8 * (uVar8 + 1) * (uVar8 + 1) & 0x80000003;
  }
  else {
    uVar8 = ((uVar10 & 0xbff) - 1) * (uVar10 & 0xbff) & 1;
  }
  uVar8 = (*(int *)(lVar4 + 0x30 + ((longlong)(int)(0x72e1 - uVar8) ^ 0x72e5U) + 0x181427c64) +
          uVar10) * 0x401;
  uVar8 = uVar8 >> 6 ^ uVar8;
  uVar8 = ((uVar8 >> 8 | uVar8 << 0x18) & 0xe916e916 | (uVar8 << 8 | uVar8 >> 0x18) & 0x16e916e9) ^
          0x72a63856;
  uVar10 = (uVar8 >> 0x10 | uVar8 << 0x10) & 0xfc3a03c5 |
           (uVar8 << 0x10 | uVar8 >> 0x10) & 0x3c5fc3a;
  uVar9 = (ulonglong)uVar10;
  uVar8 = ~(*(uint *)(puVar18 + 0x7f) & uVar10);
  uVar10 = ~(uVar8 & uVar10);
  if ((char)(((~(uVar8 & *(uint *)(puVar18 + 0x7f)) & uVar10) == 0xffffffff) * '/') == '\0') {
    *(BADSPACEBASE **)(puVar15 + -8) = register0x00000020;
    *(ulonglong *)(puVar15 + -0x10) = (ulonglong)uVar10;
    *(longlong *)(puVar15 + -0x18) = param_1;
    uVar22 = thunk_FUN_1805a9280(0x9f0,uVar14 ^ 0x180a81e22 ^ uVar14,uVar9);
    return uVar22;
  }
  iVar7 = *(int *)(puVar18 + -0x31);
  puVar2 = puVar15;
  do {
    puVar17 = puVar2;
    *(ulonglong *)(puVar17 + -8) = uVar9;
    *(undefined8 *)(puVar17 + -0x10) = uVar5;
    *(ulonglong *)(puVar17 + -0x18) = uVar14;
    param_2 = (longlong)(&UNK_180a81fdd + param_2) -
              ((param_2 - (longlong)(&UNK_180a81fdd + param_2) ^ 0xffffffffffffffff) + 1);
    lVar4 = -(longlong)iVar7;
    uVar14 = *(ulonglong *)(puVar17 + lVar4 + 0xeb8);
    uVar5 = *(undefined8 *)(puVar17 + lVar4 + 0xec0);
    uVar9 = *(ulonglong *)(puVar17 + lVar4 + 0xec8);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar17 + lVar4 + 0xed0;
  } while (uVar8 != 0);
  *(undefined **)(puVar17 + lVar4 + 0xec8) = &UNK_180a82028;
  cVar3 = FUN_18080b1c0(puVar18 + -0x21,(ulonglong)uVar10,uVar9,uVar22);
  if (cVar3 == '\0') {
    lVar24 = *(longlong *)(param_1 + 0x20);
    puVar1 = *(undefined8 **)(*(longlong *)(lVar24 + 8) + 0x20);
    cVar3 = *(char *)((longlong)puVar1[1] + 0x19);
    puVar20 = puVar1;
    puVar19 = (undefined8 *)puVar1[1];
    while (cVar3 == '\0') {
      if ((longlong)puVar19[4] < *(longlong *)(puVar18 + -0x11)) {
        puVar13 = (undefined8 *)puVar19[2];
        puVar19 = puVar20;
      }
      else {
        puVar13 = (undefined8 *)*puVar19;
      }
      puVar20 = puVar19;
      puVar19 = puVar13;
      cVar3 = *(char *)((longlong)puVar13 + 0x19);
    }
    if ((puVar20 == puVar1) || (*(longlong *)(puVar18 + -0x11) < (longlong)puVar20[4])) {
      puVar20 = puVar1;
    }
    if (puVar20 == puVar1) {
      uVar5 = *(undefined8 *)(param_1 + 8);
      *(undefined **)(puVar17 + lVar4 + 0xec8) = &UNK_180a8208a;
      func_0x000180a5b050(lVar24,uVar5,0);
    }
  }
  else {
    lVar24 = *(longlong *)(param_1 + 0x20);
  }
  *(undefined **)(puVar17 + lVar4 + 0xec8) = &UNK_180a8209c;
  FUN_180a59ec0(lVar24,param_2,puVar18 + -0x21,0);
  return param_2;
}



############ FUN_ 180a83dc0 size=694 ############

longlong FUN_180a83dc0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  if (lVar5 == 0x1642c8590b21642) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0x1642c8590b21642 - (uVar6 >> 1)) &&
     (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 0xb8;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0x1642c8590b21643) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180a83f02;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180a83f02:
  lVar8 = lVar7 * 0xb8 + uVar6;
  lVar7 = lVar8 + 0xb8;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180a84eb0(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 0xb8) {
      FUN_180a84eb0(uVar9);
      uVar9 = uVar9 + 0xb8;
    }
  }
  else {
    FUN_180a860b0(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180a860b0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x17) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 7) - (lVar5 >> 0x3f)) * 0xb8)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 0xb8 + uVar6;
  param_1[2] = uVar12 * 0xb8 + uVar6;
  return lVar5 * 0xb8 + *param_1;
}



############ FUN_ 180b7e8b0 size=853 ############

/* WARNING: Instruction at (ram,0x000180b7ebe5) overlaps instruction at (ram,0x000180b7ebe1)
    */
/* WARNING: Removing unreachable block (ram,0x000180b7ea12) */
/* WARNING: Removing unreachable block (ram,0x000180b7e988) */
/* WARNING: Removing unreachable block (ram,0x000180b7e9af) */
/* WARNING: Removing unreachable block (ram,0x000180b7ea7c) */
/* WARNING: Removing unreachable block (ram,0x000180b7e996) */

void FUN_180b7e8b0(undefined8 *param_1)

{
  undefined8 *puVar1;
  longlong lVar2;
  uint uVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  code *UNRECOVERED_JUMPTABLE;
  char cVar6;
  char cVar7;
  longlong alStack_b8 [4];
  undefined8 local_98;
  undefined8 *local_90;
  undefined8 local_80;
  undefined *local_78;
  uint local_70;
  uint local_6c;
  undefined8 local_68;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)alStack_b8;
  local_90 = param_1;
  local_60 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  if (puVar1 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)0x0;
    local_90 = puVar1;
  }
  else {
    *puVar1 = license_services::LsEntitySignature::vftable;
    local_90 = puVar1;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
    puVar4 = puVar1;
  }
  *param_1 = puVar4;
  FUN_180b7e840(param_1 + 1,puVar4);
  FUN_1805ae620(param_1,puVar4,puVar4);
  param_1[2] = *param_1;
  uVar3 = (uint)&stack0x00000000 & 0x34ff;
  uVar3 = ((uVar3 + 1) * uVar3 + 7) % 0x51;
  local_6c = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x9a3e ^ 0x9b8e;
  uVar3 = (uint)&stack0x00000000 & 0x1bf;
  uVar3 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3;
  local_70 = 0x5cca >> (sbyte)uVar3 ^ 0x520a;
  local_98 = 0x2b34;
  local_68 = 0x180b7ebbc;
  local_78 = &DAT_180b816f0;
  local_90 = (undefined8 *)0xe1f25f43d225bef;
  local_80 = 0x3d225bef;
  lVar2 = (ulonglong)uVar3 + 0xe1f25f43d225bef;
  uVar5 = (ulonglong)uVar3 - lVar2;
  while( true ) {
    cVar7 = SBORROW8(lVar2,~uVar5 + 1);
    uVar5 = lVar2 - (~uVar5 + 1);
    cVar6 = (longlong)uVar5 < 0;
    FUN_180b7ec08();
    if (cVar7 == cVar6) break;
    lVar2 = func_0x000150e3385f();
  }
  UNRECOVERED_JUMPTABLE = (code *)(alStack_b8[0] + 0x6ec4);
  alStack_b8[0] = alStack_b8[0] + 0x17b;
                    /* WARNING: Could not recover jumptable at 0x000180b7ed53. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



############ FUN_ 180b7e840 size=97 ############

undefined8 * FUN_180b7e840(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntitySignature>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b80900 size=311 ############

void FUN_180b80900(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b80a90(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180a83dc0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180a84eb0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0xb8;
  return;
}



############ FUN_ 180b80a90 size=316 ############

longlong FUN_180b80a90(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180a8bdb0 size=918 ############

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

void FUN_180a8bdb0(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong *plVar3;
  uint uVar4;
  undefined1 auStack_160 [40];
  undefined8 uStack_138;
  undefined8 uStack_130;
  undefined1 auStack_128 [84];
  uint local_d4;
  undefined4 local_d0;
  longlong local_c8;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_98;
  undefined8 local_70;
  ulonglong local_40;
  
  local_70 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_128;
  uVar2 = 0;
  local_d0 = 0x2f0;
  uVar4 = (uint)&stack0x00000000 & 0x1aff;
  uVar4 = (uVar4 * uVar4 * 0x10 + 4) % 0x13;
  local_d4 = ((int)(-uVar4 | uVar4) >> 0x1f) * 0x1022 & 0xe1d0U ^ 0xed90;
  uStack_130 = 0x180a8bf50;
  local_98 = param_1;
  local_c8 = FUN_1811316e0(0xb8);
  if (local_c8 != 0) {
    uStack_130 = 0x180a8bf61;
    uVar2 = FUN_180a84f80(local_c8);
  }
  uStack_130 = 0x180a8bf7c;
  local_b8 = uVar2;
  local_b0 = uVar2;
  FUN_180a85f70(uVar2,param_2);
  uStack_130 = 0x180a8bf86;
  FUN_180aaa1e0(uVar2,1);
  uStack_130 = 0;
                    /* WARNING: Call to offcut address within same function */
  uStack_138 = 0x180a8bfa5;
  func_0x000180a8bfc0();
  plVar3 = (longlong *)((ulonglong)auStack_160 & 0xffffffff);
  lVar1 = plVar3[6];
  plVar3[6] = lVar1 + 0x1cd;
  plVar3[5] = lVar1 + 23000;
  plVar3[4] = lVar1 + 0x500;
  plVar3[3] = lVar1 + 0x1918;
  plVar3[2] = lVar1 + 0x24fe;
  plVar3[1] = lVar1 + 0x1ada;
  *plVar3 = lVar1 + 0x1917;
  plVar3[-1] = lVar1 + 0x811b;
  plVar3[-2] = lVar1 + -0x90e;
                    /* WARNING: Could not recover jumptable at 0x000180a8c153. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(lVar1 + 0x534))();
  return;
}



############ FUN_ 180aa2ed0 size=1100 ############

/* WARNING: Removing unreachable block (ram,0x000180aa2fcc) */
/* WARNING: Removing unreachable block (ram,0x000180aa304c) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180aa2ed0(void)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_1b8 [32];
  undefined4 local_198;
  uint local_17c;
  uint local_150;
  uint local_14c;
  code *local_148 [23];
  undefined8 local_90;
  ulonglong local_30;
  
  local_90 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar6 = (uint)&stack0x00000000;
  iVar4 = (uVar6 & 0x49ff) * (uVar6 & 0x49ff) + 1;
  uVar5 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_14c = (int)((-uVar5 | uVar5) ^ 0xffffffff) >> 0x1f ^ 0xaa0;
  if (((((uVar6 & 0x29ff) + 1) * (uVar6 & 0x29ff) + 7) % 0x51 & 0x30) == 0) {
    uVar7 = ((uVar6 & 0x1dff) + 1) * (uVar6 & 0x1dff) + 0x2101 & 0x80000001;
    iVar4 = (uVar6 & 0x33ff) * (uVar6 & 0x33ff) + 1;
    uVar5 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
    uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
    uVar5 = (int)((-uVar5 | uVar5) & (-uVar7 | uVar7)) >> 0x1f;
    local_150 = (int)(-uVar5 | uVar5) >> 0x1f & 0xfb62;
  }
  else {
    local_150 = 0xfb62;
  }
  if (((ulonglong)&stack0x00000000 & 0x178) == 0) {
    uVar5 = 0x8bfae62;
  }
  else {
    uVar5 = ((uVar6 & 0x15ff) + 1) * (uVar6 & 0x15ff) + 0x6539 & 0x80000001;
  }
  local_150 = (int)(-uVar5 | uVar5) >> 0x1f & 0xf7a2U ^ local_150;
  local_198 = 0xb3;
  do {
    uVar2 = rdtsc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * 0x5bd1ae35;
  local_17c = (uVar5 >> 0x18 ^ uVar5) * -0x733200af;
  if (local_17c < 0x7fffffff) {
    do {
      local_148[0] = FUN_1813bba80;
      func_0x000180aa25ce(local_148,0x16c3);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar3 = (*local_148[0])();
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18266f100) && (_Init_thread_header(&DAT_18266f100), DAT_18266f100 == -1)) {
    _DAT_18266f0f8 = (undefined8 *)FUN_1811316e0(0x18);
    if (_DAT_18266f0f8 == (undefined8 *)0x0) {
      _DAT_18266f0f8 = (undefined8 *)0x0;
    }
    else {
      *_DAT_18266f0f8 = 0;
      _DAT_18266f0f8[1] = 0;
      _DAT_18266f0f8[2] = 0;
    }
    _Init_thread_footer(&DAT_18266f100);
  }
  return;
}



############ FUN_ 180aa5d60 size=214 ############

void FUN_180aa5d60(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsSignedInfo::targetSlowPath: The LsSignedInfoWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lssignedinfo.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180aa7c40 size=918 ############

/* WARNING: Removing unreachable block (ram,0x000180aa7cf9) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 FUN_180aa7c40(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined1 local_118 [40];
  longlong local_f0;
  undefined4 local_d0 [4];
  undefined4 local_c0;
  uint local_bc;
  longlong local_b8;
  char *local_90 [2];
  undefined8 local_80;
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)local_118;
  local_c0 = 0xde0;
  if (((ulonglong)&stack0x00000000 & 0x1c0) == 0) {
    uVar3 = 0x22b2d85;
  }
  else {
    uVar3 = 1;
  }
  local_bc = ((int)(-uVar3 | uVar3) >> 0x1f) * -0xbcd9 ^ 0xb3a9;
  local_b8 = param_1;
  local_80 = param_3;
  local_70 = param_2;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_f0 = FUN_1811316e0(0x18);
    if (local_f0 != 0) {
      FUN_1805a48c0(local_f0,"LsObjectRelationVector<>::at: This one-to-one relation is empty.");
    }
    lVar1 = FUN_1805c0260();
    local_d0[0] = 0x6e;
    local_90[0] = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorsignedinfo.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_d0);
  }
  func_0x000180aa5f84();
                    /* WARNING: Call to offcut address within same function */
  func_0x000180aa7e54();
  return _DAT_4cc824648d48e717;
}



############ FUN_ 180aadc90 size=214 ############

void FUN_180aadc90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsSignature::targetSlowPath: The LsSignatureWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lssignature.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180ab3930 size=6594 ############

void FUN_180ab3930(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5)

{
  char *pcVar1;
  ulonglong _Size;
  void *pvVar2;
  bool bVar3;
  longlong *plVar4;
  char cVar5;
  int iVar6;
  undefined4 uVar7;
  longlong *plVar8;
  undefined8 uVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  longlong lVar12;
  longlong *plVar13;
  undefined8 uVar14;
  longlong lVar15;
  undefined8 *puVar16;
  ulonglong *puVar17;
  undefined8 ****_Dst;
  void *pvVar18;
  undefined8 ****ppppuVar19;
  char *pcVar20;
  undefined1 *puVar21;
  longlong *plVar22;
  longlong *plVar23;
  ulonglong uVar24;
  undefined1 auStack_908 [32];
  longlong **local_8e8;
  longlong *local_8e0;
  char local_8d8;
  longlong *local_8d0;
  undefined8 local_8c8;
  undefined8 local_8c0;
  longlong *local_8b8;
  undefined8 local_8b0;
  undefined8 local_8a8;
  longlong local_8a0;
  undefined8 local_898;
  undefined1 *local_890;
  int local_888 [2];
  undefined4 local_880;
  longlong *local_878;
  longlong local_870;
  undefined8 *local_868;
  undefined8 *local_860;
  void *local_858;
  undefined8 local_850;
  longlong *local_848;
  longlong lStack_840;
  undefined4 local_838 [2];
  undefined4 local_830 [4];
  undefined4 local_820 [2];
  undefined4 local_818 [8];
  undefined4 local_7f8 [2];
  undefined4 local_7f0 [2];
  undefined4 local_7e8 [4];
  longlong local_7d8;
  char *local_7d0;
  longlong lStack_7c8;
  longlong local_7c0;
  longlong *local_7b8 [2];
  undefined1 *local_7a8;
  longlong local_7a0 [5];
  longlong *local_778;
  longlong lStack_770;
  longlong *local_768;
  longlong alStack_760 [2];
  char *local_750 [2];
  char *local_740;
  char *local_738 [2];
  undefined8 local_728 [2];
  undefined8 local_718;
  undefined8 local_710;
  char *local_708;
  longlong local_700;
  char *local_6f8;
  ulonglong local_6f0;
  ulonglong local_6e8;
  undefined1 local_6e0 [8];
  undefined1 local_6d8 [16];
  longlong *local_6c8;
  undefined8 uStack_6c0;
  longlong *local_6b8;
  longlong lStack_6b0;
  longlong *local_6a8;
  undefined8 uStack_6a0;
  void *local_698 [2];
  longlong local_688;
  undefined1 *local_680;
  longlong local_678;
  longlong local_670;
  longlong local_668;
  longlong local_660 [3];
  longlong *local_648;
  longlong lStack_640;
  undefined1 local_638 [16];
  undefined8 local_628;
  undefined8 local_620;
  undefined1 local_618 [16];
  undefined8 local_608;
  undefined8 local_600;
  undefined1 local_5b8 [16];
  undefined8 local_5a8;
  undefined8 local_5a0;
  undefined1 local_558 [16];
  undefined8 local_548;
  undefined8 local_540;
  undefined1 local_4f8 [16];
  undefined8 local_4e8;
  undefined8 local_4e0;
  undefined1 local_4d8 [16];
  undefined8 local_4c8;
  undefined8 local_4c0;
  undefined1 local_4b8 [16];
  undefined8 local_4a8;
  undefined8 local_4a0;
  undefined1 local_498 [16];
  undefined8 local_488;
  undefined8 local_480;
  undefined1 local_478 [16];
  undefined8 local_468;
  undefined8 local_460;
  undefined1 local_458 [16];
  undefined8 local_448;
  undefined8 local_440;
  undefined1 local_438 [16];
  undefined1 local_428 [8];
  undefined1 local_420 [24];
  undefined1 local_408 [8];
  undefined1 local_400 [8];
  undefined1 local_3f8 [8];
  undefined1 local_3f0 [16];
  undefined1 local_3e0 [8];
  undefined1 local_3d8 [8];
  undefined8 local_3d0;
  undefined1 local_3c8 [8];
  undefined1 local_3c0 [8];
  undefined1 local_3b8 [40];
  undefined1 local_390 [40];
  undefined1 local_368 [32];
  undefined8 local_348;
  undefined8 ***local_340;
  undefined8 uStack_338;
  ulonglong local_330;
  ulonglong local_328;
  undefined1 local_320;
  undefined7 uStack_31f;
  ulonglong local_310;
  ulonglong local_308;
  undefined1 local_300;
  undefined7 uStack_2ff;
  ulonglong local_2f0;
  ulonglong local_2e8;
  undefined1 local_2a0;
  undefined7 uStack_29f;
  undefined8 local_290;
  ulonglong local_288;
  undefined1 local_280;
  undefined7 uStack_27f;
  undefined8 local_270;
  ulonglong local_268;
  undefined1 local_260;
  undefined7 uStack_25f;
  undefined8 local_250;
  ulonglong local_248;
  undefined1 local_240 [16];
  undefined8 local_230;
  undefined8 local_228;
  undefined1 local_220;
  undefined7 uStack_21f;
  undefined8 local_210;
  ulonglong local_208;
  undefined1 local_200;
  undefined7 uStack_1ff;
  undefined8 local_1f0;
  ulonglong local_1e8;
  undefined1 local_1e0;
  undefined7 uStack_1df;
  undefined8 local_1d0;
  ulonglong local_1c8;
  undefined1 local_1c0;
  undefined7 uStack_1bf;
  undefined8 local_1b0;
  ulonglong local_1a8;
  undefined1 local_140;
  undefined7 uStack_13f;
  undefined8 local_130;
  ulonglong local_128;
  undefined1 local_120 [32];
  undefined1 local_100;
  undefined7 uStack_ff;
  undefined8 local_f0;
  ulonglong local_e8;
  void *local_e0 [3];
  ulonglong local_c8;
  undefined1 local_c0 [64];
  undefined1 local_80 [56];
  ulonglong local_48;
  
  local_3d0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_908;
  local_870 = param_5;
  plVar13 = (longlong *)0x0;
  local_880 = 0;
  local_8c8 = param_3;
  local_8c0 = param_4;
  local_8b0 = param_3;
  local_868 = param_1;
  local_860 = param_1;
  local_348 = param_4;
  if (param_2 == 0) {
    local_8d0 = (longlong *)FUN_1811316e0(0x18);
    if (local_8d0 != (longlong *)0x0) {
      FUN_1805a48c0(local_8d0,"The LsSignature pointer (pSignature) is Null.");
    }
    plVar8 = (longlong *)FUN_1811316e0(0x18);
    local_8d0 = plVar8;
    if (plVar8 != (longlong *)0x0) {
      FUN_1805a48c0(plVar8,"|__FILE__|%s|__LINE__|%d");
      *plVar8 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar13 = plVar8;
    }
    local_838[0] = 0x44;
    local_750[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
    ;
    uVar9 = FUN_1805a21d0(plVar13[1],local_750);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar9,local_838);
  }
  local_8d8 = 0;
  local_888[0] = 0;
  local_7f8[0] = 0;
  local_8a0 = 0;
  local_898 = 0;
  local_8a0 = FUN_1805bbda0(&local_8a0);
  local_858 = (void *)0x0;
  local_850 = 0;
  local_858 = (void *)FUN_1805bbda0(&local_858);
  local_830[0] = 1;
  local_878 = (longlong *)0x0;
  plVar8 = plVar13;
  plVar22 = plVar13;
  plVar23 = plVar13;
  do {
    local_8b8 = plVar8;
    if (plVar8 == (longlong *)0x0) {
      plVar23 = (longlong *)0x1;
      plVar10 = (longlong *)FUN_180aab0f0(param_2,local_3c8);
      if ((longlong *)((*(longlong **)(*plVar10 + 8))[1] - **(longlong **)(*plVar10 + 8) >> 5) <=
          plVar22) goto LAB_180ab3b13;
      bVar3 = true;
    }
    else {
LAB_180ab3b13:
      bVar3 = false;
    }
    if (plVar23 != (longlong *)0x0) {
      plVar23 = (longlong *)0x0;
    }
    if (!bVar3) break;
    puVar11 = (undefined8 *)FUN_180aab0f0(param_2,local_3c0);
    FUN_180aa7c40(*puVar11,local_7b8,plVar22);
    plVar10 = local_7b8[0];
    lVar12 = FUN_180870eb0(local_7b8[0]);
    FUN_18080ca00(plVar10,*(undefined1 *)(lVar12 + 0x183),"canonicalVersion");
    lVar12 = FUN_180870eb0(plVar10);
    if (*(int *)(lVar12 + 0x30) == 1) {
      plVar8 = local_7b8[0];
    }
    plVar22 = (longlong *)((longlong)plVar22 + 1);
  } while( true );
  local_878 = plVar8;
  if (plVar8 == (longlong *)0x0) {
    local_8d0 = (longlong *)FUN_1811316e0(0x18);
    if (local_8d0 != (longlong *)0x0) {
      plVar13 = (longlong *)
                FUN_1805a48c0(local_8d0,
                              "Could not find a LsSignedDigest.canonicalVersion match for any schema version number between %d and 1 for the object with selfRelation value %s and uuid value: %s."
                             );
    }
    plVar8 = (longlong *)FUN_1811316e0(0x18);
    if (plVar8 != (longlong *)0x0) {
      local_8d0 = plVar8;
      FUN_1805a48c0(plVar8,"|__FILE__|%s|__LINE__|%d");
      *plVar8 = (longlong)pace::PaceLocationInfoFormatter::vftable;
    }
    local_8d0 = (longlong *)local_558;
    local_890 = local_618;
    local_548 = 0;
    local_540 = 0xf;
    local_558[0] = 0;
    FUN_1805a6cb0(local_558,&DAT_181bb56a0,2);
    local_608 = 0;
    local_600 = 0xf;
    local_618[0] = 0;
    FUN_1805a6cb0(local_618,&DAT_181bb1ed8,1);
    local_230 = 0;
    local_228 = 0xf;
    local_240[0] = 0;
    FUN_1805a6cb0(local_240,&DAT_181bdf740,1);
    local_8e8 = (longlong **)local_558;
    FUN_18080c630(local_120,local_8c8,local_240,local_618);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(plVar13[1],local_830);
  }
  plVar22 = (longlong *)FUN_180a8ff50(plVar8,local_438);
  if (**(longlong **)(*plVar22 + 8) == (*(longlong **)(*plVar22 + 8))[1]) {
    local_8d0 = (longlong *)FUN_1811316e0(0x18);
    plVar22 = plVar13;
    if (local_8d0 != (longlong *)0x0) {
      plVar22 = (longlong *)
                FUN_1805a48c0(local_8d0,
                              "The LsSignedInfo objecy with uuid value %s does not have any LsSignedDigest objects in its digests relationship. Detected while attempting to verify the signature on the object with selfRelation value %s and uuid value: %s."
                             );
    }
    plVar23 = (longlong *)FUN_1811316e0(0x18);
    if (plVar23 != (longlong *)0x0) {
      local_8d0 = plVar23;
      FUN_1805a48c0(plVar23,"|__FILE__|%s|__LINE__|%d");
      *plVar23 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar13 = plVar23;
    }
    local_8d0 = (longlong *)local_638;
    local_890 = local_4b8;
    local_628 = 0;
    local_620 = 0xf;
    local_638[0] = 0;
    FUN_1805a6cb0(local_638,&DAT_181bb56a0,2);
    local_4a8 = 0;
    local_4a0 = 0xf;
    local_4b8[0] = 0;
    FUN_1805a6cb0(local_4b8,&DAT_181bb1ed8,1);
    local_290 = 0;
    local_288 = 0xf;
    local_2a0 = 0;
    FUN_1805a6cb0(&local_2a0,&DAT_181bdf740,1);
    local_8e8 = (longlong **)local_638;
    uVar9 = FUN_18080c630(&local_1e0,local_8c8,&local_2a0,local_4b8);
    uVar14 = (**(code **)(*plVar8 + 0x40))(plVar8);
    FUN_1805b2240(plVar22[1],uVar14);
    FUN_1805b2240(plVar22[1],uVar9);
    FUN_1805b2240(plVar22[1],local_8c0);
    if (0xf < local_1c8) {
      pvVar2 = (void *)CONCAT71(uStack_1df,local_1e0);
      pvVar18 = pvVar2;
      if ((0xfff < local_1c8 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_1d0 = 0;
    local_1c8 = 0xf;
    local_1e0 = 0;
    if (local_288 < 0x10) {
      local_820[0] = 0x7e;
      local_740 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
      ;
      uVar9 = FUN_1805a21d0(plVar13[1],&local_740);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_820);
    }
    pvVar2 = (void *)CONCAT71(uStack_29f,local_2a0);
    pvVar18 = pvVar2;
    if ((0xfff < local_288 + 1) &&
       (pvVar18 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  lVar12 = FUN_180870eb0(plVar8);
  FUN_18080ca00(plVar8,*(undefined1 *)(lVar12 + 0x18a),"signerSerialNumber");
  lVar12 = FUN_180870eb0(plVar8);
  FUN_1805a4070(local_c0,lVar12 + 0xf8);
  local_7d8 = 0;
  uVar9 = FUN_1805a4070(local_368,local_c0);
  puVar11 = local_868;
  (*(code *)local_868[2])(*local_868,uVar9,&local_7d8);
  uVar9 = local_8c8;
  if (local_7d8 == 0) {
    local_8d0 = (longlong *)FUN_1811316e0(0x18);
    plVar8 = plVar13;
    if (local_8d0 != (longlong *)0x0) {
      plVar8 = (longlong *)
               FUN_1805a48c0(local_8d0,
                             "The LsCertificateChain used to sign the object with selfRelation %s and uuid %s is not in the LsObjectCache, and could not be queried from the database."
                            );
    }
    plVar22 = (longlong *)FUN_1811316e0(0x18);
    if (plVar22 != (longlong *)0x0) {
      local_8d0 = plVar22;
      FUN_1805a48c0(plVar22,"|__FILE__|%s|__LINE__|%d");
      *plVar22 = (longlong)pace::PaceLocationInfoFormatter::vftable;
      plVar13 = plVar22;
    }
    local_8d0 = (longlong *)local_4f8;
    local_890 = local_5b8;
    local_4e8 = 0;
    local_4e0 = 0xf;
    local_4f8[0] = 0;
    FUN_1805a6cb0(local_4f8,&DAT_181bb56a0,2);
    local_5a8 = 0;
    local_5a0 = 0xf;
    local_5b8[0] = 0;
    FUN_1805a6cb0(local_5b8,&DAT_181bb1ed8,1);
    local_250 = 0;
    local_248 = 0xf;
    local_260 = 0;
    FUN_1805a6cb0(&local_260,&DAT_181bdf740,1);
    local_8e8 = (longlong **)local_4f8;
    uVar9 = FUN_18080c630(&local_1c0,local_8c8,&local_260,local_5b8);
    FUN_1805b2240(plVar8[1],uVar9);
    FUN_1805b2240(plVar8[1],local_8c0);
    if (0xf < local_1a8) {
      pvVar2 = (void *)CONCAT71(uStack_1bf,local_1c0);
      pvVar18 = pvVar2;
      if ((0xfff < local_1a8 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_1b0 = 0;
    local_1a8 = 0xf;
    local_1c0 = 0;
    if (local_248 < 0x10) {
      local_818[0] = 0x8d;
      local_738[0] = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
      ;
      uVar9 = FUN_1805a21d0(plVar13[1],local_738);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_818);
    }
    pvVar2 = (void *)CONCAT71(uStack_25f,local_260);
    pvVar18 = pvVar2;
    if ((0xfff < local_248 + 1) &&
       (pvVar18 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  local_6a8 = (longlong *)0x0;
  uStack_6a0 = 0;
  lVar12 = FUN_180870eb0(plVar8);
  FUN_18080ca00(plVar8,*(undefined1 *)(lVar12 + 0x188),"signatureMethod");
  lVar12 = FUN_180870eb0(plVar8);
  FUN_1805a4070(local_e0,lVar12 + 0xb8);
  lVar12 = FUN_180870eb0(plVar8);
  FUN_18080ca00(plVar8,*(undefined1 *)(lVar12 + 0x187),"pkStandardName");
  lVar12 = FUN_180870eb0(plVar8);
  FUN_1805a4070(&local_280,lVar12 + 0x98);
  lVar12 = local_7d8;
  lVar15 = FUN_180a38ad0(local_7d8);
  FUN_18080ca00(lVar12,*(undefined1 *)(lVar15 + 0x16b),&DAT_181bcc330);
  lVar12 = FUN_180a38ad0(lVar12);
  FUN_1805b46a0(local_698,lVar12 + 0x50);
  local_8d0 = (longlong *)FUN_1811316e0(0xb08);
  plVar22 = plVar13;
  if (local_8d0 != (longlong *)0x0) {
    local_8e0 = (longlong *)CONCAT44(local_8e0._4_4_,2);
    local_8e8 = (longlong **)0x0;
    plVar22 = (longlong *)FUN_180714b40(local_8d0,local_e0,&local_280,local_698);
  }
  local_6c8 = plVar22;
  FUN_180621520(&uStack_6c0,plVar22);
  FUN_1805ae620(&local_6c8,plVar22,plVar22);
  local_6a8 = local_6c8;
  uStack_6a0 = uStack_6c0;
  FUN_180719a10(local_6c8,0,0);
  lVar12 = local_870;
  if (local_698[0] != (void *)0x0) {
    pvVar18 = local_698[0];
    if ((0xfff < (ulonglong)(local_688 - (longlong)local_698[0])) &&
       (pvVar18 = *(void **)((longlong)local_698[0] + -8),
       0x1f < (ulonglong)((longlong)local_698[0] + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  if (0xf < local_268) {
    pvVar2 = (void *)CONCAT71(uStack_27f,local_280);
    pvVar18 = pvVar2;
    if ((0xfff < local_268 + 1) &&
       (pvVar18 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  local_270 = 0;
  local_268 = 0xf;
  local_280 = 0;
  if (0xf < local_c8) {
    pvVar18 = local_e0[0];
    if ((0xfff < local_c8 + 1) &&
       (pvVar18 = *(void **)((longlong)local_e0[0] + -8),
       0x1f < (ulonglong)((longlong)local_e0[0] + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  local_768 = (longlong *)0x0;
  alStack_760[0] = 0;
  puVar16 = (undefined8 *)FUN_180a8ff50(plVar8,&local_680);
  FUN_180b74750(*puVar16,local_728,0);
  lVar15 = FUN_180870eb0(plVar8);
  FUN_18080ca00(plVar8,*(undefined1 *)(lVar15 + 0x183),"canonicalVersion");
  lVar15 = FUN_180870eb0(plVar8);
  FUN_180a42ab0(local_3b8,*(undefined4 *)(lVar15 + 0x30));
  (*(code *)puVar11[1])(*puVar11,local_3b8);
  plVar23 = (longlong *)FUN_1811316e0(0x178);
  plVar22 = plVar13;
  local_8d0 = plVar23;
  if (plVar23 != (longlong *)0x0) {
    lVar15 = FUN_180b5f600(local_728[0]);
    FUN_18080ca00(local_728[0],*(undefined1 *)(lVar15 + 0x103),"digestMethod");
    lVar15 = FUN_180b5f600(local_728[0]);
    plVar22 = (longlong *)FUN_18060f490(plVar23,lVar15 + 0x30);
  }
  local_6b8 = plVar22;
  FUN_180a422d0(&lStack_6b0,plVar22);
  FUN_1805ae620(&local_6b8,plVar22,plVar22);
  local_768 = local_6b8;
  alStack_760[0] = lStack_6b0;
  local_718 = 0;
  local_648 = local_6b8;
  lStack_640 = lStack_6b0;
  if (lStack_6b0 != 0) {
    LOCK();
    *(int *)(lStack_6b0 + 8) = *(int *)(lStack_6b0 + 8) + 1;
    UNLOCK();
  }
  local_8e0 = &local_718;
  local_8e8 = &local_648;
  FUN_180a49360(local_3b8,uVar9,local_888,&local_8a0);
  if (lVar12 != 0) {
    if (local_888[0] != 0) {
      *(int *)(lVar12 + 0x18) = local_888[0];
    }
    plVar22 = (longlong *)(lVar12 + 0x20);
    if (plVar22 != &local_8a0) {
      FUN_1805bcdc0(plVar22);
      lVar15 = *plVar22;
      uVar14 = FUN_1805af810(plVar22,*(undefined8 *)(local_8a0 + 8),lVar15,local_8d8);
      *(undefined8 *)(lVar15 + 8) = uVar14;
      *(undefined8 *)(lVar12 + 0x28) = local_898;
      plVar23 = (longlong *)*plVar22;
      plVar10 = (longlong *)plVar23[1];
      if (*(char *)((longlong)plVar10 + 0x19) == '\0') {
        cVar5 = *(char *)(*plVar10 + 0x19);
        plVar4 = (longlong *)*plVar10;
        while (cVar5 == '\0') {
          cVar5 = *(char *)(*plVar4 + 0x19);
          plVar10 = plVar4;
          plVar4 = (longlong *)*plVar4;
        }
        *plVar23 = (longlong)plVar10;
        lVar12 = *(longlong *)(*plVar22 + 8);
        lVar15 = *(longlong *)(lVar12 + 0x10);
        cVar5 = *(char *)(lVar15 + 0x19);
        while (cVar5 == '\0') {
          cVar5 = *(char *)(*(longlong *)(lVar15 + 0x10) + 0x19);
          lVar12 = lVar15;
          lVar15 = *(longlong *)(lVar15 + 0x10);
        }
        *(longlong *)(*plVar22 + 0x10) = lVar12;
      }
      else {
        *plVar23 = (longlong)plVar23;
        *(longlong *)(*plVar22 + 0x10) = *plVar22;
      }
    }
  }
  FUN_180a454f0(local_3b8);
  local_778 = (longlong *)0x0;
  lStack_770 = 0;
  plVar23 = (longlong *)FUN_1811316e0(0x178);
  plVar22 = plVar13;
  local_848 = plVar23;
  if (plVar23 != (longlong *)0x0) {
    lVar12 = FUN_180870eb0(plVar8);
    FUN_18080ca00(plVar8,*(undefined1 *)(lVar12 + 0x184),"digestMethod");
    lVar12 = FUN_180870eb0(plVar8);
    plVar22 = (longlong *)FUN_18060f490(plVar23,lVar12 + 0x38);
  }
  FUN_180ab18a0(&local_778,plVar22);
  uVar14 = local_8c0;
  lVar12 = FUN_180870eb0(plVar8);
  FUN_18080ca00(plVar8,*(undefined1 *)(lVar12 + 0x183),"canonicalVersion");
  lVar12 = FUN_180870eb0(plVar8);
  FUN_180a42ab0(local_390,*(undefined4 *)(lVar12 + 0x30));
  FUN_180a8ef20(plVar8,local_390);
  local_710 = 0;
  local_848 = local_778;
  lStack_840 = lStack_770;
  if (lStack_770 != 0) {
    LOCK();
    *(int *)(lStack_770 + 8) = *(int *)(lStack_770 + 8) + 1;
    UNLOCK();
  }
  local_8e0 = &local_710;
  local_8e8 = &local_848;
  FUN_180a49360(local_390,uVar9,local_7f8,&local_858);
  local_660[0] = 0;
  local_660[1] = 0;
  local_660[2] = 0;
  local_7a0[0] = 0;
  local_7a0[1] = 0;
  local_7a0[2] = 0;
  cVar5 = FUN_180aa0910(plVar8);
  if (cVar5 == '\0') {
    local_848 = (longlong *)FUN_1811316e0(0x18);
    if (local_848 != (longlong *)0x0) {
      plVar13 = (longlong *)
                FUN_1805a48c0(local_848,
                              "LsSignedInfo.signatureValues not populated for the object with selfRelation %s and uuid %s."
                             );
    }
    lVar12 = FUN_1805c0260();
    local_848 = (longlong *)local_4d8;
    local_680 = local_498;
    local_4c8 = 0;
    local_4c0 = 0xf;
    local_4d8[0] = 0;
    FUN_1805a6cb0(local_4d8,&DAT_181bb56a0,2);
    local_488 = 0;
    local_480 = 0xf;
    local_498[0] = 0;
    FUN_1805a6cb0(local_498,&DAT_181bb1ed8,1);
    local_1f0 = 0;
    local_1e8 = 0xf;
    local_200 = 0;
    FUN_1805a6cb0(&local_200,&DAT_181bdf740,1);
    local_8e8 = (longlong **)local_4d8;
    uVar9 = FUN_18080c630(&local_140,uVar9,&local_200,local_498);
    FUN_1805b2240(plVar13[1],uVar9);
    FUN_1805b2240(plVar13[1],uVar14);
    if (0xf < local_128) {
      pvVar2 = (void *)CONCAT71(uStack_13f,local_140);
      pvVar18 = pvVar2;
      if ((0xfff < local_128 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_130 = 0;
    local_128 = 0xf;
    local_140 = 0;
    if (local_1e8 < 0x10) {
      local_7f0[0] = 0xff;
      local_708 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
      ;
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_708);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_7f0);
    }
    pvVar2 = (void *)CONCAT71(uStack_1ff,local_200);
    pvVar18 = pvVar2;
    if ((0xfff < local_1e8 + 1) &&
       (pvVar18 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  FUN_180a91180(plVar8,&local_8a8);
  plVar22 = (longlong *)FUN_180b65780(local_8a8,&local_7a8);
  if ((*(longlong **)(*plVar22 + 8))[1] - **(longlong **)(*plVar22 + 8) >> 5 != 2) {
    local_7a8 = (undefined1 *)FUN_1811316e0(0x18);
    if (local_7a8 != (undefined1 *)0x0) {
      plVar13 = (longlong *)
                FUN_1805a48c0(local_7a8,
                              "Wrong number of signature data values for the object with selfRelation %s and uuid %s. Expected 2, saw %d."
                             );
    }
    lVar12 = FUN_1805c0260();
    plVar8 = (longlong *)FUN_180b65780(local_8a8,local_420);
    local_700 = (*(longlong **)(*plVar8 + 8))[1] - **(longlong **)(*plVar8 + 8) >> 5;
    local_7a8 = local_478;
    local_848 = (longlong *)local_458;
    local_468 = 0;
    local_460 = 0xf;
    local_478[0] = 0;
    FUN_1805a6cb0(local_478,&DAT_181bb56a0,2);
    local_448 = 0;
    local_440 = 0xf;
    local_458[0] = 0;
    FUN_1805a6cb0(local_458,&DAT_181bb1ed8,1);
    local_210 = 0;
    local_208 = 0xf;
    local_220 = 0;
    FUN_1805a6cb0(&local_220,&DAT_181bdf740,1);
    local_8e8 = (longlong **)local_478;
    uVar9 = FUN_18080c630(&local_100,uVar9,&local_220,local_458);
    FUN_1805b2240(plVar13[1],uVar9);
    FUN_1805b2240(plVar13[1],uVar14);
    FUN_1805b2520(plVar13[1],&local_700);
    if (0xf < local_e8) {
      pvVar2 = (void *)CONCAT71(uStack_ff,local_100);
      pvVar18 = pvVar2;
      if ((0xfff < local_e8 + 1) &&
         (pvVar18 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar18);
    }
    local_f0 = 0;
    local_e8 = 0xf;
    local_100 = 0;
    if (local_208 < 0x10) {
      local_7e8[0] = 0x107;
      local_6f8 = 
      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\liblicenseservices\\dsigsignatureverifier.cpp"
      ;
      uVar9 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&local_6f8);
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(uVar9,local_7e8);
    }
    pvVar2 = (void *)CONCAT71(uStack_21f,local_220);
    pvVar18 = pvVar2;
    if ((0xfff < local_208 + 1) &&
       (pvVar18 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar18);
  }
  plVar22 = (longlong *)FUN_180b65780(local_8a8,local_6e0);
  if ((*(longlong **)(*plVar22 + 8))[1] - **(longlong **)(*plVar22 + 8) >> 5 != 0) {
    do {
      puVar11 = (undefined8 *)FUN_180b65780(local_8a8,local_3d8);
      puVar11 = (undefined8 *)FUN_180b713f0(*puVar11,local_3f0,plVar13);
      uVar9 = *puVar11;
      lVar12 = FUN_180b631b0(uVar9);
      FUN_18080ca00(uVar9,*(undefined1 *)(lVar12 + 0x143),&DAT_181bcce70);
      lVar12 = FUN_180b631b0(uVar9);
      puVar11 = (undefined8 *)(lVar12 + 0x50);
      _Size = *(ulonglong *)(lVar12 + 0x60);
      if (0xf < *(ulonglong *)(lVar12 + 0x68)) {
        puVar11 = (undefined8 *)*puVar11;
      }
      if (_Size < 0x10) {
        _Dst = (undefined8 ****)*puVar11;
        uStack_338 = puVar11[1];
        uVar24 = 0xf;
        local_340 = _Dst;
      }
      else {
        local_6f0 = 0x7fffffffffffffff;
        local_6e8 = _Size | 0xf;
        puVar17 = &local_6f0;
        if ((_Size | 0xf) < 0x8000000000000000) {
          puVar17 = &local_6e8;
        }
        uVar24 = *puVar17;
        _Dst = (undefined8 ****)FUN_1805c7ba0(&local_340,uVar24 + 1);
        local_340 = _Dst;
        memcpy(_Dst,puVar11,_Size + 1);
      }
      local_2f0 = 0;
      local_2e8 = 0xf;
      local_300 = 0;
      local_330 = _Size;
      local_328 = uVar24;
      FUN_1805a6cb0(&local_300,"RData",5);
      puVar21 = &local_300;
      if (0xf < local_2e8) {
        puVar21 = (undefined1 *)CONCAT71(uStack_2ff,local_300);
      }
      ppppuVar19 = &local_340;
      if (0xf < uVar24) {
        ppppuVar19 = _Dst;
      }
      if ((_Size == local_2f0) && (iVar6 = memcmp(ppppuVar19,puVar21,_Size), iVar6 == 0)) {
        bVar3 = true;
      }
      else {
        bVar3 = false;
      }
      FUN_180485450(&local_300);
      if (bVar3) {
        puVar11 = (undefined8 *)FUN_180b65780(local_8a8,local_408);
        puVar11 = (undefined8 *)FUN_180b713f0(*puVar11,local_400,plVar13);
        uVar9 = *puVar11;
        lVar12 = FUN_180b631b0(uVar9);
        FUN_18080ca00(uVar9,*(undefined1 *)(lVar12 + 0x146),"valueBinary");
        lVar12 = FUN_180b631b0(uVar9);
        plVar8 = local_660;
LAB_180ab51fc:
        FUN_1805b9910(plVar8,lVar12 + 0xb0);
      }
      else {
        local_310 = 0;
        local_308 = 0xf;
        local_320 = 0;
        FUN_1805a6cb0(&local_320,"SData",5);
        puVar21 = &local_320;
        if (0xf < local_308) {
          puVar21 = (undefined1 *)CONCAT71(uStack_31f,local_320);
        }
        ppppuVar19 = &local_340;
        if (0xf < uVar24) {
          ppppuVar19 = _Dst;
        }
        if ((_Size == local_310) && (iVar6 = memcmp(ppppuVar19,puVar21,_Size), iVar6 == 0)) {
          bVar3 = true;
        }
        else {
          bVar3 = false;
        }
        FUN_180485450(&local_320);
        if (bVar3) {
          puVar11 = (undefined8 *)FUN_180b65780(local_8a8,local_3f8);
          puVar11 = (undefined8 *)FUN_180b713f0(*puVar11,local_3e0,plVar13);
          uVar9 = *puVar11;
          lVar12 = FUN_180b631b0(uVar9);
          FUN_18080ca00(uVar9,*(undefined1 *)(lVar12 + 0x146),"valueBinary");
          lVar12 = FUN_180b631b0(uVar9);
          plVar8 = local_7a0;
          goto LAB_180ab51fc;
        }
      }
      FUN_180485450(&local_340);
      plVar13 = (longlong *)((longlong)plVar13 + 1);
      plVar22 = (longlong *)FUN_180b65780(local_8a8,local_6e0);
      plVar8 = local_878;
    } while (plVar13 < (longlong *)
                       ((*(longlong **)(*plVar22 + 8))[1] - **(longlong **)(*plVar22 + 8) >> 5));
  }
  lVar12 = FUN_180870eb0(plVar8);
  FUN_18080ca00(plVar8,*(undefined1 *)(lVar12 + 0x189),"signedDate");
  lVar12 = FUN_180870eb0(plVar8);
  FUN_180660c00(local_6d8,lVar12 + 0xd8,0);
  plVar13 = local_6a8;
  uVar7 = (**(code **)(local_6a8[1] + 0x28))();
  (**(code **)(*local_778 + 0x40))(local_778,uVar7,0,local_80);
  lVar12 = local_870;
  if (local_870 != 0) {
    uVar7 = FUN_1807163d0(plVar13);
    *(undefined4 *)(lVar12 + 0x1c) = uVar7;
  }
  local_8e0 = &local_8a0;
  local_8e8 = (longlong **)local_6d8;
  local_8d8 = FUN_18071b1b0(plVar13,local_80,local_660,local_7a0);
  if (local_8d8 != '\0') {
    puVar11 = (undefined8 *)FUN_180a8ff50(plVar8,local_428);
    FUN_180b74750(*puVar11,&local_8d0,0);
    plVar13 = local_768;
    local_7d0 = (char *)0x0;
    lStack_7c8 = 0;
    local_7c0 = 0;
    uVar7 = FUN_180614890((int)local_768[1]);
    FUN_1805b1330(&local_7d0,uVar7,&local_7d0);
    (**(code **)(*plVar13 + 0x40))(plVar13,0,local_7d0,0);
    plVar13 = local_8d0;
    lVar12 = FUN_180b5f600(local_8d0);
    FUN_18080ca00(plVar13,*(undefined1 *)(lVar12 + 0x104),"digestValue");
    lVar12 = FUN_180b5f600(plVar13);
    FUN_1805b46a0(&local_678,lVar12 + 0x50);
    if (lStack_7c8 - (longlong)local_7d0 == local_670 - local_678) {
      pcVar20 = local_7d0;
      do {
        if ((ulonglong)(lStack_7c8 - (longlong)local_7d0) <=
            (ulonglong)((longlong)pcVar20 - (longlong)local_7d0)) break;
        pcVar1 = pcVar20 + (local_678 - (longlong)local_7d0);
        cVar5 = *pcVar20;
        pcVar20 = pcVar20 + 1;
      } while (cVar5 == *pcVar1);
    }
    if (local_678 != 0) {
      FUN_1805a7bf0(&local_678,local_678,local_668 - local_678);
    }
    if (local_7d0 != (char *)0x0) {
      FUN_1805a7bf0(&local_7d0,local_7d0,local_7c0 - (longlong)local_7d0);
    }
  }
  if (local_7a0[0] != 0) {
    FUN_1805a7bf0(local_7a0,local_7a0[0],local_7a0[2] - local_7a0[0]);
    local_7a0[0] = 0;
    local_7a0[1] = 0;
    local_7a0[2] = 0;
  }
  FUN_180575ed0(local_660);
  FUN_180a454f0(local_390);
  FUN_1805b9860(&lStack_770);
  FUN_1805b9860(alStack_760);
  FUN_1805b9860(&uStack_6a0);
  FUN_180485450(local_c0);
  FUN_1805bcdc0(&local_858);
                    /* WARNING: Subroutine does not return */
  free(local_858);
}



############ FUN_ 180b713f0 size=1076 ############

/* WARNING: Instruction at (ram,0x000180b7159c) overlaps instruction at (ram,0x000180b7159a)
    */
/* WARNING: Removing unreachable block (ram,0x000180b7149b) */
/* WARNING: Removing unreachable block (ram,0x000180b71453) */

uint FUN_180b713f0(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  int unaff_retaddr;
  undefined4 local_98 [2];
  undefined8 local_90;
  longlong local_88;
  undefined4 local_78;
  undefined4 local_74;
  char *local_50 [2];
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  local_78 = 0xd30;
  local_74 = 0xd10;
  do {
    func_0x000180b72ac9();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_88 = FUN_1811316e0(0x18);
    if (local_88 == 0) {
      local_90 = 0;
    }
    else {
      local_90 = FUN_1805a48c0(local_88,
                               "LsObjectRelationVector<>::at: This one-to-one relation is empty.");
    }
    lVar1 = FUN_1805c0260();
    local_98[0] = 0x6e;
    local_50[0] = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorarrayentry.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),local_50);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_98);
  }
  FUN_180b7087d();
                    /* WARNING: Call to offcut address within same function */
  uVar3 = func_0x000180b716f7();
  return uVar3 ^ 0x5c418a1f;
}



############ FUN_ 180b74750 size=2953 ############

/* WARNING: Instruction at (ram,0x000180b74d25) overlaps instruction at (ram,0x000180b74d24)
    */
/* WARNING: Removing unreachable block (ram,0x000180b74b80) */
/* WARNING: Removing unreachable block (ram,0x000180b748e0) */
/* WARNING: Removing unreachable block (ram,0x000180b74b58) */
/* WARNING: Removing unreachable block (ram,0x000180b74d24) */
/* WARNING: Removing unreachable block (ram,0x000180b747bc) */

void FUN_180b74750(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  ulonglong uVar8;
  uint uVar9;
  int unaff_retaddr;
  ulonglong local_res18;
  undefined8 local_res20;
  char *local_c8;
  undefined4 local_c0 [2];
  longlong local_b8;
  undefined4 *local_a8;
  undefined4 local_a0 [2];
  uint local_98;
  uint local_94;
  char *local_90;
  undefined **local_88;
  undefined4 local_80;
  undefined8 local_78;
  undefined2 local_70;
  char *local_68;
  longlong local_60 [4];
  
  local_60[1] = 0xfffffffffffffffe;
  uVar5 = (uint)&stack0x00000000;
  uVar4 = uVar5 & 0x1ff;
  iVar6 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  uVar9 = ((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e ^
          (uVar4 * uVar4 * 0x10 + 4) % 0x13;
  uVar4 = ((uVar5 & 0x39ff) + 1) * (uVar5 & 0x39ff) + 7;
  local_98 = 0x7d81U - (0 >> ((char)uVar4 + (char)(uVar4 / 0x51) * -0x51 & 0x1fU)) ^
             ((int)(-uVar9 | uVar9) >> 0x1f) * -0x7c71;
  if (((((uVar5 & 0x3dff) + 1) * (uVar5 & 0x3dff) + 7) % 0x51 & 0x520) == 0) {
    uVar5 = uVar5 & 0x3bf;
    iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
    bVar3 = (byte)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e);
  }
  else {
    bVar3 = 0;
  }
  local_94 = 0x4b88 << (bVar3 & 0x1f) ^ 0x4398;
  local_a8 = &DAT_1814412c0;
  local_b8 = CONCAT44(local_b8._4_4_,0x6c88c348);
  local_res20 = 0xcc9e2d51;
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_68 = (char *)FUN_1811316e0(0x18);
    if (local_68 != (char *)0x0) {
      FUN_1805a48c0(local_68,"LsObjectRelationVector<>::at: This one-to-one relation is empty.");
    }
    lVar1 = FUN_1805c0260();
    local_c0[0] = 0x6e;
    local_68 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorsigneddigest.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),&local_68);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_c0);
  }
  uVar4 = (DAT_1814412c0 * 0x16a88000 | (uint)(DAT_1814412c0 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0xff249fbf;
  uVar4 = (DAT_1814412c4 * 0x16a88000 | (uint)(DAT_1814412c4 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = uVar4 & 0xff;
  iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  if ((((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e & 0x1f00U) == 0) {
    iVar6 = 0x9556 - (((uVar4 & 0x3dff) + 1) * (uVar4 & 0x3dff) & 0x80000001);
  }
  else {
    iVar6 = 0x9556;
  }
  uVar8 = ((longlong)(int)(((uVar4 & 0x30ff) + 1) * (uVar4 & 0x30ff) & 0x80000001) | 0x9516U) ^
          (longlong)iVar6;
  uVar4 = (*(int *)(&DAT_181441288 + uVar8) * 0x16a88000 |
          (uint)(*(int *)(&DAT_181441288 + uVar8) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar4;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000180b74f59();
    FUN_180b763e6();
                    /* WARNING: Call to offcut address within same function */
    func_0x000180b749ab();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar4 = (*(int *)(&DAT_18144128c + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_18144128c + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_181441290 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_181441290 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_181441294 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_181441294 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_181441298 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_181441298 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_18144129c + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_18144129c + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_1814412a0 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412a0 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_1814412a4 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412a4 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_1814412a8 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412a8 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_1814412ac + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412ac + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_1814412b0 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412b0 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_a8 = (undefined4 *)0xc6436f12696cb4cf;
  local_c0[0] = 0x696cb4cf;
  uVar4 = (*(int *)(&DAT_1814412b4 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412b4 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (*(int *)(&DAT_1814412b8 + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412b8 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_180b74596();
    FUN_180b7bde2();
                    /* WARNING: Call to offcut address within same function */
    func_0x000180b749ab();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  iVar6 = (int)local_res20;
  uVar4 = (*(int *)(&DAT_1814412bc + uVar8) * (int)local_res20 * 0x8000 |
          (uint)(*(int *)(&DAT_1814412bc + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = *(int *)((longlong)&DAT_1814412c0 + uVar8) * (int)local_res20;
  uVar4 = (uVar5 * 0x8000 | uVar5 >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = *(int *)((longlong)&DAT_1814412c4 + uVar8) * (int)local_res20;
  uVar4 = (uVar5 * 0x8000 | uVar5 >> 0x11) * 0x1b873593 ^
          (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_180b72ef1();
    FUN_180b7537d();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <=
      local_res18) {
    local_90 = (char *)FUN_1811316e0(0x18);
    if (local_90 == (char *)0x0) {
      local_b8 = 0;
    }
    else {
      local_b8 = FUN_1805a48c0(local_90,
                               "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                              );
    }
    local_c8 = (char *)FUN_1811316e0(0x18);
    local_90 = local_c8;
    if (local_c8 == (char *)0x0) {
      local_c8 = (char *)0x0;
    }
    else {
      FUN_1805a48c0(local_c8,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)local_c8 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_60[0] = (*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5;
    FUN_1805b2520(*(undefined8 *)(local_b8 + 8),local_60);
    FUN_1805b2520(*(undefined8 *)(local_b8 + 8),&local_res18);
    local_a0[0] = 0x70;
    local_90 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorsigneddigest.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(local_c8 + 8),&local_90);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_a0);
  }
  lVar1 = **(longlong **)(param_1 + 8);
  if (local_res18 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar1 >> 5)) {
    lVar7 = local_res18 * 0x20;
    local_88 = license_services::LsRelation::vftable;
    local_80 = *(undefined4 *)(lVar7 + 8 + lVar1);
    local_78 = *(undefined8 *)(lVar7 + 0x10 + lVar1);
    local_70 = *(undefined2 *)(lVar7 + 0x18 + lVar1);
    uVar4 = (*(int *)(&DAT_1814412c8 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412c8 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412cc + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412cc + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412d0 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412d0 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412d4 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412d4 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412d8 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412d8 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412dc + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412dc + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412e0 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412e0 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412e4 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412e4 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412e8 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412e8 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412ec + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412ec + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412f0 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412f0 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    do {
      FUN_180b769a8();
      FUN_180b72ef1();
      FUN_180b76ea1();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = (*(int *)(&DAT_1814412f4 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412f4 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412f8 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412f8 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_1814412fc + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_1814412fc + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_181441300 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_181441300 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    uVar4 = (*(int *)(&DAT_181441304 + uVar8) * iVar6 * 0x8000 |
            (uint)(*(int *)(&DAT_181441304 + uVar8) * iVar6) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
    do {
      FUN_180b74725();
      FUN_180b72ef1();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = (*(int *)(&LAB_181441308 + uVar8) * (int)local_res20 * 0x8000 |
            (uint)(*(int *)(&LAB_181441308 + uVar8) * (int)local_res20) >> 0x11) * 0x1b873593 ^
            (uVar4 << 0xd | uVar4 >> 0x13) * 5 + 0xe6546b64;
                    /* WARNING: Call to offcut address within same function */
    func_0x000180b752b8((uVar4 << 0xd | uVar4 >> 0x13) * 5 + -0x19ab949c);
    FUN_180b7537e();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 180ab5be0 size=679 ############

longlong FUN_180ab5be0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x208;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x208;
  if (lVar13 == 0x7e07e07e07e07e) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x208;
  uVar11 = uVar12;
  if ((uVar4 <= 0x7e07e07e07e07e - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x208;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0x7e07e07e07e07f) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180ab5d1b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180ab5d1b:
  lVar7 = lVar1 * 0x208 + uVar4;
  lVar1 = lVar7 + 0x208;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_1809d3570(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x208) {
      FUN_1809d3570(uVar8);
      uVar8 = uVar8 + 0x208;
    }
  }
  else {
    FUN_180ab8450(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180ab8450(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x41) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x208) * 0x208)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x208 + uVar4;
  param_1[2] = uVar11 * 0x208 + uVar4;
  return lVar13 * 0x208 + *param_1;
}



############ FUN_ 180ab6340 size=1038 ############

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

longlong FUN_180ab6340(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  undefined1 auStack_e8 [48];
  longlong local_b8;
  longlong local_b0;
  undefined4 local_a8;
  uint local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  longlong local_78;
  undefined8 *local_70;
  undefined8 local_68;
  undefined8 *local_60;
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_90 = param_3;
  local_70 = param_1;
  local_60 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorAuthorization::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180b82250(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  local_a8 = 0x3c0;
  uVar4 = (uint)&stack0x00000000 & 0x51ff;
  iVar5 = uVar4 * uVar4 + 1;
  uVar4 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  local_98 = 0x5335U - ((int)((-uVar4 | uVar4) ^ 0xffffffff) >> 0x1f) ^ 0x5c35;
  lVar6 = *(longlong *)(param_2 + 0x40);
  local_78 = *(longlong *)(param_2 + 0x48);
  if (lVar6 != local_78) {
    do {
      local_b0 = FUN_1811316e0(0xd8);
      uVar2 = 0;
      if (local_b0 != 0) {
        uVar2 = FUN_1808bf290(local_b0,lVar6,param_1);
      }
      puVar1 = (undefined8 *)param_1[5];
      local_88 = uVar2;
      if ((undefined8 *)param_1[6] == puVar1) {
        FUN_18080f490(param_1 + 4,puVar1,&local_88);
      }
      else {
        *puVar1 = uVar2;
        param_1[5] = param_1[5] + 8;
      }
      local_b8 = FUN_1811316e0(0x208);
      uVar2 = 0;
      if (local_b8 != 0) {
        uVar2 = FUN_1809d37a0(local_b8);
      }
      local_80 = uVar2;
      FUN_180ab8100(uVar2,lVar6);
      puVar1 = (undefined8 *)param_1[8];
      if ((undefined8 *)param_1[9] == puVar1) {
        FUN_18080f490(param_1 + 7,puVar1,&local_80);
      }
      else {
        *puVar1 = uVar2;
        param_1[8] = param_1[8] + 8;
      }
      lVar6 = lVar6 + 0x208;
      local_78 = *(longlong *)(param_2 + 0x48);
    } while (lVar6 != local_78);
  }
  uVar3 = FUN_180ab773b();
  return (((~(~(~uVar3 + 1) + 1) + 1 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1 ^
         0xffffffffffffffff) + 1;
}



############ FUN_ 180b82250 size=568 ############

/* WARNING: Removing unreachable block (ram,0x000180b823cb) */
/* WARNING: Removing unreachable block (ram,0x000180b82363) */
/* WARNING: Removing unreachable block (ram,0x000180b8237d) */
/* WARNING: Removing unreachable block (ram,0x000180b8243e) */

void FUN_180b82250(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  char cVar7;
  char cVar8;
  undefined1 auStack_b8 [48];
  undefined8 *local_88;
  uint local_68;
  uint local_64;
  undefined4 local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_88 = param_1;
  local_60 = param_2;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_88 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityAuthorization::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b821e0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar4 = (uint)&stack0x00000000;
  uVar2 = uVar4 & 0x3bf;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_64 = 0x342c << ((byte)(((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e) & 0x1f) ^
             0x324c;
  uVar5 = ((uVar4 & 0x16ff) * (uVar4 & 0x16ff) + 1) % 7;
  uVar6 = ((uVar4 & 0x38ff) * (uVar4 & 0x38ff) + 1) % 7;
  uVar4 = ((uVar4 & 0x1dff) + 1) * (uVar4 & 0x1dff) + 0xb17 & 0x80000001;
  uVar2 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x3ec7;
  local_68 = ((int)((-uVar4 | uVar4) ^ (-uVar6 | uVar6)) >> 0x1f | 0x3eb7U) ^ uVar2;
  cVar8 = SBORROW8((ulonglong)uVar2,(ulonglong)uVar5);
  cVar7 = (longlong)((ulonglong)uVar2 - (ulonglong)uVar5) < 0;
  FUN_180b82494();
  if (cVar8 != cVar7) {
    FUN_180b82494();
    return;
  }
  thunk_FUN_180b82494();
  return;
}



############ FUN_ 180b821e0 size=97 ############

undefined8 * FUN_180b821e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityAuthorization>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b83e90 size=311 ############

void FUN_180b83e90(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b84020(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180ab5be0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_1809d3570(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x208;
  return;
}



############ FUN_ 180b84020 size=316 ############

longlong FUN_180b84020(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180abe420 size=694 ############

longlong FUN_180abe420(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  if (lVar5 == 0x147ae147ae147ae) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0x147ae147ae147ae - (uVar6 >> 1)) &&
     (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 200;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0x147ae147ae147af) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180abe562;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180abe562:
  lVar8 = lVar7 * 200 + uVar6;
  lVar7 = lVar8 + 200;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180abe6e0(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 200) {
      FUN_180abe6e0(uVar9);
      uVar9 = uVar9 + 200;
    }
  }
  else {
    FUN_180ac08e0(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180ac08e0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x19) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 7) - (lVar5 >> 0x3f)) * 200)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 200 + uVar6;
  param_1[2] = uVar12 * 200 + uVar6;
  return lVar5 * 200 + *param_1;
}



############ FUN_ 180b85150 size=1091 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b85412) */
/* WARNING: Removing unreachable block (ram,0x000180b8537b) */

void FUN_180b85150(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  ulonglong uVar6;
  int unaff_retaddr;
  undefined1 auStack_a8 [32];
  undefined8 local_88;
  undefined *local_80;
  undefined8 *local_78;
  undefined8 local_68;
  uint local_60;
  uint local_5c;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_78 = param_1;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_78 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityAuthRelation::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b850e0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar4 = (uint)&stack0x00000000;
  uVar2 = uVar4 & 0x23f;
  iVar5 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  uVar2 = uVar4 & 0x1ff;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  uVar2 = ((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e ^
          ((uVar4 & 0x73ff) * (uVar4 & 0x73ff) + 1) % 7;
  local_5c = 0xdca0 >> ((byte)(0 >> ((byte)(((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >>
                                           0x1e) & 0x1f)) & 0x1f) & 0xd4a0U ^
             ((int)(-uVar2 | uVar2) >> 0x1f) * -0xd830;
  if (((ulonglong)&stack0x00000000 & 0x130) == 0) {
    uVar4 = 0x6402b43;
    uVar2 = 0x1874e450;
  }
  else {
    uVar4 = 0x573cd00;
    uVar2 = 0x362395;
  }
  local_60 = (((int)(-(uVar4 ^ uVar2) | uVar4 ^ uVar2) >> 0x1f) * -0x4e0c | 0xde4cU) ^ 0xd88c;
  do {
    uVar6 = ~(((ulonglong)param_1 ^ 0xffffffffffffffff) + 1);
    param_1 = (undefined8 *)(uVar6 + 1);
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  FUN_180b86df0(*(undefined8 *)(uVar6 + 0x11),param_2);
  local_80 = &DAT_180b92a2c;
  local_78 = (undefined8 *)0x180b95860;
  local_88 = 0x7ccebcde48e0a4d0;
  local_68 = 0x48e0a4d0;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  FUN_180b855a8();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180b850e0 size=97 ############

undefined8 * FUN_180b850e0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityAuthRelation>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b86ac0 size=311 ############

void FUN_180b86ac0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b86c50(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180abe420(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180abe6e0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 200;
  return;
}



############ FUN_ 180b86c50 size=316 ############

longlong FUN_180b86c50(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180ac4390 size=512 ############

undefined8 FUN_180ac4390(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res18 [2];
  undefined1 local_50 [16];
  undefined **local_40;
  undefined4 local_38;
  ulonglong local_30;
  undefined2 local_28;
  
  local_res8 = FUN_1811316e0(200);
  lVar5 = 0;
  lVar3 = lVar5;
  if (local_res8 != 0) {
    lVar3 = FUN_180abe7b0(local_res8);
  }
  local_res18[0] = lVar3;
  FUN_180ac0790(lVar3,param_2);
  FUN_18086d640(lVar3,1);
  local_res8 = *(longlong *)(lVar3 + 0x18);
  lVar4 = *(longlong *)(param_1 + 8);
  plVar1 = *(longlong **)(lVar4 + 0x10);
  if (*(longlong **)(lVar4 + 0x18) == plVar1) {
    FUN_180703330(lVar4 + 8,plVar1,&local_res8);
  }
  else {
    *plVar1 = local_res8;
    *(longlong *)(lVar4 + 0x10) = *(longlong *)(lVar4 + 0x10) + 8;
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_50,0,&local_res8,(undefined1)local_res8);
  lVar4 = *(longlong *)(param_1 + 0x18);
  lVar2 = *(longlong *)(lVar4 + 0x48);
  if (*(longlong *)(lVar4 + 0x50) == lVar2) {
    FUN_180abe420(lVar4 + 0x40,lVar2,lVar3);
  }
  else {
    FUN_180abe6e0(lVar2,lVar3);
    *(longlong *)(lVar4 + 0x48) = *(longlong *)(lVar4 + 0x48) + 200;
  }
  plVar1 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar1) {
    FUN_18080f490(param_1 + 0x38,plVar1,local_res18);
    lVar3 = local_res18[0];
  }
  else {
    *plVar1 = lVar3;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  local_res8 = FUN_1811316e0(0x68);
  lVar4 = lVar5;
  if (local_res8 != 0) {
    lVar4 = FUN_18086c550(local_res8,lVar3,param_1);
  }
  plVar1 = *(longlong **)(param_1 + 0x28);
  local_res8 = lVar4;
  if (*(longlong **)(param_1 + 0x30) == plVar1) {
    FUN_18080f490(param_1 + 0x20,plVar1,&local_res8);
  }
  else {
    *plVar1 = lVar4;
    *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 8;
  }
  local_40 = license_services::LsRelation::vftable;
  local_38 = *(undefined4 *)(lVar3 + 0x10);
  local_30 = *(ulonglong *)(lVar3 + 0x18);
  local_28 = *(undefined2 *)(lVar3 + 0x20);
  if ((0x7fffffff00000000 < (longlong)local_30) && (local_30 < 0x8000000000000000)) {
    lVar5 = 1;
  }
  if ((char)lVar5 != '\0') {
    FUN_18080c5f0(*(undefined8 *)(param_1 + 0x10),&local_40);
  }
  return *(undefined8 *)(*(longlong *)(param_1 + 0x28) + -8);
}



############ FUN_ 180ac7b80 size=786 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_180ac7b80(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined1 auStack_158 [32];
  undefined1 *local_138;
  undefined8 local_130;
  undefined8 local_120;
  undefined8 local_110;
  undefined8 local_108;
  undefined4 local_100 [3];
  uint local_f4;
  uint local_e8;
  undefined8 local_d8;
  char *local_d0 [9];
  longlong local_88;
  undefined8 local_68;
  ulonglong local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_158;
  uVar6 = (uint)&stack0x00000000;
  iVar4 = (uVar6 & 0x3aff) * (uVar6 & 0x3aff) + 1;
  uVar3 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3;
  iVar4 = (uVar6 & 0x3bff) * (uVar6 & 0x3bff) + 1;
  uVar5 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_e8 = (int)((-uVar5 | uVar5) ^ (-uVar3 | uVar3)) >> 0x1f ^ 0xac0;
  uVar5 = ((uVar6 & 0x5ff) * (uVar6 & 0x5ff) + 1) % 7;
  local_f4 = ((int)((-uVar5 | uVar5) ^ 0xffffffff) >> 0x1f | 0xb0ccU) ^ 0xbb3c;
  local_110 = 0;
  local_120 = 0x80f00;
  local_138 = &LAB_180080f00;
  local_130 = 0x180082efc;
  local_108 = param_3;
  local_d8 = param_2;
  local_88 = param_1;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_d0[0] = (char *)FUN_1811316e0(0x18);
    if (local_d0[0] != (char *)0x0) {
      FUN_1805a48c0(local_d0[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty.");
    }
    lVar1 = FUN_1805c0260();
    local_100[0] = 0x6e;
    local_d0[0] = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorauthorization.cpp"
    ;
    uVar2 = FUN_1805a21d0(*(undefined8 *)(lVar1 + 8),local_d0);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_100);
  }
  local_110 = 0xd1438787bec860bb;
  local_120 = 0xbec860bb;
  FUN_180ac6fcd();
  FUN_180ac7ea5();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180ac96c0 size=694 ############

longlong FUN_180ac96c0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x7777777777777777) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x7777777777777777) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  if (lVar5 == 0x111111111111111) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x7777777777777777) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 7) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0x111111111111111 - (uVar6 >> 1)) &&
     (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 0xf0;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0x111111111111112) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180ac9802;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180ac9802:
  lVar8 = lVar7 * 0xf0 + uVar6;
  lVar7 = lVar8 + 0xf0;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180acac10(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 0xf0) {
      FUN_180acac10(uVar9);
      uVar9 = uVar9 + 0xf0;
    }
  }
  else {
    FUN_180acbfb0(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180acbfb0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x1e) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x7777777777777777) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 7) - (lVar5 >> 0x3f)) * 0xf0)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 0xf0 + uVar6;
  param_1[2] = uVar12 * 0xf0 + uVar6;
  return lVar5 * 0xf0 + *param_1;
}



############ FUN_ 180b87d00 size=507 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b87e36) */

void FUN_180b87d00(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  undefined8 *local_80;
  uint local_68;
  uint local_64;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_80 = param_1;
  local_60 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_80 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityCountLimit::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b87c90(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar4 = (uint)&stack0x00000000;
  uVar2 = uVar4 & 0x37f;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_64 = (((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e & uVar4) + 0x9ab ^ 0x7cb;
  uVar2 = ((uVar4 & 0x6eff) * (uVar4 & 0x6eff) + 1) % 7;
  local_68 = (int)(-uVar2 | uVar2) >> 0x1f & 0x4115U ^ 0x4f25;
  FUN_180b899d0(*param_1,param_2);
  local_98 = 0xbf;
  FUN_180b87f00();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180b87c90 size=97 ############

undefined8 * FUN_180b87c90(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityCountLimit>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b896a0 size=311 ############

void FUN_180b896a0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b89830(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180ac96c0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180acac10(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0xf0;
  return;
}



############ FUN_ 180b89830 size=316 ############

longlong FUN_180b89830(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180ad07c0 size=512 ############

undefined8 FUN_180ad07c0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res18 [2];
  undefined1 local_50 [16];
  undefined **local_40;
  undefined4 local_38;
  ulonglong local_30;
  undefined2 local_28;
  
  local_res8 = FUN_1811316e0(0xf0);
  lVar5 = 0;
  lVar3 = lVar5;
  if (local_res8 != 0) {
    lVar3 = FUN_180acad20(local_res8);
  }
  local_res18[0] = lVar3;
  FUN_180acbe30(lVar3,param_2);
  FUN_180870e40(lVar3,1);
  local_res8 = *(longlong *)(lVar3 + 0x18);
  lVar4 = *(longlong *)(param_1 + 8);
  plVar1 = *(longlong **)(lVar4 + 0x10);
  if (*(longlong **)(lVar4 + 0x18) == plVar1) {
    FUN_180703330(lVar4 + 8,plVar1,&local_res8);
  }
  else {
    *plVar1 = local_res8;
    *(longlong *)(lVar4 + 0x10) = *(longlong *)(lVar4 + 0x10) + 8;
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_50,0,&local_res8,(undefined1)local_res8);
  lVar4 = *(longlong *)(param_1 + 0x18);
  lVar2 = *(longlong *)(lVar4 + 0x48);
  if (*(longlong *)(lVar4 + 0x50) == lVar2) {
    FUN_180ac96c0(lVar4 + 0x40,lVar2,lVar3);
  }
  else {
    FUN_180acac10(lVar2,lVar3);
    *(longlong *)(lVar4 + 0x48) = *(longlong *)(lVar4 + 0x48) + 0xf0;
  }
  plVar1 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar1) {
    FUN_18080f490(param_1 + 0x38,plVar1,local_res18);
    lVar3 = local_res18[0];
  }
  else {
    *plVar1 = lVar3;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  local_res8 = FUN_1811316e0(0x58);
  lVar4 = lVar5;
  if (local_res8 != 0) {
    lVar4 = FUN_18086f9a0(local_res8,lVar3,param_1);
  }
  plVar1 = *(longlong **)(param_1 + 0x28);
  local_res8 = lVar4;
  if (*(longlong **)(param_1 + 0x30) == plVar1) {
    FUN_18080f490(param_1 + 0x20,plVar1,&local_res8);
  }
  else {
    *plVar1 = lVar4;
    *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 8;
  }
  local_40 = license_services::LsRelation::vftable;
  local_38 = *(undefined4 *)(lVar3 + 0x10);
  local_30 = *(ulonglong *)(lVar3 + 0x18);
  local_28 = *(undefined2 *)(lVar3 + 0x20);
  if ((0x7fffffff00000000 < (longlong)local_30) && (local_30 < 0x8000000000000000)) {
    lVar5 = 1;
  }
  if ((char)lVar5 != '\0') {
    FUN_18080c5f0(*(undefined8 *)(param_1 + 0x10),&local_40);
  }
  return *(undefined8 *)(*(longlong *)(param_1 + 0x28) + -8);
}



############ FUN_ 180ad2100 size=679 ############

longlong FUN_180ad2100(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x118;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x118;
  if (lVar13 == 0xea0ea0ea0ea0ea) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x118;
  uVar11 = uVar12;
  if ((uVar4 <= 0xea0ea0ea0ea0ea - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x118;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0xea0ea0ea0ea0eb) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180ad223b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180ad223b:
  lVar7 = lVar1 * 0x118 + uVar4;
  lVar1 = lVar7 + 0x118;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180ad3510(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x118) {
      FUN_180ad3510(uVar8);
      uVar8 = uVar8 + 0x118;
    }
  }
  else {
    FUN_180ad4480(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180ad4480(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x23) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x118) * 0x118)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x118 + uVar4;
  param_1[2] = uVar11 * 0x118 + uVar4;
  return lVar13 * 0x118 + *param_1;
}



############ FUN_ 180ad2590 size=1903 ############

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

longlong FUN_180ad2590(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  longlong *plVar10;
  longlong lVar11;
  int iVar12;
  undefined8 *puVar13;
  uint unaff_retaddr;
  undefined1 auStack_f8 [36];
  undefined1 local_d4;
  undefined *local_c8;
  longlong local_c0;
  undefined8 local_b8;
  undefined *local_b0;
  undefined8 *local_a8;
  uint local_a0;
  uint local_9c;
  undefined8 *local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 *local_78;
  longlong local_70;
  undefined8 local_68;
  undefined8 *local_60;
  ulonglong local_40;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_f8;
  local_c0 = param_2;
  local_98 = param_1;
  local_88 = param_3;
  local_60 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorDeveloperBlock::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  local_a8 = param_1 + 7;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180b8ade0(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  puVar5 = local_a8;
  lVar4 = local_c0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  uVar8 = (uint)&stack0x00000000;
  uVar9 = uVar8 & 0x17f;
  uVar7 = uVar8 & 0x23f;
  iVar12 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  local_9c = (0x832 >> ((char)((ulonglong)
                               ((longlong)(int)((uVar9 + 2) * (uVar9 + 1) * uVar9) * 0x55555556) >>
                              0x20) * '\x03' & 0x1fU) | 0x38b7U) ^
             (((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e | 0x3d77U);
  uVar8 = uVar8 & 0x1ff;
  local_a0 = ((uVar8 + 2) * (uVar8 + 1) * uVar8) % 3 + 0x597d ^ 0x565d;
  local_90 = 0x180000000;
  local_b8 = 0x831e04;
  local_b0 = &DAT_180831e04;
  local_c8 = &DAT_1808347c0;
  lVar11 = *(longlong *)(param_2 + 0x40);
  local_70 = *(longlong *)(param_2 + 0x48);
  if (lVar11 != local_70) {
    puVar13 = (undefined8 *)(lVar11 + 0x18);
    puVar6 = param_1;
    do {
      local_c0 = FUN_1811316e0();
      if (local_c0 == 0) {
        local_80 = 0;
      }
      else {
        local_80 = FUN_1808730a0(local_c0,lVar11,puVar6);
      }
      puVar6 = (undefined8 *)param_1[5];
      if ((undefined8 *)param_1[6] == puVar6) {
        FUN_18080f490(param_1 + 4,puVar6,&local_80);
      }
      else {
        *puVar6 = local_80;
        param_1[5] = param_1[5] + 8;
      }
      puVar6 = (undefined8 *)FUN_1811316e0(0x118);
      local_a8 = puVar6;
      if (puVar6 == (undefined8 *)0x0) {
        puVar6 = (undefined8 *)0x0;
      }
      else {
        *puVar6 = license_services::LsDeveloperBlockWire::vftable;
        puVar6[1] = license_services::LsRelation::vftable;
        *(undefined4 *)(puVar6 + 2) = 0xffffffff;
        puVar6[3] = 0xffffffffffffffff;
        *(undefined2 *)(puVar6 + 4) = 0;
        *(undefined1 *)(puVar6 + 5) = 0;
        *(undefined4 *)((longlong)puVar6 + 0x2c) = 0;
        *(undefined1 *)(puVar6 + 6) = 0;
        puVar6[7] = 0;
        puVar6[8] = 0;
        puVar6[9] = 0;
        puVar6[10] = 0;
        puVar6[0xb] = 0;
        puVar6[0xc] = 0;
        puVar6[0xd] = 0;
        puVar6[0x10] = 0;
        puVar6[0x11] = 0xf;
        *(undefined1 *)(puVar6 + 0xe) = 0;
        FUN_1805a6cb0(puVar6 + 0xe,&DAT_181baf991,0);
        puVar6[0x14] = 0;
        puVar6[0x15] = 0xf;
        *(undefined1 *)(puVar6 + 0x12) = 0;
        FUN_1805a6cb0(puVar6 + 0x12,&DAT_181baf991);
        puVar6[0x16] = 0;
        *(undefined1 *)(puVar6 + 0x17) = 0;
        puVar6[0x1a] = 0;
        puVar6[0x1b] = 0xf;
        *(undefined1 *)(puVar6 + 0x18) = 0;
        FUN_1805a6cb0(puVar6 + 0x18,&DAT_181baf991);
        *(undefined4 *)(puVar6 + 0x1c) = 0;
        *(undefined1 *)((longlong)puVar6 + 0xe4) = 0;
        puVar6[0x1d] = 0;
        puVar6[0x1e] = 0;
        puVar6[0x1f] = 0;
        puVar6[0x20] = 0;
        puVar6[0x21] = 0;
        *(undefined1 *)(puVar6 + 0x22) = 0;
      }
      *(undefined4 *)(puVar6 + 2) = *(undefined4 *)(puVar13 + -1);
      puVar6[3] = *puVar13;
      *(undefined2 *)(puVar6 + 4) = *(undefined2 *)(puVar13 + 1);
      *(undefined1 *)(puVar6 + 5) = *(undefined1 *)(puVar13 + 2);
      *(undefined4 *)((longlong)puVar6 + 0x2c) = *(undefined4 *)((longlong)puVar13 + 0x14);
      *(undefined1 *)(puVar6 + 6) = *(undefined1 *)(puVar13 + 3);
      local_78 = puVar6;
      FUN_1805b9910(puVar6 + 7,puVar13 + 4);
      FUN_1805b9910(puVar6 + 10,puVar13 + 7);
      *(undefined4 *)(puVar6 + 0xd) = *(undefined4 *)(puVar13 + 10);
      *(undefined4 *)((longlong)puVar6 + 0x6c) = *(undefined4 *)((longlong)puVar13 + 0x54);
      plVar10 = puVar13 + 0xb;
      if (puVar6 + 0xe != plVar10) {
        if (0xf < (ulonglong)puVar13[0xe]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(puVar6 + 0xe,plVar10,puVar13[0xd]);
      }
      plVar10 = puVar13 + 0xf;
      if (puVar6 + 0x12 != plVar10) {
        if (0xf < (ulonglong)puVar13[0x12]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(puVar6 + 0x12,plVar10,puVar13[0x11]);
      }
      *(undefined4 *)(puVar6 + 0x16) = *(undefined4 *)(puVar13 + 0x13);
      *(undefined4 *)((longlong)puVar6 + 0xb4) = *(undefined4 *)((longlong)puVar13 + 0x9c);
      *(undefined1 *)(puVar6 + 0x17) = *(undefined1 *)(puVar13 + 0x14);
      plVar10 = puVar13 + 0x15;
      if (puVar6 + 0x18 != plVar10) {
        if (0xf < (ulonglong)puVar13[0x18]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(puVar6 + 0x18,plVar10,puVar13[0x17]);
      }
      *(undefined4 *)(puVar6 + 0x1c) = *(undefined4 *)(puVar13 + 0x19);
      *(undefined1 *)((longlong)puVar6 + 0xe4) = *(undefined1 *)((longlong)puVar13 + 0xcc);
      if (puVar6 + 0x1d != puVar13 + 0x1a) {
        FUN_1807fecd0(puVar6 + 0x1d,puVar13[0x1a],puVar13[0x1b],local_d4);
      }
      uVar1 = *(undefined4 *)((longlong)puVar13 + 0xec);
      uVar2 = *(undefined4 *)(puVar13 + 0x1e);
      uVar3 = *(undefined4 *)((longlong)puVar13 + 0xf4);
      *(undefined4 *)(puVar6 + 0x20) = *(undefined4 *)(puVar13 + 0x1d);
      *(undefined4 *)((longlong)puVar6 + 0x104) = uVar1;
      *(undefined4 *)(puVar6 + 0x21) = uVar2;
      *(undefined4 *)((longlong)puVar6 + 0x10c) = uVar3;
      *(undefined1 *)(puVar6 + 0x22) = *(undefined1 *)(puVar13 + 0x1f);
      if ((undefined8 *)puVar5[2] == (undefined8 *)puVar5[1]) {
        FUN_18080f490(puVar5);
      }
      else {
        *(undefined8 *)puVar5[1] = puVar6;
        puVar5[1] = puVar5[1] + 8;
      }
      lVar11 = lVar11 + 0x118;
      puVar13 = puVar13 + 0x23;
      local_70 = *(longlong *)(lVar4 + 0x48);
      puVar6 = local_98;
    } while (lVar11 != local_70);
  }
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  return ~(~((~(ulonglong)unaff_retaddr + 1 ^ 0xffffffffffffffff) + 1) + 1) + 1;
}



############ FUN_ 180b8ade0 size=958 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180b8b12e) overlaps instruction at (ram,0x000180b8b12d)
    */
/* WARNING: Removing unreachable block (ram,0x000180b8af27) */
/* WARNING: Removing unreachable block (ram,0x000180b8aefc) */
/* WARNING: Removing unreachable block (ram,0x000180b8b15b) */

void FUN_180b8ade0(undefined8 *param_1)

{
  undefined1 *puVar1;
  undefined1 *puVar2;
  byte bVar3;
  undefined8 *puVar4;
  int iVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined1 *puVar8;
  uint uVar9;
  uint uVar10;
  undefined1 *in_R11;
  ulonglong uVar11;
  bool bVar12;
  int unaff_retaddr;
  undefined8 auStack_b8 [2];
  undefined1 auStack_a8 [40];
  undefined4 *local_80;
  undefined8 *local_78;
  undefined *local_70;
  uint local_68;
  uint local_64;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  puVar8 = auStack_a8;
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_78 = param_1;
  local_60 = param_1;
  puVar4 = (undefined8 *)FUN_1811316e0(0x60);
  if (puVar4 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)0x0;
    local_78 = puVar4;
  }
  else {
    *puVar4 = license_services::LsEntityDeveloperBlock::vftable;
    local_78 = puVar4;
    FUN_180677c10(puVar4 + 1);
    puVar4[8] = 0;
    puVar4[9] = 0;
    puVar4[10] = 0;
    *(undefined2 *)(puVar4 + 0xb) = 0;
    puVar7 = puVar4;
  }
  *param_1 = puVar7;
  FUN_180b8ad70(param_1 + 1,puVar7);
  FUN_1805ae620(param_1,puVar7,puVar7);
  param_1[2] = *param_1;
  uVar10 = (uint)&stack0x00000000;
  uVar9 = ((uVar10 & 0x5ff) * (uVar10 & 0x5ff) * 0x10 + 4) % 0x13;
  local_68 = ((int)(-uVar9 | uVar9) >> 0x1f) * 0xf04 & 0x10a4U ^ 0x1344;
  iVar5 = (uVar10 & 0x40ff) * (uVar10 & 0x40ff) + 1;
  uVar9 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar9 = ((uVar10 & 0x61ff) * (uVar10 & 0x61ff) + 1) % 7 | (int)(uVar9 - 7) >> 0x1f & uVar9;
  local_64 = ((int)(-uVar9 | uVar9) >> 0x1f) * -0x59ea ^ 0x56da;
  local_78 = (undefined8 *)0x0;
  local_70 = &DAT_180baf868;
  local_80 = &DAT_180bb2964;
  FUN_180b8ca80(param_1[2]);
  local_78 = (undefined8 *)local_70;
  uVar11 = (longlong)local_80 - (longlong)local_70;
  do {
    uVar6 = 0;
    while( true ) {
      if ((uVar6 & 0x40) != 0) {
        bVar3 = (byte)uVar11 ^ 0x15;
        if (bVar3 == 0) {
          bRam00000000e4ee4940 = bVar3;
                    /* WARNING: Bad instruction - Truncating control flow here */
          halt_baddata();
        }
        uVar11 = (ulonglong)((uint)uVar11 ^ 0x15);
      }
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
      uVar6 = (ulonglong)uVar9;
      if (uVar9 != 0) break;
      *(undefined8 **)(puVar8 + -8) = param_1;
      bVar12 = (longlong)in_R11 < 0;
      *(undefined8 *)(puVar8 + -0x10) = 0x180b8b180;
      uVar11 = FUN_180b8b1a2();
      if (bVar12) {
        bVar12 = SBORROW8(0,(longlong)in_R11);
        puVar1 = (undefined1 *)-(longlong)in_R11;
        puVar2 = in_R11;
      }
      else {
        bVar12 = SCARRY8((longlong)((longlong)register0x00000020 + -0x6c4d9e23),0x6c4d9e23);
        puVar1 = (undefined1 *)register0x00000020;
        puVar2 = (undefined1 *)register0x00000020;
      }
      puVar8 = puVar8 + -8;
      if (puVar2 == (undefined1 *)0x0 || bVar12 != (longlong)puVar1 < 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
        halt_baddata();
      }
    }
  } while( true );
}



############ FUN_ 180b8ad70 size=97 ############

undefined8 * FUN_180b8ad70(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityDeveloperBlock>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b8c750 size=311 ############

void FUN_180b8c750(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b8c8e0(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180ad2100(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180ad3510(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x118;
  return;
}



############ FUN_ 180b8c8e0 size=316 ############

longlong FUN_180b8c8e0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180adc0e0 size=679 ############

longlong FUN_180adc0e0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x168;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x168;
  if (lVar13 == 0xb60b60b60b60b6) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x168;
  uVar11 = uVar12;
  if ((uVar4 <= 0xb60b60b60b60b6 - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x168;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0xb60b60b60b60b7) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180adc21b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180adc21b:
  lVar7 = lVar1 * 0x168 + uVar4;
  lVar1 = lVar7 + 0x168;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180adc5d0(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x168) {
      FUN_180adc5d0(uVar8);
      uVar8 = uVar8 + 0x168;
    }
  }
  else {
    FUN_180ade890(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180ade890(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x2d) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x168) * 0x168)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x168 + uVar4;
  param_1[2] = uVar11 * 0x168 + uVar4;
  return lVar13 * 0x168 + *param_1;
}



############ FUN_ 180adc770 size=1913 ############

/* WARNING: Instruction at (ram,0x000180adce12) overlaps instruction at (ram,0x000180adce11)
    */
/* WARNING: Removing unreachable block (ram,0x000180adc85d) */
/* WARNING: Removing unreachable block (ram,0x000180adc87a) */
/* WARNING: Removing unreachable block (ram,0x000180adc866) */
/* WARNING: Removing unreachable block (ram,0x000180adc88b) */

void FUN_180adc770(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  undefined4 uVar4;
  undefined8 *puVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong *plVar10;
  longlong lVar11;
  undefined8 *puVar12;
  undefined8 *puVar13;
  int unaff_retaddr;
  undefined1 auStack_f8 [32];
  undefined8 *local_d8;
  undefined1 local_c8;
  undefined8 *local_b8;
  longlong local_b0;
  undefined4 local_a4;
  uint local_a0;
  undefined8 *local_98;
  undefined8 local_90;
  undefined8 *local_88;
  undefined8 *local_80;
  longlong local_78;
  undefined8 local_70;
  undefined8 *local_68;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  local_d8 = param_2;
  local_98 = param_1;
  local_90 = param_3;
  local_68 = param_1;
  FUN_180a3bf80(param_1,param_2 + 1);
  *param_1 = license_services::LsCachedObjectVectorAuthKey::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  local_b8 = param_1 + 7;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180b8dd40(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  puVar3 = local_b8;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  local_a4 = 0xa80;
  if (((ulonglong)&stack0x00000000 & 0x1d00) == 0) {
    uVar8 = (uint)&stack0x00000000 & 0x6ff;
    uVar6 = (uint)&stack0x00000000 & 0x6eff;
    iVar7 = uVar6 * uVar6 + 1;
    uVar6 = (iVar7 >> 4) + (iVar7 >> 1) + iVar7 * 0x24924924 >> 0x1d;
    uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
    local_a0 = 0xf5cd >> ((char)(((byte)(-uVar6 >> 0x18) | (byte)(uVar6 >> 0x18)) ^
                                (byte)(-(((uVar8 + 1) * uVar8 + 7) % 0x51) >> 0x18)) >> 7 & 0x1fU);
  }
  else {
    local_a0 = 0xf5cd;
  }
  puVar5 = (undefined8 *)0x349;
  local_a0 = local_a0 ^ 0xf00d;
  lVar11 = param_2[8];
  local_78 = param_2[9];
  puVar12 = param_1;
  if (lVar11 != local_78) {
    puVar13 = (undefined8 *)(lVar11 + 0x18);
    do {
      local_b0 = FUN_1811316e0(0x58);
      puVar5 = (undefined8 *)0x0;
      if (local_b0 != 0) {
        puVar5 = (undefined8 *)FUN_18088c870(local_b0,lVar11,local_98);
      }
      puVar12 = (undefined8 *)param_1[5];
      local_88 = puVar5;
      if ((undefined8 *)param_1[6] == puVar12) {
        FUN_18080f490(param_1 + 4,puVar12,&local_88);
      }
      else {
        *puVar12 = puVar5;
        param_1[5] = param_1[5] + 8;
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0x168);
      param_2 = (undefined8 *)0x0;
      local_b8 = puVar5;
      if (puVar5 != (undefined8 *)0x0) {
        *puVar5 = license_services::LsAuthKeyWire::vftable;
        puVar5[1] = license_services::LsRelation::vftable;
        *(undefined4 *)(puVar5 + 2) = 0xffffffff;
        puVar5[3] = 0xffffffffffffffff;
        *(undefined2 *)(puVar5 + 4) = 0;
        *(undefined1 *)(puVar5 + 5) = 0;
        *(undefined8 *)((longlong)puVar5 + 0x2c) = 0;
        *(undefined1 *)((longlong)puVar5 + 0x34) = 0;
        puVar5[7] = 0;
        puVar5[8] = 0;
        puVar5[9] = 0;
        puVar5[10] = 0;
        puVar5[0xb] = 0;
        puVar5[0xc] = 0;
        puVar5[0xd] = 0;
        *(undefined4 *)(puVar5 + 0xe) = 0;
        puVar5[0x11] = 0;
        puVar5[0x12] = 0xf;
        *(undefined1 *)(puVar5 + 0xf) = 0;
        FUN_1805a6cb0(puVar5 + 0xf,&DAT_181baf991,0);
        puVar5[0x15] = 0;
        puVar5[0x16] = 0xf;
        *(undefined1 *)(puVar5 + 0x13) = 0;
        FUN_1805a6cb0(puVar5 + 0x13,&DAT_181baf991);
        *(undefined1 *)(puVar5 + 0x17) = 1;
        puVar5[0x1a] = 0;
        puVar5[0x1b] = 0xf;
        *(undefined1 *)(puVar5 + 0x18) = 0;
        FUN_1805a6cb0(puVar5 + 0x18,&DAT_181baf991);
        puVar5[0x1c] = 0;
        puVar5[0x1d] = 0;
        puVar5[0x1e] = 0;
        puVar5[0x1f] = 0;
        *(undefined1 *)(puVar5 + 0x20) = 0;
        *(undefined4 *)((longlong)puVar5 + 0x104) = 0;
        puVar5[0x23] = 0;
        puVar5[0x24] = 0xf;
        *(undefined1 *)(puVar5 + 0x21) = 0;
        FUN_1805a6cb0(puVar5 + 0x21,&DAT_181baf991);
        puVar5[0x25] = 0;
        *(undefined1 *)(puVar5 + 0x26) = 0;
        puVar5[0x27] = 0;
        puVar5[0x28] = 0;
        puVar5[0x29] = 0;
        puVar5[0x2a] = 0;
        puVar5[0x2b] = 0;
        puVar5[0x2c] = 0;
        param_2 = puVar5;
      }
      *(undefined4 *)(param_2 + 2) = *(undefined4 *)(puVar13 + -1);
      param_2[3] = *puVar13;
      *(undefined2 *)(param_2 + 4) = *(undefined2 *)(puVar13 + 1);
      *(undefined1 *)(param_2 + 5) = *(undefined1 *)(puVar13 + 2);
      *(undefined4 *)((longlong)param_2 + 0x2c) = *(undefined4 *)((longlong)puVar13 + 0x14);
      *(undefined4 *)(param_2 + 6) = *(undefined4 *)(puVar13 + 3);
      *(undefined1 *)((longlong)param_2 + 0x34) = *(undefined1 *)((longlong)puVar13 + 0x1c);
      local_80 = param_2;
      FUN_1805b9910(param_2 + 7,puVar13 + 4);
      FUN_1805b9910(param_2 + 10,puVar13 + 7);
      *(undefined4 *)(param_2 + 0xd) = *(undefined4 *)(puVar13 + 10);
      *(undefined4 *)((longlong)param_2 + 0x6c) = *(undefined4 *)((longlong)puVar13 + 0x54);
      *(undefined4 *)(param_2 + 0xe) = *(undefined4 *)(puVar13 + 0xb);
      plVar10 = puVar13 + 0xc;
      if (param_2 + 0xf != plVar10) {
        if (0xf < (ulonglong)puVar13[0xf]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(param_2 + 0xf,plVar10,puVar13[0xe]);
      }
      plVar10 = puVar13 + 0x10;
      if (param_2 + 0x13 != plVar10) {
        if (0xf < (ulonglong)puVar13[0x13]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(param_2 + 0x13,plVar10,puVar13[0x12]);
      }
      *(undefined1 *)(param_2 + 0x17) = *(undefined1 *)(puVar13 + 0x14);
      plVar10 = puVar13 + 0x15;
      if (param_2 + 0x18 != plVar10) {
        if (0xf < (ulonglong)puVar13[0x18]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(param_2 + 0x18,plVar10,puVar13[0x17]);
      }
      FUN_1805b9910(param_2 + 0x1c,puVar13 + 0x19);
      *(undefined4 *)(param_2 + 0x1f) = *(undefined4 *)(puVar13 + 0x1c);
      *(undefined4 *)((longlong)param_2 + 0xfc) = *(undefined4 *)((longlong)puVar13 + 0xe4);
      *(undefined1 *)(param_2 + 0x20) = *(undefined1 *)(puVar13 + 0x1d);
      *(undefined4 *)((longlong)param_2 + 0x104) = *(undefined4 *)((longlong)puVar13 + 0xec);
      plVar10 = puVar13 + 0x1e;
      if (param_2 + 0x21 != plVar10) {
        if (0xf < (ulonglong)puVar13[0x21]) {
          plVar10 = (longlong *)*plVar10;
        }
        FUN_1805a6cb0(param_2 + 0x21,plVar10,puVar13[0x20]);
      }
      *(undefined4 *)(param_2 + 0x25) = *(undefined4 *)(puVar13 + 0x22);
      *(undefined4 *)((longlong)param_2 + 300) = *(undefined4 *)((longlong)puVar13 + 0x114);
      *(undefined1 *)(param_2 + 0x26) = *(undefined1 *)(puVar13 + 0x23);
      if (param_2 + 0x27 != puVar13 + 0x24) {
        FUN_1807fecd0(param_2 + 0x27,puVar13[0x24],puVar13[0x25],local_c8);
      }
      uVar4 = *(undefined4 *)((longlong)puVar13 + 0x13c);
      uVar1 = *(undefined4 *)(puVar13 + 0x28);
      uVar2 = *(undefined4 *)((longlong)puVar13 + 0x144);
      *(undefined4 *)(param_2 + 0x2a) = *(undefined4 *)(puVar13 + 0x27);
      *(undefined4 *)((longlong)param_2 + 0x154) = uVar4;
      *(undefined4 *)(param_2 + 0x2b) = uVar1;
      *(undefined4 *)((longlong)param_2 + 0x15c) = uVar2;
      param_2[0x2c] = puVar13[0x29];
      puVar5 = (undefined8 *)puVar3[1];
      if ((undefined8 *)puVar3[2] == puVar5) {
        FUN_18080f490(puVar3);
      }
      else {
        *puVar5 = param_2;
        puVar3[1] = puVar3[1] + 8;
      }
      lVar11 = lVar11 + 0x168;
      puVar13 = puVar13 + 0x2d;
      local_78 = local_d8[9];
      puVar12 = local_98;
    } while (lVar11 != local_78);
  }
  do {
    uVar9 = 0;
                    /* WARNING: Call to offcut address within same function */
    func_0x000180adcdbb();
    if ((uVar9 & 0x41) != 0) {
      param_2 = (undefined8 *)0x49dcf749;
    }
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar4 = FUN_180aded80();
  *(undefined4 *)(puVar12[3] + 0x38) = uVar4;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar4 = FUN_180adceee();
                    /* WARNING: Could not recover jumptable at 0x000180adcfdb. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)((longlong)param_2 + -0x2b2a))(uVar4,puVar5);
  return;
}



############ FUN_ 180b8dd40 size=516 ############

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

longlong FUN_180b8dd40(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  ulonglong uVar2;
  uint uVar3;
  undefined4 unaff_retaddr;
  undefined1 auStack_a8 [32];
  undefined8 *local_88;
  undefined4 local_70;
  uint local_6c;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_88 = param_1;
  local_60 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_88 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityAuthKey::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b8dcd0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar3 = (uint)&stack0x00000000 & 0x4ff;
  uVar3 = (uVar3 * uVar3 * 0x10 + 4) % 0x13;
  local_6c = (int)(-uVar3 | uVar3) >> 0x1f & 0xd4abU ^ 0xdb2b;
  local_70 = 0x970;
  uVar2 = FUN_180b8df44();
  *(undefined4 *)(param_2 & 0xffffffff) = unaff_retaddr;
  return -((uVar2 ^ 0xffffffffffffffff) + 1);
}



############ FUN_ 180b8dcd0 size=97 ############

undefined8 * FUN_180b8dcd0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityAuthKey>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b8f6a0 size=311 ############

void FUN_180b8f6a0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b8f830(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180adc0e0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180adc5d0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x168;
  return;
}



############ FUN_ 180b8f830 size=316 ############

longlong FUN_180b8f830(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180ae78b0 size=489 ############

void FUN_180ae78b0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  undefined8 *puVar10;
  longlong local_res20;
  
  lVar4 = FUN_180ae6930();
  if (lVar4 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar4 + 8),param_2 + 8);
    }
  }
  else {
    puVar8 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar7 = (undefined8 *)puVar8[1];
    puVar10 = puVar8;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar5 = puVar7;
      do {
        if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
          puVar6 = (undefined8 *)puVar5[2];
        }
        else {
          if ((*(char *)((longlong)puVar8 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar5[4])) {
            puVar8 = puVar5;
          }
          puVar6 = (undefined8 *)*puVar5;
          puVar10 = puVar5;
        }
        puVar5 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
    }
    puVar5 = puVar10;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar7[4]) {
          puVar6 = (undefined8 *)*puVar7;
          puVar8 = puVar7;
        }
        else {
          puVar6 = (undefined8 *)puVar7[2];
        }
        puVar7 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    while (puVar5 != puVar8) {
      puVar7 = (undefined8 *)puVar5[2];
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar7 + 0x19);
        puVar5 = puVar7;
        puVar7 = (undefined8 *)*puVar7;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar7 + 0x19);
          puVar5 = puVar7;
          puVar7 = (undefined8 *)*puVar7;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar6 = (undefined8 *)puVar5[1];
        puVar7 = puVar5;
        while ((puVar5 = puVar6, cVar1 == '\0' && (puVar7 == (undefined8 *)puVar5[2]))) {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar6 = (undefined8 *)puVar5[1];
          puVar7 = puVar5;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar10);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar4 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar9 = lVar4 * 0x230 + *(longlong *)(lVar2 + 0x40);
    lVar3 = *(longlong *)(lVar2 + 0x48);
    lVar4 = lVar9 + 0x230;
    if (lVar4 != lVar3) {
      lVar9 = lVar9 - lVar4;
      do {
        FUN_1808b4830(lVar4 + lVar9,lVar4);
        lVar4 = lVar4 + 0x230;
      } while (lVar4 != lVar3);
    }
    puVar8 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x230);
    (**(code **)*puVar8)(puVar8,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x230;
  }
  return;
}



############ FUN_ 180ae8370 size=694 ############

longlong FUN_180ae8370(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  if (lVar5 == 0xc30c30c30c30c3) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0xc30c30c30c30c3 - (uVar6 >> 1)) && (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)
     ) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 0x150;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0xc30c30c30c30c4) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180ae84b2;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180ae84b2:
  lVar8 = lVar7 * 0x150 + uVar6;
  lVar7 = lVar8 + 0x150;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180ae9b50(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 0x150) {
      FUN_180ae9b50(uVar9);
      uVar9 = uVar9 + 0x150;
    }
  }
  else {
    FUN_180aeac50(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180aeac50(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x2a) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 8) - (lVar5 >> 0x3f)) * 0x150)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 0x150 + uVar6;
  param_1[2] = uVar12 * 0x150 + uVar6;
  return lVar5 * 0x150 + *param_1;
}



############ FUN_ 180b90620 size=1526 ############

/* WARNING: Removing unreachable block (ram,0x000180b906fa) */
/* WARNING: Removing unreachable block (ram,0x000180b9093f) */
/* WARNING: Removing unreachable block (ram,0x000180b908ee) */
/* WARNING: Removing unreachable block (ram,0x000180b908fc) */
/* WARNING: Removing unreachable block (ram,0x000180b908f0) */
/* WARNING: Removing unreachable block (ram,0x000180b9094c) */

void FUN_180b90620(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  uint uVar3;
  longlong *plVar4;
  longlong *plVar5;
  uint uVar6;
  undefined **ppuVar7;
  uint uVar8;
  longlong *plVar9;
  uint *puVar10;
  longlong lVar11;
  int unaff_retaddr;
  undefined1 auStack_a8 [32];
  undefined **local_88;
  undefined *local_80;
  uint local_78;
  uint local_74;
  undefined8 local_70;
  longlong local_68;
  undefined4 local_60;
  uint local_5c;
  undefined8 *local_58;
  undefined8 local_50;
  undefined4 local_40;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_88 = (undefined **)param_1;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_88 = (undefined **)puVar1;
  if (puVar1 != (undefined8 *)0x0) {
    *puVar1 = license_services::LsEntityTimeLimit::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b905b0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar8 = (uint)&stack0x00000000 & 0x25ff;
  uVar8 = (uVar8 * uVar8 + 1) % 7;
  local_5c = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x96ea ^ 0x951a;
  local_60 = 0x780;
  do {
    FUN_180b900a6();
    FUN_180b900a6();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_88 = &PTR__guard_check_icall_181bab6a8;
  local_80 = &DAT_181bab6b8;
  plVar5 = (longlong *)&DAT_186f01000;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_70 = 0x556efb6ea2f2b0c6;
  local_68 = CONCAT44(local_68._4_4_,0x2a9f735b);
  FUN_180b92640(param_1[2],param_2);
  uVar8 = ((uint)local_68 >> 0xf ^ (uint)local_68) >> 6 & 0x1f;
  uVar3 = (uint)local_68 ^ (uVar8 << 0xf | uVar8) << 6;
  local_68 = (longlong)local_80 - (longlong)local_88;
  uVar6 = 0x12d9fc08;
  uVar3 = uVar3 + 0xc0e21ea0;
  uVar8 = (uVar3 >> 0xf ^ uVar3) >> 5 & 0x3f;
  uVar3 = (uVar8 << 0xf | uVar8) << 5 ^ uVar3;
  uVar3 = uVar3 >> 8 | uVar3 << 0x18;
  uVar8 = (uVar3 >> 8 ^ uVar3) >> 0xb & 0xf;
  uVar3 = (uVar8 << 8 | uVar8) << 0xb ^ uVar3;
  lVar11 = 0;
  ppuVar7 = local_88;
  if (local_68 == 0) {
LAB_180b90bfc:
    local_74 = uVar6;
    FUN_180b90c42();
    return;
  }
LAB_180b90a91:
  if ((plVar5 != (longlong *)0x0) && (lVar2 = *plVar5, -1 < lVar2)) {
    local_88 = (undefined **)0x2621fc0;
    do {
      if (ppuVar7 < IMAGE_DOS_HEADER_180000000.e_magic + lVar2 + 8) {
        if (-1 < lVar2) {
          plVar4 = (longlong *)(lVar2 + 0x180000000);
          if (plVar4 < (longlong *)((longlong)ppuVar7 + 4U)) {
            local_40 = *(undefined4 *)ppuVar7;
            plVar9 = plVar5;
            goto LAB_180b90b10;
          }
        }
        break;
      }
      plVar5 = plVar5 + 1;
      lVar2 = *plVar5;
    } while (-1 < lVar2);
  }
  goto LAB_180b90b30;
  while (plVar4 = (longlong *)(lVar2 + 0x180000000), plVar4 < (longlong *)((longlong)ppuVar7 + 4U))
  {
LAB_180b90b10:
    *(longlong *)(&stack0x00017fffffc0 + (lVar2 - (longlong)ppuVar7)) = *plVar4 + -0x180000000;
    plVar9 = plVar9 + 1;
    lVar2 = *plVar9;
    if (lVar2 < 0) break;
  }
LAB_180b90b30:
  do {
    puVar10 = &local_78;
    uVar8 = FUN_180b90c3e(0x5f3c);
    *puVar10 = uVar8;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_78 = (local_78 * uVar3 >> 0x18 ^ local_78 * uVar3) * uVar3;
  uVar6 = uVar6 * uVar3 ^ local_78;
  lVar11 = lVar11 + 4;
  ppuVar7 = (undefined **)((longlong)ppuVar7 + 4);
  if (lVar11 == local_68) goto LAB_180b90bfc;
  goto LAB_180b90a91;
}



############ FUN_ 180b905b0 size=97 ############

undefined8 * FUN_180b905b0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityTimeLimit>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b92310 size=311 ############

void FUN_180b92310(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b924a0(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180ae8370(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180ae9b50(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x150;
  return;
}



############ FUN_ 180b924a0 size=316 ############

longlong FUN_180b924a0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180aeefc0 size=512 ############

undefined8 FUN_180aeefc0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res18 [2];
  undefined1 local_50 [16];
  undefined **local_40;
  undefined4 local_38;
  ulonglong local_30;
  undefined2 local_28;
  
  local_res8 = FUN_1811316e0(0x150);
  lVar5 = 0;
  lVar3 = lVar5;
  if (local_res8 != 0) {
    lVar3 = FUN_1809d4770(local_res8);
  }
  local_res18[0] = lVar3;
  FUN_180aeaa40(lVar3,param_2);
  FUN_1808bc930(lVar3,1);
  local_res8 = *(longlong *)(lVar3 + 0x18);
  lVar4 = *(longlong *)(param_1 + 8);
  plVar1 = *(longlong **)(lVar4 + 0x10);
  if (*(longlong **)(lVar4 + 0x18) == plVar1) {
    FUN_180703330(lVar4 + 8,plVar1,&local_res8);
  }
  else {
    *plVar1 = local_res8;
    *(longlong *)(lVar4 + 0x10) = *(longlong *)(lVar4 + 0x10) + 8;
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_50,0,&local_res8,(undefined1)local_res8);
  lVar4 = *(longlong *)(param_1 + 0x18);
  lVar2 = *(longlong *)(lVar4 + 0x48);
  if (*(longlong *)(lVar4 + 0x50) == lVar2) {
    FUN_180ae8370(lVar4 + 0x40,lVar2,lVar3);
  }
  else {
    FUN_180ae9b50(lVar2,lVar3);
    *(longlong *)(lVar4 + 0x48) = *(longlong *)(lVar4 + 0x48) + 0x150;
  }
  plVar1 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar1) {
    FUN_18080f490(param_1 + 0x38,plVar1,local_res18);
    lVar3 = local_res18[0];
  }
  else {
    *plVar1 = lVar3;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  local_res8 = FUN_1811316e0(0x58);
  lVar4 = lVar5;
  if (local_res8 != 0) {
    lVar4 = FUN_1808bb6f0(local_res8,lVar3,param_1);
  }
  plVar1 = *(longlong **)(param_1 + 0x28);
  local_res8 = lVar4;
  if (*(longlong **)(param_1 + 0x30) == plVar1) {
    FUN_18080f490(param_1 + 0x20,plVar1,&local_res8);
  }
  else {
    *plVar1 = lVar4;
    *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 8;
  }
  local_40 = license_services::LsRelation::vftable;
  local_38 = *(undefined4 *)(lVar3 + 0x10);
  local_30 = *(ulonglong *)(lVar3 + 0x18);
  local_28 = *(undefined2 *)(lVar3 + 0x20);
  if ((0x7fffffff00000000 < (longlong)local_30) && (local_30 < 0x8000000000000000)) {
    lVar5 = 1;
  }
  if ((char)lVar5 != '\0') {
    FUN_18080c5f0(*(undefined8 *)(param_1 + 0x10),&local_40);
  }
  return *(undefined8 *)(*(longlong *)(param_1 + 0x28) + -8);
}



############ FUN_ 180af11e0 size=679 ############

longlong FUN_180af11e0(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x1d0;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x1d0;
  if (lVar13 == 0x8d3dcb08d3dcb0) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x1d0;
  uVar11 = uVar12;
  if ((uVar4 <= 0x8d3dcb08d3dcb0 - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x1d0;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0x8d3dcb08d3dcb1) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180af131b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180af131b:
  lVar7 = lVar1 * 0x1d0 + uVar4;
  lVar1 = lVar7 + 0x1d0;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_1809d2c90(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x1d0) {
      FUN_1809d2c90(uVar8);
      uVar8 = uVar8 + 0x1d0;
    }
  }
  else {
    FUN_180af3320(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180af3320(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x3a) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x1d0) * 0x1d0)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x1d0 + uVar4;
  param_1[2] = uVar11 * 0x1d0 + uVar4;
  return lVar13 * 0x1d0 + *param_1;
}



############ FUN_ 180b95360 size=311 ############

void FUN_180b95360(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b954f0(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180af11e0(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_1809d2c90(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x1d0;
  return;
}



############ FUN_ 180b954f0 size=316 ############

longlong FUN_180b954f0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180af7b40 size=690 ############

longlong FUN_180af7b40(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar6 = (longlong)(param_2 - uVar12) / 6 + ((longlong)(param_2 - uVar12) >> 0x3f);
  lVar7 = (lVar6 >> 6) - (lVar6 >> 0x3f);
  lVar6 = (longlong)(param_1[1] - uVar12) / 0x180;
  if (lVar6 == 0xaaaaaaaaaaaaaa) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar6 + 1;
  uVar3 = (longlong)(param_1[2] - uVar12) / 0x180;
  uVar12 = uVar13;
  if ((uVar3 <= 0xaaaaaaaaaaaaaa - (uVar3 >> 1)) && (uVar12 = (uVar3 >> 1) + uVar3, uVar12 < uVar13)
     ) {
    uVar12 = uVar13;
  }
  uVar3 = uVar12 * 0x180;
  lVar6 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0xaaaaaaaaaaaaab) {
    if (uVar3 < 0x1000) {
      if (uVar3 == 0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_1811316e0(uVar3);
      }
      goto LAB_180af7c7c;
    }
  }
  else {
    uVar3 = 0xffffffffffffffff;
  }
  uVar5 = uVar3 + 0x27;
  if (uVar5 <= uVar3) {
    uVar5 = 0xffffffffffffffff;
  }
  lVar4 = FUN_1811316e0(uVar5);
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar3 = lVar4 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar3 - 8) = lVar4;
LAB_180af7c7c:
  lVar8 = lVar7 * 0x180 + uVar3;
  lVar7 = lVar8 + 0x180;
  lVar4 = lVar7;
  uVar11 = uVar3;
  FUN_180af9260(lVar8,param_3);
  uVar5 = param_1[1];
  if (param_2 == uVar5) {
    uVar9 = uVar3;
    for (uVar11 = *param_1; uVar11 != uVar5; uVar11 = uVar11 + 0x180) {
      FUN_180af9260(uVar9);
      uVar9 = uVar9 + 0x180;
    }
  }
  else {
    FUN_180afa8d0(param_1,*param_1,param_2,uVar3,uVar13,lVar6,lVar4,uVar11,puVar14,uVar15);
    FUN_180afa8d0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x30) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar2) / 0x180) * 0x180)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar3;
  param_1[1] = uVar13 * 0x180 + uVar3;
  param_1[2] = uVar12 * 0x180 + uVar3;
  return lVar6 * 0x180 + *param_1;
}



############ FUN_ 180b966d0 size=682 ############

/* WARNING: Removing unreachable block (ram,0x000180b96899) */
/* WARNING: Removing unreachable block (ram,0x000180b9690e) */
/* WARNING: Removing unreachable block (ram,0x000180b967e6) */

void FUN_180b966d0(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined1 auStack_a8 [40];
  undefined8 *local_80;
  undefined8 *local_70;
  uint local_64;
  uint local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_70 = param_1;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_80 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntityExpirationWarning::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180b96660(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar4 = (uint)&stack0x00000000;
  uVar2 = uVar4 & 0x1bf;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_64 = ((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e ^ 0xb00;
  uVar2 = uVar4 & 0x23f;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  uVar2 = ((uVar4 & 0xbff) * (uVar4 & 0xbff) * 0x10 + 4) % 0x13;
  local_60 = 0xc010 >> ((byte)(((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e) & 0x1f) ^
             ((int)(-uVar2 | uVar2) >> 0x1f) * -0xce30;
  FUN_180b98520(*param_1,param_2);
  FUN_180b9697e();
  return;
}



############ FUN_ 180b96660 size=97 ############

undefined8 * FUN_180b96660(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityExpirationWarning>::vftable
    ;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180b981f0 size=311 ############

void FUN_180b981f0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180b98380(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180af7b40(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180af9260(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x180;
  return;
}



############ FUN_ 180b98380 size=316 ############

longlong FUN_180b98380(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180afdab0 size=512 ############

undefined8 FUN_180afdab0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res18 [2];
  undefined1 local_50 [16];
  undefined **local_40;
  undefined4 local_38;
  ulonglong local_30;
  undefined2 local_28;
  
  local_res8 = FUN_1811316e0(0x180);
  lVar5 = 0;
  lVar3 = lVar5;
  if (local_res8 != 0) {
    lVar3 = FUN_1809d3ba0(local_res8);
  }
  local_res18[0] = lVar3;
  FUN_180afa650(lVar3,param_2);
  FUN_180afe750(lVar3,1);
  local_res8 = *(longlong *)(lVar3 + 0x18);
  lVar4 = *(longlong *)(param_1 + 8);
  plVar1 = *(longlong **)(lVar4 + 0x10);
  if (*(longlong **)(lVar4 + 0x18) == plVar1) {
    FUN_180703330(lVar4 + 8,plVar1,&local_res8);
  }
  else {
    *plVar1 = local_res8;
    *(longlong *)(lVar4 + 0x10) = *(longlong *)(lVar4 + 0x10) + 8;
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_50,0,&local_res8,(undefined1)local_res8);
  lVar4 = *(longlong *)(param_1 + 0x18);
  lVar2 = *(longlong *)(lVar4 + 0x48);
  if (*(longlong *)(lVar4 + 0x50) == lVar2) {
    FUN_180af7b40(lVar4 + 0x40,lVar2,lVar3);
  }
  else {
    FUN_180af9260(lVar2,lVar3);
    *(longlong *)(lVar4 + 0x48) = *(longlong *)(lVar4 + 0x48) + 0x180;
  }
  plVar1 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar1) {
    FUN_18080f490(param_1 + 0x38,plVar1,local_res18);
    lVar3 = local_res18[0];
  }
  else {
    *plVar1 = lVar3;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  local_res8 = FUN_1811316e0(0x68);
  lVar4 = lVar5;
  if (local_res8 != 0) {
    lVar4 = FUN_180afdeb0(local_res8,lVar3,param_1);
  }
  plVar1 = *(longlong **)(param_1 + 0x28);
  local_res8 = lVar4;
  if (*(longlong **)(param_1 + 0x30) == plVar1) {
    FUN_18080f490(param_1 + 0x20,plVar1,&local_res8);
  }
  else {
    *plVar1 = lVar4;
    *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 8;
  }
  local_40 = license_services::LsRelation::vftable;
  local_38 = *(undefined4 *)(lVar3 + 0x10);
  local_30 = *(ulonglong *)(lVar3 + 0x18);
  local_28 = *(undefined2 *)(lVar3 + 0x20);
  if ((0x7fffffff00000000 < (longlong)local_30) && (local_30 < 0x8000000000000000)) {
    lVar5 = 1;
  }
  if ((char)lVar5 != '\0') {
    FUN_18080c5f0(*(undefined8 *)(param_1 + 0x10),&local_40);
  }
  return *(undefined8 *)(*(longlong *)(param_1 + 0x28) + -8);
}



############ FUN_ 180afe9e0 size=570 ############

undefined8 FUN_180afe9e0(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorexpirationwarning.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorexpirationwarning.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_180afbfe0(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180afbd90(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 180afed20 size=569 ############

undefined8 FUN_180afed20(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorlicense.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorlicense.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_1808b7490(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_1808b7240(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 180aff0b0 size=570 ############

undefined8 FUN_180aff0b0(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectoractivationinfo.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectoractivationinfo.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_180af4cb0(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180af4a60(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 180b039f0 size=214 ############

void FUN_180b039f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsActivationInfo::targetSlowPath: The LsActivationInfoWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsactivationinfo.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180b03e60 size=77 ############

undefined8 * FUN_180b03e60(undefined8 param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x128);
  if (puVar1 != (undefined8 *)0x0) {
    FUN_1806d2580(puVar1,param_1);
    *puVar1 = pace::ActivationException::vftable;
    return puVar1;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 180b1e3f0 size=607 ############

/* WARNING: Instruction at (ram,0x000180b1e65d) overlaps instruction at (ram,0x000180b1e65c)
    */
/* WARNING: Removing unreachable block (ram,0x000180b1e4ba) */
/* WARNING: Removing unreachable block (ram,0x000180b1e657) */

undefined8 FUN_180b1e3f0(longlong param_1,undefined8 *param_2,undefined1 param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  int iVar3;
  uint uVar4;
  undefined8 *puVar5;
  uint uVar6;
  uint uVar7;
  longlong lVar8;
  int unaff_retaddr;
  undefined1 auStack_398 [64];
  undefined1 local_358;
  undefined4 uStack_350;
  undefined8 *local_348;
  undefined4 local_328 [4];
  uint local_318;
  uint local_314;
  longlong local_308;
  char *local_300 [5];
  undefined8 local_2d8;
  undefined1 local_278;
  undefined8 local_268;
  undefined8 local_260;
  ulonglong local_40;
  
  local_2d8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_398;
  uVar6 = (uint)&stack0x00000000;
  iVar3 = (uVar6 & 0x12ff) * (uVar6 & 0x12ff) + 1;
  uVar4 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  if ((((int)(uVar4 - 7) >> 0x1f & uVar4) >> 0xc & 1) == 0) {
    uVar4 = ((uVar6 & 0x4ff) + 1) * (uVar6 & 0x4ff) + 0x503f & 0x80000001;
  }
  else {
    iVar3 = (uVar6 & 0x10ff) * (uVar6 & 0x10ff) + 1;
    uVar4 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
    uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  }
  local_318 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0x11ba ^ 0x1d5a;
  uVar7 = uVar6 & 0x2bf;
  uVar4 = ((uVar6 & 0x3cff) + 1) * (uVar6 & 0x3cff) + 7;
  local_314 = -(0 >> ((char)uVar4 + (char)(uVar4 / 0x51) * -0x51 & 0x1fU)) - 0x1021U & 0xadde ^
              0xa5ee << ((char)(((uVar7 + 2) * (uVar7 + 1) * uVar7) / 3) * -3 & 0x1fU);
  puVar5 = (undefined8 *)0x0;
  local_268 = 0;
  local_260 = 0xf;
  local_278 = 0;
  local_358 = 0;
  local_308 = param_1;
  if ((int)param_2[1] == (int)*param_2) {
    local_348 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_348 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_348,"No ASN1 bytes provided");
    }
    puVar1 = (undefined8 *)FUN_1811316e0(0x18);
    local_348 = puVar1;
    if (puVar1 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
      *puVar1 = pace::PaceLocationInfoFormatter::vftable;
      puVar5 = puVar1;
    }
    local_328[0] = 0x4f;
    local_300[0] = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp";
    uVar2 = FUN_1805a21d0(puVar5[1],local_300);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar2,local_328);
  }
  *(undefined1 *)(param_1 + 0x28) = param_3;
  do {
    lVar8 = (longlong)param_2 + param_1;
    param_1 = param_1 - lVar8;
    param_2 = (undefined8 *)-param_1;
    param_1 = lVar8 + param_1;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_348 = (undefined8 *)*param_2;
  uStack_350 = 0x811c9e07;
  uVar2 = func_0x000180b201a6();
  return uVar2;
}



############ FUN_ 180b1fac0 size=1693 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180b1ff33) overlaps instruction at (ram,0x000180b1ff32)
    */
/* WARNING: Removing unreachable block (ram,0x000180b1fbfd) */
/* WARNING: Removing unreachable block (ram,0x000180b1ff32) */

void FUN_180b1fac0(longlong param_1,undefined8 param_2,char *param_3)

{
  int *piVar1;
  char cVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  char cVar6;
  uint uVar7;
  int unaff_retaddr;
  undefined4 local_a0 [2];
  undefined4 local_98 [2];
  uint local_90;
  uint local_8c;
  char *local_88;
  char *local_80 [2];
  undefined8 local_70;
  
  local_70 = 0xfffffffffffffffe;
  if (((ulonglong)&stack0x00000000 & 0x380) == 0) {
    uVar7 = 0x1dfb1b94;
  }
  else {
    uVar7 = (uint)&stack0x00000000 & 0x1dff;
    uVar7 = (uVar7 * uVar7 * 0x10 + 4) % 0x13;
  }
  local_90 = ((int)(-uVar7 | uVar7) >> 0x1f ^ 0xf30fU) & 0x4e5d;
  uVar7 = (uint)&stack0x00000000 & 0x23f;
  local_8c = 0xcb16 >> ((char)((ulonglong)
                               ((longlong)(int)((uVar7 + 2) * (uVar7 + 1) * uVar7) * 0x55555556) >>
                              0x20) * -3 & 0x1fU) ^ 0xc126;
  if (*(longlong *)(param_1 + 0x10) != 0) {
    LOCK();
    piVar1 = (int *)(*(longlong *)(param_1 + 0x10) + 8);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    cVar6 = -0x37;
    FUN_180b1f9f5();
    param_3 = (char *)-(longlong)param_3;
    if (cVar6 != '\0') {
      param_3 = (char *)(~(ulonglong)param_3 + 1);
    }
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  if (*(longlong *)(param_1 + 8) == 0) {
    lVar3 = FUN_1811316e0(0x18);
    if (lVar3 != 0) {
      FUN_1805a48c0(lVar3,"No items to parse");
    }
    puVar4 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar4 == (undefined8 *)0x0) {
      puVar4 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
      *puVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_a0[0] = 0xb6;
    local_88 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp";
    uVar5 = FUN_1805a21d0(puVar4[1],&local_88);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_a0);
  }
  cVar6 = *param_3;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  cVar2 = param_3[1];
  do {
    FUN_180b25439();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  if ((cVar6 == '\x01') && (*(char *)(*(longlong *)(param_1 + 8) + 8) == cVar2)) {
    do {
      FUN_180b1ea60();
      FUN_180b20dd7();
      FUN_180b21dad();
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
                    /* WARNING: Call to offcut address within same function */
    func_0x000180b201bf();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  lVar3 = FUN_1811316e0(0x18);
  if (lVar3 != 0) {
    FUN_1805a48c0(lVar3,"The top-most item does not match the first item in the path");
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar4 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar4,"|__FILE__|%s|__LINE__|%d");
    *puVar4 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_98[0] = 0xbf;
  local_80[0] = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp"
  ;
  uVar5 = FUN_1805a21d0(puVar4[1],local_80);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar5,local_98);
}



############ FUN_ 180b22800 size=3194 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_180b22800(longlong *param_1,longlong *param_2,char *param_3,int param_4,longlong param_5,
                  longlong *param_6,undefined1 param_7)

{
  int *piVar1;
  undefined8 *puVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  ulonglong uVar6;
  char cVar7;
  int iVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined4 *puVar11;
  longlong *plVar12;
  undefined8 **ppuVar13;
  longlong lVar14;
  void *pvVar15;
  undefined8 *puVar16;
  void *pvVar17;
  undefined1 *puVar18;
  longlong *plVar19;
  char *pcVar20;
  undefined1 auStack_308 [32];
  longlong local_2e8;
  void **local_2e0;
  undefined1 local_2d8;
  undefined1 local_2c8 [4];
  uint local_2c4 [3];
  undefined8 local_2b8;
  undefined8 uStack_2b0;
  int local_2a8;
  undefined8 *local_2a0;
  longlong *local_298;
  undefined4 local_290 [2];
  undefined4 local_288 [2];
  undefined4 local_280 [2];
  undefined4 local_278 [2];
  longlong local_270;
  longlong *local_268;
  longlong *local_260;
  longlong *local_258;
  longlong *local_250;
  longlong *local_248;
  longlong *local_240;
  char *local_238;
  longlong *local_230;
  void *local_220;
  undefined4 uStack_218;
  undefined4 uStack_214;
  ulonglong local_210;
  undefined8 *local_208;
  char *local_200;
  char *local_1f8;
  char *local_1f0;
  char *local_1e8;
  undefined8 *local_1e0;
  longlong *local_1d8;
  longlong *local_1d0;
  longlong *local_1c8;
  undefined4 local_1b8;
  undefined4 uStack_1b4;
  undefined4 uStack_1b0;
  undefined4 uStack_1ac;
  undefined8 local_1a8;
  longlong local_1a0;
  longlong *local_198;
  longlong local_190;
  longlong local_188;
  undefined8 *local_180;
  longlong local_178;
  undefined8 *local_170;
  longlong *local_168;
  undefined8 local_160 [2];
  ulonglong local_150;
  ulonglong local_148;
  undefined1 local_140;
  undefined7 uStack_13f;
  undefined8 local_130;
  ulonglong local_128;
  undefined1 local_120;
  undefined7 uStack_11f;
  undefined8 local_110;
  ulonglong local_108;
  undefined1 local_100;
  undefined7 uStack_ff;
  undefined8 local_f0;
  ulonglong local_e8;
  undefined1 local_e0;
  undefined7 uStack_df;
  undefined8 local_d0;
  ulonglong local_c8;
  undefined4 local_c0;
  undefined4 uStack_bc;
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  undefined4 local_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined4 local_90;
  undefined4 uStack_8c;
  undefined4 uStack_88;
  undefined4 uStack_84;
  undefined4 local_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  ulonglong local_40;
  
  local_1a8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_308;
  local_270 = param_5;
  local_1d8 = param_6;
  local_168 = param_6;
  local_2b8 = (longlong *)0x0;
  uStack_2b0 = (longlong *)0x0;
  local_2a8 = param_4;
  local_298 = param_1;
  local_238 = param_3;
  local_230 = param_2;
  local_198 = param_2;
  FUN_1805a4070(local_160,param_6);
  local_2c8[0] = param_7;
  if (local_148 - local_150 < 4) {
    local_2e8 = 4;
    FUN_1805a1320(local_160,4,0,&DAT_181c124c4);
  }
  else {
    puVar18 = (undefined1 *)local_160;
    if (0xf < local_148) {
      puVar18 = (undefined1 *)CONCAT71(local_160[0]._1_7_,(undefined1)local_160[0]);
    }
    puVar18 = puVar18 + local_150;
    local_150 = local_150 + 4;
    memmove(puVar18,&DAT_181c124c4,4);
    puVar18[4] = 0;
    param_5 = local_270;
  }
  if ((*param_2 == 0) || (param_5 == 0)) {
    local_2a0 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_2a0 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_2a0,"The ASN1 item pointer or cert instance pointer is NULL");
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_2a0 = puVar9;
    if (puVar9 == (undefined8 *)0x0) {
      puVar9 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_290[0] = 0x188;
    local_200 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp"
    ;
    uVar10 = FUN_1805a21d0(puVar9[1],&local_200);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_290);
  }
  if ((param_3 == (char *)0x0) || ((param_4 + 1U & 0xfffffffe) == 0)) {
    local_2a0 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_2a0 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_2a0,"decodeContainer: 1: The ASN1 bytes have a bad header or content size"
                   );
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0x18);
    local_2a0 = puVar9;
    if (puVar9 == (undefined8 *)0x0) {
      puVar9 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
      *puVar9 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_288[0] = 0x18e;
    local_1f8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp"
    ;
    uVar10 = FUN_1805a21d0(puVar9[1],&local_1f8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar10,local_288);
  }
  plVar19 = uStack_2b0;
  if (param_4 != 0) {
    do {
      iVar8 = FUN_180a00950(local_270,param_3,local_2c4);
      if (iVar8 == -1) {
        local_188 = FUN_1811316e0(0x18);
        if (local_188 != 0) {
          FUN_1805a48c0(local_188,
                        "decodeContainer: 2: The ASN1 bytes have a bad header or content size");
        }
        puVar9 = (undefined8 *)FUN_1811316e0(0x18);
        local_180 = puVar9;
        if (puVar9 == (undefined8 *)0x0) {
          puVar9 = (undefined8 *)0x0;
        }
        else {
          FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
          *puVar9 = pace::PaceLocationInfoFormatter::vftable;
        }
        local_280[0] = 0x19f;
        local_1f0 = 
        "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp";
        uVar10 = FUN_1805a21d0(puVar9[1],&local_1f0);
                    /* WARNING: Subroutine does not return */
        FUN_1805b20d0(uVar10,local_280);
      }
      pcVar20 = param_3 + local_2c4[0];
      cVar7 = FUN_180ba3c40(*param_3,pcVar20,iVar8,local_2c8);
      if (cVar7 == '\0') {
        plVar12 = (longlong *)0x0;
        if ((char)param_1[5] != '\0') {
          local_d0 = 0;
          local_c8 = 0xf;
          local_e0 = 0;
          FUN_1805a6cb0(&local_e0,&DAT_181bb8e08,1);
          puVar11 = (undefined4 *)FUN_180a1e7b0(&local_e0,0,local_160);
          local_60 = *puVar11;
          uStack_5c = puVar11[1];
          uStack_58 = puVar11[2];
          uStack_54 = puVar11[3];
          local_50 = puVar11[4];
          uStack_4c = puVar11[5];
          uStack_48 = puVar11[6];
          uStack_44 = puVar11[7];
          *(undefined8 *)(puVar11 + 4) = 0;
          *(undefined8 *)(puVar11 + 6) = 0xf;
          *(undefined1 *)puVar11 = 0;
          local_110 = 0;
          local_108 = 0xf;
          local_120 = 0;
          FUN_1805a6cb0(&local_120,&DAT_181bb54d0,1);
          puVar11 = (undefined4 *)FUN_180a1e7b0(&local_120,0,local_160);
          local_80 = *puVar11;
          uStack_7c = puVar11[1];
          uStack_78 = puVar11[2];
          uStack_74 = puVar11[3];
          local_70 = puVar11[4];
          uStack_6c = puVar11[5];
          uStack_68 = puVar11[6];
          uStack_64 = puVar11[7];
          *(undefined8 *)(puVar11 + 4) = 0;
          *(undefined8 *)(puVar11 + 6) = 0xf;
          *(undefined1 *)puVar11 = 0;
          FUN_180b225f0(&local_80,&local_60,local_2c4[0] + iVar8,param_3);
          if (0xf < CONCAT44(uStack_64,uStack_68)) {
            pvVar17 = (void *)CONCAT44(uStack_7c,local_80);
            pvVar15 = pvVar17;
            if ((0xfff < CONCAT44(uStack_64,uStack_68) + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          if (0xf < local_108) {
            pvVar17 = (void *)CONCAT71(uStack_11f,local_120);
            pvVar15 = pvVar17;
            if ((0xfff < local_108 + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          local_110 = 0;
          local_108 = 0xf;
          local_120 = 0;
          if (0xf < CONCAT44(uStack_44,uStack_48)) {
            pvVar17 = (void *)CONCAT44(uStack_5c,local_60);
            pvVar15 = pvVar17;
            if ((0xfff < CONCAT44(uStack_44,uStack_48) + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          if (0xf < local_c8) {
            pvVar17 = (void *)CONCAT71(uStack_df,local_e0);
            pvVar15 = pvVar17;
            if ((0xfff < local_c8 + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
        }
        local_1a0 = FUN_1811316e0(0x38);
        if (local_1a0 != 0) {
          plVar12 = (longlong *)FUN_180b24b00(local_1a0);
        }
        local_258 = plVar12;
        FUN_180a0c310(&local_250,plVar12);
        FUN_1805ae620(&local_258,plVar12,plVar12);
        plVar12 = local_258;
        local_240 = local_258;
        local_258 = local_2b8;
        local_2b8 = plVar12;
        uStack_2b0 = local_250;
        local_250 = plVar19;
        if (plVar19 != (longlong *)0x0) {
          LOCK();
          plVar12 = plVar19 + 1;
          lVar14 = *plVar12;
          *(int *)plVar12 = (int)*plVar12 + -1;
          UNLOCK();
          if ((int)lVar14 == 1) {
            (**(code **)(*plVar19 + 8))(plVar19);
            LOCK();
            piVar1 = (int *)((longlong)plVar19 + 0xc);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*plVar19 + 0x10))(plVar19);
            }
          }
        }
        plVar19 = uStack_2b0;
        *(char *)(local_240 + 1) = *param_3;
        if (iVar8 != 0) {
          (**(code **)(*local_240 + 0x40))(local_240,pcVar20,iVar8);
        }
      }
      else {
        if (*param_3 == '\x03') {
          if (*pcVar20 != '\0') {
            local_178 = FUN_1811316e0(0x18);
            if (local_178 != 0) {
              FUN_1805a48c0(local_178,"This parser does not support unued bits in a bit string");
            }
            puVar9 = (undefined8 *)FUN_1811316e0(0x18);
            local_170 = puVar9;
            if (puVar9 == (undefined8 *)0x0) {
              puVar9 = (undefined8 *)0x0;
            }
            else {
              FUN_1805a48c0(puVar9,"|__FILE__|%s|__LINE__|%d");
              *puVar9 = pace::PaceLocationInfoFormatter::vftable;
            }
            local_278[0] = 0x1b0;
            local_1e8 = 
            "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1parser.cpp";
            uVar10 = FUN_1805a21d0(puVar9[1],&local_1e8);
                    /* WARNING: Subroutine does not return */
            FUN_1805b20d0(uVar10,local_278);
          }
          pcVar20 = pcVar20 + 1;
          local_2c4[0] = local_2c4[0] + 1;
          iVar8 = iVar8 + -1;
        }
        plVar12 = (longlong *)0x0;
        if ((char)local_298[5] != '\0') {
          local_f0 = 0;
          local_e8 = 0xf;
          local_100 = 0;
          FUN_1805a6cb0(&local_100,&DAT_181bb8e08,1);
          puVar11 = (undefined4 *)FUN_180a1e7b0(&local_100,0,local_160);
          local_a0 = *puVar11;
          uStack_9c = puVar11[1];
          uStack_98 = puVar11[2];
          uStack_94 = puVar11[3];
          local_90 = puVar11[4];
          uStack_8c = puVar11[5];
          uStack_88 = puVar11[6];
          uStack_84 = puVar11[7];
          *(undefined8 *)(puVar11 + 4) = 0;
          *(undefined8 *)(puVar11 + 6) = 0xf;
          *(undefined1 *)puVar11 = 0;
          local_130 = 0;
          local_128 = 0xf;
          local_140 = 0;
          FUN_1805a6cb0(&local_140,&DAT_181bcb544,1);
          puVar11 = (undefined4 *)FUN_180a1e7b0(&local_140,0,local_160);
          local_c0 = *puVar11;
          uStack_bc = puVar11[1];
          uStack_b8 = puVar11[2];
          uStack_b4 = puVar11[3];
          local_b0 = puVar11[4];
          uStack_ac = puVar11[5];
          uStack_a8 = puVar11[6];
          uStack_a4 = puVar11[7];
          *(undefined8 *)(puVar11 + 4) = 0;
          *(undefined8 *)(puVar11 + 6) = 0xf;
          *(undefined1 *)puVar11 = 0;
          FUN_180b225f0(&local_c0,&local_a0,local_2c4[0],param_3);
          if (0xf < CONCAT44(uStack_a4,uStack_a8)) {
            pvVar17 = (void *)CONCAT44(uStack_bc,local_c0);
            pvVar15 = pvVar17;
            if ((0xfff < CONCAT44(uStack_a4,uStack_a8) + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          if (0xf < local_128) {
            pvVar17 = (void *)CONCAT71(uStack_13f,local_140);
            pvVar15 = pvVar17;
            if ((0xfff < local_128 + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          local_130 = 0;
          local_128 = 0xf;
          local_140 = 0;
          if (0xf < CONCAT44(uStack_84,uStack_88)) {
            pvVar17 = (void *)CONCAT44(uStack_9c,local_a0);
            pvVar15 = pvVar17;
            if ((0xfff < CONCAT44(uStack_84,uStack_88) + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
          if (0xf < local_e8) {
            pvVar17 = (void *)CONCAT71(uStack_ff,local_100);
            pvVar15 = pvVar17;
            if ((0xfff < local_e8 + 1) &&
               (pvVar15 = *(void **)((longlong)pvVar17 + -8),
               0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar15);
          }
        }
        local_190 = FUN_1811316e0(0x38);
        if (local_190 != 0) {
          plVar12 = (longlong *)FUN_180b23940(local_190);
        }
        local_268 = plVar12;
        FUN_180a0c2a0(&local_260,plVar12);
        FUN_1805ae620(&local_268,plVar12);
        plVar12 = local_268;
        local_248 = local_268;
        local_268 = local_2b8;
        local_2b8 = plVar12;
        uStack_2b0 = local_260;
        local_260 = plVar19;
        if (plVar19 != (longlong *)0x0) {
          LOCK();
          plVar12 = plVar19 + 1;
          lVar14 = *plVar12;
          *(int *)plVar12 = (int)*plVar12 + -1;
          UNLOCK();
          if ((int)lVar14 == 1) {
            (**(code **)(*plVar19 + 8))(plVar19);
            LOCK();
            piVar1 = (int *)((longlong)plVar19 + 0xc);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)(*plVar19 + 0x10))(plVar19);
            }
          }
        }
        uVar6 = local_150;
        plVar5 = local_248;
        plVar12 = uStack_2b0;
        *(char *)(local_248 + 1) = *param_3;
        param_1 = local_298;
        plVar19 = uStack_2b0;
        if (iVar8 != 0) {
          pvVar15 = (void *)0x0;
          local_210 = 0;
          local_208 = (undefined8 *)0x0;
          puVar9 = local_160;
          if (0xf < local_148) {
            puVar9 = (undefined8 *)CONCAT71(local_160[0]._1_7_,(undefined1)local_160[0]);
          }
          if (local_150 < 0x10) {
            local_220 = (void *)*puVar9;
            uStack_218 = *(undefined4 *)(puVar9 + 1);
            uStack_214 = *(undefined4 *)((longlong)puVar9 + 0xc);
            local_208 = (undefined8 *)0xf;
          }
          else {
            local_1e0 = (undefined8 *)0x7fffffffffffffff;
            local_2a0 = (undefined8 *)(local_150 | 0xf);
            ppuVar13 = &local_1e0;
            if ((undefined8 *)(local_150 | 0xf) < (undefined8 *)0x8000000000000000) {
              ppuVar13 = &local_2a0;
            }
            puVar4 = *ppuVar13;
            puVar2 = (undefined8 *)((longlong)puVar4 + 1);
            if (puVar2 < (undefined8 *)0x1000) {
              if (puVar2 != (undefined8 *)0x0) {
                pvVar15 = (void *)FUN_1811316e0(puVar2);
              }
            }
            else {
              puVar16 = puVar4 + 5;
              if (puVar16 <= puVar2) {
                puVar16 = (undefined8 *)0xffffffffffffffff;
              }
              lVar14 = FUN_1811316e0(puVar16);
              if (lVar14 == 0) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
              pvVar15 = (void *)(lVar14 + 0x27U & 0xffffffffffffffe0);
              *(longlong *)((longlong)pvVar15 - 8) = lVar14;
            }
            local_220 = pvVar15;
            memcpy(pvVar15,puVar9,uVar6 + 1);
            local_208 = puVar4;
          }
          param_1 = local_298;
          local_210 = uVar6;
          plVar19 = plVar12;
          if (plVar12 != (longlong *)0x0) {
            LOCK();
            *(int *)(plVar12 + 1) = (int)plVar12[1] + 1;
            UNLOCK();
            plVar19 = uStack_2b0;
          }
          local_2d8 = local_2c8[0];
          local_2e0 = &local_220;
          local_2e8 = local_270;
          local_1d0 = plVar5;
          local_1c8 = plVar12;
          (**(code **)(*local_298 + 0x28))(local_298,&local_1d0,pcVar20,iVar8);
          local_2c8[0] = param_7;
          param_3 = local_238;
        }
      }
      plVar12 = (longlong *)*local_230;
      local_1b8 = (undefined4)local_2b8;
      uStack_1b4 = local_2b8._4_4_;
      uStack_1b0 = (undefined4)uStack_2b0;
      uStack_1ac = uStack_2b0._4_4_;
      if (plVar19 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar19 + 1) = (int)plVar19[1] + 1;
        UNLOCK();
        plVar19 = uStack_2b0;
      }
      (**(code **)(*plVar12 + 8))(plVar12,&local_1b8);
      local_2a8 = local_2a8 - (local_2c4[0] + iVar8);
      param_3 = param_3 + (local_2c4[0] + iVar8);
      local_238 = param_3;
    } while (local_2a8 != 0);
    local_2a8 = 0;
    param_6 = local_1d8;
  }
  plVar12 = uStack_2b0;
  if (0xf < local_148) {
    pvVar17 = (void *)CONCAT71(local_160[0]._1_7_,(undefined1)local_160[0]);
    pvVar15 = pvVar17;
    if ((0xfff < local_148 + 1) &&
       (pvVar15 = *(void **)((longlong)pvVar17 + -8),
       0x1f < (ulonglong)((longlong)pvVar17 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar15);
  }
  local_150 = 0;
  local_148 = 0xf;
  local_160[0]._0_1_ = 0;
  if (plVar19 != (longlong *)0x0) {
    LOCK();
    plVar19 = plVar19 + 1;
    lVar14 = *plVar19;
    *(int *)plVar19 = (int)*plVar19 + -1;
    UNLOCK();
    if ((int)lVar14 == 1) {
      (**(code **)(*uStack_2b0 + 8))(uStack_2b0);
      LOCK();
      piVar1 = (int *)((longlong)plVar12 + 0xc);
      iVar8 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar8 == 1) {
        (**(code **)(*uStack_2b0 + 0x10))();
      }
    }
  }
  plVar19 = (longlong *)local_230[1];
  if (plVar19 != (longlong *)0x0) {
    LOCK();
    plVar12 = plVar19 + 1;
    lVar14 = *plVar12;
    *(int *)plVar12 = (int)*plVar12 + -1;
    UNLOCK();
    if ((int)lVar14 == 1) {
      (**(code **)(*plVar19 + 8))(plVar19);
      LOCK();
      piVar1 = (int *)((longlong)plVar19 + 0xc);
      iVar8 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar8 == 1) {
        (**(code **)(*plVar19 + 0x10))(plVar19);
      }
    }
  }
  if ((ulonglong)param_6[3] < 0x10) {
    param_6[2] = 0;
    param_6[3] = 0xf;
    *(undefined1 *)param_6 = 0;
  }
  pvVar15 = (void *)*param_6;
  pvVar17 = pvVar15;
  if ((0xfff < param_6[3] + 1U) &&
     (pvVar17 = *(void **)((longlong)pvVar15 + -8),
     0x1f < (ulonglong)((longlong)pvVar15 + (-8 - (longlong)pvVar17)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar17);
}



############ FUN_ 180b23570 size=561 ############

longlong FUN_180b23570(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  void *pvVar6;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  undefined8 *puVar11;
  void *_Memory;
  undefined8 *puVar12;
  undefined8 *puVar13;
  ulonglong uVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  lVar3 = *param_1;
  lVar7 = param_1[1] - lVar3 >> 4;
  if (lVar7 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar7 + 1;
  uVar9 = param_1[2] - lVar3 >> 4;
  uVar8 = uVar1;
  if ((uVar9 <= 0xfffffffffffffff - (uVar9 >> 1)) && (uVar8 = (uVar9 >> 1) + uVar9, uVar8 < uVar1))
  {
    uVar8 = uVar1;
  }
  uVar9 = uVar8 << 4;
  if (uVar8 < 0x1000000000000000) {
    uVar14 = uVar9;
    if (uVar9 < 0x1000) {
      if (uVar9 == 0) {
        puVar13 = (undefined8 *)0x0;
      }
      else {
        puVar13 = (undefined8 *)FUN_1811316e0();
      }
      goto LAB_180b2365d;
    }
  }
  else {
    uVar14 = 0xffffffffffffffff;
  }
  uVar10 = uVar14 + 0x27;
  if (uVar10 <= uVar14) {
    uVar10 = 0xffffffffffffffff;
  }
  lVar7 = FUN_1811316e0(uVar10);
  if (lVar7 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  puVar13 = (undefined8 *)(lVar7 + 0x27U & 0xffffffffffffffe0);
  puVar13[-1] = lVar7;
LAB_180b2365d:
  uVar14 = (longlong)param_2 - lVar3 & 0xfffffffffffffff0;
  puVar11 = (undefined8 *)((longlong)puVar13 + uVar14);
  *puVar11 = *param_3;
  lVar3 = param_3[1];
  puVar11[1] = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  puVar4 = (undefined8 *)param_1[1];
  puVar12 = (undefined8 *)*param_1;
  if (param_2 == puVar4) {
    puVar11 = puVar13;
    if (puVar12 != puVar4) {
      lVar7 = (longlong)puVar12 - (longlong)puVar13;
      lVar3 = 8 - (longlong)puVar12;
      do {
        *puVar11 = *puVar12;
        plVar2 = (longlong *)((longlong)puVar13 + lVar3 + (longlong)puVar12);
        lVar5 = *(longlong *)((longlong)plVar2 + lVar7);
        *plVar2 = lVar5;
        if (lVar5 != 0) {
          LOCK();
          *(int *)(lVar5 + 8) = *(int *)(lVar5 + 8) + 1;
          UNLOCK();
        }
        puVar11 = puVar11 + 2;
        puVar12 = puVar12 + 2;
      } while (puVar12 != puVar4);
    }
    FUN_180b234f0(puVar11,puVar11,param_1);
  }
  else {
    FUN_180b24a90(param_1,puVar12,param_2,puVar13,uVar8,uVar9,puVar11 + 2,uVar15);
    FUN_180b24a90(param_1,param_2,param_1[1],puVar11 + 2);
  }
  if (*param_1 == 0) {
    *param_1 = (longlong)puVar13;
    param_1[1] = (longlong)(puVar13 + uVar1 * 2);
    param_1[2] = uVar9 + (longlong)puVar13;
    return *param_1 + uVar14;
  }
  FUN_180b234f0(*param_1,param_1[1],param_1);
  pvVar6 = (void *)*param_1;
  _Memory = pvVar6;
  if ((0xfff < (param_1[2] - (longlong)pvVar6 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar6 + -8),
     0x1f < (ulonglong)((longlong)pvVar6 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180ba34f0 size=648 ############

void FUN_180ba34f0(char param_1,undefined8 param_2,longlong param_3,undefined8 param_4)

{
  char cVar1;
  char cVar2;
  char cVar3;
  char *pcVar4;
  undefined8 uVar5;
  uint uVar6;
  char local_res8 [8];
  undefined4 local_res10 [2];
  char *local_res18;
  
  cVar1 = (char)param_2;
  local_res8[0] = param_1;
  if (param_1 == '\0') {
    local_res18 = (char *)FUN_1811316e0(0x18);
    if (local_res18 != (char *)0x0) {
      FUN_1805a48c0(local_res18,"Can\'t encode an Asn.1 object without a type identifier");
    }
    pcVar4 = (char *)FUN_1811316e0(0x18);
    if (pcVar4 == (char *)0x0) {
      pcVar4 = (char *)0x0;
    }
    else {
      local_res18 = pcVar4;
      FUN_1805a48c0(pcVar4,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar4 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res10[0] = 0x6f;
    local_res18 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
    uVar5 = FUN_1805a21d0(*(undefined8 *)(pcVar4 + 8),&local_res18);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar5,local_res10);
  }
  pcVar4 = *(char **)(param_3 + 8);
  if (*(char **)(param_3 + 0x10) == pcVar4) {
    FUN_1805b0850(param_3,pcVar4,local_res8,param_4,0xfffffffffffffffe);
  }
  else {
    *pcVar4 = param_1;
    *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
  }
  uVar6 = (uint)param_2;
  if (uVar6 < 0x80) goto LAB_180ba3610;
  pcVar4 = *(char **)(param_3 + 8);
  if (uVar6 < 0x100) {
    local_res8[0] = -0x7f;
    if (*(char **)(param_3 + 0x10) != pcVar4) {
      *pcVar4 = -0x7f;
      *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
      goto LAB_180ba3610;
    }
  }
  else {
    cVar2 = (char)((ulonglong)param_2 >> 8);
    if (uVar6 < 0x10000) {
      local_res8[0] = -0x7e;
      if (*(char **)(param_3 + 0x10) == pcVar4) {
LAB_180ba3655:
        FUN_1805b0850(param_3,pcVar4,local_res8);
      }
      else {
        *pcVar4 = -0x7e;
        *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
      }
    }
    else {
      cVar3 = (char)((ulonglong)param_2 >> 0x10);
      if (0xffffff < uVar6) {
        local_res8[0] = -0x7c;
        if (*(char **)(param_3 + 0x10) == pcVar4) {
          FUN_1805b0850(param_3,pcVar4,local_res8);
        }
        else {
          *pcVar4 = -0x7c;
          *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
        }
        local_res8[0] = (char)((ulonglong)param_2 >> 0x18);
        FUN_180ba3ce0(param_3,&local_res18,*(undefined8 *)(param_3 + 8),local_res8);
        local_res8[0] = cVar3;
        FUN_180ba3ce0(param_3,&local_res18,*(undefined8 *)(param_3 + 8),local_res8);
        local_res8[0] = cVar2;
        FUN_180ba3ce0(param_3,&local_res18,*(undefined8 *)(param_3 + 8),local_res8);
        local_res8[0] = cVar1;
        FUN_180ba3ce0(param_3,&local_res18,*(undefined8 *)(param_3 + 8),local_res8);
        return;
      }
      local_res8[0] = -0x7d;
      if (*(char **)(param_3 + 0x10) == pcVar4) {
        FUN_1805b0850(param_3,pcVar4,local_res8);
      }
      else {
        *pcVar4 = -0x7d;
        *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
      }
      pcVar4 = *(char **)(param_3 + 8);
      local_res8[0] = cVar3;
      if (*(char **)(param_3 + 0x10) == pcVar4) goto LAB_180ba3655;
      *pcVar4 = cVar3;
      *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
    }
    pcVar4 = *(char **)(param_3 + 8);
    local_res8[0] = cVar2;
    if (*(char **)(param_3 + 0x10) != pcVar4) {
      *pcVar4 = cVar2;
      *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
      goto LAB_180ba3610;
    }
  }
  FUN_1805b0850(param_3,pcVar4,local_res8);
LAB_180ba3610:
  pcVar4 = *(char **)(param_3 + 8);
  if (*(char **)(param_3 + 0x10) == pcVar4) {
    local_res8[0] = cVar1;
    FUN_1805b0850(param_3,pcVar4,local_res8);
    return;
  }
  *pcVar4 = cVar1;
  *(longlong *)(param_3 + 8) = *(longlong *)(param_3 + 8) + 1;
  return;
}



############ FUN_ 180b23c90 size=1177 ############

/* WARNING: Instruction at (ram,0x000180b245d3) overlaps instruction at (ram,0x000180b245d1)
    */
/* WARNING: Possible PIC construction at 0x000180b24525: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x000180b2452a) */
/* WARNING: Removing unreachable block (ram,0x000180b2454b) */
/* WARNING: Removing unreachable block (ram,0x000180b2452c) */
/* WARNING: Removing unreachable block (ram,0x000180b24541) */
/* WARNING: Removing unreachable block (ram,0x000180b24551) */
/* WARNING: Removing unreachable block (ram,0x000180b24558) */
/* WARNING: Removing unreachable block (ram,0x000180b24561) */
/* WARNING: Removing unreachable block (ram,0x000180b2455d) */
/* WARNING: Removing unreachable block (ram,0x000180b2453f) */
/* WARNING: Removing unreachable block (ram,0x000180b24542) */
/* WARNING: Removing unreachable block (ram,0x000180b24568) */
/* WARNING: Removing unreachable block (ram,0x000180b2457a) */
/* WARNING: Removing unreachable block (ram,0x000180b24581) */
/* WARNING: Removing unreachable block (ram,0x000180b24585) */
/* WARNING: Removing unreachable block (ram,0x000180b245a3) */
/* WARNING: Removing unreachable block (ram,0x000180b245ad) */
/* WARNING: Removing unreachable block (ram,0x000180b245c2) */
/* WARNING: Removing unreachable block (ram,0x000180b245d3) */
/* WARNING: Removing unreachable block (ram,0x000180b245dd) */
/* WARNING: Removing unreachable block (ram,0x000180b245f4) */
/* WARNING: Removing unreachable block (ram,0x000180b245fb) */
/* WARNING: Removing unreachable block (ram,0x000180b245ff) */
/* WARNING: Removing unreachable block (ram,0x000180b24643) */
/* WARNING: Removing unreachable block (ram,0x000180b24668) */
/* WARNING: Removing unreachable block (ram,0x000180b24666) */
/* WARNING: Removing unreachable block (ram,0x000180b24669) */
/* WARNING: Removing unreachable block (ram,0x000180b2466f) */
/* WARNING: Removing unreachable block (ram,0x000180b246a9) */
/* WARNING: Removing unreachable block (ram,0x000180b246b0) */
/* WARNING: Removing unreachable block (ram,0x000180b246b4) */
/* WARNING: Removing unreachable block (ram,0x000180b24710) */
/* WARNING: Removing unreachable block (ram,0x000180b2473d) */
/* WARNING: Removing unreachable block (ram,0x000180b2471f) */
/* WARNING: Removing unreachable block (ram,0x000180b24744) */
/* WARNING: Removing unreachable block (ram,0x000180b24757) */
/* WARNING: Removing unreachable block (ram,0x000180b2475e) */
/* WARNING: Removing unreachable block (ram,0x000180b24762) */
/* WARNING: Removing unreachable block (ram,0x000180b248e1) */
/* WARNING: Removing unreachable block (ram,0x000180b248e6) */
/* WARNING: Removing unreachable block (ram,0x000180b2494a) */
/* WARNING: Removing unreachable block (ram,0x000180b2496b) */
/* WARNING: Removing unreachable block (ram,0x000180b24997) */
/* WARNING: Removing unreachable block (ram,0x000180b2499e) */
/* WARNING: Removing unreachable block (ram,0x000180b249a6) */
/* WARNING: Removing unreachable block (ram,0x000180b249b1) */
/* WARNING: Removing unreachable block (ram,0x000180b249b4) */
/* WARNING: Removing unreachable block (ram,0x000180b249b9) */
/* WARNING: Removing unreachable block (ram,0x000180b249c7) */
/* WARNING: Removing unreachable block (ram,0x000180b24a4b) */
/* WARNING: Removing unreachable block (ram,0x000180b249ce) */
/* WARNING: Removing unreachable block (ram,0x000180b249d9) */
/* WARNING: Removing unreachable block (ram,0x000180b249ea) */
/* WARNING: Removing unreachable block (ram,0x000180b249fb) */
/* WARNING: Removing unreachable block (ram,0x000180b24a0e) */
/* WARNING: Removing unreachable block (ram,0x000180b24a18) */
/* WARNING: Removing unreachable block (ram,0x000180b24a23) */
/* WARNING: Removing unreachable block (ram,0x000180b24a2c) */
/* WARNING: Removing unreachable block (ram,0x000180b24a30) */
/* WARNING: Removing unreachable block (ram,0x000180b24777) */
/* WARNING: Removing unreachable block (ram,0x000180b245d1) */
/* WARNING: Removing unreachable block (ram,0x000180b2415f) */
/* WARNING: Removing unreachable block (ram,0x000180b243df) */
/* WARNING: Removing unreachable block (ram,0x000180b23d61) */
/* WARNING: Removing unreachable block (ram,0x000180b23ce8) */
/* WARNING: Removing unreachable block (ram,0x000180b23df0) */
/* WARNING: Removing unreachable block (ram,0x000180b241f1) */
/* WARNING: Removing unreachable block (ram,0x000180b23fe8) */
/* WARNING: Removing unreachable block (ram,0x000180b2429f) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_180b23c90(undefined8 param_1,undefined8 param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  char *pcVar8;
  undefined8 uVar9;
  int iVar10;
  uint uVar11;
  ulonglong uVar12;
  longlong lVar13;
  uint uVar14;
  uint uVar15;
  uint *puVar16;
  int unaff_retaddr;
  undefined4 local_68 [2];
  uint local_60;
  uint local_5c;
  char *local_58;
  ulonglong local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  uVar11 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x2500) == 0) {
    uVar14 = uVar11 & 0x2bf;
    uVar14 = ((uVar14 + 2) * (uVar14 + 1) * uVar14) % 3;
  }
  else {
    uVar14 = 0;
  }
  iVar10 = (uVar11 & 0x31ff) * (uVar11 & 0x31ff) + 1;
  uVar15 = (iVar10 >> 4) + (iVar10 >> 1) + iVar10 * 0x24924924 >> 0x1d;
  uVar15 = (int)(uVar15 - 7) >> 0x1f & uVar15;
  local_60 = (((int)(-uVar15 | uVar15) >> 0x1f) * -0x1038 | 0x5639U) ^ (uVar14 | 0x54b9);
  uVar14 = uVar11 & 0x33f;
  uVar14 = ((uVar14 + 2) * (uVar14 + 1) * uVar14) % 3;
  uVar12 = (ulonglong)uVar14;
  uVar11 = (((uVar11 & 0x13ff) + 1) * (uVar11 & 0x13ff) + 0x442b & 0x80000001) << (sbyte)uVar14;
  local_5c = (int)(-uVar11 | uVar11) >> 0x1f & 0x762bU ^ 0x7f0b;
  local_50 = 0x100;
  uVar14 = (((((((((DAT_181152060 * 0xc1 + DAT_181152064) * 0xc1 + DAT_181152068) * 0xc1 +
                 DAT_18115206c) * 0xc1 + DAT_181152070) * 0xc1 + DAT_181152074) * 0xc1 +
              DAT_181152078) * 0xc1 + DAT_18115207c) * 0xc1 + DAT_181152080) * 0xc1 + DAT_181152084)
           * 0xc1 + DAT_181152088;
  puVar16 = (uint *)register0x00000020;
  uVar11 = uVar14;
  do {
    if ((uVar11 & 0x140acd9) == 0) {
      puVar16 = (uint *)((longlong)puVar16 + (uVar12 - (~-uVar12 + 1)));
      uVar12 = ~-uVar12 + 1;
    }
    uVar11 = *puVar16;
    uVar15 = (uVar11 + 1) * uVar11 & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  if (param_3 != 0) {
    do {
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    do {
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    uVar14 = (((((((((((((((((((uVar14 * 0xc1 + DAT_18115208c) * 0xc1 + DAT_181152090) * 0xc1 +
                             DAT_181152094) * 0xc1 + DAT_181152098) * 0xc1 + DAT_18115209c) * 0xc1 +
                          _UNK_1811520a0) * 0xc1 + _UNK_1811520a4) * 0xc1 + _UNK_1811520a8) * 0xc1 +
                       _UNK_1811520ac) * 0xc1 + _UNK_1811520b0) * 0xc1 + _UNK_1811520b4) * 0xc1 +
                    _UNK_1811520b8) * 0xc1 + _UNK_1811520bc) * 0xc1 + _UNK_1811520c0) * 0xc1 +
                 _UNK_1811520c4) * 0xc1 + _UNK_1811520c8) * 0xc1 + _UNK_1811520cc) * 0xc1 +
              _UNK_1811520d0) * 0xc1 + _UNK_1811520d4) * 0xc1 + _UNK_1811520d8;
    uVar11 = uVar14 & 0x28ff;
    uVar11 = ((uVar11 + 1) * uVar11 + 7) % 0x51;
    uVar12 = (longlong)(((int)(-uVar11 | uVar11) >> 0x1f) * -0xc29c) ^ 0xc39c;
    lVar13 = -uVar12;
    iVar10 = *(int *)(&UNK_1811521dc + lVar13);
    iVar1 = *(int *)(&UNK_1811521e0 + lVar13);
    iVar2 = *(int *)(&UNK_1811521e4 + lVar13);
    iVar3 = *(int *)(&UNK_1811521e8 + lVar13);
    iVar4 = *(int *)(&UNK_1811521ec + lVar13);
    iVar5 = *(int *)(&UNK_1811521f0 + lVar13);
    iVar6 = *(int *)(&UNK_1811521f4 + lVar13);
    iVar7 = *(int *)(&UNK_1811521f8 + lVar13);
    do {
      func_0x000180b261a6(0xc43c,uVar12);
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    uVar11 = ((((((((((((((((uVar14 * 0xc1 + iVar10) * 0xc1 + iVar1) * 0xc1 + iVar2) * 0xc1 + iVar3)
                         * 0xc1 + iVar4) * 0xc1 + iVar5) * 0xc1 + iVar6) * 0xc1 + iVar7) * 0xc1 +
                    *(int *)(&UNK_1811521fc + lVar13)) * 0xc1 + *(int *)(&UNK_181152200 + lVar13)) *
                   0xc1 + *(int *)(&UNK_181152204 + lVar13)) * 0xc1 +
                 *(int *)(&UNK_181152208 + lVar13)) * 0xc1 + *(int *)(&UNK_18115220c + lVar13)) *
                0xc1 + *(int *)(&UNK_181152210 + lVar13)) * 0xc1 + *(int *)(&UNK_181152214 + lVar13)
              ) * 0xc1 + *(int *)(&UNK_181152218 + lVar13)) * 0xc1 +
             *(int *)(&UNK_18115221c + lVar13);
    if ((local_50 & 0x18) == 0) {
      uVar14 = uVar11 & 0x39ff;
      uVar14 = (uVar14 - 1) * uVar14 & 1;
    }
    else {
      uVar14 = (uint)local_50 & 0x3bf;
      iVar10 = (uVar14 + 2) * (uVar14 + 1) * uVar14;
      uVar14 = iVar10 + (iVar10 / 3 + (iVar10 >> 0x1f) +
                        (int)(((longlong)iVar10 / 3 + ((longlong)iVar10 >> 0x3f) & 0xffffffffU) >>
                             0x1f)) * -3;
    }
    lVar13 = lVar13 + 0xc0 + ((longlong)(int)uVar14 ^ 0x100U);
    return ((((((uVar11 * 0xc1 + *(int *)(lVar13 + 0x181152060)) * 0xc1 +
               *(int *)(lVar13 + 0x181152064)) * 0xc1 + *(int *)(lVar13 + 0x181152068)) * 0xc1 +
             *(int *)(lVar13 + 0x18115206c)) * 0xc1 + *(int *)(lVar13 + 0x181152070)) * 0xc1 +
           *(int *)(lVar13 + 0x181152074)) * 0xc1 + *(int *)(lVar13 + 0x181152078);
  }
  local_58 = (char *)FUN_1811316e0(0x18);
  if (local_58 != (char *)0x0) {
    FUN_1805a48c0(local_58,"Zero is a bad N value; 1 = first; 2 = second; etc.");
  }
  pcVar8 = (char *)FUN_1811316e0(0x18);
  if (pcVar8 == (char *)0x0) {
    pcVar8 = (char *)0x0;
  }
  else {
    local_58 = pcVar8;
    FUN_1805a48c0(pcVar8,"|__FILE__|%s|__LINE__|%d");
    *(undefined ***)pcVar8 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_68[0] = 0x84;
  local_58 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1container.cpp"
  ;
  uVar9 = FUN_1805a21d0(*(undefined8 *)(pcVar8 + 8),&local_58);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar9,local_68);
}



############ FUN_ 180b26980 size=694 ############

longlong FUN_180b26980(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  if (lVar5 == 0xc30c30c30c30c3) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0xc30c30c30c30c3 - (uVar6 >> 1)) && (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)
     ) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 0x150;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0xc30c30c30c30c4) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180b26ac2;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180b26ac2:
  lVar8 = lVar7 * 0x150 + uVar6;
  lVar7 = lVar8 + 0x150;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180b26fa0(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 0x150) {
      FUN_180b26fa0(uVar9);
      uVar9 = uVar9 + 0x150;
    }
  }
  else {
    FUN_180b292a0(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180b292a0(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x2a) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 8) - (lVar5 >> 0x3f)) * 0x150)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 0x150 + uVar6;
  param_1[2] = uVar12 * 0x150 + uVar6;
  return lVar5 * 0x150 + *param_1;
}



############ FUN_ 180ba5c50 size=311 ############

void FUN_180ba5c50(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180ba5de0(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180b26980(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180b26fa0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x150;
  return;
}



############ FUN_ 180ba5de0 size=316 ############

longlong FUN_180ba5de0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180b2ff50 size=679 ############

longlong FUN_180b2ff50(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0xb0;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0xb0;
  if (lVar13 == 0x1745d1745d1745d) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0xb0;
  uVar11 = uVar12;
  if ((uVar4 <= 0x1745d1745d1745d - (uVar4 >> 1)) &&
     (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0xb0;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0x1745d1745d1745e) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180b3008b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180b3008b:
  lVar7 = lVar1 * 0xb0 + uVar4;
  lVar1 = lVar7 + 0xb0;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180b30200(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0xb0) {
      FUN_180b30200(uVar8);
      uVar8 = uVar8 + 0xb0;
    }
  }
  else {
    FUN_180b322d0(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180b322d0(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x16) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0xb0) * 0xb0)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0xb0 + uVar4;
  param_1[2] = uVar11 * 0xb0 + uVar4;
  return lVar13 * 0xb0 + *param_1;
}



############ FUN_ 180b303b0 size=2261 ############

/* WARNING: Instruction at (ram,0x000180b30c1b) overlaps instruction at (ram,0x000180b30c19)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b309ac) */
/* WARNING: Removing unreachable block (ram,0x000180b30472) */
/* WARNING: Removing unreachable block (ram,0x000180b3097b) */
/* WARNING: Removing unreachable block (ram,0x000180b309d1) */

ulonglong FUN_180b303b0(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  byte bVar1;
  byte bVar2;
  undefined8 *puVar3;
  undefined4 uVar4;
  undefined8 *puVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  longlong *plVar11;
  longlong lVar12;
  undefined4 *puVar13;
  uint uVar14;
  uint uVar15;
  undefined4 *puVar16;
  uint uVar17;
  IMAGE_DOS_HEADER *pIVar18;
  uint *puVar19;
  undefined8 *puVar20;
  undefined1 *puVar21;
  IMAGE_DOS_HEADER *pIVar22;
  bool bVar23;
  int unaff_retaddr;
  undefined1 auStack_108 [32];
  IMAGE_DOS_HEADER *local_e8;
  undefined1 local_e0;
  uint local_d8;
  uint local_d4;
  undefined8 local_d0;
  undefined8 *local_c8;
  undefined1 *local_c0;
  longlong local_b8;
  uint local_b0;
  undefined4 local_ac;
  undefined4 *local_a8;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 *local_80;
  longlong local_78;
  undefined8 local_70;
  undefined8 *local_68;
  undefined8 *local_60;
  undefined4 local_50 [4];
  ulonglong local_40;
  
  local_70 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_c8 = param_1;
  local_98 = param_2;
  local_90 = param_3;
  local_68 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorAssociativeArray::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180ba7270(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  puVar3 = local_c8;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  local_ac = 0x790;
  uVar17 = (uint)&stack0x00000000 & 0x19ff;
  uVar17 = (uVar17 * uVar17 * 0x10 + 4) % 0x13;
  local_b0 = ((int)(-uVar17 | uVar17) >> 0x1f) * -0xeb5 ^ 0xa25;
  local_e8 = &IMAGE_DOS_HEADER_180000000;
  puVar10 = (undefined8 *)0x202136c9;
  local_a8 = (undefined4 *)0x180b30628;
  local_c0 = &LAB_180b335c4;
  do {
    uVar17 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar17 < 0) {
      uVar17 = (uVar17 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar17 != 0);
  local_b8 = 0x50fc091f15a95537;
  local_d0 = 0x15a95537;
  lVar12 = *(longlong *)(param_2 + 0x40);
  local_78 = *(longlong *)(param_2 + 0x48);
  if (lVar12 != local_78) {
    puVar20 = (undefined8 *)(lVar12 + 0x18);
    do {
      local_b8 = FUN_1811316e0();
      if (local_b8 == 0) {
        local_88 = 0;
      }
      else {
        local_88 = FUN_180b64750(local_b8,lVar12,puVar3);
      }
      puVar10 = (undefined8 *)param_1[5];
      if ((undefined8 *)param_1[6] == puVar10) {
        FUN_18080f490(param_1 + 4,puVar10,&local_88);
      }
      else {
        *puVar10 = local_88;
        param_1[5] = param_1[5] + 8;
      }
      puVar5 = (undefined8 *)FUN_1811316e0(0xb0);
      local_60 = puVar5;
      if (puVar5 == (undefined8 *)0x0) {
        puVar5 = (undefined8 *)0x0;
      }
      else {
        *puVar5 = license_services::LsAssociativeArrayWire::vftable;
        puVar5[1] = license_services::LsRelation::vftable;
        *(undefined4 *)(puVar5 + 2) = 0xffffffff;
        puVar5[3] = 0xffffffffffffffff;
        *(undefined2 *)(puVar5 + 4) = 0;
        *(undefined1 *)(puVar5 + 5) = 0;
        puVar5[8] = 0;
        puVar5[9] = 0xf;
        *(undefined1 *)(puVar5 + 6) = 0;
        FUN_1805a6cb0(puVar5 + 6,&DAT_181baf991,0);
        puVar5[0xc] = 0;
        puVar5[0xd] = 0xf;
        *(undefined1 *)(puVar5 + 10) = 0;
        FUN_1805a6cb0(puVar5 + 10,&DAT_181baf991);
        puVar5[0x10] = 0;
        puVar5[0x11] = 0xf;
        *(undefined1 *)(puVar5 + 0xe) = 0;
        FUN_1805a6cb0(puVar5 + 0xe,&DAT_181baf991);
        puVar5[0x12] = 0;
        puVar5[0x13] = 0;
        puVar5[0x14] = 0;
        *(undefined4 *)(puVar5 + 0x15) = 0;
        *(undefined2 *)((longlong)puVar5 + 0xac) = 0;
      }
      *(undefined4 *)(puVar5 + 2) = *(undefined4 *)(puVar20 + -1);
      puVar5[3] = *puVar20;
      *(undefined2 *)(puVar5 + 4) = *(undefined2 *)(puVar20 + 1);
      *(undefined1 *)(puVar5 + 5) = *(undefined1 *)(puVar20 + 2);
      plVar11 = puVar20 + 3;
      local_80 = puVar5;
      if (puVar5 + 6 != plVar11) {
        if (0xf < (ulonglong)puVar20[6]) {
          plVar11 = (longlong *)*plVar11;
        }
        FUN_1805a6cb0(puVar5 + 6,plVar11,puVar20[5]);
      }
      plVar11 = puVar20 + 7;
      if (puVar5 + 10 != plVar11) {
        if (0xf < (ulonglong)puVar20[10]) {
          plVar11 = (longlong *)*plVar11;
        }
        FUN_1805a6cb0(puVar5 + 10,plVar11,puVar20[9]);
      }
      plVar11 = puVar20 + 0xb;
      if (puVar5 + 0xe != plVar11) {
        if (0xf < (ulonglong)puVar20[0xe]) {
          plVar11 = (longlong *)*plVar11;
        }
        FUN_1805a6cb0(puVar5 + 0xe,plVar11,puVar20[0xd]);
      }
      if (puVar5 + 0x12 != puVar20 + 0xf) {
        FUN_1807fecd0(puVar5 + 0x12,puVar20[0xf],puVar20[0x10],local_e0);
      }
      *(undefined4 *)(puVar5 + 0x15) = *(undefined4 *)(puVar20 + 0x12);
      *(undefined2 *)((longlong)puVar5 + 0xac) = *(undefined2 *)((longlong)puVar20 + 0x94);
      puVar10 = (undefined8 *)param_1[8];
      if ((undefined8 *)param_1[9] == puVar10) {
        FUN_18080f490(param_1 + 7);
      }
      else {
        *puVar10 = puVar5;
        param_1[8] = param_1[8] + 8;
      }
      lVar12 = lVar12 + 0xb0;
      puVar20 = puVar20 + 0x16;
      local_78 = *(longlong *)(local_98 + 0x48);
    } while (lVar12 != local_78);
  }
  puVar16 = local_a8;
  puVar21 = local_c0;
  pIVar22 = local_e8;
  local_e8._0_4_ = 0x575705ab;
  uVar17 = 0x35a05ae8;
  puVar13 = (undefined4 *)0x5ccae7a3;
  uVar4 = FUN_180b327a0();
  *(undefined4 *)(local_c8[3] + 0x38) = uVar4;
  do {
    uVar9 = ~((longlong)puVar21 - (longlong)(puVar21 + ((ulonglong)puVar10 ^ (ulonglong)puVar21))) +
            1;
    puVar21 = puVar21 + ((ulonglong)puVar10 ^ (ulonglong)puVar21) + -uVar9;
    puVar10 = (undefined8 *)(uVar9 ^ (ulonglong)puVar21);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (uint)puVar21;
  bVar2 = (byte)puVar21;
  bVar1 = bVar2 & 0xf;
  uVar14 = uVar6 & 0x1f;
  uVar6 = ((int)((uVar6 ^ 0xfffffef9) & 0x3106) >>
           (bVar1 * bVar1 * (bVar1 + 1) * (bVar1 + 1) & 3 ^ (bVar2 + 1) * bVar2 & 1) |
          uVar6 ^ 0xf2c9) ^ 0xeb73 >> ((bVar2 + 1) * bVar2 & 1);
  local_e8 = (IMAGE_DOS_HEADER *)CONCAT44(local_e8._4_4_,uVar6);
LAB_180b30a10:
  uVar15 = (uint)puVar16;
  uVar7 = uVar15 & 0x17f;
  iVar8 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  uVar7 = (((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e ^
          uVar14 * uVar14 * (uVar14 + 1) * (uVar14 + 1) & 0x80000003) + ((uVar15 ^ 0x180) & 0x4781)
          | uVar15 ^ 0x19ba;
  bVar23 = SBORROW4(uVar6,uVar7);
  if (uVar6 == uVar7) {
    do {
      uVar9 = 0xed24;
      FUN_180b302b4();
      if ((bVar23) && ((uVar9 & 0xe700) == 0)) {
                    /* WARNING: Bad instruction - Truncating control flow here */
        halt_baddata();
      }
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
      bVar23 = false;
    } while (uVar6 != 0);
    local_d4 = uVar17;
                    /* WARNING: Call to offcut address within same function */
    func_0x000180b30877();
    FUN_180b30c9b();
    return (ulonglong)puVar13 & 0xffffffff;
  }
  puVar13 = puVar16;
  if ((pIVar22 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar12._0_1_ = pIVar22->e_magic[0], lVar12._1_1_ = pIVar22->e_magic[1],
     lVar12._2_2_ = pIVar22->e_cblp, lVar12._4_2_ = pIVar22->e_cp, lVar12._6_2_ = pIVar22->e_crlc,
     -1 < lVar12)) {
    local_98 = 0x2621fc0;
    pIVar18 = pIVar22;
    do {
      if (puVar16 < IMAGE_DOS_HEADER_180000000.e_magic + lVar12 + 8) {
        pIVar22 = pIVar18;
        if (-1 < lVar12) {
          plVar11 = (longlong *)(lVar12 + 0x180000000);
          if (plVar11 < puVar16 + 1) {
            local_50[0] = *puVar16;
            goto LAB_180b30ae0;
          }
        }
        break;
      }
      pIVar22 = (IMAGE_DOS_HEADER *)&pIVar18->e_cparhdr;
      lVar12._0_2_ = pIVar18->e_cparhdr;
      lVar12._2_2_ = pIVar18->e_minalloc;
      lVar12._4_2_ = pIVar18->e_maxalloc;
      lVar12._6_2_ = pIVar18->e_ss;
      pIVar18 = pIVar22;
    } while (-1 < lVar12);
  }
  goto LAB_180b30b00;
  while (plVar11 = (longlong *)(lVar12 + 0x180000000), plVar11 < puVar16 + 1) {
LAB_180b30ae0:
    *(longlong *)(&stack0x00017fffffb0 + (lVar12 - (longlong)puVar16)) = *plVar11 + -0x180000000;
    pIVar18 = (IMAGE_DOS_HEADER *)&pIVar18->e_cparhdr;
    lVar12 = *(longlong *)pIVar18;
    puVar13 = local_50;
    if (lVar12 < 0) break;
  }
LAB_180b30b00:
  do {
    puVar19 = &local_d8;
    uVar9 = 0xed24;
    FUN_180b2f058();
    while ((uVar9 & 0xc3) == 0) {
      while ((uVar9 & 0xc3) == 0) {
        while ((uVar9 & 0xc3) == 0) {
          if ((uVar9 & 0xc300) != 0) goto LAB_180b30b3a;
        }
      }
    }
LAB_180b30b3a:
    do {
    } while ((uVar9 & 0xc300) == 0);
    uVar6 = FUN_180b2c9d2();
    *puVar19 = uVar6;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_d8 = (local_d8 * 0x5bd1e995 >> 0x18 ^ local_d8 * 0x5bd1e995) * 0x5bd1e995;
  uVar17 = uVar17 * 0x5bd1e995 ^ local_d8;
  uVar6 = uVar17 & 0x37f;
  iVar8 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  puVar16 = (undefined4 *)
            ((longlong)puVar16 +
            (((longlong)
              (0xb250 <<
              ((char)(((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e) -
               (((char)puVar16 + -1) * (char)puVar16 & 1U) & 0x1f)) ^ 0xb258U) - 4));
  uVar6 = (uint)local_e8;
  goto LAB_180b30a10;
}



############ FUN_ 180ba7270 size=1150 ############

/* WARNING: Instruction at (ram,0x000180ba756a) overlaps instruction at (ram,0x000180ba7569)
    */
/* WARNING: Removing unreachable block (ram,0x000180ba73ed) */
/* WARNING: Removing unreachable block (ram,0x000180ba7564) */

void FUN_180ba7270(undefined8 *param_1,ulonglong param_2)

{
  char *pcVar1;
  undefined8 *puVar2;
  short *psVar3;
  char cVar4;
  uint uVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  int unaff_retaddr;
  undefined1 auStack_b8 [40];
  undefined8 local_90;
  undefined8 *local_88;
  undefined *local_80;
  undefined8 local_78;
  undefined4 local_6c;
  undefined4 local_68;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  param_2 = param_2 & 0xffffffff;
  local_88 = param_1;
  local_60 = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x60);
  local_88 = puVar2;
  if (puVar2 != (undefined8 *)0x0) {
    *puVar2 = license_services::LsEntityAssociativeArray::vftable;
    FUN_180677c10(puVar2 + 1);
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    *(undefined2 *)(puVar2 + 0xb) = 0;
  }
  *param_1 = puVar2;
  FUN_180ba7200(param_1 + 1,puVar2);
  FUN_1805ae620(param_1,puVar2,puVar2);
  param_1[2] = *param_1;
  local_6c = 0xd70;
  lVar8 = 0xd70;
  local_68 = 0xbb0;
  local_90 = 0x180ba74cc;
  local_80 = &DAT_180baa7c8;
  local_88 = (undefined8 *)0xdc7e37cbc3f3557e;
  local_78 = 0xc3f3557e;
  do {
    uVar6 = 0;
    FUN_180ba5b8c();
    if ((uVar6 & 0xc0) != 0) {
      param_1 = (undefined8 *)((ulonglong)param_1 | 0xe);
    }
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  FUN_180ba91f0(param_1[2],param_2);
  do {
    lVar7 = param_2 + lVar8;
    param_2 = ~(lVar8 - lVar7) + 1;
    lVar8 = lVar7 - param_2;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    cVar4 = (char)uVar5;
  } while (uVar5 != 0);
                    /* WARNING: Call to offcut address within same function */
  psVar3 = (short *)func_0x000180ba75ff(0,~((param_2 ^ 0xffffffffffffffff) + 1) + 1);
  uVar5 = iRam0000000147495e60 * -0x3e;
  *psVar3 = *psVar3 + (short)psVar3;
  pcVar1 = (char *)((longlong)puVar2 + -0x2a + (longlong)psVar3);
  *pcVar1 = *pcVar1 + cVar4;
                    /* WARNING: Could not recover jumptable at 0x000180ba7713. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)((ulonglong)uVar5 + 0x5196))();
  return;
}



############ FUN_ 180ba7200 size=97 ############

undefined8 * FUN_180ba7200(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityAssociativeArray>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180ba8ec0 size=311 ############

void FUN_180ba8ec0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180ba9050(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180b2ff50(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180b30200(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0xb0;
  return;
}



############ FUN_ 180ba9050 size=316 ############

longlong FUN_180ba9050(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180b377a0 size=647 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b3786b) */

void FUN_180b377a0(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  uint uVar2;
  int iVar3;
  undefined1 auStack_128 [48];
  undefined8 local_f8;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  uint local_cc;
  undefined4 local_c8;
  undefined8 local_c0;
  longlong local_b8;
  undefined8 local_a8;
  undefined8 local_78;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  uVar2 = (uint)&stack0x00000000 & 0x1bf;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_cc = 0x5374 << ((byte)(((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e) & 0x1f) ^
             0x59c4;
  local_c8 = 0x6b0;
  local_b8 = FUN_1811316e0(0xb0);
  uVar1 = 0;
  if (local_b8 != 0) {
    uVar1 = FUN_180b302c0(local_b8);
  }
  local_a8 = uVar1;
  FUN_180b321a0(uVar1,param_2);
  FUN_180b66bf0(uVar1,1);
  local_e0 = 0;
  local_e8 = 0x74f18;
  local_f8 = 0x1ffc;
  local_c0 = 0x180074f18;
  local_d8 = 0x180076f14;
  FUN_180b35e2b();
  FUN_180b37a2e();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180b38590 size=690 ############

longlong FUN_180b38590(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x140;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x140;
  if (lVar13 == 0xcccccccccccccc) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x140;
  uVar11 = uVar12;
  if ((uVar4 <= 0xcccccccccccccc - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x140;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0xcccccccccccccd) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180b386cc;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180b386cc:
  lVar7 = lVar1 * 0x140 + uVar4;
  lVar1 = lVar7 + 0x140;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180b39bb0(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x140) {
      FUN_180b39bb0(uVar8);
      uVar8 = uVar8 + 0x140;
    }
  }
  else {
    FUN_180b3ad70(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180b3ad70(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x28) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x140) * 0x140)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x140 + uVar4;
  param_1[2] = uVar11 * 0x140 + uVar4;
  return lVar13 * 0x140 + *param_1;
}



############ FUN_ 180baa320 size=1057 ############

void FUN_180baa320(undefined8 *param_1,ulonglong param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  uint uVar3;
  longlong *plVar4;
  undefined1 auStack_e8 [40];
  undefined8 uStack_c0;
  ulonglong uStack_b8;
  undefined8 uStack_b0;
  undefined1 auStack_a8 [40];
  undefined *local_80;
  undefined8 local_78;
  undefined8 *local_70;
  uint local_64;
  uint local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  uStack_b0 = 0x180baa36e;
  local_70 = param_1;
  local_58 = param_1;
  puVar2 = (undefined8 *)FUN_1811316e0(0x60);
  local_70 = puVar2;
  if (puVar2 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)0x0;
  }
  else {
    *puVar2 = license_services::LsEntityIlokAuth::vftable;
    uStack_b0 = 0x180baa38e;
    FUN_180677c10(puVar2 + 1);
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    *(undefined2 *)(puVar2 + 0xb) = 0;
  }
  *param_1 = puVar2;
  uStack_b0 = 0x180baa3c1;
  FUN_180baa2b0(param_1 + 1,puVar2);
  uStack_b0 = 0x180baa3cf;
  FUN_1805ae620(param_1,puVar2,puVar2);
  param_1[2] = *param_1;
  uVar3 = (uint)&stack0x00000000 & 0x23f;
  local_60 = 0x77b - ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3 ^ 0xaab;
  uVar3 = (uint)&stack0x00000000 & 0x38ff;
  uVar3 = (uVar3 + 1) * uVar3 + 7;
  local_64 = (0 << ((char)uVar3 + (char)(uVar3 / 0x51) * -0x51 & 0x1fU)) + 0xbe70U ^ 0xba90;
  local_70 = (undefined8 *)0x0;
  local_78 = 0x180a94b00;
  local_80 = &DAT_180a97d88;
                    /* WARNING: Call to offcut address within same function */
  uStack_c0 = 0x180baa597;
  uStack_b8 = param_2 & 0xffffffff;
  func_0x000180baa59d(&DAT_180a97d88,0x145,0xb0140a8);
  plVar4 = (longlong *)((ulonglong)auStack_e8 & 0xffffffff);
  lVar1 = plVar4[6];
  plVar4[6] = lVar1 + 0x1b6;
  plVar4[5] = lVar1 + 0x2ff9;
  plVar4[4] = lVar1 + -0x5ec2;
  plVar4[3] = lVar1 + -0x1c90;
  plVar4[2] = lVar1 + 0x1476;
  plVar4[1] = lVar1 + 0x7586;
  *plVar4 = lVar1 + 0x31d2;
  plVar4[-1] = lVar1 + -0x4bc3;
                    /* WARNING: Could not recover jumptable at 0x000180baa74b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(lVar1 + 0x23e0))();
  return;
}



############ FUN_ 180baa2b0 size=97 ############

undefined8 * FUN_180baa2b0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntityIlokAuth>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180babfa0 size=311 ############

void FUN_180babfa0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180bac130(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180b38590(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180b39bb0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x140;
  return;
}



############ FUN_ 180bac130 size=316 ############

longlong FUN_180bac130(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180b3e830 size=512 ############

undefined8 FUN_180b3e830(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res18 [2];
  undefined1 local_50 [16];
  undefined **local_40;
  undefined4 local_38;
  ulonglong local_30;
  undefined2 local_28;
  
  local_res8 = FUN_1811316e0(0x140);
  lVar5 = 0;
  lVar3 = lVar5;
  if (local_res8 != 0) {
    lVar3 = FUN_1809d3d60(local_res8);
  }
  local_res18[0] = lVar3;
  FUN_180b3ab70(lVar3,param_2);
  FUN_180b68ca0(lVar3,1);
  local_res8 = *(longlong *)(lVar3 + 0x18);
  lVar4 = *(longlong *)(param_1 + 8);
  plVar1 = *(longlong **)(lVar4 + 0x10);
  if (*(longlong **)(lVar4 + 0x18) == plVar1) {
    FUN_180703330(lVar4 + 8,plVar1,&local_res8);
  }
  else {
    *plVar1 = local_res8;
    *(longlong *)(lVar4 + 0x10) = *(longlong *)(lVar4 + 0x10) + 8;
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_50,0,&local_res8,(undefined1)local_res8);
  lVar4 = *(longlong *)(param_1 + 0x18);
  lVar2 = *(longlong *)(lVar4 + 0x48);
  if (*(longlong *)(lVar4 + 0x50) == lVar2) {
    FUN_180b38590(lVar4 + 0x40,lVar2,lVar3);
  }
  else {
    FUN_180b39bb0(lVar2,lVar3);
    *(longlong *)(lVar4 + 0x48) = *(longlong *)(lVar4 + 0x48) + 0x140;
  }
  plVar1 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar1) {
    FUN_18080f490(param_1 + 0x38,plVar1,local_res18);
    lVar3 = local_res18[0];
  }
  else {
    *plVar1 = lVar3;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  local_res8 = FUN_1811316e0(0x68);
  lVar4 = lVar5;
  if (local_res8 != 0) {
    lVar4 = FUN_180b68400(local_res8,lVar3,param_1);
  }
  plVar1 = *(longlong **)(param_1 + 0x28);
  local_res8 = lVar4;
  if (*(longlong **)(param_1 + 0x30) == plVar1) {
    FUN_18080f490(param_1 + 0x20,plVar1,&local_res8);
  }
  else {
    *plVar1 = lVar4;
    *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 8;
  }
  local_40 = license_services::LsRelation::vftable;
  local_38 = *(undefined4 *)(lVar3 + 0x10);
  local_30 = *(ulonglong *)(lVar3 + 0x18);
  local_28 = *(undefined2 *)(lVar3 + 0x20);
  if ((0x7fffffff00000000 < (longlong)local_30) && (local_30 < 0x8000000000000000)) {
    lVar5 = 1;
  }
  if ((char)lVar5 != '\0') {
    FUN_18080c5f0(*(undefined8 *)(param_1 + 0x10),&local_40);
  }
  return *(undefined8 *)(*(longlong *)(param_1 + 0x28) + -8);
}



############ FUN_ 180b3ea50 size=679 ############

longlong FUN_180b3ea50(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  void *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar11 = *param_1;
  lVar1 = (longlong)(param_2 - uVar11) / 0x110;
  lVar13 = (longlong)(param_1[1] - uVar11) / 0x110;
  if (lVar13 == 0xf0f0f0f0f0f0f0) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar12 = lVar13 + 1;
  uVar4 = (longlong)(param_1[2] - uVar11) / 0x110;
  uVar11 = uVar12;
  if ((uVar4 <= 0xf0f0f0f0f0f0f0 - (uVar4 >> 1)) && (uVar11 = (uVar4 >> 1) + uVar4, uVar11 < uVar12)
     ) {
    uVar11 = uVar12;
  }
  uVar4 = uVar11 * 0x110;
  lVar13 = lVar1;
  puVar14 = param_1;
  if (uVar11 < 0xf0f0f0f0f0f0f1) {
    if (uVar4 < 0x1000) {
      if (uVar4 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_1811316e0(uVar4);
      }
      goto LAB_180b3eb8b;
    }
  }
  else {
    uVar4 = 0xffffffffffffffff;
  }
  uVar6 = uVar4 + 0x27;
  if (uVar6 <= uVar4) {
    uVar6 = 0xffffffffffffffff;
  }
  lVar5 = FUN_1811316e0(uVar6);
  if (lVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar4 = lVar5 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar4 - 8) = lVar5;
LAB_180b3eb8b:
  lVar7 = lVar1 * 0x110 + uVar4;
  lVar1 = lVar7 + 0x110;
  lVar5 = lVar1;
  uVar10 = uVar4;
  FUN_180b400f0(lVar7,param_3);
  uVar6 = param_1[1];
  if (param_2 == uVar6) {
    uVar8 = uVar4;
    for (uVar10 = *param_1; uVar10 != uVar6; uVar10 = uVar10 + 0x110) {
      FUN_180b400f0(uVar8);
      uVar8 = uVar8 + 0x110;
    }
  }
  else {
    FUN_180b41130(param_1,*param_1,param_2,uVar4,uVar12,lVar13,lVar5,uVar10,puVar14,uVar15);
    FUN_180b41130(param_1,param_2,param_1[1],lVar1);
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar9 != puVar2; puVar9 = puVar9 + 0x22) {
      (**(code **)*puVar9)(puVar9,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((longlong)(param_1[2] - (longlong)pvVar3) / 0x110) * 0x110)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar4;
  param_1[1] = uVar12 * 0x110 + uVar4;
  param_1[2] = uVar11 * 0x110 + uVar4;
  return lVar13 * 0x110 + *param_1;
}



############ FUN_ 180b3f000 size=1393 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180b3f2a9) overlaps instruction at (ram,0x000180b3f2a8)
    */
/* WARNING: Removing unreachable block (ram,0x000180b3f0d2) */
/* WARNING: Removing unreachable block (ram,0x000180b3f0b4) */
/* WARNING: Removing unreachable block (ram,0x000180b3f2a8) */

void FUN_180b3f000(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  int unaff_retaddr;
  undefined1 auStack_f8 [32];
  IMAGE_DOS_HEADER *local_d8;
  undefined8 local_d0;
  undefined8 local_c0;
  longlong local_b8;
  undefined8 local_b0;
  uint local_a8;
  uint local_a4;
  undefined8 local_a0;
  undefined8 *local_98;
  undefined8 *local_90;
  undefined8 *local_88;
  longlong local_80;
  undefined8 *local_78;
  undefined8 local_70;
  undefined8 *local_68;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  local_a0 = param_3;
  local_78 = param_1;
  local_68 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorSignedDigest::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180bacf30(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  uVar3 = (uint)&stack0x00000000;
  uVar4 = uVar3 & 0x3ff;
  iVar5 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_a4 = 0xcf73 >> (-(char)((int)-(((uVar3 & 0x5bff) * (uVar3 & 0x5bff) + 1) % 7) >> 0x1f) - 1U
                       & 0x1f) & 0x4e51U ^
             (((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) + 0x4b41U;
  uVar3 = uVar3 & 0x13f;
  iVar5 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  local_a8 = (((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) + 0x17bU ^ 0x2fb;
  local_d8 = &IMAGE_DOS_HEADER_180000000;
  local_b0 = 0;
  local_c0 = 0x180ba0384;
  local_d0 = 0x180ba2fcc;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar6 = *(longlong *)(param_2 + 0x40);
  local_80 = *(longlong *)(param_2 + 0x48);
  if (lVar6 != local_80) {
    do {
      local_b8 = FUN_1811316e0(0x58);
      puVar1 = (undefined8 *)0x0;
      if (local_b8 != 0) {
        puVar1 = (undefined8 *)FUN_180b50f30(local_b8,lVar6,param_1);
      }
      puVar2 = (undefined8 *)param_1[5];
      local_90 = puVar1;
      if ((undefined8 *)param_1[6] == puVar2) {
        FUN_18080f490(param_1 + 4,puVar2,&local_90);
      }
      else {
        *puVar2 = puVar1;
        param_1[5] = param_1[5] + 8;
      }
      puVar2 = (undefined8 *)FUN_1811316e0(0x110);
      puVar1 = (undefined8 *)0x0;
      local_98 = puVar2;
      if (puVar2 != (undefined8 *)0x0) {
        *puVar2 = license_services::LsSignedDigestWire::vftable;
        puVar2[1] = license_services::LsRelation::vftable;
        *(undefined4 *)(puVar2 + 2) = 0xffffffff;
        puVar2[3] = 0xffffffffffffffff;
        *(undefined2 *)(puVar2 + 4) = 0;
        *(undefined1 *)(puVar2 + 5) = 0;
        *(undefined4 *)((longlong)puVar2 + 0x2c) = 0;
        puVar2[8] = 0;
        puVar2[9] = 0xf;
        *(undefined1 *)(puVar2 + 6) = 0;
        FUN_1805a6cb0(puVar2 + 6,&DAT_181baf991,0);
        puVar2[10] = 0;
        puVar2[0xb] = 0;
        puVar2[0xc] = 0;
        puVar2[0xf] = 0;
        puVar2[0x10] = 0xf;
        *(undefined1 *)(puVar2 + 0xd) = 0;
        FUN_1805a6cb0(puVar2 + 0xd,&DAT_181baf991);
        puVar2[0x13] = 0;
        puVar2[0x14] = 0xf;
        *(undefined1 *)(puVar2 + 0x11) = 0;
        FUN_1805a6cb0(puVar2 + 0x11,&DAT_181baf991);
        puVar2[0x17] = 0;
        puVar2[0x18] = 0xf;
        *(undefined1 *)(puVar2 + 0x15) = 0;
        FUN_1805a6cb0(puVar2 + 0x15,&DAT_181baf991);
        puVar2[0x1b] = 0;
        puVar2[0x1c] = 0xf;
        *(undefined1 *)(puVar2 + 0x19) = 0;
        FUN_1805a6cb0(puVar2 + 0x19,&DAT_181baf991);
        puVar2[0x1d] = 0;
        puVar2[0x1e] = 0;
        puVar2[0x1f] = 0;
        puVar2[0x20] = 0;
        *(undefined2 *)(puVar2 + 0x21) = 0;
        puVar1 = puVar2;
      }
      local_88 = puVar1;
      FUN_180b40e70(puVar1,lVar6);
      if ((undefined8 *)param_1[9] == (undefined8 *)param_1[8]) {
        FUN_18080f490(param_1 + 7);
      }
      else {
        *(undefined8 *)param_1[8] = puVar1;
        param_1[8] = param_1[8] + 8;
      }
      lVar6 = lVar6 + 0x110;
      local_80 = *(longlong *)(param_2 + 0x48);
    } while (lVar6 != local_80);
  }
  local_d8 = (IMAGE_DOS_HEADER *)0xadd55244066cddfa;
  do {
    FUN_180b3e399(0x6300);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  FUN_180b3e457();
  FUN_180b3f57c();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180bacf30 size=723 ############

/* WARNING: Removing unreachable block (ram,0x000180bad097) */
/* WARNING: Removing unreachable block (ram,0x000180bad034) */
/* WARNING: Removing unreachable block (ram,0x000180bad068) */
/* WARNING: Removing unreachable block (ram,0x000180bad0ae) */

void FUN_180bacf30(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  undefined1 auStack_c8 [40];
  undefined4 local_a0;
  undefined8 *local_98;
  undefined8 *local_80;
  undefined4 local_68;
  undefined4 local_64;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_a0 = param_2;
  local_98 = param_1;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_80 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntitySignedDigest::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180bacec0(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  local_64 = 0x670;
  local_68 = 0xa50;
                    /* WARNING: Call to offcut address within same function */
  func_0x000180bad132(0,0x670);
                    /* WARNING: Could not recover jumptable at 0x000180bad204. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)((longlong)param_1 + -0x16f9))();
  return;
}



############ FUN_ 180bacec0 size=97 ############

undefined8 * FUN_180bacec0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntitySignedDigest>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180baf200 size=311 ############

void FUN_180baf200(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180baf390(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180b3ea50(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180b400f0(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 0x110;
  return;
}



############ FUN_ 180baf390 size=316 ############

longlong FUN_180baf390(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180b46780 size=812 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b46808) */
/* WARNING: Removing unreachable block (ram,0x000180b468cb) */
/* WARNING: Removing unreachable block (ram,0x000180b46883) */

void FUN_180b46780(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong lVar6;
  int iVar7;
  uint uVar8;
  undefined1 auStack_128 [32];
  undefined1 local_108;
  undefined4 local_f8;
  undefined1 local_e8;
  uint local_c0;
  uint local_bc;
  longlong local_b8;
  undefined8 local_b0;
  longlong local_a8;
  longlong local_a0 [5];
  undefined8 local_78;
  undefined1 local_70 [40];
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  uVar8 = (uint)&stack0x00000000 & 0x33f;
  local_c0 = 0x170 - ((uVar8 + 2) * (uVar8 + 1) * uVar8) % 3 ^ 0xf70;
  uVar8 = (uint)&stack0x00000000 & 0x52ff;
  iVar7 = uVar8 * uVar8 + 1;
  uVar8 = (iVar7 >> 4) + (iVar7 >> 1) + iVar7 * 0x24924924 >> 0x1d;
  uVar8 = (int)(uVar8 - 7) >> 0x1f & uVar8;
  local_bc = (int)(-uVar8 | uVar8) >> 0x1f & 0xcc7cU ^ 0xc48c;
  lVar6 = 0;
  local_f8 = 0;
  local_b8 = FUN_1811316e0(0x110);
  lVar5 = lVar6;
  if (local_b8 != 0) {
    lVar5 = FUN_180b401f0(local_b8);
  }
  local_a8 = lVar5;
  FUN_180b40e70(lVar5,param_2);
  FUN_180b5e710(lVar5,1);
  local_b0 = *(undefined8 *)(lVar5 + 0x18);
  lVar1 = *(longlong *)(param_1 + 8);
  puVar2 = *(undefined8 **)(lVar1 + 0x10);
  if (*(undefined8 **)(lVar1 + 0x18) == puVar2) {
    FUN_180703330(lVar1 + 8,puVar2,&local_b0);
  }
  else {
    *puVar2 = local_b0;
    *(longlong *)(lVar1 + 0x10) = *(longlong *)(lVar1 + 0x10) + 8;
  }
  local_108 = local_e8;
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_70,0,&local_b0);
  lVar1 = *(longlong *)(param_1 + 0x18);
  lVar3 = *(longlong *)(lVar1 + 0x48);
  if (*(longlong *)(lVar1 + 0x50) == lVar3) {
    FUN_180b3ea50(lVar1 + 0x40,lVar3,lVar5);
  }
  else {
    FUN_180b400f0(lVar3,lVar5);
    *(longlong *)(lVar1 + 0x48) = *(longlong *)(lVar1 + 0x48) + 0x110;
  }
  plVar4 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar4) {
    FUN_18080f490(param_1 + 0x38,plVar4,&local_a8);
    lVar5 = local_a8;
  }
  else {
    *plVar4 = lVar5;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  local_b8 = FUN_1811316e0(0x58);
  if (local_b8 != 0) {
    lVar6 = FUN_180b50f30(local_b8,lVar5,param_1);
  }
  local_b8 = param_1 + 0x20;
  plVar4 = *(longlong **)(param_1 + 0x28);
  local_a0[0] = lVar6;
  if (*(longlong **)(param_1 + 0x30) == plVar4) {
    FUN_18080f490(local_b8,plVar4,local_a0);
  }
  else {
    *plVar4 = lVar6;
    *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 8;
  }
  FUN_180b47c93();
                    /* WARNING: Call to offcut address within same function */
  func_0x000180b46aa7();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180b47730 size=694 ############

longlong FUN_180b47730(ulonglong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong *puVar14;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  uVar12 = *param_1;
  lVar5 = (param_2 - uVar12) +
          SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_2 - uVar12)),8);
  lVar7 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  lVar5 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[1] - uVar12)),8) +
          (param_1[1] - uVar12);
  lVar5 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  if (lVar5 == 0xa3d70a3d70a3d7) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar13 = lVar5 + 1;
  lVar5 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[2] - uVar12)),8) +
          (param_1[2] - uVar12);
  uVar6 = (lVar5 >> 8) - (lVar5 >> 0x3f);
  uVar12 = uVar13;
  if ((uVar6 <= 0xa3d70a3d70a3d7 - (uVar6 >> 1)) && (uVar12 = (uVar6 >> 1) + uVar6, uVar12 < uVar13)
     ) {
    uVar12 = uVar13;
  }
  uVar6 = uVar12 * 400;
  lVar5 = lVar7;
  puVar14 = param_1;
  if (uVar12 < 0xa3d70a3d70a3d8) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        uVar6 = 0;
      }
      else {
        uVar6 = FUN_1811316e0(uVar6);
      }
      goto LAB_180b47872;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  uVar6 = lVar3 + 0x27U & 0xffffffffffffffe0;
  *(longlong *)(uVar6 - 8) = lVar3;
LAB_180b47872:
  lVar8 = lVar7 * 400 + uVar6;
  lVar7 = lVar8 + 400;
  lVar3 = lVar7;
  uVar11 = uVar6;
  FUN_180b48d30(lVar8,param_3);
  uVar4 = param_1[1];
  if (param_2 == uVar4) {
    uVar9 = uVar6;
    for (uVar11 = *param_1; uVar11 != uVar4; uVar11 = uVar11 + 400) {
      FUN_180b48d30(uVar9);
      uVar9 = uVar9 + 400;
    }
  }
  else {
    FUN_180b4a150(param_1,*param_1,param_2,uVar6,uVar13,lVar5,lVar3,uVar11,puVar14,uVar15);
    FUN_180b4a150(param_1,param_2,param_1[1],lVar7);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar1; puVar10 = puVar10 + 0x32) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar2 = (void *)*param_1;
    lVar5 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816((longlong)(param_1[2] - (longlong)pvVar2))
                   ,8) + (param_1[2] - (longlong)pvVar2);
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((lVar5 >> 8) - (lVar5 >> 0x3f)) * 400)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = uVar6;
  param_1[1] = uVar13 * 400 + uVar6;
  param_1[2] = uVar12 * 400 + uVar6;
  return lVar5 * 400 + *param_1;
}



############ FUN_ 180bb0370 size=550 ############

/* WARNING: Instruction at (ram,0x000180bb0593) overlaps instruction at (ram,0x000180bb0592)
    */
/* WARNING: Possible PIC construction at 0x000180bb0729: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x000180bb072e) */
/* WARNING: Removing unreachable block (ram,0x000180bb0514) */
/* WARNING: Removing unreachable block (ram,0x000180bb0592) */

undefined8 FUN_180bb0370(undefined8 *param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined1 auStack_a8 [32];
  undefined4 local_88;
  undefined *puStack_80;
  undefined8 *local_78;
  undefined *puStack_70;
  uint local_64;
  undefined4 local_60;
  uint local_5c;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_78 = param_1;
  local_60 = param_2;
  local_58 = param_1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x60);
  local_78 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    *puVar1 = license_services::LsEntitySignedInfo::vftable;
    FUN_180677c10(puVar1 + 1);
    puVar1[8] = 0;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
  }
  *param_1 = puVar1;
  FUN_180bb0300(param_1 + 1,puVar1);
  FUN_1805ae620(param_1,puVar1,puVar1);
  param_1[2] = *param_1;
  uVar4 = (uint)&stack0x00000000;
  iVar3 = (uVar4 & 0x41ff) * (uVar4 & 0x41ff) + 1;
  uVar5 = iVar3 * 0x24924924 + (iVar3 >> 4) + (iVar3 >> 1) >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_5c = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x6a26 ^ 0x6f06;
  if (((ulonglong)&stack0x00000000 & 0x3a0) == 0) {
    uVar5 = (uVar4 & 0x75ff) * (uVar4 & 0x75ff) + 1;
    iVar3 = (uVar5 / 7) * 7;
  }
  else {
    uVar5 = ((uVar4 & 0x22ff) + 1) * (uVar4 & 0x22ff) + 7;
    iVar3 = (uVar5 / 0x51) * 0x51;
  }
  uVar6 = ((uVar4 & 0xeff) + 1) * (uVar4 & 0xeff) + 0x52cb & 0x80000001;
  uVar4 = ((uVar4 & 0x1cff) * (uVar4 & 0x1cff) + 1) % 7;
  uVar4 = (((int)(-uVar6 | uVar6) >> 0x1f) - ((int)(-uVar4 | uVar4) >> 0x1f) | 0xd215U) ^
          (int)(-(uVar5 - iVar3) | uVar5 - iVar3) >> 0x1f & 0xdfe5U;
  local_88 = 0;
  local_64 = uVar4;
  do {
    func_0x000180baeaaf();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_78 = (undefined8 *)0x0;
  puStack_80 = &UNK_180b4e070;
  puStack_70 = &UNK_180b5136c;
                    /* WARNING: Could not recover jumptable at 0x000180bb084b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar2 = (*(code *)&LAB_180b697bb)
                    (&UNK_180b5136c,0x1d5,0x3085ad4,&LAB_180b697bb,&DAT_180c49f02,&UNK_180bb084e,
                     uVar4);
  return uVar2;
}



############ FUN_ 180bb0300 size=97 ############

undefined8 * FUN_180bb0300(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<license_services::LsEntitySignedInfo>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



############ FUN_ 180bb2280 size=311 ############

void FUN_180bb2280(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined1 local_res8;
  undefined1 local_30 [24];
  
  lVar2 = FUN_180bb2410(param_1,param_2 + 8);
  if (lVar2 != -1) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "Attempt to add this object to the entity metadata twice. The object has entityId: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),param_2 + 0x10);
  }
  FUN_18060b3f0(*(longlong *)(param_1 + 0x10) + 0x28,local_30,0,param_2 + 0x18,local_res8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x18);
  if (*(undefined8 **)(lVar2 + 0x20) == puVar3) {
    FUN_180703330(lVar2 + 0x10,puVar3,param_2 + 0x18);
  }
  else {
    *puVar3 = *(undefined8 *)(param_2 + 0x18);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + 8;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  lVar1 = *(longlong *)(lVar2 + 0x48);
  if (*(longlong *)(lVar2 + 0x50) == lVar1) {
    FUN_180b47730(lVar2 + 0x40,lVar1,param_2);
    return;
  }
  FUN_180b48d30(lVar1,param_2);
  *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + 400;
  return;
}



############ FUN_ 180bb2410 size=316 ############

longlong FUN_180bb2410(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  if (*(int *)(param_2 + 8) != *(int *)(*(longlong *)(param_1 + 0x10) + 0x38)) {
    lVar2 = FUN_1811316e0(0x18);
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = FUN_1805a48c0(lVar2,
                            "The LsRelation supplied identifies the wrong object type. We expected the entityId value: %d, but saw: %d and instanceId: %ld"
                           );
    }
    puVar3 = (undefined8 *)FUN_1811316e0(0x18);
    if (puVar3 != (undefined8 *)0x0) {
      FUN_1805a48c0(puVar3,"|__FILE__|%s|__LINE__|%d");
      *puVar3 = pace::PaceLocationInfoFormatter::vftable;
    }
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(*(undefined8 *)(lVar2 + 8),*(longlong *)(param_1 + 0x10) + 0x38);
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  puVar3 = *(undefined8 **)(lVar2 + 0x28);
  local_res8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar5 = (undefined8 *)puVar3[1];
    do {
      if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
        puVar6 = (undefined8 *)puVar5[2];
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
        local_res8 = puVar5;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((local_res8 == puVar3) || (*(longlong *)(param_2 + 0x10) < (longlong)local_res8[4])) {
    local_res8 = puVar3;
  }
  if (local_res8 == puVar3) {
    lVar2 = -1;
  }
  else {
    plVar1 = *(longlong **)(lVar2 + 0x10);
    plVar4 = plVar1;
    if (plVar1 != *(longlong **)(lVar2 + 0x18)) {
      do {
        if (*plVar4 == *(longlong *)(param_2 + 0x10)) break;
        plVar4 = plVar4 + 1;
      } while (plVar4 != *(longlong **)(lVar2 + 0x18));
    }
    lVar2 = (longlong)plVar4 - (longlong)plVar1 >> 3;
  }
  return lVar2;
}



############ FUN_ 180b4fb60 size=903 ############

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

void FUN_180b4fb60(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong lVar5;
  ulonglong uVar6;
  uint uVar7;
  undefined1 auStack_128 [32];
  undefined1 local_108;
  undefined1 local_e0;
  longlong local_d0;
  undefined4 local_c8;
  uint local_c4;
  undefined8 local_b0;
  longlong local_a8 [7];
  undefined8 local_70;
  undefined1 local_68 [40];
  ulonglong local_40;
  
  local_70 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_128;
  lVar5 = 0;
  local_c8 = 0x710;
  uVar7 = (uint)&stack0x00000000 & 0x34ff;
  uVar7 = (uVar7 * uVar7 + 1) % 7;
  uVar7 = (int)(-uVar7 | uVar7) >> 0x1f;
  local_c4 = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x9917 ^ 0x94e7;
  local_d0 = FUN_1811316e0(400);
  if (local_d0 != 0) {
    lVar5 = FUN_1809d4580(local_d0);
  }
  local_a8[0] = lVar5;
  FUN_180b49ee0(lVar5,param_2);
  FUN_180aa50f0(lVar5,1);
  local_b0 = *(undefined8 *)(lVar5 + 0x18);
  lVar1 = *(longlong *)(param_1 + 8);
  puVar2 = *(undefined8 **)(lVar1 + 0x10);
  if (*(undefined8 **)(lVar1 + 0x18) == puVar2) {
    FUN_180703330(lVar1 + 8,puVar2,&local_b0);
  }
  else {
    *puVar2 = local_b0;
    *(longlong *)(lVar1 + 0x10) = *(longlong *)(lVar1 + 0x10) + 8;
  }
  local_108 = local_e0;
  FUN_18060b3f0(*(longlong *)(param_1 + 8) + 0x20,local_68,0,&local_b0);
  lVar1 = *(longlong *)(param_1 + 0x18);
  lVar3 = *(longlong *)(lVar1 + 0x48);
  if (*(longlong *)(lVar1 + 0x50) == lVar3) {
    FUN_180b47730(lVar1 + 0x40,lVar3,lVar5);
  }
  else {
    FUN_180b48d30(lVar3,lVar5);
    *(longlong *)(lVar1 + 0x48) = *(longlong *)(lVar1 + 0x48) + 400;
  }
  plVar4 = *(longlong **)(param_1 + 0x40);
  if (*(longlong **)(param_1 + 0x48) == plVar4) {
    FUN_18080f490(param_1 + 0x38,plVar4,local_a8);
  }
  else {
    *plVar4 = lVar5;
    *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 8;
  }
  uVar6 = FUN_180b4e1ac();
                    /* WARNING: Could not recover jumptable at 0x000180b4feec. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)((uVar6 ^ 0x180b4e5ae ^ uVar6) + 0x40b8c))();
  return;
}



############ FUN_ 180b5fff0 size=214 ############

void FUN_180b5fff0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsSignedDigest::targetSlowPath: The LsSignedDigestWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lssigneddigest.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180b64590 size=214 ############

void FUN_180b64590(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsArrayEntry::targetSlowPath: The LsArrayEntryWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsarrayentry.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180b682b0 size=214 ############

void FUN_180b682b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsAssociativeArray::targetSlowPath: The LsAssociativeArrayWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsassociativearray.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180b68d10 size=214 ############

void FUN_180b68d10(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  char *local_res10;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if ((*plVar1 == 0) &&
     (FUN_1808157d0(*(undefined8 *)(param_1 + 0x40),param_1 + 0x20,plVar1,param_4,0xfffffffffffffffe
                   ), *plVar1 == 0)) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x18);
    if (local_res8 != (undefined8 *)0x0) {
      FUN_1805a48c0(local_res8,
                    "LsIlokAuth::targetSlowPath: The LsIlokAuthWire object that this object references has disappeared."
                   );
    }
    puVar2 = (undefined8 *)FUN_1811316e0(0x18);
    local_res8 = puVar2;
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)0x0;
    }
    else {
      FUN_1805a48c0(puVar2,"|__FILE__|%s|__LINE__|%d");
      *puVar2 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,0xf3);
    local_res10 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsilokauth.cpp"
    ;
    uVar3 = FUN_1805a21d0(puVar2[1],&local_res10);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar3,&local_res8);
  }
  return;
}



############ FUN_ 180b6bf50 size=453 ############

void FUN_180b6bf50(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b6b190();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x178 + *(longlong *)(lVar2 + 0x40);
    FUN_180a2e2a0(lVar3 + 0x178,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x178);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x178;
  }
  return;
}



############ FUN_ 180b785a0 size=451 ############

void FUN_180b785a0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b77750();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    FUN_180a4c2a0(lVar3 * 0x108 + *(longlong *)(lVar2 + 0x40) + 0x108,*(undefined8 *)(lVar2 + 0x48))
    ;
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x108);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x108;
  }
  return;
}



############ FUN_ 180b7b3f0 size=454 ############

void FUN_180b7b3f0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b7a7a0();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0xd8 + *(longlong *)(lVar2 + 0x40);
    FUN_180a56ac0(lVar3 + 0xd8,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0xd8);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0xd8;
  }
  return;
}



############ FUN_ 180b7e620 size=454 ############

void FUN_180b7e620(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b7d440();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x198 + *(longlong *)(lVar2 + 0x40);
    FUN_180a5fa20(lVar3 + 0x198,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x198);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x198;
  }
  return;
}



############ FUN_ 180b81ea0 size=753 ############

void FUN_180b81ea0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  longlong local_res20;
  
  lVar4 = FUN_180b80a90();
  if (lVar4 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar4 + 8),param_2 + 8);
    }
  }
  else {
    puVar8 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar7 = (undefined8 *)puVar8[1];
    puVar10 = puVar8;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar5 = puVar7;
      do {
        if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
          puVar6 = (undefined8 *)puVar5[2];
        }
        else {
          if ((*(char *)((longlong)puVar8 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar5[4])) {
            puVar8 = puVar5;
          }
          puVar6 = (undefined8 *)*puVar5;
          puVar10 = puVar5;
        }
        puVar5 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
    }
    puVar5 = puVar10;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar7[4]) {
          puVar6 = (undefined8 *)*puVar7;
          puVar8 = puVar7;
        }
        else {
          puVar6 = (undefined8 *)puVar7[2];
        }
        puVar7 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    while (puVar5 != puVar8) {
      puVar7 = (undefined8 *)puVar5[2];
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar7 + 0x19);
        puVar5 = puVar7;
        puVar7 = (undefined8 *)*puVar7;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar7 + 0x19);
          puVar5 = puVar7;
          puVar7 = (undefined8 *)*puVar7;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar6 = (undefined8 *)puVar5[1];
        puVar7 = puVar5;
        while ((puVar5 = puVar6, cVar1 == '\0' && (puVar7 == (undefined8 *)puVar5[2]))) {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar6 = (undefined8 *)puVar5[1];
          puVar7 = puVar5;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar10);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar4 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = *(longlong *)(lVar2 + 0x48);
    lVar4 = lVar4 * 0xb8 + 0xb8 + *(longlong *)(lVar2 + 0x40);
    if (lVar4 != lVar3) {
      puVar8 = (undefined8 *)(lVar4 + -0xa0);
      do {
        *(undefined4 *)(puVar8 + -1) = *(undefined4 *)(puVar8 + 0x16);
        *puVar8 = puVar8[0x17];
        *(undefined2 *)(puVar8 + 1) = *(undefined2 *)(puVar8 + 0x18);
        *(undefined1 *)(puVar8 + 2) = *(undefined1 *)(puVar8 + 0x19);
        plVar9 = puVar8 + 0x1a;
        if (puVar8 + 3 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x1d]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 3,plVar9,puVar8[0x1c]);
        }
        plVar9 = puVar8 + 0x1e;
        if (puVar8 + 7 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x21]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 7,plVar9,puVar8[0x20]);
        }
        plVar9 = puVar8 + 0x22;
        if (puVar8 + 0xb != plVar9) {
          if (0xf < (ulonglong)puVar8[0x25]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 0xb,plVar9,puVar8[0x24]);
        }
        *(undefined4 *)(puVar8 + 0xf) = *(undefined4 *)(puVar8 + 0x26);
        if (puVar8 + 0x10 != puVar8 + 0x27) {
          FUN_1807fecd0(puVar8 + 0x10,puVar8[0x27],puVar8[0x28],(undefined1)local_res20);
        }
        *(undefined4 *)(puVar8 + 0x13) = *(undefined4 *)(puVar8 + 0x2a);
        *(undefined2 *)((longlong)puVar8 + 0x9c) = *(undefined2 *)((longlong)puVar8 + 0x154);
        *(undefined1 *)((longlong)puVar8 + 0x9e) = *(undefined1 *)((longlong)puVar8 + 0x156);
        lVar4 = lVar4 + 0xb8;
        puVar8 = puVar8 + 0x17;
      } while (lVar4 != lVar3);
    }
    puVar8 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0xb8);
    (**(code **)*puVar8)(puVar8,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0xb8;
  }
  return;
}



############ FUN_ 180b84ec0 size=454 ############

void FUN_180b84ec0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b84020();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x208 + *(longlong *)(lVar2 + 0x40);
    FUN_180ab5e90(lVar3 + 0x208,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x208);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x208;
  }
  return;
}



############ FUN_ 180b87930 size=785 ############

void FUN_180b87930(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  longlong local_res20;
  
  lVar4 = FUN_180b86c50();
  if (lVar4 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar4 + 8),param_2 + 8);
    }
  }
  else {
    puVar8 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar7 = (undefined8 *)puVar8[1];
    puVar10 = puVar8;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar5 = puVar7;
      do {
        if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
          puVar6 = (undefined8 *)puVar5[2];
        }
        else {
          if ((*(char *)((longlong)puVar8 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar5[4])) {
            puVar8 = puVar5;
          }
          puVar6 = (undefined8 *)*puVar5;
          puVar10 = puVar5;
        }
        puVar5 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
    }
    puVar5 = puVar10;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar7[4]) {
          puVar6 = (undefined8 *)*puVar7;
          puVar8 = puVar7;
        }
        else {
          puVar6 = (undefined8 *)puVar7[2];
        }
        puVar7 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    while (puVar5 != puVar8) {
      puVar7 = (undefined8 *)puVar5[2];
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar7 + 0x19);
        puVar5 = puVar7;
        puVar7 = (undefined8 *)*puVar7;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar7 + 0x19);
          puVar5 = puVar7;
          puVar7 = (undefined8 *)*puVar7;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar6 = (undefined8 *)puVar5[1];
        puVar7 = puVar5;
        while ((puVar5 = puVar6, cVar1 == '\0' && (puVar7 == (undefined8 *)puVar5[2]))) {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar6 = (undefined8 *)puVar5[1];
          puVar7 = puVar5;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar10);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar4 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = *(longlong *)(lVar2 + 0x48);
    lVar4 = lVar4 * 200 + 200 + *(longlong *)(lVar2 + 0x40);
    if (lVar4 != lVar3) {
      puVar8 = (undefined8 *)(lVar4 + -0xb0);
      do {
        *(undefined4 *)(puVar8 + -1) = *(undefined4 *)(puVar8 + 0x18);
        *puVar8 = puVar8[0x19];
        *(undefined2 *)(puVar8 + 1) = *(undefined2 *)(puVar8 + 0x1a);
        *(undefined1 *)(puVar8 + 2) = *(undefined1 *)(puVar8 + 0x1b);
        *(undefined4 *)((longlong)puVar8 + 0x14) = *(undefined4 *)((longlong)puVar8 + 0xdc);
        plVar9 = puVar8 + 0x1c;
        if (puVar8 + 3 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x1f]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 3,plVar9,puVar8[0x1e]);
        }
        plVar9 = puVar8 + 0x20;
        if (puVar8 + 7 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x23]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 7,plVar9,puVar8[0x22]);
        }
        plVar9 = puVar8 + 0x24;
        if (puVar8 + 0xb != plVar9) {
          if (0xf < (ulonglong)puVar8[0x27]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 0xb,plVar9,puVar8[0x26]);
        }
        if (puVar8 + 0xf != puVar8 + 0x28) {
          FUN_1807fecd0(puVar8 + 0xf,puVar8[0x28],puVar8[0x29],(undefined1)local_res20);
        }
        if (puVar8 + 0x12 != puVar8 + 0x2b) {
          FUN_1807fecd0(puVar8 + 0x12,puVar8[0x2b],puVar8[0x2c],(undefined1)local_res20);
        }
        puVar8[0x15] = puVar8[0x2e];
        lVar4 = lVar4 + 200;
        puVar8 = puVar8 + 0x19;
      } while (lVar4 != lVar3);
    }
    puVar8 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -200);
    (**(code **)*puVar8)(puVar8,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -200;
  }
  return;
}



############ FUN_ 180b8a9d0 size=839 ############

void FUN_180b8a9d0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  longlong local_res20;
  
  lVar4 = FUN_180b89830();
  if (lVar4 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar4 + 8),param_2 + 8);
    }
  }
  else {
    puVar8 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar7 = (undefined8 *)puVar8[1];
    puVar10 = puVar8;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar5 = puVar7;
      do {
        if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
          puVar6 = (undefined8 *)puVar5[2];
        }
        else {
          if ((*(char *)((longlong)puVar8 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar5[4])) {
            puVar8 = puVar5;
          }
          puVar6 = (undefined8 *)*puVar5;
          puVar10 = puVar5;
        }
        puVar5 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
    }
    puVar5 = puVar10;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar7[4]) {
          puVar6 = (undefined8 *)*puVar7;
          puVar8 = puVar7;
        }
        else {
          puVar6 = (undefined8 *)puVar7[2];
        }
        puVar7 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    while (puVar5 != puVar8) {
      puVar7 = (undefined8 *)puVar5[2];
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar7 + 0x19);
        puVar5 = puVar7;
        puVar7 = (undefined8 *)*puVar7;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar7 + 0x19);
          puVar5 = puVar7;
          puVar7 = (undefined8 *)*puVar7;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar6 = (undefined8 *)puVar5[1];
        puVar7 = puVar5;
        while ((puVar5 = puVar6, cVar1 == '\0' && (puVar7 == (undefined8 *)puVar5[2]))) {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar6 = (undefined8 *)puVar5[1];
          puVar7 = puVar5;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar10);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar4 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = *(longlong *)(lVar2 + 0x48);
    lVar4 = lVar4 * 0xf0 + 0xf0 + *(longlong *)(lVar2 + 0x40);
    if (lVar4 != lVar3) {
      puVar8 = (undefined8 *)(lVar4 + -0xd8);
      do {
        *(undefined4 *)(puVar8 + -1) = *(undefined4 *)(puVar8 + 0x1d);
        *puVar8 = puVar8[0x1e];
        *(undefined2 *)(puVar8 + 1) = *(undefined2 *)(puVar8 + 0x1f);
        *(undefined1 *)(puVar8 + 2) = *(undefined1 *)(puVar8 + 0x20);
        *(undefined4 *)((longlong)puVar8 + 0x14) = *(undefined4 *)((longlong)puVar8 + 0x104);
        *(undefined1 *)(puVar8 + 3) = *(undefined1 *)(puVar8 + 0x21);
        *(undefined4 *)((longlong)puVar8 + 0x1c) = *(undefined4 *)((longlong)puVar8 + 0x10c);
        *(undefined4 *)(puVar8 + 4) = *(undefined4 *)(puVar8 + 0x22);
        *(undefined1 *)((longlong)puVar8 + 0x24) = *(undefined1 *)((longlong)puVar8 + 0x114);
        *(undefined4 *)(puVar8 + 5) = *(undefined4 *)(puVar8 + 0x23);
        *(undefined4 *)((longlong)puVar8 + 0x2c) = *(undefined4 *)((longlong)puVar8 + 0x11c);
        *(undefined1 *)(puVar8 + 6) = *(undefined1 *)(puVar8 + 0x24);
        *(undefined4 *)((longlong)puVar8 + 0x34) = *(undefined4 *)((longlong)puVar8 + 0x124);
        *(undefined4 *)(puVar8 + 7) = *(undefined4 *)(puVar8 + 0x25);
        plVar9 = puVar8 + 0x26;
        if (puVar8 + 8 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x29]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 8,plVar9,puVar8[0x28]);
        }
        plVar9 = puVar8 + 0x2a;
        if (puVar8 + 0xc != plVar9) {
          if (0xf < (ulonglong)puVar8[0x2d]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 0xc,plVar9,puVar8[0x2c]);
        }
        *(undefined4 *)(puVar8 + 0x10) = *(undefined4 *)(puVar8 + 0x2e);
        plVar9 = puVar8 + 0x2f;
        if (puVar8 + 0x11 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x32]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 0x11,plVar9,puVar8[0x31]);
        }
        if (puVar8 + 0x15 != puVar8 + 0x33) {
          FUN_1807fecd0(puVar8 + 0x15,puVar8[0x33],puVar8[0x34],(undefined1)local_res20);
        }
        puVar8[0x18] = puVar8[0x36];
        puVar8[0x19] = puVar8[0x37];
        *(undefined1 *)(puVar8 + 0x1a) = *(undefined1 *)(puVar8 + 0x38);
        lVar4 = lVar4 + 0xf0;
        puVar8 = puVar8 + 0x1e;
      } while (lVar4 != lVar3);
    }
    puVar8 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0xf0);
    (**(code **)*puVar8)(puVar8,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0xf0;
  }
  return;
}



############ FUN_ 180b8dac0 size=451 ############

void FUN_180b8dac0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b8c8e0();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    FUN_180ad23b0(lVar3 * 0x118 + *(longlong *)(lVar2 + 0x40) + 0x118,*(undefined8 *)(lVar2 + 0x48))
    ;
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x118);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x118;
  }
  return;
}



############ FUN_ 180b90390 size=454 ############

void FUN_180b90390(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b8f830();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x168 + *(longlong *)(lVar2 + 0x40);
    FUN_180adc390(lVar3 + 0x168,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x168);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x168;
  }
  return;
}



############ FUN_ 180b931a0 size=454 ############

void FUN_180b931a0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b924a0();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x150 + *(longlong *)(lVar2 + 0x40);
    FUN_180ae8630(lVar3 + 0x150,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x150);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x150;
  }
  return;
}



############ FUN_ 180b96440 size=454 ############

void FUN_180b96440(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b954f0();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x1d0 + *(longlong *)(lVar2 + 0x40);
    FUN_180af1490(lVar3 + 0x1d0,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x1d0);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x1d0;
  }
  return;
}



############ FUN_ 180b98eb0 size=454 ############

void FUN_180b98eb0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180b98380();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x180 + *(longlong *)(lVar2 + 0x40);
    FUN_180af7e00(lVar3 + 0x180,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x180);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x180;
  }
  return;
}



############ FUN_ 180b99160 size=570 ############

undefined8 FUN_180b99160(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  undefined8 *puVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  char *pcVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  char *local_res8 [2];
  ulonglong local_res18;
  char *local_res20;
  undefined **local_60;
  undefined4 local_58;
  longlong local_50;
  undefined2 local_48;
  
  local_res18 = param_3;
  if ((*(char *)(param_1 + 0x10) == '\0') &&
     ((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5 == 0)) {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] != (char *)0x0) {
      FUN_1805a48c0(local_res8[0],"LsObjectRelationVector<>::at: This one-to-one relation is empty."
                   );
    }
    lVar3 = FUN_1805c0260();
    local_res8[0] = (char *)CONCAT44(local_res8[0]._4_4_,0x6e);
    local_res20 = 
    "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorilokauth.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar3 + 8),&local_res20);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,local_res8);
  }
  if ((ulonglong)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5) <= param_3)
  {
    local_res8[0] = (char *)FUN_1811316e0(0x18);
    if (local_res8[0] == (char *)0x0) {
      lVar3 = 0;
    }
    else {
      lVar3 = FUN_1805a48c0(local_res8[0],
                            "LsObjectRelationVector<>::at: Index is out of range. This object relation vector contains %u entries and the supplied index value was %u"
                           );
    }
    pcVar5 = (char *)FUN_1811316e0(0x18);
    if (pcVar5 == (char *)0x0) {
      pcVar5 = (char *)0x0;
    }
    else {
      local_res8[0] = pcVar5;
      FUN_1805a48c0(pcVar5,"|__FILE__|%s|__LINE__|%d");
      *(undefined ***)pcVar5 = pace::PaceLocationInfoFormatter::vftable;
    }
    local_res8[0] = (char *)((*(longlong **)(param_1 + 8))[1] - **(longlong **)(param_1 + 8) >> 5);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),local_res8);
    FUN_1805b2520(*(undefined8 *)(lVar3 + 8),&local_res18);
    local_res18 = CONCAT44(local_res18._4_4_,0x70);
    local_res8[0] =
         "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lsobjectrelationvectorilokauth.cpp"
    ;
    uVar4 = FUN_1805a21d0(*(undefined8 *)(pcVar5 + 8),local_res8);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,&local_res18);
  }
  lVar3 = **(longlong **)(param_1 + 8);
  if (param_3 < (ulonglong)((*(longlong **)(param_1 + 8))[1] - lVar3 >> 5)) {
    lVar7 = param_3 * 0x20;
    local_60 = license_services::LsRelation::vftable;
    local_58 = *(undefined4 *)(lVar7 + 8 + lVar3);
    local_50 = *(longlong *)(lVar7 + 0x10 + lVar3);
    local_48 = *(undefined2 *)(lVar7 + 0x18 + lVar3);
    cVar2 = FUN_18080b1c0(&local_60);
    if (cVar2 == '\0') {
      lVar3 = *(longlong *)(param_1 + 0x20);
      puVar1 = *(undefined8 **)(*(longlong *)(lVar3 + 8) + 0x20);
      cVar2 = *(char *)((longlong)puVar1[1] + 0x19);
      puVar9 = puVar1;
      puVar8 = (undefined8 *)puVar1[1];
      while (cVar2 == '\0') {
        if ((longlong)puVar8[4] < local_50) {
          puVar6 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar6 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar6;
        cVar2 = *(char *)((longlong)puVar6 + 0x19);
      }
      if ((puVar9 == puVar1) || (local_50 < (longlong)puVar9[4])) {
        puVar9 = puVar1;
      }
      if (puVar9 == puVar1) {
        FUN_180b3c880(lVar3,*(undefined8 *)(param_1 + 8),0);
      }
    }
    else {
      lVar3 = *(longlong *)(param_1 + 0x20);
    }
    FUN_180b3c630(lVar3,param_2,&local_60,0);
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_1808077d0();
}



############ FUN_ 180ba31b0 size=165 ############

void FUN_180ba31b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"AddItem is not supported in the class",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x3a);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 180ba32b0 size=161 ############

void FUN_180ba32b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res10;
  char *local_res18 [2];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"Asn1ItemIsAContainer is not supported in the class",param_3,param_4,
                  uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x46);
  local_res18[0] = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res10);
}



############ FUN_ 180ba3370 size=161 ############

void FUN_180ba3370(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res10;
  char *local_res18 [2];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"Clear is not supported in the class",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0x54);
  local_res18[0] = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],local_res18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res10);
}



############ FUN_ 180ba3430 size=161 ############

void FUN_180ba3430(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"Encode is not supported in the class",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x60);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 180ba3790 size=161 ############

void FUN_180ba3790(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"GetContent (string &) is not supported in the class",param_3,param_4,
                  uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0xab);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 180ba3850 size=161 ############

void FUN_180ba3850(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"GetContent (vector<uint8_t> &) is not supported in the class",param_3
                  ,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0x9f);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 180ba3910 size=173 ############

void FUN_180ba3910(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  char *local_res8;
  undefined8 *local_res10;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res10 = param_2;
  local_res10 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res10 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res10,"GetTheNthItem is not supported in the class",param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res10 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res10 = (undefined8 *)CONCAT44(local_res10._4_4_,0xb8);
  local_res8 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res8);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res10);
}



############ FUN_ 180ba3a00 size=161 ############

void FUN_180ba3a00(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"SetContent (const string &) is not supported in the class",param_3,
                  param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0xd2);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 180ba3ac0 size=161 ############

void FUN_180ba3ac0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *local_res18;
  char *local_res20;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res18 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res18 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res18,"SetContent (const vector<uint8_t> &) is not supported in the class",
                  param_3,param_4,uVar2);
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res18 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d",param_3,param_4,uVar2);
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res18 = (undefined8 *)CONCAT44(local_res18._4_4_,0xc6);
  local_res20 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_res20);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res18);
}



############ FUN_ 180ba3b80 size=161 ############

void FUN_180ba3b80(void)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *local_res20;
  char *local_18;
  undefined8 local_10;
  
  local_10 = 0xfffffffffffffffe;
  local_res20 = (undefined8 *)FUN_1811316e0(0x18);
  if (local_res20 != (undefined8 *)0x0) {
    FUN_1805a48c0(local_res20,"SetContent (CERT_ContentPtr, uint32_t) is not supported in the class"
                 );
  }
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  local_res20 = puVar1;
  if (puVar1 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)0x0;
  }
  else {
    FUN_1805a48c0(puVar1,"|__FILE__|%s|__LINE__|%d");
    *puVar1 = pace::PaceLocationInfoFormatter::vftable;
  }
  local_res20 = (undefined8 *)CONCAT44(local_res20._4_4_,0xdf);
  local_18 = "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\asn1.cpp";
  uVar2 = FUN_1805a21d0(puVar1[1],&local_18);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar2,&local_res20);
}



############ FUN_ 180ba6fe0 size=454 ############

void FUN_180ba6fe0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180ba5de0();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x150 + *(longlong *)(lVar2 + 0x40);
    FUN_180b26c40(lVar3 + 0x150,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x150);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x150;
  }
  return;
}



############ FUN_ 180ba9f80 size=728 ############

void FUN_180ba9f80(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  longlong local_res20;
  
  lVar4 = FUN_180ba9050();
  if (lVar4 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar4 = 0;
      }
      else {
        lVar4 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar4 + 8),param_2 + 8);
    }
  }
  else {
    puVar8 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar7 = (undefined8 *)puVar8[1];
    puVar10 = puVar8;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar5 = puVar7;
      do {
        if ((longlong)puVar5[4] < *(longlong *)(param_2 + 0x10)) {
          puVar6 = (undefined8 *)puVar5[2];
        }
        else {
          if ((*(char *)((longlong)puVar8 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar5[4])) {
            puVar8 = puVar5;
          }
          puVar6 = (undefined8 *)*puVar5;
          puVar10 = puVar5;
        }
        puVar5 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
    }
    puVar5 = puVar10;
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar7[4]) {
          puVar6 = (undefined8 *)*puVar7;
          puVar8 = puVar7;
        }
        else {
          puVar6 = (undefined8 *)puVar7[2];
        }
        puVar7 = puVar6;
      } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
    }
    while (puVar5 != puVar8) {
      puVar7 = (undefined8 *)puVar5[2];
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar7 + 0x19);
        puVar5 = puVar7;
        puVar7 = (undefined8 *)*puVar7;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar7 + 0x19);
          puVar5 = puVar7;
          puVar7 = (undefined8 *)*puVar7;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar6 = (undefined8 *)puVar5[1];
        puVar7 = puVar5;
        while ((puVar5 = puVar6, cVar1 == '\0' && (puVar7 == (undefined8 *)puVar5[2]))) {
          cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
          puVar6 = (undefined8 *)puVar5[1];
          puVar7 = puVar5;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar10);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar4 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = *(longlong *)(lVar2 + 0x48);
    lVar4 = lVar4 * 0xb0 + 0xb0 + *(longlong *)(lVar2 + 0x40);
    if (lVar4 != lVar3) {
      puVar8 = (undefined8 *)(lVar4 + -0x98);
      do {
        *(undefined4 *)(puVar8 + -1) = *(undefined4 *)(puVar8 + 0x15);
        *puVar8 = puVar8[0x16];
        *(undefined2 *)(puVar8 + 1) = *(undefined2 *)(puVar8 + 0x17);
        *(undefined1 *)(puVar8 + 2) = *(undefined1 *)(puVar8 + 0x18);
        plVar9 = puVar8 + 0x19;
        if (puVar8 + 3 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x1c]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 3,plVar9,puVar8[0x1b]);
        }
        plVar9 = puVar8 + 0x1d;
        if (puVar8 + 7 != plVar9) {
          if (0xf < (ulonglong)puVar8[0x20]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 7,plVar9,puVar8[0x1f]);
        }
        plVar9 = puVar8 + 0x21;
        if (puVar8 + 0xb != plVar9) {
          if (0xf < (ulonglong)puVar8[0x24]) {
            plVar9 = (longlong *)*plVar9;
          }
          FUN_1805a6cb0(puVar8 + 0xb,plVar9,puVar8[0x23]);
        }
        if (puVar8 + 0xf != puVar8 + 0x25) {
          FUN_1807fecd0(puVar8 + 0xf,puVar8[0x25],puVar8[0x26],(undefined1)local_res20);
        }
        *(undefined4 *)(puVar8 + 0x12) = *(undefined4 *)(puVar8 + 0x28);
        *(undefined2 *)((longlong)puVar8 + 0x94) = *(undefined2 *)((longlong)puVar8 + 0x144);
        lVar4 = lVar4 + 0xb0;
        puVar8 = puVar8 + 0x16;
      } while (lVar4 != lVar3);
    }
    puVar8 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0xb0);
    (**(code **)*puVar8)(puVar8,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0xb0;
  }
  return;
}



############ FUN_ 180bacca0 size=455 ############

void FUN_180bacca0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180bac130();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x140 + *(longlong *)(lVar2 + 0x40);
    FUN_180b38850(lVar3 + 0x140,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x140);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x140;
  }
  return;
}



############ FUN_ 180bb00e0 size=454 ############

void FUN_180bb00e0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180baf390();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 0x110 + *(longlong *)(lVar2 + 0x40);
    FUN_180b3ed00(lVar3 + 0x110,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -0x110);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -0x110;
  }
  return;
}



############ FUN_ 180bb31f0 size=454 ############

void FUN_180bb31f0(longlong param_1,longlong param_2,char param_3)

{
  void *_Src;
  void *_Dst;
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong local_res20;
  
  lVar3 = FUN_180bb2410();
  if (lVar3 == -1) {
    if (param_3 == '\0') {
      local_res20 = FUN_1811316e0(0x18);
      if (local_res20 == 0) {
        lVar3 = 0;
      }
      else {
        lVar3 = FUN_1805a48c0(local_res20,
                              "Attempt to remove the object with entityId: %d and instanceId: %ld from the LsEntity metadata failed because the object is not stored in the metadata."
                             );
      }
      FUN_1805c0260();
                    /* WARNING: Subroutine does not return */
      FUN_1805b20d0(*(undefined8 *)(lVar3 + 8),param_2 + 8);
    }
  }
  else {
    puVar7 = *(undefined8 **)(*(longlong *)(param_1 + 0x10) + 0x28);
    puVar6 = (undefined8 *)puVar7[1];
    puVar8 = puVar7;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar4 = puVar6;
      do {
        if ((longlong)puVar4[4] < *(longlong *)(param_2 + 0x10)) {
          puVar5 = (undefined8 *)puVar4[2];
        }
        else {
          if ((*(char *)((longlong)puVar7 + 0x19) != '\0') &&
             (*(longlong *)(param_2 + 0x10) < (longlong)puVar4[4])) {
            puVar7 = puVar4;
          }
          puVar5 = (undefined8 *)*puVar4;
          puVar8 = puVar4;
        }
        puVar4 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
    }
    puVar4 = puVar8;
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      do {
        if (*(longlong *)(param_2 + 0x10) < (longlong)puVar6[4]) {
          puVar5 = (undefined8 *)*puVar6;
          puVar7 = puVar6;
        }
        else {
          puVar5 = (undefined8 *)puVar6[2];
        }
        puVar6 = puVar5;
      } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
    }
    while (puVar4 != puVar7) {
      puVar6 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar6 + 0x19);
          puVar4 = puVar6;
          puVar6 = (undefined8 *)*puVar6;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar5 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
        while ((puVar4 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar5 = (undefined8 *)puVar4[1];
          puVar6 = puVar4;
        }
      }
    }
    FUN_180815160(*(longlong *)(param_1 + 0x10) + 0x28,&local_res20,puVar8);
    lVar2 = *(longlong *)(param_1 + 0x10);
    _Dst = (void *)(*(longlong *)(lVar2 + 0x10) + lVar3 * 8);
    _Src = (void *)((longlong)_Dst + 8);
    memmove(_Dst,_Src,*(longlong *)(lVar2 + 0x18) - (longlong)_Src);
    *(longlong *)(lVar2 + 0x18) = *(longlong *)(lVar2 + 0x18) + -8;
    lVar2 = *(longlong *)(param_1 + 0x10);
    lVar3 = lVar3 * 400 + *(longlong *)(lVar2 + 0x40);
    FUN_180b479f0(lVar3 + 400,*(undefined8 *)(lVar2 + 0x48),lVar3,0);
    puVar7 = (undefined8 *)(*(longlong *)(lVar2 + 0x48) + -400);
    (**(code **)*puVar7)(puVar7,0);
    *(longlong *)(lVar2 + 0x48) = *(longlong *)(lVar2 + 0x48) + -400;
  }
  return;
}



############ FUN_ 180bd2460 size=182 ############

undefined8 * FUN_180bd2460(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined **local_50;
  code *local_48;
  undefined ***local_18;
  
  local_50 = std::_Func_impl_no_alloc<bool_(__cdecl*)(void*___ptr64),bool,void*___ptr64>::vftable;
  local_48 = FUN_180bd3810;
  local_18 = &local_50;
  FUN_180bc9960(param_1,&local_50,param_1,param_2,0xfffffffffffffffe);
  *param_1 = pace::dlc::LicenseStateCallbackThread::vftable;
  puVar1 = param_1 + 0x1f;
  *puVar1 = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  puVar2 = (undefined8 *)FUN_1811316e0(0x10);
  *puVar1 = puVar2;
  *puVar2 = 0;
  puVar2[1] = 0;
  *(undefined8 **)*puVar1 = puVar1;
  return param_1;
}



############ FUN_ 180bd4220 size=921 ############

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

longlong FUN_180bd4220(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 param_4,
                      undefined8 param_5,undefined8 param_6)

{
  undefined4 *puVar1;
  ulonglong uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined4 *puVar6;
  uint uVar7;
  undefined1 auStack_e8 [40];
  undefined4 *local_c0;
  undefined1 local_b0;
  undefined8 local_90;
  uint local_88;
  uint local_84;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  ulonglong local_40;
  
  local_70 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_e8;
  uVar5 = (uint)&stack0x00000000;
  uVar3 = uVar5 & 0x17f;
  iVar4 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  puVar6 = (undefined4 *)0x0;
  local_88 = 0 << ((byte)(((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e) & 0x1f) ^
             0x270;
  uVar7 = ((uVar5 & 0xaff) + 1) * (uVar5 & 0xaff) + 0x7b91 & 0x80000001;
  uVar3 = (((uVar5 & 0x21ff) + 1) * (uVar5 & 0x21ff) + 7) % 0x51;
  uVar3 = (int)((-uVar3 | uVar3) & (-uVar7 | uVar7)) >> 0x1f;
  local_84 = ~((int)(-uVar3 | uVar3) >> 0x1f & 0xfffff7dfU) & 0x2c3e;
  local_90 = param_1;
  puVar1 = (undefined4 *)FUN_1811316e0(0x68);
  local_c0 = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_2;
    puVar1[1] = param_3;
    FUN_180487aa0(puVar1 + 2,param_4);
    FUN_180487aa0(puVar1 + 10,param_5);
    FUN_180487aa0(puVar1 + 0x12,param_6);
    puVar6 = puVar1;
  }
  local_80 = 0;
  uStack_78 = 0;
  uVar2 = FUN_180bd2400(&local_80,puVar6,local_b0);
  return -(~uVar2 + 1);
}



############ FUN_ 180bd2400 size=91 ############

void FUN_180bd2400(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x18);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)(puVar1 + 1) = 1;
    *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
    *puVar1 = std::_Ref_count<pace::dlc::LicenseStateCallbackData_T>::vftable;
    puVar1[2] = param_2;
  }
  *param_1 = param_2;
  param_1[1] = puVar1;
  return;
}



############ FUN_ 180bd2870 size=497 ############

void FUN_180bd2870(longlong param_1,ulonglong param_2)

{
  ulonglong uVar1;
  code *pcVar2;
  longlong lVar3;
  ulonglong uVar4;
  void *pvVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  size_t sVar8;
  size_t sVar9;
  void *pvVar10;
  
  uVar4 = *(ulonglong *)(param_1 + 0x10);
  uVar7 = 1;
  if (uVar4 != 0) {
    uVar7 = uVar4;
  }
  for (; (uVar7 - uVar4 < param_2 || (uVar7 < 8)); uVar7 = uVar7 * 2) {
    if (0xfffffffffffffff - uVar7 < uVar7) {
      FUN_180bd2a70(param_1);
      pcVar2 = (code *)swi(3);
      (*pcVar2)();
      return;
    }
  }
  uVar7 = uVar7 - uVar4;
  uVar1 = *(ulonglong *)(param_1 + 0x18);
  uVar6 = (uVar4 + uVar7) * 8;
  if (uVar4 + uVar7 < 0x2000000000000000) {
    if (uVar6 < 0x1000) {
      if (uVar6 == 0) {
        pvVar10 = (void *)0x0;
      }
      else {
        pvVar10 = (void *)FUN_1811316e0(uVar6);
      }
      goto LAB_180bd2939;
    }
  }
  else {
    uVar6 = 0xffffffffffffffff;
  }
  uVar4 = uVar6 + 0x27;
  if (uVar4 <= uVar6) {
    uVar4 = 0xffffffffffffffff;
  }
  lVar3 = FUN_1811316e0(uVar4);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
  pvVar10 = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0);
  *(longlong *)((longlong)pvVar10 - 8) = lVar3;
LAB_180bd2939:
  sVar9 = uVar1 * 8;
  pvVar5 = (void *)(*(longlong *)(param_1 + 8) + sVar9);
  sVar8 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar5) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar9 + (longlong)pvVar10),pvVar5,sVar8);
  pvVar5 = (void *)(sVar8 + (longlong)(sVar9 + (longlong)pvVar10));
  if (uVar7 < uVar1) {
    sVar8 = uVar7 * 8;
    memmove(pvVar5,*(void **)(param_1 + 8),sVar8);
    pvVar5 = (void *)(sVar8 + *(longlong *)(param_1 + 8));
    sVar9 = (*(longlong *)(param_1 + 8) - (longlong)pvVar5) + sVar9;
    memmove(pvVar10,pvVar5,sVar9);
    pvVar5 = (void *)(sVar9 + (longlong)pvVar10);
  }
  else {
    memmove(pvVar5,*(void **)(param_1 + 8),sVar9);
    memset((void *)(sVar9 + (longlong)pvVar5),0,(uVar7 - uVar1) * 8);
    pvVar5 = pvVar10;
    sVar8 = sVar9;
  }
  memset(pvVar5,0,sVar8);
  pvVar5 = *(void **)(param_1 + 8);
  if (pvVar5 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar10;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar7;
    return;
  }
  pvVar10 = pvVar5;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar10 = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar10);
}



############ FUN_ 181132980 size=1457 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 * GetPluginFactory(void)

{
  char *pcVar1;
  char cVar2;
  void *pvVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  ulonglong uVar8;
  longlong lVar9;
  int iVar10;
  int iVar11;
  char *pcVar12;
  int *piVar13;
  undefined4 extraout_XMM0_Da;
  undefined4 uVar14;
  
                    /* 0x1132980  439  GetPluginFactory */
  DAT_182673710 = 2;
  if (DAT_182674c98 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(DAT_182674c98 + 1) = *(int *)(DAT_182674c98 + 1) + 1;
    UNLOCK();
    return DAT_182674c98;
  }
  DAT_182674c98 = (undefined8 *)FUN_1811316e0(0x1f0);
  iVar10 = 0x40;
  pcVar12 = (char *)((longlong)DAT_182674c98 + 0xc);
  *DAT_182674c98 = juce::JucePluginFactory::vftable;
  *(undefined4 *)(DAT_182674c98 + 1) = 1;
  iVar6 = 0x40;
  iVar4 = 0x40;
  lVar9 = (longlong)"oeksound" - (longlong)pcVar12;
  do {
    cVar2 = pcVar12[lVar9];
    *pcVar12 = cVar2;
    pcVar12 = pcVar12 + 1;
    if (cVar2 == '\0') {
      if ((iVar4 != 0) && (uVar8 = (ulonglong)(iVar4 - 1U), iVar4 - 1U != 0)) {
        for (; uVar8 != 0; uVar8 = uVar8 - 1) {
          *pcVar12 = '\0';
          pcVar12 = pcVar12 + 1;
        }
      }
      break;
    }
    iVar4 = iVar4 + -1;
  } while (iVar4 != 0);
  pcVar12 = (char *)((longlong)DAT_182674c98 + 0x4c);
  iVar4 = 0x100;
  lVar9 = (longlong)"oeksound.com" - (longlong)pcVar12;
  do {
    cVar2 = pcVar12[lVar9];
    *pcVar12 = cVar2;
    pcVar12 = pcVar12 + 1;
    if (cVar2 == '\0') {
      if ((iVar4 != 0) && (uVar8 = (ulonglong)(iVar4 - 1U), iVar4 - 1U != 0)) {
        for (; uVar8 != 0; uVar8 = uVar8 - 1) {
          *pcVar12 = '\0';
          pcVar12 = pcVar12 + 1;
        }
      }
      break;
    }
    iVar4 = iVar4 + -1;
  } while (iVar4 != 0);
  iVar11 = 0x80;
  pcVar12 = (char *)((longlong)DAT_182674c98 + 0x14c);
  iVar7 = 0x80;
  iVar4 = 0x80;
  lVar9 = (longlong)"contact@oeksound.com" - (longlong)pcVar12;
  do {
    cVar2 = pcVar12[lVar9];
    *pcVar12 = cVar2;
    pcVar12 = pcVar12 + 1;
    if (cVar2 == '\0') {
      if ((iVar4 != 0) && (uVar8 = (ulonglong)(iVar4 - 1U), iVar4 - 1U != 0)) {
        for (; uVar8 != 0; uVar8 = uVar8 - 1) {
          *pcVar12 = '\0';
          pcVar12 = pcVar12 + 1;
        }
      }
      break;
    }
    iVar4 = iVar4 + -1;
  } while (iVar4 != 0);
  pvVar3 = ThreadLocalStoragePointer;
  uVar8 = (ulonglong)_tls_index;
  *(undefined4 *)((longlong)DAT_182674c98 + 0x1cc) = 0x10;
  DAT_182674c98[0x3a] = 0;
  iVar4 = 0x20;
  piVar13 = (int *)(*(longlong *)((longlong)pvVar3 + uVar8 * 8) + 0xc);
  DAT_182674c98[0x3b] = 0;
  DAT_182674c98[0x3c] = 0;
  DAT_182674c98[0x3d] = 0;
  uVar14 = extraout_XMM0_Da;
  if ((*piVar13 < DAT_18267ad48) &&
     (uVar14 = _Init_thread_header(&DAT_18267ad48), DAT_18267ad48 == -1)) {
    memset(&DAT_18267ab90,0,0x1b8);
    pcVar12 = &DAT_18267aba4;
    _DAT_18267aba0 = 0x7fffffff;
    _DAT_18267ab90 = (undefined4)DAT_18262b410;
    uRam000000018267ab94 = DAT_18262b410._4_4_;
    uRam000000018267ab98 = (undefined4)DAT_18262b418;
    uRam000000018267ab9c = DAT_18262b418._4_4_;
    iVar5 = iVar4;
    do {
      pcVar1 = pcVar12 + -0x4a0bb4;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar5 != 0) && (uVar8 = (ulonglong)(iVar5 - 1U), iVar5 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar5 = iVar5 + -1;
    } while (iVar5 != 0);
    pcVar12 = &DAT_18267abc4;
    do {
      pcVar1 = pcVar12 + -0x4a0bdc;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar6 != 0) && (uVar8 = (ulonglong)(iVar6 - 1U), iVar6 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar6 = iVar6 + -1;
    } while (iVar6 != 0);
    pcVar12 = &DAT_18267ac08;
    _DAT_18267ac04 = 0;
    do {
      pcVar1 = pcVar12 + -0x4a0c38;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar7 != 0) && (uVar8 = (ulonglong)(iVar7 - 1U), iVar7 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar7 = iVar7 + -1;
    } while (iVar7 != 0);
    pcVar12 = &DAT_18267ac88;
    iVar6 = 0x40;
    do {
      pcVar1 = pcVar12 + -0x4a0cc8;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar6 != 0) && (uVar8 = (ulonglong)(iVar6 - 1U), iVar6 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar6 = iVar6 + -1;
    } while (iVar6 != 0);
    pcVar12 = &DAT_18267acc8;
    iVar6 = 0x40;
    do {
      pcVar1 = pcVar12 + -0x4a10c4;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar6 != 0) && (uVar8 = (ulonglong)(iVar6 - 1U), iVar6 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar6 = iVar6 + -1;
    } while (iVar6 != 0);
    pcVar12 = &DAT_18267ad08;
    iVar6 = 0x40;
LAB_181132d20:
    pcVar1 = pcVar12 + -0x4a0d58;
    *pcVar12 = *pcVar1;
    pcVar12 = pcVar12 + 1;
    if (*pcVar1 != '\0') goto code_r0x000181132d2d;
    if ((iVar6 != 0) && (uVar8 = (ulonglong)(iVar6 - 1U), iVar6 - 1U != 0)) {
      for (; uVar8 != 0; uVar8 = uVar8 - 1) {
        *pcVar12 = '\0';
        pcVar12 = pcVar12 + 1;
      }
    }
    uVar14 = _Init_thread_footer(&DAT_18267ad48);
  }
LAB_181132b00:
  uVar14 = FUN_18047b360(uVar14,&DAT_18267ab90,FUN_181133060);
  if ((*piVar13 < DAT_18267ab88) &&
     (uVar14 = _Init_thread_header(&DAT_18267ab88), DAT_18267ab88 == -1)) {
    memset(&DAT_18267ad50,0,0x1b8);
    pcVar12 = &DAT_18267ad64;
    _DAT_18267ad60 = 0x7fffffff;
    _DAT_18267ad50 = (undefined4)DAT_18262b368;
    uRam000000018267ad54 = DAT_18262b368._4_4_;
    uRam000000018267ad58 = (undefined4)DAT_18262b370;
    uRam000000018267ad5c = DAT_18262b370._4_4_;
    do {
      pcVar1 = pcVar12 + -0x4a0d04;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar4 != 0) && (iVar4 - 1U != 0)) {
          for (uVar8 = (ulonglong)(iVar4 - 1U); uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
    pcVar12 = &DAT_18267ad84;
    iVar4 = 0x40;
    do {
      pcVar1 = pcVar12 + -0x4a0d5c;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar4 != 0) && (uVar8 = (ulonglong)(iVar4 - 1U), iVar4 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
    pcVar12 = &DAT_18267adc8;
    _DAT_18267adc4 = 0;
    do {
      pcVar1 = pcVar12 + -0x4a0d98;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar11 != 0) && (iVar11 - 1U != 0)) {
          for (uVar8 = (ulonglong)(iVar11 - 1U); uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar11 = iVar11 + -1;
    } while (iVar11 != 0);
    pcVar12 = &DAT_18267ae48;
    iVar4 = 0x40;
    do {
      pcVar1 = pcVar12 + -0x4a0e30;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar4 != 0) && (uVar8 = (ulonglong)(iVar4 - 1U), iVar4 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
    pcVar12 = &DAT_18267ae88;
    iVar4 = 0x40;
    do {
      pcVar1 = pcVar12 + -0x4a125c;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar4 != 0) && (uVar8 = (ulonglong)(iVar4 - 1U), iVar4 - 1U != 0)) {
          for (; uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        break;
      }
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
    pcVar12 = &DAT_18267aec8;
    do {
      pcVar1 = pcVar12 + -0x4a0ec0;
      *pcVar12 = *pcVar1;
      pcVar12 = pcVar12 + 1;
      if (*pcVar1 == '\0') {
        if ((iVar10 != 0) && (iVar10 - 1U != 0)) {
          for (uVar8 = (ulonglong)(iVar10 - 1U); uVar8 != 0; uVar8 = uVar8 - 1) {
            *pcVar12 = '\0';
            pcVar12 = pcVar12 + 1;
          }
        }
        uVar14 = _Init_thread_footer(&DAT_18267ab88);
        goto LAB_181132b27;
      }
      iVar10 = iVar10 + -1;
    } while (iVar10 != 0);
    uVar14 = _Init_thread_footer(&DAT_18267ab88);
  }
LAB_181132b27:
  FUN_18047b360(uVar14,&DAT_18267ad50,FUN_181132f40);
  return DAT_182674c98;
code_r0x000181132d2d:
  iVar6 = iVar6 + -1;
  if (iVar6 == 0) goto code_r0x000181132d32;
  goto LAB_181132d20;
code_r0x000181132d32:
  uVar14 = _Init_thread_footer(&DAT_18267ad48);
  goto LAB_181132b00;
}



############ FUN_ 181132f40 size=273 ############

undefined8 * FUN_181132f40(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  puVar1 = (undefined8 *)FUN_1811316e0(0x6228);
  FUN_18113a060(puVar1);
  *puVar1 = juce::JuceVST3EditController::vftable;
  puVar1[2] = juce::JuceVST3EditController::vftable;
  puVar1[3] = juce::JuceVST3EditController::vftable;
  puVar1[6] = juce::JuceVST3EditController::vftable;
  puVar1[7] = juce::JuceVST3EditController::vftable;
  puVar1[0xd] = juce::JuceVST3EditController::vftable;
  puVar1[0xe] = juce::JuceVST3EditController::vftable;
  puVar1[0xf] = juce::JuceVST3EditController::vftable;
  puVar1[0x10] = juce::JuceVST3EditController::vftable;
  puVar1[0x11] = juce::JuceVST3EditController::vftable;
  puVar1[0x12] = 0;
  puVar2 = (undefined8 *)((longlong)puVar1 + 0x9c);
  lVar3 = 0x820;
  do {
    *puVar2 = 0xffffffffffffffff;
    puVar2 = puVar2 + 1;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
  *(undefined2 *)((longlong)puVar1 + 0x621c) = 0;
  *(undefined4 *)(puVar1 + 0xc44) = 0x3f800000;
  if (param_1 != (undefined8 *)0x0) {
    (**(code **)*param_1)(param_1,&DAT_18262b038,puVar1 + 4,(undefined8 *)*param_1,uVar4);
  }
  return puVar1 + 6;
}



############ FUN_ 181133060 size=66 ############

longlong FUN_181133060(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x360);
  lVar2 = FUN_180478b30(uVar1,param_1,param_3,param_4,uVar3);
  if (lVar2 != 0) {
    return lVar2 + 8;
  }
  return 0;
}



############ FUN_ 181134b70 size=358 ############

undefined8 FUN_181134b70(longlong param_1,void *param_2,void *param_3,uint param_4)

{
  undefined8 *puVar1;
  void *_Dst;
  undefined2 *_Dst_00;
  longlong *plVar2;
  uint uVar3;
  ulonglong uVar4;
  undefined **local_30;
  undefined2 *local_28;
  uint local_20;
  ulonglong uVar5;
  
  FUN_181135760();
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *(uint *)(puVar1 + 1) = param_4;
  *(undefined4 *)((longlong)puVar1 + 0xc) = 3;
  _Dst = (void *)thunk_FUN_1811316e0(param_4);
  *puVar1 = _Dst;
  memcpy(_Dst,param_3,(ulonglong)param_4);
  local_28 = (undefined2 *)0x0;
  local_20 = local_20 & 0x80000000;
  local_30 = Steinberg::String::vftable;
  if (param_2 != (void *)0x0) {
    uVar4 = 0xffffffffffffffff;
    do {
      uVar5 = uVar4;
      uVar4 = uVar5 + 1;
    } while (*(char *)((longlong)param_2 + uVar4) != '\0');
    uVar3 = (uint)uVar4;
    if (uVar3 != 0) {
      _Dst_00 = malloc((ulonglong)((int)uVar5 + 2));
      if (_Dst_00 == (undefined2 *)0x0) goto LAB_181134c95;
      if ((local_20 & 0x40000000) == 0) {
        *(undefined1 *)_Dst_00 = 0;
        *(undefined1 *)((uVar4 & 0xffffffff) + (longlong)_Dst_00) = 0;
      }
      else {
        *_Dst_00 = 0;
        _Dst_00[uVar4 & 0xffffffff] = 0;
      }
      local_28 = _Dst_00;
      if ((_Dst_00 != (undefined2 *)0x0) && (0 < (int)uVar3)) {
        memcpy(_Dst_00,param_2,(longlong)(int)uVar3);
      }
    }
    local_20 = uVar3 & 0x3fffffff | local_20 & 0x80000000;
  }
LAB_181134c95:
  plVar2 = (longlong *)FUN_18047c5d0(param_1 + 0x10,&local_30);
  *plVar2 = (longlong)puVar1;
  local_30 = Steinberg::String::vftable;
  if (local_28 == (undefined2 *)0x0) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  free(local_28);
}



############ FUN_ 181134eb0 size=602 ############

undefined8 FUN_181134eb0(longlong param_1,void *param_2,short *param_3)

{
  short sVar1;
  undefined1 auVar2 [16];
  undefined8 *puVar3;
  undefined8 uVar4;
  void *_Dst;
  undefined2 *puVar5;
  longlong *plVar6;
  uint uVar7;
  uint uVar8;
  short *psVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  undefined **local_70;
  undefined2 *local_68;
  uint local_60;
  undefined **local_58;
  undefined2 *local_50;
  uint local_48;
  
  FUN_181135760();
  puVar3 = (undefined8 *)FUN_1811316e0(0x10);
  local_50 = (undefined2 *)0x0;
  uVar7 = local_48 & 0x80000000;
  local_58 = Steinberg::String::vftable;
  local_48 = uVar7 | 0x40000000;
  psVar9 = param_3;
  if (param_3 != (short *)0x0) {
    do {
      sVar1 = *psVar9;
      psVar9 = psVar9 + 1;
    } while (sVar1 != 0);
    uVar10 = (longlong)psVar9 - (longlong)param_3 >> 1;
    uVar8 = (int)uVar10 - 1;
    if (uVar8 == 0) {
      local_48 = uVar7 | 0x40000000;
    }
    else {
      local_48 = uVar7 | 0x40000000;
      puVar5 = malloc((uVar10 & 0xffffffff) * 2);
      if (puVar5 == (undefined2 *)0x0) goto LAB_181134fb9;
      if ((local_48 & 0x40000000) == 0) {
        *(undefined1 *)puVar5 = 0;
        *(undefined1 *)((ulonglong)uVar8 + (longlong)puVar5) = 0;
      }
      else {
        *puVar5 = 0;
        puVar5[uVar8] = 0;
      }
      local_50 = puVar5;
      if ((puVar5 != (undefined2 *)0x0) && (0 < (int)uVar8)) {
        memcpy(puVar5,param_3,(longlong)(int)uVar8 * 2);
      }
    }
    local_48 = uVar8 & 0x3fffffff | local_48 & 0xc0000000 | 0x40000000;
  }
LAB_181134fb9:
  uVar7 = (*(code *)local_58[1])(&local_58);
  *(uint *)(puVar3 + 1) = uVar7;
  *(undefined4 *)((longlong)puVar3 + 0xc) = 2;
  auVar2._8_8_ = 0;
  auVar2._0_8_ = CONCAT44(0,uVar7);
  uVar4 = SUB168(ZEXT816(2) * auVar2,0);
  if (SUB168(ZEXT816(2) * auVar2,8) != 0) {
    uVar4 = 0xffffffffffffffff;
  }
  _Dst = (void *)thunk_FUN_1811316e0(uVar4);
  *puVar3 = _Dst;
  memcpy(_Dst,param_3,CONCAT44(0,uVar7) * 2);
  local_68 = (undefined2 *)0x0;
  local_60 = local_60 & 0x80000000;
  local_70 = Steinberg::String::vftable;
  uVar10 = 0xffffffffffffffff;
  if (param_2 != (void *)0x0) {
    do {
      uVar11 = uVar10;
      uVar10 = uVar11 + 1;
    } while (*(char *)((longlong)param_2 + uVar10) != '\0');
    uVar7 = (uint)uVar10;
    if (uVar7 != 0) {
      puVar5 = malloc((ulonglong)((int)uVar11 + 2));
      if (puVar5 == (undefined2 *)0x0) goto LAB_1811350af;
      if ((local_60 & 0x40000000) == 0) {
        *(undefined1 *)puVar5 = 0;
        *(undefined1 *)((uVar10 & 0xffffffff) + (longlong)puVar5) = 0;
      }
      else {
        *puVar5 = 0;
        puVar5[uVar10 & 0xffffffff] = 0;
      }
      local_68 = puVar5;
      if ((puVar5 != (undefined2 *)0x0) && (0 < (int)uVar7)) {
        memcpy(puVar5,param_2,(longlong)(int)uVar7);
      }
    }
    local_60 = uVar7 & 0x3fffffff | local_60 & 0x80000000;
  }
LAB_1811350af:
  plVar6 = (longlong *)FUN_18047c5d0(param_1 + 0x10,&local_70);
  *plVar6 = (longlong)puVar3;
  local_70 = Steinberg::String::vftable;
  if (local_68 != (undefined2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_68);
  }
  local_70 = Steinberg::ConstString::vftable;
  local_58 = Steinberg::String::vftable;
  if (local_50 == (undefined2 *)0x0) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1811352e0 size=342 ############

undefined8 FUN_1811352e0(longlong param_1,void *param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined2 *_Dst;
  longlong *plVar2;
  uint uVar3;
  ulonglong uVar4;
  undefined **local_40;
  undefined2 *local_38;
  uint local_30;
  ulonglong uVar5;
  
  FUN_181135760();
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *(undefined4 *)(puVar1 + 1) = 0;
  *(undefined4 *)((longlong)puVar1 + 0xc) = 1;
  *puVar1 = param_3;
  local_38 = (undefined2 *)0x0;
  local_30 = local_30 & 0x80000000;
  local_40 = Steinberg::String::vftable;
  if (param_2 != (void *)0x0) {
    uVar4 = 0xffffffffffffffff;
    do {
      uVar5 = uVar4;
      uVar4 = uVar5 + 1;
    } while (*(char *)((longlong)param_2 + uVar4) != '\0');
    uVar3 = (uint)uVar4;
    if (uVar3 != 0) {
      _Dst = malloc((ulonglong)((int)uVar5 + 2));
      if (_Dst == (undefined2 *)0x0) goto LAB_1811353ef;
      if ((local_30 & 0x40000000) == 0) {
        *(undefined1 *)_Dst = 0;
        *(undefined1 *)((uVar4 & 0xffffffff) + (longlong)_Dst) = 0;
      }
      else {
        *_Dst = 0;
        _Dst[uVar4 & 0xffffffff] = 0;
      }
      local_38 = _Dst;
      if ((_Dst != (undefined2 *)0x0) && (0 < (int)uVar3)) {
        memcpy(_Dst,param_2,(longlong)(int)uVar3);
      }
    }
    local_30 = uVar3 & 0x3fffffff | local_30 & 0x80000000;
  }
LAB_1811353ef:
  plVar2 = (longlong *)FUN_18047c5d0(param_1 + 0x10,&local_40);
  *plVar2 = (longlong)puVar1;
  local_40 = Steinberg::String::vftable;
  if (local_38 == (undefined2 *)0x0) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  free(local_38);
}



############ FUN_ 181135600 size=336 ############

undefined8 FUN_181135600(longlong param_1,void *param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined2 *_Dst;
  longlong *plVar2;
  uint uVar3;
  ulonglong uVar4;
  undefined **local_30;
  undefined2 *local_28;
  uint local_20;
  ulonglong uVar5;
  
  FUN_181135760();
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  puVar1[1] = 0;
  *puVar1 = param_3;
  local_28 = (undefined2 *)0x0;
  local_20 = local_20 & 0x80000000;
  local_30 = Steinberg::String::vftable;
  if (param_2 != (void *)0x0) {
    uVar4 = 0xffffffffffffffff;
    do {
      uVar5 = uVar4;
      uVar4 = uVar5 + 1;
    } while (*(char *)((longlong)param_2 + uVar4) != '\0');
    uVar3 = (uint)uVar4;
    if (uVar3 != 0) {
      _Dst = malloc((ulonglong)((int)uVar5 + 2));
      if (_Dst == (undefined2 *)0x0) goto LAB_18113570f;
      if ((local_20 & 0x40000000) == 0) {
        *(undefined1 *)_Dst = 0;
        *(undefined1 *)((uVar4 & 0xffffffff) + (longlong)_Dst) = 0;
      }
      else {
        *_Dst = 0;
        _Dst[uVar4 & 0xffffffff] = 0;
      }
      local_28 = _Dst;
      if ((_Dst != (undefined2 *)0x0) && (0 < (int)uVar3)) {
        memcpy(_Dst,param_2,(longlong)(int)uVar3);
      }
    }
    local_20 = uVar3 & 0x3fffffff | local_20 & 0x80000000;
  }
LAB_18113570f:
  plVar2 = (longlong *)FUN_18047c5d0(param_1 + 0x10,&local_30);
  *plVar2 = (longlong)puVar1;
  local_30 = Steinberg::String::vftable;
  if (local_28 == (undefined2 *)0x0) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  free(local_28);
}



############ FUN_ 181135bd0 size=69 ############

undefined8 FUN_181135bd0(longlong param_1)

{
  undefined8 uVar1;
  
  if (*(longlong *)(param_1 + 0x18) == 0) {
    uVar1 = FUN_1811316e0(0x20);
    uVar1 = FUN_181135ab0(uVar1);
    *(undefined8 *)(param_1 + 0x18) = uVar1;
    return uVar1;
  }
  return *(undefined8 *)(param_1 + 0x18);
}



############ FUN_ 181135ed0 size=339 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181135ed0(undefined8 param_1,longlong *param_2,longlong *param_3,undefined8 *param_4)

{
  bool bVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  undefined8 local_50;
  undefined **local_48;
  longlong local_40;
  longlong lStack_38;
  undefined **local_30;
  longlong local_28;
  longlong lStack_20;
  ulonglong local_18;
  
  local_50 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_48 = Steinberg::FUID::vftable;
  local_40 = 0;
  lStack_38 = 0;
  if (param_2 != (longlong *)0x0) {
    local_40 = *param_2;
    lStack_38 = param_2[1];
  }
  local_30 = Steinberg::FUID::vftable;
  local_28 = 0;
  lStack_20 = 0;
  if (param_3 != (longlong *)0x0) {
    local_28 = *param_3;
    lStack_20 = param_3[1];
  }
  if ((local_40 != DAT_18262af90) || (bVar1 = true, lStack_38 != DAT_18262af98)) {
    bVar1 = false;
  }
  if (bVar1) {
    if ((local_28 != DAT_18262af90) || (bVar1 = true, lStack_20 != DAT_18262af98)) {
      bVar1 = false;
    }
    if (bVar1) {
      puVar2 = (undefined8 *)FUN_1811316e0(0x20);
      *puVar2 = Steinberg::Vst::HostMessage::vftable;
      puVar2[2] = 0;
      puVar2[3] = 0;
      *(undefined4 *)(puVar2 + 1) = 1;
      *param_4 = puVar2;
    }
  }
  if ((local_40 != DAT_18262b080) || (bVar1 = true, lStack_38 != DAT_18262b088)) {
    bVar1 = false;
  }
  if (bVar1) {
    if ((local_28 != DAT_18262b080) || (bVar1 = true, lStack_20 != DAT_18262b088)) {
      bVar1 = false;
    }
    if (bVar1) {
      local_58 = FUN_1811316e0(0x20);
      uVar3 = FUN_181135ab0(local_58);
      *param_4 = uVar3;
    }
  }
  *param_4 = 0;
}



############ FUN_ 181136a60 size=77 ############

void FUN_181136a60(longlong *param_1)

{
  longlong *plVar1;
  
  if (*param_1 == 0) {
    plVar1 = (longlong *)FUN_1811316e0();
    *plVar1 = 0;
    plVar1[1] = 0;
    plVar1[2] = 0;
    *param_1 = (longlong)plVar1;
    if ((ulonglong)(plVar1[2] - *plVar1 >> 3) < 10) {
      FUN_18047cf30(plVar1);
      return;
    }
  }
  return;
}



############ FUN_ 181138470 size=556 ############

longlong * FUN_181138470(longlong param_1)

{
  short sVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  size_t _Size;
  longlong *plVar6;
  short *_Src;
  longlong *_Dst;
  short *psVar7;
  longlong lVar8;
  longlong *plVar9;
  int iVar10;
  longlong lVar11;
  longlong *local_res10;
  
  if (*(longlong *)(param_1 + 0x150) != 0) {
    return *(longlong **)(param_1 + 0x150);
  }
  plVar6 = (longlong *)FUN_1811316e0(0x350);
  uVar2 = *(undefined4 *)(param_1 + 0x118);
  uVar3 = *(undefined4 *)(param_1 + 0x10);
  local_res10 = plVar6;
  FUN_181137760(plVar6);
  lVar11 = 0;
  *plVar6 = (longlong)Steinberg::Vst::StringListParameter::vftable;
  plVar6[0x67] = 0;
  psVar7 = (short *)(param_1 + 0x16);
  plVar6[0x68] = 0;
  lVar8 = (longlong)plVar6 + (0x14 - (param_1 + 0x14));
  plVar6[0x69] = 0;
  do {
    *(short *)(lVar8 + -2 + (longlong)psVar7) = psVar7[-1];
    if ((((psVar7[-1] == 0) || (*(short *)(lVar8 + (longlong)psVar7) = *psVar7, *psVar7 == 0)) ||
        (*(short *)(lVar8 + 2 + (longlong)psVar7) = psVar7[1], psVar7[1] == 0)) ||
       (*(short *)(lVar8 + 4 + (longlong)psVar7) = psVar7[2], psVar7[2] == 0)) break;
    lVar11 = lVar11 + 4;
    psVar7 = psVar7 + 4;
  } while (lVar11 < 0x80);
  *(undefined2 *)((longlong)plVar6 + 0x112) = 0;
  *(undefined4 *)((longlong)plVar6 + 0x314) = 0xffffffff;
  plVar6[99] = 0;
  *(undefined4 *)((longlong)plVar6 + 0x324) = 0x8009;
  *(undefined4 *)(plVar6 + 2) = uVar3;
  *(undefined4 *)(plVar6 + 100) = uVar2;
  plVar4 = *(longlong **)(param_1 + 0x128);
  for (plVar9 = *(longlong **)(param_1 + 0x120); plVar9 != plVar4; plVar9 = plVar9 + 3) {
    _Src = (short *)(**(code **)(*plVar9 + 0x18))(plVar9);
    psVar7 = _Src;
    if ((undefined **)*plVar6 == Steinberg::Vst::StringListParameter::vftable) {
      do {
        sVar1 = *psVar7;
        psVar7 = psVar7 + 1;
      } while (sVar1 != 0);
      iVar10 = (int)((longlong)psVar7 - (longlong)_Src >> 1);
      _Dst = malloc((longlong)iVar10 * 2);
      local_res10 = _Dst;
      if (_Dst != (longlong *)0x0) {
        _Size = (longlong)(iVar10 + -1) * 2;
        memcpy(_Dst,_Src,_Size);
        *(undefined2 *)(_Size + (longlong)_Dst) = 0;
        puVar5 = (undefined8 *)plVar6[0x68];
        if ((undefined8 *)plVar6[0x69] == puVar5) {
          FUN_1804803a0(plVar6 + 0x67,puVar5,&local_res10);
        }
        else {
          *puVar5 = _Dst;
          plVar6[0x68] = plVar6[0x68] + 8;
        }
        *(int *)((longlong)plVar6 + 0x314) = *(int *)((longlong)plVar6 + 0x314) + 1;
      }
    }
    else {
      (*(code *)((undefined **)*plVar6)[0x13])(plVar6,_Src);
    }
  }
  *(longlong **)(param_1 + 0x150) = plVar6;
  return plVar6;
}



############ FUN_ 18114d800 size=284 ############

void FUN_18114d800(longlong param_1)

{
  undefined8 **ppuVar1;
  undefined8 *puVar2;
  undefined8 *_Dst;
  undefined8 uVar3;
  undefined8 *local_res8;
  undefined1 local_30 [24];
  
  ppuVar1 = (undefined8 **)(param_1 + 0x58);
  if (*ppuVar1 == (undefined8 *)0x0) {
    _Dst = (undefined8 *)FUN_1811316e0(0x50);
    local_res8 = _Dst;
    memset(_Dst,0,0x50);
    *_Dst = 0;
    _Dst[1] = 0;
    uVar3 = FUN_18048c850();
    *_Dst = uVar3;
    _Dst[2] = 0;
    _Dst[3] = 0;
    uVar3 = FUN_18048a0f0();
    _Dst[2] = uVar3;
    _Dst[4] = 0;
    _Dst[5] = 0;
    uVar3 = FUN_18048a0f0();
    _Dst[4] = uVar3;
    _Dst[6] = 0;
    _Dst[7] = 0;
    uVar3 = FUN_18048a0f0();
    _Dst[6] = uVar3;
    _Dst[8] = 0;
    _Dst[9] = 0;
    uVar3 = FUN_18048a0f0();
    _Dst[8] = uVar3;
    if ((ppuVar1 == &local_res8) ||
       (puVar2 = *ppuVar1, *ppuVar1 = _Dst, puVar2 != (undefined8 *)0x0)) {
      FUN_1804882d0();
    }
  }
  FUN_18048d670(*ppuVar1,local_30);
  return;
}



############ FUN_ 18114cb00 size=2595 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_18114cb00(longlong param_1)

{
  LPCRITICAL_SECTION p_Var1;
  uint uVar2;
  char cVar3;
  int iVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  longlong *plVar8;
  longlong lVar9;
  longlong *plVar10;
  uint *puVar11;
  undefined8 *puVar12;
  longlong *plVar13;
  undefined1 auStack_2b8 [32];
  longlong *local_298;
  undefined4 local_290;
  undefined8 *local_288;
  undefined1 *local_280;
  undefined1 **local_270;
  longlong *local_268;
  longlong *local_260;
  longlong local_258;
  longlong local_250;
  longlong local_248;
  longlong local_240;
  longlong local_238 [4];
  longlong local_218;
  longlong local_210;
  longlong local_208;
  undefined1 *local_200;
  longlong local_1f8;
  undefined1 local_1f0 [8];
  undefined8 local_1e8;
  undefined8 local_1e0;
  void *local_1d8;
  undefined8 local_1d0;
  undefined1 local_1c8;
  undefined1 local_1c0 [8];
  char *local_1b8;
  char *local_1b0;
  char *local_1a8;
  undefined *local_1a0;
  char *local_198;
  longlong *local_190;
  longlong local_188;
  longlong local_180 [9];
  LPCRITICAL_SECTION local_138;
  longlong local_130;
  longlong local_128;
  LPCRITICAL_SECTION local_120;
  LPCRITICAL_SECTION local_118;
  LPCRITICAL_SECTION local_110;
  undefined8 *local_108;
  longlong *local_100;
  undefined8 local_f8;
  LPCRITICAL_SECTION local_f0;
  undefined1 local_e8 [80];
  undefined **local_98;
  undefined1 local_90 [8];
  undefined **local_88;
  longlong *local_80;
  undefined **local_78;
  longlong *local_70;
  undefined **local_68;
  longlong local_60;
  undefined **local_58;
  undefined1 local_50 [8];
  undefined **local_48;
  longlong *local_40;
  ulonglong local_38;
  
  local_f8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_2b8;
  iVar7 = _Mtx_lock();
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  if (*(longlong *)(param_1 + 0x58) == 0) {
    iVar7 = _Mtx_unlock(param_1);
    if (iVar7 != 0) {
      std::_Throw_C_error(iVar7);
    }
  }
  iVar7 = _Mtx_unlock(param_1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  plVar8 = (longlong *)FUN_1811316e0(0x20);
  *(undefined4 *)(plVar8 + 1) = 0;
  *plVar8 = (longlong)juce::DynamicObject::vftable;
  plVar8[2] = 0;
  plVar8[3] = 0;
  LOCK();
  *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
  UNLOCK();
  local_238[1] = 0;
  local_238[2] = 0;
  local_78 = &PTR_vftable_18262b4c8;
  local_190 = plVar8;
  local_100 = plVar8;
  local_260 = (longlong *)FUN_1811316e0(0x20);
  *(undefined4 *)(local_260 + 1) = 0;
  *local_260 = (longlong)juce::var::VariantType_Array::RefCountedArray::vftable;
  local_260[2] = 0;
  local_238[1] = 0;
  local_260[3] = 0;
  local_238[2] = 0;
  LOCK();
  *(int *)(local_260 + 1) = (int)local_260[1] + 1;
  UNLOCK();
  local_70 = local_260;
  lVar9 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
  local_f0 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar9);
  local_1b8 = "instances";
  FUN_181211b90(&local_250,lVar9,&local_1b8);
  LeaveCriticalSection(p_Var1);
  if (*(code **)(*plVar8 + 0x18) == FUN_181226840) {
    FUN_181243cd0(plVar8 + 2);
  }
  else {
    (**(code **)(*plVar8 + 0x18))(plVar8,&local_250,&local_78);
  }
  puVar11 = (uint *)(local_250 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  (**(code **)(*local_78 + 0xb0))(local_78,&local_70);
  FUN_180487600(local_238 + 1);
  lVar9 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
  local_138 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar9);
  local_1b0 = "instances";
  FUN_181211b90(&local_248,lVar9,&local_1b0);
  LeaveCriticalSection(p_Var1);
  if (*(code **)(*plVar8 + 0x10) == FUN_181226850) {
    plVar10 = (longlong *)plVar8[2];
    plVar5 = plVar10 + (longlong)*(int *)((longlong)plVar8 + 0x1c) * 3;
    if (plVar10 == plVar5) {
LAB_18114cd9d:
      plVar10 = (longlong *)FUN_181244160();
    }
    else {
      do {
        local_130 = *plVar10;
        if (local_130 == local_248) {
          plVar10 = plVar10 + 1;
          if (plVar10 != (longlong *)0x0) goto LAB_18114cda2;
          goto LAB_18114cd9d;
        }
        plVar10 = plVar10 + 3;
      } while (plVar10 != plVar5);
      plVar10 = (longlong *)FUN_181244160();
    }
  }
  else {
    plVar10 = (longlong *)(**(code **)(*plVar8 + 0x10))(plVar8,&local_248);
  }
LAB_18114cda2:
  plVar10 = (longlong *)
            (**(code **)(*(longlong *)*plVar10 + 0x38))((longlong *)*plVar10,plVar10 + 1);
  puVar11 = (uint *)(local_248 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  local_128 = param_1;
  iVar7 = _Mtx_lock(param_1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  plVar5 = (longlong *)**(longlong **)(param_1 + 0x58);
  plVar13 = (longlong *)*plVar5;
  if (plVar13 != plVar5) {
    local_1a8 = "instance_id";
    local_1a0 = &DAT_1821da9c8;
    local_198 = "version";
    do {
      local_268 = (longlong *)FUN_1811316e0();
      *(undefined4 *)(local_268 + 1) = 0;
      *local_268 = (longlong)juce::DynamicObject::vftable;
      local_268[2] = 0;
      local_268[3] = 0;
      LOCK();
      *(int *)(local_268 + 1) = (int)local_268[1] + 1;
      UNLOCK();
      local_260 = local_268;
      FUN_18049c4e0(&local_218,"mouse_gestures");
      FUN_18114d5d0(&local_268,plVar13 + 4,&local_218,*(longlong *)(param_1 + 0x58) + 0x10);
      puVar11 = (uint *)(local_218 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      FUN_18049c4e0(&local_210,"events");
      FUN_18114d5d0(&local_268,plVar13 + 4,&local_210,*(longlong *)(param_1 + 0x58) + 0x20);
      puVar11 = (uint *)(local_210 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      FUN_18049c4e0(&local_208,"parameter_updates");
      FUN_18114d5d0(&local_268,plVar13 + 4,&local_208,*(longlong *)(param_1 + 0x58) + 0x30);
      puVar11 = (uint *)(local_208 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      FUN_18049c4e0(local_238 + 3,"state_snapshots");
      FUN_18114d5d0(&local_268,plVar13 + 4,local_238 + 3,*(longlong *)(param_1 + 0x58) + 0x40);
      puVar11 = (uint *)(local_238[3] + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      local_68 = &PTR_vftable_18262b560;
      local_60 = plVar13[4];
      if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
        UNLOCK();
      }
      lVar9 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
      local_120 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar9);
      FUN_181211b90(&local_240,lVar9,&local_1a8);
      LeaveCriticalSection(p_Var1);
      if (*(code **)(*local_268 + 0x18) == FUN_181226840) {
        FUN_181243cd0(local_268 + 2);
      }
      else {
        (**(code **)(*local_268 + 0x18))(local_268,&local_240,&local_68);
      }
      puVar11 = (uint *)(local_240 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      (**(code **)(*local_68 + 0xb0))(local_68,&local_60);
      local_98 = &PTR_vftable_18262b560;
      FUN_18049c4e0(local_90,"soothe2");
      lVar9 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
      local_118 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar9);
      FUN_181211b90(&local_258,lVar9,&local_1a0);
      LeaveCriticalSection(p_Var1);
      if (*(code **)(*local_268 + 0x18) == FUN_181226840) {
        FUN_181243cd0(local_268 + 2);
      }
      else {
        (**(code **)(*local_268 + 0x18))(local_268,&local_258,&local_98);
      }
      puVar11 = (uint *)(local_258 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      (**(code **)(*local_98 + 0xb0))(local_98,local_90);
      local_58 = &PTR_vftable_18262b560;
      FUN_18049c4e0(local_50,"1.1.2");
      lVar9 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
      local_110 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar9);
      FUN_181211b90(local_238,lVar9,&local_198);
      LeaveCriticalSection(p_Var1);
      if (*(code **)(*local_268 + 0x18) == FUN_181226840) {
        FUN_181243cd0(local_268 + 2);
      }
      else {
        (**(code **)(*local_268 + 0x18))(local_268,local_238,&local_58);
      }
      puVar11 = (uint *)(local_238[0] + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      (**(code **)(*local_58 + 0xb0))(local_58,local_50);
      plVar8 = local_268;
      local_88 = &PTR_vftable_18262b4d0;
      local_80 = local_268;
      LOCK();
      *(int *)(local_268 + 1) = (int)local_268[1] + 1;
      UNLOCK();
      iVar4 = *(int *)((longlong)plVar10 + 0xc);
      iVar7 = iVar4 + 1;
      if ((int)plVar10[1] < iVar7) {
        if (iVar7 < 0) {
          iVar7 = iVar4 + 2;
        }
        FUN_180489a50(plVar10,iVar4 + 9 + (iVar7 >> 1) & 0xfffffff8);
      }
      iVar7 = *(int *)((longlong)plVar10 + 0xc);
      *(int *)((longlong)plVar10 + 0xc) = iVar7 + 1;
      puVar12 = (undefined8 *)((longlong)iVar7 * 0x10 + *plVar10);
      *puVar12 = local_88;
      puVar12[1] = local_80;
      local_88 = &PTR_vftable_18262b558;
      (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_80);
      LOCK();
      plVar8 = plVar8 + 1;
      lVar9 = *plVar8;
      *(int *)plVar8 = (int)*plVar8 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        (**(code **)*local_268)(local_268,1);
      }
      plVar8 = (longlong *)plVar13[2];
      if (*(char *)((longlong)plVar8 + 0x19) == '\0') {
        cVar3 = *(char *)(*plVar8 + 0x19);
        plVar13 = plVar8;
        plVar8 = (longlong *)*plVar8;
        while (cVar3 == '\0') {
          cVar3 = *(char *)(*plVar8 + 0x19);
          plVar13 = plVar8;
          plVar8 = (longlong *)*plVar8;
        }
      }
      else {
        cVar3 = *(char *)(plVar13[1] + 0x19);
        plVar6 = (longlong *)plVar13[1];
        plVar8 = plVar13;
        while ((plVar13 = plVar6, cVar3 == '\0' && (plVar8 == (longlong *)plVar13[2]))) {
          cVar3 = *(char *)(plVar13[1] + 0x19);
          plVar6 = (longlong *)plVar13[1];
          plVar8 = plVar13;
        }
      }
      plVar8 = local_190;
    } while (plVar13 != plVar5);
  }
  lVar9 = *(longlong *)(param_1 + 0x58);
  *(undefined8 *)(param_1 + 0x58) = 0;
  if (lVar9 != 0) {
    FUN_1804882d0();
  }
  iVar7 = _Mtx_unlock(param_1);
  if (iVar7 != 0) {
    std::_Throw_C_error(iVar7);
  }
  local_48 = &PTR_vftable_18262b4d0;
  LOCK();
  *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
  UNLOCK();
  local_40 = plVar8;
  FUN_1812495e0(local_1f0,&local_48,1);
  (**(code **)(*local_48 + 0xb0))(local_48,&local_40);
  FUN_18049c4e0(&local_188,
                "Accept:application/json\napi_key:89a489tq34htgah943o83fhoqo3qhgh4fhoq3hovh3gohq3ohq3ofhohqohoq"
               );
  local_180[0] = DAT_182673990;
  if ((*(uint *)(DAT_182673990 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(DAT_182673990 + -0x10) = *(int *)(DAT_182673990 + -0x10) + 1;
    UNLOCK();
  }
  local_180[1] = 0;
  local_180[2] = 0;
  local_180[3] = 0;
  local_180[4] = 0;
  local_180[5] = 0;
  local_180[6] = 0;
  local_180[7] = 0;
  local_180[8] = 0;
  FUN_181215140(local_180);
  FUN_181248100(local_180,local_e8,local_1f0);
  FUN_1804858a0(local_180);
  local_1e8 = 0;
  local_1e0 = 0;
  local_1d8 = (void *)0x0;
  local_1d0 = 0;
  local_1c8 = 1;
  local_200 = &DAT_1821dbf98;
  local_1f8 = local_188;
  puVar11 = (uint *)(local_188 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    *puVar11 = *puVar11 + 1;
    UNLOCK();
  }
  local_270 = &local_200;
  local_280 = local_1c0;
  local_288 = &local_1e8;
  local_290 = 2000;
  local_298 = &local_1f8;
  local_108 = (undefined8 *)FUN_181247c70(local_e8,1);
  if (local_108 != (undefined8 *)0x0) {
    (**(code **)*local_108)(local_108,1);
  }
  FUN_180488c50(&local_1d8);
                    /* WARNING: Subroutine does not return */
  free(local_1d8);
}



############ FUN_ 18114d5d0 size=529 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18114d5d0(longlong *param_1,undefined8 *param_2,undefined8 param_3,code *param_4)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  uint *_Memory;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_e8 [32];
  longlong local_c8 [2];
  undefined8 *local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 *local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 *local_60;
  undefined **local_58;
  undefined8 *local_50;
  ulonglong local_48;
  
  local_c8[1] = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  puVar3 = *(undefined8 **)param_4;
  puVar6 = puVar3;
  local_b8 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    uVar4 = *param_2;
    puVar5 = puVar3;
    puVar7 = (undefined8 *)puVar3[1];
    local_b0 = uVar4;
    do {
      puVar6 = puVar7;
      local_a8 = puVar6[4];
      iVar2 = FUN_18048cbc0(local_a8,uVar4);
      if (iVar2 < 0) {
        puVar7 = (undefined8 *)puVar6[2];
        puVar6 = puVar5;
      }
      else {
        puVar7 = (undefined8 *)*puVar6;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  local_a0 = puVar3;
  if (puVar6 == puVar3) {
LAB_18114d66e:
    puVar6 = puVar3;
  }
  else {
    local_98 = puVar6[4];
    local_90 = *param_2;
    iVar2 = FUN_18048cbc0();
    if (iVar2 < 0) goto LAB_18114d66e;
  }
  if (puVar6 == puVar3) {
  }
  puVar6 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    uVar4 = *param_2;
    puVar5 = puVar3;
    puVar7 = (undefined8 *)puVar3[1];
    local_88 = uVar4;
    do {
      puVar6 = puVar7;
      local_80 = puVar6[4];
      iVar2 = FUN_18048cbc0(local_80,uVar4);
      if (iVar2 < 0) {
        puVar7 = (undefined8 *)puVar6[2];
        puVar6 = puVar5;
      }
      else {
        puVar7 = (undefined8 *)*puVar6;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  local_78 = puVar3;
  if (puVar6 == puVar3) {
LAB_18114d7e0:
    std::_Xout_of_range("invalid map<K, T> key");
  }
  else {
    local_70 = puVar6[4];
    local_68 = *param_2;
    iVar2 = FUN_18048cbc0();
    if (iVar2 < 0) goto LAB_18114d7e0;
    local_58 = &PTR_vftable_18262b4c8;
    puVar3 = (undefined8 *)FUN_1811316e0(0x20);
    *(undefined4 *)(puVar3 + 1) = 0;
    *puVar3 = juce::var::VariantType_Array::RefCountedArray::vftable;
    local_60 = puVar3;
    FUN_18049b170(puVar3 + 2,puVar6 + 5);
    LOCK();
    *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
    UNLOCK();
    local_50 = puVar3;
    uVar4 = FUN_18122bf10();
    FUN_18122c1b0(uVar4,local_c8,param_3);
    param_4 = *(code **)(*(longlong *)*param_1 + 0x18);
    if (param_4 == FUN_181226840) {
      FUN_181243cd0((longlong *)*param_1 + 2,local_c8,&local_58);
      goto LAB_18114d77d;
    }
  }
  (*param_4)();
LAB_18114d77d:
  _Memory = (uint *)(local_c8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*local_58 + 0xb0))(local_58,&local_50);
}



############ FUN_ 181247c70 size=1139 ############

undefined8 *
FUN_181247c70(undefined8 param_1,undefined1 param_2,byte *param_3,longlong param_4,longlong *param_5
             ,int param_6,longlong param_7,undefined4 *param_8,undefined8 param_9,longlong *param_10
             )

{
  uint uVar1;
  char *pcVar2;
  char cVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  uint *puVar7;
  int iVar8;
  int iVar9;
  undefined8 *puVar10;
  byte *local_res18;
  longlong local_res20;
  byte *local_88;
  undefined8 local_80;
  undefined8 *local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  void *local_58;
  undefined8 local_50;
  undefined1 local_48;
  
  local_80 = 0xfffffffffffffffe;
  local_res18 = param_3;
  local_res20 = param_4;
  cVar3 = FUN_1812146f0();
  if (cVar3 != '\0') {
    FUN_181214270(&local_res20,param_1);
    local_res18 = (byte *)FUN_1811316e0(0x28);
    puVar4 = (undefined8 *)FUN_18123efe0(local_res18,&local_res20);
    if (*(char *)puVar4[4] != '\0') {
      (**(code **)*puVar4)(puVar4,1);
      puVar4 = (undefined8 *)0x0;
    }
    puVar7 = (uint *)(local_res20 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(*param_5 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(*param_10 + -0x10);
    if ((*puVar7 & 0x30000000) != 0) {
      return puVar4;
    }
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 != 0) {
      return puVar4;
    }
                    /* WARNING: Subroutine does not return */
    free(puVar7);
  }
  local_res20 = FUN_1811316e0(0x18);
  puVar4 = (undefined8 *)FUN_181212de0(local_res20,param_1,param_2);
  iVar9 = 0;
  local_70 = 0;
  lVar6 = -1;
  local_78 = puVar4;
  if (*(char *)*param_5 == '\0') goto LAB_181247ebf;
  puVar10 = (undefined8 *)(puVar4[1] + 0x68);
  pcVar2 = (char *)*puVar10;
  lVar5 = lVar6;
  if (*pcVar2 == '\0') {
LAB_181247e1c:
    if (*(char *)*puVar10 != '\0') {
      FUN_181232e20(puVar10,&DAT_182496878,&DAT_18249687a);
    }
  }
  else {
    do {
      lVar5 = lVar5 + 1;
    } while (pcVar2[lVar5] != '\0');
    local_res18 = (byte *)(pcVar2 + lVar5);
    iVar8 = iVar9;
    do {
      local_res18 = local_res18 + -1;
      if ((*local_res18 & 0xc0) != 0x80) break;
      iVar8 = iVar8 + 1;
    } while (iVar8 < 4);
    iVar8 = FUN_180492f10(&local_res18);
    if (iVar8 != 10) goto LAB_181247e1c;
  }
  FUN_181232d30(puVar10,param_5);
  pcVar2 = (char *)*puVar10;
  if (*pcVar2 != '\0') {
    do {
      lVar6 = lVar6 + 1;
    } while (pcVar2[lVar6] != '\0');
    local_88 = (byte *)(pcVar2 + lVar6);
    do {
      local_88 = local_88 + -1;
      if ((*local_88 & 0xc0) != 0x80) break;
      iVar9 = iVar9 + 1;
    } while (iVar9 < 4);
    iVar9 = FUN_180492f10(&local_88);
    if (iVar9 == 10) goto LAB_181247ebf;
  }
  if (*(char *)*puVar10 != '\0') {
    FUN_181232e20(puVar10,&DAT_182496878,&DAT_18249687a);
  }
LAB_181247ebf:
  if (param_6 != 0) {
    *(int *)(puVar4[1] + 0x8c) = param_6;
  }
  pcVar2 = (char *)*param_10;
  if (*pcVar2 != '\0') {
    lVar6 = puVar4[1];
    if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar5 = *(longlong *)(lVar6 + 0x90);
    *(longlong *)(lVar6 + 0x90) = *param_10;
    UNLOCK();
    puVar7 = (uint *)(lVar5 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  *(undefined4 *)(puVar4[1] + 0x98) = 5;
  if (*(char *)(puVar4 + 2) == '\0') {
    *(undefined1 *)(puVar4 + 2) = 1;
    cVar3 = FUN_180499180(puVar4[1],0);
  }
  else {
    cVar3 = *(longlong *)(puVar4[1] + 0x60) != 0;
  }
  if (param_8 != (undefined4 *)0x0) {
    if (*(char *)(puVar4 + 2) == '\0') {
      *(undefined1 *)(puVar4 + 2) = 1;
      FUN_180499180(puVar4[1],0);
    }
    *param_8 = *(undefined4 *)puVar4[1];
  }
  if (param_7 == 0) {
    if ((cVar3 == '\0') || (*(longlong *)(puVar4[1] + 0x60) == 0)) {
      (**(code **)*puVar4)(puVar4,1);
      puVar7 = (uint *)(*param_5 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(*param_10 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar4 = (undefined8 *)0x0;
    }
    else {
      puVar7 = (uint *)(*param_5 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(*param_10 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
    return puVar4;
  }
  if (*(char *)(puVar4 + 2) == '\0') {
    *(undefined1 *)(puVar4 + 2) = 1;
    FUN_180499180(puVar4[1],0);
  }
  lVar6 = puVar4[1];
  local_68 = 0;
  local_60 = 0;
  FUN_18048c4c0(&local_68,*(undefined8 *)(lVar6 + 0xa0),*(undefined4 *)(lVar6 + 0xac));
  local_58 = (void *)0x0;
  local_50 = 0;
  FUN_18048c4c0(&local_58,*(undefined8 *)(lVar6 + 0xb0),*(undefined4 *)(lVar6 + 0xbc));
  local_48 = *(undefined1 *)(lVar6 + 0xc0);
  FUN_18122ddb0(param_7,&local_68);
  FUN_18122ddb0(param_7 + 0x10,&local_58);
  FUN_180488c50(&local_58);
                    /* WARNING: Subroutine does not return */
  free(local_58);
}



############ FUN_ 181212de0 size=269 ############

undefined8 * FUN_181212de0(undefined8 *param_1,undefined8 param_2,char param_3)

{
  undefined4 *puVar1;
  undefined *puVar2;
  
  *param_1 = juce::WebInputStream::vftable;
  puVar1 = (undefined4 *)FUN_1811316e0(0xf8);
  *puVar1 = 0;
  *(undefined8 **)(puVar1 + 2) = param_1;
  FUN_18049a120(puVar1 + 4,param_2);
  *(undefined8 *)(puVar1 + 0x16) = 0;
  *(undefined8 *)(puVar1 + 0x18) = 0;
  *(undefined1 **)(puVar1 + 0x1a) = &DAT_1821dbf98;
  *(undefined8 *)(puVar1 + 0x1c) = 0;
  *(undefined8 *)(puVar1 + 0x1e) = 0;
  *(undefined8 *)(puVar1 + 0x20) = 0;
  *(undefined1 *)(puVar1 + 0x22) = 0;
  *(char *)((longlong)puVar1 + 0x89) = param_3;
  puVar1[0x23] = 0;
  puVar2 = &DAT_182496acc;
  if (param_3 != '\0') {
    puVar2 = &DAT_182496ac4;
  }
  FUN_18049c4e0(puVar1 + 0x24,puVar2);
  puVar1[0x26] = 5;
  *(undefined8 *)(puVar1 + 0x28) = 0;
  *(undefined8 *)(puVar1 + 0x2a) = 0;
  *(undefined8 *)(puVar1 + 0x2c) = 0;
  *(undefined8 *)(puVar1 + 0x2e) = 0;
  *(undefined1 *)(puVar1 + 0x30) = 1;
  InitializeCriticalSection((LPCRITICAL_SECTION)(puVar1 + 0x32));
  *(undefined1 *)(puVar1 + 0x3d) = 0;
  param_1[1] = puVar1;
  *(undefined1 *)(param_1 + 2) = 0;
  return param_1;
}



############ FUN_ 18114f090 size=197 ############

void FUN_18114f090(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  void *pvVar2;
  void *_Memory;
  undefined8 local_res18;
  undefined *local_res20;
  
  local_res20 = &DAT_1826737d0;
  local_res18 = param_3;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_1826737d0);
  pvVar2 = DAT_182673948;
  if (DAT_182673663 == '\0') {
    DAT_182673663 = '\x01';
    FUN_18114e850();
    uVar1 = FUN_1811316e0(0x10);
    pvVar2 = (void *)FUN_18048d490(uVar1,FUN_18114e8b0,param_1,param_2,&local_res18);
    _Memory = DAT_182673948;
    if (DAT_182673948 != (void *)0x0) {
      if (*(int *)((longlong)DAT_182673948 + 8) != 0) {
        DAT_182673948 = pvVar2;
                    /* WARNING: Subroutine does not return */
        terminate();
      }
      DAT_182673948 = pvVar2;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  DAT_182673948 = pvVar2;
                    /* WARNING: Could not recover jumptable at 0x00018114f14f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_1826737d0);
  return;
}



############ FUN_ 1811529f0 size=199 ############

void FUN_1811529f0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  
  if (0 < (int)param_1[9]) {
    FUN_1811528b0(param_1,&local_res10,param_3,param_4,0xfffffffffffffffe);
    uVar3 = (int)param_1[9] - 1;
    uVar1 = 0;
    if (uVar3 < *(uint *)((longlong)param_1 + 0x44)) {
      uVar1 = *(undefined8 *)(param_1[7] + (longlong)(int)uVar3 * 8);
    }
    FUN_18115d300(param_1,uVar1);
    FUN_1811528b0(param_1,&local_res8);
    local_res18 = FUN_1811316e0(0x28);
    uVar2 = local_res10;
    uVar1 = local_res8;
    local_res8 = 0;
    local_res10 = 0;
    uVar1 = FUN_181152830(local_res18,uVar2,uVar1,param_1);
    if (*(char *)(*param_1 + 0x1b8) == '\0') {
      uVar2 = FUN_18118c230();
      FUN_181352640(uVar2);
      FUN_1813526d0(uVar2,uVar1);
    }
  }
  return;
}



############ FUN_ 181152ac0 size=203 ############

void FUN_181152ac0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  
  if ((int)param_1[9] < *(int *)((longlong)param_1 + 0x44) + -1) {
    FUN_1811528b0(param_1,&local_res10,param_3,param_4,0xfffffffffffffffe);
    uVar3 = (int)param_1[9] + 1;
    uVar1 = 0;
    if (uVar3 < *(uint *)((longlong)param_1 + 0x44)) {
      uVar1 = *(undefined8 *)(param_1[7] + (longlong)(int)uVar3 * 8);
    }
    FUN_18115d300(param_1,uVar1);
    FUN_1811528b0(param_1,&local_res8);
    local_res18 = FUN_1811316e0(0x28);
    uVar2 = local_res10;
    uVar1 = local_res8;
    local_res8 = 0;
    local_res10 = 0;
    uVar1 = FUN_181152830(local_res18,uVar2,uVar1,param_1);
    if (*(char *)(*param_1 + 0x1b8) == '\0') {
      uVar2 = FUN_18118c230();
      FUN_181352640(uVar2);
      FUN_1813526d0(uVar2,uVar1);
    }
  }
  return;
}



############ FUN_ 181184bc0 size=151 ############

void FUN_181184bc0(longlong param_1)

{
  undefined8 **ppuVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *local_res8;
  
  ppuVar1 = (undefined8 **)(param_1 + 0x18);
  if (*(longlong *)(param_1 + 0x18) == 0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x28);
    puVar3[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar3 + 2) = 0;
    *puVar3 = AutoCueState::Delayed::vftable;
    puVar3[3] = param_1;
    *(undefined4 *)(puVar3 + 4) = 300;
    local_res8 = puVar3;
    FUN_1812a77d0(puVar3,300);
    if (ppuVar1 == &local_res8) {
      puVar4 = (undefined8 *)*puVar3;
    }
    else {
      puVar2 = *ppuVar1;
      *ppuVar1 = puVar3;
      if (puVar2 == (undefined8 *)0x0) {
        return;
      }
      puVar4 = (undefined8 *)*puVar2;
      puVar3 = puVar2;
    }
    (*(code *)*puVar4)(puVar3,1);
  }
  return;
}



############ FUN_ 181185030 size=482 ############

void FUN_181185030(longlong param_1,longlong *param_2,longlong *param_3,longlong *param_4)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined8 **ppuVar3;
  undefined8 **ppuVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  bool bVar7;
  undefined8 **local_res8;
  undefined8 *local_res20;
  undefined8 ***local_48;
  undefined8 **local_40;
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  ppuVar4 = (undefined8 **)FUN_1811316e0(0x30);
  local_res8 = ppuVar4;
  FUN_18049c4e0(&local_48,&DAT_1821d8e3e);
  puVar6 = (undefined8 *)*param_3;
  if ((*(uint *)(puVar6 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(puVar6 + -2) = *(int *)(puVar6 + -2) + 1;
    UNLOCK();
  }
  puVar1 = (undefined8 *)*param_2;
  if ((*(uint *)(puVar1 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(puVar1 + -2) = *(int *)(puVar1 + -2) + 1;
    UNLOCK();
  }
  *ppuVar4 = puVar1;
  ppuVar4[1] = puVar6;
  ppuVar4[2] = local_48;
  ppuVar4[3] = (undefined8 *)0x0;
  ppuVar4[4] = (undefined8 *)0x0;
  ppuVar4[5] = (undefined8 *)0x0;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  puVar6 = (undefined8 *)*param_4;
  puVar1 = (undefined8 *)param_4[1];
  if (puVar6 != puVar1) {
    local_40 = &local_res20;
    local_48 = &local_res8;
    do {
      local_res8 = (undefined8 **)*puVar6;
      local_res20 = (undefined8 *)0x0;
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      ppuVar3 = local_res8;
      local_res8 = (undefined8 **)0x0;
      *puVar5 = 0;
      puVar5[1] = ppuVar3;
      puVar5[2] = ppuVar4;
      FUN_180485e60(ppuVar4 + 3,puVar5);
      if (local_res8 != (undefined8 **)0x0) {
        (*(code *)**local_res8)(local_res8,1);
      }
      if (local_res20 != (undefined8 *)0x0) {
        (**(code **)*local_res20)(local_res20,1);
      }
      puVar6 = puVar6 + 1;
    } while (puVar6 != puVar1);
  }
  local_40 = ppuVar4;
  FUN_1812c2c80(*(undefined8 *)(param_1 + 0x30),&local_40);
  return;
}



############ FUN_ 18118e130 size=3791 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018118e921) overlaps instruction at (ram,0x00018118e920)
    */
/* WARNING: Removing unreachable block (ram,0x00018118fdaa) */
/* WARNING: Removing unreachable block (ram,0x00018118e523) */
/* WARNING: Removing unreachable block (ram,0x00018118e1b9) */
/* WARNING: Removing unreachable block (ram,0x00018118e6fe) */
/* WARNING: Removing unreachable block (ram,0x00018118e91c) */
/* WARNING: Removing unreachable block (ram,0x00018118e1a6) */

undefined8 FUN_18118e130(longlong param_1,longlong *param_2,char param_3)

{
  float fVar1;
  undefined8 uVar2;
  float *pfVar3;
  undefined8 uVar4;
  uint uVar5;
  float fVar6;
  int unaff_retaddr;
  
  uVar2 = FUN_18118c230(param_1 + -0x20);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    FUN_18118e093(0x4218);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    FUN_18118aef7();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  if (param_3 != '\0') {
    do {
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    do {
      FUN_18118f05c(0x720c);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    FUN_18118ea97();
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  pfVar3 = (float *)FUN_1804861f0(param_1 + 0x58,param_2 + 0xc);
  fVar1 = *pfVar3;
  fVar6 = (float)(**(code **)(*param_2 + 8))(param_2);
  if ((fVar1 != fVar6) && (*(char *)(param_1 + 0x198) == '\0')) {
    uVar4 = FUN_1811316e0(0x18);
    uVar4 = FUN_1811a3ed0(uVar4,param_2,fVar1);
    FUN_1813526d0(uVar2,uVar4);
  }
  do {
    FUN_18118aef7();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar2 = FUN_181190b8b(0);
  return uVar2;
}



############ FUN_ 18119c460 size=1153 ############

/* WARNING: Removing unreachable block (ram,0x00018119c65f) */
/* WARNING: Removing unreachable block (ram,0x00018119c576) */
/* WARNING: Removing unreachable block (ram,0x00018119c535) */
/* WARNING: Removing unreachable block (ram,0x00018119c544) */
/* WARNING: Removing unreachable block (ram,0x00018119c611) */

ulonglong FUN_18119c460(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                       undefined8 param_5,undefined4 param_6,undefined8 param_7,undefined8 param_8,
                       undefined8 param_9,undefined8 param_10,undefined4 param_11)

{
  undefined8 uVar1;
  ulonglong uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  undefined1 auStack_3c8 [32];
  undefined8 local_3a8;
  undefined4 local_3a0;
  undefined1 *local_398;
  undefined8 local_390;
  undefined8 local_388;
  undefined1 *local_380;
  undefined1 *local_378;
  undefined4 local_370;
  undefined4 local_368;
  undefined1 *local_338;
  uint local_314;
  uint local_310;
  undefined8 local_308;
  undefined8 local_300;
  undefined8 local_2f8;
  undefined8 local_2f0;
  undefined1 *local_2e8;
  undefined1 *local_2e0;
  longlong local_2d8;
  undefined8 local_2d0;
  undefined8 local_2c8;
  undefined8 local_288;
  undefined1 local_280 [56];
  undefined8 local_248;
  undefined1 local_240 [56];
  undefined8 local_208;
  undefined1 local_200 [56];
  undefined8 local_1c8;
  undefined1 local_1c0 [216];
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  ulonglong local_70;
  
  local_288 = 0xfffffffffffffffe;
  local_70 = DAT_182615970 ^ (ulonglong)auStack_3c8;
  local_2d0 = param_5;
  local_e8 = param_5;
  local_300 = param_7;
  local_d0 = param_7;
  local_2f8 = param_9;
  local_e0 = param_9;
  local_2f0 = param_10;
  local_d8 = param_10;
  uVar4 = (uint)&stack0x00000000;
  uVar5 = uVar4 & 0x1ff;
  local_314 = -(((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3) ^ 0x3d0;
  iVar3 = (uVar4 & 0x7dff) * (uVar4 & 0x7dff) + 1;
  uVar5 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  uVar4 = uVar4 & 0x13f;
  iVar3 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  uVar4 = ((int)(uVar5 - 7) >> 0x1f & uVar5) -
          (((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e);
  local_310 = ((int)(-uVar4 | uVar4) >> 0x1f) * -0x2ff3 ^ 0x2913;
  local_308 = param_2;
  local_2d8 = param_1;
  uVar1 = FUN_1811316e0(0x2c8);
  local_2e0 = local_280;
  local_2e8 = local_240;
  local_338 = local_200;
  local_248 = 0;
  local_2c8 = uVar1;
  FUN_180488560(local_280,local_2f0);
  local_208 = 0;
  FUN_180488560(local_240,local_2f8);
  local_1c8 = 0;
  FUN_180488560(local_200,local_300);
  local_3a8 = FUN_180485290(local_1c0,param_5);
  local_368 = 0;
  local_370 = param_11;
  local_378 = local_280;
  local_380 = local_240;
  local_388 = *(undefined8 *)(param_1 + 0x178);
  local_390 = param_8;
  local_398 = local_200;
  local_3a0 = param_6;
  local_2e0 = (undefined1 *)FUN_1811c75f0(uVar1,local_308,param_3,param_4);
                    /* WARNING: Call to offcut address within same function */
  uVar2 = func_0x00018119c8d5();
  return uVar2 & 0xfffffffffffffff8;
}



############ FUN_ 1812c2690 size=106 ############

void FUN_1812c2690(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0();
  lVar1 = *param_2;
  *param_2 = 0;
  *puVar2 = 0;
  puVar2[1] = lVar1;
  puVar2[2] = param_1;
  FUN_180485e60(param_1 + 0x18,puVar2,lVar1,param_4,uVar3);
  puVar2 = (undefined8 *)*param_2;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  return;
}



############ FUN_ 18119c2e0 size=366 ############

undefined8
FUN_18119c2e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
             undefined4 param_5,longlong *param_6,undefined4 param_7)

{
  longlong *plVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  void *_Memory;
  undefined8 local_90;
  undefined8 local_88;
  undefined1 local_80 [56];
  undefined8 local_48;
  
  _Memory = (void *)0x0;
  if (*(code **)(*param_1 + 0x30) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    _Memory = (void *)(**(code **)(*param_1 + 0x30))
                                (param_1,*(undefined4 *)((longlong)param_4 + 0xc));
  }
  uVar2 = FUN_1811316e0(0x2d8);
  local_48 = 0;
  FUN_180488560(local_80,param_6);
  local_90 = 0;
  local_88 = 0;
  FUN_18048c4c0(&local_90,*param_4,*(undefined4 *)((longlong)param_4 + 0xc));
  uVar2 = FUN_1811ae7e0(uVar2,param_2,param_3,&local_90,param_5,local_80,param_7);
  FUN_1811bb600(uVar2,param_1);
  FUN_1811b9de0(uVar2,param_1 + 4);
  puVar3 = (undefined8 *)FUN_1804863e0(param_1 + 7,param_2);
  *puVar3 = uVar2;
  if (_Memory == (void *)0x0) {
    plVar1 = (longlong *)param_6[7];
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_6);
      param_6[7] = 0;
    }
    return uVar2;
  }
  FUN_180484cd0(_Memory);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1811e4650 size=927 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811e4650(undefined8 param_1,undefined8 *param_2,longlong *param_3)

{
  uint uVar1;
  byte bVar2;
  char *pcVar3;
  byte bVar4;
  char cVar5;
  byte bVar6;
  int iVar7;
  longlong *plVar8;
  longlong lVar9;
  undefined8 *puVar10;
  byte *pbVar11;
  uint *puVar12;
  int iVar13;
  undefined **ppuVar14;
  undefined1 auStack_d8 [32];
  longlong local_b8;
  undefined8 local_b0;
  undefined1 *local_a8;
  char *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 *local_88;
  undefined8 *local_80;
  longlong *local_78;
  undefined8 local_70;
  longlong local_68;
  undefined1 *local_60;
  undefined **local_58;
  int local_50;
  undefined4 uStack_4c;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_88 = param_2;
  local_80 = param_2;
  local_78 = param_3;
  iVar7 = FUN_180492f10(param_3);
  if ((iVar7 == 0x5b) && (cVar5 = FUN_181249390(param_3,0x5d), cVar5 != '\0')) {
    local_b8 = 0;
    local_b0 = 0;
    plVar8 = (longlong *)FUN_1812487f0(param_3,&local_88,&DAT_1821d9254);
    local_68 = *param_3;
    *param_3 = *plVar8;
    *plVar8 = local_68;
    puVar12 = (uint *)(local_88 + -2);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
    pcVar3 = (char *)*param_3;
    cVar5 = *pcVar3;
joined_r0x0001811e4724:
    if (cVar5 != '\0') {
      iVar7 = FUN_181249270(param_3,&DAT_1821d927c);
      if (iVar7 < 0) {
        local_a0 = pcVar3;
        if ((*(uint *)(pcVar3 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(pcVar3 + -0x10) = *(int *)(pcVar3 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_1812490c0(param_3,&local_a0,0,iVar7);
      }
      local_50 = atoi(local_a0);
      local_58 = &PTR_vftable_18262b570;
      iVar7 = local_b0._4_4_ + 1;
      ppuVar14 = &PTR_vftable_18262b570;
      if ((int)local_b0 < iVar7) {
        if (iVar7 < 0) {
          iVar7 = local_b0._4_4_ + 2;
        }
        FUN_180489a50(&local_b8,local_b0._4_4_ + 9 + (iVar7 >> 1) & 0xfffffff8);
        ppuVar14 = local_58;
      }
      lVar9 = (longlong)local_b0._4_4_;
      local_b0 = CONCAT44(local_b0._4_4_ + 1,(int)local_b0);
      puVar10 = (undefined8 *)(lVar9 * 0x10 + local_b8);
      *puVar10 = ppuVar14;
      puVar10[1] = CONCAT44(uStack_4c,local_50);
      local_58 = &PTR_vftable_18262b558;
      (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_50);
      iVar7 = FUN_181249270(param_3,&DAT_1821d92ac);
      if (-1 < iVar7) {
        pbVar11 = &DAT_1821d92ac;
        iVar13 = 0;
LAB_1811e4820:
        do {
          bVar2 = *pbVar11;
          pbVar11 = pbVar11 + 1;
          if ((char)bVar2 < '\0') {
            if ((*pbVar11 & 0xc0) == 0x80) {
              do {
                pbVar11 = pbVar11 + 1;
              } while ((*pbVar11 & 0xc0) == 0x80);
              iVar13 = iVar13 + 1;
              goto LAB_1811e4820;
            }
          }
          else if (bVar2 == 0) goto LAB_1811e484d;
          iVar13 = iVar13 + 1;
        } while( true );
      }
LAB_1811e480d:
      local_a8 = &DAT_1821dbf98;
      goto LAB_1811e48c0;
    }
    *param_2 = &PTR_vftable_18262b4c8;
    local_78 = (longlong *)FUN_1811316e0(0x20);
    *(undefined4 *)(local_78 + 1) = 0;
    *local_78 = (longlong)juce::var::VariantType_Array::RefCountedArray::vftable;
    local_78[2] = local_b8;
    local_b8 = 0;
    *(int *)(local_78 + 3) = (int)local_b0;
    *(int *)((longlong)local_78 + 0x1c) = local_b0._4_4_;
    local_b0 = 0;
    LOCK();
    *(int *)(local_78 + 1) = (int)local_78[1] + 1;
    UNLOCK();
    param_2[1] = local_78;
    FUN_180487600(&local_b8);
    puVar12 = (uint *)(*param_3 + -0x10);
    if ((*puVar12 & 0x30000000) != 0) {
    }
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
  }
  else {
    local_98 = 0;
    local_90 = 0;
    FUN_1812464d0(param_2,&local_98);
    FUN_180487600(&local_98);
    puVar12 = (uint *)(*param_3 + -0x10);
    if ((*puVar12 & 0x30000000) != 0) {
    }
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
  }
  if (uVar1 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(puVar12);
LAB_1811e484d:
  iVar7 = iVar7 + iVar13;
  if (iVar7 < 1) {
    local_a8 = (undefined1 *)*param_3;
    if ((*(uint *)(local_a8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a8 + -0x10) = *(int *)(local_a8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar11 = (byte *)*param_3;
    while (iVar7 = iVar7 + -1, -1 < iVar7) {
      bVar2 = *pbVar11;
      if (bVar2 == 0) goto LAB_1811e480d;
      pbVar11 = pbVar11 + 1;
      if ((char)bVar2 < '\0') {
        bVar6 = 0x40;
        bVar4 = bVar2 & 0x40;
        while ((bVar4 != 0 && (8 < bVar6))) {
          pbVar11 = pbVar11 + 1;
          bVar6 = bVar6 >> 1;
          bVar4 = bVar2 & bVar6;
        }
      }
    }
    FUN_18049c9e0(&local_a8);
  }
LAB_1811e48c0:
  local_60 = (undefined1 *)*param_3;
  *param_3 = (longlong)local_a8;
  puVar12 = (uint *)(local_60 + -0x10);
  local_a8 = local_60;
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  puVar12 = (uint *)(local_a0 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  pcVar3 = (char *)*param_3;
  cVar5 = *pcVar3;
  param_2 = local_80;
  goto joined_r0x0001811e4724;
}



############ FUN_ 18122b540 size=303 ############

undefined8 *
FUN_18122b540(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18267af80) && (_Init_thread_header(&DAT_18267af80), DAT_18267af80 == -1)) {
    atexit((_func_5014 *)&LAB_181a4a810);
    _Init_thread_footer(&DAT_18267af80);
  }
  do {
    LOCK();
    uVar3 = DAT_182678cf4 & 1;
    DAT_182678cf4 = DAT_182678cf4 | 1;
    UNLOCK();
  } while (uVar3 != 0);
  puVar5 = DAT_18267af28;
  if (DAT_18267af28 == (undefined8 *)0x0) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x18);
    *(undefined4 *)(puVar6 + 1) = 0;
    *puVar6 = juce::CurrentThreadHolder::vftable;
    puVar6[2] = 0;
    puVar5 = DAT_18267af28;
    if (DAT_18267af28 != puVar6) {
      LOCK();
      *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
      puVar4 = DAT_18267af28;
      UNLOCK();
      puVar5 = puVar6;
      if (DAT_18267af28 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(DAT_18267af28 + 1);
        iVar2 = *piVar1;
        DAT_18267af28 = puVar6;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        puVar5 = DAT_18267af28;
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1,param_3,param_4,uVar7);
          puVar5 = DAT_18267af28;
        }
      }
    }
  }
  DAT_18267af28 = puVar5;
  puVar5 = DAT_18267af28;
  *param_1 = DAT_18267af28;
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar5 + 1);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  DAT_182678cf4 = 0;
  UNLOCK();
  return param_1;
}



############ FUN_ 181217400 size=90 ############

undefined8 *
FUN_181217400(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x10);
  uVar1 = FUN_180498c40(uVar1,param_2,param_3,param_4,uVar2);
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 1812191d0 size=199 ############

undefined8 * FUN_1812191d0(undefined8 *param_1,undefined8 param_2)

{
  int iVar1;
  void *_Dst;
  
  *param_1 = juce::OutputStream::vftable;
  FUN_18049c4e0(param_1 + 1);
  *param_1 = juce::GZIPCompressorOutputStream::vftable;
  param_1[2] = param_2;
  *(undefined1 *)(param_1 + 3) = 0;
  _Dst = (void *)FUN_1811316e0(0x8060);
  *(undefined4 *)((longlong)_Dst + 0x58) = 9;
  *(undefined2 *)((longlong)_Dst + 0x5c) = 1;
  *(undefined1 *)((longlong)_Dst + 0x5e) = 0;
  memset(_Dst,0,0x58);
  iVar1 = FUN_18121fbc0(_Dst,*(undefined4 *)((longlong)_Dst + 0x58),8,0xf,8,0,"1.2.3");
  *(bool *)((longlong)_Dst + 0x5d) = iVar1 == 0;
  param_1[4] = _Dst;
  return param_1;
}



############ FUN_ 181219380 size=167 ############

undefined8 FUN_181219380(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  void *_Memory;
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (param_2 < *(longlong *)(param_1 + 0x38)) {
    *(undefined1 *)(param_1 + 0x24) = 0;
    *(undefined4 *)(param_1 + 0x28) = 0;
    *(undefined8 *)(param_1 + 0x38) = 0;
    uVar1 = FUN_1811316e0(0x70);
    uVar1 = FUN_180498a90(uVar1,*(undefined4 *)(param_1 + 0x20));
    _Memory = *(void **)(param_1 + 0x48);
    *(undefined8 *)(param_1 + 0x48) = uVar1;
    if (_Memory != (void *)0x0) {
      if (*(char *)((longlong)_Memory + 3) != '\0') {
        FUN_18121bed0((longlong)_Memory + 8);
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    (**(code **)(**(longlong **)(param_1 + 8) + 0xb0))
              (*(longlong **)(param_1 + 8),*(undefined8 *)(param_1 + 0x30));
  }
  FUN_181235210(param_1,param_2 - *(longlong *)(param_1 + 0x38),param_3,param_4,uVar2);
  return 1;
}



############ FUN_ 1812260a0 size=150 ############

undefined8 * FUN_1812260a0(undefined8 *param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  *param_1 = &DAT_1821dbf98;
  param_1[1] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  param_1[3] = &DAT_1821dbf98;
  param_1[4] = &DAT_1821dbf98;
  param_1[5] = 0;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 7) = 0x100;
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  *puVar2 = juce::FileInputSource::vftable;
  lVar1 = *param_2;
  puVar2[1] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined1 *)(puVar2 + 2) = 0;
  param_1[8] = puVar2;
  return param_1;
}



############ FUN_ 1812263f0 size=254 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812263f0(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 *puVar4;
  uint uVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined1 auStack_68 [32];
  longlong *local_48;
  undefined8 local_40;
  longlong *local_38;
  longlong local_30;
  ulonglong local_28;
  
  local_40 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48 = param_2;
  puVar4 = (undefined8 *)FUN_1811316e0(0x20);
  puVar4[1] = 0;
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = juce::DynamicObject::vftable;
  local_38 = puVar4 + 2;
  local_48 = puVar4;
  FUN_18049b090(local_38,param_1 + 0x10);
  *param_2 = (longlong)puVar4;
  LOCK();
  *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
  UNLOCK();
  lVar1 = *param_2;
  uVar5 = *(int *)(lVar1 + 0x1c) - 1;
  if (-1 < (int)uVar5) {
    lVar6 = (longlong)(int)uVar5 * 0x18;
    do {
      if ((uVar5 < *(uint *)(lVar1 + 0x1c)) &&
         (plVar7 = (longlong *)(*(longlong *)(lVar1 + 0x10) + 8 + lVar6), plVar7 != (longlong *)0x0)
         ) {
        (**(code **)(*(longlong *)*plVar7 + 0x48))((longlong *)*plVar7,&local_38,plVar7);
        plVar2 = (longlong *)*plVar7;
        *plVar7 = (longlong)local_38;
        lVar3 = plVar7[1];
        plVar7[1] = local_30;
        local_38 = plVar2;
        local_30 = lVar3;
        (**(code **)(*plVar2 + 0xb0))(plVar2,&local_30);
      }
      lVar6 = lVar6 + -0x18;
      uVar5 = uVar5 - 1;
    } while (-1 < (int)uVar5);
  }
}



############ FUN_ 181227270 size=253 ############

longlong FUN_181227270(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  char cVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 local_30;
  undefined8 local_28;
  undefined **local_20;
  undefined8 local_18 [2];
  
  lVar3 = (**(code **)(*(longlong *)*param_1 + 0x38))
                    ((longlong *)*param_1,param_1 + 1,param_3,param_4,0xfffffffffffffffe);
  if (lVar3 == 0) {
    local_30 = 0;
    local_28 = 0;
    cVar2 = (**(code **)(*(longlong *)*param_1 + 0x50))();
    if (cVar2 == '\0') {
      FUN_18049b7e0(&local_30,param_1);
    }
    local_20 = &PTR_vftable_18262b4c8;
    puVar4 = (undefined8 *)FUN_1811316e0(0x20);
    *(undefined4 *)(puVar4 + 1) = 0;
    *puVar4 = juce::var::VariantType_Array::RefCountedArray::vftable;
    FUN_18049b170(puVar4 + 2,&local_30);
    LOCK();
    *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
    UNLOCK();
    plVar1 = (longlong *)*param_1;
    *param_1 = local_20;
    local_18[0] = param_1[1];
    param_1[1] = puVar4;
    local_20 = (undefined **)plVar1;
    (**(code **)(*plVar1 + 0xb0))(plVar1,local_18);
    lVar3 = (**(code **)(*(longlong *)*param_1 + 0x38))((longlong *)*param_1,param_1 + 1);
    FUN_180487600(&local_30);
  }
  return lVar3;
}



############ FUN_ 181227820 size=175 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181227820(undefined8 *param_1,undefined8 param_2)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined8 *local_30;
  undefined **local_28;
  undefined8 local_20;
  ulonglong local_18;
  
  local_38 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = &PTR_vftable_18262b4c8;
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::var::VariantType_Array::RefCountedArray::vftable;
  local_30 = puVar2;
  FUN_18049b170(puVar2 + 2,param_2);
  LOCK();
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  UNLOCK();
  plVar1 = (longlong *)*param_1;
  *param_1 = local_28;
  local_20 = param_1[1];
  param_1[1] = puVar2;
  local_28 = (undefined **)plVar1;
  (**(code **)(*plVar1 + 0xb0))(plVar1,&local_20);
}



############ FUN_ 181227b40 size=81 ############

undefined8 *
FUN_181227b40(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = &PTR_vftable_18262b4e0;
  uVar1 = FUN_1811316e0(0x10);
  uVar1 = FUN_18123aa50(uVar1,param_2,param_3,param_4,uVar2);
  param_1[1] = uVar1;
  return param_1;
}



############ FUN_ 181236060 size=202 ############

undefined8 *
FUN_181236060(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  longlong local_res8;
  longlong local_res10;
  undefined8 local_res18;
  undefined8 local_res20;
  
  uVar2 = *param_2;
  local_res18 = uVar2;
  uVar3 = FUN_181241230(param_1 + 8,&local_res10,param_3,param_4,0xfffffffffffffffe);
  FUN_181245100(uVar3,&local_res8,uVar2);
  puVar5 = (uint *)(local_res10 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  local_res20 = FUN_1811316e0(0x28);
  puVar4 = (undefined8 *)FUN_18123efe0(local_res20,&local_res8);
  if (*(char *)puVar4[4] != '\0') {
    (**(code **)*puVar4)(puVar4,1);
    puVar4 = (undefined8 *)0x0;
  }
  puVar5 = (uint *)(local_res8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return puVar4;
}



############ FUN_ 181236140 size=78 ############

undefined8 *
FUN_181236140(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x28);
  puVar2 = (undefined8 *)FUN_18123efe0(uVar1,param_1 + 8);
  if (*(char *)puVar2[4] != '\0') {
    (**(code **)*puVar2)(puVar2,1,puVar2,param_4,uVar3);
    puVar2 = (undefined8 *)0x0;
  }
  return puVar2;
}



############ FUN_ 181238760 size=320 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181238760(longlong param_1)

{
  uint *_Memory;
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 uVar5;
  undefined1 auStack_278 [32];
  undefined4 local_258 [2];
  longlong local_250 [2];
  longlong *local_240;
  undefined1 local_238 [4];
  undefined4 local_234;
  undefined1 local_1b8 [416];
  ulonglong local_18;
  
  local_250[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_278;
  if ((*(char *)(param_1 + 0x10) != '\0') && (*(char *)(param_1 + 0x11) != '\0')) {
    local_258[0] = 0x80;
    iVar3 = Ordinal_1((longlong)*(int *)(param_1 + 0xc),local_238,local_258);
    if ((-1 < iVar3) && (*(char *)(param_1 + 0x10) != '\0')) {
      plVar4 = (longlong *)FUN_1811316e0(0x40);
      local_240 = plVar4;
      uVar5 = Ordinal_12(local_234);
      FUN_18049c4e0(local_250,uVar5);
      uVar2 = *(undefined4 *)(param_1 + 8);
      *plVar4 = local_250[0];
      _Memory = (uint *)(local_250[0] + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        *_Memory = *_Memory + 1;
        UNLOCK();
      }
      *(undefined4 *)(plVar4 + 1) = uVar2;
      *(int *)((longlong)plVar4 + 0xc) = iVar3;
      *(undefined2 *)(plVar4 + 2) = 1;
      InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)plVar4 + 0x12));
      if (DAT_18267aa50 == '\0') {
        DAT_18267aa50 = '\x01';
        Ordinal_115(0x101,local_1b8);
      }
      FUN_181238f90((longlong)iVar3);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
  }
}



############ FUN_ 18123b420 size=97 ############

undefined8 * FUN_18123b420(undefined8 *param_1,undefined8 *param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x18);
  *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + 1;
  *param_2 = puVar2;
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::Expression::Helpers::Negate::vftable;
  puVar2[2] = param_1;
  *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + 1;
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  piVar1 = (int *)(param_1 + 1);
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    (**(code **)*param_1)(param_1,1);
  }
  return param_2;
}



############ FUN_ 18123b490 size=898 ############

undefined8 *
FUN_18123b490(undefined8 *param_1,undefined8 *param_2,longlong param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  undefined8 uVar7;
  longlong *plVar8;
  int iVar9;
  longlong lVar10;
  undefined8 *local_res8;
  longlong *local_48;
  undefined8 *local_40;
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  plVar4 = (longlong *)(**(code **)(*(longlong *)*param_1 + 0x10))();
  local_48 = plVar4;
  iVar2 = (**(code **)(*plVar4 + 8))(plVar4);
  if ((iVar2 == 0) && (plVar6 = plVar4, (char)plVar4[3] != '\0')) {
LAB_18123b4eb:
    if (plVar6 != (longlong *)0x0) goto LAB_18123b715;
  }
  else {
    iVar2 = (**(code **)(*plVar4 + 8))(plVar4);
    if (iVar2 != 1) {
      iVar2 = (**(code **)(*plVar4 + 0x40))(plVar4);
      iVar9 = 0;
      if (0 < iVar2) {
        do {
          plVar6 = (longlong *)(**(code **)(*plVar4 + 0x48))(plVar4,iVar9);
          iVar3 = (**(code **)(*plVar6 + 8))(plVar6);
          if ((iVar3 == 0) && ((char)plVar6[3] != '\0')) goto LAB_18123b4eb;
          iVar9 = iVar9 + 1;
        } while (iVar9 < iVar2);
      }
      iVar9 = 0;
      if (0 < iVar2) {
        do {
          uVar7 = (**(code **)(*plVar4 + 0x48))(plVar4,iVar9);
          plVar6 = (longlong *)FUN_180494c40(uVar7,1);
          if (plVar6 != (longlong *)0x0) goto LAB_18123b4eb;
          iVar9 = iVar9 + 1;
        } while (iVar9 < iVar2);
      }
    }
  }
  iVar2 = (**(code **)(*plVar4 + 8))(plVar4);
  plVar6 = plVar4;
  if (iVar2 == 0) {
LAB_18123b508:
    if (plVar6 != (longlong *)0x0) goto LAB_18123b715;
  }
  else {
    iVar2 = (**(code **)(*plVar4 + 8))(plVar4);
    if (iVar2 != 1) {
      iVar2 = (**(code **)(*plVar4 + 0x40))(plVar4);
      iVar9 = 0;
      if (0 < iVar2) {
        do {
          plVar6 = (longlong *)(**(code **)(*plVar4 + 0x48))(plVar4,iVar9);
          iVar3 = (**(code **)(*plVar6 + 8))(plVar6);
          if (iVar3 == 0) goto LAB_18123b508;
          iVar9 = iVar9 + 1;
        } while (iVar9 < iVar2);
      }
      iVar9 = 0;
      if (0 < iVar2) {
        do {
          uVar7 = (**(code **)(*plVar4 + 0x48))(plVar4,iVar9);
          plVar6 = (longlong *)FUN_180494c40(uVar7,0);
          if (plVar6 != (longlong *)0x0) goto LAB_18123b508;
          iVar9 = iVar9 + 1;
        } while (iVar9 < iVar2);
      }
    }
  }
  puVar5 = (undefined8 *)FUN_1811316e0(0x20);
  local_40 = puVar5;
  local_res8 = (undefined8 *)FUN_1811316e0(0x20);
  *local_res8 = juce::Expression::Helpers::Constant::vftable;
  local_res8[2] = 0;
  *(undefined1 *)(local_res8 + 3) = 0;
  *(undefined4 *)(local_res8 + 1) = 1;
  *(int *)(plVar4 + 1) = (int)plVar4[1] + 1;
  local_48 = plVar4;
  plVar4 = (longlong *)FUN_1804946b0(puVar5,&local_48,&local_res8);
  local_48 = plVar4;
  iVar2 = (**(code **)(*plVar4 + 8))(plVar4);
  plVar6 = plVar4;
  if (iVar2 != 0) {
    iVar2 = (**(code **)(*plVar4 + 8))(plVar4);
    if (iVar2 != 1) {
      iVar2 = (**(code **)(*plVar4 + 0x40))(plVar4);
      iVar9 = 0;
      if (0 < iVar2) {
        do {
          plVar6 = (longlong *)(**(code **)(*plVar4 + 0x48))(plVar4,iVar9);
          iVar3 = (**(code **)(*plVar6 + 8))(plVar6);
          if (iVar3 == 0) goto LAB_18123b715;
          iVar9 = iVar9 + 1;
        } while (iVar9 < iVar2);
      }
      iVar9 = 0;
      if (0 < iVar2) {
        do {
          uVar7 = (**(code **)(*plVar4 + 0x48))(plVar4,iVar9);
          plVar6 = (longlong *)FUN_180494c40(uVar7,0);
          if (plVar6 != (longlong *)0x0) goto LAB_18123b715;
          iVar9 = iVar9 + 1;
        } while (iVar9 < iVar2);
      }
    }
    plVar6 = (longlong *)0x0;
  }
LAB_18123b715:
  plVar8 = (longlong *)FUN_180494bc0(plVar4,plVar6);
  if (plVar8 == (longlong *)0x0) {
    plVar6[2] = param_3;
  }
  else {
    (**(code **)(*plVar8 + 0x58))(plVar8,&local_res8,param_4,plVar6,param_3,plVar4);
    puVar5 = local_res8;
    if (local_res8 == (undefined8 *)0x0) {
      FUN_18123b9e0(param_2,(int)param_3);
      if (local_res8 != (undefined8 *)0x0) {
        piVar1 = (int *)(local_res8 + 1);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      (**(code **)*plVar4)(plVar4,1);
      return param_2;
    }
    local_40 = local_res8;
    *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
    lVar10 = FUN_18123b890(&local_40,param_4);
    plVar6[2] = lVar10;
    if (puVar5 != (undefined8 *)0x0) {
      piVar1 = (int *)(puVar5 + 1);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
    if (local_res8 != (undefined8 *)0x0) {
      piVar1 = (int *)(local_res8 + 1);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  *param_2 = plVar4;
  *(int *)(plVar4 + 1) = (int)plVar4[1] + 1;
  return param_2;
}



############ FUN_ 18123ba80 size=61 ############

undefined8 * FUN_18123ba80(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::Expression::Helpers::Constant::vftable;
  puVar1[2] = 0;
  *(undefined1 *)(puVar1 + 3) = 0;
  *param_1 = puVar1;
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  return param_1;
}



############ FUN_ 181243640 size=988 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181243640(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  uint uVar2;
  byte bVar3;
  int iVar4;
  longlong lVar5;
  byte bVar6;
  char cVar7;
  byte bVar8;
  int iVar9;
  undefined8 uVar10;
  byte *pbVar11;
  uint *puVar12;
  longlong lVar13;
  longlong *plVar14;
  bool bVar15;
  undefined1 auStack_108 [32];
  undefined1 *local_e8;
  void *local_e0;
  longlong local_d8;
  undefined1 *local_d0;
  undefined8 local_c8;
  longlong local_c0;
  undefined8 *local_b8;
  undefined **local_98;
  longlong local_90;
  undefined1 *local_88;
  undefined **local_80;
  undefined8 *local_78;
  undefined1 *local_70;
  undefined **local_68;
  longlong local_60;
  undefined **local_58;
  undefined8 *local_50;
  ulonglong local_48;
  
  local_c8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  FUN_18049b580();
  plVar14 = *(longlong **)(param_2 + 0x10);
  if (plVar14 != (longlong *)0x0) {
    do {
      pbVar11 = &DAT_1821daa40;
      iVar9 = 0;
      while( true ) {
        while( true ) {
          bVar3 = *pbVar11;
          pbVar11 = pbVar11 + 1;
          if (-1 < (char)bVar3) break;
          if ((*pbVar11 & 0xc0) != 0x80) goto LAB_1812436e8;
          do {
            pbVar11 = pbVar11 + 1;
          } while ((*pbVar11 & 0xc0) == 0x80);
          iVar9 = iVar9 + 1;
        }
        if (bVar3 == 0) break;
LAB_1812436e8:
        iVar9 = iVar9 + 1;
      }
      iVar9 = FUN_18049da40(plVar14[1],&DAT_1821daa40,iVar9);
      if (iVar9 == 0) {
        local_e0 = (void *)0x0;
        local_d8 = 0;
        local_c0 = plVar14[2];
        cVar7 = FUN_181247530(&local_e0);
        if (cVar7 == '\0') {
                    /* WARNING: Subroutine does not return */
          free(local_e0);
        }
        pbVar11 = (byte *)plVar14[1];
        iVar9 = 6;
        goto LAB_181243740;
      }
      local_90 = plVar14[2];
      if ((*(uint *)(local_90 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_90 + -0x10) = *(int *)(local_90 + -0x10) + 1;
        UNLOCK();
      }
      local_70 = (undefined1 *)plVar14[1];
      if ((*(uint *)((longlong)local_70 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)((longlong)local_70 + -0x10) = *(int *)((longlong)local_70 + -0x10) + 1;
        UNLOCK();
      }
      local_68 = &PTR_vftable_18262b560;
      local_98 = &PTR_vftable_18262b558;
      iVar4 = *(int *)((longlong)param_1 + 0xc);
      iVar9 = iVar4 + 1;
      local_60 = local_90;
      if ((int)param_1[1] < iVar9) {
        if (iVar9 < 0) {
          iVar9 = iVar4 + 2;
        }
        FUN_18049b620(param_1,iVar4 + 9 + (iVar9 >> 1) & 0xfffffff8);
      }
      iVar9 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar9 + 1;
      plVar1 = (longlong *)(*param_1 + (longlong)iVar9 * 0x18);
      *plVar1 = (longlong)local_70;
      local_70 = &DAT_1821dbf98;
      plVar1[1] = (longlong)local_68;
      plVar1[2] = local_60;
      local_68 = &PTR_vftable_18262b558;
      (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_60);
      puVar12 = (uint *)(local_70 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      (**(code **)(*local_98 + 0xb0))(local_98,&local_90);
      plVar14 = (longlong *)*plVar14;
    } while (plVar14 != (longlong *)0x0);
  }
  while( true ) {
    pbVar11 = pbVar11 + 1;
    if ((char)bVar3 < '\0') {
      bVar8 = 0x40;
      bVar6 = bVar3 & 0x40;
      while ((bVar6 != 0 && (8 < bVar8))) {
        pbVar11 = pbVar11 + 1;
        bVar8 = bVar8 >> 1;
        bVar6 = bVar3 & bVar8;
      }
    }
    iVar9 = iVar9 + -1;
    if (iVar9 < 0) break;
LAB_181243740:
    bVar3 = *pbVar11;
    if (bVar3 == 0) {
      local_e8 = &DAT_1821dbf98;
      goto LAB_181243784;
    }
  }
  FUN_18049c9e0(&local_e8);
LAB_181243784:
  uVar10 = FUN_18122bf10();
  FUN_18122c1b0(uVar10,&local_d0,&local_e8);
  local_58 = &PTR_vftable_18262b4e0;
  local_b8 = (undefined8 *)FUN_1811316e0(0x10);
  local_88 = local_d0;
  *local_b8 = 0;
  local_b8[1] = local_d8;
  if (local_d8 != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  local_d0 = &DAT_1821dbf98;
  local_80 = local_58;
  local_58 = &PTR_vftable_18262b558;
  iVar4 = *(int *)((longlong)param_1 + 0xc);
  iVar9 = iVar4 + 1;
  local_78 = local_b8;
  local_50 = local_b8;
  if ((int)param_1[1] < iVar9) {
    if (iVar9 < 0) {
      iVar9 = iVar4 + 2;
    }
    FUN_18049b620(param_1,iVar4 + 9 + (iVar9 >> 1) & 0xfffffff8);
  }
  lVar13 = (longlong)*(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  lVar5 = *param_1;
  *(undefined1 **)(lVar5 + lVar13 * 0x18) = local_88;
  local_88 = &DAT_1821dbf98;
  *(undefined ***)(lVar5 + 8 + lVar13 * 0x18) = local_80;
  *(undefined8 **)(lVar5 + 0x10 + lVar13 * 0x18) = local_78;
  local_80 = &PTR_vftable_18262b558;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_78);
  puVar12 = (uint *)(local_88 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  (**(code **)(*local_58 + 0xb0))(local_58,&local_50);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar15 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar15) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  puVar12 = (uint *)(local_e8 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(local_e0);
}



############ FUN_ 1812463d0 size=121 ############

undefined8 *
FUN_1812463d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = &PTR_vftable_18262b4c8;
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::var::VariantType_Array::RefCountedArray::vftable;
  FUN_18049b170(puVar1 + 2,param_2,param_3,param_4,uVar2);
  LOCK();
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  UNLOCK();
  param_1[1] = puVar1;
  return param_1;
}



############ FUN_ 1812482e0 size=182 ############

undefined8 FUN_1812482e0(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 *local_50;
  undefined8 local_48;
  undefined2 local_40;
  undefined1 *local_38;
  undefined1 *local_30;
  undefined8 local_28;
  undefined8 local_20;
  undefined2 local_18;
  undefined8 *local_10;
  
  uVar2 = 0xfffffffffffffffe;
  local_50 = &DAT_1821dbf98;
  local_48 = 0;
  local_40 = 0;
  local_38 = &DAT_1821dbf98;
  local_30 = &DAT_1821dbf98;
  local_28 = 0;
  local_20 = 0;
  local_18 = 0x100;
  local_10 = (undefined8 *)FUN_1811316e0(0x18);
  *local_10 = juce::FileInputSource::vftable;
  lVar1 = *param_2;
  local_10[1] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined1 *)(local_10 + 2) = 0;
  FUN_181248430(&local_50,param_1,lVar1,param_4,uVar2);
  FUN_181248660(&local_50);
  return param_1;
}



############ FUN_ 18124ab70 size=105 ############

longlong * FUN_18124ab70(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x108);
  lVar2 = FUN_1804a5ae0(uVar1,param_2,param_3,param_4,uVar3);
  *param_1 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 181252b50 size=107 ############

longlong * FUN_181252b50(longlong *param_1,undefined8 param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2d70(uVar1,param_2);
  *param_1 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 181253060 size=635 ############

undefined8 FUN_181253060(longlong *param_1,uint param_2,undefined8 param_3,undefined4 param_4)

{
  longlong *plVar1;
  int iVar2;
  short sVar3;
  longlong lVar4;
  char cVar5;
  undefined8 *puVar6;
  int *piVar7;
  undefined8 uVar8;
  longlong *plVar9;
  uint *puVar10;
  undefined8 *puVar11;
  uint *puVar12;
  undefined8 *local_98;
  undefined8 local_90;
  longlong *local_88;
  float local_80;
  float local_7c;
  float local_78;
  float local_74;
  int local_68;
  int iStack_64;
  int iStack_60;
  int iStack_5c;
  undefined1 local_58 [16];
  int local_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  undefined1 local_38 [32];
  
  local_90 = 0xfffffffffffffffe;
  puVar12 = (uint *)0x0;
  if ((param_2 < 0x80) && (0 < *(short *)((longlong)param_1 + (ulonglong)param_2 * 2 + 0x70))) {
    sVar3 = *(short *)((longlong)param_1 + (longlong)(int)param_2 * 2 + 0x70);
    puVar10 = puVar12;
    if ((uint)(int)sVar3 < *(uint *)((longlong)param_1 + 0x6c)) {
      puVar10 = *(uint **)(param_1[0xc] + (longlong)sVar3 * 8);
    }
  }
  else {
    puVar11 = (undefined8 *)param_1[0xc];
    puVar6 = puVar11 + *(int *)((longlong)param_1 + 0x6c);
    for (; puVar11 != puVar6; puVar11 = puVar11 + 1) {
      puVar10 = (uint *)*puVar11;
      if (*(uint *)*puVar11 == param_2) goto LAB_1812530fa;
    }
    puVar10 = puVar12;
    if (((undefined **)*param_1 != juce::CustomTypeface::vftable) &&
       (cVar5 = (*(code *)((undefined **)*param_1)[10])(param_1,param_2), cVar5 != '\0')) {
      puVar10 = (uint *)FUN_181253c30(param_1,param_2,0);
    }
  }
LAB_1812530fa:
  if (puVar10 == (uint *)0x0) {
    FUN_181252a20(&local_98,&PTR_DAT_18262b590,&PTR_DAT_18262b588,DAT_1824c43e8);
    plVar9 = (longlong *)FUN_181252280(&local_98);
    if (plVar9 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar9 + 1) = (int)plVar9[1] + 1;
      UNLOCK();
    }
    local_88 = plVar9;
    if (local_98 != (undefined8 *)0x0) {
      LOCK();
      piVar7 = (int *)(local_98 + 1);
      iVar2 = *piVar7;
      *piVar7 = *piVar7 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_98)(local_98,1);
      }
    }
    if ((plVar9 != (longlong *)0x0) && (plVar9 != param_1)) {
      uVar8 = (**(code **)(*plVar9 + 0x40))(plVar9,param_2,param_3,param_4);
      LOCK();
      plVar1 = plVar9 + 1;
      lVar4 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar4 != 1) {
        return uVar8;
      }
      (**(code **)*plVar9)(plVar9,1);
      return uVar8;
    }
    if (plVar9 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar9 + 1;
      lVar4 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar4 == 1) {
        (**(code **)*plVar9)(plVar9,1);
      }
    }
  }
  else {
    cVar5 = FUN_18129dff0(puVar10 + 2);
    if (cVar5 == '\0') {
      puVar6 = (undefined8 *)FUN_1811316e0(0x28);
      local_80 = (float)puVar10[6];
      local_7c = (float)puVar10[8];
      local_78 = (float)puVar10[7] - local_80;
      local_74 = (float)puVar10[9] - local_7c;
      local_98 = puVar6;
      FUN_1804ab160(&local_80,local_58,param_3);
      piVar7 = (int *)FUN_1804ab070(local_58,local_38);
      local_68 = *piVar7 + -1;
      iStack_64 = piVar7[1];
      iStack_60 = 0;
      if (0 < piVar7[2] + 2) {
        iStack_60 = piVar7[2] + 2;
      }
      iStack_5c = 0;
      if (0 < piVar7[3]) {
        iStack_5c = piVar7[3];
      }
      local_48 = local_68;
      iStack_44 = iStack_64;
      iStack_40 = iStack_60;
      iStack_3c = iStack_5c;
      uVar8 = FUN_18129fdb0(puVar6,&local_48,puVar10 + 2,param_3);
      return uVar8;
    }
  }
  return 0;
}



############ FUN_ 181254930 size=174 ############

void FUN_181254930(longlong param_1,float param_2,undefined8 param_3,undefined8 param_4)

{
  void *_Memory;
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (param_2 < DAT_1824c4444) {
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28));
    if (*(longlong *)(param_1 + 0x20) == 0) {
      uVar1 = FUN_1811316e0(0x24);
      uVar1 = FUN_1804a1870(uVar1,param_1);
      _Memory = *(void **)(param_1 + 0x20);
      *(undefined8 *)(param_1 + 0x20) = uVar1;
      if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    FUN_1804a1a40(*(undefined8 *)(param_1 + 0x20),param_2,param_3,param_4,uVar2);
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28));
  }
  return;
}



############ FUN_ 1812549f0 size=500 ############

void FUN_1812549f0(longlong *param_1,undefined8 param_2,undefined8 param_3,float param_4)

{
  float fVar1;
  void *_Memory;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  int *piVar5;
  float *pfVar6;
  undefined8 in_R9;
  undefined8 local_88;
  float fStack_80;
  float fStack_7c;
  int local_78;
  int iStack_74;
  int iStack_70;
  int iStack_6c;
  undefined1 local_68 [16];
  float *local_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined1 local_38;
  
  local_58 = (float *)0x0;
  local_50 = 0;
  local_48 = 0;
  uStack_40 = 0;
  local_38 = 1;
  cVar2 = (**(code **)(*param_1 + 0x38))(0,param_2,&local_58,in_R9,0xfffffffffffffffe);
  if (cVar2 != '\0') {
    for (pfVar6 = local_58; pfVar6 != local_58 + local_50._4_4_; pfVar6 = pfVar6 + 1) {
      fVar1 = *pfVar6;
      if (fVar1 == DAT_1824c4600) {
        pfVar6 = pfVar6 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        if ((DAT_1824c42d0 < param_4) && (param_4 < DAT_1824c4444)) {
          EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 5));
          if (param_1[4] == 0) {
            local_88 = FUN_1811316e0(0x24);
            lVar3 = FUN_1804a1870(local_88,param_1);
            _Memory = (void *)param_1[4];
            param_1[4] = lVar3;
            if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          FUN_1804a1a40(param_1[4],param_4,&local_58);
          LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 5));
        }
        uVar4 = FUN_1811316e0(0x28);
        fStack_7c = uStack_40._4_4_ - (float)uStack_40;
        fStack_80 = local_48._4_4_ - (float)local_48;
        local_88 = CONCAT44((float)uStack_40,(float)local_48);
        FUN_1804ab160(&local_88,&local_78,param_3);
        piVar5 = (int *)FUN_1804ab070(&local_78,local_68);
        fStack_80 = (float)0;
        if (0 < piVar5[2] + 2) {
          fStack_80 = (float)(piVar5[2] + 2);
        }
        fStack_7c = (float)0;
        if (0 < piVar5[3]) {
          fStack_7c = (float)piVar5[3];
        }
        iStack_74 = piVar5[1];
        local_78 = *piVar5 + -1;
        local_88 = CONCAT44(iStack_74,local_78);
        iStack_70 = (int)fStack_80;
        iStack_6c = (int)fStack_7c;
        FUN_18129fdb0(uVar4,&local_78,&local_58,param_3);
        break;
      }
    }
  }
  local_50 = local_50 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_58);
}



############ FUN_ 18128e3d0 size=126 ############

void FUN_18128e3d0(undefined8 param_1,longlong *param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *_Memory;
  
  uVar5 = FUN_1811316e0(0x10550);
  _Memory = (longlong *)FUN_1804a0710(uVar5,param_3);
  lVar3 = *_Memory;
  *param_2 = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  puVar4 = (undefined8 *)*_Memory;
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181291350 size=103 ############

longlong *
FUN_181291350(undefined8 param_1,longlong *param_2,undefined4 param_3,undefined4 param_4,
             undefined4 param_5,undefined1 param_6)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x50);
  lVar2 = FUN_1804a00e0(uVar1,param_3,param_4,param_5,param_6);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 181291420 size=98 ############

longlong *
FUN_181291420(undefined8 param_1,longlong *param_2,undefined4 param_3,undefined4 param_4,
             undefined4 param_5,undefined1 param_6)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x50);
  lVar2 = FUN_1804a00e0(uVar1,param_3,param_4,param_5,param_6);
  *param_2 = lVar2;
  LOCK();
  *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
  UNLOCK();
  return param_2;
}



############ FUN_ 181291ab0 size=275 ############

undefined8 *
FUN_181291ab0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x78);
  puVar3 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar3 + 1) = 0;
  *puVar3 = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::RectangleListRegion::vftable;
  FUN_1804aaeb0(puVar3 + 2,param_4);
  *puVar2 = puVar3;
  *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
  puVar2[1] = 0x3f800000;
  puVar2[2] = 0;
  puVar2[3] = 0x3f800000;
  puVar2[4] = param_3;
  *(undefined2 *)(puVar2 + 5) = 1;
  *(undefined4 *)(puVar2 + 6) = 0xff000000;
  puVar2[7] = 0;
  puVar2[8] = 0;
  puVar2[9] = 0x3f800000;
  puVar2[10] = 0;
  puVar2[0xb] = 0x3f800000;
  *(undefined4 *)(puVar2 + 0xc) = 1;
  *(undefined4 *)((longlong)puVar2 + 100) = 0x3f800000;
  lVar1 = *param_2;
  puVar2[0xd] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  FUN_181252d20(puVar2 + 0xe);
  param_1[1] = puVar2;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = juce::LowLevelGraphicsSoftwareRenderer::vftable;
  return param_1;
}



############ FUN_ 181294000 size=198 ############

void FUN_181294000(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  int iVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar1 = FUN_1811316e0(0x50);
  if (*(int *)(param_1 + 0x2c) < 1) {
    lVar3 = 0;
  }
  else {
    lVar3 = *(longlong *)
             (*(longlong *)(param_1 + 0x20) + (longlong)(*(int *)(param_1 + 0x2c) + -1) * 8);
  }
  FUN_1804aaeb0(lVar1,lVar3,param_3,param_4,uVar4);
  *(undefined4 *)(lVar1 + 0x10) = *(undefined4 *)(lVar3 + 0x10);
  *(undefined4 *)(lVar1 + 0x14) = *(undefined4 *)(lVar3 + 0x14);
  FUN_1812a0fd0(lVar1 + 0x18,lVar3 + 0x18);
  lVar3 = *(longlong *)(lVar3 + 0x48);
  *(longlong *)(lVar1 + 0x48) = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  iVar2 = *(int *)(param_1 + 0x2c) + 1;
  if (*(int *)(param_1 + 0x28) < iVar2) {
    FUN_18047cb30(param_1 + 0x20,*(int *)(param_1 + 0x2c) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)(param_1 + 0x2c);
  *(int *)(param_1 + 0x2c) = iVar2 + 1;
  *(longlong *)(*(longlong *)(param_1 + 0x20) + (longlong)iVar2 * 8) = lVar1;
  return;
}



############ FUN_ 1812a1090 size=133 ############

undefined4 * FUN_1812a1090(undefined4 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  *param_1 = 0xff000000;
  puVar1 = (undefined8 *)FUN_1811316e0(0x28);
  *puVar1 = *param_2;
  puVar1[1] = param_2[1];
  *(undefined1 *)(puVar1 + 2) = *(undefined1 *)(param_2 + 2);
  puVar1[3] = param_2[3];
  param_2[3] = 0;
  *(undefined4 *)(puVar1 + 4) = *(undefined4 *)(param_2 + 4);
  *(undefined4 *)((longlong)puVar1 + 0x24) = *(undefined4 *)((longlong)param_2 + 0x24);
  param_2[4] = 0;
  *(undefined8 **)(param_1 + 2) = puVar1;
  *(undefined8 *)(param_1 + 4) = 0;
  *(undefined8 *)(param_1 + 6) = 0x3f800000;
  *(undefined8 *)(param_1 + 8) = 0;
  *(undefined8 *)(param_1 + 10) = 0x3f800000;
  return param_1;
}



############ FUN_ 1812a33e0 size=316 ############

void FUN_1812a33e0(void)

{
  ushort *puVar1;
  undefined **ppuVar2;
  ushort *_Memory;
  undefined *local_res8;
  undefined **local_res10;
  undefined8 local_res18;
  
  OleInitialize((LPVOID)0x0);
  if (DAT_182673ad8 == (undefined **)0x0) {
    local_res8 = &DAT_182673aa8;
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673aa8);
    if ((DAT_182673ad8 == (undefined **)0x0) && (DAT_18267aa98 == '\0')) {
      DAT_18267aa98 = 1;
      ppuVar2 = (undefined **)FUN_1811316e0(0x48);
      *ppuVar2 = (undefined *)0x0;
      local_res10 = ppuVar2;
      InitializeCriticalSection((LPCRITICAL_SECTION)(ppuVar2 + 1));
      ppuVar2[7] = (undefined *)0x0;
      ppuVar2[8] = (undefined *)0x0;
      local_res18 = FUN_1811316e0(0x10);
      _Memory = (ushort *)FUN_1804cf280(local_res18,&DAT_1821e11d8,FUN_1804d1550);
      if (ppuVar2 == &local_res8) {
        if (_Memory != (ushort *)0x0) {
          DestroyWindow(*(HWND *)(_Memory + 4));
          UnregisterClassW((LPCWSTR)(ulonglong)*_Memory,(HINSTANCE)0x0);
          goto LAB_1812a34e0;
        }
      }
      else {
        puVar1 = (ushort *)*ppuVar2;
        *ppuVar2 = (undefined *)_Memory;
        if (puVar1 != (ushort *)0x0) {
          DestroyWindow(*(HWND *)(puVar1 + 4));
          UnregisterClassW((LPCWSTR)(ulonglong)*puVar1,(HINSTANCE)0x0);
          _Memory = puVar1;
LAB_1812a34e0:
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      DAT_1826736b0 = *(undefined8 *)(*ppuVar2 + 8);
      DAT_18267aa98 = '\0';
      DAT_182673ad8 = ppuVar2;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673aa8);
  }
  return;
}



############ FUN_ 1812a4a00 size=406 ############

void FUN_1812a4a00(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *_Memory;
  longlong *plVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  uint *puVar5;
  longlong *local_res8;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  while (((int)param_1[0x37] == 0 && (param_1[0x40] != 0))) {
    plVar2 = (longlong *)FUN_181238760();
    local_res8 = plVar2;
    if (plVar2 != (longlong *)0x0) {
      plVar3 = (longlong *)(**(code **)(*param_1 + 0x10))(param_1);
      if (plVar3 != (longlong *)0x0) {
        local_res8 = (longlong *)0x0;
        _Memory = (longlong *)plVar3[7];
        plVar3[7] = (longlong)plVar2;
        if (_Memory != (longlong *)0x0) {
          FUN_1812388c0(_Memory);
          DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)_Memory + 0x12));
          puVar5 = (uint *)(*_Memory + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        LOCK();
        *(undefined1 *)(plVar3 + 0xc) = 1;
        UNLOCK();
        if ((char)plVar3[9] == '\0') {
          *(undefined1 *)(plVar3 + 9) = 1;
          if (*(char *)((longlong)plVar3 + 0x49) == '\0') {
            (**(code **)(*plVar3 + 8))(plVar3);
          }
          else {
            puVar4 = (undefined8 *)FUN_1811316e0(0x20);
            *(undefined4 *)(puVar4 + 1) = 0;
            *puVar4 = juce::ConnectionStateMessage::vftable;
            FUN_1804d1aa0(puVar4 + 2,plVar3,param_3,param_4,uVar6);
            *(undefined1 *)(puVar4 + 3) = 1;
            FUN_1812a6720(puVar4);
          }
        }
        FUN_18122b350(plVar3[0xb]);
      }
    }
    if (local_res8 != (longlong *)0x0) {
      FUN_1812388c0(local_res8);
      DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)local_res8 + 0x12));
      puVar5 = (uint *)(*local_res8 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(local_res8);
    }
  }
  return;
}



############ FUN_ 1812a4d60 size=388 ############

ulonglong FUN_1812a4d60(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  ulonglong uVar3;
  undefined8 *puVar4;
  int iVar5;
  int iVar6;
  uint local_res10;
  int local_res14;
  undefined8 *local_res18;
  undefined8 *local_res20;
  undefined8 uVar7;
  void *local_70;
  longlong local_68;
  
  uVar7 = 0xfffffffffffffffe;
  uVar3 = FUN_1812a4f80(param_1,&local_res10,8,param_4,0xfffffffffffffffe);
  if ((int)uVar3 == 8) {
    uVar1 = *(uint *)((longlong)param_1 + 0x4c);
    uVar3 = (ulonglong)uVar1;
    if (local_res10 == uVar1) {
      local_68 = (longlong)local_res14;
      if (local_res14 < 1) {
        return CONCAT71((uint7)(uint3)(uVar1 >> 8),1);
      }
      iVar6 = 0;
      local_70 = (void *)0x0;
      if (local_res14 != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)0x0);
      }
      local_68 = 0;
      iVar5 = 0;
      do {
        if (*(int *)(param_1[0xb] + 0x1b8) != 0) {
                    /* WARNING: Subroutine does not return */
          free(local_70);
        }
        iVar2 = iVar5;
        if (0x10000 < iVar5) {
          iVar2 = 0x10000;
        }
        iVar2 = FUN_1812a4f80(param_1,(longlong)iVar6 + (longlong)local_70,iVar2,param_4,uVar7);
        if (iVar2 < 1) break;
        iVar6 = iVar6 + iVar2;
        iVar5 = iVar5 - iVar2;
      } while (0 < iVar5);
      if (-1 < iVar6) {
        if (*(char *)((longlong)param_1 + 0x49) == '\0') {
          (**(code **)(*param_1 + 0x18))(param_1,&local_70);
        }
        else {
          puVar4 = (undefined8 *)FUN_1811316e0(0x30);
          *(undefined4 *)(puVar4 + 1) = 0;
          puVar4[2] = 0;
          *puVar4 = juce::DataDeliveryMessage::vftable;
          local_res18 = puVar4;
          FUN_1804d1aa0(puVar4 + 3,param_1);
          local_res20 = puVar4 + 4;
          *local_res20 = 0;
          puVar4[5] = local_68;
          if (local_68 != 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)0x0);
          }
          FUN_1812a6720(puVar4);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(local_70);
    }
  }
  else if ((int)uVar3 < 0) {
    if (param_1[7] != 0) {
      FUN_1812a54d0(param_1);
    }
    uVar3 = FUN_1812a5140(param_1);
  }
  return uVar3 & 0xffffffffffffff00;
}



############ FUN_ 1812a5140 size=80 ############

void FUN_1812a5140(longlong *param_1)

{
  undefined8 uVar1;
  
  if ((char)param_1[9] == '\0') {
    return;
  }
  *(undefined1 *)(param_1 + 9) = 0;
  if (*(char *)((longlong)param_1 + 0x49) != '\0') {
    uVar1 = FUN_1811316e0(0x20);
    uVar1 = FUN_1804d0b70(uVar1,param_1,0);
    FUN_1812a6720(uVar1);
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812a5186. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x10))();
  return;
}



############ FUN_ 1812a50a0 size=145 ############

void FUN_1812a50a0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(char *)((longlong)param_1 + 0x49) != '\0') {
    puVar1 = (undefined8 *)FUN_1811316e0(0x30);
    *(undefined4 *)(puVar1 + 1) = 0;
    puVar1[2] = 0;
    *puVar1 = juce::DataDeliveryMessage::vftable;
    FUN_1804d1aa0(puVar1 + 3,param_1,param_3,param_4,uVar2);
    FUN_18123aa50(puVar1 + 4,param_2);
    FUN_1812a6720(puVar1);
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812a512d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x18))();
  return;
}



############ FUN_ 1812a51a0 size=80 ############

void FUN_1812a51a0(longlong *param_1)

{
  undefined8 uVar1;
  
  if ((char)param_1[9] != '\0') {
    return;
  }
  *(undefined1 *)(param_1 + 9) = 1;
  if (*(char *)((longlong)param_1 + 0x49) != '\0') {
    uVar1 = FUN_1811316e0(0x20);
    uVar1 = FUN_1804d0b70(uVar1,param_1,1);
    FUN_1812a6720(uVar1);
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812a51e6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 8))();
  return;
}



############ FUN_ 1812a5200 size=123 ############

void FUN_1812a5200(longlong *param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  
  lVar1 = param_1[7];
  param_1[7] = param_2;
  if (lVar1 != 0) {
    FUN_1804d1d40(param_1,lVar1);
  }
  LOCK();
  *(undefined1 *)(param_1 + 0xc) = 1;
  UNLOCK();
  if ((char)param_1[9] == '\0') {
    *(undefined1 *)(param_1 + 9) = 1;
    if (*(char *)((longlong)param_1 + 0x49) != '\0') {
      uVar2 = FUN_1811316e0(0x20);
      uVar2 = FUN_1804d0b70(uVar2,param_1,1);
      FUN_1812a6720(uVar2);
      FUN_18122b350(param_1[0xb]);
      return;
    }
    (**(code **)(*param_1 + 8))(param_1);
  }
  FUN_18122b350(param_1[0xb]);
  return;
}



############ FUN_ 1812a6380 size=340 ############

void FUN_1812a6380(longlong *param_1,ulonglong param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong lVar4;
  uint uVar5;
  uint uVar6;
  undefined8 *puVar7;
  void *_Src;
  ulonglong *puVar8;
  uint uVar9;
  uint uVar10;
  bool bVar11;
  
  uVar9 = 0;
  if (*param_1 == 0) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x50);
    *puVar7 = juce::ActionBroadcaster::vftable;
    puVar7[1] = 0;
    puVar7[2] = 0;
    InitializeCriticalSection((LPCRITICAL_SECTION)(puVar7 + 3));
    puVar7[9] = 0;
    puVar2 = (undefined8 *)*param_1;
    *param_1 = (longlong)puVar7;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  lVar3 = *param_1;
  EnterCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x18));
  if (param_2 != 0) {
    uVar1 = *(uint *)(lVar3 + 0x14);
    if (0 < (int)uVar1) {
      lVar4 = *(longlong *)(lVar3 + 8);
      uVar9 = 0;
      uVar10 = uVar1;
      do {
        if (param_2 == *(ulonglong *)(lVar4 + (longlong)(int)uVar9 * 8)) {
          *(ulonglong *)(lVar4 + (longlong)(int)uVar9 * 8) = param_2;
          goto LAB_1812a64b7;
        }
        uVar6 = (int)(uVar10 + uVar9) / 2;
        bVar11 = *(ulonglong *)(lVar4 + (longlong)(int)uVar6 * 8) <= param_2;
        if (uVar6 == uVar9) {
          if (bVar11) {
            uVar9 = uVar9 + 1;
          }
          break;
        }
        uVar5 = uVar6;
        if (!bVar11) {
          uVar5 = uVar9;
          uVar10 = uVar6;
        }
        uVar9 = uVar5;
      } while ((int)uVar9 < (int)uVar10);
    }
    if (*(int *)(lVar3 + 0x10) < (int)(uVar1 + 1)) {
      FUN_18047cb30(lVar3 + 8,uVar1 + 9 + (int)(uVar1 + 1) / 2 & 0xfffffff8);
    }
    uVar1 = *(uint *)(lVar3 + 0x14);
    if (uVar9 < uVar1) {
      _Src = (void *)(*(longlong *)(lVar3 + 8) + (longlong)(int)uVar9 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - uVar9) << 3);
      puVar8 = (ulonglong *)(*(longlong *)(lVar3 + 8) + (longlong)(int)uVar9 * 8);
    }
    else {
      puVar8 = (ulonglong *)(*(longlong *)(lVar3 + 8) + (longlong)(int)uVar1 * 8);
    }
    *puVar8 = param_2;
    *(int *)(lVar3 + 0x14) = *(int *)(lVar3 + 0x14) + 1;
  }
LAB_1812a64b7:
                    /* WARNING: Could not recover jumptable at 0x0001812a64cd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x18));
  return;
}



############ FUN_ 1812a6600 size=63 ############

undefined4 FUN_1812a6600(longlong param_1)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::MessageManager::QuitMessage::vftable;
  FUN_1812a6720(puVar2);
  LOCK();
  uVar1 = *(undefined4 *)(param_1 + 8);
  *(undefined4 *)(param_1 + 8) = 1;
  UNLOCK();
  return uVar1;
}



############ FUN_ 1812a6f90 size=336 ############

void FUN_1812a6f90(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  uint *_Memory;
  uint *puVar5;
  longlong local_res10;
  undefined8 *local_res18;
  longlong local_res20;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x48);
  local_res18 = puVar3;
  uVar6 = (**(code **)(*param_1 + 8))(param_1,&local_res20,*param_1,param_4,uVar6);
  *puVar3 = juce::JUCEApplicationBase::MultipleInstanceHandler::vftable;
  FUN_18049c4e0(&local_res10,"juceAppLock_");
  plVar4 = (longlong *)FUN_181232d30(&local_res10,uVar6);
  local_res18 = (undefined8 *)*plVar4;
  puVar5 = (uint *)((longlong)local_res18 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar3[1] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(puVar3 + 2));
  puVar3[8] = local_res18;
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar2 = (undefined8 *)param_1[2];
  param_1[2] = (longlong)puVar3;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar5 = (uint *)(local_res20 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1804cf720(param_1[2]);
  return;
}



############ FUN_ 1812a70f0 size=68 ############

void FUN_1812a70f0(void)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  lVar1 = FUN_1812a7550();
  puVar2 = (undefined8 *)FUN_1811316e0(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::MessageManager::QuitMessage::vftable;
  FUN_1812a6720(puVar2);
  LOCK();
  *(undefined4 *)(lVar1 + 8) = 1;
  UNLOCK();
  return;
}



############ FUN_ 1812aaf00 size=362 ############

void FUN_1812aaf00(longlong param_1,longlong *param_2)

{
  int iVar1;
  int iVar2;
  uint *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined4 *puVar7;
  void *pvVar8;
  int iVar9;
  uint uVar10;
  longlong lVar11;
  
  (**(code **)(**(longlong **)(param_1 + 8) + 0x18))();
  lVar11 = 0;
  iVar1 = *(int *)*param_2;
  iVar9 = *(int *)(param_1 + 0x24);
  do {
    if (iVar1 <= iVar9) {
      if (0 < iVar1) {
        do {
          lVar4 = *param_2;
          lVar6 = param_2[1];
          LOCK();
          *(undefined1 *)(lVar4 + 0x120) = 0;
          UNLOCK();
          FUN_1812b1b60(*(undefined8 *)(*(longlong *)(param_1 + 0x18) + lVar11 * 8),
                        *(longlong *)(*(longlong *)(lVar4 + 0x10) + lVar11 * 8) +
                        (longlong)(int)lVar6 * 4,*(undefined4 *)((longlong)param_2 + 0xc));
          lVar11 = lVar11 + 1;
        } while (lVar11 < iVar1);
      }
      return;
    }
    puVar7 = (undefined4 *)FUN_1811316e0(0x24);
    puVar3 = (uint *)**(undefined8 **)(param_1 + 0x18);
    *puVar7 = 0;
    LOCK();
    *puVar7 = 0;
    UNLOCK();
    *(undefined8 *)(puVar7 + 1) = 0;
    *(undefined8 *)(puVar7 + 3) = 0;
    *(undefined8 *)(puVar7 + 5) = 0;
    puVar7[7] = 0;
    *(char *)(puVar7 + 8) = (char)puVar3[8];
    do {
      LOCK();
      uVar10 = *puVar3;
      *puVar3 = *puVar3 | 1;
      UNLOCK();
    } while ((uVar10 & 1) != 0);
    uVar5 = *(undefined8 *)(puVar3 + 3);
    *(undefined8 *)(puVar7 + 1) = *(undefined8 *)(puVar3 + 1);
    *(undefined8 *)(puVar7 + 3) = uVar5;
    puVar7[5] = puVar3[5];
    LOCK();
    *puVar3 = 0;
    UNLOCK();
    iVar2 = *(int *)(param_1 + 0x24);
    iVar9 = iVar2 + 1;
    if ((int)*(uint *)(param_1 + 0x20) < iVar9) {
      if (iVar9 < 0) {
        iVar9 = iVar2 + 2;
      }
      uVar10 = iVar2 + 9 + (iVar9 >> 1) & 0xfffffff8;
      if (*(uint *)(param_1 + 0x20) != uVar10) {
        pvVar8 = *(void **)(param_1 + 0x18);
        if ((int)uVar10 < 1) {
                    /* WARNING: Subroutine does not return */
          free(pvVar8);
        }
        if (pvVar8 == (void *)0x0) {
          pvVar8 = malloc((longlong)(int)uVar10 * 8);
          *(void **)(param_1 + 0x18) = pvVar8;
        }
        else {
          pvVar8 = realloc(pvVar8,(longlong)(int)uVar10 * 8);
          *(void **)(param_1 + 0x18) = pvVar8;
        }
      }
      *(uint *)(param_1 + 0x20) = uVar10;
    }
    iVar9 = *(int *)(param_1 + 0x24);
    *(int *)(param_1 + 0x24) = iVar9 + 1;
    *(undefined4 **)(*(longlong *)(param_1 + 0x18) + (longlong)iVar9 * 8) = puVar7;
    iVar9 = *(int *)(param_1 + 0x24);
  } while( true );
}



############ FUN_ 1812b5330 size=559 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812b5330(longlong param_1)

{
  char cVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  undefined1 auStack_e8 [48];
  longlong local_b8 [3];
  undefined8 *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  longlong local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  LPCRITICAL_SECTION local_50;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_50 = (LPCRITICAL_SECTION)(param_1 + 0x78);
  EnterCriticalSection(local_50);
  plVar2 = (longlong *)**(longlong **)(param_1 + 0x68);
  plVar8 = (longlong *)0x0;
  if (plVar2 != *(longlong **)(param_1 + 0x68)) {
    local_88 = 0;
    uStack_80 = 0;
    local_78 = 0;
    FUN_1813522a0(plVar2[5] + 8,&local_88);
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  lVar3 = *(longlong *)(param_1 + 0x28);
  plVar2 = plVar8;
  if (lVar3 != 0) {
    plVar8 = (longlong *)(*(longlong *)(lVar3 + 0x28) + (longlong)*(int *)(lVar3 + 0x34) * 8);
    plVar2 = *(longlong **)(lVar3 + 0x28);
  }
  if (plVar2 != plVar8) {
    local_b8[0] = *plVar2;
    if (local_b8[0] != 0) {
      LOCK();
      *(int *)(local_b8[0] + 8) = *(int *)(local_b8[0] + 8) + 1;
      UNLOCK();
    }
    local_68 = 0;
    local_60 = 0;
    if (local_b8[0] != 0) {
      LOCK();
      *(int *)(local_b8[0] + 8) = *(int *)(local_b8[0] + 8) + 1;
      UNLOCK();
    }
    local_b8[1] = 0;
    local_b8[2] = 0;
    local_70 = local_b8[0];
    FUN_1812b56a0(param_1,local_b8);
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  puVar4 = (undefined8 *)**(undefined8 **)(param_1 + 0x68);
  while( true ) {
    if (puVar4 == *(undefined8 **)(param_1 + 0x68)) {
      FUN_1812b5090(param_1);
      LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x78));
    }
    lVar3 = puVar4[5];
    if (*(longlong *)(lVar3 + 8) == 0) break;
    puVar6 = (undefined8 *)puVar4[2];
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      cVar1 = *(char *)((longlong)*puVar6 + 0x19);
      puVar4 = puVar6;
      puVar6 = (undefined8 *)*puVar6;
      while (cVar1 == '\0') {
        cVar1 = *(char *)((longlong)*puVar6 + 0x19);
        puVar4 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
      }
    }
    else {
      cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
      puVar7 = (undefined8 *)puVar4[1];
      puVar6 = puVar4;
      while ((puVar4 = puVar7, cVar1 == '\0' && (puVar6 == (undefined8 *)puVar4[2]))) {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar7 = (undefined8 *)puVar4[1];
        puVar6 = puVar4;
      }
    }
  }
  local_a0 = (undefined8 *)FUN_1811316e0(0x50);
  *(undefined4 *)(local_a0 + 1) = 0;
  *local_a0 = juce::ValueTree::SharedObject::vftable;
  lVar5 = *(longlong *)(param_1 + 0x48);
  local_a0[2] = lVar5;
  if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
    UNLOCK();
  }
  local_a0[3] = 0;
  local_a0[4] = 0;
  local_a0[5] = 0;
  local_a0[6] = 0;
  local_a0[7] = 0;
  local_a0[8] = 0;
  local_a0[9] = 0;
  LOCK();
  *(int *)(local_a0 + 1) = *(int *)(local_a0 + 1) + 1;
  UNLOCK();
  local_98 = 0;
  local_90 = 0;
  FUN_1813522a0((longlong *)(lVar3 + 8),&local_a0);
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 1812b5b00 size=131 ############

void FUN_1812b5b00(longlong param_1,longlong param_2)

{
  undefined8 *local_res8;
  undefined1 local_20 [24];
  
  local_res8 = (undefined8 *)FUN_1811316e0(0x40);
  local_res8 = (undefined8 *)FUN_1804d9ce0(local_res8,param_2);
  FUN_1804e1300(param_1 + 0x60,param_2 + 0x60,&local_res8);
  FUN_1804e1340(param_1 + 0x60,local_20);
  if (local_res8 != (undefined8 *)0x0) {
    (**(code **)*local_res8)(local_res8,1);
  }
  return;
}



############ FUN_ 1812b6b50 size=124 ############

void FUN_1812b6b50(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  longlong *plVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  plVar2 = (longlong *)FUN_1811316e0();
  lVar1 = *param_2;
  *param_2 = 0;
  *plVar2 = lVar1;
  plVar2[1] = 0;
  plVar2[2] = param_1;
  *(longlong *)(*plVar2 + 0x28) = param_1;
  FUN_180485e60(param_1 + 0x18,plVar2,lVar1,param_4,uVar3);
  _Memory = (void *)*param_2;
  if (_Memory != (void *)0x0) {
    FUN_1812c2700(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 1812bc610 size=1118 ############

void FUN_1812bc610(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *pvVar6;
  code *pcVar7;
  char cVar8;
  undefined8 *_Dst;
  int *_Dst_00;
  undefined4 uVar9;
  longlong *plVar10;
  longlong lVar11;
  longlong lVar12;
  undefined1 local_138 [48];
  void *local_108;
  undefined4 local_fc;
  undefined1 local_f8 [48];
  undefined1 local_c8 [136];
  
  _Dst = (undefined8 *)FUN_1811316e0(0x2a8);
  memset(_Dst,0,0x2a8);
  *_Dst = 0;
  _Dst[1] = 0;
  _Dst[2] = 0;
  _Dst[3] = _Dst + 5;
  _Dst[4] = 0;
  *(undefined1 *)(_Dst + 0x25) = 0;
  _Dst[0x26] = 0;
  _Dst[0x27] = 0;
  _Dst[0x28] = _Dst + 0x2a;
  _Dst[0x29] = 0;
  *(undefined1 *)(_Dst + 0x4a) = 0;
  _Dst[0x4b] = 0;
  _Dst[0x4c] = 0;
  _Dst[0x4d] = 0;
  _Dst[0x4e] = 0;
  _Dst[0x4f] = 0;
  _Dst[0x50] = 0;
  _Dst[0x51] = 0;
  _Dst[0x52] = 0;
  _Dst[0x53] = 0;
  _Dst[0x54] = 0;
  _Dst_00 = (int *)FUN_1811316e0(0x2a8);
  memset(_Dst_00,0,0x2a8);
  _Dst_00[0] = 0;
  _Dst_00[1] = 0;
  _Dst_00[2] = 0;
  _Dst_00[3] = 0;
  _Dst_00[4] = 0;
  _Dst_00[5] = 0;
  *(int **)(_Dst_00 + 6) = _Dst_00 + 10;
  _Dst_00[8] = 0;
  _Dst_00[9] = 0;
  *(undefined1 *)(_Dst_00 + 0x4a) = 0;
  piVar1 = _Dst_00 + 0x4c;
  piVar1[0] = 0;
  piVar1[1] = 0;
  _Dst_00[0x4e] = 0;
  _Dst_00[0x4f] = 0;
  *(int **)(_Dst_00 + 0x50) = _Dst_00 + 0x54;
  _Dst_00[0x52] = 0;
  _Dst_00[0x53] = 0;
  *(undefined1 *)(_Dst_00 + 0x94) = 0;
  _Dst_00[0x96] = 0;
  _Dst_00[0x97] = 0;
  _Dst_00[0x98] = 0;
  _Dst_00[0x99] = 0;
  _Dst_00[0x9a] = 0;
  _Dst_00[0x9b] = 0;
  _Dst_00[0x9c] = 0;
  _Dst_00[0x9d] = 0;
  plVar2 = (longlong *)(_Dst_00 + 0x9e);
  *plVar2 = 0;
  _Dst_00[0xa0] = 0;
  _Dst_00[0xa1] = 0;
  _Dst_00[0xa2] = 0;
  _Dst_00[0xa3] = 0;
  _Dst_00[0xa4] = 0;
  _Dst_00[0xa5] = 0;
  _Dst_00[0xa6] = 0;
  _Dst_00[0xa7] = 0;
  _Dst_00[0xa8] = 0;
  _Dst_00[0xa9] = 0;
  FUN_1804da7a0(local_c8,param_1,_Dst);
  FUN_1804da2a0(local_138,param_1,_Dst_00);
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  uVar4 = *(undefined4 *)(param_1 + 0x38);
  FUN_1804daca0(_Dst,uVar4);
  FUN_180480760(_Dst_00 + 2,*_Dst_00 + 1,uVar4);
  FUN_1804806f0(_Dst_00 + 2);
  FUN_180480760(piVar1,*_Dst_00 + 1,uVar4);
  FUN_1804806f0(piVar1);
  _Dst_00[0x96] = 0;
  _Dst_00[0x97] = 0;
  _Dst_00[0x98] = 0;
  _Dst_00[0x99] = 0;
  _Dst_00[0x9d] = 0;
  FUN_1804de250(plVar2);
  FUN_1804dc720(plVar2,_Dst_00[1]);
  if (_Dst_00[0xa4] < 0x200) {
    FUN_18049bab0(_Dst_00 + 0xa2,0x308);
  }
  lVar11 = *plVar2;
  lVar12 = (longlong)_Dst_00[0xa1] * 0x10 + lVar11;
  for (; lVar11 != lVar12; lVar11 = lVar11 + 0x10) {
    if (*(int *)(lVar11 + 8) < 0x200) {
      FUN_18049bab0(lVar11,0x308);
    }
  }
  plVar10 = *(longlong **)(param_1 + 400);
  plVar2 = plVar10 + *(int *)(param_1 + 0x19c);
  while( true ) {
    if (plVar10 == plVar2) goto LAB_1812bca0c;
    if (*(char *)(*plVar10 + 0x50) == '\0') break;
    plVar10 = plVar10 + 1;
  }
  pvVar6 = *(void **)(param_1 + 0x1a8);
  *(undefined8 *)(param_1 + 0x1a8) = 0;
  if (pvVar6 != (void *)0x0) {
    FUN_1804dcc10(pvVar6);
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  pvVar6 = *(void **)(param_1 + 0x1b0);
  *(undefined8 *)(param_1 + 0x1b0) = 0;
  if (pvVar6 != (void *)0x0) {
    FUN_1804dcc10(pvVar6);
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  plVar10 = *(longlong **)(param_1 + 400);
  plVar2 = plVar10 + *(int *)(param_1 + 0x19c);
  for (; plVar10 != plVar2; plVar10 = plVar10 + 1) {
    lVar11 = *plVar10;
    uVar5 = *(undefined4 *)(param_1 + 0x44);
    uVar3 = *(undefined8 *)(param_1 + 0x30);
    EnterCriticalSection((LPCRITICAL_SECTION)(lVar11 + 0x52));
    if (*(char *)(lVar11 + 0x50) == '\0') {
      FUN_1812bd420(lVar11,param_1);
      pcVar7 = *(code **)(**(longlong **)(lVar11 + 0x28) + 0x60);
      if (pcVar7 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                    vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
        cVar8 = '\0';
      }
      else {
        cVar8 = (*pcVar7)();
      }
      uVar9 = 0;
      if (cVar8 != '\0') {
        uVar9 = uVar5;
      }
      *(undefined4 *)(*(longlong *)(lVar11 + 0x28) + 0x44) = uVar9;
      lVar12 = *(longlong *)(lVar11 + 0x28);
      *(undefined8 *)(lVar12 + 0x30) = uVar3;
      *(undefined4 *)(lVar12 + 0x38) = uVar4;
      (**(code **)(**(longlong **)(lVar11 + 0x28) + 0x18))
                (*(longlong **)(lVar11 + 0x28),(int)uVar3,uVar4);
      *(undefined1 *)(lVar11 + 0x50) = 1;
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar11 + 0x52));
  }
LAB_1812bca0c:
  LOCK();
  *(undefined1 *)(param_1 + 0x1b8) = 1;
  UNLOCK();
  *(undefined8 **)(param_1 + 0x1a8) = _Dst;
  *(int **)(param_1 + 0x1b0) = _Dst_00;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  FUN_1804daed0(local_f8);
  local_fc = 0;
                    /* WARNING: Subroutine does not return */
  free(local_108);
}



############ FUN_ 1812bd6b0 size=87 ############

void FUN_1812bd6b0(undefined8 param_1,undefined4 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x158);
  FUN_18050dd00(uVar1,param_1,param_2,param_3,0);
  return;
}



############ FUN_ 1812c46f0 size=92 ############

longlong FUN_1812c46f0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(200);
  lVar2 = FUN_180519350(uVar1,param_1,param_2,param_4,uVar3);
  if (lVar2 != 0) {
    return lVar2 + 0xb0;
  }
  return 0;
}



############ FUN_ 1812c4970 size=445 ############

undefined8 FUN_1812c4970(longlong param_1,char param_2,undefined8 param_3,longlong *param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined8 uStack_30;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  if (*(int *)(param_1 + 0xc) == 0) {
    plVar1 = (longlong *)param_4[7];
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_4);
      param_4[7] = 0;
    }
    uVar3 = 0;
  }
  else {
    local_38 = CONCAT22(local_38._2_2_,0xf);
    uStack_30 = 0;
    local_28 = 1;
    uStack_24 = 0xffffffff;
    uStack_20 = 1;
    uVar4 = 1;
    local_78 = 1;
    local_68 = 0;
    uStack_70 = FUN_1812c4b40();
    if ((DAT_182673b10 == (undefined8 *)0x0) && (DAT_18267ab71 == '\0')) {
      DAT_18267ab71 = 1;
      puVar2 = (undefined8 *)FUN_1811316e0(0x100);
      memset(puVar2,0,0x100);
      FUN_1812a7230(puVar2);
      *puVar2 = juce::DragAndDropHelpers::ThreadPoolHolder::vftable;
      FUN_18122abb0(puVar2 + 1,1);
      DAT_18267ab71 = '\0';
      DAT_182673b10 = puVar2;
    }
    puVar2 = DAT_182673b10;
    uVar3 = FUN_1811316e0(0xe0);
    local_58 = CONCAT44(uStack_74,local_78);
    uStack_50 = uStack_70;
    local_48 = local_68;
    local_78 = local_38;
    uStack_74 = uStack_34;
    uStack_70 = uStack_30;
    local_68 = CONCAT44(uStack_24,local_28);
    uStack_60 = uStack_20;
    uStack_5c = uStack_1c;
    if (param_2 != '\0') {
      uVar4 = 3;
    }
    uVar3 = FUN_180516d60(uVar3,&local_78,&local_58,uVar4,param_4);
    FUN_18122a750(puVar2 + 1,uVar3,1);
    plVar1 = (longlong *)param_4[7];
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_4);
      param_4[7] = 0;
    }
    uVar3 = 1;
  }
  return uVar3;
}



############ FUN_ 1812c61b0 size=201 ############

float * FUN_1812c61b0(float *param_1)

{
  int iVar1;
  undefined8 uVar2;
  tagPOINT *ptVar3;
  char cVar4;
  tagPOINT local_res8;
  undefined8 local_res10;
  undefined1 local_res18 [8];
  
  GetCursorPos(&local_res8);
  FUN_1812c75b0();
  if ((DAT_182678f18 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
    cVar4 = FUN_1812c7510();
  }
  else {
    uVar2 = (*DAT_182678f18)();
    iVar1 = (*DAT_182678ec8)(uVar2);
    cVar4 = iVar1 == 2;
  }
  if (cVar4 != '\0') {
    if (DAT_182673700 == 0) {
      local_res10 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res10);
    }
    ptVar3 = (tagPOINT *)
             FUN_18051ece0(*(undefined8 *)(DAT_182673700 + 0x78),local_res18,local_res8,0);
    local_res8 = *ptVar3;
  }
  *param_1 = (float)local_res8.x;
  param_1[1] = (float)local_res8.y;
  return param_1;
}



############ FUN_ 1812c6360 size=106 ############

void FUN_1812c6360(undefined4 param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0();
  FUN_1805166a0(uVar1,param_1,param_2,param_3,0,0,0,1,uVar2);
  return;
}



############ FUN_ 1812c6650 size=78 ############

void FUN_1812c6650(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x158);
  FUN_18050dd00(uVar1,param_1,4,param_2,1);
  return;
}



############ FUN_ 1812c7bf0 size=1057 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812c7bf0(longlong param_1,longlong param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  float fVar4;
  float fVar5;
  float *pfVar6;
  undefined4 *puVar7;
  undefined8 uVar8;
  int iVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float local_150;
  float fStack_14c;
  float fStack_148;
  float fStack_144;
  undefined1 local_140;
  void *local_138;
  undefined8 local_130;
  float local_128;
  float fStack_124;
  float fStack_120;
  float fStack_11c;
  float *local_118;
  undefined4 local_110 [2];
  float *local_108;
  undefined8 *local_100;
  undefined4 local_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  undefined8 local_e8;
  undefined8 local_e0;
  ulonglong uStack_d8;
  undefined8 local_d0;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined1 local_b8 [16];
  undefined1 local_a8 [16];
  undefined1 local_98 [112];
  
  fVar5 = DAT_1824c4140._4_4_;
  fVar4 = (float)DAT_1824c4140;
  local_d0 = 0xfffffffffffffffe;
  fVar14 = (float)*(int *)(param_1 + 0x2c);
  fVar15 = (float)*(int *)(param_1 + 0x28);
  fStack_148 = fVar15 * DAT_1824c3e58;
  fStack_144 = fVar14 * DAT_1824c3e58;
  fVar13 = 0.0 - fVar14;
  fVar12 = fVar15 - 0.0;
  fVar10 = fVar12 * fVar12 + fVar13 * fVar13;
  if (0.0 < fVar10) {
    fVar10 = ((fStack_144 - fVar14) * fVar13 + (fStack_148 - 0.0) * fVar12) / fVar10;
    if (0.0 <= fVar10) {
      fVar11 = DAT_1824c3ea4;
      if (fVar10 <= DAT_1824c3ea4) {
        fVar11 = fVar10;
      }
    }
    else {
      fVar11 = 0.0;
    }
  }
  else {
    fVar11 = 0.0;
  }
  fStack_14c = fVar11 * fVar13 + fVar14;
  local_150 = fVar12 * fVar11 + 0.0;
  local_140 = 0;
  local_138 = (void *)0x0;
  local_130 = 0;
  fStack_120 = -1.7014118e+38;
  uStack_d8 = uStack_d8 & 0xffffffff00000000;
  FUN_18049ba20(&local_138,8);
  iVar9 = local_130._4_4_ + 1;
  local_e0 = 0;
  puVar2 = (undefined8 *)((longlong)local_138 + (longlong)local_130._4_4_ * 0x10);
  *puVar2 = 0;
  puVar2[1] = uStack_d8;
  local_130 = CONCAT44(local_130._4_4_ + 2,(undefined4)local_130);
  local_128 = fVar4;
  fStack_124 = fVar5;
  pfVar6 = (float *)((longlong)local_138 + (longlong)iVar9 * 0x10);
  *pfVar6 = fVar4;
  pfVar6[1] = fVar5;
  pfVar6[2] = fStack_120;
  pfVar6[3] = fStack_11c;
  FUN_1812a1940(&local_150,DAT_1824c3fc0,0x10000000);
  FUN_1812a1940(&local_150,DAT_1824c4050,0x30000000);
  FUN_1812a1940(&local_150,DAT_1824c40d8,0x70000000);
  local_110[0] = 0xff000000;
  pfVar6 = (float *)FUN_1811316e0(0x28);
  *pfVar6 = local_150;
  pfVar6[1] = fStack_14c;
  pfVar6[2] = fStack_148;
  pfVar6[3] = fStack_144;
  *(undefined1 *)(pfVar6 + 4) = local_140;
  local_118 = pfVar6;
  FUN_1804aaeb0(pfVar6 + 6,&local_138);
  local_100 = (undefined8 *)0x0;
  local_f8 = _DAT_1824c4780;
  uStack_f4 = _UNK_1824c4784;
  uStack_f0 = _UNK_1824c4788;
  uStack_ec = _UNK_1824c478c;
  local_e8 = 0x3f800000;
  local_108 = pfVar6;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x88))(*(longlong **)(param_2 + 8),local_110);
  if (local_100 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_100 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_100)(local_100,1);
    }
  }
  if (local_108 == (float *)0x0) {
    puVar7 = (undefined4 *)
             (**(code **)(**(longlong **)(param_2 + 8) + 0x58))
                       (*(longlong **)(param_2 + 8),local_b8);
    local_c8 = *puVar7;
    uStack_c4 = puVar7[1];
    uStack_c0 = puVar7[2];
    uStack_bc = puVar7[3];
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_c8,0);
    fVar15 = fVar15 - DAT_1824c4408;
    if (fVar15 <= 0.0) {
      fVar15 = 0.0;
    }
    fVar14 = fVar14 - DAT_1824c4408;
    if (fVar14 <= 0.0) {
      fVar14 = 0.0;
    }
    fStack_120 = fVar15;
    if (DAT_1824c44f0 <= fVar15) {
      fStack_120 = DAT_1824c44f0;
    }
    local_128 = (fVar15 + DAT_1824c4388) - fStack_120;
    fStack_11c = fVar14;
    if (DAT_1824c44c0 <= fVar14) {
      fStack_11c = DAT_1824c44c0;
    }
    fStack_124 = (fVar14 + DAT_1824c4388) - fStack_11c;
    plVar3 = *(longlong **)(param_1 + 0xd0);
    local_118 = (float *)CONCAT44(local_118._4_4_,0x24);
    uVar8 = (**(code **)(*plVar3 + 0x168))(plVar3,local_a8);
    uVar8 = FUN_1812971a0(&local_118,local_98,uVar8,&local_128);
    FUN_181332c20(plVar3,param_2,DAT_1824c3ea4,uVar8);
    if (DAT_182678ef0 == 0) {
      DAT_182678ef0 = timeGetTime();
      if (DAT_182678ef0 < DAT_1826737fc) {
        if (DAT_182678ef0 < DAT_1826737fc - 1000) {
          LOCK();
          UNLOCK();
          DAT_1826737fc = DAT_182678ef0;
        }
      }
      else {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DAT_182678ef0;
      }
    }
    if (*(int *)(param_1 + 0xc0) < 1) {
      FUN_1812a77d0(param_1 + 0xb0,2000);
    }
                    /* WARNING: Could not recover jumptable at 0x0001812c8017. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
    free(local_138);
    return;
  }
  local_108[9] = 0.0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(local_108 + 6));
}



############ FUN_ 1812c95f0 size=68 ############

void FUN_1812c95f0(void)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  lVar1 = FUN_1812a7550();
  puVar2 = (undefined8 *)FUN_1811316e0(0x10);
  *(undefined4 *)(puVar2 + 1) = 0;
  *puVar2 = juce::MessageManager::QuitMessage::vftable;
  FUN_1812a6720(puVar2);
  LOCK();
  *(undefined4 *)(lVar1 + 8) = 1;
  UNLOCK();
  return;
}



############ FUN_ 1812c9770 size=925 ############

undefined1 FUN_1812c9770(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  ulonglong uVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  wint_t *pwVar5;
  char cVar6;
  wint_t wVar7;
  wint_t wVar8;
  DWORD DVar9;
  int iVar10;
  int iVar11;
  ulonglong *puVar12;
  longlong lVar13;
  longlong lVar14;
  undefined8 *_Dst;
  void *_Memory;
  uint uVar15;
  undefined1 uVar16;
  longlong lVar17;
  int iVar18;
  undefined1 local_res20;
  char local_a8;
  longlong local_98;
  int local_78;
  uint uStack_74;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined8 local_58;
  ulonglong local_50;
  int local_48;
  char local_44;
  int local_40;
  
  uVar16 = 0;
  local_res20 = 0;
  DVar9 = timeGetTime();
  if ((DAT_1826737fc <= DVar9) || (DVar9 < DAT_1826737fc - 1000)) {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar9;
  }
  iVar10 = *(int *)(param_1 + 0x5c) + -1;
  lVar13 = (longlong)iVar10;
  if (-1 < iVar10) {
    do {
      puVar4 = *(undefined4 **)(*(longlong *)(param_1 + 0x50) + lVar13 * 8);
      if ((*(char *)(puVar4 + 6) != '\0') &&
         (local_98 = (longlong)(puVar4[5] + -1), -1 < puVar4[5] + -1)) {
        lVar14 = local_98 * 0xc;
        do {
          uVar1 = *(ulonglong *)(lVar14 + *(longlong *)(puVar4 + 2));
          iVar10 = *(int *)(lVar14 + 8 + *(longlong *)(puVar4 + 2));
          local_78 = (int)uVar1;
          iVar18 = local_78;
          cVar6 = FUN_1812c64f0(uVar1 & 0xffffffff);
          uStack_74 = (uint)(uVar1 >> 0x20);
          if ((cVar6 == '\0') || (local_a8 = '\x01', ((uStack_74 ^ DAT_182673aec) & 7) != 0)) {
            local_a8 = '\0';
          }
          uVar15 = *(int *)(param_1 + 0x6c) - 1;
          lVar17 = (longlong)(int)uVar15;
          if (-1 < (int)uVar15) {
            do {
              pwVar5 = *(wint_t **)(*(longlong *)(param_1 + 0x60) + lVar17 * 8);
              if ((uStack_74 == *(uint *)(pwVar5 + 2)) &&
                 (((iVar10 == *(int *)(pwVar5 + 4) || (iVar10 == 0)) || (*(int *)(pwVar5 + 4) == 0))
                 )) {
                if (iVar18 == *(int *)pwVar5) {
LAB_1812c998f:
                  cVar6 = '\x01';
                  local_res20 = 1;
                  goto LAB_1812c9918;
                }
                if ((iVar18 < 0x100) && (*(int *)pwVar5 < 0x100)) {
                  local_78._0_2_ = (wint_t)uVar1;
                  wVar7 = towlower((wint_t)local_78);
                  wVar8 = towlower(*pwVar5);
                  if (wVar7 == wVar8) goto LAB_1812c998f;
                }
              }
              uVar15 = uVar15 - 1;
              lVar17 = lVar17 + -1;
            } while (-1 < lVar17);
          }
          cVar6 = '\0';
          uVar15 = 0;
LAB_1812c9918:
          if (local_a8 != cVar6) {
            iVar18 = 0;
            _Memory = (void *)0x0;
            if (local_a8 == '\0') {
              uVar3 = *(uint *)(*(longlong *)
                                 ((longlong)(int)uVar15 * 8 + *(longlong *)(param_1 + 0x60)) + 0xc);
              iVar18 = 0;
              if (uVar3 < DVar9) {
                iVar18 = DVar9 - uVar3;
              }
              if (uVar15 < *(uint *)(param_1 + 0x6c)) {
                _Dst = (undefined8 *)(*(longlong *)(param_1 + 0x60) + (longlong)(int)uVar15 * 8);
                _Memory = (void *)*_Dst;
                memmove(_Dst,_Dst + 1,
                        (longlong)(int)((*(uint *)(param_1 + 0x6c) - uVar15) + -1) << 3);
                *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
              }
              if ((*(int *)(param_1 + 0x6c) * 2 < *(int *)(param_1 + 0x68)) &&
                 (*(int *)(param_1 + 0x6c) < *(int *)(param_1 + 0x68))) {
                FUN_18047cb30(param_1 + 0x60);
              }
              if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
                free(_Memory);
              }
            }
            else {
              puVar12 = (ulonglong *)FUN_1811316e0(0x10);
              *puVar12 = uVar1;
              *(int *)(puVar12 + 1) = iVar10;
              *(DWORD *)((longlong)puVar12 + 0xc) = DVar9;
              iVar2 = *(int *)(param_1 + 0x6c);
              iVar11 = iVar2 + 1;
              if (*(int *)(param_1 + 0x68) < iVar11) {
                if (iVar11 < 0) {
                  iVar11 = iVar2 + 2;
                }
                FUN_18047cb30(param_1 + 0x60,iVar2 + 9 + (iVar11 >> 1) & 0xfffffff8);
              }
              iVar11 = *(int *)(param_1 + 0x6c);
              *(int *)(param_1 + 0x6c) = iVar11 + 1;
              *(ulonglong **)(*(longlong *)(param_1 + 0x60) + (longlong)iVar11 * 8) = puVar12;
            }
            local_64 = 0;
            local_68 = *puVar4;
            local_60 = 1;
            local_44 = local_a8;
            local_58 = param_3;
            local_50 = uVar1;
            local_48 = iVar10;
            local_40 = iVar18;
            FUN_1812cb380(*(undefined8 *)(param_1 + 0x48),&local_68,0);
            local_res20 = 1;
          }
          local_98 = local_98 + -1;
          lVar14 = lVar14 + -0xc;
          uVar16 = local_res20;
        } while (-1 < local_98);
      }
      lVar13 = lVar13 + -1;
    } while (-1 < lVar13);
  }
  return uVar16;
}



############ FUN_ 1812ca290 size=542 ############

int * FUN_1812ca290(longlong param_1,int param_2,int *param_3,uint param_4)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  int *piVar4;
  longlong lVar5;
  int iVar6;
  void *_Src;
  undefined8 *puVar7;
  
  piVar4 = (int *)FUN_1812c9de0(param_1,param_3);
  if (((int)piVar4 != param_2) && (piVar4 = (int *)(ulonglong)(*param_3 != 0), *param_3 != 0)) {
    iVar6 = *(int *)(param_1 + 0x5c) + -1;
    lVar5 = (longlong)iVar6;
    if (-1 < iVar6) {
      do {
        piVar4 = *(int **)(*(longlong *)(param_1 + 0x50) + lVar5 * 8);
        if (*piVar4 == param_2) {
          lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x50) + (longlong)iVar6 * 8);
          iVar6 = *(int *)(lVar5 + 0x14) + 1;
          if (*(int *)(lVar5 + 0x10) < iVar6) {
            FUN_18051ce20(lVar5 + 8,iVar6 / 2 + 8 + iVar6 & 0xfffffff8);
          }
          uVar2 = *(uint *)(lVar5 + 0x14);
          if (param_4 < uVar2) {
            _Src = (void *)(*(longlong *)(lVar5 + 8) + (longlong)(int)param_4 * 0xc);
            memmove((void *)((longlong)_Src + 0xc),_Src,(longlong)(int)(uVar2 - param_4) * 0xc);
            puVar7 = (undefined8 *)(*(longlong *)(lVar5 + 8) + (longlong)(int)param_4 * 0xc);
          }
          else {
            puVar7 = (undefined8 *)(*(longlong *)(lVar5 + 8) + (longlong)(int)uVar2 * 0xc);
          }
          *puVar7 = *(undefined8 *)param_3;
          *(int *)(puVar7 + 1) = param_3[2];
          *(int *)(lVar5 + 0x14) = *(int *)(lVar5 + 0x14) + 1;
          if (*(char *)(param_1 + 0x38) == '\0') {
            return (int *)0x0;
          }
          piVar4 = (int *)0x0;
          puVar1 = (uint *)(*(longlong *)(param_1 + 0x18) + 0x18);
          LOCK();
          uVar2 = *puVar1;
          if (uVar2 == 0) {
            *puVar1 = 1;
          }
          else {
            piVar4 = (int *)(ulonglong)uVar2;
          }
          UNLOCK();
          if (uVar2 != 0) {
            return piVar4;
          }
          piVar4 = (int *)FUN_1812a6720(*(undefined8 *)(param_1 + 0x18));
          if ((char)piVar4 != '\0') {
            return piVar4;
          }
          goto LAB_1812ca494;
        }
        iVar6 = iVar6 + -1;
        lVar5 = lVar5 + -1;
      } while (-1 < lVar5);
    }
    iVar6 = *(int *)(*(longlong *)(param_1 + 0x48) + 0x24) + -1;
    lVar5 = (longlong)iVar6;
    if (-1 < iVar6) {
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x18);
      do {
        piVar4 = *(int **)(lVar3 + lVar5 * 8);
        if (*piVar4 == param_2) {
          lVar5 = *(longlong *)(lVar3 + (longlong)iVar6 * 8);
          if (lVar5 == 0) {
            return piVar4;
          }
          piVar4 = (int *)FUN_1811316e0(0x20);
          piVar4[2] = 0;
          piVar4[3] = 0;
          piVar4[4] = 0;
          piVar4[5] = 0;
          *piVar4 = param_2;
          FUN_18051b4d0(piVar4 + 2,param_3);
          *(byte *)(piVar4 + 6) = (byte)(*(uint *)(lVar5 + 0x30) >> 2) & 1;
          iVar6 = *(int *)(param_1 + 0x5c) + 1;
          if (*(int *)(param_1 + 0x58) < iVar6) {
            FUN_18047cb30(param_1 + 0x50,*(int *)(param_1 + 0x5c) + 9 + iVar6 / 2 & 0xfffffff8);
          }
          iVar6 = *(int *)(param_1 + 0x5c);
          *(int *)(param_1 + 0x5c) = iVar6 + 1;
          *(int **)(*(longlong *)(param_1 + 0x50) + (longlong)iVar6 * 8) = piVar4;
          if (*(char *)(param_1 + 0x38) == '\0') {
            return (int *)0x0;
          }
          piVar4 = (int *)0x0;
          puVar1 = (uint *)(*(longlong *)(param_1 + 0x18) + 0x18);
          LOCK();
          uVar2 = *puVar1;
          if (uVar2 == 0) {
            *puVar1 = 1;
          }
          else {
            piVar4 = (int *)(ulonglong)uVar2;
          }
          UNLOCK();
          if (uVar2 != 0) {
            return piVar4;
          }
          piVar4 = (int *)FUN_1812a6720(*(undefined8 *)(param_1 + 0x18));
          if ((char)piVar4 != '\0') {
            return piVar4;
          }
LAB_1812ca494:
          piVar4 = *(int **)(param_1 + 0x18);
          LOCK();
          piVar4[6] = 0;
          UNLOCK();
          return piVar4;
        }
        iVar6 = iVar6 + -1;
        lVar5 = lVar5 + -1;
      } while (-1 < lVar5);
    }
  }
  return piVar4;
}



############ FUN_ 1812ca530 size=262 ############

void FUN_1812ca530(undefined8 *param_1)

{
  longlong *plVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong lVar6;
  int iVar7;
  
  *param_1 = juce::KeyPressMappingSet::vftable;
  param_1[1] = juce::KeyPressMappingSet::vftable;
  param_1[8] = juce::KeyPressMappingSet::vftable;
  if (DAT_182673700 == 0) {
    uVar5 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar5);
  }
  lVar4 = DAT_182673700;
  plVar1 = (longlong *)(DAT_182673700 + 0x48);
  lVar3 = *plVar1;
  iVar7 = 0;
  lVar6 = 0;
  iVar2 = *(int *)(DAT_182673700 + 0x54);
  if (0 < iVar2) {
    do {
      if (param_1 + 8 == *(undefined8 **)(lVar3 + lVar6 * 8)) {
        _Dst = (void *)(lVar3 + (longlong)iVar7 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar4 + 0x54) = *(int *)(lVar4 + 0x54) + -1;
        iVar2 = *(int *)(lVar4 + 0x54);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar4 + 0x50)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar4 + 0x50)) {
            FUN_18047cb30(plVar1);
          }
        }
        break;
      }
      iVar7 = iVar7 + 1;
      lVar6 = lVar6 + 1;
    } while (lVar6 < iVar2);
  }
  FUN_18051b430(param_1 + 0xc);
  FUN_18051ccc0(param_1 + 10);
  *(undefined4 *)((longlong)param_1 + 0x5c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 1812caf10 size=553 ############

longlong FUN_1812caf10(void)

{
  DWORD DVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  HWND hWnd;
  longlong lVar5;
  uint uVar6;
  bool bVar7;
  DWORD local_res8 [2];
  undefined8 local_res10;
  
  lVar3 = DAT_182673708;
  if (DAT_182673708 == 0) {
    lVar2 = FUN_1812cbb60();
    if (lVar2 != 0) {
      if ((*(byte *)(lVar2 + 0xa8) & 1) == 0) {
        if (*(longlong *)(lVar2 + 0x18) == 0) goto LAB_1812cafc3;
        lVar3 = FUN_18134c2e0();
      }
      else {
        lVar3 = FUN_1812d2bd0(lVar2);
      }
      if (lVar3 != 0) {
        lVar3 = FUN_1812d1920(lVar3);
        if (lVar3 == 0) {
          lVar3 = lVar2;
        }
        goto LAB_1812caf7e;
      }
    }
LAB_1812cafc3:
    hWnd = GetForegroundWindow();
    if (hWnd != (HWND)0x0) {
      local_res8[0] = 0;
      GetWindowThreadProcessId(hWnd,local_res8);
      DVar1 = GetCurrentProcessId();
      if (local_res8[0] != DVar1) goto LAB_1812cb0f9;
    }
    if (DAT_182673700 == 0) {
      local_res10 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res10);
    }
    lVar3 = DAT_182673700;
    uVar6 = *(int *)(DAT_182673700 + 100) - 1;
    lVar2 = (longlong)(int)uVar6;
    bVar7 = (int)uVar6 < 0;
    while (!bVar7) {
      lVar4 = 0;
      if (uVar6 < *(uint *)(lVar3 + 100)) {
        lVar4 = *(longlong *)(*(longlong *)(lVar3 + 0x58) + lVar2 * 8);
      }
      if ((*(byte *)(lVar4 + 0xa8) & 1) == 0) {
        if (*(longlong *)(lVar4 + 0x18) != 0) {
          lVar4 = FUN_18134c2e0();
          goto LAB_1812cb06a;
        }
      }
      else {
        lVar4 = FUN_1812d2bd0();
LAB_1812cb06a:
        if (lVar4 != 0) {
          lVar4 = FUN_1812d1920(lVar4);
          lVar5 = __RTDynamicCast(lVar4,0,&juce::Component::RTTI_Type_Descriptor,
                                  &juce::ApplicationCommandTarget::RTTI_Type_Descriptor,0);
          if (lVar5 != 0) {
            return lVar5;
          }
          if ((lVar4 != 0) && (lVar4 = FUN_18051fa40(lVar4), lVar4 != 0)) {
            return lVar4;
          }
        }
      }
      uVar6 = uVar6 - 1;
      lVar2 = lVar2 + -1;
      bVar7 = lVar2 < 0;
    }
  }
  else {
LAB_1812caf7e:
    lVar2 = 0;
    lVar4 = __RTDynamicCast(lVar3,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::ResizableWindow::RTTI_Type_Descriptor,0);
    if (lVar4 != 0) {
      if (*(longlong *)(lVar4 + 0xd0) != 0) {
        lVar2 = *(longlong *)(*(longlong *)(lVar4 + 0xd0) + 0x10);
      }
      if (lVar2 != 0) {
        lVar3 = lVar2;
      }
    }
    lVar2 = __RTDynamicCast(lVar3,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::ApplicationCommandTarget::RTTI_Type_Descriptor,0);
    if (lVar2 != 0) {
      return lVar2;
    }
    if ((lVar3 != 0) && (lVar3 = FUN_18051fa40(lVar3), lVar3 != 0)) {
      return lVar3;
    }
  }
LAB_1812cb0f9:
  lVar3 = 0;
  lVar2 = __RTDynamicCast(DAT_1826736f8,0,&juce::JUCEApplicationBase::RTTI_Type_Descriptor,
                          &juce::JUCEApplication::RTTI_Type_Descriptor,0);
  if (lVar2 != 0) {
    lVar3 = lVar2 + 0x18;
  }
  return lVar3;
}



############ FUN_ 1812cbd10 size=169 ############

undefined8 FUN_1812cbd10(uint param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0;
  if (DAT_182673b08 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x38);
    *puVar1 = juce::Timer::vftable;
    puVar1[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar1 + 2) = 0;
    FUN_1812a7230(puVar1 + 3);
    *puVar1 = juce::TopLevelWindowManager::vftable;
    puVar1[3] = juce::TopLevelWindowManager::vftable;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    DAT_182673b08 = puVar1;
  }
  if (param_1 < *(uint *)((longlong)DAT_182673b08 + 0x2c)) {
    uVar2 = *(undefined8 *)(DAT_182673b08[4] + (longlong)(int)param_1 * 8);
  }
  return uVar2;
}



############ FUN_ 1812cbdc0 size=160 ############

undefined4 FUN_1812cbdc0(void)

{
  undefined8 *puVar1;
  
  if (DAT_182673b08 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x38);
    *puVar1 = juce::Timer::vftable;
    puVar1[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar1 + 2) = 0;
    FUN_1812a7230(puVar1 + 3);
    *puVar1 = juce::TopLevelWindowManager::vftable;
    puVar1[3] = juce::TopLevelWindowManager::vftable;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    DAT_182673b08 = puVar1;
    return *(undefined4 *)((longlong)puVar1 + 0x2c);
  }
  return *(undefined4 *)((longlong)DAT_182673b08 + 0x2c);
}



############ FUN_ 1812cc480 size=210 ############

void FUN_1812cc480(longlong param_1)

{
  bool bVar1;
  longlong lVar2;
  undefined8 *puVar3;
  
  bVar1 = false;
  lVar2 = DAT_182673708;
  if (DAT_182673b08 == (undefined8 *)0x0) {
    puVar3 = (undefined8 *)FUN_1811316e0(0x38);
    *puVar3 = juce::Timer::vftable;
    puVar3[1] = 0xffffffffffffffff;
    *(undefined4 *)(puVar3 + 2) = 0;
    FUN_1812a7230(puVar3 + 3);
    *puVar3 = juce::TopLevelWindowManager::vftable;
    puVar3[3] = juce::TopLevelWindowManager::vftable;
    puVar3[4] = 0;
    puVar3[5] = 0;
    puVar3[6] = 0;
    lVar2 = DAT_182673708;
    DAT_182673b08 = puVar3;
  }
  for (; lVar2 != param_1; lVar2 = *(longlong *)(lVar2 + 0x18)) {
    if (lVar2 == 0) goto LAB_1812cc527;
  }
  bVar1 = true;
LAB_1812cc527:
  if (!bVar1) {
    FUN_1812a77d0(DAT_182673b08,10);
    return;
  }
  FUN_18050c870();
  return;
}



############ FUN_ 1812cc890 size=1190 ############

void FUN_1812cc890(longlong param_1)

{
  uint uVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  int iVar5;
  longlong lVar6;
  bool bVar7;
  bool bVar8;
  longlong lVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  undefined8 uVar13;
  longlong lVar14;
  longlong lVar15;
  undefined1 **ppuVar16;
  float *pfVar17;
  undefined8 uVar18;
  byte bVar19;
  uint *puVar20;
  char *pcVar21;
  longlong lVar22;
  float fVar23;
  char *local_res18;
  undefined1 *local_res20;
  float local_b0;
  float local_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 local_a0;
  undefined4 uStack_9c;
  longlong local_98;
  undefined8 local_90;
  double local_88;
  double local_80;
  double local_78;
  double local_70;
  undefined8 local_68;
  undefined1 local_60 [40];
  
  local_68 = 0xfffffffffffffffe;
  lVar15 = 0;
  iVar12 = 0;
  if (DAT_182673700 == 0) {
    uVar13 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar13);
  }
  lVar9 = DAT_182673700;
  lVar6 = **(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18);
  uVar10 = DAT_1826737fc;
  if ((DAT_1826737fc == 0) &&
     ((uVar10 = timeGetTime(), DAT_1826737fc <= uVar10 || (uVar10 < DAT_1826737fc - 1000)))) {
    LOCK();
    UNLOCK();
    DAT_1826737fc = uVar10;
  }
  lVar22 = lVar15;
  if (*(int *)(lVar6 + 0x14) != 1) {
    if (*(longlong *)(lVar6 + 0x48) != 0) {
      lVar22 = *(longlong *)(*(longlong *)(lVar6 + 0x48) + 0x10);
    }
    if (lVar22 != 0) {
      if (*(longlong *)(param_1 + -0x98) != 0) {
        if ((*(byte *)(lVar22 + 0xa8) & 1) == 0) {
          lVar14 = lVar15;
          if (*(longlong *)(lVar22 + 0x18) != 0) {
            lVar14 = FUN_18134c2e0();
          }
        }
        else {
          lVar14 = FUN_1812d2bd0(lVar22);
        }
        if ((*(byte *)(param_1 + -8) & 1) == 0) {
          if (*(longlong *)(param_1 + -0x98) != 0) {
            lVar15 = FUN_18134c2e0();
          }
        }
        else {
          lVar15 = FUN_1812d2bd0(param_1 + -0xb0);
        }
        if (lVar14 != lVar15) {
          return;
        }
      }
      ppuVar16 = (undefined1 **)
                 (**(code **)(*(longlong *)(param_1 + -0xb0) + 0x158))
                           ((longlong *)(param_1 + -0xb0),&local_98,lVar22);
      bVar8 = true;
      bVar7 = false;
      goto LAB_1812cc958;
    }
  }
  local_res20 = &DAT_1821dbf98;
  ppuVar16 = &local_res20;
  bVar8 = false;
  bVar7 = true;
LAB_1812cc958:
  pcVar21 = *ppuVar16;
  *ppuVar16 = &DAT_1821dbf98;
  local_res18 = pcVar21;
  if ((bVar7) && (puVar20 = (uint *)(local_res20 + -0x10), (*puVar20 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  if ((bVar8) && (puVar20 = (uint *)(local_98 + -0x10), (*puVar20 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  iVar11 = iVar12;
  if (pcVar21 != *(char **)(param_1 + 0x30)) {
    iVar11 = FUN_18048cbc0(pcVar21,*(undefined8 *)(param_1 + 0x30));
  }
  if ((iVar11 != 0) || (bVar7 = false, lVar22 != *(longlong *)(param_1 + 0x20))) {
    bVar7 = true;
  }
  *(longlong *)(param_1 + 0x20) = lVar22;
  if ((*(uint *)(pcVar21 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pcVar21 + -0x10) = *(int *)(pcVar21 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar15 = *(longlong *)(param_1 + 0x30);
  *(longlong *)(param_1 + 0x30) = (longlong)local_res18;
  UNLOCK();
  puVar20 = (uint *)(lVar15 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  iVar11 = *(int *)(lVar9 + 0x88);
  iVar5 = *(int *)(lVar9 + 0x8c);
  if ((*(int *)(param_1 + 0x3c) < iVar11) || (*(int *)(param_1 + 0x40) < iVar5)) {
    bVar8 = true;
  }
  else {
    bVar8 = false;
  }
  *(int *)(param_1 + 0x3c) = iVar11;
  *(int *)(param_1 + 0x40) = iVar5;
  pfVar17 = (float *)FUN_1804e5a90(lVar6,local_60);
  fVar2 = *pfVar17;
  fVar3 = pfVar17[1];
  uVar13 = *(undefined8 *)pfVar17;
  if (DAT_182673700 == 0) {
    uVar18 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar18);
  }
  fVar4 = *(float *)(DAT_182673700 + 0xc0);
  if (fVar4 == DAT_1824c3ea4) {
    local_90 = uVar13;
    pfVar17 = (float *)&local_90;
  }
  else {
    local_b0 = fVar2 / fVar4;
    local_ac = fVar3 / fVar4;
    pfVar17 = &local_b0;
  }
  fVar2 = *pfVar17;
  fVar3 = pfVar17[1];
  fVar23 = _hypotf(fVar2 - *(float *)(param_1 + 0x18),fVar3 - *(float *)(param_1 + 0x1c));
  pcVar21 = local_res18;
  fVar4 = DAT_1824c4408;
  *(float *)(param_1 + 0x18) = fVar2;
  *(float *)(param_1 + 0x1c) = fVar3;
  if (((bVar7) || (bVar8)) || (fVar4 < fVar23)) {
    *(uint *)(param_1 + 0x44) = uVar10;
  }
  bVar19 = *(byte *)(param_1 + -8) >> 1 & 1;
  if ((bVar19 == 0) && (*(int *)(param_1 + 0x48) + 500U <= uVar10)) {
    if (*local_res18 != '\0') {
      if (local_res18 != *(char **)(param_1 + 0x28)) {
        iVar12 = FUN_18048cbc0(local_res18,*(undefined8 *)(param_1 + 0x28));
      }
      if ((iVar12 != 0) && ((uint)(*(int *)(param_1 + 0x44) + *(int *)(param_1 + 0x38)) < uVar10)) {
        local_80 = (double)fVar3 + DAT_1824c4520;
        local_88 = (double)fVar2 + DAT_1824c4520;
        local_a8 = local_88._0_4_;
        uStack_a4 = local_80._0_4_;
        FUN_1812cce90(param_1 + -0xb0,CONCAT44(local_80._0_4_,local_88._0_4_),&local_res18);
        pcVar21 = local_res18;
      }
    }
  }
  else if ((lVar22 == 0) || ((bVar8 || (*local_res18 == '\0')))) {
    if (bVar19 != 0) {
      *(uint *)(param_1 + 0x48) = uVar10;
      FUN_1812ccd50(param_1 + -0xb0);
      pcVar21 = local_res18;
    }
  }
  else if (bVar7) {
    local_70 = (double)fVar3 + DAT_1824c4520;
    local_78 = (double)fVar2 + DAT_1824c4520;
    local_a0 = local_78._0_4_;
    uStack_9c = local_70._0_4_;
    FUN_1812cce90(param_1 + -0xb0,CONCAT44(local_70._0_4_,local_78._0_4_),&local_res18);
    pcVar21 = local_res18;
  }
  puVar20 = (uint *)(pcVar21 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  return;
}



############ FUN_ 1812cce90 size=461 ############

void FUN_1812cce90(longlong *param_1,undefined8 param_2,longlong *param_3,undefined8 param_4)

{
  char *pcVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined8 uVar7;
  undefined8 local_res8;
  undefined1 local_res20 [8];
  undefined8 local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  char *local_58;
  undefined1 local_50;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  pcVar1 = (char *)((longlong)param_1 + 0xfc);
  if (*pcVar1 == '\0') {
    local_50 = 0;
    *pcVar1 = '\x01';
    local_58 = pcVar1;
    if (param_1[0x1b] == *param_3) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_18048cbc0(param_1[0x1b],*param_3,param_3,param_4,0xfffffffffffffffe);
    }
    if (iVar4 != 0) {
      FUN_181249460(param_1 + 0x1b,param_3);
      uStack_5c = *(undefined4 *)((longlong)param_1 + 0x2c);
      uStack_60 = (undefined4)param_1[5];
      local_68 = 0;
      FUN_181342870(param_1,&local_68,1);
    }
    lVar6 = param_1[3];
    if (lVar6 == 0) {
      if (DAT_182673700 == 0) {
        local_res8 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_res8);
      }
      lVar6 = FUN_18133d700(*(undefined8 *)(DAT_182673700 + 0x78),param_2,0);
      local_48 = *(undefined4 *)(lVar6 + 0x14);
      uStack_44 = *(undefined4 *)(lVar6 + 0x18);
      uStack_40 = *(undefined4 *)(lVar6 + 0x1c);
      uStack_3c = *(undefined4 *)(lVar6 + 0x20);
      FUN_1812cd070(param_1,param_3,param_2,&local_48);
      (**(code **)(*param_1 + 0x68))(param_1,0x506,0);
    }
    else {
      uStack_5c = *(undefined4 *)(lVar6 + 0x2c);
      uStack_60 = *(undefined4 *)(lVar6 + 0x28);
      local_68 = 0;
      local_48 = 0;
      uStack_44 = 0;
      lVar2 = lVar6;
      for (lVar3 = *(longlong *)(lVar6 + 0x18); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
        lVar2 = lVar3;
      }
      uStack_40 = uStack_60;
      uStack_3c = uStack_5c;
      puVar5 = (undefined8 *)FUN_18051e060(local_res20,lVar2,param_2);
      uVar7 = *puVar5;
      if (lVar2 != lVar6) {
        if (*(longlong *)(lVar6 + 0x18) != lVar2) {
          puVar5 = (undefined8 *)FUN_180520050(&local_68,lVar2,*(longlong *)(lVar6 + 0x18),uVar7);
          uVar7 = *puVar5;
        }
        FUN_18051e060(&local_res8,lVar6,uVar7);
        uVar7 = local_res8;
      }
      FUN_1812cd070(param_1,param_3,uVar7,&local_48);
    }
    FUN_181344f60(param_1,0);
    *pcVar1 = '\0';
  }
  return;
}



############ FUN_ 181315540 size=399 ############

void FUN_181315540(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  longlong lVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  byte *pbVar7;
  longlong lVar8;
  undefined8 *local_res8;
  undefined4 local_res18 [2];
  undefined1 *local_40;
  undefined4 local_38;
  undefined4 local_34;
  undefined8 local_30;
  void *local_28;
  undefined8 local_20;
  
  local_40 = &DAT_1821dbf98;
  local_38 = 0;
  local_30 = 1;
  lVar8 = 0;
  local_28 = (void *)0x0;
  local_20 = 0;
  local_34 = 0x24;
  puVar5 = (undefined8 *)FUN_1811316e0(0x40,param_2,param_3,param_4,0xfffffffffffffffe);
  *(undefined4 *)(puVar5 + 1) = 0;
  *puVar5 = juce::Font::SharedFontInternal::vftable;
  puVar5[2] = 0;
  plVar6 = (longlong *)FUN_181252610();
  lVar4 = *plVar6;
  puVar5[3] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar5 + 4,&DAT_1824983b4);
  *(undefined4 *)(puVar5 + 5) = 0x41500000;
  *(undefined8 *)((longlong)puVar5 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar5 + 0x34) = 0;
  *(undefined1 *)(puVar5 + 7) = 0;
  LOCK();
  *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
  UNLOCK();
  local_res18[0] = (undefined4)param_3;
  local_res8 = puVar5;
  FUN_181232d30(&local_40,param_2);
  pbVar7 = (byte *)*param_2;
LAB_181315621:
  do {
    bVar3 = *pbVar7;
    pbVar7 = pbVar7 + 1;
    if ((char)bVar3 < '\0') {
      if ((*pbVar7 & 0xc0) == 0x80) {
        do {
          pbVar7 = pbVar7 + 1;
        } while ((*pbVar7 & 0xc0) == 0x80);
        lVar8 = lVar8 + 1;
        goto LAB_181315621;
      }
    }
    else if (bVar3 == 0) {
      FUN_1812554b0(&local_28,lVar8,&local_res8,local_res18);
      if (local_res8 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_res8 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      *param_1 = 0;
      param_1[1] = 0;
      param_1[2] = 0;
      *(undefined4 *)(param_1 + 3) = 9;
      FUN_18124e270(param_1,&local_40,DAT_1824c4568);
      FUN_1804aed10(&local_28);
                    /* WARNING: Subroutine does not return */
      free(local_28);
    }
    lVar8 = lVar8 + 1;
  } while( true );
}



############ FUN_ 1812cd5f0 size=1434 ############

void FUN_1812cd5f0(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  byte bVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  uint *_Memory;
  undefined1 **ppuVar8;
  undefined1 **ppuVar9;
  undefined1 **ppuVar10;
  int iVar11;
  uint uVar12;
  ulonglong uVar13;
  bool bVar14;
  char local_res10;
  undefined7 uStackX_11;
  undefined8 local_res18;
  undefined1 *local_res20;
  undefined1 **local_108;
  undefined8 local_100;
  int local_f8;
  int iStack_f4;
  int iStack_f0;
  int iStack_ec;
  void *local_d8 [2];
  longlong local_c8;
  longlong lStack_c0;
  undefined1 local_b8 [8];
  int local_b0;
  int local_ac;
  undefined8 local_98;
  int local_88;
  int iStack_84;
  int iStack_80;
  int iStack_7c;
  int local_78;
  int iStack_74;
  int iStack_70;
  int iStack_6c;
  
  local_98 = 0xfffffffffffffffe;
  plVar7 = (longlong *)0x0;
  local_108 = (undefined1 **)0x0;
  local_100 = 0;
  local_res18 = *param_2;
  FUN_18122d110(&local_108,local_res18,&DAT_1821dad44,&DAT_1821d8e9a);
  FUN_18122d5d0(&local_108);
  ppuVar10 = local_108 + (int)local_100._4_4_;
  ppuVar9 = local_108;
  uVar12 = local_100._4_4_;
  if (local_108 != ppuVar10) {
    do {
      puVar6 = (undefined8 *)FUN_181248e40(ppuVar9,&local_res10);
      local_res20 = *ppuVar9;
      *ppuVar9 = (undefined1 *)*puVar6;
      *puVar6 = local_res20;
      _Memory = (uint *)(CONCAT71(uStackX_11,local_res10) + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar12 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      ppuVar9 = ppuVar9 + 1;
    } while (ppuVar9 != ppuVar10);
    uVar12 = local_100._4_4_;
  }
  ppuVar9 = local_108;
  ppuVar10 = &DAT_18267af68;
  uVar13 = (ulonglong)_tls_index;
  ppuVar8 = local_108;
  if (uVar12 == 0) {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar13 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    ppuVar8 = &DAT_18267af68;
  }
  local_res10 = FUN_18124a650(ppuVar8,&DAT_1821e339c);
  bVar14 = local_res10 != '\0';
  if (uVar12 == bVar14 + 4) {
    if (bVar14 + 3 < uVar12) {
      ppuVar8 = ppuVar9 + (int)(bVar14 + 3);
    }
    else {
      if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar13 * 8) + 0xc) <
           DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
        DAT_18267af68 = &DAT_1821dbf98;
        atexit(FUN_181a4a7b0);
        _Init_thread_footer(&DAT_18267af70);
      }
      ppuVar8 = &DAT_18267af68;
    }
    iVar3 = atoi(*ppuVar8);
    local_res18 = CONCAT44(local_res18._4_4_,iVar3);
    if (bVar14 + 2 < uVar12) {
      ppuVar8 = ppuVar9 + (int)(bVar14 + 2);
    }
    else {
      if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar13 * 8) + 0xc) <
           DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
        DAT_18267af68 = &DAT_1821dbf98;
        atexit(FUN_181a4a7b0);
        _Init_thread_footer(&DAT_18267af70);
      }
      ppuVar8 = &DAT_18267af68;
    }
    iVar3 = atoi(*ppuVar8);
    if (bVar14 + 1 < uVar12) {
      ppuVar10 = ppuVar9 + (int)(bVar14 + 1);
    }
    else if ((*(int *)(*(longlong *)
                        ((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc) <
              DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    iVar4 = atoi(*ppuVar10);
    if (bVar14 < uVar12) {
      ppuVar9 = ppuVar9 + (int)(uint)bVar14;
    }
    else {
      if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) +
                   0xc) < DAT_18267af70) &&
         (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
        DAT_18267af68 = &DAT_1821dbf98;
        atexit(FUN_181a4a7b0);
        _Init_thread_footer(&DAT_18267af70);
      }
      ppuVar9 = &DAT_18267af68;
    }
    iVar5 = atoi(*ppuVar9);
    iVar11 = (int)local_res18;
    if ((0 < iVar3) && (0 < (int)local_res18)) {
      bVar2 = *(byte *)(param_1 + 0xa8) & 1;
      if (bVar2 != 0) {
        if (bVar2 == 0) {
          if (*(longlong *)(param_1 + 0x18) != 0) {
            plVar7 = (longlong *)FUN_18134c2e0();
          }
        }
        else {
          plVar7 = (longlong *)FUN_1812d2bd0(param_1);
        }
      }
      if (plVar7 != (longlong *)0x0) {
        if ((undefined **)*plVar7 == juce::HWNDComponentPeer::vftable) {
          local_c8 = plVar7[0x17];
          lStack_c0 = plVar7[0x18];
          plVar7 = &local_c8;
        }
        else {
          plVar7 = (longlong *)(*(code *)((undefined **)*plVar7)[0x13])(plVar7,&local_c8);
        }
        iVar11 = (int)plVar7[1] + iVar11 + (int)*plVar7;
        iVar3 = *(int *)((longlong)plVar7 + 0xc) + iVar3 + *(int *)((longlong)plVar7 + 4);
        iVar4 = iVar4 - (int)*plVar7;
        iVar5 = iVar5 - *(int *)((longlong)plVar7 + 4);
        local_f8 = iVar5;
        iStack_f4 = iVar4;
        iStack_f0 = iVar3;
        iStack_ec = iVar11;
      }
      if (DAT_182673700 == 0) {
        local_res18 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_res18);
      }
      lVar1 = DAT_182673700;
      FUN_18133d310(*(undefined8 *)(DAT_182673700 + 0x78),local_d8);
      local_88 = iVar5;
      iStack_84 = iVar4;
      iStack_80 = iVar3;
      iStack_7c = iVar11;
      FUN_1804aa740(local_d8,&local_88);
      FUN_1804aa5a0(local_d8,local_b8);
      if (local_ac * local_b0 < 0x400) {
        local_78 = iVar5;
        iStack_74 = iVar4;
        iStack_70 = iVar3;
        iStack_6c = iVar11;
        FUN_18133d8f0(*(undefined8 *)(lVar1 + 0x78),&local_78,0);
      }
                    /* WARNING: Subroutine does not return */
      free(local_d8[0]);
    }
  }
  FUN_180488c50(&local_108);
                    /* WARNING: Subroutine does not return */
  free(local_108);
}



############ FUN_ 1812cf4b0 size=264 ############

undefined8 * FUN_1812cf4b0(longlong param_1,undefined8 *param_2)

{
  bool bVar1;
  char cVar2;
  byte bVar3;
  undefined4 uVar4;
  longlong *plVar5;
  undefined8 uVar6;
  
  if (*(char *)(param_1 + 0xb1) == '\0') {
LAB_1812cf4eb:
    bVar1 = false;
  }
  else {
    if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
      cVar2 = FUN_181345240();
      if (cVar2 != '\0') goto LAB_1812cf4eb;
    }
    bVar1 = true;
  }
  if (bVar1) goto LAB_1812cf5a1;
  bVar3 = *(byte *)(param_1 + 0xa8) & 1;
  if (bVar3 == 0) {
LAB_1812cf52f:
    if (DAT_182673700 == 0) {
      uVar6 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar6);
    }
    cVar2 = *(longlong *)(DAT_182673700 + 0xa0) == param_1;
  }
  else {
    if (bVar3 == 0) {
      if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812cf52f;
      plVar5 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar5 = (longlong *)FUN_1812d2bd0(param_1);
    }
    if (plVar5 == (longlong *)0x0) goto LAB_1812cf52f;
    cVar2 = (**(code **)(*plVar5 + 0x80))(plVar5);
  }
  if (cVar2 != '\0') {
LAB_1812cf5a1:
    *param_2 = 0;
    param_2[1] = 0;
    return param_2;
  }
  if (*(longlong *)(param_1 + 200) != 0) {
    cVar2 = FUN_1812ce680(param_1);
    uVar4 = 4;
    if (cVar2 == '\0') goto LAB_1812cf588;
  }
  uVar4 = 1;
LAB_1812cf588:
  *(undefined4 *)param_2 = uVar4;
  *(undefined4 *)((longlong)param_2 + 4) = uVar4;
  *(undefined4 *)(param_2 + 1) = uVar4;
  *(undefined4 *)((longlong)param_2 + 0xc) = uVar4;
  return param_2;
}



############ FUN_ 1812cfde0 size=822 ############

void FUN_1812cfde0(longlong *param_1)

{
  undefined8 *puVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  int iVar9;
  longlong *plVar10;
  ulonglong uVar11;
  longlong *plVar12;
  longlong *plVar13;
  ulonglong uVar14;
  longlong *plVar15;
  
  plVar12 = param_1 + 0x2a;
  uVar11 = 0;
  uVar14 = (ulonglong)((longlong)(param_1 + 0x2d) + (7 - (longlong)plVar12)) >> 3;
  if (param_1 + 0x2d < plVar12) {
    uVar14 = uVar11;
  }
  plVar13 = plVar12;
  if (uVar14 != 0) {
    do {
      puVar1 = (undefined8 *)*plVar13;
      *plVar13 = 0;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      plVar13 = plVar13 + 1;
      uVar11 = uVar11 + 1;
    } while (uVar11 != uVar14);
  }
  if ((*(char *)((longlong)param_1 + 0xb1) == '\0') ||
     (((*(byte *)(param_1 + 0x15) & 1) == 0 && (cVar3 = FUN_181345240(param_1), cVar3 != '\0')))) {
    bVar2 = false;
  }
  else {
    bVar2 = true;
  }
  if (!bVar2) {
    lVar6 = FUN_18134adf0(param_1);
    if ((*(byte *)(param_1 + 0x29) & 1) != 0) {
      lVar7 = (**(code **)(*(longlong *)(lVar6 + 0x68) + 0x10))((longlong *)(lVar6 + 0x68),1);
      puVar1 = (undefined8 *)*plVar12;
      *plVar12 = lVar7;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
    }
    if ((*(byte *)(param_1 + 0x29) & 2) != 0) {
      lVar7 = (**(code **)(*(longlong *)(lVar6 + 0x68) + 0x10))((longlong *)(lVar6 + 0x68),2);
      puVar1 = (undefined8 *)param_1[0x2b];
      param_1[0x2b] = lVar7;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
    }
    if ((*(byte *)(param_1 + 0x29) & 4) != 0) {
      lVar6 = (**(code **)(*(longlong *)(lVar6 + 0x68) + 0x10))((longlong *)(lVar6 + 0x68),4);
      puVar1 = (undefined8 *)param_1[0x2c];
      param_1[0x2c] = lVar6;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
    }
    for (; plVar12 != param_1 + 0x2d; plVar12 = plVar12 + 1) {
      if (*plVar12 != 0) {
        if (param_1[0x30] == 0) {
          puVar8 = (undefined8 *)FUN_1811316e0(0x10);
          *puVar8 = juce::DocumentWindow::ButtonListenerProxy::vftable;
          puVar8[1] = param_1;
          puVar1 = (undefined8 *)param_1[0x30];
          param_1[0x30] = (longlong)puVar8;
          if (puVar1 != (undefined8 *)0x0) {
            (**(code **)*puVar1)(puVar1,1);
          }
        }
        lVar6 = param_1[0x30];
        if (lVar6 != 0) {
          lVar7 = *plVar12;
          plVar15 = (longlong *)(lVar7 + 0x160);
          plVar10 = (longlong *)*plVar15;
          iVar9 = *(int *)(lVar7 + 0x16c);
          plVar13 = plVar10 + iVar9;
          for (; plVar10 != plVar13; plVar10 = plVar10 + 1) {
            if (lVar6 == *plVar10) goto LAB_1812cfff5;
          }
          iVar4 = iVar9 + 1;
          if (*(int *)(lVar7 + 0x168) < iVar4) {
            if (iVar4 < 0) {
              iVar4 = iVar9 + 2;
            }
            FUN_18047cb30(plVar15,iVar9 + 9 + (iVar4 >> 1) & 0xfffffff8);
          }
          iVar9 = *(int *)(lVar7 + 0x16c);
          *(int *)(lVar7 + 0x16c) = iVar9 + 1;
          *(longlong *)(*plVar15 + (longlong)iVar9 * 8) = lVar6;
        }
LAB_1812cfff5:
        *(byte *)(*plVar12 + 0xa8) = *(byte *)(*plVar12 + 0xa8) & 0xdf;
        plVar13 = (longlong *)*plVar12;
        if (plVar13 != (longlong *)0x0) {
          (**(code **)(*plVar13 + 0x58))(plVar13,1);
          FUN_181343cc0(param_1,plVar13,0xffffffff);
        }
      }
    }
    plVar12 = (longlong *)param_1[0x2c];
    if (plVar12 != (longlong *)0x0) {
      iVar9 = *(int *)((longlong)plVar12 + 0x14c) + 1;
      if ((int)plVar12[0x29] < iVar9) {
        FUN_18051ce20(plVar12 + 0x28,
                      *(int *)((longlong)plVar12 + 0x14c) + 9 + iVar9 / 2 & 0xfffffff8);
      }
      iVar9 = *(int *)((longlong)plVar12 + 0x14c);
      *(int *)((longlong)plVar12 + 0x14c) = iVar9 + 1;
      lVar6 = plVar12[0x28];
      *(undefined8 *)(lVar6 + (longlong)iVar9 * 0xc) = 0x400010073;
      *(undefined4 *)(lVar6 + 8 + (longlong)iVar9 * 0xc) = 0;
      (**(code **)(*plVar12 + 0x88))(plVar12);
    }
  }
  (**(code **)(*param_1 + 0x158))(param_1);
  (**(code **)(*param_1 + 0x108))(param_1);
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    uVar5 = (**(code **)(*param_1 + 0x160))(param_1);
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar5,0);
    if (((*(byte *)(param_1 + 0x15) & 1) != 0) && (lVar6 = FUN_1812d2bd0(param_1), lVar6 != 0)) {
      *(longlong *)(lVar6 + 0x28) = param_1[0x27];
    }
  }
  return;
}



############ FUN_ 1812d19b0 size=306 ############

void FUN_1812d19b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong lVar7;
  bool bVar8;
  undefined8 *local_res10;
  undefined8 local_res18;
  
  lVar7 = 0;
  lVar5 = DAT_182673708;
  do {
    if (lVar5 == *(longlong *)(param_1 + 8)) {
      bVar8 = true;
LAB_1812d1a04:
      if (bVar8) {
        puVar4 = (undefined8 *)
                 FUN_1804de690(&local_res10,DAT_182673708,param_3,param_4,0xfffffffffffffffe);
        local_res18 = *(undefined8 *)(param_1 + 0x40);
        *(undefined8 *)(param_1 + 0x40) = *puVar4;
        *puVar4 = local_res18;
        if (local_res10 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_res10 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*local_res10)(local_res10,1);
          }
        }
        lVar5 = lVar7;
        if (*(longlong *)(param_1 + 0x40) != 0) {
          lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x40) + 0x10);
        }
        if (lVar5 != 0) {
          DAT_182673708 = 0;
          if (DAT_182673700 == 0) {
            uVar6 = FUN_1811316e0(0x130);
            DAT_182673700 = FUN_18133c6c0(uVar6);
          }
          lVar5 = DAT_182673700;
          piVar1 = (int *)(*(longlong *)(DAT_182673700 + 0x28) + 0x18);
          LOCK();
          bVar8 = *piVar1 == 0;
          if (bVar8) {
            *piVar1 = 1;
          }
          UNLOCK();
          if ((bVar8) && (cVar3 = FUN_1812a6720(*(undefined8 *)(lVar5 + 0x28)), cVar3 == '\0')) {
            LOCK();
            *(undefined4 *)(*(longlong *)(lVar5 + 0x28) + 0x18) = 0;
            UNLOCK();
          }
          if (*(longlong *)(param_1 + 0x40) != 0) {
            lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x40) + 0x10);
          }
          FUN_18133f2f0(lVar7,0);
        }
      }
      return;
    }
    if (lVar5 == 0) {
      bVar8 = false;
      goto LAB_1812d1a04;
    }
    lVar5 = *(longlong *)(lVar5 + 0x18);
  } while( true );
}



############ FUN_ 1812d1af0 size=528 ############

void FUN_1812d1af0(longlong param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  bool bVar8;
  undefined8 *local_res10;
  
  plVar7 = (longlong *)0x0;
  plVar4 = plVar7;
  if (*(longlong *)(param_1 + 0x40) != 0) {
    plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x40) + 0x10);
  }
  if (plVar4 != (longlong *)0x0) {
    do {
      plVar4 = (longlong *)plVar4[3];
      if (plVar4 == *(longlong **)(param_1 + 8)) {
        plVar4 = plVar7;
        if (*(longlong *)(param_1 + 0x40) != 0) {
          plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x40) + 0x10);
        }
        cVar3 = FUN_181345240(plVar4);
        if (cVar3 != '\0') {
          lVar5 = *(longlong *)(param_1 + 0x40);
          plVar4 = plVar7;
          if (lVar5 != 0) {
            plVar4 = *(longlong **)(lVar5 + 0x10);
          }
          if (((*(byte *)(plVar4 + 0x15) & 0x20) != 0) &&
             ((*(byte *)((longlong)plVar4 + 0xa9) & 0x10) == 0)) {
            DAT_182673708 = plVar7;
            if (lVar5 != 0) {
              DAT_182673708 = *(longlong **)(lVar5 + 0x10);
            }
            lVar5 = FUN_18134b820();
            piVar1 = (int *)(*(longlong *)(lVar5 + 0x28) + 0x18);
            LOCK();
            bVar8 = *piVar1 == 0;
            if (bVar8) {
              *piVar1 = 1;
            }
            UNLOCK();
            if ((bVar8) && (cVar3 = FUN_1812a6720(*(undefined8 *)(lVar5 + 0x28)), cVar3 == '\0')) {
              LOCK();
              *(undefined4 *)(*(longlong *)(lVar5 + 0x28) + 0x18) = 0;
              UNLOCK();
            }
            plVar4 = plVar7;
            if (*(longlong *)(param_1 + 0x40) != 0) {
              plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x40) + 0x10);
            }
            FUN_1804de690(&local_res10,plVar4);
            (**(code **)(*plVar4 + 0xf0))(plVar4,2);
            puVar6 = local_res10;
            if (local_res10 != (undefined8 *)0x0) {
              plVar7 = (longlong *)local_res10[2];
            }
            if (plVar7 != (longlong *)0x0) {
              FUN_18133f200(plVar4,2,&local_res10);
            }
            if (puVar6 == (undefined8 *)0x0) {
              return;
            }
            LOCK();
            piVar1 = (int *)(puVar6 + 1);
            iVar2 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar2 != 1) {
              return;
            }
                    /* WARNING: Could not recover jumptable at 0x0001812d1c95. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            (**(code **)*local_res10)(local_res10,1);
            return;
          }
        }
        break;
      }
    } while (plVar4 != (longlong *)0x0);
  }
  cVar3 = FUN_181343030(*(undefined8 *)(param_1 + 8));
  if (cVar3 != '\0') {
    if (DAT_182673c20 == (undefined8 *)0x0) {
      puVar6 = (undefined8 *)FUN_1811316e0(0x28);
      FUN_1812a59f0(puVar6);
      FUN_1812a7230(puVar6 + 2);
      *puVar6 = juce::ModalComponentManager::vftable;
      puVar6[2] = juce::ModalComponentManager::vftable;
      puVar6[3] = 0;
      puVar6[4] = 0;
      DAT_182673c20 = puVar6;
    }
    FUN_18133b010(DAT_182673c20,1);
    return;
  }
  FUN_18133ed60(*(undefined8 *)(param_1 + 8),2,1);
  return;
}



############ FUN_ 1812d2130 size=146 ############

void FUN_1812d2130(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong *plVar3;
  
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  lVar1 = *(longlong *)(**(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18) + 0x48);
  plVar3 = (longlong *)0x0;
  if (lVar1 != 0) {
    plVar3 = *(longlong **)(lVar1 + 0x10);
  }
  if ((plVar3 == (longlong *)0x0) && (plVar3 = DAT_182673708, DAT_182673708 == (longlong *)0x0)) {
    plVar3 = *(longlong **)(param_1 + 8);
  }
  FUN_18133f790();
                    /* WARNING: Could not recover jumptable at 0x0001812d21bb. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar3 + 0xe8))(plVar3,&DAT_182673aec);
  return;
}



############ FUN_ 1812d2860 size=243 ############

void FUN_1812d2860(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined4 uVar4;
  undefined8 local_38;
  undefined8 local_30;
  undefined8 local_28;
  undefined8 *local_20;
  
  local_28 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_30 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_30);
  }
  puVar2 = (undefined8 *)FUN_1804e7170(*(undefined8 *)(DAT_182673700 + 0x30),1);
  if (puVar2 != (undefined8 *)0x0) {
    uVar1 = *puVar2;
    local_38 = 0;
    puVar2 = &local_38;
    lVar3 = FUN_1804e6500(uVar1,param_1,param_3,param_4,puVar2);
    uVar4 = (undefined4)((ulonglong)puVar2 >> 0x20);
    if (lVar3 != 0) {
      local_20 = &local_30;
      local_30 = uVar1;
      puVar2 = (undefined8 *)FUN_1804e5790(&local_38,lVar3,local_38);
      FUN_18133f820(lVar3,&local_30,*puVar2,param_4,CONCAT44(uVar4,param_5));
    }
  }
  return;
}



############ FUN_ 1812d2960 size=158 ############

void FUN_1812d2960(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  puVar2 = (undefined8 *)FUN_1804e7170(*(undefined8 *)(DAT_182673700 + 0x30),param_2,0);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1804e65c0(*puVar2,param_1,param_3,param_4,param_5);
  }
  return;
}



############ FUN_ 1812d2af0 size=81 ############

bool FUN_1812d2af0(longlong param_1)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  return *(longlong *)(DAT_182673700 + 0xa0) == *(longlong *)(param_1 + 8);
}



############ FUN_ 1812d2c40 size=84 ############

undefined8 FUN_1812d2c40(uint param_1)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  if (param_1 < *(uint *)(DAT_182673700 + 0x74)) {
    return *(undefined8 *)(*(longlong *)(DAT_182673700 + 0x68) + (longlong)(int)param_1 * 8);
  }
  return 0;
}



############ FUN_ 1812d2ca0 size=60 ############

undefined4 FUN_1812d2ca0(void)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  return *(undefined4 *)(DAT_182673700 + 0x74);
}



############ FUN_ 1812d2e50 size=212 ############

undefined8 * FUN_1812d2e50(undefined8 *param_1,undefined8 param_2,undefined4 param_3)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  
  *param_1 = juce::ComponentPeer::vftable;
  param_1[1] = param_2;
  *(undefined4 *)(param_1 + 2) = param_3;
  *(undefined8 *)((longlong)param_1 + 0x14) = 0;
  *(undefined8 *)((longlong)param_1 + 0x1c) = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  DAT_18262b5c4 = DAT_18262b5c4 + 2;
  *(int *)(param_1 + 0xb) = DAT_18262b5c4;
  *(undefined1 *)((longlong)param_1 + 0x5c) = 0;
  if (DAT_182673700 == 0) {
    uVar3 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar3);
  }
  lVar2 = DAT_182673700;
  plVar1 = (longlong *)(DAT_182673700 + 0x68);
  iVar4 = *(int *)(DAT_182673700 + 0x74) + 1;
  if (*(int *)(DAT_182673700 + 0x70) < iVar4) {
    FUN_18047cb30(plVar1,*(int *)(DAT_182673700 + 0x74) + 9 + iVar4 / 2 & 0xfffffff8);
  }
  iVar4 = *(int *)(lVar2 + 0x74);
  *(int *)(lVar2 + 0x74) = iVar4 + 1;
  *(undefined8 **)(*plVar1 + (longlong)iVar4 * 8) = param_1;
  return param_1;
}



############ FUN_ 1812d4f90 size=656 ############

void FUN_1812d4f90(longlong param_1,undefined8 param_2,undefined8 *param_3,longlong *param_4)

{
  int *piVar1;
  byte bVar2;
  undefined8 uVar3;
  longlong *plVar4;
  void *pvVar5;
  undefined4 *puVar6;
  longlong lVar7;
  byte *pbVar8;
  int iVar9;
  uint uVar10;
  undefined8 local_res8;
  longlong local_res18;
  undefined8 *local_res20;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  uVar3 = FUN_1811316e0(800);
  plVar4 = (longlong *)FUN_1812e2370(uVar3,param_2,0);
  *(undefined1 *)((longlong)plVar4 + 0x1f2) = 1;
  *(undefined1 *)((longlong)plVar4 + 0x1f9) = 0;
  iVar9 = *(int *)(param_1 + 0x15c) + 1;
  if ((int)*(uint *)(param_1 + 0x158) < iVar9) {
    uVar10 = *(int *)(param_1 + 0x15c) + 9 + iVar9 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 0x158) != uVar10) {
      pvVar5 = *(void **)(param_1 + 0x150);
      if ((int)uVar10 < 1) {
                    /* WARNING: Subroutine does not return */
        free(pvVar5);
      }
      if (pvVar5 == (void *)0x0) {
        pvVar5 = malloc((longlong)(int)uVar10 * 8);
        *(void **)(param_1 + 0x150) = pvVar5;
      }
      else {
        pvVar5 = realloc(pvVar5,(longlong)(int)uVar10 * 8);
        *(void **)(param_1 + 0x150) = pvVar5;
      }
    }
    *(uint *)(param_1 + 0x158) = uVar10;
  }
  iVar9 = *(int *)(param_1 + 0x15c);
  *(int *)(param_1 + 0x15c) = iVar9 + 1;
  *(longlong **)(*(longlong *)(param_1 + 0x150) + (longlong)iVar9 * 8) = plVar4;
  iVar9 = *(int *)(param_1 + 0x1ac) + 1;
  if (*(int *)(param_1 + 0x1a8) < iVar9) {
    FUN_18047cb30((longlong *)(param_1 + 0x1a0),
                  *(int *)(param_1 + 0x1ac) + 9 + iVar9 / 2 & 0xfffffff8);
  }
  iVar9 = *(int *)(param_1 + 0x1ac);
  *(int *)(param_1 + 0x1ac) = iVar9 + 1;
  *(longlong **)(*(longlong *)(param_1 + 0x1a0) + (longlong)iVar9 * 8) = plVar4;
  puVar6 = (undefined4 *)FUN_18134a8d0(param_1,&stack0x00000028,0x1000c00,0,uVar11);
  FUN_18134a800(plVar4,0x1000205,*puVar6);
  lVar7 = FUN_18134adf0(param_1);
  uVar3 = (**(code **)(*(longlong *)(lVar7 + 0x38) + 0x38))((longlong *)(lVar7 + 0x38),&local_res20)
  ;
  FUN_181252990(plVar4 + 0x53,uVar3);
  FUN_1812e0240(plVar4);
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res20 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  (**(code **)(*plVar4 + 0x58))(plVar4,1);
  FUN_181343cc0(param_1,plVar4,0xffffffff);
  FUN_1812e1110(plVar4,param_3,1);
  pbVar8 = (byte *)*param_3;
  iVar9 = 0;
  do {
    while( true ) {
      bVar2 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      if ((char)bVar2 < '\0') break;
      if (bVar2 == 0) {
        *(undefined4 *)(plVar4 + 0x5f) = 0;
        FUN_1812e0940(plVar4,plVar4[0x50]);
        FUN_1812e08d0(plVar4,iVar9);
        local_res8 = CONCAT44(*(undefined4 *)((longlong)plVar4 + 0x2a4),
                              *(undefined4 *)((longlong)plVar4 + 0x2a4));
        plVar4[0x50] = local_res8;
        local_res18 = *param_4;
        if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
          UNLOCK();
        }
        FUN_18122dc00(param_1 + 0x1b0,&local_res18);
        FUN_1812d3dc0(param_1,0);
        return;
      }
LAB_1812d51a7:
      iVar9 = iVar9 + 1;
    }
    if ((*pbVar8 & 0xc0) != 0x80) goto LAB_1812d51a7;
    do {
      pbVar8 = pbVar8 + 1;
    } while ((*pbVar8 & 0xc0) == 0x80);
    iVar9 = iVar9 + 1;
  } while( true );
}



############ FUN_ 1812d5340 size=691 ############

undefined8 * FUN_1812d5340(longlong *param_1)

{
  LPCRITICAL_SECTION p_Var1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined8 *puVar7;
  uint *puVar8;
  char *pcVar9;
  undefined8 *local_res8;
  char *local_res18;
  undefined8 *local_res20;
  char *local_58;
  undefined *local_50;
  undefined8 local_48;
  LPCRITICAL_SECTION local_40;
  LPCRITICAL_SECTION local_38;
  LPCRITICAL_SECTION local_30;
  
  local_48 = 0xfffffffffffffffe;
  (**(code **)(*param_1 + 0x10))(param_1,&local_res18);
  pcVar9 = local_res18;
  if (*local_res18 == '\0') {
LAB_1812d55bb:
    puVar5 = (undefined8 *)0x0;
    local_res18 = pcVar9;
  }
  else {
    uVar3 = *(uint *)((longlong)param_1 + 0x44) & 3;
    if (uVar3 == 0) {
      if ((param_1[1] != 0) && (*(char *)(param_1[1] + 0x124) != '\0')) goto LAB_1812d54e1;
LAB_1812d53a6:
      if ((param_1[1] != 0) && (*(char *)(param_1[1] + 0x124) == '\0')) goto LAB_1812d55bb;
      puVar5 = (undefined8 *)FUN_1811316e0(0x20);
      *puVar5 = 0;
      puVar5[1] = 0;
      puVar5[2] = 0;
      local_res8 = puVar5;
      local_res20 = puVar5 + 3;
      lVar6 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
      local_38 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar6);
      local_58 = "CLOSED";
      FUN_181211b90(puVar5 + 3,lVar6,&local_58);
      LeaveCriticalSection(p_Var1);
    }
    else {
      if (uVar3 != 2) goto LAB_1812d53a6;
LAB_1812d54e1:
      if (((param_1[1] != 0) && (*(char *)(param_1[1] + 0x124) != '\0')) &&
         (cVar2 = FUN_1812d6d70(param_1), cVar2 != '\0')) goto LAB_1812d55bb;
      puVar5 = (undefined8 *)FUN_1811316e0(0x20);
      *puVar5 = 0;
      puVar5[1] = 0;
      puVar5[2] = 0;
      local_res8 = puVar5;
      local_res20 = puVar5 + 3;
      lVar6 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
      local_40 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar6);
      local_res20 = (undefined8 *)&DAT_1821e4a7c;
      FUN_181211b90(puVar5 + 3,lVar6,&local_res20);
      LeaveCriticalSection(p_Var1);
      iVar4 = *(int *)((longlong)param_1 + 0x24) + -1;
      lVar6 = (longlong)iVar4;
      if (-1 < iVar4) {
        do {
          puVar7 = (undefined8 *)FUN_1812d5340(*(undefined8 *)(param_1[3] + lVar6 * 8),1);
          if (puVar7 != (undefined8 *)0x0) {
            *puVar7 = puVar5[1];
            puVar5[1] = puVar7;
          }
          lVar6 = lVar6 + -1;
        } while (-1 < lVar6);
      }
    }
    lVar6 = FUN_18122bf10();
    p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
    local_30 = p_Var1;
    EnterCriticalSection(p_Var1);
    FUN_18122c130(lVar6);
    local_50 = &DAT_1821e322c;
    FUN_181211b90(&local_res8,lVar6,&local_50);
    LeaveCriticalSection(p_Var1);
    FUN_181246b70(puVar5,&local_res8,&local_res18);
    puVar8 = (uint *)(local_res8 + -2);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  puVar8 = (uint *)(local_res18 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return puVar5;
}



############ FUN_ 1812d7a00 size=896 ############

void FUN_1812d7a00(longlong param_1,int *param_2)

{
  undefined8 *puVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  int iVar10;
  int iVar11;
  
  if (DAT_182673700 == 0) {
    uVar8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar8);
  }
  if (*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x10) != 100) {
    FUN_1812a77d0(*(longlong *)(DAT_182673700 + 0x30),100);
  }
  if (*(longlong *)(param_1 + 0x110) == 0) {
    puVar9 = (undefined8 *)FUN_1811316e0(0xc0);
    puVar9[1] = &DAT_1821dbf98;
    puVar9[2] = &DAT_1821dbf98;
    puVar9[3] = 0;
    puVar9[4] = 0;
    puVar9[5] = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    puVar9[0xc] = 0;
    puVar9[0xd] = 0;
    puVar9[0xe] = 0;
    puVar9[0xf] = 0;
    puVar9[0x10] = 0;
    puVar9[0x11] = 0;
    puVar9[0x12] = 0;
    puVar9[0x13] = 0;
    puVar9[0x14] = 0;
    *(undefined4 *)(puVar9 + 0x15) = 0;
    *(undefined1 *)((longlong)puVar9 + 0xac) = 0;
    *puVar9 = juce::TreeView::InsertPointHighlight::vftable;
    puVar9[0x16] = 0;
    *(undefined4 *)(puVar9 + 0x17) = 0;
    FUN_18134bfe0(puVar9,*(undefined4 *)(puVar9 + 4),*(undefined4 *)((longlong)puVar9 + 0x24),100,
                  0xc);
    FUN_18134b0f0(puVar9,1);
    *(byte *)(puVar9 + 0x15) = *(byte *)(puVar9 + 0x15) & 0xef | 8;
    puVar1 = *(undefined8 **)(param_1 + 0x110);
    *(undefined8 **)(param_1 + 0x110) = puVar9;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    puVar9 = (undefined8 *)FUN_1811316e0(0xb0);
    puVar9[1] = &DAT_1821dbf98;
    puVar9[2] = &DAT_1821dbf98;
    puVar9[3] = 0;
    puVar9[4] = 0;
    puVar9[5] = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    puVar9[0xc] = 0;
    puVar9[0xd] = 0;
    puVar9[0xe] = 0;
    puVar9[0xf] = 0;
    puVar9[0x10] = 0;
    puVar9[0x11] = 0;
    puVar9[0x12] = 0;
    puVar9[0x13] = 0;
    puVar9[0x14] = 0;
    *(undefined4 *)(puVar9 + 0x15) = 0;
    *(undefined1 *)((longlong)puVar9 + 0xac) = 0;
    *puVar9 = juce::TreeView::TargetGroupHighlight::vftable;
    FUN_18134b0f0(puVar9,1);
    *(byte *)(puVar9 + 0x15) = *(byte *)(puVar9 + 0x15) & 0xef | 8;
    puVar1 = *(undefined8 **)(param_1 + 0x118);
    *(undefined8 **)(param_1 + 0x118) = puVar9;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    plVar2 = *(longlong **)(param_1 + 0x110);
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 0x58))(plVar2,1);
      FUN_181343cc0(param_1,plVar2,0xffffffff);
    }
    plVar2 = *(longlong **)(param_1 + 0x118);
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 0x58))(plVar2,1);
      FUN_181343cc0(param_1,plVar2,0xffffffff);
    }
  }
  iVar6 = *(int *)(*(longlong *)(param_1 + 0xd0) + 400);
  lVar3 = *(longlong *)(param_1 + 0x110);
  *(undefined8 *)(lVar3 + 0xb0) = *(undefined8 *)(param_2 + 2);
  *(int *)(lVar3 + 0xb8) = param_2[4];
  iVar5 = *(int *)(lVar3 + 0x2c) / 2;
  FUN_18134bfe0(lVar3,*param_2 - iVar5,param_2[1] - iVar5,(iVar5 - *param_2) + iVar6,
                *(int *)(lVar3 + 0x2c));
  uVar8 = *(undefined8 *)(param_1 + 0x118);
  plVar2 = *(longlong **)(param_2 + 2);
  iVar5 = FUN_1812d65b0(plVar2);
  iVar6 = *(int *)((longlong)plVar2 + 0x34);
  lVar3 = plVar2[1];
  if ((lVar3 != 0) && (iVar6 < 0)) {
    iVar6 = *(int *)(*(longlong *)(lVar3 + 0xd0) + 400) - iVar5;
  }
  iVar11 = (int)plVar2[5];
  iVar10 = 0;
  if (0 < iVar6) {
    iVar10 = iVar6;
  }
  if (lVar3 != 0) {
    uVar4 = *(undefined8 *)(*(longlong *)(lVar3 + 0xd0) + 0x188);
    iVar5 = iVar5 - (int)uVar4;
    iVar11 = iVar11 - (int)((ulonglong)uVar4 >> 0x20);
  }
  iVar7 = (**(code **)(*plVar2 + 0x28))(plVar2);
  iVar6 = 0;
  if (0 < iVar7) {
    iVar6 = iVar7;
  }
  FUN_18134bfe0(uVar8,iVar5,iVar11,iVar10,iVar6);
  return;
}



############ FUN_ 1812da910 size=167 ############

void FUN_1812da910(longlong *param_1,int param_2)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (param_2 == -1) {
    uVar1 = FUN_1811316e0(0x208);
    FUN_180509740(uVar1,0xffffffff,DAT_1824c3cb8,1,uVar2);
    return;
  }
  if (param_2 == -2) {
    uVar2 = FUN_1811316e0(0x208);
    FUN_180509740(uVar2,0xfffffffe,DAT_1824c3d8c);
    return;
  }
  if (param_2 == -3) {
    uVar2 = FUN_1811316e0(0x208);
    FUN_180509740(uVar2,0xfffffffd,0);
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812da9b3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x18))();
  return;
}



############ FUN_ 1812d9890 size=1760 ############

void FUN_1812d9890(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  char cVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 uVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  longlong lVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  longlong *plVar17;
  undefined8 *puVar18;
  void *_Src;
  undefined4 uVar19;
  longlong *plVar20;
  ulonglong uVar21;
  ulonglong uVar22;
  ulonglong uVar23;
  uint uVar24;
  ulonglong uVar25;
  int iVar26;
  uint uVar27;
  int iVar28;
  int iVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  
  if (*(longlong *)(param_2 + 0x10) == 0) {
    uVar6 = 0;
  }
  else {
    uVar6 = *(undefined8 *)(*(longlong *)(param_2 + 0x10) + 0x10);
  }
  lVar4 = __RTDynamicCast(uVar6,0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::ToolbarItemComponent::RTTI_Type_Descriptor,0);
  if (lVar4 == 0) {
    return;
  }
  plVar1 = (longlong *)(param_1 + 0x18);
  plVar17 = (longlong *)*plVar1;
  plVar5 = plVar17 + *(int *)(param_1 + 0x24);
  for (; plVar17 != plVar5; plVar17 = plVar17 + 1) {
    if (lVar4 == *plVar17) goto LAB_1812d9a33;
  }
  if (*(int *)(lVar4 + 0x1cc) == 2) {
    for (lVar3 = *(longlong *)(lVar4 + 0x18); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
      plVar5 = (longlong *)
               __RTDynamicCast(lVar3,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::ToolbarItemPalette::RTTI_Type_Descriptor,0);
      if (plVar5 != (longlong *)0x0) {
        plVar17 = (longlong *)plVar5[0x52];
        plVar20 = plVar17;
        goto joined_r0x0001812d998b;
      }
    }
  }
  goto LAB_1812d99d3;
joined_r0x0001812d998b:
  if (plVar20 == plVar17 + *(int *)((longlong)plVar5 + 0x29c)) goto LAB_1812d99a2;
  if (lVar4 == *plVar20) {
    uVar19 = (undefined4)((longlong)plVar20 - (longlong)plVar17 >> 3);
    goto LAB_1812d99a7;
  }
  plVar20 = plVar20 + 1;
  goto joined_r0x0001812d998b;
LAB_1812d99a2:
  uVar19 = 0xffffffff;
LAB_1812d99a7:
  FUN_18051b040(plVar5 + 0x52,lVar4);
  FUN_1812d9630(plVar5,*(undefined4 *)(lVar4 + 0x1c8),uVar19);
  (**(code **)(*plVar5 + 0x108))(plVar5);
LAB_1812d99d3:
  iVar9 = *(int *)(param_1 + 0x24) + 1;
  if (*(int *)(param_1 + 0x20) < iVar9) {
    FUN_18047cb30(plVar1,*(int *)(param_1 + 0x24) + 9 + iVar9 / 2 & 0xfffffff8);
  }
  iVar9 = *(int *)(param_1 + 0x24);
  *(int *)(param_1 + 0x24) = iVar9 + 1;
  *(longlong *)(*plVar1 + (longlong)iVar9 * 8) = lVar4;
  FUN_181343cc0(param_1 + -200,lVar4,0xffffffff);
  FUN_1812da170(param_1 + -200,1);
LAB_1812d9a33:
  if (DAT_182673700 == 0) {
    uVar6 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar6);
  }
  lVar3 = DAT_182673700;
  iVar9 = *(int *)(param_1 + 0x24);
  do {
    iVar9 = iVar9 + -1;
    if (iVar9 < 0) {
      return;
    }
    plVar5 = (longlong *)*plVar1;
    for (plVar17 = plVar5; plVar17 != plVar5 + *(int *)(param_1 + 0x24); plVar17 = plVar17 + 1) {
      if (lVar4 == *plVar17) {
        uVar25 = (longlong)plVar17 - (longlong)plVar5 >> 3;
        goto LAB_1812d9ab7;
      }
    }
    uVar25 = 0xffffffff;
LAB_1812d9ab7:
    uVar24 = (uint)uVar25;
    uVar21 = uVar25 & 0xffffffff;
    cVar2 = *(char *)(param_1 + 0x10);
    if (cVar2 == '\0') {
      iVar28 = *(int *)(param_2 + 0x18) - *(int *)(lVar4 + 0x1e0);
      iVar12 = *(int *)(lVar4 + 0x28);
    }
    else {
      iVar28 = *(int *)(param_2 + 0x1c) - *(int *)(lVar4 + 0x1e4);
      iVar12 = *(int *)(lVar4 + 0x2c);
    }
    if (uVar24 < *(uint *)(param_1 + -0x7c)) {
      lVar13 = *(longlong *)(*(longlong *)(param_1 + -0x88) + (longlong)(int)uVar24 * 8);
    }
    else {
      lVar13 = 0;
    }
    iVar26 = *(int *)(lVar3 + 0x124) + -1;
    uVar22 = (ulonglong)iVar26;
    if (-1 < iVar26) {
      puVar18 = (undefined8 *)(*(longlong *)(lVar3 + 0x118) + uVar22 * 8);
      uVar23 = uVar22;
      do {
        lVar7 = 0;
        if (*(longlong *)*puVar18 != 0) {
          lVar7 = *(longlong *)(*(longlong *)*puVar18 + 0x10);
        }
        if (lVar13 == lVar7) {
          lVar7 = *(longlong *)(*(longlong *)(lVar3 + 0x118) + (longlong)(int)uVar23 * 8);
          if (lVar7 != 0) {
            iVar29 = *(int *)(lVar7 + 0x10);
            iVar30 = *(int *)(lVar7 + 0x14);
            iVar32 = *(int *)(lVar7 + 0x18);
            iVar10 = *(int *)(lVar7 + 0x1c);
            goto LAB_1812d9b6a;
          }
          break;
        }
        uVar23 = (ulonglong)((int)uVar23 - 1);
        puVar18 = puVar18 + -1;
        uVar22 = uVar22 - 1;
      } while (-1 < (longlong)uVar22);
    }
    iVar29 = *(int *)(lVar13 + 0x20);
    iVar30 = *(int *)(lVar13 + 0x24);
    iVar32 = *(int *)(lVar13 + 0x28);
    iVar10 = *(int *)(lVar13 + 0x2c);
LAB_1812d9b6a:
    uVar25 = uVar25 & 0xffffffff;
    lVar13 = (longlong)(int)uVar24 * 8;
    do {
      uVar14 = (int)uVar25 - 1;
      uVar25 = (ulonglong)uVar14;
      lVar13 = lVar13 + -8;
      if ((*(uint *)(param_1 + 0x24) <= uVar14) ||
         (lVar7 = *(longlong *)(lVar13 + *plVar1), lVar7 == 0)) goto LAB_1812d9cb7;
    } while (*(char *)(lVar7 + 0x1e8) == '\0');
    uVar25 = (ulonglong)iVar26;
    if (-1 < iVar26) {
      puVar18 = (undefined8 *)(*(longlong *)(lVar3 + 0x118) + uVar25 * 8);
      uVar22 = uVar25;
      do {
        lVar13 = 0;
        if (*(longlong *)*puVar18 != 0) {
          lVar13 = *(longlong *)(*(longlong *)*puVar18 + 0x10);
        }
        if (lVar7 == lVar13) {
          lVar13 = *(longlong *)(*(longlong *)(lVar3 + 0x118) + (longlong)(int)uVar22 * 8);
          if (lVar13 != 0) {
            iVar11 = *(int *)(lVar13 + 0x10);
            iVar31 = *(int *)(lVar13 + 0x14);
            goto LAB_1812d9bf6;
          }
          break;
        }
        uVar22 = (ulonglong)((int)uVar22 - 1);
        puVar18 = puVar18 + -1;
        uVar25 = uVar25 - 1;
      } while (-1 < (longlong)uVar25);
    }
    iVar11 = *(int *)(lVar7 + 0x20);
    iVar31 = *(int *)(lVar7 + 0x24);
LAB_1812d9bf6:
    if (cVar2 == '\0') {
      iVar10 = iVar32 + iVar29;
    }
    else {
      iVar10 = iVar10 + iVar30;
      iVar11 = iVar31;
    }
    uVar14 = (iVar12 + iVar28) - iVar10;
    uVar15 = (int)uVar14 >> 0x1f;
    uVar16 = iVar28 - iVar11 >> 0x1f;
    if ((int)((iVar28 - iVar11 ^ uVar16) - uVar16) < (int)((uVar14 ^ uVar15) - uVar15)) {
      plVar5 = *(longlong **)(param_1 + -0x88);
      for (plVar17 = plVar5; plVar17 != plVar5 + *(int *)(param_1 + -0x7c); plVar17 = plVar17 + 1) {
        if (lVar7 == *plVar17) {
          uVar21 = (longlong)plVar17 - (longlong)plVar5 >> 3;
          goto LAB_1812d9cb7;
        }
      }
      uVar21 = 0xffffffff;
    }
LAB_1812d9cb7:
    uVar14 = (uint)uVar21;
    uVar21 = uVar21 & 0xffffffff;
    lVar13 = (longlong)(int)uVar14 * 8;
    do {
      uVar15 = (int)uVar21 + 1;
      uVar21 = (ulonglong)uVar15;
      lVar13 = lVar13 + 8;
      if ((*(uint *)(param_1 + 0x24) <= uVar15) ||
         (lVar7 = *(longlong *)(lVar13 + *plVar1), lVar7 == 0)) goto LAB_1812d9df1;
    } while (*(char *)(lVar7 + 0x1e8) == '\0');
    if (-1 < iVar26) {
      lVar13 = (longlong)iVar26;
      puVar18 = (undefined8 *)(*(longlong *)(lVar3 + 0x118) + lVar13 * 8);
      do {
        lVar8 = 0;
        if (*(longlong *)*puVar18 != 0) {
          lVar8 = *(longlong *)(*(longlong *)*puVar18 + 0x10);
        }
        if (lVar7 == lVar8) {
          lVar13 = *(longlong *)(*(longlong *)(lVar3 + 0x118) + (longlong)iVar26 * 8);
          if (lVar13 != 0) {
            iVar26 = *(int *)(lVar13 + 0x10);
            iVar32 = *(int *)(lVar13 + 0x14);
            iVar10 = *(int *)(lVar13 + 0x18);
            iVar11 = *(int *)(lVar13 + 0x1c);
            goto LAB_1812d9d3a;
          }
          break;
        }
        iVar26 = iVar26 + -1;
        puVar18 = puVar18 + -1;
        lVar13 = lVar13 + -1;
      } while (-1 < lVar13);
    }
    iVar26 = *(int *)(lVar7 + 0x20);
    iVar32 = *(int *)(lVar7 + 0x24);
    iVar10 = *(int *)(lVar7 + 0x28);
    iVar11 = *(int *)(lVar7 + 0x2c);
LAB_1812d9d3a:
    if (cVar2 == '\0') {
      iVar11 = iVar10 + iVar26;
    }
    else {
      iVar11 = iVar11 + iVar32;
      iVar29 = iVar30;
    }
    uVar27 = (iVar12 + iVar28) - iVar11;
    uVar15 = (int)uVar27 >> 0x1f;
    uVar16 = iVar28 - iVar29 >> 0x1f;
    if ((int)((uVar27 ^ uVar15) - uVar15) < (int)((iVar28 - iVar29 ^ uVar16) - uVar16)) {
      plVar5 = *(longlong **)(param_1 + -0x88);
      for (plVar17 = plVar5; plVar17 != plVar5 + *(int *)(param_1 + -0x7c); plVar17 = plVar17 + 1) {
        if (lVar7 == *plVar17) {
          uVar14 = (int)((longlong)plVar17 - (longlong)plVar5 >> 3) + 1;
          goto LAB_1812d9df1;
        }
      }
      uVar14 = 0;
    }
LAB_1812d9df1:
    if (uVar14 == uVar24) {
      return;
    }
    uVar15 = 0;
    lVar13 = 0;
    uVar24 = *(uint *)(param_1 + 0x24);
    if (0 < (int)uVar24) {
      plVar5 = (longlong *)*plVar1;
      do {
        if (lVar4 == *plVar5) {
          if (uVar15 < uVar24) {
            plVar5 = (longlong *)*plVar1 + (int)uVar15;
            memmove(plVar5,plVar5 + 1,(longlong)(int)((uVar24 - uVar15) + -1) << 3);
            *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
          }
          if ((*(int *)(param_1 + 0x24) * 2 < *(int *)(param_1 + 0x20)) &&
             (*(int *)(param_1 + 0x24) < *(int *)(param_1 + 0x20))) {
            FUN_18047cb30(plVar1);
          }
          break;
        }
        uVar15 = uVar15 + 1;
        lVar13 = lVar13 + 1;
        plVar5 = plVar5 + 1;
      } while (lVar13 < (int)uVar24);
    }
    lVar13 = param_1 + -200;
    plVar5 = *(longlong **)(param_1 + -0x88);
    for (plVar17 = plVar5; plVar17 != plVar5 + *(int *)(param_1 + -0x7c); plVar17 = plVar17 + 1) {
      if (lVar4 == *plVar17) {
        uVar19 = (undefined4)((longlong)plVar17 - (longlong)plVar5 >> 3);
        goto LAB_1812d9e94;
      }
    }
    uVar19 = 0xffffffff;
LAB_1812d9e94:
    FUN_181343a90(lVar13,uVar19,1);
    FUN_181343cc0(lVar13,lVar4,uVar14);
    iVar28 = *(int *)(param_1 + 0x24);
    iVar12 = iVar28 + 1;
    if (*(int *)(param_1 + 0x20) < iVar12) {
      if (iVar12 < 0) {
        iVar12 = iVar28 + 2;
      }
      FUN_18047cb30(plVar1,iVar28 + 9 + (iVar12 >> 1) & 0xfffffff8);
    }
    uVar24 = *(uint *)(param_1 + 0x24);
    if (uVar14 < uVar24) {
      _Src = (void *)(*plVar1 + (longlong)(int)uVar14 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar24 - uVar14) << 3);
      plVar5 = (longlong *)(*plVar1 + (longlong)(int)uVar14 * 8);
    }
    else {
      plVar5 = (longlong *)(*plVar1 + (longlong)(int)uVar24 * 8);
    }
    *plVar5 = lVar4;
    *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + 1;
    FUN_1812da170(lVar13,CONCAT71((int7)((ulonglong)plVar5 >> 8),1));
  } while( true );
}



############ FUN_ 1812da020 size=324 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812da020(longlong param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined4 uVar6;
  undefined1 local_res20 [8];
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined8 local_c8;
  undefined8 *puStack_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined8 local_a0;
  undefined8 uStack_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined4 local_78;
  undefined1 local_74;
  undefined4 local_70;
  undefined1 local_68 [32];
  undefined8 *local_48;
  
  local_b8 = 0xfffffffffffffffe;
  cVar3 = FUN_181345240(*(undefined8 *)(param_1 + 0xd0));
  if (cVar3 != '\0') {
    local_d8 = 0;
    uStack_d0 = 0;
    local_c8 = 0;
    puStack_c0 = (undefined8 *)0x0;
    if (*(char *)(param_1 + 0xd8) == '\0') {
      uVar6 = *(undefined4 *)(param_1 + 0x2c);
    }
    else {
      uVar6 = *(undefined4 *)(param_1 + 0x28);
    }
    uVar4 = FUN_1811316e0(0xf0);
    FUN_180509db0(uVar4,param_1,uVar6);
    FUN_1812f0a10(&local_d8);
    local_b0 = 0;
    uStack_a8 = 0;
    local_a0 = 0;
    uStack_98 = 0;
    local_90 = 0;
    local_88 = _DAT_1824c47c0;
    uStack_80 = _UNK_1824c47c8;
    local_78 = 0;
    local_74 = 0;
    local_70 = 1;
    puVar5 = (undefined8 *)FUN_18133c1f0(local_res20);
    local_b0 = *puVar5;
    uVar4 = FUN_1812f0830(&local_b0,local_68,*(undefined8 *)(param_1 + 0xd0));
    FUN_1812f0230(&local_d8,uVar4,0);
    if (local_48 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_48 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_48)(local_48,1);
      }
    }
    if (puStack_c0 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puStack_c0 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puStack_c0)(puStack_c0,1);
      }
    }
    FUN_18051c930(&local_d8);
  }
  return;
}



############ FUN_ 1812de710 size=723 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812de710(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  undefined8 *puVar4;
  undefined ***pppuVar5;
  undefined4 uVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  undefined8 *local_res8;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 *puStack_100;
  undefined **local_f8;
  undefined8 *local_f0;
  undefined ***local_c0;
  undefined8 local_b8;
  undefined ***local_b0;
  undefined1 local_a8 [8];
  undefined8 local_a0;
  undefined8 uStack_98;
  undefined8 local_90;
  undefined8 uStack_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined4 local_68;
  undefined1 local_64;
  undefined4 local_60;
  undefined1 local_58 [56];
  undefined8 local_20;
  
  local_b8 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res8 = (undefined8 *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8);
  }
  if (*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x10) != 100) {
    FUN_1812a77d0(*(longlong *)(DAT_182673700 + 0x30),100);
  }
  FUN_1812e1fc0(param_1);
  if ((*(char *)((longlong)param_1 + 500) != '\0') || (*(char *)((longlong)param_1 + 0x1f2) == '\0')
     ) {
    if ((*(char *)((longlong)param_1 + 0x1f1) == '\0') ||
       ((*(uint *)(param_2 + 0x10) >> 5 & 1) == 0)) {
      bVar3 = *(byte *)(param_2 + 0x10);
      uVar6 = FUN_1812db7b0(param_1);
      FUN_1812e0100(param_1,uVar6,bVar3 & 1);
    }
    else {
      local_118 = 0;
      uStack_110 = 0;
      local_108 = 0;
      puStack_100 = (undefined8 *)0x0;
      uVar7 = FUN_18134adf0(param_1);
      FUN_18051b750(&puStack_100,uVar7);
      (**(code **)(*param_1 + 0x158))(param_1,&local_118,param_2);
      *(undefined1 *)((longlong)param_1 + 0x1f7) = 1;
      FUN_1804de690(&local_res8,param_1);
      puVar4 = local_res8;
      if (local_res8 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
        UNLOCK();
      }
      local_f8 = std::_Func_impl_no_alloc<<lambda_b78698ecee5af2b07443bcde9119e78e>,void,int>::
                 vftable;
      local_f0 = local_res8;
      local_c0 = &local_f8;
      pppuVar5 = &local_f8;
      if (local_res8 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
        UNLOCK();
        LOCK();
        piVar1 = (int *)(local_res8 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        pppuVar5 = local_c0;
        if (iVar2 == 1) {
          (**(code **)*local_res8)(local_res8,1);
          pppuVar5 = local_c0;
        }
      }
      local_c0 = pppuVar5;
      local_b0 = &local_f8;
      local_a0 = 0;
      uStack_98 = 0;
      local_90 = 0;
      uStack_88 = 0;
      local_80 = 0;
      local_78 = _DAT_1824c47c0;
      uStack_70 = _UNK_1824c47c8;
      local_68 = 0;
      local_64 = 0;
      local_60 = 1;
      puVar8 = (undefined8 *)FUN_18133c1f0(local_a8);
      local_a0 = *puVar8;
      local_20 = 0;
      if (local_c0 != (undefined ***)0x0) {
        local_20 = (*(code *)**local_c0)(local_c0,local_58);
      }
      uVar7 = FUN_181347bc0(local_58);
      FUN_1812f0230(&local_118,&local_a0,uVar7);
      if (local_c0 != (undefined ***)0x0) {
        (*(code *)(*local_c0)[4])(local_c0,local_c0 != &local_f8);
      }
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      if (puStack_100 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puStack_100 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puStack_100)(puStack_100,1);
        }
      }
      FUN_18051c930(&local_118);
    }
  }
  return;
}



############ FUN_ 1812e1420 size=111 ############

void FUN_1812e1420(undefined8 param_1,undefined4 param_2,longlong *param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)FUN_1811316e0(0x18);
  *puVar3 = juce::TextEditor::LengthAndCharacterRestriction::vftable;
  lVar2 = *param_3;
  puVar3[1] = lVar2;
  uVar1 = *(uint *)(lVar2 + -0x10);
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(puVar3 + 2) = param_2;
  FUN_1812e14a0(param_1,puVar3,CONCAT71((uint7)(uint3)(uVar1 >> 8),1));
  return;
}



############ FUN_ 1812e2dc0 size=283 ############

undefined8 *
FUN_1812e2dc0(longlong param_1,undefined4 param_2,undefined1 param_3,undefined8 *param_4)

{
  if (param_4 == (undefined8 *)0x0) {
    param_4 = (undefined8 *)FUN_1811316e0();
    param_4[1] = &DAT_1821dbf98;
    param_4[2] = &DAT_1821dbf98;
    param_4[3] = 0;
    param_4[4] = 0;
    param_4[5] = 0;
    param_4[6] = 0;
    param_4[7] = 0;
    param_4[8] = 0;
    param_4[9] = 0;
    param_4[10] = 0;
    param_4[0xb] = 0;
    param_4[0xc] = 0;
    param_4[0xd] = 0;
    param_4[0xe] = 0;
    param_4[0xf] = 0;
    param_4[0x10] = 0;
    param_4[0x11] = 0;
    param_4[0x12] = 0;
    param_4[0x13] = 0;
    param_4[0x14] = 0;
    *param_4 = juce::TableListBox::RowComp::vftable;
    param_4[0x16] = juce::TableListBox::RowComp::vftable;
    param_4[0x17] = param_1 + -0x108;
    *(undefined4 *)(param_4 + 0x15) = 0;
    *(undefined1 *)((longlong)param_4 + 0xac) = 0;
    param_4[0x18] = 0;
    param_4[0x19] = 0;
    *(undefined4 *)(param_4 + 0x1a) = 0xffffffff;
    *(undefined2 *)((longlong)param_4 + 0xd4) = 0;
    *(undefined1 *)((longlong)param_4 + 0xd6) = 0;
  }
  FUN_180505930(param_4,param_2,param_3);
  return param_4;
}



############ FUN_ 1812e3660 size=372 ############

longlong * FUN_1812e3660(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  undefined4 *puVar5;
  longlong lVar6;
  undefined8 *puVar7;
  HCURSOR pHVar8;
  longlong *plVar9;
  undefined1 local_res8 [16];
  undefined4 *local_res18;
  undefined8 *local_res20;
  
  if (*(int *)(param_1 + 0xf0) == 0) {
    puVar5 = (undefined4 *)FUN_18133e370(param_1,local_res8,param_3,param_4,0xfffffffffffffffe);
    iVar4 = FUN_1812e3370(param_1,*puVar5);
    if (iVar4 == 0) {
LAB_1812e378b:
      lVar2 = *(longlong *)(param_1 + 0x58);
      lVar6 = 0;
      if (lVar2 != 0) {
        LOCK();
        *(int *)(lVar2 + 0x10) = *(int *)(lVar2 + 0x10) + 1;
        UNLOCK();
        lVar6 = lVar2;
      }
      *param_2 = lVar6;
      return param_2;
    }
    if (DAT_182673700 == 0) {
      local_res18 = (undefined4 *)FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res18);
    }
    plVar9 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
    plVar1 = plVar9 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
    for (; plVar9 != plVar1; plVar9 = plVar9 + 1) {
      lVar2 = *(longlong *)(*plVar9 + 0x48);
      lVar6 = 0;
      if (lVar2 != 0) {
        lVar6 = *(longlong *)(lVar2 + 0x10);
      }
      if ((lVar6 == param_1) && ((*(byte *)(*plVar9 + 0x28) & 0x70) != 0)) goto LAB_1812e378b;
    }
  }
  local_res18 = &DAT_182673b68;
  do {
    LOCK();
    uVar3 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar3 != 0);
  if (DAT_18267ab18 == (undefined8 *)0x0) {
    puVar7 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar7 = 0;
    local_res20 = puVar7;
    pHVar8 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f84);
    if (pHVar8 == (HCURSOR)0x0) {
      pHVar8 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    }
    puVar7[1] = pHVar8;
    *(undefined4 *)(puVar7 + 2) = 1;
    *(undefined4 *)((longlong)puVar7 + 0x14) = 9;
    *(undefined1 *)(puVar7 + 3) = 1;
    DAT_18267ab18 = puVar7;
  }
  else {
    LOCK();
    *(int *)(DAT_18267ab18 + 2) = *(int *)(DAT_18267ab18 + 2) + 1;
    UNLOCK();
  }
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  *param_2 = (longlong)DAT_18267ab18;
  return param_2;
}



############ FUN_ 1812e39f0 size=853 ############

void FUN_1812e39f0(longlong param_1,longlong param_2)

{
  int *piVar1;
  undefined4 uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  int iVar5;
  int iVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  int iVar9;
  longlong *plVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined8 *local_res20;
  int local_38;
  undefined4 uStack_34;
  int iStack_30;
  undefined4 uStack_2c;
  
  iVar6 = 0;
  iVar11 = 0;
  if (*(int *)(param_1 + 0xf4) != 0) {
    return;
  }
  iVar9 = SUB84((double)*(float *)(param_2 + 0x28) + DAT_1824c4520,0);
  iVar12 = iVar11;
  if (-1 < iVar9) {
    plVar10 = *(longlong **)(param_1 + 0xc0);
    plVar8 = plVar10 + *(int *)(param_1 + 0xcc);
    iVar13 = iVar6;
    for (; plVar10 != plVar8; plVar10 = plVar10 + 1) {
      lVar3 = *plVar10;
      if (((*(byte *)(lVar3 + 0xc) & 1) != 0) &&
         (iVar13 = iVar13 + *(int *)(lVar3 + 0x10), iVar9 < iVar13)) {
        iVar12 = *(int *)(lVar3 + 8);
        break;
      }
    }
  }
  *(int *)(param_1 + 0xf4) = iVar12;
  plVar10 = *(longlong **)(param_1 + 0xc0);
  plVar8 = plVar10 + *(int *)(param_1 + 0xcc);
  do {
    if (plVar10 == plVar8) {
LAB_1812e3aa6:
      *(undefined4 *)(param_1 + 0xf4) = 0;
      return;
    }
    if (*(int *)(*plVar10 + 8) == iVar12) {
      if ((*(byte *)(*plVar10 + 0xc) & 4) != 0) {
        plVar10 = *(longlong **)(param_1 + 0xc0);
        plVar8 = plVar10 + *(int *)(param_1 + 0xcc);
        iVar9 = iVar6;
        break;
      }
      goto LAB_1812e3aa6;
    }
    plVar10 = plVar10 + 1;
  } while( true );
joined_r0x0001812e3adf:
  if (plVar10 == plVar8) goto LAB_1812e3afa;
  if ((*(byte *)(*plVar10 + 0xc) & 1) != 0) {
    if (*(int *)(*plVar10 + 8) == iVar12) goto LAB_1812e3aff;
    iVar9 = iVar9 + 1;
  }
  plVar10 = plVar10 + 1;
  goto joined_r0x0001812e3adf;
LAB_1812e3afa:
  iVar9 = -1;
LAB_1812e3aff:
  *(int *)(param_1 + 0x104) = iVar9;
  iVar13 = 0;
  plVar10 = *(longlong **)(param_1 + 0xc0);
  plVar8 = plVar10 + *(int *)(param_1 + 0xcc);
  iVar5 = iVar6;
  for (; plVar10 != plVar8; plVar10 = plVar10 + 1) {
    iVar11 = iVar11 + iVar13;
    iVar13 = iVar6;
    iVar14 = iVar5;
    if ((*(byte *)(*plVar10 + 0xc) & 1) != 0) {
      iVar13 = *(int *)(*plVar10 + 0x10);
      iVar14 = iVar5 + 1;
      if (iVar5 == iVar9) break;
    }
    iVar5 = iVar14;
  }
  uVar2 = *(undefined4 *)(param_1 + 0x2c);
  *(undefined4 *)(param_1 + 0xf4) = 0;
  puVar7 = (undefined8 *)FUN_1811316e0(0xb8);
  uStack_34 = 0;
  local_38 = iVar11;
  iStack_30 = iVar13;
  uStack_2c = uVar2;
  plVar8 = (longlong *)FUN_181341cd0(param_1,&local_res20,&local_38,0,DAT_1824c3ea4);
  puVar7[1] = &DAT_1821dbf98;
  puVar7[2] = &DAT_1821dbf98;
  puVar7[3] = 0;
  puVar7[4] = 0;
  puVar7[5] = 0;
  puVar7[6] = 0;
  puVar7[7] = 0;
  puVar7[8] = 0;
  puVar7[9] = 0;
  puVar7[10] = 0;
  puVar7[0xb] = 0;
  puVar7[0xc] = 0;
  puVar7[0xd] = 0;
  puVar7[0xe] = 0;
  puVar7[0xf] = 0;
  puVar7[0x10] = 0;
  puVar7[0x11] = 0;
  puVar7[0x12] = 0;
  puVar7[0x13] = 0;
  puVar7[0x14] = 0;
  *(undefined4 *)(puVar7 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar7 + 0xac) = 0;
  *puVar7 = juce::TableHeaderComponent::DragOverlayComp::vftable;
  lVar3 = *plVar8;
  puVar7[0x16] = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  FUN_181290f30(puVar7 + 0x16);
  FUN_1812900e0(puVar7 + 0x16,DAT_1824c3e28);
  FUN_18134b0f0(puVar7,1);
  puVar4 = *(undefined8 **)(param_1 + 0xe0);
  *(undefined8 **)(param_1 + 0xe0) = puVar7;
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res20 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  FUN_18134bf20(param_1,*(undefined8 *)(param_1 + 0xe0),0xffffffff);
  *(int *)(param_1 + 0xf4) = iVar12;
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0xe0),iVar11,0,iVar13,uVar2);
  iVar11 = *(int *)(param_1 + 0xdc);
  while (iVar11 = iVar11 + -1, -1 < iVar11) {
    plVar8 = *(longlong **)(*(longlong *)(param_1 + 0xd0) + (longlong)iVar11 * 8);
    (**(code **)(*plVar8 + 0x20))(plVar8,param_1,*(undefined4 *)(param_1 + 0xf4));
    iVar6 = *(int *)(param_1 + 0xdc) + -1;
    if (iVar6 < iVar11) {
      iVar11 = iVar6;
    }
  }
  return;
}



############ FUN_ 1812e43e0 size=630 ############

void FUN_1812e43e0(ulonglong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong *plVar7;
  ulonglong uVar8;
  int iVar9;
  undefined1 uVar10;
  longlong *plVar11;
  uint uVar12;
  int local_58 [2];
  int local_50;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  ulonglong uVar13;
  
  lVar5 = FUN_18134adf0();
  plVar1 = (longlong *)(lVar5 + 0x98);
  (**(code **)(*plVar1 + 8))(plVar1,param_2);
  (**(code **)(**(longlong **)(param_2 + 8) + 0x58))(*(longlong **)(param_2 + 8),local_58);
  plVar11 = *(longlong **)(param_1 + 0xc0);
  plVar2 = plVar11 + *(int *)(param_1 + 0xcc);
  uVar13 = 0;
  iVar9 = local_58[0];
  do {
    if (plVar11 == plVar2) {
      return;
    }
    lVar5 = *plVar11;
    if ((*(byte *)(lVar5 + 0xc) & 1) != 0) {
      if ((iVar9 < *(int *)(lVar5 + 0x10) + (int)uVar13) &&
         (((*(int *)(lVar5 + 8) != *(int *)(param_1 + 0xf4) || (*(longlong *)(param_1 + 0xe0) == 0))
          || ((*(byte *)(*(longlong *)(param_1 + 0xe0) + 0xa8) >> 1 & 1) == 0)))) {
        if (*(char *)(param_2 + 0x10) != '\0') {
          *(undefined1 *)(param_2 + 0x10) = 0;
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        }
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        (**(code **)(**(longlong **)(param_2 + 8) + 0x10))(*(longlong **)(param_2 + 8),uVar13);
        uStack_3c = *(undefined4 *)(param_1 + 0x2c);
        uStack_40 = *(undefined4 *)(lVar5 + 0x10);
        local_48 = 0;
        uStack_44 = 0;
        if (*(char *)(param_2 + 0x10) != '\0') {
          *(undefined1 *)(param_2 + 0x10) = 0;
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        }
        (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_48);
        if (*(int *)(lVar5 + 8) == *(int *)(param_1 + 0xfc)) {
          if (DAT_182673700 == 0) {
            uVar6 = FUN_1811316e0(0x130);
            DAT_182673700 = FUN_18133c6c0(uVar6);
          }
          plVar7 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
          plVar3 = plVar7 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
          for (; plVar7 != plVar3; plVar7 = plVar7 + 1) {
            lVar4 = *(longlong *)(*plVar7 + 0x48);
            uVar8 = 0;
            if (lVar4 != 0) {
              uVar8 = *(ulonglong *)(lVar4 + 0x10);
            }
            if ((uVar8 == param_1) && ((*(byte *)(*plVar7 + 0x28) & 0x70) != 0)) {
              uVar10 = 1;
              goto LAB_1812e45be;
            }
          }
        }
        uVar10 = 0;
LAB_1812e45be:
        (**(code **)(*plVar1 + 0x10))
                  (plVar1,param_2,param_1,lVar5,*(int *)(lVar5 + 8),*(undefined4 *)(lVar5 + 0x10),
                   *(undefined4 *)(param_1 + 0x2c),*(int *)(lVar5 + 8) == *(int *)(param_1 + 0xfc),
                   uVar10,*(undefined4 *)(lVar5 + 0xc));
        if (*(char *)(param_2 + 0x10) == '\0') {
          (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
          iVar9 = local_58[0];
        }
        else {
          *(undefined1 *)(param_2 + 0x10) = 0;
          iVar9 = local_58[0];
        }
      }
      uVar12 = (int)uVar13 + *(int *)(lVar5 + 0x10);
      uVar13 = (ulonglong)uVar12;
      if (local_50 + iVar9 <= (int)uVar12) {
        return;
      }
    }
    plVar11 = plVar11 + 1;
  } while( true );
}



############ FUN_ 1812e8b00 size=34 ############

void FUN_1812e8b00(void)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = juce::LabelKeyboardFocusTraverser::vftable;
  return;
}



############ FUN_ 1812e8de0 size=226 ############

undefined8 FUN_1812e8de0(longlong param_1)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined8 *local_res8;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  local_res8 = (undefined8 *)FUN_1811316e0(800);
  uVar4 = FUN_1812e2370(local_res8,param_1 + 8,0);
  lVar5 = FUN_18134adf0(param_1);
  pcVar3 = *(code **)(*(longlong *)(lVar5 + 0x50) + 0x10);
  uVar6 = (*pcVar3)((longlong *)(lVar5 + 0x50),&local_res8,param_1,pcVar3,uVar6);
  FUN_1812e1a20(uVar4,uVar6);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  FUN_1813418a0(param_1,uVar4);
  FUN_1812e8ed0(param_1,uVar4,0x1000284,0x1000201);
  FUN_1812e8ed0(param_1,uVar4,0x1000283,0x1000200);
  FUN_1812e8ed0(param_1,uVar4,0x1000285);
  return uVar4;
}



############ FUN_ 1812ea650 size=123 ############

void FUN_1812ea650(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  if (*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x10) != 0x32) {
    FUN_1812a77d0(*(longlong *)(DAT_182673700 + 0x30),0x32,param_3,param_4,uVar2);
  }
  if ((*(char *)(param_1 + 0x154) != '\0') && (*(char *)(param_2 + 0x59) != '\0')) {
    FUN_1812eab20(param_1);
  }
  return;
}



############ FUN_ 1812ea6e0 size=198 ############

void FUN_1812ea6e0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  if (*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x10) != 300) {
    FUN_1812a77d0(*(longlong *)(DAT_182673700 + 0x30),300,param_3,param_4,uVar3);
  }
  if ((*(byte *)(param_1 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      cVar1 = FUN_18133eaa0();
      if (cVar1 == '\0') goto LAB_1812ea768;
    }
    if ((*(uint *)(param_2 + 0x10) >> 5 & 1) == 0) {
      cVar1 = '\x01';
      goto LAB_1812ea76a;
    }
  }
LAB_1812ea768:
  cVar1 = '\0';
LAB_1812ea76a:
  *(char *)(param_1 + 0x154) = cVar1;
  if ((cVar1 != '\0') &&
     ((*(longlong *)(param_2 + 0x30) == param_1 ||
      ((*(char *)(*(longlong *)(param_1 + 0x170) + 0x200) == '\0' &&
       (*(char *)(*(longlong *)(param_1 + 0x170) + 0x201) == '\0')))))) {
    FUN_1812eab20(param_1);
  }
  return;
}



############ FUN_ 1812ee3c0 size=60 ############

void FUN_1812ee3c0(longlong param_1)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x40);
  FUN_1812ee500(uVar1,param_1 + 0x10,param_1 + 0x20,param_1 + 0x30,uVar2);
  return;
}



############ FUN_ 1812ee5b0 size=56 ############

void FUN_1812ee5b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x30);
  FUN_1812ee6a0(uVar1,param_1 + 0x10,param_1 + 0x20,param_4,uVar2);
  return;
}



############ FUN_ 1812ee730 size=79 ############

void FUN_1812ee730(longlong param_1)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar2 + 1) = 3;
  *puVar2 = juce::RelativePointPath::LineTo::vftable;
  lVar1 = *(longlong *)(param_1 + 0x10);
  puVar2[2] = lVar1;
  if (lVar1 != 0) {
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
  }
  lVar1 = *(longlong *)(param_1 + 0x18);
  puVar2[3] = lVar1;
  if (lVar1 != 0) {
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
  }
  return;
}



############ FUN_ 1812ee830 size=41 ############

void FUN_1812ee830(void)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x10);
  *(undefined4 *)(puVar1 + 1) = 2;
  *puVar1 = juce::RelativePointPath::CloseSubPath::vftable;
  return;
}



############ FUN_ 1812ee8a0 size=79 ############

void FUN_1812ee8a0(longlong param_1)

{
  longlong lVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar2 + 1) = 1;
  *puVar2 = juce::RelativePointPath::StartSubPath::vftable;
  lVar1 = *(longlong *)(param_1 + 0x10);
  puVar2[2] = lVar1;
  if (lVar1 != 0) {
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
  }
  lVar1 = *(longlong *)(param_1 + 0x18);
  puVar2[3] = lVar1;
  if (lVar1 != 0) {
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
  }
  return;
}



############ FUN_ 1812eea70 size=131 ############

undefined8 * FUN_1812eea70(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::Expression::Helpers::Constant::vftable;
  puVar1[2] = 0;
  *(undefined1 *)(puVar1 + 3) = 0;
  *param_1 = puVar1;
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::Expression::Helpers::Constant::vftable;
  puVar1[2] = 0;
  *(undefined1 *)(puVar1 + 3) = 0;
  param_1[1] = puVar1;
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  return param_1;
}



############ FUN_ 1812ef720 size=61 ############

undefined8 * FUN_1812ef720(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar1 + 1) = 0;
  *puVar1 = juce::Expression::Helpers::Constant::vftable;
  puVar1[2] = 0;
  *(undefined1 *)(puVar1 + 3) = 0;
  *param_1 = puVar1;
  *(int *)(puVar1 + 1) = *(int *)(puVar1 + 1) + 1;
  return param_1;
}



############ FUN_ 1812f04b0 size=206 ############

undefined8 FUN_1812f04b0(longlong *param_1,undefined4 *param_2,undefined8 param_3)

{
  bool bVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined1 local_50 [72];
  
  uVar4 = 0xfffffffffffffffe;
  if (*param_1 == param_1[1]) {
    uVar4 = 0;
  }
  else {
    uVar2 = FUN_1811316e0(0x198);
    uVar3 = FUN_1804ff0d0(local_50,param_2);
    if (((int)param_2[2] < 1) || ((int)param_2[3] < 1)) {
      bVar1 = true;
    }
    else {
      bVar1 = false;
    }
    uVar4 = FUN_1804faf50(uVar2,param_1,0,uVar3,!bVar1,((byte)DAT_182673aec & 0x70) != 0,param_3,
                          DAT_1824c3ea4,uVar4,*param_2,param_2[2]);
  }
  return uVar4;
}



############ FUN_ 1812f1b40 size=680 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812f1b40(longlong param_1,int param_2,undefined1 param_3,undefined8 *param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined1 *puVar3;
  uint uVar4;
  bool bVar5;
  undefined1 auStack_2c8 [32];
  undefined4 local_2a8;
  undefined8 local_298;
  undefined4 uStack_290;
  undefined4 uStack_28c;
  undefined8 local_288;
  undefined1 local_278;
  undefined4 local_274;
  undefined1 *local_270;
  undefined4 local_268;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined1 *local_1f8;
  undefined4 local_1f0;
  undefined4 local_1ec;
  undefined1 local_1e8;
  undefined4 local_1e4;
  undefined1 local_1e0 [96];
  longlong local_180 [5];
  undefined1 local_158 [4];
  undefined4 local_154;
  undefined1 local_150 [136];
  undefined1 local_c8 [4];
  undefined4 local_c4;
  undefined1 local_c0 [136];
  ulonglong local_38;
  
  local_288 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  uVar1 = (ulonglong)local_298 >> 0x20;
  local_298 = (undefined8 *)((ulonglong)local_298 & 0xffffffff00000000);
  if (param_2 < *(int *)(param_1 + 300)) {
    puVar3 = (undefined1 *)((longlong)param_2 * 0x90 + *(longlong *)(param_1 + 0x120));
    local_c8[0] = *puVar3;
    local_c4 = *(undefined4 *)(puVar3 + 4);
    FUN_1812f0e30(local_c0,puVar3 + 8);
    puVar3 = local_c8;
    uVar4 = 1;
  }
  else {
    local_278 = 1;
    local_274 = 0;
    local_270 = &DAT_1821dbf98;
    local_268 = 0;
    local_228 = 0;
    uStack_220 = 0;
    local_218 = 0;
    uStack_210 = 0;
    local_208 = 0;
    uStack_200 = 0;
    local_1f8 = &DAT_1821dbf98;
    local_1f0 = 0;
    local_1ec = 1;
    local_298 = (undefined8 *)CONCAT44((int)uVar1,6);
    local_158[0] = 1;
    local_154 = 0;
    FUN_181348200(local_150,&local_270);
    puVar3 = local_158;
    uVar4 = 0xe;
  }
  local_298 = (undefined8 *)CONCAT44(local_298._4_4_,uVar4);
  local_1e8 = *puVar3;
  local_1e4 = *(undefined4 *)(puVar3 + 4);
  FUN_181348200(local_1e0,puVar3 + 8);
  if ((uVar4 & 8) != 0) {
    uVar4 = uVar4 & 0xfffffff7;
    FUN_1804d80a0(local_150);
  }
  if ((uVar4 & 4) != 0) {
    uVar4 = uVar4 & 0xfffffffb;
    FUN_1804d80a0(&local_270);
  }
  if ((uVar4 & 1) != 0) {
    FUN_1804d80a0(local_c0);
  }
  bVar5 = local_180[0] == 0;
  if (param_4 == (undefined8 *)0x0) {
    if (!bVar5) {
      local_298 = (undefined8 *)FUN_1811316e0(0xb8);
      local_298[1] = &DAT_1821dbf98;
      local_298[2] = &DAT_1821dbf98;
      local_298[3] = 0;
      local_298[4] = 0;
      local_298[5] = 0;
      local_298[6] = 0;
      local_298[7] = 0;
      local_298[8] = 0;
      local_298[9] = 0;
      local_298[10] = 0;
      local_298[0xb] = 0;
      local_298[0xc] = 0;
      local_298[0xd] = 0;
      local_298[0xe] = 0;
      local_298[0xf] = 0;
      local_298[0x10] = 0;
      local_298[0x11] = 0;
      local_298[0x12] = 0;
      local_298[0x13] = 0;
      local_298[0x14] = 0;
      *(undefined4 *)(local_298 + 0x15) = 0;
      *(undefined1 *)((longlong)local_298 + 0xac) = 0;
      *local_298 = juce::CustomMenuBarItemHolder::vftable;
      local_298[0x16] = 0;
      *(byte *)(local_298 + 0x15) = *(byte *)(local_298 + 0x15) | 0x18;
      FUN_1804f9f30(local_298,local_180);
    }
  }
  else {
    local_2a8 = 0;
    lVar2 = __RTDynamicCast(param_4,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::CustomMenuBarItemHolder::RTTI_Type_Descriptor);
    if ((bVar5) || (lVar2 == 0)) {
      (**(code **)*param_4)(param_4,1);
    }
    else {
      *(undefined1 *)(local_180[0] + 0xc0) = param_3;
      uStack_28c = *(undefined4 *)(local_180[0] + 0x2c);
      uStack_290 = *(undefined4 *)(local_180[0] + 0x28);
      local_298 = (undefined8 *)0x0;
      FUN_181342870(local_180[0],&local_298,1);
      FUN_1804f9f30(lVar2,local_180);
    }
  }
  FUN_1804d80a0(local_1e0);
}



############ FUN_ 1812f39d0 size=187 ############

void FUN_1812f39d0(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 uVar2;
  
  iVar1 = *(int *)(param_1 + 0x104);
  if (iVar1 == param_2) {
    return;
  }
  if (iVar1 < 0) {
    if (param_2 < 0) {
      if (iVar1 < 0) goto LAB_1812f3a19;
      goto LAB_1812f3a07;
    }
    uVar2 = 1;
  }
  else {
LAB_1812f3a07:
    if (-1 < param_2) goto LAB_1812f3a19;
    uVar2 = 0;
  }
  FUN_1812f14b0(*(undefined8 *)(param_1 + 0xd0),uVar2,param_3,param_4,0xfffffffffffffffe);
LAB_1812f3a19:
  FUN_1812f3ae0(param_1,*(undefined4 *)(param_1 + 0x104));
  *(int *)(param_1 + 0x104) = param_2;
  FUN_1812f3ae0(param_1,param_2);
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  if (param_2 < 0) {
    FUN_18133bd10(DAT_182673700,param_1);
    return;
  }
  FUN_18134b370();
  return;
}



############ FUN_ 1812f3050 size=326 ############

void FUN_1812f3050(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 local_res8;
  undefined1 local_68 [8];
  int local_60;
  int local_5c;
  
  FUN_181339840(param_2,local_68,param_1,param_4,0xfffffffffffffffe);
  local_res8 = CONCAT44(local_5c,local_60);
  iVar1 = FUN_1812f3b60(param_1,local_res8);
  if (*(int *)(param_1 + 0x100) != iVar1) {
    FUN_1812f3ae0(param_1);
    *(int *)(param_1 + 0x100) = iVar1;
    FUN_1812f3ae0(param_1,iVar1);
  }
  if ((((*(int *)(param_1 + 0x100) < 0) && (-1 < local_60)) && (-1 < local_5c)) &&
     ((local_60 < *(int *)(param_1 + 0x28) && (local_5c < *(int *)(param_1 + 0x2c))))) {
    if (*(int *)(param_1 + 0x104) != -1) {
      if (-1 < *(int *)(param_1 + 0x104)) {
        FUN_1812f14b0(*(undefined8 *)(param_1 + 0xd0),0);
      }
      FUN_1812f3ae0(param_1,*(undefined4 *)(param_1 + 0x104));
      *(undefined4 *)(param_1 + 0x104) = 0xffffffff;
      FUN_1812f3ae0(param_1,0xffffffff);
      if (DAT_182673700 == 0) {
        uVar2 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar2);
      }
      FUN_18133bd10(DAT_182673700,param_1);
    }
    FUN_18134b590();
  }
  return;
}



############ FUN_ 1812f33a0 size=350 ############

void FUN_1812f33a0(longlong param_1,int param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  undefined8 local_res8 [2];
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)FUN_18133c1f0(local_res18);
  uVar7 = *puVar6;
  if (param_1 != 0) {
    lVar4 = *(longlong *)(param_1 + 0x18);
    lVar3 = param_1;
    while (lVar2 = lVar4, lVar2 != 0) {
      lVar3 = lVar2;
      lVar4 = *(longlong *)(lVar2 + 0x18);
    }
    puVar6 = (undefined8 *)FUN_18051e060(local_res8,lVar3,*puVar6);
    uVar7 = *puVar6;
    if (lVar3 != param_1) {
      if (*(longlong *)(param_1 + 0x18) != lVar3) {
        puVar6 = (undefined8 *)
                 FUN_180520050(local_res20,lVar3,*(longlong *)(param_1 + 0x18),uVar7,uVar8);
        uVar7 = *puVar6;
      }
      FUN_18051e060(local_res8,param_1,uVar7);
      uVar7 = local_res8[0];
    }
  }
  iVar5 = FUN_1812f3b60(param_1,uVar7);
  if (*(int *)(param_1 + 0x100) != iVar5) {
    FUN_1812f3ae0(param_1);
    *(int *)(param_1 + 0x100) = iVar5;
    FUN_1812f3ae0(param_1,iVar5);
  }
  iVar5 = *(int *)(param_1 + 0x104);
  if ((iVar5 == *(int *)(param_1 + 0x108)) && (iVar5 != -1)) {
    if (-1 < iVar5) {
      FUN_1812f14b0(*(undefined8 *)(param_1 + 0xd0),0);
    }
    FUN_1812f3ae0(param_1,*(undefined4 *)(param_1 + 0x104));
    *(undefined4 *)(param_1 + 0x104) = 0xffffffff;
    FUN_1812f3ae0(param_1,0xffffffff);
    if (DAT_182673700 == 0) {
      local_res8[0] = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res8[0]);
    }
    FUN_18133bd10(DAT_182673700,param_1);
  }
  if ((param_2 != 0) && (plVar1 = *(longlong **)(param_1 + 0xd0), plVar1 != (longlong *)0x0)) {
    (**(code **)(*plVar1 + 0x20))(plVar1,param_2,*(undefined4 *)(param_1 + 0x108));
  }
  return;
}



############ FUN_ 1812f4160 size=191 ############

void FUN_1812f4160(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong lVar3;
  int iVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  *param_1 = juce::MenuBarComponent::vftable;
  param_1[0x16] = juce::MenuBarComponent::vftable;
  param_1[0x17] = juce::MenuBarComponent::vftable;
  FUN_1812f40d0();
  if (DAT_182673700 == 0) {
    uVar2 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar2);
  }
  lVar1 = DAT_182673700;
  iVar4 = 0;
  lVar3 = 0;
  if (0 < (longlong)*(int *)(DAT_182673700 + 0x44)) {
    do {
      if (param_1 == *(undefined8 **)(*(longlong *)(DAT_182673700 + 0x38) + lVar3 * 8)) {
        FUN_18049b4a0(DAT_182673700 + 0x38,iVar4,*(longlong *)(DAT_182673700 + 0x38),param_4,uVar5);
        break;
      }
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
    } while (lVar3 < *(int *)(DAT_182673700 + 0x44));
  }
  FUN_18133bd90(lVar1);
  *(undefined4 *)((longlong)param_1 + 0xf4) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1d]);
}



############ FUN_ 1812f51d0 size=554 ############

void FUN_1812f51d0(longlong param_1,longlong param_2,undefined8 param_3,undefined1 param_4,
                  int param_5,int param_6)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined8 *local_res8;
  undefined1 local_res20 [8];
  uint in_stack_ffffffffffffff70;
  float local_70;
  float local_6c;
  float local_68;
  float local_64;
  
  iVar4 = param_6;
  fVar11 = (float)param_6;
  fVar9 = fVar11 * DAT_1824c3e10;
  fVar10 = (fVar11 - fVar9) * DAT_1824c3d8c;
  local_70 = fVar10;
  local_6c = fVar10;
  local_68 = fVar9;
  local_64 = fVar9;
  puVar5 = (undefined4 *)FUN_181346420(param_1 + -0x80,local_res20,0x1005700);
  (**(code **)(*(longlong *)(param_1 + -0x58) + 8))
            ((longlong *)(param_1 + -0x58),param_2,&local_70,*puVar5,param_4,
             in_stack_ffffffffffffff70 & 0xffffff00);
  iVar8 = (int)(fVar10 * DAT_1824c41e0 + fVar9 + DAT_1824c41e0);
  puVar5 = (undefined4 *)FUN_181346420(param_1 + -0x80,&param_6,0x1008301);
  FUN_181296c00(param_2,*puVar5);
  fVar11 = fVar11 * DAT_1824c3df0;
  puVar6 = (undefined8 *)FUN_1811316e0(0x40);
  fVar9 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar11) && (fVar9 = DAT_1824c45c8, fVar11 <= DAT_1824c45c8)) {
    fVar9 = fVar11;
  }
  *(undefined4 *)(puVar6 + 1) = 0;
  *puVar6 = juce::Font::SharedFontInternal::vftable;
  puVar6[2] = 0;
  plVar7 = (longlong *)FUN_181252610();
  lVar3 = *plVar7;
  puVar6[3] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar6 + 4,&DAT_1824983b4);
  *(float *)(puVar6 + 5) = fVar9;
  *(undefined8 *)((longlong)puVar6 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar6 + 0x34) = 0;
  *(undefined1 *)(puVar6 + 7) = 0;
  LOCK();
  *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
  UNLOCK();
  local_res8 = puVar6;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_res8);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  FUN_1812962a0(param_2,param_3,iVar8,0,(param_5 - iVar8) + -4,iVar4,0x21,1);
  return;
}



############ FUN_ 18130ccc0 size=743 ############

undefined8 * FUN_18130ccc0(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined1 uVar3;
  undefined8 *puVar4;
  undefined4 *puVar5;
  uint *_Memory;
  bool bVar6;
  float fVar7;
  undefined4 local_res10;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  undefined1 *local_88 [2];
  undefined8 local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined1 local_60 [4];
  undefined1 local_5c [4];
  undefined1 local_58 [8];
  undefined1 *local_50;
  undefined8 local_48;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  local_48 = 0xfffffffffffffffe;
  puVar4 = (undefined8 *)FUN_1811316e0(0x208);
  local_50 = &DAT_1821dbf98;
  local_88[0] = &DAT_1821dbf98;
  FUN_18134a080(puVar4,local_88,&local_50);
  _Memory = (uint *)(local_88[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar6 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar6) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *puVar4 = juce::LookAndFeel_V2::SliderLabelComp::vftable;
  puVar4[0x16] = juce::LookAndFeel_V2::SliderLabelComp::vftable;
  puVar4[0x18] = juce::LookAndFeel_V2::SliderLabelComp::vftable;
  puVar4[0x19] = juce::LookAndFeel_V2::SliderLabelComp::vftable;
  puVar4[0x1a] = juce::LookAndFeel_V2::SliderLabelComp::vftable;
  if (*(int *)(puVar4 + 0x38) != 0x24) {
    *(undefined4 *)(puVar4 + 0x38) = 0x24;
    local_78 = 0;
    uStack_70 = *(undefined4 *)(puVar4 + 5);
    uStack_6c = *(undefined4 *)((longlong)puVar4 + 0x2c);
    local_38 = 0;
    uStack_34 = 0;
    uStack_30 = uStack_70;
    uStack_2c = uStack_6c;
    FUN_181342870(puVar4,&local_38,1);
  }
  *(undefined4 *)((longlong)puVar4 + 0x1fc) = 2;
  puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_res18,0x1001400,0);
  FUN_18134a800(puVar4,0x1000281,*puVar5);
  uVar2 = DAT_182673b60;
  if (1 < *(int *)(*(longlong *)(param_2 + 0x200) + 0x20) - 2U) {
    puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_res20,0x1001500,0);
    uVar2 = *puVar5;
  }
  FUN_18134a800(puVar4,0x1000280,uVar2);
  puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_68,0x1001700,0);
  FUN_18134a800(puVar4,0x1000282,*puVar5);
  puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_64,0x1001400,0);
  FUN_18134a800(puVar4,0x1000201,*puVar5);
  fVar7 = DAT_1824c3df0;
  if (1 < *(int *)(*(longlong *)(param_2 + 0x200) + 0x20) - 2U) {
    fVar7 = DAT_1824c3ea4;
  }
  puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_60,0x1001500,0);
  if (0.0 < fVar7) {
    if (fVar7 < DAT_1824c3ea4) {
      uVar3 = (undefined1)(int)(fVar7 * DAT_1824c454c);
    }
    else {
      uVar3 = 0xff;
    }
  }
  else {
    uVar3 = 0;
  }
  local_res10 = CONCAT13(uVar3,(int3)*puVar5);
  FUN_18134a800(puVar4,0x1000200,local_res10);
  puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_5c,0x1001700,0);
  FUN_18134a800(puVar4,0x1000205,*puVar5);
  puVar5 = (undefined4 *)FUN_18134a8d0(param_2,local_58,0x1001600,0);
  FUN_18134a800(puVar4,0x1000202,*puVar5);
  return puVar4;
}



############ FUN_ 1812f8780 size=740 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f8780(void)

{
  uint uVar1;
  bool bVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  char cVar5;
  undefined8 *puVar6;
  int *piVar7;
  longlong lVar8;
  uint *_Memory;
  int iVar9;
  undefined8 *local_res18;
  longlong local_res20;
  undefined8 in_stack_fffffffffffffd78;
  undefined4 uVar10;
  void *local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined8 uStack_230;
  undefined1 local_228;
  int local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined4 local_1f8;
  undefined4 uStack_1f4;
  undefined8 local_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined4 uStack_1d4;
  undefined4 uStack_1d0;
  undefined4 uStack_1cc;
  undefined **local_1c8 [5];
  undefined4 local_1a0;
  undefined4 local_19c;
  undefined1 local_e8 [16];
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined1 local_c8;
  int local_98;
  longlong local_90;
  longlong local_88;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  
  uVar10 = (undefined4)((ulonglong)in_stack_fffffffffffffd78 >> 0x20);
  local_1f0 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)FUN_1811316e0(0x220);
  local_res18 = puVar6;
  FUN_18049c4e0(&local_res20,&DAT_1821e2e44);
  FUN_1813379d0(puVar6,&local_res20);
  *puVar6 = juce::DrawableButton::vftable;
  puVar6[0x16] = juce::DrawableButton::vftable;
  *(undefined4 *)(puVar6 + 0x39) = 3;
  puVar6[0x3a] = 0;
  puVar6[0x3b] = 0;
  puVar6[0x3c] = 0;
  puVar6[0x3d] = 0;
  puVar6[0x3e] = 0;
  puVar6[0x3f] = 0;
  puVar6[0x40] = 0;
  puVar6[0x41] = 0;
  puVar6[0x42] = 0;
  *(undefined4 *)(puVar6 + 0x43) = 3;
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_248 = (void *)0x0;
  local_240 = 0;
  local_238 = 0;
  uStack_230 = 0;
  local_228 = 1;
  local_1e8 = _DAT_1824c4800;
  uStack_1e0 = _UNK_1824c4808;
  FUN_18129c5c0(&local_248,&local_1e8,DAT_1824c4490,DAT_1824c44dc,CONCAT44(uVar10,DAT_1824c44a8));
  FUN_181330640(local_1c8);
  local_1c8[0] = juce::DrawablePath::vftable;
  piVar7 = (int *)FUN_18134a8d0(puVar6,&local_res18,0x1000102,0);
  uVar4 = _UNK_1824c4788;
  uVar3 = _DAT_1824c4780;
  local_220 = *piVar7;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = _DAT_1824c4780;
  uStack_200 = _UNK_1824c4788;
  local_1f8 = DAT_1824c3ea4;
  uStack_1f4 = 0;
  iVar9 = local_220;
  if ((local_98 == local_220) && (local_88 == 0)) {
    cVar5 = FUN_1812a0bf0(&local_80,&local_208);
    if ((cVar5 != '\0') && (bVar2 = true, local_90 == 0)) goto LAB_1812f896a;
  }
  bVar2 = false;
LAB_1812f896a:
  if (!bVar2) {
    local_98 = iVar9;
    lVar8 = FUN_1804b0230(0);
    if (local_90 != 0) {
      *(undefined4 *)(local_90 + 0x24) = 0;
      puVar6 = (undefined8 *)(local_90 + 0x18);
      local_90 = lVar8;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar6);
    }
    local_90 = lVar8;
    FUN_1812911c0(&local_88,&uStack_210);
    local_80 = uVar3;
    uStack_78 = uVar4;
    local_70 = CONCAT44(uStack_1f4,local_1f8);
    local_1d8 = 0;
    uStack_1d4 = 0;
    uStack_1d0 = local_1a0;
    uStack_1cc = local_19c;
    FUN_181342870(local_1c8,&local_1d8,1);
  }
  FUN_1804aaf40(local_e8,&local_248);
  local_d8 = (undefined4)local_238;
  uStack_d4 = local_238._4_4_;
  uStack_d0 = (undefined4)uStack_230;
  uStack_cc = uStack_230._4_4_;
  local_c8 = local_228;
  FUN_181330000(local_1c8);
  FUN_1813355a0(puVar6,local_1c8,0,0,0,0,0,0);
  local_1c8[0] = juce::DrawablePath::vftable;
  FUN_1813304a0(local_1c8);
                    /* WARNING: Subroutine does not return */
  free(local_248);
}



############ FUN_ 1812f90a0 size=1279 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f90a0(ulonglong param_1,longlong param_2,longlong param_3,undefined8 *param_4)

{
  int *piVar1;
  longlong lVar2;
  int iVar3;
  DWORD DVar4;
  undefined4 *puVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  ulonglong local_res8 [2];
  undefined4 local_res18 [2];
  float local_res20;
  float in_stack_fffffffffffffe38;
  undefined8 *local_198;
  undefined8 local_190;
  undefined4 local_188;
  undefined8 local_184;
  undefined4 local_17c;
  undefined4 local_178;
  undefined4 local_174;
  float local_170;
  float local_16c;
  undefined4 local_168;
  undefined4 uStack_164;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined8 local_158;
  float local_150;
  uint local_14c;
  float local_148;
  float local_144;
  float local_140;
  float local_13c;
  undefined4 local_138;
  undefined4 uStack_134;
  undefined4 uStack_130;
  undefined4 uStack_12c;
  undefined8 local_128;
  undefined1 local_120 [8];
  void *local_118;
  ulonglong local_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined1 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 uStack_d8;
  undefined1 local_d0;
  undefined8 local_c8;
  
  local_c8 = 0xfffffffffffffffe;
  local_res8[0] = param_1;
  FUN_18134a8d0(param_3,local_res8,0x1001900,0);
  FUN_18134a8d0(param_3,local_res18,0x1001a00,0);
  iVar3 = *(int *)(param_3 + 0x28) + -4;
  iVar9 = 0;
  if (0 < iVar3) {
    iVar9 = iVar3;
  }
  iVar3 = *(int *)(param_3 + 0x2c) + -4;
  iVar8 = 0;
  if (0 < iVar3) {
    iVar8 = iVar3;
  }
  local_res20 = (float)iVar9;
  DVar4 = timeGetTime();
  fVar14 = DAT_1824c3d8c;
  if (DVar4 < DAT_1826737fc) {
    if (DVar4 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar4;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar4;
  }
  iVar3 = (int)((ulonglong)DVar4 / 10);
  iVar10 = (int)(((ulonglong)DVar4 / 10) * 0x6c16c16d >> 0x20);
  fVar13 = (float)(iVar3 + (((uint)(iVar3 - iVar10) >> 1) + iVar10 >> 8) * -0x168);
  fVar12 = fVar13 / DAT_1824c4564;
  fVar11 = fVar13 + DAT_1824c4438;
  if ((fVar12 < DAT_1824c3d3c) || (DAT_1824c3d8c <= fVar12)) {
    if ((DAT_1824c3d8c <= fVar12) && (fVar12 <= DAT_1824c3ea4)) {
      fVar11 = fVar11 + _DAT_1824c455c;
      fVar13 = (fVar11 - DAT_1824c4438) -
               (DAT_1824c3ea4 - (fVar12 * DAT_1824c41e0 - DAT_1824c3ea4)) * _DAT_1824c455c;
    }
  }
  else {
    fVar11 = (fVar12 * DAT_1824c4334 - DAT_1824c3ea4) * _DAT_1824c455c + fVar11;
  }
  FUN_181296c00(param_2,local_res8[0] & 0xffffffff);
  local_f0 = 0;
  local_e8 = 0;
  local_e0 = 0;
  uStack_d8 = 0;
  local_d0 = 1;
  fVar16 = (float)iVar8 * fVar14;
  fVar15 = fVar16 + DAT_1824c41e0;
  fVar14 = (float)iVar9 * fVar14;
  fVar17 = fVar14 + DAT_1824c41e0;
  if (0.0 < fVar14) {
    in_stack_fffffffffffffe38 = fVar16;
    FUN_18129cdf0(&local_f0,fVar17,fVar15,fVar14,fVar16,0,0,DAT_1824c43a4,1);
  }
  local_168 = _DAT_1824c4780;
  uStack_164 = _UNK_1824c4784;
  uStack_160 = _UNK_1824c4788;
  uStack_15c = _UNK_1824c478c;
  local_158 = 0x3f800000;
  local_190 = 0x40800000;
  local_188 = 0;
  FUN_181295d20(param_2,&local_f0,&local_190,&local_168);
  FUN_181296c00(param_2,local_res18[0]);
  local_118 = (void *)0x0;
  local_110 = 0;
  local_108 = 0;
  uStack_100 = 0;
  local_f8 = 1;
  if (0.0 < fVar14) {
    FUN_18129cdf0(&local_118,fVar17,fVar15,fVar14,fVar16,0,fVar13 * DAT_1824c3c78,
                  fVar11 * DAT_1824c3c78,1);
    in_stack_fffffffffffffe38 = fVar16;
  }
  fVar11 = fVar12 * DAT_1824c42e0 * _DAT_1824c4224;
  fVar14 = cosf(fVar11);
  local_144 = sinf(fVar11);
  local_14c = (uint)local_144 ^ DAT_1824c4f30;
  local_148 = (local_144 * fVar15 - fVar14 * fVar17) + fVar17;
  local_13c = fVar15 - (local_144 * fVar17 + fVar14 * fVar15);
  local_150 = fVar14;
  local_140 = fVar14;
  FUN_18129b680(&local_118,&local_150);
  local_138 = _DAT_1824c4780;
  uStack_134 = _UNK_1824c4784;
  uStack_130 = _UNK_1824c4788;
  uStack_12c = _UNK_1824c478c;
  local_128 = 0x3f800000;
  local_184 = 0x40800000;
  local_17c = 0;
  FUN_181295d20(param_2,&local_118,&local_184,&local_138);
  if (*(char *)*param_4 != '\0') {
    puVar5 = (undefined4 *)FUN_18134a8d0(param_3,local_120,0x1000102,0);
    FUN_181296c00(param_2,*puVar5);
    puVar6 = (undefined8 *)FUN_1811316e0(0x40);
    *(undefined4 *)(puVar6 + 1) = 0;
    *puVar6 = juce::Font::SharedFontInternal::vftable;
    puVar6[2] = 0;
    plVar7 = (longlong *)FUN_181252610();
    lVar2 = *plVar7;
    puVar6[3] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18049c4e0(puVar6 + 4,"Italic");
    *(undefined4 *)(puVar6 + 5) = 0x41400000;
    *(undefined8 *)((longlong)puVar6 + 0x2c) = 0x3f800000;
    *(undefined4 *)((longlong)puVar6 + 0x34) = 0;
    *(undefined1 *)(puVar6 + 7) = 0;
    LOCK();
    *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
    UNLOCK();
    local_198 = puVar6;
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_198);
    if (local_198 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_198 + 1);
      iVar9 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar9 == 1) {
        (**(code **)*local_198)(local_198,1);
      }
    }
    local_178 = 0x40000000;
    local_174 = 0x40000000;
    local_170 = local_res20;
    local_16c = (float)iVar8;
    FUN_1812963b0(param_2,param_4,&local_178,0x24,(uint)in_stack_fffffffffffffe38 & 0xffffff00);
  }
  local_110 = local_110 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_118);
}



############ FUN_ 1812f9f00 size=64 ############

longlong * FUN_1812f9f00(undefined8 param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2b80(uVar1,0,DAT_1824c4414);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 1812f9f50 size=64 ############

longlong * FUN_1812f9f50(undefined8 param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2b80(uVar1,0,DAT_1824c441c);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 1812f9fa0 size=183 ############

undefined8 *
FUN_1812f9fa0(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x40);
  uVar2 = DAT_1824c4424;
  *(undefined4 *)(puVar3 + 1) = 0;
  *puVar3 = juce::Font::SharedFontInternal::vftable;
  puVar3[2] = 0;
  plVar4 = (longlong *)FUN_181252610();
  lVar1 = *plVar4;
  puVar3[3] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar3 + 4,&DAT_1824983b4,param_3,param_4,uVar5);
  *(undefined4 *)(puVar3 + 5) = uVar2;
  *(undefined8 *)((longlong)puVar3 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar3 + 0x34) = 0;
  *(undefined1 *)(puVar3 + 7) = 0;
  *param_2 = puVar3;
  LOCK();
  *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
  UNLOCK();
  return param_2;
}



############ FUN_ 1812fa070 size=1921 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fa070(longlong *param_1,longlong param_2,longlong param_3,longlong param_4,
                  undefined8 param_5)

{
  int *piVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  longlong lVar7;
  float **ppfVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  undefined8 uVar11;
  uint *_Memory;
  float *pfVar12;
  undefined4 uVar13;
  int iVar14;
  float fVar15;
  float fVar16;
  float *local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined1 local_218;
  void *local_210;
  undefined8 local_208;
  undefined8 *local_200;
  undefined8 local_1f8;
  float fStack_1f0;
  float fStack_1ec;
  undefined4 local_1e8;
  undefined4 uStack_1e4;
  int iStack_1e0;
  int iStack_1dc;
  undefined4 local_1d8;
  undefined4 uStack_1d4;
  float fStack_1d0;
  float fStack_1cc;
  undefined8 local_1c8;
  undefined8 uStack_1c0;
  undefined8 local_1b8;
  undefined1 local_1b0 [4];
  undefined1 local_1ac [4];
  undefined4 local_1a8;
  undefined1 local_1a4 [4];
  float local_1a0;
  float local_19c;
  longlong local_198;
  float local_190;
  float fStack_18c;
  float fStack_188;
  float fStack_184;
  float *local_170;
  undefined4 local_168;
  undefined4 local_164;
  undefined8 local_160;
  float local_158;
  float *local_150;
  undefined4 local_148;
  undefined4 uStack_144;
  float fStack_140;
  float fStack_13c;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined4 local_128;
  undefined4 uStack_124;
  float fStack_120;
  float fStack_11c;
  int local_118;
  int local_114;
  float local_108;
  float fStack_104;
  float fStack_100;
  float fStack_fc;
  undefined4 local_f8;
  undefined4 uStack_f4;
  float fStack_f0;
  float fStack_ec;
  void *local_e8;
  undefined4 local_dc;
  
  local_160 = 0xfffffffffffffffe;
  puVar6 = (undefined4 *)FUN_18134a8d0(param_3,local_1b0,0x1001820,0);
  FUN_181296c00(param_2,*puVar6);
  fStack_1ec = (float)*(int *)(param_3 + 0x2c);
  fStack_1f0 = (float)*(int *)(param_3 + 0x28);
  local_1f8 = 0;
  local_148 = 0;
  uStack_144 = 0;
  fStack_140 = fStack_1f0;
  fStack_13c = fStack_1ec;
  FUN_181295190(param_2,&local_148);
  iVar4 = *(int *)(param_3 + 0x28) + -2;
  iVar5 = 0;
  if (0 < iVar4) {
    iVar5 = iVar4;
  }
  iVar4 = *(int *)(param_3 + 0x2c) + -2;
  iVar14 = 0;
  if (0 < iVar4) {
    iVar14 = iVar4;
  }
  local_1e8 = 1;
  uStack_1e4 = 1;
  local_138 = 0x100000001;
  uStack_130 = CONCAT44(iVar14,iVar5);
  iStack_1e0 = iVar5;
  iStack_1dc = iVar14;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_138);
  puVar6 = (undefined4 *)FUN_18134a8d0(param_3,local_1ac,0x1001800,0);
  FUN_181296c00(param_2,*puVar6);
  fStack_1cc = (float)iVar14;
  fVar16 = (float)iVar5;
  local_1d8 = 0x3f800000;
  uStack_1d4 = 0x3f800000;
  local_128 = 0x3f800000;
  uStack_124 = 0x3f800000;
  fStack_1d0 = fVar16;
  fStack_120 = fVar16;
  fStack_11c = fStack_1cc;
  FUN_181295300(param_2,&local_128);
  iVar5 = 0x82;
  if (iVar14 + 0x14 < 0x82) {
    iVar5 = iVar14 + 0x14;
  }
  if (((0 < *(int *)(param_3 + 0x1ac)) || (2 < *(int *)(param_3 + 0x14c))) &&
     (iVar4 = *(int *)(param_4 + 0xc) + 0x32, iVar4 < iVar5)) {
    iVar5 = iVar4;
  }
  iVar4 = (int)((ulonglong)((longlong)iVar5 * -0x66666667) >> 0x20);
  local_118 = (iVar4 >> 2) - (iVar4 >> 0x1f);
  iVar4 = *(int *)(param_3 + 0xe8);
  local_114 = local_118;
  if (iVar4 == 0) {
    puVar6 = (undefined4 *)FUN_18134a8d0(param_3,local_1a4,0x1001810,0);
    FUN_181296c00(param_2,*puVar6);
    if (*(code **)(*param_1 + 0x28) == FUN_1812fa060) {
      iVar5 = 0x28;
    }
    else {
      iVar5 = (**(code **)(*param_1 + 0x28))(param_1);
    }
    fStack_ec = (float)((iVar14 - iVar5) + -0x14);
    local_f8 = 0x3f800000;
    uStack_f4 = DAT_1824c4478;
    fStack_f0 = fVar16;
    FUN_18124e500(param_5,param_2,&local_f8);
    return;
  }
  local_238 = (float *)0x0;
  local_230 = (float *)0x0;
  local_228 = (float *)0x0;
  uStack_220 = (float *)0x0;
  local_218 = 1;
  local_190 = (float)local_118;
  fVar16 = (float)iVar5;
  local_19c = (float)local_118;
  if (iVar4 == 2) {
    local_1a0 = fVar16 * DAT_1824c3d8c + local_190;
    local_228 = (float *)CONCAT44(local_1a0,local_1a0);
    uStack_220 = (float *)CONCAT44(local_19c,local_19c);
    local_158 = local_190;
    FUN_1804b02a0(&local_238,&DAT_1821df344);
    FUN_18129ddd0(&local_238);
    FUN_18129ddd0(&local_238);
    if ((local_230._4_4_ != 0) &&
       ((local_230._4_4_ < 1 || (local_238[local_230._4_4_ + -1] != DAT_1824c460c)))) {
      if ((int)local_230 < local_230._4_4_ + 1) {
        FUN_1804af790(&local_238,local_230._4_4_ + 9 + (local_230._4_4_ + 1) / 2 & 0xfffffff8);
      }
      lVar7 = (longlong)local_230._4_4_;
      local_230 = (float *)CONCAT44(local_230._4_4_ + 1,(int)local_230);
      local_238[lVar7] = 100005.0;
    }
    ppfVar8 = (float **)FUN_18129a910(&local_238,&local_e8);
    pfVar12 = local_238;
    if (&local_238 != ppfVar8) {
      local_170 = *ppfVar8;
      *ppfVar8 = (float *)0x0;
      local_168 = *(undefined4 *)(ppfVar8 + 1);
      local_164 = *(undefined4 *)((longlong)ppfVar8 + 0xc);
      local_230 = ppfVar8[1];
      ppfVar8[1] = (float *)0x0;
      local_150 = local_238;
      local_238 = local_170;
                    /* WARNING: Subroutine does not return */
      free(pfVar12);
    }
    local_228 = ppfVar8[2];
    uStack_220 = ppfVar8[3];
    local_218 = *(undefined1 *)(ppfVar8 + 4);
    local_dc = 0;
                    /* WARNING: Subroutine does not return */
    free(local_e8);
  }
  uVar13 = 0x3f;
  if (iVar4 == 3) {
    uVar13 = 0x69;
  }
  fStack_18c = local_19c;
  fStack_188 = fVar16;
  fStack_184 = fVar16;
  local_108 = local_190;
  fStack_104 = local_19c;
  fStack_100 = fVar16;
  fStack_fc = fVar16;
  FUN_18129d1e0(&local_238,&local_108);
  local_210 = (void *)0x0;
  local_208 = 0;
  FUN_1804aebd0(&local_210,200);
  fVar16 = fVar16 * DAT_1824c3e58;
  puVar9 = (undefined8 *)FUN_1811316e0();
  fVar15 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar16) && (fVar15 = DAT_1824c45c8, fVar16 <= DAT_1824c45c8)) {
    fVar15 = fVar16;
  }
  *(undefined4 *)(puVar9 + 1) = 0;
  *puVar9 = juce::Font::SharedFontInternal::vftable;
  puVar9[2] = 0;
  plVar10 = (longlong *)FUN_181252610();
  lVar7 = *plVar10;
  puVar9[3] = lVar7;
  if ((*(uint *)(lVar7 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar7 + -0x10) = *(int *)(lVar7 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar9 + 4,&DAT_1824983b4);
  *(float *)(puVar9 + 5) = fVar15;
  *(undefined8 *)((longlong)puVar9 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar9 + 0x34) = 0;
  *(undefined1 *)(puVar9 + 7) = 0;
  LOCK();
  *(int *)(puVar9 + 1) = *(int *)(puVar9 + 1) + 1;
  UNLOCK();
  local_200 = puVar9;
  uVar11 = FUN_181233f40(&local_198,uVar13);
  local_1a8 = 0x24;
  FUN_181250750(&local_210,&local_200,uVar11);
  _Memory = (uint *)(local_198 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_200 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_200 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_200)(local_200,1);
    }
  }
  FUN_18124ee80(&local_210,&local_238);
  local_218 = 0;
  FUN_181296c00(param_2,0x6600b0b9);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    for (pfVar12 = local_238; pfVar12 != local_238 + local_230._4_4_; pfVar12 = pfVar12 + 1) {
      fVar16 = *pfVar12;
      if (fVar16 == DAT_1824c4600) {
        pfVar12 = pfVar12 + 2;
      }
      else if (((fVar16 == DAT_1824c45fc) || (fVar16 == DAT_1824c4604)) || (fVar16 == DAT_1824c4608)
              ) {
        local_1c8 = _DAT_1824c4780;
        uStack_1c0 = _UNK_1824c4788;
        local_1b8 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_238,&local_1c8);
        break;
      }
    }
  }
  FUN_1804aeb50(&local_210);
                    /* WARNING: Subroutine does not return */
  free(local_210);
}



############ FUN_ 181313f10 size=506 ############

undefined8
FUN_181313f10(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6,undefined4 param_7,int param_8,undefined8 param_9
             )

{
  wint_t wVar1;
  wint_t wVar2;
  undefined8 uVar3;
  uint *puVar4;
  uint *puVar5;
  wint_t local_40;
  undefined2 uStack_3e;
  undefined4 uStack_3c;
  undefined4 local_38;
  uint local_30 [4];
  uint local_20 [6];
  
  uVar3 = FUN_1811316e0(0x1e0);
  local_40 = (wint_t)uVar3;
  uStack_3e = (undefined2)((ulonglong)uVar3 >> 0x10);
  uStack_3c = (undefined4)((ulonglong)uVar3 >> 0x20);
  uVar3 = FUN_181347860(uVar3,param_2,param_3,param_7,param_9);
  if (param_8 == 1) {
    local_20[0] = 0xd;
  }
  else {
    wVar1 = FUN_180493050(param_4,0);
    wVar1 = towlower(wVar1);
    local_20[1] = 0;
    local_20[2] = 0;
    local_20[0] = (uint)wVar1;
    wVar2 = FUN_180493050(param_5,0);
    local_40 = towlower(wVar2);
    uStack_3e = 0;
    uStack_3c = 0;
    local_38 = 0;
    if ((uint)wVar1 == (uint)local_40) {
LAB_181313fed:
      local_40 = 0;
      uStack_3e = 0;
      uStack_3c = 0;
      local_38 = 0;
    }
    else if ((wVar1 < 0x100) && (local_40 < 0x100)) {
      wVar1 = towlower(wVar1);
      wVar2 = towlower(local_40);
      if (wVar1 == wVar2) goto LAB_181313fed;
    }
    if (param_8 == 2) {
      local_30[0] = 0xd;
      local_30[1] = 0;
      local_30[2] = 0;
      FUN_181347060(uVar3,param_4,1,local_30,local_20);
      local_20[0] = 0x1b;
      puVar4 = (uint *)&local_40;
      puVar5 = local_20;
      param_4 = param_5;
      goto LAB_1813140da;
    }
    if (param_8 != 3) {
      return uVar3;
    }
    local_30[1] = 0;
    local_30[0] = 0;
    local_30[2] = 0;
    FUN_181347060(uVar3,param_4,1,local_20,local_30);
    local_20[1] = 0;
    local_20[0] = 0;
    local_20[2] = 0;
    FUN_181347060(uVar3,param_5,2,&local_40,local_20);
    local_20[0] = 0;
    param_4 = param_6;
  }
  puVar4 = local_20;
  local_30[0] = 0x1b;
  local_30[1] = 0;
  local_30[2] = 0;
  puVar5 = local_30;
LAB_1813140da:
  local_20[1] = 0;
  local_20[2] = 0;
  FUN_181347060(uVar3,param_4,0,puVar5,puVar4);
  return uVar3;
}



############ FUN_ 1812fa9c0 size=413 ############

void FUN_1812fa9c0(undefined8 param_1,longlong param_2)

{
  int *piVar1;
  byte bVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  longlong *plVar5;
  byte *pbVar6;
  int iVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined8 *local_res10;
  double local_res18;
  
  fVar9 = (float)*(int *)(param_2 + 0x2c) * DAT_1824c3e10;
  if (DAT_1824c4418 <= fVar9) {
    fVar9 = DAT_1824c4418;
  }
  fVar10 = fVar9 * DAT_1824c3ee0;
  uVar4 = FUN_1811316e0(0x40);
  fVar8 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar9) && (fVar8 = DAT_1824c45c8, fVar9 <= DAT_1824c45c8)) {
    fVar8 = fVar9;
  }
  local_res10 = (undefined8 *)FUN_1804a2b80(uVar4,0,fVar8);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  uVar3 = *(undefined4 *)(param_2 + 0x2c);
  plVar5 = (longlong *)FUN_181252280(&local_res10);
  fVar9 = (float)(**(code **)(*plVar5 + 0x28))(plVar5,param_2 + 0x158);
  if (*(float *)(local_res10 + 6) != 0.0) {
    pbVar6 = *(byte **)(param_2 + 0x158);
    iVar7 = 0;
LAB_1812faa86:
    do {
      bVar2 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar6 & 0xc0) == 0x80) {
          do {
            pbVar6 = pbVar6 + 1;
          } while ((*pbVar6 & 0xc0) == 0x80);
          iVar7 = iVar7 + 1;
          goto LAB_1812faa86;
        }
      }
      else if (bVar2 == 0) goto LAB_1812faabc;
      iVar7 = iVar7 + 1;
    } while( true );
  }
LAB_1812faacc:
  fVar9 = ceilf(fVar9 * *(float *)(local_res10 + 5) * *(float *)((longlong)local_res10 + 0x2c));
  local_res18 = (double)fVar10 + DAT_1824c4520;
  FUN_18134bfe0(param_2,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),
                local_res18._0_4_ + 0xe + (int)fVar9,uVar3);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  return;
LAB_1812faabc:
  fVar9 = fVar9 + (float)iVar7 * *(float *)(local_res10 + 6);
  goto LAB_1812faacc;
}



############ FUN_ 1812fb440 size=910 ############

void FUN_1812fb440(longlong param_1,longlong param_2,longlong param_3,int param_4,int param_5,
                  int param_6,int param_7,longlong *param_8,char param_9)

{
  int *piVar1;
  byte bVar2;
  longlong lVar3;
  char cVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined4 *puVar9;
  byte *pbVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  float fVar15;
  float fVar16;
  undefined4 uVar17;
  undefined8 *local_98;
  undefined4 local_90;
  undefined4 local_8c;
  undefined1 local_88 [4];
  undefined4 local_84;
  undefined8 *local_80;
  undefined8 local_78;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined1 local_58 [32];
  
  local_78 = 0xfffffffffffffffe;
  if (param_4 * param_5 == 0) {
    return;
  }
  cVar4 = *(char *)(param_2 + 0xb2);
  FUN_181296c00(param_3);
  puVar6 = (undefined8 *)
           (**(code **)(**(longlong **)(param_3 + 8) + 0x58))(*(longlong **)(param_3 + 8),local_58);
  local_68 = *puVar6;
  uStack_60 = puVar6[1];
  (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_68,0);
  fVar16 = (float)param_5 * DAT_1824c3ddc;
  uVar7 = FUN_1811316e0(0x40);
  fVar15 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar16) && (fVar15 = DAT_1824c45c8, fVar16 <= DAT_1824c45c8)) {
    fVar15 = fVar16;
  }
  local_98 = (undefined8 *)FUN_1804a2b80(uVar7,0,fVar15);
  if (local_98 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_98 + 1) = *(int *)(local_98 + 1) + 1;
    UNLOCK();
  }
  if (*(char *)(param_3 + 0x10) != '\0') {
    *(undefined1 *)(param_3 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_3 + 8) + 0xd0))(*(longlong **)(param_3 + 8),&local_98);
  puVar6 = (undefined8 *)(param_2 + 8);
  local_80 = puVar6;
  plVar8 = (longlong *)FUN_181252280(&local_98);
  fVar15 = (float)(**(code **)(*plVar8 + 0x28))(plVar8,puVar6);
  iVar14 = 0;
  if (*(float *)(local_98 + 6) != 0.0) {
    pbVar10 = (byte *)*puVar6;
    iVar12 = iVar14;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar10;
        pbVar10 = pbVar10 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar10 & 0xc0) != 0x80) goto LAB_1812fb5c7;
        do {
          pbVar10 = pbVar10 + 1;
        } while ((*pbVar10 & 0xc0) == 0x80);
        iVar12 = iVar12 + 1;
      }
      if (bVar2 == 0) break;
LAB_1812fb5c7:
      iVar12 = iVar12 + 1;
    }
    fVar15 = fVar15 + (float)iVar12 * *(float *)(local_98 + 6);
  }
  fVar16 = *(float *)(local_98 + 5);
  fVar15 = ceilf(fVar16 * fVar15 * *(float *)((longlong)local_98 + 0x2c));
  iVar12 = 0;
  if (param_8 != (longlong *)0x0) {
    iVar12 = (int)fVar16;
    lVar3 = *param_8;
    iVar13 = 0;
    if (lVar3 != 0) {
      iVar13 = *(int *)(lVar3 + 0x14);
      iVar14 = *(int *)(lVar3 + 0x18);
    }
    iVar14 = (iVar13 * iVar12) / iVar14 + 4;
  }
  iVar13 = param_7;
  if (iVar14 + (int)fVar15 < param_7) {
    iVar13 = iVar14 + (int)fVar15;
  }
  iVar11 = param_6;
  if ((param_9 == '\0') && (iVar5 = (param_4 - iVar13) / 2, param_6 < iVar5)) {
    iVar11 = iVar5;
  }
  if (param_6 + param_7 < iVar11 + iVar13) {
    iVar11 = (param_6 - iVar13) + param_7;
  }
  if (param_8 != (longlong *)0x0) {
    uVar17 = DAT_1824c3db8;
    if (cVar4 != '\0') {
      uVar17 = DAT_1824c3ea4;
    }
    if (*(char *)(param_3 + 0x10) != '\0') {
      *(undefined1 *)(param_3 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_3 + 8) + 0x90))(*(longlong **)(param_3 + 8),uVar17);
    local_90 = 0x24;
    FUN_181294760(param_3,param_8,iVar11,(param_5 - iVar12) / 2,iVar14,iVar12,0x24);
    iVar11 = iVar11 + iVar14;
    iVar13 = iVar13 - iVar14;
  }
  cVar4 = FUN_181341a70(param_2,0x1005701);
  if ((cVar4 == '\0') && (cVar4 = FUN_181315bd0(param_1 + -0x68,0x1005701), cVar4 == '\0')) {
    uVar17 = *(undefined4 *)(param_1 + 0xf0);
    local_8c = uVar17;
  }
  else {
    puVar9 = (undefined4 *)FUN_18134a8d0(param_2,local_88,0x1005701,0);
    uVar17 = *puVar9;
  }
  FUN_181296c00(param_3,uVar17);
  local_84 = 0x21;
  FUN_1812962a0(param_3,local_80,iVar11,0,iVar13,param_5,0x21,1);
  if (local_98 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_98 + 1);
    iVar14 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar14 == 1) {
      (**(code **)*local_98)(local_98,1);
    }
  }
  return;
}



############ FUN_ 1812fb8e0 size=1196 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fb8e0(undefined8 param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  undefined8 in_stack_fffffffffffffe78;
  undefined4 uVar6;
  void *local_160;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 uStack_148;
  undefined1 local_140;
  void *local_138;
  ulonglong local_130;
  undefined4 local_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  undefined4 uStack_11c;
  undefined1 local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  uVar2 = DAT_1824c3d04;
  uVar6 = (undefined4)((ulonglong)in_stack_fffffffffffffe78 >> 0x20);
  local_e0 = 0xfffffffffffffffe;
  local_160 = (void *)0x0;
  local_158 = 0;
  local_150 = 0;
  uStack_148 = 0;
  local_140 = 1;
  if (param_2 == 4) {
    local_88 = _DAT_1824c4b60;
    uStack_84 = _UNK_1824c4b64;
    uStack_80 = _UNK_1824c4b68;
    uStack_7c = _UNK_1824c4b6c;
    local_d8 = _DAT_1824c4b60;
    uStack_d4 = _UNK_1824c4b64;
    uStack_d0 = _UNK_1824c4b68;
    uStack_cc = _UNK_1824c4b6c;
    FUN_18129c940(&local_160,&local_d8,DAT_1824c3d04);
    local_78 = _DAT_1824c4b30;
    uStack_74 = _UNK_1824c4b34;
    uStack_70 = _UNK_1824c4b38;
    uStack_6c = _UNK_1824c4b3c;
    local_c8 = _DAT_1824c4b30;
    uStack_c4 = _UNK_1824c4b34;
    uStack_c0 = _UNK_1824c4b38;
    uStack_bc = _UNK_1824c4b3c;
    FUN_18129c940(&local_160,&local_c8,uVar2);
    puVar4 = (undefined8 *)FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_110,"close");
    FUN_1813379d0(puVar4,&local_110);
    *puVar4 = juce::LookAndFeel_V4_DocumentWindowButton::vftable;
    puVar4[0x16] = juce::LookAndFeel_V4_DocumentWindowButton::vftable;
    *(undefined4 *)(puVar4 + 0x39) = 0xff9a131d;
    FUN_1804ab000(puVar4 + 0x3a,&local_160);
    *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_150;
    *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_150._4_4_;
    *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_148;
    *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_148._4_4_;
    *(undefined1 *)(puVar4 + 0x3e) = local_140;
    FUN_1804ab000(puVar4 + 0x3f,&local_160);
    puVar4[0x41] = local_150;
    puVar4[0x42] = uStack_148;
    *(undefined1 *)(puVar4 + 0x43) = local_140;
  }
  else {
    if (param_2 != 1) {
      if (param_2 == 2) {
        local_58 = _DAT_1824c4b50;
        uStack_54 = _UNK_1824c4b54;
        uStack_50 = _UNK_1824c4b58;
        uStack_4c = _UNK_1824c4b5c;
        local_a8 = _DAT_1824c4b50;
        uStack_a4 = _UNK_1824c4b54;
        uStack_a0 = _UNK_1824c4b58;
        uStack_9c = _UNK_1824c4b5c;
        FUN_18129c940(&local_160,&local_a8,DAT_1824c3d04);
        local_48 = _DAT_1824c4ad0;
        uStack_44 = _UNK_1824c4ad4;
        uStack_40 = _UNK_1824c4ad8;
        uStack_3c = _UNK_1824c4adc;
        local_98 = _DAT_1824c4ad0;
        uStack_94 = _UNK_1824c4ad4;
        uStack_90 = _UNK_1824c4ad8;
        uStack_8c = _UNK_1824c4adc;
        FUN_18129c940(&local_160,&local_98,uVar2);
        uVar3 = DAT_1824c44dc;
        uVar2 = DAT_1824c449c;
        local_138 = (void *)0x0;
        local_130 = 0;
        local_118 = 1;
        uStack_124 = 0x42340000;
        local_128 = 0x42340000;
        uStack_11c = 0x42c80000;
        uStack_120 = 0x42c80000;
        FUN_1804b02a0(&local_138,&DAT_1821df344,DAT_1824c449c,DAT_1824c44dc);
        FUN_18129ddd0(&local_138,0,uVar3);
        FUN_18129ddd0(&local_138,0,0);
        FUN_18129ddd0(&local_138,uVar3,0);
        FUN_18129ddd0(&local_138,uVar3,uVar2);
        FUN_18129d850(&local_138,uVar2,uVar2,uVar3,CONCAT44(uVar6,uVar3));
        local_f8 = _DAT_1824c4780;
        uStack_f0 = _UNK_1824c4788;
        local_e8 = 0x3f800000;
        FUN_181297840(DAT_1824c4478,0,0,&local_138,&local_138,&local_f8,DAT_1824c3ea4);
        puVar4 = (undefined8 *)FUN_1811316e0(0x220);
        FUN_18049c4e0(&local_100,"maximise");
        FUN_1813379d0(puVar4,&local_100);
        *puVar4 = juce::LookAndFeel_V4_DocumentWindowButton::vftable;
        puVar4[0x16] = juce::LookAndFeel_V4_DocumentWindowButton::vftable;
        *(undefined4 *)(puVar4 + 0x39) = 0xff0a830a;
        FUN_1804ab000(puVar4 + 0x3a,&local_160);
        *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_150;
        *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_150._4_4_;
        *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_148;
        *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_148._4_4_;
        *(undefined1 *)(puVar4 + 0x3e) = local_140;
        FUN_1804ab000(puVar4 + 0x3f,&local_138);
        puVar4[0x41] = CONCAT44(uStack_124,local_128);
        puVar4[0x42] = CONCAT44(uStack_11c,uStack_120);
        *(undefined1 *)(puVar4 + 0x43) = local_118;
        puVar5 = (uint *)(local_100 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        local_130 = local_130 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
        free(local_138);
      }
      goto LAB_1812fbd89;
    }
    local_68 = _DAT_1824c4ad0;
    uStack_64 = _UNK_1824c4ad4;
    uStack_60 = _UNK_1824c4ad8;
    uStack_5c = _UNK_1824c4adc;
    local_b8 = _DAT_1824c4ad0;
    uStack_b4 = _UNK_1824c4ad4;
    uStack_b0 = _UNK_1824c4ad8;
    uStack_ac = _UNK_1824c4adc;
    FUN_18129c940(&local_160,&local_b8,DAT_1824c3d04);
    puVar4 = (undefined8 *)FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_108,"minimise");
    FUN_1813379d0(puVar4,&local_108);
    *puVar4 = juce::LookAndFeel_V4_DocumentWindowButton::vftable;
    puVar4[0x16] = juce::LookAndFeel_V4_DocumentWindowButton::vftable;
    *(undefined4 *)(puVar4 + 0x39) = 0xffaa8811;
    FUN_1804ab000(puVar4 + 0x3a,&local_160);
    *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_150;
    *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_150._4_4_;
    *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_148;
    *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_148._4_4_;
    *(undefined1 *)(puVar4 + 0x3e) = local_140;
    FUN_1804ab000(puVar4 + 0x3f,&local_160);
    puVar4[0x41] = local_150;
    puVar4[0x42] = uStack_148;
    *(undefined1 *)(puVar4 + 0x43) = local_140;
    local_110 = local_108;
  }
  puVar5 = (uint *)(local_110 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
LAB_1812fbd89:
                    /* WARNING: Subroutine does not return */
  free(local_160);
}



############ FUN_ 1812fc3f0 size=1196 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fc3f0(undefined8 param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  undefined8 in_stack_fffffffffffffe78;
  undefined4 uVar6;
  void *local_160;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 uStack_148;
  undefined1 local_140;
  void *local_138;
  ulonglong local_130;
  undefined4 local_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  undefined4 uStack_11c;
  undefined1 local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  uVar3 = DAT_1824c3d64;
  uVar2 = DAT_1824c3d3c;
  uVar6 = (undefined4)((ulonglong)in_stack_fffffffffffffe78 >> 0x20);
  local_e0 = 0xfffffffffffffffe;
  local_160 = (void *)0x0;
  local_158 = 0;
  local_150 = 0;
  uStack_148 = 0;
  local_140 = 1;
  if (param_2 == 4) {
    local_88 = _DAT_1824c4b60;
    uStack_84 = _UNK_1824c4b64;
    uStack_80 = _UNK_1824c4b68;
    uStack_7c = _UNK_1824c4b6c;
    local_d8 = _DAT_1824c4b60;
    uStack_d4 = _UNK_1824c4b64;
    uStack_d0 = _UNK_1824c4b68;
    uStack_cc = _UNK_1824c4b6c;
    FUN_18129c940(&local_160,&local_d8,DAT_1824c3d64);
    local_78 = _DAT_1824c4b30;
    uStack_74 = _UNK_1824c4b34;
    uStack_70 = _UNK_1824c4b38;
    uStack_6c = _UNK_1824c4b3c;
    local_c8 = _DAT_1824c4b30;
    uStack_c4 = _UNK_1824c4b34;
    uStack_c0 = _UNK_1824c4b38;
    uStack_bc = _UNK_1824c4b3c;
    FUN_18129c940(&local_160,&local_c8,uVar3);
    puVar4 = (undefined8 *)FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_110,"close");
    FUN_1813379d0(puVar4,&local_110);
    *puVar4 = juce::LookAndFeel_V3_DocumentWindowButton::vftable;
    puVar4[0x16] = juce::LookAndFeel_V3_DocumentWindowButton::vftable;
    *(undefined4 *)(puVar4 + 0x39) = 0xffdd1100;
    FUN_1804ab000(puVar4 + 0x3a,&local_160);
    *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_150;
    *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_150._4_4_;
    *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_148;
    *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_148._4_4_;
    *(undefined1 *)(puVar4 + 0x3e) = local_140;
    FUN_1804ab000(puVar4 + 0x3f,&local_160);
    puVar4[0x41] = local_150;
    puVar4[0x42] = uStack_148;
    *(undefined1 *)(puVar4 + 0x43) = local_140;
  }
  else {
    if (param_2 != 1) {
      if (param_2 == 2) {
        local_58 = _DAT_1824c4b50;
        uStack_54 = _UNK_1824c4b54;
        uStack_50 = _UNK_1824c4b58;
        uStack_4c = _UNK_1824c4b5c;
        local_a8 = _DAT_1824c4b50;
        uStack_a4 = _UNK_1824c4b54;
        uStack_a0 = _UNK_1824c4b58;
        uStack_9c = _UNK_1824c4b5c;
        FUN_18129c940(&local_160,&local_a8,DAT_1824c3d3c);
        local_48 = _DAT_1824c4ad0;
        uStack_44 = _UNK_1824c4ad4;
        uStack_40 = _UNK_1824c4ad8;
        uStack_3c = _UNK_1824c4adc;
        local_98 = _DAT_1824c4ad0;
        uStack_94 = _UNK_1824c4ad4;
        uStack_90 = _UNK_1824c4ad8;
        uStack_8c = _UNK_1824c4adc;
        FUN_18129c940(&local_160,&local_98,uVar2);
        uVar3 = DAT_1824c44dc;
        uVar2 = DAT_1824c449c;
        local_138 = (void *)0x0;
        local_130 = 0;
        local_118 = 1;
        uStack_124 = 0x42340000;
        local_128 = 0x42340000;
        uStack_11c = 0x42c80000;
        uStack_120 = 0x42c80000;
        FUN_1804b02a0(&local_138,&DAT_1821df344,DAT_1824c449c,DAT_1824c44dc);
        FUN_18129ddd0(&local_138,0,uVar3);
        FUN_18129ddd0(&local_138,0,0);
        FUN_18129ddd0(&local_138,uVar3,0);
        FUN_18129ddd0(&local_138,uVar3,uVar2);
        FUN_18129d850(&local_138,uVar2,uVar2,uVar3,CONCAT44(uVar6,uVar3));
        local_f8 = _DAT_1824c4780;
        uStack_f0 = _UNK_1824c4788;
        local_e8 = 0x3f800000;
        FUN_181297840(DAT_1824c4478,0,0,&local_138,&local_138,&local_f8,DAT_1824c3ea4);
        puVar4 = (undefined8 *)FUN_1811316e0(0x220);
        FUN_18049c4e0(&local_100,"maximise");
        FUN_1813379d0(puVar4,&local_100);
        *puVar4 = juce::LookAndFeel_V3_DocumentWindowButton::vftable;
        puVar4[0x16] = juce::LookAndFeel_V3_DocumentWindowButton::vftable;
        *(undefined4 *)(puVar4 + 0x39) = 0xff119911;
        FUN_1804ab000(puVar4 + 0x3a,&local_160);
        *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_150;
        *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_150._4_4_;
        *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_148;
        *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_148._4_4_;
        *(undefined1 *)(puVar4 + 0x3e) = local_140;
        FUN_1804ab000(puVar4 + 0x3f,&local_138);
        puVar4[0x41] = CONCAT44(uStack_124,local_128);
        puVar4[0x42] = CONCAT44(uStack_11c,uStack_120);
        *(undefined1 *)(puVar4 + 0x43) = local_118;
        puVar5 = (uint *)(local_100 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        local_130 = local_130 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
        free(local_138);
      }
      goto LAB_1812fc899;
    }
    local_68 = _DAT_1824c4ad0;
    uStack_64 = _UNK_1824c4ad4;
    uStack_60 = _UNK_1824c4ad8;
    uStack_5c = _UNK_1824c4adc;
    local_b8 = _DAT_1824c4ad0;
    uStack_b4 = _UNK_1824c4ad4;
    uStack_b0 = _UNK_1824c4ad8;
    uStack_ac = _UNK_1824c4adc;
    FUN_18129c940(&local_160,&local_b8,DAT_1824c3d3c);
    puVar4 = (undefined8 *)FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_108,"minimise");
    FUN_1813379d0(puVar4,&local_108);
    *puVar4 = juce::LookAndFeel_V3_DocumentWindowButton::vftable;
    puVar4[0x16] = juce::LookAndFeel_V3_DocumentWindowButton::vftable;
    *(undefined4 *)(puVar4 + 0x39) = 0xffaa8811;
    FUN_1804ab000(puVar4 + 0x3a,&local_160);
    *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_150;
    *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_150._4_4_;
    *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_148;
    *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_148._4_4_;
    *(undefined1 *)(puVar4 + 0x3e) = local_140;
    FUN_1804ab000(puVar4 + 0x3f,&local_160);
    puVar4[0x41] = local_150;
    puVar4[0x42] = uStack_148;
    *(undefined1 *)(puVar4 + 0x43) = local_140;
    local_110 = local_108;
  }
  puVar5 = (uint *)(local_110 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
LAB_1812fc899:
                    /* WARNING: Subroutine does not return */
  free(local_160);
}



############ FUN_ 1812ff3e0 size=501 ############

void FUN_1812ff3e0(longlong param_1,undefined4 param_2,float param_3,undefined4 param_4,
                  undefined8 param_5)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  byte bVar4;
  longlong *plVar5;
  char cVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  byte *pbVar9;
  uint *_Memory;
  int iVar10;
  bool bVar11;
  float fVar12;
  longlong local_res8;
  undefined4 local_res18 [4];
  longlong local_88 [2];
  undefined1 *local_78;
  undefined4 local_70;
  undefined4 local_6c;
  undefined8 local_68;
  void *local_60;
  undefined8 local_58;
  
  local_88[1] = 0xfffffffffffffffe;
  param_3 = param_3 * DAT_1824c3d8c;
  uVar7 = FUN_1811316e0(0x40);
  fVar12 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= param_3) && (fVar12 = DAT_1824c45c8, param_3 <= DAT_1824c45c8)) {
    fVar12 = param_3;
  }
  local_res8 = FUN_1804a2b80(uVar7,0,fVar12);
  if (local_res8 != 0) {
    LOCK();
    *(int *)(local_res8 + 8) = *(int *)(local_res8 + 8) + 1;
    UNLOCK();
  }
  iVar10 = 0;
  bVar11 = DAT_182673708 == param_1;
  FUN_181252760(&local_res8);
  *(bool *)(local_res8 + 0x38) = bVar11;
  plVar5 = *(longlong **)(local_res8 + 0x10);
  if ((plVar5 != (longlong *)0x0) &&
     (*(code **)(*plVar5 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar6 = (**(code **)(*plVar5 + 8))(plVar5,&local_res8);
    if (cVar6 == '\0') {
      puVar8 = *(undefined8 **)(local_res8 + 0x10);
      *(undefined8 *)(local_res8 + 0x10) = 0;
      if (puVar8 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar8 + 1);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*puVar8)(puVar8,1);
        }
      }
    }
  }
  local_78 = &DAT_1821dbf98;
  local_70 = 0;
  local_68 = 1;
  local_60 = (void *)0x0;
  local_58 = 0;
  local_6c = 0x24;
  puVar8 = (undefined8 *)FUN_181248e40(param_1 + 0x158,local_88);
  local_res18[0] = param_4;
  FUN_181232d30(&local_78,puVar8);
  pbVar9 = (byte *)*puVar8;
LAB_1812ff500:
  do {
    bVar4 = *pbVar9;
    pbVar9 = pbVar9 + 1;
    if ((char)bVar4 < '\0') {
      if ((*pbVar9 & 0xc0) == 0x80) {
        do {
          pbVar9 = pbVar9 + 1;
        } while ((*pbVar9 & 0xc0) == 0x80);
        iVar10 = iVar10 + 1;
        goto LAB_1812ff500;
      }
    }
    else if (bVar4 == 0) {
      FUN_1812554b0(&local_60,iVar10,&local_res8,local_res18);
      _Memory = (uint *)(local_88[0] + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      FUN_18124e420(param_5,&local_78,param_2,DAT_1824c4610);
      FUN_1804aed10(&local_60);
                    /* WARNING: Subroutine does not return */
      free(local_60);
    }
    iVar10 = iVar10 + 1;
  } while( true );
}



############ FUN_ 181300d60 size=1535 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181300d60(undefined8 param_1,int param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  bool bVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  char cVar8;
  longlong lVar9;
  undefined8 uVar10;
  uint *puVar11;
  undefined8 in_stack_fffffffffffffad8;
  undefined4 uVar12;
  undefined4 local_4f4;
  undefined4 local_4f0;
  longlong local_4e8;
  void *local_4e0;
  undefined8 local_4d8;
  undefined8 local_4d0;
  undefined8 uStack_4c8;
  undefined1 local_4c0;
  longlong local_4b8;
  longlong local_4b0 [2];
  undefined4 uStack_4a0;
  undefined4 uStack_49c;
  undefined8 local_498;
  undefined4 uStack_490;
  undefined4 uStack_48c;
  int local_488;
  undefined8 local_480;
  undefined8 uStack_478;
  undefined8 local_470;
  undefined8 uStack_468;
  undefined4 local_460;
  undefined4 uStack_45c;
  int local_458;
  undefined8 local_450;
  undefined8 uStack_448;
  undefined8 local_440;
  undefined8 uStack_438;
  undefined4 local_430;
  undefined4 uStack_42c;
  undefined8 local_428;
  undefined4 local_418;
  undefined4 uStack_414;
  undefined4 uStack_410;
  undefined4 uStack_40c;
  undefined4 local_408;
  undefined4 uStack_404;
  undefined4 uStack_400;
  undefined4 uStack_3fc;
  undefined4 local_3f8;
  undefined4 uStack_3f4;
  undefined4 uStack_3f0;
  undefined4 uStack_3ec;
  undefined4 local_3e8;
  undefined4 uStack_3e4;
  undefined4 uStack_3e0;
  undefined4 uStack_3dc;
  undefined4 local_3d8;
  undefined4 uStack_3d4;
  undefined4 uStack_3d0;
  undefined4 uStack_3cc;
  undefined4 local_3c8;
  undefined4 uStack_3c4;
  undefined4 uStack_3c0;
  undefined4 uStack_3bc;
  undefined4 local_3b8;
  undefined4 uStack_3b4;
  undefined4 uStack_3b0;
  undefined4 uStack_3ac;
  undefined4 local_3a8;
  undefined4 uStack_3a4;
  undefined4 uStack_3a0;
  undefined4 uStack_39c;
  undefined4 local_398;
  undefined4 uStack_394;
  undefined4 uStack_390;
  undefined4 uStack_38c;
  undefined4 local_388;
  undefined4 uStack_384;
  undefined4 uStack_380;
  undefined4 uStack_37c;
  undefined4 local_378;
  undefined4 uStack_374;
  undefined4 uStack_370;
  undefined4 uStack_36c;
  undefined4 local_368;
  undefined4 uStack_364;
  undefined4 uStack_360;
  undefined4 uStack_35c;
  undefined **local_358 [5];
  undefined4 local_330;
  undefined4 local_32c;
  undefined1 local_278 [16];
  undefined4 local_268;
  undefined4 uStack_264;
  undefined4 uStack_260;
  undefined4 uStack_25c;
  undefined1 local_258;
  int local_228;
  longlong local_220;
  longlong local_218;
  undefined8 local_210;
  undefined8 uStack_208;
  undefined8 local_200;
  undefined **local_1c8 [5];
  undefined4 local_1a0;
  undefined4 local_19c;
  undefined1 local_e8 [16];
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined1 local_c8;
  int local_98;
  longlong local_90;
  longlong local_88;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  
  uVar5 = DAT_1824c3d64;
  uVar4 = DAT_1824c3d3c;
  uVar12 = (undefined4)((ulonglong)in_stack_fffffffffffffad8 >> 0x20);
  local_428 = 0xfffffffffffffffe;
  local_4e0 = (void *)0x0;
  local_4d8 = 0;
  local_4d0 = 0;
  uStack_4c8 = 0;
  local_4c0 = 1;
  if (param_2 == 4) {
    local_3a8 = _DAT_1824c4b60;
    uStack_3a4 = _UNK_1824c4b64;
    uStack_3a0 = _UNK_1824c4b68;
    uStack_39c = _UNK_1824c4b6c;
    local_418 = _DAT_1824c4b60;
    uStack_414 = _UNK_1824c4b64;
    uStack_410 = _UNK_1824c4b68;
    uStack_40c = _UNK_1824c4b6c;
    FUN_18129c940(&local_4e0,&local_418,DAT_1824c3d64);
    local_398 = _DAT_1824c4b30;
    uStack_394 = _UNK_1824c4b34;
    uStack_390 = _UNK_1824c4b38;
    uStack_38c = _UNK_1824c4b3c;
    local_408 = _DAT_1824c4b30;
    uStack_404 = _UNK_1824c4b34;
    uStack_400 = _UNK_1824c4b38;
    uStack_3fc = _UNK_1824c4b3c;
    FUN_18129c940(&local_4e0,&local_408,uVar5);
    lVar9 = FUN_1811316e0(0x240);
    local_4e8 = lVar9;
    FUN_18049c4e0(&local_4b8,"close");
    uVar10 = FUN_181333fa0(lVar9,&local_4b8,0x7fff3333,0xd7ff3333,CONCAT44(uVar12,0xf7ff3333));
    puVar11 = (uint *)(local_4b8 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    FUN_181333cd0(uVar10,&local_4e0,1);
  }
  else if (param_2 == 1) {
    local_388 = _DAT_1824c4ad0;
    uStack_384 = _UNK_1824c4ad4;
    uStack_380 = _UNK_1824c4ad8;
    uStack_37c = _UNK_1824c4adc;
    local_3f8 = _DAT_1824c4ad0;
    uStack_3f4 = _UNK_1824c4ad4;
    uStack_3f0 = _UNK_1824c4ad8;
    uStack_3ec = _UNK_1824c4adc;
    FUN_18129c940(&local_4e0,&local_3f8,DAT_1824c3d3c);
    uVar10 = FUN_1811316e0(0x220);
    FUN_18049c4e0(local_4b0,"minimise");
    uVar10 = FUN_181335a10(uVar10,local_4b0,0);
    puVar11 = (uint *)(local_4b0[0] + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    FUN_181330640(local_358);
    local_358[0] = juce::DrawablePath::vftable;
    FUN_1804aaf40(local_278,&local_4e0);
    local_268 = (undefined4)local_4d0;
    uStack_264 = local_4d0._4_4_;
    uStack_260 = (undefined4)uStack_4c8;
    uStack_25c = uStack_4c8._4_4_;
    local_258 = local_4c0;
    FUN_181330000(local_358);
    uVar7 = _UNK_1824c4788;
    uVar6 = _DAT_1824c4780;
    local_4f4 = CONCAT13(0x4c,(int3)DAT_18262b5b8);
    local_488 = local_4f4;
    local_480 = 0;
    uStack_478 = 0;
    local_470 = _DAT_1824c4780;
    uStack_468 = _UNK_1824c4788;
    local_460 = DAT_1824c3ea4;
    uStack_45c = 0;
    if (((local_228 != local_4f4) || (local_218 != 0)) ||
       ((cVar8 = FUN_1812a0bf0(&local_210,&local_470), cVar8 == '\0' ||
        (bVar3 = true, local_220 != 0)))) {
      bVar3 = false;
    }
    if (!bVar3) {
      local_228 = local_4f4;
      lVar9 = FUN_1804b0230(0);
      if (local_220 != 0) {
        *(undefined4 *)(local_220 + 0x24) = 0;
        puVar1 = (undefined8 *)(local_220 + 0x18);
        local_220 = lVar9;
                    /* WARNING: Subroutine does not return */
        free((void *)*puVar1);
      }
      local_220 = lVar9;
      FUN_1812911c0(&local_218,&uStack_478);
      local_210 = uVar6;
      uStack_208 = uVar7;
      local_200 = CONCAT44(uStack_45c,local_460);
      local_4b0[1] = 0;
      uStack_4a0 = local_330;
      uStack_49c = local_32c;
      local_3e8 = 0;
      uStack_3e4 = 0;
      uStack_3e0 = local_330;
      uStack_3dc = local_32c;
      FUN_181342870(local_358,&local_3e8,1);
    }
    FUN_1813355a0(uVar10,local_358,0,0,0,0,0,0);
    local_358[0] = juce::DrawablePath::vftable;
    FUN_1813304a0(local_358);
  }
  else if (param_2 == 2) {
    local_378 = _DAT_1824c4b50;
    uStack_374 = _UNK_1824c4b54;
    uStack_370 = _UNK_1824c4b58;
    uStack_36c = _UNK_1824c4b5c;
    local_3d8 = _DAT_1824c4b50;
    uStack_3d4 = _UNK_1824c4b54;
    uStack_3d0 = _UNK_1824c4b58;
    uStack_3cc = _UNK_1824c4b5c;
    FUN_18129c940(&local_4e0,&local_3d8,DAT_1824c3d3c);
    local_368 = _DAT_1824c4ad0;
    uStack_364 = _UNK_1824c4ad4;
    uStack_360 = _UNK_1824c4ad8;
    uStack_35c = _UNK_1824c4adc;
    local_3c8 = _DAT_1824c4ad0;
    uStack_3c4 = _UNK_1824c4ad4;
    uStack_3c0 = _UNK_1824c4ad8;
    uStack_3bc = _UNK_1824c4adc;
    FUN_18129c940(&local_4e0,&local_3c8,uVar4);
    uVar10 = FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_4e8,"maximise");
    uVar10 = FUN_181335a10(uVar10,&local_4e8,0);
    puVar11 = (uint *)(local_4e8 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    FUN_181330640(local_1c8);
    local_1c8[0] = juce::DrawablePath::vftable;
    FUN_1804aaf40(local_e8,&local_4e0);
    local_d8 = (undefined4)local_4d0;
    uStack_d4 = local_4d0._4_4_;
    uStack_d0 = (undefined4)uStack_4c8;
    uStack_cc = uStack_4c8._4_4_;
    local_c8 = local_4c0;
    FUN_181330000(local_1c8);
    uVar7 = _UNK_1824c4788;
    uVar6 = _DAT_1824c4780;
    local_4f0 = CONCAT13(0x4c,(int3)DAT_18262b5b8);
    local_458 = local_4f0;
    local_450 = 0;
    uStack_448 = 0;
    local_440 = _DAT_1824c4780;
    uStack_438 = _UNK_1824c4788;
    local_430 = DAT_1824c3ea4;
    uStack_42c = 0;
    if ((((local_98 != local_4f0) || (local_88 != 0)) ||
        (cVar8 = FUN_1812a0bf0(&local_80,&local_440), cVar8 == '\0')) ||
       (bVar3 = true, local_90 != 0)) {
      bVar3 = false;
    }
    if (!bVar3) {
      local_98 = local_4f0;
      lVar9 = FUN_1804b0230(0);
      if (local_90 != 0) {
        *(undefined4 *)(local_90 + 0x24) = 0;
        puVar1 = (undefined8 *)(local_90 + 0x18);
        local_90 = lVar9;
                    /* WARNING: Subroutine does not return */
        free((void *)*puVar1);
      }
      local_90 = lVar9;
      FUN_1812911c0(&local_88,&uStack_448);
      local_80 = uVar6;
      uStack_78 = uVar7;
      local_70 = CONCAT44(uStack_42c,local_430);
      local_498 = 0;
      uStack_490 = local_1a0;
      uStack_48c = local_19c;
      local_3b8 = 0;
      uStack_3b4 = 0;
      uStack_3b0 = local_1a0;
      uStack_3ac = local_19c;
      FUN_181342870(local_1c8,&local_3b8,1);
    }
    FUN_1813355a0(uVar10,local_1c8,0,0,0,0,0,0);
    local_1c8[0] = juce::DrawablePath::vftable;
    FUN_1813304a0(local_1c8);
  }
                    /* WARNING: Subroutine does not return */
  free(local_4e0);
}



############ FUN_ 181301510 size=261 ############

undefined8 FUN_181301510(undefined8 param_1,undefined8 param_2,char param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  uint *_Memory;
  uint uVar3;
  undefined4 local_res18;
  undefined4 local_28;
  longlong local_20;
  longlong local_18 [2];
  
  local_18[1] = 0xfffffffffffffffe;
  if (param_3 == '\0') {
    lVar1 = FUN_1811316e0(0x1f8);
    local_20 = lVar1;
    FUN_18049c4e0(local_18,&DAT_1821e2e04);
    local_28 = CONCAT13(0xcc,(int3)DAT_18262b5a8);
    uVar2 = FUN_181337e30(lVar1,local_18,DAT_1824c3d3c,local_28);
    _Memory = (uint *)(local_18[0] + -0x10);
    uVar3 = *_Memory;
  }
  else {
    lVar1 = FUN_1811316e0(0x1f8);
    local_18[0] = lVar1;
    FUN_18049c4e0(&local_20,&DAT_1821e2e14);
    local_res18 = CONCAT13(0xcc,(int3)DAT_18262b5a8);
    uVar2 = FUN_181337e30(lVar1,&local_20,DAT_1824c3e10,local_res18);
    _Memory = (uint *)(local_20 + -0x10);
    uVar3 = *_Memory;
  }
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return uVar2;
}



############ FUN_ 181306490 size=64 ############

longlong * FUN_181306490(undefined8 param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2b80(uVar1,0,DAT_1824c4424);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 181306f70 size=738 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181306f70(void)

{
  uint uVar1;
  bool bVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  char cVar5;
  undefined8 *puVar6;
  longlong lVar7;
  uint *_Memory;
  undefined4 local_res10;
  longlong local_res20;
  undefined8 in_stack_fffffffffffffd78;
  undefined4 uVar8;
  void *local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined8 uStack_230;
  undefined1 local_228;
  int local_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined4 local_1f8;
  undefined4 uStack_1f4;
  undefined8 local_1f0;
  undefined8 local_1e8;
  undefined8 uStack_1e0;
  undefined4 local_1d8;
  undefined4 uStack_1d4;
  undefined4 uStack_1d0;
  undefined4 uStack_1cc;
  undefined **local_1c8 [5];
  undefined4 local_1a0;
  undefined4 local_19c;
  undefined1 local_e8 [16];
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined1 local_c8;
  int local_98;
  longlong local_90;
  longlong local_88;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  
  uVar8 = (undefined4)((ulonglong)in_stack_fffffffffffffd78 >> 0x20);
  local_1f0 = 0xfffffffffffffffe;
  puVar6 = (undefined8 *)FUN_1811316e0(0x220);
  FUN_18049c4e0(&local_res20,&DAT_1821e2dac);
  FUN_1813379d0(puVar6,&local_res20);
  *puVar6 = juce::DrawableButton::vftable;
  puVar6[0x16] = juce::DrawableButton::vftable;
  *(undefined4 *)(puVar6 + 0x39) = 3;
  puVar6[0x3a] = 0;
  puVar6[0x3b] = 0;
  puVar6[0x3c] = 0;
  puVar6[0x3d] = 0;
  puVar6[0x3e] = 0;
  puVar6[0x3f] = 0;
  puVar6[0x40] = 0;
  puVar6[0x41] = 0;
  puVar6[0x42] = 0;
  *(undefined4 *)(puVar6 + 0x43) = 3;
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_248 = (void *)0x0;
  local_240 = 0;
  local_238 = 0;
  uStack_230 = 0;
  local_228 = 1;
  local_1e8 = _DAT_1824c4800;
  uStack_1e0 = _UNK_1824c4808;
  FUN_18129c5c0(&local_248,&local_1e8,DAT_1824c4490,DAT_1824c44dc,CONCAT44(uVar8,DAT_1824c44a8));
  FUN_181330640(local_1c8);
  uVar4 = _UNK_1824c4788;
  uVar3 = _DAT_1824c4780;
  local_1c8[0] = juce::DrawablePath::vftable;
  local_res10 = CONCAT13(0x66,(int3)DAT_18262b5b8);
  local_220 = local_res10;
  local_218 = 0;
  uStack_210 = 0;
  local_208 = _DAT_1824c4780;
  uStack_200 = _UNK_1824c4788;
  local_1f8 = DAT_1824c3ea4;
  uStack_1f4 = 0;
  if ((local_98 == local_res10) && (local_88 == 0)) {
    cVar5 = FUN_1812a0bf0(&local_80,&local_208);
    if ((cVar5 != '\0') && (bVar2 = true, local_90 == 0)) goto LAB_181307159;
  }
  bVar2 = false;
LAB_181307159:
  if (!bVar2) {
    local_98 = local_res10;
    lVar7 = FUN_1804b0230(0);
    if (local_90 != 0) {
      *(undefined4 *)(local_90 + 0x24) = 0;
      puVar6 = (undefined8 *)(local_90 + 0x18);
      local_90 = lVar7;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar6);
    }
    local_90 = lVar7;
    FUN_1812911c0(&local_88,&uStack_210);
    local_80 = uVar3;
    uStack_78 = uVar4;
    local_70 = CONCAT44(uStack_1f4,local_1f8);
    local_1d8 = 0;
    uStack_1d4 = 0;
    uStack_1d0 = local_1a0;
    uStack_1cc = local_19c;
    FUN_181342870(local_1c8,&local_1d8,1);
  }
  FUN_1804aaf40(local_e8,&local_248);
  local_d8 = (undefined4)local_238;
  uStack_d4 = local_238._4_4_;
  uStack_d0 = (undefined4)uStack_230;
  uStack_cc = uStack_230._4_4_;
  local_c8 = local_228;
  FUN_181330000(local_1c8);
  FUN_1813355a0(puVar6,local_1c8,0,0,0,0,0,0);
  local_1c8[0] = juce::DrawablePath::vftable;
  FUN_1813304a0(local_1c8);
                    /* WARNING: Subroutine does not return */
  free(local_248);
}



############ FUN_ 1813076c0 size=599 ############

undefined8 *
FUN_1813076c0(longlong param_1,undefined8 *param_2,longlong *param_3,undefined8 param_4)

{
  undefined8 **_Memory;
  int *piVar1;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  undefined4 uVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  undefined8 uVar8;
  undefined8 **_Memory_00;
  undefined4 local_res8 [2];
  undefined8 *local_res10;
  longlong *local_res18;
  undefined8 *local_60;
  undefined8 *local_58;
  undefined8 **local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  *param_2 = &DAT_1821dbf98;
  *(undefined4 *)(param_2 + 1) = 0;
  *(undefined4 *)((longlong)param_2 + 0xc) = 1;
  param_2[2] = 1;
  param_2[3] = 0;
  param_2[4] = 0;
  *(undefined4 *)((longlong)param_2 + 0xc) = 0x24;
  local_res10 = param_2;
  FUN_181346420(param_1 + -0x20,local_res8,0x1000850,param_4,1);
  puVar6 = (undefined8 *)FUN_1811316e0(0x40);
  uVar5 = DAT_1824c4420;
  *(undefined4 *)(puVar6 + 1) = 0;
  *puVar6 = juce::Font::SharedFontInternal::vftable;
  puVar6[2] = 0;
  plVar7 = (longlong *)FUN_181252610();
  lVar4 = *plVar7;
  puVar6[3] = lVar4;
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar6 + 4,&DAT_1824983b4);
  *(undefined4 *)(puVar6 + 5) = uVar5;
  *(undefined8 *)((longlong)puVar6 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar6 + 0x34) = 0;
  *(undefined1 *)(puVar6 + 7) = 0;
  LOCK();
  *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
  UNLOCK();
  local_res18 = (longlong *)*param_3;
  if (((ulonglong)local_res18[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -2) = *(int *)(local_res18 + -2) + 1;
    UNLOCK();
  }
  local_50 = &local_res18;
  local_60 = puVar6;
  FUN_181232e20(&local_res18,&DAT_1821e2ddc,&DAT_1821e2dde);
  local_50 = (undefined8 **)local_res18;
  _Memory = (undefined8 **)(local_res18 + -2);
  if (((ulonglong)*_Memory & 0x30000000) == 0) {
    LOCK();
    *(uint *)_Memory = *(uint *)_Memory + 1;
    UNLOCK();
  }
  _Memory_00 = (undefined8 **)(local_res18 + -2);
  if (((ulonglong)*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *(uint *)_Memory_00;
    *(uint *)_Memory_00 = *(uint *)_Memory_00 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  FUN_181255140(param_2,&local_50,&local_60,local_res8[0],3);
  if (((ulonglong)*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *(uint *)_Memory;
    *(uint *)_Memory = *(uint *)_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_60 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_60 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_60)(local_60,1);
    }
  }
  uVar8 = FUN_1811316e0(0x40);
  local_58 = (undefined8 *)FUN_1804a2b80(uVar8,0,DAT_1824c4414);
  if (local_58 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_58 + 1) = *(int *)(local_58 + 1) + 1;
    UNLOCK();
  }
  FUN_181255140(param_2,param_4,&local_58,local_res8[0]);
  if (local_58 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_58 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_58)(local_58,1);
    }
  }
  return param_2;
}



############ FUN_ 181307da0 size=519 ############

void FUN_181307da0(longlong param_1,longlong param_2,undefined8 param_3,undefined1 param_4,
                  int param_5,int param_6)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  int iVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined8 *local_res8;
  uint in_stack_ffffffffffffff80;
  float local_60;
  float local_5c;
  float local_58;
  float local_54;
  
  fVar9 = (float)param_6;
  fVar7 = fVar9 * DAT_1824c3e10;
  fVar8 = (fVar9 - fVar7) * DAT_1824c3d8c;
  local_60 = fVar8;
  local_5c = fVar8;
  local_58 = fVar7;
  local_54 = fVar7;
  (**(code **)(*(longlong *)(param_1 + -0x58) + 8))
            ((longlong *)(param_1 + -0x58),param_2,&local_60,DAT_18262b5a8,param_4,
             in_stack_ffffffffffffff80 & 0xffffff00);
  iVar6 = (int)(fVar8 * DAT_1824c41e0 + fVar7 + DAT_1824c41e0);
  FUN_181296c00(param_2,DAT_18262b5b8);
  fVar9 = fVar9 * DAT_1824c3df0;
  puVar4 = (undefined8 *)FUN_1811316e0(0x40);
  fVar7 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar9) && (fVar7 = DAT_1824c45c8, fVar9 <= DAT_1824c45c8)) {
    fVar7 = fVar9;
  }
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = juce::Font::SharedFontInternal::vftable;
  puVar4[2] = 0;
  plVar5 = (longlong *)FUN_181252610();
  lVar3 = *plVar5;
  puVar4[3] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar4 + 4,&DAT_1824983b4);
  *(float *)(puVar4 + 5) = fVar7;
  *(undefined8 *)((longlong)puVar4 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar4 + 0x34) = 0;
  *(undefined1 *)(puVar4 + 7) = 0;
  LOCK();
  *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
  UNLOCK();
  local_res8 = puVar4;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_res8);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  FUN_1812962a0(param_2,param_3,iVar6,0,(param_5 - iVar6) + -4,param_6,0x21,1);
  return;
}



############ FUN_ 181308430 size=1116 ############

void FUN_181308430(undefined8 param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,int param_6,int param_7,char param_8,undefined4 param_9,
                  uint param_10)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  int iVar8;
  float *pfVar9;
  undefined1 uVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  float fVar14;
  float fVar15;
  uint local_res10 [2];
  undefined4 local_e8;
  float *local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined1 local_c0;
  undefined8 *local_b8 [2];
  undefined8 local_a8;
  int iStack_a0;
  int iStack_9c;
  double local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [80];
  
  local_90 = 0xfffffffffffffffe;
  FUN_18134a8d0(param_3,local_res10,0x1003830,0);
  local_e8 = local_res10[0];
  if ((char)param_9 == '\0') {
    if (param_8 == '\0') goto LAB_1813084e1;
    local_98 = (double)((float)(local_res10[0] >> 0x18) * DAT_1824c3dd0) + DAT_1824c4520;
    uVar10 = 0xff;
    if (SUB84(local_98,0) < 0xff) {
      uVar10 = SUB81(local_98,0);
    }
    local_e8 = CONCAT13(uVar10,(int3)local_res10[0]);
  }
  FUN_1812a3160(param_2,local_e8);
LAB_1813084e1:
  iVar4 = param_7;
  iVar12 = 0;
  if (0 < param_6 + -8) {
    iVar12 = param_6 + -8;
  }
  iVar13 = 0;
  if (0 < param_7) {
    iVar13 = param_7;
  }
  local_a8 = 4;
  iStack_a0 = iVar12;
  iStack_9c = iVar13;
  if ((param_10 & 0x60) == 0) {
    puVar5 = (undefined4 *)FUN_18134a8d0(param_3,&param_6,0x1003800,0);
    FUN_181296c00(param_2,*puVar5);
    fVar15 = (float)iVar4 * DAT_1824c3d8c;
    puVar6 = (undefined8 *)FUN_1811316e0(0x40);
    fVar14 = DAT_1824c3cb8;
    if ((DAT_1824c3cb8 <= fVar15) && (fVar14 = DAT_1824c45c8, fVar15 <= DAT_1824c45c8)) {
      fVar14 = fVar15;
    }
    *(undefined4 *)(puVar6 + 1) = 0;
    *puVar6 = juce::Font::SharedFontInternal::vftable;
    puVar6[2] = 0;
    plVar7 = (longlong *)FUN_181252610();
    lVar2 = *plVar7;
    puVar6[3] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18049c4e0(puVar6 + 4,&DAT_1824983b4);
    *(float *)(puVar6 + 5) = fVar14;
    *(undefined8 *)((longlong)puVar6 + 0x2c) = 0x3f800000;
    *(undefined4 *)((longlong)puVar6 + 0x34) = 0;
    *(undefined1 *)(puVar6 + 7) = 0;
    LOCK();
    *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
    UNLOCK();
    local_b8[0] = puVar6;
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),local_b8);
    if (local_b8[0] != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_b8[0] + 1);
      iVar4 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)*local_b8[0])(local_b8[0],1);
      }
    }
    uStack_80 = CONCAT44(iStack_9c,iStack_a0);
    local_88 = local_a8;
    FUN_181296100(param_2,param_4,&local_88,0x21,1,0);
    return;
  }
  local_e0 = (float *)0x0;
  local_d8._0_4_ = 0;
  local_d8._4_4_ = 0;
  local_c0 = 1;
  local_d0 = 0;
  local_c8 = 0;
  FUN_1804b02a0(&local_e0,&DAT_1821df344);
  FUN_18129ddd0(&local_e0);
  FUN_18129ddd0(&local_e0);
  if ((local_d8._4_4_ != 0) &&
     ((local_d8._4_4_ < 1 || (local_e0[local_d8._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_d8 < local_d8._4_4_ + 1) {
      FUN_1804af790(&local_e0,local_d8._4_4_ + 9 + (local_d8._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_d8._4_4_ = 1;
    *local_e0 = 100005.0;
  }
  param_9 = 0x99000000;
  FUN_181296c00(param_2,0x99000000);
  iVar4 = iVar4 / 2;
  if (iVar12 < iVar4) {
    iVar4 = iVar12;
  }
  iStack_a0 = iVar12 - iVar4;
  iVar11 = 0;
  if (0 < iVar4 + -4) {
    iVar11 = iVar4 + -4;
  }
  iVar8 = 0;
  if (0 < iVar13 + -4) {
    iVar8 = iVar13 + -4;
  }
  FUN_18129b390(&local_e0,local_78,iVar12 - iVar4,DAT_1824c41e0,(float)iVar11,(float)iVar8,1,0x24);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    for (pfVar9 = local_e0; pfVar9 != local_e0 + local_d8._4_4_; pfVar9 = pfVar9 + 1) {
      fVar14 = *pfVar9;
      if (fVar14 == DAT_1824c4600) {
        pfVar9 = pfVar9 + 2;
      }
      else if (((fVar14 == DAT_1824c45fc) || (fVar14 == DAT_1824c4604)) || (fVar14 == DAT_1824c4608)
              ) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_e0,local_78);
        break;
      }
    }
  }
  local_d8 = (ulonglong)(uint)local_d8;
                    /* WARNING: Subroutine does not return */
  free(local_e0);
}



############ FUN_ 181308ba0 size=2210 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181308ba0(void)

{
  undefined8 *puVar1;
  uint uVar2;
  bool bVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  char cVar7;
  longlong lVar8;
  longlong *plVar9;
  longlong *plVar10;
  undefined8 uVar11;
  uint *_Memory;
  int iVar12;
  undefined8 in_stack_fffffffffffff8a8;
  undefined4 uVar13;
  void *local_728;
  undefined4 local_720;
  undefined4 uStack_71c;
  undefined4 local_718;
  undefined4 uStack_714;
  undefined4 uStack_710;
  undefined4 uStack_70c;
  undefined1 local_708;
  undefined4 local_700;
  longlong local_6f8 [2];
  undefined8 local_6e8;
  undefined4 uStack_6e0;
  undefined4 uStack_6dc;
  undefined8 local_6d8;
  undefined4 uStack_6d0;
  undefined4 uStack_6cc;
  undefined8 local_6c8;
  undefined4 uStack_6c0;
  undefined4 uStack_6bc;
  undefined8 *local_6b8;
  undefined8 *local_6b0;
  undefined4 local_6a8;
  undefined8 local_6a0;
  undefined8 uStack_698;
  undefined8 local_690;
  undefined8 uStack_688;
  undefined8 local_680;
  undefined4 local_678;
  undefined8 local_670;
  undefined8 uStack_668;
  undefined8 local_660;
  undefined8 uStack_658;
  undefined8 local_650;
  undefined4 local_648;
  undefined8 local_640;
  undefined8 uStack_638;
  undefined8 local_630;
  undefined8 uStack_628;
  undefined8 local_620;
  undefined **local_618;
  undefined1 *local_610;
  undefined1 *local_608;
  undefined8 local_600;
  undefined8 local_5f8;
  undefined8 uStack_5f0;
  undefined8 local_5e8;
  undefined8 uStack_5e0;
  undefined8 local_5d8;
  undefined8 local_5d0;
  undefined8 local_5c8;
  undefined8 uStack_5c0;
  undefined8 local_5b8;
  undefined8 uStack_5b0;
  undefined8 local_5a8;
  undefined8 uStack_5a0;
  undefined8 local_598;
  undefined8 local_590;
  undefined8 local_588;
  undefined8 local_580;
  undefined8 local_578;
  undefined4 local_570;
  undefined1 local_56c;
  undefined8 local_568;
  undefined8 local_560;
  undefined4 local_558;
  undefined4 uStack_554;
  undefined4 uStack_550;
  undefined4 uStack_54c;
  undefined4 local_548;
  undefined4 local_544;
  undefined4 local_540;
  undefined4 uStack_53c;
  undefined4 uStack_538;
  undefined4 uStack_534;
  undefined1 local_530;
  undefined8 local_528;
  undefined8 local_520;
  undefined8 local_518;
  undefined8 local_510;
  undefined4 local_508;
  undefined4 uStack_504;
  undefined4 uStack_500;
  undefined4 uStack_4fc;
  undefined4 local_4f8;
  undefined4 uStack_4f4;
  undefined4 uStack_4f0;
  undefined4 uStack_4ec;
  undefined4 local_4e8;
  undefined4 uStack_4e4;
  undefined4 uStack_4e0;
  undefined4 uStack_4dc;
  undefined4 local_4d8;
  undefined4 uStack_4d4;
  undefined4 uStack_4d0;
  undefined4 uStack_4cc;
  undefined4 local_4c8;
  undefined4 uStack_4c4;
  undefined4 uStack_4c0;
  undefined4 uStack_4bc;
  undefined **local_4b8 [5];
  undefined4 local_490;
  undefined4 local_48c;
  longlong local_3d8 [2];
  undefined4 local_3c8;
  undefined4 uStack_3c4;
  undefined4 uStack_3c0;
  undefined4 uStack_3bc;
  undefined1 local_3b8;
  int local_388;
  longlong local_380;
  longlong local_378;
  undefined8 local_370;
  undefined8 uStack_368;
  undefined8 local_360;
  undefined **local_328 [5];
  undefined4 local_300;
  undefined4 local_2fc;
  longlong local_248 [2];
  undefined4 local_238;
  undefined4 uStack_234;
  undefined4 uStack_230;
  undefined4 uStack_22c;
  undefined1 local_228;
  int local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  undefined8 local_1e0;
  undefined8 uStack_1d8;
  undefined8 local_1d0;
  undefined4 local_198;
  undefined4 uStack_194;
  undefined4 uStack_190;
  undefined4 uStack_18c;
  undefined4 local_188;
  undefined4 uStack_184;
  undefined4 uStack_180;
  undefined4 uStack_17c;
  undefined4 local_178;
  undefined4 uStack_174;
  undefined4 uStack_170;
  undefined4 uStack_16c;
  undefined4 local_168;
  undefined4 uStack_164;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined **local_158 [24];
  undefined8 local_98;
  undefined8 uStack_90;
  undefined4 local_88;
  undefined4 local_84;
  undefined4 local_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined1 local_70;
  
  uVar13 = (undefined4)((ulonglong)in_stack_fffffffffffff8a8 >> 0x20);
  local_528 = 0xfffffffffffffffe;
  local_700 = 0;
  local_728 = (void *)0x0;
  local_720 = 0;
  uStack_71c = 0;
  local_718 = 0;
  uStack_714 = 0;
  uStack_710 = 0;
  uStack_70c = 0;
  local_708 = 1;
  local_198 = _DAT_1824c4ed0;
  uStack_194 = _UNK_1824c4ed4;
  uStack_190 = _UNK_1824c4ed8;
  uStack_18c = _UNK_1824c4edc;
  local_508 = _DAT_1824c4ed0;
  uStack_504 = _UNK_1824c4ed4;
  uStack_500 = _UNK_1824c4ed8;
  uStack_4fc = _UNK_1824c4edc;
  FUN_18129d1e0(&local_728,&local_508);
  FUN_181330640(local_328);
  local_328[0] = juce::DrawablePath::vftable;
  FUN_1804aaf40(local_248,&local_728);
  local_238 = local_718;
  uStack_234 = uStack_714;
  uStack_230 = uStack_710;
  uStack_22c = uStack_70c;
  local_228 = local_708;
  FUN_181330000(local_328);
  uVar6 = _UNK_1824c4788;
  uVar11 = _DAT_1824c4780;
  iVar12 = -0x66000001;
  local_6a8 = 0x99ffffff;
  local_6a0 = 0;
  uStack_698 = 0;
  local_690 = _DAT_1824c4780;
  uStack_688 = _UNK_1824c4788;
  local_680 = 0x3f800000;
  if ((local_1f8 == -0x66000001) && (local_1e8 == 0)) {
    iVar12 = -0x66000001;
    cVar7 = FUN_1812a0bf0(&local_1e0,&local_690);
    if ((cVar7 == '\0') || (bVar3 = true, local_1f0 != 0)) goto LAB_181308cd5;
  }
  else {
LAB_181308cd5:
    bVar3 = false;
  }
  if (!bVar3) {
    local_1f8 = iVar12;
    lVar8 = FUN_1804b0230(0);
    if (local_1f0 != 0) {
      *(undefined4 *)(local_1f0 + 0x24) = 0;
      puVar1 = (undefined8 *)(local_1f0 + 0x18);
      local_1f0 = lVar8;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar1);
    }
    local_1f0 = lVar8;
    FUN_1812911c0(&local_1e8,&uStack_698);
    local_1e0 = uVar11;
    uStack_1d8 = uVar6;
    local_1d0 = local_680;
    local_6e8 = 0;
    uStack_6e0 = local_300;
    uStack_6dc = local_2fc;
    local_4f8 = 0;
    uStack_4f4 = 0;
    uStack_4f0 = local_300;
    uStack_4ec = local_2fc;
    FUN_181342870(local_328,&local_4f8,1);
  }
  uStack_71c = 0;
  local_718 = 0;
  uStack_714 = 0;
  uStack_710 = 0;
  uStack_70c = 0;
  local_188 = _DAT_1824c4ec0;
  uStack_184 = _UNK_1824c4ec4;
  uStack_180 = _UNK_1824c4ec8;
  uStack_17c = _UNK_1824c4ecc;
  local_4e8 = _DAT_1824c4ec0;
  uStack_4e4 = _UNK_1824c4ec4;
  uStack_4e0 = _UNK_1824c4ec8;
  uStack_4dc = _UNK_1824c4ecc;
  FUN_18129d1e0(&local_728,&local_4e8);
  uVar5 = DAT_1824c4434;
  uVar4 = DAT_1824c4414;
  FUN_18129d850(&local_728,DAT_1824c4434,DAT_1824c4494,DAT_1824c44b4,CONCAT44(uVar13,DAT_1824c4414))
  ;
  uVar13 = DAT_1824c4430;
  FUN_18129d850(&local_728,DAT_1824c4494,uVar5,uVar4,DAT_1824c4430);
  FUN_18129d850(&local_728,DAT_1824c4494,DAT_1824c44b8,uVar4,uVar13);
  local_708 = 0;
  FUN_181330640(local_4b8);
  local_4b8[0] = juce::DrawablePath::vftable;
  FUN_1804aaf40(local_3d8,&local_728);
  local_3c8 = local_718;
  uStack_3c4 = uStack_714;
  uStack_3c0 = uStack_710;
  uStack_3bc = uStack_70c;
  local_3b8 = local_708;
  FUN_181330000(local_4b8);
  uVar6 = _UNK_1824c4788;
  uVar11 = _DAT_1824c4780;
  iVar12 = 0x59000000;
  local_678 = 0x59000000;
  local_670 = 0;
  uStack_668 = 0;
  local_660 = _DAT_1824c4780;
  uStack_658 = _UNK_1824c4788;
  local_650 = 0x3f800000;
  if ((local_388 == 0x59000000) && (local_378 == 0)) {
    iVar12 = 0x59000000;
    cVar7 = FUN_1812a0bf0(&local_370,&local_660);
    if ((cVar7 == '\0') || (bVar3 = true, local_380 != 0)) goto LAB_181308ef3;
  }
  else {
LAB_181308ef3:
    bVar3 = false;
  }
  if (!bVar3) {
    local_388 = iVar12;
    lVar8 = FUN_1804b0230(0);
    if (local_380 != 0) {
      *(undefined4 *)(local_380 + 0x24) = 0;
      puVar1 = (undefined8 *)(local_380 + 0x18);
      local_380 = lVar8;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar1);
    }
    local_380 = lVar8;
    FUN_1812911c0(&local_378,&uStack_668);
    local_370 = uVar11;
    uStack_368 = uVar6;
    local_360 = local_650;
    local_6d8 = 0;
    uStack_6d0 = local_490;
    uStack_6cc = local_48c;
    local_4d8 = 0;
    uStack_4d4 = 0;
    uStack_4d0 = local_490;
    uStack_4cc = local_48c;
    FUN_181342870(local_4b8,&local_4d8,1);
  }
  local_610 = &DAT_1821dbf98;
  local_608 = &DAT_1821dbf98;
  local_600 = 0;
  local_5f8 = 0;
  uStack_5f0 = 0;
  local_5e8 = 0;
  uStack_5e0 = 0;
  local_5d8 = 0;
  local_5d0 = 0;
  local_5c8 = 0;
  uStack_5c0 = 0;
  local_5b8 = 0;
  uStack_5b0 = 0;
  local_5a8 = 0;
  uStack_5a0 = 0;
  local_598 = 0;
  local_590 = 0;
  local_588 = 0;
  local_580 = 0;
  local_578 = 0;
  local_56c = 0;
  local_568 = 0;
  local_560 = 0;
  local_570 = 0x4008;
  local_618 = juce::DrawableComposite::vftable;
  local_558 = _DAT_1824c4810;
  uStack_554 = _UNK_1824c4814;
  uStack_550 = _UNK_1824c4818;
  uStack_54c = _UNK_1824c481c;
  local_548 = 0;
  local_544 = 0x42c80000;
  local_530 = 0;
  local_178 = _DAT_1824c4ec0;
  uStack_174 = _UNK_1824c4ec4;
  uStack_170 = _UNK_1824c4ec8;
  uStack_16c = _UNK_1824c4ecc;
  local_540 = _DAT_1824c4ec0;
  uStack_53c = _UNK_1824c4ec4;
  uStack_538 = _UNK_1824c4ec8;
  uStack_534 = _UNK_1824c4ecc;
  plVar9 = (longlong *)FUN_1811316e0(400);
  FUN_181330550(plVar9,local_328);
  *plVar9 = (longlong)juce::DrawablePath::vftable;
  if (plVar9 + 0x1c != local_248) {
    FUN_1804aaf40(plVar9 + 0x1c,local_248);
    *(undefined4 *)(plVar9 + 0x1e) = local_238;
    *(undefined4 *)((longlong)plVar9 + 0xf4) = uStack_234;
    *(undefined4 *)(plVar9 + 0x1f) = uStack_230;
    *(undefined4 *)((longlong)plVar9 + 0xfc) = uStack_22c;
    *(undefined1 *)(plVar9 + 0x20) = local_228;
  }
  FUN_181330000(plVar9);
  local_520 = 0;
  (**(code **)(*plVar9 + 0x58))(plVar9,1);
  FUN_181343cc0(&local_618,plVar9,0xffffffff);
  plVar9 = (longlong *)FUN_1811316e0(400);
  FUN_181330550(plVar9,local_4b8);
  *plVar9 = (longlong)juce::DrawablePath::vftable;
  if (plVar9 + 0x1c != local_3d8) {
    FUN_1804aaf40(plVar9 + 0x1c,local_3d8);
    *(undefined4 *)(plVar9 + 0x1e) = local_3c8;
    *(undefined4 *)((longlong)plVar9 + 0xf4) = uStack_3c4;
    *(undefined4 *)(plVar9 + 0x1f) = uStack_3c0;
    *(undefined4 *)((longlong)plVar9 + 0xfc) = uStack_3bc;
    *(undefined1 *)(plVar9 + 0x20) = local_3b8;
  }
  FUN_181330000(plVar9);
  local_518 = 0;
  (**(code **)(*plVar9 + 0x58))(plVar9,1);
  FUN_181343cc0(&local_618,plVar9,0xffffffff);
  uVar6 = _UNK_1824c4788;
  uVar11 = _DAT_1824c4780;
  iVar12 = -0x34000000;
  local_648 = 0xcc000000;
  local_640 = 0;
  uStack_638 = 0;
  local_630 = _DAT_1824c4780;
  uStack_628 = _UNK_1824c4788;
  local_620 = 0x3f800000;
  if ((local_388 == -0x34000000) && (local_378 == 0)) {
    iVar12 = -0x34000000;
    cVar7 = FUN_1812a0bf0(&local_370,&local_630);
    if ((cVar7 != '\0') && (bVar3 = true, local_380 == 0)) goto LAB_181309206;
  }
  bVar3 = false;
LAB_181309206:
  if (!bVar3) {
    local_388 = iVar12;
    lVar8 = FUN_1804b0230(0);
    if (local_380 != 0) {
      *(undefined4 *)(local_380 + 0x24) = 0;
      puVar1 = (undefined8 *)(local_380 + 0x18);
      local_380 = lVar8;
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar1);
    }
    local_380 = lVar8;
    FUN_1812911c0(&local_378,&uStack_638);
    local_370 = uVar11;
    uStack_368 = uVar6;
    local_360 = local_620;
    local_6c8 = 0;
    uStack_6c0 = local_490;
    uStack_6bc = local_48c;
    local_4c8 = 0;
    uStack_4c4 = 0;
    uStack_4c0 = local_490;
    uStack_4bc = local_48c;
    FUN_181342870(local_4b8,&local_4c8,1);
  }
  FUN_1813331e0(local_158);
  local_158[0] = juce::DrawableComposite::vftable;
  local_98 = CONCAT44(_UNK_1824c4814,_DAT_1824c4810);
  uStack_90 = CONCAT44(_UNK_1824c481c,_UNK_1824c4818);
  local_88 = 0;
  local_84 = 0x42c80000;
  local_70 = 0;
  local_168 = _DAT_1824c4ec0;
  uStack_164 = _UNK_1824c4ec4;
  uStack_160 = _UNK_1824c4ec8;
  uStack_15c = _UNK_1824c4ecc;
  local_80 = _DAT_1824c4ec0;
  uStack_7c = _UNK_1824c4ec4;
  uStack_78 = _UNK_1824c4ec8;
  uStack_74 = _UNK_1824c4ecc;
  plVar10 = (longlong *)FUN_181330bc0(local_328,&local_6b8);
  plVar9 = (longlong *)*plVar10;
  *plVar10 = 0;
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(local_158,plVar9,0xffffffff);
  }
  if (local_6b8 != (undefined8 *)0x0) {
    (**(code **)*local_6b8)(local_6b8,1);
  }
  plVar10 = (longlong *)FUN_181330bc0(local_4b8,&local_6b0);
  plVar9 = (longlong *)*plVar10;
  *plVar10 = 0;
  if (plVar9 != (longlong *)0x0) {
    (**(code **)(*plVar9 + 0x58))(plVar9,1);
    FUN_181343cc0(local_158,plVar9,0xffffffff);
  }
  if (local_6b0 != (undefined8 *)0x0) {
    (**(code **)*local_6b0)(local_6b0,1);
  }
  uVar11 = FUN_1811316e0(0x220);
  local_510 = uVar11;
  FUN_18049c4e0(local_6f8,&DAT_1821e429c);
  local_700 = 0x1f;
  uVar11 = FUN_181335a10(uVar11,local_6f8,0);
  _Memory = (uint *)(local_6f8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1813355a0(uVar11,&local_618,local_158,0,0,0,0,0);
  FUN_181332610(local_158);
  FUN_181332610(&local_618);
  local_4b8[0] = juce::DrawablePath::vftable;
  FUN_1813304a0(local_4b8);
  local_328[0] = juce::DrawablePath::vftable;
  FUN_1813304a0(local_328);
                    /* WARNING: Subroutine does not return */
  free(local_728);
}



############ FUN_ 181330bc0 size=161 ############

undefined8 *
FUN_181330bc0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  puVar4 = (undefined8 *)FUN_1811316e0(400);
  FUN_181330550(puVar4,param_1,param_3,param_4,uVar5);
  *puVar4 = juce::DrawablePath::vftable;
  if (puVar4 + 0x1c != (undefined8 *)(param_1 + 0xe0)) {
    FUN_1804aaf40(puVar4 + 0x1c,(undefined8 *)(param_1 + 0xe0));
    uVar1 = *(undefined4 *)(param_1 + 0xf4);
    uVar2 = *(undefined4 *)(param_1 + 0xf8);
    uVar3 = *(undefined4 *)(param_1 + 0xfc);
    *(undefined4 *)(puVar4 + 0x1e) = *(undefined4 *)(param_1 + 0xf0);
    *(undefined4 *)((longlong)puVar4 + 0xf4) = uVar1;
    *(undefined4 *)(puVar4 + 0x1f) = uVar2;
    *(undefined4 *)((longlong)puVar4 + 0xfc) = uVar3;
    *(undefined1 *)(puVar4 + 0x20) = *(undefined1 *)(param_1 + 0x100);
  }
  FUN_181330000(puVar4);
  *param_2 = puVar4;
  return param_2;
}



############ FUN_ 18130a510 size=328 ############

int FUN_18130a510(longlong *param_1,longlong param_2,int param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  uint *_Memory;
  float fVar8;
  float fVar9;
  undefined8 *local_res8;
  longlong local_res10;
  
  uVar6 = FUN_181248e40(param_2 + 0x158,&local_res10,param_3,param_4,0xfffffffffffffffe);
  fVar9 = (float)param_3 * DAT_1824c3db8;
  uVar7 = FUN_1811316e0(0x40);
  fVar8 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar9) && (fVar8 = DAT_1824c45c8, fVar9 <= DAT_1824c45c8)) {
    fVar8 = fVar9;
  }
  local_res8 = (undefined8 *)FUN_1804a2b80(uVar7,0,fVar8);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
    UNLOCK();
  }
  fVar8 = (float)FUN_1812518d0(&local_res8,uVar6);
  fVar8 = ceilf(fVar8);
  iVar4 = (**(code **)(*param_1 + 0x10))(param_1,param_3);
  iVar4 = (int)fVar8 + iVar4 * 2;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  lVar3 = *(longlong *)(param_2 + 0x1d8);
  if (lVar3 != 0) {
    if (*(int *)(*(longlong *)(param_2 + 0x1c8) + 0xf8) - 2U < 2) {
      iVar5 = *(int *)(lVar3 + 0x2c);
    }
    else {
      iVar5 = *(int *)(lVar3 + 0x28);
    }
    iVar4 = iVar4 + iVar5;
  }
  iVar5 = param_3 * 2;
  if ((param_3 * 2 <= iVar4) && (iVar5 = iVar4, param_3 * 8 < iVar4)) {
    iVar5 = param_3 * 8;
  }
  return iVar5;
}



############ FUN_ 18130a690 size=1744 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18130a690(undefined8 param_1,longlong param_2,int param_3,int param_4,undefined8 *param_5,
                  uint *param_6,longlong param_7)

{
  byte bVar1;
  float fVar2;
  double dVar3;
  longlong lVar4;
  char cVar5;
  undefined8 uVar6;
  longlong *plVar7;
  uint *puVar8;
  undefined1 uVar9;
  byte *pbVar10;
  int iVar11;
  undefined4 uVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined1 local_res10 [8];
  undefined4 local_res18;
  undefined4 local_res20;
  longlong local_158;
  void *local_150;
  undefined8 local_148;
  undefined8 local_140;
  undefined8 uStack_138;
  undefined1 local_130;
  undefined8 local_128;
  undefined4 local_120;
  undefined8 local_11c;
  undefined8 uStack_114;
  undefined8 local_10c;
  undefined1 local_104 [4];
  undefined4 local_100;
  double local_f8;
  double local_f0;
  undefined8 local_e8;
  double local_e0;
  double local_d8;
  undefined8 local_d0;
  
  local_d0 = 0xfffffffffffffffe;
  uVar6 = FUN_1811316e0(0x40);
  local_158 = FUN_1804a2b80(uVar6,0,DAT_1824c4418);
  if (local_158 != 0) {
    LOCK();
    *(int *)(local_158 + 8) = *(int *)(local_158 + 8) + 1;
    UNLOCK();
  }
  iVar11 = 0;
  local_150 = (void *)0x0;
  local_148 = 0;
  local_140 = 0;
  uStack_138 = 0;
  local_130 = 1;
  if (*(float *)(local_158 + 0x34) == 0.0) {
    plVar7 = (longlong *)FUN_181252280(&local_158);
    lVar4 = local_158;
    uVar12 = (**(code **)(*plVar7 + 0x10))(plVar7);
    *(undefined4 *)(lVar4 + 0x34) = uVar12;
  }
  fVar2 = DAT_1824c42d0;
  fVar17 = *(float *)(local_158 + 0x34) * *(float *)(local_158 + 0x28) - DAT_1824c42d0;
  fVar19 = (float)param_3 - DAT_1824c4388;
  if (fVar19 <= 0.0) {
    fVar19 = 0.0;
  }
  fVar20 = ((float)param_4 - fVar17) - DAT_1824c42d0;
  if (fVar20 <= 0.0) {
    fVar20 = 0.0;
  }
  fVar18 = fVar20 * DAT_1824c3d8c;
  fVar13 = fVar19 * DAT_1824c3d8c;
  if (DAT_1824c4360 <= fVar13) {
    if (DAT_1824c4360 <= fVar18) {
      fVar18 = DAT_1824c4360;
    }
  }
  else if (fVar13 <= fVar18) {
    fVar18 = fVar13;
  }
  fVar13 = fVar18 * DAT_1824c41e0;
  if (*(char *)*param_5 != '\0') {
    plVar7 = (longlong *)FUN_181252280(&local_158);
    fVar14 = (float)(**(code **)(*plVar7 + 0x28))(plVar7,param_5);
    if (*(float *)(local_158 + 0x30) != 0.0) {
      pbVar10 = (byte *)*param_5;
LAB_18130a850:
      do {
        bVar1 = *pbVar10;
        pbVar10 = pbVar10 + 1;
        if ((char)bVar1 < '\0') {
          if ((*pbVar10 & 0xc0) == 0x80) {
            do {
              pbVar10 = pbVar10 + 1;
            } while ((*pbVar10 & 0xc0) == 0x80);
            iVar11 = iVar11 + 1;
            goto LAB_18130a850;
          }
        }
        else if (bVar1 == 0) goto LAB_18130a88c;
        iVar11 = iVar11 + 1;
      } while( true );
    }
    goto LAB_18130a89c;
  }
  fVar14 = 0.0;
LAB_18130a8ee:
  fVar16 = fVar18 + DAT_1824c4334;
  if ((*param_6 >> 2 & 1) == 0) {
    if ((*param_6 >> 1 & 1) != 0) {
      fVar16 = ((fVar19 - fVar18) - fVar14) - DAT_1824c4334;
    }
  }
  else {
    fVar16 = ((fVar19 - fVar13) - fVar14) * DAT_1824c3d8c + fVar18;
  }
  fVar15 = fVar16 + fVar2 + fVar14;
  if (local_148._4_4_ == 0) {
    local_140 = CONCAT44(fVar15,fVar15);
    uStack_138 = (ulonglong)(uint)fVar17;
  }
  else {
    if ((float)local_140 <= fVar15) {
      if (local_140._4_4_ < fVar15) {
        local_140 = CONCAT44(fVar15,(float)local_140);
      }
    }
    else {
      local_140 = CONCAT44(local_140._4_4_,fVar15);
    }
    if (fVar17 < (float)uStack_138) {
      uStack_138 = CONCAT44(uStack_138._4_4_,fVar17);
      goto LAB_18130a9b4;
    }
    if (fVar17 <= uStack_138._4_4_) goto LAB_18130a9b4;
  }
  uStack_138 = CONCAT44(fVar17,(float)uStack_138);
LAB_18130a9b4:
  FUN_1804b02a0(&local_150,&DAT_1821df344,fVar15,fVar17);
  FUN_18129ddd0(&local_150,(fVar19 + fVar2) - fVar18,fVar17);
  fVar15 = fVar13 * DAT_1824c3d8c;
  if (0.0 < fVar15) {
    FUN_18129cdf0(&local_150,((fVar19 + fVar2) - fVar13) + fVar15,fVar15 + fVar17,fVar15,fVar15,0,0,
                  DAT_1824c3fa0,0);
  }
  FUN_18129ddd0(&local_150);
  if (0.0 < fVar15) {
    FUN_18129cdf0(&local_150);
  }
  FUN_18129ddd0(&local_150,fVar18 + fVar2,fVar20 + fVar17);
  uVar12 = DAT_1824c435c;
  if (0.0 < fVar15) {
    FUN_18129cdf0(&local_150,fVar15 + fVar2,((fVar20 + fVar17) - fVar13) + fVar15,fVar15,fVar15,0,
                  DAT_1824c42e0,DAT_1824c435c,0);
  }
  FUN_18129ddd0(&local_150);
  if (0.0 < fVar15) {
    FUN_18129cdf0(&local_150,fVar15 + fVar2,fVar15 + fVar17,fVar15,fVar15,0,uVar12,DAT_1824c43a4,0);
  }
  FUN_18129ddd0(&local_150);
  fVar17 = DAT_1824c3ea4;
  if (((*(byte *)(param_7 + 0xa9) & 0x10) != 0) ||
     ((*(longlong *)(param_7 + 0x18) != 0 && (cVar5 = FUN_18133eaa0(), cVar5 == '\0')))) {
    fVar17 = DAT_1824c3d8c;
  }
  puVar8 = (uint *)FUN_18134a8d0(param_7,local_res10,0x1005400,0);
  dVar3 = DAT_1824c4520;
  local_f8 = (double)((float)(*puVar8 >> 0x18) * fVar17) + DAT_1824c4520;
  uVar9 = 0xff;
  if (SUB84(local_f8,0) < 0xff) {
    uVar9 = SUB81(local_f8,0);
  }
  local_res18 = CONCAT13(uVar9,(int3)*puVar8);
  FUN_181296c00(param_2,local_res18);
  local_11c = _DAT_1824c4780;
  uStack_114 = _UNK_1824c4788;
  local_10c = 0x3f800000;
  local_128 = 0x40000000;
  local_120 = 0;
  FUN_181295d20(param_2,&local_150,&local_128,&local_11c);
  puVar8 = (uint *)FUN_18134a8d0(param_7,local_104,0x1005410,0);
  local_f0 = (double)((float)(*puVar8 >> 0x18) * fVar17) + dVar3;
  uVar9 = 0xff;
  if (SUB84(local_f0,0) < 0xff) {
    uVar9 = SUB81(local_f0,0);
  }
  local_res20 = CONCAT13(uVar9,(int3)*puVar8);
  FUN_181296c00(param_2,local_res20);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_158);
  local_100 = 0x24;
  local_e8 = DAT_1824c4528;
  uVar6 = local_e8;
  local_e0 = (double)fVar14 + dVar3;
  local_d8 = (double)(fVar16 + fVar2) + dVar3;
  local_e8._0_4_ = (undefined4)DAT_1824c4528;
  uVar12 = (undefined4)local_e8;
  local_e8 = uVar6;
  FUN_1812962a0(param_2,param_5,(ulonglong)local_d8 & 0xffffffff,0,local_e0._0_4_,uVar12,0x24,1);
  local_148 = local_148 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_150);
LAB_18130a88c:
  fVar14 = fVar14 + (float)iVar11 * *(float *)(local_158 + 0x30);
LAB_18130a89c:
  fVar16 = ceilf(fVar14 * *(float *)(local_158 + 0x28) * *(float *)(local_158 + 0x2c));
  fVar14 = (fVar19 - fVar13) - DAT_1824c43d8;
  if (fVar14 <= 0.0) {
    fVar14 = 0.0;
  }
  fVar16 = (float)(int)fVar16 + DAT_1824c43d8;
  if (0.0 <= fVar16) {
    if (fVar16 <= fVar14) {
      fVar14 = fVar16;
    }
  }
  else {
    fVar14 = 0.0;
  }
  goto LAB_18130a8ee;
}



############ FUN_ 18130b030 size=117 ############

void FUN_18130b030(void)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  undefined4 local_res18;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x40);
  uVar1 = DAT_18262b5b8;
  puVar2[1] = 0;
  local_res18 = CONCAT13(0x66,(int3)uVar1);
  *puVar2 = juce::DropShadower::vftable;
  puVar2[2] = 0;
  puVar2[3] = 0;
  *(undefined1 *)(puVar2 + 6) = 0;
  puVar2[4] = CONCAT44(10,local_res18);
  puVar2[5] = 0x200000000;
  puVar2[7] = 0;
  return;
}



############ FUN_ 18130b1e0 size=1168 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18130b1e0(undefined8 param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  undefined8 in_stack_fffffffffffffe78;
  undefined4 uVar6;
  void *local_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined1 local_148;
  void *local_140;
  ulonglong local_138;
  undefined4 local_130;
  undefined4 uStack_12c;
  undefined4 uStack_128;
  undefined4 uStack_124;
  undefined1 local_120;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  undefined8 local_100;
  undefined8 uStack_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  uVar3 = DAT_1824c3d64;
  uVar2 = DAT_1824c3d3c;
  uVar6 = (undefined4)((ulonglong)in_stack_fffffffffffffe78 >> 0x20);
  local_e8 = 0xfffffffffffffffe;
  local_168 = (void *)0x0;
  local_160 = 0;
  local_158 = 0;
  uStack_150 = 0;
  local_148 = 1;
  if (param_2 == 4) {
    local_88 = _DAT_1824c4b60;
    uStack_84 = _UNK_1824c4b64;
    uStack_80 = _UNK_1824c4b68;
    uStack_7c = _UNK_1824c4b6c;
    local_d8 = _DAT_1824c4b60;
    uStack_d4 = _UNK_1824c4b64;
    uStack_d0 = _UNK_1824c4b68;
    uStack_cc = _UNK_1824c4b6c;
    FUN_18129c940(&local_168,&local_d8,DAT_1824c3d64);
    local_78 = _DAT_1824c4b30;
    uStack_74 = _UNK_1824c4b34;
    uStack_70 = _UNK_1824c4b38;
    uStack_6c = _UNK_1824c4b3c;
    local_c8 = _DAT_1824c4b30;
    uStack_c4 = _UNK_1824c4b34;
    uStack_c0 = _UNK_1824c4b38;
    uStack_bc = _UNK_1824c4b3c;
    FUN_18129c940(&local_168,&local_c8,uVar3);
    puVar4 = (undefined8 *)FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_118,"close");
    FUN_1813379d0(puVar4,&local_118);
    *puVar4 = juce::LookAndFeel_V2::GlassWindowButton::vftable;
    puVar4[0x16] = juce::LookAndFeel_V2::GlassWindowButton::vftable;
    *(undefined4 *)(puVar4 + 0x39) = 0xffdd1100;
    FUN_1804ab000(puVar4 + 0x3a,&local_168);
    *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_158;
    *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_158._4_4_;
    *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_150;
    *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_150._4_4_;
    *(undefined1 *)(puVar4 + 0x3e) = local_148;
    FUN_1804ab000(puVar4 + 0x3f,&local_168);
    puVar4[0x41] = local_158;
    puVar4[0x42] = uStack_150;
    *(undefined1 *)(puVar4 + 0x43) = local_148;
  }
  else {
    if (param_2 != 1) {
      if (param_2 == 2) {
        local_58 = _DAT_1824c4b50;
        uStack_54 = _UNK_1824c4b54;
        uStack_50 = _UNK_1824c4b58;
        uStack_4c = _UNK_1824c4b5c;
        local_a8 = _DAT_1824c4b50;
        uStack_a4 = _UNK_1824c4b54;
        uStack_a0 = _UNK_1824c4b58;
        uStack_9c = _UNK_1824c4b5c;
        FUN_18129c940(&local_168,&local_a8,DAT_1824c3d3c);
        local_48 = _DAT_1824c4ad0;
        uStack_44 = _UNK_1824c4ad4;
        uStack_40 = _UNK_1824c4ad8;
        uStack_3c = _UNK_1824c4adc;
        local_98 = _DAT_1824c4ad0;
        uStack_94 = _UNK_1824c4ad4;
        uStack_90 = _UNK_1824c4ad8;
        uStack_8c = _UNK_1824c4adc;
        FUN_18129c940(&local_168,&local_98,uVar2);
        uVar3 = DAT_1824c44dc;
        uVar2 = DAT_1824c449c;
        local_140 = (void *)0x0;
        local_138 = 0;
        local_120 = 1;
        uStack_12c = 0x42340000;
        local_130 = 0x42340000;
        uStack_124 = 0x42c80000;
        uStack_128 = 0x42c80000;
        FUN_1804b02a0(&local_140,&DAT_1821df344,DAT_1824c449c,DAT_1824c44dc);
        FUN_18129ddd0(&local_140,0,uVar3);
        FUN_18129ddd0(&local_140,0,0);
        FUN_18129ddd0(&local_140,uVar3,0);
        FUN_18129ddd0(&local_140,uVar3,uVar2);
        FUN_18129d850(&local_140,uVar2,uVar2,uVar3,CONCAT44(uVar6,uVar3));
        local_100 = _DAT_1824c4780;
        uStack_f8 = _UNK_1824c4788;
        local_f0 = 0x3f800000;
        FUN_181297840(DAT_1824c4478,0,0,&local_140,&local_140,&local_100,DAT_1824c3ea4);
        puVar4 = (undefined8 *)FUN_1811316e0(0x220);
        FUN_18049c4e0(&local_108,"maximise");
        FUN_1813379d0(puVar4,&local_108);
        *puVar4 = juce::LookAndFeel_V2::GlassWindowButton::vftable;
        puVar4[0x16] = juce::LookAndFeel_V2::GlassWindowButton::vftable;
        *(undefined4 *)(puVar4 + 0x39) = 0xff119911;
        FUN_1804ab000(puVar4 + 0x3a,&local_168);
        *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_158;
        *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_158._4_4_;
        *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_150;
        *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_150._4_4_;
        *(undefined1 *)(puVar4 + 0x3e) = local_148;
        FUN_1804ab000(puVar4 + 0x3f,&local_140);
        puVar4[0x41] = CONCAT44(uStack_12c,local_130);
        puVar4[0x42] = CONCAT44(uStack_124,uStack_128);
        *(undefined1 *)(puVar4 + 0x43) = local_120;
        puVar5 = (uint *)(local_108 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        local_138 = local_138 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
        free(local_140);
      }
      goto LAB_18130b66d;
    }
    local_68 = _DAT_1824c4ad0;
    uStack_64 = _UNK_1824c4ad4;
    uStack_60 = _UNK_1824c4ad8;
    uStack_5c = _UNK_1824c4adc;
    local_b8 = _DAT_1824c4ad0;
    uStack_b4 = _UNK_1824c4ad4;
    uStack_b0 = _UNK_1824c4ad8;
    uStack_ac = _UNK_1824c4adc;
    FUN_18129c940(&local_168,&local_b8,DAT_1824c3d3c);
    puVar4 = (undefined8 *)FUN_1811316e0(0x220);
    FUN_18049c4e0(&local_110,"minimise");
    FUN_1813379d0(puVar4,&local_110);
    *puVar4 = juce::LookAndFeel_V2::GlassWindowButton::vftable;
    puVar4[0x16] = juce::LookAndFeel_V2::GlassWindowButton::vftable;
    *(undefined4 *)(puVar4 + 0x39) = 0xffaa8811;
    FUN_1804ab000(puVar4 + 0x3a,&local_168);
    *(undefined4 *)(puVar4 + 0x3c) = (undefined4)local_158;
    *(undefined4 *)((longlong)puVar4 + 0x1e4) = local_158._4_4_;
    *(undefined4 *)(puVar4 + 0x3d) = (undefined4)uStack_150;
    *(undefined4 *)((longlong)puVar4 + 0x1ec) = uStack_150._4_4_;
    *(undefined1 *)(puVar4 + 0x3e) = local_148;
    FUN_1804ab000(puVar4 + 0x3f,&local_168);
    puVar4[0x41] = local_158;
    puVar4[0x42] = uStack_150;
    *(undefined1 *)(puVar4 + 0x43) = local_148;
    local_118 = local_110;
  }
  puVar5 = (uint *)(local_118 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
LAB_18130b66d:
                    /* WARNING: Subroutine does not return */
  free(local_168);
}



############ FUN_ 18130c1d0 size=606 ############

void FUN_18130c1d0(undefined8 param_1,longlong param_2,int *param_3,char param_4,undefined8 param_5,
                  undefined8 param_6,longlong param_7)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  float fVar6;
  undefined4 local_res10;
  undefined4 local_res20;
  undefined8 *local_a8;
  undefined8 *local_a0;
  undefined8 local_98;
  undefined8 local_88;
  int iStack_80;
  int iStack_7c;
  float local_78;
  float fStack_74;
  float fStack_70;
  float fStack_6c;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  undefined8 local_58;
  undefined8 uStack_50;
  int local_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  
  local_98 = 0xfffffffffffffffe;
  fVar6 = DAT_1824c3df0;
  if (param_4 != '\0') {
    fVar6 = DAT_1824c3e58;
  }
  local_res20 = CONCAT13((char)(int)(fVar6 * DAT_1824c454c),(int3)DAT_18262b5a4);
  FUN_1812a3160(param_2,local_res20);
  local_res10 = CONCAT13(0x7f,(int3)DAT_18262b5b8);
  FUN_181296c00(param_2,local_res10);
  local_48 = *param_3;
  iStack_44 = param_3[1];
  iStack_40 = param_3[2];
  iStack_3c = param_3[3];
  fStack_6c = (float)iStack_3c;
  fStack_70 = (float)iStack_40;
  fStack_74 = (float)iStack_44;
  local_78 = (float)local_48;
  local_68 = local_78;
  fStack_64 = fStack_74;
  fStack_60 = fStack_70;
  fStack_5c = fStack_6c;
  FUN_181295950(param_2,&local_68);
  FUN_181296c00(param_2,DAT_18262b5a8);
  uVar4 = FUN_1811316e0(0x40);
  puVar5 = (undefined8 *)FUN_1804a2b80(uVar4,0);
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  local_a0 = puVar5;
  uVar3 = FUN_181252020(&local_a0);
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
  }
  local_a8 = puVar5;
  FUN_181251ed0(&local_a8,uVar3 | 1);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_a8);
  if (local_a8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_a8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_a8)(local_a8,1);
    }
  }
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar5 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  local_88 = 4;
  iStack_80 = param_3[2] + -6;
  iStack_7c = param_3[3];
  uStack_50 = CONCAT44(iStack_7c,iStack_80);
  local_58 = 4;
  FUN_181296100(param_2,param_7 + 8,&local_58,0x21,1,0);
  return;
}



############ FUN_ 18130c540 size=452 ############

undefined8 FUN_18130c540(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  int iVar2;
  undefined8 uVar3;
  longlong *plVar4;
  uint uVar5;
  uint *puVar6;
  longlong local_res20;
  longlong local_38 [3];
  undefined4 *local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  uVar3 = FUN_1811316e0(0x1c8);
  local_38[2] = uVar3;
  FUN_18049c4e0(&local_res20,"click to browse for a different file");
  lVar1 = DAT_1826739f8;
  local_20 = &DAT_182673984;
  do {
    LOCK();
    uVar5 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar5 != 0);
  if (DAT_1826739f8 == 0) {
    local_38[0] = local_res20;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
  }
  else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
          (iVar2 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,
                                 *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar2)) {
    iVar2 = FUN_1812498b0(lVar1 + 0x18,local_res20,*(undefined1 *)(lVar1 + 0x38),0);
    if (iVar2 < 0) {
      uVar5 = *(uint *)(local_res20 + -0x10);
      local_38[0] = local_res20;
    }
    else {
      plVar4 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar2);
      uVar5 = *(uint *)(*plVar4 + -0x10);
      local_38[0] = *plVar4;
    }
    if ((uVar5 & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_38[0] + -0x10) = *(int *)(local_38[0] + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    FUN_181234570(*(undefined8 *)(lVar1 + 0x40),local_38,&local_res20,&local_res20);
  }
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  uVar3 = FUN_181333920(uVar3,param_2,local_38);
  puVar6 = (uint *)(local_38[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return uVar3;
}



############ FUN_ 18130cbf0 size=183 ############

undefined8 *
FUN_18130cbf0(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x40);
  uVar2 = DAT_1824c4418;
  *(undefined4 *)(puVar3 + 1) = 0;
  *puVar3 = juce::Font::SharedFontInternal::vftable;
  puVar3[2] = 0;
  plVar4 = (longlong *)FUN_181252610();
  lVar1 = *plVar4;
  puVar3[3] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar3 + 4,&DAT_1824983b4,param_3,param_4,uVar5);
  *(undefined4 *)(puVar3 + 5) = uVar2;
  *(undefined8 *)((longlong)puVar3 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar3 + 0x34) = 0;
  *(undefined1 *)(puVar3 + 7) = 0;
  *param_2 = puVar3;
  LOCK();
  *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
  UNLOCK();
  return param_2;
}



############ FUN_ 18130cfb0 size=304 ############

undefined8 * FUN_18130cfb0(undefined8 param_1,undefined8 param_2,char param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  uint *puVar4;
  undefined *puVar5;
  bool bVar6;
  longlong local_28 [2];
  undefined8 *local_18;
  undefined1 *local_10;
  
  local_28[1] = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)FUN_1811316e0(0x1c8);
  puVar5 = &DAT_1821e2d7c;
  if (param_3 != '\0') {
    puVar5 = &DAT_1821e2d9c;
  }
  local_18 = puVar3;
  FUN_18049c4e0(local_28,puVar5);
  local_10 = &DAT_1821dbf98;
  FUN_1813379d0(puVar3,local_28);
  *puVar3 = juce::TextButton::vftable;
  puVar3[0x16] = juce::TextButton::vftable;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = puVar3[0x17];
  puVar3[0x17] = &DAT_1821dbf98;
  UNLOCK();
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  *(undefined1 *)((longlong)puVar3 + 0x1c6) = 0;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar6 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar6) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  puVar4 = (uint *)(local_28[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return puVar3;
}



############ FUN_ 18130db20 size=928 ############

void FUN_18130db20(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                  undefined4 param_9,int param_10,longlong param_11)

{
  longlong *plVar1;
  longlong lVar2;
  bool bVar3;
  bool bVar4;
  int iVar5;
  longlong lVar6;
  char cVar7;
  undefined4 *puVar8;
  longlong lVar9;
  longlong *plVar10;
  undefined8 in_stack_ffffffffffffff50;
  undefined4 uVar11;
  undefined8 local_78 [2];
  undefined1 local_68 [8];
  undefined8 local_60;
  
  lVar6 = param_11;
  uVar11 = (undefined4)((ulonglong)in_stack_ffffffffffffff50 >> 0x20);
  local_60 = 0xfffffffffffffffe;
  puVar8 = (undefined4 *)FUN_18134a8d0(param_11,local_78,0x1001200,0);
  FUN_1812a3160(param_2,*puVar8);
  iVar5 = param_10;
  if (param_10 - 2U < 2) {
    cVar7 = FUN_18133e440(lVar6);
    if (((cVar7 == '\0') || ((*(byte *)(lVar6 + 0xa9) & 0x10) != 0)) ||
       ((*(longlong *)(lVar6 + 0x18) != 0 && (cVar7 = FUN_18133eaa0(), cVar7 == '\0')))) {
      bVar4 = false;
      if (DAT_182673700 == 0) {
        local_78[0] = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_78[0]);
      }
      plVar10 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
      plVar1 = plVar10 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
      for (; plVar10 != plVar1; plVar10 = plVar10 + 1) {
        lVar2 = *(longlong *)(*plVar10 + 0x48);
        lVar9 = 0;
        if (lVar2 != 0) {
          lVar9 = *(longlong *)(lVar2 + 0x10);
        }
        if ((lVar9 == lVar6) && (bVar3 = false, (*(byte *)(*plVar10 + 0x28) & 0x70) != 0))
        goto LAB_18130dc63;
      }
      bVar3 = false;
    }
    else {
      bVar3 = true;
LAB_18130dc63:
      bVar4 = bVar3;
      bVar3 = true;
    }
    if (((*(byte *)(lVar6 + 0xa9) & 0x10) == 0) && (*(longlong *)(lVar6 + 0x18) != 0)) {
      FUN_18133eaa0();
    }
    puVar8 = (undefined4 *)FUN_18134a8d0(lVar6,local_68,0x1001300,0);
    FUN_18049fa40(local_78,*puVar8);
    FUN_18049fbb0(&param_10);
    FUN_18049fa40(local_78,param_10);
    FUN_18049fbb0(&param_10);
    if (bVar3) {
      FUN_1812a24b0(&param_10,local_78);
    }
    else if (bVar4) {
      FUN_1812a24b0(&param_10,local_78);
    }
    else {
      local_78[0] = CONCAT44(local_78[0]._4_4_,param_10);
    }
    if (((*(byte *)(lVar6 + 0xa9) & 0x10) == 0) && (*(longlong *)(lVar6 + 0x18) != 0)) {
      FUN_18133eaa0();
    }
    FUN_181305bb0();
  }
  else {
    (**(code **)(*param_1 + 0x10))
              (param_1,param_2,param_3,param_4,param_5,param_6,param_7,CONCAT44(uVar11,param_8),
               param_9,param_10,lVar6);
    (**(code **)(*param_1 + 0x18))
              (param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,iVar5,lVar6);
  }
  return;
}



############ FUN_ 18130ded0 size=1271 ############

void FUN_18130ded0(longlong *param_1,undefined8 param_2,int param_3,int param_4,int param_5,
                  int param_6,float param_7,float param_8,float param_9,int param_10,
                  longlong param_11)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  char cVar4;
  int iVar5;
  longlong lVar6;
  undefined4 *puVar7;
  longlong *plVar8;
  undefined1 uVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  float fVar12;
  undefined1 auVar14 [12];
  undefined1 auVar13 [16];
  undefined1 auVar16 [12];
  undefined1 auVar15 [16];
  float fVar17;
  float fVar18;
  undefined4 uVar19;
  undefined1 local_res8 [8];
  
  lVar3 = param_11;
  iVar5 = (**(code **)(*param_1 + 0x20))(param_1,param_11);
  fVar18 = (float)(iVar5 + -2);
  if (DAT_182673700 == 0) {
    param_11 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(param_11);
  }
  plVar8 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar8 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  for (; plVar8 != plVar1; plVar8 = plVar8 + 1) {
    lVar2 = *(longlong *)(*plVar8 + 0x48);
    lVar6 = 0;
    if (lVar2 != 0) {
      lVar6 = *(longlong *)(lVar2 + 0x10);
    }
    if ((lVar6 == lVar3) && ((*(byte *)(*plVar8 + 0x28) & 0x70) != 0)) {
      if (((*(byte *)(lVar3 + 0xa9) & 0x10) == 0) &&
         ((*(longlong *)(lVar3 + 0x18) == 0 || (cVar4 = FUN_18133eaa0(), cVar4 != '\0')))) {
        uVar9 = 1;
        goto LAB_18130dfc3;
      }
      break;
    }
  }
  uVar9 = 0;
LAB_18130dfc3:
  cVar4 = FUN_18133e440(lVar3);
  if (((cVar4 == '\0') || ((*(byte *)(lVar3 + 0xa9) & 0x10) != 0)) ||
     ((*(longlong *)(lVar3 + 0x18) != 0 && (cVar4 = FUN_18133eaa0(), cVar4 == '\0')))) {
    uVar10 = 0;
  }
  else {
    uVar10 = 1;
  }
  if (((DAT_182673708 == lVar3) && ((*(byte *)(lVar3 + 0xa9) & 0x10) == 0)) &&
     ((*(longlong *)(lVar3 + 0x18) == 0 || (cVar4 = FUN_18133eaa0(), cVar4 != '\0')))) {
    uVar11 = 1;
  }
  else {
    uVar11 = 0;
  }
  puVar7 = (undefined4 *)FUN_18134a8d0(lVar3,local_res8,0x1001300,0);
  FUN_181315720(&param_11,*puVar7,uVar11,uVar10,uVar9);
  uVar19 = DAT_1824c3d54;
  if (((*(byte *)(lVar3 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(lVar3 + 0x18) == 0 ||
      (cVar4 = FUN_18133eaa0(), uVar19 = DAT_1824c3d54, cVar4 != '\0')))) {
    uVar19 = DAT_1824c3e28;
  }
  fVar17 = DAT_1824c41e0;
  fVar12 = DAT_1824c3d8c;
  if (param_10 == 0) {
    auVar14 = (undefined1  [12])0x0;
    auVar16 = ZEXT812(0);
    fVar12 = (float)param_6 * DAT_1824c3d8c + (float)param_4;
  }
  else {
    if (param_10 != 1) {
      if (param_10 == 0xc) {
        FUN_181305260(param_2,((float)param_5 * DAT_1824c3d8c + (float)param_3) - fVar18,
                      param_7 - fVar18,fVar18 * DAT_1824c41e0,&param_11,uVar19);
LAB_18130e10f:
        fVar12 = ((float)param_5 * fVar12 + (float)param_3) - fVar18 * fVar17;
        if (fVar12 <= 0.0) {
          fVar12 = 0.0;
        }
        FUN_181304950(param_2,fVar12,param_8 - fVar18);
        FUN_181304950(param_2);
        return;
      }
      if (param_10 == 0xb) {
        FUN_181305260(param_2,param_7 - fVar18,
                      ((float)param_6 * DAT_1824c3d8c + (float)param_4) - fVar18,
                      fVar18 * DAT_1824c41e0,&param_11,uVar19);
      }
      else {
        if (param_10 == 10) goto LAB_18130e10f;
        if (param_10 != 9) {
          return;
        }
      }
      fVar12 = ((float)param_6 * fVar12 + (float)param_4) - fVar18 * fVar17;
      if (fVar12 <= 0.0) {
        fVar12 = 0.0;
      }
      fVar17 = (float)param_6 * DAT_1824c3d74;
      if (fVar18 <= fVar17) {
        fVar17 = fVar18;
      }
      FUN_181304950(param_2,param_8 - fVar17,fVar12);
      FUN_181304950(param_2,param_9 - fVar18);
      return;
    }
    auVar14 = ZEXT812(0);
    auVar16 = (undefined1  [12])0x0;
    fVar12 = param_7;
    param_7 = (float)param_5 * DAT_1824c3d8c + (float)param_3;
  }
  auVar15._0_4_ = fVar12 - fVar18;
  auVar15._4_12_ = auVar16;
  auVar13._0_4_ = param_7 - fVar18;
  auVar13._4_12_ = auVar14;
  FUN_181305260(param_2,auVar13._0_8_,auVar15._0_8_,fVar18 * DAT_1824c41e0,&param_11,uVar19);
  return;
}



############ FUN_ 18130f1f0 size=204 ############

undefined8 FUN_18130f1f0(void)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  bool bVar5;
  undefined1 *local_res20;
  undefined1 *local_28;
  undefined8 local_20;
  undefined8 local_18;
  
  local_20 = 0xfffffffffffffffe;
  local_18 = FUN_1811316e0(0x208);
  local_28 = &DAT_1821dbf98;
  local_res20 = &DAT_1821dbf98;
  uVar4 = FUN_18134a080(local_18,&local_res20,&local_28);
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_res20 + -0x10);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(local_res20 + -0x10);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar5 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar5) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return uVar4;
}



############ FUN_ 18130f9a0 size=224 ############

undefined8 * FUN_18130f9a0(undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)FUN_1811316e0(0xd0);
  puVar1[1] = &DAT_1821dbf98;
  puVar1[2] = &DAT_1821dbf98;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  puVar1[7] = 0;
  puVar1[8] = 0;
  puVar1[9] = 0;
  puVar1[10] = 0;
  puVar1[0xb] = 0;
  puVar1[0xc] = 0;
  puVar1[0xd] = 0;
  puVar1[0xe] = 0;
  puVar1[0xf] = 0;
  puVar1[0x10] = 0;
  puVar1[0x11] = 0;
  puVar1[0x12] = 0;
  puVar1[0x13] = 0;
  puVar1[0x14] = 0;
  *(undefined4 *)(puVar1 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar1 + 0xac) = 0;
  puVar1[0x17] = 0xffffffffffffffff;
  *(undefined4 *)(puVar1 + 0x18) = 0;
  *(byte *)((longlong)puVar1 + 0xa9) = *(byte *)((longlong)puVar1 + 0xa9) | 0x40;
  *puVar1 = juce::CaretComponent::vftable;
  puVar1[0x16] = juce::CaretComponent::vftable;
  puVar1[0x19] = param_2;
  *(byte *)(puVar1 + 0x15) = *(byte *)(puVar1 + 0x15) & 0xef | 8;
  return puVar1;
}



############ FUN_ 181311540 size=64 ############

longlong * FUN_181311540(undefined8 param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2b80(uVar1,0,DAT_1824c4420);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 1813135c0 size=64 ############

longlong * FUN_1813135c0(undefined8 param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2b80(uVar1,0,DAT_1824c4408);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 181313610 size=64 ############

longlong * FUN_181313610(undefined8 param_1,longlong *param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  
  uVar1 = FUN_1811316e0(0x40);
  lVar2 = FUN_1804a2b80(uVar1,0,DAT_1824c4418);
  *param_2 = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 1813138a0 size=1611 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813138a0(undefined8 param_1,longlong param_2,longlong param_3,int *param_4,
                  undefined8 param_5)

{
  int *piVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  undefined4 *puVar5;
  longlong lVar6;
  float **ppfVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  uint *_Memory;
  float *pfVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  int iVar14;
  float fVar15;
  float fVar16;
  undefined1 local_res20 [8];
  float *local_1b8;
  undefined8 local_1b0;
  undefined8 local_1a8;
  undefined8 uStack_1a0;
  undefined1 local_198;
  void *local_190;
  undefined8 local_188;
  undefined8 *local_180;
  undefined8 local_178;
  undefined8 uStack_170;
  ulonglong local_168;
  undefined4 local_160;
  undefined1 local_15c [4];
  undefined1 local_158 [8];
  float local_150;
  float local_14c;
  longlong local_148;
  float local_140;
  float fStack_13c;
  float fStack_138;
  float fStack_134;
  float *local_120;
  undefined4 local_118;
  undefined4 local_114;
  undefined8 local_110;
  float local_108;
  float *local_100;
  int local_f8;
  int local_f4;
  float local_e8;
  float fStack_e4;
  float fStack_e0;
  float fStack_dc;
  float local_d8;
  float fStack_d4;
  float fStack_d0;
  float fStack_cc;
  void *local_c8;
  undefined4 local_bc;
  
  local_110 = 0xfffffffffffffffe;
  puVar5 = (undefined4 *)FUN_18134a8d0(param_3,local_res20,0x1001800,0);
  FUN_1812a3160(param_2,*puVar5);
  iVar4 = *(int *)(param_3 + 0x2c) + 0x14;
  iVar14 = 0x82;
  if (iVar4 < 0x82) {
    iVar14 = iVar4;
  }
  if (((0 < *(int *)(param_3 + 0x1ac)) || (2 < *(int *)(param_3 + 0x14c))) &&
     (param_4[3] + 0x32 < iVar14)) {
    iVar14 = param_4[3] + 0x32;
  }
  iVar4 = (int)((ulonglong)((longlong)iVar14 * -0x66666667) >> 0x20);
  local_f8 = (iVar4 >> 2) - (iVar4 >> 0x1f);
  iVar4 = *(int *)(param_3 + 0xe8);
  local_f4 = local_f8;
  if (iVar4 == 0) {
    puVar5 = (undefined4 *)FUN_18134a8d0(param_3,local_15c,0x1001810,0);
    FUN_181296c00(param_2,*puVar5);
    local_d8 = (float)*param_4;
    fStack_d4 = (float)param_4[1];
    fStack_d0 = (float)param_4[2];
    fStack_cc = (float)param_4[3];
    FUN_18124e500(param_5,param_2,&local_d8);
    puVar5 = (undefined4 *)FUN_18134a8d0(param_3,local_158,0x1001820,0);
    FUN_181296c00(param_2,*puVar5);
    FUN_181295c90(param_2,0,0,*(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),1);
    return;
  }
  local_1b8 = (float *)0x0;
  local_1b0 = (float *)0x0;
  local_1a8 = (float *)0x0;
  uStack_1a0 = (float *)0x0;
  local_198 = 1;
  local_140 = (float)local_f8;
  fVar16 = (float)iVar14;
  local_14c = (float)local_f8;
  if (iVar4 == 2) {
    local_150 = fVar16 * DAT_1824c3d8c + local_140;
    local_1a8 = (float *)CONCAT44(local_150,local_150);
    uStack_1a0 = (float *)CONCAT44(local_14c,local_14c);
    local_108 = local_140;
    FUN_1804b02a0(&local_1b8,&DAT_1821df344);
    FUN_18129ddd0(&local_1b8);
    FUN_18129ddd0(&local_1b8);
    if ((local_1b0._4_4_ != 0) &&
       ((local_1b0._4_4_ < 1 || (local_1b8[local_1b0._4_4_ + -1] != DAT_1824c460c)))) {
      if ((int)local_1b0 < local_1b0._4_4_ + 1) {
        FUN_1804af790(&local_1b8,local_1b0._4_4_ + 9 + (local_1b0._4_4_ + 1) / 2 & 0xfffffff8);
      }
      lVar6 = (longlong)local_1b0._4_4_;
      local_1b0 = (float *)CONCAT44(local_1b0._4_4_ + 1,(int)local_1b0);
      local_1b8[lVar6] = 100005.0;
    }
    ppfVar7 = (float **)FUN_18129a910(&local_1b8,&local_c8);
    pfVar11 = local_1b8;
    if (&local_1b8 != ppfVar7) {
      local_120 = *ppfVar7;
      *ppfVar7 = (float *)0x0;
      local_118 = *(undefined4 *)(ppfVar7 + 1);
      local_114 = *(undefined4 *)((longlong)ppfVar7 + 0xc);
      local_1b0 = ppfVar7[1];
      ppfVar7[1] = (float *)0x0;
      local_100 = local_1b8;
      local_1b8 = local_120;
                    /* WARNING: Subroutine does not return */
      free(pfVar11);
    }
    local_1a8 = ppfVar7[2];
    uStack_1a0 = ppfVar7[3];
    local_198 = *(undefined1 *)(ppfVar7 + 4);
    local_bc = 0;
                    /* WARNING: Subroutine does not return */
    free(local_c8);
  }
  uVar13 = 0x40b69900;
  if (iVar4 == 3) {
    uVar13 = 0x605555ff;
  }
  uVar12 = 0x3f;
  if (iVar4 == 3) {
    uVar12 = 0x69;
  }
  fStack_13c = local_14c;
  fStack_138 = fVar16;
  fStack_134 = fVar16;
  local_e8 = local_140;
  fStack_e4 = local_14c;
  fStack_e0 = fVar16;
  fStack_dc = fVar16;
  FUN_18129d1e0(&local_1b8,&local_e8);
  local_190 = (void *)0x0;
  local_188 = 0;
  FUN_1804aebd0(&local_190,200);
  uVar8 = FUN_181233f40(&local_148,uVar12);
  fVar16 = fVar16 * DAT_1824c3e58;
  puVar9 = (undefined8 *)FUN_1811316e0(0x40);
  fVar15 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar16) && (fVar15 = DAT_1824c45c8, fVar16 <= DAT_1824c45c8)) {
    fVar15 = fVar16;
  }
  *(undefined4 *)(puVar9 + 1) = 0;
  *puVar9 = juce::Font::SharedFontInternal::vftable;
  puVar9[2] = 0;
  plVar10 = (longlong *)FUN_181252610();
  lVar6 = *plVar10;
  puVar9[3] = lVar6;
  if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(puVar9 + 4,&DAT_1824983b4);
  *(float *)(puVar9 + 5) = fVar15;
  *(undefined8 *)((longlong)puVar9 + 0x2c) = 0x3f800000;
  *(undefined4 *)((longlong)puVar9 + 0x34) = 0;
  *(undefined1 *)(puVar9 + 7) = 0;
  LOCK();
  *(int *)(puVar9 + 1) = *(int *)(puVar9 + 1) + 1;
  UNLOCK();
  local_160 = 0x24;
  local_180 = puVar9;
  FUN_181250750(&local_190,&local_180,uVar8);
  if (local_180 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_180 + 1);
    iVar14 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar14 == 1) {
      (**(code **)*local_180)(local_180,1);
    }
  }
  _Memory = (uint *)(local_148 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18124ee80(&local_190,&local_1b8);
  local_198 = 0;
  FUN_181296c00(param_2,uVar13);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    for (pfVar11 = local_1b8; pfVar11 != local_1b8 + local_1b0._4_4_; pfVar11 = pfVar11 + 1) {
      fVar16 = *pfVar11;
      if (fVar16 == DAT_1824c4600) {
        pfVar11 = pfVar11 + 2;
      }
      else if (((fVar16 == DAT_1824c45fc) || (fVar16 == DAT_1824c4604)) || (fVar16 == DAT_1824c4608)
              ) {
        local_178 = _DAT_1824c4780;
        uStack_170 = _UNK_1824c4788;
        local_168 = (ulonglong)DAT_1824c3ea4;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_1b8,&local_178);
        break;
      }
    }
  }
  FUN_1804aeb50(&local_190);
                    /* WARNING: Subroutine does not return */
  free(local_190);
}



############ FUN_ 1813142e0 size=413 ############

void FUN_1813142e0(undefined8 param_1,longlong param_2)

{
  int *piVar1;
  byte bVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  longlong *plVar5;
  byte *pbVar6;
  int iVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined8 *local_res10;
  double local_res18;
  
  fVar9 = (float)*(int *)(param_2 + 0x2c) * DAT_1824c3e10;
  if (DAT_1824c4418 <= fVar9) {
    fVar9 = DAT_1824c4418;
  }
  fVar10 = fVar9 * DAT_1824c3ee0;
  uVar4 = FUN_1811316e0(0x40);
  fVar8 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar9) && (fVar8 = DAT_1824c45c8, fVar9 <= DAT_1824c45c8)) {
    fVar8 = fVar9;
  }
  local_res10 = (undefined8 *)FUN_1804a2b80(uVar4,0,fVar8);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  uVar3 = *(undefined4 *)(param_2 + 0x2c);
  plVar5 = (longlong *)FUN_181252280(&local_res10);
  fVar9 = (float)(**(code **)(*plVar5 + 0x28))(plVar5,param_2 + 0x158);
  if (*(float *)(local_res10 + 6) != 0.0) {
    pbVar6 = *(byte **)(param_2 + 0x158);
    iVar7 = 0;
LAB_1813143a6:
    do {
      bVar2 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar6 & 0xc0) == 0x80) {
          do {
            pbVar6 = pbVar6 + 1;
          } while ((*pbVar6 & 0xc0) == 0x80);
          iVar7 = iVar7 + 1;
          goto LAB_1813143a6;
        }
      }
      else if (bVar2 == 0) goto LAB_1813143dc;
      iVar7 = iVar7 + 1;
    } while( true );
  }
LAB_1813143ec:
  fVar9 = ceilf(fVar9 * *(float *)(local_res10 + 5) * *(float *)((longlong)local_res10 + 0x2c));
  local_res18 = (double)fVar10 + DAT_1824c4520;
  FUN_18134bfe0(param_2,*(undefined4 *)(param_2 + 0x20),*(undefined4 *)(param_2 + 0x24),
                local_res18._0_4_ + 9 + (int)fVar9,uVar3);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  return;
LAB_1813143dc:
  fVar9 = fVar9 + (float)iVar7 * *(float *)(local_res10 + 6);
  goto LAB_1813143ec;
}



############ FUN_ 181315800 size=304 ############

undefined8 *
FUN_181315800(undefined8 param_1,undefined8 *param_2,longlong *param_3,undefined8 param_4,
             undefined8 param_5)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  puVar3 = (undefined8 *)FUN_1811316e0(0x78);
  puVar4 = (undefined8 *)FUN_1811316e0(0x20);
  *(undefined4 *)(puVar4 + 1) = 0;
  *puVar4 = juce::RenderingHelpers::ClipRegions<juce::RenderingHelpers::SoftwareRendererSavedState>
            ::RectangleListRegion::vftable;
  FUN_1804aaeb0(puVar4 + 2,param_5);
  *puVar3 = puVar4;
  *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
  puVar3[1] = 0x3f800000;
  puVar3[2] = 0;
  puVar3[3] = 0x3f800000;
  puVar3[4] = param_4;
  *(undefined2 *)(puVar3 + 5) = 1;
  *(undefined4 *)(puVar3 + 6) = 0xff000000;
  puVar3[7] = 0;
  puVar3[8] = 0;
  puVar3[9] = 0x3f800000;
  puVar3[10] = 0;
  puVar3[0xb] = 0x3f800000;
  *(undefined4 *)(puVar3 + 0xc) = 1;
  *(undefined4 *)((longlong)puVar3 + 100) = 0x3f800000;
  lVar1 = *param_3;
  puVar3[0xd] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  FUN_181252d20(puVar3 + 0xe);
  puVar2[1] = puVar3;
  puVar2[2] = 0;
  puVar2[3] = 0;
  *puVar2 = juce::LowLevelGraphicsSoftwareRenderer::vftable;
  *param_2 = puVar2;
  return param_2;
}



############ FUN_ 181315b00 size=199 ############

longlong FUN_181315b00(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  lVar3 = DAT_182673700;
  plVar1 = (longlong *)(DAT_182673700 + 0x98);
  lVar5 = *plVar1;
  if (lVar5 == 0) {
    lVar5 = 0;
  }
  else {
    lVar5 = *(longlong *)(lVar5 + 0x10);
  }
  if (lVar5 != 0) {
    return lVar5;
  }
  if (*(longlong *)(DAT_182673700 + 0x90) == 0) {
    uVar4 = FUN_1811316e0(0x170);
    uVar4 = FUN_1812fbfd0(uVar4);
    puVar2 = *(undefined8 **)(lVar3 + 0x90);
    *(undefined8 *)(lVar3 + 0x90) = uVar4;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  lVar5 = *(longlong *)(lVar3 + 0x90);
  FUN_18051b750(plVar1,lVar5,param_3,param_4,uVar6);
  return lVar5;
}



############ FUN_ 18133c440 size=147 ############

longlong FUN_18133c440(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar2 = *(longlong *)(param_1 + 0x98);
  if (lVar2 == 0) {
    lVar2 = 0;
  }
  else {
    lVar2 = *(longlong *)(lVar2 + 0x10);
  }
  if (lVar2 == 0) {
    if (*(longlong *)(param_1 + 0x90) == 0) {
      uVar3 = FUN_1811316e0(0x170);
      uVar3 = FUN_1812fbfd0(uVar3);
      puVar1 = *(undefined8 **)(param_1 + 0x90);
      *(undefined8 *)(param_1 + 0x90) = uVar3;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
    }
    lVar2 = *(longlong *)(param_1 + 0x90);
    FUN_18051b750((longlong *)(param_1 + 0x98),lVar2,param_3,param_4,uVar4);
  }
  return lVar2;
}



############ FUN_ 181316130 size=51 ############

void FUN_181316130(undefined8 param_1,undefined1 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x150);
  FUN_18131e970(uVar1,param_2,param_3,param_4,uVar2);
  return;
}



############ FUN_ 181319d00 size=536 ############

void FUN_181319d00(longlong *param_1,longlong *param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong lVar5;
  int iVar6;
  undefined4 uVar7;
  int *piVar8;
  longlong *plVar9;
  void *_Src;
  undefined8 *puVar10;
  longlong lVar11;
  
  if (*(char *)*param_2 != '\0') {
    uVar1 = *(uint *)((longlong)param_1 + 0xf4);
    plVar3 = param_1 + 0x1d;
    if (*(uint *)(param_1 + 0x21) < *(uint *)((longlong)param_1 + 0xf4)) {
      lVar11 = *(longlong *)(*plVar3 + (longlong)(int)*(uint *)(param_1 + 0x21) * 8);
    }
    else {
      lVar11 = 0;
    }
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    *plVar4 = 0;
    plVar4[1] = (longlong)&DAT_1821dbf98;
    *(undefined4 *)(plVar4 + 2) = 0;
    if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar8 = (int *)(*param_2 + -0x10);
      *piVar8 = *piVar8 + 1;
      UNLOCK();
    }
    LOCK();
    lVar5 = plVar4[1];
    plVar4[1] = *param_2;
    UNLOCK();
    piVar8 = (int *)(lVar5 + -0x10);
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar6 = *piVar8;
      *piVar8 = *piVar8 + -1;
      UNLOCK();
      if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar8);
      }
    }
    *(undefined4 *)(plVar4 + 2) = param_3;
    lVar5 = (**(code **)(*param_1 + 0x168))(param_1,param_2,uVar1);
    puVar10 = (undefined8 *)*plVar4;
    *plVar4 = lVar5;
    if (puVar10 != (undefined8 *)0x0) {
      (**(code **)*puVar10)(puVar10,1);
    }
    iVar6 = *(int *)((longlong)param_1 + 0xf4) + 1;
    if ((int)param_1[0x1e] < iVar6) {
      FUN_18047cb30(plVar3,*(int *)((longlong)param_1 + 0xf4) + 9 + iVar6 / 2 & 0xfffffff8);
    }
    uVar2 = *(uint *)((longlong)param_1 + 0xf4);
    if (uVar1 < uVar2) {
      _Src = (void *)(*plVar3 + (longlong)(int)uVar1 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar2 - uVar1) << 3);
      puVar10 = (undefined8 *)(*plVar3 + (longlong)(int)uVar1 * 8);
    }
    else {
      puVar10 = (undefined8 *)(*plVar3 + (longlong)(int)uVar2 * 8);
    }
    *puVar10 = plVar4;
    *(int *)((longlong)param_1 + 0xf4) = *(int *)((longlong)param_1 + 0xf4) + 1;
    plVar3 = (longlong *)*plVar3;
    for (plVar9 = plVar3; plVar9 != plVar3 + *(int *)((longlong)param_1 + 0xf4); plVar9 = plVar9 + 1
        ) {
      if (lVar11 == *plVar9) {
        uVar7 = (undefined4)((longlong)plVar9 - (longlong)plVar3 >> 3);
        goto LAB_181319e93;
      }
    }
    uVar7 = 0xffffffff;
LAB_181319e93:
    *(undefined4 *)(param_1 + 0x21) = uVar7;
    plVar4 = (longlong *)*plVar4;
    if (plVar4 != (longlong *)0x0) {
      (**(code **)(*plVar4 + 0x58))
                (plVar4,CONCAT71((int7)((ulonglong)(plVar3 + *(int *)((longlong)param_1 + 0xf4)) >>
                                       8),1));
      FUN_181343cc0(param_1,plVar4,uVar1);
    }
    if (*(code **)(*param_1 + 0x108) == thunk_FUN_181319110) {
      FUN_181319110();
    }
    else {
      (**(code **)(*param_1 + 0x108))(param_1);
    }
    if ((int)param_1[0x21] < 0) {
      FUN_181319980(param_1,0);
      return;
    }
  }
  return;
}



############ FUN_ 181318800 size=71 ############

void FUN_181318800(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x1e8);
  FUN_18131ab40(uVar1,param_2,*(undefined8 *)(param_1 + 0xb0),param_4,uVar2);
  return;
}



############ FUN_ 181318930 size=343 ############

undefined8 *
FUN_181318930(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::TabbedComponent::vftable;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  *(undefined4 *)(param_1 + 0x1a) = 0x1e;
  *(undefined8 *)((longlong)param_1 + 0xd4) = 1;
  puVar3 = (undefined8 *)FUN_1811316e0(0x128);
  FUN_18131a0e0(puVar3);
  *puVar3 = juce::TabbedComponent::ButtonBar::vftable;
  puVar3[0x16] = juce::TabbedComponent::ButtonBar::vftable;
  puVar3[0x24] = param_1;
  puVar1 = (undefined8 *)param_1[0x16];
  param_1[0x16] = puVar3;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  plVar2 = (longlong *)param_1[0x16];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x58))(plVar2,1);
    FUN_181343cc0(param_1,plVar2,0xffffffff,param_4,uVar4);
  }
  return param_1;
}



############ FUN_ 18131a0e0 size=575 ############

undefined8 *
FUN_18131a0e0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  *param_1 = juce::Component::vftable;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  puVar1 = param_1 + 0x16;
  *puVar1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0(param_1 + 0x17);
  param_1[0x17] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  *(undefined1 *)(param_1 + 0x1c) = 0;
  param_1[0x19] = puVar1;
  *param_1 = juce::TabbedButtonBar::vftable;
  *puVar1 = juce::TabbedButtonBar::vftable;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  *(undefined4 *)(param_1 + 0x1f) = 0;
  param_1[0x20] = 0x3fe6666666666666;
  *(undefined4 *)(param_1 + 0x21) = 0xffffffff;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x18;
  puVar3 = (undefined8 *)FUN_1811316e0(0xb8);
  puVar3[1] = &DAT_1821dbf98;
  puVar3[2] = &DAT_1821dbf98;
  puVar3[3] = 0;
  puVar3[4] = 0;
  puVar3[5] = 0;
  puVar3[6] = 0;
  puVar3[7] = 0;
  puVar3[8] = 0;
  puVar3[9] = 0;
  puVar3[10] = 0;
  puVar3[0xb] = 0;
  puVar3[0xc] = 0;
  puVar3[0xd] = 0;
  puVar3[0xe] = 0;
  puVar3[0xf] = 0;
  puVar3[0x10] = 0;
  puVar3[0x11] = 0;
  puVar3[0x12] = 0;
  puVar3[0x13] = 0;
  puVar3[0x14] = 0;
  *(undefined4 *)(puVar3 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar3 + 0xac) = 0;
  *puVar3 = juce::TabbedButtonBar::BehindFrontTabComp::vftable;
  puVar3[0x16] = param_1;
  *(byte *)(puVar3 + 0x15) = *(byte *)(puVar3 + 0x15) & 0xef | 8;
  puVar1 = (undefined8 *)param_1[0x22];
  param_1[0x22] = puVar3;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  plVar2 = (longlong *)param_1[0x22];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x58))(plVar2,1);
    FUN_181343cc0(param_1,plVar2,0xffffffff,param_4,uVar4);
  }
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x40;
  return param_1;
}



############ FUN_ 181319fb0 size=67 ############

void FUN_181319fb0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  uVar1 = FUN_1811316e0(0x1e8);
  FUN_18131ab40(uVar1,param_2,param_1,param_4,uVar2);
  return;
}



############ FUN_ 18131b0e0 size=240 ############

void FUN_18131b0e0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong lVar4;
  undefined1 uVar5;
  longlong lVar6;
  undefined8 uVar7;
  longlong *plVar8;
  longlong lVar9;
  undefined1 uVar10;
  
  lVar6 = FUN_18134adf0();
  if (DAT_182673700 == 0) {
    uVar7 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar7);
  }
  plVar8 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar8 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  do {
    if (plVar8 == plVar1) {
      uVar10 = 0;
LAB_18131b179:
      uVar2 = *(undefined4 *)(param_1 + 0x2c);
      uVar3 = *(undefined4 *)(param_1 + 0x28);
      lVar4 = *(longlong *)(lVar6 + 0xc0);
      uVar5 = FUN_18133e590(param_1,0);
      (**(code **)(lVar4 + 8))
                (lVar6 + 0xc0,param_2,uVar3,uVar2,*(undefined1 *)(param_1 + 0xc0),uVar5,uVar10);
      return;
    }
    lVar4 = *(longlong *)(*plVar8 + 0x48);
    lVar9 = 0;
    if (lVar4 != 0) {
      lVar9 = *(longlong *)(lVar4 + 0x10);
    }
    if ((lVar9 == param_1) && ((*(byte *)(*plVar8 + 0x28) & 0x70) != 0)) {
      uVar10 = 1;
      goto LAB_18131b179;
    }
    plVar8 = plVar8 + 1;
  } while( true );
}



############ FUN_ 18131cfb0 size=243 ############

void FUN_18131cfb0(longlong param_1,undefined1 param_2)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 local_res8 [4];
  undefined8 uVar4;
  undefined1 local_20 [24];
  
  uVar4 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0x138) != 0) {
    *(undefined1 *)(param_1 + 0x5b9) = param_2;
    if (DAT_182673700 == 0) {
      local_res8[0] = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_res8[0]);
    }
    lVar3 = DAT_182673700;
    uVar2 = FUN_18131c3d0(param_1,local_20,*(undefined8 *)(param_1 + 0x138));
    FUN_181323e20(lVar3 + 200,param_1,uVar2,DAT_1824c3ea4,0xfa,1,DAT_1824c4140,0,uVar4);
    if (*(longlong *)(param_1 + 0x130) != 0) {
      local_res8[0] = CONCAT71(local_res8[0]._1_7_,*(undefined1 *)(param_1 + 0x5b9));
      plVar1 = *(longlong **)(param_1 + 0x130);
      if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      if (*(code **)(*plVar1 + 0x10) != _guard_check_icall) {
        (**(code **)(*plVar1 + 0x10))(plVar1,local_res8);
        return;
      }
    }
  }
  return;
}



############ FUN_ 18131d4e0 size=313 ############

void FUN_18131d4e0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong lVar4;
  longlong *plVar5;
  double local_18;
  double dStack_10;
  
  if (DAT_182673700 == 0) {
    uVar3 = FUN_1811316e0(0x130,param_2,param_3,param_4,0xfffffffffffffffe);
    DAT_182673700 = FUN_18133c6c0(uVar3);
  }
  plVar5 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar5 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  while( true ) {
    if (plVar5 == plVar1) {
      FUN_1812a7720(param_1);
      return;
    }
    lVar2 = *(longlong *)(*plVar5 + 0x48);
    lVar4 = 0;
    if (lVar2 != 0) {
      lVar4 = *(longlong *)(lVar2 + 0x10);
    }
    if ((lVar4 == param_1 + -0xc0) && ((*(byte *)(*plVar5 + 0x28) & 0x70) != 0)) break;
    plVar5 = plVar5 + 1;
  }
  FUN_1812a77d0(param_1,0x28);
  if (*(int *)(param_1 + 0x5c) < *(int *)(param_1 + 0x50)) {
    local_18 = *(double *)(param_1 + 0x30) - *(double *)(param_1 + 0x28);
    dStack_10 = *(double *)(param_1 + 0x30) - local_18;
    local_18 = *(double *)(param_1 + 0x28) - local_18;
    if (local_18 < dStack_10) goto LAB_18131d5e3;
  }
  else {
    if (*(int *)(param_1 + 0x5c) <= *(int *)(param_1 + 0x50) + *(int *)(param_1 + 0x54)) {
      return;
    }
    local_18 = *(double *)(param_1 + 0x30);
    dStack_10 = (local_18 - *(double *)(param_1 + 0x28)) + *(double *)(param_1 + 0x30);
    if (local_18 < dStack_10) goto LAB_18131d5e3;
  }
  dStack_10 = local_18;
LAB_18131d5e3:
  FUN_18131e660(param_1 + -0xc0,&local_18);
  return;
}



############ FUN_ 18131d9f0 size=921 ############

void FUN_18131d9f0(longlong param_1)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  longlong lVar4;
  char cVar5;
  longlong *plVar6;
  undefined8 uVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iStack_34;
  
  if (*(char *)(param_1 + 300) == '\0') {
    iVar8 = *(int *)(param_1 + 0x28);
  }
  else {
    iVar8 = *(int *)(param_1 + 0x2c);
  }
  plVar6 = (longlong *)FUN_18134adf0();
  cVar5 = (**(code **)(*plVar6 + 8))(plVar6);
  if (cVar5 == '\0') {
    puVar2 = *(undefined8 **)(param_1 + 0x130);
    *(undefined8 *)(param_1 + 0x130) = 0;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    puVar2 = *(undefined8 **)(param_1 + 0x138);
    *(undefined8 *)(param_1 + 0x138) = 0;
    iVar9 = 0;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
      iVar9 = 0;
    }
  }
  else {
    if (*(longlong *)(param_1 + 0x130) == 0) {
      uVar7 = FUN_1811316e0(0x1d8);
      iVar9 = 3;
      if (*(char *)(param_1 + 300) != '\0') {
        iVar9 = 0;
      }
      uVar7 = FUN_1804f80b0(uVar7,iVar9,param_1);
      puVar2 = *(undefined8 **)(param_1 + 0x130);
      *(undefined8 *)(param_1 + 0x130) = uVar7;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
      }
      uVar7 = FUN_1811316e0(0x1d8);
      uVar7 = FUN_1804f80b0(uVar7,(*(char *)(param_1 + 300) != '\0') + '\x01',param_1);
      puVar2 = *(undefined8 **)(param_1 + 0x138);
      *(undefined8 *)(param_1 + 0x138) = uVar7;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
      }
      plVar3 = *(longlong **)(param_1 + 0x130);
      if (plVar3 != (longlong *)0x0) {
        (**(code **)(*plVar3 + 0x58))(plVar3,1);
        FUN_181343cc0(param_1,plVar3,0xffffffff);
      }
      plVar3 = *(longlong **)(param_1 + 0x138);
      if (plVar3 != (longlong *)0x0) {
        (**(code **)(*plVar3 + 0x58))(plVar3,1);
        FUN_181343cc0(param_1,plVar3,0xffffffff);
      }
      iVar9 = *(int *)(param_1 + 0x128);
      iVar11 = *(int *)(param_1 + 0x124);
      uVar1 = *(undefined4 *)(param_1 + 0x120);
      lVar4 = *(longlong *)(param_1 + 0x130);
      if (lVar4 != 0) {
        *(undefined4 *)(lVar4 + 0x188) = uVar1;
        *(int *)(lVar4 + 0x18c) = iVar11;
        iVar10 = iVar11;
        if (iVar9 < iVar11) {
          iVar10 = iVar9;
        }
        *(int *)(lVar4 + 400) = iVar10;
        lVar4 = *(longlong *)(param_1 + 0x138);
        *(undefined4 *)(lVar4 + 0x188) = uVar1;
        *(int *)(lVar4 + 0x18c) = iVar11;
        *(int *)(lVar4 + 400) = iVar10;
      }
    }
    if (*(code **)(*plVar6 + 0x38) == FUN_181311ad0) {
      if (*(char *)(param_1 + 300) == '\0') {
        iVar9 = *(int *)(param_1 + 0x2c) + 2;
        if (iVar8 / 2 < iVar9) {
          iVar9 = iVar8 / 2;
        }
      }
      else {
        iVar9 = *(int *)(param_1 + 0x28) + 2;
        if (iVar8 / 2 < iVar9) {
          iVar9 = iVar8 / 2;
        }
      }
    }
    else {
      iVar9 = (**(code **)(*plVar6 + 0x38))(plVar6,param_1);
      if (iVar8 / 2 < iVar9) {
        iVar9 = iVar8 / 2;
      }
    }
  }
  if (*(code **)(*plVar6 + 0x28) == FUN_181311b00) {
    iVar11 = *(int *)(param_1 + 0x28);
    if (*(int *)(param_1 + 0x2c) < *(int *)(param_1 + 0x28)) {
      iVar11 = *(int *)(param_1 + 0x2c);
    }
    iVar11 = iVar11 * 2;
  }
  else {
    iVar11 = (**(code **)(*plVar6 + 0x28))(plVar6,param_1);
  }
  if (iVar8 < iVar11 + 0x20) {
    *(int *)(param_1 + 0x108) = iVar8 / 2;
    *(undefined4 *)(param_1 + 0x10c) = 0;
  }
  else {
    *(int *)(param_1 + 0x108) = iVar9;
    *(int *)(param_1 + 0x10c) = iVar8 + iVar9 * -2;
  }
  lVar4 = *(longlong *)(param_1 + 0x130);
  if (lVar4 != 0) {
    iVar8 = *(int *)(param_1 + 0x28);
    iStack_34 = *(int *)(param_1 + 0x2c);
    if (*(char *)(param_1 + 300) == '\0') {
      iVar11 = iVar9;
      if (iVar8 < iVar9) {
        iVar11 = iVar8;
      }
      iVar10 = iVar8 - iVar11;
      FUN_18134bfe0(lVar4,0,0,iVar11,iStack_34);
      iVar8 = iVar9;
      if (iVar10 < iVar9) {
        iVar8 = iVar10;
      }
      iVar10 = (iVar11 - iVar8) + iVar10;
      iVar11 = 0;
    }
    else {
      iVar10 = iVar9;
      if (iStack_34 < iVar9) {
        iVar10 = iStack_34;
      }
      iVar11 = iStack_34 - iVar10;
      FUN_18134bfe0(lVar4,0,0,iVar8,iVar10);
      iStack_34 = iVar9;
      if (iVar11 < iVar9) {
        iStack_34 = iVar11;
      }
      iVar11 = (iVar10 - iStack_34) + iVar11;
      iVar10 = 0;
    }
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x138),iVar10,iVar11,iVar8,iStack_34);
  }
  FUN_18131e060(param_1);
  return;
}



############ FUN_ 18131de20 size=549 ############

void FUN_18131de20(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  undefined1 uVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined1 uVar8;
  longlong lVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  undefined1 uVar15;
  undefined4 uVar16;
  
  if (0 < *(int *)(param_1 + 0x10c)) {
    plVar4 = (longlong *)FUN_18134adf0();
    if (*(code **)(*plVar4 + 0x28) == FUN_181311b00) {
      iVar3 = *(int *)(param_1 + 0x28);
      if (*(int *)(param_1 + 0x2c) < *(int *)(param_1 + 0x28)) {
        iVar3 = *(int *)(param_1 + 0x2c);
      }
      iVar3 = iVar3 * 2;
    }
    else {
      iVar3 = (**(code **)(*plVar4 + 0x28))(plVar4,param_1);
    }
    if (iVar3 < *(int *)(param_1 + 0x10c)) {
      uVar11 = *(undefined4 *)(param_1 + 0x114);
    }
    else {
      uVar11 = 0;
    }
    if (*(char *)(param_1 + 300) == '\0') {
      if (DAT_182673700 == 0) {
        uVar5 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar5);
      }
      plVar7 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
      plVar1 = plVar7 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
      for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
        lVar9 = *(longlong *)(*plVar7 + 0x48);
        lVar6 = 0;
        if (lVar9 != 0) {
          lVar6 = *(longlong *)(lVar9 + 0x10);
        }
        if ((lVar6 == param_1) && ((*(byte *)(*plVar7 + 0x28) & 0x70) != 0)) {
          uVar8 = 1;
          goto LAB_18131dfc2;
        }
      }
      uVar8 = 0;
LAB_18131dfc2:
      uVar14 = *(undefined4 *)(param_1 + 0x2c);
      lVar9 = *plVar4;
      uVar2 = FUN_18133e590(param_1,0);
      uVar16 = *(undefined4 *)(param_1 + 0x110);
      uVar15 = *(undefined1 *)(param_1 + 300);
      uVar13 = *(undefined4 *)(param_1 + 0x10c);
      uVar12 = 0;
      uVar10 = *(undefined4 *)(param_1 + 0x108);
    }
    else {
      if (DAT_182673700 == 0) {
        uVar5 = FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(uVar5);
      }
      plVar7 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
      plVar1 = plVar7 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
      for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
        lVar9 = *(longlong *)(*plVar7 + 0x48);
        lVar6 = 0;
        if (lVar9 != 0) {
          lVar6 = *(longlong *)(lVar9 + 0x10);
        }
        if ((lVar6 == param_1) && ((*(byte *)(*plVar7 + 0x28) & 0x70) != 0)) {
          uVar8 = 1;
          goto LAB_18131df0a;
        }
      }
      uVar8 = 0;
LAB_18131df0a:
      uVar13 = *(undefined4 *)(param_1 + 0x28);
      lVar9 = *plVar4;
      uVar2 = FUN_18133e590(param_1,0);
      uVar16 = *(undefined4 *)(param_1 + 0x110);
      uVar15 = *(undefined1 *)(param_1 + 300);
      uVar14 = *(undefined4 *)(param_1 + 0x10c);
      uVar12 = *(undefined4 *)(param_1 + 0x108);
      uVar10 = 0;
    }
    (**(code **)(lVar9 + 0x18))
              (plVar4,param_2,param_1,uVar10,uVar12,uVar13,uVar14,uVar15,uVar16,uVar11,uVar2,uVar8);
  }
  return;
}



############ FUN_ 18131edf0 size=258 ############

void FUN_18131edf0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong lVar5;
  undefined1 uVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong lVar10;
  undefined1 uVar11;
  
  lVar7 = FUN_18134adf0();
  if (DAT_182673700 == 0) {
    uVar8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar8);
  }
  plVar9 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar9 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  do {
    if (plVar9 == plVar1) {
      uVar11 = 0;
LAB_18131ee8e:
      uVar2 = *(uint *)(param_1 + 0xd0);
      uVar3 = *(undefined4 *)(param_1 + 0x2c);
      uVar4 = *(undefined4 *)(param_1 + 0x28);
      lVar5 = *(longlong *)(lVar7 + 0xc0);
      uVar6 = FUN_18133e590(param_1,0);
      (**(code **)(lVar5 + 8))(lVar7 + 0xc0,param_2,uVar4,uVar3,uVar2 < 2,uVar6,uVar11);
      return;
    }
    lVar5 = *(longlong *)(*plVar9 + 0x48);
    lVar10 = 0;
    if (lVar5 != 0) {
      lVar10 = *(longlong *)(lVar5 + 0x10);
    }
    if ((lVar10 == param_1) && ((*(byte *)(*plVar9 + 0x28) & 0x70) != 0)) {
      uVar11 = 1;
      goto LAB_18131ee8e;
    }
    plVar9 = plVar9 + 1;
  } while( true );
}



############ FUN_ 18131f1b0 size=743 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18131f1b0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  float fVar5;
  float fVar6;
  int iVar7;
  longlong lVar8;
  undefined8 uVar9;
  longlong lVar10;
  undefined1 uVar11;
  longlong *plVar12;
  longlong lVar13;
  undefined1 uVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined8 uVar21;
  float local_b8;
  float fStack_b4;
  float fStack_b0;
  float fStack_ac;
  
  uVar21 = 0xfffffffffffffffe;
  lVar8 = FUN_18134adf0();
  if (DAT_182673700 == 0) {
    uVar9 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar9);
  }
  plVar12 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar12 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  for (; plVar12 != plVar1; plVar12 = plVar12 + 1) {
    lVar10 = *(longlong *)(*plVar12 + 0x48);
    if (lVar10 == 0) {
      lVar10 = 0;
    }
    else {
      lVar10 = *(longlong *)(lVar10 + 0x10);
    }
    if ((lVar10 == param_1) && ((*(byte *)(*plVar12 + 0x28) & 0x70) != 0)) {
      uVar14 = 1;
      goto LAB_18131f28f;
    }
  }
  uVar14 = 0;
LAB_18131f28f:
  if (DAT_182673700 == 0) {
    uVar9 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar9);
  }
  fVar6 = DAT_1824c3ea4;
  fVar5 = DAT_1824c3d54;
  plVar12 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar1 = plVar12 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  do {
    if (plVar12 == plVar1) {
      uVar11 = 0;
LAB_18131f2fa:
      iVar2 = *(int *)(param_1 + 0x2c);
      iVar3 = *(int *)(param_1 + 0x28);
      pcVar4 = *(code **)(*(longlong *)(lVar8 + 0x60) + 8);
      if (pcVar4 == FUN_18130be30) {
        iVar7 = iVar3;
        if (iVar2 < iVar3) {
          iVar7 = iVar2;
        }
        fVar17 = (float)iVar7 * _DAT_1824c3ca8;
        fVar20 = 0.0;
        fVar18 = (float)iVar2 + DAT_1824c3ea4;
        fVar19 = (float)iVar3 + DAT_1824c3ea4;
        do {
          FUN_181296c00(param_2,DAT_18262b5a0);
          fVar15 = (float)iVar3 * fVar20;
          fVar16 = (float)iVar2 * fVar20;
          local_b8 = fVar15;
          fStack_b4 = fVar18;
          fStack_b0 = fVar19;
          fStack_ac = fVar16;
          FUN_181294940(param_2,&local_b8,fVar17);
          FUN_181296c00(param_2,DAT_18262b5ac);
          local_b8 = fVar15 + fVar17;
          fStack_ac = fVar16 + fVar17;
          fStack_b4 = fVar18;
          fStack_b0 = fVar19;
          FUN_181294940(param_2,&local_b8,fVar17);
          fVar20 = fVar20 + fVar5;
        } while (fVar20 < fVar6);
      }
      else {
        (*pcVar4)(lVar8 + 0x60,param_2,iVar3,iVar2,uVar11,uVar14,uVar21);
      }
      return;
    }
    lVar10 = *plVar12;
    lVar13 = 0;
    if (*(longlong *)(lVar10 + 0x48) != 0) {
      lVar13 = *(longlong *)(*(longlong *)(lVar10 + 0x48) + 0x10);
    }
    if ((lVar13 == param_1) &&
       (((*(byte *)(lVar10 + 0x28) & 0x70) != 0 || (*(int *)(lVar10 + 0x14) != 1)))) {
      uVar11 = 1;
      goto LAB_18131f2fa;
    }
    plVar12 = plVar12 + 1;
  } while( true );
}



############ FUN_ 1813210c0 size=1031 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813210c0(longlong *param_1,longlong param_2,undefined4 param_3,undefined1 param_4)

{
  LPCRITICAL_SECTION p_Var1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint uVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  int iVar9;
  uint *puVar10;
  longlong *plVar11;
  undefined8 uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  longlong *plVar15;
  undefined1 auStack_e8 [48];
  longlong local_b8;
  longlong local_b0;
  char *local_a8;
  longlong *local_a0;
  undefined8 local_98;
  char *local_90;
  longlong local_88;
  LPCRITICAL_SECTION local_80;
  undefined8 local_78;
  LPCRITICAL_SECTION local_70;
  undefined **local_68;
  undefined1 local_60 [8];
  undefined **local_58;
  undefined4 local_50 [2];
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  if (param_2 == 0) {
  }
  if ((0 < *(int *)((longlong)param_1 + 0xdc)) &&
     (*(int *)((longlong)param_1 + 0xdc) <= *(int *)((longlong)param_1 + 0xcc))) {
  }
  plVar2 = param_1 + 0x18;
  iVar9 = *(int *)((longlong)param_1 + 0xcc) + 1;
  local_88 = param_2;
  if ((int)param_1[0x19] < iVar9) {
    FUN_18047cb30(plVar2,*(int *)((longlong)param_1 + 0xcc) + 9 + iVar9 / 2 & 0xfffffff8);
  }
  iVar9 = *(int *)((longlong)param_1 + 0xcc);
  *(int *)((longlong)param_1 + 0xcc) = iVar9 + 1;
  *(longlong *)(*plVar2 + (longlong)iVar9 * 8) = param_2;
  local_68 = &PTR_vftable_18262b550;
  local_60[0] = param_4;
  lVar7 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar7 + 0x10);
  local_70 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar7);
  local_90 = "mdiDocumentDelete_";
  FUN_181211b90(&local_b8,lVar7,&local_90);
  LeaveCriticalSection(p_Var1);
  FUN_181243e80(param_2 + 0x90,&local_b8,&local_68);
  puVar10 = (uint *)(local_b8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  (**(code **)(*local_68 + 0xb0))(local_68,local_60);
  local_58 = &PTR_vftable_18262b570;
  local_50[0] = param_3;
  lVar7 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar7 + 0x10);
  local_80 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar7);
  local_a8 = "mdiDocumentBkg_";
  FUN_181211b90(&local_b0,lVar7,&local_a8);
  LeaveCriticalSection(p_Var1);
  FUN_181243e80(param_2 + 0x90,&local_b0,&local_58);
  puVar10 = (uint *)(local_b0 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  (**(code **)(*local_58 + 0xb0))(local_58,local_50);
  lVar7 = local_88;
  plVar15 = param_1 + 0x16;
  if (plVar15 != (longlong *)0x0) {
    plVar3 = (longlong *)(local_88 + 0x80);
    plVar11 = (longlong *)*plVar3;
    iVar9 = *(int *)(local_88 + 0x8c);
    plVar4 = plVar11 + iVar9;
    for (; plVar11 != plVar4; plVar11 = plVar11 + 1) {
      if (plVar15 == (longlong *)*plVar11) goto LAB_18132130f;
    }
    if (*(int *)(local_88 + 0x88) < iVar9 + 1) {
      FUN_18047cb30(plVar3,iVar9 + 9 + (iVar9 + 1) / 2 & 0xfffffff8);
    }
    iVar9 = *(int *)(lVar7 + 0x8c);
    *(int *)(lVar7 + 0x8c) = iVar9 + 1;
    *(longlong **)(*plVar3 + (longlong)iVar9 * 8) = plVar15;
  }
LAB_18132130f:
  if ((int)param_1[0x17] == 0) {
    if ((int)param_1[0x1c] != 0) {
      if (*(int *)((longlong)param_1 + 0xcc) == 1) {
        FUN_18134bf20(param_1,lVar7,0xffffffff);
        goto LAB_1813214a1;
      }
      if (*(int *)((longlong)param_1 + 0xcc) == 2) {
        if (*(int *)((longlong)param_1 + 0xcc) < 1) {
          uVar12 = 0;
        }
        else {
          uVar12 = *(undefined8 *)*plVar2;
        }
        FUN_1813214f0(param_1,uVar12);
      }
    }
    FUN_1813214f0(param_1,lVar7);
  }
  else {
    if (param_1[0x1a] == 0) {
      if ((int)param_1[0x1c] < *(int *)((longlong)param_1 + 0xcc)) {
        puVar8 = (undefined8 *)FUN_1811316e0(0xe0);
        local_80 = (LPCRITICAL_SECTION)puVar8;
        FUN_181318930(puVar8);
        *puVar8 = juce::MultiDocumentPanel::TabbedComponentInternal::vftable;
        puVar6 = (undefined8 *)param_1[0x1a];
        param_1[0x1a] = (longlong)puVar8;
        if (puVar6 != (undefined8 *)0x0) {
          (**(code **)*puVar6)(puVar6,1);
        }
        FUN_18134bf20(param_1,param_1[0x1a],0xffffffff);
        uVar13 = 0;
        local_a0 = (longlong *)0x0;
        local_98 = 0;
        FUN_18051fcc0(&local_a0,*plVar2,*(undefined4 *)((longlong)param_1 + 0xcc));
        plVar2 = local_a0;
        uVar14 = (ulonglong)((longlong)(local_a0 + local_98._4_4_) + (7 - (longlong)local_a0)) >> 3;
        if (local_a0 + local_98._4_4_ < local_a0) {
          uVar14 = uVar13;
        }
        plVar15 = local_a0;
        if (uVar14 != 0) {
          do {
            FUN_1813184c0(param_1[0x1a],*plVar15 + 8,param_3);
            uVar13 = uVar13 + 1;
            plVar15 = plVar15 + 1;
          } while (uVar13 != uVar14);
        }
        (**(code **)(*param_1 + 0x108))(param_1);
                    /* WARNING: Subroutine does not return */
        free(plVar2);
      }
      FUN_18134bf20(param_1,lVar7,0xffffffff);
    }
    else {
      FUN_1813184c0(param_1[0x1a],lVar7 + 8,param_3,lVar7);
    }
    FUN_181320970(param_1,lVar7);
  }
LAB_1813214a1:
  (**(code **)(*param_1 + 0x108))(param_1);
  (**(code **)(*param_1 + 0x158))(param_1);
}



############ FUN_ 181321910 size=144 ############

undefined8 * FUN_181321910(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  bool bVar3;
  undefined1 *local_res10;
  undefined8 *local_res18;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x188);
  local_res10 = &DAT_1821dbf98;
  local_res18 = puVar2;
  FUN_1812d0aa0(puVar2,&local_res10,*(undefined4 *)(param_1 + 0xd8));
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *puVar2 = juce::MultiDocumentPanelWindow::vftable;
  return puVar2;
}



############ FUN_ 181325bb0 size=623 ############

void FUN_181325bb0(longlong param_1,undefined4 param_2,longlong param_3,int param_4,int param_5,
                  char param_6)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  char cVar6;
  undefined4 *puVar7;
  undefined8 uVar8;
  uint *_Memory;
  float fVar9;
  float fVar10;
  undefined8 *local_res8 [2];
  longlong local_res18;
  undefined1 local_res20 [8];
  undefined4 local_58;
  undefined4 uStack_54;
  float fStack_50;
  float fStack_4c;
  
  if (param_6 != '\0') {
    puVar7 = (undefined4 *)FUN_18134a8d0(param_1 + -200,&param_6,0x1000202,0);
    FUN_1812a3160(param_3,*puVar7);
  }
  puVar7 = (undefined4 *)FUN_18134a8d0(param_1 + -200,local_res20,0x1002820,0);
  FUN_181296c00(param_3,*puVar7);
  fVar10 = (float)param_5 * DAT_1824c3df0;
  uVar8 = FUN_1811316e0(0x40);
  fVar9 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= fVar10) && (fVar9 = DAT_1824c45c8, fVar10 <= DAT_1824c45c8)) {
    fVar9 = fVar10;
  }
  local_res8[0] = (undefined8 *)FUN_1804a2b80(uVar8,0,fVar9);
  if (local_res8[0] != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res8[0] + 1) = *(int *)(local_res8[0] + 1) + 1;
    UNLOCK();
  }
  FUN_181252760(local_res8);
  *(undefined4 *)((longlong)local_res8[0] + 0x2c) = 0x3f666666;
  plVar4 = (longlong *)local_res8[0][2];
  if ((plVar4 != (longlong *)0x0) &&
     (*(code **)(*plVar4 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar6 = (**(code **)(*plVar4 + 8))(plVar4,local_res8);
    if (cVar6 == '\0') {
      puVar5 = (undefined8 *)local_res8[0][2];
      local_res8[0][2] = 0;
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
    }
  }
  if (*(char *)(param_3 + 0x10) != '\0') {
    *(undefined1 *)(param_3 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_3 + 8) + 0xd0))(*(longlong **)(param_3 + 8),local_res8);
  uVar8 = FUN_181249970(param_1 + 8,param_2);
  FUN_181241890(&local_res18,uVar8);
  fStack_4c = (float)param_5;
  fStack_50 = (float)(param_4 + -6);
  uStack_54 = 0;
  local_58 = DAT_1824c4334;
  FUN_1812963b0(param_3,&local_res18,&local_58,0x21,1);
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_res8[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8[0] + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res8[0])(local_res8[0],1);
    }
  }
  return;
}



############ FUN_ 181327050 size=88 ############

undefined8 * FUN_181327050(longlong param_1)

{
  undefined8 *puVar1;
  
  if (((*(byte *)(param_1 + 0xa8) & 0x20) == 0) || ((*(byte *)(param_1 + 0xa9) & 0x10) != 0)) {
    return (undefined8 *)0x0;
  }
  if (((*(byte *)(param_1 + 0xa8) & 0x40) == 0) &&
     (*(longlong **)(param_1 + 0x18) != (longlong *)0x0)) {
                    /* WARNING: Could not recover jumptable at 0x00018132707c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    puVar1 = (undefined8 *)(**(code **)(**(longlong **)(param_1 + 0x18) + 0xa8))();
    return puVar1;
  }
  puVar1 = (undefined8 *)FUN_1811316e0(8);
  *puVar1 = juce::KeyboardFocusTraverser::vftable;
  return puVar1;
}



############ FUN_ 181327570 size=488 ############

undefined8 *
FUN_181327570(longlong param_1,undefined4 param_2,undefined1 param_3,undefined8 *param_4)

{
  uint uVar1;
  undefined8 uVar2;
  longlong lVar3;
  char cVar4;
  uint *_Memory;
  undefined1 **ppuVar5;
  undefined1 *local_50 [2];
  undefined8 local_40;
  undefined8 uStack_38;
  
  if (param_4 == (undefined8 *)0x0) {
    param_4 = (undefined8 *)FUN_1811316e0(0x108);
    uVar2 = *(undefined8 *)(*(longlong *)(param_1 + -0x18) + 0x58);
    *param_4 = juce::Component::vftable;
    param_4[1] = &DAT_1821dbf98;
    param_4[2] = &DAT_1821dbf98;
    param_4[3] = 0;
    param_4[4] = 0;
    param_4[5] = 0;
    param_4[6] = 0;
    param_4[7] = 0;
    param_4[8] = 0;
    param_4[9] = 0;
    param_4[10] = 0;
    param_4[0xb] = 0;
    param_4[0xc] = 0;
    param_4[0xd] = 0;
    param_4[0xe] = 0;
    param_4[0xf] = 0;
    param_4[0x10] = 0;
    param_4[0x11] = 0;
    param_4[0x12] = 0;
    param_4[0x13] = 0;
    param_4[0x14] = 0;
    *(undefined4 *)(param_4 + 0x15) = 0;
    *(undefined1 *)((longlong)param_4 + 0xac) = 0;
    param_4[0x16] = juce::TimeSliceClient::vftable;
    param_4[0x17] = 0;
    FUN_1812a59f0(param_4 + 0x18);
    *param_4 = juce::FileListComponent::ItemComponent::vftable;
    param_4[0x16] = juce::FileListComponent::ItemComponent::vftable;
    param_4[0x18] = juce::FileListComponent::ItemComponent::vftable;
    param_4[0x1a] = param_1 + -0x128;
    param_4[0x1b] = uVar2;
    param_4[0x1c] = &DAT_1821dbf98;
    param_4[0x1d] = &DAT_1821dbf98;
    param_4[0x1e] = &DAT_1821dbf98;
    param_4[0x1f] = 0;
    *(undefined4 *)(param_4 + 0x20) = 0;
    *(undefined2 *)((longlong)param_4 + 0x104) = 0;
  }
  local_50[0] = &DAT_1821dbf98;
  local_40 = 0;
  uStack_38 = 0;
  lVar3 = *(longlong *)(param_1 + -0x18);
  cVar4 = FUN_18132e000(lVar3,param_2,local_50);
  ppuVar5 = local_50;
  if (cVar4 == '\0') {
    ppuVar5 = (undefined1 **)0x0;
  }
  FUN_1804f4ac0(param_4,lVar3 + 0x48,ppuVar5,param_2,param_3);
  _Memory = (uint *)(local_50[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_4;
}



############ FUN_ 181328200 size=1834 ############

/* WARNING: Type propagation algorithm not settling */

void FUN_181328200(longlong param_1)

{
  int *piVar1;
  longlong lVar2;
  DWORD DVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  longlong *plVar7;
  undefined8 uVar8;
  uint uVar9;
  uint *puVar10;
  bool bVar11;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_148;
  undefined8 *local_140;
  undefined8 *local_138;
  undefined8 **local_130;
  undefined8 local_128;
  undefined4 local_120;
  undefined8 local_11c;
  undefined4 local_114;
  undefined1 *local_110;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0 [2];
  undefined4 local_d0;
  undefined8 local_cc;
  undefined4 local_c4;
  undefined1 *local_c0 [2];
  code *local_b0;
  undefined8 local_a8;
  undefined8 *local_a0;
  undefined **local_98;
  code *local_90;
  undefined8 *local_88;
  undefined8 *local_80;
  undefined ***local_60;
  undefined8 local_58;
  undefined1 local_50 [8];
  undefined4 *local_48;
  undefined4 *local_40;
  
  local_58 = 0xfffffffffffffffe;
  local_e0[0] = *(longlong *)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0xb0) + 0xf8);
  if ((*(uint *)(local_e0[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_e0[0] + -0x10) = *(int *)(local_e0[0] + -0x10) + 1;
    UNLOCK();
  }
  puVar5 = (undefined8 *)FUN_18049a930(local_50,local_e0);
  DVar3 = GetFileAttributesW((LPCWSTR)*puVar5);
  if (((DVar3 & 0x10) == 0) || (bVar11 = true, DVar3 == 0xffffffff)) {
    bVar11 = false;
  }
  if (bVar11) {
    uVar6 = FUN_1811316e0(0x1e0);
    local_130 = (undefined8 **)uVar6;
    FUN_18049c4e0(&local_res10,"Please enter the name for the folder");
    lVar2 = DAT_1826739f8;
    local_48 = &DAT_182673984;
    do {
      LOCK();
      uVar9 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar9 != 0);
    if (DAT_1826739f8 == 0) {
      local_148 = local_res10;
      if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
        UNLOCK();
      }
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res10,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar4)) {
      iVar4 = FUN_1812498b0(lVar2 + 0x18,local_res10,*(undefined1 *)(lVar2 + 0x38),0);
      if (iVar4 < 0) {
        uVar9 = *(uint *)(local_res10 + -0x10);
        local_148 = local_res10;
      }
      else {
        plVar7 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar4);
        uVar9 = *(uint *)(*plVar7 + -0x10);
        local_148 = *plVar7;
      }
      if ((uVar9 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_148 + -0x10) = *(int *)(local_148 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_148,&local_res10,&local_res10);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar10 = (uint *)(local_res10 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    FUN_18049c4e0(&local_res18,"New Folder");
    lVar2 = DAT_1826739f8;
    local_40 = &DAT_182673984;
    do {
      LOCK();
      uVar9 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar9 != 0);
    if (DAT_1826739f8 == 0) {
      local_res20 = local_res18;
      if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
        UNLOCK();
      }
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res18,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar4)) {
      iVar4 = FUN_1812498b0(lVar2 + 0x18,local_res18,*(undefined1 *)(lVar2 + 0x38),0);
      if (iVar4 < 0) {
        uVar9 = *(uint *)(local_res18 + -0x10);
        local_res20 = local_res18;
      }
      else {
        plVar7 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar4);
        uVar9 = *(uint *)(*plVar7 + -0x10);
        local_res20 = *plVar7;
      }
      if ((uVar9 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_res20,&local_res18,&local_res18);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar10 = (uint *)(local_res18 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    uVar6 = FUN_181347860(uVar6,&local_res20,&local_148,0,param_1);
    puVar10 = (uint *)(local_res20 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    puVar10 = (uint *)(local_148 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    FUN_18049c4e0(&local_108,"Folder Name");
    local_c0[0] = &DAT_1821dbf98;
    local_110 = &DAT_1821dbf98;
    FUN_1812d4f90(uVar6,&local_108,&local_110,local_c0);
    puVar10 = (uint *)(local_110 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar9 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar11 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar9;
      if (bVar11) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    puVar10 = (uint *)(local_108 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_128 = 0;
    local_120 = 0;
    FUN_18049c4e0(&local_100,"Create Folder");
    FUN_1812344e0(&local_f8,&local_100);
    puVar10 = (uint *)(local_100 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_128 = 0;
    local_120 = 0;
    local_e0[1] = 0xd;
    local_d0 = 0;
    FUN_181347060(uVar6,&local_f8,1,local_e0 + 1,&local_128);
    puVar10 = (uint *)(local_f8 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_11c = 0;
    local_114 = 0;
    FUN_18049c4e0(&local_f0,"Cancel");
    FUN_1812344e0(&local_e8,&local_f0);
    puVar10 = (uint *)(local_f0 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_11c = 0;
    local_114 = 0;
    local_cc = 0x1b;
    local_c4 = 0;
    FUN_181347060(uVar6,&local_e8,0,&local_cc,&local_11c);
    puVar10 = (uint *)(local_e8 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    FUN_1804de690(&local_138,uVar6);
    local_130 = &local_138;
    FUN_1804de690(&local_140,param_1);
    puVar5 = local_140;
    local_b0 = FUN_181328940;
    if (local_140 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_140 + 1) = *(int *)(local_140 + 1) + 1;
      UNLOCK();
    }
    local_a0 = local_138;
    if (local_138 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_138 + 1) = *(int *)(local_138 + 1) + 1;
      UNLOCK();
    }
    local_98 = std::_Func_impl_no_alloc<<lambda_b56c75057d92c3a07743150982467fad>,void,int>::vftable
    ;
    local_90 = FUN_181328940;
    local_88 = local_140;
    local_a8 = 0;
    local_80 = local_138;
    if (local_138 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_138 + 1) = *(int *)(local_138 + 1) + 1;
      UNLOCK();
    }
    local_60 = &local_98;
    FUN_18051fee0(&local_b0);
    uVar8 = FUN_181347bc0(&local_98);
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar4 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)*local_140)(local_140,1);
      }
    }
    if (local_138 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_138 + 1);
      iVar4 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)*local_138)(local_138,1);
      }
    }
    FUN_18134ab30(uVar6,1,uVar8);
  }
  puVar10 = (uint *)(local_e0[0] + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return;
}



############ FUN_ 18132d8e0 size=683 ############

undefined8
FUN_18132d8e0(longlong param_1,undefined8 *param_2,char param_3,longlong param_4,longlong param_5,
             longlong param_6,undefined1 param_7)

{
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  byte bVar6;
  char cVar7;
  byte bVar8;
  int iVar9;
  longlong *plVar10;
  uint *puVar11;
  byte *pbVar12;
  undefined8 uVar13;
  longlong lVar14;
  undefined1 *local_res8;
  longlong *local_58;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 100));
  plVar10 = *(longlong **)(param_1 + 0x50);
  if (plVar10 != (longlong *)0x0) {
    if (param_3 == '\0') {
      cVar7 = (**(code **)(*plVar10 + 8))();
    }
    else {
      cVar7 = (**(code **)(*plVar10 + 0x10))(plVar10,param_2);
    }
    if (cVar7 == '\0') {
      uVar13 = 0;
      goto LAB_18132db57;
    }
  }
  plVar10 = (longlong *)FUN_1811316e0(0x28);
  plVar10[1] = 0;
  plVar10[4] = 0;
  *plVar10 = (longlong)&DAT_1821dbf98;
  plVar10[2] = 0;
  plVar10[3] = 0;
  iVar9 = FUN_1812327b0(param_2,0x5c);
  if (iVar9 + 1 < 1) {
    local_res8 = (undefined1 *)*param_2;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar12 = (byte *)*param_2;
    for (; -1 < iVar9; iVar9 = iVar9 + -1) {
      bVar2 = *pbVar12;
      if (bVar2 == 0) {
        local_res8 = &DAT_1821dbf98;
        goto LAB_18132da00;
      }
      pbVar12 = pbVar12 + 1;
      if ((char)bVar2 < '\0') {
        bVar8 = 0x40;
        bVar6 = bVar2 & 0x40;
        while ((bVar6 != 0 && (8 < bVar8))) {
          pbVar12 = pbVar12 + 1;
          bVar8 = bVar8 >> 1;
          bVar6 = bVar2 & bVar8;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
  }
LAB_18132da00:
  lVar3 = *plVar10;
  *plVar10 = (longlong)local_res8;
  puVar11 = (uint *)(lVar3 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  plVar10[1] = param_4;
  plVar10[2] = param_5;
  plVar10[3] = param_6;
  *(char *)(plVar10 + 4) = param_3;
  *(undefined1 *)((longlong)plVar10 + 0x21) = param_7;
  iVar9 = *(int *)(param_1 + 0x9c) + -1;
  if (-1 < iVar9) {
    lVar14 = (longlong)iVar9;
    lVar3 = *(longlong *)(param_1 + 0x90);
    lVar4 = *plVar10;
    do {
      plVar5 = *(longlong **)(lVar3 + lVar14 * 8);
      if (*plVar5 == lVar4) {
        iVar9 = 0;
      }
      else {
        iVar9 = FUN_18048cbc0(*plVar5,lVar4);
      }
      if (iVar9 == 0) {
        uVar13 = 0;
        local_58 = plVar10;
        goto LAB_18132db1f;
      }
      lVar14 = lVar14 + -1;
    } while (-1 < lVar14);
  }
  local_58 = (longlong *)0x0;
  plVar5 = (longlong *)(param_1 + 0x90);
  iVar9 = *(int *)(param_1 + 0x9c) + 1;
  if (*(int *)(param_1 + 0x98) < iVar9) {
    FUN_18047cb30(plVar5,*(int *)(param_1 + 0x9c) + 9 + iVar9 / 2 & 0xfffffff8);
  }
  iVar9 = *(int *)(param_1 + 0x9c);
  *(int *)(param_1 + 0x9c) = iVar9 + 1;
  *(longlong **)(*plVar5 + (longlong)iVar9 * 8) = plVar10;
  lVar4 = *plVar5;
  lVar3 = lVar4 + (longlong)*(int *)(param_1 + 0x9c) * 8;
  FUN_1805209f0(lVar4,lVar3,lVar3 - lVar4 >> 3,(ulonglong)local_res8 & 0xff);
  uVar13 = 1;
LAB_18132db1f:
  if (local_58 != (longlong *)0x0) {
    puVar11 = (uint *)(*local_58 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(local_58);
  }
LAB_18132db57:
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 100));
  return uVar13;
}



############ FUN_ 18132f800 size=269 ############

undefined8 *
FUN_18132f800(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 *puVar5;
  
  puVar5 = (undefined8 *)FUN_1811316e0(0x100,param_2,param_3,param_4,0xfffffffffffffffe);
  FUN_181333090(puVar5,param_1);
  *puVar5 = juce::DrawableText::vftable;
  uVar2 = *(undefined4 *)(param_1 + 0xc4);
  uVar3 = *(undefined4 *)(param_1 + 200);
  uVar4 = *(undefined4 *)(param_1 + 0xcc);
  *(undefined4 *)(puVar5 + 0x18) = *(undefined4 *)(param_1 + 0xc0);
  *(undefined4 *)((longlong)puVar5 + 0xc4) = uVar2;
  *(undefined4 *)(puVar5 + 0x19) = uVar3;
  *(undefined4 *)((longlong)puVar5 + 0xcc) = uVar4;
  puVar5[0x1a] = *(undefined8 *)(param_1 + 0xd0);
  *(undefined4 *)(puVar5 + 0x1b) = *(undefined4 *)(param_1 + 0xd8);
  *(undefined4 *)((longlong)puVar5 + 0xdc) = *(undefined4 *)(param_1 + 0xdc);
  lVar1 = *(longlong *)(param_1 + 0xe0);
  puVar5[0x1c] = lVar1;
  if (lVar1 != 0) {
    LOCK();
    *(int *)(lVar1 + 8) = *(int *)(lVar1 + 8) + 1;
    UNLOCK();
  }
  FUN_181252d20(puVar5 + 0x1d);
  lVar1 = *(longlong *)(param_1 + 0xf0);
  puVar5[0x1e] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(puVar5 + 0x1f) = *(undefined4 *)(param_1 + 0xf8);
  *(undefined4 *)((longlong)puVar5 + 0xfc) = *(undefined4 *)(param_1 + 0xfc);
  FUN_18132f430(puVar5);
  *param_2 = puVar5;
  return param_2;
}



############ FUN_ 1813309a0 size=152 ############

undefined8 *
FUN_1813309a0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)FUN_1811316e0(0x1b0,param_2,param_3,param_4,0xfffffffffffffffe);
  FUN_181330550(puVar2,param_1);
  *puVar2 = juce::DrawableRectangle::vftable;
  uVar1 = *(undefined8 *)(param_1 + 0x198);
  puVar2[0x32] = *(undefined8 *)(param_1 + 400);
  puVar2[0x33] = uVar1;
  puVar2[0x34] = *(undefined8 *)(param_1 + 0x1a0);
  puVar2[0x35] = *(undefined8 *)(param_1 + 0x1a8);
  FUN_181330740(puVar2);
  *param_2 = puVar2;
  return param_2;
}



############ FUN_ 1813314c0 size=232 ############

undefined8 * FUN_1813314c0(longlong param_1,undefined8 *param_2)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  
  puVar4 = (undefined8 *)FUN_1811316e0(0xe8);
  FUN_181333090(puVar4,param_1);
  *puVar4 = juce::DrawableImage::vftable;
  lVar2 = *(longlong *)(param_1 + 0xc0);
  puVar4[0x18] = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  *(undefined4 *)(puVar4 + 0x19) = *(undefined4 *)(param_1 + 200);
  *(undefined4 *)((longlong)puVar4 + 0xcc) = *(undefined4 *)(param_1 + 0xcc);
  uVar3 = *(undefined8 *)(param_1 + 0xd8);
  puVar4[0x1a] = *(undefined8 *)(param_1 + 0xd0);
  puVar4[0x1b] = uVar3;
  puVar4[0x1c] = *(undefined8 *)(param_1 + 0xe0);
  auVar1 = *(undefined1 (*) [16])(param_1 + 0x20);
  FUN_18134bfe0(puVar4,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_4_,auVar1._12_4_);
  *param_2 = puVar4;
  return param_2;
}



############ FUN_ 1813324d0 size=305 ############

undefined8 * FUN_1813324d0(longlong param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  
  puVar6 = (undefined8 *)FUN_1811316e0(0xf0);
  FUN_181333090(puVar6,param_1);
  *puVar6 = juce::DrawableComposite::vftable;
  uVar5 = *(undefined8 *)(param_1 + 200);
  puVar6[0x18] = *(undefined8 *)(param_1 + 0xc0);
  puVar6[0x19] = uVar5;
  puVar6[0x1a] = *(undefined8 *)(param_1 + 0xd0);
  uVar2 = *(undefined4 *)(param_1 + 0xdc);
  uVar3 = *(undefined4 *)(param_1 + 0xe0);
  uVar4 = *(undefined4 *)(param_1 + 0xe4);
  *(undefined4 *)(puVar6 + 0x1b) = *(undefined4 *)(param_1 + 0xd8);
  *(undefined4 *)((longlong)puVar6 + 0xdc) = uVar2;
  *(undefined4 *)(puVar6 + 0x1c) = uVar3;
  *(undefined4 *)((longlong)puVar6 + 0xe4) = uVar4;
  *(undefined1 *)(puVar6 + 0x1d) = 0;
  puVar9 = *(undefined8 **)(param_1 + 0x40);
  puVar1 = puVar9 + *(int *)(param_1 + 0x4c);
  for (; puVar9 != puVar1; puVar9 = puVar9 + 1) {
    plVar7 = (longlong *)
             __RTDynamicCast(*puVar9,0,&juce::Component::RTTI_Type_Descriptor,
                             &juce::Drawable::RTTI_Type_Descriptor,0);
    if (plVar7 != (longlong *)0x0) {
      plVar8 = (longlong *)(**(code **)(*plVar7 + 0x158))(plVar7);
      plVar7 = (longlong *)*plVar8;
      *plVar8 = 0;
      if (plVar7 != (longlong *)0x0) {
        (**(code **)(*plVar7 + 0x58))(plVar7,1);
        FUN_181343cc0(puVar6,plVar7,0xffffffff);
      }
      if (param_2 != (undefined8 *)0x0) {
        (**(code **)*param_2)();
      }
    }
  }
  *param_2 = puVar6;
  return param_2;
}



############ FUN_ 181339c20 size=169 ############

longlong * FUN_181339c20(longlong *param_1,int param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  
  do {
    LOCK();
    uVar3 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar3 != 0);
  plVar2 = &DAT_18267aad0 + param_2;
  if (*plVar2 == 0) {
    puVar4 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar4 = 0;
    uVar5 = FUN_1812c4e30(param_2);
    puVar4[1] = uVar5;
    *(undefined4 *)(puVar4 + 2) = 1;
    *(int *)((longlong)puVar4 + 0x14) = param_2;
    *(undefined1 *)(puVar4 + 3) = 1;
    *plVar2 = (longlong)puVar4;
  }
  else {
    LOCK();
    piVar1 = (int *)(*plVar2 + 0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  *param_1 = *plVar2;
  return param_1;
}



############ FUN_ 18133abd0 size=580 ############

void FUN_18133abd0(longlong param_1,longlong param_2,longlong param_3,longlong param_4)

{
  float fVar1;
  float fVar2;
  float fVar3;
  longlong lVar4;
  longlong lVar5;
  float *pfVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  undefined8 local_res10;
  uint in_stack_ffffffffffffff18;
  int local_c8;
  int iStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  double local_b8 [2];
  undefined1 local_a8 [8];
  undefined1 local_a0 [8];
  undefined1 local_98 [128];
  
  if (param_2 != 0) {
    local_b8[1] = -NAN;
    local_c8 = *(int *)(param_2 + 0x20);
    iStack_c4 = *(int *)(param_2 + 0x24);
    uStack_c0 = *(undefined4 *)(param_2 + 0x28);
    uStack_bc = *(undefined4 *)(param_2 + 0x2c);
    if ((*(byte *)(param_2 + 0xa8) & 1) == 0) {
      lVar8 = FUN_181339840(param_3,local_98,param_2);
      local_c8 = local_c8 + (*(int *)(lVar8 + 8) - (int)*(undefined8 *)(param_1 + 8));
      iStack_c4 = iStack_c4 +
                  (*(int *)(lVar8 + 0xc) - (int)((ulonglong)*(undefined8 *)(param_1 + 8) >> 0x20));
    }
    else {
      pfVar6 = (float *)FUN_1804e5a90(*(undefined8 *)(param_3 + 0x50),local_b8);
      fVar1 = *pfVar6;
      fVar2 = pfVar6[1];
      uVar9 = *(undefined8 *)pfVar6;
      if (DAT_182673700 == 0) {
        local_res10 = (double)FUN_1811316e0(0x130);
        DAT_182673700 = FUN_18133c6c0(local_res10);
      }
      fVar3 = *(float *)(DAT_182673700 + 0xc0);
      local_res10 = (double)uVar9;
      if (fVar3 != DAT_1824c3ea4) {
        local_res10 = (double)CONCAT44(fVar2 / fVar3,fVar1 / fVar3);
      }
      lVar5 = *(longlong *)(param_2 + 0x18);
      lVar8 = param_2;
      while (lVar4 = lVar5, lVar4 != 0) {
        lVar8 = lVar4;
        lVar5 = *(longlong *)(lVar4 + 0x18);
      }
      pfVar6 = (float *)FUN_1805200f0(local_a8,lVar8,local_res10);
      local_res10._0_4_ = *pfVar6;
      local_res10._4_4_ = pfVar6[1];
      uVar9 = *(undefined8 *)pfVar6;
      if (lVar8 != param_2) {
        local_res10 = (double)uVar9;
        if (*(longlong *)(param_2 + 0x18) != lVar8) {
          puVar7 = (undefined8 *)FUN_1805200a0(local_a0,lVar8,*(longlong *)(param_2 + 0x18),uVar9);
          uVar9 = *puVar7;
        }
        FUN_1805200f0(&local_res10,param_2,uVar9);
      }
      local_b8[0] = (double)local_res10._4_4_ + DAT_1824c4520;
      local_res10 = (double)(float)local_res10 + DAT_1824c4520;
      local_c8 = local_c8 + ((int)(float)local_res10 - (int)*(undefined8 *)(param_1 + 8));
      iStack_c4 = iStack_c4 +
                  (local_b8[0]._0_4_ - (int)((ulonglong)*(undefined8 *)(param_1 + 8) >> 0x20));
    }
    if (param_4 == 0) {
      FUN_18134bfe0(param_2,local_c8,iStack_c4,uStack_c0,uStack_bc);
    }
    else {
      FUN_1813489c0(param_4,param_2,&local_c8,0,in_stack_ffffffffffffff18 & 0xffffff00,0,0);
    }
  }
  return;
}



############ FUN_ 18133b560 size=185 ############

void FUN_18133b560(longlong param_1,longlong param_2,undefined1 param_3)

{
  undefined8 *puVar1;
  int iVar2;
  
  if (param_2 != 0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x60);
    FUN_181322bc0(puVar1,param_2);
    *puVar1 = juce::ModalComponentManager::ModalItem::vftable;
    puVar1[8] = param_2;
    puVar1[9] = 0;
    puVar1[10] = 0;
    *(undefined4 *)(puVar1 + 0xb) = 0;
    *(undefined1 *)((longlong)puVar1 + 0x5c) = 1;
    *(undefined1 *)((longlong)puVar1 + 0x5d) = param_3;
    iVar2 = *(int *)(param_1 + 0x24) + 1;
    if (*(int *)(param_1 + 0x20) < iVar2) {
      FUN_18047cb30(param_1 + 0x18,*(int *)(param_1 + 0x24) + 9 + iVar2 / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x24);
    *(int *)(param_1 + 0x24) = iVar2 + 1;
    *(undefined8 **)(*(longlong *)(param_1 + 0x18) + (longlong)iVar2 * 8) = puVar1;
  }
  return;
}



############ FUN_ 18133bc00 size=263 ############

void FUN_18133bc00(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float *pfVar4;
  undefined8 local_res8;
  undefined8 local_res10;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res8 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8);
  }
  pfVar4 = (float *)FUN_1804e5a90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),
                                  &local_res8,param_3,param_4,uVar5);
  fVar1 = *pfVar4;
  fVar2 = pfVar4[1];
  if (DAT_182673700 == 0) {
    local_res10 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res10);
  }
  fVar3 = *(float *)(DAT_182673700 + 0xc0);
  local_res8._0_4_ = fVar1;
  local_res8._4_4_ = fVar2;
  if (fVar3 != DAT_1824c3ea4) {
    local_res8._0_4_ = fVar1 / fVar3;
    local_res8._4_4_ = fVar2 / fVar3;
  }
  if ((*(float *)(param_1 + 0x78) != (float)local_res8) ||
     (*(float *)(param_1 + 0x7c) != local_res8._4_4_)) {
    FUN_18133b830(param_1 + -8);
  }
  return;
}



############ FUN_ 18133c180 size=102 ############

undefined8
FUN_18133c180(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 local_res8 [4];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    local_res8[0] = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8[0]);
  }
  puVar1 = (undefined8 *)
           FUN_1804e5a90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),local_res8,
                         param_3,param_4,uVar2);
  FUN_18051ec70(param_1,*puVar1);
  return param_1;
}



############ FUN_ 18133e4d0 size=185 ############

ulonglong FUN_18133e4d0(ulonglong param_1,char param_2)

{
  longlong *plVar1;
  longlong lVar2;
  ulonglong uVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  longlong *plVar6;
  
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  plVar6 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  uVar5 = (ulonglong)*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  plVar1 = plVar6 + uVar5;
  do {
    if (plVar6 == plVar1) {
      return uVar5 & 0xffffffffffffff00;
    }
    lVar2 = *(longlong *)(*plVar6 + 0x48);
    uVar5 = 0;
    if (lVar2 != 0) {
      uVar5 = *(ulonglong *)(lVar2 + 0x10);
    }
    if (uVar5 == param_1) {
LAB_18133e560:
      if ((*(byte *)(*plVar6 + 0x28) & 0x70) != 0) {
        return CONCAT71((int7)(uVar5 >> 8),1);
      }
    }
    else {
      uVar3 = uVar5;
      if (param_2 != '\0') {
        do {
          uVar5 = 0;
          if (uVar3 == 0) goto LAB_18133e566;
          uVar5 = *(ulonglong *)(uVar3 + 0x18);
          uVar3 = uVar5;
        } while (uVar5 != param_1);
        goto LAB_18133e560;
      }
    }
LAB_18133e566:
    plVar6 = plVar6 + 1;
  } while( true );
}



############ FUN_ 18133f720 size=101 ############

void FUN_18133f720(int param_1)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  if (0 < param_1) {
    if (*(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x10) != param_1) {
      FUN_1812a77d0(*(longlong *)(DAT_182673700 + 0x30),param_1);
      return;
    }
    return;
  }
  FUN_1812a7720();
  return;
}



############ FUN_ 181342d50 size=83 ############

void FUN_181342d50(void)

{
  undefined8 uVar1;
  
  if (DAT_182673700 == 0) {
    uVar1 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar1);
  }
  FUN_1804e6e90(**(undefined8 **)(*(longlong *)(DAT_182673700 + 0x30) + 0x18),1);
  return;
}



############ FUN_ 181342e90 size=187 ############

undefined8 FUN_181342e90(void)

{
  int iVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  int iVar5;
  bool bVar6;
  
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar2);
    FUN_1812a7230(puVar2 + 2);
    *puVar2 = juce::ModalComponentManager::vftable;
    puVar2[2] = juce::ModalComponentManager::vftable;
    puVar2[3] = 0;
    puVar2[4] = 0;
    DAT_182673c20 = puVar2;
  }
  iVar5 = 0;
  iVar1 = *(int *)((longlong)DAT_182673c20 + 0x24) + -1;
  if (-1 < iVar1) {
    lVar3 = (longlong)iVar1;
    plVar4 = (longlong *)(DAT_182673c20[3] + lVar3 * 8);
    do {
      if ((*(char *)(*plVar4 + 0x5c) != '\0') && (bVar6 = iVar5 == 0, iVar5 = iVar5 + 1, bVar6)) {
        return *(undefined8 *)(*plVar4 + 0x40);
      }
      plVar4 = plVar4 + -1;
      lVar3 = lVar3 + -1;
    } while (-1 < lVar3);
  }
  return 0;
}



############ FUN_ 181342f60 size=188 ############

ulonglong FUN_181342f60(void)

{
  undefined8 *puVar1;
  longlong *plVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  
  uVar3 = 0;
  if (DAT_182673c20 == (undefined8 *)0x0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x28);
    FUN_1812a59f0(puVar1);
    FUN_1812a7230(puVar1 + 2);
    *puVar1 = juce::ModalComponentManager::vftable;
    puVar1[2] = juce::ModalComponentManager::vftable;
    puVar1[3] = 0;
    puVar1[4] = 0;
    DAT_182673c20 = puVar1;
  }
  plVar2 = (longlong *)DAT_182673c20[3];
  uVar5 = (ulonglong)
          ((longlong)(plVar2 + *(int *)((longlong)DAT_182673c20 + 0x24)) + (7 - (longlong)plVar2))
          >> 3;
  if (plVar2 + *(int *)((longlong)DAT_182673c20 + 0x24) < plVar2) {
    uVar5 = uVar3;
  }
  uVar4 = uVar3;
  if (uVar5 != 0) {
    do {
      if (*(char *)(*plVar2 + 0x5c) != '\0') {
        uVar3 = (ulonglong)((int)uVar3 + 1);
      }
      plVar2 = plVar2 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar5);
  }
  return uVar3;
}



############ FUN_ 1813518c0 size=150 ############

undefined8 *
FUN_1813518c0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = (undefined8 *)FUN_1811316e0(0x40);
  FUN_181351450(puVar2);
  *puVar2 = juce::SimpleValueSource::vftable;
  puVar2[2] = juce::SimpleValueSource::vftable;
  plVar1 = (longlong *)*param_2;
  puVar2[6] = plVar1;
  (**(code **)(*plVar1 + 0xb8))(plVar1,puVar2 + 7,param_2 + 1,param_4,uVar3);
  *param_1 = puVar2;
  LOCK();
  *(int *)(puVar2 + 1) = *(int *)(puVar2 + 1) + 1;
  UNLOCK();
  param_1[1] = 0;
  param_1[2] = 0;
  return param_1;
}



############ FUN_ 181351e20 size=429 ############

longlong * FUN_181351e20(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  longlong local_res10;
  undefined8 uVar5;
  longlong local_50;
  void *local_48;
  int local_3c;
  undefined8 *local_38;
  undefined8 local_30;
  undefined8 local_28;
  
  uVar5 = 0xfffffffffffffffe;
  if (**(char **)(param_2 + 0x18) == '\0') {
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    return param_1;
  }
  uVar2 = FUN_18122bf10();
  FUN_18122c1b0(uVar2,&local_res10,param_2 + 0x18,param_4,uVar5);
  puVar3 = (undefined8 *)FUN_1811316e0(0x50);
  *(undefined4 *)(puVar3 + 1) = 0;
  *puVar3 = juce::ValueTree::SharedObject::vftable;
  puVar3[2] = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  puVar3[3] = 0;
  puVar3[4] = 0;
  puVar3[5] = 0;
  puVar3[6] = 0;
  puVar3[7] = 0;
  puVar3[8] = 0;
  puVar3[9] = 0;
  LOCK();
  *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
  UNLOCK();
  local_30 = 0;
  local_28 = 0;
  local_38 = puVar3;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_181243640(puVar3 + 3,param_2);
  if (*(longlong *)(param_2 + 8) != 0) {
    puVar4 = (undefined8 *)FUN_181351e20(&local_50,*(longlong *)(param_2 + 8));
    FUN_180527010(puVar3,*puVar4,0xffffffff);
    if ((local_3c != 0) && (local_50 != 0)) {
      FUN_180527d40(local_50 + 0x38,&local_50);
    }
    local_3c = 0;
                    /* WARNING: Subroutine does not return */
    free(local_48);
  }
  *param_1 = (longlong)puVar3;
  param_1[1] = 0;
  param_1[2] = 0;
  if (*param_1 != 0) {
    FUN_180527d40(*param_1 + 0x38,&local_38);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 181352210 size=128 ############

longlong * FUN_181352210(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if (*param_1 != 0) {
    uVar1 = FUN_1811316e0(0x50);
    lVar2 = FUN_180526910(uVar1,*param_1,param_3,param_4,uVar3);
    *param_2 = lVar2;
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
    param_2[1] = 0;
    param_2[2] = 0;
    return param_2;
  }
  *param_2 = 0;
  param_2[1] = 0;
  param_2[2] = 0;
  return param_2;
}



############ FUN_ 18136ce00 size=315 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18136ce00(undefined8 param_1,longlong param_2,undefined4 param_3,undefined8 param_4,
                  int param_5,undefined8 param_6)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  longlong lVar5;
  int iVar6;
  int *_Memory;
  int *piVar7;
  longlong lVar8;
  undefined1 auStack_98 [32];
  int local_78;
  undefined8 local_70;
  int *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 uStack_48;
  ulonglong local_40;
  
  local_58 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_98;
  bVar3 = false;
  local_68 = (int *)((ulonglong)local_68 & 0xffffffff00000000);
  _Memory = local_68;
  if (param_2 != 0) {
    local_50 = _DAT_1824c48f0;
    uStack_48 = _UNK_1824c48f8;
    local_68 = (int *)0x0;
    local_60 = 0;
    FUN_1804af790(&local_68,8);
    _Memory = local_68;
    piVar7 = (int *)&local_50;
    lVar8 = 4;
    iVar6 = local_60._4_4_;
    do {
      lVar5 = (longlong)iVar6;
      iVar6 = iVar6 + 1;
      local_68[lVar5] = *piVar7;
      piVar7 = piVar7 + 1;
      lVar8 = lVar8 + -1;
    } while (lVar8 != 0);
    bVar1 = true;
    for (piVar7 = local_68; bVar3 = true, piVar7 != local_68 + iVar6; piVar7 = piVar7 + 1) {
      if (param_5 == *piVar7) {
        cVar4 = FUN_18136d640(param_1,param_4);
        bVar2 = bVar1;
        bVar3 = true;
        if (cVar4 != '\0') goto LAB_18136ceec;
        break;
      }
    }
  }
  bVar1 = false;
  bVar2 = bVar3;
LAB_18136ceec:
  if (bVar2) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  if (bVar1) {
    local_68 = (int *)FUN_1811316e0(0x118);
    local_70 = param_6;
    local_78 = param_5;
    FUN_180543eb0(local_68,param_2,param_3,param_4);
  }
}



############ FUN_ 18136cf60 size=335 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18136cf60(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  int param_5,undefined8 param_6)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  undefined8 uVar5;
  longlong lVar6;
  int iVar7;
  int *_Memory;
  int *piVar8;
  longlong lVar9;
  undefined1 auStack_d8 [32];
  int local_b8;
  undefined8 local_b0;
  int *local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 uStack_88;
  void *local_80 [5];
  ulonglong local_58;
  
  local_98 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_d8;
  bVar3 = false;
  local_a8 = (int *)((ulonglong)local_a8 & 0xffffffff00000000);
  uVar5 = FUN_18053f520(local_80,param_4);
  _Memory = local_a8;
  if (param_2 != 0) {
    local_90 = _DAT_1824c48f0;
    uStack_88 = _UNK_1824c48f8;
    local_a8 = (int *)0x0;
    local_a0 = 0;
    FUN_1804af790(&local_a8,8);
    _Memory = local_a8;
    piVar8 = (int *)&local_90;
    lVar9 = 4;
    iVar7 = local_a0._4_4_;
    do {
      lVar6 = (longlong)iVar7;
      iVar7 = iVar7 + 1;
      local_a8[lVar6] = *piVar8;
      piVar8 = piVar8 + 1;
      lVar9 = lVar9 + -1;
    } while (lVar9 != 0);
    bVar1 = true;
    for (piVar8 = local_a8; bVar3 = true, piVar8 != local_a8 + iVar7; piVar8 = piVar8 + 1) {
      if (param_5 == *piVar8) {
        cVar4 = FUN_18136d640(param_1,uVar5);
        bVar2 = bVar1;
        bVar3 = true;
        if (cVar4 != '\0') goto LAB_18136d064;
        break;
      }
    }
  }
  bVar1 = false;
  bVar2 = bVar3;
LAB_18136d064:
  if (bVar2) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  if (bVar1) {
    local_a8 = (int *)FUN_1811316e0(0x118);
    local_b0 = param_6;
    local_b8 = param_5;
    FUN_180543eb0(local_a8,param_2,param_3,uVar5);
  }
                    /* WARNING: Subroutine does not return */
  free(local_80[0]);
}



############ FUN_ 18136d0f0 size=202 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18136d0f0(undefined8 param_1,longlong param_2)

{
  undefined8 *puVar1;
  undefined1 auStack_108 [32];
  undefined8 local_e8;
  undefined4 local_e0;
  undefined8 local_d8;
  undefined8 *local_d0;
  undefined1 local_c8 [24];
  longlong local_b0;
  undefined8 local_58;
  undefined8 local_50;
  undefined4 local_48;
  void *local_40;
  ulonglong local_18;
  
  local_d8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_108;
  if (param_2 == 0) {
  }
  FUN_180541f20(local_c8);
  if (0 < local_b0) {
    puVar1 = (undefined8 *)FUN_1811316e0(0x98);
    local_e0 = local_48;
    local_e8 = local_50;
    local_d0 = puVar1;
    FUN_1813af040(puVar1,param_2 + 8,local_c8,local_58);
    *puVar1 = juce::MemoryMappedWavReader::vftable;
                    /* WARNING: Subroutine does not return */
    free(local_40);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 18136d2d0 size=258 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18136d2d0(undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined1 auStack_108 [32];
  undefined8 local_e8;
  undefined4 local_e0;
  undefined8 *local_d8;
  undefined8 local_d0;
  undefined1 local_c8 [24];
  longlong local_b0;
  undefined8 local_58;
  undefined8 local_50;
  undefined4 local_48;
  void *local_40;
  ulonglong local_18;
  
  local_d0 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_d8 = (undefined8 *)FUN_1811316e0(0x28);
  puVar1 = (undefined8 *)FUN_18123efe0(local_d8,param_2);
  if (*(char *)puVar1[4] != '\0') {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_180541f20(local_c8,puVar1);
  if (0 < local_b0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x98);
    local_e0 = local_48;
    local_e8 = local_50;
    local_d8 = puVar2;
    FUN_1813af040(puVar2,puVar1 + 1,local_c8,local_58);
    *puVar2 = juce::MemoryMappedWavReader::vftable;
                    /* WARNING: Subroutine does not return */
    free(local_40);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 18136d4e0 size=296 ############

undefined8 *
FUN_18136d4e0(undefined8 param_1,undefined8 param_2,ulonglong param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined **local_30;
  undefined1 local_28 [8];
  void *local_20 [3];
  
  uVar1 = FUN_1811316e0(0xb0,param_2,param_3,param_4,0xfffffffffffffffe);
  puVar2 = (undefined8 *)FUN_180541f20(uVar1,param_2);
  if (*(char *)((longlong)puVar2 + 0x85) != '\0') {
    puVar2[10] = 0;
    local_30 = juce::AudioFormat::vftable;
    FUN_18049c9e0(local_28,"Ogg-Vorbis file");
    FUN_18122ce70(local_20,&DAT_1821f6804);
    local_30 = juce::OggVorbisAudioFormat::vftable;
    (*(code *)PTR_FUN_1824ad3e0)(&local_30,param_2,param_3 & 0xff);
    local_30 = juce::AudioFormat::vftable;
    FUN_180488c50(local_20);
                    /* WARNING: Subroutine does not return */
    free(local_20[0]);
  }
  if (((((double)puVar2[1] <= 0.0) || (*(int *)(puVar2 + 4) == 0)) || (*(int *)(puVar2 + 0x10) < 1))
     || (0x20 < *(uint *)(puVar2 + 2))) {
    if ((char)param_3 == '\0') {
      puVar2[10] = 0;
    }
    puVar4 = (undefined8 *)0x0;
    puVar3 = puVar2;
  }
  else {
    puVar3 = (undefined8 *)0x0;
    puVar4 = puVar2;
  }
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(0,1);
  }
  return puVar4;
}



############ FUN_ 18136f310 size=182 ############

undefined8 *
FUN_18136f310(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
             undefined4 param_5,undefined8 param_6,undefined4 param_7)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  if (param_2 == 0) {
    return (undefined8 *)0x0;
  }
  uVar1 = FUN_1811316e0(0x378);
  puVar2 = (undefined8 *)FUN_18053e070(uVar1,param_2,param_3,param_4,param_5,param_7,param_6);
  if (*(char *)(puVar2 + 0xb) != '\0') {
    return puVar2;
  }
  (**(code **)*puVar2)(puVar2,1);
  return (undefined8 *)0x0;
}



############ FUN_ 18136f3d0 size=108 ############

undefined8 *
FUN_18136f3d0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  uVar1 = FUN_1811316e0(0x4f8,param_2,param_3,param_4,0xfffffffffffffffe);
  puVar2 = (undefined8 *)FUN_18053d660(uVar1,param_2);
  if ((double)puVar2[1] <= 0.0) {
    if ((char)param_3 == '\0') {
      puVar2[10] = 0;
    }
    (**(code **)*puVar2)(puVar2,1);
    puVar2 = (undefined8 *)0x0;
  }
  return puVar2;
}



############ FUN_ 181392f50 size=318 ############

undefined8 *
FUN_181392f50(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,int param_5,
             undefined8 param_6,undefined4 param_7)

{
  bool bVar1;
  bool bVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int *piVar5;
  int iVar6;
  ulonglong *puVar7;
  longlong lVar8;
  ulonglong local_res10;
  undefined8 uVar9;
  int *local_30;
  undefined8 local_28;
  
  uVar9 = 0xfffffffffffffffe;
  bVar2 = false;
  local_res10 = local_res10 & 0xffffffff00000000;
  if (param_2 != 0) {
    local_res10 = 0x1800000010;
    local_30 = (int *)0x0;
    local_28 = 0;
    FUN_1804af790(&local_30,8);
    puVar7 = &local_res10;
    lVar8 = 2;
    iVar6 = local_28._4_4_;
    do {
      lVar4 = (longlong)iVar6;
      iVar6 = iVar6 + 1;
      local_30[lVar4] = (int)*puVar7;
      puVar7 = (ulonglong *)((longlong)puVar7 + 4);
      lVar8 = lVar8 + -1;
    } while (lVar8 != 0);
    bVar1 = true;
    for (piVar5 = local_30; bVar2 = true, piVar5 != local_30 + iVar6; piVar5 = piVar5 + 1) {
      bVar2 = bVar1;
      if (param_5 == *piVar5) goto LAB_18139301c;
    }
  }
  bVar1 = false;
LAB_18139301c:
  if (bVar2) {
                    /* WARNING: Subroutine does not return */
    free(local_30);
  }
  if (bVar1) {
    local_res10 = FUN_1811316e0(0x70);
    puVar3 = (undefined8 *)FUN_18053d130(local_res10,param_2,param_3,param_4,param_5,param_7,uVar9);
    if (*(char *)(puVar3 + 0xb) != '\0') {
      return puVar3;
    }
    (**(code **)*puVar3)(puVar3,1);
  }
  return (undefined8 *)0x0;
}



############ FUN_ 1813930a0 size=108 ############

undefined8 *
FUN_1813930a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  uVar1 = FUN_1811316e0(0x1a0,param_2,param_3,param_4,0xfffffffffffffffe);
  puVar2 = (undefined8 *)FUN_18053c590(uVar1,param_2);
  if ((double)puVar2[1] <= 0.0) {
    if ((char)param_3 == '\0') {
      puVar2[10] = 0;
    }
    (**(code **)*puVar2)(puVar2,1);
    puVar2 = (undefined8 *)0x0;
  }
  return puVar2;
}



############ FUN_ 1813ab5e0 size=575 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813ab5e0(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined4 param_4,
                  int param_5,longlong param_6)

{
  uint *_Memory;
  uint uVar1;
  bool bVar2;
  bool bVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  int iVar7;
  bool bVar8;
  int *piVar9;
  longlong lVar10;
  undefined1 auStack_98 [32];
  int *local_78;
  undefined8 local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined8 local_60;
  undefined8 *local_58;
  int local_50 [4];
  ulonglong local_40;
  
  local_60 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_68 = 0;
  bVar8 = true;
  bVar2 = true;
  bVar3 = false;
  if (param_2 != (longlong *)0x0) {
    local_50[0] = 8;
    local_50[1] = 0x10;
    local_50[2] = 0x18;
    local_78 = (int *)0x0;
    local_70 = 0;
    FUN_1804af790(&local_78,8);
    piVar9 = local_50;
    lVar10 = 3;
    iVar7 = local_70._4_4_;
    do {
      lVar6 = (longlong)iVar7;
      iVar7 = iVar7 + 1;
      local_78[lVar6] = *piVar9;
      piVar9 = piVar9 + 1;
      lVar10 = lVar10 + -1;
    } while (lVar10 != 0);
    local_70 = CONCAT44(iVar7,(undefined4)local_70);
    for (piVar9 = local_78; bVar3 = bVar8, piVar9 != local_78 + iVar7; piVar9 = piVar9 + 1) {
      if (param_5 == *piVar9) goto LAB_1813ab6dc;
    }
  }
  bVar8 = bVar3;
  bVar2 = false;
LAB_1813ab6dc:
  if (bVar8) {
                    /* WARNING: Subroutine does not return */
    free(local_78);
  }
  if (bVar2) {
    puVar4 = (undefined8 *)FUN_1811316e0(0xb8);
    local_58 = puVar4;
    FUN_18049c4e0(&local_68,"AIFF file");
    *puVar4 = juce::AudioFormatWriter::vftable;
    puVar4[1] = param_3;
    *(undefined4 *)(puVar4 + 2) = param_4;
    *(int *)((longlong)puVar4 + 0x14) = param_5;
    *(undefined1 *)(puVar4 + 3) = 0;
    FUN_1812b1fe0(puVar4 + 4,param_4);
    puVar4[9] = param_2;
    puVar4[10] = CONCAT44(uStack_64,local_68);
    _Memory = (uint *)(CONCAT44(uStack_64,local_68) + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    *puVar4 = juce::AiffAudioFormatWriter::vftable;
    puVar4[0xb] = 0;
    puVar4[0xc] = 0;
    puVar4[0xd] = 0;
    puVar4[0xe] = 0;
    puVar4[0xf] = 0;
    puVar4[0x10] = 0;
    puVar4[0x11] = 0;
    puVar4[0x12] = 0;
    puVar4[0x13] = 0;
    puVar4[0x14] = 0;
    puVar4[0x15] = 0;
    *(undefined1 *)(puVar4 + 0x16) = 0;
    if (0 < *(int *)(param_6 + 0xc)) {
      FUN_1813ac660(puVar4 + 0xd,param_6);
      FUN_1813abe20(puVar4 + 0xf,param_6);
      FUN_1805392c0(puVar4 + 0x11,param_6);
    }
    uVar5 = (**(code **)(*param_2 + 0x18))(param_2);
    puVar4[0x15] = uVar5;
    FUN_18053b310(puVar4);
  }
}



############ FUN_ 1813ab850 size=369 ############

undefined8 FUN_1813ab850(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  undefined **local_98 [3];
  longlong local_80;
  void *local_60 [3];
  undefined8 *local_48;
  longlong local_40;
  int local_38;
  undefined8 local_30;
  undefined1 local_28;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  if (param_2 == 0) {
    return 0;
  }
  FUN_180539c50(local_98);
  if (0 < local_80) {
    puVar2 = (undefined8 *)FUN_1811316e0(0xa0);
    FUN_1813af040(puVar2,param_2 + 8,local_98,local_30,local_38 * local_80,local_38);
    *puVar2 = juce::MemoryMappedAiffReader::vftable;
    *(undefined1 *)(puVar2 + 0x13) = local_28;
    local_98[0] = juce::AudioFormatReader::vftable;
    if (local_48 != (undefined8 *)0x0) {
      (**(code **)*local_48)(local_48,1);
    }
    puVar3 = (uint *)(local_40 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    FUN_180488c50(local_60);
                    /* WARNING: Subroutine does not return */
    free(local_60[0]);
  }
  local_98[0] = juce::AudioFormatReader::vftable;
  if (local_48 != (undefined8 *)0x0) {
    (**(code **)*local_48)(local_48,1);
  }
  puVar3 = (uint *)(local_40 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  FUN_180488c50(local_60);
                    /* WARNING: Subroutine does not return */
  free(local_60[0]);
}



############ FUN_ 1813aba10 size=423 ############

undefined8 FUN_1813aba10(undefined8 param_1,undefined8 param_2)

{
  uint uVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  uint *puVar5;
  undefined **local_98 [3];
  longlong local_80;
  void *local_60 [3];
  undefined8 *local_48;
  longlong local_40;
  int local_38;
  undefined8 local_30;
  undefined1 local_28;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  uVar2 = FUN_1811316e0(0x28);
  puVar3 = (undefined8 *)FUN_18123efe0(uVar2,param_2);
  if (*(char *)puVar3[4] != '\0') {
    (**(code **)*puVar3)(puVar3,1);
    return 0;
  }
  FUN_180539c50(local_98,puVar3);
  if (0 < local_80) {
    puVar4 = (undefined8 *)FUN_1811316e0(0xa0);
    FUN_1813af040(puVar4,puVar3 + 1,local_98,local_30,local_38 * local_80,local_38);
    *puVar4 = juce::MemoryMappedAiffReader::vftable;
    *(undefined1 *)(puVar4 + 0x13) = local_28;
    local_98[0] = juce::AudioFormatReader::vftable;
    if (local_48 != (undefined8 *)0x0) {
      (**(code **)*local_48)(local_48,1);
    }
    puVar5 = (uint *)(local_40 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    FUN_180488c50(local_60);
                    /* WARNING: Subroutine does not return */
    free(local_60[0]);
  }
  local_98[0] = juce::AudioFormatReader::vftable;
  if (local_48 != (undefined8 *)0x0) {
    (**(code **)*local_48)(local_48,1);
  }
  puVar5 = (uint *)(local_40 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_180488c50(local_60);
                    /* WARNING: Subroutine does not return */
  free(local_60[0]);
}



############ FUN_ 1813abc10 size=114 ############

undefined8 *
FUN_1813abc10(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  uVar1 = FUN_1811316e0(0x78,param_2,param_3,param_4,0xfffffffffffffffe);
  puVar2 = (undefined8 *)FUN_180539c50(uVar1,param_2);
  if (((double)puVar2[1] <= 0.0) || (*(int *)(puVar2 + 4) == 0)) {
    if ((char)param_3 == '\0') {
      puVar2[10] = 0;
    }
    (**(code **)*puVar2)(puVar2,1);
    puVar2 = (undefined8 *)0x0;
  }
  return puVar2;
}



############ FUN_ 1813add10 size=774 ############

void FUN_1813add10(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  longlong *plVar5;
  ulonglong *puVar6;
  longlong *plVar7;
  longlong *plVar8;
  uint uVar9;
  ulonglong uVar10;
  uint uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  uint local_res8;
  longlong *local_50;
  uint local_48;
  uint local_44;
  
  lVar4 = *(longlong *)(param_1 + 0x80) + -0x400;
  uVar10 = (ulonglong)((uint)(lVar4 >> 0x3f) & 0x7fff) + lVar4 & 0xffffffffffff8000;
  uVar12 = (longlong)(*(int *)(param_1 + 0x88) << 0xf) + uVar10;
  plVar8 = (longlong *)0x0;
  uVar3 = 0;
  local_50 = (longlong *)0x0;
  local_res8 = 0;
  local_48 = 0;
  local_44 = 0;
  iVar2 = *(int *)(param_1 + 0xcc) + -1;
  lVar4 = (longlong)iVar2;
  plVar7 = plVar8;
  if (-1 < iVar2) {
    plVar5 = plVar8;
    uVar13 = uVar10;
    if ((longlong)uVar10 < (longlong)uVar12) {
      uVar13 = uVar12;
    }
    do {
      uVar3 = (uint)plVar5;
      plVar1 = *(longlong **)(*(longlong *)(param_1 + 0xc0) + lVar4 * 8);
      if (((longlong)uVar10 < plVar1[1]) && (*plVar1 < (longlong)uVar13)) {
        iVar2 = uVar3 + 1;
        if ((int)plVar8 < iVar2) {
          if (iVar2 < 0) {
            iVar2 = uVar3 + 2;
          }
          FUN_18047cb30(&local_50,uVar3 + 9 + (iVar2 >> 1) & 0xfffffff8);
          plVar8 = (longlong *)(ulonglong)local_48;
          plVar7 = local_50;
          uVar3 = local_44;
        }
        local_44 = uVar3 + 1;
        plVar5 = (longlong *)(ulonglong)local_44;
        plVar7[(int)uVar3] = (longlong)plVar1;
      }
      uVar3 = (uint)plVar5;
      local_res8 = (uint)plVar8;
      lVar4 = lVar4 + -1;
    } while (-1 < lVar4);
  }
  if (uVar3 == *(uint *)(param_1 + 0x88)) {
    local_44 = 0;
    if (local_res8 != 0) {
                    /* WARNING: Subroutine does not return */
      free(plVar7);
    }
    local_48 = 0;
  }
  else {
    if ((longlong)uVar10 < (longlong)uVar12) {
      plVar8 = *(longlong **)(param_1 + 0xc0);
      plVar5 = plVar8;
      do {
        while( true ) {
          if (plVar5 == plVar8 + *(int *)(param_1 + 0xcc)) {
            puVar6 = (ulonglong *)FUN_1811316e0(0x138);
            lVar4 = *(longlong *)(param_1 + 0x70);
            *puVar6 = uVar10;
            uVar12 = uVar10;
            if ((longlong)uVar10 < (longlong)(uVar10 + 0x8000)) {
              uVar12 = uVar10 + 0x8000;
            }
            puVar6[1] = uVar12;
            FUN_180535db0(puVar6 + 2,*(undefined4 *)(lVar4 + 0x20),0x8000);
            FUN_1813af530(lVar4,puVar6 + 2,0,0x8000,uVar10);
            uVar9 = uVar3;
            if ((int)local_res8 < (int)(uVar3 + 1)) {
              FUN_18047cb30(&local_50,uVar3 + 9 + (int)(uVar3 + 1) / 2 & 0xfffffff8);
              plVar7 = local_50;
              local_res8 = local_48;
              uVar9 = local_44;
            }
            uVar3 = uVar9 + 1;
            plVar7[(int)uVar9] = (longlong)puVar6;
            goto LAB_1813ade75;
          }
          if ((*(longlong *)*plVar5 <= (longlong)uVar10) &&
             ((longlong)uVar10 < ((longlong *)*plVar5)[1])) break;
          plVar5 = plVar5 + 1;
        }
        uVar10 = uVar10 + 0x8000;
        plVar5 = plVar8;
      } while ((longlong)uVar10 < (longlong)uVar12);
    }
LAB_1813ade75:
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x90));
    plVar8 = *(longlong **)(param_1 + 0xc0);
    *(longlong **)(param_1 + 0xc0) = plVar7;
    uVar9 = *(int *)(param_1 + 200);
    *(uint *)(param_1 + 200) = local_res8;
    uVar11 = *(uint *)(param_1 + 0xcc);
    *(uint *)(param_1 + 0xcc) = uVar3;
    local_50 = plVar8;
    local_48 = uVar9;
    local_44 = uVar11;
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x90));
    iVar2 = *(int *)(param_1 + 0xcc) + -1;
    lVar4 = (longlong)iVar2;
    if (-1 < iVar2) {
      do {
        uVar3 = 0;
        plVar7 = plVar8;
        if (0 < (int)uVar11) {
          do {
            if (*(longlong *)(*(longlong *)(param_1 + 0xc0) + lVar4 * 8) == *plVar7) {
              if (uVar3 < uVar11) {
                memmove(plVar8 + (int)uVar3,plVar8 + (int)uVar3 + 1,
                        (longlong)(int)((uVar11 - uVar3) + -1) << 3);
                uVar11 = uVar11 - 1;
                local_44 = uVar11;
              }
              if (((int)(uVar11 * 2) < (int)uVar9) && ((int)uVar11 < (int)uVar9)) {
                FUN_18047cb30(&local_50,uVar11);
                plVar8 = local_50;
                uVar9 = local_48;
                uVar11 = local_44;
              }
              break;
            }
            uVar3 = uVar3 + 1;
            plVar7 = plVar7 + 1;
          } while ((int)uVar3 < (int)uVar11);
        }
        lVar4 = lVar4 + -1;
      } while (-1 < lVar4);
    }
  }
  FUN_180546840(&local_50);
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1813aee20 size=524 ############

bool FUN_1813aee20(longlong param_1,longlong *param_2)

{
  int iVar1;
  undefined8 *_Memory;
  longlong *_Memory_00;
  undefined8 *puVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  
  if (*(longlong *)(param_1 + 0x78) != 0) {
    if ((*param_2 == *(longlong *)(param_1 + 0x68)) && (param_2[1] == *(longlong *)(param_1 + 0x70))
       ) goto LAB_1813af00d;
  }
  puVar2 = *(undefined8 **)(param_1 + 0x78);
  lVar7 = 0;
  *(undefined8 *)(param_1 + 0x78) = 0;
  if (puVar2 != (undefined8 *)0x0) {
    if ((LPCVOID)*puVar2 != (LPCVOID)0x0) {
      UnmapViewOfFile((LPCVOID)*puVar2);
    }
    if ((HANDLE)puVar2[3] != (HANDLE)0x0) {
      CloseHandle((HANDLE)puVar2[3]);
    }
                    /* WARNING: Subroutine does not return */
    free(puVar2);
  }
  lVar5 = (longlong)*(int *)(param_1 + 0x90) * param_2[1] + *(longlong *)(param_1 + 0x80);
  lVar6 = (longlong)*(int *)(param_1 + 0x90) * *param_2 + *(longlong *)(param_1 + 0x80);
  lVar4 = lVar6;
  if (lVar6 < lVar5) {
    lVar4 = lVar5;
  }
  puVar2 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar2 = 0;
  lVar3 = FUN_181217a30(param_1 + 0x60);
  lVar5 = lVar7;
  if (0 < lVar3) {
    lVar5 = lVar3;
  }
  if (lVar5 < lVar4) {
    lVar4 = lVar5;
  }
  if (lVar6 < 0) {
    lVar6 = lVar7;
  }
  puVar2[1] = lVar6;
  if (lVar6 < lVar4) {
    lVar6 = lVar4;
  }
  puVar2[2] = lVar6;
  puVar2[3] = 0;
  FUN_181217ae0(puVar2,param_1 + 0x60);
  _Memory = *(undefined8 **)(param_1 + 0x78);
  *(undefined8 **)(param_1 + 0x78) = puVar2;
  if (_Memory != (undefined8 *)0x0) {
    if ((LPCVOID)*_Memory != (LPCVOID)0x0) {
      UnmapViewOfFile((LPCVOID)*_Memory);
    }
    if ((HANDLE)_Memory[3] != (HANDLE)0x0) {
      CloseHandle((HANDLE)_Memory[3]);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  _Memory_00 = *(longlong **)(param_1 + 0x78);
  if (*_Memory_00 == 0) {
    *(undefined8 *)(param_1 + 0x78) = 0;
    if (_Memory_00 != (longlong *)0x0) {
      if ((LPCVOID)*_Memory_00 != (LPCVOID)0x0) {
        UnmapViewOfFile((LPCVOID)*_Memory_00);
      }
      if ((HANDLE)_Memory_00[3] != (HANDLE)0x0) {
        CloseHandle((HANDLE)_Memory_00[3]);
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  else {
    iVar1 = *(int *)(param_1 + 0x90);
    lVar4 = (_Memory_00[2] - *(longlong *)(param_1 + 0x80)) / (longlong)iVar1;
    lVar5 = (((longlong)(iVar1 + -1) - *(longlong *)(param_1 + 0x80)) + _Memory_00[1]) /
            (longlong)iVar1;
    lVar6 = *(longlong *)(param_1 + 0x18);
    if (lVar4 < *(longlong *)(param_1 + 0x18)) {
      lVar6 = lVar4;
    }
    if (0 < lVar5) {
      lVar7 = lVar5;
    }
    lVar4 = lVar7;
    if (lVar7 < lVar6) {
      lVar4 = lVar6;
    }
    *(longlong *)(param_1 + 0x68) = lVar7;
    *(longlong *)(param_1 + 0x70) = lVar4;
  }
LAB_1813af00d:
  return *(longlong *)(param_1 + 0x78) != 0;
}



############ FUN_ 1813b0120 size=323 ############

longlong FUN_1813b0120(longlong *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  longlong *plVar2;
  code *pcVar3;
  char cVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 *local_40;
  int local_34;
  
  puVar8 = (undefined8 *)*param_1;
  puVar1 = puVar8 + *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (puVar8 == puVar1) {
      return 0;
    }
    plVar2 = (longlong *)*puVar8;
    pcVar3 = *(code **)(*plVar2 + 0x10);
    if (pcVar3 == .?AV?$Soothe2ModuleBase@M$01@@::vtbl___AV__Soothe2ModuleBase_M_01__) break;
    cVar4 = (*pcVar3)(plVar2,param_2);
    if (cVar4 != '\0') {
      uVar5 = FUN_1811316e0(0x28);
      puVar6 = (undefined8 *)FUN_18123efe0(uVar5,param_2);
      if (*(char *)puVar6[4] == '\0') {
        lVar7 = (**(code **)(*plVar2 + 0x50))(plVar2,puVar6,1);
        if (lVar7 != 0) {
          return lVar7;
        }
      }
      else {
        (**(code **)*puVar6)(puVar6,1);
      }
    }
    puVar8 = puVar8 + 1;
  }
  (**(code **)(*plVar2 + 8))(plVar2,&local_40);
  puVar1 = local_40 + local_34;
  puVar8 = local_40;
  while( true ) {
    if (puVar8 == puVar1) {
      FUN_180488c50(&local_40);
                    /* WARNING: Subroutine does not return */
      free(local_40);
    }
    cVar4 = FUN_18123fe10(param_2,*puVar8);
    if (cVar4 != '\0') break;
    puVar8 = puVar8 + 1;
  }
  FUN_180488c50(&local_40);
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 1813b2e50 size=474 ############

undefined8 *
FUN_1813b2e50(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  uint *puVar6;
  longlong local_res18;
  longlong local_res20;
  undefined4 uVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  uVar7 = 0;
  if (*(char *)*param_2 == '\0') {
    *param_1 = 0;
    return param_1;
  }
  plVar3 = (longlong *)FUN_180553f00();
  if (*(code **)(*plVar3 + 0x20) == FUN_180552af0) {
    local_res18 = FUN_1811316e0(0x18);
    plVar3 = (longlong *)FUN_180553670(local_res18,plVar3,param_2,param_4,uVar7,uVar8);
  }
  else {
    plVar3 = (longlong *)(**(code **)(*plVar3 + 0x20))(plVar3,param_2);
  }
  puVar4 = (undefined8 *)FUN_1811316e0(0x250);
  plVar5 = (longlong *)(**(code **)(*plVar3 + 0x10))(plVar3,&local_res20);
  FUN_18049c4e0(&local_res18,"midi out");
  FUN_18122b770(puVar4,&local_res18);
  puVar6 = (uint *)(local_res18 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  *puVar4 = juce::MidiOutput::vftable;
  lVar2 = *plVar5;
  puVar4[0x40] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar2 = *param_2;
  puVar4[0x41] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  puVar4[0x42] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(puVar4 + 0x43));
  puVar4[0x49] = 0;
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar4[0x42] = plVar3;
  *param_1 = puVar4;
  return param_1;
}



############ FUN_ 1813b3160 size=417 ############

undefined8 * FUN_1813b3160(undefined8 *param_1,longlong *param_2,longlong param_3)

{
  int *piVar1;
  longlong lVar2;
  uint uVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  uint *puVar8;
  bool bVar9;
  longlong local_res20;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  if ((*(char *)*param_2 == '\0') || (param_3 == 0)) {
    *param_1 = 0;
  }
  else {
    plVar4 = (longlong *)FUN_1811316e0(0x18);
    *plVar4 = (longlong)&DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      DAT_1821dbf88 = DAT_1821dbf88 + 1;
      UNLOCK();
    }
    lVar2 = *param_2;
    plVar4[1] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    plVar4[2] = 0;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar3 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar9 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar3;
      if (bVar9) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    plVar6 = plVar4;
    plVar7 = plVar4;
    plVar5 = (longlong *)FUN_180553f00();
    plVar6 = (longlong *)
             (**(code **)(*plVar5 + 0x18))(plVar5,plVar4,param_2,param_3,plVar6,uVar10,plVar7);
    plVar7 = (longlong *)(**(code **)(*plVar6 + 0x10))(plVar6,&local_res20);
    if ((*(uint *)(*plVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar7 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *plVar4;
    *plVar4 = *plVar7;
    UNLOCK();
    puVar8 = (uint *)(lVar2 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    puVar8 = (uint *)(local_res20 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    plVar4[2] = (longlong)plVar6;
    *param_1 = plVar4;
  }
  return param_1;
}



############ FUN_ 1813b3380 size=42 ############

void FUN_1813b3380(void)

{
  undefined8 uVar1;
  
  uVar1 = FUN_1811316e0(0x90);
  FUN_180552040(uVar1);
  return;
}



############ FUN_ 1813b45f0 size=381 ############

undefined8 * FUN_1813b45f0(char param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  undefined8 *dwNewLong;
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *local_res10;
  undefined8 *local_res18;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (param_1 != '\0') {
    return (undefined8 *)0x0;
  }
  iVar2 = FUN_181216340();
  if (0x202 < iVar2) {
    puVar3 = (undefined8 *)FUN_1811316e0(0xa8);
    local_res18 = puVar3;
    FUN_18049c4e0(&local_res10,"Windows Audio");
    *puVar3 = juce::AudioIODeviceType::vftable;
    puVar3[1] = local_res10;
    _Memory = (uint *)(local_res10 + -2);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar3[2] = 0;
    puVar3[3] = 0;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    dwNewLong = puVar3 + 4;
    puVar3[5] = 0xffffffffffffffff;
    *(undefined4 *)(puVar3 + 6) = 0;
    *dwNewLong = juce::DeviceChangeDetector::vftable;
    local_res10 = dwNewLong;
    FUN_1804cf280(puVar3 + 7,L"Windows Audio",FUN_1804cf5b0,param_4,uVar4);
    SetWindowLongPtrW((HWND)puVar3[8],-0x15,(LONG_PTR)dwNewLong);
    *puVar3 = juce::WasapiClasses::WASAPIAudioIODeviceType::vftable;
    *dwNewLong = juce::WasapiClasses::WASAPIAudioIODeviceType::vftable;
    puVar3[9] = 0;
    puVar3[10] = 0;
    puVar3[0xb] = 0;
    puVar3[0xc] = 0;
    puVar3[0xd] = 0;
    puVar3[0xe] = 0;
    puVar3[0xf] = 0;
    puVar3[0x10] = 0;
    *(undefined2 *)(puVar3 + 0x11) = 0;
    puVar3[0x12] = 0;
    puVar3[0x13] = 0;
    puVar3[0x14] = 0;
    return puVar3;
  }
  return (undefined8 *)0x0;
}



############ FUN_ 1813b7430 size=2444 ############

void FUN_1813b7430(longlong param_1)

{
  LPCRITICAL_SECTION p_Var1;
  uint uVar2;
  void *_Memory;
  longlong lVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  undefined8 uVar10;
  longlong *plVar11;
  longlong *plVar12;
  uint *puVar13;
  longlong *plVar14;
  longlong *plVar15;
  undefined4 uVar16;
  undefined8 *local_res8;
  undefined8 *local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_160;
  longlong local_158;
  longlong local_150;
  longlong *local_148;
  int local_13c;
  longlong local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118;
  longlong local_110;
  undefined1 *local_108;
  undefined1 *local_100;
  char *local_f8;
  char *local_f0;
  char *local_e8;
  char *local_e0;
  char *local_d8;
  longlong local_d0;
  longlong local_c8;
  undefined *local_c0;
  longlong local_b8;
  longlong local_b0;
  char *local_a8;
  char *local_a0;
  longlong local_98;
  undefined8 local_90;
  LPCRITICAL_SECTION local_88;
  LPCRITICAL_SECTION local_80;
  LPCRITICAL_SECTION local_78;
  LPCRITICAL_SECTION local_70;
  LPCRITICAL_SECTION local_68;
  LPCRITICAL_SECTION local_60;
  LPCRITICAL_SECTION local_58;
  LPCRITICAL_SECTION local_50;
  
  local_90 = 0xfffffffffffffffe;
  puVar7 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar7 = 0;
  puVar7[1] = 0;
  puVar7[2] = 0;
  local_res8 = puVar7;
  local_res10 = puVar7 + 3;
  lVar8 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
  local_88 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar8);
  local_f8 = "DEVICESETUP";
  FUN_181211b90(puVar7 + 3,lVar8,&local_f8);
  LeaveCriticalSection(p_Var1);
  _Memory = *(void **)(param_1 + 0x108);
  *(undefined8 **)(param_1 + 0x108) = puVar7;
  if (_Memory != (void *)0x0) {
    FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  lVar8 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
  local_80 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar8);
  local_f0 = "deviceType";
  FUN_181211b90(&local_res8,lVar8,&local_f0);
  LeaveCriticalSection(p_Var1);
  FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_res8,param_1 + 0x100);
  puVar13 = (uint *)(local_res8 + -2);
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  lVar8 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
  local_78 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar8);
  local_e8 = "audioOutputDeviceName";
  FUN_181211b90(&local_res10,lVar8,&local_e8);
  LeaveCriticalSection(p_Var1);
  FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_res10,param_1 + 0x58);
  puVar13 = (uint *)(local_res10 + -2);
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  lVar8 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
  local_70 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar8);
  local_e0 = "audioInputDeviceName";
  FUN_181211b90(&local_res18,lVar8,&local_e0);
  LeaveCriticalSection(p_Var1);
  FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_res18,param_1 + 0x60);
  puVar13 = (uint *)(local_res18 + -0x10);
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  if (*(longlong *)(param_1 + 0xd8) != 0) {
    lVar8 = FUN_18122bf10();
    p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
    local_68 = p_Var1;
    EnterCriticalSection(p_Var1);
    FUN_18122c130(lVar8);
    local_d8 = "audioDeviceRate";
    FUN_181211b90(&local_res20,lVar8,&local_d8);
    LeaveCriticalSection(p_Var1);
    uVar10 = *(undefined8 *)(param_1 + 0x108);
    uVar16 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x70))();
    uVar9 = FUN_18122eaa0(&local_d0,uVar16);
    FUN_181246b70(uVar10,&local_res20,uVar9);
    puVar13 = (uint *)(local_d0 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    puVar13 = (uint *)(local_res20 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    plVar11 = *(longlong **)(param_1 + 0xd8);
    iVar5 = (**(code **)(*plVar11 + 0x28))();
    iVar6 = (**(code **)(*plVar11 + 0x68))(plVar11);
    if (iVar5 != iVar6) {
      lVar8 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
      local_60 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar8);
      local_a0 = "audioDeviceBufferSize";
      FUN_181211b90(&local_160,lVar8,&local_a0);
      LeaveCriticalSection(p_Var1);
      uVar10 = *(undefined8 *)(param_1 + 0x108);
      uVar16 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x68))();
      FUN_181220aa0(uVar10,&local_160,uVar16);
      puVar13 = (uint *)(local_160 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
    }
    if (*(char *)(param_1 + 0xa0) == '\0') {
      lVar8 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
      local_58 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar8);
      local_a8 = "audioDeviceInChans";
      FUN_181211b90(&local_158,lVar8,&local_a8);
      LeaveCriticalSection(p_Var1);
      uVar10 = FUN_18123bd40(param_1 + 0x78,&local_98);
      FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_158,uVar10);
      puVar13 = (uint *)(local_98 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      puVar13 = (uint *)(local_158 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
    }
    if (*(char *)(param_1 + 0xd0) == '\0') {
      uVar10 = FUN_18122bf10();
      FUN_18122c480(uVar10,&local_138,"audioDeviceOutChans");
      uVar10 = FUN_18123bd40(param_1 + 0xa8,&local_c8);
      FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_138,uVar10);
      puVar13 = (uint *)(local_c8 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      puVar13 = (uint *)(local_138 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
    }
  }
  plVar11 = *(longlong **)(param_1 + 0x250);
  plVar15 = *(longlong **)(param_1 + 600);
  if (plVar11 != plVar15) {
    local_c0 = &DAT_18225eb94;
    do {
      uVar10 = FUN_1812469a0(*(undefined8 *)(param_1 + 0x108),"MIDIINPUT");
      lVar8 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
      local_50 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar8);
      FUN_181211b90(&local_150,lVar8,&local_c0);
      LeaveCriticalSection(p_Var1);
      local_b8 = *(longlong *)*plVar11;
      puVar13 = (uint *)(local_b8 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        *puVar13 = *puVar13 + 1;
        UNLOCK();
      }
      FUN_181246b70(uVar10,&local_150,&local_b8);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      puVar13 = (uint *)(local_150 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      uVar9 = FUN_18122bf10();
      FUN_18122c480(uVar9,&local_130,"identifier");
      local_b0 = *(longlong *)(*plVar11 + 8);
      puVar13 = (uint *)(local_b0 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        *puVar13 = *puVar13 + 1;
        UNLOCK();
      }
      FUN_181246b70(uVar10,&local_130,&local_b0);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      puVar13 = (uint *)(local_130 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      plVar11 = plVar11 + 1;
    } while (plVar11 != plVar15);
  }
  if (*(int *)(param_1 + 0x24c) < 1) {
    local_108 = &DAT_1821dbf98;
    local_100 = &DAT_1821dbf98;
    cVar4 = FUN_180549a20(param_1 + 0x278,&local_108);
    FUN_1804d1090(&local_108);
    if (cVar4 == '\0') {
      uVar10 = FUN_18122bf10();
      FUN_18122c480(uVar10,&local_118,"defaultMidiOutput");
      FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_118,param_1 + 0x278);
      puVar13 = (uint *)(local_118 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      uVar10 = FUN_18122bf10();
      FUN_18122c480(uVar10,&local_110,"defaultMidiOutputDevice");
      FUN_181246b70(*(undefined8 *)(param_1 + 0x108),&local_110,param_1 + 0x280);
      puVar13 = (uint *)(local_110 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
    }
    return;
  }
  plVar11 = (longlong *)FUN_180553f00();
  (**(code **)(*plVar11 + 8))(plVar11,&local_148,1);
  plVar11 = *(longlong **)(param_1 + 0x240);
  plVar12 = plVar11 + (longlong)*(int *)(param_1 + 0x24c) * 2;
  plVar15 = local_148;
  do {
    if (plVar11 == plVar12) {
      FUN_180555c90(&local_148);
                    /* WARNING: Subroutine does not return */
      free(local_148);
    }
    lVar8 = (longlong)local_13c;
    if (plVar15 != plVar15 + lVar8 * 2) {
      lVar3 = *plVar11;
      plVar14 = plVar15;
      do {
        if (lVar3 == *plVar14) {
          iVar5 = 0;
        }
        else {
          iVar5 = FUN_18048cbc0(lVar3,*plVar14);
        }
        if (iVar5 == 0) {
          if (plVar11[1] == plVar14[1]) {
            iVar5 = 0;
          }
          else {
            iVar5 = FUN_18048cbc0(plVar11[1],plVar14[1]);
          }
          if (iVar5 == 0) goto LAB_1813b7ca4;
        }
        plVar14 = plVar14 + 2;
      } while (plVar14 != plVar15 + lVar8 * 2);
    }
    uVar10 = FUN_1812469a0(*(undefined8 *)(param_1 + 0x108),"MIDIINPUT");
    uVar9 = FUN_18122bf10();
    FUN_18122c480(uVar9,&local_128,&DAT_18225e804);
    FUN_181246b70(uVar10,&local_128,plVar11);
    puVar13 = (uint *)(local_128 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    uVar9 = FUN_18122bf10();
    FUN_18122c480(uVar9,&local_120,"identifier");
    FUN_181246b70(uVar10,&local_120,plVar11 + 1);
    puVar13 = (uint *)(local_120 + -0x10);
    plVar15 = local_148;
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
LAB_1813b7ca4:
    plVar11 = plVar11 + 2;
  } while( true );
}



############ FUN_ 1813b9f50 size=382 ############

void FUN_1813b9f50(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  void *_Dst;
  undefined8 uVar2;
  longlong *plVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  
  lVar5 = *param_2;
  if (lVar5 != 0) {
    lVar6 = 0;
    *param_2 = 0;
    if (*(int *)(param_1 + 0x40) < *(int *)(param_1 + 0x44) + 1) {
      FUN_18047cb30(param_1 + 0x38);
    }
    iVar4 = *(int *)(param_1 + 0x44);
    *(int *)(param_1 + 0x44) = iVar4 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar4 * 8) = lVar5;
    _Dst = (void *)FUN_1811316e0(0x80);
    memset(_Dst,0,0x80);
    uVar2 = FUN_180549b00(_Dst);
    iVar4 = *(int *)(param_1 + 0x54) + 1;
    if (*(int *)(param_1 + 0x50) < iVar4) {
      FUN_18047cb30(param_1 + 0x48,*(int *)(param_1 + 0x54) + 9 + iVar4 / 2 & 0xfffffff8);
    }
    iVar4 = *(int *)(param_1 + 0x54);
    *(int *)(param_1 + 0x54) = iVar4 + 1;
    *(undefined8 *)(*(longlong *)(param_1 + 0x48) + (longlong)iVar4 * 8) = uVar2;
    lVar5 = lVar6;
    if (*(longlong *)(param_1 + 0x328) != 0) {
      lVar5 = *(longlong *)(param_1 + 0x328) + 0x10;
    }
    if (0 < *(int *)(param_1 + 0x44)) {
      lVar6 = *(longlong *)
               (*(longlong *)(param_1 + 0x38) + (longlong)(*(int *)(param_1 + 0x44) + -1) * 8);
    }
    if (lVar5 != 0) {
      plVar3 = *(longlong **)(lVar6 + 0x10);
      iVar4 = *(int *)(lVar6 + 0x1c);
      plVar1 = plVar3 + iVar4;
      for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
        if (lVar5 == *plVar3) goto LAB_1813ba0a2;
      }
      if (*(int *)(lVar6 + 0x18) < iVar4 + 1) {
        FUN_18047cb30(lVar6 + 0x10,iVar4 + 9 + (iVar4 + 1) / 2 & 0xfffffff8);
      }
      iVar4 = *(int *)(lVar6 + 0x1c);
      *(int *)(lVar6 + 0x1c) = iVar4 + 1;
      *(longlong *)(*(longlong *)(lVar6 + 0x10) + (longlong)iVar4 * 8) = lVar5;
    }
  }
LAB_1813ba0a2:
  param_2 = (longlong *)*param_2;
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 0x30))(param_2,1);
  }
  return;
}



############ FUN_ 1813b8f10 size=2810 ############

void FUN_1813b8f10(longlong param_1,undefined8 *param_2,longlong param_3,char param_4,
                  undefined8 param_5,longlong param_6)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  void *_Memory;
  char *pcVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined8 uVar10;
  longlong lVar11;
  undefined8 *puVar12;
  longlong lVar13;
  longlong *plVar14;
  longlong *plVar15;
  uint *puVar16;
  longlong *plVar17;
  longlong lVar18;
  longlong *plVar19;
  bool bVar20;
  undefined1 auStack_1e8 [32];
  undefined8 local_1c8;
  undefined1 local_1c0;
  undefined8 local_1b8;
  undefined8 local_1b0;
  longlong local_1a8;
  undefined4 local_1a0;
  char *local_198;
  char *local_190;
  longlong local_188;
  undefined8 *local_180;
  longlong local_178;
  longlong local_170;
  longlong local_168;
  longlong local_160;
  longlong local_158;
  longlong *local_150;
  int local_144;
  longlong *local_140;
  int local_134;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118;
  longlong local_110;
  undefined8 local_108;
  undefined8 *local_100;
  undefined8 *local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  char *local_c8;
  char *local_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined4 local_88;
  undefined1 local_84;
  undefined1 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined4 local_58;
  undefined1 local_54;
  undefined1 local_50;
  ulonglong local_48;
  
  local_108 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  local_1a0 = 0;
  local_1a8 = param_1;
  local_188 = param_3;
  local_180 = param_2;
  local_100 = param_2;
  puVar8 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar8 = 0;
  puVar8[1] = 0;
  puVar8[2] = 0;
  lVar13 = *(longlong *)(param_3 + 0x18);
  puVar8[3] = lVar13;
  if ((*(uint *)(lVar13 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar13 + -0x10) = *(int *)(lVar13 + -0x10) + 1;
    UNLOCK();
  }
  local_f8 = puVar8;
  FUN_1812217a0(puVar8,param_3);
  _Memory = *(void **)(param_1 + 0x108);
  *(undefined8 **)(param_1 + 0x108) = puVar8;
  if (_Memory != (void *)0x0) {
    FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *local_180 = &DAT_1821dbf98;
  local_1a0 = 1;
  local_c8 = "";
  local_c0 = "";
  local_b8 = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_90 = 4;
  local_88 = 0xffffffff;
  local_84 = 0;
  local_a0 = 0;
  local_98 = 0;
  local_80 = 1;
  local_78 = 0;
  local_60 = 4;
  local_58 = 0xffffffff;
  local_54 = 0;
  local_70 = 0;
  local_68 = 0;
  local_50 = 1;
  if (param_6 != 0) {
    FUN_180549c30(&local_c8,param_6);
  }
  lVar13 = local_188;
  for (puVar8 = *(undefined8 **)(local_188 + 0x10); puVar8 != (undefined8 *)0x0;
      puVar8 = (undefined8 *)*puVar8) {
    local_f0 = puVar8[1];
    iVar6 = FUN_18048cbc0(local_f0,"audioDeviceName");
    if (iVar6 == 0) {
      puVar8 = puVar8 + 2;
      goto LAB_1813b90be;
    }
  }
  puVar8 = (undefined8 *)FUN_181220d40();
LAB_1813b90be:
  if (*(char *)*puVar8 == '\0') {
    plVar9 = (longlong *)FUN_181246db0(lVar13,"audioInputDeviceName");
    if ((*(uint *)(*plVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar9 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    pcVar4 = (char *)*plVar9;
    LOCK();
    UNLOCK();
    puVar16 = (uint *)(local_c0 + -0x10);
    local_c0 = pcVar4;
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    plVar9 = (longlong *)FUN_181246db0(lVar13,"audioOutputDeviceName");
    if ((*(uint *)(*plVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar9 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    UNLOCK();
    puVar16 = (uint *)(local_c8 + -0x10);
    uVar7 = *puVar16;
    local_c8 = (char *)*plVar9;
  }
  else {
    plVar9 = (longlong *)FUN_181246db0(lVar13,"audioDeviceName");
    if ((*(uint *)(*plVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar9 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    pcVar4 = (char *)*plVar9;
    LOCK();
    UNLOCK();
    puVar16 = (uint *)(local_c8 + -0x10);
    local_c8 = pcVar4;
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar4 + -0x10) = *(int *)(pcVar4 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    UNLOCK();
    puVar16 = (uint *)(local_c0 + -0x10);
    uVar7 = *puVar16;
    local_c0 = pcVar4;
  }
  lVar18 = local_1a8;
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  plVar9 = (longlong *)(local_1a8 + 0x100);
  uVar10 = FUN_181246db0(lVar13,"deviceType");
  FUN_181249460(plVar9,uVar10);
  FUN_1813b8c30(lVar18);
  plVar15 = *(longlong **)(lVar18 + 0x38);
  plVar14 = plVar15 + *(int *)(lVar18 + 0x44);
  if (plVar15 != plVar14) {
    lVar13 = *plVar9;
    do {
      lVar11 = *plVar15;
      if (*(longlong *)(lVar11 + 8) == lVar13) {
        iVar6 = 0;
      }
      else {
        iVar6 = FUN_18048cbc0(*(undefined8 *)(lVar11 + 8),lVar13);
      }
      lVar18 = local_1a8;
      if (iVar6 == 0) {
        if (lVar11 != 0) goto LAB_1813b9321;
        break;
      }
      plVar15 = plVar15 + 1;
    } while (plVar15 != plVar14);
  }
  FUN_1813b8c30(lVar18);
  plVar15 = *(longlong **)(lVar18 + 0x38);
  plVar14 = plVar15 + *(int *)(lVar18 + 0x44);
  for (; plVar15 != plVar14; plVar15 = plVar15 + 1) {
    lVar13 = *plVar15;
    if (((*local_c0 != '\0') && (cVar5 = FUN_1813b9e20(lVar13,1,&local_c0), cVar5 != '\0')) ||
       ((*local_c8 != '\0' && (cVar5 = FUN_1813b9e20(lVar13,0,&local_c8), cVar5 != '\0')))) {
      lVar18 = local_1a8;
      if (lVar13 != 0) {
        FUN_181249460(plVar9,lVar13 + 8);
        lVar18 = local_1a8;
        goto LAB_1813b9321;
      }
      break;
    }
    lVar18 = local_1a8;
  }
  if ((0 < *(int *)(lVar18 + 0x44)) && (**(longlong **)(lVar18 + 0x38) != 0)) {
    FUN_181249460(plVar9,**(longlong **)(lVar18 + 0x38) + 8);
  }
LAB_1813b9321:
  lVar13 = local_188;
  local_b0 = FUN_181220bd0(local_188,"audioDeviceBufferSize",local_b0);
  local_b8 = FUN_181246d40(lVar13,"audioDeviceRate",local_b8);
  FUN_18049c4e0(&local_170,&DAT_1821e4804);
  lVar11 = FUN_181220ce0(lVar13,"audioDeviceInChans");
  if (lVar11 == 0) {
    local_178 = local_170;
    puVar16 = (uint *)(local_170 + -0x10);
    uVar7 = *puVar16;
  }
  else {
    local_178 = *(longlong *)(lVar11 + 0x10);
    puVar16 = (uint *)(local_178 + -0x10);
    uVar7 = *puVar16;
  }
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    *puVar16 = *puVar16 + 1;
    UNLOCK();
  }
  FUN_18123bad0(&local_a8,local_178,2);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  puVar16 = (uint *)(local_170 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  FUN_18049c4e0(&local_168,&DAT_1821e47ec);
  puVar8 = (undefined8 *)FUN_181220c40(lVar13,&local_130,"audioDeviceOutChans",&local_168);
  local_e8 = *puVar8;
  FUN_18123bad0(&local_78,local_e8,2);
  puVar16 = (uint *)(local_130 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  puVar16 = (uint *)(local_168 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  cVar5 = FUN_181246e10(lVar13,"audioDeviceInChans");
  local_80 = cVar5 == '\0';
  cVar5 = FUN_181246e10(lVar13,"audioDeviceOutChans");
  local_50 = cVar5 == '\0';
  puVar12 = (undefined8 *)FUN_1813b8160(lVar18,&local_128,&local_c8,1);
  puVar8 = local_180;
  local_e0 = *local_180;
  *local_180 = *puVar12;
  *puVar12 = local_e0;
  puVar16 = (uint *)(local_128 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  if ((*(char *)*local_180 != '\0') && (param_4 != '\0')) {
    local_1b0 = 0;
    local_1b8 = param_5;
    local_1c0 = 0;
    local_1c8 = 0;
    puVar12 = (undefined8 *)
              FUN_1813b9d70(lVar18,&local_120,*(undefined4 *)(lVar18 + 0xf0),
                            *(undefined4 *)(lVar18 + 0xf4));
    local_d8 = *puVar8;
    *puVar8 = *puVar12;
    *puVar12 = local_d8;
    puVar16 = (uint *)(local_120 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
  }
  plVar9 = (longlong *)(lVar18 + 0x240);
  FUN_180555c90(plVar9);
  FUN_180555cf0(plVar9,0);
  FUN_1805566d0(*(undefined8 *)(lVar18 + 0x250),*(undefined8 *)(lVar18 + 600));
  *(undefined8 *)(lVar18 + 600) = *(undefined8 *)(lVar18 + 0x250);
  for (lVar13 = FUN_181246a60(lVar13,"MIDIINPUT"); lVar13 != 0;
      lVar13 = FUN_181220dc0(lVar13,"MIDIINPUT")) {
    plVar14 = (longlong *)FUN_181246db0(lVar13,"identifier");
    plVar15 = (longlong *)FUN_181246db0(lVar13,&DAT_18225e294);
    local_118 = *plVar15;
    if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
      UNLOCK();
    }
    local_110 = *plVar14;
    if ((*(uint *)(local_110 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_110 + -0x10) = *(int *)(local_110 + -0x10) + 1;
      UNLOCK();
    }
    iVar3 = *(int *)(lVar18 + 0x24c);
    iVar6 = iVar3 + 1;
    if (*(int *)(lVar18 + 0x248) < iVar6) {
      if (iVar6 < 0) {
        iVar6 = iVar3 + 2;
      }
      FUN_180555cf0(plVar9,iVar3 + 9 + (iVar6 >> 1) & 0xfffffff8);
    }
    iVar6 = *(int *)(lVar18 + 0x24c);
    *(int *)(lVar18 + 0x24c) = iVar6 + 1;
    plVar14 = (longlong *)((longlong)iVar6 * 0x10 + *plVar9);
    *plVar14 = local_118;
    plVar14[1] = local_110;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar7 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar20 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar7;
      if (bVar20) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar7 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar20 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar7;
      if (bVar20) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  plVar14 = (longlong *)FUN_180553f00();
  (**(code **)(*plVar14 + 8))(plVar14,&local_140,1);
  local_1a0 = 5;
  plVar9 = (longlong *)*plVar9;
  plVar15 = plVar9 + (longlong)*(int *)(lVar18 + 0x24c) * 2;
  plVar14 = local_140;
  for (; plVar9 != plVar15; plVar9 = plVar9 + 2) {
    plVar17 = plVar14 + (longlong)local_134 * 2;
    local_140 = plVar14;
    if (plVar14 != plVar17) {
      lVar13 = plVar9[1];
      plVar19 = plVar14 + 1;
      do {
        if (*plVar19 == lVar13) {
          iVar6 = 0;
        }
        else {
          iVar6 = FUN_18048cbc0(*plVar19,lVar13);
        }
        if (iVar6 == 0) {
          FUN_1813b6960(local_1a8,plVar9 + 1);
          goto LAB_1813b9836;
        }
        plVar2 = plVar19 + 1;
        plVar19 = plVar19 + 2;
      } while (plVar2 != plVar17);
      if (plVar14 != plVar17) {
        lVar13 = *plVar9;
        do {
          if (*plVar14 == lVar13) {
            iVar6 = 0;
          }
          else {
            iVar6 = FUN_18048cbc0(*plVar14,lVar13);
          }
          if (iVar6 == 0) {
            local_198 = (char *)plVar14[1];
            if ((*(uint *)(local_198 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_198 + -0x10) = *(int *)(local_198 + -0x10) + 1;
              UNLOCK();
            }
            goto LAB_1813b97eb;
          }
          plVar14 = plVar14 + 2;
        } while (plVar14 != plVar17);
      }
    }
    local_198 = "";
LAB_1813b97eb:
    if (*local_198 != '\0') {
      FUN_1813b6960(local_1a8,&local_198);
    }
    puVar16 = (uint *)(local_198 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
LAB_1813b9836:
    plVar14 = local_140;
  }
  plVar9 = (longlong *)FUN_181246db0(local_188,"defaultMidiOutputDevice");
  plVar14 = (longlong *)FUN_181246db0(local_188,"defaultMidiOutput");
  local_160 = *plVar14;
  if ((*(uint *)(local_160 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_160 + -0x10) = *(int *)(local_160 + -0x10) + 1;
    UNLOCK();
  }
  local_158 = *plVar9;
  if ((*(uint *)(local_158 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_158 + -0x10) = *(int *)(local_158 + -0x10) + 1;
    UNLOCK();
  }
  plVar9 = (longlong *)FUN_180553f00();
  (**(code **)(*plVar9 + 8))(plVar9,&local_150,0);
  plVar9 = local_150;
  lVar13 = local_158;
  local_1a0 = 0xd;
  plVar14 = local_150 + (longlong)local_144 * 2;
  if (local_150 != plVar14) {
    plVar15 = local_150 + 1;
    do {
      if (*plVar15 == lVar13) {
        iVar6 = 0;
      }
      else {
        iVar6 = FUN_18048cbc0(*plVar15,lVar13);
      }
      lVar18 = local_160;
      if (iVar6 == 0) {
        FUN_1813b63e0(local_1a8,&local_158);
        goto LAB_1813b99d7;
      }
      plVar17 = plVar15 + 1;
      plVar15 = plVar15 + 2;
    } while (plVar17 != plVar14);
    for (; plVar9 != plVar14; plVar9 = plVar9 + 2) {
      if (*plVar9 == lVar18) {
        iVar6 = 0;
      }
      else {
        iVar6 = FUN_18048cbc0(*plVar9,lVar18);
      }
      if (iVar6 == 0) {
        local_190 = (char *)plVar9[1];
        if ((*(uint *)(local_190 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_190 + -0x10) = *(int *)(local_190 + -0x10) + 1;
          UNLOCK();
        }
        goto LAB_1813b998b;
      }
    }
  }
  local_190 = "";
LAB_1813b998b:
  if (*local_190 != '\0') {
    FUN_1813b63e0(local_1a8,&local_190);
  }
  puVar16 = (uint *)(local_190 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
LAB_1813b99d7:
  FUN_180555c90(&local_150);
                    /* WARNING: Subroutine does not return */
  free(local_150);
}



############ FUN_ 1813ba0e0 size=180 ############

void FUN_1813ba0e0(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  int iVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar1 = FUN_1813b45f0(0);
  if (lVar1 != 0) {
    iVar3 = *(int *)((longlong)param_2 + 0xc) + 1;
    if ((int)param_2[1] < iVar3) {
      FUN_18047cb30(param_2,*(int *)((longlong)param_2 + 0xc) + 9 + iVar3 / 2 & 0xfffffff8,param_3,
                    param_4,uVar4);
    }
    iVar3 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar3 + 1;
    *(longlong *)(*param_2 + (longlong)iVar3 * 8) = lVar1;
  }
  uVar2 = FUN_1811316e0(0x90);
  lVar1 = FUN_180552040(uVar2);
  if (lVar1 != 0) {
    iVar3 = *(int *)((longlong)param_2 + 0xc) + 1;
    if ((int)param_2[1] < iVar3) {
      FUN_18047cb30(param_2,*(int *)((longlong)param_2 + 0xc) + 9 + iVar3 / 2 & 0xfffffff8,param_3,
                    param_4,uVar4);
    }
    iVar3 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar3 + 1;
    *(longlong *)(*param_2 + (longlong)iVar3 * 8) = lVar1;
  }
  return;
}



############ FUN_ 1813ba200 size=764 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813ba200(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 uVar6;
  char cVar7;
  int iVar8;
  uint uVar9;
  undefined4 uVar10;
  undefined8 *puVar11;
  uint *_Memory;
  longlong *plVar12;
  bool bVar13;
  undefined1 auStack_f8 [32];
  longlong local_d8;
  longlong local_d0;
  longlong *local_c8;
  int local_bc;
  undefined8 *local_b8;
  undefined8 *local_b0;
  longlong local_a8;
  longlong local_a0;
  undefined8 local_98;
  undefined8 local_90;
  void *local_80 [10];
  ulonglong local_30;
  
  local_98 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_f8;
  puVar11 = (undefined8 *)0x0;
  if (*(longlong *)(param_1 + 0xd8) != 0) {
    plVar12 = *(longlong **)(param_1 + 0x38);
    plVar2 = plVar12 + *(int *)(param_1 + 0x44);
    for (; plVar12 != plVar2; plVar12 = plVar12 + 1) {
      plVar3 = (longlong *)*plVar12;
      iVar8 = 0;
      if (*(longlong *)(*(longlong *)(param_1 + 0xd8) + 0x10) != plVar3[1]) {
        iVar8 = FUN_18048cbc0(*(undefined8 *)(*(longlong *)(param_1 + 0xd8) + 0x10),plVar3[1]);
      }
      if (iVar8 == 0) {
        (**(code **)(*plVar3 + 8))(plVar3,&local_c8,0);
        plVar2 = local_c8 + local_bc;
        if (local_c8 != plVar2) {
          lVar4 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 8);
          plVar12 = local_c8;
          do {
            iVar8 = 0;
            if (lVar4 != *plVar12) {
              iVar8 = FUN_18048cbc0(lVar4,*plVar12);
            }
            if (iVar8 == 0) {
              FUN_180488c50(&local_c8);
                    /* WARNING: Subroutine does not return */
              free(local_c8);
            }
            plVar12 = plVar12 + 1;
          } while (plVar12 != plVar2);
        }
        FUN_180488c50(&local_c8);
                    /* WARNING: Subroutine does not return */
        free(local_c8);
      }
    }
    FUN_1813b7dd0(param_1);
    lVar4 = *(longlong *)(param_1 + 0x108);
    if (lVar4 != 0) {
      puVar11 = (undefined8 *)FUN_1811316e0(0x20);
      *puVar11 = 0;
      puVar11[1] = 0;
      puVar11[2] = 0;
      lVar5 = *(longlong *)(lVar4 + 0x18);
      puVar11[3] = lVar5;
      if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
        UNLOCK();
      }
      local_b0 = puVar11;
      FUN_1812217a0(puVar11,lVar4);
    }
    local_b8 = puVar11;
    if (puVar11 == (undefined8 *)0x0) {
      FUN_1813b9a70(param_1,&local_a0,param_1 + 0xf8,param_1 + 0x58);
      _Memory = (uint *)(local_a0 + -0x10);
      uVar9 = *_Memory;
    }
    else {
      local_d0 = param_1 + 0x58;
      local_d8 = param_1 + 0xf8;
      FUN_1813b8f10(param_1,&local_a8,puVar11,1);
      _Memory = (uint *)(local_a8 + -0x10);
      uVar9 = *_Memory;
    }
    puVar11 = local_b8;
    if ((uVar9 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if (local_b8 != (undefined8 *)0x0) {
      FUN_1812472e0(local_b8);
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
    if (*(longlong **)(param_1 + 0xd8) != (longlong *)0x0) {
      uVar6 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x70))();
      *(undefined8 *)(param_1 + 0x68) = uVar6;
      uVar10 = (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x68))();
      *(undefined4 *)(param_1 + 0x70) = uVar10;
      puVar11 = (undefined8 *)
                (**(code **)(**(longlong **)(param_1 + 0xd8) + 0x88))
                          (*(longlong **)(param_1 + 0xd8),local_80);
      local_90 = *(undefined8 *)(param_1 + 0x78);
      *(undefined8 *)(param_1 + 0x78) = *puVar11;
      *puVar11 = local_90;
      uVar6 = puVar11[2];
      *(undefined8 *)(param_1 + 0x80) = puVar11[1];
      *(undefined8 *)(param_1 + 0x88) = uVar6;
      *(undefined8 *)(param_1 + 0x90) = puVar11[3];
      *(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(puVar11 + 4);
      *(undefined1 *)(param_1 + 0x9c) = *(undefined1 *)((longlong)puVar11 + 0x24);
                    /* WARNING: Subroutine does not return */
      free(local_80[0]);
    }
  }
  if (*(char *)(param_1 + 0x30) != '\0') {
    piVar1 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
    LOCK();
    bVar13 = *piVar1 == 0;
    if (bVar13) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar13) && (cVar7 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar7 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
      UNLOCK();
    }
  }
}



############ FUN_ 1813be180 size=187 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813be180(longlong param_1)

{
  undefined8 *puVar1;
  longlong lVar2;
  double dVar3;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined8 local_30;
  longlong local_28;
  ushort local_20;
  ulonglong local_18;
  
  local_30 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  dVar3 = *(double *)(param_1 + 0x30) * DAT_1824c4340;
  lVar2 = *(longlong *)(param_1 + 0x28);
  _ftime64_s(&local_28);
  if ((longlong)(local_28 * 1000 + (ulonglong)local_20) <= (longlong)dVar3 + lVar2) {
    if (DAT_182673700 == 0) {
      local_38 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_38);
    }
    if (*(int *)(DAT_182673700 + 0x88) <= *(int *)(param_1 + 0x38)) {
    }
  }
  puVar1 = (undefined8 *)(param_1 + -0xb0);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
}



############ FUN_ 1813bec00 size=1215 ############

void FUN_1813bec00(longlong *param_1)

{
  float fVar1;
  float fVar2;
  double dVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong *plVar7;
  int iVar8;
  uint uVar9;
  ulonglong uVar10;
  int iVar11;
  longlong *plVar12;
  uint uVar13;
  uint uVar14;
  ulonglong uVar15;
  int iVar16;
  longlong lVar17;
  int iVar18;
  double dVar19;
  
  uVar9 = 0;
  iVar16 = ((*(byte *)(param_1 + 0x28) & 1) != 0) + 3;
  iVar4 = (**(code **)(*param_1 + 0x158))();
  dVar3 = DAT_1824c4520;
  fVar1 = DAT_1824c3d18;
  if (iVar4 < 1) {
    iVar18 = 0;
  }
  else {
    iVar18 = ((int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3) * 0x16 +
             *(int *)((longlong)param_1 + 0x144);
  }
  if ((*(uint *)(param_1 + 0x28) & 8) == 0) {
    iVar11 = 0;
  }
  else {
    iVar11 = iVar16 * 0x16 + *(int *)((longlong)param_1 + 0x144);
    iVar6 = SUB84((double)((float)*(int *)((longlong)param_1 + 0x2c) * DAT_1824c3d54) +
                  DAT_1824c4520,0);
    if (iVar6 < iVar11) {
      iVar11 = iVar6;
    }
  }
  uVar14 = *(uint *)((longlong)param_1 + 0x144);
  uVar10 = (ulonglong)uVar14;
  uVar15 = uVar10;
  if ((*(uint *)(param_1 + 0x28) & 2) != 0) {
    uVar13 = uVar14 * 2 + 0x1e;
    dVar19 = (double)((float)*(int *)((longlong)param_1 + 0x2c) * DAT_1824c3d18) + DAT_1824c4520;
    uVar15 = (ulonglong)uVar13;
    if (SUB84(dVar19,0) < (int)uVar13) {
      uVar15 = (ulonglong)dVar19 & 0xffffffff;
    }
  }
  if (param_1[0x25] != 0) {
    FUN_18134bfe0(param_1[0x25],uVar10,uVar10,(int)param_1[5] + uVar14 * -2,
                  (int)uVar15 + uVar14 * -2);
  }
  if ((*(byte *)(param_1 + 0x28) & 0x10) != 0) {
    iVar6 = *(int *)((longlong)param_1 + 0x144);
    iVar5 = SUB84((double)((float)(int)param_1[5] * DAT_1824c3d04) + dVar3,0);
    iVar8 = 0x32;
    if (iVar5 < 0x32) {
      iVar8 = iVar5;
    }
    FUN_18134bfe0(param_1[0x23],iVar6,uVar15,(((int)param_1[5] - iVar6) - iVar8) + -4,
                  (((*(int *)((longlong)param_1 + 0x2c) - iVar6) - (int)uVar15) - iVar11) - iVar18);
    lVar17 = param_1[0x23];
    FUN_18134bfe0(param_1[0x24],*(int *)(lVar17 + 0x28) + 4 + *(int *)(lVar17 + 0x20),uVar15,
                  (((int)param_1[5] - *(int *)((longlong)param_1 + 0x144)) -
                  (*(int *)(lVar17 + 0x28) + *(int *)(lVar17 + 0x20))) + -4,
                  *(undefined4 *)(lVar17 + 0x2c));
    uVar15 = (ulonglong)
             (uint)(((*(int *)((longlong)param_1 + 0x2c) - *(int *)((longlong)param_1 + 0x144)) -
                    iVar11) - iVar18);
  }
  fVar2 = DAT_1824c3e0c;
  uVar14 = (uint)uVar15;
  if ((*(byte *)(param_1 + 0x28) & 8) != 0) {
    lVar17 = (longlong)iVar16;
    iVar18 = 4;
    if (4 < iVar11 / iVar16) {
      iVar18 = iVar11 / iVar16;
    }
    if (lVar17 != 0) {
      plVar12 = param_1 + 0x1f;
      do {
        FUN_18134bfe0(*plVar12,(ulonglong)((double)((float)(int)param_1[5] * fVar1) + dVar3) &
                               0xffffffff,uVar15,
                      (ulonglong)((double)((float)(int)param_1[5] * fVar2) + dVar3) & 0xffffffff,
                      iVar18 + -2);
        uVar14 = (int)uVar15 + iVar18;
        uVar15 = (ulonglong)uVar14;
        plVar12 = plVar12 + 1;
        lVar17 = lVar17 + -1;
      } while (lVar17 != 0);
    }
  }
  if (0 < iVar4) {
    iVar16 = *(int *)((longlong)param_1 + 0x144);
    iVar18 = (int)param_1[5] + -0x10;
    iVar18 = (int)(iVar18 + (iVar18 >> 0x1f & 7U)) >> 3;
    if (*(int *)((longlong)param_1 + 0x13c) != iVar4) {
      plVar12 = param_1 + 0x26;
      FUN_18047cbc0(plVar12);
      if ((int)param_1[0x27] != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*plVar12);
      }
      *(undefined4 *)(param_1 + 0x27) = 0;
      iVar11 = 0;
      if (0 < iVar4) {
        do {
          plVar7 = (longlong *)FUN_1811316e0(0xc0);
          plVar7[1] = (longlong)&DAT_1821dbf98;
          plVar7[2] = (longlong)&DAT_1821dbf98;
          plVar7[3] = 0;
          plVar7[4] = 0;
          plVar7[5] = 0;
          plVar7[6] = 0;
          plVar7[7] = 0;
          plVar7[8] = 0;
          plVar7[9] = 0;
          plVar7[10] = 0;
          plVar7[0xb] = 0;
          plVar7[0xc] = 0;
          plVar7[0xd] = 0;
          plVar7[0xe] = 0;
          plVar7[0xf] = 0;
          plVar7[0x10] = 0;
          plVar7[0x11] = 0;
          plVar7[0x12] = 0;
          plVar7[0x13] = 0;
          plVar7[0x14] = 0;
          *(undefined4 *)(plVar7 + 0x15) = 0;
          *(undefined1 *)((longlong)plVar7 + 0xac) = 0;
          *plVar7 = (longlong)juce::ColourSelector::SwatchComponent::vftable;
          plVar7[0x16] = (longlong)param_1;
          *(int *)(plVar7 + 0x17) = iVar11;
          iVar8 = *(int *)((longlong)param_1 + 0x13c);
          iVar6 = iVar8 + 1;
          if ((int)param_1[0x27] < iVar6) {
            if (iVar6 < 0) {
              iVar6 = iVar8 + 2;
            }
            FUN_18047cb30(plVar12,iVar8 + 9 + (iVar6 >> 1) & 0xfffffff8);
          }
          iVar6 = *(int *)((longlong)param_1 + 0x13c);
          *(int *)((longlong)param_1 + 0x13c) = iVar6 + 1;
          *(longlong **)(*plVar12 + (longlong)iVar6 * 8) = plVar7;
          (**(code **)(*plVar7 + 0x58))(plVar7,1);
          FUN_181343cc0(param_1,plVar7,0xffffffff);
          iVar11 = iVar11 + 1;
        } while (iVar11 < iVar4);
      }
    }
    iVar4 = 8;
    if (0 < *(int *)((longlong)param_1 + 0x13c)) {
      lVar17 = 0;
      iVar16 = uVar14 + iVar16 + 2;
      do {
        FUN_18134bfe0(*(undefined8 *)(lVar17 + param_1[0x26]),iVar4 + 2,iVar16,iVar18 + -4,0x12);
        uVar9 = uVar9 + 1;
        uVar14 = uVar9 & 0x80000007;
        if ((int)uVar14 < 0) {
          uVar14 = (uVar14 - 1 | 0xfffffff8) + 1;
        }
        if (uVar14 == 0) {
          iVar4 = 8;
          iVar16 = iVar16 + 0x16;
        }
        else {
          iVar4 = iVar4 + iVar18;
        }
        lVar17 = lVar17 + 8;
      } while ((int)uVar9 < *(int *)((longlong)param_1 + 0x13c));
    }
  }
  return;
}



############ FUN_ 1813bf870 size=153 ############

void FUN_1813bf870(longlong *param_1,char param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  FUN_1812a7720(param_1 + 0x1d);
  if (param_2 == '\0') {
    (**(code **)(*param_1 + 0x58))(param_1,0);
  }
  else {
    if (DAT_182673700 == 0) {
      uVar1 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(uVar1);
    }
    FUN_181323da0(DAT_182673700 + 200,param_1,(int)param_1[0x20],param_4,uVar2);
  }
  if ((char)param_1[0x26] != '\0') {
    (**(code **)*param_1)(param_1,1);
  }
  return;
}



############ FUN_ 1813bf910 size=220 ############

uint FUN_1813bf910(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint uVar2;
  DWORD DVar3;
  undefined8 uVar4;
  longlong *plVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  uVar2 = *(uint *)(DAT_182673700 + 0x88);
  if (*(int *)(param_1 + 0x1c) < (int)uVar2) {
    plVar5 = (longlong *)(param_1 + -0xe8);
    FUN_1812a7720(param_1);
    uVar2 = (**(code **)(*plVar5 + 0x58))(plVar5,0,param_3,param_4,uVar6);
    if (*(char *)(param_1 + 0x48) != '\0') {
                    /* WARNING: Could not recover jumptable at 0x0001813bf98f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar2 = (**(code **)*plVar5)(plVar5,1);
      return uVar2;
    }
  }
  else if (*(longlong *)(param_1 + 0x40) != 0) {
    DVar3 = timeGetTime();
    if (DVar3 < DAT_1826737fc) {
      uVar1 = DAT_1826737fc;
      uVar2 = DVar3;
      if (DVar3 < DAT_1826737fc - 1000) {
        LOCK();
        UNLOCK();
        uVar1 = DVar3;
      }
    }
    else {
      LOCK();
      UNLOCK();
      uVar1 = DVar3;
      uVar2 = DAT_1826737fc;
    }
    DAT_1826737fc = uVar1;
    if (*(longlong *)(param_1 + 0x40) < (longlong)(ulonglong)DVar3) {
      uVar2 = FUN_1813bf870(param_1 + -0xe8,CONCAT71((uint7)(uint3)(DVar3 >> 8),1));
      return uVar2;
    }
  }
  return uVar2;
}



############ FUN_ 1813c0f50 size=291 ############

void FUN_1813c0f50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  HCURSOR pHVar3;
  undefined8 *local_res8 [2];
  undefined4 *local_res18;
  undefined8 *local_res20;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600,param_3,param_4,uVar4);
  if (DAT_182673700 == 0) {
    local_res8[0] = (undefined8 *)FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(local_res8[0]);
  }
  FUN_1812a7720(*(undefined8 *)(DAT_182673700 + 0x30));
  *(undefined4 *)(param_1 + 0x410) = 0;
  local_res18 = &DAT_182673b68;
  do {
    LOCK();
    uVar1 = DAT_182673b68 & 1;
    DAT_182673b68 = DAT_182673b68 | 1;
    UNLOCK();
  } while (uVar1 != 0);
  if (DAT_18267aaf0 == (undefined8 *)0x0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x20);
    *puVar2 = 0;
    local_res20 = puVar2;
    pHVar3 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f01);
    if (pHVar3 == (HCURSOR)0x0) {
      pHVar3 = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
    }
    puVar2[1] = pHVar3;
    *(undefined4 *)(puVar2 + 2) = 1;
    *(undefined4 *)((longlong)puVar2 + 0x14) = 4;
    *(undefined1 *)(puVar2 + 3) = 1;
    DAT_18267aaf0 = puVar2;
  }
  else {
    LOCK();
    *(int *)(DAT_18267aaf0 + 2) = *(int *)(DAT_18267aaf0 + 2) + 1;
    UNLOCK();
  }
  puVar2 = DAT_18267aaf0;
  LOCK();
  DAT_182673b68 = 0;
  UNLOCK();
  local_res8[0] = DAT_18267aaf0;
  FUN_181342db0(param_1,local_res8);
  if (puVar2 != (undefined8 *)0x0) {
    FUN_1804e9060(puVar2);
  }
  return;
}



############ FUN_ 1813c5840 size=927 ############

void FUN_1813c5840(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  undefined8 *puVar5;
  longlong lVar6;
  int iVar7;
  longlong lVar8;
  uint uVar9;
  uint uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  uint uVar13;
  uint uVar14;
  int iVar15;
  ulonglong uVar16;
  uint uVar17;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  longlong *local_a0;
  uint local_98;
  undefined8 local_94;
  char local_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  longlong local_78;
  undefined4 local_68;
  int iStack_64;
  undefined4 uStack_60;
  int iStack_5c;
  undefined8 local_58;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined8 local_48;
  undefined4 local_38;
  int iStack_34;
  undefined4 uStack_30;
  int iStack_2c;
  
  local_48 = 0xfffffffffffffffe;
  uVar11 = 0;
  LOCK();
  *(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 0x400) + 0x20) + 0x18) = 0;
  UNLOCK();
  iVar15 = *(int *)(param_1 + 0xe8);
  uVar14 = iVar15 + 1;
  uVar12 = uVar11;
  uVar17 = uVar14;
  if (uVar14 != *(uint *)(param_1 + 0x43c)) {
    plVar1 = (longlong *)(param_1 + 0x430);
    FUN_18055c7d0(plVar1);
    if (*(int *)(param_1 + 0x438) != 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*plVar1);
    }
    *(undefined4 *)(param_1 + 0x438) = 0;
    for (; -1 < iVar15; iVar15 = iVar15 + -1) {
      puVar5 = (undefined8 *)FUN_1811316e0(0x18);
      *puVar5 = 0;
      puVar5[1] = 0;
      puVar5[2] = 0;
      iVar2 = *(int *)(param_1 + 0x43c);
      iVar7 = iVar2 + 1;
      if (*(int *)(param_1 + 0x438) < iVar7) {
        if (iVar7 < 0) {
          iVar7 = iVar2 + 2;
        }
        FUN_18047cb30(plVar1,(iVar7 >> 1) + iVar2 + 9 & 0xfffffff8);
      }
      iVar7 = *(int *)(param_1 + 0x43c);
      *(int *)(param_1 + 0x43c) = iVar7 + 1;
      *(undefined8 **)(*plVar1 + (longlong)iVar7 * 8) = puVar5;
    }
    uVar12 = (ulonglong)uVar14;
    uVar17 = 0;
  }
  iVar7 = (int)uVar12;
  local_a0 = *(longlong **)(param_1 + 200);
  uStack_b0 = 0;
  local_a8 = 0;
  uVar13 = 0;
  uVar10 = *(uint *)(param_1 + 0xd8);
  local_8c = '\0';
  iVar15 = *(int *)((longlong)local_a0 + 0xc);
  if (iVar15 == 0) {
    local_94 = 0;
    uVar9 = uVar13;
  }
  else {
    if ((int)uVar10 < iVar15) {
      uVar4 = uVar13;
      if (0 < (int)uVar10) {
        uVar4 = uVar10;
      }
      lVar8 = *(longlong *)(*local_a0 + (longlong)(int)uVar4 * 8);
      uVar10 = *(uint *)(lVar8 + 0x10);
      uVar9 = 0;
      if ((0 < (int)uVar10) && (uVar9 = uVar13, (int)uVar10 < 0)) {
        uVar9 = uVar10;
      }
    }
    else {
      uVar4 = iVar15 - 1;
      lVar8 = *(longlong *)(*local_a0 + (longlong)(int)uVar4 * 8);
      uVar9 = *(uint *)(lVar8 + 0x10);
    }
    local_94 = CONCAT44(uVar9,uVar4);
    uVar9 = *(int *)(lVar8 + 8) + uVar9;
  }
  local_b8 = local_a0;
  local_98 = uVar9;
  if (*(longlong *)(param_1 + 0x418) != 0) {
    iVar15 = *(int *)(param_1 + 0x44c) + -1;
    lVar8 = (longlong)iVar15;
    if (-1 < iVar15) {
      lVar6 = lVar8 * 0x18;
      do {
        plVar1 = (longlong *)(*(longlong *)(param_1 + 0x440) + lVar6);
        if (*(int *)((longlong)plVar1 + 0x14) <= (int)uVar9) {
          local_a8 = plVar1[2];
          local_b8 = (longlong *)*plVar1;
          uStack_b0 = plVar1[1];
          uVar13 = *(uint *)((longlong)plVar1 + 0x14);
          break;
        }
        lVar6 = lVar6 + -0x18;
        lVar8 = lVar8 + -1;
      } while (-1 < lVar8);
    }
    do {
      if ((int)uVar9 <= (int)uVar13) goto LAB_1813c5a7f;
      local_b8._4_4_ = (undefined4)((ulonglong)local_b8 >> 0x20);
      uStack_b0._4_4_ = (undefined4)((ulonglong)uStack_b0 >> 0x20);
      local_88 = (undefined4)local_b8;
      uStack_84 = local_b8._4_4_;
      uStack_80 = (undefined4)uStack_b0;
      uStack_7c = uStack_b0._4_4_;
      local_78 = local_a8;
      (**(code **)(**(longlong **)(param_1 + 0x418) + 8))(*(longlong **)(param_1 + 0x418),&local_b8)
      ;
    } while (((int)local_a8._4_4_ <= (int)uVar9) &&
            ((uVar13 = local_a8._4_4_, uStack_b0 != 0 ||
             ((int)local_a8 < *(int *)((longlong)local_b8 + 0xc)))));
    local_b8 = (longlong *)CONCAT44(uStack_84,local_88);
    uStack_b0 = CONCAT44(uStack_7c,uStack_80);
    local_a8 = local_78;
  }
LAB_1813c5a7f:
  if (local_8c != '\0') {
    FUN_1813c8030(&local_a0,0);
  }
  if (0 < (int)uVar14) {
    uVar16 = uVar11;
    do {
      uVar10 = (uint)uVar11;
      cVar3 = FUN_180558260(*(undefined8 *)(*(longlong *)(param_1 + 0x430) + uVar16 * 8),
                            *(undefined8 *)(param_1 + 200),*(int *)(param_1 + 0xd8) + uVar10,
                            &local_b8,*(undefined8 *)(param_1 + 0x418),
                            *(undefined4 *)(param_1 + 0xdc),param_1 + 0x120,param_1 + 0x138);
      if (cVar3 != '\0') {
        if ((int)uVar10 < (int)uVar17) {
          uVar17 = uVar10;
        }
        if ((int)uVar12 < (int)uVar10) {
          uVar12 = uVar11;
        }
      }
      iVar7 = (int)uVar12;
      uVar11 = (ulonglong)(uVar10 + 1);
      uVar16 = uVar16 + 1;
    } while ((longlong)uVar16 < (longlong)(int)uVar14);
  }
  if ((int)uVar17 <= iVar7) {
    local_68 = 0;
    iStack_64 = *(int *)(param_1 + 0xe4) * uVar17 + -1;
    uStack_60 = *(undefined4 *)(param_1 + 0x178);
    iStack_5c = ((iVar7 - uVar17) + 1) * *(int *)(param_1 + 0xe4) + 2;
    local_38 = 0;
    iStack_34 = iStack_64;
    uStack_30 = uStack_60;
    iStack_2c = iStack_5c;
    FUN_181342a30(param_1,&local_38);
  }
  lVar8 = *(longlong *)(param_1 + 0x408);
  if (lVar8 != 0) {
    iVar15 = *(int *)(*(longlong *)(param_1 + 200) + 0xc);
    if ((iVar15 != *(int *)(lVar8 + 0xb4)) || (*(int *)(lVar8 + 0xb0) != *(int *)(param_1 + 0xd8)))
    {
      *(int *)(lVar8 + 0xb0) = *(int *)(param_1 + 0xd8);
      *(int *)(lVar8 + 0xb4) = iVar15;
      local_58 = 0;
      uStack_80 = *(undefined4 *)(lVar8 + 0x28);
      uStack_7c = *(undefined4 *)(lVar8 + 0x2c);
      local_88 = 0;
      uStack_84 = 0;
      uStack_50 = uStack_80;
      uStack_4c = uStack_7c;
      FUN_181342870(lVar8,&local_88,CONCAT71((uint7)(uint3)((uint)iVar15 >> 8),1));
    }
  }
  return;
}



############ FUN_ 1813d73f0 size=3661 ############

void FUN_1813d73f0(undefined8 param_1,undefined8 param_2)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  longlong *plVar4;
  undefined1 local_250 [8];
  undefined1 local_248 [8];
  undefined1 local_240 [8];
  undefined1 local_238 [8];
  longlong local_230;
  longlong local_228;
  longlong local_220;
  longlong local_218;
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  longlong local_1e0;
  longlong local_1d8;
  longlong local_1d0;
  longlong local_1c8;
  longlong *local_1c0;
  longlong *plStack_1b8;
  longlong local_1b0;
  longlong *local_1a8;
  longlong *plStack_1a0;
  longlong local_198;
  longlong *local_190;
  longlong *plStack_188;
  longlong local_180;
  undefined1 local_178 [8];
  undefined1 local_170 [8];
  undefined1 local_168 [8];
  undefined1 local_160 [8];
  undefined1 local_158 [8];
  undefined1 local_150 [8];
  undefined1 local_148 [8];
  undefined1 local_140 [8];
  undefined1 local_138 [8];
  undefined1 local_130 [8];
  undefined1 local_128 [8];
  undefined1 local_120 [8];
  undefined1 local_118 [8];
  undefined1 local_110 [8];
  undefined1 local_108 [8];
  undefined1 local_100 [8];
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 uStack_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 uStack_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 uStack_30;
  undefined8 local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_230,"eq nodes");
  FUN_1814d1be0(param_2,&local_230);
  puVar3 = (uint *)(local_230 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  uVar2 = FUN_1811316e0(0xf0);
  FUN_18049c4e0(&local_228,"engages band listen mode");
  FUN_18049c4e0(local_118,&DAT_1821e4b4c);
  FUN_18049c4e0(local_110,&DAT_182270e04);
  local_1c0 = (longlong *)0x0;
  plStack_1b8 = (longlong *)0x0;
  local_1b0 = 0;
  FUN_18056d2d0(&local_1c0,local_118,local_108);
  uVar2 = FUN_1814d51f0(uVar2,&local_1c0,&local_228);
  FUN_1814d1af0(param_2,uVar2);
  plVar4 = local_1c0;
  if (local_1c0 != (longlong *)0x0) {
    for (; plVar4 != plStack_1b8; plVar4 = plVar4 + 1) {
      puVar3 = (uint *)(*plVar4 + -0x10);
      if ((*puVar3 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar3;
        *puVar3 = *puVar3 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar3);
        }
      }
    }
    plVar4 = local_1c0;
    if ((0xfff < (ulonglong)((local_1b0 - (longlong)local_1c0 >> 3) * 8)) &&
       (plVar4 = (longlong *)local_1c0[-1],
       0x1f < (ulonglong)((longlong)local_1c0 + (-8 - (longlong)plVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(plVar4);
  }
  _eh_vector_destructor_iterator_(local_118,8,2,FUN_18124a7e0);
  puVar3 = (uint *)(local_228 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  uVar2 = FUN_1811316e0(0xf0);
  FUN_18049c4e0(&local_220,"changes the Q value");
  FUN_18049c4e0(local_108,&DAT_1822700c4);
  FUN_18049c4e0(local_100,&DAT_18226f9e4);
  local_1a8 = (longlong *)0x0;
  plStack_1a0 = (longlong *)0x0;
  local_198 = 0;
  FUN_18056d2d0(&local_1a8,local_108,&local_f8);
  uVar2 = FUN_1814d51f0(uVar2,&local_1a8,&local_220);
  FUN_1814d1af0(param_2,uVar2);
  plVar4 = local_1a8;
  if (local_1a8 != (longlong *)0x0) {
    for (; plVar4 != plStack_1a0; plVar4 = plVar4 + 1) {
      puVar3 = (uint *)(*plVar4 + -0x10);
      if ((*puVar3 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar3;
        *puVar3 = *puVar3 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar3);
        }
      }
    }
    plVar4 = local_1a8;
    if ((0xfff < (ulonglong)((local_198 - (longlong)local_1a8 >> 3) * 8)) &&
       (plVar4 = (longlong *)local_1a8[-1],
       0x1f < (ulonglong)((longlong)local_1a8 + (-8 - (longlong)plVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(plVar4);
  }
  _eh_vector_destructor_iterator_(local_108,8,2,FUN_18124a7e0);
  puVar3 = (uint *)(local_220 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  uVar2 = FUN_1811316e0(0xf0);
  FUN_18049c4e0(&local_218,"changes the Q value");
  FUN_18049c4e0(local_250,"scroll wheel");
  local_190 = (longlong *)0x0;
  plStack_188 = (longlong *)0x0;
  local_180 = 0;
  FUN_18056d2d0(&local_190,local_250,local_248);
  uVar2 = FUN_1814d51f0(uVar2,&local_190,&local_218);
  FUN_1814d1af0(param_2,uVar2);
  plVar4 = local_190;
  if (local_190 == (longlong *)0x0) {
    _eh_vector_destructor_iterator_(local_250,8,1,FUN_18124a7e0);
    puVar3 = (uint *)(local_218 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_210,"changes the Q value slowly");
    FUN_18049c4e0(local_178,"shift");
    FUN_18049c4e0(local_170,"scroll wheel");
    local_f8 = 0;
    uStack_f0 = 0;
    local_e8 = 0;
    FUN_18056d2d0(&local_f8,local_178,local_168);
    uVar2 = FUN_1814d51f0(uVar2,&local_f8,&local_210);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_f8);
    _eh_vector_destructor_iterator_(local_178,8,2,FUN_18124a7e0);
    puVar3 = (uint *)(local_210 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_208,"changes the position slowly");
    FUN_18049c4e0(local_168,"shift");
    FUN_18049c4e0(local_160,&DAT_182270e74);
    local_e0 = 0;
    uStack_d8 = 0;
    local_d0 = 0;
    FUN_18056d2d0(&local_e0,local_168,local_158);
    uVar2 = FUN_1814d51f0(uVar2,&local_e0,&local_208);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_e0);
    _eh_vector_destructor_iterator_(local_168,8,2,FUN_18124a7e0);
    puVar3 = (uint *)(local_208 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_200,"changes the stereo balance");
    FUN_18049c4e0(local_158,&DAT_182273b94);
    FUN_18049c4e0(local_150,"scroll wheel");
    local_c8 = 0;
    uStack_c0 = 0;
    local_b8 = 0;
    FUN_18056d2d0(&local_c8,local_158,local_148);
    uVar2 = FUN_1814d51f0(uVar2,&local_c8,&local_200);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_c8);
    _eh_vector_destructor_iterator_(local_158,8,2,FUN_18124a7e0);
    puVar3 = (uint *)(local_200 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_1f8,"opens the context menu");
    FUN_18049c4e0(local_248,"right click");
    local_b0 = 0;
    uStack_a8 = 0;
    local_a0 = 0;
    FUN_18056d2d0(&local_b0,local_248,local_240);
    uVar2 = FUN_1814d51f0(uVar2,&local_b0,&local_1f8);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_b0);
    _eh_vector_destructor_iterator_(local_248,8,1,FUN_18124a7e0);
    puVar3 = (uint *)(local_1f8 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    FUN_18049c4e0(&local_1f0,"other controls");
    FUN_1814d1be0(param_2,&local_1f0);
    puVar3 = (uint *)(local_1f0 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_1e8,"changes the value slowly");
    FUN_18049c4e0(local_148,"shift");
    FUN_18049c4e0(local_140,&DAT_182273524);
    local_98 = 0;
    uStack_90 = 0;
    local_88 = 0;
    FUN_18056d2d0(&local_98,local_148,local_138);
    uVar2 = FUN_1814d51f0(uVar2,&local_98,&local_1e8);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_98);
    _eh_vector_destructor_iterator_(local_148,8,2,FUN_18124a7e0);
    puVar3 = (uint *)(local_1e8 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_1e0,"changes the value");
    FUN_18049c4e0(local_240,"scroll wheel");
    local_80 = 0;
    uStack_78 = 0;
    local_70 = 0;
    FUN_18056d2d0(&local_80,local_240,local_238);
    uVar2 = FUN_1814d51f0(uVar2,&local_80,&local_1e0);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_80);
    _eh_vector_destructor_iterator_(local_240,8,1,FUN_18124a7e0);
    puVar3 = (uint *)(local_1e0 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_1d8,"changes the value slowly");
    FUN_18049c4e0(local_138,"shift");
    FUN_18049c4e0(local_130,"scroll wheel");
    local_68 = 0;
    uStack_60 = 0;
    local_58 = 0;
    FUN_18056d2d0(&local_68,local_138,local_128);
    uVar2 = FUN_1814d51f0(uVar2,&local_68,&local_1d8);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_68);
    _eh_vector_destructor_iterator_(local_138,8,2,FUN_18124a7e0);
    puVar3 = (uint *)(local_1d8 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_1d0,"returns the value to the default");
    FUN_18049c4e0(local_128,&DAT_1821e4b5c);
    FUN_18049c4e0(local_120,"click");
    local_50 = 0;
    uStack_48 = 0;
    local_40 = 0;
    FUN_18056d2d0(&local_50,local_128,local_118);
    uVar2 = FUN_1814d51f0(uVar2,&local_50,&local_1d0);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_50);
    _eh_vector_destructor_iterator_(local_128,8,2,FUN_18124a7e0);
    puVar3 = (uint *)(local_1d0 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    uVar2 = FUN_1811316e0(0xf0);
    FUN_18049c4e0(&local_1c8,"returns the value to the default");
    FUN_18049c4e0(local_238,"double click");
    local_38 = 0;
    uStack_30 = 0;
    local_28 = 0;
    FUN_18056d2d0(&local_38,local_238,&local_230);
    uVar2 = FUN_1814d51f0(uVar2,&local_38,&local_1c8);
    FUN_1814d1af0(param_2,uVar2);
    FUN_1804884f0(&local_38);
    _eh_vector_destructor_iterator_(local_238,8,1,FUN_18124a7e0);
    puVar3 = (uint *)(local_1c8 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    return;
  }
  for (; plVar4 != plStack_188; plVar4 = plVar4 + 1) {
    puVar3 = (uint *)(*plVar4 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
  }
  plVar4 = local_190;
  if ((0xfff < (ulonglong)((local_180 - (longlong)local_190 >> 3) * 8)) &&
     (plVar4 = (longlong *)local_190[-1],
     0x1f < (ulonglong)((longlong)local_190 + (-8 - (longlong)plVar4)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(plVar4);
}



############ FUN_ 1814d1be0 size=489 ############

void FUN_1814d1be0(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  char cVar2;
  uint *puVar3;
  longlong lVar4;
  uint *puVar5;
  uint *puVar6;
  uint **ppuVar7;
  uint *puVar8;
  uint *puVar9;
  uint local_res8 [4];
  uint *local_res18;
  uint *local_res20;
  
  local_res8[0] = *(uint *)(param_1 + 0x894);
  puVar3 = (uint *)FUN_1811316e0(0xd0);
  puVar5 = puVar3;
  local_res18 = puVar3;
  FUN_1813453e0(puVar3,param_2);
  puVar5[0x2e] = 0;
  puVar5[0x2f] = 0;
  *(undefined1 *)(puVar5 + 0x30) = 0;
  *(undefined ***)puVar5 = ShortcutHeader::vftable;
  *(undefined ***)(puVar5 + 0x2c) = ShortcutHeader::vftable;
  FUN_181252d20(puVar5 + 0x32);
  plVar1 = (longlong *)(param_1 + 0x878);
  puVar5 = (uint *)*plVar1;
  cVar2 = *(char *)((longlong)*(uint **)(puVar5 + 2) + 0x19);
  puVar9 = puVar5;
  puVar8 = *(uint **)(puVar5 + 2);
  while (cVar2 == '\0') {
    if ((int)puVar8[8] < (int)local_res8[0]) {
      puVar6 = *(uint **)(puVar8 + 4);
      puVar8 = puVar9;
    }
    else {
      puVar6 = *(uint **)puVar8;
    }
    puVar9 = puVar8;
    puVar8 = puVar6;
    cVar2 = *(char *)((longlong)puVar6 + 0x19);
  }
  local_res20 = puVar3;
  if ((puVar9 == puVar5) || ((int)local_res8[0] < (int)puVar9[8])) {
    local_res18 = local_res8;
    lVar4 = FUN_180481d40(plVar1,local_res8[0],&local_res18);
    FUN_18057dd90(plVar1,&local_res18,puVar9,lVar4 + 0x20,lVar4);
    puVar9 = local_res18;
  }
  ppuVar7 = (uint **)(puVar9 + 10);
  puVar5 = puVar3;
  if (ppuVar7 != &local_res20) {
    puVar5 = (uint *)0x0;
    puVar9 = *ppuVar7;
    *ppuVar7 = puVar3;
    if (puVar9 != (uint *)0x0) {
      (*(code *)**(undefined8 **)puVar9)(puVar9,1);
    }
  }
  if (puVar5 != (uint *)0x0) {
    (*(code *)**(undefined8 **)puVar5)(puVar5,1);
  }
  puVar5 = (uint *)*plVar1;
  cVar2 = *(char *)((longlong)*(uint **)(puVar5 + 2) + 0x19);
  puVar9 = puVar5;
  puVar8 = *(uint **)(puVar5 + 2);
  while (cVar2 == '\0') {
    if ((int)puVar8[8] < (int)local_res8[0]) {
      puVar3 = *(uint **)(puVar8 + 4);
      puVar8 = puVar9;
    }
    else {
      puVar3 = *(uint **)puVar8;
    }
    puVar9 = puVar8;
    puVar8 = puVar3;
    cVar2 = *(char *)((longlong)puVar3 + 0x19);
  }
  if ((puVar9 == puVar5) || ((int)local_res8[0] < (int)puVar9[8])) {
    local_res18 = local_res8;
    lVar4 = FUN_180481d40(plVar1,local_res8[0],&local_res18);
    FUN_18057dd90(plVar1,&local_res18,puVar9,lVar4 + 0x20,lVar4);
    puVar9 = local_res18;
  }
  plVar1 = *(longlong **)(puVar9 + 10);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x58))(plVar1,1);
    FUN_181343cc0(param_1,plVar1,0xffffffff);
  }
  return;
}



############ FUN_ 1813d8250 size=253 ############

longlong * FUN_1813d8250(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 local_res8;
  longlong *local_res10;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  local_res10 = param_2;
  local_res8 = FUN_1811316e0(0x300);
  plVar3 = (longlong *)FUN_1814d78a0(local_res8);
  *param_2 = (longlong)plVar3;
  (**(code **)(*plVar3 + 0x188))(plVar3,*(undefined8 *)(param_1 + 0xbe8),*plVar3,param_4,7,uVar4);
  (**(code **)(*(longlong *)*param_2 + 0x188))
            ((longlong *)*param_2,*(undefined8 *)(param_1 + 0xbf0));
  (**(code **)(*(longlong *)*param_2 + 0x188))
            ((longlong *)*param_2,*(undefined8 *)(param_1 + 0xbe0));
  plVar3 = (longlong *)*param_2;
  if (*(code **)(*plVar3 + 400) == FUN_1814c0f80) {
    iVar2 = (int)(plVar3[0x59] - plVar3[0x58] >> 3) + -1;
    local_res8 = CONCAT44(local_res8._4_4_,iVar2);
    piVar1 = (int *)plVar3[0x5c];
    if ((int *)plVar3[0x5d] == piVar1) {
      FUN_18057b9e0(plVar3 + 0x5b,piVar1,&local_res8);
    }
    else {
      *piVar1 = iVar2;
      plVar3[0x5c] = plVar3[0x5c] + 4;
    }
  }
  else {
    (**(code **)(*plVar3 + 400))();
  }
  (**(code **)(*(longlong *)*param_2 + 0x188))
            ((longlong *)*param_2,*(undefined8 *)(param_1 + 0x948));
  return param_2;
}



############ FUN_ 1813dc0d0 size=2406 ############

/* WARNING: Instruction at (ram,0x0001813dc3ed) overlaps instruction at (ram,0x0001813dc3ea)
    */
/* WARNING: Possible PIC construction at 0x0001813dc51f: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x0001813dc524) */
/* WARNING: Removing unreachable block (ram,0x0001813dc1b1) */
/* WARNING: Removing unreachable block (ram,0x0001813dc147) */
/* WARNING: Removing unreachable block (ram,0x0001813dc381) */
/* WARNING: Removing unreachable block (ram,0x0001813dc3c8) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
          vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                    (longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  code *pcVar3;
  uint uVar4;
  ulonglong uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  ulonglong uVar8;
  int iVar9;
  uint uVar10;
  uint *puVar11;
  uint *puVar12;
  longlong lVar13;
  undefined1 *puVar14;
  longlong lVar15;
  longlong lVar16;
  int unaff_retaddr;
  undefined8 uStack_240;
  undefined1 auStack_238 [80];
  undefined8 local_1e8;
  undefined8 local_1e0;
  undefined8 local_1d0;
  undefined4 local_1c8;
  undefined8 local_1b8;
  undefined8 local_1b0;
  undefined8 local_1a8;
  longlong *local_1a0;
  undefined4 local_194;
  longlong local_190;
  uint local_188;
  undefined4 local_178;
  uint local_174;
  uint local_168 [6];
  undefined4 local_150;
  undefined4 local_14c;
  longlong local_148;
  longlong local_140;
  undefined8 local_110;
  ulonglong local_38;
  
  puVar14 = auStack_238;
  local_110 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_238;
  local_194 = 0x9c3ec77f;
  if (((ulonglong)&stack0x00000000 & 0x188) == 0) {
    uVar4 = (uint)&stack0x00000000 & 0x25ff;
    iVar9 = uVar4 * uVar4 + 1;
    uVar4 = (iVar9 >> 4) + (iVar9 >> 1) + iVar9 * 0x24924924 >> 0x1d;
    uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  }
  else {
    uVar4 = (uint)&stack0x00000000 & 0x1cff;
    uVar4 = (uVar4 + 1) * uVar4 + 0xe05 & 0x80000001;
  }
  local_174 = (int)(-uVar4 | uVar4) >> 0x1f & 0xcaf0U ^ 0xc920;
  local_178 = 0xe60;
  do {
    local_168[1] = 0xd393af62;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_1c8 = 0xd6decb77;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_1e8 = 0;
  local_1b8 = 0x180046f74;
  local_1b0 = 0x180048f70;
  local_1a8 = 0x180000000;
  plVar1 = (longlong *)(param_1 + 0x28);
  local_1a0 = plVar1;
  local_190 = param_1;
  if (*plVar1 == 0) {
    pcVar3 = *(code **)(*(longlong *)(param_1 + -0x778) + 8);
    if (pcVar3 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      uVar7 = *(undefined8 *)(param_1 + -0x770);
    }
    else {
      uVar7 = (*pcVar3)();
    }
    local_1d0 = uVar7;
    local_1a8 = FUN_1811316e0(0x98);
    uVar6 = FUN_180561470(local_1a8,param_1 + -0x8b8,uVar7);
    FUN_1805682c0(param_1 + -0x720,uVar6);
    do {
      uVar5 = 0xeb14;
      *(undefined8 *)(puVar14 + -8) = 0x1813dd26e;
      FUN_1813db43d();
      if ((uVar5 & 0xcf00) == 0) {
        puVar14 = puVar14 + 8;
      }
                    /* WARNING: Call to offcut address within same function */
      *(undefined8 *)(puVar14 + -8) = 0x1813dd292;
      func_0x0001813dd89a();
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    *(undefined8 *)(puVar14 + -8) = 0x1813dd2b8;
    uVar6 = FUN_1811316e0(0x198);
    local_1a8 = uVar6;
    *(undefined8 *)(puVar14 + 0x30) = uVar7;
    *(undefined4 *)(puVar14 + 0x28) = 800;
    *(longlong *)(puVar14 + 0x20) = param_1 + 0xd0;
    uVar7 = *(undefined8 *)(param_1 + -0x740);
    *(undefined8 *)(puVar14 + -8) = 0x1813dd2f2;
    uVar7 = FUN_18161bdc0(uVar6,uVar7,param_1 + -0x8b8,param_1 + 0x1a8);
    *(undefined8 *)(param_1 + 0x98) = uVar7;
    do {
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    local_1a8 = 0xa05c40d236e5dca7;
    *(undefined4 *)(puVar14 + 0x70) = 0x36e5dca7;
    uVar7 = *(undefined8 *)(param_1 + 0x98);
    *(undefined8 *)(puVar14 + -8) = 0x1813dd3e3;
    FUN_1805682c0(param_1 + -0x720,uVar7);
    do {
      *(undefined8 *)(puVar14 + -8) = 0x1813dd3fa;
      *(undefined4 *)(puVar14 + 0x74) = 0x92f4baff;
      local_150 = 0x73;
      local_148 = *(longlong *)(puVar14 + -8);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar4 = *(uint *)(puVar14 + 0x74);
    uVar4 = (uVar4 >> 2 & 0xcccccccc | uVar4 << 0x1e | (uVar4 & 0xccccccc) << 2 | uVar4 >> 0x1e) +
            0x1ac7e92b;
    uVar10 = uVar4 * 0x8000000 | uVar4 >> 5;
    uVar4 = ((uVar10 << 4 | (uVar4 & 0x1f) >> 1) & 0x96969696 |
            (uVar10 >> 4 | (uVar4 >> 5) << 0x1c) & 0x69696969) ^ 0x4128f24f;
    uVar4 = ((uVar4 >> 0x10 | uVar4 << 0x10) & 0xee9f1160 |
            (uVar4 << 0x10 | uVar4 >> 0x10) & 0x1160ee9f) + 0x664efaf2;
    *(uint *)(puVar14 + 0x74) =
         ((uVar4 * 0x10 | uVar4 >> 0x1c) & 0x96969696 |
         (uVar4 >> 4 | uVar4 * 0x10000000) & 0x69696969) + 0x2dda2378;
    do {
      *(undefined8 *)(puVar14 + -8) = 0x1813dd4c6;
      lVar16 = *(longlong *)(puVar14 + -8);
      local_188 = 0x775cff3b;
      local_14c = 0x7d;
      local_140 = lVar16;
      *(undefined8 *)(puVar14 + -8) = 0x1813dd4e5;
      FUN_1813df47a();
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar4 = (local_188 << 0x1c | local_188 >> 4) + 0xab3792b4;
    uVar4 = (uVar4 * 0x4000 | uVar4 >> 0x12) ^ 0xec15e8af;
    uVar4 = (uVar4 >> 2 | uVar4 << 0x1e) & 0x99999999 | (uVar4 << 2 | uVar4 >> 0x1e) & 0x66666666;
    uVar10 = (uVar4 << 0x10 | uVar4 >> 0x10) & 0xcc6c3393 |
             (uVar4 >> 0x10 | uVar4 << 0x10) & 0x3393cc6c;
    uVar4 = uVar10 >> 0x11 ^ uVar10;
    uVar10 = (uVar4 << 0x11 | uVar4 & 0x7fff) ^ uVar10;
    uVar4 = uVar10 >> 0x10 | uVar10 << 0x10;
    lVar13 = *(int *)(puVar14 + 0x74) + local_148;
    lVar15 = ((longlong)(int)(uVar4 << 8 | (uVar10 & 0xffff) >> 8) & 0xfffffffffe01fe01U |
             (ulonglong)((uVar4 >> 8 | (uVar10 >> 0x10) << 0x18) & 0x1fe01fe)) + local_140;
    *(undefined4 *)(puVar14 + 0x74) = 0;
    local_188 = 0;
    *(longlong *)(lVar13 + 4) =
         *(longlong *)(lVar13 + 4) + (*(ulonglong *)(lVar15 + 4) >> 9 & 0x80075080);
    do {
      puVar12 = local_168;
      puVar11 = (uint *)(puVar14 + 0x78);
      *(undefined8 *)(puVar14 + -8) = 0x1813dd5be;
      FUN_1813def85();
      *(longlong *)(puVar14 + -8) = lVar16;
      uVar7 = rdtsc();
      uVar4 = (int)uVar7 + (int)((ulonglong)uVar7 >> 0x20);
      *puVar12 = uVar4;
      uVar5 = (ulonglong)uVar4 * -0xfff - 0x7f15849c;
      uVar5 = ((uVar5 >> 9 | uVar5 << 0x37) * -0xbf + -0x7551fa82) * -0x1fff + 0x7800af9f;
      uVar8 = uVar5 * 0x20 | uVar5 >> 0x3b;
      uVar8 = uVar8 + (((uVar5 & 0x7ffffffffffffff) >> 6 | uVar8 << 0x35) - 0x2ed0731b);
      uVar8 = uVar8 ^ (uVar8 >> 7 | uVar8 << 0x39) - 0xfafe0dc;
      *puVar11 = ((uint)uVar8 ^ ((uint)(uVar8 << 0xf) | (uint)(uVar8 >> 0x31)) + 0x56329f43) &
                 0xf662a13f;
      lVar16 = *(longlong *)(puVar14 + -8);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    *(int *)(lVar13 + 8) = *(int *)(lVar13 + 8) + (*(uint *)(puVar14 + 0x78) ^ 0x394076a5);
    *(int *)(lVar13 + 4) = *(int *)(lVar13 + 4) + (*(uint *)(puVar14 + 0x78) ^ 0x77a3de2a);
    uVar5 = (*(ulonglong *)(lVar13 + 4) << 0x17 | *(ulonglong *)(lVar13 + 4) >> 0x29) ^
            0x78d83795b86cb55d;
    uVar5 = (uVar5 >> 0x13 | uVar5 << 0x2d) + 0x16bb64a0a91aadda;
    uVar5 = ((uVar5 >> 8 | uVar5 << 0x38) & 0x8c738c738c738c73 |
            (uVar5 * 0x100 | uVar5 >> 0x38) & 0x738c738c738c738c) ^ 0x61da24bd0ac0664b;
    uVar8 = (uVar5 << 8 | uVar5 >> 0x38) & 0xf40bf40bf40bf40b |
            (uVar5 >> 8 | uVar5 << 0x38) & 0xbf40bf40bf40bf4;
    uVar5 = (ulonglong)((uint)((uVar8 >> 0x1f ^ uVar8) >> 1) & 0x7fffffff);
    uVar5 = (uVar8 ^ (uVar5 << 0x1f | uVar5) * 2) + 0x9b3bfb83ed5cbee6;
    *(ulonglong *)(lVar13 + 4) = uVar5;
    plVar2 = (longlong *)(lVar15 + 4);
    *plVar2 = *plVar2 + (ulonglong)((uint)(uVar5 >> 9) & 0x280421);
    *(uint *)(puVar14 + 0x78) = (uint)(*(ulonglong *)(lVar13 + 4) >> 0x15) & 0x7fffffff;
    *(uint *)(puVar14 + 0x60) = (uint)(*(ulonglong *)(lVar13 + 4) >> 0x1b) ^ 0xc4846b01;
    uVar5 = *(ulonglong *)(lVar13 + 4) ^ 0x89d51e0ba152bd3c;
    *(ulonglong *)(puVar14 + 0x50) = uVar5;
    *(undefined8 *)(puVar14 + -8) = 0x180000000;
    *(BADSPACEBASE **)(puVar14 + -0x10) = register0x00000020;
    *(longlong **)(puVar14 + -0x18) = plVar1;
    if ((POPCOUNT(uVar5 & 0xff) & 1U) == 0) {
      uVar5 = ~-uVar5 + 1;
    }
    *(undefined **)(puVar14 + -0x20) = &DAT_1813dd922;
    *(undefined **)(puVar14 + -0x28) = &DAT_181447ec4;
    *(undefined1 **)(puVar14 + -0x30) = &LAB_1813cf09f;
    *(undefined1 **)(puVar14 + -0x38) = &LAB_1813e3aa6_4;
    *(undefined1 **)(puVar14 + -0x40) = &LAB_181427f54;
    *(undefined1 **)(puVar14 + -0x48) = &LAB_1813cf09f;
    *(undefined1 **)(puVar14 + -0x50) = &LAB_1813cf09f;
    return uVar5;
  }
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_1d0 = 0;
  local_1e8 = 0x180048f70;
  local_1e0 = 0x18004af6c;
                    /* WARNING: Could not recover jumptable at 0x0001813dc644. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar5 = (*(code *)0x18143c08c)(0x18004af6c,0xf0c);
  return uVar5;
}



############ FUN_ 18161bdc0 size=703 ############

undefined8 *
FUN_18161bdc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  undefined8 **ppuVar1;
  longlong *plVar2;
  int iVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  int iVar8;
  undefined8 *local_res8;
  
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[1] = Soothe2VertexData::vftable;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  *(undefined2 *)(param_1 + 0xe) = 0;
  *(undefined1 *)((longlong)param_1 + 0x72) = 0;
  *param_1 = ReductionLayer::vftable;
  param_1[0xf] = ReductionLayer::vftable;
  puVar7 = param_1 + 0x10;
  *puVar7 = GainRangeScalingOption::vftable;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_6._0_4_ = 0;
  local_res8 = param_1;
  FUN_180568b90(param_1 + 0x11,&param_6,param_3,param_4,0xfffffffffffffffe);
  param_6._0_4_ = 1;
  FUN_180568b90(param_1 + 0x11,&param_6);
  param_6._0_4_ = 2;
  FUN_180568b90(param_1 + 0x11,&param_6);
  *puVar7 = Soothe2GainRangeScalingOption::vftable;
  param_1[0x13] = param_2;
  param_1[0x14] = param_3;
  param_1[0x15] = param_4;
  param_1[0x16] = param_5;
  *(undefined4 *)(param_1 + 0x17) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0xbc) = 800;
  *(undefined4 *)(param_1 + 0x18) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0xc4) = 0x3f800000;
  param_1[0x19] = 0x3f800000;
  param_1[0x1a] = 0xffffffffffffffff;
  *(undefined2 *)(param_1 + 0x1b) = 0x100;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  ppuVar1 = (undefined8 **)(param_1 + 0x2f);
  *ppuVar1 = (undefined8 *)0x0;
  plVar2 = param_1 + 0x30;
  *plVar2 = 0;
  param_1[0x31] = 0;
  param_1[0x32] = param_7;
  iVar8 = *(int *)((longlong)param_1 + 0xbc) * 2;
  FUN_18056cd00(param_1 + 5,iVar8);
  FUN_18056c7b0(param_1 + 8,iVar8);
  FUN_18056c7b0(param_1 + 0xb,iVar8);
  uVar6 = FUN_1811316e0(0x18);
  puVar7 = (undefined8 *)FUN_1804841f0(uVar6,puVar7,param_1 + 0xf);
  if (ppuVar1 != &local_res8) {
    puVar4 = *ppuVar1;
    *ppuVar1 = puVar7;
    puVar7 = puVar4;
  }
  iVar8 = 0;
  if (puVar7 != (undefined8 *)0x0) {
    FUN_18056ae10(puVar7);
    iVar8 = 0;
  }
  do {
    iVar3 = *(int *)((longlong)param_1 + 0x18c);
    iVar5 = iVar3 + 1;
    if (*(int *)(param_1 + 0x31) < iVar5) {
      if (iVar5 < 0) {
        iVar5 = iVar3 + 2;
      }
      FUN_1804af790(plVar2,iVar3 + 9 + (iVar5 >> 1) & 0xfffffff8);
    }
    iVar5 = *(int *)((longlong)param_1 + 0x18c);
    *(int *)((longlong)param_1 + 0x18c) = iVar5 + 1;
    *(int *)(*plVar2 + (longlong)iVar5 * 4) = iVar8;
    iVar8 = iVar8 + 1;
  } while (iVar8 < 2);
  return param_1;
}



############ FUN_ 1813e0480 size=2030 ############

/* WARNING: Removing unreachable block (ram,0x0001813e0996) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 * FUN_1813e0480(undefined8 *param_1,longlong param_2)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  undefined4 *puVar4;
  undefined8 *puVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined1 auStackY_468 [32];
  undefined1 local_400 [8];
  undefined8 *local_3f8;
  undefined8 local_3e0;
  longlong local_3d8;
  uint local_3c0;
  undefined4 local_3bc;
  undefined8 *local_3a8;
  undefined1 local_3a0 [8];
  undefined8 local_398;
  undefined8 *local_340;
  longlong local_2d8;
  longlong local_2a8;
  undefined1 local_2a0 [32];
  undefined8 local_280;
  undefined8 *local_278;
  undefined8 local_270;
  undefined8 local_268;
  undefined8 local_260;
  undefined8 local_258;
  undefined8 local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined8 local_238;
  undefined8 local_230;
  undefined8 local_228;
  undefined8 local_220;
  undefined8 local_218;
  undefined1 local_210 [40];
  undefined4 local_1e8;
  undefined4 uStack_1e4;
  undefined4 uStack_1e0;
  undefined4 uStack_1dc;
  undefined1 local_1b8 [32];
  undefined8 local_198;
  undefined8 uStack_190;
  undefined4 local_188;
  undefined4 local_184;
  undefined4 local_180;
  undefined1 local_17c [4];
  undefined1 local_178 [24];
  undefined1 local_160 [64];
  undefined1 local_120 [64];
  undefined1 local_e0 [160];
  ulonglong local_40;
  
  local_280 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStackY_468;
  local_3f8 = param_1;
  local_3d8 = param_2;
  local_278 = param_1;
  FUN_180566b50(param_1,param_2,0x313,0x1b8);
  param_1[0x113] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x114) = 0;
  *param_1 = Soothe2AudioProcessorEditor::vftable;
  param_1[0x22] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x23] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x24] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x25] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x28] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x2b] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x2c] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x112] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x115] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x116] = Soothe2AudioProcessorEditor::vftable;
  param_1[0x117] = Soothe2AudioProcessorEditor::vftable;
  local_270 = 0;
  param_1[0x118] = 0;
  local_268 = 0;
  param_1[0x119] = 0;
  local_3a8 = param_1 + 0x11a;
  local_260 = 0;
  *local_3a8 = 0;
  local_258 = 0;
  param_1[0x11b] = 0;
  local_250 = 0;
  param_1[0x11c] = 0;
  local_248 = 0;
  param_1[0x11d] = 0;
  local_240 = 0;
  param_1[0x11e] = 0;
  local_238 = 0;
  param_1[0x11f] = 0;
  local_230 = 0;
  param_1[0x120] = 0;
  _eh_vector_constructor_iterator_(param_1 + 0x121,8,6,FUN_18051f800,FUN_18047c160);
  local_228 = 0;
  param_1[0x127] = 0;
  local_220 = 0;
  param_1[0x128] = 0;
  local_218 = 0;
  param_1[0x129] = 0;
  param_1[0x12a] = 0;
  param_1[299] = 0;
  param_1[300] = 0;
  *(undefined4 *)(param_1 + 0x12d) = 0;
  *(undefined4 *)((longlong)param_1 + 0x96c) = 0x3f800000;
  puVar1 = param_1 + 0x12e;
  local_340 = puVar1;
  FUN_180564340(puVar1);
  uVar3 = FUN_180529410(local_178,DAT_1824c441c,DAT_1824c45e0,DAT_1824c3da8);
  FUN_180485290(param_1 + 0x131,uVar3);
  FUN_180473170(local_e0);
  FUN_180473170(local_120);
  FUN_180473170(local_160);
  FUN_1805653d0(param_1 + 0x14c,DAT_1824c4734,DAT_1824c4468,DAT_1824c3f48);
  FUN_1813cc760(param_1 + 0x173);
  local_198 = _DAT_1824c4830;
  uStack_190 = _UNK_1824c4838;
  local_188 = DAT_1824c4388;
  local_184 = DAT_1824c4408;
  local_180 = DAT_1824c4424;
  puVar4 = (undefined4 *)FUN_18049b2a0(local_1b8,&local_198,local_17c);
  local_1e8 = *puVar4;
  uStack_1e4 = puVar4[1];
  uStack_1e0 = puVar4[2];
  uStack_1dc = puVar4[3];
  uVar3 = FUN_180473130(local_400);
  FUN_180568810(param_1 + 0x176,&local_1e8,uVar3);
  local_2d8 = param_2 + 0x338;
  FUN_1811e4f60(param_1 + 0x179,local_2d8);
  FUN_18051f800(param_1 + 0x17c);
  FUN_18051f800(param_1 + 0x17d);
  FUN_18051f800(param_1 + 0x17e);
  FUN_180564de0(param_1 + 0x17f);
  FUN_181358fe0(param_1 + 0x182,param_2);
  FUN_180560700(param_1 + 0x184,param_2);
  FUN_18051f800(param_1 + 0x481a8);
  puVar5 = (undefined8 *)FUN_181249f00(local_210,"selected band");
  local_2a8 = param_2 + 0x178;
  uVar3 = FUN_18119aa60(local_2a8,*puVar5);
  param_1[0x481a9] = uVar3;
  FUN_18051f800(param_1 + 0x481aa);
  local_398 = FUN_1811316e0(0x978);
  uVar3 = FUN_1814d77e0(local_398,param_1,0);
  FUN_180485410(param_1 + 0x481ab,uVar3);
  uVar6 = (uint)&stack0x00000000 & 0x2aff;
  uVar6 = ((uVar6 + 1) * uVar6 + 7) % 0x51;
  local_3c0 = ((int)(-uVar6 | uVar6) >> 0x1f) * -0xb44a ^ 0xbaca;
  local_3bc = 0xa50;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  FUN_1813cc160(param_1);
  local_3e0 = 0x1ffc;
  FUN_18124a880(local_3a0,"Soothe2AudioProcessorEditor");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,local_3a0);
  FUN_18124a7e0(local_3a0);
  puVar4 = (undefined4 *)FUN_1812a32b0(local_2a0,0xff5c7384);
  uVar2 = *puVar4;
  puVar4 = (undefined4 *)FUN_1805679c0(puVar1,0);
  *puVar4 = uVar2;
  return puVar4;
}



############ FUN_ 18140dda0 size=272 ############

undefined8 * FUN_18140dda0(undefined8 *param_1,undefined8 param_2,undefined8 *param_3)

{
  undefined8 **ppuVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *local_res8;
  undefined8 local_res10;
  undefined8 local_88;
  undefined4 local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined **local_68;
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined ***local_30;
  
  *param_1 = 0;
  ppuVar1 = (undefined8 **)(param_1 + 1);
  *ppuVar1 = (undefined8 *)0x0;
  *(undefined4 *)(param_1 + 2) = 0;
  *(undefined8 *)((longlong)param_1 + 0x14) = 0x3f800000;
  local_res8 = param_1;
  InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0x1c));
  local_78 = param_2;
  uStack_70 = param_1;
  local_res10 = FUN_1811316e0(0x88);
  local_88 = *param_3;
  local_80 = *(undefined4 *)(param_3 + 1);
  local_68 = std::_Func_impl_no_alloc<<lambda_d8187e250f411ed81f043da604eb1b88>,void,float>::vftable
  ;
  local_60 = (undefined4)local_78;
  uStack_5c = local_78._4_4_;
  uStack_58 = (undefined4)uStack_70;
  uStack_54 = uStack_70._4_4_;
  local_30 = &local_68;
  puVar3 = (undefined8 *)
           FUN_1813bb890(local_res10,(longlong)param_1 + 0x14,param_1 + 2,&local_68,&local_88);
  if (ppuVar1 == &local_res8) {
    if (puVar3 == (undefined8 *)0x0) {
      return param_1;
    }
    puVar4 = (undefined8 *)*puVar3;
  }
  else {
    puVar2 = *ppuVar1;
    *ppuVar1 = puVar3;
    if (puVar2 == (undefined8 *)0x0) {
      return param_1;
    }
    puVar4 = (undefined8 *)*puVar2;
    puVar3 = puVar2;
  }
  (*(code *)*puVar4)(puVar3,1);
  return param_1;
}



############ FUN_ 1814519d0 size=457 ############

void FUN_1814519d0(longlong param_1)

{
  longlong *plVar1;
  char cVar2;
  uint *puVar3;
  longlong lVar4;
  uint *puVar5;
  uint **ppuVar6;
  uint *puVar7;
  uint *puVar8;
  uint *puVar9;
  uint local_res8 [2];
  uint *local_res10;
  uint *local_res18 [2];
  
  local_res8[0] = *(uint *)(param_1 + 0x11c);
  puVar3 = (uint *)FUN_1811316e0(200);
  local_res10 = puVar3;
  memset(puVar3,0,200);
  FUN_18056b680(puVar3);
  *(undefined ***)puVar3 = PresetPanelSeparator::vftable;
  *(undefined ***)(puVar3 + 0x2c) = PresetPanelSeparator::vftable;
  plVar1 = (longlong *)(param_1 + 0x120);
  puVar9 = (uint *)*plVar1;
  cVar2 = *(char *)((longlong)*(uint **)(puVar9 + 2) + 0x19);
  puVar8 = puVar9;
  puVar7 = *(uint **)(puVar9 + 2);
  while (cVar2 == '\0') {
    if ((int)puVar7[8] < (int)local_res8[0]) {
      puVar5 = *(uint **)(puVar7 + 4);
      puVar7 = puVar8;
    }
    else {
      puVar5 = *(uint **)puVar7;
    }
    puVar8 = puVar7;
    puVar7 = puVar5;
    cVar2 = *(char *)((longlong)puVar5 + 0x19);
  }
  local_res18[0] = puVar3;
  if ((puVar8 == puVar9) || ((int)local_res8[0] < (int)puVar8[8])) {
    local_res10 = local_res8;
    lVar4 = FUN_180481d40(plVar1,local_res8[0],&local_res10);
    FUN_18057dd90(plVar1,&local_res10,puVar8,lVar4 + 0x20,lVar4);
    puVar8 = local_res10;
  }
  ppuVar6 = (uint **)(puVar8 + 10);
  puVar9 = puVar3;
  if (ppuVar6 != local_res18) {
    puVar9 = (uint *)0x0;
    puVar8 = *ppuVar6;
    *ppuVar6 = puVar3;
    if (puVar8 != (uint *)0x0) {
      (*(code *)**(undefined8 **)puVar8)(puVar8,1);
    }
  }
  if (puVar9 != (uint *)0x0) {
    (*(code *)**(undefined8 **)puVar9)(puVar9,1);
  }
  puVar9 = (uint *)*plVar1;
  cVar2 = *(char *)((longlong)*(uint **)(puVar9 + 2) + 0x19);
  puVar8 = puVar9;
  puVar7 = *(uint **)(puVar9 + 2);
  while (cVar2 == '\0') {
    if ((int)puVar7[8] < (int)local_res8[0]) {
      puVar3 = *(uint **)(puVar7 + 4);
      puVar7 = puVar8;
    }
    else {
      puVar3 = *(uint **)puVar7;
    }
    puVar8 = puVar7;
    puVar7 = puVar3;
    cVar2 = *(char *)((longlong)puVar3 + 0x19);
  }
  if ((puVar8 == puVar9) || ((int)local_res8[0] < (int)puVar8[8])) {
    local_res10 = local_res8;
    lVar4 = FUN_180481d40(plVar1,local_res8[0],&local_res10);
    FUN_18057dd90(plVar1,&local_res10,puVar8,lVar4 + 0x20,lVar4);
    puVar8 = local_res10;
  }
  plVar1 = *(longlong **)(puVar8 + 10);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x58))(plVar1,1);
    FUN_181343cc0(param_1 + 0x138,plVar1,0xffffffff);
  }
  return;
}



############ FUN_ 18148bbe0 size=559 ############

undefined8 * FUN_18148bbe0(undefined8 *param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  undefined1 local_res10 [8];
  undefined1 local_res18 [8];
  
  FUN_18056b680();
  FUN_18049c4e0(local_res10,"addKeywordMenuItem");
  FUN_1815fb460(param_1 + 0x19,local_res10);
  puVar5 = param_1 + 0x1d;
  *param_1 = PresetAddKeywordMenuItem::vftable;
  param_1[0x16] = PresetAddKeywordMenuItem::vftable;
  param_1[0x19] = PresetAddKeywordMenuItem::vftable;
  *puVar5 = PresetAddKeywordMenuItem::vftable;
  param_1[0x1e] = PresetAddKeywordMenuItem::vftable;
  param_1[0x1f] = PresetAddKeywordMenuItem::vftable;
  param_1[0x20] =
       std::_Func_impl_no_alloc<<lambda_04bc323a95f0bc74f374e4edc40cdbe4>,void,juce::String>::
       vftable;
  param_1[0x27] = param_1 + 0x20;
  *(undefined4 *)(param_1 + 0x28) = 0;
  plVar1 = param_1 + 0x29;
  FUN_181601800(plVar1,1);
  FUN_18049c4e0(local_res10,&DAT_182203adc);
  FUN_1815ef4d0(param_1 + 0x92,local_res10);
  (**(code **)(*plVar1 + 0x58))(plVar1,1);
  FUN_181343cc0(param_1,plVar1,0xffffffff);
  (**(code **)(param_1[0x92] + 0x58))(param_1 + 0x92,1);
  FUN_181343cc0(param_1,param_1 + 0x92,0xffffffff);
  FUN_18049c4e0(local_res18,"add keyword...");
  FUN_181600150(plVar1,local_res18);
  FUN_1812e14a0(plVar1,param_1 + 0x1f,0);
  if (puVar5 != (undefined8 *)0x0) {
    plVar2 = param_1 + 0xbe;
    plVar7 = (longlong *)*plVar2;
    iVar4 = *(int *)((longlong)param_1 + 0x5fc);
    plVar3 = plVar7 + iVar4;
    for (; plVar7 != plVar3; plVar7 = plVar7 + 1) {
      if (puVar5 == (undefined8 *)*plVar7) goto LAB_18148bda0;
    }
    if (*(int *)(param_1 + 0xbf) < iVar4 + 1) {
      FUN_18047cb30(plVar2,iVar4 + 9 + (iVar4 + 1) / 2 & 0xfffffff8);
    }
    iVar4 = *(int *)((longlong)param_1 + 0x5fc);
    *(int *)((longlong)param_1 + 0x5fc) = iVar4 + 1;
    *(undefined8 **)(*plVar2 + (longlong)iVar4 * 8) = puVar5;
  }
LAB_18148bda0:
  FUN_18133e2b0(plVar1,param_1 + 0x1e);
  if (param_1[0xd] == 0) {
    puVar6 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar6 = juce::StandardCachedComponentImage::vftable;
    puVar6[1] = 0;
    puVar6[2] = 0;
    puVar6[3] = 0;
    puVar6[4] = param_1;
    *(undefined4 *)(puVar6 + 5) = 0x3f800000;
    puVar5 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar6;
    if (puVar5 != (undefined8 *)0x0) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  return param_1;
}



############ FUN_ 1815ef7f0 size=294 ############

undefined8 *
FUN_1815ef7f0(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  uint *_Memory;
  longlong *plVar4;
  longlong local_res18;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = param_1;
  plVar4 = param_2;
  FUN_1813453e0();
  puVar3[0x17] = 0;
  *puVar3 = Styled<juce::Component>::vftable;
  puVar3[0x16] = Styled<juce::Component>::vftable;
  *(undefined1 *)(puVar3 + 0x18) = 0;
  local_res18 = *plVar4;
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1815fb460(param_1 + 0x19,&local_res18,param_3,param_4,uVar5);
  *param_1 = CloudyPopupMenuLabel::vftable;
  param_1[0x16] = CloudyPopupMenuLabel::vftable;
  param_1[0x19] = CloudyPopupMenuLabel::vftable;
  if (param_1[0xd] == 0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar2 = juce::StandardCachedComponentImage::vftable;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = param_1;
    *(undefined4 *)(puVar2 + 5) = 0x3f800000;
    puVar3 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar2;
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1814b3a40 size=1158 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814b3a40(longlong param_1)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  longlong lVar2;
  bool bVar3;
  void *_Memory;
  char cVar4;
  int iVar5;
  uint uVar6;
  void *pvVar7;
  undefined8 *puVar8;
  uint *puVar9;
  undefined1 auStack_128 [32];
  longlong *local_108;
  undefined4 local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong *local_b8;
  undefined8 local_a8;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined8 local_98;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  longlong local_88 [2];
  LPCRITICAL_SECTION local_78;
  undefined *local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  longlong *local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  
  local_88[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_128;
  iVar5 = 0;
  local_f8 = 0;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x18);
  local_78 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  LOCK();
  cVar4 = *(char *)(param_1 + 0xb8);
  *(char *)(param_1 + 0xb8) = '\x01';
  UNLOCK();
  if (cVar4 == '\0') {
    plVar1 = (longlong *)(param_1 + -0xd8);
    if (plVar1 == (longlong *)0x0) {
      local_e0 = 0;
    }
    else {
      local_e0 = param_1 + -0x10;
    }
    local_70 = &DAT_1826737d0;
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_1826737d0);
    pvVar7 = DAT_182673948;
    if (DAT_182673663 == '\0') {
      DAT_182673663 = '\x01';
      FUN_18114e850();
      local_b8 = (longlong *)FUN_1811316e0(0x10);
      local_108 = &local_e0;
      pvVar7 = (void *)FUN_18048d490(local_b8,FUN_18114e8b0,param_1 + 0x48,param_1 + 0x50);
      _Memory = DAT_182673948;
      if (DAT_182673948 != (void *)0x0) {
        if (*(int *)((longlong)DAT_182673948 + 8) == 0) {
          DAT_182673948 = pvVar7;
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        DAT_182673948 = pvVar7;
                    /* WARNING: Subroutine does not return */
        terminate();
      }
    }
    DAT_182673948 = pvVar7;
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_1826737d0);
    *(undefined4 *)(param_1 + 0xe8) = 0;
    FUN_18133e970(*(undefined8 *)(param_1 + 0xd0),0);
    FUN_18049c4e0(&local_d8,"Checking...");
    FUN_181347ea0(*(undefined8 *)(param_1 + 0xd0),&local_d8);
    puVar9 = (uint *)(local_d8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    (**(code **)(*plVar1 + 0x108))(plVar1);
    uStack_9c = *(undefined4 *)(param_1 + -0xac);
    uStack_a0 = *(undefined4 *)(param_1 + -0xb0);
    local_a8 = 0;
    local_68 = 0;
    uStack_64 = 0;
    uStack_60 = uStack_a0;
    uStack_5c = uStack_9c;
    FUN_181342870(plVar1,&local_68,1);
  }
  else {
    LOCK();
    cVar4 = *(char *)(param_1 + 0xb9);
    *(char *)(param_1 + 0xb9) = '\0';
    UNLOCK();
    if (cVar4 == '\0') {
      LOCK();
      cVar4 = *(char *)(param_1 + 0xba);
      *(char *)(param_1 + 0xba) = '\0';
      UNLOCK();
      if (cVar4 == '\0') goto LAB_1814b3eb2;
      FUN_18049c4e0(&local_c0,"Check again");
      FUN_181347ea0(*(undefined8 *)(param_1 + 0xd0),&local_c0);
      puVar9 = (uint *)(local_c0 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar6 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      FUN_18133e970(*(undefined8 *)(param_1 + 0xd0),1);
      (**(code **)(*(longlong *)(param_1 + -0xd8) + 0x108))(param_1 + -0xd8);
      FUN_18134bdf0(param_1 + -0xd8);
    }
    else {
      local_f0 = *(longlong *)(param_1 + 0x68);
      if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_f0 + -0x10) = *(int *)(local_f0 + -0x10) + 1;
        UNLOCK();
      }
      local_b8 = &local_f0;
      lVar2 = *(longlong *)(param_1 + 0xe0);
      if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_f0 + -0x10) = *(int *)(local_f0 + -0x10) + 1;
        UNLOCK();
      }
      local_e8 = local_f0;
      FUN_1815ef610(lVar2 + 0x878,&local_e8);
      puVar9 = (uint *)(local_f0 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar6 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      FUN_18133e970(*(undefined8 *)(param_1 + 0xd0),1);
      if (*(int *)(param_1 + 0xe8) == 2) {
        puVar8 = (undefined8 *)
                 (**(code **)(*(longlong *)(param_1 + 0xf0) + 0x20))
                           ((longlong *)(param_1 + 0xf0),&local_48);
        local_f8 = 1;
        (**(code **)(*(longlong *)*puVar8 + 0x20))((longlong *)*puVar8,local_88,puVar8 + 1);
        local_f8 = 5;
        if (local_88[0] != *(longlong *)(param_1 + 0x60)) {
          iVar5 = FUN_18048cbc0(local_88[0],*(undefined8 *)(param_1 + 0x60));
        }
        puVar9 = (uint *)(local_88[0] + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar6 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        if ((iVar5 == 0) || (cVar4 = FUN_181345240(param_1 + -0xd8), cVar4 != '\0')) {
          bVar3 = false;
        }
        else {
          bVar3 = true;
        }
        (**(code **)(*local_48 + 0xb0))(local_48,local_40);
        if (bVar3) {
          plVar1 = *(longlong **)(param_1 + 0x58);
          *(undefined1 *)(plVar1 + 0x23) = 1;
          *(undefined1 *)(plVar1[0x22] + 0x10) = 1;
          (**(code **)(*plVar1 + 0x108))();
        }
        FUN_18049c4e0(&local_d0,"Download");
        FUN_181347ea0(*(undefined8 *)(param_1 + 0xd0),&local_d0);
        puVar9 = (uint *)(local_d0 + -0x10);
        uVar6 = *puVar9;
LAB_1814b3dc4:
        if ((uVar6 & 0x30000000) == 0) {
          LOCK();
          uVar6 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
      }
      else if (*(int *)(param_1 + 0xe8) == 1) {
        FUN_18049c4e0(&local_c8,"Check again");
        FUN_181347ea0(*(undefined8 *)(param_1 + 0xd0),&local_c8);
        puVar9 = (uint *)(local_c8 + -0x10);
        uVar6 = *puVar9;
        goto LAB_1814b3dc4;
      }
      (**(code **)(*(longlong *)(param_1 + -0xd8) + 0x108))(param_1 + -0xd8);
      uStack_8c = *(undefined4 *)(param_1 + -0xac);
      uStack_90 = *(undefined4 *)(param_1 + -0xb0);
      local_98 = 0;
      local_58 = 0;
      uStack_54 = 0;
      uStack_50 = uStack_90;
      uStack_4c = uStack_8c;
      FUN_181342870(param_1 + -0xd8,&local_58,1);
    }
  }
  FUN_1812a7720(param_1);
LAB_1814b3eb2:
  LeaveCriticalSection(lpCriticalSection);
}



############ FUN_ 1814c78b0 size=494 ############

void FUN_1814c78b0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  longlong *_Memory;
  uint uVar4;
  uint uVar5;
  int iVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  longlong lVar9;
  void *pvVar10;
  int iVar11;
  uint uVar12;
  longlong *plVar14;
  ulonglong uVar15;
  ulonglong uVar16;
  undefined8 uVar17;
  ulonglong uVar13;
  
  uVar17 = 0xfffffffffffffffe;
  uVar15 = 0;
  uVar16 = uVar15;
  uVar4 = 0xffffffff;
  do {
    uVar12 = 0;
    uVar13 = uVar15;
    for (puVar2 = *(undefined8 **)(param_2 + 8); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      uVar12 = (int)uVar13 + 1;
      uVar13 = (ulonglong)uVar12;
    }
    puVar2 = (undefined8 *)(param_2 + 8);
    uVar5 = uVar4;
    if ((int)uVar12 <= (int)(uVar4 + 1)) {
      return;
    }
    while ((-1 < (int)uVar5 && ((undefined8 *)*puVar2 != (undefined8 *)0x0))) {
      puVar2 = (undefined8 *)*puVar2;
      uVar5 = uVar5 - 1;
    }
    uVar3 = *puVar2;
    uVar13 = uVar15;
    if ((uVar16 != 0) && (uVar4 < *(uint *)(param_1 + 0xf4))) {
      uVar13 = *(ulonglong *)(*(longlong *)(param_1 + 0xe8) + -8 + uVar16 * 8);
    }
    uVar7 = FUN_1811316e0(0xd0);
    uVar8 = FUN_1811f0330(*(undefined8 *)(param_1 + 0x138));
    lVar9 = FUN_1814ccd30(uVar7,uVar3,uVar8,uVar13,uVar17);
    lVar1 = param_1 + 200;
    if (lVar1 != 0) {
      _Memory = *(longlong **)(lVar9 + 8);
      iVar6 = *(int *)(lVar9 + 0x14);
      for (plVar14 = _Memory; plVar14 != _Memory + iVar6; plVar14 = plVar14 + 1) {
        if (lVar1 == *plVar14) goto LAB_1814c7a3d;
      }
      iVar11 = iVar6 + 1;
      if ((int)*(uint *)(lVar9 + 0x10) < iVar11) {
        if (iVar11 < 0) {
          iVar11 = iVar6 + 2;
        }
        uVar12 = iVar6 + 9 + (iVar11 >> 1) & 0xfffffff8;
        if (*(uint *)(lVar9 + 0x10) != uVar12) {
          if ((int)uVar12 < 1) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
          if (_Memory == (longlong *)0x0) {
            pvVar10 = malloc((longlong)(int)uVar12 * 8);
            *(void **)(lVar9 + 8) = pvVar10;
          }
          else {
            pvVar10 = realloc(_Memory,(longlong)(int)uVar12 * 8);
            *(void **)(lVar9 + 8) = pvVar10;
          }
        }
        *(uint *)(lVar9 + 0x10) = uVar12;
      }
      iVar6 = *(int *)(lVar9 + 0x14);
      *(int *)(lVar9 + 0x14) = iVar6 + 1;
      *(longlong *)(*(longlong *)(lVar9 + 8) + (longlong)iVar6 * 8) = lVar1;
    }
LAB_1814c7a3d:
    iVar11 = *(int *)(param_1 + 0xf4);
    iVar6 = iVar11 + 1;
    if (*(int *)(param_1 + 0xf0) < iVar6) {
      if (iVar6 < 0) {
        iVar6 = iVar11 + 2;
      }
      FUN_18047cb30((longlong *)(param_1 + 0xe8),iVar11 + 9 + (iVar6 >> 1) & 0xfffffff8);
    }
    iVar6 = *(int *)(param_1 + 0xf4);
    *(int *)(param_1 + 0xf4) = iVar6 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0xe8) + (longlong)iVar6 * 8) = lVar9;
    uVar16 = uVar16 + 1;
    uVar4 = uVar4 + 1;
  } while( true );
}



############ FUN_ 1814cbc00 size=2392 ############

void FUN_1814cbc00(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  longlong lVar2;
  longlong *plVar3;
  double dVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  int iVar12;
  uint *puVar13;
  uint *_Memory;
  void *pvVar14;
  int iVar15;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  undefined4 uVar16;
  double dVar17;
  float fVar18;
  float fVar19;
  float fVar21;
  float fVar22;
  float fVar23;
  int local_res20;
  undefined4 *puVar24;
  undefined8 local_270;
  void *pvStack_268;
  undefined8 local_260;
  longlong local_258;
  undefined8 local_250;
  void *pvStack_248;
  undefined8 local_240;
  longlong local_238;
  undefined8 local_230;
  undefined4 *puStack_228;
  undefined4 *local_220;
  longlong local_218;
  longlong local_210;
  undefined8 local_208;
  float fStack_200;
  float fStack_1fc;
  undefined1 local_1f8;
  undefined1 uStack_1f7;
  undefined6 uStack_1f6;
  float local_1f0;
  float fStack_1ec;
  float fStack_1e8;
  float fStack_1e4;
  ulonglong local_1e0;
  undefined *local_1d8;
  undefined8 local_1d0;
  undefined8 local_1c8;
  undefined8 local_1c0;
  undefined8 local_1b8;
  undefined8 local_1b0;
  longlong local_1a8;
  longlong local_1a0;
  longlong *local_198;
  undefined8 local_190;
  undefined8 uStack_188;
  ulonglong local_180;
  undefined1 local_178 [8];
  void *local_170;
  undefined8 local_168;
  longlong local_160;
  undefined1 local_158 [24];
  undefined8 local_140;
  undefined8 uStack_138;
  undefined8 local_130;
  longlong local_128;
  undefined4 local_120;
  undefined4 uStack_11c;
  undefined4 uStack_118;
  undefined4 uStack_114;
  ulonglong local_110;
  undefined4 *local_108;
  undefined1 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  LPCRITICAL_SECTION local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  longlong local_98;
  undefined8 local_90;
  ulonglong uVar20;
  
  local_a8 = 0xfffffffffffffffe;
  iVar15 = 0;
  puVar8 = *(undefined8 **)(param_2 + 8);
  while( true ) {
    if (puVar8 == (undefined8 *)0x0) {
      return;
    }
    iVar5 = FUN_18049bb30(puVar8[3],"REQUIREMENTS");
    dVar4 = DAT_1824c3fd8;
    if (iVar5 == 0) break;
    puVar8 = (undefined8 *)*puVar8;
  }
  local_198 = puVar8 + 1;
  for (puVar8 = (undefined8 *)*local_198; puVar8 != (undefined8 *)0x0;
      puVar8 = (undefined8 *)*puVar8) {
    iVar15 = iVar15 + 1;
  }
  local_res20 = 0;
  if (0 < iVar15) {
    local_1d8 = &DAT_1822945e4;
    plVar1 = local_198;
    iVar5 = local_res20;
joined_r0x0001814cbcf8:
    do {
      plVar3 = plVar1;
      iVar5 = iVar5 + -1;
      if (-1 < iVar5) {
        plVar1 = (longlong *)*plVar3;
        if (plVar1 != (longlong *)0x0) goto joined_r0x0001814cbcf8;
      }
      lVar2 = *plVar3;
      local_230 = 0;
      puStack_228 = (undefined4 *)0x0;
      local_220 = (undefined4 *)0x0;
      local_250 = 0;
      pvStack_248 = (void *)0x0;
      local_240 = 0;
      lVar7 = FUN_18122bf10();
      lpCriticalSection = (LPCRITICAL_SECTION)(lVar7 + 0x10);
      local_b0 = lpCriticalSection;
      EnterCriticalSection(lpCriticalSection);
      FUN_18122c130(lVar7);
      FUN_181211b90(&local_238,lVar7,&local_1d8);
      LeaveCriticalSection(lpCriticalSection);
      local_190 = 0;
      uStack_188 = 0;
      iVar5 = 0;
      puVar24 = (undefined4 *)0x0;
      while( true ) {
        iVar12 = 0;
        for (puVar8 = *(undefined8 **)(lVar2 + 8); puVar8 != (undefined8 *)0x0;
            puVar8 = (undefined8 *)*puVar8) {
          iVar12 = iVar12 + 1;
        }
        if (iVar12 <= iVar5) break;
        plVar1 = (longlong *)(lVar2 + 8);
        iVar12 = iVar5;
        do {
          plVar3 = plVar1;
          iVar12 = iVar12 + -1;
          if (iVar12 < 0) break;
          plVar1 = (longlong *)*plVar3;
        } while (plVar1 != (longlong *)0x0);
        lVar7 = *plVar3;
        iVar12 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x18),"PARAMETER");
        if (iVar12 == 0) {
          for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
              puVar8 = (undefined8 *)*puVar8) {
            local_b8 = puVar8[1];
            iVar12 = FUN_18048cbc0(local_b8,&DAT_1821e8bc4);
            if (iVar12 == 0) {
              puVar8 = puVar8 + 2;
              goto LAB_1814cbe20;
            }
          }
          puVar8 = (undefined8 *)FUN_181220d40();
LAB_1814cbe20:
          local_c0 = *puVar8;
          uVar9 = FUN_18119aa60(param_3);
          for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
              puVar8 = (undefined8 *)*puVar8) {
            local_c8 = puVar8[1];
            iVar12 = FUN_18048cbc0(local_c8,"value");
            if (iVar12 == 0) {
              local_1d0 = puVar8[2];
              dVar17 = (double)FUN_18049bd80(&local_1d0);
              goto LAB_1814cbe6c;
            }
          }
          dVar17 = 0.0;
LAB_1814cbe6c:
          fVar21 = (float)dVar17;
          for (puVar8 = *(undefined8 **)(lVar7 + 0x10); dVar17 = dVar4, puVar8 != (undefined8 *)0x0;
              puVar8 = (undefined8 *)*puVar8) {
            local_90 = puVar8[1];
            iVar12 = FUN_18048cbc0(local_90,"errorMargin");
            if (iVar12 == 0) {
              local_1c8 = puVar8[2];
              dVar17 = (double)FUN_18049bd80(&local_1c8);
              break;
            }
          }
          fVar18 = (float)dVar17;
          uVar20 = (ulonglong)(uint)fVar18;
          for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
              puVar8 = (undefined8 *)*puVar8) {
            local_a0 = puVar8[1];
            iVar12 = FUN_18048cbc0(local_a0,"passBy");
            fVar18 = (float)uVar20;
            if (iVar12 == 0) goto LAB_1814cbee5;
          }
          puVar8 = (undefined8 *)0x0;
LAB_1814cbee5:
          fStack_1fc = fVar18;
          local_1f8 = puVar8 != (undefined8 *)0x0;
          uStack_1f7 = 0;
          local_208 = uVar9;
          fStack_200 = fVar21;
          if (local_220 == puStack_228) {
            FUN_18057b580(&local_230,puStack_228,&local_208);
            FUN_1811be290(uVar9,param_1);
            iVar5 = iVar5 + 1;
          }
          else {
            local_208._0_4_ = (undefined4)uVar9;
            local_208._4_4_ = (undefined4)((ulonglong)uVar9 >> 0x20);
            *puStack_228 = (undefined4)local_208;
            puStack_228[1] = local_208._4_4_;
            puStack_228[2] = fVar21;
            puStack_228[3] = fStack_1fc;
            *(ulonglong *)(puStack_228 + 4) = CONCAT62(uStack_1f6,(ushort)(byte)local_1f8);
            puStack_228 = puStack_228 + 6;
            FUN_1811be290(uVar9,param_1);
            iVar5 = iVar5 + 1;
          }
        }
        else {
          iVar12 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x18),&DAT_182298034);
          if (iVar12 == 0) {
            local_270 = 0;
            pvStack_268 = (void *)0x0;
            local_260 = 0;
            local_258 = *(longlong *)(lVar7 + 0x18);
            if ((*(uint *)(local_258 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_258 + -0x10) = *(int *)(local_258 + -0x10) + 1;
              UNLOCK();
            }
            FUN_1812217a0(&local_270,lVar7);
            FUN_18049aca0(&local_240);
            lVar7 = local_238;
            pvVar14 = pvStack_248;
            if (pvStack_248 != (void *)0x0) {
              FUN_1812472e0(pvStack_248);
                    /* WARNING: Subroutine does not return */
              free(pvVar14);
            }
            local_250 = local_270;
            local_270 = 0;
            pvStack_248 = pvStack_268;
            pvStack_268 = (void *)0x0;
            local_240 = local_260;
            local_260 = 0;
            local_98 = local_238;
            local_238 = local_258;
            local_258 = lVar7;
            FUN_18049aca0(&local_260);
            puVar13 = (uint *)(local_258 + -0x10);
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar6 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
LAB_1814cc456:
            iVar5 = iVar5 + 1;
          }
          else {
            iVar12 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x18),"BEACON");
            if (iVar12 != 0) {
              iVar12 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x18),"OVERLAY");
              if (iVar12 == 0) {
                puVar10 = (undefined4 *)FUN_1814cb5f0(extraout_XMM0_Da,local_178,lVar7);
                puVar11 = (undefined4 *)FUN_1811316e0(0x20);
                *puVar11 = *puVar10;
                *(undefined8 *)(puVar11 + 2) = 0;
                *(undefined8 *)(puVar11 + 4) = 0;
                *(undefined8 *)(puVar11 + 6) = 0;
                *(undefined8 *)(puVar11 + 2) = *(undefined8 *)(puVar10 + 2);
                *(undefined8 *)(puVar11 + 4) = *(undefined8 *)(puVar10 + 4);
                *(undefined8 *)(puVar11 + 6) = *(undefined8 *)(puVar10 + 6);
                *(undefined8 *)(puVar10 + 2) = 0;
                *(undefined8 *)(puVar10 + 4) = 0;
                *(undefined8 *)(puVar10 + 6) = 0;
                uVar16 = extraout_XMM0_Da_00;
                if (puVar24 != (undefined4 *)0x0) {
                  uVar16 = FUN_1805798f0();
                }
                puVar24 = puVar11;
                if (local_170 != (void *)0x0) {
                  FUN_180579ac0(uVar16,local_170,local_168);
                  pvVar14 = local_170;
                  if ((0xfff < (local_160 - (longlong)local_170 & 0xffffffffffffffe0U)) &&
                     (pvVar14 = *(void **)((longlong)local_170 + -8),
                     0x1f < (ulonglong)((longlong)local_170 + (-8 - (longlong)pvVar14)))) {
                    /* WARNING: Subroutine does not return */
                    _invalid_parameter_noinfo_noreturn();
                  }
                    /* WARNING: Subroutine does not return */
                  free(pvVar14);
                }
              }
              goto LAB_1814cc456;
            }
            FUN_18049c4e0(&local_218,"rectangle");
            for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
                puVar8 = (undefined8 *)*puVar8) {
              local_f8 = puVar8[1];
              iVar12 = FUN_18048cbc0(local_f8,&DAT_182294d84);
              if (iVar12 == 0) {
                local_210 = puVar8[2];
                puVar13 = (uint *)(local_210 + -0x10);
                uVar6 = *puVar13;
                goto LAB_1814cc115;
              }
            }
            puVar13 = (uint *)(local_218 + -0x10);
            uVar6 = *puVar13;
            local_210 = local_218;
LAB_1814cc115:
            if ((uVar6 & 0x30000000) == 0) {
              LOCK();
              *puVar13 = *puVar13 + 1;
              UNLOCK();
            }
            _Memory = (uint *)(local_218 + -0x10);
            if ((*_Memory & 0x30000000) == 0) {
              LOCK();
              uVar6 = *_Memory;
              *_Memory = *_Memory - 1;
              UNLOCK();
              if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                free(_Memory);
              }
            }
            for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
                puVar8 = (undefined8 *)*puVar8) {
              local_f0 = puVar8[1];
              iVar12 = FUN_18048cbc0(local_f0,&DAT_1821e8ba4);
              if (iVar12 == 0) {
                local_1c0 = puVar8[2];
                dVar17 = (double)FUN_18049bd80(&local_1c0);
                goto LAB_1814cc17e;
              }
            }
            dVar17 = 0.0;
LAB_1814cc17e:
            fVar21 = (float)dVar17;
            for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
                puVar8 = (undefined8 *)*puVar8) {
              local_e8 = puVar8[1];
              iVar12 = FUN_18048cbc0(local_e8,&DAT_1821e8bb4);
              if (iVar12 == 0) {
                local_1b8 = puVar8[2];
                dVar17 = (double)FUN_18049bd80(&local_1b8);
                goto LAB_1814cc1ba;
              }
            }
            dVar17 = 0.0;
LAB_1814cc1ba:
            fVar18 = (float)dVar17;
            for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
                puVar8 = (undefined8 *)*puVar8) {
              local_e0 = puVar8[1];
              iVar12 = FUN_18048cbc0(local_e0,"width");
              if (iVar12 == 0) {
                local_1b0 = puVar8[2];
                dVar17 = (double)FUN_18049bd80(&local_1b0);
                goto LAB_1814cc1fa;
              }
            }
            dVar17 = 0.0;
LAB_1814cc1fa:
            fVar23 = (float)dVar17;
            for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
                puVar8 = (undefined8 *)*puVar8) {
              local_d8 = puVar8[1];
              iVar12 = FUN_18048cbc0(local_d8,"height");
              if (iVar12 == 0) {
                local_1a8 = puVar8[2];
                dVar17 = (double)FUN_18049bd80(&local_1a8);
                goto LAB_1814cc23a;
              }
            }
            dVar17 = 0.0;
LAB_1814cc23a:
            fVar22 = (float)dVar17;
            for (puVar8 = *(undefined8 **)(lVar7 + 0x10); puVar8 != (undefined8 *)0x0;
                puVar8 = (undefined8 *)*puVar8) {
              local_d0 = puVar8[1];
              iVar12 = FUN_18048cbc0(local_d0,"angle");
              if (iVar12 == 0) {
                local_1a0 = puVar8[2];
                dVar17 = (double)FUN_18049bd80(&local_1a0);
                goto LAB_1814cc27a;
              }
            }
            dVar17 = 0.0;
LAB_1814cc27a:
            fVar19 = (float)dVar17;
            iVar12 = FUN_18048cbc0(local_210,"ellipse");
            local_190 = CONCAT44(fVar18,fVar21);
            uStack_188 = CONCAT44(fVar22,fVar23);
            local_1e0 = (ulonglong)CONCAT14(iVar12 != 0,fVar19);
            local_180 = (ulonglong)CONCAT14(iVar12 != 0,fVar19);
            local_1f0 = fVar21;
            fStack_1ec = fVar18;
            fStack_1e8 = fVar23;
            fStack_1e4 = fVar22;
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar6 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
            iVar5 = iVar5 + 1;
          }
        }
      }
      FUN_1805791c0(local_158,&local_230);
      local_140 = 0;
      uStack_138 = 0;
      local_130 = 0;
      local_128 = local_238;
      if ((*(uint *)(local_238 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_238 + -0x10) = *(int *)(local_238 + -0x10) + 1;
        UNLOCK();
      }
      FUN_1812217a0(&local_140,&local_250);
      local_120 = (undefined4)local_190;
      uStack_11c = local_190._4_4_;
      uStack_118 = (undefined4)uStack_188;
      uStack_114 = uStack_188._4_4_;
      local_110 = local_180;
      local_100 = 0;
      local_108 = puVar24;
      if (*(longlong *)(param_1 + 0x80) == *(longlong *)(param_1 + 0x78)) {
        FUN_18057b0a0(param_1 + 0x70,*(longlong *)(param_1 + 0x78),local_158,param_4,0);
      }
      else {
        FUN_18057b010();
        *(longlong *)(param_1 + 0x78) = *(longlong *)(param_1 + 0x78) + 0x60;
      }
      if (local_108 != (undefined4 *)0x0) {
        FUN_1805798f0();
      }
      FUN_1812472e0(&local_140);
      FUN_180569d10(local_158);
      FUN_1812472e0(&local_250);
      FUN_180569d10(&local_230);
      iVar5 = local_res20 + 1;
      plVar1 = local_198;
      local_res20 = iVar5;
    } while (iVar5 < iVar15);
  }
  return;
}



############ FUN_ 1814cc570 size=527 ############

undefined8 * FUN_1814cc570(undefined8 param_1,longlong param_2,longlong param_3)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  
  puVar3 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar3 = 0;
  puVar3[1] = 0;
  puVar3[2] = 0;
  lVar2 = *(longlong *)(param_3 + 0x18);
  puVar3[3] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1812217a0(puVar3,param_3);
  if (param_2 == 0) {
    return puVar3;
  }
  iVar8 = -1;
  do {
    iVar7 = 0;
    for (puVar4 = *(undefined8 **)(param_2 + 8); puVar4 != (undefined8 *)0x0;
        puVar4 = (undefined8 *)*puVar4) {
      iVar7 = iVar7 + 1;
    }
    iVar9 = iVar8 + 1;
    if (iVar7 <= iVar9) {
      return puVar3;
    }
    puVar4 = (undefined8 *)FUN_1811316e0(0x20);
    plVar5 = (longlong *)(param_2 + 8);
    while ((-1 < iVar8 && ((longlong *)*plVar5 != (longlong *)0x0))) {
      iVar8 = iVar8 + -1;
      plVar5 = (longlong *)*plVar5;
    }
    lVar2 = *plVar5;
    *puVar4 = 0;
    puVar4[1] = 0;
    puVar4[2] = 0;
    lVar2 = *(longlong *)(lVar2 + 0x18);
    puVar4[3] = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    FUN_1812217a0(puVar4);
    for (puVar6 = (undefined8 *)puVar4[2]; puVar6 != (undefined8 *)0x0;
        puVar6 = (undefined8 *)*puVar6) {
      iVar8 = FUN_18048cbc0(puVar6[1],&DAT_1821e8b6c);
      if (iVar8 == 0) {
        plVar5 = puVar6 + 2;
        goto LAB_1814cc6a6;
      }
    }
    plVar5 = (longlong *)FUN_181220d40();
LAB_1814cc6a6:
    _Memory = (uint *)(*plVar5 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar6 = (undefined8 *)FUN_181220a00(puVar3,&DAT_1821e8b7c);
    if (puVar6 != (undefined8 *)0x0) {
      puVar4 = puVar3 + 1;
      puVar3 = (undefined8 *)puVar3[1];
      break;
    }
    plVar5 = puVar3 + 1;
    lVar2 = puVar3[1];
    while (lVar2 != 0) {
      plVar5 = (longlong *)*plVar5;
      lVar2 = *plVar5;
    }
    *plVar5 = (longlong)puVar4;
    iVar8 = iVar9;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  } while( true );
joined_r0x0001814cc6e1:
  if (puVar3 == (undefined8 *)0x0) {
LAB_1814cc70c:
    FUN_1812472e0(puVar6);
                    /* WARNING: Subroutine does not return */
    free(puVar6);
  }
  if (puVar3 == puVar6) {
    puVar3 = (undefined8 *)*puVar4;
    if (puVar3 != (undefined8 *)0x0) {
      *puVar4 = *puVar3;
      *puVar3 = 0;
    }
    goto LAB_1814cc70c;
  }
  puVar4 = puVar3;
  puVar3 = (undefined8 *)*puVar3;
  goto joined_r0x0001814cc6e1;
}



############ FUN_ 1814cc790 size=646 ############

void FUN_1814cc790(longlong param_1,longlong param_2,longlong param_3,float param_4)

{
  uint *_Memory;
  LPCRITICAL_SECTION p_Var1;
  longlong *plVar2;
  uint uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  uint *puVar7;
  longlong local_res8;
  longlong local_res18 [2];
  undefined8 *local_88;
  longlong local_80;
  char *local_78;
  char *local_70;
  longlong local_68 [2];
  LPCRITICAL_SECTION local_58;
  LPCRITICAL_SECTION local_50;
  LPCRITICAL_SECTION local_48;
  
  local_68[1] = 0xfffffffffffffffe;
  local_80 = *(longlong *)(param_3 + 0x68);
  _Memory = (uint *)(local_80 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_res8 = param_1;
  lVar4 = FUN_181220a00(param_2,&DAT_1821e8b44,local_80);
  if (lVar4 != 0) {
    FUN_181220970(param_2,lVar4);
  }
  puVar5 = (undefined8 *)FUN_1811316e0(0x20);
  *puVar5 = 0;
  puVar5[1] = 0;
  puVar5[2] = 0;
  local_88 = puVar5;
  local_78 = (char *)(puVar5 + 3);
  lVar4 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar4 + 0x10);
  local_58 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar4);
  local_78 = "PARAM";
  FUN_181211b90(puVar5 + 3,lVar4,&local_78);
  LeaveCriticalSection(p_Var1);
  lVar4 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar4 + 0x10);
  local_50 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar4);
  local_88 = (undefined8 *)&DAT_1821e8b5c;
  FUN_181211b90(&local_res8,lVar4,&local_88);
  LeaveCriticalSection(p_Var1);
  FUN_181246b70(puVar5,&local_res8,&local_80);
  puVar7 = (uint *)(local_res8 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  lVar4 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar4 + 0x10);
  local_48 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar4);
  local_70 = "value";
  FUN_181211b90(local_res18,lVar4,&local_70);
  LeaveCriticalSection(p_Var1);
  uVar6 = FUN_18122eaa0(local_68,(double)param_4);
  FUN_181246b70(puVar5,local_res18,uVar6);
  puVar7 = (uint *)(local_68[0] + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(local_res18[0] + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  plVar2 = (longlong *)(param_2 + 8);
  lVar4 = *plVar2;
  while (lVar4 != 0) {
    plVar2 = (longlong *)*plVar2;
    lVar4 = *plVar2;
  }
  *plVar2 = (longlong)puVar5;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1814c8e80 size=2243 ############

void FUN_1814c8e80(longlong param_1)

{
  undefined4 uVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  float *pfVar5;
  char *pcVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  bool bVar9;
  float fVar10;
  double dVar11;
  DWORD DVar12;
  int iVar13;
  undefined8 *puVar14;
  longlong lVar15;
  longlong lVar16;
  float *pfVar17;
  longlong lVar18;
  undefined8 *puVar19;
  longlong *plVar20;
  uint uVar21;
  ulonglong uVar22;
  float *pfVar23;
  ulonglong uVar24;
  ulonglong uVar25;
  float *pfVar26;
  longlong *plVar27;
  double dVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  float local_1c8;
  float fStack_1c4;
  float fStack_1c0;
  float fStack_1bc;
  int local_1a8;
  int local_1a4;
  int local_1a0;
  int local_19c;
  undefined8 local_198;
  undefined4 uStack_190;
  undefined4 uStack_18c;
  double local_188;
  double local_180;
  double local_178;
  double local_170;
  double local_168;
  double local_160;
  undefined8 local_158;
  undefined4 local_150;
  float local_14c;
  float local_148;
  float local_144;
  float local_140;
  float local_13c;
  float fStack_138;
  float fStack_134;
  float fStack_130;
  float local_12c;
  float local_128;
  float fStack_124;
  float fStack_120;
  float fStack_11c;
  float local_118;
  longlong local_110;
  longlong local_108 [2];
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  longlong lStack_e0;
  uint local_d0;
  
  dVar11 = DAT_1824c4520;
  fVar10 = DAT_1824c41e0;
  uVar25 = 0;
  lVar15 = *(longlong *)(param_1 + 0xd8);
  bVar9 = true;
  if ((ulonglong)(longlong)*(int *)(lVar15 + 0x88) <
      (ulonglong)((*(longlong *)(lVar15 + 0x78) - *(longlong *)(lVar15 + 0x70)) / 0x60)) {
    lVar15 = (longlong)*(int *)(lVar15 + 0x88) * 0x60 + *(longlong *)(lVar15 + 0x70);
    if (*(int *)(lVar15 + 0x4c) == 0) {
      lVar18 = *(longlong *)(param_1 + 0x128);
      uVar7 = *(undefined8 *)(lVar15 + 0x38);
      uVar8 = *(undefined8 *)(lVar15 + 0x40);
      pvVar4 = *(void **)(lVar18 + 0x298);
      *(undefined8 *)(lVar18 + 0x298) = 0;
      if (pvVar4 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(pvVar4);
      }
      puVar14 = (undefined8 *)FUN_1811316e0(0x10);
      plVar27 = (longlong *)(lVar18 + 0x290);
      *puVar14 = uVar7;
      puVar14[1] = uVar8;
      puVar19 = puVar14;
      if (plVar27 == &local_110) {
LAB_1814c8fe7:
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
      puVar19 = (undefined8 *)*plVar27;
      *plVar27 = (longlong)puVar14;
      if (puVar19 != (undefined8 *)0x0) goto LAB_1814c8fe7;
      lVar16 = (**(code **)(*(longlong *)(lVar18 + 0xb0) + 8))();
      local_140 = *(float *)(lVar16 + 0x88);
      local_1c8 = (float)uVar7;
      local_14c = local_140 * local_1c8;
      fStack_1c4 = (float)((ulonglong)uVar7 >> 0x20);
      local_148 = local_140 * fStack_1c4;
      fStack_1c0 = (float)uVar8;
      local_144 = local_140 * fStack_1c0;
      fStack_1bc = (float)((ulonglong)uVar8 >> 0x20);
      local_140 = local_140 * fStack_1bc;
      dVar28 = (double)local_14c + dVar11;
      local_188 = (double)local_144 + dVar11;
      local_180 = (double)local_140 + dVar11;
      uVar22 = (longlong)((double)local_148 + dVar11) << 0x20;
      uVar24 = (ulonglong)local_188 & 0xffffffff;
      iVar13 = local_180._0_4_;
    }
    else {
      lVar18 = *(longlong *)(param_1 + 0x128);
      fVar29 = *(float *)(lVar15 + 0x38);
      fVar31 = *(float *)(lVar15 + 0x3c);
      uVar1 = *(undefined4 *)(lVar15 + 0x48);
      pvVar4 = *(void **)(lVar18 + 0x290);
      *(undefined8 *)(lVar18 + 0x290) = 0;
      if (pvVar4 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(pvVar4);
      }
      plVar27 = (longlong *)(lVar18 + 0xb0);
      lVar16 = (**(code **)(*plVar27 + 8))(plVar27);
      fVar2 = *(float *)(lVar16 + 0x88);
      local_150 = uVar1;
      puVar14 = (undefined8 *)FUN_1811316e0(0xc);
      plVar20 = (longlong *)(lVar18 + 0x298);
      local_158 = CONCAT44(fVar2 * fVar31,fVar2 * fVar29);
      *puVar14 = local_158;
      *(undefined4 *)(puVar14 + 1) = local_150;
      puVar19 = puVar14;
      if (plVar20 == local_108) {
LAB_1814c9159:
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
      puVar19 = (undefined8 *)*plVar20;
      *plVar20 = (longlong)puVar14;
      if (puVar19 != (undefined8 *)0x0) goto LAB_1814c9159;
      fVar29 = *(float *)*plVar20;
      fVar31 = ((float *)*plVar20)[1];
      lVar16 = (**(code **)(*plVar27 + 8))(plVar27);
      fVar2 = *(float *)(lVar16 + 0x88);
      lVar16 = (**(code **)(*plVar27 + 8))(plVar27);
      iVar13 = (int)(fVar2 * DAT_1824c44a8);
      local_d0 = (uint)(*(float *)(lVar16 + 0x88) * DAT_1824c44a8);
      uVar24 = (ulonglong)local_d0;
      uVar21 = (int)fVar29 - (int)local_d0 / 2;
      dVar28 = (double)(ulonglong)uVar21;
      uVar22 = CONCAT44((int)fVar31 - iVar13 / 2,uVar21);
    }
    FUN_18134bfe0(lVar18,dVar28,uVar22 >> 0x20,uVar24,iVar13);
    plVar27 = *(longlong **)(param_1 + 0x128);
    lVar15 = *(longlong *)(lVar15 + 0x50);
    bVar9 = false;
    FUN_1812a77d0(plVar27 + 0x19,0x10);
    DVar12 = timeGetTime();
    if (DVar12 < DAT_1826737fc) {
      if (DVar12 < DAT_1826737fc - 1000) {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DVar12;
      }
    }
    else {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar12;
    }
    *(DWORD *)(plVar27 + 0x54) = DVar12;
    (**(code **)(*plVar27 + 0x58))(plVar27,CONCAT71((uint7)(uint3)(DVar12 >> 8),1));
    if (plVar27[0x52] != 0) {
      FUN_181411d60(plVar27 + 0x1c,&DAT_182280e54);
    }
    if (*(char *)(*(longlong *)(param_1 + 0xd8) + 0x18) != '\0') {
      FUN_1813bab70(*(longlong *)(param_1 + 0x148) + 0x70);
    }
    if (lVar15 == 0) goto LAB_1814c92a3;
  }
  else {
    plVar27 = *(longlong **)(param_1 + 0x128);
    FUN_1812a7720(plVar27 + 0x19);
    (**(code **)(*plVar27 + 0x58))(plVar27,0);
    FUN_181411b10(plVar27 + 0x1c,&DAT_182282b74);
LAB_1814c92a3:
    lVar15 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 0xc0);
    if (lVar15 == 0) {
      (**(code **)(**(longlong **)(param_1 + 0x120) + 0x58))(*(longlong **)(param_1 + 0x120),0);
      goto LAB_1814c9571;
    }
  }
  *(undefined8 *)(*(longlong *)(param_1 + 0x120) + 0xd0) =
       *(undefined8 *)(*(longlong *)(param_1 + 0x120) + 200);
  pfVar5 = *(float **)(lVar15 + 0x10);
  for (pfVar26 = *(float **)(lVar15 + 8); pfVar26 != pfVar5; pfVar26 = pfVar26 + 8) {
    fVar29 = pfVar26[1];
    pcVar6 = *(char **)(pfVar26 + 2);
    if (*pcVar6 == '\0') {
      lVar15 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
      lVar18 = *(longlong *)(param_1 + 0x120);
      fStack_130 = *(float *)(lVar15 + 0x88);
      local_12c = (float)(uint)(fVar29 != 0.0);
      local_13c = fStack_130 * pfVar26[4];
      fStack_138 = fStack_130 * pfVar26[5];
      pfVar17 = *(float **)(lVar18 + 0xd0);
      fStack_134 = fStack_130 * pfVar26[6];
      fStack_130 = fStack_130 * pfVar26[7];
      if (*(float **)(lVar18 + 0xd8) == pfVar17) {
        pfVar23 = &local_13c;
LAB_1814c9502:
        FUN_18057adf0(lVar18 + 200,pfVar17,pfVar23);
      }
      else {
        *pfVar17 = local_13c;
        pfVar17[1] = fStack_138;
        pfVar17[2] = fStack_134;
        pfVar17[3] = fStack_130;
        pfVar17[4] = local_12c;
        *(longlong *)(lVar18 + 0xd0) = *(longlong *)(lVar18 + 0xd0) + 0x14;
      }
    }
    else {
      plVar20 = *(longlong **)(*(longlong *)(param_1 + 0x130) + 0x40);
      plVar27 = plVar20 + *(int *)(*(longlong *)(param_1 + 0x130) + 0x4c);
      for (; plVar20 != plVar27; plVar20 = plVar20 + 1) {
        lVar15 = *plVar20;
        iVar13 = FUN_18048cbc0(*(undefined8 *)(lVar15 + 0x10),pcVar6);
        if ((iVar13 == 0) || (lVar15 = FUN_1813438f0(lVar15,pcVar6,1), lVar15 != 0)) {
          if (lVar15 != 0) {
            fVar31 = *pfVar26;
            lVar16 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
            lVar18 = *(longlong *)(param_1 + 0x120);
            fVar31 = fVar31 * *(float *)(lVar16 + 0x88);
            uStack_f0 = *(undefined8 *)(lVar15 + 0x28);
            local_f8 = 0;
            FUN_18051df30(&local_1a8,*(undefined8 *)(lVar18 + 0x18),lVar15,&local_f8);
            pfVar17 = *(float **)(lVar18 + 0xd0);
            local_118 = (float)(uint)(fVar29 != 0.0);
            local_128 = (float)local_1a8 - fVar31;
            fStack_124 = (float)local_1a4 - fVar31;
            fVar31 = fVar31 * fVar10;
            fStack_120 = fVar31 + (float)local_1a0;
            if (fStack_120 <= 0.0) {
              fStack_120 = 0.0;
            }
            fStack_11c = fVar31 + (float)local_19c;
            if (fStack_11c <= 0.0) {
              fStack_11c = 0.0;
            }
            if (*(float **)(lVar18 + 0xd8) == pfVar17) {
              pfVar23 = &local_128;
              goto LAB_1814c9502;
            }
            *pfVar17 = local_128;
            pfVar17[1] = fStack_124;
            pfVar17[2] = fStack_120;
            pfVar17[3] = fStack_11c;
            pfVar17[4] = local_118;
            *(longlong *)(lVar18 + 0xd0) = *(longlong *)(lVar18 + 0xd0) + 0x14;
          }
          break;
        }
      }
    }
  }
  if (bVar9) {
    plVar27 = *(longlong **)(param_1 + 0x120);
    FUN_181342bf0(plVar27);
    (**(code **)(*plVar27 + 0x58))(plVar27,1);
    uStack_190 = (undefined4)plVar27[5];
    uStack_18c = *(undefined4 *)((longlong)plVar27 + 0x2c);
    lStack_e0 = plVar27[5];
    local_198 = 0;
    local_e8 = 0;
    FUN_181342870(plVar27,&local_e8,1);
  }
LAB_1814c9571:
  plVar27 = *(longlong **)(param_1 + 0xd18);
  uVar22 = (ulonglong)((longlong)(plVar27 + *(int *)(param_1 + 0xd24)) + (7 - (longlong)plVar27)) >>
           3;
  if (plVar27 + *(int *)(param_1 + 0xd24) < plVar27) {
    uVar22 = uVar25;
  }
  if (uVar22 != 0) {
    do {
      lVar15 = *plVar27;
      fVar29 = *(float *)(lVar15 + 0xf4);
      plVar20 = (longlong *)(lVar15 + 0xb0);
      lVar18 = (**(code **)(*plVar20 + 8))(plVar20);
      fVar31 = *(float *)(lVar15 + 0xf0);
      fVar29 = fVar29 * *(float *)(lVar18 + 0x88);
      fVar2 = *(float *)(lVar15 + 0x3e0);
      lVar18 = (**(code **)(*plVar20 + 8))(plVar20);
      fVar30 = fVar29 * fVar2 * fVar10;
      fVar31 = fVar31 * *(float *)(lVar18 + 0x88);
      *(float *)(lVar15 + 0x220) = fVar29;
      *(float *)(lVar15 + 500) = fVar31 - fVar30;
      (**(code **)(*(longlong *)(lVar15 + 0xf8) + 0x160))();
      iVar13 = *(int *)(lVar15 + 0x124);
      fVar29 = *(float *)(lVar15 + 0xe8);
      lVar18 = (**(code **)(*plVar20 + 8))(plVar20);
      fVar2 = *(float *)(lVar15 + 0xec);
      fVar3 = *(float *)(lVar18 + 0x88);
      lVar18 = (**(code **)(*plVar20 + 8))(plVar20);
      local_170 = (double)(fVar2 * *(float *)(lVar18 + 0x88)) + dVar11;
      local_178 = (double)(fVar3 * fVar29) + dVar11;
      local_168 = (double)fVar31 + dVar11;
      local_160 = (double)((float)iVar13 + fVar30) + dVar11;
      FUN_18134bfe0(lVar15,local_178,(ulonglong)local_170 & 0xffffffff,
                    (ulonglong)local_168 & 0xffffffff,local_160._0_4_);
      FUN_181344f60(lVar15,0);
      plVar27 = plVar27 + 1;
      uVar25 = uVar25 + 1;
    } while (uVar25 != uVar22);
  }
  return;
}



############ FUN_ 1814cf920 size=379 ############

void FUN_1814cf920(longlong param_1,longlong param_2,undefined4 param_3)

{
  longlong *plVar1;
  longlong *plVar2;
  float fVar3;
  void *_Memory;
  longlong lVar4;
  undefined8 *puVar5;
  int iVar6;
  undefined8 *_Memory_00;
  int iVar7;
  float fVar8;
  float fVar9;
  undefined8 local_res8;
  
  _Memory = *(void **)(param_1 + 0x290);
  *(undefined8 *)(param_1 + 0x290) = 0;
  local_res8 = param_2;
  if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  plVar1 = (longlong *)(param_1 + 0xb0);
  lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar9 = local_res8._4_4_ * *(float *)(lVar4 + 0x88);
  fVar8 = (float)local_res8 * *(float *)(lVar4 + 0x88);
  puVar5 = (undefined8 *)FUN_1811316e0(0xc);
  plVar2 = (longlong *)(param_1 + 0x298);
  *puVar5 = CONCAT44(fVar9,fVar8);
  *(undefined4 *)(puVar5 + 1) = param_3;
  _Memory_00 = puVar5;
  if (plVar2 != &local_res8) {
    _Memory_00 = (undefined8 *)*plVar2;
    *plVar2 = (longlong)puVar5;
    if (_Memory_00 == (undefined8 *)0x0) {
      fVar8 = *(float *)*plVar2;
      fVar9 = ((float *)*plVar2)[1];
      lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
      fVar3 = *(float *)(lVar4 + 0x88);
      lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
      iVar6 = (int)(fVar3 * DAT_1824c44a8);
      iVar7 = (int)(*(float *)(lVar4 + 0x88) * DAT_1824c44a8);
      FUN_18134bfe0(param_1,(int)fVar8 - iVar7 / 2,(int)fVar9 - iVar6 / 2,iVar7,iVar6);
      return;
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory_00);
}



############ FUN_ 1814cfab0 size=308 ############

void FUN_1814cfab0(longlong param_1,float *param_2)

{
  double *pdVar1;
  float fVar2;
  void *_Memory;
  float fVar3;
  float fVar4;
  float *pfVar5;
  longlong lVar6;
  float *_Memory_00;
  double local_res8;
  double local_res10;
  double local_res18;
  double local_res20;
  
  _Memory = *(void **)(param_1 + 0x298);
  *(undefined8 *)(param_1 + 0x298) = 0;
  if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  pfVar5 = (float *)FUN_1811316e0(0x10);
  fVar2 = param_2[1];
  fVar3 = param_2[2];
  fVar4 = param_2[3];
  pdVar1 = (double *)(param_1 + 0x290);
  *pfVar5 = *param_2;
  pfVar5[1] = fVar2;
  pfVar5[2] = fVar3;
  pfVar5[3] = fVar4;
  _Memory_00 = pfVar5;
  if (pdVar1 != &local_res8) {
    _Memory_00 = (float *)*pdVar1;
    *pdVar1 = (double)pfVar5;
    if (_Memory_00 == (float *)0x0) {
      lVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
      fVar2 = *(float *)(lVar6 + 0x88);
      local_res8 = (double)(*param_2 * fVar2) + DAT_1824c4520;
      local_res18 = (double)(param_2[2] * fVar2) + DAT_1824c4520;
      local_res10 = (double)(param_2[1] * fVar2) + DAT_1824c4520;
      local_res20 = (double)(fVar2 * param_2[3]) + DAT_1824c4520;
      FUN_18134bfe0(param_1,(ulonglong)local_res8 & 0xffffffff,(ulonglong)local_res10 & 0xffffffff,
                    (ulonglong)local_res18 & 0xffffffff,local_res20._0_4_);
      return;
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory_00);
}



############ FUN_ 1814d0c30 size=324 ############

undefined8 *
FUN_1814d0c30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong local_res10 [2];
  undefined8 local_68;
  undefined4 local_60;
  undefined **local_58;
  undefined8 *local_50;
  undefined ***local_20;
  
  puVar4 = param_1;
  FUN_18056b680(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  *puVar4 = CloudyTutorialVolumeSlider::vftable;
  puVar4[0x16] = CloudyTutorialVolumeSlider::vftable;
  puVar4[0x19] = param_2;
  local_68 = DAT_18235df78;
  local_60 = DAT_18235df80;
  FUN_181408750(puVar4 + 0x1a,&local_68);
  param_1[0x4e] = 0;
  plVar1 = param_1 + 0x4f;
  *plVar1 = 0;
  local_res10[0] = FUN_1811316e0(0x40);
  local_58 = std::_Func_impl_no_alloc<<lambda_e7f0b225df5d84eb9c11d1a185b61511>,void,float>::vftable
  ;
  local_20 = &local_58;
  local_50 = param_1;
  lVar3 = FUN_18055e880(local_res10[0],param_2,&local_58);
  if (plVar1 != local_res10) {
    lVar2 = *plVar1;
    *plVar1 = lVar3;
    lVar3 = lVar2;
  }
  if (lVar3 != 0) {
    FUN_18056a070(local_res10,lVar3);
  }
  FUN_181411b10(param_1 + 0x1a,"hover",0);
  local_58 = std::
             _Func_impl_no_alloc<<lambda_ccacdfde4c71fe5a9d69610685150c0c>,void,juce::StringRef,float>
             ::vftable;
  local_20 = &local_58;
  local_50 = param_1;
  FUN_181410000(param_1 + 0x1a,&local_58);
  return param_1;
}



############ FUN_ 1814ec010 size=373 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814ec010(longlong param_1)

{
  undefined8 **ppuVar1;
  int iVar2;
  int iVar3;
  undefined1 *puVar4;
  float fVar5;
  undefined8 *_Memory;
  float fVar6;
  double dVar7;
  undefined8 *local_res8;
  
  _Memory = *(undefined8 **)(param_1 + 0x28);
  ppuVar1 = (undefined8 **)(param_1 + 0x28);
  if (_Memory == (undefined8 *)0x0) {
LAB_1814ec05b:
    if (*(uint *)(param_1 + 0x18) < 2) {
      puVar4 = *(undefined1 **)(param_1 + 0x20);
      local_res8 = (undefined8 *)FUN_1811316e0(0x10);
      *local_res8 = puVar4;
      *(undefined1 *)(local_res8 + 1) = *puVar4;
      *puVar4 = 1;
      if (ppuVar1 == &local_res8) {
        *(undefined1 *)*local_res8 = *(undefined1 *)(local_res8 + 1);
        _Memory = local_res8;
LAB_1814ec0b0:
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      _Memory = *ppuVar1;
      *ppuVar1 = local_res8;
      if (_Memory != (undefined8 *)0x0) {
        *(undefined1 *)*_Memory = *(undefined1 *)(_Memory + 1);
        goto LAB_1814ec0b0;
      }
    }
  }
  else if (*(int *)(param_1 + 0x18) == 2) {
    *ppuVar1 = (undefined8 *)0x0;
    if (_Memory != (undefined8 *)0x0) {
      *(undefined1 *)*_Memory = *(undefined1 *)(_Memory + 1);
      goto LAB_1814ec0b0;
    }
  }
  else if (_Memory == (undefined8 *)0x0) goto LAB_1814ec05b;
  *(int *)(param_1 + 0x70) = *(int *)(param_1 + 0x70) + 1;
  iVar2 = *(int *)(param_1 + 0x18);
  iVar3 = *(int *)(param_1 + 0x70);
  if (iVar2 == 0) {
    fVar6 = (float)(iVar3 * 4) / DAT_1824c4444;
    dVar7 = pow((double)iVar3,DAT_1824c41e8);
    fVar5 = DAT_1824c4444;
    *(float *)(param_1 + 0x1c) = (float)((double)fVar6 - dVar7 * _DAT_1824c3e90);
    if ((float)iVar3 <= fVar5) goto LAB_1814ec15c;
    *(undefined8 *)(param_1 + 0x18) = 1;
  }
  else if ((iVar2 != 1) || ((float)iVar3 <= _DAT_1824c439c)) {
    if (iVar2 != 2) goto LAB_1814ec15c;
    *(undefined4 *)(param_1 + 0x1c) = 0x3f800000;
  }
  else {
    *(undefined8 *)(param_1 + 0x18) = 0;
  }
  *(undefined4 *)(param_1 + 0x70) = 0;
LAB_1814ec15c:
  if (*(longlong **)(param_1 + 0x68) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
                    /* WARNING: Could not recover jumptable at 0x0001814ec182. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(longlong **)(param_1 + 0x68) + 0x10))();
  return;
}



############ FUN_ 1814fc8f0 size=858 ############

void FUN_1814fc8f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  longlong *plVar1;
  int iVar2;
  int iVar3;
  undefined1 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  longlong *plVar8;
  longlong lVar9;
  int iVar10;
  ulonglong uVar11;
  undefined1 **ppuVar12;
  ulonglong uVar13;
  uint uVar14;
  ulonglong uVar15;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  longlong *local_res18;
  undefined1 *local_res20;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined8 local_c8;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined **local_b8;
  longlong *local_b0;
  undefined ***local_80;
  
  plVar1 = (longlong *)(param_1 + 0xe0);
  FUN_18047cbc0(plVar1,param_2,param_3,param_4,0xfffffffffffffffe);
  uVar11 = 0;
  if (*(int *)(param_1 + 0xe8) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar1);
  }
  *(undefined4 *)(param_1 + 0xe8) = 0;
  uVar7 = DAT_1824c44dc;
  uVar6 = DAT_1824c44bc;
  uVar5 = DAT_1824c3d8c;
  iVar2 = *(int *)(param_1 + 0x10c);
  if (0 < iVar2) {
    uVar13 = (ulonglong)_tls_index;
    uVar15 = uVar11;
    do {
      uVar14 = (uint)uVar11;
      if (uVar14 < *(uint *)(param_1 + 0x10c)) {
        ppuVar12 = (undefined1 **)(*(longlong *)(param_1 + 0x100) + uVar15);
      }
      else {
        if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar13 * 8) + 0xc) <
            DAT_18267af70) {
          _Init_thread_header(&DAT_18267af70);
          if (DAT_18267af70 == -1) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
        }
        ppuVar12 = &DAT_18267af68;
      }
      puVar4 = *ppuVar12;
      plVar8 = (longlong *)FUN_1811316e0(0x4b0);
      local_res20 = local_res8;
      local_res18 = plVar8;
      FUN_18049c9e0(local_res8,puVar4);
      FUN_18049c9e0(local_res10,puVar4);
      FUN_1815d7db0(plVar8,local_res10,local_res8);
      *plVar8 = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x16] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x18] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x19] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x1a] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x41] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x44] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x47] = (longlong)CloudyComboBoxRadioButton::vftable;
      plVar8[0x48] = (longlong)CloudyComboBoxRadioButton::vftable;
      *(uint *)(plVar8 + 0x94) = uVar14;
      *(undefined1 *)((longlong)plVar8 + 0x4a4) = 0;
      local_res20 = (undefined1 *)FUN_1811316e0(0x1a0);
      lVar9 = FUN_181411e40(local_res20,uVar7,uVar5,uVar6);
      plVar8[0x95] = lVar9;
      if ((int)plVar8[0x38] != 0x24) {
        *(undefined4 *)(plVar8 + 0x38) = 0x24;
        uStack_cc = *(undefined4 *)((longlong)plVar8 + 0x2c);
        uStack_d0 = (undefined4)plVar8[5];
        local_c8 = 0;
        local_d8 = 0;
        uStack_d4 = 0;
        uStack_c0 = uStack_d0;
        uStack_bc = uStack_cc;
        FUN_181342870(plVar8,&local_d8,1);
      }
      *(undefined2 *)(plVar8 + 0x40) = 0;
      *(undefined1 *)((longlong)plVar8 + 0x202) = 0;
      *(byte *)(plVar8 + 0x15) = *(byte *)(plVar8 + 0x15) & 0x9f;
      local_b8 = std::
                 _Func_impl_no_alloc<<lambda_311e838f7ff28f8371a314567af73649>,void,int,juce::Colour>
                 ::vftable;
      local_80 = &local_b8;
      local_b0 = plVar8;
      FUN_181407070(plVar8[0x95],&local_b8);
      FUN_181341570(plVar8,param_1,0);
      (**(code **)(*plVar8 + 0x58))(plVar8,1);
      FUN_181343cc0(param_1,plVar8,0xffffffff);
      iVar3 = *(int *)(param_1 + 0xec);
      iVar10 = iVar3 + 1;
      if (*(int *)(param_1 + 0xe8) < iVar10) {
        if (iVar10 < 0) {
          iVar10 = iVar3 + 2;
        }
        FUN_18047cb30(plVar1,iVar3 + 9 + (iVar10 >> 1) & 0xfffffff8);
      }
      iVar10 = *(int *)(param_1 + 0xec);
      *(int *)(param_1 + 0xec) = iVar10 + 1;
      *(longlong **)(*plVar1 + (longlong)iVar10 * 8) = plVar8;
      uVar11 = (ulonglong)(uVar14 + 1);
      uVar15 = uVar15 + 8;
    } while ((int)(uVar14 + 1) < iVar2);
  }
  return;
}



############ FUN_ 1814fd030 size=450 ############

undefined8 *
FUN_1814fd030(undefined8 *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined1 *local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined1 local_68 [8];
  undefined1 local_60 [8];
  undefined8 local_58;
  undefined **local_50;
  undefined8 *local_48;
  undefined ***local_18;
  
  local_58 = 0xfffffffffffffffe;
  local_78 = local_60;
  FUN_18049c9e0(local_60,param_4);
  FUN_18049c9e0(local_68,param_3);
  FUN_1815d7db0(param_1,local_68,local_60);
  *param_1 = CloudyComboBoxRadioButton::vftable;
  param_1[0x16] = CloudyComboBoxRadioButton::vftable;
  param_1[0x18] = CloudyComboBoxRadioButton::vftable;
  param_1[0x19] = CloudyComboBoxRadioButton::vftable;
  param_1[0x1a] = CloudyComboBoxRadioButton::vftable;
  param_1[0x41] = CloudyComboBoxRadioButton::vftable;
  param_1[0x44] = CloudyComboBoxRadioButton::vftable;
  param_1[0x47] = CloudyComboBoxRadioButton::vftable;
  param_1[0x48] = CloudyComboBoxRadioButton::vftable;
  *(undefined4 *)(param_1 + 0x94) = param_2;
  *(undefined1 *)((longlong)param_1 + 0x4a4) = 0;
  local_78 = (undefined1 *)FUN_1811316e0(0x1a0);
  uVar1 = FUN_181411e40(local_78,DAT_1824c44dc,DAT_1824c3d8c,DAT_1824c44bc);
  param_1[0x95] = uVar1;
  if (*(int *)(param_1 + 0x38) != 0x24) {
    *(undefined4 *)(param_1 + 0x38) = 0x24;
    uStack_6c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_70 = *(undefined4 *)(param_1 + 5);
    local_78 = (undefined1 *)0x0;
    FUN_181342870(param_1,&local_78,1);
  }
  *(undefined2 *)(param_1 + 0x40) = 0;
  *(undefined1 *)((longlong)param_1 + 0x202) = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0x9f;
  local_50 = std::
             _Func_impl_no_alloc<<lambda_311e838f7ff28f8371a314567af73649>,void,int,juce::Colour>::
             vftable;
  local_18 = &local_50;
  local_48 = param_1;
  FUN_181407070(param_1[0x95],&local_50);
  return param_1;
}



############ FUN_ 18152a520 size=1000 ############

void FUN_18152a520(longlong param_1,longlong param_2,longlong *param_3)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong lVar10;
  uint *puVar11;
  void *_Memory;
  undefined8 *puVar12;
  undefined8 *puVar13;
  int iVar14;
  undefined8 *puVar15;
  ulonglong uVar16;
  undefined8 *puVar17;
  ulonglong uVar18;
  longlong local_res18;
  longlong local_res20;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong *local_e0;
  void *local_d8;
  longlong *plStack_d0;
  longlong *local_c8;
  longlong *local_c0;
  undefined8 *local_b8;
  longlong local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 *local_80;
  undefined8 local_78;
  longlong *local_70;
  undefined1 local_60 [32];
  
  local_a0 = 0xfffffffffffffffe;
  local_d8 = (void *)0x0;
  plStack_d0 = (longlong *)0x0;
  local_c8 = (longlong *)0x0;
  plVar9 = (longlong *)*param_3;
  local_e0 = (longlong *)param_3[1];
  if (plVar9 != local_e0) {
    do {
      uVar16 = 0;
      FUN_18049c4e0(&local_res20,"subMenuItem/");
      plVar5 = (longlong *)FUN_181232d30(&local_res20,plVar9);
      local_res18 = *plVar5;
      if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
        UNLOCK();
      }
      puVar11 = (uint *)(local_res20 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      lVar6 = *plVar9;
      iVar4 = *(int *)(param_2 + 0x2d4);
      local_98 = lVar6;
      if (0 < iVar4) {
        puVar15 = *(undefined8 **)(param_2 + 0x2c8);
        uVar18 = uVar16;
        do {
          iVar14 = (int)uVar18;
          local_90 = *puVar15;
          iVar3 = FUN_18048cbc0(lVar6);
          if (iVar3 == 0) goto LAB_18152a63a;
          uVar18 = (ulonglong)(iVar14 + 1);
          uVar16 = uVar16 + 1;
          puVar15 = puVar15 + 1;
        } while ((longlong)uVar16 < (longlong)iVar4);
      }
      iVar14 = -1;
LAB_18152a63a:
      lVar6 = local_res18;
      puVar15 = *(undefined8 **)(param_1 + 0xc20);
      cVar2 = *(char *)((longlong)puVar15[1] + 0x19);
      puVar13 = puVar15;
      puVar12 = (undefined8 *)puVar15[1];
      while (cVar2 == '\0') {
        local_88 = puVar12[4];
        iVar4 = FUN_18048cbc0(local_88,lVar6);
        if (iVar4 < 0) {
          puVar17 = (undefined8 *)puVar12[2];
          puVar12 = puVar13;
        }
        else {
          puVar17 = (undefined8 *)*puVar12;
        }
        puVar13 = puVar12;
        puVar12 = puVar17;
        cVar2 = *(char *)((longlong)puVar17 + 0x19);
      }
      local_80 = puVar15;
      if (puVar13 == puVar15) {
LAB_18152a6a4:
        local_c0 = &local_res18;
        lVar6 = FUN_180588140(param_1 + 0xc20);
        FUN_1805881a0(param_1 + 0xc20,&local_b8,puVar13,lVar6 + 0x20,lVar6);
        puVar13 = local_b8;
      }
      else {
        local_78 = puVar13[4];
        iVar4 = FUN_18048cbc0(lVar6);
        if (iVar4 < 0) goto LAB_18152a6a4;
      }
      puVar13[5] = param_2;
      *(int *)(puVar13 + 6) = iVar14;
      local_a8 = FUN_1811316e0(0x2a0);
      local_108 = *plVar9;
      if ((*(uint *)(local_108 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_108 + -0x10) = *(int *)(local_108 + -0x10) + 1;
        UNLOCK();
      }
      local_100 = local_res18;
      if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
        UNLOCK();
      }
      local_b0 = FUN_181601d30(local_a8,&local_100,&local_108);
      if (local_c8 == plStack_d0) {
        FUN_180585de0(&local_d8,plStack_d0,&local_b0);
      }
      else if (local_b0 == 0) {
        *plStack_d0 = 0;
        plStack_d0 = plStack_d0 + 1;
      }
      else {
        *plStack_d0 = local_b0 + 0x1e0;
        plStack_d0 = plStack_d0 + 1;
      }
      puVar11 = (uint *)(local_res18 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      plVar9 = plVar9 + 1;
    } while (plVar9 != local_e0);
  }
  lVar6 = 0;
  uVar7 = FUN_1811316e0(0x2a0);
  local_e0 = (longlong *)local_60;
  local_70 = &local_f0;
  local_a8 = uVar7;
  uVar8 = FUN_180584230(local_60,&local_d8);
  local_f0 = *(longlong *)(param_2 + 0x68);
  if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_f0 + -0x10) = *(int *)(local_f0 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(&local_f8,"subMenu/");
  plVar9 = (longlong *)FUN_181232d30(&local_f8,param_2 + 0x60);
  local_e8 = *plVar9;
  if ((*(uint *)(local_e8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_e8 + -0x10) = *(int *)(local_e8 + -0x10) + 1;
    UNLOCK();
  }
  puVar11 = (uint *)(local_f8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  lVar10 = FUN_181601a20(uVar7,&local_e8,&local_f0,uVar8);
  if (lVar10 != 0) {
    lVar6 = lVar10 + 0x1e0;
  }
  FUN_1815eeb30(param_1 + 0x8e0,lVar6,*(undefined4 *)(param_1 + 0xb9c));
  if (local_d8 != (void *)0x0) {
    _Memory = local_d8;
    if ((0xfff < ((longlong)local_c8 - (longlong)local_d8 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)local_d8 + -8),
       0x1f < (ulonglong)((longlong)local_d8 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 181564e40 size=218 ############

void FUN_181564e40(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined8 uVar7;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar7 = 0xfffffffffffffffe;
  lVar1 = param_1 + -0x110;
  if (DAT_182673700 == 0) {
    uVar4 = FUN_1811316e0(0x130);
    DAT_182673700 = FUN_18133c6c0(uVar4);
  }
  plVar6 = *(longlong **)(*(longlong *)(DAT_182673700 + 0x30) + 0x28);
  plVar2 = plVar6 + *(int *)(*(longlong *)(DAT_182673700 + 0x30) + 0x34);
  for (; plVar6 != plVar2; plVar6 = plVar6 + 1) {
    lVar3 = *(longlong *)(*plVar6 + 0x48);
    lVar5 = 0;
    if (lVar3 != 0) {
      lVar5 = *(longlong *)(lVar3 + 0x10);
    }
    if ((lVar5 == lVar1) && ((*(byte *)(*plVar6 + 0x28) & 0x70) != 0)) goto LAB_181564ed3;
  }
  if (*(int *)(param_1 + -0x38) < 1) {
    FUN_18155a180(lVar1);
  }
LAB_181564ed3:
  FUN_181552c80(lVar1);
  uStack_10 = *(undefined4 *)(param_1 + -0xe8);
  uStack_c = *(undefined4 *)(param_1 + -0xe4);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1,param_4,uVar7);
  return;
}



############ FUN_ 1815a6e20 size=454 ############

void FUN_1815a6e20(longlong param_1)

{
  undefined8 **ppuVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined4 uVar6;
  undefined8 *local_res8;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  *(undefined1 *)(param_1 + 0x3b4) = 0;
  *(undefined8 *)(param_1 + 900) = 0;
  *(undefined8 *)(param_1 + 0x38c) = 0;
  *(undefined8 *)(param_1 + 0x394) = 0;
  *(undefined8 *)(param_1 + 0x39c) = 0;
  if (*(longlong *)(param_1 + 0x328) != 0) {
    uVar6 = *(undefined4 *)(*(longlong *)(param_1 + 0x328) + 0x188);
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar6);
    uVar6 = FUN_180487300(*(undefined8 *)(param_1 + 0x370),uVar6);
    *(undefined4 *)(param_1 + 0x3b8) = uVar6;
    FUN_1811c2330(*(undefined8 *)(param_1 + 0x328));
  }
  if (*(longlong *)(param_1 + 0x330) != 0) {
    uVar6 = *(undefined4 *)(*(longlong *)(param_1 + 0x330) + 0x188);
    local_res8 = (undefined8 *)CONCAT44(local_res8._4_4_,uVar6);
    uVar6 = FUN_180487300(*(undefined8 *)(param_1 + 0x378),uVar6);
    *(undefined4 *)(param_1 + 0x3bc) = uVar6;
    FUN_1811c2330(*(undefined8 *)(param_1 + 0x330));
  }
  if (*(longlong **)(param_1 + 0x338) != (longlong *)0x0) {
    uVar6 = (**(code **)(**(longlong **)(param_1 + 0x338) + 8))();
    *(undefined4 *)(param_1 + 0x3c0) = uVar6;
    FUN_1811c2330(*(undefined8 *)(param_1 + 0x338));
  }
  *(undefined1 *)(param_1 + 0x3d5) = 1;
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x318) + 0x10);
  if ((lVar2 != 0) && (*(char *)(lVar2 + 0x10) != '\0')) {
    lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x318) + 0x10);
    ppuVar1 = (undefined8 **)(lVar2 + 0x18);
    if (*(longlong *)(lVar2 + 0x18) == 0) {
      puVar4 = (undefined8 *)FUN_1811316e0(0x28);
      puVar4[1] = 0xffffffffffffffff;
      *(undefined4 *)(puVar4 + 2) = 0;
      *puVar4 = AutoCueState::Delayed::vftable;
      puVar4[3] = lVar2;
      *(undefined4 *)(puVar4 + 4) = 300;
      local_res8 = puVar4;
      FUN_1812a77d0(puVar4,300);
      if (ppuVar1 == &local_res8) {
        puVar5 = (undefined8 *)*puVar4;
      }
      else {
        puVar3 = *ppuVar1;
        *ppuVar1 = puVar4;
        if (puVar3 == (undefined8 *)0x0) goto LAB_1815a6fb0;
        puVar5 = (undefined8 *)*puVar3;
        puVar4 = puVar3;
      }
      (*(code *)*puVar5)(puVar4,1);
    }
  }
LAB_1815a6fb0:
  uStack_20 = *(undefined4 *)(param_1 + 0x28);
  uStack_1c = *(undefined4 *)(param_1 + 0x2c);
  local_28 = 0;
  uStack_24 = 0;
  FUN_181342870(param_1,&local_28,1);
  return;
}



############ FUN_ 18160ad50 size=238 ############

longlong * FUN_18160ad50(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  code *pcVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  *param_1 = 0;
  param_1[1] = 0;
  puVar7 = (undefined8 *)FUN_1811316e0(0x668);
  *(undefined4 *)(puVar7 + 1) = 1;
  *(undefined4 *)((longlong)puVar7 + 0xc) = 1;
  *puVar7 = std::_Ref_count_obj<InlineTooltip>::vftable;
  FUN_1815dc2d0(puVar7 + 2,param_2);
  *param_1 = (longlong)(puVar7 + 2);
  plVar4 = (longlong *)param_1[1];
  param_1[1] = (longlong)puVar7;
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      if ((undefined **)*plVar4 == std::_Ref_count_obj<InlineTooltip>::vftable) {
        (**(code **)plVar4[2])(plVar4 + 2,0);
      }
      else {
        (**(code **)*plVar4)(plVar4);
      }
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        pcVar5 = (code *)((undefined **)*plVar4)[1];
        if ((undefined **)*plVar4 == std::_Ref_count_obj<InlineTooltip>::vftable) {
          (*(code *)std::_Ref_count_obj<InlineTooltip>::vftable[2])(plVar4,1,pcVar5,param_4,uVar8);
        }
        else {
          (*pcVar5)();
        }
      }
    }
  }
  return param_1;
}



############ FUN_ 181610270 size=2661 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181610270(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,float *param_6,undefined8 param_7)

{
  uint *_Memory;
  longlong *plVar1;
  uint uVar2;
  float fVar3;
  float fVar4;
  bool bVar5;
  float fVar6;
  float fVar7;
  undefined4 uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined8 uVar12;
  longlong *plVar13;
  undefined8 *puVar14;
  longlong lVar15;
  longlong lVar16;
  undefined4 uVar17;
  undefined1 auStackY_398 [32];
  void *local_308;
  undefined8 local_300;
  float local_2f8;
  float fStack_2f4;
  float fStack_2f0;
  undefined4 uStack_2ec;
  longlong local_2e8;
  longlong local_2b8;
  undefined8 *local_2b0;
  undefined8 local_2a8;
  undefined8 local_2a0;
  undefined8 local_298;
  undefined8 *local_290;
  undefined **local_198;
  undefined8 local_190;
  undefined ***local_160;
  undefined **local_158;
  undefined8 local_150;
  undefined ***local_120;
  undefined **local_118;
  undefined8 local_110;
  undefined8 *puStack_108;
  undefined ***local_e0;
  undefined **local_d8;
  float local_d0;
  float fStack_cc;
  float fStack_c8;
  undefined4 uStack_c4;
  longlong local_c0;
  undefined ***local_a0;
  ulonglong local_98;
  
  local_298 = 0xfffffffffffffffe;
  local_98 = DAT_182615970 ^ (ulonglong)auStackY_398;
  local_2a0 = param_7;
  local_2a8 = param_4;
  local_290 = param_1;
  FUN_18049c4e0(&local_2b8,"OpenGLFallbackUI");
  *param_1 = juce::Component::vftable;
  param_1[1] = local_2b8;
  _Memory = (uint *)(local_2b8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = OpenGLFallbackUI::vftable;
  param_1[0x16] = OpenGLFallbackUI::vftable;
  param_1[0x17] = param_3;
  plVar1 = param_1 + 0x18;
  *plVar1 = 0;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  _eh_vector_constructor_iterator_(param_1 + 0x71c,0x828,8,FUN_1805345d0,FUN_180534650);
  uVar8 = DAT_1824c3ea4;
  FUN_18058d9d0(param_1 + 0x1c,param_4);
  puVar10 = param_1 + 0x11c;
  lVar16 = 6;
  do {
    lVar9 = 2;
    puVar14 = puVar10;
    if (((ulonglong)puVar10 & 0xf) == 0) {
      do {
        *(undefined4 *)puVar14 = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 1) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 2) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x14) = 0x3f800000;
        *(undefined4 *)(puVar14 + 3) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 4) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x24) = 0x3f800000;
        *(undefined4 *)(puVar14 + 5) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 6) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x34) = 0x3f800000;
        *(undefined4 *)(puVar14 + 7) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 8) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x44) = 0x3f800000;
        *(undefined4 *)(puVar14 + 9) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x4c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 10) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x54) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xb) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x5c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xc) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 100) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xd) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x6c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xe) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x74) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xf) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x7c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x10) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x84) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x11) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x8c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x12) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x94) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x13) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x9c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x14) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xa4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x15) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x16) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xb4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x17) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xbc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x18) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xc4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x19) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xcc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xd4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xdc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xe4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xf4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xfc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x20) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x104) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x21) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x10c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x22) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x114) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x23) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x11c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x24) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x124) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x25) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 300) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x26) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x134) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x27) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x13c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x28) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x144) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x29) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x14c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x154) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x15c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x164) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x16c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x174) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x17c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x30) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x184) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x31) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x18c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x32) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x194) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x33) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x19c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x34) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1a4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x35) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1ac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x36) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1b4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x37) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1bc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x38) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1c4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x39) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1cc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1d4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1dc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1e4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1ec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 500) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1fc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x40) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x204) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x41) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x20c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x42) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x214) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x43) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x21c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x44) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x224) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x45) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x22c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x46) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x234) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x47) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x23c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x48) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x244) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x49) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x24c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x254) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x25c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x264) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x26c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x274) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x27c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x50) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x284) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x51) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x28c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x52) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x294) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x53) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x29c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x54) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2a4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x55) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2ac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x56) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2b4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x57) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 700) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x58) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2c4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x59) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2cc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2d4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2dc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2e4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2ec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2f4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2fc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x60) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x304) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x61) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x30c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x62) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x314) = 0x3f800000;
        *(undefined4 *)(puVar14 + 99) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x31c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 100) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x324) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x65) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x32c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x66) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x334) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x67) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x33c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x68) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x344) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x69) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x34c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x354) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x35c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x364) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x36c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x374) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x37c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x70) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 900) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x71) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x38c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x72) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x394) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x73) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x39c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x74) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3a4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x75) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3ac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x76) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3b4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x77) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3bc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x78) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3c4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x79) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3cc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3d4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3dc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3e4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3ec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3f4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3fc) = 0x3f800000;
        lVar9 = lVar9 + -1;
        puVar14 = puVar14 + 0x80;
      } while (lVar9 != 0);
    }
    else {
      do {
        *(undefined4 *)puVar14 = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 1) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 2) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x14) = 0x3f800000;
        *(undefined4 *)(puVar14 + 3) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 4) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x24) = 0x3f800000;
        *(undefined4 *)(puVar14 + 5) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 6) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x34) = 0x3f800000;
        *(undefined4 *)(puVar14 + 7) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 8) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x44) = 0x3f800000;
        *(undefined4 *)(puVar14 + 9) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x4c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 10) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x54) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xb) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x5c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xc) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 100) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xd) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x6c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xe) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x74) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0xf) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x7c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x10) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x84) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x11) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x8c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x12) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x94) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x13) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x9c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x14) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xa4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x15) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x16) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xb4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x17) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xbc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x18) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xc4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x19) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xcc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xd4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xdc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xe4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xf4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x1f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0xfc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x20) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x104) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x21) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x10c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x22) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x114) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x23) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x11c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x24) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x124) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x25) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 300) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x26) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x134) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x27) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x13c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x28) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x144) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x29) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x14c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x154) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x15c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x164) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x16c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x174) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x2f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x17c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x30) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x184) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x31) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x18c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x32) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x194) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x33) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x19c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x34) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1a4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x35) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1ac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x36) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1b4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x37) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1bc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x38) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1c4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x39) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1cc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1d4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1dc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1e4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1ec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 500) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x3f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x1fc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x40) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x204) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x41) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x20c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x42) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x214) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x43) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x21c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x44) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x224) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x45) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x22c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x46) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x234) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x47) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x23c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x48) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x244) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x49) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x24c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x254) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x25c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x264) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x26c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x274) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x4f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x27c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x50) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x284) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x51) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x28c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x52) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x294) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x53) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x29c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x54) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2a4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x55) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2ac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x56) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2b4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x57) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 700) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x58) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2c4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x59) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2cc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2d4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2dc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2e4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2ec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2f4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x5f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x2fc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x60) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x304) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x61) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x30c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x62) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x314) = 0x3f800000;
        *(undefined4 *)(puVar14 + 99) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x31c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 100) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x324) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x65) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x32c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x66) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x334) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x67) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x33c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x68) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x344) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x69) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x34c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x354) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x35c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x364) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x36c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x374) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x6f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x37c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x70) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 900) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x71) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x38c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x72) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x394) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x73) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x39c) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x74) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3a4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x75) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3ac) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x76) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3b4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x77) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3bc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x78) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3c4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x79) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3cc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7a) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3d4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7b) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3dc) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7c) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3e4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7d) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3ec) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7e) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3f4) = 0x3f800000;
        *(undefined4 *)(puVar14 + 0x7f) = 0x3f800000;
        *(undefined4 *)((longlong)puVar14 + 0x3fc) = 0x3f800000;
        puVar14 = puVar14 + 0x80;
        lVar9 = lVar9 + -1;
      } while (lVar9 != 0);
    }
    puVar10 = puVar10 + 0x100;
    lVar16 = lVar16 + -1;
  } while (lVar16 != 0);
  local_118 = std::_Func_impl_no_alloc<<lambda_c47d1edfda7fd19489ae99937040385c>,float*___ptr64,int>
              ::vftable;
  local_e0 = &local_118;
  local_158 = std::_Func_impl_no_alloc<<lambda_7f8135ed38e823c332187a462ca97acd>,bool,int>::vftable;
  local_120 = &local_158;
  local_198 = std::_Func_impl_no_alloc<<lambda_214d51a6f7b73ffebb88a28cbb9db434>,float>::vftable;
  local_160 = &local_198;
  local_190 = param_3;
  local_150 = param_3;
  local_110 = param_3;
  puStack_108 = param_1;
  puVar10 = (undefined8 *)FUN_1811316e0(0xb0);
  puVar10[1] = &DAT_1821dbf98;
  puVar10[2] = &DAT_1821dbf98;
  puVar10[3] = 0;
  puVar10[4] = 0;
  puVar10[5] = 0;
  puVar10[6] = 0;
  puVar10[7] = 0;
  puVar10[8] = 0;
  puVar10[9] = 0;
  puVar10[10] = 0;
  puVar10[0xb] = 0;
  puVar10[0xc] = 0;
  puVar10[0xd] = 0;
  puVar10[0xe] = 0;
  puVar10[0xf] = 0;
  puVar10[0x10] = 0;
  puVar10[0x11] = 0;
  puVar10[0x12] = 0;
  puVar10[0x13] = 0;
  puVar10[0x14] = 0;
  *(undefined4 *)(puVar10 + 0x15) = 0;
  *(undefined1 *)((longlong)puVar10 + 0xac) = 0;
  *puVar10 = Backdrop::vftable;
  if (puVar10[0xd] == 0) {
    puVar11 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar11 = juce::StandardCachedComponentImage::vftable;
    puVar11[1] = 0;
    puVar11[2] = 0;
    puVar11[3] = 0;
    puVar11[4] = puVar10;
    *(undefined4 *)(puVar11 + 5) = 0x3f800000;
    puVar14 = (undefined8 *)puVar10[0xd];
    puVar10[0xd] = puVar11;
    if (puVar14 != (undefined8 *)0x0) {
      (**(code **)*puVar14)(puVar14,1);
    }
  }
  puVar14 = (undefined8 *)param_1[0x1a];
  param_1[0x1a] = puVar10;
  if (puVar14 != (undefined8 *)0x0) {
    (**(code **)*puVar14)(puVar14,1);
  }
  plVar13 = (longlong *)param_1[0x1a];
  if (plVar13 != (longlong *)0x0) {
    (**(code **)(*plVar13 + 0x58))(plVar13,1);
    FUN_181343cc0(param_1,plVar13,0xffffffff);
  }
  uVar12 = FUN_1811316e0(0x230);
  uVar12 = FUN_181a06da0(uVar12,param_2,param_4,param_6);
  puVar10 = (undefined8 *)param_1[0x19];
  param_1[0x19] = uVar12;
  if (puVar10 != (undefined8 *)0x0) {
    (**(code **)*puVar10)(puVar10,1);
  }
  plVar13 = (longlong *)param_1[0x19];
  if (plVar13 != (longlong *)0x0) {
    (**(code **)(*plVar13 + 0x58))(plVar13,1);
    FUN_181343cc0(param_1,plVar13,0xffffffff);
  }
  plVar13 = (longlong *)FUN_18058dc10(&local_2b0,&local_118,&local_158,&local_198);
  if (plVar1 != plVar13) {
    lVar16 = *plVar13;
    *plVar13 = 0;
    puVar10 = (undefined8 *)*plVar1;
    *plVar1 = lVar16;
    if (puVar10 != (undefined8 *)0x0) {
      (**(code **)*puVar10)(puVar10,1);
    }
  }
  if (local_2b0 != (undefined8 *)0x0) {
    (**(code **)*local_2b0)(local_2b0,1);
  }
  plVar13 = (longlong *)*plVar1;
  if (plVar13 != (longlong *)0x0) {
    (**(code **)(*plVar13 + 0x58))(plVar13,1);
    FUN_181343cc0(param_1,plVar13,0xffffffff);
  }
  lVar9 = *plVar1;
  FUN_18058c5c0(lVar9 + 0x9b10,param_6);
  *(undefined4 *)(lVar9 + 0x9894) = 0x800;
  fVar3 = param_6[1];
  fVar4 = *param_6;
  fVar6 = *param_6;
  fVar7 = param_6[1];
  lVar16 = lVar9 + 0x19f8;
  FUN_180557920(lVar16,uVar8);
  lVar15 = 0;
  do {
    uVar17 = FUN_180487300(param_6,*(undefined4 *)(lVar16 + lVar15 * 4));
    *(undefined4 *)(lVar16 + lVar15 * 4) = uVar17;
    lVar15 = lVar15 + 1;
  } while (lVar15 < 0x800);
  fStack_2f0 = DAT_1824c45b8 / (fVar3 - fVar4);
  local_d8 = std::_Func_impl_no_alloc<<lambda_03f01822f76fc2673078ee71b606abaa>,float,float>::
             vftable;
  uStack_c4 = uStack_2ec;
  local_a0 = &local_d8;
  local_2f8 = fVar6;
  fStack_2f4 = fVar7;
  local_2e8 = lVar16;
  local_d0 = fVar6;
  fStack_cc = fVar7;
  fStack_c8 = fStack_2f0;
  local_c0 = lVar16;
  (*(code *)
    PTR_vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M___1824b0a58
  )(&local_d8,0);
  fVar3 = DAT_1824c3d8c;
  *(float *)(lVar9 + 0x99dc) = (float)*(int *)(lVar9 + 0x2c) * DAT_1824c3d8c;
  *(float *)(lVar9 + 0x99e0) = (float)*(int *)(lVar9 + 0x28) / (float)*(int *)(lVar9 + 0x9890);
  *(undefined4 *)(lVar9 + 0x99f8) = 0x41200000;
  *(float *)(lVar9 + 0x99fc) =
       (fVar3 / *(float *)(lVar9 + 0x99e8)) * (float)*(int *)(lVar9 + 0x9894);
  FUN_18058cf30(lVar9,uVar8);
  lVar16 = *plVar1;
  FUN_18058c5c0(lVar16 + 0x9a38,local_2a8);
  *(undefined4 *)(lVar16 + 0x9890) = 0x200;
  plVar13 = *(longlong **)(lVar16 + 0x9be8);
  bVar5 = *(float *)((longlong)plVar13 + 0x24) != _DAT_1824c457c;
  *(undefined4 *)((longlong)plVar13 + 0x24) = 0x44000000;
  if (bVar5) {
    (**(code **)(*plVar13 + 0x20))();
  }
  FUN_18058a210(*plVar1,local_2a0);
  local_308 = (void *)0x0;
  local_300 = 0;
  FUN_180589fb0(*plVar1,param_5,&local_308);
  FUN_180488c50(&local_308);
                    /* WARNING: Subroutine does not return */
  free(local_308);
}



############ FUN_ 181a06da0 size=590 ############

undefined8 *
FUN_181a06da0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5)

{
  undefined8 uVar1;
  int iVar2;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  param_1[0x17] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *param_1 = ReductionCurve::vftable;
  param_1[0x16] = ReductionCurve::vftable;
  param_1[0x19] = ReductionCurve::vftable;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  *(undefined4 *)((longlong)param_1 + 0x15c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x2c) = 0xbf800000;
  *(undefined4 *)((longlong)param_1 + 0x164) = 0x3f800000;
  param_1[0x2f] = 0;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  param_1[0x32] = 0;
  param_1[0x33] = 0;
  param_1[0x34] = 0;
  param_1[0x35] = 0;
  *(undefined1 *)(param_1 + 0x36) = 1;
  param_1[0x37] = param_2;
  param_1[0x38] = param_3;
  param_1[0x39] = param_4;
  param_1[0x3a] = param_5;
  uVar1 = FUN_1811316e0(0x18);
  uVar1 = FUN_1804841f0(uVar1,param_5,param_1 + 0x19);
  param_1[0x3b] = uVar1;
  *(undefined1 *)(param_1 + 0x3c) = 0;
  param_1[0x44] = 0;
  *(undefined4 *)(param_1 + 0x45) = 0;
  iVar2 = *(int *)((longlong)param_1 + 0x19c) + 0x404;
  if (*(int *)(param_1 + 0x33) < iVar2) {
    FUN_1804af790(param_1 + 0x32,
                  *(int *)((longlong)param_1 + 0x19c) + 0x40c + iVar2 / 2 & 0xfffffff8);
  }
  FUN_1812a77d0(param_1 + 0x16,0x21);
  return param_1;
}



############ FUN_ 18161a4f0 size=1120 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18161a4f0(longlong param_1,int param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  float fVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  undefined4 local_res10;
  undefined4 local_res18 [2];
  undefined4 local_res20;
  int iVar9;
  undefined3 uVar11;
  undefined4 uVar10;
  byte local_108;
  byte local_107;
  byte local_106;
  undefined1 local_105;
  undefined4 local_104;
  undefined4 local_100;
  undefined4 local_fc;
  float local_f8;
  float local_f4;
  undefined8 local_f0;
  undefined1 local_e8;
  void *local_e0;
  undefined8 local_d8;
  longlong *local_d0;
  longlong *local_c8;
  undefined1 local_c0;
  undefined8 *local_b8;
  int *local_b0;
  undefined8 *local_a8;
  undefined1 local_a0 [16];
  undefined1 local_90 [16];
  undefined1 local_80 [4];
  undefined1 local_7c [4];
  undefined **local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined1 local_58 [40];
  
  local_70 = 0xfffffffffffffffe;
  local_fc = 0;
  local_78 = juce::NativeImageType::vftable;
  iVar9 = param_3;
  (*(code *)PTR_FUN_1824988f0)(&local_78,&local_b8,2,param_2,param_3,1);
  local_a8 = *(undefined8 **)(param_1 + 0x168);
  *(undefined8 **)(param_1 + 0x168) = local_b8;
  local_b8 = local_a8;
  if (local_a8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_a8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_a8)(local_a8,1);
    }
  }
  plVar8 = *(longlong **)(param_1 + 0x168);
  if (plVar8 == (longlong *)0x0) {
    local_d0 = (longlong *)0x0;
  }
  else {
    (**(code **)(*plVar8 + 8))(plVar8,&local_d0);
  }
  local_fc = 1;
  local_c0 = 0;
  local_e0 = (void *)0x0;
  local_d8 = 0;
  local_e8 = 1;
  local_f8 = (float)param_2 * DAT_1824c3d3c;
  local_f4 = (float)param_3 * DAT_1824c46a8;
  local_f0 = CONCAT44((float)param_3 * DAT_1824c42d0,local_f8);
  local_104 = 0xff7297ae;
  local_c8 = local_d0;
  FUN_18049fa40(local_a0,0xff789fb7);
  uVar11 = (undefined3)((uint)iVar9 >> 8);
  FUN_18049fbb0(&local_res10);
  local_res20 = 0xff9fbbcc;
  FUN_18049fa40(local_90,0xff9fbbcc);
  uVar10 = CONCAT31(uVar11,0xff);
  FUN_18049fbb0(&local_108);
  uVar5 = local_104;
  fVar4 = DAT_1824c4548;
  local_res18[0] =
       CONCAT13(local_105,
                CONCAT12((char)(int)(DAT_1824c4548 -
                                    (float)(int)(0xff - (uint)local_106) * DAT_1824c3e78),
                         CONCAT11((char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - (uint)local_107) * DAT_1824c3e78),
                                  (char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - (uint)local_108) * DAT_1824c3e78)))
               );
  FUN_1812a1940(&local_f8);
  FUN_1812a1940(&local_f8,DAT_1824c4010,uVar5);
  puVar6 = (undefined4 *)FUN_1812a2a20(&local_res10,local_80,uVar5,DAT_1824c3d18,uVar10);
  FUN_1812a1940(&local_f8,DAT_1824c4028,*puVar6);
  local_100 = CONCAT13(local_res10._3_1_,
                       CONCAT12((char)(int)(fVar4 - (float)(int)(0xff - (local_res10 >> 0x10 & 0xff)
                                                                ) * DAT_1824c3e6c),
                                CONCAT11((char)(int)(fVar4 - (float)(int)(0xff - (local_res10 >> 8 &
                                                                                 0xff)) *
                                                             DAT_1824c3e6c),
                                         (char)(int)(fVar4 - (float)(int)(0xff - (local_res10 & 0xff
                                                                                 )) * DAT_1824c3e6c)
                                        )));
  FUN_1812a1940(&local_f8,DAT_1824c4030,local_100);
  FUN_1812a1940(&local_f8,DAT_1824c4050,local_res10);
  FUN_1812a1940(&local_f8,DAT_1824c4080,local_res18[0]);
  puVar6 = (undefined4 *)FUN_1812a2a20(local_res18,local_7c,local_res10,DAT_1824c3c98);
  FUN_1812a1940(&local_f8,DAT_1824c4088,*puVar6);
  FUN_1812a1940(&local_f8,DAT_1824c4140,local_res10);
  FUN_181296a90(&local_d0,&local_f8);
  puVar7 = (undefined8 *)(**(code **)(*local_c8 + 0x58))(local_c8,local_58);
  local_68 = *puVar7;
  uStack_60 = puVar7[1];
  (**(code **)(*local_c8 + 0xa8))(local_c8,&local_68,0);
  plVar8 = (longlong *)FUN_1805989c0();
  lVar3 = *plVar8;
  local_b0 = (int *)FUN_1811316e0(0x18);
  local_b0[0] = 0;
  local_b0[1] = 0;
  local_b0[2] = 0;
  local_b0[4] = 0;
  local_b0[5] = 0;
  local_fc = 3;
  *(undefined4 *)(lVar3 + 500) = 0;
  FUN_18163bd70(local_b0,param_1 + 0x168);
  FUN_1805684e0(param_1 + 0x170,&local_b0);
  piVar1 = local_b0;
  if (local_b0 != (int *)0x0) {
    if ((*local_b0 != 0) &&
       (plVar8 = (longlong *)FUN_1805989c0(), *(longlong *)(piVar1 + 4) == *plVar8)) {
      glDeleteTextures(1,piVar1);
      piVar1[0] = 0;
      piVar1[1] = 0;
      piVar1[2] = 0;
    }
                    /* WARNING: Subroutine does not return */
    free(piVar1);
  }
                    /* WARNING: Subroutine does not return */
  free(local_e0);
}



############ FUN_ 18163a400 size=219 ############

undefined8 *
FUN_18163a400(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined4 param_4,
             undefined4 param_5)

{
  undefined8 uVar1;
  char cVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)FUN_1805989c0();
  uVar1 = *puVar3;
  puVar3 = (undefined8 *)FUN_1811316e0(0x60);
  *(undefined4 *)(puVar3 + 1) = 0;
  *(undefined4 *)(puVar3 + 2) = 2;
  *(undefined4 *)((longlong)puVar3 + 0x14) = param_4;
  *(undefined4 *)(puVar3 + 3) = param_5;
  puVar3[4] = 0;
  puVar3[5] = 0;
  puVar3[6] = 0;
  puVar3[7] = 0;
  *puVar3 = juce::OpenGLFrameBufferImage::vftable;
  puVar3[8] = uVar1;
  puVar3[9] = 0;
  puVar3[10] = 0;
  *(undefined4 *)(puVar3 + 0xb) = 4;
  *(int *)((longlong)puVar3 + 0x5c) = *(int *)((longlong)puVar3 + 0x14) << 2;
  cVar2 = FUN_180595150(puVar3);
  if (cVar2 == '\0') {
    *param_2 = 0;
    (**(code **)*puVar3)(puVar3,1);
  }
  else {
    *param_2 = puVar3;
    LOCK();
    *(int *)(puVar3 + 1) = *(int *)(puVar3 + 1) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 181a06ca0 size=237 ############

undefined8 *
FUN_181a06ca0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = Backdrop::vftable;
  if (param_1[0xd] == 0) {
    puVar2 = (undefined8 *)FUN_1811316e0(0x30);
    *puVar2 = juce::StandardCachedComponentImage::vftable;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = param_1;
    *(undefined4 *)(puVar2 + 5) = 0x3f800000;
    puVar1 = (undefined8 *)param_1[0xd];
    param_1[0xd] = puVar2;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1,param_3,param_4,uVar3);
    }
  }
  return param_1;
}



############ FUN_ 1809284c0 size=28 ############

void FUN_1809284c0(void)

{
  FUN_1811316e0();
  return;
}



############ FUN_ 181226cb0 size=1117 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000181226faa) */
/* WARNING: Removing unreachable block (ram,0x000181226faf) */
/* WARNING: Removing unreachable block (ram,0x000181226fba) */
/* WARNING: Removing unreachable block (ram,0x000181226fc6) */
/* WARNING: Removing unreachable block (ram,0x00018122719e) */
/* WARNING: Removing unreachable block (ram,0x000181226fd7) */
/* WARNING: Removing unreachable block (ram,0x00018122702c) */

void FUN_181226cb0(undefined8 *param_1,longlong *param_2)

{
  code *pcVar1;
  longlong lVar2;
  uint uVar3;
  undefined1 uVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 *puVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  ulonglong uVar10;
  bool bVar11;
  undefined1 auStack_158 [32];
  undefined1 local_138 [8];
  undefined8 local_130;
  longlong local_128;
  undefined8 *local_120;
  undefined8 local_118;
  undefined1 local_108 [16];
  longlong *local_f8;
  char *local_e0;
  ulonglong local_d0;
  undefined8 local_58;
  undefined **local_50;
  undefined8 local_48;
  longlong *local_40;
  undefined1 local_38 [8];
  ulonglong local_30;
  
  local_118 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_120 = param_1;
  iVar5 = (**(code **)(*param_2 + 0x80))(param_2);
  if (iVar5 < 1) {
LAB_18122710a:
    *param_1 = &PTR_vftable_18262b558;
  }
  else {
    pcVar1 = *(code **)(*param_2 + 0x20);
    if (pcVar1 == FUN_181235e90) {
      local_138[0] = 0;
      (**(code **)(*param_2 + 0x18))(param_2,local_138,1);
      uVar4 = local_138[0];
    }
    else {
      uVar4 = (*pcVar1)();
    }
    switch(uVar4) {
    case 1:
      uVar6 = (**(code **)(*param_2 + 0x40))(param_2);
      *param_1 = &PTR_vftable_18262b570;
      *(undefined4 *)(param_1 + 1) = uVar6;
      break;
    case 2:
      *param_1 = &PTR_vftable_18262b550;
      *(undefined1 *)(param_1 + 1) = 1;
      break;
    case 3:
      *param_1 = &PTR_vftable_18262b550;
      *(undefined1 *)(param_1 + 1) = 0;
      break;
    case 4:
      lVar2 = *param_2;
      if (*(code **)(lVar2 + 0x70) == FUN_1812359e0) {
        if (*(code **)(lVar2 + 0x50) == FUN_181235bf0) {
          iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_58,8);
          uVar8 = 0;
          if (iVar5 == 8) {
            uVar8 = local_58;
          }
          *param_1 = &PTR_vftable_18262b4d8;
          param_1[1] = uVar8;
        }
        else {
          uVar8 = (**(code **)(lVar2 + 0x50))(param_2);
          *param_1 = &PTR_vftable_18262b4d8;
          param_1[1] = uVar8;
        }
      }
      else {
        uVar8 = (**(code **)(lVar2 + 0x70))(param_2);
        *param_1 = &PTR_vftable_18262b4d8;
        param_1[1] = uVar8;
      }
      break;
    case 5:
      FUN_18124a4b0(local_108,0x100);
      FUN_181234ba0(local_108,param_2,(longlong)(iVar5 + -1));
      if (local_f8 != (longlong *)0x0) {
        if (local_d0 < (ulonglong)local_f8[1]) {
          *(undefined1 *)(local_d0 + *local_f8) = 0;
        }
        local_e0 = (char *)*local_f8;
      }
      if ((local_e0 == (char *)0x0) || (*local_e0 == '\0')) {
        puVar7 = (undefined4 *)&DAT_1821dbf98;
      }
      else {
        uVar10 = local_d0 + 4 & 0xfffffffffffffffc;
        puVar7 = (undefined4 *)thunk_FUN_1811316e0(uVar10 + 0x17);
        LOCK();
        *puVar7 = 0;
        UNLOCK();
        *(ulonglong *)(puVar7 + 2) = uVar10;
        puVar7 = puVar7 + 4;
        memcpy(puVar7,local_e0,local_d0);
        *(undefined1 *)((longlong)puVar7 + local_d0) = 0;
      }
      *param_1 = &PTR_vftable_18262b560;
      param_1[1] = puVar7;
      local_120 = (undefined8 *)puVar7;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar3 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar11 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar3;
        if (bVar11) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      FUN_18124a420(local_108);
      break;
    case 6:
      uVar8 = (**(code **)(*param_2 + 0x50))(param_2);
      *param_1 = &PTR_vftable_18262b568;
      param_1[1] = uVar8;
      break;
    case 7:
      local_50 = &PTR_vftable_18262b558;
      uVar8 = FUN_181227270(&local_50);
      iVar5 = (**(code **)(*param_2 + 0x80))(param_2);
      while (iVar5 = iVar5 + -1, -1 < iVar5) {
        uVar9 = FUN_181226cb0(&local_40,param_2);
        FUN_180487670(uVar8,uVar9);
        (**(code **)(*local_40 + 0xb0))(local_40,local_38);
      }
      *param_1 = local_50;
      param_1[1] = local_48;
      local_50 = &PTR_vftable_18262b558;
      (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_48);
      break;
    case 8:
      local_128 = (longlong)iVar5 + -1;
      local_130 = 0;
      if (local_128 != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)0x0);
      }
      local_128 = 0;
      if ((1 < iVar5) && (iVar5 = (**(code **)(*param_2 + 0x18))(param_2,0,iVar5 + -1), iVar5 != 0))
      {
        if (iVar5 != 0) {
                    /* WARNING: Subroutine does not return */
          free((void *)0x0);
        }
                    /* WARNING: Subroutine does not return */
        free((void *)0x0);
      }
      *param_1 = &PTR_vftable_18262b4e0;
      local_120 = (undefined8 *)FUN_1811316e0(0x10);
      *local_120 = 0;
      local_120[1] = 0;
      param_1[1] = local_120;
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    default:
      (**(code **)(*param_2 + 0xb8))(param_2,(longlong)(iVar5 + -1));
      goto LAB_18122710a;
    }
  }
}



############ FUN_ 18055aaf0 size=636 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18055aaf0(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  char cVar4;
  longlong *plVar5;
  undefined8 uVar6;
  HWND hWnd;
  longlong *plVar7;
  undefined1 auStackY_108 [32];
  longlong local_b0;
  undefined1 local_a8 [8];
  undefined8 local_a0;
  tagRECT local_98;
  tagRECT local_88;
  ulonglong local_78;
  
  local_a0 = 0xfffffffffffffffe;
  local_78 = DAT_182615970 ^ (ulonglong)auStackY_108;
  plVar5 = DAT_182673f20;
  while( true ) {
    if (plVar5 == DAT_182673f20 + DAT_182673f2c) {
      DefWindowProcW(param_1,param_2,param_3,param_4);
    }
    lVar2 = *plVar5;
    if ((*(longlong *)(lVar2 + 0xb0) != 0) &&
       (*(HWND *)(*(longlong *)(lVar2 + 0xb0) + 0x50) == param_1)) break;
    plVar5 = plVar5 + 1;
  }
  if ((param_2 - 0x200 < 10) && (cVar4 = FUN_181345240(lVar2), cVar4 != '\0')) {
    if ((*(byte *)(lVar2 + 0xa8) & 1) == 0) {
      if (*(longlong *)(lVar2 + 0x18) == 0) goto LAB_18055ad25;
      plVar5 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar5 = (longlong *)FUN_1812d2bd0(lVar2);
    }
    if (plVar5 != (longlong *)0x0) {
      switch(param_2 - 0x200) {
      case 0:
      case 1:
      case 2:
      case 4:
      case 5:
      case 7:
      case 8:
        GetWindowRect(param_1,&local_88);
        if ((undefined **)*plVar5 == juce::HWNDComponentPeer::vftable) {
          hWnd = (HWND)plVar5[0x11];
        }
        else {
          hWnd = (HWND)(*(code *)((undefined **)*plVar5)[1])(plVar5);
        }
        GetWindowRect(hWnd,&local_98);
        uVar6 = FUN_1812c6c70();
        FUN_1812d0cb0(local_a8);
        if (DAT_182673700 == 0) {
          local_b0 = FUN_1811316e0(0x130);
          DAT_182673700 = FUN_18133c6c0(local_b0);
        }
        lVar3 = *(longlong *)(DAT_182673700 + 0x30);
        plVar7 = *(longlong **)(lVar3 + 0x28);
        plVar1 = plVar7 + *(int *)(lVar3 + 0x34);
        for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
          if (*(int *)(*plVar7 + 0x14) == 0) {
            local_b0 = *plVar7;
            FUN_18133dc10(&local_b0,plVar5,
                          CONCAT44((float)(((short)((ulonglong)param_4 >> 0x10) - local_98.top) +
                                          local_88.top),
                                   (float)(((short)param_4 - local_98.left) + local_88.left)),uVar6)
            ;
            goto switchD_18055abd6_caseD_3;
          }
        }
        FUN_1804e6f50(lVar3,0,0);
      }
switchD_18055abd6_caseD_3:
      if (*(char *)(lVar2 + 0xb8) == '\0') {
      }
    }
  }
LAB_18055ad25:
  CallWindowProcW(*(WNDPROC *)(*(longlong *)(lVar2 + 0xb0) + 0x70),param_1,param_2,param_3,param_4);
}



############ FUN_ 1813bddc0 size=450 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813bddc0(longlong *param_1,HWND param_2,undefined4 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined4 *puVar4;
  HWND hWnd;
  longlong *plVar5;
  float fVar6;
  float fVar7;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  undefined4 local_a0;
  undefined4 local_98;
  undefined8 *local_90;
  undefined8 local_88;
  undefined4 local_80;
  float local_78;
  float fStack_74;
  longlong local_70;
  undefined1 local_68 [8];
  undefined8 local_60;
  tagRECT local_58;
  tagRECT local_48;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  switch(param_3) {
  case 0x200:
  case 0x201:
  case 0x202:
  case 0x204:
  case 0x205:
  case 0x207:
  case 0x208:
    GetWindowRect(param_2,&local_48);
    if ((undefined **)*param_1 == juce::HWNDComponentPeer::vftable) {
      hWnd = (HWND)param_1[0x11];
    }
    else {
      hWnd = (HWND)(*(code *)((undefined **)*param_1)[1])(param_1);
    }
    GetWindowRect(hWnd,&local_58);
    local_88 = 0;
    local_80 = 0;
    fVar7 = (float)(((short)((ulonglong)param_4 >> 0x10) - local_58.top) + local_48.top);
    fVar6 = (float)(((short)param_4 - local_58.left) + local_48.left);
    uVar3 = FUN_1812c6c70();
    puVar4 = (undefined4 *)FUN_1812d0cb0(local_68);
    local_a8 = *puVar4;
    local_78 = fVar6;
    fStack_74 = fVar7;
    if (DAT_182673700 == 0) {
      local_70 = FUN_1811316e0(0x130);
      DAT_182673700 = FUN_18133c6c0(local_70);
    }
    lVar2 = *(longlong *)(DAT_182673700 + 0x30);
    plVar5 = *(longlong **)(lVar2 + 0x28);
    plVar1 = plVar5 + *(int *)(lVar2 + 0x34);
    for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
      if (*(int *)(*plVar5 + 0x14) == 0) {
        local_90 = &local_88;
        local_98 = 0;
        local_a0 = 0;
        local_70 = *plVar5;
        FUN_18133dc10(&local_70,param_1,CONCAT44(fStack_74,local_78),uVar3);
      }
    }
    FUN_1804e6f50(lVar2,0,0);
  }
}



############ FUN_ 18060cee0 size=168 ############

longlong FUN_18060cee0(longlong param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined1 local_20 [24];
  
  uVar2 = FUN_1811316e0(0x58);
  *(undefined8 *)(param_1 + 8) = uVar2;
  lVar1 = param_1 + 0x11;
  FUN_180619400(lVar1);
  FUN_1806194a0(lVar1);
  *(undefined8 *)(param_1 + 0x18) = 0;
  lVar3 = 0;
  if (lVar1 != 0) {
    lVar3 = param_1;
  }
  uVar2 = *(undefined8 *)(lVar3 + 8);
  while (*(longlong *)(param_2 + 0x10) != *(longlong *)(param_3 + 0x10)) {
    uVar4 = FUN_180489600(param_2);
    puVar5 = (undefined8 *)FUN_18061d220(param_1,local_20,uVar4,uVar2);
    uVar2 = *puVar5;
    *(longlong *)(param_2 + 0x10) = *(longlong *)(param_2 + 0x10) + 1;
  }
  return param_1;
}



############ FUN_ 18061d220 size=138 ############

undefined8 *
FUN_18061d220(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  void *_Memory;
  void *pvVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  _Memory = (void *)FUN_1811316e0(0x58);
  pvVar1 = (void *)FUN_18061d2c0(param_1 + 0x11,param_3,param_4,_Memory,_Memory,uVar2);
  if (pvVar1 == _Memory) {
    *(longlong *)(param_1 + 0x18) = *(longlong *)(param_1 + 0x18) + 1;
    *param_2 = pvVar1;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18060f250 size=570 ############

longlong FUN_18060f250(longlong param_1,ulonglong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  ulonglong *puVar6;
  ulonglong uVar7;
  ulonglong *puVar8;
  ulonglong *puVar9;
  ulonglong *puVar10;
  ulonglong *puVar11;
  undefined8 uVar12;
  undefined1 local_78 [8];
  ulonglong local_70;
  ulonglong local_60;
  ulonglong *local_58;
  undefined8 local_50;
  ulonglong local_48;
  undefined8 local_40;
  undefined1 local_38;
  
  uVar12 = 0xfffffffffffffffe;
  uVar4 = FUN_1811316e0(0x58);
  *(undefined8 *)(param_1 + 8) = uVar4;
  puVar11 = (ulonglong *)0x0;
  *(undefined8 *)(param_1 + 0x18) = 0;
  uVar2 = param_2[1];
  lVar1 = (longlong)param_2 + 0x11;
  puVar10 = param_2;
  if (lVar1 == 0) {
    puVar10 = puVar11;
  }
  uVar3 = puVar10[3];
  puVar10 = puVar11;
  local_70 = uVar3;
  local_60 = uVar3;
  if (uVar3 != 0) {
    uVar5 = uVar3 << 4;
    if (uVar3 < 0x1000000000000000) {
      if (uVar5 < 0x1000) {
        if (uVar5 != 0) {
          puVar10 = (ulonglong *)FUN_1811316e0(uVar5);
        }
        goto LAB_18060f32c;
      }
    }
    else {
      uVar5 = 0xffffffffffffffff;
    }
    uVar7 = uVar5 + 0x27;
    if (uVar7 <= uVar5) {
      uVar7 = 0xffffffffffffffff;
    }
    uVar5 = FUN_1811316e0(uVar7);
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    puVar10 = (ulonglong *)(uVar5 + 0x27 & 0xffffffffffffffe0);
    puVar10[-1] = uVar5;
  }
LAB_18060f32c:
  local_50 = 0;
  local_38 = 0;
  puVar6 = param_2;
  if (lVar1 == 0) {
    puVar6 = puVar11;
  }
  puVar9 = puVar11;
  if (*(longlong *)(puVar6[1] + 0x48) != 0) {
    puVar9 = (ulonglong *)(*(longlong *)(puVar6[1] + 0x48) + -0x40);
  }
  puVar6 = param_2;
  if (lVar1 == 0) {
    puVar6 = puVar11;
  }
  puVar6 = (ulonglong *)puVar6[1];
  local_48 = uVar2;
  local_40 = uVar4;
  while (local_58 = puVar10, puVar9 != puVar6) {
    FUN_180618ce0(local_78,puVar9);
    puVar8 = puVar9 + 8;
    if (puVar9 == (ulonglong *)0x0) {
      puVar8 = puVar11;
    }
    puVar10 = (ulonglong *)puVar8[2];
    if (puVar10 == (ulonglong *)0x0) {
      puVar10 = (ulonglong *)(*puVar8 & 0xfffffffffffffffe);
      if (puVar8 == (ulonglong *)puVar10[2]) {
        do {
          puVar8 = puVar10;
          puVar10 = (ulonglong *)(*puVar8 & 0xfffffffffffffffe);
        } while (puVar8 == (ulonglong *)puVar10[2]);
      }
      if ((ulonglong *)puVar8[2] != puVar10) {
        puVar8 = puVar10;
      }
    }
    else {
      for (puVar9 = (ulonglong *)puVar10[1]; puVar8 = puVar10, puVar9 != (ulonglong *)0x0;
          puVar9 = (ulonglong *)puVar9[1]) {
        puVar10 = puVar9;
      }
    }
    uVar3 = local_60;
    puVar9 = puVar11;
    puVar10 = local_58;
    if (puVar8 != (ulonglong *)0x0) {
      puVar9 = puVar8 + -8;
    }
  }
  FUN_180619020(param_1 + 0x11,lVar1,local_78,param_4,uVar12);
  if (lVar1 != 0) {
    puVar11 = param_2;
  }
  *(ulonglong *)(param_1 + 0x18) = puVar11[3];
  if (uVar3 == 0) {
    return param_1;
  }
  puVar11 = puVar10;
  if ((0xfff < uVar3 << 4) &&
     (puVar11 = (ulonglong *)puVar10[-1],
     0x1f < (ulonglong)((longlong)puVar10 + (-8 - (longlong)puVar11)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(puVar11);
}



############ FUN_ 180618ce0 size=162 ############

void FUN_180618ce0(ulonglong param_1,undefined4 *param_2)

{
  longlong lVar1;
  undefined4 *puVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  *(undefined4 **)(*(longlong *)(param_1 + 0x20) + *(longlong *)(param_1 + 0x28) * 0x10) = param_2;
  uVar3 = FUN_1811316e0(0x58);
  lVar1 = *(longlong *)(param_1 + 0x20);
  lVar4 = *(longlong *)(param_1 + 0x28);
  *(undefined8 *)(lVar1 + 8 + lVar4 * 0x10) = uVar3;
  puVar2 = *(undefined4 **)
            (*(longlong *)(param_1 + 0x20) + 8 + *(longlong *)(param_1 + 0x28) * 0x10);
  *puVar2 = *param_2;
  FUN_1805a4070(puVar2 + 2,param_2 + 2,lVar4 * 2,lVar1,uVar5);
  *(longlong *)(param_1 + 0x28) = *(longlong *)(param_1 + 0x28) + 1;
  if (*(longlong *)(param_1 + 0x28) == *(longlong *)(param_1 + 8)) {
    lVar1 = *(longlong *)(param_1 + 0x20);
    lVar4 = *(longlong *)(param_1 + 8) * 0x10 + lVar1;
    FUN_18060e050(lVar1,lVar4,lVar4 - lVar1 >> 4,param_1 & 0xff);
  }
  return;
}



############ FUN_ 1807ea870 size=191 ############

longlong FUN_1807ea870(longlong param_1,undefined4 *param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  
  uVar2 = *param_2;
  uVar3 = *param_3;
  if (((*(char *)(param_1 + 0x18) + (char)*(longlong *)(param_1 + 0x20) & 1U) == 0) &&
     (*(ulonglong *)(param_1 + 0x10) <= *(longlong *)(param_1 + 0x20) + 2U >> 1)) {
    FUN_1807ec1f0(param_1,1);
  }
  *(ulonglong *)(param_1 + 0x18) =
       *(ulonglong *)(param_1 + 0x18) & *(longlong *)(param_1 + 0x10) * 2 - 1U;
  uVar5 = *(longlong *)(param_1 + 0x18) + *(longlong *)(param_1 + 0x20);
  lVar1 = (uVar5 >> 1 & *(longlong *)(param_1 + 0x10) - 1U) * 8;
  if (*(longlong *)(lVar1 + *(longlong *)(param_1 + 8)) == 0) {
    uVar4 = FUN_1811316e0(0x10);
    *(undefined8 *)(lVar1 + *(longlong *)(param_1 + 8)) = uVar4;
  }
  *(ulonglong *)
   (*(longlong *)(*(longlong *)(param_1 + 8) + lVar1) + (ulonglong)((uint)uVar5 & 1) * 8) =
       CONCAT44(uVar3,uVar2);
  *(longlong *)(param_1 + 0x20) = *(longlong *)(param_1 + 0x20) + 1;
  return param_1;
}



############ FUN_ 180527d40 size=185 ############

void FUN_180527d40(longlong *param_1,ulonglong param_2)

{
  void *_Dst;
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  uVar5 = 0;
  if (0 < (int)uVar1) {
    uVar6 = uVar1;
    do {
      if (param_2 == *(ulonglong *)(*param_1 + (longlong)(int)uVar5 * 8)) goto LAB_180527d9a;
      uVar3 = (int)(uVar6 + uVar5) / 2;
      if (uVar3 == uVar5) break;
      if (param_2 < *(ulonglong *)(*param_1 + (longlong)(int)uVar3 * 8)) {
        uVar6 = uVar3;
        uVar3 = uVar5;
      }
      uVar5 = uVar3;
    } while ((int)uVar5 < (int)uVar6);
  }
  uVar5 = 0xffffffff;
LAB_180527d9a:
  if (uVar5 < uVar1) {
    _Dst = (void *)(*param_1 + (longlong)(int)uVar5 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)(int)((uVar1 - uVar5) + -1) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    iVar2 = *(int *)((longlong)param_1 + 0xc);
    iVar4 = 0;
    if (0 < iVar2 * 2) {
      iVar4 = iVar2 * 2;
    }
    if (iVar4 < (int)param_1[1]) {
      if (iVar2 < 8) {
        iVar2 = 8;
      }
      if (iVar2 < (int)param_1[1]) {
        FUN_18047cb30(param_1);
      }
    }
  }
  return;
}



############ FUN_ 1812a7170 size=186 ############

void FUN_1812a7170(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  uint uVar2;
  longlong *plVar3;
  longlong lVar4;
  int iVar5;
  
  *param_1 = juce::DeletedAtShutdown::vftable;
  do {
    LOCK();
    uVar2 = DAT_182673a34 & 1;
    DAT_182673a34 = DAT_182673a34 | 1;
    UNLOCK();
  } while (uVar2 != 0);
  plVar3 = (longlong *)FUN_1812a6d90();
  iVar5 = 0;
  lVar4 = 0;
  iVar1 = *(int *)((longlong)plVar3 + 0xc);
  if (0 < iVar1) {
    do {
      if (param_1 == *(undefined8 **)(*plVar3 + lVar4 * 8)) {
        _Dst = (void *)(*plVar3 + (longlong)iVar5 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar5) + -1) << 3);
        *(int *)((longlong)plVar3 + 0xc) = *(int *)((longlong)plVar3 + 0xc) + -1;
        iVar1 = *(int *)((longlong)plVar3 + 0xc);
        iVar5 = 0;
        if (0 < iVar1 * 2) {
          iVar5 = iVar1 * 2;
        }
        if (iVar5 < (int)plVar3[1]) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < (int)plVar3[1]) {
            FUN_18047cb30(plVar3);
          }
        }
        break;
      }
      iVar5 = iVar5 + 1;
      lVar4 = lVar4 + 1;
    } while (lVar4 < iVar1);
  }
  LOCK();
  DAT_182673a34 = 0;
  UNLOCK();
  return;
}



############ FUN_ 181338d00 size=425 ############

void FUN_181338d00(longlong param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  uint uVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong *_Memory;
  longlong *local_40;
  uint local_38;
  uint local_34;
  
  plVar6 = (longlong *)0x0;
  local_40 = (longlong *)0x0;
  local_38 = 0;
  iVar4 = 0;
  local_34 = 0;
  plVar7 = *(longlong **)(param_1 + 0x40);
  plVar10 = (longlong *)
            ((ulonglong)((longlong)(plVar7 + *(int *)(param_1 + 0x4c)) + (7 - (longlong)plVar7)) >>
            3);
  if (plVar7 + *(int *)(param_1 + 0x4c) < plVar7) {
    plVar10 = plVar6;
  }
  plVar5 = plVar6;
  plVar9 = plVar6;
  plVar11 = plVar6;
  _Memory = plVar6;
  if (plVar10 != (longlong *)0x0) {
    do {
      uVar8 = (uint)plVar9;
      lVar2 = *plVar7;
      if (((*(byte *)(lVar2 + 0xa8) >> 1 & 1) != 0) && ((*(byte *)(lVar2 + 0xa9) & 0x10) == 0)) {
        if (*(longlong *)(lVar2 + 0x18) != 0) {
          cVar3 = FUN_18133eaa0();
          uVar8 = (uint)plVar9;
          if (cVar3 == '\0') goto LAB_181338dcd;
        }
        iVar4 = uVar8 + 1;
        if ((int)plVar5 < iVar4) {
          if (iVar4 < 0) {
            iVar4 = uVar8 + 2;
          }
          FUN_18047cb30(&local_40,uVar8 + 9 + (iVar4 >> 1) & 0xfffffff8);
          plVar5 = (longlong *)(ulonglong)local_38;
          _Memory = local_40;
          uVar8 = local_34;
        }
        local_34 = uVar8 + 1;
        plVar9 = (longlong *)(ulonglong)local_34;
        _Memory[(int)uVar8] = lVar2;
      }
LAB_181338dcd:
      iVar4 = (int)plVar9;
      plVar7 = plVar7 + 1;
      plVar11 = (longlong *)((longlong)plVar11 + 1);
    } while (plVar11 != plVar10);
  }
  plVar7 = _Memory + iVar4;
  FUN_18051eec0(_Memory,plVar7);
  plVar10 = (longlong *)((ulonglong)((longlong)plVar7 + (7 - (longlong)_Memory)) >> 3);
  if (plVar7 < _Memory) {
    plVar10 = plVar6;
  }
  plVar7 = _Memory;
  if (plVar10 != (longlong *)0x0) {
    do {
      lVar2 = *plVar7;
      if (((*(byte *)(lVar2 + 0xa8) & 0x20) != 0) && ((*(byte *)(lVar2 + 0xa9) & 0x10) == 0)) {
        iVar1 = *(int *)((longlong)param_2 + 0xc);
        iVar4 = iVar1 + 1;
        if ((int)param_2[1] < iVar4) {
          if (iVar4 < 0) {
            iVar4 = iVar1 + 2;
          }
          FUN_18047cb30(param_2,iVar1 + 9 + (iVar4 >> 1) & 0xfffffff8);
        }
        iVar4 = *(int *)((longlong)param_2 + 0xc);
        *(int *)((longlong)param_2 + 0xc) = iVar4 + 1;
        *(longlong *)(*param_2 + (longlong)iVar4 * 8) = lVar2;
      }
      if (((*(byte *)(lVar2 + 0xa8) >> 6 & 1) == 0) && (*(int *)(lVar2 + 0x4c) != 0)) {
        FUN_181338d00(lVar2,param_2);
      }
      plVar6 = (longlong *)((longlong)plVar6 + 1);
      plVar7 = plVar7 + 1;
    } while (plVar6 != plVar10);
  }
                    /* WARNING: Could not recover jumptable at 0x000181338ea2. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(_Memory);
  return;
}



############ FUN_ 1813514c0 size=167 ############

void FUN_1813514c0(longlong *param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0x14);
  iVar3 = 0;
  lVar2 = 0;
  if (0 < iVar1) {
    do {
      if (param_2 == *(longlong *)(param_1[1] + lVar2 * 8)) {
        _Dst = (void *)(param_1[1] + (longlong)iVar3 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3);
        *(int *)((longlong)param_1 + 0x14) = *(int *)((longlong)param_1 + 0x14) + -1;
        iVar1 = *(int *)((longlong)param_1 + 0x14);
        iVar3 = 0;
        if (0 < iVar1 * 2) {
          iVar3 = iVar1 * 2;
        }
        if (iVar3 < (int)param_1[2]) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < (int)param_1[2]) {
            FUN_18047cb30(param_1 + 1);
          }
        }
        break;
      }
      iVar3 = iVar3 + 1;
      lVar2 = lVar2 + 1;
    } while (lVar2 < iVar1);
  }
  if (*(int *)((longlong)param_1 + 0x14) == 0) {
    FUN_180527d40(*param_1 + 0x20,param_1);
  }
  return;
}



############ FUN_ 180527e00 size=264 ############

longlong FUN_180527e00(longlong *param_1,ulonglong *param_2)

{
  uint uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint uVar4;
  longlong lVar5;
  void *_Src;
  ulonglong *puVar6;
  uint uVar7;
  uint uVar8;
  bool bVar9;
  
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  uVar7 = 0;
  if (0 < (int)uVar1) {
    lVar5 = *param_1;
    uVar2 = *param_2;
    uVar8 = uVar1;
    do {
      if (uVar2 == *(ulonglong *)(lVar5 + (longlong)(int)uVar7 * 8)) {
        *(ulonglong *)(lVar5 + (longlong)(int)uVar7 * 8) = uVar2;
        return (ulonglong)(uint7)(int7)(int3)(uVar7 >> 8) << 8;
      }
      uVar4 = (int)(uVar8 + uVar7) / 2;
      bVar9 = *(ulonglong *)(lVar5 + (longlong)(int)uVar4 * 8) <= uVar2;
      if (uVar4 == uVar7) {
        if (bVar9) {
          uVar7 = uVar7 + 1;
        }
        break;
      }
      uVar3 = uVar4;
      if (!bVar9) {
        uVar3 = uVar7;
        uVar8 = uVar4;
      }
      uVar7 = uVar3;
    } while ((int)uVar7 < (int)uVar8);
  }
  uVar2 = *param_2;
  if ((int)param_1[1] < (int)(uVar1 + 1)) {
    FUN_18047cb30(param_1,uVar1 + 9 + (int)(uVar1 + 1) / 2 & 0xfffffff8);
  }
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  if (uVar7 < uVar1) {
    _Src = (void *)(*param_1 + (longlong)(int)uVar7 * 8);
    memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - uVar7) << 3);
    lVar5 = *param_1;
    puVar6 = (ulonglong *)((longlong)(int)uVar7 * 8 + lVar5);
  }
  else {
    lVar5 = *param_1;
    puVar6 = (ulonglong *)(lVar5 + (longlong)(int)uVar1 * 8);
  }
  *puVar6 = uVar2;
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  return CONCAT71((int7)((ulonglong)lVar5 >> 8),1);
}



############ FUN_ 181349e00 size=360 ############

void FUN_181349e00(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  int iVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  
  *param_1 = juce::Label::vftable;
  param_1[0x16] = juce::Label::vftable;
  param_1[0x18] = juce::Label::vftable;
  param_1[0x19] = juce::Label::vftable;
  param_1[0x1a] = juce::Label::vftable;
  FUN_1813514c0(param_1 + 0x33);
  lVar3 = param_1[0x3c];
  uVar5 = 0;
  if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x10) != 0)) {
    uVar8 = uVar5;
    if (lVar3 != 0) {
      uVar8 = *(ulonglong *)(lVar3 + 0x10);
    }
    iVar2 = *(int *)(uVar8 + 0x8c);
    lVar3 = *(longlong *)(uVar8 + 0x80);
    uVar7 = uVar5;
    if (0 < iVar2) {
      do {
        iVar6 = (int)uVar7;
        if (param_1 + 0x19 == *(undefined8 **)(lVar3 + uVar5 * 8)) {
          _Dst = (void *)(lVar3 + (longlong)iVar6 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar6) + -1) << 3);
          *(int *)(uVar8 + 0x8c) = *(int *)(uVar8 + 0x8c) + -1;
          iVar2 = *(int *)(uVar8 + 0x8c);
          iVar6 = 0;
          if (0 < iVar2 * 2) {
            iVar6 = iVar2 * 2;
          }
          if (iVar6 < *(int *)(uVar8 + 0x88)) {
            if (iVar2 < 8) {
              iVar2 = 8;
            }
            if (iVar2 < *(int *)(uVar8 + 0x88)) {
              FUN_18047cb30((longlong *)(uVar8 + 0x80));
            }
          }
          break;
        }
        uVar7 = (ulonglong)(iVar6 + 1);
        uVar5 = uVar5 + 1;
      } while ((longlong)uVar5 < (longlong)iVar2);
    }
  }
  puVar4 = (undefined8 *)param_1[0x39];
  param_1[0x39] = 0;
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  puVar4 = (undefined8 *)param_1[0x3c];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  *(undefined4 *)((longlong)param_1 + 0x1dc) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x3a]);
}



############ FUN_ 181337760 size=375 ############

void FUN_181337760(longlong *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  undefined8 *puVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  int iVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  
  *param_1 = (longlong)juce::Button::vftable;
  param_1[0x16] = (longlong)juce::Button::vftable;
  uVar8 = 0;
  *(undefined4 *)((longlong)param_1 + 0x14c) = 0;
  if ((int)param_1[0x29] != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x28]);
  }
  *(undefined4 *)(param_1 + 0x29) = 0;
  (**(code **)(*param_1 + 0x88))(param_1);
  lVar2 = param_1[0x30];
  if (lVar2 != 0) {
    uVar5 = uVar8;
    if (param_1[0x2e] != 0) {
      uVar5 = param_1[0x2e] + 0x18;
    }
    iVar1 = *(int *)(lVar2 + 0x34);
    uVar4 = uVar8;
    uVar7 = uVar8;
    if (0 < iVar1) {
      do {
        iVar6 = (int)uVar7;
        if (uVar5 == *(ulonglong *)(*(longlong *)(lVar2 + 0x28) + uVar4 * 8)) {
          _Dst = (void *)(*(longlong *)(lVar2 + 0x28) + (longlong)iVar6 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar6) + -1) << 3);
          *(int *)(lVar2 + 0x34) = *(int *)(lVar2 + 0x34) + -1;
          iVar1 = *(int *)(lVar2 + 0x34);
          iVar6 = 0;
          if (0 < iVar1 * 2) {
            iVar6 = iVar1 * 2;
          }
          if (iVar6 < *(int *)(lVar2 + 0x30)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar2 + 0x30)) {
              FUN_18047cb30(lVar2 + 0x28);
            }
          }
          break;
        }
        uVar7 = (ulonglong)(iVar6 + 1);
        uVar4 = uVar4 + 1;
      } while ((longlong)uVar4 < (longlong)iVar1);
    }
  }
  uVar5 = param_1[0x2e] + 0x20;
  if (param_1[0x2e] == 0) {
    uVar5 = uVar8;
  }
  FUN_1813514c0(param_1 + 0x35,uVar5);
  puVar3 = (undefined8 *)param_1[0x2e];
  param_1[0x2e] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  FUN_181351c00(param_1 + 0x35);
  puVar3 = (undefined8 *)param_1[0x2e];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  *(undefined4 *)((longlong)param_1 + 0x16c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x2c]);
}



############ FUN_ 181322ab0 size=209 ############

void FUN_181322ab0(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  
  *param_1 = juce::ComponentMovementWatcher::vftable;
  lVar5 = param_1[1];
  if ((lVar5 != 0) && (*(longlong *)(lVar5 + 0x10) != 0)) {
    if (lVar5 == 0) {
      lVar5 = 0;
    }
    else {
      lVar5 = *(longlong *)(lVar5 + 0x10);
    }
    iVar4 = 0;
    lVar3 = 0;
    iVar1 = *(int *)(lVar5 + 0x8c);
    lVar2 = *(longlong *)(lVar5 + 0x80);
    if (0 < iVar1) {
      do {
        if (param_1 == *(undefined8 **)(lVar2 + lVar3 * 8)) {
          _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
          *(int *)(lVar5 + 0x8c) = *(int *)(lVar5 + 0x8c) + -1;
          iVar1 = *(int *)(lVar5 + 0x8c);
          iVar4 = 0;
          if (0 < iVar1 * 2) {
            iVar4 = iVar1 * 2;
          }
          if (iVar4 < *(int *)(lVar5 + 0x88)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar5 + 0x88)) {
              FUN_18047cb30((longlong *)(lVar5 + 0x80));
            }
          }
          break;
        }
        iVar4 = iVar4 + 1;
        lVar3 = lVar3 + 1;
      } while (lVar3 < iVar1);
    }
  }
  FUN_1813224b0(param_1);
  *(undefined4 *)((longlong)param_1 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 1813224b0 size=293 ############

void FUN_1813224b0(longlong param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  ulonglong uVar4;
  int iVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  
  uVar10 = 0;
  plVar8 = *(longlong **)(param_1 + 0x18);
  uVar9 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0x24)) + (7 - (longlong)plVar8)) >> 3;
  if (plVar8 + *(int *)(param_1 + 0x24) < plVar8) {
    uVar9 = uVar10;
  }
  if (uVar9 != 0) {
    uVar7 = uVar10;
    do {
      lVar2 = *plVar8;
      iVar1 = *(int *)(lVar2 + 0x8c);
      lVar3 = *(longlong *)(lVar2 + 0x80);
      uVar4 = uVar10;
      uVar6 = uVar10;
      if (0 < iVar1) {
        do {
          iVar5 = (int)uVar6;
          if (param_1 == *(longlong *)(lVar3 + uVar4 * 8)) {
            _Dst = (void *)(lVar3 + (longlong)iVar5 * 8);
            memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar5) + -1) << 3);
            *(int *)(lVar2 + 0x8c) = *(int *)(lVar2 + 0x8c) + -1;
            iVar1 = *(int *)(lVar2 + 0x8c);
            iVar5 = 0;
            if (0 < iVar1 * 2) {
              iVar5 = iVar1 * 2;
            }
            if (iVar5 < *(int *)(lVar2 + 0x88)) {
              if (iVar1 < 8) {
                iVar1 = 8;
              }
              if (iVar1 < *(int *)(lVar2 + 0x88)) {
                FUN_18047cb30((longlong *)(lVar2 + 0x80));
              }
            }
            break;
          }
          uVar6 = (ulonglong)(iVar5 + 1);
          uVar4 = uVar4 + 1;
        } while ((longlong)uVar4 < (longlong)iVar1);
      }
      plVar8 = plVar8 + 1;
      uVar7 = uVar7 + 1;
    } while (uVar7 != uVar9);
  }
  *(undefined4 *)(param_1 + 0x24) = 0;
  if (*(int *)(param_1 + 0x20) == 0) {
    *(undefined4 *)(param_1 + 0x20) = 0;
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x18));
}



############ FUN_ 1813c8030 size=248 ############

void FUN_1813c8030(longlong *param_1,char param_2)

{
  longlong *plVar1;
  void *_Dst;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  
  lVar2 = *param_1;
  *(char *)((longlong)param_1 + 0x14) = param_2;
  if (lVar2 != 0) {
    plVar1 = (longlong *)(lVar2 + 0x10);
    if (param_2 != '\0') {
      iVar4 = *(int *)(lVar2 + 0x1c) + 1;
      if (*(int *)(lVar2 + 0x18) < iVar4) {
        FUN_18047cb30(plVar1,*(int *)(lVar2 + 0x1c) + 9 + iVar4 / 2 & 0xfffffff8);
      }
      iVar4 = *(int *)(lVar2 + 0x1c);
      *(int *)(lVar2 + 0x1c) = iVar4 + 1;
      *(longlong **)(*plVar1 + (longlong)iVar4 * 8) = param_1;
      return;
    }
    iVar4 = *(int *)(lVar2 + 0x1c);
    iVar5 = 0;
    lVar3 = 0;
    if (0 < iVar4) {
      while (param_1 != *(longlong **)(*plVar1 + lVar3 * 8)) {
        iVar5 = iVar5 + 1;
        lVar3 = lVar3 + 1;
        if (iVar4 <= lVar3) {
          return;
        }
      }
      _Dst = (void *)(*plVar1 + (longlong)iVar5 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar4 - iVar5) + -1) << 3);
      *(int *)(lVar2 + 0x1c) = *(int *)(lVar2 + 0x1c) + -1;
      iVar4 = *(int *)(lVar2 + 0x1c);
      iVar5 = 0;
      if (0 < iVar4 * 2) {
        iVar5 = iVar4 * 2;
      }
      if (iVar5 < *(int *)(lVar2 + 0x18)) {
        if (iVar4 < 8) {
          iVar4 = 8;
        }
        if (iVar4 < *(int *)(lVar2 + 0x18)) {
          FUN_18047cb30(plVar1);
        }
      }
    }
  }
  return;
}



############ FUN_ 1812bda70 size=272 ############

void FUN_1812bda70(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  int iVar6;
  
  *param_1 = juce::AudioProcessorEditor::vftable;
  iVar2 = *(int *)((longlong)param_1 + 0x8c);
  iVar6 = 0;
  lVar3 = param_1[0x10];
  lVar5 = 0;
  if (0 < iVar2) {
    do {
      if (param_1[0x18] == *(longlong *)(lVar3 + lVar5 * 8)) {
        _Dst = (void *)(lVar3 + (longlong)iVar6 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar6) + -1) << 3);
        *(int *)((longlong)param_1 + 0x8c) = *(int *)((longlong)param_1 + 0x8c) + -1;
        iVar2 = *(int *)((longlong)param_1 + 0x8c);
        iVar6 = 0;
        if (0 < iVar2 * 2) {
          iVar6 = iVar2 * 2;
        }
        if (iVar6 < *(int *)(param_1 + 0x11)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(param_1 + 0x11)) {
            FUN_18047cb30(param_1 + 0x10);
          }
        }
        break;
      }
      iVar6 = iVar6 + 1;
      lVar5 = lVar5 + 1;
    } while (lVar5 < iVar2);
  }
  puVar4 = (undefined8 *)param_1[0x21];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  param_1[0x1a] = juce::ComponentBoundsConstrainer::vftable;
  puVar4 = (undefined8 *)param_1[0x18];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  puVar4 = (undefined8 *)param_1[0x17];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 1816398a0 size=546 ############

void FUN_1816398a0(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  int *piVar1;
  longlong *plVar2;
  void *_Dst;
  undefined8 *puVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  uint uVar7;
  longlong lVar8;
  undefined1 local_res20 [8];
  
  lVar5 = FUN_181639c10();
  if (lVar5 != 0) {
    iVar6 = *(int *)(lVar5 + 0xec);
    uVar7 = 0;
    if (0 < iVar6) {
      lVar8 = 0;
      do {
        iVar4 = FUN_18048cbc0(param_2);
        if (iVar4 == 0) {
          if (-1 < (int)uVar7) {
            if (param_3 == 0) {
              FUN_180488fc0(lVar5 + 0xe0,uVar7);
              if (*(uint *)(lVar5 + 0xfc) <= uVar7) {
                return;
              }
              lVar8 = *(longlong *)(lVar5 + 0xf0);
              puVar3 = *(undefined8 **)(lVar8 + (longlong)(int)uVar7 * 8);
              _Dst = (void *)(lVar8 + (longlong)(int)uVar7 * 8);
              memmove(_Dst,(void *)((longlong)_Dst + 8),
                      (longlong)(int)((*(uint *)(lVar5 + 0xfc) - uVar7) + -1) << 3);
              *(int *)(lVar5 + 0xfc) = *(int *)(lVar5 + 0xfc) + -1;
              if (puVar3 != (undefined8 *)0x0) {
                LOCK();
                piVar1 = (int *)(puVar3 + 1);
                iVar6 = *piVar1;
                *piVar1 = *piVar1 + -1;
                UNLOCK();
                if (iVar6 == 1) {
                  (**(code **)*puVar3)(puVar3,1);
                }
              }
              if (*(int *)(lVar5 + 0xf8) <= *(int *)(lVar5 + 0xfc) * 2) {
                return;
              }
              if (*(int *)(lVar5 + 0xf8) <= *(int *)(lVar5 + 0xfc)) {
                return;
              }
              FUN_18047cb30((longlong *)(lVar5 + 0xf0));
              return;
            }
            plVar2 = (longlong *)(lVar5 + 0xf0);
            LOCK();
            *(int *)(param_3 + 8) = *(int *)(param_3 + 8) + 1;
            UNLOCK();
            iVar6 = *(int *)(lVar5 + 0xfc);
            if (iVar6 <= (int)uVar7) {
              if (*(int *)(lVar5 + 0xf8) < iVar6 + 1) {
                FUN_18047cb30(plVar2,iVar6 + 9 + (iVar6 + 1) / 2 & 0xfffffff8);
              }
              iVar6 = *(int *)(lVar5 + 0xfc);
              *(int *)(lVar5 + 0xfc) = iVar6 + 1;
              *(longlong *)(*plVar2 + (longlong)iVar6 * 8) = param_3;
              return;
            }
            puVar3 = *(undefined8 **)(*plVar2 + (longlong)(int)uVar7 * 8);
            *(longlong *)(*plVar2 + (longlong)(int)uVar7 * 8) = param_3;
            if (puVar3 == (undefined8 *)0x0) {
              return;
            }
            LOCK();
            piVar1 = (int *)(puVar3 + 1);
            iVar6 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar6 != 1) {
              return;
            }
            (**(code **)*puVar3)(puVar3);
            return;
          }
          break;
        }
        uVar7 = uVar7 + 1;
        lVar8 = lVar8 + 1;
      } while (lVar8 < iVar6);
    }
    if (param_3 != 0) {
      FUN_18049c4e0(local_res20,param_2);
      FUN_18122dc00(lVar5 + 0xe0,local_res20);
      iVar6 = *(int *)(lVar5 + 0xfc) + 1;
      if (*(int *)(lVar5 + 0xf8) < iVar6) {
        FUN_18047cb30((longlong *)(lVar5 + 0xf0),*(int *)(lVar5 + 0xfc) + 9 + iVar6 / 2 & 0xfffffff8
                     );
      }
      iVar6 = *(int *)(lVar5 + 0xfc);
      *(int *)(lVar5 + 0xfc) = iVar6 + 1;
      *(longlong *)(*(longlong *)(lVar5 + 0xf0) + (longlong)iVar6 * 8) = param_3;
      LOCK();
      *(int *)(param_3 + 8) = *(int *)(param_3 + 8) + 1;
      UNLOCK();
    }
  }
  return;
}



############ FUN_ 18122a430 size=371 ############

undefined8 FUN_18122a430(longlong *param_1,longlong param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  bool bVar2;
  DWORD DVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong local_30;
  undefined4 local_28;
  int iStack_24;
  
  bVar2 = true;
  local_30 = 0;
  _local_28 = 0;
  if (param_2 != 0) {
    lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 4);
    EnterCriticalSection(lpCriticalSection);
    plVar5 = (longlong *)*param_1;
    plVar1 = plVar5 + *(int *)((longlong)param_1 + 0xc);
    for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
      if (param_2 == *plVar5) {
        if (*(char *)(param_2 + 0x19) == '\0') {
          FUN_180488600(param_1,param_2);
          LOCK();
          *(undefined1 *)(param_2 + 0x18) = 1;
          UNLOCK();
          *(undefined8 *)(param_2 + 0x10) = 0;
          if (*(char *)(param_2 + 0x1a) != '\0') {
            FUN_18047cb30(&local_30,8);
            lVar4 = (longlong)iStack_24;
            _local_28 = CONCAT44(iStack_24 + 1,local_28);
            *(longlong *)(local_30 + lVar4 * 8) = param_2;
          }
        }
        else {
          FUN_18122ac30(param_2);
          bVar2 = false;
        }
        break;
      }
    }
    LeaveCriticalSection(lpCriticalSection);
    if (!bVar2) {
      DVar3 = timeGetTime();
      if ((DAT_1826737fc <= DVar3) || (DVar3 < DAT_1826737fc - 1000)) {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DVar3;
      }
      do {
        EnterCriticalSection(lpCriticalSection);
        plVar5 = (longlong *)*param_1;
        plVar1 = plVar5 + *(int *)((longlong)param_1 + 0xc);
        for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
          if (param_2 == *plVar5) {
            bVar2 = true;
            goto LAB_18122a561;
          }
        }
        bVar2 = false;
LAB_18122a561:
        LeaveCriticalSection(lpCriticalSection);
        if (!bVar2) break;
        FUN_181215c90(param_1 + 10,2);
      } while( true );
    }
  }
  FUN_180485f00(&local_30);
  return 1;
}



############ FUN_ 18122a750 size=235 ############

void FUN_18122a750(longlong *param_1,longlong param_2,undefined1 param_3)

{
  int iVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong *plVar4;
  
  if (*(longlong *)(param_2 + 0x10) == 0) {
    *(longlong **)(param_2 + 0x10) = param_1;
    uVar2 = 0;
    LOCK();
    *(undefined1 *)(param_2 + 0x18) = 0;
    UNLOCK();
    LOCK();
    *(undefined1 *)(param_2 + 0x19) = 0;
    UNLOCK();
    LOCK();
    *(undefined1 *)(param_2 + 0x1a) = param_3;
    UNLOCK();
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
    iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
    if ((int)param_1[1] < iVar1) {
      FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
    }
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
    *(longlong *)(*param_1 + (longlong)iVar1 * 8) = param_2;
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
    plVar4 = (longlong *)param_1[2];
    uVar3 = (ulonglong)
            ((longlong)(plVar4 + *(int *)((longlong)param_1 + 0x1c)) + (7 - (longlong)plVar4)) >> 3;
    if (plVar4 + *(int *)((longlong)param_1 + 0x1c) < plVar4) {
      uVar3 = uVar2;
    }
    if (uVar3 != 0) {
      do {
        FUN_181215c10(*plVar4 + 0xf8);
        uVar2 = uVar2 + 1;
        plVar4 = plVar4 + 1;
      } while (uVar2 != uVar3);
    }
  }
  return;
}



############ FUN_ 18122a110 size=760 ############

void FUN_18122a110(longlong *param_1,undefined8 param_2,int param_3)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  uint uVar2;
  bool bVar3;
  int iVar4;
  DWORD DVar5;
  DWORD DVar6;
  longlong lVar7;
  longlong *plVar8;
  uint uVar9;
  uint uVar10;
  longlong lVar11;
  longlong lVar12;
  longlong *local_70;
  int local_68;
  uint uStack_64;
  longlong local_60;
  undefined8 local_58;
  
  local_70 = (longlong *)0x0;
  local_68 = 0;
  uStack_64 = 0;
  local_60 = 0;
  local_58 = 0;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 4);
  EnterCriticalSection(lpCriticalSection);
  uVar9 = *(int *)((longlong)param_1 + 0xc) - 1;
  if (-1 < (int)uVar9) {
    lVar11 = (longlong)(int)uVar9 * 8;
    do {
      lVar12 = *(longlong *)(lVar11 + *param_1);
      if (*(char *)(lVar12 + 0x19) == '\0') {
        if (uVar9 < *(uint *)((longlong)param_1 + 0xc)) {
          FUN_18049b4a0(param_1,uVar9);
        }
        LOCK();
        *(undefined1 *)(lVar12 + 0x18) = 1;
        UNLOCK();
        *(undefined8 *)(lVar12 + 0x10) = 0;
        if (*(char *)(lVar12 + 0x1a) != '\0') {
          iVar4 = local_58._4_4_ + 1;
          if ((int)local_58 < iVar4) {
            if (iVar4 < 0) {
              iVar4 = local_58._4_4_ + 2;
            }
            FUN_18047cb30(&local_60,local_58._4_4_ + 9 + (iVar4 >> 1) & 0xfffffff8);
          }
          lVar7 = (longlong)local_58._4_4_;
          local_58 = CONCAT44(local_58._4_4_ + 1,(int)local_58);
          *(longlong *)(local_60 + lVar7 * 8) = lVar12;
        }
      }
      else {
        iVar4 = uStack_64 + 1;
        if (local_68 < iVar4) {
          if (iVar4 < 0) {
            iVar4 = uStack_64 + 2;
          }
          FUN_18047cb30(&local_70,uStack_64 + 9 + (iVar4 >> 1) & 0xfffffff8);
        }
        uStack_64 = 1;
        *local_70 = lVar12;
        FUN_18122ac30(lVar12);
      }
      lVar11 = lVar11 + -8;
      uVar9 = uVar9 - 1;
    } while (-1 < (int)uVar9);
  }
  LeaveCriticalSection(lpCriticalSection);
  FUN_180485f00(&local_60);
  DVar5 = timeGetTime();
  uVar9 = uStack_64;
  if (DVar5 < DAT_1826737fc) {
    if (DVar5 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar5;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar5;
  }
  do {
    uVar10 = uVar9 - 1;
    if (-1 < (int)uVar10) {
      lVar11 = (longlong)(int)uVar10 * 8;
      lVar12 = lVar11;
      do {
        lVar7 = *(longlong *)(lVar11 + (longlong)local_70);
        EnterCriticalSection(lpCriticalSection);
        plVar8 = (longlong *)*param_1;
        plVar1 = plVar8 + *(int *)((longlong)param_1 + 0xc);
        for (; plVar8 != plVar1; plVar8 = plVar8 + 1) {
          if (lVar7 == *plVar8) {
            uVar9 = uStack_64;
            if (*(char *)(lVar7 + 0x19) != '\0') {
              bVar3 = true;
              goto LAB_18122a308;
            }
            break;
          }
        }
        bVar3 = false;
LAB_18122a308:
        LeaveCriticalSection(lpCriticalSection);
        if ((!bVar3) && (uVar10 < uVar9)) {
          memmove((void *)((longlong)local_70 + lVar12),(void *)((longlong)local_70 + lVar12 + 8),
                  (longlong)(int)((uVar9 - uVar10) + -1) << 3);
          uStack_64 = uVar9 - 1;
          iVar4 = 0;
          if (0 < (int)(uStack_64 * 2)) {
            iVar4 = uStack_64 * 2;
          }
          uVar9 = uStack_64;
          if (iVar4 < local_68) {
            uVar2 = uStack_64;
            if ((int)uStack_64 < 8) {
              uVar2 = 8;
            }
            if ((int)uVar2 < local_68) {
              FUN_18047cb30(&local_70);
              uVar9 = uStack_64;
            }
          }
        }
        lVar12 = lVar12 + -8;
        lVar11 = lVar11 + -8;
        uVar10 = uVar10 - 1;
      } while (-1 < (int)uVar10);
    }
    if (uVar9 == 0) {
LAB_18122a3fe:
                    /* WARNING: Subroutine does not return */
      free(local_70);
    }
    if (-1 < param_3) {
      DVar6 = timeGetTime();
      if (DVar6 < DAT_1826737fc) {
        if (DVar6 < DAT_1826737fc - 1000) {
          LOCK();
          UNLOCK();
          DAT_1826737fc = DVar6;
        }
      }
      else {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DVar6;
      }
      uVar9 = uStack_64;
      if (DVar5 + param_3 <= DVar6) goto LAB_18122a3fe;
    }
    FUN_181215c90(param_1 + 10,0x14);
  } while( true );
}



############ FUN_ 181317850 size=496 ############

void FUN_181317850(longlong param_1)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined4 uVar7;
  undefined8 *puVar8;
  int iVar9;
  longlong lVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0x180) == 0) {
    lVar5 = 0;
  }
  else {
    lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
  }
  if (lVar5 == 0) {
    return;
  }
  if (param_1 == 0) {
    lVar5 = 0;
  }
  else {
    lVar5 = param_1 + 0xb0;
  }
  if (*(longlong *)(param_1 + 0x180) == 0) {
    lVar10 = 0;
  }
  else {
    lVar10 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
  }
  plVar3 = *(longlong **)(lVar10 + 0x80);
  iVar9 = 0;
  iVar2 = *(int *)(lVar10 + 0x8c);
  plVar6 = plVar3;
  if (0 < iVar2) {
    do {
      if (lVar5 == *plVar6) {
        plVar3 = plVar3 + iVar9;
        memmove(plVar3,plVar3 + 1,(longlong)((iVar2 - iVar9) + -1) << 3);
        *(int *)(lVar10 + 0x8c) = *(int *)(lVar10 + 0x8c) + -1;
        iVar2 = *(int *)(lVar10 + 0x8c);
        iVar9 = 0;
        if (0 < iVar2 * 2) {
          iVar9 = iVar2 * 2;
        }
        if (iVar9 < *(int *)(lVar10 + 0x88)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar10 + 0x88)) {
            FUN_18047cb30((longlong *)(lVar10 + 0x80));
          }
        }
        break;
      }
      iVar9 = iVar9 + 1;
      plVar6 = plVar6 + 1;
    } while (iVar9 < iVar2);
  }
  if (*(char *)(param_1 + 0x1a6) == '\0') {
    lVar5 = 0;
    if (*(longlong *)(param_1 + 0x180) != 0) {
      lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
    }
    plVar3 = *(longlong **)(param_1 + 0x110);
    for (plVar6 = plVar3; plVar6 != plVar3 + *(int *)(param_1 + 0x11c); plVar6 = plVar6 + 1) {
      if (lVar5 == *plVar6) {
        uVar7 = (undefined4)((longlong)plVar6 - (longlong)plVar3 >> 3);
        goto LAB_1813179e0;
      }
    }
    uVar7 = 0xffffffff;
LAB_1813179e0:
    FUN_181343a90(param_1 + 0xd0,uVar7,1,CONCAT71((int7)((ulonglong)plVar3 >> 8),1),uVar11);
    puVar8 = *(undefined8 **)(param_1 + 0x180);
    *(undefined8 *)(param_1 + 0x180) = 0;
    if (puVar8 == (undefined8 *)0x0) {
      return;
    }
    LOCK();
    piVar1 = (int *)(puVar8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 != 1) {
      return;
    }
  }
  else {
    if (*(longlong *)(param_1 + 0x180) == 0) {
      puVar8 = (undefined8 *)0x0;
    }
    else {
      puVar8 = *(undefined8 **)(*(longlong *)(param_1 + 0x180) + 0x10);
    }
    puVar4 = *(undefined8 **)(param_1 + 0x180);
    *(undefined8 *)(param_1 + 0x180) = 0;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
    if (puVar8 == (undefined8 *)0x0) {
      return;
    }
  }
  (**(code **)*puVar8)(puVar8,1);
  return;
}



############ FUN_ 180576bb0 size=395 ############

void FUN_180576bb0(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  int iVar8;
  ulonglong uVar9;
  
  *param_1 = CloudyShadow::vftable;
  uVar7 = 0;
  lVar3 = param_1[0x19];
  param_1[0x16] = CloudyShadow::vftable;
  if (lVar3 != 0) {
    iVar2 = *(int *)(lVar3 + 0x8c);
    lVar4 = *(longlong *)(lVar3 + 0x80);
    uVar9 = uVar7;
    if (0 < iVar2) {
      do {
        iVar8 = (int)uVar9;
        if (param_1 + 0x16 == *(undefined8 **)(lVar4 + uVar7 * 8)) {
          _Dst = (void *)(lVar4 + (longlong)iVar8 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar8) + -1) << 3);
          *(int *)(lVar3 + 0x8c) = *(int *)(lVar3 + 0x8c) + -1;
          iVar2 = *(int *)(lVar3 + 0x8c);
          iVar8 = 0;
          if (0 < iVar2 * 2) {
            iVar8 = iVar2 * 2;
          }
          if (iVar8 < *(int *)(lVar3 + 0x88)) {
            if (iVar2 < 8) {
              iVar2 = 8;
            }
            if (iVar2 < *(int *)(lVar3 + 0x88)) {
              FUN_18047cb30((longlong *)(lVar3 + 0x80),iVar2);
            }
          }
          break;
        }
        uVar9 = (ulonglong)(iVar8 + 1);
        uVar7 = uVar7 + 1;
      } while ((longlong)uVar7 < (longlong)iVar2);
    }
  }
  plVar5 = (longlong *)param_1[0x33];
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x20))(plVar5,plVar5 != param_1 + 0x2c);
    param_1[0x33] = 0;
  }
  plVar5 = (longlong *)param_1[0x2b];
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x20))(plVar5,plVar5 != param_1 + 0x24);
    param_1[0x2b] = 0;
  }
  plVar5 = (longlong *)param_1[0x23];
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x20))(plVar5,plVar5 != param_1 + 0x1c);
    param_1[0x23] = 0;
  }
  plVar5 = (longlong *)param_1[0x18];
  if (plVar5 == (longlong *)0x0) {
    puVar6 = (undefined8 *)param_1[0x17];
    if (puVar6 == (undefined8 *)0x0) {
      FUN_18134caa0(param_1);
      return;
    }
    *(undefined4 *)((longlong)puVar6 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar6);
  }
  puVar6 = (undefined8 *)*plVar5;
  if (puVar6 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar6 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar6)(puVar6,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(plVar5);
}



############ FUN_ 1812a6c10 size=355 ############

void FUN_1812a6c10(void)

{
  int iVar1;
  void *_Src;
  uint uVar2;
  void *pvVar3;
  int iVar4;
  void **ppvVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  longlong lVar10;
  void *local_28;
  int local_1c;
  void *local_18;
  undefined4 local_10;
  int local_c;
  
  local_28 = (void *)0x0;
  local_1c = 0;
  do {
    LOCK();
    uVar2 = DAT_182673a34 & 1;
    DAT_182673a34 = DAT_182673a34 | 1;
    UNLOCK();
  } while (uVar2 != 0);
  ppvVar5 = (void **)FUN_1812a6d90();
  if (&local_28 != ppvVar5) {
    iVar1 = *(int *)((longlong)ppvVar5 + 0xc);
    _Src = *ppvVar5;
    local_18 = (void *)0x0;
    local_10 = 0;
    local_c = 0;
    if (0 < iVar1) {
      FUN_18047cb30(&local_18,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
    }
    iVar4 = local_c;
    pvVar3 = local_18;
    memcpy((void *)((longlong)local_18 + (longlong)local_c * 8),_Src,(longlong)iVar1 << 3);
    local_1c = iVar4 + iVar1;
    local_28 = pvVar3;
    local_c = local_1c;
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  LOCK();
  DAT_182673a34 = 0;
  UNLOCK();
  lVar10 = (longlong)(local_1c + -1);
  if (-1 < local_1c + -1) {
    do {
      puVar7 = *(undefined8 **)((longlong)local_28 + lVar10 * 8);
      do {
        LOCK();
        uVar2 = DAT_182673a34 & 1;
        DAT_182673a34 = DAT_182673a34 | 1;
        UNLOCK();
      } while (uVar2 != 0);
      plVar6 = (longlong *)FUN_1812a6d90();
      plVar8 = (longlong *)*plVar6;
      plVar6 = plVar8 + *(int *)((longlong)plVar6 + 0xc);
      for (; (puVar9 = (undefined8 *)0x0, plVar8 != plVar6 &&
             (puVar9 = puVar7, puVar7 != (undefined8 *)*plVar8)); plVar8 = plVar8 + 1) {
      }
      LOCK();
      DAT_182673a34 = 0;
      UNLOCK();
      if (puVar9 != (undefined8 *)0x0) {
        (**(code **)*puVar9)(puVar9,1);
      }
      lVar10 = lVar10 + -1;
    } while (-1 < lVar10);
  }
  puVar7 = (undefined8 *)FUN_1812a6d90();
  *(undefined4 *)((longlong)puVar7 + 0xc) = 0;
  if (*(int *)(puVar7 + 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar7);
  }
  *(undefined4 *)(puVar7 + 1) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001812a6d79. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_28);
  return;
}



############ FUN_ 1812c3e50 size=139 ############

void FUN_1812c3e50(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  plVar3 = *(longlong **)(param_1 + 0x40);
  iVar2 = *(int *)(param_1 + 0x4c);
  plVar1 = plVar3 + iVar2;
  for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
    if (param_2 == *plVar3) goto LAB_1812c3ec1;
  }
  if (*(int *)(param_1 + 0x48) < iVar2 + 1) {
    FUN_18047cb30(param_1 + 0x40,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)(param_1 + 0x4c);
  *(int *)(param_1 + 0x4c) = iVar2 + 1;
  *(longlong *)(*(longlong *)(param_1 + 0x40) + (longlong)iVar2 * 8) = param_2;
LAB_1812c3ec1:
                    /* WARNING: Could not recover jumptable at 0x0001812c3ed4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  return;
}



############ FUN_ 181343cc0 size=379 ############

void FUN_181343cc0(longlong param_1,longlong param_2,uint param_3)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  void *_Src;
  longlong *plVar5;
  
  lVar3 = *(longlong *)(param_2 + 0x18);
  if (lVar3 != param_1) {
    if (lVar3 == 0) {
      FUN_18134c310(param_2);
    }
    else {
      plVar5 = *(longlong **)(lVar3 + 0x40);
      for (plVar4 = plVar5; plVar4 != plVar5 + *(int *)(lVar3 + 0x4c); plVar4 = plVar4 + 1) {
        if (param_2 == *plVar4) {
          FUN_181343a90(lVar3,(longlong)plVar4 - (longlong)plVar5 >> 3,1);
          goto LAB_181343d47;
        }
      }
      FUN_181343a90(lVar3,0xffffffff,1);
    }
LAB_181343d47:
    *(longlong *)(param_2 + 0x18) = param_1;
    if ((*(byte *)(param_2 + 0xa8) & 2) != 0) {
      FUN_181342b10(param_2);
    }
    if ((*(byte *)(param_2 + 0xa9) & 1) == 0) {
      if (((int)param_3 < 0) || (*(int *)(param_1 + 0x4c) < (int)param_3)) {
        param_3 = *(uint *)(param_1 + 0x4c);
      }
      if (0 < (int)param_3) {
        lVar3 = (longlong)(int)param_3;
        plVar5 = (longlong *)(*(longlong *)(param_1 + 0x40) + -8 + lVar3 * 8);
        do {
          if ((*(byte *)(*plVar5 + 0xa9) & 1) == 0) break;
          param_3 = param_3 - 1;
          lVar3 = lVar3 + -1;
          plVar5 = plVar5 + -1;
        } while (0 < lVar3);
      }
    }
    iVar2 = *(int *)(param_1 + 0x4c) + 1;
    if (*(int *)(param_1 + 0x48) < iVar2) {
      FUN_18047cb30(param_1 + 0x40,*(int *)(param_1 + 0x4c) + 9 + iVar2 / 2 & 0xfffffff8);
    }
    uVar1 = *(uint *)(param_1 + 0x4c);
    if (param_3 < uVar1) {
      _Src = (void *)(*(longlong *)(param_1 + 0x40) + (longlong)(int)param_3 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - param_3) << 3);
      plVar5 = (longlong *)(*(longlong *)(param_1 + 0x40) + (longlong)(int)param_3 * 8);
    }
    else {
      plVar5 = (longlong *)(*(longlong *)(param_1 + 0x40) + (longlong)(int)uVar1 * 8);
    }
    *plVar5 = param_2;
    *(int *)(param_1 + 0x4c) = *(int *)(param_1 + 0x4c) + 1;
    FUN_181343670(param_2);
    FUN_1813437a0(param_1);
  }
  return;
}



############ FUN_ 180480640 size=174 ############

void FUN_180480640(longlong *param_1,uint param_2,uint param_3)

{
  uint uVar1;
  undefined8 *puVar2;
  int iVar3;
  void *_Src;
  ulonglong uVar4;
  
  iVar3 = *(int *)((longlong)param_1 + 0xc) + param_3;
  uVar4 = (ulonglong)param_3;
  if ((int)param_1[1] < iVar3) {
    FUN_18047cb30(param_1,iVar3 + 8 + iVar3 / 2 & 0xfffffff8);
  }
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  if (param_2 < uVar1) {
    _Src = (void *)(*param_1 + (longlong)(int)param_2 * 8);
    memmove((void *)((longlong)_Src + (longlong)(int)param_3 * 8),_Src,
            (longlong)(int)(uVar1 - param_2) << 3);
    puVar2 = (undefined8 *)(*param_1 + (longlong)(int)param_2 * 8);
  }
  else {
    puVar2 = (undefined8 *)(*param_1 + (longlong)(int)uVar1 * 8);
  }
  if (0 < (int)param_3) {
    do {
      *puVar2 = 0;
      uVar4 = uVar4 - 1;
      puVar2 = puVar2 + 1;
    } while (uVar4 != 0);
  }
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + param_3;
  return;
}



############ FUN_ 180527fa0 size=116 ############

longlong FUN_180527fa0(longlong *param_1,longlong param_2)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar1) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(longlong *)(*param_1 + (longlong)iVar1 * 8) = param_2;
  if (param_2 != 0) {
    LOCK();
    *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
    UNLOCK();
    return param_2;
  }
  return 0;
}



############ FUN_ 1805282f0 size=532 ############

void FUN_1805282f0(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  longlong *plVar1;
  void *_Src;
  ulonglong uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  void *_Memory;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  void *local_60;
  undefined8 local_58;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  do {
    if (param_1 == 0) {
      return;
    }
    local_48 = *(undefined4 *)param_3;
    uStack_44 = *(undefined4 *)((longlong)param_3 + 4);
    uVar4 = *param_3;
    uStack_40 = *(undefined4 *)(param_3 + 1);
    uStack_3c = *(undefined4 *)((longlong)param_3 + 0xc);
    uVar3 = param_3[1];
    iVar7 = *(int *)(param_1 + 0x44);
    if (iVar7 == 1) {
      lVar9 = **(longlong **)(param_1 + 0x38);
      iVar7 = *(int *)(lVar9 + 0x14);
      while (0 < iVar7) {
        iVar7 = iVar7 + -1;
        if ((*(int *)(lVar9 + 0x14) <= iVar7) && (iVar7 = *(int *)(lVar9 + 0x14) + -1, iVar7 < 0))
        break;
        plVar1 = *(longlong **)(*(longlong *)(lVar9 + 8) + (longlong)iVar7 * 8);
        if (plVar1 != param_2) {
          (**(code **)(*plVar1 + 8))(plVar1,uVar4,uVar3);
        }
      }
    }
    else if (0 < iVar7) {
      local_60 = (void *)0x0;
      local_58 = 0;
      iVar8 = *(int *)(param_1 + 0x44);
      _Src = *(void **)(param_1 + 0x38);
      iVar5 = 0;
      if (0 < iVar8) {
        iVar5 = iVar8;
        if (iVar8 < 0) {
          iVar5 = iVar8 + 1;
        }
        FUN_18047cb30(&local_60,(iVar5 >> 1) + 8 + iVar8 & 0xfffffff8);
        iVar5 = local_58._4_4_;
      }
      _Memory = local_60;
      memcpy((void *)((longlong)iVar5 * 8 + (longlong)local_60),_Src,(longlong)iVar8 << 3);
      local_58 = CONCAT44(iVar5 + iVar8,(undefined4)local_58);
      lVar9 = 0;
      if (iVar7 < 1) goto LAB_1805284c6;
      uVar3 = CONCAT44(uStack_44,local_48);
      break;
    }
    param_1 = *(longlong *)(param_1 + 0x48);
  } while( true );
LAB_180528420:
  uVar2 = *(ulonglong *)((longlong)_Memory + lVar9 * 8);
  if (lVar9 == 0) {
LAB_180528478:
    iVar8 = *(int *)(uVar2 + 0x14);
    while (0 < iVar8) {
      iVar8 = iVar8 + -1;
      if ((*(int *)(uVar2 + 0x14) <= iVar8) && (iVar8 = *(int *)(uVar2 + 0x14) + -1, iVar8 < 0))
      break;
      plVar1 = *(longlong **)(*(longlong *)(uVar2 + 8) + (longlong)iVar8 * 8);
      if (plVar1 != param_2) {
        (**(code **)(*plVar1 + 8))(plVar1,uVar3);
      }
    }
  }
  else {
    iVar5 = 0;
    iVar8 = *(int *)(param_1 + 0x44);
    if (0 < iVar8) {
      do {
        if (uVar2 == *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar5 * 8))
        goto LAB_180528473;
        iVar6 = (iVar8 + iVar5) / 2;
        if (iVar6 == iVar5) break;
        if (uVar2 < *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar6 * 8)) {
          iVar8 = iVar6;
          iVar6 = iVar5;
        }
        iVar5 = iVar6;
      } while (iVar5 < iVar8);
    }
    iVar5 = -1;
LAB_180528473:
    if (-1 < iVar5) goto LAB_180528478;
  }
  lVar9 = lVar9 + 1;
  if (iVar7 <= lVar9) {
LAB_1805284c6:
    local_58 = local_58 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  goto LAB_180528420;
}



############ FUN_ 180528070 size=370 ############

void FUN_180528070(longlong *param_1,int param_2)

{
  int iVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *_Memory;
  void *_Dst;
  longlong *plVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  longlong *local_38;
  undefined8 local_30;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  iVar7 = param_2 + 1;
  uVar5 = 0;
  iVar9 = 0;
  iVar8 = iVar9;
  if ((-1 < iVar7) && (iVar8 = iVar7, iVar1 < iVar7)) {
    iVar8 = iVar1;
  }
  if ((-1 < param_2) && (iVar9 = param_2, iVar1 < param_2)) {
    iVar9 = iVar1;
  }
  iVar8 = iVar8 - iVar9;
  if (iVar8 < 1) {
    return;
  }
  lVar2 = *param_1;
  local_38 = (longlong *)0x0;
  local_30 = 0;
  FUN_18047cb30(&local_38,iVar8 / 2 + 8 + iVar8 & 0xfffffff8);
  _Memory = local_38;
  iVar1 = local_30._4_4_;
  memcpy(local_38 + local_30._4_4_,(void *)((longlong)iVar9 * 8 + lVar2),(longlong)iVar8 * 8);
  _Dst = (void *)(*param_1 + (longlong)iVar9 * 8);
  memmove(_Dst,(void *)((longlong)iVar8 * 8 + (longlong)_Dst),
          (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar9) - iVar8) << 3);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) - iVar8;
  uVar6 = (ulonglong)((longlong)(_Memory + (iVar1 + iVar8)) + (7 - (longlong)_Memory)) >> 3;
  if (_Memory + (iVar1 + iVar8) < _Memory) {
    uVar6 = uVar5;
  }
  plVar4 = _Memory;
  if (uVar6 != 0) {
    do {
      puVar3 = (undefined8 *)*plVar4;
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      plVar4 = plVar4 + 1;
      uVar5 = uVar5 + 1;
    } while (uVar5 != uVar6);
  }
  if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
     (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
    FUN_18047cb30(param_1);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18134fcc0 size=363 ############

void FUN_18134fcc0(longlong param_1)

{
  void *_Dst;
  int iVar1;
  int iVar2;
  undefined8 *puVar3;
  uint uVar4;
  ulonglong *puVar6;
  ulonglong *puVar7;
  ulonglong *puVar8;
  ulonglong *puVar5;
  
  if (*(int *)(param_1 + 0x6c) < *(int *)(param_1 + 0x44)) {
    FUN_1805281f0(param_1 + 0x48);
    puVar7 = (ulonglong *)0x0;
    if (*(int *)(param_1 + 0x50) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 0x48));
    }
    *(undefined4 *)(param_1 + 0x50) = 0;
    if (*(int *)(param_1 + 0x6c) < *(int *)(param_1 + 0x44)) {
      do {
        uVar4 = *(uint *)(param_1 + 0x6c);
        puVar5 = puVar7;
        if (uVar4 < *(uint *)(param_1 + 0x44)) {
          puVar5 = *(ulonglong **)(*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar4 * 8);
          _Dst = (void *)(*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar4 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),
                  (longlong)(int)((*(uint *)(param_1 + 0x44) - uVar4) + -1) << 3);
          *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + -1;
          if ((*(int *)(param_1 + 0x44) * 2 < *(int *)(param_1 + 0x40)) &&
             (*(int *)(param_1 + 0x44) < *(int *)(param_1 + 0x40))) {
            FUN_18047cb30(param_1 + 0x38);
          }
        }
        iVar1 = *(int *)(param_1 + 0x54);
        iVar2 = iVar1 + 1;
        if (*(int *)(param_1 + 0x50) < iVar2) {
          if (iVar2 < 0) {
            iVar2 = iVar1 + 2;
          }
          FUN_18047cb30(param_1 + 0x48,iVar1 + 9 + (iVar2 >> 1) & 0xfffffff8);
        }
        iVar2 = *(int *)(param_1 + 0x54);
        *(int *)(param_1 + 0x54) = iVar2 + 1;
        *(ulonglong **)(*(longlong *)(param_1 + 0x48) + (longlong)iVar2 * 8) = puVar5;
        puVar3 = (undefined8 *)*puVar5;
        puVar8 = (ulonglong *)
                 ((ulonglong)
                  ((longlong)(puVar3 + *(int *)((longlong)puVar5 + 0xc)) + (7 - (longlong)puVar3))
                 >> 3);
        if (puVar3 + *(int *)((longlong)puVar5 + 0xc) < puVar3) {
          puVar8 = puVar7;
        }
        puVar5 = puVar7;
        puVar6 = puVar7;
        uVar4 = 0;
        if (puVar8 != (ulonglong *)0x0) {
          do {
            iVar2 = (**(code **)(*(longlong *)*puVar3 + 0x18))();
            puVar6 = (ulonglong *)((longlong)puVar6 + 1);
            puVar3 = puVar3 + 1;
            uVar4 = (int)puVar5 + iVar2;
            puVar5 = (ulonglong *)(ulonglong)uVar4;
          } while (puVar6 != puVar8);
        }
        *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - uVar4;
      } while (*(int *)(param_1 + 0x6c) < *(int *)(param_1 + 0x44));
    }
  }
  return;
}



############ FUN_ 18047e6b0 size=2322 ############

void FUN_18047e6b0(longlong param_1,int *param_2,longlong *param_3)

{
  int iVar1;
  longlong lVar2;
  void *pvVar3;
  undefined8 uVar4;
  void *_Dst;
  code *pcVar5;
  bool bVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int *piVar11;
  int iVar12;
  uint uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  longlong lVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  LPCRITICAL_SECTION lpCriticalSection;
  longlong lVar19;
  uint uVar20;
  ulonglong uVar21;
  uint uVar22;
  uint uVar23;
  uint local_1d8;
  uint local_1d4;
  uint local_1d0;
  longlong local_1c8;
  uint local_1c0;
  longlong local_1b8;
  longlong local_1b0;
  undefined8 local_168;
  undefined8 local_160;
  undefined1 *local_158;
  void *local_150;
  undefined1 local_148 [256];
  char local_48;
  
  uVar18 = 0;
  iVar9 = 0;
  local_1d4 = 0;
  bVar6 = false;
  lVar2 = *(longlong *)(param_1 + 0x30);
  iVar1 = *(int *)(lVar2 + 0x100);
  uVar22 = *(uint *)(lVar2 + 0x104);
  uVar17 = (ulonglong)(int)uVar22;
  local_1c0 = 0;
  if (0 < param_2[3]) {
    piVar11 = *(int **)(param_2 + 6);
    uVar14 = uVar18;
    uVar15 = uVar18;
    do {
      local_1c0 = (uint)uVar15;
      if ((*(longlong *)(piVar11 + 4) == 0) && (0 < *piVar11)) break;
      local_1c0 = local_1c0 + 1;
      uVar15 = (ulonglong)local_1c0;
      uVar14 = uVar14 + 1;
      piVar11 = piVar11 + 6;
    } while ((longlong)uVar14 < (longlong)param_2[3]);
  }
  uVar14 = uVar18;
  if (0 < param_2[4]) {
    piVar11 = *(int **)(param_2 + 8);
    uVar15 = uVar18;
    do {
      if ((*(longlong *)(piVar11 + 4) == 0) && (0 < *piVar11)) break;
      uVar14 = (ulonglong)((int)uVar14 + 1);
      uVar15 = uVar15 + 1;
      piVar11 = piVar11 + 6;
    } while ((longlong)uVar15 < (longlong)param_2[4]);
  }
  iVar10 = (int)uVar14;
  iVar12 = iVar10;
  if (iVar10 < *(int *)(lVar2 + 0xec)) {
    iVar12 = *(int *)(lVar2 + 0xec);
  }
  local_1d0 = 0;
  if (0 < iVar12) {
    local_1b0 = 0;
    local_1b8 = 0;
    uVar14 = uVar17;
    uVar15 = uVar18;
    uVar21 = uVar18;
    do {
      uVar13 = (uint)uVar15;
      iVar9 = (int)uVar21;
      uVar15 = 0;
      if ((longlong)uVar17 <= (longlong)uVar18) break;
      lVar2 = *(longlong *)(param_1 + 0x30);
      uVar23 = 0;
      if ((uVar13 < *(uint *)(lVar2 + 0xec)) &&
         (lVar16 = *(longlong *)(*(longlong *)(lVar2 + 0xe0) + local_1b0 * 8), lVar16 != 0)) {
        lVar19 = *(longlong *)(lVar16 + 0x10);
        if (lVar19 == 0) {
          lVar19 = lVar16 + 0x18;
        }
        iVar8 = *(int *)(lVar16 + 0x30) >> 5;
        lVar16 = (longlong)iVar8;
        uVar17 = uVar15;
        uVar20 = uVar23;
        if (-1 < iVar8) {
          do {
            uVar13 = *(uint *)(lVar19 + lVar16 * 4);
            uVar13 = uVar13 - (uVar13 >> 1 & 0x55555555);
            uVar13 = (uVar13 >> 2 & 0x33333333) + (uVar13 & 0x33333333);
            uVar13 = (uVar13 >> 4) + uVar13 & 0xf0f0f0f;
            uVar13 = uVar13 + (uVar13 >> 8);
            uVar20 = (int)uVar17 + (uVar13 + (uVar13 >> 0x10) & 0x3f);
            uVar17 = (ulonglong)uVar20;
            lVar16 = lVar16 + -1;
          } while (-1 < lVar16);
        }
        uVar13 = local_1d0;
        if (uVar20 != 0) goto LAB_18047e88b;
      }
      else {
LAB_18047e88b:
        if (local_1b0 < iVar10) {
          lVar2 = *(longlong *)((int *)(local_1b8 + *(longlong *)(param_2 + 8)) + 4);
          if (lVar2 == 0) goto LAB_18047e98a;
          iVar9 = (int)uVar14 - iVar9;
          iVar8 = *(int *)(local_1b8 + *(longlong *)(param_2 + 8));
          if (iVar9 < iVar8) {
            iVar8 = iVar9;
          }
          if (0 < iVar8) {
            do {
              pvVar3 = *(void **)(lVar2 + uVar15 * 8);
              if (pvVar3 != (void *)0x0) {
                uVar13 = (uint)uVar21;
                if ((longlong)iVar1 <= (longlong)uVar18) {
                  memset(pvVar3,0,(longlong)param_2[2] << 2);
                  uVar13 = local_1d4;
                }
                uVar4 = *(undefined8 *)(lVar2 + uVar15 * 8);
                if (-1 < (longlong)uVar18) {
                  if ((int)uVar13 < *(int *)((longlong)param_3 + 0xc)) {
                    *(undefined8 *)(*param_3 + uVar18 * 8) = uVar4;
                  }
                  else {
                    if ((int)param_3[1] < *(int *)((longlong)param_3 + 0xc) + 1) {
                      FUN_18047cb30(param_3);
                      uVar13 = local_1d4;
                    }
                    iVar9 = *(int *)((longlong)param_3 + 0xc);
                    *(int *)((longlong)param_3 + 0xc) = iVar9 + 1;
                    *(undefined8 *)(*param_3 + (longlong)iVar9 * 8) = uVar4;
                  }
                }
                local_1d4 = uVar13 + 1;
                uVar21 = (ulonglong)local_1d4;
                uVar18 = uVar18 + 1;
              }
              uVar15 = uVar15 + 1;
              uVar13 = local_1d0;
            } while ((longlong)uVar15 < (longlong)iVar8);
          }
        }
        else {
          if ((uVar13 < *(uint *)(lVar2 + 0xec)) &&
             (lVar2 = *(longlong *)(*(longlong *)(lVar2 + 0xe0) + local_1b0 * 8), lVar2 != 0)) {
            uVar23 = *(uint *)(lVar2 + 0x8c);
          }
          uVar20 = (int)uVar14 - iVar9;
          if ((int)uVar20 < (int)uVar23) {
            uVar23 = uVar20;
          }
          if (0 < (int)uVar23) {
            do {
              uVar13 = (uint)uVar21;
              if (*(int *)(param_1 + 0x10c) < param_2[2]) {
                return;
              }
              if (*(int *)(param_1 + 0x108) <= (int)uVar13) {
                return;
              }
              LOCK();
              *(undefined1 *)(param_1 + 0x228) = 0;
              UNLOCK();
              lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x118) + uVar18 * 8);
              if (lVar2 == 0) {
                return;
              }
              bVar6 = true;
              if (-1 < (longlong)uVar18) {
                if ((int)uVar13 < *(int *)((longlong)param_3 + 0xc)) {
                  *(longlong *)(*param_3 + uVar18 * 8) = lVar2;
                }
                else {
                  if ((int)param_3[1] < *(int *)((longlong)param_3 + 0xc) + 1) {
                    FUN_18047cb30(param_3);
                    uVar13 = local_1d4;
                  }
                  iVar9 = *(int *)((longlong)param_3 + 0xc);
                  *(int *)((longlong)param_3 + 0xc) = iVar9 + 1;
                  *(longlong *)(*param_3 + (longlong)iVar9 * 8) = lVar2;
                }
              }
              local_1d4 = uVar13 + 1;
              uVar21 = (ulonglong)local_1d4;
              uVar18 = uVar18 + 1;
              uVar20 = (int)uVar15 + 1;
              uVar15 = (ulonglong)uVar20;
              uVar13 = local_1d0;
            } while ((int)uVar20 < (int)uVar23);
          }
        }
        uVar14 = (ulonglong)uVar22;
      }
LAB_18047e98a:
      iVar9 = (int)uVar21;
      local_1d0 = uVar13 + 1;
      uVar15 = (ulonglong)local_1d0;
      local_1b0 = local_1b0 + 1;
      local_1b8 = local_1b8 + 0x18;
      uVar17 = (ulonglong)(int)uVar14;
    } while (local_1b0 < iVar12);
  }
  uVar17 = 0;
  uVar23 = 0;
  uVar22 = *(uint *)(*(longlong *)(param_1 + 0x30) + 0xdc);
  uVar13 = local_1c0;
  if ((int)local_1c0 < (int)uVar22) {
    uVar13 = uVar22;
  }
  local_1d8 = 0;
  if (0 < (int)uVar13) {
    local_1b0 = 0;
    local_1c8 = 0;
    uVar18 = uVar17;
    uVar23 = 0;
    do {
      uVar14 = 0;
      if ((longlong)iVar1 <= (longlong)uVar18) break;
      lVar2 = *(longlong *)(param_1 + 0x30);
      iVar12 = 0;
      uVar22 = (uint)uVar17;
      if (((uint)uVar17 < *(uint *)(lVar2 + 0xdc)) &&
         (lVar16 = *(longlong *)(*(longlong *)(lVar2 + 0xd0) + local_1b0 * 8), uVar22 = local_1d8,
         lVar16 != 0)) {
        lVar19 = *(longlong *)(lVar16 + 0x10);
        if (lVar19 == 0) {
          lVar19 = lVar16 + 0x18;
        }
        iVar10 = *(int *)(lVar16 + 0x30) >> 5;
        lVar16 = (longlong)iVar10;
        uVar17 = uVar14;
        if (-1 < iVar10) {
          do {
            uVar20 = *(uint *)(lVar19 + lVar16 * 4);
            uVar20 = uVar20 - (uVar20 >> 1 & 0x55555555);
            uVar20 = (uVar20 >> 2 & 0x33333333) + (uVar20 & 0x33333333);
            uVar20 = (uVar20 >> 4) + uVar20 & 0xf0f0f0f;
            uVar20 = uVar20 + (uVar20 >> 8);
            uVar17 = (ulonglong)((int)uVar17 + (uVar20 + (uVar20 >> 0x10) & 0x3f));
            lVar16 = lVar16 + -1;
          } while (-1 < lVar16);
        }
        if ((int)uVar17 != 0) goto LAB_18047eaca;
      }
      else {
LAB_18047eaca:
        if (local_1b0 < (int)local_1c0) {
          lVar2 = *(longlong *)(*(longlong *)(param_2 + 6) + 0x10 + local_1c8);
          if (lVar2 != 0) {
            iVar12 = *(int *)(*(longlong *)(param_2 + 6) + local_1c8);
            if ((int)(iVar1 - uVar23) < iVar12) {
              iVar12 = iVar1 - uVar23;
            }
            if (0 < iVar12) {
              do {
                pvVar3 = *(void **)(lVar2 + uVar14 * 8);
                if (pvVar3 != (void *)0x0) {
                  if ((longlong)uVar18 < (longlong)iVar9) {
                    _Dst = *(void **)(*param_3 + uVar18 * 8);
                    if (_Dst != pvVar3) {
                      memcpy(_Dst,pvVar3,(longlong)param_2[2] << 2);
                    }
                  }
                  else if (-1 < (longlong)uVar18) {
                    iVar10 = *(int *)((longlong)param_3 + 0xc);
                    if ((int)uVar23 < iVar10) {
                      *(void **)(*param_3 + uVar18 * 8) = pvVar3;
                    }
                    else {
                      iVar8 = iVar10 + 1;
                      if ((int)param_3[1] < iVar8) {
                        if (iVar8 < 0) {
                          iVar8 = iVar10 + 2;
                        }
                        FUN_18047cb30(param_3,iVar10 + 9 + (iVar8 >> 1) & 0xfffffff8);
                      }
                      iVar10 = *(int *)((longlong)param_3 + 0xc);
                      *(int *)((longlong)param_3 + 0xc) = iVar10 + 1;
                      *(void **)(*param_3 + (longlong)iVar10 * 8) = pvVar3;
                    }
                  }
                }
                uVar23 = uVar23 + 1;
                uVar18 = uVar18 + 1;
                uVar14 = uVar14 + 1;
              } while ((longlong)uVar14 < (longlong)iVar12);
            }
          }
        }
        else {
          if ((uVar22 < *(uint *)(lVar2 + 0xdc)) &&
             (lVar2 = *(longlong *)(*(longlong *)(lVar2 + 0xd0) + local_1b0 * 8), lVar2 != 0)) {
            iVar12 = *(int *)(lVar2 + 0x8c);
          }
          if ((int)(iVar1 - uVar23) < iVar12) {
            iVar12 = iVar1 - uVar23;
          }
          if (0 < iVar12) {
            do {
              if ((*(int *)(param_1 + 0x10c) < param_2[2]) ||
                 (*(int *)(param_1 + 0x108) <= (int)uVar23)) {
                return;
              }
              LOCK();
              *(undefined1 *)(param_1 + 0x228) = 0;
              UNLOCK();
              lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x118) + uVar18 * 8);
              if (lVar2 == 0) {
                return;
              }
              bVar6 = true;
              if (-1 < (longlong)uVar18) {
                iVar10 = *(int *)((longlong)param_3 + 0xc);
                if ((int)uVar23 < iVar10) {
                  *(longlong *)(*param_3 + uVar18 * 8) = lVar2;
                }
                else {
                  iVar8 = iVar10 + 1;
                  if ((int)param_3[1] < iVar8) {
                    if (iVar8 < 0) {
                      iVar8 = iVar10 + 2;
                    }
                    FUN_18047cb30(param_3,iVar10 + 9 + (iVar8 >> 1) & 0xfffffff8);
                  }
                  iVar10 = *(int *)((longlong)param_3 + 0xc);
                  *(int *)((longlong)param_3 + 0xc) = iVar10 + 1;
                  *(longlong *)(*param_3 + (longlong)iVar10 * 8) = lVar2;
                }
              }
              uVar23 = uVar23 + 1;
              uVar18 = uVar18 + 1;
              uVar22 = (int)uVar14 + 1;
              uVar14 = (ulonglong)uVar22;
            } while ((int)uVar22 < iVar12);
          }
        }
      }
      local_1d8 = local_1d8 + 1;
      uVar17 = (ulonglong)local_1d8;
      local_1b0 = local_1b0 + 1;
      local_1c8 = local_1c8 + 0x18;
    } while (local_1b0 < (int)uVar13);
  }
  uVar17 = 0;
  if (bVar6) {
    FUN_180480870(param_1 + 0x108);
  }
  local_168 = 0;
  local_160 = 0;
  local_158 = local_148;
  local_150 = (void *)0x0;
  local_48 = '\0';
  uVar22 = local_1d4;
  if ((int)local_1d4 < (int)uVar23) {
    uVar22 = uVar23;
  }
  if (uVar22 != 0) {
    local_168 = CONCAT44(param_2[2],uVar22);
    FUN_180480e00(&local_168,*param_3,0);
  }
  lpCriticalSection = (LPCRITICAL_SECTION)(*(longlong *)(param_1 + 0x30) + 0x48);
  EnterCriticalSection(lpCriticalSection);
  pcVar5 = *(code **)(**(longlong **)(param_1 + 0x30) + 0xa0);
  if (pcVar5 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    *(bool *)((longlong)*(longlong **)(param_1 + 0x30) + 0x41) = *param_2 == 2;
  }
  else {
    (*pcVar5)();
  }
  lVar2 = *(longlong *)(param_1 + 0x30);
  if (*(char *)(lVar2 + 0x40) == '\0') {
    if ((uVar23 == *(uint *)(lVar2 + 0x100)) && (local_1d4 == *(uint *)(lVar2 + 0x104))) {
      cVar7 = FUN_180479510(param_1);
      lVar2 = **(longlong **)(param_1 + 0x30);
      if (cVar7 == '\0') {
        (**(code **)(lVar2 + 0x38))(*(longlong **)(param_1 + 0x30),&local_168,param_1 + 0xd8);
      }
      else {
        (**(code **)(lVar2 + 0x48))();
      }
    }
  }
  else if (local_48 == '\0') {
    uVar18 = uVar17;
    if (0 < (int)local_168) {
      do {
        memset(*(void **)(local_158 + uVar17),0,(longlong)local_168._4_4_ << 2);
        uVar22 = (int)uVar18 + 1;
        uVar17 = uVar17 + 8;
        uVar18 = (ulonglong)uVar22;
      } while ((int)uVar22 < (int)local_168);
    }
    LOCK();
    local_48 = '\x01';
    UNLOCK();
  }
  LeaveCriticalSection(lpCriticalSection);
                    /* WARNING: Subroutine does not return */
  free(local_150);
}



############ FUN_ 18047efd0 size=2466 ############

void FUN_18047efd0(longlong param_1,int *param_2,longlong *param_3)

{
  int iVar1;
  void *pvVar2;
  undefined8 uVar3;
  void *_Dst;
  bool bVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  uint uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  longlong *plVar14;
  longlong lVar15;
  longlong lVar16;
  ulonglong uVar17;
  LPCRITICAL_SECTION lpCriticalSection;
  ulonglong uVar18;
  longlong lVar19;
  uint uVar20;
  code *pcVar21;
  ulonglong uVar22;
  uint uVar23;
  uint uVar24;
  uint local_1d8;
  uint local_1d4;
  uint local_1d0;
  longlong local_1c8;
  longlong local_1c0;
  uint local_1b8;
  longlong local_1b0;
  undefined8 local_168;
  undefined8 local_160;
  undefined1 *local_158;
  void *local_150;
  undefined1 local_148 [256];
  char local_48;
  
  uVar18 = 0;
  iVar6 = 0;
  local_1d0 = 0;
  local_1d8 = 0;
  bVar4 = false;
  lVar16 = *(longlong *)(param_1 + 0x30);
  iVar1 = *(int *)(lVar16 + 0x100);
  uVar24 = *(uint *)(lVar16 + 0x104);
  uVar17 = (ulonglong)(int)uVar24;
  local_1b8 = 0;
  if (0 < param_2[3]) {
    piVar9 = *(int **)(param_2 + 6);
    uVar12 = uVar18;
    uVar13 = uVar18;
    do {
      local_1b8 = (uint)uVar13;
      if ((*(longlong *)(piVar9 + 4) == 0) && (0 < *piVar9)) break;
      local_1b8 = local_1b8 + 1;
      uVar13 = (ulonglong)local_1b8;
      uVar12 = uVar12 + 1;
      piVar9 = piVar9 + 6;
    } while ((longlong)uVar12 < (longlong)param_2[3]);
  }
  uVar12 = uVar18;
  if (0 < param_2[4]) {
    piVar9 = *(int **)(param_2 + 8);
    uVar13 = uVar18;
    do {
      if ((*(longlong *)(piVar9 + 4) == 0) && (0 < *piVar9)) break;
      uVar12 = (ulonglong)((int)uVar12 + 1);
      uVar13 = uVar13 + 1;
      piVar9 = piVar9 + 6;
    } while ((longlong)uVar13 < (longlong)param_2[4]);
  }
  iVar8 = (int)uVar12;
  iVar10 = iVar8;
  if (iVar8 < *(int *)(lVar16 + 0xec)) {
    iVar10 = *(int *)(lVar16 + 0xec);
  }
  local_1d4 = 0;
  if (0 < iVar10) {
    local_1b0 = 0;
    local_1c8 = 0;
    uVar12 = uVar17;
    uVar13 = uVar18;
    uVar22 = uVar18;
    do {
      uVar11 = (uint)uVar13;
      uVar13 = 0;
      iVar6 = (int)uVar22;
      if ((longlong)uVar17 <= (longlong)uVar18) break;
      lVar16 = *(longlong *)(param_1 + 0x30);
      uVar23 = 0;
      if ((uVar11 < *(uint *)(lVar16 + 0xec)) &&
         (lVar15 = *(longlong *)(*(longlong *)(lVar16 + 0xe0) + local_1b0 * 8), lVar15 != 0)) {
        lVar19 = *(longlong *)(lVar15 + 0x10);
        if (lVar19 == 0) {
          lVar19 = lVar15 + 0x18;
        }
        iVar6 = *(int *)(lVar15 + 0x30) >> 5;
        lVar15 = (longlong)iVar6;
        uVar17 = uVar13;
        uVar20 = uVar23;
        if (-1 < iVar6) {
          do {
            uVar11 = *(uint *)(lVar19 + lVar15 * 4);
            uVar11 = uVar11 - (uVar11 >> 1 & 0x55555555);
            uVar11 = (uVar11 >> 2 & 0x33333333) + (uVar11 & 0x33333333);
            uVar11 = (uVar11 >> 4) + uVar11 & 0xf0f0f0f;
            uVar11 = uVar11 + (uVar11 >> 8);
            uVar20 = (int)uVar17 + (uVar11 + (uVar11 >> 0x10) & 0x3f);
            uVar17 = (ulonglong)uVar20;
            lVar15 = lVar15 + -1;
          } while (-1 < lVar15);
        }
        uVar11 = local_1d4;
        if (uVar20 != 0) goto LAB_18047f1b0;
        uVar22 = (ulonglong)local_1d8;
      }
      else {
LAB_18047f1b0:
        if (local_1b0 < iVar8) {
          lVar16 = *(longlong *)((int *)(local_1c8 + *(longlong *)(param_2 + 8)) + 4);
          uVar22 = (ulonglong)local_1d8;
          if (lVar16 != 0) {
            iVar7 = (int)uVar12 - local_1d8;
            iVar6 = *(int *)(local_1c8 + *(longlong *)(param_2 + 8));
            if (iVar7 < iVar6) {
              iVar6 = iVar7;
            }
            if (0 < iVar6) {
              do {
                pvVar2 = *(void **)(lVar16 + uVar13 * 8);
                if (pvVar2 != (void *)0x0) {
                  uVar11 = (uint)uVar22;
                  if ((longlong)iVar1 <= (longlong)uVar18) {
                    memset(pvVar2,0,(longlong)param_2[2] << 3);
                    uVar11 = local_1d8;
                  }
                  uVar3 = *(undefined8 *)(lVar16 + uVar13 * 8);
                  if (-1 < (longlong)uVar18) {
                    if ((int)uVar11 < *(int *)((longlong)param_3 + 0xc)) {
                      *(undefined8 *)(*param_3 + uVar18 * 8) = uVar3;
                    }
                    else {
                      if ((int)param_3[1] < *(int *)((longlong)param_3 + 0xc) + 1) {
                        FUN_18047cb30(param_3);
                        uVar11 = local_1d8;
                      }
                      iVar7 = *(int *)((longlong)param_3 + 0xc);
                      *(int *)((longlong)param_3 + 0xc) = iVar7 + 1;
                      *(undefined8 *)(*param_3 + (longlong)iVar7 * 8) = uVar3;
                    }
                  }
                  local_1d8 = uVar11 + 1;
                  uVar22 = (ulonglong)local_1d8;
                  uVar18 = uVar18 + 1;
                }
                uVar13 = uVar13 + 1;
              } while ((longlong)uVar13 < (longlong)iVar6);
              goto LAB_18047f28f;
            }
          }
        }
        else {
          if ((uVar11 < *(uint *)(lVar16 + 0xec)) &&
             (lVar16 = *(longlong *)(*(longlong *)(lVar16 + 0xe0) + local_1b0 * 8), lVar16 != 0)) {
            uVar23 = *(uint *)(lVar16 + 0x8c);
          }
          uVar22 = (ulonglong)local_1d8;
          uVar20 = (int)uVar12 - local_1d8;
          if ((int)uVar20 < (int)uVar23) {
            uVar23 = uVar20;
          }
          if (0 < (int)uVar23) {
            do {
              uVar11 = (uint)uVar22;
              if (*(int *)(param_1 + 0x234) < param_2[2]) {
                return;
              }
              if (*(int *)(param_1 + 0x230) <= (int)uVar11) {
                return;
              }
              LOCK();
              *(undefined1 *)(param_1 + 0x350) = 0;
              UNLOCK();
              lVar16 = *(longlong *)(*(longlong *)(param_1 + 0x240) + uVar18 * 8);
              if (lVar16 == 0) {
                return;
              }
              bVar4 = true;
              if (-1 < (longlong)uVar18) {
                if ((int)uVar11 < *(int *)((longlong)param_3 + 0xc)) {
                  *(longlong *)(*param_3 + uVar18 * 8) = lVar16;
                }
                else {
                  if ((int)param_3[1] < *(int *)((longlong)param_3 + 0xc) + 1) {
                    FUN_18047cb30(param_3);
                    uVar11 = local_1d8;
                  }
                  iVar6 = *(int *)((longlong)param_3 + 0xc);
                  *(int *)((longlong)param_3 + 0xc) = iVar6 + 1;
                  *(longlong *)(*param_3 + (longlong)iVar6 * 8) = lVar16;
                }
              }
              local_1d8 = uVar11 + 1;
              uVar22 = (ulonglong)local_1d8;
              uVar18 = uVar18 + 1;
              uVar11 = (int)uVar13 + 1;
              uVar13 = (ulonglong)uVar11;
            } while ((int)uVar11 < (int)uVar23);
LAB_18047f28f:
            uVar12 = (ulonglong)uVar24;
            uVar11 = local_1d4;
          }
        }
      }
      iVar6 = (int)uVar22;
      local_1d4 = uVar11 + 1;
      uVar13 = (ulonglong)local_1d4;
      local_1b0 = local_1b0 + 1;
      local_1c8 = local_1c8 + 0x18;
      uVar17 = (ulonglong)(int)uVar12;
    } while (local_1b0 < iVar10);
  }
  uVar23 = 0;
  uVar17 = 0;
  uVar24 = *(uint *)(*(longlong *)(param_1 + 0x30) + 0xdc);
  uVar11 = local_1b8;
  if ((int)local_1b8 < (int)uVar24) {
    uVar11 = uVar24;
  }
  local_1d4 = 0;
  if (0 < (int)uVar11) {
    local_1b0 = 0;
    local_1c0 = 0;
    uVar18 = uVar17;
    do {
      uVar12 = 0;
      if ((longlong)iVar1 <= (longlong)uVar18) break;
      lVar16 = *(longlong *)(param_1 + 0x30);
      iVar10 = 0;
      uVar24 = (uint)uVar17;
      if (((uint)uVar17 < *(uint *)(lVar16 + 0xdc)) &&
         (lVar15 = *(longlong *)(*(longlong *)(lVar16 + 0xd0) + local_1b0 * 8), uVar24 = local_1d4,
         lVar15 != 0)) {
        lVar19 = *(longlong *)(lVar15 + 0x10);
        if (lVar19 == 0) {
          lVar19 = lVar15 + 0x18;
        }
        iVar8 = *(int *)(lVar15 + 0x30) >> 5;
        lVar15 = (longlong)iVar8;
        uVar17 = uVar12;
        if (-1 < iVar8) {
          do {
            uVar20 = *(uint *)(lVar19 + lVar15 * 4);
            uVar20 = uVar20 - (uVar20 >> 1 & 0x55555555);
            uVar20 = (uVar20 >> 2 & 0x33333333) + (uVar20 & 0x33333333);
            uVar20 = (uVar20 >> 4) + uVar20 & 0xf0f0f0f;
            uVar20 = uVar20 + (uVar20 >> 8);
            uVar17 = (ulonglong)((int)uVar17 + (uVar20 + (uVar20 >> 0x10) & 0x3f));
            lVar15 = lVar15 + -1;
          } while (-1 < lVar15);
        }
        if ((int)uVar17 != 0) goto LAB_18047f3fa;
      }
      else {
LAB_18047f3fa:
        if (local_1b0 < (int)local_1b8) {
          lVar16 = *(longlong *)(*(longlong *)(param_2 + 6) + 0x10 + local_1c0);
          if (lVar16 != 0) {
            iVar10 = *(int *)(*(longlong *)(param_2 + 6) + local_1c0);
            if ((int)(iVar1 - uVar23) < iVar10) {
              iVar10 = iVar1 - uVar23;
            }
            if (0 < iVar10) {
              do {
                pvVar2 = *(void **)(lVar16 + uVar12 * 8);
                if (pvVar2 != (void *)0x0) {
                  if ((longlong)uVar18 < (longlong)iVar6) {
                    _Dst = *(void **)(*param_3 + uVar18 * 8);
                    if (_Dst != pvVar2) {
                      memcpy(_Dst,pvVar2,(longlong)param_2[2] << 3);
                      uVar23 = local_1d0;
                    }
                  }
                  else if (-1 < (longlong)uVar18) {
                    iVar8 = *(int *)((longlong)param_3 + 0xc);
                    if ((int)uVar23 < iVar8) {
                      *(void **)(*param_3 + uVar18 * 8) = pvVar2;
                    }
                    else {
                      iVar7 = iVar8 + 1;
                      if ((int)param_3[1] < iVar7) {
                        if (iVar7 < 0) {
                          iVar7 = iVar8 + 2;
                        }
                        FUN_18047cb30(param_3,iVar8 + 9 + (iVar7 >> 1) & 0xfffffff8);
                        uVar23 = local_1d0;
                      }
                      iVar8 = *(int *)((longlong)param_3 + 0xc);
                      *(int *)((longlong)param_3 + 0xc) = iVar8 + 1;
                      *(void **)(*param_3 + (longlong)iVar8 * 8) = pvVar2;
                    }
                  }
                }
                local_1d0 = uVar23 + 1;
                uVar18 = uVar18 + 1;
                uVar12 = uVar12 + 1;
                uVar23 = local_1d0;
              } while ((longlong)uVar12 < (longlong)iVar10);
            }
          }
        }
        else {
          if ((uVar24 < *(uint *)(lVar16 + 0xdc)) &&
             (lVar16 = *(longlong *)(*(longlong *)(lVar16 + 0xd0) + local_1b0 * 8), lVar16 != 0)) {
            iVar10 = *(int *)(lVar16 + 0x8c);
          }
          if ((int)(iVar1 - uVar23) < iVar10) {
            iVar10 = iVar1 - uVar23;
          }
          if (0 < iVar10) {
            do {
              if ((*(int *)(param_1 + 0x234) < param_2[2]) ||
                 (*(int *)(param_1 + 0x230) <= (int)uVar23)) {
                return;
              }
              LOCK();
              *(undefined1 *)(param_1 + 0x350) = 0;
              UNLOCK();
              lVar16 = *(longlong *)(*(longlong *)(param_1 + 0x240) + uVar18 * 8);
              if (lVar16 == 0) {
                return;
              }
              bVar4 = true;
              if (-1 < (longlong)uVar18) {
                iVar8 = *(int *)((longlong)param_3 + 0xc);
                if ((int)uVar23 < iVar8) {
                  *(longlong *)(*param_3 + uVar18 * 8) = lVar16;
                }
                else {
                  iVar7 = iVar8 + 1;
                  if ((int)param_3[1] < iVar7) {
                    if (iVar7 < 0) {
                      iVar7 = iVar8 + 2;
                    }
                    FUN_18047cb30(param_3,iVar8 + 9 + (iVar7 >> 1) & 0xfffffff8);
                    uVar23 = local_1d0;
                  }
                  iVar8 = *(int *)((longlong)param_3 + 0xc);
                  *(int *)((longlong)param_3 + 0xc) = iVar8 + 1;
                  *(longlong *)(*param_3 + (longlong)iVar8 * 8) = lVar16;
                }
              }
              local_1d0 = uVar23 + 1;
              uVar18 = uVar18 + 1;
              uVar24 = (int)uVar12 + 1;
              uVar12 = (ulonglong)uVar24;
              uVar23 = local_1d0;
            } while ((int)uVar24 < iVar10);
          }
        }
      }
      local_1d4 = local_1d4 + 1;
      uVar17 = (ulonglong)local_1d4;
      local_1b0 = local_1b0 + 1;
      local_1c0 = local_1c0 + 0x18;
    } while (local_1b0 < (int)uVar11);
  }
  uVar17 = 0;
  if (bVar4) {
    FUN_1804806f0(param_1 + 0x230);
  }
  local_168 = 0;
  local_160 = 0;
  local_158 = local_148;
  local_150 = (void *)0x0;
  local_48 = '\0';
  uVar24 = local_1d8;
  if ((int)local_1d8 < (int)local_1d0) {
    uVar24 = local_1d0;
  }
  if (uVar24 != 0) {
    local_168 = CONCAT44(param_2[2],uVar24);
    FUN_180480d30(&local_168,*param_3,0);
  }
  lpCriticalSection = (LPCRITICAL_SECTION)(*(longlong *)(param_1 + 0x30) + 0x48);
  EnterCriticalSection(lpCriticalSection);
  pcVar21 = *(code **)(**(longlong **)(param_1 + 0x30) + 0xa0);
  if (pcVar21 ==
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    *(bool *)((longlong)*(longlong **)(param_1 + 0x30) + 0x41) = *param_2 == 2;
  }
  else {
    (*pcVar21)();
  }
  lVar16 = *(longlong *)(param_1 + 0x30);
  if (*(char *)(lVar16 + 0x40) == '\0') {
    if ((local_1d0 == *(uint *)(lVar16 + 0x100)) && (local_1d8 == *(uint *)(lVar16 + 0x104))) {
      cVar5 = FUN_180479510(param_1);
      if (cVar5 == '\0') {
        plVar14 = *(longlong **)(param_1 + 0x30);
        pcVar21 = *(code **)(*plVar14 + 0x30);
        if (pcVar21 ==
            .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
            vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)
        goto LAB_18047f92e;
      }
      else {
        plVar14 = *(longlong **)(param_1 + 0x30);
        pcVar21 = *(code **)(*plVar14 + 0x40);
        if (pcVar21 ==
            .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
            vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
          if ((*(int *)((longlong)plVar14 + 0xdc) != 0) && (*(longlong *)plVar14[0x1a] != 0)) {
            uVar17 = (ulonglong)*(uint *)(*(longlong *)plVar14[0x1a] + 0x8c);
          }
          if ((int)uVar17 < *(int *)((longlong)plVar14 + 0x104)) {
            lVar16 = (longlong)(int)uVar17 * 8;
            do {
              if (local_48 == '\0') {
                memset(*(void **)(local_158 + lVar16),0,(longlong)local_168._4_4_ << 3);
              }
              uVar24 = (int)uVar17 + 1;
              uVar17 = (ulonglong)uVar24;
              lVar16 = lVar16 + 8;
            } while ((int)uVar24 < *(int *)((longlong)plVar14 + 0x104));
          }
          goto LAB_18047f92e;
        }
      }
      (*pcVar21)(plVar14,&local_168,param_1 + 0xd8);
    }
  }
  else if (local_48 == '\0') {
    uVar18 = uVar17;
    if (0 < (int)local_168) {
      do {
        memset(*(void **)(local_158 + uVar17),0,(longlong)local_168._4_4_ << 3);
        uVar24 = (int)uVar18 + 1;
        uVar17 = uVar17 + 8;
        uVar18 = (ulonglong)uVar24;
      } while ((int)uVar24 < (int)local_168);
    }
    LOCK();
    local_48 = '\x01';
    UNLOCK();
  }
LAB_18047f92e:
  LeaveCriticalSection(lpCriticalSection);
                    /* WARNING: Subroutine does not return */
  free(local_150);
}



############ FUN_ 180485df0 size=83 ############

void FUN_180485df0(longlong *param_1,undefined8 *param_2)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar1) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined8 *)(*param_1 + (longlong)iVar1 * 8) = *param_2;
  return;
}



############ FUN_ 180485fc0 size=80 ############

undefined8 FUN_180485fc0(longlong *param_1,undefined8 param_2)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar1) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined8 *)(*param_1 + (longlong)iVar1 * 8) = param_2;
  return param_2;
}



############ FUN_ 180488690 size=120 ############

ulonglong FUN_180488690(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  
  plVar4 = (longlong *)*param_1;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  plVar1 = plVar4 + iVar2;
  while( true ) {
    if (plVar4 == plVar1) {
      if ((int)param_1[1] < iVar2 + 1) {
        FUN_18047cb30(param_1,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
      lVar3 = *param_1;
      *(longlong *)(lVar3 + (longlong)iVar2 * 8) = param_2;
      return CONCAT71((int7)((ulonglong)lVar3 >> 8),1);
    }
    if (param_2 == *plVar4) break;
    plVar4 = plVar4 + 1;
  }
  return (ulonglong)plVar4 & 0xffffffffffffff00;
}



############ FUN_ 181229cf0 size=669 ############

undefined8 FUN_181229cf0(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  int iVar4;
  undefined8 *puVar5;
  uint uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  bool bVar9;
  longlong local_58;
  undefined8 local_50;
  longlong local_48;
  undefined4 local_40;
  int iStack_3c;
  
  uVar7 = 0;
  local_58 = 0;
  local_50 = 0;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    bVar9 = *(int *)((longlong)param_1 + 0xc) != 0;
    uVar8 = uVar7;
    do {
      uVar6 = (uint)uVar7;
      if (((bVar9) && (plVar1 = *(longlong **)(uVar8 + *param_1), plVar1 != (longlong *)0x0)) &&
         (*(char *)((longlong)plVar1 + 0x19) == '\0')) {
        if ((char)plVar1[3] == '\0') {
          LOCK();
          *(undefined1 *)((longlong)plVar1 + 0x19) = 1;
          UNLOCK();
          LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
          FUN_180485f00(&local_58);
          LOCK();
          *(longlong **)(param_2 + 0x200) = plVar1;
          UNLOCK();
          iVar4 = (**(code **)(*plVar1 + 8))(plVar1);
          LOCK();
          *(undefined8 *)(param_2 + 0x200) = 0;
          UNLOCK();
          local_48 = 0;
          _local_40 = 0;
          EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
          puVar5 = (undefined8 *)*param_1;
          puVar2 = puVar5 + *(int *)((longlong)param_1 + 0xc);
          goto joined_r0x000181229ece;
        }
        if (uVar6 < *(uint *)((longlong)param_1 + 0xc)) {
          FUN_18049b4a0(param_1,uVar7);
        }
        LOCK();
        *(undefined1 *)(plVar1 + 3) = 1;
        UNLOCK();
        plVar1[2] = 0;
        if (*(char *)((longlong)plVar1 + 0x1a) != '\0') {
          iVar4 = local_50._4_4_ + 1;
          if ((int)local_50 < iVar4) {
            if (iVar4 < 0) {
              iVar4 = local_50._4_4_ + 2;
            }
            FUN_18047cb30(&local_58,local_50._4_4_ + 9 + (iVar4 >> 1) & 0xfffffff8);
          }
          lVar3 = (longlong)local_50._4_4_;
          local_50 = CONCAT44(local_50._4_4_ + 1,(int)local_50);
          *(longlong **)(local_58 + lVar3 * 8) = plVar1;
        }
        uVar6 = uVar6 - 1;
        uVar8 = uVar8 - 8;
      }
      uVar6 = uVar6 + 1;
      uVar7 = (ulonglong)uVar6;
      uVar8 = uVar8 + 8;
      bVar9 = uVar6 < *(uint *)((longlong)param_1 + 0xc);
    } while ((int)uVar6 < (int)*(uint *)((longlong)param_1 + 0xc));
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
  FUN_180485f00(&local_58);
  return 0;
joined_r0x000181229ece:
  if (puVar5 == puVar2) goto LAB_181229f8d;
  if (plVar1 == (longlong *)*puVar5) {
    LOCK();
    *(undefined1 *)((longlong)plVar1 + 0x19) = 0;
    UNLOCK();
    if ((iVar4 == 1) && ((char)plVar1[3] == '\0')) {
      puVar2 = (undefined8 *)*param_1;
      puVar5 = puVar2;
      goto joined_r0x000181229f0b;
    }
    FUN_180488600(param_1,plVar1);
    LOCK();
    *(undefined1 *)(plVar1 + 3) = 1;
    UNLOCK();
    plVar1[2] = 0;
    if (*(char *)((longlong)plVar1 + 0x1a) != '\0') {
      FUN_18047cb30(&local_48,8);
      lVar3 = (longlong)iStack_3c;
      _local_40 = CONCAT44(iStack_3c + 1,local_40);
      *(longlong **)(local_48 + lVar3 * 8) = plVar1;
    }
    FUN_181215c10(param_1 + 10);
    goto LAB_181229f8d;
  }
  puVar5 = puVar5 + 1;
  goto joined_r0x000181229ece;
joined_r0x000181229f0b:
  if (puVar5 == puVar2 + *(int *)((longlong)param_1 + 0xc)) {
    FUN_18049aee0(param_1,0xffffffff);
LAB_181229f8d:
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
    FUN_180485f00(&local_48);
    return 1;
  }
  if (plVar1 == (longlong *)*puVar5) {
    FUN_18049aee0(param_1,(longlong)puVar5 - (longlong)puVar2 >> 3 & 0xffffffff);
    goto LAB_181229f8d;
  }
  puVar5 = puVar5 + 1;
  goto joined_r0x000181229f0b;
}



############ FUN_ 180495580 size=271 ############

undefined8 * FUN_180495580(undefined8 *param_1,ulonglong param_2)

{
  void *_Dst;
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *puVar4;
  longlong lVar5;
  int iVar6;
  
  *param_1 = juce::UnitTest::vftable;
  plVar3 = (longlong *)FUN_181227cf0();
  iVar6 = 0;
  lVar5 = 0;
  iVar2 = *(int *)((longlong)plVar3 + 0xc);
  if (0 < iVar2) {
    do {
      if (param_1 == *(undefined8 **)(*plVar3 + lVar5 * 8)) {
        _Dst = (void *)(*plVar3 + (longlong)iVar6 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar6) + -1) << 3);
        *(int *)((longlong)plVar3 + 0xc) = *(int *)((longlong)plVar3 + 0xc) + -1;
        iVar2 = *(int *)((longlong)plVar3 + 0xc);
        iVar6 = 0;
        if (0 < iVar2 * 2) {
          iVar6 = iVar2 * 2;
        }
        if (iVar6 < (int)plVar3[1]) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < (int)plVar3[1]) {
            FUN_18047cb30(plVar3);
          }
        }
        break;
      }
      iVar6 = iVar6 + 1;
      lVar5 = lVar5 + 1;
    } while (lVar5 < iVar2);
  }
  puVar4 = (uint *)(param_1[2] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(param_1[1] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if ((param_2 & 1) == 0) {
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18049ad40 size=149 ############

longlong * FUN_18049ad40(longlong *param_1,undefined8 *param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  void *_Src;
  longlong *plVar4;
  
  *param_1 = 0;
  param_1[1] = 0;
  iVar3 = *(int *)((longlong)param_2 + 0xc);
  _Src = (void *)*param_2;
  if (0 < iVar3) {
    FUN_18047cb30(param_1,iVar3 + 8 + iVar3 / 2 & 0xfffffff8);
  }
  memcpy((void *)(*param_1 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8),_Src,
         (longlong)iVar3 << 3);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + iVar3;
  plVar4 = (longlong *)*param_1;
  plVar2 = plVar4 + *(int *)((longlong)param_1 + 0xc);
  for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
    if (*plVar4 != 0) {
      LOCK();
      piVar1 = (int *)(*plVar4 + 8);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
  }
  return param_1;
}



############ FUN_ 180599eb0 size=112 ############

void FUN_180599eb0(longlong *param_1,uint param_2)

{
  void *_Dst;
  longlong lVar1;
  
  lVar1 = 0;
  if (param_2 < *(uint *)((longlong)param_1 + 0xc)) {
    lVar1 = *(longlong *)(*param_1 + (longlong)(int)param_2 * 8);
    _Dst = (void *)(*param_1 + (longlong)(int)param_2 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),
            (longlong)(int)((*(uint *)((longlong)param_1 + 0xc) - param_2) + -1) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
  }
  if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
     (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
    FUN_18047cb30(param_1);
  }
  if (lVar1 != 0) {
    FUN_18059bac0(lVar1);
  }
  return;
}



############ FUN_ 18059bac0 size=210 ############

void FUN_18059bac0(longlong *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong lVar5;
  int iVar6;
  
  lVar2 = param_1[1];
  if (lVar2 != 0) {
    lVar5 = *param_1;
    if (lVar5 != 0) {
      lVar5 = lVar5 + 0x10;
    }
    iVar1 = *(int *)(lVar2 + 0x3c);
    iVar6 = 0;
    lVar3 = 0;
    if (0 < iVar1) {
      do {
        if (lVar5 == *(longlong *)(*(longlong *)(lVar2 + 0x30) + lVar3 * 8)) {
          _Dst = (void *)(*(longlong *)(lVar2 + 0x30) + (longlong)iVar6 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar6) + -1) << 3);
          *(int *)(lVar2 + 0x3c) = *(int *)(lVar2 + 0x3c) + -1;
          iVar1 = *(int *)(lVar2 + 0x3c);
          iVar6 = 0;
          if (0 < iVar1 * 2) {
            iVar6 = iVar1 * 2;
          }
          if (iVar6 < *(int *)(lVar2 + 0x38)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar2 + 0x38)) {
              FUN_18047cb30(lVar2 + 0x30);
            }
          }
          break;
        }
        iVar6 = iVar6 + 1;
        lVar3 = lVar3 + 1;
      } while (lVar3 < iVar1);
    }
  }
  if (((int)param_1[2] != 0) && (plVar4 = (longlong *)FUN_1805989c0(), param_1[4] == *plVar4)) {
    glDeleteTextures(1,param_1 + 2);
    param_1[2] = 0;
    *(undefined4 *)(param_1 + 3) = 0;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18124e930 size=126 ############

void FUN_18124e930(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  void *_Memory;
  int iVar2;
  
  uVar1 = *param_2;
  *param_2 = 0;
  iVar2 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar2) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined8 *)(*param_1 + (longlong)iVar2 * 8) = uVar1;
  _Memory = (void *)*param_2;
  if (_Memory != (void *)0x0) {
    FUN_1804a9d80(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 1804a79b0 size=322 ############

void FUN_1804a79b0(longlong *param_1,undefined8 param_2)

{
  int *piVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  uint uVar6;
  longlong lVar7;
  undefined1 local_res10;
  
  if ((int)param_2 != (int)((ulonglong)param_2 >> 0x20)) {
    FUN_1804abd40();
    iVar4 = *(int *)((longlong)param_1 + 0xc) + 1;
    if ((int)param_1[1] < iVar4) {
      FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar4 / 2 & 0xfffffff8);
    }
    iVar4 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar4 + 1;
    *(undefined8 *)(*param_1 + (longlong)iVar4 * 8) = param_2;
    lVar5 = *param_1;
    lVar7 = lVar5 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8;
    FUN_1804b14c0(lVar5,lVar7,lVar7 - lVar5 >> 3,local_res10);
    uVar6 = *(int *)((longlong)param_1 + 0xc) - 1;
    if (0 < (int)uVar6) {
      lVar7 = (longlong)(int)uVar6 * 8;
      lVar5 = lVar7;
      do {
        lVar2 = *param_1;
        piVar1 = (int *)(lVar5 + -8 + lVar2);
        if (piVar1[1] == *(int *)(lVar5 + lVar2)) {
          iVar4 = *(int *)(lVar5 + lVar2 + 4);
          piVar1[1] = iVar4;
          if (iVar4 < *piVar1) {
            *piVar1 = iVar4;
          }
          if (uVar6 < *(uint *)((longlong)param_1 + 0xc)) {
            memmove((void *)(*param_1 + lVar7),(void *)(*param_1 + lVar7 + 8),
                    (longlong)(int)((*(uint *)((longlong)param_1 + 0xc) - uVar6) + -1) << 3);
            *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
            iVar4 = *(int *)((longlong)param_1 + 0xc);
            iVar3 = 0;
            if (0 < iVar4 * 2) {
              iVar3 = iVar4 * 2;
            }
            if (iVar3 < (int)param_1[1]) {
              if (iVar4 < 8) {
                iVar4 = 8;
              }
              if (iVar4 < (int)param_1[1]) {
                FUN_18047cb30(param_1);
              }
            }
          }
        }
        uVar6 = uVar6 - 1;
        lVar7 = lVar7 + -8;
        lVar5 = lVar5 + -8;
      } while (0 < (int)uVar6);
    }
  }
  return;
}



############ FUN_ 1804abd40 size=539 ############

void FUN_1804abd40(longlong *param_1,undefined8 param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  void *_Src;
  int iVar6;
  int *piVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  int iVar11;
  undefined8 local_res8;
  undefined8 local_res10;
  
  uVar9 = *(uint *)((longlong)param_1 + 0xc);
  iVar2 = 0;
  iVar6 = 0;
  iVar11 = 0;
  iVar4 = iVar11;
  if (uVar9 != 0) {
    if (0 < (int)uVar9) {
      iVar6 = (int)*(undefined8 *)*param_1;
      iVar2 = (int)((ulonglong)*(undefined8 *)(*param_1 + (longlong)(int)(uVar9 - 1) * 8) >> 0x20);
    }
    iVar11 = iVar6;
    iVar4 = iVar6;
    if (iVar6 < iVar2) {
      iVar11 = iVar2;
    }
  }
  iVar6 = (int)param_2;
  if ((((iVar6 < iVar11) && (iVar2 = (int)((ulonglong)param_2 >> 0x20), iVar4 < iVar2)) &&
      (iVar6 != iVar2)) && (iVar11 = uVar9 - 1, -1 < iVar11)) {
    lVar10 = (longlong)iVar11 * 8;
    do {
      piVar7 = (int *)(*param_1 + lVar10);
      iVar4 = piVar7[1];
      if (iVar4 <= iVar6) {
        return;
      }
      iVar8 = *piVar7;
      if (iVar8 < iVar2) {
        if (((int)*(undefined8 *)piVar7 < iVar6) ||
           (iVar2 < (int)((ulonglong)*(undefined8 *)piVar7 >> 0x20))) {
          if (iVar6 < iVar8) {
            if (iVar4 < iVar2) goto LAB_1804abf11;
            *piVar7 = iVar2;
            if (iVar4 < iVar2) {
              piVar7[1] = iVar2;
            }
          }
          else if (iVar4 < iVar2) {
LAB_1804abf11:
            piVar7[1] = iVar6;
            if (iVar6 < iVar8) {
              *piVar7 = iVar6;
            }
          }
          else {
            if (iVar6 < iVar8) {
              iVar8 = iVar6;
            }
            iVar5 = iVar8;
            if (iVar8 < iVar6) {
              iVar5 = iVar6;
            }
            local_res10 = CONCAT44(iVar5,iVar8);
            iVar3 = iVar2;
            if (iVar2 < iVar4) {
              iVar3 = iVar4;
            }
            iVar4 = iVar2;
            if (iVar2 < iVar3) {
              iVar4 = iVar3;
            }
            *(undefined8 *)piVar7 = local_res10;
            local_res8 = CONCAT44(iVar4,iVar2);
            if (iVar8 == piVar7[1]) {
              local_res10 = local_res8;
            }
            *(undefined8 *)piVar7 = local_res10;
            if ((iVar8 != iVar5) && (iVar2 != iVar4)) {
              iVar8 = *(int *)((longlong)param_1 + 0xc);
              iVar4 = iVar8 + 1;
              if ((int)param_1[1] < iVar4) {
                if (iVar4 < 0) {
                  iVar4 = iVar8 + 2;
                }
                FUN_18047cb30(param_1,iVar8 + 9 + (iVar4 >> 1) & 0xfffffff8);
              }
              uVar1 = *(uint *)((longlong)param_1 + 0xc);
              if (uVar9 < uVar1) {
                _Src = (void *)(*param_1 + (longlong)(int)uVar9 * 8);
                memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - uVar9) << 3);
                *(undefined8 *)(*param_1 + (longlong)(int)uVar9 * 8) = local_res8;
                *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
              }
              else {
                *(undefined8 *)(*param_1 + (longlong)(int)uVar1 * 8) = local_res8;
                *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
              }
            }
          }
        }
        else {
          FUN_1804af820(param_1,iVar11);
        }
      }
      uVar9 = uVar9 - 1;
      lVar10 = lVar10 + -8;
      iVar11 = iVar11 + -1;
    } while (-1 < iVar11);
  }
  return;
}



############ FUN_ 1804ac2c0 size=237 ############

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

void FUN_1804ac2c0(longlong *param_1)

{
  int iVar1;
  longlong *plVar2;
  void *_Dst;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  
  plVar2 = param_1 + 1;
  if ((0 < *(int *)((longlong)param_1 + 0x14)) &&
     (lVar4 = *(longlong *)(*plVar2 + (longlong)(*(int *)((longlong)param_1 + 0x14) + -1) * 8),
     lVar4 != 0)) {
    lVar5 = *param_1;
    *param_1 = lVar4;
    if (lVar5 != 0) {
      FUN_1804af4c0(lVar5);
    }
    iVar3 = *(int *)((longlong)param_1 + 0x14);
    if (iVar3 < 2) {
      *(undefined4 *)((longlong)param_1 + 0x14) = 0;
      if ((int)param_1[2] != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*plVar2);
      }
      *(undefined4 *)(param_1 + 2) = 0;
      return;
    }
    iVar1 = iVar3 + -1;
    iVar6 = iVar3;
    if (iVar3 < 0) {
      iVar6 = 0;
    }
    iVar7 = 0;
    if ((-1 < iVar1) && (iVar7 = iVar1, iVar3 < iVar1)) {
      iVar7 = iVar3;
    }
    iVar6 = iVar6 - iVar7;
    if (0 < iVar6) {
      _Dst = (void *)(*plVar2 + (longlong)iVar7 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + (longlong)iVar6 * 8),
              (longlong)((iVar3 - iVar7) - iVar6) << 3);
      *(int *)((longlong)param_1 + 0x14) = *(int *)((longlong)param_1 + 0x14) - iVar6;
      if ((*(int *)((longlong)param_1 + 0x14) * 2 < (int)param_1[2]) &&
         (*(int *)((longlong)param_1 + 0x14) < (int)param_1[2])) {
        FUN_18047cb30();
      }
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
  }
  return;
}



############ FUN_ 1804ac090 size=378 ############

void FUN_1804ac090(longlong *param_1,int param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  longlong *_Memory;
  void *_Dst;
  int iVar7;
  int iVar8;
  longlong *plVar9;
  longlong *local_38;
  undefined8 local_30;
  
  iVar3 = *(int *)((longlong)param_1 + 0xc);
  iVar7 = param_2 + 1;
  iVar8 = 0;
  if ((-1 < iVar7) && (iVar8 = iVar7, iVar3 < iVar7)) {
    iVar8 = iVar3;
  }
  if (param_2 < 0) {
    param_2 = 0;
  }
  else if (iVar3 < param_2) {
    param_2 = iVar3;
  }
  iVar8 = iVar8 - param_2;
  if (0 < iVar8) {
    lVar4 = *param_1;
    local_38 = (longlong *)0x0;
    local_30 = 0;
    FUN_18047cb30(&local_38,iVar8 / 2 + 8 + iVar8 & 0xfffffff8);
    plVar9 = local_38;
    iVar3 = local_30._4_4_;
    memcpy(local_38 + local_30._4_4_,(void *)((longlong)param_2 * 8 + lVar4),(longlong)iVar8 * 8);
    _Dst = (void *)(*param_1 + (longlong)param_2 * 8);
    local_30 = CONCAT44(iVar3 + iVar8,(undefined4)local_30);
    memmove(_Dst,(void *)((longlong)iVar8 * 8 + (longlong)_Dst),
            (longlong)((*(int *)((longlong)param_1 + 0xc) - param_2) - iVar8) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) - iVar8;
    plVar2 = plVar9 + (iVar3 + iVar8);
    _Memory = plVar9;
    while( true ) {
      if (plVar9 == plVar2) {
        if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
           (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
          FUN_18047cb30(param_1);
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      puVar5 = (undefined8 *)*plVar9;
      if (puVar5 != (undefined8 *)0x0) break;
      plVar9 = plVar9 + 1;
      _Memory = local_38;
    }
    puVar6 = (undefined8 *)puVar5[9];
    if (puVar6 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar6 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*puVar6)(puVar6,1);
      }
    }
    FUN_1812a0e00(puVar5 + 3);
    *(undefined4 *)((longlong)puVar5 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar5);
  }
  return;
}



############ FUN_ 1812aaaf0 size=418 ############

void FUN_1812aaaf0(longlong param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  byte bVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  void *pvVar9;
  longlong *_Dst;
  void *_Memory;
  void *pvVar10;
  longlong *plVar11;
  longlong lVar12;
  void *local_40;
  undefined8 local_38;
  
  pvVar9 = (void *)0x0;
  local_40 = (void *)0x0;
  local_38 = 0;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x40));
  iVar6 = *(int *)(param_1 + 0x14) + -1;
  _Memory = pvVar9;
  if (-1 < iVar6) {
    bVar3 = (byte)iVar6 & 0x1f;
    uVar7 = 1 << bVar3 | 1U >> 0x20 - bVar3;
    lVar12 = (longlong)iVar6 * 8;
    pvVar10 = pvVar9;
    do {
      iVar8 = (int)pvVar9;
      if ((iVar6 <= *(int *)(param_1 + 0x38)) && (-1 < iVar6)) {
        lVar5 = *(longlong *)(param_1 + 0x18);
        if (lVar5 == 0) {
          lVar5 = param_1 + 0x20;
        }
        if ((*(uint *)(lVar5 + (longlong)(iVar6 >> 5) * 4) & uVar7) != 0) {
          uVar1 = *(undefined8 *)(lVar12 + *(longlong *)(param_1 + 8));
          iVar4 = iVar8 + 1;
          if ((int)pvVar10 < iVar4) {
            if (iVar4 < 0) {
              iVar4 = iVar8 + 2;
            }
            FUN_18047cb30(&local_40,iVar8 + 9 + (iVar4 >> 1) & 0xfffffff8);
            pvVar10 = (void *)(local_38 & 0xffffffff);
            _Memory = local_40;
            iVar8 = local_38._4_4_;
          }
          pvVar9 = (void *)(ulonglong)(iVar8 + 1U);
          local_38 = CONCAT44(iVar8 + 1U,(undefined4)local_38);
          *(undefined8 *)((longlong)_Memory + (longlong)iVar8 * 8) = uVar1;
        }
      }
      uVar7 = uVar7 >> 1 | (uint)((uVar7 & 1) != 0) << 0x1f;
      lVar12 = lVar12 + -8;
      iVar6 = iVar6 + -1;
    } while (-1 < iVar6);
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  if (*(int *)(param_1 + 0x10) == 0) {
    *(undefined4 *)(param_1 + 0x10) = 0;
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x40));
    iVar6 = (int)pvVar9 + -1;
    lVar12 = (longlong)iVar6;
    if (-1 < iVar6) {
      do {
        (**(code **)(**(longlong **)((longlong)_Memory + lVar12 * 8) + 0x10))();
        lVar12 = lVar12 + -1;
      } while (-1 < lVar12);
    }
    if (-1 < iVar6) {
      _Dst = (longlong *)((longlong)_Memory + (longlong)iVar6 * 8);
      plVar11 = _Dst;
      do {
        puVar2 = (undefined8 *)*plVar11;
        memmove(_Dst,_Dst + 1,(longlong)(((int)pvVar9 - iVar6) + -1) << 3);
        pvVar9 = (void *)(ulonglong)((int)pvVar9 - 1);
        if (puVar2 != (undefined8 *)0x0) {
          (**(code **)*puVar2)(puVar2,1);
        }
        _Dst = _Dst + -1;
        plVar11 = plVar11 + -1;
        iVar6 = iVar6 + -1;
      } while (-1 < iVar6);
    }
                    /* WARNING: Could not recover jumptable at 0x0001812aac8f. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
    free(_Memory);
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 18134a370 size=428 ############

void FUN_18134a370(longlong *param_1,longlong param_2,undefined1 param_3)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  longlong *plVar8;
  undefined8 *local_res8;
  longlong local_res10;
  
  lVar7 = 0;
  lVar4 = lVar7;
  if (param_1[0x30] != 0) {
    lVar4 = *(longlong *)(param_1[0x30] + 0x10);
  }
  if (lVar4 != param_2) {
    FUN_181317850();
    plVar5 = (longlong *)FUN_1804de690(&local_res8,param_2);
    local_res10 = param_1[0x30];
    param_1[0x30] = *plVar5;
    *plVar5 = local_res10;
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    *(undefined1 *)((longlong)param_1 + 0x1a6) = param_3;
    lVar4 = param_1[0x30];
    if ((lVar4 != 0) && (*(longlong *)(lVar4 + 0x10) != 0)) {
      if ((lVar4 != 0) && (plVar5 = *(longlong **)(lVar4 + 0x10), plVar5 != (longlong *)0x0)) {
        (**(code **)(*plVar5 + 0x58))(plVar5,1);
        FUN_181343cc0(param_1 + 0x1a,plVar5,0xffffffff);
      }
      local_res8 = (undefined8 *)0x0;
      FUN_181317310(param_1,0);
      plVar5 = param_1 + 0x16;
      lVar4 = lVar7;
      if (param_1[0x30] != 0) {
        lVar4 = *(longlong *)(param_1[0x30] + 0x10);
      }
      if (plVar5 != (longlong *)0x0) {
        plVar8 = (longlong *)(lVar4 + 0x80);
        plVar6 = (longlong *)*plVar8;
        iVar3 = *(int *)(lVar4 + 0x8c);
        plVar2 = plVar6 + iVar3;
        for (; plVar6 != plVar2; plVar6 = plVar6 + 1) {
          if (plVar5 == (longlong *)*plVar6) goto LAB_18134a4d6;
        }
        if (*(int *)(lVar4 + 0x88) < iVar3 + 1) {
          FUN_18047cb30(plVar8,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
        }
        iVar3 = *(int *)(lVar4 + 0x8c);
        *(int *)(lVar4 + 0x8c) = iVar3 + 1;
        *(longlong **)(*plVar8 + (longlong)iVar3 * 8) = plVar5;
      }
    }
LAB_18134a4d6:
    if (param_1[0x30] != 0) {
      lVar7 = *(longlong *)(param_1[0x30] + 0x10);
    }
    if (*(code **)(*param_1 + 0x160) != FUN_181317a50) {
      (**(code **)(*param_1 + 0x160))(param_1,lVar7);
    }
    FUN_1813165e0(param_1);
  }
  return;
}



############ FUN_ 1812a72f0 size=156 ############

undefined1 FUN_1812a72f0(longlong param_1,longlong param_2)

{
  void *_Dst;
  undefined1 uVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  
  iVar4 = 0;
  lVar3 = 0;
  iVar2 = *(int *)(param_1 + 0x2c);
  if (0 < iVar2) {
    do {
      if (param_2 == *(longlong *)(*(longlong *)(param_1 + 0x20) + lVar3 * 8)) {
        _Dst = (void *)(*(longlong *)(param_1 + 0x20) + (longlong)iVar4 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar4) + -1) << 3);
        *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1;
        iVar2 = *(int *)(param_1 + 0x2c);
        iVar4 = 0;
        if (0 < iVar2 * 2) {
          iVar4 = iVar2 * 2;
        }
        if (iVar4 < *(int *)(param_1 + 0x28)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(param_1 + 0x28)) {
            FUN_18047cb30(param_1 + 0x20);
          }
        }
        break;
      }
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
    } while (lVar3 < iVar2);
  }
  LOCK();
  uVar1 = *(undefined1 *)(param_1 + 0x30);
  *(undefined1 *)(param_1 + 0x30) = 0 < *(int *)(param_1 + 0x2c);
  UNLOCK();
  return uVar1;
}



############ FUN_ 18051a5c0 size=370 ############

void FUN_18051a5c0(longlong *param_1,int param_2,int param_3)

{
  int iVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *_Memory;
  void *_Dst;
  longlong *plVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int iVar7;
  int iVar8;
  longlong *local_38;
  undefined8 local_30;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  param_3 = param_2 + param_3;
  uVar5 = 0;
  iVar8 = 0;
  iVar7 = iVar8;
  if ((-1 < param_3) && (iVar7 = param_3, iVar1 < param_3)) {
    iVar7 = iVar1;
  }
  if ((-1 < param_2) && (iVar8 = param_2, iVar1 < param_2)) {
    iVar8 = iVar1;
  }
  iVar7 = iVar7 - iVar8;
  if (iVar7 < 1) {
    return;
  }
  lVar2 = *param_1;
  local_38 = (longlong *)0x0;
  local_30 = 0;
  FUN_18047cb30(&local_38,iVar7 / 2 + 8 + iVar7 & 0xfffffff8);
  _Memory = local_38;
  iVar1 = local_30._4_4_;
  memcpy(local_38 + local_30._4_4_,(void *)((longlong)iVar8 * 8 + lVar2),(longlong)iVar7 * 8);
  _Dst = (void *)(*param_1 + (longlong)iVar8 * 8);
  memmove(_Dst,(void *)((longlong)iVar7 * 8 + (longlong)_Dst),
          (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar8) - iVar7) << 3);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) - iVar7;
  uVar6 = (ulonglong)((longlong)(_Memory + (iVar1 + iVar7)) + (7 - (longlong)_Memory)) >> 3;
  if (_Memory + (iVar1 + iVar7) < _Memory) {
    uVar6 = uVar5;
  }
  plVar4 = _Memory;
  if (uVar6 != 0) {
    do {
      puVar3 = (undefined8 *)*plVar4;
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      plVar4 = plVar4 + 1;
      uVar5 = uVar5 + 1;
    } while (uVar5 != uVar6);
  }
  if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
     (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
    FUN_18047cb30(param_1);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812c8710 size=287 ############

void FUN_1812c8710(longlong param_1,longlong param_2)

{
  void *_Dst;
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong *plVar6;
  int iVar7;
  longlong *plVar8;
  
  lVar3 = *(longlong *)(param_1 + 8);
  if (param_2 != lVar3) {
    if (lVar3 != 0) {
      iVar2 = *(int *)(lVar3 + 0x8c);
      lVar4 = *(longlong *)(lVar3 + 0x80);
      iVar7 = 0;
      lVar5 = 0;
      if (0 < iVar2) {
        do {
          if (param_1 == *(longlong *)(lVar4 + lVar5 * 8)) {
            _Dst = (void *)(lVar4 + (longlong)iVar7 * 8);
            memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
            *(int *)(lVar3 + 0x8c) = *(int *)(lVar3 + 0x8c) + -1;
            iVar2 = *(int *)(lVar3 + 0x8c);
            iVar7 = 0;
            if (0 < iVar2 * 2) {
              iVar7 = iVar2 * 2;
            }
            if (iVar7 < *(int *)(lVar3 + 0x88)) {
              if (iVar2 < 8) {
                iVar2 = 8;
              }
              if (iVar2 < *(int *)(lVar3 + 0x88)) {
                FUN_18047cb30((longlong *)(lVar3 + 0x80));
              }
            }
            break;
          }
          iVar7 = iVar7 + 1;
          lVar5 = lVar5 + 1;
        } while (lVar5 < iVar2);
      }
    }
    *(longlong *)(param_1 + 8) = param_2;
    FUN_1812c8590(param_1);
    lVar3 = *(longlong *)(param_1 + 8);
    plVar8 = (longlong *)(lVar3 + 0x80);
    plVar6 = (longlong *)*plVar8;
    iVar2 = *(int *)(lVar3 + 0x8c);
    plVar1 = plVar6 + iVar2;
    for (; plVar6 != plVar1; plVar6 = plVar6 + 1) {
      if (param_1 == *plVar6) goto LAB_1812c8817;
    }
    if (*(int *)(lVar3 + 0x88) < iVar2 + 1) {
      FUN_18047cb30(plVar8,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar3 + 0x8c);
    *(int *)(lVar3 + 0x8c) = iVar2 + 1;
    *(longlong *)(*plVar8 + (longlong)iVar2 * 8) = param_1;
LAB_1812c8817:
    FUN_1812c81b0(param_1);
  }
  return;
}



############ FUN_ 1812c8590 size=365 ############

void FUN_1812c8590(longlong param_1)

{
  int *piVar1;
  void *_Dst;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  int iVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong *plVar12;
  undefined8 *local_res8;
  undefined8 local_res10;
  
  uVar11 = 0;
  uVar5 = uVar11;
  if (*(longlong *)(param_1 + 0x38) != 0) {
    uVar5 = *(ulonglong *)(*(longlong *)(param_1 + 0x38) + 0x10);
  }
  if (uVar5 != 0) {
    iVar3 = *(int *)(uVar5 + 0x8c);
    lVar4 = *(longlong *)(uVar5 + 0x80);
    uVar6 = uVar11;
    uVar10 = uVar11;
    if (0 < iVar3) {
      do {
        iVar9 = (int)uVar10;
        if (param_1 == *(longlong *)(lVar4 + uVar6 * 8)) {
          _Dst = (void *)(lVar4 + (longlong)iVar9 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar3 - iVar9) + -1) << 3);
          *(int *)(uVar5 + 0x8c) = *(int *)(uVar5 + 0x8c) + -1;
          iVar3 = *(int *)(uVar5 + 0x8c);
          iVar9 = 0;
          if (0 < iVar3 * 2) {
            iVar9 = iVar3 * 2;
          }
          if (iVar9 < *(int *)(uVar5 + 0x88)) {
            if (iVar3 < 8) {
              iVar3 = 8;
            }
            if (iVar3 < *(int *)(uVar5 + 0x88)) {
              FUN_18047cb30((longlong *)(uVar5 + 0x80));
            }
          }
          break;
        }
        uVar10 = (ulonglong)(iVar9 + 1);
        uVar6 = uVar6 + 1;
      } while ((longlong)uVar6 < (longlong)iVar3);
    }
  }
  uVar5 = uVar11;
  if (*(longlong *)(param_1 + 8) != 0) {
    uVar5 = *(ulonglong *)(*(longlong *)(param_1 + 8) + 0x18);
  }
  puVar7 = (undefined8 *)FUN_1804de690(&local_res8,uVar5);
  local_res10 = *(undefined8 *)(param_1 + 0x38);
  *(undefined8 *)(param_1 + 0x38) = *puVar7;
  *puVar7 = local_res10;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  if (*(longlong *)(param_1 + 0x38) != 0) {
    uVar11 = *(ulonglong *)(*(longlong *)(param_1 + 0x38) + 0x10);
  }
  if (uVar11 != 0) {
    plVar12 = (longlong *)(uVar11 + 0x80);
    plVar8 = (longlong *)*plVar12;
    iVar3 = *(int *)(uVar11 + 0x8c);
    plVar2 = plVar8 + iVar3;
    for (; plVar8 != plVar2; plVar8 = plVar8 + 1) {
      if (param_1 == *plVar8) {
        return;
      }
    }
    if (*(int *)(uVar11 + 0x88) < iVar3 + 1) {
      FUN_18047cb30(plVar12,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(uVar11 + 0x8c);
    *(int *)(uVar11 + 0x8c) = iVar3 + 1;
    *(longlong *)(*plVar12 + (longlong)iVar3 * 8) = param_1;
  }
  return;
}



############ FUN_ 181322bc0 size=224 ############

undefined8 *
FUN_181322bc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  undefined1 uVar5;
  longlong *plVar6;
  longlong lVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  *param_1 = juce::ComponentMovementWatcher::vftable;
  FUN_1804de690(param_1 + 1);
  lVar7 = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  *(undefined1 *)(param_1 + 5) = 0;
  uVar5 = FUN_181345240(param_2);
  *(undefined1 *)((longlong)param_1 + 0x29) = uVar5;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x34) = 0;
  lVar4 = param_1[1];
  if (lVar4 != 0) {
    lVar7 = *(longlong *)(lVar4 + 0x10);
  }
  plVar1 = (longlong *)(lVar7 + 0x80);
  plVar6 = (longlong *)*plVar1;
  iVar3 = *(int *)(lVar7 + 0x8c);
  plVar2 = plVar6 + iVar3;
  for (; plVar6 != plVar2; plVar6 = plVar6 + 1) {
    if (param_1 == (undefined8 *)*plVar6) goto LAB_181322c87;
  }
  if (*(int *)(lVar7 + 0x88) < iVar3 + 1) {
    FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8,(longlong)iVar3,param_4,uVar8);
  }
  iVar3 = *(int *)(lVar7 + 0x8c);
  *(int *)(lVar7 + 0x8c) = iVar3 + 1;
  *(undefined8 **)(*plVar1 + (longlong)iVar3 * 8) = param_1;
LAB_181322c87:
  FUN_1813225e0(param_1);
  return param_1;
}



############ FUN_ 1813225e0 size=237 ############

void FUN_1813225e0(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  int iVar4;
  longlong *plVar5;
  longlong lVar6;
  
  lVar6 = 0;
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar6 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  lVar6 = *(longlong *)(lVar6 + 0x18);
  do {
    if (lVar6 == 0) {
      return;
    }
    if (param_1 != 0) {
      plVar1 = (longlong *)(lVar6 + 0x80);
      plVar5 = (longlong *)*plVar1;
      iVar4 = *(int *)(lVar6 + 0x8c);
      plVar2 = plVar5 + iVar4;
      for (; plVar5 != plVar2; plVar5 = plVar5 + 1) {
        if (param_1 == *plVar5) goto LAB_181322673;
      }
      iVar3 = iVar4 + 1;
      if (*(int *)(lVar6 + 0x88) < iVar3) {
        if (iVar3 < 0) {
          iVar3 = iVar4 + 2;
        }
        FUN_18047cb30(plVar1,iVar4 + 9 + (iVar3 >> 1) & 0xfffffff8);
      }
      iVar4 = *(int *)(lVar6 + 0x8c);
      *(int *)(lVar6 + 0x8c) = iVar4 + 1;
      *(longlong *)(*plVar1 + (longlong)iVar4 * 8) = param_1;
    }
LAB_181322673:
    iVar3 = *(int *)(param_1 + 0x24);
    iVar4 = iVar3 + 1;
    if (*(int *)(param_1 + 0x20) < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iVar3 + 2;
      }
      FUN_18047cb30(param_1 + 0x18,iVar3 + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iVar4 = *(int *)(param_1 + 0x24);
    *(int *)(param_1 + 0x24) = iVar4 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar4 * 8) = lVar6;
    lVar6 = *(longlong *)(lVar6 + 0x18);
  } while( true );
}



############ FUN_ 181351570 size=146 ############

void FUN_181351570(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  longlong *local_res10 [3];
  
  if (param_2 != 0) {
    if (*(int *)((longlong)param_1 + 0x14) == 0) {
      local_res10[0] = param_1;
      FUN_180527e00(*param_1 + 0x20,local_res10);
    }
    plVar3 = (longlong *)param_1[1];
    iVar2 = *(int *)((longlong)param_1 + 0x14);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) {
        return;
      }
    }
    if ((int)param_1[2] < iVar2 + 1) {
      FUN_18047cb30(param_1 + 1,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)((longlong)param_1 + 0x14);
    *(int *)((longlong)param_1 + 0x14) = iVar2 + 1;
    *(longlong *)(param_1[1] + (longlong)iVar2 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812be710 size=180 ############

void FUN_1812be710(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  iVar1 = *(int *)(param_1 + 0x4c);
  iVar3 = 0;
  lVar2 = 0;
  if (0 < iVar1) {
    do {
      if (param_2 == *(longlong *)(*(longlong *)(param_1 + 0x40) + lVar2 * 8)) {
        _Dst = (void *)(*(longlong *)(param_1 + 0x40) + (longlong)iVar3 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3);
        *(int *)(param_1 + 0x4c) = *(int *)(param_1 + 0x4c) + -1;
        iVar1 = *(int *)(param_1 + 0x4c);
        iVar3 = 0;
        if (0 < iVar1 * 2) {
          iVar3 = iVar1 * 2;
        }
        if (iVar3 < *(int *)(param_1 + 0x48)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(param_1 + 0x48)) {
            FUN_18047cb30(param_1 + 0x40);
          }
        }
        break;
      }
      iVar3 = iVar3 + 1;
      lVar2 = lVar2 + 1;
    } while (lVar2 < iVar1);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812be7bd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  return;
}



############ FUN_ 1804da2a0 size=1279 ############

longlong * FUN_1804da2a0(longlong *param_1,longlong param_2,undefined4 *param_3,undefined8 param_4)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  char cVar5;
  int iVar6;
  undefined8 *puVar7;
  void *_Src;
  undefined8 *puVar8;
  ulonglong uVar9;
  uint uVar10;
  ulonglong uVar12;
  longlong lVar13;
  undefined8 *puVar14;
  undefined8 local_res10;
  undefined4 *local_res18;
  ulonglong uVar11;
  
  *param_1 = param_2;
  param_1[1] = (longlong)param_3;
  uVar9 = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined4 *)(param_1 + 0xb) = 0;
  local_res18 = param_3;
  FUN_18047e060(param_1 + 9,*(int *)((longlong)param_1 + 0x54) + 0x65,param_3,param_4,
                0xfffffffffffffffe);
  if (*(int *)((longlong)param_1 + 0x54) == 0) {
    puVar7 = (undefined8 *)param_1[9];
  }
  else {
    memmove((void *)(param_1[9] + 0x328),(void *)param_1[9],
            (longlong)*(int *)((longlong)param_1 + 0x54) << 3);
    puVar7 = (undefined8 *)param_1[9];
  }
  *puVar7 = 0;
  puVar7[1] = 0;
  puVar7[2] = 0;
  puVar7[3] = 0;
  puVar7[4] = 0;
  puVar7[5] = 0;
  puVar7[6] = 0;
  puVar7[7] = 0;
  puVar7[8] = 0;
  puVar7[9] = 0;
  puVar7[10] = 0;
  puVar7[0xb] = 0;
  puVar7[0xc] = 0;
  puVar7[0xd] = 0;
  puVar7[0xe] = 0;
  puVar7[0xf] = 0;
  puVar7[0x10] = 0;
  puVar7[0x11] = 0;
  puVar7[0x12] = 0;
  puVar7[0x13] = 0;
  puVar7[0x14] = 0;
  puVar7[0x15] = 0;
  puVar7[0x16] = 0;
  puVar7[0x17] = 0;
  puVar7[0x18] = 0;
  puVar7[0x19] = 0;
  puVar7[0x1a] = 0;
  puVar7[0x1b] = 0;
  puVar7[0x1c] = 0;
  puVar7[0x1d] = 0;
  puVar7[0x1e] = 0;
  puVar7[0x1f] = 0;
  puVar7[0x20] = 0;
  puVar7[0x21] = 0;
  puVar7[0x22] = 0;
  puVar7[0x23] = 0;
  puVar7[0x24] = 0;
  puVar7[0x25] = 0;
  puVar7[0x26] = 0;
  puVar7[0x27] = 0;
  puVar7[0x28] = 0;
  puVar7[0x29] = 0;
  puVar7[0x2a] = 0;
  puVar7[0x2b] = 0;
  puVar7[0x2c] = 0;
  puVar7[0x2d] = 0;
  puVar7[0x2e] = 0;
  puVar7[0x2f] = 0;
  puVar7[0x30] = 0;
  puVar7[0x31] = 0;
  puVar7[0x32] = 0;
  puVar7[0x33] = 0;
  puVar7[0x34] = 0;
  puVar7[0x35] = 0;
  puVar7[0x36] = 0;
  puVar7[0x37] = 0;
  puVar7[0x38] = 0;
  puVar7[0x39] = 0;
  puVar7[0x3a] = 0;
  puVar7[0x3b] = 0;
  puVar7[0x3c] = 0;
  puVar7[0x3d] = 0;
  puVar7[0x3e] = 0;
  puVar7[0x3f] = 0;
  puVar7[0x40] = 0;
  puVar7[0x41] = 0;
  puVar7[0x42] = 0;
  puVar7[0x43] = 0;
  puVar7[0x44] = 0;
  puVar7[0x45] = 0;
  puVar7[0x46] = 0;
  puVar7[0x47] = 0;
  puVar7[0x48] = 0;
  puVar7[0x49] = 0;
  puVar7[0x4a] = 0;
  puVar7[0x4b] = 0;
  puVar7[0x4c] = 0;
  puVar7[0x4d] = 0;
  puVar7[0x4e] = 0;
  puVar7[0x4f] = 0;
  puVar7[0x50] = 0;
  puVar7[0x51] = 0;
  puVar7[0x52] = 0;
  puVar7[0x53] = 0;
  puVar7[0x54] = 0;
  puVar7[0x55] = 0;
  puVar7[0x56] = 0;
  puVar7[0x57] = 0;
  puVar7[0x58] = 0;
  puVar7[0x59] = 0;
  puVar7[0x5a] = 0;
  puVar7[0x5b] = 0;
  puVar7[0x5c] = 0;
  puVar7[0x5d] = 0;
  puVar7[0x5e] = 0;
  puVar7[0x5f] = 0;
  puVar7[0x60] = 0;
  puVar7[0x61] = 0;
  puVar7[0x62] = 0;
  puVar7[99] = 0;
  puVar7[100] = 0;
  *(int *)((longlong)param_1 + 0x54) = *(int *)((longlong)param_1 + 0x54) + 0x65;
  *(undefined4 *)(param_1 + 0xc) = 0;
  puVar14 = *(undefined8 **)(*param_1 + 400);
  puVar7 = puVar14 + *(int *)(*param_1 + 0x19c);
  do {
    if (puVar14 == puVar7) {
      local_res10 = 0x7ffffffe;
      FUN_1804dbb20(param_1 + 4,&local_res10);
      local_res10 = 0x7ffffffe;
      FUN_1804dbb20(param_1 + 6,&local_res10);
      uVar11 = uVar9;
      if (0 < *(int *)((longlong)param_1 + 0x1c)) {
        do {
          FUN_1804dbe40(param_1,*(undefined8 *)(uVar11 + param_1[2]),uVar9);
          FUN_1804dbbd0(param_1,param_1 + 4,uVar9);
          FUN_1804dbbd0(param_1,param_1 + 6,uVar9);
          uVar10 = (int)uVar9 + 1;
          uVar9 = (ulonglong)uVar10;
          uVar11 = uVar11 + 8;
        } while ((int)uVar10 < *(int *)((longlong)param_1 + 0x1c));
      }
      if (*(int *)(*param_1 + 0x3c) != (int)param_1[0xc]) {
        *(int *)(*param_1 + 0x3c) = (int)param_1[0xc];
        FUN_1812c0ce0();
      }
      *local_res18 = *(undefined4 *)((longlong)param_1 + 0x2c);
      local_res18[1] = *(undefined4 *)((longlong)param_1 + 0x3c);
      return param_1;
    }
    uVar4 = *puVar14;
    uVar10 = 0;
    if (0 < *(int *)((longlong)param_1 + 0x1c)) {
      lVar13 = *param_1;
      uVar1 = *(undefined4 *)(lVar13 + 0x19c);
      uVar11 = uVar9;
      uVar12 = uVar9;
      do {
        uVar10 = (uint)uVar11;
        cVar5 = FUN_1812bcc20(lVar13,uVar4,*(undefined8 *)(uVar12 + param_1[2]),uVar1);
        if (cVar5 != '\0') break;
        uVar10 = uVar10 + 1;
        uVar11 = (ulonglong)uVar10;
        uVar12 = uVar12 + 8;
      } while ((int)uVar10 < *(int *)((longlong)param_1 + 0x1c));
    }
    iVar2 = *(int *)((longlong)param_1 + 0x1c);
    iVar6 = iVar2 + 1;
    if ((int)param_1[3] < iVar6) {
      if (iVar6 < 0) {
        iVar6 = iVar2 + 2;
      }
      FUN_18047cb30(param_1 + 2,iVar2 + 9 + (iVar6 >> 1) & 0xfffffff8);
    }
    uVar3 = *(uint *)((longlong)param_1 + 0x1c);
    if (uVar10 < uVar3) {
      _Src = (void *)(param_1[2] + (longlong)(int)uVar10 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar3 - uVar10) << 3);
      puVar8 = (undefined8 *)(param_1[2] + (longlong)(int)uVar10 * 8);
    }
    else {
      puVar8 = (undefined8 *)(param_1[2] + (longlong)(int)uVar3 * 8);
    }
    *puVar8 = uVar4;
    *(int *)((longlong)param_1 + 0x1c) = *(int *)((longlong)param_1 + 0x1c) + 1;
    puVar14 = puVar14 + 1;
  } while( true );
}



############ FUN_ 1804da7a0 size=1279 ############

longlong * FUN_1804da7a0(longlong *param_1,longlong param_2,undefined4 *param_3,undefined8 param_4)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  char cVar5;
  int iVar6;
  undefined8 *puVar7;
  void *_Src;
  undefined8 *puVar8;
  ulonglong uVar9;
  uint uVar10;
  ulonglong uVar12;
  longlong lVar13;
  undefined8 *puVar14;
  undefined8 local_res10;
  undefined4 *local_res18;
  ulonglong uVar11;
  
  *param_1 = param_2;
  param_1[1] = (longlong)param_3;
  uVar9 = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined4 *)(param_1 + 0xb) = 0;
  local_res18 = param_3;
  FUN_18047e060(param_1 + 9,*(int *)((longlong)param_1 + 0x54) + 0x65,param_3,param_4,
                0xfffffffffffffffe);
  if (*(int *)((longlong)param_1 + 0x54) == 0) {
    puVar7 = (undefined8 *)param_1[9];
  }
  else {
    memmove((void *)(param_1[9] + 0x328),(void *)param_1[9],
            (longlong)*(int *)((longlong)param_1 + 0x54) << 3);
    puVar7 = (undefined8 *)param_1[9];
  }
  *puVar7 = 0;
  puVar7[1] = 0;
  puVar7[2] = 0;
  puVar7[3] = 0;
  puVar7[4] = 0;
  puVar7[5] = 0;
  puVar7[6] = 0;
  puVar7[7] = 0;
  puVar7[8] = 0;
  puVar7[9] = 0;
  puVar7[10] = 0;
  puVar7[0xb] = 0;
  puVar7[0xc] = 0;
  puVar7[0xd] = 0;
  puVar7[0xe] = 0;
  puVar7[0xf] = 0;
  puVar7[0x10] = 0;
  puVar7[0x11] = 0;
  puVar7[0x12] = 0;
  puVar7[0x13] = 0;
  puVar7[0x14] = 0;
  puVar7[0x15] = 0;
  puVar7[0x16] = 0;
  puVar7[0x17] = 0;
  puVar7[0x18] = 0;
  puVar7[0x19] = 0;
  puVar7[0x1a] = 0;
  puVar7[0x1b] = 0;
  puVar7[0x1c] = 0;
  puVar7[0x1d] = 0;
  puVar7[0x1e] = 0;
  puVar7[0x1f] = 0;
  puVar7[0x20] = 0;
  puVar7[0x21] = 0;
  puVar7[0x22] = 0;
  puVar7[0x23] = 0;
  puVar7[0x24] = 0;
  puVar7[0x25] = 0;
  puVar7[0x26] = 0;
  puVar7[0x27] = 0;
  puVar7[0x28] = 0;
  puVar7[0x29] = 0;
  puVar7[0x2a] = 0;
  puVar7[0x2b] = 0;
  puVar7[0x2c] = 0;
  puVar7[0x2d] = 0;
  puVar7[0x2e] = 0;
  puVar7[0x2f] = 0;
  puVar7[0x30] = 0;
  puVar7[0x31] = 0;
  puVar7[0x32] = 0;
  puVar7[0x33] = 0;
  puVar7[0x34] = 0;
  puVar7[0x35] = 0;
  puVar7[0x36] = 0;
  puVar7[0x37] = 0;
  puVar7[0x38] = 0;
  puVar7[0x39] = 0;
  puVar7[0x3a] = 0;
  puVar7[0x3b] = 0;
  puVar7[0x3c] = 0;
  puVar7[0x3d] = 0;
  puVar7[0x3e] = 0;
  puVar7[0x3f] = 0;
  puVar7[0x40] = 0;
  puVar7[0x41] = 0;
  puVar7[0x42] = 0;
  puVar7[0x43] = 0;
  puVar7[0x44] = 0;
  puVar7[0x45] = 0;
  puVar7[0x46] = 0;
  puVar7[0x47] = 0;
  puVar7[0x48] = 0;
  puVar7[0x49] = 0;
  puVar7[0x4a] = 0;
  puVar7[0x4b] = 0;
  puVar7[0x4c] = 0;
  puVar7[0x4d] = 0;
  puVar7[0x4e] = 0;
  puVar7[0x4f] = 0;
  puVar7[0x50] = 0;
  puVar7[0x51] = 0;
  puVar7[0x52] = 0;
  puVar7[0x53] = 0;
  puVar7[0x54] = 0;
  puVar7[0x55] = 0;
  puVar7[0x56] = 0;
  puVar7[0x57] = 0;
  puVar7[0x58] = 0;
  puVar7[0x59] = 0;
  puVar7[0x5a] = 0;
  puVar7[0x5b] = 0;
  puVar7[0x5c] = 0;
  puVar7[0x5d] = 0;
  puVar7[0x5e] = 0;
  puVar7[0x5f] = 0;
  puVar7[0x60] = 0;
  puVar7[0x61] = 0;
  puVar7[0x62] = 0;
  puVar7[99] = 0;
  puVar7[100] = 0;
  *(int *)((longlong)param_1 + 0x54) = *(int *)((longlong)param_1 + 0x54) + 0x65;
  *(undefined4 *)(param_1 + 0xc) = 0;
  puVar14 = *(undefined8 **)(*param_1 + 400);
  puVar7 = puVar14 + *(int *)(*param_1 + 0x19c);
  do {
    if (puVar14 == puVar7) {
      local_res10 = 0x7ffffffe;
      FUN_1804dbb20(param_1 + 4,&local_res10);
      local_res10 = 0x7ffffffe;
      FUN_1804dbb20(param_1 + 6,&local_res10);
      uVar11 = uVar9;
      if (0 < *(int *)((longlong)param_1 + 0x1c)) {
        do {
          FUN_1804dc2b0(param_1,*(undefined8 *)(uVar11 + param_1[2]),uVar9);
          FUN_1804dbbd0(param_1,param_1 + 4,uVar9);
          FUN_1804dbbd0(param_1,param_1 + 6,uVar9);
          uVar10 = (int)uVar9 + 1;
          uVar9 = (ulonglong)uVar10;
          uVar11 = uVar11 + 8;
        } while ((int)uVar10 < *(int *)((longlong)param_1 + 0x1c));
      }
      if (*(int *)(*param_1 + 0x3c) != (int)param_1[0xc]) {
        *(int *)(*param_1 + 0x3c) = (int)param_1[0xc];
        FUN_1812c0ce0();
      }
      *local_res18 = *(undefined4 *)((longlong)param_1 + 0x2c);
      local_res18[1] = *(undefined4 *)((longlong)param_1 + 0x3c);
      return param_1;
    }
    uVar4 = *puVar14;
    uVar10 = 0;
    if (0 < *(int *)((longlong)param_1 + 0x1c)) {
      lVar13 = *param_1;
      uVar1 = *(undefined4 *)(lVar13 + 0x19c);
      uVar11 = uVar9;
      uVar12 = uVar9;
      do {
        uVar10 = (uint)uVar11;
        cVar5 = FUN_1812bcc20(lVar13,uVar4,*(undefined8 *)(uVar12 + param_1[2]),uVar1);
        if (cVar5 != '\0') break;
        uVar10 = uVar10 + 1;
        uVar11 = (ulonglong)uVar10;
        uVar12 = uVar12 + 8;
      } while ((int)uVar10 < *(int *)((longlong)param_1 + 0x1c));
    }
    iVar2 = *(int *)((longlong)param_1 + 0x1c);
    iVar6 = iVar2 + 1;
    if ((int)param_1[3] < iVar6) {
      if (iVar6 < 0) {
        iVar6 = iVar2 + 2;
      }
      FUN_18047cb30(param_1 + 2,iVar2 + 9 + (iVar6 >> 1) & 0xfffffff8);
    }
    uVar3 = *(uint *)((longlong)param_1 + 0x1c);
    if (uVar10 < uVar3) {
      _Src = (void *)(param_1[2] + (longlong)(int)uVar10 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar3 - uVar10) << 3);
      puVar8 = (undefined8 *)(param_1[2] + (longlong)(int)uVar10 * 8);
    }
    else {
      puVar8 = (undefined8 *)(param_1[2] + (longlong)(int)uVar3 * 8);
    }
    *puVar8 = uVar4;
    *(int *)((longlong)param_1 + 0x1c) = *(int *)((longlong)param_1 + 0x1c) + 1;
    puVar14 = puVar14 + 1;
  } while( true );
}



############ FUN_ 1804e7bd0 size=629 ############

void FUN_1804e7bd0(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  code *pcVar4;
  undefined8 *puVar5;
  char cVar6;
  longlong lVar7;
  longlong *plVar8;
  undefined8 uVar9;
  uint uVar10;
  longlong *plVar11;
  
  *param_1 = juce::DragAndDropContainer::DragImageComponent::vftable;
  param_1[0x16] = juce::DragAndDropContainer::DragImageComponent::vftable;
  lVar3 = param_1[0x1e];
  plVar8 = *(longlong **)(lVar3 + 8);
  plVar11 = plVar8;
  do {
    if (plVar11 == plVar8 + *(int *)(lVar3 + 0x14)) {
      uVar10 = 0xffffffff;
LAB_1804e7c40:
      if (uVar10 < *(uint *)(lVar3 + 0x14)) {
        _Dst = (void *)(*(longlong *)(lVar3 + 8) + (longlong)(int)uVar10 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),
                (longlong)(int)((*(uint *)(lVar3 + 0x14) - uVar10) + -1) << 3);
        *(int *)(lVar3 + 0x14) = *(int *)(lVar3 + 0x14) + -1;
      }
      if ((*(int *)(lVar3 + 0x14) * 2 < *(int *)(lVar3 + 0x10)) &&
         (*(int *)(lVar3 + 0x14) < *(int *)(lVar3 + 0x10))) {
        FUN_18047cb30(lVar3 + 8);
      }
      lVar3 = param_1[0x1f];
      if (lVar3 == 0) {
        lVar7 = 0;
      }
      else {
        lVar7 = *(longlong *)(lVar3 + 0x10);
      }
      if (lVar7 != 0) {
        if (lVar3 == 0) {
          uVar9 = 0;
        }
        else {
          uVar9 = *(undefined8 *)(lVar3 + 0x10);
        }
        FUN_181341510(uVar9,param_1);
        if (param_1[0x20] == 0) {
          uVar9 = 0;
        }
        else {
          uVar9 = *(undefined8 *)(param_1[0x20] + 0x10);
        }
        plVar8 = (longlong *)
                 __RTDynamicCast(uVar9,0,&juce::Component::RTTI_Type_Descriptor,
                                 &juce::DragAndDropTarget::RTTI_Type_Descriptor,0);
        if ((plVar8 != (longlong *)0x0) &&
           (cVar6 = (**(code **)(*plVar8 + 8))(plVar8,param_1 + 0x19), cVar6 != '\0')) {
          (**(code **)(*plVar8 + 0x20))(plVar8,param_1 + 0x19);
        }
      }
      pcVar4 = *(code **)(*(longlong *)param_1[0x1e] + 0x20);
      if (pcVar4 != .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        (*pcVar4)((longlong *)param_1[0x1e],param_1 + 0x19);
      }
      puVar5 = (undefined8 *)param_1[0x20];
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
      puVar5 = (undefined8 *)param_1[0x1f];
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
      puVar5 = (undefined8 *)param_1[0x1d];
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
      puVar5 = (undefined8 *)param_1[0x1b];
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
      (**(code **)(*(longlong *)param_1[0x19] + 0xb0))((longlong *)param_1[0x19],param_1 + 0x1a);
      param_1[0x16] = juce::Timer::vftable;
      FUN_1812a7720(param_1 + 0x16);
      FUN_18134caa0(param_1);
      return;
    }
    if (param_1 == (undefined8 *)*plVar11) {
      uVar10 = (uint)((longlong)plVar11 - (longlong)plVar8 >> 3);
      goto LAB_1804e7c40;
    }
    plVar11 = plVar11 + 1;
  } while( true );
}



############ FUN_ 18051ae50 size=110 ############

void FUN_18051ae50(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  if (param_2 != 0) {
    plVar3 = (longlong *)*param_1;
    iVar2 = *(int *)((longlong)param_1 + 0xc);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) {
        return;
      }
    }
    if ((int)param_1[1] < iVar2 + 1) {
      FUN_18047cb30(param_1,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
    *(longlong *)(*param_1 + (longlong)iVar2 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812a73a0 size=135 ############

undefined1 FUN_1812a73a0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  undefined1 uVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar4 = *(longlong **)(param_1 + 0x20);
    iVar3 = *(int *)(param_1 + 0x2c);
    plVar1 = plVar4 + iVar3;
    for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) goto LAB_1812a740f;
    }
    if (*(int *)(param_1 + 0x28) < iVar3 + 1) {
      FUN_18047cb30(param_1 + 0x20,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x2c);
    *(int *)(param_1 + 0x2c) = iVar3 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x20) + (longlong)iVar3 * 8) = param_2;
  }
LAB_1812a740f:
  LOCK();
  uVar2 = *(undefined1 *)(param_1 + 0x30);
  *(undefined1 *)(param_1 + 0x30) = 1;
  UNLOCK();
  return uVar2;
}



############ FUN_ 18051b0d0 size=153 ############

undefined8 FUN_18051b0d0(longlong *param_1,uint param_2,undefined8 param_3)

{
  uint uVar1;
  int iVar2;
  void *_Src;
  undefined8 *puVar3;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar2) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  if (param_2 < uVar1) {
    _Src = (void *)(*param_1 + (longlong)(int)param_2 * 8);
    memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - param_2) << 3);
    puVar3 = (undefined8 *)(*param_1 + (longlong)(int)param_2 * 8);
  }
  else {
    puVar3 = (undefined8 *)(*param_1 + (longlong)(int)uVar1 * 8);
  }
  *puVar3 = param_3;
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  return param_3;
}



############ FUN_ 1812db150 size=763 ############

void FUN_1812db150(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  longlong *plVar3;
  void *_Dst;
  uint uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  char cVar9;
  wint_t wVar10;
  int iVar11;
  undefined8 uVar12;
  int iVar13;
  uint *_Memory;
  longlong *plVar14;
  int iVar15;
  longlong lVar16;
  uint uVar17;
  longlong lVar18;
  undefined4 uVar19;
  int local_res10;
  longlong *local_res18;
  longlong local_res20;
  longlong local_60 [4];
  
  local_60[1] = 0xfffffffffffffffe;
  local_res10 = 0;
  if (0 < *(int *)(param_1 + 0x2b4) + -1) {
    plVar3 = (longlong *)(param_1 + 0x2a8);
    local_res20 = 0;
    uVar17 = 1;
    do {
      lVar5 = *(longlong *)(local_res20 + *plVar3);
      lVar6 = *(longlong *)(local_res20 + 8 + *plVar3);
      cVar9 = FUN_181252880(lVar5,lVar6);
      if ((cVar9 != '\0') && (*(int *)(lVar5 + 8) == *(int *)(lVar6 + 8))) {
        if (*(int *)(lVar6 + 0x1c) != 0) {
          iVar15 = 0;
          lVar16 = 0;
          plVar1 = (longlong *)(lVar5 + 0x10);
          if (*(int *)(lVar5 + 0x1c) != 0) {
            lVar18 = (longlong)(*(int *)(lVar5 + 0x1c) + -1) * 0x10 + *plVar1;
            wVar10 = FUN_181230ef0(lVar18);
            iVar11 = iswspace(wVar10);
            if (iVar11 == 0) {
              lVar7 = *(longlong *)(lVar6 + 0x10);
              wVar10 = FUN_180493050(lVar7,0);
              iVar11 = iswspace(wVar10);
              if (iVar11 == 0) {
                FUN_181232d30(lVar18,lVar7);
                *(uint *)(lVar18 + 0xc) =
                     (uint)(ushort)(*(short *)(lVar7 + 0xc) + *(short *)(lVar18 + 0xc));
                uVar12 = FUN_180506630(lVar18,local_60,*(undefined4 *)(lVar5 + 0x20));
                uVar19 = FUN_1812518d0(lVar5,uVar12);
                *(undefined4 *)(lVar18 + 8) = uVar19;
                _Memory = (uint *)(local_60[0] + -0x10);
                if ((*_Memory & 0x30000000) == 0) {
                  LOCK();
                  uVar4 = *_Memory;
                  *_Memory = *_Memory - 1;
                  UNLOCK();
                  if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
                    free(_Memory);
                  }
                }
                iVar15 = 1;
                lVar16 = 1;
              }
            }
          }
          iVar11 = (*(int *)(lVar5 + 0x1c) - iVar15) + *(int *)(lVar6 + 0x1c);
          if (*(int *)(lVar5 + 0x18) < iVar11) {
            iVar13 = iVar11;
            if (iVar11 < 0) {
              iVar13 = iVar11 + 1;
            }
            FUN_18051d4f0(plVar1,iVar11 + 8 + (iVar13 >> 1) & 0xfffffff8);
          }
          if (iVar15 < *(int *)(lVar6 + 0x1c)) {
            lVar16 = lVar16 << 4;
            do {
              lVar18 = *(longlong *)(lVar6 + 0x10);
              iVar13 = *(int *)(lVar5 + 0x1c);
              iVar11 = iVar13 + 1;
              if (*(int *)(lVar5 + 0x18) < iVar11) {
                if (iVar11 < 0) {
                  iVar11 = iVar13 + 2;
                }
                FUN_18051d4f0(plVar1,iVar13 + 9 + (iVar11 >> 1) & 0xfffffff8);
              }
              iVar11 = *(int *)(lVar5 + 0x1c);
              *(int *)(lVar5 + 0x1c) = iVar11 + 1;
              plVar14 = (longlong *)((longlong)iVar11 * 0x10 + *plVar1);
              lVar7 = *(longlong *)(lVar16 + lVar18);
              *plVar14 = lVar7;
              if ((*(uint *)(lVar7 + -0x10) & 0x30000000) == 0) {
                LOCK();
                *(int *)(lVar7 + -0x10) = *(int *)(lVar7 + -0x10) + 1;
                UNLOCK();
              }
              *(undefined4 *)(plVar14 + 1) = *(undefined4 *)(lVar16 + 8 + lVar18);
              *(undefined4 *)((longlong)plVar14 + 0xc) = *(undefined4 *)(lVar16 + 0xc + lVar18);
              iVar15 = iVar15 + 1;
              lVar16 = lVar16 + 0x10;
            } while (iVar15 < *(int *)(lVar6 + 0x1c));
          }
        }
        local_res18 = (longlong *)0x0;
        if (uVar17 < *(uint *)(param_1 + 0x2b4)) {
          local_res18 = *(longlong **)(local_res20 + 8 + *plVar3);
          _Dst = (void *)(*plVar3 + (longlong)(int)uVar17 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),
                  (longlong)(int)((*(uint *)(param_1 + 0x2b4) - uVar17) + -1) << 3);
          *(int *)(param_1 + 0x2b4) = *(int *)(param_1 + 0x2b4) + -1;
        }
        if ((*(int *)(param_1 + 0x2b4) * 2 < *(int *)(param_1 + 0x2b0)) &&
           (*(int *)(param_1 + 0x2b4) < *(int *)(param_1 + 0x2b0))) {
          FUN_18047cb30(plVar3);
        }
        if (local_res18 != (longlong *)0x0) {
          FUN_18051a4c0(local_res18 + 2);
          puVar8 = (undefined8 *)*local_res18;
          if (puVar8 != (undefined8 *)0x0) {
            LOCK();
            piVar2 = (int *)(puVar8 + 1);
            iVar15 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar15 == 1) {
              (**(code **)*puVar8)(puVar8,1);
            }
          }
                    /* WARNING: Subroutine does not return */
          free(local_res18);
        }
        local_res10 = local_res10 + -1;
        uVar17 = uVar17 - 1;
        local_res20 = local_res20 + -8;
      }
      local_res10 = local_res10 + 1;
      uVar17 = uVar17 + 1;
      local_res20 = local_res20 + 8;
    } while (local_res10 < *(int *)(param_1 + 0x2b4) + -1);
  }
  return;
}



############ FUN_ 1812e9b30 size=582 ############

void FUN_1812e9b30(longlong *param_1,longlong param_2)

{
  int *piVar1;
  void *_Dst;
  undefined8 *puVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  int iVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *plVar11;
  undefined8 *local_res8;
  
  lVar4 = param_1[0x3c];
  plVar11 = (longlong *)0x0;
  if ((lVar4 != 0) && (*(longlong *)(lVar4 + 0x10) != 0)) {
    plVar6 = plVar11;
    if (param_1 != (longlong *)0x0) {
      plVar6 = param_1 + 0x19;
    }
    plVar10 = plVar11;
    if (lVar4 != 0) {
      plVar10 = *(longlong **)(lVar4 + 0x10);
    }
    iVar3 = *(int *)((longlong)plVar10 + 0x8c);
    lVar4 = plVar10[0x10];
    plVar5 = plVar11;
    plVar9 = plVar11;
    if (0 < iVar3) {
      do {
        iVar8 = (int)plVar9;
        if (plVar6 == *(longlong **)(lVar4 + (longlong)plVar5 * 8)) {
          _Dst = (void *)(lVar4 + (longlong)iVar8 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar3 - iVar8) + -1) << 3);
          *(int *)((longlong)plVar10 + 0x8c) = *(int *)((longlong)plVar10 + 0x8c) + -1;
          iVar3 = *(int *)((longlong)plVar10 + 0x8c);
          iVar8 = 0;
          if (0 < iVar3 * 2) {
            iVar8 = iVar3 * 2;
          }
          if (iVar8 < (int)plVar10[0x11]) {
            if (iVar3 < 8) {
              iVar3 = 8;
            }
            if (iVar3 < (int)plVar10[0x11]) {
              FUN_18047cb30(plVar10 + 0x10);
            }
          }
          break;
        }
        plVar9 = (longlong *)(ulonglong)(iVar8 + 1);
        plVar5 = (longlong *)((longlong)plVar5 + 1);
      } while ((longlong)plVar5 < (longlong)iVar3);
    }
  }
  plVar6 = (longlong *)FUN_1804de690(&local_res8,param_2);
  lVar4 = param_1[0x3c];
  param_1[0x3c] = *plVar6;
  *plVar6 = lVar4;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  *(undefined1 *)((longlong)param_1 + 0x203) = 1;
  if ((param_1[0x3c] != 0) && (*(longlong *)(param_1[0x3c] + 0x10) != 0)) {
    (**(code **)(*param_1 + 0x58))(param_1,*(byte *)(param_2 + 0xa8) >> 1 & 1);
    plVar6 = param_1 + 0x19;
    plVar10 = plVar11;
    if (param_1[0x3c] != 0) {
      plVar10 = *(longlong **)(param_1[0x3c] + 0x10);
    }
    if (plVar6 != (longlong *)0x0) {
      plVar5 = plVar10 + 0x10;
      puVar7 = (undefined8 *)*plVar5;
      iVar3 = *(int *)((longlong)plVar10 + 0x8c);
      puVar2 = puVar7 + iVar3;
      for (; puVar7 != puVar2; puVar7 = puVar7 + 1) {
        if (plVar6 == (longlong *)*puVar7) goto LAB_1812e9cf1;
      }
      if ((int)plVar10[0x11] < iVar3 + 1) {
        FUN_18047cb30(plVar5,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
      }
      iVar3 = *(int *)((longlong)plVar10 + 0x8c);
      *(int *)((longlong)plVar10 + 0x8c) = iVar3 + 1;
      *(longlong **)(*plVar5 + (longlong)iVar3 * 8) = plVar6;
    }
LAB_1812e9cf1:
    plVar10 = plVar11;
    if (param_1[0x3c] != 0) {
      plVar10 = *(longlong **)(param_1[0x3c] + 0x10);
    }
    if (*(code **)(*plVar6 + 0x28) == FUN_1812e9900) {
      if ((plVar10[3] != 0) && (param_1 != (longlong *)0x0)) {
        FUN_181343cc0(plVar10[3],param_1,0xffffffff);
      }
    }
    else {
      (**(code **)(*plVar6 + 0x28))(plVar6);
    }
    if (param_1[0x3c] != 0) {
      plVar11 = *(longlong **)(param_1[0x3c] + 0x10);
    }
    (**(code **)(*plVar6 + 8))(plVar6,plVar11,1);
  }
  return;
}



############ FUN_ 1812efb00 size=762 ############

undefined8 FUN_1812efb00(char *param_1)

{
  void *pvVar1;
  undefined8 uVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  int iVar6;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    if (*(int *)(param_1 + 0x24) < 1) {
      plVar4 = (longlong *)0x0;
    }
    else {
      plVar4 = *(longlong **)
                (*(longlong *)(param_1 + 0x18) + (longlong)(*(int *)(param_1 + 0x24) + -1) * 8);
    }
    lVar5 = plVar4[1] - *plVar4 >> 0x3f;
    if ((plVar4[1] - *plVar4) / 0x88 + lVar5 != lVar5) {
      if (*(int *)(param_1 + 0x14) < 1) {
        iVar3 = 0;
      }
      else {
        iVar3 = *(int *)(*(longlong *)(param_1 + 8) + (longlong)(*(int *)(param_1 + 0x14) + -1) * 4)
        ;
      }
      if (*(int *)(param_1 + 0x24) < 1) {
        plVar4 = (longlong *)0x0;
      }
      else {
        plVar4 = *(longlong **)
                  (*(longlong *)(param_1 + 0x18) + (longlong)(*(int *)(param_1 + 0x24) + -1) * 8);
      }
      lVar5 = *plVar4 + (longlong)iVar3 * 0x88;
      *(longlong *)(param_1 + 0x28) = lVar5;
      if ((*param_1 == '\0') || (*(longlong *)(lVar5 + 0x50) == 0)) {
        if (*(int *)(param_1 + 0x14) < 1) {
          iVar3 = 0;
        }
        else {
          iVar3 = *(int *)(*(longlong *)(param_1 + 8) +
                          (longlong)(*(int *)(param_1 + 0x14) + -1) * 4);
        }
        *(int *)(*(longlong *)(param_1 + 8) + (longlong)(*(int *)(param_1 + 0x14) + -1) * 4) =
             iVar3 + 1;
      }
      else {
        if (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x14) + 1) {
          FUN_1804af790(param_1 + 8);
        }
        iVar3 = *(int *)(param_1 + 0x14);
        *(int *)(param_1 + 0x14) = iVar3 + 1;
        *(undefined4 *)(*(longlong *)(param_1 + 8) + (longlong)iVar3 * 4) = 0;
        uVar2 = *(undefined8 *)(*(longlong *)(param_1 + 0x28) + 0x50);
        if (*(int *)(param_1 + 0x20) < *(int *)(param_1 + 0x24) + 1) {
          FUN_18047cb30(param_1 + 0x18);
        }
        iVar3 = *(int *)(param_1 + 0x24);
        *(int *)(param_1 + 0x24) = iVar3 + 1;
        *(undefined8 *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar3 * 8) = uVar2;
      }
      if (0 < *(int *)(param_1 + 0x14)) {
        do {
          if (*(int *)(param_1 + 0x14) < 1) {
            iVar3 = 0;
          }
          else {
            iVar3 = *(int *)(*(longlong *)(param_1 + 8) +
                            (longlong)(*(int *)(param_1 + 0x14) + -1) * 4);
          }
          if (*(int *)(param_1 + 0x24) < 1) {
            plVar4 = (longlong *)0x0;
          }
          else {
            plVar4 = *(longlong **)
                      (*(longlong *)(param_1 + 0x18) + (longlong)(*(int *)(param_1 + 0x24) + -1) * 8
                      );
          }
          if (iVar3 < (int)((plVar4[1] - *plVar4) / 0x88)) {
            return 1;
          }
          iVar3 = *(int *)(param_1 + 0x14);
          iVar6 = 1;
          if (iVar3 < 1) {
            iVar6 = iVar3;
          }
          if (0 < iVar6) {
            pvVar1 = (void *)(*(longlong *)(param_1 + 8) + (longlong)(iVar3 - iVar6) * 4);
            memmove(pvVar1,(void *)((longlong)pvVar1 + (longlong)iVar6 * 4),
                    (longlong)((iVar3 - (iVar3 - iVar6)) - iVar6) << 2);
            *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) - iVar6;
          }
          iVar3 = *(int *)(param_1 + 0x14);
          iVar6 = 0;
          if (0 < iVar3 * 2) {
            iVar6 = iVar3 * 2;
          }
          if (iVar6 < *(int *)(param_1 + 0x10)) {
            if (iVar3 < 0x10) {
              iVar3 = 0x10;
            }
            if (iVar3 < *(int *)(param_1 + 0x10)) {
              FUN_1804af790(param_1 + 8);
            }
          }
          iVar3 = *(int *)(param_1 + 0x24);
          iVar6 = 1;
          if (iVar3 < 1) {
            iVar6 = iVar3;
          }
          if (0 < iVar6) {
            pvVar1 = (void *)(*(longlong *)(param_1 + 0x18) + (longlong)(iVar3 - iVar6) * 8);
            memmove(pvVar1,(void *)((longlong)pvVar1 + (longlong)iVar6 * 8),
                    (longlong)((iVar3 - (iVar3 - iVar6)) - iVar6) << 3);
            *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) - iVar6;
          }
          iVar3 = *(int *)(param_1 + 0x24);
          iVar6 = 0;
          if (0 < iVar3 * 2) {
            iVar6 = iVar3 * 2;
          }
          if (iVar6 < *(int *)(param_1 + 0x20)) {
            if (iVar3 < 8) {
              iVar3 = 8;
            }
            if (iVar3 < *(int *)(param_1 + 0x20)) {
              FUN_18047cb30(param_1 + 0x18);
            }
          }
          iVar3 = *(int *)(param_1 + 0x14);
          if (iVar3 < 1) {
            return 1;
          }
          if (iVar3 < 1) {
            iVar6 = 0;
          }
          else {
            iVar6 = *(int *)(*(longlong *)(param_1 + 8) + (longlong)(iVar3 + -1) * 4);
          }
          *(int *)(*(longlong *)(param_1 + 8) + (longlong)(iVar3 + -1) * 4) = iVar6 + 1;
        } while (0 < *(int *)(param_1 + 0x14));
      }
      return 1;
    }
  }
  return 0;
}



############ FUN_ 1812efe40 size=192 ############

undefined1 * FUN_1812efe40(undefined1 *param_1,undefined8 param_2,undefined1 param_3)

{
  int iVar1;
  
  *param_1 = param_3;
  *(undefined8 *)(param_1 + 8) = 0;
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined8 *)(param_1 + 0x18) = 0;
  *(undefined8 *)(param_1 + 0x20) = 0;
  *(undefined8 *)(param_1 + 0x28) = 0;
  iVar1 = *(int *)(param_1 + 0x14) + 1;
  if (*(int *)(param_1 + 0x10) < iVar1) {
    FUN_1804af790(param_1 + 8,*(int *)(param_1 + 0x14) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)(param_1 + 0x14);
  *(int *)(param_1 + 0x14) = iVar1 + 1;
  *(undefined4 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 4) = 0;
  iVar1 = *(int *)(param_1 + 0x24) + 1;
  if (*(int *)(param_1 + 0x20) < iVar1) {
    FUN_18047cb30(param_1 + 0x18,*(int *)(param_1 + 0x24) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)(param_1 + 0x24);
  *(int *)(param_1 + 0x24) = iVar1 + 1;
  *(undefined8 *)(*(longlong *)(param_1 + 0x18) + (longlong)iVar1 * 8) = param_2;
  return param_1;
}



############ FUN_ 181229aa0 size=243 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181229aa0(longlong param_1,longlong param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  LPCRITICAL_SECTION local_40;
  longlong local_38;
  ushort local_30;
  ulonglong local_28;
  
  if (param_2 == 0) {
    return;
  }
  local_48 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_68;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x22c);
  local_40 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  _ftime64_s(&local_38);
  *(ulonglong *)(param_2 + 8) = local_38 * 1000 + (ulonglong)local_30;
  plVar1 = (longlong *)(param_1 + 600);
  plVar4 = (longlong *)*plVar1;
  iVar3 = *(int *)(param_1 + 0x264);
  plVar2 = plVar4 + iVar3;
  for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
    if (param_2 == *plVar4) goto LAB_181229b6f;
  }
  if (*(int *)(param_1 + 0x260) < iVar3 + 1) {
    FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
  }
  iVar3 = *(int *)(param_1 + 0x264);
  *(int *)(param_1 + 0x264) = iVar3 + 1;
  *(longlong *)(*plVar1 + (longlong)iVar3 * 8) = param_2;
LAB_181229b6f:
  FUN_181215c10(param_1 + 0xf8);
  LeaveCriticalSection(lpCriticalSection);
}



############ FUN_ 1812d7130 size=201 ############

void FUN_1812d7130(longlong param_1)

{
  longlong *plVar1;
  void *_Dst;
  undefined8 *puVar2;
  uint uVar3;
  longlong lVar4;
  
  uVar3 = *(int *)(param_1 + 0x24) - 1;
  if (-1 < (int)uVar3) {
    plVar1 = (longlong *)(param_1 + 0x18);
    lVar4 = (longlong)(int)uVar3 * 8;
    do {
      if ((uVar3 < *(uint *)(param_1 + 0x24)) && (*(longlong *)(lVar4 + *plVar1) != 0)) {
        *(undefined8 *)(*(longlong *)(lVar4 + *plVar1) + 0x10) = 0;
        puVar2 = (undefined8 *)0x0;
        if (uVar3 < *(uint *)(param_1 + 0x24)) {
          puVar2 = *(undefined8 **)(lVar4 + *plVar1);
          _Dst = (void *)(*plVar1 + (longlong)(int)uVar3 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),
                  (longlong)(int)((*(uint *)(param_1 + 0x24) - uVar3) + -1) << 3);
          *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
        }
        if ((*(int *)(param_1 + 0x24) * 2 < *(int *)(param_1 + 0x20)) &&
           (*(int *)(param_1 + 0x24) < *(int *)(param_1 + 0x20))) {
          FUN_18047cb30(plVar1);
        }
        if (puVar2 != (undefined8 *)0x0) {
          (**(code **)*puVar2)(puVar2,1);
        }
      }
      lVar4 = lVar4 + -8;
      uVar3 = uVar3 - 1;
    } while (-1 < (int)uVar3);
  }
  return;
}



############ FUN_ 18051af10 size=132 ############

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

undefined8 FUN_18051af10(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar1) {
    FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  *(undefined8 *)(*param_1 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8) = param_3;
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  return param_3;
}



############ FUN_ 181351090 size=172 ############

void FUN_181351090(longlong *param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0x14);
  iVar3 = 0;
  lVar2 = 0;
  if (0 < iVar1) {
    do {
      if (param_2 == *(longlong *)(param_1[1] + lVar2 * 8)) {
        _Dst = (void *)(param_1[1] + (longlong)iVar3 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar3) + -1) << 3);
        *(int *)((longlong)param_1 + 0x14) = *(int *)((longlong)param_1 + 0x14) + -1;
        iVar1 = *(int *)((longlong)param_1 + 0x14);
        iVar3 = 0;
        if (0 < iVar1 * 2) {
          iVar3 = iVar1 * 2;
        }
        if (iVar3 < (int)param_1[2]) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < (int)param_1[2]) {
            FUN_18047cb30(param_1 + 1);
          }
        }
        break;
      }
      iVar3 = iVar3 + 1;
      lVar2 = lVar2 + 1;
    } while (lVar2 < iVar1);
  }
  if ((*(int *)((longlong)param_1 + 0x14) == 0) && (*param_1 != 0)) {
    FUN_180527d40(*param_1 + 0x38,param_1);
  }
  return;
}



############ FUN_ 18131ff80 size=491 ############

void FUN_18131ff80(longlong *param_1)

{
  longlong *plVar1;
  longlong *_Memory;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  longlong *local_30;
  undefined8 local_28;
  
  plVar1 = param_1 + 0x18;
  uVar7 = 0;
  local_30 = (longlong *)0x0;
  local_28 = 0;
  FUN_18051fcc0(&local_30,*plVar1,*(undefined4 *)((longlong)param_1 + 0xcc));
  if ((int)param_1[0x17] == 0) {
    *(undefined4 *)((longlong)param_1 + 0xcc) = 0;
    if ((int)param_1[0x19] != 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*plVar1);
    }
    *(undefined4 *)(param_1 + 0x19) = 0;
    puVar8 = (undefined8 *)param_1[8];
    uVar9 = (ulonglong)
            ((longlong)(puVar8 + *(int *)((longlong)param_1 + 0x4c)) + (7 - (longlong)puVar8)) >> 3;
    if (puVar8 + *(int *)((longlong)param_1 + 0x4c) < puVar8) {
      uVar9 = uVar7;
    }
    uVar6 = uVar7;
    if (uVar9 != 0) {
      do {
        lVar2 = __RTDynamicCast(*puVar8,0,&juce::Component::RTTI_Type_Descriptor,
                                &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor,0);
        if (lVar2 != 0) {
          uVar5 = uVar7;
          if (*(longlong *)(lVar2 + 0xd0) != 0) {
            uVar5 = *(ulonglong *)(*(longlong *)(lVar2 + 0xd0) + 0x10);
          }
          if ((int)param_1[0x19] < *(int *)((longlong)param_1 + 0xcc) + 1) {
            FUN_18047cb30(plVar1);
          }
          iVar3 = *(int *)((longlong)param_1 + 0xcc);
          *(int *)((longlong)param_1 + 0xcc) = iVar3 + 1;
          *(ulonglong *)(*plVar1 + (longlong)iVar3 * 8) = uVar5;
        }
        puVar8 = puVar8 + 1;
        uVar6 = uVar6 + 1;
      } while (uVar6 != uVar9);
    }
  }
  else if (param_1[0x1a] != 0) {
    lVar2 = *(longlong *)(param_1[0x1a] + 200);
    if (lVar2 != 0) {
      uVar7 = *(ulonglong *)(lVar2 + 0x10);
    }
    if (uVar7 != 0) {
      FUN_180488600(plVar1,uVar7);
      iVar3 = *(int *)((longlong)param_1 + 0xcc) + 1;
      if ((int)param_1[0x19] < iVar3) {
        FUN_18047cb30(plVar1,*(int *)((longlong)param_1 + 0xcc) + 9 + iVar3 / 2 & 0xfffffff8);
      }
      iVar3 = *(int *)((longlong)param_1 + 0xcc);
      *(int *)((longlong)param_1 + 0xcc) = iVar3 + 1;
      *(ulonglong *)(*plVar1 + (longlong)iVar3 * 8) = uVar7;
    }
  }
  _Memory = local_30;
  if (*(int *)((longlong)param_1 + 0xcc) == local_28._4_4_) {
    plVar1 = (longlong *)*plVar1;
    for (plVar4 = local_30; plVar4 != local_30 + local_28._4_4_; plVar4 = plVar4 + 1) {
      lVar2 = *plVar1;
      plVar1 = plVar1 + 1;
      if (lVar2 != *plVar4) goto LAB_181320138;
    }
  }
  else {
LAB_181320138:
    (**(code **)(*param_1 + 0x158))(param_1);
  }
                    /* WARNING: Could not recover jumptable at 0x000181320167. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(_Memory);
  return;
}



############ FUN_ 18051fcc0 size=102 ############

void FUN_18051fcc0(longlong *param_1,void *param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + param_3;
  if ((int)param_1[1] < iVar1) {
    FUN_18047cb30(param_1,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
  }
  memcpy((void *)(*param_1 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8),param_2,
         (longlong)param_3 << 3);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + param_3;
  return;
}



############ FUN_ 18051b6b0 size=157 ############

void FUN_18051b6b0(longlong *param_1,longlong param_2)

{
  uint uVar1;
  longlong *plVar2;
  longlong *plVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  uint uVar6;
  ulonglong uVar7;
  
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  uVar4 = 0;
  if (0 < (int)uVar1) {
    plVar2 = (longlong *)*param_1;
    plVar3 = plVar2;
    uVar5 = uVar4;
    uVar7 = uVar4;
    while (uVar6 = (uint)uVar7, param_2 != *plVar3) {
      uVar7 = (ulonglong)(uVar6 + 1);
      uVar5 = uVar5 + 1;
      plVar3 = plVar3 + 1;
      if ((longlong)(int)uVar1 <= (longlong)uVar5) {
        return;
      }
    }
    if (uVar6 < uVar1) {
      uVar4 = plVar2[(int)uVar6];
      memmove(plVar2 + (int)uVar6,plVar2 + (int)uVar6 + 1,(longlong)(int)((uVar1 - uVar6) + -1) << 3
             );
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    }
    if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
       (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
      FUN_18047cb30(param_1);
    }
    if (uVar4 != 0) {
      FUN_18051d990(uVar4);
    }
  }
  return;
}



############ FUN_ 181320b80 size=1329 ############

undefined1 FUN_181320b80(longlong *param_1,longlong *param_2,char param_3)

{
  LPCRITICAL_SECTION p_Var1;
  longlong *plVar2;
  int iVar3;
  char cVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  uint *puVar10;
  int iVar11;
  longlong *plVar12;
  longlong *plVar13;
  uint uVar14;
  longlong local_res8;
  longlong local_res20;
  char *local_78;
  char *local_70;
  undefined8 local_68;
  LPCRITICAL_SECTION local_60;
  LPCRITICAL_SECTION local_58;
  undefined8 *local_50;
  undefined8 *local_48;
  
  local_68 = 0xfffffffffffffffe;
  plVar2 = param_1 + 0x18;
  plVar9 = (longlong *)*plVar2;
  plVar13 = plVar9 + *(int *)((longlong)param_1 + 0xcc);
  while( true ) {
    if (plVar9 == plVar13) {
      return 1;
    }
    if (param_2 == (longlong *)*plVar9) break;
    plVar9 = plVar9 + 1;
  }
  if ((param_3 != '\0') && (cVar4 = (**(code **)(*param_1 + 0x160))(param_1,param_2), cVar4 == '\0')
     ) {
    return 0;
  }
  plVar13 = (longlong *)0x0;
  plVar9 = param_1 + 0x16;
  if (param_1 == (longlong *)0x0) {
    plVar9 = plVar13;
  }
  puVar8 = (undefined8 *)param_2[0x10];
  iVar3 = *(int *)((longlong)param_2 + 0x8c);
  puVar5 = puVar8;
  plVar12 = plVar13;
  if (0 < iVar3) {
    do {
      iVar11 = (int)plVar12;
      if (plVar9 == (longlong *)*puVar5) {
        puVar8 = puVar8 + iVar11;
        memmove(puVar8,puVar8 + 1,(longlong)((iVar3 - iVar11) + -1) << 3);
        *(int *)((longlong)param_2 + 0x8c) = *(int *)((longlong)param_2 + 0x8c) + -1;
        iVar3 = *(int *)((longlong)param_2 + 0x8c);
        plVar9 = plVar13;
        if (0 < iVar3 * 2) {
          plVar9 = (longlong *)(ulonglong)(uint)(iVar3 * 2);
        }
        if ((int)plVar9 < (int)param_2[0x11]) {
          if (iVar3 < 8) {
            iVar3 = 8;
          }
          if (iVar3 < (int)param_2[0x11]) {
            FUN_18047cb30(param_2 + 0x10);
          }
        }
        break;
      }
      puVar5 = puVar5 + 1;
      plVar12 = (longlong *)(ulonglong)(iVar11 + 1U);
    } while ((int)(iVar11 + 1U) < iVar3);
  }
  cVar4 = FUN_181321a10(param_2);
  lVar6 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
  local_60 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar6);
  local_78 = "mdiDocumentDelete_";
  FUN_181211b90(&local_res8,lVar6,&local_78);
  LeaveCriticalSection(p_Var1);
  FUN_181243b40(param_2 + 0x12,&local_res8);
  puVar10 = (uint *)(local_res8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar14 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  lVar6 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar6 + 0x10);
  local_58 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar6);
  local_70 = "mdiDocumentBkg_";
  FUN_181211b90(&local_res20,lVar6,&local_70);
  LeaveCriticalSection(p_Var1);
  FUN_181243b40(param_2 + 0x12,&local_res20);
  puVar10 = (uint *)(local_res20 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar14 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if ((int)param_1[0x17] == 0) {
    puVar5 = (undefined8 *)param_1[8];
    puVar8 = puVar5 + *(int *)((longlong)param_1 + 0x4c);
    for (; puVar5 != puVar8; puVar5 = puVar5 + 1) {
      puVar7 = (undefined8 *)
               __RTDynamicCast(*puVar5,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor,0);
      if (puVar7 != (undefined8 *)0x0) {
        plVar9 = plVar13;
        if (puVar7[0x1a] != 0) {
          plVar9 = *(longlong **)(puVar7[0x1a] + 0x10);
        }
        if (plVar9 == param_2) {
          local_50 = puVar7;
          FUN_1812cf790(puVar7);
          (**(code **)*puVar7)(puVar7,1);
          break;
        }
      }
    }
    if ((cVar4 != '\0') && (param_2 != (longlong *)0x0)) {
      (**(code **)*param_2)(param_2,1);
    }
    FUN_180488600(plVar2,param_2);
    if (((int)param_1[0x1c] != 0) && (*(int *)((longlong)param_1 + 0xcc) == 1)) {
      uVar14 = *(int *)((longlong)param_1 + 0x4c) - 1;
      lVar6 = (longlong)(int)uVar14;
      if (-1 < (int)uVar14) {
        do {
          plVar9 = plVar13;
          if (uVar14 < *(uint *)((longlong)param_1 + 0x4c)) {
            plVar9 = *(longlong **)(param_1[8] + lVar6 * 8);
          }
          puVar8 = (undefined8 *)
                   __RTDynamicCast(plVar9,0,&juce::Component::RTTI_Type_Descriptor,
                                   &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor,0);
          local_48 = puVar8;
          if (puVar8 != (undefined8 *)0x0) {
            FUN_1812cf790(puVar8);
            (**(code **)*puVar8)(puVar8);
          }
          uVar14 = uVar14 - 1;
          lVar6 = lVar6 + -1;
        } while (-1 < lVar6);
      }
      if ((0 < *(int *)((longlong)param_1 + 0xcc)) &&
         (plVar9 = *(longlong **)*plVar2, plVar9 != (longlong *)0x0)) {
        (**(code **)(*plVar9 + 0x58))(plVar9,1);
        FUN_181343cc0(param_1,plVar9,0xffffffff);
      }
    }
  }
  else {
    if (param_1[0x1a] == 0) {
      FUN_181343c70(param_1,param_2);
    }
    else {
      iVar3 = *(int *)(*(longlong *)(param_1[0x1a] + 0xb0) + 0xf4);
      while (iVar3 = iVar3 + -1, -1 < iVar3) {
        plVar9 = (longlong *)FUN_181318140(param_1[0x1a],iVar3);
        if (plVar9 == param_2) {
          FUN_181318270(param_1[0x1a],iVar3);
        }
      }
    }
    if ((cVar4 != '\0') && (param_2 != (longlong *)0x0)) {
      (**(code **)*param_2)(param_2,1);
    }
    if ((param_1[0x1a] != 0) &&
       (*(int *)(*(longlong *)(param_1[0x1a] + 0xb0) + 0xf4) <= (int)param_1[0x1c])) {
      puVar8 = (undefined8 *)param_1[0x1a];
      param_1[0x1a] = 0;
      if (puVar8 != (undefined8 *)0x0) {
        (**(code **)*puVar8)(puVar8,1);
      }
    }
    FUN_180488600(plVar2,param_2);
    if ((0 < *(int *)((longlong)param_1 + 0xcc)) && (param_1[0x1a] == 0)) {
      plVar9 = plVar13;
      if (0 < *(int *)((longlong)param_1 + 0xcc)) {
        plVar9 = *(longlong **)*plVar2;
      }
      FUN_18134bf20(param_1,plVar9,0xffffffff);
    }
  }
  (**(code **)(*param_1 + 0x108))(param_1);
  if ((int)param_1[0x17] == 0) {
    puVar5 = (undefined8 *)param_1[8];
    puVar8 = puVar5 + *(int *)((longlong)param_1 + 0x4c);
    for (; puVar5 != puVar8; puVar5 = puVar5 + 1) {
      lVar6 = __RTDynamicCast(*puVar5,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor,0);
      if ((lVar6 != 0) && (*(char *)(lVar6 + 0xb2) != '\0')) {
        if (*(longlong *)(lVar6 + 0xd0) != 0) {
          plVar13 = *(longlong **)(*(longlong *)(lVar6 + 0xd0) + 0x10);
        }
        goto LAB_18132107b;
      }
    }
  }
  if (0 < *(int *)((longlong)param_1 + 0xcc)) {
    plVar13 = *(longlong **)(*plVar2 + (longlong)(*(int *)((longlong)param_1 + 0xcc) + -1) * 8);
  }
LAB_18132107b:
  if (plVar13 != (longlong *)0x0) {
    FUN_181320970(param_1,plVar13);
  }
  (**(code **)(*param_1 + 0x158))(param_1);
  return 1;
}



############ FUN_ 181318270 size=406 ############

void FUN_181318270(longlong param_1,uint param_2)

{
  int *piVar1;
  longlong lVar2;
  int iVar3;
  undefined8 *puVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong lVar10;
  longlong *plVar11;
  ulonglong uVar12;
  
  if (param_2 < *(uint *)(param_1 + 0xc4)) {
    lVar10 = 0;
    plVar8 = (longlong *)(param_1 + 0xb8);
    lVar2 = (longlong)(int)param_2 * 8;
    lVar7 = lVar10;
    if (*(longlong *)(lVar2 + *plVar8) != 0) {
      lVar7 = *(longlong *)(*(longlong *)(lVar2 + *plVar8) + 0x10);
    }
    FUN_181318bc0(lVar7);
    if (param_2 < *(uint *)(param_1 + 0xc4)) {
      plVar9 = (longlong *)(*plVar8 + lVar2);
      uVar6 = (*(uint *)(param_1 + 0xc4) - param_2) - 1;
      if (0 < (int)uVar6) {
        uVar12 = (ulonglong)uVar6;
        plVar11 = plVar9;
        do {
          plVar11 = plVar11 + 1;
          lVar7 = *plVar9;
          *plVar9 = *plVar11;
          plVar9 = plVar9 + 1;
          *plVar11 = lVar7;
          uVar12 = uVar12 - 1;
        } while (uVar12 != 0);
      }
      puVar4 = (undefined8 *)*plVar9;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      *(int *)(param_1 + 0xc4) = *(int *)(param_1 + 0xc4) + -1;
      iVar3 = *(int *)(param_1 + 0xc4);
      iVar5 = 0;
      if (0 < iVar3 * 2) {
        iVar5 = iVar3 * 2;
      }
      if (iVar5 < *(int *)(param_1 + 0xc0)) {
        if (iVar3 < 8) {
          iVar3 = 8;
        }
        if (iVar3 < *(int *)(param_1 + 0xc0)) {
          FUN_18051cb30(plVar8);
        }
      }
    }
    lVar7 = *(longlong *)(param_1 + 0xb0);
    if (param_2 < *(uint *)(lVar7 + 0xf4)) {
      uVar6 = *(uint *)(lVar7 + 0x108);
      if (param_2 == uVar6) {
        uVar6 = 0xffffffff;
      }
      else if ((int)param_2 < (int)uVar6) {
        uVar6 = uVar6 - 1;
      }
      if (param_2 < *(uint *)(lVar7 + 0xf4)) {
        plVar8 = (longlong *)(*(longlong *)(lVar7 + 0xe8) + lVar2);
        lVar10 = *plVar8;
        memmove(plVar8,plVar8 + 1,(longlong)(int)((*(uint *)(lVar7 + 0xf4) - param_2) + -1) << 3);
        *(int *)(lVar7 + 0xf4) = *(int *)(lVar7 + 0xf4) + -1;
      }
      if ((*(int *)(lVar7 + 0xf4) * 2 < *(int *)(lVar7 + 0xf0)) &&
         (*(int *)(lVar7 + 0xf4) < *(int *)(lVar7 + 0xf0))) {
        FUN_18047cb30((longlong *)(lVar7 + 0xe8));
      }
      if (lVar10 != 0) {
        FUN_18051da50(lVar10);
      }
      FUN_181319980(lVar7,uVar6);
      FUN_181319110(lVar7);
    }
  }
  return;
}



############ FUN_ 18134b370 size=134 ############

void FUN_18134b370(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  if (param_2 != 0) {
    plVar3 = *(longlong **)(param_1 + 0x38);
    iVar2 = *(int *)(param_1 + 0x44);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) goto LAB_18134b3df;
    }
    if (*(int *)(param_1 + 0x40) < iVar2 + 1) {
      FUN_18047cb30(param_1 + 0x38,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x44);
    *(int *)(param_1 + 0x44) = iVar2 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar2 * 8) = param_2;
  }
LAB_18134b3df:
  FUN_18133bd90(param_1);
  return;
}



############ FUN_ 1812f1620 size=144 ############

void FUN_1812f1620(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x2c);
  lVar2 = *(longlong *)(param_1 + 0x20);
  iVar4 = 0;
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1;
    iVar1 = *(int *)(param_1 + 0x2c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x28)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x28)) {
        FUN_18047cb30((longlong *)(param_1 + 0x20));
      }
    }
  }
  return;
}



############ FUN_ 1804fa200 size=205 ############

void FUN_1804fa200(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  ulonglong uVar3;
  int iVar4;
  ulonglong uVar5;
  
  *param_1 = juce::MenuBarModel::vftable;
  uVar3 = 0;
  lVar2 = param_1[3];
  param_1[2] = juce::MenuBarModel::vftable;
  if (lVar2 != 0) {
    iVar1 = *(int *)(lVar2 + 0x34);
    uVar5 = uVar3;
    if (0 < iVar1) {
      do {
        iVar4 = (int)uVar5;
        if (param_1 + 2 == *(undefined8 **)(*(longlong *)(lVar2 + 0x28) + uVar3 * 8)) {
          _Dst = (void *)(*(longlong *)(lVar2 + 0x28) + (longlong)iVar4 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
          *(int *)(lVar2 + 0x34) = *(int *)(lVar2 + 0x34) + -1;
          iVar1 = *(int *)(lVar2 + 0x34);
          iVar4 = 0;
          if (0 < iVar1 * 2) {
            iVar4 = iVar1 * 2;
          }
          if (iVar4 < *(int *)(lVar2 + 0x30)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar2 + 0x30)) {
              FUN_18047cb30(lVar2 + 0x28);
            }
          }
          break;
        }
        uVar5 = (ulonglong)(iVar4 + 1);
        uVar3 = uVar3 + 1;
      } while ((longlong)uVar3 < (longlong)iVar1);
    }
    param_1[3] = 0;
  }
  *(undefined4 *)((longlong)param_1 + 0x2c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[4]);
}



############ FUN_ 1812eecd0 size=248 ############

void FUN_1812eecd0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar4 = *(longlong **)(param_1 + 0x30);
    plVar2 = plVar4 + *(int *)(param_1 + 0x3c);
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) {
        return;
      }
    }
    if ((param_1 != 0) && (lVar1 = param_1 + 0x18, lVar1 != 0)) {
      plVar4 = *(longlong **)(param_2 + 0x10);
      iVar3 = *(int *)(param_2 + 0x1c);
      plVar2 = plVar4 + iVar3;
      for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
        if (lVar1 == *plVar4) goto LAB_1812eed81;
      }
      if (*(int *)(param_2 + 0x18) < iVar3 + 1) {
        FUN_18047cb30(param_2 + 0x10,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
      }
      iVar3 = *(int *)(param_2 + 0x1c);
      *(int *)(param_2 + 0x1c) = iVar3 + 1;
      *(longlong *)(*(longlong *)(param_2 + 0x10) + (longlong)iVar3 * 8) = lVar1;
    }
LAB_1812eed81:
    iVar3 = *(int *)(param_1 + 0x3c) + 1;
    if (*(int *)(param_1 + 0x38) < iVar3) {
      FUN_18047cb30((longlong *)(param_1 + 0x30),
                    *(int *)(param_1 + 0x3c) + 9 + iVar3 / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x3c);
    *(int *)(param_1 + 0x3c) = iVar3 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x30) + (longlong)iVar3 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812eedd0 size=235 ############

void FUN_1812eedd0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  
  plVar5 = *(longlong **)(param_1 + 0x20);
  plVar2 = plVar5 + *(int *)(param_1 + 0x2c);
  for (; plVar5 != plVar2; plVar5 = plVar5 + 1) {
    if (param_2 == *plVar5) {
      return;
    }
  }
  if ((param_1 != 0) && (lVar1 = param_1 + 0x10, lVar1 != 0)) {
    plVar2 = (longlong *)(param_2 + 0x80);
    plVar4 = (longlong *)*plVar2;
    iVar3 = *(int *)(param_2 + 0x8c);
    plVar5 = plVar4 + iVar3;
    for (; plVar4 != plVar5; plVar4 = plVar4 + 1) {
      if (lVar1 == *plVar4) goto LAB_1812eee74;
    }
    if (*(int *)(param_2 + 0x88) < iVar3 + 1) {
      FUN_18047cb30(plVar2,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_2 + 0x8c);
    *(int *)(param_2 + 0x8c) = iVar3 + 1;
    *(longlong *)(*plVar2 + (longlong)iVar3 * 8) = lVar1;
  }
LAB_1812eee74:
  iVar3 = *(int *)(param_1 + 0x2c) + 1;
  if (*(int *)(param_1 + 0x28) < iVar3) {
    FUN_18047cb30((longlong *)(param_1 + 0x20),*(int *)(param_1 + 0x2c) + 9 + iVar3 / 2 & 0xfffffff8
                 );
  }
  iVar3 = *(int *)(param_1 + 0x2c);
  *(int *)(param_1 + 0x2c) = iVar3 + 1;
  *(longlong *)(*(longlong *)(param_1 + 0x20) + (longlong)iVar3 * 8) = param_2;
  return;
}



############ FUN_ 1812eeb00 size=436 ############

void FUN_1812eeb00(longlong param_1)

{
  void *pvVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  ulonglong uVar5;
  int iVar6;
  ulonglong uVar7;
  longlong lVar8;
  ulonglong uVar9;
  
  uVar9 = 0;
  iVar4 = *(int *)(param_1 + 0x2c) + -1;
  lVar8 = (longlong)iVar4;
  if (-1 < iVar4) {
    do {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x20) + lVar8 * 8);
      iVar4 = *(int *)(lVar2 + 0x8c);
      lVar3 = *(longlong *)(lVar2 + 0x80);
      uVar5 = uVar9;
      uVar7 = uVar9;
      if (0 < iVar4) {
        do {
          iVar6 = (int)uVar7;
          if (param_1 + 0x10 == *(longlong *)(lVar3 + uVar5 * 8)) {
            pvVar1 = (void *)(lVar3 + (longlong)iVar6 * 8);
            memmove(pvVar1,(void *)((longlong)pvVar1 + 8),(longlong)((iVar4 - iVar6) + -1) << 3);
            *(int *)(lVar2 + 0x8c) = *(int *)(lVar2 + 0x8c) + -1;
            iVar4 = *(int *)(lVar2 + 0x8c);
            iVar6 = 0;
            if (0 < iVar4 * 2) {
              iVar6 = iVar4 * 2;
            }
            if (iVar6 < *(int *)(lVar2 + 0x88)) {
              if (iVar4 < 8) {
                iVar4 = 8;
              }
              if (iVar4 < *(int *)(lVar2 + 0x88)) {
                FUN_18047cb30((longlong *)(lVar2 + 0x80));
              }
            }
            break;
          }
          uVar7 = (ulonglong)(iVar6 + 1);
          uVar5 = uVar5 + 1;
        } while ((longlong)uVar5 < (longlong)iVar4);
      }
      lVar8 = lVar8 + -1;
    } while (-1 < lVar8);
  }
  iVar4 = *(int *)(param_1 + 0x3c) + -1;
  lVar8 = (longlong)iVar4;
  if (-1 < iVar4) {
    do {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x30) + lVar8 * 8);
      iVar4 = *(int *)(lVar2 + 0x1c);
      uVar5 = uVar9;
      uVar7 = uVar9;
      if (0 < iVar4) {
        do {
          iVar6 = (int)uVar7;
          if (param_1 + 0x18 == *(longlong *)(*(longlong *)(lVar2 + 0x10) + uVar5 * 8)) {
            pvVar1 = (void *)(*(longlong *)(lVar2 + 0x10) + (longlong)iVar6 * 8);
            memmove(pvVar1,(void *)((longlong)pvVar1 + 8),(longlong)((iVar4 - iVar6) + -1) << 3);
            *(int *)(lVar2 + 0x1c) = *(int *)(lVar2 + 0x1c) + -1;
            iVar4 = *(int *)(lVar2 + 0x1c);
            iVar6 = 0;
            if (0 < iVar4 * 2) {
              iVar6 = iVar4 * 2;
            }
            if (iVar6 < *(int *)(lVar2 + 0x18)) {
              if (iVar4 < 8) {
                iVar4 = 8;
              }
              if (iVar4 < *(int *)(lVar2 + 0x18)) {
                FUN_18047cb30(lVar2 + 0x10);
              }
            }
            break;
          }
          uVar5 = uVar5 + 1;
          uVar7 = (ulonglong)(iVar6 + 1);
        } while ((longlong)uVar5 < (longlong)iVar4);
      }
      lVar8 = lVar8 + -1;
    } while (-1 < lVar8);
  }
  *(undefined4 *)(param_1 + 0x2c) = 0;
  if (*(int *)(param_1 + 0x28) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x20));
  }
  *(undefined4 *)(param_1 + 0x28) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  if (*(int *)(param_1 + 0x38) == 0) {
    *(undefined4 *)(param_1 + 0x38) = 0;
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x30));
}



############ FUN_ 18051b600 size=106 ############

longlong * FUN_18051b600(longlong *param_1,undefined8 *param_2)

{
  int iVar1;
  void *_Src;
  
  *param_1 = 0;
  param_1[1] = 0;
  iVar1 = *(int *)((longlong)param_2 + 0xc);
  _Src = (void *)*param_2;
  if (0 < iVar1) {
    FUN_18047cb30(param_1,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
  }
  memcpy((void *)(*param_1 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8),_Src,
         (longlong)iVar1 << 3);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + iVar1;
  return param_1;
}



############ FUN_ 180505930 size=1053 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180505930(longlong param_1,int param_2,char param_3)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint *_Memory;
  longlong *plVar1;
  undefined8 *puVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  void *_Dst;
  ulonglong uVar6;
  longlong *plVar7;
  uint uVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  int iVar11;
  int iVar12;
  ulonglong uVar13;
  undefined1 auStack_e8 [32];
  ulonglong local_c8;
  int local_b8;
  int local_b4;
  longlong *local_b0;
  undefined8 local_a8;
  longlong local_a0 [2];
  undefined4 uStack_90;
  undefined4 uStack_8c;
  char *local_88;
  longlong *local_80;
  undefined8 local_78;
  LPCRITICAL_SECTION local_70;
  longlong local_68;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined **local_48;
  int local_40 [2];
  ulonglong local_38;
  
  local_78 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_e8;
  uVar6 = 0;
  if ((param_2 != *(int *)(param_1 + 0xd0)) || (param_3 != *(char *)(param_1 + 0xd4))) {
    *(int *)(param_1 + 0xd0) = param_2;
    *(char *)(param_1 + 0xd4) = param_3;
    uStack_8c = *(undefined4 *)(param_1 + 0x2c);
    uStack_90 = *(undefined4 *)(param_1 + 0x28);
    local_a0[1] = 0;
    local_58 = 0;
    uStack_54 = 0;
    uStack_50 = uStack_90;
    uStack_4c = uStack_8c;
    FUN_181342870(param_1,&local_58,1);
  }
  local_80 = *(longlong **)(*(longlong *)(param_1 + 0xb8) + 0x120);
  iVar12 = 0;
  if ((local_80 == (longlong *)0x0) ||
     (iVar3 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x108) + 8))(),
     iVar3 <= *(int *)(param_1 + 0xd0))) {
    FUN_18047cbc0(param_1 + 0xc0);
    if (*(int *)(param_1 + 200) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 0xc0));
    }
    *(undefined4 *)(param_1 + 200) = 0;
  }
  else {
    lVar4 = FUN_18122bf10();
    lpCriticalSection = (LPCRITICAL_SECTION)(lVar4 + 0x10);
    local_70 = lpCriticalSection;
    EnterCriticalSection(lpCriticalSection);
    FUN_18122c130(lVar4);
    local_88 = "_tableColumnId";
    FUN_181211b90(local_a0,lVar4,&local_88);
    LeaveCriticalSection(lpCriticalSection);
    local_b8 = FUN_1812e5250(*(undefined8 *)(*(longlong *)(param_1 + 0xb8) + 0x118));
    local_b0 = (longlong *)(longlong)local_b8;
    if (0 < local_b8) {
      plVar1 = (longlong *)(param_1 + 0xc0);
      uVar9 = uVar6;
      uVar10 = uVar6;
      do {
        uVar8 = (uint)uVar9;
        local_b4 = FUN_1812e4ea0(*(undefined8 *)(*(longlong *)(param_1 + 0xb8) + 0x118),uVar9);
        uVar13 = uVar6;
        if (uVar8 < *(uint *)(param_1 + 0xcc)) {
          uVar13 = *(ulonglong *)(*plVar1 + uVar10 * 8);
        }
        if (uVar13 != 0) {
          plVar5 = *(longlong **)(uVar13 + 0x90);
          plVar7 = plVar5 + (longlong)*(int *)(uVar13 + 0x9c) * 3;
          for (; plVar5 != plVar7; plVar5 = plVar5 + 3) {
            local_68 = *plVar5;
            if (local_68 == local_a0[0]) {
              plVar5 = plVar5 + 1;
              if (plVar5 != (longlong *)0x0) goto LAB_180505aea;
              break;
            }
          }
          plVar5 = (longlong *)FUN_181244160();
LAB_180505aea:
          iVar3 = (**(code **)(*(longlong *)*plVar5 + 8))((longlong *)*plVar5,plVar5 + 1);
          if (local_b4 != iVar3) {
            FUN_18051afa0(plVar1,uVar9,0,1);
            uVar13 = uVar6;
          }
        }
        local_c8 = uVar13;
        plVar5 = (longlong *)
                 (**(code **)(*local_80 + 0x20))
                           (local_80,*(undefined4 *)(param_1 + 0xd0),local_b4,
                            *(undefined1 *)(param_1 + 0xd4));
        if (-1 < (int)uVar8) {
          iVar3 = *(int *)(param_1 + 0xcc);
          if ((int)uVar8 < iVar3) {
            *(longlong **)(*plVar1 + uVar10 * 8) = plVar5;
          }
          else {
            iVar11 = iVar3 + 1;
            if (*(int *)(param_1 + 200) < iVar11) {
              if (iVar11 < 0) {
                iVar11 = iVar3 + 2;
              }
              FUN_18047cb30(plVar1,iVar3 + 9 + (iVar11 >> 1) & 0xfffffff8);
            }
            iVar3 = *(int *)(param_1 + 0xcc);
            *(int *)(param_1 + 0xcc) = iVar3 + 1;
            *(longlong **)(*plVar1 + (longlong)iVar3 * 8) = plVar5;
          }
        }
        if (plVar5 != (longlong *)0x0) {
          local_48 = &PTR_vftable_18262b570;
          local_40[0] = local_b4;
          FUN_181243e80(plVar5 + 0x12,local_a0,&local_48);
          (**(code **)(*local_48 + 0xb0))(local_48,local_40);
          (**(code **)(*plVar5 + 0x58))(plVar5,1);
          FUN_181343cc0(param_1,plVar5,0xffffffff);
          FUN_180505e90(param_1,uVar9);
        }
        uVar9 = (ulonglong)(uVar8 + 1);
        uVar10 = uVar10 + 1;
      } while ((longlong)uVar10 < (longlong)local_b0);
    }
    plVar1 = (longlong *)(param_1 + 0xc0);
    iVar3 = *(int *)(param_1 + 0xcc);
    iVar11 = *(int *)(param_1 + 0xcc) + local_b8;
    if ((-1 < iVar11) && (iVar12 = iVar11, iVar3 < iVar11)) {
      iVar12 = iVar3;
    }
    if (local_b8 < 0) {
      local_b8 = 0;
    }
    else if (iVar3 < local_b8) {
      local_b8 = iVar3;
    }
    iVar12 = iVar12 - local_b8;
    if (0 < iVar12) {
      local_b0 = (longlong *)0x0;
      local_a8 = 0;
      lVar4 = (longlong)local_b8;
      FUN_18051fcc0(&local_b0,*plVar1 + lVar4 * 8,iVar12);
      _Dst = (void *)(*plVar1 + lVar4 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + (longlong)iVar12 * 8),
              (longlong)((*(int *)(param_1 + 0xcc) - iVar12) - local_b8) << 3);
      plVar5 = local_b0;
      *(int *)(param_1 + 0xcc) = *(int *)(param_1 + 0xcc) - iVar12;
      uVar9 = (ulonglong)((longlong)(local_b0 + local_a8._4_4_) + (7 - (longlong)local_b0)) >> 3;
      if (local_b0 + local_a8._4_4_ < local_b0) {
        uVar9 = uVar6;
      }
      plVar7 = local_b0;
      if (uVar9 != 0) {
        do {
          puVar2 = (undefined8 *)*plVar7;
          if (puVar2 != (undefined8 *)0x0) {
            (**(code **)*puVar2)(puVar2,1);
          }
          plVar7 = plVar7 + 1;
          uVar6 = uVar6 + 1;
        } while (uVar6 != uVar9);
      }
      if ((*(int *)(param_1 + 0xcc) * 2 < *(int *)(param_1 + 200)) &&
         (*(int *)(param_1 + 0xcc) < *(int *)(param_1 + 200))) {
        FUN_18047cb30(plVar1);
      }
                    /* WARNING: Subroutine does not return */
      free(plVar5);
    }
    _Memory = (uint *)(local_a0[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar8 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
}



############ FUN_ 18051afa0 size=153 ############

undefined8 * FUN_18051afa0(longlong *param_1,int param_2,undefined8 *param_3,char param_4)

{
  int iVar1;
  undefined8 *puVar2;
  
  if (-1 < param_2) {
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    if (param_2 < iVar1) {
      puVar2 = (undefined8 *)0x0;
      if ((param_4 != '\0') &&
         (puVar2 = *(undefined8 **)(*param_1 + (longlong)param_2 * 8), puVar2 == param_3)) {
        puVar2 = (undefined8 *)0x0;
      }
      *(undefined8 **)(*param_1 + (longlong)param_2 * 8) = param_3;
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1);
        return param_3;
      }
    }
    else {
      if ((int)param_1[1] < iVar1 + 1) {
        FUN_18047cb30(param_1,iVar1 + 9 + (iVar1 + 1) / 2 & 0xfffffff8);
      }
      iVar1 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
      *(undefined8 **)(*param_1 + (longlong)iVar1 * 8) = param_3;
    }
  }
  return param_3;
}



############ FUN_ 18050d1f0 size=280 ############

void FUN_18050d1f0(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  int iVar7;
  
  *param_1 = juce::DropShadower::vftable;
  lVar3 = param_1[1];
  if (lVar3 != 0) {
    plVar4 = *(longlong **)(lVar3 + 0x80);
    iVar2 = *(int *)(lVar3 + 0x8c);
    plVar6 = plVar4;
    iVar7 = 0;
    if (0 < iVar2) {
      do {
        if (param_1 == (undefined8 *)*plVar6) {
          plVar4 = plVar4 + iVar7;
          memmove(plVar4,plVar4 + 1,(longlong)((iVar2 - iVar7) + -1) << 3);
          *(int *)(lVar3 + 0x8c) = *(int *)(lVar3 + 0x8c) + -1;
          iVar2 = *(int *)(lVar3 + 0x8c);
          iVar7 = 0;
          if (0 < iVar2 * 2) {
            iVar7 = iVar2 * 2;
          }
          if (iVar7 < *(int *)(lVar3 + 0x88)) {
            if (iVar2 < 8) {
              iVar2 = 8;
            }
            if (iVar2 < *(int *)(lVar3 + 0x88)) {
              FUN_18047cb30((longlong *)(lVar3 + 0x80));
            }
          }
          break;
        }
        iVar7 = iVar7 + 1;
        plVar6 = plVar6 + 1;
      } while (iVar7 < iVar2);
    }
    param_1[1] = 0;
  }
  FUN_1812c8590(param_1);
  *(undefined1 *)(param_1 + 6) = 1;
  FUN_18047cbc0(param_1 + 2);
  if (*(int *)(param_1 + 3) == 0) {
    *(undefined4 *)(param_1 + 3) = 0;
    puVar5 = (undefined8 *)param_1[7];
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
    FUN_18047cbc0(param_1 + 2);
    *(undefined4 *)((longlong)param_1 + 0x1c) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[2]);
}



############ FUN_ 180515d90 size=1195 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180515fe6) */
/* WARNING: Removing unreachable block (ram,0x000180515ff5) */

void FUN_180515d90(int *param_1,longlong param_2,HWND param_3,ulonglong param_4)

{
  int *piVar1;
  uint uVar2;
  DWORD DVar3;
  LONG LVar4;
  longlong *plVar5;
  HIMC pHVar6;
  undefined8 uVar7;
  char *lpBuf;
  int *lpBuf_00;
  longlong lVar8;
  undefined4 *puVar9;
  longlong *plVar10;
  uint *puVar11;
  char *pcVar12;
  int *piVar13;
  int iVar14;
  ulonglong uVar15;
  size_t _Size;
  ulonglong uVar16;
  undefined1 auStack_158 [32];
  undefined4 local_138;
  undefined8 local_128;
  void *local_120;
  undefined8 local_118;
  HIMC local_110;
  longlong local_108;
  void *local_100;
  ulonglong local_f8;
  longlong local_f0;
  undefined4 local_e8;
  undefined4 uStack_e4;
  undefined8 local_e0;
  int local_d8;
  int iStack_d4;
  longlong local_d0;
  HWND local_c8;
  longlong local_c0;
  LONG local_b8;
  int local_b4;
  int local_ac;
  undefined4 local_a8 [4];
  undefined8 local_98;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined1 local_78 [16];
  tagCANDIDATEFORM local_68;
  ulonglong local_48;
  
  local_98 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_128 = param_4;
  local_c8 = param_3;
  local_c0 = param_2;
  plVar5 = (longlong *)FUN_1812d2070(param_2);
  if ((plVar5 != (longlong *)0x0) && (pHVar6 = ImmGetContext(param_3), pHVar6 != (HIMC)0x0)) {
    local_110 = pHVar6;
    if (*param_1 < 0) {
      if (*(code **)(*plVar5 + 0x10) == FUN_1804e49c0) {
        local_f0 = plVar5[0x3a];
        plVar10 = &local_f0;
      }
      else {
        plVar10 = (longlong *)(**(code **)(*plVar5 + 0x10))(plVar5,&local_f0);
      }
      local_e8 = (undefined4)*plVar10;
      *(ulonglong *)param_1 = CONCAT44(local_e8,local_e8);
      uStack_e4 = local_e8;
    }
    if ((param_4 >> 0xb & 1) != 0) {
      uVar7 = FUN_180516280();
      local_e0 = 0xffffffffffffffff;
      FUN_180516330(param_1,plVar5,uVar7,0xffffffffffffffff);
      puVar11 = (uint *)(local_108 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      local_128 = 0xffffffffffffffff;
      param_1[0] = -1;
      param_1[1] = -1;
      *(undefined1 *)(param_1 + 2) = 0;
      local_100 = (void *)0x0;
      local_f8 = 0;
      (**(code **)(*plVar5 + 0x20))(plVar5,&local_100);
      local_f8 = local_f8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_100);
    }
    iVar14 = 0;
    if ((param_4 & 8) != 0) {
      local_108 = FUN_180516280();
      if ((param_4 & 0x10) != 0) {
        DVar3 = ImmGetCompositionStringW(pHVar6,0x10,(LPVOID)0x0,0);
        _Size = (size_t)(int)DVar3;
        param_4 = local_128;
        if (0 < (int)DVar3) {
          lpBuf = malloc(_Size);
          ImmGetCompositionStringW(local_110,0x10,lpBuf,DVar3);
          if (0 < (int)DVar3) {
            pcVar12 = lpBuf;
            iVar14 = 0;
            do {
              if ((*pcVar12 - 1U & 0xfd) == 0) break;
              iVar14 = iVar14 + 1;
              pcVar12 = pcVar12 + 1;
            } while ((longlong)pcVar12 - (longlong)lpBuf < (longlong)_Size);
          }
          if ((longlong)iVar14 < (longlong)_Size) {
            pcVar12 = lpBuf + iVar14;
            do {
              if ((*pcVar12 - 1U & 0xfd) != 0) break;
              pcVar12 = pcVar12 + 1;
            } while ((longlong)pcVar12 - (longlong)lpBuf < (longlong)_Size);
          }
                    /* WARNING: Subroutine does not return */
          free(lpBuf);
        }
      }
      local_128 = CONCAT44(*param_1,*param_1);
      FUN_180516330(param_1,plVar5);
      puVar11 = (uint *)(local_d0 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      local_120 = (void *)0x0;
      local_118._0_4_ = 0;
      local_118._4_4_ = 0;
      if ((param_4 & 0x20) != 0) {
        DVar3 = ImmGetCompositionStringW(pHVar6,0x20,(LPVOID)0x0,0);
        if (0 < (int)DVar3) {
          uVar16 = (ulonglong)(longlong)(int)DVar3 >> 2;
          lpBuf_00 = malloc(uVar16 * 4);
          LVar4 = ImmGetCompositionStringW(pHVar6,0x20,lpBuf_00,DVar3);
          if ((0 < LVar4) && (1 < uVar16)) {
            uVar15 = 1;
            piVar13 = lpBuf_00;
            do {
              piVar1 = piVar13 + 1;
              local_d8 = *piVar13;
              iVar14 = local_d8;
              if (local_d8 < *piVar1) {
                iVar14 = *piVar1;
              }
              iVar14 = iVar14 + *param_1;
              local_d8 = local_d8 + *param_1;
              iStack_d4 = local_d8;
              if (local_d8 < iVar14) {
                iStack_d4 = iVar14;
              }
              iVar14 = local_118._4_4_ + 1;
              if ((int)(uint)local_118 < iVar14) {
                if (iVar14 < 0) {
                  iVar14 = local_118._4_4_ + 2;
                }
                FUN_18047cb30(&local_120,local_118._4_4_ + 9 + (iVar14 >> 1) & 0xfffffff8);
              }
              lVar8 = (longlong)local_118._4_4_;
              local_118._4_4_ = local_118._4_4_ + 1;
              *(ulonglong *)((longlong)local_120 + lVar8 * 8) = CONCAT44(iStack_d4,local_d8);
              uVar15 = uVar15 + 1;
              piVar13 = piVar1;
            } while (uVar15 < uVar16);
          }
                    /* WARNING: Subroutine does not return */
          free(lpBuf_00);
        }
      }
      (**(code **)(*plVar5 + 0x20))(plVar5,&local_120);
      local_118 = (ulonglong)(uint)local_118;
                    /* WARNING: Subroutine does not return */
      free(local_120);
    }
    local_138 = 0;
    lVar8 = __RTDynamicCast(plVar5,0,&juce::TextInputTarget::RTTI_Type_Descriptor,
                            &juce::Component::RTTI_Type_Descriptor);
    if (lVar8 != 0) {
      if (*(code **)(*plVar5 + 0x38) == FUN_1812e0820) {
        uVar7 = FUN_1812e0660(plVar5 + -0x16,local_78);
        FUN_1804ab070(uVar7,local_a8);
        puVar9 = local_a8;
      }
      else {
        puVar9 = (undefined4 *)(**(code **)(*plVar5 + 0x38))(plVar5,local_a8);
      }
      local_88 = *puVar9;
      uStack_84 = puVar9[1];
      uStack_80 = puVar9[2];
      uStack_7c = puVar9[3];
      FUN_18051df30(&local_b8,*(undefined8 *)(param_2 + 8),lVar8,&local_88);
      local_68.dwIndex = 0;
      local_68.dwStyle = 0x40;
      local_68.ptCurrentPos.x = local_b8;
      local_68.ptCurrentPos.y = local_ac + local_b4;
      local_68.rcArea.left = 0;
      local_68.rcArea.top = 0;
      local_68.rcArea.right = 0;
      local_68.rcArea.bottom = 0;
      ImmSetCandidateWindow(pHVar6,&local_68);
    }
    ImmReleaseContext(param_3,pHVar6);
  }
}



############ FUN_ 18051b540 size=156 ############

longlong * FUN_18051b540(longlong *param_1,longlong *param_2)

{
  int iVar1;
  void *pvVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  longlong local_28;
  undefined8 local_20;
  
  if (param_1 != param_2) {
    iVar1 = *(int *)((longlong)param_2 + 0xc);
    pvVar2 = (void *)*param_2;
    local_28 = 0;
    local_20 = 0;
    iVar4 = 0;
    iVar5 = 0;
    if (0 < iVar1) {
      FUN_18047cb30(&local_28,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
      iVar4 = local_20._4_4_;
      iVar5 = (int)local_20;
    }
    lVar3 = local_28;
    memcpy((void *)(local_28 + (longlong)iVar4 * 8),pvVar2,(longlong)iVar1 << 3);
    pvVar2 = (void *)*param_1;
    *param_1 = lVar3;
    *(int *)(param_1 + 1) = iVar5;
    *(int *)((longlong)param_1 + 0xc) = iVar4 + iVar1;
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  return param_1;
}



############ FUN_ 180526a30 size=374 ############

void FUN_180526a30(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  uint uVar5;
  longlong lVar6;
  longlong local_40;
  void *local_38;
  undefined8 local_30;
  
  *param_1 = juce::ValueTree::SharedObject::vftable;
  uVar5 = *(int *)((longlong)param_1 + 0x34) - 1;
  if (-1 < (int)uVar5) {
    lVar3 = *(longlong *)((longlong)(int)uVar5 * 8 + param_1[5]);
    if (lVar3 != 0) {
      LOCK();
      *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
      UNLOCK();
    }
    *(undefined8 *)(lVar3 + 0x48) = 0;
    if (uVar5 < *(uint *)((longlong)param_1 + 0x34)) {
      puVar4 = *(undefined8 **)(param_1[5] + (longlong)(int)uVar5 * 8);
      _Dst = (void *)(param_1[5] + (longlong)(int)uVar5 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)(int)((*(uint *)((longlong)param_1 + 0x34) - uVar5) + -1) << 3);
      *(int *)((longlong)param_1 + 0x34) = *(int *)((longlong)param_1 + 0x34) + -1;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      if ((*(int *)((longlong)param_1 + 0x34) * 2 < *(int *)(param_1 + 6)) &&
         (*(int *)((longlong)param_1 + 0x34) < *(int *)(param_1 + 6))) {
        FUN_18047cb30(param_1 + 5);
      }
    }
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
    local_38 = (void *)0x0;
    local_30 = 0;
    uVar5 = *(int *)(lVar3 + 0x34) - 1;
    lVar6 = (longlong)(int)uVar5;
    local_40 = lVar3;
    if (-1 < (int)uVar5) {
      do {
        if ((uVar5 < *(uint *)(lVar3 + 0x34)) &&
           (*(longlong *)(*(longlong *)(lVar3 + 0x28) + lVar6 * 8) != 0)) {
          FUN_180526d20();
        }
        uVar5 = uVar5 - 1;
        lVar6 = lVar6 + -1;
      } while (-1 < lVar6);
    }
    FUN_180528950(lVar3);
    if ((local_30._4_4_ != 0) && (local_40 != 0)) {
      FUN_180527d40(local_40 + 0x38,&local_40);
    }
    local_30 = local_30 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_38);
  }
  *(undefined4 *)((longlong)param_1 + 0x44) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[7]);
}



############ FUN_ 180528950 size=419 ############

void FUN_180528950(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  void *_Src;
  ulonglong uVar2;
  void *_Memory;
  int iVar3;
  longlong lVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  void *local_30;
  undefined8 local_28;
  
  iVar5 = *(int *)(param_1 + 0x44);
  if (iVar5 == 1) {
    lVar4 = **(longlong **)(param_1 + 0x38);
    iVar5 = *(int *)(lVar4 + 0x14);
    while (0 < iVar5) {
      iVar5 = iVar5 + -1;
      if ((*(int *)(lVar4 + 0x14) <= iVar5) && (iVar5 = *(int *)(lVar4 + 0x14) + -1, iVar5 < 0)) {
        return;
      }
      plVar1 = *(longlong **)(*(longlong *)(lVar4 + 8) + (longlong)iVar5 * 8);
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x28))(plVar1,param_3);
      }
    }
  }
  else if (0 < iVar5) {
    local_30 = (void *)0x0;
    local_28 = 0;
    iVar7 = *(int *)(param_1 + 0x44);
    _Src = *(void **)(param_1 + 0x38);
    iVar6 = 0;
    if (0 < iVar7) {
      FUN_18047cb30(&local_30,iVar7 + 8 + iVar7 / 2 & 0xfffffff8,param_3,param_4,0xfffffffffffffffe)
      ;
      iVar6 = local_28._4_4_;
    }
    _Memory = local_30;
    memcpy((void *)((longlong)local_30 + (longlong)iVar6 * 8),_Src,(longlong)iVar7 << 3);
    local_28 = CONCAT44(iVar6 + iVar7,(undefined4)local_28);
    lVar4 = 0;
    if (0 < iVar5) {
      do {
        uVar2 = *(ulonglong *)((longlong)_Memory + lVar4 * 8);
        if (lVar4 == 0) {
LAB_180528a88:
          iVar7 = *(int *)(uVar2 + 0x14);
          while (0 < iVar7) {
            iVar7 = iVar7 + -1;
            if ((*(int *)(uVar2 + 0x14) <= iVar7) &&
               (iVar7 = *(int *)(uVar2 + 0x14) + -1, iVar7 < 0)) break;
            plVar1 = *(longlong **)(*(longlong *)(uVar2 + 8) + (longlong)iVar7 * 8);
            if (plVar1 != (longlong *)0x0) {
              (**(code **)(*plVar1 + 0x28))(plVar1,param_3);
            }
          }
        }
        else {
          iVar6 = 0;
          iVar7 = *(int *)(param_1 + 0x44);
          if (0 < iVar7) {
            do {
              if (uVar2 == *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar6 * 8))
              goto LAB_180528a83;
              iVar3 = (iVar7 + iVar6) / 2;
              if (iVar3 == iVar6) break;
              if (uVar2 < *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar3 * 8)) {
                iVar7 = iVar3;
                iVar3 = iVar6;
              }
              iVar6 = iVar3;
            } while (iVar6 < iVar7);
          }
          iVar6 = -1;
LAB_180528a83:
          if (-1 < iVar6) goto LAB_180528a88;
        }
        lVar4 = lVar4 + 1;
      } while (lVar4 < iVar5);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 180527010 size=462 ############

void FUN_180527010(longlong param_1,longlong param_2,uint param_3)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  undefined4 uVar4;
  int iVar5;
  longlong *plVar6;
  void *_Src;
  longlong *plVar7;
  longlong *local_68;
  longlong *plStack_60;
  longlong local_58;
  void *local_50;
  undefined8 local_48;
  longlong local_40 [3];
  
  if (param_2 != 0) {
    lVar2 = *(longlong *)(param_2 + 0x48);
    if ((lVar2 != param_1) && (param_2 != param_1)) {
      for (lVar3 = *(longlong *)(param_1 + 0x48); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x48)) {
        if (lVar3 == param_2) {
          return;
        }
      }
      if (lVar2 != 0) {
        plVar7 = *(longlong **)(lVar2 + 0x28);
        for (plVar6 = plVar7; plVar6 != plVar7 + *(int *)(lVar2 + 0x34); plVar6 = plVar6 + 1) {
          if (param_2 == *plVar6) {
            uVar4 = (undefined4)((longlong)plVar6 - (longlong)plVar7 >> 3);
            goto LAB_1805270a9;
          }
        }
        uVar4 = 0xffffffff;
LAB_1805270a9:
        FUN_180527220(lVar2,uVar4,plVar7,lVar2,0xfffffffffffffffe);
      }
      iVar5 = *(int *)(param_1 + 0x34) + 1;
      if (*(int *)(param_1 + 0x30) < iVar5) {
        FUN_18047cb30(param_1 + 0x28,*(int *)(param_1 + 0x34) + 9 + iVar5 / 2 & 0xfffffff8);
      }
      uVar1 = *(uint *)(param_1 + 0x34);
      if (param_3 < uVar1) {
        _Src = (void *)(*(longlong *)(param_1 + 0x28) + (longlong)(int)param_3 * 8);
        memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - param_3) << 3);
        plVar7 = (longlong *)(*(longlong *)(param_1 + 0x28) + (longlong)(int)param_3 * 8);
      }
      else {
        plVar7 = (longlong *)(*(longlong *)(param_1 + 0x28) + (longlong)(int)uVar1 * 8);
      }
      *plVar7 = param_2;
      *(int *)(param_1 + 0x34) = *(int *)(param_1 + 0x34) + 1;
      LOCK();
      *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
      UNLOCK();
      *(longlong *)(param_2 + 0x48) = param_1;
      LOCK();
      *(int *)(param_2 + 8) = *(int *)(param_2 + 8) + 1;
      UNLOCK();
      local_40[1] = 0;
      local_40[2] = 0;
      LOCK();
      *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
      UNLOCK();
      local_50 = (void *)0x0;
      local_48 = 0;
      local_68 = &local_58;
      plStack_60 = local_40;
      local_58 = param_1;
      local_40[0] = param_2;
      FUN_180528510(param_1,plVar7,&local_68);
      if ((local_48._4_4_ != 0) && (local_58 != 0)) {
        FUN_180527d40(local_58 + 0x38,&local_58);
      }
      local_48 = local_48 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_50);
    }
  }
  return;
}



############ FUN_ 180528510 size=514 ############

void FUN_180528510(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  longlong *plVar1;
  void *_Src;
  ulonglong uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  void *_Memory;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  void *local_50;
  undefined8 local_48;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  do {
    if (param_1 == 0) {
      return;
    }
    local_38 = *(undefined4 *)param_3;
    uStack_34 = *(undefined4 *)((longlong)param_3 + 4);
    uVar4 = *param_3;
    uStack_30 = *(undefined4 *)(param_3 + 1);
    uStack_2c = *(undefined4 *)((longlong)param_3 + 0xc);
    uVar3 = param_3[1];
    iVar7 = *(int *)(param_1 + 0x44);
    if (iVar7 == 1) {
      lVar9 = **(longlong **)(param_1 + 0x38);
      iVar7 = *(int *)(lVar9 + 0x14);
      while (0 < iVar7) {
        iVar7 = iVar7 + -1;
        if ((*(int *)(lVar9 + 0x14) <= iVar7) && (iVar7 = *(int *)(lVar9 + 0x14) + -1, iVar7 < 0))
        break;
        plVar1 = *(longlong **)(*(longlong *)(lVar9 + 8) + (longlong)iVar7 * 8);
        if (plVar1 != (longlong *)0x0) {
          (**(code **)(*plVar1 + 0x10))(plVar1,uVar4,uVar3);
        }
      }
    }
    else if (0 < iVar7) {
      local_50 = (void *)0x0;
      local_48 = 0;
      iVar8 = *(int *)(param_1 + 0x44);
      _Src = *(void **)(param_1 + 0x38);
      iVar5 = 0;
      if (0 < iVar8) {
        iVar5 = iVar8;
        if (iVar8 < 0) {
          iVar5 = iVar8 + 1;
        }
        FUN_18047cb30(&local_50,(iVar5 >> 1) + 8 + iVar8 & 0xfffffff8);
        iVar5 = local_48._4_4_;
      }
      _Memory = local_50;
      memcpy((void *)((longlong)local_50 + (longlong)iVar5 * 8),_Src,(longlong)iVar8 << 3);
      local_48 = CONCAT44(iVar5 + iVar8,(undefined4)local_48);
      lVar9 = 0;
      if (iVar7 < 1) goto LAB_1805286ce;
      uVar3 = CONCAT44(uStack_34,local_38);
      break;
    }
    param_1 = *(longlong *)(param_1 + 0x48);
  } while( true );
LAB_180528630:
  uVar2 = *(ulonglong *)((longlong)_Memory + lVar9 * 8);
  if (lVar9 == 0) {
LAB_180528688:
    iVar8 = *(int *)(uVar2 + 0x14);
    while (0 < iVar8) {
      iVar8 = iVar8 + -1;
      if ((*(int *)(uVar2 + 0x14) <= iVar8) && (iVar8 = *(int *)(uVar2 + 0x14) + -1, iVar8 < 0))
      break;
      plVar1 = *(longlong **)(*(longlong *)(uVar2 + 8) + (longlong)iVar8 * 8);
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x10))(plVar1,uVar3);
      }
    }
  }
  else {
    iVar5 = 0;
    iVar8 = *(int *)(param_1 + 0x44);
    if (0 < iVar8) {
      do {
        if (uVar2 == *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar5 * 8))
        goto LAB_180528683;
        iVar6 = (iVar8 + iVar5) / 2;
        if (iVar6 == iVar5) break;
        if (uVar2 < *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar6 * 8)) {
          iVar8 = iVar6;
          iVar6 = iVar5;
        }
        iVar5 = iVar6;
      } while (iVar5 < iVar8);
    }
    iVar5 = -1;
LAB_180528683:
    if (-1 < iVar5) goto LAB_180528688;
  }
  lVar9 = lVar9 + 1;
  if (iVar7 <= lVar9) {
LAB_1805286ce:
    local_48 = local_48 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  goto LAB_180528630;
}



############ FUN_ 180528720 size=551 ############

void FUN_180528720(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  longlong *plVar2;
  void *_Src;
  ulonglong uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  void *_Memory;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  longlong lVar10;
  undefined8 uVar11;
  void *local_70;
  undefined8 local_68;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  ulonglong local_48;
  
  if (param_1 != 0) {
    uVar11 = 0xfffffffffffffffe;
    do {
      local_58 = *(undefined4 *)param_3;
      uStack_54 = *(undefined4 *)((longlong)param_3 + 4);
      uVar5 = *param_3;
      uStack_50 = *(undefined4 *)(param_3 + 1);
      uStack_4c = *(undefined4 *)((longlong)param_3 + 0xc);
      uVar4 = param_3[1];
      uVar1 = param_3[2];
      iVar8 = *(int *)(param_1 + 0x44);
      local_48 = uVar1;
      if (iVar8 == 1) {
        lVar10 = **(longlong **)(param_1 + 0x38);
        iVar8 = *(int *)(lVar10 + 0x14);
        while (0 < iVar8) {
          iVar8 = iVar8 + -1;
          if ((*(int *)(lVar10 + 0x14) <= iVar8) &&
             (iVar8 = *(int *)(lVar10 + 0x14) + -1, iVar8 < 0)) break;
          plVar2 = *(longlong **)(*(longlong *)(lVar10 + 8) + (longlong)iVar8 * 8);
          if (plVar2 != (longlong *)0x0) {
            (**(code **)(*plVar2 + 0x18))(plVar2,uVar5,uVar4,uVar1 & 0xffffffff,uVar11);
          }
        }
      }
      else if (0 < iVar8) {
        local_70 = (void *)0x0;
        local_68 = 0;
        iVar9 = *(int *)(param_1 + 0x44);
        _Src = *(void **)(param_1 + 0x38);
        iVar6 = 0;
        if (0 < iVar9) {
          iVar6 = iVar9;
          if (iVar9 < 0) {
            iVar6 = iVar9 + 1;
          }
          FUN_18047cb30(&local_70,(iVar6 >> 1) + 8 + iVar9 & 0xfffffff8);
          iVar6 = local_68._4_4_;
        }
        _Memory = local_70;
        memcpy((void *)((longlong)iVar6 * 8 + (longlong)local_70),_Src,(longlong)iVar9 << 3);
        uVar1 = local_48;
        local_68 = CONCAT44(iVar6 + iVar9,(undefined4)local_68);
        lVar10 = 0;
        if (iVar8 < 1) goto LAB_180528909;
        uVar4 = CONCAT44(uStack_4c,uStack_50);
        uVar11 = CONCAT44(uStack_54,local_58);
        goto LAB_180528860;
      }
      param_1 = *(longlong *)(param_1 + 0x48);
    } while (param_1 != 0);
  }
  return;
LAB_180528860:
  uVar3 = *(ulonglong *)((longlong)_Memory + lVar10 * 8);
  if (lVar10 == 0) {
LAB_1805288b8:
    iVar9 = *(int *)(uVar3 + 0x14);
    while (0 < iVar9) {
      iVar9 = iVar9 + -1;
      if ((*(int *)(uVar3 + 0x14) <= iVar9) && (iVar9 = *(int *)(uVar3 + 0x14) + -1, iVar9 < 0))
      break;
      plVar2 = *(longlong **)(*(longlong *)(uVar3 + 8) + (longlong)iVar9 * 8);
      if (plVar2 != (longlong *)0x0) {
        (**(code **)(*plVar2 + 0x18))(plVar2,uVar11,uVar4,uVar1 & 0xffffffff);
      }
    }
  }
  else {
    iVar6 = 0;
    iVar9 = *(int *)(param_1 + 0x44);
    if (0 < iVar9) {
      do {
        if (uVar3 == *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar6 * 8))
        goto LAB_1805288b3;
        iVar7 = (iVar9 + iVar6) / 2;
        if (iVar7 == iVar6) break;
        if (uVar3 < *(ulonglong *)(*(longlong *)(param_1 + 0x38) + (longlong)iVar7 * 8)) {
          iVar9 = iVar7;
          iVar7 = iVar6;
        }
        iVar6 = iVar7;
      } while (iVar6 < iVar9);
    }
    iVar6 = -1;
LAB_1805288b3:
    if (-1 < iVar6) goto LAB_1805288b8;
  }
  lVar10 = lVar10 + 1;
  if (iVar8 <= lVar10) {
LAB_180528909:
    local_68 = local_68 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  goto LAB_180528860;
}



############ FUN_ 180532fd0 size=350 ############

void FUN_180532fd0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  undefined8 uVar5;
  uint uVar6;
  longlong lVar7;
  
  if (param_2 != 0) {
    plVar1 = (longlong *)(param_1 + 0x240098);
    plVar3 = (longlong *)*plVar1;
    iVar4 = *(int *)(param_1 + 0x2400a4);
    plVar2 = plVar3 + iVar4;
    for (; plVar3 != plVar2; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) goto LAB_180533054;
    }
    if (*(int *)(param_1 + 0x2400a0) < iVar4 + 1) {
      FUN_18047cb30(plVar1,iVar4 + 9 + (iVar4 + 1) / 2 & 0xfffffff8,(longlong)iVar4,param_4,
                    0xfffffffffffffffe);
    }
    iVar4 = *(int *)(param_1 + 0x2400a4);
    *(int *)(param_1 + 0x2400a4) = iVar4 + 1;
    *(longlong *)(*plVar1 + (longlong)iVar4 * 8) = param_2;
  }
LAB_180533054:
  uVar6 = 0;
  if (0 < *(int *)(param_1 + 0x240084)) {
    lVar7 = 0;
    do {
      if (uVar6 < *(uint *)(param_1 + 0x6c)) {
        uVar5 = *(undefined8 *)(lVar7 + *(longlong *)(param_1 + 0x60));
      }
      else {
        uVar5 = 0;
      }
      iVar4 = *(int *)(param_1 + 0x2400a4);
      while (0 < iVar4) {
        iVar4 = iVar4 + -1;
        if ((*(int *)(param_1 + 0x2400a4) <= iVar4) &&
           (iVar4 = *(int *)(param_1 + 0x2400a4) + -1, iVar4 < 0)) break;
        FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x240098) + (longlong)iVar4 * 8),uVar6
                      ,uVar5);
      }
      if (uVar6 < *(uint *)(param_1 + 0x6c)) {
        uVar5 = *(undefined8 *)(lVar7 + *(longlong *)(param_1 + 0x60));
      }
      else {
        uVar5 = 0;
      }
      iVar4 = *(int *)(param_1 + 0x2400b4);
      while (0 < iVar4) {
        iVar4 = iVar4 + -1;
        if ((*(int *)(param_1 + 0x2400b4) <= iVar4) &&
           (iVar4 = *(int *)(param_1 + 0x2400b4) + -1, iVar4 < 0)) break;
        FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x2400a8) + (longlong)iVar4 * 8),uVar6
                      ,uVar5);
      }
      uVar6 = uVar6 + 1;
      lVar7 = lVar7 + 8;
    } while ((int)uVar6 < *(int *)(param_1 + 0x240084));
  }
  return;
}



############ FUN_ 18054a0b0 size=1353 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18054a0b0(undefined8 *param_1,longlong *param_2,undefined1 param_3,longlong param_4)

{
  void *pvVar1;
  double dVar2;
  uint uVar3;
  undefined8 *puVar4;
  short *pv;
  int iVar5;
  undefined8 uVar6;
  HANDLE pvVar7;
  uint uVar8;
  double *pdVar9;
  uint uVar10;
  double *pdVar11;
  uint uVar12;
  size_t _Size;
  uint *puVar13;
  double dVar14;
  undefined1 auStack_118 [32];
  undefined1 *local_f8;
  longlong *local_e8;
  undefined8 *local_e0;
  short *local_d8;
  longlong local_d0;
  longlong local_c8 [2];
  undefined8 *local_b8;
  undefined1 local_b0 [2];
  ushort local_ae;
  uint local_ac;
  uint local_a8;
  ushort local_a2;
  undefined4 local_9c;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  uint local_4c;
  ulonglong local_48;
  
  local_c8[1] = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_118;
  *param_1 = juce::WasapiClasses::WASAPIDeviceBase::vftable;
  param_2 = (longlong *)*param_2;
  param_1[1] = param_2;
  local_b8 = param_1;
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 8))();
  }
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  *(undefined1 *)(param_1 + 8) = param_3;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xf] = 4;
  *(undefined4 *)(param_1 + 0x10) = 0xffffffff;
  *(undefined1 *)((longlong)param_1 + 0x84) = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)((longlong)param_1 + 0xa4) = 0;
  local_e0 = param_1 + 0x15;
  param_1[0x1c] = 0;
  puVar4 = *(undefined8 **)(param_4 + 0x38);
  if (puVar4 != (undefined8 *)0x0) {
    uVar6 = (**(code **)*puVar4)(puVar4,local_e0);
    param_1[0x1c] = uVar6;
  }
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  pvVar7 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,0,0,(LPCWSTR)0x0);
  param_1[0xb] = pvVar7;
  FUN_18054ad10(param_1,&local_e8);
  if (local_e8 != (longlong *)0x0) {
    iVar5 = (**(code **)(*local_e8 + 0x48))(local_e8,local_c8,&local_d0);
    if (iVar5 < 0) {
      if (local_e8 != (longlong *)0x0) {
        (**(code **)(*local_e8 + 0x10))();
      }
    }
    else {
      local_d8 = (short *)0x0;
      iVar5 = (**(code **)(*local_e8 + 0x40))(local_e8,&local_d8);
      pv = local_d8;
      if (iVar5 < 0) {
        if (local_e8 != (longlong *)0x0) {
          (**(code **)(*local_e8 + 0x10))();
        }
      }
      else {
        _Size = 0x12;
        if (*local_d8 == -2) {
          _Size = 0x28;
        }
        memcpy(local_b0,local_d8,_Size);
        CoTaskMemFree(pv);
        *(uint *)(param_1 + 5) = (uint)local_ae;
        *(uint *)((longlong)param_1 + 0x2c) = (uint)local_ae;
        dVar14 = (double)local_ac;
        param_1[4] = dVar14;
        local_e0._0_4_ = SUB84((double)local_d0 * dVar14 * _DAT_1824c3d30 + DAT_1824c4520,0);
        *(undefined4 *)(param_1 + 6) = local_e0._0_4_;
        local_e0 = (undefined8 *)((double)local_c8[0] * dVar14 * _DAT_1824c3d30 + DAT_1824c4520);
        *(undefined4 *)((longlong)param_1 + 0x34) = local_e0._0_4_;
        *(undefined4 *)((longlong)param_1 + 0x3c) = local_9c;
        uVar3 = *(uint *)((longlong)param_1 + 0x54);
        uVar12 = 0;
        uVar8 = 0;
        uVar10 = uVar3;
        if (0 < (int)uVar3) {
          do {
            uVar12 = uVar8;
            dVar2 = *(double *)(param_1[9] + (longlong)(int)uVar12 * 8);
            if ((dVar2 <= dVar14) && (dVar14 <= dVar2)) {
LAB_18054a363:
              uVar12 = uVar12 + 1;
              break;
            }
            uVar8 = (int)(uVar12 + uVar10) >> 1;
            dVar2 = *(double *)(param_1[9] + (longlong)(int)uVar8 * 8);
            if (uVar8 == uVar12) {
              if (dVar2 <= dVar14) goto LAB_18054a363;
              break;
            }
            if (dVar2 <= dVar14) {
              uVar12 = uVar8;
              uVar8 = uVar10;
            }
            uVar10 = uVar8;
            uVar8 = uVar12;
          } while ((int)uVar12 < (int)uVar10);
        }
        if (*(int *)(param_1 + 10) < (int)(uVar3 + 1)) {
          FUN_18047cb30(param_1 + 9,uVar3 + 9 + (int)(uVar3 + 1) / 2 & 0xfffffff8);
        }
        uVar3 = *(uint *)((longlong)param_1 + 0x54);
        if (uVar12 < uVar3) {
          pvVar1 = (void *)(param_1[9] + (longlong)(int)uVar12 * 8);
          memmove((void *)((longlong)pvVar1 + 8),pvVar1,(longlong)(int)(uVar3 - uVar12) << 3);
          pdVar11 = (double *)(param_1[9] + (longlong)(int)uVar12 * 8);
        }
        else {
          pdVar11 = (double *)(param_1[9] + (longlong)(int)uVar3 * 8);
        }
        *pdVar11 = dVar14;
        *(int *)((longlong)param_1 + 0x54) = *(int *)((longlong)param_1 + 0x54) + 1;
        if (*(char *)(param_1 + 8) != '\0') {
          local_f8 = local_b0;
          FUN_18054ad70(param_1,local_e8,param_1[4],local_9c);
        }
        local_88 = _DAT_1824c4970;
        uStack_80 = _UNK_1824c4978;
        local_78 = _DAT_1824c49d0;
        uStack_70 = _UNK_1824c49d8;
        local_68 = _DAT_1824c49f0;
        uStack_60 = _UNK_1824c49f8;
        local_58 = 0x5dc00;
        local_54 = 0xac440;
        local_50 = 0xbb800;
        puVar13 = (uint *)&local_88;
        do {
          uVar3 = *puVar13;
          pdVar9 = (double *)param_1[9];
          pdVar11 = pdVar9 + *(int *)((longlong)param_1 + 0x54);
          if (pdVar9 != pdVar11) {
            do {
              if ((double)(int)uVar3 == *pdVar9) goto LAB_18054a5c8;
              pdVar9 = pdVar9 + 1;
            } while (pdVar9 != pdVar11);
          }
          local_a8 = (uint)local_a2 * (uint)local_ae * uVar3 >> 3;
          local_ac = uVar3;
          iVar5 = (**(code **)(*local_e8 + 0x38))
                            (local_e8,*(char *)(param_1 + 8) != '\0',local_b0,0);
          if (-1 < iVar5) {
            pdVar9 = (double *)param_1[9];
            pdVar11 = pdVar9 + *(int *)((longlong)param_1 + 0x54);
            if (pdVar9 != pdVar11) {
              do {
                if ((double)(int)uVar3 == *pdVar9) goto LAB_18054a5c8;
                pdVar9 = pdVar9 + 1;
              } while (pdVar9 != pdVar11);
            }
            dVar14 = (double)(int)uVar3;
            uVar3 = *(uint *)((longlong)param_1 + 0x54);
            uVar12 = 0;
            uVar8 = 0;
            uVar10 = uVar3;
            if (0 < (int)uVar3) {
              do {
                uVar12 = uVar8;
                dVar2 = *(double *)(param_1[9] + (longlong)(int)uVar12 * 8);
                if ((dVar2 <= dVar14) && (dVar14 <= dVar2)) {
LAB_18054a553:
                  uVar12 = uVar12 + 1;
                  break;
                }
                uVar8 = (int)(uVar12 + uVar10) >> 1;
                dVar2 = *(double *)(param_1[9] + (longlong)(int)uVar8 * 8);
                if (uVar8 == uVar12) {
                  if (dVar2 <= dVar14) goto LAB_18054a553;
                  break;
                }
                if (dVar2 <= dVar14) {
                  uVar12 = uVar8;
                  uVar8 = uVar10;
                }
                uVar10 = uVar8;
                uVar8 = uVar12;
              } while ((int)uVar12 < (int)uVar10);
            }
            iVar5 = uVar3 + 1;
            if (*(int *)(param_1 + 10) < iVar5) {
              if (iVar5 < 0) {
                iVar5 = uVar3 + 2;
              }
              FUN_18047cb30(param_1 + 9,uVar3 + 9 + (iVar5 >> 1) & 0xfffffff8);
            }
            uVar3 = *(uint *)((longlong)param_1 + 0x54);
            if (uVar12 < uVar3) {
              pvVar1 = (void *)(param_1[9] + (longlong)(int)uVar12 * 8);
              memmove((void *)((longlong)pvVar1 + 8),pvVar1,(longlong)(int)(uVar3 - uVar12) << 3);
              pdVar11 = (double *)(param_1[9] + (longlong)(int)uVar12 * 8);
            }
            else {
              pdVar11 = (double *)(param_1[9] + (longlong)(int)uVar3 * 8);
            }
            *pdVar11 = dVar14;
            *(int *)((longlong)param_1 + 0x54) = *(int *)((longlong)param_1 + 0x54) + 1;
          }
LAB_18054a5c8:
          puVar13 = puVar13 + 1;
        } while (puVar13 != &local_4c);
        if (local_e8 != (longlong *)0x0) {
          (**(code **)(*local_e8 + 0x10))();
        }
      }
    }
  }
}



############ FUN_ 18054bdc0 size=993 ############

void FUN_18054bdc0(longlong param_1)

{
  longlong *plVar1;
  double *pdVar2;
  void *_Dst;
  int *piVar3;
  int iVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  double *pdVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  longlong lVar12;
  longlong lVar13;
  int iVar14;
  longlong lVar15;
  double dVar16;
  undefined8 uVar17;
  undefined8 uVar18;
  undefined8 uVar19;
  undefined8 uVar20;
  undefined8 uVar21;
  
  uVar17 = 0xfffffffffffffffe;
  iVar14 = 0;
  *(undefined8 *)(param_1 + 0x268) = 0;
  uVar18 = 0;
  uVar19 = 0;
  uVar20 = 0;
  uVar21 = 0;
  cVar5 = FUN_18054d8d0();
  if (cVar5 == '\0') goto LAB_18054c19f;
  lVar13 = *(longlong *)(param_1 + 0x240);
  if (lVar13 == 0) {
LAB_18054bf7f:
    lVar13 = *(longlong *)(param_1 + 0x248);
LAB_18054bf86:
    *(undefined8 *)(param_1 + 600) = *(undefined8 *)(lVar13 + 0x20);
    *(undefined4 *)(param_1 + 0x260) = *(undefined4 *)(lVar13 + 0x30);
    *(undefined4 *)(param_1 + 0x264) = *(undefined4 *)(lVar13 + 0x34);
    FUN_18051b540(param_1 + 0x270,lVar13 + 0x48);
  }
  else {
    lVar12 = *(longlong *)(param_1 + 0x248);
    if (lVar12 == 0) {
      if (lVar13 == 0) goto LAB_18054bf7f;
      goto LAB_18054bf86;
    }
    dVar16 = *(double *)(lVar12 + 0x20);
    if (*(double *)(lVar13 + 0x20) <= *(double *)(lVar12 + 0x20)) {
      dVar16 = *(double *)(lVar13 + 0x20);
    }
    *(double *)(param_1 + 600) = dVar16;
    iVar11 = *(int *)(lVar13 + 0x30);
    if (*(int *)(lVar12 + 0x30) < *(int *)(lVar13 + 0x30)) {
      iVar11 = *(int *)(lVar12 + 0x30);
    }
    *(int *)(param_1 + 0x260) = iVar11;
    iVar11 = *(int *)(*(longlong *)(param_1 + 0x248) + 0x34);
    iVar6 = *(int *)(*(longlong *)(param_1 + 0x240) + 0x34);
    if (iVar6 < iVar11) {
      iVar6 = iVar11;
    }
    *(int *)(param_1 + 0x264) = iVar6;
    plVar1 = (longlong *)(param_1 + 0x270);
    FUN_18051b540(plVar1,*(longlong *)(param_1 + 0x240) + 0x48);
    lVar13 = *(longlong *)(param_1 + 0x248);
    if (plVar1 != (longlong *)(lVar13 + 0x48)) {
      if (*(int *)(lVar13 + 0x54) < 1) {
        *(undefined4 *)(param_1 + 0x27c) = 0;
        if (*(int *)(param_1 + 0x278) != 0) {
                    /* WARNING: Subroutine does not return */
          free((void *)*plVar1);
        }
        *(undefined4 *)(param_1 + 0x278) = 0;
      }
      else {
        iVar11 = *(int *)(param_1 + 0x27c) + -1;
        if (-1 < iVar11) {
          lVar12 = (longlong)iVar11 * 8;
          lVar15 = lVar12;
          do {
            pdVar8 = *(double **)(lVar13 + 0x48);
            pdVar2 = pdVar8 + *(int *)(lVar13 + 0x54);
            if (pdVar8 != pdVar2) {
              do {
                if (*(double *)(lVar12 + *plVar1) == *pdVar8) goto LAB_18054bf69;
                pdVar8 = pdVar8 + 1;
              } while (pdVar8 != pdVar2);
            }
            _Dst = (void *)(lVar15 + *plVar1);
            memmove(_Dst,(void *)((longlong)_Dst + 8),
                    (longlong)((*(int *)(param_1 + 0x27c) - iVar11) + -1) << 3);
            *(int *)(param_1 + 0x27c) = *(int *)(param_1 + 0x27c) + -1;
            iVar6 = *(int *)(param_1 + 0x27c);
            iVar10 = 0;
            if (0 < iVar6 * 2) {
              iVar10 = iVar6 * 2;
            }
            if (iVar10 < *(int *)(param_1 + 0x278)) {
              if (iVar6 < 8) {
                iVar6 = 8;
              }
              if (iVar6 < *(int *)(param_1 + 0x278)) {
                FUN_18047cb30(plVar1);
              }
            }
LAB_18054bf69:
            lVar15 = lVar15 + -8;
            lVar12 = lVar12 + -8;
            iVar11 = iVar11 + -1;
          } while (-1 < iVar11);
        }
      }
    }
  }
  plVar1 = (longlong *)(param_1 + 0x280);
  *(undefined4 *)(param_1 + 0x28c) = 0;
  if (*(int *)(param_1 + 0x288) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar1);
  }
  *(undefined4 *)(param_1 + 0x288) = 0;
  iVar11 = *(int *)(param_1 + 0x264);
  iVar6 = *(int *)(param_1 + 0x28c);
  lVar13 = *plVar1;
  iVar10 = iVar14;
  if (0 < iVar6) {
    do {
      iVar7 = *(int *)(lVar13 + (longlong)iVar10 * 4);
      if ((iVar7 <= iVar11) && (iVar11 <= iVar7)) {
LAB_18054c03e:
        iVar10 = iVar10 + 1;
        break;
      }
      iVar7 = iVar10 + iVar6 >> 1;
      if (iVar7 == iVar10) {
        if (*(int *)(lVar13 + (longlong)iVar7 * 4) <= iVar11) goto LAB_18054c03e;
        break;
      }
      iVar4 = iVar7;
      if (*(int *)(lVar13 + (longlong)iVar7 * 4) <= iVar11) {
        iVar4 = iVar6;
        iVar10 = iVar7;
      }
      iVar6 = iVar4;
    } while (iVar10 < iVar6);
  }
  FUN_18051b850(plVar1,iVar10,iVar11,iVar6,uVar17,uVar18,uVar19,uVar20,uVar21);
  iVar11 = *(int *)(param_1 + 0x260);
  if (iVar11 != *(int *)(param_1 + 0x264)) {
    iVar6 = *(int *)(param_1 + 0x28c);
    lVar13 = *plVar1;
    iVar10 = iVar14;
    if (0 < iVar6) {
      do {
        iVar7 = *(int *)(lVar13 + (longlong)iVar10 * 4);
        if ((iVar7 <= iVar11) && (iVar11 <= iVar7)) {
LAB_18054c0b5:
          iVar10 = iVar10 + 1;
          break;
        }
        iVar7 = iVar10 + iVar6 >> 1;
        if (iVar7 == iVar10) {
          if (*(int *)(lVar13 + (longlong)iVar7 * 4) <= iVar11) goto LAB_18054c0b5;
          break;
        }
        if (*(int *)(lVar13 + (longlong)iVar7 * 4) <= iVar11) {
          iVar10 = iVar7;
          iVar7 = iVar6;
        }
        iVar6 = iVar7;
      } while (iVar10 < iVar6);
    }
    FUN_18051b850(plVar1,iVar10,iVar11,iVar6,uVar17,uVar18,uVar19,uVar20,uVar21);
  }
  iVar11 = 0x40;
  lVar13 = 0x28;
  do {
    if ((*(int *)(param_1 + 0x260) <= iVar11) && (iVar11 < 0x801)) {
      piVar9 = (int *)*plVar1;
      piVar3 = piVar9 + *(int *)(param_1 + 0x28c);
      for (; piVar9 != piVar3; piVar9 = piVar9 + 1) {
        if (iVar11 == *piVar9) goto LAB_18054c16f;
      }
      iVar6 = *(int *)(param_1 + 0x28c);
      lVar12 = *plVar1;
      iVar10 = iVar14;
      if (0 < iVar6) {
        do {
          iVar7 = *(int *)(lVar12 + (longlong)iVar10 * 4);
          if ((iVar7 <= iVar11) && (iVar11 <= iVar7)) {
LAB_18054c162:
            iVar10 = iVar10 + 1;
            break;
          }
          iVar7 = iVar10 + iVar6 >> 1;
          if (iVar7 == iVar10) {
            if (*(int *)(lVar12 + (longlong)iVar7 * 4) <= iVar11) goto LAB_18054c162;
            break;
          }
          iVar4 = iVar7;
          if (*(int *)(lVar12 + (longlong)iVar7 * 4) <= iVar11) {
            iVar4 = iVar6;
            iVar10 = iVar7;
          }
          iVar6 = iVar4;
        } while (iVar10 < iVar6);
      }
      FUN_18051b850(plVar1,iVar10,iVar11);
    }
LAB_18054c16f:
    if (iVar11 < 0x200) {
      iVar6 = 0x20;
    }
    else {
      iVar6 = 0x80;
      if (iVar11 < 0x400) {
        iVar6 = 0x40;
      }
    }
    iVar11 = iVar11 + iVar6;
    lVar13 = lVar13 + -1;
  } while (lVar13 != 0);
LAB_18054c19f:
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 180551040 size=130 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180551040(undefined8 param_1,longlong *param_2)

{
  int iVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  ulonglong local_18;
  
  uStack_1c = _UNK_1824c4e9c;
  uStack_20 = _UNK_1824c4e98;
  uStack_24 = _UNK_1824c4e94;
  local_28 = _DAT_1824c4e90;
  uStack_2c = _UNK_1824c4e8c;
  uStack_30 = _UNK_1824c4e88;
  local_38._4_4_ = _UNK_1824c4e84;
  local_38._0_4_ = _DAT_1824c4e80;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  *param_2 = 0;
  param_2[1] = 0;
  FUN_18047cb30(param_2,8);
  lVar3 = 4;
  puVar2 = &local_38;
  do {
    iVar1 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar1 + 1;
    *(undefined8 *)(*param_2 + (longlong)iVar1 * 8) = *puVar2;
    lVar3 = lVar3 + -1;
    puVar2 = puVar2 + 1;
  } while (lVar3 != 0);
}



############ FUN_ 180553e00 size=244 ############

void FUN_180553e00(longlong param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  uint uVar5;
  longlong lVar6;
  
  FUN_1812a7720();
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x18));
  uVar5 = *(int *)(param_1 + 0x54) - 1;
  if (-1 < (int)uVar5) {
    lVar6 = (longlong)(int)uVar5 * 8;
    do {
      if (uVar5 < *(uint *)(param_1 + 0x54)) {
        lVar4 = *(longlong *)(lVar6 + *(longlong *)(param_1 + 0x48));
      }
      else {
        lVar4 = 0;
      }
      if ((*(int *)(lVar4 + 8) == 1) && (uVar5 < *(uint *)(param_1 + 0x54))) {
        puVar3 = *(undefined8 **)(lVar6 + *(longlong *)(param_1 + 0x48));
        _Dst = (void *)(*(longlong *)(param_1 + 0x48) + (longlong)(int)uVar5 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),
                (longlong)(int)((*(uint *)(param_1 + 0x54) - uVar5) + -1) << 3);
        *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + -1;
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
        if ((*(int *)(param_1 + 0x54) * 2 < *(int *)(param_1 + 0x50)) &&
           (*(int *)(param_1 + 0x54) < *(int *)(param_1 + 0x50))) {
          FUN_18047cb30();
        }
      }
      lVar6 = lVar6 + -8;
      uVar5 = uVar5 - 1;
    } while (-1 < (int)uVar5);
  }
                    /* WARNING: Could not recover jumptable at 0x000180553eed. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x18));
  return;
}



############ FUN_ 180554150 size=268 ############

void FUN_180554150(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  int iVar6;
  
  *param_1 = juce::Win32MidiService::Win32InputWrapper::vftable;
  lVar3 = param_1[8];
  EnterCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x30));
  iVar6 = 0;
  iVar2 = *(int *)(lVar3 + 0x6c);
  plVar5 = *(longlong **)(lVar3 + 0x60);
  if (0 < iVar2) {
    do {
      if (param_1 == (undefined8 *)*plVar5) {
        plVar5 = *(longlong **)(lVar3 + 0x60) + iVar6;
        memmove(plVar5,plVar5 + 1,(longlong)((iVar2 - iVar6) + -1) << 3);
        *(int *)(lVar3 + 0x6c) = *(int *)(lVar3 + 0x6c) + -1;
        iVar2 = *(int *)(lVar3 + 0x6c);
        iVar6 = 0;
        if (0 < iVar2 * 2) {
          iVar6 = iVar2 * 2;
        }
        if (iVar6 < *(int *)(lVar3 + 0x68)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar3 + 0x68)) {
            FUN_18047cb30(lVar3 + 0x60);
          }
        }
        break;
      }
      iVar6 = iVar6 + 1;
      plVar5 = plVar5 + 1;
    } while (iVar6 < iVar2);
  }
  FUN_180552b40(lVar3);
  FUN_1812a77d0(*(longlong *)(lVar3 + 0x28) + 8,10);
  LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x30));
  puVar4 = (undefined8 *)param_1[8];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[4]);
}



############ FUN_ 1805542b0 size=233 ############

undefined8 * FUN_1805542b0(undefined8 *param_1,ulonglong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  *param_1 = juce::Win32MidiService::MidiOutHandle::vftable;
  if ((HMIDIOUT)param_1[5] != (HMIDIOUT)0x0) {
    midiOutClose((HMIDIOUT)param_1[5]);
  }
  lVar2 = param_1[2];
  iVar4 = 0;
  lVar3 = 0;
  iVar1 = *(int *)(lVar2 + 0x6c);
  if (0 < iVar1) {
    do {
      if (param_1 == *(undefined8 **)(*(longlong *)(lVar2 + 0x60) + lVar3 * 8)) {
        _Dst = (void *)(*(longlong *)(lVar2 + 0x60) + (longlong)iVar4 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
        *(int *)(lVar2 + 0x6c) = *(int *)(lVar2 + 0x6c) + -1;
        iVar1 = *(int *)(lVar2 + 0x6c);
        iVar4 = 0;
        if (0 < iVar1 * 2) {
          iVar4 = iVar1 * 2;
        }
        if (iVar4 < *(int *)(lVar2 + 0x68)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(lVar2 + 0x68)) {
            FUN_18047cb30(lVar2 + 0x60);
          }
        }
        break;
      }
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
    } while (lVar3 < iVar1);
  }
  FUN_1804d1090(param_1 + 3);
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) == 0) {
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18055c460 size=370 ############

void FUN_18055c460(longlong *param_1,int param_2,int param_3)

{
  undefined8 *puVar1;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  longlong *_Memory;
  undefined8 *_Memory_00;
  void *_Dst;
  uint *_Memory_01;
  int iVar5;
  undefined8 *puVar6;
  int iVar7;
  undefined8 *local_28;
  undefined8 local_20;
  
  iVar3 = *(int *)((longlong)param_1 + 0xc);
  param_3 = param_2 + param_3;
  iVar7 = 0;
  iVar5 = iVar7;
  if ((-1 < param_3) && (iVar5 = param_3, iVar3 < param_3)) {
    iVar5 = iVar3;
  }
  if ((-1 < param_2) && (iVar7 = param_2, iVar3 < param_2)) {
    iVar7 = iVar3;
  }
  iVar5 = iVar5 - iVar7;
  if (0 < iVar5) {
    local_28 = (undefined8 *)0x0;
    local_20 = 0;
    lVar4 = *param_1;
    FUN_18047cb30(&local_28,iVar5 / 2 + 8 + iVar5 & 0xfffffff8);
    puVar6 = local_28;
    iVar3 = local_20._4_4_;
    memcpy(local_28 + local_20._4_4_,(void *)((longlong)iVar7 * 8 + lVar4),(longlong)iVar5 * 8);
    _Dst = (void *)(*param_1 + (longlong)iVar7 * 8);
    local_20 = CONCAT44(iVar3 + iVar5,(undefined4)local_20);
    memmove(_Dst,(void *)((longlong)iVar5 * 8 + (longlong)_Dst),
            (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar7) - iVar5) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) - iVar5;
    puVar1 = puVar6 + (iVar3 + iVar5);
    _Memory_00 = puVar6;
    while( true ) {
      if (puVar6 == puVar1) {
        if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
           (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
          FUN_18047cb30(param_1);
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      _Memory = (longlong *)*puVar6;
      if (_Memory != (longlong *)0x0) break;
      puVar6 = puVar6 + 1;
      _Memory_00 = local_28;
    }
    _Memory_01 = (uint *)(*_Memory + -0x10);
    if ((*_Memory_01 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory_01;
      *_Memory_01 = *_Memory_01 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory_01);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 1813c6260 size=215 ############

void FUN_1813c6260(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  
  *param_1 = juce::CodeEditorComponent::vftable;
  param_1[0x16] = juce::CodeEditorComponent::vftable;
  param_1[0x18] = juce::CodeEditorComponent::vftable;
  lVar5 = param_1[0x80];
  if (lVar5 != 0) {
    lVar5 = lVar5 + 0x30;
  }
  lVar2 = param_1[0x19];
  iVar6 = 0;
  lVar4 = 0;
  iVar1 = *(int *)(lVar2 + 0xb4);
  lVar3 = *(longlong *)(lVar2 + 0xa8);
  if (0 < iVar1) {
    do {
      if (lVar5 == *(longlong *)(lVar3 + lVar4 * 8)) {
        _Dst = (void *)(lVar3 + (longlong)iVar6 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar6) + -1) << 3);
        *(int *)(lVar2 + 0xb4) = *(int *)(lVar2 + 0xb4) + -1;
        iVar1 = *(int *)(lVar2 + 0xb4);
        iVar6 = 0;
        if (0 < iVar1 * 2) {
          iVar6 = iVar1 * 2;
        }
        if (iVar6 < *(int *)(lVar2 + 0xb0)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(lVar2 + 0xb0)) {
            FUN_18047cb30((longlong *)(lVar2 + 0xa8));
          }
        }
        break;
      }
      iVar6 = iVar6 + 1;
      lVar4 = lVar4 + 1;
    } while (lVar4 < iVar1);
  }
  *(undefined4 *)((longlong)param_1 + 0x44c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x88]);
}



############ FUN_ 18055a900 size=188 ############

void FUN_18055a900(longlong *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  (**(code **)(*param_1 + 0x48))(param_1,1);
  lVar4 = param_1[9];
  for (lVar3 = *(longlong *)(param_1[9] + 0x18); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
    lVar4 = lVar3;
  }
  if ((*(byte *)(lVar4 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar4 + 0x18) == 0) {
      return;
    }
    lVar4 = FUN_18134c2e0();
  }
  else {
    lVar4 = FUN_1812d2bd0();
  }
  if ((lVar4 != 0) && (param_1 = param_1 + 8, param_1 != (longlong *)0x0)) {
    puVar5 = *(undefined8 **)(lVar4 + 0x30);
    iVar2 = *(int *)(lVar4 + 0x3c);
    puVar1 = puVar5 + iVar2;
    for (; puVar5 != puVar1; puVar5 = puVar5 + 1) {
      if (param_1 == (longlong *)*puVar5) {
        return;
      }
    }
    if (*(int *)(lVar4 + 0x38) < iVar2 + 1) {
      FUN_18047cb30((longlong *)(lVar4 + 0x30),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(lVar4 + 0x3c);
    *(int *)(lVar4 + 0x3c) = iVar2 + 1;
    *(longlong **)(*(longlong *)(lVar4 + 0x30) + (longlong)iVar2 * 8) = param_1;
  }
  return;
}



############ FUN_ 18055a9c0 size=258 ############

void FUN_18055a9c0(longlong *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  code *UNRECOVERED_JUMPTABLE;
  longlong lVar3;
  char cVar4;
  longlong lVar5;
  undefined8 *puVar6;
  
  cVar4 = FUN_181345240(param_1[9]);
  if ((HWND)param_1[10] != (HWND)0x0) {
    ShowWindow((HWND)param_1[10],-(uint)(cVar4 != '\0') & 8);
  }
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x50);
  if (UNRECOVERED_JUMPTABLE == FUN_18055a900) {
    (**(code **)(*param_1 + 0x48))(param_1,1);
    lVar5 = param_1[9];
    for (lVar3 = *(longlong *)(param_1[9] + 0x18); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18))
    {
      lVar5 = lVar3;
    }
    if ((*(byte *)(lVar5 + 0xa8) & 1) == 0) {
      if (*(longlong *)(lVar5 + 0x18) == 0) {
        return;
      }
      lVar5 = FUN_18134c2e0();
    }
    else {
      lVar5 = FUN_1812d2bd0();
    }
    if ((lVar5 != 0) && (param_1 = param_1 + 8, param_1 != (longlong *)0x0)) {
      puVar6 = *(undefined8 **)(lVar5 + 0x30);
      iVar2 = *(int *)(lVar5 + 0x3c);
      puVar1 = puVar6 + iVar2;
      for (; puVar6 != puVar1; puVar6 = puVar6 + 1) {
        if (param_1 == (longlong *)*puVar6) {
          return;
        }
      }
      if (*(int *)(lVar5 + 0x38) < iVar2 + 1) {
        FUN_18047cb30((longlong *)(lVar5 + 0x30),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)(lVar5 + 0x3c);
      *(int *)(lVar5 + 0x3c) = iVar2 + 1;
      *(longlong **)(*(longlong *)(lVar5 + 0x30) + (longlong)iVar2 * 8) = param_1;
    }
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x00018055aabf. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)(param_1);
  return;
}



############ FUN_ 181414200 size=131 ############

void FUN_181414200(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != (longlong *)0x0) {
    plVar1 = (longlong *)(param_1 + 0x240110);
    plVar4 = (longlong *)*plVar1;
    iVar3 = *(int *)(param_1 + 0x24011c);
    plVar2 = plVar4 + iVar3;
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == (longlong *)*plVar4) goto LAB_18141426f;
    }
    if (*(int *)(param_1 + 0x240118) < iVar3 + 1) {
      FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x24011c);
    *(int *)(param_1 + 0x24011c) = iVar3 + 1;
    *(longlong **)(*plVar1 + (longlong)iVar3 * 8) = param_2;
  }
LAB_18141426f:
                    /* WARNING: Could not recover jumptable at 0x00018141427f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_2 + 8))(param_2);
  return;
}



############ FUN_ 18055fc30 size=315 ############

void FUN_18055fc30(undefined8 *param_1)

{
  void *_Dst;
  uint uVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong lVar6;
  uint *_Memory;
  int iVar7;
  
  lVar3 = param_1[4];
  *param_1 = CueVisualisationBase::vftable;
  iVar7 = 0;
  param_1[1] = CueVisualisationBase::vftable;
  lVar6 = 0;
  iVar2 = *(int *)(lVar3 + 0x24011c);
  lVar4 = *(longlong *)(lVar3 + 0x240110);
  if (0 < iVar2) {
    do {
      if (param_1 == *(undefined8 **)(lVar4 + lVar6 * 8)) {
        _Dst = (void *)(lVar4 + (longlong)iVar7 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar3 + 0x24011c) = *(int *)(lVar3 + 0x24011c) + -1;
        iVar2 = *(int *)(lVar3 + 0x24011c);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar3 + 0x240118)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar3 + 0x240118)) {
            FUN_18047cb30((longlong *)(lVar3 + 0x240110));
          }
        }
        break;
      }
      iVar7 = iVar7 + 1;
      lVar6 = lVar6 + 1;
    } while (lVar6 < iVar2);
  }
  if (param_1[100] != 0) {
    FUN_18056a070();
  }
  FUN_180568840(param_1 + 0x60);
  _Memory = (uint *)(param_1[0x5e] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180560070(param_1 + 0x28);
  FUN_180484cd0(param_1 + 0xd);
  plVar5 = (longlong *)param_1[0xc];
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x20))(plVar5,plVar5 != param_1 + 5);
    param_1[0xc] = 0;
  }
  param_1[1] = ProcessorStateManagerOptionListener::vftable;
  *param_1 = DummyEqualizerWrapperBase::Listener::vftable;
  return;
}



############ FUN_ 180561b40 size=411 ############

undefined8 *
FUN_180561b40(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[1] = Soothe2VertexData::vftable;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  *(undefined2 *)(param_1 + 0xe) = 0;
  *(undefined1 *)((longlong)param_1 + 0x72) = 0;
  puVar1 = param_1 + 0xf;
  *param_1 = BlurLayer::vftable;
  *puVar1 = BlurLayer::vftable;
  param_1[0x10] = param_2;
  param_1[0x11] = param_3;
  *(undefined4 *)(param_1 + 0x12) = 0x14;
  *(undefined8 *)((longlong)param_1 + 0x94) = 0x2c;
  *(undefined8 *)((longlong)param_1 + 0x9c) = 0;
  *(undefined8 *)((longlong)param_1 + 0xa4) = 0;
  *(undefined8 *)((longlong)param_1 + 0xac) = 0;
  *(undefined8 *)((longlong)param_1 + 0xb4) = 0;
  *(undefined8 *)((longlong)param_1 + 0xbc) = 0;
  *(undefined8 *)((longlong)param_1 + 0xc4) = 0;
  *(undefined4 *)((longlong)param_1 + 0xcc) = 0;
  *(undefined2 *)(param_1 + 0x1a) = 0x100;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = param_4;
  FUN_18056cd00(param_1 + 5,*(undefined4 *)((longlong)param_1 + 0x94),param_3,param_4,
                0xfffffffffffffffe);
  FUN_18056c7b0(param_1 + 8,*(undefined4 *)((longlong)param_1 + 0x94));
  lVar4 = param_1[0x10];
  if (puVar1 != (undefined8 *)0x0) {
    plVar6 = (longlong *)(lVar4 + 0x80);
    plVar5 = (longlong *)*plVar6;
    iVar3 = *(int *)(lVar4 + 0x8c);
    plVar2 = plVar5 + iVar3;
    for (; plVar5 != plVar2; plVar5 = plVar5 + 1) {
      if (puVar1 == (undefined8 *)*plVar5) goto LAB_180561cbf;
    }
    if (*(int *)(lVar4 + 0x88) < iVar3 + 1) {
      FUN_18047cb30(plVar6,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(lVar4 + 0x8c);
    *(int *)(lVar4 + 0x8c) = iVar3 + 1;
    *(undefined8 **)(*plVar6 + (longlong)iVar3 * 8) = puVar1;
  }
LAB_180561cbf:
  FUN_180562440(param_1);
  return param_1;
}



############ FUN_ 180561ce0 size=292 ############

void FUN_180561ce0(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int *piVar4;
  undefined8 *puVar5;
  longlong lVar6;
  longlong *plVar7;
  int iVar8;
  
  *param_1 = BlurLayer::vftable;
  lVar2 = param_1[0x10];
  param_1[0xf] = BlurLayer::vftable;
  if (lVar2 != 0) {
    iVar8 = 0;
    lVar6 = 0;
    iVar1 = *(int *)(lVar2 + 0x8c);
    lVar3 = *(longlong *)(lVar2 + 0x80);
    if (0 < iVar1) {
      do {
        if (param_1 + 0xf == *(undefined8 **)(lVar3 + lVar6 * 8)) {
          _Dst = (void *)(lVar3 + (longlong)iVar8 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar8) + -1) << 3);
          *(int *)(lVar2 + 0x8c) = *(int *)(lVar2 + 0x8c) + -1;
          iVar1 = *(int *)(lVar2 + 0x8c);
          iVar8 = 0;
          if (0 < iVar1 * 2) {
            iVar8 = iVar1 * 2;
          }
          if (iVar8 < *(int *)(lVar2 + 0x88)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar2 + 0x88)) {
              FUN_18047cb30((longlong *)(lVar2 + 0x80));
            }
          }
          break;
        }
        iVar8 = iVar8 + 1;
        lVar6 = lVar6 + 1;
      } while (lVar6 < iVar1);
    }
  }
  piVar4 = (int *)param_1[0x1c];
  if (piVar4 == (int *)0x0) {
    puVar5 = (undefined8 *)param_1[0x1b];
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar4 = (int *)(puVar5 + 1);
      iVar1 = *piVar4;
      *piVar4 = *piVar4 + -1;
      UNLOCK();
      if (iVar1 == 1) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
    FUN_1805619f0(param_1 + 1);
    return;
  }
  if ((*piVar4 != 0) && (plVar7 = (longlong *)FUN_1805989c0(), *(longlong *)(piVar4 + 4) == *plVar7)
     ) {
    glDeleteTextures(1,piVar4);
    piVar4[0] = 0;
    piVar4[1] = 0;
    piVar4[2] = 0;
  }
                    /* WARNING: Subroutine does not return */
  free(piVar4);
}



############ FUN_ 180561e60 size=195 ############

void FUN_180561e60(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  
  if (*(longlong *)(param_1 + 8) == param_2) {
    iVar1 = *(int *)(param_2 + 0x8c);
    lVar2 = *(longlong *)(param_2 + 0x80);
    lVar5 = 0;
    if (param_1 != 0x78) {
      lVar5 = param_1;
    }
    iVar4 = 0;
    lVar3 = 0;
    if (0 < iVar1) {
      while (lVar5 != *(longlong *)(lVar2 + lVar3 * 8)) {
        iVar4 = iVar4 + 1;
        lVar3 = lVar3 + 1;
        if (iVar1 <= lVar3) {
          *(undefined8 *)(param_1 + 8) = 0;
          return;
        }
      }
      _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
      *(int *)(param_2 + 0x8c) = *(int *)(param_2 + 0x8c) + -1;
      iVar1 = *(int *)(param_2 + 0x8c);
      iVar4 = 0;
      if (0 < iVar1 * 2) {
        iVar4 = iVar1 * 2;
      }
      if (iVar4 < *(int *)(param_2 + 0x88)) {
        if (iVar1 < 8) {
          iVar1 = 8;
        }
        if (iVar1 < *(int *)(param_2 + 0x88)) {
          FUN_18047cb30((longlong *)(param_2 + 0x80));
        }
      }
    }
    *(undefined8 *)(param_1 + 8) = 0;
  }
  return;
}



############ FUN_ 180562fe0 size=139 ############

void FUN_180562fe0(longlong param_1)

{
  longlong lVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong *plVar6;
  
  if ((param_1 != 0) && (lVar1 = param_1 + 0x78, lVar1 != 0)) {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x170) + 0x168);
    plVar6 = (longlong *)(lVar4 + 0x2404c0);
    plVar5 = (longlong *)*plVar6;
    iVar3 = *(int *)(lVar4 + 0x2404cc);
    plVar2 = plVar5 + iVar3;
    for (; plVar5 != plVar2; plVar5 = plVar5 + 1) {
      if (lVar1 == *plVar5) {
        return;
      }
    }
    if (*(int *)(lVar4 + 0x2404c8) < iVar3 + 1) {
      FUN_18047cb30(plVar6,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(lVar4 + 0x2404cc);
    *(int *)(lVar4 + 0x2404cc) = iVar3 + 1;
    *(longlong *)(*plVar6 + (longlong)iVar3 * 8) = lVar1;
  }
  return;
}



############ FUN_ 180562e20 size=394 ############

void FUN_180562e20(undefined8 *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  void *pvVar5;
  longlong lVar6;
  void *_Memory;
  int iVar7;
  
  *param_1 = FilterCurveLayer::vftable;
  param_1[0xf] = FilterCurveLayer::vftable;
  puVar1 = param_1 + 0x10;
  *puVar1 = FilterCurveLayer::vftable;
  param_1[0x11] = FilterCurveLayer::vftable;
  FUN_180568380(param_1[0x2e]);
  FUN_180563070(param_1);
  lVar3 = param_1[0x2f];
  lVar4 = *(longlong *)(lVar3 + 0x240110);
  iVar7 = 0;
  lVar6 = 0;
  iVar2 = *(int *)(lVar3 + 0x24011c);
  if (0 < iVar2) {
    do {
      if (puVar1 == *(undefined8 **)(lVar4 + lVar6 * 8)) {
        pvVar5 = (void *)(lVar4 + (longlong)iVar7 * 8);
        memmove(pvVar5,(void *)((longlong)pvVar5 + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar3 + 0x24011c) = *(int *)(lVar3 + 0x24011c) + -1;
        iVar2 = *(int *)(lVar3 + 0x24011c);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar3 + 0x240118)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar3 + 0x240118)) {
            FUN_18047cb30((longlong *)(lVar3 + 0x240110));
          }
        }
        break;
      }
      iVar7 = iVar7 + 1;
      lVar6 = lVar6 + 1;
    } while (lVar6 < iVar2);
  }
  _eh_vector_destructor_iterator_(param_1 + 0x1c,0x18,6,FUN_18047cfb0);
  if (param_1[0x17] != 0) {
    FUN_18056a070();
  }
  pvVar5 = (void *)param_1[0x13];
  if (pvVar5 == (void *)0x0) {
    *puVar1 = DummyEqualizerWrapperBase::Listener::vftable;
    param_1[0xf] = Soothe2ModuleBase<float,2>::Listener::vftable;
    FUN_1805619f0(param_1 + 1);
    return;
  }
  _Memory = pvVar5;
  if ((0xfff < (param_1[0x15] - (longlong)pvVar5 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180563070 size=318 ############

void FUN_180563070(longlong param_1)

{
  void *pvVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int iVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  
  uVar6 = 0;
  uVar9 = param_1 + 0x78;
  if (param_1 == 0) {
    uVar9 = uVar6;
  }
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x170) + 0x168);
  iVar2 = *(int *)(lVar3 + 0x2404cc);
  lVar4 = *(longlong *)(lVar3 + 0x2404c0);
  uVar5 = uVar6;
  uVar8 = uVar6;
  if (0 < iVar2) {
    do {
      iVar7 = (int)uVar8;
      if (uVar9 == *(ulonglong *)(lVar4 + uVar5 * 8)) {
        pvVar1 = (void *)(lVar4 + (longlong)iVar7 * 8);
        memmove(pvVar1,(void *)((longlong)pvVar1 + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar3 + 0x2404cc) = *(int *)(lVar3 + 0x2404cc) + -1;
        iVar2 = *(int *)(lVar3 + 0x2404cc);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar3 + 0x2404c8)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar3 + 0x2404c8)) {
            FUN_18047cb30((longlong *)(lVar3 + 0x2404c0));
          }
        }
        break;
      }
      uVar8 = (ulonglong)(iVar7 + 1);
      uVar5 = uVar5 + 1;
    } while ((longlong)uVar5 < (longlong)iVar2);
  }
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x170) + 0x170);
  iVar2 = *(int *)(lVar3 + 0x2404cc);
  lVar4 = *(longlong *)(lVar3 + 0x2404c0);
  uVar9 = uVar6;
  if (0 < iVar2) {
    do {
      iVar7 = (int)uVar9;
      if (param_1 + 0x78 == *(longlong *)(lVar4 + uVar6 * 8)) {
        pvVar1 = (void *)(lVar4 + (longlong)iVar7 * 8);
        memmove(pvVar1,(void *)((longlong)pvVar1 + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar3 + 0x2404cc) = *(int *)(lVar3 + 0x2404cc) + -1;
        iVar2 = *(int *)(lVar3 + 0x2404cc);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (*(int *)(lVar3 + 0x2404c8) <= iVar7) {
          return;
        }
        if (iVar2 < 8) {
          iVar2 = 8;
        }
        if (*(int *)(lVar3 + 0x2404c8) <= iVar2) {
          return;
        }
        FUN_18047cb30((longlong *)(lVar3 + 0x2404c0));
        return;
      }
      uVar9 = (ulonglong)(iVar7 + 1);
      uVar6 = uVar6 + 1;
    } while ((longlong)uVar6 < (longlong)iVar2);
  }
  return;
}



############ FUN_ 1815eeb30 size=395 ############

longlong FUN_1815eeb30(longlong param_1,longlong *param_2,uint param_3)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  longlong *plVar4;
  int iVar5;
  longlong *plVar6;
  void *_Src;
  undefined8 *puVar7;
  longlong lVar8;
  
  lVar3 = __RTDynamicCast(param_2,0,&CloudyPopupMenuItemBase::RTTI_Type_Descriptor,
                          &CloudyPopupMenuItem::RTTI_Type_Descriptor,0);
  if (((lVar3 != 0) && (*(longlong *)(param_1 + 0xd8) != 0)) &&
     (lVar8 = *(longlong *)(param_1 + 0xd8) + 0x2e0, lVar8 != 0)) {
    plVar4 = (longlong *)(lVar3 + 0x160);
    plVar6 = (longlong *)*plVar4;
    iVar5 = *(int *)(lVar3 + 0x16c);
    plVar1 = plVar6 + iVar5;
    for (; plVar6 != plVar1; plVar6 = plVar6 + 1) {
      if (lVar8 == *plVar6) goto LAB_1815eebe3;
    }
    if (*(int *)(lVar3 + 0x168) < iVar5 + 1) {
      FUN_18047cb30(plVar4,iVar5 + 9 + (iVar5 + 1) / 2 & 0xfffffff8);
    }
    iVar5 = *(int *)(lVar3 + 0x16c);
    *(int *)(lVar3 + 0x16c) = iVar5 + 1;
    *(longlong *)(*plVar4 + (longlong)iVar5 * 8) = lVar8;
  }
LAB_1815eebe3:
  (**(code **)(*param_2 + 0x30))(param_2,param_1);
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x280);
  EnterCriticalSection(lpCriticalSection);
  iVar5 = *(int *)(param_1 + 700) + 1;
  if (*(int *)(param_1 + 0x2b8) < iVar5) {
    FUN_18048a270(lpCriticalSection,*(int *)(param_1 + 700) + 9 + iVar5 / 2 & 0xfffffff8);
  }
  uVar2 = *(uint *)(param_1 + 700);
  if (param_3 < uVar2) {
    _Src = (void *)(*(longlong *)(param_1 + 0x2b0) + (longlong)(int)param_3 * 8);
    memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar2 - param_3) << 3);
    puVar7 = (undefined8 *)(*(longlong *)(param_1 + 0x2b0) + (longlong)(int)param_3 * 8);
  }
  else {
    puVar7 = (undefined8 *)(*(longlong *)(param_1 + 0x2b0) + (longlong)(int)uVar2 * 8);
  }
  *puVar7 = param_2;
  *(int *)(param_1 + 700) = *(int *)(param_1 + 700) + 1;
  LeaveCriticalSection(lpCriticalSection);
  plVar4 = (longlong *)(**(code **)(*param_2 + 8))(param_2);
  if (plVar4 != (longlong *)0x0) {
    (**(code **)(*plVar4 + 0x58))(plVar4,1);
    FUN_181343cc0(param_1,plVar4,0xffffffff);
  }
  return param_1;
}



############ FUN_ 1815f8200 size=659 ############

void FUN_1815f8200(longlong param_1,longlong param_2,longlong *param_3,longlong *param_4,
                  longlong *param_5)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  longlong *plVar4;
  undefined4 uVar5;
  int iVar6;
  longlong *plVar7;
  
  lVar2 = *(longlong *)(param_1 + 200);
  if (lVar2 == param_2) {
    plVar3 = (longlong *)param_3[7];
    if (plVar3 != (longlong *)0x0) {
      (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_3);
      param_3[7] = 0;
    }
    plVar3 = (longlong *)param_4[7];
    if (plVar3 != (longlong *)0x0) {
      (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_4);
      param_4[7] = 0;
    }
    goto LAB_1815f8469;
  }
  if (lVar2 != 0) {
    lVar2 = *(longlong *)(lVar2 + 0x18);
    if (lVar2 != 0) {
      plVar3 = *(longlong **)(lVar2 + 0x40);
      for (plVar4 = plVar3; plVar4 != plVar3 + *(int *)(lVar2 + 0x4c); plVar4 = plVar4 + 1) {
        if (param_1 == *plVar4) {
          if ((int)((longlong)plVar4 - (longlong)plVar3 >> 3) != -1) {
            plVar4 = plVar3;
            goto joined_r0x0001815f82da;
          }
          break;
        }
      }
    }
    goto LAB_1815f8304;
  }
  goto LAB_1815f838f;
joined_r0x0001815f82da:
  if (plVar4 == plVar3 + *(int *)(lVar2 + 0x4c)) goto LAB_1815f82ee;
  if (param_1 == *plVar4) {
    uVar5 = (undefined4)((longlong)plVar4 - (longlong)plVar3 >> 3);
    goto LAB_1815f82f3;
  }
  plVar4 = plVar4 + 1;
  goto joined_r0x0001815f82da;
LAB_1815f82ee:
  uVar5 = 0xffffffff;
LAB_1815f82f3:
  FUN_181343a90(lVar2,uVar5,1,1,0xfffffffffffffffe);
LAB_1815f8304:
  lVar2 = *(longlong *)(param_1 + 200);
  plVar3 = *(longlong **)(lVar2 + 0x80);
  iVar1 = *(int *)(lVar2 + 0x8c);
  plVar4 = plVar3;
  iVar6 = 0;
  if (0 < iVar1) {
    do {
      if (param_1 + 0xb0 == *plVar4) {
        plVar3 = plVar3 + iVar6;
        memmove(plVar3,plVar3 + 1,(longlong)((iVar1 - iVar6) + -1) << 3);
        *(int *)(lVar2 + 0x8c) = *(int *)(lVar2 + 0x8c) + -1;
        iVar1 = *(int *)(lVar2 + 0x8c);
        iVar6 = 0;
        if (0 < iVar1 * 2) {
          iVar6 = iVar1 * 2;
        }
        if (iVar6 < *(int *)(lVar2 + 0x88)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(lVar2 + 0x88)) {
            FUN_18047cb30((longlong *)(lVar2 + 0x80));
          }
        }
        break;
      }
      iVar6 = iVar6 + 1;
      plVar4 = plVar4 + 1;
    } while (iVar6 < iVar1);
  }
LAB_1815f838f:
  *(longlong *)(param_1 + 200) = param_2;
  lVar2 = param_1 + 0xb0;
  if (lVar2 != 0) {
    plVar7 = (longlong *)(param_2 + 0x80);
    plVar4 = (longlong *)*plVar7;
    iVar1 = *(int *)(param_2 + 0x8c);
    plVar3 = plVar4 + iVar1;
    for (; plVar4 != plVar3; plVar4 = plVar4 + 1) {
      if (lVar2 == *plVar4) goto LAB_1815f83f5;
    }
    if (*(int *)(param_2 + 0x88) < iVar1 + 1) {
      FUN_18047cb30(plVar7,iVar1 + 9 + (iVar1 + 1) / 2 & 0xfffffff8);
    }
    iVar1 = *(int *)(param_2 + 0x8c);
    *(int *)(param_2 + 0x8c) = iVar1 + 1;
    *(longlong *)(*plVar7 + (longlong)iVar1 * 8) = lVar2;
  }
LAB_1815f83f5:
  FUN_180488d40(param_1 + 0xe0,param_3);
  FUN_180488d40(param_1 + 0x120,param_4);
  FUN_180488d40(param_1 + 0x160,param_5);
  plVar3 = (longlong *)param_3[7];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_3);
    param_3[7] = 0;
  }
  plVar3 = (longlong *)param_4[7];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_4);
    param_4[7] = 0;
  }
LAB_1815f8469:
  plVar3 = (longlong *)param_5[7];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_5);
    param_5[7] = 0;
  }
  return;
}



############ FUN_ 18133e200 size=159 ############

void FUN_18133e200(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  
  plVar2 = *(longlong **)(param_1 + 0x78);
  if (plVar2 != (longlong *)0x0) {
    iVar1 = *(int *)((longlong)plVar2 + 0xc);
    iVar4 = 0;
    lVar3 = 0;
    if (0 < iVar1) {
      while (param_2 != *(longlong *)(*plVar2 + lVar3 * 8)) {
        iVar4 = iVar4 + 1;
        lVar3 = lVar3 + 1;
        if (iVar1 <= lVar3) {
          return;
        }
      }
      _Dst = (void *)(*plVar2 + (longlong)iVar4 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
      *(int *)((longlong)plVar2 + 0xc) = *(int *)((longlong)plVar2 + 0xc) + -1;
      iVar1 = *(int *)((longlong)plVar2 + 0xc);
      iVar4 = 0;
      if (0 < iVar1 * 2) {
        iVar4 = iVar1 * 2;
      }
      if (iVar4 < (int)plVar2[1]) {
        if (iVar1 < 8) {
          iVar1 = 8;
        }
        if (iVar1 < (int)plVar2[1]) {
          FUN_18047cb30(plVar2);
        }
      }
    }
  }
  return;
}



############ FUN_ 180583860 size=862 ############

void FUN_180583860(longlong param_1,longlong param_2)

{
  uint uVar1;
  void *_Src;
  longlong *plVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  int iVar5;
  longlong lVar6;
  int iVar7;
  longlong *plVar8;
  longlong *plVar9;
  ulonglong uVar10;
  longlong *local_c8;
  undefined8 local_c0;
  longlong *local_b8;
  undefined8 local_b0;
  undefined4 local_a8;
  int iStack_a4;
  int local_a0;
  int iStack_9c;
  undefined **local_98;
  undefined **local_90 [2];
  undefined ***local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined1 local_68;
  void *local_60;
  undefined4 local_58;
  int local_54;
  undefined8 local_48;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  
  local_48 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0xc0) == 0) {
    return;
  }
  iVar5 = *(int *)(param_2 + 0xc);
  uVar1 = *(uint *)(param_2 + 8);
  uVar10 = *(ulonglong *)(param_1 + 200);
  uVar4 = uVar10 & 0xffffffff;
  if ((int)uVar1 < (int)uVar10) {
    uVar4 = (ulonglong)uVar1;
  }
  local_a8 = (undefined4)uVar4;
  iStack_9c = (int)(uVar10 >> 0x20);
  iStack_a4 = iStack_9c;
  if (iVar5 < iStack_9c) {
    iStack_a4 = iVar5;
  }
  local_a0 = (int)uVar10 - uVar1;
  iStack_9c = iStack_9c - iVar5;
  if (local_a0 < 0) {
    local_a0 = -local_a0;
  }
  if (iStack_9c < 0) {
    iStack_9c = -iStack_9c;
  }
  FUN_18134bfe0(param_1,uVar4,iStack_a4,local_a0,iStack_9c);
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,1);
  uVar10 = 0;
  local_c8 = (longlong *)0x0;
  local_c0 = 0;
  local_40 = *(undefined4 *)(param_1 + 0x20);
  uStack_3c = *(undefined4 *)(param_1 + 0x24);
  uStack_38 = *(undefined4 *)(param_1 + 0x28);
  uStack_34 = *(undefined4 *)(param_1 + 0x2c);
  (**(code **)(**(longlong **)(param_1 + 0xc0) + 8))
            (*(longlong **)(param_1 + 0xc0),&local_c8,&local_40);
  if ((*(byte *)(param_2 + 0x10) & 1) == 0) {
    if (((*(uint *)(param_2 + 0x10) >> 1 & 1) != 0) || ((*(uint *)(param_2 + 0x10) >> 2 & 1) != 0))
    {
      local_b8 = (longlong *)0x0;
      local_b0 = 0;
      iVar5 = *(int *)(param_1 + 0xbc);
      _Src = *(void **)(param_1 + 0xb0);
      iVar7 = 0;
      if (0 < iVar5) {
        FUN_18047cb30(&local_b8,iVar5 + 8 + iVar5 / 2 & 0xfffffff8);
        iVar7 = local_b0._4_4_;
      }
      plVar8 = local_b8;
      memcpy(local_b8 + iVar7,_Src,(longlong)iVar5 << 3);
      iVar7 = iVar7 + iVar5;
      local_b0 = CONCAT44(iVar7,(undefined4)local_b0);
      if ((0 < local_c0._4_4_) && (iVar5 = iVar7 + -1, -1 < iVar5)) {
        lVar6 = (longlong)iVar5 * 8;
        plVar9 = local_c8;
        iVar7 = local_c0._4_4_;
        do {
          if (plVar9 != plVar9 + iVar7) {
            plVar2 = plVar9;
            do {
              if (*(longlong *)(lVar6 + (longlong)plVar8) == *plVar2) {
                FUN_18049b4a0(&local_b8,iVar5);
                plVar8 = local_b8;
                plVar9 = local_c8;
                iVar7 = local_c0._4_4_;
                break;
              }
              plVar2 = plVar2 + 1;
            } while (plVar2 != plVar9 + iVar7);
          }
          lVar6 = lVar6 + -8;
          iVar5 = iVar5 + -1;
        } while (-1 < iVar5);
        iVar7 = local_b0._4_4_;
      }
      FUN_180586370(&local_c8,param_1 + 0xb0);
      iVar5 = local_c0._4_4_ + iVar7;
      if ((int)local_c0 < iVar5) {
        FUN_18047cb30(&local_c8,iVar5 + 8 + iVar5 / 2 & 0xfffffff8);
      }
      uVar4 = (ulonglong)((longlong)(plVar8 + iVar7) + (7 - (longlong)plVar8)) >> 3;
      if (plVar8 + iVar7 < plVar8) {
        uVar4 = uVar10;
      }
      plVar9 = plVar8;
      iVar5 = local_c0._4_4_;
      if (uVar4 != 0) {
        do {
          lVar6 = (longlong)iVar5;
          iVar5 = iVar5 + 1;
          local_c0 = CONCAT44(iVar5,(int)local_c0);
          local_c8[lVar6] = *plVar9;
          plVar9 = plVar9 + 1;
          uVar10 = uVar10 + 1;
        } while (uVar10 != uVar4);
      }
                    /* WARNING: Subroutine does not return */
      free(plVar8);
    }
  }
  else {
    FUN_180586370(&local_c8,param_1 + 0xb0);
    FUN_180586430(&local_c8,param_1 + 0xb0);
  }
  uVar3 = (**(code **)(**(longlong **)(param_1 + 0xc0) + 0x10))();
  local_98 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0(local_90);
  plVar8 = local_c8;
  local_90[0] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  local_78 = 0;
  local_70 = 0;
  local_68 = 0;
  local_80 = &local_98;
  local_98 = juce::SelectedItemSet<XYThumb*___ptr64>::vftable;
  local_60 = (void *)0x0;
  local_58 = 0;
  local_54 = 0;
  iVar5 = local_c0._4_4_;
  lVar6 = (longlong)local_c0._4_4_;
  if (0 < local_c0._4_4_) {
    FUN_18047cb30(&local_60,local_c0._4_4_ + 8 + local_c0._4_4_ / 2 & 0xfffffff8);
  }
  memcpy((void *)((longlong)local_60 + (longlong)local_54 * 8),plVar8,lVar6 << 3);
  local_54 = local_54 + iVar5;
  FUN_1805847f0(uVar3,&local_98);
  local_54 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_60);
}



############ FUN_ 1805847f0 size=446 ############

longlong * FUN_1805847f0(longlong *param_1,longlong param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  undefined8 uVar6;
  uint uVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong lVar10;
  bool bVar11;
  
  if (*(int *)((longlong)param_1 + 0x44) == *(int *)(param_2 + 0x44)) {
    plVar8 = *(longlong **)(param_2 + 0x38);
    plVar9 = (longlong *)param_1[7];
    plVar5 = plVar8 + *(int *)(param_2 + 0x44);
    if (plVar8 == plVar5) {
      return param_1;
    }
    while (lVar10 = *plVar9, plVar9 = plVar9 + 1, lVar10 == *plVar8) {
      plVar8 = plVar8 + 1;
      if (plVar8 == plVar5) {
        return param_1;
      }
    }
  }
  if ((char)param_1[6] != '\0') {
    LOCK();
    bVar11 = *(int *)(param_1[2] + 0x18) == 0;
    if (bVar11) {
      *(int *)(param_1[2] + 0x18) = 1;
    }
    UNLOCK();
    if ((bVar11) && (cVar2 = FUN_1812a6720(param_1[2]), cVar2 == '\0')) {
      LOCK();
      *(undefined4 *)(param_1[2] + 0x18) = 0;
      UNLOCK();
    }
  }
  uVar7 = *(int *)((longlong)param_1 + 0x44) - 1;
  if (-1 < (int)uVar7) {
    lVar10 = (longlong)(int)uVar7 * 8;
    do {
      plVar5 = *(longlong **)(param_2 + 0x38);
      plVar9 = plVar5 + *(int *)(param_2 + 0x44);
      if (plVar5 != plVar9) {
        do {
          if (*(longlong *)(lVar10 + param_1[7]) == *plVar5) goto LAB_1805848f7;
          plVar5 = plVar5 + 1;
        } while (plVar5 != plVar9);
      }
      if (uVar7 < *(uint *)((longlong)param_1 + 0x44)) {
        uVar6 = *(undefined8 *)(lVar10 + param_1[7]);
        FUN_18049b4a0(param_1 + 7,uVar7);
      }
      else {
        uVar6 = 0;
      }
      (**(code **)(*param_1 + 0x10))(param_1,uVar6);
LAB_1805848f7:
      lVar10 = lVar10 + -8;
      uVar7 = uVar7 - 1;
    } while (-1 < (int)uVar7);
  }
  plVar5 = *(longlong **)(param_2 + 0x38);
  plVar9 = plVar5 + *(int *)(param_2 + 0x44);
  do {
    if (plVar5 == plVar9) {
      return param_1;
    }
    plVar4 = (longlong *)param_1[7];
    plVar8 = plVar4 + *(int *)((longlong)param_1 + 0x44);
    if (plVar4 != plVar8) {
      do {
        if (*plVar5 == *plVar4) goto LAB_18058498f;
        plVar4 = plVar4 + 1;
      } while (plVar4 != plVar8);
    }
    iVar1 = *(int *)((longlong)param_1 + 0x44);
    iVar3 = iVar1 + 1;
    if ((int)param_1[8] < iVar3) {
      if (iVar3 < 0) {
        iVar3 = iVar1 + 2;
      }
      FUN_18047cb30(param_1 + 7,iVar1 + 9 + (iVar3 >> 1) & 0xfffffff8);
    }
    iVar3 = *(int *)((longlong)param_1 + 0x44);
    *(int *)((longlong)param_1 + 0x44) = iVar3 + 1;
    *(longlong *)(param_1[7] + (longlong)iVar3 * 8) = *plVar5;
    (**(code **)(*param_1 + 8))(param_1,*plVar5);
LAB_18058498f:
    plVar5 = plVar5 + 1;
  } while( true );
}



############ FUN_ 180586430 size=143 ############

void FUN_180586430(longlong *param_1,ulonglong *param_2)

{
  int iVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  iVar1 = *(int *)((longlong)param_2 + 0xc) + *(int *)((longlong)param_1 + 0xc);
  if ((int)param_1[1] < iVar1) {
    FUN_18047cb30(param_1,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
  }
  puVar2 = (undefined8 *)*param_2;
  uVar3 = 0;
  uVar4 = (ulonglong)
          ((longlong)(puVar2 + *(int *)((longlong)param_2 + 0xc)) + (7 - (longlong)puVar2)) >> 3;
  if (puVar2 + *(int *)((longlong)param_2 + 0xc) < puVar2) {
    uVar4 = uVar3;
  }
  if (uVar4 != 0) {
    do {
      iVar1 = *(int *)((longlong)param_1 + 0xc);
      uVar3 = uVar3 + 1;
      *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
      *(undefined8 *)(*param_1 + (longlong)iVar1 * 8) = *puVar2;
      puVar2 = puVar2 + 1;
    } while (uVar3 != uVar4);
  }
  return;
}



############ FUN_ 180583c20 size=338 ############

void FUN_180583c20(longlong param_1,longlong param_2,longlong *param_3)

{
  longlong *plVar1;
  int iVar2;
  void *pvVar3;
  longlong lVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 local_res10;
  longlong local_48;
  undefined8 local_40;
  
  *(longlong **)(param_1 + 0xc0) = param_3;
  if (param_3 != (longlong *)0x0) {
    lVar4 = (**(code **)(*param_3 + 0x10))(param_3);
    plVar1 = (longlong *)(param_1 + 0xb0);
    if (plVar1 != (longlong *)(lVar4 + 0x38)) {
      iVar2 = *(int *)(lVar4 + 0x44);
      pvVar3 = *(void **)(lVar4 + 0x38);
      local_48 = 0;
      local_40 = 0;
      iVar6 = 0;
      uVar5 = 0;
      if (0 < iVar2) {
        FUN_18047cb30(&local_48,iVar2 + 8 + iVar2 / 2 & 0xfffffff8);
        iVar6 = local_40._4_4_;
        uVar5 = (undefined4)local_40;
      }
      lVar4 = local_48;
      memcpy((void *)(local_48 + (longlong)iVar6 * 8),pvVar3,(longlong)iVar2 << 3);
      pvVar3 = (void *)*plVar1;
      *plVar1 = lVar4;
      *(undefined4 *)(param_1 + 0xb8) = uVar5;
      *(int *)(param_1 + 0xbc) = iVar6 + iVar2;
                    /* WARNING: Subroutine does not return */
      free(pvVar3);
    }
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),0,0);
  local_res10 = SUB84((double)*(float *)(param_2 + 0x2c) + DAT_1824c4520,0);
  *(ulonglong *)(param_1 + 200) =
       CONCAT44(local_res10,SUB84((double)*(float *)(param_2 + 0x28) + DAT_1824c4520,0));
  return;
}



############ FUN_ 1805840d0 size=174 ############

void FUN_1805840d0(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  char cVar2;
  int iVar3;
  longlong *plVar4;
  bool bVar5;
  
  plVar4 = (longlong *)param_1[7];
  plVar1 = plVar4 + *(int *)((longlong)param_1 + 0x44);
  while( true ) {
    if (plVar4 == plVar1) {
      if ((char)param_1[6] != '\0') {
        LOCK();
        bVar5 = *(int *)(param_1[2] + 0x18) == 0;
        if (bVar5) {
          *(int *)(param_1[2] + 0x18) = 1;
        }
        UNLOCK();
        if ((bVar5) && (cVar2 = FUN_1812a6720(param_1[2]), cVar2 == '\0')) {
          LOCK();
          *(undefined4 *)(param_1[2] + 0x18) = 0;
          UNLOCK();
        }
      }
      iVar3 = *(int *)((longlong)param_1 + 0x44) + 1;
      if ((int)param_1[8] < iVar3) {
        FUN_18047cb30(param_1 + 7,*(int *)((longlong)param_1 + 0x44) + 9 + iVar3 / 2 & 0xfffffff8);
      }
      iVar3 = *(int *)((longlong)param_1 + 0x44);
      *(int *)((longlong)param_1 + 0x44) = iVar3 + 1;
      *(longlong *)(param_1[7] + (longlong)iVar3 * 8) = param_2;
      (**(code **)(*param_1 + 8))(param_1);
      return;
    }
    if (param_2 == *plVar4) break;
    plVar4 = plVar4 + 1;
  }
  return;
}



############ FUN_ 1814139d0 size=706 ############

void FUN_1814139d0(longlong param_1,ulonglong param_2,longlong *param_3)

{
  ulonglong *puVar1;
  longlong *plVar2;
  longlong *plVar3;
  char cVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  longlong lVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  longlong *plVar13;
  undefined8 *puVar14;
  ulonglong local_res10;
  ulonglong *local_res18;
  undefined8 *local_res20;
  undefined8 *local_58;
  undefined8 local_50;
  undefined *local_48;
  
  local_50 = 0xfffffffffffffffe;
  local_48 = &DAT_182674140;
  local_res10 = param_2;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  puVar6 = (undefined8 *)*param_3;
  puVar7 = (undefined8 *)*puVar6;
  while (puVar7 != puVar6) {
    puVar1 = (ulonglong *)((longlong)puVar7 + 0x1c);
    puVar8 = *(undefined8 **)(param_1 + 0x20);
    cVar4 = *(char *)((longlong)puVar8[1] + 0x19);
    puVar14 = puVar8;
    puVar11 = (undefined8 *)puVar8[1];
    while (cVar4 == '\0') {
      if ((ulonglong)puVar11[4] < local_res10) {
        puVar12 = (undefined8 *)puVar11[2];
        puVar11 = puVar14;
      }
      else {
        puVar12 = (undefined8 *)*puVar11;
      }
      puVar14 = puVar11;
      puVar11 = puVar12;
      cVar4 = *(char *)((longlong)puVar12 + 0x19);
    }
    if ((puVar14 == puVar8) || (local_res10 < (ulonglong)puVar14[4])) {
      local_res18 = &local_res10;
      lVar10 = FUN_180572e10(param_1 + 0x20,local_res10,&local_res18);
      FUN_180572e70(param_1 + 0x20,&local_res20,puVar14,lVar10 + 0x20,lVar10);
      puVar14 = local_res20;
    }
    plVar2 = puVar14 + 5;
    puVar8 = (undefined8 *)*plVar2;
    puVar14 = puVar8;
    if (*(char *)((longlong)puVar8[1] + 0x19) == '\0') {
      puVar11 = (undefined8 *)puVar8[1];
      do {
        if (*(int *)((longlong)puVar11 + 0x1c) < *(int *)puVar1) {
          puVar12 = (undefined8 *)puVar11[2];
        }
        else {
          puVar12 = (undefined8 *)*puVar11;
          puVar14 = puVar11;
        }
        puVar11 = puVar12;
      } while (*(char *)((longlong)puVar12 + 0x19) == '\0');
    }
    if ((puVar14 == puVar8) || (*(int *)puVar1 < *(int *)((longlong)puVar14 + 0x1c))) {
      local_res18 = puVar1;
      lVar10 = FUN_1805730a0(plVar2);
      FUN_18056f310(plVar2,&local_58,puVar14,lVar10 + 0x1c,lVar10);
      puVar14 = local_58;
    }
    puVar14[4] = puVar7[4];
    puVar8 = (undefined8 *)puVar7[2];
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      cVar4 = *(char *)((longlong)*puVar8 + 0x19);
      puVar7 = puVar8;
      puVar8 = (undefined8 *)*puVar8;
      while (cVar4 == '\0') {
        cVar4 = *(char *)((longlong)*puVar8 + 0x19);
        puVar7 = puVar8;
        puVar8 = (undefined8 *)*puVar8;
      }
    }
    else {
      cVar4 = *(char *)((longlong)puVar7[1] + 0x19);
      puVar14 = (undefined8 *)puVar7[1];
      puVar8 = puVar7;
      while ((puVar7 = puVar14, cVar4 == '\0' && (puVar8 == (undefined8 *)puVar7[2]))) {
        cVar4 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar14 = (undefined8 *)puVar7[1];
        puVar8 = puVar7;
      }
    }
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  uVar9 = local_res10;
  if (local_res10 != 0) {
    if (param_1 != 0) {
      plVar2 = (longlong *)(local_res10 + 0x80);
      plVar13 = (longlong *)*plVar2;
      iVar5 = *(int *)(local_res10 + 0x8c);
      plVar3 = plVar13 + iVar5;
      for (; plVar13 != plVar3; plVar13 = plVar13 + 1) {
        if (param_1 == *plVar13) goto LAB_181413bf7;
      }
      if (*(int *)(local_res10 + 0x88) < iVar5 + 1) {
        FUN_18047cb30(plVar2,iVar5 + 9 + (iVar5 + 1) / 2 & 0xfffffff8);
      }
      iVar5 = *(int *)(uVar9 + 0x8c);
      *(int *)(uVar9 + 0x8c) = iVar5 + 1;
      *(longlong *)(*plVar2 + (longlong)iVar5 * 8) = param_1;
    }
LAB_181413bf7:
    puVar6 = (undefined8 *)*param_3;
    puVar7 = (undefined8 *)*puVar6;
    while (puVar7 != puVar6) {
      FUN_1813eefa0(param_1,(longlong)puVar7 + 0x1c,puVar7 + 4,local_res10);
      puVar8 = (undefined8 *)puVar7[2];
      if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
        cVar4 = *(char *)((longlong)*puVar8 + 0x19);
        puVar7 = puVar8;
        puVar8 = (undefined8 *)*puVar8;
        while (cVar4 == '\0') {
          cVar4 = *(char *)((longlong)*puVar8 + 0x19);
          puVar7 = puVar8;
          puVar8 = (undefined8 *)*puVar8;
        }
      }
      else {
        cVar4 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar14 = (undefined8 *)puVar7[1];
        puVar8 = puVar7;
        while ((puVar7 = puVar14, cVar4 == '\0' && (puVar8 == (undefined8 *)puVar7[2]))) {
          cVar4 = *(char *)((longlong)puVar7[1] + 0x19);
          puVar14 = (undefined8 *)puVar7[1];
          puVar8 = puVar7;
        }
      }
    }
  }
  return;
}



############ FUN_ 18160dba0 size=354 ############

void FUN_18160dba0(undefined8 *param_1)

{
  undefined8 *puVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  longlong lVar6;
  int iVar7;
  
  *param_1 = OpenGLFallbackUI::vftable;
  puVar1 = param_1 + 0x16;
  *puVar1 = OpenGLFallbackUI::vftable;
  lVar3 = param_1[0x17];
  lVar4 = *(longlong *)(lVar3 + 0x2400b0);
  iVar7 = 0;
  lVar6 = 0;
  iVar2 = *(int *)(lVar3 + 0x2400bc);
  if (0 < iVar2) {
    do {
      if (puVar1 == *(undefined8 **)(lVar4 + lVar6 * 8)) {
        _Dst = (void *)(lVar4 + (longlong)iVar7 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
        *(int *)(lVar3 + 0x2400bc) = *(int *)(lVar3 + 0x2400bc) + -1;
        iVar2 = *(int *)(lVar3 + 0x2400bc);
        iVar7 = 0;
        if (0 < iVar2 * 2) {
          iVar7 = iVar2 * 2;
        }
        if (iVar7 < *(int *)(lVar3 + 0x2400b8)) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < *(int *)(lVar3 + 0x2400b8)) {
            FUN_18047cb30((longlong *)(lVar3 + 0x2400b0));
          }
        }
        break;
      }
      iVar7 = iVar7 + 1;
      lVar6 = lVar6 + 1;
    } while (lVar6 < iVar2);
  }
  _eh_vector_destructor_iterator_(param_1 + 0x71c,0x828,8,FUN_180534650);
  puVar5 = (undefined8 *)param_1[0x1b];
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  puVar5 = (undefined8 *)param_1[0x1a];
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  puVar5 = (undefined8 *)param_1[0x19];
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  puVar5 = (undefined8 *)param_1[0x18];
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
  *puVar1 = ParametricEqualizerListener::vftable;
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 18059a1f0 size=237 ############

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

void FUN_18059a1f0(longlong *param_1)

{
  int iVar1;
  longlong *plVar2;
  void *_Dst;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  
  plVar2 = param_1 + 1;
  if ((0 < *(int *)((longlong)param_1 + 0x14)) &&
     (lVar4 = *(longlong *)(*plVar2 + (longlong)(*(int *)((longlong)param_1 + 0x14) + -1) * 8),
     lVar4 != 0)) {
    lVar5 = *param_1;
    *param_1 = lVar4;
    if (lVar5 != 0) {
      FUN_18059b800(lVar5);
    }
    iVar3 = *(int *)((longlong)param_1 + 0x14);
    if (iVar3 < 2) {
      *(undefined4 *)((longlong)param_1 + 0x14) = 0;
      if ((int)param_1[2] != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*plVar2);
      }
      *(undefined4 *)(param_1 + 2) = 0;
      return;
    }
    iVar1 = iVar3 + -1;
    iVar6 = iVar3;
    if (iVar3 < 0) {
      iVar6 = 0;
    }
    iVar7 = 0;
    if ((-1 < iVar1) && (iVar7 = iVar1, iVar3 < iVar1)) {
      iVar7 = iVar3;
    }
    iVar6 = iVar6 - iVar7;
    if (0 < iVar6) {
      _Dst = (void *)(*plVar2 + (longlong)iVar7 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + (longlong)iVar6 * 8),
              (longlong)((iVar3 - iVar7) - iVar6) << 3);
      *(int *)((longlong)param_1 + 0x14) = *(int *)((longlong)param_1 + 0x14) - iVar6;
      if ((*(int *)((longlong)param_1 + 0x14) * 2 < (int)param_1[2]) &&
         (*(int *)((longlong)param_1 + 0x14) < (int)param_1[2])) {
        FUN_18047cb30();
      }
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
  }
  return;
}



############ FUN_ 181169240 size=322 ############

void FUN_181169240(longlong param_1,longlong param_2)

{
  int iVar1;
  longlong *plVar2;
  uint uVar3;
  int iVar4;
  longlong *plVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  uint uVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  
  plVar2 = *(longlong **)(param_1 + 8);
  plVar5 = plVar2;
  do {
    if (plVar5 == plVar2 + *(int *)(param_1 + 0x14)) {
      uVar3 = 0xffffffff;
LAB_181169287:
      puVar10 = (undefined8 *)0x0;
      if (uVar3 < *(uint *)(param_1 + 0x14)) {
        memmove(plVar2 + (int)uVar3,plVar2 + (int)uVar3 + 1,
                (longlong)(int)((*(uint *)(param_1 + 0x14) - uVar3) + -1) << 3);
        *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;
        iVar1 = *(int *)(param_1 + 0x14);
        iVar4 = 0;
        if (0 < iVar1 * 2) {
          iVar4 = iVar1 * 2;
        }
        if (iVar4 < *(int *)(param_1 + 0x10)) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < *(int *)(param_1 + 0x10)) {
            FUN_18047cb30(param_1 + 8);
          }
        }
      }
      plVar2 = *(longlong **)(param_1 + 0x18);
      uVar3 = *(uint *)((longlong)plVar2 + 0xc);
      if (0 < (int)uVar3) {
        plVar5 = (longlong *)*plVar2;
        plVar6 = plVar5;
        puVar7 = puVar10;
        puVar9 = puVar10;
        do {
          uVar8 = (uint)puVar9;
          if (param_2 == *plVar6) {
            if (uVar8 < uVar3) {
              puVar10 = (undefined8 *)plVar5[(int)uVar8];
              memmove(plVar5 + (int)uVar8,plVar5 + (int)uVar8 + 1,
                      (longlong)(int)((uVar3 - uVar8) + -1) << 3);
              *(int *)((longlong)plVar2 + 0xc) = *(int *)((longlong)plVar2 + 0xc) + -1;
            }
            if ((*(int *)((longlong)plVar2 + 0xc) * 2 < (int)plVar2[1]) &&
               (*(int *)((longlong)plVar2 + 0xc) < (int)plVar2[1])) {
              FUN_18047cb30(plVar2);
            }
            if (puVar10 == (undefined8 *)0x0) {
              return;
            }
            (**(code **)*puVar10)(puVar10,1);
            return;
          }
          puVar9 = (undefined8 *)(ulonglong)(uVar8 + 1);
          puVar7 = (undefined8 *)((longlong)puVar7 + 1);
          plVar6 = plVar6 + 1;
        } while ((longlong)puVar7 < (longlong)(int)uVar3);
      }
      return;
    }
    if (param_2 == *plVar5) {
      uVar3 = (uint)((longlong)plVar5 - (longlong)plVar2 >> 3);
      goto LAB_181169287;
    }
    plVar5 = plVar5 + 1;
  } while( true );
}



############ FUN_ 1812c2c80 size=212 ############

void FUN_1812c2c80(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  undefined8 *local_50;
  undefined8 local_48;
  
  uVar3 = 0;
  local_50 = (undefined8 *)0x0;
  local_48 = 0;
  FUN_1812b6990(*param_2,&local_50,param_3,param_4,0xfffffffffffffffe);
  iVar1 = *(int *)(param_1 + 0x144) + local_48._4_4_;
  if (*(int *)(param_1 + 0x140) < iVar1) {
    FUN_18047cb30((longlong *)(param_1 + 0x138),iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
  }
  uVar4 = (ulonglong)((longlong)(local_50 + local_48._4_4_) + (7 - (longlong)local_50)) >> 3;
  if (local_50 + local_48._4_4_ < local_50) {
    uVar4 = uVar3;
  }
  puVar2 = local_50;
  if (uVar4 != 0) {
    do {
      iVar1 = *(int *)(param_1 + 0x144);
      *(int *)(param_1 + 0x144) = iVar1 + 1;
      *(undefined8 *)(*(longlong *)(param_1 + 0x138) + (longlong)iVar1 * 8) = *puVar2;
      puVar2 = puVar2 + 1;
      uVar3 = uVar3 + 1;
    } while (uVar3 != uVar4);
  }
  local_48 = local_48 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1812b6990 size=201 ############

void FUN_1812b6990(longlong param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  ulonglong uVar4;
  longlong *plVar5;
  ulonglong uVar6;
  
  plVar5 = *(longlong **)(param_1 + 0x18);
  uVar4 = 0;
  uVar6 = (ulonglong)((longlong)(plVar5 + *(int *)(param_1 + 0x24)) + (7 - (longlong)plVar5)) >> 3;
  if (plVar5 + *(int *)(param_1 + 0x24) < plVar5) {
    uVar6 = uVar4;
  }
  if (uVar6 != 0) {
    do {
      lVar2 = ((undefined8 *)*plVar5)[1];
      if (lVar2 == 0) {
        FUN_1812b6990(*(undefined8 *)*plVar5,param_2,1);
      }
      else {
        iVar1 = *(int *)((longlong)param_2 + 0xc);
        iVar3 = iVar1 + 1;
        if ((int)param_2[1] < iVar3) {
          if (iVar3 < 0) {
            iVar3 = iVar1 + 2;
          }
          FUN_18047cb30(param_2,iVar1 + 9 + (iVar3 >> 1) & 0xfffffff8);
        }
        iVar3 = *(int *)((longlong)param_2 + 0xc);
        *(int *)((longlong)param_2 + 0xc) = iVar3 + 1;
        *(longlong *)(*param_2 + (longlong)iVar3 * 8) = lVar2;
      }
      plVar5 = plVar5 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar6);
  }
  return;
}



############ FUN_ 1812c2e60 size=164 ############

void FUN_1812c2e60(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *local_res8;
  longlong local_res10;
  undefined8 **local_res18;
  
  local_res18 = &local_res8;
  local_res8 = (undefined8 *)0x0;
  local_res10 = param_2;
  FUN_1812c2690(param_1 + 0x108,&local_res10,param_3,param_4,0xfffffffffffffffe);
  if (local_res8 != (undefined8 *)0x0) {
    (**(code **)*local_res8)(local_res8,1);
  }
  *(longlong *)(param_2 + 8) = param_1;
  *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(param_1 + 0x144);
  iVar1 = *(int *)(param_1 + 0x144) + 1;
  if (*(int *)(param_1 + 0x140) < iVar1) {
    FUN_18047cb30((longlong *)(param_1 + 0x138),
                  *(int *)(param_1 + 0x144) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)(param_1 + 0x144);
  *(int *)(param_1 + 0x144) = iVar1 + 1;
  *(longlong *)(*(longlong *)(param_1 + 0x138) + (longlong)iVar1 * 8) = param_2;
  return;
}



############ FUN_ 181227d70 size=235 ############

void FUN_181227d70(undefined8 *param_1)

{
  void *_Dst;
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *puVar4;
  longlong lVar5;
  int iVar6;
  
  *param_1 = juce::UnitTest::vftable;
  plVar3 = (longlong *)FUN_181227cf0();
  iVar6 = 0;
  lVar5 = 0;
  iVar2 = *(int *)((longlong)plVar3 + 0xc);
  if (0 < iVar2) {
    do {
      if (param_1 == *(undefined8 **)(*plVar3 + lVar5 * 8)) {
        _Dst = (void *)(*plVar3 + (longlong)iVar6 * 8);
        memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar6) + -1) << 3);
        *(int *)((longlong)plVar3 + 0xc) = *(int *)((longlong)plVar3 + 0xc) + -1;
        iVar2 = *(int *)((longlong)plVar3 + 0xc);
        iVar6 = 0;
        if (0 < iVar2 * 2) {
          iVar6 = iVar2 * 2;
        }
        if (iVar6 < (int)plVar3[1]) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < (int)plVar3[1]) {
            FUN_18047cb30(plVar3);
          }
        }
        break;
      }
      iVar6 = iVar6 + 1;
      lVar5 = lVar5 + 1;
    } while (lVar5 < iVar2);
  }
  puVar4 = (uint *)(param_1[2] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(param_1[1] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 181229c80 size=103 ############

void FUN_181229c80(undefined8 param_1,longlong *param_2,longlong param_3)

{
  int iVar1;
  
  LOCK();
  *(undefined1 *)(param_3 + 0x18) = 1;
  UNLOCK();
  *(undefined8 *)(param_3 + 0x10) = 0;
  if (*(char *)(param_3 + 0x1a) != '\0') {
    iVar1 = *(int *)((longlong)param_2 + 0xc) + 1;
    if ((int)param_2[1] < iVar1) {
      FUN_18047cb30(param_2,*(int *)((longlong)param_2 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
    }
    iVar1 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar1 + 1;
    *(longlong *)(*param_2 + (longlong)iVar1 * 8) = param_3;
  }
  return;
}



############ FUN_ 181229fc0 size=316 ############

ulonglong FUN_181229fc0(longlong *param_1)

{
  longlong lVar1;
  int iVar2;
  uint uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  bool bVar8;
  longlong local_28;
  undefined8 local_20;
  
  uVar7 = 0;
  local_28 = 0;
  local_20 = 0;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    bVar8 = *(int *)((longlong)param_1 + 0xc) != 0;
    uVar4 = uVar7;
    uVar5 = uVar7;
    do {
      uVar3 = (uint)uVar4;
      if (((bVar8) && (uVar6 = *(ulonglong *)(uVar5 + *param_1), uVar6 != 0)) &&
         (*(char *)(uVar6 + 0x19) == '\0')) {
        if (*(char *)(uVar6 + 0x18) == '\0') {
          LOCK();
          *(undefined1 *)(uVar6 + 0x19) = 1;
          UNLOCK();
          LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
          goto LAB_18122a0c0;
        }
        if (uVar3 < *(uint *)((longlong)param_1 + 0xc)) {
          FUN_18049b4a0(param_1,uVar4);
        }
        LOCK();
        *(undefined1 *)(uVar6 + 0x18) = 1;
        UNLOCK();
        *(undefined8 *)(uVar6 + 0x10) = 0;
        if (*(char *)(uVar6 + 0x1a) != '\0') {
          iVar2 = local_20._4_4_ + 1;
          if ((int)local_20 < iVar2) {
            if (iVar2 < 0) {
              iVar2 = local_20._4_4_ + 2;
            }
            FUN_18047cb30(&local_28,local_20._4_4_ + 9 + (iVar2 >> 1) & 0xfffffff8);
          }
          lVar1 = (longlong)local_20._4_4_;
          local_20 = CONCAT44(local_20._4_4_ + 1,(int)local_20);
          *(ulonglong *)(local_28 + lVar1 * 8) = uVar6;
        }
        uVar3 = uVar3 - 1;
        uVar5 = uVar5 - 8;
      }
      uVar3 = uVar3 + 1;
      uVar4 = (ulonglong)uVar3;
      uVar5 = uVar5 + 8;
      bVar8 = uVar3 < *(uint *)((longlong)param_1 + 0xc);
    } while ((int)uVar3 < (int)*(uint *)((longlong)param_1 + 0xc));
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
  uVar6 = uVar7;
LAB_18122a0c0:
  FUN_180485f00(&local_28);
  return uVar6;
}



############ FUN_ 18128fb60 size=1387 ############

void FUN_18128fb60(longlong *param_1,undefined8 param_2,float param_3)

{
  longlong *plVar1;
  double dVar2;
  uint uVar3;
  int iVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  longlong lVar7;
  uint uVar8;
  undefined8 *puVar9;
  uint uVar10;
  undefined8 *_Memory;
  uint uVar11;
  longlong lVar12;
  undefined8 *puVar13;
  uint uVar14;
  bool bVar15;
  undefined1 local_res8;
  undefined8 *local_c8;
  uint local_c0;
  uint local_bc;
  int local_b8;
  byte *local_a8;
  int iStack_a0;
  undefined4 uStack_9c;
  undefined8 local_98;
  int iStack_90;
  int iStack_8c;
  undefined8 *local_88;
  int local_80;
  int iStack_7c;
  int local_78;
  int iStack_74;
  longlong local_70;
  int local_64;
  int local_60;
  int local_5c;
  int local_58;
  undefined8 *local_50;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  plVar1 = (longlong *)*param_1;
  puVar6 = (undefined8 *)0x0;
  local_5c = 0;
  puVar9 = puVar6;
  if (plVar1 != (longlong *)0x0) {
    puVar9 = (undefined8 *)(ulonglong)*(uint *)(plVar1 + 2);
  }
  local_58 = 0;
  if ((int)puVar9 == 1) {
    if (plVar1 != (longlong *)0x0) {
      local_58 = (int)plVar1[3];
      local_5c = *(int *)((longlong)plVar1 + 0x14);
    }
    local_98 = 0;
    iStack_90 = local_5c;
    iStack_8c = local_58;
    FUN_1804aaa80(param_2,&local_98);
    return;
  }
  dVar2 = (double)(param_3 * DAT_1824c4548) + DAT_1824c4520;
  iVar4 = SUB84(dVar2,0);
  puVar9 = puVar6;
  if ((-1 < iVar4) && (puVar9 = (undefined8 *)((ulonglong)dVar2 & 0xffffffff), 0xff < iVar4)) {
    puVar9 = (undefined8 *)0xff;
  }
  local_c8 = (undefined8 *)0x0;
  local_c0 = 0;
  local_bc = 0;
  if (plVar1 != (longlong *)0x0) {
    local_58 = (int)plVar1[3];
    local_5c = *(int *)((longlong)plVar1 + 0x14);
  }
  local_50 = (undefined8 *)0x0;
  local_88 = puVar9;
  (**(code **)(*plVar1 + 0x20))(plVar1,&local_70,0,0,0);
  uVar10 = 0;
  _Memory = puVar6;
  if (0 < local_58) {
    local_res8 = SUB81(param_1,0);
    do {
      uVar14 = 0;
      uVar11 = 0;
      local_bc = 0;
      if ((int)puVar6 != 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      puVar6 = (undefined8 *)0x0;
      local_c0 = 0;
      local_a8 = (byte *)((longlong)local_64 * (longlong)(int)uVar10 + local_70);
      if (*param_1 == 0) {
        iVar4 = 0;
      }
      else {
        iVar4 = *(int *)(*param_1 + 0x10);
      }
      local_b8 = 0;
      if (iVar4 == 2) {
        uVar11 = uVar14;
        if (0 < local_5c) {
          do {
            if ((byte)puVar9 <= local_a8[3]) {
              iStack_7c = local_b8;
              if (local_b8 < local_b8 + 1) {
                iStack_7c = local_b8 + 1;
              }
              uVar5 = CONCAT44(iStack_7c,local_b8);
              local_80 = local_b8;
              if (local_b8 != iStack_7c) {
                FUN_1804abd40(&local_c8,uVar5);
                iVar4 = local_bc + 1;
                uVar11 = local_bc;
                if ((int)local_c0 < iVar4) {
                  if (iVar4 < 0) {
                    iVar4 = local_bc + 2;
                  }
                  FUN_18047cb30(&local_c8,local_bc + 9 + (iVar4 >> 1) & 0xfffffff8);
                  uVar11 = local_bc;
                }
                _Memory = local_c8;
                uVar14 = uVar11 + 1;
                local_c8[(int)uVar11] = uVar5;
                local_bc = uVar14;
                FUN_1804b14c0(local_c8,local_c8 + (int)uVar14,
                              (longlong)(local_c8 + (int)uVar14) - (longlong)local_c8 >> 3,
                              local_res8);
                if (0 < (int)uVar11) {
                  lVar7 = (longlong)(int)uVar11 * 8;
                  lVar12 = lVar7;
                  uVar8 = local_c0;
                  do {
                    if (*(int *)(lVar7 + -4 + (longlong)_Memory) ==
                        *(int *)(lVar7 + (longlong)_Memory)) {
                      iVar4 = *(int *)(lVar7 + 4 + (longlong)_Memory);
                      *(int *)(lVar7 + -4 + (longlong)_Memory) = iVar4;
                      if (iVar4 < *(int *)(lVar7 + -8 + (longlong)_Memory)) {
                        *(int *)(lVar7 + -8 + (longlong)_Memory) = iVar4;
                      }
                      if (uVar11 < uVar14) {
                        memmove((void *)(lVar12 + (longlong)_Memory),
                                (void *)(lVar12 + (longlong)_Memory + 8),
                                (longlong)(int)((uVar14 - uVar11) + -1) << 3);
                        local_bc = uVar14 - 1;
                        iVar4 = 0;
                        if (0 < (int)(local_bc * 2)) {
                          iVar4 = local_bc * 2;
                        }
                        uVar14 = local_bc;
                        if (iVar4 < (int)uVar8) {
                          uVar3 = local_bc;
                          if ((int)local_bc < 8) {
                            uVar3 = 8;
                          }
                          if ((int)uVar3 < (int)uVar8) {
                            FUN_18047cb30(&local_c8);
                            _Memory = local_c8;
                            uVar14 = local_bc;
                            uVar8 = local_c0;
                          }
                        }
                      }
                    }
                    uVar11 = uVar11 - 1;
                    lVar12 = lVar12 + -8;
                    lVar7 = lVar7 + -8;
                    puVar9 = local_88;
                  } while (0 < (int)uVar11);
                }
              }
            }
            local_a8 = local_a8 + local_60;
            local_b8 = local_b8 + 1;
            uVar11 = uVar14;
          } while (local_b8 < local_5c);
LAB_18128ffcd:
          puVar6 = (undefined8 *)(ulonglong)local_c0;
        }
      }
      else if (0 < local_5c) {
        do {
          if ((byte)puVar9 <= *local_a8) {
            iStack_74 = local_b8;
            if (local_b8 < local_b8 + 1) {
              iStack_74 = local_b8 + 1;
            }
            uVar5 = CONCAT44(iStack_74,local_b8);
            local_78 = local_b8;
            if (local_b8 != iStack_74) {
              FUN_1804abd40(&local_c8,uVar5);
              iVar4 = local_bc + 1;
              uVar11 = local_bc;
              if ((int)local_c0 < iVar4) {
                if (iVar4 < 0) {
                  iVar4 = local_bc + 2;
                }
                FUN_18047cb30(&local_c8,local_bc + 9 + (iVar4 >> 1) & 0xfffffff8);
                uVar11 = local_bc;
              }
              uVar8 = local_c0;
              _Memory = local_c8;
              uVar14 = uVar11 + 1;
              local_c8[(int)uVar11] = uVar5;
              local_bc = uVar14;
              FUN_1804b14c0(local_c8,local_c8 + (int)uVar14,
                            (longlong)(local_c8 + (int)uVar14) - (longlong)local_c8 >> 3,local_res8)
              ;
              if (0 < (int)uVar11) {
                lVar7 = (longlong)(int)uVar11 * 8;
                lVar12 = lVar7;
                do {
                  if (*(int *)(lVar7 + -4 + (longlong)_Memory) ==
                      *(int *)(lVar7 + (longlong)_Memory)) {
                    iVar4 = *(int *)(lVar7 + 4 + (longlong)_Memory);
                    *(int *)(lVar7 + -4 + (longlong)_Memory) = iVar4;
                    if (iVar4 < *(int *)(lVar7 + -8 + (longlong)_Memory)) {
                      *(int *)(lVar7 + -8 + (longlong)_Memory) = iVar4;
                    }
                    if (uVar11 < uVar14) {
                      memmove((void *)(lVar12 + (longlong)_Memory),
                              (void *)(lVar12 + (longlong)_Memory + 8),
                              (longlong)(int)((uVar14 - uVar11) + -1) << 3);
                      local_bc = uVar14 - 1;
                      iVar4 = 0;
                      if (0 < (int)(local_bc * 2)) {
                        iVar4 = local_bc * 2;
                      }
                      uVar14 = local_bc;
                      if (iVar4 < (int)uVar8) {
                        uVar3 = local_bc;
                        if ((int)local_bc < 8) {
                          uVar3 = 8;
                        }
                        if ((int)uVar3 < (int)uVar8) {
                          FUN_18047cb30(&local_c8);
                          _Memory = local_c8;
                          uVar14 = local_bc;
                          uVar8 = local_c0;
                        }
                      }
                    }
                  }
                  uVar11 = uVar11 - 1;
                  lVar12 = lVar12 + -8;
                  lVar7 = lVar7 + -8;
                  puVar9 = local_88;
                } while (0 < (int)uVar11);
              }
            }
          }
          local_a8 = local_a8 + local_60;
          local_b8 = local_b8 + 1;
          uVar11 = uVar14;
        } while (local_b8 < local_5c);
        goto LAB_18128ffcd;
      }
      uVar14 = 0;
      if (0 < (int)uVar11) {
        local_98 = (ulonglong)uVar10 << 0x20;
        iStack_8c = 1;
        bVar15 = uVar11 != 0;
        puVar13 = _Memory;
        do {
          if (bVar15) {
            uVar5 = *puVar13;
          }
          else {
            uVar5 = 0;
          }
          iVar4 = (int)uVar5;
          iStack_a0 = (int)((ulonglong)uVar5 >> 0x20) - iVar4;
          local_98 = CONCAT44(local_98._4_4_,iVar4);
          local_a8 = (byte *)CONCAT44(local_98._4_4_,iVar4);
          uStack_9c = iStack_8c;
          iStack_90 = iStack_a0;
          FUN_1804aaa80(param_2);
          uVar14 = uVar14 + 1;
          puVar13 = puVar13 + 1;
          bVar15 = uVar14 < uVar11;
        } while ((int)uVar14 < (int)uVar11);
      }
      FUN_1804aa1a0(param_2);
      uVar10 = uVar10 + 1;
    } while ((int)uVar10 < local_58);
  }
  if (local_50 != (undefined8 *)0x0) {
    (**(code **)*local_50)(local_50,1);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812a5c00 size=279 ############

void FUN_1812a5c00(longlong param_1,ulonglong param_2)

{
  uint uVar1;
  longlong lVar2;
  uint uVar3;
  uint uVar4;
  void *_Src;
  ulonglong *puVar5;
  uint uVar6;
  uint uVar7;
  bool bVar8;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x18));
  if (param_2 != 0) {
    uVar1 = *(uint *)(param_1 + 0x14);
    uVar6 = 0;
    if (0 < (int)uVar1) {
      lVar2 = *(longlong *)(param_1 + 8);
      uVar7 = uVar1;
      do {
        if (param_2 == *(ulonglong *)(lVar2 + (longlong)(int)uVar6 * 8)) {
          *(ulonglong *)(lVar2 + (longlong)(int)uVar6 * 8) = param_2;
          goto LAB_1812a5cfc;
        }
        uVar4 = (int)(uVar7 + uVar6) / 2;
        bVar8 = *(ulonglong *)(lVar2 + (longlong)(int)uVar4 * 8) <= param_2;
        if (uVar4 == uVar6) {
          if (bVar8) {
            uVar6 = uVar6 + 1;
          }
          break;
        }
        uVar3 = uVar4;
        if (!bVar8) {
          uVar3 = uVar6;
          uVar7 = uVar4;
        }
        uVar6 = uVar3;
      } while ((int)uVar6 < (int)uVar7);
    }
    if (*(int *)(param_1 + 0x10) < (int)(uVar1 + 1)) {
      FUN_18047cb30(param_1 + 8,uVar1 + 9 + (int)(uVar1 + 1) / 2 & 0xfffffff8);
    }
    uVar1 = *(uint *)(param_1 + 0x14);
    if (uVar6 < uVar1) {
      _Src = (void *)(*(longlong *)(param_1 + 8) + (longlong)(int)uVar6 * 8);
      memmove((void *)((longlong)_Src + 8),_Src,(longlong)(int)(uVar1 - uVar6) << 3);
      puVar5 = (ulonglong *)(*(longlong *)(param_1 + 8) + (longlong)(int)uVar6 * 8);
    }
    else {
      puVar5 = (ulonglong *)(*(longlong *)(param_1 + 8) + (longlong)(int)uVar1 * 8);
    }
    *puVar5 = param_2;
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
  }
LAB_1812a5cfc:
                    /* WARNING: Could not recover jumptable at 0x0001812a5d10. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x18));
  return;
}



############ FUN_ 1812a7b20 size=570 ############

void FUN_1812a7b20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  longlong *plVar6;
  longlong *plVar7;
  int iVar8;
  int iVar9;
  longlong *plVar10;
  longlong *_Memory;
  undefined1 local_res8;
  longlong *local_50;
  undefined8 local_48;
  
  plVar6 = (longlong *)0x0;
  plVar7 = (longlong *)0x0;
  local_50 = (longlong *)0x0;
  local_48 = 0;
  local_48._4_4_ = 0;
  iVar9 = *(int *)(param_1 + 0x44);
  if (0 < iVar9) {
    FUN_18047cb30(&local_50,iVar9 + 8 + iVar9 / 2 & 0xfffffff8,param_3,param_4,0xfffffffffffffffe);
  }
  plVar10 = *(longlong **)(param_1 + 0x38);
  plVar1 = plVar10 + *(int *)(param_1 + 0x44);
  _Memory = local_50;
  iVar9 = local_48._4_4_;
  if (plVar10 != plVar1) {
    do {
      plVar2 = (longlong *)*plVar10;
      cVar4 = (**(code **)(*plVar2 + 8))(plVar2,param_2);
      if (cVar4 != '\0') {
        iVar5 = iVar9 + 1;
        iVar8 = iVar9;
        if ((int)local_48 < iVar5) {
          if (iVar5 < 0) {
            iVar5 = iVar9 + 2;
          }
          FUN_18047cb30(&local_50,iVar9 + 9 + (iVar5 >> 1) & 0xfffffff8);
          _Memory = local_50;
          iVar8 = local_48._4_4_;
        }
        iVar9 = iVar8 + 1;
        local_48 = CONCAT44(iVar9,(int)local_48);
        _Memory[iVar8] = (longlong)plVar2;
        FUN_1804d65c0(_Memory,_Memory + iVar9,(longlong)(_Memory + iVar9) - (longlong)_Memory >> 3,
                      local_res8);
        cVar4 = (**(code **)(*plVar2 + 0x20))(plVar2);
        if ((((cVar4 == '\0') || ((char)plVar2[5] != '\0')) ||
            (*(char *)((longlong)plVar2 + 0x2a) != '\0')) ||
           (*(char *)((longlong)plVar2 + 0x29) != '\0')) {
          bVar3 = false;
        }
        else {
          bVar3 = true;
        }
        if (!bVar3) {
          if ((plVar6 == (longlong *)0x0) || ((int)plVar2[2] < (int)plVar6[2])) {
            plVar6 = plVar2;
          }
          if ((plVar7 == (longlong *)0x0) || ((int)plVar7[2] < (int)plVar2[2])) {
            plVar7 = plVar2;
          }
        }
      }
      plVar10 = plVar10 + 1;
    } while (plVar10 != plVar1);
    if (plVar7 != plVar6) goto LAB_1812a7c84;
  }
  plVar7 = (longlong *)0x0;
LAB_1812a7c84:
  plVar1 = _Memory + iVar9;
  for (plVar10 = _Memory; plVar2 = _Memory, plVar10 != plVar1; plVar10 = plVar10 + 1) {
    if (*(int *)(*plVar10 + 0x10) == (int)param_4) goto LAB_1812a7d51;
  }
  for (; plVar10 = _Memory, plVar2 != plVar1; plVar2 = plVar2 + 1) {
    plVar10 = (longlong *)*plVar2;
    if ((plVar10 != plVar6) && (plVar10 != plVar7)) {
      cVar4 = (**(code **)(*plVar10 + 0x20))(plVar10);
      if ((cVar4 == '\0') ||
         ((((char)plVar10[5] != '\0' || (*(char *)((longlong)plVar10 + 0x2a) != '\0')) ||
          (*(char *)((longlong)plVar10 + 0x29) != '\0')))) {
        bVar3 = false;
      }
      else {
        bVar3 = true;
      }
      if (bVar3) goto LAB_1812a7d51;
    }
  }
  for (; plVar2 = _Memory, plVar10 != plVar1; plVar10 = plVar10 + 1) {
    plVar2 = (longlong *)*plVar10;
    if (((plVar2 != plVar6) && (plVar2 != plVar7)) && ((char)plVar2[5] == '\0')) goto LAB_1812a7d51;
  }
  for (; (plVar2 != plVar1 && (((longlong *)*plVar2 == plVar6 || ((longlong *)*plVar2 == plVar7))));
      plVar2 = plVar2 + 1) {
  }
LAB_1812a7d51:
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812ac350 size=588 ############

void FUN_1812ac350(longlong param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  byte bVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *_Memory;
  int iVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *local_80;
  undefined8 local_78;
  
  plVar9 = (longlong *)0x0;
  plVar7 = (longlong *)0x0;
  local_80 = (longlong *)0x0;
  local_78 = 0;
  local_78._4_4_ = 0;
  iVar4 = *(int *)(param_1 + 0x5c);
  if (0 < iVar4) {
    FUN_18047cb30(&local_80,iVar4 + 8 + iVar4 / 2 & 0xfffffff8,param_3,param_4,0xfffffffffffffffe);
  }
  plVar10 = *(longlong **)(param_1 + 0x50);
  plVar6 = plVar10 + *(int *)(param_1 + 0x5c);
  _Memory = local_80;
  iVar4 = local_78._4_4_;
  iVar8 = local_78._4_4_;
  if (plVar10 != plVar6) {
    do {
      plVar1 = (longlong *)*plVar10;
      iVar4 = iVar8 + 1;
      if ((int)local_78 < iVar4) {
        if (iVar4 < 0) {
          iVar4 = iVar8 + 2;
        }
        FUN_18047cb30(&local_80,iVar8 + 9 + (iVar4 >> 1) & 0xfffffff8);
        _Memory = local_80;
        iVar8 = local_78._4_4_;
      }
      iVar4 = iVar8 + 1;
      local_78 = CONCAT44(iVar4,(int)local_78);
      _Memory[iVar8] = (longlong)plVar1;
      FUN_1804d61d0(_Memory,_Memory + iVar4,(longlong)(_Memory + iVar4) - (longlong)_Memory >> 3,
                    param_2 & 0xff);
      cVar3 = (**(code **)(*plVar1 + 8))(plVar1);
      if ((cVar3 == '\0') || ((int)plVar1[8] != 0)) {
        bVar2 = false;
      }
      else {
        bVar2 = true;
      }
      if (!bVar2) {
        bVar5 = (byte)((ulonglong)plVar1[3] >> 0x18);
        if ((plVar9 == (longlong *)0x0) || (bVar5 < (byte)((ulonglong)plVar9[3] >> 0x18))) {
          plVar9 = plVar1;
        }
        if ((plVar7 == (longlong *)0x0) || ((byte)((ulonglong)plVar7[3] >> 0x18) < bVar5)) {
          plVar7 = plVar1;
        }
      }
      plVar10 = plVar10 + 1;
      iVar8 = iVar4;
    } while (plVar10 != plVar6);
    if (plVar7 != plVar9) goto LAB_1812ac48f;
  }
  plVar7 = (longlong *)0x0;
LAB_1812ac48f:
  if (((byte)(*(char *)(param_2 + 2) - 1U) < 0x10) && (*(byte *)(param_2 + 3) < 0x80)) {
    for (plVar6 = _Memory; plVar6 != _Memory + iVar4; plVar6 = plVar6 + 1) {
      if ((byte)((ulonglong)*(undefined8 *)(*plVar6 + 0x18) >> 0x18) == *(byte *)(param_2 + 3))
      goto LAB_1812ac593;
    }
  }
  plVar6 = _Memory + iVar4;
  for (plVar10 = _Memory; plVar1 = _Memory, plVar10 != plVar6; plVar10 = plVar10 + 1) {
    plVar1 = (longlong *)*plVar10;
    if ((plVar1 != plVar9) && (plVar1 != plVar7)) {
      cVar3 = (**(code **)(*plVar1 + 8))(plVar1);
      if ((cVar3 == '\0') || ((int)plVar1[8] != 0)) {
        bVar2 = false;
      }
      else {
        bVar2 = true;
      }
      if (bVar2) goto LAB_1812ac593;
    }
  }
  for (; plVar10 = _Memory, plVar1 != plVar6; plVar1 = plVar1 + 1) {
    plVar10 = (longlong *)*plVar1;
    if ((((plVar10 != plVar9) && (plVar10 != plVar7)) && ((int)plVar10[8] != 1)) &&
       ((int)plVar10[8] != 3)) goto LAB_1812ac593;
  }
  for (; (plVar10 != plVar6 &&
         (((longlong *)*plVar10 == plVar9 || ((longlong *)*plVar10 == plVar7))));
      plVar10 = plVar10 + 1) {
  }
LAB_1812ac593:
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812b59a0 size=176 ############

void FUN_1812b59a0(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  lVar2 = FUN_1812b5a60();
  if (lVar2 != 0) {
    iVar1 = *(int *)(lVar2 + 0x34);
    iVar4 = 0;
    lVar3 = 0;
    if (0 < iVar1) {
      while (param_3 != *(longlong *)(*(longlong *)(lVar2 + 0x28) + lVar3 * 8)) {
        iVar4 = iVar4 + 1;
        lVar3 = lVar3 + 1;
        if (iVar1 <= lVar3) {
          return;
        }
      }
      _Dst = (void *)(*(longlong *)(lVar2 + 0x28) + (longlong)iVar4 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
      *(int *)(lVar2 + 0x34) = *(int *)(lVar2 + 0x34) + -1;
      iVar1 = *(int *)(lVar2 + 0x34);
      iVar4 = 0;
      if (0 < iVar1 * 2) {
        iVar4 = iVar1 * 2;
      }
      if (iVar4 < *(int *)(lVar2 + 0x30)) {
        if (iVar1 < 8) {
          iVar1 = 8;
        }
        if (iVar1 < *(int *)(lVar2 + 0x30)) {
          FUN_18047cb30(lVar2 + 0x28);
        }
      }
    }
  }
  return;
}



############ FUN_ 1812c8840 size=285 ############

void FUN_1812c8840(undefined8 *param_1)

{
  int *piVar1;
  void *_Dst;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  ulonglong uVar6;
  int iVar7;
  ulonglong uVar8;
  
  *param_1 = juce::DropShadower::vftable;
  lVar3 = param_1[1];
  uVar6 = 0;
  if (lVar3 != 0) {
    lVar4 = *(longlong *)(lVar3 + 0x80);
    iVar2 = *(int *)(lVar3 + 0x8c);
    uVar8 = uVar6;
    if (0 < iVar2) {
      do {
        iVar7 = (int)uVar8;
        if (param_1 == *(undefined8 **)(lVar4 + uVar6 * 8)) {
          _Dst = (void *)(lVar4 + (longlong)iVar7 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar7) + -1) << 3);
          *(int *)(lVar3 + 0x8c) = *(int *)(lVar3 + 0x8c) + -1;
          iVar2 = *(int *)(lVar3 + 0x8c);
          iVar7 = 0;
          if (0 < iVar2 * 2) {
            iVar7 = iVar2 * 2;
          }
          if (iVar7 < *(int *)(lVar3 + 0x88)) {
            if (iVar2 < 8) {
              iVar2 = 8;
            }
            if (iVar2 < *(int *)(lVar3 + 0x88)) {
              FUN_18047cb30((longlong *)(lVar3 + 0x80));
            }
          }
          break;
        }
        uVar8 = (ulonglong)(iVar7 + 1);
        uVar6 = uVar6 + 1;
      } while ((longlong)uVar6 < (longlong)iVar2);
    }
    param_1[1] = 0;
  }
  FUN_1812c8590(param_1);
  *(undefined1 *)(param_1 + 6) = 1;
  FUN_18047cbc0(param_1 + 2);
  if (*(int *)(param_1 + 3) == 0) {
    *(undefined4 *)(param_1 + 3) = 0;
    puVar5 = (undefined8 *)param_1[7];
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar5)(puVar5,1);
      }
    }
    FUN_18047cbc0(param_1 + 2);
    *(undefined4 *)((longlong)param_1 + 0x1c) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001812c895b. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
    free((void *)param_1[2]);
    return;
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[2]);
}



############ FUN_ 1812cadf0 size=144 ############

void FUN_1812cadf0(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x34);
  lVar2 = *(longlong *)(param_1 + 0x28);
  iVar4 = 0;
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x34) = *(int *)(param_1 + 0x34) + -1;
    iVar1 = *(int *)(param_1 + 0x34);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x30)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x30)) {
        FUN_18047cb30((longlong *)(param_1 + 0x28));
      }
    }
  }
  return;
}



############ FUN_ 1812cae90 size=113 ############

void FUN_1812cae90(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  if (param_2 != 0) {
    plVar3 = *(longlong **)(param_1 + 0x28);
    iVar2 = *(int *)(param_1 + 0x34);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x30) < iVar2 + 1) {
      FUN_18047cb30((longlong *)(param_1 + 0x28),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x34);
    *(int *)(param_1 + 0x34) = iVar2 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x28) + (longlong)iVar2 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812d5620 size=841 ############

void FUN_1812d5620(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  longlong lVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  longlong *plVar5;
  longlong *plVar6;
  uint *_Memory_00;
  ulonglong uVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  longlong local_res18;
  undefined8 local_res20;
  undefined8 *local_50;
  int local_48;
  uint local_44;
  
  iVar3 = FUN_18049bb30(*(undefined8 *)(param_2 + 0x18),"CLOSED",param_3,param_4,0xfffffffffffffffe)
  ;
  if (iVar3 == 0) {
    uVar4 = *(uint *)(param_1 + 0x44) & 3;
    if (uVar4 == 0) {
      if (*(longlong *)(param_1 + 8) == 0) {
        return;
      }
      if (*(char *)(*(longlong *)(param_1 + 8) + 0x124) == '\0') {
        return;
      }
    }
    else if (uVar4 != 2) {
      return;
    }
    FUN_1812d6e80(param_1,1);
    return;
  }
  iVar3 = FUN_18049bb30(*(undefined8 *)(param_2 + 0x18),&DAT_1821e4a74);
  if (iVar3 != 0) {
    return;
  }
  uVar4 = *(uint *)(param_1 + 0x44) & 3;
  if (uVar4 == 0) {
    if ((*(longlong *)(param_1 + 8) != 0) && (*(char *)(*(longlong *)(param_1 + 8) + 0x124) != '\0')
       ) goto LAB_1812d56eb;
  }
  else if (uVar4 == 2) goto LAB_1812d56eb;
  FUN_1812d6e80(param_1,2);
LAB_1812d56eb:
  uVar9 = 0;
  local_50 = (undefined8 *)0x0;
  local_48 = 0;
  local_44 = 0;
  iVar3 = *(int *)(param_1 + 0x24);
  uVar7 = uVar9;
  if (0 < iVar3) {
    FUN_18047cb30(&local_50,iVar3 + 8 + iVar3 / 2 & 0xfffffff8);
    uVar7 = (ulonglong)local_44;
  }
  uVar4 = (uint)uVar7;
  puVar8 = *(undefined8 **)(param_1 + 0x18);
  uVar12 = (ulonglong)((longlong)(puVar8 + *(int *)(param_1 + 0x24)) + (7 - (longlong)puVar8)) >> 3;
  if (puVar8 + *(int *)(param_1 + 0x24) < puVar8) {
    uVar12 = uVar9;
  }
  uVar11 = uVar9;
  if (uVar12 != 0) {
    do {
      iVar3 = (int)uVar7;
      uVar4 = iVar3 + 1;
      uVar7 = (ulonglong)uVar4;
      local_50[iVar3] = *puVar8;
      puVar8 = puVar8 + 1;
      uVar11 = uVar11 + 1;
      local_44 = uVar4;
    } while (uVar11 != uVar12);
  }
  puVar8 = *(undefined8 **)(param_2 + 8);
  puVar10 = local_50;
  do {
    local_50 = puVar10;
    if (puVar8 == (undefined8 *)0x0) {
      uVar7 = (ulonglong)((longlong)(puVar10 + (int)uVar4) + (7 - (longlong)puVar10)) >> 3;
      if (puVar10 + (int)uVar4 < puVar10) {
        uVar7 = uVar9;
      }
      puVar8 = puVar10;
      if (uVar7 != 0) {
        do {
          FUN_1812d6e80(*puVar8,0);
          puVar8 = puVar8 + 1;
          uVar9 = uVar9 + 1;
        } while (uVar9 != uVar7);
      }
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
    for (puVar10 = (undefined8 *)puVar8[2]; puVar10 != (undefined8 *)0x0;
        puVar10 = (undefined8 *)*puVar10) {
      local_res20 = puVar10[1];
      iVar3 = FUN_18048cbc0(local_res20,&DAT_1821e3254);
      if (iVar3 == 0) {
        plVar5 = puVar10 + 2;
        goto LAB_1812d57b9;
      }
    }
    plVar5 = (longlong *)FUN_181220d40();
LAB_1812d57b9:
    lVar1 = *plVar5;
    _Memory = (uint *)(lVar1 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    uVar7 = uVar9;
    puVar10 = local_50;
    if (0 < (int)local_44) {
      do {
        plVar5 = (longlong *)*puVar10;
        plVar6 = (longlong *)(**(code **)(*plVar5 + 0x10))(plVar5,&local_res18);
        iVar3 = 0;
        if (*plVar6 != lVar1) {
          iVar3 = FUN_18048cbc0(*plVar6);
        }
        _Memory_00 = (uint *)(local_res18 + -0x10);
        if ((*_Memory_00 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
        uVar4 = (uint)uVar7;
        if (iVar3 == 0) {
          FUN_1812d5620(plVar5,puVar8);
          uVar2 = local_44;
          if (uVar4 < local_44) {
            memmove(local_50 + (int)uVar4,local_50 + (int)uVar4 + 1,
                    (longlong)(int)((local_44 - uVar4) + -1) << 3);
            local_44 = uVar2 - 1;
            iVar3 = 0;
            if (0 < (int)(local_44 * 2)) {
              iVar3 = local_44 * 2;
            }
            if (iVar3 < local_48) {
              uVar4 = local_44;
              if ((int)local_44 < 8) {
                uVar4 = 8;
              }
              if ((int)uVar4 < local_48) {
                FUN_18047cb30(&local_50,uVar4);
              }
            }
          }
          break;
        }
        uVar7 = (ulonglong)(uVar4 + 1);
        puVar10 = puVar10 + 1;
      } while ((int)(uVar4 + 1) < (int)local_44);
    }
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar4 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar8 = (undefined8 *)*puVar8;
    uVar4 = local_44;
    puVar10 = local_50;
  } while( true );
}



############ FUN_ 1812d6f20 size=160 ############

undefined8 FUN_1812d6f20(longlong param_1,uint param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *_Dst;
  undefined8 *puVar3;
  
  plVar1 = (longlong *)(param_1 + 0x18);
  if (param_2 < *(uint *)(param_1 + 0x24)) {
    lVar2 = *(longlong *)((longlong)(int)param_2 * 8 + *plVar1);
    if (lVar2 != 0) {
      puVar3 = (undefined8 *)0x0;
      *(undefined8 *)(lVar2 + 0x10) = 0;
      if (param_2 < *(uint *)(param_1 + 0x24)) {
        _Dst = (undefined8 *)(*plVar1 + (longlong)(int)param_2 * 8);
        puVar3 = (undefined8 *)*_Dst;
        memmove(_Dst,_Dst + 1,(longlong)(int)((*(uint *)(param_1 + 0x24) - param_2) + -1) << 3);
        *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
      }
      if ((*(int *)(param_1 + 0x24) * 2 < *(int *)(param_1 + 0x20)) &&
         (*(int *)(param_1 + 0x24) < *(int *)(param_1 + 0x20))) {
        FUN_18047cb30(plVar1);
      }
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      return 1;
    }
  }
  return 0;
}



############ FUN_ 1812e0dc0 size=122 ############

void FUN_1812e0dc0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar1 = (longlong *)(param_1 + 0x300);
    plVar4 = (longlong *)*plVar1;
    iVar3 = *(int *)(param_1 + 0x30c);
    plVar2 = plVar4 + iVar3;
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x308) < iVar3 + 1) {
      FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x30c);
    *(int *)(param_1 + 0x30c) = iVar3 + 1;
    *(longlong *)(*plVar1 + (longlong)iVar3 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812e8a80 size=122 ############

void FUN_1812e8a80(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar1 = (longlong *)(param_1 + 0x1d0);
    plVar4 = (longlong *)*plVar1;
    iVar3 = *(int *)(param_1 + 0x1dc);
    plVar2 = plVar4 + iVar3;
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x1d8) < iVar3 + 1) {
      FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x1dc);
    *(int *)(param_1 + 0x1dc) = iVar3 + 1;
    *(longlong *)(*plVar1 + (longlong)iVar3 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812e9370 size=718 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e9370(longlong *param_1)

{
  uint uVar1;
  byte bVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  byte *pbVar7;
  uint *puVar8;
  undefined8 *puVar9;
  int iVar10;
  longlong *plVar11;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  int local_74;
  byte *local_70;
  undefined8 local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  longlong local_58 [2];
  longlong *local_48;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_58[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_98;
  if (param_1[0x39] == 0) {
    lVar4 = (**(code **)(*param_1 + 0x158))();
    puVar6 = (undefined8 *)param_1[0x39];
    param_1[0x39] = lVar4;
    if (puVar6 != (undefined8 *)0x0) {
      (**(code **)*puVar6)(puVar6,1);
    }
    plVar3 = (longlong *)param_1[0x39];
    if (plVar3 != (longlong *)0x0) {
      (**(code **)(*plVar3 + 0x58))(plVar3,1);
      FUN_181343cc0(param_1,plVar3,0xffffffff);
    }
    uVar5 = FUN_1812ea010(param_1,local_58);
    FUN_1812e1110(param_1[0x39],uVar5,0);
    puVar8 = (uint *)(local_58[0] + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    *(undefined4 *)(param_1[0x39] + 0x2f0) = *(undefined4 *)((longlong)param_1 + 0x1fc);
    plVar3 = param_1 + 0x18;
    lVar4 = param_1[0x39];
    if (plVar3 != (longlong *)0x0) {
      plVar11 = (longlong *)(lVar4 + 0x300);
      puVar9 = (undefined8 *)*plVar11;
      iVar10 = *(int *)(lVar4 + 0x30c);
      puVar6 = puVar9 + iVar10;
      for (; local_48 = plVar3, puVar9 != puVar6; puVar9 = puVar9 + 1) {
        if (plVar3 == (longlong *)*puVar9) goto LAB_1812e94cf;
      }
      if (*(int *)(lVar4 + 0x308) < iVar10 + 1) {
        FUN_18047cb30(plVar11,iVar10 + 9 + (iVar10 + 1) / 2 & 0xfffffff8);
      }
      iVar10 = *(int *)(lVar4 + 0x30c);
      *(int *)(lVar4 + 0x30c) = iVar10 + 1;
      *(longlong **)(*plVar11 + (longlong)iVar10 * 8) = plVar3;
    }
LAB_1812e94cf:
    FUN_18133ed60(param_1[0x39],2,1);
    if (param_1[0x39] != 0) {
      plVar3 = (longlong *)(param_1[0x39] + 0xb0);
      puVar6 = (undefined8 *)
               (**(code **)(*(longlong *)param_1[0x33] + 8))((longlong *)param_1[0x33],&local_28);
      (**(code **)(*(longlong *)*puVar6 + 0x20))((longlong *)*puVar6,&local_70,puVar6 + 1);
      (**(code **)(*local_28 + 0xb0))(local_28,local_20);
      iVar10 = 0;
      pbVar7 = local_70;
      do {
        while( true ) {
          bVar2 = *pbVar7;
          pbVar7 = pbVar7 + 1;
          if ((char)bVar2 < '\0') break;
          if (bVar2 == 0) {
            local_78 = 0;
            local_74 = 0;
            if (0 < iVar10) {
              local_74 = iVar10;
            }
            (**(code **)(*plVar3 + 0x18))(plVar3,&local_78);
            puVar8 = (uint *)(local_70 + -0x10);
            if ((*puVar8 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar8;
              *puVar8 = *puVar8 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar8);
              }
            }
            (**(code **)(*param_1 + 0x108))(param_1);
            local_68 = 0;
            uStack_60 = (undefined4)param_1[5];
            uStack_5c = *(undefined4 *)((longlong)param_1 + 0x2c);
            local_38 = 0;
            uStack_34 = 0;
            uStack_30 = uStack_60;
            uStack_2c = uStack_5c;
            FUN_181342870(param_1,&local_38,1);
            (**(code **)(*param_1 + 0x170))(param_1,param_1[0x39]);
            FUN_18134ab30(param_1,0,0,0);
            FUN_18133ed60(param_1[0x39],2,1);
          }
LAB_1812e9577:
          iVar10 = iVar10 + 1;
        }
        if ((*pbVar7 & 0xc0) != 0x80) goto LAB_1812e9577;
        do {
          pbVar7 = pbVar7 + 1;
        } while ((*pbVar7 & 0xc0) == 0x80);
        iVar10 = iVar10 + 1;
      } while( true );
    }
  }
}



############ FUN_ 1812eb830 size=228 ############

void FUN_1812eb830(longlong param_1)

{
  char cVar1;
  int iVar2;
  longlong lVar3;
  undefined1 local_48 [8];
  longlong local_40;
  undefined8 local_38;
  void *local_30;
  undefined8 local_28;
  undefined8 local_20;
  
  FUN_181349390();
  local_48[0] = 1;
  local_40 = 0;
  local_38 = 0;
  local_30 = (void *)0x0;
  local_28 = 0;
  local_20 = 0;
  FUN_1804af790(&local_40,8);
  lVar3 = (longlong)local_38._4_4_;
  local_38 = CONCAT44(local_38._4_4_ + 1,(undefined4)local_38);
  *(undefined4 *)(local_40 + lVar3 * 4) = 0;
  iVar2 = local_28._4_4_ + 1;
  if ((int)local_28 < iVar2) {
    if (iVar2 < 0) {
      iVar2 = local_28._4_4_ + 2;
    }
    FUN_18047cb30(&local_30,local_28._4_4_ + 9 + (iVar2 >> 1) & 0xfffffff8);
  }
  lVar3 = (longlong)local_28._4_4_;
  local_28 = CONCAT44(local_28._4_4_ + 1,(int)local_28);
  *(longlong *)((longlong)local_30 + lVar3 * 8) = param_1 + 0x118;
  cVar1 = FUN_1812efb00(local_48);
  while (cVar1 != '\0') {
    cVar1 = FUN_1812efb00(local_48);
  }
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 1812ea7b0 size=684 ############

void FUN_1812ea7b0(longlong param_1)

{
  int *piVar1;
  undefined8 *puVar2;
  char cVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  int iVar6;
  longlong lVar7;
  undefined8 *local_res8;
  longlong local_res10 [3];
  undefined1 local_118 [8];
  longlong local_110;
  undefined8 local_108;
  void *local_100;
  undefined8 local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  undefined8 *local_d0;
  undefined8 local_c8;
  undefined **local_c0;
  code *local_b8;
  undefined8 *local_b0;
  undefined ***local_88;
  undefined1 local_70 [32];
  undefined8 *local_50;
  
  local_c8 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x155) == '\0') {
    *(undefined1 *)(param_1 + 0x155) = 1;
  }
  FUN_18051b380(&local_e8,param_1 + 0x118);
  local_d0 = *(undefined8 **)(param_1 + 0x130);
  if (local_d0 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_d0 + 1) = *(int *)(local_d0 + 1) + 1;
    UNLOCK();
  }
  iVar6 = 0;
  if (local_e8 != local_e0) {
    do {
      if (*(char *)(local_e8 + 0x86) == '\0') {
        iVar6 = iVar6 + 1;
      }
      local_e8 = local_e8 + 0x88;
    } while (local_e8 != local_e0);
    if (0 < iVar6) {
      iVar6 = FUN_1812ebc40(param_1);
      local_118[0] = 1;
      local_110 = 0;
      local_108 = 0;
      local_100 = (void *)0x0;
      local_f8 = 0;
      local_f0 = 0;
      FUN_1804af790(&local_110,8);
      lVar7 = (longlong)local_108._4_4_;
      local_108 = CONCAT44(local_108._4_4_ + 1,(undefined4)local_108);
      *(undefined4 *)(local_110 + lVar7 * 4) = 0;
      if ((int)local_f8 < local_f8._4_4_ + 1) {
        FUN_18047cb30(&local_100,local_f8._4_4_ + 9 + (local_f8._4_4_ + 1) / 2 & 0xfffffff8);
      }
      lVar7 = (longlong)local_f8._4_4_;
      local_f8 = CONCAT44(local_f8._4_4_ + 1,(int)local_f8);
      *(longlong **)((longlong)local_100 + lVar7 * 8) = &local_e8;
      cVar3 = FUN_1812efb00(local_118);
      while (cVar3 != '\0') {
        if (*(int *)(local_f0 + 8) != 0) {
          *(bool *)(local_f0 + 0x85) = *(int *)(local_f0 + 8) == iVar6;
        }
        cVar3 = FUN_1812efb00(local_118);
      }
                    /* WARNING: Subroutine does not return */
      free(local_100);
    }
  }
  local_res10[0] = *(longlong *)(param_1 + 0x180);
  if ((*(uint *)(local_res10[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10[0] + -0x10) = *(int *)(local_res10[0] + -0x10) + 1;
    UNLOCK();
  }
  FUN_1813486a0(&local_e8,1,local_res10,0,0);
  lVar7 = FUN_18134adf0(param_1);
  FUN_18051b750(&local_d0,lVar7);
  uVar4 = (**(code **)(*(longlong *)(lVar7 + 0x48) + 0x28))
                    ((longlong *)(lVar7 + 0x48),local_70,param_1,*(undefined8 *)(param_1 + 0x170));
  FUN_1804de690(&local_res8,param_1);
  puVar2 = local_res8;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
    UNLOCK();
  }
  local_c0 = std::_Func_impl_no_alloc<<lambda_0f0eab3fb5f6e29b67daf18344315b42>,void,int>::vftable;
  local_b8 = FUN_1812eaa70;
  local_b0 = local_res8;
  local_88 = &local_c0;
  uVar5 = FUN_181347bc0(&local_c0);
  if (puVar2 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar2 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  FUN_1812f0230(&local_e8,uVar4,uVar5);
  if (local_50 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_50 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_50)(local_50,1);
    }
  }
  if (local_d0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_d0 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_d0)(local_d0,1);
    }
  }
  FUN_18051c930(&local_e8);
  return;
}



############ FUN_ 1812eefa0 size=144 ############

void FUN_1812eefa0(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x24);
  lVar2 = *(longlong *)(param_1 + 0x18);
  iVar4 = 0;
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
    iVar1 = *(int *)(param_1 + 0x24);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x20)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x20)) {
        FUN_18047cb30((longlong *)(param_1 + 0x18));
      }
    }
  }
  return;
}



############ FUN_ 1812ef930 size=144 ############

void FUN_1812ef930(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x1c);
  lVar2 = *(longlong *)(param_1 + 0x10);
  iVar4 = 0;
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + -1;
    iVar1 = *(int *)(param_1 + 0x1c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x18)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x18)) {
        FUN_18047cb30((longlong *)(param_1 + 0x10));
      }
    }
  }
  return;
}



############ FUN_ 1812ef9d0 size=113 ############

void FUN_1812ef9d0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  if (param_2 != 0) {
    plVar3 = *(longlong **)(param_1 + 0x10);
    iVar2 = *(int *)(param_1 + 0x1c);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x18) < iVar2 + 1) {
      FUN_18047cb30((longlong *)(param_1 + 0x10),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x1c);
    *(int *)(param_1 + 0x1c) = iVar2 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x10) + (longlong)iVar2 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812f16c0 size=113 ############

void FUN_1812f16c0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  if (param_2 != 0) {
    plVar3 = *(longlong **)(param_1 + 0x20);
    iVar2 = *(int *)(param_1 + 0x2c);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x28) < iVar2 + 1) {
      FUN_18047cb30((longlong *)(param_1 + 0x20),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x2c);
    *(int *)(param_1 + 0x2c) = iVar2 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x20) + (longlong)iVar2 * 8) = param_2;
  }
  return;
}



############ FUN_ 1812f1740 size=187 ############

void FUN_1812f1740(longlong param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  lVar2 = *(longlong *)(param_1 + 0x18);
  if (lVar2 != 0) {
    iVar1 = *(int *)(lVar2 + 0x34);
    iVar4 = 0;
    lVar3 = 0;
    if (0 < iVar1) {
      while (param_1 + 0x10 != *(longlong *)(*(longlong *)(lVar2 + 0x28) + lVar3 * 8)) {
        iVar4 = iVar4 + 1;
        lVar3 = lVar3 + 1;
        if (iVar1 <= lVar3) {
          *(undefined8 *)(param_1 + 0x18) = 0;
          return;
        }
      }
      _Dst = (void *)(*(longlong *)(lVar2 + 0x28) + (longlong)iVar4 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
      *(int *)(lVar2 + 0x34) = *(int *)(lVar2 + 0x34) + -1;
      iVar1 = *(int *)(lVar2 + 0x34);
      iVar4 = 0;
      if (0 < iVar1 * 2) {
        iVar4 = iVar1 * 2;
      }
      if (iVar4 < *(int *)(lVar2 + 0x30)) {
        if (iVar1 < 8) {
          iVar1 = 8;
        }
        if (iVar1 < *(int *)(lVar2 + 0x30)) {
          FUN_18047cb30(lVar2 + 0x28);
        }
      }
    }
    *(undefined8 *)(param_1 + 0x18) = 0;
  }
  return;
}



############ FUN_ 1812f1850 size=189 ############

void FUN_1812f1850(undefined8 *param_1)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  ulonglong uVar3;
  int iVar4;
  ulonglong uVar5;
  
  *param_1 = juce::MenuBarModel::vftable;
  uVar3 = 0;
  lVar2 = param_1[3];
  param_1[2] = juce::MenuBarModel::vftable;
  if (lVar2 != 0) {
    iVar1 = *(int *)(lVar2 + 0x34);
    uVar5 = uVar3;
    if (0 < iVar1) {
      do {
        iVar4 = (int)uVar5;
        if (param_1 + 2 == *(undefined8 **)(*(longlong *)(lVar2 + 0x28) + uVar3 * 8)) {
          _Dst = (void *)(*(longlong *)(lVar2 + 0x28) + (longlong)iVar4 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
          *(int *)(lVar2 + 0x34) = *(int *)(lVar2 + 0x34) + -1;
          iVar1 = *(int *)(lVar2 + 0x34);
          iVar4 = 0;
          if (0 < iVar1 * 2) {
            iVar4 = iVar1 * 2;
          }
          if (iVar4 < *(int *)(lVar2 + 0x30)) {
            if (iVar1 < 8) {
              iVar1 = 8;
            }
            if (iVar1 < *(int *)(lVar2 + 0x30)) {
              FUN_18047cb30(lVar2 + 0x28);
            }
          }
          break;
        }
        uVar5 = (ulonglong)(iVar4 + 1);
        uVar3 = uVar3 + 1;
      } while ((longlong)uVar3 < (longlong)iVar1);
    }
    param_1[3] = 0;
  }
  *(undefined4 *)((longlong)param_1 + 0x2c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[4]);
}



############ FUN_ 1812f2910 size=197 ############

void FUN_1812f2910(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  
  lVar3 = *(longlong *)(param_1 + 0xc0);
  if (param_2 != lVar3) {
    if (lVar3 != 0) {
      FUN_1812f1620(lVar3,param_1 + 0xb8);
    }
    *(longlong *)(param_1 + 0xc0) = param_2;
    if ((param_2 != 0) && (lVar3 = param_1 + 0xb8, lVar3 != 0)) {
      plVar4 = *(longlong **)(param_2 + 0x20);
      iVar2 = *(int *)(param_2 + 0x2c);
      plVar1 = plVar4 + iVar2;
      for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
        if (lVar3 == *plVar4) goto LAB_1812f29b6;
      }
      if (*(int *)(param_2 + 0x28) < iVar2 + 1) {
        FUN_18047cb30(param_2 + 0x20,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)(param_2 + 0x2c);
      *(int *)(param_2 + 0x2c) = iVar2 + 1;
      *(longlong *)(*(longlong *)(param_2 + 0x20) + (longlong)iVar2 * 8) = lVar3;
    }
LAB_1812f29b6:
    FUN_1812f2510(param_1);
    FUN_181348f10(param_1 + 200);
  }
  return;
}



############ FUN_ 181319b80 size=194 ############

void FUN_181319b80(longlong param_1,uint param_2)

{
  void *_Dst;
  longlong lVar1;
  longlong lVar2;
  uint uVar3;
  
  if (param_2 < *(uint *)(param_1 + 0xf4)) {
    uVar3 = *(uint *)(param_1 + 0x108);
    if (param_2 == uVar3) {
      uVar3 = 0xffffffff;
    }
    else if ((int)param_2 < (int)uVar3) {
      uVar3 = uVar3 - 1;
    }
    lVar2 = 0;
    if (param_2 < *(uint *)(param_1 + 0xf4)) {
      lVar1 = *(longlong *)(param_1 + 0xe8);
      lVar2 = *(longlong *)(lVar1 + (longlong)(int)param_2 * 8);
      _Dst = (void *)(lVar1 + (longlong)(int)param_2 * 8);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)(int)((*(uint *)(param_1 + 0xf4) - param_2) + -1) << 3);
      *(int *)(param_1 + 0xf4) = *(int *)(param_1 + 0xf4) + -1;
    }
    if ((*(int *)(param_1 + 0xf4) * 2 < *(int *)(param_1 + 0xf0)) &&
       (*(int *)(param_1 + 0xf4) < *(int *)(param_1 + 0xf0))) {
      FUN_18047cb30((longlong *)(param_1 + 0xe8));
    }
    if (lVar2 != 0) {
      FUN_18051da50(lVar2);
    }
    FUN_181319980(param_1,uVar3);
    FUN_181319110(param_1);
  }
  return;
}



############ FUN_ 18131c970 size=306 ############

void FUN_18131c970(longlong param_1)

{
  void *_Dst;
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  longlong *plVar7;
  int iVar8;
  longlong *plVar9;
  
  lVar3 = *(longlong *)(param_1 + 0x18);
  if ((lVar3 != 0) && (lVar4 = *(longlong *)(param_1 + 0x138), lVar4 != lVar3)) {
    if (lVar4 != 0) {
      iVar8 = 0;
      iVar2 = *(int *)(lVar4 + 0x8c);
      lVar6 = 0;
      lVar5 = *(longlong *)(lVar4 + 0x80);
      if (0 < iVar2) {
        do {
          if (param_1 + 0xb0 == *(longlong *)(lVar5 + lVar6 * 8)) {
            _Dst = (void *)(lVar5 + (longlong)iVar8 * 8);
            memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar2 - iVar8) + -1) << 3);
            *(int *)(lVar4 + 0x8c) = *(int *)(lVar4 + 0x8c) + -1;
            iVar2 = *(int *)(lVar4 + 0x8c);
            iVar8 = 0;
            if (0 < iVar2 * 2) {
              iVar8 = iVar2 * 2;
            }
            if (iVar8 < *(int *)(lVar4 + 0x88)) {
              if (iVar2 < 8) {
                iVar2 = 8;
              }
              if (iVar2 < *(int *)(lVar4 + 0x88)) {
                FUN_18047cb30((longlong *)(lVar4 + 0x80));
              }
            }
            break;
          }
          iVar8 = iVar8 + 1;
          lVar6 = lVar6 + 1;
        } while (lVar6 < iVar2);
      }
    }
    *(longlong *)(param_1 + 0x138) = lVar3;
    param_1 = param_1 + 0xb0;
    if (param_1 != 0) {
      plVar9 = (longlong *)(lVar3 + 0x80);
      plVar7 = (longlong *)*plVar9;
      iVar2 = *(int *)(lVar3 + 0x8c);
      plVar1 = plVar7 + iVar2;
      for (; plVar7 != plVar1; plVar7 = plVar7 + 1) {
        if (param_1 == *plVar7) {
          return;
        }
      }
      if (*(int *)(lVar3 + 0x88) < iVar2 + 1) {
        FUN_18047cb30(plVar9,iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)(lVar3 + 0x8c);
      *(int *)(lVar3 + 0x8c) = iVar2 + 1;
      *(longlong *)(*plVar9 + (longlong)iVar2 * 8) = param_1;
    }
  }
  return;
}



############ FUN_ 18131e2f0 size=147 ############

void FUN_18131e2f0(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x14c);
  iVar4 = 0;
  lVar2 = *(longlong *)(param_1 + 0x140);
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x14c) = *(int *)(param_1 + 0x14c) + -1;
    iVar1 = *(int *)(param_1 + 0x14c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x148)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x148)) {
        FUN_18047cb30((longlong *)(param_1 + 0x140));
      }
    }
  }
  return;
}



############ FUN_ 18131e390 size=122 ############

void FUN_18131e390(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar1 = (longlong *)(param_1 + 0x140);
    plVar4 = (longlong *)*plVar1;
    iVar3 = *(int *)(param_1 + 0x14c);
    plVar2 = plVar4 + iVar3;
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x148) < iVar3 + 1) {
      FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x14c);
    *(int *)(param_1 + 0x14c) = iVar3 + 1;
    *(longlong *)(*plVar1 + (longlong)iVar3 * 8) = param_2;
  }
  return;
}



############ FUN_ 181323950 size=506 ############

void FUN_181323950(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  uint uVar4;
  void *_Src;
  longlong lVar5;
  longlong *plVar6;
  char cVar7;
  DWORD DVar8;
  longlong *plVar9;
  longlong lVar10;
  uint uVar11;
  int iVar12;
  longlong *plVar13;
  bool bVar14;
  longlong local_res10;
  longlong *local_50;
  undefined8 local_48;
  
  DVar8 = timeGetTime();
  if (DVar8 < DAT_1826737fc) {
    if (DVar8 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar8;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar8;
  }
  if (*(int *)(param_1 + 0x28) == 0) {
    *(DWORD *)(param_1 + 0x28) = DVar8;
  }
  iVar3 = *(int *)(param_1 + 0x24);
  _Src = *(void **)(param_1 + 0x18);
  local_50 = (longlong *)0x0;
  local_48 = 0;
  iVar12 = 0;
  if (0 < iVar3) {
    FUN_18047cb30(&local_50,iVar3 + 8 + iVar3 / 2 & 0xfffffff8);
    iVar12 = local_48._4_4_;
  }
  plVar13 = local_50;
  memcpy(local_50 + iVar12,_Src,(longlong)iVar3 << 3);
  local_48 = CONCAT44(iVar12 + iVar3,(undefined4)local_48);
  plVar2 = plVar13 + (iVar12 + iVar3);
  plVar6 = plVar13;
joined_r0x000181323a1b:
  if (plVar13 == plVar2) {
                    /* WARNING: Subroutine does not return */
    free(plVar6);
  }
  lVar5 = *plVar13;
  plVar9 = *(longlong **)(param_1 + 0x18);
  plVar6 = plVar9 + *(int *)(param_1 + 0x24);
  for (; plVar9 != plVar6; plVar9 = plVar9 + 1) {
    if (lVar5 == *plVar9) {
      cVar7 = FUN_1804f6a20();
      if (cVar7 == '\0') {
        uVar11 = 0;
        lVar10 = 0;
        uVar4 = *(uint *)(param_1 + 0x24);
        if ((int)uVar4 < 1) goto LAB_181323af9;
        plVar6 = *(longlong **)(param_1 + 0x18);
        plVar9 = plVar6;
        goto LAB_181323a82;
      }
      break;
    }
  }
  goto LAB_181323b2f;
  while( true ) {
    uVar11 = uVar11 + 1;
    lVar10 = lVar10 + 1;
    plVar9 = plVar9 + 1;
    if ((int)uVar4 <= (int)uVar11) break;
LAB_181323a82:
    if (lVar5 == *plVar9) {
      local_res10 = 0;
      if (uVar11 < uVar4) {
        local_res10 = plVar6[lVar10];
        memmove(plVar6 + (int)uVar11,plVar6 + (int)uVar11 + 1,
                (longlong)(int)((uVar4 - uVar11) + -1) << 3);
        *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
      }
      if ((*(int *)(param_1 + 0x24) * 2 < *(int *)(param_1 + 0x20)) &&
         (*(int *)(param_1 + 0x24) < *(int *)(param_1 + 0x20))) {
        FUN_18047cb30(param_1 + 0x18);
      }
      if (local_res10 != 0) {
        FUN_18051d990(local_res10);
      }
      break;
    }
  }
LAB_181323af9:
  if (*(char *)(param_1 + -8) != '\0') {
    piVar1 = (int *)(*(longlong *)(param_1 + -0x28) + 0x18);
    LOCK();
    bVar14 = *piVar1 == 0;
    if (bVar14) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar14) && (cVar7 = FUN_1812a6720(*(undefined8 *)(param_1 + -0x28)), cVar7 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + -0x28) + 0x18) = 0;
      UNLOCK();
    }
  }
LAB_181323b2f:
  plVar13 = plVar13 + 1;
  plVar6 = local_50;
  goto joined_r0x000181323a1b;
}



############ FUN_ 1813261e0 size=231 ############

void FUN_1813261e0(longlong param_1,undefined8 *param_2)

{
  char cVar1;
  int iVar2;
  longlong lVar3;
  undefined1 local_58 [8];
  longlong local_50;
  undefined8 local_48;
  void *local_40;
  undefined8 local_38;
  undefined8 local_30;
  
  *param_2 = 0;
  param_2[1] = 0;
  local_58[0] = 1;
  local_50 = 0;
  local_48 = 0;
  local_40 = (void *)0x0;
  local_38 = 0;
  local_30 = 0;
  FUN_1804af790(&local_50,8);
  lVar3 = (longlong)local_48._4_4_;
  local_48 = CONCAT44(local_48._4_4_ + 1,(undefined4)local_48);
  *(undefined4 *)(local_50 + lVar3 * 4) = 0;
  iVar2 = local_38._4_4_ + 1;
  if ((int)local_38 < iVar2) {
    if (iVar2 < 0) {
      iVar2 = local_38._4_4_ + 2;
    }
    FUN_18047cb30(&local_40,local_38._4_4_ + 9 + (iVar2 >> 1) & 0xfffffff8);
  }
  lVar3 = (longlong)local_38._4_4_;
  local_38 = CONCAT44(local_38._4_4_ + 1,(int)local_38);
  *(longlong *)((longlong)local_40 + lVar3 * 8) = param_1 + 0x1f0;
  cVar1 = FUN_1812efb00(local_58);
  while (cVar1 != '\0') {
    cVar1 = FUN_1812efb00(local_58);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 181336080 size=232 ############

void FUN_181336080(longlong param_1,undefined8 param_2,undefined4 param_3)

{
  void *_Dst;
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  
  lVar1 = *(longlong *)(param_1 + 0x180);
  *(undefined4 *)(param_1 + 0x19c) = param_3;
  *(undefined1 *)(param_1 + 0x1c6) = 0;
  if (lVar1 != 0) {
    lVar3 = *(longlong *)(param_1 + 0x170);
    if (lVar3 != 0) {
      lVar3 = lVar3 + 0x18;
    }
    iVar5 = *(int *)(lVar1 + 0x34);
    iVar4 = 0;
    lVar2 = 0;
    if (0 < iVar5) {
      do {
        if (lVar3 == *(longlong *)(*(longlong *)(lVar1 + 0x28) + lVar2 * 8)) {
          _Dst = (void *)(*(longlong *)(lVar1 + 0x28) + (longlong)iVar4 * 8);
          memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar5 - iVar4) + -1) << 3);
          *(int *)(lVar1 + 0x34) = *(int *)(lVar1 + 0x34) + -1;
          iVar5 = *(int *)(lVar1 + 0x34);
          iVar4 = 0;
          if (0 < iVar5 * 2) {
            iVar4 = iVar5 * 2;
          }
          if (iVar4 < *(int *)(lVar1 + 0x30)) {
            if (iVar5 < 8) {
              iVar5 = 8;
            }
            if (iVar5 < *(int *)(lVar1 + 0x30)) {
              FUN_18047cb30(lVar1 + 0x28);
            }
          }
          break;
        }
        iVar4 = iVar4 + 1;
        lVar2 = lVar2 + 1;
      } while (lVar2 < iVar5);
    }
    *(undefined8 *)(param_1 + 0x180) = 0;
  }
  if (*(longlong *)(param_1 + 0x180) == 0) {
    FUN_18133e970(param_1,1);
    return;
  }
  FUN_181335fc0();
  return;
}



############ FUN_ 18133b130 size=336 ############

void FUN_18133b130(longlong param_1)

{
  int *piVar1;
  void *_Dst;
  undefined8 *puVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined8 uVar6;
  longlong lVar7;
  uint uVar8;
  longlong lVar9;
  longlong lVar10;
  undefined8 *puVar11;
  undefined8 *local_res8;
  undefined8 *local_res10;
  
  uVar8 = *(int *)(param_1 + 0x24) - 1;
  if (-1 < (int)uVar8) {
    lVar7 = (longlong)(int)uVar8 * 8;
    lVar10 = lVar7;
    do {
      lVar9 = *(longlong *)(param_1 + 0x18);
      puVar2 = *(undefined8 **)(lVar10 + lVar9);
      if (*(char *)((longlong)puVar2 + 0x5c) == '\0') {
        puVar11 = (undefined8 *)0x0;
        if (uVar8 < *(uint *)(param_1 + 0x24)) {
          _Dst = (void *)(lVar9 + lVar7);
          memmove(_Dst,(void *)((longlong)_Dst + 8),
                  (longlong)(int)((*(uint *)(param_1 + 0x24) - uVar8) + -1) << 3);
          *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
          puVar11 = puVar2;
          if ((*(int *)(param_1 + 0x24) * 2 < *(int *)(param_1 + 0x20)) &&
             (*(int *)(param_1 + 0x24) < *(int *)(param_1 + 0x20))) {
            FUN_18047cb30((longlong *)(param_1 + 0x18));
          }
        }
        if (*(char *)((longlong)puVar2 + 0x5d) == '\0') {
          uVar6 = 0;
        }
        else {
          uVar6 = puVar2[8];
        }
        local_res10 = puVar11;
        FUN_1804de690(&local_res8,uVar6);
        iVar5 = *(int *)((longlong)puVar2 + 0x54) + -1;
        lVar9 = (longlong)iVar5;
        if (-1 < iVar5) {
          do {
            plVar3 = *(longlong **)(puVar2[9] + lVar9 * 8);
            (**(code **)(*plVar3 + 8))(plVar3,*(undefined4 *)(puVar2 + 0xb));
            lVar9 = lVar9 + -1;
          } while (-1 < lVar9);
        }
        puVar2 = local_res8;
        if ((local_res8 != (undefined8 *)0x0) &&
           (puVar4 = (undefined8 *)local_res8[2], puVar4 != (undefined8 *)0x0)) {
          (**(code **)*puVar4)(puVar4,1);
        }
        if (puVar2 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar2 + 1);
          iVar5 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar5 == 1) {
            (**(code **)*local_res8)(local_res8,1);
          }
        }
        if (puVar11 != (undefined8 *)0x0) {
          (**(code **)*puVar11)(puVar11,1);
        }
      }
      lVar7 = lVar7 + -8;
      lVar10 = lVar10 + -8;
      uVar8 = uVar8 - 1;
    } while (-1 < (int)uVar8);
  }
  return;
}



############ FUN_ 18133bfb0 size=144 ############

void FUN_18133bfb0(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x54);
  lVar2 = *(longlong *)(param_1 + 0x48);
  iVar4 = 0;
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + -1;
    iVar1 = *(int *)(param_1 + 0x54);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x50)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x50)) {
        FUN_18047cb30((longlong *)(param_1 + 0x48));
      }
    }
  }
  return;
}



############ FUN_ 18133c3c0 size=108 ############

void FUN_18133c3c0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  plVar3 = *(longlong **)(param_1 + 0x58);
  iVar2 = *(int *)(param_1 + 100);
  plVar1 = plVar3 + iVar2;
  while( true ) {
    if (plVar3 == plVar1) {
      if (*(int *)(param_1 + 0x60) < iVar2 + 1) {
        FUN_18047cb30((longlong *)(param_1 + 0x58),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
      }
      iVar2 = *(int *)(param_1 + 100);
      *(int *)(param_1 + 100) = iVar2 + 1;
      *(longlong *)(*(longlong *)(param_1 + 0x58) + (longlong)iVar2 * 8) = param_2;
      return;
    }
    if (param_2 == *plVar3) break;
    plVar3 = plVar3 + 1;
  }
  return;
}



############ FUN_ 181346d50 size=198 ############

void FUN_181346d50(longlong param_1,longlong *param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x18c) + 1;
  if (*(int *)(param_1 + 0x188) < iVar1) {
    FUN_18047cb30((longlong *)(param_1 + 0x180),
                  *(int *)(param_1 + 0x18c) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)(param_1 + 0x18c);
  *(int *)(param_1 + 0x18c) = iVar1 + 1;
  *(longlong **)(*(longlong *)(param_1 + 0x180) + (longlong)iVar1 * 8) = param_2;
  iVar1 = *(int *)(param_1 + 0x1ac) + 1;
  if (*(int *)(param_1 + 0x1a8) < iVar1) {
    FUN_18047cb30((longlong *)(param_1 + 0x1a0),
                  *(int *)(param_1 + 0x1ac) + 9 + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)(param_1 + 0x1ac);
  *(int *)(param_1 + 0x1ac) = iVar1 + 1;
  *(longlong **)(*(longlong *)(param_1 + 0x1a0) + (longlong)iVar1 * 8) = param_2;
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 0x58))(param_2,1);
    FUN_181343cc0(param_1,param_2,0xffffffff);
  }
  FUN_1812d3dc0(param_1,0);
  return;
}



############ FUN_ 181347d30 size=147 ############

void FUN_181347d30(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x16c);
  iVar4 = 0;
  lVar2 = *(longlong *)(param_1 + 0x160);
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x16c) = *(int *)(param_1 + 0x16c) + -1;
    iVar1 = *(int *)(param_1 + 0x16c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x168)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x168)) {
        FUN_18047cb30((longlong *)(param_1 + 0x160));
      }
    }
  }
  return;
}



############ FUN_ 181347dd0 size=122 ############

void FUN_181347dd0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar1 = (longlong *)(param_1 + 0x160);
    plVar4 = (longlong *)*plVar1;
    iVar3 = *(int *)(param_1 + 0x16c);
    plVar2 = plVar4 + iVar3;
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x168) < iVar3 + 1) {
      FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x16c);
    *(int *)(param_1 + 0x16c) = iVar3 + 1;
    *(longlong *)(*plVar1 + (longlong)iVar3 * 8) = param_2;
  }
  return;
}



############ FUN_ 181349280 size=147 ############

void FUN_181349280(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x16c);
  iVar4 = 0;
  lVar2 = *(longlong *)(param_1 + 0x160);
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x16c) = *(int *)(param_1 + 0x16c) + -1;
    iVar1 = *(int *)(param_1 + 0x16c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x168)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x168)) {
        FUN_18047cb30((longlong *)(param_1 + 0x160));
      }
    }
  }
  return;
}



############ FUN_ 1813499a0 size=149 ############

void FUN_1813499a0(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  lVar2 = *(longlong *)(param_1 + 0x200);
  iVar4 = 0;
  lVar3 = 0;
  iVar1 = *(int *)(lVar2 + 0x34);
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(*(longlong *)(lVar2 + 0x28) + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(*(longlong *)(lVar2 + 0x28) + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(lVar2 + 0x34) = *(int *)(lVar2 + 0x34) + -1;
    iVar1 = *(int *)(lVar2 + 0x34);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(lVar2 + 0x30)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(lVar2 + 0x30)) {
        FUN_18047cb30(lVar2 + 0x28);
      }
    }
  }
  return;
}



############ FUN_ 18134aca0 size=147 ############

void FUN_18134aca0(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x8c);
  iVar4 = 0;
  lVar2 = *(longlong *)(param_1 + 0x80);
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x8c) = *(int *)(param_1 + 0x8c) + -1;
    iVar1 = *(int *)(param_1 + 0x8c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x88)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x88)) {
        FUN_18047cb30((longlong *)(param_1 + 0x80));
      }
    }
  }
  return;
}



############ FUN_ 18134ad40 size=122 ############

void FUN_18134ad40(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  
  if (param_2 != 0) {
    plVar1 = (longlong *)(param_1 + 0x80);
    plVar4 = (longlong *)*plVar1;
    iVar3 = *(int *)(param_1 + 0x8c);
    plVar2 = plVar4 + iVar3;
    for (; plVar4 != plVar2; plVar4 = plVar4 + 1) {
      if (param_2 == *plVar4) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x88) < iVar3 + 1) {
      FUN_18047cb30(plVar1,iVar3 + 9 + (iVar3 + 1) / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)(param_1 + 0x8c);
    *(int *)(param_1 + 0x8c) = iVar3 + 1;
    *(longlong *)(*plVar1 + (longlong)iVar3 * 8) = param_2;
  }
  return;
}



############ FUN_ 18134fb90 size=296 ############

void FUN_18134fb90(longlong param_1)

{
  int iVar1;
  ulonglong *puVar2;
  undefined8 *puVar3;
  uint uVar4;
  ulonglong *puVar5;
  ulonglong *puVar6;
  ulonglong *puVar7;
  
  if (0 < *(int *)(param_1 + 0x6c)) {
    puVar6 = (ulonglong *)0x0;
    do {
      if (*(int *)(param_1 + 0x60) <= *(int *)(param_1 + 100)) {
        return;
      }
      if (*(int *)(param_1 + 0x44) <= *(int *)(param_1 + 0x68)) {
        return;
      }
      uVar4 = 0;
      puVar2 = puVar6;
      if (0 < *(int *)(param_1 + 0x44)) {
        puVar2 = (ulonglong *)**(undefined8 **)(param_1 + 0x38);
      }
      puVar3 = (undefined8 *)*puVar2;
      puVar7 = (ulonglong *)
               ((ulonglong)
                ((longlong)(puVar3 + *(int *)((longlong)puVar2 + 0xc)) + (7 - (longlong)puVar3)) >>
               3);
      if (puVar3 + *(int *)((longlong)puVar2 + 0xc) < puVar3) {
        puVar7 = puVar6;
      }
      puVar2 = puVar6;
      puVar5 = puVar6;
      if (puVar7 != (ulonglong *)0x0) {
        do {
          iVar1 = (**(code **)(*(longlong *)*puVar3 + 0x18))();
          puVar5 = (ulonglong *)((longlong)puVar5 + 1);
          puVar3 = puVar3 + 1;
          uVar4 = (int)puVar2 + iVar1;
          puVar2 = (ulonglong *)(ulonglong)uVar4;
        } while (puVar5 != puVar7);
      }
      *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - uVar4;
      puVar2 = puVar6;
      if (*(int *)(param_1 + 0x44) != 0) {
        puVar3 = *(undefined8 **)(param_1 + 0x38);
        puVar2 = (ulonglong *)*puVar3;
        memmove(puVar3,puVar3 + 1,(longlong)(*(int *)(param_1 + 0x44) + -1) << 3);
        *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + -1;
      }
      if ((*(int *)(param_1 + 0x44) * 2 < *(int *)(param_1 + 0x40)) &&
         (*(int *)(param_1 + 0x44) < *(int *)(param_1 + 0x40))) {
        FUN_18047cb30(param_1 + 0x38);
      }
      if (puVar2 != (ulonglong *)0x0) {
        FUN_180528290(puVar2);
      }
      *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
    } while (0 < *(int *)(param_1 + 0x6c));
  }
  return;
}



############ FUN_ 1813afc80 size=93 ############

void FUN_1813afc80(longlong *param_1,longlong param_2,char param_3)

{
  int iVar1;
  
  if (param_2 != 0) {
    if (param_3 != '\0') {
      *(undefined4 *)(param_1 + 2) = *(undefined4 *)((longlong)param_1 + 0xc);
    }
    iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
    if ((int)param_1[1] < iVar1) {
      FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
    }
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
    *(longlong *)(*param_1 + (longlong)iVar1 * 8) = param_2;
  }
  return;
}



############ FUN_ 1813b6000 size=113 ############

void FUN_1813b6000(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  
  if (param_2 != 0) {
    plVar3 = *(longlong **)(param_1 + 0x10);
    iVar2 = *(int *)(param_1 + 0x1c);
    plVar1 = plVar3 + iVar2;
    for (; plVar3 != plVar1; plVar3 = plVar3 + 1) {
      if (param_2 == *plVar3) {
        return;
      }
    }
    if (*(int *)(param_1 + 0x18) < iVar2 + 1) {
      FUN_18047cb30((longlong *)(param_1 + 0x10),iVar2 + 9 + (iVar2 + 1) / 2 & 0xfffffff8);
    }
    iVar2 = *(int *)(param_1 + 0x1c);
    *(int *)(param_1 + 0x1c) = iVar2 + 1;
    *(longlong *)(*(longlong *)(param_1 + 0x10) + (longlong)iVar2 * 8) = param_2;
  }
  return;
}



############ FUN_ 1813ba1a0 size=82 ############

void FUN_1813ba1a0(longlong *param_1,longlong param_2)

{
  int iVar1;
  
  if (param_2 != 0) {
    iVar1 = *(int *)((longlong)param_1 + 0xc) + 1;
    if ((int)param_1[1] < iVar1) {
      FUN_18047cb30(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8);
    }
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
    *(longlong *)(*param_1 + (longlong)iVar1 * 8) = param_2;
  }
  return;
}



############ FUN_ 1813c6e30 size=147 ############

void FUN_1813c6e30(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0xb4);
  iVar4 = 0;
  lVar2 = *(longlong *)(param_1 + 0xa8);
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0xb4) = *(int *)(param_1 + 0xb4) + -1;
    iVar1 = *(int *)(param_1 + 0xb4);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0xb0)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0xb0)) {
        FUN_18047cb30((longlong *)(param_1 + 0xa8));
      }
    }
  }
  return;
}



############ FUN_ 181414160 size=147 ############

void FUN_181414160(longlong param_1,longlong param_2)

{
  void *_Dst;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0x24011c);
  iVar4 = 0;
  lVar2 = *(longlong *)(param_1 + 0x240110);
  lVar3 = 0;
  if (0 < iVar1) {
    while (param_2 != *(longlong *)(lVar2 + lVar3 * 8)) {
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 1;
      if (iVar1 <= lVar3) {
        return;
      }
    }
    _Dst = (void *)(lVar2 + (longlong)iVar4 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),(longlong)((iVar1 - iVar4) + -1) << 3);
    *(int *)(param_1 + 0x24011c) = *(int *)(param_1 + 0x24011c) + -1;
    iVar1 = *(int *)(param_1 + 0x24011c);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 0x240118)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 0x240118)) {
        FUN_18047cb30((longlong *)(param_1 + 0x240110));
      }
    }
  }
  return;
}



############ FUN_ 181451c70 size=257 ############

void FUN_181451c70(longlong param_1,longlong param_2)

{
  uint uVar1;
  longlong *plVar2;
  undefined4 uVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  uint uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  
  plVar2 = *(longlong **)(param_1 + 0x40);
  plVar4 = plVar2;
  do {
    if (plVar4 == plVar2 + *(int *)(param_1 + 0x4c)) {
      uVar3 = 0xffffffff;
LAB_181451cb3:
      FUN_181343a90(param_1,uVar3,1);
      puVar8 = (undefined8 *)0x0;
      uVar1 = *(uint *)(param_1 + 0x11c);
      if (0 < (int)uVar1) {
        plVar2 = *(longlong **)(param_1 + 0x110);
        plVar4 = plVar2;
        puVar5 = puVar8;
        puVar7 = puVar8;
        while (uVar6 = (uint)puVar7, param_2 != *plVar4) {
          puVar7 = (undefined8 *)(ulonglong)(uVar6 + 1);
          puVar5 = (undefined8 *)((longlong)puVar5 + 1);
          plVar4 = plVar4 + 1;
          if ((longlong)(int)uVar1 <= (longlong)puVar5) {
            return;
          }
        }
        if (uVar6 < uVar1) {
          puVar8 = (undefined8 *)plVar2[(int)uVar6];
          memmove(plVar2 + (int)uVar6,plVar2 + (int)uVar6 + 1,
                  (longlong)(int)((uVar1 - uVar6) + -1) << 3);
          *(int *)(param_1 + 0x11c) = *(int *)(param_1 + 0x11c) + -1;
        }
        if ((*(int *)(param_1 + 0x11c) * 2 < *(int *)(param_1 + 0x118)) &&
           (*(int *)(param_1 + 0x11c) < *(int *)(param_1 + 0x118))) {
          FUN_18047cb30((longlong *)(param_1 + 0x110));
        }
        if (puVar8 != (undefined8 *)0x0) {
          (**(code **)*puVar8)(puVar8,1);
        }
      }
      return;
    }
    if (param_2 == *plVar4) {
      uVar3 = (undefined4)((longlong)plVar4 - (longlong)plVar2 >> 3);
      goto LAB_181451cb3;
    }
    plVar4 = plVar4 + 1;
  } while( true );
}



############ FUN_ 18146fca0 size=549 ############

void FUN_18146fca0(longlong param_1,undefined8 param_2,longlong *param_3)

{
  uint uVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  undefined4 uVar6;
  uint *puVar7;
  uint uVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  longlong local_res20;
  
  iVar4 = FUN_18048cbc0(*param_3,"delete preset");
  if (iVar4 == 0) {
    if (*(char *)(param_1 + 0x398) == '\0') {
      FUN_18049c4e0(&local_res20,"click to confirm");
      FUN_181347ea0(*(undefined8 *)(param_1 + 0x390),&local_res20);
      puVar7 = (uint *)(local_res20 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      *(undefined1 *)(param_1 + 0x398) = 1;
      FUN_1812a77d0(param_1 + 8,2000);
    }
    else {
      plVar2 = *(longlong **)(param_1 + 0x360);
      lVar3 = *(longlong *)(*(longlong *)(*(longlong *)(param_1 + -0x20) + 0x130) + 0x2c0);
      if (*(code **)(*plVar2 + 0x18) == FUN_181176190) {
        FUN_181244b10(plVar2 + 4);
      }
      else {
        (**(code **)(*plVar2 + 0x18))(plVar2);
      }
      FUN_181169240(*(undefined8 *)(lVar3 + 0x30),plVar2);
      lVar3 = *(longlong *)(param_1 + -0x20);
      plVar2 = *(longlong **)(lVar3 + 0x40);
      for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)(lVar3 + 0x4c); plVar5 = plVar5 + 1) {
        if (param_1 + -0xe8 == *plVar5) {
          uVar6 = (undefined4)((longlong)plVar5 - (longlong)plVar2 >> 3);
          goto LAB_18146fd60;
        }
      }
      uVar6 = 0xffffffff;
LAB_18146fd60:
      FUN_181343a90(lVar3,uVar6,1);
      puVar10 = (undefined8 *)0x0;
      uVar1 = *(uint *)(lVar3 + 0x11c);
      if ((int)uVar1 < 1) {
LAB_18146fe1c:
        (**(code **)(**(longlong **)(param_1 + -0x20) + 0x108))();
      }
      else {
        plVar2 = *(longlong **)(lVar3 + 0x110);
        plVar5 = plVar2;
        puVar9 = puVar10;
        do {
          uVar8 = (uint)puVar9;
          if (param_1 + -0xe8 == *plVar5) {
            if (uVar8 < uVar1) {
              puVar10 = (undefined8 *)plVar2[(int)uVar8];
              memmove(plVar2 + (int)uVar8,plVar2 + (int)uVar8 + 1,
                      (longlong)(int)((uVar1 - uVar8) + -1) << 3);
              *(int *)(lVar3 + 0x11c) = *(int *)(lVar3 + 0x11c) + -1;
            }
            if ((*(int *)(lVar3 + 0x11c) * 2 < *(int *)(lVar3 + 0x118)) &&
               (*(int *)(lVar3 + 0x11c) < *(int *)(lVar3 + 0x118))) {
              FUN_18047cb30((longlong *)(lVar3 + 0x110));
            }
            if (puVar10 != (undefined8 *)0x0) {
              (**(code **)*puVar10)(puVar10,1);
            }
            goto LAB_18146fe1c;
          }
          puVar9 = (undefined8 *)(ulonglong)(uVar8 + 1);
          plVar5 = plVar5 + 1;
        } while ((int)(uVar8 + 1) < (int)uVar1);
        (**(code **)(**(longlong **)(param_1 + -0x20) + 0x108))();
      }
    }
  }
  puVar7 = (uint *)(*param_3 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return;
}



############ FUN_ 18158d050 size=262 ############

void FUN_18158d050(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int iVar2;
  void *_Src;
  longlong *_Memory;
  longlong *plVar3;
  longlong lVar4;
  int iVar5;
  longlong *plVar6;
  longlong *local_20;
  undefined8 local_18;
  
  local_20 = (longlong *)0x0;
  local_18 = 0;
  iVar2 = *(int *)(param_1 + 0x1bc);
  _Src = *(void **)(param_1 + 0x1b0);
  iVar5 = 0;
  if (0 < iVar2) {
    FUN_18047cb30(&local_20,iVar2 + 8 + iVar2 / 2 & 0xfffffff8,param_3,param_4,0xfffffffffffffffe);
    iVar5 = local_18._4_4_;
  }
  _Memory = local_20;
  memcpy(local_20 + iVar5,_Src,(longlong)iVar2 << 3);
  local_18 = CONCAT44(iVar5 + iVar2,(undefined4)local_18);
  plVar1 = _Memory + (iVar5 + iVar2);
  FUN_181130ef0(_Memory,plVar1);
  if (_Memory != plVar1) {
    plVar6 = _Memory;
    do {
      lVar4 = *plVar6;
      for (plVar3 = *(longlong **)(param_1 + 0x1b0);
          plVar3 != *(longlong **)(param_1 + 0x1b0) + *(int *)(param_1 + 0x1bc); plVar3 = plVar3 + 1
          ) {
        if (lVar4 == *plVar3) goto LAB_18158d129;
      }
      plVar6 = plVar6 + 1;
    } while (plVar6 != plVar1);
  }
  lVar4 = 0;
LAB_18158d129:
  FUN_181570670(param_1,lVar4);
                    /* WARNING: Could not recover jumptable at 0x00018158d14f. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(_Memory);
  return;
}



############ FUN_ 18049b4a0 size=101 ############

void FUN_18049b4a0(longlong *param_1,int param_2)

{
  void *_Dst;
  int iVar1;
  int iVar2;
  
  _Dst = (void *)(*param_1 + (longlong)param_2 * 8);
  memmove(_Dst,(void *)((longlong)_Dst + 8),
          (longlong)((*(int *)((longlong)param_1 + 0xc) - param_2) + -1) << 3);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  iVar2 = 0;
  if (0 < iVar1 * 2) {
    iVar2 = iVar1 * 2;
  }
  if (iVar2 < (int)param_1[1]) {
    if (iVar1 < 8) {
      iVar1 = 8;
    }
    if (iVar1 < (int)param_1[1]) {
      FUN_18047cb30(param_1);
      return;
    }
  }
  return;
}



############ FUN_ 1804af820 size=109 ############

void FUN_1804af820(longlong *param_1,uint param_2)

{
  void *_Dst;
  int iVar1;
  int iVar2;
  
  if (param_2 < *(uint *)((longlong)param_1 + 0xc)) {
    _Dst = (void *)(*param_1 + (longlong)(int)param_2 * 8);
    memmove(_Dst,(void *)((longlong)_Dst + 8),
            (longlong)(int)((*(uint *)((longlong)param_1 + 0xc) - param_2) + -1) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    iVar2 = 0;
    if (0 < iVar1 * 2) {
      iVar2 = iVar1 * 2;
    }
    if (iVar2 < (int)param_1[1]) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < (int)param_1[1]) {
        FUN_18047cb30(param_1);
        return;
      }
    }
  }
  return;
}



############ FUN_ 18051b040 size=131 ############

void FUN_18051b040(longlong *param_1,longlong param_2)

{
  uint uVar1;
  longlong *plVar2;
  ulonglong uVar3;
  uint uVar4;
  ulonglong uVar5;
  
  uVar1 = *(uint *)((longlong)param_1 + 0xc);
  uVar3 = 0;
  if (0 < (int)uVar1) {
    plVar2 = (longlong *)*param_1;
    uVar5 = uVar3;
    while (uVar4 = (uint)uVar5, param_2 != *plVar2) {
      uVar5 = (ulonglong)(uVar4 + 1);
      uVar3 = uVar3 + 1;
      plVar2 = plVar2 + 1;
      if ((longlong)(int)uVar1 <= (longlong)uVar3) {
        return;
      }
    }
    if (uVar4 < uVar1) {
      plVar2 = (longlong *)*param_1 + (int)uVar4;
      memmove(plVar2,plVar2 + 1,(longlong)(int)((uVar1 - uVar4) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    }
    if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
       (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
      FUN_18047cb30(param_1);
      return;
    }
  }
  return;
}



############ FUN_ 180527f10 size=135 ############

void FUN_180527f10(longlong *param_1,uint param_2)

{
  int *piVar1;
  longlong *_Dst;
  int iVar2;
  undefined8 *puVar3;
  
  if (param_2 < *(uint *)((longlong)param_1 + 0xc)) {
    _Dst = (longlong *)(*param_1 + (longlong)(int)param_2 * 8);
    puVar3 = (undefined8 *)*_Dst;
    memmove(_Dst,_Dst + 1,(longlong)(int)((*(uint *)((longlong)param_1 + 0xc) - param_2) + -1) << 3)
    ;
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
    if ((*(int *)((longlong)param_1 + 0xc) * 2 < (int)param_1[1]) &&
       (*(int *)((longlong)param_1 + 0xc) < (int)param_1[1])) {
      FUN_18047cb30(param_1);
      return;
    }
  }
  return;
}



############ FUN_ 181199070 size=124 ############

void FUN_181199070(longlong param_1)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  puVar2 = *(undefined8 **)(param_1 + 0x38);
  puVar3 = (undefined8 *)*puVar2;
  while (puVar3 != puVar2) {
    FUN_1811c4880(puVar3[5]);
    puVar4 = (undefined8 *)puVar3[2];
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      cVar1 = *(char *)((longlong)*puVar4 + 0x19);
      puVar3 = puVar4;
      puVar4 = (undefined8 *)*puVar4;
      while (cVar1 == '\0') {
        cVar1 = *(char *)((longlong)*puVar4 + 0x19);
        puVar3 = puVar4;
        puVar4 = (undefined8 *)*puVar4;
      }
    }
    else {
      cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
      puVar5 = (undefined8 *)puVar3[1];
      puVar4 = puVar3;
      while ((puVar3 = puVar5, cVar1 == '\0' && (puVar4 == (undefined8 *)puVar3[2]))) {
        cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
        puVar5 = (undefined8 *)puVar3[1];
        puVar4 = puVar3;
      }
    }
  }
  return;
}



############ FUN_ 18135fc40 size=206 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18135fc40(longlong param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined1 auStack_68 [48];
  undefined8 local_38 [4];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_38[0] = FUN_18113e800(param_1,0x62aa0b27,&DAT_1824abf40,0x12);
  local_38[1] = FUN_18113e800();
  local_38[2] = FUN_18113e800();
  local_38[3] = FUN_18113e800();
  puVar2 = local_38;
  lVar3 = 4;
  do {
    uVar1 = FUN_18119aa60(param_1 + 0x178,*puVar2);
    FUN_1811c4880(uVar1);
    puVar2 = puVar2 + 1;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
}



############ FUN_ 181215c10 size=113 ############

void FUN_181215c10(longlong param_1)

{
  int iVar1;
  
  iVar1 = _Mtx_lock(param_1 + 8);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  LOCK();
  *(undefined1 *)(param_1 + 0xa0) = 1;
  UNLOCK();
  iVar1 = _Cnd_broadcast(param_1 + 0x58);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  iVar1 = _Mtx_unlock(param_1 + 8);
  if (iVar1 != 0) {
    std::_Throw_C_error(iVar1);
  }
  return;
}



############ FUN_ 1804d1fe0 size=278 ############

longlong FUN_1804d1fe0(longlong *param_1,void *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  void *_Src;
  undefined8 uVar3;
  longlong lVar4;
  void *_Dst;
  ulonglong uVar5;
  void *_Dst_00;
  ulonglong uVar6;
  size_t _Size;
  
  lVar2 = *param_1;
  lVar4 = param_1[1] - lVar2 >> 4;
  if (lVar4 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar5 = param_1[2] - lVar2 >> 4;
  uVar1 = lVar4 + 1;
  uVar6 = uVar1;
  if ((uVar5 <= 0xfffffffffffffff - (uVar5 >> 1)) && (uVar6 = (uVar5 >> 1) + uVar5, uVar6 < uVar1))
  {
    uVar6 = uVar1;
  }
  lVar4 = uVar6 << 4;
  if (0xfffffffffffffff < uVar6) {
    lVar4 = -1;
  }
  _Dst = (void *)FUN_180480500(lVar4);
  uVar3 = param_3[1];
  uVar5 = (longlong)param_2 - lVar2 & 0xfffffffffffffff0;
  *(undefined8 *)(uVar5 + (longlong)_Dst) = *param_3;
  ((undefined8 *)(uVar5 + (longlong)_Dst))[1] = uVar3;
  _Src = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)_Src;
    _Dst_00 = _Dst;
    param_2 = _Src;
  }
  else {
    memmove(_Dst,_Src,(longlong)param_2 - (longlong)_Src);
    _Size = param_1[1] - (longlong)param_2;
    _Dst_00 = (void *)(uVar5 + 0x10 + (longlong)_Dst);
  }
  memmove(_Dst_00,param_2,_Size);
  FUN_1804d1da0(param_1,_Dst,uVar1,uVar6);
  return *param_1 + uVar5;
}



############ FUN_ 1804d07a0 size=187 ############

void FUN_1804d07a0(longlong param_1,ulonglong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong lVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  int iStack_10;
  
  uVar8 = *(longlong *)(param_1 + 0x220) - *(longlong *)(param_1 + 0x218) >> 4;
  if (param_2 < uVar8 - 1) {
    uVar9 = param_2 + 1;
    plVar1 = (longlong *)(param_2 * 0x10 + *(longlong *)(param_1 + 0x218));
    lVar3 = *plVar1;
    lVar4 = plVar1[1];
    if (uVar9 != uVar8) {
      iStack_10 = (int)lVar4;
      lVar6 = uVar9 * 0x10;
      lVar7 = param_2 * 0x10;
      do {
        lVar2 = *(longlong *)(param_1 + 0x218);
        if (iStack_10 <= *(int *)(lVar6 + 8 + lVar2)) break;
        uVar5 = ((undefined8 *)(lVar6 + lVar2))[1];
        *(undefined8 *)(lVar7 + lVar2) = *(undefined8 *)(lVar6 + lVar2);
        ((undefined8 *)(lVar7 + lVar2))[1] = uVar5;
        *(ulonglong *)(*(longlong *)(lVar7 + *(longlong *)(param_1 + 0x218)) + 8) = param_2;
        uVar10 = uVar9 + 1;
        lVar6 = lVar7 + 0x20;
        lVar7 = lVar7 + 0x10;
        param_2 = uVar9;
        uVar9 = uVar10;
      } while (uVar10 != uVar8);
    }
    plVar1 = (longlong *)(*(longlong *)(param_1 + 0x218) + param_2 * 0x10);
    *plVar1 = lVar3;
    plVar1[1] = lVar4;
    *(ulonglong *)(lVar3 + 8) = param_2;
  }
  return;
}



############ FUN_ 1804d0200 size=321 ############

undefined8 *
FUN_1804d0200(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  uint uVar2;
  char cVar3;
  uint *_Memory;
  bool bVar4;
  longlong local_res10;
  
  FUN_18049c4e0(&local_res10,"JUCE Timer",param_3,param_4,0xfffffffffffffffe);
  FUN_18122b770(param_1,&local_res10);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1812a7230(param_1 + 0x40);
  FUN_1812a59f0(param_1 + 0x41);
  *param_1 = juce::Timer::TimerThread::vftable;
  param_1[0x40] = juce::Timer::TimerThread::vftable;
  param_1[0x41] = juce::Timer::TimerThread::vftable;
  plVar1 = param_1 + 0x43;
  *plVar1 = 0;
  param_1[0x44] = 0;
  param_1[0x45] = 0;
  *(undefined1 *)(param_1 + 0x46) = 0;
  _Mtx_init_in_situ(param_1 + 0x47,2);
  _Cnd_init_in_situ(param_1 + 0x51);
  *(undefined1 *)(param_1 + 0x5a) = 0;
  if ((ulonglong)(param_1[0x45] - *plVar1 >> 4) < 0x20) {
    FUN_1804d1b70(plVar1);
  }
  LOCK();
  bVar4 = *(int *)(param_1[0x42] + 0x18) == 0;
  if (bVar4) {
    *(int *)(param_1[0x42] + 0x18) = 1;
  }
  UNLOCK();
  if ((bVar4) && (cVar3 = FUN_1812a6720(param_1[0x42]), cVar3 == '\0')) {
    LOCK();
    *(undefined4 *)(param_1[0x42] + 0x18) = 0;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 1804d0860 size=129 ############

void FUN_1804d0860(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong lVar7;
  int iStack_10;
  
  if (param_2 != 0) {
    lVar7 = param_2 * 0x10;
    plVar1 = (longlong *)(*(longlong *)(param_1 + 0x218) + lVar7);
    lVar4 = *plVar1;
    lVar5 = plVar1[1];
    iStack_10 = (int)lVar5;
    do {
      lVar3 = *(longlong *)(param_1 + 0x218);
      if (*(int *)(lVar3 + -8 + lVar7) <= iStack_10) break;
      puVar2 = (undefined8 *)(lVar3 + -0x10 + lVar7);
      uVar6 = puVar2[1];
      *(undefined8 *)(lVar3 + lVar7) = *puVar2;
      ((undefined8 *)(lVar3 + lVar7))[1] = uVar6;
      plVar1 = (longlong *)(*(longlong *)(param_1 + 0x218) + lVar7);
      lVar7 = lVar7 + -0x10;
      *(longlong *)(*plVar1 + 8) = param_2;
      param_2 = param_2 + -1;
    } while (param_2 != 0);
    plVar1 = (longlong *)(*(longlong *)(param_1 + 0x218) + param_2 * 0x10);
    *plVar1 = lVar4;
    plVar1[1] = lVar5;
    *(longlong *)(lVar4 + 8) = param_2;
  }
  return;
}



############ FUN_ 1804cf5b0 size=125 ############

void FUN_1804cf5b0(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)

{
  LONG_PTR LVar1;
  
  if ((param_2 == 0x219) && (((param_3 == 0x8000 || (param_3 == 0x8004)) || (param_3 == 7)))) {
    LVar1 = GetWindowLongPtrW(param_1,-0x15);
    FUN_1812a77d0(LVar1,500);
  }
                    /* WARNING: Could not recover jumptable at 0x0001804cf626. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  DefWindowProcW(param_1,param_2,param_3,param_4);
  return;
}



############ FUN_ 1804d9330 size=477 ############

void FUN_1804d9330(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  uint uVar2;
  char cVar3;
  char cVar4;
  uint *puVar5;
  uint *_Memory;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18;
  longlong *local_res20;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  pcVar1 = (char *)(param_1 + 0xfa6);
  if (*pcVar1 == '\0') {
    if (*(longlong *)(param_1 + 0xfa8) == 0) {
      cVar4 = *pcVar1;
      *pcVar1 = '\x01';
      cVar3 = FUN_1804d9510();
      if (cVar3 != '\0') {
        FUN_1812a77d0(param_1,0x14);
      }
      *pcVar1 = cVar4;
    }
    cVar4 = FUN_18134aa20(param_1 + 0x228,1);
    if (cVar4 == '\0') {
      *(undefined1 *)(param_1 + 0xfa5) = 1;
    }
    if (*(char *)(param_1 + 0xfa5) != '\0') {
      FUN_1804d9270(param_1);
      return;
    }
    FUN_18049c4e0(&local_res18,"Testing");
    FUN_1812344e0(&local_res8,&local_res18);
    puVar5 = (uint *)(local_res18 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    FUN_181232e20(&local_res8,&DAT_18249b9b0,&DAT_18249b9b3,param_4,uVar6,&local_res8);
    local_res10 = local_res8;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(local_res8 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    local_res20 = &local_res10;
    local_res20 = (longlong *)FUN_181232d30(&local_res10,param_1 + 0xf90);
    local_res20 = (longlong *)*local_res20;
    puVar5 = (uint *)(local_res20 + -2);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      *puVar5 = *puVar5 + 1;
      UNLOCK();
    }
    _Memory = (uint *)(local_res10 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    FUN_181347520(param_1 + 0x228,&local_res20);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  return;
}



############ FUN_ 1804e7920 size=676 ############

undefined8 *
FUN_1804e7920(undefined8 *param_1,longlong *param_2,undefined8 *param_3,undefined8 param_4,
             longlong *param_5,undefined8 param_6,undefined8 param_7)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  ulonglong uVar5;
  longlong *plVar6;
  undefined4 uVar7;
  ulonglong uVar8;
  undefined8 *local_res10;
  undefined8 *local_res18;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  uVar8 = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  uVar7 = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  param_1[0x17] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *param_1 = juce::DragAndDropContainer::DragImageComponent::vftable;
  param_1[0x16] = juce::DragAndDropContainer::DragImageComponent::vftable;
  local_res10 = (undefined8 *)0x0;
  plVar3 = (longlong *)*param_3;
  param_1[0x19] = plVar3;
  (**(code **)(*plVar3 + 0xb8))(plVar3,param_1 + 0x1a,param_3 + 1);
  local_res18 = param_1 + 0x1b;
  FUN_1804de690(local_res18,param_4);
  param_1[0x1c] = 0;
  lVar4 = *param_2;
  param_1[0x1d] = lVar4;
  if (lVar4 != 0) {
    LOCK();
    *(int *)(lVar4 + 8) = *(int *)(lVar4 + 8) + 1;
    UNLOCK();
  }
  param_1[0x1e] = param_6;
  uVar5 = uVar8;
  if (*(longlong *)(*param_5 + 0x48) != 0) {
    uVar5 = *(ulonglong *)(*(longlong *)(*param_5 + 0x48) + 0x10);
  }
  plVar3 = param_1 + 0x1f;
  FUN_1804de690(plVar3,uVar5);
  param_1[0x20] = 0;
  param_1[0x21] = param_7;
  *(undefined1 *)(param_1 + 0x22) = 0;
  param_1[0x23] = 0;
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(*param_5 + 0x10);
  *(undefined4 *)((longlong)param_1 + 0x124) = *(undefined4 *)(*param_5 + 0x14);
  lVar4 = param_1[0x1d];
  uVar5 = uVar8;
  if (lVar4 != 0) {
    uVar7 = *(undefined4 *)(lVar4 + 0x18);
    uVar5 = (ulonglong)*(uint *)(lVar4 + 0x14);
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 4),*(undefined4 *)((longlong)param_1 + 0x24),uVar5
                ,uVar7);
  uVar5 = uVar8;
  if (*plVar3 != 0) {
    uVar5 = *(ulonglong *)(*plVar3 + 0x10);
  }
  if (uVar5 == 0) {
    plVar6 = (longlong *)FUN_1804de690(&local_res10,param_4);
    local_res18 = (undefined8 *)*plVar3;
    *plVar3 = *plVar6;
    *plVar6 = (longlong)local_res18;
    if (local_res10 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res10 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res10)(local_res10,1);
      }
    }
  }
  if (*plVar3 != 0) {
    uVar8 = *(ulonglong *)(*plVar3 + 0x10);
  }
  FUN_181341570(uVar8,param_1,0);
  FUN_1812a77d0(param_1 + 0x16,200);
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  FUN_18134b0f0(param_1,1);
  return param_1;
}



############ FUN_ 1804e92f0 size=218 ############

undefined8 FUN_1804e92f0(longlong param_1)

{
  longlong *plVar1;
  char cVar2;
  char cVar3;
  
  plVar1 = *(longlong **)(param_1 + 8);
  if ((*(byte *)((longlong)plVar1 + 0xa9) & 0x10) != 0) {
    return 0;
  }
  if ((plVar1[3] != 0) && (cVar2 = FUN_18133eaa0(), cVar2 == '\0')) {
    return 0;
  }
  cVar2 = *(char *)((longlong)plVar1 + 0x1c4);
  cVar3 = FUN_181335e90(plVar1);
  *(char *)((longlong)plVar1 + 0x1c4) = cVar3;
  if (((-1 < (int)plVar1[0x31]) && (cVar3 != '\0')) && (cVar2 == '\0')) {
    FUN_1812a77d0(plVar1[0x2e]);
  }
  FUN_181336e60(plVar1);
  if (((*(byte *)((longlong)plVar1 + 0xa9) & 0x10) == 0) &&
     ((plVar1[3] == 0 || (cVar3 = FUN_18133eaa0(), cVar3 != '\0')))) {
    if (cVar2 == '\0') goto LAB_1804e93ac;
    if (*(char *)((longlong)plVar1 + 0x1c4) == '\0') {
      (**(code **)(*plVar1 + 0x180))(plVar1,&DAT_182673aec);
      return 1;
    }
  }
  if (cVar2 != '\0') {
    return 1;
  }
LAB_1804e93ac:
  if (*(char *)((longlong)plVar1 + 0x1c4) != '\0') {
    return 1;
  }
  return 0;
}



############ FUN_ 1812e08d0 size=98 ############

void FUN_1812e08d0(longlong param_1,int param_2)

{
  int iVar1;
  
  if (param_2 < 0) {
    param_2 = 0;
  }
  else {
    iVar1 = FUN_1812dbb90();
    if (iVar1 < param_2) {
      param_2 = iVar1;
    }
  }
  if (param_2 != *(int *)(param_1 + 0x2a4)) {
    *(int *)(param_1 + 0x2a4) = param_2;
    FUN_1812a77d0(*(longlong *)(param_1 + 0x1d0) + 0xb0,0x15e);
    FUN_1812e0240(param_1);
    FUN_1812e16d0(param_1);
  }
  return;
}



############ FUN_ 1804fc240 size=136 ############

void FUN_1804fc240(undefined8 param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  char cVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 local_res10 [3];
  
  local_res10[0] = *(undefined8 *)(param_2 + 0x50);
  lVar4 = FUN_1804fc4c0(param_1,local_res10);
  cVar3 = FUN_1804fc2d0(*(undefined8 *)(lVar4 + 0x18));
  if (cVar3 != '\0') {
    FUN_1812a77d0(lVar4,0x32);
    uVar2 = *(undefined8 *)(param_2 + 8);
    local_res10[0] = uVar2;
    for (lVar1 = *(longlong *)(param_2 + 0x30); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
      puVar5 = (undefined8 *)FUN_18051e290(local_res10,lVar1,uVar2);
      uVar2 = *puVar5;
    }
    FUN_1804fe350(lVar4);
  }
  return;
}



############ FUN_ 1805041a0 size=510 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805041a0(longlong param_1)

{
  int *piVar1;
  undefined8 *puVar2;
  bool bVar3;
  char cVar4;
  bool bVar5;
  double dVar6;
  undefined1 auStack_58 [32];
  undefined4 local_38;
  undefined8 local_30;
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_30 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  bVar5 = false;
  local_38 = 0;
  if ((((*(byte *)(*(longlong *)(param_1 + 0x18) + 0xa9) & 0x10) != 0) ||
      ((((*(longlong *)(*(longlong *)(param_1 + 0x18) + 0x18) != 0 &&
         (cVar4 = FUN_18133eaa0(), cVar4 == '\0')) || (*(char *)(param_1 + 0x235) == '\0')) ||
       (*(double *)(param_1 + 0xa0) < *(double *)(param_1 + 0x98) ||
        *(double *)(param_1 + 0xa0) == *(double *)(param_1 + 0x98))))) ||
     ((*(int *)(param_1 + 0x20) == 8 && (*(char *)(param_1 + 0x236) == '\0')))) {
    if (*(longlong *)(param_1 + 0x268) != 0) {
      FUN_1812a77d0(*(longlong *)(param_1 + 0x268) + 0xe8,200);
    }
    goto LAB_180504364;
  }
  FUN_180504a80(param_1);
  if (*(char *)(param_1 + 0x231) == '\0') {
LAB_180504278:
    bVar3 = false;
  }
  else {
    (**(code **)(**(longlong **)(param_1 + 0x38) + 8))(*(longlong **)(param_1 + 0x38),&local_28);
    bVar5 = true;
    dVar6 = (double)(**(code **)(*local_28 + 0x18))(local_28,local_20);
    if (*(double *)(param_1 + 400) == dVar6) goto LAB_180504278;
    bVar3 = true;
  }
  if (bVar5) {
    (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  }
  if (bVar3) {
    (**(code **)(**(longlong **)(param_1 + 0x18) + 0x168))();
    piVar1 = (int *)(*(longlong *)(param_1 + 8) + 0x18);
    LOCK();
    bVar5 = *piVar1 == 0;
    if (bVar5) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar5) && (cVar4 = FUN_1812a6720(*(undefined8 *)(param_1 + 8)), cVar4 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x18) = 0;
      UNLOCK();
    }
  }
  puVar2 = *(undefined8 **)(param_1 + 0x200);
  *(undefined8 *)(param_1 + 0x200) = 0;
  if (puVar2 != (undefined8 *)0x0) {
    FUN_180501f20(*puVar2);
                    /* WARNING: Subroutine does not return */
    free(puVar2);
  }
  puVar2 = *(undefined8 **)(param_1 + 0x268);
  *(undefined8 *)(param_1 + 0x268) = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  if (*(int *)(param_1 + 0x20) == 8) {
    FUN_181336cf0(*(undefined8 *)(param_1 + 600),0);
    FUN_181336cf0(*(undefined8 *)(param_1 + 0x260),0);
  }
LAB_180504364:
  puVar2 = *(undefined8 **)(param_1 + 0x200);
  *(undefined8 *)(param_1 + 0x200) = 0;
  if (puVar2 != (undefined8 *)0x0) {
    FUN_180501f20(*puVar2);
                    /* WARNING: Subroutine does not return */
    free(puVar2);
  }
}



############ FUN_ 18051a740 size=224 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18051a740(longlong param_1)

{
  double dVar1;
  longlong lVar2;
  double dVar3;
  double dVar4;
  undefined1 auStack_58 [32];
  longlong local_38;
  ushort local_30;
  ulonglong local_28;
  
  local_28 = DAT_182615970 ^ (ulonglong)auStack_58;
  _ftime64_s(&local_38);
  lVar2 = local_38 * 1000 + (ulonglong)local_30;
  dVar3 = (double)(lVar2 - *(longlong *)(param_1 + 0x58)) * DAT_1824c3e30;
  dVar1 = DAT_1824c3e30;
  if ((DAT_1824c3e30 <= dVar3) && (dVar1 = DAT_1824c3ef0, dVar3 <= DAT_1824c3ef0)) {
    dVar1 = dVar3;
  }
  dVar3 = *(double *)(param_1 + 0x30);
  *(longlong *)(param_1 + 0x58) = lVar2;
  dVar4 = *(double *)(param_1 + 0x20) * *(double *)(param_1 + 0x18);
  *(double *)(param_1 + 0x18) = dVar4;
  if ((double)CONCAT44((uint)((ulonglong)dVar4 >> 0x20) & DAT_1824c4f10._4_4_,
                       SUB84(dVar4,0) & (uint)DAT_1824c4f10) < *(double *)(param_1 + 0x28)) {
    *(undefined8 *)(param_1 + 0x18) = 0;
  }
  dVar4 = *(double *)(param_1 + 0x18);
  if (*(double *)(param_1 + 0x18) == 0.0) {
    FUN_1812a7720(param_1);
  }
  else {
    FUN_1812a77d0(param_1,0x10);
  }
  FUN_18051c3e0(param_1,dVar1 * dVar4 + dVar3);
}



############ FUN_ 18054e450 size=54 ############

undefined8 FUN_18054e450(longlong param_1)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 0x10);
  if ((lVar1 != 0) && (*(longlong *)(lVar1 + 0x10) != 0)) {
    if (lVar1 == 0) {
      lVar1 = 0;
    }
    else {
      lVar1 = *(longlong *)(lVar1 + 0x10);
    }
    FUN_1812a77d0(lVar1 + 0x20,500);
  }
  return 0;
}



############ FUN_ 18055ba00 size=2548 ############

/* WARNING: Removing unreachable block (ram,0x00018055bcdb) */
/* WARNING: Removing unreachable block (ram,0x00018055bcfd) */
/* WARNING: Removing unreachable block (ram,0x00018055bcf6) */
/* WARNING: Removing unreachable block (ram,0x00018055bcf8) */
/* WARNING: Removing unreachable block (ram,0x00018055bcfb) */
/* WARNING: Removing unreachable block (ram,0x00018055bcff) */
/* WARNING: Removing unreachable block (ram,0x00018055bf14) */
/* WARNING: Removing unreachable block (ram,0x00018055bf36) */
/* WARNING: Removing unreachable block (ram,0x00018055bf2f) */
/* WARNING: Removing unreachable block (ram,0x00018055bf31) */
/* WARNING: Removing unreachable block (ram,0x00018055bf34) */
/* WARNING: Removing unreachable block (ram,0x00018055bf38) */

undefined1 FUN_18055ba00(longlong *param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined1 uVar5;
  char cVar6;
  char cVar7;
  wint_t wVar8;
  wint_t wVar9;
  undefined8 uVar10;
  int iVar11;
  int iVar12;
  byte bVar13;
  int iVar14;
  byte bVar15;
  undefined4 local_40;
  undefined4 uStack_3c;
  int iStack_38;
  int iStack_34;
  int iStack_30;
  char local_2c;
  
  uVar1 = param_2[1];
  bVar13 = (byte)uVar1 & 1;
  if (((uVar1 >> 1 & 1) == 0) && ((uVar1 >> 2 & 1) == 0)) {
    cVar7 = '\0';
  }
  else {
    cVar7 = '\x01';
  }
  iVar12 = 0;
  iVar14 = 1;
  bVar15 = (uVar1 >> 1 & 1) != 0;
  if ((uVar1 >> 2 & 1) != 0) {
    bVar15 = bVar15 + 1;
  }
  if (uVar1 == 2) {
    if (*param_2 == 0x10028) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      FUN_1813c4f20(param_1,(int)param_1[0x1b] + 1);
      FUN_1813c4ff0(param_1);
      if (*(int *)((longlong)param_1 + 0x114) < (int)param_1[0x1b]) {
        FUN_1813c37b0(param_1,1,0);
      }
      return 1;
    }
    if (*param_2 == 0x10026) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      FUN_1813c4f20(param_1,(int)param_1[0x1b] + -1);
      FUN_1813c4ff0(param_1);
      if (*(int *)((longlong)param_1 + 0x114) < (int)param_1[0x1d] + (int)param_1[0x1b]) {
        return 1;
      }
      FUN_1813c37b0(param_1,0xffffffff);
      return 1;
    }
  }
  iVar11 = 0;
  iStack_30 = iVar12;
  if (bVar15 < 2) {
    iVar2 = *param_2;
    if (iVar2 == 0x10025) {
      uVar5 = FUN_1813c3be0(param_1,cVar7,bVar13);
      return uVar5;
    }
    if (iVar2 == 0x10027) {
      uVar5 = FUN_1813c38f0(param_1,cVar7,bVar13);
      return uVar5;
    }
    if (iVar2 == 0x10024) {
      if (cVar7 == '\0') {
        uVar5 = FUN_1813c30b0(param_1,bVar13,param_3,param_4,0xfffffffffffffffe);
        return uVar5;
      }
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      plVar3 = (longlong *)param_1[0x19];
      local_40 = SUB84(plVar3,0);
      uStack_3c = (undefined4)((ulonglong)plVar3 >> 0x20);
      local_2c = '\0';
      iStack_34 = *(int *)((longlong)plVar3 + 0xc);
      if (iStack_34 == 0) {
        iStack_34 = 0;
        iStack_30 = 0;
        iStack_38 = 0;
      }
      else if (iStack_34 < 1) {
        iStack_34 = iStack_34 + -1;
        lVar4 = *(longlong *)(*plVar3 + (longlong)iStack_34 * 8);
        iStack_30 = *(int *)(lVar4 + 0x10);
        iStack_38 = iStack_30 + *(int *)(lVar4 + 8);
      }
      else {
        iStack_34 = 0;
        iVar12 = *(int *)(*(longlong *)*plVar3 + 0x10);
        if ((0 < iVar12) && (iVar12 < 0)) {
          iStack_30 = iVar12;
        }
        iStack_38 = iStack_30 + *(int *)(*(longlong *)*plVar3 + 8);
      }
      FUN_1813c51c0(param_1,&local_40,bVar13);
      goto LAB_18055bd9b;
    }
    if (iVar2 == 0x10023) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      plVar3 = (longlong *)param_1[0x19];
      local_2c = '\0';
      local_40 = SUB84(plVar3,0);
      uStack_3c = (undefined4)((ulonglong)plVar3 >> 0x20);
      if (cVar7 == '\0') {
        iVar12 = *(int *)((longlong)param_1 + 0x114);
        iStack_34 = *(int *)((longlong)plVar3 + 0xc);
        if (iStack_34 == 0) {
          iStack_34 = 0;
          iStack_30 = 0;
          iStack_38 = 0;
        }
        else if (iVar12 < iStack_34) {
          iStack_34 = iVar11;
          if (0 < iVar12) {
            iStack_34 = iVar12;
          }
          lVar4 = *(longlong *)(*plVar3 + (longlong)iStack_34 * 8);
          iVar12 = *(int *)(lVar4 + 0x10);
          iStack_30 = iVar11;
          if ((0 < iVar12) && (iStack_30 = 0x7fffffff, iVar12 < 0x7fffffff)) {
            iStack_30 = iVar12;
          }
          iStack_38 = iStack_30 + *(int *)(lVar4 + 8);
        }
        else {
          iStack_34 = iStack_34 + -1;
          lVar4 = *(longlong *)(*plVar3 + (longlong)iStack_34 * 8);
          iStack_30 = *(int *)(lVar4 + 0x10);
          iStack_38 = iStack_30 + *(int *)(lVar4 + 8);
        }
        FUN_1813c51c0(param_1,&local_40,bVar13);
      }
      else {
        if (*(int *)((longlong)plVar3 + 0xc) == 0) {
          iStack_34 = 0;
          iStack_30 = 0;
          iStack_38 = 0;
        }
        else {
          iStack_34 = *(int *)((longlong)plVar3 + 0xc) + -1;
          lVar4 = *(longlong *)(*plVar3 + (longlong)iStack_34 * 8);
          iStack_30 = *(int *)(lVar4 + 0x10);
          iStack_38 = iStack_30 + *(int *)(lVar4 + 8);
        }
        FUN_1813c51c0(param_1,&local_40,bVar13);
      }
      goto LAB_18055bd9b;
    }
  }
  if (bVar15 == 0) {
    iVar2 = *param_2;
    if (iVar2 == 0x10026) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      if (*(int *)((longlong)param_1 + 0x114) != 0) {
        FUN_1813c37b0(param_1,0xffffffff,bVar13);
        return 1;
      }
      plVar3 = (longlong *)param_1[0x19];
      local_40 = SUB84(plVar3,0);
      uStack_3c = (undefined4)((ulonglong)plVar3 >> 0x20);
      local_2c = '\0';
      iStack_34 = *(int *)((longlong)plVar3 + 0xc);
      if (iStack_34 == 0) {
        iStack_34 = 0;
        iStack_30 = 0;
        iStack_38 = 0;
      }
      else if (iStack_34 < 1) {
        iStack_34 = iStack_34 + -1;
        lVar4 = *(longlong *)(*plVar3 + (longlong)iStack_34 * 8);
        iStack_30 = *(int *)(lVar4 + 0x10);
        iStack_38 = iStack_30 + *(int *)(lVar4 + 8);
      }
      else {
        iStack_34 = 0;
        iVar12 = *(int *)(*(longlong *)*plVar3 + 0x10);
        if ((0 < iVar12) && (iStack_30 = iVar11, iVar12 < 0)) {
          iStack_30 = iVar12;
        }
        iStack_38 = iStack_30 + *(int *)(*(longlong *)*plVar3 + 8);
      }
      FUN_1813c51c0(param_1,&local_40,bVar13);
LAB_18055bd9b:
      if (local_2c != '\0') {
        FUN_1813c8030(&local_40,0);
      }
      return 1;
    }
    if (iVar2 == 0x10028) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      plVar3 = (longlong *)param_1[0x19];
      if (*(int *)((longlong)param_1 + 0x114) != *(int *)((longlong)plVar3 + 0xc) + -1) {
        FUN_1813c37b0(param_1,1,bVar13);
        return 1;
      }
      local_40 = SUB84(plVar3,0);
      uStack_3c = (undefined4)((ulonglong)plVar3 >> 0x20);
      local_2c = '\0';
      if (*(int *)((longlong)plVar3 + 0xc) == 0) {
        iStack_34 = 0;
        iStack_30 = 0;
        iStack_38 = 0;
      }
      else {
        iStack_34 = *(int *)((longlong)plVar3 + 0xc) + -1;
        lVar4 = *(longlong *)(*plVar3 + (longlong)iStack_34 * 8);
        iStack_30 = *(int *)(lVar4 + 0x10);
        iStack_38 = iStack_30 + *(int *)(lVar4 + 8);
      }
      FUN_1813c51c0(param_1,&local_40,bVar13);
      goto LAB_18055bd9b;
    }
    if (iVar2 == 0x10021) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      FUN_1813c4f20(param_1,(int)param_1[0x1b] - (int)param_1[0x1d]);
      FUN_1813c4ff0(param_1);
      FUN_1813c37b0(param_1,-(int)param_1[0x1d],bVar13);
      return 1;
    }
    if (iVar2 == 0x10022) {
      FUN_1813c7aa0(param_1[0x19]);
      FUN_1812a77d0(param_1[0x80],600);
      iVar14 = (int)param_1[0x1d];
      iVar11 = ((*(int *)(param_1[0x19] + 0xc) - iVar14) - (int)param_1[0x1b]) + 1;
      if ((-1 < iVar11) && (iVar12 = iVar11, iVar14 < iVar11)) {
        iVar12 = iVar14;
      }
      FUN_1813c4f20(param_1,iVar12 + (int)param_1[0x1b]);
      FUN_1813c4ff0(param_1);
      FUN_1813c37b0(param_1,(int)param_1[0x1d],bVar13);
      return 1;
    }
  }
  if (uVar1 == 2) {
    iVar12 = *param_2;
    if (iVar12 == 99) goto LAB_18055c3ca;
    if (iVar12 < 0x100) {
      wVar8 = towlower((wint_t)iVar12);
      wVar9 = towlower(99);
      if (wVar8 == wVar9) goto LAB_18055c3ca;
    }
  }
  local_40 = 0x1002d;
  uStack_3c = 2;
  iStack_38 = 0;
  cVar6 = FUN_1813389f0(param_2,&local_40);
  if (cVar6 == '\0') {
    local_40 = 0x78;
    uStack_3c = 2;
    iStack_38 = 0;
    cVar6 = FUN_1813389f0(param_2,&local_40);
    if (cVar6 == '\0') {
      local_40 = 0x1002e;
      uStack_3c = 1;
      iStack_38 = 0;
      cVar6 = FUN_1813389f0(param_2,&local_40);
      if (cVar6 == '\0') {
        local_40 = 0x76;
        uStack_3c = 2;
        iStack_38 = 0;
        cVar6 = FUN_1813389f0(param_2,&local_40);
        if (cVar6 == '\0') {
          local_40 = 0x1002d;
          uStack_3c = 1;
          iStack_38 = 0;
          cVar6 = FUN_1813389f0(param_2,&local_40);
          if (cVar6 == '\0') {
            if (bVar15 < 2) {
              if (*param_2 == 8) {
                if (cVar7 == '\0') {
                  if (((((int)param_1[0x25] == (int)param_1[0x28]) &&
                       (*(int *)((longlong)param_1 + 300) == *(int *)((longlong)param_1 + 0x144)))
                      && ((int)param_1[0x26] == (int)param_1[0x29])) &&
                     ((param_1[0x24] == param_1[0x27] &&
                      (cVar7 = FUN_1813c2bd0(param_1), cVar7 == '\0')))) {
                    FUN_1813c8260(param_1 + 0x24,(int)param_1[0x25] + -1);
                  }
                }
                else {
                  FUN_1813c40f0(param_1);
                  uVar10 = FUN_1813c7350();
                  FUN_1813c51c0(param_1,uVar10,1);
                  if (local_2c != '\0') {
                    FUN_1813c8030(&local_40,0);
                    FUN_1813c40f0(param_1);
                    return 1;
                  }
                }
                FUN_1813c40f0(param_1);
                return 1;
              }
              if (*param_2 == 0x1002e) {
                if (cVar7 == '\0') {
                  plVar3 = param_1 + 0x27;
                  if ((((int)param_1[0x25] == (int)param_1[0x28]) &&
                      (*(int *)((longlong)param_1 + 300) == *(int *)((longlong)param_1 + 0x144))) &&
                     (((int)param_1[0x26] == (int)param_1[0x29] && (param_1[0x24] == *plVar3)))) {
                    FUN_1813c8260(plVar3,(int)param_1[0x28]);
                    if (*(int *)((longlong)param_1 + 0x144) < *(int *)(*plVar3 + 0xc)) {
                      lVar4 = *(longlong *)
                               (*(longlong *)*plVar3 +
                               (longlong)*(int *)((longlong)param_1 + 0x144) * 8);
                      iVar12 = (int)param_1[0x29] + 1;
                      if ((iVar12 < *(int *)(lVar4 + 0xc)) &&
                         (iVar14 = 1, *(int *)(lVar4 + 0x10) + 1 <= iVar12)) {
                        iVar14 = 2;
                      }
                    }
                    FUN_1813c8260(plVar3,iVar14 + (int)param_1[0x28]);
                    FUN_1813c40f0(param_1);
                    return 1;
                  }
                  FUN_1813c7aa0(param_1[0x19]);
                  FUN_1812a77d0(param_1[0x80],600);
                }
                else {
                  FUN_1813c40f0(param_1);
                  uVar10 = FUN_1813c77b0();
                  FUN_1813c51c0(param_1,uVar10,1);
                  if (local_2c != '\0') {
                    FUN_1813c8030(&local_40,0);
                    FUN_1813c40f0(param_1);
                    return 1;
                  }
                }
                FUN_1813c40f0(param_1);
                return 1;
              }
            }
            local_40 = 0x61;
            uStack_3c = 2;
            iStack_38 = 0;
            cVar7 = FUN_1813389f0(param_2,&local_40);
            if (cVar7 != '\0') {
              uVar5 = FUN_1813c2950(param_1);
              return uVar5;
            }
            local_40 = 0x7a;
            uStack_3c = 2;
            iStack_38 = 0;
            cVar7 = FUN_1813389f0(param_2,&local_40);
            if (cVar7 == '\0') {
              local_40 = 0x79;
              uStack_3c = 2;
              iStack_38 = 0;
              cVar7 = FUN_1813389f0(param_2,&local_40);
              if (cVar7 == '\0') {
                local_40 = 0x7a;
                uStack_3c = 3;
                iStack_38 = 0;
                cVar7 = FUN_1813389f0(param_2,&local_40);
                if (cVar7 == '\0') {
                  return 0;
                }
              }
              uVar5 = FUN_1813c2810(param_1);
              return uVar5;
            }
            uVar5 = FUN_1813c2880(param_1);
            return uVar5;
          }
        }
        uVar5 = (**(code **)(*param_1 + 0x168))(param_1);
        return uVar5;
      }
    }
    uVar5 = (**(code **)(*param_1 + 0x160))(param_1);
    return uVar5;
  }
LAB_18055c3ca:
  uVar5 = (**(code **)(*param_1 + 0x158))(param_1);
  return uVar5;
}



############ FUN_ 1813c2950 size=344 ############

/* WARNING: Removing unreachable block (ram,0x0001813c2a29) */
/* WARNING: Removing unreachable block (ram,0x0001813c2a4b) */
/* WARNING: Removing unreachable block (ram,0x0001813c2a44) */
/* WARNING: Removing unreachable block (ram,0x0001813c2a46) */
/* WARNING: Removing unreachable block (ram,0x0001813c2a49) */

undefined8 FUN_1813c2950(longlong param_1)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong *local_40;
  int local_38;
  undefined8 local_34;
  char local_2c;
  longlong *local_28;
  int local_20;
  int iStack_1c;
  int local_18;
  char local_14;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  local_40 = *(longlong **)(param_1 + 200);
  local_14 = '\0';
  iStack_1c = *(int *)((longlong)local_40 + 0xc);
  if (iStack_1c == 0) {
    iStack_1c = 0;
    local_18 = 0;
    local_20 = 0;
  }
  else {
    if (iStack_1c < 1) {
      iStack_1c = iStack_1c + -1;
      lVar2 = *(longlong *)(*local_40 + (longlong)iStack_1c * 8);
      local_18 = *(int *)(lVar2 + 0x10);
    }
    else {
      iStack_1c = 0;
      lVar2 = *(longlong *)*local_40;
      iVar1 = *(int *)(lVar2 + 0x10);
      local_18 = 0;
      if ((0 < iVar1) && (iVar1 < 0)) {
        local_18 = iVar1;
      }
    }
    local_20 = local_18 + *(int *)(lVar2 + 8);
  }
  local_2c = '\0';
  if (*(int *)((longlong)local_40 + 0xc) == 0) {
    local_34 = 0;
    local_38 = 0;
  }
  else {
    iVar1 = *(int *)((longlong)local_40 + 0xc) + -1;
    lVar2 = *(longlong *)(*local_40 + (longlong)iVar1 * 8);
    local_38 = *(int *)(lVar2 + 0x10);
    local_34 = CONCAT44(local_38,iVar1);
    local_38 = local_38 + *(int *)(lVar2 + 8);
  }
  local_28 = local_40;
  FUN_1813c51c0(param_1,&local_40,0,0,uVar3);
  FUN_1813c51c0(param_1,&local_28,1);
  if (local_2c != '\0') {
    FUN_1813c8030(&local_40,0);
  }
  if (local_14 != '\0') {
    FUN_1813c8030(&local_28,0);
  }
  return 1;
}



############ FUN_ 1813c30b0 size=476 ############

undefined8 FUN_1813c30b0(longlong param_1,undefined1 param_2)

{
  uint uVar1;
  byte bVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  longlong lVar5;
  byte bVar6;
  int iVar7;
  byte *pbVar8;
  byte *pbVar9;
  uint *_Memory;
  byte bVar10;
  int iVar11;
  int iVar12;
  undefined8 uVar13;
  longlong *local_20;
  int local_18;
  undefined8 local_14;
  char local_c;
  
  uVar13 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  plVar3 = *(longlong **)(param_1 + 0x108);
  if ((*(uint *)(param_1 + 0x114) < *(uint *)((longlong)plVar3 + 0xc)) &&
     (puVar4 = *(undefined8 **)(*plVar3 + (longlong)(int)*(uint *)(param_1 + 0x114) * 8),
     puVar4 != (undefined8 *)0x0)) {
    pbVar9 = (byte *)*puVar4;
    if ((*(uint *)(pbVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar9 + -0x10) = *(int *)(pbVar9 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar9 = &DAT_1821dbf98;
  }
  iVar11 = 0;
  local_18 = 0;
  bVar2 = *pbVar9;
  pbVar8 = pbVar9;
  while ((iVar12 = 0, bVar2 != 0 &&
         ((bVar2 = *pbVar8, bVar2 == 0x20 || (iVar12 = iVar11, (byte)(bVar2 - 9) < 5))))) {
    pbVar8 = pbVar8 + 1;
    if ((char)bVar2 < '\0') {
      bVar10 = 0x40;
      bVar6 = bVar2 & 0x40;
      while ((bVar6 != 0 && (8 < bVar10))) {
        pbVar8 = pbVar8 + 1;
        bVar10 = bVar10 >> 1;
        bVar6 = bVar2 & bVar10;
      }
    }
    iVar11 = iVar11 + 1;
    bVar2 = *pbVar8;
  }
  _Memory = (uint *)(pbVar9 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*(int *)(param_1 + 0x118) <= iVar12) && (0 < *(int *)(param_1 + 0x118))) {
    iVar12 = local_18;
  }
  iVar11 = *(int *)(param_1 + 0x114);
  local_20 = *(longlong **)(param_1 + 200);
  local_c = '\0';
  iVar7 = *(int *)((longlong)local_20 + 0xc);
  if (iVar7 == 0) {
    local_14 = 0;
    local_18 = 0;
  }
  else if (iVar11 < iVar7) {
    iVar7 = 0;
    if (0 < iVar11) {
      iVar7 = iVar11;
    }
    lVar5 = *(longlong *)(*local_20 + (longlong)iVar7 * 8);
    iVar11 = *(int *)(lVar5 + 0x10);
    if (((0 < iVar11) && (-1 < iVar12)) && (local_18 = iVar12, iVar11 < iVar12)) {
      local_18 = iVar11;
    }
    local_14 = CONCAT44(local_18,iVar7);
    local_18 = local_18 + *(int *)(lVar5 + 8);
  }
  else {
    lVar5 = *(longlong *)(*local_20 + (longlong)(iVar7 + -1) * 8);
    local_18 = *(int *)(lVar5 + 0x10);
    local_14 = CONCAT44(local_18,iVar7 + -1);
    local_18 = local_18 + *(int *)(lVar5 + 8);
  }
  FUN_1813c51c0(param_1,&local_20,param_2,plVar3,uVar13);
  if (local_c != '\0') {
    FUN_1813c8030(&local_20,0);
  }
  return 1;
}



############ FUN_ 1813c38f0 size=739 ############

undefined8 FUN_1813c38f0(longlong param_1,char param_2,char param_3)

{
  longlong lVar1;
  bool bVar2;
  int iVar3;
  undefined8 uVar4;
  longlong **pplVar5;
  longlong lVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  longlong *local_50;
  int local_48;
  undefined8 local_44;
  char local_3c;
  longlong *local_38;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  char local_24;
  
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  if ((param_3 != '\0') && (*(int *)(param_1 + 0x410) == 0)) {
    local_38 = *(longlong **)(param_1 + 0x138);
    local_30 = *(undefined4 *)(param_1 + 0x140);
    local_2c = *(undefined4 *)(param_1 + 0x144);
    local_28 = *(undefined4 *)(param_1 + 0x148);
    local_24 = '\0';
    local_50 = *(longlong **)(param_1 + 0x120);
    local_48 = *(int *)(param_1 + 0x128);
    local_44 = *(undefined8 *)(param_1 + 300);
    local_3c = '\0';
    FUN_1813c51c0(param_1,&local_50,0);
    FUN_1813c51c0(param_1,&local_38);
    if (local_3c != '\0') {
      FUN_1813c8030(&local_50,0);
    }
    if (local_24 != '\0') {
      FUN_1813c8030(&local_38,0);
    }
    *(undefined4 *)(param_1 + 0x410) = 2;
  }
  if ((((*(int *)(param_1 + 0x128) == *(int *)(param_1 + 0x140)) &&
       (*(int *)(param_1 + 300) == *(int *)(param_1 + 0x144))) &&
      (*(int *)(param_1 + 0x130) == *(int *)(param_1 + 0x148))) &&
     (*(longlong *)(param_1 + 0x120) == *(longlong *)(param_1 + 0x138))) {
    bVar2 = true;
  }
  else {
    bVar2 = false;
  }
  if ((bVar2) || (param_3 != '\0')) {
    if (param_2 == '\0') {
      local_50 = *(longlong **)(param_1 + 0x108);
      local_48 = *(int *)(param_1 + 0x110);
      local_44._0_4_ = *(int *)(param_1 + 0x114);
      local_44._4_4_ = *(int *)(param_1 + 0x118);
      local_3c = '\0';
      iVar7 = 1;
      FUN_1813c8260(&local_50);
      if ((int)local_44 < *(int *)((longlong)local_50 + 0xc)) {
        lVar6 = *(longlong *)(*local_50 + (longlong)(int)local_44 * 8);
        if ((local_44._4_4_ + 1 < *(int *)(lVar6 + 0xc)) &&
           (iVar7 = 1, *(int *)(lVar6 + 0x10) + 1 <= local_44._4_4_ + 1)) {
          iVar7 = 2;
        }
      }
      iVar7 = iVar7 + local_48;
      iVar8 = 0;
      local_44 = 0;
      local_48 = 0;
      if (0 < iVar7) {
        iVar9 = *(int *)((longlong)local_50 + 0xc);
        if (3 < iVar9) {
          do {
            iVar3 = (iVar8 + 1 + iVar9) / 2;
            iVar10 = iVar3;
            if (*(int *)(*(longlong *)(*local_50 + (longlong)iVar3 * 8) + 8) <= iVar7) {
              iVar10 = iVar9;
              iVar8 = iVar3;
            }
            iVar9 = iVar10;
          } while (3 < iVar9 - iVar8);
        }
        for (lVar6 = (longlong)iVar8; lVar6 < iVar9; lVar6 = lVar6 + 1) {
          lVar1 = *(longlong *)(*local_50 + lVar6 * 8);
          iVar10 = iVar7 - *(int *)(lVar1 + 8);
          if ((-1 < iVar10) && ((iVar10 < *(int *)(lVar1 + 0xc) || (iVar8 == iVar9 + -1)))) {
            local_48 = *(int *)(lVar1 + 0x10);
            if (iVar10 < *(int *)(lVar1 + 0x10)) {
              local_48 = iVar10;
            }
            local_44 = CONCAT44(local_48,iVar8);
            local_48 = local_48 + *(int *)(lVar1 + 8);
          }
          iVar8 = iVar8 + 1;
        }
      }
      FUN_1813c51c0(param_1,&local_50,param_3);
      if (local_3c == '\0') {
        return 1;
      }
      pplVar5 = &local_50;
      goto LAB_1813c3bb0;
    }
  }
  else if (param_2 == '\0') {
    FUN_1813c51c0(param_1,(longlong *)(param_1 + 0x138),0);
    return 1;
  }
  uVar4 = FUN_1813c77b0();
  FUN_1813c51c0(param_1,uVar4,param_3);
  if (local_24 == '\0') {
    return 1;
  }
  pplVar5 = &local_38;
LAB_1813c3bb0:
  FUN_1813c8030(pplVar5,0);
  return 1;
}



############ FUN_ 1813c3be0 size=659 ############

undefined8 FUN_1813c3be0(longlong param_1,char param_2,char param_3)

{
  int iVar1;
  longlong lVar2;
  bool bVar3;
  int iVar4;
  undefined8 uVar5;
  longlong **pplVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  longlong *local_50;
  int local_48;
  undefined8 local_44;
  char local_3c;
  longlong *local_38;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  char local_24;
  
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  if ((param_3 != '\0') && (*(int *)(param_1 + 0x410) == 0)) {
    local_38 = *(longlong **)(param_1 + 0x120);
    local_30 = *(undefined4 *)(param_1 + 0x128);
    local_2c = *(undefined4 *)(param_1 + 300);
    local_28 = *(undefined4 *)(param_1 + 0x130);
    local_24 = '\0';
    local_50 = *(longlong **)(param_1 + 0x138);
    local_48 = *(int *)(param_1 + 0x140);
    local_44 = *(undefined8 *)(param_1 + 0x144);
    local_3c = '\0';
    FUN_1813c51c0(param_1,&local_50,0);
    FUN_1813c51c0(param_1,&local_38);
    if (local_3c != '\0') {
      FUN_1813c8030(&local_50,0);
    }
    if (local_24 != '\0') {
      FUN_1813c8030(&local_38,0);
    }
    *(undefined4 *)(param_1 + 0x410) = 1;
  }
  if ((((*(int *)(param_1 + 0x128) == *(int *)(param_1 + 0x140)) &&
       (*(int *)(param_1 + 300) == *(int *)(param_1 + 0x144))) &&
      (*(int *)(param_1 + 0x130) == *(int *)(param_1 + 0x148))) &&
     (*(longlong *)(param_1 + 0x120) == *(longlong *)(param_1 + 0x138))) {
    bVar3 = true;
  }
  else {
    bVar3 = false;
  }
  if ((bVar3) || (param_3 != '\0')) {
    if (param_2 == '\0') {
      local_50 = *(longlong **)(param_1 + 0x108);
      local_3c = '\0';
      iVar1 = *(int *)(param_1 + 0x110) + -1;
      iVar8 = 0;
      local_44 = 0;
      local_48 = 0;
      if (0 < iVar1) {
        iVar9 = *(int *)((longlong)local_50 + 0xc);
        if (3 < iVar9) {
          do {
            iVar4 = (iVar8 + 1 + iVar9) / 2;
            iVar10 = iVar4;
            if (*(int *)(*(longlong *)(*local_50 + (longlong)iVar4 * 8) + 8) <= iVar1) {
              iVar10 = iVar9;
              iVar8 = iVar4;
            }
            iVar9 = iVar10;
          } while (3 < iVar9 - iVar8);
        }
        for (lVar7 = (longlong)iVar8; lVar7 < iVar9; lVar7 = lVar7 + 1) {
          lVar2 = *(longlong *)(*local_50 + lVar7 * 8);
          iVar10 = iVar1 - *(int *)(lVar2 + 8);
          if ((-1 < iVar10) && ((iVar10 < *(int *)(lVar2 + 0xc) || (iVar8 == iVar9 + -1)))) {
            local_48 = *(int *)(lVar2 + 0x10);
            if (iVar10 < *(int *)(lVar2 + 0x10)) {
              local_48 = iVar10;
            }
            local_44 = CONCAT44(local_48,iVar8);
            local_48 = local_48 + *(int *)(lVar2 + 8);
          }
          iVar8 = iVar8 + 1;
        }
      }
      FUN_1813c51c0(param_1,&local_50,param_3);
      if (local_3c == '\0') {
        return 1;
      }
      pplVar6 = &local_50;
      goto LAB_1813c3e50;
    }
  }
  else if (param_2 == '\0') {
    FUN_1813c51c0(param_1,(longlong *)(param_1 + 0x120),0);
    return 1;
  }
  uVar5 = FUN_1813c7350();
  FUN_1813c51c0(param_1,uVar5,param_3);
  if (local_24 == '\0') {
    return 1;
  }
  pplVar6 = &local_38;
LAB_1813c3e50:
  FUN_1813c8030(pplVar6,0);
  return 1;
}



############ FUN_ 180560700 size=2831 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180560700(undefined8 *param_1,longlong param_2)

{
  uint *_Memory;
  uint uVar1;
  bool bVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  uint *puVar9;
  uint *puVar10;
  int iVar11;
  undefined1 auStack_5e8 [32];
  longlong local_5c8;
  longlong local_5c0;
  undefined ***local_5b8;
  undefined ***local_5b0;
  undefined8 local_5a8;
  longlong local_5a0;
  longlong local_598;
  longlong local_590;
  longlong local_588;
  longlong local_580;
  longlong local_578;
  longlong local_570;
  longlong local_568;
  longlong local_560;
  longlong local_558;
  longlong local_550;
  longlong local_548;
  longlong local_540;
  longlong local_538;
  longlong local_530;
  longlong local_528;
  longlong local_520;
  longlong local_518;
  longlong local_510;
  int local_508;
  undefined4 uStack_504;
  undefined8 *puStack_500;
  int local_4f8;
  undefined4 uStack_4f4;
  undefined8 *puStack_4f0;
  int local_4e8;
  undefined4 uStack_4e4;
  undefined8 *puStack_4e0;
  int local_4d8;
  undefined4 uStack_4d4;
  undefined8 *puStack_4d0;
  int local_4c8;
  undefined4 uStack_4c4;
  undefined8 uStack_4c0;
  int local_4b8;
  undefined4 uStack_4b4;
  undefined8 *puStack_4b0;
  undefined8 *local_4a8;
  longlong *local_4a0;
  longlong *local_498;
  undefined8 local_490;
  undefined8 local_488;
  undefined8 local_480;
  longlong *local_478;
  undefined8 local_470;
  undefined **local_468;
  undefined8 *local_460;
  undefined ***local_430;
  undefined **local_428;
  undefined8 *local_420;
  undefined ***local_3f0;
  undefined **local_3e8;
  undefined8 *local_3e0;
  undefined ***local_3b0;
  undefined **local_3a8;
  undefined8 *local_3a0;
  undefined ***local_370;
  undefined **local_368;
  undefined8 *local_360;
  undefined ***local_330;
  undefined **local_328;
  int local_320;
  undefined4 uStack_31c;
  undefined4 uStack_318;
  undefined4 uStack_314;
  undefined ***local_2f0;
  undefined **local_2e8;
  int local_2e0;
  undefined4 uStack_2dc;
  undefined4 uStack_2d8;
  undefined4 uStack_2d4;
  undefined ***local_2b0;
  undefined **local_2a8;
  int local_2a0;
  undefined4 uStack_29c;
  undefined4 uStack_298;
  undefined4 uStack_294;
  undefined ***local_270;
  undefined **local_268;
  int local_260;
  undefined4 uStack_25c;
  undefined4 uStack_258;
  undefined4 uStack_254;
  undefined ***local_230;
  undefined **local_228;
  int local_220;
  undefined4 uStack_21c;
  undefined4 uStack_218;
  undefined4 uStack_214;
  undefined ***local_1f0;
  undefined **local_1e8;
  int local_1e0;
  undefined4 uStack_1dc;
  undefined4 uStack_1d8;
  undefined4 uStack_1d4;
  undefined ***local_1b0;
  undefined **local_1a8;
  undefined8 *local_1a0;
  undefined ***local_170;
  undefined **local_168;
  undefined8 *local_160;
  undefined ***local_130;
  undefined **local_128;
  undefined8 *local_120;
  undefined ***local_f0;
  undefined **local_e8;
  undefined8 *local_e0;
  undefined ***local_b0;
  undefined **local_a8;
  undefined8 *local_a0;
  undefined ***local_70;
  undefined1 local_49;
  ulonglong local_48 [2];
  
  local_490 = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_5e8;
  param_1[1] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 2) = 0;
  *param_1 = DummyEqualizerWrapperBase::vftable;
  local_4a8 = param_1;
  FUN_180533130(param_1 + 3);
  *(undefined4 *)(param_1 + 0x4801b) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2400dc) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2400e4) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2400ec) = 0;
  param_1[0x4801e] = 0;
  param_1[0x4801f] = 0;
  param_1[0x48020] = 0;
  *(undefined1 *)(param_1 + 0x48021) = 0;
  param_1[0x48022] = 0;
  param_1[0x48023] = 0;
  *(undefined4 *)(param_1 + 0x48014) = 1;
  *(undefined4 *)((longlong)param_1 + 0x2400a7) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x2400ab) = 0x1010101;
  FUN_18052fc30(param_1 + 3);
  *(undefined4 *)(param_1 + 0x48013) = 4;
  *(undefined4 *)((longlong)param_1 + 0x2400a7) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x2400ab) = 0x1010101;
  bVar2 = *(float *)((longlong)param_1 + 0x3c) != _DAT_1824c45ec;
  *(undefined4 *)((longlong)param_1 + 0x3c) = 0x472c4400;
  if (bVar2) {
    (**(code **)(param_1[3] + 0x20))(param_1 + 3);
  }
  *param_1 = Soothe2DummyEqualizerWrapper::vftable;
  *(undefined4 *)((longlong)param_1 + 0x24009c) = 6;
  *(undefined4 *)((longlong)param_1 + 0x2400a7) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x2400ab) = 0x1010101;
  FUN_18052fc30(param_1 + 3);
  param_2 = param_2 + 0x178;
  local_468 = std::_Func_impl_no_alloc<<lambda_973cd763b97e220e71bc0a65997209ee>,void,float>::
              vftable;
  local_430 = &local_468;
  local_460 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band0 on");
  FUN_181414060(param_1,uVar5,&local_468);
  local_428 = std::_Func_impl_no_alloc<<lambda_686fb1e5accf07c958e2013a1a64da1d>,void,float>::
              vftable;
  local_3f0 = &local_428;
  local_420 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band0 q");
  FUN_181414060(param_1,uVar5,&local_428);
  local_3e8 = std::_Func_impl_no_alloc<<lambda_33a0f80d6c909bf8cc3376d50b5ba477>,void,float>::
              vftable;
  local_3b0 = &local_3e8;
  local_3e0 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band0 freq");
  FUN_181414060(param_1,uVar5,&local_3e8);
  local_3a8 = std::_Func_impl_no_alloc<<lambda_c73308c8f61623efd0ba21720ece4bd6>,void,float>::
              vftable;
  local_370 = &local_3a8;
  local_3a0 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band0 balance");
  FUN_181414060(param_1,uVar5,&local_3a8);
  local_368 = std::_Func_impl_no_alloc<<lambda_fb6c2a43ec65bc2ceb414b55420b61e1>,void,float>::
              vftable;
  local_330 = &local_368;
  local_360 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band0 mode");
  FUN_181414060(param_1,uVar5,&local_368);
  iVar11 = 1;
  local_4a0 = &local_5a0;
  local_498 = &local_598;
  local_478 = &local_590;
  do {
    lVar6 = FUN_181233e10(local_48,iVar11);
    FUN_180495150(&local_588,lVar6,&local_49 + -lVar6);
    FUN_18049c4e0(&local_5a0,&DAT_1824b03ac);
    plVar7 = (longlong *)FUN_181232d30(&local_5a0,&local_588);
    local_5c8 = *plVar7;
    _Memory = (uint *)(local_5c8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar9 = (uint *)(local_5a0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_588 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_5b0 = &local_328;
    local_328 = std::_Func_impl_no_alloc<<lambda_e82679719781a43e960a9123af0c77fc>,void,float>::
                vftable;
    uStack_4c0._0_4_ = SUB84(param_1,0);
    uVar3 = (undefined4)uStack_4c0;
    uStack_4c0._4_4_ = (undefined4)((ulonglong)param_1 >> 0x20);
    uVar4 = uStack_4c0._4_4_;
    uStack_31c = uStack_4c4;
    uStack_318 = (undefined4)uStack_4c0;
    uStack_314 = uStack_4c0._4_4_;
    local_2f0 = &local_328;
    local_4c8 = iVar11;
    uStack_4c0 = param_1;
    local_320 = iVar11;
    FUN_18049c4e0(&local_580,&DAT_1824b03f8);
    local_598 = local_5c8;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    plVar7 = (longlong *)FUN_181232d30(&local_598,&local_580);
    local_530 = *plVar7;
    puVar9 = (uint *)(local_530 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      *puVar9 = *puVar9 + 1;
      UNLOCK();
    }
    puVar10 = (uint *)(local_598 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    uVar5 = FUN_18119aa60(param_2,local_530);
    FUN_181414060(param_1,uVar5,&local_328);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_580 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_5b8 = &local_2e8;
    local_2e8 = std::_Func_impl_no_alloc<<lambda_dfd374000c64e4ad1e2d8a47e897bfa7>,void,float>::
                vftable;
    uStack_2dc = uStack_4d4;
    uStack_2d8 = uVar3;
    uStack_2d4 = uVar4;
    local_2b0 = &local_2e8;
    local_4d8 = iVar11;
    puStack_4d0 = param_1;
    local_2e0 = iVar11;
    FUN_18049c4e0(&local_578," freq");
    local_590 = local_5c8;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    plVar7 = (longlong *)FUN_181232d30(&local_590,&local_578);
    local_528 = *plVar7;
    puVar9 = (uint *)(local_528 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      *puVar9 = *puVar9 + 1;
      UNLOCK();
    }
    puVar10 = (uint *)(local_590 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    uVar5 = FUN_18119aa60(param_2,local_528);
    FUN_181414060(param_1,uVar5,&local_2e8);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_578 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_5b8 = &local_2a8;
    local_2a8 = std::_Func_impl_no_alloc<<lambda_6a97f18018d82d8aefd22b82df8317e5>,void,float>::
                vftable;
    uStack_29c = uStack_4b4;
    uStack_298 = uVar3;
    uStack_294 = uVar4;
    local_270 = &local_2a8;
    local_4b8 = iVar11;
    puStack_4b0 = param_1;
    local_2a0 = iVar11;
    FUN_18049c4e0(&local_568," sens");
    local_570 = local_5c8;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar8 = (undefined8 *)FUN_181232aa0(&local_520,&local_570,&local_568);
    local_470 = *puVar8;
    uVar5 = FUN_18119aa60(param_2);
    FUN_181414060(param_1,uVar5,&local_2a8);
    puVar9 = (uint *)(local_520 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_568 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_5b8 = &local_268;
    local_268 = std::_Func_impl_no_alloc<<lambda_2269c934fa530d94c7ae2146b7dbb8cb>,void,float>::
                vftable;
    uStack_25c = uStack_504;
    uStack_258 = uVar3;
    uStack_254 = uVar4;
    local_230 = &local_268;
    local_508 = iVar11;
    puStack_500 = param_1;
    local_260 = iVar11;
    FUN_18049c4e0(&local_558,&DAT_1824b03e4);
    local_560 = local_5c8;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar8 = (undefined8 *)FUN_181232aa0(&local_518,&local_560,&local_558);
    local_488 = *puVar8;
    uVar5 = FUN_18119aa60(param_2);
    FUN_181414060(param_1,uVar5,&local_268);
    puVar9 = (uint *)(local_518 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_558 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_5b8 = &local_228;
    local_228 = std::_Func_impl_no_alloc<<lambda_63ca4daeb926eb6a4e276d49b3d1f485>,void,float>::
                vftable;
    uStack_21c = uStack_4f4;
    uStack_218 = uVar3;
    uStack_214 = uVar4;
    local_1f0 = &local_228;
    local_4f8 = iVar11;
    puStack_4f0 = param_1;
    local_220 = iVar11;
    FUN_18049c4e0(&local_548," balance");
    local_550 = local_5c8;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar8 = (undefined8 *)FUN_181232aa0(&local_510,&local_550,&local_548);
    local_480 = *puVar8;
    uVar5 = FUN_18119aa60(param_2);
    FUN_181414060(param_1,uVar5,&local_228);
    puVar9 = (uint *)(local_510 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_548 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_5b8 = &local_1e8;
    local_1e8 = std::_Func_impl_no_alloc<<lambda_c8f917ca967fd99ac4602b0bbb1692f2>,void,float>::
                vftable;
    uStack_1dc = uStack_4e4;
    uStack_1d8 = uVar3;
    uStack_1d4 = uVar4;
    local_1b0 = &local_1e8;
    local_4e8 = iVar11;
    puStack_4e0 = param_1;
    local_1e0 = iVar11;
    FUN_18049c4e0(&local_538," mode");
    local_540 = local_5c8;
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar8 = (undefined8 *)FUN_181232aa0(&local_5c0,&local_540,&local_538);
    local_5a8 = *puVar8;
    uVar5 = FUN_18119aa60(param_2);
    FUN_181414060(param_1,uVar5,&local_1e8);
    puVar9 = (uint *)(local_5c0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_538 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    iVar11 = iVar11 + 1;
  } while (iVar11 < 5);
  local_1a8 = std::_Func_impl_no_alloc<<lambda_af136f8edf8261379de59ed8b361e91c>,void,float>::
              vftable;
  local_170 = &local_1a8;
  local_1a0 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band5 on");
  FUN_181414060(param_1,uVar5,&local_1a8);
  local_168 = std::_Func_impl_no_alloc<<lambda_1252a209ed5e2f37e3cd555b68b3df55>,void,float>::
              vftable;
  local_130 = &local_168;
  local_160 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band5 q");
  FUN_181414060(param_1,uVar5,&local_168);
  local_128 = std::_Func_impl_no_alloc<<lambda_b088ff2827dbccf0fa9d87053ad26dac>,void,float>::
              vftable;
  local_f0 = &local_128;
  local_120 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band5 freq");
  FUN_181414060(param_1,uVar5,&local_128);
  local_e8 = std::_Func_impl_no_alloc<<lambda_ec499628dfd33d196e21bd37193598d5>,void,float>::vftable
  ;
  local_b0 = &local_e8;
  local_e0 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band5 balance");
  FUN_181414060(param_1,uVar5,&local_e8);
  local_a8 = std::_Func_impl_no_alloc<<lambda_c1d14b0dc8609c707c26e93450f79ea7>,void,float>::vftable
  ;
  local_70 = &local_a8;
  local_a0 = param_1;
  uVar5 = FUN_18119aa60(param_2,"band5 mode");
  FUN_181414060(param_1,uVar5,&local_a8);
  FUN_1812a77d0(param_1,10);
}



############ FUN_ 180569a90 size=392 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180569a90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  char cVar5;
  undefined4 local_18;
  
  cVar5 = FUN_18055e400(param_1 + 0x20,param_2,param_3,param_4,0xfffffffffffffffe);
  if (cVar5 == '\0') {
    if (*(longlong *)(param_1 + 0x270) != 0) {
      LOCK();
      *(undefined1 *)(param_1 + 0x81) = 1;
      UNLOCK();
      if (*(longlong *)(param_1 + 0x288) != 0) {
        FUN_180597f80();
        puVar1 = *(undefined8 **)(param_1 + 0x288);
        *(undefined8 *)(param_1 + 0x288) = 0;
        if (puVar1 != (undefined8 *)0x0) {
          (**(code **)*puVar1)(puVar1,1);
        }
      }
      *(undefined8 *)(param_1 + 0x270) = 0;
      LOCK();
      *(undefined1 *)(param_1 + 0x81) = 0;
      UNLOCK();
      FUN_181413d90(*(undefined8 *)(param_1 + 0xe0));
    }
    if (*(longlong **)(param_1 + 0x2e0) != (longlong *)0x0) {
      (**(code **)(**(longlong **)(param_1 + 0x2e0) + 0x10))();
    }
    FUN_1812a7720(param_1 + 8);
  }
  else if (*(longlong *)(param_1 + 0x270) == 0) {
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb4));
    *(longlong *)(param_1 + 0x278) = param_1;
    *(undefined4 *)(param_1 + 0x2dc) = 1;
    uVar4 = _UNK_1824c48d8;
    uVar3 = _UNK_1824c4778;
    uVar2 = _DAT_1824c4770;
    local_18 = CONCAT31(local_18._1_3_,4);
    *(undefined8 *)(param_1 + 0x290) = _DAT_1824c48d0;
    *(undefined8 *)(param_1 + 0x298) = uVar4;
    *(undefined8 *)(param_1 + 0x2a0) = uVar2;
    *(undefined8 *)(param_1 + 0x2a8) = uVar3;
    *(undefined8 *)(param_1 + 0x2b0) = 0;
    *(undefined4 *)(param_1 + 0x2b8) = local_18;
    *(undefined1 *)(param_1 + 0x2d9) = 1;
    FUN_18134bd50(*(undefined8 *)(param_1 + 0xe0),0);
    FUN_18163b610(param_1 + 0xe8,*(undefined8 *)(param_1 + 0xe0));
    FUN_1812a77d0(param_1 + 8,0x10);
                    /* WARNING: Could not recover jumptable at 0x000180569b86. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb4));
    return;
  }
  return;
}



############ FUN_ 1815d7db0 size=1089 ############

void FUN_1815d7db0(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  void *_Memory;
  undefined8 *puVar5;
  undefined1 local_res20 [8];
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  void *local_98;
  undefined4 local_8c;
  
  FUN_18134a080();
  param_1[0x42] = 0;
  *(undefined1 *)(param_1 + 0x43) = 0;
  param_1[0x45] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x46) = 0;
  *param_1 = CloudyLabel::vftable;
  param_1[0x16] = CloudyLabel::vftable;
  param_1[0x18] = CloudyLabel::vftable;
  param_1[0x19] = CloudyLabel::vftable;
  param_1[0x1a] = CloudyLabel::vftable;
  param_1[0x41] = CloudyLabel::vftable;
  param_1[0x44] = CloudyLabel::vftable;
  param_1[0x47] = CloudyLabel::vftable;
  param_1[0x48] = CloudyLabel::vftable;
  param_1[0x49] = 0x3f4ccccd;
  param_1[0x4a] = 0;
  param_1[0x4b] = 0;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x264) = 0;
  FUN_181252d20(param_1 + 0x4e);
  puVar1 = param_1 + 0x4f;
  *puVar1 = 0;
  param_1[0x50] = 0;
  param_1[0x51] = 0;
  param_1[0x52] = 0;
  *(undefined1 *)(param_1 + 0x53) = 1;
  param_1[0x54] = 0;
  param_1[0x55] = 0;
  param_1[0x56] = 0;
  param_1[0x57] = 0;
  *(undefined1 *)(param_1 + 0x58) = 1;
  *(undefined4 *)(param_1 + 0x59) = 0;
  FUN_1812fbfd0(param_1 + 0x5a);
  param_1[0x5a] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x5b] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x5c] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x5d] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x5e] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x5f] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x60] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x61] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x62] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[99] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[100] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x65] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x66] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x67] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x68] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x69] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x6a] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x6b] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x6c] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x6d] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x6e] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x6f] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x70] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x71] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x72] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x73] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x74] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x75] = CloudyLabel::EditorLookAndFeel::vftable;
  param_1[0x76] = CloudyLabel::EditorLookAndFeel::vftable;
  *(undefined4 *)(param_1 + 0x88) = 0;
  *(undefined8 *)((longlong)param_1 + 0x444) = 0x1010101;
  param_1[0x8a] =
       std::
       _Func_impl_no_alloc<<lambda_08aee2dacd76f4330974885e6a69dd09>,void,juce::TextEditor&___ptr64>
       ::vftable;
  param_1[0x91] = param_1 + 0x8a;
  *(undefined4 *)(param_1 + 0x92) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x494) = 7;
  *(undefined4 *)(param_1 + 0x93) = 1;
  *(undefined2 *)((longlong)param_1 + 0x49c) = 1;
  if (*(int *)(param_1 + 0x38) != 0x24) {
    *(undefined4 *)(param_1 + 0x38) = 0x24;
    uStack_ac = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_b0 = *(undefined4 *)(param_1 + 5);
    local_b8 = 0;
    uStack_b4 = 0;
    FUN_181342870(param_1,&local_b8,1);
  }
  *(undefined2 *)(param_1 + 0x40) = 1;
  *(undefined1 *)((longlong)param_1 + 0x202) = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x60;
  if (*(float *)(param_1 + 0x3f) != DAT_1824c3ea4) {
    *(undefined4 *)(param_1 + 0x3f) = 0x3f800000;
    uStack_9c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_a0 = *(undefined4 *)(param_1 + 5);
    local_a8 = 0;
    uStack_a4 = 0;
    FUN_181342870(param_1,&local_a8,1);
  }
  FUN_1812a77d0(param_1 + 0x44,200);
  FUN_18049c4e0(local_res20,
                "<svg width=\"13\" height=\"7\" viewBox=\"0 0 13 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.56 1L6.28 6.28L1 1\" stroke=\"black\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\"/>\n</svg>\n"
               );
  puVar5 = (undefined8 *)FUN_180576a30(&local_98,local_res20);
  if (puVar1 == puVar5) {
    uVar4 = puVar5[3];
    param_1[0x51] = puVar5[2];
    param_1[0x52] = uVar4;
    *(undefined1 *)(param_1 + 0x53) = *(undefined1 *)(puVar5 + 4);
    local_8c = 0;
                    /* WARNING: Subroutine does not return */
    free(local_98);
  }
  uVar4 = *puVar5;
  *puVar5 = 0;
  uVar2 = *(undefined4 *)(puVar5 + 1);
  uVar3 = *(undefined4 *)((longlong)puVar5 + 0xc);
  puVar5[1] = 0;
  _Memory = (void *)*puVar1;
  *puVar1 = uVar4;
  *(undefined4 *)(param_1 + 0x50) = uVar2;
  *(undefined4 *)((longlong)param_1 + 0x284) = uVar3;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180579d90 size=366 ############

void FUN_180579d90(longlong *param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  
  iVar4 = *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (iVar4 < 1) {
      return;
    }
    iVar4 = iVar4 + -1;
    if ((*(int *)((longlong)param_1 + 0xc) <= iVar4) &&
       (iVar4 = *(int *)((longlong)param_1 + 0xc) + -1, iVar4 < 0)) break;
    lVar3 = *param_2;
    plVar1 = *(longlong **)(*param_1 + (longlong)iVar4 * 8);
    if ((undefined **)*plVar1 == CloudyTutorialEngine::vftable) {
      if (*(int *)((longlong)plVar1 + 0x2c) < 1) {
        lVar5 = 0;
      }
      else {
        lVar5 = *(longlong *)(plVar1[4] + (longlong)(*(int *)((longlong)plVar1 + 0x2c) + -1) * 8);
      }
      lVar2 = plVar1[2];
      if (((lVar2 == lVar5) || (*(char *)(lVar3 + 0x8c) == '\0')) ||
         (lVar3 = (*(longlong *)(lVar3 + 0x78) - *(longlong *)(lVar3 + 0x70)) / 0x60, lVar3 == 0)) {
        if ((ulonglong)((*(longlong *)(lVar2 + 0x78) - *(longlong *)(lVar2 + 0x70)) / 0x60) <=
            (ulonglong)(longlong)*(int *)(lVar2 + 0x88)) {
          if (*(int *)((longlong)plVar1 + 0x2c) < 1) {
            lVar3 = 0;
          }
          else {
            lVar3 = *(longlong *)
                     (plVar1[4] + (longlong)(*(int *)((longlong)plVar1 + 0x2c) + -1) * 8);
          }
          if (lVar2 == lVar3) {
            if ((longlong *)plVar1[0x19d] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
              std::_Xbad_function_call();
            }
            (**(code **)(*(longlong *)plVar1[0x19d] + 0x10))();
          }
        }
        FUN_1812a77d0(plVar1[6] + 0x1e0,0x10);
        FUN_1814c7ab0(plVar1 + -0x19);
      }
      else {
        FUN_1814c7ed0(plVar1 + -0x19,CONCAT71((int7)((ulonglong)lVar3 >> 8),1));
      }
    }
    else {
      (*(code *)((undefined **)*plVar1)[2])(plVar1);
    }
  }
  return;
}



############ FUN_ 18058b630 size=529 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
               (longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined **ppuVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  longlong *plVar6;
  uint *puVar7;
  undefined4 uVar8;
  undefined1 auStack_a8 [32];
  undefined8 local_88;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  longlong local_78;
  undefined **local_70;
  longlong local_68;
  undefined **local_60;
  undefined8 local_58;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined8 *local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_38 = param_3;
  plVar6 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 0x18) + 0x10))
                     (*(longlong **)(param_1 + 0x18),&local_78);
  iVar5 = 0;
  iVar4 = iVar5;
  if (*param_2 != *plVar6) {
    iVar4 = FUN_18048cbc0(*param_2,*plVar6);
  }
  puVar7 = (uint *)(local_78 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if (iVar4 == 0) {
    ppuVar2 = (undefined **)**(longlong **)(param_1 + 0x18);
    if (ppuVar2 == Soothe2GainRangeScalingOption::vftable) {
      iVar4 = (**(code **)(*(longlong *)*param_3 + 8))((longlong *)*param_3,param_3 + 1);
      if ((iVar4 == 2) ||
         ((uVar8 = DAT_1824c41e0, iVar4 != 1 && (uVar8 = DAT_1824c4388, iVar4 != 0)))) {
        uVar8 = DAT_1824c3ea4;
      }
    }
    else {
      uVar8 = (*(code *)ppuVar2[6])(*(longlong **)(param_1 + 0x18),param_3);
    }
    plVar6 = *(longlong **)(param_1 + 0x10);
    if (plVar6 != (longlong *)0x0) {
      *(undefined4 *)((longlong)plVar6 + 0x20c) = uVar8;
      FUN_18058d330(plVar6);
      (**(code **)(*plVar6 + 0x108))(plVar6);
      uStack_7c = *(undefined4 *)((longlong)plVar6 + 0x2c);
      uStack_80 = (undefined4)plVar6[5];
      local_88 = 0;
      local_48 = 0;
      uStack_44 = 0;
      uStack_40 = uStack_80;
      uStack_3c = uStack_7c;
      FUN_181342870(plVar6,&local_48,1);
    }
  }
  else {
    local_70 = NoOpenGLOption::vftable;
    plVar6 = (longlong *)
             (*(code *)
               PTR_vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData_____1824b1648
             )(&local_70,&local_68);
    if (*param_2 != *plVar6) {
      iVar5 = FUN_18048cbc0(*param_2,*plVar6);
    }
    puVar7 = (uint *)(local_68 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (iVar5 == 0) {
      local_60 = NoOpenGLOption::vftable;
      cVar3 = FUN_18055e400(&local_60);
      if (cVar3 == '\0') {
        iVar4 = *(int *)(param_1 + 0x97b4);
      }
      else {
        iVar4 = *(int *)(param_1 + 0x97b0);
      }
      if (*(int *)(param_1 + -0x10) != iVar4) {
        FUN_1812a7720(param_1 + -0x20);
        FUN_1812a77d0(param_1 + -0x20,iVar4);
      }
    }
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814ec2d0 size=565 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814ec2d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4,
                  undefined8 param_5,undefined8 param_6,longlong *param_7)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  uint uVar3;
  longlong *plVar4;
  undefined8 uVar5;
  uint *_Memory;
  undefined1 auStack_e8 [32];
  undefined8 local_c8;
  longlong *local_c0;
  longlong local_b8;
  undefined8 *local_b0;
  undefined8 *local_a8;
  undefined8 local_a0;
  undefined8 *local_98;
  longlong *local_90;
  undefined **local_88;
  undefined8 *local_80;
  undefined ***local_50;
  ulonglong local_48;
  
  local_a0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_90 = param_7;
  local_b8 = *param_7;
  if ((*(uint *)(local_b8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_b8 + -0x10) = *(int *)(local_b8 + -0x10) + 1;
    UNLOCK();
  }
  local_c0 = &local_b8;
  local_c8 = param_6;
  local_98 = param_1;
  FUN_1814ec5a0(param_1,param_2,param_3,param_5);
  *param_1 = PulsatingToggleButton::vftable;
  param_1[0x16] = PulsatingToggleButton::vftable;
  param_1[0x19] = PulsatingToggleButton::vftable;
  param_1[0x1b] = PulsatingToggleButton::vftable;
  param_1[0x1c] = PulsatingToggleButton::vftable;
  local_88 = std::_Func_impl_no_alloc<<lambda_79d588727a77a393ea82519de697e483>,void>::vftable;
  local_50 = &local_88;
  puVar1 = param_1 + 0x7c;
  param_1[0x7d] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x7e) = 0;
  *puVar1 = PulsatingToggleButton::PulseAnimation::vftable;
  param_1[0x7f] = 2;
  param_1[0x80] = (longlong)param_1 + 0x31c;
  param_1[0x81] = 0;
  local_a8 = param_1 + 0x82;
  param_1[0x89] = 0;
  local_b0 = puVar1;
  local_80 = param_1;
  FUN_180488560(local_a8,&local_88);
  *(undefined4 *)(param_1 + 0x8a) = 0;
  if (local_50 != (undefined ***)0x0) {
    (*(code *)(*local_50)[4])(local_50,local_50 != &local_88);
  }
  puVar2 = param_1 + 0x8b;
  param_1[0x8c] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x8d) = 0;
  *puVar2 = PulsatingToggleButton::PulseAnimationController::vftable;
  local_b0 = param_1 + 0x8f;
  param_1[0x96] = 0;
  plVar4 = (longlong *)param_4[7];
  local_a8 = puVar2;
  if (plVar4 != (longlong *)0x0) {
    if (plVar4 == param_4) {
      uVar5 = (**(code **)(*plVar4 + 8))(plVar4,local_b0);
      param_1[0x96] = uVar5;
      plVar4 = (longlong *)param_4[7];
      if (plVar4 == (longlong *)0x0) goto LAB_1814ec4ad;
      (**(code **)(*plVar4 + 0x20))(plVar4,plVar4 != param_4);
    }
    else {
      param_1[0x96] = plVar4;
    }
    param_4[7] = 0;
  }
LAB_1814ec4ad:
  param_1[0x8e] = param_1;
  FUN_1812a77d0(puVar2,100);
  FUN_1812a77d0(puVar1,0x21);
  _Memory = (uint *)(*param_7 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181184550 size=55 ############

undefined8 * FUN_181184550(undefined8 *param_1,undefined4 param_2,undefined8 param_3)

{
  param_1[1] = 0xffffffffffffffff;
  *param_1 = AutoCueState::Delayed::vftable;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = param_3;
  *(undefined4 *)(param_1 + 4) = param_2;
  FUN_1812a77d0();
  return param_1;
}



############ FUN_ 181211070 size=63 ############

undefined8 * FUN_181211070(undefined8 *param_1)

{
  param_1[1] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 2) = 0;
  *param_1 = CloudyAsyncCaller::vftable;
  *(undefined4 *)(param_1 + 3) = 0x400;
  param_1[0xb] = 0;
  FUN_1812a77d0(param_1,0x10);
  return param_1;
}



############ FUN_ 1812dd650 size=239 ############

void FUN_1812dd650(longlong param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1812e1fc0();
  if (*(char *)(param_1 + 0x1f2) != '\0') {
    *(undefined4 *)(param_1 + 0x2f8) = 0;
    FUN_1812e0940(param_1,*(undefined8 *)(param_1 + 0x280));
    iVar1 = FUN_1812dbb90();
    iVar3 = 0;
    if (iVar1 < 0) {
      iVar3 = iVar1;
    }
    if (iVar3 != *(int *)(param_1 + 0x2a4)) {
      *(int *)(param_1 + 0x2a4) = iVar3;
      FUN_1812a77d0(*(longlong *)(param_1 + 0x1d0) + 0xb0,0x15e);
      FUN_1812e0240(param_1);
      FUN_1812e16d0(param_1);
    }
    *(ulonglong *)(param_1 + 0x280) =
         CONCAT44(*(undefined4 *)(param_1 + 0x2a4),*(undefined4 *)(param_1 + 0x2a4));
    uVar2 = FUN_1812dbb90(param_1);
    FUN_1812e0100(param_1,uVar2,1);
  }
  FUN_1812e0ae0(param_1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  FUN_1812e16d0(param_1);
  return;
}



############ FUN_ 1812de5a0 size=187 ############

void FUN_1812de5a0(longlong param_1,longlong param_2)

{
  undefined4 uVar1;
  
  FUN_1812e1fc0();
  FUN_1812a77d0(*(longlong *)(param_1 + 0x1d0) + 0xb0,0x15e);
  if ((((*(char *)(param_1 + 500) != '\0') || (*(char *)(param_1 + 0x1f2) == '\0')) &&
      (*(char *)(param_2 + 0x59) == '\0')) &&
     ((*(char *)(param_1 + 0x1f1) == '\0' || ((*(uint *)(param_2 + 0x10) >> 5 & 1) == 0)))) {
    uVar1 = FUN_1812db7b0(param_1);
    FUN_1812e08d0(param_1,uVar1);
  }
  *(undefined1 *)(param_1 + 500) = 1;
  return;
}



############ FUN_ 1812f1090 size=117 ############

void FUN_1812f1090(longlong param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  char cVar3;
  undefined8 *puVar4;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  cVar3 = FUN_1804fc2d0(*(undefined8 *)(param_1 + 0x18));
  if (cVar3 != '\0') {
    FUN_1812a77d0(param_1,0x32);
    local_res8 = *(undefined4 *)(param_2 + 8);
    uStackX_c = *(undefined4 *)(param_2 + 0xc);
    uVar2 = *(undefined8 *)(param_2 + 8);
    for (lVar1 = *(longlong *)(param_2 + 0x30); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
      puVar4 = (undefined8 *)FUN_18051e290(&local_res8,lVar1,uVar2);
      uVar2 = *puVar4;
    }
    FUN_1804fe350(param_1);
  }
  return;
}



############ FUN_ 1812f2b40 size=486 ############

void FUN_1812f2b40(longlong param_1,undefined8 param_2,uint *param_3)

{
  longlong *plVar1;
  int *piVar2;
  longlong *plVar3;
  int iVar4;
  char cVar5;
  uint uVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  longlong *plVar10;
  undefined8 uVar11;
  longlong *local_50;
  longlong *local_48;
  undefined8 *local_38;
  
  uVar11 = 0xfffffffffffffffe;
  if (((*(longlong *)(param_1 + 0x20) != 0) && ((param_3[1] & 0x20) == 0)) &&
     (uVar6 = 0, 0 < *(int *)(param_1 + 0x34))) {
    plVar3 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    do {
      if (uVar6 < *(uint *)(param_1 + 0x34)) {
        puVar8 = (undefined8 *)(*(longlong *)(param_1 + 0x28) + (longlong)(int)uVar6 * 8);
      }
      else {
        if ((*(int *)(*plVar3 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        puVar8 = &DAT_18267af68;
      }
      (**(code **)(**(longlong **)(param_1 + 0x20) + 0x18))
                (*(longlong **)(param_1 + 0x20),&local_50,uVar6,puVar8,uVar11);
      uVar9 = (ulonglong)*param_3;
      if (local_50 != local_48) {
        plVar7 = local_50 + 10;
        plVar10 = local_48;
        do {
          if ((((int)plVar7[-9] == (int)uVar9) && (plVar7[4] != 0)) ||
             ((*plVar7 != 0 && (cVar5 = FUN_1812f00d0(*plVar7,uVar9 & 0xffffffff), cVar5 != '\0'))))
          {
            if (*(uint *)(param_1 + 0x50) != uVar6) {
              FUN_1812f3ae0(param_1 + -0xb0);
              *(uint *)(param_1 + 0x50) = uVar6;
              FUN_1812f3ae0(param_1 + -0xb0,uVar6);
            }
            FUN_1812a77d0(param_1 + 8,200);
            if (local_38 != (undefined8 *)0x0) {
              LOCK();
              piVar2 = (int *)(local_38 + 1);
              iVar4 = *piVar2;
              *piVar2 = *piVar2 + -1;
              UNLOCK();
              if (iVar4 == 1) {
                (**(code **)*local_38)(local_38,1);
              }
            }
            FUN_18051c930(&local_50);
            return;
          }
          plVar1 = plVar7 + 7;
          plVar7 = plVar7 + 0x11;
        } while (plVar1 != plVar10);
      }
      if (local_38 != (undefined8 *)0x0) {
        LOCK();
        piVar2 = (int *)(local_38 + 1);
        iVar4 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar4 == 1) {
          (**(code **)*local_38)(local_38,1);
        }
      }
      FUN_18051c930(&local_50);
      uVar6 = uVar6 + 1;
    } while ((int)uVar6 < *(int *)(param_1 + 0x34));
  }
  return;
}



############ FUN_ 181324840 size=140 ############

void FUN_181324840(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  int iVar2;
  int *piVar3;
  
  if (*(longlong *)(param_1 + 200) != *param_2) {
    iVar2 = FUN_18049bb30(*(undefined8 *)(param_1 + 200));
    if (iVar2 != 0) {
      if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar3 = (int *)(*param_2 + -0x10);
        *piVar3 = *piVar3 + 1;
        UNLOCK();
      }
      LOCK();
      lVar1 = *(longlong *)(param_1 + 200);
      *(longlong *)(param_1 + 200) = *param_2;
      UNLOCK();
      piVar3 = (int *)(lVar1 + -0x10);
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar3);
        }
      }
      FUN_1812a77d0(param_1 + 0xb0,100);
    }
  }
  return;
}



############ FUN_ 181335ab0 size=396 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181335ab0(longlong *param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  double dVar6;
  
  if (*(char *)((longlong)param_1 + 0x1c3) != '\0') {
    FUN_1812a7720(param_1[0x2e]);
    FUN_181336e60(param_1);
    *(undefined1 *)((longlong)param_1 + 0x1c3) = 0;
    return;
  }
  if (0 < *(int *)((longlong)param_1 + 0x18c)) {
    if (*(char *)((longlong)param_1 + 0x1c4) == '\0') {
      iVar2 = FUN_181336e60();
      if (iVar2 != 2) goto LAB_181335c1c;
    }
    iVar2 = *(int *)((longlong)param_1 + 0x18c);
    if (-1 < (int)param_1[0x32]) {
      uVar3 = DAT_1826737fc;
      if (DAT_1826737fc == 0) {
        uVar3 = timeGetTime();
        if (uVar3 < DAT_1826737fc) {
          if (uVar3 < DAT_1826737fc - 1000) {
            LOCK();
            UNLOCK();
            DAT_1826737fc = uVar3;
          }
        }
        else {
          LOCK();
          UNLOCK();
          DAT_1826737fc = uVar3;
        }
      }
      uVar4 = 0;
      if (*(uint *)(param_1 + 0x2f) < uVar3) {
        uVar4 = uVar3 - *(uint *)(param_1 + 0x2f);
      }
      dVar6 = (double)uVar4 / _DAT_1824c4368;
      if (DAT_1824c4140 <= (double)uVar4 / _DAT_1824c4368) {
        dVar6 = DAT_1824c4140;
      }
      iVar2 = iVar2 + (int)(dVar6 * dVar6 * (double)((int)param_1[0x32] - iVar2));
    }
    iVar1 = 1;
    if (1 < iVar2) {
      iVar1 = iVar2;
    }
    iVar5 = FUN_181228e30();
    iVar2 = iVar1;
    if ((*(int *)((longlong)param_1 + 0x17c) != 0) &&
       (iVar1 * 2 < iVar5 - *(int *)((longlong)param_1 + 0x17c))) {
      iVar2 = 1;
      if (1 < iVar1 / 2) {
        iVar2 = iVar1 / 2;
      }
    }
    *(int *)((longlong)param_1 + 0x17c) = iVar5;
    FUN_1812a77d0(param_1[0x2e],iVar2);
                    /* WARNING: Could not recover jumptable at 0x000181335c15. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x180))(param_1,&DAT_182673aec);
    return;
  }
LAB_181335c1c:
  if (*(char *)((longlong)param_1 + 0x1c2) == '\0') {
    FUN_1812a7720(param_1[0x2e]);
    return;
  }
  return;
}



############ FUN_ 181335cf0 size=233 ############

undefined8 FUN_181335cf0(longlong *param_1)

{
  char cVar1;
  char cVar2;
  
  if (((*(byte *)((longlong)param_1 + 0xa9) & 0x10) != 0) ||
     ((param_1[3] != 0 && (cVar1 = FUN_18133eaa0(), cVar1 == '\0')))) {
    return 0;
  }
  cVar1 = *(char *)((longlong)param_1 + 0x1c4);
  cVar2 = FUN_181335e90(param_1);
  *(char *)((longlong)param_1 + 0x1c4) = cVar2;
  if (((-1 < (int)param_1[0x31]) && (cVar2 != '\0')) && (cVar1 == '\0')) {
    FUN_1812a77d0(param_1[0x2e]);
  }
  FUN_181336e60(param_1);
  if (((*(byte *)((longlong)param_1 + 0xa9) & 0x10) == 0) &&
     ((param_1[3] == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
    if (cVar1 == '\0') goto LAB_181335dab;
    if (*(char *)((longlong)param_1 + 0x1c4) == '\0') {
      (**(code **)(*param_1 + 0x180))(param_1,&DAT_182673aec);
      return 1;
    }
  }
  if (cVar1 != '\0') {
    return 1;
  }
LAB_181335dab:
  if (*(char *)((longlong)param_1 + 0x1c4) != '\0') {
    return 1;
  }
  return 0;
}



############ FUN_ 1813363e0 size=181 ############

void .?AVSoothe2_DynamicCryptoManager@eden@pace@@::vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
               (longlong param_1,undefined8 *param_2)

{
  int iVar1;
  undefined1 uVar2;
  float fVar3;
  float fStackX_c;
  
  iVar1 = *(int *)(param_1 + 0x1a0);
  if (*(int *)(param_2[10] + 0x14) - 1U < 2) {
    fVar3 = (float)*param_2;
    if ((((fVar3 < 0.0) || (fStackX_c = (float)((ulonglong)*param_2 >> 0x20), fStackX_c < 0.0)) ||
        ((float)*(int *)(param_1 + 0x28) + 0.0 <= fVar3)) ||
       ((float)*(int *)(param_1 + 0x2c) + 0.0 <= fStackX_c)) {
      uVar2 = 0;
    }
    else {
      uVar2 = 1;
    }
  }
  else {
    uVar2 = FUN_18133e590(param_1,0);
  }
  FUN_181336db0(param_1,uVar2,1);
  if (((-1 < *(int *)(param_1 + 0x188)) && (*(int *)(param_1 + 0x1a0) != iVar1)) &&
     (*(int *)(param_1 + 0x1a0) == 2)) {
    FUN_1812a77d0(*(undefined8 *)(param_1 + 0x170),*(undefined4 *)(param_1 + 0x18c));
  }
  return;
}



############ FUN_ 1813365f0 size=159 ############

void .?AVSoothe2_DynamicCryptoManager@eden@pace@@::vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
               (longlong *param_1,longlong param_2)

{
  char cVar1;
  undefined4 uVar2;
  
  uVar2 = 0;
  if ((*(byte *)((longlong)param_1 + 0xa9) & 0x10) == 0) {
    uVar2 = 0;
    if (param_1[3] != 0) {
      cVar1 = FUN_18133eaa0();
      if (cVar1 == '\0') goto LAB_18133663d;
    }
    if ((*(byte *)(param_1 + 0x15) & 2) != 0) {
      cVar1 = FUN_181343030(param_1);
      uVar2 = 0;
      if (cVar1 == '\0') {
        uVar2 = 2;
      }
    }
  }
LAB_18133663d:
  FUN_181336cf0(param_1,uVar2);
  if ((int)param_1[0x34] == 2) {
    if (-1 < (int)param_1[0x31]) {
      FUN_1812a77d0(param_1[0x2e]);
    }
    if (*(char *)((longlong)param_1 + 0x1c5) != '\0') {
      (**(code **)(*param_1 + 0x180))(param_1,param_2 + 0x10);
    }
  }
  return;
}



############ FUN_ 181336a80 size=125 ############

void FUN_181336a80(longlong *param_1,int param_2)

{
  char cVar1;
  longlong lVar2;
  
  if (param_2 != 0x2f3f4f99) {
    return;
  }
  if ((*(byte *)((longlong)param_1 + 0xa9) & 0x10) != 0) {
    return;
  }
  lVar2 = param_1[3];
  if (lVar2 != 0) {
    cVar1 = FUN_18133eaa0(lVar2);
    if (cVar1 == '\0') {
      return;
    }
    if ((lVar2 != 0) && (cVar1 = FUN_18133eaa0(lVar2), cVar1 == '\0')) goto LAB_181336ae4;
  }
  *(undefined1 *)((longlong)param_1 + 0x1c2) = 1;
  FUN_181336cf0(param_1,2);
  FUN_1812a77d0(param_1[0x2e],100);
LAB_181336ae4:
  (**(code **)(*param_1 + 0x180))(param_1,&DAT_182673aec);
  return;
}



############ FUN_ 181338f70 size=153 ############

void FUN_181338f70(longlong *param_1,ulonglong *param_2)

{
  char cVar1;
  undefined8 uVar2;
  
  FUN_1812a77d0(param_1 + 0x16,0x17c);
  if (param_1[0x19] == 0) {
LAB_181338fb3:
    uVar2 = 1;
  }
  else {
    if (DAT_182673708 == param_1[0x19]) {
      cVar1 = FUN_181343030();
      if (cVar1 == '\0') goto LAB_181338fb3;
    }
    uVar2 = 0;
  }
  (**(code **)(*param_1 + 0x58))(param_1,uVar2);
  FUN_18134bfe0(param_1,(int)*param_2,*param_2 >> 0x20,2,*(undefined4 *)((longlong)param_2 + 0xc));
  return;
}



############ FUN_ 181339290 size=257 ############

void FUN_181339290(longlong param_1,longlong param_2,char param_3)

{
  int iVar1;
  int iVar2;
  undefined8 uVar3;
  longlong lVar4;
  int iVar5;
  double dVar6;
  undefined1 local_78 [96];
  
  lVar4 = FUN_181339840(param_2,local_78,*(undefined8 *)(param_1 + 0x20));
  iVar1 = *(int *)(lVar4 + 8);
  iVar2 = *(int *)(lVar4 + 0xc);
  uVar3 = *(undefined8 *)(lVar4 + 8);
  if (*(char *)(param_1 + 0x48) == '\0') {
    if ((param_3 == '\0') && (*(int *)(*(longlong *)(param_2 + 0x50) + 0x14) != 1)) {
      dVar6 = _hypot((double)(iVar1 - (int)*(undefined8 *)(param_1 + 0x38)),
                     (double)(iVar2 - (int)((ulonglong)*(undefined8 *)(param_1 + 0x38) >> 0x20)));
      if ((int)dVar6 <= *(int *)(param_1 + 0x44)) goto LAB_181339357;
    }
    if (*(char *)(param_1 + 0x48) != '\x01') {
      *(undefined1 *)(param_1 + 0x48) = 1;
      iVar5 = *(int *)(param_1 + 0x34);
      while (0 < iVar5) {
        iVar5 = iVar5 + -1;
        if ((*(int *)(param_1 + 0x34) <= iVar5) &&
           (iVar5 = *(int *)(param_1 + 0x34) + -1, iVar5 < 0)) break;
        (**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x28) + (longlong)iVar5 * 8) + 8))();
      }
    }
  }
LAB_181339357:
  if ((*(int *)(param_1 + 0x38) != iVar1) || (*(int *)(param_1 + 0x3c) != iVar2)) {
    *(undefined8 *)(param_1 + 0x38) = uVar3;
    FUN_1812a77d0(param_1,*(undefined4 *)(param_1 + 0x40));
  }
  return;
}



############ FUN_ 1813c10e0 size=719 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813c10e0(longlong *param_1,longlong param_2)

{
  int iVar1;
  int *piVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 extraout_XMM0_Qa;
  undefined8 *local_res8;
  undefined8 local_res10;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  undefined8 local_148;
  undefined8 local_140;
  undefined4 local_138;
  char local_134;
  undefined8 local_130;
  undefined8 local_128;
  undefined4 local_120;
  char local_11c;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 *apuStack_100 [3];
  undefined8 local_e8;
  undefined1 local_e0 [20];
  char local_cc;
  undefined1 local_c8 [20];
  char local_b4;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined8 local_a0;
  undefined8 uStack_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined4 local_78;
  undefined1 local_74;
  undefined4 local_70;
  undefined **local_68;
  undefined1 *local_60;
  undefined8 *local_58;
  undefined ***local_30;
  
  local_e8 = 0xfffffffffffffffe;
  FUN_1813c7aa0(param_1[0x19]);
  FUN_1812a77d0(param_1[0x80],600);
  *(undefined4 *)(param_1 + 0x82) = 0;
  if ((*(uint *)(param_2 + 0x10) >> 5 & 1) != 0) {
    local_res10 = 0;
    FUN_181342db0(param_1,&local_res10);
    piVar2 = (int *)(**(code **)(param_1[0x18] + 0x10))(param_1 + 0x18,local_res18);
    if (*piVar2 == piVar2[1]) {
      local_130 = 0;
      local_128 = 0;
      local_120 = 0;
      local_11c = '\0';
      local_148 = 0;
      local_140 = 0;
      local_138 = 0;
      local_134 = '\0';
      uVar3 = FUN_1813c4b30(param_1,local_e0,*(undefined4 *)(param_2 + 8),
                            *(undefined4 *)(param_2 + 0xc));
      FUN_1813c7120(extraout_XMM0_Qa,uVar3,&local_130,&local_148);
      if (local_cc != '\0') {
        FUN_1813c8030(local_e0,0);
      }
      if ((int)local_128 < (int)local_140) {
        FUN_1813c51c0(param_1,&local_130,0);
        FUN_1813c51c0(param_1,&local_148,1);
      }
      if (local_134 != '\0') {
        FUN_1813c8030(&local_148,0);
      }
      if (local_11c != '\0') {
        FUN_1813c8030(&local_130,0);
      }
    }
    local_118 = 0;
    uStack_110 = 0;
    local_108 = 0;
    apuStack_100[0] = (undefined8 *)0x0;
    uVar3 = FUN_18134adf0(param_1);
    FUN_18051b750(apuStack_100,uVar3);
    (**(code **)(*param_1 + 0x198))(param_1,&local_118,param_2);
    local_b0 = 0;
    uStack_a8 = 0;
    local_a0 = 0;
    uStack_98 = 0;
    local_90 = 0;
    local_88 = _DAT_1824c47c0;
    uStack_80 = _UNK_1824c47c8;
    local_78 = 0;
    local_74 = 0;
    local_70 = 1;
    puVar4 = (undefined8 *)FUN_18133c1f0(local_res20);
    local_b0 = *puVar4;
    FUN_1804de690(&local_res8,param_1);
    puVar4 = local_res8;
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
      UNLOCK();
    }
    local_68 = std::_Func_impl_no_alloc<<lambda_5e26f902589a28a39046b22ea2c926ad>,void,int>::vftable
    ;
    local_60 = &LAB_1813c13c0;
    local_58 = local_res8;
    local_30 = &local_68;
    uVar3 = FUN_181347bc0(&local_68);
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar2 = (int *)(puVar4 + 1);
      iVar1 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar1 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    FUN_1812f0230(&local_118,&local_b0,uVar3);
    if (apuStack_100[0] != (undefined8 *)0x0) {
      LOCK();
      piVar2 = (int *)(apuStack_100[0] + 1);
      iVar1 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar1 == 1) {
        (**(code **)*apuStack_100[0])(apuStack_100[0],1);
      }
    }
    FUN_18051c930(&local_118);
    return;
  }
  lVar5 = FUN_18134b820();
  if (*(int *)(*(longlong *)(lVar5 + 0x30) + 0x10) != 100) {
    FUN_1812a77d0(*(longlong *)(lVar5 + 0x30),100);
  }
  uVar3 = FUN_1813c4b30(param_1,local_c8,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc)
                       );
  FUN_1813c51c0(param_1,uVar3,*(byte *)(param_2 + 0x10) & 1);
  if (local_b4 != '\0') {
    FUN_1813c8030(local_c8,0);
  }
  return;
}



############ FUN_ 1813c41b0 size=1533 ############

void FUN_1813c41b0(longlong param_1,int param_2)

{
  byte bVar1;
  char cVar2;
  uint uVar3;
  undefined8 *puVar4;
  byte bVar5;
  longlong *plVar6;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  byte bVar10;
  uint uVar11;
  uint *puVar12;
  longlong lVar13;
  ulonglong uVar14;
  longlong *plVar15;
  ulonglong uVar16;
  longlong *plVar17;
  uint uVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  bool bVar21;
  bool bVar22;
  byte *local_res8;
  byte *local_res18;
  longlong local_res20;
  longlong *local_f8;
  int local_f0;
  undefined8 local_ec;
  char local_e4;
  longlong *local_e0;
  int local_d8;
  undefined8 local_d4;
  char local_cc;
  longlong local_c8;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  char local_b4;
  longlong local_b0;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  char local_9c;
  longlong local_98;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  char local_84;
  longlong local_80;
  longlong *local_78;
  longlong *local_70;
  longlong *local_68;
  undefined8 local_60;
  undefined *local_58;
  
  local_60 = 0xfffffffffffffffe;
  bVar21 = false;
  if (*(char *)(param_1 + 0xf8) == '\0') {
    FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
    FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
    local_68 = (longlong *)(param_1 + 0x120);
    local_98 = *(longlong *)(param_1 + 0x120);
    local_90 = *(undefined4 *)(param_1 + 0x128);
    local_8c = *(undefined4 *)(param_1 + 300);
    local_88 = *(undefined4 *)(param_1 + 0x130);
    local_84 = '\0';
    plVar15 = (longlong *)(param_1 + 0x138);
    local_b0 = *plVar15;
    local_a8 = *(undefined4 *)(param_1 + 0x140);
    local_a4 = *(undefined4 *)(param_1 + 0x144);
    local_a0 = *(undefined4 *)(param_1 + 0x148);
    local_9c = '\0';
    plVar17 = (longlong *)(param_1 + 0x108);
    local_c8 = *plVar17;
    local_c0 = *(undefined4 *)(param_1 + 0x110);
    local_bc = *(undefined4 *)(param_1 + 0x114);
    local_b8 = *(undefined4 *)(param_1 + 0x118);
    local_b4 = '\0';
    local_78 = plVar17;
    local_70 = plVar15;
    FUN_1813c8030(&local_98,1);
    if (local_9c != '\x01') {
      FUN_1813c8030(&local_b0,1);
    }
    if (local_b4 != '\x01') {
      FUN_1813c8030(&local_c8,1);
    }
    uVar19 = (ulonglong)*(int *)(param_1 + 300);
    iVar7 = *(int *)(param_1 + 0x144);
    if ((*(int *)(param_1 + 300) < iVar7) && (*(int *)(param_1 + 0x148) == 0)) {
      iVar7 = iVar7 + -1;
    }
    local_80 = (longlong)iVar7;
    uVar20 = uVar19;
    if ((longlong)uVar19 <= local_80) {
      do {
        uVar18 = (uint)uVar20;
        if ((uVar18 < *(uint *)((longlong)*(longlong **)(param_1 + 200) + 0xc)) &&
           (puVar4 = *(undefined8 **)(**(longlong **)(param_1 + 200) + uVar19 * 8),
           puVar4 != (undefined8 *)0x0)) {
          local_res8 = (byte *)*puVar4;
          if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
            UNLOCK();
          }
        }
        else {
          local_res8 = &DAT_1821dbf98;
        }
        uVar14 = 0;
        pbVar9 = local_res8;
        bVar22 = *local_res8 == 0;
        while (!bVar22) {
          bVar1 = *pbVar9;
          if ((bVar1 != 0x20) && (4 < (byte)(bVar1 - 9))) {
            if ((int)uVar14 < 1) goto LAB_1813c440a;
            goto LAB_1813c4392;
          }
          pbVar9 = pbVar9 + 1;
          if ((char)bVar1 < '\0') {
            bVar10 = 0x40;
            bVar5 = bVar1 & 0x40;
            while ((bVar5 != 0 && (8 < bVar10))) {
              pbVar9 = pbVar9 + 1;
              bVar10 = bVar10 >> 1;
              bVar5 = bVar1 & bVar10;
            }
          }
          uVar14 = (ulonglong)((int)uVar14 + 1);
          bVar22 = *pbVar9 == 0;
        }
        uVar14 = 0;
LAB_1813c440a:
        pbVar9 = local_res8;
        if (*local_res8 == 0) {
LAB_1813c4454:
          local_res18 = local_res8;
          if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
            UNLOCK();
          }
        }
        else {
          while ((bVar1 = *pbVar9, bVar1 == 0x20 || ((byte)(bVar1 - 9) < 5))) {
            pbVar9 = pbVar9 + 1;
            if ((char)bVar1 < '\0') {
              bVar10 = 0x40;
              bVar5 = bVar1 & 0x40;
              while ((bVar5 != 0 && (8 < bVar10))) {
                pbVar9 = pbVar9 + 1;
                bVar10 = bVar10 >> 1;
                bVar5 = bVar1 & bVar10;
              }
            }
          }
          if (pbVar9 == local_res8) goto LAB_1813c4454;
          FUN_18049c9e0(&local_res18);
        }
        bVar21 = true;
        if (*local_res18 == 0) {
          bVar22 = false;
        }
        else {
LAB_1813c4392:
          bVar22 = true;
        }
        if (bVar21) {
          bVar21 = false;
          puVar12 = (uint *)(local_res18 + -0x10);
          if ((*puVar12 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar12;
            *puVar12 = *puVar12 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar12);
            }
          }
        }
        if (bVar22) {
          local_f8 = *(longlong **)(param_1 + 200);
          uVar16 = 0;
          local_e4 = '\0';
          iVar7 = *(int *)((longlong)local_f8 + 0xc);
          if (iVar7 == 0) {
            local_ec = 0;
            local_f0 = 0;
          }
          else {
            if ((int)uVar18 < iVar7) {
              uVar8 = 0;
              if (0 < (int)uVar18) {
                uVar8 = uVar18;
              }
              lVar13 = *(longlong *)(*local_f8 + (longlong)(int)uVar8 * 8);
              uVar3 = *(uint *)(lVar13 + 0x10);
              uVar11 = 0;
              if ((0 < (int)uVar3) && (uVar11 = 0, (int)uVar3 < 0)) {
                uVar11 = uVar3;
              }
            }
            else {
              uVar8 = iVar7 - 1;
              lVar13 = *(longlong *)(*local_f8 + (longlong)(int)uVar8 * 8);
              uVar11 = *(uint *)(lVar13 + 0x10);
            }
            local_ec = CONCAT44(uVar11,uVar8);
            local_f0 = uVar11 + *(int *)(lVar13 + 8);
          }
          local_cc = '\0';
          iVar7 = *(int *)((longlong)local_f8 + 0xc);
          if (iVar7 == 0) {
            local_d4 = 0;
            local_d8 = 0;
            uVar14 = uVar16;
          }
          else {
            if ((int)uVar18 < iVar7) {
              uVar8 = 0;
              if (0 < (int)uVar18) {
                uVar8 = uVar18;
              }
              lVar13 = *(longlong *)(*local_f8 + (longlong)(int)uVar8 * 8);
              uVar3 = *(uint *)(lVar13 + 0x10);
              if ((int)uVar3 < 1) {
                uVar14 = 0;
                local_d4 = (ulonglong)uVar8;
              }
              else if ((int)uVar14 < 0) {
                local_d4 = (ulonglong)uVar8;
                uVar14 = uVar16;
              }
              else {
                if ((int)uVar3 < (int)uVar14) {
                  uVar14 = (ulonglong)uVar3;
                }
                local_d4 = CONCAT44((int)uVar14,uVar8);
              }
            }
            else {
              lVar13 = *(longlong *)(*local_f8 + (longlong)(iVar7 + -1) * 8);
              local_d4 = CONCAT44(*(uint *)(lVar13 + 0x10),iVar7 + -1);
              uVar14 = (ulonglong)*(uint *)(lVar13 + 0x10);
            }
            local_d8 = *(int *)(lVar13 + 8) + (int)uVar14;
          }
          local_e0 = local_f8;
          iVar7 = FUN_1813c0b30(param_1,uVar20 & 0xffffffff,uVar14);
          if (0 < param_2 + iVar7) {
            uVar16 = (ulonglong)(uint)(param_2 + iVar7);
          }
          if ((int)uVar16 != iVar7) {
            FUN_1813c7b70(*(undefined8 *)(param_1 + 200),local_f0,local_d8);
            if (*(char *)(param_1 + 0xf9) == '\0') {
              uVar16 = (longlong)(int)uVar16 / (longlong)*(int *)(param_1 + 0xdc) & 0xffffffff;
            }
            local_58 = &DAT_1821e4a64;
            if (*(char *)(param_1 + 0xf9) != '\0') {
              local_58 = &DAT_1821e4a94;
            }
            FUN_181231fc0(&local_res20,local_58,uVar16);
            FUN_1813c6950(*(undefined8 *)(param_1 + 200),&local_res20,local_f0,1);
            puVar12 = (uint *)(local_res20 + -0x10);
            if ((*puVar12 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar12;
              *puVar12 = *puVar12 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar12);
              }
            }
          }
          if (local_cc != '\0') {
            FUN_1813c8030(&local_e0,0);
          }
          if (local_e4 != '\0') {
            FUN_1813c8030(&local_f8,0);
          }
        }
        puVar12 = (uint *)(local_res8 + -0x10);
        if ((*puVar12 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar12;
          *puVar12 = *puVar12 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar12);
          }
        }
        uVar20 = (ulonglong)(uVar18 + 1);
        uVar19 = uVar19 + 1;
        plVar15 = local_70;
        plVar17 = local_78;
      } while ((longlong)uVar19 <= local_80);
    }
    plVar6 = local_68;
    if (local_68 != &local_98) {
      cVar2 = *(char *)((longlong)local_68 + 0x14);
      if ((*local_68 != local_98) && (cVar2 != '\0')) {
        FUN_1813c8030(local_68,0);
      }
      *plVar6 = local_98;
      *(undefined4 *)((longlong)plVar6 + 0xc) = local_8c;
      *(undefined4 *)(plVar6 + 2) = local_88;
      *(undefined4 *)(plVar6 + 1) = local_90;
      if (cVar2 != *(char *)((longlong)plVar6 + 0x14)) {
        FUN_1813c8030(plVar6,cVar2);
      }
    }
    if (plVar15 != &local_b0) {
      cVar2 = *(char *)((longlong)plVar15 + 0x14);
      if ((*plVar15 != local_b0) && (cVar2 != '\0')) {
        FUN_1813c8030(plVar15,0);
      }
      *plVar15 = local_b0;
      *(undefined4 *)((longlong)plVar15 + 0xc) = local_a4;
      *(undefined4 *)(plVar15 + 2) = local_a0;
      *(undefined4 *)(plVar15 + 1) = local_a8;
      if (cVar2 != *(char *)((longlong)plVar15 + 0x14)) {
        FUN_1813c8030(plVar15,cVar2);
      }
    }
    if (plVar17 != &local_c8) {
      cVar2 = *(char *)((longlong)plVar17 + 0x14);
      if ((*plVar17 != local_c8) && (cVar2 != '\0')) {
        FUN_1813c8030(plVar17,0);
      }
      *plVar17 = local_c8;
      *(undefined4 *)((longlong)plVar17 + 0xc) = local_bc;
      *(undefined4 *)(plVar17 + 2) = local_b8;
      *(undefined4 *)(plVar17 + 1) = local_c0;
      if (cVar2 != *(char *)((longlong)plVar17 + 0x14)) {
        FUN_1813c8030(plVar17,cVar2);
      }
    }
    if (local_b4 != '\0') {
      FUN_1813c8030(&local_c8,0);
    }
    if (local_9c != '\0') {
      FUN_1813c8030(&local_b0,0);
    }
    if (local_84 != '\0') {
      FUN_1813c8030(&local_98,0);
    }
  }
  return;
}



############ FUN_ 1813c2ab0 size=280 ############

undefined8 FUN_1813c2ab0(longlong param_1,char param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  undefined1 local_20 [20];
  char local_c;
  
  if (param_2 == '\0') {
    plVar1 = (longlong *)(param_1 + 0x138);
    if ((((*(int *)(param_1 + 0x128) == *(int *)(param_1 + 0x140)) &&
         (*(int *)(param_1 + 300) == *(int *)(param_1 + 0x144))) &&
        (*(int *)(param_1 + 0x130) == *(int *)(param_1 + 0x148))) &&
       (*(longlong *)(param_1 + 0x120) == *plVar1)) {
      FUN_1813c8260(plVar1,*(undefined4 *)(param_1 + 0x140),param_3,param_4,0xfffffffffffffffe);
      iVar5 = 1;
      if (*(int *)(param_1 + 0x144) < *(int *)(*plVar1 + 0xc)) {
        lVar2 = *(longlong *)(*(longlong *)*plVar1 + (longlong)*(int *)(param_1 + 0x144) * 8);
        iVar4 = *(int *)(param_1 + 0x148) + 1;
        if (iVar4 < *(int *)(lVar2 + 0xc)) {
          iVar5 = 1;
          if (*(int *)(lVar2 + 0x10) + 1 <= iVar4) {
            iVar5 = 2;
          }
        }
      }
      FUN_1813c8260(plVar1,*(int *)(param_1 + 0x140) + iVar5);
    }
    else {
      FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
      FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
    }
  }
  else {
    FUN_1813c40f0();
    uVar3 = FUN_1813c77b0();
    FUN_1813c51c0(param_1,uVar3,1);
    if (local_c != '\0') {
      FUN_1813c8030(local_20,0);
    }
  }
  FUN_1813c40f0(param_1);
  return 1;
}



############ FUN_ 1813c2ea0 size=263 ############

undefined8 FUN_1813c2ea0(longlong param_1,undefined1 param_2)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  undefined8 uVar4;
  longlong *local_20;
  int local_18;
  undefined8 local_14;
  char local_c;
  
  uVar4 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  iVar1 = *(int *)(param_1 + 0x114);
  local_20 = *(longlong **)(param_1 + 200);
  local_c = '\0';
  iVar3 = *(int *)((longlong)local_20 + 0xc);
  if (iVar3 == 0) {
    local_14 = 0;
    local_18 = 0;
  }
  else if (iVar1 < iVar3) {
    iVar3 = 0;
    if (0 < iVar1) {
      iVar3 = iVar1;
    }
    lVar2 = *(longlong *)(*local_20 + (longlong)iVar3 * 8);
    iVar1 = *(int *)(lVar2 + 0x10);
    local_18 = 0;
    if ((0 < iVar1) && (local_18 = 0x7fffffff, iVar1 < 0x7fffffff)) {
      local_18 = iVar1;
    }
    local_14 = CONCAT44(local_18,iVar3);
    local_18 = local_18 + *(int *)(lVar2 + 8);
  }
  else {
    lVar2 = *(longlong *)(*local_20 + (longlong)(iVar3 + -1) * 8);
    local_18 = *(int *)(lVar2 + 0x10);
    local_14 = CONCAT44(local_18,iVar3 + -1);
    local_18 = local_18 + *(int *)(lVar2 + 8);
  }
  FUN_1813c51c0(param_1,&local_20,param_2,local_20,uVar4);
  if (local_c != '\0') {
    FUN_1813c8030(&local_20,0);
  }
  return 1;
}



############ FUN_ 1813c2fb0 size=249 ############

/* WARNING: Removing unreachable block (ram,0x0001813c3043) */
/* WARNING: Removing unreachable block (ram,0x0001813c3066) */
/* WARNING: Removing unreachable block (ram,0x0001813c305f) */
/* WARNING: Removing unreachable block (ram,0x0001813c3061) */
/* WARNING: Removing unreachable block (ram,0x0001813c3064) */
/* WARNING: Removing unreachable block (ram,0x0001813c3069) */

undefined8 FUN_1813c2fb0(longlong param_1,undefined1 param_2)

{
  longlong lVar1;
  int iVar2;
  undefined8 uVar3;
  longlong *local_20;
  int local_18;
  undefined8 local_14;
  char local_c;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  local_20 = *(longlong **)(param_1 + 200);
  local_c = '\0';
  if (*(int *)((longlong)local_20 + 0xc) == 0) {
    local_14 = 0;
    local_18 = 0;
  }
  else {
    iVar2 = *(int *)((longlong)local_20 + 0xc) + -1;
    lVar1 = *(longlong *)(*local_20 + (longlong)iVar2 * 8);
    local_18 = *(int *)(lVar1 + 0x10);
    local_14 = CONCAT44(local_18,iVar2);
    local_18 = local_18 + *(int *)(lVar1 + 8);
  }
  FUN_1813c51c0(param_1,&local_20,param_2,0,uVar3);
  if (local_c != '\0') {
    FUN_1813c8030(&local_20,0);
  }
  return 1;
}



############ FUN_ 1813c32a0 size=225 ############

undefined8 FUN_1813c32a0(longlong param_1,undefined1 param_2)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong *local_20;
  int local_18;
  int iStack_14;
  int local_10;
  char local_c;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  local_20 = *(longlong **)(param_1 + 200);
  local_c = '\0';
  iStack_14 = *(int *)((longlong)local_20 + 0xc);
  if (iStack_14 == 0) {
    iStack_14 = 0;
    local_10 = 0;
    local_18 = 0;
  }
  else if (iStack_14 < 1) {
    iStack_14 = iStack_14 + -1;
    lVar2 = *(longlong *)(*local_20 + (longlong)iStack_14 * 8);
    local_10 = *(int *)(lVar2 + 0x10);
    local_18 = local_10 + *(int *)(lVar2 + 8);
  }
  else {
    iStack_14 = 0;
    iVar1 = *(int *)(*(longlong *)*local_20 + 0x10);
    local_10 = 0;
    if ((0 < iVar1) && (iVar1 < 0)) {
      local_10 = iVar1;
    }
    local_18 = local_10 + *(int *)(*(longlong *)*local_20 + 8);
  }
  FUN_1813c51c0(param_1,&local_20,param_2,local_20,uVar3);
  if (local_c != '\0') {
    FUN_1813c8030(&local_20,0);
  }
  return 1;
}



############ FUN_ 1813c3390 size=105 ############

undefined8 FUN_1813c3390(longlong param_1)

{
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  FUN_1813c4f20(param_1,*(int *)(param_1 + 0xd8) + -1);
  FUN_1813c4ff0(param_1);
  if (*(int *)(param_1 + 0xe8) + *(int *)(param_1 + 0xd8) <= *(int *)(param_1 + 0x114)) {
    FUN_1813c37b0(param_1,0xffffffff);
  }
  return 1;
}



############ FUN_ 1813c3400 size=99 ############

undefined8 FUN_1813c3400(longlong param_1)

{
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  FUN_1813c4f20(param_1,*(int *)(param_1 + 0xd8) + 1);
  FUN_1813c4ff0(param_1);
  if (*(int *)(param_1 + 0x114) < *(int *)(param_1 + 0xd8)) {
    FUN_1813c37b0(param_1,1);
  }
  return 1;
}



############ FUN_ 1813c3470 size=106 ############

undefined1 FUN_1813c3470(longlong param_1,undefined1 param_2)

{
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  FUN_1813c4f20(param_1,*(int *)(param_1 + 0xd8) - *(int *)(param_1 + 0xe8));
  FUN_1813c4ff0(param_1);
  FUN_1813c37b0(param_1,-*(int *)(param_1 + 0xe8),param_2);
  return 1;
}



############ FUN_ 1813c34e0 size=144 ############

undefined8 FUN_1813c34e0(longlong param_1,undefined1 param_2)

{
  int iVar1;
  int iVar2;
  
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  iVar1 = *(int *)(param_1 + 0xe8);
  iVar2 = ((*(int *)(*(longlong *)(param_1 + 200) + 0xc) - *(int *)(param_1 + 0xd8)) - iVar1) + 1;
  if (iVar2 < 0) {
    iVar2 = 0;
  }
  else if (iVar1 < iVar2) {
    iVar2 = iVar1;
  }
  FUN_1813c4f20(param_1,*(int *)(param_1 + 0xd8) + iVar2);
  FUN_1813c4ff0(param_1);
  FUN_1813c37b0(param_1,*(undefined4 *)(param_1 + 0xe8),param_2);
  return 1;
}



############ FUN_ 1813c3580 size=245 ############

undefined8 FUN_1813c3580(longlong param_1,undefined1 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong *local_20;
  int local_18;
  int iStack_14;
  int local_10;
  char local_c;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  if (*(int *)(param_1 + 0x114) == 0) {
    local_20 = *(longlong **)(param_1 + 200);
    local_18 = 0;
    local_c = '\0';
    iStack_14 = *(int *)((longlong)local_20 + 0xc);
    if (iStack_14 == 0) {
      iStack_14 = 0;
      local_10 = 0;
    }
    else {
      if (iStack_14 < 1) {
        iStack_14 = iStack_14 + -1;
        lVar2 = *(longlong *)(*local_20 + (longlong)iStack_14 * 8);
        local_10 = *(int *)(lVar2 + 0x10);
      }
      else {
        iStack_14 = 0;
        lVar2 = *(longlong *)*local_20;
        iVar1 = *(int *)(lVar2 + 0x10);
        local_10 = 0;
        if ((0 < iVar1) && (local_10 = 0, iVar1 < 0)) {
          local_10 = iVar1;
        }
      }
      local_18 = local_10 + *(int *)(lVar2 + 8);
    }
    FUN_1813c51c0(param_1,&local_20,param_2);
    if (local_c != '\0') {
      FUN_1813c8030(&local_20,0);
      return 1;
    }
  }
  else {
    FUN_1813c37b0(param_1,0xffffffff,param_2,param_4,uVar3);
  }
  return 1;
}



############ FUN_ 1813c3680 size=287 ############

/* WARNING: Removing unreachable block (ram,0x0001813c371c) */
/* WARNING: Removing unreachable block (ram,0x0001813c373f) */
/* WARNING: Removing unreachable block (ram,0x0001813c3738) */
/* WARNING: Removing unreachable block (ram,0x0001813c373a) */
/* WARNING: Removing unreachable block (ram,0x0001813c373d) */

undefined8 FUN_1813c3680(longlong param_1,undefined1 param_2)

{
  longlong lVar1;
  int iVar2;
  undefined8 uVar3;
  longlong *local_20;
  int local_18;
  undefined8 local_14;
  char local_c;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  local_20 = *(longlong **)(param_1 + 200);
  if (*(int *)(param_1 + 0x114) == *(int *)((longlong)local_20 + 0xc) + -1) {
    local_c = '\0';
    if (*(int *)((longlong)local_20 + 0xc) == 0) {
      local_14 = 0;
      local_18 = 0;
    }
    else {
      iVar2 = *(int *)((longlong)local_20 + 0xc) + -1;
      lVar1 = *(longlong *)(*local_20 + (longlong)iVar2 * 8);
      local_18 = *(int *)(lVar1 + 0x10);
      local_14 = CONCAT44(local_18,iVar2);
      local_18 = local_18 + *(int *)(lVar1 + 8);
    }
    FUN_1813c51c0(param_1,&local_20,param_2,0,uVar3);
    if (local_c != '\0') {
      FUN_1813c8030(&local_20,0);
      return 1;
    }
  }
  else {
    FUN_1813c37b0(param_1,1,param_2);
  }
  return 1;
}



############ FUN_ 1813c3e80 size=245 ############

undefined8 FUN_1813c3e80(longlong *param_1)

{
  uint uVar1;
  uint *_Memory;
  char *local_res8 [4];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  FUN_1813c7aa0(param_1[0x19]);
  FUN_1812a77d0(param_1[0x80],600);
  FUN_1812c5ee0(local_res8);
  if ((*local_res8[0] != '\0') && ((char)param_1[0x1f] == '\0')) {
    FUN_1813c7b70(param_1[0x19],(int)param_1[0x25],(int)param_1[0x28]);
    if (*local_res8[0] != '\0') {
      FUN_1813c6950(param_1[0x19],local_res8,(int)param_1[0x22],1,uVar2);
    }
    FUN_1813c4cd0(param_1);
    (**(code **)(*param_1 + 400))(param_1);
  }
  FUN_1813c7aa0(param_1[0x19]);
  FUN_1812a77d0(param_1[0x80],600);
  _Memory = (uint *)(local_res8[0] + -0x10);
  uVar1 = *_Memory;
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    uVar1 = uVar1 - 1;
    if (uVar1 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return CONCAT71((uint7)(uint3)(uVar1 >> 8),1);
}



############ FUN_ 1813c3f80 size=63 ############

undefined8 FUN_1813c3f80(longlong *param_1)

{
  (**(code **)(*param_1 + 0x158))();
  FUN_1813c40f0(param_1);
  FUN_1813c7aa0(param_1[0x19]);
  FUN_1812a77d0(param_1[0x80],600);
  return 1;
}



############ FUN_ 1813c3fd0 size=278 ############

undefined8 FUN_1813c3fd0(longlong param_1)

{
  int *_Memory;
  int iVar1;
  BOOL BVar2;
  uint uVar3;
  longlong lVar4;
  HGLOBAL hMem;
  LPVOID pvVar5;
  char *local_res8;
  
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  FUN_1813c7d80(*(undefined8 *)(param_1 + 200),&local_res8,param_1 + 0x120,param_1 + 0x138);
  if ((*local_res8 != '\0') && (BVar2 = OpenClipboard((HWND)0x0), BVar2 != 0)) {
    BVar2 = EmptyClipboard();
    if (BVar2 != 0) {
      lVar4 = FUN_18049d580(local_res8);
      if (((lVar4 + 4 != 0) && (hMem = GlobalAlloc(0x2042,lVar4 + 6), hMem != (HGLOBAL)0x0)) &&
         (pvVar5 = GlobalLock(hMem), pvVar5 != (LPVOID)0x0)) {
        FUN_18122f5a0(&local_res8,pvVar5,lVar4 + 4);
        GlobalUnlock(hMem);
        SetClipboardData(0xd,hMem);
      }
    }
    CloseClipboard();
  }
  uVar3 = *(uint *)(local_res8 + -0x10);
  _Memory = (int *)(local_res8 + -0x10);
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    uVar3 = iVar1 - 1;
    if (uVar3 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return CONCAT71((uint7)(uint3)(uVar3 >> 8),1);
}



############ FUN_ 1814b2d30 size=194 ############

void FUN_1814b2d30(longlong param_1,longlong *param_2)

{
  uint uVar1;
  uint *puVar2;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28));
  puVar2 = (uint *)(*param_2 + -0x10);
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *puVar2 = *puVar2 + 1;
    UNLOCK();
  }
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  LOCK();
  *(undefined1 *)(param_1 + 0xca) = 1;
  UNLOCK();
  *(undefined4 *)(param_1 + 0xf8) = 1;
  FUN_1812a77d0(param_1 + 0x10,0);
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28));
  puVar2 = (uint *)(*param_2 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 1814b2e50 size=300 ############

void FUN_1814b2e50(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  bool bVar2;
  undefined8 uVar3;
  undefined **local_30;
  longlong local_28;
  
  uVar3 = 0xfffffffffffffffe;
  bVar2 = false;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x20));
  if (param_2 == *(longlong *)(param_1 + 0xd8)) {
    if (*(int *)(param_1 + 0xf0) == 2) {
      bVar2 = **(char **)(param_1 + 0x78) != '\0';
    }
    else if (*(int *)(param_1 + 0xf0) == 1) {
      LOCK();
      *(undefined1 *)(param_1 + 0xc0) = 0;
      UNLOCK();
      FUN_1812a77d0(param_1 + 8,0);
    }
  }
  else if (param_2 == *(longlong *)(param_1 + 0xe0)) {
    (**(code **)(**(longlong **)(param_1 + 0xe8) + 0x168))();
  }
  else if ((param_2 == *(longlong *)(*(longlong *)(param_1 + 0x60) + 0x108)) &&
          (*(int *)(param_1 + 0xf0) == 2)) {
    local_30 = &PTR_vftable_18262b560;
    local_28 = *(longlong *)(param_1 + 0x68);
    if ((*(uint *)(local_28 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_28 + -0x10) = *(int *)(local_28 + -0x10) + 1;
      UNLOCK();
    }
    (**(code **)(*(longlong *)(param_1 + 0xf8) + 0x28))
              ((longlong *)(param_1 + 0xf8),&local_30,param_3,param_4,uVar3);
    plVar1 = *(longlong **)(param_1 + 0x60);
    *(undefined1 *)(plVar1 + 0x23) = 0;
    *(undefined1 *)(plVar1[0x22] + 0x10) = 0;
    (**(code **)(*plVar1 + 0x108))();
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x20));
  if (bVar2) {
    FUN_181212f00(param_1 + 0x78);
  }
  return;
}



############ FUN_ 1814c7f40 size=241 ############

void FUN_1814c7f40(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar3 = 0;
  lVar2 = lVar3;
  if (0 < *(int *)(param_1 + 0x2c)) {
    lVar2 = *(longlong *)
             (*(longlong *)(param_1 + 0x20) + (longlong)(*(int *)(param_1 + 0x2c) + -1) * 8);
  }
  lVar1 = *(longlong *)(param_1 + 0x10);
  if (((lVar1 != lVar2) && (*(char *)(param_2 + 0x8c) != '\0')) &&
     (lVar2 = (*(longlong *)(param_2 + 0x78) - *(longlong *)(param_2 + 0x70)) / 0x60, lVar2 != 0)) {
    FUN_1814c7ed0(param_1 + -200,CONCAT71((int7)((ulonglong)lVar2 >> 8),1));
    return;
  }
  if ((ulonglong)((*(longlong *)(lVar1 + 0x78) - *(longlong *)(lVar1 + 0x70)) / 0x60) <=
      (ulonglong)(longlong)*(int *)(lVar1 + 0x88)) {
    if (0 < *(int *)(param_1 + 0x2c)) {
      lVar3 = *(longlong *)
               (*(longlong *)(param_1 + 0x20) + (longlong)(*(int *)(param_1 + 0x2c) + -1) * 8);
    }
    if (lVar1 == lVar3) {
      if (*(longlong **)(param_1 + 0xce8) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(**(longlong **)(param_1 + 0xce8) + 0x10))();
    }
  }
  FUN_1812a77d0(*(longlong *)(param_1 + 0x30) + 0x1e0,0x10);
  FUN_1814c7ab0(param_1 + -200);
  return;
}



############ FUN_ 1814cf120 size=138 ############

void FUN_1814cf120(longlong *param_1)

{
  DWORD DVar1;
  ulonglong uVar2;
  
  FUN_1812a77d0(param_1 + 0x19,0x10);
  DVar1 = timeGetTime();
  uVar2 = (ulonglong)DAT_1826737fc;
  if (DVar1 < DAT_1826737fc) {
    uVar2 = (ulonglong)(DAT_1826737fc - 1000);
    if (DVar1 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar1;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar1;
  }
  *(DWORD *)(param_1 + 0x54) = DVar1;
  (**(code **)(*param_1 + 0x58))(param_1,CONCAT71((int7)(uVar2 >> 8),1));
  if (param_1[0x52] != 0) {
    FUN_181411d60(param_1 + 0x1c,&DAT_182280e54,0);
    return;
  }
  return;
}



############ FUN_ 1814ebf50 size=181 ############

undefined8 *
FUN_1814ebf50(undefined8 *param_1,undefined8 param_2,longlong *param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  
  param_1[1] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 2) = 0;
  *param_1 = PulsatingToggleButton::PulseAnimationController::vftable;
  param_1[0xb] = 0;
  plVar1 = (longlong *)param_3[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_3) {
      uVar2 = (**(code **)(*plVar1 + 8))(plVar1,param_1 + 4,param_3,param_4,0xfffffffffffffffe);
      param_1[0xb] = uVar2;
      plVar1 = (longlong *)param_3[7];
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_3);
        param_3[7] = 0;
      }
    }
    else {
      param_1[0xb] = plVar1;
      param_3[7] = 0;
    }
  }
  param_1[3] = param_2;
  FUN_1812a77d0(param_1,100);
  return param_1;
}



############ FUN_ 1815a4960 size=375 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815a4960(longlong param_1,longlong param_2,float *param_3)

{
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  longlong *plVar4;
  float fVar5;
  undefined4 uVar6;
  float fVar7;
  double dVar8;
  float fVar9;
  
  uVar1 = DAT_1824c4f30;
  if ((*(uint *)(param_2 + 0x10) >> 1 & 1) == 0) {
    plVar4 = *(longlong **)(param_1 + 0x338);
  }
  else {
    plVar4 = *(longlong **)(param_1 + 0x340);
  }
  if (plVar4 != (longlong *)0x0) {
    fVar9 = param_3[1];
    dVar8 = (double)*param_3;
    if ((float)(double)CONCAT44((uint)((ulonglong)(double)fVar9 >> 0x20) & DAT_1824c4f10._4_4_,
                                SUB84((double)fVar9,0) & (uint)DAT_1824c4f10) <=
        (float)(double)CONCAT44((uint)((ulonglong)dVar8 >> 0x20) & DAT_1824c4f10._4_4_,
                                SUB84(dVar8,0) & (uint)DAT_1824c4f10)) {
      fVar9 = (float)((uint)*param_3 ^ DAT_1824c4f30);
    }
    if (*(char *)(param_3 + 2) != '\0') {
      fVar9 = fVar9 * DAT_1824c4680;
    }
    if ((*(byte *)(param_2 + 0x10) & 1) != 0) {
      fVar9 = fVar9 * DAT_1824c3d18;
    }
    fVar9 = fVar9 * _DAT_1824c3d6c;
    cVar2 = FUN_1815a6c40();
    if (cVar2 != '\0') {
      fVar9 = (float)((uint)fVar9 ^ uVar1);
    }
    fVar5 = (float)(**(code **)(*plVar4 + 8))(plVar4);
    fVar5 = fVar5 + fVar9;
    uVar3 = (**(code **)(*plVar4 + 0x88))(plVar4);
    fVar9 = 0.0;
    if ((0.0 <= fVar5) && (fVar9 = DAT_1824c3ea4, fVar5 <= DAT_1824c3ea4)) {
      fVar9 = fVar5;
    }
    uVar6 = FUN_1804db050(uVar3,fVar9);
    fVar7 = (float)FUN_180487220(uVar3,uVar6);
    fVar9 = *(float *)(plVar4 + 0x16);
    fVar5 = *(float *)((longlong)plVar4 + 0xb4);
    if (*(float *)((longlong)plVar4 + 0xb4) <= fVar9) {
      fVar5 = fVar9;
    }
    if ((fVar9 <= fVar7) && (fVar9 = fVar5, fVar7 <= fVar5)) {
      fVar9 = fVar7;
    }
    if ((*(char *)(param_1 + 0x3d4) == '\0') &&
       (*(undefined1 *)(param_1 + 0x3d4) = 1, ((byte)DAT_182673aec & 0x70) == 0)) {
      FUN_1811c2330(plVar4);
    }
    FUN_1811bf680(plVar4,fVar9,1);
    FUN_1812a77d0(param_1 + 200,0x15e);
  }
  return;
}



############ FUN_ 1815aa720 size=214 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815aa720(longlong *param_1,undefined8 *param_2,longlong param_3)

{
  undefined4 uVar1;
  float fVar2;
  
  if (param_1[0x1c] != 0) {
    if ((*(char *)(param_1[0x1c] + 0x264) == '\0') &&
       (FUN_1812a7720(param_1 + 0x19), param_1[0x1c] != 0)) {
      FUN_1811c2330();
      uVar1 = (**(code **)(*(longlong *)param_1[0x1c] + 8))();
      *(undefined4 *)(param_1 + 0x1d) = uVar1;
      *(undefined8 *)((longlong)param_1 + 0xec) = *param_2;
      *(undefined4 *)((longlong)param_1 + 0xf4) = 0;
    }
    FUN_1812a77d0(param_1 + 0x19,500);
    fVar2 = DAT_1824c3ea4;
    if (*(char *)(param_3 + 8) != '\0') {
      fVar2 = DAT_1824c4680;
    }
    (**(code **)(*param_1 + 0x168))
              (param_1,fVar2 * *(float *)(param_3 + 4) * _DAT_1824c3c88,*(byte *)(param_2 + 2) & 1);
  }
  return;
}



############ FUN_ 181336b10 size=84 ############

void FUN_181336b10(longlong param_1)

{
  char cVar1;
  
  if ((*(byte *)(param_1 + 0xa9) & 0x10) != 0) {
    return;
  }
  if ((*(longlong *)(param_1 + 0x18) != 0) && (cVar1 = FUN_18133eaa0(), cVar1 == '\0')) {
    return;
  }
  *(undefined1 *)(param_1 + 0x1c2) = 1;
  FUN_181336cf0(param_1,2);
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x170),100);
  return;
}



############ FUN_ 1805043b0 size=169 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805043b0(longlong param_1)

{
  char cVar1;
  LARGE_INTEGER local_res8 [4];
  
  if (*(char *)(param_1 + 0x233) != '\0') {
    QueryPerformanceCounter(local_res8);
    if ((DAT_1824c4310 <
         (double)(local_res8[0].QuadPart + DAT_182673a10) * _DAT_182673a18 -
         *(double *)(param_1 + 0x240)) && (3 < *(int *)(param_1 + 0x20) - 9U)) {
      cVar1 = FUN_18133e590(*(undefined8 *)(param_1 + 0x18),
                            CONCAT71((int7)((ulonglong)(local_res8[0].QuadPart + DAT_182673a10) >> 8
                                           ),1));
      if (cVar1 != '\0') {
        if (*(longlong *)(param_1 + 0x268) == 0) {
          FUN_180504460(param_1);
        }
        if ((*(longlong *)(param_1 + 0x268) != 0) && (*(int *)(param_1 + 0x23c) != -1)) {
          FUN_1812a77d0(*(longlong *)(param_1 + 0x268) + 0xe8);
          return;
        }
      }
    }
  }
  return;
}



############ FUN_ 181411d60 size=212 ############

void FUN_181411d60(longlong param_1,undefined8 param_2,undefined4 param_3)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  longlong local_res8;
  
  FUN_181406a70();
  FUN_18049c9e0(&local_res8,param_2);
  plVar2 = (longlong *)FUN_1805714d0(param_1 + 0x178,&local_res8);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180571590(*plVar2,param_3);
  (**(code **)(**(longlong **)(*plVar2 + 0x10) + 0x10))();
  if (*(int *)(param_1 + 0x10) < 1) {
    if (0 < (int)*(float *)(param_1 + 400)) {
      FUN_1812a77d0(param_1,1000 / (longlong)(int)*(float *)(param_1 + 400) & 0xffffffff);
      return;
    }
    FUN_1812a7720(param_1);
  }
  return;
}



############ FUN_ 1812b5030 size=88 ############

void FUN_1812b5030(longlong param_1)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_1812b5090();
  if (cVar1 != '\0') {
    FUN_1812a77d0(param_1,0x14);
    return;
  }
  iVar2 = *(int *)(param_1 + 0x10) + 0x14;
  if (iVar2 < 0x32) {
    FUN_1812a77d0(param_1,0x32);
    return;
  }
  if (500 < iVar2) {
    iVar2 = 500;
  }
  FUN_1812a77d0(param_1,iVar2);
  return;
}



############ FUN_ 18131d810 size=290 ############

void FUN_18131d810(longlong param_1,longlong param_2)

{
  double dVar1;
  int iVar2;
  longlong *plVar3;
  double dVar4;
  undefined1 local_18 [16];
  
  *(undefined1 *)(param_1 + 0x12d) = 0;
  if (*(char *)(param_1 + 300) == '\0') {
    iVar2 = *(int *)(param_2 + 8);
  }
  else {
    iVar2 = *(int *)(param_2 + 0xc);
  }
  *(undefined8 *)(param_1 + 0x100) = *(undefined8 *)(param_1 + 0xe8);
  *(int *)(param_1 + 0x11c) = iVar2;
  *(int *)(param_1 + 0x118) = iVar2;
  if (iVar2 < *(int *)(param_1 + 0x110)) {
    dVar4 = (*(double *)(param_1 + 0xf0) - *(double *)(param_1 + 0xe8)) * DAT_1824c46a0;
  }
  else {
    if (iVar2 < *(int *)(param_1 + 0x110) + *(int *)(param_1 + 0x114)) {
      plVar3 = (longlong *)FUN_18134adf0(param_1);
      if (*(code **)(*plVar3 + 0x28) == FUN_181311b00) {
        iVar2 = *(int *)(param_1 + 0x28);
        if (*(int *)(param_1 + 0x2c) < *(int *)(param_1 + 0x28)) {
          iVar2 = *(int *)(param_1 + 0x2c);
        }
        iVar2 = iVar2 * 2;
      }
      else {
        iVar2 = (**(code **)(*plVar3 + 0x28))(plVar3,param_1);
      }
      if ((iVar2 < *(int *)(param_1 + 0x10c)) &&
         (*(int *)(param_1 + 0x114) < *(int *)(param_1 + 0x10c))) {
        *(undefined1 *)(param_1 + 0x12d) = 1;
        return;
      }
      *(undefined1 *)(param_1 + 0x12d) = 0;
      return;
    }
    dVar4 = *(double *)(param_1 + 0xf0) - *(double *)(param_1 + 0xe8);
  }
  dVar1 = dVar4 + *(double *)(param_1 + 0xe8);
  dVar4 = dVar4 + *(double *)(param_1 + 0xf0);
  if (dVar4 <= dVar1) {
    dVar4 = dVar1;
  }
  local_18._8_4_ = SUB84(dVar4,0);
  local_18._0_8_ = dVar1;
  local_18._12_4_ = (int)((ulonglong)dVar4 >> 0x20);
  FUN_18131e660(param_1,local_18);
  FUN_1812a77d0(param_1 + 0xc0,400);
  return;
}



############ FUN_ 18134ee60 size=117 ############

void FUN_18134ee60(longlong param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  bool bVar4;
  
  if (*(char *)(param_1 + 0x98) != '\0') {
    piVar1 = (int *)(*(longlong *)(param_1 + 0x78) + 0x18);
    LOCK();
    bVar4 = *piVar1 == 0;
    if (bVar4) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar4) && (cVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x78)), cVar3 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + 0x78) + 0x18) = 0;
      UNLOCK();
    }
  }
  iVar2 = *(int *)(param_1 + 0xe4);
  *(undefined1 *)(param_1 + 0xf9) = 1;
  if (iVar2 < 1) {
    if (iVar2 != 0) {
      return;
    }
    FUN_181351cf0(param_1);
    return;
  }
  FUN_1812a77d0(param_1 + 0xa0,iVar2);
  return;
}



############ FUN_ 1813c2320 size=43 ############

void FUN_1813c2320(longlong param_1)

{
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  return;
}



############ FUN_ 1813c27d0 size=43 ############

void FUN_1813c27d0(longlong param_1)

{
  FUN_1813c7aa0(*(undefined8 *)(param_1 + 200));
  FUN_1812a77d0(*(undefined8 *)(param_1 + 0x400),600);
  return;
}



############ FUN_ 180514c00 size=3473 ############

ulonglong FUN_180514c00(longlong *param_1,HWND param_2,uint param_3,HMENU param_4,
                       undefined8 *param_5)

{
  char *pcVar1;
  undefined1 auVar2 [16];
  longlong lVar3;
  bool bVar4;
  char cVar5;
  UINT UVar6;
  uint uVar7;
  DWORD DVar8;
  longlong lVar9;
  longlong lVar10;
  ulonglong uVar11;
  longlong *plVar12;
  longlong *plVar13;
  HIMC pHVar14;
  undefined8 *puVar15;
  int *piVar16;
  HWND pHVar17;
  HWND pHVar18;
  uint uVar19;
  uint *puVar20;
  undefined4 uVar21;
  undefined8 uVar22;
  int local_128;
  int iStack_124;
  int local_120;
  int iStack_11c;
  HWND local_118;
  void *local_110;
  ulonglong local_108;
  undefined8 local_100;
  undefined1 *local_f8;
  undefined1 *local_f0;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined8 local_e0;
  int local_d8;
  undefined4 local_d4;
  uint local_d0;
  uint local_cc;
  uint local_c8;
  undefined4 local_c4;
  uint local_c0;
  undefined4 local_bc;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined1 local_a8 [8];
  undefined1 local_a0 [8];
  undefined1 local_98 [8];
  undefined1 local_90 [8];
  undefined1 local_88 [8];
  char *local_80;
  undefined1 local_78;
  undefined8 local_68;
  undefined8 uStack_60;
  
  local_b0 = 0xfffffffffffffffe;
  local_118 = param_2;
  if (0x100 < param_3) {
    uVar19 = (uint)((ulonglong)param_5 >> 0x10);
    if (param_3 < 0x201) {
      if (param_3 == 0x200) {
        puVar15 = (undefined8 *)FUN_180514a70(param_1,local_a8,param_5);
        FUN_180511dd0(param_1,*puVar15,0);
        return 0;
      }
      uVar7 = (uint)param_4;
      switch(param_3) {
      case 0x101:
      case 0x105:
        cVar5 = FUN_1805131b0(param_1,param_4);
        if (cVar5 != '\0') {
          return 0;
        }
        goto LAB_180514f79;
      case 0x102:
        FUN_18050fa30();
        uVar19 = uVar19 & 0xff;
        local_d0 = uVar7;
        if (uVar7 - 0x30 < 10) {
          switch(uVar19) {
          case 0x47:
          case 0x48:
          case 0x49:
          case 0x4b:
          case 0x4c:
          case 0x4d:
          case 0x4f:
          case 0x50:
          case 0x51:
          case 0x52:
            local_d0 = uVar7 + 0x10030;
          }
        }
        else {
          UVar6 = MapVirtualKeyW(uVar19,1);
          UVar6 = MapVirtualKeyW(UVar6,2);
          if ((UVar6 & 0xffff) != 0) {
            local_d0 = UVar6 & 0xffff;
          }
          if ((uVar7 < 0x20) && ((DAT_182673aec & 6) != 0)) {
            uVar7 = 0;
          }
        }
        local_cc = DAT_182673aec & 0xffffff8f;
        local_c8 = uVar7;
        cVar5 = FUN_1812d2340(param_1,&local_d0);
        if (cVar5 != '\0') {
          return 0;
        }
        FUN_180513690(param_1,param_3,param_4,param_5);
        param_2 = local_118;
        break;
      case 0x104:
        goto switchD_180514f3e_caseD_104;
      case 0x10d:
        local_100 = 0xffffffffffffffff;
        param_1[0x29] = -1;
        *(undefined1 *)(param_1 + 0x2a) = 0;
        plVar12 = (longlong *)FUN_1812d2070(param_1);
        if (plVar12 == (longlong *)0x0) {
          return 0;
        }
        local_f8 = &DAT_1821dbf98;
        (**(code **)(*plVar12 + 0x30))(plVar12,&local_f8);
        puVar20 = (uint *)(local_f8 + -0x10);
        if ((*puVar20 & 0x30000000) != 0) {
          return 0;
        }
        LOCK();
        uVar19 = *puVar20;
        *puVar20 = *puVar20 - 1;
        UNLOCK();
        if (uVar19 != 0) {
          return 0;
        }
                    /* WARNING: Subroutine does not return */
        free(puVar20);
      case 0x10e:
        plVar12 = param_1 + 0x29;
        if ((char)param_1[0x2a] != '\0') {
          plVar13 = (longlong *)FUN_1812d2070(param_1);
          pHVar18 = local_118;
          if (plVar13 != (longlong *)0x0) {
            (**(code **)(*plVar13 + 0x18))(plVar13,plVar12);
            local_f0 = &DAT_1821dbf98;
            (**(code **)(*plVar13 + 0x30))(plVar13,&local_f0);
            puVar20 = (uint *)(local_f0 + -0x10);
            if ((*puVar20 & 0x30000000) == 0) {
              LOCK();
              uVar19 = *puVar20;
              *puVar20 = *puVar20 - 1;
              UNLOCK();
              if (uVar19 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar20);
              }
            }
            local_e8 = (undefined4)*plVar12;
            *(undefined4 *)((longlong)param_1 + 0x14c) = local_e8;
            local_e4 = local_e8;
            (**(code **)(*plVar13 + 0x18))(plVar13,&local_e8);
            local_110 = (void *)0x0;
            local_108 = 0;
            (**(code **)(*plVar13 + 0x20))(plVar13,&local_110);
            local_108 = local_108 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
            free(local_110);
          }
          pHVar14 = ImmGetContext(local_118);
          if (pHVar14 != (HIMC)0x0) {
            ImmNotifyIME(pHVar14,0x11,0,0);
            ImmReleaseContext(pHVar18,pHVar14);
          }
        }
        local_e0 = 0xffffffffffffffff;
        *plVar12 = -1;
        *(undefined1 *)(param_1 + 0x2a) = 0;
        param_2 = local_118;
        break;
      case 0x10f:
        FUN_180515d90(param_1 + 0x29,param_1,param_2,param_5);
        return 0;
      case 0x112:
        uVar7 = uVar7 & 0xfff0;
        if (uVar7 == 0xf020) {
          cVar5 = FUN_180515c40(param_1);
          if (cVar5 != '\0') {
            return 0;
          }
          if ((*(uint *)(param_1 + 2) >> 3 & 1) == 0) {
            (**(code **)(*param_1 + 0x60))(param_1,1);
            return 0;
          }
        }
        else {
          if (uVar7 == 0xf030) {
            cVar5 = FUN_180515c40(param_1);
            if (cVar5 != '\0') {
              return 0;
            }
            (**(code **)(*param_1 + 0x70))(param_1,1);
            return 0;
          }
          if (uVar7 == 0xf060) {
            cVar5 = FUN_180515c40(param_1);
            if (cVar5 != '\0') {
              return 0;
            }
            if ((*(uint *)(param_1 + 2) >> 3 & 1) != 0) {
              PostMessageW(param_2,0x10,0,0);
              return 0;
            }
          }
          else if (uVar7 == 0xf100) {
            if ((longlong)((ulonglong)param_5 & 0xffffffffffff0000) < 1) {
              return 0;
            }
            if (((*(uint *)(param_1 + 2) >> 3 & 1) != 0) &&
               (pHVar18 = GetCapture(), param_2 == pHVar18)) {
              ReleaseCapture();
            }
          }
          else if (uVar7 == 0xf120) {
            cVar5 = FUN_180515c40(param_1);
            if (cVar5 != '\0') {
              return 0;
            }
            if ((*(uint *)(param_1 + 2) >> 3 & 1) == 0) {
              cVar5 = (**(code **)(*param_1 + 0x68))(param_1);
              if (cVar5 != '\0') {
                (**(code **)(*param_1 + 0x60))(param_1,0);
                return 0;
              }
              cVar5 = (**(code **)(*param_1 + 0x78))(param_1);
              if (cVar5 == '\0') {
                return 0;
              }
              (**(code **)(*param_1 + 0x70))(param_1,0);
              return 0;
            }
            cVar5 = (**(code **)(*param_1 + 0x78))();
            if (cVar5 != '\0') {
              (**(code **)(*param_1 + 0x70))(param_1,0);
              return 0;
            }
          }
        }
        break;
      case 0x116:
        if ((*(uint *)(param_1 + 2) >> 3 & 1) == 0) {
          if ((undefined **)*param_1 == juce::HWNDComponentPeer::vftable) {
            cVar5 = (char)param_1[0x16];
          }
          else {
            cVar5 = (*(code *)((undefined **)*param_1)[0xf])(param_1);
          }
          if (cVar5 == '\0') {
            cVar5 = (**(code **)(*param_1 + 0x68))(param_1);
            if (cVar5 == '\0') {
              EnableMenuItem(param_4,0xf030,1);
            }
          }
          else {
            EnableMenuItem(param_4,0xf120,0);
            EnableMenuItem(param_4,0xf010,1);
          }
        }
        break;
      case 0x119:
        cVar5 = FUN_1805123f0(param_1,param_5);
        goto LAB_18051548e;
      case 0x120:
        return 0x10000;
      }
      goto switchD_180514c7c_caseD_9;
    }
    if (0x319 < param_3) goto switchD_180514c7c_caseD_9;
    if (param_3 == 0x319) {
      uVar19 = uVar19 & 0xfff;
      if (uVar19 == 0xb) {
        uVar21 = 0x30002;
      }
      else if (uVar19 == 0xc) {
        uVar21 = 0x30003;
      }
      else if (uVar19 == 0xd) {
        uVar21 = 0x30001;
      }
      else {
        if (uVar19 != 0xe) goto switchD_180514c7c_caseD_9;
        uVar21 = 0x30000;
      }
      FUN_18050fa30();
      pHVar18 = GetActiveWindow();
      if ((HWND)param_1[0x11] == pHVar18) {
        local_c0 = DAT_182673aec & 0xffffff8f;
        local_bc = 0;
        local_c4 = uVar21;
        FUN_1812d2340(param_1,&local_c4);
        return 1;
      }
      goto switchD_180514c7c_caseD_9;
    }
    switch(param_3) {
    case 0x201:
    case 0x204:
    case 0x207:
      piVar16 = (int *)FUN_180514a70(param_1,local_98,param_5);
      local_128 = *piVar16;
      iStack_124 = piVar16[1];
      if ((DAT_182678ed0 != 0) &&
         (uVar11 = GetMessageExtraInfo(), (uVar11 & 0xffffff80) == 0xff515780)) {
        return 0;
      }
      cVar5 = FUN_180511d50();
      if (cVar5 != '\0') {
        return 0;
      }
      pHVar18 = (HWND)param_1[0x11];
      pHVar17 = GetCapture();
      if (pHVar17 != pHVar18) {
        SetCapture(pHVar18);
      }
      uVar22 = CONCAT44(iStack_124,local_128);
      FUN_180511dd0(param_1,uVar22,1);
      cVar5 = FUN_1812d2b50(param_1);
      if (cVar5 == '\0') {
        return 0;
      }
      uVar19 = 0;
      if (((ulonglong)param_4 & 1) != 0) {
        uVar19 = 0x10;
      }
      if (((ulonglong)param_4 & 2) != 0) {
        uVar19 = uVar19 | 0x20;
      }
      if (((ulonglong)param_4 & 0x10) != 0) {
        uVar19 = uVar19 | 0x40;
      }
      DAT_182673aec = DAT_182673aec & 0xffffff8f | uVar19;
      FUN_18050fa30();
      if ((longlong *)param_1[0x22] != (longlong *)0x0) {
        uVar19 = (**(code **)(*(longlong *)param_1[0x22] + 8))();
        DAT_182673aec = DAT_182673aec | uVar19;
      }
      *(undefined1 *)((longlong)param_1 + 0xb1) = 1;
      FUN_180511ba0(param_1,uVar22,0,0,DAT_182673aec);
      return 0;
    case 0x202:
    case 0x205:
    case 0x208:
      puVar15 = (undefined8 *)FUN_180514a70(param_1,local_90,param_5);
      FUN_180512090(param_1,*puVar15,param_4);
      return 0;
    case 0x20a:
    case 0x24e:
      FUN_180512270(param_1,param_4,1);
      return 0;
    case 0x20e:
    case 0x24f:
      FUN_180512270(param_1,param_4,0);
      return 0;
    case 0x214:
      uVar11 = FUN_180513850(param_1,param_5,param_4);
      return uVar11;
    case 0x215:
      if (*(char *)((longlong)param_1 + 0xb4) != '\0') {
        if ((longlong *)param_1[5] != (longlong *)0x0) {
          (**(code **)(*(longlong *)param_1[5] + 0x18))();
        }
        *(undefined1 *)((longlong)param_1 + 0xb4) = 0;
      }
      if (*(char *)((longlong)param_1 + 0xb1) == '\0') {
        return 0;
      }
      DVar8 = GetMessagePos();
      local_120 = (int)(short)DVar8;
      iStack_11c = (int)(short)(DVar8 >> 0x10);
      piVar16 = (int *)FUN_1812c70b0(local_88,&local_120,param_1[0x11]);
      (**(code **)(*param_1 + 0x58))(param_1,&local_d8,CONCAT44((float)piVar16[1],(float)*piVar16));
      local_120 = local_d8;
      iStack_11c = local_d4;
      if ((DAT_182678ed0 != 0) &&
         (uVar11 = GetMessageExtraInfo(), (uVar11 & 0xffffff80) == 0xff515780)) {
        return 0;
      }
      cVar5 = FUN_180511d50();
      if (cVar5 != '\0') {
        return 0;
      }
      DAT_182673aec = DAT_182673aec & 0xffffff8f;
      FUN_18050fa30();
      if ((longlong *)param_1[0x22] != (longlong *)0x0) {
        uVar19 = (**(code **)(*(longlong *)param_1[0x22] + 8))();
        DAT_182673aec = DAT_182673aec | uVar19;
      }
      cVar5 = *(char *)((longlong)param_1 + 0xb1);
      *(undefined1 *)((longlong)param_1 + 0xb1) = 0;
      pHVar18 = GetCapture();
      if ((HWND)param_1[0x11] == pHVar18) {
        ReleaseCapture();
      }
      if (cVar5 == '\0') {
        return 0;
      }
      FUN_180511ba0(param_1,CONCAT44(iStack_11c,local_120),0,0,DAT_182673aec);
      return 0;
    case 0x218:
      if (DAT_1826736f8 != (longlong *)0x0) {
        if (param_4 != (HMENU)0x2) {
          if (param_4 == (HMENU)0x4) {
            (**(code **)(*DAT_1826736f8 + 0x40))();
            break;
          }
          if (((undefined1 *)0x1 < (undefined1 *)((longlong)&param_4[-2].unused + 2U)) &&
             (param_4 != (HMENU)0x12)) break;
        }
        (**(code **)(*DAT_1826736f8 + 0x48))();
      }
      break;
    case 0x240:
      if (DAT_182678ef8 != 0) {
        uVar11 = FUN_180512600(param_1,(ulonglong)param_4 & 0xffffffff,param_5);
        return uVar11;
      }
      break;
    case 0x241:
      goto switchD_180514c7c_caseD_a0;
    case 0x242:
      goto switchD_180514c7c_caseD_a1;
    case 0x245:
      uVar21 = 0;
      goto LAB_18051547d;
    case 0x246:
      uVar21 = 0;
      uVar22 = 1;
      goto LAB_180515480;
    case 0x247:
      uVar21 = 1;
LAB_18051547d:
      uVar22 = 0;
LAB_180515480:
      cVar5 = FUN_180512b30(param_1,param_4,param_5,uVar22,uVar21);
LAB_18051548e:
      if (cVar5 != '\0') {
        return 0;
      }
      break;
    case 0x24a:
    case 0x2a3:
      *(undefined1 *)((longlong)param_1 + 0xb2) = 0;
      cVar5 = FUN_180511d50();
      if (cVar5 != '\0') {
        return 0;
      }
      DVar8 = GetMessagePos();
      local_128 = (int)(short)DVar8;
      iStack_124 = (int)(short)(DVar8 >> 0x10);
      piVar16 = (int *)FUN_1812c70b0(local_a0,&local_128,param_1[0x11]);
      (**(code **)(*param_1 + 0x58))(param_1,&local_b8,CONCAT44((float)piVar16[1],(float)*piVar16));
      FUN_180511ba0(param_1,local_b8,0,0,DAT_182673aec);
      return 0;
    case 0x24b:
      goto switchD_180514c7c_caseD_21;
    case 0x281:
      FUN_180515d30(param_1 + 0x29,param_2,param_4 == (HMENU)0x1);
      param_5 = (undefined8 *)(ulonglong)((uint)param_5 & 0x7fffffff);
      break;
    case 0x2e0:
      local_68 = *param_5;
      uStack_60 = param_5[1];
      uVar11 = FUN_180514050(param_1,(ulonglong)param_4 >> 0x10 & 0xffff,&local_68);
      return uVar11;
    }
    goto switchD_180514c7c_caseD_9;
  }
  if (param_3 == 0x100) {
switchD_180514f3e_caseD_104:
    cVar5 = FUN_180513360(param_1,param_4);
    if (cVar5 != '\0') {
      return 0;
    }
LAB_180514f79:
    FUN_180513690(param_1,param_3,param_4,param_5);
    goto switchD_180514c7c_caseD_9;
  }
  switch(param_3) {
  case 6:
    if ((ushort)((short)param_4 - 1U) < 2) {
      FUN_180514460(param_1,param_4);
      return 0;
    }
    break;
  case 7:
    FUN_18050fa30();
    FUN_1812d1af0(param_1);
    break;
  case 8:
    if (*(char *)((longlong)param_1 + 0xb3) != '\0') {
      *(undefined1 *)((longlong)param_1 + 0xb3) = 0;
      DestroyCaret();
    }
    FUN_1812d19b0(param_1);
    break;
  case 0xf:
    FUN_1805113b0(param_1);
    return 0;
  case 0x10:
    cVar5 = FUN_181343030(param_1[1]);
    if (cVar5 != '\0') {
      return 0;
    }
    (**(code **)(*(longlong *)param_1[1] + 0x70))();
    return 0;
  case 0x11:
    if (DAT_1826736f8 == (longlong *)0x0) {
      return 1;
    }
    (**(code **)(*DAT_1826736f8 + 0x38))();
    lVar9 = FUN_1812a7550();
    return (ulonglong)(*(int *)(lVar9 + 8) != 0);
  case 0x14:
  case 0x83:
    uVar19 = *(uint *)(param_1 + 2);
    goto LAB_180514cc0;
  case 0x18:
    if (param_4 != (HMENU)0x0) {
      (**(code **)(*(longlong *)param_1[1] + 0x58))((longlong *)param_1[1],1);
      FUN_18133f490(param_1[1]);
    }
    break;
  case 0x1a:
    goto switchD_180514c7c_caseD_1a;
  case 0x1c:
    if (param_4 == (HMENU)0x0) {
      lVar9 = FUN_18134b820();
      pcVar1 = (char *)(lVar9 + 0xb8);
      if (*pcVar1 == '\0') {
        local_78 = 0;
        *pcVar1 = '\x01';
        lVar3 = *(longlong *)(lVar9 + 0xa0);
        local_80 = pcVar1;
        if (lVar3 != 0) {
          *(undefined8 *)(lVar9 + 0xa0) = 0;
          lVar10 = __RTDynamicCast(lVar3,0,&juce::Component::RTTI_Type_Descriptor,
                                   &juce::TopLevelWindow::RTTI_Type_Descriptor,0);
          if (lVar10 != 0) {
            FUN_1812cc1e0(lVar10,1);
          }
          auVar2 = *(undefined1 (*) [16])(lVar9 + 0xa8);
          FUN_18134bfe0(lVar3,auVar2._0_4_,auVar2._0_8_ >> 0x20,auVar2._8_4_,auVar2._12_4_);
          *(undefined8 *)(lVar9 + 0xa0) = 0;
        }
        *pcVar1 = '\0';
      }
    }
    if (DAT_182673b08 != 0) {
      FUN_1812a77d0(DAT_182673b08,10);
    }
    DAT_182673b64 = 0xffffffff;
    return 0;
  case 0x21:
switchD_180514c7c_caseD_21:
    if ((*(byte *)(param_1[1] + 0xa8) & 0x80) != 0) {
      return 3;
    }
    break;
  case 0x46:
    uVar11 = FUN_180513b90(param_1,param_5);
    return uVar11;
  case 0x47:
    if (((byte)*(undefined4 *)(param_5 + 4) & 3) == 3) {
      FUN_1812a77d0(param_1 + 0xc,100);
      break;
    }
    cVar5 = FUN_180513f40(param_1);
    goto LAB_18051548e;
  case 0x7e:
    InvalidateRect(param_2,(RECT *)0x0,0);
    goto switchD_180514c7c_caseD_1a;
  case 0x84:
    uVar19 = *(uint *)(param_1 + 2);
    if ((uVar19 & 4) != 0) {
      return 0xffffffffffffffff;
    }
LAB_180514cc0:
    if ((uVar19 >> 3 & 1) == 0) {
      return 1;
    }
    break;
  case 0x85:
    FUN_1805113b0(param_1);
  case 0xa0:
switchD_180514c7c_caseD_a0:
    if ((*(uint *)(param_1 + 2) >> 3 & 1) == 0) {
      return 0;
    }
    break;
  case 0x86:
    if ((param_4 == (HMENU)0x0) && (DAT_18262b45d == '\0')) {
      param_4 = (HMENU)0x1;
    }
    break;
  case 0x87:
    return 4;
  case 0x88:
    return 0;
  case 0xa1:
switchD_180514c7c_caseD_a1:
    cVar5 = FUN_180515c40(param_1);
    if ((cVar5 == '\0') &&
       ((param_4 == (HMENU)0x4 ||
        ((undefined1 *)((longlong)&param_4[-3].unused + 2U) < (undefined1 *)0x8)))) {
      if ((param_1[5] == 0) ||
         ((((byte)(int)param_1[2] & 0x18) != 0x18 ||
          (cVar5 = (**(code **)(*param_1 + 0x80))(param_1), cVar5 != '\0')))) {
        bVar4 = false;
      }
      else {
        bVar4 = true;
      }
      if (bVar4) {
        *(undefined1 *)((longlong)param_1 + 0xb4) = 1;
        (**(code **)(*(longlong *)param_1[5] + 0x10))();
      }
    }
    break;
  case 0xa4:
  case 0xa7:
    FUN_180515c40(param_1);
  }
switchD_180514c7c_caseD_9:
  uVar11 = DefWindowProcW(param_2,param_3,(WPARAM)param_4,(LPARAM)param_5);
  return uVar11;
switchD_180514c7c_caseD_1a:
  FUN_180514680(param_1);
  goto switchD_180514c7c_caseD_9;
}



############ FUN_ 1812e6610 size=38 ############

void FUN_1812e6610(longlong param_1)

{
  if ((*(byte *)(param_1 + 0xa8) & 2) != 0) {
    FUN_1812a77d0(param_1 + 0xc0,0x1e);
    return;
  }
  FUN_1812a7720(param_1 + 0xc0);
  return;
}



############ FUN_ 1811310d0 size=33 ############

/* WARNING: This is an inlined function */
/* Library Function - Single Match
    __security_check_cookie
   
   Libraries: Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 */

void __cdecl __security_check_cookie(uintptr_t _StackCookie)

{
  if ((_StackCookie == DAT_182615970) && ((short)(_StackCookie >> 0x30) == 0)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __report_gsfailure(_StackCookie);
}



############ FUN_ 18120c6e0 size=255 ############

void FUN_18120c6e0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  int iVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  iVar3 = _Mtx_lock(&DAT_182673810);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  if (DAT_182673930 <= DAT_182673940 + 1U) {
    FUN_180486ad0();
  }
  DAT_182673938 = DAT_182673938 & DAT_182673930 - 1;
  lVar1 = (DAT_182673930 - 1 & DAT_182673938 + DAT_182673940) * 8;
  if (*(longlong *)(lVar1 + DAT_182673928) == 0) {
    uVar4 = FUN_180480500(0x48);
    *(undefined8 *)(lVar1 + DAT_182673928) = uVar4;
  }
  puVar2 = *(undefined8 **)(lVar1 + DAT_182673928);
  *puVar2 = param_2;
  puVar2[8] = 0;
  FUN_180488560(puVar2 + 1,param_1,param_3,param_4,uVar5);
  DAT_182673940 = DAT_182673940 + 1;
  iVar3 = _Mtx_unlock(&DAT_182673810);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  return;
}



############ FUN_ 180001d60 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616088)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001b80 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615e08)[DAT_1826159a0])();
  return;
}



############ FUN_ 18161aac0 size=1381 ############

void FUN_18161aac0(longlong param_1)

{
  char *pcVar1;
  undefined8 *puVar2;
  float *pfVar3;
  int iVar4;
  code *pcVar5;
  longlong *plVar6;
  undefined8 uVar7;
  bool bVar8;
  bool bVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  undefined4 uVar13;
  char cVar14;
  longlong lVar15;
  ulonglong uVar16;
  ulonglong uVar17;
  int iVar18;
  ulonglong uVar19;
  uint uVar20;
  uint *puVar22;
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar23;
  char cVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  float fVar29;
  float fVar30;
  int local_res10;
  undefined4 local_res18 [2];
  undefined4 local_res20 [2];
  undefined4 local_f8 [2];
  undefined8 local_f0;
  LPCRITICAL_SECTION local_e8;
  uint *local_e0;
  float local_d8;
  float fStack_d4;
  float fStack_d0;
  undefined4 uStack_cc;
  longlong local_c8 [2];
  undefined8 local_b8;
  undefined8 uStack_b0;
  ulonglong uVar21;
  
  local_f0 = 0xfffffffffffffffe;
  lpCriticalSection = (LPCRITICAL_SECTION)(*(longlong *)(param_1 + 0x98) + 0x528);
  local_e8 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  puVar22 = (uint *)(*(longlong *)(*(longlong *)(param_1 + 0x98) + 0x168) + 0x2404b8);
  do {
    LOCK();
    uVar20 = *puVar22;
    *puVar22 = *puVar22 | 1;
    UNLOCK();
  } while ((uVar20 & 1) != 0);
  bVar8 = false;
  plVar23 = *(longlong **)(*(longlong *)(param_1 + 0x98) + 0x168);
  pcVar5 = *(code **)(*plVar23 + 0xd0);
  uVar17 = 0;
  local_e0 = puVar22;
  if (pcVar5 == .?AV?$Soothe2Module@M$01@@::vtbl___AV__Soothe2Module_M_01__) {
    LOCK();
    pcVar1 = (char *)((longlong)plVar23 + 0x2404bd);
    cVar24 = *pcVar1;
    *pcVar1 = '\0';
    UNLOCK();
    cVar24 = cVar24 != '\0';
  }
  else {
    cVar24 = (*pcVar5)();
  }
  if (cVar24 == '\0') {
    if (*(int *)(param_1 + 0xcc) < 1) {
      bVar8 = true;
    }
    else {
      *(int *)(param_1 + 0xcc) = *(int *)(param_1 + 0xcc) + -1;
    }
  }
  else {
    *(undefined4 *)(param_1 + 0xcc) = 10;
  }
  if (0 < *(int *)(param_1 + 0x18c)) {
    plVar23 = local_c8;
    uVar19 = uVar17;
    uVar21 = uVar17;
    do {
      plVar6 = *(longlong **)(*(longlong *)(param_1 + 0x98) + 0x168);
      uVar16 = uVar17;
      if ((uint)uVar21 < *(uint *)(param_1 + 0x18c)) {
        uVar16 = (ulonglong)*(uint *)(uVar19 + *(longlong *)(param_1 + 0x180));
      }
      lVar15 = (**(code **)(*plVar6 + 0xd8))(plVar6,uVar16);
      *plVar23 = lVar15;
      uVar20 = (uint)uVar21 + 1;
      uVar21 = (ulonglong)uVar20;
      uVar19 = uVar19 + 4;
      plVar23 = plVar23 + 1;
    } while ((int)uVar20 < *(int *)(param_1 + 0x18c));
  }
  cVar24 = *(char *)(*(longlong *)(param_1 + 0x98) + 0x164);
  if (((*(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 3 == 0) ||
      (local_c8[0] == 0)) || (local_c8[1] == 0)) {
    FUN_18161a990(param_1);
  }
  else {
    fVar25 = (float)(**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x98) + 0x168) + 0xe0))();
    fVar12 = DAT_1824c3ea4;
    iVar4 = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x98) + 0x168) + 100) / 2 + 1;
    if (*(int *)(param_1 + 0x18c) < 1) {
      FUN_18052db50(*(undefined8 *)(param_1 + 0x150),DAT_1824c3ea4,iVar4);
    }
    else {
      FUN_18052dbc0(*(undefined8 *)(param_1 + 0x150),local_c8[0]);
      iVar18 = 1;
      if (1 < *(int *)(param_1 + 0x18c)) {
        plVar23 = local_c8;
        do {
          plVar23 = plVar23 + 1;
          FUN_180530010(*(undefined8 *)(param_1 + 0x150),*(undefined8 *)(param_1 + 0x150),*plVar23,
                        iVar4);
          iVar18 = iVar18 + 1;
        } while (iVar18 < *(int *)(param_1 + 0x18c));
      }
    }
    lVar15 = *(longlong *)(param_1 + 0x98);
    cVar14 = FUN_180528c00(lVar15);
    fVar11 = DAT_1824c3e28;
    fVar10 = DAT_1824c3d8c;
    if ((cVar14 == '\0') && (*(char *)(lVar15 + 0x939) == '\0')) {
      bVar9 = false;
    }
    else {
      bVar9 = true;
    }
    local_res10 = 0;
    uVar19 = uVar17;
    uVar13 = uStack_cc;
    if (*(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 3 != 0) {
      do {
        uStack_cc = uVar13;
        iVar4 = *(int *)(uVar19 + *(longlong *)(param_1 + 0xe0));
        if ((cVar24 != '\0') || (bVar8)) {
          *(undefined4 *)(param_1 + 0xc0) = 0x3f800000;
          *(undefined4 *)(param_1 + 0xc4) = 0x3f800000;
          *(undefined4 *)(param_1 + 200) = 0x3f800000;
        }
        else {
          fVar28 = fVar12 - fVar25;
          *(float *)(param_1 + 0xc0) =
               fVar25 * *(float *)(*(longlong *)(param_1 + 0x150) + (longlong)iVar4 * 4) + fVar28;
          *(float *)(param_1 + 0xc4) =
               fVar25 * *(float *)(*(longlong *)(param_1 + 0x150) + (longlong)(iVar4 + 1) * 4) +
               fVar28;
          *(float *)(param_1 + 200) =
               fVar25 * *(float *)(*(longlong *)(param_1 + 0x150) + (longlong)(iVar4 + 2) * 4) +
               fVar28;
        }
        if (bVar9) {
          *(float *)(param_1 + 0xc0) = fVar12 / *(float *)(param_1 + 0xc0);
          *(float *)(param_1 + 0xc4) = fVar12 / *(float *)(param_1 + 0xc4);
          *(float *)(param_1 + 200) = fVar12 / *(float *)(param_1 + 200);
        }
        local_res18[0] = *(undefined4 *)(param_1 + 0xc0);
        plVar23 = *(longlong **)(param_1 + 0x148);
        if (plVar23 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar28 = (float)(**(code **)(*plVar23 + 0x10))(plVar23,local_res18);
        local_res20[0] = *(undefined4 *)(param_1 + 0xc4);
        plVar23 = *(longlong **)(param_1 + 0x148);
        if (plVar23 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar26 = (float)(**(code **)(*plVar23 + 0x10))(plVar23,local_res20);
        local_f8[0] = *(undefined4 *)(param_1 + 200);
        plVar23 = *(longlong **)(param_1 + 0x148);
        if (plVar23 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar27 = (float)(**(code **)(*plVar23 + 0x10))(plVar23,local_f8);
        puVar2 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + uVar17);
        uVar7 = *puVar2;
        uStack_b0 = puVar2[1];
        fVar30 = fVar10;
        if (bVar8) {
          fVar30 = fVar11;
        }
        fVar29 = fVar12 - fVar30;
        local_b8._0_4_ = (float)uVar7;
        local_d8 = fVar29 * fVar28 + (float)local_b8 * fVar30;
        local_b8._4_4_ = (float)((ulonglong)uVar7 >> 0x20);
        fStack_d4 = fVar29 * fVar26 + local_b8._4_4_ * fVar30;
        fStack_d0 = fVar29 * fVar27 + (float)uStack_b0 * fVar30;
        uStack_cc = 0;
        pfVar3 = (float *)(*(longlong *)(param_1 + 0x58) + uVar17);
        *pfVar3 = local_d8;
        pfVar3[1] = fStack_d4;
        pfVar3[2] = fStack_d0;
        pfVar3[3] = 0.0;
        local_res10 = local_res10 + 1;
        uVar17 = uVar17 + 0x20;
        uVar19 = uVar19 + 8;
        uVar13 = 0;
        local_b8 = uVar7;
      } while ((ulonglong)(longlong)local_res10 <
               (ulonglong)(*(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 3));
    }
    (**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x98) + 0x168) + 0xf0))();
  }
  LOCK();
  *puVar22 = 0;
  UNLOCK();
                    /* WARNING: Could not recover jumptable at 0x00018161b019. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection(lpCriticalSection);
  return;
}



############ FUN_ 1812b3270 size=321 ############

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

void FUN_1812b3270(float *param_1,float param_2,uint param_3)

{
  longlong lVar1;
  uint uVar2;
  ulonglong uVar3;
  float *pfVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  ulonglong uVar8;
  
  uVar2 = (int)(param_3 + ((int)param_3 >> 0x1f & 3U)) >> 2;
  uVar3 = (ulonglong)uVar2;
  if (((ulonglong)param_1 & 0xf) == 0) {
    if (0 < (int)uVar2) {
      do {
        *param_1 = *param_1 * param_2;
        param_1[1] = param_1[1] * param_2;
        param_1[2] = param_1[2] * param_2;
        param_1[3] = param_1[3] * param_2;
        param_1 = param_1 + 4;
        uVar3 = uVar3 - 1;
      } while (uVar3 != 0);
    }
  }
  else if (0 < (int)uVar2) {
    do {
      *param_1 = *param_1 * param_2;
      param_1[1] = param_1[1] * param_2;
      param_1[2] = param_1[2] * param_2;
      param_1[3] = param_1[3] * param_2;
      param_1 = param_1 + 4;
      uVar3 = uVar3 - 1;
    } while (uVar3 != 0);
  }
  param_3 = param_3 & 3;
  if (param_3 != 0) {
    uVar3 = 0;
    uVar2 = 0;
    if ((param_3 != 0) && (0xf < param_3)) {
      pfVar4 = param_1 + 8;
      uVar8 = uVar3;
      do {
        uVar2 = (int)uVar8 + 0x10;
        uVar8 = (ulonglong)uVar2;
        uVar3 = uVar3 + 0x10;
        pfVar4[-8] = pfVar4[-8] * param_2;
        pfVar4[-7] = pfVar4[-7] * param_2;
        pfVar4[-6] = pfVar4[-6] * param_2;
        pfVar4[-5] = pfVar4[-5] * param_2;
        pfVar4[-4] = pfVar4[-4] * param_2;
        pfVar4[-3] = pfVar4[-3] * param_2;
        pfVar4[-2] = pfVar4[-2] * param_2;
        pfVar4[-1] = pfVar4[-1] * param_2;
        *pfVar4 = *pfVar4 * param_2;
        pfVar4[1] = pfVar4[1] * param_2;
        pfVar4[2] = pfVar4[2] * param_2;
        pfVar4[3] = pfVar4[3] * param_2;
        pfVar4[4] = pfVar4[4] * param_2;
        pfVar4[5] = pfVar4[5] * param_2;
        pfVar4[6] = pfVar4[6] * param_2;
        pfVar4[7] = pfVar4[7] * param_2;
        pfVar4 = pfVar4 + 0x10;
      } while ((longlong)uVar3 < 0);
    }
    lVar5 = (longlong)(int)uVar2;
    lVar7 = (longlong)(int)param_3;
    if (lVar5 < lVar7) {
      if (3 < lVar7 - lVar5) {
        lVar1 = lVar5 + 2;
        lVar6 = ((lVar7 - lVar5) - 4U >> 2) + 1;
        lVar5 = lVar5 + lVar6 * 4;
        pfVar4 = param_1 + lVar1;
        do {
          pfVar4[-2] = pfVar4[-2] * param_2;
          pfVar4[-1] = pfVar4[-1] * param_2;
          *pfVar4 = *pfVar4 * param_2;
          pfVar4[1] = pfVar4[1] * param_2;
          lVar6 = lVar6 + -1;
          pfVar4 = pfVar4 + 4;
        } while (lVar6 != 0);
      }
      for (; lVar5 < lVar7; lVar5 = lVar5 + 1) {
        param_1[lVar5] = param_2 * param_1[lVar5];
      }
    }
  }
  return;
}



############ FUN_ 18049d240 size=172 ############

longlong FUN_18049d240(byte *param_1)

{
  byte bVar1;
  uint uVar2;
  longlong lVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  
  lVar6 = 0;
  do {
    bVar1 = *param_1;
    param_1 = param_1 + 1;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar2 = 0x40;
      iVar5 = 0;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar2 < 9) break;
          uVar4 = uVar4 >> 1;
          iVar5 = iVar5 + 1;
          uVar2 = uVar2 >> 1;
        } while ((bVar1 & uVar2) != 0);
      }
      uVar4 = bVar1 & uVar4;
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*param_1 & 0xc0) == 0x80)); param_1 = param_1 + 1)
      {
        uVar4 = *param_1 & 0x3f | uVar4 << 6;
      }
    }
    if (uVar4 == 0) {
      return lVar6;
    }
    lVar3 = 1;
    if (((0x7f < uVar4) && (lVar3 = 2, 0x7ff < uVar4)) && (lVar3 = 3, 0xffff < uVar4)) {
      lVar3 = 4;
    }
    lVar6 = lVar6 + lVar3;
  } while( true );
}



############ FUN_ 181211b90 size=327 ############

longlong * FUN_181211b90(longlong *param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined8 uVar2;
  int iVar3;
  int iVar4;
  uint *_Memory;
  longlong lVar5;
  int iVar6;
  int iVar7;
  longlong local_res10;
  undefined8 *local_res18;
  undefined8 local_res20;
  
  iVar7 = *(int *)((longlong)param_2 + 0xc);
  iVar6 = 0;
  local_res18 = param_3;
  if (0 < iVar7) {
    lVar5 = *param_2;
    uVar2 = *param_3;
    do {
      local_res20 = *(undefined8 *)(lVar5 + (longlong)iVar6 * 8);
      iVar3 = FUN_18048cbc0(uVar2);
      if (iVar3 == 0) {
        lVar5 = *(longlong *)(lVar5 + (longlong)iVar6 * 8);
LAB_181211caa:
        uVar1 = *(uint *)(lVar5 + -0x10);
        *param_1 = lVar5;
        if ((uVar1 & 0x30000000) != 0) {
          return param_1;
        }
        LOCK();
        *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
        UNLOCK();
        return param_1;
      }
      iVar4 = (iVar7 + iVar6) / 2;
      if (iVar4 == iVar6) {
        if (0 < iVar3) {
          iVar6 = iVar6 + 1;
        }
        break;
      }
      iVar3 = FUN_18048cbc0(uVar2);
      if (iVar3 == 0) {
        lVar5 = *(longlong *)(lVar5 + (longlong)iVar4 * 8);
        goto LAB_181211caa;
      }
      if (0 < iVar3) {
        iVar6 = iVar4;
        iVar4 = iVar7;
      }
      iVar7 = iVar4;
    } while (iVar6 < iVar7);
  }
  FUN_18049c9e0(&local_res10,*local_res18);
  FUN_180489070(param_2,iVar6,&local_res10);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  lVar5 = *(longlong *)(*param_2 + (longlong)iVar6 * 8);
  *param_1 = lVar5;
  if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 180473200 size=2289 ############

undefined8
FUN_180473200(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  longlong lVar4;
  byte bVar5;
  char cVar6;
  int iVar7;
  longlong *plVar8;
  uint *puVar9;
  byte *pbVar10;
  undefined8 uVar11;
  byte *local_res8;
  byte *local_res10;
  longlong local_res18;
  longlong local_res20;
  
  plVar8 = (longlong *)FUN_181249b30(&local_res20,0xd,param_3,param_4,0xfffffffffffffffe);
  local_res18 = *plVar8;
  uVar11 = 1;
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  puVar9 = (uint *)(local_res20 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_181241890(&local_res10,&local_res18);
  iVar7 = FUN_1812327b0(&local_res10,0x5c);
  pbVar10 = local_res10;
  if (iVar7 + 1 < 1) {
    local_res8 = local_res10;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    for (; -1 < iVar7; iVar7 = iVar7 + -1) {
      bVar2 = *pbVar10;
      if (bVar2 == 0) {
        local_res8 = &DAT_1821dbf98;
        goto LAB_1804732fe;
      }
      pbVar10 = pbVar10 + 1;
      if ((char)bVar2 < '\0') {
        bVar5 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar5))) {
          pbVar10 = pbVar10 + 1;
          bVar5 = bVar5 >> 1;
          bVar3 = bVar2 & bVar5;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
  }
LAB_1804732fe:
  pbVar10 = local_res8;
  puVar9 = (uint *)(local_res10 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  iVar7 = FUN_18049d2f0(local_res8,"Live 6");
  lVar4 = local_res18;
  if (iVar7 < 0) {
    iVar7 = FUN_18049d2f0(pbVar10,"Live 7");
    if (iVar7 < 0) {
      iVar7 = FUN_18049d2f0(pbVar10,"Live 8");
      if (iVar7 < 0) {
        iVar7 = FUN_18049d2f0(pbVar10,"Live 9");
        if (iVar7 < 0) {
          iVar7 = FUN_18049d2f0(pbVar10,"Live 10");
          if (iVar7 < 0) {
            iVar7 = FUN_18049d2f0(pbVar10,"Live ");
            if (iVar7 < 0) {
              iVar7 = FUN_18049d2f0(pbVar10,"Audition");
              if (iVar7 < 0) {
                iVar7 = FUN_18049d2f0(pbVar10,"Adobe Premiere");
                if (iVar7 < 0) {
                  iVar7 = FUN_18049d2f0(pbVar10,"ProTools");
                  if (iVar7 < 0) {
                    iVar7 = FUN_18049d2f0(lVar4,"SONAR 8");
                    if (iVar7 < 0) {
                      iVar7 = FUN_18049d2f0(pbVar10,"SONAR");
                      if (iVar7 < 0) {
                        iVar7 = FUN_18049d2f0(pbVar10,"Cakewalk.exe");
                        if (iVar7 < 0) {
                          iVar7 = FUN_18049d2f0(pbVar10,"GarageBand");
                          if (iVar7 < 0) {
                            iVar7 = FUN_18049d2f0(pbVar10,"Logic");
                            if (iVar7 < 0) {
                              iVar7 = FUN_18049d2f0(pbVar10,"MainStage");
                              if (iVar7 < 0) {
                                cVar6 = FUN_18124a650(&local_res8,"Waveform");
                                if (cVar6 == '\0') {
                                  iVar7 = FUN_18049d2f0(lVar4,"Tracktion 3");
                                  if (iVar7 < 0) {
                                    iVar7 = FUN_18049d2f0(pbVar10,"Tracktion");
                                    if (iVar7 < 0) {
                                      iVar7 = FUN_18049d2f0(pbVar10,"reaper");
                                      if (iVar7 < 0) {
                                        iVar7 = FUN_18049d2f0(pbVar10,"Cubase4");
                                        if (iVar7 < 0) {
                                          iVar7 = FUN_18049d2f0(pbVar10,"Cubase5");
                                          if (iVar7 < 0) {
                                            iVar7 = FUN_18049d2f0(pbVar10,"Cubase6");
                                            if (iVar7 < 0) {
                                              iVar7 = FUN_18049d2f0(pbVar10,"Cubase7");
                                              if (iVar7 < 0) {
                                                iVar7 = FUN_18049d2f0(pbVar10,"Cubase8.exe");
                                                if (iVar7 < 0) {
                                                  iVar7 = FUN_18049d2f0(pbVar10,"Cubase8.5.exe");
                                                  if (iVar7 < 0) {
                                                    iVar7 = FUN_18049d2f0(pbVar10,"Cubase9.5.exe");
                                                    if ((iVar7 < 0) &&
                                                       (iVar7 = FUN_18049d2f0(lVar4,"Cubase 9.5"),
                                                       iVar7 < 0)) {
                                                      iVar7 = FUN_18049d2f0(pbVar10,"Cubase9.exe");
                                                      if ((iVar7 < 0) &&
                                                         (iVar7 = FUN_18049d2f0(lVar4,"Cubase 9"),
                                                         iVar7 < 0)) {
                                                        iVar7 = FUN_18049d2f0(pbVar10,
                                                  "Cubase10.5.exe");
                                                  if ((iVar7 < 0) &&
                                                     (iVar7 = FUN_18049d2f0(lVar4,"Cubase 10.5"),
                                                     iVar7 < 0)) {
                                                    iVar7 = FUN_18049d2f0(pbVar10,"Cubase10.exe");
                                                    if ((iVar7 < 0) &&
                                                       (iVar7 = FUN_18049d2f0(lVar4,"Cubase 10"),
                                                       iVar7 < 0)) {
                                                      iVar7 = FUN_18049d2f0(pbVar10,"Cubase");
                                                      if (iVar7 < 0) {
                                                        iVar7 = FUN_18049d2f0(pbVar10,"VSTBridgeApp"
                                                                             );
                                                        if (iVar7 < 0) {
                                                          iVar7 = FUN_18049d2f0(lVar4,"Wavelab 5");
                                                          if (iVar7 < 0) {
                                                            iVar7 = FUN_18049d2f0(lVar4,"Wavelab 6")
                                                            ;
                                                            if (iVar7 < 0) {
                                                              iVar7 = FUN_18049d2f0(lVar4,
                                                  "Wavelab 7");
                                                  if (iVar7 < 0) {
                                                    iVar7 = FUN_18049d2f0(lVar4,"Wavelab 8");
                                                    if (iVar7 < 0) {
                                                      iVar7 = FUN_18049d2f0(lVar4,"Nuendo");
                                                      if (iVar7 < 0) {
                                                        iVar7 = FUN_18049d2f0(pbVar10,"Wavelab");
                                                        if (iVar7 < 0) {
                                                          iVar7 = FUN_18049d2f0(pbVar10,"TestHost");
                                                          if (iVar7 < 0) {
                                                            iVar7 = FUN_18049d2f0(pbVar10,"rm-host")
                                                            ;
                                                            if (iVar7 < 0) {
                                                              cVar6 = FUN_18124a6c0(&local_res8,
                                                                                    &DAT_182493648);
                                                              if ((cVar6 == '\0') &&
                                                                 (iVar7 = FUN_181249270(&local_res8,
                                                                                        "ilbridge.")
                                                                 , iVar7 < 0)) {
                                                                iVar7 = FUN_18049d2f0(lVar4,
                                                  "Studio One");
                                                  if (iVar7 < 0) {
                                                    iVar7 = FUN_18049d2f0(lVar4,"Digital Performer")
                                                    ;
                                                    if (iVar7 < 0) {
                                                      iVar7 = FUN_18049d2f0(pbVar10,"VST_Scanner");
                                                      if (iVar7 < 0) {
                                                        iVar7 = FUN_18049d2f0(lVar4,
                                                  "Merging Technologies");
                                                  if (iVar7 < 0) {
                                                    cVar6 = FUN_18124a650(&local_res8,&DAT_1824936a0
                                                                         );
                                                    if (cVar6 == '\0') {
                                                      cVar6 = FUN_18124a650(&local_res8,"Sequoia");
                                                      if (cVar6 == '\0') {
                                                        iVar7 = FUN_18049d2f0(pbVar10,"Reason");
                                                        if (iVar7 < 0) {
                                                          iVar7 = FUN_18049d2f0(pbVar10,"Renoise");
                                                          if (iVar7 < 0) {
                                                            iVar7 = FUN_18049d2f0(pbVar10,"Resolve")
                                                            ;
                                                            if (iVar7 < 0) {
                                                              iVar7 = FUN_18049d2f0(lVar4,
                                                  "Bitwig Studio");
                                                  if (iVar7 < 0) {
                                                    iVar7 = FUN_18049d2f0(pbVar10,"Sadie");
                                                    if (iVar7 < 0) {
                                                      iVar7 = FUN_18049d2f0(pbVar10,"pluginval");
                                                      if (iVar7 < 0) {
                                                        iVar7 = FUN_18049d2f0(pbVar10,
                                                  "AudioPluginHost");
                                                  if (iVar7 < 0) {
                                                    iVar7 = FUN_18049d2f0(pbVar10,
                                                  "Vienna Ensemble Pro");
                                                  if (iVar7 < 0) {
                                                    uVar11 = 0;
                                                  }
                                                  else {
                                                    uVar11 = 0x3b;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x16;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x1b;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x1f;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0xe;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x12;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x1e;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x1d;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x18;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x17;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x19;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x3a;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x13;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x36;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x15;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x1a;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x35;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x34;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x2f;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x33;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x32;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x31;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x30;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x22;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x2b;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x29;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x2a;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x27;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x28;
                                                  }
                                                  }
                                                  else {
                                                    uVar11 = 0x26;
                                                  }
                                                }
                                                else {
                                                  uVar11 = 0x25;
                                                }
                                              }
                                              else {
                                                uVar11 = 0x24;
                                              }
                                            }
                                            else {
                                              uVar11 = 0x23;
                                            }
                                          }
                                          else {
                                            uVar11 = 0x21;
                                          }
                                        }
                                        else {
                                          uVar11 = 0x20;
                                        }
                                      }
                                      else {
                                        uVar11 = 0x1c;
                                      }
                                    }
                                    else {
                                      uVar11 = 0x38;
                                    }
                                  }
                                  else {
                                    uVar11 = 0x37;
                                  }
                                }
                                else {
                                  uVar11 = 0x39;
                                }
                              }
                              else {
                                uVar11 = 0xb;
                              }
                            }
                            else {
                              uVar11 = 10;
                            }
                          }
                          else {
                            uVar11 = 9;
                          }
                        }
                        else {
                          uVar11 = 0x11;
                        }
                      }
                      else {
                        uVar11 = 0x10;
                      }
                    }
                    else {
                      uVar11 = 0xf;
                    }
                  }
                  else {
                    uVar11 = 0xd;
                  }
                }
                else {
                  uVar11 = 8;
                }
              }
              else {
                uVar11 = 7;
              }
            }
            else {
              uVar11 = 6;
            }
          }
          else {
            uVar11 = 5;
          }
        }
        else {
          uVar11 = 4;
        }
      }
      else {
        uVar11 = 3;
      }
    }
    else {
      uVar11 = 2;
    }
  }
  FUN_180495200(pbVar10);
  FUN_180495200(lVar4);
  return uVar11;
}



############ FUN_ 181241ca0 size=1393 ############

undefined8 * FUN_181241ca0(undefined8 *param_1,undefined8 *param_2)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  bool bVar4;
  bool bVar5;
  char cVar6;
  byte bVar7;
  int iVar8;
  int iVar9;
  undefined8 *puVar10;
  longlong *plVar11;
  uint *puVar12;
  byte *pbVar13;
  byte *pbVar14;
  uint *_Memory;
  byte ***pppbVar15;
  byte **ppbVar16;
  int iVar17;
  byte **ppbVar18;
  byte *pbVar19;
  byte **local_res10;
  byte *local_res18;
  byte **local_res20;
  byte *local_b8;
  longlong local_b0;
  byte **local_a8;
  longlong local_a0;
  byte **local_98;
  uint *local_90;
  byte **local_88;
  uint *local_80;
  undefined4 local_78;
  longlong local_70;
  undefined8 local_68;
  byte **local_60;
  byte **local_58;
  
  local_68 = 0xfffffffffffffffe;
  iVar9 = 0;
  local_78 = 0;
  ppbVar16 = (byte **)*param_2;
  if (((ulonglong)ppbVar16[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(ppbVar16 + -2) = *(int *)(ppbVar16 + -2) + 1;
    UNLOCK();
  }
  local_res10 = ppbVar16;
  FUN_18049c9e0(&local_a0,&DAT_1821db634);
  local_b0 = local_a0;
  local_80 = (uint *)(local_a0 + -0x10);
  if ((*local_80 & 0x30000000) == 0) {
    LOCK();
    *local_80 = *local_80 + 1;
    UNLOCK();
  }
  local_res18 = (byte *)&local_b0;
  puVar10 = (undefined8 *)FUN_181232d30(&local_b0,&local_a0);
  pbVar19 = (byte *)*puVar10;
  local_90 = (uint *)(pbVar19 + -0x10);
  if ((*local_90 & 0x30000000) == 0) {
    LOCK();
    *local_90 = *local_90 + 1;
    UNLOCK();
  }
  bVar4 = false;
  puVar12 = (uint *)(local_b0 + -0x10);
  pbVar14 = pbVar19;
  iVar8 = iVar9;
  local_res18 = pbVar19;
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  while( true ) {
    while( true ) {
      pbVar13 = pbVar14 + 1;
      if (-1 < (char)*pbVar14) break;
      if ((*pbVar13 & 0xc0) != 0x80) goto LAB_181241db5;
      do {
        pbVar13 = pbVar13 + 1;
      } while ((*pbVar13 & 0xc0) == 0x80);
      pbVar14 = pbVar13;
      iVar8 = iVar8 + 1;
    }
    if (*pbVar14 == 0) break;
LAB_181241db5:
    pbVar14 = pbVar13;
    iVar8 = iVar8 + 1;
  }
  iVar8 = FUN_18049da40(local_res10,pbVar19,iVar8);
  if (iVar8 == 0) {
    iVar8 = FUN_181249270(&local_res10,pbVar19);
    pbVar14 = pbVar19;
    iVar17 = iVar9;
    if (iVar8 < 0) {
      local_res20 = (byte **)&DAT_1821dbf98;
    }
    else {
      while( true ) {
        while( true ) {
          pbVar13 = pbVar14 + 1;
          if (-1 < (char)*pbVar14) break;
          if ((*pbVar13 & 0xc0) != 0x80) goto LAB_181241e28;
          do {
            pbVar13 = pbVar13 + 1;
          } while ((*pbVar13 & 0xc0) == 0x80);
          pbVar14 = pbVar13;
          iVar17 = iVar17 + 1;
        }
        if (*pbVar14 == 0) break;
LAB_181241e28:
        pbVar14 = pbVar13;
        iVar17 = iVar17 + 1;
      }
      iVar8 = iVar8 + iVar17;
      ppbVar18 = local_res10;
      if (iVar8 < 1) {
        local_res20 = local_res10;
        pbVar19 = local_res18;
        if (((ulonglong)ppbVar16[-2] & 0x30000000) == 0) {
          LOCK();
          *(int *)(ppbVar16 + -2) = *(int *)(ppbVar16 + -2) + 1;
          UNLOCK();
        }
      }
      else {
        while (iVar8 = iVar8 + -1, -1 < iVar8) {
          bVar2 = *(byte *)ppbVar18;
          if (bVar2 == 0) {
            local_res20 = (byte **)&DAT_1821dbf98;
            goto LAB_181241ea1;
          }
          ppbVar18 = (byte **)((longlong)ppbVar18 + 1);
          if ((char)bVar2 < '\0') {
            bVar7 = 0x40;
            bVar3 = bVar2 & 0x40;
            while ((bVar3 != 0 && (8 < bVar7))) {
              ppbVar18 = (byte **)((longlong)ppbVar18 + 1);
              bVar7 = bVar7 >> 1;
              bVar3 = bVar2 & bVar7;
            }
          }
        }
        FUN_18049c9e0(&local_res20);
      }
    }
LAB_181241ea1:
    bVar4 = true;
    cVar6 = FUN_18124a6c0(&local_res20,local_a0);
    if (cVar6 == '\0') {
      bVar5 = true;
      goto LAB_181241ec3;
    }
  }
  bVar5 = false;
LAB_181241ec3:
  if ((bVar4) &&
     (ppbVar18 = local_res20 + -2, pbVar19 = local_res18, ((ulonglong)*ppbVar18 & 0x30000000) == 0))
  {
    LOCK();
    uVar1 = *(uint *)ppbVar18;
    *(uint *)ppbVar18 = *(uint *)ppbVar18 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppbVar18);
    }
  }
  if (bVar5) {
    iVar8 = FUN_181249270(&local_res10,pbVar19);
    if (iVar8 < 0) {
      local_a8 = (byte **)&DAT_1821dbf98;
    }
    else {
      while( true ) {
        while( true ) {
          bVar2 = *pbVar19;
          pbVar19 = pbVar19 + 1;
          if (-1 < (char)bVar2) break;
          if ((*pbVar19 & 0xc0) != 0x80) goto LAB_181241f48;
          do {
            pbVar19 = pbVar19 + 1;
          } while ((*pbVar19 & 0xc0) == 0x80);
          iVar9 = iVar9 + 1;
        }
        if (bVar2 == 0) break;
LAB_181241f48:
        iVar9 = iVar9 + 1;
      }
      iVar8 = iVar8 + iVar9;
      ppbVar18 = local_res10;
      if (iVar8 < 1) {
        local_a8 = local_res10;
        if (((ulonglong)ppbVar16[-2] & 0x30000000) == 0) {
          LOCK();
          *(int *)(ppbVar16 + -2) = *(int *)(ppbVar16 + -2) + 1;
          UNLOCK();
        }
      }
      else {
        while (iVar8 = iVar8 + -1, -1 < iVar8) {
          bVar2 = *(byte *)ppbVar18;
          if (bVar2 == 0) {
            local_a8 = (byte **)&DAT_1821dbf98;
            goto LAB_181241fc7;
          }
          ppbVar18 = (byte **)((longlong)ppbVar18 + 1);
          if ((char)bVar2 < '\0') {
            bVar7 = 0x40;
            bVar3 = bVar2 & 0x40;
            while ((bVar3 != 0 && (8 < bVar7))) {
              ppbVar18 = (byte **)((longlong)ppbVar18 + 1);
              bVar7 = bVar7 >> 1;
              bVar3 = bVar2 & bVar7;
            }
          }
        }
        FUN_18049c9e0(&local_a8);
      }
    }
LAB_181241fc7:
    ppbVar16 = local_res10;
    local_60 = local_res10;
    local_res10 = local_a8;
    ppbVar16 = ppbVar16 + -2;
    pbVar19 = local_res18;
    if (((ulonglong)*ppbVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *(uint *)ppbVar16;
      *(uint *)ppbVar16 = *(uint *)ppbVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(ppbVar16);
      }
    }
  }
  iVar9 = FUN_181249270(&local_res10,pbVar19);
  puVar12 = local_90;
  while (local_90 = puVar12, -1 < iVar9) {
    puVar10 = (undefined8 *)FUN_1812319a0(&local_res10,&local_70,pbVar19,local_a0);
    pbVar19 = local_res18;
    local_58 = local_res10;
    ppbVar16 = (byte **)*puVar10;
    *puVar10 = local_res10;
    puVar12 = (uint *)(local_70 + -0x10);
    local_res10 = ppbVar16;
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
    iVar9 = FUN_181249270(&local_res10,local_res18);
    puVar12 = local_90;
  }
  if (bVar5) {
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      *puVar12 = *puVar12 + 1;
      UNLOCK();
    }
    local_98 = &local_b8;
    local_b8 = pbVar19;
    plVar11 = (longlong *)FUN_181232d30(&local_b8,&local_res10);
    local_98 = (byte **)*plVar11;
    if (((ulonglong)local_98[-2] & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_98 + -2) = *(int *)(local_98 + -2) + 1;
      UNLOCK();
    }
    _Memory = (uint *)(local_b8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    pppbVar15 = &local_98;
    bVar5 = true;
    bVar4 = false;
  }
  else {
    local_88 = local_res10;
    if (((ulonglong)local_res10[-2] & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -2) = *(int *)(local_res10 + -2) + 1;
      UNLOCK();
    }
    pppbVar15 = &local_88;
    bVar5 = false;
    bVar4 = true;
  }
  *param_1 = *pppbVar15;
  *pppbVar15 = (byte **)&DAT_1821dbf98;
  if ((bVar4) && (ppbVar16 = local_88 + -2, ((ulonglong)*ppbVar16 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *(uint *)ppbVar16;
    *(uint *)ppbVar16 = *(uint *)ppbVar16 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppbVar16);
    }
  }
  if ((bVar5) && (ppbVar16 = local_98 + -2, ((ulonglong)*ppbVar16 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *(uint *)ppbVar16;
    *(uint *)ppbVar16 = *(uint *)ppbVar16 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppbVar16);
    }
  }
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  if ((*local_80 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *local_80;
    *local_80 = *local_80 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(local_80);
    }
  }
  ppbVar16 = local_res10 + -2;
  if (((ulonglong)*ppbVar16 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)ppbVar16;
    *(uint *)ppbVar16 = *(uint *)ppbVar16 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppbVar16);
    }
  }
  return param_1;
}



############ FUN_ 181231b00 size=569 ############

undefined8 *
FUN_181231b00(undefined8 *param_1,undefined8 *param_2,int param_3,int param_4,void *param_5)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  byte bVar4;
  undefined4 *puVar5;
  int iVar6;
  int iVar7;
  size_t _Size;
  byte *_Src;
  byte *pbVar8;
  size_t _Size_00;
  void *_Dst;
  longlong lVar9;
  size_t _Size_01;
  bool bVar10;
  byte *local_48;
  longlong local_40;
  byte *local_38;
  undefined4 *local_30;
  
  local_48 = (byte *)*param_1;
  iVar7 = 0;
  if (param_3 < 0) {
    param_3 = iVar7;
  }
  if (param_4 < 0) {
    param_4 = iVar7;
  }
  pbVar8 = local_48;
  iVar6 = iVar7;
  if (0 < param_3) {
    do {
      bVar1 = *pbVar8;
      if (bVar1 == 0) {
        if ((*(uint *)(local_48 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
          UNLOCK();
        }
        FUN_1804933b0(param_2,&local_48,param_5);
        return param_2;
      }
      pbVar8 = pbVar8 + 1;
      if ((char)bVar1 < '\0') {
        bVar4 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar4))) {
          pbVar8 = pbVar8 + 1;
          bVar4 = bVar4 >> 1;
          bVar2 = bVar1 & bVar4;
        }
      }
      iVar6 = iVar6 + 1;
    } while (iVar6 < param_3);
  }
  _Src = pbVar8;
  if (0 < param_4) {
    do {
      bVar1 = *_Src;
      if (bVar1 == 0) break;
      _Src = _Src + 1;
      if ((char)bVar1 < '\0') {
        bVar4 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar4))) {
          _Src = _Src + 1;
          bVar4 = bVar4 >> 1;
          bVar2 = bVar1 & bVar4;
        }
      }
      iVar7 = iVar7 + 1;
    } while (iVar7 < param_4);
  }
  if ((pbVar8 == local_48) && (*_Src == 0)) {
    FUN_18049c9e0(param_2,param_5);
    return param_2;
  }
  _Size_00 = (longlong)pbVar8 - (longlong)local_48;
  local_40 = -1;
  do {
    local_40 = local_40 + 1;
  } while (*(char *)((longlong)param_5 + local_40) != '\0');
  local_40 = local_40 + (longlong)param_5;
  lVar9 = -1;
  _Size = local_40 - (longlong)param_5;
  do {
    lVar9 = lVar9 + 1;
  } while (_Src[lVar9] != 0);
  local_38 = _Src + lVar9;
  _Size_01 = (longlong)local_38 - (longlong)_Src;
  lVar9 = _Size_01 + _Size + _Size_00;
  if (lVar9 == 0) {
    *param_2 = &DAT_1821dbf98;
  }
  else {
    puVar5 = (undefined4 *)thunk_FUN_1811316e0();
    LOCK();
    *puVar5 = 0;
    UNLOCK();
    *(ulonglong *)(puVar5 + 2) = lVar9 + 4U & 0xfffffffffffffffc;
    puVar5 = puVar5 + 4;
    local_30 = puVar5;
    memcpy(puVar5,(void *)*param_1,_Size_00);
    memcpy((void *)(_Size_00 + (longlong)puVar5),param_5,_Size);
    _Dst = (void *)((longlong)(_Size_00 + (longlong)puVar5) + _Size);
    memcpy(_Dst,_Src,_Size_01);
    *(undefined1 *)((longlong)_Dst + _Size_01) = 0;
    *param_2 = puVar5;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar3 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar3;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_2;
}



############ FUN_ 1804933b0 size=185 ############

longlong * FUN_1804933b0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  longlong *local_res8;
  longlong *local_res10;
  
  local_res8 = param_1;
  local_res10 = param_2;
  FUN_18049c9e0(&local_res8,param_3,param_3,param_4,0xfffffffffffffffe);
  plVar3 = (longlong *)FUN_181232d30(param_2,&local_res8);
  lVar2 = *plVar3;
  *param_1 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(local_res8 + -2);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 181245100 size=1508 ############

undefined8 FUN_181245100(undefined8 *param_1,undefined8 param_2,byte *param_3)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  char cVar4;
  int iVar5;
  uint uVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  byte bVar9;
  uint *puVar10;
  uint uVar11;
  int iVar12;
  byte *_Dst;
  longlong lVar13;
  longlong lVar14;
  byte *pbVar15;
  size_t _Size;
  byte *local_res18;
  byte *local_res20;
  byte *local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58 [3];
  byte *local_40;
  byte *local_38;
  
  local_58[1] = 0xfffffffffffffffe;
  cVar4 = FUN_181240eb0(param_3);
  if (cVar4 == '\0') {
    iVar5 = FUN_18049bc80(param_3,0x2f);
    if (iVar5 < 0) {
      local_res20 = (byte *)*param_1;
      local_res18 = param_3;
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
LAB_181245230:
      pbVar3 = local_res18;
      bVar1 = *local_res18;
      uVar11 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar11 = 0x7f;
        uVar6 = 0x40;
        iVar5 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar6 < 9) break;
            uVar11 = uVar11 >> 1;
            iVar5 = iVar5 + 1;
            uVar6 = uVar6 >> 1;
          } while ((bVar1 & uVar6) != 0);
        }
        uVar11 = bVar1 & uVar11;
        lVar14 = 1;
        if (0 < (longlong)iVar5) {
          do {
            if ((local_res18[lVar14] & 0xc0) != 0x80) break;
            uVar11 = local_res18[lVar14] & 0x3f | uVar11 << 6;
            lVar14 = lVar14 + 1;
          } while (lVar14 <= iVar5);
        }
      }
      if (uVar11 == 0x2e) {
        local_res18 = local_res18 + 1;
        if ((char)bVar1 < '\0') {
          bVar9 = 0x40;
          bVar2 = bVar1 & 0x40;
          while ((bVar2 != 0 && (8 < bVar9))) {
            local_res18 = local_res18 + 1;
            bVar9 = bVar9 >> 1;
            bVar2 = bVar1 & bVar9;
          }
        }
        bVar1 = *local_res18;
        uVar11 = (uint)bVar1;
        if ((char)bVar1 < '\0') {
          uVar6 = 0x40;
          uVar11 = 0x7f;
          iVar5 = 0;
          if ((bVar1 & 0x40) != 0) {
            do {
              if (uVar6 < 9) break;
              uVar11 = uVar11 >> 1;
              iVar5 = iVar5 + 1;
              uVar6 = uVar6 >> 1;
            } while ((bVar1 & uVar6) != 0);
          }
          uVar11 = bVar1 & uVar11;
          lVar14 = 1;
          if (0 < iVar5) {
            do {
              if ((local_res18[lVar14] & 0xc0) != 0x80) break;
              uVar11 = local_res18[lVar14] & 0x3f | uVar11 << 6;
              lVar14 = lVar14 + 1;
            } while (lVar14 <= iVar5);
          }
        }
        if (uVar11 == 0x2e) {
          local_res18 = local_res18 + 1;
          if ((char)bVar1 < '\0') {
            bVar9 = 0x40;
            bVar2 = bVar1 & 0x40;
            while ((bVar2 != 0 && (8 < bVar9))) {
              local_res18 = local_res18 + 1;
              bVar9 = bVar9 >> 1;
              bVar2 = bVar1 & bVar9;
            }
          }
          bVar1 = *local_res18;
          uVar11 = (uint)bVar1;
          if ((char)bVar1 < '\0') {
            uVar6 = 0x40;
            uVar11 = 0x7f;
            iVar5 = 0;
            if ((bVar1 & 0x40) != 0) {
              do {
                if (uVar6 < 9) break;
                uVar11 = uVar11 >> 1;
                iVar5 = iVar5 + 1;
                uVar6 = uVar6 >> 1;
              } while ((bVar1 & uVar6) != 0);
            }
            uVar11 = bVar1 & uVar11;
            lVar14 = 1;
            if (0 < iVar5) {
              do {
                if ((local_res18[lVar14] & 0xc0) != 0x80) break;
                uVar11 = local_res18[lVar14] & 0x3f | uVar11 << 6;
                lVar14 = lVar14 + 1;
              } while (lVar14 <= iVar5);
            }
          }
          if ((uVar11 != 0x5c) && (uVar11 != 0)) goto LAB_1812455ef;
          iVar5 = FUN_1812327b0(&local_res20);
          pbVar3 = local_res20;
          if (-1 < iVar5) {
            if (iVar5 < 1) {
              local_78 = &DAT_1821dbf98;
            }
            else {
              iVar12 = 0;
              pbVar15 = local_res20;
              if (0 < iVar5) {
                do {
                  bVar1 = *pbVar15;
                  if (bVar1 == 0) {
                    local_78 = local_res20;
                    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
                      LOCK();
                      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
                      UNLOCK();
                    }
                    goto LAB_18124544e;
                  }
                  iVar12 = iVar12 + 1;
                  pbVar15 = pbVar15 + 1;
                  if ((char)bVar1 < '\0') {
                    bVar9 = 0x40;
                    bVar2 = bVar1 & 0x40;
                    while ((bVar2 != 0 && (8 < bVar9))) {
                      pbVar15 = pbVar15 + 1;
                      bVar9 = bVar9 >> 1;
                      bVar2 = bVar1 & bVar9;
                    }
                  }
                } while (iVar12 < iVar5);
              }
              FUN_18124a8a0(&local_78,local_res20);
            }
LAB_18124544e:
            local_40 = pbVar3;
            local_res20 = local_78;
            local_78 = pbVar3;
            puVar10 = (uint *)(pbVar3 + -0x10);
            if ((*puVar10 & 0x30000000) == 0) {
              LOCK();
              uVar11 = *puVar10;
              *puVar10 = *puVar10 - 1;
              UNLOCK();
              if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar10);
              }
            }
          }
LAB_181245482:
          bVar1 = *local_res18;
          uVar11 = (uint)bVar1;
          if ((char)bVar1 < '\0') {
            uVar11 = 0x7f;
            uVar6 = 0x40;
            iVar5 = 0;
            if ((bVar1 & 0x40) != 0) {
              do {
                if (uVar6 < 9) break;
                uVar11 = uVar11 >> 1;
                iVar5 = iVar5 + 1;
                uVar6 = uVar6 >> 1;
              } while ((bVar1 & uVar6) != 0);
            }
            uVar11 = bVar1 & uVar11;
            lVar14 = 1;
            if (0 < (longlong)iVar5) {
              do {
                if ((local_res18[lVar14] & 0xc0) != 0x80) break;
                uVar11 = local_res18[lVar14] & 0x3f | uVar11 << 6;
                lVar14 = lVar14 + 1;
              } while (lVar14 <= iVar5);
            }
          }
          if (uVar11 == 0x5c) {
            local_res18 = local_res18 + 1;
            if ((char)bVar1 < '\0') {
              bVar9 = 0x40;
              bVar2 = bVar1 & 0x40;
              while ((bVar2 != 0 && (8 < bVar9))) {
                local_res18 = local_res18 + 1;
                bVar9 = bVar9 >> 1;
                bVar2 = bVar1 & bVar9;
              }
            }
            goto LAB_181245482;
          }
        }
        else {
          if ((uVar11 != 0x5c) && (uVar11 != 0)) goto LAB_1812455ef;
LAB_181245550:
          bVar1 = *local_res18;
          uVar11 = (uint)bVar1;
          if ((char)bVar1 < '\0') {
            uVar11 = 0x7f;
            uVar6 = 0x40;
            iVar5 = 0;
            if ((bVar1 & 0x40) != 0) {
              do {
                if (uVar6 < 9) break;
                uVar11 = uVar11 >> 1;
                iVar5 = iVar5 + 1;
                uVar6 = uVar6 >> 1;
              } while ((bVar1 & uVar6) != 0);
            }
            uVar11 = bVar1 & uVar11;
            lVar14 = 1;
            if (0 < (longlong)iVar5) {
              do {
                if ((local_res18[lVar14] & 0xc0) != 0x80) break;
                uVar11 = local_res18[lVar14] & 0x3f | uVar11 << 6;
                lVar14 = lVar14 + 1;
              } while (lVar14 <= iVar5);
            }
          }
          if (uVar11 == 0x5c) {
            local_res18 = local_res18 + 1;
            if ((char)bVar1 < '\0') {
              bVar9 = 0x40;
              bVar2 = bVar1 & 0x40;
              while ((bVar2 != 0 && (8 < bVar9))) {
                local_res18 = local_res18 + 1;
                bVar9 = bVar9 >> 1;
                bVar2 = bVar1 & bVar9;
              }
            }
            goto LAB_181245550;
          }
        }
        goto LAB_181245230;
      }
LAB_1812455ef:
      plVar8 = (longlong *)FUN_1812416f0(local_58,&local_res20);
      local_38 = local_res20;
      pbVar15 = (byte *)*plVar8;
      *plVar8 = (longlong)local_res20;
      puVar10 = (uint *)(local_58[0] + -0x10);
      local_res20 = pbVar15;
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar11 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      lVar14 = -1;
      do {
        lVar14 = lVar14 + 1;
      } while (pbVar3[lVar14] != 0);
      if (0 < (int)lVar14) {
        lVar13 = -1;
        do {
          lVar13 = lVar13 + 1;
        } while (pbVar15[lVar13] != 0);
        _Size = (size_t)(int)lVar14;
        FUN_1812342b0(&local_res20,_Size + lVar13);
        pbVar15 = local_res20;
        _Dst = local_res20 + (int)lVar13;
        memcpy(_Dst,pbVar3,_Size);
        _Dst[_Size] = 0;
      }
      FUN_181241890(param_2,&local_res20);
      puVar10 = (uint *)(pbVar15 + -0x10);
      uVar11 = *puVar10;
    }
    else {
      FUN_18049c9e0(&local_68,param_3);
      puVar7 = (undefined8 *)FUN_1812316c0(&local_68,&local_60,0x2f);
      local_58[2] = *puVar7;
      FUN_181245100(param_1,param_2);
      puVar10 = (uint *)(local_60 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar11 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_68 + -0x10);
      uVar11 = *puVar10;
    }
    if ((uVar11 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    uVar11 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
  }
  else {
    FUN_18049c9e0(&local_70,param_3);
    FUN_181241890(param_2,&local_70);
    puVar10 = (uint *)(local_70 + -0x10);
    if ((*puVar10 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    uVar11 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
  }
  if (uVar11 != 0) {
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(puVar10);
}



############ FUN_ 18116c900 size=553 ############

undefined8 *
FUN_18116c900(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined1 param_4)

{
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  byte bVar4;
  bool bVar5;
  char cVar6;
  byte bVar7;
  DWORD DVar8;
  int iVar9;
  undefined8 *puVar10;
  uint *puVar11;
  byte *pbVar12;
  undefined1 *local_res18;
  longlong local_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined1 local_40 [8];
  longlong local_38;
  longlong local_30;
  
  local_48 = 0xfffffffffffffffe;
  *param_1 = PresetDirectory::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = param_3;
  param_1[4] = &DAT_1821dbf98;
  param_1[5] = &DAT_1821dbf98;
  lVar3 = *param_2;
  param_1[6] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = param_4;
  FUN_18116af90(param_1);
  bVar5 = false;
  if (*(char *)*param_2 != '\0') {
    puVar10 = (undefined8 *)FUN_18049a930(local_40,param_2);
    DVar8 = GetFileAttributesW((LPCWSTR)*puVar10);
    if (DVar8 != 0xffffffff) {
      bVar5 = true;
    }
  }
  if (bVar5) {
    local_58 = *param_2;
    if ((*(uint *)(local_58 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_58 + -0x10) = *(int *)(local_58 + -0x10) + 1;
      UNLOCK();
    }
    cVar6 = FUN_181168f80(param_1,&local_58);
    if (cVar6 == '\0') {
      iVar9 = FUN_1812327b0(param_2,0x5c);
      if (iVar9 + 1 < 1) {
        local_res18 = (undefined1 *)*param_2;
        if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        pbVar12 = (byte *)*param_2;
        for (; -1 < iVar9; iVar9 = iVar9 + -1) {
          bVar2 = *pbVar12;
          if (bVar2 == 0) {
            local_res18 = &DAT_1821dbf98;
            goto LAB_18116ca70;
          }
          pbVar12 = pbVar12 + 1;
          if ((char)bVar2 < '\0') {
            bVar7 = 0x40;
            bVar4 = bVar2 & 0x40;
            while ((bVar4 != 0 && (8 < bVar7))) {
              pbVar12 = pbVar12 + 1;
              bVar7 = bVar7 >> 1;
              bVar4 = bVar2 & bVar7;
            }
          }
        }
        FUN_18049c9e0(&local_res18);
      }
LAB_18116ca70:
      local_38 = param_1[4];
      param_1[4] = local_res18;
      puVar11 = (uint *)(local_38 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      FUN_18049c4e0(&local_50,&DAT_1821d8e5b);
      local_30 = param_1[5];
      param_1[5] = local_50;
      puVar11 = (uint *)(local_30 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
    }
  }
  puVar11 = (uint *)(*param_2 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  return param_1;
}



############ FUN_ 1812228e0 size=808 ############

undefined8 * FUN_1812228e0(longlong param_1,undefined8 *param_2,undefined8 *param_3)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 *puVar9;
  uint *puVar10;
  byte *pbVar11;
  int iVar12;
  char *pcVar13;
  char *local_res20;
  longlong local_28;
  char *local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  iVar7 = FUN_18049bb30(*param_3,&DAT_1821db3c4);
  if (iVar7 == 0) {
LAB_181222b57:
    puVar9 = (undefined4 *)thunk_FUN_1811316e0(0x1b);
    LOCK();
    *puVar9 = 0;
    UNLOCK();
    *(undefined8 *)(puVar9 + 2) = 4;
    *param_2 = puVar9 + 4;
    *(undefined2 *)(puVar9 + 4) = 0x26;
  }
  else {
    iVar7 = FUN_18049bb30(*param_3,&DAT_1821db418);
    if (iVar7 == 0) {
      puVar9 = (undefined4 *)thunk_FUN_1811316e0(0x1b);
      LOCK();
      *puVar9 = 0;
      UNLOCK();
      *(undefined8 *)(puVar9 + 2) = 4;
      *param_2 = puVar9 + 4;
      *(undefined2 *)(puVar9 + 4) = 0x22;
      return param_2;
    }
    iVar7 = FUN_18049bb30(*param_3,&DAT_1821db410);
    if (iVar7 == 0) {
      puVar9 = (undefined4 *)thunk_FUN_1811316e0(0x1b);
      LOCK();
      *puVar9 = 0;
      UNLOCK();
      *(undefined8 *)(puVar9 + 2) = 4;
      *param_2 = puVar9 + 4;
      *(undefined2 *)(puVar9 + 4) = 0x27;
      return param_2;
    }
    iVar7 = FUN_18049bb30(*param_3,&DAT_1821db424);
    if (iVar7 == 0) {
      puVar9 = (undefined4 *)thunk_FUN_1811316e0(0x1b);
      LOCK();
      *puVar9 = 0;
      UNLOCK();
      *(undefined8 *)(puVar9 + 2) = 4;
      *param_2 = puVar9 + 4;
      *(undefined2 *)(puVar9 + 4) = 0x3c;
      return param_2;
    }
    iVar7 = FUN_18049bb30(*param_3,&DAT_1821db420);
    if (iVar7 == 0) {
      puVar9 = (undefined4 *)thunk_FUN_1811316e0(0x1b);
      LOCK();
      *puVar9 = 0;
      UNLOCK();
      *(undefined8 *)(puVar9 + 2) = 4;
      *param_2 = puVar9 + 4;
      *(undefined2 *)(puVar9 + 4) = 0x3e;
      return param_2;
    }
    iVar7 = FUN_180493050(param_3,0);
    if (iVar7 != 0x23) {
      FUN_181221ef0(param_1,param_2,param_3);
      return param_2;
    }
    iVar12 = 1;
    iVar7 = FUN_180493050(param_3,1);
    if ((iVar7 - 0x58U & 0xffffffdf) == 0) {
      pbVar11 = (byte *)*param_3;
      do {
        bVar4 = *pbVar11;
        if (bVar4 == 0) {
          local_20 = "";
          goto LAB_181222bcf;
        }
        pbVar11 = pbVar11 + 1;
        if ((char)bVar4 < '\0') {
          bVar6 = 0x40;
          bVar5 = bVar4 & 0x40;
          while ((bVar5 != 0 && (8 < bVar6))) {
            pbVar11 = pbVar11 + 1;
            bVar6 = bVar6 >> 1;
            bVar5 = bVar4 & bVar6;
          }
        }
        iVar12 = iVar12 + -1;
      } while (-1 < iVar12);
      FUN_18049c9e0(&local_20);
LAB_181222bcf:
      pcVar13 = local_20;
      uVar8 = FUN_18049c3c0(local_20);
      FUN_181233f40(param_2,uVar8);
    }
    else {
      if (9 < iVar7 - 0x30U) {
        FUN_18049c4e0(&local_28,"illegal escape sequence");
        if ((*(uint *)(local_28 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_28 + -0x10) = *(int *)(local_28 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        lVar3 = *(longlong *)(param_1 + 0x18);
        *(longlong *)(param_1 + 0x18) = local_28;
        UNLOCK();
        puVar10 = (uint *)(lVar3 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        *(undefined1 *)(param_1 + 0x11) = 1;
        if ((*(uint *)(local_28 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar1 = (int *)(local_28 + -0x10);
          iVar7 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)(local_28 + -0x10));
          }
        }
        goto LAB_181222b57;
      }
      pbVar11 = (byte *)*param_3;
      iVar7 = 0;
      do {
        bVar4 = *pbVar11;
        if (bVar4 == 0) {
          local_res20 = "";
          goto LAB_181222a9f;
        }
        pbVar11 = pbVar11 + 1;
        if ((char)bVar4 < '\0') {
          bVar6 = 0x40;
          bVar5 = bVar4 & 0x40;
          while ((bVar5 != 0 && (8 < bVar6))) {
            pbVar11 = pbVar11 + 1;
            bVar6 = bVar6 >> 1;
            bVar5 = bVar4 & bVar6;
          }
        }
        iVar7 = iVar7 + -1;
      } while (-1 < iVar7);
      FUN_18049c9e0(&local_res20);
LAB_181222a9f:
      pcVar13 = local_res20;
      iVar7 = atoi(local_res20);
      FUN_181233f40(param_2,iVar7);
    }
    puVar10 = (uint *)(pcVar13 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  return param_2;
}



############ FUN_ 181241230 size=238 ############

longlong * FUN_181241230(undefined8 *param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  int *_Memory;
  longlong *local_res10;
  
  local_res10 = param_2;
  iVar3 = FUN_1812327b0(param_1,0x5c);
  if (iVar3 < 1) {
    if (iVar3 == 0) {
      FUN_18049c9e0(&local_res10,&DAT_1821db634);
    }
    else {
      local_res10 = (longlong *)*param_1;
      if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
        UNLOCK();
      }
    }
  }
  else {
    FUN_1812490c0(param_1,&local_res10,0,iVar3);
  }
  *param_2 = (longlong)&DAT_1821dbf98;
  if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *param_2;
  *param_2 = (longlong)local_res10;
  UNLOCK();
  _Memory = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar3 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
    LOCK();
    plVar1 = local_res10 + -2;
    lVar2 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(local_res10 + -2);
    }
  }
  return param_2;
}



############ FUN_ 1812491d0 size=139 ############

longlong * FUN_1812491d0(longlong *param_1,longlong *param_2,int param_3)

{
  byte bVar1;
  longlong lVar2;
  byte bVar3;
  byte bVar4;
  byte *pbVar5;
  
  if (param_3 < 1) {
    lVar2 = *param_1;
    *param_2 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
      return param_2;
    }
  }
  else {
    pbVar5 = (byte *)*param_1;
    while (param_3 = param_3 + -1, -1 < param_3) {
      bVar1 = *pbVar5;
      if (bVar1 == 0) {
        *param_2 = (longlong)&DAT_1821dbf98;
        return param_2;
      }
      pbVar5 = pbVar5 + 1;
      if ((char)bVar1 < '\0') {
        bVar4 = 0x40;
        bVar3 = bVar1 & 0x40;
        while ((bVar3 != 0 && (8 < bVar4))) {
          pbVar5 = pbVar5 + 1;
          bVar4 = bVar4 >> 1;
          bVar3 = bVar1 & bVar4;
        }
      }
    }
    FUN_18049c9e0(param_2);
  }
  return param_2;
}



############ FUN_ 180493470 size=129 ############

undefined8
FUN_180493470(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  undefined8 local_res8;
  longlong local_res10;
  
  local_res8 = param_1;
  FUN_18049c9e0(&local_res10,param_3,param_3,param_4,0xfffffffffffffffe);
  FUN_18049c4e0(&local_res8,param_2);
  FUN_181232aa0(param_1,&local_res8,&local_res10);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 180499180 size=1585 ############

ulonglong FUN_180499180(longlong param_1,undefined8 param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  uint uVar2;
  byte bVar3;
  byte bVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  int iVar8;
  DWORD DVar9;
  undefined4 uVar10;
  ulonglong extraout_RAX;
  ulonglong uVar11;
  void *_Memory;
  undefined8 *puVar12;
  longlong *plVar13;
  byte *pbVar14;
  uint *puVar15;
  uint *puVar16;
  int iVar17;
  undefined1 **ppuVar18;
  uint uVar19;
  undefined1 **ppuVar20;
  bool bVar21;
  int local_res20 [2];
  longlong local_1b0;
  char *local_1a8;
  undefined1 *local_1a0 [2];
  char *local_190;
  undefined1 *local_188;
  undefined1 **local_180;
  undefined8 local_178;
  char **local_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  undefined1 local_140;
  longlong local_138;
  undefined1 *local_130;
  void *local_128;
  longlong local_118;
  char *local_110;
  undefined8 local_f0;
  
  local_f0 = 0xfffffffffffffffe;
  uVar19 = 0;
  bVar6 = false;
  bVar5 = false;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 200);
  EnterCriticalSection(lpCriticalSection);
  if (*(char *)(param_1 + 0xf4) == '\0') {
    LeaveCriticalSection(lpCriticalSection);
    FUN_181214a30(param_1 + 0x10,&local_1b0,*(char *)(param_1 + 0x89) == '\0');
    if (*(int *)(param_1 + 0x98) < 0) {
      *(int *)(param_1 + 0x98) = *(int *)(param_1 + 0x98) + -1;
      bVar21 = *(longlong *)(param_1 + 0x60) == 0;
    }
    else {
      plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
      *(int *)(param_1 + 0x98) = *(int *)(param_1 + 0x98) + -1;
      FUN_180499af0(param_1,&local_1b0,param_2);
      bVar21 = *(longlong *)(param_1 + 0x60) == 0;
      if (!bVar21) {
        local_res20[0] = 0x1000;
        local_160 = 0;
        local_158 = 0;
        local_150 = 0;
        local_148 = 0;
        local_140 = 1;
        _Memory = malloc(0x1000);
        local_128 = _Memory;
        iVar8 = HttpQueryInfoW(*(undefined8 *)(param_1 + 0x60),0x16,_Memory,local_res20,0);
        if (iVar8 == 0) {
          DVar9 = GetLastError();
          if (DVar9 == 0x7a) {
            local_res20[0] = local_res20[0] + 0x1000;
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        local_180 = (undefined1 **)0x0;
        local_178 = 0;
        FUN_18049c800(&local_118,_Memory);
        FUN_18122cec0(&local_180,local_118);
        puVar16 = (uint *)(local_118 + -0x10);
        if ((*puVar16 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar16;
          *puVar16 = *puVar16 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar16);
          }
        }
        if ((int)local_178._4_4_ < 1) {
LAB_180499744:
          FUN_180488c50(&local_180);
                    /* WARNING: Subroutine does not return */
          free(local_180);
        }
        bVar21 = local_178._4_4_ != 0;
        ppuVar20 = local_180;
LAB_18049936f:
        ppuVar18 = ppuVar20;
        if (!bVar21) {
          if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar18 = &DAT_18267af68;
        }
        iVar8 = FUN_181249270(ppuVar18,&DAT_182495db0);
        if (iVar8 < 0) {
          local_188 = *ppuVar18;
          if ((*(uint *)(local_188 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_188 + -0x10) = *(int *)(local_188 + -0x10) + 1;
            UNLOCK();
          }
        }
        else {
          FUN_1812490c0(ppuVar18,&local_188,0,iVar8);
        }
        iVar8 = FUN_181249270(ppuVar18);
        if (-1 < iVar8) {
          pbVar14 = &DAT_182495db0;
          iVar17 = 0;
LAB_180499412:
          do {
            bVar3 = *pbVar14;
            pbVar14 = pbVar14 + 1;
            if ((char)bVar3 < '\0') {
              if ((*pbVar14 & 0xc0) == 0x80) {
                do {
                  pbVar14 = pbVar14 + 1;
                } while ((*pbVar14 & 0xc0) == 0x80);
                iVar17 = iVar17 + 1;
                goto LAB_180499412;
              }
            }
            else if (bVar3 == 0) goto LAB_18049944a;
            iVar17 = iVar17 + 1;
          } while( true );
        }
        local_1a0[0] = &DAT_1821dbf98;
        goto LAB_1804994c0;
      }
    }
    puVar16 = (uint *)(local_1b0 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar19 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar19 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    uVar11 = (ulonglong)!bVar21;
  }
  else {
    LeaveCriticalSection(lpCriticalSection);
    uVar11 = extraout_RAX & 0xffffffffffffff00;
  }
  return uVar11;
LAB_18049944a:
  iVar8 = iVar8 + iVar17;
  if (iVar8 < 1) {
    local_1a0[0] = *ppuVar18;
    if ((*(uint *)(local_1a0[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_1a0[0] + -0x10) = *(int *)(local_1a0[0] + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar14 = *ppuVar18;
    while (iVar8 = iVar8 + -1, -1 < iVar8) {
      bVar3 = *pbVar14;
      if (bVar3 == 0) {
        local_1a0[0] = &DAT_1821dbf98;
        goto LAB_1804994c0;
      }
      pbVar14 = pbVar14 + 1;
      if ((char)bVar3 < '\0') {
        bVar7 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar7))) {
          pbVar14 = pbVar14 + 1;
          bVar7 = bVar7 >> 1;
          bVar4 = bVar3 & bVar7;
        }
      }
    }
    FUN_18049c9e0(local_1a0);
  }
LAB_1804994c0:
  uVar10 = FUN_1812498b0(&local_160,local_188,local_140,0);
  puVar12 = (undefined8 *)FUN_181249970(&local_150,uVar10);
  local_110 = (char *)*puVar12;
  puVar16 = (uint *)(local_110 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    *puVar16 = *puVar16 + 1;
    UNLOCK();
  }
  if (*local_110 == '\0') {
    local_130 = local_1a0[0];
    if ((*(uint *)(local_1a0[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_1a0[0] + -0x10) = *(int *)(local_1a0[0] + -0x10) + 1;
      UNLOCK();
    }
    bVar6 = true;
  }
  else {
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      *puVar16 = *puVar16 + 1;
      UNLOCK();
    }
    local_168 = &local_1a8;
    local_1a8 = local_110;
    FUN_181232e20(&local_1a8,&DAT_182495df0,&DAT_182495df1);
    local_190 = local_1a8;
    if ((*(uint *)(local_1a8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_1a8 + -0x10) = *(int *)(local_1a8 + -0x10) + 1;
      UNLOCK();
    }
    puVar15 = (uint *)(local_1a8 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
    local_168 = &local_190;
    plVar13 = (longlong *)FUN_181232d30(&local_190,local_1a0);
    local_138 = *plVar13;
    if ((*(uint *)(local_138 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_138 + -0x10) = *(int *)(local_138 + -0x10) + 1;
      UNLOCK();
    }
    puVar15 = (uint *)(local_190 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
    bVar5 = true;
  }
  FUN_18122c880(&local_160,&local_188);
  if (bVar5) {
    bVar5 = false;
    puVar15 = (uint *)(local_138 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
  }
  if (bVar6) {
    bVar6 = false;
    puVar15 = (uint *)(local_130 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
  }
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  puVar16 = (uint *)(local_1a0[0] + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  puVar16 = (uint *)(local_188 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  uVar19 = uVar19 + 1;
  ppuVar20 = ppuVar20 + 1;
  bVar21 = uVar19 < local_178._4_4_;
  if ((int)local_178._4_4_ <= (int)uVar19) goto LAB_180499744;
  goto LAB_18049936f;
}



############ FUN_ 181214b70 size=345 ############

void FUN_181214b70(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  byte bVar2;
  char *pcVar3;
  byte bVar4;
  undefined1 *puVar5;
  byte bVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  char local_res8 [8];
  undefined1 *local_res10;
  byte *local_res18;
  char *local_res20;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  pcVar3 = (char *)*param_1;
  iVar11 = 0;
  if (*pcVar3 != '\0') {
    lVar7 = -1;
    do {
      lVar7 = lVar7 + 1;
    } while (pcVar3[lVar7] != '\0');
    local_res18 = (byte *)(pcVar3 + lVar7);
    iVar9 = iVar11;
    do {
      local_res18 = local_res18 + -1;
      if ((*local_res18 & 0xc0) != 0x80) break;
      iVar9 = iVar9 + 1;
    } while (iVar9 < 4);
    iVar9 = FUN_180492f10(&local_res18);
    if (iVar9 == 0x2f) goto LAB_181214c12;
  }
  local_res8[0] = '/';
  local_res8[1] = '\0';
  lVar7 = -1;
  do {
    lVar8 = lVar7;
    lVar7 = lVar8 + 1;
  } while (local_res8[lVar8 + 1] != '\0');
  local_res20 = local_res8 + lVar8 + 1;
  FUN_181232e20(param_1,local_res8,local_res20,param_4,uVar12);
LAB_181214c12:
  iVar9 = FUN_180492f10(param_2);
  if (iVar9 == 0x2f) {
    pbVar10 = (byte *)*param_2;
    do {
      bVar2 = *pbVar10;
      if (bVar2 == 0) {
        local_res10 = &DAT_1821dbf98;
        goto LAB_181214c7f;
      }
      pbVar10 = pbVar10 + 1;
      if ((char)bVar2 < '\0') {
        bVar6 = 0x40;
        bVar4 = bVar2 & 0x40;
        while ((bVar4 != 0 && (8 < bVar6))) {
          pbVar10 = pbVar10 + 1;
          bVar6 = bVar6 >> 1;
          bVar4 = bVar2 & bVar6;
        }
      }
      iVar11 = iVar11 + -1;
    } while (-1 < iVar11);
    FUN_18049c9e0(&local_res10);
LAB_181214c7f:
    puVar5 = local_res10;
    FUN_181232d30(param_1,&local_res10);
    _Memory = (uint *)(puVar5 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  else {
    FUN_181232d30(param_1,param_2);
  }
  return;
}



############ FUN_ 181214d80 size=289 ############

int FUN_181214d80(undefined8 *param_1)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  char cVar5;
  wint_t _C;
  int iVar6;
  uint *_Memory;
  byte *pbVar7;
  int iVar8;
  int iVar9;
  undefined1 *local_res8;
  
  iVar9 = 0;
  iVar8 = 0;
  while( true ) {
    _C = FUN_180493050(param_1,iVar8);
    iVar6 = iswalnum(_C);
    if ((((iVar6 == 0) && (iVar6 = FUN_180493050(param_1,iVar8), iVar6 != 0x2b)) &&
        (iVar6 = FUN_180493050(param_1,iVar8), iVar6 != 0x2d)) &&
       (iVar6 = FUN_180493050(param_1,iVar8), iVar6 != 0x2e)) break;
    iVar8 = iVar8 + 1;
  }
  if (iVar8 < 1) {
    local_res8 = (undefined1 *)*param_1;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar7 = (byte *)*param_1;
    iVar6 = iVar8;
    while (iVar6 = iVar6 + -1, -1 < iVar6) {
      bVar2 = *pbVar7;
      if (bVar2 == 0) {
        local_res8 = &DAT_1821dbf98;
        goto LAB_181214e41;
      }
      pbVar7 = pbVar7 + 1;
      if ((char)bVar2 < '\0') {
        bVar4 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar4))) {
          pbVar7 = pbVar7 + 1;
          bVar4 = bVar4 >> 1;
          bVar3 = bVar2 & bVar4;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
  }
LAB_181214e41:
  cVar5 = FUN_18124a6c0(&local_res8,&DAT_1821dba3c);
  if (cVar5 != '\0') {
    iVar9 = iVar8 + 1;
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar9;
}



############ FUN_ 181213190 size=783 ############

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

void FUN_181213190(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,char param_4)

{
  byte bVar1;
  char cVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  void *pvVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar12;
  void *_Memory;
  longlong local_res10;
  char local_res18;
  char local_res20;
  void *local_60;
  int local_58;
  uint local_54;
  longlong lVar11;
  
  pcVar4 = ",$_-.*!\'";
  if ((char)param_3 != '\0') {
    pcVar4 = "_-.~";
  }
  local_res20 = param_4;
  FUN_18049c4e0(&local_res10,pcVar4,param_3,param_4,0xfffffffffffffffe);
  lVar10 = -1;
  do {
    lVar11 = lVar10;
    lVar10 = lVar11 + 1;
  } while (*(char *)(local_res10 + lVar10) != '\0');
  FUN_1812342b0(&local_res10,lVar11 + 3);
  pvVar8 = (void *)((int)lVar10 + local_res10);
  memcpy(pvVar8,&DAT_1821dbd24,2);
  *(undefined1 *)((longlong)pvVar8 + 2) = 0;
  iVar3 = FUN_18049d240(*param_2);
  pvVar8 = (void *)*param_2;
  uVar9 = 0;
  local_60 = (void *)0x0;
  local_58 = 0;
  local_54 = 0;
  if (0 < iVar3) {
    FUN_18049bab0(&local_60,iVar3 / 2 + 8 + iVar3 & 0xfffffff8);
  }
  uVar5 = local_54;
  _Memory = local_60;
  memcpy((void *)((longlong)(int)local_54 + (longlong)local_60),pvVar8,(longlong)iVar3);
  uVar5 = uVar5 + iVar3;
  uVar12 = uVar9;
  local_54 = uVar5;
  if (0 < (int)uVar5) {
    do {
      uVar7 = (uint)uVar9;
      bVar1 = *(byte *)((longlong)_Memory + uVar12);
      if ((((0x19 < (byte)(bVar1 + 0x9f)) && (0x19 < (byte)(bVar1 + 0xbf))) &&
          (9 < (byte)(bVar1 - 0x30))) &&
         (iVar3 = FUN_18049bc80(local_res10,(int)(char)bVar1), iVar3 < 0)) {
        if (-1 < (int)uVar7) {
          if ((int)uVar7 < (int)uVar5) {
            *(undefined1 *)((longlong)_Memory + uVar12) = 0x25;
          }
          else {
            iVar3 = uVar5 + 1;
            uVar6 = uVar5;
            if (local_58 < iVar3) {
              if (iVar3 < 0) {
                iVar3 = uVar5 + 2;
              }
              FUN_18049bab0(&local_60,uVar5 + 9 + (iVar3 >> 1) & 0xfffffff8);
              _Memory = local_60;
              uVar6 = local_54;
            }
            uVar5 = uVar6 + 1;
            *(undefined1 *)((longlong)(int)uVar6 + (longlong)_Memory) = 0x25;
            local_54 = uVar5;
          }
        }
        uVar6 = uVar7 + 1;
        local_res18 = "0123456789ABCDEF"[bVar1 >> 4];
        iVar3 = uVar5 + 1;
        local_res20 = local_res18;
        if (local_58 < iVar3) {
          if (iVar3 < 0) {
            iVar3 = uVar5 + 2;
          }
          FUN_18049bab0(&local_60,uVar5 + 9 + (iVar3 >> 1) & 0xfffffff8);
          _Memory = local_60;
          uVar5 = local_54;
        }
        if (uVar6 < uVar5) {
          pcVar4 = (char *)((longlong)(int)uVar6 + (longlong)_Memory);
          memmove(pcVar4 + 1,pcVar4,(longlong)(int)(uVar5 - uVar6));
        }
        else {
          pcVar4 = (char *)((longlong)(int)uVar5 + (longlong)_Memory);
        }
        *pcVar4 = local_res20;
        local_54 = uVar5 + 1;
        uVar7 = uVar7 + 2;
        uVar12 = uVar12 + 2;
        cVar2 = "0123456789ABCDEF"[(int)(char)bVar1 & 0xf];
        iVar3 = uVar5 + 2;
        local_res20 = cVar2;
        if (local_58 < iVar3) {
          if (iVar3 < 0) {
            iVar3 = uVar5 + 3;
          }
          FUN_18049bab0(&local_60,uVar5 + 10 + (iVar3 >> 1) & 0xfffffff8);
          _Memory = local_60;
        }
        uVar5 = local_54;
        if (uVar7 < local_54) {
          pcVar4 = (char *)((longlong)(int)uVar7 + (longlong)_Memory);
          memmove(pcVar4 + 1,pcVar4,(longlong)(int)(local_54 - uVar7));
        }
        else {
          pcVar4 = (char *)((longlong)(int)local_54 + (longlong)_Memory);
        }
        *pcVar4 = cVar2;
        uVar5 = uVar5 + 1;
        local_54 = uVar5;
      }
      uVar9 = (ulonglong)(uVar7 + 1);
      uVar12 = uVar12 + 1;
    } while ((int)(uVar7 + 1) < (int)uVar5);
  }
  if (_Memory != (void *)0x0) {
    if ((int)uVar5 < 0) {
      FUN_18049c9e0(param_1,_Memory);
      goto LAB_181213496;
    }
    if (0 < (int)uVar5) {
      FUN_18124a8a0(param_1,_Memory,(longlong)(int)uVar5 + (longlong)_Memory);
      goto LAB_181213496;
    }
  }
  *param_1 = &DAT_1821dbf98;
LAB_181213496:
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181215140 size=1396 ############

/* WARNING: Removing unreachable block (ram,0x000181215593) */
/* WARNING: Removing unreachable block (ram,0x0001812155ab) */
/* WARNING: Removing unreachable block (ram,0x0001812155b9) */
/* WARNING: Removing unreachable block (ram,0x0001812155be) */

void FUN_181215140(longlong *param_1)

{
  byte bVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  bool bVar7;
  bool bVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  bool bVar16;
  bool bVar17;
  bool bVar18;
  byte bVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  uint uVar23;
  undefined1 **ppuVar24;
  undefined1 **ppuVar25;
  undefined8 uVar26;
  uint *puVar27;
  byte *pbVar28;
  int iVar29;
  int iVar30;
  undefined1 *local_res10;
  undefined1 *local_res18;
  undefined1 *local_res20;
  undefined1 *local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  undefined1 local_68 [8];
  longlong local_60 [4];
  
  local_60[1] = 0xfffffffffffffffe;
  bVar18 = false;
  bVar16 = false;
  bVar14 = false;
  bVar13 = false;
  bVar12 = false;
  bVar10 = false;
  bVar8 = false;
  bVar6 = false;
  bVar3 = false;
  bVar17 = false;
  bVar15 = false;
  bVar11 = false;
  bVar9 = false;
  bVar7 = false;
  bVar5 = false;
  bVar4 = false;
  iVar20 = FUN_18049bc80(*param_1,0x3f);
  if (-1 < iVar20) {
    do {
      iVar30 = iVar20 + 1;
      iVar21 = FUN_181232860(param_1,iVar30,0x26);
      iVar22 = FUN_181232860(param_1,iVar30,0x3d);
      if (iVar21 < 0) {
        if (iVar22 < 0) {
          local_res20 = &DAT_1821dbf98;
          ppuVar24 = &local_res20;
          bVar7 = true;
          bVar4 = bVar3;
          bVar5 = bVar6;
          bVar9 = bVar10;
          bVar11 = bVar12;
          bVar17 = bVar18;
        }
        else {
          if (iVar22 + 1 < 1) {
            local_res18 = (undefined1 *)*param_1;
            bVar16 = bVar15;
            if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
              UNLOCK();
            }
          }
          else {
            pbVar28 = (byte *)*param_1;
            for (iVar29 = iVar22; -1 < iVar29; iVar29 = iVar29 + -1) {
              bVar1 = *pbVar28;
              if (bVar1 == 0) {
                local_res18 = &DAT_1821dbf98;
                bVar4 = bVar3;
                bVar5 = bVar6;
                bVar7 = bVar8;
                bVar9 = bVar10;
                bVar11 = bVar12;
                bVar17 = bVar18;
                goto LAB_18121525c;
              }
              pbVar28 = pbVar28 + 1;
              if ((char)bVar1 < '\0') {
                bVar19 = 0x40;
                bVar2 = bVar1 & 0x40;
                while ((bVar2 != 0 && (8 < bVar19))) {
                  pbVar28 = pbVar28 + 1;
                  bVar19 = bVar19 >> 1;
                  bVar2 = bVar1 & bVar19;
                }
              }
            }
            FUN_18049c9e0(&local_res18);
            bVar4 = bVar3;
            bVar5 = bVar6;
            bVar7 = bVar8;
            bVar9 = bVar10;
            bVar11 = bVar12;
            bVar17 = bVar18;
          }
LAB_18121525c:
          ppuVar24 = (undefined1 **)FUN_1812134e0(&local_88,&local_res18);
          bVar14 = true;
          bVar13 = true;
        }
        if (iVar22 < 0) {
          if (iVar30 < 1) {
            local_res10 = (undefined1 *)*param_1;
            if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
              UNLOCK();
            }
          }
          else {
            pbVar28 = (byte *)*param_1;
            for (; -1 < iVar20; iVar20 = iVar20 + -1) {
              bVar1 = *pbVar28;
              if (bVar1 == 0) {
                local_res10 = &DAT_1821dbf98;
                goto LAB_18121530c;
              }
              pbVar28 = pbVar28 + 1;
              if ((char)bVar1 < '\0') {
                bVar19 = 0x40;
                bVar2 = bVar1 & 0x40;
                while ((bVar2 != 0 && (8 < bVar19))) {
                  pbVar28 = pbVar28 + 1;
                  bVar19 = bVar19 >> 1;
                  bVar2 = bVar1 & bVar19;
                }
              }
            }
            FUN_18049c9e0(&local_res10);
          }
LAB_18121530c:
          ppuVar25 = &local_res10;
          bVar11 = true;
        }
        else {
          ppuVar25 = (undefined1 **)FUN_1812490c0(param_1,&local_90,iVar30,iVar22);
          bVar9 = true;
        }
        uVar26 = FUN_1812134e0(&local_98,ppuVar25);
        FUN_181214af0(param_1,uVar26,ppuVar24);
        puVar27 = (uint *)(local_98 + -0x10);
        if ((*puVar27 & 0x30000000) == 0) {
          LOCK();
          uVar23 = *puVar27;
          *puVar27 = *puVar27 - 1;
          UNLOCK();
          if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar27);
          }
        }
        if (bVar9) {
          bVar9 = false;
          puVar27 = (uint *)(local_90 + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        if (bVar11) {
          bVar11 = false;
          puVar27 = (uint *)(local_res10 + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        if (bVar13) {
          bVar13 = false;
          puVar27 = (uint *)(local_88 + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        if (bVar14) {
          bVar14 = false;
          puVar27 = (uint *)(local_res18 + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        bVar3 = bVar4;
        bVar6 = bVar5;
        bVar8 = bVar7;
        bVar10 = bVar9;
        bVar12 = bVar11;
        bVar15 = bVar16;
        bVar18 = bVar17;
        if (bVar7) {
          puVar27 = (uint *)(local_res20 + -0x10);
          uVar23 = *puVar27;
          bVar7 = false;
LAB_181215605:
          bVar3 = bVar4;
          bVar6 = bVar5;
          bVar8 = bVar7;
          bVar10 = bVar9;
          bVar12 = bVar11;
          bVar16 = bVar15;
          bVar18 = bVar17;
          if ((uVar23 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
      }
      else if ((0 < iVar21) && (iVar22 < iVar21)) {
        if (iVar22 < 0) {
          local_a8 = &DAT_1821dbf98;
          ppuVar24 = &local_a8;
          uVar26 = FUN_1812490c0(param_1,&local_70,iVar30,iVar21);
          bVar5 = true;
          bVar15 = bVar16;
          bVar17 = true;
        }
        else {
          uVar26 = FUN_1812490c0(param_1,local_60,iVar22 + 1,iVar21);
          ppuVar24 = (undefined1 **)FUN_1812134e0(local_68,uVar26);
          bVar15 = true;
          uVar26 = FUN_1812490c0(param_1,&local_78,iVar30,iVar22);
          bVar3 = true;
          bVar5 = bVar6;
          bVar17 = bVar18;
        }
        uVar26 = FUN_1812134e0(&local_80,uVar26);
        FUN_181214af0(param_1,uVar26,ppuVar24);
        puVar27 = (uint *)(local_80 + -0x10);
        if ((*puVar27 & 0x30000000) == 0) {
          LOCK();
          uVar23 = *puVar27;
          *puVar27 = *puVar27 - 1;
          UNLOCK();
          if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar27);
          }
        }
        if (bVar3) {
          bVar3 = false;
          puVar27 = (uint *)(local_78 + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        if (bVar5) {
          bVar5 = false;
          puVar27 = (uint *)(local_70 + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        if (bVar15) {
          bVar15 = false;
          puVar27 = (uint *)(local_60[0] + -0x10);
          if ((*puVar27 & 0x30000000) == 0) {
            LOCK();
            uVar23 = *puVar27;
            *puVar27 = *puVar27 - 1;
            UNLOCK();
            if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar27);
            }
          }
        }
        bVar4 = bVar3;
        bVar6 = bVar5;
        bVar7 = bVar8;
        bVar9 = bVar10;
        bVar11 = bVar12;
        bVar16 = bVar15;
        bVar18 = bVar17;
        if (bVar17) {
          bVar17 = false;
          puVar27 = (uint *)(local_a8 + -0x10);
          uVar23 = *puVar27;
          goto LAB_181215605;
        }
      }
      iVar20 = iVar21;
    } while (-1 < iVar21);
    iVar20 = FUN_181249270(param_1,&DAT_1821dba8c);
    if (iVar20 < 0) {
      local_a0 = *param_1;
      if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_1812490c0(param_1,&local_a0,0,iVar20);
    }
    local_60[2] = *param_1;
    *param_1 = local_a0;
    puVar27 = (uint *)(local_60[2] + -0x10);
    if ((*puVar27 & 0x30000000) == 0) {
      LOCK();
      uVar23 = *puVar27;
      *puVar27 = *puVar27 - 1;
      UNLOCK();
      if (uVar23 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar27);
      }
    }
  }
  return;
}



############ FUN_ 1812134e0 size=767 ############

undefined8 * FUN_1812134e0(undefined8 *param_1,undefined8 param_2)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar6;
  char cVar7;
  uint uVar8;
  longlong lVar10;
  int iVar11;
  uint uVar12;
  void *_Memory;
  bool bVar13;
  void *local_res20;
  void *local_50;
  undefined8 local_48;
  uint uVar5;
  uint uVar9;
  
  FUN_1812316c0(param_2,&local_res20,0x2b,0x20,0xfffffffffffffffe);
  iVar2 = FUN_18049bc80(local_res20,0x25);
  if (iVar2 < 0) {
    *param_1 = local_res20;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar6 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar13 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar6;
      if (bVar13) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    return param_1;
  }
  iVar3 = FUN_18049d240(local_res20);
  local_50 = (void *)0x0;
  local_48 = 0;
  iVar2 = 0;
  iVar11 = 0;
  if (0 < iVar3) {
    FUN_18049bab0(&local_50,iVar3 / 2 + 8 + iVar3 & 0xfffffff8);
    iVar2 = local_48._4_4_;
    iVar11 = (int)local_48;
  }
  _Memory = local_50;
  memcpy((void *)((longlong)iVar2 + (longlong)local_50),local_res20,(longlong)iVar3);
  uVar6 = iVar2 + iVar3;
  local_48._4_4_ = uVar6;
  if (0 < (int)uVar6) {
    lVar10 = 0;
    uVar12 = 1;
    do {
      if (*(char *)(lVar10 + (longlong)_Memory) == '%') {
        if (uVar12 < uVar6) {
          bVar1 = *(byte *)(lVar10 + 1 + (longlong)_Memory);
        }
        else {
          bVar1 = 0;
        }
        uVar9 = (uint)bVar1;
        uVar8 = uVar9 - 0x30;
        if (9 < uVar8) {
          if (uVar9 - 0x61 < 6) {
            uVar8 = uVar9 - 0x57;
          }
          else if (uVar9 - 0x41 < 6) {
            uVar8 = uVar9 - 0x37;
          }
          else {
            uVar8 = 0xffffffff;
          }
        }
        uVar9 = uVar12 + 2;
        if (uVar12 + 1 < uVar6) {
          bVar1 = *(byte *)(lVar10 + 2 + (longlong)_Memory);
        }
        else {
          bVar1 = 0;
        }
        uVar5 = (uint)bVar1;
        uVar4 = uVar5 - 0x30;
        if (9 < uVar4) {
          if (uVar5 - 0x61 < 6) {
            uVar4 = uVar5 - 0x57;
          }
          else if (uVar5 - 0x41 < 6) {
            uVar4 = uVar5 - 0x37;
          }
          else {
            uVar4 = 0xffffffff;
          }
        }
        if ((-1 < (int)uVar8) && (-1 < (int)uVar4)) {
          cVar7 = (char)uVar8 * '\x10' + (char)uVar4;
          if (-1 < lVar10) {
            if ((int)(uVar12 - 1) < (int)uVar6) {
              *(char *)(lVar10 + (longlong)_Memory) = cVar7;
            }
            else {
              uVar8 = uVar6;
              if (iVar11 < (int)(uVar6 + 1)) {
                FUN_18049bab0(&local_50);
                _Memory = local_50;
                uVar8 = local_48._4_4_;
                iVar11 = (int)local_48;
              }
              uVar6 = uVar8 + 1;
              *(char *)((longlong)(int)uVar8 + (longlong)_Memory) = cVar7;
              local_48._4_4_ = uVar6;
            }
          }
          if ((int)uVar9 < 0) {
            uVar9 = 0;
          }
          else if ((int)uVar6 < (int)uVar9) {
            uVar9 = uVar6;
          }
          if ((int)uVar12 < 0) {
            uVar8 = 0;
          }
          else {
            uVar8 = uVar12;
            if ((int)uVar6 < (int)uVar12) {
              uVar8 = uVar6;
            }
          }
          iVar2 = uVar9 - uVar8;
          if (0 < iVar2) {
            memmove((void *)((longlong)(int)uVar8 + (longlong)_Memory),
                    (void *)((longlong)iVar2 + (longlong)(int)uVar8 + (longlong)_Memory),
                    (longlong)(int)((uVar6 - uVar8) - iVar2));
            local_48._4_4_ = uVar6 - iVar2;
            iVar2 = 0;
            if (0 < (int)(local_48._4_4_ * 2)) {
              iVar2 = local_48._4_4_ * 2;
            }
            uVar6 = local_48._4_4_;
            if (iVar2 < iVar11) {
              uVar9 = local_48._4_4_;
              if ((int)local_48._4_4_ < 0x40) {
                uVar9 = 0x40;
              }
              if ((int)uVar9 < iVar11) {
                FUN_18049bab0(&local_50);
                _Memory = local_50;
                uVar6 = local_48._4_4_;
                iVar11 = (int)local_48;
              }
            }
          }
        }
      }
      lVar10 = lVar10 + 1;
      bVar13 = (int)uVar12 < (int)uVar6;
      uVar12 = uVar12 + 1;
    } while (bVar13);
  }
  if (_Memory != (void *)0x0) {
    if ((int)uVar6 < 0) {
      FUN_18049c9e0(param_1,_Memory);
      goto LAB_1812137b6;
    }
    if (0 < (int)uVar6) {
      FUN_18124a8a0(param_1,_Memory,(longlong)(int)uVar6 + (longlong)_Memory);
      goto LAB_1812137b6;
    }
  }
  *param_1 = &DAT_1821dbf98;
LAB_1812137b6:
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181240ff0 size=434 ############

ulonglong FUN_181240ff0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,
                       undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  undefined8 uVar5;
  byte *pbVar6;
  uint *puVar7;
  byte *pbVar8;
  int iVar9;
  byte *local_res10;
  longlong local_res18 [2];
  
  if (*(char *)*param_2 == '\0') {
    return (ulonglong)*param_2 & 0xffffffffffffff00;
  }
  iVar3 = FUN_1812327b0(param_1,0x5c,param_3,param_4,0xfffffffffffffffe);
  if (iVar3 < 1) {
    if (iVar3 == 0) {
      FUN_18049c9e0(&local_res10,&DAT_1821db634);
    }
    else {
      local_res10 = (byte *)*param_1;
      if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
        UNLOCK();
      }
    }
  }
  else {
    FUN_1812490c0(param_1,&local_res10,0,iVar3);
  }
  pbVar8 = local_res10;
  if (((byte *)*param_2 == local_res10) || (iVar3 = FUN_18049bb30(*param_2), iVar3 == 0)) {
    bVar2 = 1;
  }
  else {
    pbVar4 = (byte *)*param_2;
    iVar3 = 0;
    iVar9 = 0;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar4;
        pbVar4 = pbVar4 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar4 & 0xc0) != 0x80) goto LAB_1812410e7;
        do {
          pbVar4 = pbVar4 + 1;
        } while ((*pbVar4 & 0xc0) == 0x80);
        iVar9 = iVar9 + 1;
      }
      pbVar6 = pbVar8;
      if (bVar2 == 0) break;
LAB_1812410e7:
      iVar9 = iVar9 + 1;
    }
    while( true ) {
      while( true ) {
        pbVar4 = pbVar6 + 1;
        if (-1 < (char)*pbVar6) break;
        if ((*pbVar4 & 0xc0) != 0x80) goto LAB_181241118;
        do {
          pbVar4 = pbVar4 + 1;
        } while ((*pbVar4 & 0xc0) == 0x80);
        iVar3 = iVar3 + 1;
        pbVar6 = pbVar4;
      }
      if (*pbVar6 == 0) break;
LAB_181241118:
      iVar3 = iVar3 + 1;
      pbVar6 = pbVar4;
    }
    if (iVar9 < iVar3) {
      uVar5 = FUN_181241230(param_1,local_res18);
      bVar2 = FUN_181240ff0(uVar5,param_2);
      puVar7 = (uint *)(local_res18[0] + -0x10);
      pbVar8 = local_res10;
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
    else {
      bVar2 = 0;
    }
  }
  puVar7 = (uint *)(pbVar8 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return (ulonglong)bVar2;
}



############ FUN_ 18123df70 size=710 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18123df70(undefined4 *param_1,longlong *param_2,undefined4 param_3)

{
  byte bVar1;
  char cVar2;
  longlong lVar3;
  byte bVar4;
  byte bVar5;
  int iVar6;
  int iVar7;
  ulonglong *puVar8;
  undefined4 *puVar9;
  longlong *plVar10;
  undefined8 uVar11;
  undefined8 uVar12;
  uint uVar13;
  ulonglong uVar14;
  uint *puVar15;
  byte *pbVar16;
  char *_Src;
  undefined1 auStack_d8 [32];
  undefined4 local_b8;
  undefined4 *local_a8;
  undefined1 *local_a0;
  longlong *local_98;
  longlong local_90;
  undefined1 local_88 [8];
  undefined1 local_80 [8];
  longlong local_78 [2];
  undefined1 *local_68;
  char local_42 [2];
  undefined8 local_40;
  
  local_78[1] = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_98 = (longlong *)CONCAT44(local_98._4_4_,param_3);
  local_68 = local_80;
  local_a8 = param_1;
  iVar6 = FUN_1812327b0(param_2,0x2e);
  iVar7 = FUN_1812327b0(param_2,0x5c);
  if (iVar7 < iVar6) {
    if (iVar6 < 1) {
      local_a0 = (undefined1 *)*param_2;
      if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      pbVar16 = (byte *)*param_2;
      while (iVar6 = iVar6 + -1, -1 < iVar6) {
        bVar1 = *pbVar16;
        if (bVar1 == 0) goto LAB_18123e05d;
        pbVar16 = pbVar16 + 1;
        if ((char)bVar1 < '\0') {
          bVar5 = 0x40;
          bVar4 = bVar1 & 0x40;
          while ((bVar4 != 0 && (8 < bVar5))) {
            pbVar16 = pbVar16 + 1;
            bVar5 = bVar5 >> 1;
            bVar4 = bVar1 & bVar5;
          }
        }
      }
      FUN_18049c9e0(&local_a0);
    }
  }
  else {
LAB_18123e05d:
    local_a0 = &DAT_1821dbf98;
  }
  puVar8 = (ulonglong *)FUN_18123aca0();
  uVar14 = *puVar8 * 0x5deece66d + 0xb & 0xffffffffffff;
  *puVar8 = uVar14;
  uVar14 = (longlong)uVar14 >> 0x10;
  _Src = local_42 + 1;
  local_42[1] = 0;
  do {
    _Src = _Src + -1;
    cVar2 = "0123456789abcdef"[(uint)uVar14 & 0xf];
    *_Src = cVar2;
    uVar13 = (uint)uVar14 >> 4;
    uVar14 = (ulonglong)uVar13;
  } while (uVar13 != 0);
  if (cVar2 == '\0') {
    local_a8 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    uVar14 = (longlong)&local_40 + -(longlong)_Src + 3 & 0xfffffffffffffffc;
    puVar9 = (undefined4 *)thunk_FUN_1811316e0(uVar14 + 0x17);
    LOCK();
    *puVar9 = 0;
    UNLOCK();
    *(ulonglong *)(puVar9 + 2) = uVar14;
    puVar9 = puVar9 + 4;
    memcpy(puVar9,_Src,(size_t)(local_42 + -(longlong)_Src + 1));
    *(char *)((longlong)puVar9 + (longlong)(local_42 + -(longlong)_Src + 1)) = '\0';
    param_3 = local_98._0_4_;
    local_a8 = puVar9;
  }
  plVar10 = (longlong *)FUN_1812411b0(param_2,local_88);
  local_98 = plVar10;
  FUN_181232e20(plVar10,&DAT_1821d9f74,&DAT_1821d9f79);
  local_90 = *plVar10;
  if ((*(uint *)(local_90 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_90 + -0x10) = *(int *)(local_90 + -0x10) + 1;
    UNLOCK();
  }
  puVar15 = (uint *)(*plVar10 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  uVar11 = FUN_181232aa0(local_80,&local_90,&local_a8);
  uVar12 = FUN_181241230(param_2,local_78);
  local_b8 = param_3;
  FUN_18123e260(param_1,uVar12,uVar11,&local_a0);
  puVar15 = (uint *)(local_78[0] + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  puVar15 = local_a8 + -4;
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  puVar15 = (uint *)(local_a0 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar13 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  lVar3 = *param_2;
  *(longlong *)(param_1 + 2) = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
}



############ FUN_ 1804ecd50 size=282 ############

undefined8 * FUN_1804ecd50(undefined8 *param_1,longlong *param_2)

{
  uint *_Memory;
  byte bVar1;
  byte bVar2;
  byte bVar3;
  int iVar4;
  uint uVar5;
  undefined8 *puVar6;
  byte *pbVar7;
  byte *local_res10;
  undefined8 local_res18;
  
  for (puVar6 = *(undefined8 **)(*param_2 + 0x10); puVar6 != (undefined8 *)0x0;
      puVar6 = (undefined8 *)*puVar6) {
    local_res18 = puVar6[1];
    iVar4 = FUN_18048cbc0(local_res18,"xlink:href");
    if (iVar4 == 0) {
      puVar6 = puVar6 + 2;
      goto LAB_1804ecdaa;
    }
  }
  puVar6 = (undefined8 *)FUN_181220d40();
LAB_1804ecdaa:
  local_res10 = (byte *)*puVar6;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  iVar4 = FUN_180492f10(&local_res10);
  if (iVar4 == 0x23) {
    iVar4 = 0;
    pbVar7 = local_res10;
    do {
      bVar1 = *pbVar7;
      if (bVar1 == 0) {
        *param_1 = &DAT_1821dbf98;
        goto LAB_1804ece2d;
      }
      pbVar7 = pbVar7 + 1;
      if ((char)bVar1 < '\0') {
        bVar3 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar3))) {
          pbVar7 = pbVar7 + 1;
          bVar3 = bVar3 >> 1;
          bVar2 = bVar1 & bVar3;
        }
      }
      iVar4 = iVar4 + -1;
    } while (-1 < iVar4);
    FUN_18049c9e0(param_1);
LAB_1804ece2d:
    uVar5 = *_Memory;
  }
  else {
    *param_1 = &DAT_1821dbf98;
    uVar5 = *_Memory;
  }
  if ((uVar5 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1804ece70 size=455 ############

undefined8 *
FUN_1804ece70(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  char cVar4;
  byte bVar5;
  int iVar6;
  uint *puVar7;
  byte *pbVar8;
  int iVar9;
  undefined1 *local_res18;
  undefined1 *local_res20;
  
  cVar4 = FUN_18124a650(param_2,&DAT_18249efe0,param_3,param_4,0xfffffffffffffffe);
  if (cVar4 == '\0') {
    *param_1 = &DAT_1821dbf98;
    return param_1;
  }
  pbVar8 = &DAT_18249f000;
  iVar6 = FUN_181249270(param_2,&DAT_18249f000);
  if (iVar6 < 0) {
LAB_1804ecec0:
    local_res18 = &DAT_1821dbf98;
  }
  else {
    iVar9 = 0;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar8;
        pbVar8 = pbVar8 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar8 & 0xc0) != 0x80) goto LAB_1804ecf05;
        do {
          pbVar8 = pbVar8 + 1;
        } while ((*pbVar8 & 0xc0) == 0x80);
        iVar9 = iVar9 + 1;
      }
      if (bVar2 == 0) break;
LAB_1804ecf05:
      iVar9 = iVar9 + 1;
    }
    iVar9 = iVar9 + iVar6;
    if (iVar9 < 1) {
      local_res18 = (undefined1 *)*param_2;
      if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      pbVar8 = (byte *)*param_2;
      while (iVar9 = iVar9 + -1, -1 < iVar9) {
        bVar2 = *pbVar8;
        if (bVar2 == 0) goto LAB_1804ecec0;
        pbVar8 = pbVar8 + 1;
        if ((char)bVar2 < '\0') {
          bVar5 = 0x40;
          bVar3 = bVar2 & 0x40;
          while ((bVar3 != 0 && (8 < bVar5))) {
            pbVar8 = pbVar8 + 1;
            bVar5 = bVar5 >> 1;
            bVar3 = bVar2 & bVar5;
          }
        }
      }
      FUN_18049c9e0(&local_res18);
    }
  }
  iVar6 = FUN_181232460(&local_res18,&DAT_182496890);
  if (iVar6 < 0) {
    local_res20 = local_res18;
    if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    FUN_1812490c0(&local_res18,&local_res20,0,iVar6);
  }
  FUN_181248e40(&local_res20,param_1);
  puVar7 = (uint *)(local_res20 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(local_res18 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return param_1;
}



############ FUN_ 1804f26a0 size=2518 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804f26a0(float *param_1,longlong *param_2)

{
  float fVar1;
  uint uVar2;
  byte bVar3;
  byte bVar4;
  double dVar5;
  void *pvVar6;
  longlong *plVar7;
  float *pfVar8;
  char cVar9;
  int iVar10;
  undefined1 **ppuVar11;
  byte bVar12;
  byte *pbVar13;
  uint *puVar14;
  char *pcVar15;
  uint uVar16;
  byte *pbVar17;
  uint uVar18;
  float *pfVar19;
  int iVar20;
  undefined1 **ppuVar21;
  ulonglong uVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  undefined1 auStack_228 [32];
  float local_208;
  float fStack_204;
  float fStack_200;
  float fStack_1fc;
  undefined8 local_1f8;
  byte *local_1f0;
  byte *local_1e8;
  undefined1 **local_1e0;
  undefined8 local_1d8;
  byte *local_1d0;
  byte *local_1c8;
  undefined1 *local_1c0;
  longlong *local_1b8;
  float *local_1b0;
  undefined8 local_1a8;
  float fStack_1a0;
  undefined4 uStack_19c;
  undefined8 local_198;
  float local_190;
  undefined8 uStack_18c;
  undefined4 uStack_184;
  ulonglong local_180;
  undefined8 local_178;
  undefined4 uStack_170;
  float fStack_16c;
  ulonglong local_168;
  float local_160;
  float fStack_15c;
  float fStack_158;
  float fStack_154;
  undefined8 local_150;
  float local_148;
  float fStack_144;
  float fStack_140;
  float fStack_13c;
  undefined8 local_138;
  undefined4 local_130;
  float fStack_12c;
  undefined8 uStack_128;
  undefined8 uStack_120;
  undefined8 local_118;
  longlong *local_110;
  byte *local_108;
  float local_100 [4];
  float local_f0;
  undefined4 local_ec;
  ulonglong local_e8;
  
  local_118 = 0xfffffffffffffffe;
  local_e8 = DAT_182615970 ^ (ulonglong)auStack_228;
  param_1[0] = 1.0;
  param_1[1] = 0.0;
  uVar18 = 0;
  param_1[2] = 0.0;
  param_1[3] = 0.0;
  param_1[4] = 1.0;
  uVar2 = DAT_1824c4f30;
  fVar23 = DAT_1824c3ea4;
  fVar1 = DAT_1824c3c78;
  param_1[5] = 0.0;
  pbVar17 = (byte *)*param_2;
  local_1b8 = param_2;
  local_1b0 = param_1;
  local_110 = param_2;
  if (*pbVar17 == 0) {
    puVar14 = (uint *)(*param_2 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
  }
  local_1e0 = (undefined1 **)0x0;
  local_1d8 = 0;
  iVar10 = FUN_181249270(param_2,&DAT_1824968a8);
  if (-1 < iVar10) {
    pbVar13 = &DAT_1824968a8;
    uVar16 = uVar18;
LAB_1804f27c0:
    do {
      bVar3 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar13 & 0xc0) == 0x80) {
          do {
            pbVar13 = pbVar13 + 1;
          } while ((*pbVar13 & 0xc0) == 0x80);
          uVar16 = uVar16 + 1;
          goto LAB_1804f27c0;
        }
      }
      else if (bVar3 == 0) goto LAB_1804f27ed;
      uVar16 = uVar16 + 1;
    } while( true );
  }
LAB_1804f27a4:
  local_1f0 = &DAT_1821dbf98;
  goto LAB_1804f2850;
LAB_1804f27ed:
  iVar10 = uVar16 + iVar10;
  if (iVar10 < 1) {
    local_1f0 = pbVar17;
    if ((*(uint *)(pbVar17 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar17 + -0x10) = *(int *)(pbVar17 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    while (iVar10 = iVar10 + -1, -1 < iVar10) {
      bVar3 = *pbVar17;
      if (bVar3 == 0) goto LAB_1804f27a4;
      pbVar17 = pbVar17 + 1;
      if ((char)bVar3 < '\0') {
        bVar12 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar12))) {
          pbVar17 = pbVar17 + 1;
          bVar12 = bVar12 >> 1;
          bVar4 = bVar3 & bVar12;
        }
      }
    }
    FUN_18049c9e0(&local_1f0,pbVar17);
  }
LAB_1804f2850:
  iVar10 = FUN_181249270(&local_1f0,&DAT_182496890);
  if (iVar10 < 0) {
    local_1c8 = local_1f0;
    if ((*(uint *)(local_1f0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_1f0 + -0x10) = *(int *)(local_1f0 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    FUN_1812490c0(&local_1f0,&local_1c8,0,iVar10);
  }
  pbVar17 = local_1c8;
  FUN_18122d110(&local_1e0,local_1c8,&DAT_182496884,&DAT_18249336a);
  puVar14 = (uint *)(pbVar17 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar16 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar14 = (uint *)(local_1f0 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar16 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  FUN_18122d5d0(&local_1e0);
  pvVar6 = ThreadLocalStoragePointer;
  pfVar19 = local_100;
  uVar16 = local_1d8._4_4_;
  uVar22 = (ulonglong)_tls_index;
  ppuVar21 = local_1e0;
  do {
    ppuVar11 = ppuVar21;
    if (uVar16 <= uVar18) {
      if ((*(int *)(*(longlong *)((longlong)pvVar6 + uVar22 * 8) + 0xc) < DAT_18267af70) &&
         (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
        DAT_18267af68 = &DAT_1821dbf98;
        atexit(FUN_181a4a7b0);
        _Init_thread_footer(&DAT_18267af70);
      }
      ppuVar11 = &DAT_18267af68;
    }
    local_1c0 = *ppuVar11;
    dVar5 = (double)FUN_18049bd80(&local_1c0);
    pfVar8 = local_1b0;
    plVar7 = local_1b8;
    *pfVar19 = (float)dVar5;
    uVar18 = uVar18 + 1;
    ppuVar21 = ppuVar21 + 1;
    pfVar19 = pfVar19 + 1;
  } while ((int)uVar18 < 6);
  local_208 = _DAT_1824c4780;
  fStack_204 = _UNK_1824c4784;
  fStack_200 = _UNK_1824c4788;
  fStack_1fc = _UNK_1824c478c;
  local_1f8 = 0x3f800000;
  pcVar15 = "matrix";
  iVar20 = 0;
  iVar10 = iVar20;
LAB_1804f29c0:
  do {
    bVar3 = *pcVar15;
    pcVar15 = pcVar15 + 1;
    if ((char)bVar3 < '\0') {
      if ((*pcVar15 & 0xc0U) == 0x80) {
        do {
          pcVar15 = pcVar15 + 1;
        } while ((*pcVar15 & 0xc0U) == 0x80);
        iVar10 = iVar10 + 1;
        goto LAB_1804f29c0;
      }
    }
    else if (bVar3 == 0) break;
    iVar10 = iVar10 + 1;
  } while( true );
  iVar10 = FUN_18049db60(*local_1b8,"matrix",iVar10);
  if (iVar10 != 0) {
    pcVar15 = "translate";
    iVar10 = iVar20;
LAB_1804f2a54:
    do {
      bVar3 = *pcVar15;
      pcVar15 = pcVar15 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pcVar15 & 0xc0U) == 0x80) {
          do {
            pcVar15 = pcVar15 + 1;
          } while ((*pcVar15 & 0xc0U) == 0x80);
          iVar10 = iVar10 + 1;
          goto LAB_1804f2a54;
        }
      }
      else if (bVar3 == 0) goto LAB_1804f2a8a;
      iVar10 = iVar10 + 1;
    } while( true );
  }
  local_208 = local_100[0];
  fStack_204 = local_100[2];
  fStack_200 = local_f0;
  fStack_1fc = local_100[1];
  local_1f8 = CONCAT44(local_ec,local_100[3]);
  goto LAB_1804f2d42;
LAB_1804f2a8a:
  iVar10 = FUN_18049db60(*plVar7,"translate",iVar10);
  if (iVar10 != 0) {
    pcVar15 = "scale";
    iVar10 = iVar20;
LAB_1804f2ae4:
    do {
      bVar3 = *pcVar15;
      pcVar15 = pcVar15 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pcVar15 & 0xc0U) == 0x80) {
          do {
            pcVar15 = pcVar15 + 1;
          } while ((*pcVar15 & 0xc0U) == 0x80);
          iVar10 = iVar10 + 1;
          goto LAB_1804f2ae4;
        }
      }
      else if (bVar3 == 0) goto LAB_1804f2b1a;
      iVar10 = iVar10 + 1;
    } while( true );
  }
  fStack_1fc = 0.0;
  local_1a8 = 0x3f800000;
  fStack_1a0 = local_100[0];
  uStack_19c = 0;
  local_198 = CONCAT44(local_100[1],fVar23);
LAB_1804f2d37:
  fStack_204 = 0.0;
  local_208 = 1.0;
  fStack_200 = local_100[0];
  goto LAB_1804f2d3c;
LAB_1804f2b1a:
  iVar10 = FUN_18049db60(*plVar7,"scale",iVar10);
  if (iVar10 != 0) {
    pcVar15 = "rotate";
    iVar10 = iVar20;
LAB_1804f2b75:
    do {
      bVar3 = *pcVar15;
      pcVar15 = pcVar15 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pcVar15 & 0xc0U) == 0x80) {
          do {
            pcVar15 = pcVar15 + 1;
          } while ((*pcVar15 & 0xc0U) == 0x80);
          iVar10 = iVar10 + 1;
          goto LAB_1804f2b75;
        }
      }
      else if (bVar3 == 0) goto LAB_1804f2baa;
      iVar10 = iVar10 + 1;
    } while( true );
  }
  local_190 = local_100[0];
  uStack_18c = 0;
  uStack_184 = 0;
  local_208 = local_100[0];
  fStack_204 = 0.0;
  fStack_200 = 0.0;
  fStack_1fc = 0.0;
  fVar23 = local_100[1 < (int)uVar16];
  local_100[1] = 0.0;
  local_180 = (ulonglong)(uint)fVar23;
  goto LAB_1804f2d3c;
LAB_1804f2c8d:
  iVar10 = FUN_18049db60(*plVar7,&DAT_18249f23c,iVar10);
  if (iVar10 == 0) {
    fStack_204 = tanf(local_100[0] * fVar1);
    uStack_120 = _UNK_1824c47e8;
    uStack_128._0_4_ = (float)_DAT_1824c47e0;
    uStack_128._4_4_ = (float)((ulonglong)_DAT_1824c47e0 >> 0x20);
    local_130 = 0x3f800000;
    local_208 = 1.0;
    fStack_200 = (float)uStack_128;
    fStack_1fc = uStack_128._4_4_;
    local_1f8 = _UNK_1824c47e8;
    fStack_12c = fStack_204;
    uStack_128 = _DAT_1824c47e0;
  }
  else {
    cVar9 = FUN_18124a650(plVar7,"skewY");
    if (cVar9 != '\0') {
      fStack_1fc = tanf(local_100[0] * fVar1);
      local_100[0] = 0.0;
      local_178 = 0x3f800000;
      uStack_170 = 0;
      local_100[1] = 0.0;
      local_168 = (ulonglong)(uint)fVar23;
      fStack_16c = fStack_1fc;
      goto LAB_1804f2d37;
    }
  }
  goto LAB_1804f2d42;
LAB_1804f2e9d:
  iVar10 = iVar10 + iVar20;
  if (iVar10 < 1) {
    local_1e8 = (byte *)*plVar7;
    if ((*(uint *)(local_1e8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_1e8 + -0x10) = *(int *)(local_1e8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar17 = (byte *)*plVar7;
    while (iVar10 = iVar10 + -1, -1 < iVar10) {
      bVar3 = *pbVar17;
      if (bVar3 == 0) goto LAB_1804f2e4d;
      pbVar17 = pbVar17 + 1;
      if ((char)bVar3 < '\0') {
        bVar12 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar12))) {
          pbVar17 = pbVar17 + 1;
          bVar12 = bVar12 >> 1;
          bVar4 = bVar3 & bVar12;
        }
      }
    }
    FUN_18049c9e0(&local_1e8);
  }
  goto LAB_1804f2f29;
LAB_1804f2baa:
  iVar10 = FUN_18049db60(*plVar7,"rotate",iVar10);
  if (iVar10 != 0) {
    pbVar17 = &DAT_18249f23c;
    iVar10 = iVar20;
LAB_1804f2c60:
    do {
      bVar3 = *pbVar17;
      pbVar17 = pbVar17 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar17 & 0xc0) == 0x80) {
          do {
            pbVar17 = pbVar17 + 1;
          } while ((*pbVar17 & 0xc0) == 0x80);
          iVar10 = iVar10 + 1;
          goto LAB_1804f2c60;
        }
      }
      else if (bVar3 == 0) goto LAB_1804f2c8d;
      iVar10 = iVar10 + 1;
    } while( true );
  }
  fVar23 = cosf(local_100[0] * fVar1);
  fStack_1fc = sinf(local_100[0] * fVar1);
  fStack_204 = (float)((uint)fStack_1fc ^ uVar2);
  fStack_200 = (fStack_1fc * local_100[2] - fVar23 * local_100[1]) + local_100[1];
  local_100[1] = local_100[2] - (fVar23 * local_100[2] + fStack_1fc * local_100[1]);
  local_150 = CONCAT44(local_100[1],fVar23);
  local_208 = fVar23;
  local_160 = fVar23;
  fStack_15c = fStack_204;
  fStack_158 = fStack_200;
  fStack_154 = fStack_1fc;
LAB_1804f2d3c:
  local_1f8 = CONCAT44(local_100[1],fVar23);
LAB_1804f2d42:
  fVar23 = pfVar8[4];
  fVar1 = pfVar8[3];
  fVar25 = local_1f8._4_4_ * fVar23 + fStack_200 * fVar1 + pfVar8[5];
  fVar24 = fStack_204 * fVar1 + (float)local_1f8 * fVar23;
  fStack_13c = local_208 * fVar1 + fStack_1fc * fVar23;
  fVar23 = pfVar8[1];
  fVar1 = *pfVar8;
  fStack_140 = local_1f8._4_4_ * fVar23 + fStack_200 * fVar1 + pfVar8[2];
  fStack_144 = fStack_204 * fVar1 + (float)local_1f8 * fVar23;
  local_148 = local_208 * fVar1 + fStack_1fc * fVar23;
  *pfVar8 = local_148;
  pfVar8[1] = fStack_144;
  pfVar8[2] = fStack_140;
  pfVar8[3] = fStack_13c;
  local_138 = CONCAT44(fVar25,fVar24);
  *(ulonglong *)(pfVar8 + 4) = CONCAT44(fVar25,fVar24);
  iVar10 = FUN_181249270(plVar7,&DAT_182496890);
  if (-1 < iVar10) {
    pbVar17 = &DAT_182496890;
LAB_1804f2e70:
    do {
      bVar3 = *pbVar17;
      pbVar17 = pbVar17 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar17 & 0xc0) == 0x80) {
          do {
            pbVar17 = pbVar17 + 1;
          } while ((*pbVar17 & 0xc0) == 0x80);
          iVar20 = iVar20 + 1;
          goto LAB_1804f2e70;
        }
      }
      else if (bVar3 == 0) goto LAB_1804f2e9d;
      iVar20 = iVar20 + 1;
    } while( true );
  }
LAB_1804f2e4d:
  local_1e8 = &DAT_1821dbf98;
LAB_1804f2f29:
  pbVar17 = local_1e8;
  if (*local_1e8 != 0) {
    while ((bVar3 = *pbVar17, bVar3 == 0x20 || ((byte)(bVar3 - 9) < 5))) {
      pbVar17 = pbVar17 + 1;
      if ((char)bVar3 < '\0') {
        bVar12 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar12))) {
          pbVar17 = pbVar17 + 1;
          bVar12 = bVar12 >> 1;
          bVar4 = bVar3 & bVar12;
        }
      }
    }
    if (pbVar17 != local_1e8) {
      FUN_18049c9e0(&local_1d0);
      goto LAB_1804f2f99;
    }
  }
  local_1d0 = local_1e8;
  if ((*(uint *)(local_1e8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_1e8 + -0x10) = *(int *)(local_1e8 + -0x10) + 1;
    UNLOCK();
  }
LAB_1804f2f99:
  local_108 = (byte *)*plVar7;
  *plVar7 = (longlong)local_1d0;
  puVar14 = (uint *)(local_108 + -0x10);
  local_1d0 = local_108;
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar14 = (uint *)(local_1e8 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  FUN_180488c50(&local_1e0);
                    /* WARNING: Subroutine does not return */
  free(local_1e0);
}



############ FUN_ 18132bdc0 size=1284 ############

/* WARNING: Removing unreachable block (ram,0x00018132c231) */
/* WARNING: Removing unreachable block (ram,0x00018132c250) */
/* WARNING: Removing unreachable block (ram,0x00018132c25b) */
/* WARNING: Removing unreachable block (ram,0x00018132c255) */
/* WARNING: Removing unreachable block (ram,0x00018132c25d) */
/* WARNING: Removing unreachable block (ram,0x00018132c262) */
/* WARNING: Removing unreachable block (ram,0x00018132c266) */
/* WARNING: Removing unreachable block (ram,0x00018132c273) */
/* WARNING: Removing unreachable block (ram,0x00018132c293) */
/* WARNING: Removing unreachable block (ram,0x00018132c298) */
/* WARNING: Removing unreachable block (ram,0x00018132c2a5) */
/* WARNING: Removing unreachable block (ram,0x00018132c27a) */

void FUN_18132bdc0(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  char *pcVar4;
  bool bVar5;
  bool bVar6;
  int iVar7;
  int iVar8;
  DWORD DVar9;
  undefined8 *puVar10;
  longlong lVar11;
  undefined8 uVar12;
  longlong *plVar13;
  uint *puVar14;
  int iVar15;
  char *local_res20;
  uint in_stack_ffffffffffffff28;
  char *local_c8;
  void *local_c0;
  undefined8 local_b8;
  char *local_b0;
  char *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  char *local_88;
  char *local_80;
  longlong local_78;
  longlong local_70;
  undefined8 local_68;
  char *local_60;
  char *local_58;
  undefined1 local_50 [16];
  
  local_68 = 0xfffffffffffffffe;
  iVar15 = 0;
  plVar2 = param_1 + 0x1f;
  if ((*plVar2 != *param_2) && (iVar7 = FUN_18049bb30(*plVar2), iVar7 != 0)) {
    (**(code **)(*(longlong *)param_1[0x24] + 0x20))();
    pcVar4 = (char *)*param_2;
    if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar4 + -0x10) = *(int *)(pcVar4 + -0x10) + 1;
      UNLOCK();
    }
    local_res20 = pcVar4;
    if (*pcVar4 == '\0') {
      FUN_18049c9e0(&local_88,&DAT_1821db634);
      local_res20 = local_88;
      puVar14 = (uint *)(pcVar4 + -0x10);
      local_60 = pcVar4;
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
    }
    local_98 = 0;
    local_90 = 0;
    local_c0 = (void *)0x0;
    local_b8 = 0;
    if (*(code **)(*param_1 + 0x160) == FUN_18132a0b0) {
      FUN_18132a0d0(&local_98,&local_c0);
    }
    else {
      (**(code **)(*param_1 + 0x160))(param_1,&local_98,&local_c0);
    }
    iVar7 = local_b8._4_4_;
    if (0 < local_b8._4_4_) {
      do {
        iVar8 = FUN_18049bb30(*(undefined8 *)((longlong)local_c0 + (longlong)iVar15 * 8),local_res20
                             );
        if (iVar8 == 0) {
          if (-1 < iVar15) goto LAB_18132c009;
          break;
        }
        iVar15 = iVar15 + 1;
      } while (iVar15 < iVar7);
    }
    iVar15 = FUN_181349560(param_1 + 0x26);
    do {
      iVar15 = iVar15 + -1;
      if (iVar15 < 0) {
        iVar15 = FUN_181349560(param_1 + 0x26);
        if ((*local_res20 != '\0') && (iVar15 + 2 != 0)) {
          if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
            UNLOCK();
          }
          local_a0 = local_res20;
          FUN_1813486a0(param_1 + 0x49,iVar15 + 2,&local_a0,1,in_stack_ffffffffffffff28 & 0xffffff00
                       );
        }
        break;
      }
      puVar10 = (undefined8 *)FUN_1812ebeb0(param_1 + 0x26,iVar15);
      if (puVar10 == (undefined8 *)0x0) {
        local_b0 = "";
      }
      else {
        local_b0 = (char *)*puVar10;
        if ((*(uint *)(local_b0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_b0 + -0x10) = *(int *)(local_b0 + -0x10) + 1;
          UNLOCK();
        }
      }
      pcVar4 = local_b0;
      if ((local_b0 == local_res20) || (iVar7 = FUN_18049bb30(local_b0,local_res20), iVar7 == 0)) {
        bVar5 = true;
      }
      else {
        bVar5 = false;
      }
      puVar14 = (uint *)(pcVar4 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
    } while (!bVar5);
LAB_18132c009:
    FUN_180488c50(&local_c0);
                    /* WARNING: Subroutine does not return */
    free(local_c0);
  }
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar11 = *plVar2;
  *plVar2 = *param_2;
  UNLOCK();
  puVar14 = (uint *)(lVar11 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  FUN_18132e3a0(param_1[0x1c],plVar2,1);
  lVar11 = __RTDynamicCast(param_1[0x24],0,
                           &juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor,
                           &juce::FileTreeComponent::RTTI_Type_Descriptor,0);
  if (lVar11 != 0) {
    FUN_181324bd0(lVar11);
  }
  pcVar4 = (char *)*plVar2;
  if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pcVar4 + -0x10) = *(int *)(pcVar4 + -0x10) + 1;
    UNLOCK();
  }
  local_c8 = pcVar4;
  if (*pcVar4 == '\0') {
    FUN_18049c9e0(&local_80,&DAT_1821db634);
    local_c8 = local_80;
    puVar14 = (uint *)(pcVar4 + -0x10);
    local_58 = pcVar4;
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
  }
  FUN_1812eb570(param_1 + 0x26,&local_c8);
  uVar12 = FUN_181241230(plVar2,&local_70);
  bVar5 = false;
  puVar10 = (undefined8 *)FUN_18049a930(local_50,uVar12);
  DVar9 = GetFileAttributesW((LPCWSTR)*puVar10);
  if (((DVar9 & 0x10) == 0) || (bVar6 = true, DVar9 == 0xffffffff)) {
    bVar6 = false;
  }
  if (bVar6) {
    plVar13 = (longlong *)FUN_181241230(plVar2,&local_78);
    bVar5 = true;
    if ((*plVar13 != *plVar2) && (iVar15 = FUN_18049bb30(*plVar13), iVar15 != 0)) {
      uVar12 = 1;
      goto LAB_18132c1c0;
    }
  }
  uVar12 = 0;
LAB_18132c1c0:
  FUN_18133e970(param_1[0xfd],uVar12);
  if ((bVar5) && (puVar14 = (uint *)(local_78 + -0x10), (*puVar14 & 0x30000000) == 0)) {
    LOCK();
    uVar3 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar14 = (uint *)(local_70 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar14 = (uint *)(local_c8 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  return;
}



############ FUN_ 1812156c0 size=1146 ############

longlong * FUN_1812156c0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  byte bVar2;
  char cVar3;
  char cVar4;
  byte bVar5;
  int iVar6;
  uint uVar7;
  undefined8 uVar8;
  longlong *plVar9;
  uint *puVar10;
  byte *pbVar11;
  bool bVar12;
  longlong local_res18;
  undefined1 *local_res20;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  undefined1 local_b0 [8];
  longlong local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90 [2];
  undefined8 local_80;
  longlong *local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50;
  longlong local_48;
  
  local_80 = 0xfffffffffffffffe;
  *param_1 = (longlong)&DAT_1821dbf98;
  iVar6 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  if ((undefined1 *)*param_2 != &DAT_1821dbf98) {
    iVar6 = FUN_18049bb30(*param_2,&DAT_1821dbf98);
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar7 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar12 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar7;
    if (bVar12) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (iVar6 == 0) goto LAB_181215b09;
  cVar3 = FUN_18124a6c0(param_2,&DAT_1821db98c);
  cVar4 = FUN_181241c10(param_2);
  if (cVar4 == '\0') {
    local_78 = &local_res18;
    do {
      iVar6 = FUN_1812327b0(param_2,0x5c);
      if (iVar6 + 1 < 1) {
        local_res20 = (undefined1 *)*param_2;
        if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        pbVar11 = (byte *)*param_2;
        for (; -1 < iVar6; iVar6 = iVar6 + -1) {
          bVar1 = *pbVar11;
          if (bVar1 == 0) {
            local_res20 = &DAT_1821dbf98;
            goto LAB_18121581d;
          }
          pbVar11 = pbVar11 + 1;
          if ((char)bVar1 < '\0') {
            bVar5 = 0x40;
            bVar2 = bVar1 & 0x40;
            while ((bVar2 != 0 && (8 < bVar5))) {
              pbVar11 = pbVar11 + 1;
              bVar5 = bVar5 >> 1;
              bVar2 = bVar1 & bVar5;
            }
          }
        }
        FUN_18049c9e0(&local_res20);
      }
LAB_18121581d:
      uVar8 = FUN_181213190(&local_c0,&local_res20,0);
      FUN_18049c4e0(&local_d8,&DAT_1821db9fc);
      plVar9 = (longlong *)FUN_181232d30(&local_d8,uVar8);
      local_res18 = *plVar9;
      if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
        UNLOCK();
      }
      puVar10 = (uint *)(local_d8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      plVar9 = (longlong *)FUN_181232d30(&local_res18,param_1);
      local_c8 = *plVar9;
      if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
        UNLOCK();
      }
      puVar10 = (uint *)(local_res18 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      local_70 = *param_1;
      *param_1 = local_c8;
      puVar10 = (uint *)(local_70 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_c0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_res20 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      plVar9 = (longlong *)FUN_181241230(param_2,&local_b8);
      local_68 = *param_2;
      *param_2 = *plVar9;
      *plVar9 = local_68;
      puVar10 = (uint *)(local_b8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      cVar4 = FUN_181241c10(param_2);
    } while (cVar4 == '\0');
  }
  iVar6 = FUN_1812327b0(param_2,0x5c);
  FUN_1812491d0(param_2,&local_d0,iVar6 + 1);
  uVar8 = FUN_181213190(local_b0,&local_d0,0);
  plVar9 = (longlong *)FUN_181232aa0(&local_a8,uVar8,param_1);
  local_60 = *param_1;
  *param_1 = *plVar9;
  *plVar9 = local_60;
  puVar10 = (uint *)(local_a8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_d0 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if (cVar3 == '\0') {
    iVar6 = FUN_180492f10(param_1);
    if (iVar6 != 0x2f) {
      plVar9 = (longlong *)FUN_181246550(&local_98,&DAT_1821dba24,param_1);
      local_50 = *param_1;
      *param_1 = *plVar9;
      *plVar9 = local_50;
      puVar10 = (uint *)(local_98 + -0x10);
      uVar7 = *puVar10;
      goto LAB_181215aa9;
    }
  }
  else {
    plVar9 = (longlong *)FUN_181249000(param_1,&local_a0,&DAT_1821db9ac,param_4,0);
    local_58 = *param_1;
    *param_1 = *plVar9;
    *plVar9 = local_58;
    puVar10 = (uint *)(local_a0 + -0x10);
    uVar7 = *puVar10;
LAB_181215aa9:
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  plVar9 = (longlong *)FUN_181246550(local_90,"file://",param_1);
  local_48 = *param_1;
  *param_1 = *plVar9;
  *plVar9 = local_48;
  puVar10 = (uint *)(local_90[0] + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
LAB_181215b09:
  puVar10 = (uint *)(*param_2 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return param_1;
}



############ FUN_ 1804f48b0 size=406 ############

void FUN_1804f48b0(longlong param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  int iVar6;
  longlong lVar7;
  uint *_Memory;
  byte *pbVar8;
  undefined1 *local_res8;
  
  lVar7 = FUN_18134adf0();
  puVar1 = (undefined8 *)(param_1 + 0xe0);
  iVar6 = FUN_1812327b0(puVar1,0x5c);
  if (iVar6 + 1 < 1) {
    local_res8 = (undefined1 *)*puVar1;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar8 = (byte *)*puVar1;
    for (; -1 < iVar6; iVar6 = iVar6 + -1) {
      bVar3 = *pbVar8;
      if (bVar3 == 0) {
        local_res8 = &DAT_1821dbf98;
        goto LAB_1804f4971;
      }
      pbVar8 = pbVar8 + 1;
      if ((char)bVar3 < '\0') {
        bVar5 = 0x40;
        bVar4 = bVar3 & 0x40;
        while ((bVar4 != 0 && (8 < bVar5))) {
          pbVar8 = pbVar8 + 1;
          bVar5 = bVar5 >> 1;
          bVar4 = bVar3 & bVar5;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
  }
LAB_1804f4971:
  (**(code **)(*(longlong *)(lVar7 + 0x20) + 0x20))
            (lVar7 + 0x20,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
             puVar1,&local_res8,param_1 + 0xf8,param_1 + 0xe8,param_1 + 0xf0,
             *(undefined1 *)(param_1 + 0x105),*(undefined1 *)(param_1 + 0x104),
             *(undefined4 *)(param_1 + 0x100),*(longlong *)(param_1 + 0xd0) + 0x108);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1804f5f10 size=579 ############

void FUN_1804f5f10(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined8 *puVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  byte bVar5;
  int iVar6;
  longlong lVar7;
  uint *_Memory;
  byte *pbVar8;
  bool bVar9;
  undefined1 *local_res8;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb0));
  puVar1 = (undefined8 *)(param_1 + 0x70);
  if ((undefined1 *)*puVar1 == &DAT_1821dbf98) {
    iVar6 = 0;
  }
  else {
    iVar6 = FUN_18049bb30(*puVar1,&DAT_1821dbf98);
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar4 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar9 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar4;
    if (bVar9) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((iVar6 != 0) && (FUN_1804f6220(param_1,1), *(longlong *)(param_1 + 0xe0) == 0)) {
    FUN_181229aa0(*(undefined8 *)(param_1 + 0xa8),param_1 + 0x48);
  }
  lVar7 = FUN_18134adf0(*(undefined8 *)(param_1 + 0x78));
  iVar6 = FUN_1812327b0(puVar1,0x5c);
  if (iVar6 + 1 < 1) {
    local_res8 = (undefined1 *)*puVar1;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar8 = (byte *)*puVar1;
    for (; -1 < iVar6; iVar6 = iVar6 + -1) {
      bVar2 = *pbVar8;
      if (bVar2 == 0) {
        local_res8 = &DAT_1821dbf98;
        goto LAB_1804f6071;
      }
      pbVar8 = pbVar8 + 1;
      if ((char)bVar2 < '\0') {
        bVar5 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar5))) {
          pbVar8 = pbVar8 + 1;
          bVar5 = bVar5 >> 1;
          bVar3 = bVar2 & bVar5;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
  }
LAB_1804f6071:
  (**(code **)(*(longlong *)(lVar7 + 0x20) + 0x20))
            (lVar7 + 0x20,param_2,param_3,param_4,puVar1,&local_res8,param_1 + 0xe0,param_1 + 0xe8,
             param_1 + 0xf0,*(undefined1 *)(param_1 + 0xa0),*(byte *)(param_1 + 0x40) & 1,
             *(undefined4 *)(param_1 + 0x88),*(longlong *)(param_1 + 0x78) + 0x130);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001804f6139. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb0));
  return;
}



############ FUN_ 180517910 size=2426 ############

void FUN_180517910(longlong param_1,undefined8 *param_2,char param_3)

{
  uint uVar1;
  byte bVar2;
  short sVar3;
  int iVar4;
  char *pcVar5;
  void *pvVar6;
  byte bVar7;
  bool bVar8;
  void *_Memory;
  void *pvVar9;
  byte bVar10;
  BOOL BVar11;
  HRESULT HVar12;
  undefined8 *puVar13;
  LPITEMIDLIST pidl;
  undefined8 uVar14;
  longlong lVar15;
  undefined8 *puVar16;
  uint *puVar17;
  undefined8 *puVar18;
  byte *pbVar19;
  short *psVar20;
  longlong lVar21;
  int iVar22;
  longlong local_res20;
  void *local_308;
  undefined8 local_300;
  undefined8 *local_2f8;
  undefined8 local_2f0;
  undefined1 *local_2e8;
  longlong local_2e0;
  longlong local_2d8;
  longlong local_2d0;
  longlong local_2c8;
  longlong local_2c0;
  longlong local_2b8;
  undefined1 local_2b0 [8];
  longlong local_2a8;
  undefined4 local_2a0;
  IMalloc *local_298;
  longlong local_290;
  longlong local_288;
  longlong local_280;
  undefined1 local_278 [8];
  undefined8 local_270;
  short *local_268;
  _browseinfoW local_258;
  undefined1 local_218 [8];
  undefined1 local_210 [8];
  undefined8 local_208;
  undefined8 local_200;
  longlong local_1f8;
  undefined1 local_1f0 [8];
  undefined8 local_1e8;
  undefined1 local_1e0 [8];
  short *local_1d8;
  char *local_1d0;
  longlong local_1c8;
  tagOFNW local_1b8;
  undefined1 local_118 [72];
  undefined1 local_d0 [72];
  undefined1 local_88 [80];
  
  local_1e8 = 0xfffffffffffffffe;
  lVar15 = 0;
  local_2a0 = 0;
  local_308 = (void *)0x0;
  local_300 = 0;
  if (*(char *)(param_1 + 0x32c) != '\0') {
    local_258.hwndOwner = (HWND)0x0;
    local_258.pidlRoot = (LPCITEMIDLIST)0x0;
    local_258.pszDisplayName = (LPWSTR)0x0;
    local_258.lpszTitle = (LPCWSTR)0x0;
    local_258.ulFlags = 0;
    local_258._36_4_ = 0;
    local_258.lpfn = (BFFCALLBACK)0x0;
    local_258.lParam = 0;
    local_258.iImage = 0;
    local_258._60_4_ = 0;
    if (param_3 == '\0') {
      if (*(longlong *)(param_1 + 0x220) != 0) {
        lVar15 = *(longlong *)(*(longlong *)(param_1 + 0x220) + 0x10);
      }
      local_258.hwndOwner = (HWND)FUN_18134b8d0(lVar15);
    }
    else {
      local_258.hwndOwner = (HWND)0x0;
    }
    local_258.pszDisplayName = *(LPWSTR *)(param_1 + 0x338);
    puVar13 = (undefined8 *)FUN_18049a930(local_1e0,param_1 + 0x228);
    local_258.lpszTitle = (LPCWSTR)*puVar13;
    local_258.lpfn = FUN_180519050;
    local_258.ulFlags = 0x70;
    local_258.lParam = param_1;
    pidl = SHBrowseForFolderW(&local_258);
    BVar11 = SHGetPathFromIDListW(pidl,*(LPWSTR *)(param_1 + 0x338));
    if (BVar11 == 0) {
      **(undefined2 **)(param_1 + 0x338) = 0;
      puVar17 = (uint *)(*(longlong *)(param_1 + 0x248) + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      *(undefined1 **)(param_1 + 0x248) = &DAT_1821dbf98;
    }
    if ((pidl != (LPITEMIDLIST)0x0) && (HVar12 = SHGetMalloc(&local_298), -1 < HVar12)) {
      (*local_298->lpVtbl->Free)(local_298,pidl);
    }
    if (**(short **)(param_1 + 0x338) != 0) {
      local_1d8 = *(short **)(param_1 + 0x338);
      FUN_18049c800(&local_2d8);
      FUN_181241890(&local_res20,&local_2d8);
      puVar17 = (uint *)(local_2d8 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      pcVar5 = *(char **)(param_1 + 0x248);
      if (*pcVar5 != '\0') {
        local_1d0 = pcVar5;
        uVar14 = FUN_181241230(&local_res20,&local_290);
        FUN_181245100(uVar14,&local_2d0,pcVar5);
        lVar15 = local_res20;
        puVar17 = (uint *)(local_290 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        local_1c8 = local_res20;
        local_res20 = local_2d0;
        local_2d0 = lVar15;
        puVar17 = (uint *)(lVar15 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
      }
      local_2e0 = local_res20;
      puVar17 = (uint *)(local_res20 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        *puVar17 = *puVar17 + 1;
        UNLOCK();
      }
      uVar14 = FUN_1812156c0(local_118,&local_2e0);
      FUN_18051abf0(&local_308,uVar14);
      FUN_1804858a0();
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
    }
LAB_180517bdb:
    lVar15 = FUN_180518400();
    iVar22 = *(int *)(lVar15 + 0x14) + -1;
    lVar21 = (longlong)iVar22;
    if (-1 < iVar22) {
      do {
        pvVar6 = *(void **)(*(longlong *)(lVar15 + 8) + lVar21 * 8);
        pvVar9 = (void *)0x0;
        while (_Memory = pvVar6, _Memory != (void *)0x0) {
          if (*(longlong *)((longlong)_Memory + 8) == param_1) {
            pvVar6 = *(void **)((longlong)_Memory + 0x10);
            if (pvVar9 == (void *)0x0) {
              if (-1 < lVar21) {
                if (iVar22 < *(int *)(lVar15 + 0x14)) {
                  *(void **)(*(longlong *)(lVar15 + 8) + lVar21 * 8) = pvVar6;
                }
                else {
                  FUN_18047e060(lVar15 + 8,*(int *)(lVar15 + 0x14) + 1);
                  iVar4 = *(int *)(lVar15 + 0x14);
                  *(int *)(lVar15 + 0x14) = iVar4 + 1;
                  *(void **)(*(longlong *)(lVar15 + 8) + (longlong)iVar4 * 8) = pvVar6;
                }
              }
            }
            else {
              *(void **)((longlong)pvVar9 + 0x10) = pvVar6;
            }
            *(int *)(lVar15 + 0x18) = *(int *)(lVar15 + 0x18) + -1;
            if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          else {
            pvVar6 = *(void **)((longlong)_Memory + 0x10);
            pvVar9 = _Memory;
          }
        }
        iVar22 = iVar22 + -1;
        lVar21 = lVar21 + -1;
      } while (-1 < lVar21);
    }
    *param_2 = local_308;
    local_308 = (void *)0x0;
    *(undefined4 *)(param_2 + 1) = (undefined4)local_300;
    *(undefined4 *)((longlong)param_2 + 0xc) = local_300._4_4_;
    local_300 = 0;
    FUN_18051c520(&local_308);
                    /* WARNING: Subroutine does not return */
    free(local_308);
  }
  memset(&local_1b8,0,0x98);
  local_1b8.lStructSize = 0x88;
  if (param_3 == '\0') {
    lVar21 = lVar15;
    if (*(longlong *)(param_1 + 0x220) != 0) {
      lVar21 = *(longlong *)(*(longlong *)(param_1 + 0x220) + 0x10);
    }
    local_1b8.hwndOwner = (HWND)FUN_18134b8d0(lVar21);
  }
  else {
    local_1b8.hwndOwner = (HWND)0x0;
  }
  local_1b8.lpstrFilter = *(LPCWSTR *)(param_1 + 0x340);
  local_1b8.nFilterIndex = 1;
  local_1b8.lpstrFile = *(LPWSTR *)(param_1 + 0x338);
  local_1b8.nMaxFile = 0x8000;
  puVar13 = (undefined8 *)FUN_18049a930(local_218,param_1 + 0x240);
  local_1b8.lpstrInitialDir = (LPCWSTR)*puVar13;
  puVar13 = (undefined8 *)FUN_18049a930(local_210,param_1 + 0x228);
  local_1b8.lpstrTitle = (LPCWSTR)*puVar13;
  local_1b8.Flags = 0x88080c;
  if (*(char *)(param_1 + 0x32f) != '\0') {
    local_1b8.Flags = 0x88080e;
  }
  if (*(char *)(param_1 + 0x330) != '\0') {
    local_1b8.Flags = local_1b8.Flags | 0x200;
  }
  if ((param_3 != '\0') || (*(longlong *)(param_1 + 0x238) != 0)) {
    local_1b8.Flags = local_1b8.Flags | 0x20;
  }
  local_1b8.lpfnHook = FUN_180519190;
  local_1b8.lCustData = param_1;
  if (*(char *)(param_1 + 0x32e) == '\0') {
    BVar11 = GetOpenFileNameW(&local_1b8);
    if (BVar11 == 0) {
      *param_2 = 0;
      param_2[1] = 0;
      FUN_18051c520(&local_308);
                    /* WARNING: Subroutine does not return */
      free(local_308);
    }
    if (((*(char *)(param_1 + 0x330) == '\0') || (local_1b8.nFileOffset == 0)) ||
       (*(short *)(*(longlong *)(param_1 + 0x338) + (longlong)(int)(local_1b8.nFileOffset - 1) * 2)
        != 0)) {
      if (**(short **)(param_1 + 0x338) != 0) {
        local_268 = *(short **)(param_1 + 0x338);
        FUN_18049c800(&local_2a8);
        FUN_181241890(local_2b0,&local_2a8);
        uVar14 = FUN_1812156c0(local_88,local_2b0);
        FUN_18051abf0(&local_308,uVar14);
        FUN_1804858a0(local_88);
        puVar17 = (uint *)(local_2a8 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
      }
    }
    else {
      psVar20 = (short *)(*(longlong *)(param_1 + 0x338) + (ulonglong)local_1b8.nFileOffset * 2);
      sVar3 = *psVar20;
      while (sVar3 != 0) {
        FUN_18049c800(&local_2b8,psVar20);
        local_270 = *(undefined8 *)(param_1 + 0x338);
        FUN_18049c800(&local_2c0);
        FUN_181241890(&local_2c8,&local_2c0);
        uVar14 = FUN_181245100(&local_2c8,local_278,local_2b8);
        uVar14 = FUN_1812156c0(local_d0,uVar14);
        FUN_18051abf0(&local_308,uVar14);
        FUN_1804858a0(local_d0);
        puVar17 = (uint *)(local_2c8 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        puVar17 = (uint *)(local_2c0 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        puVar17 = (uint *)(local_2b8 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        lVar15 = -1;
        do {
          lVar21 = lVar15;
          lVar15 = lVar21 + 1;
        } while (psVar20[lVar15] != 0);
        psVar20 = psVar20 + lVar21 + 2;
        sVar3 = *psVar20;
      }
    }
    goto LAB_180517bdb;
  }
  local_2f8 = (undefined8 *)0x0;
  local_2f0 = 0;
  local_208 = *(undefined8 *)(param_1 + 0x230);
  FUN_18122d110(&local_2f8,local_208,&DAT_18249f57c,&DAT_18249f580);
  puVar13 = local_2f8 + local_2f0._4_4_;
  for (puVar18 = local_2f8; puVar18 != puVar13; puVar18 = puVar18 + 1) {
    puVar16 = (undefined8 *)FUN_181248e40(puVar18,&local_288);
    local_200 = *puVar18;
    *puVar18 = *puVar16;
    *puVar16 = local_200;
    puVar17 = (uint *)(local_288 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
  }
  FUN_18122d5d0(&local_2f8);
  lVar21 = lVar15;
  if (local_2f0._4_4_ == 1) {
    uVar14 = FUN_181249970(&local_2f8,0);
    puVar13 = (undefined8 *)FUN_1812487f0(uVar14,&local_280,&DAT_18249f584);
    lVar21 = 1;
    if (*(char *)*puVar13 == '\0') goto LAB_180517e1e;
    bVar8 = true;
  }
  else {
LAB_180517e1e:
    bVar8 = false;
  }
  if ((lVar21 != 0) && (puVar17 = (uint *)(local_280 + -0x10), (*puVar17 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  if (!bVar8) goto LAB_180517f8d;
  puVar13 = (undefined8 *)FUN_181249970(&local_2f8,0);
  pbVar19 = &DAT_182496888;
  iVar22 = FUN_181249270(puVar13,&DAT_182496888);
  if (-1 < iVar22) {
LAB_180517e90:
    do {
      bVar2 = *pbVar19;
      pbVar19 = pbVar19 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar19 & 0xc0) == 0x80) {
          do {
            pbVar19 = pbVar19 + 1;
          } while ((*pbVar19 & 0xc0) == 0x80);
          lVar15 = lVar15 + 1;
          goto LAB_180517e90;
        }
      }
      else if (bVar2 == 0) goto LAB_180517ebd;
      lVar15 = lVar15 + 1;
    } while( true );
  }
LAB_180517e78:
  local_2e8 = &DAT_1821dbf98;
  goto LAB_180517f2d;
LAB_180517ebd:
  iVar22 = iVar22 + (int)lVar15;
  if (iVar22 < 1) {
    local_2e8 = (undefined1 *)*puVar13;
    if ((*(uint *)(local_2e8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_2e8 + -0x10) = *(int *)(local_2e8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar19 = (byte *)*puVar13;
    while (iVar22 = iVar22 + -1, -1 < iVar22) {
      bVar2 = *pbVar19;
      if (bVar2 == 0) goto LAB_180517e78;
      pbVar19 = pbVar19 + 1;
      if ((char)bVar2 < '\0') {
        bVar10 = 0x40;
        bVar7 = bVar2 & 0x40;
        while ((bVar7 != 0 && (8 < bVar10))) {
          pbVar19 = pbVar19 + 1;
          bVar10 = bVar10 >> 1;
          bVar7 = bVar2 & bVar10;
        }
      }
    }
    FUN_18049c9e0(&local_2e8);
  }
LAB_180517f2d:
  local_1f8 = *(longlong *)(param_1 + 0x250);
  *(undefined1 **)(param_1 + 0x250) = local_2e8;
  puVar17 = (uint *)(local_1f8 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  puVar13 = (undefined8 *)FUN_18049a930(local_1f0,param_1 + 0x250);
  local_1b8.lpstrDefExt = (LPCWSTR)*puVar13;
LAB_180517f8d:
  BVar11 = GetSaveFileNameW(&local_1b8);
  if (BVar11 == 0) {
    *param_2 = 0;
    param_2[1] = 0;
    FUN_180488c50(&local_2f8);
                    /* WARNING: Subroutine does not return */
    free(local_2f8);
  }
  FUN_180488c50(&local_2f8);
                    /* WARNING: Subroutine does not return */
  free(local_2f8);
}



############ FUN_ 181214270 size=1053 ############

undefined8 * FUN_181214270(undefined8 *param_1,undefined8 param_2)

{
  longlong *plVar1;
  uint uVar2;
  char *pcVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  uint *puVar10;
  uint *_Memory;
  uint *puVar11;
  longlong lVar12;
  longlong *plVar13;
  char *local_res20;
  char *local_c8;
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  longlong *local_a8;
  int local_9c;
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  char *local_70;
  undefined8 local_68;
  undefined8 local_60;
  longlong *local_58;
  char *local_50;
  char *local_48;
  
  local_68 = 0xfffffffffffffffe;
  cVar4 = FUN_1812146f0(param_2);
  if (cVar4 == '\0') {
    *param_1 = &DAT_1821dbf98;
    return param_1;
  }
  iVar5 = FUN_181214d80(param_2);
  iVar6 = FUN_180493050(param_2,iVar5);
  while (iVar6 == 0x2f) {
    iVar5 = iVar5 + 1;
    iVar6 = FUN_180493050(param_2,iVar5);
  }
  iVar6 = FUN_181232860(param_2,iVar5,0x2f);
  if (iVar6 < 0) {
    iVar6 = 0x7fffffff;
  }
  else if (iVar6 < -1) {
    iVar6 = -1;
  }
  FUN_1812490c0(param_2,&local_b8,iVar5,iVar6);
  uVar7 = FUN_1812134e0(&local_98,&local_b8);
  FUN_1812319a0(uVar7,&local_res20,&DAT_1821dbacc,&DAT_1821dbaac);
  puVar10 = (uint *)(local_98 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_b8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  cVar4 = FUN_18124a6c0(param_2,"file:///");
  puVar8 = (undefined8 *)FUN_1812148a0(param_2,&local_90);
  local_60 = *puVar8;
  FUN_18122ce30(&local_a8,local_60,&DAT_1821dbaec,"");
  puVar10 = (uint *)(local_90 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  plVar1 = local_a8 + local_9c;
  if (local_a8 != plVar1) {
    local_58 = &local_c0;
    plVar13 = local_a8;
    do {
      local_88 = *plVar13;
      puVar10 = (uint *)(local_88 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        *puVar10 = *puVar10 + 1;
        UNLOCK();
      }
      uVar7 = FUN_1812319a0(&local_88,&local_78,&DAT_1821dbb0c,&DAT_1821dbb24);
      uVar7 = FUN_1812134e0(&local_80,uVar7);
      FUN_18049c9e0(&local_c0,&DAT_1821db634);
      plVar9 = (longlong *)FUN_181232d30(&local_c0,uVar7);
      local_b0 = *plVar9;
      puVar11 = (uint *)(local_b0 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        *puVar11 = *puVar11 + 1;
        UNLOCK();
      }
      _Memory = (uint *)(local_c0 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      FUN_181232d30(&local_res20,&local_b0);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      puVar11 = (uint *)(local_80 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      puVar11 = (uint *)(local_78 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      plVar13 = plVar13 + 1;
    } while (plVar13 != plVar1);
  }
  if (cVar4 == '\0') {
    FUN_18049c4e0(&local_c8,&DAT_1821dbb64);
    pcVar3 = local_c8;
    if (*local_c8 == '\0') {
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      local_c8 = local_res20;
      UNLOCK();
      puVar10 = (uint *)(pcVar3 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
    }
    else {
      lVar12 = -1;
      do {
        lVar12 = lVar12 + 1;
      } while (local_res20[lVar12] != '\0');
      local_50 = local_res20 + lVar12;
      FUN_181232e20(&local_c8);
    }
    pcVar3 = local_res20;
    local_70 = local_c8;
    if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
      UNLOCK();
    }
    puVar10 = (uint *)(local_c8 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_48 = local_res20;
    local_res20 = local_c8;
    puVar10 = (uint *)(pcVar3 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  FUN_181241890(param_1,&local_res20);
  FUN_180488c50(&local_a8);
                    /* WARNING: Subroutine does not return */
  free(local_a8);
}



############ FUN_ 1812148a0 size=367 ############

undefined8 *
FUN_1812148a0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  byte bVar5;
  uint uVar6;
  int iVar7;
  uint *puVar8;
  byte *pbVar9;
  undefined8 **ppuVar10;
  ulonglong uVar11;
  undefined8 *local_res8;
  undefined8 *local_res10;
  undefined4 uVar12;
  undefined8 uVar13;
  
  uVar13 = 0xfffffffffffffffe;
  uVar12 = 0;
  local_res10 = param_2;
  uVar6 = FUN_181214d80();
  uVar11 = (ulonglong)uVar6;
  iVar7 = FUN_180493050(param_1,uVar6);
  while (iVar7 == 0x2f) {
    uVar11 = (ulonglong)((int)uVar11 + 1);
    iVar7 = FUN_180493050(param_1,uVar11);
  }
  iVar7 = FUN_181232860(param_1,uVar11 & 0xffffffff,0x2f,param_4,uVar12,uVar13);
  if (iVar7 + 1 < 1) {
    local_res10 = (undefined8 *)&DAT_1821dbf98;
    ppuVar10 = &local_res10;
    bVar4 = true;
    bVar3 = false;
  }
  else {
    pbVar9 = (byte *)*param_1;
    for (; -1 < iVar7; iVar7 = iVar7 + -1) {
      bVar1 = *pbVar9;
      if (bVar1 == 0) {
        local_res8 = (undefined8 *)&DAT_1821dbf98;
        goto LAB_18121497d;
      }
      pbVar9 = pbVar9 + 1;
      if ((char)bVar1 < '\0') {
        bVar5 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar5))) {
          pbVar9 = pbVar9 + 1;
          bVar5 = bVar5 >> 1;
          bVar2 = bVar1 & bVar5;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
LAB_18121497d:
    ppuVar10 = &local_res8;
    bVar4 = false;
    bVar3 = true;
  }
  *param_2 = *ppuVar10;
  *ppuVar10 = (undefined8 *)&DAT_1821dbf98;
  if ((bVar3) && (puVar8 = (uint *)(local_res8 + -2), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((bVar4) && (puVar8 = (uint *)(local_res10 + -2), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return param_2;
}



############ FUN_ 18141ac10 size=938 ############

float FUN_18141ac10(undefined8 param_1)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  double dVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  int iVar8;
  undefined8 uVar9;
  undefined8 *puVar10;
  uint *puVar11;
  int iVar12;
  byte *pbVar13;
  byte *pbVar14;
  byte *pbVar15;
  int iVar16;
  float fVar17;
  float fVar18;
  byte *local_res18;
  byte *local_res20;
  byte *local_98;
  longlong local_90;
  byte *local_88;
  undefined8 local_80;
  undefined1 local_78 [8];
  longlong local_70 [7];
  
  local_70[1] = 0xfffffffffffffffe;
  iVar16 = 0;
  bVar5 = false;
  uVar9 = FUN_1812487f0(param_1,&local_90,&DAT_1821e4b7c);
  FUN_1812314e0(uVar9,&local_res18,&DAT_1821e4bac,&DAT_1821e4b8c);
  puVar11 = (uint *)(local_90 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  iVar8 = FUN_181249270(&local_res18,&DAT_1821e7204);
  pbVar14 = local_res18;
  if (iVar8 < 0) {
    fVar18 = 0.0;
    pbVar13 = local_res18;
  }
  else {
    iVar8 = FUN_18049d2f0(local_res18,&DAT_1821e721c);
    pbVar13 = local_res18;
    if (iVar8 < 0) {
      local_res20 = pbVar14;
      if ((*(uint *)(pbVar14 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pbVar14 + -0x10) = *(int *)(pbVar14 + -0x10) + 1;
        UNLOCK();
      }
    }
    else if (iVar8 < 1) {
      local_res20 = &DAT_1821dbf98;
      pbVar13 = pbVar14;
    }
    else {
      iVar12 = 0;
      pbVar15 = pbVar14;
      if (0 < iVar8) {
        do {
          bVar2 = *pbVar15;
          if (bVar2 == 0) {
            local_res20 = pbVar14;
            if ((*(uint *)(pbVar14 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(pbVar14 + -0x10) = *(int *)(pbVar14 + -0x10) + 1;
              UNLOCK();
            }
            goto LAB_18141ad53;
          }
          iVar12 = iVar12 + 1;
          pbVar15 = pbVar15 + 1;
          if ((char)bVar2 < '\0') {
            bVar7 = 0x40;
            bVar3 = bVar2 & 0x40;
            while ((bVar3 != 0 && (8 < bVar7))) {
              pbVar15 = pbVar15 + 1;
              bVar7 = bVar7 >> 1;
              bVar3 = bVar2 & bVar7;
            }
          }
        } while (iVar12 < iVar8);
      }
      FUN_18124a8a0(&local_res20,pbVar14);
      pbVar13 = pbVar14;
    }
LAB_18141ad53:
    bVar5 = true;
    local_88 = local_res20;
    dVar4 = (double)FUN_18049bd80(&local_88);
    fVar18 = (float)dVar4;
  }
  if ((bVar5) &&
     (puVar11 = (uint *)(local_res20 + -0x10), pbVar13 = local_res18, (*puVar11 & 0x30000000) == 0))
  {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  bVar6 = false;
  bVar5 = false;
  iVar8 = FUN_181249270(&local_res18,&DAT_1821e7234);
  if (iVar8 < 0) {
    dVar4 = (double)FUN_18049bd80(local_78);
    fVar17 = (float)dVar4;
    goto LAB_18141af0f;
  }
  pbVar15 = &DAT_1821e731c;
  iVar8 = FUN_18049d2f0(pbVar13,&DAT_1821e731c);
  pbVar14 = pbVar13;
  if (-1 < iVar8) {
LAB_18141ae10:
    do {
      bVar2 = *pbVar15;
      pbVar15 = pbVar15 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar15 & 0xc0) == 0x80) {
          do {
            pbVar15 = pbVar15 + 1;
          } while ((*pbVar15 & 0xc0) == 0x80);
          iVar16 = iVar16 + 1;
          goto LAB_18141ae10;
        }
      }
      else if (bVar2 == 0) goto LAB_18141ae3d;
      iVar16 = iVar16 + 1;
    } while( true );
  }
  local_98 = &DAT_1821dbf98;
  goto LAB_18141aeaf;
LAB_18141ae3d:
  iVar16 = iVar16 + iVar8;
  if (iVar16 < 1) {
    pbVar14 = local_res18;
    local_98 = pbVar13;
    if ((*(uint *)(pbVar13 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar13 + -0x10) = *(int *)(pbVar13 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    while (iVar16 = iVar16 + -1, -1 < iVar16) {
      bVar2 = *pbVar13;
      if (bVar2 == 0) {
        local_98 = &DAT_1821dbf98;
        goto LAB_18141aeaf;
      }
      pbVar13 = pbVar13 + 1;
      if ((char)bVar2 < '\0') {
        bVar7 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar7))) {
          pbVar13 = pbVar13 + 1;
          bVar7 = bVar7 >> 1;
          bVar3 = bVar2 & bVar7;
        }
      }
    }
    FUN_18049c9e0(&local_98);
  }
LAB_18141aeaf:
  puVar10 = (undefined8 *)FUN_1812490c0(&local_98,local_70,0,1);
  bVar6 = true;
  bVar5 = true;
  local_80 = *puVar10;
  dVar4 = (double)FUN_18049bd80(&local_80);
  fVar17 = (float)dVar4 * DAT_1824c44dc;
  pbVar13 = pbVar14;
LAB_18141af0f:
  if ((bVar6) &&
     (puVar11 = (uint *)(local_70[0] + -0x10), pbVar13 = local_res18, (*puVar11 & 0x30000000) == 0))
  {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if ((bVar5) &&
     (puVar11 = (uint *)(local_98 + -0x10), pbVar13 = local_res18, (*puVar11 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  fVar18 = fVar18 * DAT_1824c459c;
  puVar11 = (uint *)(pbVar13 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  return fVar18 + fVar17;
}



############ FUN_ 180539c50 size=3509 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180539c50(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  byte bVar2;
  char cVar3;
  short sVar4;
  undefined2 uVar5;
  ushort uVar6;
  int iVar7;
  uint uVar8;
  undefined4 uVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lVar12;
  longlong *plVar13;
  undefined8 uVar14;
  undefined8 uVar15;
  uint *puVar16;
  uint *puVar17;
  uint *puVar18;
  ulonglong uVar19;
  char cVar20;
  bool bVar21;
  undefined1 auStack_268 [32];
  char local_248;
  char local_247;
  char local_246;
  short local_244;
  longlong local_238;
  longlong local_230;
  undefined1 *local_228;
  longlong local_220;
  longlong local_218;
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  longlong local_1e0;
  longlong local_1d8;
  longlong local_1d0;
  longlong local_1c8;
  longlong local_1c0;
  longlong local_1b8;
  longlong local_1b0;
  longlong local_1a8;
  longlong local_1a0;
  longlong local_198;
  longlong local_190;
  longlong local_188;
  longlong local_180;
  undefined8 local_178;
  longlong local_170;
  undefined8 local_168;
  undefined8 local_160;
  undefined8 local_158;
  longlong local_150;
  void *local_148;
  undefined8 local_140;
  void *local_138;
  undefined8 local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118;
  longlong local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8 [2];
  undefined8 *local_c8;
  longlong *local_c0;
  longlong *local_b8;
  undefined1 local_a8 [96];
  char local_48;
  byte local_47;
  undefined1 local_46;
  undefined1 local_45;
  undefined1 local_44;
  undefined1 local_43;
  ulonglong local_38;
  
  local_d8[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_268;
  local_c8 = param_1;
  FUN_18049c4e0(&local_e0,"AIFF file");
  *param_1 = juce::AudioFormatReader::vftable;
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x24) = 0;
  puVar1 = param_1 + 5;
  *puVar1 = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = 1;
  param_1[10] = param_2;
  param_1[0xb] = local_e0;
  puVar16 = (uint *)(local_e0 + -0x10);
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    *puVar16 = *puVar16 + 1;
    UNLOCK();
  }
  if ((*puVar16 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar16;
    *puVar16 = *puVar16 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar16);
    }
  }
  *param_1 = juce::AiffAudioFormatReader::vftable;
  iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
  if (iVar7 == 0x4d524f46) {
    iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
    lVar10 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
    lVar10 = iVar7 + lVar10;
    local_e8 = lVar10;
    iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
    if ((iVar7 == 0x46464941) || (iVar7 == 0x43464941)) {
      cVar20 = '\0';
      local_248 = '\0';
      local_247 = '\0';
      local_246 = '\0';
      lVar11 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
      lVar12 = lVar11 - lVar10;
      bVar21 = SBORROW8(lVar11,lVar10);
      while (bVar21 != lVar12 < 0) {
        iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
        uVar8 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
        uVar19 = (ulonglong)uVar8;
        lVar10 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
        lVar10 = uVar19 + lVar10;
        local_218 = lVar10;
        if (iVar7 == 0x52455646) {
          cVar20 = '\x01';
          local_248 = '\x01';
          iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
          if ((iVar7 != 0) && (iVar7 != -0x5d7faec0)) break;
        }
        else if (iVar7 == 0x4d4d4f43) {
          local_246 = '\x01';
          sVar4 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
          *(int *)(param_1 + 4) = (int)sVar4;
          iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
          param_1[3] = (longlong)iVar7;
          sVar4 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
          *(int *)(param_1 + 2) = (int)sVar4;
          *(uint *)(param_1 + 0xc) = (uint)(*(int *)(param_1 + 4) * (int)sVar4) >> 3;
          (**(code **)(*(longlong *)param_1[10] + 0x18))((longlong *)param_1[10],&local_48,10);
          if (((local_48 < '\0') || (local_48 != '@')) || (0x1c < local_47)) break;
          param_1[1] = (double)(int)(CONCAT31(CONCAT21(CONCAT11(local_46,local_45),local_44),
                                              local_43) >> (0x1e - local_47 & 0x1f));
          if (((uVar8 < 0x13) ||
              (iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x40))(), iVar7 == 0x454e4f4e)) ||
             (iVar7 == 0x736f7774)) {
            *(undefined1 *)(param_1 + 0xe) = 0;
          }
          else if (iVar7 == 0x74776f73) {
            *(undefined1 *)(param_1 + 0xe) = 1;
          }
          else {
            if ((iVar7 != 0x32336c66) && (iVar7 != 0x32334c46)) {
              param_1[1] = 0;
              break;
            }
            *(undefined1 *)(param_1 + 0xe) = 0;
            *(undefined1 *)((longlong)param_1 + 0x24) = 1;
          }
        }
        else if (iVar7 == 0x444e5353) {
          local_247 = '\x01';
          iVar7 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
          lVar12 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
          param_1[0xd] = (longlong)iVar7 + 4 + lVar12;
          if (*(int *)(param_1 + 0xc) < 1) {
            param_1[3] = 0;
          }
          else {
            lVar11 = (longlong)uVar19 / (longlong)*(int *)(param_1 + 0xc);
            lVar12 = param_1[3];
            if (lVar11 < (longlong)param_1[3]) {
              lVar12 = lVar11;
            }
            param_1[3] = lVar12;
          }
        }
        else if (iVar7 == 0x4b52414d) {
          sVar4 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
          local_244 = sVar4;
          FUN_18049c4e0(&local_210,"NumCuePoints");
          FUN_181211fd0(&local_150,sVar4);
          FUN_18122c880(puVar1,&local_210,&local_150);
          puVar16 = (uint *)(local_150 + -0x10);
          if ((*puVar16 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar16;
            *puVar16 = *puVar16 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar16);
            }
          }
          puVar16 = (uint *)(local_210 + -0x10);
          if ((*puVar16 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar16;
            *puVar16 = *puVar16 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar16);
            }
          }
          FUN_18049c4e0(&local_200,"NumCueLabels");
          FUN_181211fd0(&local_208,sVar4);
          FUN_18122c880(puVar1,&local_200,&local_208);
          puVar16 = (uint *)(local_208 + -0x10);
          if ((*puVar16 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar16;
            *puVar16 = *puVar16 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar16);
            }
          }
          puVar16 = (uint *)(local_200 + -0x10);
          if ((*puVar16 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar16;
            *puVar16 = *puVar16 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar16);
            }
          }
          lVar10 = local_218;
          if (sVar4 != 0) {
            local_c0 = &local_238;
            local_b8 = &local_230;
            uVar5 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
            uVar9 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
            bVar2 = (**(code **)(*(longlong *)param_1[10] + 0x20))();
            local_148 = (void *)0x0;
            local_140 = 0;
            (**(code **)(*(longlong *)param_1[10] + 0xa0))((longlong *)param_1[10],&local_148,bVar2)
            ;
            if ((bVar2 & 1) == 0) {
              (**(code **)(*(longlong *)param_1[10] + 0x20))();
            }
            FUN_181211fd0(&local_1f0,0);
            FUN_18049c4e0(&local_1f8,&DAT_1824acc54);
            plVar13 = (longlong *)FUN_181232d30(&local_1f8,&local_1f0);
            local_1e0 = *plVar13;
            puVar16 = (uint *)(local_1e0 + -0x10);
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              *puVar16 = *puVar16 + 1;
              UNLOCK();
            }
            puVar17 = (uint *)(local_1f8 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            puVar17 = (uint *)(local_1f0 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            FUN_181211fd0(&local_1e8,uVar5);
            local_238 = local_1e0;
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              *puVar16 = *puVar16 + 1;
              UNLOCK();
            }
            FUN_181232e20(&local_238,"Identifier","");
            local_d8[0] = local_238;
            puVar17 = (uint *)(local_238 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              *puVar17 = *puVar17 + 1;
              UNLOCK();
            }
            puVar18 = (uint *)(local_238 + -0x10);
            if ((*puVar18 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar18;
              *puVar18 = *puVar18 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar18);
              }
            }
            FUN_18122c880(param_1 + 5,local_d8,&local_1e8);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            puVar17 = (uint *)(local_1e8 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            FUN_181211fd0(&local_1d8,uVar9);
            local_230 = local_1e0;
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              *puVar16 = *puVar16 + 1;
              UNLOCK();
            }
            FUN_181232e20(&local_230,"Offset","");
            local_128 = local_230;
            puVar17 = (uint *)(local_230 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              *puVar17 = *puVar17 + 1;
              UNLOCK();
            }
            puVar18 = (uint *)(local_230 + -0x10);
            if ((*puVar18 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar18;
              *puVar18 = *puVar18 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar18);
              }
            }
            FUN_18122c880(param_1 + 5,&local_128,&local_1d8);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            puVar17 = (uint *)(local_1d8 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            FUN_181211fd0(&local_1d0,0);
            FUN_181246550(&local_1b8,"CueLabel",&local_1d0);
            puVar17 = (uint *)(local_1d0 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            FUN_181211fd0(&local_1c0,uVar5);
            local_1c8 = local_1b8;
            puVar17 = (uint *)(local_1b8 + -0x10);
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              *puVar17 = *puVar17 + 1;
              UNLOCK();
            }
            uVar14 = FUN_1812465e0(&local_120,&local_1c8,"Identifier");
            FUN_18122c880(param_1 + 5,uVar14,&local_1c0);
            puVar18 = (uint *)(local_120 + -0x10);
            if ((*puVar18 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar18;
              *puVar18 = *puVar18 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar18);
              }
            }
            puVar18 = (uint *)(local_1c0 + -0x10);
            if ((*puVar18 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar18;
              *puVar18 = *puVar18 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar18);
              }
            }
            if (local_148 != (void *)0x0) {
              iVar7 = (int)local_140;
              if (iVar7 < 0) {
                FUN_18049c9e0(&local_228);
                goto LAB_18053a515;
              }
              if (0 < iVar7) {
                FUN_18124a8a0(&local_228,local_148,(longlong)iVar7 + (longlong)local_148);
                goto LAB_18053a515;
              }
            }
            local_228 = &DAT_1821dbf98;
LAB_18053a515:
            local_1b0 = local_1b8;
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              *puVar17 = *puVar17 + 1;
              UNLOCK();
            }
            uVar14 = FUN_1812465e0(&local_118,&local_1b0,&DAT_1824acc88);
            FUN_18122c880(param_1 + 5,uVar14,&local_228);
            puVar18 = (uint *)(local_118 + -0x10);
            if ((*puVar18 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar18;
              *puVar18 = *puVar18 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar18);
              }
            }
            puVar18 = (uint *)(local_228 + -0x10);
            if ((*puVar18 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar18;
              *puVar18 = *puVar18 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar18);
              }
            }
            if ((*puVar17 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar17;
              *puVar17 = *puVar17 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar17);
              }
            }
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar16;
              *puVar16 = *puVar16 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar16);
              }
            }
                    /* WARNING: Subroutine does not return */
            free(local_148);
          }
        }
        else if (iVar7 == 0x544d4f43) {
          sVar4 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
          FUN_18049c4e0(&local_1a0,"NumCueNotes");
          FUN_181211fd0(&local_1a8,sVar4);
          FUN_18122c880(puVar1,&local_1a0,&local_1a8);
          puVar16 = (uint *)(local_1a8 + -0x10);
          if ((*puVar16 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar16;
            *puVar16 = *puVar16 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar16);
            }
          }
          puVar16 = (uint *)(local_1a0 + -0x10);
          if ((*puVar16 & 0x30000000) == 0) {
            LOCK();
            uVar8 = *puVar16;
            *puVar16 = *puVar16 - 1;
            UNLOCK();
            if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar16);
            }
          }
          cVar20 = local_248;
          if (sVar4 != 0) {
            uVar9 = (**(code **)(*(longlong *)param_1[10] + 0x48))();
            uVar5 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
            uVar6 = (**(code **)(*(longlong *)param_1[10] + 0x38))();
            local_138 = (void *)0x0;
            local_130 = 0;
            (**(code **)(*(longlong *)param_1[10] + 0xa0))
                      ((longlong *)param_1[10],&local_138,(uVar6 & 1) + (uint)uVar6);
            FUN_181211fd0(&local_198,0);
            FUN_181246550(&local_220,"CueNote",&local_198);
            puVar16 = (uint *)(local_198 + -0x10);
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar16;
              *puVar16 = *puVar16 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar16);
              }
            }
            FUN_181211fd0(&local_188,uVar9);
            lVar10 = local_220;
            local_190 = local_220;
            if ((*(uint *)(local_220 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_220 + -0x10) = *(int *)(local_220 + -0x10) + 1;
              UNLOCK();
            }
            uVar14 = FUN_1812465e0(&local_110,&local_190,"TimeStamp");
            FUN_18122c880(puVar1,uVar14,&local_188);
            puVar16 = (uint *)(local_110 + -0x10);
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar16;
              *puVar16 = *puVar16 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar16);
              }
            }
            puVar16 = (uint *)(local_188 + -0x10);
            if ((*puVar16 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar16;
              *puVar16 = *puVar16 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar16);
              }
            }
            FUN_181211fd0(&local_178,uVar5);
            local_180 = local_220;
            if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
              UNLOCK();
            }
            uVar14 = FUN_1812465e0(&local_108,&local_180,"Identifier");
            FUN_18122c880(puVar1,uVar14,&local_178);
            FUN_180495200(local_108);
            FUN_180495200(local_178);
            uVar14 = FUN_18123a690(&local_138,&local_f8);
            local_170 = local_220;
            if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
              UNLOCK();
            }
            uVar15 = FUN_1812465e0(&local_100,&local_170,&DAT_1824acc88);
            FUN_18122c880(puVar1,uVar15,uVar14);
            FUN_180495200(local_100);
            FUN_180495200(local_f8);
            FUN_180495200(local_220);
                    /* WARNING: Subroutine does not return */
            free(local_138);
          }
        }
        else {
          if (iVar7 == 0x54534e49) {
                    /* WARNING: Subroutine does not return */
            free((void *)0x0);
          }
          if (iVar7 == 0x63736162) {
            uVar14 = FUN_180539500(local_a8,param_1[10]);
            FUN_1805397a0(uVar14,puVar1);
          }
          else if (iVar7 == 0x65746163) {
            FUN_18049c4e0(&local_168,"apple tag");
            uVar14 = FUN_1813ad2e0(&local_f0,param_1[10],uVar19);
            FUN_18122c880(puVar1,&local_168,uVar14);
            FUN_180495200(local_f0);
            FUN_180495200(local_168);
          }
          else if ((((cVar20 != '\0') && (local_247 != '\0')) && (local_246 != '\0')) ||
                  ((lVar12 = (**(code **)(*(longlong *)param_1[10] + 0xa8))(), lVar10 < lVar12 ||
                   (cVar3 = (**(code **)(*(longlong *)param_1[10] + 0x10))(), cVar3 != '\0'))))
          break;
        }
        (**(code **)(*(longlong *)param_1[10] + 0xb0))
                  ((longlong *)param_1[10],(ulonglong)((uint)lVar10 & 1) + lVar10);
        lVar10 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
        lVar12 = lVar10 - local_e8;
        bVar21 = SBORROW8(lVar10,local_e8);
      }
    }
  }
  if (0 < *(int *)((longlong)param_1 + 0x34)) {
    FUN_18049c4e0(&local_158,&DAT_1824acc4c);
    FUN_18049c4e0(&local_160,"MetaDataSource");
    FUN_18122c880(puVar1,&local_160,&local_158);
    FUN_180495200(local_160);
    FUN_180495200(local_158);
  }
}



############ FUN_ 18123a690 size=84 ############

undefined8 * FUN_18123a690(longlong *param_1,undefined8 *param_2)

{
  int iVar1;
  longlong lVar2;
  
  iVar1 = (int)param_1[1];
  lVar2 = *param_1;
  if (lVar2 != 0) {
    if (iVar1 < 0) {
      FUN_18049c9e0(param_2);
      return param_2;
    }
    if (0 < iVar1) {
      FUN_18124a8a0(param_2,lVar2,lVar2 + iVar1);
      return param_2;
    }
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 180541f20 size=5019 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_180541f20(undefined8 *param_1,undefined8 param_2)

{
  longlong ***ppplVar1;
  char cVar2;
  short sVar3;
  short sVar4;
  int iVar5;
  uint uVar6;
  undefined4 uVar7;
  int iVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  undefined8 uVar14;
  ulonglong uVar15;
  undefined8 *puVar16;
  undefined8 uVar17;
  void *pvVar18;
  ulonglong uVar19;
  uint uVar20;
  uint *puVar21;
  longlong ***_Memory;
  longlong ***ppplVar22;
  undefined1 *puVar23;
  undefined8 *puVar24;
  undefined1 auStack_338 [32];
  undefined8 *local_318;
  longlong local_310;
  ulonglong local_308;
  longlong local_300;
  int local_2f8;
  int local_2f4;
  longlong ***local_2f0;
  undefined2 local_2e8;
  undefined2 local_2e6;
  undefined2 local_2e4;
  int local_2e0;
  undefined2 local_2dc;
  undefined8 *local_2d8;
  uint local_2d0;
  longlong ***local_2c8;
  undefined1 *local_2c0;
  undefined1 *local_2b8;
  ulonglong local_2b0;
  longlong local_2a8;
  longlong local_2a0;
  longlong local_298;
  longlong local_290;
  longlong local_288;
  longlong local_280;
  longlong local_278;
  longlong local_270;
  longlong local_268;
  longlong local_260;
  longlong local_258;
  undefined8 local_250;
  longlong local_248;
  undefined8 local_240;
  longlong local_238;
  undefined8 local_230;
  longlong local_228;
  longlong local_220;
  longlong ***local_218;
  undefined8 local_210;
  undefined8 local_208;
  undefined8 local_200;
  undefined8 local_1f8;
  undefined8 local_1f0;
  undefined8 local_1e8;
  undefined8 ****local_1e0;
  void *local_1d8;
  undefined8 local_1d0;
  void *local_1c8;
  undefined8 local_1c0;
  void *local_1b8;
  undefined8 local_1b0;
  void *local_1a8;
  undefined8 local_1a0;
  longlong local_198;
  longlong local_190;
  longlong local_188;
  longlong local_180;
  longlong local_178;
  undefined8 local_170;
  undefined8 local_168;
  undefined8 local_160;
  undefined8 local_158;
  longlong local_150;
  longlong local_148;
  longlong local_140;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 local_128;
  undefined8 local_120;
  undefined8 local_118 [2];
  longlong local_108 [6];
  undefined8 local_d8;
  undefined8 *local_d0;
  undefined8 local_c8;
  void *local_a0 [7];
  undefined1 local_68 [16];
  undefined1 local_58 [31];
  undefined1 local_39;
  ulonglong local_38 [2];
  
  local_d8 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_338;
  local_318 = param_1;
  local_d0 = param_1;
  FUN_18049c4e0(&local_150,"WAV file");
  *param_1 = juce::AudioFormatReader::vftable;
  uVar19 = 0;
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x24) = 0;
  puVar24 = param_1 + 5;
  *puVar24 = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = 1;
  param_1[10] = param_2;
  param_1[0xb] = local_150;
  puVar21 = (uint *)(local_150 + -0x10);
  if ((*puVar21 & 0x30000000) == 0) {
    LOCK();
    *puVar21 = *puVar21 + 1;
    UNLOCK();
  }
  local_2d8 = puVar24;
  if ((*puVar21 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar21;
    *puVar21 = *puVar21 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar21);
    }
  }
  *param_1 = juce::WavAudioFormatReader::vftable;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined2 *)((longlong)param_1 + 0x84) = 0;
  param_1[0x11] = 0;
  param_1[0x14] = 4;
  *(undefined4 *)(param_1 + 0x15) = 0xffffffff;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  local_2b0 = 0;
  local_2f4 = 0;
  local_2f8 = 0;
  local_2e0 = 0;
  local_130 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
  iVar5 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
  if (iVar5 == 0x34364652) {
    (**(code **)(*(longlong *)param_1[10] + 0xb8))((longlong *)param_1[10],4);
    *(undefined1 *)((longlong)param_1 + 0x84) = 1;
  }
  else {
    if (iVar5 != 0x46464952) {
    }
    uVar6 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
    lVar11 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
    uVar19 = (ulonglong)uVar6 + lVar11;
    local_2b0 = uVar19;
  }
  lVar11 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
  iVar5 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
  if (iVar5 == 0x45564157) {
    if ((*(char *)((longlong)param_1 + 0x84) != '\0') &&
       (iVar5 = (**(code **)(*(longlong *)param_1[10] + 0x40))(), iVar5 == 0x34367364)) {
      uVar6 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
      if (uVar6 < 0x1c) {
      }
      lVar12 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
      lVar13 = (**(code **)(*(longlong *)param_1[10] + 0x50))();
      uVar19 = lVar11 + lVar13;
      local_2b0 = uVar19;
      uVar14 = (**(code **)(*(longlong *)param_1[10] + 0x50))();
      param_1[0xf] = uVar14;
      (**(code **)(*(longlong *)param_1[10] + 0xb0))
                ((longlong *)param_1[10],(ulonglong)(uVar6 & 1) + lVar12 + (ulonglong)uVar6);
    }
    uVar15 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
    if (uVar15 < uVar19) {
      do {
        cVar2 = (**(code **)(*(longlong *)param_1[10] + 0x10))();
        if (cVar2 != '\0') break;
        iVar5 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
        uVar6 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
        uVar19 = (ulonglong)uVar6;
        lVar11 = (**(code **)(*(longlong *)local_318[10] + 0xa8))();
        param_1 = local_318;
        local_310 = (ulonglong)(uVar6 & 1) + lVar11 + (ulonglong)uVar6;
        if (iVar5 == 0x20746d66) {
          sVar3 = (**(code **)(*(longlong *)local_318[10] + 0x30))();
          sVar4 = (**(code **)(*(longlong *)param_1[10] + 0x30))();
          *(int *)(param_1 + 4) = (int)sVar4;
          iVar5 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
          param_1[1] = (double)iVar5;
          iVar5 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
          (**(code **)(*(longlong *)local_318[10] + 0xb8))((longlong *)local_318[10],2);
          sVar4 = (**(code **)(*(longlong *)local_318[10] + 0x30))();
          puVar24 = local_318;
          uVar20 = (uint)sVar4;
          *(uint *)(local_318 + 2) = uVar20;
          if (uVar20 < 0x41) {
            *(uint *)(local_318 + 0x10) = *(int *)(local_318 + 4) * uVar20 >> 3;
          }
          else {
            *(int *)(local_318 + 0x10) = iVar5 / (int)(double)local_318[1];
            *(uint *)(local_318 + 2) =
                 (uint)((iVar5 / (int)(double)local_318[1]) * 8) / *(uint *)(local_318 + 4);
          }
          param_1 = local_318;
          if (sVar3 == 3) {
            *(undefined1 *)((longlong)local_318 + 0x24) = 1;
          }
          else if (sVar3 == -2) {
            if (0x27 < uVar6) {
              (**(code **)(*(longlong *)local_318[10] + 0xb8))((longlong *)local_318[10],4);
              uVar7 = (**(code **)(*(longlong *)puVar24[10] + 0x40))();
              FUN_18049c4e0(&local_2a0,"ChannelMask");
              lVar11 = FUN_181233e10(local_38,uVar7);
              FUN_180495150(&local_2a8,lVar11,&local_39 + -lVar11);
              FUN_18122c880(puVar24 + 5,&local_2a0,&local_2a8);
              puVar21 = (uint *)(local_2a8 + -0x10);
              if ((*puVar21 & 0x30000000) == 0) {
                LOCK();
                uVar6 = *puVar21;
                *puVar21 = *puVar21 - 1;
                UNLOCK();
                if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar21);
                }
              }
              puVar21 = (uint *)(local_2a0 + -0x10);
              if ((*puVar21 & 0x30000000) == 0) {
                LOCK();
                uVar6 = *puVar21;
                *puVar21 = *puVar21 - 1;
                UNLOCK();
                if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar21);
                }
              }
              puVar16 = (undefined8 *)FUN_180543b30(local_a0,uVar7,*(undefined4 *)(puVar24 + 4));
              local_c8 = puVar24[0x11];
              puVar24[0x11] = *puVar16;
              *puVar16 = local_c8;
              uVar14 = puVar16[2];
              puVar24[0x12] = puVar16[1];
              puVar24[0x13] = uVar14;
              puVar24[0x14] = puVar16[3];
              *(undefined4 *)(puVar24 + 0x15) = *(undefined4 *)(puVar16 + 4);
              *(undefined1 *)((longlong)puVar24 + 0xac) = *(undefined1 *)((longlong)puVar16 + 0x24);
                    /* WARNING: Subroutine does not return */
              free(local_a0[0]);
            }
            *(undefined4 *)(local_318 + 0x10) = 0;
          }
          else {
            if (((ushort)(sVar3 + 0x98b1U) < 3) || ((ushort)(sVar3 + 0x9891U) < 3)) {
              *(undefined1 *)((longlong)local_318 + 0x85) = 1;
              local_318[1] = 0;
              (**(code **)(*(longlong *)local_318[10] + 0xb0))((longlong *)local_318[10],local_130);
            }
            if (sVar3 != 1) {
              *(undefined4 *)(local_318 + 0x10) = 0;
            }
          }
        }
        else if (iVar5 == 0x61746164) {
          if (*(char *)((longlong)local_318 + 0x84) == '\0') {
            local_318[0xf] = uVar19;
          }
          else if (0 < (longlong)local_318[0xf]) {
            lVar11 = local_318[0xf];
            lVar12 = (**(code **)(*(longlong *)local_318[10] + 0xa8))();
            local_310 = (ulonglong)((uint)lVar11 & 1) + lVar12 + lVar11;
          }
          uVar14 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
          param_1[0xe] = uVar14;
          if (*(int *)(param_1 + 0x10) < 1) {
            param_1[3] = 0;
          }
          else {
            param_1[3] = (longlong)param_1[0xf] / (longlong)*(int *)(param_1 + 0x10);
          }
        }
        else {
          if (iVar5 == 0x74786562) {
            uVar14 = (**(code **)(*(longlong *)local_318[10] + 0xa8))();
            param_1[0xc] = uVar14;
            param_1[0xd] = uVar19;
                    /* WARNING: Subroutine does not return */
            free((void *)0x0);
          }
          if (iVar5 == 0x6c706d73) {
                    /* WARNING: Subroutine does not return */
            free((void *)0x0);
          }
          if ((iVar5 == 0x74736e69) || (iVar5 == 0x54534e49)) {
                    /* WARNING: Subroutine does not return */
            free((void *)0x0);
          }
          if (iVar5 == 0x20657563) {
                    /* WARNING: Subroutine does not return */
            free((void *)0x0);
          }
          if (iVar5 == 0x6c6d7861) {
            local_1d8 = (void *)0x0;
            local_1d0 = 0;
            (**(code **)(*(longlong *)local_318[10] + 0xa0))
                      ((longlong *)local_318[10],&local_1d8,uVar19);
            if (local_1d8 != (void *)0x0) {
              iVar5 = (int)local_1d0;
              if (iVar5 < 0) {
                FUN_18049c9e0(&local_2c0);
                goto LAB_1805427be;
              }
              if (0 < iVar5) {
                FUN_18124a8a0(&local_2c0,local_1d8,(longlong)iVar5 + (longlong)local_1d8);
                goto LAB_1805427be;
              }
            }
            local_2c0 = &DAT_1821dbf98;
LAB_1805427be:
            FUN_18136dab0(param_1 + 5,&local_2c0);
            puVar21 = (uint *)(local_2c0 + -0x10);
            if ((*puVar21 & 0x30000000) == 0) {
              LOCK();
              uVar6 = *puVar21;
              *puVar21 = *puVar21 - 1;
              UNLOCK();
              if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar21);
              }
            }
                    /* WARNING: Subroutine does not return */
            free(local_1d8);
          }
          if (iVar5 == 0x5453494c) {
            iVar5 = (**(code **)(*(longlong *)local_318[10] + 0x40))();
            if ((iVar5 == 0x6f666e69) || (iVar5 == 0x4f464e49)) {
              FUN_18136e1e0(param_1 + 5,param_1[10],local_310);
            }
            else if ((iVar5 == 0x6c746461) &&
                    (lVar11 = (**(code **)(*(longlong *)param_1[10] + 0xa8))(), lVar11 < local_310))
            {
              do {
                iVar8 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
                uVar6 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
                local_2d0 = uVar6;
                local_140 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
                iVar5 = local_2e0;
                local_140 = local_140 + (ulonglong)((uVar6 & 1) + uVar6);
                if ((iVar8 == 0x6c62616c) || (iVar8 == 0x65746f6e)) {
                  ppplVar22 = (longlong ***)&DAT_1821dbf98;
                  local_2f0 = (longlong ***)&DAT_1821dbf98;
                  if (iVar8 == 0x6c62616c) {
                    lVar11 = -1;
                    do {
                      lVar12 = lVar11;
                      lVar11 = lVar12 + 1;
                    } while ((&DAT_1821dbf99)[lVar12] != '\0');
                    FUN_1812342b0(&local_2f0,lVar12 + 9);
                    ppplVar22 = local_2f0;
                    puVar23 = (undefined1 *)((longlong)(int)(lVar12 + 1) + (longlong)local_2f0);
                    memcpy(puVar23,"CueLabel",8);
                    puVar23[8] = 0;
                    pvVar18 = (void *)FUN_181233e10(local_68,local_2f8);
                    uVar6 = (int)local_68 - (int)pvVar18;
                    local_308 = (ulonglong)uVar6;
                    if (0 < (int)uVar6) {
                      lVar11 = -1;
                      do {
                        lVar11 = lVar11 + 1;
                      } while (*(char *)((longlong)ppplVar22 + lVar11) != '\0');
                      FUN_1812342b0(&local_2f0,(int)uVar6 + lVar11);
                      ppplVar22 = local_2f0;
                      puVar23 = (undefined1 *)((longlong)(int)lVar11 + (longlong)local_2f0);
                      memcpy(puVar23,pvVar18,(longlong)(int)local_308);
                      puVar23[(int)local_308] = 0;
                    }
                    local_2f8 = local_2f8 + 1;
                    param_1 = local_318;
                  }
                  else if (iVar8 == 0x65746f6e) {
                    lVar11 = -1;
                    do {
                      lVar12 = lVar11;
                      lVar11 = lVar12 + 1;
                    } while ((&DAT_1821dbf99)[lVar12] != '\0');
                    FUN_1812342b0(&local_2f0,lVar12 + 8);
                    ppplVar22 = local_2f0;
                    puVar23 = (undefined1 *)((longlong)(int)(lVar12 + 1) + (longlong)local_2f0);
                    memcpy(puVar23,"CueNote",7);
                    puVar23[7] = 0;
                    pvVar18 = (void *)FUN_181233e10(local_58,local_2f4);
                    uVar6 = (int)local_58 - (int)pvVar18;
                    local_308 = (ulonglong)uVar6;
                    if (0 < (int)uVar6) {
                      lVar11 = -1;
                      do {
                        lVar11 = lVar11 + 1;
                      } while (*(char *)((longlong)ppplVar22 + lVar11) != '\0');
                      FUN_1812342b0(&local_2f0,(int)uVar6 + lVar11);
                      ppplVar22 = local_2f0;
                      puVar23 = (undefined1 *)((longlong)(int)lVar11 + (longlong)local_2f0);
                      memcpy(puVar23,pvVar18,(longlong)(int)local_308);
                      puVar23[(int)local_308] = 0;
                    }
                    local_2f4 = local_2f4 + 1;
                    param_1 = local_318;
                  }
                  uVar7 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
                  local_1c8 = (void *)0x0;
                  local_1c0 = 0;
                  (**(code **)(*(longlong *)param_1[10] + 0xa0))
                            ((longlong *)param_1[10],&local_1c8,(longlong)(int)(local_2d0 - 4));
                  FUN_181211fd0(&local_220,uVar7);
                  ppplVar1 = ppplVar22 + -2;
                  if (((ulonglong)*ppplVar1 & 0x30000000) == 0) {
                    LOCK();
                    *(uint *)ppplVar1 = *(uint *)ppplVar1 + 1;
                    UNLOCK();
                  }
                  local_1e0 = &local_2c8;
                  local_2c8 = ppplVar22;
                  FUN_181232e20(&local_2c8,"Identifier","");
                  local_1e0 = (undefined8 ****)local_2c8;
                  ppplVar22 = local_2c8 + -2;
                  if (((ulonglong)*ppplVar22 & 0x30000000) == 0) {
                    LOCK();
                    *(uint *)ppplVar22 = *(uint *)ppplVar22 + 1;
                    UNLOCK();
                  }
                  _Memory = local_2c8 + -2;
                  if (((ulonglong)*_Memory & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *(uint *)_Memory;
                    *(uint *)_Memory = *(uint *)_Memory - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(_Memory);
                    }
                  }
                  FUN_18122c880(param_1 + 5,&local_1e0,&local_220);
                  if (((ulonglong)*ppplVar22 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *(uint *)ppplVar22;
                    *(uint *)ppplVar22 = *(uint *)ppplVar22 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(ppplVar22);
                    }
                  }
                  puVar21 = (uint *)(local_220 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  if (local_1c8 != (void *)0x0) {
                    iVar5 = (int)local_1c0;
                    if (iVar5 < 0) {
                      FUN_18049c9e0(&local_2b8);
                      goto LAB_180543133;
                    }
                    if (0 < iVar5) {
                      FUN_18124a8a0(&local_2b8,local_1c8,(longlong)iVar5 + (longlong)local_1c8);
                      goto LAB_180543133;
                    }
                  }
                  local_2b8 = &DAT_1821dbf98;
LAB_180543133:
                  local_218 = local_2f0;
                  if (((ulonglong)*ppplVar1 & 0x30000000) == 0) {
                    LOCK();
                    *(uint *)ppplVar1 = *(uint *)ppplVar1 + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_148,&local_218,&DAT_1824acc88);
                  FUN_18122c880(param_1 + 5,uVar14,&local_2b8);
                  puVar21 = (uint *)(local_148 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  puVar21 = (uint *)(local_2b8 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                    /* WARNING: Subroutine does not return */
                  free(local_1c8);
                }
                if (iVar8 == 0x7478746c) {
                  uVar14 = FUN_18124a960(local_108,local_2e0);
                  FUN_181246550(&local_300,"CueRegion",uVar14);
                  local_2e0 = iVar5 + 1;
                  puVar21 = (uint *)(local_108[0] + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  uVar7 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
                  uVar9 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
                  uVar10 = (**(code **)(*(longlong *)param_1[10] + 0x40))();
                  local_2dc = (**(code **)(*(longlong *)local_318[10] + 0x30))();
                  local_2e8 = (**(code **)(*(longlong *)local_318[10] + 0x30))();
                  local_2e6 = (**(code **)(*(longlong *)local_318[10] + 0x30))();
                  local_2e4 = (**(code **)(*(longlong *)local_318[10] + 0x30))();
                  local_1b8 = (void *)0x0;
                  local_1b0 = 0;
                  (**(code **)(*(longlong *)local_318[10] + 0xa0))
                            ((longlong *)local_318[10],&local_1b8,(longlong)(int)(local_2d0 - 0x14))
                  ;
                  FUN_181211fd0(&local_290,uVar7);
                  lVar11 = local_300;
                  local_298 = local_300;
                  if ((*(uint *)(local_300 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(local_300 + -0x10) = *(int *)(local_300 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_198,&local_298,"Identifier");
                  FUN_18122c880(local_2d8,uVar14,&local_290);
                  puVar21 = (uint *)(local_198 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  puVar21 = (uint *)(local_290 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  FUN_181211fd0(&local_280,uVar9);
                  local_288 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_190,&local_288,"SampleLength");
                  puVar24 = local_2d8;
                  FUN_18122c880(local_2d8,uVar14,&local_280);
                  puVar21 = (uint *)(local_190 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  puVar21 = (uint *)(local_280 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  FUN_181211fd0(&local_270,uVar10);
                  local_278 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_188,&local_278,"Purpose");
                  FUN_18122c880(puVar24,uVar14,&local_270);
                  puVar21 = (uint *)(local_188 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  puVar21 = (uint *)(local_270 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  FUN_181211fd0(&local_260,local_2dc);
                  local_268 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_180,&local_268,"Country");
                  FUN_18122c880(puVar24,uVar14,&local_260);
                  puVar21 = (uint *)(local_180 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  puVar21 = (uint *)(local_260 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  FUN_181211fd0(&local_250,local_2e8);
                  local_258 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_178,&local_258,"Language");
                  FUN_18122c880(puVar24,uVar14,&local_250);
                  puVar21 = (uint *)(local_178 + -0x10);
                  if ((*puVar21 & 0x30000000) == 0) {
                    LOCK();
                    uVar6 = *puVar21;
                    *puVar21 = *puVar21 - 1;
                    UNLOCK();
                    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar21);
                    }
                  }
                  FUN_180495200(local_250);
                  FUN_181211fd0(&local_240,local_2e6);
                  local_248 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_170,&local_248,"Dialect");
                  FUN_18122c880(puVar24,uVar14,&local_240);
                  FUN_180495200(local_170);
                  FUN_180495200(local_240);
                  FUN_181211fd0(&local_230,local_2e4);
                  local_238 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar14 = FUN_1812465e0(&local_168,&local_238,"CodePage");
                  FUN_18122c880(puVar24,uVar14,&local_230);
                  FUN_180495200(local_168);
                  FUN_180495200(local_230);
                  uVar14 = FUN_18123a690(&local_1b8,&local_158);
                  local_228 = local_300;
                  if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
                    LOCK();
                    *(int *)(lVar11 + -0x10) = *(int *)(lVar11 + -0x10) + 1;
                    UNLOCK();
                  }
                  uVar17 = FUN_1812465e0(&local_160,&local_228,&DAT_1824acc88);
                  FUN_18122c880(local_2d8,uVar17,uVar14);
                  FUN_180495200(local_160);
                  FUN_180495200(local_158);
                    /* WARNING: Subroutine does not return */
                  free(local_1b8);
                }
                (**(code **)(*(longlong *)param_1[10] + 0xb0))((longlong *)param_1[10],local_140);
                lVar11 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
              } while (lVar11 < local_310);
            }
          }
          else if (iVar5 == 0x64696361) {
            local_108[1] = 0;
            local_108[2] = 0;
            local_108[3] = 0;
            uVar20 = 0x18;
            if (uVar19 < 0x18) {
              uVar20 = uVar6;
            }
            (**(code **)(*(longlong *)local_318[10] + 0x18))
                      ((longlong *)local_318[10],local_108 + 1,uVar20);
            FUN_180541960(local_108 + 1,param_1 + 5);
          }
          else {
            if (iVar5 == 0x6e6b7254) {
              local_1a8 = (void *)0x0;
              local_1a0 = 0;
              (**(code **)(*(longlong *)local_318[10] + 0xa0))
                        ((longlong *)local_318[10],&local_1a8,uVar19);
              FUN_18049c4e0(&local_210,"tracktion loop info");
              uVar14 = FUN_18123a690(&local_1a8,&local_138);
              FUN_18122c880(param_1 + 5,&local_210,uVar14);
              FUN_180495200(local_138);
              FUN_180495200(local_210);
                    /* WARNING: Subroutine does not return */
              free(local_1a8);
            }
            lVar11 = (**(code **)(*(longlong *)local_318[10] + 0xa8))();
            if (local_310 <= lVar11) break;
          }
        }
        (**(code **)(*(longlong *)param_1[10] + 0xb0))((longlong *)param_1[10],local_310);
        uVar19 = (**(code **)(*(longlong *)param_1[10] + 0xa8))();
      } while (uVar19 < local_2b0);
      iVar5 = local_2f8;
      if (0 < local_2f8) {
        FUN_18049c4e0(&local_208,"NumCueLabels");
        uVar14 = FUN_18124a960(&local_128,iVar5);
        FUN_18122c880(param_1 + 5,&local_208,uVar14);
        FUN_180495200(local_128);
        FUN_180495200(local_208);
      }
      iVar5 = local_2f4;
      puVar24 = param_1 + 5;
      if (0 < local_2f4) {
        FUN_18049c4e0(&local_200,"NumCueNotes");
        uVar14 = FUN_18124a960(&local_120,iVar5);
        FUN_18122c880(puVar24,&local_200,uVar14);
        FUN_180495200(local_120);
        FUN_180495200(local_200);
      }
      iVar5 = local_2e0;
      if (0 < local_2e0) {
        FUN_18049c4e0(&local_1f8,"NumCueRegions");
        uVar14 = FUN_18124a960(local_118,iVar5);
        FUN_18122c880(puVar24,&local_1f8,uVar14);
        FUN_180495200(local_118[0]);
        FUN_180495200(local_1f8);
      }
    }
  }
  if (0 < *(int *)((longlong)puVar24 + 0xc)) {
    FUN_18049c4e0(&local_1e8,&DAT_1824acfe4);
    FUN_18049c4e0(&local_1f0,"MetaDataSource");
    FUN_18122c880(puVar24,&local_1f0,&local_1e8);
    FUN_180495200(local_1f0);
    FUN_180495200(local_1e8);
  }
}



############ FUN_ 18136dab0 size=662 ############

void FUN_18136dab0(undefined8 param_1,longlong *param_2)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  int iVar5;
  longlong lVar6;
  undefined8 *puVar7;
  uint *puVar8;
  byte *pbVar9;
  void *_Memory;
  int iVar10;
  char *local_res10;
  void *local_res18;
  longlong local_res20;
  longlong local_98 [3];
  undefined8 local_80;
  undefined2 local_78;
  undefined1 *local_70;
  undefined1 *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined2 local_50;
  undefined8 local_48;
  
  local_98[1] = 0xfffffffffffffffe;
  local_98[2] = *param_2;
  if ((*(uint *)(local_98[2] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_98[2] + -0x10) = *(int *)(local_98[2] + -0x10) + 1;
    UNLOCK();
  }
  iVar10 = 0;
  local_80 = 0;
  local_78 = 0;
  local_70 = &DAT_1821dbf98;
  local_68 = &DAT_1821dbf98;
  local_60 = 0;
  local_58 = 0;
  local_50 = 0x100;
  local_48 = 0;
  FUN_181248430(local_98 + 2,&local_res18);
  FUN_181248660(local_98 + 2);
  _Memory = local_res18;
  if ((((local_res18 == (void *)0x0) ||
       (iVar5 = FUN_18049bb30(*(undefined8 *)((longlong)local_res18 + 0x18),"ebucore:ebuCoreMain"),
       iVar5 != 0)) || (lVar6 = FUN_181246a60(_Memory,"ebucore:coreMetadata"), lVar6 == 0)) ||
     ((lVar6 = FUN_181246a60(lVar6,"ebucore:identifier"), lVar6 == 0 ||
      (lVar6 = FUN_181246a60(lVar6,"dc:identifier"), lVar6 == 0)))) goto LAB_18136dd1b;
  puVar7 = (undefined8 *)FUN_181246700(lVar6,local_98);
  pbVar9 = &DAT_1821e483c;
  iVar5 = FUN_18049d2f0(*puVar7,&DAT_1821e483c);
  if (-1 < iVar5) {
LAB_18136dbd4:
    do {
      bVar2 = *pbVar9;
      pbVar9 = pbVar9 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar9 & 0xc0) == 0x80) {
          do {
            pbVar9 = pbVar9 + 1;
          } while ((*pbVar9 & 0xc0) == 0x80);
          iVar10 = iVar10 + 1;
          goto LAB_18136dbd4;
        }
      }
      else if (bVar2 == 0) goto LAB_18136dc0a;
      iVar10 = iVar10 + 1;
    } while( true );
  }
LAB_18136dbcb:
  local_res10 = "";
  goto LAB_18136dc7d;
LAB_18136dc0a:
  iVar10 = iVar10 + iVar5;
  if (iVar10 < 1) {
    local_res10 = (char *)*puVar7;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar9 = (byte *)*puVar7;
    while (iVar10 = iVar10 + -1, -1 < iVar10) {
      bVar2 = *pbVar9;
      if (bVar2 == 0) goto LAB_18136dbcb;
      pbVar9 = pbVar9 + 1;
      if ((char)bVar2 < '\0') {
        bVar4 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar4))) {
          pbVar9 = pbVar9 + 1;
          bVar4 = bVar4 >> 1;
          bVar3 = bVar2 & bVar4;
        }
      }
    }
    FUN_18049c9e0(&local_res10);
  }
LAB_18136dc7d:
  puVar8 = (uint *)(local_98[0] + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (*local_res10 != '\0') {
    FUN_18049c4e0(&local_res20,&DAT_1822467e4);
    FUN_18122c880(param_1,&local_res20,&local_res10);
    puVar8 = (uint *)(local_res20 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  puVar8 = (uint *)(local_res10 + -0x10);
  _Memory = local_res18;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
LAB_18136dd1b:
  if (_Memory != (void *)0x0) {
    FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 18122cad0 size=812 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18122cad0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined *param_4,
                  undefined *param_5)

{
  uint *_Memory;
  longlong lVar1;
  int iVar2;
  longlong *plVar3;
  uint uVar4;
  uint *puVar5;
  undefined *puVar6;
  uint uVar7;
  undefined *puVar8;
  char *pcVar9;
  char *pcVar10;
  longlong lVar11;
  undefined1 auStack_e8 [32];
  longlong local_c8;
  longlong local_c0;
  int local_b8;
  longlong local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  undefined1 local_88 [8];
  longlong local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong *local_68;
  longlong *local_60;
  char acStack_3b [3];
  ulonglong local_38;
  
  local_78 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_e8;
  puVar8 = &DAT_1821da99c;
  if (param_4 != (undefined *)0x0) {
    puVar8 = param_4;
  }
  puVar6 = &DAT_1821da974;
  if (param_5 != (undefined *)0x0) {
    puVar6 = param_5;
  }
  local_b8 = 0;
  if (0 < *(int *)((longlong)param_1 + 0xc) + -1) {
    lVar11 = 0;
    do {
      lVar1 = *param_1;
      local_70 = *(undefined8 *)(lVar1 + lVar11);
      local_b8 = local_b8 + 1;
      iVar2 = FUN_1812498b0(param_1,local_70,0,local_b8);
      if (-1 < iVar2) {
        local_80 = *(longlong *)(lVar1 + lVar11);
        _Memory = (uint *)(local_80 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          *_Memory = *_Memory + 1;
          UNLOCK();
        }
        uVar7 = 1;
        local_68 = &local_c8;
        local_60 = &local_c0;
        do {
          FUN_18049c9e0(&local_90,puVar6);
          uVar7 = uVar7 + 1;
          pcVar9 = acStack_3b + 2;
          acStack_3b[2] = 0;
          uVar4 = uVar7;
          if ((int)uVar7 < 0) {
            uVar4 = -uVar7;
            do {
              pcVar10 = pcVar9;
              pcVar9 = pcVar10 + -1;
              *pcVar9 = (char)uVar4 + (char)((ulonglong)uVar4 / 10) * -10 + '0';
              uVar4 = (uint)((ulonglong)uVar4 / 10);
            } while (uVar4 != 0);
            pcVar9 = pcVar10 + -2;
            *pcVar9 = '-';
          }
          else {
            do {
              pcVar9 = pcVar9 + -1;
              *pcVar9 = (char)uVar4 + (char)((ulonglong)uVar4 / 10) * -10 + '0';
              uVar4 = (uint)((ulonglong)uVar4 / 10);
            } while (uVar4 != 0);
          }
          FUN_180495150(&local_98,pcVar9,acStack_3b + (2 - (longlong)pcVar9));
          FUN_18049c9e0(&local_a0,puVar8);
          plVar3 = (longlong *)FUN_181249970(param_1,iVar2);
          local_c8 = *plVar3;
          if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
            UNLOCK();
          }
          plVar3 = (longlong *)FUN_181232d30(&local_c8,&local_a0);
          local_c0 = *plVar3;
          if ((*(uint *)(local_c0 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_c0 + -0x10) = *(int *)(local_c0 + -0x10) + 1;
            UNLOCK();
          }
          puVar5 = (uint *)(local_c8 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          plVar3 = (longlong *)FUN_181232d30(&local_c0,&local_98);
          local_a8 = *plVar3;
          if ((*(uint *)(local_a8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_a8 + -0x10) = *(int *)(local_a8 + -0x10) + 1;
            UNLOCK();
          }
          puVar5 = (uint *)(local_c0 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          FUN_181232aa0(local_88,&local_a8,&local_90);
          FUN_18122dad0(param_1,iVar2);
          puVar5 = (uint *)(local_a0 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          puVar5 = (uint *)(local_98 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          puVar5 = (uint *)(local_90 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          iVar2 = FUN_1812498b0(param_1,local_80,0,iVar2 + 1);
        } while (-1 < iVar2);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar7 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
      }
      lVar11 = lVar11 + 8;
    } while (local_b8 < *(int *)((longlong)param_1 + 0xc) + -1);
  }
}



############ FUN_ 180558260 size=1918 ############

undefined8
FUN_180558260(undefined8 *param_1,longlong *param_2,ulonglong param_3,undefined8 *param_4,
             longlong *param_5,undefined4 param_6,longlong param_7,longlong param_8)

{
  byte bVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  byte bVar4;
  longlong *plVar5;
  byte *pbVar6;
  byte bVar7;
  undefined4 uVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  longlong *plVar13;
  undefined8 uVar14;
  longlong lVar15;
  int iVar16;
  byte *pbVar17;
  byte *pbVar18;
  uint *puVar19;
  ulonglong uVar20;
  longlong *plVar21;
  longlong *plVar22;
  int iVar23;
  uint uVar24;
  uint uVar25;
  bool bVar27;
  longlong *local_108;
  undefined8 local_100;
  longlong *local_f8;
  int local_f0;
  undefined8 local_ec;
  char local_e4;
  byte *local_e0;
  undefined1 *local_d8;
  byte *local_d0;
  undefined1 *local_c8;
  longlong *local_c0;
  int local_b8;
  undefined8 local_b4;
  undefined1 local_ac;
  longlong *local_a8;
  int local_a0;
  undefined8 local_9c;
  undefined1 local_94;
  int local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  ulonglong local_70;
  longlong local_68;
  longlong local_60;
  undefined8 local_58;
  longlong local_50;
  ulonglong uVar26;
  
  uVar24 = (uint)param_3;
  local_58 = 0xfffffffffffffffe;
  uVar20 = 0;
  local_108 = (longlong *)0x0;
  local_100 = 0;
  FUN_18055c6a0(&local_108,8);
  if (param_5 == (longlong *)0x0) {
    if ((uVar24 < *(uint *)((longlong)param_2 + 0xc)) &&
       (puVar3 = *(undefined8 **)(*param_2 + (longlong)(int)uVar24 * 8), puVar3 != (undefined8 *)0x0
       )) {
      pbVar18 = (byte *)*puVar3;
      local_e0 = pbVar18;
      if ((*(uint *)(pbVar18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pbVar18 + -0x10) = *(int *)(pbVar18 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      local_e0 = &DAT_1821dbf98;
      pbVar18 = local_e0;
    }
LAB_180558316:
    do {
      pbVar6 = local_e0;
      pbVar17 = pbVar18 + 1;
      if ((char)*pbVar18 < '\0') {
        if ((*pbVar17 & 0xc0) == 0x80) {
          do {
            pbVar17 = pbVar17 + 1;
          } while ((*pbVar17 & 0xc0) == 0x80);
          uVar20 = uVar20 + 1;
          pbVar18 = pbVar17;
          goto LAB_180558316;
        }
      }
      else if (*pbVar18 == 0) goto LAB_18055834a;
      uVar20 = uVar20 + 1;
      pbVar18 = pbVar17;
    } while( true );
  }
  uVar9 = *(uint *)((longlong)param_2 + 0xc);
  if ((int)uVar24 < (int)uVar9) {
    local_e4 = '\0';
    uVar26 = uVar20;
    if (uVar9 == 0) {
      local_ec = 0;
      local_f0 = 0;
    }
    else {
      if ((int)uVar24 < (int)uVar9) {
        if (0 < (int)uVar24) {
          uVar26 = param_3 & 0xffffffff;
        }
        uVar25 = (uint)uVar26;
        lVar15 = *(longlong *)(*param_2 + (longlong)(int)uVar25 * 8);
        iVar11 = *(int *)(lVar15 + 0x10);
        local_f0 = 0;
        if ((0 < iVar11) && (iVar11 < 0)) {
          local_f0 = iVar11;
        }
      }
      else {
        uVar25 = uVar9 - 1;
        uVar26 = (ulonglong)uVar25;
        lVar15 = *(longlong *)(*param_2 + (longlong)(int)uVar25 * 8);
        local_f0 = *(int *)(lVar15 + 0x10);
      }
      local_ec = CONCAT44(local_f0,uVar25);
      local_f0 = local_f0 + *(int *)(lVar15 + 8);
    }
    iVar11 = local_f0;
    if (((uint)uVar26 < uVar9) &&
       (puVar3 = *(undefined8 **)(*param_2 + (longlong)(int)(uint)uVar26 * 8),
       puVar3 != (undefined8 *)0x0)) {
      local_d0 = (byte *)*puVar3;
      if ((*(uint *)(local_d0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      local_d0 = &DAT_1821dbf98;
    }
    local_90 = local_f0;
    local_88 = *param_4;
    uStack_80 = param_4[1];
    local_78 = param_4[2];
    pbVar18 = local_d0;
LAB_180558476:
    do {
      bVar1 = *pbVar18;
      pbVar18 = pbVar18 + 1;
      if ((char)bVar1 < '\0') {
        if ((*pbVar18 & 0xc0) == 0x80) {
          do {
            pbVar18 = pbVar18 + 1;
          } while ((*pbVar18 & 0xc0) == 0x80);
          uVar20 = uVar20 + 1;
          goto LAB_180558476;
        }
      }
      else if (bVar1 == 0) goto LAB_1805584aa;
      uVar20 = uVar20 + 1;
    } while( true );
  }
  goto LAB_18055875c;
LAB_18055834a:
  FUN_1805590f0(&local_108,&local_e0,uVar20 & 0xffffffff,0xffffffff);
  puVar19 = (uint *)(pbVar6 + -0x10);
  if ((*puVar19 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar19;
    *puVar19 = *puVar19 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar19);
    }
  }
  goto LAB_18055875c;
LAB_1805584aa:
  local_f8 = param_2;
  local_70 = uVar20;
  uVar8 = (**(code **)(*param_5 + 8))(param_5,param_4);
  iVar12 = local_78._4_4_;
  while( true ) {
    if (*(int *)((longlong)param_4 + 0x14) <= iVar12) break;
    iVar23 = *(int *)((longlong)param_4 + 0x14) - iVar11;
    if (0 < iVar23) {
      iVar16 = 0;
      if (0 < iVar12 - iVar11) {
        iVar16 = iVar12 - iVar11;
      }
      plVar13 = (longlong *)FUN_1812490c0(&local_d0,&local_60,iVar16,iVar23);
      iVar16 = iVar23 - iVar16;
      if (iVar16 < 0x3e9) {
        local_50 = *plVar13;
        if ((*(uint *)(local_50 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_50 + -0x10) = *(int *)(local_50 + -0x10) + 1;
          UNLOCK();
        }
        FUN_18055c6a0(&local_108,local_100._4_4_ + 1);
        lVar15 = (longlong)local_100._4_4_;
        local_100 = CONCAT44(local_100._4_4_ + 1,(undefined4)local_100);
        plVar13 = local_108 + lVar15 * 2;
        *plVar13 = local_50;
        *(int *)(plVar13 + 1) = iVar16;
        *(undefined4 *)((longlong)plVar13 + 0xc) = uVar8;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar9 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar27 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar9;
          if (bVar27) {
            puVar19 = &DAT_1821dbf88;
            goto LAB_18055869a;
          }
        }
      }
      else {
        iVar11 = iVar16 / 2;
        uVar14 = FUN_1812490c0(plVar13,&local_68,0,iVar11);
        FUN_1805590f0(&local_108,uVar14,iVar11,uVar8);
        puVar19 = (uint *)(local_68 + -0x10);
        if ((*puVar19 & 0x30000000) == 0) {
          LOCK();
          uVar9 = *puVar19;
          *puVar19 = *puVar19 - 1;
          UNLOCK();
          if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar19);
          }
        }
        if (iVar11 < 1) {
          local_d8 = (undefined1 *)*plVar13;
          if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
            UNLOCK();
          }
        }
        else {
          pbVar18 = (byte *)*plVar13;
          iVar12 = iVar11;
          while (iVar12 = iVar12 + -1, -1 < iVar12) {
            bVar1 = *pbVar18;
            if (bVar1 == 0) {
              local_d8 = &DAT_1821dbf98;
              goto LAB_1805585ce;
            }
            pbVar18 = pbVar18 + 1;
            if ((char)bVar1 < '\0') {
              bVar7 = 0x40;
              bVar4 = bVar1 & 0x40;
              while ((bVar4 != 0 && (8 < bVar7))) {
                pbVar18 = pbVar18 + 1;
                bVar7 = bVar7 >> 1;
                bVar4 = bVar1 & bVar7;
              }
            }
          }
          FUN_18049c9e0(&local_d8);
        }
LAB_1805585ce:
        FUN_1805590f0(&local_108,&local_d8,iVar16 - iVar11,uVar8);
        puVar19 = (uint *)(local_d8 + -0x10);
        if ((*puVar19 & 0x30000000) == 0) {
          LOCK();
          uVar9 = *puVar19;
          *puVar19 = *puVar19 - 1;
          UNLOCK();
          if (uVar9 == 0) {
LAB_18055869a:
                    /* WARNING: Subroutine does not return */
            free(puVar19);
          }
        }
      }
      puVar19 = (uint *)(local_60 + -0x10);
      if ((*puVar19 & 0x30000000) == 0) {
        LOCK();
        uVar9 = *puVar19;
        *puVar19 = *puVar19 - 1;
        UNLOCK();
        if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar19);
        }
      }
      iVar11 = local_90;
      if ((int)local_70 <= iVar23) {
        iVar12 = local_78._4_4_;
        break;
      }
    }
    local_88 = *param_4;
    uStack_80 = param_4[1];
    iVar12 = *(int *)((longlong)param_4 + 0x14);
    local_78 = param_4[2];
    uVar8 = (**(code **)(*param_5 + 8))(param_5);
  }
  *param_4 = local_88;
  param_4[1] = uStack_80;
  *(undefined4 *)(param_4 + 2) = (undefined4)local_78;
  *(int *)((longlong)param_4 + 0x14) = iVar12;
  puVar19 = (uint *)(local_d0 + -0x10);
  if ((*puVar19 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar19;
    *puVar19 = *puVar19 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar19);
    }
  }
  if (local_e4 != '\0') {
    FUN_1813c8030(&local_f8,0);
  }
LAB_18055875c:
  FUN_180558eb0(&local_108,param_6);
  iVar11 = 0;
  iVar12 = 0;
  if ((*(int *)(param_7 + 0xc) <= (int)uVar24) && ((int)uVar24 <= *(int *)(param_8 + 0xc))) {
    if ((uVar24 < *(uint *)((longlong)param_2 + 0xc)) &&
       (puVar3 = *(undefined8 **)(*param_2 + (longlong)(int)uVar24 * 8), puVar3 != (undefined8 *)0x0
       )) {
      local_c8 = (undefined1 *)*puVar3;
      if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      local_c8 = &DAT_1821dbf98;
    }
    local_ac = 0;
    iVar11 = *(int *)((longlong)param_2 + 0xc);
    if (iVar11 == 0) {
      local_b4 = 0;
      iVar23 = 0;
    }
    else {
      if ((int)uVar24 < iVar11) {
        uVar9 = 0;
        if (0 < (int)uVar24) {
          uVar9 = uVar24;
        }
        lVar15 = *(longlong *)(*param_2 + (longlong)(int)uVar9 * 8);
        iVar11 = *(int *)(lVar15 + 0x10);
        iVar23 = 0;
        if ((0 < iVar11) && (iVar23 = 0, iVar11 < 0)) {
          iVar23 = iVar11;
        }
      }
      else {
        uVar9 = iVar11 - 1;
        lVar15 = *(longlong *)(*param_2 + (longlong)(int)uVar9 * 8);
        iVar23 = *(int *)(lVar15 + 0x10);
      }
      local_b4 = CONCAT44(iVar23,uVar9);
      iVar23 = *(int *)(lVar15 + 8) + iVar23;
    }
    iVar16 = uVar24 + 1;
    local_94 = 0;
    iVar11 = *(int *)((longlong)param_2 + 0xc);
    if (iVar11 == 0) {
      local_9c = 0;
    }
    else {
      if (iVar16 < iVar11) {
        iVar11 = 0;
        if (0 < iVar16) {
          iVar11 = iVar16;
        }
        lVar15 = *(longlong *)(*param_2 + (longlong)iVar11 * 8);
        iVar12 = *(int *)(lVar15 + 0x10);
        iVar16 = 0;
        if ((0 < iVar12) && (iVar16 = 0, iVar12 < 0)) {
          iVar16 = iVar12;
        }
      }
      else {
        iVar11 = iVar11 + -1;
        lVar15 = *(longlong *)(*param_2 + (longlong)iVar11 * 8);
        iVar16 = *(int *)(lVar15 + 0x10);
      }
      local_9c = CONCAT44(iVar16,iVar11);
      iVar12 = *(int *)(lVar15 + 8) + iVar16;
    }
    iVar10 = *(int *)(param_7 + 8) - iVar23;
    iVar11 = 0;
    if (0 < iVar10) {
      iVar11 = iVar10;
    }
    local_c0 = param_2;
    local_b8 = iVar23;
    local_a8 = param_2;
    local_a0 = iVar12;
    iVar11 = FUN_180559030(iVar16,iVar11,&local_c8,param_6);
    iVar10 = *(int *)(param_8 + 8) - iVar23;
    iVar16 = iVar12 - iVar23;
    if (iVar10 < iVar12 - iVar23) {
      iVar16 = iVar10;
    }
    iVar12 = FUN_180559030(iVar10,iVar16,&local_c8,param_6);
    puVar19 = (uint *)(local_c8 + -0x10);
    if ((*puVar19 & 0x30000000) == 0) {
      LOCK();
      uVar24 = *puVar19;
      *puVar19 = *puVar19 - 1;
      UNLOCK();
      if (uVar24 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar19);
      }
    }
  }
  plVar13 = local_108;
  iVar23 = local_100._4_4_;
  if ((iVar11 == *(int *)(param_1 + 2)) && (iVar12 == *(int *)((longlong)param_1 + 0x14))) {
    if (*(int *)((longlong)param_1 + 0xc) == local_100._4_4_) {
      plVar22 = local_108 + (longlong)local_100._4_4_ * 2;
      plVar5 = (longlong *)*param_1;
      for (plVar21 = local_108; plVar21 != plVar22; plVar21 = plVar21 + 2) {
        if ((*(int *)((longlong)plVar5 + 0xc) != *(int *)((longlong)plVar21 + 0xc)) ||
           ((int)plVar5[1] != (int)plVar21[1])) goto LAB_18055898e;
        if (*plVar5 == *plVar21) {
          iVar11 = 0;
        }
        else {
          iVar11 = FUN_18048cbc0(*plVar5,*plVar21);
        }
        if (iVar11 != 0) goto LAB_18055898e;
        plVar5 = plVar5 + 2;
      }
      uVar14 = 0;
      goto LAB_1805589bd;
    }
  }
  else {
    *(int *)(param_1 + 2) = iVar11;
    *(int *)((longlong)param_1 + 0x14) = iVar12;
  }
LAB_18055898e:
  local_108 = (longlong *)*param_1;
  *param_1 = plVar13;
  uVar8 = *(undefined4 *)(param_1 + 1);
  *(undefined4 *)(param_1 + 1) = (undefined4)local_100;
  uVar2 = *(undefined4 *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar23;
  local_100 = CONCAT44(uVar2,uVar8);
  uVar14 = 1;
LAB_1805589bd:
  FUN_18051a4c0(&local_108);
  return uVar14;
}



############ FUN_ 1805590f0 size=484 ############

void FUN_1805590f0(longlong *param_1,longlong *param_2,int param_3,undefined4 param_4)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  int iVar4;
  byte bVar5;
  int iVar6;
  undefined8 uVar7;
  uint *puVar8;
  byte *pbVar9;
  longlong *plVar10;
  bool bVar11;
  undefined1 *local_48;
  longlong local_40 [5];
  
  local_40[1] = 0xfffffffffffffffe;
  if (param_3 < 0x3e9) {
    local_40[2] = *param_2;
    if ((*(uint *)(local_40[2] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_40[2] + -0x10) = *(int *)(local_40[2] + -0x10) + 1;
      UNLOCK();
    }
    FUN_18055c6a0(param_1,*(int *)((longlong)param_1 + 0xc) + 1);
    iVar6 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
    plVar10 = (longlong *)((longlong)iVar6 * 0x10 + *param_1);
    *plVar10 = local_40[2];
    *(int *)(plVar10 + 1) = param_3;
    *(undefined4 *)((longlong)plVar10 + 0xc) = param_4;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      UNLOCK();
      bVar11 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = DAT_1821dbf88 - 1;
      if (bVar11) {
        puVar8 = &DAT_1821dbf88;
        DAT_1821dbf88 = 0xffffffff;
        goto LAB_1805592b3;
      }
    }
  }
  else {
    iVar6 = param_3 / 2;
    uVar7 = FUN_1812490c0(param_2,local_40,0,iVar6);
    FUN_1805590f0(param_1,uVar7,iVar6,param_4);
    puVar8 = (uint *)(local_40[0] + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if (iVar6 < 1) {
      local_48 = (undefined1 *)*param_2;
      if ((*(uint *)(local_48 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      pbVar9 = (byte *)*param_2;
      iVar4 = iVar6;
      while (iVar4 = iVar4 + -1, -1 < iVar4) {
        bVar2 = *pbVar9;
        if (bVar2 == 0) {
          local_48 = &DAT_1821dbf98;
          goto LAB_1805591ee;
        }
        pbVar9 = pbVar9 + 1;
        if ((char)bVar2 < '\0') {
          bVar5 = 0x40;
          bVar3 = bVar2 & 0x40;
          while ((bVar3 != 0 && (8 < bVar5))) {
            pbVar9 = pbVar9 + 1;
            bVar5 = bVar5 >> 1;
            bVar3 = bVar2 & bVar5;
          }
        }
      }
      FUN_18049c9e0(&local_48);
    }
LAB_1805591ee:
    FUN_1805590f0(param_1,&local_48,param_3 - iVar6,param_4);
    puVar8 = (uint *)(local_48 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
LAB_1805592b3:
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  return;
}



############ FUN_ 181410d30 size=3395 ############

/* WARNING: Instruction at (ram,0x0001814113cf) overlaps instruction at (ram,0x0001814113ce)
    */
/* WARNING: Removing unreachable block (ram,0x000181411650) */
/* WARNING: Removing unreachable block (ram,0x00018141158c) */
/* WARNING: Removing unreachable block (ram,0x00018141124a) */
/* WARNING: Removing unreachable block (ram,0x000181411060) */
/* WARNING: Removing unreachable block (ram,0x000181410daf) */
/* WARNING: Removing unreachable block (ram,0x000181410d9b) */
/* WARNING: Removing unreachable block (ram,0x000181410e08) */
/* WARNING: Removing unreachable block (ram,0x0001814113cd) */
/* WARNING: Removing unreachable block (ram,0x00018141163a) */
/* WARNING: Removing unreachable block (ram,0x000181411920) */

void FUN_181410d30(longlong param_1,undefined8 param_2,undefined4 param_3)

{
  longlong lVar1;
  longlong *plVar2;
  uint uVar3;
  uint uVar4;
  longlong *plVar5;
  int *piVar6;
  int iVar7;
  uint *_Memory;
  undefined4 *puVar8;
  longlong lVar9;
  undefined1 *puVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  ulonglong uVar14;
  undefined8 in_R11;
  int *piVar15;
  int unaff_retaddr;
  undefined4 local_res8 [2];
  undefined4 local_res20 [2];
  undefined1 auStack_98 [32];
  undefined *local_78;
  undefined8 local_70;
  int *local_68;
  longlong local_60 [5];
  
  puVar10 = auStack_98;
  local_60[1] = 0xfffffffffffffffe;
  uVar3 = (uint)&stack0x00000000 & 0x36ff;
  uVar11 = ((uVar3 + 1) * uVar3 + 7) % 0x51;
  uVar3 = (uint)&stack0x00000000 & 0x19ff;
  uVar3 = (uVar3 + 1) * uVar3 + 0x6063 & 0x80000001;
  uVar3 = (int)((-uVar3 | uVar3) & (-uVar11 | uVar11)) >> 0x1f;
  uVar11 = 0x500;
  FUN_181406d20(param_1,param_2);
  FUN_18049c9e0(local_60,param_2);
  plVar5 = (longlong *)FUN_1805714d0(param_1 + 0x168,local_60);
  _Memory = (uint *)(local_60[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  piVar6 = &DAT_18114bd58;
  local_78 = &DAT_18114be58;
  local_70 = 0x100;
  uVar4 = (DAT_18114bd58 + 0x2a8399f) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18114bd5c) * -0x395b586d;
  uVar13 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18114bd60) * -0x395b586d;
  uVar13 = uVar13 ^ uVar13 >> 0x10;
  uVar14 = (ulonglong)uVar13;
  uVar4 = uVar13 & 0x1f;
  lVar9 = -((longlong)(int)(0x395a - ((uVar4 + 1) * (uVar4 + 1) * uVar4 * uVar4 & 0x80000003)) ^
           0x3952U);
  uVar4 = (*(int *)(&DAT_18114bd6c + lVar9) + uVar13) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd70 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd74 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd78 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd7c + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd80 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd84 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd88 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd8c + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd90 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd94 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd98 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd9c + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bda0 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bda4 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bda8 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&LAB_18114bdac + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdb0 + lVar9)) * -0x395b586d;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar4 = (*(int *)(&DAT_18114bdb4 + lVar9) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdb8 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdbc + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdc0 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdc4 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdc8 + lVar9)) * -0x395b586d;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar4 = (*(int *)(&DAT_18114bdcc + lVar9) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  *(undefined4 *)*plVar5 = param_3;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdd0 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdd4 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdd8 + lVar9)) * -0x395b586d;
  local_68 = piVar6;
  do {
    FUN_181411cce(0xe80c);
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar4 = (*(int *)(&DAT_18114bddc + lVar9) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  lVar1 = *plVar5;
  *(undefined4 *)(lVar1 + 0x18) = param_3;
  plVar2 = *(longlong **)(lVar1 + 0x10);
  if ((undefined **)*plVar2 == SkewInterpolator::vftable) {
    *(float *)((longlong)plVar2 + 0x6c) = *(float *)plVar2[1] - *(float *)plVar2[2];
    *(float *)(plVar2 + 0xe) = *(float *)plVar2[2];
    *(undefined4 *)(plVar2 + 0xd) = *(undefined4 *)((longlong)plVar2 + 100);
  }
  else {
    (*(code *)((undefined **)*plVar2)[1])(plVar2);
  }
  uVar4 = (*(int *)(&DAT_18114bde0 + lVar9) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bde4 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bde8 + lVar9)) * -0x395b586d;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar4 = (*(int *)(&DAT_18114bdec + lVar9) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdf0 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdf4 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdf8 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bdfc + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114be00 + lVar9)) * -0x395b586d;
  local_68 = (int *)0x1038bf0c4e66f9b1;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114be04 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114be08 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114be0c + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114be10 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114be14 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&UNK_18114be18 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&UNK_18114be1c + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&UNK_18114be20 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&UNK_18114be24 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&UNK_18114be28 + lVar9)) * -0x395b586d;
  uVar12 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&UNK_18114be2c + lVar9)) * -0x395b586d;
  uVar12 = uVar12 ^ uVar12 >> 0x10;
  uVar13 = uVar12 & 0x11ff;
  uVar4 = (uint)local_70 & 0x13f;
  iVar7 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  uVar4 = ((uVar13 + 1) * uVar13 + 0xb3d & 0x80000001) <<
          ((char)iVar7 + (char)((ulonglong)((longlong)iVar7 * 0x55555556) >> 0x20) * -3 & 0x1fU);
  lVar9 = lVar9 + (0x108 - ((ulonglong)((int)(-uVar4 | uVar4) >> 0x1f & 52000) ^ 0xcb10));
  uVar4 = (*(int *)(lVar9 + 0x18114bd58) + uVar12) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(lVar9 + 0x18114bd5c)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(lVar9 + 0x18114bd60)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd64 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd68 + lVar9)) * -0x395b586d;
  uVar13 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd6c + lVar9)) * -0x395b586d;
  uVar13 = uVar13 ^ uVar13 >> 0x10;
  uVar4 = uVar13 & 0x3f;
  uVar12 = (uint)(lVar9 + 0x14) & 0x76ff;
  lVar9 = lVar9 + 0x14 +
          ((longlong)
           (int)(((uVar4 + 1) * (uVar4 + 1) * uVar4 * uVar4 & 0x80000003) -
                ((uVar12 + 1) * uVar12 & 0x80000001)) ^ 4U);
  uVar4 = (*(int *)(lVar9 + 0x18114bd58) + uVar13) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(lVar9 + 0x18114bd5c)) * -0x395b586d;
  piVar15 = (int *)register0x00000020;
  do {
    piVar15 = (int *)((((ulonglong)piVar15 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
    uVar13 = (*piVar15 + 1) * *piVar15 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar4 = (*(int *)(lVar9 + 0x18114bd60) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  do {
    FUN_18141362d(0xe80c);
    uVar11 = -((uVar11 ^ 0xffffffff) + 1);
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar4 = (*(int *)(&DAT_18114bd64 + lVar9) + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd68 + lVar9)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *(int *)(&DAT_18114bd6c + lVar9)) * -0x395b586d;
  uVar4 = uVar4 ^ uVar4 >> 0x10;
  do {
    func_0x000181410c68(0xe80c);
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  do {
    FUN_18140fcdd();
    FUN_18140feb3();
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar13 = (uVar4 >> 0xf ^ uVar4) >> 4 & 0x3f;
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  lVar9 = *(longlong *)(*plVar5 + 0x10);
  if ((char)((((uVar13 << 0xf | uVar13) << 4 ^ uVar4) == 0x23890a3e) * '-') == '\0') {
    local_res8[0] = **(undefined4 **)(lVar9 + 0x10);
    plVar5 = *(longlong **)(lVar9 + 0x50);
    if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    puVar8 = local_res8;
    (**(code **)(*plVar5 + 0x10))(plVar5,puVar8);
    thunk_FUN_1805a9280((longlong)(int)(((int)(-uVar3 | uVar3) >> 0x1f) * -0x83ff ^ 0x86df),
                        (-(longlong)puVar8 ^ 0xffffffffffffffffU) + 1);
    return;
  }
  local_res20[0] = **(undefined4 **)(lVar9 + 0x10);
  plVar5 = *(longlong **)(lVar9 + 0x50);
  if (plVar5 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(*plVar5 + 0x10))(plVar5,local_res20);
  do {
    *(undefined8 *)(puVar10 + -8) = in_R11;
    *(ulonglong *)(puVar10 + -0x10) = uVar14;
    *(int **)(puVar10 + -0x18) = piVar6;
    lVar9 = -(longlong)(int)uVar11;
    piVar6 = *(int **)(puVar10 + lVar9 + 0x4e8);
    uVar14 = *(ulonglong *)(puVar10 + lVar9 + 0x4f0);
    in_R11 = *(undefined8 *)(puVar10 + lVar9 + 0x4f8);
    puVar10 = puVar10 + lVar9 + 0x500;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  return;
}



############ FUN_ 181411b10 size=194 ############

void FUN_181411b10(longlong param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  longlong local_res8;
  undefined4 local_res18 [4];
  
  FUN_181406a70(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  FUN_18049c9e0(&local_res8,param_2);
  plVar2 = (longlong *)FUN_1805714d0(param_1 + 0x178,&local_res8);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined4 *)*plVar2 = param_3;
  FUN_180571590(*plVar2,param_3);
  local_res18[0] = **(undefined4 **)(*(longlong *)(*plVar2 + 0x10) + 0x10);
  plVar2 = *(longlong **)(*(longlong *)(*plVar2 + 0x10) + 0x50);
  if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(*plVar2 + 0x10))(plVar2,local_res18);
  return;
}



############ FUN_ 18136d830 size=85 ############

undefined8 *
FUN_18136d830(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::AudioFormat::vftable;
  FUN_18049c9e0(param_1 + 1,"WAV file",param_3,param_4,0xfffffffffffffffe);
  FUN_18122ce70(param_1 + 2,".wav .bwf");
  *param_1 = juce::WavAudioFormat::vftable;
  return param_1;
}



############ FUN_ 18136f570 size=85 ############

undefined8 *
FUN_18136f570(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::AudioFormat::vftable;
  FUN_18049c9e0(param_1 + 1,"Ogg-Vorbis file",param_3,param_4,0xfffffffffffffffe);
  FUN_18122ce70(param_1 + 2,&DAT_1821f6804);
  *param_1 = juce::OggVorbisAudioFormat::vftable;
  return param_1;
}



############ FUN_ 181230650 size=425 ############

byte * FUN_181230650(undefined8 *param_1,byte *param_2,undefined8 param_3)

{
  byte bVar1;
  byte *pbVar2;
  bool bVar3;
  bool bVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  byte **ppbVar8;
  uint *puVar9;
  byte *pbVar10;
  longlong lVar11;
  int iVar12;
  byte *local_res8;
  byte *local_res10;
  
  pbVar2 = (byte *)*param_1;
  bVar4 = true;
  bVar3 = false;
  pbVar10 = pbVar2;
  local_res10 = param_2;
  do {
    do {
      bVar1 = *pbVar10;
      uVar7 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar7 = 0x7f;
        uVar6 = 0x40;
        iVar12 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar6 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar12 = iVar12 + 1;
            uVar6 = uVar6 >> 1;
          } while ((bVar1 & uVar6) != 0);
        }
        uVar7 = bVar1 & uVar7;
        lVar11 = 1;
        if (0 < (longlong)iVar12) {
          do {
            if ((pbVar10[lVar11] & 0xc0) != 0x80) break;
            uVar7 = pbVar10[lVar11] & 0x3f | uVar7 << 6;
            lVar11 = lVar11 + 1;
          } while (lVar11 <= iVar12);
        }
      }
      iVar12 = FUN_18049bc80(param_3,uVar7);
      if (iVar12 < 0) {
        if (pbVar10 == pbVar2) {
          local_res8 = pbVar2;
          if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
            UNLOCK();
          }
          ppbVar8 = &local_res8;
        }
        else {
          FUN_18049c9e0(&local_res10,pbVar10);
          ppbVar8 = &local_res10;
          bVar4 = false;
          bVar3 = true;
        }
        *(byte **)param_2 = *ppbVar8;
        *ppbVar8 = &DAT_1821dbf98;
        if ((bVar3) && (puVar9 = (uint *)(local_res10 + -0x10), (*puVar9 & 0x30000000) == 0)) {
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        if ((bVar4) && (puVar9 = (uint *)(local_res8 + -0x10), (*puVar9 & 0x30000000) == 0)) {
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        return param_2;
      }
      pbVar10 = pbVar10 + 1;
    } while ((-1 < (char)bVar1) || (bVar5 = 0x40, (bVar1 & 0x40) == 0));
    do {
      if (bVar5 < 9) break;
      pbVar10 = pbVar10 + 1;
      bVar5 = bVar5 >> 1;
    } while ((bVar1 & bVar5) != 0);
  } while( true );
}



############ FUN_ 18057d260 size=166 ############

void FUN_18057d260(longlong param_1,undefined8 *param_2,undefined4 *param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  longlong local_res8;
  longlong *local_res10;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_18049c9e0(&local_res8,*param_2,param_3,param_4,0xfffffffffffffffe);
  local_res10 = &local_res8;
  *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x30c) = *param_3;
  lVar2 = *(longlong *)(param_1 + 8);
  uStack_c = *(undefined4 *)(lVar2 + 0x2c);
  uStack_10 = *(undefined4 *)(lVar2 + 0x28);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(lVar2,&local_18,1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180586f50 size=149 ############

void FUN_180586f50(longlong param_1,undefined8 *param_2,float *param_3,undefined8 param_4)

{
  float fVar1;
  uint uVar2;
  uint *_Memory;
  longlong local_res8;
  longlong *local_res10;
  
  FUN_18049c9e0(&local_res8,*param_2,param_3,param_4,0xfffffffffffffffe);
  local_res10 = &local_res8;
  fVar1 = *param_3;
  FUN_181342bf0(*(undefined8 *)(param_1 + 8),fVar1);
  FUN_181342bf0(*(undefined8 *)(*(longlong *)(param_1 + 8) + 0x2d8),fVar1 * fVar1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1805870f0 size=157 ############

void FUN_1805870f0(longlong param_1,undefined8 *param_2,undefined4 *param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  longlong local_res8;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_18049c9e0(&local_res8,*param_2,param_3,param_4,0xfffffffffffffffe);
  *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x3d0) = *param_3;
  lVar2 = *(longlong *)(param_1 + 8);
  uStack_c = *(undefined4 *)(lVar2 + 0x2c);
  uStack_10 = *(undefined4 *)(lVar2 + 0x28);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(lVar2,&local_18,1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180587640 size=113 ############

void FUN_180587640(longlong param_1,undefined8 *param_2,undefined4 *param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res8;
  longlong *local_res10;
  
  FUN_18049c9e0(&local_res8,*param_2,param_3,param_4,0xfffffffffffffffe);
  local_res10 = &local_res8;
  FUN_181342bf0(*(undefined8 *)(param_1 + 8),*param_3);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180587790 size=187 ############

void FUN_180587790(longlong param_1,undefined8 *param_2,undefined4 *param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint *_Memory;
  undefined4 extraout_XMM0_Da;
  longlong local_res8;
  longlong *local_res10;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_18049c9e0(&local_res8,*param_2,param_3,param_4,0xfffffffffffffffe);
  local_res10 = &local_res8;
  iVar3 = FUN_18048cbc0(*param_3,"radiusScaling");
  if (iVar3 == 0) {
    *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x330) = extraout_XMM0_Da;
  }
  lVar2 = *(longlong *)(param_1 + 8);
  uStack_c = *(undefined4 *)(lVar2 + 0x2c);
  uStack_10 = *(undefined4 *)(lVar2 + 0x28);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(lVar2,&local_18,1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180587890 size=186 ############

void FUN_180587890(longlong param_1,undefined8 *param_2,float *param_3,undefined8 param_4)

{
  float fVar1;
  uint uVar2;
  longlong lVar3;
  uint *_Memory;
  float fVar4;
  longlong local_res8;
  longlong *local_res10;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_18049c9e0(&local_res8,*param_2,param_3,param_4,0xfffffffffffffffe);
  local_res10 = &local_res8;
  fVar1 = *param_3;
  fVar4 = 0.0;
  if ((0.0 <= fVar1) && (fVar4 = DAT_1824c3ea4, fVar1 <= DAT_1824c3ea4)) {
    fVar4 = fVar1;
  }
  *(float *)(*(longlong *)(param_1 + 8) + 0x390) = fVar4;
  lVar3 = *(longlong *)(param_1 + 8);
  uStack_c = *(undefined4 *)(lVar3 + 0x2c);
  uStack_10 = *(undefined4 *)(lVar3 + 0x28);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(lVar3,&local_18,1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180597890 size=677 ############

undefined8 FUN_180597890(longlong param_1)

{
  uint uVar1;
  undefined8 uVar2;
  longlong *plVar3;
  undefined **ppuVar4;
  code *pcVar5;
  int iVar6;
  undefined8 uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  longlong lVar10;
  uint *puVar11;
  char cVar12;
  double dVar13;
  int local_res8 [2];
  undefined1 *local_res10;
  undefined8 local_res18;
  longlong local_res20;
  
  FUN_180488c50(param_1 + 0xe0);
  if (*(int *)(param_1 + 0xe8) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0xe0));
  }
  *(undefined4 *)(param_1 + 0xe8) = 0;
  FUN_180488f10(param_1 + 0xf0);
  if (*(int *)(param_1 + 0xf8) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0xf0));
  }
  *(undefined4 *)(param_1 + 0xf8) = 0;
  lVar8 = *(longlong *)(param_1 + 0x80);
  *(undefined8 *)(param_1 + 0x80) = 0;
  if (lVar8 != 0) {
    FUN_18059b780();
  }
  lVar8 = *(longlong *)(param_1 + 0x88);
  *(undefined8 *)(param_1 + 0x88) = 0;
  if (lVar8 != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar8 + 8));
  }
  FUN_181639ce0(*(undefined8 *)(param_1 + 0x70));
  lVar8 = *(longlong *)(param_1 + 0x68);
  uVar2 = *(undefined8 *)(param_1 + 0x70);
  plVar3 = *(longlong **)(lVar8 + 0x20);
  ppuVar4 = (undefined **)*plVar3;
  if (ppuVar4 == juce::HWNDComponentPeer::vftable) {
    lVar10 = plVar3[0x11];
  }
  else {
    lVar10 = (*(code *)ppuVar4[1])();
  }
  if (DAT_182678ed8 != (code *)0x0) {
    (*DAT_182678ed8)(0,local_res8);
    FUN_1812c75b0();
    if ((DAT_182678f08 == (code *)0x0) || (DAT_182678ec8 == (code *)0x0)) {
      cVar12 = FUN_1812c7510();
    }
    else {
      uVar7 = (*DAT_182678f08)(lVar10);
      iVar6 = (*DAT_182678ec8)(uVar7);
      cVar12 = iVar6 == 2;
    }
    if (((cVar12 != '\0') && (local_res8[0] != 2)) && (DAT_182678ee0 != (code *)0x0)) {
      (*DAT_182678ee0)(2);
    }
  }
  *(undefined8 *)(lVar8 + 0x38) = uVar2;
  FUN_18163ae70(*(undefined8 *)(param_1 + 0x70));
  glViewport(0,0,*(undefined4 *)(*(longlong *)(param_1 + 0x78) + 0x28),
             *(undefined4 *)(*(longlong *)(param_1 + 0x78) + 0x2c));
  pcVar5 = *(code **)(*(longlong *)(param_1 + 0x68) + 0x58);
  if (pcVar5 != (code *)0x0) {
    (*pcVar5)(1);
  }
  lVar8 = glGetString(0x8b8c);
  if (lVar8 == 0) {
    local_res10 = &DAT_1821dbf98;
  }
  else {
    FUN_18049c9e0(&local_res10,lVar8);
  }
  puVar9 = (undefined8 *)FUN_1812489f0(&local_res10,&local_res20,"1234567890.");
  local_res18 = *puVar9;
  dVar13 = (double)FUN_18049bd80(&local_res18);
  puVar11 = (uint *)(local_res20 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_res10 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  *(bool *)(param_1 + 0x2f8) = 0.0 < dVar13;
  do {
    iVar6 = glGetError();
  } while (iVar6 != 0);
  plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x70) + 400);
  if (plVar3 != (longlong *)0x0) {
    if ((undefined **)*plVar3 == CloudyOpenGLRenderer<Soothe2VertexData>::vftable) {
      LOCK();
      *(undefined1 *)((longlong)plVar3 + 0x82) = 1;
      UNLOCK();
      return 0x1824b0c01;
    }
    (*(code *)((undefined **)*plVar3)[1])();
    return 1;
  }
  return 1;
}



############ FUN_ 181150b20 size=1435 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181150c45) */
/* WARNING: Removing unreachable block (ram,0x000181150c2e) */
/* WARNING: Removing unreachable block (ram,0x000181150c94) */
/* WARNING: Removing unreachable block (ram,0x000181150bb2) */

void FUN_181150b20(undefined8 param_1,longlong *param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  char cVar2;
  int iVar3;
  undefined8 uVar4;
  longlong lVar5;
  longlong lVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  uint uVar9;
  undefined8 **ppuVar10;
  undefined8 *unaff_RSI;
  byte unaff_R12B;
  longlong *plVar11;
  undefined1 *puVar12;
  bool bVar13;
  float fVar14;
  int unaff_retaddr;
  undefined1 auStack_11534 [171];
  undefined1 uStack_11489;
  undefined1 auStack_11488 [4037];
  undefined1 auStack_104c3 [66115];
  undefined8 *puStack_280;
  undefined8 uStack_278;
  undefined1 auStack_268 [8];
  undefined1 *apuStack_260 [4];
  undefined8 local_240;
  longlong *local_238;
  longlong *local_228;
  undefined4 local_21c;
  undefined8 local_200;
  uint local_1f0;
  longlong *local_1e8;
  undefined8 local_1e0;
  undefined8 uStack_1d8;
  undefined8 local_1d0;
  longlong local_1c8;
  longlong local_1c0;
  undefined1 local_1b8 [8];
  undefined1 local_1b0 [8];
  longlong local_1a8;
  undefined8 local_1a0;
  undefined8 local_198;
  longlong local_190 [4];
  undefined1 local_170 [40];
  undefined8 *local_148;
  undefined8 *local_140;
  longlong *local_130;
  float local_128;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined1 local_d8 [112];
  ulonglong local_68;
  
  local_f0 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_268;
  uVar9 = (uint)&stack0x00000000 & 0x1aff;
  uVar9 = (uVar9 * uVar9 * 0x10 + 4) % 0x13;
  local_1f0 = (int)(-uVar9 | uVar9) >> 0x1f & 0x10c9U ^ 0x1a69;
  plVar11 = (longlong *)0xc70;
  local_21c = 0xc70;
  local_240 = param_3;
  local_1a0 = param_1;
  local_198 = param_1;
  FUN_18114f160(&local_148,param_3);
  local_1e0 = 0;
  uStack_1d8 = 0;
  local_1d0 = 0;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  plVar8 = (longlong *)*param_2;
  local_228 = plVar8 + *(int *)((longlong)param_2 + 0xc);
  if (plVar8 != local_228) {
    do {
      plVar11 = (longlong *)*plVar8;
      local_238 = plVar8;
      local_1e8 = plVar11;
      if (*(code **)(*plVar11 + 0x20) == FUN_180484720) {
        local_190[0] = plVar11[2];
        plVar8 = local_190;
      }
      else {
        plVar8 = (longlong *)(**(code **)(*plVar11 + 0x20))(plVar11,local_190);
      }
      FUN_18049c9e0(&local_1c8,*plVar8);
      FUN_181248c30(&local_1c8,local_1b0);
      FUN_1804951e0(local_1c8 + -0x10);
      if (*(code **)(*plVar11 + 0x28) == FUN_180484730) {
        local_1a8 = plVar11[3];
        plVar8 = &local_1a8;
      }
      else {
        plVar8 = (longlong *)(**(code **)(*plVar11 + 0x28))(plVar11,&local_1a8);
      }
      FUN_18049c9e0(&local_1c0,*plVar8);
      FUN_181248c30(&local_1c0,local_1b8);
      FUN_1804951e0(local_1c0 + -0x10);
      uVar4 = (**(code **)(*plVar11 + 0x40))(plVar11);
      puVar1 = local_140;
      fVar14 = 0.0;
      unaff_R12B = 1;
      unaff_RSI = local_148;
      local_200 = uVar4;
      if (local_148 == local_140) {
LAB_181150ecb:
        local_130 = plVar11;
        local_128 = fVar14;
        FUN_180485ac0(&local_1e0,&local_130);
      }
      else {
        do {
          bVar13 = false;
          iVar3 = FUN_1812494c0(param_3);
          if (2 < iVar3) {
            local_e8 = *unaff_RSI;
            cVar2 = FUN_18124a630(local_1b0);
            bVar13 = cVar2 != '\0';
            if (bVar13) {
              iVar3 = FUN_1812494c0(unaff_RSI);
              fVar14 = fVar14 + (float)iVar3;
            }
            local_e0 = *unaff_RSI;
            cVar2 = FUN_18124a630(local_1b8);
            if (cVar2 != '\0') {
              iVar3 = FUN_180493130(unaff_RSI);
              fVar14 = fVar14 + (float)iVar3;
              bVar13 = true;
            }
          }
          lVar5 = FUN_1804730e0(uVar4);
          lVar6 = FUN_180485e50(uVar4);
          param_3 = local_240;
          plVar11 = local_1e8;
          for (; local_240 = param_3, local_1e8 = plVar11, lVar5 != lVar6; lVar5 = lVar5 + 8) {
            uVar4 = FUN_181248c30(lVar5,local_170);
            puVar7 = (undefined8 *)FUN_181245ff0(local_d8,unaff_RSI);
            cVar2 = FUN_18124a630(uVar4,*puVar7);
            FUN_18124a7e0(local_170);
            if (cVar2 != '\0') {
              iVar3 = FUN_1812494c0(unaff_RSI);
              fVar14 = fVar14 + (float)iVar3;
              bVar13 = true;
            }
            uVar4 = local_200;
            param_3 = local_240;
            plVar11 = local_1e8;
          }
          unaff_R12B = unaff_R12B & bVar13;
          unaff_RSI = unaff_RSI + 1;
        } while (unaff_RSI != puVar1);
        if (unaff_R12B != 0) goto LAB_181150ecb;
      }
      FUN_18124a7e0(local_1b8);
      FUN_18124a7e0(local_1b0);
      plVar8 = local_238 + 1;
      param_3 = local_240;
    } while (plVar8 != local_228);
  }
  puVar12 = (undefined1 *)0x0;
  uStack_278 = 0;
  ppuVar10 = &puStack_280;
  puStack_280 = unaff_RSI;
  local_238 = plVar8;
                    /* WARNING: Call to offcut address within same function */
  func_0x000181150f66();
  if ((POPCOUNT((longlong)plVar11 - (ulonglong)unaff_R12B & 0xff) & 1U) == 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
  if (plVar8 == (longlong *)0x0) {
    apuStack_260[0] = &stack0x000001b8;
    ppuVar10 = (undefined8 **)apuStack_260;
    puVar12 = &stack0x0002dfe3;
  }
  *(undefined1 **)((longlong)ppuVar10 + -8) = puVar12;
  *(undefined1 **)((longlong)ppuVar10 + -0x10) = &uStack_11489;
  *(undefined1 **)((longlong)ppuVar10 + -0x18) = &stack0x00059e62;
  *(undefined1 **)((longlong)ppuVar10 + -0x20) = &stack0x000680b2;
  *(undefined1 **)((longlong)ppuVar10 + -0x28) = &stack0x0001e3c2;
  *(undefined1 **)((longlong)ppuVar10 + -0x30) = auStack_104c3;
  *(undefined1 **)((longlong)ppuVar10 + -0x38) = auStack_11488;
  *(undefined1 **)((longlong)ppuVar10 + -0x40) = auStack_11534;
  *(undefined1 **)((longlong)ppuVar10 + -0x48) = &uStack_11489;
                    /* WARNING: Could not recover jumptable at 0x0001811510d6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)&stack0x000709b9)();
  return;
}



############ FUN_ 18115d240 size=129 ############

undefined8 * FUN_18115d240(longlong param_1,undefined8 *param_2,uint param_3)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong local_res8 [4];
  
  if (param_3 < *(uint *)(param_1 + 0x44)) {
    plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x38) + (longlong)(int)param_3 * 8);
    if (plVar1 != (longlong *)0x0) {
      if ((undefined **)*plVar1 == Preset::vftable) {
        local_res8[0] = plVar1[2];
        FUN_18049c9e0(param_2,local_res8[0]);
        return param_2;
      }
      puVar2 = (undefined8 *)(*(code *)((undefined **)*plVar1)[4])(plVar1,local_res8);
      FUN_18049c9e0(param_2,*puVar2);
      return param_2;
    }
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 1811c9eb0 size=1692 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811c9eb0(undefined8 param_1)

{
  int *piVar1;
  uint uVar2;
  byte bVar3;
  byte bVar4;
  char *pcVar5;
  byte bVar6;
  char cVar7;
  undefined2 uVar8;
  errno_t eVar9;
  int iVar10;
  undefined8 *puVar11;
  longlong lVar12;
  undefined8 uVar13;
  uint *puVar14;
  byte *pbVar15;
  int iVar16;
  int iVar17;
  bool bVar18;
  undefined1 auStack_1a8 [32];
  char local_188;
  longlong local_180;
  byte *local_178;
  longlong *local_170;
  undefined1 *local_168;
  undefined4 local_160;
  char *local_158;
  char *local_150;
  byte *local_148;
  byte *local_140;
  longlong local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  undefined **local_118;
  longlong local_110;
  longlong local_108;
  undefined8 local_100;
  byte *local_f8;
  undefined8 local_f0;
  undefined **local_e8;
  undefined1 local_e0 [8];
  tm local_d8;
  undefined8 local_b0;
  longlong local_a8;
  undefined **local_a0;
  undefined8 local_98;
  longlong *local_90;
  undefined1 local_88 [8];
  undefined **local_80;
  undefined1 *local_78;
  longlong local_70;
  ushort local_68;
  longlong local_60;
  ushort local_58;
  longlong *local_50;
  undefined1 local_48 [8];
  longlong *local_40;
  undefined1 local_38 [8];
  ulonglong local_30;
  
  local_b0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  local_160 = 0;
  local_f0 = param_1;
  _ftime64_s(&local_70);
  local_a8 = local_70 * 1000 + (ulonglong)local_68;
  local_110 = local_a8 / 1000;
  eVar9 = _localtime64_s(&local_d8,&local_110);
  if (eVar9 != 0) {
    local_d8.tm_sec = 0;
    local_d8.tm_min = 0;
    local_d8.tm_hour = 0;
    local_d8.tm_mday = 0;
    local_d8.tm_mon = 0;
    local_d8.tm_year = 0;
    local_d8.tm_wday = 0;
    local_d8.tm_yday = 0;
    local_d8.tm_isdst = 0;
  }
  uVar13 = local_d8._24_8_;
  _ftime64_s(&local_60);
  local_108 = local_60 * 1000 + (ulonglong)local_58;
  uVar8 = FUN_181245c50(&local_108);
  puVar11 = (undefined8 *)
            .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
            vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                      (param_1,&local_50);
  (**(code **)(*(longlong *)*puVar11 + 0x20))((longlong *)*puVar11,&local_178,puVar11 + 1);
  (**(code **)(*local_50 + 0xb0))(local_50,local_48);
  iVar16 = 6;
  pbVar15 = local_178;
  do {
    bVar3 = *pbVar15;
    if (bVar3 == 0) {
      local_158 = "";
      goto LAB_1811ca01c;
    }
    pbVar15 = pbVar15 + 1;
    if ((char)bVar3 < '\0') {
      bVar6 = 0x40;
      bVar4 = bVar3 & 0x40;
      while ((bVar4 != 0 && (8 < bVar6))) {
        pbVar15 = pbVar15 + 1;
        bVar6 = bVar6 >> 1;
        bVar4 = bVar3 & bVar6;
      }
    }
    iVar16 = iVar16 + -1;
  } while (-1 < iVar16);
  FUN_18049c9e0(&local_158);
LAB_1811ca01c:
  pcVar5 = local_158;
  iVar16 = atoi(local_158);
  puVar14 = (uint *)(pcVar5 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  local_188 = SUB82(uVar13,4) != (short)iVar16;
  iVar16 = 4;
  pbVar15 = local_178;
  do {
    bVar3 = *pbVar15;
    if (bVar3 == 0) {
      local_150 = "";
      goto LAB_1811ca0ac;
    }
    pbVar15 = pbVar15 + 1;
    if ((char)bVar3 < '\0') {
      bVar6 = 0x40;
      bVar4 = bVar3 & 0x40;
      while ((bVar4 != 0 && (8 < bVar6))) {
        pbVar15 = pbVar15 + 1;
        bVar6 = bVar6 >> 1;
        bVar4 = bVar3 & bVar6;
      }
    }
    iVar16 = iVar16 + -1;
  } while (-1 < iVar16);
  FUN_18049c9e0(&local_150);
LAB_1811ca0ac:
  pcVar5 = local_150;
  iVar16 = atoi(local_150);
  local_170 = (longlong *)CONCAT44(local_170._4_4_,iVar16);
  if ((*(uint *)(pcVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(pcVar5 + -0x10);
    iVar17 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar17 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pcVar5 + -0x10);
    }
  }
  FUN_181211fd0(&local_140,uVar8);
  iVar17 = 0;
  pbVar15 = local_178;
  do {
    bVar3 = *pbVar15;
    if (bVar3 == 0) {
      local_148 = local_178;
      if ((*(uint *)(local_178 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_178 + -0x10) = *(int *)(local_178 + -0x10) + 1;
        UNLOCK();
      }
      goto LAB_1811ca15d;
    }
    iVar17 = iVar17 + 1;
    pbVar15 = pbVar15 + 1;
    if ((char)bVar3 < '\0') {
      bVar6 = 0x40;
      bVar4 = bVar3 & 0x40;
      while ((bVar4 != 0 && (8 < bVar6))) {
        pbVar15 = pbVar15 + 1;
        bVar6 = bVar6 >> 1;
        bVar4 = bVar3 & bVar6;
      }
    }
  } while (iVar17 < 4);
  FUN_18124a8a0(&local_148,local_178);
LAB_1811ca15d:
  pbVar15 = local_148;
  if (local_148 == local_140) {
    iVar17 = 0;
  }
  else {
    iVar17 = FUN_18048cbc0(local_148);
  }
  puVar14 = (uint *)(pbVar15 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar14 = (uint *)(local_140 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  FUN_18049c4e0(&local_100,"0000 0 0");
  local_a0 = &PTR_vftable_18262b560;
  local_98 = local_100;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar18 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar18) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  (**(code **)(PTR_vftable_18262b560 + 0x20))(&PTR_vftable_18262b560,&local_f8,&local_98);
  if (local_178 == local_f8) {
    iVar10 = 0;
  }
  else {
    iVar10 = FUN_18048cbc0(local_178,local_f8);
  }
  puVar14 = (uint *)(local_f8 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  (**(code **)(*local_a0 + 0xb0))(local_a0,&local_98);
  local_118 = CompletedTutorialsOption::vftable;
  bVar18 = false;
  puVar11 = (undefined8 *)
            .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
            vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                      (&local_118,&local_40);
  (**(code **)(*(longlong *)*puVar11 + 0x20))((longlong *)*puVar11,&local_138,puVar11 + 1);
  FUN_181249700(&local_90,&local_138);
  puVar14 = (uint *)(local_138 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  (**(code **)(*local_40 + 0xb0))(local_40,local_38);
  cVar7 = (**(code **)(*local_90 + 0x90))();
  if (cVar7 != '\0') {
    lVar12 = (**(code **)(*local_90 + 0x38))(local_90,local_88);
    bVar18 = 0 < *(int *)(lVar12 + 0xc);
  }
  (**(code **)(*local_90 + 0xb0))(local_90,local_88);
  if ((iVar10 == 0) || ((((!bVar18 && (iVar17 == 0)) && (local_188 != '\0')) && ((byte)iVar16 < 3)))
     ) {
    FUN_181211fd0(&local_120,SUB82(uVar13,4));
    FUN_181212060(&local_128,(byte)local_170 + 1);
    FUN_181211fd0(&local_130,uVar8);
    FUN_18049c4e0(&local_180,&DAT_1821d9564);
    local_170 = &local_180;
    local_168 = &DAT_1821dbf98;
    local_160 = 0x17f;
    uVar13 = FUN_181232d30(&local_168,&local_130);
    uVar13 = FUN_181232d30(uVar13,&local_180);
    uVar13 = FUN_181232d30(uVar13,&local_128);
    uVar13 = FUN_181232d30(uVar13,&local_180);
    FUN_181232d30(uVar13,&local_120);
    puVar14 = (uint *)(local_180 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    local_80 = &PTR_vftable_18262b560;
    local_78 = local_168;
    local_168 = &DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar18 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar18) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    puVar14 = (uint *)(local_130 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    puVar14 = (uint *)(local_128 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    puVar14 = (uint *)(local_120 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    local_e8 = &PTR_vftable_18262b560;
    (**(code **)(PTR_vftable_18262b560 + 0xb8))(&PTR_vftable_18262b560,local_e0,&local_78);
    FUN_1811d0a50(local_f0,&local_e8);
    DAT_1826736a0 = 1;
    (**(code **)(*local_80 + 0xb0))(local_80,&local_78);
  }
  local_118 = ConfigOption::vftable;
  puVar14 = (uint *)(local_178 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
}



############ FUN_ 181218960 size=270 ############

undefined8 FUN_181218960(undefined8 *param_1,longlong *param_2)

{
  int *_Memory;
  undefined8 *puVar1;
  byte bVar2;
  byte bVar3;
  undefined1 *puVar4;
  byte bVar5;
  char cVar6;
  int iVar7;
  byte *pbVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined1 *local_res8;
  undefined8 local_res10;
  
  iVar7 = FUN_1812327b0(param_1,0x5c);
  if (iVar7 + 1 < 1) {
    local_res8 = (undefined1 *)*param_1;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar8 = (byte *)*param_1;
    for (; -1 < iVar7; iVar7 = iVar7 + -1) {
      bVar2 = *pbVar8;
      if (bVar2 == 0) {
        local_res8 = &DAT_1821dbf98;
        goto LAB_1812189ea;
      }
      pbVar8 = pbVar8 + 1;
      if ((char)bVar2 < '\0') {
        bVar5 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar5))) {
          pbVar8 = pbVar8 + 1;
          bVar5 = bVar5 >> 1;
          bVar3 = bVar2 & bVar5;
        }
      }
    }
    FUN_18049c9e0(&local_res8);
  }
LAB_1812189ea:
  puVar4 = local_res8;
  puVar9 = (undefined8 *)*param_2;
  puVar1 = puVar9 + *(int *)((longlong)param_2 + 0xc);
  do {
    if (puVar9 == puVar1) {
      uVar10 = 0;
LAB_181218a23:
      _Memory = (int *)(puVar4 + -0x10);
      if ((*(uint *)(puVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar7 = *_Memory;
        *_Memory = *_Memory + -1;
        UNLOCK();
        if (iVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      return uVar10;
    }
    local_res10 = *puVar9;
    cVar6 = FUN_18049aaa0(local_res10,puVar4,1);
    if (cVar6 != '\0') {
      uVar10 = 1;
      goto LAB_181218a23;
    }
    puVar9 = puVar9 + 1;
  } while( true );
}



############ FUN_ 18122f540 size=74 ############

undefined8 * FUN_18122f540(undefined8 *param_1,longlong param_2,int param_3)

{
  if (param_2 != 0) {
    if (param_3 < 0) {
      FUN_18049c9e0();
      return param_1;
    }
    if (0 < param_3) {
      FUN_18124a8a0(param_1,param_2,param_3 + param_2);
      return param_1;
    }
  }
  *param_1 = &DAT_1821dbf98;
  return param_1;
}



############ FUN_ 1812308e0 size=120 ############

undefined8 * FUN_1812308e0(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte *pbVar2;
  byte bVar3;
  byte bVar4;
  byte *pbVar5;
  
  pbVar2 = (byte *)*param_1;
  pbVar5 = pbVar2;
  if (*pbVar2 != 0) {
    while ((bVar1 = *pbVar5, bVar1 == 0x20 || ((byte)(bVar1 - 9) < 5))) {
      pbVar5 = pbVar5 + 1;
      if ((char)bVar1 < '\0') {
        bVar4 = 0x40;
        bVar3 = bVar1 & 0x40;
        while ((bVar3 != 0 && (8 < bVar4))) {
          pbVar5 = pbVar5 + 1;
          bVar4 = bVar4 >> 1;
          bVar3 = bVar1 & bVar4;
        }
      }
    }
    if (pbVar5 != pbVar2) {
      FUN_18049c9e0(param_2);
      return param_2;
    }
  }
  *param_2 = pbVar2;
  if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 181234240 size=23 ############

undefined8 FUN_181234240(undefined8 param_1)

{
  FUN_18049c9e0();
  return param_1;
}



############ FUN_ 181236220 size=190 ############

undefined8 * FUN_181236220(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  int iVar2;
  ulonglong uVar3;
  int iVar4;
  ulonglong uVar5;
  longlong lVar6;
  
  lVar1 = *(longlong *)(param_1 + 0x20);
  if ((*(longlong *)(param_1 + 0x30) <= lVar1) && (lVar1 < *(longlong *)(param_1 + 0x28))) {
    uVar3 = 0;
    lVar6 = (longlong)((int)lVar1 - *(int *)(param_1 + 0x30)) + *(longlong *)(param_1 + 0x40);
    iVar2 = *(int *)(param_1 + 0x28) - (int)lVar1;
    uVar5 = uVar3;
    if (0 < iVar2) {
      do {
        iVar4 = (int)uVar5;
        if (*(char *)(uVar3 + lVar6) == '\0') {
          *(longlong *)(param_1 + 0x20) = (iVar4 + 1) + lVar1;
          if (lVar6 != 0) {
            if (iVar4 < 0) {
              FUN_18049c9e0(param_2,lVar6);
              return param_2;
            }
            if (0 < iVar4) {
              FUN_18124a8a0(param_2,lVar6,iVar4 + lVar6);
              return param_2;
            }
          }
          *param_2 = &DAT_1821dbf98;
          return param_2;
        }
        uVar3 = uVar3 + 1;
        uVar5 = (ulonglong)(iVar4 + 1);
      } while ((longlong)uVar3 < (longlong)iVar2);
    }
  }
  FUN_181235770(param_1,param_2);
  return param_2;
}



############ FUN_ 1812369a0 size=2107 ############

void FUN_1812369a0(longlong *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  byte bVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  uint uVar10;
  byte *pbVar11;
  undefined8 *puVar12;
  longlong *plVar13;
  undefined8 *puVar14;
  undefined8 uVar15;
  int iVar16;
  uint *puVar17;
  byte *pbVar18;
  char cVar19;
  char cVar20;
  longlong lVar21;
  int iVar22;
  byte *local_res20;
  longlong local_130;
  void *local_128;
  int local_11c;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  undefined8 *local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  undefined8 *local_b0;
  undefined1 local_a8 [8];
  longlong local_a0;
  undefined8 local_98;
  longlong local_90;
  undefined8 local_88;
  longlong local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50;
  
  local_98 = 0xfffffffffffffffe;
  pbVar18 = &DAT_1821da004;
  iVar7 = FUN_18049d2f0();
  if (-1 < iVar7) {
    iVar16 = 0;
LAB_181236a10:
    do {
      bVar1 = *pbVar18;
      pbVar18 = pbVar18 + 1;
      if ((char)bVar1 < '\0') {
        if ((*pbVar18 & 0xc0) == 0x80) {
          do {
            pbVar18 = pbVar18 + 1;
          } while ((*pbVar18 & 0xc0) == 0x80);
          iVar16 = iVar16 + 1;
          goto LAB_181236a10;
        }
      }
      else if (bVar1 == 0) goto LAB_181236a3d;
      iVar16 = iVar16 + 1;
    } while( true );
  }
  local_res20 = &DAT_1821dbf98;
  goto LAB_181236ab3;
LAB_181236a3d:
  iVar7 = iVar7 + iVar16;
  if (iVar7 < 1) {
    local_res20 = (byte *)*param_2;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar18 = (byte *)*param_2;
    while (iVar7 = iVar7 + -1, -1 < iVar7) {
      bVar1 = *pbVar18;
      if (bVar1 == 0) {
        local_res20 = &DAT_1821dbf98;
        goto LAB_181236ab3;
      }
      pbVar18 = pbVar18 + 1;
      if ((char)bVar1 < '\0') {
        bVar6 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar6))) {
          pbVar18 = pbVar18 + 1;
          bVar6 = bVar6 >> 1;
          bVar2 = bVar1 & bVar6;
        }
      }
    }
    FUN_18049c9e0(&local_res20);
  }
LAB_181236ab3:
  iVar7 = 0;
  pbVar18 = local_res20;
LAB_181236ac1:
  do {
    bVar1 = *pbVar18;
    pbVar18 = pbVar18 + 1;
    if ((char)bVar1 < '\0') {
      if ((*pbVar18 & 0xc0) == 0x80) {
        do {
          pbVar18 = pbVar18 + 1;
        } while ((*pbVar18 & 0xc0) == 0x80);
        iVar7 = iVar7 + 1;
        goto LAB_181236ac1;
      }
    }
    else if (bVar1 == 0) goto LAB_181236af7;
    iVar7 = iVar7 + 1;
  } while( true );
LAB_181236c6c:
  if (1 < iVar8) {
    iVar8 = 0;
LAB_181236c80:
    do {
      bVar1 = *pbVar18;
      pbVar18 = pbVar18 + 1;
      if ((char)bVar1 < '\0') {
        if ((*pbVar18 & 0xc0) == 0x80) {
          do {
            pbVar18 = pbVar18 + 1;
          } while ((*pbVar18 & 0xc0) == 0x80);
          iVar8 = iVar8 + 1;
          goto LAB_181236c80;
        }
      }
      else if (bVar1 == 0) goto LAB_181236cad;
      iVar8 = iVar8 + 1;
    } while( true );
  }
LAB_181236d34:
  if (((bVar3) && (iVar16 != 0)) && (iVar16 < iVar7)) {
    bVar3 = false;
  }
LAB_181236e23:
  iVar22 = iVar22 + 1;
  lVar21 = lVar21 + 1;
  if (local_11c <= iVar22) goto code_r0x000181236e3d;
  goto LAB_181236be0;
LAB_181236cad:
  puVar12 = (undefined8 *)FUN_181231fc0(&local_e8,&DAT_1821da4ec,iVar8);
  local_88 = *puVar12;
  plVar13 = (longlong *)FUN_1812319a0(param_1,&local_f0,local_88,&DAT_1821da014);
  local_80 = *param_1;
  *param_1 = *plVar13;
  *plVar13 = local_80;
  puVar17 = (uint *)(local_f0 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  puVar17 = (uint *)(local_e8 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  goto LAB_181236d34;
code_r0x000181236e3d:
  if (iVar7 < iVar16) {
    iVar7 = iVar16;
  }
  if (1 < iVar7) {
    if (iVar7 == local_11c) {
      FUN_18049c4e0(&local_c8,&DAT_1821da534);
      local_60 = *param_1;
      *param_1 = local_c8;
      puVar17 = (uint *)(local_60 + -0x10);
      uVar10 = *puVar17;
    }
    else {
      if (bVar3) {
        uVar15 = FUN_181231fc0(&local_b8,&DAT_1821da51c,iVar7 + -1);
        FUN_18049c4e0(&local_110,&DAT_1821da5ac);
        plVar13 = (longlong *)FUN_181232d30(&local_110,uVar15);
        local_108 = *plVar13;
        if ((*(uint *)(local_108 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_108 + -0x10) = *(int *)(local_108 + -0x10) + 1;
          UNLOCK();
        }
        puVar17 = (uint *)(local_110 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar10 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        plVar13 = &local_108;
        bVar5 = true;
        bVar4 = true;
        bVar3 = false;
      }
      else {
        plVar13 = (longlong *)FUN_181231fc0(&local_c0,&DAT_1821da59c,iVar7);
        bVar5 = false;
        bVar4 = false;
        bVar3 = true;
      }
      local_f8 = (undefined8 *)*plVar13;
      *plVar13 = (longlong)&DAT_1821dbf98;
      if ((bVar3) && (puVar17 = (uint *)(local_c0 + -0x10), (*puVar17 & 0x30000000) == 0)) {
        LOCK();
        uVar10 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      if ((bVar4) && (puVar17 = (uint *)(local_108 + -0x10), (*puVar17 & 0x30000000) == 0)) {
        LOCK();
        uVar10 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      if ((bVar5) && (puVar17 = (uint *)(local_b8 + -0x10), (*puVar17 & 0x30000000) == 0)) {
        LOCK();
        uVar10 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      local_b0 = local_f8;
      puVar12 = local_f8;
      uVar9 = FUN_180493130(&local_b0);
      iVar7 = FUN_181249270(param_1,puVar12);
      if (iVar7 < 0) {
        local_100 = *param_1;
        if ((*(uint *)(local_100 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_100 + -0x10) = *(int *)(local_100 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181231b00(param_1,&local_100,iVar7,uVar9,&DAT_1821da624);
      }
      local_58 = *param_1;
      *param_1 = local_100;
      puVar17 = (uint *)(local_58 + -0x10);
      if ((*puVar17 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar17;
        *puVar17 = *puVar17 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar17);
        }
      }
      if (cVar19 != '\0') {
        FUN_181232ce0(param_1,0x3a);
      }
      puVar17 = (uint *)(local_f8 + -2);
      uVar10 = *puVar17;
    }
    if ((uVar10 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
  }
  goto LAB_1812370bc;
LAB_181236af7:
  pbVar18 = (byte *)*param_2;
  iVar16 = 0;
  while( true ) {
    while( true ) {
      bVar1 = *pbVar18;
      pbVar18 = pbVar18 + 1;
      if (-1 < (char)bVar1) break;
      if ((*pbVar18 & 0xc0) != 0x80) goto LAB_181236b28;
      do {
        pbVar18 = pbVar18 + 1;
      } while ((*pbVar18 & 0xc0) == 0x80);
      iVar16 = iVar16 + 1;
    }
    if (bVar1 == 0) break;
LAB_181236b28:
    iVar16 = iVar16 + 1;
  }
  iVar22 = 0;
  if (0 < iVar16 - iVar7) {
    iVar22 = iVar16 - iVar7;
  }
  FUN_1812340b0(&local_118,*param_2,(longlong)iVar22);
  FUN_1812487f0(&local_118,param_1,&DAT_1821d9fbc);
  puVar17 = (uint *)(local_118 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  local_90 = *param_1;
  FUN_18122ce30(&local_128,local_90,&DAT_1821da07c,&DAT_1821da804);
  iVar7 = 0;
  iVar16 = 0;
  bVar3 = false;
  cVar19 = '\0';
  iVar22 = 0;
  if (0 < local_11c) {
    lVar21 = 0;
LAB_181236be0:
    puVar12 = (undefined8 *)((longlong)local_128 + lVar21 * 8);
    cVar20 = cVar19;
    iVar8 = FUN_18049c3c0(*puVar12);
    if (iVar8 == 0) {
      iVar7 = iVar7 + 1;
      if (lVar21 == 0) {
        bVar3 = true;
      }
      else if ((iVar22 == local_11c + -1) && (cVar19 = cVar20, iVar16 < iVar7)) {
        cVar19 = '\x01';
      }
      pbVar18 = (byte *)*puVar12;
      iVar8 = 0;
      pbVar11 = pbVar18;
LAB_181236c31:
      do {
        bVar1 = *pbVar11;
        pbVar11 = pbVar11 + 1;
        if ((char)bVar1 < '\0') {
          if ((*pbVar11 & 0xc0) == 0x80) {
            do {
              pbVar11 = pbVar11 + 1;
            } while ((*pbVar11 & 0xc0) == 0x80);
            iVar8 = iVar8 + 1;
            goto LAB_181236c31;
          }
        }
        else if (bVar1 == 0) goto LAB_181236c6c;
        iVar8 = iVar8 + 1;
      } while( true );
    }
    uVar15 = FUN_181230650(puVar12,&local_d0,&DAT_1821da4c4);
    puVar14 = (undefined8 *)FUN_181248c30(uVar15,&local_d8);
    local_78 = *puVar14;
    local_70 = *puVar12;
    plVar13 = (longlong *)FUN_1812319a0(param_1,&local_e0);
    local_68 = *param_1;
    *param_1 = *plVar13;
    *plVar13 = local_68;
    puVar17 = (uint *)(local_e0 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    puVar17 = (uint *)(local_d8 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    puVar17 = (uint *)(local_d0 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    if (0 < iVar7) {
      if (iVar16 < iVar7) {
        iVar16 = iVar7;
      }
      iVar7 = 0;
    }
    goto LAB_181236e23;
  }
LAB_1812370bc:
  if (*local_res20 != 0) {
    plVar13 = (longlong *)FUN_181246550(local_a8,&DAT_1821da644,param_1);
    FUN_181232e20(plVar13,&DAT_1821da60c,&DAT_1821da60d);
    local_130 = *plVar13;
    if ((*(uint *)(local_130 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_130 + -0x10) = *(int *)(local_130 + -0x10) + 1;
      UNLOCK();
    }
    puVar17 = (uint *)(*plVar13 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    plVar13 = (longlong *)FUN_181232d30(&local_130,&local_res20);
    local_a0 = *plVar13;
    if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
      UNLOCK();
    }
    puVar17 = (uint *)(local_130 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    local_50 = *param_1;
    *param_1 = local_a0;
    puVar17 = (uint *)(local_50 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
  }
  FUN_180488c50(&local_128);
                    /* WARNING: Subroutine does not return */
  free(local_128);
}



############ FUN_ 181238020 size=515 ############

longlong * FUN_181238020(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  byte bVar2;
  char cVar3;
  byte bVar4;
  int iVar5;
  uint uVar6;
  uint *_Memory;
  longlong lVar7;
  byte *pbVar8;
  int iVar9;
  undefined1 *local_res18;
  
  cVar3 = FUN_181230100(param_2,&DAT_1821d9e24,param_3,param_4,0xfffffffffffffffe);
  if (cVar3 == '\0') {
    iVar5 = FUN_181232460(param_2,&DAT_1821d9e6c);
    iVar9 = FUN_181249270(param_2,&DAT_1821d9eac);
    if (iVar9 == iVar5) {
      iVar5 = FUN_181232320(param_2,&DAT_1821d9ed4);
      if (-1 < iVar5) {
        FUN_1812490c0(param_2,param_1,0,iVar5);
        return param_1;
      }
      lVar7 = *param_2;
      *param_1 = lVar7;
      uVar6 = *(uint *)(lVar7 + -0x10);
    }
    else {
      lVar7 = *param_2;
      *param_1 = lVar7;
      uVar6 = *(uint *)(lVar7 + -0x10);
    }
    if ((uVar6 & 0x30000000) != 0) {
      return param_1;
    }
    LOCK();
    *(int *)(lVar7 + -0x10) = *(int *)(lVar7 + -0x10) + 1;
    UNLOCK();
    return param_1;
  }
  pbVar8 = &DAT_1821d9e4c;
  iVar5 = FUN_18049d2f0(*param_2,&DAT_1821d9e4c);
  if (iVar5 < 0) {
LAB_181238078:
    local_res18 = &DAT_1821dbf98;
  }
  else {
    iVar9 = 0;
    while( true ) {
      while( true ) {
        bVar1 = *pbVar8;
        pbVar8 = pbVar8 + 1;
        if (-1 < (char)bVar1) break;
        if ((*pbVar8 & 0xc0) != 0x80) goto LAB_1812380b8;
        do {
          pbVar8 = pbVar8 + 1;
        } while ((*pbVar8 & 0xc0) == 0x80);
        iVar9 = iVar9 + 1;
      }
      if (bVar1 == 0) break;
LAB_1812380b8:
      iVar9 = iVar9 + 1;
    }
    iVar9 = iVar9 + iVar5;
    if (iVar9 < 1) {
      local_res18 = (undefined1 *)*param_2;
      if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      pbVar8 = (byte *)*param_2;
      while (iVar9 = iVar9 + -1, -1 < iVar9) {
        bVar1 = *pbVar8;
        if (bVar1 == 0) goto LAB_181238078;
        pbVar8 = pbVar8 + 1;
        if ((char)bVar1 < '\0') {
          bVar4 = 0x40;
          bVar2 = bVar1 & 0x40;
          while ((bVar2 != 0 && (8 < bVar4))) {
            pbVar8 = pbVar8 + 1;
            bVar4 = bVar4 >> 1;
            bVar2 = bVar1 & bVar4;
          }
        }
      }
      FUN_18049c9e0(&local_res18);
    }
  }
  iVar5 = FUN_181232320(&local_res18,&DAT_1821d9e3c);
  if (iVar5 < 0) {
    *param_1 = (longlong)local_res18;
    if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    FUN_1812490c0(&local_res18,param_1,0,iVar5);
  }
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar6 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18123f170 size=1480 ############

longlong * FUN_18123f170(longlong *param_1,longlong *param_2,longlong *param_3)

{
  byte bVar1;
  wint_t wVar2;
  wint_t wVar3;
  int iVar4;
  DWORD DVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  longlong lVar9;
  byte *pbVar10;
  undefined8 *puVar11;
  uint *puVar12;
  byte *pbVar13;
  longlong lVar14;
  byte *pbVar15;
  size_t _Size;
  byte *pbVar16;
  void *_Dst;
  byte *_Src;
  bool bVar17;
  uint local_res18;
  int local_res20;
  byte *local_a0;
  int local_98;
  longlong local_90;
  byte *local_88;
  byte *local_80;
  byte *local_78;
  longlong local_70 [2];
  byte *local_60;
  undefined1 local_58 [24];
  
  local_70[1] = 0xfffffffffffffffe;
  if ((*param_3 == *param_1) || (iVar4 = FUN_18049bb30(*param_3), iVar4 == 0)) {
    FUN_18049c4e0(param_2,&DAT_1821d9b1c);
    return param_2;
  }
  local_a0 = (byte *)*param_1;
  if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
    UNLOCK();
  }
LAB_18123f1f0:
  pbVar16 = local_a0;
  if (*local_a0 != 0) {
    lVar9 = -1;
    do {
      lVar9 = lVar9 + 1;
    } while (local_a0[lVar9] != 0);
    local_78 = local_a0 + lVar9;
    iVar4 = 0;
    do {
      local_78 = local_78 + -1;
      if ((*local_78 & 0xc0) != 0x80) break;
      iVar4 = iVar4 + 1;
    } while (iVar4 < 4);
    iVar4 = FUN_180492f10(&local_78);
    if (iVar4 == 0x5c) {
      iVar4 = 0;
      pbVar10 = pbVar16;
LAB_18123f255:
      do {
        bVar1 = *pbVar10;
        pbVar10 = pbVar10 + 1;
        if ((char)bVar1 < '\0') {
          if ((*pbVar10 & 0xc0) == 0x80) {
            do {
              pbVar10 = pbVar10 + 1;
            } while ((*pbVar10 & 0xc0) == 0x80);
            iVar4 = iVar4 + 1;
            goto LAB_18123f255;
          }
        }
        else if (bVar1 == 0) goto LAB_18123f28c;
        iVar4 = iVar4 + 1;
      } while( true );
    }
  }
  if (*(char *)*param_3 == '\0') {
LAB_18123f30f:
    bVar17 = false;
  }
  else {
    puVar11 = (undefined8 *)FUN_18049a930(local_58,param_3);
    DVar5 = GetFileAttributesW((LPCWSTR)*puVar11);
    if ((DVar5 & 0x10) != 0) goto LAB_18123f30f;
    bVar17 = true;
  }
  if (bVar17) {
    FUN_181241230(param_3,local_70);
  }
  FUN_1812416f0(&local_88);
  pbVar10 = local_88;
  if ((bVar17) &&
     (puVar12 = (uint *)(local_70[0] + -0x10), pbVar16 = local_a0, (*puVar12 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  local_98 = 0;
  local_res20 = 0;
  pbVar13 = local_88;
  pbVar15 = local_88;
  _Src = pbVar16;
  goto LAB_18123f390;
LAB_18123f28c:
  iVar8 = 0;
  if (0 < iVar4 + -1) {
    iVar8 = iVar4 + -1;
  }
  FUN_1812340b0(&local_80,pbVar16,(longlong)iVar8);
  local_60 = pbVar16;
  local_a0 = local_80;
  local_80 = pbVar16;
  puVar12 = (uint *)(pbVar16 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  goto LAB_18123f1f0;
LAB_18123f390:
  bVar1 = *pbVar16;
  pbVar16 = pbVar16 + 1;
  local_res18 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    local_res18 = 0x7f;
    uVar6 = 0x40;
    iVar4 = 0;
    if ((bVar1 & 0x40) != 0) {
      do {
        if (uVar6 < 9) break;
        local_res18 = local_res18 >> 1;
        iVar4 = iVar4 + 1;
        uVar6 = uVar6 >> 1;
      } while ((bVar1 & uVar6) != 0);
    }
    local_res18 = bVar1 & local_res18;
    for (; (iVar4 = iVar4 + -1, -1 < iVar4 && ((*pbVar16 & 0xc0) == 0x80)); pbVar16 = pbVar16 + 1) {
      local_res18 = *pbVar16 & 0x3f | local_res18 << 6;
    }
  }
  bVar1 = *pbVar15;
  pbVar15 = pbVar15 + 1;
  uVar6 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar6 = 0x7f;
    uVar7 = 0x40;
    iVar4 = 0;
    if ((bVar1 & 0x40) != 0) {
      do {
        if (uVar7 < 9) break;
        uVar6 = uVar6 >> 1;
        iVar4 = iVar4 + 1;
        uVar7 = uVar7 >> 1;
      } while ((bVar1 & uVar7) != 0);
    }
    uVar6 = bVar1 & uVar6;
    for (; (iVar4 = iVar4 + -1, -1 < iVar4 && ((*pbVar15 & 0xc0) == 0x80)); pbVar15 = pbVar15 + 1) {
      uVar6 = *pbVar15 & 0x3f | uVar6 << 6;
    }
  }
  if (local_res18 != uVar6) {
    wVar2 = towlower((wint_t)local_res18);
    wVar3 = towlower((wint_t)uVar6);
    if (wVar2 != wVar3) {
LAB_18123f4a4:
      if (local_98 == 0) {
        iVar4 = 1;
      }
      else if ((local_98 != 1) ||
              (iVar4 = local_98, iVar8 = FUN_180493050(&local_a0,1), iVar8 != 0x5c)) {
        iVar4 = 0;
        do {
          bVar1 = *pbVar13;
          pbVar13 = pbVar13 + 1;
          uVar6 = (uint)bVar1;
          if ((char)bVar1 < '\0') {
            uVar6 = 0x7f;
            uVar7 = 0x40;
            iVar8 = 0;
            if ((bVar1 & 0x40) != 0) {
              do {
                if (uVar7 < 9) break;
                uVar6 = uVar6 >> 1;
                iVar8 = iVar8 + 1;
                uVar7 = uVar7 >> 1;
              } while ((bVar1 & uVar7) != 0);
            }
            uVar6 = bVar1 & uVar6;
            for (; (iVar8 = iVar8 + -1, -1 < iVar8 && ((*pbVar13 & 0xc0) == 0x80));
                pbVar13 = pbVar13 + 1) {
              uVar6 = *pbVar13 & 0x3f | uVar6 << 6;
            }
          }
          if (uVar6 == 0) {
            if (iVar4 != 0) {
              FUN_181231fc0(&local_90,&DAT_1821d9b7c,iVar4);
              lVar9 = -1;
              do {
                lVar9 = lVar9 + 1;
              } while (_Src[lVar9] != 0);
              if (0 < (int)lVar9) {
                lVar14 = -1;
                do {
                  lVar14 = lVar14 + 1;
                } while (*(char *)(local_90 + lVar14) != '\0');
                _Size = (size_t)(int)lVar9;
                FUN_1812342b0(&local_90,lVar14 + _Size);
                _Dst = (void *)((int)lVar14 + local_90);
                memcpy(_Dst,_Src,_Size);
                *(undefined1 *)((longlong)_Dst + _Size) = 0;
              }
              *param_2 = local_90;
              if ((DAT_1821dbf88 & 0x30000000) == 0) {
                LOCK();
                uVar6 = DAT_1821dbf88 - 1;
                UNLOCK();
                bVar17 = DAT_1821dbf88 == 0;
                DAT_1821dbf88 = uVar6;
                if (bVar17) {
                    /* WARNING: Subroutine does not return */
                  free(&DAT_1821dbf88);
                }
              }
              puVar12 = (uint *)(local_88 + -0x10);
              if ((*puVar12 & 0x30000000) == 0) {
                LOCK();
                uVar6 = *puVar12;
                *puVar12 = *puVar12 - 1;
                UNLOCK();
                if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar12);
                }
              }
              puVar12 = (uint *)(local_a0 + -0x10);
              if ((*puVar12 & 0x30000000) != 0) {
                return param_2;
              }
              LOCK();
              uVar6 = *puVar12;
              *puVar12 = *puVar12 - 1;
              UNLOCK();
              if (uVar6 != 0) {
                return param_2;
              }
                    /* WARNING: Subroutine does not return */
              free(puVar12);
            }
            FUN_18049c9e0(param_2,_Src);
            puVar12 = (uint *)(pbVar10 + -0x10);
            if ((*puVar12 & 0x30000000) == 0) {
              LOCK();
              uVar6 = *puVar12;
              *puVar12 = *puVar12 - 1;
              UNLOCK();
              if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar12);
              }
            }
            puVar12 = (uint *)(local_a0 + -0x10);
            if ((*puVar12 & 0x30000000) != 0) {
              return param_2;
            }
            LOCK();
            uVar6 = *puVar12;
            *puVar12 = *puVar12 - 1;
            UNLOCK();
            if (uVar6 != 0) {
              return param_2;
            }
                    /* WARNING: Subroutine does not return */
            free(puVar12);
          }
          if (uVar6 == 0x5c) {
            iVar4 = iVar4 + 1;
          }
        } while( true );
      }
      lVar9 = *param_1;
      *param_2 = lVar9;
      if ((*(uint *)(lVar9 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar9 + -0x10) = *(int *)(lVar9 + -0x10) + iVar4;
        UNLOCK();
      }
      puVar12 = (uint *)(local_88 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar6 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      puVar12 = (uint *)(local_a0 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar6 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      return param_2;
    }
  }
  if (local_res18 == 0) goto LAB_18123f4a4;
  local_res20 = local_res20 + 1;
  if (local_res18 == 0x5c) {
    pbVar13 = pbVar15;
    _Src = pbVar16;
    local_98 = local_res20;
  }
  goto LAB_18123f390;
}



############ FUN_ 18123fb50 size=687 ############

undefined8 * FUN_18123fb50(undefined8 *param_1,undefined8 *param_2,char *param_3)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  longlong lVar4;
  byte bVar5;
  int iVar6;
  longlong lVar7;
  undefined8 *puVar8;
  uint *puVar9;
  int iVar10;
  byte *pbVar11;
  size_t _Size;
  longlong lVar12;
  byte *pbVar13;
  char local_res8 [8];
  char *local_res18;
  byte *local_res20;
  byte *local_68;
  byte *local_60;
  longlong local_58 [2];
  byte *local_48;
  undefined8 local_40;
  
  local_58[1] = 0xfffffffffffffffe;
  pbVar11 = (byte *)*param_1;
  if (*pbVar11 == 0) {
    *param_2 = &DAT_1821dbf98;
  }
  else {
    local_res18 = param_3;
    iVar6 = FUN_1812327b0(param_1,0x5c);
    if (iVar6 + 1 < 1) {
      local_res20 = pbVar11;
      if ((*(uint *)(pbVar11 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pbVar11 + -0x10) = *(int *)(pbVar11 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      for (; -1 < iVar6; iVar6 = iVar6 + -1) {
        bVar2 = *pbVar11;
        if (bVar2 == 0) {
          local_res20 = &DAT_1821dbf98;
          goto LAB_18123fc12;
        }
        pbVar11 = pbVar11 + 1;
        if ((char)bVar2 < '\0') {
          bVar5 = 0x40;
          bVar3 = bVar2 & 0x40;
          while ((bVar3 != 0 && (8 < bVar5))) {
            pbVar11 = pbVar11 + 1;
            bVar5 = bVar5 >> 1;
            bVar3 = bVar2 & bVar5;
          }
        }
      }
      FUN_18049c9e0(&local_res20,pbVar11);
    }
LAB_18123fc12:
    pbVar11 = local_res20;
    iVar6 = FUN_1812327b0(&local_res20);
    if (-1 < iVar6) {
      local_48 = pbVar11;
      if (iVar6 < 1) {
        local_68 = &DAT_1821dbf98;
      }
      else {
        iVar10 = 0;
        pbVar13 = pbVar11;
        if (0 < iVar6) {
          do {
            bVar2 = *pbVar13;
            if (bVar2 == 0) {
              local_48 = local_res20;
              local_68 = pbVar11;
              if ((*(uint *)(pbVar11 + -0x10) & 0x30000000) == 0) {
                LOCK();
                *(int *)(pbVar11 + -0x10) = *(int *)(pbVar11 + -0x10) + 1;
                UNLOCK();
              }
              goto LAB_18123fc8e;
            }
            iVar10 = iVar10 + 1;
            pbVar13 = pbVar13 + 1;
            if ((char)bVar2 < '\0') {
              bVar5 = 0x40;
              bVar3 = bVar2 & 0x40;
              while ((bVar3 != 0 && (8 < bVar5))) {
                pbVar13 = pbVar13 + 1;
                bVar5 = bVar5 >> 1;
                bVar3 = bVar2 & bVar5;
              }
            }
          } while (iVar10 < iVar6);
        }
        FUN_18124a8a0(&local_68,pbVar11);
      }
LAB_18123fc8e:
      local_res20 = local_68;
      puVar9 = (uint *)(local_48 + -0x10);
      pbVar11 = local_68;
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
    }
    if ((*local_res18 != '\0') && (iVar6 = FUN_180493050(&local_res18,0), iVar6 != 0x2e)) {
      local_res8[0] = '.';
      local_res8[1] = '\0';
      lVar12 = -1;
      do {
        lVar7 = lVar12 + 1;
        lVar4 = lVar12 + 1;
        lVar12 = lVar7;
      } while (local_res8[lVar4] != '\0');
      iVar6 = ((int)local_res8 + (int)lVar7) - (int)local_res8;
      if (0 < iVar6) {
        lVar12 = -1;
        do {
          lVar12 = lVar12 + 1;
        } while (pbVar11[lVar12] != 0);
        _Size = (size_t)iVar6;
        FUN_1812342b0(&local_res20,lVar12 + _Size);
        pbVar11 = local_res20;
        pbVar13 = local_res20 + (int)lVar12;
        memcpy(pbVar13,local_res8,_Size);
        pbVar13[_Size] = 0;
      }
    }
    if ((*(uint *)(pbVar11 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar11 + -0x10) = *(int *)(pbVar11 + -0x10) + 1;
      UNLOCK();
    }
    local_60 = pbVar11;
    puVar8 = (undefined8 *)FUN_1804933b0(local_58,&local_60,local_res18);
    local_40 = *puVar8;
    FUN_181240e30(param_1,param_2);
    puVar9 = (uint *)(local_58[0] + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    if ((*(uint *)(pbVar11 + -0x10) & 0x30000000) == 0) {
      LOCK();
      pbVar13 = pbVar11 + -0x10;
      iVar6 = *(int *)pbVar13;
      *(int *)pbVar13 = *(int *)pbVar13 + -1;
      UNLOCK();
      if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(pbVar11 + -0x10);
      }
    }
  }
  return param_2;
}



############ FUN_ 1812400f0 size=639 ############

longlong * FUN_1812400f0(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  byte bVar4;
  bool bVar5;
  byte bVar6;
  DWORD DVar7;
  int iVar8;
  int iVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  uint *puVar12;
  byte *pbVar13;
  int iVar14;
  undefined1 *local_res8;
  undefined1 *local_res20;
  longlong local_38 [2];
  undefined1 local_28 [16];
  
  local_38[1] = 0xfffffffffffffffe;
  if (*(char *)*param_1 != '\0') {
    puVar10 = (undefined8 *)FUN_18049a930(local_28,param_1);
    DVar7 = GetFileAttributesW((LPCWSTR)*puVar10);
    if (DVar7 != 0xffffffff) {
      bVar5 = true;
      goto LAB_181240144;
    }
  }
  bVar5 = false;
LAB_181240144:
  if (bVar5) {
    iVar8 = FUN_1812327b0(param_1,0x2e);
    iVar9 = FUN_1812327b0(param_1,0x5c);
    if (iVar9 < iVar8) {
      if (iVar8 < 1) {
        local_res20 = (undefined1 *)*param_1;
        if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        pbVar13 = (byte *)*param_1;
        while (iVar8 = iVar8 + -1, -1 < iVar8) {
          bVar2 = *pbVar13;
          if (bVar2 == 0) goto LAB_181240202;
          pbVar13 = pbVar13 + 1;
          if ((char)bVar2 < '\0') {
            bVar6 = 0x40;
            bVar4 = bVar2 & 0x40;
            while ((bVar4 != 0 && (8 < bVar6))) {
              pbVar13 = pbVar13 + 1;
              bVar6 = bVar6 >> 1;
              bVar4 = bVar2 & bVar6;
            }
          }
        }
        FUN_18049c9e0(&local_res20);
      }
    }
    else {
LAB_181240202:
      local_res20 = &DAT_1821dbf98;
    }
    iVar8 = FUN_1812327b0(param_1,0x5c);
    iVar14 = iVar8 + 1;
    iVar9 = FUN_1812327b0(param_1,0x2e);
    if (iVar14 < iVar9) {
      FUN_1812490c0(param_1,&local_res8,iVar14,iVar9);
    }
    else if (iVar14 < 1) {
      local_res8 = (undefined1 *)*param_1;
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      pbVar13 = (byte *)*param_1;
      for (; -1 < iVar8; iVar8 = iVar8 + -1) {
        bVar2 = *pbVar13;
        if (bVar2 == 0) {
          local_res8 = &DAT_1821dbf98;
          goto LAB_1812402ae;
        }
        pbVar13 = pbVar13 + 1;
        if ((char)bVar2 < '\0') {
          bVar6 = 0x40;
          bVar4 = bVar2 & 0x40;
          while ((bVar4 != 0 && (8 < bVar6))) {
            pbVar13 = pbVar13 + 1;
            bVar6 = bVar6 >> 1;
            bVar4 = bVar2 & bVar6;
          }
        }
      }
      FUN_18049c9e0(&local_res8);
    }
LAB_1812402ae:
    uVar11 = FUN_181241230(param_1,local_38);
    FUN_181240380(uVar11,param_2,&local_res8,&local_res20,1);
    puVar12 = (uint *)(local_38[0] + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
    puVar12 = (uint *)(local_res8 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
    puVar12 = (uint *)(local_res20 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  else {
    lVar3 = *param_1;
    *param_2 = lVar3;
    if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
      UNLOCK();
    }
  }
  return param_2;
}



############ FUN_ 181241330 size=132 ############

longlong * FUN_181241330(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  int iVar2;
  
  iVar2 = FUN_1812327b0(param_1,0x5c);
  if (0 < iVar2) {
    FUN_1812490c0(param_1,param_2,0,iVar2);
    return param_2;
  }
  if (iVar2 == 0) {
    FUN_18049c9e0(param_2,&DAT_1821db634);
    return param_2;
  }
  lVar1 = *param_1;
  *param_2 = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 181249540 size=23 ############

undefined8 FUN_181249540(undefined8 param_1)

{
  FUN_18049c9e0();
  return param_1;
}



############ FUN_ 1812c2890 size=243 ############

undefined8 * FUN_1812c2890(undefined8 *param_1,int *param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint *_Memory;
  undefined1 *local_res20;
  
  if (((param_3 < 9) || (*param_2 != 0x21324356)) || (iVar3 = param_2[1], iVar3 < 1)) {
    *param_1 = 0;
    return param_1;
  }
  iVar2 = param_3 + -8;
  if (iVar3 < param_3 + -8) {
    iVar2 = iVar3;
  }
  param_2 = param_2 + 2;
  if (param_2 != (int *)0x0) {
    if (iVar2 < 0) {
      FUN_18049c9e0(&local_res20);
      goto LAB_1812c293e;
    }
    if (0 < iVar2) {
      FUN_18124a8a0(&local_res20,param_2,(longlong)iVar2 + (longlong)param_2,0x21324356,
                    0xfffffffffffffffe);
      goto LAB_1812c293e;
    }
  }
  local_res20 = &DAT_1821dbf98;
LAB_1812c293e:
  FUN_181226010(param_1,&local_res20);
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1812e5cc0 size=1244 ############

double FUN_1812e5cc0(longlong param_1,undefined8 *param_2)

{
  uint *_Memory;
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  longlong *plVar4;
  byte bVar5;
  char cVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  byte bVar9;
  uint *puVar10;
  byte *pbVar11;
  byte *pbVar12;
  int iVar13;
  int iVar14;
  float fVar15;
  undefined4 uVar16;
  float fVar17;
  double dVar18;
  byte *local_res8;
  byte *local_res10;
  byte *local_res18;
  byte *local_res20;
  undefined8 local_78;
  longlong local_70;
  undefined8 local_68;
  byte *local_60;
  byte *local_58;
  
  local_68 = 0xfffffffffffffffe;
  pbVar12 = (byte *)*param_2;
  pbVar11 = pbVar12;
  if (*pbVar12 != 0) {
    while ((bVar2 = *pbVar11, bVar2 == 0x20 || ((byte)(bVar2 - 9) < 5))) {
      pbVar11 = pbVar11 + 1;
      if ((char)bVar2 < '\0') {
        bVar9 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar9))) {
          pbVar11 = pbVar11 + 1;
          bVar9 = bVar9 >> 1;
          bVar5 = bVar2 & bVar9;
        }
      }
    }
    if (pbVar11 != pbVar12) {
      FUN_18049c9e0(&local_res8);
      goto LAB_1812e5d51;
    }
  }
  local_res8 = pbVar12;
  if ((*(uint *)(pbVar12 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pbVar12 + -0x10) = *(int *)(pbVar12 + -0x10) + 1;
    UNLOCK();
  }
LAB_1812e5d51:
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x200) + 0x210);
  puVar10 = (uint *)(lVar3 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    *puVar10 = *puVar10 + 1;
    UNLOCK();
  }
  cVar6 = FUN_181231320(&local_res8,lVar3);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if (cVar6 != '\0') {
    pbVar12 = *(byte **)(*(longlong *)(param_1 + 0x200) + 0x210);
    puVar10 = (uint *)(pbVar12 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      *puVar10 = *puVar10 + 1;
      UNLOCK();
    }
    iVar14 = 0;
    pbVar11 = local_res8;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar11;
        pbVar11 = pbVar11 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar11 & 0xc0) != 0x80) goto LAB_1812e5e27;
        do {
          pbVar11 = pbVar11 + 1;
        } while ((*pbVar11 & 0xc0) == 0x80);
        iVar14 = iVar14 + 1;
      }
      if (bVar2 == 0) break;
LAB_1812e5e27:
      iVar14 = iVar14 + 1;
    }
    iVar13 = 0;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar12;
        pbVar12 = pbVar12 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar12 & 0xc0) != 0x80) goto LAB_1812e5e67;
        do {
          pbVar12 = pbVar12 + 1;
        } while ((*pbVar12 & 0xc0) == 0x80);
        iVar13 = iVar13 + 1;
      }
      if (bVar2 == 0) break;
LAB_1812e5e67:
      iVar13 = iVar13 + 1;
    }
    iVar14 = iVar14 - iVar13;
    local_60 = local_res8;
    if (iVar14 < 1) {
      local_res10 = &DAT_1821dbf98;
    }
    else {
      iVar13 = 0;
      pbVar12 = local_res8;
      if (0 < iVar14) {
        do {
          bVar2 = *pbVar12;
          if (bVar2 == 0) {
            local_res10 = local_res8;
            if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
              UNLOCK();
            }
            goto LAB_1812e5ec9;
          }
          iVar13 = iVar13 + 1;
          pbVar12 = pbVar12 + 1;
          if ((char)bVar2 < '\0') {
            bVar9 = 0x40;
            bVar5 = bVar2 & 0x40;
            while ((bVar5 != 0 && (8 < bVar9))) {
              pbVar12 = pbVar12 + 1;
              bVar9 = bVar9 >> 1;
              bVar5 = bVar2 & bVar9;
            }
          }
        } while (iVar13 < iVar14);
      }
      FUN_18124a8a0(&local_res10,local_res8);
      local_60 = local_res8;
    }
LAB_1812e5ec9:
    local_res8 = local_res10;
    _Memory = (uint *)(local_60 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  if (*(longlong *)(param_1 + 0x1b8) == 0) {
    iVar14 = FUN_180492f10(&local_res8);
    while (iVar14 == 0x2b) {
      iVar14 = 0;
      pbVar12 = local_res8;
      do {
        bVar2 = *pbVar12;
        if (bVar2 == 0) {
          local_res20 = &DAT_1821dbf98;
          goto LAB_1812e6039;
        }
        pbVar12 = pbVar12 + 1;
        if ((char)bVar2 < '\0') {
          bVar9 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar9))) {
            pbVar12 = pbVar12 + 1;
            bVar9 = bVar9 >> 1;
            bVar5 = bVar2 & bVar9;
          }
        }
        iVar14 = iVar14 + -1;
      } while (-1 < iVar14);
      FUN_18049c9e0(&local_res20);
LAB_1812e6039:
      pbVar12 = local_res20;
      if (*local_res20 == 0) {
LAB_1812e608e:
        local_res18 = local_res20;
        if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        while ((bVar2 = *pbVar12, bVar2 == 0x20 || ((byte)(bVar2 - 9) < 5))) {
          pbVar12 = pbVar12 + 1;
          if ((char)bVar2 < '\0') {
            bVar9 = 0x40;
            bVar5 = bVar2 & 0x40;
            while ((bVar5 != 0 && (8 < bVar9))) {
              pbVar12 = pbVar12 + 1;
              bVar9 = bVar9 >> 1;
              bVar5 = bVar2 & bVar9;
            }
          }
        }
        if (pbVar12 == local_res20) goto LAB_1812e608e;
        FUN_18049c9e0(&local_res18);
      }
      pbVar12 = local_res8;
      local_58 = local_res8;
      local_res8 = local_res18;
      local_res18 = pbVar12;
      puVar10 = (uint *)(pbVar12 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_res20 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      iVar14 = FUN_180492f10(&local_res8);
    }
    puVar8 = (undefined8 *)FUN_1812303b0(&local_res8,&local_70,"0123456789.,-");
    local_78 = *puVar8;
    dVar18 = (double)FUN_18049bd80(&local_78);
    puVar10 = (uint *)(local_70 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  else {
    plVar4 = *(longlong **)(param_1 + 0x1b8);
    if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    if ((undefined **)*plVar4 ==
        std::
        _Func_impl_no_alloc<<lambda_f70cde19f4983c9b7cc671409a82b9df>,double,juce::String_const&___ptr64>
        ::vftable) {
      lVar3 = plVar4[1];
      fVar15 = (float)(**(code **)(**(longlong **)(lVar3 + 0x20) + 0x50))();
      uVar7 = (**(code **)(**(longlong **)(lVar3 + 0x20) + 0x88))();
      fVar17 = 0.0;
      if ((0.0 <= fVar15) && (fVar17 = DAT_1824c3ea4, fVar15 <= DAT_1824c3ea4)) {
        fVar17 = fVar15;
      }
      uVar16 = FUN_1804db050(uVar7,fVar17);
      fVar17 = (float)FUN_180487220(uVar7,uVar16);
      dVar18 = (double)fVar17;
    }
    else {
      dVar18 = (double)(*(code *)((undefined **)*plVar4)[2])(plVar4,&local_res8);
    }
  }
  puVar10 = (uint *)(local_res8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return dVar18;
}



############ FUN_ 1813242f0 size=1318 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813242f0(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  undefined8 *puVar3;
  uint uVar4;
  byte bVar5;
  longlong lVar6;
  byte bVar7;
  double dVar8;
  bool bVar9;
  char cVar10;
  byte bVar11;
  DWORD DVar12;
  int iVar13;
  undefined8 *puVar14;
  undefined8 uVar15;
  longlong *plVar16;
  longlong *plVar17;
  undefined8 uVar18;
  undefined8 uVar19;
  uint *puVar20;
  byte *pbVar21;
  int iVar22;
  int iVar23;
  double dVar24;
  undefined1 auStack_158 [48];
  undefined1 *local_128 [2];
  undefined8 local_118;
  undefined4 uStack_110;
  undefined4 uStack_10c;
  undefined **local_108;
  longlong local_100;
  HANDLE local_f8;
  char *local_e8;
  undefined8 *local_e0;
  undefined8 *local_d8;
  longlong *local_d0;
  undefined8 local_c8;
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  double local_a8;
  double local_a0;
  double local_98;
  undefined8 *local_90;
  undefined8 local_88;
  undefined1 local_80 [8];
  longlong local_78;
  longlong local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined1 local_48 [16];
  ulonglong local_38 [2];
  
  local_88 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_158;
  FUN_1812a7720();
  plVar1 = (longlong *)(param_1 + 0x20);
  local_e0 = (undefined8 *)*plVar1;
  iVar22 = 0;
  *plVar1 = 0;
  if (local_e0 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(local_e0 + 1);
    iVar23 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar23 == 1) {
      (**(code **)*local_e0)(local_e0,1);
    }
  }
  local_d0 = (longlong *)(param_1 + 0x28);
  puVar20 = (uint *)(*local_d0 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  *local_d0 = (longlong)&DAT_1821dbf98;
  local_b0 = param_1 + -0xb0;
  uStack_10c = *(undefined4 *)(param_1 + -0x84);
  uStack_110 = *(undefined4 *)(param_1 + -0x88);
  local_118 = 0;
  local_68 = 0;
  uStack_64 = 0;
  uStack_60 = uStack_110;
  uStack_5c = uStack_10c;
  FUN_181342870(local_b0,&local_68,1);
  puVar3 = (undefined8 *)(param_1 + 0x18);
  FUN_18123efe0(&local_108,puVar3);
  if (*local_e8 != '\0') goto LAB_1813247ae;
  if (*(char *)*puVar3 == '\0') {
LAB_181324422:
    bVar9 = false;
  }
  else {
    puVar14 = (undefined8 *)FUN_18049a930(local_80,puVar3);
    DVar12 = GetFileAttributesW((LPCWSTR)*puVar14);
    bVar9 = true;
    if ((DVar12 & 0x10) != 0) goto LAB_181324422;
  }
  if (bVar9) {
    uVar15 = (*(code *)local_108[0x15])(&local_108);
    plVar16 = (longlong *)FUN_1804a0630();
    plVar17 = (longlong *)*plVar16;
    while (plVar17 != (longlong *)0x0) {
      cVar10 = (**(code **)(*plVar17 + 0x10))(plVar17,&local_108);
      (*(code *)local_108[0x16])(&local_108,uVar15);
      if (cVar10 != '\0') {
        plVar16 = (longlong *)*plVar16;
        if (plVar16 != (longlong *)0x0) {
          plVar17 = (longlong *)(**(code **)(*plVar16 + 0x20))(plVar16,&local_d8,&local_108);
          local_78 = *plVar1;
          *plVar1 = *plVar17;
          *plVar17 = local_78;
          if (local_d8 != (undefined8 *)0x0) {
            LOCK();
            piVar2 = (int *)(local_d8 + 1);
            iVar23 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar23 == 1) {
              (**(code **)*local_d8)(local_d8,1);
            }
          }
          if (*plVar1 != 0) {
            lVar6 = *plVar1;
            iVar23 = iVar22;
            if (lVar6 != 0) {
              iVar22 = *(int *)(lVar6 + 0x14);
              iVar23 = *(int *)(lVar6 + 0x18);
            }
            uVar15 = FUN_181217a30(puVar3);
            uVar15 = FUN_181240c90(&local_b8,uVar15);
            local_c8 = (**(code **)(*plVar16 + 8))(plVar16,&local_c0);
            iVar13 = FUN_1812327b0(puVar3,0x5c);
            if (iVar13 + 1 < 1) {
              local_128[0] = (undefined1 *)*puVar3;
              if ((*(uint *)(local_128[0] + -0x10) & 0x30000000) == 0) {
                LOCK();
                *(int *)(local_128[0] + -0x10) = *(int *)(local_128[0] + -0x10) + 1;
                UNLOCK();
              }
              goto LAB_1813245ae;
            }
            pbVar21 = (byte *)*puVar3;
            if (-1 < iVar13) goto LAB_181324570;
            goto LAB_1813245a3;
          }
        }
        break;
      }
      plVar16 = plVar16 + 1;
      plVar17 = (longlong *)*plVar16;
    }
  }
LAB_1813247ae:
  local_108 = juce::FileInputStream::vftable;
  CloseHandle(local_f8);
  puVar20 = (uint *)(local_e8 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  puVar20 = (uint *)(local_100 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  while( true ) {
    pbVar21 = pbVar21 + 1;
    if ((char)bVar5 < '\0') {
      bVar11 = 0x40;
      bVar7 = bVar5 & 0x40;
      while ((bVar7 != 0 && (8 < bVar11))) {
        pbVar21 = pbVar21 + 1;
        bVar11 = bVar11 >> 1;
        bVar7 = bVar5 & bVar11;
      }
    }
    iVar13 = iVar13 + -1;
    if (iVar13 < 0) break;
LAB_181324570:
    bVar5 = *pbVar21;
    if (bVar5 == 0) {
      local_128[0] = &DAT_1821dbf98;
      goto LAB_1813245ae;
    }
  }
LAB_1813245a3:
  FUN_18049c9e0(local_128);
LAB_1813245ae:
  uVar18 = FUN_181232d30(local_d0,local_128);
  FUN_181232e20(uVar18,&DAT_1821e2cdc,&DAT_1821e2cdd);
  uVar18 = FUN_181232d30(uVar18,local_c8);
  FUN_181232e20(uVar18,&DAT_1821e2d04,&DAT_1821e2d05);
  uVar19 = FUN_181233e10(local_48,iVar22);
  FUN_181232e20(uVar18,uVar19,local_48);
  FUN_181232e20(uVar18,&DAT_1821e2d2c,&DAT_1821e2d2f);
  uVar19 = FUN_181233e10(local_38,iVar23);
  FUN_181232e20(uVar18,uVar19,local_38);
  FUN_181232e20(uVar18," pixels\n","");
  FUN_181232d30(uVar18,uVar15);
  puVar20 = (uint *)(local_128[0] + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  puVar20 = (uint *)(local_c0 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  puVar20 = (uint *)(local_b8 + -0x10);
  if ((*puVar20 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar20;
    *puVar20 = *puVar20 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar20);
    }
  }
  local_a8 = (double)((float)*(int *)(local_b0 + 0x28) * _DAT_1824c3e8c) + DAT_1824c4520;
  dVar8 = (double)(*(int *)(local_b0 + 0x2c) + -0x34) / (double)iVar23;
  dVar24 = (double)local_a8._0_4_ / (double)iVar22;
  if (DAT_1824c4140 <= dVar24) {
    if (DAT_1824c4140 <= dVar8) {
      dVar8 = DAT_1824c4140;
    }
  }
  else if (dVar24 <= dVar8) {
    dVar8 = dVar24;
  }
  local_98 = (double)iVar22 * dVar8 + DAT_1824c4520;
  local_a0 = (double)iVar23 * dVar8 + DAT_1824c4520;
  plVar17 = (longlong *)
            FUN_181290d60(plVar1,&local_90,(ulonglong)local_98 & 0xffffffff,
                          (ulonglong)local_a0 & 0xffffffff);
  local_70 = *plVar1;
  *plVar1 = *plVar17;
  *plVar17 = local_70;
  if (local_90 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(local_90 + 1);
    iVar22 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar22 == 1) {
      (**(code **)*local_90)(local_90,1);
    }
  }
  goto LAB_1813247ae;
}



############ FUN_ 18132ab00 size=808 ############

void FUN_18132ab00(longlong param_1)

{
  longlong *plVar1;
  byte bVar2;
  byte bVar3;
  bool bVar4;
  byte bVar5;
  int iVar6;
  DWORD DVar7;
  uint uVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  uint *puVar11;
  byte *pbVar12;
  byte *local_res8;
  byte *local_res10;
  undefined1 *local_res18;
  longlong local_res20;
  longlong local_68;
  longlong local_60;
  longlong local_58 [3];
  undefined1 local_40 [8];
  
  local_58[1] = 0xfffffffffffffffe;
  puVar9 = (undefined8 *)FUN_1812dc020(param_1 + 0x2c0,&local_res20);
  iVar6 = FUN_18049bc80(*puVar9,0x5c);
  puVar11 = (uint *)(local_res20 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if (iVar6 < 0) {
    uVar10 = FUN_18132c510(param_1,local_58,0);
    (**(code **)(*(longlong *)(param_1 + 0xb0) + 0x18))((longlong *)(param_1 + 0xb0),uVar10);
    puVar11 = (uint *)(local_58[0] + -0x10);
    uVar8 = *puVar11;
    goto LAB_18132ae0d;
  }
  puVar9 = (undefined8 *)FUN_1812dc020(param_1 + 0x2c0,&local_68);
  local_58[2] = *puVar9;
  FUN_181245100(param_1 + 0xf8,&local_res8);
  puVar11 = (uint *)(local_68 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar9 = (undefined8 *)FUN_18049a930(local_40,&local_res8);
  DVar7 = GetFileAttributesW((LPCWSTR)*puVar9);
  bVar4 = true;
  if (((DVar7 & 0x10) == 0) || (DVar7 == 0xffffffff)) {
    bVar4 = false;
  }
  if (bVar4) {
    FUN_18132bdc0(param_1,&local_res8);
    FUN_180488c50(param_1 + 0x100);
    if (*(int *)(param_1 + 0x108) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 0x100));
    }
    *(undefined4 *)(param_1 + 0x108) = 0;
    if ((*(uint *)(param_1 + 0xf0) & 0x100) == 0) {
      local_res18 = &DAT_1821dbf98;
      FUN_1812e1110(param_1 + 0x2c0,&local_res18,1);
      puVar11 = (uint *)(local_res18 + -0x10);
      uVar8 = *puVar11;
      goto LAB_18132adab;
    }
  }
  else {
    uVar10 = FUN_181241230(&local_res8,&local_60);
    FUN_18132bdc0(param_1,uVar10);
    puVar11 = (uint *)(local_60 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar8 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    plVar1 = (longlong *)(param_1 + 0x100);
    FUN_180488c50(plVar1);
    if (*(int *)(param_1 + 0x108) != 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*plVar1);
    }
    *(undefined4 *)(param_1 + 0x108) = 0;
    iVar6 = *(int *)(param_1 + 0x10c) + 1;
    if (0 < iVar6) {
      FUN_18048a300(plVar1,*(int *)(param_1 + 0x10c) + 9 + iVar6 / 2 & 0xfffffff8);
    }
    iVar6 = *(int *)(param_1 + 0x10c);
    *(int *)(param_1 + 0x10c) = iVar6 + 1;
    *(byte **)(*plVar1 + (longlong)iVar6 * 8) = local_res8;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    iVar6 = FUN_1812327b0(&local_res8,0x5c);
    pbVar12 = local_res8;
    if (iVar6 + 1 < 1) {
      local_res10 = local_res8;
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      for (; -1 < iVar6; iVar6 = iVar6 + -1) {
        bVar2 = *pbVar12;
        if (bVar2 == 0) {
          local_res10 = &DAT_1821dbf98;
          goto LAB_18132ad8d;
        }
        pbVar12 = pbVar12 + 1;
        if ((char)bVar2 < '\0') {
          bVar5 = 0x40;
          bVar3 = bVar2 & 0x40;
          while ((bVar3 != 0 && (8 < bVar5))) {
            pbVar12 = pbVar12 + 1;
            bVar5 = bVar5 >> 1;
            bVar3 = bVar2 & bVar5;
          }
        }
      }
      FUN_18049c9e0(&local_res10);
    }
LAB_18132ad8d:
    FUN_1812e1110(param_1 + 0x2c0,&local_res10,1);
    puVar11 = (uint *)(local_res10 + -0x10);
    uVar8 = *puVar11;
LAB_18132adab:
    if ((uVar8 & 0x30000000) == 0) {
      LOCK();
      uVar8 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
  }
  puVar11 = (uint *)(local_res8 + -0x10);
  uVar8 = *puVar11;
LAB_18132ae0d:
  if ((uVar8 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  return;
}



############ FUN_ 181393250 size=85 ############

undefined8 *
FUN_181393250(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::AudioFormat::vftable;
  FUN_18049c9e0(param_1 + 1,"FLAC file",param_3,param_4,0xfffffffffffffffe);
  FUN_18122ce70(param_1 + 2,".flac");
  *param_1 = juce::FlacAudioFormat::vftable;
  return param_1;
}



############ FUN_ 1813abdc0 size=85 ############

undefined8 *
FUN_1813abdc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::AudioFormat::vftable;
  FUN_18049c9e0(param_1 + 1,"AIFF file",param_3,param_4,0xfffffffffffffffe);
  FUN_18122ce70(param_1 + 2,".aiff .aif");
  *param_1 = juce::AiffAudioFormat::vftable;
  return param_1;
}



############ FUN_ 1813b0010 size=77 ############

undefined8 * FUN_1813b0010(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  *param_1 = juce::AudioFormat::vftable;
  FUN_18049c9e0(param_1 + 1);
  FUN_18122ce70(param_1 + 2,param_3);
  return param_1;
}



############ FUN_ 181432420 size=949 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181432420(longlong param_1)

{
  uint uVar1;
  byte bVar2;
  bool bVar3;
  byte bVar4;
  undefined8 *puVar5;
  byte *pbVar6;
  longlong *plVar7;
  longlong *plVar8;
  byte bVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  undefined1 auStack_198 [32];
  longlong local_178;
  longlong *local_170;
  longlong local_168;
  byte *local_160;
  undefined1 local_158 [8];
  longlong local_150;
  longlong local_148;
  longlong local_140 [2];
  longlong local_130;
  byte *local_128;
  undefined **local_120;
  longlong local_118;
  undefined8 local_110;
  byte *local_108;
  undefined1 local_f8 [64];
  longlong local_b8;
  byte *local_b0;
  longlong local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined2 local_88;
  undefined8 local_48;
  longlong *local_40;
  ulonglong local_38;
  
  local_110 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_198;
  FUN_1811ca580(param_1 + 0x1948,local_140);
  FUN_18049c9e0(&local_168,".preset");
  FUN_18049c4e0(&local_178,&DAT_18220bbe4);
  local_170 = &local_178;
  puVar5 = (undefined8 *)FUN_181232d30(&local_178,&local_168);
  local_160 = (byte *)*puVar5;
  puVar12 = (uint *)(local_160 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    *puVar12 = *puVar12 + 1;
    UNLOCK();
  }
  puVar10 = (uint *)(local_178 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_168 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_18049c4e0(&local_130,"Choose a preset file to open");
  local_b8 = local_130;
  puVar10 = (uint *)(local_130 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    *puVar10 = *puVar10 + 1;
    UNLOCK();
  }
  local_b0 = local_160;
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    *puVar12 = *puVar12 + 1;
    UNLOCK();
  }
  local_a8 = local_140[0];
  if ((*(uint *)(local_140[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_140[0] + -0x10) = *(int *)(local_140[0] + -0x10) + 1;
    UNLOCK();
  }
  local_a0 = 0;
  local_98 = 0;
  local_90 = 0;
  local_88 = 1;
  local_48 = 0;
  local_40 = (undefined8 *)0x0;
  bVar2 = *local_160;
  pbVar6 = local_160;
  while (bVar2 != 0) {
    bVar2 = *pbVar6;
    if ((bVar2 != 0x20) && (4 < (byte)(bVar2 - 9))) goto LAB_18143261c;
    pbVar6 = pbVar6 + 1;
    if ((char)bVar2 < '\0') {
      bVar9 = 0x40;
      bVar4 = bVar2 & 0x40;
      while ((bVar4 != 0 && (8 < bVar9))) {
        pbVar6 = pbVar6 + 1;
        bVar9 = bVar9 >> 1;
        bVar4 = bVar2 & bVar9;
      }
    }
    bVar2 = *pbVar6;
  }
  FUN_18049c4e0(&local_128,&DAT_1821e2c3c);
  pbVar6 = local_b0;
  local_108 = local_b0;
  local_b0 = local_128;
  puVar11 = (uint *)(pbVar6 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
LAB_18143261c:
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_1804de690(local_158,DAT_182673708);
  plVar7 = (longlong *)FUN_181329c90(&local_b8,5);
  plVar8 = local_40;
  if (local_40 != (undefined8 *)0x0) {
    puVar5 = (undefined8 *)*local_40;
    local_40 = plVar7;
    (*(code *)*puVar5)(plVar8,1);
    plVar7 = local_40;
  }
  local_40 = plVar7;
  (**(code **)(*local_40 + 0x10))();
  bVar3 = 0 < local_90._4_4_;
  FUN_1804e4a90(local_158);
  if (bVar3) {
    FUN_181329930(&local_b8,&local_148);
    local_150 = local_148;
    puVar10 = (uint *)(local_148 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      *puVar10 = *puVar10 + 1;
      UNLOCK();
    }
    FUN_181184390(local_f8,&local_150,0);
    FUN_18143e030(param_1,local_f8);
    plVar8 = (longlong *)FUN_181241230(&local_148,&local_170);
    local_120 = &PTR_vftable_18262b560;
    local_118 = *plVar8;
    if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
      UNLOCK();
    }
    (**(code **)(*(longlong *)(param_1 + 0x1948) + 0x28))(param_1 + 0x1948,&local_120);
    puVar11 = (uint *)(local_170 + -2);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    FUN_1814d4600(param_1);
    FUN_180484660(local_f8);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  FUN_181329e40(&local_b8);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  puVar12 = (uint *)(local_140[0] + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
}



############ FUN_ 181487ce0 size=1039 ############

/* WARNING: Removing unreachable block (ram,0x000181487dc0) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181487ce0(longlong *param_1)

{
  longlong *plVar1;
  float fVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong lVar10;
  char cVar11;
  char cVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  undefined8 uStack_1c8;
  undefined1 auStack_1b8 [48];
  undefined **local_188;
  undefined *local_180;
  undefined8 local_168;
  undefined8 local_160;
  undefined8 local_158;
  uint local_144;
  uint local_140;
  int local_13c;
  undefined4 *local_138;
  longlong local_130;
  undefined1 local_128 [8];
  undefined1 local_120 [64];
  undefined8 local_e0;
  undefined1 local_d8 [96];
  ulonglong local_78;
  
  local_e0 = 0xfffffffffffffffe;
  local_78 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  lVar10 = 1;
  uVar8 = (uint)&stack0x00000000 & 0x6cff;
  local_144 = 0x9efc << ((char)((byte)(-((uVar8 * uVar8 + 1) % 7) >> 0x18) ^ 0xff) >> 7 & 0x1fU) ^
              0x963c;
  uVar8 = (uint)&stack0x00000000 & 0x8ff;
  uVar8 = (uVar8 * uVar8 * 0x10 + 4) % 0x13;
  uVar9 = (ulonglong)uVar8;
  local_140 = (int)(-uVar8 | uVar8) >> 0x1f & 0x645fU ^ 0x666f;
  plVar1 = param_1 + 0x16;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (param_1[0x17] == 0) {
      FUN_180569ff0(param_1);
    }
    lVar5 = param_1[0x17];
  }
  else {
    lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  FUN_1813f3f00(lVar5 + 0x48,local_120,*(float *)(lVar3 + 0x88) * DAT_1824c4418);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (param_1[0x17] == 0) {
      FUN_180569ff0(param_1);
    }
    lVar5 = param_1[0x17];
  }
  else {
    lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  FUN_1813f3f00(lVar5 + 0x48,local_128,*(float *)(lVar3 + 0x88) * DAT_1824c43f8);
  puVar4 = (undefined8 *)(**(code **)(*param_1 + 0x178))(param_1,local_d8);
  FUN_18049c9e0(&local_130,*puVar4);
  fVar13 = (float)FUN_1812518d0(local_120,&local_130);
  fVar14 = ceilf(fVar13);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar13 = *(float *)(lVar5 + 0x88);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar2 = *(float *)(lVar5 + 0x88);
  fVar15 = (float)FUN_1812518d0(local_128,param_1 + 0x1a);
  fVar15 = ceilf(fVar15);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  local_13c = (int)((float)(((int)(fVar13 * DAT_1824c443c) - (int)(fVar2 * _DAT_1824c4728)) +
                            (int)fVar15 + (int)fVar14) + *(float *)(lVar5 + 0x88) * DAT_1824c4334);
  FUN_1804951e0(local_130 + -0x10);
  local_158 = 0x6f01000;
  local_160 = 0x1bab6a8;
  local_168 = 0x10;
  local_188 = &PTR__guard_check_icall_181bab6a8;
  local_180 = &DAT_181bab6b8;
  local_138 = &DAT_186f01000;
  FUN_1814880dd();
  cVar12 = '\0';
  cVar11 = (longlong)(uVar9 ^ 0x180568990 ^ uVar9) < 0;
                    /* WARNING: Call to offcut address within same function */
  uStack_1c8 = 0x18148804c;
  func_0x00018148804f();
  puVar7 = &uStack_1c8;
  uStack_1c8 = 0xffffffffffffffba;
  if (cVar12 == cVar11) {
    uVar6 = (ulonglong)((int)&uStack_1c8 - 0x10);
    lVar10 = *(longlong *)(uVar6 + 0x10);
    *(longlong *)(uVar6 + 0x10) = lVar10 + 300;
    *(longlong *)(uVar6 + 8) = lVar10 + -0x43f8d;
    lVar10 = lVar10 + 0x7ef46;
    puVar7 = (undefined8 *)(uVar6 - 0x38);
  }
  *(longlong *)((longlong)puVar7 + 0x38) = lVar10;
  FUN_1814880de();
  return;
}



############ FUN_ 18163a2b0 size=195 ############

undefined4 FUN_18163a2b0(void)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  uint *puVar4;
  undefined8 in_R9;
  undefined4 uVar5;
  undefined1 *local_res8;
  undefined8 local_res10;
  longlong local_res18 [2];
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lVar2 = glGetString(0x8b8c);
  if (lVar2 == 0) {
    local_res8 = &DAT_1821dbf98;
  }
  else {
    FUN_18049c9e0(&local_res8,lVar2);
  }
  puVar3 = (undefined8 *)FUN_1812489f0(&local_res8,local_res18,"1234567890.",in_R9,uVar6);
  local_res10 = *puVar3;
  uVar5 = FUN_18049bd80(&local_res10);
  puVar4 = (uint *)(local_res18[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_res8 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return uVar5;
}



############ FUN_ 18123c4d0 size=270 ############

undefined4 FUN_18123c4d0(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  uint *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong *plVar7;
  longlong *plVar8;
  longlong *plVar9;
  
  plVar8 = (longlong *)*param_1;
  plVar7 = plVar8;
  if (plVar8 == (longlong *)0x0) {
    plVar7 = param_1 + 1;
  }
  iVar4 = (int)param_1[4] >> 5;
  lVar2 = (longlong)iVar4;
  if (-1 < iVar4) {
LAB_18123c506:
    uVar1 = *(uint *)((longlong)plVar7 + lVar2 * 4);
    if (uVar1 == 0) goto code_r0x00018123c50e;
    iVar5 = 0x1f;
    if (uVar1 != 0) {
      for (; uVar1 >> iVar5 == 0; iVar5 = iVar5 + -1) {
      }
    }
    iVar5 = iVar4 * 0x20 + iVar5;
    goto LAB_18123c518;
  }
LAB_18123c516:
  iVar5 = -1;
LAB_18123c518:
  plVar9 = (longlong *)*param_2;
  plVar7 = plVar9;
  if (plVar9 == (longlong *)0x0) {
    plVar7 = param_2 + 1;
  }
  iVar4 = (int)param_2[4] >> 5;
  lVar2 = (longlong)iVar4;
  if (-1 < iVar4) {
    do {
      uVar1 = *(uint *)((longlong)plVar7 + lVar2 * 4);
      if (uVar1 != 0) {
        iVar6 = 0x1f;
        if (uVar1 != 0) {
          for (; uVar1 >> iVar6 == 0; iVar6 = iVar6 + -1) {
          }
        }
        iVar6 = iVar4 * 0x20 + iVar6;
        goto LAB_18123c547;
      }
      iVar4 = iVar4 + -1;
      lVar2 = lVar2 + -1;
    } while (-1 < lVar2);
  }
  iVar6 = -1;
LAB_18123c547:
  if (iVar6 < iVar5) {
    return 1;
  }
  if (iVar5 < iVar6) {
    return 0xffffffff;
  }
  if (plVar8 == (longlong *)0x0) {
    plVar8 = param_1 + 1;
  }
  if (plVar9 == (longlong *)0x0) {
    plVar9 = param_2 + 1;
  }
  lVar2 = (longlong)iVar5 >> 5;
  if (-1 < lVar2) {
    puVar3 = (uint *)((longlong)plVar9 + lVar2 * 4);
    do {
      uVar1 = *(uint *)(((longlong)plVar8 - (longlong)plVar9) + (longlong)puVar3);
      if (uVar1 != *puVar3) {
        if (uVar1 < *puVar3) {
          return 0xffffffff;
        }
        return 1;
      }
      puVar3 = puVar3 + -1;
      lVar2 = lVar2 + -1;
    } while (-1 < lVar2);
  }
  return 0;
code_r0x00018123c50e:
  iVar4 = iVar4 + -1;
  lVar2 = lVar2 + -1;
  if (lVar2 < 0) goto LAB_18123c516;
  goto LAB_18123c506;
}



############ FUN_ 181133510 size=94 ############

void FUN_181133510(undefined8 param_1)

{
  undefined1 auStack_78 [48];
  void *local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  undefined8 local_28;
  ulonglong local_20;
  
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 4;
  local_28 = 0xffffffff;
  local_48 = (void *)0x0;
  local_40 = 0;
  local_38 = 0;
  FUN_18123c5f0(param_1,&local_48);
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 18123c490 size=19 ############

bool FUN_18123c490(void)

{
  int iVar1;
  
  iVar1 = FUN_18123c5f0();
  return iVar1 != 0;
}



############ FUN_ 18123c4b0 size=19 ############

bool FUN_18123c4b0(void)

{
  int iVar1;
  
  iVar1 = FUN_18123c5f0();
  return iVar1 == 0;
}



############ FUN_ 1812b2f10 size=19 ############

bool FUN_1812b2f10(void)

{
  int iVar1;
  
  iVar1 = FUN_18123c5f0();
  return iVar1 != 0;
}



############ FUN_ 1812b44c0 size=19 ############

bool FUN_1812b44c0(void)

{
  int iVar1;
  
  iVar1 = FUN_18123c5f0();
  return iVar1 == 0;
}



############ FUN_ 1812c08d0 size=144 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812c08d0(undefined8 *param_1,int param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined1 auStack_68 [32];
  undefined4 local_48;
  void *local_40 [5];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  lVar2 = 0;
  local_48 = 0;
  lVar1 = lVar2;
  if ((param_2 < 2) && (lVar1 = 0, 0 < *(int *)((longlong)param_1 + 0xc))) {
    lVar1 = 1;
    FUN_18124a040(local_40,6);
    if ((uint)lVar2 < *(uint *)((longlong)param_1 + 0xc)) {
      lVar2 = *(longlong *)*param_1;
    }
    FUN_18123c5f0(lVar2 + 0x10,local_40);
  }
  if (lVar1 == 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 181359080 size=283 ############

/* WARNING: Removing unreachable block (ram,0x0001813591bf) */
/* WARNING: Removing unreachable block (ram,0x0001813591e1) */
/* WARNING: Removing unreachable block (ram,0x000181359208) */
/* WARNING: Removing unreachable block (ram,0x000181359203) */
/* WARNING: Removing unreachable block (ram,0x00018135920b) */
/* WARNING: Removing unreachable block (ram,0x000181359210) */
/* WARNING: Removing unreachable block (ram,0x00018135921d) */
/* WARNING: Removing unreachable block (ram,0x000181359222) */
/* WARNING: Removing unreachable block (ram,0x00018135922c) */
/* WARNING: Removing unreachable block (ram,0x000181359231) */
/* WARNING: Removing unreachable block (ram,0x00018135923f) */
/* WARNING: Removing unreachable block (ram,0x000181359244) */
/* WARNING: Removing unreachable block (ram,0x000181359255) */
/* WARNING: Removing unreachable block (ram,0x000181359259) */
/* WARNING: Removing unreachable block (ram,0x00018135925b) */
/* WARNING: Removing unreachable block (ram,0x000181359142) */
/* WARNING: Removing unreachable block (ram,0x000181359175) */
/* WARNING: Removing unreachable block (ram,0x000181359198) */
/* WARNING: Removing unreachable block (ram,0x00018135919b) */
/* WARNING: Removing unreachable block (ram,0x0001813591ad) */
/* WARNING: Removing unreachable block (ram,0x0001813591a0) */

void FUN_181359080(undefined8 param_1,longlong param_2)

{
  void **ppvVar1;
  bool bVar2;
  undefined1 auStack_108 [32];
  undefined4 local_e8;
  void *local_e0;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  void *local_c8;
  undefined4 local_c0;
  undefined1 local_bc;
  void *local_b8 [10];
  undefined1 local_68 [40];
  void *local_40 [5];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_e8 = 0;
  FUN_1804db6f0(param_2,local_68,0);
  bVar2 = *(int *)(param_2 + 0xc) != 2;
  if (bVar2) {
    FUN_18124a040(local_b8,8);
    ppvVar1 = local_b8;
  }
  else {
    ppvVar1 = (void **)FUN_1804db6f0(param_2,local_40,1);
  }
  local_e0 = *ppvVar1;
  *ppvVar1 = (void *)0x0;
  local_c8 = ppvVar1[3];
  local_c0 = *(undefined4 *)(ppvVar1 + 4);
  local_bc = *(undefined1 *)((longlong)ppvVar1 + 0x24);
  local_d8 = *(undefined4 *)(ppvVar1 + 1);
  uStack_d4 = *(undefined4 *)((longlong)ppvVar1 + 0xc);
  uStack_d0 = *(undefined4 *)(ppvVar1 + 2);
  uStack_cc = *(undefined4 *)((longlong)ppvVar1 + 0x14);
  if (!bVar2) {
                    /* WARNING: Subroutine does not return */
    free(local_40[0]);
  }
                    /* WARNING: Subroutine does not return */
  free(local_b8[0]);
}



############ FUN_ 1813ba950 size=178 ############

undefined8 FUN_1813ba950(longlong *param_1,longlong *param_2)

{
  int iVar1;
  
  if (((((*param_1 == *param_2) || (iVar1 = FUN_18048cbc0(*param_1,*param_2), iVar1 == 0)) &&
       ((param_1[1] == param_2[1] || (iVar1 = FUN_18048cbc0(param_1[1],param_2[1]), iVar1 == 0))))
      && (((((double)param_1[2] == (double)param_2[2] && ((int)param_1[3] == (int)param_2[3])) &&
           (iVar1 = FUN_18123c5f0(param_1 + 4,param_2 + 4), iVar1 == 0)) &&
          (((char)param_1[9] == (char)param_2[9] &&
           (iVar1 = FUN_18123c5f0(param_1 + 10,param_2 + 10), iVar1 == 0)))))) &&
     ((char)param_1[0xf] == (char)param_2[0xf])) {
    return 0;
  }
  return 1;
}



############ FUN_ 1813baa10 size=168 ############

ulonglong FUN_1813baa10(longlong *param_1,longlong *param_2)

{
  ulonglong uVar1;
  
  if (((((*param_1 == *param_2) || (uVar1 = FUN_18048cbc0(*param_1,*param_2), (int)uVar1 == 0)) &&
       ((uVar1 = param_2[1], param_1[1] == uVar1 ||
        (uVar1 = FUN_18048cbc0(param_1[1],uVar1), (int)uVar1 == 0)))) &&
      (((((double)param_1[2] == (double)param_2[2] &&
         (uVar1 = (ulonglong)*(uint *)(param_2 + 3),
         *(uint *)(param_1 + 3) == *(uint *)(param_2 + 3))) &&
        (uVar1 = FUN_18123c5f0(param_1 + 4,param_2 + 4), (int)uVar1 == 0)) &&
       ((uVar1 = 0, (char)param_1[9] == (char)param_2[9] &&
        (uVar1 = FUN_18123c5f0(param_1 + 10,param_2 + 10), (int)uVar1 == 0)))))) &&
     (uVar1 = 0, (char)param_1[0xf] == (char)param_2[0xf])) {
    return 1;
  }
  return uVar1 & 0xffffffffffffff00;
}



############ FUN_ 1811342b0 size=1113 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811342b0(undefined8 param_1,undefined4 param_2)

{
  undefined1 auStack_58 [32];
  void *local_38 [5];
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  switch(param_2) {
  case 1:
  case 2:
  case 3:
    FUN_18124a040(local_38,8);
    FUN_18123c5f0(param_1,local_38);
                    /* WARNING: Subroutine does not return */
    free(local_38[0]);
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
  case 0xb:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
  case 0x1c:
  case 0x1d:
  case 0x1e:
  case 0x1f:
  case 0x20:
  case 0x21:
  case 0x22:
  case 0x23:
  case 0x24:
  case 0x25:
  case 0x26:
  case 0x27:
  case 0x28:
  case 0x29:
  default:
  case 0x3e:
  case 0x3f:
  case 0x40:
  case 0x43:
  case 0x44:
  case 0x45:
  case 0x46:
  case 0x47:
  case 0x80:
  }
}



############ FUN_ 1811330f0 size=1003 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811330f0(ulonglong *param_1,longlong param_2)

{
  uint *puVar1;
  uint uVar2;
  ulonglong *puVar3;
  uint uVar4;
  undefined1 *puVar5;
  ulonglong uVar6;
  undefined1 uVar7;
  uint uVar8;
  ulonglong *puVar9;
  undefined1 auStack_b8 [32];
  ulonglong *local_98;
  ulonglong local_90;
  ulonglong uStack_88;
  ulonglong local_80;
  uint local_78;
  undefined1 local_74;
  undefined1 *local_70;
  undefined1 local_68 [24];
  int local_50;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_b8;
  if (param_2 == 0) {
    param_1[4] = 0;
    *param_1 = 0;
    param_1[3] = 4;
    *(undefined4 *)(param_1 + 4) = 0xffffffff;
    *(undefined1 *)((longlong)param_1 + 0x24) = 0;
    param_1[1] = 0;
    param_1[2] = 0;
  }
  else if (param_2 == 0x80000) {
    FUN_18124a040(param_1,8);
  }
  else if (param_2 == 3) {
    FUN_18124a040(param_1,6);
  }
  else if (param_2 == 7) {
    FUN_18124a040(param_1,0xe);
  }
  else if (param_2 == 0x103) {
    FUN_18124a040(param_1,0x206);
  }
  else if (param_2 == 0x107) {
    FUN_18124a040(param_1,0x20e);
  }
  else if (param_2 == 0x37) {
    FUN_18124a040(param_1,0x6e);
  }
  else if (param_2 == 0x3f) {
    FUN_18124a040(param_1,0x7e);
  }
  else if (param_2 == 0x137) {
    FUN_18124a040(param_1,0x26e);
  }
  else if (param_2 == 0x13f) {
    FUN_18124a040(param_1,0x27e);
  }
  else if (param_2 == 0x633) {
    FUN_18124a040(param_1,0xc66);
  }
  else if (param_2 == 0x63b) {
    FUN_18124a040(param_1,0xc76);
  }
  else if (param_2 == 0x637) {
    FUN_18124a040(param_1,0x300c0e);
  }
  else if (param_2 == 0xf7) {
    FUN_18124a040(param_1,0x1ee);
  }
  else if (param_2 == 0x63f) {
    FUN_18124a040(param_1,0x300c1e);
  }
  else if (param_2 == 0xff) {
    FUN_18124a040(param_1,0x1fe);
  }
  else if (param_2 == 0xf00000) {
    FUN_1812b46a0(param_1,1);
  }
  else if (param_2 == 0x33) {
    FUN_18124a040(param_1,0x66);
  }
  else if (param_2 == 0x300063f) {
    FUN_18124a040(param_1,0x30300c1e);
  }
  else if (param_2 == 0x3000637) {
    FUN_18124a040(param_1,0x30300c0e);
  }
  else if (param_2 == 0x100000) {
    FUN_18124a040(param_1,0x1000000);
  }
  else if (param_2 == 0x7c000f00000) {
    FUN_1812b46a0(param_1,2);
  }
  else {
    if (param_2 != 0x3ffc000f00000) {
      puVar9 = (ulonglong *)0x0;
      uVar6 = 4;
      uVar8 = 0xffffffff;
      uVar7 = 0;
      local_98 = (ulonglong *)0x0;
      local_80 = 4;
      local_78 = 0xffffffff;
      local_74 = 0;
      local_90 = 0;
      uStack_88 = 0;
      FUN_18124a040(&local_70);
      puVar5 = local_68;
      if (local_70 != (undefined1 *)0x0) {
        puVar5 = local_70;
      }
      puVar3 = puVar9;
      if (-1 < local_50) {
        do {
          uVar4 = (uint)puVar3;
          if ((*(uint *)(puVar5 + (longlong)((int)uVar4 >> 5) * 4) >> (uVar4 & 0x1f) & 1) != 0)
          goto joined_r0x0001811333e4;
          puVar3 = (ulonglong *)(ulonglong)(uVar4 + 1);
        } while ((int)(uVar4 + 1) <= local_50);
      }
      goto LAB_1811334aa;
    }
    FUN_1812b46a0(param_1,3);
  }
joined_r0x0001811333e4:
  while (uVar4 != 0xffffffff) {
    uVar4 = (uint)puVar3;
    uVar2 = FUN_181133ae0(param_2,1L << ((byte)puVar3 & 0x3f));
    if (0 < (int)uVar2) {
      if ((int)uVar8 < (int)uVar2) {
        FUN_18123d8b0(&local_98,(longlong)((int)uVar2 >> 5) + 1);
        local_78 = uVar2;
        puVar9 = local_98;
      }
      puVar3 = &local_90;
      if (puVar9 != (ulonglong *)0x0) {
        puVar3 = puVar9;
      }
      puVar1 = (uint *)((longlong)puVar3 + (longlong)((int)uVar2 >> 5) * 4);
      *puVar1 = *puVar1 | 1 << (uVar2 & 0x1f);
      puVar9 = local_98;
      uVar8 = local_78;
    }
    puVar5 = local_68;
    if (local_70 != (undefined1 *)0x0) {
      puVar5 = local_70;
    }
    do {
      uVar4 = uVar4 + 1;
      uVar6 = local_80;
      uVar7 = local_74;
      if (local_50 < (int)uVar4) goto LAB_1811334aa;
      puVar3 = (ulonglong *)(ulonglong)uVar4;
    } while ((*(uint *)(puVar5 + (longlong)((int)uVar4 >> 5) * 4) >> (uVar4 & 0x1f) & 1) == 0);
  }
LAB_1811334aa:
  *param_1 = (ulonglong)puVar9;
  param_1[3] = uVar6;
  param_1[1] = local_90;
  param_1[2] = uStack_88;
  *(uint *)(param_1 + 4) = uVar8;
  *(undefined1 *)((longlong)param_1 + 0x24) = uVar7;
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 181133ae0 size=1646 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181133ae0(undefined8 param_1,ulonglong param_2)

{
  undefined8 uVar1;
  undefined1 auStack_58 [32];
  void *local_38 [5];
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  if (param_2 < 0x2000001) {
    if (param_2 == 0x2000000) {
    }
    if (param_2 < 0x1001) {
      if (param_2 == 0x1000) {
      }
      if (param_2 < 0x41) {
        if (param_2 == 0x40) {
        }
        switch(param_2) {
        case 1:
        case 2:
        case 4:
        case 8:
        case 0x10:
        case 0x20:
        }
      }
      else {
        if (param_2 == 0x80) {
        }
        if (param_2 == 0x100) {
        }
        if (param_2 == 0x200) {
        }
        if (param_2 == 0x400) {
        }
        if (param_2 == 0x800) {
        }
      }
    }
    else if (param_2 < 0x80001) {
      if (param_2 == 0x80000) {
      }
      if (param_2 < 0x10001) {
        if (param_2 == 0x10000) {
        }
        if (param_2 == 0x2000) {
        }
        if (param_2 == 0x4000) {
        }
        if (param_2 == 0x8000) {
        }
      }
      else {
        if (param_2 == 0x20000) {
        }
        if (param_2 == 0x40000) {
        }
      }
    }
    else {
      if (param_2 == 0x100000) {
      }
      if (param_2 == 0x200000) {
      }
      if (param_2 == 0x400000) {
      }
      if (param_2 == 0x800000) {
      }
      if (param_2 == 0x1000000) {
      }
    }
  }
  else if (param_2 < 0x4000000001) {
    if (param_2 == 0x4000000000) {
    }
    if (param_2 < 0x100000001) {
      if (param_2 == 0x100000000) {
      }
      if (param_2 < 0x20000001) {
        if (param_2 == 0x20000000) {
        }
        if (param_2 == 0x4000000) {
        }
        if (param_2 == 0x8000000) {
        }
        if (param_2 == 0x10000000) {
        }
      }
      else {
        if (param_2 == 0x40000000) {
        }
        if (param_2 == 0x80000000) {
        }
      }
    }
    else {
      if (param_2 == 0x200000000) {
      }
      if (param_2 == 0x400000000) {
      }
      if (param_2 == 0x800000000) {
      }
      if (param_2 == 0x1000000000) {
      }
      if (param_2 == 0x2000000000) {
      }
    }
  }
  else if (param_2 < 0x100000000001) {
    if (param_2 == 0x100000000000) {
    }
    if (param_2 == 0x8000000000) {
    }
    if (param_2 == 0x10000000000) {
    }
    if (param_2 == 0x20000000000) {
    }
    if (param_2 == 0x40000000000) {
    }
    if (param_2 == 0x80000000000) {
    }
  }
  else {
    if (param_2 == 0x200000000000) {
    }
    if (param_2 == 0x400000000000) {
    }
    if (param_2 == 0x800000000000) {
    }
    if (param_2 == 0x1000000000000) {
    }
    if (param_2 == 0x2000000000000) {
    }
  }
  uVar1 = FUN_18124a040(local_38);
  FUN_181249f70(uVar1,0);
                    /* WARNING: Subroutine does not return */
  free(local_38[0]);
}



############ FUN_ 1812b46a0 size=231 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812b46a0(undefined8 *param_1,int param_2)

{
  uint *puVar1;
  undefined8 *puVar2;
  uint uVar3;
  int iVar4;
  undefined1 auStack_58 [32];
  undefined8 *local_38;
  undefined8 local_30;
  undefined8 uStack_28;
  undefined8 local_20;
  uint local_18;
  undefined1 local_14;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  if (param_2 != 0) {
    FUN_18124a040(&local_38,0xf000000);
    uVar3 = 0x1e;
    for (iVar4 = (param_2 + 1) * (param_2 + 1) + -5; -1 < iVar4; iVar4 = iVar4 + -1) {
      if (-1 < (int)uVar3) {
        if ((int)local_18 < (int)uVar3) {
          FUN_18123d8b0(&local_38,(longlong)((int)uVar3 >> 5) + 1);
          local_18 = uVar3;
        }
        puVar2 = &local_30;
        if (local_38 != (undefined8 *)0x0) {
          puVar2 = local_38;
        }
        puVar1 = (uint *)((longlong)puVar2 + (longlong)((int)uVar3 >> 5) * 4);
        *puVar1 = *puVar1 | 1 << (uVar3 & 0x1f);
      }
      uVar3 = uVar3 + 1;
    }
    *param_1 = local_38;
    param_1[3] = local_20;
    *(uint *)(param_1 + 4) = local_18;
    *(undefined1 *)((longlong)param_1 + 0x24) = local_14;
    param_1[1] = local_30;
    param_1[2] = uStack_28;
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  FUN_18124a040(param_1,0x1000000);
}



############ FUN_ 1812b1fe0 size=215 ############

undefined8 FUN_1812b1fe0(undefined8 param_1,int param_2)

{
  if (param_2 == 1) {
    FUN_18124a040(param_1,8);
    return param_1;
  }
  if (param_2 == 2) {
    FUN_18124a040(param_1,6);
    return param_1;
  }
  if (param_2 == 3) {
    FUN_18124a040(param_1,0xe);
    return param_1;
  }
  if (param_2 == 4) {
    FUN_18124a040(param_1,0x66);
    return param_1;
  }
  if (param_2 == 5) {
    FUN_18124a040(param_1,0x6e);
    return param_1;
  }
  if (param_2 == 6) {
    FUN_18124a040(param_1,0x7e);
    return param_1;
  }
  if (param_2 == 7) {
    FUN_18124a040(param_1,0x300c0e);
    return param_1;
  }
  if (param_2 == 8) {
    FUN_18124a040(param_1,0x300c1e);
    return param_1;
  }
  FUN_1812b20c0();
  return param_1;
}



############ FUN_ 18053f520 size=215 ############

undefined8 FUN_18053f520(undefined8 param_1,int param_2)

{
  if (param_2 == 1) {
    FUN_18124a040(param_1,8);
    return param_1;
  }
  if (param_2 == 2) {
    FUN_18124a040(param_1,6);
    return param_1;
  }
  if (param_2 == 3) {
    FUN_18124a040(param_1,0xe);
    return param_1;
  }
  if (param_2 == 4) {
    FUN_18124a040(param_1,0x66);
    return param_1;
  }
  if (param_2 == 5) {
    FUN_18124a040(param_1,0x6e);
    return param_1;
  }
  if (param_2 == 6) {
    FUN_18124a040(param_1,0x7e);
    return param_1;
  }
  if (param_2 == 7) {
    FUN_18124a040(param_1,0x1ee);
    return param_1;
  }
  if (param_2 == 8) {
    FUN_18124a040(param_1,0x1fe);
    return param_1;
  }
  FUN_1812b20c0();
  return param_1;
}



############ FUN_ 1812b2f30 size=22 ############

undefined8 FUN_1812b2f30(undefined8 param_1,undefined4 param_2)

{
  FUN_18124a040(param_1,param_2);
  return param_1;
}



############ FUN_ 1812b47a0 size=25 ############

undefined8 FUN_1812b47a0(undefined8 param_1)

{
  FUN_18124a040(param_1,0x66);
  return param_1;
}



############ FUN_ 1812b47c0 size=25 ############

undefined8 FUN_1812b47c0(undefined8 param_1)

{
  FUN_18124a040(param_1,0x30300c1e);
  return param_1;
}



############ FUN_ 1812b47e0 size=25 ############

undefined8 FUN_1812b47e0(undefined8 param_1)

{
  FUN_18124a040(param_1,0x30300c0e);
  return param_1;
}



############ FUN_ 1812b4800 size=25 ############

undefined8 FUN_1812b4800(undefined8 param_1)

{
  FUN_18124a040(param_1,0x1fe);
  return param_1;
}



############ FUN_ 1812b4820 size=25 ############

undefined8 FUN_1812b4820(undefined8 param_1)

{
  FUN_18124a040(param_1,0x300c1e);
  return param_1;
}



############ FUN_ 1812b4840 size=25 ############

undefined8 FUN_1812b4840(undefined8 param_1)

{
  FUN_18124a040(param_1,0x1ee);
  return param_1;
}



############ FUN_ 1812b4860 size=25 ############

undefined8 FUN_1812b4860(undefined8 param_1)

{
  FUN_18124a040(param_1,0x300c0e);
  return param_1;
}



############ FUN_ 1812b4880 size=25 ############

undefined8 FUN_1812b4880(undefined8 param_1)

{
  FUN_18124a040(param_1,0xc76);
  return param_1;
}



############ FUN_ 1812b48a0 size=25 ############

undefined8 FUN_1812b48a0(undefined8 param_1)

{
  FUN_18124a040(param_1,0xc66);
  return param_1;
}



############ FUN_ 1812b48c0 size=25 ############

undefined8 FUN_1812b48c0(undefined8 param_1)

{
  FUN_18124a040(param_1,0x27e);
  return param_1;
}



############ FUN_ 1812b48e0 size=25 ############

undefined8 FUN_1812b48e0(undefined8 param_1)

{
  FUN_18124a040(param_1,0x26e);
  return param_1;
}



############ FUN_ 1812b4900 size=25 ############

undefined8 FUN_1812b4900(undefined8 param_1)

{
  FUN_18124a040(param_1,0x7e);
  return param_1;
}



############ FUN_ 1812b4920 size=25 ############

undefined8 FUN_1812b4920(undefined8 param_1)

{
  FUN_18124a040(param_1,0x6e);
  return param_1;
}



############ FUN_ 1812b4940 size=25 ############

undefined8 FUN_1812b4940(undefined8 param_1)

{
  FUN_18124a040(param_1,0x20e);
  return param_1;
}



############ FUN_ 1812b4960 size=25 ############

undefined8 FUN_1812b4960(undefined8 param_1)

{
  FUN_18124a040(param_1,0x206);
  return param_1;
}



############ FUN_ 1812b4980 size=25 ############

undefined8 FUN_1812b4980(undefined8 param_1)

{
  FUN_18124a040(param_1,0xe);
  return param_1;
}



############ FUN_ 1812b49a0 size=25 ############

undefined8 FUN_1812b49a0(undefined8 param_1)

{
  FUN_18124a040(param_1,6);
  return param_1;
}



############ FUN_ 1812b49c0 size=25 ############

undefined8 FUN_1812b49c0(undefined8 param_1)

{
  FUN_18124a040(param_1,8);
  return param_1;
}



############ FUN_ 181363800 size=537 ############

void FUN_181363800(undefined8 param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 auStack_5d8 [32];
  undefined1 local_5b8;
  undefined4 local_578;
  undefined8 local_500;
  undefined1 local_4e8 [8];
  undefined1 local_4e0 [8];
  undefined1 local_4d8 [8];
  undefined1 local_4d0 [56];
  undefined1 *local_498;
  undefined1 local_400 [16];
  undefined1 local_3f0 [16];
  undefined8 local_3e0;
  undefined8 local_3d8;
  undefined8 local_3d0;
  undefined8 local_3c8;
  undefined1 local_3c0 [16];
  undefined1 local_3b0 [24];
  undefined8 local_398;
  undefined8 local_390;
  undefined1 local_350 [568];
  undefined1 local_118 [40];
  undefined1 local_f0 [40];
  void *local_c8 [16];
  ulonglong local_48;
  
  local_390 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_5d8;
  local_578 = 0;
  local_498 = local_350;
  local_500 = param_1;
  local_398 = param_1;
  FUN_18049c4e0(local_4d0,"Output");
  FUN_18049c4e0(local_4d8,"Sidechain Input");
  FUN_18049c4e0(local_4e0,"Main Input");
  local_3e0 = 0;
  local_3d8 = 0;
  local_3d0 = 0;
  local_3c8 = 0;
  FUN_18124a040(local_f0,6);
  FUN_18124a040(local_118,6);
  FUN_18124a040(local_c8,6);
  local_578 = 7;
  lVar1 = FUN_1804d72a0(&local_3e0);
  FUN_1804db640(local_400,lVar1);
  FUN_1804db640(local_3f0,lVar1 + 0x10);
  local_578 = 0xf;
  local_5b8 = 1;
  FUN_1812bf5a0(local_400,1,local_4e0,local_c8);
  FUN_1804db640(local_3c0,local_400);
  FUN_1804db640(local_3b0,local_3f0);
  local_578 = 0x1f;
  local_5b8 = 1;
  FUN_1812bf5a0(local_3c0,1,local_4d8,local_118);
  local_5b8 = 1;
  uVar2 = FUN_1812bf4c0(local_3c0,local_350,local_4d0,local_f0);
  FUN_18049c4e0(local_4e8,"SOOTHE2STATE");
  FUN_18052caf0(param_1,local_4e8,uVar2);
  FUN_1804d7040(local_3c0);
  local_578 = 7;
  FUN_1804d7040(local_400);
  FUN_1804d7040(&local_3e0);
                    /* WARNING: Subroutine does not return */
  free(local_c8[0]);
}



############ FUN_ 180549c30 size=229 ############

longlong * FUN_180549c30(longlong *param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(*param_2 + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *param_1;
  *param_1 = *param_2;
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if ((*(uint *)(param_2[1] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(param_2[1] + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[1];
  param_1[1] = param_2[1];
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  param_1[2] = param_2[2];
  *(int *)(param_1 + 3) = (int)param_2[3];
  FUN_18123d980(param_1 + 4,param_2 + 4);
  *(char *)(param_1 + 9) = (char)param_2[9];
  FUN_18123d980(param_1 + 10,param_2 + 10);
  *(char *)(param_1 + 0xf) = (char)param_2[0xf];
  return param_1;
}



############ FUN_ 18054c7c0 size=1901 ############

longlong *
FUN_18054c7c0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
             double param_5,int param_6)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  longlong *plVar6;
  longlong lVar7;
  uint uVar8;
  uint *puVar9;
  longlong lVar10;
  undefined4 local_res8 [2];
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  undefined1 local_d0 [8];
  longlong local_c8;
  longlong *local_c0;
  longlong local_b8;
  longlong local_b0;
  undefined1 local_a8 [8];
  longlong local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined4 *local_88;
  longlong local_80;
  undefined4 *local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  undefined1 local_50 [8];
  longlong local_48;
  
  local_90 = 0xfffffffffffffffe;
  (**(code **)(*param_1 + 0x38))();
  puVar9 = (uint *)(param_1[0x47] + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  param_1[0x47] = (longlong)&DAT_1821dbf98;
  if (((*(int *)((longlong)param_1 + 0x27c) == 0) && (param_1[0x48] != 0)) && (param_1[0x49] != 0))
  {
    FUN_18049c4e0(&local_e8,"The input and output devices don\'t share a common sample rate!");
    lVar7 = DAT_1826739f8;
    local_88 = &DAT_182673984;
    do {
      LOCK();
      uVar8 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar8 != 0);
    if (DAT_1826739f8 == 0) {
      local_e0 = local_e8;
      uVar8 = *(uint *)(local_e8 + -0x10);
LAB_18054c921:
      if ((uVar8 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
         (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_e8,*(undefined1 *)(DAT_1826739f8 + 0x38),
                                0), -1 < iVar4)) {
        iVar4 = FUN_1812498b0(lVar7 + 0x18,local_e8,*(undefined1 *)(lVar7 + 0x38),0);
        if (iVar4 < 0) {
          local_e0 = local_e8;
          uVar8 = *(uint *)(local_e8 + -0x10);
        }
        else {
          plVar6 = (longlong *)FUN_181249970(lVar7 + 0x28,iVar4);
          local_e0 = *plVar6;
          uVar8 = *(uint *)(local_e0 + -0x10);
        }
        goto LAB_18054c921;
      }
      FUN_181234570(*(undefined8 *)(lVar7 + 0x40),&local_e0,&local_e8,&local_e8);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar9 = (uint *)(local_e8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar8 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    lVar7 = param_1[0x47];
    lVar10 = local_e0;
    local_e0 = lVar7;
    local_80 = lVar7;
LAB_18054c972:
    param_1[0x47] = lVar10;
    puVar9 = (uint *)(lVar7 + -0x10);
  }
  else {
    if (param_6 < 1) {
      iVar4 = *(int *)((longlong)param_1 + 0x264);
    }
    else {
      iVar4 = param_6;
      if (param_6 < (int)param_1[0x4c]) {
        iVar4 = (int)param_1[0x4c];
      }
    }
    *(int *)((longlong)param_1 + 0x294) = iVar4;
    if (param_5 <= 0.0) {
      param_5 = (double)param_1[0x4b];
    }
    param_1[0x53] = (longlong)param_5;
    FUN_18123d980(param_1 + 0x5b,param_3);
    FUN_18123d980(param_1 + 0x60,param_4);
    lVar7 = param_1[0x48];
    bVar2 = false;
    if (lVar7 != 0) {
      cVar3 = FUN_18054a740(lVar7,param_1[0x53],param_3,param_6);
      bVar1 = bVar2;
      if (cVar3 != '\0') {
        if (*(int *)(lVar7 + 0x28) != 0) {
          local_c0 = *(longlong **)(lVar7 + 0x10);
          if (*(longlong **)(lVar7 + 0xf8) != (longlong *)0x0) {
            (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x10))();
          }
          *(undefined8 *)(lVar7 + 0xf8) = 0;
          iVar4 = (**(code **)(*local_c0 + 0x70))(local_c0,&DAT_1824adda0,lVar7 + 0xf8);
          if (iVar4 < 0) goto LAB_18054ca8b;
        }
        bVar1 = true;
      }
LAB_18054ca8b:
      if (bVar1) goto LAB_18054cb36;
      FUN_18049c4e0(&local_d8,"Couldn\'t open the input device!");
      local_78 = &DAT_182673984;
      do {
        LOCK();
        uVar8 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar8 != 0);
      if (DAT_1826739f8 == 0) {
        local_c8 = local_d8;
        if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(DAT_1826739f8,&local_c8,&local_d8,&local_d8);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar9 = (uint *)(local_d8 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar8 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      lVar7 = param_1[0x47];
      lVar10 = local_c8;
      local_c8 = lVar7;
      local_70 = lVar7;
      goto LAB_18054c972;
    }
LAB_18054cb36:
    lVar7 = param_1[0x49];
    if (lVar7 == 0) {
LAB_18054cbe8:
      if ((char)param_1[0x4a] != '\0') {
        lVar7 = param_1[0x48];
        if (((lVar7 != 0) && (param_1[0x49] != 0)) &&
           (*(int *)(lVar7 + 0x98) != *(int *)(param_1[0x49] + 0x98))) {
          (**(code **)(*param_1 + 0x38))(param_1);
          plVar6 = (longlong *)
                   FUN_181249dc0(&local_b0,"Couldn\'t open the output device (buffer size mismatch)"
                                );
          local_60 = param_1[0x47];
          param_1[0x47] = *plVar6;
          *plVar6 = local_60;
          puVar9 = (uint *)(local_b0 + -0x10);
          goto LAB_18054c97d;
        }
        if (param_1[0x49] == 0) {
          uVar5 = *(undefined4 *)(lVar7 + 0x98);
        }
        else {
          uVar5 = *(undefined4 *)(param_1[0x49] + 0x98);
        }
        *(undefined4 *)((longlong)param_1 + 0x294) = uVar5;
      }
      if (param_1[0x48] != 0) {
        ResetEvent(*(HANDLE *)(param_1[0x48] + 0x58));
      }
      if (param_1[0x49] != 0) {
        ResetEvent(*(HANDLE *)(param_1[0x49] + 0x58));
      }
      *(undefined1 *)((longlong)param_1 + 0x2d5) = 0;
      FUN_18122b2c0(param_1 + 3,8);
      if (DAT_182673a00 == (HANDLE)0x0) {
        Sleep(5);
      }
      else {
        WaitForSingleObject(DAT_182673a00,5);
      }
      lVar7 = param_1[0x48];
      if ((lVar7 != 0) && (*(longlong *)(lVar7 + 0x10) != 0)) {
        *(int *)(param_1 + 0x4d) = *(int *)(lVar7 + 0x38) + *(int *)((longlong)param_1 + 0x294);
        iVar4 = *(int *)(lVar7 + 0x98) + *(int *)((longlong)param_1 + 0x294);
        *(int *)(lVar7 + 0x110) = iVar4;
        uVar8 = iVar4 - 1;
        uVar8 = uVar8 | (int)uVar8 >> 1;
        uVar8 = uVar8 | (int)uVar8 >> 2;
        uVar8 = uVar8 | (int)uVar8 >> 4;
        uVar8 = uVar8 | (int)uVar8 >> 8;
        uVar8 = (int)uVar8 >> 0x10 | uVar8;
        *(uint *)(lVar7 + 0x114) = uVar8;
        FUN_18124a200(lVar7 + 0x100,(longlong)(int)((uVar8 + 1) * *(int *)(lVar7 + 0xa0)),1);
        LOCK();
        *(undefined4 *)(lVar7 + 0x11c) = 0;
        UNLOCK();
        LOCK();
        *(undefined4 *)(lVar7 + 0x120) = 0;
        UNLOCK();
        *(undefined4 *)(lVar7 + 0x118) = 0;
        iVar4 = (**(code **)(**(longlong **)(lVar7 + 0x10) + 0x50))();
        if (iVar4 < 0) {
          (**(code **)(*param_1 + 0x38))(param_1);
          plVar6 = (longlong *)FUN_181249dc0(&local_a0,"Couldn\'t start the input device!");
          local_58 = param_1[0x47];
          param_1[0x47] = *plVar6;
          *plVar6 = local_58;
          puVar9 = (uint *)(local_a0 + -0x10);
          goto LAB_18054c97d;
        }
        iVar4 = (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x18))
                          (*(longlong **)(lVar7 + 0xf8),local_a8,local_res8,local_d0,0,0);
        while (iVar4 != 0x8890001) {
          (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x20))
                    (*(longlong **)(lVar7 + 0xf8),local_res8[0]);
          iVar4 = (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x18))
                            (*(longlong **)(lVar7 + 0xf8),local_a8,local_res8,local_d0,0,0);
        }
      }
      lVar7 = param_1[0x49];
      if ((lVar7 != 0) && (*(longlong *)(lVar7 + 0x10) != 0)) {
        *(int *)((longlong)param_1 + 0x26c) =
             *(int *)(lVar7 + 0x38) + *(int *)((longlong)param_1 + 0x294);
        lVar7 = param_1[0x49];
        uVar5 = FUN_18054b6f0(lVar7);
        iVar4 = (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x18))
                          (*(longlong **)(lVar7 + 0xf8),uVar5,local_50);
        if (-1 < iVar4) {
          (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x20))(*(longlong **)(lVar7 + 0xf8),uVar5,2);
        }
        iVar4 = (**(code **)(**(longlong **)(lVar7 + 0x10) + 0x50))();
        if (iVar4 < 0) {
          (**(code **)(*param_1 + 0x38))(param_1);
          plVar6 = (longlong *)FUN_181249dc0(&local_98,"Couldn\'t start the output device!");
          local_48 = param_1[0x47];
          param_1[0x47] = *plVar6;
          *plVar6 = local_48;
          puVar9 = (uint *)(local_98 + -0x10);
          goto LAB_18054c97d;
        }
      }
      *(undefined1 *)(param_1 + 0x52) = 1;
      lVar7 = param_1[0x47];
      *param_2 = lVar7;
      uVar8 = *(uint *)(lVar7 + -0x10);
      goto LAB_18054cf03;
    }
    cVar3 = FUN_18054a740(lVar7,param_1[0x53],param_4,param_6);
    if (cVar3 != '\0') {
      if (*(int *)(lVar7 + 0x28) != 0) {
        plVar6 = *(longlong **)(lVar7 + 0x10);
        if (*(longlong **)(lVar7 + 0xf8) != (longlong *)0x0) {
          (**(code **)(**(longlong **)(lVar7 + 0xf8) + 0x10))();
        }
        *(undefined8 *)(lVar7 + 0xf8) = 0;
        iVar4 = (**(code **)(*plVar6 + 0x70))(plVar6,&DAT_1824ad5c0,lVar7 + 0xf8);
        if (iVar4 < 0) goto LAB_18054cba6;
      }
      bVar2 = true;
    }
LAB_18054cba6:
    if (bVar2) goto LAB_18054cbe8;
    (**(code **)(*param_1 + 0x38))(param_1);
    plVar6 = (longlong *)FUN_181249dc0(&local_b8,"Couldn\'t open the output device!");
    local_68 = param_1[0x47];
    param_1[0x47] = *plVar6;
    *plVar6 = local_68;
    puVar9 = (uint *)(local_b8 + -0x10);
  }
LAB_18054c97d:
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  lVar7 = param_1[0x47];
  *param_2 = lVar7;
  uVar8 = *(uint *)(lVar7 + -0x10);
LAB_18054cf03:
  if ((uVar8 & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar7 + -0x10) = *(int *)(lVar7 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 18123d0b0 size=707 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18123d0b0(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined8 uVar4;
  uint *puVar5;
  int iVar6;
  ulonglong uVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined1 *puVar10;
  ulonglong uVar11;
  longlong *plVar12;
  longlong lVar13;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  undefined1 *local_40;
  undefined1 local_38 [24];
  int local_20;
  char local_1c;
  ulonglong local_18;
  
  local_48 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  if (param_1 == param_2) {
    uVar4 = FUN_18123db10(&local_40);
    FUN_18123d0b0(param_1,uVar4);
                    /* WARNING: Subroutine does not return */
    free(local_40);
  }
  if (*(char *)((longlong)param_2 + 0x24) != '\0') {
    plVar12 = (longlong *)*param_2;
    if (plVar12 == (longlong *)0x0) {
      plVar12 = param_2 + 1;
    }
    iVar3 = (int)param_2[4] >> 5;
    uVar7 = (ulonglong)iVar3;
    uVar9 = uVar7;
    if (-1 < iVar3) {
LAB_18123d140:
      uVar1 = *(uint *)((longlong)plVar12 + uVar7 * 4);
      if (uVar1 == 0) goto code_r0x00018123d14c;
      iVar3 = 0x1f;
      if (uVar1 != 0) {
        for (; uVar1 >> iVar3 == 0; iVar3 = iVar3 + -1) {
        }
      }
      iVar3 = (int)uVar9 * 0x20 + iVar3;
      goto LAB_18123d159;
    }
LAB_18123d154:
    iVar3 = -1;
LAB_18123d159:
    if (-1 < iVar3) {
      FUN_18123db10(&local_40,param_2);
      if (local_1c == '\0') {
        puVar10 = local_38;
        if (local_40 != (undefined1 *)0x0) {
          puVar10 = local_40;
        }
        uVar7 = (ulonglong)(local_20 >> 5);
        uVar9 = uVar7;
        if (-1 < local_20 >> 5) {
LAB_18123d1a0:
          uVar1 = *(uint *)(puVar10 + uVar7 * 4);
          if (uVar1 == 0) goto code_r0x00018123d1a8;
          iVar3 = 0x1f;
          if (uVar1 != 0) {
            for (; uVar1 >> iVar3 == 0; iVar3 = iVar3 + -1) {
            }
          }
          iVar3 = (int)uVar9 * 0x20 + iVar3;
          goto LAB_18123d1b5;
        }
LAB_18123d1b0:
        iVar3 = -1;
LAB_18123d1b5:
        local_1c = 1;
        if (-1 < iVar3) goto LAB_18123d1c3;
      }
      local_1c = 0;
LAB_18123d1c3:
      FUN_18123cdc0(param_1,&local_40);
                    /* WARNING: Subroutine does not return */
      free(local_40);
    }
  }
  cVar2 = FUN_18123d4d0(param_1);
  if (cVar2 == '\0') {
    iVar3 = (int)param_1[4];
    if ((int)param_1[4] < (int)param_2[4]) {
      iVar3 = (int)param_2[4];
    }
    *(int *)(param_1 + 4) = iVar3 + 1;
    uVar9 = (longlong)(iVar3 + 1 >> 5) + 1;
    puVar5 = (uint *)FUN_18123d8b0(param_1,uVar9);
    plVar12 = (longlong *)*param_2;
    if (plVar12 == (longlong *)0x0) {
      plVar12 = param_2 + 1;
    }
    uVar7 = 0;
    if (uVar9 != 0) {
      lVar13 = (longlong)plVar12 - (longlong)puVar5;
      uVar11 = uVar7;
      do {
        lVar8 = uVar7 + *puVar5;
        if (uVar11 < (ulonglong)param_2[3]) {
          lVar8 = lVar8 + (ulonglong)*(uint *)(lVar13 + (longlong)puVar5);
        }
        *puVar5 = (uint)lVar8;
        uVar7 = lVar8 >> 0x20;
        uVar11 = uVar11 + 1;
        puVar5 = puVar5 + 1;
      } while (uVar11 < uVar9);
    }
    plVar12 = (longlong *)*param_1;
    if (plVar12 == (longlong *)0x0) {
      plVar12 = param_1 + 1;
    }
    iVar3 = (int)param_1[4] >> 5;
    lVar13 = (longlong)iVar3;
    if (-1 < iVar3) {
      do {
        uVar1 = *(uint *)((longlong)plVar12 + lVar13 * 4);
        if (uVar1 != 0) {
          iVar6 = 0x1f;
          if (uVar1 != 0) {
            for (; uVar1 >> iVar6 == 0; iVar6 = iVar6 + -1) {
            }
          }
          iVar6 = iVar3 * 0x20 + iVar6;
          goto LAB_18123d365;
        }
        iVar3 = iVar3 + -1;
        lVar13 = lVar13 + -1;
      } while (-1 < lVar13);
    }
    iVar6 = -1;
LAB_18123d365:
    *(int *)(param_1 + 4) = iVar6;
  }
  iVar3 = FUN_18123c4d0(param_1,param_2);
  if (-1 < iVar3) {
    FUN_18123d470(param_1);
    FUN_18123cdc0(param_1,param_2);
    FUN_18123d470(param_1);
  }
  FUN_18123db10(&local_40,param_1);
  if (local_1c == '\0') {
    puVar10 = local_38;
    if (local_40 != (undefined1 *)0x0) {
      puVar10 = local_40;
    }
    uVar7 = (ulonglong)(local_20 >> 5);
    uVar9 = uVar7;
    if (-1 < local_20 >> 5) {
LAB_18123d260:
      uVar1 = *(uint *)(puVar10 + uVar7 * 4);
      if (uVar1 == 0) goto code_r0x00018123d268;
      iVar3 = 0x1f;
      if (uVar1 != 0) {
        for (; uVar1 >> iVar3 == 0; iVar3 = iVar3 + -1) {
        }
      }
      iVar3 = (int)uVar9 * 0x20 + iVar3;
      goto LAB_18123d275;
    }
LAB_18123d270:
    iVar3 = -1;
LAB_18123d275:
    local_1c = 1;
    if (-1 < iVar3) goto LAB_18123d283;
  }
  local_1c = 0;
LAB_18123d283:
  FUN_18123d980(param_1,param_2);
  FUN_18123cdc0(param_1,&local_40);
                    /* WARNING: Subroutine does not return */
  free(local_40);
code_r0x00018123d14c:
  uVar7 = uVar7 - 1;
  uVar9 = (ulonglong)((int)uVar9 - 1);
  if ((longlong)uVar7 < 0) goto LAB_18123d154;
  goto LAB_18123d140;
code_r0x00018123d1a8:
  uVar9 = (ulonglong)((int)uVar9 - 1);
  uVar7 = uVar7 - 1;
  if ((longlong)uVar7 < 0) goto LAB_18123d1b0;
  goto LAB_18123d1a0;
code_r0x00018123d268:
  uVar9 = (ulonglong)((int)uVar9 - 1);
  uVar7 = uVar7 - 1;
  if ((longlong)uVar7 < 0) goto LAB_18123d270;
  goto LAB_18123d260;
}



############ FUN_ 1812bf5a0 size=267 ############

void FUN_1812bf5a0(longlong *param_1,char param_2,longlong *param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong *plVar3;
  bool bVar4;
  undefined1 auStack_88 [32];
  longlong local_68;
  void *local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined4 local_40;
  undefined1 local_3c;
  undefined1 local_38;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_48 = 4;
  local_60 = (void *)0x0;
  local_3c = 0;
  local_58 = 0;
  local_50 = 0;
  local_40 = 0xffffffff;
  if ((*(uint *)(*param_3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_3 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  local_68 = *param_3;
  LOCK();
  UNLOCK();
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_18123d980(&local_60,param_4);
  local_38 = 1;
  if (param_2 == '\0') {
    param_1 = param_1 + 2;
  }
  FUN_1804de510(param_1,*(int *)((longlong)param_1 + 0xc) + 1);
  plVar3 = (longlong *)((longlong)*(int *)((longlong)param_1 + 0xc) * 0x38 + *param_1);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  *plVar3 = local_68;
  if ((*(uint *)(local_68 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_68 + -0x10) = *(int *)(local_68 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18123db10(plVar3 + 1,&local_60);
  *(undefined1 *)(plVar3 + 6) = local_38;
                    /* WARNING: Subroutine does not return */
  free(local_60);
}



############ FUN_ 1812c0470 size=314 ############

void FUN_1812c0470(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  longlong lVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res10;
  undefined8 local_res18;
  undefined8 local_res20;
  
  puVar3 = (uint *)(*(longlong *)(param_1 + 0xf0) + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  *(undefined1 **)(param_1 + 0xf0) = &DAT_1821dbf98;
  puVar3 = (uint *)(*(longlong *)(param_1 + 0xf8) + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  *(undefined1 **)(param_1 + 0xf8) = &DAT_1821dbf98;
  lVar5 = 0;
  if (0 < *(int *)(param_1 + 0xdc)) {
    lVar4 = lVar5;
    if (*(int *)(param_1 + 0xdc) != 0) {
      lVar4 = **(longlong **)(param_1 + 0xd0);
    }
    puVar2 = (undefined8 *)FUN_1812b22b0(lVar4 + 0x10,&local_res8);
    local_res18 = *(undefined8 *)(param_1 + 0xf0);
    *(undefined8 *)(param_1 + 0xf0) = *puVar2;
    *puVar2 = local_res18;
    puVar3 = (uint *)(local_res8 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
  }
  if (0 < *(int *)(param_1 + 0xec)) {
    if (*(int *)(param_1 + 0xec) != 0) {
      lVar5 = **(longlong **)(param_1 + 0xe0);
    }
    puVar2 = (undefined8 *)FUN_1812b22b0(lVar5 + 0x10,&local_res10);
    local_res20 = *(undefined8 *)(param_1 + 0xf8);
    *(undefined8 *)(param_1 + 0xf8) = *puVar2;
    *puVar2 = local_res20;
    puVar3 = (uint *)(local_res10 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
  }
  return;
}



############ FUN_ 18048a970 size=126 ############

void FUN_18048a970(longlong *param_1,undefined8 param_2,undefined8 *param_3,undefined8 *param_4)

{
  int iVar1;
  longlong *local_18;
  undefined1 local_10 [8];
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)((longlong)param_1 + 0xc) <= iVar1) &&
       (iVar1 = *(int *)((longlong)param_1 + 0xc) + -1, iVar1 < 0)) break;
    local_18 = (longlong *)*param_4;
    (**(code **)(*local_18 + 0xb8))(local_18,local_10,param_4 + 1);
    FUN_180492ef8(*(undefined8 *)(*param_1 + (longlong)iVar1 * 8),*param_3,&local_18);
  }
  return;
}



############ FUN_ 18048b3d0 size=219 ############

void FUN_18048b3d0(LPCRITICAL_SECTION param_1,undefined8 param_2,undefined8 param_3,
                  undefined8 *param_4)

{
  int iVar1;
  undefined8 uVar2;
  int iVar3;
  longlong *local_30;
  undefined1 local_28 [16];
  
  EnterCriticalSection(param_1);
  EnterCriticalSection(param_1);
  iVar3 = *(int *)((longlong)&param_1[1].OwningThread + 4);
  LeaveCriticalSection(param_1);
  while (0 < iVar3) {
    EnterCriticalSection(param_1);
    iVar1 = *(int *)((longlong)&param_1[1].OwningThread + 4);
    LeaveCriticalSection(param_1);
    iVar3 = iVar3 + -1;
    if ((iVar1 <= iVar3) && (iVar3 = iVar1 + -1, iVar3 < 0)) break;
    local_30 = (longlong *)*param_4;
    (**(code **)(*local_30 + 0xb8))(local_30,local_28,param_4 + 1);
    EnterCriticalSection(param_1);
    uVar2 = *(undefined8 *)(*(longlong *)&param_1[1].LockCount + (longlong)iVar3 * 8);
    LeaveCriticalSection(param_1);
    FUN_180492ef8(uVar2,param_3,&local_30);
  }
                    /* WARNING: Could not recover jumptable at 0x00018048b4a4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection(param_1);
  return;
}



############ FUN_ 180533de0 size=213 ############

void FUN_180533de0(longlong param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  uVar2 = 0;
  uVar3 = uVar2;
  if (param_2 < *(uint *)(param_1 + 0x6c)) {
    uVar3 = *(undefined8 *)(*(longlong *)(param_1 + 0x60) + (longlong)(int)param_2 * 8);
  }
  iVar1 = *(int *)(param_1 + 0x2400a4);
  while (0 < iVar1) {
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x2400a4) <= iVar1) &&
       (iVar1 = *(int *)(param_1 + 0x2400a4) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x240098) + (longlong)iVar1 * 8),param_2,
                  uVar3,param_4,uVar4);
  }
  if (param_2 < *(uint *)(param_1 + 0x6c)) {
    uVar2 = *(undefined8 *)(*(longlong *)(param_1 + 0x60) + (longlong)(int)param_2 * 8);
  }
  iVar1 = *(int *)(param_1 + 0x2400b4);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x2400b4) <= iVar1) &&
       (iVar1 = *(int *)(param_1 + 0x2400b4) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x2400a8) + (longlong)iVar1 * 8),param_2,
                  uVar2,param_4,uVar4);
  }
  return;
}



############ FUN_ 1805383b0 size=174 ############

void FUN_1805383b0(longlong param_1)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  LPCRITICAL_SECTION lpCriticalSection;
  
  lVar2 = *(longlong *)(param_1 + 8);
  lpCriticalSection = (LPCRITICAL_SECTION)(lVar2 + 0x570);
  EnterCriticalSection(lpCriticalSection);
  EnterCriticalSection(lpCriticalSection);
  iVar4 = *(int *)(lVar2 + 0x5ac);
  LeaveCriticalSection(lpCriticalSection);
  while (0 < iVar4) {
    EnterCriticalSection(lpCriticalSection);
    iVar1 = *(int *)(lVar2 + 0x5ac);
    LeaveCriticalSection(lpCriticalSection);
    iVar4 = iVar4 + -1;
    if ((iVar1 <= iVar4) && (iVar4 = iVar1 + -1, iVar4 < 0)) break;
    EnterCriticalSection(lpCriticalSection);
    uVar3 = *(undefined8 *)(*(longlong *)(lVar2 + 0x5a0) + (longlong)iVar4 * 8);
    LeaveCriticalSection(lpCriticalSection);
    FUN_180492ef8(uVar3);
  }
                    /* WARNING: Could not recover jumptable at 0x000180538457. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection(lpCriticalSection);
  return;
}



############ FUN_ 180571c20 size=96 ############

void FUN_180571c20(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)((longlong)param_1 + 0xc) <= iVar1) &&
       (iVar1 = *(int *)((longlong)param_1 + 0xc) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*param_1 + (longlong)iVar1 * 8),param_3,*param_4);
  }
  return;
}



############ FUN_ 1805855d0 size=132 ############

void FUN_1805855d0(longlong *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4)

{
  int iVar1;
  longlong local_res10;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)((longlong)param_1 + 0xc) <= iVar1) &&
       (iVar1 = *(int *)((longlong)param_1 + 0xc) + -1, iVar1 < 0)) break;
    local_res10 = *param_4;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
    FUN_180492ef8(*(undefined8 *)(*param_1 + (longlong)iVar1 * 8),param_3,&local_res10);
  }
  return;
}



############ FUN_ 180585710 size=80 ############

void FUN_180585710(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)((longlong)param_1 + 0xc) <= iVar1) &&
       (iVar1 = *(int *)((longlong)param_1 + 0xc) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*param_1 + (longlong)iVar1 * 8),param_3);
  }
  return;
}



############ FUN_ 180585f50 size=80 ############

void FUN_180585f50(longlong *param_1,undefined8 param_2,undefined8 *param_3)

{
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)((longlong)param_1 + 0xc) <= iVar1) &&
       (iVar1 = *(int *)((longlong)param_1 + 0xc) + -1, iVar1 < 0)) break;
    FUN_180492ef8(*(undefined8 *)(*param_1 + (longlong)iVar1 * 8),*param_3);
  }
  return;
}



############ FUN_ 181185220 size=542 ############

void FUN_181185220(undefined8 param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 uVar4;
  void *_Memory;
  undefined8 *puVar5;
  int iVar6;
  undefined4 uVar7;
  undefined1 auStack_e8 [32];
  undefined1 local_c8;
  undefined1 local_b8;
  undefined8 *local_b0;
  undefined8 local_a8;
  undefined *local_a0;
  undefined8 local_98;
  undefined8 *local_90;
  undefined1 local_88 [8];
  undefined1 local_80 [16];
  void *local_70 [3];
  ulonglong local_58;
  undefined4 local_50;
  ulonglong local_48;
  
  local_98 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_b0 = (undefined8 *)0x0;
  local_a8 = 0;
  local_90 = param_2;
  local_b0 = (undefined8 *)FUN_180489c00();
  puVar1 = (undefined8 *)param_2[1];
  for (param_2 = (undefined8 *)*param_2; param_2 != puVar1; param_2 = param_2 + 4) {
    puVar5 = param_2;
    if (0xf < (ulonglong)param_2[3]) {
      puVar5 = (undefined8 *)*param_2;
    }
    plVar3 = (longlong *)FUN_18119b4b0(param_1,puVar5);
    if (*(code **)(*plVar3 + 8) == FUN_1811bf850) {
      local_a0 = (undefined *)CONCAT44(local_a0._4_4_,(int)plVar3[0x31]);
      uVar4 = (**(code **)(*plVar3 + 0x88))(plVar3);
      uVar7 = FUN_180487220(uVar4,local_a0._0_4_);
      uVar7 = FUN_180487300(uVar4,uVar7);
    }
    else {
      uVar7 = (**(code **)(*plVar3 + 8))(plVar3);
    }
    FUN_180487aa0(local_70,param_2);
    local_c8 = local_b8;
    local_50 = uVar7;
    FUN_18048cd70(&local_b0,local_80);
    if (0xf < local_58) {
      _Memory = local_70[0];
      if ((0xfff < local_58 + 1) &&
         (_Memory = *(void **)((longlong)local_70[0] + -8),
         0x1f < (ulonglong)((longlong)local_70[0] + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_a0 = &DAT_182673780;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  iVar6 = DAT_1826737bc;
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  while (0 < iVar6) {
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    iVar2 = DAT_1826737bc;
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    iVar6 = iVar6 + -1;
    if ((iVar2 <= iVar6) && (iVar6 = iVar2 + -1, iVar6 < 0)) break;
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    uVar4 = *(undefined8 *)(DAT_1826737b0 + (longlong)iVar6 * 8);
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    FUN_180492ef8(uVar4,&local_b0);
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  FUN_180489460(&local_b0,local_88,*local_b0,local_b0);
                    /* WARNING: Subroutine does not return */
  free(local_b0);
}



############ FUN_ 1811a3f70 size=196 ############

void FUN_1811a3f70(undefined8 param_1)

{
  undefined8 uVar1;
  int iVar2;
  int iVar3;
  
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  iVar3 = DAT_1826737bc;
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  while (0 < iVar3) {
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    iVar2 = DAT_1826737bc;
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    iVar3 = iVar3 + -1;
    if ((iVar2 <= iVar3) && (iVar3 = iVar2 + -1, iVar3 < 0)) break;
    EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    uVar1 = *(undefined8 *)(DAT_1826737b0 + (longlong)iVar3 * 8);
    LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
    FUN_180492ef8(uVar1,param_1);
  }
                    /* WARNING: Could not recover jumptable at 0x0001811a402d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673780);
  return;
}



############ FUN_ 18148ad10 size=120 ############

void FUN_18148ad10(longlong param_1)

{
  int iVar1;
  longlong local_res8;
  
  iVar1 = *(int *)(param_1 + 0x14);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x14) <= iVar1) && (iVar1 = *(int *)(param_1 + 0x14) + -1, iVar1 < 0))
    break;
    local_res8 = *(longlong *)(param_1 + -0xe0);
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 8),&local_res8,
                  param_1 + -0xe8);
  }
  return;
}



############ FUN_ 181513e30 size=79 ############

void FUN_181513e30(longlong param_1)

{
  int iVar1;
  
  *(undefined1 *)(param_1 + 0x89) = 0;
  iVar1 = *(int *)(param_1 + 0x5c);
  while( true ) {
    if (iVar1 < 1) {
      return;
    }
    iVar1 = iVar1 + -1;
    if ((*(int *)(param_1 + 0x5c) <= iVar1) && (iVar1 = *(int *)(param_1 + 0x5c) + -1, iVar1 < 0))
    break;
    FUN_180492ef8(*(undefined8 *)(*(longlong *)(param_1 + 0x50) + (longlong)iVar1 * 8),
                  param_1 + -0xe0);
  }
  return;
}



############ FUN_ 18156dec5 size=2479 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018156e913) */

void FUN_18156dec5(uint *param_1,longlong param_2,undefined8 param_3,longlong param_4,
                  undefined8 param_5,undefined8 param_6,uint param_7,int param_8,undefined8 param_9,
                  undefined8 param_10,undefined4 param_11,longlong param_12)

{
  longlong lVar1;
  undefined1 *puVar2;
  uint uVar3;
  longlong in_RAX;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  undefined8 *puVar11;
  uint uVar12;
  longlong lVar13;
  longlong unaff_RBX;
  undefined1 *puVar14;
  longlong unaff_RBP;
  longlong unaff_RSI;
  undefined8 unaff_RDI;
  int iVar15;
  uint uVar16;
  undefined8 unaff_R12;
  int *unaff_R15;
  undefined1 auStackX_8 [32];
  uint uStack000000000000003c;
  uint uStack000000000000005c;
  undefined8 in_stack_00000080;
  
  lVar13 = param_12;
  uVar4 = param_2 + in_RAX * 4;
  uVar4 = uVar4 ^ (uVar4 * 5 >> 10) - 0x4412bf96;
  uVar4 = (uVar4 << 0xf | uVar4 >> 0x31) * 0x10001 + 0x55e5a094;
  uVar5 = uVar4 >> 5 | uVar4 << 0x3b;
  uVar4 = uVar5 * 3;
  uVar5 = uVar5 ^ (uVar4 >> 5 | uVar4 << 0x3b) + 0x6f8f8ebf;
  uVar4 = uVar5 << 6 | uVar5 >> 0x3a;
  uVar4 = uVar4 ^ uVar4 * 0x2000 + 0x57b56f2c;
  *param_1 = (int)(uVar4 >> 0x10) + (int)((uVar4 >> 0x10) << 7) + -0x50d4f592 & 0xd49d8785;
  uVar7 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
  if ((int)uVar7 < 0) {
    uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
  }
  if (uVar7 != 0) {
    uVar6 = rdtsc();
    uStack000000000000005c = (uint)uVar6 ^ (uint)((ulonglong)uVar6 >> 0x20);
    lVar13 = (ulonglong)uStack000000000000005c * 0x10000 + 0x71178dc;
    FUN_18156dec5((longlong)&param_6 + 4,lVar13,param_3,(param_4 + param_2) - lVar13);
    return;
  }
  *(int *)(unaff_RBX + 8) = *(int *)(unaff_RBX + 8) + (param_6._4_4_ ^ 0x515231b8);
  *(int *)(unaff_RBX + 4) = *(int *)(unaff_RBX + 4) + (param_6._4_4_ ^ 0x96adc2a5);
  uVar4 = *(ulonglong *)(unaff_RBX + 4) >> 9 | *(ulonglong *)(unaff_RBX + 4) << 0x37;
  uVar7 = (uint)((uVar4 >> 0x1c ^ uVar4) >> 5) & 0x7ffffff;
  uVar4 = (uVar4 ^ ((ulonglong)uVar7 << 0x1c | (ulonglong)uVar7) << 5) + 0x2373cc3214b2b194;
  uVar5 = (uVar4 * 0x10000000 | uVar4 >> 0x24) + 0xdddb8dd5b610689d;
  uVar7 = ((uint)(uVar5 >> 0xd) ^ (uint)uVar5) & 0x1fff;
  uVar4 = ((ulonglong)uVar7 << 0xd | (ulonglong)uVar7) ^ uVar5;
  uVar4 = ((uVar4 << 2 | uVar5 >> 0x3e) & 0x6666666666666666 |
          (uVar4 >> 2 | uVar4 << 0x3e) & 0x9999999999999999) + 0x700c9184d566f20d;
  uVar7 = (uint)((uVar4 >> 0x12 ^ uVar4) >> 0x11) & 0x3ffff;
  uVar4 = ((ulonglong)uVar7 << 0x12 | (ulonglong)uVar7) << 0x11 ^ uVar4;
  *(ulonglong *)(unaff_RBX + 4) = uVar4;
  *(longlong *)(unaff_RSI + 4) =
       *(longlong *)(unaff_RSI + 4) + (ulonglong)((uint)(uVar4 >> 2) & 0x4024188);
  param_6._4_4_ = (uint)(*(ulonglong *)(unaff_RBX + 4) >> 7) & 0x7fffffff;
  uStack000000000000003c = (uint)(*(ulonglong *)(unaff_RBX + 4) >> 0x1c) ^ 0x25b4edeb;
  uVar4 = *(ulonglong *)(unaff_RBX + 4) ^ 0xb4b628e36e238810;
  do {
    param_11 = 0x332b785c;
    uVar7 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  *(undefined4 *)(unaff_RBP + -0x78) = 0x22b9f5ee;
  *(uint *)(unaff_RBP + -0x74) = uStack000000000000003c;
  *(int *)(unaff_RBP + -0x70) = (int)uVar4;
  uVar7 = *(uint *)(unaff_RBP + -0x74);
  uVar16 = *(uint *)(unaff_RBP + -0x70) ^ uVar7;
  uVar8 = uVar16 & 0x2bfd4af1 ^ uVar7;
  uVar7 = uVar16 & 0xd402b50e ^ uVar7 ^ uVar8;
  uVar12 = uVar7 & 0xf0f0f0f0 ^ uVar8;
  uVar8 = uVar7 & 0xf0f0f0f ^ uVar8;
  uVar5 = (ulonglong)uVar8;
  uVar7 = *(uint *)(unaff_RBP + -0x78);
  uVar16 = (uVar7 >> 0xf ^ uVar7) & 0x7fff;
  uVar7 = (uVar16 << 0xf | uVar16) ^ uVar7;
  uVar16 = (uVar12 >> 6 ^ uVar12) >> 2 & 3;
  uVar3 = (uVar8 >> 0x16 ^ uVar8) >> 5 & 3;
  uVar10 = (uint)(uVar4 >> 0x20);
  uVar9 = (uVar10 >> 0x14 ^ uVar10) >> 3 & 0x1ff;
  uVar12 = (uVar16 << 6 | uVar16) << 2 ^ uVar12 ^ uVar7;
  uVar16 = ~(uVar12 & 0x74575030 ^ uVar7);
  uVar12 = ~(uVar12 & 0x8ba8afcf ^ uVar7);
  uVar8 = ~((uVar3 << 0x16 | uVar3) << 5 ^ uVar8);
  uVar7 = ~((uVar9 << 0x14 | uVar9) << 3 ^ uVar10);
  uVar3 = (uVar16 << 2 | uVar16 >> 0x1e) & 0x99999999 | (uVar16 >> 2 | uVar16 << 0x1e) & 0x66666666;
  uVar7 = (uVar7 >> 2 | uVar7 << 0x1e) & 0x99999999 | (uVar7 << 2 | uVar7 >> 0x1e) & 0x66666666;
  uVar16 = uVar7 << 5 | uVar7 >> 0x1b;
  uVar7 = uVar16 ^ (uVar3 << 0x15 | uVar3 >> 0xb);
  uVar3 = (param_8 + 0xe04ed8a1U >> 0x15 | (param_8 + 0xe04ed8a1U) * 0x800) + 0x52af1f54;
  do {
    uVar6 = rdtsc();
    uStack000000000000005c = (int)uVar6 + (int)((ulonglong)uVar6 >> 0x20) * 8;
    uVar4 = (ulonglong)uStack000000000000005c * 0x200100;
    uVar4 = (uVar4 ^ uVar4 >> 0xd) << 0x10 | uVar4 >> 0x30;
    uVar4 = uVar4 + ((uVar4 >> 5) - 0x3cb2854f);
    uVar4 = (uVar4 >> 0x10 | uVar4 << 0x30) + uVar4 * 2;
    uVar4 = uVar4 >> 8 | uVar4 << 0x38;
    lVar1 = ((uVar4 >> 9) - 0x5a0c7eab) + uVar4 * 4;
    uVar9 = (uint)lVar1;
    uVar10 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  param_9._4_4_ =
       (uVar9 ^ (uVar9 * 0x20 | (uint)((ulonglong)lVar1 >> 0x3b))) & 0x7fffffff ^ param_6._4_4_;
  if (param_9._4_4_ < 0x11dd0) {
    do {
      uVar9 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    param_7 = 0x842258c9;
    *(uint *)(unaff_RBP + -0x38) = (uVar7 & 0x55555555 ^ uVar16) + 0x26edbe0b;
    *(uint *)(unaff_RBP + -0x34) =
         ((uVar12 >> 4 & 0xf0f0f0f0 | uVar12 << 0x1c | (uVar12 & 0xf0f0f0) << 4 | uVar12 >> 0x1c) >>
          2 | (uVar12 >> 0x1c) << 0x1e) + 0xd1b1c41;
    *(uint *)(unaff_RBP + -0x30) =
         (((uVar8 >> 8 | uVar8 << 0x18) & 0xdd22dd22 | (uVar8 << 8 | uVar8 >> 0x18) & 0x22dd22dd) <<
          2 | (uVar8 & 0xff) >> 6) + 0xd1de1f70;
    *(uint *)(unaff_RBP + -0x2c) = uVar7 & 0xaaaaaaaa ^ uVar16 ^ 0x724d0b9e;
    do {
      uVar5 = 0x18156e534;
      in_stack_00000080 = 0x18156e534;
      uVar7 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    param_10._0_4_ = 0xff6d948c;
    FUN_180c479c0(unaff_RBP + -0x38,unaff_RBP + -0x20);
    uVar7 = *(uint *)(unaff_RBP + -0x18);
    uVar16 = *(uint *)(unaff_RBP + -0x14);
    iVar15 = 7;
    do {
      uVar8 = (uVar16 ^ uVar7) & 0x4efd1df ^ uVar7;
      uVar7 = (uVar16 ^ uVar7) & 0xfb102e20 ^ uVar7 ^ uVar8;
      uVar9 = ~(uVar7 & 0x54d3484b ^ uVar8);
      uVar16 = uVar9 ^ ~(uVar7 & 0xab2cb7b4 ^ uVar8);
      uVar7 = uVar16 & 0x7b746601 ^ uVar9;
      uVar9 = uVar16 & 0x848b99fe ^ uVar9;
      uVar16 = ((uVar9 << 4 | uVar9 >> 0x1c) & 0xc3c3c3c3 |
               (uVar9 >> 4 | uVar9 << 0x1c) & 0x3c3c3c3c) + 0x36fae1ff;
      uVar8 = ((uVar7 << 0x10 | uVar7 >> 0x10) & 0x96b5694a |
              (uVar7 >> 0x10 | uVar7 << 0x10) & 0x694a96b5) + 0xf365dac8 ^ uVar16;
      uVar7 = uVar8 & 0xa7071cb4 ^ uVar16;
      uVar16 = uVar8 & 0x58f8e34b ^ uVar16;
      uVar7 = (uVar7 << 0x18 | uVar7 >> 8) + 0xc3118cdd;
      uVar16 = (uVar16 >> 6 | uVar16 << 0x1a) ^ 0x3825b93f;
      iVar15 = iVar15 + -1;
    } while (-1 < iVar15);
    uVar7 = (uVar7 >> 0x18 | uVar7 * 0x100) + 0x423781c0;
    uVar7 = (uVar7 >> 0x1e | uVar7 * 4) + 0x844c6dc5;
    if ((~(~(uVar7 >> 0xc | uVar7 * 0x100000) ^ 0xe6abe977) + 0xee970deb ^ param_7) + uVar16 !=
        uStack000000000000003c) {
      do {
        puVar11 = (undefined8 *)(unaff_RBP + -0x80);
        FUN_18156dec4();
        *puVar11 = FUN_180bc28c0;
        iVar15 = *(int *)(unaff_RBP + 0x38);
        uVar7 = (iVar15 + 1) * iVar15 & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
      (**(code **)(unaff_RBP + -0x80))();
      do {
        FUN_18156cbe0();
        iVar15 = *(int *)(unaff_RBP + 0x38);
        uVar7 = (iVar15 + 1) * iVar15 & 0x80000001;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar7 != 0);
    }
  }
  uVar7 = ~param_10._4_4_ & uVar3 | param_10._4_4_ & ~uVar3;
  if (uVar7 == uVar7 >> 4) {
    uVar6 = FUN_181583b60(lVar13,unaff_RBP + -0x58);
    FUN_180585710(lVar13 + 0xd0,FUN_180492ef8,uVar6);
    FUN_180474220(unaff_RBP + -0x58);
    iVar15 = (int)unaff_RDI;
    puVar2 = auStackX_8;
    do {
      puVar14 = puVar2;
      *(undefined8 *)(puVar14 + -8) = unaff_RDI;
      *(undefined8 *)(puVar14 + -0x10) = unaff_R12;
      *(ulonglong *)(puVar14 + -0x18) = uVar5;
      lVar13 = -(longlong)iVar15;
      uVar5 = *(ulonglong *)(puVar14 + lVar13 + 0xf28);
      unaff_R12 = *(undefined8 *)(puVar14 + lVar13 + 0xf30);
      unaff_RDI = *(undefined8 *)(puVar14 + lVar13 + 0xf38);
      uVar7 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      puVar2 = puVar14 + lVar13 + 0xf40;
    } while (uVar7 != 0);
    *(undefined **)(puVar14 + lVar13 + 0xf38) = &UNK_18156e992;
  }
  FUN_181583b60(lVar13,unaff_RBP + -0x48);
  FUN_180585710(lVar13 + 0xd0,FUN_180492ef8);
  FUN_180474220(unaff_RBP + -0x48);
  FUN_18156ca23();
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 180538590 size=52 ############

void * FUN_180538590(void *param_1,ulonglong param_2)

{
  FUN_1813affa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053c120 size=62 ############

undefined8 * FUN_18053c120(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::AiffAudioFormat::vftable;
  FUN_1813affa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053d620 size=62 ############

undefined8 * FUN_18053d620(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::FlacAudioFormat::vftable;
  FUN_1813affa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053ed50 size=62 ############

undefined8 * FUN_18053ed50(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::OggVorbisAudioFormat::vftable;
  FUN_1813affa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180545930 size=62 ############

undefined8 * FUN_180545930(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::WavAudioFormat::vftable;
  FUN_1813affa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18136f550 size=15 ############

void FUN_18136f550(undefined8 *param_1)

{
  *param_1 = juce::OggVorbisAudioFormat::vftable;
  FUN_1813affa0();
  return;
}



############ FUN_ 181249a30 size=29 ############

void FUN_181249a30(undefined8 *param_1)

{
  FUN_180488c50();
                    /* WARNING: Could not recover jumptable at 0x000181249a46. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1812474c0 size=32 ############

void FUN_1812474c0(longlong param_1)

{
  FUN_180488c50(param_1 + 0x10);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x10));
}



############ FUN_ 181248660 size=51 ############

void FUN_181248660(longlong param_1)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)(param_1 + 0x40);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_180488c50(param_1 + 0x28);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x28));
}



############ FUN_ 180484810 size=29 ############

void FUN_180484810(undefined8 *param_1)

{
  FUN_180488c50();
                    /* WARNING: Could not recover jumptable at 0x000180484826. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 180484660 size=42 ############

void FUN_180484660(undefined8 *param_1)

{
  *param_1 = Preset::vftable;
  FUN_180488c50(param_1 + 6);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[6]);
}



############ FUN_ 180485210 size=29 ############

void FUN_180485210(undefined8 *param_1)

{
  FUN_180488c50();
                    /* WARNING: Could not recover jumptable at 0x000180485226. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1812c25c0 size=159 ############

void FUN_1812c25c0(undefined8 *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::AudioProcessorParameterWithID::vftable;
  puVar2 = (uint *)(param_1[0xe] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0xd] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0xc] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  *param_1 = juce::AudioProcessorParameter::vftable;
  FUN_180488c50(param_1 + 10);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 181242dc0 size=197 ############

void FUN_181242dc0(undefined8 *param_1)

{
  uint uVar1;
  void *_Memory;
  uint *puVar2;
  
  puVar2 = (uint *)(param_1[8] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  _Memory = (void *)param_1[7];
  if (_Memory != (void *)0x0) {
    FUN_181242dc0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  puVar2 = (uint *)(param_1[4] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[3] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_18049afa0(param_1 + 2);
  FUN_180488c50(param_1);
                    /* WARNING: Could not recover jumptable at 0x000181242e7e. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 18123e900 size=29 ############

void FUN_18123e900(undefined8 *param_1)

{
  FUN_180488c50();
                    /* WARNING: Could not recover jumptable at 0x00018123e916. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 18050c3c0 size=70 ############

void FUN_18050c3c0(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[2] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_1);
                    /* WARNING: Could not recover jumptable at 0x00018050c3ff. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 18050c410 size=76 ############

void FUN_18050c410(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x38) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_1 + 0x28);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x28));
}



############ FUN_ 1813afb80 size=99 ############

void FUN_1813afb80(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = juce::AudioFormatReader::vftable;
  puVar2 = (undefined8 *)param_1[10];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(param_1[0xb] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_1 + 7);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[7]);
}



############ FUN_ 180566770 size=491 ############

void FUN_180566770(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  void *pvVar3;
  char cVar4;
  void *_Memory;
  uint *puVar5;
  undefined8 uVar6;
  undefined **local_30;
  undefined4 local_28;
  
  uVar6 = 0xfffffffffffffffe;
  *param_1 = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x22] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x23] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x24] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x25] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x28] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x2b] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  param_1[0x2c] = CloudyAudioProcessorEditor<Soothe2AudioProcessor,Soothe2VertexData>::vftable;
  cVar4 = FUN_180528b30(param_1 + 0xa8);
  if (cVar4 != '\0') {
    local_30 = &PTR_vftable_18262b570;
    local_28 = 1;
    (**(code **)(param_1[0xa8] + 0x18))(param_1 + 0xa8,&local_30);
  }
  lVar2 = param_1[0xa9];
  puVar5 = (uint *)(lVar2 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  FUN_1811f5f40(param_1[0x30],lVar2,param_1 + 0x2c,param_4,uVar6);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1814d56b0(param_1 + 0xb0);
  pvVar3 = (void *)param_1[0xad];
  if (pvVar3 == (void *)0x0) {
    if (param_1[0xac] != 0) {
      FUN_18056ae10();
    }
    if (param_1[0xab] != 0) {
      FUN_18056ae10();
    }
    puVar5 = (uint *)(param_1[0xa9] + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    param_1[0xa7] = ConfigOption::vftable;
    FUN_180488c50(param_1 + 0xa5);
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0xa5]);
  }
  _Memory = pvVar3;
  if ((0xfff < (param_1[0xaf] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18055e840 size=32 ############

void FUN_18055e840(longlong param_1)

{
  FUN_180488c50(param_1 + 8);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 1804dba80 size=71 ############

void FUN_1804dba80(undefined8 param_1,longlong *param_2)

{
  if (param_2 != (longlong *)0x0) {
    if (*(longlong **)(*param_2 + 0x58) != (longlong *)0x0) {
      (**(code **)(**(longlong **)(*param_2 + 0x58) + 0x10))();
    }
    FUN_180488c50(param_2 + 5);
                    /* WARNING: Subroutine does not return */
    free((void *)param_2[5]);
  }
  return;
}



############ FUN_ 181347640 size=244 ############

void FUN_181347640(undefined8 *param_1)

{
  int iVar1;
  bool bVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  *param_1 = juce::AlertWindow::vftable;
  plVar4 = (longlong *)param_1[0x2a];
  uVar5 = 0;
  uVar6 = (ulonglong)
          ((longlong)(plVar4 + *(int *)((longlong)param_1 + 0x15c)) + (7 - (longlong)plVar4)) >> 3;
  if (plVar4 + *(int *)((longlong)param_1 + 0x15c) < plVar4) {
    uVar6 = uVar5;
  }
  puVar3 = DAT_182673708;
  if (uVar6 != 0) {
    do {
      *(byte *)(*plVar4 + 0xa8) = *(byte *)(*plVar4 + 0xa8) & 0xdf;
      plVar4 = plVar4 + 1;
      uVar5 = uVar5 + 1;
      puVar3 = DAT_182673708;
    } while (uVar5 != uVar6);
  }
  do {
    if (puVar3 == param_1) {
      bVar2 = true;
LAB_1813476e7:
      if ((bVar2) && (DAT_182673708 != (undefined8 *)0x0)) {
        FUN_18133eae0(CONCAT71((int7)((ulonglong)DAT_182673708 >> 8),1));
      }
      iVar1 = *(int *)((longlong)param_1 + 0x4c);
      while (iVar1 != 0) {
        FUN_181343a90(param_1,iVar1 + -1,1,1,uVar7);
        iVar1 = *(int *)((longlong)param_1 + 0x4c);
      }
      FUN_180488c50(param_1 + 0x38);
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[0x38]);
    }
    if (puVar3 == (undefined8 *)0x0) {
      bVar2 = false;
      goto LAB_1813476e7;
    }
    puVar3 = (undefined8 *)puVar3[3];
  } while( true );
}



############ FUN_ 181345580 size=253 ############

void FUN_181345580(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::FileSearchPathListComponent::vftable;
  param_1[0x16] = juce::FileSearchPathListComponent::vftable;
  param_1[0x18] = juce::FileSearchPathListComponent::vftable;
  param_1[0x19] = juce::FileSearchPathListComponent::vftable;
  FUN_181335920(param_1 + 0x12d);
  FUN_181335920(param_1 + 0xe9);
  param_1[0xb0] = juce::TextButton::vftable;
  param_1[0xc6] = juce::TextButton::vftable;
  FUN_181337760();
  param_1[0x8d] = juce::TextButton::vftable;
  param_1[0x77] = juce::TextButton::vftable;
  FUN_181337760();
  param_1[0x54] = juce::TextButton::vftable;
  param_1[0x3e] = juce::TextButton::vftable;
  FUN_181337760();
  FUN_1812e8430(param_1 + 0x1d);
  _Memory = (uint *)(param_1[0x1c] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_1 + 0x1a);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1a]);
}



############ FUN_ 1812186b0 size=42 ############

void FUN_1812186b0(undefined8 *param_1)

{
  *param_1 = juce::WildcardFileFilter::vftable;
  FUN_180488c50(param_1 + 4);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[4]);
}



############ FUN_ 181242220 size=757 ############

longlong * FUN_181242220(longlong *param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  bool bVar3;
  int iVar4;
  undefined1 **ppuVar5;
  uint uVar6;
  uint uVar8;
  uint uVar9;
  undefined1 **ppuVar10;
  bool bVar11;
  void *local_50;
  undefined8 local_48;
  uint uVar7;
  
  iVar4 = FUN_181249270(param_2,&DAT_1821d9824);
  if (iVar4 < 0) {
    lVar2 = *param_2;
    *param_1 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    return param_1;
  }
  local_50 = (void *)0x0;
  local_48 = 0;
  FUN_18122d110(&local_50,*param_2,&DAT_1821db634,&DAT_1821da804);
  bVar3 = false;
  uVar6 = 1;
  if (1 < (int)local_48._4_4_) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    bVar11 = 1 < local_48._4_4_;
    uVar8 = local_48._4_4_;
    do {
      if (bVar11) {
        ppuVar10 = (undefined1 **)((longlong)local_50 + (longlong)(int)uVar6 * 8);
      }
      else {
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar10 = &DAT_18267af68;
      }
      iVar4 = FUN_18048cbc0(*ppuVar10,&DAT_1821d979c);
      if (iVar4 == 0) {
        uVar7 = uVar6 - 1;
        if (uVar7 < uVar8) {
          ppuVar5 = (undefined1 **)((longlong)local_50 + (longlong)(int)uVar7 * 8);
        }
        else {
          if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar5 = &DAT_18267af68;
        }
        iVar4 = FUN_18048cbc0(*ppuVar5,&DAT_1821d989c);
        if (iVar4 == 0) goto LAB_1812423de;
        bVar3 = true;
        uVar9 = uVar6 + 1;
        if ((int)uVar9 < 0) {
          uVar9 = 0;
        }
        else if ((int)uVar8 < (int)uVar9) {
          uVar9 = uVar8;
        }
        if ((int)uVar7 < 0) {
          uVar7 = 0;
        }
        else if ((int)uVar8 < (int)uVar7) {
          uVar7 = uVar8;
        }
        if (0 < (int)(uVar9 - uVar7)) {
          FUN_180489b40(&local_50,uVar7);
          iVar4 = 0;
          if (0 < (int)(local_48._4_4_ * 2)) {
            iVar4 = local_48._4_4_ * 2;
          }
          uVar8 = local_48._4_4_;
          if (iVar4 < (int)local_48) {
            uVar7 = local_48._4_4_;
            if ((int)local_48._4_4_ < 8) {
              uVar7 = 8;
            }
            if ((int)uVar7 < (int)local_48) {
              FUN_18048a300(&local_50);
              uVar8 = local_48._4_4_;
            }
          }
        }
        uVar7 = 0;
        if (0 < (int)(uVar6 - 2)) {
          uVar7 = uVar6 - 2;
        }
      }
      else {
LAB_1812423de:
        iVar4 = FUN_18048cbc0(*ppuVar10,&DAT_1821d984c);
        uVar7 = uVar6;
        if (iVar4 == 0) {
          bVar3 = true;
          FUN_180488fc0(&local_50,uVar6);
          uVar8 = local_48._4_4_;
          uVar7 = uVar6 - 1;
        }
      }
      uVar6 = uVar7 + 1;
      bVar11 = uVar6 < uVar8;
    } while ((int)uVar6 < (int)uVar8);
    if (bVar3) {
      FUN_18122d360(&local_50,param_1,&DAT_1821db634);
      FUN_180488c50(&local_50);
                    /* WARNING: Subroutine does not return */
      free(local_50);
    }
  }
  FUN_180488c50(&local_50);
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 180473f60 size=49 ############

void FUN_180473f60(undefined8 *param_1)

{
  *param_1 = juce::AudioProcessorParameter::vftable;
  FUN_180488c50(param_1 + 10);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 1804dfb90 size=167 ############

void FUN_1804dfb90(undefined8 param_1,undefined8 *param_2)

{
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98;
  undefined8 local_90;
  undefined4 local_88;
  undefined4 local_84;
  undefined8 local_80;
  undefined4 local_78;
  undefined4 local_74;
  undefined ***local_60;
  undefined8 local_58;
  undefined8 local_50;
  void *local_48;
  undefined8 local_40;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = *param_2;
  *param_2 = 0;
  local_88 = *(undefined4 *)(param_2 + 1);
  local_84 = *(undefined4 *)((longlong)param_2 + 0xc);
  param_2[1] = 0;
  local_80 = param_2[2];
  param_2[2] = 0;
  local_78 = *(undefined4 *)(param_2 + 3);
  local_74 = *(undefined4 *)((longlong)param_2 + 0x1c);
  param_2[3] = 0;
  local_98 = std::
             _Func_impl_no_alloc<<lambda_3831885315f984295ff79a0473a206ae>,bool,juce::String_const&___ptr64>
             ::vftable;
  local_58 = 0;
  local_50 = 0;
  local_48 = (void *)0x0;
  local_40 = 0;
  local_60 = &local_98;
  FUN_180488c50(&local_48);
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 180485230 size=45 ############

void FUN_180485230(longlong param_1)

{
  FUN_180488c50(param_1 + 0x2c8);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x2c8));
}



############ FUN_ 181221ef0 size=2461 ############

longlong * FUN_181221ef0(longlong param_1,longlong *param_2,longlong *param_3)

{
  int *piVar1;
  uint uVar2;
  byte bVar3;
  char *pcVar4;
  byte bVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  longlong lVar11;
  byte *pbVar12;
  undefined8 uVar13;
  undefined1 **ppuVar14;
  longlong *plVar15;
  undefined8 uVar16;
  byte bVar17;
  uint *puVar18;
  uint *_Memory;
  undefined1 **ppuVar19;
  uint uVar20;
  longlong lVar21;
  uint uVar22;
  longlong local_res20;
  undefined1 *local_128;
  void *local_120;
  undefined8 local_118;
  undefined8 local_110;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  byte *local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  byte *local_c0;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  longlong local_a0;
  undefined1 local_98 [8];
  undefined1 local_90 [8];
  longlong local_88;
  longlong local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  longlong local_50;
  
  local_78 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x38) == '\0') goto LAB_181222497;
  if (**(char **)(param_1 + 0x20) != '\0') {
    puVar9 = (undefined8 *)FUN_1812304e0(param_1 + 0x20,&local_e8,&DAT_1821db428);
    local_70 = *(undefined8 *)(param_1 + 0x20);
    *(undefined8 *)(param_1 + 0x20) = *puVar9;
    *puVar9 = local_70;
    puVar18 = (uint *)(local_e8 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    local_68 = *(undefined8 *)(param_1 + 0x20);
    plVar15 = (longlong *)(param_1 + 0x28);
    FUN_18122d110(plVar15,local_68,&DAT_1821dad44,&DAT_1821da834);
    puVar9 = (undefined8 *)FUN_181249970(plVar15,*(int *)(param_1 + 0x34) + -2);
    iVar6 = FUN_18049bb30(*puVar9,"system");
    if (iVar6 == 0) {
      puVar9 = (undefined8 *)FUN_181249970(plVar15,*(int *)(param_1 + 0x34) + -1);
      local_e0 = (byte *)*puVar9;
      while ((bVar3 = *local_e0, bVar3 == 0x20 || ((byte)(bVar3 - 9) < 5))) {
        local_e0 = local_e0 + 1;
        if ((char)bVar3 < '\0') {
          bVar17 = 0x40;
          bVar5 = bVar3 & 0x40;
          while ((bVar5 != 0 && (8 < bVar17))) {
            local_e0 = local_e0 + 1;
            bVar17 = bVar17 >> 1;
            bVar5 = bVar3 & bVar17;
          }
        }
      }
      iVar6 = FUN_180492f10(&local_e0);
      if ((iVar6 != 0x22) && (iVar6 != 0x27)) goto LAB_181222116;
      plVar10 = (longlong *)FUN_181249970(plVar15,*(int *)(param_1 + 0x34) + -1);
      local_d8 = *plVar10;
      puVar18 = (uint *)(local_d8 + -0x10);
      if ((*puVar18 & 0x30000000) == 0) {
        LOCK();
        *puVar18 = *puVar18 + 1;
        UNLOCK();
      }
      FUN_180488c50(plVar15);
      if (*(int *)(param_1 + 0x30) != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*plVar15);
      }
      *(undefined4 *)(param_1 + 0x30) = 0;
      puVar9 = (undefined8 *)FUN_181225b40(param_1,&local_d0,&local_d8);
      local_60 = *puVar9;
      FUN_18122d110(plVar15,local_60,&DAT_1821dad44,&DAT_1821da834);
      _Memory = (uint *)(local_d0 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar22 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if ((*puVar18 & 0x30000000) == 0) {
        LOCK();
        uVar22 = *puVar18;
        *puVar18 = *puVar18 - 1;
        UNLOCK();
        if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar18);
        }
      }
    }
    else {
LAB_181222116:
      FUN_180488c50(plVar15);
      if (*(int *)(param_1 + 0x30) != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*plVar15);
      }
      *(undefined4 *)(param_1 + 0x30) = 0;
      iVar6 = FUN_18049bc80(*(undefined8 *)(param_1 + 0x20),0x5b);
      if ((0 < iVar6) && (iVar7 = FUN_1812327b0(param_1 + 0x20,0x5d), iVar6 < iVar7)) {
        puVar9 = (undefined8 *)FUN_1812490c0(param_1 + 0x20,&local_c8,iVar6 + 1,iVar7);
        local_58 = *puVar9;
        FUN_18122d110(plVar15,local_58,&DAT_1821dad44,&DAT_1821da834);
        puVar18 = (uint *)(local_c8 + -0x10);
        if ((*puVar18 & 0x30000000) == 0) {
          LOCK();
          uVar22 = *puVar18;
          *puVar18 = *puVar18 - 1;
          UNLOCK();
          if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar18);
          }
        }
      }
    }
    iVar6 = 0;
    uVar22 = *(int *)(param_1 + 0x34) - 1;
    if (-1 < (int)uVar22) {
      plVar10 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
      lVar21 = (longlong)(int)uVar22 << 3;
      do {
        local_108 = lVar21;
        if (uVar22 < *(uint *)(param_1 + 0x34)) {
          ppuVar19 = (undefined1 **)(*plVar15 + lVar21);
        }
        else {
          if ((*(int *)(*plVar10 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar19 = &DAT_18267af68;
        }
        iVar7 = FUN_180492f10(ppuVar19);
        if (iVar7 == 0x25) {
          puVar9 = (undefined8 *)FUN_181249970(plVar15,uVar22);
          pcVar4 = (char *)*puVar9;
          lVar11 = -1;
          if (*pcVar4 != '\0') {
            do {
              lVar11 = lVar11 + 1;
            } while (pcVar4[lVar11] != '\0');
            local_c0 = (byte *)(pcVar4 + lVar11);
            iVar7 = iVar6;
            do {
              local_c0 = local_c0 + -1;
              if ((*local_c0 & 0xc0) != 0x80) break;
              iVar7 = iVar7 + 1;
            } while (iVar7 < 4);
            iVar7 = FUN_180492f10(&local_c0);
            if (iVar7 == 0x3b) {
              puVar9 = (undefined8 *)FUN_181249970(plVar15,uVar22);
              pbVar12 = (byte *)*puVar9;
              goto LAB_1812222a1;
            }
          }
        }
        lVar21 = lVar21 + -8;
        uVar22 = uVar22 - 1;
        local_108 = lVar21;
      } while (-1 < (int)uVar22);
    }
  }
  *(undefined1 *)(param_1 + 0x38) = 0;
LAB_181222497:
  iVar6 = 0;
  if (0 < *(int *)(param_1 + 0x34)) {
    do {
      plVar15 = (longlong *)FUN_181249970(param_1 + 0x28,iVar6);
      if (*plVar15 == *param_3) {
        iVar7 = 0;
      }
      else {
        iVar7 = FUN_18048cbc0(*plVar15,*param_3);
      }
      if (iVar7 == 0) {
        puVar9 = (undefined8 *)FUN_181249970(param_1 + 0x28,iVar6 + -1);
        iVar7 = FUN_18049bb30(*puVar9,"<!entity");
        if (iVar7 == 0) {
          iVar6 = iVar6 + 1;
          uVar13 = FUN_181249970(param_1 + 0x28,iVar6);
          uVar13 = FUN_1812304e0(uVar13,&local_a8,&DAT_1821db45c);
          uVar13 = FUN_181248e40(uVar13,&local_b0);
          FUN_181230ba0(uVar13,&local_res20);
          puVar18 = (uint *)(local_b0 + -0x10);
          if ((*puVar18 & 0x30000000) == 0) {
            LOCK();
            uVar22 = *puVar18;
            *puVar18 = *puVar18 - 1;
            UNLOCK();
            if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar18);
            }
          }
          puVar18 = (uint *)(local_a8 + -0x10);
          if ((*puVar18 & 0x30000000) == 0) {
            LOCK();
            uVar22 = *puVar18;
            *puVar18 = *puVar18 - 1;
            UNLOCK();
            if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar18);
            }
          }
          iVar7 = FUN_18049bc80(local_res20,0x26);
          goto joined_r0x00018122263d;
        }
      }
      iVar6 = iVar6 + 1;
    } while (iVar6 < *(int *)(param_1 + 0x34));
  }
  FUN_18049c4e0(&local_f0,"unknown entity");
  if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_f0 + -0x10) = *(int *)(local_f0 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar21 = *(longlong *)(param_1 + 0x18);
  *(longlong *)(param_1 + 0x18) = local_f0;
  UNLOCK();
  puVar18 = (uint *)(lVar21 + -0x10);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar22 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  *(undefined1 *)(param_1 + 0x11) = 0;
  if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_f0 + -0x10);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(local_f0 + -0x10));
    }
  }
  lVar21 = *param_3;
  *param_2 = lVar21;
  if ((*(uint *)(lVar21 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar21 + -0x10) = *(int *)(lVar21 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
LAB_1812222a1:
  bVar3 = *pbVar12;
  pbVar12 = pbVar12 + 1;
  if (-1 < (char)bVar3) {
    if (bVar3 == 0) {
      uVar13 = FUN_181249970(plVar15,uVar22);
      uVar13 = FUN_1812490c0(uVar13,&local_b8,1,iVar6 + -1);
      FUN_181221c40(param_1,&local_110,uVar13);
      puVar18 = (uint *)(local_b8 + -0x10);
      if ((*puVar18 & 0x30000000) == 0) {
        LOCK();
        uVar20 = *puVar18;
        *puVar18 = *puVar18 - 1;
        UNLOCK();
        if (uVar20 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar18);
        }
      }
      local_120 = (void *)0x0;
      local_118 = 0;
      FUN_18122d110(&local_120,local_110,&DAT_1821dad44,&DAT_1821da834);
      FUN_180488fc0(plVar15,uVar22);
      uVar20 = local_118._4_4_ - 1;
      if (-1 < (int)uVar20) {
        ppuVar19 = (undefined1 **)((longlong)local_120 + (longlong)(int)uVar20 * 8);
        while( true ) {
          ppuVar14 = ppuVar19;
          if (local_118._4_4_ <= uVar20) {
            if ((*(int *)(*plVar10 + 0xc) < DAT_18267af70) &&
               (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
              DAT_18267af68 = &DAT_1821dbf98;
              atexit(FUN_181a4a7b0);
              _Init_thread_footer(&DAT_18267af70);
            }
            ppuVar14 = &DAT_18267af68;
          }
          local_128 = *ppuVar14;
          if ((*(uint *)(local_128 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_128 + -0x10) = *(int *)(local_128 + -0x10) + 1;
            UNLOCK();
          }
          FUN_180489070(plVar15,uVar22,&local_128);
          puVar18 = (uint *)(local_128 + -0x10);
          if ((*puVar18 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar18;
            *puVar18 = *puVar18 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar18);
            }
          }
          ppuVar19 = ppuVar19 + -1;
          uVar20 = uVar20 - 1;
          if ((int)uVar20 < 0) break;
        }
      }
      FUN_180488c50(&local_120);
                    /* WARNING: Subroutine does not return */
      free(local_120);
    }
LAB_1812222d7:
    iVar6 = iVar6 + 1;
    goto LAB_1812222a1;
  }
  if ((*pbVar12 & 0xc0) != 0x80) goto LAB_1812222d7;
  do {
    pbVar12 = pbVar12 + 1;
  } while ((*pbVar12 & 0xc0) == 0x80);
  iVar6 = iVar6 + 1;
  goto LAB_1812222a1;
joined_r0x00018122263d:
  if (iVar7 < 0) {
LAB_18122280c:
    *param_2 = local_res20;
    if ((DAT_1821dbf88 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    UNLOCK();
    if (DAT_1821dbf88 != 0) {
      DAT_1821dbf88 = DAT_1821dbf88 - 1;
      return param_2;
    }
    DAT_1821dbf88 = DAT_1821dbf88 - 1;
                    /* WARNING: Subroutine does not return */
    free(&DAT_1821dbf88);
  }
  iVar8 = FUN_181232610(&local_res20,iVar6,&DAT_1821db434);
  if (iVar8 < 0) {
    FUN_18049c4e0(&local_f8,"entity without terminating semi-colon");
    if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar21 = *(longlong *)(param_1 + 0x18);
    *(longlong *)(param_1 + 0x18) = local_f8;
    UNLOCK();
    puVar18 = (uint *)(lVar21 + -0x10);
    if ((*puVar18 & 0x30000000) == 0) {
      LOCK();
      uVar22 = *puVar18;
      *puVar18 = *puVar18 - 1;
      UNLOCK();
      if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar18);
      }
    }
    *(undefined1 *)(param_1 + 0x11) = 1;
    if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(local_f8 + -0x10);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)(local_f8 + -0x10));
      }
    }
    goto LAB_18122280c;
  }
  uVar13 = FUN_1812490c0(&local_res20,&local_a0,iVar6,iVar8);
  FUN_1812228e0(param_1,&local_100,uVar13);
  puVar18 = (uint *)(local_a0 + -0x10);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar22 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  uVar13 = FUN_1812491d0(&local_res20,&local_80,iVar8 + 1);
  uVar16 = FUN_1812490c0(&local_res20,local_98,0,iVar7);
  uVar16 = FUN_181232aa0(local_90,uVar16,&local_100);
  plVar15 = (longlong *)FUN_181232aa0(&local_88,uVar16,uVar13);
  local_50 = local_res20;
  lVar21 = *plVar15;
  *plVar15 = local_res20;
  puVar18 = (uint *)(local_88 + -0x10);
  local_res20 = lVar21;
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar22 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  puVar18 = (uint *)(local_80 + -0x10);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar22 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  iVar7 = FUN_181232860(&local_res20,iVar8 + 1,0x26);
  puVar18 = (uint *)(local_100 + -0x10);
  if ((*puVar18 & 0x30000000) == 0) {
    LOCK();
    uVar22 = *puVar18;
    *puVar18 = *puVar18 - 1;
    UNLOCK();
    if (uVar22 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar18);
    }
  }
  goto joined_r0x00018122263d;
}



############ FUN_ 18048db70 size=40 ############

void FUN_18048db70(longlong param_1)

{
  FUN_180488c50(param_1 + 8);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 18048e1e0 size=268 ############

void FUN_18048e1e0(longlong param_1,longlong *param_2)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  void *local_48;
  undefined8 local_40;
  
  lVar2 = *param_2;
  _Memory = (uint *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_48 = (void *)0x0;
  local_40 = 0;
  FUN_18048c4c0(&local_48,*(undefined8 *)(param_1 + 8),*(undefined4 *)(param_1 + 0x14));
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  lVar4 = (longlong)local_40._4_4_;
  if (0 < local_40._4_4_) {
    lVar5 = 0;
    do {
      iVar3 = FUN_18048cbc0(lVar2);
      if (iVar3 == 0) break;
      lVar5 = lVar5 + 1;
    } while (lVar5 < lVar4);
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(&local_48);
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 1804938a0 size=65 ############

void FUN_1804938a0(undefined8 *param_1)

{
  *param_1 = juce::PropertySet::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 7));
  FUN_180488c50(param_1 + 3);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 18049b2e0 size=170 ############

void FUN_18049b2e0(longlong param_1)

{
  void *_Dst;
  longlong lVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  iVar2 = *(int *)(param_1 + 0x3c) + -1;
  if (-1 < iVar2) {
    lVar3 = (longlong)iVar2 * 8;
    lVar4 = lVar3;
    do {
      lVar1 = *(longlong *)(lVar3 + *(longlong *)(param_1 + 0x30));
      _Dst = (void *)(lVar4 + *(longlong *)(param_1 + 0x30));
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)(param_1 + 0x3c) - iVar2) + -1) << 3);
      *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + -1;
      if (lVar1 != 0) {
        FUN_180488c50(lVar1 + 0x18);
                    /* WARNING: Subroutine does not return */
        free(*(void **)(lVar1 + 0x18));
      }
      lVar4 = lVar4 + -8;
      lVar3 = lVar3 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 18049a6e0 size=171 ############

undefined8 * FUN_18049a6e0(undefined8 *param_1,ulonglong param_2)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar1 = param_1[1];
  *param_1 = juce::WebInputStream::vftable;
  if (lVar1 != 0) {
    lVar2 = *(longlong *)(lVar1 + 0x60);
    *(undefined8 *)(lVar1 + 0x60) = 0;
    if (lVar2 != 0) {
      InternetCloseHandle();
    }
    if (*(longlong *)(lVar1 + 0x58) != 0) {
      InternetCloseHandle();
      *(undefined8 *)(lVar1 + 0x58) = 0;
    }
    DeleteCriticalSection((LPCRITICAL_SECTION)(lVar1 + 200));
    FUN_180488c50(lVar1 + 0xb0);
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar1 + 0xb0));
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18049b930 size=56 ############

void FUN_18049b930(undefined8 param_1,longlong param_2)

{
  if (param_2 != 0) {
    FUN_18049b290(param_2 + 0x40);
    FUN_180488c50(param_2 + 0x28);
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_2 + 0x28));
  }
  return;
}



############ FUN_ 1804d73c0 size=49 ############

void FUN_1804d73c0(undefined8 *param_1)

{
  *param_1 = juce::AudioPluginInstance::Parameter::vftable;
  FUN_180488c50(param_1 + 0xe);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0xe]);
}



############ FUN_ 1804d7740 size=91 ############

void FUN_1804d7740(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  *param_1 = juce::KnownPluginList::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0x8c));
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xc));
  puVar1 = (undefined8 *)param_1[0xb];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_180488c50(param_1 + 9);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 1804d81b0 size=1509 ############

/* WARNING: Type propagation algorithm not settling */

void FUN_1804d81b0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
                  longlong param_5,undefined1 param_6,undefined4 param_7,undefined8 param_8,
                  undefined8 param_9)

{
  int *piVar1;
  undefined8 *puVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  undefined8 uVar6;
  longlong *plVar7;
  longlong *plVar8;
  uint uVar9;
  uint *puVar10;
  bool bVar11;
  longlong local_res10;
  undefined8 *local_res18;
  undefined8 *local_res20;
  undefined4 uVar12;
  undefined8 local_148;
  undefined4 local_140;
  undefined8 local_13c;
  undefined4 local_134;
  void *local_130;
  int local_124;
  longlong local_120;
  longlong local_118;
  longlong local_110;
  longlong local_108 [2];
  undefined4 local_f8;
  undefined8 local_f4;
  undefined4 local_ec;
  undefined1 *local_e8;
  longlong local_e0;
  longlong local_d8 [2];
  void *local_c8 [2];
  undefined8 local_b8;
  uint *local_b0;
  undefined **local_a8;
  undefined1 *local_a0;
  undefined8 *local_98;
  undefined8 *local_90;
  undefined ***local_70;
  
  local_b8 = 0xfffffffffffffffe;
  param_1[1] = 0xffffffffffffffff;
  iVar5 = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  *param_1 = juce::PluginListComponent::Scanner::vftable;
  param_1[3] = param_2;
  param_1[4] = param_3;
  param_1[5] = 0;
  param_1[6] = 0;
  FUN_18048c4c0(param_1 + 5,*param_4,*(undefined4 *)((longlong)param_4 + 0xc));
  param_1[7] = param_5;
  param_1[8] = 0;
  local_e8 = &DAT_1821dbf98;
  FUN_18049c4e0(&param_5,"Select folders to scan...");
  lVar3 = DAT_1826739f8;
  local_b0 = &DAT_182673984;
  do {
    LOCK();
    uVar9 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar9 != 0);
  if (DAT_1826739f8 == 0) {
    local_res10 = param_5;
    uVar9 = *(uint *)(param_5 + -0x10);
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) != 0) &&
       (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,param_5,*(undefined1 *)(DAT_1826739f8 + 0x38),0),
       iVar4 < 0)) {
      FUN_181234570(*(undefined8 *)(lVar3 + 0x40),&local_res10,&param_5,&param_5);
      goto LAB_1804d8316;
    }
    iVar4 = FUN_1812498b0(lVar3 + 0x18,param_5,*(undefined1 *)(lVar3 + 0x38),0);
    if (iVar4 < 0) {
      local_res10 = param_5;
      uVar9 = *(uint *)(param_5 + -0x10);
    }
    else {
      plVar7 = (longlong *)FUN_181249970(lVar3 + 0x28,iVar4);
      local_res10 = *plVar7;
      uVar9 = *(uint *)(local_res10 + -0x10);
    }
  }
  if ((uVar9 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
    UNLOCK();
  }
LAB_1804d8316:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar10 = (uint *)(param_5 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_181347860(param_1 + 9,&local_res10,&local_e8,0,0);
  puVar10 = (uint *)(local_res10 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar9 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar11 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar9;
    if (bVar11) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  uVar12 = 0;
  FUN_181347860(param_1 + 0x45,param_8,param_9,0,0);
  puVar2 = param_1 + 0x81;
  FUN_1813456c0(puVar2);
  param_1[0x1f2] = &DAT_1821dbf98;
  param_1[499] = 0;
  *(undefined4 *)(param_1 + 500) = param_7;
  *(undefined1 *)((longlong)param_1 + 0xfa4) = param_6;
  *(undefined2 *)((longlong)param_1 + 0xfa5) = 0;
  param_1[0x1f5] = 0;
  (**(code **)(*(longlong *)param_1[4] + 0x58))((longlong *)param_1[4],&local_130);
  if ((*(int *)((longlong)param_1 + 0x34) == 0) && (0 < local_124)) {
    if (param_1[7] != 0) {
      uVar6 = FUN_1812b77a0(local_c8,param_1[7],param_1[4]);
      FUN_18122ddb0(&local_130,uVar6);
      FUN_180488c50(local_c8);
                    /* WARNING: Subroutine does not return */
      free(local_c8[0]);
    }
    FUN_18134bfe0(puVar2,*(undefined4 *)(param_1 + 0x85),*(undefined4 *)((longlong)param_1 + 0x42c),
                  500,CONCAT44(uVar12,300));
    plVar7 = (longlong *)FUN_18123e660(param_1 + 0x9b,local_d8);
    plVar8 = (longlong *)FUN_18123e660(&local_130,&local_e0);
    if (*plVar8 != *plVar7) {
      iVar5 = FUN_18048cbc0(*plVar8,*plVar7);
    }
    puVar10 = (uint *)(local_e0 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    puVar10 = (uint *)(local_d8[0] + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    if (iVar5 != 0) {
      FUN_18122ddb0(param_1 + 0x9b,&local_130);
      FUN_181325e40(puVar2);
    }
    local_res18 = puVar2;
    FUN_180485df0(param_1 + 0x39,&local_res18);
    FUN_180485df0(param_1 + 0x3d,&local_res18);
    FUN_18134bf20(param_1 + 9,local_res18,0xffffffff);
    FUN_1812d3dc0(param_1 + 9,0);
    local_148 = 0;
    local_140 = 0;
    FUN_18049c4e0(&local_120,&DAT_18249b8ac);
    FUN_1812344e0(&local_118,&local_120);
    puVar10 = (uint *)(local_120 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_148 = 0;
    local_140 = 0;
    local_108[1] = 0xd;
    local_f8 = 0;
    FUN_181347060(param_1 + 9,&local_118,1,local_108 + 1,&local_148);
    puVar10 = (uint *)(local_118 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_13c = 0;
    local_134 = 0;
    FUN_18049c4e0(&local_110,"Cancel");
    FUN_1812344e0(local_108,&local_110);
    puVar10 = (uint *)(local_110 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_13c = 0;
    local_134 = 0;
    local_f4 = 0x1b;
    local_ec = 0;
    FUN_181347060(param_1 + 9,local_108,0,&local_f4,&local_13c);
    puVar10 = (uint *)(local_108[0] + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    FUN_1804de690(&local_res20,param_1 + 9);
    puVar2 = local_res20;
    if (local_res20 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_res20 + 1) = *(int *)(local_res20 + 1) + 1;
      UNLOCK();
    }
    local_a8 = std::_Func_impl_no_alloc<<lambda_cc3280927b7eea58522bd0a0e320b1e1>,void,int>::vftable
    ;
    local_a0 = &LAB_1804d87c0;
    local_98 = local_res20;
    local_70 = &local_a8;
    local_90 = param_1;
    uVar6 = FUN_181347bc0(&local_a8);
    if (puVar2 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar2 + 1);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)*local_res20)(local_res20,1);
      }
    }
    FUN_18134ab30(param_1 + 9,1,uVar6,0);
  }
  else {
    FUN_1804d8e40(param_1);
  }
  FUN_180488c50(&local_130);
                    /* WARNING: Subroutine does not return */
  free(local_130);
}



############ FUN_ 18122ddb0 size=117 ############

undefined8 * FUN_18122ddb0(undefined8 *param_1,undefined8 *param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_18;
  undefined8 local_10;
  
  if (param_1 != param_2) {
    local_18 = (void *)0x0;
    local_10 = 0;
    FUN_18048c4c0(&local_18,*param_2,*(undefined4 *)((longlong)param_2 + 0xc));
    pvVar2 = (void *)*param_1;
    *param_1 = local_18;
    uVar1 = *(undefined4 *)(param_1 + 1);
    *(undefined4 *)(param_1 + 1) = (undefined4)local_10;
    uVar3 = local_10._4_4_;
    local_10 = CONCAT44(*(undefined4 *)((longlong)param_1 + 0xc),uVar1);
    *(undefined4 *)((longlong)param_1 + 0xc) = uVar3;
    local_18 = pvVar2;
    FUN_180488c50(&local_18);
                    /* WARNING: Subroutine does not return */
    free(local_18);
  }
  return param_1;
}



############ FUN_ 18123e660 size=217 ############

void FUN_18123e660(undefined8 *param_1,longlong param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined8 uVar3;
  int iVar4;
  undefined8 *puVar5;
  uint *_Memory;
  undefined8 *puVar6;
  longlong local_res10;
  undefined8 *local_20;
  undefined8 local_18;
  
  local_20 = (undefined8 *)0x0;
  local_18 = 0;
  local_res10 = param_2;
  FUN_18048c4c0(&local_20,*param_1,*(undefined4 *)((longlong)param_1 + 0xc));
  puVar1 = local_20 + local_18._4_4_;
  puVar6 = local_20;
  do {
    if (puVar6 == puVar1) {
      FUN_18122d360(&local_20,param_2,&DAT_1821d9bc4);
      FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
      free(local_20);
    }
    iVar4 = FUN_18049bc80(*puVar6,0x3b);
    if (-1 < iVar4) {
      puVar5 = (undefined8 *)FUN_1812309c0(puVar6,&local_res10);
      uVar3 = *puVar6;
      *puVar6 = *puVar5;
      *puVar5 = uVar3;
      _Memory = (uint *)(local_res10 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
    puVar6 = puVar6 + 1;
  } while( true );
}



############ FUN_ 1812b77a0 size=665 ############

void FUN_1812b77a0(undefined8 *param_1,longlong param_2,longlong *param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  bool bVar3;
  int iVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  uint uVar8;
  uint *puVar9;
  longlong local_res20;
  undefined1 *local_90;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  void *local_60 [2];
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  uVar5 = (**(code **)(*param_3 + 0x10))(param_3,&local_88,param_3,param_4,0);
  FUN_18049c4e0(&local_res20,"lastPluginScanPath_");
  plVar6 = (longlong *)FUN_181232d30(&local_res20,uVar5);
  lVar2 = *plVar6;
  puVar9 = (uint *)(lVar2 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    *puVar9 = *puVar9 + 1;
    UNLOCK();
  }
  uVar8 = 0;
  puVar9 = (uint *)(local_res20 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_88 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(param_2 + 0x38));
  iVar4 = FUN_1812498b0(param_2 + 8,lVar2,*(undefined1 *)(param_2 + 100),0);
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_2 + 0x38));
  if (-1 < iVar4) {
    local_90 = &DAT_1821dbf98;
    uVar5 = FUN_181243270(param_2,&local_78,lVar2,&local_90);
    puVar7 = (undefined8 *)FUN_181248e40(uVar5,&local_80);
    uVar8 = 0x17;
    if (*(char *)*puVar7 == '\0') {
      bVar3 = true;
      goto LAB_1812b78fb;
    }
  }
  bVar3 = false;
LAB_1812b78fb:
  if ((uVar8 & 4) != 0) {
    uVar8 = uVar8 & 0xfffffffb;
    puVar9 = (uint *)(local_80 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  if ((uVar8 & 2) != 0) {
    uVar8 = uVar8 & 0xfffffffd;
    puVar9 = (uint *)(local_78 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  if (((uVar8 & 1) != 0) && (puVar9 = (uint *)(local_90 + -0x10), (*puVar9 & 0x30000000) == 0)) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (bVar3) {
    FUN_1812430b0(param_2,lVar2);
  }
  uVar5 = (**(code **)(*param_3 + 0x58))(param_3,local_60);
  uVar5 = FUN_18123e660(uVar5,&local_68);
  uVar5 = FUN_181243270(param_2,&local_70,lVar2,uVar5);
  *param_1 = 0;
  param_1[1] = 0;
  FUN_18123e7a0(param_1,uVar5);
  puVar9 = (uint *)(local_70 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_68 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_180488c50(local_60);
                    /* WARNING: Subroutine does not return */
  free(local_60[0]);
}



############ FUN_ 18123e7a0 size=194 ############

void FUN_18123e7a0(longlong *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined8 *puVar3;
  uint *_Memory;
  undefined8 *puVar4;
  longlong local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  
  FUN_180488c50();
  if ((int)param_1[1] != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  *(undefined4 *)(param_1 + 1) = 0;
  local_res10 = *param_2;
  FUN_18122d110(param_1,local_res10,&DAT_1821d9b8c,&DAT_1821d9ba4);
  FUN_18122d550(param_1);
  FUN_18122d5d0(param_1);
  puVar4 = (undefined8 *)*param_1;
  puVar1 = puVar4 + *(int *)((longlong)param_1 + 0xc);
  do {
    if (puVar4 == puVar1) {
      return;
    }
    puVar3 = (undefined8 *)FUN_181230ba0(puVar4,&local_res8);
    local_res18 = *puVar4;
    *puVar4 = *puVar3;
    *puVar3 = local_res18;
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar4 = puVar4 + 1;
  } while( true );
}



############ FUN_ 1812b9c40 size=663 ############

void FUN_1812b9c40(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  uint *puVar7;
  undefined1 **ppuVar8;
  longlong *plVar9;
  uint uVar10;
  longlong lVar11;
  uint uVar12;
  ulonglong uVar13;
  longlong lVar14;
  longlong *plVar15;
  longlong local_res20;
  longlong *local_50;
  undefined8 local_48;
  
  plVar1 = (longlong *)(param_1 + 0x10);
  FUN_18122ddb0(plVar1);
  local_50 = (longlong *)0x0;
  local_48 = 0;
  FUN_181244920(param_1 + 0x20,&local_res20);
  FUN_18122cec0(&local_50);
  puVar7 = (uint *)(local_res20 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_18122d5d0(&local_50);
  plVar2 = local_50 + local_48._4_4_;
  if (local_50 != plVar2) {
    plVar3 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    plVar15 = local_50;
    do {
      uVar10 = *(int *)(param_1 + 0x1c) - 1;
      if (-1 < (int)uVar10) {
        lVar11 = (longlong)(int)uVar10 * 8;
        lVar14 = lVar11;
        do {
          if (uVar10 < *(uint *)(param_1 + 0x1c)) {
            ppuVar8 = (undefined1 **)(*plVar1 + lVar11);
          }
          else {
            if ((*(int *)(*plVar3 + 0xc) < DAT_18267af70) &&
               (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
              DAT_18267af68 = &DAT_1821dbf98;
              atexit(FUN_181a4a7b0);
              _Init_thread_footer(&DAT_18267af70);
            }
            ppuVar8 = &DAT_18267af68;
          }
          if ((undefined1 *)*plVar15 == *ppuVar8) {
            iVar6 = 0;
          }
          else {
            iVar6 = FUN_18048cbc0(*plVar15,*ppuVar8);
          }
          if (((iVar6 == 0) && (uVar10 != 0xffffffff)) &&
             (uVar12 = *(uint *)(param_1 + 0x1c), uVar10 < uVar12)) {
            plVar9 = (longlong *)(*plVar1 + lVar14);
            lVar4 = *plVar9;
            *plVar9 = (longlong)&DAT_1821dbf98;
            uVar12 = (uVar12 - 1) - uVar10;
            if ((int)uVar12 < 1) {
              if (0 < (int)-uVar12) {
                uVar13 = (ulonglong)-uVar12;
                do {
                  lVar5 = *plVar9;
                  *plVar9 = plVar9[-1];
                  plVar9[-1] = lVar5;
                  plVar9 = plVar9 + -1;
                  uVar13 = uVar13 - 1;
                } while (uVar13 != 0);
              }
            }
            else {
              uVar13 = (ulonglong)uVar12;
              do {
                lVar5 = *plVar9;
                *plVar9 = plVar9[1];
                plVar9[1] = lVar5;
                plVar9 = plVar9 + 1;
                uVar13 = uVar13 - 1;
              } while (uVar13 != 0);
            }
            lVar5 = *plVar9;
            *plVar9 = lVar4;
            puVar7 = (uint *)(lVar5 + -0x10);
            if ((*puVar7 & 0x30000000) == 0) {
              LOCK();
              uVar12 = *puVar7;
              *puVar7 = *puVar7 - 1;
              UNLOCK();
              if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar7);
              }
            }
          }
          lVar11 = lVar11 + -8;
          lVar14 = lVar14 + -8;
          uVar10 = uVar10 - 1;
        } while (-1 < (int)uVar10);
      }
      plVar15 = plVar15 + 1;
    } while (plVar15 != plVar2);
  }
  FUN_180488c50(&local_50);
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1812b9610 size=217 ############

void FUN_1812b9610(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  uint uVar2;
  uint *_Memory;
  void *pvVar3;
  longlong local_res20;
  void *local_18;
  undefined8 local_10;
  
  local_18 = (void *)0x0;
  local_10 = 0;
  FUN_181244920(param_2,&local_res20,param_3,param_4,0xfffffffffffffffe);
  FUN_18122cec0(&local_18);
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18122d5d0(&local_18);
  pvVar1 = (void *)((longlong)local_18 + (longlong)local_10._4_4_ * 8);
  for (pvVar3 = local_18; pvVar3 != pvVar1; pvVar3 = (void *)((longlong)pvVar3 + 8)) {
    FUN_1812ba430(param_1,pvVar3);
  }
  FUN_180488c50(&local_18);
                    /* WARNING: Could not recover jumptable at 0x0001812b96e2. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_18);
  return;
}



############ FUN_ 1804d87e0 size=466 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804d87e0(longlong param_1)

{
  uint *puVar1;
  longlong *plVar2;
  uint uVar3;
  longlong lVar4;
  char cVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  ulonglong *puVar9;
  undefined1 auStack_178 [80];
  longlong local_128 [2];
  longlong *local_118;
  undefined8 local_110;
  longlong local_f8 [9];
  undefined8 local_b0;
  ulonglong local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  ulonglong local_38 [2];
  
  local_b0 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_178;
  if (*(int *)(param_1 + 0x4e4) < 1) {
    FUN_1804d8e40(param_1);
  }
  uVar7 = FUN_181249970(param_1 + 0x4d8,0);
  FUN_181241890(local_128,uVar7);
  local_118 = (longlong *)0x0;
  local_110 = 0;
  FUN_181217680(&local_118);
  plVar2 = local_118 + local_110._4_4_;
  for (plVar8 = local_118; plVar8 != plVar2; plVar8 = plVar8 + 1) {
    if ((local_128[0] == *plVar8) || (iVar6 = FUN_18049bb30(), iVar6 == 0)) goto LAB_1804d89f4;
  }
  local_58 = _DAT_1824c4860;
  uStack_50 = _UNK_1824c4868;
  local_48 = _DAT_1824c48a0;
  uStack_40 = _UNK_1824c48a8;
  puVar9 = &local_58;
  while (((FUN_181249b30(local_f8,(int)*puVar9), lVar4 = local_f8[0], local_128[0] != local_f8[0] &&
          (iVar6 = FUN_18049bb30(local_128[0],local_f8[0]), iVar6 != 0)) &&
         (cVar5 = FUN_181240ff0(local_f8,local_128), cVar5 == '\0'))) {
    puVar1 = (uint *)(lVar4 + -0x10);
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    puVar9 = (ulonglong *)((longlong)puVar9 + 4);
    if (puVar9 == local_38) {
      FUN_180488c50(&local_118);
                    /* WARNING: Subroutine does not return */
      free(local_118);
    }
  }
  puVar1 = (uint *)(lVar4 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
LAB_1804d89f4:
  FUN_180488c50(&local_118);
                    /* WARNING: Subroutine does not return */
  free(local_118);
}



############ FUN_ 181217680 size=685 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */

void FUN_181217680(longlong *param_1)

{
  longlong *plVar1;
  WCHAR WVar2;
  int iVar3;
  int iVar4;
  undefined1 **ppuVar5;
  WCHAR *pWVar6;
  undefined1 **ppuVar7;
  uint uVar8;
  uint uVar9;
  bool bVar10;
  undefined1 auStack_1098 [32];
  undefined1 local_1078;
  undefined1 **local_1070;
  int local_1068;
  uint uStack_1064;
  undefined1 *local_1060;
  undefined1 *local_1058;
  undefined8 local_1050;
  WCHAR local_1038 [2048];
  ulonglong local_38;
  undefined8 uStack_30;
  
  uStack_30 = 0x18121769c;
  local_1050 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1098;
  memset(local_1038,0,0x1000);
  GetLogicalDriveStringsW(0x800,local_1038);
  pWVar6 = local_1038;
  uVar9 = 0;
  local_1070 = (undefined1 **)0x0;
  local_1068 = 0;
  uStack_1064 = 0;
  ppuVar7 = local_1070;
  iVar3 = local_1068;
  uVar8 = uStack_1064;
  while (local_1070 = ppuVar7, local_1068 = iVar3, uStack_1064 = uVar8, local_1038[0] != L'\0') {
    FUN_18049c800(&local_1060,pWVar6);
    iVar4 = uVar8 + 1;
    if (iVar3 < iVar4) {
      if (iVar4 < 0) {
        iVar4 = uVar8 + 2;
      }
      FUN_18048a300(&local_1070,uVar8 + 9 + (iVar4 >> 1) & 0xfffffff8);
      ppuVar7 = local_1070;
      uVar8 = uStack_1064;
    }
    uStack_1064 = uVar8 + 1;
    ppuVar7[(int)uVar8] = local_1060;
    local_1060 = &DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar8 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar8;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    do {
      WVar2 = *pWVar6;
      pWVar6 = pWVar6 + 1;
    } while (WVar2 != L'\0');
    ppuVar7 = local_1070;
    iVar3 = local_1068;
    uVar8 = uStack_1064;
    local_1038[0] = *pWVar6;
  }
  FUN_18049dcb0(ppuVar7,ppuVar7 + (int)uVar8,
                (longlong)(ppuVar7 + (int)uVar8) - (longlong)ppuVar7 >> 3,local_1078);
  if (0 < (int)uVar8) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    bVar10 = uVar8 != 0;
    do {
      ppuVar5 = ppuVar7;
      if (!bVar10) {
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar5 = &DAT_18267af68;
      }
      FUN_181241890(&local_1058,ppuVar5);
      iVar4 = *(int *)((longlong)param_1 + 0xc);
      iVar3 = iVar4 + 1;
      if ((int)param_1[1] < iVar3) {
        if (iVar3 < 0) {
          iVar3 = iVar4 + 2;
        }
        FUN_18048a300(param_1,iVar4 + 9 + (iVar3 >> 1) & 0xfffffff8);
      }
      iVar3 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar3 + 1;
      *(undefined1 **)(*param_1 + (longlong)iVar3 * 8) = local_1058;
      local_1058 = &DAT_1821dbf98;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar8 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar10 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar8;
        if (bVar10) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      uVar9 = uVar9 + 1;
      ppuVar7 = ppuVar7 + 1;
      bVar10 = uVar9 < uStack_1064;
    } while ((int)uVar9 < (int)uStack_1064);
  }
  FUN_180488c50(&local_1070);
                    /* WARNING: Subroutine does not return */
  free(local_1070);
}



############ FUN_ 1804d9270 size=178 ############

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

void FUN_1804d9270(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void **ppvVar2;
  void *local_30;
  undefined8 local_28;
  void *local_20;
  undefined8 local_18;
  
  lVar1 = *(longlong *)(param_1 + 0x40);
  if (lVar1 == 0) {
    local_20 = (void *)0x0;
    local_18 = 0;
    ppvVar2 = &local_20;
  }
  else {
    local_30 = (void *)0x0;
    local_28 = 0;
    FUN_18048c4c0(&local_30,*(undefined8 *)(lVar1 + 0x28),*(undefined4 *)(lVar1 + 0x34),param_4,
                  0xfffffffffffffffe);
    ppvVar2 = &local_30;
  }
  FUN_1812b6d00(*(undefined8 *)(param_1 + 0x18),ppvVar2);
  if (lVar1 != 0) {
    FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
    free(local_30);
  }
  FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
  free(local_20);
}



############ FUN_ 1812b6d00 size=1075 ############

/* WARNING: Restarted to delay deadcode elimination for space: ram */

void FUN_1812b6d00(longlong param_1,longlong *param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  uint uVar3;
  int iVar4;
  undefined8 uVar5;
  longlong *plVar6;
  uint *puVar7;
  uint *puVar8;
  longlong *plVar9;
  longlong lVar10;
  void *_Dst;
  bool bVar12;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  undefined8 *local_a8;
  int local_a0;
  int iStack_9c;
  longlong local_98;
  undefined1 *local_90;
  longlong local_88;
  longlong local_80;
  undefined1 *local_78;
  longlong local_70;
  longlong local_68;
  undefined8 local_60;
  uint *local_58;
  longlong lVar11;
  
  local_60 = 0xfffffffffffffffe;
  local_a8 = (undefined8 *)0x0;
  local_a0 = 0;
  iStack_9c = 0;
  plVar9 = (longlong *)*param_2;
  plVar6 = plVar9 + *(int *)((longlong)param_2 + 0xc);
  iVar4 = iStack_9c;
  for (; iStack_9c = iVar4, plVar9 != plVar6; plVar9 = plVar9 + 1) {
    if ((*(uint *)(*plVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar9 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    local_res18 = *plVar9;
    LOCK();
    UNLOCK();
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar3 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar3;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    iVar4 = FUN_1812327b0(&local_res18,0x5c);
    FUN_1812491d0(&local_res18,&local_90,iVar4 + 1);
    iVar4 = iStack_9c + 1;
    if (local_a0 < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iStack_9c + 2;
      }
      FUN_18048a300(&local_a8,iStack_9c + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iStack_9c = 1;
    *local_a8 = local_90;
    local_90 = &DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar3 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar3;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    puVar7 = (uint *)(local_res18 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    iVar4 = iStack_9c;
  }
  puVar2 = *(undefined8 **)(param_1 + 0x3f8);
  *(undefined8 *)(param_1 + 0x3f8) = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  if (iVar4 != 0) {
    local_78 = &DAT_1821dbf98;
    uVar5 = FUN_18122d360(&local_a8,&local_68,&DAT_1821e27ec);
    FUN_18049c4e0(&local_res20,
                  "Note that the following files appeared to be plugin files, but failed to load correctly"
                 );
    local_58 = &DAT_182673984;
    do {
      LOCK();
      uVar3 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar3 != 0);
    if (DAT_1826739f8 == 0) {
      local_res10 = local_res20;
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(DAT_1826739f8,&local_res10,&local_res20,&local_res20);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_res20 + -0x10);
    lVar10 = -1;
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    do {
      lVar11 = lVar10;
      lVar10 = lVar11 + 1;
    } while (*(char *)(local_res10 + lVar10) != '\0');
    FUN_1812342b0(&local_res10,lVar11 + 4);
    _Dst = (void *)((int)lVar10 + local_res10);
    memcpy(_Dst,&DAT_1821e27ac,3);
    *(undefined1 *)((longlong)_Dst + 3) = 0;
    local_98 = local_res10;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(local_res10 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    plVar6 = (longlong *)FUN_181232d30(&local_98,uVar5);
    local_70 = *plVar6;
    puVar7 = (uint *)(local_70 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      *puVar7 = *puVar7 + 1;
      UNLOCK();
    }
    puVar8 = (uint *)(local_98 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    FUN_18049c4e0(&local_88,"Scan complete");
    FUN_1812344e0(&local_80,&local_88);
    puVar8 = (uint *)(local_88 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    FUN_1813469b0(3,&local_80,&local_70,&local_78);
    puVar8 = (uint *)(local_80 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_68 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar3 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar3;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  FUN_180488c50(&local_a8);
                    /* WARNING: Could not recover jumptable at 0x0001812b7134. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_a8);
  return;
}



############ FUN_ 1804d95d0 size=255 ############

void FUN_1804d95d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  void *pvVar2;
  uint *_Memory;
  
  *param_1 = juce::PluginListComponent::Scanner::vftable;
  if (param_1[0x1f5] != 0) {
    FUN_18122a110(param_1[0x1f5],param_2,60000,param_4,0xfffffffffffffffe);
    pvVar2 = (void *)param_1[0x1f5];
    param_1[0x1f5] = 0;
    if (pvVar2 != (void *)0x0) {
      FUN_18122aa90(pvVar2);
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  pvVar2 = (void *)param_1[0x1f5];
  if (pvVar2 != (void *)0x0) {
    FUN_18122aa90(pvVar2);
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  _Memory = (uint *)(param_1[0x1f2] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_181345580(param_1 + 0x81);
  FUN_181347640(param_1 + 0x45);
  FUN_181347640(param_1 + 9);
  if (param_1[8] != 0) {
    FUN_1804dba80();
  }
  FUN_180488c50(param_1 + 5);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[5]);
}



############ FUN_ 1804d9c20 size=139 ############

void FUN_1804d9c20(undefined8 *param_1)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterChoice::vftable;
  plVar1 = (longlong *)param_1[0x3d];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x36);
    param_1[0x3d] = 0;
  }
  plVar1 = (longlong *)param_1[0x35];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2e);
    param_1[0x35] = 0;
  }
  FUN_180484cd0(param_1 + 0x12);
  FUN_180488c50(param_1 + 0x10);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x10]);
}



############ FUN_ 1804e2310 size=70 ############

void FUN_1804e2310(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *local_20;
  undefined8 local_18;
  
  local_20 = (void *)0x0;
  local_18 = 0;
  FUN_1812b7150(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),&local_20,param_4,
                0xfffffffffffffffe);
  FUN_180488c50(&local_20);
                    /* WARNING: Could not recover jumptable at 0x0001804e234f. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_20);
  return;
}



############ FUN_ 1804e2770 size=45 ############

void FUN_1804e2770(longlong param_1)

{
  FUN_180488c50(param_1 + 0x18);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x18));
}



############ FUN_ 1804f2100 size=1405 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804f2100(undefined8 param_1,char *param_2,longlong param_3,undefined8 param_4,
                  undefined4 param_5)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  char cVar4;
  int iVar5;
  undefined8 *puVar7;
  uint *puVar8;
  byte *pbVar9;
  byte bVar10;
  uint uVar11;
  longlong lVar12;
  int iVar13;
  uint uVar14;
  longlong lVar15;
  double dVar16;
  undefined1 auStack_108 [32];
  undefined1 **local_e8;
  byte *local_d8;
  void *local_d0;
  undefined8 local_c8;
  undefined1 *local_c0;
  undefined1 *local_b8;
  byte *local_b0;
  longlong local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  double local_88;
  double local_80;
  double local_78;
  longlong local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 local_48;
  ulonglong local_40;
  int iVar6;
  
  local_68 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_c0 = &DAT_1821dbf98;
  local_e8 = &local_c0;
  FUN_1804f1300(param_1,&local_d8);
  puVar8 = (uint *)(local_c0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar14 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  iVar5 = FUN_180492f10(&local_d8);
  pbVar3 = local_d8;
  if (iVar5 != 0x23) {
    pbVar9 = &DAT_18249f208;
    iVar5 = 0;
LAB_1804f2330:
    do {
      bVar1 = *pbVar9;
      pbVar9 = pbVar9 + 1;
      if ((char)bVar1 < '\0') {
        if ((*pbVar9 & 0xc0) == 0x80) {
          do {
            pbVar9 = pbVar9 + 1;
          } while ((*pbVar9 & 0xc0) == 0x80);
          iVar5 = iVar5 + 1;
          goto LAB_1804f2330;
        }
      }
      else if (bVar1 == 0) goto LAB_1804f235d;
      iVar5 = iVar5 + 1;
    } while( true );
  }
  local_58 = 0;
  local_50 = 0;
  local_48 = 0;
  iVar5 = 0;
  lVar12 = 0;
  local_b0 = local_d8;
  do {
    bVar1 = *local_b0;
    local_b0 = local_b0 + 1;
    if ((char)bVar1 < '\0') {
      bVar10 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar10))) {
        local_b0 = local_b0 + 1;
        bVar10 = bVar10 >> 1;
        bVar2 = bVar1 & bVar10;
      }
    }
    bVar1 = *local_b0;
    uVar14 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar11 = 0x40;
      uVar14 = 0x7f;
      iVar13 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar11 < 9) break;
          uVar14 = uVar14 >> 1;
          iVar13 = iVar13 + 1;
          uVar11 = uVar11 >> 1;
        } while ((bVar1 & uVar11) != 0);
      }
      uVar14 = bVar1 & uVar14;
      lVar15 = 1;
      if (0 < iVar13) {
        do {
          if ((local_b0[lVar15] & 0xc0) != 0x80) break;
          uVar14 = local_b0[lVar15] & 0x3f | uVar14 << 6;
          lVar15 = lVar15 + 1;
        } while (lVar15 <= iVar13);
      }
    }
    uVar11 = uVar14 - 0x30;
    if (9 < uVar11) {
      uVar11 = uVar14 - 0x61;
      if ((5 < uVar11) && (uVar11 = uVar14 - 0x41, 5 < uVar11)) break;
      uVar11 = uVar11 + 10;
    }
    if ((int)uVar11 < 0) break;
    *(uint *)((longlong)&local_58 + lVar12 * 4) = uVar11;
    iVar5 = iVar5 + 1;
    lVar12 = lVar12 + 1;
  } while (lVar12 < 6);
  param_2[3] = -1;
  if (iVar5 < 4) {
    *param_2 = (char)local_50 * '\x11';
    param_2[1] = local_58._4_1_ * '\x11';
    param_2[2] = (char)local_58 * '\x11';
    puVar8 = (uint *)(local_d8 + -0x10);
    if ((*puVar8 & 0x30000000) != 0) {
    }
    LOCK();
    uVar14 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar14 != 0) {
    }
    goto LAB_1804f264e;
  }
  *param_2 = (char)local_48 * '\x10' + local_48._4_1_;
  param_2[1] = (char)local_50 * '\x10' + local_50._4_1_;
  param_2[2] = (char)local_58 * '\x10' + local_58._4_1_;
  puVar8 = (uint *)(local_d8 + -0x10);
  uVar14 = *puVar8;
LAB_1804f263b:
  if ((uVar14 & 0x30000000) == 0) {
    LOCK();
    uVar14 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar14 == 0) {
LAB_1804f264e:
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
LAB_1804f235d:
  iVar5 = FUN_18049da40(local_d8,&DAT_18249f208,iVar5);
  if (iVar5 == 0) {
    iVar5 = FUN_18049bc80(pbVar3,0x28);
    iVar13 = FUN_181232860(&local_d8,iVar5,0x29);
    if ((2 < iVar5) && (iVar5 < iVar13)) {
      local_d0 = (void *)0x0;
      local_c8 = 0;
      puVar7 = (undefined8 *)FUN_1812490c0(&local_d8,&local_a8,iVar5 + 1,iVar13);
      local_60 = *puVar7;
      FUN_18122d110(&local_d0,local_60,&DAT_182495df0,&DAT_18249336a);
      puVar8 = (uint *)(local_a8 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar14 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      FUN_18122d550(&local_d0);
      FUN_18122d5d0(&local_d0);
      puVar7 = (undefined8 *)FUN_181249970(&local_d0,0);
      iVar5 = FUN_18049bc80(*puVar7,0x25);
      if (iVar5 < 0) {
        puVar7 = (undefined8 *)FUN_181249970(&local_d0,2);
        iVar5 = atoi((char *)*puVar7);
        puVar7 = (undefined8 *)FUN_181249970(&local_d0,1);
        iVar13 = atoi((char *)*puVar7);
        puVar7 = (undefined8 *)FUN_181249970(&local_d0,0);
        iVar6 = atoi((char *)*puVar7);
        cVar4 = (char)iVar6;
        *param_2 = (char)iVar5;
        param_2[1] = (char)iVar13;
      }
      else {
        puVar7 = (undefined8 *)FUN_181249970(&local_d0,2);
        local_a0 = *puVar7;
        dVar16 = (double)FUN_18049bd80(&local_a0);
        local_88 = dVar16 * _DAT_1824c41f8 + DAT_1824c4520;
        puVar7 = (undefined8 *)FUN_181249970(&local_d0,1);
        local_98 = *puVar7;
        dVar16 = (double)FUN_18049bd80(&local_98);
        local_80 = dVar16 * _DAT_1824c41f8 + DAT_1824c4520;
        puVar7 = (undefined8 *)FUN_181249970(&local_d0,0);
        local_90 = *puVar7;
        dVar16 = (double)FUN_18049bd80(&local_90);
        local_78 = dVar16 * _DAT_1824c41f8 + DAT_1824c4520;
        *param_2 = local_88._0_1_;
        param_2[1] = local_80._0_1_;
        cVar4 = local_78._0_1_;
      }
      param_2[2] = cVar4;
      param_2[3] = -1;
      FUN_180488c50(&local_d0);
                    /* WARNING: Subroutine does not return */
      free(local_d0);
    }
  }
  iVar5 = FUN_18048cbc0(pbVar3,"inherit");
  if (iVar5 == 0) {
    for (lVar12 = *(longlong *)(param_3 + 8); lVar12 != 0; lVar12 = *(longlong *)(lVar12 + 8)) {
      local_b8 = &DAT_1821dbf98;
      local_e8 = &local_b8;
      puVar7 = (undefined8 *)FUN_1804f1300(param_1,&local_70,lVar12,param_4);
      cVar4 = *(char *)*puVar7;
      puVar8 = (uint *)(local_70 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar14 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      puVar8 = (uint *)(local_b8 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar14 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar14 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      if (cVar4 != '\0') {
        local_e8 = (undefined1 **)CONCAT44(local_e8._4_4_,param_5);
        FUN_1804f2100(param_1,param_2,lVar12,param_4);
        puVar8 = (uint *)(local_d8 + -0x10);
        uVar14 = *puVar8;
        goto LAB_1804f263b;
      }
    }
  }
  FUN_1812a1210(param_2,&local_d8,param_5);
  puVar8 = (uint *)(local_d8 + -0x10);
  uVar14 = *puVar8;
  goto LAB_1804f263b;
}



############ FUN_ 18132bac0 size=547 ############

void FUN_18132bac0(longlong *param_1)

{
  longlong *plVar1;
  char *pcVar2;
  undefined1 **ppuVar3;
  uint uVar4;
  bool bVar5;
  char *local_res8;
  longlong local_40;
  undefined8 local_38;
  uint uStack_34;
  void *local_30;
  undefined8 local_28;
  
  FUN_1812ec000(param_1 + 0x26);
  uVar4 = 0;
  local_40 = 0;
  local_38 = 0;
  local_30 = (void *)0x0;
  local_28 = 0;
  if ((undefined **)*param_1 == juce::FileBrowserComponent::vftable) {
    FUN_18132a0d0(&local_40,&local_30);
  }
  else {
    (*(code *)((undefined **)*param_1)[0x2c])(param_1,&local_40,&local_30);
  }
  if (0 < (int)uStack_34) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    bVar5 = uStack_34 != 0;
    do {
      if (bVar5) {
        ppuVar3 = (undefined1 **)(local_40 + (longlong)(int)uVar4 * 8);
      }
      else {
        if (*(int *)(*plVar1 + 0xc) < DAT_18267af70) {
          _Init_thread_header(&DAT_18267af70);
          if (DAT_18267af70 == -1) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
        }
        ppuVar3 = &DAT_18267af68;
      }
      if (**ppuVar3 == '\0') {
        FUN_181348300(param_1 + 0x49);
      }
      else {
        if (uVar4 < uStack_34) {
          ppuVar3 = (undefined1 **)(local_40 + (longlong)(int)uVar4 * 8);
        }
        else {
          if (*(int *)(*plVar1 + 0xc) < DAT_18267af70) {
            _Init_thread_header(&DAT_18267af70);
            if (DAT_18267af70 == -1) {
              DAT_18267af68 = &DAT_1821dbf98;
              atexit(FUN_181a4a7b0);
              _Init_thread_footer(&DAT_18267af70);
            }
          }
          ppuVar3 = &DAT_18267af68;
        }
        pcVar2 = *ppuVar3;
        if ((*pcVar2 != '\0') && (uVar4 + 1 != 0)) {
          if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
            UNLOCK();
          }
          local_res8 = pcVar2;
          FUN_1813486a0(param_1 + 0x49,uVar4 + 1,&local_res8,1,0);
        }
      }
      uVar4 = uVar4 + 1;
      bVar5 = uVar4 < uStack_34;
    } while ((int)uVar4 < (int)uStack_34);
  }
  FUN_181348300(param_1 + 0x49);
  FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 18132a0d0 size=1703 ############

void FUN_18132a0d0(undefined8 param_1,undefined8 *param_2)

{
  bool bVar1;
  char *pcVar2;
  longlong lVar3;
  uint uVar4;
  BOOL BVar5;
  int iVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  uint *puVar10;
  longlong lVar11;
  ulonglong uVar12;
  undefined1 auStackY_218 [32];
  char local_1d8 [8];
  undefined8 local_1d0;
  char *local_1c8;
  longlong local_1c0;
  char *local_1b8;
  char *local_1b0;
  longlong local_1a8;
  longlong local_1a0;
  longlong local_198;
  longlong *local_190;
  undefined8 local_188;
  undefined1 *local_180;
  undefined1 *local_178;
  longlong local_170;
  longlong local_168;
  undefined1 local_160 [8];
  longlong local_158;
  longlong local_150;
  longlong local_148;
  longlong local_140;
  longlong local_138;
  longlong local_130;
  longlong local_128;
  undefined1 local_120 [8];
  longlong local_118;
  undefined1 local_110 [8];
  longlong local_108;
  undefined1 local_100 [8];
  char *local_f8;
  longlong local_f0 [2];
  undefined1 local_e0 [8];
  uint *local_d8;
  char *local_d0;
  WCHAR local_c8 [64];
  ulonglong local_48;
  
  local_f0[1] = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStackY_218;
  local_190 = (longlong *)0x0;
  local_188 = 0;
  local_1d0 = param_1;
  FUN_181217680(&local_190);
  FUN_180488c50(param_2);
  if (*(int *)(param_2 + 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_2);
  }
  *(undefined4 *)(param_2 + 1) = 0;
  if (0 < (int)local_188._4_4_) {
    uVar12 = (ulonglong)local_188._4_4_;
    plVar9 = local_190;
    do {
      local_1c0 = *plVar9;
      if ((*(uint *)(local_1c0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_1c0 + -0x10) = *(int *)(local_1c0 + -0x10) + 1;
        UNLOCK();
      }
      if ((*(uint *)(local_1c0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_1c0 + -0x10) = *(int *)(local_1c0 + -0x10) + 1;
        UNLOCK();
      }
      local_1a8 = local_1c0;
      FUN_18122dc00(param_2,&local_1a8);
      if (*(char *)*plVar9 == '\0') {
        bVar1 = false;
      }
      else {
        uVar4 = FUN_181218410(plVar9);
        if (((uVar4 == 3) || (uVar4 == 0)) || (5 < uVar4)) {
          bVar1 = true;
        }
        else {
          bVar1 = false;
        }
      }
      if (bVar1) {
        local_1a0 = *plVar9;
        if ((*(uint *)(local_1a0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_1a0 + -0x10) = *(int *)(local_1a0 + -0x10) + 1;
          UNLOCK();
        }
        uVar7 = FUN_1812184a0(local_f0,&local_1a0);
        puVar8 = (undefined8 *)FUN_18049a930(local_e0,uVar7);
        BVar5 = GetVolumeInformationW
                          ((LPCWSTR)*puVar8,local_c8,0x40,(LPDWORD)0x0,(LPDWORD)0x0,(LPDWORD)0x0,
                           (LPWSTR)0x0,0);
        puVar10 = (uint *)(local_f0[0] + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        if (BVar5 == 0) {
          local_c8[0] = L'\0';
        }
        FUN_18049c800(&local_1b0,local_c8);
        if (*local_1b0 == '\0') {
          FUN_18049c4e0(&local_1c8,"Hard Drive");
          lVar3 = DAT_1826739f8;
          local_d8 = &DAT_182673984;
          do {
            LOCK();
            uVar4 = DAT_182673984 & 1;
            DAT_182673984 = DAT_182673984 | 1;
            UNLOCK();
          } while (uVar4 != 0);
          if (DAT_1826739f8 == 0) {
            local_1b8 = local_1c8;
            uVar4 = *(uint *)(local_1c8 + -0x10);
LAB_18132a353:
            if ((uVar4 & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_1b8 + -0x10) = *(int *)(local_1b8 + -0x10) + 1;
              UNLOCK();
            }
          }
          else {
            if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
               (iVar6 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_1c8,
                                      *(undefined1 *)(DAT_1826739f8 + 0x38)), -1 < iVar6)) {
              iVar6 = FUN_1812498b0(lVar3 + 0x18,local_1c8,*(undefined1 *)(lVar3 + 0x38));
              if (iVar6 < 0) {
                local_1b8 = local_1c8;
                uVar4 = *(uint *)(local_1c8 + -0x10);
              }
              else {
                puVar8 = (undefined8 *)FUN_181249970(lVar3 + 0x28,iVar6);
                local_1b8 = (char *)*puVar8;
                uVar4 = *(uint *)(local_1b8 + -0x10);
              }
              goto LAB_18132a353;
            }
            FUN_181234570(*(undefined8 *)(lVar3 + 0x40),&local_1b8,&local_1c8);
          }
          pcVar2 = local_1b0;
          LOCK();
          DAT_182673984 = 0;
          UNLOCK();
          puVar10 = (uint *)(local_1c8 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          local_d0 = local_1b0;
          local_1b0 = local_1b8;
          local_1b8 = pcVar2;
          puVar10 = (uint *)(pcVar2 + -0x10);
          param_1 = local_1d0;
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
        }
        FUN_181232e20(&local_1c0,&DAT_1821e2c2c,&DAT_1821e2c2e);
        uVar7 = FUN_181232d30(&local_1c0,&local_1b0);
        local_1d8[0] = ']';
        local_1d8[1] = '\0';
        lVar3 = -1;
        do {
          lVar11 = lVar3;
          lVar3 = lVar11 + 1;
        } while (local_1d8[lVar11 + 1] != '\0');
        local_f8 = local_1d8 + lVar11 + 1;
        FUN_181232e20(uVar7,local_1d8);
        puVar10 = (uint *)(local_1b0 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
      }
      else {
        iVar6 = FUN_181218410(plVar9);
        if (iVar6 == 5) {
          FUN_18049c4e0(&local_140,"CD/DVD drive");
          FUN_1812344e0(&local_138,&local_140);
          puVar10 = (uint *)(local_140 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          FUN_181232e20(&local_1c0,&DAT_1821e2c1c,&DAT_1821e2c1e);
          uVar7 = FUN_181232d30(&local_1c0,&local_138);
          FUN_181232ce0(uVar7,0x5d);
          puVar10 = (uint *)(local_138 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar4 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
        }
      }
      local_198 = local_1c0;
      if ((*(uint *)(local_1c0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_1c0 + -0x10) = *(int *)(local_1c0 + -0x10) + 1;
        UNLOCK();
      }
      FUN_18122dc00(param_1,&local_198);
      puVar10 = (uint *)(local_1c0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      plVar9 = plVar9 + 1;
      uVar12 = uVar12 - 1;
    } while (uVar12 != 0);
  }
  local_180 = &DAT_1821dbf98;
  FUN_18122dc00(param_2,&local_180);
  local_178 = &DAT_1821dbf98;
  FUN_18122dc00(param_1,&local_178);
  plVar9 = (longlong *)FUN_181249b30(&local_130,1);
  local_170 = *plVar9;
  if ((*(uint *)(local_170 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_170 + -0x10) = *(int *)(local_170 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(param_2,&local_170);
  puVar10 = (uint *)(local_130 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_18049c4e0(&local_168,"Documents");
  FUN_1812344e0(local_160,&local_168);
  puVar10 = (uint *)(local_168 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_18122dc00(param_1,local_160);
  plVar9 = (longlong *)FUN_181249b30(&local_128,3);
  local_158 = *plVar9;
  if ((*(uint *)(local_158 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_158 + -0x10) = *(int *)(local_158 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(param_2,&local_158);
  puVar10 = (uint *)(local_128 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  uVar7 = FUN_181249dc0(local_120,"Music");
  FUN_18122dc00(param_1,uVar7);
  plVar9 = (longlong *)FUN_181249b30(&local_118,5);
  local_150 = *plVar9;
  if ((*(uint *)(local_150 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_150 + -0x10) = *(int *)(local_150 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(param_2,&local_150);
  puVar10 = (uint *)(local_118 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  uVar7 = FUN_181249dc0(local_110,"Pictures");
  FUN_18122dc00(param_1,uVar7);
  plVar9 = (longlong *)FUN_181249b30(&local_108,2);
  local_148 = *plVar9;
  if ((*(uint *)(local_148 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_148 + -0x10) = *(int *)(local_148 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(param_2,&local_148);
  puVar10 = (uint *)(local_108 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  uVar7 = FUN_181249dc0(local_100,"Desktop");
  FUN_18122dc00(param_1,uVar7);
  FUN_180488c50(&local_190);
                    /* WARNING: Subroutine does not return */
  free(local_190);
}



############ FUN_ 1812ede40 size=172 ############

void FUN_1812ede40(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  
  *param_1 = juce::ChoicePropertyComponent::vftable;
  param_1[0x16] = juce::ChoicePropertyComponent::vftable;
  lVar3 = param_1[0x4e];
  if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x10) != 0)) {
    if (lVar3 == 0) {
      plVar6 = (longlong *)0x0;
    }
    else {
      plVar6 = *(longlong **)(lVar3 + 0x10);
    }
    plVar4 = (longlong *)plVar6[7];
    if (plVar4 != (longlong *)0x0) {
      (**(code **)(*plVar4 + 0x20))(plVar4,plVar4 != plVar6);
      plVar6[7] = 0;
    }
  }
  puVar5 = (undefined8 *)param_1[0x4e];
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar5 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  FUN_1813495d0(param_1 + 0x1b);
  FUN_180488c50(param_1 + 0x19);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x19]);
}



############ FUN_ 180510130 size=528 ############

int FUN_180510130(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  uint uVar3;
  uint *puVar4;
  ulonglong uVar5;
  int iVar6;
  ulonglong uVar7;
  undefined1 local_res8 [16];
  undefined1 local_res18 [8];
  undefined8 local_res20;
  undefined8 uVar8;
  int local_98 [4];
  HGLOBAL local_88;
  longlong local_78;
  ulonglong local_70;
  int local_68 [4];
  HGLOBAL local_58;
  longlong local_48;
  longlong local_40;
  
  uVar8 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x38) == '\0') {
    puVar1 = (undefined8 *)(param_1 + 0x18);
    FUN_180488c50(puVar1);
    if (*(int *)(param_1 + 0x20) != 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar1);
    }
    *(undefined4 *)(param_1 + 0x20) = 0;
    puVar4 = (uint *)(*(longlong *)(param_1 + 0x28) + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    *(undefined1 **)(param_1 + 0x28) = &DAT_1821dbf98;
    FUN_18050ff90(local_98,param_2,0xf,param_4,uVar8);
    if (local_98[0] < 0) {
      if (local_78 != 0) {
        GlobalUnlock(local_88);
      }
      FUN_18050ff90(local_68,param_2,0xd,param_4,uVar8);
      iVar6 = local_68[0];
      if (-1 < local_68[0]) {
        FUN_18049cfa0(&local_res20,local_48,local_40 + local_48);
        lVar2 = *(longlong *)(param_1 + 0x28);
        *(undefined8 *)(param_1 + 0x28) = local_res20;
        puVar4 = (uint *)(lVar2 + -0x10);
        iVar6 = 0;
        if ((*puVar4 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar4;
          *puVar4 = *puVar4 - 1;
          UNLOCK();
          iVar6 = 0;
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar4);
          }
        }
      }
      if (local_48 != 0) {
        GlobalUnlock(local_58);
      }
    }
    else {
      lVar2 = local_78 + 0x14;
      uVar7 = 0;
      if (*(int *)(local_78 + 0x10) == 0) {
        while( true ) {
          iVar6 = 0;
          uVar5 = uVar7;
          if (local_70 <= uVar7) break;
          do {
            if (*(char *)(uVar5 + lVar2) == '\0') break;
            iVar6 = iVar6 + 1;
            uVar5 = (ulonglong)((int)uVar5 + 1);
          } while (uVar5 < local_70);
          if (iVar6 == 0) break;
          FUN_18049c670(local_res18,uVar7 + lVar2,iVar6);
          FUN_18122dc00(puVar1,local_res18);
          uVar7 = (ulonglong)(uint)((int)uVar7 + 1 + iVar6);
        }
      }
      else {
        while( true ) {
          iVar6 = 0;
          uVar5 = uVar7;
          if (local_70 <= uVar7) break;
          do {
            if (*(short *)(lVar2 + uVar5 * 2) == 0) break;
            iVar6 = iVar6 + 1;
            uVar5 = (ulonglong)((int)uVar5 + 1);
          } while (uVar5 < local_70);
          if (iVar6 == 0) break;
          FUN_18049cc00(local_res8,lVar2 + uVar7 * 2,iVar6);
          FUN_18122dc00(puVar1,local_res8);
          uVar7 = (ulonglong)(uint)((int)uVar7 + 1 + iVar6);
        }
      }
      if (local_78 != 0) {
        GlobalUnlock(local_88);
      }
      iVar6 = 0;
    }
  }
  else {
    iVar6 = 1;
  }
  return iVar6;
}



############ FUN_ 18050fbe0 size=206 ############

undefined8 FUN_18050fbe0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  void *local_30;
  undefined8 local_28;
  longlong local_20;
  undefined8 local_18;
  
  if (*(char *)(param_1 + 0x38) != '\0') {
    return 1;
  }
  lVar2 = *(longlong *)(param_1 + 0x10);
  local_30 = (void *)0x0;
  local_28 = 0;
  FUN_18048c4c0(&local_30,*(undefined8 *)(param_1 + 0x18),*(undefined4 *)(param_1 + 0x24),param_4,
                0xfffffffffffffffe);
  local_20 = *(longlong *)(param_1 + 0x28);
  if ((*(uint *)(local_20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_20 + -0x10) = *(int *)(local_20 + -0x10) + 1;
    UNLOCK();
  }
  local_18 = 0xffffffffffffffff;
  FUN_1812d1180(lVar2,&local_30);
  *(undefined8 *)(lVar2 + 0x50) = 0;
  _Memory = (uint *)(local_20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 1812d0dc0 size=722 ############

/* WARNING: Removing unreachable block (ram,0x0001812d0ecf) */
/* WARNING: Removing unreachable block (ram,0x0001812d0e6f) */
/* WARNING: Removing unreachable block (ram,0x0001812d0eb4) */
/* WARNING: Removing unreachable block (ram,0x0001812d0f2c) */

undefined8 FUN_1812d0dc0(longlong param_1,undefined8 *param_2)

{
  longlong *plVar1;
  int *piVar2;
  uint *_Memory;
  int iVar3;
  uint uVar4;
  undefined8 *puVar5;
  char cVar6;
  longlong lVar7;
  TypeDescriptor *pTVar8;
  undefined8 local_res18;
  undefined8 *local_res20;
  void *local_f8;
  undefined8 local_f0;
  longlong local_e8;
  undefined8 local_e0;
  undefined8 **local_d8;
  undefined8 *local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  longlong local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined1 *local_80;
  undefined1 local_78 [56];
  undefined8 local_40;
  
  local_88 = 0xfffffffffffffffe;
  FUN_1812d1180();
  puVar5 = *(undefined8 **)(param_1 + 0x48);
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
    UNLOCK();
    plVar1 = puVar5 + 2;
    if (*plVar1 != 0) {
      local_res20 = *(undefined8 **)(param_1 + 0x48);
      *(undefined8 *)(param_1 + 0x48) = 0;
      if (local_res20 != (undefined8 *)0x0) {
        LOCK();
        piVar2 = (int *)(local_res20 + 1);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*local_res20)(local_res20,1);
        }
      }
      *(undefined8 *)(param_1 + 0x50) = 0;
      pTVar8 = &juce::FileDragAndDropTarget::RTTI_Type_Descriptor;
      if (*(int *)((longlong)param_2 + 0xc) == 0) {
        pTVar8 = &juce::TextDragAndDropTarget::RTTI_Type_Descriptor;
      }
      lVar7 = __RTDynamicCast(*plVar1,0,&juce::Component::RTTI_Type_Descriptor,pTVar8,0);
      if (lVar7 != 0) {
        cVar6 = FUN_181343030(*plVar1);
        if (cVar6 != '\0') {
          FUN_181341760();
          cVar6 = FUN_181343030(*plVar1);
          if (cVar6 != '\0') {
            LOCK();
            piVar2 = (int *)(puVar5 + 1);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)*puVar5)(puVar5,1);
            }
            return 1;
          }
        }
        local_f8 = (void *)0x0;
        local_f0 = 0;
        FUN_18048c4c0(&local_f8,*param_2,*(undefined4 *)((longlong)param_2 + 0xc));
        local_e8 = param_2[2];
        _Memory = (uint *)(local_e8 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          *_Memory = *_Memory + 1;
          UNLOCK();
        }
        local_e0 = param_2[3];
        FUN_18051db10(&local_res18,*plVar1,*(undefined8 *)(param_1 + 8));
        local_e0 = local_res18;
        local_80 = local_78;
        LOCK();
        *(int *)(puVar5 + 1) = *(int *)(puVar5 + 1) + 1;
        UNLOCK();
        local_c8 = 0;
        local_c0 = 0;
        local_d0 = puVar5;
        FUN_18048c4c0(&local_c8,*param_2,*(undefined4 *)((longlong)param_2 + 0xc));
        local_b8 = param_2[2];
        if ((*(uint *)(local_b8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_b8 + -0x10) = *(int *)(local_b8 + -0x10) + 1;
          UNLOCK();
        }
        local_b0 = param_2[3];
        local_a8 = 0;
        local_a0 = 0;
        FUN_18048c4c0(&local_a8,local_f8,local_f0._4_4_);
        local_98 = local_e8;
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          *_Memory = *_Memory + 1;
          UNLOCK();
        }
        local_90 = local_res18;
        local_d8 = &local_d0;
        local_40 = 0;
        local_40 = FUN_180523f00(&local_d0);
        FUN_18050c410(&local_d0);
        FUN_1812a7460(local_78);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar4 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        FUN_180488c50(&local_f8);
                    /* WARNING: Subroutine does not return */
        free(local_f8);
      }
    }
  }
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(puVar5 + 1);
    iVar3 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  return 0;
}



############ FUN_ 1805164f0 size=77 ############

void FUN_1805164f0(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x28) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_1 + 0x18);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x18));
}



############ FUN_ 180521360 size=40 ############

void FUN_180521360(longlong param_1)

{
  FUN_180488c50(param_1 + 8);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 181329930 size=226 ############

void FUN_181329930(undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  undefined1 **ppuVar4;
  uint *puVar5;
  undefined1 *local_res10;
  undefined1 *local_res18;
  longlong *local_18;
  int local_c;
  
  local_res10 = (undefined1 *)((ulonglong)local_res10 & 0xffffffff00000000);
  FUN_181329a30(param_1,&local_18);
  if (local_c < 1) {
    bVar3 = false;
    bVar2 = true;
    local_res10 = &DAT_1821dbf98;
    ppuVar4 = &local_res10;
  }
  else {
    bVar3 = true;
    bVar2 = false;
    local_res18 = (undefined1 *)*local_18;
    if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
      UNLOCK();
    }
    ppuVar4 = &local_res18;
  }
  *param_2 = *ppuVar4;
  *ppuVar4 = &DAT_1821dbf98;
  if (bVar2) {
    puVar5 = (uint *)(local_res10 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if ((bVar3) && (puVar5 = (uint *)(local_res18 + -0x10), (*puVar5 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_180488c50(&local_18);
                    /* WARNING: Subroutine does not return */
  free(local_18);
}



############ FUN_ 180527c20 size=208 ############

void FUN_180527c20(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::PropertiesFile::vftable;
  param_1[0xd] = juce::PropertiesFile::vftable;
  param_1[0x14] = juce::PropertiesFile::vftable;
  FUN_181351cf0();
  FUN_180527b70(param_1 + 0x18);
  _Memory = (uint *)(param_1[0x17] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x14] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x14);
  FUN_1812a5870(param_1 + 0xd);
  *param_1 = juce::PropertySet::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 7));
  FUN_180488c50(param_1 + 3);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 1813ad2e0 size=636 ############

void FUN_1813ad2e0(undefined8 param_1,longlong *param_2,ulonglong param_3)

{
  int *piVar1;
  uint uVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  undefined4 *puVar6;
  longlong lVar7;
  ulonglong uVar8;
  char *pcVar9;
  size_t _Size;
  undefined **ppuVar10;
  char *_Src;
  bool bVar11;
  void *local_58;
  undefined8 local_50;
  char *local_48;
  longlong local_40;
  
  local_48 = (char *)0x0;
  local_40 = 0;
  (**(code **)(*param_2 + 0xb8))(param_2,4);
  (**(code **)(*param_2 + 0xa0))(param_2,&local_48,(param_3 & 0xffffffff) - 4);
  local_58 = (void *)0x0;
  local_50 = 0;
  pcVar9 = local_48 + local_40;
  if (local_48 < pcVar9) {
    _Src = local_48;
    do {
      bVar3 = false;
      cVar4 = FUN_1813ad600(_Src);
      if (cVar4 != '\0') {
        if ((_Src == (char *)0x0) || (*_Src == '\0')) {
          puVar6 = (undefined4 *)&DAT_1821dbf98;
        }
        else {
          _Size = (longlong)pcVar9 - (longlong)_Src;
          uVar8 = _Size + 4 & 0xfffffffffffffffc;
          puVar6 = (undefined4 *)thunk_FUN_1811316e0(uVar8 + 0x17);
          LOCK();
          *puVar6 = 0;
          UNLOCK();
          *(ulonglong *)(puVar6 + 2) = uVar8;
          puVar6 = puVar6 + 4;
          memcpy(puVar6,_Src,_Size);
          *(undefined1 *)((longlong)puVar6 + _Size) = 0;
        }
        ppuVar10 = &PTR_s_Rock_Blues_182634640;
        do {
          iVar5 = FUN_18048cbc0(puVar6,*ppuVar10);
          if (iVar5 == 0) {
            bVar3 = true;
            goto LAB_1813ad400;
          }
          ppuVar10 = ppuVar10 + 1;
        } while ((longlong)ppuVar10 < 0x182634690);
        bVar3 = false;
LAB_1813ad400:
        if ((puVar6[-4] & 0x30000000) == 0) {
          LOCK();
          puVar6[-4] = puVar6[-4] + 1;
          UNLOCK();
        }
        iVar5 = local_50._4_4_ + 1;
        if ((int)local_50 < iVar5) {
          if (iVar5 < 0) {
            iVar5 = local_50._4_4_ + 2;
          }
          FUN_18048a300(&local_58,local_50._4_4_ + 9 + (iVar5 >> 1) & 0xfffffff8);
        }
        lVar7 = (longlong)local_50._4_4_;
        local_50 = CONCAT44(local_50._4_4_ + 1,(int)local_50);
        *(undefined4 **)((longlong)local_58 + lVar7 * 8) = puVar6;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar2 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar11 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar2;
          if (bVar11) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
        if ((puVar6[-4] & 0x30000000) == 0) {
          LOCK();
          piVar1 = puVar6 + -4;
          iVar5 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6 + -4);
          }
        }
      }
      lVar7 = 0x32;
      if (bVar3) {
        lVar7 = 0x76;
      }
      _Src = _Src + lVar7;
      if (pcVar9 <= _Src) break;
      if (*_Src == '\0') {
        if ((_Src + 0x34 < pcVar9) && (cVar4 = FUN_1813ad600(_Src + 0x32), cVar4 != '\0')) {
          _Src = _Src + 0x32;
        }
        else if ((_Src + 0x78 < pcVar9) && (cVar4 = FUN_1813ad600(_Src + 0x76), cVar4 != '\0')) {
          _Src = _Src + 0x76;
        }
        else if (_Src + 0xaa < pcVar9) {
          cVar4 = FUN_1813ad600(_Src + 0xa8);
          if (cVar4 != '\0') {
            _Src = _Src + 0xa8;
          }
        }
      }
    } while (_Src < pcVar9);
  }
  FUN_18122d360(&local_58,param_1,&DAT_1821e3d8c);
  FUN_180488c50(&local_58);
                    /* WARNING: Subroutine does not return */
  free(local_58);
}



############ FUN_ 18054dee0 size=241 ############

void FUN_18054dee0(undefined8 *param_1)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  code *pcVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  *param_1 = juce::WasapiClasses::WASAPIAudioIODeviceType::vftable;
  param_1[4] = juce::WasapiClasses::WASAPIAudioIODeviceType::vftable;
  if (param_1[0x13] != 0) {
    (**(code **)(*(longlong *)param_1[0x12] + 0x38))();
  }
  if (param_1[0x14] != 0) {
    *(undefined8 *)(param_1[0x14] + 0x10) = 0;
  }
  puVar4 = (undefined8 *)param_1[0x14];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  plVar5 = (longlong *)param_1[0x13];
  if (plVar5 != (longlong *)0x0) {
    pcVar6 = (code *)((undefined **)*plVar5)[2];
    if ((undefined **)*plVar5 ==
        juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable) {
      plVar2 = plVar5 + 1;
      *(int *)plVar2 = (int)*plVar2 + -1;
      if ((int)*plVar2 == 0) {
        (*(code *)juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable[8]
        )(plVar5,1,pcVar6,
          juce::WasapiClasses::WASAPIAudioIODeviceType::ChangeNotificationClient::vftable,uVar7);
      }
    }
    else {
      (*pcVar6)();
    }
  }
  if ((longlong *)param_1[0x12] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[0x12] + 0x10))();
  }
  FUN_180488c50(param_1 + 0xf);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0xf]);
}



############ FUN_ 18054e0a0 size=198 ############

void FUN_18054e0a0(longlong param_1)

{
  undefined8 *puVar1;
  
  *(undefined1 *)(param_1 + 0x89) = 1;
  FUN_180488c50(param_1 + 0x48);
  if (*(int *)(param_1 + 0x50) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x48));
  }
  *(undefined4 *)(param_1 + 0x50) = 0;
  FUN_180488c50(param_1 + 0x68);
  if (*(int *)(param_1 + 0x70) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x68));
  }
  *(undefined4 *)(param_1 + 0x70) = 0;
  FUN_180488c50(param_1 + 0x58);
  if (*(int *)(param_1 + 0x60) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x58));
  }
  puVar1 = (undefined8 *)(param_1 + 0x78);
  *(undefined4 *)(param_1 + 0x60) = 0;
  FUN_180488c50(puVar1);
  if (*(int *)(param_1 + 0x80) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  *(undefined4 *)(param_1 + 0x80) = 0;
  FUN_18054e570(param_1,param_1 + 0x48,param_1 + 0x68,param_1 + 0x58,puVar1);
  return;
}



############ FUN_ 18054eb80 size=954 ############

void FUN_18054eb80(longlong param_1)

{
  longlong **pplVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong *plVar4;
  bool bVar5;
  int iVar6;
  int iVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *local_70;
  undefined8 local_68;
  longlong *local_60;
  undefined8 local_58;
  longlong *local_50;
  undefined8 local_48;
  longlong *local_40;
  undefined8 local_38;
  longlong *local_30;
  undefined8 local_28;
  
  local_40 = (longlong *)0x0;
  local_38 = 0;
  local_30 = (longlong *)0x0;
  local_28 = 0;
  local_50 = (longlong *)0x0;
  local_48 = 0;
  local_60 = (longlong *)0x0;
  local_58 = 0;
  FUN_18054e570(param_1 + -0x20,&local_40,&local_30,&local_50,&local_60);
  pplVar1 = (longlong **)(param_1 + 0x28);
  if (local_38._4_4_ == *(int *)(param_1 + 0x34)) {
    plVar8 = *pplVar1;
    plVar4 = plVar8 + *(int *)(param_1 + 0x34);
    plVar9 = local_40;
    for (; plVar8 != plVar4; plVar8 = plVar8 + 1) {
      if (*plVar9 == *plVar8) {
        iVar7 = 0;
      }
      else {
        iVar7 = FUN_18048cbc0(*plVar9,*plVar8);
      }
      plVar9 = plVar9 + 1;
      if (iVar7 != 0) goto LAB_18054ebfc;
    }
    bVar5 = true;
  }
  else {
LAB_18054ebfc:
    bVar5 = false;
  }
  iVar7 = local_28._4_4_;
  if (bVar5) {
    if (local_28._4_4_ == *(int *)(param_1 + 0x54)) {
      plVar8 = *(longlong **)(param_1 + 0x48);
      plVar4 = plVar8 + *(int *)(param_1 + 0x54);
      plVar9 = local_30;
      for (; plVar8 != plVar4; plVar8 = plVar8 + 1) {
        if (*plVar9 == *plVar8) {
          iVar6 = 0;
        }
        else {
          iVar6 = FUN_18048cbc0(*plVar9,*plVar8);
        }
        plVar9 = plVar9 + 1;
        if (iVar6 != 0) goto LAB_18054ec5a;
      }
      bVar5 = true;
    }
    else {
LAB_18054ec5a:
      bVar5 = false;
    }
    if (bVar5) {
      if (local_48._4_4_ == *(int *)(param_1 + 0x44)) {
        plVar8 = *(longlong **)(param_1 + 0x38);
        plVar4 = plVar8 + *(int *)(param_1 + 0x44);
        plVar9 = local_50;
        for (; plVar8 != plVar4; plVar8 = plVar8 + 1) {
          if (*plVar9 == *plVar8) {
            iVar6 = 0;
          }
          else {
            iVar6 = FUN_18048cbc0(*plVar9,*plVar8);
          }
          plVar9 = plVar9 + 1;
          if (iVar6 != 0) goto LAB_18054ecb5;
        }
        bVar5 = true;
      }
      else {
LAB_18054ecb5:
        bVar5 = false;
      }
      if (bVar5) {
        if (local_58._4_4_ == *(int *)(param_1 + 100)) {
          plVar8 = *(longlong **)(param_1 + 0x58);
          plVar4 = plVar8 + *(int *)(param_1 + 100);
          plVar9 = local_60;
          for (; plVar8 != plVar4; plVar8 = plVar8 + 1) {
            if (*plVar9 == *plVar8) {
              iVar6 = 0;
            }
            else {
              iVar6 = FUN_18048cbc0(*plVar9,*plVar8);
            }
            plVar9 = plVar9 + 1;
            if (iVar6 != 0) goto LAB_18054ed11;
          }
          bVar5 = true;
        }
        else {
LAB_18054ed11:
          bVar5 = false;
        }
        if (bVar5) goto LAB_18054eef9;
      }
    }
  }
  *(undefined1 *)(param_1 + 0x69) = 1;
  if (pplVar1 != &local_40) {
    local_70 = (longlong *)0x0;
    local_68 = 0;
    FUN_18048c4c0(&local_70,local_40,local_38._4_4_);
    plVar4 = *pplVar1;
    *pplVar1 = local_70;
    uVar2 = *(undefined4 *)(param_1 + 0x30);
    *(undefined4 *)(param_1 + 0x30) = (undefined4)local_68;
    uVar3 = *(undefined4 *)(param_1 + 0x34);
    *(undefined4 *)(param_1 + 0x34) = local_68._4_4_;
    local_68 = CONCAT44(uVar3,uVar2);
    local_70 = plVar4;
    FUN_180488c50(&local_70);
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  pplVar1 = (longlong **)(param_1 + 0x48);
  if (pplVar1 != &local_30) {
    local_70 = (longlong *)0x0;
    local_68 = 0;
    FUN_18048c4c0(&local_70,local_30,iVar7);
    plVar4 = *pplVar1;
    *pplVar1 = local_70;
    uVar2 = *(undefined4 *)(param_1 + 0x50);
    *(undefined4 *)(param_1 + 0x50) = (undefined4)local_68;
    uVar3 = *(undefined4 *)(param_1 + 0x54);
    *(undefined4 *)(param_1 + 0x54) = local_68._4_4_;
    local_68 = CONCAT44(uVar3,uVar2);
    local_70 = plVar4;
    FUN_180488c50(&local_70);
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  pplVar1 = (longlong **)(param_1 + 0x38);
  if (pplVar1 != &local_50) {
    local_70 = (longlong *)0x0;
    local_68 = 0;
    FUN_18048c4c0(&local_70,local_50,local_48._4_4_);
    plVar4 = *pplVar1;
    *pplVar1 = local_70;
    uVar2 = *(undefined4 *)(param_1 + 0x40);
    *(undefined4 *)(param_1 + 0x40) = (undefined4)local_68;
    uVar3 = *(undefined4 *)(param_1 + 0x44);
    *(undefined4 *)(param_1 + 0x44) = local_68._4_4_;
    local_68 = CONCAT44(uVar3,uVar2);
    local_70 = plVar4;
    FUN_180488c50(&local_70);
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  pplVar1 = (longlong **)(param_1 + 0x58);
  if (pplVar1 != &local_60) {
    local_70 = (longlong *)0x0;
    local_68 = 0;
    FUN_18048c4c0(&local_70,local_60,local_58._4_4_);
    plVar4 = *pplVar1;
    *pplVar1 = local_70;
    uVar2 = *(undefined4 *)(param_1 + 0x60);
    *(undefined4 *)(param_1 + 0x60) = (undefined4)local_68;
    uVar3 = *(undefined4 *)(param_1 + 100);
    *(undefined4 *)(param_1 + 100) = local_68._4_4_;
    local_68 = CONCAT44(uVar3,uVar2);
    local_70 = plVar4;
    FUN_180488c50(&local_70);
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
LAB_18054eef9:
  iVar7 = *(int *)(param_1 + -4);
  while (0 < iVar7) {
    iVar7 = iVar7 + -1;
    if ((*(int *)(param_1 + -4) <= iVar7) && (iVar7 = *(int *)(param_1 + -4) + -1, iVar7 < 0))
    break;
    (**(code **)(**(longlong **)(*(longlong *)(param_1 + -0x10) + (longlong)iVar7 * 8) + 8))();
  }
  FUN_180488c50(&local_60);
                    /* WARNING: Subroutine does not return */
  free(local_60);
}



############ FUN_ 1805519f0 size=167 ############

void FUN_1805519f0(undefined8 *param_1)

{
  code *pcVar1;
  
  FUN_180488c50();
  if (*(int *)(param_1 + 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  *(undefined4 *)(param_1 + 1) = 0;
  FUN_180488c50(param_1 + 2);
  if (*(int *)(param_1 + 3) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
  *(undefined4 *)(param_1 + 3) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2c) = 0;
  if (*(int *)(param_1 + 5) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[4]);
  }
  *(undefined4 *)(param_1 + 5) = 0;
  *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
  pcVar1 = DAT_182678f38;
  if (*(int *)(param_1 + 7) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[6]);
  }
  *(undefined4 *)(param_1 + 7) = 0;
  if (pcVar1 != (code *)0x0) {
    (*pcVar1)(FUN_180551f60,param_1);
    (*DAT_182678f48)(FUN_180551fa0,param_1);
  }
  return;
}



############ FUN_ 1805782c0 size=57 ############

void FUN_1805782c0(longlong param_1)

{
  FUN_180577b60(param_1 + 0x200);
  FUN_180488c50(param_1 + 0x1f0);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x1f0));
}



############ FUN_ 180580de0 size=159 ############

void FUN_180580de0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = CloudyComboBoxRadioButtons::vftable;
  param_1[0x16] = CloudyComboBoxRadioButtons::vftable;
  param_1[0x19] = CloudyComboBoxRadioButtons::vftable;
  param_1[0x1b] = CloudyComboBoxRadioButtons::vftable;
  FUN_1811bc940(param_1[0x1f],param_1 + 0x1b,param_3,param_4,0xfffffffffffffffe);
  FUN_1805826a0(param_1 + 0x26);
  FUN_1805826a0(param_1 + 0x22);
  FUN_180488c50(param_1 + 0x20);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x20]);
}



############ FUN_ 180597b60 size=386 ############

void FUN_180597b60(longlong param_1)

{
  longlong *plVar1;
  void *pvVar2;
  longlong lVar3;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x70) + 400);
  if (plVar1 != (longlong *)0x0) {
    if ((undefined **)*plVar1 == CloudyOpenGLRenderer<Soothe2VertexData>::vftable) {
      EnterCriticalSection((LPCRITICAL_SECTION)((longlong)plVar1 + 0xb4));
      LOCK();
      *(undefined1 *)((longlong)plVar1 + 0x83) = 0;
      UNLOCK();
      pvVar2 = (void *)plVar1[0xf];
      plVar1[0xf] = 0;
      if (pvVar2 != (void *)0x0) {
        FUN_18056afc0(pvVar2);
                    /* WARNING: Subroutine does not return */
        free(pvVar2);
      }
      pvVar2 = (void *)plVar1[0xd];
      plVar1[0xd] = 0;
      if (pvVar2 != (void *)0x0) {
        FUN_18163bcd0(pvVar2);
                    /* WARNING: Subroutine does not return */
        free(pvVar2);
      }
      LOCK();
      *(undefined1 *)(plVar1 + 0x10) = 0;
      UNLOCK();
      *(undefined8 *)((longlong)plVar1 + 0x94) = 0;
      *(undefined8 *)((longlong)plVar1 + 0x9c) = 0;
      LeaveCriticalSection((LPCRITICAL_SECTION)((longlong)plVar1 + 0xb4));
    }
    else {
      (*(code *)((undefined **)*plVar1)[3])(plVar1);
    }
  }
  FUN_180488c50(param_1 + 0xe0);
  if (*(int *)(param_1 + 0xe8) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0xe0));
  }
  *(undefined4 *)(param_1 + 0xe8) = 0;
  FUN_180488f10();
  if (*(int *)(param_1 + 0xf8) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0xf0));
  }
  *(undefined4 *)(param_1 + 0xf8) = 0;
  lVar3 = *(longlong *)(param_1 + 0x80);
  *(undefined8 *)(param_1 + 0x80) = 0;
  if (lVar3 != 0) {
    FUN_18059b780();
  }
  lVar3 = *(longlong *)(param_1 + 0x88);
  *(undefined8 *)(param_1 + 0x88) = 0;
  if (lVar3 != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar3 + 8));
  }
  lVar3 = *(longlong *)(param_1 + 0x68);
  wglMakeCurrent((HDC)0x0,(HGLRC)0x0);
  *(undefined8 *)(lVar3 + 0x38) = 0;
  return;
}



############ FUN_ 1811ae7e0 size=262 ############

void FUN_1811ae7e0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,
                  longlong param_9)

{
  undefined1 auStack_488 [112];
  undefined4 local_418;
  undefined8 local_410;
  void *local_408;
  undefined8 local_400;
  void **local_3e8;
  undefined8 local_3e0;
  undefined8 *local_3d8;
  undefined8 local_3d0;
  undefined1 *local_3c8;
  undefined1 *local_3c0;
  undefined1 *local_3b8;
  undefined1 local_3b0 [64];
  undefined1 local_370 [56];
  undefined8 local_338;
  undefined1 local_330 [280];
  undefined1 local_218 [224];
  undefined1 local_138 [224];
  ulonglong local_58;
  
  local_3e0 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_488;
  local_3d0 = param_6;
  local_418 = 0;
  local_3c8 = local_370;
  local_3c0 = local_330;
  local_3b8 = local_3b0;
  local_410 = param_1;
  local_3d8 = param_4;
  if (param_9 == 0) {
    FUN_1811aa2b0(local_138,*(undefined4 *)((longlong)param_4 + 0xc));
    local_418 = 1;
  }
  else {
    FUN_180484da0(local_218);
    local_418 = 2;
  }
  local_408 = (void *)0x0;
  local_400 = 0;
  FUN_18048c4c0(&local_408,*param_4,*(undefined4 *)((longlong)param_4 + 0xc));
  local_3e8 = &local_408;
  local_338 = 0;
  local_338 = FUN_18048ec10(&local_408);
  FUN_180488c50(&local_408);
                    /* WARNING: Subroutine does not return */
  free(local_408);
}



############ FUN_ 1811a7450 size=190 ############

void FUN_1811a7450(longlong *param_1,undefined8 *param_2)

{
  int *_Memory;
  int iVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  
  lVar2 = *param_1;
  iVar1 = *(int *)((longlong)param_2 + 0xc);
  if (0 < iVar1) {
    lVar4 = 0;
    do {
      iVar3 = FUN_18048cbc0(lVar2);
      if (iVar3 == 0) break;
      lVar4 = lVar4 + 1;
    } while (lVar4 < iVar1);
  }
  _Memory = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_2);
                    /* WARNING: Subroutine does not return */
  free((void *)*param_2);
}



############ FUN_ 181212cd0 size=123 ############

void FUN_181212cd0(undefined8 *param_1)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar1 = param_1[1];
  *param_1 = juce::WebInputStream::vftable;
  if (lVar1 != 0) {
    lVar2 = *(longlong *)(lVar1 + 0x60);
    *(undefined8 *)(lVar1 + 0x60) = 0;
    if (lVar2 != 0) {
      InternetCloseHandle();
    }
    if (*(longlong *)(lVar1 + 0x58) != 0) {
      InternetCloseHandle();
      *(undefined8 *)(lVar1 + 0x58) = 0;
    }
    DeleteCriticalSection((LPCRITICAL_SECTION)(lVar1 + 200));
    FUN_180488c50(lVar1 + 0xb0);
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar1 + 0xb0));
  }
  return;
}



############ FUN_ 181227e70 size=914 ############

void FUN_181227e70(undefined8 param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined1 **ppuVar6;
  undefined1 **ppuVar7;
  longlong *plVar8;
  int iVar9;
  ulonglong uVar10;
  undefined1 **ppuVar11;
  bool bVar12;
  undefined1 **local_60;
  undefined8 local_58;
  undefined1 **local_50;
  undefined8 local_48;
  
  local_60 = (undefined1 **)0x0;
  local_58 = 0;
  local_50 = (undefined1 **)0x0;
  local_48 = 0;
  FUN_18122d110(&local_60,"Nov 16 2020",&DAT_1821dad44,&DAT_1821da834);
  FUN_18122d5d0(&local_60);
  FUN_18122d110(&local_50,"16:39:38",&DAT_1821daf94,&DAT_1821da804);
  ppuVar7 = local_50;
  uVar1 = local_48._4_4_;
  ppuVar11 = &DAT_18267af68;
  uVar10 = (ulonglong)_tls_index;
  if (local_48._4_4_ < 2) {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar10 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    ppuVar6 = &DAT_18267af68;
  }
  else {
    ppuVar6 = local_50 + 1;
  }
  iVar2 = atoi(*ppuVar6);
  if (uVar1 == 0) {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar10 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    ppuVar7 = &DAT_18267af68;
  }
  iVar3 = atoi(*ppuVar7);
  ppuVar7 = local_60;
  if (local_58._4_4_ < 2) {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar10 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    ppuVar6 = &DAT_18267af68;
  }
  else {
    ppuVar6 = local_60 + 1;
  }
  iVar4 = atoi(*ppuVar6);
  ppuVar6 = ppuVar7;
  if (local_58._4_4_ == 0) {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar10 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
    ppuVar6 = &DAT_18267af68;
  }
  plVar8 = &DAT_1821dbfa0;
  iVar9 = 0;
  do {
    if (*plVar8 == 0) {
      bVar12 = **ppuVar6 == '\0';
    }
    else {
      iVar5 = FUN_18049bb30(*ppuVar6);
      bVar12 = iVar5 == 0;
    }
    iVar5 = iVar9;
    if (bVar12) break;
    iVar9 = iVar9 + 1;
    plVar8 = plVar8 + 1;
    iVar5 = 0;
  } while ((longlong)plVar8 < 0x1821dc000);
  if (local_58._4_4_ < 3) {
    if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar10 * 8) + 0xc) <
         DAT_18267af70) && (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
    }
  }
  else {
    ppuVar11 = ppuVar7 + 2;
  }
  iVar9 = atoi(*ppuVar11);
  FUN_181228ed0(param_1,iVar9,iVar5,iVar4,iVar3,iVar2);
  FUN_180488c50(&local_50);
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 18122c670 size=47 ############

void FUN_18122c670(void)

{
  DeleteCriticalSection((LPCRITICAL_SECTION)&DAT_18267afa0);
  FUN_180488c50(&DAT_18267af90);
                    /* WARNING: Could not recover jumptable at 0x00018122c698. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(DAT_18267af90);
  return;
}



############ FUN_ 18122dcc0 size=40 ############

void FUN_18122dcc0(undefined8 *param_1)

{
  FUN_180488c50();
  if (*(int *)(param_1 + 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  *(undefined4 *)(param_1 + 1) = 0;
  return;
}



############ FUN_ 181234600 size=46 ############

void FUN_181234600(longlong param_1)

{
  FUN_18049b290(param_1 + 0x40);
  FUN_180488c50(param_1 + 0x28);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x28));
}



############ FUN_ 181239740 size=657 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181239740(longlong param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  uint uVar2;
  byte bVar3;
  undefined8 *puVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  char cVar8;
  int iVar9;
  longlong lVar10;
  uint *_Memory;
  undefined8 *puVar11;
  byte *pbVar12;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  undefined8 *local_a0;
  int local_94;
  undefined8 local_90;
  byte *local_88;
  byte *local_80;
  longlong local_78;
  undefined8 local_70;
  longlong local_68;
  undefined8 local_60;
  undefined1 local_39;
  ulonglong local_38 [2];
  
  local_60 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_c8;
  bVar7 = false;
  local_a8 = 0;
  if (*(int *)(param_1 + 0x14) < 1) {
  }
  local_70 = 0;
  puVar4 = *(undefined8 **)(param_1 + 8);
  local_68 = param_1;
  FUN_18122ce30(&local_a0,param_2,&DAT_1821d9d6c,&DAT_1821da804);
  puVar1 = local_a0 + local_94;
  puVar11 = local_a0;
joined_r0x0001812397d1:
  if (puVar11 == puVar1) {
    FUN_180488c50(&local_a0);
                    /* WARNING: Subroutine does not return */
    free(local_a0);
  }
  pbVar5 = (byte *)*puVar4;
  pbVar12 = (byte *)*puVar11;
  if (pbVar5 == pbVar12) {
    iVar9 = 0;
  }
  else {
    iVar9 = FUN_18048cbc0(pbVar5,pbVar12);
  }
  if (iVar9 == 0) goto LAB_1812399fd;
  local_88 = pbVar12;
  iVar9 = FUN_180493050(&local_88,0);
  if ((iVar9 == 0x2d) && (iVar9 = FUN_180493050(&local_88,1), iVar9 != 0x2d)) {
    bVar6 = true;
  }
  else {
    bVar6 = false;
  }
  if (bVar6) {
    iVar9 = 0;
LAB_181239840:
    do {
      bVar3 = *pbVar12;
      pbVar12 = pbVar12 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar12 & 0xc0) == 0x80) {
          do {
            pbVar12 = pbVar12 + 1;
          } while ((*pbVar12 & 0xc0) == 0x80);
          iVar9 = iVar9 + 1;
          goto LAB_181239840;
        }
      }
      else if (bVar3 == 0) goto LAB_18123986d;
      iVar9 = iVar9 + 1;
    } while( true );
  }
  goto LAB_181239935;
LAB_18123986d:
  if (iVar9 == 2) {
    cVar8 = FUN_180493050(puVar11,1);
    local_80 = pbVar5;
    iVar9 = FUN_180493050(&local_80,0);
    if ((iVar9 == 0x2d) && (iVar9 = FUN_180493050(&local_80,1), iVar9 != 0x2d)) {
      bVar6 = true;
    }
    else {
      bVar6 = false;
    }
    if (bVar6) {
      lVar10 = FUN_181233e10(local_38,(int)cVar8);
      FUN_180495150(&local_78,lVar10,&local_39 + -lVar10);
      bVar7 = true;
      FUN_180493050(&local_78,0);
      iVar9 = FUN_18049bc80(*puVar4);
      if (iVar9 < 0) goto LAB_1812398f9;
      bVar6 = true;
    }
    else {
LAB_1812398f9:
      bVar6 = false;
    }
    if (bVar7) {
      bVar7 = false;
      _Memory = (uint *)(local_78 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
    if (bVar6) goto LAB_1812399fd;
  }
LAB_181239935:
  local_90 = *puVar11;
  iVar9 = FUN_180493050(&local_90,0);
  if (((iVar9 == 0x2d) && (iVar9 = FUN_180493050(&local_90,1), iVar9 == 0x2d)) &&
     (iVar9 = FUN_180493050(&local_90,2), iVar9 != 0x2d)) {
    bVar6 = true;
  }
  else {
    bVar6 = false;
  }
  if ((!bVar6) || (cVar8 = FUN_181239dc0(puVar4), cVar8 == '\0')) {
    puVar11 = puVar11 + 1;
    goto joined_r0x0001812397d1;
  }
LAB_1812399fd:
  FUN_180488c50(&local_a0);
                    /* WARNING: Subroutine does not return */
  free(local_a0);
}



############ FUN_ 181239a20 size=612 ############

void FUN_181239a20(undefined8 *param_1,undefined8 param_2)

{
  ulonglong *puVar1;
  uint uVar2;
  byte bVar3;
  byte *pbVar4;
  bool bVar5;
  bool bVar6;
  char cVar7;
  int iVar8;
  longlong lVar9;
  uint *_Memory;
  byte *pbVar10;
  ulonglong *puVar11;
  undefined1 auStack_98 [32];
  ulonglong local_78;
  ulonglong *local_70;
  int local_64;
  byte *local_60;
  byte *local_58;
  longlong local_50;
  undefined8 local_48;
  undefined1 local_21;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_98;
  bVar6 = false;
  local_78 = local_78 & 0xffffffff00000000;
  FUN_18122ce30(&local_70,param_2,&DAT_1821d9d6c,&DAT_1821da804);
  puVar1 = local_70 + local_64;
  puVar11 = local_70;
joined_r0x000181239a84:
  if (puVar11 == puVar1) {
    FUN_180488c50(&local_70);
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  pbVar10 = (byte *)*puVar11;
  pbVar4 = (byte *)*param_1;
  if (pbVar4 == pbVar10) {
    iVar8 = 0;
  }
  else {
    iVar8 = FUN_18048cbc0(pbVar4,pbVar10);
  }
  if (iVar8 == 0) goto LAB_181239c9b;
  local_60 = pbVar10;
  iVar8 = FUN_180493050(&local_60,0);
  if ((iVar8 == 0x2d) && (iVar8 = FUN_180493050(&local_60,1), iVar8 != 0x2d)) {
    bVar5 = true;
  }
  else {
    bVar5 = false;
  }
  if (bVar5) {
    iVar8 = 0;
LAB_181239af2:
    do {
      bVar3 = *pbVar10;
      pbVar10 = pbVar10 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar10 & 0xc0) == 0x80) {
          do {
            pbVar10 = pbVar10 + 1;
          } while ((*pbVar10 & 0xc0) == 0x80);
          iVar8 = iVar8 + 1;
          goto LAB_181239af2;
        }
      }
      else if (bVar3 == 0) goto LAB_181239b2a;
      iVar8 = iVar8 + 1;
    } while( true );
  }
  goto LAB_181239bf4;
LAB_181239b2a:
  if (iVar8 == 2) {
    cVar7 = FUN_180493050(puVar11,1);
    local_58 = pbVar4;
    iVar8 = FUN_180493050(&local_58,0);
    if ((iVar8 == 0x2d) && (iVar8 = FUN_180493050(&local_58,1), iVar8 != 0x2d)) {
      bVar5 = true;
    }
    else {
      bVar5 = false;
    }
    if (bVar5) {
      lVar9 = FUN_181233e10(&local_20,(int)cVar7);
      FUN_180495150(&local_50,lVar9,&local_21 + -lVar9);
      bVar6 = true;
      FUN_180493050(&local_50,0);
      iVar8 = FUN_18049bc80(*param_1);
      if (iVar8 < 0) goto LAB_181239bba;
      bVar5 = true;
    }
    else {
LAB_181239bba:
      bVar5 = false;
    }
    if (bVar6) {
      bVar6 = false;
      _Memory = (uint *)(local_50 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
    if (bVar5) goto LAB_181239c9b;
  }
LAB_181239bf4:
  local_78 = *puVar11;
  iVar8 = FUN_180493050(&local_78,0);
  if (((iVar8 == 0x2d) && (iVar8 = FUN_180493050(&local_78,1), iVar8 == 0x2d)) &&
     (iVar8 = FUN_180493050(&local_78,2), iVar8 != 0x2d)) {
    bVar5 = true;
  }
  else {
    bVar5 = false;
  }
  if ((!bVar5) || (cVar7 = FUN_181239dc0(param_1), cVar7 == '\0')) {
    puVar11 = puVar11 + 1;
    goto joined_r0x000181239a84;
  }
LAB_181239c9b:
  FUN_180488c50(&local_70);
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 1812433d0 size=52 ############

void FUN_1812433d0(undefined8 *param_1)

{
  *param_1 = juce::PropertySet::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 7));
  FUN_180488c50(param_1 + 3);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 1812a3e20 size=517 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812a3e20(longlong param_1)

{
  int *piVar1;
  BOOL BVar2;
  int iVar3;
  size_t _Size;
  undefined4 *puVar4;
  int iVar5;
  ulonglong uVar6;
  undefined1 auStack_4c8 [32];
  char local_4a8;
  undefined4 local_4a4;
  undefined4 *local_4a0;
  undefined8 local_498;
  undefined2 local_490;
  undefined1 *local_488;
  undefined1 *local_480;
  void *local_478;
  undefined8 local_470;
  undefined2 local_468;
  undefined8 *local_460;
  undefined4 *local_458;
  undefined1 local_450 [8];
  undefined8 local_448;
  char local_438 [1024];
  ulonglong local_38;
  
  local_448 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4c8;
  do {
    if (*(int *)(param_1 + 0x1b8) != 0) {
    }
    piVar1 = (int *)(param_1 + 0x250);
    if (*piVar1 < 0) {
      iVar3 = -1;
    }
    else {
      iVar3 = FUN_181238c30(piVar1,param_1 + 0x278);
    }
    if (((iVar3 == 1) && (-1 < *piVar1)) && (*(char *)(param_1 + 0x254) != '\0')) {
      local_4a8 = '\x01';
      iVar3 = *piVar1;
      local_4a4 = 1;
      Ordinal_10((longlong)iVar3,0x8004667e,&local_4a4);
      iVar5 = 0;
      BVar2 = TryEnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x278));
      if (BVar2 != 0) {
        iVar3 = Ordinal_16((longlong)iVar3,local_438,0x3ff,0);
        LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x278));
        if ((0 < iVar3) && (local_4a8 != '\0')) {
          iVar5 = iVar3;
        }
      }
      if (10 < iVar5) {
        _Size = (size_t)iVar5;
        if (local_438[0] == '\0') {
          puVar4 = (undefined4 *)&DAT_1821dbf98;
        }
        else {
          uVar6 = _Size + 4 & 0xfffffffffffffffc;
          puVar4 = (undefined4 *)thunk_FUN_1811316e0(uVar6 + 0x17);
          LOCK();
          *puVar4 = 0;
          UNLOCK();
          *(ulonglong *)(puVar4 + 2) = uVar6;
          puVar4 = puVar4 + 4;
          memcpy(puVar4,local_438,_Size);
          *(undefined1 *)((longlong)puVar4 + _Size) = 0;
        }
        if ((puVar4[-4] & 0x30000000) == 0) {
          LOCK();
          puVar4[-4] = puVar4[-4] + 1;
          UNLOCK();
        }
        local_498 = 0;
        local_490 = 0;
        local_488 = &DAT_1821dbf98;
        local_480 = &DAT_1821dbf98;
        local_478 = (void *)0x0;
        local_470 = 0;
        local_468 = 0x100;
        local_460 = (undefined8 *)0x0;
        local_4a0 = puVar4;
        local_458 = puVar4;
        FUN_181248430(&local_4a0,local_450);
        if (local_460 != (undefined8 *)0x0) {
          (**(code **)*local_460)(local_460,1);
        }
        FUN_180488c50(&local_478);
                    /* WARNING: Subroutine does not return */
        free(local_478);
      }
    }
    FUN_1812a3690(param_1);
  } while( true );
}



############ FUN_ 1812b5fd0 size=132 ############

void FUN_1812b5fd0(undefined8 *param_1)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterChoice::vftable;
  plVar1 = (longlong *)param_1[0x3d];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x36);
    param_1[0x3d] = 0;
  }
  plVar1 = (longlong *)param_1[0x35];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2e);
    param_1[0x35] = 0;
  }
  FUN_180484cd0(param_1 + 0x12);
  FUN_180488c50(param_1 + 0x10);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x10]);
}



############ FUN_ 1812b75b0 size=62 ############

void FUN_1812b75b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *local_20;
  undefined8 local_18;
  
  local_20 = (void *)0x0;
  local_18 = 0;
  FUN_1812b7150(param_1,param_2,&local_20,param_4,0xfffffffffffffffe);
  FUN_180488c50(&local_20);
                    /* WARNING: Could not recover jumptable at 0x0001812b75e7. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_20);
  return;
}



############ FUN_ 1812b9f10 size=62 ############

void FUN_1812b9f10(longlong *param_1)

{
  if (*(longlong **)(*param_1 + 0x58) != (longlong *)0x0) {
    (**(code **)(**(longlong **)(*param_1 + 0x58) + 0x10))();
  }
  FUN_180488c50(param_1 + 5);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[5]);
}



############ FUN_ 1812b9fa0 size=182 ############

void FUN_1812b9fa0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,longlong *param_6,undefined1 param_7)

{
  longlong lVar1;
  undefined8 uVar2;
  void *local_20 [3];
  
  *param_1 = param_2;
  param_1[1] = param_3;
  param_1[2] = 0;
  param_1[3] = 0;
  lVar1 = *param_6;
  param_1[4] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  *(undefined1 *)(param_1 + 8) = param_7;
  FUN_18123e3a0(param_4);
  uVar2 = (**(code **)(*(longlong *)param_1[1] + 0x50))
                    ((longlong *)param_1[1],local_20,param_4,1,*(undefined1 *)(param_1 + 8));
  FUN_1812b9c40(param_1,uVar2);
  FUN_180488c50(local_20);
                    /* WARNING: Subroutine does not return */
  free(local_20[0]);
}



############ FUN_ 1812bb720 size=84 ############

void FUN_1812bb720(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  *param_1 = juce::KnownPluginList::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0x8c));
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xc));
  puVar1 = (undefined8 *)param_1[0xb];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_180488c50(param_1 + 9);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 1812be180 size=42 ############

void FUN_1812be180(undefined8 *param_1)

{
  *param_1 = juce::AudioPluginInstance::Parameter::vftable;
  FUN_180488c50(param_1 + 0xe);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0xe]);
}



############ FUN_ 1812c3fd0 size=42 ############

void FUN_1812c3fd0(undefined8 *param_1)

{
  *param_1 = juce::AudioProcessorParameter::vftable;
  FUN_180488c50(param_1 + 10);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 1812d10a0 size=181 ############

void FUN_1812d10a0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  void *local_30;
  undefined8 local_28;
  longlong local_20;
  undefined8 local_18;
  
  local_30 = (void *)0x0;
  local_28 = 0;
  FUN_18048c4c0(&local_30,*param_2,*(undefined4 *)((longlong)param_2 + 0xc),param_4,
                0xfffffffffffffffe);
  local_20 = param_2[2];
  if ((*(uint *)(local_20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_20 + -0x10) = *(int *)(local_20 + -0x10) + 1;
    UNLOCK();
  }
  local_18 = 0xffffffffffffffff;
  FUN_1812d1180(param_1,&local_30);
  *(undefined8 *)(param_1 + 0x50) = 0;
  _Memory = (uint *)(local_20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 1812d7350 size=67 ############

void FUN_1812d7350(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *local_20;
  undefined8 local_18;
  
  local_20 = (void *)0x0;
  local_18 = 0;
  FUN_1812d77b0(param_1 + -200,&local_20,param_2,param_4,0xfffffffffffffffe);
  FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
  free(local_20);
}



############ FUN_ 1812d73c0 size=67 ############

void FUN_1812d73c0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *local_20;
  undefined8 local_18;
  
  local_20 = (void *)0x0;
  local_18 = 0;
  FUN_1812d78b0(param_1 + -200,&local_20,param_2,param_4,0xfffffffffffffffe);
  FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
  free(local_20);
}



############ FUN_ 1812d7410 size=94 ############

void FUN_1812d7410(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *local_20;
  undefined8 local_18;
  
  if (*(code **)(*param_1 + 0x18) == FUN_1812d73c0) {
    local_20 = (void *)0x0;
    local_18 = 0;
    FUN_1812d78b0(param_1 + -0x19,&local_20,param_2,param_4,0xfffffffffffffffe);
    FUN_180488c50(&local_20);
                    /* WARNING: Subroutine does not return */
    free(local_20);
  }
  (**(code **)(*param_1 + 0x18))();
  return;
}



############ FUN_ 1812f2510 size=973 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812f2510(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  int iVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  void *_Memory;
  int iVar7;
  uint *puVar8;
  undefined1 *puVar9;
  undefined1 **ppuVar10;
  uint uVar11;
  undefined1 auStack_1b8 [32];
  undefined1 *local_198;
  void *local_190;
  uint local_184;
  undefined8 local_180;
  undefined1 local_178 [24];
  undefined8 *local_160;
  undefined1 *local_158;
  undefined4 local_150;
  longlong local_148 [7];
  longlong *local_110;
  void *local_108;
  undefined8 *puStack_100;
  undefined8 *local_f8;
  undefined8 *puStack_f0;
  undefined8 local_e8;
  undefined1 *local_e0;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined1 local_c8;
  uint local_c4;
  undefined1 local_c0 [136];
  ulonglong local_38;
  
  local_180 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  *(undefined8 *)(param_1 + 0x1e0) = 0xffffffffffffffff;
  plVar2 = (longlong *)(param_1 + 0x1d0);
  FUN_18051c7d0(plVar2);
  uVar11 = 0;
  if (*(int *)(param_1 + 0x1d8) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar2);
  }
  *(undefined4 *)(param_1 + 0x1d8) = 0;
  plVar5 = *(longlong **)(param_1 + 0xc0);
  if (plVar5 == (longlong *)0x0) {
  }
  (**(code **)(*plVar5 + 0x10))(plVar5,&local_190);
  if (0 < (int)local_184) {
    plVar5 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    do {
      local_158 = &DAT_1821dbf98;
      local_150 = 0;
      local_110 = (longlong *)0x0;
      local_108 = (void *)0x0;
      puStack_100 = (undefined8 *)0x0;
      local_f8 = (undefined8 *)0x0;
      puStack_f0 = (undefined8 *)0x0;
      local_e8 = 0;
      local_e0 = &DAT_1821dbf98;
      local_d8 = 0;
      local_d4 = 1;
      if (uVar11 < local_184) {
        ppuVar10 = (undefined1 **)((longlong)local_190 + (longlong)(int)uVar11 * 8);
      }
      else {
        if (*(int *)(*plVar5 + 0xc) < DAT_18267af70) {
          _Init_thread_header(&DAT_18267af70);
          if (DAT_18267af70 == -1) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
        }
        ppuVar10 = &DAT_18267af68;
      }
      if ((*(uint *)(*ppuVar10 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar1 = (int *)(*ppuVar10 + -0x10);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
      puVar9 = *ppuVar10;
      LOCK();
      UNLOCK();
      puVar8 = (uint *)(local_158 + -0x10);
      local_158 = puVar9;
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      local_198 = &DAT_1821dbf98;
      (**(code **)(**(longlong **)(param_1 + 0xc0) + 0x18))
                (*(longlong **)(param_1 + 0xc0),local_178,uVar11,&local_198);
      local_c8 = 1;
      local_c4 = uVar11;
      FUN_1812f0e30(local_c0,&local_158);
      iVar4 = *(int *)(param_1 + 0x1dc);
      iVar7 = iVar4 + 1;
      if (*(int *)(param_1 + 0x1d8) < iVar7) {
        if (iVar7 < 0) {
          iVar7 = iVar4 + 2;
        }
        FUN_18051c830(plVar2,iVar4 + 9 + (iVar7 >> 1) & 0xfffffff8);
      }
      iVar7 = *(int *)(param_1 + 0x1dc);
      *(int *)(param_1 + 0x1dc) = iVar7 + 1;
      puVar9 = (undefined1 *)((longlong)iVar7 * 0x90 + *plVar2);
      *puVar9 = local_c8;
      *(uint *)(puVar9 + 4) = local_c4;
      FUN_181348200(puVar9 + 8,local_c0);
      FUN_1804d80a0(local_c0);
      FUN_1812f2380(param_1,local_178,uVar11);
      if (local_160 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_160 + 1);
        iVar7 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar7 == 1) {
          (**(code **)*local_160)(local_160,1);
        }
      }
      FUN_18051c930(local_178);
      puVar8 = (uint *)(local_198 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      puVar8 = (uint *)(local_e0 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      if (puStack_f0 != (undefined8 *)0x0) {
        piVar1 = (int *)(puStack_f0 + 1);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*puStack_f0)(puStack_f0,1);
        }
      }
      if (local_f8 != (undefined8 *)0x0) {
        piVar1 = (int *)(local_f8 + 0x17);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*local_f8)(local_f8,1);
        }
      }
      if (puStack_100 != (undefined8 *)0x0) {
        (**(code **)*puStack_100)(puStack_100,1);
      }
      _Memory = local_108;
      if (local_108 != (void *)0x0) {
        puVar6 = *(undefined8 **)((longlong)local_108 + 0x18);
        if (puVar6 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar6 + 1);
          iVar7 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar7 == 1) {
            (**(code **)*puVar6)(puVar6,1);
          }
        }
        FUN_18051c930(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (local_110 != (longlong *)0x0) {
        (**(code **)(*local_110 + 0x20))(local_110,local_110 != local_148);
        local_110 = (longlong *)0x0;
      }
      puVar8 = (uint *)(local_158 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      uVar11 = uVar11 + 1;
    } while ((int)uVar11 < (int)local_184);
  }
  FUN_180488c50(&local_190);
                    /* WARNING: Subroutine does not return */
  free(local_190);
}



############ FUN_ 1812f2d30 size=423 ############

/* WARNING: Removing unreachable block (ram,0x0001812f2dc2) */
/* WARNING: Removing unreachable block (ram,0x0001812f2dd3) */
/* WARNING: Removing unreachable block (ram,0x0001812f2dcf) */
/* WARNING: Removing unreachable block (ram,0x0001812f2dde) */
/* WARNING: Removing unreachable block (ram,0x0001812f2deb) */

void FUN_1812f2d30(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void **ppvVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong *plVar4;
  void *pvVar5;
  undefined8 uVar6;
  void *local_48;
  undefined8 uStack_40;
  void *local_38;
  undefined8 local_30;
  
  local_38 = (void *)0x0;
  local_30 = 0;
  plVar4 = *(longlong **)(param_1 + 0x20);
  if (plVar4 != (longlong *)0x0) {
    uVar6 = (**(code **)(*plVar4 + 0x10))(plVar4,&local_48);
    FUN_1804876e0(&local_38,uVar6);
    FUN_180488c50(&local_48);
                    /* WARNING: Subroutine does not return */
    free(local_48);
  }
  ppvVar1 = (void **)(param_1 + 0x28);
  local_30 = 0;
  local_38 = (void *)0x0;
  if (*(int *)(param_1 + 0x34) != 0) {
    if (ppvVar1 != &local_38) {
      local_48 = (void *)0x0;
      uStack_40 = 0;
      FUN_18048c4c0(&local_48,0,0);
      pvVar5 = *ppvVar1;
      *ppvVar1 = local_48;
      uVar2 = *(undefined4 *)(param_1 + 0x30);
      *(undefined4 *)(param_1 + 0x30) = (undefined4)uStack_40;
      uVar3 = *(undefined4 *)(param_1 + 0x34);
      *(undefined4 *)(param_1 + 0x34) = uStack_40._4_4_;
      uStack_40 = CONCAT44(uVar3,uVar2);
      local_48 = pvVar5;
      FUN_180488c50(&local_48);
                    /* WARNING: Subroutine does not return */
      free(local_48);
    }
    uStack_40 = *(undefined8 *)(param_1 + -0x88);
    local_48 = (void *)0x0;
    FUN_181342870(param_1 + -0xb0,&local_48,1,param_4,0xfffffffffffffffe);
    (**(code **)(*(longlong *)(param_1 + -0xb0) + 0x108))(param_1 + -0xb0);
  }
  FUN_180488c50(&local_38);
                    /* WARNING: Could not recover jumptable at 0x0001812f2ed8. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_38);
  return;
}



############ FUN_ 181326020 size=198 ############

void FUN_181326020(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  char *pcVar2;
  uint *_Memory;
  longlong local_res10;
  char *local_res18;
  void *local_20 [3];
  
  FUN_1813261e0(param_1,local_20,param_3,param_4,0xfffffffffffffffe);
  pcVar2 = (char *)*param_2;
  if (*pcVar2 != '\0') {
    local_res18 = pcVar2;
    FUN_18122d7a0(local_20,pcVar2,1);
    local_res10 = *param_2;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
    FUN_180489070(local_20,0,&local_res10);
    _Memory = (uint *)(local_res10 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    FUN_1813260f0(param_1,local_20);
  }
  FUN_180488c50(local_20);
                    /* WARNING: Could not recover jumptable at 0x0001813260df. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_20[0]);
  return;
}



############ FUN_ 1813260f0 size=68 ############

void FUN_1813260f0(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  void *local_18 [2];
  
  uVar1 = FUN_1813261e0(param_1,local_18);
  FUN_18122dd20(param_2,uVar1);
  FUN_180488c50(local_18);
                    /* WARNING: Subroutine does not return */
  free(local_18[0]);
}



############ FUN_ 181326360 size=455 ############

void FUN_181326360(longlong param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  char *pcVar3;
  int iVar4;
  longlong *plVar5;
  uint *puVar6;
  longlong local_res8;
  longlong *local_res10;
  longlong local_78 [2];
  char *local_68;
  longlong local_60;
  char *local_58;
  void *local_50 [3];
  
  local_78[1] = 0xfffffffffffffffe;
  local_res10 = param_2;
  if (**(char **)(param_1 + 0x288) != '\0') {
    local_68 = *(char **)(param_1 + 0x288);
    plVar5 = (longlong *)FUN_18123fb50(param_2,local_78);
    local_60 = *param_2;
    *param_2 = *plVar5;
    *plVar5 = local_60;
    puVar6 = (uint *)(local_78[0] + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  lVar2 = *param_2;
  if (lVar2 == *(longlong *)(param_1 + 0x268)) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18048cbc0(lVar2,*(undefined8 *)(param_1 + 0x268));
  }
  if (iVar4 != 0) {
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *(longlong *)(param_1 + 0x268);
    *(longlong *)(param_1 + 0x268) = *param_2;
    UNLOCK();
    puVar6 = (uint *)(lVar2 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    FUN_1813261e0(param_1,local_50);
    pcVar3 = (char *)*param_2;
    if (*pcVar3 != '\0') {
      local_58 = pcVar3;
      FUN_18122d7a0(local_50,pcVar3,1);
      local_res8 = *param_2;
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
      FUN_180489070(local_50,0,&local_res8);
      puVar6 = (uint *)(local_res8 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      FUN_1813260f0(param_1,local_50);
    }
    FUN_180488c50(local_50);
                    /* WARNING: Subroutine does not return */
    free(local_50[0]);
  }
  puVar6 = (uint *)(*param_2 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return;
}



############ FUN_ 18132a7c0 size=786 ############

void FUN_18132a7c0(longlong *param_1)

{
  longlong lVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  undefined8 uVar5;
  undefined1 **ppuVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  uint *puVar9;
  uint uVar10;
  longlong local_res8;
  char *local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_78;
  longlong local_70;
  longlong local_68 [2];
  undefined1 local_58 [8];
  longlong local_50;
  void *local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  
  local_68[1] = 0xfffffffffffffffe;
  FUN_1812ea010(param_1[0x54],&local_res18);
  uVar5 = FUN_181248e40(&local_res18,&local_78);
  FUN_181230ba0(uVar5,&local_res10);
  puVar9 = (uint *)(local_78 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_res18 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (*local_res10 == '\0') {
    puVar9 = (uint *)(local_res10 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    return;
  }
  iVar3 = FUN_1812ebc40(param_1 + 0x26);
  uVar10 = iVar3 - 1;
  local_38 = 0;
  local_30 = 0;
  local_48 = (void *)0x0;
  local_40 = 0;
  if ((undefined **)*param_1 == juce::FileBrowserComponent::vftable) {
    FUN_18132a0d0(&local_38,&local_48);
  }
  else {
    (*(code *)((undefined **)*param_1)[0x2c])(param_1,&local_38,&local_48);
  }
  if (uVar10 < local_40._4_4_) {
    ppuVar6 = (undefined1 **)((longlong)local_48 + (longlong)(int)uVar10 * 8);
  }
  else {
    if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) +
                0xc) < DAT_18267af70) {
      _Init_thread_header(&DAT_18267af70);
      if (DAT_18267af70 == -1) {
        DAT_18267af68 = &DAT_1821dbf98;
        atexit(FUN_181a4a7b0);
        _Init_thread_footer(&DAT_18267af70);
      }
    }
    ppuVar6 = &DAT_18267af68;
  }
  if (**ppuVar6 == '\0') {
    FUN_181241890(&local_res8,&local_res10);
    while( true ) {
      puVar7 = (undefined8 *)FUN_18049a930(local_58,&local_res8);
      DVar4 = GetFileAttributesW((LPCWSTR)*puVar7);
      if (((DVar4 & 0x10) == 0) || (bVar2 = true, DVar4 == 0xffffffff)) {
        bVar2 = false;
      }
      if (bVar2) break;
      plVar8 = (longlong *)FUN_181241230(&local_res8,&local_70);
      if (*plVar8 == local_res8) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_18049bb30(*plVar8);
      }
      puVar9 = (uint *)(local_70 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      if (iVar3 == 0) goto LAB_18132aa22;
      plVar8 = (longlong *)FUN_181241230(&local_res8,local_68);
      local_50 = local_res8;
      lVar1 = *plVar8;
      *plVar8 = local_res8;
      puVar9 = (uint *)(local_68[0] + -0x10);
      local_res8 = lVar1;
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
    }
    FUN_18132bdc0(param_1,&local_res8);
LAB_18132aa22:
    puVar9 = (uint *)(local_res8 + -0x10);
    uVar10 = *puVar9;
  }
  else {
    uVar5 = FUN_181249970(&local_48,uVar10);
    FUN_181241890(&local_res20,uVar5);
    FUN_18132bdc0(param_1,&local_res20);
    puVar9 = (uint *)(local_res20 + -0x10);
    uVar10 = *puVar9;
  }
  if ((uVar10 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_180488c50(&local_48);
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 18132b0f0 size=710 ############

void FUN_18132b0f0(longlong param_1)

{
  int iVar1;
  longlong *plVar2;
  uint uVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  DWORD DVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  uint *puVar10;
  int iVar11;
  bool bVar12;
  char *local_res8;
  undefined1 local_res10 [8];
  longlong local_res18;
  undefined1 local_res20 [8];
  undefined1 local_70 [16];
  undefined8 *local_60;
  int local_58;
  int iStack_54;
  
  iVar11 = 0;
  local_60 = (undefined8 *)0x0;
  local_58 = 0;
  iStack_54 = 0;
  bVar4 = true;
  iVar6 = (**(code **)(**(longlong **)(param_1 + 0x70) + 8))();
  if (0 < iVar6) {
    do {
      (**(code **)(**(longlong **)(param_1 + 0x70) + 0x10))
                (*(longlong **)(param_1 + 0x70),&local_res8,iVar11);
      puVar8 = (undefined8 *)FUN_18049a930(local_res20,&local_res8);
      DVar7 = GetFileAttributesW((LPCWSTR)*puVar8);
      if (((DVar7 & 0x10) == 0) || (bVar12 = true, DVar7 == 0xffffffff)) {
        bVar12 = false;
      }
      if (bVar12) {
        if ((*(byte *)(param_1 + 0x40) & 8) != 0) {
          plVar2 = *(longlong **)(param_1 + 0x38);
          if (plVar2 != (longlong *)0x0) {
            cVar5 = (**(code **)(*plVar2 + 0x10))(plVar2,&local_res8);
LAB_18132b1f4:
            if (cVar5 == '\0') goto LAB_18132b301;
          }
LAB_18132b1fc:
          if (bVar4) {
            FUN_180488c50(param_1 + 0x50);
            if (*(int *)(param_1 + 0x58) != 0) {
                    /* WARNING: Subroutine does not return */
              free(*(void **)(param_1 + 0x50));
            }
            *(undefined4 *)(param_1 + 0x58) = 0;
            bVar4 = false;
          }
          iVar1 = *(int *)(param_1 + 0x5c);
          iVar6 = iVar1 + 1;
          if (*(int *)(param_1 + 0x58) < iVar6) {
            if (iVar6 < 0) {
              iVar6 = iVar1 + 2;
            }
            FUN_18048a300(param_1 + 0x50,iVar1 + 9 + (iVar6 >> 1) & 0xfffffff8);
          }
          iVar6 = *(int *)(param_1 + 0x5c);
          *(int *)(param_1 + 0x5c) = iVar6 + 1;
          *(char **)(*(longlong *)(param_1 + 0x50) + (longlong)iVar6 * 8) = local_res8;
          if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
            UNLOCK();
          }
          puVar8 = (undefined8 *)FUN_18123f170(&local_res8,local_res10,param_1 + 0x48);
          iVar6 = iStack_54 + 1;
          if (local_58 < iVar6) {
            if (iVar6 < 0) {
              iVar6 = iStack_54 + 2;
            }
            FUN_18048a300(&local_60,iStack_54 + 9 + (iVar6 >> 1) & 0xfffffff8);
          }
          iStack_54 = 1;
          *local_60 = *puVar8;
          *puVar8 = &DAT_1821dbf98;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar3 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar12 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar3;
            if (bVar12) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
        }
      }
      else {
        if ((*(byte *)(param_1 + 0x40) & 4) == 0) goto LAB_18132b301;
        if (*local_res8 == '\0') {
LAB_18132b1d6:
          bVar12 = false;
        }
        else {
          puVar8 = (undefined8 *)FUN_18049a930(local_70,&local_res8);
          DVar7 = GetFileAttributesW((LPCWSTR)*puVar8);
          bVar12 = true;
          if (DVar7 == 0xffffffff) goto LAB_18132b1d6;
        }
        if (bVar12) {
          plVar2 = *(longlong **)(param_1 + 0x38);
          if (plVar2 != (longlong *)0x0) {
            cVar5 = (**(code **)(*plVar2 + 8))(plVar2,&local_res8);
            goto LAB_18132b1f4;
          }
          goto LAB_18132b1fc;
        }
      }
LAB_18132b301:
      puVar10 = (uint *)(local_res8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      iVar11 = iVar11 + 1;
      iVar6 = (**(code **)(**(longlong **)(param_1 + 0x70) + 8))();
    } while (iVar11 < iVar6);
    if (0 < iStack_54) {
      uVar9 = FUN_18122d360(&local_60,&local_res18,&DAT_1821e2bfc);
      FUN_1812e1110(param_1 + 0x210,uVar9,0);
      puVar10 = (uint *)(local_res18 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
    }
  }
  FUN_18132b3d0(param_1 + -0xb0);
  FUN_180488c50(&local_60);
                    /* WARNING: Could not recover jumptable at 0x00018132b3b4. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_60);
  return;
}



############ FUN_ 18134f9f0 size=201 ############

void FUN_18134f9f0(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::PropertiesFile::vftable;
  param_1[0xd] = juce::PropertiesFile::vftable;
  param_1[0x14] = juce::PropertiesFile::vftable;
  FUN_181351cf0();
  FUN_180527b70(param_1 + 0x18);
  _Memory = (uint *)(param_1[0x17] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x14] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x14);
  FUN_1812a5870(param_1 + 0xd);
  *param_1 = juce::PropertySet::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 7));
  FUN_180488c50(param_1 + 3);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 18136ccc0 size=285 ############

void FUN_18136ccc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined *puVar2;
  undefined **ppuVar3;
  uint *puVar4;
  int iVar5;
  undefined8 *local_res8;
  longlong local_res10;
  void **local_res18;
  void *local_30;
  undefined8 local_28;
  
  local_res18 = &local_30;
  iVar5 = 0;
  local_30 = (void *)0x0;
  local_28 = 0;
  ppuVar3 = &PTR_DAT_18235baa0;
  puVar2 = PTR_DAT_18235baa0;
  while (puVar2 != (undefined *)0x0) {
    iVar5 = iVar5 + 1;
    ppuVar3 = ppuVar3 + 1;
    puVar2 = *ppuVar3;
  }
  local_res8 = param_1;
  FUN_18049d400(&local_30,param_2,iVar5,param_4,0xfffffffffffffffe);
  FUN_18049c4e0(&local_res10,"Windows Media");
  FUN_1812344e0(&local_res8,&local_res10);
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  *param_1 = juce::AudioFormat::vftable;
  param_1[1] = local_res8;
  if ((*(uint *)(local_res8 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -2) = *(int *)(local_res8 + -2) + 1;
    UNLOCK();
  }
  param_1[2] = 0;
  param_1[3] = 0;
  FUN_18048c4c0(param_1 + 2,local_30,local_28._4_4_);
  puVar4 = (uint *)(local_res8 + -2);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 1813b0070 size=142 ############

void FUN_1813b0070(undefined8 *param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  
  *param_1 = juce::AudioFormat::vftable;
  lVar2 = *param_2;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = 0;
  param_1[3] = 0;
  FUN_18048c4c0(param_1 + 2,*param_3,*(undefined4 *)((longlong)param_3 + 0xc));
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180488c50(param_3);
                    /* WARNING: Subroutine does not return */
  free((void *)*param_3);
}



############ FUN_ 1813b9e20 size=261 ############

void FUN_1813b9e20(longlong *param_1,undefined1 param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  uint uVar2;
  bool bVar3;
  int iVar4;
  longlong *plVar5;
  longlong *plVar6;
  uint *puVar7;
  void *pvVar8;
  longlong local_res8;
  longlong local_res20;
  void *local_30;
  int local_24;
  
  (**(code **)(*param_1 + 8))(param_1,&local_30,param_2,param_4,0xfffffffffffffffe);
  pvVar1 = (void *)((longlong)local_30 + (longlong)local_24 * 8);
  pvVar8 = local_30;
  while( true ) {
    if (pvVar8 == pvVar1) {
      FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
      free(local_30);
    }
    plVar5 = (longlong *)FUN_181248e40(param_3,&local_res20);
    plVar6 = (longlong *)FUN_181248e40(pvVar8,&local_res8);
    if ((*plVar6 == *plVar5) || (iVar4 = FUN_18049bb30(*plVar6), iVar4 == 0)) {
      bVar3 = true;
    }
    else {
      bVar3 = false;
    }
    puVar7 = (uint *)(local_res8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_res20 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (bVar3) break;
    pvVar8 = (void *)((longlong)pvVar8 + 8);
  }
  FUN_180488c50(&local_30);
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 1813b8df0 size=275 ############

void FUN_1813b8df0(longlong param_1,undefined8 *param_2)

{
  undefined4 uVar1;
  longlong *plVar2;
  undefined8 uVar3;
  void *local_20 [3];
  
  uVar3 = 0xfffffffffffffffe;
  plVar2 = (longlong *)FUN_1813b89b0();
  if (plVar2 != (longlong *)0x0) {
    if ((0 < *(int *)(param_1 + 0xf4)) && (*(char *)*param_2 == '\0')) {
      uVar3 = (**(code **)(*plVar2 + 8))(plVar2,local_20,0,*plVar2,uVar3);
      uVar1 = (**(code **)(*plVar2 + 0x10))(plVar2,0);
      uVar3 = FUN_181249970(uVar3,uVar1);
      FUN_181249460(param_2,uVar3);
      FUN_180488c50(local_20);
                    /* WARNING: Subroutine does not return */
      free(local_20[0]);
    }
    if ((0 < *(int *)(param_1 + 0xf0)) && (*(char *)param_2[1] == '\0')) {
      uVar3 = (**(code **)(*plVar2 + 8))(plVar2,local_20,1);
      uVar1 = (**(code **)(*plVar2 + 0x10))(plVar2,1);
      uVar3 = FUN_181249970(uVar3,uVar1);
      FUN_181249460(param_2 + 1,uVar3);
      FUN_180488c50(local_20);
                    /* WARNING: Subroutine does not return */
      free(local_20[0]);
    }
  }
  return;
}



############ FUN_ 1813b9a70 size=446 ############

void FUN_1813b9a70(longlong param_1,undefined8 param_2,undefined8 *param_3,longlong param_4)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined1 *puVar5;
  char cVar6;
  uint *_Memory;
  longlong *plVar7;
  undefined1 auStack_138 [32];
  longlong *local_118;
  int local_10c;
  undefined8 local_f8;
  longlong local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined1 *local_c8;
  undefined1 *local_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined4 local_88;
  undefined1 local_84;
  undefined1 local_80;
  void *local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined4 local_58;
  undefined1 local_54;
  undefined1 local_50;
  ulonglong local_48;
  
  local_e0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_138;
  local_c8 = &DAT_1821dbf98;
  local_c0 = &DAT_1821dbf98;
  local_b8 = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_90 = 4;
  local_88 = 0xffffffff;
  local_84 = 0;
  local_a0 = 0;
  local_98 = 0;
  local_80 = 1;
  local_78 = (void *)0x0;
  local_60 = 4;
  local_58 = 0xffffffff;
  local_54 = 0;
  local_70 = 0;
  local_68 = 0;
  local_50 = 1;
  local_f8 = param_2;
  local_f0 = param_1;
  local_e8 = param_2;
  if (param_4 == 0) {
    if ((*(char *)*param_3 != '\0') &&
       (puVar4 = *(undefined8 **)(param_1 + 0x38), puVar4 != puVar4 + *(int *)(param_1 + 0x44))) {
      (**(code **)(*(longlong *)*puVar4 + 8))((longlong *)*puVar4,&local_118,0);
      plVar2 = local_118 + local_10c;
      plVar7 = local_118;
      do {
        if (plVar7 == plVar2) {
LAB_1813b9bf0:
          FUN_180488c50(&local_118);
                    /* WARNING: Subroutine does not return */
          free(local_118);
        }
        local_e8 = *param_3;
        cVar6 = FUN_18049aaa0(local_e8,*plVar7,1);
        if (cVar6 != '\0') {
          if ((*(uint *)(*plVar7 + -0x10) & 0x30000000) == 0) {
            LOCK();
            piVar1 = (int *)(*plVar7 + -0x10);
            *piVar1 = *piVar1 + 1;
            UNLOCK();
          }
          puVar5 = (undefined1 *)*plVar7;
          LOCK();
          UNLOCK();
          _Memory = (uint *)(local_c8 + -0x10);
          local_c8 = puVar5;
          if ((*_Memory & 0x30000000) == 0) {
            LOCK();
            uVar3 = *_Memory;
            *_Memory = *_Memory - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          goto LAB_1813b9bf0;
        }
        plVar7 = plVar7 + 1;
      } while( true );
    }
  }
  else {
    FUN_180549c30(&local_c8,param_4);
  }
  FUN_1813b8df0(param_1,&local_c8);
  FUN_1813b8160(param_1,param_2,&local_c8,0);
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 1813bd070 size=323 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813bd070(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  uint uVar5;
  longlong lVar6;
  char *pcVar7;
  int *_Memory;
  uint *_Memory_00;
  
  plVar1 = (longlong *)(param_1 + 0xc0);
  pcVar7 = (char *)*plVar1;
  if (*pcVar7 != '\0') {
    lVar2 = param_1 + 200;
    lVar3 = param_1 + 0xd8;
    if ((*(uint *)(pcVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar7 + -0x10) = *(int *)(pcVar7 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar6 = *plVar1;
    *plVar1 = *plVar1;
    UNLOCK();
    _Memory = (int *)(lVar6 + -0x10);
    if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar4 = *_Memory;
      *_Memory = *_Memory + -1;
      UNLOCK();
      if (iVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if (lVar2 == 0) {
      FUN_180488c50(0);
      if (*(int *)(param_1 + 0xd0) != 0) {
                    /* WARNING: Subroutine does not return */
        free(_DAT_00000000);
      }
      *(undefined4 *)(param_1 + 0xd0) = 0;
    }
    else {
      FUN_18122ddb0(lVar2,lVar2);
    }
    if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_DAT_00000000);
    }
    FUN_18123a8e0(lVar3,lVar3);
    *(undefined1 *)(param_1 + 0xb8) = 0;
    if (*(longlong *)(*(longlong *)(param_1 + 0xb0) + 0xc0) == 0) {
      FUN_1813bd1d0(param_1);
    }
    FUN_18055b020(*(undefined8 *)(param_1 + 0xb0),plVar1,lVar2,lVar3);
    _Memory_00 = (uint *)(*plVar1 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *_Memory_00;
      *_Memory_00 = *_Memory_00 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
    }
    *plVar1 = (longlong)&DAT_1821dbf98;
  }
  return;
}



############ FUN_ 1813bd500 size=273 ############

void FUN_1813bd500(longlong param_1,longlong *param_2,longlong param_3,longlong param_4)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(*param_2 + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *(longlong *)(param_1 + 0xc0);
  *(longlong *)(param_1 + 0xc0) = *param_2;
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if (param_3 == 0) {
    FUN_180488c50(param_1 + 200);
    if (*(int *)(param_1 + 0xd0) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 200));
    }
    *(undefined4 *)(param_1 + 0xd0) = 0;
  }
  else {
    FUN_18122ddb0(param_1 + 200,param_3);
  }
  if (param_4 != 0) {
    FUN_18123a8e0(param_1 + 0xd8,param_4);
    *(undefined1 *)(param_1 + 0xb8) = 0;
    if (*(longlong *)(*(longlong *)(param_1 + 0xb0) + 0xc0) == 0) {
      FUN_1813bd1d0(param_1);
    }
    FUN_18055b020(*(undefined8 *)(param_1 + 0xb0),param_2,param_3,param_4);
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0xd8));
}



############ FUN_ 1814fcf00 size=152 ############

void FUN_1814fcf00(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = CloudyComboBoxRadioButtons::vftable;
  param_1[0x16] = CloudyComboBoxRadioButtons::vftable;
  param_1[0x19] = CloudyComboBoxRadioButtons::vftable;
  param_1[0x1b] = CloudyComboBoxRadioButtons::vftable;
  FUN_1811bc940(param_1[0x1f],param_1 + 0x1b,param_3,param_4,0xfffffffffffffffe);
  FUN_1805826a0(param_1 + 0x26);
  FUN_1805826a0(param_1 + 0x22);
  FUN_180488c50(param_1 + 0x20);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x20]);
}



############ FUN_ 181a4a7e0 size=47 ############

void FUN_181a4a7e0(void)

{
  DeleteCriticalSection((LPCRITICAL_SECTION)&DAT_18267afa0);
  FUN_180488c50(&DAT_18267af90);
                    /* WARNING: Could not recover jumptable at 0x000181a4a808. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(DAT_18267af90);
  return;
}



############ FUN_ 181a4a850 size=34 ############

void FUN_181a4a850(void)

{
  FUN_180488c50(&DAT_182673a20);
                    /* WARNING: Could not recover jumptable at 0x000181a4a86b. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(DAT_182673a20);
  return;
}



############ FUN_ 181231160 size=428 ############

longlong FUN_181231160(undefined8 *param_1,byte *param_2)

{
  byte bVar1;
  wint_t wVar2;
  wint_t wVar3;
  uint uVar4;
  byte *pbVar5;
  int iVar6;
  uint uVar7;
  longlong lVar8;
  byte *pbVar9;
  longlong lVar10;
  byte *pbVar11;
  
  pbVar5 = (byte *)*param_1;
  lVar10 = -1;
  lVar8 = -1;
  do {
    lVar8 = lVar8 + 1;
  } while (pbVar5[lVar8] != 0);
  pbVar9 = pbVar5 + lVar8;
  do {
    lVar10 = lVar10 + 1;
  } while (param_2[lVar10] != 0);
  pbVar11 = param_2 + lVar10;
  if (pbVar5 < pbVar9) {
    do {
      if (pbVar11 <= param_2) break;
      iVar6 = 0;
      do {
        pbVar5 = pbVar9 + -1;
        pbVar9 = pbVar9 + -1;
        if ((*pbVar5 & 0xc0) != 0x80) break;
        iVar6 = iVar6 + 1;
      } while (iVar6 < 4);
      iVar6 = 0;
      do {
        pbVar5 = pbVar11 + -1;
        pbVar11 = pbVar11 + -1;
        if ((*pbVar5 & 0xc0) != 0x80) break;
        iVar6 = iVar6 + 1;
      } while (iVar6 < 4);
      bVar1 = *pbVar9;
      wVar2 = (wint_t)bVar1;
      if ((char)bVar1 < '\0') {
        uVar4 = 0x40;
        iVar6 = 0;
        uVar7 = 0x7f;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar4 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar6 = iVar6 + 1;
            uVar4 = uVar4 >> 1;
          } while ((bVar1 & uVar4) != 0);
        }
        uVar7 = bVar1 & uVar7;
        wVar2 = (wint_t)uVar7;
        lVar8 = 1;
        if (0 < (longlong)iVar6) {
          do {
            wVar2 = (wint_t)uVar7;
            if ((pbVar9[lVar8] & 0xc0) != 0x80) break;
            uVar7 = pbVar9[lVar8] & 0x3f | uVar7 << 6;
            wVar2 = (wint_t)uVar7;
            lVar8 = lVar8 + 1;
          } while (lVar8 <= iVar6);
        }
      }
      wVar2 = towlower(wVar2);
      bVar1 = *pbVar11;
      wVar3 = (wint_t)bVar1;
      if ((char)bVar1 < '\0') {
        uVar4 = 0x40;
        iVar6 = 0;
        uVar7 = 0x7f;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar4 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar6 = iVar6 + 1;
            uVar4 = uVar4 >> 1;
          } while ((bVar1 & uVar4) != 0);
        }
        uVar7 = bVar1 & uVar7;
        wVar3 = (wint_t)uVar7;
        lVar8 = 1;
        if (0 < (longlong)iVar6) {
          do {
            wVar3 = (wint_t)uVar7;
            if ((pbVar11[lVar8] & 0xc0) != 0x80) break;
            uVar7 = pbVar11[lVar8] & 0x3f | uVar7 << 6;
            wVar3 = (wint_t)uVar7;
            lVar8 = lVar8 + 1;
          } while (lVar8 <= iVar6);
        }
      }
      wVar3 = towlower(wVar3);
      pbVar5 = (byte *)(ulonglong)wVar3;
      if (wVar2 != wVar3) {
        return (ulonglong)(byte)(wVar3 >> 8) << 8;
      }
    } while ((byte *)*param_1 < pbVar9);
  }
  return CONCAT71((int7)((ulonglong)pbVar5 >> 8),pbVar11 == param_2);
}



############ FUN_ 181230800 size=216 ############

undefined8 * FUN_181230800(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte *pbVar2;
  byte bVar3;
  byte bVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  longlong lVar8;
  byte *pbVar9;
  
  pbVar2 = (byte *)*param_1;
  if (*pbVar2 != 0) {
    lVar8 = -1;
    do {
      lVar8 = lVar8 + 1;
    } while (pbVar2[lVar8] != 0);
    pbVar9 = pbVar2 + lVar8;
    pbVar7 = pbVar9;
    if (pbVar2 < pbVar9) {
      do {
        iVar5 = 0;
        do {
          pbVar6 = pbVar7;
          pbVar7 = pbVar6 + -1;
          if ((pbVar6[-1] & 0xc0) != 0x80) break;
          iVar5 = iVar5 + 1;
        } while (iVar5 < 4);
        if ((*pbVar7 != 0x20) && (4 < (byte)(*pbVar7 - 9))) {
          bVar1 = *pbVar7;
          pbVar7 = pbVar6;
          if ((char)bVar1 < '\0') {
            bVar4 = 0x40;
            bVar3 = bVar1 & 0x40;
            while ((bVar3 != 0 && (8 < bVar4))) {
              pbVar7 = pbVar7 + 1;
              bVar4 = bVar4 >> 1;
              bVar3 = bVar1 & bVar4;
            }
          }
          break;
        }
      } while (pbVar2 < pbVar7);
      if (pbVar7 < pbVar9) {
        FUN_18124a8a0(param_2,pbVar2);
        return param_2;
      }
    }
  }
  *param_2 = pbVar2;
  if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 180493050 size=217 ############

uint FUN_180493050(undefined8 *param_1,int param_2)

{
  byte *pbVar1;
  byte bVar2;
  byte bVar3;
  byte *pbVar4;
  byte bVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  ulonglong uVar9;
  int iVar10;
  longlong lVar11;
  
  pbVar4 = (byte *)*param_1;
  iVar10 = 0;
  lVar11 = 1;
  if (param_2 < 0) {
    if (param_2 + 1 < 1) {
      uVar9 = (ulonglong)(1 - (param_2 + 1));
      do {
        iVar7 = 0;
        do {
          pbVar1 = pbVar4 + -1;
          pbVar4 = pbVar4 + -1;
          if ((*pbVar1 & 0xc0) != 0x80) break;
          iVar7 = iVar7 + 1;
        } while (iVar7 < 4);
        uVar9 = uVar9 - 1;
      } while (uVar9 != 0);
    }
  }
  else {
    while (param_2 = param_2 + -1, -1 < param_2) {
      bVar2 = *pbVar4;
      pbVar4 = pbVar4 + 1;
      if ((char)bVar2 < '\0') {
        bVar5 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar5))) {
          pbVar4 = pbVar4 + 1;
          bVar5 = bVar5 >> 1;
          bVar3 = bVar2 & bVar5;
        }
      }
    }
  }
  bVar2 = *pbVar4;
  if (-1 < (char)bVar2) {
    return (uint)bVar2;
  }
  uVar6 = 0x40;
  uVar8 = 0x7f;
  if ((bVar2 & 0x40) != 0) {
    do {
      if (uVar6 < 9) break;
      uVar8 = uVar8 >> 1;
      iVar10 = iVar10 + 1;
      uVar6 = uVar6 >> 1;
    } while ((bVar2 & uVar6) != 0);
  }
  uVar8 = bVar2 & uVar8;
  if (0 < (longlong)iVar10) {
    do {
      if ((pbVar4[lVar11] & 0xc0) != 0x80) {
        return uVar8;
      }
      uVar8 = pbVar4[lVar11] & 0x3f | uVar8 << 6;
      lVar11 = lVar11 + 1;
    } while (lVar11 <= iVar10);
  }
  return uVar8;
}



############ FUN_ 1812327b0 size=159 ############

int FUN_1812327b0(undefined8 *param_1,uint param_2)

{
  byte bVar1;
  byte *pbVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  
  pbVar2 = (byte *)*param_1;
  iVar7 = 0;
  iVar6 = -1;
  bVar1 = *pbVar2;
  do {
    if (bVar1 == 0) {
      return iVar6;
    }
    pbVar2 = pbVar2 + 1;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar3 = 0x40;
      iVar5 = 0;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar3 < 9) break;
          uVar4 = uVar4 >> 1;
          iVar5 = iVar5 + 1;
          uVar3 = uVar3 >> 1;
        } while ((bVar1 & uVar3) != 0);
      }
      uVar4 = bVar1 & uVar4;
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*pbVar2 & 0xc0) == 0x80)); pbVar2 = pbVar2 + 1) {
        uVar4 = *pbVar2 & 0x3f | uVar4 << 6;
      }
    }
    bVar1 = *pbVar2;
    if (uVar4 == param_2) {
      iVar6 = iVar7;
    }
    iVar7 = iVar7 + 1;
  } while( true );
}



############ FUN_ 18049bc80 size=143 ############

int FUN_18049bc80(byte *param_1,uint param_2)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  
  bVar1 = *param_1;
  iVar5 = 0;
  do {
    if (bVar1 == 0) {
      return -1;
    }
    param_1 = param_1 + 1;
    uVar3 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar2 = 0x40;
      iVar4 = 0;
      uVar3 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar2 < 9) break;
          uVar3 = uVar3 >> 1;
          iVar4 = iVar4 + 1;
          uVar2 = uVar2 >> 1;
        } while ((bVar1 & uVar2) != 0);
      }
      uVar3 = bVar1 & uVar3;
      for (; (iVar4 = iVar4 + -1, -1 < iVar4 && ((*param_1 & 0xc0) == 0x80)); param_1 = param_1 + 1)
      {
        uVar3 = *param_1 & 0x3f | uVar3 << 6;
      }
    }
    if (uVar3 == param_2) {
      return iVar5;
    }
    bVar1 = *param_1;
    iVar5 = iVar5 + 1;
  } while( true );
}



############ FUN_ 1812490c0 size=260 ############

undefined8 * FUN_1812490c0(undefined8 *param_1,undefined8 *param_2,int param_3,int param_4)

{
  byte bVar1;
  byte *pbVar2;
  byte bVar3;
  byte bVar4;
  byte *pbVar5;
  int iVar6;
  
  iVar6 = 0;
  if (param_3 < 0) {
    param_3 = 0;
  }
  if (param_4 <= param_3) {
    *param_2 = &DAT_1821dbf98;
    return param_2;
  }
  pbVar2 = (byte *)*param_1;
  pbVar5 = pbVar2;
  if (0 < param_3) {
    do {
      bVar1 = *pbVar5;
      if (bVar1 == 0) {
        *param_2 = &DAT_1821dbf98;
        return param_2;
      }
      iVar6 = iVar6 + 1;
      pbVar5 = pbVar5 + 1;
      if ((char)bVar1 < '\0') {
        bVar4 = 0x40;
        bVar3 = bVar1 & 0x40;
        while ((bVar3 != 0 && (8 < bVar4))) {
          pbVar5 = pbVar5 + 1;
          bVar4 = bVar4 >> 1;
          bVar3 = bVar1 & bVar4;
        }
      }
    } while (iVar6 < param_3);
  }
  do {
    if (param_4 <= iVar6) {
LAB_18124916a:
      FUN_18124a8a0(param_2);
      return param_2;
    }
    bVar1 = *pbVar5;
    if (bVar1 == 0) {
      if (param_3 == 0) {
        *param_2 = pbVar2;
        if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) != 0) {
          return param_2;
        }
        LOCK();
        *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
        UNLOCK();
        return param_2;
      }
      goto LAB_18124916a;
    }
    iVar6 = iVar6 + 1;
    pbVar5 = pbVar5 + 1;
    if ((char)bVar1 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar1 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar5 = pbVar5 + 1;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar1 & bVar4;
      }
    }
  } while( true );
}



############ FUN_ 18128e510 size=15 ############

void FUN_18128e510(undefined8 param_1,undefined8 param_2)

{
  FUN_18123fe10(param_2,&DAT_1821def3c);
  return;
}



############ FUN_ 1812562b0 size=15 ############

void FUN_1812562b0(undefined8 param_1,undefined8 param_2)

{
  FUN_18123fe10(param_2,&DAT_1821df0b4);
  return;
}



############ FUN_ 1812710a0 size=15 ############

void FUN_1812710a0(undefined8 param_1,undefined8 param_2)

{
  FUN_18123fe10(param_2,"jpeg;jpg");
  return;
}



############ FUN_ 180546380 size=365 ############

void FUN_180546380(longlong param_1)

{
  undefined8 *puVar1;
  int iVar2;
  undefined2 local_res8 [4];
  undefined2 local_res10 [4];
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  longlong *local_58;
  longlong *local_50;
  longlong *local_48;
  longlong *local_40;
  undefined8 local_38;
  undefined8 local_30;
  
  local_30 = 0xfffffffffffffffe;
  local_40 = (longlong *)0x0;
  puVar1 = *(undefined8 **)(param_1 + 0x68);
  if (puVar1 != (undefined8 *)0x0) {
    local_40 = (longlong *)0x0;
    iVar2 = (**(code **)*puVar1)(puVar1,&DAT_1824aca88,&local_40);
    if (-1 < iVar2) {
      local_38 = 0;
      local_res8[0] = 8;
      local_res10[0] = 0;
      (**(code **)(*local_40 + 0x28))
                (local_40,local_res10,L"Duration",local_res20,&local_38,local_res8);
      local_48 = (longlong *)0x0;
      puVar1 = *(undefined8 **)(param_1 + 0x68);
      if (puVar1 != (undefined8 *)0x0) {
        local_48 = (longlong *)0x0;
        iVar2 = (**(code **)*puVar1)(puVar1,&DAT_1824acae8,&local_48);
        if (-1 < iVar2) {
          local_50 = (longlong *)0x0;
          iVar2 = (**(code **)(*local_48 + 0x48))(local_48,0,&local_50);
          if (-1 < iVar2) {
            local_58 = (longlong *)0x0;
            if (local_50 != (longlong *)0x0) {
              local_58 = (longlong *)0x0;
              iVar2 = (**(code **)*local_50)(local_50,&DAT_1824ad290,&local_58);
              if (-1 < iVar2) {
                (**(code **)(*local_58 + 0x20))(local_58,0,local_res18);
                    /* WARNING: Subroutine does not return */
                free((void *)0x0);
              }
            }
            if (local_58 != (longlong *)0x0) {
              (**(code **)(*local_58 + 0x10))(local_58);
            }
          }
          if (local_50 != (longlong *)0x0) {
            (**(code **)(*local_50 + 0x10))();
          }
        }
      }
      if (local_48 != (longlong *)0x0) {
        (**(code **)(*local_48 + 0x10))(local_48);
      }
    }
  }
  if (local_40 != (longlong *)0x0) {
    (**(code **)(*local_40 + 0x10))(local_40);
  }
  return;
}



############ FUN_ 1812498b0 size=173 ############

int FUN_1812498b0(longlong *param_1,undefined8 param_2,char param_3,int param_4)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  if (param_4 < 0) {
    param_4 = 0;
  }
  if (param_3 == '\0') {
    if (param_4 < iVar1) {
      lVar3 = (longlong)param_4;
      puVar4 = (undefined8 *)(*param_1 + lVar3 * 8);
      do {
        iVar2 = FUN_18048cbc0(param_2,*puVar4);
        if (iVar2 == 0) {
          return param_4;
        }
        param_4 = param_4 + 1;
        lVar3 = lVar3 + 1;
        puVar4 = puVar4 + 1;
      } while (lVar3 < iVar1);
    }
  }
  else {
    for (; param_4 < iVar1; param_4 = param_4 + 1) {
      iVar2 = FUN_18049bb30(*(undefined8 *)(*param_1 + (longlong)param_4 * 8),param_2);
      if (iVar2 == 0) {
        return param_4;
      }
    }
  }
  return -1;
}



############ FUN_ 181249970 size=142 ############

undefined8 * FUN_181249970(longlong *param_1,uint param_2)

{
  if (param_2 < *(uint *)((longlong)param_1 + 0xc)) {
    return (undefined8 *)(*param_1 + (longlong)(int)param_2 * 8);
  }
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267af70) {
    _Init_thread_header(&DAT_18267af70);
    if (DAT_18267af70 == -1) {
      DAT_18267af68 = &DAT_1821dbf98;
      atexit(FUN_181a4a7b0);
      _Init_thread_footer(&DAT_18267af70);
      return &DAT_18267af68;
    }
  }
  return &DAT_18267af68;
}



############ FUN_ 181234570 size=125 ############

undefined8 FUN_181234570(longlong param_1,undefined8 param_2,undefined8 *param_3,undefined8 param_4)

{
  int iVar1;
  
  if ((*(longlong *)(param_1 + 0x40) != 0) &&
     (iVar1 = FUN_1812498b0(param_1 + 0x18,*param_3,*(undefined1 *)(param_1 + 0x38),0), iVar1 < 0))
  {
    FUN_181234570(*(undefined8 *)(param_1 + 0x40),param_2,param_3,param_4);
    return param_2;
  }
  FUN_18122c970(param_1 + 0x18,param_2,*param_3,param_4);
  return param_2;
}



############ FUN_ 1813ae0b0 size=139 ############

longlong * FUN_1813ae0b0(longlong *param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  
  *param_1 = param_3;
  lVar1 = param_3;
  if (param_3 < param_3 + 0x8000) {
    lVar1 = param_3 + 0x8000;
  }
  param_1[1] = lVar1;
  FUN_180535db0(param_1 + 2,*(undefined4 *)(param_2 + 0x20),0x8000);
  FUN_1813af530(param_2,param_1 + 2,0,0x8000,param_3);
  return param_1;
}



############ FUN_ 1812b2fd0 size=20 ############

undefined8 FUN_1812b2fd0(undefined8 param_1)

{
  FUN_1804d5400();
  return param_1;
}



############ FUN_ 181370220 size=2029 ############

ulonglong FUN_181370220(longlong *param_1,longlong param_2)

{
  byte *pbVar1;
  char *pcVar2;
  longlong lVar3;
  longlong lVar4;
  char cVar5;
  int iVar6;
  longlong lVar7;
  ulonglong uVar8;
  uint uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  int iVar13;
  uint uVar14;
  longlong *plVar15;
  ulonglong uVar16;
  longlong lVar17;
  longlong lVar18;
  bool bVar19;
  longlong local_res18;
  ulonglong local_res20;
  longlong local_70;
  undefined8 local_68;
  longlong local_58;
  
  uVar14 = *(uint *)(param_1 + 0x10);
  uVar16 = (ulonglong)uVar14;
  lVar18 = param_2;
  if ((1 < (int)uVar14) && ((int)param_1[1] != 0)) {
    uVar9 = *(uint *)(param_1 + 8);
    uVar8 = (ulonglong)uVar9;
    if (-1 < (int)uVar9) {
      lVar17 = 0;
      iVar13 = 0;
      if (0 < (int)uVar9) {
        do {
          lVar7 = FUN_181371270(param_1,iVar13);
          uVar14 = (uint)uVar16;
          lVar17 = lVar17 + lVar7;
          iVar13 = iVar13 + 1;
        } while (iVar13 < (int)uVar8);
      }
      goto LAB_18137027f;
    }
  }
  lVar17 = -0x83;
LAB_18137027f:
  if ((int)uVar14 < 2) {
    return 0xffffff7d;
  }
  if ((int)param_1[1] == 0) {
    return 0xffffff76;
  }
  if (lVar18 < 0) {
    return 0xffffff7d;
  }
  if (lVar17 < lVar18) {
    return 0xffffff7d;
  }
  iVar13 = (int)param_1[8] + -1;
  if (-1 < iVar13) {
    lVar7 = (longlong)iVar13;
    plVar15 = (longlong *)(param_1[0xc] + 8 + lVar7 * 0x10);
    do {
      lVar17 = lVar17 - *plVar15;
      if (lVar17 <= lVar18) break;
      iVar13 = iVar13 + -1;
      plVar15 = plVar15 + -2;
      lVar7 = lVar7 + -1;
    } while (-1 < lVar7);
  }
  uVar16 = *(ulonglong *)(param_1[9] + (longlong)(iVar13 + 1) * 8);
  uVar8 = *(ulonglong *)(param_1[9] + (longlong)iVar13 * 8);
  lVar7 = *(longlong *)(param_1[0xc] + (longlong)(iVar13 * 2) * 8);
  lVar18 = (lVar7 - lVar17) + lVar18;
  local_res18 = *(longlong *)(param_1[0xc] + (longlong)(iVar13 * 2 + 1) * 8) + lVar7;
  local_res20 = uVar8;
  if ((longlong)uVar8 < (longlong)uVar16) {
    do {
      uVar11 = uVar8;
      if ((0xffff < (longlong)(uVar16 - uVar8)) &&
         (uVar11 = (longlong)
                   (((double)(lVar18 - lVar7) * (double)(longlong)(uVar16 - uVar8)) /
                   (double)(local_res18 - lVar7)) + -0x10000 + uVar8,
         (longlong)uVar11 < (longlong)(uVar8 + 0x10000))) {
        uVar11 = uVar8;
      }
      if (uVar11 != param_1[2]) {
        if (*param_1 == 0) {
          iVar6 = -0x81;
        }
        else if (((code *)param_1[0x66] == (code *)0x0) ||
                (iVar6 = (*(code *)param_1[0x66])(*param_1,uVar11,0), iVar6 == -1)) {
          iVar6 = -0x80;
        }
        else {
          param_1[2] = uVar11;
          iVar6 = 0;
          *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
          *(undefined8 *)((longlong)param_1 + 0x34) = 0;
          *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
        }
        uVar10 = (ulonglong)iVar6;
        if (iVar6 != 0) goto LAB_1813707fa;
      }
LAB_181370430:
      uVar10 = FUN_1813730a0(param_1,&local_70,uVar16 - param_1[2]);
      if (uVar10 == 0xffffffffffffff80) goto LAB_1813707fa;
      if ((longlong)uVar10 < 0) {
        if ((longlong)uVar11 <= (longlong)(uVar8 + 1)) break;
        if (uVar11 == 0) goto LAB_1813707fa;
        uVar12 = uVar11 - 0x10000;
        if ((longlong)(uVar11 - 0x10000) <= (longlong)uVar8) {
          uVar12 = uVar8 + 1;
        }
        if (*param_1 == 0) {
          iVar6 = -0x81;
        }
        else if (((code *)param_1[0x66] == (code *)0x0) ||
                (iVar6 = (*(code *)param_1[0x66])(*param_1,uVar12,0), iVar6 == -1)) {
          iVar6 = -0x80;
        }
        else {
          iVar6 = 0;
          param_1[2] = uVar12;
          *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
          *(undefined8 *)((longlong)param_1 + 0x34) = 0;
          *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
        }
LAB_1813705a5:
        uVar10 = (ulonglong)iVar6;
        uVar11 = uVar12;
        if (iVar6 != 0) goto LAB_1813707fa;
LAB_1813705b0:
        if ((longlong)uVar16 <= (longlong)uVar8) break;
        goto LAB_181370430;
      }
      if ((*(int *)(local_70 + 0xe) != *(int *)(param_1[0xb] + (longlong)iVar13 * 4)) ||
         (lVar3 = *(longlong *)(local_70 + 6), lVar3 == -1)) goto LAB_1813705b0;
      if (lVar3 < lVar18) {
        uVar8 = param_1[2];
        uVar11 = uVar8;
        lVar7 = lVar3;
        lVar4 = local_res18;
        local_res20 = uVar10;
        if (0xac44 < lVar18 - lVar3) goto LAB_1813705d3;
        goto LAB_1813705b0;
      }
      if ((longlong)uVar11 <= (longlong)(uVar8 + 1)) break;
      bVar19 = uVar16 == param_1[2];
      uVar16 = uVar11;
      lVar4 = lVar3;
      if (bVar19) {
        uVar12 = uVar11 - 0x10000;
        if ((longlong)(uVar11 - 0x10000) <= (longlong)uVar8) {
          uVar12 = uVar8 + 1;
        }
        iVar6 = FUN_1813731b0(param_1,uVar12);
        uVar16 = uVar10;
        goto LAB_1813705a5;
      }
LAB_1813705d3:
      local_res18 = lVar4;
    } while ((longlong)uVar8 < (longlong)uVar16);
  }
  iVar6 = FUN_1813731b0(param_1,local_res20);
  uVar10 = (ulonglong)iVar6;
  param_1[0xf] = -1;
  if ((iVar6 == 0) &&
     (uVar10 = FUN_1813730a0(param_1,&local_70,0xffffffffffffffff), -1 < (longlong)uVar10)) {
    if (iVar13 == (int)param_1[0x11]) {
      FUN_18138f730(param_1 + 0x43);
    }
    else {
      FUN_181371c60(param_1);
      *(int *)(param_1 + 0x11) = iVar13;
      *(undefined4 *)((longlong)param_1 + 0x84) =
           *(undefined4 *)(param_1[0xb] + (longlong)iVar13 * 4);
      *(undefined4 *)(param_1 + 0x10) = 3;
    }
    *(undefined4 *)((longlong)param_1 + 0x204) = 0xffffffff;
    *(undefined8 *)((longlong)param_1 + 0xac) = 0;
    *(undefined8 *)((longlong)param_1 + 0xcc) = 0;
    *(undefined4 *)((longlong)param_1 + 0xd4) = 0;
    *(undefined8 *)((longlong)param_1 + 500) = 0;
    *(undefined4 *)((longlong)param_1 + 0x1fc) = 0;
    param_1[0x41] = 0;
    param_1[0x42] = 0;
    *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)((longlong)param_1 + 0x84);
    FUN_1813919f0(param_1 + 0x14,&local_70);
    while( true ) {
      uVar14 = *(uint *)((longlong)param_1 + 0xd4);
      uVar16 = (ulonglong)(int)uVar14;
      iVar13 = 0;
      if ((int)uVar14 < (int)param_1[0x1a]) {
        pcVar2 = (char *)(param_1[0x17] + uVar16 * 4);
        uVar9 = *(uint *)(param_1[0x17] + uVar16 * 4);
        if ((uVar9 >> 10 & 1) == 0) {
          cVar5 = (char)uVar9;
          while (cVar5 == -1) {
            uVar14 = (int)uVar16 + 1;
            uVar16 = (ulonglong)uVar14;
            pcVar2 = pcVar2 + 4;
            cVar5 = *pcVar2;
          }
          local_58 = *(longlong *)(param_1[0x18] + (longlong)(int)uVar14 * 8);
          iVar13 = 1;
        }
        else {
          param_1[0x41] = param_1[0x41] + 1;
          *(uint *)((longlong)param_1 + 0xd4) = uVar14 + 1;
          iVar13 = -1;
        }
      }
      if (iVar13 == 0) {
        iVar13 = FUN_1813731b0(param_1,local_res20);
        uVar10 = (ulonglong)iVar13;
        if (iVar13 < 0) goto LAB_1813707fa;
        goto LAB_181370860;
      }
      if (iVar13 < 0) {
        uVar10 = 0xffffffffffffff78;
        goto LAB_1813707fa;
      }
      if (local_58 != -1) break;
      uVar14 = *(uint *)((longlong)param_1 + 0xd4);
      uVar16 = (ulonglong)(int)uVar14;
      if ((int)uVar14 < (int)param_1[0x1a]) {
        lVar18 = param_1[0x17] + uVar16 * 4;
        uVar9 = *(uint *)(param_1[0x17] + uVar16 * 4);
        if ((uVar9 >> 10 & 1) == 0) {
          uVar9 = uVar9 & 0xff;
          if (uVar9 == 0xff) {
            uVar9 = 0xff;
            do {
              pbVar1 = (byte *)(lVar18 + 4);
              lVar18 = lVar18 + 4;
              uVar9 = uVar9 + *pbVar1;
              uVar14 = (int)uVar16 + 1;
              uVar16 = (ulonglong)uVar14;
            } while (*pbVar1 == 0xff);
          }
          *(uint *)(param_1 + 0x16) = (int)param_1[0x16] + uVar9;
          param_1[0x41] = param_1[0x41] + 1;
          *(uint *)((longlong)param_1 + 0xd4) = uVar14 + 1;
        }
        else {
          param_1[0x41] = param_1[0x41] + 1;
          *(uint *)((longlong)param_1 + 0xd4) = uVar14 + 1;
        }
      }
    }
    local_58 = local_58 - *(longlong *)(param_1[0xc] + (longlong)((int)param_1[0x11] * 2) * 8);
    if (local_58 < 0) {
      local_58 = 0;
    }
    param_1[0xf] = local_58;
    param_1[0xf] = param_1[0xf] + lVar17;
    if ((param_1[0xf] <= param_2) && (lVar18 = FUN_181371270(param_1,0xffffffff), param_2 <= lVar18)
       ) {
      param_1[0x12] = 0;
      param_1[0x13] = 0;
      return 0;
    }
LAB_1813709f1:
    uVar10 = 0xffffffffffffff7f;
  }
LAB_1813707fa:
  param_1[0xf] = -1;
  FUN_18138ffc0(param_1 + 0x43);
  FUN_181390bc0(param_1 + 0x53);
  *(undefined4 *)(param_1 + 0x10) = 2;
  return uVar10 & 0xffffffff;
LAB_181370860:
  lVar18 = param_1[2];
  uVar16 = 0xffffffffffffffff;
  lVar17 = lVar18;
  do {
    lVar17 = lVar17 + -0x10000;
    if (lVar17 < 0) {
      lVar17 = 0;
    }
    if (*param_1 == 0) {
      iVar13 = -0x81;
    }
    else if (((code *)param_1[0x66] == (code *)0x0) ||
            (iVar13 = (*(code *)param_1[0x66])(*param_1,lVar17,0), iVar13 == -1)) {
      iVar13 = -0x80;
    }
    else {
      param_1[2] = lVar17;
      iVar13 = 0;
      *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
      *(undefined8 *)((longlong)param_1 + 0x34) = 0;
      *(undefined4 *)((longlong)param_1 + 0x3c) = 0;
    }
    uVar10 = (longlong)iVar13;
    if (iVar13 != 0) goto LAB_18137094a;
    lVar7 = param_1[2];
    while (lVar7 < lVar18) {
      local_70 = 0;
      local_68 = 0;
      uVar8 = FUN_1813730a0(param_1,&local_70);
      if (uVar8 == 0xffffffffffffff80) {
        uVar10 = 0xffffffffffffff80;
        goto LAB_1813707fa;
      }
      if ((longlong)uVar8 < 0) break;
      uVar16 = uVar8;
      lVar7 = param_1[2];
    }
  } while (uVar16 == 0xffffffffffffffff);
  uVar10 = uVar16;
  if ((int)local_68 == 0) {
    iVar13 = FUN_1813731b0(param_1,uVar16);
    uVar10 = (longlong)iVar13;
    if ((iVar13 == 0) && (lVar18 = FUN_1813730a0(param_1,&local_70), uVar10 = uVar16, lVar18 < 0))
    goto LAB_1813709f1;
  }
LAB_18137094a:
  if ((longlong)uVar10 < 0) goto LAB_1813707fa;
  if ((*(int *)(local_70 + 0xe) == *(int *)((longlong)param_1 + 0x84)) &&
     ((*(ulonglong *)(local_70 + 6) < 0x8000000000000000 || ((*(byte *)(local_70 + 5) & 1) == 0))))
  {
    uVar16 = FUN_181370a20(param_1,uVar10);
    return uVar16;
  }
  param_1[2] = uVar10;
  goto LAB_181370860;
}



############ FUN_ 181392960 size=234 ############

uint FUN_181392960(int *param_1,int param_2)

{
  int iVar1;
  byte *pbVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  
  iVar1 = *param_1;
  iVar4 = param_1[1];
  uVar6 = param_2 + iVar4;
  if ((iVar1 + 4 < param_1[6]) || (uVar5 = 0xffffffff, (int)(uVar6 + iVar1 * 8) <= param_1[6] * 8))
  {
    pbVar2 = *(byte **)(param_1 + 4);
    uVar5 = (uint)(*pbVar2 >> (*(byte *)(param_1 + 1) & 0x1f));
    if (((8 < (int)uVar6) &&
        (((cVar3 = (char)iVar4, uVar5 = uVar5 | (uint)pbVar2[1] << (8U - cVar3 & 0x1f),
          0x10 < (int)uVar6 &&
          (uVar5 = uVar5 | (uint)pbVar2[2] << (0x10U - cVar3 & 0x1f), 0x18 < (int)uVar6)) &&
         (uVar5 = uVar5 | (uint)pbVar2[3] << (0x18U - cVar3 & 0x1f), 0x20 < (int)uVar6)))) &&
       (iVar4 != 0)) {
      uVar5 = uVar5 | (uint)pbVar2[4] << (0x20U - cVar3 & 0x1f);
    }
    uVar5 = uVar5 & *(uint *)(&DAT_1822e2500 + (longlong)param_2 * 4);
  }
  iVar4 = (int)(uVar6 + ((int)uVar6 >> 0x1f & 7U)) >> 3;
  *(longlong *)(param_1 + 4) = *(longlong *)(param_1 + 4) + (longlong)iVar4;
  param_1[1] = uVar6 & 7;
  *param_1 = iVar4 + iVar1;
  return uVar5;
}



############ FUN_ 1813730a0 size=264 ############

longlong FUN_1813730a0(longlong *param_1,undefined8 param_2,longlong param_3)

{
  longlong lVar1;
  int iVar2;
  int *piVar3;
  undefined8 uVar4;
  int iVar5;
  
  if (0 < param_3) {
    param_3 = param_3 + param_1[2];
  }
  while( true ) {
    while( true ) {
      if ((0 < param_3) && (param_3 <= param_1[2])) {
        return -1;
      }
      iVar2 = FUN_181391d60(param_1 + 4,param_2);
      if (-1 < iVar2) break;
      param_1[2] = param_1[2] - (longlong)iVar2;
    }
    if (iVar2 != 0) {
      lVar1 = param_1[2];
      param_1[2] = iVar2 + lVar1;
      return lVar1;
    }
    if (param_3 == 0) break;
    piVar3 = _errno();
    *piVar3 = 0;
    if (param_1[0x65] == 0) {
      return -0x80;
    }
    if (*param_1 == 0) {
      return -2;
    }
    uVar4 = FUN_181391ee0(param_1 + 4,0x800);
    iVar2 = (*(code *)param_1[0x65])(uVar4,1,0x800,*param_1);
    if ((0 < iVar2) &&
       (iVar5 = *(int *)((longlong)param_1 + 0x2c) + iVar2, iVar5 <= (int)param_1[5])) {
      *(int *)((longlong)param_1 + 0x2c) = iVar5;
    }
    if (iVar2 == 0) {
      piVar3 = _errno();
      if (*piVar3 != 0) {
        return -0x80;
      }
      return -2;
    }
    if (iVar2 < 0) {
      return -0x80;
    }
  }
  return -1;
}



############ FUN_ 181390c80 size=118 ############

void FUN_181390c80(longlong param_1)

{
  void *pvVar1;
  
  if (*(undefined8 **)(param_1 + 0x70) != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)**(undefined8 **)(param_1 + 0x70));
  }
  if (*(int *)(param_1 + 0x68) != 0) {
    pvVar1 = realloc(*(void **)(param_1 + 0x58),
                     (longlong)(*(int *)(param_1 + 100) + *(int *)(param_1 + 0x68)));
    *(void **)(param_1 + 0x58) = pvVar1;
    *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + *(int *)(param_1 + 0x68);
    *(undefined4 *)(param_1 + 0x68) = 0;
    *(undefined8 *)(param_1 + 0x70) = 0;
    *(undefined4 *)(param_1 + 0x60) = 0;
    return;
  }
  *(undefined8 *)(param_1 + 0x70) = 0;
  *(undefined4 *)(param_1 + 0x60) = 0;
  return;
}



############ FUN_ 18138ffc0 size=1014 ############

void FUN_18138ffc0(void *param_1)

{
  longlong lVar1;
  longlong *_Memory;
  longlong lVar2;
  undefined8 *_Memory_00;
  uint uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  int *piVar6;
  ulonglong uVar7;
  void *pvVar8;
  
  if (param_1 != (void *)0x0) {
    uVar4 = 0;
    lVar1 = *(longlong *)((longlong)param_1 + 8);
    uVar5 = uVar4;
    if (lVar1 != 0) {
      uVar5 = *(ulonglong *)(lVar1 + 0x20);
    }
    _Memory = *(longlong **)((longlong)param_1 + 0x78);
    if (_Memory != (longlong *)0x0) {
      lVar2 = *_Memory;
      if (lVar2 != 0) {
        if ((undefined8 *)(lVar2 + 0x10) != (undefined8 *)0x0) {
          if (*(void **)(lVar2 + 0x18) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
            free(*(void **)(lVar2 + 0x18));
          }
          if (*(void **)(lVar2 + 0x20) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
            free(*(void **)(lVar2 + 0x20));
          }
          *(undefined8 *)(lVar2 + 0x10) = 0;
          *(undefined8 *)(lVar2 + 0x18) = 0;
          *(undefined8 *)(lVar2 + 0x20) = 0;
          *(undefined8 *)(lVar2 + 0x28) = 0;
        }
                    /* WARNING: Subroutine does not return */
        free(*(void **)(lVar2 + 0x40));
      }
      if ((undefined8 *)_Memory[2] != (undefined8 *)0x0) {
        FUN_181383520(*(undefined8 *)_Memory[2]);
                    /* WARNING: Subroutine does not return */
        free(*(void **)_Memory[2]);
      }
      if ((undefined8 *)_Memory[3] != (undefined8 *)0x0) {
        FUN_181383520(*(undefined8 *)_Memory[3]);
                    /* WARNING: Subroutine does not return */
        free(*(void **)_Memory[3]);
      }
      if (_Memory[0xb] != 0) {
        if ((uVar5 != 0) && (0 < *(int *)(uVar5 + 0x10))) {
          piVar6 = (int *)(uVar5 + 0x520);
          uVar7 = uVar4;
          do {
            (**(code **)((&PTR_DAT_1822f5a90)[*piVar6] + 0x20))
                      (*(undefined8 *)(uVar7 + _Memory[0xb]));
            uVar3 = (int)uVar4 + 1;
            uVar4 = (ulonglong)uVar3;
            piVar6 = piVar6 + 1;
            uVar7 = uVar7 + 8;
          } while ((int)uVar3 < *(int *)(uVar5 + 0x10));
        }
                    /* WARNING: Subroutine does not return */
        free((void *)_Memory[0xb]);
      }
      if (_Memory[0xc] != 0) {
        if ((uVar5 != 0) && (0 < *(int *)(uVar5 + 0x14))) {
          piVar6 = (int *)(uVar5 + 0x820);
          uVar7 = uVar4;
          do {
            (**(code **)((&PTR_DAT_182280c20)[*piVar6] + 0x20))
                      (*(undefined8 *)(uVar7 + _Memory[0xc]));
            uVar3 = (int)uVar4 + 1;
            uVar4 = (ulonglong)uVar3;
            piVar6 = piVar6 + 1;
            uVar7 = uVar7 + 8;
          } while ((int)uVar3 < *(int *)(uVar5 + 0x14));
        }
                    /* WARNING: Subroutine does not return */
        free((void *)_Memory[0xc]);
      }
      if (_Memory[0xd] != 0) {
        if ((uVar5 != 0) && (uVar7 = uVar4, 0 < *(int *)(uVar5 + 0x1c))) {
          do {
            pvVar8 = (void *)(_Memory[0xd] + uVar7);
            if (pvVar8 != (void *)0x0) {
              if (*(void **)((longlong)pvVar8 + 0x20) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
                free(*(void **)((longlong)pvVar8 + 0x20));
              }
              if (*(void **)((longlong)pvVar8 + 0x28) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
                free(*(void **)((longlong)pvVar8 + 0x28));
              }
              if (*(void **)((longlong)pvVar8 + 0x30) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
                free(*(void **)((longlong)pvVar8 + 0x30));
              }
              if (*(longlong *)((longlong)pvVar8 + 0x10) != 0) {
                    /* WARNING: Subroutine does not return */
                free(*(void **)**(undefined8 **)((longlong)pvVar8 + 0x10));
              }
              if (*(longlong *)((longlong)pvVar8 + 0x18) != 0) {
                    /* WARNING: Subroutine does not return */
                free((void *)**(undefined8 **)((longlong)pvVar8 + 0x18));
              }
              memset(pvVar8,0,0x50);
            }
            uVar3 = (int)uVar4 + 1;
            uVar4 = (ulonglong)uVar3;
            uVar7 = uVar7 + 0x50;
          } while ((int)uVar3 < *(int *)(uVar5 + 0x1c));
        }
                    /* WARNING: Subroutine does not return */
        free((void *)_Memory[0xd]);
      }
      _Memory_00 = (undefined8 *)_Memory[0xe];
      if (_Memory_00 != (undefined8 *)0x0) {
        *_Memory_00 = 0;
        _Memory_00[1] = 0;
        _Memory_00[2] = 0;
        _Memory_00[3] = 0;
        _Memory_00[4] = 0;
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      _Memory[0x12] = 0;
      _Memory[0x13] = 0;
      _Memory[0x14] = 0;
      _Memory[0x15] = 0;
      _Memory[0x16] = 0;
      _Memory[0x17] = 0;
      _Memory[0x18] = 0;
      if (_Memory + 4 != (longlong *)0x0) {
        if ((void *)_Memory[5] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free((void *)_Memory[5]);
        }
        if ((void *)_Memory[6] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free((void *)_Memory[6]);
        }
        _Memory[4] = 0;
        _Memory[5] = 0;
        _Memory[6] = 0;
      }
      if (_Memory + 7 != (longlong *)0x0) {
        if ((void *)_Memory[8] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free((void *)_Memory[8]);
        }
        if ((void *)_Memory[9] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free((void *)_Memory[9]);
        }
        _Memory[7] = 0;
        _Memory[8] = 0;
        _Memory[9] = 0;
      }
    }
    if (*(longlong *)((longlong)param_1 + 0x10) != 0) {
      if ((lVar1 != 0) && (uVar5 = uVar4, 0 < *(int *)(lVar1 + 4))) {
        do {
          pvVar8 = *(void **)(uVar4 + *(longlong *)((longlong)param_1 + 0x10));
          if (pvVar8 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
            free(pvVar8);
          }
          uVar3 = (int)uVar5 + 1;
          uVar4 = uVar4 + 8;
          uVar5 = (ulonglong)uVar3;
        } while ((int)uVar3 < *(int *)(lVar1 + 4));
      }
                    /* WARNING: Subroutine does not return */
      free(*(void **)((longlong)param_1 + 0x10));
    }
    if (_Memory != (longlong *)0x0) {
      if ((void *)_Memory[0xf] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free((void *)_Memory[0xf]);
      }
      if ((void *)_Memory[0x10] == (void *)0x0) {
        if ((void *)_Memory[0x11] == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
                    /* WARNING: Subroutine does not return */
        free((void *)_Memory[0x11]);
      }
                    /* WARNING: Subroutine does not return */
      free((void *)_Memory[0x10]);
    }
    memset(param_1,0,0x80);
  }
  return;
}



############ FUN_ 1813919f0 size=860 ############

undefined8 FUN_1813919f0(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  uint *puVar2;
  byte bVar3;
  char cVar4;
  byte bVar5;
  longlong lVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined8 uVar10;
  void *pvVar11;
  ulonglong uVar12;
  longlong lVar13;
  int iVar14;
  int iVar15;
  longlong lVar16;
  byte *pbVar17;
  void *_Src;
  byte bVar18;
  
  lVar6 = *param_2;
  _Src = (void *)param_2[2];
  iVar15 = (int)param_2[3];
  bVar3 = *(byte *)(lVar6 + 5);
  cVar4 = *(char *)(lVar6 + 4);
  iVar14 = *(int *)((longlong)param_1 + 0x34);
  uVar10 = *(undefined8 *)(lVar6 + 6);
  iVar8 = *(int *)(lVar6 + 0xe);
  iVar7 = *(int *)(lVar6 + 0x12);
  bVar18 = *(byte *)(lVar6 + 0x1a);
  iVar9 = (int)param_1[2];
  if (iVar9 != 0) {
    piVar1 = (int *)((longlong)param_1 + 0xc);
    *piVar1 = *piVar1 - iVar9;
    if (*piVar1 != 0) {
      memmove((void *)*param_1,(void *)(*param_1 + (longlong)iVar9),
              (longlong)*(int *)((longlong)param_1 + 0xc));
    }
    *(undefined4 *)(param_1 + 2) = 0;
  }
  if (iVar14 != 0) {
    iVar9 = *(int *)((longlong)param_1 + 0x2c) - iVar14;
    if (iVar9 != 0) {
      memmove((void *)param_1[3],(void *)(param_1[3] + (longlong)iVar14 * 4),(longlong)iVar9 << 2);
      memmove((void *)param_1[4],(void *)(param_1[4] + (longlong)iVar14 * 8),
              (longlong)(*(int *)((longlong)param_1 + 0x2c) - iVar14) << 3);
    }
    *(int *)((longlong)param_1 + 0x2c) = *(int *)((longlong)param_1 + 0x2c) - iVar14;
    *(int *)(param_1 + 6) = (int)param_1[6] - iVar14;
    *(undefined4 *)((longlong)param_1 + 0x34) = 0;
  }
  if ((iVar8 == (int)param_1[0x2c]) && (cVar4 == '\0')) {
    lVar16 = (longlong)(int)(uint)bVar18;
    FUN_181392670(param_1);
    if (iVar7 != *(int *)((longlong)param_1 + 0x164)) {
      iVar14 = (int)param_1[6];
      if (iVar14 < *(int *)((longlong)param_1 + 0x2c)) {
        iVar9 = *(int *)((longlong)param_1 + 0xc);
        uVar12 = (ulonglong)(uint)(*(int *)((longlong)param_1 + 0x2c) - iVar14);
        pbVar17 = (byte *)(param_1[3] + (longlong)iVar14 * 4);
        do {
          bVar18 = *pbVar17;
          pbVar17 = pbVar17 + 4;
          iVar9 = iVar9 - (uint)bVar18;
          *(int *)((longlong)param_1 + 0xc) = iVar9;
          uVar12 = uVar12 - 1;
        } while (uVar12 != 0);
      }
      *(int *)((longlong)param_1 + 0x2c) = iVar14;
      if (*(int *)((longlong)param_1 + 0x164) != -1) {
        *(undefined4 *)(param_1[3] + (longlong)iVar14 * 4) = 0x400;
        *(int *)((longlong)param_1 + 0x2c) = *(int *)((longlong)param_1 + 0x2c) + 1;
        *(int *)(param_1 + 6) = (int)param_1[6] + 1;
      }
    }
    iVar14 = 0;
    bVar18 = bVar3 & 2;
    if (((bVar3 & 1) != 0) &&
       ((iVar14 = 0, *(int *)((longlong)param_1 + 0x2c) < 1 ||
        (*(int *)(param_1[3] + (longlong)(*(int *)((longlong)param_1 + 0x2c) + -1) * 4) == 0x400))))
    {
      lVar13 = 0;
      iVar9 = 0;
      bVar18 = 0;
      if (lVar16 != 0) {
        do {
          bVar5 = *(byte *)(lVar13 + 0x1b + lVar6);
          iVar14 = iVar9 + 1;
          _Src = (void *)((longlong)_Src + (ulonglong)bVar5);
          iVar15 = iVar15 - (uint)bVar5;
          bVar18 = 0;
          if (bVar5 < 0xff) break;
          lVar13 = lVar13 + 1;
          iVar9 = iVar14;
        } while (lVar13 < lVar16);
      }
    }
    if (iVar15 != 0) {
      if ((int)param_1[1] <= *(int *)((longlong)param_1 + 0xc) + iVar15) {
        iVar9 = (int)param_1[1] + 0x400 + iVar15;
        *(int *)(param_1 + 1) = iVar9;
        pvVar11 = realloc((void *)*param_1,(longlong)iVar9);
        *param_1 = (longlong)pvVar11;
      }
      memcpy((void *)((longlong)*(int *)((longlong)param_1 + 0xc) + *param_1),_Src,(longlong)iVar15)
      ;
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + iVar15;
    }
    lVar13 = (longlong)iVar14;
    iVar15 = -1;
    if (lVar13 < lVar16) {
      do {
        bVar5 = *(byte *)(lVar13 + 0x1b + lVar6);
        *(uint *)(param_1[3] + (longlong)*(int *)((longlong)param_1 + 0x2c) * 4) = (uint)bVar5;
        *(undefined8 *)(param_1[4] + (longlong)*(int *)((longlong)param_1 + 0x2c) * 8) =
             0xffffffffffffffff;
        if (bVar18 != 0) {
          puVar2 = (uint *)(param_1[3] + (longlong)*(int *)((longlong)param_1 + 0x2c) * 4);
          *puVar2 = *puVar2 | 0x100;
          bVar18 = 0;
        }
        if (bVar5 < 0xff) {
          iVar15 = *(int *)((longlong)param_1 + 0x2c);
        }
        *(int *)((longlong)param_1 + 0x2c) = *(int *)((longlong)param_1 + 0x2c) + 1;
        lVar13 = lVar13 + 1;
        if (bVar5 != 0xff) {
          *(undefined4 *)(param_1 + 6) = *(undefined4 *)((longlong)param_1 + 0x2c);
        }
      } while (lVar13 < lVar16);
      if (iVar15 != -1) {
        *(undefined8 *)(param_1[4] + (longlong)iVar15 * 8) = uVar10;
      }
    }
    if ((bVar3 & 4) != 0) {
      *(undefined4 *)(param_1 + 0x2b) = 1;
      if (0 < *(int *)((longlong)param_1 + 0x2c)) {
        puVar2 = (uint *)(param_1[3] + (longlong)(*(int *)((longlong)param_1 + 0x2c) + -1) * 4);
        *puVar2 = *puVar2 | 0x200;
      }
    }
    *(int *)((longlong)param_1 + 0x164) = iVar7 + 1;
    uVar10 = 0;
  }
  else {
    uVar10 = 0xffffffff;
  }
  return uVar10;
}



############ FUN_ 181371e20 size=185 ############

undefined8 FUN_181371e20(longlong param_1)

{
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  if (3 < *(int *)(param_1 + 0x80)) {
    return 0;
  }
  if (*(int *)(param_1 + 0x80) < 3) {
    return 0xffffff7f;
  }
  if (*(int *)(param_1 + 8) == 0) {
    lVar2 = *(longlong *)(param_1 + 0x68);
  }
  else {
    lVar2 = *(longlong *)(param_1 + 0x68) + (longlong)*(int *)(param_1 + 0x88) * 0x28;
  }
  lVar3 = param_1 + 0x218;
  iVar1 = FUN_181390660(lVar3,lVar2);
  if (iVar1 != 0) {
    FUN_18138ffc0();
    return 0xffffff77;
  }
  FUN_18138f730(lVar3);
  FUN_181390da0(lVar3,param_1 + 0x298);
  *(undefined8 *)(param_1 + 0x90) = 0;
  *(undefined8 *)(param_1 + 0x98) = 0;
  *(undefined4 *)(param_1 + 0x80) = 4;
  return 0;
}



############ FUN_ 18138ec80 size=2655 ############

undefined8 FUN_18138ec80(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  float *pfVar2;
  float fVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  int *piVar7;
  undefined *puVar8;
  byte bVar9;
  longlong lVar10;
  byte bVar11;
  int iVar12;
  undefined4 *puVar13;
  float *pfVar14;
  longlong lVar15;
  float *pfVar16;
  longlong lVar17;
  longlong lVar18;
  int iVar19;
  longlong lVar20;
  int iVar21;
  longlong lVar22;
  longlong lVar23;
  int iVar24;
  longlong lVar25;
  int iVar26;
  longlong lVar27;
  int local_res18;
  longlong local_98;
  
  lVar5 = *(longlong *)(param_1 + 8);
  lVar6 = *(longlong *)(param_1 + 0x78);
  piVar7 = *(int **)(lVar5 + 0x20);
  iVar21 = piVar7[0x59a];
  if ((param_2 != (longlong *)0x0) &&
     ((*(int *)(param_1 + 0x24) <= *(int *)(param_1 + 0x28) || (*(int *)(param_1 + 0x28) == -1)))) {
    *(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(param_1 + 0x38);
    *(undefined4 *)(param_1 + 0x38) = *(undefined4 *)((longlong)param_2 + 0x2c);
    *(undefined4 *)(param_1 + 0x3c) = 0xffffffff;
    if ((*(longlong *)(param_1 + 0x50) == -1) || (*(longlong *)(param_1 + 0x50) + 1 != param_2[9]))
    {
      *(undefined8 *)(param_1 + 0x48) = 0xffffffffffffffff;
      *(undefined8 *)(lVar6 + 200) = 0xffffffffffffffff;
    }
    *(longlong *)(param_1 + 0x50) = param_2[9];
    bVar9 = (byte)iVar21;
    if (*param_2 != 0) {
      bVar11 = bVar9 + 1;
      iVar24 = piVar7[1];
      iVar4 = piVar7[*(int *)(param_1 + 0x38)];
      iVar26 = *piVar7;
      *(longlong *)(param_1 + 0x58) = *(longlong *)(param_1 + 0x58) + (longlong)(int)param_2[0xf];
      *(longlong *)(param_1 + 0x60) =
           *(longlong *)(param_1 + 0x60) + (longlong)*(int *)((longlong)param_2 + 0x7c);
      *(longlong *)(param_1 + 0x68) = *(longlong *)(param_1 + 0x68) + (longlong)(int)param_2[0x10];
      *(longlong *)(param_1 + 0x70) =
           *(longlong *)(param_1 + 0x70) + (longlong)*(int *)((longlong)param_2 + 0x84);
      iVar26 = iVar26 >> (bVar11 & 0x1f);
      iVar24 = iVar24 >> (bVar11 & 0x1f);
      iVar12 = 0;
      iVar19 = iVar24;
      if (*(int *)(param_1 + 0x40) != 0) {
        iVar12 = iVar24;
        iVar19 = 0;
      }
      lVar27 = (longlong)iVar24;
      lVar10 = (longlong)(iVar4 >> (bVar11 & 0x1f));
      local_res18 = 0;
      lVar25 = (longlong)iVar26;
      if (0 < *(int *)(lVar5 + 4)) {
        lVar17 = (longlong)iVar19;
        local_98 = 0;
        do {
          lVar23 = 0;
          if (*(int *)(param_1 + 0x34) == 0) {
            puVar8 = (&PTR_DAT_1822e5df0)[*(int *)(lVar6 + 8) - iVar21];
            lVar1 = *(longlong *)(local_98 + *(longlong *)(param_1 + 0x10));
            if (*(int *)(param_1 + 0x38) == 0) {
              lVar1 = lVar1 + lVar17 * 4;
              lVar15 = *(longlong *)(local_98 + *param_2);
              if (3 < lVar25) {
                pfVar14 = (float *)(lVar1 + 4);
                lVar20 = lVar15 - lVar1;
                pfVar16 = (float *)(puVar8 + (lVar25 + -2) * 4);
                lVar22 = (longlong)puVar8 - lVar1;
                lVar18 = (lVar25 - 4U >> 2) + 1;
                lVar23 = lVar18 * 4;
                do {
                  pfVar14[-1] = *(float *)((longlong)pfVar14 + lVar22 + -4) *
                                *(float *)((longlong)pfVar14 + lVar20 + -4) +
                                pfVar16[1] * pfVar14[-1];
                  *pfVar14 = *(float *)(lVar22 + (longlong)pfVar14 + (lVar15 - (longlong)puVar8)) *
                             *(float *)(lVar22 + (longlong)pfVar14) + *pfVar16 * *pfVar14;
                  pfVar14[1] = *(float *)(lVar22 + 4 + (longlong)pfVar14) *
                               *(float *)(lVar20 + 4 + (longlong)pfVar14) + pfVar16[-1] * pfVar14[1]
                  ;
                  pfVar2 = pfVar16 + -2;
                  pfVar16 = pfVar16 + -4;
                  pfVar14[2] = *(float *)(lVar22 + 8 + (longlong)pfVar14) *
                               *(float *)(lVar20 + 8 + (longlong)pfVar14) + *pfVar2 * pfVar14[2];
                  pfVar14 = pfVar14 + 4;
                  lVar18 = lVar18 + -1;
                } while (lVar18 != 0);
              }
              if (lVar23 < lVar25) {
                pfVar14 = (float *)(lVar1 + lVar23 * 4);
                pfVar16 = (float *)(puVar8 + ((lVar25 - lVar23) + -1) * 4);
                lVar23 = lVar25 - lVar23;
                do {
                  fVar3 = *pfVar16;
                  pfVar2 = (float *)(((longlong)puVar8 - lVar1) + (longlong)pfVar14);
                  pfVar16 = pfVar16 + -1;
                  *pfVar14 = *(float *)((lVar15 - (longlong)puVar8) + (longlong)pfVar2) * *pfVar2 +
                             fVar3 * *pfVar14;
                  pfVar14 = pfVar14 + 1;
                  lVar23 = lVar23 + -1;
                } while (lVar23 != 0);
              }
            }
            else {
              lVar1 = lVar1 + lVar17 * 4;
              lVar15 = 0;
              lVar23 = *(longlong *)(local_98 + *param_2) +
                       ((longlong)(iVar24 / 2) - (longlong)(iVar26 / 2)) * 4;
              if (3 < lVar25) {
                pfVar14 = (float *)(lVar1 + 4);
                lVar20 = lVar23 - lVar1;
                pfVar16 = (float *)(puVar8 + (lVar25 + -2) * 4);
                lVar22 = (longlong)puVar8 - lVar1;
                lVar18 = (lVar25 - 4U >> 2) + 1;
                lVar15 = lVar18 * 4;
                do {
                  pfVar14[-1] = *(float *)((longlong)pfVar14 + lVar22 + -4) *
                                *(float *)((longlong)pfVar14 + lVar20 + -4) +
                                pfVar16[1] * pfVar14[-1];
                  *pfVar14 = *(float *)((longlong)pfVar14 + lVar22 + (lVar23 - (longlong)puVar8)) *
                             *(float *)((longlong)pfVar14 + lVar22) + *pfVar16 * *pfVar14;
                  pfVar14[1] = *(float *)((longlong)pfVar14 + lVar22 + 4) *
                               *(float *)((longlong)pfVar14 + lVar20 + 4) + pfVar16[-1] * pfVar14[1]
                  ;
                  pfVar2 = pfVar16 + -2;
                  pfVar16 = pfVar16 + -4;
                  pfVar14[2] = *(float *)((longlong)pfVar14 + lVar22 + 8) *
                               *(float *)((longlong)pfVar14 + lVar20 + 8) + *pfVar2 * pfVar14[2];
                  pfVar14 = pfVar14 + 4;
                  lVar18 = lVar18 + -1;
                } while (lVar18 != 0);
              }
              if (lVar15 < lVar25) {
                pfVar14 = (float *)(lVar1 + lVar15 * 4);
                lVar18 = lVar25 - lVar15;
                pfVar16 = (float *)(puVar8 + ((lVar25 - lVar15) + -1) * 4);
                lVar15 = lVar15 + lVar18;
                do {
                  fVar3 = *pfVar16;
                  pfVar2 = (float *)((longlong)pfVar14 + ((longlong)puVar8 - lVar1));
                  pfVar16 = pfVar16 + -1;
                  *pfVar14 = *(float *)((longlong)pfVar2 + (lVar23 - (longlong)puVar8)) * *pfVar2 +
                             fVar3 * *pfVar14;
                  pfVar14 = pfVar14 + 1;
                  lVar18 = lVar18 + -1;
                } while (lVar18 != 0);
              }
              lVar18 = (longlong)(iVar26 / 2 + iVar24 / 2);
              if (lVar15 < lVar18) {
                if (3 < lVar18 - lVar15) {
                  puVar13 = (undefined4 *)(lVar1 + (lVar15 + 1) * 4);
                  lVar20 = lVar23 - lVar1;
                  lVar22 = ((lVar18 - lVar15) - 4U >> 2) + 1;
                  lVar15 = lVar15 + lVar22 * 4;
                  do {
                    puVar13[-1] = *(undefined4 *)((longlong)puVar13 + lVar20 + -4);
                    *puVar13 = *(undefined4 *)((longlong)puVar13 + lVar20);
                    puVar13[1] = *(undefined4 *)((longlong)puVar13 + lVar20 + 4);
                    puVar13[2] = *(undefined4 *)((longlong)puVar13 + lVar20 + 8);
                    puVar13 = puVar13 + 4;
                    lVar22 = lVar22 + -1;
                  } while (lVar22 != 0);
                }
                if (lVar15 < lVar18) {
                  puVar13 = (undefined4 *)(lVar1 + lVar15 * 4);
                  lVar18 = lVar18 - lVar15;
                  do {
                    *puVar13 = *(undefined4 *)((lVar23 - lVar1) + (longlong)puVar13);
                    puVar13 = puVar13 + 1;
                    lVar18 = lVar18 + -1;
                  } while (lVar18 != 0);
                }
              }
            }
          }
          else if (*(int *)(param_1 + 0x38) == 0) {
            puVar8 = (&PTR_DAT_1822e5df0)[*(int *)(lVar6 + 8) - iVar21];
            lVar1 = *(longlong *)(local_98 + *(longlong *)(param_1 + 0x10)) +
                    (((longlong)(iVar24 / 2) - (longlong)(iVar26 / 2)) + lVar17) * 4;
            lVar15 = *(longlong *)(local_98 + *param_2);
            if (3 < lVar25) {
              pfVar14 = (float *)(lVar1 + 4);
              lVar20 = lVar15 - lVar1;
              pfVar16 = (float *)(puVar8 + (lVar25 + -2) * 4);
              lVar22 = (longlong)puVar8 - lVar1;
              lVar18 = (lVar25 - 4U >> 2) + 1;
              lVar23 = lVar18 * 4;
              do {
                pfVar14[-1] = *(float *)(lVar22 + -4 + (longlong)pfVar14) *
                              *(float *)(lVar20 + -4 + (longlong)pfVar14) + pfVar16[1] * pfVar14[-1]
                ;
                *pfVar14 = *(float *)(lVar22 + (longlong)pfVar14 + (lVar15 - (longlong)puVar8)) *
                           *(float *)(lVar22 + (longlong)pfVar14) + *pfVar16 * *pfVar14;
                pfVar14[1] = *(float *)(lVar22 + 4 + (longlong)pfVar14) *
                             *(float *)(lVar20 + 4 + (longlong)pfVar14) + pfVar16[-1] * pfVar14[1];
                pfVar2 = pfVar16 + -2;
                pfVar16 = pfVar16 + -4;
                pfVar14[2] = *(float *)(lVar22 + 8 + (longlong)pfVar14) *
                             *(float *)(lVar20 + 8 + (longlong)pfVar14) + *pfVar2 * pfVar14[2];
                pfVar14 = pfVar14 + 4;
                lVar18 = lVar18 + -1;
              } while (lVar18 != 0);
            }
            if (lVar23 < lVar25) {
              pfVar14 = (float *)(lVar1 + lVar23 * 4);
              pfVar16 = (float *)(puVar8 + ((lVar25 - lVar23) + -1) * 4);
              lVar23 = lVar25 - lVar23;
              do {
                pfVar2 = (float *)((longlong)pfVar14 + ((longlong)puVar8 - lVar1));
                fVar3 = *pfVar16;
                pfVar16 = pfVar16 + -1;
                *pfVar14 = *(float *)((longlong)pfVar2 + (lVar15 - (longlong)puVar8)) * *pfVar2 +
                           *pfVar14 * fVar3;
                pfVar14 = pfVar14 + 1;
                lVar23 = lVar23 + -1;
              } while (lVar23 != 0);
            }
          }
          else {
            puVar8 = (&PTR_DAT_1822e5df0)[*(int *)(lVar6 + 0xc) - iVar21];
            lVar1 = *(longlong *)(local_98 + *(longlong *)(param_1 + 0x10)) + lVar17 * 4;
            lVar15 = *(longlong *)(local_98 + *param_2);
            if (3 < lVar27) {
              pfVar14 = (float *)(lVar1 + 4);
              lVar20 = lVar15 - lVar1;
              pfVar16 = (float *)(puVar8 + (lVar27 + -2) * 4);
              lVar22 = (longlong)puVar8 - lVar1;
              lVar18 = (lVar27 - 4U >> 2) + 1;
              lVar23 = lVar18 * 4;
              do {
                pfVar14[-1] = *(float *)(lVar22 + -4 + (longlong)pfVar14) *
                              *(float *)(lVar20 + -4 + (longlong)pfVar14) + pfVar16[1] * pfVar14[-1]
                ;
                *pfVar14 = *(float *)(lVar22 + (longlong)pfVar14 + (lVar15 - (longlong)puVar8)) *
                           *(float *)(lVar22 + (longlong)pfVar14) + *pfVar16 * *pfVar14;
                pfVar14[1] = *(float *)(lVar22 + 4 + (longlong)pfVar14) *
                             *(float *)(lVar20 + 4 + (longlong)pfVar14) + pfVar16[-1] * pfVar14[1];
                pfVar2 = pfVar16 + -2;
                pfVar16 = pfVar16 + -4;
                pfVar14[2] = *(float *)(lVar22 + 8 + (longlong)pfVar14) *
                             *(float *)(lVar20 + 8 + (longlong)pfVar14) + *pfVar2 * pfVar14[2];
                pfVar14 = pfVar14 + 4;
                lVar18 = lVar18 + -1;
              } while (lVar18 != 0);
            }
            if (lVar23 < lVar27) {
              pfVar14 = (float *)(lVar1 + lVar23 * 4);
              pfVar16 = (float *)(puVar8 + ((lVar27 - lVar23) + -1) * 4);
              lVar23 = lVar27 - lVar23;
              do {
                fVar3 = *pfVar16;
                pfVar2 = (float *)((longlong)pfVar14 + ((longlong)puVar8 - lVar1));
                pfVar16 = pfVar16 + -1;
                *pfVar14 = *(float *)((longlong)pfVar2 + (lVar15 - (longlong)puVar8)) * *pfVar2 +
                           fVar3 * *pfVar14;
                pfVar14 = pfVar14 + 1;
                lVar23 = lVar23 + -1;
              } while (lVar23 != 0);
            }
          }
          lVar15 = 0;
          lVar23 = *(longlong *)(local_98 + *(longlong *)(param_1 + 0x10)) + (longlong)iVar12 * 4;
          lVar1 = *(longlong *)(local_98 + *param_2) + lVar10 * 4;
          if (3 < lVar10) {
            lVar18 = lVar1 - lVar23;
            lVar20 = (lVar10 - 4U >> 2) + 1;
            puVar13 = (undefined4 *)(lVar23 + 4);
            lVar15 = lVar20 * 4;
            do {
              puVar13[-1] = *(undefined4 *)(lVar18 + -4 + (longlong)puVar13);
              *puVar13 = *(undefined4 *)(lVar18 + (longlong)puVar13);
              puVar13[1] = *(undefined4 *)(lVar18 + 4 + (longlong)puVar13);
              puVar13[2] = *(undefined4 *)(lVar18 + 8 + (longlong)puVar13);
              puVar13 = puVar13 + 4;
              lVar20 = lVar20 + -1;
            } while (lVar20 != 0);
          }
          if (lVar15 < lVar10) {
            puVar13 = (undefined4 *)(lVar23 + lVar15 * 4);
            lVar15 = lVar10 - lVar15;
            do {
              *puVar13 = *(undefined4 *)((longlong)puVar13 + (lVar1 - lVar23));
              puVar13 = puVar13 + 1;
              lVar15 = lVar15 + -1;
            } while (lVar15 != 0);
          }
          local_res18 = local_res18 + 1;
          local_98 = local_98 + 8;
        } while (local_res18 < *(int *)(lVar5 + 4));
      }
      if (*(int *)(param_1 + 0x40) != 0) {
        iVar24 = 0;
      }
      *(int *)(param_1 + 0x40) = iVar24;
      if (*(int *)(param_1 + 0x28) == -1) {
        *(int *)(param_1 + 0x28) = iVar12;
        *(int *)(param_1 + 0x24) = iVar12;
      }
      else {
        *(int *)(param_1 + 0x28) = iVar19;
        *(int *)(param_1 + 0x24) =
             (((int)((piVar7[*(int *)(param_1 + 0x38)] >> 0x1f & 3U) +
                    piVar7[*(int *)(param_1 + 0x38)]) >> 2) +
              ((int)(piVar7[*(int *)(param_1 + 0x34)] +
                    (piVar7[*(int *)(param_1 + 0x34)] >> 0x1f & 3U)) >> 2) >> (bVar9 & 0x1f)) +
             iVar19;
      }
    }
    if (*(longlong *)(lVar6 + 200) == -1) {
      *(undefined8 *)(lVar6 + 200) = 0;
    }
    else {
      *(longlong *)(lVar6 + 200) =
           (longlong)
           (((int)(piVar7[*(int *)(param_1 + 0x34)] +
                  (piVar7[*(int *)(param_1 + 0x34)] >> 0x1f & 3U)) >> 2) +
           ((int)((piVar7[*(int *)(param_1 + 0x38)] >> 0x1f & 3U) + piVar7[*(int *)(param_1 + 0x38)]
                 ) >> 2)) + *(longlong *)(lVar6 + 200);
    }
    if (*(longlong *)(param_1 + 0x48) == -1) {
      lVar5 = param_2[8];
      if ((lVar5 != -1) &&
         (*(longlong *)(param_1 + 0x48) = lVar5, lVar5 < *(longlong *)(lVar6 + 200))) {
        iVar21 = *(int *)(lVar6 + 200) - (int)param_2[8];
        if (iVar21 < 0) {
          iVar21 = 0;
        }
        if (*(int *)((longlong)param_2 + 0x3c) == 0) {
          *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + (iVar21 >> (bVar9 & 0x1f));
          if (*(int *)(param_1 + 0x24) < *(int *)(param_1 + 0x28)) {
            *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x24);
          }
        }
        else {
          iVar24 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x28) << (bVar9 & 0x1f);
          if (iVar24 < iVar21) {
            iVar21 = iVar24;
          }
          *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) - (iVar21 >> (bVar9 & 0x1f));
        }
      }
    }
    else {
      *(longlong *)(param_1 + 0x48) =
           *(longlong *)(param_1 + 0x48) +
           (longlong)
           (((int)(piVar7[*(int *)(param_1 + 0x34)] +
                  (piVar7[*(int *)(param_1 + 0x34)] >> 0x1f & 3U)) >> 2) +
           ((int)((piVar7[*(int *)(param_1 + 0x38)] >> 0x1f & 3U) + piVar7[*(int *)(param_1 + 0x38)]
                 ) >> 2));
      lVar5 = param_2[8];
      lVar6 = *(longlong *)(param_1 + 0x48);
      if ((lVar5 != -1) && (lVar6 != lVar5)) {
        if ((lVar5 < lVar6) &&
           ((iVar21 = (int)lVar6 - (int)lVar5, iVar21 != 0 &&
            (*(int *)((longlong)param_2 + 0x3c) != 0)))) {
          iVar24 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x28) << (bVar9 & 0x1f);
          if (iVar24 < iVar21) {
            iVar21 = iVar24;
          }
          if (iVar21 < 0) {
            iVar21 = 0;
          }
          *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) - (iVar21 >> (bVar9 & 0x1f));
        }
        *(longlong *)(param_1 + 0x48) = param_2[8];
      }
    }
    if (*(int *)((longlong)param_2 + 0x3c) != 0) {
      *(undefined4 *)(param_1 + 0x30) = 1;
    }
    return 0;
  }
  return 0xffffff7d;
}



############ FUN_ 181390bc0 size=110 ############

undefined8 FUN_181390bc0(void *param_1)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)((longlong)param_1 + 0x88);
  FUN_181390c80();
  if (*(void **)((longlong)param_1 + 0x58) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_1 + 0x58));
  }
  if (lVar1 != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(*(longlong *)(lVar1 + 0x10) + 8));
  }
  memset(param_1,0,0x90);
  return 0;
}



############ FUN_ 181371270 size=129 ############

ulonglong FUN_181371270(longlong param_1,int param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  ulonglong uVar4;
  
  if (((1 < *(int *)(param_1 + 0x80)) && (*(int *)(param_1 + 8) != 0)) &&
     (param_2 < *(int *)(param_1 + 0x40))) {
    if (param_2 < 0) {
      uVar2 = 0;
      uVar4 = uVar2;
      if (0 < *(int *)(param_1 + 0x40)) {
        do {
          lVar1 = FUN_181371270(param_1,uVar4);
          uVar2 = uVar2 + lVar1;
          uVar3 = (int)uVar4 + 1;
          uVar4 = (ulonglong)uVar3;
        } while ((int)uVar3 < *(int *)(param_1 + 0x40));
      }
      return uVar2;
    }
    return *(ulonglong *)(*(longlong *)(param_1 + 0x60) + (longlong)(param_2 * 2 + 1) * 8);
  }
  return 0xffffffffffffff7d;
}



############ FUN_ 18136fb30 size=192 ############

undefined8 FUN_18136fb30(longlong param_1,double param_2)

{
  uint uVar1;
  undefined8 uVar2;
  uint uVar3;
  longlong lVar5;
  ulonglong uVar6;
  double dVar7;
  double dVar8;
  ulonglong uVar4;
  
  uVar4 = 0;
  uVar3 = 0;
  dVar7 = 0.0;
  if (1 < *(int *)(param_1 + 0x80)) {
    if (*(int *)(param_1 + 8) == 0) {
      return 0xffffff76;
    }
    if (0.0 <= param_2) {
      uVar1 = *(uint *)(param_1 + 0x40);
      uVar6 = uVar4;
      dVar8 = 0.0;
      if (0 < (int)uVar1) {
        lVar5 = 8;
        do {
          uVar3 = (uint)uVar4;
          dVar8 = dVar7;
          dVar7 = (double)FUN_1813711b0(param_1,uVar4);
          dVar7 = dVar7 + dVar8;
          if (param_2 < dVar7) break;
          uVar3 = uVar3 + 1;
          uVar4 = (ulonglong)uVar3;
          uVar6 = uVar6 + *(longlong *)(lVar5 + *(longlong *)(param_1 + 0x60));
          lVar5 = lVar5 + 0x10;
          dVar8 = dVar7;
        } while ((int)uVar3 < (int)uVar1);
      }
      if (uVar3 != uVar1) {
        uVar2 = FUN_18136fc00(param_1,(longlong)
                                      ((double)*(int *)(*(longlong *)(param_1 + 0x68) + 8 +
                                                       (longlong)(int)uVar3 * 0x28) *
                                       (param_2 - dVar8) + (double)(longlong)uVar6));
        return uVar2;
      }
    }
  }
  return 0xffffff7d;
}



############ FUN_ 181377470 size=464 ############

undefined8 FUN_181377470(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 uVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  uint uVar11;
  longlong *plVar12;
  longlong *plVar13;
  
  plVar10 = (longlong *)0x0;
  plVar5 = plVar10;
  plVar8 = plVar10;
  plVar12 = plVar10;
  plVar13 = plVar10;
  if ((param_1 != (longlong *)0x0) && (plVar5 = (longlong *)param_1[10], plVar5 != (longlong *)0x0))
  {
    plVar8 = (longlong *)plVar5[1];
    plVar13 = (longlong *)plVar5[0xf];
    if (plVar8 != (longlong *)0x0) {
      plVar12 = (longlong *)plVar8[4];
    }
  }
  plVar9 = param_1 + 1;
  if (param_1 == (longlong *)0x0) {
    plVar9 = plVar10;
  }
  if ((((plVar5 != (longlong *)0x0) && (plVar13 != (longlong *)0x0)) && (plVar8 != (longlong *)0x0))
     && ((plVar12 != (longlong *)0x0 && (plVar9 != (longlong *)0x0)))) {
    FUN_181390c80();
    lVar1 = param_2[1];
    lVar6 = *param_2;
    *plVar9 = 0;
    plVar9[3] = 0;
    *(int *)(plVar9 + 3) = (int)lVar1;
    plVar9[2] = lVar6;
    plVar9[1] = lVar6;
    iVar2 = FUN_181392960(plVar9,1);
    if (iVar2 != 0) {
      return 0xffffff79;
    }
    iVar2 = FUN_181392960(plVar9,(int)plVar13[10]);
    if (iVar2 != -1) {
      *(int *)(param_1 + 7) = iVar2;
      if ((int *)plVar12[(longlong)iVar2 + 4] != (int *)0x0) {
        iVar4 = *(int *)plVar12[(longlong)iVar2 + 4];
        *(int *)((longlong)param_1 + 0x2c) = iVar4;
        if (iVar4 == 0) {
          *(undefined4 *)(param_1 + 5) = 0;
          *(undefined4 *)(param_1 + 6) = 0;
        }
        else {
          uVar3 = FUN_181392960(plVar9,1);
          *(undefined4 *)(param_1 + 5) = uVar3;
          iVar4 = FUN_181392960(plVar9,1);
          *(int *)(param_1 + 6) = iVar4;
          if (iVar4 == -1) {
            return 0xffffff78;
          }
        }
        param_1[8] = param_2[3];
        param_1[9] = param_2[4];
        *(int *)((longlong)param_1 + 0x3c) = (int)param_2[2];
        *(undefined4 *)((longlong)param_1 + 0x34) =
             *(undefined4 *)((longlong)plVar12 + (longlong)*(int *)((longlong)param_1 + 0x2c) * 4);
        lVar6 = FUN_181390d20(param_1,*(int *)((longlong)plVar8 + 4) << 3);
        *param_1 = lVar6;
        plVar5 = plVar10;
        if (0 < *(int *)((longlong)plVar8 + 4)) {
          do {
            uVar7 = FUN_181390d20(param_1,*(int *)((longlong)param_1 + 0x34) << 2);
            uVar11 = (int)plVar5 + 1;
            *(undefined8 *)((longlong)plVar10 + *param_1) = uVar7;
            plVar10 = plVar10 + 1;
            plVar5 = (longlong *)(ulonglong)uVar11;
          } while ((int)uVar11 < *(int *)((longlong)plVar8 + 4));
        }
        uVar7 = (**(code **)((&PTR_PTR_1822fa9e8)
                             [*(int *)((longlong)plVar12 +
                                      (longlong)*(int *)(plVar12[(longlong)iVar2 + 4] + 0xc) * 4 +
                                      0x220)] + 0x20))
                          (param_1,plVar12[(longlong)*(int *)(plVar12[(longlong)iVar2 + 4] + 0xc) +
                                           100]);
        return uVar7;
      }
    }
  }
  return 0xffffff78;
}



############ FUN_ 181391840 size=255 ############

undefined8 FUN_181391840(longlong *param_1,longlong *param_2,int param_3)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  ulonglong uVar8;
  
  uVar7 = *(uint *)((longlong)param_1 + 0x34);
  uVar8 = (ulonglong)(int)uVar7;
  if ((int)param_1[6] <= (int)uVar7) {
    return 0;
  }
  puVar6 = (uint *)(param_1[3] + uVar8 * 4);
  uVar2 = *puVar6;
  if ((uVar2 >> 10 & 1) == 0) {
    if ((param_2 != (longlong *)0x0) || (param_3 != 0)) {
      uVar5 = uVar2 & 0xff;
      uVar4 = uVar2 & 0x200;
      if (uVar5 == 0xff) {
        uVar5 = 0xff;
        do {
          puVar1 = puVar6 + 1;
          puVar6 = puVar6 + 1;
          uVar7 = (int)uVar8 + 1;
          uVar8 = (ulonglong)uVar7;
          uVar3 = *puVar1 & 0xff;
          if ((*puVar1 & 0x200) != 0) {
            uVar4 = 0x200;
          }
          uVar5 = uVar5 + uVar3;
        } while (uVar3 == 0xff);
      }
      if (param_2 != (longlong *)0x0) {
        *(uint *)(param_2 + 2) = uVar4;
        *(uint *)((longlong)param_2 + 0xc) = uVar2 & 0x100;
        *param_2 = (longlong)(int)param_1[2] + *param_1;
        param_2[4] = param_1[0x2d];
        param_2[3] = *(longlong *)(param_1[4] + (longlong)(int)uVar7 * 8);
        *(uint *)(param_2 + 1) = uVar5;
      }
      if (param_3 != 0) {
        *(uint *)(param_1 + 2) = (int)param_1[2] + uVar5;
        param_1[0x2d] = param_1[0x2d] + 1;
        *(uint *)((longlong)param_1 + 0x34) = uVar7 + 1;
      }
    }
    return 1;
  }
  param_1[0x2d] = param_1[0x2d] + 1;
  *(uint *)((longlong)param_1 + 0x34) = uVar7 + 1;
  return 0xffffffff;
}



############ FUN_ 181388250 size=661 ############

void FUN_181388250(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  undefined8 *_Memory_00;
  longlong lVar2;
  void *_Memory_01;
  int *piVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  ulonglong uVar6;
  uint uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  
  _Memory = (void *)param_1[4];
  if (_Memory == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    param_1[3] = 0;
    param_1[4] = 0;
    return;
  }
  uVar9 = 0;
  if (0 < *(int *)((longlong)_Memory + 8)) {
    puVar4 = (undefined8 *)((longlong)_Memory + 0x20);
    uVar6 = uVar9;
    do {
      if ((void *)*puVar4 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*puVar4);
      }
      uVar7 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar7;
      puVar4 = puVar4 + 1;
    } while ((int)uVar7 < *(int *)((longlong)_Memory + 8));
  }
  if (0 < *(int *)((longlong)_Memory + 0xc)) {
    piVar3 = (int *)((longlong)_Memory + 0x220);
    plVar5 = (longlong *)((longlong)_Memory + 800);
    uVar6 = uVar9;
    do {
      if (*plVar5 != 0) {
        (**(code **)((&PTR_PTR_1822fa9e8)[*piVar3] + 0x10))();
      }
      uVar7 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar7;
      plVar5 = plVar5 + 1;
      piVar3 = piVar3 + 1;
    } while ((int)uVar7 < *(int *)((longlong)_Memory + 0xc));
  }
  if (0 < *(int *)((longlong)_Memory + 0x10)) {
    piVar3 = (int *)((longlong)_Memory + 0x520);
    plVar5 = (longlong *)((longlong)_Memory + 0x620);
    uVar6 = uVar9;
    do {
      if (*plVar5 != 0) {
        (**(code **)((&PTR_DAT_1822f5a90)[*piVar3] + 0x18))();
      }
      uVar7 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar7;
      plVar5 = plVar5 + 1;
      piVar3 = piVar3 + 1;
    } while ((int)uVar7 < *(int *)((longlong)_Memory + 0x10));
  }
  if (0 < *(int *)((longlong)_Memory + 0x14)) {
    piVar3 = (int *)((longlong)_Memory + 0x820);
    plVar5 = (longlong *)((longlong)_Memory + 0x920);
    uVar6 = uVar9;
    do {
      if (*plVar5 != 0) {
        (**(code **)((&PTR_DAT_182280c20)[*piVar3] + 0x18))();
      }
      uVar7 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar7;
      plVar5 = plVar5 + 1;
      piVar3 = piVar3 + 1;
    } while ((int)uVar7 < *(int *)((longlong)_Memory + 0x14));
  }
  if (0 < *(int *)((longlong)_Memory + 0x18)) {
    puVar4 = (undefined8 *)((longlong)_Memory + 0xb20);
    uVar6 = uVar9;
    uVar8 = uVar9;
    do {
      _Memory_00 = (undefined8 *)*puVar4;
      if ((_Memory_00 != (undefined8 *)0x0) && (*(int *)(_Memory_00 + 6) != 0)) {
        if ((void *)_Memory_00[5] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free((void *)_Memory_00[5]);
        }
        if ((void *)_Memory_00[1] == (void *)0x0) {
          *_Memory_00 = 0;
          _Memory_00[1] = 0;
          _Memory_00[2] = 0;
          _Memory_00[3] = 0;
          _Memory_00[4] = 0;
          _Memory_00[5] = 0;
          _Memory_00[6] = 0;
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
                    /* WARNING: Subroutine does not return */
        free((void *)_Memory_00[1]);
      }
      lVar2 = *(longlong *)((longlong)_Memory + 0x1320);
      if (lVar2 != 0) {
        _Memory_01 = *(void **)(uVar8 + 0x18 + lVar2);
        pvVar1 = (void *)(uVar8 + lVar2);
        if (_Memory_01 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_01);
        }
        if (*(void **)((longlong)pvVar1 + 0x20) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free(*(void **)((longlong)pvVar1 + 0x20));
        }
        if (*(void **)((longlong)pvVar1 + 0x28) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free(*(void **)((longlong)pvVar1 + 0x28));
        }
        if (*(void **)((longlong)pvVar1 + 0x30) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free(*(void **)((longlong)pvVar1 + 0x30));
        }
        if (*(void **)((longlong)pvVar1 + 0x38) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
          free(*(void **)((longlong)pvVar1 + 0x38));
        }
        memset(pvVar1,0,0x58);
      }
      uVar7 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar7;
      puVar4 = puVar4 + 1;
      uVar8 = uVar8 + 0x58;
    } while ((int)uVar7 < *(int *)((longlong)_Memory + 0x18));
  }
  if (*(void **)((longlong)_Memory + 0x1320) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)_Memory + 0x1320));
  }
  if (0 < *(int *)((longlong)_Memory + 0x1c)) {
    puVar4 = (undefined8 *)((longlong)_Memory + 0x1328);
    do {
      pvVar1 = (void *)*puVar4;
      if (pvVar1 != (void *)0x0) {
        memset(pvVar1,0,0x208);
                    /* WARNING: Subroutine does not return */
        free(pvVar1);
      }
      uVar7 = (int)uVar9 + 1;
      uVar9 = (ulonglong)uVar7;
      puVar4 = puVar4 + 1;
    } while ((int)uVar7 < *(int *)((longlong)_Memory + 0x1c));
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181371c60 size=49 ############

void FUN_181371c60(longlong param_1)

{
  FUN_18138ffc0(param_1 + 0x218);
  FUN_181390bc0(param_1 + 0x298);
  *(undefined4 *)(param_1 + 0x80) = 2;
  return;
}



############ FUN_ 181372660 size=1470 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181372660(longlong param_1,undefined8 *param_2,undefined8 *param_3,longlong *param_4,
                  int *param_5,longlong *param_6)

{
  uint *puVar1;
  byte bVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  void *pvVar7;
  int *piVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  ulonglong uVar12;
  undefined1 auStack_f8 [32];
  undefined8 *local_d8;
  undefined8 *local_d0;
  longlong local_c8;
  uint local_c0;
  uint local_bc;
  uint local_b8;
  undefined8 local_b0;
  longlong local_a8;
  undefined8 local_a0;
  longlong local_98;
  longlong local_90;
  ulonglong local_88;
  longlong local_80 [4];
  int local_60;
  short local_5c;
  ulonglong local_58;
  
  local_58 = DAT_182615970 ^ (ulonglong)auStack_f8;
  iVar10 = 0;
  local_d8 = param_2;
  local_d0 = param_3;
  if (param_6 == (longlong *)0x0) {
    lVar6 = FUN_1813730a0(param_1,local_80,0x10000);
    if (lVar6 == -0x80) {
    }
    if (lVar6 < 0) {
    }
    param_6 = local_80;
  }
  *param_2 = 0;
  param_2[1] = 0;
  param_2[2] = 0;
  param_2[3] = 0;
  param_2[4] = 0;
  pvVar7 = calloc(1,0x1670);
  param_2[4] = pvVar7;
  *param_3 = 0;
  param_3[1] = 0;
  param_3[2] = 0;
  param_3[3] = 0;
  *(undefined4 *)(param_1 + 0x80) = 2;
  lVar6 = *param_6;
  bVar2 = *(byte *)(lVar6 + 5);
  do {
    if ((bVar2 & 2) == 0) {
LAB_1813728d6:
      iVar5 = iVar10;
      if (*(int *)(param_1 + 0x80) == 3) {
        do {
          if (1 < iVar10) {
          }
          do {
            uVar11 = *(uint *)(param_1 + 0xd4);
            uVar12 = (ulonglong)(int)uVar11;
            if (*(int *)(param_1 + 0xd0) <= (int)uVar11) break;
            uVar9 = *(uint *)(*(longlong *)(param_1 + 0xb8) + uVar12 * 4);
            lVar6 = *(longlong *)(param_1 + 0xb8) + uVar12 * 4;
            if ((uVar9 >> 10 & 1) != 0) {
              *(longlong *)(param_1 + 0x208) = *(longlong *)(param_1 + 0x208) + 1;
              *(uint *)(param_1 + 0xd4) = uVar11 + 1;
              goto LAB_181372bee;
            }
            local_c0 = uVar9 & 0xff;
            local_b8 = uVar9 & 0x200;
            local_bc = uVar9 & 0x100;
            if (local_c0 == 0xff) {
              local_c0 = 0xff;
              do {
                puVar1 = (uint *)(lVar6 + 4);
                lVar6 = lVar6 + 4;
                uVar11 = (int)uVar12 + 1;
                uVar12 = (ulonglong)uVar11;
                uVar9 = *puVar1 & 0xff;
                if ((*puVar1 & 0x200) != 0) {
                  local_b8 = 0x200;
                }
                local_c0 = local_c0 + uVar9;
              } while (uVar9 == 0xff);
            }
            local_a8 = *(longlong *)(param_1 + 0x208);
            local_c8 = (longlong)*(int *)(param_1 + 0xb0) + *(longlong *)(param_1 + 0xa0);
            local_b0 = *(undefined8 *)(*(longlong *)(param_1 + 0xc0) + (longlong)(int)uVar11 * 8);
            *(uint *)(param_1 + 0xb0) = *(int *)(param_1 + 0xb0) + local_c0;
            *(uint *)(param_1 + 0xd4) = uVar11 + 1;
            *(longlong *)(param_1 + 0x208) = local_a8 + 1;
            iVar4 = FUN_1813877e0(param_2,local_d0,&local_c8);
            if (iVar4 != 0) goto LAB_181372bee;
            iVar10 = iVar10 + 1;
            param_2 = local_d8;
          } while (iVar10 < 2);
          if (1 < iVar10) {
          }
          while( true ) {
            lVar6 = FUN_1813730a0(param_1,param_6,0x10000);
            if (lVar6 < 0) goto LAB_181372bee;
            if (*(int *)(param_1 + 0x200) == *(int *)(*param_6 + 0xe)) break;
            if ((*(byte *)(*param_6 + 5) & 2) != 0) {
              if (iVar5 != 0) goto LAB_181372bee;
              iVar5 = 1;
            }
          }
          FUN_1813919f0(param_1 + 0xa0,param_6);
          param_2 = local_d8;
        } while (iVar10 < 2);
      }
      else {
LAB_181372bee:
        FUN_181388250(local_d8);
        FUN_181388560(local_d0);
        *(undefined4 *)(param_1 + 0x80) = 2;
      }
    }
    if (param_4 != (longlong *)0x0) {
      iVar5 = *(int *)(lVar6 + 0xe);
      piVar8 = (int *)*param_4;
      iVar4 = *param_5;
      if (piVar8 != (int *)0x0) {
        while (iVar4 != 0) {
          if (*piVar8 == iVar5) {
            if ((void *)*param_4 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
              free((void *)*param_4);
            }
            *param_4 = 0;
            *param_5 = 0;
            goto LAB_181372bee;
          }
          piVar8 = piVar8 + 1;
          iVar4 = iVar4 + -1;
        }
      }
      iVar4 = *param_5 + 1;
      *param_5 = iVar4;
      if ((void *)*param_4 == (void *)0x0) {
        pvVar7 = malloc(4);
      }
      else {
        pvVar7 = realloc((void *)*param_4,(longlong)iVar4 << 2);
      }
      *param_4 = (longlong)pvVar7;
      *(int *)(*param_4 + (longlong)(*param_5 + -1) * 4) = iVar5;
      param_2 = local_d8;
    }
    if (*(int *)(param_1 + 0x80) < 3) {
      uVar3 = *(undefined4 *)(*param_6 + 0xe);
      *(undefined8 *)(param_1 + 0xac) = 0;
      *(undefined4 *)(param_1 + 0x200) = uVar3;
      *(undefined8 *)(param_1 + 0xcc) = 0;
      *(undefined4 *)(param_1 + 0xd4) = 0;
      *(undefined8 *)(param_1 + 500) = 0;
      *(undefined4 *)(param_1 + 0x1fc) = 0;
      *(undefined4 *)(param_1 + 0x204) = 0xffffffff;
      *(undefined8 *)(param_1 + 0x208) = 0;
      *(undefined8 *)(param_1 + 0x210) = 0;
      FUN_1813919f0((longlong *)(param_1 + 0xa0),param_6);
      uVar11 = *(uint *)(param_1 + 0xd4);
      uVar12 = (ulonglong)(int)uVar11;
      param_2 = local_d8;
      if ((int)uVar11 < *(int *)(param_1 + 0xd0)) {
        uVar9 = *(uint *)(*(longlong *)(param_1 + 0xb8) + uVar12 * 4);
        lVar6 = *(longlong *)(param_1 + 0xb8) + uVar12 * 4;
        if ((uVar9 >> 10 & 1) == 0) {
          local_c0 = uVar9 & 0xff;
          local_bc = uVar9 & 0x100;
          local_b8 = uVar9 & 0x200;
          uVar9 = local_c0;
          while (uVar9 == 0xff) {
            puVar1 = (uint *)(lVar6 + 4);
            lVar6 = lVar6 + 4;
            uVar11 = (int)uVar12 + 1;
            uVar12 = (ulonglong)uVar11;
            uVar9 = *puVar1 & 0xff;
            if ((*puVar1 & 0x200) != 0) {
              local_b8 = 0x200;
            }
            local_c0 = local_c0 + uVar9;
          }
          local_c8 = (longlong)*(int *)(param_1 + 0xb0) + *(longlong *)(param_1 + 0xa0);
          local_a8 = *(longlong *)(param_1 + 0x208);
          local_b0 = *(undefined8 *)(*(longlong *)(param_1 + 0xc0) + (longlong)(int)uVar11 * 8);
          *(uint *)(param_1 + 0xb0) = *(int *)(param_1 + 0xb0) + local_c0;
          *(uint *)(param_1 + 0xd4) = uVar11 + 1;
          *(longlong *)(param_1 + 0x208) = local_a8 + 1;
          local_88 = (ulonglong)local_c0;
          local_a0 = 0;
          local_98 = local_c8;
          local_90 = local_c8;
          if ((local_bc != 0) &&
             (iVar5 = FUN_181392960(&local_a0,8), param_2 = local_d8, iVar5 == 1)) {
            local_60 = 0;
            local_5c = 0;
            FUN_181388aa0(&local_a0,&local_60,6);
            param_2 = local_d8;
            if ((local_60 == s_vorbis_1821e47fc._0_4_) && (local_5c == s_vorbis_1821e47fc._4_2_)) {
              *(undefined4 *)(param_1 + 0x80) = 3;
              iVar5 = FUN_1813877e0(local_d8,local_d0,&local_c8);
              if (iVar5 != 0) goto LAB_181372bee;
            }
          }
        }
        else {
          *(longlong *)(param_1 + 0x208) = *(longlong *)(param_1 + 0x208) + 1;
          *(uint *)(param_1 + 0xd4) = uVar11 + 1;
        }
      }
    }
    lVar6 = FUN_1813730a0(param_1,param_6,0x10000);
    if ((lVar6 == -0x80) || (lVar6 < 0)) goto LAB_181372bee;
    if ((*(int *)(param_1 + 0x80) == 3) && (*(int *)(param_1 + 0x200) == *(int *)(*param_6 + 0xe)))
    {
      FUN_1813919f0(param_1 + 0xa0,param_6);
      goto LAB_1813728d6;
    }
    lVar6 = *param_6;
    bVar2 = *(byte *)(lVar6 + 5);
  } while( true );
}



############ FUN_ 181388560 size=144 ############

void FUN_181388560(longlong *param_1)

{
  longlong lVar1;
  int iVar2;
  
  if (param_1 != (longlong *)0x0) {
    if (*param_1 != 0) {
      iVar2 = 0;
      if (0 < (int)param_1[2]) {
        lVar1 = 0;
        do {
          if (*(void **)(lVar1 + *param_1) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
            free(*(void **)(lVar1 + *param_1));
          }
          iVar2 = iVar2 + 1;
          lVar1 = lVar1 + 8;
        } while (iVar2 < (int)param_1[2]);
      }
                    /* WARNING: Subroutine does not return */
      free((void *)*param_1);
    }
    if ((void *)param_1[1] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[1]);
    }
    if ((void *)param_1[3] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[3]);
    }
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    param_1[3] = 0;
  }
  return;
}



############ FUN_ 18136f8b0 size=285 ############

ulonglong FUN_18136f8b0(longlong param_1,undefined8 *param_2,uint param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  longlong lVar2;
  ulonglong uVar3;
  uint uVar4;
  longlong lVar5;
  int iVar6;
  
  do {
    if (*(int *)(param_1 + 0x80) == 4) {
      lVar2 = *(longlong *)(param_1 + 0x220);
      if ((-1 < *(int *)(param_1 + 0x240)) &&
         (*(int *)(param_1 + 0x240) < *(int *)(param_1 + 0x23c))) {
        iVar6 = 0;
        if (0 < *(int *)(lVar2 + 4)) {
          lVar5 = 0;
          do {
            iVar6 = iVar6 + 1;
            *(longlong *)(lVar5 + *(longlong *)(param_1 + 0x230)) =
                 *(longlong *)(lVar5 + *(longlong *)(param_1 + 0x228)) +
                 (longlong)*(int *)(param_1 + 0x240) * 4;
            lVar5 = lVar5 + 8;
          } while (iVar6 < *(int *)(lVar2 + 4));
        }
        uVar4 = *(int *)(param_1 + 0x23c) - *(int *)(param_1 + 0x240);
        if (uVar4 != 0) {
          uVar1 = *(undefined4 *)(*(longlong *)(*(longlong *)(param_1 + 0x68) + 0x20) + 0x1668);
          if (param_2 != (undefined8 *)0x0) {
            *param_2 = *(undefined8 *)(param_1 + 0x230);
          }
          if ((int)param_3 < (int)uVar4) {
            uVar4 = param_3;
          }
          if ((uVar4 == 0) ||
             ((int)(*(int *)(param_1 + 0x240) + uVar4) <= *(int *)(param_1 + 0x23c))) {
            *(int *)(param_1 + 0x240) = *(int *)(param_1 + 0x240) + uVar4;
          }
          *(longlong *)(param_1 + 0x78) =
               *(longlong *)(param_1 + 0x78) + (longlong)(int)(uVar4 << ((byte)uVar1 & 0x1f));
          if (param_4 != (undefined4 *)0x0) {
            *param_4 = *(undefined4 *)(param_1 + 0x88);
          }
          return (ulonglong)uVar4;
        }
      }
    }
    uVar3 = FUN_181371870(param_1);
    if ((int)uVar3 == -2) {
      return 0;
    }
  } while (0 < (int)uVar3);
  return uVar3;
}



############ FUN_ 1813af7b0 size=353 ############

undefined1
FUN_1813af7b0(longlong *param_1,undefined8 *param_2,int param_3,longlong param_4,int param_5,
             char param_6)

{
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  void *_Src;
  int iVar5;
  int iVar6;
  
  lVar4 = (longlong)param_5;
  iVar5 = 0;
  if (param_4 < 0) {
    lVar3 = (longlong)(param_3 + -1);
    lVar2 = -param_4;
    if (lVar4 < -param_4) {
      lVar2 = lVar4;
    }
    iVar5 = (int)lVar2;
    if (-1 < param_3 + -1) {
      do {
        if ((void *)param_2[lVar3] != (void *)0x0) {
          memset((void *)param_2[lVar3],0,(longlong)iVar5 << 2);
        }
        lVar3 = lVar3 + -1;
      } while (-1 < lVar3);
    }
    param_5 = param_5 - iVar5;
    param_4 = 0;
  }
  if (0 < param_5) {
    iVar6 = (int)param_1[4];
    if (param_3 < (int)param_1[4]) {
      iVar6 = param_3;
    }
    cVar1 = (**(code **)(*param_1 + 0x20))(param_1,param_2,iVar6,iVar5,param_4,param_5);
    if (cVar1 == '\0') {
      return 0;
    }
    iVar5 = (int)param_1[4];
    lVar2 = (longlong)iVar5;
    if (iVar5 < param_3) {
      if (param_6 == '\0') {
        for (; lVar2 < param_3; lVar2 = lVar2 + 1) {
          if ((void *)param_2[lVar2] != (void *)0x0) {
            memset((void *)param_2[lVar2],0,lVar4 * 4);
          }
        }
      }
      else {
        lVar3 = (longlong)(iVar5 + -1);
        _Src = (void *)*param_2;
        if (0 < iVar5 + -1) {
          do {
            _Src = (void *)param_2[lVar3];
            if ((void *)param_2[lVar3] != (void *)0x0) break;
            lVar3 = lVar3 + -1;
            _Src = (void *)*param_2;
          } while (0 < lVar3);
        }
        if (_Src != (void *)0x0) {
          for (; lVar2 < param_3; lVar2 = lVar2 + 1) {
            if ((void *)param_2[lVar2] != (void *)0x0) {
              memcpy((void *)param_2[lVar2],_Src,lVar4 * 4);
            }
          }
        }
      }
    }
  }
  return 1;
}



############ FUN_ 1813af700 size=157 ############

void FUN_1813af700(undefined8 param_1,longlong param_2,longlong param_3,int param_4,
                  undefined4 param_5,undefined8 param_6,int param_7,char param_8)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar2 = (longlong)param_7;
  lVar1 = 0;
  if (0 < lVar2) {
    do {
      LOCK();
      *(undefined1 *)(param_3 + 0x120) = 0;
      UNLOCK();
      *(longlong *)(param_2 + lVar1 * 8) =
           *(longlong *)(*(longlong *)(param_3 + 0x10) + lVar1 * 8) + (longlong)param_4 * 4;
      lVar1 = lVar1 + 1;
    } while (lVar1 < lVar2);
  }
  *(undefined8 *)(param_2 + lVar2 * 8) = 0;
  FUN_1813af7b0(param_1,param_2,param_7,param_6,param_5,1);
  if (param_8 != '\0') {
    FUN_1813af920(param_2,param_7,param_5);
  }
  return;
}



############ FUN_ 1813af920 size=587 ############

/* WARNING: Removing unreachable block (ram,0x0001813afa1e) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813af920(longlong param_1,int param_2,uint param_3)

{
  float *pfVar1;
  longlong lVar2;
  int *piVar3;
  int *piVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  float fVar17;
  uint uVar18;
  ulonglong uVar19;
  float *pfVar20;
  longlong lVar21;
  longlong lVar22;
  float *pfVar23;
  float *pfVar24;
  longlong lVar25;
  longlong lVar26;
  
  fVar17 = DAT_1824c3c28;
  if (0 < param_2) {
    lVar22 = 0;
    do {
      pfVar23 = *(float **)(param_1 + lVar22 * 8);
      if (pfVar23 != (float *)0x0) {
        uVar18 = (int)(param_3 + ((int)param_3 >> 0x1f & 3U)) >> 2;
        uVar19 = (ulonglong)uVar18;
        pfVar24 = pfVar23;
        if (((ulonglong)pfVar23 & 0xf) == 0) {
          if (0 < (int)uVar18) {
            do {
              fVar5 = *pfVar23;
              fVar6 = pfVar23[1];
              fVar7 = pfVar23[2];
              fVar8 = pfVar23[3];
              pfVar23 = pfVar23 + 4;
              *pfVar24 = (float)(int)fVar5 * 4.656613e-10;
              pfVar24[1] = (float)(int)fVar6 * 4.656613e-10;
              pfVar24[2] = (float)(int)fVar7 * 4.656613e-10;
              pfVar24[3] = (float)(int)fVar8 * 4.656613e-10;
              pfVar24 = pfVar24 + 4;
              uVar19 = uVar19 - 1;
            } while (uVar19 != 0);
          }
        }
        else if (0 < (int)uVar18) {
          do {
            fVar5 = *pfVar23;
            fVar6 = pfVar23[1];
            fVar7 = pfVar23[2];
            fVar8 = pfVar23[3];
            pfVar23 = pfVar23 + 4;
            *pfVar24 = (float)(int)fVar5 * 4.656613e-10;
            pfVar24[1] = (float)(int)fVar6 * 4.656613e-10;
            pfVar24[2] = (float)(int)fVar7 * 4.656613e-10;
            pfVar24[3] = (float)(int)fVar8 * 4.656613e-10;
            pfVar24 = pfVar24 + 4;
            uVar19 = uVar19 - 1;
          } while (uVar19 != 0);
        }
        fVar8 = _UNK_1824c4a7c;
        fVar7 = _UNK_1824c4a78;
        fVar6 = _UNK_1824c4a74;
        fVar5 = _DAT_1824c4a70;
        uVar18 = param_3 & 3;
        if (uVar18 != 0) {
          lVar26 = 0;
          if (((uVar18 != 0) && (0xf < uVar18)) &&
             ((pfVar23 + (int)(uVar18 - 1) < pfVar24 || (pfVar24 + (int)(uVar18 - 1) < pfVar23)))) {
            pfVar20 = pfVar24 + 4;
            do {
              piVar3 = (int *)((longlong)pfVar23 + (-0x10 - (longlong)pfVar24) + (longlong)pfVar20);
              iVar9 = piVar3[1];
              iVar10 = piVar3[2];
              iVar11 = piVar3[3];
              lVar26 = lVar26 + 0x10;
              pfVar1 = pfVar20 + 0x10;
              piVar4 = (int *)((longlong)pfVar23 + (-0x40 - (longlong)pfVar24) + (longlong)pfVar1);
              iVar12 = *piVar4;
              iVar13 = piVar4[1];
              iVar14 = piVar4[2];
              iVar15 = piVar4[3];
              pfVar20[-4] = (float)*piVar3 * fVar5;
              pfVar20[-3] = (float)iVar9 * fVar6;
              pfVar20[-2] = (float)iVar10 * fVar7;
              pfVar20[-1] = (float)iVar11 * fVar8;
              piVar3 = (int *)((longlong)pfVar23 + (-0x30 - (longlong)pfVar24) + (longlong)pfVar1);
              iVar9 = *piVar3;
              iVar10 = piVar3[1];
              iVar11 = piVar3[2];
              iVar16 = piVar3[3];
              *pfVar20 = (float)iVar12 * fVar5;
              pfVar20[1] = (float)iVar13 * fVar6;
              pfVar20[2] = (float)iVar14 * fVar7;
              pfVar20[3] = (float)iVar15 * fVar8;
              piVar3 = (int *)((longlong)pfVar23 + (-0x20 - (longlong)pfVar24) + (longlong)pfVar1);
              iVar12 = *piVar3;
              iVar13 = piVar3[1];
              iVar14 = piVar3[2];
              iVar15 = piVar3[3];
              pfVar20[4] = (float)iVar9 * fVar5;
              pfVar20[5] = (float)iVar10 * fVar6;
              pfVar20[6] = (float)iVar11 * fVar7;
              pfVar20[7] = (float)iVar16 * fVar8;
              pfVar20[8] = (float)iVar12 * fVar5;
              pfVar20[9] = (float)iVar13 * fVar6;
              pfVar20[10] = (float)iVar14 * fVar7;
              pfVar20[0xb] = (float)iVar15 * fVar8;
              pfVar20 = pfVar1;
            } while (lVar26 < 0);
          }
          lVar21 = (longlong)(int)uVar18;
          if (lVar26 < lVar21) {
            if (3 < lVar21 - lVar26) {
              lVar2 = lVar26 + 1;
              lVar25 = ((lVar21 - lVar26) - 4U >> 2) + 1;
              lVar26 = lVar26 + lVar25 * 4;
              pfVar20 = pfVar24 + lVar2;
              do {
                pfVar1 = pfVar20 + 4;
                pfVar20[-1] = (float)*(int *)((longlong)pfVar23 + (-4 - (longlong)pfVar24) +
                                             (longlong)pfVar20) * fVar17;
                *pfVar20 = (float)*(int *)((longlong)pfVar23 + (-0x10 - (longlong)pfVar24) +
                                          (longlong)pfVar1) * fVar17;
                pfVar20[1] = (float)*(int *)((longlong)pfVar23 + (-0xc - (longlong)pfVar24) +
                                            (longlong)pfVar1) * fVar17;
                pfVar20[2] = (float)*(int *)((longlong)pfVar23 + (-8 - (longlong)pfVar24) +
                                            (longlong)pfVar1) * fVar17;
                lVar25 = lVar25 + -1;
                pfVar20 = pfVar1;
              } while (lVar25 != 0);
            }
            if (lVar26 < lVar21) {
              lVar21 = lVar21 - lVar26;
              pfVar20 = pfVar24 + lVar26;
              do {
                *pfVar20 = (float)*(int *)(((longlong)pfVar23 - (longlong)pfVar24) +
                                          (longlong)pfVar20) * fVar17;
                lVar21 = lVar21 + -1;
                pfVar20 = pfVar20 + 1;
              } while (lVar21 != 0);
            }
          }
        }
      }
      lVar22 = lVar22 + 1;
    } while (lVar22 < param_2);
  }
  return;
}



############ FUN_ 180486840 size=192 ############

undefined8 * FUN_180486840(undefined8 param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  puVar4 = DAT_182673770;
  if (*(char *)((longlong)DAT_182673770[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar3 = DAT_182673770;
    puVar5 = (undefined8 *)DAT_182673770[1];
    do {
      puVar4 = puVar5;
      iVar2 = FUN_18048cbc0(puVar4[4],uVar1);
      if (iVar2 < 0) {
        puVar5 = (undefined8 *)puVar4[2];
        puVar4 = puVar3;
      }
      else {
        puVar5 = (undefined8 *)*puVar4;
      }
      puVar3 = puVar4;
    } while (*(char *)((longlong)puVar5 + 0x19) == '\0');
  }
  if ((puVar4 != DAT_182673770) && (iVar2 = FUN_18048cbc0(*param_2,puVar4[4]), -1 < iVar2)) {
    return puVar4 + 5;
  }
  FUN_18048ff70();
  FUN_180490000();
  return param_2 + 5;
}



############ FUN_ 180490000 size=648 ############

undefined8 *
FUN_180490000(undefined8 param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  undefined8 uVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  
  plVar6 = DAT_182673770;
  if (DAT_182673778 == 0) {
    FUN_1804916f0(param_1,param_2,1,DAT_182673770);
  }
  else {
    if (param_3 == (longlong *)*DAT_182673770) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_1804916f0();
        return param_2;
      }
    }
    else if (param_3 == DAT_182673770) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(DAT_182673770[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_1804916f0();
        return param_2;
      }
    }
    else {
      uVar3 = *param_4;
      iVar7 = FUN_18048cbc0(uVar3,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar4 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar4[2] + 0x19);
              plVar9 = plVar4;
              plVar4 = (longlong *)plVar4[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar4 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar5 = plVar4, cVar1 == '\0' && (plVar9 == (longlong *)*plVar5))) {
              cVar1 = *(char *)(plVar5[1] + 0x19);
              plVar4 = (longlong *)plVar5[1];
              plVar9 = plVar5;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar5;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar3);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_1804916f0();
            return param_2;
          }
          FUN_1804916f0();
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar3);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar4 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar4 + 0x19);
            plVar9 = plVar4;
            plVar4 = (longlong *)*plVar4;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar4 = (longlong *)param_3[1];
          while ((plVar9 = plVar4, cVar2 == '\0' && (param_3 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar4 = (longlong *)plVar9[1];
            param_3 = plVar9;
          }
        }
        if ((plVar9 == plVar6) || (iVar7 = FUN_18048cbc0(uVar3,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_1804916f0();
            return param_2;
          }
          FUN_1804916f0();
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_180491940();
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 180491940 size=405 ############

undefined8 *
FUN_180491940(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4,
             void *param_5)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  bool bVar7;
  
  puVar3 = DAT_182673770;
  bVar7 = true;
  puVar5 = DAT_182673770;
  if (*(char *)((longlong)DAT_182673770[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)DAT_182673770[1];
    do {
      puVar5 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar5[4]);
      bVar7 = iVar4 < 0;
      if (bVar7) {
        puVar6 = (undefined8 *)*puVar5;
      }
      else {
        puVar6 = (undefined8 *)puVar5[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if (bVar7) {
    if (puVar5 == (undefined8 *)*puVar3) {
      puVar5 = (undefined8 *)FUN_1804916f0();
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar5 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar5;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar5 = puVar3;
        puVar3 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
          puVar5 = puVar3;
          puVar3 = (undefined8 *)puVar3[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar3 = (undefined8 *)puVar5[1];
        while ((puVar6 = puVar3, cVar1 == '\0' && (puVar5 == (undefined8 *)*puVar6))) {
          cVar1 = *(char *)((longlong)puVar6[1] + 0x19);
          puVar3 = (undefined8 *)puVar6[1];
          puVar5 = puVar6;
        }
        if (*(char *)((longlong)puVar5 + 0x19) == '\0') {
          puVar5 = puVar6;
        }
      }
    }
    else {
      puVar5 = (undefined8 *)puVar5[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar5[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_1804916f0();
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  FUN_18048c5e0((longlong)param_5 + 0x20);
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 18122c1b0 size=371 ############

longlong * FUN_18122c1b0(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  
  if (*(char *)*param_3 == '\0') {
    *param_2 = (longlong)&DAT_1821dbf98;
    return param_2;
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  FUN_18122c130();
  iVar7 = *(int *)((longlong)param_1 + 0xc);
  iVar6 = 0;
  if (0 < iVar7) {
    lVar5 = *param_1;
    lVar2 = *param_3;
    do {
      plVar1 = (longlong *)(lVar5 + (longlong)iVar6 * 8);
      if (lVar2 == *(longlong *)(lVar5 + (longlong)iVar6 * 8)) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_18048cbc0(lVar2,*plVar1);
      }
      if (iVar4 == 0) {
        lVar5 = *plVar1;
LAB_18122c309:
        *param_2 = lVar5;
        if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
          UNLOCK();
        }
        goto LAB_18122c2c9;
      }
      iVar3 = (iVar7 + iVar6) / 2;
      if (iVar3 == iVar6) {
        if (0 < iVar4) {
          iVar6 = iVar6 + 1;
        }
        break;
      }
      plVar1 = (longlong *)(lVar5 + (longlong)iVar3 * 8);
      if (lVar2 == *(longlong *)(lVar5 + (longlong)iVar3 * 8)) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_18048cbc0(lVar2,*plVar1);
      }
      if (iVar4 == 0) {
        lVar5 = *plVar1;
        goto LAB_18122c309;
      }
      if (0 < iVar4) {
        iVar6 = iVar3;
        iVar3 = iVar7;
      }
      iVar7 = iVar3;
    } while (iVar6 < iVar7);
  }
  FUN_180489070(param_1,iVar6,param_3);
  lVar5 = *(longlong *)(*param_1 + (longlong)iVar6 * 8);
  *param_2 = lVar5;
  if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
    UNLOCK();
  }
LAB_18122c2c9:
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  return param_2;
}



############ FUN_ 181241890 size=867 ############

longlong * FUN_181241890(longlong *param_1,undefined8 *param_2)

{
  uint uVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  longlong lVar8;
  uint *puVar9;
  char *pcVar10;
  char *local_res10;
  char *local_res18;
  longlong local_res20;
  longlong local_70;
  undefined1 local_68 [8];
  longlong local_60;
  longlong local_58;
  longlong local_50;
  byte *local_48;
  undefined8 local_40;
  char *local_38;
  char *local_30;
  
  local_40 = 0xfffffffffffffffe;
  if (*(char *)*param_2 == '\0') {
    *param_1 = (longlong)&DAT_1821dbf98;
    return param_1;
  }
  uVar5 = FUN_1812316c0(param_2,&local_70,0x2f);
  uVar5 = FUN_181242220(&local_res20,uVar5);
  FUN_181241ca0(&local_res10,uVar5);
  puVar9 = (uint *)(local_res20 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_70 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  iVar3 = FUN_180492f10(&local_res10);
  pcVar2 = local_res10;
  if (iVar3 == 0x5c) {
    iVar3 = FUN_180493050(&local_res10,1);
    pcVar2 = local_res10;
    pcVar10 = local_res18;
    if (iVar3 != 0x5c) {
      uVar5 = FUN_181217460(&local_60);
      plVar6 = (longlong *)FUN_1812490c0(uVar5,local_68,0,2);
      puVar7 = (undefined8 *)FUN_181232d30(plVar6,&local_res10);
      pcVar2 = (char *)*puVar7;
      if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
        UNLOCK();
      }
      puVar9 = (uint *)(*plVar6 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      local_38 = local_res10;
      puVar9 = (uint *)(local_res10 + -0x10);
      local_res10 = pcVar2;
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_60 + -0x10);
      pcVar10 = local_res18;
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) goto LAB_181241a36;
      }
    }
  }
  else {
    iVar3 = FUN_18049bc80(local_res10,0x3a);
    pcVar10 = local_res18;
    if (iVar3 < 0) {
      uVar5 = FUN_181217460(&local_50);
      plVar6 = (longlong *)FUN_181245100(uVar5,&local_58,pcVar2);
      lVar8 = *plVar6;
      *param_1 = lVar8;
      if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar8 + -0x10) = *(int *)(lVar8 + -0x10) + 1;
        UNLOCK();
      }
      puVar9 = (uint *)(local_58 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_50 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_res10 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
LAB_181241be9:
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      return param_1;
    }
  }
  do {
    do {
      local_res18 = pcVar10;
      pcVar10 = pcVar2;
      if (*pcVar10 == '\0') {
LAB_181241bc2:
        *param_1 = (longlong)pcVar10;
        if ((DAT_1821dbf88 & 0x30000000) != 0) {
          return param_1;
        }
        LOCK();
        UNLOCK();
        if (DAT_1821dbf88 != 0) {
          DAT_1821dbf88 = DAT_1821dbf88 - 1;
          return param_1;
        }
        puVar9 = &DAT_1821dbf88;
        DAT_1821dbf88 = 0xffffffff;
        goto LAB_181241be9;
      }
      lVar8 = -1;
      do {
        lVar8 = lVar8 + 1;
      } while (pcVar10[lVar8] != '\0');
      local_48 = (byte *)(pcVar10 + lVar8);
      iVar3 = 0;
      do {
        local_48 = local_48 + -1;
        if ((*local_48 & 0xc0) != 0x80) break;
        iVar3 = iVar3 + 1;
      } while (iVar3 < 4);
      iVar3 = FUN_180492f10(&local_48);
      if ((iVar3 != 0x5c) || (iVar3 = FUN_18048cbc0(pcVar10,&DAT_1821db634), iVar3 == 0))
      goto LAB_181241bc2;
      iVar4 = FUN_180493130(&local_res10);
      iVar3 = 0;
      if (0 < iVar4 + -1) {
        iVar3 = iVar4 + -1;
      }
      FUN_1812340b0(&local_res18,pcVar10,(longlong)iVar3);
      local_res10 = local_res18;
      puVar9 = (uint *)(pcVar10 + -0x10);
      pcVar2 = local_res18;
      local_30 = pcVar10;
    } while ((*puVar9 & 0x30000000) != 0);
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    pcVar2 = local_res18;
    local_res18 = pcVar10;
  } while (uVar1 != 0);
LAB_181241a36:
                    /* WARNING: Subroutine does not return */
  free(puVar9);
}



############ FUN_ 180475f90 size=309 ############

undefined8 FUN_180475f90(longlong param_1,undefined8 param_2,double *param_3,undefined8 param_4)

{
  uint uVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  longlong *plVar5;
  uint *puVar6;
  int iVar7;
  undefined8 uVar8;
  longlong local_res8;
  longlong local_res10;
  
  FUN_18049c800(&local_res8,param_2,param_3,param_4,0xfffffffffffffffe);
  pcVar2 = *(code **)(**(longlong **)(param_1 + 0x338) + 0xc0);
  if (pcVar2 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    iVar4 = 1;
    if ((int)(*(longlong **)(param_1 + 0x338))[1] == 3) {
      iVar4 = 0x80;
    }
  }
  else {
    iVar4 = (*pcVar2)();
  }
  iVar7 = 0;
  if (0 < iVar4) {
    do {
      plVar5 = (longlong *)
               (**(code **)(**(longlong **)(param_1 + 0x338) + 0xd8))
                         (*(longlong **)(param_1 + 0x338),&local_res10,iVar7);
      if (local_res8 == *plVar5) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_18048cbc0(local_res8,*plVar5);
      }
      puVar6 = (uint *)(local_res10 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      if (iVar3 == 0) {
        *param_3 = (double)iVar7 / (double)*(int *)(param_1 + 0x314);
        uVar8 = 1;
        goto LAB_180476062;
      }
      iVar7 = iVar7 + 1;
    } while (iVar7 < iVar4);
  }
  uVar8 = 0;
LAB_180476062:
  puVar6 = (uint *)(local_res8 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return uVar8;
}



############ FUN_ 180479b70 size=727 ############

/* WARNING: Removing unreachable block (ram,0x000180479c9d) */
/* WARNING: Removing unreachable block (ram,0x000180479ca2) */
/* WARNING: Removing unreachable block (ram,0x000180479cad) */
/* WARNING: Removing unreachable block (ram,0x000180479cb9) */
/* WARNING: Removing unreachable block (ram,0x000180479e85) */
/* WARNING: Removing unreachable block (ram,0x000180479cc9) */
/* WARNING: Removing unreachable block (ram,0x000180479d09) */
/* WARNING: Removing unreachable block (ram,0x000180479d13) */
/* WARNING: Removing unreachable block (ram,0x000180479d30) */
/* WARNING: Removing unreachable block (ram,0x000180479d3d) */
/* WARNING: Removing unreachable block (ram,0x000180479d7f) */
/* WARNING: Removing unreachable block (ram,0x000180479d47) */
/* WARNING: Removing unreachable block (ram,0x000180479d86) */
/* WARNING: Removing unreachable block (ram,0x000180479d9d) */
/* WARNING: Removing unreachable block (ram,0x000180479db3) */
/* WARNING: Removing unreachable block (ram,0x000180479dc2) */
/* WARNING: Removing unreachable block (ram,0x000180479dc6) */
/* WARNING: Removing unreachable block (ram,0x000180479dd3) */
/* WARNING: Removing unreachable block (ram,0x000180479de3) */
/* WARNING: Removing unreachable block (ram,0x000180479de8) */

undefined8 FUN_180479b70(longlong param_1,longlong *param_2)

{
  int iVar1;
  uint uVar2;
  int local_res10 [2];
  longlong *local_res18;
  longlong local_res20;
  undefined8 uVar4;
  undefined8 uVar5;
  longlong *plVar3;
  
  plVar3 = (longlong *)0x0;
  local_res18 = (longlong *)0x0;
  if ((param_2 != (longlong *)0x0) &&
     (iVar1 = (**(code **)*param_2)(param_2,&DAT_18262b140,&local_res18), iVar1 != 0)) {
    local_res18 = plVar3;
  }
  local_res20 = 0;
  if (((local_res18 == (longlong *)0x0) ||
      (iVar1 = (**(code **)(*local_res18 + 0x18))(local_res18,&local_res20), iVar1 != 0)) ||
     (0x63ffffe < local_res20 - 1U)) {
    if (local_res18 != (longlong *)0x0) {
      (**(code **)(*local_res18 + 0x10))();
    }
    return 0;
  }
  uVar4 = 0;
  if (local_res20 != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  uVar5 = 0;
  local_res10[0] = 1;
  do {
    uVar2 = (uint)plVar3;
    if ((-1 < (int)uVar2) ||
       (iVar1 = (**(code **)(*param_2 + 0x18))(param_2,0,0,local_res10,uVar4,uVar5), iVar1 != 0))
    break;
    uVar2 = uVar2 + local_res10[0];
    plVar3 = (longlong *)(ulonglong)uVar2;
  } while (0 < local_res10[0]);
  if (uVar2 != 0) {
    if (uVar2 != 0) {
      if (uVar2 != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)0x0);
      }
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
    FUN_180473b00();
    plVar3 = *(longlong **)(param_1 + 0x30);
    if (*(code **)(*plVar3 + 0xf8) == FUN_18052bdd0) {
      FUN_1811fc760(plVar3 + 0x67,0,0);
    }
    else {
      (**(code **)(*plVar3 + 0xf8))(plVar3,0,0);
    }
  }
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 1804838c0 size=25 ############

bool FUN_1804838c0(undefined8 *param_1,undefined8 *param_2)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1,*param_2);
  return iVar1 == 0;
}



############ FUN_ 180485c50 size=189 ############

undefined8 * FUN_180485c50(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_18048f910(param_1);
  FUN_18048f970(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 18048f970 size=657 ############

undefined8 *
FUN_18048f970(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_180490f00(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_180490f00(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_180490f00(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_180490f00(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_180490f00(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_180490f00(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_180490f00(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_180491130(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 180491130 size=383 ############

undefined8 *
FUN_180491130(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined1 local_res8 [8];
  
  puVar5 = (undefined8 *)*param_1;
  bVar8 = true;
  puVar7 = puVar5;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar7 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar7[4]);
      bVar8 = iVar4 < 0;
      if (bVar8) {
        puVar6 = (undefined8 *)*puVar7;
      }
      else {
        puVar6 = (undefined8 *)puVar7[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  puVar6 = puVar7;
  if (bVar8 != false) {
    if (puVar7 == (undefined8 *)*puVar5) {
      puVar5 = (undefined8 *)FUN_180490f00(param_1,local_res8,1,puVar7);
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar6[2] + 0x19);
        puVar5 = (undefined8 *)puVar6[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar5[2] + 0x19);
          puVar6 = puVar5;
          puVar5 = (undefined8 *)puVar5[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar5 = (undefined8 *)puVar7[1];
        puVar6 = puVar7;
        while ((puVar3 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar5 = (undefined8 *)puVar3[1];
          puVar6 = puVar3;
        }
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          puVar6 = puVar3;
        }
      }
    }
    else {
      puVar6 = (undefined8 *)puVar7[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar6[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_180490f00(param_1,local_res8,bVar8,puVar7);
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
  }
  else {
    FUN_180490d00();
    *param_2 = puVar6;
    *(undefined1 *)(param_2 + 1) = 0;
  }
  return param_2;
}



############ FUN_ 1804861f0 size=189 ############

undefined8 * FUN_1804861f0(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_18048fc10(param_1);
  FUN_18048fc70(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 18048fc70 size=657 ############

undefined8 *
FUN_18048fc70(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_1804912b0(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_1804912b0(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_1804912b0(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_1804912b0(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_1804912b0(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_1804912b0(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_1804912b0(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_1804914e0(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 1804914e0 size=500 ############

undefined8 *
FUN_1804914e0(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4,
             void *param_5)

{
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  uint *_Memory;
  undefined8 *puVar8;
  bool bVar9;
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined8 local_38;
  undefined1 local_30 [8];
  
  puVar6 = (undefined8 *)*param_1;
  bVar9 = true;
  puVar8 = puVar6;
  if (*(char *)((longlong)puVar6[1] + 0x19) == '\0') {
    uVar3 = *param_4;
    puVar7 = (undefined8 *)puVar6[1];
    do {
      puVar8 = puVar7;
      iVar5 = FUN_18048cbc0(uVar3);
      bVar9 = iVar5 < 0;
      if (bVar9) {
        puVar7 = (undefined8 *)*puVar8;
      }
      else {
        puVar7 = (undefined8 *)puVar8[2];
      }
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  puVar7 = puVar8;
  if (bVar9 != false) {
    if (puVar8 == (undefined8 *)*puVar6) {
      puVar6 = (undefined8 *)FUN_1804912b0(param_1,local_48,1,puVar8);
      *param_2 = *puVar6;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar2 = *(char *)((longlong)puVar7[2] + 0x19);
        puVar6 = (undefined8 *)puVar7[2];
        while (cVar2 == '\0') {
          cVar2 = *(char *)((longlong)puVar6[2] + 0x19);
          puVar7 = puVar6;
          puVar6 = (undefined8 *)puVar6[2];
        }
      }
      else {
        cVar2 = *(char *)((longlong)puVar8[1] + 0x19);
        puVar6 = (undefined8 *)puVar8[1];
        puVar7 = puVar8;
        while ((puVar4 = puVar6, cVar2 == '\0' && (puVar7 == (undefined8 *)*puVar4))) {
          cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar6 = (undefined8 *)puVar4[1];
          puVar7 = puVar4;
        }
        if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
          puVar7 = puVar4;
        }
      }
    }
    else {
      puVar7 = (undefined8 *)puVar8[2];
    }
  }
  local_40 = *param_4;
  local_38 = puVar7[4];
  iVar5 = FUN_18048cbc0();
  if (iVar5 < 0) {
    puVar6 = (undefined8 *)FUN_1804912b0(param_1,local_30,bVar9,puVar8);
    *param_2 = *puVar6;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_5 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 180486330 size=156 ############

longlong * FUN_180486330(longlong *param_1,longlong *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  
  puVar1 = (undefined8 *)*param_1;
  puVar5 = puVar1;
  if (*(char *)((longlong)puVar1[1] + 0x19) == '\0') {
    uVar2 = *param_3;
    puVar4 = puVar1;
    puVar6 = (undefined8 *)puVar1[1];
    do {
      puVar5 = puVar6;
      iVar3 = FUN_18048cbc0(puVar5[4],uVar2);
      if (iVar3 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != puVar1) && (iVar3 = FUN_18048cbc0(*param_3,puVar5[4]), -1 < iVar3)) {
    *param_2 = (longlong)puVar5;
    return param_2;
  }
  *param_2 = (longlong)puVar1;
  return param_2;
}



############ FUN_ 1804863e0 size=189 ############

undefined8 * FUN_1804863e0(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_18048ff10(param_1);
  FUN_18048fc70(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 180486900 size=210 ############

undefined8 FUN_180486900(longlong *param_1,longlong *param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  
  iVar8 = *(int *)((longlong)param_1 + 0xc);
  iVar7 = 0;
  if (0 < iVar8) {
    lVar2 = *param_1;
    lVar3 = *param_2;
    do {
      puVar1 = (undefined8 *)(lVar2 + (longlong)iVar7 * 8);
      if ((lVar3 == *(longlong *)(lVar2 + (longlong)iVar7 * 8)) ||
         (iVar5 = FUN_18048cbc0(lVar3,*puVar1), iVar5 == 0)) {
        FUN_181249460(puVar1,param_2);
        return 0;
      }
      iVar5 = (iVar8 + iVar7) / 2;
      iVar6 = FUN_18048cbc0(lVar3,*(undefined8 *)(lVar2 + (longlong)iVar5 * 8));
      if (iVar5 == iVar7) {
        if (-1 < iVar6) {
          iVar7 = iVar7 + 1;
        }
        break;
      }
      iVar4 = iVar5;
      if (-1 >= iVar6) {
        iVar4 = iVar7;
        iVar8 = iVar5;
      }
      iVar7 = iVar4;
    } while (iVar7 < iVar8);
  }
  FUN_180489070(param_1,iVar7,param_2);
  return 1;
}



############ FUN_ 180486a10 size=189 ############

undefined8 * FUN_180486a10(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_18048f910(param_1);
  FUN_1804902d0(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 1804902d0 size=657 ############

undefined8 *
FUN_1804902d0(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_180491af0(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_180491af0(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_180491af0(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_180491af0(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_180491af0(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_180491af0(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_180491af0(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_180491d20(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 180491d20 size=383 ############

undefined8 *
FUN_180491d20(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined1 local_res8 [8];
  
  puVar5 = (undefined8 *)*param_1;
  bVar8 = true;
  puVar7 = puVar5;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar7 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar7[4]);
      bVar8 = iVar4 < 0;
      if (bVar8) {
        puVar6 = (undefined8 *)*puVar7;
      }
      else {
        puVar6 = (undefined8 *)puVar7[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  puVar6 = puVar7;
  if (bVar8 != false) {
    if (puVar7 == (undefined8 *)*puVar5) {
      puVar5 = (undefined8 *)FUN_180491af0(param_1,local_res8,1,puVar7);
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar6[2] + 0x19);
        puVar5 = (undefined8 *)puVar6[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar5[2] + 0x19);
          puVar6 = puVar5;
          puVar5 = (undefined8 *)puVar5[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar5 = (undefined8 *)puVar7[1];
        puVar6 = puVar7;
        while ((puVar3 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar5 = (undefined8 *)puVar3[1];
          puVar6 = puVar3;
        }
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          puVar6 = puVar3;
        }
      }
    }
    else {
      puVar6 = (undefined8 *)puVar7[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar6[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_180491af0(param_1,local_res8,bVar8,puVar7);
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
  }
  else {
    FUN_180490da0();
    *param_2 = puVar6;
    *(undefined1 *)(param_2 + 1) = 0;
  }
  return param_2;
}



############ FUN_ 180488a80 size=150 ############

int FUN_180488a80(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  
  iVar7 = *(int *)((longlong)param_1 + 0xc);
  iVar6 = 0;
  if (0 < iVar7) {
    lVar1 = *param_1;
    lVar2 = *param_2;
    do {
      if (lVar2 == *(longlong *)(lVar1 + (longlong)iVar6 * 8)) {
        return iVar6;
      }
      iVar4 = FUN_18048cbc0(lVar2);
      if (iVar4 == 0) {
        return iVar6;
      }
      iVar4 = (iVar7 + iVar6) / 2;
      if (iVar4 == iVar6) {
        return -1;
      }
      iVar5 = FUN_18048cbc0(lVar2,*(undefined8 *)(lVar1 + (longlong)iVar4 * 8));
      iVar3 = iVar4;
      if (iVar5 < 0) {
        iVar3 = iVar6;
        iVar7 = iVar4;
      }
      iVar6 = iVar3;
    } while (iVar6 < iVar7);
  }
  return -1;
}



############ FUN_ 181220890 size=86 ############

undefined8 * FUN_181220890(longlong param_1)

{
  undefined8 uVar1;
  int iVar2;
  undefined8 *puVar3;
  
  uVar1 = DAT_1826739f0;
  puVar3 = *(undefined8 **)(param_1 + 0x10);
  while( true ) {
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)FUN_181220d40();
      return puVar3;
    }
    iVar2 = FUN_18048cbc0(puVar3[1],uVar1);
    if (iVar2 == 0) break;
    puVar3 = (undefined8 *)*puVar3;
  }
  return puVar3 + 2;
}



############ FUN_ 181221c40 size=660 ############

longlong * FUN_181221c40(longlong param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *plVar6;
  uint *puVar7;
  uint uVar8;
  longlong local_res8;
  longlong local_res20;
  longlong local_48 [2];
  
  local_48[1] = 0xfffffffffffffffe;
  uVar8 = 0;
  if (0 < *(int *)(param_1 + 0x34)) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    do {
      if (uVar8 < *(uint *)(param_1 + 0x34)) {
        plVar6 = (longlong *)(*(longlong *)(param_1 + 0x28) + (longlong)(int)uVar8 * 8);
      }
      else {
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        plVar6 = (longlong *)&DAT_18267af68;
      }
      if (*plVar6 == *param_3) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_18048cbc0(*plVar6,*param_3);
      }
      if (iVar3 == 0) {
        puVar4 = (undefined8 *)FUN_181249970(param_1 + 0x28,uVar8 - 1);
        iVar3 = FUN_18048cbc0(*puVar4,&DAT_1821db4a4);
        if (iVar3 == 0) {
          puVar4 = (undefined8 *)FUN_181249970(param_1 + 0x28,uVar8 - 2);
          iVar3 = FUN_18049bb30(*puVar4,"<!entity");
          if (iVar3 == 0) {
            uVar5 = FUN_181249970(param_1 + 0x28,uVar8 + 1);
            FUN_1812304e0(uVar5,&local_res8,&DAT_1821db4b0);
            iVar3 = FUN_18049bb30(local_res8,"system");
            if (iVar3 != 0) {
              uVar5 = FUN_181248e40(&local_res8,local_48);
              FUN_181230ba0(uVar5,param_2);
              puVar7 = (uint *)(local_48[0] + -0x10);
              if ((*puVar7 & 0x30000000) == 0) {
                LOCK();
                uVar8 = *puVar7;
                *puVar7 = *puVar7 - 1;
                UNLOCK();
                if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar7);
                }
              }
              puVar7 = (uint *)(local_res8 + -0x10);
              if ((*puVar7 & 0x30000000) != 0) {
                return param_2;
              }
              LOCK();
              uVar8 = *puVar7;
              *puVar7 = *puVar7 - 1;
              UNLOCK();
              if (uVar8 != 0) {
                return param_2;
              }
                    /* WARNING: Subroutine does not return */
              free(puVar7);
            }
            uVar5 = FUN_181249970(param_1 + 0x28,uVar8 + 2);
            uVar5 = FUN_1812304e0(uVar5,&local_res20,&DAT_1821db4bc);
            FUN_181225b40(param_1,param_2,uVar5);
            puVar7 = (uint *)(local_res20 + -0x10);
            if ((*puVar7 & 0x30000000) == 0) {
              LOCK();
              uVar8 = *puVar7;
              *puVar7 = *puVar7 - 1;
              UNLOCK();
              if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar7);
              }
            }
            puVar7 = (uint *)(local_res8 + -0x10);
            if ((*puVar7 & 0x30000000) != 0) {
              return param_2;
            }
            LOCK();
            uVar8 = *puVar7;
            *puVar7 = *puVar7 - 1;
            UNLOCK();
            if (uVar8 != 0) {
              return param_2;
            }
                    /* WARNING: Subroutine does not return */
            free(puVar7);
          }
        }
      }
      uVar8 = uVar8 + 1;
    } while ((int)uVar8 < *(int *)(param_1 + 0x34));
  }
  lVar2 = *param_3;
  *param_2 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 18048d670 size=377 ############

undefined8 *
FUN_18048d670(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4,
             undefined1 param_5)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  longlong *local_res8;
  undefined8 uVar9;
  undefined1 local_30 [8];
  
  uVar9 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)*param_1;
  bVar8 = true;
  puVar7 = puVar5;
  local_res8 = param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar7 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar7[4]);
      bVar8 = iVar4 < 0;
      if (bVar8) {
        puVar6 = (undefined8 *)*puVar7;
      }
      else {
        puVar6 = (undefined8 *)puVar7[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  puVar6 = puVar7;
  if (bVar8 != false) {
    if (puVar7 == (undefined8 *)*puVar5) {
      puVar5 = (undefined8 *)FUN_18048e860(local_res8,&local_res8,1,puVar7,param_4,param_5,uVar9);
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar6[2] + 0x19);
        puVar5 = (undefined8 *)puVar6[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar5[2] + 0x19);
          puVar6 = puVar5;
          puVar5 = (undefined8 *)puVar5[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar5 = (undefined8 *)puVar7[1];
        puVar6 = puVar7;
        while ((puVar3 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar5 = (undefined8 *)puVar3[1];
          puVar6 = puVar3;
        }
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          puVar6 = puVar3;
        }
      }
    }
    else {
      puVar6 = (undefined8 *)puVar7[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar6[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_18048e860(local_res8,local_30,bVar8,puVar7,param_4,param_5,uVar9);
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
  }
  else {
    *param_2 = puVar6;
    *(undefined1 *)(param_2 + 1) = 0;
  }
  return param_2;
}



############ FUN_ 18048d7f0 size=218 ############

undefined8 * FUN_18048d7f0(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_3;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_3,puVar5[4]), -1 < iVar2))
  {
    *param_2 = puVar5;
    *(undefined1 *)(param_2 + 1) = 0;
    return param_2;
  }
  local_res8 = param_3;
  lVar3 = FUN_180490290(param_1);
  FUN_1804902d0(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  *param_2 = local_res8;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 1811efe00 size=269 ############

void FUN_1811efe00(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  undefined8 uVar5;
  longlong local_res8 [2];
  void *local_50;
  undefined8 local_48;
  undefined **local_40;
  longlong local_38;
  undefined1 local_30 [24];
  
  plVar2 = *(longlong **)(param_1 + 0x90);
  uVar5 = (**(code **)(*plVar2 + 8))(plVar2,local_30,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*plVar2 + 0x18))(plVar2,uVar5);
  local_50 = (void *)0x0;
  local_48 = 0;
  FUN_1811fe4a0(param_1,&local_50,0);
  FUN_181247930(local_res8,local_50,local_48);
  plVar2 = *(longlong **)(param_1 + 0x90);
  local_40 = &PTR_vftable_18262b560;
  local_38 = local_res8[0];
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  (**(code **)(*plVar2 + 0x18))(plVar2,&local_40);
  lVar3 = *(longlong *)(param_1 + 0x70);
  iVar4 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 0x48),&DAT_1821d951c);
  FUN_181352a80(lVar3 + 0x88 + (ulonglong)(iVar4 == 0) * 0x78);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 181221060 size=1113 ############

void FUN_181221060(longlong param_1,longlong *param_2,int param_3,int param_4,longlong param_5)

{
  byte *pbVar1;
  byte bVar2;
  code *pcVar3;
  bool bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  byte *pbVar11;
  int iVar12;
  longlong lVar13;
  longlong *plVar14;
  longlong lVar15;
  undefined1 local_res18 [8];
  int local_res20;
  
  local_res20 = param_4;
  if (-1 < param_3) {
    (**(code **)(*param_2 + 0x88))(param_2,0x20,(longlong)param_3);
  }
  if (**(char **)(param_1 + 0x18) == '\0') {
    uVar8 = FUN_181220890(param_1);
    FUN_1812214e0(param_2,uVar8,0);
    return;
  }
  pcVar3 = *(code **)(*param_2 + 0x28);
  if (pcVar3 == FUN_18122e9b0) {
    local_res18[0] = 0x3c;
    (**(code **)(*param_2 + 0x20))(param_2,local_res18,1);
  }
  else {
    (*pcVar3)(param_2,0x3c);
  }
  uVar8 = FUN_18049d240(*(undefined8 *)(param_1 + 0x18));
  (**(code **)(*param_2 + 0x20))(param_2,*(undefined8 *)(param_1 + 0x18),uVar8);
  pbVar11 = *(byte **)(param_1 + 0x18);
  iVar7 = 0;
LAB_181221110:
  do {
    bVar2 = *pbVar11;
    pbVar11 = pbVar11 + 1;
    if ((char)bVar2 < '\0') {
      if ((*pbVar11 & 0xc0) == 0x80) {
        do {
          pbVar1 = pbVar11 + 1;
          pbVar11 = pbVar11 + 1;
        } while ((*pbVar1 & 0xc0) == 0x80);
        iVar7 = iVar7 + 1;
        goto LAB_181221110;
      }
    }
    else if (bVar2 == 0) break;
    iVar7 = iVar7 + 1;
  } while( true );
  iVar12 = 0;
  lVar15 = -1;
  for (puVar9 = *(undefined8 **)(param_1 + 0x10); puVar9 != (undefined8 *)0x0;
      puVar9 = (undefined8 *)*puVar9) {
    if ((param_4 < iVar12) && (-1 < param_3)) {
      lVar13 = lVar15;
      do {
        lVar13 = lVar13 + 1;
      } while (*(char *)(lVar13 + param_5) != '\0');
      (**(code **)(*param_2 + 0x20))(param_2,param_5);
      (**(code **)(*param_2 + 0x88))(param_2,0x20,(longlong)(param_3 + 1 + iVar7));
      iVar12 = 0;
    }
    iVar5 = (**(code **)(*param_2 + 0x18))(param_2);
    pcVar3 = *(code **)(*param_2 + 0x28);
    if (pcVar3 == FUN_18122e9b0) {
      local_res18[0] = 0x20;
      (**(code **)(*param_2 + 0x20))(param_2,local_res18,1);
    }
    else {
      (*pcVar3)(param_2,0x20);
    }
    uVar8 = FUN_18049d240(puVar9[1]);
    (**(code **)(*param_2 + 0x20))(param_2,puVar9[1],uVar8);
    (**(code **)(*param_2 + 0x20))(param_2,&DAT_1821db4e0,2);
    FUN_1812214e0(param_2,puVar9 + 2,1);
    pcVar3 = *(code **)(*param_2 + 0x28);
    if (pcVar3 == FUN_18122e9b0) {
      local_res18[0] = 0x22;
      (**(code **)(*param_2 + 0x20))(param_2,local_res18,1);
    }
    else {
      (*pcVar3)(param_2,0x22);
    }
    iVar6 = (**(code **)(*param_2 + 0x18))(param_2);
    iVar12 = iVar12 + (iVar6 - iVar5);
    param_4 = local_res20;
  }
  plVar14 = *(longlong **)(param_1 + 8);
  if (plVar14 == (longlong *)0x0) {
    (**(code **)(*param_2 + 0x20))(param_2,&DAT_1821db4e8,2);
  }
  else {
    pcVar3 = *(code **)(*param_2 + 0x28);
    if (pcVar3 == FUN_18122e9b0) {
      local_res18[0] = 0x3e;
      (**(code **)(*param_2 + 0x20))(param_2,local_res18,1);
    }
    else {
      (*pcVar3)(param_2,0x3e);
    }
    bVar4 = false;
    do {
      uVar8 = DAT_1826739f0;
      if (*(char *)plVar14[3] == '\0') {
        for (puVar9 = (undefined8 *)plVar14[2]; puVar9 != (undefined8 *)0x0;
            puVar9 = (undefined8 *)*puVar9) {
          iVar7 = FUN_18048cbc0(puVar9[1],uVar8);
          if (iVar7 == 0) {
            puVar9 = puVar9 + 2;
            goto LAB_18122130d;
          }
        }
        puVar9 = (undefined8 *)FUN_181220d40();
LAB_18122130d:
        FUN_1812214e0(param_2,puVar9);
        bVar4 = true;
      }
      else {
        if (param_3 < 0) {
          if (bVar4) goto LAB_181221451;
LAB_181221353:
          iVar7 = 0;
          if (-1 < param_3) {
            iVar7 = 2;
          }
          iVar7 = iVar7 + param_3;
        }
        else {
          if (!bVar4) {
            lVar13 = lVar15;
            do {
              lVar13 = lVar13 + 1;
            } while (*(char *)(lVar13 + param_5) != '\0');
            (**(code **)(*param_2 + 0x20))(param_2,param_5);
            goto LAB_181221353;
          }
LAB_181221451:
          iVar7 = 0;
        }
        FUN_181221060(plVar14,param_2,iVar7,param_4,param_5);
        bVar4 = false;
      }
      plVar14 = (longlong *)*plVar14;
    } while (plVar14 != (longlong *)0x0);
    if ((-1 < param_3) && (!bVar4)) {
      do {
        lVar15 = lVar15 + 1;
      } while (*(char *)(lVar15 + param_5) != '\0');
      (**(code **)(*param_2 + 0x20))(param_2,param_5,lVar15);
      (**(code **)(*param_2 + 0x88))(param_2,0x20,(longlong)param_3);
    }
    (**(code **)(*param_2 + 0x20))(param_2,&DAT_1821db4dc,2);
    uVar8 = *(undefined8 *)(param_1 + 0x18);
    uVar10 = FUN_18049d240(uVar8);
    (**(code **)(*param_2 + 0x20))(param_2,uVar8,uVar10);
    pcVar3 = *(code **)(*param_2 + 0x28);
    if (pcVar3 == FUN_18122e9b0) {
      local_res18[0] = 0x3e;
      (**(code **)(*param_2 + 0x20))(param_2,local_res18,1);
    }
    else {
      (*pcVar3)(param_2,0x3e);
    }
  }
  return;
}



############ FUN_ 1811eff30 size=814 ############

void FUN_1811eff30(longlong param_1)

{
  uint *puVar1;
  longlong *plVar2;
  uint uVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  bool bVar7;
  undefined1 auStack_158 [32];
  undefined1 *local_138;
  char *local_130;
  void *local_128;
  undefined8 local_120;
  void *local_118;
  undefined8 local_110 [2];
  void *local_100;
  undefined8 local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  undefined **local_d8;
  longlong local_d0;
  undefined **local_c8;
  longlong local_c0;
  undefined **local_b8;
  undefined1 local_b0 [8];
  void **local_a8;
  void *local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_68;
  undefined1 local_60 [16];
  longlong *local_50;
  undefined1 local_48 [8];
  longlong *local_40;
  undefined1 local_38 [8];
  ulonglong local_30;
  
  local_68 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_158;
  puVar5 = (undefined8 *)
           (**(code **)(**(longlong **)(param_1 + 0x88) + 0x10))
                     (*(longlong **)(param_1 + 0x88),&local_50);
  (**(code **)(*(longlong *)*puVar5 + 0x20))((longlong *)*puVar5,local_110,puVar5 + 1);
  (**(code **)(*local_50 + 0xb0))(local_50,local_48);
  local_138 = &DAT_1821dbf98;
  iVar4 = FUN_18048cbc0(local_110[0],&DAT_1821d91bc);
  if (iVar4 == 0) {
    FUN_18049c4e0(&local_f0,&DAT_1821d91d4);
    local_138 = (undefined1 *)local_f0;
  }
  else {
    FUN_18049c4e0(&local_e8,&DAT_1821d9204);
    local_138 = (undefined1 *)local_e8;
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_128 = (void *)0x0;
  local_120 = 0;
  puVar5 = (undefined8 *)
           (**(code **)(**(longlong **)(param_1 + 0x90) + 0x10))
                     (*(longlong **)(param_1 + 0x90),&local_40);
  (**(code **)(*(longlong *)*puVar5 + 0x20))((longlong *)*puVar5,&local_130,puVar5 + 1);
  (**(code **)(*local_40 + 0xb0))(local_40,local_38);
  (**(code **)(**(longlong **)(param_1 + 0x90) + 0x20))();
  if (*local_130 != '\0') {
    FUN_181247530(&local_128);
    local_b8 = juce::OutputStream::vftable;
    FUN_18049c4e0(local_b0,&DAT_182496878);
    local_b8 = juce::MemoryOutputStream::vftable;
    local_a8 = &local_128;
    local_a0 = (void *)0x0;
    local_98 = 0;
    local_90 = 0;
    local_88 = 0;
    local_80 = 0;
    local_78 = 0;
    FUN_181247a90(&local_b8,local_130);
    local_b8 = juce::MemoryOutputStream::vftable;
    if ((local_a8 != &local_a0) && (local_a8 != (void **)0x0)) {
      FUN_18124a200(local_a8,local_80,0);
    }
                    /* WARNING: Subroutine does not return */
    free(local_a0);
  }
  (**(code **)(**(longlong **)(param_1 + 0x70) + 0x20))(*(longlong **)(param_1 + 0x70),&local_118,0)
  ;
  FUN_1812c29a0(local_118,&local_128);
  if (local_118 != (void *)0x0) {
    FUN_1812472e0(local_118);
                    /* WARNING: Subroutine does not return */
    free(local_118);
  }
  local_100 = (void *)0x0;
  local_f8 = 0;
  FUN_1811fe4a0(param_1,&local_100,1);
  FUN_181247930(&local_e0,local_100,local_f8);
  FUN_1811fc760(param_1,local_128,local_120);
  plVar2 = *(longlong **)(param_1 + 0x88);
  local_d8 = &PTR_vftable_18262b560;
  local_d0 = (longlong)local_138;
  puVar1 = (uint *)((longlong)local_138 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  (**(code **)(*plVar2 + 0x18))(plVar2,&local_d8);
  plVar2 = *(longlong **)(param_1 + 0x90);
  local_c8 = &PTR_vftable_18262b560;
  local_c0 = local_e0;
  puVar1 = (uint *)(local_e0 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  (**(code **)(*plVar2 + 0x18))(plVar2,&local_c8);
  plVar2 = *(longlong **)(param_1 + 0x98);
  uVar6 = (**(code **)(*plVar2 + 8))(plVar2,local_60);
  (**(code **)(*plVar2 + 0x18))(plVar2,uVar6);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(local_100);
}



############ FUN_ 180496030 size=111 ############

bool FUN_180496030(undefined8 param_1,longlong *param_2,undefined8 param_3,longlong *param_4)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong local_res10 [3];
  
  plVar3 = (longlong *)
           (**(code **)(*param_4 + 0x20))(param_4,local_res10,param_3,param_4,0xfffffffffffffffe);
  if (*plVar3 == *param_2) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(*plVar3,*param_2);
  }
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar2 == 0;
}



############ FUN_ 1804a23e0 size=1576 ############

longlong * FUN_1804a23e0(longlong param_1,longlong *param_2,longlong *param_3)

{
  uint *puVar1;
  int *piVar2;
  longlong lVar3;
  longlong lVar4;
  ulonglong uVar5;
  bool bVar6;
  bool bVar7;
  char cVar8;
  int iVar9;
  DWORD DVar10;
  uint uVar11;
  longlong *plVar12;
  undefined8 uVar13;
  undefined8 *puVar14;
  uint *puVar15;
  void *pvVar16;
  undefined8 *puVar17;
  ulonglong uVar18;
  longlong *plVar19;
  ulonglong uVar20;
  ulonglong uVar21;
  longlong lVar22;
  longlong lVar23;
  longlong *plVar24;
  uint *local_res8;
  longlong *local_res10;
  longlong *local_res18;
  uint *local_res20;
  uint *local_88;
  undefined8 *local_80;
  undefined8 *local_78;
  undefined8 *local_70;
  undefined8 local_68;
  longlong local_60;
  longlong local_58;
  
  local_68 = 0xfffffffffffffffe;
  uVar20 = 0;
  bVar7 = false;
  local_res10 = param_2;
  local_res18 = param_3;
  FUN_180493580(&local_res8,param_1 + 0x10);
  lVar3 = *(longlong *)(*param_3 + 0x18);
  local_res20 = (uint *)(lVar3 + -0x10);
  if ((*local_res20 & 0x30000000) == 0) {
    LOCK();
    *local_res20 = *local_res20 + 1;
    UNLOCK();
  }
  lVar4 = *(longlong *)(*param_3 + 0x20);
  puVar1 = (uint *)(lVar4 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  iVar9 = *(int *)(param_1 + 0x194) + -1;
  lVar22 = (longlong)iVar9;
  if (-1 < iVar9) {
    lVar23 = lVar22 << 5;
LAB_1804a24a0:
    plVar24 = (longlong *)(*(longlong *)(param_1 + 0x188) + lVar23);
    iVar9 = 0;
    if (*plVar24 != lVar3) {
      iVar9 = FUN_18048cbc0(*plVar24,lVar3);
    }
    if (iVar9 == 0) {
      iVar9 = 0;
      if (plVar24[1] != lVar4) {
        iVar9 = FUN_18048cbc0(plVar24[1],lVar4);
      }
      if (((iVar9 == 0) && (plVar19 = (longlong *)plVar24[3], plVar19 != (longlong *)0x0)) &&
         ((*(code **)(*plVar19 + 8) ==
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ ||
          (cVar8 = (**(code **)(*plVar19 + 8))(plVar19,local_res18), cVar8 != '\0')))) {
        plVar19 = local_res10;
        *(longlong *)(param_1 + 0x198) = *(longlong *)(param_1 + 0x198) + 1;
        plVar24[2] = *(longlong *)(param_1 + 0x198);
        lVar3 = plVar24[3];
        *local_res10 = lVar3;
        if (lVar3 != 0) {
          LOCK();
          *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
          UNLOCK();
        }
        if ((*puVar1 & 0x30000000) == 0) {
          LOCK();
          uVar11 = *puVar1;
          *puVar1 = *puVar1 - 1;
          UNLOCK();
          if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar1);
          }
        }
        if ((*local_res20 & 0x30000000) == 0) {
          LOCK();
          uVar11 = *local_res20;
          *local_res20 = *local_res20 - 1;
          UNLOCK();
          if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
            free(local_res20);
          }
        }
        DVar10 = GetCurrentThreadId();
        do {
          LOCK();
          uVar11 = *local_res8;
          *local_res8 = *local_res8 | 1;
          UNLOCK();
        } while ((uVar11 & 1) != 0);
        puVar1 = local_res8 + 0x5a;
        uVar21 = uVar20;
        uVar18 = uVar20;
        if (0 < (int)local_res8[0x5d]) {
          do {
            uVar11 = (uint)uVar18;
            if (*(ulonglong *)(*(longlong *)puVar1 + uVar21) == (ulonglong)DVar10) {
              piVar2 = (int *)(*(longlong *)puVar1 + 8 + uVar21);
              *piVar2 = *piVar2 + -1;
              if (*piVar2 == 0) {
                if (uVar11 < local_res8[0x5d]) {
                  pvVar16 = (void *)((longlong)(int)uVar11 * 0x10 + *(longlong *)puVar1);
                  memmove(pvVar16,(void *)((longlong)pvVar16 + 0x10),
                          (longlong)(int)((local_res8[0x5d] - uVar11) + -1) << 4);
                  local_res8[0x5d] = local_res8[0x5d] - 1;
                  uVar11 = local_res8[0x5d];
                  if (0 < (int)(uVar11 * 2)) {
                    uVar20 = (ulonglong)(uVar11 * 2);
                  }
                  if ((int)uVar20 < (int)local_res8[0x5c]) {
                    if ((int)uVar11 < 4) {
                      uVar11 = 4;
                    }
                    if ((int)uVar11 < (int)local_res8[0x5c]) {
                      FUN_18049ba20(puVar1);
                    }
                  }
                }
                FUN_181215c10(local_res8 + 2);
                FUN_181215c10(local_res8 + 0x2c);
              }
              break;
            }
            uVar21 = uVar21 + 0x10;
            uVar18 = (ulonglong)(uVar11 + 1);
          } while ((int)(uVar11 + 1) < (int)local_res8[0x5d]);
        }
        LOCK();
        *local_res8 = 0;
        UNLOCK();
        return plVar19;
      }
    }
    lVar23 = lVar23 + -0x20;
    lVar22 = lVar22 + -1;
    if (lVar22 < 0) goto LAB_1804a2605;
    goto LAB_1804a24a0;
  }
LAB_1804a2605:
  puVar15 = local_res20;
  FUN_180493780(&local_88,param_1 + 0x10);
  plVar24 = local_res18;
  uVar21 = 0xffffffffffffffff;
  uVar11 = *(int *)(param_1 + 0x194) - 1;
  uVar18 = uVar20;
  if (-1 < (int)uVar11) {
    lVar22 = (longlong)(int)uVar11 << 5;
    do {
      uVar5 = *(ulonglong *)(*(longlong *)(param_1 + 0x188) + 0x10 + lVar22);
      if (uVar5 < uVar21) {
        uVar18 = (ulonglong)uVar11;
        uVar21 = uVar5;
      }
      lVar22 = lVar22 + -0x20;
      uVar11 = uVar11 - 1;
    } while (-1 < (int)uVar11);
  }
  plVar19 = (longlong *)((longlong)(int)uVar18 * 0x20 + *(longlong *)(param_1 + 0x188));
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    *puVar15 = *puVar15 + 1;
    UNLOCK();
  }
  LOCK();
  lVar22 = *plVar19;
  *plVar19 = lVar3;
  UNLOCK();
  puVar15 = (uint *)(lVar22 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar11 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar3 = plVar19[1];
  plVar19[1] = lVar4;
  UNLOCK();
  puVar15 = (uint *)(lVar3 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar11 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  *(longlong *)(param_1 + 0x198) = *(longlong *)(param_1 + 0x198) + 1;
  plVar19[2] = *(longlong *)(param_1 + 0x198);
  if (DAT_1826736c8 == (code *)0x0) {
    plVar12 = (longlong *)FUN_18124ad90(&local_80);
    local_60 = plVar19[3];
    plVar19[3] = *plVar12;
    *plVar12 = local_60;
  }
  else {
    plVar12 = (longlong *)(*DAT_1826736c8)(&local_78,local_res18);
    local_58 = plVar19[3];
    plVar19[3] = *plVar12;
    *plVar12 = local_58;
    local_80 = local_78;
  }
  if (local_80 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(local_80 + 1);
    iVar9 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_80)(local_80,1);
    }
  }
  if (*(longlong *)(param_1 + 8) == 0) {
    uVar13 = FUN_181252d20(&local_70);
    bVar7 = true;
    cVar8 = FUN_181252880(plVar24,uVar13);
    if (cVar8 == '\0') goto LAB_1804a2807;
    bVar6 = true;
  }
  else {
LAB_1804a2807:
    bVar6 = false;
  }
  if ((bVar7) && (local_70 != (undefined8 *)0x0)) {
    LOCK();
    piVar2 = (int *)(local_70 + 1);
    iVar9 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_70)(local_70,1);
    }
  }
  if (!bVar6) goto LAB_1804a2890;
  lVar3 = plVar19[3];
  if (lVar3 == 0) {
    puVar17 = *(undefined8 **)(param_1 + 8);
    *(undefined8 *)(param_1 + 8) = 0;
    if (puVar17 == (undefined8 *)0x0) goto LAB_1804a2890;
    LOCK();
    piVar2 = (int *)(puVar17 + 1);
    iVar9 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar9 != 1) goto LAB_1804a2890;
    puVar14 = (undefined8 *)*puVar17;
  }
  else {
    if (*(longlong *)(param_1 + 8) == lVar3) goto LAB_1804a2890;
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
    puVar17 = *(undefined8 **)(param_1 + 8);
    *(longlong *)(param_1 + 8) = lVar3;
    if (puVar17 == (undefined8 *)0x0) goto LAB_1804a2890;
    LOCK();
    piVar2 = (int *)(puVar17 + 1);
    iVar9 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar9 != 1) goto LAB_1804a2890;
    puVar14 = (undefined8 *)*puVar17;
  }
  (*(code *)*puVar14)(puVar17,1);
LAB_1804a2890:
  plVar24 = local_res10;
  lVar3 = plVar19[3];
  *local_res10 = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  do {
    LOCK();
    uVar11 = *local_88;
    *local_88 = *local_88 | 1;
    UNLOCK();
  } while ((uVar11 & 1) != 0);
  puVar15 = local_88 + 0x57;
  *puVar15 = *puVar15 - 1;
  if (*puVar15 == 0) {
    local_88[0x58] = 0;
    local_88[0x59] = 0;
    FUN_181215c10(local_88 + 2);
    FUN_181215c10(local_88 + 0x2c);
  }
  LOCK();
  *local_88 = 0;
  UNLOCK();
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar11 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  if ((*local_res20 & 0x30000000) == 0) {
    LOCK();
    uVar11 = *local_res20;
    *local_res20 = *local_res20 - 1;
    UNLOCK();
    if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
      free(local_res20);
    }
  }
  DVar10 = GetCurrentThreadId();
  do {
    LOCK();
    uVar11 = *local_res8;
    *local_res8 = *local_res8 | 1;
    UNLOCK();
  } while ((uVar11 & 1) != 0);
  puVar1 = local_res8 + 0x5a;
  uVar21 = uVar20;
  uVar18 = uVar20;
  if (0 < (int)local_res8[0x5d]) {
    do {
      uVar11 = (uint)uVar18;
      if (*(ulonglong *)(*(longlong *)puVar1 + uVar21) == (ulonglong)DVar10) {
        piVar2 = (int *)(*(longlong *)puVar1 + 8 + uVar21);
        *piVar2 = *piVar2 + -1;
        if (*piVar2 == 0) {
          if (uVar11 < local_res8[0x5d]) {
            pvVar16 = (void *)((longlong)(int)uVar11 * 0x10 + *(longlong *)puVar1);
            memmove(pvVar16,(void *)((longlong)pvVar16 + 0x10),
                    (longlong)(int)((local_res8[0x5d] - uVar11) + -1) << 4);
            local_res8[0x5d] = local_res8[0x5d] - 1;
            uVar11 = local_res8[0x5d];
            if (0 < (int)(uVar11 * 2)) {
              uVar20 = (ulonglong)(uVar11 * 2);
            }
            if ((int)uVar20 < (int)local_res8[0x5c]) {
              if ((int)uVar11 < 4) {
                uVar11 = 4;
              }
              if ((int)uVar11 < (int)local_res8[0x5c]) {
                FUN_18049ba20(puVar1);
              }
            }
          }
          FUN_181215c10(local_res8 + 2);
          FUN_181215c10(local_res8 + 0x2c);
        }
        break;
      }
      uVar21 = uVar21 + 0x10;
      uVar18 = (ulonglong)(uVar11 + 1);
    } while ((int)(uVar11 + 1) < (int)local_res8[0x5d]);
  }
  LOCK();
  *local_res8 = 0;
  UNLOCK();
  return plVar24;
}



############ FUN_ 18124ad90 size=1014 ############

undefined8 * FUN_18124ad90(undefined8 *param_1,longlong *param_2)

{
  int *piVar1;
  uint uVar2;
  undefined8 *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  longlong *plVar8;
  longlong lVar9;
  longlong lVar10;
  uint *puVar11;
  undefined8 *local_res8;
  longlong local_res10;
  
  if ((*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc
               ) < DAT_18267b088) &&
     (local_res8 = param_1, _Init_thread_header(&DAT_18267b088), DAT_18267b088 == -1)) {
    FUN_1804a5890(&DAT_18267b040);
    atexit(FUN_181a4abd0);
    _Init_thread_footer(&DAT_18267b088);
  }
  local_res8 = (undefined8 *)*param_2;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
    UNLOCK();
  }
  lVar10 = *param_2;
  plVar8 = (longlong *)FUN_181252610();
  iVar4 = 0;
  iVar5 = iVar4;
  if (*(longlong *)(lVar10 + 0x18) != *plVar8) {
    iVar5 = FUN_18048cbc0(*(undefined8 *)(lVar10 + 0x18),*plVar8);
  }
  iVar6 = 0;
  iVar7 = 0;
  if (iVar5 == 0) {
    if (DAT_18267b040 != local_res8[3]) {
      iVar4 = FUN_18048cbc0(DAT_18267b040,local_res8[3]);
    }
    if (iVar4 == 0) goto LAB_18124affb;
    FUN_181252760(&local_res8);
    if ((*(uint *)(DAT_18267b040 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_18267b040 + -0x10) = *(int *)(DAT_18267b040 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar10 = local_res8[3];
    local_res8[3] = DAT_18267b040;
    UNLOCK();
    puVar11 = (uint *)(lVar10 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    puVar3 = (undefined8 *)local_res8[2];
    local_res8[2] = 0;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)*puVar3)(puVar3,1);
        *(undefined4 *)((longlong)local_res8 + 0x34) = 0;
        goto LAB_18124affb;
      }
    }
  }
  else {
    lVar9 = FUN_181252610();
    iVar5 = iVar7;
    if (*(longlong *)(lVar10 + 0x18) != *(longlong *)(lVar9 + 8)) {
      iVar5 = FUN_18048cbc0(*(undefined8 *)(lVar10 + 0x18),*(undefined8 *)(lVar9 + 8));
    }
    if (iVar5 != 0) {
      lVar9 = FUN_181252610();
      iVar5 = iVar6;
      if (*(longlong *)(lVar10 + 0x18) != *(longlong *)(lVar9 + 0x10)) {
        iVar5 = FUN_18048cbc0(*(undefined8 *)(lVar10 + 0x18),*(undefined8 *)(lVar9 + 0x10));
      }
      if (iVar5 == 0) {
        FUN_1812524b0(&local_res8,&DAT_18267b050);
      }
      goto LAB_18124affb;
    }
    iVar5 = iVar7;
    if (DAT_18267b048 != local_res8[3]) {
      iVar5 = FUN_18048cbc0(DAT_18267b048,local_res8[3]);
    }
    if (iVar5 == 0) goto LAB_18124affb;
    FUN_181252760(&local_res8);
    if ((*(uint *)(DAT_18267b048 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_18267b048 + -0x10) = *(int *)(DAT_18267b048 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar10 = local_res8[3];
    local_res8[3] = DAT_18267b048;
    UNLOCK();
    puVar11 = (uint *)(lVar10 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    puVar3 = (undefined8 *)local_res8[2];
    local_res8[2] = 0;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
  }
  *(undefined4 *)((longlong)local_res8 + 0x34) = 0;
LAB_18124affb:
  lVar10 = FUN_181252610();
  if (*(longlong *)(*param_2 + 0x20) != *(longlong *)(lVar10 + 0x18)) {
    iVar6 = FUN_18048cbc0(*(undefined8 *)(*param_2 + 0x20),*(undefined8 *)(lVar10 + 0x18));
  }
  if (iVar6 == 0) {
    FUN_18049c4e0(&local_res10,"Regular");
    lVar10 = local_res10;
    if (local_res10 != local_res8[4]) {
      iVar7 = FUN_18048cbc0(local_res10,local_res8[4]);
    }
    if (iVar7 != 0) {
      FUN_181252760(&local_res8);
      if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar10 = local_res8[4];
      local_res8[4] = local_res10;
      UNLOCK();
      puVar11 = (uint *)(lVar10 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      puVar3 = (undefined8 *)local_res8[2];
      local_res8[2] = 0;
      if (puVar3 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar3 + 1);
        iVar5 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar5 == 1) {
          (**(code **)*puVar3)(puVar3,1);
        }
      }
      *(undefined4 *)((longlong)local_res8 + 0x34) = 0;
      lVar10 = local_res10;
    }
    puVar11 = (uint *)(lVar10 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
  }
  FUN_18124abe0(param_1,&local_res8);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return param_1;
}



############ FUN_ 1812524b0 size=191 ############

void FUN_1812524b0(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  int iVar4;
  int *piVar5;
  
  if (*param_2 != *(longlong *)(*param_1 + 0x18)) {
    iVar4 = FUN_18048cbc0(*param_2,*(longlong *)(*param_1 + 0x18));
    if (iVar4 != 0) {
      FUN_181252760(param_1);
      lVar2 = *param_1;
      if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(*param_2 + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar1 = *(longlong *)(lVar2 + 0x18);
      *(longlong *)(lVar2 + 0x18) = *param_2;
      UNLOCK();
      piVar5 = (int *)(lVar1 + -0x10);
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar4 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      puVar3 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar3 != (undefined8 *)0x0) {
        LOCK();
        piVar5 = (int *)(puVar3 + 1);
        iVar4 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar4 == 1) {
          (**(code **)*puVar3)(puVar3,1);
        }
      }
      *(undefined4 *)(*param_1 + 0x34) = 0;
    }
  }
  return;
}



############ FUN_ 181252880 size=147 ############

undefined8 FUN_181252880(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  
  lVar1 = *param_1;
  lVar2 = *param_2;
  if ((lVar1 != lVar2) &&
     (((((*(float *)(lVar1 + 0x28) != *(float *)(lVar2 + 0x28) ||
         (*(char *)(lVar1 + 0x38) != *(char *)(lVar2 + 0x38))) ||
        (*(float *)(lVar1 + 0x2c) != *(float *)(lVar2 + 0x2c))) ||
       ((*(float *)(lVar1 + 0x30) != *(float *)(lVar2 + 0x30) ||
        ((*(longlong *)(lVar1 + 0x18) != *(longlong *)(lVar2 + 0x18) &&
         (iVar3 = FUN_18048cbc0(*(undefined8 *)(lVar1 + 0x18),*(longlong *)(lVar2 + 0x18)),
         iVar3 != 0)))))) ||
      ((*(longlong *)(lVar1 + 0x20) != *(longlong *)(lVar2 + 0x20) &&
       (iVar3 = FUN_18048cbc0(*(undefined8 *)(lVar1 + 0x20),*(longlong *)(lVar2 + 0x20)), iVar3 != 0
       )))))) {
    return 0;
  }
  return 1;
}



############ FUN_ 1804a1570 size=108 ############

undefined8 FUN_1804a1570(longlong *param_1)

{
  int iVar1;
  longlong *plVar2;
  longlong lVar3;
  
  plVar2 = (longlong *)FUN_181252610();
  if (*param_1 != *plVar2) {
    iVar1 = FUN_18048cbc0(*param_1);
    if (iVar1 != 0) {
      lVar3 = FUN_181252610();
      if (*param_1 != *(longlong *)(lVar3 + 8)) {
        iVar1 = FUN_18048cbc0(*param_1,*(longlong *)(lVar3 + 8));
        if (iVar1 != 0) {
          lVar3 = FUN_181252610();
          if (*param_1 != *(longlong *)(lVar3 + 0x10)) {
            iVar1 = FUN_18048cbc0(*param_1,*(longlong *)(lVar3 + 0x10));
            if (iVar1 != 0) {
              return 0;
            }
          }
        }
      }
    }
  }
  return 1;
}



############ FUN_ 1804a16b0 size=376 ############

longlong * FUN_1804a16b0(longlong *param_1,longlong *param_2)

{
  int iVar1;
  uint uVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267b060) {
    _Init_thread_header(&DAT_18267b060);
    if (DAT_18267b060 == -1) {
      uVar5 = FUN_181252610();
      FUN_1804a15e0(&DAT_18267b068,uVar5);
      lVar4 = FUN_181252610();
      FUN_1804a15e0(&DAT_18267b070,lVar4 + 8);
      lVar4 = FUN_181252610();
      FUN_1804a15e0(&DAT_18267b078,lVar4 + 0x10);
      atexit(FUN_181a4aa20);
      _Init_thread_footer(&DAT_18267b060);
    }
  }
  plVar3 = (longlong *)FUN_181252610();
  if (*param_2 != *plVar3) {
    iVar1 = FUN_18048cbc0(*param_2,*plVar3);
    if (iVar1 != 0) {
      lVar4 = FUN_181252610();
      if (*param_2 != *(longlong *)(lVar4 + 8)) {
        iVar1 = FUN_18048cbc0(*param_2,*(longlong *)(lVar4 + 8));
        if (iVar1 != 0) {
          lVar4 = FUN_181252610();
          if (*param_2 != *(longlong *)(lVar4 + 0x10)) {
            iVar1 = FUN_18048cbc0(*param_2,*(longlong *)(lVar4 + 0x10));
            if (iVar1 != 0) {
              FUN_1804a15e0(param_1,param_2);
              return param_1;
            }
          }
          lVar4 = DAT_18267b078;
          *param_1 = DAT_18267b078;
          uVar2 = *(uint *)(lVar4 + -0x10);
          goto LAB_1804a1791;
        }
      }
      lVar4 = DAT_18267b070;
      *param_1 = DAT_18267b070;
      uVar2 = *(uint *)(lVar4 + -0x10);
      goto LAB_1804a1791;
    }
  }
  lVar4 = DAT_18267b068;
  *param_1 = DAT_18267b068;
  uVar2 = *(uint *)(lVar4 + -0x10);
LAB_1804a1791:
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 1804d2770 size=2534 ############

void FUN_1804d2770(undefined8 *param_1,longlong *param_2,longlong *param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  longlong *plVar8;
  uint *puVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong *plVar12;
  longlong *plVar13;
  longlong *plVar14;
  longlong *plVar15;
  longlong *local_308;
  longlong *local_300;
  longlong *local_2f8;
  longlong *local_2f0;
  longlong local_2d0;
  longlong local_2c8;
  undefined4 local_2c0;
  undefined4 uStack_2bc;
  undefined4 uStack_2b8;
  undefined4 uStack_2b4;
  undefined1 local_2b0;
  undefined4 local_2ac;
  longlong local_2a8;
  longlong local_2a0;
  longlong local_298;
  undefined4 local_290;
  undefined4 uStack_28c;
  undefined4 uStack_288;
  undefined4 uStack_284;
  undefined1 local_280;
  undefined4 local_27c;
  longlong local_278;
  longlong local_270;
  longlong local_268;
  undefined4 local_260;
  undefined4 uStack_25c;
  undefined4 uStack_258;
  undefined4 uStack_254;
  undefined1 local_250;
  undefined4 local_24c;
  longlong local_248;
  longlong local_240;
  longlong local_238;
  undefined4 local_230;
  undefined4 uStack_22c;
  undefined4 uStack_228;
  undefined4 uStack_224;
  undefined1 local_220;
  undefined4 local_21c;
  longlong local_218;
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  longlong local_1e0;
  longlong local_1d8;
  longlong local_1d0;
  longlong local_1c8;
  longlong local_1c0;
  longlong local_1b8;
  longlong local_1b0;
  longlong local_1a8;
  longlong local_1a0;
  longlong local_198;
  longlong local_190;
  longlong local_188;
  longlong local_180;
  longlong local_178;
  longlong local_170;
  longlong local_168;
  longlong local_160;
  longlong local_158;
  longlong local_150;
  longlong local_148;
  longlong local_140;
  longlong local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  longlong lStack_b0;
  undefined1 local_a8;
  undefined4 local_a4;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong lStack_80;
  undefined1 local_78;
  undefined4 local_74;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong lStack_50;
  undefined1 local_48;
  undefined4 local_44;
  longlong local_40;
  
  plVar10 = param_3 + -6;
  lVar7 = ((longlong)plVar10 - (longlong)param_2) / 0x30;
  plVar12 = param_2 + (((longlong)param_3 - (longlong)param_2) / 0x30 >> 1) * 6;
  plVar8 = param_2;
  if (0x28 < lVar7) {
    lVar7 = lVar7 + 1 >> 3;
    FUN_1804d3670(param_2,param_2 + lVar7 * 6,param_2 + lVar7 * 0xc);
    FUN_1804d3670(plVar12 + lVar7 * -6,plVar12,plVar12 + lVar7 * 6);
    plVar10 = plVar10 + lVar7 * -6;
    FUN_1804d3670(param_3 + lVar7 * -0xc + -6,plVar10);
    plVar8 = param_2 + lVar7 * 6;
  }
  FUN_1804d3670(plVar8,plVar12,plVar10);
  plVar10 = plVar12 + 6;
  while (plVar8 = plVar12, param_2 < plVar8) {
    lVar7 = plVar8[-6];
    lVar2 = *plVar8;
    local_118 = lVar2;
    local_e0 = lVar7;
    iVar6 = FUN_18048cbc0(lVar7,lVar2);
    if ((iVar6 < 0) ||
       (local_d8 = lVar7, local_d0 = lVar2, iVar6 = FUN_18048cbc0(lVar2,lVar7),
       plVar12 = plVar8 + -6, iVar6 < 0)) break;
  }
  plVar12 = plVar10;
  plVar14 = plVar8;
  local_300 = plVar10;
  local_2f0 = plVar10;
  local_2f8 = plVar8;
  local_308 = plVar8;
  if (plVar10 < param_3) {
    lVar7 = *plVar8;
    do {
      lVar2 = *plVar10;
      local_210 = lVar7;
      local_208 = lVar2;
      iVar6 = FUN_18048cbc0(lVar2,lVar7);
      plVar12 = plVar10;
      local_300 = plVar10;
      local_2f0 = plVar10;
      if ((iVar6 < 0) ||
         (local_200 = lVar2, local_1f8 = lVar7, iVar6 = FUN_18048cbc0(lVar7,lVar2), iVar6 < 0))
      break;
      plVar10 = plVar10 + 6;
      plVar12 = plVar10;
      local_300 = plVar10;
      local_2f0 = plVar10;
    } while (plVar10 < param_3);
  }
joined_r0x0001804d2939:
  do {
    plVar11 = plVar8;
    if (param_3 <= plVar10) {
LAB_1804d2ac4:
      if (param_2 < plVar11) {
        plVar8 = plVar11 + -5;
        plVar13 = plVar14;
        do {
          lVar7 = plVar8[-1];
          plVar15 = plVar8 + -1;
          lVar2 = *plVar13;
          local_1b8 = lVar2;
          local_1b0 = lVar7;
          iVar6 = FUN_18048cbc0(lVar7,lVar2);
          plVar14 = plVar13;
          plVar10 = local_2f0;
          if (-1 < iVar6) {
            local_1a8 = lVar7;
            local_1a0 = lVar2;
            iVar6 = FUN_18048cbc0(lVar2,lVar7);
            plVar12 = local_300;
            local_2f8 = plVar11;
            if (iVar6 < 0) break;
            plVar14 = plVar13 + -6;
            local_308 = plVar14;
            if (plVar14 != plVar15) {
              local_98 = *plVar14;
              *plVar14 = (longlong)&DAT_1821dbf98;
              local_90 = plVar13[-5];
              plVar13[-5] = (longlong)&DAT_1821dbf98;
              local_198 = *plVar14;
              local_88 = plVar13[-4];
              lStack_80 = plVar13[-3];
              local_78 = (undefined1)plVar13[-2];
              local_70 = plVar13[-1];
              local_74 = *(undefined4 *)((longlong)plVar13 + -0xc);
              *plVar14 = *plVar15;
              *plVar15 = local_198;
              local_190 = plVar13[-5];
              plVar13[-5] = *plVar8;
              *plVar8 = local_190;
              uVar3 = *(undefined4 *)((longlong)plVar8 + 0xc);
              lVar7 = plVar8[2];
              uVar4 = *(undefined4 *)((longlong)plVar8 + 0x14);
              *(int *)(plVar13 + -4) = (int)plVar8[1];
              *(undefined4 *)((longlong)plVar13 + -0x1c) = uVar3;
              *(int *)(plVar13 + -3) = (int)lVar7;
              *(undefined4 *)((longlong)plVar13 + -0x14) = uVar4;
              *(char *)(plVar13 + -2) = (char)plVar8[3];
              *(undefined4 *)((longlong)plVar13 + -0xc) = *(undefined4 *)((longlong)plVar8 + 0x1c);
              plVar13[-1] = plVar8[4];
              lVar7 = *plVar15;
              *plVar15 = local_98;
              local_188 = *plVar8;
              *plVar8 = local_90;
              plVar8[4] = local_70;
              plVar8[1] = local_88;
              plVar8[2] = lStack_80;
              puVar9 = (uint *)(local_188 + -0x10);
              *(undefined1 *)(plVar8 + 3) = local_78;
              *(undefined4 *)((longlong)plVar8 + 0x1c) = local_74;
              if ((*puVar9 & 0x30000000) == 0) {
                LOCK();
                uVar1 = *puVar9;
                *puVar9 = *puVar9 - 1;
                UNLOCK();
                if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar9);
                }
              }
              puVar9 = (uint *)(lVar7 + -0x10);
              if ((*puVar9 & 0x30000000) == 0) {
                LOCK();
                uVar1 = *puVar9;
                *puVar9 = *puVar9 - 1;
                UNLOCK();
                if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar9);
                }
              }
            }
          }
          plVar11 = plVar11 + -6;
          plVar8 = plVar8 + -6;
          plVar12 = local_300;
          plVar13 = plVar14;
          local_2f8 = plVar11;
        } while (param_2 < plVar11);
      }
      if (plVar11 == param_2) {
        if (plVar10 == param_3) {
          *param_1 = plVar14;
          param_1[1] = plVar12;
          return;
        }
        plVar13 = plVar12;
        plVar15 = plVar14;
        if (plVar12 != plVar10) {
          local_68 = *plVar14;
          *plVar14 = (longlong)&DAT_1821dbf98;
          local_60 = plVar14[1];
          plVar14[1] = (longlong)&DAT_1821dbf98;
          local_180 = *plVar14;
          local_58 = plVar14[2];
          lStack_50 = plVar14[3];
          local_48 = (undefined1)plVar14[4];
          local_40 = plVar14[5];
          local_44 = *(undefined4 *)((longlong)plVar14 + 0x24);
          *plVar14 = *plVar12;
          *plVar12 = local_180;
          local_178 = plVar14[1];
          plVar14[1] = plVar12[1];
          plVar12[1] = local_178;
          lVar7 = plVar12[3];
          plVar14[2] = plVar12[2];
          plVar14[3] = lVar7;
          *(char *)(plVar14 + 4) = (char)plVar12[4];
          *(undefined4 *)((longlong)plVar14 + 0x24) = *(undefined4 *)((longlong)plVar12 + 0x24);
          plVar14[5] = plVar12[5];
          lVar7 = *plVar12;
          *plVar12 = local_68;
          local_170 = plVar12[1];
          plVar12[1] = local_60;
          plVar12[5] = local_40;
          plVar12[2] = local_58;
          plVar12[3] = lStack_50;
          puVar9 = (uint *)(local_170 + -0x10);
          *(undefined1 *)(plVar12 + 4) = local_48;
          *(undefined4 *)((longlong)plVar12 + 0x24) = local_44;
          if ((*puVar9 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar9;
            *puVar9 = *puVar9 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar9);
            }
          }
          puVar9 = (uint *)(lVar7 + -0x10);
          plVar13 = local_300;
          plVar15 = local_308;
          if ((*puVar9 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar9;
            *puVar9 = *puVar9 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar9);
            }
          }
        }
        lVar7 = *plVar15;
        *plVar15 = (longlong)&DAT_1821dbf98;
        lVar2 = plVar15[1];
        plVar15[1] = (longlong)&DAT_1821dbf98;
        local_168 = *plVar15;
        local_2c0 = (undefined4)plVar15[2];
        uStack_2bc = *(undefined4 *)((longlong)plVar15 + 0x14);
        uStack_2b8 = (undefined4)plVar15[3];
        uStack_2b4 = *(undefined4 *)((longlong)plVar15 + 0x1c);
        local_2b0 = (undefined1)plVar15[4];
        local_2a8 = plVar15[5];
        local_2ac = *(undefined4 *)((longlong)plVar15 + 0x24);
        *plVar15 = *plVar10;
        *plVar10 = local_168;
        local_160 = plVar15[1];
        plVar15[1] = plVar10[1];
        plVar10[1] = local_160;
        uVar3 = *(undefined4 *)((longlong)plVar10 + 0x14);
        lVar5 = plVar10[3];
        uVar4 = *(undefined4 *)((longlong)plVar10 + 0x1c);
        *(int *)(plVar15 + 2) = (int)plVar10[2];
        *(undefined4 *)((longlong)plVar15 + 0x14) = uVar3;
        *(int *)(plVar15 + 3) = (int)lVar5;
        *(undefined4 *)((longlong)plVar15 + 0x1c) = uVar4;
        *(char *)(plVar15 + 4) = (char)plVar10[4];
        *(undefined4 *)((longlong)plVar15 + 0x24) = *(undefined4 *)((longlong)plVar10 + 0x24);
        plVar15[5] = plVar10[5];
        local_2d0 = *plVar10;
        *plVar10 = lVar7;
        local_2c8 = plVar10[1];
        plVar10[1] = lVar2;
        plVar10[5] = local_2a8;
        *(undefined4 *)(plVar10 + 2) = local_2c0;
        *(undefined4 *)((longlong)plVar10 + 0x14) = uStack_2bc;
        *(undefined4 *)(plVar10 + 3) = uStack_2b8;
        *(undefined4 *)((longlong)plVar10 + 0x1c) = uStack_2b4;
        *(undefined1 *)(plVar10 + 4) = local_2b0;
        *(undefined4 *)((longlong)plVar10 + 0x24) = local_2ac;
        local_158 = local_2d0;
        local_150 = local_2c8;
        FUN_1804d1090(&local_2d0);
        plVar10 = plVar10 + 6;
        plVar8 = plVar11;
        plVar12 = plVar13 + 6;
        plVar14 = plVar15 + 6;
        local_300 = plVar13 + 6;
        local_2f0 = plVar10;
        local_308 = plVar15 + 6;
      }
      else {
        plVar8 = plVar11 + -6;
        local_2f8 = plVar8;
        if (plVar10 == param_3) {
          local_308 = plVar14 + -6;
          if (plVar8 != local_308) {
            lVar7 = *plVar8;
            *plVar8 = (longlong)&DAT_1821dbf98;
            lVar2 = plVar11[-5];
            plVar11[-5] = (longlong)&DAT_1821dbf98;
            local_148 = *plVar8;
            local_290 = (undefined4)plVar11[-4];
            uStack_28c = *(undefined4 *)((longlong)plVar11 + -0x1c);
            uStack_288 = (undefined4)plVar11[-3];
            uStack_284 = *(undefined4 *)((longlong)plVar11 + -0x14);
            local_280 = (undefined1)plVar11[-2];
            local_278 = plVar11[-1];
            local_27c = *(undefined4 *)((longlong)plVar11 + -0xc);
            *plVar8 = *local_308;
            *local_308 = local_148;
            local_140 = plVar11[-5];
            plVar11[-5] = plVar14[-5];
            plVar14[-5] = local_140;
            uVar3 = *(undefined4 *)((longlong)plVar14 + -0x1c);
            lVar5 = plVar14[-3];
            uVar4 = *(undefined4 *)((longlong)plVar14 + -0x14);
            *(int *)(plVar11 + -4) = (int)plVar14[-4];
            *(undefined4 *)((longlong)plVar11 + -0x1c) = uVar3;
            *(int *)(plVar11 + -3) = (int)lVar5;
            *(undefined4 *)((longlong)plVar11 + -0x14) = uVar4;
            *(char *)(plVar11 + -2) = (char)plVar14[-2];
            *(undefined4 *)((longlong)plVar11 + -0xc) = *(undefined4 *)((longlong)plVar14 + -0xc);
            plVar11[-1] = plVar14[-1];
            local_2a0 = *local_308;
            *local_308 = lVar7;
            local_298 = plVar14[-5];
            plVar14[-5] = lVar2;
            plVar14[-1] = local_278;
            *(undefined4 *)(plVar14 + -4) = local_290;
            *(undefined4 *)((longlong)plVar14 + -0x1c) = uStack_28c;
            *(undefined4 *)(plVar14 + -3) = uStack_288;
            *(undefined4 *)((longlong)plVar14 + -0x14) = uStack_284;
            *(undefined1 *)(plVar14 + -2) = local_280;
            *(undefined4 *)((longlong)plVar14 + -0xc) = local_27c;
            local_138 = local_2a0;
            local_130 = local_298;
            FUN_1804d1090(&local_2a0);
          }
          lVar7 = *local_308;
          local_300 = plVar12 + -6;
          *local_308 = (longlong)&DAT_1821dbf98;
          lVar2 = plVar14[-5];
          plVar14[-5] = (longlong)&DAT_1821dbf98;
          local_128 = *local_308;
          local_260 = (undefined4)plVar14[-4];
          uStack_25c = *(undefined4 *)((longlong)plVar14 + -0x1c);
          uStack_258 = (undefined4)plVar14[-3];
          uStack_254 = *(undefined4 *)((longlong)plVar14 + -0x14);
          local_250 = (undefined1)plVar14[-2];
          local_248 = plVar14[-1];
          local_24c = *(undefined4 *)((longlong)plVar14 + -0xc);
          *local_308 = *local_300;
          *local_300 = local_128;
          local_120 = plVar14[-5];
          plVar14[-5] = plVar12[-5];
          plVar12[-5] = local_120;
          uVar3 = *(undefined4 *)((longlong)plVar12 + -0x1c);
          lVar5 = plVar12[-3];
          uVar4 = *(undefined4 *)((longlong)plVar12 + -0x14);
          *(int *)(plVar14 + -4) = (int)plVar12[-4];
          *(undefined4 *)((longlong)plVar14 + -0x1c) = uVar3;
          *(int *)(plVar14 + -3) = (int)lVar5;
          *(undefined4 *)((longlong)plVar14 + -0x14) = uVar4;
          *(char *)(plVar14 + -2) = (char)plVar12[-2];
          *(undefined4 *)((longlong)plVar14 + -0xc) = *(undefined4 *)((longlong)plVar12 + -0xc);
          plVar14[-1] = plVar12[-1];
          local_270 = *local_300;
          *local_300 = lVar7;
          local_268 = plVar12[-5];
          plVar12[-5] = lVar2;
          plVar12[-1] = local_248;
          *(undefined4 *)(plVar12 + -4) = local_260;
          *(undefined4 *)((longlong)plVar12 + -0x1c) = uStack_25c;
          *(undefined4 *)(plVar12 + -3) = uStack_258;
          *(undefined4 *)((longlong)plVar12 + -0x14) = uStack_254;
          *(undefined1 *)(plVar12 + -2) = local_250;
          *(undefined4 *)((longlong)plVar12 + -0xc) = local_24c;
          local_110 = local_268;
          local_e8 = local_270;
          FUN_1804d1090(&local_270);
          plVar12 = local_300;
          plVar14 = local_308;
        }
        else {
          lVar7 = *plVar10;
          *plVar10 = (longlong)&DAT_1821dbf98;
          lVar2 = plVar10[1];
          plVar10[1] = (longlong)&DAT_1821dbf98;
          local_108 = *plVar10;
          local_230 = (undefined4)plVar10[2];
          uStack_22c = *(undefined4 *)((longlong)plVar10 + 0x14);
          uStack_228 = (undefined4)plVar10[3];
          uStack_224 = *(undefined4 *)((longlong)plVar10 + 0x1c);
          local_220 = (undefined1)plVar10[4];
          local_218 = plVar10[5];
          local_21c = *(undefined4 *)((longlong)plVar10 + 0x24);
          *plVar10 = *plVar8;
          *plVar8 = local_108;
          local_100 = plVar10[1];
          plVar10[1] = plVar11[-5];
          plVar11[-5] = local_100;
          uVar3 = *(undefined4 *)((longlong)plVar11 + -0x1c);
          lVar5 = plVar11[-3];
          uVar4 = *(undefined4 *)((longlong)plVar11 + -0x14);
          *(int *)(plVar10 + 2) = (int)plVar11[-4];
          *(undefined4 *)((longlong)plVar10 + 0x14) = uVar3;
          *(int *)(plVar10 + 3) = (int)lVar5;
          *(undefined4 *)((longlong)plVar10 + 0x1c) = uVar4;
          *(char *)(plVar10 + 4) = (char)plVar11[-2];
          *(undefined4 *)((longlong)plVar10 + 0x24) = *(undefined4 *)((longlong)plVar11 + -0xc);
          plVar10[5] = plVar11[-1];
          local_240 = *plVar8;
          *plVar8 = lVar7;
          local_238 = plVar11[-5];
          plVar11[-5] = lVar2;
          plVar11[-1] = local_218;
          *(undefined4 *)(plVar11 + -4) = local_230;
          *(undefined4 *)((longlong)plVar11 + -0x1c) = uStack_22c;
          *(undefined4 *)(plVar11 + -3) = uStack_228;
          *(undefined4 *)((longlong)plVar11 + -0x14) = uStack_224;
          *(undefined1 *)(plVar11 + -2) = local_220;
          *(undefined4 *)((longlong)plVar11 + -0xc) = local_21c;
          local_f8 = local_240;
          local_f0 = local_238;
          FUN_1804d1090(&local_240);
          plVar10 = plVar10 + 6;
          local_2f0 = plVar10;
        }
      }
      goto joined_r0x0001804d2939;
    }
    lVar7 = *plVar10;
    lVar2 = *plVar14;
    local_1f0 = lVar7;
    local_1e8 = lVar2;
    iVar6 = FUN_18048cbc0(lVar2,lVar7);
    if (-1 < iVar6) {
      local_1e0 = lVar2;
      local_1d8 = lVar7;
      iVar6 = FUN_18048cbc0(lVar7,lVar2);
      plVar11 = local_2f8;
      local_2f0 = plVar10;
      if (iVar6 < 0) goto LAB_1804d2ac4;
      if (plVar12 != plVar10) {
        local_c8 = *plVar12;
        *plVar12 = (longlong)&DAT_1821dbf98;
        local_c0 = plVar12[1];
        plVar12[1] = (longlong)&DAT_1821dbf98;
        local_1d0 = *plVar12;
        local_b8 = plVar12[2];
        lStack_b0 = plVar12[3];
        local_a8 = (undefined1)plVar12[4];
        local_a0 = plVar12[5];
        local_a4 = *(undefined4 *)((longlong)plVar12 + 0x24);
        *plVar12 = *plVar10;
        *plVar10 = local_1d0;
        local_1c8 = plVar12[1];
        plVar12[1] = plVar10[1];
        plVar10[1] = local_1c8;
        uVar3 = *(undefined4 *)((longlong)plVar10 + 0x14);
        lVar7 = plVar10[3];
        uVar4 = *(undefined4 *)((longlong)plVar10 + 0x1c);
        *(int *)(plVar12 + 2) = (int)plVar10[2];
        *(undefined4 *)((longlong)plVar12 + 0x14) = uVar3;
        *(int *)(plVar12 + 3) = (int)lVar7;
        *(undefined4 *)((longlong)plVar12 + 0x1c) = uVar4;
        *(char *)(plVar12 + 4) = (char)plVar10[4];
        *(undefined4 *)((longlong)plVar12 + 0x24) = *(undefined4 *)((longlong)plVar10 + 0x24);
        plVar12[5] = plVar10[5];
        lVar7 = *plVar10;
        *plVar10 = local_c8;
        local_1c0 = plVar10[1];
        plVar10[1] = local_c0;
        plVar10[5] = local_a0;
        plVar10[2] = local_b8;
        plVar10[3] = lStack_b0;
        puVar9 = (uint *)(local_1c0 + -0x10);
        *(undefined1 *)(plVar10 + 4) = local_a8;
        *(undefined4 *)((longlong)plVar10 + 0x24) = local_a4;
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        puVar9 = (uint *)(lVar7 + -0x10);
        plVar12 = local_300;
        plVar14 = local_308;
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
      }
      plVar12 = plVar12 + 6;
      local_300 = plVar12;
    }
    plVar10 = plVar10 + 6;
    plVar8 = local_2f8;
    local_2f0 = plVar10;
  } while( true );
}



############ FUN_ 1804d3160 size=753 ############

longlong * FUN_1804d3160(longlong *param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  uint uVar3;
  undefined4 uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  longlong lVar10;
  int iVar11;
  longlong lVar12;
  longlong *plVar13;
  uint *puVar14;
  longlong *plVar15;
  longlong *plVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  undefined4 uVar19;
  undefined4 uVar20;
  longlong local_b8;
  
  if (param_1 == param_2) {
    return param_2;
  }
  plVar16 = param_1 + 6;
  if (plVar16 != param_2) {
    do {
      lVar12 = *plVar16;
      *plVar16 = (longlong)&DAT_1821dbf98;
      lVar5 = plVar16[1];
      plVar16[1] = (longlong)&DAT_1821dbf98;
      uVar4 = *(undefined4 *)((longlong)plVar16 + 0x24);
      lVar10 = plVar16[4];
      uVar17 = (undefined4)plVar16[2];
      uVar18 = *(undefined4 *)((longlong)plVar16 + 0x14);
      uVar19 = (undefined4)plVar16[3];
      uVar20 = *(undefined4 *)((longlong)plVar16 + 0x1c);
      lVar6 = plVar16[5];
      iVar11 = FUN_18048cbc0(lVar12);
      if (iVar11 < 0) {
        if (plVar16 != param_1) {
          plVar13 = plVar16 + -5;
          plVar15 = plVar16 + 6;
          do {
            plVar1 = plVar15 + -6;
            lVar7 = *plVar1;
            *plVar1 = plVar13[-1];
            plVar13[-1] = lVar7;
            lVar7 = plVar15[-5];
            plVar15[-5] = *plVar13;
            *plVar13 = lVar7;
            uVar8 = *(undefined4 *)((longlong)plVar13 + 0xc);
            lVar7 = plVar13[2];
            uVar9 = *(undefined4 *)((longlong)plVar13 + 0x14);
            *(int *)(plVar15 + -4) = (int)plVar13[1];
            *(undefined4 *)((longlong)plVar15 + -0x1c) = uVar8;
            *(int *)(plVar15 + -3) = (int)lVar7;
            *(undefined4 *)((longlong)plVar15 + -0x14) = uVar9;
            *(char *)(plVar15 + -2) = (char)plVar13[3];
            *(undefined4 *)((longlong)plVar15 + -0xc) = *(undefined4 *)((longlong)plVar13 + 0x1c);
            plVar15[-1] = plVar13[4];
            plVar2 = plVar13 + -1;
            plVar13 = plVar13 + -6;
            plVar15 = plVar1;
          } while (plVar2 != param_1);
        }
        local_b8 = *param_1;
        *param_1 = lVar12;
        lVar12 = param_1[1];
        param_1[1] = lVar5;
        *(undefined4 *)(param_1 + 2) = uVar17;
        *(undefined4 *)((longlong)param_1 + 0x14) = uVar18;
        *(undefined4 *)(param_1 + 3) = uVar19;
        *(undefined4 *)((longlong)param_1 + 0x1c) = uVar20;
        *(char *)(param_1 + 4) = (char)lVar10;
        *(undefined4 *)((longlong)param_1 + 0x24) = uVar4;
        param_1[5] = lVar6;
      }
      else {
        iVar11 = FUN_18048cbc0(lVar12);
        plVar13 = plVar16;
        while (iVar11 < 0) {
          plVar15 = plVar13 + -6;
          lVar7 = *plVar13;
          *plVar13 = *plVar15;
          *plVar15 = lVar7;
          lVar7 = plVar13[1];
          plVar13[1] = plVar13[-5];
          plVar13[-5] = lVar7;
          *(int *)(plVar13 + 2) = (int)plVar13[-4];
          *(undefined4 *)((longlong)plVar13 + 0x14) = *(undefined4 *)((longlong)plVar13 + -0x1c);
          *(int *)(plVar13 + 3) = (int)plVar13[-3];
          *(undefined4 *)((longlong)plVar13 + 0x1c) = *(undefined4 *)((longlong)plVar13 + -0x14);
          *(char *)(plVar13 + 4) = (char)plVar13[-2];
          *(undefined4 *)((longlong)plVar13 + 0x24) = *(undefined4 *)((longlong)plVar13 + -0xc);
          plVar13[5] = plVar13[-1];
          iVar11 = FUN_18048cbc0(lVar12);
          plVar13 = plVar15;
        }
        local_b8 = *plVar13;
        *plVar13 = lVar12;
        lVar12 = plVar13[1];
        plVar13[1] = lVar5;
        *(undefined4 *)(plVar13 + 2) = uVar17;
        *(undefined4 *)((longlong)plVar13 + 0x14) = uVar18;
        *(undefined4 *)(plVar13 + 3) = uVar19;
        *(undefined4 *)((longlong)plVar13 + 0x1c) = uVar20;
        *(char *)(plVar13 + 4) = (char)lVar10;
        *(undefined4 *)((longlong)plVar13 + 0x24) = uVar4;
        plVar13[5] = lVar6;
      }
      puVar14 = (uint *)(lVar12 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      puVar14 = (uint *)(local_b8 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      plVar16 = plVar16 + 6;
    } while (plVar16 != param_2);
    return param_2;
  }
  return param_2;
}



############ FUN_ 1804d3460 size=514 ############

void FUN_1804d3460(longlong param_1,longlong param_2,longlong param_3,undefined8 *param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined8 *puVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 *puVar10;
  
  lVar9 = param_3 + -1 >> 1;
  lVar1 = param_2;
  while (lVar1 < lVar9) {
    lVar8 = lVar1 * 2 + 2;
    iVar6 = FUN_18048cbc0(*(undefined8 *)(param_1 + lVar8 * 0x30),
                          *(undefined8 *)(param_1 + -0x30 + lVar8 * 0x30));
    if (iVar6 < 0) {
      lVar8 = lVar1 * 2 + 1;
    }
    puVar7 = (undefined8 *)(lVar1 * 0x30 + param_1);
    puVar10 = (undefined8 *)(lVar8 * 0x30 + param_1);
    uVar2 = *puVar7;
    *puVar7 = *puVar10;
    *puVar10 = uVar2;
    uVar2 = puVar7[1];
    puVar7[1] = puVar10[1];
    puVar10[1] = uVar2;
    uVar3 = *(undefined4 *)((longlong)puVar10 + 0x14);
    uVar4 = *(undefined4 *)(puVar10 + 3);
    uVar5 = *(undefined4 *)((longlong)puVar10 + 0x1c);
    *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(puVar10 + 2);
    *(undefined4 *)((longlong)puVar7 + 0x14) = uVar3;
    *(undefined4 *)(puVar7 + 3) = uVar4;
    *(undefined4 *)((longlong)puVar7 + 0x1c) = uVar5;
    *(undefined1 *)(puVar7 + 4) = *(undefined1 *)(puVar10 + 4);
    *(undefined4 *)((longlong)puVar7 + 0x24) = *(undefined4 *)((longlong)puVar10 + 0x24);
    puVar7[5] = puVar10[5];
    lVar1 = lVar8;
  }
  if ((lVar1 == lVar9) && (((ulonglong)((uint)param_3 & 1) ^ param_3 >> 0x3f) == param_3 >> 0x3f)) {
    lVar9 = lVar1 * 0x30;
    lVar1 = param_3 + -1;
    lVar8 = param_3 * 0x30 + param_1;
    puVar7 = (undefined8 *)(lVar9 + param_1);
    uVar2 = *puVar7;
    *puVar7 = *(undefined8 *)(lVar8 + -0x30);
    *(undefined8 *)(lVar8 + -0x30) = uVar2;
    uVar2 = puVar7[1];
    puVar7[1] = *(undefined8 *)(lVar8 + -0x28);
    *(undefined8 *)(lVar8 + -0x28) = uVar2;
    uVar3 = *(undefined4 *)(lVar8 + -0x1c);
    uVar4 = *(undefined4 *)(lVar8 + -0x18);
    uVar5 = *(undefined4 *)(lVar8 + -0x14);
    *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(lVar8 + -0x20);
    *(undefined4 *)((longlong)puVar7 + 0x14) = uVar3;
    *(undefined4 *)(puVar7 + 3) = uVar4;
    *(undefined4 *)((longlong)puVar7 + 0x1c) = uVar5;
    *(undefined1 *)(puVar7 + 4) = *(undefined1 *)(lVar8 + -0x10);
    *(undefined4 *)((longlong)puVar7 + 0x24) = *(undefined4 *)(lVar8 + -0xc);
    puVar7[5] = *(undefined8 *)(lVar8 + -8);
  }
  while (param_2 < lVar1) {
    lVar9 = lVar1 + -1 >> 1;
    puVar7 = (undefined8 *)(lVar9 * 0x30 + param_1);
    iVar6 = FUN_18048cbc0(*puVar7,*param_4);
    if (-1 < iVar6) break;
    puVar10 = (undefined8 *)(lVar1 * 0x30 + param_1);
    uVar2 = *puVar10;
    *puVar10 = *puVar7;
    *puVar7 = uVar2;
    uVar2 = puVar10[1];
    puVar10[1] = puVar7[1];
    puVar7[1] = uVar2;
    uVar3 = *(undefined4 *)((longlong)puVar7 + 0x14);
    uVar4 = *(undefined4 *)(puVar7 + 3);
    uVar5 = *(undefined4 *)((longlong)puVar7 + 0x1c);
    *(undefined4 *)(puVar10 + 2) = *(undefined4 *)(puVar7 + 2);
    *(undefined4 *)((longlong)puVar10 + 0x14) = uVar3;
    *(undefined4 *)(puVar10 + 3) = uVar4;
    *(undefined4 *)((longlong)puVar10 + 0x1c) = uVar5;
    *(undefined1 *)(puVar10 + 4) = *(undefined1 *)(puVar7 + 4);
    *(undefined4 *)((longlong)puVar10 + 0x24) = *(undefined4 *)((longlong)puVar7 + 0x24);
    puVar10[5] = puVar7[5];
    lVar1 = lVar9;
  }
  puVar7 = (undefined8 *)(lVar1 * 0x30 + param_1);
  uVar2 = *puVar7;
  *puVar7 = *param_4;
  *param_4 = uVar2;
  uVar2 = puVar7[1];
  puVar7[1] = param_4[1];
  param_4[1] = uVar2;
  uVar2 = param_4[3];
  puVar7[2] = param_4[2];
  puVar7[3] = uVar2;
  *(undefined1 *)(puVar7 + 4) = *(undefined1 *)(param_4 + 4);
  *(undefined4 *)((longlong)puVar7 + 0x24) = *(undefined4 *)((longlong)param_4 + 0x24);
  puVar7[5] = param_4[5];
  return;
}



############ FUN_ 1804d3670 size=839 ############

void FUN_1804d3670(longlong *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  longlong lVar12;
  longlong lVar13;
  longlong lVar14;
  int iVar15;
  uint *puVar16;
  longlong lVar17;
  longlong lVar18;
  
  lVar17 = *param_1;
  lVar3 = *param_2;
  lVar18 = lVar3;
  iVar15 = FUN_18048cbc0(lVar3,lVar17,param_3,param_4,lVar17,lVar3);
  if (iVar15 < 0) {
    *param_2 = (longlong)&DAT_1821dbf98;
    lVar4 = param_2[1];
    param_2[1] = (longlong)&DAT_1821dbf98;
    lVar5 = *param_2;
    lVar7 = param_2[2];
    lVar13 = param_2[3];
    lVar12 = param_2[4];
    lVar6 = param_2[5];
    uVar2 = *(undefined4 *)((longlong)param_2 + 0x24);
    *param_2 = *param_1;
    *param_1 = lVar5;
    lVar5 = param_2[1];
    param_2[1] = param_1[1];
    param_1[1] = lVar5;
    uVar8 = *(undefined4 *)((longlong)param_1 + 0x14);
    lVar5 = param_1[3];
    uVar9 = *(undefined4 *)((longlong)param_1 + 0x1c);
    *(int *)(param_2 + 2) = (int)param_1[2];
    *(undefined4 *)((longlong)param_2 + 0x14) = uVar8;
    *(int *)(param_2 + 3) = (int)lVar5;
    *(undefined4 *)((longlong)param_2 + 0x1c) = uVar9;
    *(char *)(param_2 + 4) = (char)param_1[4];
    *(undefined4 *)((longlong)param_2 + 0x24) = *(undefined4 *)((longlong)param_1 + 0x24);
    param_2[5] = param_1[5];
    lVar5 = *param_1;
    *param_1 = lVar3;
    lVar3 = param_1[1];
    param_1[1] = lVar4;
    param_1[5] = lVar6;
    param_1[2] = lVar7;
    param_1[3] = lVar13;
    puVar16 = (uint *)(lVar3 + -0x10);
    *(char *)(param_1 + 4) = (char)lVar12;
    *(undefined4 *)((longlong)param_1 + 0x24) = uVar2;
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    puVar16 = (uint *)(lVar5 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
  }
  lVar3 = *param_3;
  iVar15 = FUN_18048cbc0(lVar3);
  if (iVar15 < 0) {
    *param_3 = (longlong)&DAT_1821dbf98;
    lVar4 = param_3[1];
    param_3[1] = (longlong)&DAT_1821dbf98;
    lVar5 = *param_3;
    lVar13 = param_3[2];
    uVar8 = *(undefined4 *)((longlong)param_3 + 0x14);
    lVar12 = param_3[3];
    uVar9 = *(undefined4 *)((longlong)param_3 + 0x1c);
    lVar14 = param_3[4];
    lVar6 = param_3[5];
    uVar2 = *(undefined4 *)((longlong)param_3 + 0x24);
    *param_3 = *param_2;
    *param_2 = lVar5;
    lVar5 = param_2[1];
    lVar7 = param_3[1];
    param_3[1] = lVar5;
    param_2[1] = lVar7;
    uVar10 = *(undefined4 *)((longlong)param_2 + 0x14);
    lVar7 = param_2[3];
    uVar11 = *(undefined4 *)((longlong)param_2 + 0x1c);
    *(int *)(param_3 + 2) = (int)param_2[2];
    *(undefined4 *)((longlong)param_3 + 0x14) = uVar10;
    *(int *)(param_3 + 3) = (int)lVar7;
    *(undefined4 *)((longlong)param_3 + 0x1c) = uVar11;
    *(char *)(param_3 + 4) = (char)param_2[4];
    *(undefined4 *)((longlong)param_3 + 0x24) = *(undefined4 *)((longlong)param_2 + 0x24);
    param_3[5] = param_2[5];
    lVar7 = *param_2;
    *param_2 = lVar3;
    lVar3 = param_2[1];
    param_2[1] = lVar4;
    param_2[5] = lVar6;
    *(int *)(param_2 + 2) = (int)lVar13;
    *(undefined4 *)((longlong)param_2 + 0x14) = uVar8;
    *(int *)(param_2 + 3) = (int)lVar12;
    *(undefined4 *)((longlong)param_2 + 0x1c) = uVar9;
    puVar16 = (uint *)(lVar3 + -0x10);
    *(char *)(param_2 + 4) = (char)lVar14;
    *(undefined4 *)((longlong)param_2 + 0x24) = uVar2;
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    puVar16 = (uint *)(lVar7 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    lVar3 = *param_2;
    iVar15 = FUN_18048cbc0(lVar3,*param_1,lVar5,uVar2,lVar17,lVar18);
    if (iVar15 < 0) {
      *param_2 = (longlong)&DAT_1821dbf98;
      lVar17 = param_2[1];
      param_2[1] = (longlong)&DAT_1821dbf98;
      lVar18 = *param_2;
      lVar5 = param_2[2];
      lVar6 = param_2[3];
      lVar7 = param_2[4];
      lVar4 = param_2[5];
      uVar2 = *(undefined4 *)((longlong)param_2 + 0x24);
      *param_2 = *param_1;
      *param_1 = lVar18;
      lVar18 = param_2[1];
      param_2[1] = param_1[1];
      param_1[1] = lVar18;
      lVar18 = param_1[3];
      param_2[2] = param_1[2];
      param_2[3] = lVar18;
      *(char *)(param_2 + 4) = (char)param_1[4];
      *(undefined4 *)((longlong)param_2 + 0x24) = *(undefined4 *)((longlong)param_1 + 0x24);
      param_2[5] = param_1[5];
      lVar18 = *param_1;
      *param_1 = lVar3;
      lVar3 = param_1[1];
      param_1[1] = lVar17;
      param_1[5] = lVar4;
      param_1[2] = lVar5;
      param_1[3] = lVar6;
      puVar16 = (uint *)(lVar3 + -0x10);
      *(char *)(param_1 + 4) = (char)lVar7;
      *(undefined4 *)((longlong)param_1 + 0x24) = uVar2;
      if ((*puVar16 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar16;
        *puVar16 = *puVar16 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar16);
        }
      }
      puVar16 = (uint *)(lVar18 + -0x10);
      if ((*puVar16 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar16;
        *puVar16 = *puVar16 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar16);
        }
      }
    }
  }
  return;
}



############ FUN_ 1804d7a90 size=1058 ############

ulonglong FUN_1804d7a90(ulonglong *param_1)

{
  bool bVar1;
  longlong lVar2;
  int iVar3;
  uint uVar4;
  undefined1 **ppuVar5;
  ulonglong uVar6;
  uint *puVar7;
  uint uVar8;
  uint uVar9;
  undefined1 *local_268;
  undefined1 *local_260;
  undefined1 *local_258;
  undefined1 *local_250;
  undefined1 *local_248;
  undefined1 *local_240;
  undefined1 *local_238;
  undefined8 local_230;
  undefined8 uStack_228;
  undefined4 local_220;
  undefined1 local_21c;
  undefined8 local_218;
  undefined1 local_210;
  undefined1 *local_208;
  undefined1 *local_200;
  undefined1 *local_1f8;
  undefined1 *local_1f0;
  undefined1 *local_1e8;
  undefined1 *local_1e0;
  undefined1 *local_1d8;
  undefined8 local_1d0;
  undefined8 uStack_1c8;
  undefined4 local_1c0;
  undefined1 local_1bc;
  undefined8 local_1b8;
  undefined1 local_1b0;
  longlong local_1a8;
  longlong local_1a0;
  longlong local_198;
  longlong local_190;
  longlong local_188;
  longlong local_180;
  longlong local_178;
  int local_160;
  longlong local_148;
  longlong local_140;
  longlong local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118;
  int local_100;
  undefined1 local_e8 [96];
  undefined1 local_88 [96];
  
  uVar6 = *param_1;
  uVar8 = 0;
  uVar9 = uVar8;
  if (0 < *(int *)(uVar6 + 0xc)) {
    do {
      if (uVar8 < *(uint *)((longlong)param_1[1] + 0xc)) {
        uVar9 = uVar9 | 1;
        FUN_1804d7090(local_e8,(longlong)(int)uVar8 * 0x60 + *(longlong *)param_1[1]);
      }
      else {
        memset(&local_268,0,0x60);
        local_268 = &DAT_1821dbf98;
        local_230 = 0;
        uStack_228 = 0;
        uVar9 = uVar9 | 2;
        local_260 = &DAT_1821dbf98;
        local_258 = &DAT_1821dbf98;
        local_250 = &DAT_1821dbf98;
        local_248 = &DAT_1821dbf98;
        local_240 = &DAT_1821dbf98;
        local_238 = &DAT_1821dbf98;
        local_220 = 0;
        local_21c = 0;
        local_218 = 0;
        local_210 = 0;
      }
      FUN_1804d7090(&local_1a8);
      if ((uVar9 & 2) != 0) {
        uVar9 = uVar9 & 0xfffffffd;
        FUN_1804d7190(&local_268);
      }
      if ((uVar9 & 1) != 0) {
        uVar9 = uVar9 & 0xfffffffe;
        FUN_1804d7190(local_e8);
      }
      if (uVar8 < *(uint *)((longlong)*param_1 + 0xc)) {
        uVar9 = uVar9 | 4;
        ppuVar5 = (undefined1 **)
                  FUN_1804d7090(local_88,(longlong)(int)uVar8 * 0x60 + *(longlong *)*param_1);
      }
      else {
        memset(&local_208,0,0x60);
        local_208 = &DAT_1821dbf98;
        local_1d0 = 0;
        uStack_1c8 = 0;
        uVar9 = uVar9 | 8;
        local_200 = &DAT_1821dbf98;
        local_1f8 = &DAT_1821dbf98;
        ppuVar5 = &local_208;
        local_1f0 = &DAT_1821dbf98;
        local_1e8 = &DAT_1821dbf98;
        local_1e0 = &DAT_1821dbf98;
        local_1d8 = &DAT_1821dbf98;
        local_1c0 = 0;
        local_1bc = 0;
        local_1b8 = 0;
        local_1b0 = 0;
      }
      FUN_1804d7090(&local_148,ppuVar5);
      if ((uVar9 & 8) != 0) {
        uVar9 = uVar9 & 0xfffffff7;
        FUN_1804d7190(&local_208);
      }
      if ((uVar9 & 4) != 0) {
        uVar9 = uVar9 & 0xfffffffb;
        FUN_1804d7190(local_88);
      }
      lVar2 = local_118;
      if (((local_118 == local_178) || (iVar3 = FUN_18048cbc0(local_118), iVar3 == 0)) &&
         (local_100 == local_160)) {
        bVar1 = true;
      }
      else {
        bVar1 = false;
      }
      puVar7 = (uint *)(lVar2 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_120 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_128 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_130 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_138 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_140 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_148 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_178 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_180 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_188 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_190 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_198 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_1a0 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_1a8 + -0x10);
      uVar4 = *puVar7;
      if ((uVar4 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        uVar4 = uVar4 - 1;
        if (uVar4 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      if (!bVar1) {
        return CONCAT71((uint7)(uint3)(uVar4 >> 8),1);
      }
      uVar6 = *param_1;
      uVar8 = uVar8 + 1;
    } while ((int)uVar8 < *(int *)(uVar6 + 0xc));
  }
  return uVar6 & 0xffffffffffffff00;
}



############ FUN_ 181243170 size=243 ############

void FUN_181243170(longlong *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *_Memory;
  longlong local_res10 [2];
  LPCRITICAL_SECTION local_res20;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (*(char *)*param_2 == '\0') {
    return;
  }
  (**(code **)(*(longlong *)*param_3 + 0x20))
            ((longlong *)*param_3,local_res10,param_3 + 1,param_4,0xfffffffffffffffe);
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 7);
  local_res20 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  iVar2 = FUN_1812498b0(param_1 + 1,*param_2,*(undefined1 *)((longlong)param_1 + 100),0,uVar4,
                        *param_2);
  if (-1 < iVar2) {
    plVar3 = (longlong *)FUN_181249970(param_1 + 3,iVar2);
    if (*plVar3 == local_res10[0]) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_18048cbc0(*plVar3);
    }
    if (iVar2 == 0) goto LAB_181243225;
  }
  FUN_18122c880(param_1 + 1,param_2,local_res10);
  (**(code **)(*param_1 + 8))(param_1);
LAB_181243225:
  LeaveCriticalSection(lpCriticalSection);
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1812ba430 size=208 ############

ulonglong FUN_1812ba430(longlong param_1,longlong *param_2)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  ulonglong uVar5;
  int iVar6;
  undefined8 *puVar7;
  longlong lVar8;
  longlong local_res10;
  longlong local_res18;
  undefined8 local_res20;
  
  iVar3 = *(int *)(param_1 + 0x54);
  lVar4 = *param_2;
  iVar6 = 0;
  local_res18 = lVar4;
  if (0 < iVar3) {
    puVar7 = *(undefined8 **)(param_1 + 0x48);
    lVar8 = 0;
    do {
      local_res20 = *puVar7;
      uVar5 = FUN_18048cbc0(lVar4);
      if ((int)uVar5 == 0) {
        if (-1 < iVar6) {
          return uVar5;
        }
        break;
      }
      iVar6 = iVar6 + 1;
      lVar8 = lVar8 + 1;
      puVar7 = puVar7 + 1;
    } while (lVar8 < iVar3);
  }
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  local_res10 = lVar4;
  FUN_18122dc00(param_1 + 0x48,&local_res10);
  uVar5 = (ulonglong)*(byte *)(param_1 + 0x30);
  if (*(byte *)(param_1 + 0x30) != 0) {
    uVar5 = 0;
    puVar1 = (uint *)(*(longlong *)(param_1 + 0x10) + 0x18);
    LOCK();
    uVar2 = *puVar1;
    if (uVar2 == 0) {
      *puVar1 = 1;
    }
    else {
      uVar5 = (ulonglong)uVar2;
    }
    UNLOCK();
    if ((uVar2 == 0) &&
       (uVar5 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), (char)uVar5 == '\0')) {
      uVar5 = *(ulonglong *)(param_1 + 0x10);
      LOCK();
      *(undefined4 *)(uVar5 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar5;
}



############ FUN_ 181347520 size=274 ############

void FUN_181347520(longlong param_1,undefined8 param_2)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint *puVar4;
  undefined8 *puVar5;
  undefined8 *local_res8;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1812490c0(param_2,&local_res8,0,0x800,0xfffffffffffffffe);
  puVar5 = local_res8;
  if (*(undefined8 **)(param_1 + 0xc0) == local_res8) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0xc0),local_res8);
  }
  if (iVar3 != 0) {
    if ((*(uint *)(puVar5 + -2) & 0x30000000) == 0) {
      LOCK();
      *(int *)(puVar5 + -2) = *(int *)(puVar5 + -2) + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *(longlong *)(param_1 + 0xc0);
    *(longlong *)(param_1 + 0xc0) = (longlong)local_res8;
    UNLOCK();
    puVar4 = (uint *)(lVar2 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_1812d3dc0(param_1,1);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    local_18 = 0;
    uStack_14 = 0;
    FUN_181342870(param_1,&local_18,1);
    puVar5 = local_res8;
  }
  puVar4 = (uint *)(puVar5 + -2);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 1812413c0 size=411 ############

bool FUN_1812413c0(longlong *param_1,longlong *param_2)

{
  char *pcVar1;
  LPCWSTR pWVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  DWORD DVar6;
  int iVar7;
  BOOL BVar8;
  undefined8 *puVar9;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  undefined1 local_res18 [8];
  
  pcVar1 = (char *)*param_2;
  if (pcVar1 == (char *)*param_1) {
    iVar7 = 0;
  }
  else {
    iVar7 = FUN_18048cbc0(pcVar1,*param_1);
  }
  if (iVar7 == 0) {
    return true;
  }
  bVar3 = true;
  if (*pcVar1 == '\0') {
LAB_18124142f:
    bVar4 = false;
  }
  else {
    puVar9 = (undefined8 *)FUN_18049a930(local_res8,param_2);
    DVar6 = GetFileAttributesW((LPCWSTR)*puVar9);
    if (DVar6 == 0xffffffff) goto LAB_18124142f;
    bVar4 = true;
  }
  if (bVar4) {
    puVar9 = (undefined8 *)FUN_18049a930(local_res8,param_1);
    pWVar2 = (LPCWSTR)*puVar9;
    puVar9 = (undefined8 *)FUN_18049a930(local_res10,param_2);
    BVar8 = ReplaceFileW((LPCWSTR)*puVar9,pWVar2,(LPCWSTR)0x0,6,(LPVOID)0x0,(LPVOID)0x0);
    if (BVar8 == 0) {
      return false;
    }
    FUN_181244b10(param_1);
    return true;
  }
  pcVar1 = (char *)*param_1;
  if ((char *)*param_2 == pcVar1) {
    iVar7 = 0;
  }
  else {
    iVar7 = FUN_18048cbc0(*param_2,pcVar1);
  }
  if (iVar7 == 0) {
    return true;
  }
  if (*pcVar1 != '\0') {
    puVar9 = (undefined8 *)FUN_18049a930(local_res8,param_1);
    DVar6 = GetFileAttributesW((LPCWSTR)*puVar9);
    if (DVar6 != 0xffffffff) goto LAB_181241486;
  }
  bVar3 = false;
LAB_181241486:
  if (!bVar3) {
    return false;
  }
  if (((*param_1 != *param_2) && (iVar7 = FUN_18049bb30(*param_1), iVar7 != 0)) &&
     (cVar5 = FUN_181244b10(param_2), cVar5 == '\0')) {
    return false;
  }
  puVar9 = (undefined8 *)FUN_18049a930(local_res10,param_2);
  pWVar2 = (LPCWSTR)*puVar9;
  puVar9 = (undefined8 *)FUN_18049a930(local_res18,param_1);
  BVar8 = MoveFileW((LPCWSTR)*puVar9,pWVar2);
  return BVar8 != 0;
}



############ FUN_ 18122d7a0 size=520 ############

void FUN_18122d7a0(longlong *param_1,undefined8 param_2,char param_3)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  longlong *plVar4;
  uint *puVar5;
  uint uVar6;
  uint uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  longlong lVar10;
  
  if (param_3 == '\0') {
    uVar7 = *(int *)((longlong)param_1 + 0xc) - 1;
    if (-1 < (int)uVar7) {
      lVar10 = (longlong)(int)uVar7 * 8;
      do {
        lVar1 = *param_1;
        iVar2 = FUN_18048cbc0(param_2);
        if ((iVar2 == 0) && (uVar7 < *(uint *)((longlong)param_1 + 0xc))) {
          plVar4 = (longlong *)(lVar1 + lVar10);
          uVar6 = (*(uint *)((longlong)param_1 + 0xc) - uVar7) - 1;
          if (0 < (int)uVar6) {
            uVar9 = (ulonglong)uVar6;
            plVar8 = plVar4;
            do {
              plVar8 = plVar8 + 1;
              lVar1 = *plVar4;
              *plVar4 = *plVar8;
              plVar4 = plVar4 + 1;
              *plVar8 = lVar1;
              uVar9 = uVar9 - 1;
            } while (uVar9 != 0);
          }
          puVar5 = (uint *)(*plVar4 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar6 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
          iVar2 = *(int *)((longlong)param_1 + 0xc);
          iVar3 = 0;
          if (0 < iVar2 * 2) {
            iVar3 = iVar2 * 2;
          }
          if (iVar3 < (int)param_1[1]) {
            if (iVar2 < 8) {
              iVar2 = 8;
            }
            if (iVar2 < (int)param_1[1]) {
              FUN_18048a300(param_1);
            }
          }
        }
        lVar10 = lVar10 + -8;
        uVar7 = uVar7 - 1;
      } while (-1 < (int)uVar7);
    }
  }
  else {
    uVar7 = *(int *)((longlong)param_1 + 0xc) - 1;
    if (-1 < (int)uVar7) {
      lVar10 = (longlong)(int)uVar7 << 3;
      do {
        iVar2 = FUN_18049bb30(*(undefined8 *)(lVar10 + *param_1),param_2);
        if ((iVar2 == 0) && (uVar7 < *(uint *)((longlong)param_1 + 0xc))) {
          plVar4 = (longlong *)(*param_1 + lVar10);
          uVar6 = (*(uint *)((longlong)param_1 + 0xc) - uVar7) - 1;
          if (0 < (int)uVar6) {
            uVar9 = (ulonglong)uVar6;
            plVar8 = plVar4;
            do {
              plVar8 = plVar8 + 1;
              lVar1 = *plVar4;
              *plVar4 = *plVar8;
              plVar4 = plVar4 + 1;
              *plVar8 = lVar1;
              uVar9 = uVar9 - 1;
            } while (uVar9 != 0);
          }
          puVar5 = (uint *)(*plVar4 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar6 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
          iVar2 = *(int *)((longlong)param_1 + 0xc);
          iVar3 = 0;
          if (0 < iVar2 * 2) {
            iVar3 = iVar2 * 2;
          }
          if (iVar3 < (int)param_1[1]) {
            if (iVar2 < 8) {
              iVar2 = 8;
            }
            if (iVar2 < (int)param_1[1]) {
              FUN_18048a300(param_1);
            }
          }
        }
        lVar10 = lVar10 + -8;
        uVar7 = uVar7 - 1;
      } while (-1 < (int)uVar7);
      return;
    }
  }
  return;
}



############ FUN_ 1812bb1d0 size=254 ############

undefined8 FUN_1812bb1d0(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong lVar7;
  bool bVar8;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  lVar7 = *(longlong *)(param_1 + 0x38);
  lVar6 = (longlong)*(int *)(param_1 + 0x44) * 0x60 + lVar7;
  if (lVar7 != lVar6) {
    lVar2 = *(longlong *)(param_2 + 0x30);
    plVar5 = (longlong *)(lVar7 + 0x30);
    do {
      if (((*plVar5 == lVar2) || (iVar4 = FUN_18048cbc0(*plVar5,lVar2), iVar4 == 0)) &&
         ((int)plVar5[3] == *(int *)(param_2 + 0x48))) {
        FUN_1804d7800(lVar7,param_2);
        LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
        return 0;
      }
      lVar7 = lVar7 + 0x60;
      plVar5 = plVar5 + 0xc;
    } while (lVar7 != lVar6);
  }
  FUN_1804dc8f0(param_1 + 0x38);
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  if (*(char *)(param_1 + 0x30) != '\0') {
    piVar1 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
    LOCK();
    bVar8 = *piVar1 == 0;
    if (bVar8) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar8) && (cVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar3 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
      UNLOCK();
    }
  }
  return 1;
}



############ FUN_ 1804e0ba0 size=1596 ############

longlong * FUN_1804e0ba0(longlong *param_1,longlong *param_2,undefined8 param_3)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong lVar8;
  longlong lVar9;
  uint *puVar10;
  longlong *plVar11;
  int iVar12;
  longlong *plVar13;
  longlong local_res8;
  longlong *local_res10;
  undefined8 local_res18;
  longlong local_res20;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  undefined4 local_b0;
  undefined1 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined1 local_a0;
  longlong local_98;
  longlong local_90 [3];
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  
  local_90[1] = 0xfffffffffffffffe;
  if ((param_1 != param_2) &&
     (plVar13 = param_1 + 0xc, local_res10 = param_2, local_res18 = param_3, plVar13 != param_2)) {
    do {
      local_f8 = *plVar13;
      if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
        UNLOCK();
      }
      local_f0 = plVar13[1];
      if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_f0 + -0x10) = *(int *)(local_f0 + -0x10) + 1;
        UNLOCK();
      }
      local_e8 = plVar13[2];
      if ((*(uint *)(local_e8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_e8 + -0x10) = *(int *)(local_e8 + -0x10) + 1;
        UNLOCK();
      }
      local_e0 = plVar13[3];
      if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
        UNLOCK();
      }
      local_d8 = plVar13[4];
      if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
        UNLOCK();
      }
      local_d0 = plVar13[5];
      if ((*(uint *)(local_d0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
        UNLOCK();
      }
      local_c8 = plVar13[6];
      if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
        UNLOCK();
      }
      local_c0 = plVar13[7];
      lVar9 = plVar13[8];
      local_b0 = (undefined4)plVar13[9];
      local_ac = *(undefined1 *)((longlong)plVar13 + 0x4c);
      local_a8 = (undefined4)plVar13[10];
      local_a4 = *(undefined4 *)((longlong)plVar13 + 0x54);
      local_a0 = (undefined1)plVar13[0xb];
      iVar12 = (int)param_3;
      local_b8 = lVar9;
      if (iVar12 == 2) {
        local_78 = param_1[3];
        lVar8 = local_e0;
LAB_1804e0e37:
        iVar3 = FUN_181232ee0(lVar8);
LAB_1804e0e3f:
        if (iVar3 == 0) {
LAB_1804e0e44:
          local_70 = *param_1;
          iVar3 = FUN_181232ee0(local_f8);
        }
      }
      else {
        if (iVar12 == 3) {
          local_90[2] = param_1[4];
          lVar8 = local_d8;
          goto LAB_1804e0e37;
        }
        if (iVar12 == 4) {
          if (local_e8 == param_1[2]) {
            iVar3 = 0;
          }
          else {
            iVar3 = FUN_18048cbc0(local_e8,param_1[2]);
          }
          goto LAB_1804e0e3f;
        }
        if (iVar12 == 5) {
          plVar4 = (longlong *)FUN_1804d79e0(&local_res20,param_1 + 6);
          plVar5 = (longlong *)FUN_1804d79e0(&local_res8,&local_c8);
          if (*plVar5 == *plVar4) {
            iVar3 = 0;
          }
          else {
            iVar3 = FUN_18048cbc0(*plVar5,*plVar4);
          }
          puVar10 = (uint *)(local_res8 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          puVar10 = (uint *)(local_res20 + -0x10);
          lVar9 = local_b8;
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          goto LAB_1804e0e3f;
        }
        if (iVar12 != 6) goto LAB_1804e0e44;
        if (lVar9 < param_1[8]) {
          iVar3 = -1;
        }
        else {
          if (lVar9 <= param_1[8]) goto LAB_1804e0e44;
          iVar3 = 1;
        }
      }
      plVar5 = plVar13 + 2;
      plVar4 = plVar13;
      if (-1 < iVar3 * local_res18._4_4_) {
        do {
          plVar11 = plVar5 + -0xc;
          if (iVar12 == 2) {
            local_60 = plVar5[-0xb];
            lVar9 = local_e0;
LAB_1804e0fa6:
            iVar3 = FUN_181232ee0(lVar9);
LAB_1804e0fad:
            if (iVar3 == 0) {
LAB_1804e0fb1:
              local_58 = plVar5[-0xe];
              iVar3 = FUN_181232ee0(local_f8);
            }
          }
          else {
            if (iVar12 == 3) {
              local_68 = plVar5[-10];
              lVar9 = local_d8;
              goto LAB_1804e0fa6;
            }
            if (iVar12 == 4) {
              if (local_e8 == *plVar11) {
                iVar3 = 0;
              }
              else {
                iVar3 = FUN_18048cbc0(local_e8,*plVar11);
              }
              goto LAB_1804e0fad;
            }
            if (iVar12 == 5) {
              plVar6 = (longlong *)FUN_1804d79e0(local_90,plVar5 + -8);
              plVar7 = (longlong *)FUN_1804d79e0(&local_98,&local_c8);
              if (*plVar7 == *plVar6) {
                iVar3 = 0;
              }
              else {
                iVar3 = FUN_18048cbc0(*plVar7,*plVar6);
              }
              puVar10 = (uint *)(local_98 + -0x10);
              if ((*puVar10 & 0x30000000) == 0) {
                LOCK();
                uVar2 = *puVar10;
                *puVar10 = *puVar10 - 1;
                UNLOCK();
                if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar10);
                }
              }
              puVar10 = (uint *)(local_90[0] + -0x10);
              if ((*puVar10 & 0x30000000) == 0) {
                LOCK();
                uVar2 = *puVar10;
                *puVar10 = *puVar10 - 1;
                UNLOCK();
                if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar10);
                }
              }
              goto LAB_1804e0fad;
            }
            if (iVar12 != 6) goto LAB_1804e0fb1;
            if (lVar9 < plVar5[-6]) {
              iVar3 = -1;
            }
            else {
              if (lVar9 <= plVar5[-6]) goto LAB_1804e0fb1;
              iVar3 = 1;
            }
          }
          if (-1 < iVar3 * local_res18._4_4_) goto LAB_1804e10a4;
          if ((*(uint *)(plVar5[-0xe] + -0x10) & 0x30000000) == 0) {
            LOCK();
            piVar1 = (int *)(plVar5[-0xe] + -0x10);
            *piVar1 = *piVar1 + 1;
            UNLOCK();
          }
          LOCK();
          lVar9 = *plVar4;
          *plVar4 = plVar5[-0xe];
          UNLOCK();
          puVar10 = (uint *)(lVar9 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          FUN_181249460(plVar4 + 1,plVar5 + -0xd);
          FUN_181249460(plVar4 + 2,plVar11);
          FUN_181249460(plVar4 + 3,plVar5 + -0xb);
          FUN_181249460(plVar4 + 4,plVar5 + -10);
          FUN_181249460(plVar4 + 5,plVar5 + -9);
          FUN_181249460(plVar4 + 6,plVar5 + -8);
          plVar4[7] = plVar5[-7];
          plVar4[8] = plVar5[-6];
          *(int *)(plVar4 + 9) = (int)plVar5[-5];
          *(undefined1 *)((longlong)plVar4 + 0x4c) = *(undefined1 *)((longlong)plVar5 + -0x24);
          *(int *)(plVar4 + 10) = (int)plVar5[-4];
          *(undefined4 *)((longlong)plVar4 + 0x54) = *(undefined4 *)((longlong)plVar5 + -0x1c);
          *(char *)(plVar4 + 0xb) = (char)plVar5[-3];
          plVar4 = plVar5 + -0xe;
          lVar9 = local_b8;
          plVar5 = plVar11;
        } while( true );
      }
      FUN_1804e2f20(param_1,plVar13,plVar13 + 0xc);
      plVar4 = param_1;
LAB_1804e10a4:
      FUN_1804d7800(plVar4,&local_f8);
      puVar10 = (uint *)(local_c8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_d0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_d8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_e0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_e8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_f0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_f8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      plVar13 = plVar13 + 0xc;
      param_2 = local_res10;
    } while (plVar13 != local_res10);
  }
  return param_2;
}



############ FUN_ 1804e1ce0 size=1329 ############

void FUN_1804e1ce0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,longlong param_4,
                  longlong param_5,undefined8 param_6,longlong param_7,undefined8 param_8)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  uint *puVar9;
  undefined1 *puVar10;
  undefined8 *puVar11;
  longlong lVar12;
  longlong lVar13;
  longlong lVar14;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_178;
  longlong local_170 [3];
  undefined8 local_158;
  longlong local_150;
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined8 local_130;
  longlong local_128;
  undefined8 local_120;
  longlong local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined1 local_f8 [96];
  undefined1 local_98 [96];
  
  if (param_2 == param_3) {
    return;
  }
  local_170[1] = 0xfffffffffffffffe;
  if (param_1 == param_2) {
    return;
  }
  plVar5 = param_1 + 2;
  do {
    local_res20 = param_4;
    if ((int)param_8 == 2) {
      local_150 = plVar5[1];
      local_148 = param_2[3];
LAB_1804e1e7b:
      iVar2 = FUN_181232ee0();
LAB_1804e1e82:
      if (iVar2 == 0) {
LAB_1804e1e86:
        local_140 = *param_1;
        local_138 = *param_2;
        iVar2 = FUN_181232ee0();
      }
    }
    else {
      if ((int)param_8 == 3) {
        local_170[2] = plVar5[2];
        local_158 = param_2[4];
        goto LAB_1804e1e7b;
      }
      if ((int)param_8 == 4) {
        if (param_2[2] == *plVar5) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(param_2[2],*plVar5);
        }
        goto LAB_1804e1e82;
      }
      if ((int)param_8 == 5) {
        plVar3 = (longlong *)FUN_1804d79e0(&local_res18,plVar5 + 4);
        plVar4 = (longlong *)FUN_1804d79e0(&local_res10,param_2 + 6);
        if (*plVar4 == *plVar3) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
        }
        puVar9 = (uint *)(local_res10 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        puVar9 = (uint *)(local_res18 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        goto LAB_1804e1e82;
      }
      if ((int)param_8 != 6) goto LAB_1804e1e86;
      if ((longlong)param_2[8] < plVar5[6]) {
        iVar2 = -1;
      }
      else {
        if ((longlong)param_2[8] <= plVar5[6]) goto LAB_1804e1e86;
        iVar2 = 1;
      }
    }
    if (iVar2 * param_8._4_4_ < 0) {
      plVar5 = param_3 + 2;
      break;
    }
    param_1 = param_1 + 0xc;
    plVar5 = plVar5 + 0xc;
    param_4 = local_res20 + -1;
    if (param_1 == param_2) {
      return;
    }
  } while( true );
  do {
    lVar12 = param_5;
    puVar11 = param_3;
    param_3 = puVar11 + -0xc;
    plVar3 = plVar5 + -0xc;
    if (param_2 == param_3) {
      FUN_1804d7090(local_98,param_2);
      FUN_1804e2f20(param_1);
      FUN_1804d7800(param_1,local_98);
      puVar10 = local_98;
      goto LAB_1804e21f7;
    }
    if ((int)param_8 == 2) {
      local_120 = param_2[-9];
      local_118 = plVar5[-0xb];
LAB_1804e200b:
      iVar2 = FUN_181232ee0();
LAB_1804e2012:
      if (iVar2 == 0) {
LAB_1804e2016:
        local_110 = param_2[-0xc];
        local_108 = *param_3;
        iVar2 = FUN_181232ee0();
      }
    }
    else {
      if ((int)param_8 == 3) {
        local_130 = param_2[-8];
        local_128 = plVar5[-10];
        goto LAB_1804e200b;
      }
      if ((int)param_8 == 4) {
        if (*plVar3 == param_2[-10]) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar3,param_2[-10]);
        }
        goto LAB_1804e2012;
      }
      if ((int)param_8 == 5) {
        plVar4 = (longlong *)FUN_1804d79e0(local_170,param_2 + -6);
        plVar5 = (longlong *)FUN_1804d79e0(&local_178,plVar5 + -8);
        if (*plVar5 == *plVar4) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar5,*plVar4);
        }
        puVar9 = (uint *)(local_178 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        puVar9 = (uint *)(local_170[0] + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        goto LAB_1804e2012;
      }
      if ((int)param_8 != 6) goto LAB_1804e2016;
      if (plVar5[-6] < (longlong)param_2[-4]) {
        iVar2 = -1;
      }
      else {
        if (plVar5[-6] <= (longlong)param_2[-4]) goto LAB_1804e2016;
        iVar2 = 1;
      }
    }
    param_5 = lVar12 + -1;
    plVar5 = plVar3;
  } while (-1 < iVar2 * param_8._4_4_);
  if (local_res20 == 1) {
    FUN_1804d7090(local_f8,param_1);
    uVar6 = FUN_1804e3e00(param_2,puVar11,param_1);
    FUN_1804d7800(uVar6,local_f8);
    puVar10 = local_f8;
LAB_1804e21f7:
    FUN_1804d7190(puVar10);
  }
  else if ((lVar12 < local_res20) || (param_7 < local_res20)) {
    if (param_7 < lVar12) {
      if (lVar12 < local_res20) {
        lVar14 = lVar12 >> 1;
        puVar7 = param_2 + lVar14 * 0xc;
        puVar8 = (undefined8 *)FUN_1804e4320(param_1,param_2,puVar7,param_8);
        lVar13 = ((longlong)puVar8 - (longlong)param_1) / 0x60;
      }
      else {
        lVar13 = local_res20 >> 1;
        puVar8 = param_1 + lVar13 * 0xc;
        puVar7 = (undefined8 *)FUN_1804e4020(param_2,puVar11,puVar8);
        lVar14 = ((longlong)puVar7 - (longlong)param_2) / 0x60;
      }
      FUN_1804e4230(param_1,param_2,puVar11,local_res20,lVar12,param_6,param_7,param_8,puVar8,puVar7
                    ,lVar13,lVar14);
    }
    else {
      FUN_1804e3a60(param_1,param_2,puVar11,param_6,param_8);
    }
  }
  else {
    FUN_1804e37a0(param_1,param_2,puVar11,param_6,param_8);
  }
  return;
}



############ FUN_ 1804e3300 size=655 ############

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

longlong FUN_1804e3300(longlong param_1,longlong param_2,longlong param_3,longlong param_4,
                      undefined8 param_5)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong lVar8;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_48;
  
  plVar6 = (longlong *)(param_2 + 0x10);
  plVar7 = (longlong *)(param_1 + 0x10);
  lVar8 = param_2;
  local_res18 = param_3;
  local_48 = param_4;
  do {
    if (((int)param_5 == 2) || ((int)param_5 == 3)) {
      iVar2 = FUN_181232ee0();
LAB_1804e34a4:
      param_3 = local_res18;
      if (iVar2 == 0) {
LAB_1804e34a8:
        iVar2 = FUN_181232ee0();
        param_3 = local_res18;
      }
    }
    else {
      if ((int)param_5 == 4) {
        if (*plVar6 == *plVar7) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar6,*plVar7);
        }
        goto LAB_1804e34a4;
      }
      if ((int)param_5 == 5) {
        plVar3 = (longlong *)FUN_1804d79e0(&local_res20,plVar7 + 4);
        plVar4 = (longlong *)FUN_1804d79e0(&local_res10,plVar6 + 4);
        if (*plVar4 == *plVar3) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
        }
        puVar5 = (uint *)(local_res10 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        puVar5 = (uint *)(local_res20 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        goto LAB_1804e34a4;
      }
      if ((int)param_5 != 6) goto LAB_1804e34a8;
      if (plVar6[6] < plVar7[6]) {
        iVar2 = -1;
      }
      else {
        if (plVar6[6] <= plVar7[6]) goto LAB_1804e34a8;
        iVar2 = 1;
      }
    }
    if (param_5._4_4_ * iVar2 < 0) {
      FUN_1804d7090(local_48,lVar8);
      local_48 = local_48 + 0x60;
      lVar8 = lVar8 + 0x60;
      plVar6 = plVar6 + 0xc;
      if (lVar8 == param_3) {
        for (; param_1 != param_2; param_1 = param_1 + 0x60) {
          FUN_1804d7090(local_48,param_1);
          local_48 = local_48 + 0x60;
        }
        return local_48;
      }
    }
    else {
      FUN_1804d7090(local_48,param_1);
      local_48 = local_48 + 0x60;
      param_1 = param_1 + 0x60;
      plVar7 = plVar7 + 0xc;
      if (param_1 == param_2) {
        if (lVar8 != param_3) {
          do {
            FUN_1804d7090(local_48,lVar8);
            local_48 = local_48 + 0x60;
            lVar8 = lVar8 + 0x60;
          } while (lVar8 != param_3);
        }
        return local_48;
      }
    }
  } while( true );
}



############ FUN_ 1804e3590 size=520 ############

void FUN_1804e3590(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,longlong param_4,
                  undefined8 param_5)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  longlong *plVar9;
  undefined8 *puVar10;
  longlong *plVar11;
  longlong local_res10;
  undefined8 *local_res18;
  longlong local_78 [3];
  longlong local_60;
  longlong local_58;
  longlong local_50;
  undefined8 local_48;
  undefined8 local_40;
  
  local_78[1] = 0xfffffffffffffffe;
  plVar9 = param_2 + 2;
  plVar11 = param_1 + 2;
  puVar10 = param_2;
  local_res18 = param_3;
LAB_1804e35d1:
  do {
    puVar6 = puVar10;
    lVar8 = param_4;
    if ((int)param_5 == 2) {
      local_58 = plVar11[1];
      local_50 = plVar9[1];
LAB_1804e36f6:
      iVar2 = FUN_181232ee0();
LAB_1804e36fd:
      if (iVar2 == 0) {
LAB_1804e3701:
        local_48 = *param_1;
        local_40 = *puVar6;
        iVar2 = FUN_181232ee0();
      }
    }
    else {
      if ((int)param_5 == 3) {
        local_78[2] = plVar11[2];
        local_60 = plVar9[2];
        goto LAB_1804e36f6;
      }
      if ((int)param_5 == 4) {
        if (*plVar9 == *plVar11) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar9,*plVar11);
        }
        goto LAB_1804e36fd;
      }
      if ((int)param_5 == 5) {
        plVar3 = (longlong *)FUN_1804d79e0(local_78,plVar11 + 4);
        plVar4 = (longlong *)FUN_1804d79e0(&local_res10,plVar9 + 4);
        if (*plVar4 == *plVar3) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
        }
        puVar5 = (uint *)(local_res10 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        puVar5 = (uint *)(local_78[0] + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        goto LAB_1804e36fd;
      }
      if ((int)param_5 != 6) goto LAB_1804e3701;
      if (plVar9[6] < plVar11[6]) {
        iVar2 = -1;
      }
      else {
        if (plVar9[6] <= plVar11[6]) goto LAB_1804e3701;
        iVar2 = 1;
      }
    }
    if (-1 < param_5._4_4_ * iVar2) {
      FUN_1804d7800(lVar8,param_1);
      param_1 = param_1 + 0xc;
      plVar11 = plVar11 + 0xc;
      puVar7 = local_res18;
      param_4 = lVar8 + 0x60;
      puVar10 = puVar6;
      if (param_1 == param_2) goto LAB_1804e377c;
      goto LAB_1804e35d1;
    }
    FUN_1804d7800(lVar8,puVar6);
    puVar10 = puVar6 + 0xc;
    plVar9 = plVar9 + 0xc;
    puVar6 = param_1;
    puVar7 = param_2;
    param_4 = lVar8 + 0x60;
    if (puVar10 == local_res18) {
LAB_1804e377c:
      FUN_1804e3e00(puVar6,puVar7,lVar8 + 0x60);
      return;
    }
  } while( true );
}



############ FUN_ 1804e37a0 size=700 ############

void FUN_1804e37a0(longlong param_1,longlong param_2,longlong param_3,longlong param_4,
                  undefined8 param_5)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  undefined8 uVar5;
  uint *puVar6;
  longlong lVar7;
  longlong lVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  
  local_res18 = param_3;
  lVar8 = param_4;
  for (lVar7 = param_1; lVar7 != param_2; lVar7 = lVar7 + 0x60) {
    FUN_1804d7090(lVar8);
    lVar8 = lVar8 + 0x60;
  }
  FUN_1804d7800(param_1,param_2);
  param_1 = param_1 + 0x60;
  lVar7 = param_2 + 0x60;
  plVar9 = (longlong *)(param_2 + 0x70);
  plVar10 = (longlong *)(param_4 + 0x10);
  local_res8 = param_4;
LAB_1804e3820:
  do {
    if (((int)param_5 == 2) || ((int)param_5 == 3)) {
      iVar2 = FUN_181232ee0();
LAB_1804e396f:
      if (iVar2 == 0) {
LAB_1804e397b:
        iVar2 = FUN_181232ee0();
      }
    }
    else {
      if ((int)param_5 == 4) {
        if (*plVar9 == *plVar10) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar9,*plVar10);
        }
        goto LAB_1804e396f;
      }
      if ((int)param_5 == 5) {
        plVar3 = (longlong *)FUN_1804d79e0(&local_res20,plVar10 + 4);
        plVar4 = (longlong *)FUN_1804d79e0(&local_res10,plVar9 + 4);
        if (*plVar4 == *plVar3) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
        }
        puVar6 = (uint *)(local_res10 + -0x10);
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
        puVar6 = (uint *)(local_res20 + -0x10);
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
        goto LAB_1804e396f;
      }
      if ((int)param_5 != 6) goto LAB_1804e397b;
      if (plVar9[6] < plVar10[6]) {
        iVar2 = -1;
      }
      else {
        if (plVar9[6] <= plVar10[6]) goto LAB_1804e397b;
        iVar2 = 1;
      }
    }
    if (param_5._4_4_ * iVar2 < 0) {
      FUN_1804d7800(param_1,lVar7);
      param_1 = param_1 + 0x60;
      lVar7 = lVar7 + 0x60;
      plVar9 = plVar9 + 0xc;
      if (lVar7 == local_res18) {
        FUN_1804e3e00(local_res8,lVar8,param_1);
        goto joined_r0x0001804e3a26;
      }
      goto LAB_1804e3820;
    }
    FUN_1804d7800(param_1,local_res8);
    param_1 = param_1 + 0x60;
    local_res8 = local_res8 + 0x60;
    plVar10 = plVar10 + 0xc;
    if (local_res8 == lVar8 + -0x60) {
      uVar5 = FUN_1804e3e00(lVar7,local_res18,param_1);
      FUN_1804d7800(uVar5,lVar8 + -0x60);
joined_r0x0001804e3a26:
      for (; param_4 != lVar8; param_4 = param_4 + 0x60) {
        FUN_1804d7190(param_4);
      }
      return;
    }
  } while( true );
}



############ FUN_ 1804e3a60 size=742 ############

void FUN_1804e3a60(longlong param_1,longlong param_2,longlong param_3,longlong param_4,
                  undefined8 param_5)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong lVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong lVar10;
  longlong lVar11;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  
  lVar11 = param_4;
  for (lVar6 = param_2; lVar6 != param_3; lVar6 = lVar6 + 0x60) {
    FUN_1804d7090(lVar11);
    lVar11 = lVar11 + 0x60;
  }
  FUN_1804d7800(param_3 + -0x60,param_2 + -0x60);
  local_res10 = lVar11 + -0x60;
  lVar10 = param_2 + -0xc0;
  plVar9 = (longlong *)(lVar11 + -0x50);
  plVar8 = (longlong *)(param_2 + -0xb0);
  lVar6 = param_3 + -0x60;
LAB_1804e3ae2:
  do {
    lVar7 = lVar6;
    if (((int)param_5 == 2) || ((int)param_5 == 3)) {
      iVar2 = FUN_181232ee0();
LAB_1804e3c31:
      if (iVar2 == 0) {
LAB_1804e3c3d:
        iVar2 = FUN_181232ee0();
      }
    }
    else {
      if ((int)param_5 == 4) {
        if (*plVar9 == *plVar8) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar9,*plVar8);
        }
        goto LAB_1804e3c31;
      }
      if ((int)param_5 == 5) {
        plVar3 = (longlong *)FUN_1804d79e0(&local_res20,plVar8 + 4);
        plVar4 = (longlong *)FUN_1804d79e0(&local_res18,plVar9 + 4);
        if (*plVar4 == *plVar3) {
          iVar2 = 0;
        }
        else {
          iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
        }
        puVar5 = (uint *)(local_res18 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        puVar5 = (uint *)(local_res20 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
        goto LAB_1804e3c31;
      }
      if ((int)param_5 != 6) goto LAB_1804e3c3d;
      if (plVar9[6] < plVar8[6]) {
        iVar2 = -1;
      }
      else {
        if (plVar9[6] <= plVar8[6]) goto LAB_1804e3c3d;
        iVar2 = 1;
      }
    }
    lVar6 = lVar7 + -0x60;
    if (param_5._4_4_ * iVar2 < 0) {
      FUN_1804d7800(lVar6,lVar10);
      if (param_1 == lVar10) {
        FUN_1804d7800(lVar7 + -0xc0,local_res10);
        FUN_1804e2f20(param_4,local_res10,lVar7 + -0xc0);
        goto joined_r0x0001804e3cf9;
      }
      lVar10 = lVar10 + -0x60;
      plVar8 = plVar8 + -0xc;
      goto LAB_1804e3ae2;
    }
    FUN_1804d7800(lVar6,local_res10);
    local_res10 = local_res10 + -0x60;
    plVar9 = plVar9 + -0xc;
    if (param_4 == local_res10) {
      FUN_1804d7800(lVar7 + -0xc0,lVar10);
      FUN_1804e2f20(param_1,lVar10,lVar7 + -0xc0);
      FUN_1804d7800(param_1,param_4);
joined_r0x0001804e3cf9:
      for (; param_4 != lVar11; param_4 = param_4 + 0x60) {
        FUN_1804d7190(param_4);
      }
      return;
    }
  } while( true );
}



############ FUN_ 1804e4020 size=512 ############

longlong FUN_1804e4020(longlong param_1,longlong param_2,longlong param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  longlong local_res8;
  longlong local_res10;
  int iStackX_24;
  
  lVar6 = (param_2 - param_1) / 6 + (param_2 - param_1 >> 0x3f);
  lVar6 = (lVar6 >> 4) - (lVar6 >> 0x3f);
  if (0 < lVar6) {
    iStackX_24 = (int)((ulonglong)param_4 >> 0x20);
    do {
      lVar8 = lVar6 >> 1;
      lVar7 = lVar8 * 0x60 + param_1;
      iVar2 = (int)param_4;
      if ((iVar2 == 2) || (iVar2 == 3)) {
        iVar2 = FUN_181232ee0();
LAB_1804e41c6:
        if (iVar2 == 0) {
LAB_1804e41ca:
          iVar2 = FUN_181232ee0();
        }
      }
      else {
        if (iVar2 == 4) {
          if (*(longlong *)(lVar7 + 0x10) == *(longlong *)(param_3 + 0x10)) {
            iVar2 = 0;
          }
          else {
            iVar2 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x10),*(longlong *)(param_3 + 0x10));
          }
          goto LAB_1804e41c6;
        }
        if (iVar2 == 5) {
          plVar3 = (longlong *)FUN_1804d79e0(&local_res10,param_3 + 0x30);
          plVar4 = (longlong *)FUN_1804d79e0(&local_res8,lVar7 + 0x30);
          if (*plVar4 == *plVar3) {
            iVar2 = 0;
          }
          else {
            iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
          }
          puVar5 = (uint *)(local_res8 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          puVar5 = (uint *)(local_res10 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          goto LAB_1804e41c6;
        }
        if (iVar2 != 6) goto LAB_1804e41ca;
        if (*(longlong *)(lVar7 + 0x40) < *(longlong *)(param_3 + 0x40)) {
          iVar2 = -1;
        }
        else {
          if (*(longlong *)(lVar7 + 0x40) <= *(longlong *)(param_3 + 0x40)) goto LAB_1804e41ca;
          iVar2 = 1;
        }
      }
      if (iVar2 * iStackX_24 < 0) {
        param_1 = lVar7 + 0x60;
        lVar8 = lVar6 + (-1 - lVar8);
      }
      lVar6 = lVar8;
    } while (0 < lVar8);
  }
  return param_1;
}



############ FUN_ 1804e4320 size=512 ############

longlong FUN_1804e4320(longlong param_1,longlong param_2,longlong param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  longlong local_res8;
  longlong local_res10;
  int iStackX_24;
  
  lVar6 = (param_2 - param_1) / 6 + (param_2 - param_1 >> 0x3f);
  lVar6 = (lVar6 >> 4) - (lVar6 >> 0x3f);
  if (0 < lVar6) {
    iStackX_24 = (int)((ulonglong)param_4 >> 0x20);
    do {
      lVar8 = lVar6 >> 1;
      lVar7 = lVar8 * 0x60 + param_1;
      iVar2 = (int)param_4;
      if ((iVar2 == 2) || (iVar2 == 3)) {
        iVar2 = FUN_181232ee0();
LAB_1804e44c6:
        if (iVar2 == 0) {
LAB_1804e44ca:
          iVar2 = FUN_181232ee0();
        }
      }
      else {
        if (iVar2 == 4) {
          if (*(longlong *)(param_3 + 0x10) == *(longlong *)(lVar7 + 0x10)) {
            iVar2 = 0;
          }
          else {
            iVar2 = FUN_18048cbc0(*(undefined8 *)(param_3 + 0x10),*(longlong *)(lVar7 + 0x10));
          }
          goto LAB_1804e44c6;
        }
        if (iVar2 == 5) {
          plVar3 = (longlong *)FUN_1804d79e0(&local_res10,lVar7 + 0x30);
          plVar4 = (longlong *)FUN_1804d79e0(&local_res8,param_3 + 0x30);
          if (*plVar4 == *plVar3) {
            iVar2 = 0;
          }
          else {
            iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
          }
          puVar5 = (uint *)(local_res8 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          puVar5 = (uint *)(local_res10 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          goto LAB_1804e44c6;
        }
        if (iVar2 != 6) goto LAB_1804e44ca;
        if (*(longlong *)(param_3 + 0x40) < *(longlong *)(lVar7 + 0x40)) {
          iVar2 = -1;
        }
        else {
          if (*(longlong *)(param_3 + 0x40) <= *(longlong *)(lVar7 + 0x40)) goto LAB_1804e44ca;
          iVar2 = 1;
        }
      }
      if (-1 < iVar2 * iStackX_24) {
        param_1 = lVar7 + 0x60;
        lVar8 = lVar6 + (-1 - lVar8);
      }
      lVar6 = lVar8;
    } while (0 < lVar8);
  }
  return param_1;
}



############ FUN_ 1804e1340 size=401 ############

undefined8 *
FUN_1804e1340(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4,
             void *param_5)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined1 local_res8 [8];
  
  puVar6 = *(undefined8 **)(param_1 + 8);
  bVar8 = true;
  if (*(char *)((longlong)puVar6[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar7 = (undefined8 *)puVar6[1];
    do {
      puVar6 = puVar7;
      iVar5 = FUN_18048cbc0(uVar2,puVar6[4]);
      bVar8 = iVar5 < 0;
      if (bVar8) {
        puVar7 = (undefined8 *)*puVar6;
      }
      else {
        puVar7 = (undefined8 *)puVar6[2];
      }
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  puVar7 = puVar6;
  if (bVar8 != false) {
    if (puVar6 == (undefined8 *)**(undefined8 **)(param_1 + 8)) {
      puVar6 = (undefined8 *)FUN_1804e2370(param_1,local_res8,1,puVar6);
      *param_2 = *puVar6;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar6;
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar7[2] + 0x19);
        puVar4 = (undefined8 *)puVar7[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar4[2] + 0x19);
          puVar7 = puVar4;
          puVar4 = (undefined8 *)puVar4[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar6[1] + 0x19);
        puVar4 = (undefined8 *)puVar6[1];
        puVar7 = puVar6;
        while ((puVar3 = puVar4, cVar1 == '\0' && (puVar7 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar4 = (undefined8 *)puVar3[1];
          puVar7 = puVar3;
        }
        if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
          puVar7 = puVar3;
        }
      }
    }
    else {
      puVar7 = (undefined8 *)puVar6[2];
    }
  }
  iVar5 = FUN_18048cbc0(puVar7[4],*param_4);
  if (iVar5 < 0) {
    puVar6 = (undefined8 *)FUN_1804e2370(param_1,local_res8,bVar8,puVar6);
    *param_2 = *puVar6;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  puVar6 = *(undefined8 **)((longlong)param_5 + 0x28);
  if (puVar6 != (undefined8 *)0x0) {
    (**(code **)*puVar6)(puVar6,1);
  }
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 1812baf10 size=698 ############

ulonglong FUN_1812baf10(longlong param_1,longlong param_2)

{
  int *_Memory;
  uint uVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong lVar9;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  int local_40;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  uVar1 = *(uint *)(param_1 + 0x44);
  do {
    uVar1 = uVar1 - 1;
    if ((int)uVar1 < 0) {
      LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
      uVar8 = (ulonglong)*(byte *)(param_1 + 0x30);
      if (*(byte *)(param_1 + 0x30) != 0) {
        uVar8 = 0;
        puVar6 = (uint *)(*(longlong *)(param_1 + 0x10) + 0x18);
        LOCK();
        uVar1 = *puVar6;
        if (uVar1 == 0) {
          *puVar6 = 1;
        }
        else {
          uVar8 = (ulonglong)uVar1;
        }
        UNLOCK();
        if ((uVar1 == 0) &&
           (uVar8 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), (char)uVar8 == '\0')) {
          uVar8 = *(ulonglong *)(param_1 + 0x10);
          LOCK();
          *(undefined4 *)(uVar8 + 0x18) = 0;
          UNLOCK();
        }
      }
      return uVar8;
    }
    FUN_1804d7090(&local_88,*(longlong *)(param_1 + 0x38) + (longlong)(int)uVar1 * 0x60);
    lVar7 = local_58;
    if (((local_58 == *(longlong *)(param_2 + 0x30)) ||
        (iVar3 = FUN_18048cbc0(local_58,*(undefined8 *)(param_2 + 0x30)), iVar3 == 0)) &&
       (local_40 == *(int *)(param_2 + 0x48))) {
      bVar2 = true;
    }
    else {
      bVar2 = false;
    }
    _Memory = (int *)(lVar7 + -0x10);
    if ((*(uint *)(lVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar3 = *_Memory;
      *_Memory = *_Memory + -1;
      UNLOCK();
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar6 = (uint *)(local_60 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_68 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_70 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_78 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_80 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_88 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    if ((bVar2) && (uVar1 < *(uint *)(param_1 + 0x44))) {
      lVar7 = *(longlong *)(param_1 + 0x38) + (longlong)(int)uVar1 * 0x60;
      uVar5 = (*(uint *)(param_1 + 0x44) - uVar1) - 1;
      if (0 < (int)uVar5) {
        uVar8 = (ulonglong)uVar5;
        lVar9 = lVar7;
        do {
          lVar9 = lVar9 + 0x60;
          FUN_1804d7800(lVar7,lVar9);
          lVar7 = lVar7 + 0x60;
          uVar8 = uVar8 - 1;
        } while (uVar8 != 0);
      }
      FUN_1804d7190(lVar7);
      *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + -1;
      iVar3 = *(int *)(param_1 + 0x44);
      iVar4 = 0;
      if (0 < iVar3 * 2) {
        iVar4 = iVar3 * 2;
      }
      if (iVar4 < *(int *)(param_1 + 0x40)) {
        if (iVar3 < 0) {
          iVar3 = 0;
        }
        if (iVar3 < *(int *)(param_1 + 0x40)) {
          FUN_1804dcaa0(param_1 + 0x38);
        }
      }
    }
  } while( true );
}



############ FUN_ 1812bb3c0 size=434 ############

void FUN_1812bb3c0(longlong param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  int iVar2;
  longlong *plVar3;
  uint *_Memory;
  uint uVar4;
  int iVar5;
  void *pvVar6;
  void *pvVar7;
  longlong local_res8;
  longlong *local_res10;
  undefined4 uVar8;
  undefined8 uVar9;
  void *local_48;
  undefined8 local_40;
  
  uVar9 = 0xfffffffffffffffe;
  *param_2 = 0;
  param_2[1] = 0;
  uVar8 = 1;
  local_res10 = param_2;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  local_48 = (void *)0x0;
  local_40 = 0;
  iVar2 = *(int *)(param_1 + 0x44);
  uVar1 = *(undefined8 *)(param_1 + 0x38);
  iVar5 = 0;
  if (0 < iVar2) {
    FUN_1804dcaa0(&local_48,iVar2 + 8 + iVar2 / 2 & 0xfffffff8);
    iVar5 = local_40._4_4_;
  }
  pvVar7 = local_48;
  FUN_1804e14e0(&local_48,uVar1,iVar2,param_4,uVar8,uVar9);
  local_40 = CONCAT44(iVar5 + iVar2,(undefined4)local_40);
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  pvVar6 = (void *)((longlong)(iVar5 + iVar2) * 0x60 + (longlong)pvVar7);
  do {
    if (pvVar7 == pvVar6) {
      FUN_1804dca40(&local_48);
                    /* WARNING: Subroutine does not return */
      free(local_48);
    }
    plVar3 = (longlong *)(**(code **)(*param_3 + 0x10))(param_3,&local_res8);
    if (*(longlong *)((longlong)pvVar7 + 0x10) == *plVar3) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_18048cbc0(*(undefined8 *)((longlong)pvVar7 + 0x10),*plVar3);
    }
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar4 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if (iVar2 == 0) {
      iVar5 = *(int *)((longlong)param_2 + 0xc);
      iVar2 = iVar5 + 1;
      if ((int)*(uint *)(param_2 + 1) < iVar2) {
        if (iVar2 < 0) {
          iVar2 = iVar5 + 2;
        }
        uVar4 = iVar5 + 9 + (iVar2 >> 1) & 0xfffffff8;
        if (*(uint *)(param_2 + 1) != uVar4) {
          if ((int)uVar4 < 1) {
                    /* WARNING: Subroutine does not return */
            free((void *)*param_2);
          }
          FUN_1804dff20(param_2,uVar4);
        }
        *(uint *)(param_2 + 1) = uVar4;
      }
      iVar2 = *(int *)((longlong)param_2 + 0xc);
      *(int *)((longlong)param_2 + 0xc) = iVar2 + 1;
      FUN_1804d7090((longlong)iVar2 * 0x60 + *param_2,pvVar7);
    }
    pvVar7 = (void *)((longlong)pvVar7 + 0x60);
  } while( true );
}



############ FUN_ 1804e4530 size=302 ############

ulonglong FUN_1804e4530(longlong *param_1,undefined8 *param_2)

{
  uint *_Memory;
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  uint uVar4;
  longlong *plVar5;
  longlong local_res8;
  
  FUN_181248c30(param_2,&local_res8);
  plVar5 = (longlong *)*param_1;
  plVar2 = plVar5 + *(int *)((longlong)param_1 + 0xc);
  while( true ) {
    if (plVar5 == plVar2) {
      plVar5 = (longlong *)param_1[2];
      plVar2 = plVar5 + *(int *)((longlong)param_1 + 0x1c);
      while( true ) {
        if (plVar5 == plVar2) {
          iVar3 = atoi((char *)*param_2);
          _Memory = (uint *)(local_res8 + -0x10);
          if ((*_Memory & 0x30000000) == 0) {
            LOCK();
            uVar4 = *_Memory;
            *_Memory = *_Memory - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          return (ulonglong)(iVar3 != 0);
        }
        if ((local_res8 == *plVar5) || (iVar3 = FUN_18048cbc0(local_res8,*plVar5), iVar3 == 0))
        break;
        plVar5 = plVar5 + 1;
      }
      uVar4 = *(uint *)(local_res8 + -0x10);
      piVar1 = (int *)(local_res8 + -0x10);
      if ((uVar4 & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        uVar4 = iVar3 - 1;
        if (uVar4 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
          free(piVar1);
        }
      }
      return (ulonglong)uVar4 & 0xffffffffffffff00;
    }
    if ((local_res8 == *plVar5) || (iVar3 = FUN_18048cbc0(local_res8,*plVar5), iVar3 == 0)) break;
    plVar5 = plVar5 + 1;
  }
  uVar4 = *(uint *)(local_res8 + -0x10);
  piVar1 = (int *)(local_res8 + -0x10);
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    uVar4 = iVar3 - 1;
    if (uVar4 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      free(piVar1);
    }
  }
  return CONCAT71((uint7)(uint3)(uVar4 >> 8),1);
}



############ FUN_ 1804eb420 size=357 ############

void FUN_1804eb420(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  uint *puVar6;
  longlong local_res8;
  undefined8 local_res10;
  undefined8 local_res18;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  for (puVar5 = *(undefined8 **)(*param_2 + 0x10); puVar5 != (undefined8 *)0x0;
      puVar5 = (undefined8 *)*puVar5) {
    local_res10 = puVar5[1];
    iVar3 = FUN_18048cbc0(local_res10,&DAT_18249ef04,param_3,param_4,uVar7);
    if (iVar3 == 0) {
      plVar4 = puVar5 + 2;
      goto LAB_1804eb47a;
    }
  }
  plVar4 = (longlong *)FUN_181220d40();
LAB_1804eb47a:
  local_res8 = *plVar4;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  (**(code **)(*param_1 + 0x50))(param_1,&local_res8);
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[2];
  param_1[2] = local_res8;
  UNLOCK();
  puVar6 = (uint *)(lVar2 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar5 = *(undefined8 **)(*param_2 + 0x10);
  do {
    if (puVar5 == (undefined8 *)0x0) {
      puVar5 = (undefined8 *)FUN_181220d40();
LAB_1804eb526:
      iVar3 = FUN_18049bb30(*puVar5,&DAT_18249ef08);
      if (iVar3 == 0) {
        (**(code **)(*param_1 + 0x58))(param_1,0);
      }
      puVar6 = (uint *)(local_res8 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      return;
    }
    local_res18 = puVar5[1];
    iVar3 = FUN_18048cbc0(local_res18,"display");
    if (iVar3 == 0) {
      puVar5 = puVar5 + 2;
      goto LAB_1804eb526;
    }
    puVar5 = (undefined8 *)*puVar5;
  } while( true );
}



############ FUN_ 1804eba90 size=945 ############

undefined1 FUN_1804eba90(longlong param_1,longlong *param_2,undefined8 param_3)

{
  undefined4 uVar1;
  uint uVar2;
  undefined1 uVar3;
  int iVar4;
  undefined8 *puVar5;
  uint *puVar6;
  longlong lVar7;
  undefined8 uVar8;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  float fVar9;
  undefined4 extraout_XMM0_Da_01;
  undefined4 extraout_XMM0_Da_02;
  float fVar10;
  undefined4 extraout_XMM0_Da_03;
  undefined4 extraout_XMM0_Da_04;
  undefined4 uVar11;
  char *local_res10 [2];
  longlong local_res20;
  longlong local_78;
  undefined8 local_70;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  
  FUN_181230da0(*param_2 + 0x18,&local_res20,&DAT_1821db524);
  lVar7 = local_res20;
  iVar4 = FUN_18048cbc0(local_res20,&DAT_18249ef5c);
  if (iVar4 == 0) {
    FUN_1804ec010(param_1,param_2,param_3);
    uVar3 = 1;
    local_res20 = lVar7;
  }
  else {
    iVar4 = FUN_18048cbc0(lVar7,&DAT_18249ef54);
    if (iVar4 == 0) {
      FUN_1804ec160(param_1,param_2,param_3);
      uVar3 = 1;
      local_res20 = lVar7;
    }
    else {
      iVar4 = FUN_18048cbc0(lVar7,"circle");
      if (iVar4 == 0) {
        uVar1 = *(undefined4 *)(param_1 + 0x20);
        for (puVar5 = *(undefined8 **)(*param_2 + 0x10); puVar5 != (undefined8 *)0x0;
            puVar5 = (undefined8 *)*puVar5) {
          iVar4 = FUN_18048cbc0(puVar5[1],&DAT_18249efc0);
          if (iVar4 == 0) {
            puVar5 = puVar5 + 2;
            uVar11 = extraout_XMM0_Da;
            goto LAB_1804ebb9a;
          }
        }
        puVar5 = (undefined8 *)FUN_181220d40();
        uVar11 = extraout_XMM0_Da_00;
LAB_1804ebb9a:
        fVar9 = (float)FUN_1804f0b80(uVar11,puVar5,uVar1);
        uVar1 = *(undefined4 *)(param_1 + 0x24);
        for (puVar5 = *(undefined8 **)(*param_2 + 0x10); puVar5 != (undefined8 *)0x0;
            puVar5 = (undefined8 *)*puVar5) {
          iVar4 = FUN_18048cbc0(puVar5[1],&DAT_18249efbc);
          if (iVar4 == 0) {
            puVar5 = puVar5 + 2;
            uVar11 = extraout_XMM0_Da_01;
            goto LAB_1804ebbea;
          }
        }
        puVar5 = (undefined8 *)FUN_181220d40();
        uVar11 = extraout_XMM0_Da_02;
LAB_1804ebbea:
        fVar10 = (float)FUN_1804f0b80(uVar11,puVar5,uVar1);
        uVar1 = *(undefined4 *)(param_1 + 0x20);
        for (puVar5 = *(undefined8 **)(*param_2 + 0x10); puVar5 != (undefined8 *)0x0;
            puVar5 = (undefined8 *)*puVar5) {
          iVar4 = FUN_18048cbc0(puVar5[1],&DAT_18249efc8);
          if (iVar4 == 0) {
            puVar5 = puVar5 + 2;
            uVar11 = extraout_XMM0_Da_03;
            goto LAB_1804ebc36;
          }
        }
        puVar5 = (undefined8 *)FUN_181220d40();
        uVar11 = extraout_XMM0_Da_04;
LAB_1804ebc36:
        fStack_60 = (float)FUN_1804f0b80(uVar11,puVar5,uVar1);
        local_68 = fVar9 - fStack_60;
        fStack_64 = fVar10 - fStack_60;
        fStack_60 = fStack_60 * DAT_1824c41e0;
        fStack_5c = fStack_60;
        FUN_18129d1e0(param_3,&local_68);
        uVar3 = 1;
        local_res20 = lVar7;
      }
      else {
        iVar4 = FUN_18048cbc0(lVar7,"ellipse");
        if (iVar4 == 0) {
          FUN_1804ec650(param_1,param_2,param_3);
          uVar3 = 1;
          local_res20 = lVar7;
        }
        else {
          iVar4 = FUN_18048cbc0(lVar7,&DAT_18249ef84);
          if (iVar4 == 0) {
            FUN_1804ec850(param_1,param_2,param_3);
            uVar3 = 1;
            local_res20 = lVar7;
          }
          else {
            iVar4 = FUN_18048cbc0(lVar7,"polyline");
            if (iVar4 == 0) {
              uVar8 = 1;
            }
            else {
              iVar4 = FUN_18048cbc0(lVar7,"polygon");
              if (iVar4 != 0) {
                iVar4 = FUN_18048cbc0(lVar7,&DAT_18249ef3c);
                if (iVar4 == 0) {
                  FUN_1804ecd50(local_res10,param_2);
                  if (*local_res10[0] != '\0') {
                    local_78 = param_1;
                    local_70 = param_3;
                    uVar3 = FUN_18051f150(param_1 + 8,local_res10,&local_78);
                    puVar6 = (uint *)(local_res10[0] + -0x10);
                    if ((*puVar6 & 0x30000000) == 0) {
                      LOCK();
                      uVar2 = *puVar6;
                      *puVar6 = *puVar6 - 1;
                      UNLOCK();
                      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                        free(puVar6);
                      }
                    }
                    goto LAB_1804ebdf6;
                  }
                  puVar6 = (uint *)(local_res10[0] + -0x10);
                  lVar7 = local_res20;
                  if ((*puVar6 & 0x30000000) == 0) {
                    LOCK();
                    uVar2 = *puVar6;
                    *puVar6 = *puVar6 - 1;
                    UNLOCK();
                    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                      free(puVar6);
                    }
                  }
                }
                uVar3 = 0;
                local_res20 = lVar7;
                goto LAB_1804ebdf6;
              }
              uVar8 = 0;
            }
            FUN_1804eca20(param_1,param_2,uVar8,param_3);
            uVar3 = 1;
            local_res20 = lVar7;
          }
        }
      }
    }
  }
LAB_1804ebdf6:
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return uVar3;
}



############ FUN_ 1804ec010 size=332 ############

void FUN_1804ec010(undefined8 param_1,longlong *param_2,longlong param_3)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  uint *puVar5;
  undefined1 *local_res10 [2];
  longlong local_res20;
  longlong local_38;
  undefined8 local_30;
  undefined8 local_28;
  
  local_30 = 0xfffffffffffffffe;
  puVar3 = *(undefined8 **)(*param_2 + 0x10);
  do {
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)FUN_181220d40();
LAB_1804ec06a:
      FUN_1804ea1e0(param_1,param_3,puVar3);
      local_res10[0] = &DAT_1821dbf98;
      uVar4 = FUN_1804f1300(param_1,&local_38,param_2,"fill-rule",local_res10);
      puVar3 = (undefined8 *)FUN_181248e40(uVar4,&local_res20);
      iVar2 = FUN_18049bb30(*puVar3,"evenodd");
      puVar5 = (uint *)(local_res20 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar5 = (uint *)(local_38 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar5 = (uint *)(local_res10[0] + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      if (iVar2 == 0) {
        *(undefined1 *)(param_3 + 0x20) = 0;
      }
      return;
    }
    local_28 = puVar3[1];
    iVar2 = FUN_18048cbc0(local_28,&DAT_18249ef8c);
    if (iVar2 == 0) {
      puVar3 = puVar3 + 2;
      goto LAB_1804ec06a;
    }
    puVar3 = (undefined8 *)*puVar3;
  } while( true );
}



############ FUN_ 1804ec160 size=1258 ############

void FUN_1804ec160(longlong param_1,longlong *param_2,undefined8 param_3)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  undefined4 uVar5;
  undefined4 extraout_XMM0_Da_01;
  undefined4 extraout_XMM0_Da_02;
  undefined4 uVar6;
  undefined4 extraout_XMM0_Da_03;
  undefined4 extraout_XMM0_Da_04;
  undefined4 uVar7;
  undefined4 extraout_XMM0_Da_05;
  undefined4 extraout_XMM0_Da_06;
  undefined4 uVar8;
  undefined4 extraout_XMM0_Da_07;
  undefined4 extraout_XMM0_Da_08;
  undefined4 extraout_XMM0_Da_09;
  undefined4 extraout_XMM0_Da_10;
  undefined4 extraout_XMM0_Da_11;
  undefined4 extraout_XMM0_Da_12;
  undefined4 extraout_XMM0_Da_13;
  undefined4 extraout_XMM0_Da_14;
  undefined4 uVar9;
  undefined4 extraout_XMM0_Da_15;
  undefined4 extraout_XMM0_Da_16;
  undefined4 uVar10;
  undefined4 extraout_XMM0_Da_17;
  undefined4 extraout_XMM0_Da_18;
  undefined4 uVar11;
  
  puVar2 = *(undefined8 **)(*param_2 + 0x10);
  for (puVar3 = puVar2; puVar3 != (undefined8 *)0x0; puVar3 = (undefined8 *)*puVar3) {
    iVar1 = FUN_18048cbc0(puVar3[1],&DAT_18249efb0);
    if (iVar1 == 0) goto LAB_1804ec1be;
  }
  puVar3 = (undefined8 *)0x0;
LAB_1804ec1be:
  for (puVar4 = puVar2; puVar4 != (undefined8 *)0x0; puVar4 = (undefined8 *)*puVar4) {
    iVar1 = FUN_18048cbc0(puVar4[1],&DAT_18249efac);
    if (iVar1 == 0) goto LAB_1804ec1ee;
  }
  puVar4 = (undefined8 *)0x0;
LAB_1804ec1ee:
  if ((puVar3 != (undefined8 *)0x0) || (puVar4 != (undefined8 *)0x0)) {
    uVar8 = *(undefined4 *)(param_1 + 0x20);
    for (; puVar2 != (undefined8 *)0x0; puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efb0);
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar5 = extraout_XMM0_Da_07;
        goto LAB_1804ec3e1;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar5 = extraout_XMM0_Da_08;
LAB_1804ec3e1:
    uVar5 = FUN_1804f0b80(uVar5,puVar2,uVar8);
    uVar8 = *(undefined4 *)(param_1 + 0x24);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efac);
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar6 = extraout_XMM0_Da_09;
        goto LAB_1804ec431;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar6 = extraout_XMM0_Da_10;
LAB_1804ec431:
    uVar8 = FUN_1804f0b80(uVar6,puVar2,uVar8);
    uVar6 = uVar8;
    if ((puVar3 != (undefined8 *)0x0) && (uVar6 = uVar5, puVar4 == (undefined8 *)0x0)) {
      uVar8 = uVar5;
    }
    uVar5 = *(undefined4 *)(param_1 + 0x24);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],"height");
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar7 = extraout_XMM0_Da_11;
        goto LAB_1804ec4a5;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar7 = extraout_XMM0_Da_12;
LAB_1804ec4a5:
    uVar7 = FUN_1804f0b80(uVar7,puVar2,uVar5);
    uVar5 = *(undefined4 *)(param_1 + 0x20);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],"width");
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar9 = extraout_XMM0_Da_13;
        goto LAB_1804ec4f5;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar9 = extraout_XMM0_Da_14;
LAB_1804ec4f5:
    uVar9 = FUN_1804f0b80(uVar9,puVar2,uVar5);
    uVar5 = *(undefined4 *)(param_1 + 0x24);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efb8);
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar10 = extraout_XMM0_Da_15;
        goto LAB_1804ec545;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar10 = extraout_XMM0_Da_16;
LAB_1804ec545:
    uVar10 = FUN_1804f0b80(uVar10,puVar2,uVar5);
    uVar5 = *(undefined4 *)(param_1 + 0x20);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efb4);
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar11 = extraout_XMM0_Da_17;
        goto LAB_1804ec595;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar11 = extraout_XMM0_Da_18;
LAB_1804ec595:
    uVar5 = FUN_1804f0b80(uVar11,puVar2,uVar5);
    FUN_18129d5a0(param_3,uVar5,uVar10,uVar9,uVar7,uVar6,uVar8,1,1,1,1);
  }
  else {
    uVar8 = *(undefined4 *)(param_1 + 0x24);
    for (; puVar2 != (undefined8 *)0x0; puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],"height");
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar5 = extraout_XMM0_Da;
        goto LAB_1804ec265;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar5 = extraout_XMM0_Da_00;
LAB_1804ec265:
    uVar5 = FUN_1804f0b80(uVar5,puVar2,uVar8);
    uVar8 = *(undefined4 *)(param_1 + 0x20);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],"width");
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar6 = extraout_XMM0_Da_01;
        goto LAB_1804ec2b5;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar6 = extraout_XMM0_Da_02;
LAB_1804ec2b5:
    uVar6 = FUN_1804f0b80(uVar6,puVar2,uVar8);
    uVar8 = *(undefined4 *)(param_1 + 0x24);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efb8);
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar7 = extraout_XMM0_Da_03;
        goto LAB_1804ec305;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar7 = extraout_XMM0_Da_04;
LAB_1804ec305:
    uVar7 = FUN_1804f0b80(uVar7,puVar2,uVar8);
    uVar8 = *(undefined4 *)(param_1 + 0x20);
    for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efb4);
      if (iVar1 == 0) {
        puVar2 = puVar2 + 2;
        uVar9 = extraout_XMM0_Da_05;
        goto LAB_1804ec351;
      }
    }
    puVar2 = (undefined8 *)FUN_181220d40();
    uVar9 = extraout_XMM0_Da_06;
LAB_1804ec351:
    uVar8 = FUN_1804f0b80(uVar9,puVar2,uVar8);
    FUN_18129d850(param_3,uVar8,uVar7,uVar6,uVar5);
  }
  return;
}



############ FUN_ 1804ec650 size=509 ############

void FUN_1804ec650(longlong param_1,longlong *param_2,undefined8 param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  float fVar4;
  undefined4 extraout_XMM0_Da_01;
  undefined4 extraout_XMM0_Da_02;
  float fVar5;
  undefined4 extraout_XMM0_Da_03;
  undefined4 extraout_XMM0_Da_04;
  float fVar6;
  undefined4 extraout_XMM0_Da_05;
  undefined4 extraout_XMM0_Da_06;
  undefined4 uVar7;
  float local_58;
  float fStack_54;
  float fStack_50;
  float fStack_4c;
  
  uVar1 = *(undefined4 *)(param_1 + 0x20);
  for (puVar3 = *(undefined8 **)(*param_2 + 0x10); puVar3 != (undefined8 *)0x0;
      puVar3 = (undefined8 *)*puVar3) {
    iVar2 = FUN_18048cbc0(puVar3[1],&DAT_18249efc0);
    if (iVar2 == 0) {
      puVar3 = puVar3 + 2;
      uVar7 = extraout_XMM0_Da;
      goto LAB_1804ec6b5;
    }
  }
  puVar3 = (undefined8 *)FUN_181220d40();
  uVar7 = extraout_XMM0_Da_00;
LAB_1804ec6b5:
  fVar4 = (float)FUN_1804f0b80(uVar7,puVar3,uVar1);
  uVar1 = *(undefined4 *)(param_1 + 0x24);
  for (puVar3 = *(undefined8 **)(*param_2 + 0x10); puVar3 != (undefined8 *)0x0;
      puVar3 = (undefined8 *)*puVar3) {
    iVar2 = FUN_18048cbc0(puVar3[1],&DAT_18249efbc);
    if (iVar2 == 0) {
      puVar3 = puVar3 + 2;
      uVar7 = extraout_XMM0_Da_01;
      goto LAB_1804ec705;
    }
  }
  puVar3 = (undefined8 *)FUN_181220d40();
  uVar7 = extraout_XMM0_Da_02;
LAB_1804ec705:
  fVar5 = (float)FUN_1804f0b80(uVar7,puVar3,uVar1);
  uVar1 = *(undefined4 *)(param_1 + 0x20);
  for (puVar3 = *(undefined8 **)(*param_2 + 0x10); puVar3 != (undefined8 *)0x0;
      puVar3 = (undefined8 *)*puVar3) {
    iVar2 = FUN_18048cbc0(puVar3[1],&DAT_18249efb0);
    if (iVar2 == 0) {
      puVar3 = puVar3 + 2;
      uVar7 = extraout_XMM0_Da_03;
      goto LAB_1804ec755;
    }
  }
  puVar3 = (undefined8 *)FUN_181220d40();
  uVar7 = extraout_XMM0_Da_04;
LAB_1804ec755:
  fVar6 = (float)FUN_1804f0b80(uVar7,puVar3,uVar1);
  uVar1 = *(undefined4 *)(param_1 + 0x24);
  puVar3 = *(undefined8 **)(*param_2 + 0x10);
  do {
    if (puVar3 == (undefined8 *)0x0) {
      puVar3 = (undefined8 *)FUN_181220d40();
      uVar7 = extraout_XMM0_Da_06;
LAB_1804ec7a5:
      fStack_4c = (float)FUN_1804f0b80(uVar7,puVar3,uVar1);
      local_58 = fVar4 - fVar6;
      fStack_50 = fVar6 * DAT_1824c41e0;
      fStack_54 = fVar5 - fStack_4c;
      fStack_4c = fStack_4c * DAT_1824c41e0;
      FUN_18129d1e0(param_3,&local_58);
      return;
    }
    iVar2 = FUN_18048cbc0(puVar3[1],&DAT_18249efac);
    if (iVar2 == 0) {
      puVar3 = puVar3 + 2;
      uVar7 = extraout_XMM0_Da_05;
      goto LAB_1804ec7a5;
    }
    puVar3 = (undefined8 *)*puVar3;
  } while( true );
}



############ FUN_ 1804ec850 size=455 ############

void FUN_1804ec850(longlong param_1,longlong *param_2,undefined8 param_3)

{
  int iVar1;
  undefined8 *puVar2;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  undefined4 uVar3;
  undefined4 extraout_XMM0_Da_01;
  undefined4 extraout_XMM0_Da_02;
  undefined4 uVar4;
  undefined4 extraout_XMM0_Da_03;
  undefined4 extraout_XMM0_Da_04;
  undefined4 uVar5;
  undefined4 extraout_XMM0_Da_05;
  undefined4 extraout_XMM0_Da_06;
  undefined4 uVar6;
  undefined4 uVar7;
  
  uVar7 = *(undefined4 *)(param_1 + 0x20);
  for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
      puVar2 = (undefined8 *)*puVar2) {
    iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efc4);
    if (iVar1 == 0) {
      puVar2 = puVar2 + 2;
      uVar3 = extraout_XMM0_Da;
      goto LAB_1804ec8b5;
    }
  }
  puVar2 = (undefined8 *)FUN_181220d40();
  uVar3 = extraout_XMM0_Da_00;
LAB_1804ec8b5:
  uVar3 = FUN_1804f0b80(uVar3,puVar2,uVar7);
  uVar7 = *(undefined4 *)(param_1 + 0x24);
  for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
      puVar2 = (undefined8 *)*puVar2) {
    iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efd0);
    if (iVar1 == 0) {
      puVar2 = puVar2 + 2;
      uVar4 = extraout_XMM0_Da_01;
      goto LAB_1804ec905;
    }
  }
  puVar2 = (undefined8 *)FUN_181220d40();
  uVar4 = extraout_XMM0_Da_02;
LAB_1804ec905:
  uVar4 = FUN_1804f0b80(uVar4,puVar2,uVar7);
  uVar7 = *(undefined4 *)(param_1 + 0x20);
  for (puVar2 = *(undefined8 **)(*param_2 + 0x10); puVar2 != (undefined8 *)0x0;
      puVar2 = (undefined8 *)*puVar2) {
    iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efcc);
    if (iVar1 == 0) {
      puVar2 = puVar2 + 2;
      uVar5 = extraout_XMM0_Da_03;
      goto LAB_1804ec955;
    }
  }
  puVar2 = (undefined8 *)FUN_181220d40();
  uVar5 = extraout_XMM0_Da_04;
LAB_1804ec955:
  uVar5 = FUN_1804f0b80(uVar5,puVar2,uVar7);
  uVar7 = *(undefined4 *)(param_1 + 0x24);
  puVar2 = *(undefined8 **)(*param_2 + 0x10);
  do {
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)FUN_181220d40();
      uVar6 = extraout_XMM0_Da_06;
LAB_1804ec9a1:
      uVar7 = FUN_1804f0b80(uVar6,puVar2,uVar7);
      FUN_18129deb0(param_3,uVar3,uVar4);
      FUN_18129ddd0(param_3,uVar5,uVar7);
      return;
    }
    iVar1 = FUN_18048cbc0(puVar2[1],&DAT_18249efdc);
    if (iVar1 == 0) {
      puVar2 = puVar2 + 2;
      uVar6 = extraout_XMM0_Da_05;
      goto LAB_1804ec9a1;
    }
    puVar2 = (undefined8 *)*puVar2;
  } while( true );
}



############ FUN_ 1804eca20 size=814 ############

void FUN_1804eca20(longlong param_1,longlong *param_2,char param_3,undefined8 param_4)

{
  uint *_Memory;
  undefined8 *puVar1;
  bool bVar2;
  float fVar3;
  float fVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  longlong *plVar8;
  uint *puVar9;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Da_00;
  undefined4 extraout_XMM0_Da_01;
  undefined4 extraout_XMM0_Da_02;
  float fVar10;
  float fVar11;
  float local_res10;
  float local_res14;
  undefined1 *local_a8;
  undefined1 *local_a0;
  undefined1 *local_98;
  longlong local_90;
  undefined1 *local_88;
  longlong local_80;
  undefined8 local_78;
  undefined8 local_70;
  
  local_78 = 0xfffffffffffffffe;
  for (puVar1 = *(undefined8 **)(*param_2 + 0x10); puVar1 != (undefined8 *)0x0;
      puVar1 = (undefined8 *)*puVar1) {
    local_70 = puVar1[1];
    iVar6 = FUN_18048cbc0(local_70,"points");
    if (iVar6 == 0) {
      plVar8 = puVar1 + 2;
      goto LAB_1804eca95;
    }
  }
  plVar8 = (longlong *)FUN_181220d40();
LAB_1804eca95:
  local_90 = *plVar8;
  _Memory = (uint *)(local_90 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_a8 = &DAT_1821dbf98;
  local_80 = local_90;
  cVar5 = FUN_1804f1a00(&local_90,&local_a8,1);
  if (cVar5 == '\0') {
    local_res10 = 0.0;
    puVar9 = (uint *)(local_a8 + -0x10);
    uVar7 = *puVar9;
LAB_1804ecb60:
    local_res14 = 0.0;
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    bVar2 = false;
  }
  else {
    local_res10 = (float)FUN_1804f0b80(extraout_XMM0_Da,&local_a8,*(undefined4 *)(param_1 + 0x20));
    puVar9 = (uint *)(local_a8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_a0 = &DAT_1821dbf98;
    cVar5 = FUN_1804f1a00(&local_90,&local_a0,1);
    if (cVar5 == '\0') {
      puVar9 = (uint *)(local_a0 + -0x10);
      uVar7 = *puVar9;
      goto LAB_1804ecb60;
    }
    local_res14 = (float)FUN_1804f0b80(extraout_XMM0_Da_00,&local_a0,*(undefined4 *)(param_1 + 0x24)
                                      );
    puVar9 = (uint *)(local_a0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    bVar2 = true;
  }
  fVar4 = local_res14;
  fVar3 = local_res10;
  if (bVar2) {
    FUN_18129deb0(param_4,local_res10,local_res14);
    fVar10 = 0.0;
    fVar11 = 0.0;
    do {
      local_98 = &DAT_1821dbf98;
      cVar5 = FUN_1804f1a00(&local_90,&local_98,1);
      if (cVar5 == '\0') {
        local_res10 = 0.0;
        puVar9 = (uint *)(local_98 + -0x10);
        uVar7 = *puVar9;
LAB_1804ecc6a:
        if ((uVar7 & 0x30000000) == 0) {
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        bVar2 = false;
      }
      else {
        local_res10 = (float)FUN_1804f0b80(extraout_XMM0_Da_01,&local_98,
                                           *(undefined4 *)(param_1 + 0x20));
        puVar9 = (uint *)(local_98 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        local_88 = &DAT_1821dbf98;
        cVar5 = FUN_1804f1a00(&local_90,&local_88,1);
        if (cVar5 == '\0') {
          local_res14 = 0.0;
          puVar9 = (uint *)(local_88 + -0x10);
          uVar7 = *puVar9;
          goto LAB_1804ecc6a;
        }
        local_res14 = (float)FUN_1804f0b80(extraout_XMM0_Da_02,&local_88,
                                           *(undefined4 *)(param_1 + 0x24));
        puVar9 = (uint *)(local_88 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar7 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        bVar2 = true;
      }
      if (!bVar2) goto LAB_1804ecce3;
      FUN_18129ddd0(param_4,local_res10,local_res14);
      fVar10 = local_res14;
      fVar11 = local_res10;
    } while( true );
  }
LAB_1804ecd01:
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar7 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
LAB_1804ecce3:
  if ((param_3 == '\0') || ((fVar3 == fVar11 && (fVar4 == fVar10)))) {
    FUN_18129da20(param_4);
  }
  goto LAB_1804ecd01;
}



############ FUN_ 1804efb20 size=1129 ############

undefined8 * FUN_1804efb20(undefined8 param_1,undefined8 *param_2,undefined8 param_3)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  char *pcVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  uint *puVar9;
  byte bVar10;
  undefined4 extraout_XMM0_Da;
  float fVar11;
  float fVar12;
  undefined8 *local_res20;
  char *local_a0;
  undefined1 *local_98;
  undefined1 *local_90;
  undefined1 *local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60 [5];
  
  local_60[1] = 0xfffffffffffffffe;
  FUN_181252d20(&local_res20);
  local_98 = &DAT_1821dbf98;
  uVar6 = FUN_1804f1300(param_1,&local_78,param_3,"font-family",&local_98);
  FUN_181230ba0(uVar6,&local_a0);
  pcVar4 = local_a0;
  puVar9 = (uint *)(local_78 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_98 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (*local_a0 != '\0') {
    iVar5 = 0;
    if (local_a0 != (char *)local_res20[3]) {
      iVar5 = FUN_18048cbc0(local_a0,local_res20[3]);
    }
    if (iVar5 != 0) {
      FUN_181252760(&local_res20);
      if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar1 = (int *)(pcVar4 + -0x10);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = local_res20[3];
      local_res20[3] = local_a0;
      UNLOCK();
      puVar9 = (uint *)(lVar3 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar7 = (undefined8 *)local_res20[2];
      local_res20[2] = 0;
      if (puVar7 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar7 + 1);
        iVar5 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar5 == 1) {
          (**(code **)*puVar7)(puVar7,1);
        }
      }
      *(undefined4 *)((longlong)local_res20 + 0x34) = 0;
    }
  }
  local_90 = &DAT_1821dbf98;
  puVar7 = (undefined8 *)FUN_1804f1300(param_1,&local_70,param_3,"font-style",&local_90);
  iVar5 = FUN_18049d2f0(*puVar7,"italic");
  puVar9 = (uint *)(local_70 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_90 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (-1 < iVar5) {
    bVar10 = -(*(char *)(local_res20 + 7) != '\0') & 4;
    iVar5 = FUN_181232100(local_res20 + 4,&DAT_1824983b4);
    puVar7 = local_res20;
    if (-1 < iVar5) {
      bVar10 = bVar10 | 1;
    }
    iVar5 = FUN_181232100(local_res20 + 4,"Italic");
    if ((-1 < iVar5) || (iVar5 = FUN_181232100(puVar7 + 4,"Oblique"), -1 < iVar5)) {
      bVar10 = bVar10 | 2;
    }
    FUN_181251ed0(&local_res20,bVar10 | 2);
  }
  local_88 = &DAT_1821dbf98;
  puVar7 = (undefined8 *)FUN_1804f1300(param_1,&local_68,param_3,"font-weight",&local_88);
  iVar5 = FUN_18049d2f0(*puVar7,&DAT_18249f174);
  puVar9 = (uint *)(local_68 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_88 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (-1 < iVar5) {
    bVar10 = -(*(char *)(local_res20 + 7) != '\0') & 4;
    iVar5 = FUN_181232100(local_res20 + 4,&DAT_1824983b4);
    puVar7 = local_res20;
    if (-1 < iVar5) {
      bVar10 = bVar10 | 1;
    }
    iVar5 = FUN_181232100(local_res20 + 4,"Italic");
    if ((-1 < iVar5) || (iVar5 = FUN_181232100(puVar7 + 4,"Oblique"), -1 < iVar5)) {
      bVar10 = bVar10 | 2;
    }
    FUN_181251ed0(&local_res20,bVar10 | 1);
  }
  FUN_18049c4e0(&local_80,&DAT_18249f19c);
  uVar6 = FUN_1804f1300(param_1,local_60,param_3,"font-size",&local_80);
  fVar11 = (float)FUN_1804f0b80(extraout_XMM0_Da,uVar6,DAT_1824c3ea4);
  *param_2 = local_res20;
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res20 + 1) = *(int *)(local_res20 + 1) + 1;
    UNLOCK();
  }
  plVar8 = (longlong *)FUN_181252280(&local_res20);
  fVar12 = (float)(**(code **)(*plVar8 + 0x20))(plVar8);
  FUN_1812520a0(param_2,fVar11 / fVar12);
  puVar9 = (uint *)(local_60[0] + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_80 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_a0 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res20 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  return param_2;
}



############ FUN_ 1804f0910 size=434 ############

void FUN_1804f0910(longlong param_1,longlong *param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  undefined8 *puVar13;
  int iVar14;
  longlong *plVar15;
  float *pfVar16;
  longlong local_res8;
  undefined8 local_res10;
  undefined1 local_70 [104];
  
  puVar13 = *(undefined8 **)(*param_2 + 0x10);
  do {
    if (puVar13 == (undefined8 *)0x0) {
      plVar15 = (longlong *)FUN_181220d40();
LAB_1804f097d:
      local_res8 = *plVar15;
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
      pfVar16 = (float *)FUN_1804f26a0(local_70,&local_res8);
      fVar1 = *(float *)(param_1 + 0x2c);
      fVar2 = *(float *)(param_1 + 0x28);
      fVar3 = *(float *)(param_1 + 0x34);
      fVar4 = *pfVar16;
      fVar5 = pfVar16[1];
      fVar6 = pfVar16[2];
      fVar7 = *(float *)(param_1 + 0x38);
      fVar8 = pfVar16[4];
      fVar9 = pfVar16[5];
      fVar10 = pfVar16[3];
      fVar11 = pfVar16[5];
      fVar12 = pfVar16[4];
      *(float *)(param_1 + 0x28) = fVar4 * fVar2 + pfVar16[3] * fVar1;
      *(float *)(param_1 + 0x2c) = fVar5 * fVar2 + fVar8 * fVar1;
      *(float *)(param_1 + 0x30) = fVar6 * fVar2 + fVar9 * fVar1 + *(float *)(param_1 + 0x30);
      *(float *)(param_1 + 0x34) = fVar3 * fVar4 + fVar7 * fVar10;
      *(ulonglong *)(param_1 + 0x38) =
           CONCAT44(fVar3 * fVar6 + fVar7 * fVar11 + *(float *)(param_1 + 0x3c),
                    fVar3 * fVar5 + fVar7 * fVar12);
      return;
    }
    local_res10 = puVar13[1];
    iVar14 = FUN_18048cbc0(local_res10,"transform");
    if (iVar14 == 0) {
      plVar15 = puVar13 + 2;
      goto LAB_1804f097d;
    }
    puVar13 = (undefined8 *)*puVar13;
  } while( true );
}



############ FUN_ 1804f1300 size=910 ############

longlong *
FUN_1804f1300(longlong param_1,longlong *param_2,longlong *param_3,undefined8 param_4,
             longlong *param_5)

{
  uint *_Memory;
  byte bVar1;
  longlong lVar2;
  byte bVar3;
  byte *pbVar4;
  char cVar5;
  byte bVar6;
  int iVar7;
  uint uVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  uint *puVar11;
  bool bVar12;
  byte *local_res18 [2];
  char *local_98;
  byte *local_90;
  byte *local_88;
  undefined1 *local_80;
  char *local_78;
  byte *local_70;
  longlong local_68;
  char *local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined8 local_48;
  
  local_50 = 0xfffffffffffffffe;
  lVar2 = *param_3;
  for (puVar9 = *(undefined8 **)(lVar2 + 0x10); puVar9 != (undefined8 *)0x0;
      puVar9 = (undefined8 *)*puVar9) {
    local_48 = puVar9[1];
    iVar7 = FUN_18048cbc0(local_48,param_4);
    if (iVar7 == 0) goto LAB_1804f136e;
  }
  puVar9 = (undefined8 *)0x0;
LAB_1804f136e:
  if (puVar9 != (undefined8 *)0x0) {
    FUN_181220c40(lVar2,param_2,param_4,param_5);
    return param_2;
  }
  puVar9 = (undefined8 *)FUN_181246db0(lVar2,"style");
  local_98 = (char *)*puVar9;
  _Memory = (uint *)(local_98 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if (*local_98 == '\0') {
    lVar2 = *param_3;
    cVar5 = FUN_181246e10(lVar2,"class");
    if (cVar5 != '\0') {
      uVar10 = *(undefined8 *)(param_1 + 0x40);
      puVar9 = (undefined8 *)FUN_181246db0(lVar2,"class");
      local_58 = *puVar9;
      FUN_1804f0f00(local_res18,uVar10);
      bVar1 = *local_res18[0];
      pbVar4 = local_res18[0];
      while ((bVar1 != 0 &&
             (local_res18[0] = pbVar4, FUN_18049c2c0(&local_90,pbVar4,0x7d), *local_90 != 0))) {
        bVar1 = *pbVar4;
        local_70 = pbVar4 + 1;
        if ((char)bVar1 < '\0') {
          bVar6 = 0x40;
          bVar3 = bVar1 & 0x40;
          while ((bVar3 != 0 && (8 < bVar6))) {
            local_70 = local_70 + 1;
            bVar6 = bVar6 >> 1;
            bVar3 = bVar1 & bVar6;
          }
        }
        uVar10 = FUN_18124a8a0(&local_68);
        FUN_1804f1840(&local_60,uVar10,param_4,param_5);
        puVar11 = (uint *)(local_68 + -0x10);
        if ((*puVar11 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar11;
          *puVar11 = *puVar11 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar11);
          }
        }
        if (*local_60 != '\0') {
          *param_2 = (longlong)local_60;
          goto LAB_1804f1429;
        }
        bVar1 = *local_90;
        local_88 = local_90 + 1;
        if ((char)bVar1 < '\0') {
          bVar6 = 0x40;
          bVar3 = bVar1 & 0x40;
          while ((bVar3 != 0 && (8 < bVar6))) {
            local_88 = local_88 + 1;
            bVar6 = bVar6 >> 1;
            bVar3 = bVar1 & bVar6;
          }
        }
        puVar11 = (uint *)(local_60 + -0x10);
        if ((*puVar11 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar11;
          *puVar11 = *puVar11 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar11);
          }
        }
        puVar9 = (undefined8 *)FUN_181246db0(*param_3,"class");
        local_58 = *puVar9;
        FUN_1804f0f00(local_res18,local_88);
        bVar1 = *local_res18[0];
        pbVar4 = local_res18[0];
      }
    }
LAB_1804f160d:
    if (param_3[1] == 0) {
      lVar2 = *param_5;
      *param_2 = lVar2;
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
        UNLOCK();
      }
      uVar8 = *_Memory;
      goto LAB_1804f1655;
    }
    FUN_1804f1300(param_1,param_2,param_3[1],param_4,param_5);
  }
  else {
    local_80 = &DAT_1821dbf98;
    FUN_1804f1840(&local_78,&local_98,param_4,&local_80);
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar8 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar8;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    if (*local_78 == '\0') {
      puVar11 = (uint *)(local_78 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar8 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      goto LAB_1804f160d;
    }
    *param_2 = (longlong)local_78;
LAB_1804f1429:
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar8 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar8;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  uVar8 = *_Memory;
LAB_1804f1655:
  if ((uVar8 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 1804f1690 size=179 ############

longlong * FUN_1804f1690(undefined8 param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  int iVar3;
  longlong *plVar4;
  
  lVar1 = *param_3;
  puVar2 = *(undefined8 **)(lVar1 + 0x10);
  while( true ) {
    if (puVar2 == (undefined8 *)0x0) {
      if (param_3[1] == 0) {
        *param_2 = (longlong)&DAT_1821dbf98;
      }
      else {
        FUN_1804f1690(param_1,param_2,param_3[1],param_4);
      }
      return param_2;
    }
    iVar3 = FUN_18048cbc0(puVar2[1],param_4);
    if (iVar3 == 0) break;
    puVar2 = (undefined8 *)*puVar2;
  }
  plVar4 = (longlong *)FUN_181246db0(lVar1,param_4);
  lVar1 = *plVar4;
  *param_2 = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) != 0) {
    return param_2;
  }
  LOCK();
  *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
  UNLOCK();
  return param_2;
}



############ FUN_ 18051f150 size=226 ############

undefined8 FUN_18051f150(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  char cVar3;
  int iVar4;
  undefined8 uVar5;
  undefined8 *local_18;
  longlong *local_10;
  
  puVar1 = *(undefined8 **)(*param_1 + 8);
  do {
    if (puVar1 == (undefined8 *)0x0) {
      return 0;
    }
    local_10 = param_1;
    local_18 = puVar1;
    for (puVar2 = (undefined8 *)puVar1[2]; puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar4 = FUN_18048cbc0(puVar2[1],&DAT_18249ef04);
      if (iVar4 == 0) {
        iVar4 = FUN_18048cbc0(puVar2[2],*param_2);
        if ((iVar4 == 0) && (iVar4 = FUN_18049bb30(puVar1[3],&DAT_18249ef44), iVar4 != 0)) {
          uVar5 = FUN_1804eba90(*param_3,&local_18,param_3[1]);
          return uVar5;
        }
        break;
      }
    }
    cVar3 = FUN_18051f150(&local_18,param_2,param_3);
    if (cVar3 != '\0') {
      return 1;
    }
    puVar1 = (undefined8 *)*puVar1;
  } while( true );
}



############ FUN_ 18051f490 size=377 ############

undefined8 FUN_18051f490(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  char cVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 *local_70;
  longlong *local_68;
  undefined1 local_60 [8];
  longlong local_58;
  undefined8 *local_50;
  
  puVar2 = *(undefined8 **)(*param_1 + 8);
  do {
    if (puVar2 == (undefined8 *)0x0) {
      return 0;
    }
    uVar6 = *param_2;
    local_68 = param_1;
    local_70 = puVar2;
    for (puVar3 = (undefined8 *)puVar2[2]; puVar3 != (undefined8 *)0x0;
        puVar3 = (undefined8 *)*puVar3) {
      iVar5 = FUN_18048cbc0(puVar3[1],&DAT_18249ef04);
      if (iVar5 == 0) {
        iVar5 = FUN_18048cbc0(puVar3[2],uVar6);
        if ((iVar5 == 0) && (iVar5 = FUN_18049bb30(puVar2[3],&DAT_18249ef44), iVar5 != 0)) {
          cVar4 = FUN_181220e10(local_70,"linearGradient");
          if ((cVar4 == '\0') && (cVar4 = FUN_181220e10(local_70,"radialGradient"), cVar4 == '\0'))
          {
            return 0;
          }
          uVar6 = FUN_1804eddf0(*param_3,local_60,&local_70,param_3[1],*(undefined4 *)(param_3 + 2))
          ;
          FUN_1812a0e70(param_3 + 3,uVar6);
          if (local_50 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(local_50 + 1);
            iVar5 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar5 == 1) {
              (**(code **)*local_50)(local_50,1);
            }
          }
          if (local_58 == 0) {
            return 1;
          }
          *(undefined4 *)(local_58 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
          free(*(void **)(local_58 + 0x18));
        }
        break;
      }
    }
    cVar4 = FUN_18051f490(&local_70,param_2,param_3);
    if (cVar4 != '\0') {
      return 1;
    }
    puVar2 = (undefined8 *)*puVar2;
  } while( true );
}



############ FUN_ 1804eddf0 size=3490 ############

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

void FUN_1804eddf0(longlong param_1,undefined4 *param_2,longlong *param_3,longlong param_4,
                  float param_5)

{
  double *pdVar1;
  double dVar2;
  float *pfVar3;
  int iVar4;
  uint uVar5;
  undefined4 uVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  uint uVar9;
  uint *puVar10;
  uint *puVar11;
  undefined1 uVar12;
  double *pdVar13;
  bool bVar14;
  float fVar15;
  float fVar16;
  undefined8 uVar17;
  undefined8 extraout_XMM0_Qa;
  undefined8 extraout_XMM0_Qa_00;
  undefined8 extraout_XMM0_Qa_01;
  undefined8 uVar18;
  undefined8 extraout_XMM0_Qa_02;
  undefined8 extraout_XMM0_Qa_03;
  undefined8 extraout_XMM0_Qa_04;
  undefined8 extraout_XMM0_Qa_05;
  undefined8 extraout_XMM0_Qa_06;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  undefined8 local_280;
  undefined8 uStack_278;
  char local_270;
  double *local_268;
  undefined8 local_260;
  undefined4 local_258;
  char *local_250;
  longlong local_248;
  longlong local_240;
  longlong local_238;
  longlong local_230;
  longlong local_228;
  longlong local_220;
  longlong local_218;
  longlong local_210;
  longlong local_208;
  longlong local_200;
  longlong local_1f8;
  longlong local_1f0;
  longlong local_1e8;
  longlong local_1e0;
  longlong local_1d8;
  longlong local_1d0;
  longlong local_1c8;
  float local_1c0;
  float fStack_1bc;
  float fStack_1b8;
  float fStack_1b4;
  float local_1b0;
  float fStack_1ac;
  longlong local_1a8;
  longlong local_1a0;
  longlong local_198;
  longlong local_190;
  longlong local_188;
  longlong local_180;
  longlong local_178;
  longlong local_170;
  longlong local_168;
  double local_160;
  longlong local_158;
  undefined4 local_150 [2];
  float *local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  longlong local_120;
  undefined8 *local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_e8;
  undefined8 local_e0;
  
  local_f8 = 0xfffffffffffffffe;
  local_280 = 0;
  uStack_278 = 0;
  local_270 = 0;
  local_268 = (double *)0x0;
  local_260 = 0;
  FUN_1804ecd50(&local_250,param_3);
  if (*local_250 != '\0') {
    local_118 = &local_280;
    local_120 = param_1;
    FUN_18051f3a0(param_1 + 8,&local_250,&local_120);
  }
  puVar10 = (uint *)(local_250 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_1804edae0(param_1,&local_280,param_3);
  uVar5 = local_260._4_4_;
  if (local_260._4_4_ == 0) {
    FUN_1812a1940(&local_280,0,DAT_18262b5b8);
    uVar6 = DAT_18262b5b8;
LAB_1804edfd9:
    FUN_1812a1940(&local_280,DAT_1824c4140,uVar6);
    uVar9 = local_260._4_4_;
  }
  else {
    if (0.0 < *local_268) {
      FUN_1812a1940(&local_280,0,*(undefined4 *)(local_268 + 1));
    }
    uVar5 = uVar5 - 1;
    if ((local_260._4_4_ <= uVar5) ||
       (uVar9 = local_260._4_4_,
       local_268[(longlong)(int)uVar5 * 2] <= DAT_1824c4140 &&
       DAT_1824c4140 != local_268[(longlong)(int)uVar5 * 2])) {
      if (uVar5 < local_260._4_4_) {
        uVar6 = *(undefined4 *)(local_268 + (longlong)(int)uVar5 * 2 + 1);
      }
      else {
        uVar6 = 0;
      }
      goto LAB_1804edfd9;
    }
  }
  dVar2 = DAT_1824c4520;
  fVar15 = DAT_1824c3ea4;
  if ((param_5 < DAT_1824c3ea4) && (local_268 != local_268 + (longlong)(int)uVar9 * 2)) {
    pdVar13 = local_268 + 1;
    do {
      local_160 = (double)((float)(*(uint *)pdVar13 >> 0x18) * param_5) + dVar2;
      uVar12 = 0xff;
      if (SUB84(local_160,0) < 0xff) {
        uVar12 = SUB81(local_160,0);
      }
      local_258 = CONCAT13(uVar12,(int3)*(uint *)pdVar13);
      *(undefined4 *)pdVar13 = local_258;
      pdVar1 = pdVar13 + 1;
      pdVar13 = pdVar13 + 2;
    } while (pdVar1 != local_268 + (longlong)(int)uVar9 * 2);
  }
  local_270 = FUN_181220e10(*param_3,"radialGradient");
  fVar20 = *(float *)(param_1 + 0x20);
  fVar21 = *(float *)(param_1 + 0x24);
  fVar22 = 0.0;
  fVar23 = 0.0;
  for (puVar7 = *(undefined8 **)(*param_3 + 0x10); puVar7 != (undefined8 *)0x0;
      puVar7 = (undefined8 *)*puVar7) {
    local_e8 = puVar7[1];
    iVar4 = FUN_18048cbc0(local_e8,"gradientUnits");
    if (iVar4 == 0) {
      puVar7 = puVar7 + 2;
      goto LAB_1804ee0d1;
    }
  }
  puVar7 = (undefined8 *)FUN_181220d40();
LAB_1804ee0d1:
  iVar4 = FUN_18049bb30(*puVar7,"userSpaceOnUse");
  bVar14 = iVar4 != 0;
  if (bVar14) {
    fVar23 = *(float *)(param_4 + 0x18);
    fVar21 = *(float *)(param_4 + 0x1c) - fVar23;
    fVar22 = *(float *)(param_4 + 0x10);
    fVar20 = *(float *)(param_4 + 0x14) - fVar22;
  }
  if (local_270 == '\0') {
    if (bVar14) {
      FUN_18049c4e0(&local_1e0,&DAT_18249f0c0);
      FUN_18049c4e0(&local_1e8,&DAT_18249f0c0);
      uVar17 = FUN_181220c40(*param_3,&local_178,&DAT_18249efd0,&local_1e0);
      uVar18 = FUN_181220c40(*param_3,&local_180,&DAT_18249efc4,&local_1e8);
      uVar17 = FUN_1804f0b80(extraout_XMM0_Qa_05,uVar17,fVar15);
      fVar19 = (float)uVar17 * fVar21 + fVar23;
      fVar16 = (float)FUN_1804f0b80(uVar17,uVar18,fVar15);
      local_280._0_4_ = fVar16 * fVar20 + fVar22;
      puVar10 = (uint *)(local_180 + -0x10);
      local_280._4_4_ = fVar19;
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_178 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_1e8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_1e0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      FUN_18049c4e0(&local_1d0,&DAT_18249f0c0);
      FUN_18049c4e0(&local_1d8,&DAT_18249f0dc);
      uVar17 = FUN_181220c40(*param_3,&local_168,&DAT_18249efdc,&local_1d0);
      uVar18 = FUN_181220c40(*param_3,&local_170,&DAT_18249efcc,&local_1d8);
      uVar17 = FUN_1804f0b80(extraout_XMM0_Qa_06,uVar17,fVar15);
      fVar15 = (float)FUN_1804f0b80(uVar17,uVar18,fVar15);
      uStack_278 = CONCAT44((float)uVar17 * fVar21 + fVar23,fVar15 * fVar20 + fVar22);
      puVar10 = (uint *)(local_170 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_168 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_1d8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_1d0 + -0x10);
      uVar5 = *puVar10;
    }
    else {
      FUN_18049c4e0(&local_200,&DAT_18249f0c0);
      FUN_18049c4e0(&local_208,&DAT_18249f0c0);
      uVar17 = FUN_181220c40(*param_3,&local_198,&DAT_18249efd0,&local_200);
      uVar18 = FUN_181220c40(*param_3,&local_1a0,&DAT_18249efc4,&local_208);
      uVar17 = FUN_1804f0b80(extraout_XMM0_Qa_03,uVar17,fVar21);
      fVar15 = (float)uVar17 + fVar23;
      local_280._0_4_ = (float)FUN_1804f0b80(uVar17,uVar18,fVar20);
      local_280._0_4_ = (float)local_280 + fVar22;
      puVar10 = (uint *)(local_1a0 + -0x10);
      local_280._4_4_ = fVar15;
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_198 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_208 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_200 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      FUN_18049c4e0(&local_1f0,&DAT_18249f0c0);
      FUN_18049c4e0(&local_1f8,&DAT_18249f0dc);
      uVar17 = FUN_181220c40(*param_3,&local_188,&DAT_18249efdc,&local_1f0);
      uVar18 = FUN_181220c40(*param_3,&local_190,&DAT_18249efcc,&local_1f8);
      uVar17 = FUN_1804f0b80(extraout_XMM0_Qa_04,uVar17,fVar21);
      fVar15 = (float)FUN_1804f0b80(uVar17,uVar18,fVar20);
      uStack_278 = CONCAT44((float)uVar17 + fVar23,fVar15 + fVar22);
      puVar10 = (uint *)(local_190 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_188 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_1f8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_1f0 + -0x10);
      uVar5 = *puVar10;
    }
    if ((uVar5 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    if (((float)local_280 == (float)uStack_278) && (local_280._4_4_ == uStack_278._4_4_)) {
      if (local_260._4_4_ - 1 < local_260._4_4_) {
        uVar6 = *(undefined4 *)(local_268 + (longlong)(int)(local_260._4_4_ - 1) * 2 + 1);
      }
      else {
        uVar6 = 0;
      }
      *param_2 = uVar6;
      *(undefined8 *)(param_2 + 2) = 0;
      *(undefined8 *)(param_2 + 4) = 0;
      *(undefined8 *)(param_2 + 6) = 0x3f800000;
      *(undefined8 *)(param_2 + 8) = 0;
      *(undefined8 *)(param_2 + 10) = 0x3f800000;
      goto LAB_1804eeb92;
    }
  }
  else {
    if (bVar14) {
      FUN_18049c4e0(&local_218,&DAT_18249f0c4);
      FUN_18049c4e0(&local_220,&DAT_18249f0c4);
      local_228 = local_218;
      for (puVar7 = *(undefined8 **)(*param_3 + 0x10); local_218 = local_228,
          puVar7 != (undefined8 *)0x0; puVar7 = (undefined8 *)*puVar7) {
        local_100 = puVar7[1];
        iVar4 = FUN_18048cbc0(local_100,&DAT_18249efbc);
        if (iVar4 == 0) {
          local_228 = puVar7[2];
          puVar10 = (uint *)(local_228 + -0x10);
          uVar5 = *puVar10;
          goto LAB_1804ee33a;
        }
        local_228 = local_218;
      }
      puVar10 = (uint *)(local_228 + -0x10);
      uVar5 = *puVar10;
LAB_1804ee33a:
      if ((uVar5 & 0x30000000) == 0) {
        LOCK();
        *puVar10 = *puVar10 + 1;
        UNLOCK();
      }
      uVar17 = FUN_181220c40(*param_3,&local_158,&DAT_18249efc0,&local_220);
      uVar18 = FUN_1804f0b80(extraout_XMM0_Qa_01,&local_228,fVar15);
      fVar23 = (float)uVar18 * fVar21 + fVar23;
      fVar15 = (float)FUN_1804f0b80(uVar18,uVar17,fVar15);
      local_280._0_4_ = fVar15 * fVar20 + fVar22;
      puVar11 = (uint *)(local_158 + -0x10);
      local_280._4_4_ = fVar23;
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_220 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_218 + -0x10);
      uVar5 = *puVar10;
    }
    else {
      FUN_18049c4e0(&local_230,&DAT_18249f0c4);
      uVar17 = FUN_18049c4e0(&local_238,&DAT_18249f0c4);
      local_248 = local_230;
      for (puVar7 = *(undefined8 **)(*param_3 + 0x10); local_230 = local_248,
          puVar7 != (undefined8 *)0x0; puVar7 = (undefined8 *)*puVar7) {
        local_110 = puVar7[1];
        iVar4 = FUN_18048cbc0(local_110,&DAT_18249efbc);
        uVar17 = extraout_XMM0_Qa;
        if (iVar4 == 0) {
          local_248 = puVar7[2];
          puVar10 = (uint *)(local_248 + -0x10);
          uVar5 = *puVar10;
          goto LAB_1804ee18e;
        }
        local_248 = local_230;
      }
      puVar10 = (uint *)(local_248 + -0x10);
      uVar5 = *puVar10;
LAB_1804ee18e:
      if ((uVar5 & 0x30000000) == 0) {
        LOCK();
        *puVar10 = *puVar10 + 1;
        UNLOCK();
      }
      local_240 = local_238;
      for (puVar7 = *(undefined8 **)(*param_3 + 0x10); local_238 = local_240,
          puVar7 != (undefined8 *)0x0; puVar7 = (undefined8 *)*puVar7) {
        local_108 = puVar7[1];
        iVar4 = FUN_18048cbc0(local_108,&DAT_18249efc0);
        uVar17 = extraout_XMM0_Qa_00;
        if (iVar4 == 0) {
          local_240 = puVar7[2];
          puVar11 = (uint *)(local_240 + -0x10);
          uVar5 = *puVar11;
          goto LAB_1804ee1ec;
        }
        local_240 = local_238;
      }
      puVar11 = (uint *)(local_240 + -0x10);
      uVar5 = *puVar11;
LAB_1804ee1ec:
      if ((uVar5 & 0x30000000) == 0) {
        LOCK();
        *puVar11 = *puVar11 + 1;
        UNLOCK();
      }
      uVar17 = FUN_1804f0b80(uVar17,&local_248,fVar21);
      fVar23 = (float)uVar17 + fVar23;
      local_280._0_4_ = (float)FUN_1804f0b80(uVar17,&local_240,fVar20);
      local_280._0_4_ = (float)local_280 + fVar22;
      local_280._4_4_ = fVar23;
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_238 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_230 + -0x10);
      uVar5 = *puVar10;
    }
    if ((uVar5 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    FUN_18049c4e0(&local_210,&DAT_18249f0c4);
    uVar17 = FUN_181220c40(*param_3,&local_1a8,&DAT_18249efc8,&local_210);
    fVar15 = (float)FUN_1804f0b80(extraout_XMM0_Qa_02,uVar17,fVar20);
    puVar10 = (uint *)(local_1a8 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    puVar10 = (uint *)(local_210 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    uStack_278 = CONCAT44(local_280._4_4_ + 0.0,(float)local_280 + fVar15);
    local_e0 = uStack_278;
  }
  FUN_1812a1120(local_150,&local_280);
  plVar8 = (longlong *)FUN_181246db0(*param_3,"gradientTransform");
  local_1c8 = *plVar8;
  if ((*(uint *)(local_1c8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_1c8 + -0x10) = *(int *)(local_1c8 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1804f26a0(&local_1c0,&local_1c8);
  pfVar3 = local_148;
  if (local_270 == '\0') {
    fVar22 = local_1b0 * ((float)local_280 - (float)uStack_278) +
             (uStack_278._4_4_ - local_280._4_4_) * fStack_1b4 + 0.0;
    fVar23 = fStack_1bc * ((float)local_280 - (float)uStack_278) +
             (uStack_278._4_4_ - local_280._4_4_) * local_1c0 + 0.0;
    fVar21 = fStack_1b4 * (float)local_280 + local_1b0 * local_280._4_4_ + fStack_1ac;
    fVar20 = local_1c0 * (float)local_280 + fStack_1bc * local_280._4_4_ + fStack_1b8;
    fStack_1ac = local_1b0 * uStack_278._4_4_ + fStack_1b4 * (float)uStack_278 + fStack_1ac;
    fStack_1b8 = local_1c0 * (float)uStack_278 + fStack_1bc * uStack_278._4_4_ + fStack_1b8;
    fVar15 = ((fStack_1ac - fVar21) * fVar22 + fVar23 * (fStack_1b8 - fVar20)) /
             (fVar22 * fVar22 + fVar23 * fVar23);
    *local_148 = fVar20;
    local_148[1] = fVar21;
    local_148[2] = fStack_1b8 - fVar23 * fVar15;
    local_148[3] = fStack_1ac - fVar15 * fVar22;
  }
  else {
    local_138 = CONCAT44(fStack_1bc,local_1c0);
    uStack_130 = CONCAT44(fStack_1b4,fStack_1b8);
    local_128 = CONCAT44(fStack_1ac,local_1b0);
  }
  *param_2 = local_150[0];
  local_148 = (float *)0x0;
  *(float **)(param_2 + 2) = pfVar3;
  *(undefined8 *)(param_2 + 4) = local_140;
  local_140 = 0;
  *(undefined8 *)(param_2 + 6) = local_138;
  *(undefined8 *)(param_2 + 8) = uStack_130;
  *(undefined8 *)(param_2 + 10) = local_128;
  FUN_1812a0e00(local_150);
LAB_1804eeb92:
  local_260 = local_260 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_268);
}



############ FUN_ 1804edae0 size=780 ############

undefined8 FUN_1804edae0(undefined8 param_1,undefined8 param_2,longlong *param_3)

{
  uint uVar1;
  float fVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  int iVar6;
  undefined8 *puVar7;
  uint *puVar8;
  undefined1 uVar9;
  longlong *plVar10;
  double dVar11;
  undefined8 uVar12;
  float fVar13;
  double dVar14;
  float fVar15;
  undefined4 uVar16;
  undefined4 uVar17;
  uint local_res18 [2];
  undefined4 local_res20;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  double local_e0;
  undefined8 local_d8;
  longlong *local_d0;
  longlong *local_c8;
  longlong *local_c0;
  longlong *local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  
  local_b0 = 0xfffffffffffffffe;
  if (*param_3 != 0) {
    for (plVar10 = *(longlong **)(*param_3 + 8); plVar10 != (longlong *)0x0;
        plVar10 = (longlong *)*plVar10) {
      iVar6 = FUN_18049bb30(plVar10[3],&DAT_18249f05c);
      dVar5 = DAT_1824c4520;
      dVar4 = DAT_1824c4140;
      dVar3 = DAT_1824c3eb8;
      fVar2 = DAT_1824c3ea4;
      local_b8 = param_3;
      if (iVar6 == 0) {
        do {
          local_d0 = plVar10;
          local_c8 = param_3;
          FUN_1804f2100(param_1,local_res18,&local_d0,"stop-color",DAT_18262b5b8);
          FUN_18049c4e0(&local_f8,&DAT_18249f074);
          local_c0 = plVar10;
          FUN_1804f1300(param_1,&local_f0,&local_c0,"stop-opacity",&local_f8);
          puVar8 = (uint *)(local_f8 + -0x10);
          if ((*puVar8 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
          local_e8 = local_f0;
          dVar11 = (double)FUN_18049bd80(&local_e8);
          fVar15 = (float)dVar11;
          if (0.0 <= fVar15) {
            fVar13 = fVar2;
            if (fVar15 <= fVar2) {
              fVar13 = fVar15;
            }
          }
          else {
            fVar13 = 0.0;
          }
          local_e0 = (double)((float)(local_res18[0] >> 0x18) * fVar13) + dVar5;
          uVar9 = 0xff;
          if (SUB84(local_e0,0) < 0xff) {
            uVar9 = SUB81(local_e0,0);
          }
          local_res20 = CONCAT13(uVar9,(int3)local_res18[0]);
          local_res18[0] = local_res20;
          for (puVar7 = (undefined8 *)plVar10[2]; puVar7 != (undefined8 *)0x0;
              puVar7 = (undefined8 *)*puVar7) {
            local_a8 = puVar7[1];
            iVar6 = FUN_18048cbc0(local_a8,"offset");
            if (iVar6 == 0) {
              local_d8 = puVar7[2];
              uVar12 = FUN_18049bd80(&local_d8);
              uVar16 = (undefined4)uVar12;
              uVar17 = (undefined4)((ulonglong)uVar12 >> 0x20);
              goto LAB_1804edd04;
            }
          }
          uVar16 = 0;
          uVar17 = 0;
LAB_1804edd04:
          dVar11 = (double)CONCAT44(uVar17,uVar16);
          for (puVar7 = (undefined8 *)plVar10[2]; puVar7 != (undefined8 *)0x0;
              puVar7 = (undefined8 *)*puVar7) {
            local_a0 = puVar7[1];
            iVar6 = FUN_18048cbc0(local_a0,"offset");
            if (iVar6 == 0) {
              puVar7 = puVar7 + 2;
              goto LAB_1804edd35;
            }
          }
          puVar7 = (undefined8 *)FUN_181220d40();
LAB_1804edd35:
          iVar6 = FUN_18049bc80(*puVar7,0x25);
          if (-1 < iVar6) {
            dVar11 = (double)CONCAT44(uVar17,uVar16) * dVar3;
          }
          if (0.0 <= dVar11) {
            dVar14 = dVar4;
            if (dVar11 <= dVar4) {
              dVar14 = dVar11;
            }
          }
          else {
            dVar14 = 0.0;
          }
          FUN_1812a1940(param_2,dVar14,local_res18[0]);
          puVar8 = (uint *)(local_f0 + -0x10);
          if ((*puVar8 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
          plVar10 = (longlong *)*plVar10;
          if (plVar10 == (longlong *)0x0) {
            return 1;
          }
          do {
            iVar6 = FUN_18049bb30(plVar10[3],&DAT_18249f05c);
            if (iVar6 == 0) break;
            plVar10 = (longlong *)*plVar10;
          } while (plVar10 != (longlong *)0x0);
          if (plVar10 == (longlong *)0x0) {
            return 1;
          }
        } while( true );
      }
    }
  }
  return 0;
}



############ FUN_ 18051f3a0 size=226 ############

undefined8 FUN_18051f3a0(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  char cVar3;
  int iVar4;
  undefined8 uVar5;
  undefined8 *local_18;
  longlong *local_10;
  
  puVar1 = *(undefined8 **)(*param_1 + 8);
  do {
    if (puVar1 == (undefined8 *)0x0) {
      return 0;
    }
    local_10 = param_1;
    local_18 = puVar1;
    for (puVar2 = (undefined8 *)puVar1[2]; puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar4 = FUN_18048cbc0(puVar2[1],&DAT_18249ef04);
      if (iVar4 == 0) {
        iVar4 = FUN_18048cbc0(puVar2[2],*param_2);
        if ((iVar4 == 0) && (iVar4 = FUN_18049bb30(puVar1[3],&DAT_18249ef44), iVar4 != 0)) {
          uVar5 = FUN_1804edae0(*param_3,param_3[1],&local_18);
          return uVar5;
        }
        break;
      }
    }
    cVar3 = FUN_18051f3a0(&local_18,param_2,param_3);
    if (cVar3 != '\0') {
      return 1;
    }
    puVar1 = (undefined8 *)*puVar1;
  } while( true );
}



############ FUN_ 18051f620 size=239 ############

bool FUN_18051f620(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  undefined8 *local_18;
  longlong *local_10;
  
  puVar1 = *(undefined8 **)(*param_1 + 8);
  do {
    if (puVar1 == (undefined8 *)0x0) {
      return false;
    }
    local_10 = param_1;
    local_18 = puVar1;
    for (puVar2 = (undefined8 *)puVar1[2]; puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar4 = FUN_18048cbc0(puVar2[1],&DAT_18249ef04);
      if (iVar4 == 0) {
        iVar4 = FUN_18048cbc0(puVar2[2],*param_2);
        if ((iVar4 == 0) && (iVar4 = FUN_18049bb30(puVar1[3],&DAT_18249ef44), iVar4 != 0)) {
          lVar5 = FUN_1804ef190(*param_3,&local_18,1,param_3[1]);
          param_3[2] = lVar5;
          return lVar5 != 0;
        }
        break;
      }
    }
    cVar3 = FUN_18051f620(&local_18,param_2,param_3);
    if (cVar3 != '\0') {
      return true;
    }
    puVar1 = (undefined8 *)*puVar1;
  } while( true );
}



############ FUN_ 181220c40 size=140 ############

longlong * FUN_181220c40(longlong param_1,longlong *param_2,undefined8 param_3,longlong *param_4)

{
  undefined8 *puVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  
  puVar1 = *(undefined8 **)(param_1 + 0x10);
  do {
    if (puVar1 == (undefined8 *)0x0) {
      lVar4 = *param_4;
      *param_2 = lVar4;
      uVar3 = *(uint *)(lVar4 + -0x10);
LAB_181220c96:
      if ((uVar3 & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
        UNLOCK();
      }
      return param_2;
    }
    iVar2 = FUN_18048cbc0(puVar1[1],param_3);
    if (iVar2 == 0) {
      lVar4 = puVar1[2];
      *param_2 = lVar4;
      uVar3 = *(uint *)(lVar4 + -0x10);
      goto LAB_181220c96;
    }
    puVar1 = (undefined8 *)*puVar1;
  } while( true );
}



############ FUN_ 181220e10 size=160 ############

undefined8 FUN_181220e10(longlong param_1,undefined8 param_2)

{
  int *_Memory;
  int iVar1;
  longlong lVar2;
  bool bVar3;
  undefined8 uVar4;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  bVar3 = false;
  local_res8 = 0;
  iVar1 = FUN_18049bb30(*(undefined8 *)(param_1 + 0x18));
  if (iVar1 == 0) {
    lVar2 = CONCAT44(uStackX_c,local_res8);
  }
  else {
    FUN_181230da0((undefined8 *)(param_1 + 0x18),&local_res8,&DAT_1821db524);
    bVar3 = true;
    lVar2 = CONCAT44(uStackX_c,local_res8);
    iVar1 = FUN_18048cbc0(lVar2,param_2);
    if (iVar1 != 0) {
      uVar4 = 0;
      goto LAB_181220e72;
    }
  }
  uVar4 = 1;
LAB_181220e72:
  if ((bVar3) && (_Memory = (int *)(lVar2 + -0x10), (*(uint *)(lVar2 + -0x10) & 0x30000000) == 0)) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return uVar4;
}



############ FUN_ 181246d40 size=100 ############

undefined8 FUN_181246d40(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  longlong local_res8;
  
  uVar5 = (undefined4)((ulonglong)param_3 >> 0x20);
  uVar4 = (undefined4)param_3;
  puVar1 = *(undefined8 **)(param_1 + 0x10);
  while( true ) {
    if (puVar1 == (undefined8 *)0x0) {
      return CONCAT44(uVar5,uVar4);
    }
    iVar2 = FUN_18048cbc0(puVar1[1],param_2);
    if (iVar2 == 0) break;
    puVar1 = (undefined8 *)*puVar1;
  }
  local_res8 = puVar1[2];
  uVar3 = FUN_18049bd80(&local_res8);
  return uVar3;
}



############ FUN_ 181246db0 size=86 ############

undefined8 * FUN_181246db0(longlong param_1,undefined8 param_2)

{
  int iVar1;
  undefined8 *puVar2;
  
  puVar2 = *(undefined8 **)(param_1 + 0x10);
  while( true ) {
    if (puVar2 == (undefined8 *)0x0) {
      puVar2 = (undefined8 *)FUN_181220d40();
      return puVar2;
    }
    iVar1 = FUN_18048cbc0(puVar2[1],param_2);
    if (iVar1 == 0) break;
    puVar2 = (undefined8 *)*puVar2;
  }
  return puVar2 + 2;
}



############ FUN_ 181246e10 size=75 ############

bool FUN_181246e10(longlong param_1,undefined8 param_2)

{
  int iVar1;
  undefined8 *puVar2;
  
  for (puVar2 = *(undefined8 **)(param_1 + 0x10); puVar2 != (undefined8 *)0x0;
      puVar2 = (undefined8 *)*puVar2) {
    iVar1 = FUN_18048cbc0(puVar2[1],param_2);
    if (iVar1 == 0) goto LAB_181246e4a;
  }
  puVar2 = (undefined8 *)0x0;
LAB_181246e4a:
  return puVar2 != (undefined8 *)0x0;
}



############ FUN_ 181218a80 size=255 ############

void FUN_181218a80(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  int iVar4;
  undefined8 *puVar5;
  uint *puVar6;
  longlong *plVar7;
  longlong local_res10;
  longlong local_res18;
  undefined8 local_res20;
  
  puVar5 = (undefined8 *)FUN_181248c30(param_1,&local_res18,param_3,param_4,0xfffffffffffffffe);
  local_res20 = *puVar5;
  FUN_18122d110(param_2,local_res20,&DAT_1821db5dc,&DAT_1821db56c);
  puVar6 = (uint *)(local_res18 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  FUN_18122d550(param_2);
  FUN_18122d5d0(param_2);
  plVar7 = (longlong *)*param_2;
  plVar1 = plVar7 + *(int *)((longlong)param_2 + 0xc);
  do {
    if (plVar7 == plVar1) {
      return;
    }
    iVar4 = FUN_18048cbc0(*plVar7,&DAT_1821db5bc);
    if (iVar4 == 0) {
      FUN_18049c4e0(&local_res10,&DAT_1821db61c);
      lVar3 = *plVar7;
      *plVar7 = local_res10;
      puVar6 = (uint *)(lVar3 + -0x10);
      local_res10 = lVar3;
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
    }
    plVar7 = plVar7 + 1;
  } while( true );
}



############ FUN_ 1812e1110 size=750 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e1110(longlong param_1,longlong *param_2,char param_3)

{
  byte bVar1;
  undefined4 uVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  byte *pbVar7;
  longlong *plVar8;
  undefined4 *puVar9;
  uint *_Memory;
  longlong lVar10;
  char cVar11;
  longlong lVar13;
  undefined1 auStack_e8 [32];
  undefined4 local_c8;
  undefined8 local_c0;
  undefined4 local_b8;
  undefined4 local_a8 [2];
  undefined4 local_a0;
  uint uStack_9c;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined8 local_88;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  longlong local_78 [2];
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined **local_58;
  longlong local_50;
  ulonglong local_48;
  longlong lVar12;
  
  local_78[1] = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  lVar13 = 0;
  local_a8[0] = 0;
  pbVar7 = (byte *)*param_2;
  lVar10 = lVar13;
  while( true ) {
    while( true ) {
      bVar1 = *pbVar7;
      pbVar7 = pbVar7 + 1;
      if (-1 < (char)bVar1) break;
      if ((*pbVar7 & 0xc0) != 0x80) goto LAB_1812e1197;
      do {
        pbVar7 = pbVar7 + 1;
      } while ((*pbVar7 & 0xc0) == 0x80);
      lVar10 = lVar10 + 1;
    }
    if (bVar1 == 0) break;
LAB_1812e1197:
    lVar10 = lVar10 + 1;
  }
  iVar4 = FUN_1812dbb90(param_1);
  lVar12 = lVar13;
  if ((int)lVar10 == iVar4) {
    plVar8 = (longlong *)FUN_1812dc020(param_1,local_78);
    lVar12 = 1;
    cVar11 = '\x01';
    uVar6 = 0;
    if (*plVar8 != *param_2) {
      uVar6 = FUN_18048cbc0(*plVar8,*param_2);
    }
    if (uVar6 == 0) {
      bVar3 = false;
      goto LAB_1812e11e5;
    }
  }
  cVar11 = (char)lVar12;
  bVar3 = true;
LAB_1812e11e5:
  if ((cVar11 != '\0') && (_Memory = (uint *)(local_78[0] + -0x10), (*_Memory & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (bVar3) {
    if (param_3 == '\0') {
      lVar10 = *(longlong *)(param_1 + 0x1d0) + 200;
      if (*(longlong *)(param_1 + 0x1d0) == 0) {
        lVar10 = lVar13;
      }
      FUN_1813514c0(param_1 + 0x2d8,lVar10);
    }
    local_58 = &PTR_vftable_18262b560;
    local_50 = *param_2;
    if ((*(uint *)(local_50 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_50 + -0x10) = *(int *)(local_50 + -0x10) + 1;
      UNLOCK();
    }
    FUN_1813516e0(param_1 + 0x2d8,&local_58);
    (**(code **)(*local_58 + 0xb0))(local_58,&local_50);
    iVar4 = *(int *)(param_1 + 0x2a4);
    iVar5 = FUN_1812dbb90(param_1);
    uVar6 = FUN_1812dbb90(param_1);
    local_a0 = 0;
    uStack_9c = 0;
    if (0 < (int)uVar6) {
      uStack_9c = uVar6;
    }
    FUN_1812dc240(param_1,(ulonglong)uStack_9c << 0x20,0,*(undefined4 *)(param_1 + 0x2a4));
    uVar2 = *(undefined4 *)(param_1 + 0x2a4);
    puVar9 = (undefined4 *)FUN_18134a8d0(param_1,local_a8,0x1000201,0);
    local_c0 = 0;
    local_c8 = *puVar9;
    local_b8 = uVar2;
    FUN_1812dccb0(param_1,param_2,0,param_1 + 0x298);
    if ((iVar5 <= iVar4) && (*(char *)(param_1 + 0x1ee) == '\0')) {
      iVar4 = FUN_1812dbb90(param_1);
    }
    *(undefined4 *)(param_1 + 0x2f8) = 0;
    FUN_1812e0940(param_1,*(undefined8 *)(param_1 + 0x280));
    FUN_1812e08d0(param_1,iVar4);
    local_98 = *(undefined4 *)(param_1 + 0x2a4);
    *(ulonglong *)(param_1 + 0x280) = CONCAT44(local_98,local_98);
    uStack_94 = local_98;
    if (param_3 == '\0') {
      lVar10 = *(longlong *)(param_1 + 0x1d0) + 200;
      if (*(longlong *)(param_1 + 0x1d0) == 0) {
        lVar10 = lVar13;
      }
      FUN_181351570(param_1 + 0x2d8,lVar10);
    }
    else {
      FUN_1812e0e60(param_1);
    }
    FUN_1812e0480(param_1);
    FUN_1812e0240(param_1);
    FUN_181352a80(param_1 + 0x200);
    local_88 = 0;
    uStack_80 = *(undefined4 *)(param_1 + 0x28);
    uStack_7c = *(undefined4 *)(param_1 + 0x2c);
    local_68 = 0;
    uStack_64 = 0;
    uStack_60 = uStack_80;
    uStack_5c = uStack_7c;
    FUN_181342870(param_1,&local_68,1);
  }
}



############ FUN_ 1812eba00 size=528 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812eba00(longlong param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  longlong *plVar5;
  undefined1 **ppuVar6;
  uint *puVar7;
  undefined1 auStack_b8 [32];
  undefined1 *local_98;
  undefined1 *local_90;
  undefined1 *local_88 [2];
  undefined8 local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  longlong local_68 [2];
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined **local_48;
  int local_40 [2];
  ulonglong local_38;
  
  local_68[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_98 = (undefined1 *)((ulonglong)local_98 & 0xffffffff00000000);
  plVar5 = (longlong *)FUN_1812ebf60();
  if (plVar5 == (longlong *)0x0) {
    local_90 = &DAT_1821dbf98;
    ppuVar6 = &local_90;
    bVar3 = false;
    bVar2 = true;
  }
  else {
    local_88[0] = (undefined1 *)*plVar5;
    bVar3 = true;
    bVar2 = false;
    if ((*(uint *)(local_88[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_88[0] + -0x10) = *(int *)(local_88[0] + -0x10) + 1;
      UNLOCK();
    }
    ppuVar6 = local_88;
  }
  local_98 = *ppuVar6;
  *ppuVar6 = &DAT_1821dbf98;
  if (bVar2) {
    puVar7 = (uint *)(local_90 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  if (bVar3) {
    puVar7 = (uint *)(local_88[0] + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  bVar2 = false;
  if (*(int *)(param_1 + 0x150) == param_2) {
    plVar5 = (longlong *)FUN_1812ea010(*(undefined8 *)(param_1 + 0x170),local_68);
    bVar2 = true;
    if ((undefined1 *)*plVar5 == local_98) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_18048cbc0(*plVar5,local_98);
    }
    if (iVar4 == 0) {
      bVar3 = false;
      goto LAB_1812ebb2f;
    }
  }
  bVar3 = true;
LAB_1812ebb2f:
  if ((bVar2) && (puVar7 = (uint *)(local_68[0] + -0x10), (*puVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if (bVar3) {
    FUN_181349c50(*(undefined8 *)(param_1 + 0x170),&local_98,0);
    *(int *)(param_1 + 0x150) = param_2;
    local_48 = &PTR_vftable_18262b570;
    local_40[0] = param_2;
    FUN_1813516e0(param_1 + 0x138,&local_48);
    (**(code **)(*local_48 + 0xb0))(local_48,local_40);
    uStack_6c = *(undefined4 *)(param_1 + 0x2c);
    uStack_70 = *(undefined4 *)(param_1 + 0x28);
    local_78 = 0;
    local_58 = 0;
    uStack_54 = 0;
    uStack_50 = uStack_70;
    uStack_4c = uStack_6c;
    FUN_181342870(param_1,&local_58,1);
    FUN_1812ea290(param_1,param_3);
  }
  puVar7 = (uint *)(local_98 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
}



############ FUN_ 1812eb570 size=180 ############

void FUN_1812eb570(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  char cVar2;
  int iVar3;
  undefined1 auStack_b8 [56];
  undefined1 local_80 [24];
  void *local_68;
  longlong *local_58;
  undefined8 local_50;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_b8;
  FUN_1812efe40(local_80,param_1 + 0x118,1);
  cVar2 = FUN_1812efb00(local_80);
  do {
    plVar1 = local_58;
    if (cVar2 == '\0') {
                    /* WARNING: Subroutine does not return */
      free(local_68);
    }
    if ((int)local_58[1] != 0) {
      if (*local_58 == *param_2) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_18048cbc0(*local_58,*param_2);
      }
      if (iVar3 == 0) {
        FUN_1812eba00(param_1,(int)plVar1[1],0);
                    /* WARNING: Subroutine does not return */
        free(local_68);
      }
    }
    cVar2 = FUN_1812efb00(local_80);
  } while( true );
}



############ FUN_ 181349c50 size=396 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181349c50(longlong *param_1,longlong *param_2,int param_3)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint *_Memory;
  undefined8 uVar4;
  undefined1 auStack_98 [32];
  undefined8 local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined8 local_68;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined **local_48;
  longlong local_40;
  ulonglong local_38;
  
  local_68 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  FUN_1812e8fb0(param_1,1);
  lVar2 = *param_2;
  uVar4 = 0;
  if (param_1[0x36] == lVar2) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(param_1[0x36],lVar2);
  }
  if (iVar3 != 0) {
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = param_1[0x36];
    param_1[0x36] = *param_2;
    UNLOCK();
    _Memory = (uint *)(lVar2 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    local_48 = &PTR_vftable_18262b560;
    local_40 = *param_2;
    if ((*(uint *)(local_40 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_40 + -0x10) = *(int *)(local_40 + -0x10) + 1;
      UNLOCK();
    }
    FUN_1813516e0(param_1 + 0x33,&local_48);
    (**(code **)(*local_48 + 0xb0))(local_48,&local_40);
    local_78 = 0;
    uStack_70 = (undefined4)param_1[5];
    uStack_6c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_58 = 0;
    uStack_54 = 0;
    uStack_50 = uStack_70;
    uStack_4c = uStack_6c;
    FUN_181342870(param_1,&local_58,1);
    if (*(code **)(*param_1 + 0x168) != FUN_1812e98c0) {
      (**(code **)(*param_1 + 0x168))(param_1);
    }
    lVar2 = param_1[0x3c];
    if ((lVar2 != 0) && (*(longlong *)(lVar2 + 0x10) != 0)) {
      if (lVar2 != 0) {
        uVar4 = *(undefined8 *)(lVar2 + 0x10);
      }
      (**(code **)(param_1[0x19] + 8))(param_1 + 0x19,uVar4,1);
    }
    if (param_3 != 0) {
      FUN_1812e8980(param_1);
    }
  }
}



############ FUN_ 1812e9110 size=567 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e9110(longlong *param_1,undefined8 param_2)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  uint *puVar6;
  longlong lVar7;
  undefined1 auStack_b8 [32];
  longlong local_98 [2];
  undefined8 local_88;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  longlong local_78 [2];
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined **local_58;
  longlong local_50;
  longlong *local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  
  local_78[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  FUN_1812dc020(param_2,local_98);
  puVar4 = (undefined8 *)
           (**(code **)(*(longlong *)param_1[0x33] + 8))((longlong *)param_1[0x33],&local_48);
  (**(code **)(*(longlong *)*puVar4 + 0x20))((longlong *)*puVar4,local_78,puVar4 + 1);
  (**(code **)(*local_48 + 0xb0))(local_48,local_40);
  lVar7 = 0;
  if (local_78[0] == local_98[0]) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(local_78[0]);
  }
  puVar6 = (uint *)(local_78[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (iVar3 != 0) {
    if ((*(uint *)(local_98[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_98[0] + -0x10) = *(int *)(local_98[0] + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = param_1[0x36];
    param_1[0x36] = local_98[0];
    UNLOCK();
    puVar6 = (uint *)(lVar2 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    local_58 = &PTR_vftable_18262b560;
    local_50 = local_98[0];
    if ((*(uint *)(local_98[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_98[0] + -0x10) = *(int *)(local_98[0] + -0x10) + 1;
      UNLOCK();
    }
    FUN_1813516e0(param_1 + 0x33,&local_58);
    (**(code **)(*local_58 + 0xb0))(local_58,&local_50);
    uStack_7c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_80 = (undefined4)param_1[5];
    local_88 = 0;
    local_68 = 0;
    uStack_64 = 0;
    uStack_60 = uStack_80;
    uStack_5c = uStack_7c;
    FUN_181342870(param_1,&local_68,1);
    if (*(code **)(*param_1 + 0x168) != FUN_1812e98c0) {
      (**(code **)(*param_1 + 0x168))(param_1);
    }
    lVar2 = param_1[0x3c];
    lVar5 = lVar7;
    if (lVar2 != 0) {
      lVar5 = *(longlong *)(lVar2 + 0x10);
    }
    if (lVar5 != 0) {
      if (lVar2 != 0) {
        lVar7 = *(longlong *)(lVar2 + 0x10);
      }
      (**(code **)(param_1[0x19] + 8))(param_1 + 0x19,lVar7,1);
    }
  }
  puVar6 = (uint *)(local_98[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
}



############ FUN_ 1804f4ac0 size=1326 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804f4ac0(longlong param_1,undefined8 param_2,undefined8 *param_3,int param_4,char param_5)

{
  int *piVar1;
  uint uVar2;
  undefined1 *puVar3;
  undefined1 *puVar4;
  errno_t eVar5;
  int iVar6;
  undefined8 *puVar7;
  uint *puVar8;
  longlong lVar9;
  undefined1 uVar10;
  bool bVar11;
  bool bVar12;
  undefined1 auStack_148 [32];
  undefined4 *local_128;
  undefined1 *local_120;
  undefined1 *local_118;
  longlong local_110 [2];
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined8 local_f8;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  undefined4 *local_d0;
  undefined8 *local_c8;
  tm local_c0;
  undefined8 local_98;
  undefined8 local_90;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  int local_68;
  int iStack_64;
  int iStack_60;
  int iStack_5c;
  int local_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  int local_48;
  ulonglong local_40;
  
  local_98 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_148;
  local_128 = (undefined4 *)((ulonglong)local_128 & 0xffffffff00000000);
  lVar9 = param_1 + 0xb0;
  if (param_1 == 0) {
    lVar9 = 0;
  }
  FUN_1812299e0(*(undefined8 *)(param_1 + 0xd8),lVar9);
  if ((param_5 != *(char *)(param_1 + 0x104)) || (param_4 != *(int *)(param_1 + 0x100))) {
    *(int *)(param_1 + 0x100) = param_4;
    *(char *)(param_1 + 0x104) = param_5;
    uStack_fc = *(undefined4 *)(param_1 + 0x2c);
    uStack_100 = *(undefined4 *)(param_1 + 0x28);
    local_110[1] = 0;
    local_88 = 0;
    uStack_84 = 0;
    uStack_80 = uStack_100;
    uStack_7c = uStack_fc;
    FUN_181342870(param_1,&local_88,1);
  }
  local_118 = &DAT_1821dbf98;
  local_120 = &DAT_1821dbf98;
  local_128 = (undefined4 *)&DAT_1821dbf98;
  if (param_3 != (undefined8 *)0x0) {
    local_90 = *param_3;
    puVar7 = (undefined8 *)FUN_181245100(param_2,&local_e8);
    local_118 = (undefined1 *)*puVar7;
    *puVar7 = &DAT_1821dbf98;
    puVar8 = (uint *)(local_e8 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    puVar7 = (undefined8 *)FUN_181240c90(&local_e0,param_3[1]);
    local_120 = (undefined1 *)*puVar7;
    *puVar7 = &DAT_1821dbf98;
    puVar8 = (uint *)(local_e0 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    FUN_18049c4e0(local_110,"%d %b \'%y %H:%M");
    local_d8 = (longlong)param_3[2] / 1000;
    eVar5 = _localtime64_s(&local_c0,&local_d8);
    if (eVar5 != 0) {
      local_c0.tm_sec = 0;
      local_c0.tm_min = 0;
      local_c0.tm_hour = 0;
      local_c0.tm_mday = 0;
      local_c0.tm_mon = 0;
      local_c0.tm_year = 0;
      local_c0.tm_wday = 0;
      local_c0.tm_yday = 0;
      local_c0.tm_isdst = 0;
    }
    local_68 = local_c0.tm_sec;
    iStack_64 = local_c0.tm_min;
    iStack_60 = local_c0.tm_hour;
    iStack_5c = local_c0.tm_mday;
    local_58 = local_c0.tm_mon;
    iStack_54 = local_c0.tm_year;
    iStack_50 = local_c0.tm_wday;
    iStack_4c = local_c0.tm_yday;
    local_48 = local_c0.tm_isdst;
    FUN_181229320(&local_d0,local_110,&local_68);
    local_128 = local_d0;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar11 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar11) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    puVar8 = (uint *)(local_110[0] + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  puVar4 = local_118;
  puVar3 = local_120;
  if ((local_118 == *(undefined1 **)(param_1 + 0xe0)) ||
     (iVar6 = FUN_18049bb30(local_118), iVar6 == 0)) {
    if (*(undefined1 **)(param_1 + 0xe8) == puVar3) {
      iVar6 = 0;
    }
    else {
      iVar6 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0xe8),puVar3);
    }
    if (iVar6 != 0) goto LAB_1804f4d92;
    if (*(undefined4 **)(param_1 + 0xf0) == local_128) {
      iVar6 = 0;
    }
    else {
      iVar6 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0xf0),local_128);
    }
    if (iVar6 != 0) goto LAB_1804f4d92;
  }
  else {
LAB_1804f4d92:
    uVar10 = 1;
    if ((*(uint *)(puVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(puVar4 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar9 = *(longlong *)(param_1 + 0xe0);
    *(longlong *)(param_1 + 0xe0) = (longlong)local_118;
    UNLOCK();
    puVar8 = (uint *)(lVar9 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if ((*(uint *)(local_120 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_120 + -0x10) = *(int *)(local_120 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar9 = *(longlong *)(param_1 + 0xe8);
    *(longlong *)(param_1 + 0xe8) = (longlong)local_120;
    UNLOCK();
    puVar8 = (uint *)(lVar9 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if ((local_128[-4] & 0x30000000) == 0) {
      LOCK();
      local_128[-4] = local_128[-4] + 1;
      UNLOCK();
    }
    LOCK();
    lVar9 = *(longlong *)(param_1 + 0xf0);
    *(longlong *)(param_1 + 0xf0) = (longlong)local_128;
    UNLOCK();
    puVar8 = (uint *)(lVar9 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    local_c8 = *(undefined8 **)(param_1 + 0xf8);
    *(undefined8 *)(param_1 + 0xf8) = 0;
    if (local_c8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_c8 + 1);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)*local_c8)(local_c8,1);
      }
    }
    if ((param_3 == (undefined8 *)0x0) || (*(char *)(param_3 + 4) == '\0')) {
      uVar10 = 0;
    }
    *(undefined1 *)(param_1 + 0x105) = uVar10;
    uStack_ec = *(undefined4 *)(param_1 + 0x2c);
    uStack_f0 = *(undefined4 *)(param_1 + 0x28);
    local_f8 = 0;
    local_78 = 0;
    uStack_74 = 0;
    uStack_70 = uStack_f0;
    uStack_6c = uStack_ec;
    FUN_181342870(param_1,&local_78,1);
  }
  if (*(undefined1 **)(param_1 + 0xe0) != &DAT_1821dbf98) {
    iVar6 = FUN_18049bb30(*(undefined8 *)(param_1 + 0xe0),&DAT_1821dbf98);
    if (((iVar6 != 0) && (*(longlong *)(param_1 + 0xf8) == 0)) &&
       (*(char *)(param_1 + 0x105) == '\0')) {
      bVar11 = true;
      goto LAB_1804f4f12;
    }
  }
  bVar11 = false;
LAB_1804f4f12:
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar12 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar12) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((bVar11) && (FUN_1804f5070(param_1,1), *(longlong *)(param_1 + 0xf8) == 0)) {
    FUN_181229aa0(*(undefined8 *)(param_1 + 0xd8),param_1 + 0xb0);
  }
  puVar8 = local_128 + -4;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_120 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_118 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
}



############ FUN_ 1812ef770 size=434 ############

undefined8 FUN_1812ef770(longlong *param_1)

{
  longlong lVar1;
  int iVar2;
  
  lVar1 = *param_1;
  if (lVar1 != DAT_182673b58) {
    iVar2 = FUN_18048cbc0(lVar1);
    if (iVar2 != 0) {
      if (lVar1 != DAT_182673bf0) {
        iVar2 = FUN_18048cbc0(lVar1);
        if (iVar2 != 0) {
          if (lVar1 != DAT_182673c18) {
            iVar2 = FUN_18048cbc0(lVar1);
            if (iVar2 != 0) {
              if (lVar1 != DAT_182673be8) {
                iVar2 = FUN_18048cbc0(lVar1);
                if (iVar2 != 0) {
                  if (lVar1 != DAT_182673c00) {
                    iVar2 = FUN_18048cbc0(lVar1);
                    if (iVar2 != 0) {
                      if (lVar1 != DAT_182673be0) {
                        iVar2 = FUN_18048cbc0(lVar1);
                        if (iVar2 != 0) {
                          if (lVar1 != DAT_182673bd0) {
                            iVar2 = FUN_18048cbc0(lVar1);
                            if (iVar2 != 0) {
                              if (lVar1 != DAT_182673bf8) {
                                iVar2 = FUN_18048cbc0(lVar1);
                                if (iVar2 != 0) {
                                  if (lVar1 != DAT_182673c10) {
                                    iVar2 = FUN_18048cbc0(lVar1);
                                    if (iVar2 != 0) {
                                      return 9;
                                    }
                                  }
                                  return 8;
                                }
                              }
                              return 7;
                            }
                          }
                          return 6;
                        }
                      }
                      return 5;
                    }
                  }
                  return 4;
                }
              }
              return 3;
            }
          }
          return 2;
        }
      }
      return 1;
    }
  }
  return 0;
}



############ FUN_ 1812efa60 size=115 ############

longlong * FUN_1812efa60(undefined8 *param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  int iVar4;
  longlong lVar5;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  if (0 < iVar1) {
    lVar2 = *param_2;
    lVar5 = 0;
    param_1 = (undefined8 *)*param_1;
    do {
      plVar3 = (longlong *)*param_1;
      if (*plVar3 == lVar2) {
        return plVar3;
      }
      iVar4 = FUN_18048cbc0(*plVar3,lVar2);
      if (iVar4 == 0) {
        return plVar3;
      }
      lVar5 = lVar5 + 1;
      param_1 = param_1 + 1;
    } while (lVar5 < iVar1);
  }
  return (longlong *)0x0;
}



############ FUN_ 1804ff450 size=142 ############

void FUN_1804ff450(longlong param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 uVar2;
  undefined **local_20;
  longlong local_18;
  
  uVar2 = 0xfffffffffffffffe;
  if (*param_2 == DAT_182673c10) {
    iVar1 = 0;
  }
  else {
    iVar1 = FUN_18048cbc0(*param_2);
  }
  if ((iVar1 == 0) && (local_18 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x18), local_18 != 0))
  {
    local_20 = juce::MarkerListScope::vftable;
    (**(code **)(*param_3 + 8))(param_3,&local_20);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_18123aff0(param_1,param_2,param_3,param_4,uVar2);
}



############ FUN_ 1804ff750 size=284 ############

void FUN_1804ff750(longlong param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  longlong *plVar6;
  undefined **local_40;
  longlong local_38;
  undefined8 local_30;
  undefined8 local_28;
  
  lVar2 = *param_2;
  if (lVar2 == DAT_182673c10) {
    iVar5 = 0;
  }
  else {
    iVar5 = FUN_18048cbc0(lVar2);
  }
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x18);
  local_38 = lVar3;
  if (iVar5 != 0) {
    if (lVar3 != 0) {
      plVar6 = *(longlong **)(lVar3 + 0x40);
      plVar1 = plVar6 + *(int *)(lVar3 + 0x4c);
      for (; plVar6 != plVar1; plVar6 = plVar6 + 1) {
        lVar4 = *plVar6;
        iVar5 = FUN_18048cbc0(*(undefined8 *)(lVar4 + 0x10),lVar2);
        local_38 = lVar4;
        if (iVar5 == 0) goto LAB_1804ff7ee;
      }
    }
    local_38 = 0;
  }
LAB_1804ff7ee:
  if (local_38 == 0) {
    if (lVar3 != 0) {
      FUN_1812eedd0(*(undefined8 *)(param_1 + 0x10),lVar3);
    }
    FUN_1812eedd0(*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 8));
    **(undefined1 **)(param_1 + 0x18) = 0;
  }
  else {
    local_28 = *(undefined8 *)(param_1 + 0x18);
    local_30 = *(undefined8 *)(param_1 + 0x10);
    local_40 = juce::RelativeCoordinatePositionerBase::DependencyFinderScope::vftable;
    (**(code **)(*param_3 + 8))(param_3,&local_40);
  }
  return;
}



############ FUN_ 180500180 size=458 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180500180(undefined8 *param_1,undefined8 *param_2)

{
  uint uVar1;
  longlong *plVar2;
  int iVar3;
  uint *puVar4;
  undefined1 auStack_88 [32];
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50 [2];
  undefined8 *local_40;
  undefined8 *local_38;
  ulonglong local_30;
  
  local_50[1] = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_40 = param_1;
  local_38 = param_2;
  (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,&local_68,param_2 + 1);
  (**(code **)(*(longlong *)*param_1 + 0x20))((longlong *)*param_1,&local_58,param_1 + 1);
  iVar3 = FUN_18048cbc0(local_58,local_68);
  puVar4 = (uint *)(local_58 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_68 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (iVar3 < 1) {
    (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,&local_60,param_2 + 1);
    (**(code **)(*(longlong *)*param_1 + 0x20))((longlong *)*param_1,local_50,param_1 + 1);
    iVar3 = FUN_18048cbc0(local_50[0],local_60);
    puVar4 = (uint *)(local_50[0] + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    puVar4 = (uint *)(local_60 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    plVar2 = (longlong *)*param_1;
    if (iVar3 < 0) {
      (**(code **)(*plVar2 + 0xb0))();
      (**(code **)(*(longlong *)*param_2 + 0xb0))((longlong *)*param_2,param_2 + 1);
    }
    else {
      (**(code **)(*plVar2 + 0xb0))(plVar2,param_1 + 1);
      (**(code **)(*(longlong *)*param_2 + 0xb0))((longlong *)*param_2,param_2 + 1);
    }
  }
  else {
    (**(code **)(*(longlong *)*param_1 + 0xb0))((longlong *)*param_1,param_1 + 1);
    (**(code **)(*(longlong *)*param_2 + 0xb0))((longlong *)*param_2,param_2 + 1);
  }
}



############ FUN_ 180502100 size=294 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180502100(longlong param_1)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *puVar4;
  undefined4 uVar5;
  undefined1 auStack_58 [32];
  longlong local_38;
  longlong local_30 [2];
  longlong *local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_30[1] = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  if (*(longlong *)(param_1 + 0x250) != 0) {
    (**(code **)(**(longlong **)(param_1 + 0x38) + 8))(*(longlong **)(param_1 + 0x38),&local_20);
    uVar5 = (**(code **)(*local_20 + 0x18))(local_20,local_18);
    (**(code **)(**(longlong **)(param_1 + 0x18) + 0x178))
              (*(longlong **)(param_1 + 0x18),&local_38,uVar5);
    (**(code **)(*local_20 + 0xb0))(local_20,local_18);
    plVar3 = (longlong *)FUN_1812ea010(*(undefined8 *)(param_1 + 0x250),local_30);
    if (local_38 == *plVar3) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_18048cbc0(local_38,*plVar3);
    }
    puVar4 = (uint *)(local_30[0] + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    if (iVar2 != 0) {
      FUN_181349c50(*(undefined8 *)(param_1 + 0x250),&local_38,0);
    }
    puVar4 = (uint *)(local_38 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
}



############ FUN_ 18124efb0 size=1276 ############

void FUN_18124efb0(longlong *param_1,longlong param_2,float *param_3)

{
  int *piVar1;
  float *pfVar2;
  float fVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 *puVar6;
  bool bVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  char cVar13;
  int iVar14;
  longlong *plVar15;
  longlong *plVar16;
  undefined8 *puVar17;
  float *pfVar18;
  undefined8 *puVar19;
  int iVar20;
  longlong lVar21;
  bool bVar22;
  undefined4 uVar23;
  float fVar24;
  float fVar25;
  undefined8 *local_res20;
  float local_150;
  float local_14c;
  float local_148;
  float local_144;
  float local_140;
  float local_13c;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  float *local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined1 local_f8;
  
  plVar16 = *(longlong **)(param_2 + 8);
  plVar15 = (longlong *)(**(code **)(*plVar16 + 0xd8))(plVar16);
  puVar19 = (undefined8 *)*plVar15;
  if (puVar19 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(puVar19 + 1) = *(int *)(puVar19 + 1) + 1;
    UNLOCK();
  }
  fVar12 = DAT_1824c4608;
  fVar11 = DAT_1824c4604;
  fVar10 = DAT_1824c4600;
  fVar9 = DAT_1824c45fc;
  fVar8 = DAT_1824c41e0;
  fVar25 = DAT_1824c3d54;
  bVar22 = false;
  iVar20 = 0;
  local_res20 = puVar19;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    lVar21 = 0;
    do {
      plVar15 = (longlong *)(lVar21 + *param_1);
      lVar4 = *plVar15;
      if (*(char *)(lVar4 + 0x38) != '\0') {
        local_138 = *(undefined8 *)param_3;
        uStack_130 = *(undefined8 *)(param_3 + 2);
        local_128 = *(undefined8 *)(param_3 + 4);
        if (*(float *)(lVar4 + 0x34) == 0.0) {
          plVar16 = (longlong *)FUN_181252280(plVar15);
          lVar5 = *plVar15;
          uVar23 = (**(code **)(*plVar16 + 0x10))(plVar16);
          *(undefined4 *)(lVar5 + 0x34) = uVar23;
        }
        fVar25 = (*(float *)(lVar4 + 0x28) -
                 *(float *)(*plVar15 + 0x34) * *(float *)(*plVar15 + 0x28)) * fVar25;
        fVar3 = *(float *)(plVar15 + 2);
        fVar24 = fVar3 + *(float *)(plVar15 + 3);
        if ((iVar20 < *(int *)((longlong)param_1 + 0xc) + -1) &&
           (*(float *)(lVar21 + 0x34 + *param_1) == *(float *)((longlong)plVar15 + 0x14))) {
          fVar24 = *(float *)(lVar21 + 0x30 + *param_1);
        }
        local_118 = (float *)0x0;
        local_110 = 0;
        local_108 = 0;
        uStack_100 = 0;
        local_f8 = 1;
        FUN_18129d850(&local_118,fVar3,fVar25 * fVar8 + *(float *)((longlong)plVar15 + 0x14),
                      fVar24 - fVar3,fVar25);
        cVar13 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
        if (cVar13 != '\0') goto LAB_18124f212;
        pfVar2 = local_118 + local_110._4_4_;
        bVar22 = local_118 == pfVar2;
        pfVar18 = local_118;
        goto LAB_18124f1ba;
      }
      if (*(char *)((longlong)plVar15 + 0x1c) == '\0') {
        puVar6 = (undefined8 *)*plVar15;
        if (puVar19 == puVar6) {
LAB_18124f2bd:
          bVar7 = true;
        }
        else {
          if (((*(float *)(puVar19 + 5) == *(float *)(puVar6 + 5)) &&
              (*(char *)(puVar19 + 7) == *(char *)(puVar6 + 7))) &&
             ((*(float *)((longlong)puVar19 + 0x2c) == *(float *)((longlong)puVar6 + 0x2c) &&
              (*(float *)(puVar19 + 6) == *(float *)(puVar6 + 6))))) {
            if (puVar19[3] == puVar6[3]) {
              iVar14 = 0;
            }
            else {
              iVar14 = FUN_18048cbc0(puVar19[3],puVar6[3]);
            }
            if (iVar14 == 0) {
              if (puVar19[4] == puVar6[4]) {
                iVar14 = 0;
              }
              else {
                iVar14 = FUN_18048cbc0(puVar19[4],puVar6[4]);
              }
              if (iVar14 == 0) goto LAB_18124f2bd;
            }
          }
          bVar7 = false;
        }
        if (!bVar7) {
          if (puVar6 == (undefined8 *)0x0) {
            local_res20 = (undefined8 *)0x0;
            puVar17 = local_res20;
            if (puVar19 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar19 + 1);
              iVar14 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar14 == 1) {
                puVar17 = (undefined8 *)*puVar19;
LAB_18124f327:
                (*(code *)*puVar17)(puVar19,1);
                puVar17 = local_res20;
              }
            }
          }
          else {
            puVar17 = local_res20;
            if (puVar19 != puVar6) {
              LOCK();
              *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
              UNLOCK();
              puVar17 = puVar6;
              if (local_res20 != (undefined8 *)0x0) {
                LOCK();
                piVar1 = (int *)(local_res20 + 1);
                iVar14 = *piVar1;
                *piVar1 = *piVar1 + -1;
                UNLOCK();
                if (iVar14 == 1) {
                  puVar17 = (undefined8 *)*local_res20;
                  puVar19 = local_res20;
                  local_res20 = puVar6;
                  goto LAB_18124f327;
                }
              }
            }
          }
          local_res20 = puVar17;
          if (!bVar22) {
            bVar22 = true;
            (**(code **)(*plVar16 + 0x68))(plVar16);
          }
          (**(code **)(*plVar16 + 0xd0))(plVar16,&local_res20);
        }
        fVar3 = param_3[4];
        local_144 = param_3[3];
        local_13c = fVar3 * *(float *)((longlong)plVar15 + 0x14) +
                    local_144 * *(float *)(plVar15 + 2) + param_3[5];
        local_140 = local_144 * 0.0 + fVar3;
        local_144 = fVar3 * 0.0 + local_144;
        local_150 = *param_3;
        fVar3 = param_3[1];
        local_148 = local_150 * *(float *)(plVar15 + 2) +
                    fVar3 * *(float *)((longlong)plVar15 + 0x14) + param_3[2];
        local_14c = local_150 * 0.0 + fVar3;
        local_150 = fVar3 * 0.0 + local_150;
        (**(code **)(*plVar16 + 0xe0))(plVar16,*(undefined4 *)((longlong)plVar15 + 0xc),&local_150);
        puVar19 = local_res20;
      }
      iVar20 = iVar20 + 1;
      lVar21 = lVar21 + 0x20;
    } while (iVar20 < *(int *)((longlong)param_1 + 0xc));
    if (bVar22) {
      (**(code **)(*plVar16 + 0x70))(plVar16);
      puVar19 = local_res20;
    }
  }
  if (puVar19 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar19 + 1);
    iVar20 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar20 == 1) {
      (**(code **)*puVar19)(puVar19,1);
    }
  }
  return;
LAB_18124f1ba:
  if (bVar22) {
LAB_18124f212:
    local_110 = local_110 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_118);
  }
  fVar25 = *pfVar18;
  if (fVar25 != fVar10) {
    if (((fVar25 == fVar9) || (fVar25 == fVar11)) || (fVar25 == fVar12)) {
      (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                (*(longlong **)(param_2 + 8),&local_118,&local_138);
      goto LAB_18124f212;
    }
    pfVar18 = pfVar18 + 1;
    bVar22 = pfVar18 == pfVar2;
    goto LAB_18124f1ba;
  }
  pfVar18 = pfVar18 + 3;
  bVar22 = pfVar18 == pfVar2;
  goto LAB_18124f1ba;
}



############ FUN_ 181329a30 size=479 ############

longlong * FUN_181329a30(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  int iVar4;
  bool bVar5;
  undefined1 *local_res8;
  longlong local_res10;
  longlong local_88;
  undefined1 local_80 [16];
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  void *local_50;
  undefined4 local_44;
  
  *param_2 = 0;
  param_2[1] = 0;
  plVar3 = *(longlong **)(param_1 + 0x20);
  if (plVar3 == plVar3 + (longlong)*(int *)(param_1 + 0x2c) * 9) {
    return param_2;
  }
  local_88 = *plVar3;
  if ((*(uint *)(local_88 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_88 + -0x10) = *(int *)(local_88 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18123aa50(local_80,plVar3 + 1,param_3,param_4,0xfffffffffffffffe);
  local_70 = 0;
  local_68 = 0;
  FUN_18048c4c0(&local_70,plVar3[3],*(undefined4 *)((longlong)plVar3 + 0x24));
  local_60 = 0;
  local_58 = 0;
  FUN_18048c4c0(&local_60,plVar3[5],*(undefined4 *)((longlong)plVar3 + 0x34));
  FUN_18049ad40(&local_50,plVar3 + 7);
  iVar4 = FUN_181214d80(&local_88);
  FUN_1812490c0(&local_88,&local_res10,0,iVar4 + -1);
  iVar4 = FUN_18048cbc0(local_res10,&DAT_1821dbb88);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar4 == 0) {
    FUN_181214270(&local_res8,&local_88);
    iVar2 = *(int *)((longlong)param_2 + 0xc);
    iVar4 = iVar2 + 1;
    if ((int)param_2[1] < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iVar2 + 2;
      }
      FUN_18048a300(param_2,iVar2 + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iVar4 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar4 + 1;
    *(undefined1 **)(*param_2 + (longlong)iVar4 * 8) = local_res8;
    local_res8 = &DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar1 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar5 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar1;
      if (bVar5) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  FUN_180488f10(&local_50);
  local_44 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1812146f0 size=115 ############

bool FUN_1812146f0(undefined8 param_1)

{
  int *_Memory;
  int iVar1;
  int iVar2;
  longlong local_res8;
  
  iVar2 = FUN_181214d80();
  FUN_1812490c0(param_1,&local_res8,0,iVar2 + -1);
  iVar2 = FUN_18048cbc0(local_res8,&DAT_1821dbb88);
  _Memory = (int *)(local_res8 + -0x10);
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar2 == 0;
}



############ FUN_ 1812ebc40 size=280 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812ebc40(longlong param_1)

{
  uint *_Memory;
  uint uVar1;
  undefined4 uVar2;
  longlong *plVar3;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_38[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  plVar3 = *(longlong **)(param_1 + 0x138);
  if ((undefined **)*plVar3 == juce::SimpleValueSource::vftable) {
    local_28 = (longlong *)plVar3[6];
    (**(code **)(*local_28 + 0xb8))(local_28,local_20,plVar3 + 7);
  }
  else {
    (*(code *)((undefined **)*plVar3)[1])(plVar3,&local_28);
  }
  uVar2 = (**(code **)(*local_28 + 8))(local_28,local_20);
  plVar3 = (longlong *)FUN_1812ebf60(param_1,uVar2);
  (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  if (plVar3 != (longlong *)0x0) {
    FUN_1812ea010(*(undefined8 *)(param_1 + 0x170),local_38);
    if (local_38[0] != *plVar3) {
      FUN_18048cbc0(local_38[0],*plVar3);
    }
    _Memory = (uint *)(local_38[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
}



############ FUN_ 180549a20 size=91 ############

undefined8 FUN_180549a20(longlong *param_1,longlong *param_2)

{
  int iVar1;
  
  if ((*param_1 != *param_2) && (iVar1 = FUN_18048cbc0(*param_1,*param_2), iVar1 != 0)) {
    return 0;
  }
  if ((param_1[1] != param_2[1]) && (iVar1 = FUN_18048cbc0(param_1[1],param_2[1]), iVar1 != 0)) {
    return 0;
  }
  return 1;
}



############ FUN_ 18054e1c0 size=261 ############

ulonglong FUN_18054e1c0(longlong param_1,undefined8 param_2,char param_3)

{
  int iVar1;
  undefined8 uVar2;
  int iVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  
  uVar5 = 0;
  lVar4 = __RTDynamicCast(param_2,0,&juce::AudioIODevice::RTTI_Type_Descriptor,
                          &juce::WasapiClasses::WASAPIAudioIODevice::RTTI_Type_Descriptor,0);
  if (lVar4 == 0) {
    return 0xffffffff;
  }
  if (param_3 == '\0') {
    uVar2 = *(undefined8 *)(lVar4 + 0x228);
    iVar1 = *(int *)(param_1 + 100);
    if (0 < iVar1) {
      puVar7 = *(undefined8 **)(param_1 + 0x58);
      uVar6 = uVar5;
      do {
        iVar3 = FUN_18048cbc0(uVar2,*puVar7);
        if (iVar3 == 0) {
          return uVar6;
        }
        uVar6 = (ulonglong)((int)uVar6 + 1);
        uVar5 = uVar5 + 1;
        puVar7 = puVar7 + 1;
      } while ((longlong)uVar5 < (longlong)iVar1);
    }
  }
  else {
    uVar2 = *(undefined8 *)(lVar4 + 0x230);
    iVar1 = *(int *)(param_1 + 0x84);
    if (0 < iVar1) {
      puVar7 = *(undefined8 **)(param_1 + 0x78);
      uVar6 = uVar5;
      do {
        iVar3 = FUN_18048cbc0(uVar2,*puVar7);
        if (iVar3 == 0) {
          return uVar6;
        }
        uVar6 = (ulonglong)((int)uVar6 + 1);
        uVar5 = uVar5 + 1;
        puVar7 = puVar7 + 1;
      } while ((longlong)uVar5 < (longlong)iVar1);
    }
  }
  return 0xffffffff;
}



############ FUN_ 180551ab0 size=1162 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180551ab0(undefined4 *param_1,longlong *param_2,undefined8 *param_3,longlong *param_4)

{
  uint uVar1;
  undefined4 *puVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 *puVar6;
  uint *puVar7;
  char *pcVar8;
  void *_Dst;
  undefined4 **ppuVar9;
  longlong lVar10;
  undefined1 auStack_148 [32];
  char **local_128;
  char *local_120;
  longlong local_118;
  longlong *local_110;
  char **local_108;
  char *local_100;
  undefined8 *local_f8;
  longlong local_f0;
  longlong local_e8;
  uint *local_e0;
  longlong *local_d8;
  longlong local_d0;
  char *local_c8;
  undefined4 *local_c0;
  longlong *local_b8;
  longlong *local_b0;
  undefined8 local_a8;
  longlong local_a0;
  longlong local_98;
  undefined8 local_90;
  longlong local_88;
  undefined4 *local_80;
  undefined4 *local_78;
  undefined4 local_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined1 local_41;
  ulonglong local_40;
  
  local_a8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_148;
  local_110 = param_2;
  local_f8 = param_3;
  local_c0 = param_1;
  local_b8 = param_4;
  local_b0 = param_2;
  plVar4 = (longlong *)FUN_181248e40(param_2,&local_d0);
  local_a0 = *param_2;
  *param_2 = *plVar4;
  *plVar4 = local_a0;
  puVar7 = (uint *)(local_d0 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  pcVar8 = (char *)*param_2;
  if (*pcVar8 != '\0') {
    local_e0 = (uint *)(pcVar8 + -0x10);
    if ((*local_e0 & 0x30000000) == 0) {
      LOCK();
      *local_e0 = *local_e0 + 1;
      UNLOCK();
    }
    local_108 = (char **)CONCAT44(local_108._4_4_,2);
    local_c8 = pcVar8;
    while( true ) {
      lVar5 = *param_2;
      local_128 = (char **)((ulonglong)local_128 & 0xffffffff00000000);
      lVar10 = 0;
      local_98 = lVar5;
      if (*(int *)((longlong)local_f8 + 0xc) < 1) break;
      puVar6 = (undefined8 *)*local_f8;
      while( true ) {
        local_90 = *puVar6;
        iVar3 = FUN_18048cbc0(lVar5);
        if (iVar3 == 0) break;
        local_128 = (char **)CONCAT44(local_128._4_4_,(int)local_128 + 1);
        lVar10 = lVar10 + 1;
        puVar6 = puVar6 + 1;
        if (*(int *)((longlong)local_f8 + 0xc) <= lVar10) goto LAB_180551bf7;
      }
      if ((int)local_128 < 0) break;
      lVar5 = FUN_181233e10(&local_40,(ulonglong)local_108 & 0xffffffff);
      FUN_180495150(&local_f0,lVar5,&local_41 + -lVar5);
      local_120 = local_c8;
      if ((*local_e0 & 0x30000000) == 0) {
        LOCK();
        *local_e0 = *local_e0 + 1;
        UNLOCK();
      }
      local_128 = &local_120;
      lVar5 = -1;
      do {
        lVar10 = lVar5;
        lVar5 = lVar10 + 1;
      } while (local_c8[lVar5] != '\0');
      FUN_1812342b0(&local_120,lVar10 + 3);
      pcVar8 = local_120 + (int)lVar5;
      memcpy(pcVar8,&DAT_182496880,2);
      pcVar8[2] = '\0';
      iVar3 = (int)local_108;
      local_100 = local_120;
      if ((*(uint *)(local_120 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_120 + -0x10) = *(int *)(local_120 + -0x10) + 1;
        UNLOCK();
      }
      puVar7 = (uint *)(local_120 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      local_108 = &local_100;
      plVar4 = (longlong *)FUN_181232d30(&local_100,&local_f0);
      local_118 = *plVar4;
      if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
        UNLOCK();
      }
      puVar7 = (uint *)(local_100 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      local_d8 = &local_118;
      local_108 = (char **)CONCAT44(local_108._4_4_,iVar3 + 1);
      lVar5 = -1;
      do {
        lVar10 = lVar5;
        lVar5 = lVar10 + 1;
      } while (*(char *)(local_118 + lVar5) != '\0');
      FUN_1812342b0(&local_118,lVar10 + 2);
      _Dst = (void *)((int)lVar5 + local_118);
      memcpy(_Dst,&DAT_182496890,1);
      *(undefined1 *)((longlong)_Dst + 1) = 0;
      local_d8 = (longlong *)local_118;
      if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
        UNLOCK();
      }
      puVar7 = (uint *)(local_118 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      local_88 = *local_110;
      *local_110 = local_118;
      puVar7 = (uint *)(local_88 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      puVar7 = (uint *)(local_f0 + -0x10);
      param_2 = local_110;
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
LAB_180551bf7:
    local_e8 = *local_110;
    if ((*(uint *)(local_e8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_e8 + -0x10) = *(int *)(local_e8 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18122dc00(local_f8,&local_e8);
    plVar4 = local_b8;
    if (local_c0 == (undefined4 *)0x0) {
      local_80 = local_c0;
      local_78 = local_c0;
      ppuVar9 = &local_80;
    }
    else {
      local_70 = *local_c0;
      uStack_6c = local_c0[1];
      uStack_68 = local_c0[2];
      uStack_64 = local_c0[3];
      ppuVar9 = (undefined4 **)&local_70;
    }
    iVar3 = *(int *)((longlong)local_b8 + 0xc) + 1;
    if ((int)local_b8[1] < iVar3) {
      FUN_18049ba20(local_b8,*(int *)((longlong)local_b8 + 0xc) + 9 + iVar3 / 2 & 0xfffffff8);
    }
    iVar3 = *(int *)((longlong)plVar4 + 0xc);
    *(int *)((longlong)plVar4 + 0xc) = iVar3 + 1;
    puVar6 = (undefined8 *)((longlong)iVar3 * 0x10 + *plVar4);
    puVar2 = ppuVar9[1];
    *puVar6 = *ppuVar9;
    puVar6[1] = puVar2;
    param_2 = local_110;
    if ((*local_e0 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *local_e0;
      *local_e0 = *local_e0 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(local_e0);
      }
    }
  }
  puVar7 = (uint *)(*param_2 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
}



############ FUN_ 18122dd20 size=134 ############

undefined8 FUN_18122dd20(undefined8 *param_1,longlong *param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  
  if (*(int *)((longlong)param_1 + 0xc) != *(int *)((longlong)param_2 + 0xc)) {
    return 0;
  }
  plVar3 = (longlong *)*param_2;
  plVar4 = (longlong *)*param_1;
  plVar1 = plVar3 + *(int *)((longlong)param_2 + 0xc);
  while( true ) {
    if (plVar3 == plVar1) {
      return 1;
    }
    if (*plVar4 == *plVar3) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
    }
    plVar4 = plVar4 + 1;
    if (iVar2 != 0) break;
    plVar3 = plVar3 + 1;
  }
  return 0;
}



############ FUN_ 1805714d0 size=189 ############

undefined8 * FUN_1805714d0(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_1805730d0(param_1);
  FUN_180573110(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 180573110 size=657 ############

undefined8 *
FUN_180573110(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_180574420(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_180574420(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_180574420(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_180574420(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_180574420(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_180574420(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_180574420(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_180574650(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 180574650 size=383 ############

undefined8 *
FUN_180574650(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined1 local_res8 [8];
  
  puVar5 = (undefined8 *)*param_1;
  bVar8 = true;
  puVar7 = puVar5;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar7 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar7[4]);
      bVar8 = iVar4 < 0;
      if (bVar8) {
        puVar6 = (undefined8 *)*puVar7;
      }
      else {
        puVar6 = (undefined8 *)puVar7[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  puVar6 = puVar7;
  if (bVar8 != false) {
    if (puVar7 == (undefined8 *)*puVar5) {
      puVar5 = (undefined8 *)FUN_180574420(param_1,local_res8,1,puVar7);
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar6[2] + 0x19);
        puVar5 = (undefined8 *)puVar6[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar5[2] + 0x19);
          puVar6 = puVar5;
          puVar5 = (undefined8 *)puVar5[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar5 = (undefined8 *)puVar7[1];
        puVar6 = puVar7;
        while ((puVar3 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar5 = (undefined8 *)puVar3[1];
          puVar6 = puVar3;
        }
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          puVar6 = puVar3;
        }
      }
    }
    else {
      puVar6 = (undefined8 *)puVar7[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar6[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_180574420(param_1,local_res8,bVar8,puVar7);
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
  }
  else {
    FUN_180573870();
    *param_2 = puVar6;
    *(undefined1 *)(param_2 + 1) = 0;
  }
  return param_2;
}



############ FUN_ 180564fc0 size=247 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$GainRangeScalingOptionComponent@VSoothe2GainRangeScalingOption@@@@::
     vtbl___AV__GainRangeScalingOptionComponent_VSoothe2GainRangeScalingOption____
               (longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *puVar4;
  undefined1 auStack_68 [32];
  longlong local_48;
  longlong local_40 [2];
  undefined8 *local_30;
  ulonglong local_28;
  
  local_40[1] = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_30 = param_3;
  plVar3 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 8) + 0x10))(*(longlong **)(param_1 + 8),local_40);
  if (*param_2 == *plVar3) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(*param_2,*plVar3);
  }
  puVar4 = (uint *)(local_40[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (iVar2 == 0) {
    (**(code **)(**(longlong **)(param_1 + 0x248) + 0x38))
              (*(longlong **)(param_1 + 0x248),&local_48,param_3);
    FUN_180568ed0(param_1 + -200,&local_48);
    puVar4 = (uint *)(local_48 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 180568ed0 size=164 ############

void FUN_180568ed0(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong *plVar6;
  
  plVar6 = *(longlong **)(param_1 + 0xf0);
  uVar5 = 0;
  uVar4 = (ulonglong)((longlong)(plVar6 + *(int *)(param_1 + 0xfc)) + (7 - (longlong)plVar6)) >> 3;
  if (plVar6 + *(int *)(param_1 + 0xfc) < plVar6) {
    uVar4 = uVar5;
  }
  if (uVar4 != 0) {
    do {
      lVar1 = *plVar6;
      lVar2 = *(longlong *)(lVar1 + 8);
      if (*param_2 == lVar2) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_18048cbc0(*param_2,lVar2);
      }
      FUN_181337080(lVar1,iVar3 == 0,0,0);
      plVar6 = plVar6 + 1;
      uVar5 = uVar5 + 1;
    } while (uVar5 != uVar4);
  }
  return;
}



############ FUN_ 180568f80 size=900 ############

void FUN_180568f80(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  undefined1 auVar2 [16];
  undefined4 uVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  undefined1 (*pauVar7) [16];
  longlong lVar8;
  uint *puVar9;
  undefined4 uVar10;
  longlong local_res8;
  undefined **local_60;
  longlong local_58;
  undefined1 local_50 [16];
  undefined1 local_40 [40];
  
  uVar10 = DAT_1824c3ea4;
  lVar8 = *param_2;
  if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar8 + -0x10) = *(int *)(lVar8 + -0x10) + 1;
    UNLOCK();
  }
  iVar6 = 0;
  if (lVar8 == DAT_182673808) {
    iVar5 = 0;
  }
  else {
    iVar5 = FUN_18048cbc0(lVar8);
  }
  uVar3 = DAT_1824c41e0;
  local_res8 = lVar8;
  if ((iVar5 == 0) && (cVar4 = FUN_18056a2c0(param_1), uVar10 = uVar3, cVar4 == '\0')) {
    if ((*(uint *)(DAT_1826737c0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_1826737c0 + -0x10) = *(int *)(DAT_1826737c0 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    local_res8 = DAT_1826737c0;
    UNLOCK();
    puVar9 = (uint *)(lVar8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  lVar8 = local_res8;
  if (local_res8 == DAT_1826737c0) {
    iVar5 = 0;
  }
  else {
    iVar5 = FUN_18048cbc0(local_res8);
  }
  uVar3 = DAT_1824c3fb0;
  if ((iVar5 == 0) && (cVar4 = FUN_18056a2c0(param_1), uVar10 = uVar3, cVar4 == '\0')) {
    if ((*(uint *)(DAT_182673918 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_182673918 + -0x10) = *(int *)(DAT_182673918 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    local_res8 = DAT_182673918;
    UNLOCK();
    puVar9 = (uint *)(lVar8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  lVar8 = local_res8;
  if (local_res8 == DAT_182673918) {
    iVar5 = 0;
  }
  else {
    iVar5 = FUN_18048cbc0(local_res8);
  }
  uVar3 = DAT_1824c3f10;
  if ((iVar5 == 0) && (cVar4 = FUN_18056a2c0(param_1), uVar10 = uVar3, cVar4 == '\0')) {
    if ((*(uint *)(DAT_1826738c8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(DAT_1826738c8 + -0x10) = *(int *)(DAT_1826738c8 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    local_res8 = DAT_1826738c8;
    UNLOCK();
    puVar9 = (uint *)(lVar8 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  if (local_res8 != DAT_1826738c8) {
    iVar6 = FUN_18048cbc0(local_res8);
  }
  if (iVar6 == 0) {
    uVar10 = DAT_1824c3ea4;
  }
  if ((undefined **)param_1[0x28] == Soothe2AudioProcessorEditor::vftable) {
    lVar8 = param_1[0x29];
  }
  else {
    lVar8 = (*(code *)((undefined **)param_1[0x28])[1])();
  }
  *(undefined4 *)(lVar8 + 0x88) = uVar10;
  FUN_180569310(param_1);
  local_60 = &PTR_vftable_18262b560;
  local_58 = local_res8;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  (**(code **)(param_1[0xa4] + 0x28))(param_1 + 0xa4,&local_60);
  if (param_1[0x90] != 0) {
    pauVar7 = (undefined1 (*) [16])(**(code **)(*param_1 + 400))(param_1,local_50);
    auVar2 = *pauVar7;
    lVar8 = param_1[0x90];
    *(undefined1 (*) [16])(lVar8 + 0xc4) = auVar2;
    FUN_18134bfe0(lVar8,auVar2._0_8_,auVar2._0_8_ >> 0x20,auVar2._8_8_,auVar2._12_4_);
  }
  if (param_1[0x91] != 0) {
    pauVar7 = (undefined1 (*) [16])(**(code **)(*param_1 + 0x188))(param_1,local_40);
    auVar2 = *pauVar7;
    lVar8 = param_1[0x91];
    *(undefined1 (*) [16])(lVar8 + 0xc4) = auVar2;
    FUN_18134bfe0(lVar8,auVar2._0_8_,auVar2._0_8_ >> 0x20,auVar2._8_8_,auVar2._12_4_);
  }
  puVar9 = (uint *)(local_res8 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  return;
}



############ FUN_ 180566130 size=268 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180566130(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  longlong *plVar2;
  bool bVar3;
  char cVar4;
  undefined1 uVar5;
  int iVar6;
  undefined1 auStack_68 [32];
  undefined4 local_48;
  longlong local_40;
  undefined8 local_38;
  undefined8 *local_30;
  ulonglong local_28;
  
  local_38 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_40 = *(longlong *)(param_1 + 1000);
  _Memory = (uint *)(local_40 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_48 = 1;
  local_30 = param_3;
  iVar6 = FUN_18048cbc0(param_2,local_40);
  if (iVar6 == 0) {
    cVar4 = FUN_18055e010(param_1 + 0x3e0);
    if ((cVar4 != '\0') && (*(longlong *)(param_1 + 0x348) != 0)) {
      bVar3 = true;
      goto LAB_1805661c9;
    }
  }
  bVar3 = false;
LAB_1805661c9:
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (bVar3) {
    plVar2 = *(longlong **)(param_1 + 0x348);
    uVar5 = FUN_180528b30(param_1 + 0x3e0);
    (**(code **)(*plVar2 + 0x58))(plVar2,uVar5);
    FUN_180569310(param_1 + -0x160);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814c5d10 size=410 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814c5d10(void)

{
  uint uVar1;
  char *pcVar2;
  BOOL BVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  undefined1 auStackY_a8 [32];
  DWORD local_78 [2];
  undefined **local_70;
  longlong local_68;
  HANDLE local_60;
  longlong local_58;
  char *local_50;
  longlong local_48;
  longlong local_40 [2];
  char *local_30;
  undefined1 local_28 [11];
  undefined1 local_1d;
  ulonglong local_18;
  
  local_40[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_a8;
  FUN_18123efe0(&local_70);
  if (*local_50 == '\0') {
    uVar4 = 0;
    if (local_60 != (HANDLE)0x0) {
      local_78[0] = 0;
      BVar3 = ReadFile(local_60,local_28,0xb,local_78,(LPOVERLAPPED)0x0);
      if (BVar3 == 0) {
        puVar5 = (undefined8 *)FUN_1812181b0(&local_48);
        local_30 = local_50;
        pcVar2 = (char *)*puVar5;
        *puVar5 = local_50;
        puVar6 = (uint *)(local_48 + -0x10);
        local_50 = pcVar2;
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
      }
      uVar4 = (ulonglong)local_78[0];
    }
    local_58 = local_58 + uVar4;
    local_1d = 0;
    FUN_18049c4e0(local_40,local_28);
    FUN_18048cbc0(local_40[0],"<TUTORIALS>");
    puVar6 = (uint *)(local_40[0] + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  local_70 = juce::FileInputStream::vftable;
  CloseHandle(local_60);
  puVar6 = (uint *)(local_50 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_68 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
}



############ FUN_ 181347ea0 size=185 ############

void FUN_181347ea0(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  int iVar2;
  int *_Memory;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = *param_2;
  if (*(longlong *)(param_1 + 0x158) != lVar1) {
    iVar2 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x158),lVar1);
    if (iVar2 != 0) {
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar1 = *(longlong *)(param_1 + 0x158);
      *(longlong *)(param_1 + 0x158) = *param_2;
      UNLOCK();
      _Memory = (int *)(lVar1 + -0x10);
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *_Memory;
        *_Memory = *_Memory + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      uStack_10 = *(undefined4 *)(param_1 + 0x28);
      uStack_c = *(undefined4 *)(param_1 + 0x2c);
      local_18 = 0;
      uStack_14 = 0;
      FUN_181342870(param_1,&local_18,1);
    }
  }
  return;
}



############ FUN_ 18056eca0 size=181 ############

void FUN_18056eca0(longlong param_1,undefined8 *param_2,undefined4 *param_3)

{
  uint *_Memory;
  undefined4 uVar1;
  uint uVar2;
  undefined8 uVar3;
  longlong *plVar4;
  int iVar5;
  longlong local_res8;
  
  uVar3 = *param_2;
  uVar1 = *param_3;
  FUN_18049c4e0(&local_res8,"alpha");
  iVar5 = FUN_18048cbc0(uVar3,local_res8);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar5 == 0) {
    *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x18) = uVar1;
  }
  else {
    *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x310) = uVar1;
  }
  FUN_18055fee0(*(undefined8 *)(param_1 + 8));
  plVar4 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x60);
  if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
                    /* WARNING: Could not recover jumptable at 0x00018056ed52. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar4 + 0x10))();
  return;
}



############ FUN_ 180578d20 size=250 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180578d20(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  longlong local_48;
  undefined8 local_40;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined8 *local_28;
  ulonglong local_20;
  
  local_40 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_48 = *(longlong *)(param_1 + 0x18);
  _Memory = (uint *)(local_48 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_28 = param_3;
  iVar2 = FUN_18048cbc0(param_2,local_48);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar2 == 0) {
    (**(code **)(*(longlong *)(param_1 + -0x1e0) + 400))();
    uStack_4c = *(undefined4 *)(param_1 + -0x1b4);
    uStack_50 = *(undefined4 *)(param_1 + -0x1b8);
    local_58 = 0;
    local_38 = 0;
    uStack_34 = 0;
    uStack_30 = uStack_50;
    uStack_2c = uStack_4c;
    FUN_181342870(param_1 + -0x1e0,&local_38,1);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1813438f0 size=151 ############

longlong FUN_1813438f0(longlong param_1,undefined8 param_2,char param_3)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  
  plVar4 = *(longlong **)(param_1 + 0x40);
  plVar1 = plVar4 + *(int *)(param_1 + 0x4c);
  while( true ) {
    if (plVar4 == plVar1) {
      return 0;
    }
    lVar3 = *plVar4;
    iVar2 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 0x10),param_2);
    if (iVar2 == 0) break;
    if ((param_3 != '\0') && (lVar3 = FUN_1813438f0(lVar3,param_2,param_3), lVar3 != 0)) {
      return lVar3;
    }
    plVar4 = plVar4 + 1;
  }
  return lVar3;
}



############ FUN_ 1814cddf0 size=2716 ############

void FUN_1814cddf0(longlong param_1)

{
  int *piVar1;
  undefined4 uVar2;
  byte bVar3;
  longlong lVar4;
  longlong *plVar5;
  char cVar6;
  uint uVar7;
  int iVar8;
  undefined4 uVar9;
  longlong *plVar10;
  undefined8 *puVar11;
  undefined8 uVar12;
  undefined8 uVar13;
  uint *puVar14;
  byte *pbVar15;
  byte *pbVar16;
  uint *puVar17;
  longlong lVar18;
  ulonglong uVar19;
  undefined8 **ppuVar20;
  int iVar21;
  int iVar22;
  float fVar23;
  double dVar24;
  longlong local_168;
  undefined8 *local_160;
  byte *local_158;
  undefined8 *local_150;
  undefined8 *local_148;
  undefined4 local_140 [2];
  undefined8 *local_138;
  undefined8 *local_130;
  undefined8 *local_128;
  undefined1 *local_120;
  undefined4 local_118;
  undefined4 local_114;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  byte *local_f8;
  char *local_f0;
  char *local_e8;
  longlong local_e0;
  undefined8 *local_d8;
  longlong local_d0;
  longlong local_c8;
  undefined8 *local_c0;
  longlong local_b8;
  undefined8 *local_b0;
  undefined8 local_a8;
  longlong local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  
  local_a8 = 0xfffffffffffffffe;
  iVar21 = 0;
  iVar22 = 0;
  FUN_1812520a0(param_1 + 0x120,*(float *)(param_1 + 0x128) * DAT_1824c3ddc);
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  uVar2 = *(undefined4 *)(param_1 + 0x128);
  local_138 = (undefined8 *)**(longlong **)(*(longlong *)(param_1 + 0xb8) + 0x70);
  if (local_138 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_138 + 1) = *(int *)(local_138 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_138,uVar2);
  uVar2 = DAT_1824c3c7c;
  FUN_181251cf0(&local_138,&local_148,DAT_1824c3c7c);
  if (local_138 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_138 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_138)(local_138,1);
    }
  }
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  uVar9 = *(undefined4 *)(param_1 + 0x128);
  local_130 = (undefined8 *)**(longlong **)(*(longlong *)(param_1 + 0xb8) + 0x68);
  if (local_130 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_130 + 1) = *(int *)(local_130 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_130,uVar9);
  FUN_181251cf0(&local_130,&local_d8,uVar2);
  if (local_130 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_130 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_130)(local_130,1);
    }
  }
  uVar2 = DAT_1824c4668;
  local_120 = &DAT_1821dbf98;
  local_118 = 0;
  local_114 = 1;
  local_110 = 1;
  local_108 = 0;
  local_100 = 0;
  for (puVar11 = *(undefined8 **)(param_1 + 0x108); puVar11 != (undefined8 *)0x0;
      puVar11 = (undefined8 *)*puVar11) {
    iVar22 = iVar22 + 1;
  }
  if (iVar22 < 1) {
LAB_1814ce7cc:
    FUN_18124e420(param_1 + 0xd0,&local_120,*(undefined4 *)(param_1 + 0xfc),DAT_1824c4610);
    FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),
                  (int)*(float *)(param_1 + 0xe0),(int)*(float *)(param_1 + 0xe4));
    FUN_1804f45e0(&local_120);
    if (local_d8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_d8 + 1);
      iVar22 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar22 == 1) {
        (**(code **)*local_d8)(local_d8,1);
      }
    }
    if (local_148 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_148 + 1);
      iVar22 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar22 == 1) {
        (**(code **)*local_148)(local_148,1);
      }
    }
    return;
  }
LAB_1814cdfd5:
  plVar10 = (longlong *)(param_1 + 0x108);
  iVar8 = iVar21;
  do {
    plVar5 = plVar10;
    iVar8 = iVar8 + -1;
    if (iVar8 < 0) break;
    plVar10 = (longlong *)*plVar5;
  } while (plVar10 != (longlong *)0x0);
  lVar18 = *plVar5;
  FUN_181246700(lVar18,&local_168);
  if (iVar21 == 0) {
    plVar10 = (longlong *)FUN_181230650(&local_168,&local_d0,&DAT_1821e768c);
    local_a0 = local_168;
    lVar4 = *plVar10;
    *plVar10 = local_168;
    puVar14 = (uint *)(local_d0 + -0x10);
    uVar7 = *puVar14;
    local_168 = lVar4;
LAB_1814ce077:
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
  }
  else if (iVar21 == iVar22 + -1) {
    plVar10 = (longlong *)FUN_1812304e0(&local_168,&local_c8,&DAT_1821e76ac);
    local_98 = local_168;
    lVar4 = *plVar10;
    *plVar10 = local_168;
    puVar14 = (uint *)(local_c8 + -0x10);
    uVar7 = *puVar14;
    local_168 = lVar4;
    goto LAB_1814ce077;
  }
  iVar8 = FUN_18048cbc0(*(undefined8 *)(lVar18 + 0x18),&DAT_1821e7754);
  if (iVar8 == 0) {
    FUN_18049c4e0(&local_f8,&DAT_1821e778c);
    FUN_181232d30(&local_120,&local_f8);
    pbVar16 = local_f8;
    lVar18 = 0;
    pbVar15 = local_f8;
LAB_1814ce0d6:
    do {
      bVar3 = *pbVar15;
      pbVar15 = pbVar15 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar15 & 0xc0) == 0x80) {
          do {
            pbVar15 = pbVar15 + 1;
          } while ((*pbVar15 & 0xc0) == 0x80);
          lVar18 = lVar18 + 1;
          goto LAB_1814ce0d6;
        }
      }
      else if (bVar3 == 0) goto LAB_1814ce10a;
      lVar18 = lVar18 + 1;
    } while( true );
  }
  iVar8 = FUN_18048cbc0(*(undefined8 *)(lVar18 + 0x18),&DAT_1821e7f1c);
  if (iVar8 == 0) {
    FUN_181251cf0(&local_148,&local_150,uVar2);
    FUN_18049c4e0(&local_158,&DAT_1821e757c);
    plVar10 = (longlong *)FUN_181252280(&local_150);
    fVar23 = (float)(**(code **)(*plVar10 + 0x28))(plVar10,&local_158);
    pbVar16 = local_158;
    if (*(float *)(local_150 + 6) != 0.0) {
      iVar8 = 0;
      pbVar15 = local_158;
LAB_1814ce1d0:
      do {
        bVar3 = *pbVar15;
        pbVar15 = pbVar15 + 1;
        if ((char)bVar3 < '\0') {
          if ((*pbVar15 & 0xc0) == 0x80) {
            do {
              pbVar15 = pbVar15 + 1;
            } while ((*pbVar15 & 0xc0) == 0x80);
            iVar8 = iVar8 + 1;
            goto LAB_1814ce1d0;
          }
        }
        else if (bVar3 == 0) goto LAB_1814ce20c;
        iVar8 = iVar8 + 1;
      } while( true );
    }
    goto LAB_1814ce21c;
  }
  iVar8 = FUN_18048cbc0(*(undefined8 *)(lVar18 + 0x18),"STYLE");
  if (iVar8 != 0) {
    iVar8 = FUN_18048cbc0(*(undefined8 *)(lVar18 + 0x18),&DAT_182289b24);
    if (iVar8 == 0) {
      uVar9 = *(undefined4 *)(param_1 + 0xf8);
      cVar6 = FUN_181246e10(lVar18,"colour");
      if (cVar6 != '\0') {
        puVar11 = (undefined8 *)FUN_181246db0(lVar18,"colour");
        local_80 = *puVar11;
        uVar9 = FUN_18049c3c0();
      }
      cVar6 = FUN_181246e10(lVar18,&DAT_18228a254);
      if (cVar6 != '\0') {
        FUN_181246d40(lVar18,&DAT_18228a6e4,0);
      }
      uVar12 = FUN_181246db0(lVar18,&DAT_182293e64);
      uVar12 = FUN_1804861f0(param_1 + 0x130,uVar12);
      uVar13 = FUN_181252200(param_1 + 0x120,&local_b0);
      FUN_18049cc00(&local_e0,uVar12,1);
      FUN_181255140(&local_120,&local_e0,uVar13,uVar9);
      puVar14 = (uint *)(local_e0 + -0x10);
      if ((*puVar14 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar14;
        *puVar14 = *puVar14 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar14);
        }
      }
      if (local_b0 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_b0 + 1);
        iVar8 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)*local_b0)(local_b0,1);
        }
      }
    }
    else {
      FUN_181255140(&local_120,&local_168,&local_148,*(undefined4 *)(param_1 + 0xf8));
    }
    goto LAB_1814ce78d;
  }
  FUN_18049c4e0(&local_f0,"");
  for (puVar11 = *(undefined8 **)(lVar18 + 0x10); puVar11 != (undefined8 *)0x0;
      puVar11 = (undefined8 *)*puVar11) {
    local_90 = puVar11[1];
    iVar8 = FUN_18048cbc0(local_90,&DAT_1821e75bc);
    if (iVar8 == 0) {
      local_e8 = (char *)puVar11[2];
      puVar14 = (uint *)(local_e8 + -0x10);
      uVar7 = *puVar14;
      goto LAB_1814ce387;
    }
  }
  puVar14 = (uint *)(local_f0 + -0x10);
  uVar7 = *puVar14;
  local_e8 = local_f0;
LAB_1814ce387:
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    *puVar14 = *puVar14 + 1;
    UNLOCK();
  }
  puVar17 = (uint *)(local_f0 + -0x10);
  if ((*puVar17 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar17;
    *puVar17 = *puVar17 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar17);
    }
  }
  if ((*local_e8 == '\0') || (iVar8 = FUN_18048cbc0(local_e8,&DAT_1821e7654), iVar8 == 0)) {
    cVar6 = FUN_181246e10(lVar18,&DAT_182281a14);
    ppuVar20 = &local_d8;
    if (cVar6 == '\0') {
      ppuVar20 = &local_148;
    }
    puVar11 = *ppuVar20;
    if (puVar11 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puVar11 + 1) = *(int *)(puVar11 + 1) + 1;
      UNLOCK();
    }
    local_160 = puVar11;
    cVar6 = FUN_181246e10(lVar18,&DAT_1822823e4);
    if (cVar6 != '\0') {
      fVar23 = *(float *)(puVar11 + 5);
      dVar24 = (double)FUN_181246d40(lVar18,&DAT_1822827c4,0);
      LOCK();
      *(int *)(puVar11 + 1) = *(int *)(puVar11 + 1) + 1;
      UNLOCK();
      local_128 = puVar11;
      FUN_1812520a0(&local_128,(float)(dVar24 * (double)fVar23));
      puVar11 = local_160;
      local_c0 = local_160;
      local_160 = local_128;
      local_128 = puVar11;
      if (puVar11 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar11 + 1);
        iVar8 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)*puVar11)(puVar11,1);
        }
      }
    }
    uVar9 = *(undefined4 *)(param_1 + 0xf8);
    cVar6 = FUN_181246e10(lVar18,"colour");
    if (cVar6 != '\0') {
      puVar11 = (undefined8 *)FUN_181246db0(lVar18,"colour");
      local_88 = *puVar11;
      uVar9 = FUN_18049c3c0();
    }
    uVar12 = FUN_181246700(lVar18,&local_b8);
    FUN_181255140(&local_120,uVar12,&local_160,uVar9);
    puVar17 = (uint *)(local_b8 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    if (local_160 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_160 + 1);
      iVar8 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar8 == 1) {
        (**(code **)*local_160)(local_160,1);
      }
    }
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    goto LAB_1814ce78d;
  }
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  puVar14 = (uint *)(local_168 + -0x10);
  uVar7 = *puVar14;
  goto LAB_1814ce798;
LAB_1814ce10a:
  FUN_1812554b0(&local_108,lVar18,0,0);
  puVar14 = (uint *)(pbVar16 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  goto LAB_1814ce78d;
LAB_1814ce20c:
  fVar23 = fVar23 + (float)iVar8 * *(float *)(local_150 + 6);
LAB_1814ce21c:
  fVar23 = floorf(*(float *)(param_1 + 0xfc) /
                  (fVar23 * *(float *)(local_150 + 5) * *(float *)((longlong)local_150 + 0x2c)));
  if (0 < (int)fVar23) {
    local_140[0] = 0x405b636e;
    uVar19 = (ulonglong)(uint)(int)fVar23;
LAB_1814ce250:
    FUN_181232d30(&local_120,&local_158);
    lVar18 = 0;
    pbVar16 = local_158;
LAB_1814ce266:
    do {
      bVar3 = *pbVar16;
      pbVar16 = pbVar16 + 1;
      if ((char)bVar3 < '\0') {
        if ((*pbVar16 & 0xc0) == 0x80) {
          do {
            pbVar16 = pbVar16 + 1;
          } while ((*pbVar16 & 0xc0) == 0x80);
          lVar18 = lVar18 + 1;
          goto LAB_1814ce266;
        }
      }
      else if (bVar3 == 0) goto LAB_1814ce29a;
      lVar18 = lVar18 + 1;
    } while( true );
  }
LAB_1814ce2b8:
  puVar14 = (uint *)(pbVar16 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  if (local_150 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_150 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_150)(local_150,1);
    }
  }
LAB_1814ce78d:
  puVar14 = (uint *)(local_168 + -0x10);
  uVar7 = *puVar14;
LAB_1814ce798:
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  iVar21 = iVar21 + 1;
  if (iVar22 <= iVar21) goto LAB_1814ce7cc;
  goto LAB_1814cdfd5;
LAB_1814ce29a:
  FUN_1812554b0(&local_108,lVar18,&local_150,local_140);
  uVar19 = uVar19 - 1;
  pbVar16 = local_158;
  if (uVar19 == 0) goto LAB_1814ce2b8;
  goto LAB_1814ce250;
}



############ FUN_ 18057bf60 size=218 ############

undefined8 * FUN_18057bf60(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_3;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_3,puVar5[4]), -1 < iVar2))
  {
    *param_2 = puVar5;
    *(undefined1 *)(param_2 + 1) = 0;
    return param_2;
  }
  local_res8 = param_3;
  lVar3 = FUN_18057dfc0(param_1);
  FUN_18057e000(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  *param_2 = local_res8;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 18057e000 size=657 ############

undefined8 *
FUN_18057e000(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_18057e6f0(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_18057e6f0(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_18057e6f0(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_18057e6f0(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_18057e6f0(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_18057e6f0(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_18057e6f0(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_18057e920(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 18057e920 size=391 ############

undefined8 *
FUN_18057e920(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4,
             void *param_5)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined1 local_res8 [8];
  
  puVar5 = (undefined8 *)*param_1;
  bVar8 = true;
  puVar7 = puVar5;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar7 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar7[4]);
      bVar8 = iVar4 < 0;
      if (bVar8) {
        puVar6 = (undefined8 *)*puVar7;
      }
      else {
        puVar6 = (undefined8 *)puVar7[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  puVar6 = puVar7;
  if (bVar8 != false) {
    if (puVar7 == (undefined8 *)*puVar5) {
      puVar5 = (undefined8 *)FUN_18057e6f0(param_1,local_res8,1,puVar7);
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar6[2] + 0x19);
        puVar5 = (undefined8 *)puVar6[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar5[2] + 0x19);
          puVar6 = puVar5;
          puVar5 = (undefined8 *)puVar5[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar5 = (undefined8 *)puVar7[1];
        puVar6 = puVar7;
        while ((puVar3 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar5 = (undefined8 *)puVar3[1];
          puVar6 = puVar3;
        }
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          puVar6 = puVar3;
        }
      }
    }
    else {
      puVar6 = (undefined8 *)puVar7[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar6[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_18057e6f0(param_1,local_res8,bVar8,puVar7);
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  FUN_1804d1090((longlong)param_5 + 0x20);
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 18057eee0 size=515 ############

undefined8 FUN_18057eee0(undefined8 *param_1)

{
  int iVar1;
  undefined8 uVar2;
  
  uVar2 = FUN_18048cbc0(*param_1,"6 dB/oct");
  if ((int)uVar2 == 0) {
    return uVar2;
  }
  iVar1 = FUN_18048cbc0(*param_1,"12 dB/oct");
  if (iVar1 == 0) {
    return 1;
  }
  iVar1 = FUN_18048cbc0(*param_1,"24 dB/oct");
  if (iVar1 == 0) {
    return 2;
  }
  iVar1 = FUN_18048cbc0(*param_1,"48 dB/oct");
  if (iVar1 == 0) {
    return 3;
  }
  iVar1 = FUN_18048cbc0(*param_1,"6 dB/oct");
  if (iVar1 == 0) {
    return 4;
  }
  iVar1 = FUN_18048cbc0(*param_1,"12 dB/oct");
  if (iVar1 == 0) {
    return 5;
  }
  iVar1 = FUN_18048cbc0(*param_1,"24 dB/oct");
  if (iVar1 == 0) {
    return 6;
  }
  iVar1 = FUN_18048cbc0(*param_1,"48 dB/oct");
  if (iVar1 == 0) {
    return 7;
  }
  iVar1 = FUN_18048cbc0(*param_1,"band pass");
  if (iVar1 == 0) {
    return 0xc;
  }
  iVar1 = FUN_18048cbc0(*param_1,&DAT_1824b0314);
  if (iVar1 == 0) {
    return 8;
  }
  iVar1 = FUN_18048cbc0(*param_1,"high shelf");
  if (iVar1 != 0) {
    iVar1 = FUN_18048cbc0(*param_1,"low shelf");
    if (iVar1 == 0) {
      return 10;
    }
    iVar1 = FUN_18048cbc0(*param_1,&DAT_1824b02ac);
    if (iVar1 == 0) {
      return 0xb;
    }
    iVar1 = FUN_18048cbc0(*param_1,"band shelf");
    if (iVar1 == 0) {
      return 0xd;
    }
    iVar1 = FUN_18048cbc0(*param_1,"band reject");
    if (iVar1 == 0) {
      return 0xe;
    }
    iVar1 = FUN_18048cbc0(*param_1,"hi shelf");
    if (iVar1 != 0) {
      iVar1 = FUN_18048cbc0(*param_1,"lo shelf");
      uVar2 = 0xffffffff;
      if (iVar1 == 0) {
        uVar2 = 10;
      }
      return uVar2;
    }
  }
  return 9;
}



############ FUN_ 1805817a0 size=148 ############

undefined8 * FUN_1805817a0(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  code *pcVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  
  puVar4 = (undefined8 *)*param_1;
  puVar6 = puVar4;
  if (*(char *)((longlong)puVar4[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar5 = puVar4;
    puVar7 = (undefined8 *)puVar4[1];
    do {
      puVar6 = puVar7;
      iVar3 = FUN_18048cbc0(puVar6[4],uVar1);
      if (iVar3 < 0) {
        puVar7 = (undefined8 *)puVar6[2];
        puVar6 = puVar5;
      }
      else {
        puVar7 = (undefined8 *)*puVar6;
      }
      puVar5 = puVar6;
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  if ((puVar6 != puVar4) && (iVar3 = FUN_18048cbc0(*param_2,puVar6[4]), -1 < iVar3)) {
    return puVar6 + 5;
  }
  std::_Xout_of_range("invalid map<K, T> key");
  pcVar2 = (code *)swi(3);
  puVar4 = (undefined8 *)(*pcVar2)();
  return puVar4;
}



############ FUN_ 180581840 size=189 ############

undefined8 * FUN_180581840(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_180588140(param_1);
  FUN_1805881a0(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 1805881a0 size=657 ############

undefined8 *
FUN_1805881a0(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_180588490(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_180588490(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_180588490(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_180588490(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_180588490(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_180588490(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_180588490(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_1805886c0(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 1805886c0 size=500 ############

undefined8 *
FUN_1805886c0(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4,
             void *param_5)

{
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  uint *_Memory;
  undefined8 *puVar8;
  bool bVar9;
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined8 local_38;
  undefined1 local_30 [8];
  
  puVar6 = (undefined8 *)*param_1;
  bVar9 = true;
  puVar8 = puVar6;
  if (*(char *)((longlong)puVar6[1] + 0x19) == '\0') {
    uVar3 = *param_4;
    puVar7 = (undefined8 *)puVar6[1];
    do {
      puVar8 = puVar7;
      iVar5 = FUN_18048cbc0(uVar3);
      bVar9 = iVar5 < 0;
      if (bVar9) {
        puVar7 = (undefined8 *)*puVar8;
      }
      else {
        puVar7 = (undefined8 *)puVar8[2];
      }
    } while (*(char *)((longlong)puVar7 + 0x19) == '\0');
  }
  puVar7 = puVar8;
  if (bVar9 != false) {
    if (puVar8 == (undefined8 *)*puVar6) {
      puVar6 = (undefined8 *)FUN_180588490(param_1,local_48,1,puVar8);
      *param_2 = *puVar6;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar8 + 0x19) == '\0') {
      puVar7 = (undefined8 *)*puVar8;
      if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
        cVar2 = *(char *)((longlong)puVar7[2] + 0x19);
        puVar6 = (undefined8 *)puVar7[2];
        while (cVar2 == '\0') {
          cVar2 = *(char *)((longlong)puVar6[2] + 0x19);
          puVar7 = puVar6;
          puVar6 = (undefined8 *)puVar6[2];
        }
      }
      else {
        cVar2 = *(char *)((longlong)puVar8[1] + 0x19);
        puVar6 = (undefined8 *)puVar8[1];
        puVar7 = puVar8;
        while ((puVar4 = puVar6, cVar2 == '\0' && (puVar7 == (undefined8 *)*puVar4))) {
          cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar6 = (undefined8 *)puVar4[1];
          puVar7 = puVar4;
        }
        if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
          puVar7 = puVar4;
        }
      }
    }
    else {
      puVar7 = (undefined8 *)puVar8[2];
    }
  }
  local_40 = *param_4;
  local_38 = puVar7[4];
  iVar5 = FUN_18048cbc0();
  if (iVar5 < 0) {
    puVar6 = (undefined8 *)FUN_180588490(param_1,local_30,bVar9,puVar8);
    *param_2 = *puVar6;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_5 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 180585550 size=118 ############

undefined8 *
FUN_180585550(undefined8 *param_1,longlong *param_2,longlong *param_3,longlong *param_4)

{
  longlong lVar1;
  int iVar2;
  
  if (param_2 == param_3) {
    *param_1 = param_2;
  }
  else {
    lVar1 = *param_4;
    while (*param_2 != lVar1) {
      iVar2 = FUN_18048cbc0(*param_2,lVar1);
      if ((iVar2 == 0) || (param_2 = param_2 + 1, param_2 == param_3)) break;
    }
    *param_1 = param_2;
  }
  return param_1;
}



############ FUN_ 180586600 size=218 ############

undefined8 * FUN_180586600(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_3;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_3,puVar5[4]), -1 < iVar2))
  {
    *param_2 = puVar5;
    *(undefined1 *)(param_2 + 1) = 0;
    return param_2;
  }
  local_res8 = param_3;
  lVar3 = FUN_180588140(param_1);
  FUN_1805881a0(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  *param_2 = local_res8;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 180587240 size=243 ############

void FUN_180587240(longlong param_1,undefined8 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined8 uVar2;
  longlong lVar3;
  int iVar4;
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  uVar2 = *param_2;
  uVar1 = *param_3;
  iVar4 = FUN_18048cbc0(uVar2,"lineWidthAddition");
  if (iVar4 == 0) {
    *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x9e8) = uVar1;
    lVar3 = *(longlong *)(param_1 + 8);
    uStack_20 = *(undefined4 *)(lVar3 + 0x28);
    uStack_1c = *(undefined4 *)(lVar3 + 0x2c);
    local_28 = 0;
    FUN_181342870(lVar3,&local_28,1);
  }
  iVar4 = FUN_18048cbc0(uVar2,"arcBgColour");
  if (iVar4 == 0) {
    *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x9fc) = uVar1;
  }
  else {
    iVar4 = FUN_18048cbc0(uVar2,"normVal");
    if (iVar4 == 0) {
      *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x9ec) = uVar1;
      lVar3 = *(longlong *)(param_1 + 8);
      uStack_20 = *(undefined4 *)(lVar3 + 0x28);
      uStack_1c = *(undefined4 *)(lVar3 + 0x2c);
      local_28 = 0;
      FUN_181342870(lVar3,&local_28,1);
    }
  }
  return;
}



############ FUN_ 181639ad0 size=251 ############

undefined8 * FUN_181639ad0(undefined8 param_1,undefined8 param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  int iVar8;
  undefined8 *puVar9;
  undefined8 *local_res10;
  
  puVar6 = (undefined8 *)0x0;
  local_res10 = (undefined8 *)((ulonglong)local_res10 & 0xffffffff00000000);
  lVar4 = FUN_181639c10();
  iVar2 = *(int *)(lVar4 + 0xec);
  puVar5 = puVar6;
  puVar7 = puVar6;
  puVar9 = puVar6;
  if (0 < iVar2) {
    do {
      iVar3 = FUN_18048cbc0(param_2);
      iVar8 = (int)puVar9;
      if (iVar3 == 0) {
        if (-1 < iVar8) {
          puVar6 = *(undefined8 **)(*(longlong *)(lVar4 + 0xf0) + (longlong)iVar8 * 8);
          puVar7 = (undefined8 *)0x1;
          local_res10 = puVar6;
          if (puVar6 != (undefined8 *)0x0) {
            LOCK();
            *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
            UNLOCK();
          }
        }
        break;
      }
      puVar5 = (undefined8 *)((longlong)puVar5 + 1);
      puVar9 = (undefined8 *)(ulonglong)(iVar8 + 1);
    } while ((longlong)puVar5 < (longlong)iVar2);
  }
  if ((puVar7 != (undefined8 *)0x0) && (local_res10 != (undefined8 *)0x0)) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  return puVar6;
}



############ FUN_ 18059efa0 size=189 ############

undefined8 * FUN_18059efa0(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_180490290(param_1);
  FUN_1805881a0(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 18059f060 size=189 ############

undefined8 * FUN_18059f060(longlong *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_2;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_2,puVar5[4]), -1 < iVar2))
  {
    return puVar5 + 5;
  }
  local_res8 = param_2;
  lVar3 = FUN_1805730d0(param_1);
  FUN_18059fb10(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  return local_res8 + 5;
}



############ FUN_ 18059fb10 size=657 ############

undefined8 *
FUN_18059fb10(longlong *param_1,undefined8 *param_2,longlong *param_3,undefined8 *param_4)

{
  char cVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  undefined1 local_40 [24];
  
  if (param_1[1] == 0) {
    FUN_18059fe10(param_1,param_2,1,*param_1);
  }
  else {
    plVar3 = (longlong *)*param_1;
    if (param_3 == (longlong *)*plVar3) {
      iVar7 = FUN_18048cbc0(*param_4,param_3[4]);
      if (iVar7 < 0) {
        FUN_18059fe10(param_1,param_2,1,param_3);
        return param_2;
      }
    }
    else if (param_3 == plVar3) {
      iVar7 = FUN_18048cbc0(*(undefined8 *)(plVar3[2] + 0x20),*param_4);
      if (iVar7 < 0) {
        FUN_18059fe10(param_1,param_2,0,plVar3[2]);
        return param_2;
      }
    }
    else {
      uVar4 = *param_4;
      iVar7 = FUN_18048cbc0(uVar4,param_3[4]);
      if (iVar7 < 0) {
        if (*(char *)((longlong)param_3 + 0x19) == '\0') {
          plVar9 = (longlong *)*param_3;
          if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
            cVar1 = *(char *)(plVar9[2] + 0x19);
            plVar5 = (longlong *)plVar9[2];
            while (cVar1 == '\0') {
              cVar1 = *(char *)(plVar5[2] + 0x19);
              plVar9 = plVar5;
              plVar5 = (longlong *)plVar5[2];
            }
          }
          else {
            cVar1 = *(char *)(param_3[1] + 0x19);
            plVar5 = (longlong *)param_3[1];
            plVar9 = param_3;
            while ((plVar6 = plVar5, cVar1 == '\0' && (plVar9 == (longlong *)*plVar6))) {
              cVar1 = *(char *)(plVar6[1] + 0x19);
              plVar5 = (longlong *)plVar6[1];
              plVar9 = plVar6;
            }
            if (*(char *)((longlong)plVar9 + 0x19) == '\0') {
              plVar9 = plVar6;
            }
          }
        }
        else {
          plVar9 = (longlong *)param_3[2];
        }
        iVar7 = FUN_18048cbc0(plVar9[4],uVar4);
        if (iVar7 < 0) {
          if (*(char *)(plVar9[2] + 0x19) != '\0') {
            FUN_18059fe10(param_1,param_2,0,plVar9);
            return param_2;
          }
          FUN_18059fe10(param_1,param_2,1,param_3);
          return param_2;
        }
      }
      iVar7 = FUN_18048cbc0(param_3[4],uVar4);
      if (iVar7 < 0) {
        plVar9 = (longlong *)param_3[2];
        cVar1 = *(char *)((longlong)plVar9 + 0x19);
        if (cVar1 == '\0') {
          cVar2 = *(char *)(*plVar9 + 0x19);
          plVar5 = (longlong *)*plVar9;
          while (cVar2 == '\0') {
            cVar2 = *(char *)(*plVar5 + 0x19);
            plVar9 = plVar5;
            plVar5 = (longlong *)*plVar5;
          }
        }
        else {
          cVar2 = *(char *)(param_3[1] + 0x19);
          plVar6 = (longlong *)param_3[1];
          plVar5 = param_3;
          while ((plVar9 = plVar6, cVar2 == '\0' && (plVar5 == (longlong *)plVar9[2]))) {
            cVar2 = *(char *)(plVar9[1] + 0x19);
            plVar6 = (longlong *)plVar9[1];
            plVar5 = plVar9;
          }
        }
        if ((plVar9 == plVar3) || (iVar7 = FUN_18048cbc0(uVar4,plVar9[4]), iVar7 < 0)) {
          if (cVar1 != '\0') {
            FUN_18059fe10(param_1,param_2,0,param_3);
            return param_2;
          }
          FUN_18059fe10(param_1,param_2,1,plVar9);
          return param_2;
        }
      }
    }
    puVar8 = (undefined8 *)FUN_1805a0040(param_1,local_40);
    *param_2 = *puVar8;
  }
  return param_2;
}



############ FUN_ 1805a0040 size=383 ############

undefined8 *
FUN_1805a0040(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 *param_4)

{
  char cVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  bool bVar8;
  undefined1 local_res8 [8];
  
  puVar5 = (undefined8 *)*param_1;
  bVar8 = true;
  puVar7 = puVar5;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar2 = *param_4;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar7 = puVar6;
      iVar4 = FUN_18048cbc0(uVar2,puVar7[4]);
      bVar8 = iVar4 < 0;
      if (bVar8) {
        puVar6 = (undefined8 *)*puVar7;
      }
      else {
        puVar6 = (undefined8 *)puVar7[2];
      }
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  puVar6 = puVar7;
  if (bVar8 != false) {
    if (puVar7 == (undefined8 *)*puVar5) {
      puVar5 = (undefined8 *)FUN_18059fe10(param_1,local_res8,1,puVar7);
      *param_2 = *puVar5;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar7 + 0x19) == '\0') {
      puVar6 = (undefined8 *)*puVar7;
      if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar6[2] + 0x19);
        puVar5 = (undefined8 *)puVar6[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar5[2] + 0x19);
          puVar6 = puVar5;
          puVar5 = (undefined8 *)puVar5[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar7[1] + 0x19);
        puVar5 = (undefined8 *)puVar7[1];
        puVar6 = puVar7;
        while ((puVar3 = puVar5, cVar1 == '\0' && (puVar6 == (undefined8 *)*puVar3))) {
          cVar1 = *(char *)((longlong)puVar3[1] + 0x19);
          puVar5 = (undefined8 *)puVar3[1];
          puVar6 = puVar3;
        }
        if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
          puVar6 = puVar3;
        }
      }
    }
    else {
      puVar6 = (undefined8 *)puVar7[2];
    }
  }
  iVar4 = FUN_18048cbc0(puVar6[4],*param_4);
  if (iVar4 < 0) {
    puVar5 = (undefined8 *)FUN_18059fe10(param_1,local_res8,bVar8,puVar7);
    *param_2 = *puVar5;
    *(undefined1 *)(param_2 + 1) = 1;
  }
  else {
    FUN_18059fdb0();
    *param_2 = puVar6;
    *(undefined1 *)(param_2 + 1) = 0;
  }
  return param_2;
}



############ FUN_ 18059f810 size=218 ############

undefined8 * FUN_18059f810(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_3;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_3,puVar5[4]), -1 < iVar2))
  {
    *param_2 = puVar5;
    *(undefined1 *)(param_2 + 1) = 0;
    return param_2;
  }
  local_res8 = param_3;
  lVar3 = FUN_180490290(param_1);
  FUN_1805881a0(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  *param_2 = local_res8;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 18059f8f0 size=218 ############

undefined8 * FUN_18059f8f0(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *local_res8;
  
  puVar5 = (undefined8 *)*param_1;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    uVar1 = *param_3;
    puVar4 = puVar5;
    puVar6 = (undefined8 *)puVar5[1];
    do {
      puVar5 = puVar6;
      iVar2 = FUN_18048cbc0(puVar5[4],uVar1);
      if (iVar2 < 0) {
        puVar6 = (undefined8 *)puVar5[2];
        puVar5 = puVar4;
      }
      else {
        puVar6 = (undefined8 *)*puVar5;
      }
      puVar4 = puVar5;
    } while (*(char *)((longlong)puVar6 + 0x19) == '\0');
  }
  if ((puVar5 != (undefined8 *)*param_1) && (iVar2 = FUN_18048cbc0(*param_3,puVar5[4]), -1 < iVar2))
  {
    *param_2 = puVar5;
    *(undefined1 *)(param_2 + 1) = 0;
    return param_2;
  }
  local_res8 = param_3;
  lVar3 = FUN_1805730d0(param_1);
  FUN_18059fb10(param_1,&local_res8,puVar5,lVar3 + 0x20,lVar3);
  *param_2 = local_res8;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 18059fa30 size=204 ############

longlong * FUN_18059fa30(undefined8 param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint *_Memory;
  bool bVar4;
  
  lVar2 = *param_3;
  *param_3 = (longlong)&DAT_1821dbf98;
  iVar3 = FUN_18048cbc0(lVar2,"same as real-time",param_3,param_4,0xfffffffffffffffe);
  if (iVar3 == 0) {
    FUN_18049c4e0(param_2,&DAT_1824c2c20);
    _Memory = (uint *)(lVar2 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
LAB_18059fae4:
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  else {
    *param_2 = lVar2;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      UNLOCK();
      bVar4 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = DAT_1821dbf88 - 1;
      if (bVar4) {
        _Memory = &DAT_1821dbf88;
        DAT_1821dbf88 = 0xffffffff;
        goto LAB_18059fae4;
      }
    }
  }
  return param_2;
}



############ FUN_ 18117c110 size=186 ############

longlong * FUN_18117c110(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  int iVar3;
  longlong *plVar4;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (lVar1 == 0) {
    *param_2 = (longlong)&DAT_1821dbf98;
    return param_2;
  }
  puVar2 = *(undefined8 **)(lVar1 + 0x10);
  while( true ) {
    if (puVar2 == (undefined8 *)0x0) {
      *param_2 = (longlong)&DAT_1821dbf98;
      return param_2;
    }
    iVar3 = FUN_18048cbc0(puVar2[1],"author");
    if (iVar3 == 0) break;
    puVar2 = (undefined8 *)*puVar2;
  }
  plVar4 = (longlong *)FUN_181246db0(lVar1,"author");
  lVar1 = *plVar4;
  *param_2 = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) != 0) {
    return param_2;
  }
  LOCK();
  *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
  UNLOCK();
  return param_2;
}



############ FUN_ 181184720 size=324 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181184720(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  undefined8 *puVar2;
  undefined1 uVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined1 auStack_78 [32];
  longlong local_58;
  undefined **local_50;
  undefined1 local_48;
  undefined8 local_40;
  undefined8 *local_30;
  ulonglong local_28;
  
  local_40 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_58 = *(longlong *)(param_1 + 0x78);
  _Memory = (uint *)(local_58 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_30 = param_3;
  iVar4 = FUN_18048cbc0(param_2,local_58);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar4 == 0) {
    uVar3 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    LOCK();
    *(undefined1 *)(param_1 + 0x1a) = uVar3;
    UNLOCK();
    if (*(char *)(param_1 + 0x1a) == '\0') {
      FUN_181184ad0(param_1 + -8);
    }
    else {
      FUN_181184c60();
    }
    if ((*(char *)(param_1 + 0x18) != '\0') || (local_48 = 0, *(char *)(param_1 + 0x1a) != '\0')) {
      local_48 = 1;
    }
    local_50 = &PTR_vftable_18262b550;
    (**(code **)(*(longlong *)(param_1 + 0x58) + 0x18))((longlong *)(param_1 + 0x58),&local_50);
  }
  else {
    puVar2 = *(undefined8 **)(param_1 + 0x30);
    puVar5 = *(undefined8 **)(param_1 + 0x28);
    if (puVar5 != puVar2) {
      do {
        iVar4 = FUN_18048cbc0(*puVar5,param_2);
        if (iVar4 == 0) break;
        puVar5 = puVar5 + 1;
      } while (puVar5 != puVar2);
      if (puVar5 != puVar2) {
        FUN_181184b60(param_1 + -8);
      }
    }
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 181184880 size=415 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181184880(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined1 uVar2;
  int iVar3;
  int iVar4;
  longlong *plVar5;
  uint *puVar6;
  undefined ***pppuVar7;
  undefined1 auStack_98 [32];
  longlong local_78;
  longlong local_70 [2];
  undefined **local_60;
  undefined1 local_58;
  undefined **local_50;
  undefined1 local_48;
  undefined8 local_40;
  undefined8 *local_38;
  ulonglong local_30;
  
  local_40 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_38 = param_3;
  plVar5 = (longlong *)
           (**(code **)(*(longlong *)(param_1 + 0xa8) + 0x10))
                     ((longlong *)(param_1 + 0xa8),&local_78);
  iVar4 = 0;
  if (*param_2 == *plVar5) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*param_2,*plVar5);
  }
  puVar6 = (uint *)(local_78 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (iVar3 == 0) {
    uVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    LOCK();
    *(undefined1 *)(param_1 + 0x10) = uVar2;
    UNLOCK();
    if ((*(char *)(param_1 + 0x20) == '\0') && (*(char *)(param_1 + 0x22) == '\0')) {
      local_58 = 0;
    }
    else {
      local_58 = 1;
    }
    local_60 = &PTR_vftable_18262b550;
    pppuVar7 = &local_60;
  }
  else {
    plVar5 = (longlong *)
             (**(code **)(*(longlong *)(param_1 + 200) + 0x10))
                       ((longlong *)(param_1 + 200),local_70);
    if (*param_2 != *plVar5) {
      iVar4 = FUN_18048cbc0(*param_2,*plVar5);
    }
    puVar6 = (uint *)(local_70[0] + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    if (iVar4 != 0) goto LAB_181184a02;
    uVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    LOCK();
    *(undefined1 *)(param_1 + 0x21) = uVar2;
    UNLOCK();
    if ((*(char *)(param_1 + 0x20) == '\0') && (*(char *)(param_1 + 0x22) == '\0')) {
      local_48 = 0;
    }
    else {
      local_48 = 1;
    }
    local_50 = &PTR_vftable_18262b550;
    pppuVar7 = &local_50;
  }
  (**(code **)(*(longlong *)(param_1 + 0x60) + 0x18))((longlong *)(param_1 + 0x60),pppuVar7);
LAB_181184a02:
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 181184ed0 size=56 ############

void FUN_181184ed0(longlong param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x48),&DAT_1821d951c);
  FUN_181352a80(param_1 + 0x88 + (ulonglong)(iVar1 == 0) * 0x78);
  return;
}



############ FUN_ 18118c1f0 size=52 ############

longlong FUN_18118c1f0(longlong param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x48),&DAT_1821d951c);
  return (ulonglong)(iVar1 == 0) * 0x78 + param_1 + 0x88;
}



############ FUN_ 181197040 size=535 ############

void FUN_181197040(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  char cVar5;
  short sVar6;
  int iVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  uint uVar11;
  int iVar12;
  ulonglong uVar13;
  undefined4 uVar14;
  double dVar15;
  float fVar16;
  double local_res10;
  char local_res18;
  longlong *local_res20;
  
  if (param_2 != 0) {
    local_res18 = (char)param_3;
    iVar7 = FUN_18049bb30(*(undefined8 *)(param_2 + 0x18),*(undefined8 *)(param_1 + 0x180),param_3,
                          param_4,0xfffffffffffffffe);
    if (iVar7 == 0) {
      uVar10 = 0;
      fVar16 = 0.0;
      local_res20 = (longlong *)(param_2 + 8);
      plVar8 = (longlong *)*local_res20;
      uVar13 = uVar10;
      if (plVar8 != (longlong *)0x0) {
        do {
          uVar11 = (int)uVar13 + 1;
          uVar13 = (ulonglong)uVar11;
          plVar8 = (longlong *)*plVar8;
        } while (plVar8 != (longlong *)0x0);
        if (0 < (int)uVar11) {
          iVar7 = -1;
          uVar13 = (ulonglong)uVar11;
          plVar8 = local_res20;
          iVar12 = iVar7;
          do {
            while ((-1 < iVar7 && ((longlong *)*plVar8 != (longlong *)0x0))) {
              iVar7 = iVar7 + -1;
              plVar8 = (longlong *)*plVar8;
            }
            lVar1 = *plVar8;
            iVar7 = FUN_18049bb30(*(undefined8 *)(lVar1 + 0x18),*(undefined8 *)(param_1 + 0x50));
            if (iVar7 == 0) {
              uVar2 = *(undefined8 *)(param_1 + 0x58);
              puVar9 = *(undefined8 **)(lVar1 + 0x10);
              for (puVar3 = puVar9; puVar3 != (undefined8 *)0x0; puVar3 = (undefined8 *)*puVar3) {
                iVar7 = FUN_18048cbc0(puVar3[1],uVar2);
                if (iVar7 == 0) {
                  uVar4 = *(undefined8 *)(param_1 + 0x60);
                  goto joined_r0x000181197145;
                }
              }
            }
LAB_18119720d:
            iVar7 = iVar12 + 1;
            uVar13 = uVar13 - 1;
            plVar8 = local_res20;
            iVar12 = iVar7;
          } while (uVar13 != 0);
          if (uVar10 != 0) {
            FUN_1811bf680(uVar10,fVar16,1);
          }
        }
      }
    }
  }
  return;
joined_r0x000181197145:
  if (puVar9 == (undefined8 *)0x0) goto LAB_18119720d;
  iVar7 = FUN_18048cbc0(puVar9[1],uVar4);
  if (iVar7 == 0) {
    puVar9 = (undefined8 *)FUN_181246db0(lVar1,uVar2);
    uVar2 = *(undefined8 *)(param_1 + 0x60);
    uVar14 = nan(&DAT_1821d93ac);
    dVar15 = (double)FUN_181246d40(lVar1,uVar2,uVar14);
    cVar5 = FUN_181193f50(param_1,puVar9);
    if (cVar5 != '\0') {
      uVar10 = FUN_18119b4b0(param_1,*puVar9);
      fVar16 = (float)dVar15;
      local_res10 = dVar15;
      sVar6 = _dtest(&local_res10);
      if ((sVar6 != 2) && ((local_res18 != '\0' || ((*(uint *)(uVar10 + 0x260) >> 2 & 1) != 0)))) {
        FUN_1811bf680(uVar10,fVar16,0);
      }
    }
    goto LAB_18119720d;
  }
  puVar9 = (undefined8 *)*puVar9;
  goto joined_r0x000181197145;
}



############ FUN_ 1812118d0 size=289 ############

longlong * FUN_1812118d0(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  int iVar7;
  int iVar8;
  
  iVar8 = *(int *)((longlong)param_2 + 0xc);
  iVar7 = 0;
  if (0 < iVar8) {
    lVar6 = *param_2;
    lVar3 = *param_3;
    do {
      plVar1 = (longlong *)(lVar6 + (longlong)iVar7 * 8);
      if (lVar3 == *(longlong *)(lVar6 + (longlong)iVar7 * 8)) {
        iVar5 = 0;
      }
      else {
        iVar5 = FUN_18048cbc0(lVar3,*plVar1);
      }
      if (iVar5 == 0) {
        lVar6 = *plVar1;
LAB_1812119cb:
        uVar2 = *(uint *)(lVar6 + -0x10);
        *param_1 = lVar6;
        if ((uVar2 & 0x30000000) != 0) {
          return param_1;
        }
        LOCK();
        *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
        UNLOCK();
        return param_1;
      }
      iVar4 = (iVar8 + iVar7) / 2;
      if (iVar4 == iVar7) {
        if (0 < iVar5) {
          iVar7 = iVar7 + 1;
        }
        break;
      }
      plVar1 = (longlong *)(lVar6 + (longlong)iVar4 * 8);
      if (lVar3 == *(longlong *)(lVar6 + (longlong)iVar4 * 8)) {
        iVar5 = 0;
      }
      else {
        iVar5 = FUN_18048cbc0(lVar3,*plVar1);
      }
      if (iVar5 == 0) {
        lVar6 = *plVar1;
        goto LAB_1812119cb;
      }
      if (0 < iVar5) {
        iVar7 = iVar4;
        iVar4 = iVar8;
      }
      iVar8 = iVar4;
    } while (iVar7 < iVar8);
  }
  FUN_180489070(param_2,iVar7,param_3);
  lVar6 = *(longlong *)(*param_2 + (longlong)iVar7 * 8);
  *param_1 = lVar6;
  if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 181220a00 size=127 ############

undefined8 * FUN_181220a00(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  int iVar3;
  
  puVar1 = *(undefined8 **)(param_1 + 8);
  do {
    if (puVar1 == (undefined8 *)0x0) {
      return (undefined8 *)0x0;
    }
    for (puVar2 = (undefined8 *)puVar1[2]; puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar3 = FUN_18048cbc0(puVar2[1],param_2);
      if (iVar3 == 0) {
        iVar3 = FUN_18048cbc0(puVar2[2],param_3);
        if (iVar3 == 0) {
          return puVar1;
        }
        break;
      }
    }
    puVar1 = (undefined8 *)*puVar1;
  } while( true );
}



############ FUN_ 181220b50 size=107 ############

bool FUN_181220b50(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined8 **)(param_1 + 0x10);
  while( true ) {
    if (puVar1 == (undefined8 *)0x0) {
      return false;
    }
    iVar2 = FUN_18048cbc0(puVar1[1],param_2);
    if (iVar2 == 0) break;
    puVar1 = (undefined8 *)*puVar1;
  }
  iVar2 = FUN_18048cbc0(puVar1[2],param_3);
  return iVar2 == 0;
}



############ FUN_ 181220bd0 size=100 ############

int FUN_181220bd0(longlong param_1,undefined8 param_2,int param_3)

{
  undefined8 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined8 **)(param_1 + 0x10);
  while( true ) {
    if (puVar1 == (undefined8 *)0x0) {
      return param_3;
    }
    iVar2 = FUN_18048cbc0(puVar1[1],param_2);
    if (iVar2 == 0) break;
    puVar1 = (undefined8 *)*puVar1;
  }
                    /* WARNING: Could not recover jumptable at 0x000181220c2d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  iVar2 = atoi((char *)puVar1[2]);
  return iVar2;
}



############ FUN_ 181220ce0 size=83 ############

undefined8 * FUN_181220ce0(longlong param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined8 **)(param_1 + 0x10);
  while( true ) {
    if (puVar1 == (undefined8 *)0x0) {
      return (undefined8 *)0x0;
    }
    iVar2 = FUN_18048cbc0(puVar1[1],param_2);
    if (iVar2 == 0) break;
    puVar1 = (undefined8 *)*puVar1;
  }
  return puVar1;
}



############ FUN_ 1812276a0 size=117 ############

bool FUN_1812276a0(undefined8 *param_1,longlong *param_2)

{
  int *_Memory;
  int iVar1;
  int iVar2;
  longlong local_res8;
  
  (**(code **)(*(longlong *)*param_1 + 0x20))((longlong *)*param_1,&local_res8,param_1 + 1);
  if (local_res8 == *param_2) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(local_res8,*param_2);
  }
  _Memory = (int *)(local_res8 + -0x10);
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar2 != 0;
}



############ FUN_ 181233690 size=22 ############

bool FUN_181233690(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return -1 < iVar1;
}



############ FUN_ 1812336b0 size=22 ############

bool FUN_1812336b0(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return 0 < iVar1;
}



############ FUN_ 1812336d0 size=22 ############

bool FUN_1812336d0(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return iVar1 < 1;
}



############ FUN_ 1812336f0 size=22 ############

bool FUN_1812336f0(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return iVar1 != 0;
}



############ FUN_ 181233730 size=22 ############

bool FUN_181233730(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return iVar1 != 0;
}



############ FUN_ 1812383c0 size=189 ############

undefined8
FUN_1812383c0(int *param_1,longlong *param_2,int param_3,undefined8 param_4,undefined4 param_5)

{
  int iVar1;
  undefined8 uVar2;
  longlong lVar3;
  
  if (*param_1 < 0) {
LAB_1812383e7:
    uVar2 = 0xffffffff;
  }
  else {
    if (*(longlong *)(param_1 + 8) == 0) {
LAB_18123841c:
      lVar3 = FUN_181238b30();
      *(longlong *)(param_1 + 8) = lVar3;
      if (lVar3 == 0) goto LAB_1812383e7;
      FUN_181249460(param_1 + 4,param_2);
      param_1[6] = param_3;
    }
    else {
      if (*param_2 != *(longlong *)(param_1 + 4)) {
        iVar1 = FUN_18048cbc0(*param_2,*(longlong *)(param_1 + 4));
        if (iVar1 == 0) goto LAB_18123840d;
LAB_181238412:
        freeaddrinfo(*(undefined8 *)(param_1 + 8));
        goto LAB_18123841c;
      }
LAB_18123840d:
      if (param_3 != param_1[6]) goto LAB_181238412;
    }
    uVar2 = Ordinal_20((longlong)*param_1,param_4,param_5,0,
                       *(undefined8 *)(*(longlong *)(param_1 + 8) + 0x20),
                       *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x10));
  }
  return uVar2;
}



############ FUN_ 181239dc0 size=394 ############

undefined1 FUN_181239dc0(longlong *param_1,longlong *param_2)

{
  uint uVar1;
  bool bVar2;
  longlong lVar3;
  undefined1 uVar4;
  int iVar5;
  int iVar6;
  longlong *plVar7;
  uint *puVar8;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_28 [2];
  
  local_28[1] = 0xfffffffffffffffe;
  local_res10 = *param_2;
  iVar5 = FUN_180493050(&local_res10,0);
  iVar6 = 0;
  bVar2 = true;
  if (((iVar5 != 0x2d) || (iVar5 = FUN_180493050(&local_res10,1), iVar5 != 0x2d)) ||
     (iVar5 = FUN_180493050(&local_res10,2), iVar5 == 0x2d)) {
    bVar2 = false;
  }
  if (bVar2) {
    iVar5 = FUN_181249270(param_1,&DAT_1821d9d34);
    if (iVar5 < 0) {
      local_28[0] = *param_1;
      if ((*(uint *)(local_28[0] + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_28[0] + -0x10) = *(int *)(local_28[0] + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_1812490c0(param_1,local_28,0,iVar5);
    }
    lVar3 = local_28[0];
    if (local_28[0] != *param_2) {
      iVar6 = FUN_18048cbc0(local_28[0],*param_2);
    }
    uVar4 = iVar6 == 0;
    puVar8 = (uint *)(lVar3 + -0x10);
    if ((*puVar8 & 0x30000000) != 0) {
      return (bool)uVar4;
    }
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
  }
  else {
    FUN_18049c4e0(&local_res18,&DAT_1821d9d54);
    plVar7 = (longlong *)FUN_181232d30(&local_res18,param_2);
    local_res20 = *plVar7;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    puVar8 = (uint *)(local_res18 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    uVar4 = FUN_181239dc0(param_1,&local_res20);
    puVar8 = (uint *)(local_res20 + -0x10);
    if ((*puVar8 & 0x30000000) != 0) {
      return uVar4;
    }
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
  }
  if (uVar1 != 0) {
    return uVar4;
  }
                    /* WARNING: Subroutine does not return */
  free(puVar8);
}



############ FUN_ 18123b040 size=597 ############

double FUN_18123b040(undefined8 param_1,undefined8 *param_2,double *param_3,int param_4)

{
  int iVar1;
  double *pdVar2;
  undefined8 uVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  double dVar7;
  double dVar8;
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined1 local_38 [8];
  undefined1 local_30 [40];
  
  local_40 = 0xfffffffffffffffe;
  lVar6 = (longlong)param_4;
  if (0 < param_4) {
    iVar1 = FUN_18048cbc0(*param_2,&DAT_1821d9c0c);
    if (iVar1 == 0) {
      dVar8 = *param_3;
      lVar4 = 1;
      if (1 < lVar6) {
        if (3 < lVar6 + -1) {
          pdVar2 = param_3 + 3;
          lVar5 = (lVar6 - 5U >> 2) + 1;
          lVar4 = lVar5 * 4 + 1;
          do {
            dVar7 = pdVar2[-2];
            if (dVar8 <= pdVar2[-2]) {
              dVar7 = dVar8;
            }
            dVar8 = pdVar2[-1];
            if (dVar7 <= pdVar2[-1]) {
              dVar8 = dVar7;
            }
            dVar7 = *pdVar2;
            if (dVar8 <= *pdVar2) {
              dVar7 = dVar8;
            }
            dVar8 = pdVar2[1];
            if (dVar7 <= pdVar2[1]) {
              dVar8 = dVar7;
            }
            pdVar2 = pdVar2 + 4;
            lVar5 = lVar5 + -1;
          } while (lVar5 != 0);
        }
        for (; lVar4 < lVar6; lVar4 = lVar4 + 1) {
          dVar7 = param_3[lVar4];
          if (dVar8 <= param_3[lVar4]) {
            dVar7 = dVar8;
          }
          dVar8 = dVar7;
        }
      }
    }
    else {
      iVar1 = FUN_18048cbc0(*param_2,&DAT_1821d9c4c);
      if (iVar1 == 0) {
        dVar8 = *param_3;
        lVar4 = 1;
        if (1 < lVar6) {
          if (3 < lVar6 + -1) {
            pdVar2 = param_3 + 3;
            lVar5 = (lVar6 - 5U >> 2) + 1;
            lVar4 = lVar5 * 4 + 1;
            do {
              dVar7 = pdVar2[-2];
              if (pdVar2[-2] <= dVar8) {
                dVar7 = dVar8;
              }
              dVar8 = pdVar2[-1];
              if (pdVar2[-1] <= dVar7) {
                dVar8 = dVar7;
              }
              dVar7 = *pdVar2;
              if (*pdVar2 <= dVar8) {
                dVar7 = dVar8;
              }
              dVar8 = pdVar2[1];
              if (pdVar2[1] <= dVar7) {
                dVar8 = dVar7;
              }
              pdVar2 = pdVar2 + 4;
              lVar5 = lVar5 + -1;
            } while (lVar5 != 0);
          }
          for (; lVar4 < lVar6; lVar4 = lVar4 + 1) {
            dVar7 = param_3[lVar4];
            if (param_3[lVar4] <= dVar8) {
              dVar7 = dVar8;
            }
            dVar8 = dVar7;
          }
        }
      }
      else {
        if (param_4 != 1) goto LAB_18123b24e;
        iVar1 = FUN_18048cbc0(*param_2,&DAT_1821d9c34);
        if (iVar1 == 0) {
          dVar8 = sin(*param_3);
        }
        else {
          iVar1 = FUN_18048cbc0(*param_2,&DAT_1821d9c7c);
          if (iVar1 == 0) {
            dVar8 = cos(*param_3);
          }
          else {
            iVar1 = FUN_18048cbc0(*param_2,&DAT_1821d9c64);
            if (iVar1 == 0) {
              dVar8 = tan(*param_3);
            }
            else {
              iVar1 = FUN_18048cbc0(*param_2,&DAT_1821d9cac);
              if (iVar1 != 0) goto LAB_18123b24e;
              dVar8 = (double)CONCAT44((uint)((ulonglong)*param_3 >> 0x20) & DAT_1824c4f10._4_4_,
                                       SUB84(*param_3,0) & (uint)DAT_1824c4f10);
            }
          }
        }
      }
    }
    return dVar8;
  }
LAB_18123b24e:
  uVar3 = FUN_181246550(local_48,"Unknown function: \"",param_2);
  uVar3 = FUN_1812465e0(local_38,uVar3,&DAT_1821d9c9c);
  FUN_180493b80(local_30,uVar3);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException(local_30,(ThrowInfo *)&DAT_1825fede0);
}



############ FUN_ 18123b370 size=91 ############

undefined8 FUN_18123b370(longlong *param_1,longlong *param_2)

{
  int iVar1;
  
  if ((param_1[1] != param_2[1]) && (iVar1 = FUN_18048cbc0(param_1[1],param_2[1]), iVar1 != 0)) {
    return 0;
  }
  if ((*param_1 != *param_2) && (iVar1 = FUN_18048cbc0(*param_1,*param_2), iVar1 != 0)) {
    return 0;
  }
  return 1;
}



############ FUN_ 181241570 size=232 ############

bool FUN_181241570(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  LPCWSTR lpNewFileName;
  char cVar2;
  DWORD DVar3;
  int iVar4;
  BOOL BVar5;
  undefined8 *puVar6;
  bool bVar7;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  
  pcVar1 = (char *)*param_1;
  bVar7 = false;
  iVar4 = 0;
  if ((char *)*param_2 != pcVar1) {
    iVar4 = FUN_18048cbc0(*param_2,pcVar1,param_3,param_4,0xfffffffffffffffe);
  }
  if (iVar4 == 0) {
    return true;
  }
  if (*pcVar1 != '\0') {
    puVar6 = (undefined8 *)FUN_18049a930(local_res8,param_1);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar6);
    if (DVar3 != 0xffffffff) {
      bVar7 = true;
    }
  }
  if ((bVar7) &&
     (((*param_1 == *param_2 || (iVar4 = FUN_18049bb30(*param_1), iVar4 == 0)) ||
      (cVar2 = FUN_181244b10(param_2), cVar2 != '\0')))) {
    puVar6 = (undefined8 *)FUN_18049a930(local_res8,param_2);
    lpNewFileName = (LPCWSTR)*puVar6;
    puVar6 = (undefined8 *)FUN_18049a930(local_res10,param_1);
    BVar5 = MoveFileW((LPCWSTR)*puVar6,lpNewFileName);
    return BVar5 != 0;
  }
  return false;
}



############ FUN_ 181245d20 size=22 ############

bool FUN_181245d20(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return iVar1 < 0;
}



############ FUN_ 181247770 size=22 ############

bool FUN_181247770(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return iVar1 == 0;
}



############ FUN_ 1812477c0 size=108 ############

bool FUN_1812477c0(undefined8 *param_1,undefined8 param_2)

{
  int *_Memory;
  int iVar1;
  int iVar2;
  longlong local_res8;
  
  (**(code **)(*(longlong *)*param_1 + 0x20))((longlong *)*param_1,&local_res8,param_1 + 1);
  iVar2 = FUN_18048cbc0(local_res8,param_2);
  _Memory = (int *)(local_res8 + -0x10);
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar2 == 0;
}



############ FUN_ 1812482a0 size=45 ############

bool FUN_1812482a0(longlong *param_1,longlong *param_2)

{
  int iVar1;
  
  if (*param_1 == *param_2) {
    return false;
  }
  iVar1 = FUN_18048cbc0(*param_1,*param_2);
  return iVar1 != 0;
}



############ FUN_ 18124a340 size=45 ############

bool FUN_18124a340(longlong *param_1,longlong *param_2)

{
  int iVar1;
  
  if (*param_1 == *param_2) {
    return true;
  }
  iVar1 = FUN_18048cbc0(*param_1,*param_2);
  return iVar1 == 0;
}



############ FUN_ 18124a380 size=22 ############

bool FUN_18124a380(undefined8 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_18048cbc0(*param_1);
  return iVar1 == 0;
}



############ FUN_ 1812523e0 size=191 ############

void FUN_1812523e0(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 *puVar3;
  int iVar4;
  int *piVar5;
  
  if (*param_2 != *(longlong *)(*param_1 + 0x20)) {
    iVar4 = FUN_18048cbc0(*param_2,*(longlong *)(*param_1 + 0x20));
    if (iVar4 != 0) {
      FUN_181252760(param_1);
      lVar2 = *param_1;
      if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(*param_2 + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar1 = *(longlong *)(lVar2 + 0x20);
      *(longlong *)(lVar2 + 0x20) = *param_2;
      UNLOCK();
      piVar5 = (int *)(lVar1 + -0x10);
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar4 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      puVar3 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar3 != (undefined8 *)0x0) {
        LOCK();
        piVar5 = (int *)(puVar3 + 1);
        iVar4 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar4 == 1) {
          (**(code **)*puVar3)(puVar3,1);
        }
      }
      *(undefined4 *)(*param_1 + 0x34) = 0;
    }
  }
  return;
}



############ FUN_ 1812a3890 size=676 ############

void FUN_1812a3890(longlong param_1,longlong *param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  char cVar8;
  int iVar9;
  uint *puVar10;
  longlong *plVar11;
  bool bVar12;
  undefined1 local_res8;
  undefined8 uVar13;
  
  uVar13 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x2b0));
  plVar2 = (longlong *)(param_1 + 0x2e0);
  plVar11 = (longlong *)*plVar2;
  plVar4 = *(longlong **)(param_1 + 0x2e8);
  if (plVar11 != plVar4) {
    lVar5 = *param_2;
    do {
      iVar9 = 0;
      if (*plVar11 != lVar5) {
        iVar9 = FUN_18048cbc0(*plVar11,lVar5);
      }
      if (iVar9 == 0) {
        if (plVar11[1] == param_2[1]) {
          iVar9 = 0;
        }
        else {
          iVar9 = FUN_18048cbc0(plVar11[1],param_2[1]);
        }
        if (((iVar9 != 0) || (iVar9 = FUN_1812372b0(plVar11 + 2,param_2 + 2), iVar9 != 0)) ||
           (*(int *)((longlong)plVar11 + 0x24) != *(int *)((longlong)param_2 + 0x24))) {
          if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
            UNLOCK();
          }
          LOCK();
          lVar5 = *plVar11;
          *plVar11 = *param_2;
          UNLOCK();
          puVar10 = (uint *)(lVar5 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar3 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          if ((*(uint *)(param_2[1] + -0x10) & 0x30000000) == 0) {
            LOCK();
            piVar1 = (int *)(param_2[1] + -0x10);
            *piVar1 = *piVar1 + 1;
            UNLOCK();
          }
          LOCK();
          lVar5 = plVar11[1];
          plVar11[1] = param_2[1];
          UNLOCK();
          puVar10 = (uint *)(lVar5 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar3 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          uVar6 = *(undefined4 *)((longlong)param_2 + 0x14);
          lVar5 = param_2[3];
          uVar7 = *(undefined4 *)((longlong)param_2 + 0x1c);
          *(int *)(plVar11 + 2) = (int)param_2[2];
          *(undefined4 *)((longlong)plVar11 + 0x14) = uVar6;
          *(int *)(plVar11 + 3) = (int)lVar5;
          *(undefined4 *)((longlong)plVar11 + 0x1c) = uVar7;
          *(char *)(plVar11 + 4) = (char)param_2[4];
          *(undefined4 *)((longlong)plVar11 + 0x24) = *(undefined4 *)((longlong)param_2 + 0x24);
          plVar11[5] = param_2[5];
          piVar1 = (int *)(*(longlong *)(param_1 + 0x208) + 0x18);
          LOCK();
          bVar12 = *piVar1 == 0;
          if (bVar12) {
            *piVar1 = 1;
          }
          UNLOCK();
          if ((bVar12) && (cVar8 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x208)), cVar8 == '\0'))
          {
            LOCK();
            *(undefined4 *)(*(longlong *)(param_1 + 0x208) + 0x18) = 0;
            UNLOCK();
          }
        }
        plVar11[5] = param_2[5];
        goto LAB_1812a3b16;
      }
      plVar11 = plVar11 + 6;
    } while (plVar11 != plVar4);
  }
  if (*(longlong **)(param_1 + 0x2f0) == plVar4) {
    FUN_1804d2160(plVar2,plVar4,param_2);
  }
  else {
    lVar5 = *param_2;
    *plVar4 = lVar5;
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
      UNLOCK();
    }
    lVar5 = param_2[1];
    plVar4[1] = lVar5;
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
      UNLOCK();
    }
    uVar6 = *(undefined4 *)((longlong)param_2 + 0x14);
    lVar5 = param_2[3];
    uVar7 = *(undefined4 *)((longlong)param_2 + 0x1c);
    *(int *)(plVar4 + 2) = (int)param_2[2];
    *(undefined4 *)((longlong)plVar4 + 0x14) = uVar6;
    *(int *)(plVar4 + 3) = (int)lVar5;
    *(undefined4 *)((longlong)plVar4 + 0x1c) = uVar7;
    *(char *)(plVar4 + 4) = (char)param_2[4];
    *(undefined4 *)((longlong)plVar4 + 0x24) = *(undefined4 *)((longlong)param_2 + 0x24);
    plVar4[5] = param_2[5];
    *(longlong *)(param_1 + 0x2e8) = *(longlong *)(param_1 + 0x2e8) + 0x30;
  }
  lVar5 = *plVar2;
  FUN_1804d2350(lVar5,*(longlong *)(param_1 + 0x2e8),(*(longlong *)(param_1 + 0x2e8) - lVar5) / 0x30
                ,local_res8,uVar13,lVar5);
  piVar1 = (int *)(*(longlong *)(param_1 + 0x208) + 0x18);
  LOCK();
  bVar12 = *piVar1 == 0;
  if (bVar12) {
    *piVar1 = 1;
  }
  UNLOCK();
  if ((bVar12) && (cVar8 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x208)), cVar8 == '\0')) {
    LOCK();
    *(undefined4 *)(*(longlong *)(param_1 + 0x208) + 0x18) = 0;
    UNLOCK();
  }
LAB_1812a3b16:
                    /* WARNING: Could not recover jumptable at 0x0001812a3b2d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x2b0));
  return;
}



############ FUN_ 1812a3b80 size=573 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812a3b80(undefined8 param_1,longlong param_2)

{
  int *piVar1;
  uint uVar2;
  char cVar3;
  undefined1 *puVar4;
  undefined4 uVar5;
  int iVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  uint *puVar10;
  undefined1 auStack_c8 [32];
  longlong local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined1 *local_90;
  undefined1 *local_88;
  undefined8 local_80;
  undefined4 uStack_78;
  undefined2 uStack_74;
  undefined1 uStack_72;
  undefined1 uStack_71;
  undefined1 uStack_70;
  undefined4 local_6c;
  longlong local_68;
  longlong local_60;
  ushort local_58;
  undefined1 local_50 [24];
  ulonglong local_38;
  
  local_a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = &DAT_1821dbf98;
  local_88 = &DAT_1821dbf98;
  uStack_71 = 0;
  uStack_70 = 0;
  local_80 = 0;
  uStack_78 = 0;
  uStack_74 = 0;
  uStack_72 = 0;
  local_68 = 0;
  puVar8 = *(undefined8 **)(param_2 + 0x10);
  do {
    if (puVar8 == (undefined8 *)0x0) {
      plVar7 = (longlong *)FUN_181220d40();
LAB_1812a3c29:
      if ((*(uint *)(*plVar7 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar1 = (int *)(*plVar7 + -0x10);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
      puVar4 = (undefined1 *)*plVar7;
      LOCK();
      UNLOCK();
      puVar10 = (uint *)(local_90 + -0x10);
      local_90 = puVar4;
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar8 = (undefined8 *)FUN_181248e40(&local_90,&local_a8);
      cVar3 = *(char *)*puVar8;
      puVar10 = (uint *)(local_a8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      if (cVar3 != '\0') {
        plVar7 = (longlong *)FUN_181246db0(param_2,&DAT_1821e08e4);
        if ((*(uint *)(*plVar7 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar1 = (int *)(*plVar7 + -0x10);
          *piVar1 = *piVar1 + 1;
          UNLOCK();
        }
        puVar4 = (undefined1 *)*plVar7;
        LOCK();
        UNLOCK();
        puVar10 = (uint *)(local_88 + -0x10);
        local_88 = puVar4;
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        uVar9 = FUN_181246db0(param_2,"address");
        puVar8 = (undefined8 *)FUN_181237950(local_50,uVar9);
        local_80 = *puVar8;
        uStack_78 = *(undefined4 *)(puVar8 + 1);
        uVar5 = *(undefined4 *)((longlong)puVar8 + 0xc);
        uStack_74 = (undefined2)uVar5;
        uStack_72 = (undefined1)((uint)uVar5 >> 0x10);
        uStack_71 = (undefined1)((uint)uVar5 >> 0x18);
        uStack_70 = *(undefined1 *)(puVar8 + 2);
        local_6c = FUN_181220bd0(param_2,&DAT_1821e0914,0);
        _ftime64_s(&local_60);
        local_68 = local_60 * 1000 + (ulonglong)local_58;
        FUN_1812a3890(param_1,&local_90);
      }
      puVar10 = (uint *)(local_88 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_90 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
    }
    local_98 = puVar8[1];
    iVar6 = FUN_18048cbc0(local_98,&DAT_1821e0044);
    if (iVar6 == 0) {
      plVar7 = puVar8 + 2;
      goto LAB_1812a3c29;
    }
    puVar8 = (undefined8 *)*puVar8;
  } while( true );
}



############ FUN_ 1812b5a60 size=145 ############

undefined8 FUN_1812b5a60(longlong param_1,undefined8 param_2)

{
  char cVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  
  puVar4 = (undefined8 *)(*(undefined8 **)(param_1 + 0x68))[1];
  cVar1 = *(char *)((longlong)puVar4 + 0x19);
  puVar5 = *(undefined8 **)(param_1 + 0x68);
  while (cVar1 == '\0') {
    iVar2 = FUN_18048cbc0(puVar4[4],param_2);
    if (iVar2 < 0) {
      puVar6 = (undefined8 *)puVar4[2];
      puVar4 = puVar5;
    }
    else {
      puVar6 = (undefined8 *)*puVar4;
    }
    puVar5 = puVar4;
    puVar4 = puVar6;
    cVar1 = *(char *)((longlong)puVar6 + 0x19);
  }
  if ((puVar5 == *(undefined8 **)(param_1 + 0x68)) ||
     (iVar2 = FUN_18048cbc0(param_2,puVar5[4]), iVar2 < 0)) {
    puVar5 = *(undefined8 **)(param_1 + 0x68);
  }
  if (puVar5 == *(undefined8 **)(param_1 + 0x68)) {
    uVar3 = 0;
  }
  else {
    uVar3 = puVar5[5];
  }
  return uVar3;
}



############ FUN_ 1812b89f0 size=486 ############

ulonglong FUN_1812b89f0(longlong param_1,int param_2)

{
  uint *puVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  int iVar8;
  longlong lVar9;
  void *local_a8;
  undefined8 local_a0;
  undefined1 local_98 [96];
  
  lVar4 = *(longlong *)(param_1 + 200);
  lpCriticalSection = (LPCRITICAL_SECTION)(lVar4 + 0x8c);
  EnterCriticalSection(lpCriticalSection);
  iVar3 = *(int *)(lVar4 + 0x44);
  LeaveCriticalSection(lpCriticalSection);
  lVar4 = *(longlong *)(param_1 + 200);
  if (param_2 < iVar3) {
    EnterCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0x8c));
    iVar3 = *(int *)(lVar4 + 0x44);
    uVar5 = *(undefined8 *)(lVar4 + 0x38);
    local_a8 = (void *)0x0;
    local_a0 = 0;
    iVar8 = 0;
    if (0 < iVar3) {
      FUN_1804dcaa0(&local_a8,iVar3 + 8 + iVar3 / 2 & 0xfffffff8);
      iVar8 = local_a0._4_4_;
    }
    FUN_1804e14e0(&local_a8,uVar5,iVar3);
    local_a0 = CONCAT44(iVar8 + iVar3,(undefined4)local_a0);
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0x8c));
    uVar5 = FUN_1804db2a0(&local_a8,local_98,param_2);
    FUN_1812baf10(*(undefined8 *)(param_1 + 200),uVar5);
    FUN_1804d7190(local_98);
    FUN_1804dca40(&local_a8);
                    /* WARNING: Subroutine does not return */
    free(local_a8);
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0x8c));
  iVar3 = *(int *)(lVar4 + 0x44);
  LeaveCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0x8c));
  puVar6 = (undefined8 *)FUN_181249970(*(longlong *)(param_1 + 200) + 0x48,param_2 - iVar3);
  lVar4 = *(longlong *)(param_1 + 200);
  iVar8 = 0;
  uVar5 = *puVar6;
  iVar3 = *(int *)(lVar4 + 0x54);
  uVar7 = (longlong)iVar3;
  if (0 < iVar3) {
    lVar9 = 0;
    do {
      uVar7 = FUN_18048cbc0(uVar5);
      if ((int)uVar7 == 0) {
        if (iVar8 < 0) {
          return uVar7;
        }
        FUN_180488fc0(lVar4 + 0x48,iVar8);
        if (*(char *)(lVar4 + 0x30) == '\0') {
          return 0;
        }
        uVar7 = 0;
        puVar1 = (uint *)(*(longlong *)(lVar4 + 0x10) + 0x18);
        LOCK();
        uVar2 = *puVar1;
        if (uVar2 == 0) {
          *puVar1 = 1;
        }
        else {
          uVar7 = (ulonglong)uVar2;
        }
        UNLOCK();
        if (uVar2 != 0) {
          return uVar7;
        }
        uVar7 = FUN_1812a6720(*(undefined8 *)(lVar4 + 0x10));
        if ((char)uVar7 != '\0') {
          return uVar7;
        }
        uVar7 = *(ulonglong *)(lVar4 + 0x10);
        LOCK();
        *(undefined4 *)(uVar7 + 0x18) = 0;
        UNLOCK();
        return uVar7;
      }
      iVar8 = iVar8 + 1;
      lVar9 = lVar9 + 1;
    } while (lVar9 < iVar3);
  }
  return uVar7;
}



############ FUN_ 1812b8bf0 size=708 ############

void FUN_1812b8bf0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong *plVar5;
  char cVar6;
  int iVar7;
  longlong *plVar8;
  uint *puVar9;
  undefined8 *puVar10;
  void *pvVar11;
  int iVar12;
  longlong local_res8;
  undefined8 uVar13;
  void *local_a0;
  undefined8 local_98;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  
  uVar13 = 0xfffffffffffffffe;
  lVar3 = *(longlong *)(param_1 + 200);
  EnterCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x8c));
  local_a0 = (void *)0x0;
  local_98 = 0;
  iVar12 = *(int *)(lVar3 + 0x44);
  uVar4 = *(undefined8 *)(lVar3 + 0x38);
  iVar7 = 0;
  if (0 < iVar12) {
    FUN_1804dcaa0(&local_a0,iVar12 + 8 + iVar12 / 2 & 0xfffffff8);
    iVar7 = local_98._4_4_;
  }
  pvVar11 = local_a0;
  FUN_1804e14e0(&local_a0,uVar4,iVar12,param_4,uVar13);
  local_98 = CONCAT44(iVar7 + iVar12,(undefined4)local_98);
  LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 0x8c));
  iVar12 = iVar7 + iVar12 + -1;
  if (-1 < iVar12) {
    pvVar11 = (void *)((longlong)iVar12 * 0x60 + (longlong)pvVar11);
    do {
      FUN_1804d7090(&local_88,pvVar11);
      puVar10 = (undefined8 *)**(longlong **)(param_1 + 0xc0);
      puVar1 = puVar10 + *(int *)((longlong)*(longlong **)(param_1 + 0xc0) + 0xc);
      for (; puVar10 != puVar1; puVar10 = puVar10 + 1) {
        plVar5 = (longlong *)*puVar10;
        plVar8 = (longlong *)(**(code **)(*plVar5 + 0x10))(plVar5,&local_res8);
        if (*plVar8 == local_78) {
          iVar7 = 0;
        }
        else {
          iVar7 = FUN_18048cbc0(*plVar8);
        }
        puVar9 = (uint *)(local_res8 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        if (iVar7 == 0) {
          cVar6 = (**(code **)(*plVar5 + 0x38))(plVar5,&local_88);
          if (cVar6 != '\0') goto LAB_1812b8d68;
          break;
        }
      }
      FUN_1812baf10(*(undefined8 *)(param_1 + 200),&local_88);
LAB_1812b8d68:
      puVar9 = (uint *)(local_58 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_60 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_68 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_70 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_78 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_80 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_88 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      pvVar11 = (void *)((longlong)pvVar11 + -0x60);
      iVar12 = iVar12 + -1;
    } while (-1 < iVar12);
  }
  FUN_1804dca40(&local_a0);
                    /* WARNING: Could not recover jumptable at 0x0001812b8ead. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_a0);
  return;
}



############ FUN_ 1812ba350 size=207 ############

ulonglong FUN_1812ba350(longlong param_1,undefined8 *param_2)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  undefined8 uVar4;
  ulonglong uVar5;
  int iVar6;
  longlong lVar7;
  
  iVar3 = *(int *)(param_1 + 0x54);
  uVar4 = *param_2;
  iVar6 = 0;
  uVar5 = (longlong)iVar3;
  if (0 < iVar3) {
    lVar7 = 0;
    do {
      uVar5 = FUN_18048cbc0(uVar4);
      if ((int)uVar5 == 0) {
        if (iVar6 < 0) {
          return uVar5;
        }
        FUN_180488fc0(param_1 + 0x48,iVar6);
        if (*(char *)(param_1 + 0x30) == '\0') {
          return 0;
        }
        uVar5 = 0;
        puVar1 = (uint *)(*(longlong *)(param_1 + 0x10) + 0x18);
        LOCK();
        uVar2 = *puVar1;
        if (uVar2 == 0) {
          *puVar1 = 1;
        }
        else {
          uVar5 = (ulonglong)uVar2;
        }
        UNLOCK();
        if (uVar2 != 0) {
          return uVar5;
        }
        uVar5 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10));
        if ((char)uVar5 != '\0') {
          return uVar5;
        }
        uVar5 = *(ulonglong *)(param_1 + 0x10);
        LOCK();
        *(undefined4 *)(uVar5 + 0x18) = 0;
        UNLOCK();
        return uVar5;
      }
      iVar6 = iVar6 + 1;
      lVar7 = lVar7 + 1;
    } while (lVar7 < iVar3);
  }
  return uVar5;
}



############ FUN_ 1812bae10 size=237 ############

ulonglong FUN_1812bae10(longlong param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  char cVar1;
  int iVar2;
  longlong *plVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  LPCRITICAL_SECTION local_res20;
  
  plVar3 = (longlong *)FUN_1812bb2e0(param_1,&local_res20,param_2,param_4,0xfffffffffffffffe);
  if (local_res20 != (LPCRITICAL_SECTION)0x0) {
    FUN_1804d7190(local_res20);
                    /* WARNING: Subroutine does not return */
    free(local_res20);
  }
  if (*plVar3 == 0) {
    uVar4 = (ulonglong)plVar3 & 0xffffffffffffff00;
  }
  else {
    lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x8c);
    local_res20 = lpCriticalSection;
    EnterCriticalSection(lpCriticalSection);
    lVar5 = *(longlong *)(param_1 + 0x38);
    lVar6 = (longlong)*(int *)(param_1 + 0x44) * 0x60 + lVar5;
    for (; lVar5 != lVar6; lVar5 = lVar5 + 0x60) {
      if (*(longlong *)(lVar5 + 0x30) == *param_2) {
        iVar2 = 0;
      }
      else {
        iVar2 = FUN_18048cbc0(*(undefined8 *)(lVar5 + 0x30),*param_2);
      }
      if (iVar2 == 0) {
        cVar1 = (**(code **)(*param_3 + 0x30))(param_3,lVar5);
        if (cVar1 != '\0') {
          uVar4 = 0;
          goto LAB_1812baede;
        }
      }
    }
    uVar4 = 1;
LAB_1812baede:
    LeaveCriticalSection(lpCriticalSection);
  }
  return uVar4;
}



############ FUN_ 1812bb7a0 size=79 ############

ulonglong FUN_1812bb7a0(longlong param_1,longlong param_2)

{
  ulonglong uVar1;
  
  if (*(longlong *)(param_1 + 0x30) != *(longlong *)(param_2 + 0x30)) {
    uVar1 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x30),*(longlong *)(param_2 + 0x30));
    if ((int)uVar1 != 0) goto LAB_1812bb7e2;
  }
  uVar1 = (ulonglong)*(uint *)(param_2 + 0x48);
  if (*(uint *)(param_1 + 0x48) == *(uint *)(param_2 + 0x48)) {
    return 1;
  }
LAB_1812bb7e2:
  return uVar1 & 0xffffffffffffff00;
}



############ FUN_ 1812c22f0 size=183 ############

ulonglong FUN_1812c22f0(longlong *param_1,longlong param_2)

{
  undefined8 *puVar1;
  longlong *plVar2;
  int iVar3;
  uint uVar4;
  ulonglong uVar5;
  longlong *plVar6;
  uint *_Memory;
  undefined8 *puVar7;
  longlong local_res8;
  
  puVar7 = (undefined8 *)*param_1;
  uVar5 = (ulonglong)*(int *)((longlong)param_1 + 0xc);
  puVar1 = puVar7 + uVar5;
  while( true ) {
    if (puVar7 == puVar1) {
      return uVar5 & 0xffffffffffffff00;
    }
    plVar2 = (longlong *)*puVar7;
    plVar6 = (longlong *)(**(code **)(*plVar2 + 0x10))(plVar2,&local_res8);
    if (*plVar6 == *(longlong *)(param_2 + 0x10)) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_18048cbc0(*plVar6,*(longlong *)(param_2 + 0x10));
    }
    _Memory = (uint *)(local_res8 + -0x10);
    uVar4 = *_Memory;
    if ((uVar4 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      uVar4 = uVar4 - 1;
      if (uVar4 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    uVar5 = (ulonglong)uVar4;
    if (iVar3 == 0) break;
    puVar7 = puVar7 + 1;
  }
  uVar5 = (**(code **)(*plVar2 + 0x38))(plVar2,param_2);
  return uVar5;
}



############ FUN_ 1812cb570 size=178 ############

longlong * FUN_1812cb570(longlong param_1,longlong *param_2,longlong *param_3)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  ulonglong uVar4;
  uint uVar5;
  ulonglong uVar6;
  
  uVar4 = 0;
  *param_2 = 0;
  param_2[1] = 0;
  uVar6 = uVar4;
  if (0 < *(int *)(param_1 + 0x24)) {
    do {
      puVar2 = *(undefined4 **)(uVar4 + *(longlong *)(param_1 + 0x18));
      if ((*(longlong *)(puVar2 + 6) == *param_3) ||
         (iVar3 = FUN_18048cbc0(*(undefined8 *)(puVar2 + 6),*param_3), iVar3 == 0)) {
        iVar1 = *(int *)((longlong)param_2 + 0xc);
        iVar3 = iVar1 + 1;
        if ((int)param_2[1] < iVar3) {
          if (iVar3 < 0) {
            iVar3 = iVar1 + 2;
          }
          FUN_1804af790(param_2,iVar1 + 9 + (iVar3 >> 1) & 0xfffffff8);
        }
        iVar3 = *(int *)((longlong)param_2 + 0xc);
        *(int *)((longlong)param_2 + 0xc) = iVar3 + 1;
        *(undefined4 *)(*param_2 + (longlong)iVar3 * 4) = *puVar2;
      }
      uVar5 = (int)uVar6 + 1;
      uVar4 = uVar4 + 8;
      uVar6 = (ulonglong)uVar5;
    } while ((int)uVar5 < *(int *)(param_1 + 0x24));
  }
  return param_2;
}



############ FUN_ 1812cb630 size=273 ############

undefined8 * FUN_1812cb630(longlong param_1,undefined8 *param_2)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  undefined8 *puVar5;
  longlong lVar6;
  int iVar7;
  longlong lVar8;
  longlong local_res10;
  longlong local_res18;
  undefined8 local_res20;
  
  *param_2 = 0;
  iVar7 = 0;
  param_2[1] = 0;
  if (0 < *(int *)(param_1 + 0x24)) {
    lVar8 = 0;
    do {
      iVar4 = 0;
      lVar6 = 0;
      iVar1 = *(int *)((longlong)param_2 + 0xc);
      lVar2 = *(longlong *)(*(longlong *)(*(longlong *)(param_1 + 0x18) + lVar8) + 0x18);
      local_res18 = lVar2;
      if (0 < iVar1) {
        puVar5 = (undefined8 *)*param_2;
        do {
          local_res20 = *puVar5;
          iVar3 = FUN_18048cbc0(lVar2);
          if (iVar3 == 0) {
            if (-1 < iVar4) goto LAB_1812cb701;
            break;
          }
          iVar4 = iVar4 + 1;
          lVar6 = lVar6 + 1;
          puVar5 = puVar5 + 1;
        } while (lVar6 < iVar1);
      }
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
        UNLOCK();
      }
      local_res10 = lVar2;
      FUN_18122dc00(param_2,&local_res10);
LAB_1812cb701:
      iVar7 = iVar7 + 1;
      lVar8 = lVar8 + 8;
    } while (iVar7 < *(int *)(param_1 + 0x24));
  }
  return param_2;
}



############ FUN_ 1812d08b0 size=96 ############

void FUN_1812d08b0(longlong param_1,longlong *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined1 local_18 [16];
  
  if (*param_2 != *(longlong *)(param_1 + 8)) {
    iVar1 = FUN_18048cbc0(*param_2,*(longlong *)(param_1 + 8));
    if (iVar1 != 0) {
      .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2);
      puVar2 = (undefined4 *)FUN_1812d01c0(param_1,local_18);
      local_28 = *puVar2;
      uStack_24 = puVar2[1];
      uStack_20 = puVar2[2];
      uStack_1c = puVar2[3];
      FUN_181342a30(param_1,&local_28);
    }
  }
  return;
}



############ FUN_ 1812d4e70 size=143 ############

undefined8 * FUN_1812d4e70(longlong param_1,undefined8 *param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  
  plVar5 = *(longlong **)(param_1 + 0x150);
  plVar1 = plVar5 + *(int *)(param_1 + 0x15c);
  if (plVar5 != plVar1) {
    lVar2 = *param_3;
    do {
      lVar3 = *plVar5;
      if ((*(longlong *)(lVar3 + 8) == lVar2) ||
         (iVar4 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 8),lVar2), iVar4 == 0)) {
        if (lVar3 != 0) {
          FUN_1812dc020(lVar3,param_2);
          return param_2;
        }
        break;
      }
      plVar5 = plVar5 + 1;
    } while (plVar5 != plVar1);
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 1812d4f10 size=120 ############

longlong FUN_1812d4f10(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  
  plVar5 = *(longlong **)(param_1 + 0x150);
  plVar1 = plVar5 + *(int *)(param_1 + 0x15c);
  if (plVar5 != plVar1) {
    lVar2 = *param_2;
    do {
      lVar3 = *plVar5;
      if (*(longlong *)(lVar3 + 8) == lVar2) {
        return lVar3;
      }
      iVar4 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 8),lVar2);
      if (iVar4 == 0) {
        return lVar3;
      }
      plVar5 = plVar5 + 1;
    } while (plVar5 != plVar1);
  }
  return 0;
}



############ FUN_ 1812d9f80 size=146 ############

longlong FUN_1812d9f80(longlong param_1,undefined8 *param_2)

{
  uint *_Memory;
  int iVar1;
  uint uVar2;
  longlong local_res10;
  
  (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,&local_res10,param_2 + 1);
  iVar1 = FUN_18048cbc0(local_res10,"_toolbarItem_");
  _Memory = (uint *)(local_res10 + -0x10);
  uVar2 = *_Memory;
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    uVar2 = uVar2 - 1;
    if (uVar2 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((iVar1 == 0) && (*(char *)(param_1 + 0x11) != '\0')) {
    return 1;
  }
  return (ulonglong)(uVar2 >> 8) << 8;
}



############ FUN_ 1812e64a0 size=351 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812e64a0(longlong param_1)

{
  double dVar1;
  longlong lVar2;
  int iVar3;
  DWORD DVar4;
  int iVar5;
  int *piVar6;
  double extraout_XMM0_Qa;
  double dVar7;
  double dVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined8 local_28;
  undefined8 uStack_20;
  
  dVar1 = **(double **)(param_1 + 0x18);
  DVar4 = timeGetTime();
  if (DVar4 < DAT_1826737fc) {
    if (DVar4 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar4;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar4;
  }
  dVar8 = *(double *)(param_1 + 0x20);
  iVar3 = *(int *)(param_1 + 0x40);
  uVar9 = 0;
  uVar10 = 0;
  *(DWORD *)(param_1 + 0x40) = DVar4;
  dVar7 = DAT_1824c4140;
  if ((((dVar8 != dVar1) || (dVar1 < 0.0)) || (DAT_1824c4140 <= dVar1)) ||
     ((*(longlong *)(param_1 + 0x38) != *(longlong *)(param_1 + 0x30) &&
      (iVar5 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x38),*(longlong *)(param_1 + 0x30)),
      dVar7 = extraout_XMM0_Qa, iVar5 != 0)))) {
    if ((((dVar8 < dVar1) && (((double)CONCAT44(uVar10,uVar9) <= dVar1 && (dVar1 < dVar7)))) &&
        ((double)CONCAT44(uVar10,uVar9) <= dVar8)) &&
       ((dVar8 < dVar7 &&
        (dVar8 = (double)(int)(DVar4 - iVar3) * _DAT_1824c3e20 + dVar8, dVar8 <= dVar1)))) {
      dVar1 = dVar8;
    }
    *(double *)(param_1 + 0x20) = dVar1;
    if ((*(uint *)(*(longlong *)(param_1 + 0x30) + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar6 = (int *)(*(longlong *)(param_1 + 0x30) + -0x10);
      *piVar6 = *piVar6 + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *(longlong *)(param_1 + 0x38);
    *(longlong *)(param_1 + 0x38) = *(longlong *)(param_1 + 0x30);
    UNLOCK();
    piVar6 = (int *)(lVar2 + -0x10);
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar3 = *piVar6;
      *piVar6 = *piVar6 + -1;
      UNLOCK();
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar6);
      }
    }
    uStack_20 = *(undefined8 *)(param_1 + -0x98);
    local_28 = 0;
    FUN_181342870(param_1 + -0xc0,&local_28,1);
  }
  return;
}



############ FUN_ 1812e9eb0 size=314 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e9eb0(longlong param_1)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  uint *puVar4;
  undefined1 auStack_68 [32];
  longlong local_48;
  longlong local_40 [2];
  longlong *local_30;
  undefined1 local_28 [8];
  longlong *local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_40[1] = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  puVar3 = (undefined8 *)
           (**(code **)(**(longlong **)(param_1 + 200) + 8))
                     (*(longlong **)(param_1 + 200),&local_30);
  (**(code **)(*(longlong *)*puVar3 + 0x20))((longlong *)*puVar3,local_40,puVar3 + 1);
  (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  if (*(longlong *)(param_1 + 0xe0) == local_40[0]) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0xe0),local_40[0]);
  }
  puVar4 = (uint *)(local_40[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (iVar2 != 0) {
    puVar3 = (undefined8 *)
             (**(code **)(**(longlong **)(param_1 + 200) + 8))
                       (*(longlong **)(param_1 + 200),&local_20);
    (**(code **)(*(longlong *)*puVar3 + 0x20))((longlong *)*puVar3,&local_48,puVar3 + 1);
    (**(code **)(*local_20 + 0xb0))(local_20,local_18);
    FUN_181349c50(param_1 + -0xd0,&local_48,1);
    puVar4 = (uint *)(local_48 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
}



############ FUN_ 181349390 size=408 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181349390(longlong param_1)

{
  uint uVar1;
  undefined1 *puVar2;
  char cVar3;
  int iVar4;
  undefined8 *puVar5;
  uint *puVar6;
  undefined1 auStack_98 [32];
  undefined1 *local_78;
  undefined1 *local_70;
  undefined1 local_68 [24];
  void *local_50;
  longlong local_40;
  undefined8 local_38;
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_38 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_98;
  (**(code **)(**(longlong **)(param_1 + 0x138) + 8))(*(longlong **)(param_1 + 0x138),&local_30);
  iVar4 = (**(code **)(*local_30 + 8))(local_30,local_28);
  if (iVar4 == 0) {
    (**(code **)(*local_30 + 0xb0))(local_30,local_28);
    puVar5 = (undefined8 *)FUN_1812ebeb0(param_1,0xffffffff);
    if (puVar5 == (undefined8 *)0x0) {
      local_78 = &DAT_1821dbf98;
    }
    else {
      local_78 = (undefined1 *)*puVar5;
      if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
        UNLOCK();
      }
    }
    puVar2 = local_78;
    FUN_1812ea010(*(undefined8 *)(param_1 + 0x170),&local_70);
    if (local_70 != puVar2) {
      FUN_18048cbc0(local_70,puVar2);
    }
    puVar6 = (uint *)(local_70 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_78 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  FUN_1812efe40(local_68,param_1 + 0x118,1);
  cVar3 = FUN_1812efb00(local_68);
  while( true ) {
    if (cVar3 == '\0') {
                    /* WARNING: Subroutine does not return */
      free(local_50);
    }
    if (*(int *)(local_40 + 8) == iVar4) break;
    cVar3 = FUN_1812efb00(local_68);
  }
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1812ecda0 size=328 ############

void FUN_1812ecda0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong lVar5;
  uint *puVar6;
  int iVar7;
  bool bVar8;
  undefined8 *local_res8;
  longlong local_res10;
  longlong local_res18 [2];
  
  FUN_1812ea010(param_1[0x1a],&local_res10,param_3,param_4,0xfffffffffffffffe);
  plVar4 = (longlong *)(**(code **)(*param_1 + 0x168))(param_1,local_res18);
  if (*plVar4 == local_res10) {
    iVar7 = 0;
  }
  else {
    iVar7 = FUN_18048cbc0(*plVar4);
  }
  puVar6 = (uint *)(local_res18[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (iVar7 != 0) {
    (**(code **)(*param_1 + 0x160))(param_1,&local_res10);
  }
  FUN_1804de690(&local_res8,param_1);
  puVar3 = local_res8;
  iVar7 = *(int *)((longlong)param_1 + 0xe4);
  bVar8 = local_res8 == (undefined8 *)0x0;
  while( true ) {
    if (bVar8) {
      lVar5 = 0;
    }
    else {
      lVar5 = puVar3[2];
    }
    if ((lVar5 == 0) || (iVar7 < 1)) break;
    iVar7 = iVar7 + -1;
    if ((*(int *)((longlong)param_1 + 0xe4) <= iVar7) &&
       (iVar7 = *(int *)((longlong)param_1 + 0xe4) + -1, iVar7 < 0)) break;
    plVar4 = *(longlong **)(param_1[0x1b] + (longlong)iVar7 * 8);
    (**(code **)(*plVar4 + 8))(plVar4,param_1);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  puVar6 = (uint *)(local_res10 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return;
}



############ FUN_ 1812edc10 size=550 ############

void FUN_1812edc10(longlong param_1)

{
  uint *_Memory;
  longlong *plVar1;
  undefined8 *puVar2;
  uint uVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  undefined8 *puVar9;
  char *local_res18;
  char *local_res20;
  
  plVar1 = (longlong *)(param_1 + 0xd8);
  (**(code **)(*plVar1 + 0x58))(plVar1,1);
  FUN_181343cc0(param_1,plVar1,0xffffffff);
  puVar9 = *(undefined8 **)(param_1 + 200);
  puVar2 = puVar9 + *(int *)(param_1 + 0xd4);
  do {
    if (puVar9 == puVar2) {
      lVar8 = *(longlong *)(param_1 + 0x248);
      if ((*(char *)(lVar8 + 0x200) != '\0') || (*(char *)(lVar8 + 0x201) != '\0')) {
        *(undefined2 *)(lVar8 + 0x200) = 0;
        *(undefined1 *)(lVar8 + 0x202) = 0;
        *(byte *)(lVar8 + 0xa8) = *(byte *)(lVar8 + 0xa8) & 0x9f;
        *(undefined4 *)(param_1 + 0x260) = 1;
        *(byte *)(param_1 + 0x180) = *(byte *)(param_1 + 0x180) | 0x20;
        if (*(code **)(*plVar1 + 0x108) == FUN_1812eb3c0) {
          if ((0 < *(int *)(param_1 + 0x104)) && (0 < *(int *)(param_1 + 0x100))) {
            lVar8 = FUN_18134adf0(plVar1);
            (**(code **)(*(longlong *)(lVar8 + 0x48) + 0x20))
                      ((longlong *)(lVar8 + 0x48),plVar1,*(undefined8 *)(param_1 + 0x248));
          }
        }
        else {
          (**(code **)(*plVar1 + 0x108))(plVar1);
        }
      }
      return;
    }
    pcVar5 = (char *)*puVar9;
    _Memory = (uint *)(pcVar5 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    local_res20 = pcVar5;
    if (*pcVar5 == '\0') {
      FUN_181348300(param_1 + 0x1f0);
    }
    else {
      iVar7 = 0;
      lVar8 = 0;
      iVar4 = *(int *)(param_1 + 0xd4);
      if (0 < iVar4) {
        do {
          iVar6 = FUN_18048cbc0(pcVar5);
          if (iVar6 == 0) goto LAB_1812edd07;
          iVar7 = iVar7 + 1;
          lVar8 = lVar8 + 1;
        } while (lVar8 < iVar4);
      }
      iVar7 = -1;
LAB_1812edd07:
      if (iVar7 + 1 != 0) {
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          *_Memory = *_Memory + 1;
          UNLOCK();
        }
        local_res18 = pcVar5;
        FUN_1813486a0(param_1 + 0x1f0,iVar7 + 1,&local_res18,1,0);
      }
    }
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar9 = puVar9 + 1;
  } while( true );
}



############ FUN_ 1812ed840 size=958 ############

void FUN_1812ed840(longlong param_1,undefined8 *param_2)

{
  uint uVar1;
  int iVar2;
  char *pcVar3;
  bool bVar4;
  bool bVar5;
  int iVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  uint *puVar9;
  uint *_Memory;
  undefined8 *puVar10;
  undefined8 *puVar11;
  longlong lVar12;
  int iVar13;
  longlong local_res20;
  longlong local_a0;
  longlong local_98;
  char *local_90;
  longlong local_88;
  longlong local_80;
  char *local_78;
  char *local_70;
  char *local_68;
  longlong *local_60;
  undefined8 local_58;
  undefined8 local_50;
  
  local_58 = 0xfffffffffffffffe;
  plVar7 = (longlong *)(param_1 + 0xd8);
  local_60 = plVar7;
  (**(code **)(*plVar7 + 0x58))(plVar7,1);
  FUN_181343cc0(param_1,plVar7,0xffffffff);
  if (*(char *)*param_2 == '\0') {
    FUN_18049c4e0(&local_88,&DAT_1821d8f4f);
    plVar7 = &local_88;
    bVar5 = true;
    bVar4 = false;
  }
  else {
    FUN_18049c4e0(&local_a0,&DAT_1821e2fb4);
    plVar7 = (longlong *)FUN_181232d30(&local_a0,param_2);
    local_res20 = *plVar7;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    puVar9 = (uint *)(local_a0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    FUN_181232e20(&local_res20,&DAT_1821e2fd4,&DAT_1821e2fd5);
    local_80 = local_res20;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    puVar9 = (uint *)(local_res20 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    plVar7 = &local_80;
    bVar5 = false;
    bVar4 = true;
  }
  FUN_18049c4e0(&local_98,"Default");
  puVar8 = (undefined8 *)FUN_181232d30(&local_98,plVar7);
  local_70 = (char *)*puVar8;
  puVar9 = (uint *)(local_70 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    *puVar9 = *puVar9 + 1;
    UNLOCK();
  }
  _Memory = (uint *)(local_98 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (*local_70 != '\0') {
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      *puVar9 = *puVar9 + 1;
      UNLOCK();
    }
    local_90 = local_70;
    FUN_1813486a0(param_1 + 0x1f0,0xffffffff,&local_90,1,0);
  }
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if ((bVar5) && (puVar9 = (uint *)(local_88 + -0x10), (*puVar9 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if ((bVar4) && (puVar9 = (uint *)(local_80 + -0x10), (*puVar9 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar8 = *(undefined8 **)(param_1 + 200);
  puVar11 = puVar8 + *(int *)(param_1 + 0xd4);
  do {
    if (puVar8 == puVar11) {
      FUN_1812ec210(local_60,0);
      return;
    }
    pcVar3 = (char *)*puVar8;
    puVar9 = (uint *)(pcVar3 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      *puVar9 = *puVar9 + 1;
      UNLOCK();
    }
    local_68 = pcVar3;
    if (*pcVar3 == '\0') {
      FUN_181348300(param_1 + 0x1f0);
    }
    else {
      iVar13 = 0;
      lVar12 = 0;
      iVar2 = *(int *)(param_1 + 0xd4);
      if (0 < iVar2) {
        puVar10 = *(undefined8 **)(param_1 + 200);
        do {
          local_50 = *puVar10;
          iVar6 = FUN_18048cbc0(pcVar3);
          if (iVar6 == 0) goto LAB_1812edb58;
          iVar13 = iVar13 + 1;
          lVar12 = lVar12 + 1;
          puVar10 = puVar10 + 1;
        } while (lVar12 < iVar2);
      }
      iVar13 = -1;
LAB_1812edb58:
      if (iVar13 + 1 != 0) {
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          *puVar9 = *puVar9 + 1;
          UNLOCK();
        }
        local_78 = pcVar3;
        FUN_1813486a0(param_1 + 0x1f0,iVar13 + 1,&local_78,1,0);
      }
    }
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar8 = puVar8 + 1;
  } while( true );
}



############ FUN_ 1812ef1f0 size=129 ############

longlong FUN_1812ef1f0(longlong param_1,undefined8 *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  longlong *plVar5;
  
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x18);
  if (lVar2 == 0) {
    return 0;
  }
  uVar3 = *param_2;
  plVar5 = *(longlong **)(lVar2 + 0x40);
  plVar1 = plVar5 + *(int *)(lVar2 + 0x4c);
  while( true ) {
    if (plVar5 == plVar1) {
      return 0;
    }
    lVar2 = *plVar5;
    iVar4 = FUN_18048cbc0(*(undefined8 *)(lVar2 + 0x10),uVar3);
    if (iVar4 == 0) break;
    plVar5 = plVar5 + 1;
  }
  return lVar2;
}



############ FUN_ 1812ef2b0 size=240 ############

void FUN_1812ef2b0(longlong param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined **local_30;
  longlong local_28;
  
  uVar6 = 0xfffffffffffffffe;
  lVar2 = *param_2;
  if (lVar2 == DAT_182673c10) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(lVar2);
  }
  if (iVar3 == 0) {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x18);
  }
  else {
    lVar4 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x18);
    if (lVar4 != 0) {
      plVar5 = *(longlong **)(lVar4 + 0x40);
      plVar1 = plVar5 + *(int *)(lVar4 + 0x4c);
      for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
        lVar4 = *plVar5;
        iVar3 = FUN_18048cbc0(*(undefined8 *)(lVar4 + 0x10),lVar2);
        if (iVar3 == 0) goto LAB_1812ef34e;
      }
    }
    lVar4 = 0;
  }
LAB_1812ef34e:
  if (lVar4 != 0) {
    local_30 = juce::RelativeCoordinatePositionerBase::ComponentScope::vftable;
    local_28 = lVar4;
    (**(code **)(*param_3 + 8))(param_3,&local_30);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_18123aff0(param_1,param_2,param_3,param_4,uVar6);
}



############ FUN_ 1813159e0 size=271 ############

longlong * FUN_1813159e0(longlong param_1,longlong *param_2,longlong *param_3)

{
  int *piVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 *local_res18;
  
  plVar4 = (longlong *)FUN_181252610();
  local_res18 = (undefined8 *)*param_3;
  if (local_res18[3] == *plVar4) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(local_res18[3],*plVar4);
  }
  if (iVar3 == 0) {
    lVar2 = *(longlong *)(param_1 + 0x110);
    if (lVar2 != 0) {
      *param_2 = lVar2;
      if (lVar2 == 0) {
        return param_2;
      }
      LOCK();
      *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
      UNLOCK();
      return param_2;
    }
    if (**(char **)(param_1 + 0xf8) != '\0') {
      if (local_res18 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_res18 + 1) = *(int *)(local_res18 + 1) + 1;
        UNLOCK();
      }
      FUN_1812524b0(&local_res18);
      FUN_18124abe0(param_2,&local_res18);
      if (local_res18 == (undefined8 *)0x0) {
        return param_2;
      }
      LOCK();
      piVar1 = (int *)(local_res18 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 != 1) {
        return param_2;
      }
      (**(code **)*local_res18)(local_res18,1);
      return param_2;
    }
  }
  FUN_18124ad90(param_2,param_3);
  return param_2;
}



############ FUN_ 181318410 size=160 ############

void FUN_181318410(longlong param_1,uint param_2,longlong *param_3)

{
  longlong *plVar1;
  undefined8 *puVar2;
  int iVar3;
  
  plVar1 = *(longlong **)(param_1 + 0xb0);
  if ((((param_2 < *(uint *)((longlong)plVar1 + 0xf4)) &&
       (puVar2 = *(undefined8 **)(plVar1[0x1d] + (longlong)(int)param_2 * 8),
       puVar2 != (undefined8 *)0x0)) && (puVar2[1] != *param_3)) &&
     (iVar3 = FUN_18048cbc0(puVar2[1],*param_3), iVar3 != 0)) {
    FUN_181249460(puVar2 + 1,param_3);
    FUN_181347ea0(*puVar2,param_3);
    if (*(code **)(*plVar1 + 0x108) == thunk_FUN_181319110) {
      FUN_181319110();
    }
    else {
      (**(code **)(*plVar1 + 0x108))(plVar1);
    }
  }
  return;
}



############ FUN_ 181319c50 size=156 ############

void FUN_181319c50(longlong *param_1,uint param_2,longlong *param_3)

{
  undefined8 *puVar1;
  int iVar2;
  
  if ((((param_2 < *(uint *)((longlong)param_1 + 0xf4)) &&
       (puVar1 = *(undefined8 **)(param_1[0x1d] + (longlong)(int)param_2 * 8),
       puVar1 != (undefined8 *)0x0)) && (puVar1[1] != *param_3)) &&
     (iVar2 = FUN_18048cbc0(puVar1[1],*param_3), iVar2 != 0)) {
    FUN_181249460(puVar1 + 1,param_3);
    FUN_181347ea0(*puVar1,param_3);
    if (*(code **)(*param_1 + 0x108) == thunk_FUN_181319110) {
      FUN_181319110();
    }
    else {
      (**(code **)(*param_1 + 0x108))(param_1);
    }
  }
  return;
}



############ FUN_ 181320180 size=503 ############

void FUN_181320180(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  longlong lVar4;
  uint uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  undefined1 local_38 [16];
  
  if (*(int *)(param_1 + 8) == 0) {
    puVar10 = *(undefined8 **)(param_1 + -0x70);
    uVar11 = 0;
    uVar6 = (ulonglong)((longlong)(puVar10 + *(int *)(param_1 + -100)) + (7 - (longlong)puVar10)) >>
            3;
    if (puVar10 + *(int *)(param_1 + -100) < puVar10) {
      uVar6 = uVar11;
    }
    uVar7 = uVar11;
    if (uVar6 != 0) {
      do {
        plVar3 = (longlong *)
                 __RTDynamicCast(*puVar10,0,&juce::Component::RTTI_Type_Descriptor,
                                 &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor,0);
        if (plVar3 != (longlong *)0x0) {
          uVar9 = uVar11;
          if (plVar3[0x1a] != 0) {
            uVar9 = *(ulonglong *)(plVar3[0x1a] + 0x10);
          }
          if ((undefined **)*plVar3 == juce::MultiDocumentPanelWindow::vftable) {
            if ((*(longlong *)(uVar9 + 8) != plVar3[1]) &&
               (iVar2 = FUN_18048cbc0(*(undefined8 *)(uVar9 + 8)), iVar2 != 0)) {
              .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                        (plVar3,uVar9 + 8);
              FUN_1812d01c0(plVar3,local_38);
              FUN_181342a30(plVar3);
            }
          }
          else {
            (*(code *)((undefined **)*plVar3)[10])(plVar3);
          }
        }
        puVar10 = puVar10 + 1;
        uVar7 = uVar7 + 1;
      } while (uVar7 != uVar6);
    }
  }
  else if ((*(longlong *)(param_1 + 0x20) != 0) &&
          (uVar5 = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x20) + 0xb0) + 0xf4) - 1,
          -1 < (int)uVar5)) {
    lVar8 = (longlong)(int)uVar5 * 8;
    do {
      lVar4 = FUN_181318140(*(undefined8 *)(param_1 + 0x20),uVar5);
      plVar3 = (longlong *)(lVar4 + 8);
      plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x20) + 0xb0);
      if ((((uVar5 < *(uint *)((longlong)plVar1 + 0xf4)) &&
           (puVar10 = *(undefined8 **)(lVar8 + plVar1[0x1d]), puVar10 != (undefined8 *)0x0)) &&
          (puVar10[1] != *plVar3)) && (iVar2 = FUN_18048cbc0(puVar10[1],*plVar3), iVar2 != 0)) {
        FUN_181249460(puVar10 + 1,plVar3);
        FUN_181347ea0(*puVar10,plVar3);
        if (*(code **)(*plVar1 + 0x108) == thunk_FUN_181319110) {
          FUN_181319110();
        }
        else {
          (**(code **)(*plVar1 + 0x108))(plVar1);
        }
      }
      lVar8 = lVar8 + -8;
      uVar5 = uVar5 - 1;
    } while (-1 < (int)uVar5);
  }
  return;
}



############ FUN_ 1813214f0 size=1015 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813214f0(longlong *param_1,longlong param_2)

{
  LPCRITICAL_SECTION p_Var1;
  longlong *plVar2;
  uint uVar3;
  char cVar4;
  int iVar5;
  undefined4 uVar6;
  longlong *plVar7;
  undefined4 *puVar8;
  longlong lVar9;
  longlong *plVar10;
  uint *puVar11;
  undefined1 auStack_118 [32];
  undefined4 local_f8;
  undefined4 local_e8;
  longlong local_e0;
  undefined4 local_d8;
  undefined4 uStack_d4;
  longlong local_d0;
  longlong local_c8;
  char *local_c0;
  char *local_b8;
  char *local_b0;
  undefined8 local_a8;
  LPCRITICAL_SECTION local_a0;
  longlong local_98;
  LPCRITICAL_SECTION local_90;
  longlong local_88;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined1 local_68 [16];
  longlong *local_58;
  undefined1 local_50 [8];
  longlong *local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  
  local_a8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  plVar7 = (longlong *)(**(code **)(*param_1 + 0x168))();
  FUN_1812cec00(plVar7,1,0);
  FUN_1812cf600(plVar7,param_2,0,1);
  if ((undefined **)*plVar7 == juce::MultiDocumentPanelWindow::vftable) {
    if (*(longlong *)(param_2 + 8) == plVar7[1]) {
      iVar5 = 0;
    }
    else {
      iVar5 = FUN_18048cbc0(*(undefined8 *)(param_2 + 8),plVar7[1]);
    }
    if (iVar5 != 0) {
      .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(plVar7,param_2 + 8);
      puVar8 = (undefined4 *)FUN_1812d01c0(plVar7,local_68);
      local_78 = *puVar8;
      uStack_74 = puVar8[1];
      uStack_70 = puVar8[2];
      uStack_6c = puVar8[3];
      FUN_181342a30(plVar7,&local_78);
    }
  }
  else {
    (*(code *)((undefined **)*plVar7)[10])(plVar7,param_2 + 8);
  }
  lVar9 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
  local_a0 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar9);
  local_b0 = "mdiDocumentBkg_";
  FUN_181211b90(&local_e0,lVar9,&local_b0);
  LeaveCriticalSection(p_Var1);
  plVar10 = *(longlong **)(param_2 + 0x90);
  plVar2 = plVar10 + (longlong)*(int *)(param_2 + 0x9c) * 3;
  for (; plVar10 != plVar2; plVar10 = plVar10 + 3) {
    local_98 = *plVar10;
    if (local_98 == local_e0) {
      plVar10 = plVar10 + 1;
      if (plVar10 != (longlong *)0x0) goto LAB_18132164b;
      break;
    }
  }
  plVar10 = (longlong *)FUN_181244160();
LAB_18132164b:
  local_48 = (longlong *)*plVar10;
  (**(code **)(*local_48 + 0xb8))(local_48,local_40,plVar10 + 1);
  puVar11 = (uint *)(local_e0 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  cVar4 = (**(code **)(*local_48 + 0x50))();
  if (cVar4 == '\0') {
    uVar6 = (**(code **)(*local_48 + 8))(local_48,local_40);
    local_e8 = uVar6;
  }
  else {
    uVar6 = (undefined4)param_1[0x1b];
  }
  FUN_1812ce6d0(plVar7,uVar6);
  local_d8 = 4;
  if ((((0 < *(int *)((longlong)param_1 + 0x4c)) &&
       (lVar9 = *(longlong *)(param_1[8] + (longlong)(*(int *)((longlong)param_1 + 0x4c) + -1) * 8),
       lVar9 != 0)) && (*(int *)(lVar9 + 0x20) == 4)) && (local_d8 = 4, *(int *)(lVar9 + 0x24) == 4)
     ) {
    local_d8 = 0x14;
  }
  local_f8 = *(undefined4 *)((longlong)plVar7 + 0x2c);
  uStack_d4 = local_d8;
  FUN_18134bfe0(plVar7,local_d8,local_d8,(int)plVar7[5]);
  lVar9 = FUN_18122bf10();
  p_Var1 = (LPCRITICAL_SECTION)(lVar9 + 0x10);
  local_90 = p_Var1;
  EnterCriticalSection(p_Var1);
  FUN_18122c130(lVar9);
  local_c0 = "mdiDocumentPos_";
  FUN_181211b90(&local_d0,lVar9,&local_c0);
  LeaveCriticalSection(p_Var1);
  plVar10 = *(longlong **)(param_2 + 0x90);
  plVar2 = plVar10 + (longlong)*(int *)(param_2 + 0x9c) * 3;
  do {
    if (plVar10 == plVar2) {
LAB_1813217b5:
      plVar10 = (longlong *)FUN_181244160();
LAB_1813217ba:
      local_58 = (longlong *)*plVar10;
      (**(code **)(*local_58 + 0xb8))(local_58,local_50,plVar10 + 1);
      puVar11 = (uint *)(local_d0 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      (**(code **)(*local_58 + 0x20))(local_58,&local_b8,local_50);
      puVar11 = (uint *)(local_b8 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      if (*local_b8 != '\0') {
        (**(code **)(*local_58 + 0x20))(local_58,&local_c8,local_50);
        FUN_1812cd5f0(plVar7,&local_c8);
        puVar11 = (uint *)(local_c8 + -0x10);
        if ((*puVar11 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar11;
          *puVar11 = *puVar11 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar11);
          }
        }
      }
      (**(code **)(*plVar7 + 0x58))(plVar7,1);
      FUN_181343cc0(param_1,plVar7,0xffffffff);
      FUN_181344f60(plVar7,1);
      (**(code **)(*local_58 + 0xb0))(local_58,local_50);
      (**(code **)(*local_48 + 0xb0))(local_48,local_40);
    }
    local_88 = *plVar10;
    if (local_88 == local_d0) {
      plVar10 = plVar10 + 1;
      if (plVar10 != (longlong *)0x0) goto LAB_1813217ba;
      goto LAB_1813217b5;
    }
    plVar10 = plVar10 + 3;
  } while( true );
}



############ FUN_ 181322f80 size=525 ############

void FUN_181322f80(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint *_Memory;
  longlong *plVar2;
  uint uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong *plVar9;
  longlong *plVar10;
  char *pcVar11;
  undefined8 *puVar12;
  char *local_res8;
  
  uVar8 = 0;
  iVar6 = 0;
  if (*(longlong *)(param_1 + 0x30) == 0) {
    lVar7 = FUN_181322d40(param_1,param_1 + 8,param_3,param_4,0xfffffffffffffffe);
    if (lVar7 != 0) {
      uVar8 = FUN_181323260(lVar7,param_1 + 8);
    }
    puVar4 = *(undefined8 **)(param_1 + 0x30);
    *(undefined8 *)(param_1 + 0x30) = uVar8;
    if (puVar4 != (undefined8 *)0x0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  lVar7 = *(longlong *)(param_1 + 0x30);
  if (lVar7 != 0) {
    plVar9 = (longlong *)FUN_181322d40(param_1,param_2);
    lVar5 = *param_2;
    if (lVar5 == 0) {
      plVar10 = (longlong *)FUN_181350e20();
    }
    else {
      plVar10 = *(longlong **)(lVar5 + 0x18);
      plVar2 = plVar10 + (longlong)*(int *)(lVar5 + 0x24) * 3;
      for (; plVar10 != plVar2; plVar10 = plVar10 + 3) {
        if (*plVar10 == DAT_182673c30) {
          plVar10 = plVar10 + 1;
          if (plVar10 != (longlong *)0x0) goto LAB_18132306d;
          break;
        }
      }
      plVar10 = (longlong *)FUN_181244160();
    }
LAB_18132306d:
    (**(code **)(*(longlong *)*plVar10 + 0x20))((longlong *)*plVar10,&local_res8,plVar10 + 1);
    pcVar11 = local_res8;
    if ((plVar9 == (longlong *)0x0) || (*local_res8 == '\0')) {
      if ((*param_2 != 0) && (lVar7 = *(longlong *)(*param_2 + 0x48), lVar7 != 0)) {
        LOCK();
        piVar1 = (int *)(lVar7 + 8);
        *piVar1 = *piVar1 + 1;
        UNLOCK();
      }
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
    if (*(char **)(lVar7 + 0x10) != local_res8) {
      iVar6 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 0x10),local_res8);
    }
    if (iVar6 == 0) {
LAB_1813230f2:
      if (lVar7 != 0) {
        (**(code **)(*plVar9 + 0x10))(plVar9,lVar7,param_2);
        pcVar11 = local_res8;
      }
    }
    else {
      puVar12 = *(undefined8 **)(lVar7 + 0x40);
      puVar4 = puVar12 + *(int *)(lVar7 + 0x4c);
      for (; puVar12 != puVar4; puVar12 = puVar12 + 1) {
        lVar7 = FUN_181323370(*puVar12,&local_res8);
        if (lVar7 != 0) goto LAB_1813230f2;
      }
    }
    _Memory = (uint *)(pcVar11 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 181323370 size=121 ############

longlong FUN_181323370(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  
  if ((*(longlong *)(param_1 + 0x10) != *param_2) &&
     (iVar2 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x10),*param_2), iVar2 != 0)) {
    puVar4 = *(undefined8 **)(param_1 + 0x40);
    puVar1 = puVar4 + *(int *)(param_1 + 0x4c);
    while( true ) {
      if (puVar4 == puVar1) {
        return 0;
      }
      lVar3 = FUN_181323370(*puVar4,param_2);
      if (lVar3 != 0) break;
      puVar4 = puVar4 + 1;
    }
    return lVar3;
  }
  return param_1;
}



############ FUN_ 181328940 size=497 ############

void FUN_181328940(int param_1,longlong param_2,longlong *param_3)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 *puVar4;
  int iVar5;
  longlong *plVar6;
  longlong lVar7;
  undefined8 uVar8;
  uint *puVar9;
  longlong *plVar10;
  undefined1 *local_res20;
  longlong local_38;
  undefined8 local_30;
  
  local_30 = 0xfffffffffffffffe;
  if (param_1 != 0) {
    lVar3 = *param_3;
    if (lVar3 == 0) {
      lVar7 = 0;
    }
    else {
      lVar7 = *(longlong *)(lVar3 + 0x10);
    }
    if ((lVar7 != 0) && (param_2 != 0)) {
      if (lVar3 == 0) {
        uVar8 = 0;
      }
      else {
        uVar8 = *(undefined8 *)(lVar3 + 0x10);
      }
      plVar6 = (longlong *)
               __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::AlertWindow::RTTI_Type_Descriptor,0);
      (**(code **)(*plVar6 + 0x58))(plVar6,0);
      FUN_18049c4e0(&local_38,"Folder Name");
      if (*param_3 == 0) {
        uVar8 = 0;
      }
      else {
        uVar8 = *(undefined8 *)(*param_3 + 0x10);
      }
      lVar7 = __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::AlertWindow::RTTI_Type_Descriptor,0);
      lVar3 = local_38;
      plVar10 = *(longlong **)(lVar7 + 0x150);
      plVar6 = plVar10 + *(int *)(lVar7 + 0x15c);
      for (; plVar10 != plVar6; plVar10 = plVar10 + 1) {
        lVar7 = *plVar10;
        if (*(longlong *)(lVar7 + 8) == lVar3) {
          iVar5 = 0;
        }
        else {
          iVar5 = FUN_18048cbc0(*(undefined8 *)(lVar7 + 8),lVar3);
        }
        if (iVar5 == 0) {
          if (lVar7 != 0) {
            FUN_1812dc020(lVar7,&local_res20);
            goto LAB_181328a7e;
          }
          break;
        }
      }
      local_res20 = &DAT_1821dbf98;
LAB_181328a7e:
      FUN_181327e20(param_2,&local_res20);
      puVar9 = (uint *)(local_res20 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_38 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
    }
  }
  puVar4 = (undefined8 *)*param_3;
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  return;
}



############ FUN_ 18132f760 size=141 ############

void FUN_18132f760(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  int iVar2;
  int *_Memory;
  
  lVar1 = *param_2;
  if (*(longlong *)(param_1 + 0xf0) != lVar1) {
    iVar2 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0xf0),lVar1);
    if (iVar2 != 0) {
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar1 = *(longlong *)(param_1 + 0xf0);
      *(longlong *)(param_1 + 0xf0) = *param_2;
      UNLOCK();
      _Memory = (int *)(lVar1 + -0x10);
      if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *_Memory;
        *_Memory = *_Memory + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      FUN_18132f430(param_1);
    }
  }
  return;
}



############ FUN_ 181345490 size=223 ############

void FUN_181345490(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong local_res8;
  longlong local_res18;
  
  plVar3 = (longlong *)FUN_18123e660(param_1 + 0xd0,&local_res18,param_3,param_4,0xfffffffffffffffe)
  ;
  plVar4 = (longlong *)FUN_18123e660(param_2,&local_res8);
  if (*plVar4 == *plVar3) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(*plVar4,*plVar3);
  }
  puVar5 = (uint *)(local_res8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_res18 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  if (iVar2 != 0) {
    FUN_18122ddb0(param_1 + 0xd0,param_2);
    FUN_181325e40(param_1);
  }
  return;
}



############ FUN_ 1813abe20 size=2054 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813abe20(undefined8 param_1,longlong *param_2)

{
  ushort uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  longlong *plVar5;
  longlong lVar6;
  ulonglong uVar7;
  void *_Dst;
  uint *puVar8;
  uint *puVar9;
  uint *puVar10;
  longlong lVar11;
  void *pvVar12;
  int iVar13;
  ulonglong uVar14;
  undefined8 *puVar15;
  bool bVar16;
  undefined1 auStack_1b8 [32];
  undefined1 local_198 [8];
  undefined1 local_190 [8];
  ushort local_188 [2];
  ushort local_184 [2];
  ushort local_180 [4];
  longlong local_178;
  int local_170;
  longlong local_168;
  longlong local_160;
  longlong *local_158;
  uint local_150;
  int local_14c;
  longlong local_148;
  uint *local_140;
  char *local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  char *local_118;
  char *local_110;
  char *local_108;
  char *local_100;
  char *local_f8;
  uint *local_f0;
  undefined **local_e8;
  undefined1 local_e0 [8];
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  ulonglong local_b0;
  undefined8 local_a8;
  longlong local_98;
  undefined1 *local_90;
  longlong local_88;
  void *local_80;
  undefined8 local_78;
  longlong *local_70;
  longlong *local_68;
  longlong *local_60;
  undefined8 local_58;
  undefined1 local_31;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  local_158 = param_2;
  FUN_18049c4e0(&local_138,&DAT_1821e3eec);
  iVar2 = FUN_1812498b0(param_2,"NumCueNotes",(char)param_2[4],0);
  if (iVar2 < 0) {
    local_f8 = local_138;
    puVar8 = (uint *)(local_138 + -0x10);
    uVar4 = *puVar8;
  }
  else {
    plVar5 = (longlong *)FUN_181249970(param_2 + 2,iVar2);
    local_f8 = (char *)*plVar5;
    puVar8 = (uint *)(local_f8 + -0x10);
    uVar4 = *puVar8;
  }
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar8 = *puVar8 + 1;
    UNLOCK();
  }
  iVar2 = atoi(local_f8);
  local_14c = iVar2;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_138 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (0 < iVar2) {
    local_e8 = juce::OutputStream::vftable;
    FUN_18049c4e0(local_e0,&DAT_182496878);
    local_e8 = juce::MemoryOutputStream::vftable;
    local_d0 = 0;
    local_c8 = 0;
    local_c0 = 0;
    local_b8 = 0;
    local_b0 = 0;
    local_a8 = 0;
    local_188[0] = (ushort)iVar2 << 8 | (ushort)iVar2 >> 8;
    local_d8 = param_1;
    (*(code *)PTR_FUN_182496b98)(&local_e8,local_188,2);
    local_170 = 0;
    if (0 < iVar2) {
      local_70 = &local_178;
      local_68 = &local_168;
      local_90 = &DAT_1821dbf98;
      local_60 = &local_160;
LAB_1813abfe0:
      uVar7 = 0;
      lVar6 = FUN_181233e10(&local_30,local_170);
      FUN_180495150(&local_128,lVar6,&local_31 + -lVar6);
      FUN_18049c4e0(&local_130,"CueNote");
      plVar5 = (longlong *)FUN_181232d30(&local_130,&local_128);
      local_148 = *plVar5;
      puVar8 = (uint *)(local_148 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        *puVar8 = *puVar8 + 1;
        UNLOCK();
      }
      puVar9 = (uint *)(local_130 + -0x10);
      local_f0 = puVar8;
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_128 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      FUN_18049c4e0(&local_110,&DAT_1821e3f04);
      local_178 = local_148;
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        *puVar8 = *puVar8 + 1;
        UNLOCK();
      }
      lVar6 = -1;
      do {
        lVar11 = lVar6;
        lVar6 = lVar11 + 1;
      } while (*(char *)(local_148 + lVar6) != '\0');
      FUN_1812342b0(&local_178,lVar11 + 10);
      pvVar12 = (void *)((int)lVar6 + local_178);
      memcpy(pvVar12,"TimeStamp",9);
      lVar6 = local_178;
      *(undefined1 *)((longlong)pvVar12 + 9) = 0;
      local_120 = local_178;
      local_140 = (uint *)(local_178 + -0x10);
      if ((*local_140 & 0x30000000) == 0) {
        LOCK();
        *local_140 = *local_140 + 1;
        UNLOCK();
      }
      puVar8 = (uint *)(local_178 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      iVar2 = *(int *)((longlong)param_2 + 0xc);
      if ((char)param_2[4] == '\0') {
        if (0 < iVar2) {
          puVar15 = (undefined8 *)*local_158;
          uVar14 = uVar7;
          do {
            iVar13 = (int)uVar14;
            local_58 = *puVar15;
            iVar3 = FUN_18048cbc0(lVar6);
            param_2 = local_158;
            if (iVar3 == 0) goto LAB_1813ac35c;
            uVar14 = (ulonglong)(iVar13 + 1);
            uVar7 = uVar7 + 1;
            puVar15 = puVar15 + 1;
          } while ((longlong)uVar7 < (longlong)iVar2);
        }
      }
      else if (0 < iVar2) {
        do {
          iVar13 = (int)uVar7;
          iVar3 = FUN_18049bb30(*(undefined8 *)(*param_2 + (longlong)iVar13 * 8),lVar6);
          if (iVar3 == 0) goto LAB_1813ac35c;
          uVar7 = (ulonglong)(iVar13 + 1U);
        } while ((int)(iVar13 + 1U) < iVar2);
      }
      goto LAB_1813ac193;
    }
LAB_1813ac618:
    FUN_18124a420(&local_e8);
  }
LAB_1813ac35c:
  if (iVar13 < 0) {
LAB_1813ac193:
    local_118 = local_110;
    puVar8 = (uint *)(local_110 + -0x10);
    uVar4 = *puVar8;
    param_2 = local_158;
  }
  else {
    plVar5 = (longlong *)FUN_181249970(param_2 + 2,iVar13);
    local_118 = (char *)*plVar5;
    puVar8 = (uint *)(local_118 + -0x10);
    uVar4 = *puVar8;
  }
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar8 = *puVar8 + 1;
    UNLOCK();
  }
  uVar4 = atoi(local_118);
  local_150 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
  (*(code *)local_e8[4])(&local_e8,&local_150,4);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((*local_140 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *local_140;
    *local_140 = *local_140 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(local_140);
    }
  }
  puVar8 = (uint *)(local_110 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  FUN_18049c4e0(&local_100,&DAT_1821e3ec4);
  puVar8 = local_f0;
  local_168 = local_148;
  if ((*local_f0 & 0x30000000) == 0) {
    LOCK();
    *local_f0 = *local_f0 + 1;
    UNLOCK();
  }
  FUN_181232e20(&local_168,"Identifier","");
  local_98 = local_168;
  puVar9 = (uint *)(local_168 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    *puVar9 = *puVar9 + 1;
    UNLOCK();
  }
  puVar10 = (uint *)(local_168 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  iVar2 = FUN_1812498b0(param_2,local_168,(char)param_2[4],0);
  if (iVar2 < 0) {
    local_108 = local_100;
    puVar10 = (uint *)(local_100 + -0x10);
    uVar4 = *puVar10;
  }
  else {
    plVar5 = (longlong *)FUN_181249970(param_2 + 2,iVar2);
    local_108 = (char *)*plVar5;
    puVar10 = (uint *)(local_108 + -0x10);
    uVar4 = *puVar10;
  }
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar10 = *puVar10 + 1;
    UNLOCK();
  }
  iVar2 = atoi(local_108);
  local_184[0] = (ushort)iVar2 << 8 | (ushort)iVar2 >> 8;
  (*(code *)local_e8[4])(&local_e8,local_184,2);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_100 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  local_160 = local_148;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    *puVar8 = *puVar8 + 1;
    UNLOCK();
  }
  FUN_181232e20(&local_160,&DAT_1821e8e84,&DAT_1821e8e88);
  local_88 = local_160;
  puVar9 = (uint *)(local_160 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    *puVar9 = *puVar9 + 1;
    UNLOCK();
  }
  puVar10 = (uint *)(local_160 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_18122c970(param_2,&local_80,local_160);
  pvVar12 = local_80;
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar4 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar16 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar4;
    if (bVar16) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  uVar7 = FUN_18049d240(local_80);
  if (0xfffe < uVar7) {
    uVar7 = 0xfffe;
  }
  uVar1 = (short)uVar7 + 1;
  local_180[0] = uVar1 * 0x100 | uVar1 >> 8;
  (*(code *)local_e8[4])(&local_e8,local_180,2);
  if ((uVar7 != 0) && (_Dst = (void *)FUN_181234e40(&local_e8,uVar7), _Dst != (void *)0x0)) {
    memcpy(_Dst,pvVar12,uVar7);
  }
  local_198[0] = 0;
  (*(code *)local_e8[4])(&local_e8,local_198,1);
  if ((local_b0 & 1) != 0) {
    local_190[0] = 0;
    (*(code *)local_e8[4])(&local_e8,local_190,1);
  }
  puVar9 = (uint *)((longlong)pvVar12 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_170 = local_170 + 1;
  if (local_14c <= local_170) goto LAB_1813ac618;
  goto LAB_1813abfe0;
}



############ FUN_ 1813ad590 size=92 ############

uint FUN_1813ad590(undefined8 *param_1)

{
  uint uVar1;
  undefined **ppuVar2;
  
  ppuVar2 = &PTR_s_Rock_Blues_182634640;
  do {
    uVar1 = FUN_18048cbc0(*param_1,*ppuVar2);
    if (uVar1 == 0) {
      return 1;
    }
    ppuVar2 = ppuVar2 + 1;
  } while ((longlong)ppuVar2 < 0x182634690);
  return uVar1 & 0xffffff00;
}



############ FUN_ 1813b63e0 size=831 ############

void FUN_1813b63e0(longlong param_1,longlong *param_2)

{
  int *piVar1;
  longlong *plVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  void *_Memory;
  char cVar7;
  int iVar8;
  uint uVar9;
  longlong *plVar10;
  uint *puVar11;
  undefined8 *puVar12;
  longlong lVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  bool bVar16;
  longlong local_res20;
  
  uVar14 = 0;
  iVar8 = 0;
  if (*(longlong *)(param_1 + 0x280) != *param_2) {
    iVar8 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x280),*param_2);
  }
  if (iVar8 == 0) {
    return;
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x290));
  puVar4 = *(undefined8 **)(param_1 + 0xe0);
  *(undefined8 *)(param_1 + 0xe0) = 0;
  uVar3 = *(undefined4 *)(param_1 + 0xe8);
  *(undefined4 *)(param_1 + 0xe8) = 0;
  iVar8 = *(int *)(param_1 + 0xec);
  *(undefined4 *)(param_1 + 0xec) = 0;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x290));
  if ((*(longlong *)(param_1 + 0xd8) != 0) && (lVar13 = (longlong)(iVar8 + -1), -1 < iVar8 + -1)) {
    do {
      (**(code **)(*(longlong *)puVar4[lVar13] + 0x18))();
      lVar13 = lVar13 + -1;
    } while (-1 < lVar13);
  }
  plVar2 = (longlong *)(param_1 + 0x288);
  lVar13 = *plVar2;
  *plVar2 = 0;
  if (lVar13 != 0) {
    FUN_180556130();
  }
  if (*(char *)*param_2 != '\0') {
    plVar10 = (longlong *)FUN_1813b2e50(&local_res20,param_2);
    if (plVar2 != plVar10) {
      lVar13 = *plVar10;
      *plVar10 = 0;
      lVar5 = *plVar2;
      *plVar2 = lVar13;
      if (lVar5 != 0) {
        FUN_180556130();
      }
    }
    if (local_res20 != 0) {
      FUN_180556130();
    }
  }
  lVar13 = *plVar2;
  if (lVar13 == 0) {
    lVar13 = *(longlong *)(param_1 + 0x278);
    *(undefined1 **)(param_1 + 0x278) = &DAT_1821dbf98;
    lVar5 = *(longlong *)(param_1 + 0x280);
    *(undefined1 **)(param_1 + 0x280) = &DAT_1821dbf98;
    puVar11 = (uint *)(lVar5 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    puVar11 = (uint *)(lVar13 + -0x10);
    uVar9 = *puVar11;
  }
  else {
    lVar5 = *(longlong *)(lVar13 + 0x200);
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
      UNLOCK();
    }
    lVar13 = *(longlong *)(lVar13 + 0x208);
    if ((*(uint *)(lVar13 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar13 + -0x10) = *(int *)(lVar13 + -0x10) + 1;
      UNLOCK();
    }
    lVar6 = *(longlong *)(param_1 + 0x278);
    *(longlong *)(param_1 + 0x278) = lVar5;
    lVar5 = *(longlong *)(param_1 + 0x280);
    *(longlong *)(param_1 + 0x280) = lVar13;
    puVar11 = (uint *)(lVar5 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    puVar11 = (uint *)(lVar6 + -0x10);
    uVar9 = *puVar11;
  }
  if ((uVar9 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if (*(longlong *)(param_1 + 0xd8) != 0) {
    uVar15 = (ulonglong)((longlong)(puVar4 + iVar8) + (7 - (longlong)puVar4)) >> 3;
    if (puVar4 + iVar8 < puVar4) {
      uVar15 = uVar14;
    }
    puVar12 = puVar4;
    if (uVar15 != 0) {
      do {
        (**(code **)(*(longlong *)*puVar12 + 0x10))
                  ((longlong *)*puVar12,*(undefined8 *)(param_1 + 0xd8));
        uVar14 = uVar14 + 1;
        puVar12 = puVar12 + 1;
      } while (uVar14 != uVar15);
    }
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x290));
  _Memory = *(void **)(param_1 + 0xe0);
  *(undefined8 **)(param_1 + 0xe0) = puVar4;
  *(undefined4 *)(param_1 + 0xe8) = uVar3;
  *(int *)(param_1 + 0xec) = iVar8;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x290));
  FUN_1813b7430(param_1);
  if (*(char *)(param_1 + 0x30) != '\0') {
    piVar1 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
    LOCK();
    bVar16 = *piVar1 == 0;
    if (bVar16) {
      *piVar1 = 1;
    }
    UNLOCK();
    if ((bVar16) && (cVar7 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar7 == '\0')) {
      LOCK();
      *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
      UNLOCK();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1813b6730 size=348 ############

void FUN_1813b6730(longlong param_1,longlong param_2,char *param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  int iVar3;
  char *pcVar4;
  uint *_Memory;
  ulonglong *puVar5;
  ulonglong *puVar6;
  bool bVar7;
  ulonglong local_res18;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  bVar7 = false;
  local_res18 = local_res18 & 0xffffffff00000000;
  pcVar4 = param_3;
  if (8 < *(int *)(param_3 + 0x10)) {
    pcVar4 = *(char **)param_3;
  }
  if (*pcVar4 != -2) {
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 700));
    puVar5 = *(ulonglong **)(param_1 + 0x268);
    puVar6 = puVar5 + (longlong)*(int *)(param_1 + 0x274) * 2;
    for (; puVar5 != puVar6; puVar5 = puVar5 + 2) {
      if (*(char *)*puVar5 == '\0') {
LAB_1813b6817:
        bVar2 = true;
      }
      else {
        local_res18 = *(ulonglong *)(param_2 + 8);
        if ((*(uint *)(local_res18 - 0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res18 - 0x10) = *(int *)(local_res18 - 0x10) + 1;
          UNLOCK();
        }
        bVar7 = true;
        if (*puVar5 == local_res18) {
          iVar3 = 0;
        }
        else {
          iVar3 = FUN_18048cbc0(*puVar5,local_res18);
        }
        if (iVar3 == 0) goto LAB_1813b6817;
        bVar2 = false;
      }
      if (bVar7) {
        bVar7 = false;
        _Memory = (uint *)(local_res18 - 0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
      }
      if (bVar2) {
        (**(code **)(*(longlong *)puVar5[1] + 8))
                  ((longlong *)puVar5[1],param_2,param_3,param_4,uVar8);
      }
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 700));
  }
  return;
}



############ FUN_ 1813b68a0 size=183 ############

ulonglong FUN_1813b68a0(longlong param_1,longlong *param_2)

{
  uint *_Memory;
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  uint uVar4;
  ulonglong in_RAX;
  longlong *plVar5;
  
  plVar5 = *(longlong **)(param_1 + 0x250);
  plVar1 = *(longlong **)(param_1 + 600);
  while( true ) {
    if (plVar5 == plVar1) {
      return in_RAX & 0xffffffffffffff00;
    }
    lVar2 = *(longlong *)(*plVar5 + 8);
    _Memory = (uint *)(lVar2 + -0x10);
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    if (lVar2 == *param_2) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_18048cbc0(lVar2,*param_2);
    }
    uVar4 = *_Memory;
    if ((uVar4 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      uVar4 = uVar4 - 1;
      if (uVar4 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    in_RAX = (ulonglong)uVar4;
    if (iVar3 == 0) break;
    plVar5 = plVar5 + 1;
  }
  return CONCAT71((uint7)(uint3)(uVar4 >> 8),1);
}



############ FUN_ 1813b89b0 size=136 ############

longlong FUN_1813b89b0(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  longlong *plVar5;
  
  plVar5 = *(longlong **)(param_1 + 0x38);
  plVar1 = plVar5 + *(int *)(param_1 + 0x44);
  if (plVar5 != plVar1) {
    lVar4 = *(longlong *)(param_1 + 0x100);
    do {
      lVar2 = *plVar5;
      if (*(longlong *)(lVar2 + 8) == lVar4) {
        return lVar2;
      }
      iVar3 = FUN_18048cbc0(*(undefined8 *)(lVar2 + 8),lVar4);
      if (iVar3 == 0) {
        return lVar2;
      }
      plVar5 = plVar5 + 1;
    } while (plVar5 != plVar1);
  }
  if (*(int *)(param_1 + 0x44) < 1) {
    lVar4 = 0;
  }
  else {
    lVar4 = **(longlong **)(param_1 + 0x38);
  }
  return lVar4;
}



############ FUN_ 1813b8ba0 size=132 ############

longlong FUN_1813b8ba0(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  
  FUN_1813b8c30();
  plVar5 = *(longlong **)(param_1 + 0x38);
  plVar1 = plVar5 + *(int *)(param_1 + 0x44);
  if (plVar5 != plVar1) {
    lVar2 = *param_2;
    do {
      lVar3 = *plVar5;
      if (*(longlong *)(lVar3 + 8) == lVar2) {
        return lVar3;
      }
      iVar4 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 8),lVar2);
      if (iVar4 == 0) {
        return lVar3;
      }
      plVar5 = plVar5 + 1;
    } while (plVar5 != plVar1);
  }
  return 0;
}



############ FUN_ 1813be520 size=382 ############

void FUN_1813be520(longlong *param_1,longlong *param_2)

{
  undefined8 *puVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  int *_Memory;
  longlong *plVar6;
  
  lVar5 = *param_2;
  if ((param_1[0x16] != lVar5) && (iVar4 = FUN_18048cbc0(param_1[0x16],lVar5), iVar4 != 0)) {
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar5 = param_1[0x16];
    param_1[0x16] = *param_2;
    UNLOCK();
    _Memory = (int *)(lVar5 + -0x10);
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar4 = *_Memory;
      *_Memory = *_Memory + -1;
      UNLOCK();
      if (iVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar1 = (undefined8 *)param_1[0x17];
    param_1[0x17] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    lVar5 = (**(code **)(*param_1 + 0x158))(param_1,param_2);
    puVar1 = (undefined8 *)param_1[0x17];
    param_1[0x17] = lVar5;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    plVar2 = (longlong *)param_1[0x17];
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 0x58))(plVar2,1);
      FUN_181343cc0(param_1,plVar2,0xffffffff);
      FUN_181344d70(param_1[0x17]);
      (**(code **)(*param_1 + 0x108))(param_1);
    }
    plVar6 = (longlong *)param_1[0x18];
    plVar2 = plVar6 + *(int *)((longlong)param_1 + 0xcc);
    if (plVar6 != plVar2) {
      lVar5 = *param_2;
      do {
        lVar3 = *plVar6;
        if ((*(longlong *)(lVar3 + 8) == lVar5) ||
           (iVar4 = FUN_18048cbc0(*(undefined8 *)(lVar3 + 8),lVar5), iVar4 == 0)) {
          FUN_181337080(lVar3,1,0,0);
          return;
        }
        plVar6 = plVar6 + 1;
      } while (plVar6 != plVar2);
    }
  }
  return;
}



############ FUN_ 1813c0890 size=316 ############

void FUN_1813c0890(longlong *param_1,longlong *param_2,undefined4 param_3)

{
  int *piVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint *_Memory;
  longlong *plVar5;
  longlong *plVar6;
  bool bVar7;
  
  plVar5 = (longlong *)*param_1;
  plVar6 = plVar5 + (longlong)*(int *)((longlong)param_1 + 0xc) * 2;
  if (plVar5 != plVar6) {
    lVar2 = *param_2;
    do {
      if ((*plVar5 == lVar2) || (iVar4 = FUN_18048cbc0(*plVar5,lVar2), iVar4 == 0)) {
        *(undefined4 *)(plVar5 + 1) = param_3;
        return;
      }
      plVar5 = plVar5 + 2;
    } while (plVar5 != plVar6);
  }
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  lVar2 = *param_2;
  LOCK();
  UNLOCK();
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_18055c950(param_1,*(int *)((longlong)param_1 + 0xc) + 1);
  plVar5 = (longlong *)((longlong)*(int *)((longlong)param_1 + 0xc) * 0x10 + *param_1);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  *plVar5 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(plVar5 + 1) = param_3;
  _Memory = (uint *)(lVar2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1813cc000 size=322 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__
               (longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  uint *_Memory;
  uint uVar1;
  longlong *plVar2;
  bool bVar3;
  char cVar4;
  undefined1 uVar5;
  int iVar6;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  longlong local_50;
  longlong *local_48;
  undefined1 local_40 [8];
  undefined8 local_38;
  longlong **local_30;
  undefined8 *local_28;
  ulonglong local_20;
  
  local_38 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_58 = 0;
  local_48 = (longlong *)*param_3;
  local_28 = param_3;
  (**(code **)(*local_48 + 0xb8))(local_48,local_40,param_3 + 1);
  local_30 = &local_48;
  local_50 = *(longlong *)(param_1 + 1000);
  _Memory = (uint *)(local_50 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_58 = 1;
  iVar6 = FUN_18048cbc0(param_2,local_50);
  if (iVar6 == 0) {
    cVar4 = FUN_18055e010(param_1 + 0x3e0);
    if ((cVar4 != '\0') && (*(longlong *)(param_1 + 0x348) != 0)) {
      bVar3 = true;
      goto LAB_1813cc0bc;
    }
  }
  bVar3 = false;
LAB_1813cc0bc:
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (bVar3) {
    plVar2 = *(longlong **)(param_1 + 0x348);
    uVar5 = FUN_180528b30(param_1 + 0x3e0);
    (**(code **)(*plVar2 + 0x58))(plVar2,uVar5);
    FUN_180569310(param_1 + -0x160);
  }
  (**(code **)(*local_48 + 0xb0))(local_48,local_40);
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814b40b0 size=200 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814b40b0(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined1 uVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined8 *local_28;
  ulonglong local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = param_3;
  plVar4 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 8) + 0x10))(*(longlong **)(param_1 + 8),local_38);
  if (*plVar4 == *param_2) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*plVar4,*param_2);
  }
  _Memory = (uint *)(local_38[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    uVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    FUN_181337080(param_1 + 0x30,uVar2,0,0);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814b4240 size=200 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814b4240(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined1 uVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined8 *local_28;
  ulonglong local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = param_3;
  plVar4 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 8) + 0x10))(*(longlong **)(param_1 + 8),local_38);
  if (*plVar4 == *param_2) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*plVar4,*param_2);
  }
  _Memory = (uint *)(local_38[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    uVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    FUN_181337080(param_1 + 0x30,uVar2,0,0);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814b43d0 size=200 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814b43d0(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined1 uVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined8 *local_28;
  ulonglong local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = param_3;
  plVar4 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 8) + 0x10))(*(longlong **)(param_1 + 8),local_38);
  if (*plVar4 == *param_2) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*plVar4,*param_2);
  }
  _Memory = (uint *)(local_38[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    uVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    FUN_181337080(param_1 + 0x30,uVar2,0,0);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814b9960 size=200 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814b9960(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined1 uVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined8 *local_28;
  ulonglong local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = param_3;
  plVar4 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 8) + 0x10))(*(longlong **)(param_1 + 8),local_38);
  if (*param_2 == *plVar4) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*param_2,*plVar4);
  }
  _Memory = (uint *)(local_38[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    uVar2 = (**(code **)(*(longlong *)*param_3 + 0x28))((longlong *)*param_3,param_3 + 1);
    FUN_181337080(param_1 + 0x30,uVar2,0,0);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 1814c2c90 size=809 ############

void FUN_1814c2c90(longlong param_1,undefined8 param_2,longlong *param_3)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  uint *puVar5;
  longlong local_res20;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  longlong *local_a0;
  undefined **local_98;
  int local_90;
  longlong local_88 [10];
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  iVar3 = FUN_18048cbc0(*param_3,"manual");
  if (iVar3 == 0) {
    FUN_1814d7520();
  }
  else {
    iVar3 = FUN_18048cbc0(*param_3,"website");
    if (iVar3 == 0) {
      FUN_18049c4e0(&local_b0,"soothe2");
      FUN_18049c4e0(&local_b8,"oeksound.com");
      FUN_18049c4e0(&local_c0,"https://");
      plVar4 = (longlong *)FUN_181232d30(&local_c0,&local_b8);
      local_res20 = *plVar4;
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
      puVar5 = (uint *)(local_c0 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      local_a0 = &local_res20;
      FUN_181232e20(&local_res20,&DAT_1821ea584,&DAT_1821ea585);
      local_c8 = local_res20;
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
      puVar5 = (uint *)(local_res20 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      local_a0 = &local_c8;
      plVar4 = (longlong *)FUN_181232d30(&local_c8,&local_b0);
      local_a8 = *plVar4;
      puVar5 = (uint *)(local_a8 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        *puVar5 = *puVar5 + 1;
        UNLOCK();
      }
      _Memory = (uint *)(local_c8 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        *puVar5 = *puVar5 + 1;
        UNLOCK();
      }
      local_88[1] = 0;
      local_88[2] = 0;
      local_88[3] = 0;
      local_88[4] = 0;
      local_88[5] = 0;
      local_88[6] = 0;
      local_88[7] = 0;
      local_88[8] = 0;
      local_88[0] = local_a8;
      FUN_181215140(local_88);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar5 = (uint *)(local_b8 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar5 = (uint *)(local_b0 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      FUN_181212f00(local_88);
      FUN_1804858a0(local_88);
    }
    else {
      iVar3 = FUN_18048cbc0(*param_3,"tutorial");
      if (iVar3 == 0) {
        cVar2 = FUN_180528b30(param_1 + 0x458);
        local_98 = &PTR_vftable_18262b570;
        local_90 = (cVar2 == '\0') + 1;
        (**(code **)(*(longlong *)(param_1 + 0x458) + 0x18))(param_1 + 0x458,&local_98);
      }
      else {
        iVar3 = FUN_18048cbc0(*param_3,"about");
        if (iVar3 == 0) {
          plVar4 = *(longlong **)(param_1 + 0x470);
        }
        else {
          iVar3 = FUN_18048cbc0(*param_3,"shortcuts");
          if (iVar3 != 0) goto LAB_1814c2f7b;
          plVar4 = *(longlong **)(param_1 + 0x10);
        }
        (**(code **)(*plVar4 + 0x168))();
      }
    }
  }
LAB_1814c2f7b:
  FUN_1815fceb0(param_2);
  puVar5 = (uint *)(*param_3 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return;
}



############ FUN_ 1814c7100 size=410 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814c7100(void)

{
  uint uVar1;
  char *pcVar2;
  BOOL BVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  undefined1 auStackY_a8 [32];
  DWORD local_78 [2];
  undefined **local_70;
  longlong local_68;
  HANDLE local_60;
  longlong local_58;
  char *local_50;
  longlong local_48;
  longlong local_40 [2];
  char *local_30;
  undefined1 local_28 [10];
  undefined1 local_1e;
  ulonglong local_18;
  
  local_40[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_a8;
  FUN_18123efe0(&local_70);
  if (*local_50 == '\0') {
    uVar4 = 0;
    if (local_60 != (HANDLE)0x0) {
      local_78[0] = 0;
      BVar3 = ReadFile(local_60,local_28,10,local_78,(LPOVERLAPPED)0x0);
      if (BVar3 == 0) {
        puVar5 = (undefined8 *)FUN_1812181b0(&local_48);
        local_30 = local_50;
        pcVar2 = (char *)*puVar5;
        *puVar5 = local_50;
        puVar6 = (uint *)(local_48 + -0x10);
        local_50 = pcVar2;
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
      }
      uVar4 = (ulonglong)local_78[0];
    }
    local_58 = local_58 + uVar4;
    local_1e = 0;
    FUN_18049c4e0(local_40,local_28);
    FUN_18048cbc0(local_40[0],"<TUTORIAL>");
    puVar6 = (uint *)(local_40[0] + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  local_70 = juce::FileInputStream::vftable;
  CloseHandle(local_60);
  puVar6 = (uint *)(local_50 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_68 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
}



############ FUN_ 1814ccd30 size=2040 ############

undefined8 * FUN_1814ccd30(undefined8 *param_1,longlong param_2,longlong *param_3,longlong param_4)

{
  uint *_Memory;
  int *piVar1;
  uint uVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  DWORD DVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  longlong lVar10;
  longlong *plVar11;
  uint *puVar12;
  void *pvVar13;
  int iVar14;
  int iVar15;
  undefined8 *puVar16;
  longlong lVar17;
  longlong *plVar18;
  longlong local_res10;
  longlong *local_res18;
  longlong local_res20;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  void *local_d8;
  void *local_d0;
  void *local_c8 [2];
  void *local_b8;
  longlong local_a8;
  undefined8 local_a0;
  longlong local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined1 local_70 [8];
  longlong local_68;
  undefined8 local_60;
  longlong local_58;
  longlong local_50;
  
  local_a0 = 0xfffffffffffffffe;
  *param_1 = CloudyTutorialStep::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  *(undefined1 *)(param_1 + 3) = 0;
  puVar8 = *(undefined8 **)(param_2 + 8);
  local_res20 = param_4;
  local_res18 = param_3;
  while ((puVar16 = (undefined8 *)0x0, puVar8 != (undefined8 *)0x0 &&
         (iVar5 = FUN_18049bb30(puVar8[3],&DAT_1822859c4), puVar16 = puVar8, iVar5 != 0))) {
    puVar8 = (undefined8 *)*puVar8;
  }
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  lVar10 = puVar16[3];
  param_1[7] = lVar10;
  if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1812217a0(param_1 + 4,puVar16);
  param_1[8] = &DAT_1821dbf98;
  FUN_18049c4e0(param_1 + 9,&DAT_182288c44);
  param_1[10] = &DAT_1821dbf98;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  uVar7 = FUN_18047e380();
  param_1[0xc] = uVar7;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  *(undefined4 *)(param_1 + 0x11) = 0;
  *(undefined1 *)((longlong)param_1 + 0x8c) = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  *(undefined1 *)(param_1 + 0x19) = 0;
  local_98 = *(longlong *)(param_2 + 0x18);
  _Memory = (uint *)(local_98 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  for (puVar8 = *(undefined8 **)(param_2 + 8); puVar8 != (undefined8 *)0x0;
      puVar8 = (undefined8 *)*puVar8) {
    iVar5 = FUN_18049bb30(puVar8[3],"SUBTEXT");
    if (iVar5 == 0) {
      uVar7 = FUN_181246700(puVar8,&local_f8);
      uVar7 = FUN_181230650(uVar7,&local_100,&DAT_1821e85cc);
      puVar8 = (undefined8 *)FUN_1812304e0(uVar7,&local_res10,&DAT_1821e8b94);
      local_90 = param_1[8];
      param_1[8] = *puVar8;
      *puVar8 = local_90;
      puVar12 = (uint *)(local_res10 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      puVar12 = (uint *)(local_100 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      puVar12 = (uint *)(local_f8 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      break;
    }
  }
  uVar7 = FUN_1814d9640(&local_e8);
  for (puVar8 = *(undefined8 **)(param_2 + 0x10); puVar8 != (undefined8 *)0x0;
      puVar8 = (undefined8 *)*puVar8) {
    local_88 = puVar8[1];
    iVar5 = FUN_18048cbc0(local_88,"audioFile");
    if (iVar5 == 0) {
      puVar8 = puVar8 + 2;
      goto LAB_1814ccffe;
    }
  }
  puVar8 = (undefined8 *)FUN_181220d40();
LAB_1814ccffe:
  local_80 = *puVar8;
  puVar8 = (undefined8 *)FUN_181245100(uVar7,&local_f0);
  local_78 = param_1[10];
  param_1[10] = *puVar8;
  *puVar8 = local_78;
  puVar12 = (uint *)(local_f0 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  puVar12 = (uint *)(local_e8 + -0x10);
  if ((*puVar12 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar12;
    *puVar12 = *puVar12 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
  }
  if (*(char *)param_1[10] != '\0') {
    puVar8 = (undefined8 *)FUN_18049a930(local_70,param_1 + 10);
    DVar6 = GetFileAttributesW((LPCWSTR)*puVar8);
    if ((DVar6 & 0x10) == 0) {
      bVar3 = true;
      goto LAB_1814cd0b5;
    }
  }
  bVar3 = false;
LAB_1814cd0b5:
  if (!bVar3) {
    local_68 = param_1[10];
    param_1[10] = &DAT_1821dbf98;
    puVar12 = (uint *)(local_68 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  for (puVar8 = *(undefined8 **)(param_2 + 8); puVar8 != (undefined8 *)0x0;
      puVar8 = (undefined8 *)*puVar8) {
    iVar5 = FUN_18049bb30(puVar8[3],"PROCESSORSTATE");
    if (iVar5 == 0) {
      FUN_1814caad0(param_1,puVar8);
      break;
    }
  }
  for (puVar8 = *(undefined8 **)(param_2 + 0x10); puVar8 != (undefined8 *)0x0;
      puVar8 = (undefined8 *)*puVar8) {
    local_60 = puVar8[1];
    iVar5 = FUN_18048cbc0(local_60,"continueText");
    if (iVar5 == 0) goto LAB_1814cd167;
  }
  puVar8 = (undefined8 *)0x0;
LAB_1814cd167:
  if (puVar8 != (undefined8 *)0x0) {
    plVar9 = (longlong *)FUN_181246db0(param_2,"continueText");
    if ((*(uint *)(*plVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar9 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar10 = param_1[9];
    param_1[9] = *plVar9;
    UNLOCK();
    puVar12 = (uint *)(lVar10 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
  }
  cVar4 = FUN_181246e10(param_2,"autoAdvance");
  if (cVar4 != '\0') {
    *(undefined1 *)((longlong)param_1 + 0x8c) = 1;
  }
  cVar4 = FUN_181246e10(param_2,"startPlayback");
  if (cVar4 != '\0') {
    *(undefined1 *)(param_1 + 3) = 1;
  }
  lVar10 = FUN_181246a60(param_2);
  if (lVar10 != 0) {
    iVar5 = -1;
    while( true ) {
      iVar14 = 0;
      for (puVar8 = *(undefined8 **)(lVar10 + 8); puVar8 != (undefined8 *)0x0;
          puVar8 = (undefined8 *)*puVar8) {
        iVar14 = iVar14 + 1;
      }
      iVar15 = iVar5 + 1;
      puVar8 = (undefined8 *)(lVar10 + 8);
      if (iVar14 <= iVar15) break;
      while ((-1 < iVar5 && ((undefined8 *)*puVar8 != (undefined8 *)0x0))) {
        iVar5 = iVar5 + -1;
        puVar8 = (undefined8 *)*puVar8;
      }
      plVar11 = (longlong *)FUN_181246db0(*puVar8,"componentID");
      plVar9 = (longlong *)param_1[0x13];
      iVar5 = iVar15;
      if ((longlong *)param_1[0x14] == plVar9) {
        FUN_18048d8d0(param_1 + 0x12,plVar9,plVar11);
      }
      else {
        lVar17 = *plVar11;
        *plVar9 = lVar17;
        if ((*(uint *)(lVar17 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar17 + -0x10) = *(int *)(lVar17 + -0x10) + 1;
          UNLOCK();
        }
        param_1[0x13] = param_1[0x13] + 8;
      }
    }
  }
  FUN_1814cb2c0(param_1,param_2);
  lVar10 = FUN_181246a60(param_2,"OVERLAY");
  if (lVar10 != 0) {
    uVar7 = FUN_1814cb5f0();
    plVar11 = (longlong *)FUN_180579d20(&local_e0,uVar7);
    plVar9 = param_1 + 0x18;
    if (plVar9 != plVar11) {
      lVar10 = *plVar11;
      *plVar11 = 0;
      lVar17 = *plVar9;
      *plVar9 = lVar10;
      if (lVar17 != 0) {
        FUN_1805798f0();
      }
    }
    if (local_e0 != 0) {
      FUN_1805798f0();
    }
    if (local_b8 != (void *)0x0) {
      FUN_180579ac0();
      pvVar13 = local_b8;
      if ((0xfff < (local_a8 - (longlong)local_b8 & 0xffffffffffffffe0U)) &&
         (pvVar13 = *(void **)((longlong)local_b8 + -8),
         0x1f < (ulonglong)((longlong)local_b8 + (-8 - (longlong)pvVar13)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar13);
    }
  }
  lVar10 = local_res20;
  plVar9 = local_res18;
  if (local_res20 == 0) {
    local_50 = local_res18[0x30];
    FUN_181246a60(param_2);
    (**(code **)(*plVar9 + 0x20))(plVar9,local_c8,1);
    uVar7 = FUN_1814cc570();
    pvVar13 = (void *)param_1[0xb];
    param_1[0xb] = uVar7;
    if (pvVar13 != (void *)0x0) {
      FUN_1812472e0(pvVar13);
                    /* WARNING: Subroutine does not return */
      free(pvVar13);
    }
    plVar9 = local_res18;
    if (local_c8[0] != (void *)0x0) {
      FUN_1812472e0(local_c8[0]);
                    /* WARNING: Subroutine does not return */
      free(local_c8[0]);
    }
  }
  else {
    FUN_180556230(&local_d8,*(undefined8 *)(local_res20 + 0x58));
    plVar11 = *(longlong **)(lVar10 + 0x78);
    plVar9 = local_res18;
    for (plVar18 = *(longlong **)(lVar10 + 0x70); local_res18 = plVar9, plVar18 != plVar11;
        plVar18 = plVar18 + 0xc) {
      lVar10 = plVar18[1];
      for (lVar17 = *plVar18; lVar17 != lVar10; lVar17 = lVar17 + 0x18) {
        if (*(char *)(lVar17 + 0x10) == '\0') {
          FUN_1814cc790();
        }
      }
      plVar9 = local_res18;
    }
    local_58 = plVar9[0x30];
    lVar10 = FUN_181246a60(param_2);
    if (lVar10 != 0) {
      uVar7 = FUN_180556230(&local_d0,lVar10);
      FUN_180487580(param_1 + 0xb,uVar7);
      if (local_d0 != (void *)0x0) {
        FUN_1812472e0(local_d0);
                    /* WARNING: Subroutine does not return */
        free(local_d0);
      }
    }
    uVar7 = FUN_1814cc570();
    pvVar13 = (void *)param_1[0xb];
    param_1[0xb] = uVar7;
    if (pvVar13 != (void *)0x0) {
      FUN_1812472e0(pvVar13);
                    /* WARNING: Subroutine does not return */
      free(pvVar13);
    }
    if (local_d8 != (void *)0x0) {
      FUN_1812472e0(local_d8);
                    /* WARNING: Subroutine does not return */
      free(local_d8);
    }
  }
  FUN_1814cbc00(param_1,param_2,plVar9);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1814caad0 size=651 ############

void FUN_1814caad0(longlong param_1,longlong param_2)

{
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong lVar6;
  uint *_Memory;
  uint *puVar7;
  int iVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  int iVar11;
  int iVar12;
  undefined8 *puVar13;
  longlong local_res10;
  longlong *local_res18;
  undefined8 *local_res20;
  
  iVar11 = -1;
  do {
    iVar8 = 0;
    for (puVar3 = *(undefined8 **)(param_2 + 8); puVar3 != (undefined8 *)0x0;
        puVar3 = (undefined8 *)*puVar3) {
      iVar8 = iVar8 + 1;
    }
    iVar12 = iVar11 + 1;
    plVar5 = (longlong *)(param_2 + 8);
    if (iVar8 <= iVar12) {
      return;
    }
    while ((-1 < iVar11 && ((longlong *)*plVar5 != (longlong *)0x0))) {
      iVar11 = iVar11 + -1;
      plVar5 = (longlong *)*plVar5;
    }
    lVar4 = *plVar5;
    for (puVar3 = *(undefined8 **)(lVar4 + 0x10); puVar3 != (undefined8 *)0x0;
        puVar3 = (undefined8 *)*puVar3) {
      iVar11 = FUN_18048cbc0(puVar3[1],&DAT_1821e8e4c);
      if (iVar11 == 0) {
        plVar5 = puVar3 + 2;
        goto LAB_1814cab7a;
      }
    }
    plVar5 = (longlong *)FUN_181220d40();
LAB_1814cab7a:
    local_res10 = *plVar5;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
    for (puVar3 = *(undefined8 **)(lVar4 + 0x10); puVar3 != (undefined8 *)0x0;
        puVar3 = (undefined8 *)*puVar3) {
      iVar11 = FUN_18048cbc0(puVar3[1],"value");
      if (iVar11 == 0) {
        plVar5 = puVar3 + 2;
        goto LAB_1814cabd6;
      }
    }
    plVar5 = (longlong *)FUN_181220d40();
LAB_1814cabd6:
    lVar6 = local_res10;
    lVar4 = *plVar5;
    puVar7 = (uint *)(lVar4 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      *puVar7 = *puVar7 + 1;
      UNLOCK();
    }
    plVar5 = (longlong *)(param_1 + 0x60);
    puVar3 = (undefined8 *)*plVar5;
    cVar2 = *(char *)((longlong)puVar3[1] + 0x19);
    puVar10 = puVar3;
    puVar9 = (undefined8 *)puVar3[1];
    while (cVar2 == '\0') {
      iVar11 = FUN_18048cbc0(puVar9[4],lVar6);
      if (iVar11 < 0) {
        puVar13 = (undefined8 *)puVar9[2];
        puVar9 = puVar10;
      }
      else {
        puVar13 = (undefined8 *)*puVar9;
      }
      puVar10 = puVar9;
      puVar9 = puVar13;
      cVar2 = *(char *)((longlong)puVar13 + 0x19);
    }
    if ((puVar10 == puVar3) || (iVar11 = FUN_18048cbc0(lVar6), iVar11 < 0)) {
      local_res18 = &local_res10;
      lVar6 = FUN_18057e2a0(plVar5);
      FUN_18057e000(plVar5,&local_res20,puVar10,lVar6 + 0x20,lVar6);
      puVar10 = local_res20;
    }
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      *puVar7 = *puVar7 + 1;
      UNLOCK();
    }
    LOCK();
    lVar6 = puVar10[5];
    puVar10[5] = lVar4;
    UNLOCK();
    _Memory = (uint *)(lVar6 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_res10 + -0x10);
    iVar11 = iVar12;
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  } while( true );
}



############ FUN_ 1814cb2c0 size=810 ############

void FUN_1814cb2c0(longlong param_1,longlong param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  double dVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  double dVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  longlong local_res10;
  undefined8 local_res18;
  undefined8 local_res20;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined1 *local_d0;
  float local_c8;
  float local_c4;
  float local_c0;
  float local_bc;
  longlong local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  
  local_b0 = 0xfffffffffffffffe;
  puVar1 = *(undefined8 **)(param_2 + 8);
  while( true ) {
    if (puVar1 == (undefined8 *)0x0) {
      return;
    }
    iVar6 = FUN_18049bb30(puVar1[3],"FLOATS");
    dVar5 = DAT_1824c4290;
    if (iVar6 == 0) break;
    puVar1 = (undefined8 *)*puVar1;
  }
  iVar6 = -1;
  do {
    iVar7 = 0;
    for (puVar2 = (undefined8 *)puVar1[1]; puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar7 = iVar7 + 1;
    }
    iVar8 = iVar6 + 1;
    plVar4 = puVar1 + 1;
    if (iVar7 <= iVar8) {
      return;
    }
    while ((-1 < iVar6 && ((longlong *)*plVar4 != (longlong *)0x0))) {
      iVar6 = iVar6 + -1;
      plVar4 = (longlong *)*plVar4;
    }
    lVar3 = *plVar4;
    for (puVar2 = *(undefined8 **)(lVar3 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      local_a8 = puVar2[1];
      iVar6 = FUN_18048cbc0(local_a8,&DAT_1821e8be4);
      if (iVar6 == 0) {
        local_res10 = puVar2[2];
        dVar9 = (double)FUN_18049bd80(&local_res10);
        goto LAB_1814cb3f7;
      }
    }
    dVar9 = 0.0;
LAB_1814cb3f7:
    fVar13 = (float)dVar9;
    for (puVar2 = *(undefined8 **)(lVar3 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      local_a0 = puVar2[1];
      iVar6 = FUN_18048cbc0(local_a0,&DAT_1821e8bf4);
      if (iVar6 == 0) {
        local_res18 = puVar2[2];
        dVar9 = (double)FUN_18049bd80(&local_res18);
        goto LAB_1814cb437;
      }
    }
    dVar9 = 0.0;
LAB_1814cb437:
    fVar12 = (float)dVar9;
    for (puVar2 = *(undefined8 **)(lVar3 + 0x10); puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      local_98 = puVar2[1];
      iVar6 = FUN_18048cbc0(local_98,"width");
      if (iVar6 == 0) {
        local_res20 = puVar2[2];
        dVar9 = (double)FUN_18049bd80(&local_res20);
        goto LAB_1814cb477;
      }
    }
    dVar9 = 0.0;
LAB_1814cb477:
    fVar11 = (float)dVar9;
    for (puVar2 = *(undefined8 **)(lVar3 + 0x10); dVar9 = dVar5, puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      local_90 = puVar2[1];
      iVar6 = FUN_18048cbc0(local_90,"fontSize");
      if (iVar6 == 0) {
        local_b8 = puVar2[2];
        dVar9 = (double)FUN_18049bd80(&local_b8);
        break;
      }
    }
    fVar10 = (float)dVar9;
    local_e8 = 0;
    uStack_e0 = 0;
    local_d8 = 0;
    local_d0 = *(undefined1 **)(lVar3 + 0x18);
    if ((*(uint *)(local_d0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
      UNLOCK();
    }
    FUN_1812217a0(&local_e8,lVar3);
    puVar2 = *(undefined8 **)(param_1 + 0xb0);
    local_c8 = fVar13;
    local_c4 = fVar12;
    local_c0 = fVar11;
    local_bc = fVar10;
    if (*(undefined8 **)(param_1 + 0xb8) == puVar2) {
      FUN_18057b330(param_1 + 0xa8,puVar2,&local_e8);
    }
    else {
      *puVar2 = local_e8;
      local_e8 = 0;
      puVar2[1] = uStack_e0;
      uStack_e0 = 0;
      puVar2[2] = local_d8;
      local_d8 = 0;
      puVar2[3] = local_d0;
      local_d0 = &DAT_1821dbf98;
      *(float *)(puVar2 + 4) = fVar13;
      *(float *)((longlong)puVar2 + 0x24) = fVar12;
      *(float *)(puVar2 + 5) = fVar11;
      *(float *)((longlong)puVar2 + 0x2c) = fVar10;
      *(longlong *)(param_1 + 0xb0) = *(longlong *)(param_1 + 0xb0) + 0x30;
    }
    FUN_1812472e0(&local_e8);
    iVar6 = iVar8;
  } while( true );
}



############ FUN_ 1814cb5f0 size=1531 ############

float * FUN_1814cb5f0(float *param_1,float *param_2,longlong param_3)

{
  undefined8 *puVar1;
  longlong *plVar2;
  longlong lVar3;
  longlong *plVar4;
  float fVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  uint *puVar9;
  float *pfVar10;
  uint *_Memory;
  int iVar11;
  double dVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float *local_res8;
  float *local_res10;
  char *local_res18;
  char *local_res20;
  undefined8 local_160;
  float *pfStack_158;
  float *local_150;
  float local_148;
  float local_144;
  undefined1 *local_140;
  float local_138;
  float fStack_134;
  float fStack_130;
  float fStack_12c;
  float local_128;
  float local_124;
  char *local_120;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  longlong local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  
  local_e0 = 0xfffffffffffffffe;
  local_res8 = param_1;
  local_res10 = param_2;
  dVar12 = (double)FUN_181246d40(param_3,"opacity",DAT_1824c40b0);
  fVar14 = (float)dVar12;
  fVar13 = 0.0;
  if ((0.0 <= fVar14) && (fVar13 = DAT_1824c3ea4, fVar14 <= DAT_1824c3ea4)) {
    fVar13 = fVar14;
  }
  local_160 = 0;
  pfStack_158 = (float *)0x0;
  local_150 = (float *)0x0;
  iVar11 = 0;
  do {
    iVar8 = 0;
    for (puVar1 = *(undefined8 **)(param_3 + 8); puVar1 != (undefined8 *)0x0;
        puVar1 = (undefined8 *)*puVar1) {
      iVar8 = iVar8 + 1;
    }
    plVar2 = (longlong *)(param_3 + 8);
    iVar6 = iVar11;
    if (iVar8 <= iVar11) {
      *param_2 = fVar13;
      *(undefined8 *)(param_2 + 2) = local_160;
      *(float **)(param_2 + 4) = pfStack_158;
      *(float **)(param_2 + 6) = local_150;
      return param_2;
    }
    do {
      plVar4 = plVar2;
      iVar6 = iVar6 + -1;
      if (iVar6 < 0) break;
      plVar2 = (longlong *)*plVar4;
    } while (plVar2 != (longlong *)0x0);
    lVar3 = *plVar4;
    for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
        puVar1 = (undefined8 *)*puVar1) {
      local_d8 = puVar1[1];
      iVar8 = FUN_18048cbc0(local_d8,"padding");
      if (iVar8 == 0) {
        local_108 = puVar1[2];
        dVar12 = (double)FUN_18049bd80(&local_108);
        goto LAB_1814cb707;
      }
    }
    dVar12 = 0.0;
LAB_1814cb707:
    fVar14 = (float)dVar12;
    FUN_18049c4e0(&local_res8,"ellipse");
    for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
        puVar1 = (undefined8 *)*puVar1) {
      local_d0 = puVar1[1];
      iVar8 = FUN_18048cbc0(local_d0,&DAT_1822a01f4);
      if (iVar8 == 0) {
        local_res10 = (float *)puVar1[2];
        pfVar10 = local_res10 + -4;
        fVar5 = *pfVar10;
        goto LAB_1814cb768;
      }
    }
    pfVar10 = local_res8 + -4;
    fVar5 = *pfVar10;
    local_res10 = local_res8;
LAB_1814cb768:
    if (((uint)fVar5 & 0x30000000) == 0) {
      LOCK();
      *pfVar10 = (float)((int)*pfVar10 + 1);
      UNLOCK();
    }
    iVar8 = FUN_18048cbc0(local_res10,"rectangle");
    if (((uint)*pfVar10 & 0x30000000) == 0) {
      LOCK();
      fVar5 = *pfVar10;
      *pfVar10 = (float)((int)*pfVar10 - 1);
      UNLOCK();
      if (fVar5 == 0.0) {
                    /* WARNING: Subroutine does not return */
        free(pfVar10);
      }
    }
    pfVar10 = local_res8 + -4;
    if (((uint)*pfVar10 & 0x30000000) == 0) {
      LOCK();
      fVar5 = *pfVar10;
      *pfVar10 = (float)((int)*pfVar10 - 1);
      UNLOCK();
      if (fVar5 == 0.0) {
                    /* WARNING: Subroutine does not return */
        free(pfVar10);
      }
    }
    FUN_18049c4e0(&local_res18,"");
    for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
        puVar1 = (undefined8 *)*puVar1) {
      local_c8 = puVar1[1];
      iVar6 = FUN_18048cbc0(local_c8,"componentID");
      if (iVar6 == 0) {
        local_res20 = (char *)puVar1[2];
        _Memory = (uint *)(local_res20 + -0x10);
        uVar7 = *_Memory;
        goto LAB_1814cb838;
      }
    }
    _Memory = (uint *)(local_res18 + -0x10);
    uVar7 = *_Memory;
    local_res20 = local_res18;
LAB_1814cb838:
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    puVar9 = (uint *)(local_res18 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    fVar5 = (float)(uint)(iVar8 != 0);
    if (*local_res20 == '\0') {
      for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
          puVar1 = (undefined8 *)*puVar1) {
        local_c0 = puVar1[1];
        iVar8 = FUN_18048cbc0(local_c0,&DAT_1821e8dc4);
        if (iVar8 == 0) {
          local_100 = puVar1[2];
          dVar12 = (double)FUN_18049bd80(&local_100);
          goto LAB_1814cb8b7;
        }
      }
      dVar12 = 0.0;
LAB_1814cb8b7:
      fVar18 = (float)dVar12;
      for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
          puVar1 = (undefined8 *)*puVar1) {
        local_b8 = puVar1[1];
        iVar8 = FUN_18048cbc0(local_b8,&DAT_1821e8bd4);
        if (iVar8 == 0) {
          local_f8 = puVar1[2];
          dVar12 = (double)FUN_18049bd80(&local_f8);
          goto LAB_1814cb8f7;
        }
      }
      dVar12 = 0.0;
LAB_1814cb8f7:
      fVar17 = (float)dVar12;
      for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
          puVar1 = (undefined8 *)*puVar1) {
        local_b0 = puVar1[1];
        iVar8 = FUN_18048cbc0(local_b0,"width");
        if (iVar8 == 0) {
          local_f0 = puVar1[2];
          dVar12 = (double)FUN_18049bd80(&local_f0);
          goto LAB_1814cb937;
        }
      }
      dVar12 = 0.0;
LAB_1814cb937:
      fVar16 = (float)dVar12;
      for (puVar1 = *(undefined8 **)(lVar3 + 0x10); puVar1 != (undefined8 *)0x0;
          puVar1 = (undefined8 *)*puVar1) {
        local_a8 = puVar1[1];
        iVar8 = FUN_18048cbc0(local_a8,"height");
        if (iVar8 == 0) {
          local_e8 = puVar1[2];
          dVar12 = (double)FUN_18049bd80(&local_e8);
          goto LAB_1814cb977;
        }
      }
      dVar12 = 0.0;
LAB_1814cb977:
      fVar15 = (float)dVar12;
      local_148 = fVar14;
      local_144 = fVar5;
      FUN_18049c4e0(&local_140,"");
      local_138 = fVar18;
      fStack_134 = fVar17;
      fStack_130 = fVar16;
      fStack_12c = fVar15;
      if (local_150 == pfStack_158) {
        FUN_18057b7c0(&local_160,pfStack_158,&local_148);
      }
      else {
        *pfStack_158 = local_148;
        pfStack_158[1] = local_144;
        *(undefined1 **)(pfStack_158 + 2) = local_140;
        local_140 = &DAT_1821dbf98;
        pfStack_158[4] = fVar18;
        pfStack_158[5] = fVar17;
        pfStack_158[6] = fVar16;
        pfStack_158[7] = fVar15;
        pfStack_158 = pfStack_158 + 8;
      }
      puVar9 = (uint *)(local_140 + -0x10);
      uVar7 = *puVar9;
    }
    else {
      local_120 = local_res20;
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        *_Memory = *_Memory + 1;
        UNLOCK();
      }
      local_118 = 0;
      uStack_110 = 0;
      local_128 = fVar14;
      local_124 = fVar5;
      if (local_150 == pfStack_158) {
        FUN_18057b7c0(&local_160,pfStack_158,&local_128);
      }
      else {
        *pfStack_158 = fVar14;
        pfStack_158[1] = fVar5;
        *(char **)(pfStack_158 + 2) = local_res20;
        local_120 = "";
        pfStack_158[4] = 0.0;
        pfStack_158[5] = 0.0;
        pfStack_158[6] = 0.0;
        pfStack_158[7] = 0.0;
        pfStack_158 = pfStack_158 + 8;
      }
      puVar9 = (uint *)(local_120 + -0x10);
      uVar7 = *puVar9;
    }
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar7 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    iVar11 = iVar11 + 1;
  } while( true );
}



############ FUN_ 1814cadf0 size=314 ############

void FUN_1814cadf0(longlong param_1,longlong param_2)

{
  undefined8 *puVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  int iVar6;
  longlong *plVar7;
  int iVar8;
  
  plVar7 = *(longlong **)(param_2 + 8);
  if (plVar7 != (longlong *)0x0) {
    while (iVar4 = FUN_18049bb30(plVar7[3],&DAT_1822a2464), iVar4 != 0) {
      plVar7 = (longlong *)*plVar7;
      if (plVar7 == (longlong *)0x0) {
        return;
      }
    }
    iVar4 = -1;
    while( true ) {
      iVar6 = 0;
      for (puVar1 = (undefined8 *)plVar7[1]; puVar1 != (undefined8 *)0x0;
          puVar1 = (undefined8 *)*puVar1) {
        iVar6 = iVar6 + 1;
      }
      iVar8 = iVar4 + 1;
      plVar5 = plVar7 + 1;
      if (iVar6 <= iVar8) break;
      while ((-1 < iVar4 && ((longlong *)*plVar5 != (longlong *)0x0))) {
        iVar4 = iVar4 + -1;
        plVar5 = (longlong *)*plVar5;
      }
      for (puVar1 = *(undefined8 **)(*plVar5 + 0x10); puVar1 != (undefined8 *)0x0;
          puVar1 = (undefined8 *)*puVar1) {
        iVar4 = FUN_18048cbc0(puVar1[1],"componentID");
        if (iVar4 == 0) {
          plVar5 = puVar1 + 2;
          goto LAB_1814caec6;
        }
      }
      plVar5 = (longlong *)FUN_181220d40();
LAB_1814caec6:
      plVar2 = *(longlong **)(param_1 + 0x98);
      iVar4 = iVar8;
      if (*(longlong **)(param_1 + 0xa0) == plVar2) {
        FUN_18048d8d0(param_1 + 0x90,plVar2,plVar5);
      }
      else {
        lVar3 = *plVar5;
        *plVar2 = lVar3;
        if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
          UNLOCK();
        }
        *(longlong *)(param_1 + 0x98) = *(longlong *)(param_1 + 0x98) + 8;
      }
    }
  }
  return;
}



############ FUN_ 1814ea5e0 size=440 ############

void FUN_1814ea5e0(longlong param_1,undefined8 param_2)

{
  uint *_Memory;
  uint uVar1;
  char cVar2;
  longlong lVar3;
  undefined8 *puVar4;
  code *pcVar5;
  undefined8 *puVar6;
  undefined4 uVar7;
  int iVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  lVar9 = __RTDynamicCast(param_2,0,&ParameterFloat::RTTI_Type_Descriptor,
                          &ParameterChoice::RTTI_Type_Descriptor,0);
  if (lVar9 != 0) {
    lVar3 = *(longlong *)(lVar9 + 0x68);
    _Memory = (uint *)(lVar3 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    uVar7 = FUN_1811bf620(lVar9);
    puVar4 = *(undefined8 **)(param_1 + 0x40);
    cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
    puVar6 = puVar4;
    puVar10 = (undefined8 *)puVar4[1];
    while (cVar2 == '\0') {
      iVar8 = FUN_18048cbc0(puVar10[4],lVar3);
      if (iVar8 < 0) {
        puVar11 = (undefined8 *)puVar10[2];
        puVar10 = puVar6;
      }
      else {
        puVar11 = (undefined8 *)*puVar10;
      }
      puVar6 = puVar10;
      puVar10 = puVar11;
      cVar2 = *(char *)((longlong)puVar11 + 0x19);
    }
    if ((puVar6 == puVar4) || (iVar8 = FUN_18048cbc0(lVar3), iVar8 < 0)) {
      std::_Xout_of_range("invalid map<K, T> key");
      pcVar5 = (code *)swi(3);
      (*pcVar5)();
      return;
    }
    *(undefined4 *)puVar6[5] = uVar7;
    *(longlong *)(param_1 + 0x50) =
         (longlong)(*(int *)(param_1 + 0x28) * *(int *)(param_1 + 0x24) + *(int *)(param_1 + 0x20));
    FUN_1811bf680(*(undefined8 *)(param_1 + 0x10));
    FUN_1811bf680(*(undefined8 *)(param_1 + 0x18));
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  uStack_30 = *(undefined4 *)(param_1 + -0xa0);
  uStack_2c = *(undefined4 *)(param_1 + -0x9c);
  local_38 = 0;
  uStack_34 = 0;
  FUN_181342870(param_1 + -200,&local_38,1);
  return;
}



############ FUN_ 1814ea960 size=281 ############

void FUN_1814ea960(undefined8 *param_1,longlong *param_2,undefined4 param_3)

{
  uint uVar1;
  undefined8 *puVar2;
  longlong lVar3;
  code *pcVar4;
  int iVar5;
  uint *_Memory;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  
  puVar2 = (undefined8 *)param_1[6];
  puVar7 = puVar2;
  if (*(char *)((longlong)puVar2[1] + 0x19) == '\0') {
    lVar3 = *param_2;
    puVar6 = puVar2;
    puVar8 = (undefined8 *)puVar2[1];
    do {
      puVar7 = puVar8;
      iVar5 = FUN_18048cbc0(puVar7[4],lVar3);
      if (iVar5 < 0) {
        puVar8 = (undefined8 *)puVar7[2];
        puVar7 = puVar6;
      }
      else {
        puVar8 = (undefined8 *)*puVar7;
      }
      puVar6 = puVar7;
    } while (*(char *)((longlong)puVar8 + 0x19) == '\0');
  }
  if (puVar7 != puVar2) {
    iVar5 = FUN_18048cbc0();
    if (-1 < iVar5) {
      *(undefined4 *)puVar7[5] = param_3;
      param_1[8] = (longlong)
                   (*(int *)(param_1 + 3) * *(int *)((longlong)param_1 + 0x14) +
                   *(int *)(param_1 + 2));
      FUN_1811bf680(*param_1);
      FUN_1811bf680(param_1[1]);
      _Memory = (uint *)(*param_2 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      return;
    }
  }
  std::_Xout_of_range("invalid map<K, T> key");
  pcVar4 = (code *)swi(3);
  (*pcVar4)();
  return;
}



############ FUN_ 1814eabf0 size=2351 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814eabf0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  uint uVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  bool bVar5;
  bool bVar6;
  uint uVar7;
  char cVar8;
  undefined1 uVar9;
  int iVar10;
  longlong lVar11;
  undefined8 uVar12;
  int *piVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  undefined4 local_res8;
  undefined4 local_res10;
  undefined8 *local_248;
  float local_240;
  float fStack_23c;
  float fStack_238;
  float fStack_234;
  undefined4 local_230;
  float local_22c;
  void *local_228;
  undefined8 local_220;
  undefined1 local_218 [4];
  undefined4 local_214;
  float local_208;
  float local_204;
  float local_200;
  float local_1fc;
  float local_1f8;
  float local_1f4;
  float local_1f0;
  float local_1ec;
  float local_1e8;
  float local_1e4;
  float local_1dc;
  float local_1d8;
  float local_1d4;
  float local_1d0;
  float local_1cc;
  float local_1c8;
  float local_1c4;
  float local_1c0;
  float local_1bc;
  float local_1b8;
  float local_1b4;
  float local_1b0;
  float local_1ac;
  float local_1a8;
  float local_1a4;
  float local_1a0;
  float local_19c;
  float local_198;
  float local_194;
  float local_190;
  float local_18c;
  float local_188;
  float local_184;
  float local_180;
  float local_17c;
  undefined4 local_178;
  undefined1 local_170 [4];
  undefined4 local_16c;
  float local_168;
  float fStack_164;
  float fStack_160;
  float fStack_15c;
  float local_158;
  float fStack_154;
  float fStack_150;
  float fStack_14c;
  undefined8 local_148;
  undefined8 uStack_140;
  ulonglong local_138;
  undefined8 local_130;
  undefined1 local_128 [16];
  float local_118;
  float fStack_114;
  float fStack_110;
  float fStack_10c;
  undefined8 local_108;
  undefined8 uStack_100;
  ulonglong local_f8;
  undefined1 local_e8 [176];
  
  local_130 = 0xfffffffffffffffe;
  local_230 = 0;
  plVar1 = (longlong *)(param_1 + 0x1c8);
  lVar11 = (**(code **)(*plVar1 + 8))(plVar1);
  uVar2 = *(uint *)(lVar11 + 0x88);
  if (*(code **)(*plVar1 + 8) == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    uVar12 = *(undefined8 *)(param_1 + 0x1d0);
  }
  else {
    uVar12 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  uVar12 = FUN_1813f22a0(uVar12,local_128,DAT_1826741f8,param_1);
  fVar14 = (float)FUN_1813ec390(uVar12);
  uVar7 = DAT_1824c4f30;
  fVar19 = DAT_1824c41e0;
  local_22c = (float)*(int *)(param_1 + 0x2c);
  fVar17 = (float)(uVar2 ^ DAT_1824c4f30);
  fVar20 = fVar17 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x28);
  if (fVar20 <= 0.0) {
    fVar20 = 0.0;
  }
  fVar21 = fVar17 * DAT_1824c41e0 + local_22c;
  if (fVar21 <= 0.0) {
    fVar21 = 0.0;
  }
  fVar18 = 0.0 - fVar17;
  fVar17 = 0.0 - fVar17;
  if (*(code **)(*plVar1 + 8) == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    lVar11 = *(longlong *)(param_1 + 0x1d0);
  }
  else {
    lVar11 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  local_248 = (undefined8 *)**(longlong **)(lVar11 + 0x78);
  if (local_248 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_248 + 1) = *(int *)(local_248 + 1) + 1;
    UNLOCK();
  }
  local_230 = 4;
  FUN_1812520a0(&local_248);
  bVar5 = *(int *)(param_1 + 0x194) < 1;
  if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_1 + 0x18) == 0 || (cVar8 = FUN_18133eaa0(), cVar8 != '\0')))) {
    bVar6 = true;
  }
  else {
    bVar6 = false;
  }
  if (*(code **)(*plVar1 + 8) == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    uVar12 = *(undefined8 *)(param_1 + 0x1d0);
  }
  else {
    uVar12 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  FUN_1813f22a0(uVar12,local_218,DAT_1826741e0,param_1);
  fVar15 = *(float *)(param_1 + 0x390) * _DAT_1824c3ca4;
  if (0.0 < fVar15) {
    if (fVar15 < DAT_1824c3ea4) {
      uVar9 = (undefined1)(int)(fVar15 * DAT_1824c454c);
    }
    else {
      uVar9 = 0xff;
    }
  }
  else {
    uVar9 = 0;
  }
  local_res10 = CONCAT13(uVar9,(int3)DAT_18262bb68);
  FUN_181296c00(param_2,local_res10);
  if (fVar14 <= 0.0) {
    local_1f8 = fVar17;
    local_1f4 = fVar18;
    local_1f0 = fVar20;
    local_1ec = fVar21;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_1f8);
  }
  else {
    local_208 = fVar17;
    local_204 = fVar18;
    local_200 = fVar20;
    local_1fc = fVar21;
    FUN_181295300(param_2,&local_208,fVar14);
  }
  lVar11 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar15 = (float)((uint)(*(float *)(lVar11 + 0x88) * DAT_1824c43a8) ^ uVar7);
  fStack_238 = fVar15 * fVar19 + fVar20;
  if (fStack_238 <= 0.0) {
    fStack_238 = 0.0;
  }
  fStack_234 = fVar15 * fVar19 + fVar21;
  if (fStack_234 <= 0.0) {
    fStack_234 = 0.0;
  }
  fVar18 = fVar18 - fVar15;
  fVar17 = fVar17 - fVar15;
  fVar20 = *(float *)(param_1 + 0x1e8);
  fVar21 = fStack_238;
  if (fVar20 <= fStack_238) {
    fVar21 = fVar20;
  }
  fVar15 = fVar17 + fVar21;
  fVar22 = fStack_238 - fVar21;
  if (fVar20 <= 0.0) {
    fVar20 = 0.0;
  }
  uVar9 = 0xff;
  if (!bVar6) {
    uVar9 = 0x99;
  }
  local_res8 = CONCAT13(uVar9,(int3)local_214);
  local_240 = fVar17;
  fStack_23c = fVar18;
  local_1e8 = fVar17;
  local_1e4 = fVar18;
  local_1dc = fVar20;
  local_168 = fVar17;
  fStack_164 = fVar18;
  fStack_160 = fStack_238;
  fStack_15c = fStack_234;
  FUN_181296c00(param_2,local_res8);
  if (**(char **)(param_1 + 0x1e0) == '\0') {
    fVar17 = (fVar17 + fVar21 * DAT_1824c3d8c) - fVar21 * DAT_1824c3d8c;
    fVar18 = (local_22c * DAT_1824c3d8c + 0.0) - fVar20 * DAT_1824c3d8c;
    local_1e8 = fVar17;
    local_1e4 = fVar18;
  }
  if (bVar5) {
    if (fVar14 <= 0.0) {
      local_1b8 = fVar17;
      local_1b4 = fVar18;
      local_1b0 = fVar21;
      local_1ac = fVar20;
      FUN_181295950(param_2,&local_1b8,uVar2);
    }
    else {
      local_1c8 = fVar17;
      local_1c4 = fVar18;
      local_1c0 = fVar21;
      local_1bc = fVar20;
      FUN_181295190(param_2,&local_1c8,fVar14,uVar2);
    }
  }
  else {
    local_1d8 = fVar17;
    local_1d4 = fVar18;
    local_1d0 = fVar21;
    local_1cc = fVar20;
    FUN_1812954c0(param_2,&local_1d8,uVar2);
  }
  cVar8 = FUN_1804d6ee0(param_1);
  if (cVar8 != '\0') {
    fVar16 = (float)((uint)(float)((double)*(float *)(param_1 + 0x1e8) * _DAT_1824c3fa8) ^
                    DAT_1824c4f30);
    fVar21 = fVar16 * fVar19 + fVar21;
    if (fVar21 <= 0.0) {
      fVar21 = 0.0;
    }
    fVar20 = fVar16 * fVar19 + fVar20;
    if (fVar20 <= 0.0) {
      fVar20 = 0.0;
    }
    fVar18 = fVar18 - fVar16;
    fVar17 = fVar17 - fVar16;
    if (bVar5) {
      if (fVar14 <= 0.0) {
        local_188 = fVar17;
        local_184 = fVar18;
        local_180 = fVar21;
        local_17c = fVar20;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_188);
      }
      else {
        local_198 = fVar17;
        local_194 = fVar18;
        local_190 = fVar21;
        local_18c = fVar20;
        FUN_181295300(param_2,&local_198,fVar14);
      }
    }
    else {
      local_1a8 = fVar17;
      local_1a4 = fVar18;
      local_1a0 = fVar21;
      local_19c = fVar20;
      FUN_181295820(param_2,&local_1a8);
    }
  }
  FUN_181296c00(param_2,local_214);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_248);
  fVar19 = *(float *)(param_1 + 0x1e8);
  fVar14 = fVar22;
  if ((float)((double)fVar19 * DAT_1824c40f0) <= fVar22) {
    fVar14 = (float)((double)fVar19 * DAT_1824c40f0);
  }
  fVar15 = fVar15 + fVar14;
  fVar22 = fVar22 - fVar14;
  fStack_14c = fStack_234;
  if (fVar19 <= fStack_234) {
    fStack_14c = fVar19;
  }
  fVar19 = fStack_23c + fStack_14c;
  fStack_154 = fStack_23c;
  fStack_114 = fStack_23c;
  local_178 = 0x21;
  local_240 = fVar15;
  fStack_23c = fVar19;
  fStack_238 = fVar22;
  local_158 = fVar15;
  fStack_150 = fVar22;
  local_118 = fVar15;
  fStack_110 = fVar22;
  fStack_10c = fStack_14c;
  FUN_1812963b0(param_2,param_1 + 0x158,&local_118,0x21,1);
  iVar10 = FUN_18048cbc0(*(undefined8 *)(param_1 + 0x1e0),"");
  if (iVar10 != 0) {
    fVar17 = (float)((double)*(float *)(local_248 + 5) * _DAT_1824c4108);
    fVar14 = DAT_1824c3cb8;
    if ((DAT_1824c3cb8 <= fVar17) && (fVar14 = DAT_1824c45c8, fVar17 <= DAT_1824c45c8)) {
      fVar14 = fVar17;
    }
    if (*(float *)(local_248 + 5) != fVar14) {
      FUN_181252760(&local_248);
      *(float *)(local_248 + 5) = fVar14;
      plVar3 = (longlong *)local_248[2];
      if (((plVar3 != (longlong *)0x0) &&
          (*(code **)(*plVar3 + 8) !=
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
         (cVar8 = (**(code **)(*plVar3 + 8))(plVar3,&local_248), cVar8 == '\0')) {
        puVar4 = (undefined8 *)local_248[2];
        local_248[2] = 0;
        if (puVar4 != (undefined8 *)0x0) {
          LOCK();
          piVar13 = (int *)(puVar4 + 1);
          iVar10 = *piVar13;
          *piVar13 = *piVar13 + -1;
          UNLOCK();
          fVar15 = local_240;
          fVar22 = fStack_238;
          fVar19 = fStack_23c;
          if (iVar10 == 1) {
            (**(code **)*puVar4)(puVar4,1);
            fVar15 = local_240;
            fVar22 = fStack_238;
            fVar19 = fStack_23c;
          }
        }
      }
    }
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_248);
    if (*(code **)(*plVar1 + 8) == FUN_180579300) {
      if (*(longlong *)(param_1 + 0x1d0) == 0) {
        FUN_180579970(param_1);
      }
      uVar12 = *(undefined8 *)(param_1 + 0x1d0);
    }
    else {
      uVar12 = (**(code **)(*plVar1 + 8))(plVar1);
    }
    FUN_1813f22a0(uVar12,local_170,DAT_18267416c,param_1);
    FUN_181296c00(param_2,local_16c);
    fVar14 = *(float *)(local_248 + 5);
    if ((**(char **)(param_1 + 0x1e0) != '\0') &&
       (piVar13 = (int *)(**(code **)(**(longlong **)(param_2 + 8) + 0x58))
                                   (*(longlong **)(param_2 + 8),local_e8),
       (int)fVar15 < piVar13[2] + *piVar13)) {
      local_228 = (void *)0x0;
      local_220 = 0;
      FUN_1804aebd0(&local_228,200);
      uVar12 = (**(code **)(**(longlong **)(param_2 + 8) + 0xd8))();
      FUN_181250aa0(&local_228,uVar12,param_1 + 0x1e0,(float)(int)fVar15,
                    (float)(int)(fVar19 + fVar14),(float)(int)fVar22,9,0);
      local_148 = _DAT_1824c4780;
      uStack_140 = _UNK_1824c4788;
      local_108 = _DAT_1824c4780;
      uStack_100 = _UNK_1824c4788;
      local_138 = (ulonglong)(uint)DAT_1824c3ea4;
      local_f8 = local_138;
      FUN_18124efb0(&local_228,param_2,&local_108);
      FUN_1804aeb50(&local_228);
                    /* WARNING: Subroutine does not return */
      free(local_228);
    }
  }
  if (local_248 != (undefined8 *)0x0) {
    LOCK();
    piVar13 = (int *)(local_248 + 1);
    iVar10 = *piVar13;
    *piVar13 = *piVar13 + -1;
    UNLOCK();
    if (iVar10 == 1) {
      (**(code **)*local_248)(local_248,1);
    }
  }
  return;
}



############ FUN_ 181513e90 size=105 ############

bool FUN_181513e90(undefined8 param_1,undefined8 *param_2)

{
  int *_Memory;
  int iVar1;
  int iVar2;
  longlong local_res10 [3];
  
  (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,local_res10,param_2 + 1);
  iVar2 = FUN_18048cbc0(local_res10[0],"CloudyPopupMenu");
  _Memory = (int *)(local_res10[0] + -0x10);
  if ((*(uint *)(local_res10[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar2 == 0;
}



############ FUN_ 1815af780 size=143 ############

longlong * FUN_1815af780(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong *plVar5;
  
  plVar5 = *(longlong **)(param_1 + 0x2b0);
  plVar1 = plVar5 + *(int *)(param_1 + 700);
  while( true ) {
    if (plVar5 == plVar1) {
      return (longlong *)0x0;
    }
    plVar4 = (longlong *)*plVar5;
    if (plVar4[1] == *param_2) {
      return plVar4;
    }
    iVar2 = FUN_18048cbc0(plVar4[1],*param_2);
    if (iVar2 == 0) {
      return plVar4;
    }
    lVar3 = (**(code **)(*plVar4 + 0x28))(plVar4);
    if ((lVar3 != 0) &&
       (plVar4 = (longlong *)FUN_1815af780(lVar3,param_2), plVar4 != (longlong *)0x0)) break;
    plVar5 = plVar5 + 1;
  }
  return plVar4;
}



############ FUN_ 181613a60 size=1289 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181613a60(longlong param_1,undefined8 param_2,longlong *param_3)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined8 *puVar6;
  longlong lVar7;
  longlong *plVar8;
  uint *puVar9;
  uint *puVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  float fVar15;
  undefined1 auStack_168 [32];
  longlong local_148;
  longlong *local_140;
  undefined8 *local_138;
  undefined8 *puStack_130;
  undefined8 *local_128;
  longlong *local_120;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  longlong *local_100;
  undefined8 local_f8;
  longlong *local_f0;
  undefined1 local_e8 [8];
  longlong local_e0;
  undefined **local_d8;
  undefined1 local_d0;
  undefined8 local_c8;
  longlong *local_c0;
  longlong *local_b0;
  undefined1 local_a8 [8];
  longlong *local_a0;
  undefined1 local_98 [39];
  undefined1 local_71 [32];
  undefined1 local_51;
  ulonglong local_50 [3];
  
  local_c8 = 0xfffffffffffffffe;
  local_50[0] = DAT_182615970 ^ (ulonglong)auStack_168;
  local_100 = param_3;
  local_f8 = param_2;
  local_c0 = param_3;
  iVar3 = FUN_18048cbc0(*param_3,"listen");
  iVar4 = FUN_18048cbc0(*param_3,"on/off");
  if (iVar3 == 0) {
    puVar6 = (undefined8 *)
             (**(code **)(*(longlong *)(param_1 + 0x360) + 0x10))(param_1 + 0x360,&local_a0);
    cVar2 = (**(code **)(*(longlong *)*puVar6 + 0x28))((longlong *)*puVar6,puVar6 + 1);
    local_d8 = &PTR_vftable_18262b550;
    local_d0 = cVar2 == '\0';
    (**(code **)(*(longlong *)(param_1 + 0x360) + 0x18))(param_1 + 0x360,&local_d8);
    (**(code **)(*local_a0 + 0xb0))(local_a0,local_98);
    FUN_1815fceb0(local_f8);
  }
  else if (iVar4 == 0) {
    fVar15 = *(float *)(*(longlong *)(param_1 + -0x1f8) + 0x188);
    local_120 = (longlong *)CONCAT44(local_120._4_4_,fVar15);
    (**(code **)(*(longlong *)(param_1 + 0x378) + 0x10))((longlong *)(param_1 + 0x378),&local_b0);
    cVar2 = (**(code **)(*local_b0 + 0x90))();
    if (cVar2 != '\0') {
      lVar7 = FUN_181233e10(local_71 + 1,(int)fVar15);
      FUN_180495150(&local_118,lVar7,local_71 + -lVar7);
      plVar8 = (longlong *)FUN_181246550(local_e8,&DAT_1822d0594,&local_118);
      local_140 = plVar8;
      FUN_181232e20(plVar8,&DAT_182218804,&DAT_182218807);
      local_140 = (longlong *)*plVar8;
      puVar10 = (uint *)((longlong)local_140 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        *puVar10 = *puVar10 + 1;
        UNLOCK();
      }
      puVar9 = (uint *)(*plVar8 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      plVar8 = (longlong *)FUN_18119aa60(*(undefined8 *)(param_1 + 0x350),local_140);
      fVar15 = (float)(**(code **)(*plVar8 + 8))(plVar8);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_118 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      plVar8 = (longlong *)(**(code **)(*local_b0 + 0x38))(local_b0,local_a8);
      local_138 = (undefined8 *)0x0;
      puStack_130 = (undefined8 *)0x0;
      uVar14 = 0;
      local_128 = (undefined8 *)0x0;
      puVar6 = (undefined8 *)*plVar8;
      puVar12 = puVar6 + (longlong)*(int *)((longlong)plVar8 + 0xc) * 2;
      if (puVar6 == puVar12) {
        puVar11 = (undefined8 *)0x0;
      }
      else {
        local_120 = &local_148;
        do {
          uVar5 = (**(code **)(*(longlong *)*puVar6 + 8))((longlong *)*puVar6,puVar6 + 1);
          lVar7 = FUN_181233e10(local_50,uVar5);
          FUN_180495150(&local_108,lVar7,&local_51 + -lVar7);
          FUN_18049c4e0(&local_110,&DAT_1822d47a4);
          plVar8 = (longlong *)FUN_181232d30(&local_110,&local_108);
          local_148 = *plVar8;
          if ((*(uint *)(local_148 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_148 + -0x10) = *(int *)(local_148 + -0x10) + 1;
            UNLOCK();
          }
          puVar10 = (uint *)(local_110 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          FUN_181232e20(&local_148,&DAT_182218eac,&DAT_182218eaf);
          local_e0 = local_148;
          puVar10 = (uint *)(local_148 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            *puVar10 = *puVar10 + 1;
            UNLOCK();
          }
          puVar9 = (uint *)(local_148 + -0x10);
          if ((*puVar9 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar9;
            *puVar9 = *puVar9 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar9);
            }
          }
          plVar8 = (longlong *)FUN_18119aa60(*(undefined8 *)(param_1 + 0x350),local_148);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          puVar10 = (uint *)(local_108 + -0x10);
          if ((*puVar10 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar10;
            *puVar10 = *puVar10 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar10);
            }
          }
          local_f0 = plVar8;
          if (local_128 == puStack_130) {
            FUN_1804803a0(&local_138,puStack_130,&local_f0);
          }
          else {
            *puStack_130 = plVar8;
            puStack_130 = puStack_130 + 1;
          }
          puVar11 = puStack_130;
          FUN_1811c2330(plVar8);
          (**(code **)(*plVar8 + 0x10))(plVar8,(float)(fVar15 == 0.0));
          FUN_1812c3d40(plVar8,(float)(fVar15 == 0.0));
          puVar6 = puVar6 + 2;
        } while (puVar6 != puVar12);
      }
      puVar6 = local_138;
      uVar13 = (ulonglong)((longlong)puVar11 + (7 - (longlong)local_138)) >> 3;
      if (puVar11 < local_138) {
        uVar13 = uVar14;
      }
      puVar12 = local_138;
      if (uVar13 != 0) {
        do {
          FUN_1811bf8a0(*puVar12);
          puVar12 = puVar12 + 1;
          uVar14 = uVar14 + 1;
        } while (uVar14 != uVar13);
      }
      param_3 = local_100;
      if (puVar6 != (undefined8 *)0x0) {
        puVar12 = puVar6;
        if ((0xfff < (ulonglong)(((longlong)local_128 - (longlong)puVar6 >> 3) * 8)) &&
           (puVar12 = (undefined8 *)puVar6[-1],
           0x1f < (ulonglong)((longlong)puVar6 + (-8 - (longlong)puVar12)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
    FUN_1815fceb0(local_f8);
    (**(code **)(*local_b0 + 0xb0))(local_b0,local_a8);
  }
  puVar10 = (uint *)(*param_3 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
}



############ FUN_ 18161b910 size=203 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18161b910(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  uint *_Memory;
  float fVar4;
  undefined1 auStack_68 [32];
  longlong local_48 [2];
  undefined8 *local_38;
  ulonglong local_30;
  
  local_48[1] = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_38 = param_3;
  plVar3 = (longlong *)(**(code **)(*(longlong *)(param_1 + 8) + 0x10))(param_1 + 8,local_48);
  if (*param_2 == *plVar3) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18048cbc0(*param_2,*plVar3);
  }
  _Memory = (uint *)(local_48[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((iVar2 == 0) &&
     (fVar4 = (float)(**(code **)(*(longlong *)(param_1 + 8) + 0x30))(param_1 + 8,param_3),
     fVar4 != *(float *)(param_1 + 0x40))) {
    *(float *)(param_1 + 0x40) = fVar4;
    *(undefined1 *)(param_1 + 0x61) = 1;
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 181a06a50 size=268 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181a06a50(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  uint uVar1;
  undefined **ppuVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  undefined4 uVar5;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined8 *local_28;
  ulonglong local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = param_3;
  plVar4 = (longlong *)
           (**(code **)(**(longlong **)(param_1 + 0x108) + 0x10))
                     (*(longlong **)(param_1 + 0x108),local_38);
  if (*param_2 == *plVar4) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_18048cbc0(*param_2,*plVar4);
  }
  _Memory = (uint *)(local_38[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (iVar3 == 0) {
    ppuVar2 = (undefined **)**(longlong **)(param_1 + 0x108);
    if (ppuVar2 == Soothe2GainRangeScalingOption::vftable) {
      iVar3 = (**(code **)(*(longlong *)*param_3 + 8))((longlong *)*param_3,param_3 + 1);
      uVar5 = DAT_1824c3ea4;
      if (((iVar3 != 2) && (uVar5 = DAT_1824c41e0, iVar3 != 1)) &&
         (uVar5 = DAT_1824c3ea4, iVar3 == 0)) {
        uVar5 = DAT_1824c4388;
      }
    }
    else {
      uVar5 = (*(code *)ppuVar2[6])(*(longlong **)(param_1 + 0x108),param_3);
    }
    *(undefined4 *)(param_1 + 0x9c) = uVar5;
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 18051f710 size=239 ############

bool FUN_18051f710(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  char cVar3;
  int iVar4;
  longlong lVar5;
  undefined8 *local_18;
  longlong *local_10;
  
  puVar1 = *(undefined8 **)(*param_1 + 8);
  do {
    if (puVar1 == (undefined8 *)0x0) {
      return false;
    }
    local_10 = param_1;
    local_18 = puVar1;
    for (puVar2 = (undefined8 *)puVar1[2]; puVar2 != (undefined8 *)0x0;
        puVar2 = (undefined8 *)*puVar2) {
      iVar4 = FUN_18048cbc0(puVar2[1],&DAT_18249ef04);
      if (iVar4 == 0) {
        iVar4 = FUN_18048cbc0(puVar2[2],*param_2);
        if ((iVar4 == 0) && (iVar4 = FUN_18049bb30(puVar1[3],&DAT_18249ef44), iVar4 != 0)) {
          lVar5 = FUN_1804eff90(*param_3,&local_18,1,param_3[1]);
          param_3[2] = lVar5;
          return lVar5 != 0;
        }
        break;
      }
    }
    cVar3 = FUN_18051f710(&local_18,param_2,param_3);
    if (cVar3 != '\0') {
      return true;
    }
    puVar1 = (undefined8 *)*puVar1;
  } while( true );
}



############ FUN_ 180569310 size=203 ############

void FUN_180569310(longlong param_1)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  char cVar5;
  longlong lVar6;
  int iVar7;
  
  plVar1 = (longlong *)(param_1 + 0x140);
  iVar4 = *(int *)(param_1 + 0x880);
  lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
  iVar7 = (int)((float)iVar4 * *(float *)(lVar6 + 0x88));
  iVar4 = *(int *)(param_1 + 0x884);
  lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar2 = *(float *)(lVar6 + 0x88);
  cVar5 = FUN_180528b30(param_1 + 0x540);
  if (cVar5 != '\0') {
    fVar3 = *(float *)(param_1 + 0x88c);
    lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
    iVar7 = (int)(fVar3 * *(float *)(lVar6 + 0x88) + (float)iVar7);
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),iVar7,
                (int)((float)iVar4 * fVar2));
  return;
}



############ FUN_ 180565ce0 size=393 ############

undefined4 * FUN_180565ce0(longlong param_1,undefined4 *param_2)

{
  int iVar1;
  int iVar2;
  double dVar3;
  char cVar4;
  longlong lVar5;
  undefined1 *puVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined4 local_res8;
  undefined4 local_res10;
  undefined4 local_res18;
  undefined4 local_res20;
  undefined1 local_68 [88];
  
  cVar4 = FUN_180528b30(param_1 + 0x540);
  if (cVar4 == '\0') {
    fVar7 = (float)*(int *)(param_1 + 0x28);
  }
  else {
    fVar7 = *(float *)(param_1 + 0x88c);
    lVar5 = (**(code **)(*(longlong *)(param_1 + 0x140) + 8))();
    fVar7 = (float)*(int *)(param_1 + 0x28) - fVar7 * *(float *)(lVar5 + 0x88);
    if (fVar7 <= 0.0) {
      fVar7 = 0.0;
    }
  }
  iVar1 = *(int *)(param_1 + 0x2c);
  if (*(longlong *)(*(longlong *)(param_1 + 0x498) + 0x38) == 0) {
    puVar6 = local_68;
  }
  else {
    puVar6 = (undefined1 *)FUN_1804b1290(*(longlong *)(param_1 + 0x498) + 0x20,local_68);
  }
  dVar3 = DAT_1824c4520;
  iVar2 = *(int *)(puVar6 + 0xc);
  fVar8 = (fVar7 + 0.0) - (float)((double)fVar7 * DAT_1824c40b8);
  fVar9 = ((float)iVar1 + 0.0) - (float)iVar2;
  if (fVar8 <= 0.0) {
    fVar8 = 0.0;
  }
  if (fVar9 <= 0.0) {
    fVar9 = 0.0;
  }
  local_res8 = SUB84((double)(float)((double)fVar7 * DAT_1824c40b8) + DAT_1824c4520,0);
  *param_2 = local_res8;
  local_res10 = SUB84((double)iVar2 + dVar3,0);
  param_2[1] = local_res10;
  local_res18 = SUB84((double)fVar8 + dVar3,0);
  param_2[2] = local_res18;
  local_res20 = SUB84((double)fVar9 + dVar3,0);
  param_2[3] = local_res20;
  return param_2;
}



############ FUN_ 180566090 size=156 ############

undefined8 * FUN_180566090(longlong param_1,undefined8 *param_2)

{
  float fVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  longlong lVar5;
  float fVar6;
  
  cVar4 = FUN_180528b30(param_1 + 0x540);
  if (cVar4 == '\0') {
    iVar2 = *(int *)(param_1 + 0x28);
    iVar3 = *(int *)(param_1 + 0x2c);
    *param_2 = 0;
    *(float *)(param_2 + 1) = (float)iVar2;
  }
  else {
    fVar6 = *(float *)(param_1 + 0x88c);
    lVar5 = (**(code **)(*(longlong *)(param_1 + 0x140) + 8))();
    iVar2 = *(int *)(param_1 + 0x28);
    iVar3 = *(int *)(param_1 + 0x2c);
    fVar1 = *(float *)(lVar5 + 0x88);
    *param_2 = 0;
    fVar6 = (float)iVar2 - fVar6 * fVar1;
    if (fVar6 <= 0.0) {
      fVar6 = 0.0;
    }
    *(float *)(param_2 + 1) = fVar6;
  }
  *(float *)((longlong)param_2 + 0xc) = (float)iVar3;
  return param_2;
}



############ FUN_ 1814a1500 size=318 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814a1500(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  char cVar1;
  byte bVar2;
  undefined4 uVar3;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined8 *local_30;
  ulonglong local_28;
  
  local_38 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_30 = param_3;
  cVar1 = FUN_18055e010(param_1 + 0x68);
  if (cVar1 != '\0') {
    cVar1 = FUN_180528b30(param_1 + 0x68);
    uVar3 = DAT_1824c3ea4;
    if (cVar1 != '\0') {
      uVar3 = DAT_1824c3d8c;
    }
    FUN_18133e970(*(undefined8 *)(param_1 + 0x28),cVar1 == '\0');
    bVar2 = (cVar1 != '\0') << 3;
    *(byte *)(*(longlong *)(param_1 + 8) + 0xa8) =
         *(byte *)(*(longlong *)(param_1 + 8) + 0xa8) & 0xe7 | bVar2;
    *(byte *)(*(longlong *)(param_1 + 0x10) + 0xa8) =
         *(byte *)(*(longlong *)(param_1 + 0x10) + 0xa8) & 0xe7 | bVar2;
    *(byte *)(*(longlong *)(param_1 + 0x18) + 0xa8) =
         *(byte *)(*(longlong *)(param_1 + 0x18) + 0xa8) & 0xe7 | bVar2;
    *(byte *)(*(longlong *)(param_1 + 0x20) + 0xa8) =
         *(byte *)(*(longlong *)(param_1 + 0x20) + 0xa8) & 0xe7 | bVar2;
    FUN_181342bf0(*(undefined8 *)(param_1 + 0x28),uVar3);
    FUN_181342bf0(*(undefined8 *)(param_1 + 8),uVar3);
    FUN_181342bf0(*(undefined8 *)(param_1 + 0x10),uVar3);
    FUN_181342bf0(*(undefined8 *)(param_1 + 0x18),uVar3);
    FUN_181342bf0(*(undefined8 *)(param_1 + 0x20),uVar3);
  }
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 18052f920 size=281 ############

void FUN_18052f920(undefined8 *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  
  FUN_1805305f0();
  *param_1 = Soothe2ModuleBase<float,2>::vftable;
  puVar1 = param_1 + 0x7b;
  param_1[0x7a] = Soothe2ModuleBase<float,2>::vftable;
  FUN_180533130();
  *(undefined4 *)(param_1 + 0x48097) = 0;
  LOCK();
  *(undefined4 *)(param_1 + 0x48097) = 0;
  UNLOCK();
  *(undefined2 *)((longlong)param_1 + 0x2404bc) = 0;
  param_1[0x48098] = 0;
  param_1[0x48099] = 0;
  *(undefined4 *)(param_1 + 0x4809a) = 7;
  *(undefined2 *)((longlong)param_1 + 0x1b4) = 1;
  *(undefined1 *)((longlong)param_1 + 0x3cc) = 1;
  *(undefined4 *)(param_1 + 0x4808c) = 1;
  *(undefined4 *)((longlong)param_1 + 0x240467) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x24046b) = 0x1010101;
  FUN_18052fc30(puVar1);
  *(undefined4 *)((longlong)param_1 + 0x24045c) = *(undefined4 *)(param_1 + 0x4809a);
  *(undefined4 *)((longlong)param_1 + 0x240467) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x24046b) = 0x1010101;
  FUN_18052fc30(puVar1);
  FUN_180532fd0(puVar1,param_1 + 0x7a);
  iVar2 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(DAT_1824c3d8c);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(DAT_1824c4050,param_1 + 0x48093,8);
}



############ FUN_ 180533130 size=263 ############

undefined8 * FUN_180533130(undefined8 *param_1)

{
  param_1[1] = 0;
  *(undefined8 *)((longlong)param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 2) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x2c) = 0x3f800000;
  *(undefined4 *)(param_1 + 6) = 2;
  *(undefined4 *)((longlong)param_1 + 0x44) = 1;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined4 *)(param_1 + 0xb) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x1c) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x14) = 0x3f800000;
  *(undefined4 *)(param_1 + 4) = 0x3f800000;
  *(undefined4 *)(param_1 + 3) = 0x3f800000;
  *param_1 = ParametricEqualizer<float,8,2>::vftable;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  *(undefined2 *)((longlong)param_1 + 0x24008c) = 0;
  *(undefined1 *)((longlong)param_1 + 0x24008e) = 0;
  *(undefined1 *)((longlong)param_1 + 0x240097) = 0;
  *(undefined4 *)(param_1 + 0x48010) = 1;
  *(undefined4 *)((longlong)param_1 + 0x240084) = 1;
  *(undefined4 *)(param_1 + 0x48011) = 2;
  param_1[0x48013] = 0;
  param_1[0x48014] = 0;
  param_1[0x48015] = 0;
  param_1[0x48016] = 0;
  param_1[0x48017] = 0;
  FUN_180533980(param_1);
  FUN_180533b80(param_1);
  *(undefined4 *)(param_1 + 0x48011) = 2;
  *(undefined4 *)((longlong)param_1 + 0x24008f) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x240093) = 0x1010101;
  FUN_18052fc30(param_1);
  return param_1;
}



############ FUN_ 18135f920 size=451 ############

void FUN_18135f920(longlong param_1,float param_2)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  int *piVar4;
  longlong lVar5;
  undefined4 uVar6;
  longlong lVar7;
  uint uVar8;
  float fVar9;
  undefined4 uVar10;
  
  uVar8 = (uint)*(float *)(*(longlong *)(param_1 + 0x8e0) + 0x188);
  if (-1 < (int)uVar8) {
    lVar2 = *(longlong *)(param_1 + 0x168);
    lVar7 = 0;
    lVar5 = lVar7;
    if (uVar8 < *(uint *)(lVar2 + 0x444)) {
      lVar5 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar8 * 8);
    }
    iVar1 = *(int *)(lVar5 + 0x800);
    for (piVar4 = DAT_182673f90; piVar3 = DAT_182673f50, uVar10 = DAT_1824c3e00,
        piVar4 != DAT_182673f98; piVar4 = piVar4 + 1) {
      if (*piVar4 == iVar1) goto LAB_18135f9d2;
    }
    for (; piVar3 != DAT_182673f58; piVar3 = piVar3 + 1) {
      if (*piVar3 == iVar1) goto LAB_18135f9de;
    }
    if (iVar1 == 9) {
LAB_18135f9d2:
      uVar6 = 6;
    }
    else if (iVar1 == 10) {
LAB_18135f9de:
      uVar6 = 2;
    }
    else {
      uVar6 = 0xc;
      lVar5 = lVar7;
      if (uVar8 < *(uint *)(lVar2 + 0x444)) {
        lVar5 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar8 * 8);
      }
      uVar10 = *(undefined4 *)(lVar5 + 0x80c);
    }
    fVar9 = DAT_1824c442c;
    if ((DAT_1824c442c <= param_2) &&
       (fVar9 = (float)(*(double *)(param_1 + 0x30) * DAT_1824c4050), param_2 <= fVar9)) {
      fVar9 = param_2;
    }
    lVar2 = *(longlong *)(param_1 + 0x6f8);
    lVar5 = lVar7;
    if (*(int *)(lVar2 + 0x6c) != 0) {
      lVar5 = **(longlong **)(lVar2 + 0x60);
    }
    *(float *)(lVar5 + 0x804) = fVar9;
    *(undefined1 *)(lVar2 + 0x24008f) = 1;
    FUN_18052fc30();
    lVar2 = *(longlong *)(param_1 + 0x6f8);
    lVar5 = lVar7;
    if (*(int *)(lVar2 + 0x6c) != 0) {
      lVar5 = **(longlong **)(lVar2 + 0x60);
    }
    *(undefined4 *)(lVar5 + 0x80c) = uVar10;
    *(undefined1 *)(lVar2 + 0x24008f) = 1;
    FUN_18052fc30();
    lVar2 = *(longlong *)(param_1 + 0x6f8);
    if (*(int *)(lVar2 + 0x6c) != 0) {
      lVar7 = **(longlong **)(lVar2 + 0x60);
    }
    *(undefined4 *)(lVar7 + 0x800) = uVar6;
    *(undefined1 *)(lVar2 + 0x24008f) = 1;
    FUN_18052fc30();
    if (*(char *)(*(longlong *)(param_1 + 0x6f8) + 0x24008c) != '\0') {
      *(undefined1 *)(*(longlong *)(param_1 + 0x6f8) + 0x24008c) = 0;
      FUN_18052fbd0();
      return;
    }
  }
  return;
}



############ FUN_ 181414290 size=251 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 * FUN_181414290(undefined8 *param_1)

{
  bool bVar1;
  
  param_1[1] = 0xffffffffffffffff;
  *param_1 = DummyEqualizerWrapperBase::vftable;
  *(undefined4 *)(param_1 + 2) = 0;
  FUN_180533130(param_1 + 3);
  *(undefined4 *)(param_1 + 0x4801b) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2400dc) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2400e4) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2400ec) = 0;
  param_1[0x4801e] = 0;
  param_1[0x4801f] = 0;
  param_1[0x48020] = 0;
  *(undefined1 *)(param_1 + 0x48021) = 0;
  param_1[0x48022] = 0;
  param_1[0x48023] = 0;
  *(undefined4 *)(param_1 + 0x48014) = 1;
  *(undefined4 *)((longlong)param_1 + 0x2400a7) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x2400ab) = 0x1010101;
  FUN_18052fc30(param_1 + 3);
  *(undefined4 *)(param_1 + 0x48013) = 4;
  *(undefined4 *)((longlong)param_1 + 0x2400a7) = 0x1010101;
  *(undefined4 *)((longlong)param_1 + 0x2400ab) = 0x1010101;
  bVar1 = *(float *)((longlong)param_1 + 0x3c) != _DAT_1824c45ec;
  *(undefined4 *)((longlong)param_1 + 0x3c) = 0x472c4400;
  if (bVar1) {
    (**(code **)(param_1[3] + 0x20))(param_1 + 3);
  }
  return param_1;
}



############ FUN_ 1805377d0 size=108 ############

void FUN_1805377d0(longlong param_1,float *param_2)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined4 local_res8;
  
  local_res8 = SUB84((double)*param_2 + DAT_1824c4520,0);
  uVar1 = *(undefined4 *)(DAT_182673f90 + (longlong)local_res8 * 4);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
  if (*(int *)(lVar2 + 0x444) != 0) {
    *(undefined4 *)(**(longlong **)(lVar2 + 0x438) + 0x800) = uVar1;
    *(undefined1 *)(lVar2 + 0x240467) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000800 = uVar1;
  *(undefined1 *)(lVar2 + 0x240467) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 180537840 size=114 ############

void FUN_180537840(longlong param_1,float *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  
  uVar1 = *(uint *)(param_1 + 8);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168);
  lVar3 = lVar2 + 0x3d8;
  if (uVar1 < *(uint *)(lVar2 + 0x444)) {
    lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar4 = 0;
  }
  *(bool *)(lVar4 + 0x810) = *param_2 <= DAT_1824c3ea4 && DAT_1824c3ea4 != *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x240467) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101;
    FUN_18052fc30(lVar3);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1;
  FUN_18052fc30(lVar3);
  return;
}



############ FUN_ 180537590 size=69 ############

void .?AVSoothe2ModuleDecryptor@@::vtbl___AVSoothe2ModuleDecryptor__
               (longlong param_1,float *param_2)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
  if (*(int *)(lVar1 + 0x444) == 0) {
    lVar2 = 0;
  }
  else {
    lVar2 = **(longlong **)(lVar1 + 0x438);
  }
  *(bool *)(lVar2 + 0x810) = *param_2 <= DAT_1824c3ea4 && DAT_1824c3ea4 != *param_2;
  *(undefined1 *)(lVar1 + 0x240467) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 180537b60 size=78 ############

void FUN_180537b60(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
  if (5 < *(uint *)(lVar1 + 0x444)) {
    *(undefined4 *)(*(longlong *)(*(longlong *)(lVar1 + 0x438) + 0x28) + 0x804) = *param_2;
    *(undefined1 *)(lVar1 + 0x24046c) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000804 = *param_2;
  *(undefined1 *)(lVar1 + 0x24046c) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 180537a30 size=135 ############

void FUN_180537a30(longlong param_1,float *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  undefined4 local_res8;
  
  uVar1 = *(uint *)(param_1 + 8);
  local_res8 = SUB84((double)*param_2 + DAT_1824c4520,0);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168);
  lVar3 = lVar2 + 0x3d8;
  if (uVar1 < *(uint *)(lVar2 + 0x444)) {
    lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar4 = 0;
  }
  *(undefined4 *)(lVar4 + 0x800) = *(undefined4 *)(DAT_182673f68 + (longlong)local_res8 * 4);
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x240467) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101;
    FUN_18052fc30(lVar3);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1;
  FUN_18052fc30(lVar3);
  return;
}



############ FUN_ 180537ac0 size=70 ############

void FUN_180537ac0(longlong param_1,float *param_2)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
  if (*(uint *)(lVar1 + 0x444) < 6) {
    lVar2 = 0;
  }
  else {
    lVar2 = *(longlong *)(*(longlong *)(lVar1 + 0x438) + 0x28);
  }
  *(bool *)(lVar2 + 0x810) = *param_2 <= DAT_1824c3ea4 && DAT_1824c3ea4 != *param_2;
  *(undefined1 *)(lVar1 + 0x24046c) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 180537930 size=104 ############

void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__
               (longlong param_1,undefined4 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  
  uVar1 = *(uint *)(param_1 + 8);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168);
  lVar3 = lVar2 + 0x3d8;
  if (uVar1 < *(uint *)(lVar2 + 0x444)) {
    lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar4 = 0;
  }
  *(undefined4 *)(lVar4 + 0x808) = *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x240467) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101;
    FUN_18052fc30(lVar3);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1;
  FUN_18052fc30(lVar3);
  return;
}



############ FUN_ 1805378c0 size=104 ############

void FUN_1805378c0(longlong param_1,undefined4 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  
  uVar1 = *(uint *)(param_1 + 8);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x10) + 0x168);
  lVar3 = lVar2 + 0x3d8;
  if (uVar1 < *(uint *)(lVar2 + 0x444)) {
    lVar4 = *(longlong *)(*(longlong *)(lVar2 + 0x438) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar4 = 0;
  }
  *(undefined4 *)(lVar4 + 0x804) = *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x240467) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x24046b) = 0x1010101;
    FUN_18052fc30(lVar3);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x24008f + lVar3) = 1;
  FUN_18052fc30(lVar3);
  return;
}



############ FUN_ 180537630 size=73 ############

void FUN_180537630(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = **(longlong **)(param_1 + 8);
  if (*(int *)(lVar1 + 0x444) != 0) {
    *(undefined4 *)(**(longlong **)(lVar1 + 0x438) + 0x804) = *param_2;
    *(undefined1 *)(lVar1 + 0x240467) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000804 = *param_2;
  *(undefined1 *)(lVar1 + 0x240467) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056eda0 size=82 ############

void .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
     vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
               (longlong param_1,float *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (*(int *)(lVar1 + 0x84) == 0) {
    uRam0000000000000810 = *param_2 == 0.0;
    *(undefined1 *)(lVar1 + 0x2400a7) = 1;
    FUN_18052fc30();
    return;
  }
  *(bool *)(**(longlong **)(lVar1 + 0x78) + 0x810) = *param_2 == 0.0;
  *(undefined1 *)(lVar1 + 0x2400a7) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056ef10 size=111 ############

void .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(longlong param_1,float *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar2 = *(longlong *)(param_1 + 0x10);
  uVar1 = *(uint *)(param_1 + 8);
  if (uVar1 < *(uint *)(lVar2 + 0x84)) {
    lVar3 = *(longlong *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar3 = 0;
  }
  *(bool *)(lVar3 + 0x810) = *param_2 == 0.0;
  if (-1 < (int)uVar1) {
    *(undefined1 *)((longlong)(int)uVar1 + 0x2400a7 + lVar2) = 1;
    FUN_18052fc30(lVar2 + 0x18);
    return;
  }
  *(undefined4 *)(lVar2 + 0x2400a7) = 0x1010101;
  *(undefined4 *)(lVar2 + 0x2400ab) = 0x1010101;
  FUN_18052fc30(lVar2 + 0x18);
  return;
}



############ FUN_ 18056efe0 size=95 ############

void FUN_18056efe0(longlong param_1,undefined4 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar2 = *(longlong *)(param_1 + 0x10);
  uVar1 = *(uint *)(param_1 + 8);
  if (uVar1 < *(uint *)(lVar2 + 0x84)) {
    lVar3 = *(longlong *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar3 = 0;
  }
  *(undefined4 *)(lVar3 + 0x808) = *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x2400a7) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x2400ab) = 0x1010101;
    FUN_18052fc30(lVar2 + 0x18);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x2400a7 + lVar2) = 1;
  FUN_18052fc30(lVar2 + 0x18);
  return;
}



############ FUN_ 18056f040 size=95 ############

void FUN_18056f040(longlong param_1,undefined4 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar2 = *(longlong *)(param_1 + 0x10);
  uVar1 = *(uint *)(param_1 + 8);
  if (uVar1 < *(uint *)(lVar2 + 0x84)) {
    lVar3 = *(longlong *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar3 = 0;
  }
  *(undefined4 *)(lVar3 + 0x80c) = *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x2400a7) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x2400ab) = 0x1010101;
    FUN_18052fc30(lVar2 + 0x18);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x2400a7 + lVar2) = 1;
  FUN_18052fc30(lVar2 + 0x18);
  return;
}



############ FUN_ 18056f1e0 size=68 ############

void .?AV?$CloudyOpenGLRenderer@USoothe2VertexData@@@@::
     vtbl___AV__CloudyOpenGLRenderer_USoothe2VertexData____(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (5 < *(uint *)(lVar1 + 0x84)) {
    *(undefined4 *)(*(longlong *)(*(longlong *)(lVar1 + 0x78) + 0x28) + 0x804) = *param_2;
    *(undefined1 *)(lVar1 + 0x2400ac) = 1;
    FUN_18052fc30();
    return;
  }
  uRam0000000000000804 = *param_2;
  *(undefined1 *)(lVar1 + 0x2400ac) = 1;
  FUN_18052fc30();
  return;
}



############ FUN_ 18056f0c0 size=107 ############

void FUN_18056f0c0(longlong param_1,float *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  
  uVar1 = *(uint *)(param_1 + 8);
  lVar2 = *(longlong *)(param_1 + 0x10);
  if (uVar1 < *(uint *)(lVar2 + 0x84)) {
    lVar3 = *(longlong *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar3 = 0;
  }
  *(undefined4 *)(lVar3 + 0x800) = *(undefined4 *)(DAT_182673f68 + (longlong)(int)*param_2 * 4);
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x2400a7) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x2400ab) = 0x1010101;
    FUN_18052fc30(lVar2 + 0x18);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x2400a7 + lVar2) = 1;
  FUN_18052fc30(lVar2 + 0x18);
  return;
}



############ FUN_ 18056ef80 size=95 ############

void FUN_18056ef80(longlong param_1,undefined4 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  
  lVar2 = *(longlong *)(param_1 + 0x10);
  uVar1 = *(uint *)(param_1 + 8);
  if (uVar1 < *(uint *)(lVar2 + 0x84)) {
    lVar3 = *(longlong *)(*(longlong *)(lVar2 + 0x78) + (longlong)(int)uVar1 * 8);
  }
  else {
    lVar3 = 0;
  }
  *(undefined4 *)(lVar3 + 0x804) = *param_2;
  if ((int)uVar1 < 0) {
    *(undefined4 *)(lVar2 + 0x2400a7) = 0x1010101;
    *(undefined4 *)(lVar2 + 0x2400ab) = 0x1010101;
    FUN_18052fc30(lVar2 + 0x18);
    return;
  }
  *(undefined1 *)((longlong)(int)uVar1 + 0x2400a7 + lVar2) = 1;
  FUN_18052fc30(lVar2 + 0x18);
  return;
}



############ FUN_ 180487220 size=208 ############

ulonglong FUN_180487220(float *param_1,float param_2)

{
  float fVar1;
  longlong *plVar2;
  float fVar3;
  ulonglong uVar4;
  float local_res8 [4];
  float local_res18 [2];
  float local_res20 [2];
  
  if (*(longlong *)(param_1 + 0x34) != 0) {
    local_res18[0] = param_1[1];
    local_res20[0] = *param_1;
    plVar2 = *(longlong **)(param_1 + 0x34);
    local_res8[0] = param_2;
    if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    uVar4 = (**(code **)(*plVar2 + 0x10))
                      (plVar2,local_res20,local_res18,local_res8,0xfffffffffffffffe);
    return uVar4;
  }
  fVar1 = param_1[2];
  if (0.0 < fVar1) {
    fVar3 = floorf((param_2 - *param_1) / fVar1 + DAT_1824c3d8c);
    param_2 = fVar3 * fVar1 + *param_1;
  }
  fVar1 = *param_1;
  if ((fVar1 < param_2) && (fVar3 = param_1[1], fVar1 < fVar3)) {
    if (param_2 <= fVar3) {
      fVar3 = param_2;
    }
    return (ulonglong)(uint)fVar3;
  }
  return (ulonglong)(uint)fVar1;
}



############ FUN_ 18119aa60 size=974 ############

/* WARNING: Instruction at (ram,0x00018119aee3) overlaps instruction at (ram,0x00018119aee0)
    */
/* WARNING: Removing unreachable block (ram,0x00018119b76d) */
/* WARNING: Removing unreachable block (ram,0x00018119b338) */
/* WARNING: Removing unreachable block (ram,0x00018119aee0) */
/* WARNING: Removing unreachable block (ram,0x00018119b558) */
/* WARNING: Removing unreachable block (ram,0x00018119ae25) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_18119aa60(longlong param_1,longlong param_2,undefined8 param_3,longlong param_4)

{
  uint *_Memory;
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined1 *puVar5;
  ulonglong uVar6;
  undefined8 uVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  undefined8 *puVar12;
  ulonglong uVar13;
  int iVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  undefined8 *puVar17;
  undefined1 *puVar18;
  undefined1 *puVar19;
  longlong lVar20;
  longlong lVar21;
  longlong in_R10;
  longlong lVar22;
  longlong in_R11;
  longlong lVar23;
  undefined8 unaff_R13;
  int *piVar24;
  uint uVar25;
  bool bVar26;
  char cVar27;
  char cVar28;
  int unaff_retaddr;
  undefined1 local_68 [32];
  undefined *local_48;
  code *pcStack_40;
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  uVar13 = (ulonglong)((uint)&stack0x00000000 & 0x76ff);
  uVar9 = (uint)&stack0x00000000 & 0x1bf;
  iVar14 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  uVar25 = 0xa209 >> (-(char)(((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e) & 0x1fU
                     ) ^ 0xac39;
  uVar8 = (ulonglong)uVar25;
  local_48 = &DAT_18120779c;
  uVar9 = (DAT_18120769c + 0x8d13783) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076a0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076a4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076a8) * 0x401;
  do {
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = (DAT_1812076ac + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076b0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076b4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076b8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076bc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076c0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076c4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076c8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076cc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076d0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076d4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076d8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076dc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076e0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076e4) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076e8) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076ec) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076f0) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076f4) * 0x401;
  do {
    FUN_18119c201();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = (DAT_1812076f8 + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_1812076fc) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_181207700) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + DAT_181207704) * 0x401;
  do {
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = (_UNK_181207708 + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120770c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207710) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207714) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207718) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120771c) * 0x401;
  do {
    func_0x00018119a3a4();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar9 = (_UNK_181207720 + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207724) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207728) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120772c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207730) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207734) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207738) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120773c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207740) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207744) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207748) * 0x401;
  do {
    uVar7 = rdtsc();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = ((uint)uVar7 ^ (uint)((ulonglong)uVar7 >> 0x20)) * -0x166aa42f;
  if ((uVar10 >> 0x18 ^ uVar10) * -0x460112ab < 0xff18d) {
    do {
      pcStack_40 = FUN_1813f2240;
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar6 = FUN_1813f2240(0,0x57ef);
    if (1 < uVar6) {
      FUN_18113eab0();
    }
  }
  uVar9 = (_UNK_18120774c + (uVar9 ^ uVar9 >> 6)) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207750) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207754) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207758) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120775c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207760) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207764) * 0x401;
  uVar10 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207768) * 0x401;
  uVar10 = uVar10 ^ uVar10 >> 6;
  uVar9 = uVar10;
  do {
    if (-1 < (int)uVar9) {
      lVar22 = param_4 + in_R10;
      param_4 = param_4 - lVar22;
      in_R10 = -param_4;
      param_4 = lVar22 + param_4;
    }
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = (_UNK_18120776c + uVar10) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207770) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207774) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207778) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120777c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207780) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207784) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207788) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_18120778c) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207790) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207794) * 0x401;
  uVar9 = ((uVar9 >> 6 ^ uVar9) + _UNK_181207798) * 0x401;
  uVar9 = uVar9 >> 6 ^ uVar9;
  uVar10 = (uVar9 << 0x19 | uVar9 >> 7) + 0x5f5657a8;
  uVar9 = uVar10 >> 0x1c;
  uVar9 = uVar9 << 0x1e | (uVar9 | uVar10 * 0x10) + 0xa985db8 >> 2;
  uVar6 = (ulonglong)uVar9;
  uVar9 = uVar9 ^ 0x68d832ce;
  if (uVar9 != uVar9 >> 4) {
    uVar7 = thunk_FUN_1805a9280(0x860,uVar6,uVar13);
    return uVar7;
  }
  puVar5 = local_68;
  do {
    puVar18 = puVar5;
    *(undefined8 *)(puVar18 + -8) = unaff_R13;
    *(ulonglong *)(puVar18 + -0x10) = uVar6;
    *(ulonglong *)(puVar18 + -0x18) = uVar8;
    lVar22 = -(longlong)(int)uVar25;
    uVar8 = *(ulonglong *)(puVar18 + lVar22 + 0xe18);
    uVar6 = *(ulonglong *)(puVar18 + lVar22 + 0xe20);
    unaff_R13 = *(undefined8 *)(puVar18 + lVar22 + 0xe28);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    puVar5 = puVar18 + lVar22 + 0xe30;
  } while (uVar9 != 0);
  uVar7 = *(undefined8 *)(puVar18 + lVar22 + 0xe70);
  uVar1 = *(undefined8 *)(puVar18 + lVar22 + 0xe78);
  uVar2 = *(undefined8 *)(puVar18 + lVar22 + 0xe80);
  uVar3 = *(undefined8 *)(puVar18 + lVar22 + 0xe88);
  uVar4 = *(undefined8 *)(puVar18 + lVar22 + 0xe90);
  *(undefined8 *)(puVar18 + lVar22 + 0xe90) = *(undefined8 *)(puVar18 + lVar22 + 0xea8);
  *(undefined8 *)(puVar18 + lVar22 + 0xe88) = uVar4;
  *(undefined8 *)(puVar18 + lVar22 + 0xe80) = uVar3;
  *(undefined8 *)(puVar18 + lVar22 + 0xe78) = uVar2;
  *(undefined8 *)(puVar18 + lVar22 + 0xe70) = unaff_R13;
  *(undefined8 *)(puVar18 + lVar22 + 0xe68) = uVar1;
  *(undefined8 *)(puVar18 + lVar22 + 0xe60) = uVar7;
  puVar19 = puVar18 + lVar22 + 0xde0;
  *(undefined8 *)(puVar18 + lVar22 + 0xe18) = 0xfffffffffffffffe;
  *(undefined8 *)(puVar18 + lVar22 + 0xea8) = *(undefined8 *)(puVar18 + lVar22 + 0xea0);
  piVar24 = (int *)(puVar18 + lVar22 + 0xe98);
  uVar9 = (uint)piVar24;
  if (((ulonglong)piVar24 & 0x4e) == 0) {
    uVar25 = uVar9 & 0x12ff;
  }
  else {
    uVar25 = uVar9 & 0x75ff;
  }
  uVar10 = (uVar25 * uVar25 + 1) % 7;
  uVar25 = uVar9 & 0x4f;
  uVar9 = (uVar25 + 1) * (uVar25 + 1) * uVar25 * uVar25 & 0x80000003 ^
          ((uVar9 & 0xaff) * (uVar9 & 0xaff) * 0x10 + 4) % 0x13;
  uVar9 = ((int)(-uVar9 | uVar9) >> 0x1f) * -0xb065 ^ 0xba95;
  *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119b5aa;
  FUN_18049c9e0(puVar18 + lVar22 + 0xe10,param_2);
  puVar17 = *(undefined8 **)(param_1 + 0x38);
  puVar12 = (undefined8 *)puVar17[1];
  lVar20 = *(longlong *)(puVar18 + lVar22 + 0xe10);
  puVar16 = puVar17;
  if (*(char *)((longlong)puVar12 + 0x19) == '\0') {
    *(longlong *)(puVar18 + lVar22 + 0xe20) = lVar20;
    puVar15 = puVar17;
    do {
      puVar16 = puVar12;
      uVar7 = puVar16[4];
      *(undefined8 *)(puVar18 + lVar22 + 0xe28) = uVar7;
      *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119b5e1;
      iVar14 = FUN_18048cbc0(uVar7,lVar20);
      if (iVar14 < 0) {
        puVar12 = (undefined8 *)puVar16[2];
        puVar16 = puVar15;
      }
      else {
        puVar12 = (undefined8 *)*puVar16;
      }
      puVar15 = puVar16;
    } while (*(char *)((longlong)puVar12 + 0x19) == '\0');
  }
  *(undefined8 **)(puVar18 + lVar22 + 0xe30) = puVar17;
  if (puVar16 != puVar17) {
    *(undefined8 *)(puVar18 + lVar22 + 0xe38) = puVar16[4];
    *(longlong *)(puVar18 + lVar22 + 0xe40) = lVar20;
    *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119b619;
    iVar14 = FUN_18048cbc0(lVar20);
    if (-1 < iVar14) {
      *(undefined8 **)(puVar18 + lVar22 + 0xe48) = puVar16;
      puVar17 = puVar16;
      goto LAB_18119b62d;
    }
  }
  *(undefined8 **)(puVar18 + lVar22 + 0xe50) = puVar17;
LAB_18119b62d:
  _Memory = (uint *)(lVar20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar25 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar25 == 0) {
                    /* WARNING: Subroutine does not return */
      *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119b64f;
      free(_Memory);
    }
  }
  *(undefined8 *)(puVar18 + lVar22 + 0xeb0) = 0x2621fc0;
  lVar20 = *(longlong *)(puVar18 + lVar22 + 0xeb0);
  *(undefined8 *)(puVar18 + lVar22 + 0xeb0) = 0x4006808;
  *(undefined8 *)(puVar18 + lVar22 + 0xeb8) = 0x97861656;
  *(uint *)(puVar18 + lVar22 + 0xeb0) =
       ~(~*(uint *)(puVar18 + lVar22 + 0xeb0) + 0x9734f806) << 0x17 |
       ~(~*(uint *)(puVar18 + lVar22 + 0xeb0) + 0x9734f806) >> 9;
  *(uint *)(puVar18 + lVar22 + 0xeb8) =
       ~(~*(uint *)(puVar18 + lVar22 + 0xeb8) ^ 0x97861e56) >> 3 |
       ~(~*(uint *)(puVar18 + lVar22 + 0xeb8) ^ 0x97861e56) << 0x1d;
  *(undefined **)(puVar18 + lVar22 + 0xe00) =
       &DAT_182621fc0 + (*(longlong *)(puVar18 + lVar22 + 0xeb0) - lVar20);
  *(longlong *)(puVar18 + lVar22 + 0xeb0) =
       *(longlong *)(puVar18 + lVar22 + 0xe00) + *(longlong *)(puVar18 + lVar22 + 0xeb8);
  lVar21 = *(longlong *)(puVar18 + lVar22 + 0xeb0) - *(longlong *)(puVar18 + lVar22 + 0xeb0);
  lVar20 = *(longlong *)(puVar18 + lVar22 + 0xe00);
  uVar25 = (*(int *)(lVar20 + lVar21) + 0x62b5eb3e) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 4 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 8 + lVar21)) * 0x401;
  do {
    uVar11 = (*piVar24 + 1) * *piVar24 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar25 = (*(int *)(lVar20 + 0xc + lVar21) + (uVar25 ^ uVar25 >> 6)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x10 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x14 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x18 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x1c + lVar21)) * 0x401;
  do {
    uVar11 = (*piVar24 + 1) * *piVar24 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar25 = (*(int *)(lVar20 + 0x20 + lVar21) + (uVar25 ^ uVar25 >> 6)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x24 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x28 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x2c + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x30 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x34 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x38 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x3c + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x40 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x44 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x48 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x4c + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x50 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x54 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x58 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x5c + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x60 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 100 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x68 + lVar21)) * 0x401;
  do {
    uVar7 = rdtsc();
    *(uint *)(puVar18 + lVar22 + 0xea0) = (uint)uVar7 ^ (uint)((ulonglong)uVar7 >> 0x20);
    uVar11 = (*piVar24 + 1) * *piVar24 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = ((uint)(*(int *)(puVar18 + lVar22 + 0xea0) * -0x35947a15) >> 0x18 ^
           *(int *)(puVar18 + lVar22 + 0xea0) * -0x35947a15) * -0x51ca13ad;
  *(uint *)(puVar18 + lVar22 + 0xea0) = uVar11;
  if (uVar11 < 0xb6be0) {
    *(undefined8 *)(puVar18 + lVar22 + 0xe08) = 0;
    do {
      puVar12 = (undefined8 *)(puVar18 + lVar22 + 0xe08);
      *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119ba4f;
      FUN_181199c84(puVar12,puVar18 + lVar22 + 0xe08);
      *puVar12 = FUN_1813f2240;
      uVar11 = (*piVar24 + 1) * *piVar24 & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119ba95;
    uVar8 = (**(code **)(puVar18 + lVar22 + 0xe08))(0,0x8429);
    if (1 < uVar8) {
      *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119baa1;
      FUN_18113eab0();
    }
  }
  uVar25 = (*(int *)(lVar20 + 0x6c + lVar21) + (uVar25 ^ uVar25 >> 6)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x70 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x74 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x78 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x7c + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x80 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x84 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x88 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x8c + lVar21)) * 0x401;
  uVar8 = (ulonglong)uVar25;
  *(undefined8 *)(puVar18 + lVar22 + 0xeb0) = 0x56e6166bb6d83cb1;
  *(int *)(puVar18 + lVar22 + 0xea0) = (int)*(undefined8 *)(puVar18 + lVar22 + 0xeb0);
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x90 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x94 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x98 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0x9c + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xa0 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xa4 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xa8 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xac + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xb0 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xb4 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xb8 + lVar21)) * 0x401;
  uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xbc + lVar21)) * 0x401;
  uVar11 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xc0 + lVar21)) * 0x401;
  uVar11 = uVar11 ^ uVar11 >> 6;
  bVar26 = uVar11 == 0;
  uVar25 = uVar11;
  do {
    cVar28 = '\0';
    cVar27 = (int)uVar25 < 0;
    uVar13 = 0;
    *(undefined8 *)(puVar18 + lVar22 + 0xdd8) = 0x18119bc7c;
    FUN_18119ae31();
    if (bVar26 || cVar28 != cVar27) {
      lVar23 = in_R11 + in_R10;
code_r0x00018119bc8e:
      in_R11 = -(in_R10 - lVar23);
      in_R10 = lVar23 + (in_R10 - lVar23);
    }
    else if ((uVar13 & 0xc1) != 0) {
      puVar17 = (undefined8 *)(ulonglong)(uint)((int)puVar17 + (int)uVar8);
      lVar23 = in_R11;
      goto code_r0x00018119bc8e;
    }
    uVar25 = (*piVar24 + 1) * *piVar24 & 0x80000001;
    if ((int)uVar25 < 0) {
      uVar25 = (uVar25 - 1 | 0xfffffffe) + 1;
    }
    bVar26 = false;
    if (uVar25 == 0) {
      uVar25 = (*(int *)(lVar20 + 0xc4 + lVar21) + uVar11) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 200 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xcc + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xd0 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xd4 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xd8 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xdc + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xe0 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xe4 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xe8 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xec + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xf0 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xf4 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xf8 + lVar21)) * 0x401;
      uVar25 = ((uVar25 >> 6 ^ uVar25) + *(int *)(lVar20 + 0xfc + lVar21)) * 0x401;
      uVar25 = uVar25 >> 6 ^ uVar25 ^ 0x1527c836;
      uVar25 = (uint)(~((uVar25 >> 1 | (uint)((uVar25 & 1) != 0) << 0x1f) + 0xb07ba98e) ==
                     *(uint *)(puVar18 + lVar22 + 0xea0));
      uVar13 = (ulonglong)uVar25;
      if (uVar25 * 0x1d != 0) {
        do {
          *(longlong *)(puVar19 + -8) = lVar20;
          *(longlong *)(puVar19 + -0x10) = in_R10;
          *(ulonglong *)(puVar19 + -0x18) = uVar13;
          piVar24 = (int *)((-((longlong)piVar24 - 0x10a0e70dU) ^ 0xffffffffffffffff) + 0x10a0e70e);
          lVar22 = -(longlong)(int)uVar9;
          uVar13 = *(ulonglong *)(puVar19 + lVar22 + 0xad8);
          in_R10 = *(longlong *)(puVar19 + lVar22 + 0xae0);
          lVar20 = *(longlong *)(puVar19 + lVar22 + 0xae8);
          puVar19 = puVar19 + lVar22 + 0xaf0;
          uVar25 = (*piVar24 + 1) * *piVar24 & 0x80000001;
          if ((int)uVar25 < 0) {
            uVar25 = (uVar25 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar25 != 0);
        return puVar17[5];
      }
      *(longlong *)(puVar18 + lVar22 + 0xdd8) = lVar20;
      *(ulonglong *)(puVar18 + lVar22 + 0xdd0) = (ulonglong)uVar11;
      *(ulonglong *)(puVar18 + lVar22 + 0xdc8) = (ulonglong)uVar9;
      uVar7 = thunk_FUN_1805a9280((int)(-uVar10 | uVar10) >> 0x1f & 0x3b16U ^ 0x3866,
                                  (-uVar8 ^ 0xffffffffffffffff) + 1,
                                  (longlong)piVar24 + param_2 +
                                  (param_2 - ((longlong)piVar24 + param_2)));
      return uVar7;
    }
  } while( true );
}



############ FUN_ 180537d50 size=150 ############

void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
     vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
               (longlong param_1,float *param_2)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = (int)*param_2;
  if (*(char *)(*(longlong *)(param_1 + 8) + 0x41) != '\0') {
    cVar2 = FUN_180528d50();
    if (cVar2 != '\0') {
      lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x168);
      *(undefined1 *)(lVar1 + 0x3cc) = 1;
      *(undefined1 *)(lVar1 + 0x1b6) = 1;
      if (iVar3 == 1) {
        *(undefined4 *)(lVar1 + 0x1ac) = 4;
      }
      else if (iVar3 == 2) {
        *(undefined4 *)(lVar1 + 0x1ac) = 8;
      }
      else if (iVar3 == 3) {
        *(undefined4 *)(lVar1 + 0x1ac) = 0x10;
      }
      else {
        *(undefined4 *)(lVar1 + 0x1ac) = 2;
      }
      (**(code **)(**(longlong **)(*(longlong *)(param_1 + 8) + 0x168) + 0x20))();
    }
  }
  return;
}



############ FUN_ 1804f6a20 size=814 ############

ulonglong FUN_1804f6a20(longlong *param_1,int param_2)

{
  int *piVar1;
  double dVar2;
  bool bVar3;
  undefined8 *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  undefined8 *local_res8 [2];
  double local_res18;
  double local_res20;
  
  lVar7 = param_1[1];
  lVar8 = 0;
  lVar5 = lVar8;
  if (lVar7 != 0) {
    lVar5 = *(longlong *)(lVar7 + 0x10);
  }
  if (lVar5 == 0) {
    lVar7 = *param_1;
  }
  if (lVar7 != 0) {
    lVar8 = *(longlong *)(lVar7 + 0x10);
  }
  if (lVar8 == 0) goto LAB_1804f6d26;
  *(int *)(param_1 + 5) = (int)param_1[5] + param_2;
  dVar10 = DAT_1824c4140;
  dVar12 = (double)(int)param_1[5] / (double)*(int *)((longlong)param_1 + 0x2c);
  if ((dVar12 < 0.0) || (DAT_1824c4140 <= dVar12)) goto LAB_1804f6d26;
  FUN_18051a960(local_res8,param_1);
  puVar4 = local_res8[0];
  if (DAT_1824c4050 <= dVar12) {
    dVar2 = (double)param_1[7];
    dVar12 = (((double)param_1[8] - dVar2) * (dVar12 - DAT_1824c4050) + dVar2) *
             (dVar12 - DAT_1824c4050) +
             ((dVar2 - (double)param_1[6]) * DAT_1824c4050 + (double)param_1[6]) * DAT_1824c4050;
  }
  else {
    dVar12 = dVar12 * (((double)param_1[7] - (double)param_1[6]) * dVar12 + (double)param_1[6]);
  }
  dVar2 = (dVar12 - (double)param_1[9]) / (dVar10 - (double)param_1[9]);
  param_1[9] = (longlong)dVar12;
  if (dVar10 <= dVar2) {
LAB_1804f6d00:
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar9 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar9 == 1) {
        (**(code **)*local_res8[0])(local_res8[0],1);
      }
    }
LAB_1804f6d26:
    uVar6 = FUN_1804f6d50(param_1);
    return uVar6 & 0xffffffffffffff00;
  }
  bVar3 = false;
  if ((char)param_1[0xf] != '\0') {
    local_res18 = ((double)(int)param_1[2] - (double)param_1[10]) * dVar2 + (double)param_1[10];
    param_1[10] = (longlong)local_res18;
    dVar11 = ((double)*(int *)((longlong)param_1 + 0x14) - (double)param_1[0xb]) * dVar2 +
             (double)param_1[0xb];
    param_1[0xb] = (longlong)dVar11;
    dVar12 = ((double)((int)param_1[3] + (int)param_1[2]) - (double)param_1[0xc]) * dVar2 +
             (double)param_1[0xc];
    param_1[0xc] = (longlong)dVar12;
    dVar10 = ((double)(*(int *)((longlong)param_1 + 0x1c) + *(int *)((longlong)param_1 + 0x14)) -
             (double)param_1[0xd]) * dVar2 + (double)param_1[0xd];
    param_1[0xd] = (longlong)dVar10;
    dVar12 = (dVar12 - local_res18) + DAT_1824c4520;
    local_res20 = dVar11 + DAT_1824c4520;
    local_res18 = local_res18 + DAT_1824c4520;
    iVar9 = SUB84((dVar10 - dVar11) + DAT_1824c4520,0);
    if ((((SUB84(local_res18,0) != (int)param_1[2]) ||
         (SUB84(local_res20,0) != (int)((ulonglong)param_1[2] >> 0x20))) ||
        (SUB84(dVar12,0) != (int)param_1[3])) || (iVar9 != *(int *)((longlong)param_1 + 0x1c))) {
      FUN_18134bfe0(lVar8,(ulonglong)local_res18 & 0xffffffff,(ulonglong)local_res20 & 0xffffffff,
                    (ulonglong)dVar12 & 0xffffffff,iVar9);
      bVar3 = true;
    }
  }
  if ((puVar4 != (undefined8 *)0x0) && (puVar4[2] == 0)) {
    uVar6 = 0;
    goto LAB_1804f6cd1;
  }
  if (*(char *)((longlong)param_1 + 0x79) == '\0') {
    if (!bVar3) goto LAB_1804f6d00;
  }
  else {
    param_1[0xe] = (longlong)
                   (((double)param_1[4] - (double)param_1[0xe]) * dVar2 + (double)param_1[0xe]);
    FUN_181342bf0(lVar8);
  }
  uVar6 = 1;
LAB_1804f6cd1:
  if (puVar4 == (undefined8 *)0x0) {
    return uVar6;
  }
  LOCK();
  piVar1 = (int *)(puVar4 + 1);
  iVar9 = *piVar1;
  *piVar1 = *piVar1 + -1;
  UNLOCK();
  if (iVar9 != 1) {
    return uVar6;
  }
  (**(code **)*local_res8[0])(local_res8[0],1);
  return uVar6;
}



############ FUN_ 1804f6d50 size=322 ############

void FUN_1804f6d50(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong *plVar5;
  undefined8 *local_res8;
  
  plVar5 = (longlong *)0x0;
  plVar4 = plVar5;
  if (*param_1 != 0) {
    plVar4 = *(longlong **)(*param_1 + 0x10);
  }
  if (plVar4 != (longlong *)0x0) {
    FUN_18051a960(&local_res8,param_1);
    plVar4 = plVar5;
    if (*param_1 != 0) {
      plVar4 = *(longlong **)(*param_1 + 0x10);
    }
    FUN_181342bf0(plVar4,(float)(double)param_1[4]);
    plVar4 = plVar5;
    if (*param_1 != 0) {
      plVar4 = *(longlong **)(*param_1 + 0x10);
    }
    FUN_18134bfe0(plVar4,param_1[2],(ulonglong)param_1[2] >> 0x20,param_1[3],
                  *(undefined4 *)((longlong)param_1 + 0x1c));
    puVar3 = local_res8;
    if ((local_res8 == (undefined8 *)0x0) || (local_res8[2] != 0)) {
      plVar4 = plVar5;
      if (param_1[1] != 0) {
        plVar4 = *(longlong **)(param_1[1] + 0x10);
      }
      if (plVar4 != (longlong *)0x0) {
        if (*param_1 != 0) {
          plVar5 = *(longlong **)(*param_1 + 0x10);
        }
        (**(code **)(*plVar5 + 0x58))(plVar5,0.0 < (double)param_1[4]);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18057d310 size=85 ############

void FUN_18057d310(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181342bf0(*(undefined8 *)(*(longlong *)(param_1 + 8) + 0x100),*param_3);
  lVar1 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 180587d60 size=52 ############

void FUN_180587d60(longlong param_1)

{
  FUN_181342bf0(*(undefined8 *)(param_1 + 8),0);
  FUN_181411b10(*(longlong *)(param_1 + 8) + 0x3f8,"alpha",0);
  return;
}



############ FUN_ 1813350d0 size=594 ############

void FUN_1813350d0(longlong *param_1)

{
  int iVar1;
  longlong *plVar2;
  char cVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  uStack_20 = (undefined4)param_1[5];
  uStack_1c = *(undefined4 *)((longlong)param_1 + 0x2c);
  local_28 = 0;
  FUN_181342870(0,&local_28,1);
  uVar8 = DAT_1824c3ea4;
  if (((*(byte *)((longlong)param_1 + 0xa9) & 0x10) == 0) &&
     ((param_1[3] == 0 || (cVar3 = FUN_18133eaa0(), cVar3 != '\0')))) {
    uVar7 = uVar8;
    if ((int)param_1[0x34] != 2) {
      if ((int)param_1[0x34] != 0) {
        lVar4 = FUN_181334c90();
        goto LAB_1813351e5;
      }
      goto LAB_1813351c9;
    }
    cVar3 = FUN_1804d6ee0(param_1);
    if (cVar3 == '\0') {
      lVar4 = param_1[0x3c];
    }
    else {
      lVar4 = param_1[0x40];
    }
    if ((lVar4 != 0) ||
       ((cVar3 = FUN_1804d6ee0(param_1), cVar3 != '\0' &&
        ((lVar4 = param_1[0x3f], lVar4 != 0 || (lVar4 = param_1[0x3e], lVar4 != 0))))))
    goto LAB_1813351e5;
    lVar4 = param_1[0x3b];
LAB_1813351d9:
    uVar8 = uVar7;
    if (lVar4 != 0) goto LAB_1813351e5;
  }
  else {
    cVar3 = FUN_1804d6ee0(param_1);
    if (cVar3 == '\0') {
      lVar4 = param_1[0x3d];
    }
    else {
      lVar4 = param_1[0x41];
    }
    uVar7 = DAT_1824c3d74;
    if (lVar4 != 0) goto LAB_1813351e5;
LAB_1813351c9:
    cVar3 = FUN_1804d6ee0(param_1);
    if (cVar3 != '\0') {
      lVar4 = param_1[0x3e];
      goto LAB_1813351d9;
    }
  }
  lVar4 = param_1[0x3a];
  uVar8 = uVar7;
LAB_1813351e5:
  if (lVar4 != param_1[0x42]) {
    plVar2 = (longlong *)param_1[8];
    for (plVar6 = plVar2; plVar6 != plVar2 + *(int *)((longlong)param_1 + 0x4c); plVar6 = plVar6 + 1
        ) {
      if (param_1[0x42] == *plVar6) {
        uVar7 = (undefined4)((longlong)plVar6 - (longlong)plVar2 >> 3);
        goto LAB_181335227;
      }
    }
    uVar7 = 0xffffffff;
LAB_181335227:
    FUN_181343a90(param_1,uVar7,1);
    param_1[0x42] = lVar4;
    if (lVar4 != 0) {
      *(byte *)(lVar4 + 0xa8) = *(byte *)(lVar4 + 0xa8) & 0xef | 8;
      plVar2 = (longlong *)param_1[0x42];
      if (plVar2 != (longlong *)0x0) {
        (**(code **)(*plVar2 + 0x58))(plVar2,1);
        FUN_181343cc0(param_1,plVar2,0xffffffff);
      }
      if ((undefined **)*param_1 == juce::DrawableButton::vftable) {
        if ((param_1[0x42] != 0) && (iVar1 = (int)param_1[0x39], iVar1 != 1)) {
          if (iVar1 == 5) {
            uVar7 = 0x40;
          }
          else {
            uVar7 = 0x24;
            if (iVar1 == 4) {
              uVar7 = 0x324;
            }
          }
          uVar5 = (*(code *)juce::DrawableButton::vftable[0x31])(param_1,&local_28);
          FUN_181332820(param_1[0x42],uVar5,uVar7);
        }
      }
      else {
        (*(code *)((undefined **)*param_1)[0x21])(param_1);
      }
    }
  }
  if (param_1[0x42] != 0) {
    FUN_181342bf0(param_1[0x42],uVar8);
  }
  return;
}



############ FUN_ 18144b3a0 size=242 ############

void FUN_18144b3a0(longlong param_1,longlong param_2,double param_3)

{
  undefined4 uVar1;
  longlong lVar2;
  double dVar3;
  
  if (param_2 == *(longlong *)(param_1 + 0x620)) {
    uVar1 = *(undefined4 *)(param_1 + -0x284);
    lVar2 = (**(code **)(*(longlong *)(param_1 + -0x30) + 8))(param_1 + -0x30);
    FUN_18134bfe0(param_1 + 0x13f8,*(int *)(param_1 + 0xf0) + *(int *)(param_1 + 0xe8),0,
                  (int)(*(float *)(lVar2 + 0x88) * DAT_1824c43d8),uVar1);
    FUN_181344f60(param_1 + 0x13f8,0);
    lVar2 = (**(code **)(*(longlong *)(param_1 + -0x30) + 8))(param_1 + -0x30);
    param_3 = param_3 / (double)(*(float *)(lVar2 + 0x88) * DAT_1824c4418);
    dVar3 = DAT_1824c4140;
    if (param_3 <= DAT_1824c4140) {
      dVar3 = param_3;
    }
    FUN_181342bf0(param_1 + 0x13f8,(float)dVar3);
  }
  return;
}



############ FUN_ 1814cfe10 size=79 ############

void FUN_1814cfe10(longlong *param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181342bf0();
  (**(code **)(*param_1 + 0x58))(param_1,1);
  uStack_10 = (undefined4)param_1[5];
  uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1815df410 size=287 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815df410(longlong param_1)

{
  undefined4 extraout_XMM0_Db;
  undefined4 extraout_XMM0_Dc;
  undefined4 extraout_XMM0_Dd;
  float fVar1;
  undefined1 auVar2 [16];
  undefined1 auVar3 [16];
  
  if (*(int *)(param_1 + 0x60) == 0) {
    fVar1 = (float)(int)(0xff - (uint)*(byte *)(param_1 + -0x114)) / DAT_1824c4548;
    if (DAT_1824c3d54 <= fVar1) {
      FUN_181342bf0(param_1 + -0x1c0);
      *(undefined4 *)(param_1 + 0x60) = 2;
      return;
    }
    FUN_181342bf0(param_1 + -0x1c0,fVar1 + DAT_1824c3c8c);
    return;
  }
  if (*(int *)(param_1 + 0x60) != 1) {
    fVar1 = *(float *)(param_1 + 100) + _DAT_1824c3ca4;
    *(float *)(param_1 + 100) = fVar1;
    fVar1 = sinf(fVar1);
    auVar2._4_4_ = extraout_XMM0_Db;
    auVar2._0_4_ = fVar1;
    auVar2._8_4_ = extraout_XMM0_Dc;
    auVar2._12_4_ = extraout_XMM0_Dd;
    auVar3._4_12_ = auVar2._4_12_;
    auVar3._0_4_ = (fVar1 + DAT_1824c3ea4) * (DAT_1824c3ea4 - *(float *)(param_1 + 0x68)) *
                   DAT_1824c3d8c + *(float *)(param_1 + 0x68);
    FUN_181342bf0(param_1 + -0x1c0,auVar3._0_8_);
    return;
  }
  fVar1 = (float)(int)(0xff - (uint)*(byte *)(param_1 + -0x114)) / DAT_1824c4548;
  if (fVar1 <= DAT_1824c3c70) {
    *(undefined4 *)(param_1 + 0x60) = 3;
    FUN_1812a7720(param_1);
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -0x1c0,0);
    return;
  }
  FUN_181342bf0(param_1 + -0x1c0,fVar1 - DAT_1824c3c8c);
  return;
}



############ FUN_ 181333460 size=246 ############

void FUN_181333460(longlong param_1)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  char cVar3;
  float local_18;
  float local_14;
  float local_10;
  float local_c;
  
  lVar2 = *(longlong *)(param_1 + 0x210);
  if (lVar2 == 0) {
    return;
  }
  *(byte *)(lVar2 + 0xa8) = *(byte *)(lVar2 + 0xa8) & 0xef | 8;
  auVar1 = *(undefined1 (*) [16])(param_1 + 0x1ec);
  local_18 = (float)auVar1._0_4_;
  local_14 = (float)auVar1._4_4_;
  local_10 = (float)auVar1._8_4_;
  local_c = (float)auVar1._12_4_;
  FUN_181332820(*(undefined8 *)(param_1 + 0x210),&local_18,0x24);
  if ((*(byte *)(param_1 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      cVar3 = FUN_18133eaa0();
      if (cVar3 == '\0') goto LAB_181333537;
    }
    FUN_181342bf0(*(undefined8 *)(param_1 + 0x210));
    return;
  }
LAB_181333537:
  FUN_181342bf0(*(undefined8 *)(param_1 + 0x210));
  return;
}



############ FUN_ 18057cad0 size=14 ############

void FUN_18057cad0(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  FUN_181342bf0(*(undefined8 *)(param_1 + 8),*param_3);
  return;
}



############ FUN_ 181342a30 size=215 ############

void FUN_181342a30(longlong param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined8 local_18;
  undefined8 uStack_10;
  
  iVar2 = *param_2;
  iVar1 = param_2[1];
  iVar3 = iVar2;
  if (iVar2 < 0) {
    iVar3 = 0;
  }
  iVar5 = iVar1;
  if (iVar1 < 0) {
    iVar5 = 0;
  }
  iVar4 = iVar2 + param_2[2];
  if (*(int *)(param_1 + 0x28) < iVar2 + param_2[2]) {
    iVar4 = *(int *)(param_1 + 0x28);
  }
  if (-1 < iVar4 - iVar3) {
    iVar2 = param_2[3] + iVar1;
    if (*(int *)(param_1 + 0x2c) < param_2[3] + iVar1) {
      iVar2 = *(int *)(param_1 + 0x2c);
    }
    if (-1 < iVar2 - iVar5) {
      local_18 = CONCAT44(iVar5,iVar3);
      uStack_10 = CONCAT44(iVar2 - iVar5,iVar4 - iVar3);
      goto LAB_181342acf;
    }
  }
  local_18 = 0;
  uStack_10 = 0;
LAB_181342acf:
  *(undefined8 *)param_2 = local_18;
  *(undefined8 *)(param_2 + 2) = uStack_10;
  if ((0 < param_2[2]) && (0 < param_2[3])) {
    FUN_181342870(param_1,&local_18,0);
  }
  return;
}



############ FUN_ 1804b1290 size=554 ############

undefined8 * FUN_1804b1290(int *param_1,undefined8 *param_2,float *param_3)

{
  float fVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float local_c8;
  float local_c4;
  float local_c0;
  float local_bc;
  undefined1 local_b8 [176];
  
  local_bc = param_3[5];
  fVar6 = param_3[4];
  fVar11 = param_3[2];
  fVar10 = param_3[1];
  fVar1 = param_3[3];
  fVar14 = *param_3;
  fVar4 = (float)param_1[1];
  fVar9 = (float)(param_1[2] + *param_1);
  fVar7 = (float)*param_1;
  fVar5 = (float)(param_1[3] + param_1[1]);
  fVar8 = fVar10 * fVar5;
  fVar12 = fVar10 * fVar4 + fVar14 * fVar9 + fVar11;
  local_c0 = fVar14 * fVar9 + fVar8 + fVar11;
  fVar13 = fVar14 * fVar7 + fVar10 * fVar4 + fVar11;
  fVar5 = fVar6 * fVar5;
  fVar11 = fVar14 * fVar7 + fVar8 + fVar11;
  fVar14 = fVar1 * fVar7 + fVar6 * fVar4 + local_bc;
  fVar10 = fVar1 * fVar9 + fVar6 * fVar4 + local_bc;
  fVar6 = fVar1 * fVar7 + fVar5 + local_bc;
  local_bc = fVar1 * fVar9 + fVar5 + local_bc;
  local_c8 = local_c0;
  if (fVar12 <= fVar11) {
    if (fVar12 <= local_c0) {
      local_c8 = fVar12;
    }
  }
  else if (fVar11 <= local_c0) {
    local_c8 = fVar11;
  }
  if (fVar13 <= local_c8) {
    local_c8 = fVar13;
  }
  if (fVar11 <= fVar12) {
    if (local_c0 <= fVar12) {
      local_c0 = fVar12;
    }
  }
  else if (local_c0 <= fVar11) {
    local_c0 = fVar11;
  }
  if (local_c0 <= fVar13) {
    local_c0 = fVar13;
  }
  local_c4 = local_bc;
  if (fVar10 <= fVar6) {
    if (fVar10 <= local_bc) {
      local_c4 = fVar10;
    }
  }
  else if (fVar6 <= local_bc) {
    local_c4 = fVar6;
  }
  if (fVar14 <= local_c4) {
    local_c4 = fVar14;
  }
  if (fVar6 <= fVar10) {
    if (local_bc <= fVar10) {
      local_bc = fVar10;
    }
  }
  else if (local_bc <= fVar6) {
    local_bc = fVar6;
  }
  *param_2 = 0;
  local_c0 = local_c0 - local_c8;
  param_2[1] = 0;
  if (local_bc <= fVar14) {
    local_bc = fVar14;
  }
  local_bc = local_bc - local_c4;
  puVar3 = (undefined8 *)FUN_1804ab070(&local_c8,local_b8);
  uVar2 = puVar3[1];
  *param_2 = *puVar3;
  param_2[1] = uVar2;
  return param_2;
}



############ FUN_ 1804ab070 size=234 ############

int * FUN_1804ab070(float *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  
  fVar6 = DAT_1824c461c;
  iVar1 = 0x7fffffff;
  fVar7 = param_1[1];
  if (DAT_1824c461c <= fVar7 + param_1[3]) {
    iVar2 = 0x7fffffff;
  }
  else {
    fVar5 = ceilf(fVar7 + param_1[3]);
    iVar2 = (int)fVar5;
  }
  fVar5 = *param_1;
  if (fVar5 + param_1[2] < fVar6) {
    fVar6 = ceilf(fVar5 + param_1[2]);
    iVar1 = (int)fVar6;
  }
  fVar6 = DAT_1824c4760;
  iVar3 = -0x80000000;
  if (fVar7 <= DAT_1824c4760) {
    iVar4 = -0x80000000;
  }
  else {
    fVar7 = floorf(fVar7);
    iVar4 = (int)fVar7;
  }
  if (fVar6 < fVar5) {
    fVar7 = floorf(fVar5);
    iVar3 = (int)fVar7;
  }
  *param_2 = iVar3;
  param_2[1] = iVar4;
  param_2[3] = iVar2 - iVar4;
  param_2[2] = iVar1 - iVar3;
  return param_2;
}



############ FUN_ 1813495d0 size=323 ############

void FUN_1813495d0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  undefined8 uVar4;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar4 = 0xfffffffffffffffe;
  *param_1 = juce::ComboBox::vftable;
  param_1[0x16] = juce::ComboBox::vftable;
  param_1[0x18] = juce::ComboBox::vftable;
  param_1[0x19] = juce::ComboBox::vftable;
  FUN_1813514c0(param_1 + 0x27);
  if (*(char *)((longlong)param_1 + 0x155) != '\0') {
    *(undefined1 *)((longlong)param_1 + 0x155) = 0;
    FUN_18134b590();
    uStack_10 = *(undefined4 *)(param_1 + 5);
    uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_18 = 0;
    uStack_14 = 0;
    FUN_181342870(param_1,&local_18,1,param_4,uVar4);
  }
  puVar2 = (undefined8 *)param_1[0x2e];
  param_1[0x2e] = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar3 = (uint *)(param_1[0x30] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(param_1[0x2f] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar2 = (undefined8 *)param_1[0x2e];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  *(undefined4 *)((longlong)param_1 + 0x16c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x2c]);
}



############ FUN_ 181341b10 size=294 ############

void FUN_181341b10(longlong *param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  bool bVar5;
  undefined8 *local_res8;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
  uStack_10 = (undefined4)param_1[5];
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(param_1,&local_18,1);
  (**(code **)(*param_1 + 0xa0))(param_1);
  puVar3 = local_res8;
  bVar5 = local_res8 == (undefined8 *)0x0;
  if (bVar5) {
    lVar4 = 0;
  }
  else {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    (**(code **)(*param_1 + 0x148))(param_1);
    if (bVar5) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if (lVar4 != 0) {
      iVar2 = *(int *)((longlong)param_1 + 0x4c);
      while (iVar2 = iVar2 + -1, -1 < iVar2) {
        FUN_181341b10(*(undefined8 *)(param_1[8] + (longlong)iVar2 * 8));
        if (bVar5) {
          lVar4 = 0;
        }
        else {
          lVar4 = puVar3[2];
        }
        if (lVar4 == 0) break;
        if (*(int *)((longlong)param_1 + 0x4c) < iVar2) {
          iVar2 = *(int *)((longlong)param_1 + 0x4c);
        }
      }
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 180597f80 size=231 ############

void FUN_180597f80(longlong param_1)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar2 = 0;
  lVar3 = lVar2;
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar3 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  FUN_1812a7720(param_1 + 0x40);
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar2 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  lVar2 = __RTDynamicCast(*(undefined8 *)(lVar2 + 0x68),0,
                          &juce::CachedComponentImage::RTTI_Type_Descriptor,
                          &juce::OpenGLContext::CachedImage::RTTI_Type_Descriptor,0);
  if (lVar2 != 0) {
    FUN_1805968f0(lVar2);
  }
  if (*(longlong *)(lVar3 + 0x68) != 0) {
    puVar1 = *(undefined8 **)(lVar3 + 0x68);
    *(undefined8 *)(lVar3 + 0x68) = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    uStack_10 = *(undefined4 *)(lVar3 + 0x28);
    uStack_c = *(undefined4 *)(lVar3 + 0x2c);
    local_18 = 0;
    FUN_181342870(lVar3,&local_18,1);
  }
  *(undefined8 *)(*(longlong *)(param_1 + 0x58) + 0x188) = 0;
  return;
}



############ FUN_ 18134bd50 size=132 ############

void FUN_18134bd50(longlong *param_1,byte param_2)

{
  longlong lVar1;
  byte bVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  bVar2 = *(byte *)(param_1 + 0x15);
  if (param_2 != (bVar2 >> 2 & 1)) {
    bVar2 = (param_2 << 2 ^ bVar2) & 4 ^ bVar2;
    *(byte *)(param_1 + 0x15) = bVar2;
    if ((bVar2 & 1) != 0) {
      lVar1 = FUN_1812d2bd0(param_1);
      if (lVar1 != 0) {
        (**(code **)(*param_1 + 0x68))(param_1,*(undefined4 *)(lVar1 + 0x10),0);
      }
    }
    uStack_10 = (undefined4)param_1[5];
    uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 1804780b0 size=324 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 FUN_1804780b0(longlong param_1,float param_2)

{
  longlong lVar1;
  double dVar2;
  int *piVar3;
  longlong *plVar4;
  float fVar5;
  float fVar6;
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  piVar3 = (int *)FUN_180473b00();
  if (((*piVar3 == 0x29) || (*piVar3 == 0x15)) &&
     (lVar1 = *(longlong *)(param_1 + 0x30), lVar1 != 0)) {
    if ((*(byte *)(lVar1 + 0xa8) & 1) == 0) {
      if (*(longlong *)(lVar1 + 0x18) == 0) goto LAB_180478114;
      plVar4 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar4 = (longlong *)FUN_1812d2bd0(lVar1);
    }
    if (plVar4 != (longlong *)0x0) {
      dVar2 = (double)(**(code **)(*plVar4 + 0x110))(plVar4);
      param_2 = (float)dVar2;
    }
  }
LAB_180478114:
  fVar6 = *(float *)(param_1 + 0x38);
  fVar5 = fVar6;
  if (fVar6 <= param_2) {
    fVar5 = param_2;
  }
  fVar6 = (float)(double)CONCAT44((uint)((ulonglong)(double)(param_2 - fVar6) >> 0x20) &
                                  DAT_1824c4f10._4_4_,
                                  SUB84((double)(param_2 - fVar6),0) & (uint)DAT_1824c4f10);
  if ((fVar5 * _DAT_1824c3c34 < fVar6) && (DAT_1824c3c20 <= fVar6)) {
    *(float *)(param_1 + 0x38) = param_2;
    if (*(longlong *)(param_1 + 0x20) != 0) {
      *(float *)(*(longlong *)(param_1 + 0x20) + 0x6220) = param_2;
    }
    if (*(longlong *)(param_1 + 0x30) == 0) {
      return 1;
    }
    FUN_1804789b0();
    lVar1 = *(longlong *)(param_1 + 0x30);
    FUN_18134bfe0(lVar1,0,0,*(undefined4 *)(lVar1 + 0x28),*(undefined4 *)(lVar1 + 0x2c));
    lVar1 = *(longlong *)(param_1 + 0x30);
    uStack_20 = *(undefined4 *)(lVar1 + 0x28);
    uStack_1c = *(undefined4 *)(lVar1 + 0x2c);
    local_28 = 0;
    FUN_181342870(lVar1,&local_28,1);
  }
  return 0;
}



############ FUN_ 181325e40 size=101 ############

void FUN_181325e40(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181348f10(param_1 + 0xe8);
  uStack_10 = *(undefined4 *)(param_1 + 0x110);
  uStack_c = *(undefined4 *)(param_1 + 0x114);
  local_18 = 0;
  FUN_181342870(param_1 + 0xe8,&local_18,1);
  FUN_181325eb0(param_1);
  return;
}



############ FUN_ 1813456c0 size=2453 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813456c0(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  longlong lVar4;
  char cVar5;
  int iVar6;
  longlong *plVar7;
  uint uVar8;
  uint *puVar9;
  bool bVar10;
  undefined1 auStack_7e8 [32];
  undefined8 local_7c8;
  undefined8 local_7c0;
  undefined8 local_7b8;
  undefined8 local_7b0;
  longlong local_798;
  undefined4 local_790;
  undefined4 local_78c;
  undefined4 local_788 [2];
  longlong local_780;
  longlong local_778;
  longlong local_770;
  undefined8 *local_768;
  undefined8 local_748;
  undefined4 uStack_740;
  undefined4 uStack_73c;
  undefined1 *local_738;
  undefined1 *local_730;
  undefined1 *local_728;
  void *local_720;
  undefined8 local_718;
  undefined8 local_710;
  undefined8 uStack_708;
  undefined1 local_700;
  undefined4 local_6d0 [2];
  undefined8 local_6c8;
  undefined8 uStack_6c0;
  undefined4 local_6b8;
  undefined4 uStack_6b4;
  undefined4 uStack_6b0;
  undefined4 uStack_6ac;
  undefined8 local_6a8;
  undefined4 local_668;
  undefined4 uStack_664;
  undefined4 uStack_660;
  undefined4 uStack_65c;
  undefined8 local_638;
  undefined8 *local_630;
  uint *local_628;
  undefined4 local_618;
  undefined4 uStack_614;
  undefined4 uStack_610;
  undefined4 uStack_60c;
  undefined **local_608 [5];
  undefined4 local_5e0;
  undefined4 local_5dc;
  undefined1 local_528 [16];
  undefined4 local_518;
  undefined4 uStack_514;
  undefined4 uStack_510;
  undefined4 uStack_50c;
  undefined1 local_508;
  undefined1 local_4d8 [496];
  undefined **local_2e8;
  undefined8 *local_2e0;
  undefined ***local_2b0;
  undefined **local_2a8;
  undefined8 *local_2a0;
  undefined ***local_270;
  undefined **local_268;
  undefined8 *local_260;
  undefined ***local_230;
  undefined **local_228;
  undefined8 *local_220;
  undefined ***local_1f0;
  longlong local_1a8 [7];
  longlong *local_170;
  longlong local_168 [7];
  longlong *local_130;
  longlong local_128 [7];
  longlong *local_f0;
  longlong local_e8 [7];
  longlong *local_b0;
  ulonglong local_68;
  
  local_638 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_7e8;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  param_1[0x16] = juce::SettableTooltipClient::vftable;
  param_1[0x17] = &DAT_1821dbf98;
  param_1[0x18] = juce::FileDragAndDropTarget::vftable;
  *param_1 = juce::FileSearchPathListComponent::vftable;
  param_1[0x16] = juce::FileSearchPathListComponent::vftable;
  param_1[0x18] = juce::FileSearchPathListComponent::vftable;
  param_1[0x19] = juce::FileSearchPathListComponent::vftable;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = &DAT_1821dbf98;
  local_738 = &DAT_1821dbf98;
  local_630 = param_1;
  FUN_1812e8530(param_1 + 0x1d,&local_738);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar8 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar10 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar8;
    if (bVar10) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_18049c4e0(&local_778,&DAT_1821e2c8c);
  puVar1 = param_1 + 0x3e;
  local_768 = puVar1;
  FUN_1813379d0(puVar1,&local_778);
  *puVar1 = juce::TextButton::vftable;
  param_1[0x54] = juce::TextButton::vftable;
  puVar9 = (uint *)(local_778 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_18049c4e0(&local_770,&DAT_1821e2c7c);
  puVar2 = param_1 + 0x77;
  local_768 = puVar2;
  FUN_1813379d0(puVar2,&local_770);
  *puVar2 = juce::TextButton::vftable;
  param_1[0x8d] = juce::TextButton::vftable;
  puVar9 = (uint *)(local_770 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_18049c4e0(&local_798,"change...");
  lVar4 = DAT_1826739f8;
  local_628 = &DAT_182673984;
  do {
    LOCK();
    uVar8 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar8 != 0);
  if (DAT_1826739f8 == 0) {
    local_780 = local_798;
    uVar8 = *(uint *)(local_798 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar6 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_798,*(undefined1 *)(DAT_1826739f8 + 0x38),0);
      if (iVar6 < 0) {
        FUN_181234570(*(undefined8 *)(lVar4 + 0x40),&local_780,&local_798,&local_798);
        goto LAB_1813459f0;
      }
    }
    iVar6 = FUN_1812498b0(lVar4 + 0x18,local_798,*(undefined1 *)(lVar4 + 0x38),0);
    if (iVar6 < 0) {
      local_780 = local_798;
      uVar8 = *(uint *)(local_798 + -0x10);
    }
    else {
      plVar7 = (longlong *)FUN_181249970(lVar4 + 0x28,iVar6);
      local_780 = *plVar7;
      uVar8 = *(uint *)(local_780 + -0x10);
    }
  }
  if ((uVar8 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_780 + -0x10) = *(int *)(local_780 + -0x10) + 1;
    UNLOCK();
  }
LAB_1813459f0:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar9 = (uint *)(local_798 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar3 = param_1 + 0xb0;
  local_768 = puVar3;
  FUN_1813379d0(puVar3,&local_780);
  *puVar3 = juce::TextButton::vftable;
  param_1[0xc6] = juce::TextButton::vftable;
  puVar9 = (uint *)(local_780 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  local_730 = &DAT_1821dbf98;
  FUN_181335a10(param_1 + 0xe9,&local_730,3);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar8 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar10 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar8;
    if (bVar10) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_728 = &DAT_1821dbf98;
  FUN_181335a10(param_1 + 0x12d,&local_728,3);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar8 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar10 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar8;
    if (bVar10) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  plVar7 = param_1 + 0x1d;
  FUN_1812e83d0(plVar7,param_1 + 0x19);
  FUN_18134aef0(param_1,plVar7,0xffffffff);
  local_790 = CONCAT13(5,(int3)DAT_18262b5b8);
  FUN_18134a800(plVar7,0x1002800,local_790);
  local_78c = CONCAT13(0x19,(int3)DAT_18262b5b8);
  FUN_18134a800(plVar7,0x1002810,local_78c);
  *(undefined4 *)((longlong)param_1 + 0x1e4) = 1;
  (**(code **)(*plVar7 + 0x108))(plVar7);
  FUN_18134aef0(param_1,puVar1,0xffffffff);
  local_2e8 = std::_Func_impl_no_alloc<<lambda_14f5f336c1238b249b4b7bf7c4df704c>,void>::vftable;
  local_2b0 = &local_2e8;
  local_170 = (longlong *)0x0;
  local_2e0 = param_1;
  FUN_180488560(local_1a8,&local_2e8);
  FUN_180488560(&local_2e8,param_1 + 0x56);
  FUN_180488560(param_1 + 0x56,local_1a8);
  if (local_170 != (longlong *)0x0) {
    (**(code **)(*local_170 + 0x20))(local_170,local_170 != local_1a8);
  }
  if (local_2b0 != (undefined ***)0x0) {
    (*(code *)(*local_2b0)[4])(local_2b0,local_2b0 != &local_2e8);
  }
  FUN_181347cd0(puVar1,0xf);
  FUN_18134aef0(param_1,puVar2,0xffffffff);
  local_2a8 = std::_Func_impl_no_alloc<<lambda_032a6d3cd0f0255e1db1a5ebf2daf0d3>,void>::vftable;
  local_270 = &local_2a8;
  local_130 = (longlong *)0x0;
  local_2a0 = param_1;
  FUN_180488560(local_168,&local_2a8);
  FUN_180488560(&local_2a8,param_1 + 0x8f);
  FUN_180488560(param_1 + 0x8f,local_168);
  if (local_130 != (longlong *)0x0) {
    (**(code **)(*local_130 + 0x20))(local_130,local_130 != local_168);
  }
  if (local_270 != (undefined ***)0x0) {
    (*(code *)(*local_270)[4])(local_270,local_270 != &local_2a8);
  }
  FUN_181347cd0(puVar2,0xf);
  FUN_18134aef0(param_1,puVar3,0xffffffff);
  local_268 = std::_Func_impl_no_alloc<<lambda_1e53456c1057c6496b7487c80962499b>,void>::vftable;
  local_230 = &local_268;
  local_f0 = (longlong *)0x0;
  local_260 = param_1;
  FUN_180488560(local_128,&local_268);
  FUN_180488560(&local_268,param_1 + 200);
  FUN_180488560(param_1 + 200,local_128);
  if (local_f0 != (longlong *)0x0) {
    (**(code **)(*local_f0 + 0x20))(local_f0,local_f0 != local_128);
  }
  if (local_230 != (undefined ***)0x0) {
    (*(code *)(*local_230)[4])(local_230,local_230 != &local_268);
  }
  FUN_18134aef0(param_1,param_1 + 0xe9,0xffffffff);
  local_228 = std::_Func_impl_no_alloc<<lambda_c4a80526bc5d362a7738f9a0d30eda1e>,void>::vftable;
  local_1f0 = &local_228;
  local_b0 = (longlong *)0x0;
  local_220 = param_1;
  FUN_180488560(local_e8,&local_228);
  FUN_180488560(&local_228,param_1 + 0x101);
  FUN_180488560(param_1 + 0x101,local_e8);
  if (local_b0 != (longlong *)0x0) {
    (**(code **)(*local_b0 + 0x20))(local_b0,local_b0 != local_e8);
  }
  if (local_1f0 != (undefined ***)0x0) {
    (*(code *)(*local_1f0)[4])(local_1f0,local_1f0 != &local_228);
  }
  FUN_18134a8d0(param_1,local_788,0x1002820,0);
  local_720 = (void *)0x0;
  local_718 = 0;
  local_710 = 0;
  uStack_708 = 0;
  local_700 = 1;
  local_618 = _DAT_1824c4800;
  uStack_614 = _UNK_1824c4804;
  uStack_610 = _UNK_1824c4808;
  uStack_60c = _UNK_1824c480c;
  local_7c8 = CONCAT44(local_7c8._4_4_,DAT_1824c44a8);
  FUN_18129c5c0(&local_720,&local_618,DAT_1824c4490,DAT_1824c44dc);
  FUN_181330640(local_608);
  local_608[0] = juce::DrawablePath::vftable;
  local_6d0[0] = local_788[0];
  local_6c8 = 0;
  uStack_6c0 = 0;
  local_6b8 = _DAT_1824c4780;
  uStack_6b4 = _UNK_1824c4784;
  uStack_6b0 = _UNK_1824c4788;
  uStack_6ac = _UNK_1824c478c;
  local_6a8 = 0x3f800000;
  cVar5 = FUN_1812a0d20(local_4d8,local_6d0);
  if (cVar5 != '\0') {
    FUN_1812a0f40(local_4d8,local_6d0);
    local_748 = 0;
    uStack_740 = local_5e0;
    uStack_73c = local_5dc;
    local_668 = 0;
    uStack_664 = 0;
    uStack_660 = local_5e0;
    uStack_65c = local_5dc;
    FUN_181342870(local_608,&local_668,1);
  }
  FUN_1812a0e00(local_6d0);
  FUN_1804aaf40(local_528,&local_720);
  local_518 = (undefined4)local_710;
  uStack_514 = local_710._4_4_;
  uStack_510 = (undefined4)uStack_708;
  uStack_50c = uStack_708._4_4_;
  local_508 = local_700;
  FUN_181330000(local_608);
  local_7b0 = 0;
  local_7b8 = 0;
  local_7c0 = 0;
  local_7c8 = 0;
  FUN_1813355a0(param_1 + 0xe9,local_608,0,0);
  local_608[0] = juce::DrawablePath::vftable;
  FUN_1813304a0(local_608);
                    /* WARNING: Subroutine does not return */
  free(local_720);
}



############ FUN_ 1812e83d0 size=89 ############

void FUN_1812e83d0(longlong param_1,longlong param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(longlong *)(param_1 + 0xc0) != param_2) {
    *(longlong *)(param_1 + 0xc0) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
    FUN_181348f10(param_1);
    return;
  }
  return;
}



############ FUN_ 1812e7390 size=122 ############

void FUN_1812e7390(longlong param_1)

{
  longlong lVar1;
  undefined1 local_res8 [32];
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = FUN_18134a8d0(param_1,local_res8,0x1002800,0);
  FUN_18134bd50(param_1,*(char *)(lVar1 + 3) == -1);
  FUN_18134bd50(*(undefined8 *)(param_1 + 200),*(byte *)(param_1 + 0xa8) >> 2 & 1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 181330000 size=416 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181330000(longlong param_1)

{
  float fVar1;
  char cVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  undefined8 local_28;
  undefined8 uStack_20;
  ulonglong local_18;
  
  uStack_20 = _UNK_1824c4788;
  local_28 = _DAT_1824c4780;
  *(undefined8 *)(param_1 + 0x114) = 0;
  *(undefined8 *)(param_1 + 0x11c) = 0;
  *(undefined4 *)(param_1 + 0x124) = 0;
  if (*(int *)(param_1 + 0xdc) == 0) {
    local_18 = (ulonglong)DAT_1824c3ea4;
    FUN_181297840(*(undefined4 *)(param_1 + 0xc0),*(undefined4 *)(param_1 + 0xc4),
                  *(undefined4 *)(param_1 + 200),param_1 + 0x108,param_1 + 0xe0,&local_28,
                  DAT_1824c4334);
  }
  else {
    local_18 = (ulonglong)DAT_1824c3ea4;
    FUN_181297340(param_1 + 0xc0,param_1 + 0x108,param_1 + 0xe0,*(undefined8 *)(param_1 + 0xd0),
                  *(int *)(param_1 + 0xdc),&local_28,DAT_1824c4334);
  }
  cVar2 = FUN_1813302a0(param_1);
  if (cVar2 == '\0') {
    fVar1 = *(float *)(param_1 + 0xf0);
    fVar5 = *(float *)(param_1 + 0xf8);
    fVar3 = *(float *)(param_1 + 0xf4) - fVar1;
    fVar4 = *(float *)(param_1 + 0xfc);
  }
  else {
    fVar1 = *(float *)(param_1 + 0x118);
    fVar5 = *(float *)(param_1 + 0x120);
    fVar3 = *(float *)(param_1 + 0x11c) - fVar1;
    fVar4 = *(float *)(param_1 + 0x124);
  }
  local_28 = CONCAT44(fVar5,fVar1);
  uStack_20 = CONCAT44(fVar4 - fVar5,fVar3);
  FUN_181332960(param_1,&local_28);
  uStack_20 = *(undefined8 *)(param_1 + 0x28);
  local_28 = 0;
  FUN_181342870(param_1,&local_28,1);
  return;
}



############ FUN_ 181337080 size=395 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181337080(longlong *param_1,char param_2,int param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  longlong lVar5;
  longlong lVar6;
  undefined1 auStack_a8 [32];
  undefined8 *local_88 [2];
  undefined8 local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined8 local_68;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined **local_48;
  char local_40 [8];
  ulonglong local_38;
  
  local_68 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  if (param_2 == (char)param_1[0x38]) {
  }
  FUN_1804de690(local_88,param_1);
  puVar3 = local_88[0];
  lVar6 = 0;
  if (param_2 != '\0') {
    FUN_181336f60(param_1,param_3,param_4);
    lVar5 = lVar6;
    if (puVar3 != (undefined8 *)0x0) {
      lVar5 = puVar3[2];
    }
    if (lVar5 == 0) goto LAB_1813371db;
  }
  cVar4 = FUN_1804d6ee0(param_1);
  if (cVar4 != param_2) {
    local_48 = &PTR_vftable_18262b550;
    local_40[0] = param_2;
    FUN_1813516e0(param_1 + 0x35,&local_48);
    (**(code **)(*local_48 + 0xb0))(local_48,local_40);
    lVar5 = lVar6;
    if (puVar3 != (undefined8 *)0x0) {
      lVar5 = puVar3[2];
    }
    if (lVar5 == 0) goto LAB_1813371db;
  }
  *(char *)(param_1 + 0x38) = param_2;
  uStack_6c = *(undefined4 *)((longlong)param_1 + 0x2c);
  uStack_70 = (undefined4)param_1[5];
  local_78 = 0;
  local_58 = 0;
  uStack_54 = 0;
  uStack_50 = uStack_70;
  uStack_4c = uStack_6c;
  FUN_181342870(param_1,&local_58,1);
  if (param_3 != 0) {
    FUN_181336910(param_1,&DAT_182673aec);
    if (puVar3 != (undefined8 *)0x0) {
      lVar6 = puVar3[2];
    }
    if (lVar6 == 0) goto LAB_1813371db;
  }
  if (param_4 == 0) {
    (**(code **)(*param_1 + 0x178))(param_1);
  }
  else {
    FUN_1813367f0();
  }
LAB_1813371db:
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_88[0])(local_88[0],1);
    }
  }
}



############ FUN_ 181336cf0 size=178 ############

void FUN_181336cf0(longlong param_1,int param_2)

{
  uint uVar1;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0x1a0) != param_2) {
    *(int *)(param_1 + 0x1a0) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    uStack_14 = 0;
    FUN_181342870(0,&local_18,1);
    if (*(int *)(param_1 + 0x1a0) == 2) {
      uVar1 = DAT_1826737fc;
      if (DAT_1826737fc == 0) {
        uVar1 = timeGetTime();
        if (uVar1 < DAT_1826737fc) {
          if (uVar1 < DAT_1826737fc - 1000) {
            LOCK();
            UNLOCK();
            DAT_1826737fc = uVar1;
          }
        }
        else {
          LOCK();
          UNLOCK();
          DAT_1826737fc = uVar1;
        }
      }
      *(uint *)(param_1 + 0x178) = uVar1;
      *(undefined4 *)(param_1 + 0x17c) = 0;
    }
    FUN_1813367f0(param_1);
    return;
  }
  return;
}



############ FUN_ 181347cd0 size=68 ############

void FUN_181347cd0(longlong param_1,int param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0x198) != param_2) {
    *(int *)(param_1 + 0x198) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 18132f430 size=514 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18132f430(longlong param_1)

{
  undefined8 uVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  ulonglong uVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined1 auStack_88 [32];
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_88;
  fVar2 = _hypotf(*(float *)(param_1 + 0xc0) - *(float *)(param_1 + 200),
                  *(float *)(param_1 + 0xc4) - *(float *)(param_1 + 0xcc));
  fVar3 = _hypotf(*(float *)(param_1 + 0xc0) - *(float *)(param_1 + 0xd0),
                  *(float *)(param_1 + 0xc4) - *(float *)(param_1 + 0xd4));
  fVar4 = *(float *)(param_1 + 0xd8);
  if (fVar3 <= DAT_1824c3c70) {
    fVar3 = DAT_1824c3c70;
  }
  fVar7 = DAT_1824c3c70;
  if ((DAT_1824c3c70 <= fVar4) && (fVar7 = fVar3, fVar4 <= fVar3)) {
    fVar7 = fVar4;
  }
  fVar4 = *(float *)(param_1 + 0xdc);
  fVar3 = DAT_1824c3c70;
  if (DAT_1824c3c70 <= fVar4) {
    if (fVar2 <= DAT_1824c3c70) {
      fVar2 = DAT_1824c3c70;
    }
    fVar3 = fVar2;
    if (fVar4 <= fVar2) {
      fVar3 = fVar4;
    }
  }
  FUN_181252990(param_1 + 0xe8,param_1 + 0xe0);
  FUN_1812520a0(param_1 + 0xe8,fVar7);
  FUN_181251de0(param_1 + 0xe8,fVar3);
  fVar4 = *(float *)(param_1 + 0xc0);
  fVar3 = *(float *)(param_1 + 0xc4);
  uVar6 = *(ulonglong *)(param_1 + 200);
  uVar1 = *(undefined8 *)(param_1 + 0xd0);
  fVar7 = (float)uVar1;
  fVar5 = (float)uVar6;
  fVar2 = fVar5;
  if (fVar4 <= fVar5) {
    fVar2 = fVar4;
  }
  uStack_60._4_4_ = (float)(uVar6 >> 0x20);
  if (fVar5 <= fVar4) {
    uVar6 = (ulonglong)(uint)fVar4;
  }
  fVar5 = uStack_60._4_4_;
  if (fVar3 <= uStack_60._4_4_) {
    fVar5 = fVar3;
  }
  fVar9 = (*(float *)(param_1 + 0xd0) - fVar4) + *(float *)(param_1 + 200);
  fVar8 = (*(float *)(param_1 + 0xd4) - fVar3) + *(float *)(param_1 + 0xcc);
  fVar4 = fVar7;
  if (fVar2 <= fVar7) {
    fVar4 = fVar2;
  }
  if (uStack_60._4_4_ <= fVar3) {
    uStack_60._4_4_ = fVar3;
  }
  local_58._4_4_ = (float)((ulonglong)uVar1 >> 0x20);
  if (fVar7 <= (float)uVar6) {
    fVar7 = (float)uVar6;
  }
  fVar3 = local_58._4_4_;
  if (fVar5 <= local_58._4_4_) {
    fVar3 = fVar5;
  }
  fVar2 = fVar9;
  if (fVar4 <= fVar9) {
    fVar2 = fVar4;
  }
  if (local_58._4_4_ <= uStack_60._4_4_) {
    local_58._4_4_ = uStack_60._4_4_;
  }
  if (fVar9 <= fVar7) {
    fVar9 = fVar7;
  }
  fVar4 = fVar8;
  if (fVar3 <= fVar8) {
    fVar4 = fVar3;
  }
  if (fVar8 <= local_58._4_4_) {
    fVar8 = local_58._4_4_;
  }
  local_68 = CONCAT44(fVar4,fVar2);
  uStack_60 = CONCAT44(fVar8 - fVar4,fVar9 - fVar2);
  local_58 = uVar1;
  FUN_181332960(param_1,&local_68);
  uStack_60 = *(undefined8 *)(param_1 + 0x28);
  local_68 = 0;
  FUN_181342870(param_1,&local_68,1);
}



############ FUN_ 18132f710 size=68 ############

void FUN_18132f710(longlong param_1,int param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0xf8) != param_2) {
    *(int *)(param_1 + 0xf8) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 181330430 size=97 ############

void FUN_181330430(longlong param_1,undefined8 param_2)

{
  char cVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  cVar1 = FUN_1812a0d20(param_1 + 0x130);
  if (cVar1 != '\0') {
    FUN_1812a0f40(param_1 + 0x130,param_2);
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 181331340 size=370 ############

void FUN_181331340(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  undefined4 local_18;
  undefined4 uStack_14;
  float fStack_10;
  float fStack_c;
  
  if (*(longlong *)(param_1 + 0xc0) != *param_2) {
    FUN_1812911c0(param_1 + 0xc0);
    lVar1 = *(longlong *)(param_1 + 0xc0);
    if (lVar1 == 0) {
      fStack_10 = 0.0;
      fStack_c = 0.0;
    }
    else {
      fStack_10 = *(float *)(lVar1 + 0x14);
      fStack_c = *(float *)(lVar1 + 0x18);
    }
    uStack_14 = 0;
    local_18 = 0;
    FUN_18134bfe0(param_1,0,0,fStack_10,fStack_c);
    lVar1 = *(longlong *)(param_1 + 0xc0);
    if (lVar1 == 0) {
      fStack_10 = 0.0;
      fStack_c = 0.0;
    }
    else {
      fStack_10 = *(float *)(lVar1 + 0x14);
      fStack_c = *(float *)(lVar1 + 0x18);
    }
    local_18 = 0;
    uStack_14 = 0;
    fStack_10 = (float)(int)fStack_10;
    fStack_c = (float)(int)fStack_c;
    FUN_181331140(param_1,&local_18);
    fStack_10 = *(float *)(param_1 + 0x28);
    fStack_c = *(float *)(param_1 + 0x2c);
    local_18 = 0;
    uStack_14 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 181332ad0 size=158 ############

void FUN_181332ad0(longlong param_1,longlong *param_2,undefined1 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  plVar1 = (longlong *)(param_1 + 0xb8);
  lVar2 = *param_2;
  if (*plVar1 != lVar2) {
    if (plVar1 != param_2) {
      *param_2 = 0;
      puVar3 = (undefined8 *)*plVar1;
      *plVar1 = lVar2;
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1,param_3,param_4,0xfffffffffffffffe);
      }
    }
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  puVar3 = (undefined8 *)*param_2;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  return;
}



############ FUN_ 1812ce6d0 size=95 ############

void FUN_1812ce6d0(longlong param_1,undefined4 param_2)

{
  char cStackX_13;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_18134a800(param_1,0x1005700,param_2);
  cStackX_13 = (char)((uint)param_2 >> 0x18);
  FUN_18134bd50(param_1,cStackX_13 == -1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1812d7f20 size=163 ############

ulonglong FUN_1812d7f20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x125) = 1;
  lVar5 = 0;
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(0,&local_18,1,param_4,0xfffffffffffffffe);
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xd0) + 0x180);
  if (lVar3 != 0) {
    lVar5 = *(longlong *)(lVar3 + 0x10);
  }
  uVar4 = 0;
  puVar1 = (uint *)(*(longlong *)(lVar5 + 0xc0) + 0x18);
  LOCK();
  uVar2 = *puVar1;
  if (uVar2 == 0) {
    *puVar1 = 1;
  }
  else {
    uVar4 = (ulonglong)uVar2;
  }
  UNLOCK();
  if ((uVar2 == 0) && (uVar4 = FUN_1812a6720(*(undefined8 *)(lVar5 + 0xc0)), (char)uVar4 == '\0')) {
    uVar4 = *(ulonglong *)(lVar5 + 0xc0);
    LOCK();
    *(undefined4 *)(uVar4 + 0x18) = 0;
    UNLOCK();
  }
  return uVar4;
}



############ FUN_ 1812e1d60 size=118 ############

void FUN_1812e1d60(longlong *param_1,char param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(char *)((longlong)param_1 + 0x1ec) == param_2) {
    return;
  }
  *(char *)((longlong)param_1 + 0x1ec) = param_2;
  if (*(code **)(*param_1 + 0xb0) == FUN_1812e1950) {
    FUN_1812e1780();
    uStack_10 = (undefined4)param_1[5];
    uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
    return;
  }
  (**(code **)(*param_1 + 0xb0))();
  return;
}



############ FUN_ 1812d7d90 size=384 ############

void FUN_1812d7d90(longlong param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  int iVar8;
  int iVar9;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(char *)(param_1 + 0x125) != '\0') {
    *(undefined1 *)(param_1 + 0x125) = 0;
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xd8));
    lVar3 = *(longlong *)(param_1 + 0x108);
    uVar7 = 0;
    iVar5 = 0;
    if (lVar3 != 0) {
      uVar6 = uVar7;
      if (*(char *)(param_1 + 0x126) == '\0') {
        uVar6 = (ulonglong)(uint)-*(int *)(lVar3 + 0x2c);
      }
      FUN_1812d6740(lVar3,uVar6);
    }
    lVar3 = *(longlong *)(param_1 + 0xd0);
    uVar6 = uVar7;
    if (*(longlong *)(lVar3 + 0x180) != 0) {
      uVar6 = *(ulonglong *)(*(longlong *)(lVar3 + 0x180) + 0x10);
    }
    if (uVar6 != 0) {
      FUN_18050ac50();
    }
    uStack_c = *(undefined4 *)(lVar3 + 0x2c);
    uStack_10 = *(undefined4 *)(lVar3 + 0x28);
    local_18 = 0;
    FUN_181342870(lVar3,&local_18,1);
    lVar3 = *(longlong *)(param_1 + 0x108);
    if (lVar3 == 0) {
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xd0) + 0x180);
      if (lVar3 != 0) {
        uVar7 = *(ulonglong *)(lVar3 + 0x10);
      }
      iVar5 = 0;
      iVar9 = 0;
      uVar1 = *(undefined4 *)(uVar7 + 0x24);
      uVar2 = *(undefined4 *)(uVar7 + 0x20);
    }
    else {
      if (*(char *)(param_1 + 0x126) == '\0') {
        iVar5 = *(int *)(lVar3 + 0x2c);
      }
      iVar9 = *(int *)(*(longlong *)(param_1 + 0xd0) + 0xf8);
      iVar8 = *(int *)(lVar3 + 0x38) + 0x32;
      lVar4 = *(longlong *)(*(longlong *)(param_1 + 0xd0) + 0x180);
      if (lVar4 != 0) {
        uVar7 = *(ulonglong *)(lVar4 + 0x10);
      }
      iVar5 = *(int *)(lVar3 + 0x30) - iVar5;
      if (iVar9 < iVar8) {
        iVar9 = iVar8;
      }
      uVar1 = *(undefined4 *)(uVar7 + 0x24);
      uVar2 = *(undefined4 *)(uVar7 + 0x20);
    }
    FUN_18134bfe0(uVar7,uVar2,uVar1,iVar9,iVar5);
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xd8));
  }
  return;
}



############ FUN_ 1812e8fb0 size=342 ############

void FUN_1812e8fb0(longlong *param_1,char param_2,undefined1 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  bool bVar4;
  char cVar5;
  longlong lVar6;
  longlong lVar7;
  bool bVar8;
  undefined8 *local_res8;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  if (param_1[0x39] != 0) {
    FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    puVar3 = (undefined8 *)param_1[0x39];
    lVar7 = 0;
    param_1[0x39] = 0;
    (**(code **)(*param_1 + 0x178))(param_1,puVar3);
    if ((param_2 == '\0') && (cVar5 = FUN_1812e9110(param_1,puVar3), cVar5 != '\0')) {
      bVar4 = true;
    }
    else {
      bVar4 = false;
    }
    if (puVar3 != (undefined8 *)0x0) {
      (**(code **)*puVar3)(puVar3,1);
    }
    uStack_1c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_20 = (undefined4)param_1[5];
    local_28 = 0;
    uStack_24 = 0;
    FUN_181342870(param_1,&local_28,1);
    if (bVar4) {
      (**(code **)(*param_1 + 0x160))(param_1);
    }
    puVar3 = local_res8;
    bVar8 = local_res8 != (undefined8 *)0x0;
    lVar6 = lVar7;
    if (bVar8) {
      lVar6 = local_res8[2];
    }
    if (lVar6 != 0) {
      FUN_181343150(param_1,0);
    }
    if (bVar4) {
      if (bVar8) {
        lVar7 = puVar3[2];
      }
      if (lVar7 != 0) {
        FUN_1812e8980(param_1);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 1804f5030 size=61 ############

void FUN_1804f5030(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + -0x98);
  uStack_c = *(undefined4 *)(param_1 + -0x94);
  local_18 = 0;
  FUN_181342870(param_1 + -0xc0,&local_18,1);
  return;
}



############ FUN_ 1812d6bd0 size=208 ############

void FUN_1812d6bd0(longlong *param_1,byte param_2,char param_3)

{
  byte bVar1;
  longlong lVar2;
  char cVar3;
  longlong *plVar4;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (((param_2 == 0) ||
      (*(code **)(*param_1 + 0x30) ==
       .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
       vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) ||
     (cVar3 = (**(code **)(*param_1 + 0x30))(), cVar3 != '\0')) {
    if (param_3 != '\0') {
      plVar4 = param_1;
      if (param_1[2] != 0) {
        plVar4 = (longlong *)FUN_1812d5e40();
      }
      FUN_1812d6cb0(plVar4,param_1);
    }
    bVar1 = *(byte *)(param_1 + 8);
    if (param_2 != (bVar1 & 1)) {
      lVar2 = param_1[1];
      *(byte *)(param_1 + 8) = (bVar1 ^ param_2) & 1 ^ bVar1;
      if (lVar2 != 0) {
        uStack_10 = *(undefined4 *)(lVar2 + 0x28);
        uStack_c = *(undefined4 *)(lVar2 + 0x2c);
        local_18 = 0;
        FUN_181342870(lVar2,&local_18,1);
      }
      (**(code **)(*param_1 + 0x70))(param_1,param_2);
    }
  }
  return;
}



############ FUN_ 1804f61e0 size=58 ############

void FUN_1804f61e0(longlong param_1)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = *(longlong *)(param_1 + 0x20);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 1804f8410 size=54 ############

void FUN_1804f8410(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812f40d0 size=123 ############

void FUN_1812f40d0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(longlong *)(param_1 + 0xd0) != 0) {
    FUN_1812f1620(*(longlong *)(param_1 + 0xd0),param_1 + 0xb0);
    *(undefined8 *)(param_1 + 0xd0) = 0;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
    (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0,0);
  }
  return;
}



############ FUN_ 1804fa880 size=167 ############

void FUN_1804fa880(longlong param_1,char param_2)

{
  longlong lVar1;
  char cVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((param_2 == '\0') || (*(char *)(param_1 + 0x134) == '\0')) {
    cVar2 = '\0';
  }
  else {
    cVar2 = '\x01';
  }
  if (*(char *)(param_1 + 0x140) != cVar2) {
    *(char *)(param_1 + 0x140) = cVar2;
    lVar1 = *(longlong *)(param_1 + 0x138);
    if (lVar1 != 0) {
      *(char *)(lVar1 + 0xc0) = cVar2;
      uStack_10 = *(undefined4 *)(lVar1 + 0x28);
      uStack_c = *(undefined4 *)(lVar1 + 0x2c);
      local_18 = 0;
      FUN_181342870(lVar1,&local_18,1);
    }
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 1804fd7a0 size=219 ############

void FUN_1804fd7a0(longlong param_1,int param_2)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((*(int *)(param_1 + 0x148) == 0) && (*(char *)(param_1 + 0x139) == '\0')) {
    *(undefined4 *)(param_1 + 0x148) = 0;
  }
  else {
    iVar2 = *(int *)(param_1 + 0x148) + param_2;
    *(int *)(param_1 + 0x148) = iVar2;
    if (param_2 < 0) {
      if (iVar2 < 0) {
        iVar2 = 0;
      }
      *(int *)(param_1 + 0x148) = iVar2;
    }
    else if (0 < param_2) {
      lVar4 = FUN_18134adf0();
      pcVar1 = *(code **)(*(longlong *)(lVar4 + 0x40) + 0x80);
      if (pcVar1 == FUN_18130fd40) {
        iVar2 = 2;
      }
      else {
        iVar2 = (*pcVar1)(lVar4 + 0x40);
      }
      iVar2 = (*(int *)(param_1 + 0x144) - *(int *)(param_1 + 0x134)) + iVar2;
      iVar3 = *(int *)(param_1 + 0x148);
      if (iVar2 < *(int *)(param_1 + 0x148)) {
        iVar3 = iVar2;
      }
      *(int *)(param_1 + 0x148) = iVar3;
    }
    FUN_1804fd880(param_1);
  }
  FUN_1804fd6e0(param_1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1804fef80 size=266 ############

undefined8 * FUN_1804fef80(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  undefined4 uVar5;
  longlong *plVar6;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *param_1 = juce::PopupMenu::HelperClasses::ItemComponent::vftable;
  lVar2 = param_1[0x27];
  if (lVar2 != 0) {
    *(undefined8 *)(lVar2 + 200) = 0;
    uStack_c = *(undefined4 *)(lVar2 + 0x2c);
    uStack_10 = *(undefined4 *)(lVar2 + 0x28);
    local_18 = 0;
    FUN_181342870(lVar2,&local_18,1,param_4,0xfffffffffffffffe);
  }
  plVar3 = (longlong *)param_1[8];
  plVar6 = plVar3;
  do {
    if (plVar6 == plVar3 + *(int *)((longlong)param_1 + 0x4c)) {
      uVar5 = 0xffffffff;
LAB_1804ff018:
      FUN_181343a90(param_1,uVar5,1);
      puVar4 = (undefined8 *)param_1[0x27];
      if (puVar4 != (undefined8 *)0x0) {
        piVar1 = (int *)(puVar4 + 0x17);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      FUN_1804d80a0(param_1 + 0x16);
      FUN_18134caa0(param_1);
      if ((param_2 & 1) == 0) {
        return param_1;
      }
                    /* WARNING: Subroutine does not return */
      free(param_1);
    }
    if (param_1[0x27] == *plVar6) {
      uVar5 = (undefined4)((longlong)plVar6 - (longlong)plVar3 >> 3);
      goto LAB_1804ff018;
    }
    plVar6 = plVar6 + 1;
  } while( true );
}



############ FUN_ 1804ffdf0 size=281 ############

void FUN_1804ffdf0(longlong param_1,undefined4 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong *plVar5;
  uint uVar6;
  ulonglong uVar8;
  int iVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  ulonglong uVar7;
  
  plVar5 = *(longlong **)(param_1 + 0xb0);
  uVar11 = 0;
  uVar6 = 0;
  plVar1 = plVar5 + *(int *)(param_1 + 0xbc);
  uVar7 = uVar11;
  for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
    lVar2 = *plVar5;
    iVar9 = *(int *)(lVar2 + 0xc0);
    if (*(char *)(lVar2 + 0xc4) != '\0') {
      plVar4 = *(longlong **)(lVar2 + 0xb0);
      uVar10 = (ulonglong)((longlong)(plVar4 + *(int *)(lVar2 + 0xbc)) + (7 - (longlong)plVar4)) >>
               3;
      if (plVar4 + *(int *)(lVar2 + 0xbc) < plVar4) {
        uVar10 = uVar11;
      }
      uVar8 = uVar11;
      if (uVar10 != 0) {
        do {
          lVar3 = *plVar4;
          plVar4 = plVar4 + 1;
          uVar8 = uVar8 + 1;
          iVar9 = iVar9 + *(int *)(lVar3 + 0xc0);
        } while (uVar8 != uVar10);
      }
    }
    FUN_18134bfe0(lVar2,0,uVar7,param_2,iVar9);
    uVar6 = *(int *)(lVar2 + 0x2c) + *(int *)(lVar2 + 0x24);
    uVar7 = (ulonglong)uVar6;
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),param_2,
                uVar6);
  uStack_20 = *(undefined4 *)(param_1 + 0x28);
  uStack_1c = *(undefined4 *)(param_1 + 0x2c);
  local_28 = 0;
  FUN_181342870(param_1,&local_28,1);
  return;
}



############ FUN_ 180500080 size=189 ############

void FUN_180500080(longlong param_1)

{
  undefined4 *puVar1;
  undefined1 local_res8 [32];
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(param_1 + 0x210),local_res8,0x100e401,0);
  FUN_18134a800(param_1,0x1000280,*puVar1);
  puVar1 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(param_1 + 0x210),local_res8,0x100e403,0);
  FUN_18134a800(param_1,0x1000282,*puVar1);
  puVar1 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(param_1 + 0x210),local_res8,0x100e402,0);
  FUN_18134a800(param_1,0x1000281,*puVar1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1805014d0 size=648 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805014d0(longlong param_1,double param_2,undefined4 param_3)

{
  longlong *plVar1;
  char cVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  undefined1 auStack_a8 [32];
  double local_88 [2];
  undefined **local_78;
  double dStack_70;
  longlong *local_68;
  undefined1 local_60 [8];
  ulonglong local_58;
  
  local_88[1] = -NAN;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_a8;
  if (*(longlong *)(param_1 + 0x178) == 0) {
    dVar3 = *(double *)(param_1 + 0xa8);
    if (0.0 < dVar3) {
      dVar5 = *(double *)(param_1 + 0x98);
      dVar4 = floor((param_2 - dVar5) / dVar3 + DAT_1824c4050);
      param_2 = dVar4 * dVar3 + dVar5;
    }
    dVar3 = *(double *)(param_1 + 0x98);
    if (((dVar3 < param_2) && (dVar5 = *(double *)(param_1 + 0xa0), dVar3 < dVar5)) &&
       (dVar3 = dVar5, param_2 <= dVar5)) {
      dVar3 = param_2;
    }
  }
  else {
    local_68 = *(longlong **)(param_1 + 0xa0);
    local_78 = *(undefined ***)(param_1 + 0x98);
    plVar1 = *(longlong **)(param_1 + 0x178);
    local_88[0] = param_2;
    if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    dVar3 = (double)(**(code **)(*plVar1 + 0x10))(plVar1,&local_78,&local_68,local_88);
  }
  if (*(int *)(param_1 + 0x20) - 0xbU < 2) {
    (**(code **)(**(longlong **)(param_1 + 0x68) + 8))(*(longlong **)(param_1 + 0x68),&local_68);
    (**(code **)(**(longlong **)(param_1 + 0x50) + 8))(*(longlong **)(param_1 + 0x50),&local_78);
    dVar4 = (double)(**(code **)(*local_68 + 0x18))(local_68,local_60);
    dVar5 = (double)(**(code **)(*local_78 + 0x18))(local_78,&dStack_70);
    if ((dVar5 <= dVar3) && (dVar5 = dVar4, dVar3 <= dVar4)) {
      dVar5 = dVar3;
    }
    dVar3 = dVar5;
    (**(code **)(*local_78 + 0xb0))(local_78,&dStack_70);
    (**(code **)(*local_68 + 0xb0))(local_68,local_60);
  }
  if (dVar3 != *(double *)(param_1 + 0x80)) {
    if (*(longlong *)(param_1 + 0x250) != 0) {
      FUN_1812e8fb0(*(longlong *)(param_1 + 0x250),1);
    }
    *(double *)(param_1 + 0x80) = dVar3;
    local_78 = &PTR_vftable_18262b4d8;
    dStack_70 = dVar3;
    (**(code **)(**(longlong **)(param_1 + 0x38) + 8))(*(longlong **)(param_1 + 0x38),&local_68);
    cVar2 = (**(code **)(*local_68 + 0xc0))(local_68,local_60,&dStack_70,local_78);
    (**(code **)(*local_68 + 0xb0))(local_68,local_60);
    (**(code **)(*local_78 + 0xb0))(local_78,&dStack_70);
    if (cVar2 == '\0') {
      local_78 = &PTR_vftable_18262b4d8;
      dStack_70 = dVar3;
      FUN_1813516e0(param_1 + 0x38,&local_78);
      (**(code **)(*local_78 + 0xb0))(local_78,&dStack_70);
    }
    FUN_180502100(param_1);
    dStack_70 = *(double *)(*(longlong *)(param_1 + 0x18) + 0x28);
    local_78 = (undefined **)0x0;
    FUN_181342870(*(longlong *)(param_1 + 0x18),&local_78,1);
    FUN_180504680(param_1,dVar3);
    FUN_180501db0(param_1,param_3);
  }
}



############ FUN_ 180504680 size=245 ############

void FUN_180504680(longlong param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  uint *puVar6;
  longlong local_res8;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(longlong *)(param_1 + 0x268) != 0) {
    plVar5 = (longlong *)
             (**(code **)(**(longlong **)(param_1 + 0x18) + 0x178))
                       (*(longlong **)(param_1 + 0x18),&local_res8,param_2,param_4,
                        0xfffffffffffffffe);
    lVar4 = *(longlong *)(param_1 + 0x268);
    if ((*(uint *)(*plVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*plVar5 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar3 = *(longlong *)(lVar4 + 0x110);
    *(longlong *)(lVar4 + 0x110) = *plVar5;
    UNLOCK();
    puVar6 = (uint *)(lVar3 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    FUN_1812c8cf0(lVar4,*(undefined8 *)(lVar4 + 0x100));
    uStack_c = *(undefined4 *)(lVar4 + 0x2c);
    uStack_10 = *(undefined4 *)(lVar4 + 0x28);
    local_18 = 0;
    uStack_14 = 0;
    FUN_181342870(lVar4,&local_18,1);
    puVar6 = (uint *)(local_res8 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  return;
}



############ FUN_ 180501780 size=623 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180501780(longlong param_1,double param_2,undefined4 param_3,char param_4)

{
  longlong *plVar1;
  double dVar2;
  bool bVar3;
  bool bVar4;
  double dVar5;
  double dVar6;
  undefined1 auStack_a8 [32];
  double local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined **local_68;
  double dStack_60;
  ulonglong local_58;
  
  local_78 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_a8;
  bVar4 = false;
  local_88 = (double)((ulonglong)local_88 & 0xffffffff00000000);
  if (*(longlong *)(param_1 + 0x178) == 0) {
    dVar5 = *(double *)(param_1 + 0xa8);
    if (0.0 < dVar5) {
      dVar6 = *(double *)(param_1 + 0x98);
      dVar2 = floor((param_2 - dVar6) / dVar5 + DAT_1824c4050);
      param_2 = dVar2 * dVar5 + dVar6;
    }
    dVar5 = *(double *)(param_1 + 0x98);
    if (((dVar5 < param_2) && (dVar6 = *(double *)(param_1 + 0xa0), dVar5 < dVar6)) &&
       (dVar5 = dVar6, param_2 <= dVar6)) {
      dVar5 = param_2;
    }
  }
  else {
    local_80 = *(undefined8 *)(param_1 + 0xa0);
    local_68 = *(undefined ***)(param_1 + 0x98);
    plVar1 = *(longlong **)(param_1 + 0x178);
    local_88 = param_2;
    if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    dVar5 = (double)(**(code **)(*plVar1 + 0x10))(plVar1,&local_68,&local_80,&local_88);
  }
  if (1 < *(int *)(param_1 + 0x20) - 9U) {
    if ((param_4 != '\0') &&
       (*(double *)(param_1 + 0x80) <= dVar5 && dVar5 != *(double *)(param_1 + 0x80))) {
      FUN_1805014d0(param_1,dVar5,param_3);
    }
    if (*(double *)(param_1 + 0x80) <= dVar5) {
      dVar5 = *(double *)(param_1 + 0x80);
    }
    goto LAB_18050195a;
  }
  if (param_4 == '\0') {
LAB_1805018f4:
    bVar3 = false;
  }
  else {
    (**(code **)(**(longlong **)(param_1 + 0x68) + 8))(*(longlong **)(param_1 + 0x68),&local_68);
    bVar4 = true;
    dVar6 = (double)(**(code **)(*local_68 + 0x18))(local_68,&dStack_60);
    if (dVar5 <= dVar6) goto LAB_1805018f4;
    bVar3 = true;
  }
  if (bVar4) {
    (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
  }
  if (bVar3) {
    FUN_180501a10(param_1,dVar5,param_3,0);
  }
  (**(code **)(**(longlong **)(param_1 + 0x68) + 8))(*(longlong **)(param_1 + 0x68),&local_68);
  dVar6 = (double)(**(code **)(*local_68 + 0x18))(local_68,&dStack_60);
  if (dVar6 <= dVar5) {
    dVar5 = dVar6;
  }
  (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
LAB_18050195a:
  if (*(double *)(param_1 + 0x88) != dVar5) {
    *(double *)(param_1 + 0x88) = dVar5;
    local_68 = &PTR_vftable_18262b4d8;
    dStack_60 = dVar5;
    FUN_1813516e0(param_1 + 0x50,&local_68);
    (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
    dStack_60 = *(double *)(*(longlong *)(param_1 + 0x18) + 0x28);
    local_68 = (undefined **)0x0;
    FUN_181342870(*(longlong *)(param_1 + 0x18),&local_68,1);
    FUN_180504680(param_1,dVar5);
    FUN_180501db0(param_1,param_3);
  }
}



############ FUN_ 180501a10 size=678 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180501a10(longlong param_1,double param_2,undefined4 param_3,char param_4)

{
  longlong *plVar1;
  double dVar2;
  bool bVar3;
  bool bVar4;
  double dVar5;
  double dVar6;
  undefined8 uVar7;
  undefined1 auStack_a8 [32];
  double local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined **local_68;
  double dStack_60;
  ulonglong local_58;
  
  local_78 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_a8;
  bVar4 = false;
  local_88 = (double)((ulonglong)local_88 & 0xffffffff00000000);
  if (*(longlong *)(param_1 + 0x178) == 0) {
    dVar5 = *(double *)(param_1 + 0xa8);
    if (0.0 < dVar5) {
      dVar6 = *(double *)(param_1 + 0x98);
      dVar2 = floor((param_2 - dVar6) / dVar5 + DAT_1824c4050);
      param_2 = dVar2 * dVar5 + dVar6;
    }
    dVar5 = *(double *)(param_1 + 0x98);
    if (((dVar5 < param_2) && (dVar6 = *(double *)(param_1 + 0xa0), dVar5 < dVar6)) &&
       (dVar5 = dVar6, param_2 <= dVar6)) {
      dVar5 = param_2;
    }
  }
  else {
    local_80 = *(undefined8 *)(param_1 + 0xa0);
    local_68 = *(undefined ***)(param_1 + 0x98);
    plVar1 = *(longlong **)(param_1 + 0x178);
    local_88 = param_2;
    if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    dVar5 = (double)(**(code **)(*plVar1 + 0x10))(plVar1,&local_68,&local_80,&local_88);
  }
  dStack_60 = dVar5;
  if (1 < *(int *)(param_1 + 0x20) - 9U) {
    if ((param_4 != '\0') && (dVar5 < *(double *)(param_1 + 0x80))) {
      FUN_1805014d0(param_1,dVar5,param_3);
    }
    if (dVar5 <= *(double *)(param_1 + 0x80)) {
      dStack_60 = *(double *)(param_1 + 0x80);
    }
    goto LAB_180501be9;
  }
  if (param_4 == '\0') {
LAB_180501b85:
    bVar3 = false;
  }
  else {
    (**(code **)(**(longlong **)(param_1 + 0x50) + 8))(*(longlong **)(param_1 + 0x50),&local_68);
    bVar4 = true;
    dVar6 = (double)(**(code **)(*local_68 + 0x18))(local_68,&dStack_60);
    if (dVar6 <= dVar5) goto LAB_180501b85;
    bVar3 = true;
  }
  if (bVar4) {
    (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
  }
  if (bVar3) {
    FUN_180501780(param_1,dVar5,param_3,0);
  }
  (**(code **)(**(longlong **)(param_1 + 0x50) + 8))(*(longlong **)(param_1 + 0x50),&local_68);
  dVar6 = (double)(**(code **)(*local_68 + 0x18))(local_68,&dStack_60);
  if (dVar5 <= dVar6) {
    dStack_60 = dVar6;
  }
  (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
LAB_180501be9:
  if (*(double *)(param_1 + 0x90) != dStack_60) {
    *(double *)(param_1 + 0x90) = dStack_60;
    local_68 = &PTR_vftable_18262b4d8;
    FUN_1813516e0(param_1 + 0x68,&local_68);
    (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
    dStack_60 = *(double *)(*(longlong *)(param_1 + 0x18) + 0x28);
    local_68 = (undefined **)0x0;
    FUN_181342870(*(longlong *)(param_1 + 0x18),&local_68,1);
    (**(code **)(**(longlong **)(param_1 + 0x68) + 8))(*(longlong **)(param_1 + 0x68),&local_68);
    uVar7 = (**(code **)(*local_68 + 0x18))(local_68,&dStack_60);
    FUN_180504680(param_1,uVar7);
    (**(code **)(*local_68 + 0xb0))(local_68,&dStack_60);
    FUN_180501db0(param_1,param_3);
  }
}



############ FUN_ 181341c80 size=64 ############

void FUN_181341c80(longlong param_1,longlong param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(longlong *)(param_1 + 0x60) != param_2) {
    *(longlong *)(param_1 + 0x60) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 1805030d0 size=223 ############

void FUN_1805030d0(int param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (param_2 != 0) {
    if (param_1 == 1) {
      *(bool *)(*(longlong *)(param_2 + 0x200) + 0x22e) =
           *(char *)(*(longlong *)(param_2 + 0x200) + 0x22e) == '\0';
      return;
    }
    if (param_1 == 2) {
      lVar1 = *(longlong *)(param_2 + 0x200);
      if (*(int *)(lVar1 + 0x20) != 4) {
        lVar2 = *(longlong *)(lVar1 + 0x18);
        *(undefined4 *)(lVar1 + 0x20) = 4;
        uStack_10 = *(undefined4 *)(lVar2 + 0x28);
        uStack_c = *(undefined4 *)(lVar2 + 0x2c);
        local_18 = 0;
        FUN_181342870(lVar2,&local_18,1);
        (**(code **)(**(longlong **)(lVar1 + 0x18) + 0xa0))();
      }
    }
    else {
      if (param_1 == 3) {
        FUN_1812e6410(param_2,5);
        return;
      }
      if (param_1 == 4) {
        FUN_1812e6410(param_2,6);
        return;
      }
      if (param_1 == 5) {
        FUN_1812e6410(param_2,7);
        return;
      }
    }
  }
  return;
}



############ FUN_ 1812e6410 size=95 ############

void FUN_1812e6410(longlong param_1,int param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = *(longlong *)(param_1 + 0x200);
  if (*(int *)(lVar1 + 0x20) != param_2) {
    lVar2 = *(longlong *)(lVar1 + 0x18);
    *(int *)(lVar1 + 0x20) = param_2;
    uStack_10 = *(undefined4 *)(lVar2 + 0x28);
    uStack_c = *(undefined4 *)(lVar2 + 0x2c);
    local_18 = 0;
    FUN_181342870(lVar2,&local_18,1);
                    /* WARNING: Could not recover jumptable at 0x0001812e6462. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(**(longlong **)(lVar1 + 0x18) + 0xa0))();
    return;
  }
  return;
}



############ FUN_ 1812c9050 size=349 ############

undefined8 *
FUN_1812c9050(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined4 local_res10;
  undefined8 local_18;
  undefined8 uStack_10;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::BubbleComponent::vftable;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  *(undefined4 *)(param_1 + 0x19) = 0xf;
  puVar1 = param_1 + 0x1a;
  *puVar1 = juce::DropShadowEffect::vftable;
  *(undefined4 *)(param_1 + 0x1b) = 0x90000000;
  *(undefined8 *)((longlong)param_1 + 0xdc) = 4;
  *(undefined4 *)((longlong)param_1 + 0xe4) = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  local_res10 = CONCAT13(0x59,(int3)DAT_18262b5b8);
  local_18 = CONCAT44(5,local_res10);
  param_1[0x1b] = local_18;
  param_1[0x1c] = 0;
  if ((undefined8 *)param_1[0xc] != puVar1) {
    param_1[0xc] = puVar1;
    uStack_10 = param_1[5];
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1,param_4,0xfffffffffffffffe);
  }
  return param_1;
}



############ FUN_ 180505060 size=613 ############

void FUN_180505060(longlong param_1)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iStack_24;
  int iStack_1c;
  undefined8 local_18;
  int iStack_10;
  int iStack_c;
  
  iVar4 = *(int *)(param_1 + 0x1f0);
  iStack_24 = *(int *)(param_1 + 500);
  iVar5 = *(int *)(param_1 + 0x1f8);
  iVar1 = *(int *)(param_1 + 0x1fc);
  iVar3 = 0;
  if (*(int *)(param_1 + 0x208) - 1U < 2) {
    iVar4 = iVar4 + 2;
    if (0 < iVar5 + -4) {
      iVar3 = iVar5 + -4;
    }
    iStack_1c = 0;
    if (0 < iVar1) {
      iStack_1c = iVar1;
    }
  }
  else {
    iStack_24 = iStack_24 + 2;
    if (0 < iVar5) {
      iVar3 = iVar5;
    }
    iStack_1c = 0;
    if (0 < iVar1 + -4) {
      iStack_1c = iVar1 + -4;
    }
  }
  *(bool *)(param_1 + 0x230) = iStack_1c < iVar3;
  if (iStack_1c < iVar3) {
    local_18 = CONCAT44(iStack_24,iVar4);
    iStack_10 = iVar3 / 2;
    if (iVar3 < iVar3 / 2) {
      iStack_10 = iVar3;
    }
    iVar5 = iVar4 + iStack_10;
    iVar3 = iVar3 - iStack_10;
    iStack_c = iStack_1c;
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x260),iVar4,iStack_24,iStack_10,iStack_1c);
    lVar2 = *(longlong *)(param_1 + 0x260);
    if (*(int *)(lVar2 + 0x198) != 2) {
      *(undefined4 *)(lVar2 + 0x198) = 2;
      iStack_10 = *(int *)(lVar2 + 0x28);
      iStack_c = *(int *)(lVar2 + 0x2c);
      local_18 = 0;
      FUN_181342870(lVar2,&local_18,1);
    }
    lVar2 = *(longlong *)(param_1 + 600);
    iVar4 = iVar5;
    if (*(int *)(lVar2 + 0x198) == 1) goto LAB_180505285;
    *(undefined4 *)(lVar2 + 0x198) = 1;
  }
  else {
    iStack_c = iStack_1c / 2;
    if (iStack_1c < iStack_1c / 2) {
      iStack_c = iStack_1c;
    }
    iVar5 = (iStack_24 - iStack_c) + iStack_1c;
    iStack_1c = iStack_1c - iStack_c;
    local_18 = CONCAT44(iVar5,iVar4);
    iStack_10 = iVar3;
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x260),iVar4,iVar5,iVar3,iStack_c);
    lVar2 = *(longlong *)(param_1 + 0x260);
    if (*(int *)(lVar2 + 0x198) != 4) {
      *(undefined4 *)(lVar2 + 0x198) = 4;
      iStack_10 = *(int *)(lVar2 + 0x28);
      iStack_c = *(int *)(lVar2 + 0x2c);
      local_18 = 0;
      FUN_181342870(lVar2,&local_18,1);
    }
    lVar2 = *(longlong *)(param_1 + 600);
    if (*(int *)(lVar2 + 0x198) == 8) goto LAB_180505285;
    *(undefined4 *)(lVar2 + 0x198) = 8;
  }
  iStack_10 = *(int *)(lVar2 + 0x28);
  iStack_c = *(int *)(lVar2 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
LAB_180505285:
  FUN_18134bfe0(*(undefined8 *)(param_1 + 600),iVar4,iStack_24,iVar3,iStack_1c);
  return;
}



############ FUN_ 18050b220 size=447 ############

void FUN_18050b220(longlong param_1,longlong param_2,uint param_3)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  longlong *plVar7;
  longlong *plVar8;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  if ((param_3 & 1) != 0) {
    lVar1 = *(longlong *)(param_1 + 200);
    if ((*(longlong *)(lVar1 + 0x108) != 0) &&
       (lVar6 = FUN_1812d5b00(*(longlong *)(lVar1 + 0x108),0), lVar6 != 0)) {
      plVar8 = (longlong *)0x0;
      if (*(longlong *)(lVar1 + 0x108) == 0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_1812d5bf0(*(longlong *)(lVar1 + 0x108),0xffffffff);
      }
      plVar7 = plVar8;
      if (*(longlong *)(lVar1 + 0x108) != 0) {
        plVar7 = (longlong *)FUN_1812d5b00(*(longlong *)(lVar1 + 0x108),iVar3 + -1);
      }
      iVar4 = FUN_1812d5a10(lVar6);
      iVar5 = FUN_1812d5a10(plVar7);
      iVar3 = iVar5;
      if (iVar5 < iVar4) {
        iVar3 = iVar4;
        iVar4 = iVar5;
      }
      iVar5 = FUN_1812d5a10(param_2);
      if (iVar5 < iVar3) {
        iVar3 = iVar4;
      }
      iVar4 = iVar5;
      if (iVar3 < iVar5) {
        iVar4 = iVar3;
        iVar3 = iVar5;
      }
      for (; iVar4 <= iVar3; iVar4 = iVar4 + 1) {
        iVar5 = iVar4;
        if (*(char *)(*(longlong *)(param_1 + 200) + 0x126) == '\0') {
          iVar5 = iVar4 + 1;
        }
        plVar7 = plVar8;
        if ((*(longlong *)(*(longlong *)(param_1 + 200) + 0x108) != 0) && (-1 < iVar5)) {
          plVar7 = (longlong *)FUN_1812d5d00();
        }
        if (((*(code **)(*plVar7 + 0x30) ==
              .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
              vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) ||
            (cVar2 = (**(code **)(*plVar7 + 0x30))(plVar7), cVar2 != '\0')) &&
           ((*(byte *)(plVar7 + 8) & 1) == 0)) {
          lVar1 = plVar7[1];
          *(byte *)(plVar7 + 8) = *(byte *)(plVar7 + 8) | 1;
          if (lVar1 != 0) {
            uStack_20 = *(undefined4 *)(lVar1 + 0x28);
            uStack_1c = *(undefined4 *)(lVar1 + 0x2c);
            local_28 = 0;
            uStack_24 = 0;
            FUN_181342870(lVar1,&local_28,1);
          }
          (**(code **)(*plVar7 + 0x70))(plVar7,1);
        }
      }
      return;
    }
  }
  param_3 = param_3 >> 1;
  if (((param_3 & 1) == 0) || ((*(byte *)(param_2 + 0x40) & 1) == 0)) {
    FUN_1812d6bd0(param_2,1,(param_3 & 1) == 0);
  }
  else {
    FUN_1812d6bd0(param_2,0,(param_3 & 1) == 0);
  }
  return;
}



############ FUN_ 18050b5e0 size=135 ############

void FUN_18050b5e0(longlong param_1,char param_2)

{
  longlong *plVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  plVar1 = (longlong *)0x0;
  if (*(longlong *)(param_1 + 0x180) != 0) {
    plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x180) + 0x10);
  }
  if (plVar1 != (longlong *)0x0) {
    if (param_2 == '\0') {
      FUN_18050ac50();
    }
    else if (*(code **)(*plVar1 + 0x108) == FUN_18050b110) {
      FUN_1812d7f20(plVar1[0x19]);
    }
    else {
      (**(code **)(*plVar1 + 0x108))();
    }
  }
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 18050eaa0 size=283 ############

void FUN_18050eaa0(longlong param_1,float param_2)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar2 = 0;
  uVar3 = (uint)(param_2 * DAT_1824c4548);
  if ((-1 < (int)uVar3) && (uVar2 = uVar3, 0xff < (int)uVar3)) {
    uVar2 = 0xff;
  }
  lVar1 = *(longlong *)(param_1 + 8);
  if ((*(byte *)(lVar1 + 0xa8) & 4) == 0) {
    *(char *)(param_1 + 0xd8) = (char)uVar2;
    uStack_10 = *(undefined4 *)(lVar1 + 0x28);
    uStack_c = *(undefined4 *)(lVar1 + 0x2c);
    local_18 = 0;
    FUN_181342870(lVar1,&local_18,1);
    return;
  }
  if (DAT_1824c3ea4 <= param_2) {
    uVar2 = GetWindowLongW(*(HWND *)(param_1 + 0x88),-0x14);
    SetWindowLongW(*(HWND *)(param_1 + 0x88),-0x14,uVar2 & 0xfff7ffff);
                    /* WARNING: Could not recover jumptable at 0x00018050eb78. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    RedrawWindow(*(undefined8 *)(param_1 + 0x88),0,0,0x485);
    return;
  }
  uVar3 = GetWindowLongW(*(HWND *)(param_1 + 0x88),-0x14);
  SetWindowLongW(*(HWND *)(param_1 + 0x88),-0x14,uVar3 | 0x80000);
                    /* WARNING: Could not recover jumptable at 0x00018050eb36. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  SetLayeredWindowAttributes(*(undefined8 *)(param_1 + 0x88),0,uVar2 & 0xff,2);
  return;
}



############ FUN_ 1812e1f00 size=186 ############

undefined8 FUN_1812e1f00(longlong param_1,char param_2)

{
  char cVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((*(char *)(param_1 + 0x1ec) == '\0') && ((*(byte *)(param_1 + 0xa9) & 0x10) == 0)) {
    if ((*(longlong *)(param_1 + 0x18) != 0) && (cVar1 = FUN_18133eaa0(), cVar1 == '\0')) {
      return 0;
    }
    FUN_1812e1fc0(param_1);
    if (param_2 == '\0') {
      cVar1 = FUN_1813523e0(param_1 + 0x200);
    }
    else {
      cVar1 = FUN_181352510();
    }
    if (cVar1 != '\0') {
      FUN_1812e0240(param_1);
      uStack_10 = *(undefined4 *)(param_1 + 0x28);
      uStack_c = *(undefined4 *)(param_1 + 0x2c);
      local_18 = 0;
      FUN_181342870(param_1,&local_18,1);
      FUN_1812e0e60(param_1);
      return 1;
    }
  }
  return 0;
}



############ FUN_ 180559940 size=270 ############

void FUN_180559940(int param_1,longlong param_2)

{
  longlong *plVar1;
  undefined4 *puVar2;
  int *piVar3;
  int iVar4;
  undefined4 local_res10;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (param_2 != 0) {
    if (param_1 == 1) {
      puVar2 = (undefined4 *)
               (**(code **)(**(longlong **)(param_2 + 0xb0) + 0x160))
                         (*(longlong **)(param_2 + 0xb0),&local_res10,
                          *(undefined4 *)(param_2 + 0xb8));
      FUN_1813bf680(*(undefined8 *)(param_2 + 0xb0),*puVar2);
      return;
    }
    if (param_1 == 2) {
      plVar1 = *(longlong **)(param_2 + 0xb0);
      if ((*(byte *)(plVar1 + 0x28) & 1) == 0) {
        local_res10._0_3_ = (undefined3)(int)plVar1[0x1d];
        local_res10 = CONCAT13(0xff,(undefined3)local_res10);
        iVar4 = local_res10;
      }
      else {
        iVar4 = (int)plVar1[0x1d];
      }
      piVar3 = (int *)(**(code **)(*plVar1 + 0x160))
                                (plVar1,&local_res10,*(undefined4 *)(param_2 + 0xb8));
      if (*piVar3 != iVar4) {
        plVar1 = *(longlong **)(param_2 + 0xb0);
        local_res10 = (int)plVar1[0x1d];
        if ((*(byte *)(plVar1 + 0x28) & 1) == 0) {
          local_res10 = CONCAT13(0xff,(undefined3)local_res10);
        }
        (**(code **)(*plVar1 + 0x168))(plVar1,*(undefined4 *)(param_2 + 0xb8),&local_res10);
        uStack_10 = *(undefined4 *)(param_2 + 0x28);
        uStack_c = *(undefined4 *)(param_2 + 0x2c);
        local_18 = 0;
        FUN_181342870(param_2,&local_18,1);
      }
    }
  }
  return;
}



############ FUN_ 1813bf2d0 size=433 ############

ulonglong FUN_1813bf2d0(longlong param_1)

{
  int *piVar1;
  uint *puVar2;
  int iVar3;
  uint uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  if (*(longlong *)(param_1 + 0xf8) != 0) {
    FUN_1805014d0(*(undefined8 *)(*(longlong *)(param_1 + 0xf8) + 0x200),
                  (double)*(byte *)(param_1 + 0xea),1);
    FUN_1805014d0(*(undefined8 *)(*(longlong *)(param_1 + 0x100) + 0x200),
                  (double)*(byte *)(param_1 + 0xe9),1);
    FUN_1805014d0(*(undefined8 *)(*(longlong *)(param_1 + 0x108) + 0x200),
                  (double)*(byte *)(param_1 + 0xe8),1);
    FUN_1805014d0(*(undefined8 *)(*(longlong *)(param_1 + 0x110) + 0x200),
                  (double)*(byte *)(param_1 + 0xeb),1);
  }
  lVar5 = *(longlong *)(param_1 + 0x118);
  if (lVar5 != 0) {
    if (*(float *)(lVar5 + 0xd0) != **(float **)(lVar5 + 0xb8)) {
      *(float *)(lVar5 + 0xd0) = **(float **)(lVar5 + 0xb8);
      puVar6 = *(undefined8 **)(lVar5 + 0xd8);
      *(undefined8 *)(lVar5 + 0xd8) = 0;
      if (puVar6 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar6 + 1);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*puVar6)(puVar6,1);
        }
      }
      uStack_20 = *(undefined4 *)(lVar5 + 0x28);
      uStack_1c = *(undefined4 *)(lVar5 + 0x2c);
      local_28 = 0;
      uStack_24 = 0;
      FUN_181342870(lVar5,&local_28,1);
    }
    FUN_180559470(lVar5);
    (**(code **)(**(longlong **)(param_1 + 0x120) + 0x108))();
  }
  if (*(longlong *)(param_1 + 0x128) != 0) {
    FUN_180559a50();
  }
  uVar7 = (ulonglong)*(byte *)(param_1 + 0xe0);
  if (*(byte *)(param_1 + 0xe0) != 0) {
    uVar7 = 0;
    puVar2 = (uint *)(*(longlong *)(param_1 + 0xc0) + 0x18);
    LOCK();
    uVar4 = *puVar2;
    if (uVar4 == 0) {
      *puVar2 = 1;
    }
    else {
      uVar7 = (ulonglong)uVar4;
    }
    UNLOCK();
    if ((uVar4 == 0) &&
       (uVar7 = FUN_1812a6720(*(undefined8 *)(param_1 + 0xc0)), (char)uVar7 == '\0')) {
      uVar7 = *(ulonglong *)(param_1 + 0xc0);
      LOCK();
      *(undefined4 *)(uVar7 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar7;
}



############ FUN_ 180559a50 size=555 ############

void FUN_180559a50(longlong param_1)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  uint *puVar5;
  int iVar6;
  float fVar7;
  undefined4 local_res8;
  undefined4 local_res10;
  undefined4 local_res18 [2];
  uint local_res20;
  longlong local_68;
  longlong local_60 [3];
  undefined8 local_48;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  local_60[1] = 0xfffffffffffffffe;
  lVar2 = *(longlong *)(param_1 + 0xb0);
  if ((*(byte *)(lVar2 + 0x140) & 1) == 0) {
    local_res10 = CONCAT13(0xff,(int3)*(undefined4 *)(lVar2 + 0xe8));
    local_res20 = local_res10;
  }
  else {
    local_res20 = *(uint *)(lVar2 + 0xe8);
  }
  if (*(uint *)(param_1 + 0xb8) != local_res20) {
    *(uint *)(param_1 + 0xb8) = local_res20;
    uVar1 = DAT_18262b708 >> 0x18;
    local_res8 = local_res20;
    if (uVar1 != 0) {
      iVar4 = 0xff - (local_res20 >> 0x18);
      iVar6 = 0xff - ((int)((0xff - uVar1) * iVar4) >> 8);
      if (iVar6 < 1) {
        local_res8 = DAT_18262b708;
      }
      else {
        iVar4 = (int)(iVar4 * uVar1) / iVar6;
        local_res8 = CONCAT13((char)iVar6,
                              CONCAT12((char)(((DAT_18262b708 >> 0x10 & 0xff) -
                                              (local_res20 >> 0x10 & 0xff)) * iVar4 >> 8) +
                                       (char)(local_res20 >> 0x10),
                                       CONCAT11((char)(((DAT_18262b708 >> 8 & 0xff) -
                                                       (local_res20 >> 8 & 0xff)) * iVar4 >> 8) +
                                                (char)(local_res20 >> 8),
                                                (char)(((DAT_18262b708 & 0xff) -
                                                       (local_res20 & 0xff)) * iVar4 >> 8) +
                                                (char)local_res20)));
      }
    }
    FUN_1812a24b0(&local_res8,local_res18,DAT_1824c3ea4);
    FUN_18134a800(param_1 + 0xd0,0x1000281,local_res18[0]);
    FUN_18134a800(param_1 + 0xd0,0x1000284,local_res18[0]);
    uVar3 = FUN_1812a1ea0(param_1 + 0xb8,&local_68,
                          *(byte *)(*(longlong *)(param_1 + 0xb0) + 0x140) & 1);
    FUN_181349c50(param_1 + 0xd0,uVar3,0);
    puVar5 = (uint *)(local_68 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    uVar3 = FUN_1812ea010(param_1 + 0xd0,local_60);
    fVar7 = (float)FUN_1812518d0(param_1 + 0xc0,uVar3);
    fVar7 = ceilf(fVar7);
    *(int *)(param_1 + 200) = (int)fVar7;
    puVar5 = (uint *)(local_60[0] + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    local_48 = 0;
    uStack_40 = *(undefined4 *)(param_1 + 0x28);
    uStack_3c = *(undefined4 *)(param_1 + 0x2c);
    local_38 = 0;
    uStack_34 = 0;
    uStack_30 = uStack_40;
    uStack_2c = uStack_3c;
    FUN_181342870(param_1,&local_38,1);
  }
  return;
}



############ FUN_ 1813c4e80 size=143 ############

void FUN_1813c4e80(longlong *param_1,double param_2)

{
  int iVar1;
  double dVar2;
  undefined8 local_18;
  longlong lStack_10;
  
  iVar1 = FUN_1813c7c90(param_1[0x19]);
  dVar2 = 0.0;
  if ((0.0 <= param_2) &&
     (dVar2 = (double)iVar1 + DAT_1824c4210, param_2 <= (double)iVar1 + DAT_1824c4210)) {
    dVar2 = param_2;
  }
  if ((double)param_1[0x20] != dVar2) {
    param_1[0x20] = (longlong)dVar2;
    (**(code **)(*param_1 + 0x1a8))(param_1);
    lStack_10 = param_1[5];
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 18055ecd0 size=473 ############

void FUN_18055ecd0(longlong *param_1,longlong param_2)

{
  float fVar1;
  int iVar2;
  longlong lVar3;
  undefined8 local_res10;
  undefined8 local_res18;
  undefined8 local_38;
  longlong lStack_30;
  
  if ((*(uint *)(param_2 + 0x10) >> 1 & 1) != 0) {
    local_res10 = *(ulonglong *)(param_2 + 8);
    FUN_18051db10(&local_res10,param_1[3],*(undefined8 *)(param_2 + 0x38),local_res10);
    *(ulonglong *)((longlong)param_1 + 0xd4) = local_res10;
    iVar2 = (int)param_1[0x1b] + -0x20;
    local_38 = CONCAT44(iVar2,(int)local_res10);
    lStack_30 = 0x1e000000fa;
    FUN_18134bfe0(param_1,local_res10 & 0xffffffff,iVar2,0xfa,0x1e);
    lVar3 = (**(code **)(param_1[0x16] + 8))(param_1 + 0x16);
    fVar1 = *(float *)(lVar3 + 0x88);
    *(int *)((longlong)param_1 + 0xd4) = (int)((float)*(int *)((longlong)param_1 + 0xd4) / fVar1);
    *(int *)(param_1 + 0x1b) = (int)((float)(int)param_1[0x1b] / fVar1);
    lVar3 = (**(code **)(param_1[0x16] + 8))(param_1 + 0x16);
    fVar1 = *(float *)(lVar3 + 0x88);
    local_res18 = (double)*(float *)(param_2 + 0x2c) + DAT_1824c4520;
    local_res10 = CONCAT44((undefined4)local_res18,
                           SUB84((double)*(float *)(param_2 + 0x28) + DAT_1824c4520,0));
    FUN_18051db10(&local_res10,param_1[3],*(undefined8 *)(param_2 + 0x38),local_res10);
    local_res18 = (double)CONCAT44((int)((float)local_res10._4_4_ / fVar1),
                                   (int)((float)(int)local_res10 / fVar1));
    *(double *)((longlong)param_1 + 0xdc) = local_res18;
    *(bool *)(param_1 + 0x1a) = *(char *)(param_2 + 0x59) != '\0';
    (**(code **)(*param_1 + 0x58))(param_1,1);
    lStack_30 = param_1[5];
    local_38 = 0;
    FUN_181342870(param_1,&local_38,1);
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x00018055eea5. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x58))(param_1,0);
  return;
}



############ FUN_ 1812e9e30 size=116 ############

void FUN_1812e9e30(longlong param_1,undefined8 param_2)

{
  char cVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  cVar1 = FUN_181252880(param_1 + 0x1b8);
  if (cVar1 == '\0') {
    FUN_181252990(param_1 + 0x1b8,param_2);
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 181413d90 size=149 ############

void FUN_181413d90(longlong *param_1)

{
  undefined8 *puVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  (**(code **)(*param_1 + 0x108))();
  uStack_10 = (undefined4)param_1[5];
  uVar2 = 0;
  uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  puVar1 = (undefined8 *)param_1[8];
  uVar3 = (ulonglong)
          ((longlong)(puVar1 + *(int *)((longlong)param_1 + 0x4c)) + (7 - (longlong)puVar1)) >> 3;
  if (puVar1 + *(int *)((longlong)param_1 + 0x4c) < puVar1) {
    uVar3 = uVar2;
  }
  if (uVar3 != 0) {
    do {
      FUN_181413d90(*puVar1);
      uVar2 = uVar2 + 1;
      puVar1 = puVar1 + 1;
    } while (uVar2 != uVar3);
  }
  return;
}



############ FUN_ 181610f90 size=578 ############

void FUN_181610f90(longlong param_1)

{
  longlong lVar1;
  ulonglong uVar2;
  float fVar3;
  longlong *plVar4;
  undefined8 uVar5;
  char *pcVar6;
  undefined8 *puVar7;
  float fVar8;
  float fVar9;
  undefined8 uVar10;
  double dVar11;
  float fVar12;
  uint uVar13;
  undefined8 local_68;
  undefined8 uStack_60;
  
  plVar4 = (longlong *)FUN_18119aa60(*(undefined8 *)(param_1 + 0xd0),"stereo mode");
  if (*(code **)(*plVar4 + 8) == FUN_1811bf850) {
    lVar1 = plVar4[0x31];
    uVar5 = (**(code **)(*plVar4 + 0x88))(plVar4);
    uVar10 = FUN_180487220(uVar5,(int)lVar1);
    fVar8 = (float)FUN_180487300(uVar5,uVar10);
  }
  else {
    fVar8 = (float)(**(code **)(*plVar4 + 8))(plVar4);
  }
  fVar12 = DAT_1824c3ea4;
  *(bool *)(param_1 + 0xd8) = fVar8 == DAT_1824c3ea4;
  fVar3 = DAT_1824c3d8c;
  fVar8 = DAT_1824c3c7c;
  puVar7 = (undefined8 *)(param_1 + 0x288);
  if (puVar7 != (undefined8 *)(param_1 + 0x2e8)) {
    uVar13 = (uint)DAT_1824c4f10;
    uVar2 = (ulonglong)DAT_1824c4f10 >> 0x20;
    do {
      plVar4 = (longlong *)*puVar7;
      dVar11 = (double)(fVar3 - *(float *)(puVar7[1] + 0x188));
      if (fVar8 <= (float)(double)CONCAT44((uint)((ulonglong)dVar11 >> 0x20) & (uint)uVar2,
                                           SUB84(dVar11,0) & uVar13)) {
        if (*(code **)(*plVar4 + 8) == FUN_1811bf850) {
          lVar1 = plVar4[0x31];
          uVar5 = (**(code **)(*plVar4 + 0x88))();
          uVar10 = FUN_180487220(uVar5,(int)lVar1);
          fVar9 = (float)FUN_180487300(uVar5,uVar10);
        }
        else {
          fVar9 = (float)(**(code **)(*plVar4 + 8))();
        }
        if (fVar9 == fVar12) {
          pcVar6 = "alpha";
          goto LAB_181611132;
        }
      }
      puVar7 = puVar7 + 2;
    } while (puVar7 != (undefined8 *)(param_1 + 0x2e8));
  }
  fVar12 = 0.0;
  pcVar6 = "alpha";
LAB_181611132:
  FUN_181411be0(param_1 + 0xe0,pcVar6,fVar12,DAT_1824c44dc,DAT_1824c4680);
  uStack_60 = *(undefined8 *)(param_1 + 0x28);
  local_68 = 0;
  FUN_181342870(param_1,&local_68,1);
  return;
}



############ FUN_ 1814c7b40 size=761 ############

void FUN_1814c7b40(longlong *param_1)

{
  uint uVar1;
  char cVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  bool bVar6;
  undefined8 *puVar7;
  DWORD DVar8;
  undefined8 *puVar9;
  longlong *plVar10;
  uint *_Memory;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  char *local_res8;
  char *local_res10;
  undefined1 local_res18 [16];
  undefined8 uVar14;
  undefined **local_48;
  longlong local_40;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  uVar14 = 0xfffffffffffffffe;
  plVar10 = (longlong *)param_1[0x1d];
  uVar11 = 0;
  uVar12 = (ulonglong)
           ((longlong)(plVar10 + *(int *)((longlong)param_1 + 0xf4)) + (7 - (longlong)plVar10)) >> 3
  ;
  if (plVar10 + *(int *)((longlong)param_1 + 0xf4) < plVar10) {
    uVar12 = uVar11;
  }
  uVar13 = uVar11;
  if (uVar12 != 0) {
    do {
      *(undefined1 *)(*plVar10 + 200) = 0;
      FUN_1814cb140();
      plVar10 = plVar10 + 1;
      uVar13 = uVar13 + 1;
    } while (uVar13 != uVar12);
  }
  uVar12 = param_1[0x1b];
  if ((ulonglong)((*(longlong *)(uVar12 + 0x78) - *(longlong *)(uVar12 + 0x70)) / 0x60) <=
      (ulonglong)(longlong)*(int *)(uVar12 + 0x88)) {
    if (0 < *(int *)((longlong)param_1 + 0xf4)) {
      uVar11 = *(ulonglong *)
                (param_1[0x1d] + (longlong)(*(int *)((longlong)param_1 + 0xf4) + -1) * 8);
    }
    if (uVar12 == uVar11) {
      if ((longlong *)param_1[0x1b6] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*(longlong *)param_1[0x1b6] + 0x10))();
    }
  }
  local_res8 = *(char **)(param_1[0x1b] + 0x50);
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  if (*local_res8 != '\0') {
    puVar9 = (undefined8 *)FUN_18049a930(local_res18,&local_res8);
    DVar8 = GetFileAttributesW((LPCWSTR)*puVar9);
    bVar6 = true;
    if ((DVar8 & 0x10) == 0) goto LAB_1814c7c82;
  }
  bVar6 = false;
LAB_1814c7c82:
  if (bVar6) {
    local_res10 = local_res8;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18114e120(param_1[0x29],&local_res10);
  }
  lVar3 = *(longlong *)(param_1[0x1b] + 0x58);
  if (lVar3 != 0) {
    plVar10 = (longlong *)FUN_1811f0330(param_1[0x27]);
    (**(code **)(*plVar10 + 0x18))(plVar10,lVar3,1);
  }
  puVar9 = *(undefined8 **)(param_1[0x1b] + 0x60);
  puVar4 = (undefined8 *)*puVar9;
  while (puVar4 != puVar9) {
    local_48 = &PTR_vftable_18262b560;
    local_40 = puVar4[5];
    if ((*(uint *)(local_40 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_40 + -0x10) = *(int *)(local_40 + -0x10) + 1;
      UNLOCK();
    }
    FUN_1811ffd50(param_1[0x27],puVar4[4],&local_48,1,uVar14,puVar4[4]);
    puVar5 = (undefined8 *)puVar4[2];
    if (*(char *)((longlong)puVar5 + 0x19) == '\0') {
      cVar2 = *(char *)((longlong)*puVar5 + 0x19);
      puVar4 = puVar5;
      puVar5 = (undefined8 *)*puVar5;
      while (cVar2 == '\0') {
        cVar2 = *(char *)((longlong)*puVar5 + 0x19);
        puVar4 = puVar5;
        puVar5 = (undefined8 *)*puVar5;
      }
    }
    else {
      cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
      puVar7 = (undefined8 *)puVar4[1];
      puVar5 = puVar4;
      while ((puVar4 = puVar7, cVar2 == '\0' && (puVar5 == (undefined8 *)puVar4[2]))) {
        cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar7 = (undefined8 *)puVar4[1];
        puVar5 = puVar4;
      }
    }
  }
  *(undefined1 *)(param_1[0x1b] + 200) = 1;
  FUN_1814cb140();
  FUN_1814c67f0(param_1);
  FUN_1814c7ab0(param_1);
  (**(code **)(*param_1 + 0x108))(param_1);
  uStack_2c = *(undefined4 *)((longlong)param_1 + 0x2c);
  uStack_30 = (undefined4)param_1[5];
  local_38 = 0;
  uStack_34 = 0;
  FUN_181342870(param_1,&local_38,1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18057c7d0 size=71 ############

void FUN_18057c7d0(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x274) = *param_3;
  lVar1 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 18057dd40 size=71 ############

void FUN_18057dd40(longlong param_1,undefined4 *param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = *(longlong *)(param_1 + 8);
  *(undefined4 *)(lVar1 + 0x270) = *param_2;
  lVar2 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar2 + 0x28);
  uStack_c = *(undefined4 *)(lVar2 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar2,&local_18,CONCAT71((int7)((ulonglong)lVar1 >> 8),1));
  return;
}



############ FUN_ 1805876c0 size=194 ############

void FUN_1805876c0(longlong param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined1 local_res8 [8];
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  lVar3 = *(longlong *)(param_1 + 8);
  uVar1 = *param_2;
  uVar2 = *param_3;
  if (*(undefined ***)(lVar3 + 0x208) == CloudyComboBoxRadioButton::vftable) {
    if (*(longlong *)(lVar3 + 0x210) == 0) {
      FUN_1805849b0(lVar3);
    }
    uVar6 = *(undefined8 *)(lVar3 + 0x210);
  }
  else {
    uVar6 = (*(code *)(*(undefined ***)(lVar3 + 0x208))[1])(lVar3 + 0x208);
  }
  uVar4 = *(undefined8 *)(param_1 + 8);
  puVar5 = (undefined8 *)FUN_18140e230(local_res8,uVar2);
  FUN_1813f0dc0(uVar6,uVar1,*puVar5,uVar4);
  lVar3 = *(longlong *)(param_1 + 8);
  uStack_20 = *(undefined4 *)(lVar3 + 0x28);
  uStack_1c = *(undefined4 *)(lVar3 + 0x2c);
  local_28 = 0;
  FUN_181342870(lVar3,&local_28,1);
  return;
}



############ FUN_ 180587850 size=58 ############

void FUN_180587850(longlong param_1)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 180587950 size=71 ############

void FUN_180587950(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x3d4) = *param_3;
  lVar1 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 180587f00 size=202 ############

void FUN_180587f00(longlong param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  code *pcVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined1 local_res8 [8];
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  lVar3 = *(longlong *)(param_1 + 8);
  uVar1 = *param_2;
  uVar2 = *param_3;
  pcVar4 = *(code **)(*(longlong *)(lVar3 + 0xb0) + 8);
  if (pcVar4 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(lVar3 + 0xb8) == 0) {
      FUN_180569ff0(lVar3);
    }
    uVar6 = *(undefined8 *)(lVar3 + 0xb8);
  }
  else {
    uVar6 = (*pcVar4)(lVar3 + 0xb0);
  }
  lVar3 = *(longlong *)(param_1 + 8);
  puVar5 = (undefined8 *)FUN_18140e230(local_res8,uVar2);
  FUN_1813f0dc0(uVar6,uVar1,*puVar5,lVar3 + 0x390);
  lVar3 = *(longlong *)(param_1 + 8);
  uStack_20 = *(undefined4 *)(lVar3 + 0x28);
  uStack_1c = *(undefined4 *)(lVar3 + 0x2c);
  local_28 = 0;
  FUN_181342870(lVar3,&local_28,1);
  return;
}



############ FUN_ 180588070 size=202 ############

void FUN_180588070(longlong param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  code *pcVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined1 local_res8 [8];
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  lVar3 = *(longlong *)(param_1 + 8);
  uVar1 = *param_2;
  uVar2 = *param_3;
  pcVar4 = *(code **)(*(longlong *)(lVar3 + 0xb0) + 8);
  if (pcVar4 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(lVar3 + 0xb8) == 0) {
      FUN_180569ff0(lVar3);
    }
    uVar6 = *(undefined8 *)(lVar3 + 0xb8);
  }
  else {
    uVar6 = (*pcVar4)(lVar3 + 0xb0);
  }
  lVar3 = *(longlong *)(param_1 + 8);
  puVar5 = (undefined8 *)FUN_18140e230(local_res8,uVar2);
  FUN_1813f0dc0(uVar6,uVar1,*puVar5,lVar3 + 0x358);
  lVar3 = *(longlong *)(param_1 + 8);
  uStack_20 = *(undefined4 *)(lVar3 + 0x28);
  uStack_1c = *(undefined4 *)(lVar3 + 0x2c);
  local_28 = 0;
  FUN_181342870(lVar3,&local_28,1);
  return;
}



############ FUN_ 1805920e0 size=71 ############

void FUN_1805920e0(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x470) = *param_3;
  lVar1 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 1805981c0 size=196 ############

void FUN_1805981c0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar4 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 8) == 0) {
    lVar3 = 0;
  }
  else {
    lVar3 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  if (((*(char *)(*(longlong *)(param_1 + 0x58) + 499) == '\0') && (0 < *(int *)(lVar3 + 0x28))) &&
     (0 < *(int *)(lVar3 + 0x2c))) {
    cVar2 = FUN_180598290(lVar3);
    if (cVar2 != '\0') {
      bVar1 = true;
      goto LAB_180598218;
    }
  }
  bVar1 = false;
LAB_180598218:
  if (!bVar1) {
    FUN_180597f80(param_1);
    return;
  }
  if (*(longlong *)(lVar3 + 0x68) != 0) {
    uStack_10 = *(undefined4 *)(lVar3 + 0x28);
    uStack_c = *(undefined4 *)(lVar3 + 0x2c);
    local_18 = 0;
    FUN_181342870(lVar3,&local_18,1,param_4,uVar4);
    return;
  }
  FUN_180598300(param_1);
  return;
}



############ FUN_ 18059d520 size=121 ############

void FUN_18059d520(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181405270(*(undefined8 *)(param_1 + 0x240),0,*(undefined4 *)(param_1 + 0x268),
                *(undefined4 *)(param_1 + 0x288),*(undefined4 *)(param_1 + 0x28c));
  uStack_10 = *(undefined4 *)(param_1 + -0xb0);
  uStack_c = *(undefined4 *)(param_1 + -0xac);
  local_18 = 0;
  FUN_181342870(param_1 + -0xd8,&local_18,1);
  return;
}



############ FUN_ 18059e8d0 size=71 ############

void FUN_18059e8d0(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined4 *)(*(longlong *)(param_1 + 8) + 0x34c) = *param_3;
  lVar1 = *(longlong *)(param_1 + 8);
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 1812b92b0 size=75 ############

void FUN_1812b92b0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181348f10(param_1 + 0xd8);
  uStack_10 = *(undefined4 *)(param_1 + 0x100);
  uStack_c = *(undefined4 *)(param_1 + 0x104);
  local_18 = 0;
  FUN_181342870(param_1 + 0xd8,&local_18,1);
  return;
}



############ FUN_ 1812b9310 size=85 ############

void FUN_1812b9310(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181348d80(*(undefined8 *)(param_1 + 0x138));
  FUN_181348f10(param_1 + 0x20);
  uStack_10 = *(undefined4 *)(param_1 + 0x48);
  uStack_c = *(undefined4 *)(param_1 + 0x4c);
  local_18 = 0;
  FUN_181342870(param_1 + 0x20,&local_18,1);
  return;
}



############ FUN_ 181348d80 size=123 ############

ulonglong FUN_181348d80(longlong param_1)

{
  uint *puVar1;
  uint uVar2;
  ulonglong uVar3;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0xea) = 1;
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(0,&local_18,1);
  uVar3 = 0;
  puVar1 = (uint *)(*(longlong *)(param_1 + 0xb8) + 0x18);
  LOCK();
  uVar2 = *puVar1;
  if (uVar2 == 0) {
    *puVar1 = 1;
  }
  else {
    uVar3 = (ulonglong)uVar2;
  }
  UNLOCK();
  if (uVar2 == 0) {
    uVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0xb8));
    if ((char)uVar3 == '\0') {
      uVar3 = *(ulonglong *)(param_1 + 0xb8);
      LOCK();
      *(undefined4 *)(uVar3 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar3;
}



############ FUN_ 1812cf0f0 size=667 ############

void FUN_1812cf0f0(longlong *param_1)

{
  bool bVar1;
  char cVar2;
  longlong *plVar3;
  int *piVar4;
  longlong lVar5;
  undefined8 uVar6;
  int local_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  undefined1 local_28 [16];
  undefined1 local_18 [16];
  
  if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
    cVar2 = *(char *)((longlong)param_1 + 0xe2);
LAB_1812cf14b:
    if (cVar2 == '\0') goto LAB_1812cf14d;
  }
  else {
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      if (param_1[3] != 0) {
        plVar3 = (longlong *)FUN_18134c2e0();
        goto LAB_1812cf132;
      }
    }
    else {
      plVar3 = (longlong *)FUN_1812d2bd0();
LAB_1812cf132:
      if (plVar3 != (longlong *)0x0) {
        cVar2 = (**(code **)(*plVar3 + 0x78))(plVar3);
        goto LAB_1812cf14b;
      }
    }
LAB_1812cf14d:
    cVar2 = FUN_1812ce2f0(param_1);
    if (cVar2 == '\0') {
      if (*(char *)((longlong)param_1 + 0xb1) == '\0') {
LAB_1812cf17c:
        bVar1 = false;
      }
      else {
        if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
          cVar2 = FUN_181345240(param_1);
          if (cVar2 != '\0') goto LAB_1812cf17c;
        }
        bVar1 = true;
      }
      if (!bVar1) {
        bVar1 = false;
        goto LAB_1812cf18a;
      }
    }
  }
  bVar1 = true;
LAB_1812cf18a:
  plVar3 = (longlong *)param_1[0x19];
  uVar6 = 0;
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x58))(plVar3,!bVar1);
    piVar4 = (int *)(**(code **)(*param_1 + 0x168))(param_1,local_28);
    local_38 = *piVar4;
    iStack_34 = piVar4[1];
    iStack_30 = piVar4[2];
    iStack_2c = piVar4[3];
    lVar5 = param_1[0x19];
    if ((((*(int *)(lVar5 + 0xc0) != local_38) || (*(int *)(lVar5 + 0xc4) != iStack_34)) ||
        (*(int *)(lVar5 + 200) != iStack_30)) || (*(int *)(lVar5 + 0xcc) != iStack_2c)) {
      *(int *)(lVar5 + 0xc0) = local_38;
      *(int *)(lVar5 + 0xc4) = iStack_34;
      *(int *)(lVar5 + 200) = iStack_30;
      *(int *)(lVar5 + 0xcc) = iStack_2c;
      iStack_30 = *(int *)(lVar5 + 0x28);
      iStack_2c = *(int *)(lVar5 + 0x2c);
      local_38 = 0;
      iStack_34 = 0;
      FUN_181342870(lVar5,&local_38,1);
    }
    lVar5 = param_1[0x19];
    FUN_18134bfe0(lVar5,*(undefined4 *)(lVar5 + 0x20),*(undefined4 *)(lVar5 + 0x24),(int)param_1[5],
                  *(undefined4 *)((longlong)param_1 + 0x2c));
    FUN_181344d70(param_1[0x19]);
  }
  plVar3 = (longlong *)param_1[0x18];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x58))(plVar3,!bVar1);
    FUN_18134bfe0(param_1[0x18],(int)param_1[5] + -0x12,*(int *)((longlong)param_1 + 0x2c) + -0x12,
                  0x12,0x12);
  }
  if ((param_1[0x1a] != 0) && (*(longlong *)(param_1[0x1a] + 0x10) != 0)) {
    piVar4 = (int *)(**(code **)(*param_1 + 0x170))(param_1,local_28);
    local_38 = *piVar4;
    iStack_34 = piVar4[1];
    iStack_30 = piVar4[2];
    iStack_2c = piVar4[3];
    if (param_1[0x1a] != 0) {
      uVar6 = *(undefined8 *)(param_1[0x1a] + 0x10);
    }
    piVar4 = (int *)FUN_1804e4fb0(local_18,uVar6);
    FUN_18134bfe0(uVar6,*piVar4 + iStack_34,piVar4[1] + local_38,(piVar4[2] - iStack_34) - iStack_2c
                  ,(piVar4[3] - local_38) - iStack_30);
  }
  cVar2 = FUN_181345240(param_1);
  if (cVar2 != '\0') {
    FUN_1812ce210(param_1);
    if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
      lVar5 = FUN_1812d2bd0(param_1);
      if (lVar5 != 0) {
        *(longlong *)(lVar5 + 0x28) = param_1[0x27];
      }
    }
  }
  return;
}



############ FUN_ 1812d2f60 size=525 ############

void FUN_1812d2f60(longlong param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  code *pcVar5;
  longlong lVar6;
  float fVar7;
  int iStackX_14;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined4 local_48;
  undefined4 uStack_44;
  float fStack_40;
  float fStack_3c;
  float local_38;
  float fStack_34;
  float fStack_30;
  float fStack_2c;
  
  uStack_50 = *(undefined8 *)(param_1 + 0x28);
  local_58 = 0;
  FUN_181342870(param_1,&local_58,1);
  puVar3 = *(undefined8 **)(param_1 + 0x120);
  *(undefined8 *)(param_1 + 0x120) = 0;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *(undefined8 *)(param_1 + 0xdc) = 0;
  *(undefined8 *)(param_1 + 0xe4) = 0;
  *(undefined4 *)(param_1 + 0xec) = 0;
  lVar6 = FUN_18134adf0(param_1);
  fStack_3c = (float)*(int *)(param_1 + 0x2c);
  lVar4 = *(longlong *)(param_1 + 200);
  fStack_40 = (float)*(int *)(param_1 + 0x28);
  local_48 = 0;
  uStack_44 = 0;
  local_38 = (float)*(int *)(lVar4 + 0x20) - DAT_1824c4348;
  fStack_34 = (float)*(int *)(lVar4 + 0x24) - DAT_1824c4348;
  fStack_30 = (float)*(int *)(lVar4 + 0x28) + DAT_1824c43e4;
  pcVar5 = *(code **)(*(longlong *)(lVar6 + 0xa0) + 0x18);
  if (fStack_30 <= 0.0) {
    fStack_30 = 0.0;
  }
  fStack_2c = (float)*(int *)(lVar4 + 0x2c) + DAT_1824c43e4;
  if (fStack_2c <= 0.0) {
    fStack_2c = 0.0;
  }
  fVar7 = DAT_1824c43e4;
  if (pcVar5 != FUN_181307920) {
    fVar7 = (float)(*pcVar5)((longlong *)(lVar6 + 0xa0),param_1,pcVar5,fStack_34);
  }
  iStackX_14 = (int)((ulonglong)*(undefined8 *)(param_1 + 0x20) >> 0x20);
  FUN_18129c020(param_1 + 0xd0,&local_38,&local_48,
                CONCAT44(*(float *)(param_1 + 0xfc) - (float)iStackX_14,
                         *(float *)(param_1 + 0xf8) - (float)(int)*(undefined8 *)(param_1 + 0x20)),
                fVar7,*(float *)(param_1 + 0x128) * DAT_1824c3df0);
  return;
}



############ FUN_ 1812d8830 size=455 ############

void FUN_1812d8830(longlong param_1,int param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  longlong *plVar6;
  longlong *plVar7;
  bool bVar8;
  longlong local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  lVar5 = *(longlong *)(param_1 + 0x108);
  if (lVar5 != 0) {
    iVar2 = FUN_1812d5d90(lVar5);
    iVar2 = iVar2 - (uint)(*(char *)(param_1 + 0x126) == '\0');
    if (0 < iVar2) {
      iVar3 = 0;
      lVar5 = FUN_1812d5b00(lVar5,0);
      if (lVar5 != 0) {
        iVar3 = FUN_1812d5a10(lVar5);
      }
      iVar3 = iVar3 + param_2;
      iVar2 = iVar2 + -1;
      if (iVar3 < 0) {
        iVar3 = 0;
      }
      else if (iVar2 < iVar3) {
        iVar3 = iVar2;
      }
      do {
        iVar4 = iVar3;
        if (*(char *)(param_1 + 0x126) == '\0') {
          iVar4 = iVar3 + 1;
        }
        if (*(longlong *)(param_1 + 0x108) == 0) {
          return;
        }
        if (iVar4 < 0) {
          return;
        }
        plVar6 = (longlong *)FUN_1812d5d00();
        if (plVar6 == (longlong *)0x0) {
          return;
        }
        if ((*(code **)(*plVar6 + 0x30) ==
             .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
             vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) ||
           (cVar1 = (**(code **)(*plVar6 + 0x30))(plVar6), cVar1 != '\0')) {
          if ((*(code **)(*plVar6 + 0x30) ==
               .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
               vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) ||
             (cVar1 = (**(code **)(*plVar6 + 0x30))(plVar6), cVar1 != '\0')) {
            plVar7 = plVar6;
            if (plVar6[2] != 0) {
              plVar7 = (longlong *)FUN_1812d5e40();
            }
            FUN_1812d6cb0(plVar7,plVar6);
            if ((*(byte *)(plVar6 + 8) & 1) == 0) {
              lVar5 = plVar6[1];
              *(byte *)(plVar6 + 8) = *(byte *)(plVar6 + 8) | 1;
              if (lVar5 != 0) {
                uStack_20 = *(undefined4 *)(lVar5 + 0x28);
                uStack_1c = *(undefined4 *)(lVar5 + 0x2c);
                local_28 = 0;
                FUN_181342870(lVar5,&local_28,1);
              }
              (**(code **)(*plVar6 + 0x70))(plVar6,1);
            }
          }
          FUN_1812d8760(param_1,plVar6);
          return;
        }
        iVar4 = 1;
        if (param_2 < 0) {
          iVar4 = -1;
        }
        iVar4 = iVar4 + iVar3;
        if (iVar4 < 0) {
          iVar4 = 0;
        }
        else if (iVar2 < iVar4) {
          iVar4 = iVar2;
        }
        bVar8 = iVar3 != iVar4;
        iVar3 = iVar4;
      } while (bVar8);
    }
  }
  return;
}



############ FUN_ 1812d8a00 size=54 ############

void FUN_1812d8a00(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812d8c90 size=97 ############

void FUN_1812d8c90(longlong param_1)

{
  longlong lVar1;
  undefined1 local_res8 [32];
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  lVar1 = FUN_18134a8d0(param_1,local_res8,0x1000500,0);
  FUN_18134bd50(param_1,*(char *)(lVar1 + 3) == -1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1812d9260 size=822 ############

void FUN_1812d9260(longlong param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  code *pcVar5;
  double dVar6;
  char cVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  longlong *plVar13;
  ulonglong uVar14;
  double dVar15;
  undefined8 local_res10;
  int local_res18 [2];
  int local_res20 [2];
  undefined8 in_stack_ffffffffffffff48;
  undefined4 uVar17;
  int *piVar16;
  int local_a8;
  int local_a4;
  longlong local_a0;
  undefined8 local_98;
  int local_90;
  int iStack_8c;
  undefined8 local_88;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined8 local_78;
  longlong lStack_70;
  
  uVar17 = (undefined4)((ulonglong)in_stack_ffffffffffffff48 >> 0x20);
  piVar9 = (int *)FUN_1804e4fb0(&local_78,param_1 + 0xd8);
  local_90 = piVar9[2] + -2;
  iStack_8c = piVar9[3] + -2;
  local_98 = CONCAT44(piVar9[1] + 1,*piVar9 + 1);
  piVar16 = (int *)CONCAT44(uVar17,iStack_8c);
  FUN_18134bfe0(param_1 + 0xd8,*piVar9 + 1,piVar9[1] + 1,local_90,piVar16);
  dVar6 = DAT_1824c4520;
  uVar17 = (undefined4)((ulonglong)piVar16 >> 0x20);
  uVar14 = 0;
  if (*(longlong *)(param_1 + 600) == 0) {
    local_a0 = 0;
  }
  else {
    local_a0 = *(longlong *)(*(longlong *)(param_1 + 600) + 0x10);
  }
  iVar1 = *(int *)(param_1 + 0x100);
  iVar2 = *(int *)(param_1 + 0x270);
  lVar3 = *(longlong *)(param_1 + 0xd0);
  if (*(char *)(lVar3 + 0xd8) == '\0') {
    iVar11 = *(int *)(lVar3 + 0x2c);
  }
  else {
    iVar11 = *(int *)(lVar3 + 0x28);
  }
  plVar13 = *(longlong **)(param_1 + 0x290);
  iVar10 = 8;
  iVar12 = 8;
  local_a8 = 0;
  local_98 = (ulonglong)((longlong)(plVar13 + *(int *)(param_1 + 0x29c)) + (7 - (longlong)plVar13))
             >> 3;
  if (plVar13 + *(int *)(param_1 + 0x29c) < plVar13) {
    local_98 = uVar14;
  }
  iVar8 = 0;
  if (local_98 != 0) {
    do {
      uVar17 = (undefined4)((ulonglong)piVar16 >> 0x20);
      plVar4 = (longlong *)*plVar13;
      local_a4 = *(int *)(*(longlong *)(param_1 + 0xd0) + 0xdc);
      pcVar5 = *(code **)(*plVar4 + 0x188);
      if (pcVar5 == FUN_1812daf50) {
        if ((int)plVar4[0x3a] != local_a4) {
          *(int *)(plVar4 + 0x3a) = local_a4;
          uStack_80 = (undefined4)plVar4[5];
          uStack_7c = *(undefined4 *)((longlong)plVar4 + 0x2c);
          lStack_70 = plVar4[5];
          local_88 = 0;
          local_78 = 0;
          FUN_181342870(plVar4,&local_78,0x1812daf01);
          (**(code **)(*plVar4 + 0x108))(plVar4);
        }
      }
      else {
        (*pcVar5)(plVar4,&local_a4,pcVar5,0);
      }
      local_res10 = (double)CONCAT44(local_res10._4_4_,1);
      local_res20[0] = 1;
      local_res18[0] = 1;
      if (*(code **)(*plVar4 + 400) == FUN_180509850) {
        if (0.0 < *(float *)(plVar4 + 0x40)) {
          dVar15 = (double)((float)iVar11 * *(float *)(plVar4 + 0x40)) + dVar6;
          local_res18[0] = SUB84(dVar15,0);
          local_res20[0] = local_res18[0];
          if ((*(char *)((longlong)plVar4 + 0x204) == '\0') &&
             (local_res20[0] = 4, local_res18[0] < 4)) {
            local_res20[0] = local_res18[0];
          }
          local_res10._4_4_ = (undefined4)((ulonglong)dVar15 >> 0x20);
          iVar8 = local_res18[0];
          if (*(int *)((longlong)plVar4 + 0x1cc) == 2) {
            local_res18[0] = iVar11 / (int)((*(char *)((longlong)plVar4 + 0x204) != '\0') + 2);
            local_res10 = (double)CONCAT44(local_res10._4_4_,local_res18[0]);
            iVar8 = local_res18[0];
            dVar15 = local_res10;
          }
        }
        else {
          local_res20[0] = 4;
          local_res10 = (double)CONCAT44(local_res10._4_4_,iVar11 * 2);
          local_res18[0] = 0x8000;
          iVar8 = iVar11 * 2;
          dVar15 = local_res10;
        }
LAB_1812d94ad:
        local_res10 = dVar15;
        if (((iVar1 - iVar2) + -8 < iVar8 + iVar10) && (8 < iVar10)) {
          iVar10 = 8;
          iVar12 = iVar12 + iVar11;
        }
        piVar16 = (int *)CONCAT44(uVar17,iVar11);
        FUN_18134bfe0(plVar4,iVar10,iVar12,iVar8,piVar16);
        iVar10 = iVar10 + (int)local_res10 + 8;
        if (local_a8 < iVar10) {
          local_a8 = iVar10;
        }
      }
      else {
        piVar16 = local_res20;
        cVar7 = (**(code **)(*plVar4 + 400))(plVar4,iVar11,0,&local_res10,piVar16,local_res18);
        uVar17 = (undefined4)((ulonglong)piVar16 >> 0x20);
        if (cVar7 != '\0') {
          iVar8 = (int)local_res10;
          dVar15 = local_res10;
          goto LAB_1812d94ad;
        }
      }
      uVar17 = (undefined4)((ulonglong)piVar16 >> 0x20);
      plVar13 = plVar13 + 1;
      uVar14 = uVar14 + 1;
      iVar8 = local_a8;
    } while (uVar14 != local_98);
  }
  FUN_18134bfe0(local_a0,*(undefined4 *)(local_a0 + 0x20),*(undefined4 *)(local_a0 + 0x24),iVar8,
                CONCAT44(uVar17,iVar11 + 8 + iVar12));
  return;
}



############ FUN_ 1812daf50 size=94 ############

void FUN_1812daf50(longlong *param_1,int *param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((int)param_1[0x3a] != *param_2) {
    *(int *)(param_1 + 0x3a) = *param_2;
    uStack_10 = (undefined4)param_1[5];
    uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
                    /* WARNING: Could not recover jumptable at 0x0001812dafa1. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x108))(param_1);
    return;
  }
  return;
}



############ FUN_ 1812dd0f0 size=79 ############

void FUN_1812dd0f0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_18051b540(param_1 + 0x260);
  uStack_10 = *(undefined4 *)(param_1 + -0x88);
  uStack_c = *(undefined4 *)(param_1 + -0x84);
  local_18 = 0;
  FUN_181342870(param_1 + -0xb0,&local_18,1);
  return;
}



############ FUN_ 1812dd570 size=207 ############

void FUN_1812dd570(longlong param_1)

{
  longlong *plVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1812e1fc0();
  *(undefined1 *)(param_1 + 500) = 0;
  FUN_1812a7720(*(longlong *)(param_1 + 0x1d0) + 0xb0);
  *(undefined4 *)(param_1 + 0x31c) = 0;
  if (*(int *)(param_1 + 0x318) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x310));
  }
  *(undefined4 *)(param_1 + 0x318) = 0;
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812dd5f8;
    plVar1 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar1 = (longlong *)FUN_1812d2bd0(param_1);
  }
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0xd8))(plVar1);
  }
LAB_1812dd5f8:
  FUN_1812e16d0(param_1);
  FUN_1813416b0(param_1,0x10003004);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1812e1950 size=68 ############

void FUN_1812e1950(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_1812e1780();
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1812e19b0 size=106 ############

void FUN_1812e19b0(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  puVar1 = *(undefined8 **)(param_1 + 0x278);
  *(undefined8 *)(param_1 + 0x278) = 0;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1812e1780(param_1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1812e1a20 size=568 ############

void FUN_1812e1a20(longlong param_1,undefined8 param_2,undefined1 param_3)

{
  longlong *plVar1;
  uint uVar2;
  byte bVar3;
  int iVar4;
  longlong lVar5;
  char cVar6;
  undefined8 *puVar7;
  uint *puVar8;
  byte *pbVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong lVar12;
  longlong *plVar13;
  undefined4 uVar14;
  longlong local_res8 [2];
  undefined4 local_res18 [2];
  longlong local_res20;
  undefined8 uVar15;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  local_res18[0] = CONCAT31(local_res18[0]._1_3_,param_3);
  uVar15 = 0xfffffffffffffffe;
  FUN_181252990(param_1 + 0x298);
  FUN_18134a8d0(param_1,local_res18,0x1000201,0,uVar15);
  plVar13 = *(longlong **)(param_1 + 0x2a8);
  plVar1 = plVar13 + *(int *)(param_1 + 0x2b4);
  do {
    if (plVar13 == plVar1) {
      FUN_1812db150(param_1);
      FUN_1812e0480(param_1);
      FUN_1812e0240(param_1);
      uStack_40 = *(undefined4 *)(param_1 + 0x28);
      uStack_3c = *(undefined4 *)(param_1 + 0x2c);
      local_48 = 0;
      uStack_44 = 0;
      FUN_181342870(param_1,&local_48,1);
      return;
    }
    lVar5 = *plVar13;
    iVar4 = *(int *)(param_1 + 0x2c4);
    cVar6 = FUN_181252880(lVar5,param_2);
    if ((cVar6 == '\0') || (*(int *)(lVar5 + 0x20) != iVar4)) {
      FUN_181252990(lVar5,param_2);
      *(int *)(lVar5 + 0x20) = iVar4;
      plVar10 = *(longlong **)(lVar5 + 0x10);
      plVar11 = plVar10 + (longlong)*(int *)(lVar5 + 0x1c) * 2;
      if (plVar10 != plVar11) {
LAB_1812e1ad8:
        if (*(int *)(lVar5 + 0x20) != 0) {
          puVar7 = (undefined8 *)FUN_181233f40(&local_res20);
          pbVar9 = (byte *)*plVar10;
          lVar12 = 0;
LAB_1812e1b20:
          do {
            bVar3 = *pbVar9;
            pbVar9 = pbVar9 + 1;
            if ((char)bVar3 < '\0') {
              if ((*pbVar9 & 0xc0) == 0x80) {
                do {
                  pbVar9 = pbVar9 + 1;
                } while ((*pbVar9 & 0xc0) == 0x80);
                lVar12 = lVar12 + 1;
                goto LAB_1812e1b20;
              }
            }
            else if (bVar3 == 0) goto LAB_1812e1b5a;
            lVar12 = lVar12 + 1;
          } while( true );
        }
        local_res8[0] = *plVar10;
        if ((*(uint *)(local_res8[0] + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res8[0] + -0x10) = *(int *)(local_res8[0] + -0x10) + 1;
          UNLOCK();
        }
        goto LAB_1812e1b9b;
      }
    }
LAB_1812e1be7:
    *(undefined4 *)(lVar5 + 8) = local_res18[0];
    plVar13 = plVar13 + 1;
  } while( true );
LAB_1812e1b5a:
  FUN_181231fc0(local_res8,*puVar7,lVar12,puVar7,uVar15,*puVar7);
  puVar8 = (uint *)(local_res20 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
LAB_1812e1b9b:
  uVar14 = FUN_1812518d0(param_2,local_res8);
  *(undefined4 *)(plVar10 + 1) = uVar14;
  puVar8 = (uint *)(local_res8[0] + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  plVar10 = plVar10 + 2;
  if (plVar10 == plVar11) goto LAB_1812e1be7;
  goto LAB_1812e1ad8;
}



############ FUN_ 1812e4b50 size=459 ############

void FUN_1812e4b50(longlong param_1,int param_2,int param_3)

{
  int *piVar1;
  longlong lVar2;
  double dVar3;
  char cVar4;
  int iVar5;
  uint uVar6;
  ulonglong uVar7;
  longlong lVar8;
  int iVar9;
  uint uVar10;
  undefined8 *puVar11;
  bool bVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  undefined8 *local_60;
  undefined8 local_58;
  undefined8 local_48;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  uVar7 = (ulonglong)param_2;
  uVar10 = 0;
  if (param_3 < 0) {
    param_3 = 0;
  }
  local_60 = (undefined8 *)0x0;
  local_58 = 0;
  if (param_2 < *(int *)(param_1 + 0xcc)) {
    lVar8 = uVar7 * 8;
    iVar9 = param_2;
    do {
      lVar2 = *(longlong *)(lVar8 + *(longlong *)(param_1 + 0xc0));
      if ((*(byte *)(lVar2 + 0xc) & 1) != 0) {
        FUN_18131ae50(&local_60,*(undefined8 *)(lVar2 + 0x20),(double)*(int *)(lVar2 + 0x14),
                      (double)*(int *)(lVar2 + 0x18),0);
      }
      iVar9 = iVar9 + 1;
      lVar8 = lVar8 + 8;
    } while (iVar9 < *(int *)(param_1 + 0xcc));
  }
  FUN_18131abb0(&local_60,(double)param_3);
  if (param_2 < *(int *)(param_1 + 0xcc)) {
    lVar8 = uVar7 * 8;
    puVar11 = local_60;
    do {
      lVar2 = *(longlong *)(lVar8 + *(longlong *)(param_1 + 0xc0));
      if ((*(byte *)(lVar2 + 0xc) & 1) != 0) {
        if (uVar10 < local_58._4_4_) {
          uVar13 = (undefined4)*puVar11;
          uVar14 = (undefined4)((ulonglong)*puVar11 >> 0x20);
        }
        else {
          uVar13 = 0;
          uVar14 = 0;
        }
        uVar10 = uVar10 + 1;
        puVar11 = puVar11 + 4;
        dVar3 = floor((double)CONCAT44(uVar14,uVar13));
        iVar5 = (int)dVar3;
        iVar9 = *(int *)(lVar2 + 0x14);
        if ((*(int *)(lVar2 + 0x14) <= iVar5) && (iVar9 = iVar5, *(int *)(lVar2 + 0x18) < iVar5)) {
          iVar9 = *(int *)(lVar2 + 0x18);
        }
        if (iVar9 != *(int *)(lVar2 + 0x10)) {
          *(int *)(lVar2 + 0x10) = iVar9;
          uStack_3c = *(undefined4 *)(param_1 + 0x2c);
          uStack_40 = *(undefined4 *)(param_1 + 0x28);
          local_48 = 0;
          local_38 = 0;
          uStack_34 = 0;
          uStack_30 = uStack_40;
          uStack_2c = uStack_3c;
          FUN_181342870(param_1,&local_38,1);
          *(undefined1 *)(param_1 + 0xe9) = 1;
          piVar1 = (int *)(*(longlong *)(param_1 + 0xb8) + 0x18);
          LOCK();
          bVar12 = *piVar1 == 0;
          if (bVar12) {
            *piVar1 = 1;
          }
          UNLOCK();
          if ((bVar12) && (cVar4 = FUN_1812a6720(*(undefined8 *)(param_1 + 0xb8)), cVar4 == '\0')) {
            LOCK();
            *(undefined4 *)(*(longlong *)(param_1 + 0xb8) + 0x18) = 0;
            UNLOCK();
          }
        }
      }
      uVar6 = (int)uVar7 + 1;
      uVar7 = (ulonglong)uVar6;
      lVar8 = lVar8 + 8;
    } while ((int)uVar6 < *(int *)(param_1 + 0xcc));
  }
                    /* WARNING: Could not recover jumptable at 0x0001812e4d14. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_60);
  return;
}



############ FUN_ 1812e2ab0 size=65 ############

void FUN_1812e2ab0(longlong param_1,undefined8 param_2,undefined4 param_3)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined4 *)(param_1 + 0x18) = param_3;
  uStack_10 = *(undefined4 *)(param_1 + -0xe8);
  uStack_c = *(undefined4 *)(param_1 + -0xe4);
  local_18 = 0;
  FUN_181342870(param_1 + -0x110,&local_18,1);
  return;
}



############ FUN_ 1812e2ba0 size=179 ############

void FUN_1812e2ba0(longlong param_1)

{
  longlong *plVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar2 = 0;
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0xc0);
  uVar5 = (ulonglong)
          ((longlong)(plVar1 + *(int *)(*(longlong *)(param_1 + 8) + 0xcc)) + (7 - (longlong)plVar1)
          ) >> 3;
  if (plVar1 + *(int *)(*(longlong *)(param_1 + 8) + 0xcc) < plVar1) {
    uVar5 = uVar2;
  }
  uVar4 = uVar2;
  if (uVar5 != 0) {
    do {
      if ((*(byte *)(*plVar1 + 0xc) & 1) != 0) {
        uVar4 = (ulonglong)(uint)((int)uVar4 + *(int *)(*plVar1 + 0x10));
      }
      plVar1 = plVar1 + 1;
      uVar2 = uVar2 + 1;
    } while (uVar2 != uVar5);
  }
  lVar3 = param_1 + -0x110;
  *(int *)(param_1 + -0x18) = (int)uVar4;
  FUN_181348f10(lVar3);
  uStack_10 = *(undefined4 *)(param_1 + -0xe8);
  uStack_c = *(undefined4 *)(param_1 + -0xe4);
  local_18 = 0;
  FUN_181342870(lVar3,&local_18,1);
  FUN_1812e2790(lVar3);
  return;
}



############ FUN_ 1812e2c60 size=179 ############

void FUN_1812e2c60(longlong param_1)

{
  longlong *plVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uVar2 = 0;
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 8) + 0xc0);
  uVar5 = (ulonglong)
          ((longlong)(plVar1 + *(int *)(*(longlong *)(param_1 + 8) + 0xcc)) + (7 - (longlong)plVar1)
          ) >> 3;
  if (plVar1 + *(int *)(*(longlong *)(param_1 + 8) + 0xcc) < plVar1) {
    uVar5 = uVar2;
  }
  uVar4 = uVar2;
  if (uVar5 != 0) {
    do {
      if ((*(byte *)(*plVar1 + 0xc) & 1) != 0) {
        uVar4 = (ulonglong)(uint)((int)uVar4 + *(int *)(*plVar1 + 0x10));
      }
      plVar1 = plVar1 + 1;
      uVar2 = uVar2 + 1;
    } while (uVar2 != uVar5);
  }
  lVar3 = param_1 + -0x110;
  *(int *)(param_1 + -0x18) = (int)uVar4;
  FUN_181348f10(lVar3);
  uStack_10 = *(undefined4 *)(param_1 + -0xe8);
  uStack_c = *(undefined4 *)(param_1 + -0xe4);
  local_18 = 0;
  FUN_181342870(lVar3,&local_18,1);
  FUN_1812e2790(lVar3);
  return;
}



############ FUN_ 1812e4f80 size=489 ############

ulonglong FUN_1812e4f80(longlong param_1,int param_2,int param_3)

{
  uint *puVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  int *piVar7;
  longlong *plVar8;
  ulonglong uVar9;
  uint uVar10;
  uint uVar11;
  longlong *plVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined1 local_18 [16];
  
  plVar12 = *(longlong **)(param_1 + 0xc0);
  uVar6 = (ulonglong)*(int *)(param_1 + 0xcc);
  plVar8 = plVar12 + uVar6;
  if (plVar12 != plVar8) {
    while (lVar3 = *plVar12, *(int *)(lVar3 + 8) != param_2) {
      plVar12 = plVar12 + 1;
      if (plVar12 == plVar8) {
        return uVar6;
      }
    }
    if (*(int *)(lVar3 + 0x10) != param_3) {
      plVar8 = *(longlong **)(param_1 + 0xc0);
      uVar6 = 0;
      uVar10 = 0;
      uVar9 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0xcc)) + (7 - (longlong)plVar8)) >>
              3;
      if (plVar8 + *(int *)(param_1 + 0xcc) < plVar8) {
        uVar9 = uVar6;
      }
      uVar13 = uVar6;
      uVar14 = uVar6;
      if (uVar9 != 0) {
        do {
          if ((*(byte *)(*plVar8 + 0xc) & 1) != 0) {
            uVar14 = (ulonglong)((int)uVar14 + 1);
          }
          uVar10 = (uint)uVar14;
          plVar8 = plVar8 + 1;
          uVar13 = uVar13 + 1;
        } while (uVar13 != uVar9);
      }
      iVar4 = *(int *)(lVar3 + 0x14);
      if ((*(int *)(lVar3 + 0x14) <= param_3) && (iVar4 = param_3, *(int *)(lVar3 + 0x18) < param_3)
         ) {
        iVar4 = *(int *)(lVar3 + 0x18);
      }
      *(int *)(lVar3 + 0x10) = iVar4;
      *(double *)(lVar3 + 0x20) = (double)iVar4;
      if (*(char *)(param_1 + 0xec) != '\0') {
        plVar12 = *(longlong **)(param_1 + 0xc0);
        plVar8 = plVar12 + *(int *)(param_1 + 0xcc);
        for (; plVar12 != plVar8; plVar12 = plVar12 + 1) {
          iVar4 = (int)uVar6;
          if ((*(byte *)(*plVar12 + 0xc) & 1) != 0) {
            if (*(int *)(*plVar12 + 8) == param_2) goto LAB_1812e509f;
            uVar6 = (ulonglong)(iVar4 + 1);
          }
        }
        iVar4 = -1;
LAB_1812e509f:
        uVar11 = iVar4 + 1;
        if (uVar11 < uVar10) {
          piVar7 = (int *)FUN_1812e4e20(param_1,local_18,uVar11);
          iVar4 = *piVar7;
          if (*(int *)(param_1 + 0x108) == 0) {
            uVar5 = FUN_1812e4d70(param_1);
            *(undefined4 *)(param_1 + 0x108) = uVar5;
          }
          iVar2 = *(int *)(param_1 + 0x108);
          uVar5 = FUN_1812e35c0(param_1,uVar11);
          FUN_1812e4b50(param_1,uVar5,iVar2 - iVar4);
        }
      }
      uStack_20 = *(undefined8 *)(param_1 + 0x28);
      local_28 = 0;
      FUN_181342870(param_1,&local_28,1);
      *(undefined1 *)(param_1 + 0xe9) = 1;
      uVar6 = 0;
      puVar1 = (uint *)(*(longlong *)(param_1 + 0xb8) + 0x18);
      LOCK();
      uVar10 = *puVar1;
      if (uVar10 == 0) {
        *puVar1 = 1;
      }
      else {
        uVar6 = (ulonglong)uVar10;
      }
      UNLOCK();
      if ((uVar10 == 0) &&
         (uVar6 = FUN_1812a6720(*(undefined8 *)(param_1 + 0xb8)), (char)uVar6 == '\0')) {
        uVar6 = *(ulonglong *)(param_1 + 0xb8);
        LOCK();
        *(undefined4 *)(uVar6 + 0x18) = 0;
        UNLOCK();
      }
    }
  }
  return uVar6;
}



############ FUN_ 1812e3240 size=203 ############

void FUN_1812e3240(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  longlong *plVar6;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  cVar3 = FUN_181343f20(param_1,*(undefined8 *)(param_2 + 8),1);
  if (cVar3 != '\0') {
    iVar5 = *(int *)(param_2 + 8);
    iVar4 = FUN_1812e3370();
    if ((iVar4 == 0) && (-1 < iVar5)) {
      plVar6 = *(longlong **)(param_1 + 0xc0);
      iVar4 = 0;
      plVar1 = plVar6 + *(int *)(param_1 + 0xcc);
      for (; plVar6 != plVar1; plVar6 = plVar6 + 1) {
        lVar2 = *plVar6;
        if (((*(byte *)(lVar2 + 0xc) & 1) != 0) &&
           (iVar4 = iVar4 + *(int *)(lVar2 + 0x10), iVar5 < iVar4)) {
          iVar5 = *(int *)(lVar2 + 8);
          goto LAB_1812e32bb;
        }
      }
    }
  }
  iVar5 = 0;
LAB_1812e32bb:
  if (iVar5 != *(int *)(param_1 + 0xfc)) {
    *(int *)(param_1 + 0xfc) = iVar5;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 1812e3320 size=68 ############

void FUN_1812e3320(longlong param_1,int param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (param_2 != *(int *)(param_1 + 0xfc)) {
    *(int *)(param_1 + 0xfc) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 1812e3500 size=178 ############

ulonglong FUN_1812e3500(longlong param_1)

{
  uint *puVar1;
  uint uVar2;
  ulonglong uVar3;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((((*(char *)(param_1 + 0xec) != '\0') && (0 < *(int *)(param_1 + 0x108))) &&
      (0 < *(int *)(param_1 + 0x28))) &&
     ((*(int *)(param_1 + 0xf0) == 0 && (*(int *)(param_1 + 0xf4) == 0)))) {
    FUN_1812e4b50(param_1,0);
  }
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  uStack_14 = 0;
  FUN_181342870(param_1,&local_18,1);
  *(undefined1 *)(param_1 + 0xe8) = 1;
  uVar3 = 0;
  puVar1 = (uint *)(*(longlong *)(param_1 + 0xb8) + 0x18);
  LOCK();
  uVar2 = *puVar1;
  if (uVar2 == 0) {
    *puVar1 = 1;
  }
  else {
    uVar3 = (ulonglong)uVar2;
  }
  UNLOCK();
  if (uVar2 == 0) {
    uVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0xb8));
    if ((char)uVar3 == '\0') {
      uVar3 = *(ulonglong *)(param_1 + 0xb8);
      LOCK();
      *(undefined4 *)(uVar3 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar3;
}



############ FUN_ 1812e37e0 size=340 ############

void FUN_1812e37e0(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined8 local_18;
  longlong lStack_10;
  
  (**(code **)(*param_1 + 0x28))();
  plVar4 = (longlong *)param_1[0x18];
  uVar6 = 0;
  plVar1 = plVar4 + *(int *)((longlong)param_1 + 0xcc);
  uVar5 = (ulonglong)((longlong)plVar1 + (7 - (longlong)plVar4)) >> 3;
  if (plVar1 < plVar4) {
    uVar5 = uVar6;
  }
  uVar7 = uVar6;
  if (uVar5 != 0) {
    do {
      lVar2 = *plVar4;
      if ((*(byte *)(lVar2 + 0xc) & 1) != 0) {
        *(double *)(lVar2 + 0x20) = (double)*(int *)(lVar2 + 0x10);
      }
      plVar4 = plVar4 + 1;
      uVar7 = uVar7 + 1;
    } while (uVar7 != uVar5);
  }
  *(undefined4 *)(param_1 + 0x1e) = 0;
  lStack_10 = param_1[5];
  local_18 = 0;
  FUN_181342870(param_1,&local_18,CONCAT71((int7)((ulonglong)plVar1 >> 8),1));
  plVar4 = (longlong *)param_1[0x18];
  plVar1 = plVar4 + *(int *)((longlong)param_1 + 0xcc);
  for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
    if ((*(byte *)(*plVar4 + 0xc) & 1) != 0) {
      if (*(int *)(*plVar4 + 8) == *(int *)((longlong)param_1 + 0xf4)) goto LAB_1812e38c7;
      uVar6 = (ulonglong)((int)uVar6 + 1);
    }
  }
  uVar6 = 0xffffffff;
LAB_1812e38c7:
  FUN_1812e3940(param_1,uVar6);
  FUN_1812e3240(param_1,param_2);
  if (((*(int *)((longlong)param_1 + 0xfc) != 0) && (*(char *)(param_2 + 0x59) == '\0')) &&
     ((*(uint *)(param_2 + 0x10) >> 5 & 1) == 0)) {
    (**(code **)(*param_1 + 0x158))(param_1,*(int *)((longlong)param_1 + 0xfc),param_2 + 0x10);
  }
  puVar3 = (undefined8 *)param_1[0x1c];
  param_1[0x1c] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  return;
}



############ FUN_ 1812e3940 size=167 ############

void FUN_1812e3940(longlong param_1,undefined4 param_2)

{
  longlong *plVar1;
  int iVar2;
  int iVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0xf4) != 0) {
    FUN_1812e5170(param_1,*(int *)(param_1 + 0xf4),param_2);
    *(undefined4 *)(param_1 + 0xf4) = 0;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
    iVar2 = *(int *)(param_1 + 0xdc);
    while (iVar2 = iVar2 + -1, -1 < iVar2) {
      plVar1 = *(longlong **)(*(longlong *)(param_1 + 0xd0) + (longlong)iVar2 * 8);
      (**(code **)(*plVar1 + 0x20))(plVar1,param_1,0);
      iVar3 = *(int *)(param_1 + 0xdc) + -1;
      if (iVar3 < iVar2) {
        iVar2 = iVar3;
      }
    }
  }
  return;
}



############ FUN_ 1812e4220 size=317 ############

void FUN_1812e4220(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  int iVar3;
  longlong *plVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = (undefined4)param_1[5];
  uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
  iVar6 = 0;
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  iVar2 = *(int *)((longlong)param_1 + 0xfc);
  param_1[0x1e] = 0;
  if (iVar2 != 0) {
    plVar4 = (longlong *)param_1[0x18];
    iVar9 = 0;
    plVar1 = plVar4 + *(int *)((longlong)param_1 + 0xcc);
    iVar5 = iVar6;
    for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
      if ((*(byte *)(*plVar4 + 0xc) & 1) != 0) {
        if (*(int *)(*plVar4 + 8) == iVar2) goto LAB_1812e42b3;
        iVar5 = iVar5 + 1;
      }
    }
    iVar5 = -1;
LAB_1812e42b3:
    plVar4 = (longlong *)param_1[0x18];
    plVar1 = plVar4 + *(int *)((longlong)param_1 + 0xcc);
    iVar7 = iVar6;
    iVar3 = iVar6;
    for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
      iVar9 = iVar9 + iVar7;
      iVar7 = iVar6;
      iVar8 = iVar3;
      if ((*(byte *)(*plVar4 + 0xc) & 1) != 0) {
        iVar7 = *(int *)(*plVar4 + 0x10);
        iVar8 = iVar3 + 1;
        if (iVar3 == iVar5) break;
      }
      iVar3 = iVar8;
    }
    *(int *)(param_1 + 0x20) = *(int *)(param_2 + 8) - iVar9;
    if ((*(uint *)(param_2 + 0x10) >> 5 & 1) != 0) {
      (**(code **)(*param_1 + 0x158))(param_1,iVar2);
    }
  }
  if ((*(char *)((longlong)param_1 + 0xeb) != '\0') && ((*(uint *)(param_2 + 0x10) >> 5 & 1) != 0))
  {
    (**(code **)(*param_1 + 0x170))(param_1,*(undefined4 *)((longlong)param_1 + 0xfc));
  }
  return;
}



############ FUN_ 1812e4370 size=69 ############

void FUN_1812e4370(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0xfc) != 0) {
    *(undefined4 *)(param_1 + 0xfc) = 0;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 1812e55c0 size=54 ############

void FUN_1812e55c0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812e62e0 size=71 ############

void FUN_1812e62e0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  FUN_1805022f0(*(undefined8 *)(param_1 + 0x200));
  return;
}



############ FUN_ 1812e8b30 size=77 ############

void FUN_1812e8b30(longlong param_1,float param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(float *)(param_1 + 0x1f8) != param_2) {
    *(float *)(param_1 + 0x1f8) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 1812e8b90 size=54 ############

void FUN_1812e8b90(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812e8bd0 size=54 ############

void FUN_1812e8bd0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812ea580 size=201 ############

void FUN_1812ea580(longlong param_1,longlong param_2)

{
  char cVar1;
  undefined8 local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined1 local_68 [8];
  undefined4 local_60;
  undefined4 local_5c;
  
  if (*(char *)(param_1 + 0x154) != '\0') {
    *(undefined1 *)(param_1 + 0x154) = 0;
    uStack_70 = *(undefined4 *)(param_1 + 0x28);
    uStack_6c = *(undefined4 *)(param_1 + 0x2c);
    local_78 = 0;
    FUN_181342870(0,&local_78,1);
    FUN_181339840(param_2,local_68,param_1);
    cVar1 = FUN_181343f20(param_1,CONCAT44(local_5c,local_60),1);
    if ((cVar1 != '\0') &&
       ((*(longlong *)(param_2 + 0x30) == param_1 ||
        ((*(char *)(*(longlong *)(param_1 + 0x170) + 0x200) == '\0' &&
         (*(char *)(*(longlong *)(param_1 + 0x170) + 0x201) == '\0')))))) {
      FUN_1812eab20(param_1);
    }
  }
  return;
}



############ FUN_ 1812eab20 size=317 ############

void FUN_1812eab20(longlong param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined ***pppuVar4;
  undefined8 *local_res8 [2];
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined **local_48;
  undefined8 *local_40;
  undefined ***local_10;
  
  if (*(char *)(param_1 + 0x155) == '\0') {
    *(undefined1 *)(param_1 + 0x155) = 1;
    FUN_1804de690(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    puVar3 = local_res8[0];
    if (local_res8[0] != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_res8[0] + 1) = *(int *)(local_res8[0] + 1) + 1;
      UNLOCK();
    }
    local_48 = std::_Func_impl_no_alloc<<lambda_f530379cd80e07e84c969bb712413871>,void>::vftable;
    local_40 = local_res8[0];
    local_10 = &local_48;
    pppuVar4 = &local_48;
    if (local_res8[0] != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_res8[0] + 1) = *(int *)(local_res8[0] + 1) + 1;
      UNLOCK();
      LOCK();
      piVar1 = (int *)(local_res8[0] + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      pppuVar4 = local_10;
      if (iVar2 == 1) {
        (**(code **)*local_res8[0])(local_res8[0],1);
        pppuVar4 = local_10;
      }
    }
    local_10 = pppuVar4;
    FUN_1812a7460(&local_48);
    uStack_4c = *(undefined4 *)(param_1 + 0x2c);
    uStack_50 = *(undefined4 *)(param_1 + 0x28);
    local_58 = 0;
    uStack_54 = 0;
    FUN_181342870(param_1,&local_58,1);
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8[0])(local_res8[0],1);
      }
    }
  }
  return;
}



############ FUN_ 1812eaac0 size=84 ############

void FUN_1812eaac0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(char *)(param_1 + 0x155) != '\0') {
    *(undefined1 *)(param_1 + 0x155) = 0;
    FUN_18134b590();
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 1812eac70 size=54 ############

void FUN_1812eac70(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812eacb0 size=54 ############

void FUN_1812eacb0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812eb380 size=54 ############

void FUN_1812eb380(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812ed490 size=54 ############

void FUN_1812ed490(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812eff30 size=60 ############

void FUN_1812eff30(longlong param_1,undefined1 param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0xc0) = param_2;
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812f0070 size=61 ############

void FUN_1812f0070(longlong param_1,undefined8 param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined8 *)(param_1 + 200) = param_2;
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1812f1340 size=224 ############

void FUN_1812f1340(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  undefined4 uVar5;
  longlong *plVar6;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *param_1 = juce::PopupMenu::HelperClasses::ItemComponent::vftable;
  lVar2 = param_1[0x27];
  if (lVar2 != 0) {
    *(undefined8 *)(lVar2 + 200) = 0;
    uStack_10 = *(undefined4 *)(lVar2 + 0x28);
    uStack_c = *(undefined4 *)(lVar2 + 0x2c);
    local_18 = 0;
    FUN_181342870(lVar2,&local_18,1,param_4,0xfffffffffffffffe);
  }
  plVar3 = (longlong *)param_1[8];
  plVar6 = plVar3;
  do {
    if (plVar6 == plVar3 + *(int *)((longlong)param_1 + 0x4c)) {
      uVar5 = 0xffffffff;
LAB_1812f13cb:
      FUN_181343a90(param_1,uVar5,1);
      puVar4 = (undefined8 *)param_1[0x27];
      if (puVar4 != (undefined8 *)0x0) {
        piVar1 = (int *)(puVar4 + 0x17);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      FUN_1804d80a0(param_1 + 0x16);
      FUN_18134caa0(param_1);
      return;
    }
    if (param_1[0x27] == *plVar6) {
      uVar5 = (undefined4)((longlong)plVar6 - (longlong)plVar3 >> 3);
      goto LAB_1812f13cb;
    }
    plVar6 = plVar6 + 1;
  } while( true );
}



############ FUN_ 181333cd0 size=571 ############

void FUN_181333cd0(longlong param_1,longlong param_2,char param_3,undefined8 param_4,char param_5)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong lVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  undefined4 local_res20;
  undefined8 local_68;
  ulonglong uStack_60;
  undefined4 local_58;
  uint local_54;
  
  lVar1 = param_1 + 0x200;
  if (lVar1 != param_2) {
    FUN_1804aaf40(lVar1);
    uVar2 = *(undefined8 *)(param_2 + 0x18);
    *(undefined8 *)(param_1 + 0x210) = *(undefined8 *)(param_2 + 0x10);
    *(undefined8 *)(param_1 + 0x218) = uVar2;
    *(undefined1 *)(param_1 + 0x220) = *(undefined1 *)(param_2 + 0x20);
  }
  *(undefined1 *)(param_1 + 0x238) = 1;
  local_res20 = CONCAT13(0x7f,(int3)DAT_18262b5b8);
  *(undefined4 *)(param_1 + 0x1f0) = local_res20;
  *(undefined4 *)(param_1 + 500) = 3;
  *(undefined4 *)(param_1 + 0x1f8) = 0;
  *(undefined4 *)(param_1 + 0x1fc) = 0;
  lVar3 = param_1 + 0x1e8;
  if (param_5 == '\0') {
    lVar3 = 0;
  }
  if (*(longlong *)(param_1 + 0x60) != lVar3) {
    *(longlong *)(param_1 + 0x60) = lVar3;
    uStack_60 = *(undefined8 *)(param_1 + 0x28);
    local_68 = 0;
    FUN_181342870(param_1,&local_68,1);
  }
  if (param_3 != '\0') {
    fVar4 = *(float *)(param_1 + 0x210);
    fVar5 = *(float *)(param_1 + 0x218);
    fVar6 = *(float *)(param_1 + 0x214) - fVar4;
    fVar7 = *(float *)(param_1 + 0x21c) - fVar5;
    if (param_5 != '\0') {
      fVar4 = fVar4 - DAT_1824c4334;
      fVar6 = fVar6 + DAT_1824c43d8;
      fVar5 = fVar5 - DAT_1824c4334;
      fVar7 = fVar7 + DAT_1824c43d8;
      if (fVar6 <= 0.0) {
        fVar6 = 0.0;
      }
      if (fVar7 <= 0.0) {
        fVar7 = 0.0;
      }
    }
    local_54 = (uint)fVar5 ^ DAT_1824c4f30;
    local_68 = 0x3f800000;
    uStack_60 = (ulonglong)((uint)fVar4 ^ DAT_1824c4f30);
    local_58 = 0x3f800000;
    FUN_18129b680(lVar1,&local_68);
    FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),
                  *(int *)(param_1 + 0x22c) + 1 +
                  (int)(*(float *)(param_1 + 0x23c) + fVar6) + *(int *)(param_1 + 0x234),
                  *(int *)(param_1 + 0x228) + 1 +
                  (int)(*(float *)(param_1 + 0x23c) + fVar7) + *(int *)(param_1 + 0x230));
  }
  uStack_60 = *(undefined8 *)(param_1 + 0x28);
  local_68 = 0;
  FUN_181342870(param_1,&local_68,1);
  return;
}



############ FUN_ 181317a90 size=480 ############

void FUN_181317a90(longlong *param_1,undefined4 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 uVar8;
  undefined8 *local_res8;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  lVar3 = FUN_181318140(param_1,*(undefined4 *)(param_1[0x16] + 0x108));
  lVar6 = 0;
  if (param_1[0x19] != 0) {
    lVar6 = *(longlong *)(param_1[0x19] + 0x10);
  }
  if (lVar3 != lVar6) {
    lVar6 = param_1[0x19];
    if ((lVar6 != 0) && (*(longlong *)(lVar6 + 0x10) != 0)) {
      if (lVar6 == 0) {
        plVar4 = (longlong *)0x0;
      }
      else {
        plVar4 = *(longlong **)(lVar6 + 0x10);
      }
      (**(code **)(*plVar4 + 0x58))(plVar4,0);
      lVar6 = 0;
      if (param_1[0x19] != 0) {
        lVar6 = *(longlong *)(param_1[0x19] + 0x10);
      }
      plVar4 = (longlong *)param_1[8];
      for (plVar7 = plVar4; plVar7 != plVar4 + *(int *)((longlong)param_1 + 0x4c);
          plVar7 = plVar7 + 1) {
        if (lVar6 == *plVar7) {
          uVar5 = (undefined4)((longlong)plVar7 - (longlong)plVar4 >> 3);
          goto LAB_181317b37;
        }
      }
      uVar5 = 0xffffffff;
LAB_181317b37:
      FUN_181343a90(param_1,uVar5,1);
    }
    plVar4 = (longlong *)FUN_1804de690(&local_res8,lVar3);
    lVar6 = param_1[0x19];
    param_1[0x19] = *plVar4;
    *plVar4 = lVar6;
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    lVar6 = param_1[0x19];
    if ((lVar6 != 0) && (*(longlong *)(lVar6 + 0x10) != 0)) {
      if ((lVar6 != 0) && (*(longlong *)(lVar6 + 0x10) != 0)) {
        FUN_181343cc0(param_1,*(longlong *)(lVar6 + 0x10),0xffffffff);
      }
      if (param_1[0x19] == 0) {
        uVar8 = 0;
      }
      else {
        uVar8 = *(undefined8 *)(param_1[0x19] + 0x10);
      }
      FUN_181341b10(uVar8);
      plVar4 = (longlong *)0x0;
      if (param_1[0x19] != 0) {
        plVar4 = *(longlong **)(param_1[0x19] + 0x10);
      }
      (**(code **)(*plVar4 + 0x58))(plVar4,1);
      uVar8 = 0;
      if (param_1[0x19] != 0) {
        uVar8 = *(undefined8 *)(param_1[0x19] + 0x10);
      }
      FUN_181344f60(uVar8,1);
    }
    uStack_20 = (undefined4)param_1[5];
    uStack_1c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_28 = 0;
    uStack_24 = 0;
    FUN_181342870(param_1,&local_28,1);
  }
  (**(code **)(*param_1 + 0x108))(param_1);
                    /* WARNING: Could not recover jumptable at 0x000181317c69. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x158))(param_1,param_2,param_3);
  return;
}



############ FUN_ 18131d6c0 size=82 ############

void FUN_18131d6c0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x12d) = 0;
  FUN_1812a7720(param_1 + 0xc0);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 18131d940 size=165 ############

void FUN_18131d940(longlong *param_1)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((undefined **)*param_1 == juce::ScrollBar::vftable) {
    plVar1 = (longlong *)FUN_18134adf0();
    if (*(code **)(*plVar1 + 0x20) == FUN_181311b20) {
      lVar2 = 0;
    }
    else {
      lVar2 = (**(code **)(*plVar1 + 0x20))(plVar1);
    }
    if (param_1[0xc] != lVar2) {
      param_1[0xc] = lVar2;
      uStack_10 = (undefined4)param_1[5];
      uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
      local_18 = 0;
      FUN_181342870(param_1,&local_18,1);
    }
    if ((*(byte *)(param_1 + 0x15) & 2) != 0) {
                    /* WARNING: Could not recover jumptable at 0x00018131d9cc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*param_1 + 0x108))(param_1);
      return;
    }
  }
  else {
    (*(code *)((undefined **)*param_1)[0x14])(param_1);
  }
  return;
}



############ FUN_ 18131dd90 size=136 ############

void FUN_18131dd90(longlong *param_1)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  plVar1 = (longlong *)FUN_18134adf0();
  if (*(code **)(*plVar1 + 0x20) == FUN_181311b20) {
    lVar2 = 0;
  }
  else {
    lVar2 = (**(code **)(*plVar1 + 0x20))(plVar1);
  }
  if (param_1[0xc] != lVar2) {
    param_1[0xc] = lVar2;
    uStack_10 = (undefined4)param_1[5];
    uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {
                    /* WARNING: Could not recover jumptable at 0x00018131de03. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x108))(param_1);
    return;
  }
  return;
}



############ FUN_ 18131f6b0 size=107 ############

void FUN_18131f6b0(longlong param_1,int *param_2)

{
  undefined8 uVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((((*(int *)(param_1 + 0xc0) != *param_2) || (*(int *)(param_1 + 0xc4) != param_2[1])) ||
      (*(int *)(param_1 + 200) != param_2[2])) || (*(int *)(param_1 + 0xcc) != param_2[3])) {
    uVar1 = *(undefined8 *)(param_2 + 2);
    *(undefined8 *)(param_1 + 0xc0) = *(undefined8 *)param_2;
    *(undefined8 *)(param_1 + 200) = uVar1;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 181321e70 size=54 ############

void FUN_181321e70(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 181321eb0 size=54 ############

void FUN_181321eb0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 181325410 size=576 ############

void FUN_181325410(longlong param_1,longlong *param_2,undefined8 param_3,int param_4)

{
  longlong *plVar1;
  uint uVar2;
  ulonglong uVar3;
  bool bVar4;
  DWORD DVar5;
  uint *puVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  uint uVar9;
  longlong lVar10;
  longlong local_res10;
  longlong local_68 [2];
  undefined1 local_58 [16];
  undefined8 local_48;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  local_68[1] = 0xfffffffffffffffe;
  uVar9 = *(int *)((longlong)param_2 + 0xc) - 1;
  if (-1 < (int)uVar9) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    lVar10 = (longlong)(int)uVar9 << 3;
    do {
      if (uVar9 < *(uint *)((longlong)param_2 + 0xc)) {
        puVar7 = (undefined8 *)(*param_2 + lVar10);
      }
      else {
        if (*(int *)(*plVar1 + 0xc) < DAT_18267af70) {
          _Init_thread_header(&DAT_18267af70);
          if (DAT_18267af70 == -1) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
        }
        puVar7 = &DAT_18267af68;
      }
      FUN_181241890(&local_res10,puVar7);
      puVar7 = (undefined8 *)FUN_18049a930(local_58,&local_res10);
      DVar5 = GetFileAttributesW((LPCWSTR)*puVar7);
      if (((DVar5 & 0x10) == 0) || (DVar5 == 0xffffffff)) {
        bVar4 = false;
      }
      else {
        bVar4 = true;
      }
      if (bVar4) {
        if ((*(int *)(param_1 + 0x50) == 0) ||
           (uVar3 = (longlong)
                    (((*(int *)(*(longlong *)(param_1 + 0xf0) + 0x18c) -
                      *(int *)(*(longlong *)(param_1 + 0xf0) + 0x24)) - *(int *)(param_1 + 0x4c)) +
                    param_4) / (longlong)*(int *)(param_1 + 0x11c), uVar8 = uVar3 & 0xffffffff,
           *(uint *)(param_1 + 0x118) <= (uint)uVar3)) {
          uVar8 = 0xffffffff;
        }
        local_68[0] = local_res10;
        if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
          UNLOCK();
        }
        FUN_180489070(param_1 + 0x10,uVar8,local_68);
        puVar6 = (uint *)(local_68[0] + -0x10);
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
        FUN_181348f10();
        uStack_3c = *(undefined4 *)(param_1 + 0x54);
        uStack_40 = *(undefined4 *)(param_1 + 0x50);
        local_48 = 0;
        local_38 = 0;
        uStack_34 = 0;
        uStack_30 = uStack_40;
        uStack_2c = uStack_3c;
        FUN_181342870(param_1 + 0x28,&local_38,1);
        FUN_181325eb0(param_1 + -0xc0);
      }
      puVar6 = (uint *)(local_res10 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      lVar10 = lVar10 + -8;
      uVar9 = uVar9 - 1;
    } while (-1 < (int)uVar9);
  }
  return;
}



############ FUN_ 1813266d0 size=68 ############

void FUN_1813266d0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x1be) = 0;
  uStack_10 = *(undefined4 *)(param_1 + -0x98);
  uStack_c = *(undefined4 *)(param_1 + -0x94);
  local_18 = 0;
  FUN_181342870(param_1 + -0xc0,&local_18,1);
  return;
}



############ FUN_ 181326720 size=68 ############

void FUN_181326720(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x1be) = 1;
  uStack_10 = *(undefined4 *)(param_1 + -0x98);
  uStack_c = *(undefined4 *)(param_1 + -0x94);
  local_18 = 0;
  FUN_181342870(param_1 + -0xc0,&local_18,1);
  return;
}



############ FUN_ 181326770 size=328 ############

void FUN_181326770(longlong param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  DWORD DVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  uint *_Memory;
  char *local_res8;
  char *local_48;
  undefined8 local_40;
  undefined1 local_38 [8];
  undefined1 local_30 [8];
  undefined8 local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  local_40 = 0xfffffffffffffffe;
  *(undefined1 *)(param_1 + 0x1be) = 0;
  uStack_1c = *(undefined4 *)(param_1 + -0x94);
  uStack_20 = *(undefined4 *)(param_1 + -0x98);
  local_28 = 0;
  local_18 = 0;
  uStack_14 = 0;
  uStack_10 = uStack_20;
  uStack_c = uStack_1c;
  FUN_181342870(param_1 + -0xc0,&local_18,CONCAT71((uint7)(uint3)((uint)uStack_1c >> 8),1));
  uVar4 = FUN_181249970(param_2,0);
  FUN_181241890(&local_res8,uVar4);
  if (*local_res8 != '\0') {
    puVar5 = (undefined8 *)FUN_18049a930(local_38,&local_res8);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar5);
    bVar2 = true;
    if (DVar3 != 0xffffffff) goto LAB_18132681e;
  }
  bVar2 = false;
LAB_18132681e:
  if (bVar2) {
    puVar5 = (undefined8 *)FUN_18049a930(local_30,&local_res8);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar5);
    bVar2 = false;
    if (((DVar3 & 0x10) != 0) && (DVar3 != 0xffffffff)) {
      bVar2 = true;
    }
    if (bVar2 == (bool)*(char *)(param_1 + 0x1bc)) {
      local_48 = local_res8;
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
      FUN_181326360(param_1 + -0xc0,&local_48);
    }
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 181326e30 size=504 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181326e30(longlong *param_1)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined ***pppuVar3;
  longlong lVar4;
  undefined ***pppuVar5;
  undefined1 auStack_d8 [32];
  undefined8 local_b8;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined8 local_a8;
  undefined **local_98;
  longlong *local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_d8;
  puVar1 = (undefined8 *)param_1[0x4e];
  param_1[0x4e] = 0;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  lVar4 = FUN_18134adf0(param_1);
  lVar4 = (**(code **)(*(longlong *)(lVar4 + 0x88) + 8))((longlong *)(lVar4 + 0x88),param_1 + 0x52);
  puVar1 = (undefined8 *)param_1[0x4e];
  param_1[0x4e] = lVar4;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  plVar2 = (longlong *)param_1[0x4e];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x58))(plVar2,1);
    FUN_181343cc0(param_1,plVar2,0xffffffff);
  }
  lVar4 = param_1[0x4e];
  if (*(int *)(lVar4 + 0x198) != 1) {
    *(undefined4 *)(lVar4 + 0x198) = 1;
    uStack_ac = *(undefined4 *)(lVar4 + 0x2c);
    uStack_b0 = *(undefined4 *)(lVar4 + 0x28);
    local_b8 = 0;
    FUN_181342870(lVar4,&local_b8,1);
  }
  lVar4 = param_1[0x4e];
  pppuVar5 = (undefined ***)(lVar4 + 0xc0);
  local_98 = std::_Func_impl_no_alloc<<lambda_85512f580c616915550cc64f1708fb88>,void>::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_90 = param_1;
  local_20 = (longlong *)(*(code *)PTR_FUN_18249e738)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar3 = *(undefined ****)(lVar4 + 0xf8);
  if (pppuVar3 != (undefined ***)0x0) {
    if (pppuVar3 == pppuVar5) {
      local_60 = (undefined ***)(*(code *)(*pppuVar3)[1])(pppuVar3,&local_98);
      pppuVar3 = *(undefined ****)(lVar4 + 0xf8);
      if (pppuVar3 == (undefined ***)0x0) goto LAB_181326fc6;
      (*(code *)(*pppuVar3)[4])(pppuVar3,pppuVar3 != pppuVar5);
      pppuVar3 = local_60;
    }
    local_60 = pppuVar3;
    *(undefined8 *)(lVar4 + 0xf8) = 0;
  }
LAB_181326fc6:
  FUN_180488560(pppuVar5,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])
              (local_60,CONCAT71((int7)((ulonglong)&local_98 >> 8),local_60 != &local_98));
  }
  (**(code **)(*param_1 + 0x108))(param_1);
}



############ FUN_ 181327cc0 size=338 ############

undefined8 *
FUN_181327cc0(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong lVar2;
  uint uVar3;
  bool bVar4;
  undefined1 *local_res10;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  local_res10 = &DAT_1821dbf98;
  FUN_1812e8530(param_1,&local_res10,param_3,param_4,0xfffffffffffffffe);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  param_1[0x22] = param_2;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  puVar1 = param_1 + 0x25;
  *param_1 = juce::FileListComponent::vftable;
  param_1[0x16] = juce::FileListComponent::vftable;
  param_1[0x21] = juce::FileListComponent::vftable;
  *puVar1 = juce::FileListComponent::vftable;
  param_1[0x26] = juce::FileListComponent::vftable;
  lVar2 = *(longlong *)(param_2 + 0x48);
  param_1[0x27] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x28] = &DAT_1821dbf98;
  if ((undefined8 *)param_1[0x18] != puVar1) {
    param_1[0x18] = puVar1;
    uStack_1c = *(undefined4 *)((longlong)param_1 + 0x2c);
    uStack_20 = *(undefined4 *)(param_1 + 5);
    local_28 = 0;
    uStack_24 = 0;
    FUN_181342870(param_1,&local_28,1);
    FUN_181348f10(param_1);
  }
  FUN_1812a73a0(param_1[0x22],param_1 + 0x26);
  return param_1;
}



############ FUN_ 18132ec20 size=85 ############

undefined8 FUN_18132ec20(longlong param_1,int param_2,int param_3)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0xf8) != param_2) {
    return 0;
  }
  if (*(int *)(param_1 + 0xf8) != param_3) {
    *(int *)(param_1 + 0xf8) = param_3;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return 1;
}



############ FUN_ 1813303c0 size=97 ############

void FUN_1813303c0(longlong param_1,undefined8 param_2)

{
  char cVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  cVar1 = FUN_1812a0d20(param_1 + 0x160);
  if (cVar1 != '\0') {
    FUN_1812a0f40(param_1 + 0x160,param_2);
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 1813333d0 size=75 ############

void FUN_1813333d0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181336e60();
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  FUN_181333460(param_1);
  return;
}



############ FUN_ 1813336c0 size=54 ############

void FUN_1813336c0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 181333830 size=54 ############

void FUN_181333830(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 181334ad0 size=54 ############

void FUN_181334ad0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 181335030 size=54 ############

void FUN_181335030(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 181335070 size=80 ############

void FUN_181335070(longlong *param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181336e60();
  uStack_10 = (undefined4)param_1[5];
  uStack_c = *(undefined4 *)((longlong)param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
                    /* WARNING: Could not recover jumptable at 0x0001813350b9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x178))(param_1);
  return;
}



############ FUN_ 1813362d0 size=68 ############

void FUN_1813362d0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181336e60();
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 181336320 size=68 ############

void FUN_181336320(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181336e60();
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 181336f10 size=68 ############

void .?AVSoothe2_DynamicCryptoManager@eden@pace@@::vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
               (longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  FUN_181336e60();
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1813451b0 size=92 ############

void FUN_1813451b0(longlong param_1,longlong param_2)

{
  undefined8 *puVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(longlong *)(param_1 + 0x68) != param_2) {
    puVar1 = *(undefined8 **)(param_1 + 0x68);
    *(longlong *)(param_1 + 0x68) = param_2;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(param_1,&local_18,1);
  }
  return;
}



############ FUN_ 181349b80 size=107 ############

void FUN_181349b80(longlong param_1,int *param_2)

{
  undefined8 uVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((((*(int *)(param_1 + 0x1e8) != *param_2) || (*(int *)(param_1 + 0x1ec) != param_2[1])) ||
      (*(int *)(param_1 + 0x1f0) != param_2[2])) || (*(int *)(param_1 + 500) != param_2[3])) {
    uVar1 = *(undefined8 *)(param_2 + 2);
    *(undefined8 *)(param_1 + 0x1e8) = *(undefined8 *)param_2;
    *(undefined8 *)(param_1 + 0x1f0) = uVar1;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 181349c00 size=68 ############

void FUN_181349c00(longlong param_1,int param_2)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(int *)(param_1 + 0x1c0) != param_2) {
    *(int *)(param_1 + 0x1c0) = param_2;
    uStack_10 = *(undefined4 *)(param_1 + 0x28);
    uStack_c = *(undefined4 *)(param_1 + 0x2c);
    local_18 = 0;
    FUN_181342870(0,&local_18,1);
  }
  return;
}



############ FUN_ 1813be090 size=154 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813be090(longlong param_1)

{
  undefined1 auStack_48 [32];
  longlong local_28;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_48;
  *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
  (**(code **)(*(longlong *)(param_1 + -0xb0) + 0x158))(param_1 + -0xb0);
  uStack_20 = *(undefined4 *)(param_1 + -0x88);
  uStack_1c = *(undefined4 *)(param_1 + -0x84);
  local_28 = 0;
  FUN_181342870(param_1 + -0xb0,&local_28,1);
  _ftime64_s(&local_28);
  *(ulonglong *)(param_1 + 0x18) = local_28 * 1000 + (ulonglong)(ushort)uStack_20;
}



############ FUN_ 18149eda0 size=173 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18149eda0(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined8 local_28;
  undefined8 *local_20;
  ulonglong local_18;
  
  local_28 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_20 = param_3;
  FUN_18133e970(*(undefined8 *)(param_1 + 0x48),0 < *(int *)(*(longlong *)(param_1 + 0x58) + 0x48));
  FUN_18133e970(*(undefined8 *)(param_1 + 0x50),
                *(int *)(*(longlong *)(param_1 + 0x58) + 0x48) <
                *(int *)(*(longlong *)(param_1 + 0x58) + 0x44) + -1);
  uStack_2c = *(undefined4 *)(param_1 + -0x9c);
  uStack_30 = *(undefined4 *)(param_1 + -0xa0);
  local_38 = 0;
  FUN_181342870(param_1 + -200,&local_38,1);
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 18149eea0 size=189 ############

void FUN_18149eea0(longlong param_1,float *param_2)

{
  undefined1 uVar1;
  int iVar2;
  int iVar3;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  iVar3 = (int)*param_2;
  iVar2 = (int)param_2[1];
  if (((((iVar3 < *(int *)(param_1 + 0x2e8)) || (iVar2 < *(int *)(param_1 + 0x2ec))) ||
       (*(int *)(param_1 + 0x2e8) + *(int *)(param_1 + 0x2f0) <= iVar3)) ||
      (*(int *)(param_1 + 0x2f4) + *(int *)(param_1 + 0x2ec) <= iVar2)) &&
     (((iVar3 < *(int *)(param_1 + 0x2f8) || (iVar2 < *(int *)(param_1 + 0x2fc))) ||
      ((*(int *)(param_1 + 0x2f8) + *(int *)(param_1 + 0x300) <= iVar3 ||
       (*(int *)(param_1 + 0x304) + *(int *)(param_1 + 0x2fc) <= iVar2)))))) {
    uVar1 = 0;
  }
  else {
    uVar1 = 1;
  }
  *(undefined1 *)(param_1 + 0x308) = uVar1;
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,CONCAT71((uint7)(uint3)((uint)iVar2 >> 8),1));
  return;
}



############ FUN_ 18149ef70 size=61 ############

void FUN_18149ef70(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x308) = 0;
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1814c1710 size=61 ############

void FUN_1814c1710(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + -0x270);
  uStack_c = *(undefined4 *)(param_1 + -0x26c);
  local_18 = 0;
  FUN_181342870(param_1 + -0x298,&local_18,1);
  return;
}



############ FUN_ 1814ce8a0 size=54 ############

void FUN_1814ce8a0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1814ce8e0 size=54 ############

void FUN_1814ce8e0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(0,&local_18,1);
  return;
}



############ FUN_ 1814cf1b0 size=61 ############

void FUN_1814cf1b0(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_10 = *(undefined4 *)(param_1 + -0xa0);
  uStack_c = *(undefined4 *)(param_1 + -0x9c);
  local_18 = 0;
  FUN_181342870(param_1 + -200,&local_18,1);
  return;
}



############ FUN_ 1814e6e40 size=272 ############

void FUN_1814e6e40(longlong param_1)

{
  float fVar1;
  double dVar2;
  int iVar3;
  undefined8 local_38;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  iVar3 = *(int *)(param_1 + 0x1f0) + 1;
  *(int *)(param_1 + 0x1f0) = iVar3;
  if (*(int *)(param_1 + 0x1ec) == 0) {
    fVar1 = *(float *)(param_1 + 0x1e8);
    dVar2 = pow((double)iVar3,DAT_1824c41e8);
    *(float *)(param_1 + 0x1e4) =
         (float)((double)((float)(iVar3 * 4) / fVar1) -
                dVar2 * (double)(DAT_1824c4334 / (fVar1 * fVar1)));
    if (fVar1 < (float)iVar3) {
      *(undefined8 *)(param_1 + 0x1ec) = 1;
      *(undefined4 *)(param_1 + 0x1e4) = 0;
    }
  }
  else if (0x1e < iVar3) {
    *(undefined8 *)(param_1 + 0x1ec) = 0;
    *(undefined4 *)(param_1 + 0x1e4) = 0;
  }
  uStack_30 = *(undefined4 *)(param_1 + -0x1b8);
  uStack_2c = *(undefined4 *)(param_1 + -0x1b4);
  local_38 = 0;
  FUN_181342870(param_1 + -0x1e0,&local_38,1);
  return;
}



############ FUN_ 1814ea170 size=315 ############

void FUN_1814ea170(longlong param_1,longlong param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  iVar3 = 0;
  if (0 < *(int *)(param_1 + 0xf4)) {
    do {
      iVar4 = 0;
      if (0 < *(int *)(param_1 + 0xf0)) {
        do {
          piVar2 = (int *)((longlong)(iVar3 * *(int *)(param_1 + 0xf0) + iVar4) * 0x10 +
                          *(longlong *)(param_1 + 0x120));
          if ((((*piVar2 <= (int)*(float *)(param_2 + 0x28)) &&
               (iVar1 = piVar2[1], iVar1 <= (int)*(float *)(param_2 + 0x2c))) &&
              ((int)*(float *)(param_2 + 0x28) < *piVar2 + piVar2[2])) &&
             ((int)*(float *)(param_2 + 0x2c) < piVar2[3] + iVar1)) {
            *(int *)(param_1 + 0xe8) = iVar4;
            *(int *)(param_1 + 0xec) = iVar3;
            *(longlong *)(param_1 + 0x118) = (longlong)(*(int *)(param_1 + 0xf0) * iVar3 + iVar4);
            FUN_1811bf680(*(undefined8 *)(param_1 + 0xd8),piVar2,
                          CONCAT71((uint7)(uint3)((uint)iVar1 >> 8),1));
            FUN_1811bf680(*(undefined8 *)(param_1 + 0xe0));
          }
          iVar4 = iVar4 + 1;
        } while (iVar4 < *(int *)(param_1 + 0xf0));
      }
      iVar3 = iVar3 + 1;
    } while (iVar3 < *(int *)(param_1 + 0xf4));
  }
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  FUN_181342870(param_1,&local_18,1);
  return;
}



############ FUN_ 1814eb540 size=108 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814eb540(longlong param_1)

{
  bool bVar1;
  float fVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  fVar2 = *(float *)(param_1 + 0x54) + _DAT_1824c3c74;
  bVar1 = DAT_1824c3ea4 <= fVar2;
  *(float *)(param_1 + 0x54) = fVar2;
  if (bVar1) {
    *(undefined4 *)(param_1 + 0x54) = 0;
    FUN_1812a7720();
  }
  uStack_10 = *(undefined4 *)(param_1 + -0x1b8);
  uStack_c = *(undefined4 *)(param_1 + -0x1b4);
  local_18 = 0;
  FUN_181342870(param_1 + -0x1e0,&local_18,1);
  return;
}



############ FUN_ 1814ec700 size=121 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814ec700(longlong param_1,undefined8 param_2,undefined8 *param_3)

{
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined8 local_28;
  undefined8 *local_20;
  ulonglong local_18;
  
  local_28 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  uStack_2c = *(undefined4 *)(param_1 + -0x334);
  uStack_30 = *(undefined4 *)(param_1 + -0x338);
  local_38 = 0;
  local_20 = param_3;
  FUN_181342870(param_1 + -0x360,&local_38,1);
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
}



############ FUN_ 181513f00 size=68 ############

void FUN_181513f00(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x89) = 0;
  uStack_10 = *(undefined4 *)(param_1 + -0xb8);
  uStack_c = *(undefined4 *)(param_1 + -0xb4);
  local_18 = 0;
  FUN_181342870(param_1 + -0xe0,&local_18,1);
  return;
}



############ FUN_ 181513f50 size=68 ############

void FUN_181513f50(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)(param_1 + 0x89) = 1;
  uStack_10 = *(undefined4 *)(param_1 + -0xb8);
  uStack_c = *(undefined4 *)(param_1 + -0xb4);
  local_18 = 0;
  FUN_181342870(param_1 + -0xe0,&local_18,1);
  return;
}



############ FUN_ 1815922b0 size=490 ############

void FUN_1815922b0(longlong param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  float fVar5;
  undefined4 uVar6;
  int local_res8;
  int local_res18;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48 [16];
  undefined1 local_38 [32];
  
  iVar1 = *(int *)(param_1 + 0x28);
  iVar2 = *(int *)(param_1 + 0x2c);
  if (**(longlong **)(param_1 + 0xb8) == 0) {
    lVar3 = *(longlong *)(param_1 + 200);
    if (*(longlong *)(lVar3 + 0x38) == 0) {
      puVar4 = &local_78;
      local_78 = *(undefined8 *)(lVar3 + 0x20);
      uStack_70 = *(undefined8 *)(lVar3 + 0x28);
    }
    else {
      puVar4 = (undefined8 *)FUN_1804b1290(lVar3 + 0x20,local_48);
    }
    local_res8 = (int)*puVar4 + (int)puVar4[1] / 2;
  }
  else {
    *(undefined4 *)(param_1 + 0xd4) = *(undefined4 *)(**(longlong **)(param_1 + 0xb8) + 0x188);
    fVar5 = (float)FUN_180487300(**(undefined8 **)(param_1 + 0xc0));
    local_res8 = SUB84((double)(fVar5 * (float)iVar1) + DAT_1824c4520,0);
  }
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 8);
  if ((lVar3 == 0) && (*(char *)(*(longlong *)(param_1 + 0xc0) + 0x20) == '\0')) {
    lVar3 = *(longlong *)(param_1 + 200);
    if (*(longlong *)(lVar3 + 0x38) == 0) {
      puVar4 = &local_68;
      local_68 = *(undefined8 *)(lVar3 + 0x20);
      uStack_60 = *(undefined8 *)(lVar3 + 0x28);
    }
    else {
      puVar4 = (undefined8 *)FUN_1804b1290(lVar3 + 0x20,local_38);
    }
    local_res18 = *(int *)((longlong)puVar4 + 0xc) / 2 + *(int *)((longlong)puVar4 + 4);
  }
  else {
    if (*(char *)(*(longlong *)(param_1 + 0xc0) + 0x20) == '\0') {
      uVar6 = *(undefined4 *)(lVar3 + 0x188);
    }
    else {
      uVar6 = 0;
    }
    *(undefined4 *)(param_1 + 0xd8) = uVar6;
    fVar5 = (float)FUN_180487300(*(undefined8 *)(*(longlong *)(param_1 + 0xc0) + 8));
    local_res18 = SUB84((double)((float)iVar2 - fVar5 * (float)iVar2) + DAT_1824c4520,0);
  }
  FUN_181344690(*(undefined8 *)(param_1 + 200),CONCAT44(local_res18,local_res8));
  uStack_50 = *(undefined8 *)(*(longlong *)(param_1 + 200) + 0x28);
  local_58 = 0;
  FUN_181342870(*(longlong *)(param_1 + 200),&local_58,1);
  return;
}



############ FUN_ 1815d3470 size=84 ############

void FUN_1815d3470(longlong param_1)

{
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(longlong *)(param_1 + -0x58) != 0) {
    *(bool *)(param_1 + 0x27c) = *(char *)(param_1 + 0x27c) == '\0';
    uStack_10 = *(undefined4 *)(param_1 + -0x1f8);
    uStack_c = *(undefined4 *)(param_1 + -500);
    local_18 = 0;
    FUN_181342870(param_1 + -0x220,&local_18,1);
  }
  return;
}



############ FUN_ 1815fb410 size=66 ############

void FUN_1815fb410(longlong *param_1,undefined1 param_2)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  *(undefined1 *)((longlong)param_1 + 0x15) = param_2;
  lVar1 = (**(code **)(*param_1 + 8))();
  uStack_10 = *(undefined4 *)(lVar1 + 0x28);
  uStack_c = *(undefined4 *)(lVar1 + 0x2c);
  local_18 = 0;
  FUN_181342870(lVar1,&local_18,1);
  return;
}



############ FUN_ 181a069b0 size=139 ############

void FUN_181a069b0(longlong param_1)

{
  longlong *plVar1;
  char cVar2;
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x168);
  cVar2 = (**(code **)(*plVar1 + 0xe8))(plVar1);
  if (cVar2 == '\0') {
    FUN_181a06340(param_1 + -0xb0,0);
    *(undefined1 *)(param_1 + 0x130) = 1;
    (**(code **)(*plVar1 + 0xf0))(plVar1);
  }
  uStack_10 = *(undefined4 *)(param_1 + -0x88);
  uStack_c = *(undefined4 *)(param_1 + -0x84);
  local_18 = 0;
  FUN_181342870(param_1 + -0xb0,&local_18,1);
  return;
}



############ FUN_ 1812e6c00 size=290 ############

void FUN_1812e6c00(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                  int param_5)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  float *pfVar4;
  int local_98 [2];
  undefined8 *local_90;
  int local_88;
  int local_84;
  undefined8 *local_80;
  undefined8 local_78;
  undefined1 local_70 [104];
  
  local_78 = 0xfffffffffffffffe;
  lVar3 = FUN_18133a120();
  if (lVar3 != 0) {
    (**(code **)(*param_1 + 0x158))(param_1,&local_80,param_3,local_98,&param_5);
    pfVar4 = (float *)FUN_181339840(param_2,local_70,param_1);
    local_84 = param_5 - (int)pfVar4[1];
    local_88 = local_98[0] - (int)*pfVar4;
    local_90 = local_80;
    if (local_80 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_80 + 1) = *(int *)(local_80 + 1) + 1;
      UNLOCK();
    }
    FUN_18133a190(lVar3,param_4,param_1,&local_90,1,&local_88,param_2 + 0x50);
    if (local_80 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_80 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_80)(local_80,1);
      }
    }
  }
  return;
}



############ FUN_ 180566390 size=600 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180566390(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong *plVar2;
  bool bVar3;
  char cVar4;
  longlong lVar5;
  float *pfVar6;
  longlong *plVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong *plVar10;
  undefined1 auStack_f8 [32];
  undefined4 local_d8;
  int local_c8;
  int iStack_c4;
  undefined1 local_c0 [96];
  WINDOWPLACEMENT local_60;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_f8;
  uVar9 = 0;
  if ((*(longlong *)(param_1 + 0x480) != 0) &&
     (lVar1 = *(longlong *)(param_2 + 0x30),
     lVar1 != *(longlong *)(*(longlong *)(param_1 + 0x498) + 0x108))) {
    bVar3 = false;
    for (; lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
      local_d8 = 0;
      lVar5 = __RTDynamicCast(lVar1,0,&juce::Component::RTTI_Type_Descriptor,
                              &CloudyModal::RTTI_Type_Descriptor);
      if (lVar5 != 0) {
        bVar3 = true;
        break;
      }
    }
    pfVar6 = (float *)FUN_181339840(param_2,local_c0,*(undefined8 *)(param_1 + 0x480));
    local_c8 = (int)*pfVar6;
    iStack_c4 = (int)pfVar6[1];
    cVar4 = FUN_181343fe0(*(undefined8 *)(param_1 + 0x480),CONCAT44(iStack_c4,local_c8));
    if ((cVar4 == '\0') && (!bVar3)) {
      (**(code **)(**(longlong **)(param_1 + 0x480) + 0x168))();
    }
  }
  if ((*(longlong *)(param_1 + 0x488) != 0) &&
     (*(longlong *)(param_2 + 0x30) != *(longlong *)(*(longlong *)(param_1 + 0x498) + 0xf8))) {
    pfVar6 = (float *)FUN_181339840(param_2,local_c0);
    local_c8 = (int)*pfVar6;
    iStack_c4 = (int)pfVar6[1];
    cVar4 = FUN_181343fe0(*(undefined8 *)(param_1 + 0x488),CONCAT44(iStack_c4,local_c8));
    if (cVar4 == '\0') {
      FUN_1814d4600(*(undefined8 *)(param_1 + 0x488));
    }
  }
  plVar10 = *(longlong **)(param_1 + 0x568);
  uVar8 = (ulonglong)((longlong)*(longlong **)(param_1 + 0x570) + (7 - (longlong)plVar10)) >> 3;
  if (*(longlong **)(param_1 + 0x570) < plVar10) {
    uVar8 = uVar9;
  }
  if (uVar8 != 0) {
    do {
      plVar2 = (longlong *)*plVar10;
      if ((*(byte *)(plVar2 + 0x15) & 2) != 0) {
        if (plVar2[3] == 0) {
          if (((*(byte *)(plVar2 + 0x15) & 1) == 0) ||
             (plVar7 = (longlong *)FUN_1812d2bd0(plVar2), plVar7 == (longlong *)0x0))
          goto LAB_1805665aa;
          if ((undefined **)*plVar7 == juce::HWNDComponentPeer::vftable) {
            local_60.length = 0x2c;
            GetWindowPlacement((HWND)plVar7[0x11],&local_60);
            cVar4 = local_60.showCmd == 2;
          }
          else {
            cVar4 = (*(code *)((undefined **)*plVar7)[0xd])(plVar7);
          }
          cVar4 = cVar4 == '\0';
        }
        else {
          cVar4 = FUN_181345240();
        }
        if (cVar4 != '\0') {
          if ((undefined **)*plVar2 == TutorialsHintModal::vftable) {
            *(byte *)(plVar2 + 0x15) = *(byte *)(plVar2 + 0x15) & 0xef | 8;
            FUN_181411d60(plVar2 + 0x73,"alpha",0);
          }
          else {
            (*(code *)((undefined **)*plVar2)[0x2e])(plVar2);
          }
        }
      }
LAB_1805665aa:
      plVar10 = plVar10 + 1;
      uVar9 = uVar9 + 1;
    } while (uVar9 != uVar8);
  }
}



############ FUN_ 18133ae20 size=138 ############

void FUN_18133ae20(longlong param_1,longlong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined4 local_res20;
  undefined1 local_68 [96];
  
  if (param_2 != 0) {
    lVar1 = FUN_181339840(param_3,local_68,param_2);
    local_res20 = SUB84((double)*(float *)(lVar1 + 0x2c) + DAT_1824c4520,0);
    *(ulonglong *)(param_1 + 8) =
         CONCAT44(local_res20,SUB84((double)*(float *)(lVar1 + 0x28) + DAT_1824c4520,0));
  }
  return;
}



############ FUN_ 1812ea420 size=340 ############

void FUN_1812ea420(longlong param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  float fVar2;
  float fVar3;
  undefined8 uVar4;
  float fVar5;
  undefined1 local_88 [128];
  
  fVar3 = DAT_1824c3ea4;
  if ((((*(char *)(param_1 + 0x155) == '\0') && (*(char *)(param_1 + 0x156) != '\0')) &&
      (*(longlong *)(param_2 + 0x30) == param_1)) && (*(float *)(param_3 + 4) != 0.0)) {
    fVar5 = *(float *)(param_3 + 4) * DAT_1824c4360 + *(float *)(param_1 + 0x158);
    *(float *)(param_1 + 0x158) = fVar5;
    fVar2 = DAT_1824c4680;
    while (DAT_1824c4680 = fVar2, fVar3 < fVar5) {
      *(float *)(param_1 + 0x158) = *(float *)(param_1 + 0x158) - fVar3;
      FUN_1812eb830(param_1,0xffffffff);
      fVar2 = DAT_1824c4680;
      fVar5 = *(float *)(param_1 + 0x158);
    }
    if (*(float *)(param_1 + 0x158) <= fVar2 && fVar2 != *(float *)(param_1 + 0x158)) {
      do {
        *(float *)(param_1 + 0x158) = *(float *)(param_1 + 0x158) + fVar3;
        FUN_1812eb830(param_1,1);
      } while (*(float *)(param_1 + 0x158) <= fVar2 && fVar2 != *(float *)(param_1 + 0x158));
    }
  }
  else if (*(longlong **)(param_1 + 0x18) != (longlong *)0x0) {
    lVar1 = **(longlong **)(param_1 + 0x18);
    uVar4 = FUN_181339840(param_2,local_88);
    (**(code **)(lVar1 + 0x40))(*(undefined8 *)(param_1 + 0x18),uVar4,param_3);
    return;
  }
  return;
}



############ FUN_ 1812f2f60 size=230 ############

void FUN_1812f2f60(longlong param_1,undefined8 param_2)

{
  int iVar1;
  undefined1 local_68 [8];
  int local_60;
  int local_5c;
  
  FUN_181339840(param_2,local_68,param_1);
  if ((*(int *)(param_1 + 0xf8) != local_60) || (*(int *)(param_1 + 0xfc) != local_5c)) {
    if (*(int *)(param_1 + 0x104) < 0) {
      iVar1 = FUN_1812f3b60(param_1,CONCAT44(local_5c,local_60));
      if (*(int *)(param_1 + 0x100) != iVar1) {
        FUN_1812f3ae0(param_1);
        *(int *)(param_1 + 0x100) = iVar1;
        FUN_1812f3ae0(param_1,iVar1);
      }
    }
    else {
      iVar1 = FUN_1812f3b60(param_1,CONCAT44(local_5c,local_60));
      if (-1 < iVar1) {
        FUN_1812f3550(param_1,iVar1);
      }
    }
    *(ulonglong *)(param_1 + 0xf8) = CONCAT44(local_5c,local_60);
  }
  return;
}



############ FUN_ 1812f31a0 size=92 ############

void FUN_1812f31a0(undefined8 param_1,undefined8 param_2)

{
  int iVar1;
  undefined1 local_68 [8];
  undefined4 local_60;
  undefined4 local_5c;
  
  FUN_181339840(param_2,local_68,param_1);
  iVar1 = FUN_1812f3b60(param_1,CONCAT44(local_5c,local_60));
  if (-1 < iVar1) {
    FUN_1812f3550(param_1,iVar1);
  }
  return;
}



############ FUN_ 1812f3210 size=167 ############

void FUN_1812f3210(longlong param_1,undefined8 param_2)

{
  int iVar1;
  undefined1 local_68 [8];
  undefined4 local_60;
  undefined4 local_5c;
  
  if (*(int *)(param_1 + 0x104) < 0) {
    FUN_181339840(param_2,local_68,param_1);
    iVar1 = FUN_1812f3b60(param_1,CONCAT44(local_5c,local_60));
    if (*(int *)(param_1 + 0x100) != iVar1) {
      FUN_1812f3ae0(param_1);
      *(int *)(param_1 + 0x100) = iVar1;
      FUN_1812f3ae0(param_1,iVar1);
    }
    *(undefined4 *)(param_1 + 0x104) = 0xfffffffe;
    FUN_1812f3550(param_1,*(undefined4 *)(param_1 + 0x100));
  }
  return;
}



############ FUN_ 18133ef00 size=457 ############

void FUN_18133ef00(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  longlong lVar9;
  bool bVar10;
  undefined8 *local_res18;
  undefined8 *local_res20;
  
  if (DAT_182673708 != param_1) {
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      if (param_1[3] == 0) {
        return;
      }
      plVar5 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar5 = (longlong *)FUN_1812d2bd0();
    }
    if (plVar5 != (longlong *)0x0) {
      FUN_1804de690(&local_res18,param_1);
      (**(code **)(*plVar5 + 200))(plVar5);
      cVar4 = (**(code **)(*plVar5 + 0xc0))(plVar5);
      puVar8 = local_res18;
      if ((cVar4 != '\0') && (DAT_182673708 != param_1)) {
        FUN_1804de690(&local_res20);
        DAT_182673708 = param_1;
        lVar6 = FUN_18134b820();
        piVar1 = (int *)(*(longlong *)(lVar6 + 0x28) + 0x18);
        LOCK();
        bVar10 = *piVar1 == 0;
        if (bVar10) {
          *piVar1 = 1;
        }
        UNLOCK();
        lVar9 = 0;
        if ((bVar10) && (cVar4 = FUN_1812a6720(*(undefined8 *)(lVar6 + 0x28)), cVar4 == '\0')) {
          LOCK();
          *(undefined4 *)(*(longlong *)(lVar6 + 0x28) + 0x18) = 0;
          UNLOCK();
        }
        puVar3 = local_res20;
        if (local_res20 == (undefined8 *)0x0) {
          lVar6 = 0;
        }
        else {
          lVar6 = local_res20[2];
        }
        if (lVar6 != 0) {
          if (local_res20 == (undefined8 *)0x0) {
            uVar7 = 0;
          }
          else {
            uVar7 = local_res20[2];
          }
          FUN_18133f2f0(uVar7,param_2);
        }
        puVar8 = local_res18;
        if (DAT_182673708 == param_1) {
          (**(code **)(*param_1 + 0xf0))(param_1,param_2);
          if (puVar8 != (undefined8 *)0x0) {
            lVar9 = puVar8[2];
          }
          if (lVar9 != 0) {
            FUN_18133f200(param_1,param_2,&local_res18);
          }
        }
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          puVar8 = local_res18;
          if (iVar2 == 1) {
            (**(code **)*local_res20)(local_res20,1);
            puVar8 = local_res18;
          }
        }
      }
      if (puVar8 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar8 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res18)(local_res18,1);
        }
      }
    }
  }
  return;
}



############ FUN_ 181345240 size=97 ############

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

bool FUN_181345240(longlong param_1)

{
  byte bVar1;
  longlong lVar2;
  char cVar3;
  longlong *plVar4;
  
  bVar1 = *(byte *)(param_1 + 0xa8);
  while( true ) {
    if ((bVar1 & 2) == 0) {
      return false;
    }
    lVar2 = *(longlong *)(param_1 + 0x18);
    if (lVar2 == 0) break;
    bVar1 = *(byte *)(lVar2 + 0xa8);
    param_1 = lVar2;
  }
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    return false;
  }
  plVar4 = (longlong *)FUN_1812d2bd0();
  if (plVar4 == (longlong *)0x0) {
    return false;
  }
  cVar3 = (**(code **)(*plVar4 + 0x68))(plVar4);
  return cVar3 == '\0';
}



############ FUN_ 181343fe0 size=450 ############

undefined8 FUN_181343fe0(longlong *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  ulonglong uVar2;
  char cVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong *plVar6;
  uint uVar7;
  float fVar8;
  float fVar9;
  undefined8 local_res8;
  float local_30;
  float fStack_2c;
  float fStack_28;
  float fStack_24;
  
  uVar7 = (uint)(param_2 >> 0x20);
  if ((((uint)param_2 < *(uint *)(param_1 + 5)) && (uVar7 < *(uint *)((longlong)param_1 + 0x2c))) &&
     (cVar3 = (**(code **)(*param_1 + 0x98))
                        (param_1,param_2,param_2 >> 0x20,param_4,0xfffffffffffffffe), cVar3 != '\0')
     ) {
    bVar1 = true;
  }
  else {
    bVar1 = false;
  }
  if (bVar1) {
    if (param_1[3] != 0) {
      puVar4 = (undefined8 *)FUN_18051e290(&local_res8,param_1,param_2);
      uVar5 = FUN_181343fe0(param_1[3],*puVar4);
      return uVar5;
    }
    if (((*(byte *)(param_1 + 0x15) & 1) != 0) &&
       (plVar6 = (longlong *)FUN_1812d2bd0(param_1), plVar6 != (longlong *)0x0)) {
      puVar4 = (undefined8 *)param_1[7];
      if (puVar4 != (undefined8 *)0x0) {
        local_30 = (float)*puVar4;
        fStack_2c = (float)((ulonglong)*puVar4 >> 0x20);
        fStack_28 = (float)puVar4[1];
        fStack_24 = (float)((ulonglong)puVar4[1] >> 0x20);
        fVar8 = (float)(int)(uint)param_2;
        fVar9 = (float)(int)uVar7;
        local_res8 = CONCAT44((int)(fVar9 * (float)puVar4[2] + fVar8 * fStack_24 +
                                   (float)((ulonglong)puVar4[2] >> 0x20)),
                              (int)(fVar9 * fStack_2c + fVar8 * local_30 + fStack_28));
        param_2 = local_res8;
      }
      local_res8 = param_2;
      fVar8 = (float)(**(code **)(*param_1 + 0x80))(param_1);
      uVar2 = param_2;
      if (fVar8 != DAT_1824c3ea4) {
        local_res8 = CONCAT44((int)((float)local_res8._4_4_ * fVar8),
                              (int)((float)(int)param_2 * fVar8));
        uVar2 = local_res8;
      }
      local_res8 = uVar2;
      uVar5 = (**(code **)(*plVar6 + 0x90))(plVar6,local_res8,1);
      return uVar5;
    }
  }
  return 0;
}



############ FUN_ 18134b8d0 size=84 ############

longlong FUN_18134b8d0(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) {
      return 0;
    }
    plVar1 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar1 = (longlong *)FUN_1812d2bd0();
  }
  if (plVar1 == (longlong *)0x0) {
    return 0;
  }
  if ((undefined **)*plVar1 != juce::HWNDComponentPeer::vftable) {
                    /* WARNING: Could not recover jumptable at 0x00018134b920. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    lVar2 = (*(code *)((undefined **)*plVar1)[1])(plVar1);
    return lVar2;
  }
  return plVar1[0x11];
}



############ FUN_ 180478740 size=192 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180478740(longlong param_1)

{
  longlong lVar1;
  double dVar2;
  longlong *plVar3;
  float *pfVar4;
  float fVar5;
  float local_res8 [2];
  float local_res10 [6];
  
  lVar1 = *(longlong *)(param_1 + 0xb0);
  if ((*(byte *)(lVar1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar1 + 0x18) == 0) {
      return;
    }
    plVar3 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar3 = (longlong *)FUN_1812d2bd0(lVar1);
  }
  if (plVar3 != (longlong *)0x0) {
    dVar2 = (double)(**(code **)(*plVar3 + 0x110))(plVar3);
    local_res10[0] = (float)dVar2;
    local_res8[0] = *(float *)(*(longlong *)(param_1 + 0xb8) + 0x78);
    pfVar4 = local_res8;
    if (local_res8[0] <= local_res10[0]) {
      pfVar4 = local_res10;
    }
    fVar5 = (float)(double)CONCAT44((uint)((ulonglong)(double)(local_res10[0] - local_res8[0]) >>
                                          0x20) & DAT_1824c4f10._4_4_,
                                    SUB84((double)(local_res10[0] - local_res8[0]),0) &
                                    (uint)DAT_1824c4f10);
    if ((*pfVar4 * _DAT_1824c3c34 < fVar5) && (DAT_1824c3c20 <= fVar5)) {
      FUN_1804780b0(*(longlong *)(param_1 + 0xb8) + 0x40,local_res10[0]);
      return;
    }
  }
  return;
}



############ FUN_ 180477b70 size=337 ############

undefined8 FUN_180477b70(longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  uint uVar2;
  int *piVar3;
  longlong lVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  float fVar9;
  double dVar10;
  double dVar11;
  
  if (param_2 == (undefined8 *)0x0) {
    return 1;
  }
  uVar1 = param_2[1];
  *(undefined8 *)(param_1 + 8) = *param_2;
  *(undefined8 *)(param_1 + 0x10) = uVar1;
  if (*(longlong *)(param_1 + 0x60) == 0) {
    return 0;
  }
  dVar10 = (double)((float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 8)) /
                   *(float *)(param_1 + 0x68)) + DAT_1824c4520;
  iVar7 = SUB84(dVar10,0);
  dVar11 = (double)((float)(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) /
                   *(float *)(param_1 + 0x68)) + DAT_1824c4520;
  iVar6 = SUB84(dVar11,0);
  piVar3 = (int *)FUN_180473b00();
  if (*piVar3 == 0x29) {
    fVar9 = (float)roundf();
    iVar8 = (int)fVar9;
    uVar2 = iVar7 - *(int *)(*(longlong *)(param_1 + 0x60) + 0x28) * iVar8;
    uVar5 = (int)uVar2 >> 0x1f;
    if (((int)((uVar2 ^ uVar5) - uVar5) < 3) &&
       (uVar2 = iVar6 - *(int *)(*(longlong *)(param_1 + 0x60) + 0x2c) * iVar8,
       uVar5 = (int)uVar2 >> 0x1f, (int)((uVar2 ^ uVar5) - uVar5) < 3)) {
      iVar7 = (int)((longlong)
                    ((ulonglong)(uint)(iVar7 >> 0x1f) << 0x20 | (ulonglong)dVar10 & 0xffffffff) /
                   (longlong)iVar8);
      iVar6 = (int)((longlong)
                    ((ulonglong)(uint)(iVar6 >> 0x1f) << 0x20 | (ulonglong)dVar11 & 0xffffffff) /
                   (longlong)iVar8);
    }
  }
  lVar4 = *(longlong *)(param_1 + 0x60);
  FUN_18134bfe0(lVar4,*(undefined4 *)(lVar4 + 0x20),*(undefined4 *)(lVar4 + 0x24),iVar7,iVar6);
  lVar4 = *(longlong *)(param_1 + 0x60);
  if ((*(byte *)(lVar4 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar4 + 0x18) == 0) goto LAB_180477c9b;
    lVar4 = FUN_18134c2e0();
  }
  else {
    lVar4 = FUN_1812d2bd0(lVar4);
  }
  if (lVar4 != 0) {
    FUN_18134b470(lVar4);
  }
LAB_180477c9b:
  piVar3 = (int *)FUN_180473b00();
  if (*piVar3 == 0x29) {
    FUN_1804789b0(*(undefined8 *)(param_1 + 0x60));
  }
  return 0;
}



############ FUN_ 180478200 size=414 ############

void FUN_180478200(longlong param_1)

{
  uint uVar1;
  int *piVar2;
  longlong lVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  float fVar8;
  undefined8 uVar9;
  double dVar10;
  double dVar11;
  undefined4 local_res8;
  undefined4 local_res10;
  
  FUN_1812a7720();
  dVar11 = DAT_1824c4520;
  lVar3 = *(longlong *)(param_1 + 0x28);
  uVar9 = 0;
  if (lVar3 != 0) {
    local_res8 = SUB84((double)((float)*(int *)(lVar3 + 0x28) * *(float *)(param_1 + 0x30)) +
                       DAT_1824c4520,0);
    local_res10 = SUB84((double)((float)*(int *)(lVar3 + 0x2c) * *(float *)(param_1 + 0x30)) +
                        DAT_1824c4520,0);
    uVar9 = CONCAT44(local_res10,local_res8);
  }
  *(undefined8 *)(param_1 + -0x30) = 0;
  *(undefined8 *)(param_1 + -0x28) = uVar9;
  if (*(longlong *)(param_1 + 0x28) == 0) {
    return;
  }
  dVar10 = (double)((float)(*(int *)(param_1 + -0x28) - *(int *)(param_1 + -0x30)) /
                   *(float *)(param_1 + 0x30)) + dVar11;
  iVar6 = SUB84(dVar10,0);
  dVar11 = (double)((float)(*(int *)(param_1 + -0x24) - *(int *)(param_1 + -0x2c)) /
                   *(float *)(param_1 + 0x30)) + dVar11;
  iVar5 = SUB84(dVar11,0);
  piVar2 = (int *)FUN_180473b00();
  if (*piVar2 == 0x29) {
    fVar8 = (float)roundf();
    iVar7 = (int)fVar8;
    uVar1 = iVar6 - *(int *)(*(longlong *)(param_1 + 0x28) + 0x28) * iVar7;
    uVar4 = (int)uVar1 >> 0x1f;
    if (((int)((uVar1 ^ uVar4) - uVar4) < 3) &&
       (uVar1 = iVar5 - *(int *)(*(longlong *)(param_1 + 0x28) + 0x2c) * iVar7,
       uVar4 = (int)uVar1 >> 0x1f, (int)((uVar1 ^ uVar4) - uVar4) < 3)) {
      iVar6 = (int)((longlong)
                    ((ulonglong)(uint)(iVar6 >> 0x1f) << 0x20 | (ulonglong)dVar10 & 0xffffffff) /
                   (longlong)iVar7);
      iVar5 = (int)((longlong)
                    ((ulonglong)(uint)(iVar5 >> 0x1f) << 0x20 | (ulonglong)dVar11 & 0xffffffff) /
                   (longlong)iVar7);
    }
  }
  lVar3 = *(longlong *)(param_1 + 0x28);
  FUN_18134bfe0(lVar3,*(undefined4 *)(lVar3 + 0x20),*(undefined4 *)(lVar3 + 0x24),iVar6,iVar5);
  lVar3 = *(longlong *)(param_1 + 0x28);
  if ((*(byte *)(lVar3 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar3 + 0x18) == 0) goto LAB_180478380;
    lVar3 = FUN_18134c2e0();
  }
  else {
    lVar3 = FUN_1812d2bd0(lVar3);
  }
  if (lVar3 != 0) {
    FUN_18134b470(lVar3);
  }
LAB_180478380:
  piVar2 = (int *)FUN_180473b00();
  if (*piVar2 != 0x29) {
    return;
  }
  FUN_1804789b0(*(undefined8 *)(param_1 + 0x28));
  return;
}



############ FUN_ 1804d6f90 size=49 ############

void FUN_1804d6f90(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if ((*(byte *)(lVar1 + 0xa8) & 1) != 0) {
    lVar2 = FUN_1812d2bd0(lVar1);
    if (lVar2 != 0) {
      *(undefined8 *)(lVar2 + 0x28) = *(undefined8 *)(lVar1 + 0x100);
    }
  }
  return;
}



############ FUN_ 181344f60 size=329 ############

void FUN_181344f60(longlong param_1,char param_2)

{
  int iVar1;
  longlong lVar2;
  bool bVar3;
  char cVar4;
  longlong *plVar5;
  longlong *plVar6;
  ulonglong uVar7;
  longlong lVar8;
  int iVar9;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
    plVar5 = (longlong *)FUN_1812d2bd0();
    if (plVar5 == (longlong *)0x0) {
      return;
    }
    (**(code **)(*plVar5 + 0xb0))(plVar5,param_2);
    lVar2 = DAT_182673708;
    if (param_2 == '\0') {
      return;
    }
    for (; lVar2 != param_1; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      if (lVar2 == 0) {
        bVar3 = false;
        goto LAB_181344fc9;
      }
    }
    bVar3 = true;
LAB_181344fc9:
    if (bVar3) {
      return;
    }
    goto LAB_18134508e;
  }
  lVar2 = *(longlong *)(param_1 + 0x18);
  if (lVar2 == 0) {
    return;
  }
  iVar1 = *(int *)(lVar2 + 0x4c);
  if (iVar1 < 1) {
    lVar8 = 0;
  }
  else {
    lVar8 = *(longlong *)(*(longlong *)(lVar2 + 0x40) + (longlong)(iVar1 + -1) * 8);
  }
  if (lVar8 != param_1) {
    plVar5 = *(longlong **)(lVar2 + 0x40);
    for (plVar6 = plVar5; plVar6 != plVar5 + iVar1; plVar6 = plVar6 + 1) {
      if (param_1 == *plVar6) {
        uVar7 = (longlong)plVar6 - (longlong)plVar5 >> 3;
        if (-1 < (int)uVar7) {
          iVar9 = -1;
          if (((*(byte *)(param_1 + 0xa9) & 1) != 0) || (iVar9 = iVar1 + -1, iVar9 < 1))
          goto LAB_18134506b;
          lVar8 = (longlong)iVar9;
          plVar5 = plVar5 + lVar8;
          goto LAB_181345050;
        }
        break;
      }
    }
  }
  goto LAB_181345075;
  while( true ) {
    iVar9 = iVar9 + -1;
    lVar8 = lVar8 + -1;
    plVar5 = plVar5 + -1;
    if (lVar8 < 1) break;
LAB_181345050:
    if ((*(byte *)(*plVar5 + 0xa9) & 1) == 0) break;
  }
LAB_18134506b:
  FUN_1813450b0(lVar2,uVar7 & 0xffffffff,iVar9);
LAB_181345075:
  if (param_2 == '\0') {
    return;
  }
  FUN_18133f490(param_1);
  cVar4 = FUN_181345240(param_1);
  if (cVar4 == '\0') {
    return;
  }
LAB_18134508e:
  FUN_18133ed60(param_1,2,1);
  return;
}



############ FUN_ 18134b0f0 size=313 ############

void FUN_18134b0f0(longlong *param_1,byte param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *local_res8;
  
  if (param_2 == (*(byte *)((longlong)param_1 + 0xa9) & 1)) {
    return;
  }
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) & 0xfe;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | param_2 & 1;
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      if (param_1[3] == 0) goto LAB_18134b1a7;
      plVar5 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar5 = (longlong *)FUN_1812d2bd0(param_1);
    }
    if ((plVar5 != (longlong *)0x0) &&
       (cVar4 = (**(code **)(*plVar5 + 0xa8))(plVar5,param_2), cVar4 == '\0')) {
      lVar7 = plVar5[2];
      FUN_18134c310(param_1);
      (**(code **)(*param_1 + 0x68))(param_1,(int)lVar7,0);
    }
  }
LAB_18134b1a7:
  puVar3 = local_res8;
  lVar7 = 0;
  if (param_2 != 0) {
    lVar6 = lVar7;
    if (local_res8 != (undefined8 *)0x0) {
      lVar6 = local_res8[2];
    }
    if (lVar6 != 0) {
      FUN_181344f60(param_1,0);
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    lVar7 = puVar3[2];
  }
  if (lVar7 != 0) {
    FUN_181343670(param_1);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1804e5790 size=462 ############

undefined8 * FUN_1804e5790(undefined8 *param_1,longlong *param_2,undefined8 param_3)

{
  longlong *plVar1;
  ulonglong uVar2;
  longlong *plVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  float fVar6;
  float fVar7;
  undefined8 local_res10;
  float local_res20;
  float fStackX_24;
  undefined8 uVar8;
  float fVar9;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  uVar8 = param_3;
  if ((*(byte *)(param_2 + 0x15) & 1) == 0) {
    if (param_2[3] == 0) goto LAB_1804e5880;
    plVar4 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar4 = (longlong *)FUN_1812d2bd0(param_2);
  }
  if (plVar4 != (longlong *)0x0) {
    puVar5 = (undefined8 *)(**(code **)(*plVar4 + 0x58))(plVar4,&local_res10,param_3);
    local_res10 = *puVar5;
    plVar4 = (longlong *)plVar4[1];
    fVar7 = (float)local_res10;
    uVar2 = (ulonglong)local_res10 >> 0x20;
    uVar8 = local_res10;
    fVar6 = (float)(**(code **)(*plVar4 + 0x80))(plVar4);
    if (fVar6 != DAT_1824c3ea4) {
      local_res10 = CONCAT44((float)uVar2 / fVar6,fVar7 / fVar6);
    }
    FUN_18051dc40(param_1,param_2,plVar4,local_res10,uVar8);
    return param_1;
  }
LAB_1804e5880:
  fVar7 = (float)uVar8;
  fVar9 = (float)((ulonglong)uVar8 >> 0x20);
  local_res10._0_4_ = fVar7;
  local_res10._4_4_ = fVar9;
  fVar6 = (float)(**(code **)(*param_2 + 0x80))(param_2);
  if (fVar6 != DAT_1824c3ea4) {
    local_res10._4_4_ = fVar9 / fVar6;
    local_res10._0_4_ = fVar7 / fVar6;
  }
  local_res20 = (float)local_res10;
  fStackX_24 = local_res10._4_4_;
  plVar3 = (longlong *)param_2[3];
  plVar4 = param_2;
  while (plVar1 = plVar3, plVar1 != (longlong *)0x0) {
    plVar4 = plVar1;
    plVar3 = (longlong *)plVar1[3];
  }
  puVar5 = (undefined8 *)FUN_1805200f0(&local_res20,plVar4,local_res10);
  local_res10 = *puVar5;
  if (plVar4 == param_2) {
    *param_1 = local_res10;
  }
  else {
    FUN_1805200a0(param_1,plVar4,param_2,local_res10,uVar8,uVar10);
  }
  return param_1;
}



############ FUN_ 1812cea70 size=349 ############

void FUN_1812cea70(longlong param_1,int param_2,undefined8 param_3,int param_4,int param_5)

{
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  undefined8 uVar4;
  int iVar5;
  bool bVar6;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  
  if ((*(longlong *)(param_1 + 0x138) == 0) && (param_1 + 0x108 != 0)) {
    *(longlong *)(param_1 + 0x138) = param_1 + 0x108;
    bVar6 = *(longlong *)(param_1 + 0xc0) != 0;
    if ((bVar6) || (*(longlong *)(param_1 + 200) != 0)) {
      uVar4 = 1;
    }
    else {
      uVar4 = 0;
    }
    puVar1 = *(undefined8 **)(param_1 + 0xc0);
    *(undefined8 *)(param_1 + 0xc0) = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1,param_3,param_4,0xfffffffffffffffe);
    }
    puVar1 = *(undefined8 **)(param_1 + 200);
    *(undefined8 *)(param_1 + 200) = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    FUN_1812cec00(param_1,uVar4,bVar6);
    if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
      lVar3 = FUN_1812d2bd0(param_1);
      if (lVar3 != 0) {
        *(undefined8 *)(lVar3 + 0x28) = *(undefined8 *)(param_1 + 0x138);
      }
    }
  }
  iVar2 = 0;
  if (0 < param_2) {
    iVar2 = param_2;
  }
  *(int *)(param_1 + 0x110) = iVar2;
  iVar5 = 0;
  if (0 < (int)param_3) {
    iVar5 = (int)param_3;
  }
  *(int *)(param_1 + 0x118) = iVar5;
  if (iVar2 < param_4) {
    iVar2 = param_4;
  }
  *(int *)(param_1 + 0x114) = iVar2;
  if (iVar5 < param_5) {
    iVar5 = param_5;
  }
  *(int *)(param_1 + 0x11c) = iVar5;
  local_30 = *(undefined4 *)(param_1 + 0x20);
  uStack_2c = *(undefined4 *)(param_1 + 0x24);
  uStack_28 = *(undefined4 *)(param_1 + 0x28);
  uStack_24 = *(undefined4 *)(param_1 + 0x2c);
  FUN_1812ce910(param_1,&local_30);
  return;
}



############ FUN_ 18050c500 size=286 ############

void FUN_18050c500(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  char cVar2;
  longlong *plVar3;
  longlong lVar4;
  
  plVar1 = *(longlong **)(param_1 + 8);
  if (param_2 != plVar1[0x2a]) {
    if (param_2 == plVar1[0x2b]) {
                    /* WARNING: Could not recover jumptable at 0x00018050c5fc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*plVar1 + 0x188))(plVar1);
      return;
    }
    if (param_2 != plVar1[0x2c]) {
      return;
    }
                    /* WARNING: Could not recover jumptable at 0x00018050c617. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*plVar1 + 0x178))(plVar1);
    return;
  }
  if (*(code **)(*plVar1 + 0x180) != FUN_1812d07e0) {
                    /* WARNING: Could not recover jumptable at 0x00018050c5e5. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*plVar1 + 0x180))(plVar1);
    return;
  }
  if ((*(byte *)(plVar1 + 0x15) & 1) == 0) {
    if (plVar1[3] == 0) goto LAB_18050c564;
    plVar3 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar3 = (longlong *)FUN_1812d2bd0(plVar1);
  }
  if ((plVar3 != (longlong *)0x0) &&
     (cVar2 = (**(code **)(*plVar3 + 0x68))(plVar3), cVar2 == '\x01')) {
    return;
  }
LAB_18050c564:
  if ((*(byte *)(plVar1 + 0x15) & 1) == 0) {
    if (plVar1[3] == 0) {
      return;
    }
    plVar3 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar3 = (longlong *)FUN_1812d2bd0(plVar1);
  }
  if (plVar3 != (longlong *)0x0) {
    cVar2 = FUN_181345240(plVar1);
    if (((cVar2 != '\0') && (FUN_1812ce210(plVar1), (*(byte *)(plVar1 + 0x15) & 1) != 0)) &&
       (lVar4 = FUN_1812d2bd0(plVar1), lVar4 != 0)) {
      *(longlong *)(lVar4 + 0x28) = plVar1[0x27];
    }
    (**(code **)(*plVar3 + 0x60))(plVar3,1);
  }
  return;
}



############ FUN_ 1812ce210 size=130 ############

void FUN_1812ce210(longlong param_1)

{
  char cVar1;
  longlong *plVar2;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    cVar1 = *(char *)(param_1 + 0xe2);
LAB_1812ce240:
    if (cVar1 != '\0') {
      return;
    }
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0();
    if (plVar2 != (longlong *)0x0) {
      cVar1 = (**(code **)(*plVar2 + 0x78))(plVar2);
      goto LAB_1812ce240;
    }
  }
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812ce275;
    plVar2 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0(param_1);
  }
  if ((plVar2 != (longlong *)0x0) && (cVar1 = (**(code **)(*plVar2 + 0x68))(plVar2), cVar1 != '\0'))
  {
    return;
  }
LAB_1812ce275:
  cVar1 = FUN_1812ce2f0(param_1);
  if (cVar1 == '\0') {
    *(undefined8 *)(param_1 + 0xf8) = *(undefined8 *)(param_1 + 0x20);
    *(undefined8 *)(param_1 + 0x100) = *(undefined8 *)(param_1 + 0x28);
  }
  return;
}



############ FUN_ 18055a610 size=357 ############

void FUN_18055a610(longlong param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  longlong *plVar7;
  double dVar8;
  int local_res8;
  int local_res10;
  int local_res18;
  int local_res20;
  
  lVar5 = *(longlong *)(param_1 + 0x48);
  for (lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x18); lVar6 != 0;
      lVar6 = *(longlong *)(lVar6 + 0x18)) {
    lVar5 = lVar6;
  }
  if ((*(byte *)(lVar5 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar5 + 0x18) == 0) goto LAB_18055a748;
    plVar7 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar7 = (longlong *)FUN_1812d2bd0();
  }
  if (plVar7 != (longlong *)0x0) {
    iVar1 = *param_2;
    iVar2 = param_2[1];
    iVar3 = param_2[2];
    iVar4 = param_2[3];
    dVar8 = (double)(**(code **)(*plVar7 + 0x110))(plVar7);
    local_res8 = SUB84((double)iVar1 * dVar8 + DAT_1824c4520,0);
    local_res10 = SUB84((double)iVar2 * dVar8 + DAT_1824c4520,0);
    local_res18 = SUB84((double)iVar3 * dVar8 + DAT_1824c4520,0);
    local_res20 = SUB84((double)iVar4 * dVar8 + DAT_1824c4520,0);
    *param_2 = local_res8;
    param_2[1] = local_res10;
    param_2[2] = local_res18;
    param_2[3] = local_res20;
  }
LAB_18055a748:
  MoveWindow(*(HWND *)(param_1 + 0x50),*param_2,param_2[1],param_2[2],param_2[3],1);
  return;
}



############ FUN_ 18055a780 size=374 ############

void FUN_18055a780(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  float fVar3;
  int local_res20;
  double local_38;
  int iStack_30;
  int iStack_2c;
  undefined8 local_28;
  int local_18;
  int iStack_14;
  int iStack_10;
  int iStack_c;
  
  local_28 = 0xfffffffffffffffe;
  lVar2 = *(longlong *)(param_1 + 0x48);
  for (lVar1 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x18); lVar1 != 0;
      lVar1 = *(longlong *)(lVar1 + 0x18)) {
    lVar2 = lVar1;
  }
  if ((*(byte *)(lVar2 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar2 + 0x18) == 0) {
      return;
    }
    lVar2 = FUN_18134c2e0();
  }
  else {
    lVar2 = FUN_1812d2bd0();
  }
  if (lVar2 != 0) {
    lVar1 = *(longlong *)(param_1 + 0x48);
    iStack_2c = *(int *)(lVar1 + 0x2c);
    iStack_30 = *(int *)(lVar1 + 0x28);
    local_18 = 0;
    iStack_14 = 0;
    local_38 = 0.0;
    iStack_10 = iStack_30;
    iStack_c = iStack_2c;
    FUN_18051df30(&local_18,*(undefined8 *)(lVar2 + 8),lVar1,&local_38);
    fVar3 = (float)(**(code **)(**(longlong **)(lVar2 + 8) + 0x80))();
    if (fVar3 != DAT_1824c3ea4) {
      local_38 = (double)((float)iStack_c * fVar3) + DAT_1824c4520;
      local_18 = SUB84((double)((float)local_18 * fVar3) + DAT_1824c4520,0);
      local_res20 = SUB84((double)((float)iStack_14 * fVar3) + DAT_1824c4520,0);
      iStack_14 = local_res20;
      iStack_10 = SUB84((double)((float)iStack_10 * fVar3) + DAT_1824c4520,0);
      iStack_c = local_38._0_4_;
    }
    if (*(longlong *)(param_1 + 0x50) != 0) {
      FUN_18055a610(param_1,&local_18);
    }
  }
  return;
}



############ FUN_ 180598290 size=104 ############

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

bool FUN_180598290(longlong param_1)

{
  byte bVar1;
  longlong lVar2;
  
  bVar1 = *(byte *)(param_1 + 0xa8);
  while( true ) {
    if ((bVar1 & 2) == 0) {
      return false;
    }
    lVar2 = *(longlong *)(param_1 + 0x18);
    if (lVar2 == 0) break;
    bVar1 = *(byte *)(lVar2 + 0xa8);
    param_1 = lVar2;
  }
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    return false;
  }
  lVar2 = FUN_1812d2bd0();
  return lVar2 != 0;
}



############ FUN_ 180595f00 size=290 ############

void FUN_180595f00(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  char cVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined4 *puVar6;
  longlong lVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined1 local_28 [32];
  
  lVar1 = *(longlong *)(param_1 + 0x48);
  if ((lVar1 != 0) && (*(longlong *)(lVar1 + 0x10) != 0)) {
    lVar7 = 0;
    lVar4 = lVar7;
    if (lVar1 != 0) {
      lVar4 = *(longlong *)(lVar1 + 0x10);
    }
    lVar1 = *(longlong *)(lVar4 + 0x18);
    while (lVar2 = lVar1, lVar2 != 0) {
      lVar4 = lVar2;
      lVar1 = *(longlong *)(lVar2 + 0x18);
    }
    if ((*(byte *)(lVar4 + 0xa8) & 1) == 0) {
      if (*(longlong *)(lVar4 + 0x18) == 0) {
        return;
      }
      plVar5 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar5 = (longlong *)FUN_1812d2bd0(lVar4);
    }
    if (plVar5 != (longlong *)0x0) {
      dVar8 = (double)(**(code **)(*plVar5 + 0x110))(plVar5);
      cVar3 = FUN_18134ce40();
      if (cVar3 != '\0') {
        dVar8 = dVar8 * dVar8;
      }
      dVar10 = *(double *)(param_1 + 0x40);
      dVar9 = dVar10;
      if (dVar10 <= dVar8) {
        dVar9 = dVar8;
      }
      dVar10 = (double)CONCAT44((uint)((ulonglong)(dVar8 - dVar10) >> 0x20) & DAT_1824c4f10._4_4_,
                                SUB84(dVar8 - dVar10,0) & (uint)DAT_1824c4f10);
      if ((dVar9 * DAT_1824c3c80 < dVar10) && (DAT_1824c3c18 <= dVar10)) {
        *(double *)(param_1 + 0x40) = dVar8;
        if (*(longlong *)(param_1 + 0x48) != 0) {
          lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x10);
        }
        puVar6 = (undefined4 *)FUN_1812d1620(plVar5,local_28,lVar7);
        local_38 = *puVar6;
        uStack_34 = puVar6[1];
        uStack_30 = puVar6[2];
        uStack_2c = puVar6[3];
        FUN_180595d70(param_1,&local_38);
      }
    }
  }
  return;
}



############ FUN_ 180598070 size=300 ############

void FUN_180598070(longlong *param_1)

{
  longlong lVar1;
  longlong lVar2;
  char cVar3;
  bool bVar4;
  longlong lVar5;
  undefined4 *puVar6;
  longlong lVar7;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined1 local_18 [16];
  
  if (param_1[1] == 0) {
    lVar7 = 0;
  }
  else {
    lVar7 = *(longlong *)(param_1[1] + 0x10);
  }
  lVar5 = *(longlong *)(lVar7 + 0x68);
  if ((((*(char *)(param_1[0xb] + 499) == '\0') && (0 < *(int *)(lVar7 + 0x28))) &&
      (0 < *(int *)(lVar7 + 0x2c))) && (cVar3 = FUN_180598290(lVar7), cVar3 != '\0')) {
    bVar4 = true;
  }
  else {
    bVar4 = false;
  }
  if ((lVar5 != 0) != bVar4) {
    (**(code **)(*param_1 + 0x58))(param_1);
  }
  if (((0 < *(int *)(lVar7 + 0x28)) && (0 < *(int *)(lVar7 + 0x2c))) &&
     (*(longlong *)(param_1[0xb] + 0x188) != 0)) {
    lVar5 = FUN_180597f00(lVar7);
    if (lVar5 != 0) {
      FUN_180596f80(lVar5,1);
    }
    lVar2 = *(longlong *)(lVar7 + 0x18);
    lVar5 = lVar7;
    while (lVar1 = lVar2, lVar1 != 0) {
      lVar5 = lVar1;
      lVar2 = *(longlong *)(lVar1 + 0x18);
    }
    if ((*(byte *)(lVar5 + 0xa8) & 1) == 0) {
      if (*(longlong *)(lVar5 + 0x18) == 0) {
        return;
      }
      lVar5 = FUN_18134c2e0();
    }
    else {
      lVar5 = FUN_1812d2bd0();
    }
    if (lVar5 != 0) {
      puVar6 = (undefined4 *)FUN_1812d1620(lVar5,local_18,lVar7);
      local_28 = *puVar6;
      uStack_24 = puVar6[1];
      uStack_20 = puVar6[2];
      uStack_1c = puVar6[3];
      FUN_180595d70(*(undefined8 *)(param_1[0xb] + 0x188),&local_28);
    }
  }
  return;
}



############ FUN_ 1812bd7a0 size=293 ############

void FUN_1812bd7a0(longlong param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  bool bVar4;
  char cVar5;
  longlong *plVar6;
  longlong lVar7;
  int iVar8;
  
  bVar4 = false;
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      plVar6 = (longlong *)FUN_18134c2e0();
      goto LAB_1812bd7d3;
    }
  }
  else {
    plVar6 = (longlong *)FUN_1812d2bd0();
LAB_1812bd7d3:
    if (plVar6 != (longlong *)0x0) {
      cVar5 = (**(code **)(*plVar6 + 0x78))(plVar6);
      if ((cVar5 == '\0') && (cVar5 = (**(code **)(*plVar6 + 0x80))(plVar6), cVar5 == '\0')) {
        bVar4 = false;
      }
      else {
        bVar4 = true;
      }
    }
  }
  plVar6 = *(longlong **)(param_1 + 0xb8);
  if (plVar6 != (longlong *)0x0) {
    (**(code **)(*plVar6 + 0x58))(plVar6,!bVar4);
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0xb8),*(int *)(param_1 + 0x28) + -0x12,
                  *(int *)(param_1 + 0x2c) + -0x12,0x12,0x12);
  }
  if (*(char *)(param_1 + 200) != '\0') {
    return;
  }
  iVar1 = *(int *)(param_1 + 0x28);
  if (iVar1 == 0) {
    return;
  }
  iVar2 = *(int *)(param_1 + 0x2c);
  if (iVar2 == 0) {
    return;
  }
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812bd885;
    lVar7 = FUN_18134c2e0();
  }
  else {
    lVar7 = FUN_1812d2bd0();
  }
  if (lVar7 != 0) {
    FUN_18134b470();
  }
LAB_1812bd885:
  iVar3 = 0;
  if (0 < iVar1) {
    iVar3 = iVar1;
  }
  *(int *)(param_1 + 0xd8) = iVar3;
  iVar8 = 0;
  if (0 < iVar2) {
    iVar8 = iVar2;
  }
  *(int *)(param_1 + 0xe0) = iVar8;
  if (iVar3 < iVar1) {
    iVar3 = iVar1;
  }
  *(int *)(param_1 + 0xdc) = iVar3;
  if (iVar8 < iVar2) {
    iVar8 = iVar2;
  }
  *(int *)(param_1 + 0xe4) = iVar8;
  return;
}



############ FUN_ 1812bd760 size=45 ############

void FUN_1812bd760(longlong param_1)

{
  longlong lVar1;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
    lVar1 = FUN_1812d2bd0();
    if (lVar1 != 0) {
      *(undefined8 *)(lVar1 + 0x28) = *(undefined8 *)(param_1 + 0x100);
    }
  }
  return;
}



############ FUN_ 1812bd8d0 size=61 ############

void FUN_1812bd8d0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  
  if ((*(longlong *)(param_1 + 0x100) != param_2) &&
     (*(longlong *)(param_1 + 0x100) = param_2, (*(byte *)(param_1 + 0xa8) & 1) != 0)) {
    lVar1 = FUN_1812d2bd0();
    if (lVar1 != 0) {
      *(undefined8 *)(lVar1 + 0x28) = *(undefined8 *)(param_1 + 0x100);
    }
  }
  return;
}



############ FUN_ 1812cc3b0 size=86 ############

void FUN_1812cc3b0(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  
  cVar1 = FUN_181345240();
  if (cVar1 != '\0') {
    if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
      if (*(longlong *)(param_1 + 0x18) == 0) {
        return;
      }
      lVar2 = FUN_18134c2e0();
    }
    else {
      lVar2 = FUN_1812d2bd0(param_1);
    }
    if ((lVar2 != 0) && ((*(uint *)(lVar2 + 0x10) & 0x402) == 0)) {
      FUN_181344f60(param_1,1);
      return;
    }
  }
  return;
}



############ FUN_ 1812cd580 size=105 ############

void FUN_1812cd580(longlong param_1,undefined8 param_2)

{
  char cVar1;
  longlong *plVar2;
  
  if (*(char *)(param_1 + 0xe3) == '\0') {
    return;
  }
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    cVar1 = *(char *)(param_1 + 0xe2);
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0();
    if (plVar2 == (longlong *)0x0) goto LAB_1812cd5c5;
    cVar1 = (**(code **)(*plVar2 + 0x78))(plVar2);
  }
  if (cVar1 != '\0') {
    return;
  }
LAB_1812cd5c5:
  *(undefined1 *)(param_1 + 0xe4) = 1;
  FUN_18133ae20(param_1 + 0xe8,param_1,param_2);
  return;
}



############ FUN_ 1812ce490 size=478 ############

void FUN_1812ce490(longlong *param_1,char param_2)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  ulonglong local_30;
  undefined8 uStack_28;
  undefined1 local_20 [24];
  
  if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
    cVar2 = *(char *)((longlong)param_1 + 0xe2);
  }
  else {
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      if (param_1[3] != 0) {
        plVar3 = (longlong *)FUN_18134c2e0();
        goto LAB_1812ce4ce;
      }
    }
    else {
      plVar3 = (longlong *)FUN_1812d2bd0();
LAB_1812ce4ce:
      if ((plVar3 != (longlong *)0x0) &&
         (cVar2 = (**(code **)(*plVar3 + 0x78))(plVar3), cVar2 != '\0')) {
        cVar2 = '\x01';
        goto LAB_1812ce4ef;
      }
    }
    cVar2 = '\0';
  }
LAB_1812ce4ef:
  if (param_2 == cVar2) {
    return;
  }
  cVar2 = FUN_181345240(param_1);
  if (cVar2 != '\0') {
    FUN_1812ce210(param_1);
    if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
      if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
        if (param_1[3] == 0) goto LAB_1812ce546;
        lVar4 = FUN_18134c2e0();
      }
      else {
        lVar4 = FUN_1812d2bd0(param_1);
      }
      if (lVar4 != 0) {
        *(longlong *)(lVar4 + 0x28) = param_1[0x27];
      }
    }
  }
LAB_1812ce546:
  *(char *)((longlong)param_1 + 0xe2) = param_2;
  if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
    if (param_2 == '\0') {
      uVar6 = param_1[0x20];
      uVar7 = param_1[0x1f];
      goto LAB_1812ce647;
    }
    if (param_1[3] == 0) {
      lVar4 = FUN_181344bc0(param_1,&local_30);
      uVar5 = *(undefined4 *)(lVar4 + 0xc);
    }
    else {
      uVar5 = *(undefined4 *)(param_1[3] + 0x2c);
    }
    if (param_1[3] == 0) {
      lVar4 = FUN_181344bc0(param_1,local_20);
      uVar1 = *(uint *)(lVar4 + 8);
    }
    else {
      uVar1 = *(uint *)(param_1[3] + 0x28);
    }
    uVar9 = (ulonglong)uVar1;
    uVar8 = 0;
    uVar7 = 0;
  }
  else {
    if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
      if (param_1[3] == 0) goto LAB_1812ce657;
      plVar3 = (longlong *)FUN_18134c2e0();
    }
    else {
      plVar3 = (longlong *)FUN_1812d2bd0(param_1);
    }
    if (plVar3 == (longlong *)0x0) goto LAB_1812ce657;
    local_30 = param_1[0x1f];
    uStack_28 = param_1[0x20];
    (**(code **)(*plVar3 + 0x70))(plVar3,param_2);
    if (((param_2 != '\0') || ((int)uStack_28 < 1)) ||
       (uVar6 = uStack_28, uVar7 = local_30, uStack_28._4_4_ < 1)) goto LAB_1812ce657;
LAB_1812ce647:
    uVar8 = uVar7 >> 0x20;
    uVar9 = uVar6 & 0xffffffff;
    uVar5 = (undefined4)(uVar6 >> 0x20);
  }
  FUN_18134bfe0(param_1,uVar7,uVar8,uVar9,uVar5);
LAB_1812ce657:
  (**(code **)(*param_1 + 0x108))(param_1);
  return;
}



############ FUN_ 1812cdd10 size=1038 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812cdd10(longlong param_1,undefined8 param_2)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  char cVar3;
  byte bVar4;
  longlong lVar5;
  longlong *plVar6;
  void *pvVar7;
  longlong lVar8;
  int iVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  size_t sVar12;
  undefined1 auStack_d8 [32];
  char local_b8 [4];
  undefined2 local_b4;
  char local_b0 [8];
  undefined1 *local_a8;
  undefined4 local_a0;
  char *local_98;
  undefined8 local_90;
  undefined1 local_78 [16];
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  ulonglong local_48 [2];
  
  local_90 = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_a0 = 0;
  local_98 = (char *)param_2;
  cVar3 = FUN_181345240();
  if (cVar3 != '\0') {
    FUN_1812ce210(param_1);
    bVar4 = *(byte *)(param_1 + 0xa8) & 1;
    if (bVar4 != 0) {
      if (bVar4 == 0) {
        if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812cdda3;
        lVar5 = FUN_18134c2e0();
      }
      else {
        lVar5 = FUN_1812d2bd0(param_1);
      }
      if (lVar5 != 0) {
        *(undefined8 *)(lVar5 + 0x28) = *(undefined8 *)(param_1 + 0x138);
      }
    }
  }
LAB_1812cdda3:
  bVar4 = *(byte *)(param_1 + 0xa8) & 1;
  if (bVar4 == 0) {
    cVar3 = *(char *)(param_1 + 0xe2);
joined_r0x0001812cde80:
    if ((cVar3 != '\0') && (cVar3 = FUN_1812ce2f0(param_1), cVar3 == '\0')) {
      local_98 = "fs ";
      goto LAB_1812cddf0;
    }
  }
  else if (bVar4 == 0) {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      plVar6 = (longlong *)FUN_18134c2e0();
      goto LAB_1812cddcf;
    }
  }
  else {
    plVar6 = (longlong *)FUN_1812d2bd0(param_1);
LAB_1812cddcf:
    if (plVar6 != (longlong *)0x0) {
      cVar3 = (**(code **)(*plVar6 + 0x78))(plVar6);
      goto joined_r0x0001812cde80;
    }
  }
  local_98 = "";
LAB_1812cddf0:
  local_a8 = &DAT_1821dbf98;
  local_a0 = 2;
  FUN_1812342b0(&local_a8,0x20);
  pvVar7 = (void *)FUN_181233e10(local_78,*(undefined4 *)(param_1 + 0xf8));
  iVar9 = (int)local_78 - (int)pvVar7;
  puVar10 = local_a8;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (local_a8[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,pvVar7,sVar12);
    puVar11[sVar12] = 0;
  }
  local_b8[0] = ' ';
  local_b8[1] = '\0';
  lVar5 = -1;
  do {
    lVar8 = lVar5 + 1;
    lVar2 = lVar5 + 1;
    lVar5 = lVar8;
  } while (local_b8[lVar2] != '\0');
  iVar9 = ((int)local_b8 + (int)lVar8) - (int)local_b8;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (puVar10[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,local_b8,sVar12);
    puVar11[sVar12] = 0;
  }
  pvVar7 = (void *)FUN_181233e10(local_68,*(undefined4 *)(param_1 + 0xfc));
  iVar9 = (int)local_68 - (int)pvVar7;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (puVar10[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,pvVar7,sVar12);
    puVar11[sVar12] = 0;
  }
  local_b4 = 0x20;
  lVar5 = -1;
  do {
    lVar8 = lVar5 + 1;
    lVar2 = lVar5 + 1;
    lVar5 = lVar8;
  } while (*(char *)((longlong)&local_b4 + lVar2) != '\0');
  iVar9 = ((int)&local_b4 + (int)lVar8) - (int)&local_b4;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (puVar10[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,&local_b4,sVar12);
    puVar11[sVar12] = 0;
  }
  pvVar7 = (void *)FUN_181233e10(local_58,*(undefined4 *)(param_1 + 0x100));
  iVar9 = (int)local_58 - (int)pvVar7;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (puVar10[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,pvVar7,sVar12);
    puVar11[sVar12] = 0;
  }
  local_b0[0] = ' ';
  local_b0[1] = '\0';
  lVar5 = -1;
  do {
    lVar8 = lVar5 + 1;
    lVar2 = lVar5 + 1;
    lVar5 = lVar8;
  } while (local_b0[lVar2] != '\0');
  iVar9 = ((int)local_b0 + (int)lVar8) - (int)local_b0;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (puVar10[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,local_b0,sVar12);
    puVar11[sVar12] = 0;
  }
  pvVar7 = (void *)FUN_181233e10(local_48,*(undefined4 *)(param_1 + 0x104));
  iVar9 = (int)local_48 - (int)pvVar7;
  if (0 < iVar9) {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (puVar10[lVar5] != '\0');
    sVar12 = (size_t)iVar9;
    FUN_1812342b0(&local_a8,lVar5 + sVar12);
    puVar10 = local_a8;
    puVar11 = local_a8 + (int)lVar5;
    memcpy(puVar11,pvVar7,sVar12);
    puVar11[sVar12] = 0;
  }
  FUN_181246550(param_2,local_98,&local_a8);
  _Memory = (uint *)(puVar10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1812ce140 size=124 ############

void FUN_1812ce140(longlong param_1)

{
  longlong lVar1;
  char cVar2;
  longlong *plVar3;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(char *)(param_1 + 0xe2) == '\0') {
      return;
    }
  }
  else {
    plVar3 = (longlong *)FUN_1812d2bd0();
    if (plVar3 == (longlong *)0x0) {
      return;
    }
    cVar2 = (**(code **)(*plVar3 + 0x78))();
    if (cVar2 == '\0') {
      return;
    }
  }
  lVar1 = *(longlong *)(param_1 + 0x18);
  if (lVar1 != 0) {
    FUN_18134bfe0(param_1,0,0,*(undefined4 *)(lVar1 + 0x28),*(undefined4 *)(lVar1 + 0x2c));
  }
  return;
}



############ FUN_ 1812ce1d0 size=45 ############

void FUN_1812ce1d0(longlong param_1)

{
  longlong lVar1;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
    lVar1 = FUN_1812d2bd0();
    if (lVar1 != 0) {
      *(undefined8 *)(lVar1 + 0x28) = *(undefined8 *)(param_1 + 0x138);
    }
  }
  return;
}



############ FUN_ 1812ce2a0 size=65 ############

void FUN_1812ce2a0(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  
  cVar1 = FUN_181345240();
  if (cVar1 != '\0') {
    FUN_1812ce210(param_1);
    if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
      lVar2 = FUN_1812d2bd0(param_1);
      if (lVar2 != 0) {
        *(undefined8 *)(lVar2 + 0x28) = *(undefined8 *)(param_1 + 0x138);
      }
    }
  }
  return;
}



############ FUN_ 1812ce380 size=178 ############

void FUN_1812ce380(longlong param_1)

{
  char cVar1;
  longlong *plVar2;
  longlong lVar3;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812ce3b9;
    plVar2 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0();
  }
  if ((plVar2 != (longlong *)0x0) &&
     (cVar1 = (**(code **)(*plVar2 + 0x68))(plVar2), cVar1 == '\x01')) {
    return;
  }
LAB_1812ce3b9:
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) {
      return;
    }
    plVar2 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0(param_1);
  }
  if (plVar2 != (longlong *)0x0) {
    cVar1 = FUN_181345240(param_1);
    if (((cVar1 != '\0') && (FUN_1812ce210(param_1), (*(byte *)(param_1 + 0xa8) & 1) != 0)) &&
       (lVar3 = FUN_1812d2bd0(param_1), lVar3 != 0)) {
      *(undefined8 *)(lVar3 + 0x28) = *(undefined8 *)(param_1 + 0x138);
    }
    (**(code **)(*plVar2 + 0x60))(plVar2,1);
  }
  return;
}



############ FUN_ 1812ce440 size=60 ############

ulonglong FUN_1812ce440(longlong param_1)

{
  ulonglong in_RAX;
  longlong *plVar1;
  ulonglong uVar2;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812ce475;
    plVar1 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar1 = (longlong *)FUN_1812d2bd0();
  }
  in_RAX = 0;
  if (plVar1 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001812ce471. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar2 = (**(code **)(*plVar1 + 0x68))(plVar1);
    return uVar2;
  }
LAB_1812ce475:
  return in_RAX & 0xffffffffffffff00;
}



############ FUN_ 1812ce680 size=68 ############

undefined1 FUN_1812ce680(longlong param_1)

{
  char cVar1;
  longlong *plVar2;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    return *(undefined1 *)(param_1 + 0xe2);
  }
  plVar2 = (longlong *)FUN_1812d2bd0();
  if (plVar2 != (longlong *)0x0) {
    cVar1 = (**(code **)(*plVar2 + 0x78))(plVar2);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



############ FUN_ 1812ce770 size=91 ############

void FUN_1812ce770(longlong *param_1)

{
  undefined4 uVar1;
  longlong lVar2;
  
  (**(code **)(*param_1 + 0x108))();
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    uVar1 = (**(code **)(*param_1 + 0x160))(param_1);
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar1,0);
    if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
      lVar2 = FUN_1812d2bd0(param_1);
      if (lVar2 != 0) {
        *(longlong *)(lVar2 + 0x28) = param_1[0x27];
      }
    }
  }
  return;
}



############ FUN_ 1812ce7e0 size=293 ############

void FUN_1812ce7e0(longlong *param_1,undefined8 param_2)

{
  code *pcVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong *plVar5;
  undefined4 local_res8 [2];
  undefined8 uVar6;
  undefined1 local_20 [24];
  
  uVar6 = 0xfffffffffffffffe;
  lVar3 = FUN_18134adf0();
  uVar4 = (**(code **)(*param_1 + 0x168))(param_1,local_20);
  pcVar1 = *(code **)(*(longlong *)(lVar3 + 0x60) + 0x18);
  if (pcVar1 == FUN_18130bbd0) {
    FUN_18134a8d0(param_1,local_res8,0x1005700,0);
    FUN_1812a3160(param_2,local_res8[0]);
  }
  else {
    (*pcVar1)(lVar3 + 0x60,param_2,(int)param_1[5],*(undefined4 *)((longlong)param_1 + 0x2c),uVar4,
              param_1,uVar6);
  }
  if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
    cVar2 = *(char *)((longlong)param_1 + 0xe2);
  }
  else {
    plVar5 = (longlong *)FUN_1812d2bd0(param_1);
    if (plVar5 == (longlong *)0x0) goto LAB_1812ce883;
    cVar2 = (**(code **)(*plVar5 + 0x78))(plVar5);
  }
  if (cVar2 != '\0') {
    return;
  }
LAB_1812ce883:
  uVar4 = (**(code **)(*param_1 + 0x168))(param_1,local_20);
  pcVar1 = *(code **)(*(longlong *)(lVar3 + 0x60) + 0x20);
  if (pcVar1 == FUN_18130bbc0) {
    return;
  }
  (*pcVar1)(lVar3 + 0x60,param_2,(int)param_1[5],*(undefined4 *)((longlong)param_1 + 0x2c),uVar4,
            param_1);
  return;
}



############ FUN_ 1812ce990 size=205 ############

void FUN_1812ce990(longlong param_1,longlong param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  bool bVar4;
  
  if (*(longlong *)(param_1 + 0x138) != param_2) {
    *(longlong *)(param_1 + 0x138) = param_2;
    bVar4 = *(longlong *)(param_1 + 0xc0) != 0;
    if ((bVar4) || (*(longlong *)(param_1 + 200) != 0)) {
      uVar3 = 1;
    }
    else {
      uVar3 = 0;
    }
    puVar1 = *(undefined8 **)(param_1 + 0xc0);
    *(undefined8 *)(param_1 + 0xc0) = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    puVar1 = *(undefined8 **)(param_1 + 200);
    *(undefined8 *)(param_1 + 200) = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    FUN_1812cec00(param_1,uVar3,bVar4);
    if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
      lVar2 = FUN_1812d2bd0(param_1);
      if (lVar2 != 0) {
        *(undefined8 *)(lVar2 + 0x28) = *(undefined8 *)(param_1 + 0x138);
      }
    }
  }
  return;
}



############ FUN_ 1812cf3a0 size=134 ############

void FUN_1812cf3a0(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  
  cVar1 = FUN_181345240();
  if (cVar1 != '\0') {
    if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
      if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812cf3eb;
      lVar2 = FUN_18134c2e0();
    }
    else {
      lVar2 = FUN_1812d2bd0(param_1);
    }
    if ((lVar2 != 0) && ((*(uint *)(lVar2 + 0x10) & 0x402) == 0)) {
      FUN_181344f60(param_1,1);
    }
  }
LAB_1812cf3eb:
  cVar1 = FUN_181345240(param_1);
  if (cVar1 != '\0') {
    FUN_1812ce210(param_1);
    if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
      lVar2 = FUN_1812d2bd0(param_1);
      if (lVar2 != 0) {
        *(undefined8 *)(lVar2 + 0x28) = *(undefined8 *)(param_1 + 0x138);
      }
    }
  }
  return;
}



############ FUN_ 1812cf430 size=65 ############

void FUN_1812cf430(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  
  cVar1 = FUN_181345240();
  if (cVar1 != '\0') {
    FUN_1812ce210(param_1);
    if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
      lVar2 = FUN_1812d2bd0(param_1);
      if (lVar2 != 0) {
        *(undefined8 *)(lVar2 + 0x28) = *(undefined8 *)(param_1 + 0x138);
      }
    }
  }
  return;
}



############ FUN_ 1812d03c0 size=283 ############

void FUN_1812d03c0(longlong param_1)

{
  char cVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined1 uVar4;
  undefined4 local_18;
  int local_14;
  undefined4 local_10;
  int local_c;
  
  FUN_1812cf0f0();
  lVar3 = *(longlong *)(param_1 + 0x158);
  if (lVar3 == 0) goto LAB_1812d042c;
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    uVar4 = *(undefined1 *)(param_1 + 0xe2);
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0(param_1);
    if (plVar2 != (longlong *)0x0) {
      cVar1 = (**(code **)(*plVar2 + 0x78))(plVar2);
      if (cVar1 != '\0') {
        uVar4 = 1;
        goto LAB_1812d041e;
      }
    }
    uVar4 = 0;
  }
LAB_1812d041e:
  FUN_181337080(lVar3,uVar4,0,0);
LAB_1812d042c:
  FUN_1812d01c0(param_1,&local_18);
  lVar3 = FUN_18134adf0(param_1);
  (**(code **)(*(longlong *)(lVar3 + 0x68) + 0x18))
            (lVar3 + 0x68,param_1,local_18,local_14,local_10,local_c,
             *(undefined8 *)(param_1 + 0x150),*(undefined8 *)(param_1 + 0x158),
             *(undefined8 *)(param_1 + 0x160),*(undefined1 *)(param_1 + 0x14c));
  if (*(longlong *)(param_1 + 0x170) != 0) {
    FUN_18134bfe0(*(longlong *)(param_1 + 0x170),local_18,local_14 + local_c,local_10,
                  *(undefined4 *)(param_1 + 0x144));
  }
  return;
}



############ FUN_ 1812d04f0 size=620 ############

void FUN_1812d04f0(longlong *param_1,longlong param_2)

{
  code *pcVar1;
  char cVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong *plVar6;
  int iVar7;
  int iVar8;
  undefined4 local_res8 [2];
  undefined8 in_stack_ffffffffffffff88;
  undefined4 uVar9;
  undefined8 in_stack_ffffffffffffff90;
  undefined4 uVar10;
  undefined4 local_38;
  undefined4 uStack_34;
  int iStack_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  undefined4 uStack_24;
  int iStack_20;
  undefined4 uStack_1c;
  
  uVar9 = (undefined4)((ulonglong)in_stack_ffffffffffffff88 >> 0x20);
  uVar10 = (undefined4)((ulonglong)in_stack_ffffffffffffff90 >> 0x20);
  lVar4 = FUN_18134adf0();
  uVar5 = (**(code **)(*param_1 + 0x168))(param_1,&local_28);
  pcVar1 = *(code **)(*(longlong *)(lVar4 + 0x60) + 0x18);
  if (pcVar1 == FUN_18130bbd0) {
    FUN_18134a8d0(param_1,local_res8,0x1005700,0);
    FUN_1812a3160(param_2,local_res8[0]);
  }
  else {
    plVar6 = param_1;
    (*pcVar1)(lVar4 + 0x60,param_2,(int)param_1[5],*(undefined4 *)((longlong)param_1 + 0x2c),uVar5,
              param_1);
    uVar9 = (undefined4)((ulonglong)uVar5 >> 0x20);
    uVar10 = (undefined4)((ulonglong)plVar6 >> 0x20);
  }
  if ((*(byte *)(param_1 + 0x15) & 1) == 0) {
    cVar2 = *(char *)((longlong)param_1 + 0xe2);
LAB_1812d05a1:
    if (cVar2 != '\0') goto LAB_1812d05cc;
  }
  else {
    plVar6 = (longlong *)FUN_1812d2bd0(param_1);
    if (plVar6 != (longlong *)0x0) {
      cVar2 = (**(code **)(*plVar6 + 0x78))(plVar6);
      goto LAB_1812d05a1;
    }
  }
  uVar5 = (**(code **)(*param_1 + 0x168))(param_1,&local_28);
  pcVar1 = *(code **)(*(longlong *)(lVar4 + 0x60) + 0x20);
  if (pcVar1 != FUN_18130bbc0) {
    plVar6 = param_1;
    (*pcVar1)(lVar4 + 0x60,param_2,(int)param_1[5],*(undefined4 *)((longlong)param_1 + 0x2c),uVar5,
              param_1);
    uVar9 = (undefined4)((ulonglong)uVar5 >> 0x20);
    uVar10 = (undefined4)((ulonglong)plVar6 >> 0x20);
  }
LAB_1812d05cc:
  FUN_1812d01c0(param_1,&local_38);
  local_28 = local_38;
  uStack_24 = uStack_34;
  iStack_20 = iStack_30;
  uStack_1c = uStack_2c;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_28);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x10))
            (*(longlong **)(param_2 + 8),CONCAT44(uStack_34,local_38));
  iVar8 = 6;
  iVar7 = iStack_30 + -6;
  for (plVar6 = param_1 + 0x2a; plVar6 != param_1 + 0x2d; plVar6 = plVar6 + 1) {
    lVar4 = *plVar6;
    if (lVar4 != 0) {
      if (*(char *)((longlong)param_1 + 0x14c) == '\0') {
        iVar3 = *(int *)(lVar4 + 0x20);
        iVar3 = iVar3 - ((int)(iVar3 + (iVar3 >> 0x1f & 7U)) >> 3);
        if (iVar3 < iVar7) {
          iVar7 = iVar3;
        }
      }
      else {
        iVar3 = ((int)param_1[5] - *(int *)(lVar4 + 0x28)) - *(int *)(lVar4 + 0x20);
        iVar3 = ((int)(iVar3 + (iVar3 >> 0x1f & 7U)) >> 3) + *(int *)(lVar4 + 0x28) +
                *(int *)(lVar4 + 0x20);
        if (iVar8 < iVar3) {
          iVar8 = iVar3;
        }
      }
    }
  }
  plVar6 = (longlong *)0x0;
  if (param_1[0x2d] != 0) {
    plVar6 = param_1 + 0x2d;
  }
  lVar4 = FUN_18134adf0(param_1);
  iVar3 = 1;
  if (1 < iVar7 - iVar8) {
    iVar3 = iVar7 - iVar8;
  }
  (**(code **)(*(longlong *)(lVar4 + 0x68) + 8))
            ((longlong *)(lVar4 + 0x68),param_1,param_2,iStack_30,CONCAT44(uVar9,uStack_2c),
             CONCAT44(uVar10,iVar8),iVar3,plVar6,*(char *)((longlong)param_1 + 0x14d) == '\0');
  return;
}



############ FUN_ 1812d0770 size=106 ############

void FUN_1812d0770(longlong param_1)

{
  char cVar1;
  ulonglong *puVar2;
  ulonglong uVar3;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    FUN_1812ce490(param_1,*(char *)(param_1 + 0xe2) == '\0');
    return;
  }
  puVar2 = (ulonglong *)FUN_1812d2bd0();
  if (puVar2 != (ulonglong *)0x0) {
    uVar3 = *puVar2;
    cVar1 = (**(code **)(uVar3 + 0x78))(puVar2);
    if (cVar1 != '\0') {
      FUN_1812ce490(param_1,uVar3 & 0xffffffffffffff00);
      return;
    }
  }
  FUN_1812ce490(param_1,1);
  return;
}



############ FUN_ 1812d07e0 size=178 ############

void FUN_1812d07e0(longlong param_1)

{
  char cVar1;
  longlong *plVar2;
  longlong lVar3;
  
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812d0819;
    plVar2 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0();
  }
  if ((plVar2 != (longlong *)0x0) &&
     (cVar1 = (**(code **)(*plVar2 + 0x68))(plVar2), cVar1 == '\x01')) {
    return;
  }
LAB_1812d0819:
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) {
      return;
    }
    plVar2 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar2 = (longlong *)FUN_1812d2bd0(param_1);
  }
  if (plVar2 != (longlong *)0x0) {
    cVar1 = FUN_181345240(param_1);
    if (((cVar1 != '\0') && (FUN_1812ce210(param_1), (*(byte *)(param_1 + 0xa8) & 1) != 0)) &&
       (lVar3 = FUN_1812d2bd0(param_1), lVar3 != 0)) {
      *(undefined8 *)(lVar3 + 0x28) = *(undefined8 *)(param_1 + 0x138);
    }
    (**(code **)(*plVar2 + 0x60))(plVar2,1);
  }
  return;
}



############ FUN_ 1812e9660 size=307 ############

void FUN_1812e9660(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1812e96b7;
    plVar3 = (longlong *)FUN_18134c2e0();
  }
  else {
    plVar3 = (longlong *)FUN_1812d2bd0();
  }
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0xd8))(plVar3);
  }
LAB_1812e96b7:
  FUN_1804de690(&local_res8,param_1);
  puVar2 = local_res8;
  iVar6 = *(int *)(param_1 + 0x1dc);
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar5 = 0;
  while( true ) {
    lVar4 = lVar5;
    if (bVar7) {
      lVar4 = puVar2[2];
    }
    if ((lVar4 == 0) || (iVar6 < 1)) break;
    iVar6 = iVar6 + -1;
    if ((*(int *)(param_1 + 0x1dc) <= iVar6) && (iVar6 = *(int *)(param_1 + 0x1dc) + -1, iVar6 < 0))
    break;
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x1d0) + (longlong)iVar6 * 8);
    (**(code **)(*plVar3 + 0x18))(plVar3,param_1,param_2,param_4,uVar8);
  }
  if (bVar7) {
    lVar5 = puVar2[2];
  }
  if ((lVar5 != 0) && (*(longlong *)(param_1 + 400) != 0)) {
    if (*(longlong **)(param_1 + 400) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(**(longlong **)(param_1 + 400) + 0x10))();
  }
  if (puVar2 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar2 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1813228e0 size=442 ############

void FUN_1813228e0(longlong *param_1)

{
  longlong *plVar1;
  char cVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  
  lVar7 = 0;
  lVar3 = lVar7;
  if (param_1[1] != 0) {
    lVar3 = *(longlong *)(param_1[1] + 0x10);
  }
  if (lVar3 == 0) {
    return;
  }
  plVar1 = param_1 + 5;
  if ((char)*plVar1 != '\0') {
    return;
  }
  lVar3 = *plVar1;
  *(char *)plVar1 = '\x01';
  lVar4 = lVar7;
  if (param_1[1] != 0) {
    lVar4 = *(longlong *)(param_1[1] + 0x10);
  }
  if ((*(byte *)(lVar4 + 0xa8) & 1) == 0) {
    if (*(longlong *)(lVar4 + 0x18) != 0) {
      lVar4 = FUN_18134c2e0();
      goto LAB_18132297e;
    }
LAB_181322988:
    iVar6 = 0;
  }
  else {
    lVar4 = FUN_1812d2bd0(lVar4);
LAB_18132297e:
    if (lVar4 == 0) goto LAB_181322988;
    iVar6 = *(int *)(lVar4 + 0x58);
  }
  if (iVar6 != (int)param_1[2]) {
    (**(code **)(*param_1 + 0x50))(param_1);
    lVar4 = lVar7;
    if (param_1[1] != 0) {
      lVar4 = *(longlong *)(param_1[1] + 0x10);
    }
    if (lVar4 == 0) goto LAB_181322a74;
    *(int *)(param_1 + 2) = iVar6;
  }
  FUN_1813224b0(param_1);
  FUN_1813225e0(param_1);
  lVar4 = lVar7;
  if (param_1[1] != 0) {
    lVar4 = *(longlong *)(param_1[1] + 0x10);
  }
  (**(code **)(*param_1 + 8))(param_1,lVar4,1);
  lVar4 = param_1[1];
  lVar5 = lVar7;
  if (lVar4 != 0) {
    lVar5 = *(longlong *)(lVar4 + 0x10);
  }
  if (lVar5 != 0) {
    lVar5 = lVar7;
    if (lVar4 != 0) {
      lVar5 = *(longlong *)(lVar4 + 0x10);
    }
    if (*(code **)(*param_1 + 0x18) == FUN_1813226e0) {
      lVar5 = lVar7;
      if (lVar4 != 0) {
        lVar5 = *(longlong *)(lVar4 + 0x10);
      }
      if (lVar5 != 0) {
        if (lVar4 != 0) {
          lVar7 = *(longlong *)(lVar4 + 0x10);
        }
        cVar2 = FUN_181345240(lVar7);
        if (*(char *)((longlong)param_1 + 0x29) != cVar2) {
          *(char *)((longlong)param_1 + 0x29) = cVar2;
          (**(code **)(*param_1 + 0x58))(param_1);
        }
      }
    }
    else {
      (**(code **)(*param_1 + 0x18))(param_1,lVar5);
    }
  }
LAB_181322a74:
  *(char *)plVar1 = (char)lVar3;
  return;
}



############ FUN_ 1813bd1d0 size=589 ############

void FUN_1813bd1d0(longlong param_1)

{
  uint uVar1;
  longlong *plVar2;
  char cVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  uint *puVar7;
  longlong local_res10;
  undefined1 local_res18 [16];
  undefined1 local_70 [24];
  undefined1 local_58 [24];
  undefined1 local_40 [24];
  undefined1 local_28 [32];
  
  cVar3 = FUN_181345240();
  if (cVar3 == '\0') {
    if (*(longlong *)(param_1 + 0xb0) == 0) {
      return;
    }
    if (*(char *)(param_1 + 0xb9) == '\0') {
      return;
    }
    if (*(char *)(param_1 + 0xb8) != '\0') {
      return;
    }
    *(undefined1 *)(param_1 + 0xb8) = 1;
    FUN_18049c4e0(&local_res10,"about:blank");
    lVar4 = *(longlong *)(param_1 + 0xb0);
    if (*(longlong *)(lVar4 + 0xc0) != 0) {
      Ordinal_8(local_70);
      Ordinal_8(local_58);
      Ordinal_8(local_40);
      Ordinal_8(local_28);
      puVar5 = (undefined8 *)FUN_18049a930(local_res18,&local_res10);
      uVar6 = Ordinal_2(*puVar5);
      plVar2 = *(longlong **)(lVar4 + 0xc0);
      (**(code **)(*plVar2 + 0x58))(plVar2,uVar6,local_70,local_58,local_40,local_28);
      Ordinal_6(uVar6);
      Ordinal_9(local_70);
      Ordinal_9(local_58);
      Ordinal_9(local_40);
      Ordinal_9(local_28);
    }
    puVar7 = (uint *)(local_res10 + -0x10);
    if ((*puVar7 & 0x30000000) != 0) {
      return;
    }
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 != 0) {
      return;
    }
                    /* WARNING: Subroutine does not return */
    free(puVar7);
  }
  if (*(longlong *)(*(longlong *)(param_1 + 0xb0) + 0xc0) == 0) {
    if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
      if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1813bd255;
      lVar4 = FUN_18134c2e0();
    }
    else {
      lVar4 = FUN_1812d2bd0(param_1);
    }
    if (lVar4 != 0) {
      FUN_18055ae40(*(undefined8 *)(param_1 + 0xb0));
      FUN_1813bd070(param_1);
      return;
    }
  }
LAB_1813bd255:
  if (*(char *)(param_1 + 0xb8) != '\0') {
    puVar7 = (uint *)(*(longlong *)(param_1 + 0xc0) + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    *(undefined1 **)(param_1 + 0xc0) = &DAT_1821dbf98;
    *(undefined1 *)(param_1 + 0xb8) = 0;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0xb0) + 0xc0);
    if (plVar2 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001813bd2ca. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)(*plVar2 + 0x38))();
      return;
    }
  }
  return;
}



############ FUN_ 18049d580 size=145 ############

longlong FUN_18049d580(byte *param_1)

{
  byte bVar1;
  uint uVar2;
  longlong lVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  
  lVar6 = 0;
  do {
    bVar1 = *param_1;
    param_1 = param_1 + 1;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar2 = 0x40;
      iVar5 = 0;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar2 < 9) break;
          uVar4 = uVar4 >> 1;
          iVar5 = iVar5 + 1;
          uVar2 = uVar2 >> 1;
        } while ((bVar1 & uVar2) != 0);
      }
      uVar4 = bVar1 & uVar4;
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*param_1 & 0xc0) == 0x80)); param_1 = param_1 + 1)
      {
        uVar4 = *param_1 & 0x3f | uVar4 << 6;
      }
    }
    if (uVar4 == 0) {
      return lVar6;
    }
    lVar3 = 2;
    if (0xffff < uVar4) {
      lVar3 = 4;
    }
    lVar6 = lVar6 + lVar3;
  } while( true );
}



############ FUN_ 1812342b0 size=241 ############

void FUN_1812342b0(undefined8 *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  void *_Src;
  undefined4 *puVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  
  _Src = (void *)*param_1;
  uVar4 = param_2 + 1;
  if ((*(uint *)((longlong)_Src + -0x10) & 0x30000000) != 0) {
    puVar3 = (undefined4 *)thunk_FUN_1811316e0();
    LOCK();
    *puVar3 = 0;
    UNLOCK();
    *(ulonglong *)(puVar3 + 2) = param_2 + 4U & 0xfffffffffffffffc;
    *(undefined1 *)(puVar3 + 4) = 0;
    *param_1 = puVar3 + 4;
    return;
  }
  if ((uVar4 <= *(ulonglong *)((longlong)_Src + -8)) && (*(int *)((longlong)_Src + -0x10) < 1)) {
    *param_1 = _Src;
    return;
  }
  uVar5 = *(ulonglong *)((longlong)_Src + -8);
  if (*(ulonglong *)((longlong)_Src + -8) < uVar4) {
    uVar5 = uVar4;
  }
  puVar3 = (undefined4 *)thunk_FUN_1811316e0();
  LOCK();
  *puVar3 = 0;
  UNLOCK();
  *(ulonglong *)(puVar3 + 2) = uVar5 + 3 & 0xfffffffffffffffc;
  memcpy(puVar3 + 4,_Src,*(size_t *)((longlong)_Src + -8));
  if ((*(uint *)((longlong)_Src + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)((longlong)_Src + -0x10);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)((longlong)_Src + -0x10));
    }
  }
  *param_1 = puVar3 + 4;
  return;
}



############ FUN_ 181244b10 size=193 ############

bool FUN_181244b10(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  bool bVar2;
  DWORD DVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined1 local_res8 [8];
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  bVar2 = true;
  if (*(char *)*param_1 != '\0') {
    puVar5 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar5);
    bVar1 = true;
    if (DVar3 != 0xffffffff) goto LAB_181244b5e;
  }
  bVar1 = false;
LAB_181244b5e:
  if (!bVar1) {
    return true;
  }
  puVar5 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,uVar6);
  DVar3 = GetFileAttributesW((LPCWSTR)*puVar5);
  if (((DVar3 & 0x10) == 0) || (DVar3 == 0xffffffff)) {
    bVar2 = false;
  }
  puVar5 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,uVar6);
  if (bVar2) {
    iVar4 = RemoveDirectoryW((LPCWSTR)*puVar5);
  }
  else {
    iVar4 = DeleteFileW((LPCWSTR)*puVar5);
  }
  return iVar4 != 0;
}



############ FUN_ 1804cf280 size=521 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804cf280(ATOM *param_1,LPCWSTR param_2,WNDPROC param_3)

{
  uint uVar1;
  char cVar2;
  ATOM AVar3;
  ulonglong uVar4;
  undefined4 *puVar5;
  HINSTANCE hInstance;
  undefined8 *puVar6;
  HWND pHVar7;
  uint *puVar8;
  char *_Src;
  undefined1 auStackY_148 [32];
  longlong local_e8;
  undefined4 *local_e0;
  LARGE_INTEGER local_d8;
  undefined8 local_d0;
  undefined1 local_c8 [16];
  WNDCLASSEXW local_b8;
  char local_4a [2];
  undefined8 local_48;
  char cStack_39;
  
  local_d0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStackY_148;
  FUN_18049c4e0(&local_e8,"JUCE_");
  QueryPerformanceCounter(&local_d8);
  uVar4 = DAT_182673a10 + local_d8.QuadPart;
  _Src = local_4a + 1;
  local_4a[1] = 0;
  do {
    _Src = _Src + -1;
    cVar2 = "0123456789abcdef"[(uint)uVar4 & 0xf];
    *_Src = cVar2;
    uVar4 = uVar4 >> 4;
  } while (uVar4 != 0);
  if (cVar2 == '\0') {
    puVar5 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    uVar4 = (longlong)&local_48 + -(longlong)_Src + 3 & 0xfffffffffffffffc;
    puVar5 = (undefined4 *)thunk_FUN_1811316e0(uVar4 + 0x17);
    LOCK();
    *puVar5 = 0;
    UNLOCK();
    *(ulonglong *)(puVar5 + 2) = uVar4;
    puVar5 = puVar5 + 4;
    memcpy(puVar5,_Src,(size_t)(local_4a + -(longlong)_Src + 1));
    *(char *)((longlong)puVar5 + (longlong)(local_4a + -(longlong)_Src + 1)) = '\0';
  }
  local_e0 = puVar5;
  FUN_181232d30(&local_e8);
  puVar8 = puVar5 + -4;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  hInstance = (HINSTANCE)FUN_181249ad0();
  memset(&local_b8,0,0x50);
  local_b8.cbSize = 0x50;
  local_b8.cbWndExtra = 4;
  local_b8.lpfnWndProc = param_3;
  local_b8.hInstance = hInstance;
  puVar6 = (undefined8 *)FUN_18049a930(local_c8,&local_e8);
  local_b8.lpszClassName = (LPCWSTR)*puVar6;
  AVar3 = RegisterClassExW(&local_b8);
  *param_1 = AVar3;
  pHVar7 = CreateWindowExW(0,(LPCWSTR)(ulonglong)AVar3,param_2,0,0,0,0,0,(HWND)0x0,(HMENU)0x0,
                           hInstance,(LPVOID)0x0);
  *(HWND *)(param_1 + 4) = pHVar7;
  puVar8 = (uint *)(local_e8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
}



############ FUN_ 1812165e0 size=211 ############

void FUN_1812165e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 **ppuVar3;
  longlong *local_res8;
  undefined8 **local_res10;
  undefined1 local_res18 [16];
  
  local_res8 = (longlong *)*param_1;
  if (((ulonglong)local_res8[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -2) = *(int *)(local_res8 + -2) + 1;
    UNLOCK();
  }
  local_res10 = &local_res8;
  FUN_181232e20(&local_res8,&DAT_1821db7fc,&DAT_1821db7fd,param_4,0xfffffffffffffffe);
  local_res10 = (undefined8 **)local_res8;
  if (((ulonglong)local_res8[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -2) = *(int *)(local_res8 + -2) + 1;
    UNLOCK();
  }
  ppuVar3 = (undefined8 **)(local_res8 + -2);
  if (((ulonglong)*ppuVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)ppuVar3;
    *(uint *)ppuVar3 = *(uint *)ppuVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppuVar3);
    }
  }
  puVar2 = (undefined8 *)FUN_18049a930(local_res18,&local_res10);
  OutputDebugStringW((LPCWSTR)*puVar2);
  ppuVar3 = local_res10 + -2;
  if (((ulonglong)*ppuVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)ppuVar3;
    *(uint *)ppuVar3 = *(uint *)ppuVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppuVar3);
    }
  }
  return;
}



############ FUN_ 18049a330 size=631 ############

longlong * FUN_18049a330(longlong *param_1,longlong *param_2,DWORD param_3)

{
  uint uVar1;
  DWORD DVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  HANDLE pvVar5;
  uint *puVar6;
  longlong local_res8;
  longlong *local_res10;
  longlong local_res20;
  longlong local_58;
  longlong local_50;
  longlong local_48 [3];
  undefined1 local_30 [8];
  undefined1 local_28 [16];
  
  local_48[1] = 0xfffffffffffffffe;
  *param_1 = 0;
  *(undefined4 *)(param_1 + 1) = 1;
  local_res10 = param_2;
  plVar3 = (longlong *)FUN_1812316c0(param_2,local_48,0x5c);
  local_48[2] = *param_2;
  *param_2 = *plVar3;
  *plVar3 = local_48[2];
  puVar6 = (uint *)(local_48[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  FUN_18049c4e0(&local_res8,"Global\\");
  plVar3 = (longlong *)FUN_181232d30(&local_res8,param_2);
  local_res20 = *plVar3;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  puVar6 = (uint *)(local_res8 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar4 = (undefined8 *)FUN_18049a930(local_30,&local_res20);
  pvVar5 = CreateMutexW((LPSECURITY_ATTRIBUTES)0x0,1,(LPCWSTR)*puVar4);
  *param_1 = (longlong)pvVar5;
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (*param_1 == 0) {
    FUN_18049c4e0(&local_58,"Local\\");
    plVar3 = (longlong *)FUN_181232d30(&local_58,param_2);
    local_50 = *plVar3;
    if ((*(uint *)(local_50 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_50 + -0x10) = *(int *)(local_50 + -0x10) + 1;
      UNLOCK();
    }
    puVar6 = (uint *)(local_58 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar4 = (undefined8 *)FUN_18049a930(local_28,&local_50);
    pvVar5 = CreateMutexW((LPSECURITY_ATTRIBUTES)0x0,1,(LPCWSTR)*puVar4);
    *param_1 = (longlong)pvVar5;
    puVar6 = (uint *)(local_50 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    if (*param_1 == 0) goto LAB_18049a574;
  }
  DVar2 = GetLastError();
  if (DVar2 == 0xb7) {
    pvVar5 = (HANDLE)*param_1;
    if (param_3 == 0) {
      if (pvVar5 != (HANDLE)0x0) {
        ReleaseMutex(pvVar5);
        CloseHandle((HANDLE)*param_1);
        *param_1 = 0;
      }
    }
    else {
      if ((int)param_3 < 0) {
        param_3 = 0xffffffff;
      }
      DVar2 = WaitForSingleObject(pvVar5,param_3);
      if ((DVar2 & 0xffffff7f) != 0) {
        FUN_18049a5b0(param_1);
      }
    }
  }
LAB_18049a574:
  puVar6 = (uint *)(*param_2 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return param_1;
}



############ FUN_ 18123efe0 size=235 ############

undefined8 * FUN_18123efe0(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  HANDLE pvVar4;
  uint *_Memory;
  longlong local_res10;
  undefined1 local_res18 [8];
  undefined8 local_res20;
  
  *param_1 = juce::FileInputStream::vftable;
  lVar2 = *param_2;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = &DAT_1821dbf98;
  puVar3 = (undefined8 *)FUN_18049a930(local_res18,param_1 + 1);
  pvVar4 = CreateFileW((LPCWSTR)*puVar3,0x80000000,7,(LPSECURITY_ATTRIBUTES)0x0,3,0x8000080,
                       (HANDLE)0x0);
  if (pvVar4 == (HANDLE)0xffffffffffffffff) {
    puVar3 = (undefined8 *)FUN_1812181b0(&local_res10);
    local_res20 = param_1[4];
    param_1[4] = *puVar3;
    *puVar3 = local_res20;
    _Memory = (uint *)(local_res10 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  else {
    param_1[2] = pvVar4;
  }
  return param_1;
}



############ FUN_ 180498d80 size=567 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180498d80(longlong param_1,DWORD param_2)

{
  BOOL BVar1;
  DWORD DVar2;
  undefined8 *puVar3;
  HANDLE pvVar4;
  double dVar5;
  undefined1 auStackY_b8 [32];
  _OVERLAPPED local_68;
  HANDLE local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStackY_b8;
  if (*(char *)(param_1 + 0x19) == '\0') {
    if (*(longlong *)(param_1 + 8) != -1) {
    }
    dVar5 = (double)(int)param_2 * DAT_1824c3e30;
    _ftime64_s(&local_68);
    dVar5 = dVar5 * DAT_1824c4340;
    while( true ) {
      EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1b));
      if (*(longlong *)(param_1 + 8) == -1) {
        puVar3 = (undefined8 *)FUN_18049a930(&local_68,param_1);
        pvVar4 = CreateFileW((LPCWSTR)*puVar3,0xc0000000,0,(LPSECURITY_ATTRIBUTES)0x0,3,0x40000000,
                             (HANDLE)0x0);
        *(HANDLE *)(param_1 + 8) = pvVar4;
      }
      LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1b));
      if (*(longlong *)(param_1 + 8) != -1) {
      }
      if (*(char *)(param_1 + 0x1a) != '\0') {
      }
      if ((-1 < (int)param_2) &&
         (_ftime64_s(&local_48),
         (longlong)((longlong)dVar5 + local_68.Internal * 1000 + (local_68.InternalHigh & 0xffff)) <
         (longlong)((longlong)local_48 * 1000 + (local_40 & 0xffff)))) break;
      if (DAT_182673a00 == (HANDLE)0x0) {
        Sleep(1);
      }
      else {
        WaitForSingleObject(DAT_182673a00,1);
      }
    }
  }
  if (*(char *)(param_1 + 0x18) != '\0') {
  }
  local_68.Internal = 0;
  local_68.InternalHigh = 0;
  local_68.u.Pointer = (PVOID)0x0;
  local_68.hEvent = (HANDLE)0x0;
  local_68.hEvent = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,1,0,(LPCWSTR)0x0);
  BVar1 = ConnectNamedPipe(*(HANDLE *)(param_1 + 8),&local_68);
  if (BVar1 == 0) {
    DVar2 = GetLastError();
    if (DVar2 == 0x217) {
      *(undefined1 *)(param_1 + 0x18) = 1;
    }
    else if ((DVar2 == 0x218) || (DVar2 == 0x3e5)) {
      if (*(char *)(param_1 + 0x1a) == '\0') {
        local_48 = local_68.hEvent;
        local_40 = *(ulonglong *)(param_1 + 0x10);
        DVar2 = 0xffffffff;
        if (-1 < (int)param_2) {
          DVar2 = param_2;
        }
        DVar2 = WaitForMultipleObjects(2,&local_48,0,DVar2);
        if (DVar2 == 0) {
          *(undefined1 *)(param_1 + 0x18) = 1;
          goto LAB_180498f97;
        }
        CancelIo(*(HANDLE *)(param_1 + 8));
      }
      *(undefined1 *)(param_1 + 0x18) = 0;
    }
  }
LAB_180498f97:
  CloseHandle(local_68.hEvent);
}



############ FUN_ 180499af0 size=833 ############

void FUN_180499af0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  int *piVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  void *pvVar6;
  void *pvVar7;
  void *pvVar8;
  void *_Memory;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined4 local_res20 [2];
  ulonglong in_stack_fffffffffffffef8;
  undefined4 local_e8 [6];
  void *local_d0;
  undefined4 local_c8;
  undefined2 local_c4;
  void *local_c0;
  undefined4 local_b8;
  void *local_b0;
  undefined4 local_a8;
  void *local_a0;
  undefined4 local_98;
  undefined8 local_78;
  void *local_70;
  void *local_68;
  void *local_60;
  void *local_58;
  undefined1 local_50 [16];
  
  local_78 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267af3c) {
    _Init_thread_header(&DAT_18267af3c);
    if (DAT_18267af3c == -1) {
      DAT_18267af60 = InternetOpenW(L"juce",0,0,0,in_stack_fffffffffffffef8 & 0xffffffff00000000);
      _Init_thread_footer(&DAT_18267af3c);
    }
  }
  lVar2 = *(longlong *)(param_1 + 0x60);
  *(undefined8 *)(param_1 + 0x60) = 0;
  if (lVar2 != 0) {
    InternetCloseHandle();
  }
  if (*(longlong *)(param_1 + 0x58) != 0) {
    InternetCloseHandle();
    *(undefined8 *)(param_1 + 0x58) = 0;
  }
  if (DAT_18267af60 != 0) {
    pvVar6 = malloc(0x20000);
    local_70 = pvVar6;
    pvVar7 = malloc(0x1000);
    local_68 = pvVar7;
    pvVar8 = malloc(0x800);
    local_60 = pvVar8;
    _Memory = malloc(0x800);
    local_58 = _Memory;
    memset(local_e8,0,0x68);
    local_e8[0] = 0x68;
    local_98 = 0x10000;
    local_c8 = 0x800;
    local_b8 = 0x400;
    local_a8 = 0x400;
    local_d0 = pvVar7;
    local_c0 = pvVar8;
    local_b0 = _Memory;
    local_a0 = pvVar6;
    if (*(char *)(param_1 + 0x89) != '\0') {
      FUN_1812138f0(param_1 + 0x10,param_1 + 0x68,param_1 + 0x70);
    }
    puVar9 = (undefined8 *)FUN_18049a930(local_50,param_2);
    iVar4 = InternetCrackUrlW(*puVar9,0,0,local_e8);
    lVar2 = DAT_18267af60;
    if (iVar4 != 0) {
      local_res20[0] = 1;
      InternetSetOptionW(DAT_18267af60,0x46,local_res20,4);
      piVar1 = (int *)(param_1 + 0x8c);
      if (*piVar1 == 0) {
        *piVar1 = 30000;
      }
      else if (*piVar1 < 0) {
        *piVar1 = -1;
      }
      InternetSetOptionW(lVar2,2,piVar1);
      InternetSetOptionW(lVar2,6,piVar1);
      InternetSetOptionW(lVar2,5,piVar1);
      InternetSetOptionW(lVar2,8,piVar1);
      InternetSetOptionW(lVar2,7,piVar1);
      cVar3 = FUN_18124a650(param_2,&DAT_182496b0c);
      EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 200));
      if (*(char *)(param_1 + 0xf4) == '\0') {
        uVar5 = 3;
        if (cVar3 != '\0') {
          uVar5 = 1;
        }
        uVar10 = InternetConnectW(lVar2,local_d0,local_c4,local_c0,local_b0,uVar5,0,0);
      }
      else {
        uVar10 = 0;
      }
      *(undefined8 *)(param_1 + 0x58) = uVar10;
      LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 200));
      if (*(longlong *)(param_1 + 0x58) != 0) {
        if (cVar3 == '\0') {
          FUN_180499e50(param_1,local_e8,param_2,param_3);
        }
        else {
          uVar10 = FtpOpenFileW(*(longlong *)(param_1 + 0x58),local_a0,0x80000000,0x12,0);
          *(undefined8 *)(param_1 + 0x60) = uVar10;
        }
      }
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 180499e50 size=461 ############

void FUN_180499e50(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  byte bVar1;
  char cVar2;
  DWORD DVar3;
  longlong lVar4;
  undefined8 *puVar5;
  byte *pbVar6;
  longlong lVar7;
  undefined4 uVar8;
  LPCRITICAL_SECTION local_res8;
  undefined8 local_res20;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  longlong local_60;
  undefined8 *local_58;
  undefined8 *local_50;
  undefined *local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined1 local_30 [8];
  
  local_38 = 0xfffffffffffffffe;
  local_48 = &DAT_182496b18;
  lVar7 = 0;
  local_40 = 0;
  local_res20 = param_4;
  cVar2 = FUN_18124a650(param_3,"https:");
  uVar8 = 0x84280000;
  if (cVar2 != '\0') {
    uVar8 = 0x84a80000;
  }
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 200);
  local_res8 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  lVar4 = lVar7;
  if (*(char *)(param_1 + 0xf4) == '\0') {
    puVar5 = (undefined8 *)FUN_18049a930(local_30,param_1 + 0x90);
    lVar4 = HttpOpenRequestW(*(undefined8 *)(param_1 + 0x58),*puVar5,*(undefined8 *)(param_2 + 0x48)
                             ,0,0,&local_48,uVar8,0);
  }
  *(longlong *)(param_1 + 0x60) = lVar4;
  LeaveCriticalSection(lpCriticalSection);
  if (*(longlong *)(param_1 + 0x60) != 0) {
    local_90 = 0;
    local_88 = 0;
    local_80 = 0;
    local_78 = 0;
    local_70 = 0;
    local_68 = 0;
    local_98 = 0x38;
    puVar5 = (undefined8 *)FUN_18049a930(&local_res8,param_1 + 0x68);
    local_88 = *puVar5;
    pbVar6 = *(byte **)(param_1 + 0x68);
LAB_180499f64:
    do {
      bVar1 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if ((char)bVar1 < '\0') {
        if ((*pbVar6 & 0xc0) == 0x80) {
          do {
            pbVar6 = pbVar6 + 1;
          } while ((*pbVar6 & 0xc0) == 0x80);
          lVar7 = lVar7 + 1;
          goto LAB_180499f64;
        }
      }
      else if (bVar1 == 0) goto LAB_180499f9c;
      lVar7 = lVar7 + 1;
    } while( true );
  }
LAB_180499fe0:
  lVar7 = *(longlong *)(param_1 + 0x60);
  *(undefined8 *)(param_1 + 0x60) = 0;
  if (lVar7 != 0) {
    InternetCloseHandle();
  }
  if (*(longlong *)(param_1 + 0x58) != 0) {
    InternetCloseHandle();
    *(undefined8 *)(param_1 + 0x58) = 0;
  }
  return;
LAB_180499f9c:
  local_80 = CONCAT44(local_80._4_4_,(int)lVar7);
  local_70 = CONCAT44(*(undefined4 *)(param_1 + 0x78),(undefined4)local_70);
  local_58 = &local_98;
  local_50 = &local_res20;
  local_60 = param_1;
  cVar2 = FUN_18049a020(&local_60);
  if (cVar2 != '\0') {
    return;
  }
  DVar3 = GetLastError();
  if ((DVar3 == 0x2f00) && (cVar2 = FUN_18049a020(&local_60), cVar2 != '\0')) {
    return;
  }
  goto LAB_180499fe0;
}



############ FUN_ 18049a1c0 size=261 ############

undefined8 FUN_18049a1c0(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  FARPROC pFVar3;
  uint *puVar4;
  longlong local_res18;
  HMODULE local_res20;
  LPCSTR local_38;
  undefined8 local_30;
  undefined1 local_28 [16];
  
  local_30 = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_res18,"iphlpapi.dll");
  puVar2 = (undefined8 *)FUN_18049a930(local_28,&local_res18);
  local_res20 = LoadLibraryW((LPCWSTR)*puVar2);
  puVar4 = (uint *)(local_res18 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_18049c4e0(&local_38,"GetAdaptersAddresses");
  if (local_res20 == (HMODULE)0x0) {
    pFVar3 = (FARPROC)0x0;
  }
  else {
    pFVar3 = GetProcAddress(local_res20,local_38);
  }
  puVar4 = (uint *)(local_38 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (pFVar3 == (FARPROC)0x0) {
    if (local_res20 != (HMODULE)0x0) {
      FreeLibrary(local_res20);
    }
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1804a4110 size=731 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804a4110(longlong *param_1)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  HMODULE pHVar4;
  FARPROC pFVar5;
  uint *puVar6;
  undefined1 auStack_d8 [32];
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 local_b0 [2];
  longlong local_a8;
  LPCSTR local_a0;
  LPCSTR local_98;
  undefined4 local_90;
  undefined8 uStack_8c;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined8 local_70;
  longlong *local_68;
  undefined1 local_60 [8];
  undefined1 local_58 [8];
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined8 local_40;
  undefined4 local_38;
  ulonglong local_30;
  
  local_70 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_d8;
  pFVar5 = (FARPROC)0x0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  local_68 = param_1;
  FUN_18049c4e0(&local_a8,"d2d1.dll");
  if ((HMODULE)param_1[4] != (HMODULE)0x0) {
    FreeLibrary((HMODULE)param_1[4]);
    param_1[4] = 0;
  }
  puVar3 = (undefined8 *)FUN_18049a930(local_60,&local_a8);
  pHVar4 = LoadLibraryW((LPCWSTR)*puVar3);
  param_1[4] = (longlong)pHVar4;
  puVar6 = (uint *)(local_a8 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (pHVar4 != (HMODULE)0x0) {
    FUN_18049c4e0(&local_a0,"D2D1CreateFactory");
    if ((HMODULE)param_1[4] != (HMODULE)0x0) {
      pFVar5 = GetProcAddress((HMODULE)param_1[4],local_a0);
    }
    puVar6 = (uint *)(local_a0 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    if (pFVar5 != (FARPROC)0x0) {
      local_b0[0] = 0;
      if ((longlong *)*param_1 != (longlong *)0x0) {
        (**(code **)(*(longlong *)*param_1 + 0x10))();
      }
      *param_1 = 0;
      (*pFVar5)(0,&DAT_1824987b0,local_b0,param_1);
    }
  }
  pFVar5 = (FARPROC)0x0;
  FUN_18049c4e0(&local_b8,"DWrite.dll");
  if ((HMODULE)param_1[5] != (HMODULE)0x0) {
    FreeLibrary((HMODULE)param_1[5]);
    param_1[5] = 0;
  }
  puVar3 = (undefined8 *)FUN_18049a930(local_58,&local_b8);
  pHVar4 = LoadLibraryW((LPCWSTR)*puVar3);
  param_1[5] = (longlong)pHVar4;
  puVar6 = (uint *)(CONCAT44(uStack_b4,local_b8) + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (pHVar4 != (HMODULE)0x0) {
    FUN_18049c4e0(&local_98,"DWriteCreateFactory");
    if ((HMODULE)param_1[5] != (HMODULE)0x0) {
      pFVar5 = GetProcAddress((HMODULE)param_1[5],local_98);
    }
    puVar6 = (uint *)(local_98 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    if (pFVar5 != (FARPROC)0x0) {
      if ((longlong *)param_1[1] != (longlong *)0x0) {
        (**(code **)(*(longlong *)param_1[1] + 0x10))();
      }
      param_1[1] = 0;
      (*pFVar5)(0,&DAT_1824988c0,param_1 + 1);
      plVar2 = (longlong *)param_1[1];
      if (plVar2 != (longlong *)0x0) {
        if ((longlong *)param_1[2] != (longlong *)0x0) {
          (**(code **)(*(longlong *)param_1[2] + 0x10))();
        }
        param_1[2] = 0;
        (**(code **)(*plVar2 + 0x18))(plVar2,param_1 + 2,0);
      }
    }
    plVar2 = (longlong *)*param_1;
    if (plVar2 != (longlong *)0x0) {
      local_b8 = 0x57;
      uStack_b4 = 3;
      local_90 = 1;
      uStack_8c = 0x300000057;
      uStack_84 = 0;
      uStack_80 = 0;
      uStack_7c = 2;
      local_50 = 1;
      uStack_4c = 0x57;
      uStack_48 = 3;
      uStack_44 = 0;
      local_40 = 0x200000000;
      local_38 = 0;
      if ((longlong *)param_1[3] != (longlong *)0x0) {
        (**(code **)(*(longlong *)param_1[3] + 0x10))();
      }
      param_1[3] = 0;
      (**(code **)(*plVar2 + 0x80))(plVar2,&local_50,param_1 + 3);
    }
  }
}



############ FUN_ 1804a5cc0 size=227 ############

void FUN_1804a5cc0(longlong param_1)

{
  ulonglong uVar1;
  WCHAR WVar2;
  LPCWSTR lpstr;
  DWORD DVar3;
  LPCWSTR pgi;
  WCHAR *pWVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  LPCWSTR local_res8;
  
  FUN_18049a930(&local_res8);
  lpstr = local_res8;
  uVar6 = 0;
  while( true ) {
    WVar2 = *local_res8;
    pWVar4 = local_res8 + 1;
    if ((ushort)WVar2 - 0xd800 < 0x800) {
      WVar2 = *pWVar4;
      pWVar4 = local_res8 + 2;
    }
    if (WVar2 == L'\0') break;
    uVar6 = uVar6 + 1;
    local_res8 = pWVar4;
  }
  pgi = malloc(uVar6 * 2);
  local_res8 = pgi;
  DVar3 = GetGlyphIndicesW(*(HDC *)(param_1 + 0x68),lpstr,(int)uVar6,(LPWORD)pgi,1);
  if ((DVar3 != 0xffffffff) && (uVar5 = 0, uVar6 != 0)) {
    do {
      uVar1 = uVar5 + 1;
      if (uVar1 < uVar6) {
        uVar7 = (ulonglong)(ushort)pgi[uVar5 + 1];
      }
      else {
        uVar7 = 0xffffffff;
      }
      FUN_1804a6ee0(param_1,*(undefined8 *)(param_1 + 0x68),pgi[uVar5],uVar7);
      uVar5 = uVar1;
    } while (uVar1 < uVar6);
  }
                    /* WARNING: Subroutine does not return */
  free(pgi);
}



############ FUN_ 1804a5dd0 size=534 ############

void FUN_1804a5dd0(longlong param_1,undefined8 param_2,longlong *param_3,longlong *param_4)

{
  WCHAR WVar1;
  int iVar2;
  LPCWSTR lpstr;
  DWORD DVar3;
  int iVar4;
  LPCWSTR pgi;
  WCHAR *pWVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  float fVar10;
  float fVar11;
  LPCWSTR local_res8;
  
  FUN_18049a930(&local_res8);
  lpstr = local_res8;
  uVar8 = 0;
  while( true ) {
    WVar1 = *local_res8;
    pWVar5 = local_res8 + 1;
    if ((ushort)WVar1 - 0xd800 < 0x800) {
      WVar1 = *pWVar5;
      pWVar5 = local_res8 + 2;
    }
    if (WVar1 == L'\0') break;
    uVar8 = uVar8 + 1;
    local_res8 = pWVar5;
  }
  pgi = malloc(uVar8 * 2);
  fVar11 = 0.0;
  iVar4 = (int)uVar8;
  local_res8 = pgi;
  DVar3 = GetGlyphIndicesW(*(HDC *)(param_1 + 0x68),lpstr,iVar4,(LPWORD)pgi,1);
  if (DVar3 != 0xffffffff) {
    if ((int)param_3[1] < iVar4) {
      FUN_1804af790(param_3,iVar4 / 2 + 8 + iVar4 & 0xfffffff8);
    }
    if ((int)param_4[1] < iVar4 + 1) {
      FUN_1804af790(param_4,iVar4 + 9 + (iVar4 + 1) / 2 & 0xfffffff8);
    }
    uVar6 = 0;
    if (uVar8 != 0) {
      do {
        WVar1 = pgi[uVar6];
        iVar2 = *(int *)((longlong)param_3 + 0xc);
        iVar4 = iVar2 + 1;
        if ((int)param_3[1] < iVar4) {
          if (iVar4 < 0) {
            iVar4 = iVar2 + 2;
          }
          FUN_1804af790(param_3,iVar2 + 9 + (iVar4 >> 1) & 0xfffffff8);
        }
        iVar4 = *(int *)((longlong)param_3 + 0xc);
        *(int *)((longlong)param_3 + 0xc) = iVar4 + 1;
        *(uint *)(*param_3 + (longlong)iVar4 * 4) = (uint)(ushort)WVar1;
        iVar2 = *(int *)((longlong)param_4 + 0xc);
        iVar4 = iVar2 + 1;
        if ((int)param_4[1] < iVar4) {
          if (iVar4 < 0) {
            iVar4 = iVar2 + 2;
          }
          FUN_1804af790(param_4,iVar2 + 9 + (iVar4 >> 1) & 0xfffffff8);
        }
        iVar4 = *(int *)((longlong)param_4 + 0xc);
        *(int *)((longlong)param_4 + 0xc) = iVar4 + 1;
        *(float *)(*param_4 + (longlong)iVar4 * 4) = fVar11;
        uVar7 = uVar6 + 1;
        if (uVar7 < uVar8) {
          uVar9 = (ulonglong)(ushort)pgi[uVar6 + 1];
        }
        else {
          uVar9 = 0xffffffff;
        }
        fVar10 = (float)FUN_1804a6ee0(param_1,*(undefined8 *)(param_1 + 0x68),pgi[uVar6],uVar9);
        fVar11 = fVar11 + fVar10;
        uVar6 = uVar7;
      } while (uVar7 < uVar8);
    }
  }
  iVar4 = *(int *)((longlong)param_4 + 0xc) + 1;
  if ((int)param_4[1] < iVar4) {
    FUN_1804af790(param_4,*(int *)((longlong)param_4 + 0xc) + 9 + iVar4 / 2 & 0xfffffff8);
  }
  iVar4 = *(int *)((longlong)param_4 + 0xc);
  *(int *)((longlong)param_4 + 0xc) = iVar4 + 1;
  *(float *)(*param_4 + (longlong)iVar4 * 4) = fVar11;
                    /* WARNING: Could not recover jumptable at 0x0001804a5fdf. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(pgi);
  return;
}



############ FUN_ 181244920 size=397 ############

undefined8 *
FUN_181244920(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  DWORD DVar2;
  undefined8 *puVar3;
  undefined1 **ppuVar4;
  uint *puVar5;
  bool bVar6;
  undefined1 *local_res8 [2];
  longlong local_res18;
  undefined1 local_res20 [8];
  undefined **local_48;
  longlong local_40;
  HANDLE local_38;
  char *local_28;
  
  bVar6 = false;
  if (*(char *)*param_1 != '\0') {
    puVar3 = (undefined8 *)FUN_18049a930(local_res20,param_1,param_3,param_4,0,0xfffffffffffffffe);
    DVar2 = GetFileAttributesW((LPCWSTR)*puVar3);
    bVar6 = false;
    if ((DVar2 & 0x10) == 0) {
      bVar6 = true;
    }
  }
  if (!bVar6) {
    *param_2 = &DAT_1821dbf98;
    return param_2;
  }
  FUN_18123efe0(&local_48,param_1);
  bVar6 = *local_28 != '\0';
  if (bVar6) {
    local_res8[0] = &DAT_1821dbf98;
    ppuVar4 = local_res8;
  }
  else {
    ppuVar4 = (undefined1 **)FUN_1812352c0(&local_48,&local_res18);
  }
  *param_2 = *ppuVar4;
  *ppuVar4 = &DAT_1821dbf98;
  if (bVar6) {
    puVar5 = (uint *)(local_res8[0] + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if ((!bVar6) && (puVar5 = (uint *)(local_res18 + -0x10), (*puVar5 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  local_48 = juce::FileInputStream::vftable;
  CloseHandle(local_38);
  puVar5 = (uint *)(local_28 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_40 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_2;
}



############ FUN_ 18124bdd0 size=868 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18124bdd0(undefined8 *param_1,undefined4 param_2,undefined4 param_3,undefined8 param_4,
                  longlong *param_5,longlong *param_6,longlong *param_7)

{
  int *piVar1;
  float fVar2;
  byte bVar3;
  longlong *plVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  undefined8 *puVar8;
  byte *pbVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  float fVar13;
  undefined1 auStack_158 [32];
  longlong **local_138;
  undefined4 local_130;
  longlong *local_128;
  wchar_t *local_120;
  longlong **local_118;
  longlong *local_108;
  longlong *local_100;
  int local_f8;
  uint local_f4;
  longlong *local_f0;
  longlong *local_e8;
  undefined8 *local_e0;
  longlong *local_d8;
  uint local_d0;
  uint local_cc;
  undefined8 local_c8;
  undefined1 local_c0 [8];
  undefined1 local_b8 [8];
  undefined1 local_b0 [8];
  undefined8 local_a8;
  undefined4 local_a0;
  ulonglong local_98;
  
  local_c8 = 0xfffffffffffffffe;
  local_98 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_d8 = param_5;
  FUN_181252d20(&local_e0);
  uVar12 = 0;
  local_f8 = 0;
  lVar7 = FUN_181252280(&local_e0);
  puVar8 = (undefined8 *)FUN_18049a930(local_c0,lVar7 + 0x10);
  (**(code **)(*param_6 + 0x28))(param_6,*puVar8,&local_f4,&local_f8);
  uVar11 = (ulonglong)local_f4;
  if (local_f8 == 0) {
    uVar11 = uVar12;
  }
  local_f4 = (uint)uVar11;
  local_e8 = (longlong *)0x0;
  (**(code **)(*param_6 + 0x20))(param_6,uVar11,&local_e8);
  local_f0 = (longlong *)0x0;
  local_138 = &local_f0;
  (**(code **)(*local_e8 + 0x38))(local_e8,400,5,0);
  fVar13 = (float)FUN_18124c6e0(local_f0);
  local_100 = (longlong *)0x0;
  fVar2 = *(float *)(local_e0 + 5);
  puVar8 = (undefined8 *)FUN_18049a930(local_b8,local_e0 + 3);
  local_118 = &local_100;
  local_120 = L"en-us";
  local_128 = (longlong *)CONCAT44(local_128._4_4_,fVar2 * fVar13);
  local_130 = 5;
  local_138 = (longlong **)((ulonglong)local_138 & 0xffffffff00000000);
  (**(code **)(*param_5 + 0x78))(param_5,*puVar8,param_6,400);
  plVar4 = local_100;
  uVar11 = 0;
  local_d0 = *(uint *)((longlong)param_1 + 0xc);
  uVar5 = local_d0 & 0x47;
  if (1 < uVar5) {
    if (uVar5 == 2) {
      uVar11 = 1;
    }
    else if (uVar5 == 4) {
      uVar11 = 2;
    }
  }
  local_108 = (longlong *)CONCAT44(local_108._4_4_,(uint)(*(int *)(param_1 + 2) == 0));
  if (*(int *)((longlong)param_1 + 0x14) == 2) {
    (**(code **)(*local_100 + 0x30))(local_100,1);
    local_cc = *(uint *)((longlong)param_1 + 0xc);
    if ((local_cc & 0x47) < 2) {
      uVar11 = 1;
    }
    else if ((local_cc & 0x47) == 2) {
      uVar11 = uVar12;
    }
  }
  (**(code **)(*plVar4 + 0x18))(plVar4,uVar11);
  (**(code **)(*plVar4 + 0x28))(plVar4,(ulonglong)local_108 & 0xffffffff);
  local_a8 = 1;
  local_a0 = 0;
  local_108 = (longlong *)0x0;
  (**(code **)(*local_d8 + 0xa0))(local_d8,local_100,&local_108);
  (**(code **)(*local_100 + 0x48))(local_100,&local_a8,local_108);
  if (local_108 != (longlong *)0x0) {
    (**(code **)(*local_108 + 0x10))();
  }
  pbVar9 = (byte *)*param_1;
  uVar11 = uVar12;
  do {
    while( true ) {
      bVar3 = *pbVar9;
      pbVar9 = pbVar9 + 1;
      if ((char)bVar3 < '\0') break;
      if (bVar3 == 0) {
        if ((longlong *)*param_7 != (longlong *)0x0) {
          (**(code **)(*(longlong *)*param_7 + 0x10))();
        }
        plVar4 = local_100;
        *param_7 = 0;
        puVar8 = (undefined8 *)FUN_18049a930(local_b0,param_1);
        local_128 = param_7;
        local_138 = (longlong **)CONCAT44(local_138._4_4_,param_2);
        local_130 = param_3;
        iVar6 = (**(code **)(*local_d8 + 0x90))(local_d8,*puVar8,uVar11 & 0xffffffff,plVar4);
        if (((-1 < iVar6) && (*param_7 != 0)) && (0 < (int)*(uint *)((longlong)param_1 + 0x24))) {
          uVar10 = (ulonglong)*(uint *)((longlong)param_1 + 0x24);
          do {
            local_138 = (longlong **)param_6;
            FUN_18124c170(uVar12 + param_1[3],*param_7,uVar11 & 0xffffffff,param_4);
            uVar12 = uVar12 + 0x18;
            uVar10 = uVar10 - 1;
          } while (uVar10 != 0);
        }
        if (local_100 != (longlong *)0x0) {
          (**(code **)(*local_100 + 0x10))();
        }
        if (local_f0 != (longlong *)0x0) {
          (**(code **)(*local_f0 + 0x10))();
        }
        if (local_e8 != (longlong *)0x0) {
          (**(code **)(*local_e8 + 0x10))();
        }
        if (local_e0 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_e0 + 1);
          iVar6 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar6 == 1) {
            (**(code **)*local_e0)(local_e0,1);
          }
        }
      }
LAB_18124c038:
      uVar11 = uVar11 + 1;
    }
    if ((*pbVar9 & 0xc0) != 0x80) goto LAB_18124c038;
    do {
      pbVar9 = pbVar9 + 1;
    } while ((*pbVar9 & 0xc0) == 0x80);
    uVar11 = uVar11 + 1;
  } while( true );
}



############ FUN_ 18124c170 size=1052 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18124c170(int *param_1,longlong *param_2,int param_3,longlong *param_4,longlong *param_5)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  char cVar4;
  int iVar5;
  undefined4 uVar6;
  longlong *plVar7;
  undefined8 *puVar8;
  void *_Memory;
  uint *puVar9;
  uint uVar10;
  float fVar11;
  undefined1 auStack_118 [32];
  uint local_f8;
  undefined4 local_f4;
  longlong *local_f0;
  int local_e8;
  uint local_e4;
  int local_e0;
  undefined4 local_dc;
  int local_d8 [2];
  longlong *local_d0;
  longlong *local_c8;
  longlong local_c0;
  longlong *local_b8;
  longlong local_b0;
  int local_a8;
  int iStack_a4;
  longlong local_a0;
  undefined1 local_98 [8];
  longlong *local_90;
  longlong *local_88;
  undefined8 local_80;
  undefined1 local_78 [8];
  void *local_70;
  undefined1 local_68 [8];
  float local_60;
  float local_5c;
  float local_58;
  float local_54;
  ulonglong local_50;
  
  local_80 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_f8 = 0;
  local_a8 = *param_1;
  iStack_a4 = param_1[1] - local_a8;
  if (param_3 - local_a8 < param_1[1] - local_a8) {
    iStack_a4 = param_3 - local_a8;
  }
  lVar2 = *(longlong *)(param_1 + 2);
  local_90 = param_2;
  local_88 = param_4;
  cVar4 = FUN_1804a1570(lVar2 + 0x18);
  if (cVar4 == '\0') {
    local_b0 = *(longlong *)(lVar2 + 0x18);
    if ((*(uint *)(local_b0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_b0 + -0x10) = *(int *)(local_b0 + -0x10) + 1;
      UNLOCK();
    }
    plVar7 = &local_b0;
    local_f8 = 2;
  }
  else {
    plVar7 = (longlong *)FUN_1804a16b0(&local_a0,lVar2 + 0x18);
    local_f8 = 1;
  }
  local_c0 = *plVar7;
  if ((*(uint *)(local_c0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_c0 + -0x10) = *(int *)(local_c0 + -0x10) + 1;
    UNLOCK();
  }
  uVar10 = local_f8 | 4;
  if ((local_f8 & 2) != 0) {
    uVar10 = local_f8 & 0xfffffffd | 4;
    puVar9 = (uint *)(local_b0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
        local_f8 = uVar10;
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  local_f8 = uVar10;
  if ((uVar10 & 1) != 0) {
    local_f8 = uVar10 & 0xfffffffe;
    puVar9 = (uint *)(local_a0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  local_e0 = 0;
  puVar8 = (undefined8 *)FUN_18049a930(local_78,&local_c0);
  (**(code **)(*param_5 + 0x28))(param_5,*puVar8,&local_dc,&local_e0);
  if (local_e0 == 0) {
    local_dc = 0;
  }
  local_d0 = (longlong *)0x0;
  (**(code **)(*param_5 + 0x20))(param_5,local_dc,&local_d0);
  local_f0 = (longlong *)0x0;
  iVar5 = (**(code **)(*local_d0 + 0x20))();
  plVar7 = local_d0;
  if (iVar5 + -1 < 0) {
    puVar8 = (undefined8 *)FUN_18049a930(local_68,&local_c0);
    uVar3 = CONCAT44(iStack_a4,local_a8);
    (**(code **)(*param_2 + 0xf8))(param_2,*puVar8,uVar3);
    lVar2 = *param_2;
    uVar6 = (**(code **)(*local_f0 + 0x20))();
    (**(code **)(lVar2 + 0x100))(param_2,uVar6,uVar3);
    lVar2 = *param_2;
    uVar6 = (**(code **)(*local_f0 + 0x28))();
    (**(code **)(lVar2 + 0x110))(param_2,uVar6,uVar3);
    lVar2 = *param_2;
    uVar6 = (**(code **)(*local_f0 + 0x30))();
    (**(code **)(lVar2 + 0x108))(param_2,uVar6,uVar3);
    fVar11 = (float)FUN_18124c6e0(local_f0);
    (**(code **)(*param_2 + 0x118))
              (param_2,*(float *)(*(longlong *)(param_1 + 2) + 0x28) * fVar11,uVar3);
    if (local_f0 != (longlong *)0x0) {
      (**(code **)(*local_f0 + 0x10))();
    }
    if (local_d0 != (longlong *)0x0) {
      (**(code **)(*local_d0 + 0x10))();
    }
    puVar9 = (uint *)(local_c0 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    local_e4 = param_1[4];
    local_b8 = (longlong *)0x0;
    local_54 = (float)(local_e4 >> 0x18) / DAT_1824c4548;
    local_58 = (float)(local_e4 & 0xff) / DAT_1824c4548;
    local_5c = (float)(local_e4 >> 8 & 0xff) / DAT_1824c4548;
    local_60 = (float)(local_e4 >> 0x10 & 0xff) / DAT_1824c4548;
    (**(code **)(*local_88 + 0x40))(local_88,&local_60,0,&local_b8);
    (**(code **)(*param_2 + 0x130))(param_2,local_b8,uVar3);
    if (local_b8 != (longlong *)0x0) {
      (**(code **)(*local_b8 + 0x10))();
    }
  }
  if (local_f0 != (longlong *)0x0) {
    (**(code **)(*local_f0 + 0x10))();
  }
  local_f0 = (longlong *)0x0;
  (**(code **)(*plVar7 + 0x28))(plVar7,iVar5 + -1,&local_f0);
  local_c8 = (longlong *)0x0;
  (**(code **)(*local_f0 + 0x40))(local_f0,&local_c8);
  plVar7 = local_c8;
  local_f4 = 0;
  local_d8[0] = 0;
  (**(code **)(*local_c8 + 0x20))(local_c8,L"en-us",&local_f4,local_d8);
  if (local_d8[0] == 0) {
    local_f4 = 0;
  }
  local_e8 = 0;
  (**(code **)(*plVar7 + 0x38))(plVar7,local_f4,&local_e8);
  _Memory = malloc((ulonglong)(local_e8 + 1) * 2);
  local_70 = _Memory;
  (**(code **)(*plVar7 + 0x40))(plVar7,local_f4,_Memory,local_e8 + 1);
  FUN_18049c800(local_98,_Memory);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18134f7a0 size=460 ############

undefined1 FUN_18134f7a0(longlong param_1)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  undefined1 uVar6;
  int iVar7;
  DWORD DVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  uint *puVar11;
  longlong local_res10;
  longlong local_res18;
  undefined1 *local_res20;
  undefined1 local_38 [16];
  
  bVar5 = false;
  bVar4 = false;
  bVar3 = false;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x38));
  FUN_1812a7720(param_1 + 0xa0);
  if (*(char *)(param_1 + 0xe2) == '\0') {
    local_res20 = &DAT_1821dbf98;
    bVar5 = true;
    bVar4 = false;
    bVar3 = false;
    if ((*(undefined1 **)(param_1 + 0xb8) != &DAT_1821dbf98) &&
       (iVar7 = FUN_18049bb30(*(undefined8 *)(param_1 + 0xb8)), iVar7 != 0)) {
      puVar9 = (undefined8 *)FUN_18049a930(local_38,param_1 + 0xb8);
      DVar8 = GetFileAttributesW((LPCWSTR)*puVar9);
      bVar2 = false;
      if (((DVar8 & 0x10) != 0) && (bVar2 = false, DVar8 != 0xffffffff)) {
        bVar2 = true;
      }
      if (!bVar2) {
        uVar10 = FUN_181241230(param_1 + 0xb8,&local_res18);
        puVar9 = (undefined8 *)FUN_181244be0(uVar10,&local_res10);
        bVar5 = true;
        bVar4 = true;
        bVar3 = true;
        if (*(char *)*puVar9 == '\0') {
          bVar2 = false;
          goto LAB_18134f895;
        }
      }
    }
  }
  bVar2 = true;
LAB_18134f895:
  if ((bVar3) && (puVar11 = (uint *)(local_res10 + -0x10), (*puVar11 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if ((bVar4) && (puVar11 = (uint *)(local_res18 + -0x10), (*puVar11 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if ((bVar5) && (puVar11 = (uint *)(local_res20 + -0x10), (*puVar11 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if (bVar2) {
    uVar6 = 0;
  }
  else if (*(int *)(param_1 + 0xe8) == 2) {
    uVar6 = FUN_18134f2a0();
  }
  else {
    uVar6 = FUN_18134f050(param_1);
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x38));
  return uVar6;
}



############ FUN_ 181244be0 size=630 ############

undefined8 *
FUN_181244be0(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  DWORD DVar1;
  int iVar2;
  BOOL BVar3;
  uint uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined1 **ppuVar7;
  uint *puVar8;
  bool bVar9;
  char *local_res8 [2];
  longlong local_res18;
  undefined1 *local_res20;
  longlong local_70;
  longlong local_68;
  char *local_60;
  longlong local_58 [2];
  undefined1 local_48 [8];
  undefined1 local_40 [8];
  char *local_38;
  
  local_58[1] = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)FUN_18049a930(local_48,param_1,param_3,param_4,0);
  DVar1 = GetFileAttributesW((LPCWSTR)*puVar5);
  bVar9 = false;
  if (((DVar1 & 0x10) != 0) && (bVar9 = false, DVar1 != 0xffffffff)) {
    bVar9 = true;
  }
  if (!bVar9) {
    FUN_181241230(param_1,&local_res18);
    if ((local_res18 == *param_1) || (iVar2 = FUN_18049bb30(), iVar2 == 0)) {
      FUN_18049c4e0(&local_70,"Cannot create parent directory");
      FUN_18123a0b0(param_2,&local_70);
      puVar8 = (uint *)(local_70 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      puVar8 = (uint *)(local_res18 + -0x10);
      uVar4 = *puVar8;
    }
    else {
      FUN_181244be0(&local_res18,local_res8);
      if (*local_res8[0] == '\0') {
        uVar6 = FUN_1812304e0(param_1,local_58,&DAT_1821db634);
        puVar5 = (undefined8 *)FUN_18049a930(local_40,uVar6);
        BVar3 = CreateDirectoryW((LPCWSTR)*puVar5,(LPSECURITY_ATTRIBUTES)0x0);
        bVar9 = BVar3 == 0;
        if (bVar9) {
          ppuVar7 = (undefined1 **)FUN_1812181b0(&local_68);
        }
        else {
          local_res20 = &DAT_1821dbf98;
          ppuVar7 = &local_res20;
        }
        local_60 = *ppuVar7;
        *ppuVar7 = &DAT_1821dbf98;
        if ((bVar9) && (puVar8 = (uint *)(local_68 + -0x10), (*puVar8 & 0x30000000) == 0)) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        if ((!bVar9) && (puVar8 = (uint *)(local_res20 + -0x10), (*puVar8 & 0x30000000) == 0)) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        local_38 = local_res8[0];
        puVar8 = (uint *)(local_res8[0] + -0x10);
        local_res8[0] = local_60;
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_58[0] + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
      }
      *param_2 = local_res8[0];
      local_res8[0] = "";
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar4 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar9 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar4;
        if (bVar9) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      puVar8 = (uint *)(local_res18 + -0x10);
      uVar4 = *puVar8;
    }
    if ((uVar4 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    return param_2;
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 18123dec0 size=164 ############

undefined8
FUN_18123dec0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  char cVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined1 local_res8 [8];
  
  if (*(char *)*param_1 != '\0') {
    puVar4 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar4);
    if (DVar3 != 0xffffffff) {
      bVar1 = true;
      goto LAB_18123df0e;
    }
  }
  bVar1 = false;
LAB_18123df0e:
  if (bVar1) {
    iVar5 = 4;
    do {
      cVar2 = FUN_1812413c0(param_1,param_1 + 1);
      if (cVar2 != '\0') {
        return 1;
      }
      Sleep(100);
      iVar5 = iVar5 + -1;
    } while (-1 < iVar5);
  }
  return 0;
}



############ FUN_ 18123ed20 size=368 ############

undefined8 * FUN_18123ed20(undefined8 *param_1,longlong *param_2,size_t param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  DWORD DVar4;
  void *pvVar5;
  undefined8 *puVar6;
  HANDLE hFile;
  uint *_Memory;
  undefined8 local_res10;
  longlong local_res18;
  undefined1 local_res20 [8];
  
  *param_1 = juce::OutputStream::vftable;
  FUN_18049c4e0(param_1 + 1,&DAT_182496878);
  *param_1 = juce::FileOutputStream::vftable;
  lVar2 = *param_2;
  param_1[2] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[3] = 0;
  param_1[4] = &DAT_1821dbf98;
  param_1[5] = 0;
  param_1[6] = param_3;
  param_1[7] = 0;
  if (param_3 < 0x10) {
    param_3 = 0x10;
  }
  pvVar5 = malloc(param_3);
  param_1[8] = pvVar5;
  puVar6 = (undefined8 *)FUN_18049a930(local_res20,param_1 + 2);
  hFile = CreateFileW((LPCWSTR)*puVar6,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,4,0x80,(HANDLE)0x0);
  if (hFile != (HANDLE)0xffffffffffffffff) {
    local_res10 = 0;
    DVar4 = SetFilePointer(hFile,0,(PLONG)((longlong)&local_res10 + 4),2);
    local_res10 = CONCAT44(local_res10._4_4_,DVar4);
    if (DVar4 != 0xffffffff) {
      param_1[3] = hFile;
      param_1[5] = local_res10;
      return param_1;
    }
  }
  puVar6 = (undefined8 *)FUN_1812181b0(&local_res18);
  uVar3 = param_1[4];
  param_1[4] = *puVar6;
  *puVar6 = uVar3;
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181240380 size=1704 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181240380(undefined8 param_1,undefined8 *param_2,longlong *param_3,undefined8 param_4,
                  char param_5)

{
  int *piVar1;
  bool bVar2;
  char cVar3;
  wint_t _C;
  DWORD DVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  longlong lVar10;
  void *pvVar11;
  longlong lVar12;
  longlong *plVar13;
  uint *puVar14;
  uint *puVar15;
  uint *puVar16;
  uint uVar17;
  longlong lVar18;
  char *pcVar19;
  size_t sVar20;
  char *pcVar21;
  undefined1 auStack_148 [32];
  char local_128;
  char local_124 [4];
  undefined2 local_120;
  char local_11c [4];
  uint local_118;
  char *local_110;
  char *local_108;
  char *local_100;
  longlong local_f8;
  longlong *local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  undefined8 local_c0;
  longlong local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  undefined8 local_a0;
  undefined8 *local_98;
  undefined1 local_90 [8];
  char *local_88;
  char **local_80;
  char *local_78;
  undefined8 local_70;
  undefined1 local_58 [16];
  ulonglong local_48 [2];
  
  local_a0 = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_148;
  local_118 = 0;
  local_f8 = *param_3;
  if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
    UNLOCK();
  }
  local_f0 = &local_f8;
  local_c0 = param_4;
  local_b0 = param_1;
  local_a8 = param_2;
  local_98 = param_2;
  local_f0 = (longlong *)FUN_181232d30(&local_f8,param_4);
  local_f0 = (longlong *)*local_f0;
  puVar15 = (uint *)((longlong)local_f0 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    *puVar15 = *puVar15 + 1;
    UNLOCK();
  }
  local_118 = 4;
  puVar14 = (uint *)(local_f8 + -0x10);
  if ((*puVar14 & 0x30000000) == 0) {
    LOCK();
    uVar17 = *puVar14;
    *puVar14 = *puVar14 - 1;
    UNLOCK();
    if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar14);
    }
  }
  FUN_181245100(param_1,param_2,local_f0);
  local_118 = 5;
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar17 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  if (*(char *)*param_2 == '\0') {
LAB_1812404c3:
    bVar2 = false;
  }
  else {
    puVar8 = (undefined8 *)FUN_18049a930(local_90,param_2);
    DVar4 = GetFileAttributesW((LPCWSTR)*puVar8);
    if (DVar4 == 0xffffffff) goto LAB_1812404c3;
    bVar2 = true;
  }
  if (!bVar2) {
  }
  iVar7 = 1;
  local_110 = (char *)*param_3;
  if ((*(uint *)(local_110 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_110 + -0x10) = *(int *)(local_110 + -0x10) + 1;
    UNLOCK();
  }
  uVar9 = FUN_181248e40(&local_110,&local_e0);
  cVar3 = FUN_181249390(uVar9,0x29);
  puVar15 = (uint *)(local_e0 + -0x10);
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar17 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
  if (cVar3 == '\0') {
    local_128 = param_5;
    goto LAB_18124067b;
  }
  local_128 = '\x01';
  iVar5 = FUN_1812327b0(&local_110,0x28);
  iVar6 = FUN_1812327b0(&local_110,0x29);
  uVar17 = local_118;
  if ((iVar5 < 1) || (iVar6 <= iVar5)) {
LAB_1812405a5:
    bVar2 = false;
  }
  else {
    uVar9 = FUN_1812490c0(&local_110,&local_d8,iVar5 + 1,iVar6);
    uVar17 = 7;
    local_118 = 7;
    cVar3 = FUN_1812301c0(uVar9,"0123456789");
    if (cVar3 == '\0') goto LAB_1812405a5;
    bVar2 = true;
  }
  if ((uVar17 & 2) != 0) {
    local_118 = uVar17 & 0xfffffffd;
    puVar15 = (uint *)(local_d8 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar17 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
  }
  if (bVar2) {
    puVar8 = (undefined8 *)FUN_1812490c0(&local_110,&local_d0,iVar5 + 1,iVar6);
    iVar7 = atoi((char *)*puVar8);
    puVar15 = (uint *)(local_d0 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar17 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
    puVar8 = (undefined8 *)FUN_1812490c0(&local_110,&local_c8,0,iVar5);
    pcVar19 = local_110;
    local_88 = local_110;
    local_110 = (char *)*puVar8;
    *puVar8 = pcVar19;
    puVar15 = (uint *)(local_c8 + -0x10);
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      uVar17 = *puVar15;
      *puVar15 = *puVar15 - 1;
      UNLOCK();
      if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar15);
      }
    }
  }
  param_5 = '\x01';
LAB_18124067b:
  puVar15 = (uint *)(local_110 + -0x10);
  local_80 = &local_100;
  do {
    local_108 = local_110;
    if ((*puVar15 & 0x30000000) == 0) {
      LOCK();
      *puVar15 = *puVar15 + 1;
      UNLOCK();
    }
    if (param_5 == '\0') {
      if (*local_110 == '\0') {
        _C = 0;
      }
      else {
        iVar5 = FUN_180493130(&local_110);
        _C = FUN_180493050(&local_110,iVar5 + -1);
      }
      iVar5 = iswdigit(_C);
      if (iVar5 != 0) {
        local_11c[0] = '_';
        local_11c[1] = '\0';
        lVar18 = -1;
        do {
          lVar12 = lVar18;
          lVar18 = lVar12 + 1;
        } while (local_11c[lVar12 + 1] != '\0');
        local_78 = local_11c + lVar12 + 1;
        FUN_181232e20(&local_108,local_11c);
      }
      pvVar11 = (void *)FUN_181233e10(local_48,iVar7 + 1);
      iVar5 = (int)local_48 - (int)pvVar11;
      pcVar19 = local_108;
      if (0 < iVar5) {
        lVar18 = -1;
        do {
          lVar18 = lVar18 + 1;
        } while (local_108[lVar18] != '\0');
        sVar20 = (size_t)iVar5;
        FUN_1812342b0(&local_108,sVar20 + lVar18);
        pcVar19 = local_108;
        pcVar21 = local_108 + (int)lVar18;
        memcpy(pcVar21,pvVar11,sVar20);
        pcVar21[sVar20] = '\0';
      }
    }
    else {
      local_124[0] = '(';
      local_124[1] = '\0';
      lVar18 = -1;
      do {
        lVar10 = lVar18 + 1;
        lVar12 = lVar18 + 1;
        lVar18 = lVar10;
      } while (local_124[lVar12] != '\0');
      iVar5 = ((int)local_124 + (int)lVar10) - (int)local_124;
      pcVar19 = local_110;
      if (0 < iVar5) {
        lVar18 = -1;
        do {
          lVar18 = lVar18 + 1;
        } while (local_110[lVar18] != '\0');
        sVar20 = (size_t)iVar5;
        FUN_1812342b0(&local_108,sVar20 + lVar18);
        pcVar19 = local_108;
        pcVar21 = local_108 + (int)lVar18;
        memcpy(pcVar21,local_124,sVar20);
        pcVar21[sVar20] = '\0';
      }
      pvVar11 = (void *)FUN_181233e10(local_58,iVar7 + 1);
      iVar5 = (int)local_58 - (int)pvVar11;
      if (0 < iVar5) {
        lVar18 = -1;
        do {
          lVar18 = lVar18 + 1;
        } while (pcVar19[lVar18] != '\0');
        sVar20 = (size_t)iVar5;
        FUN_1812342b0(&local_108,sVar20 + lVar18);
        pcVar19 = local_108;
        pcVar21 = local_108 + (int)lVar18;
        memcpy(pcVar21,pvVar11,sVar20);
        pcVar21[sVar20] = '\0';
      }
      local_120 = 0x29;
      lVar18 = -1;
      do {
        lVar10 = lVar18 + 1;
        lVar12 = lVar18 + 1;
        lVar18 = lVar10;
      } while (*(char *)((longlong)&local_120 + lVar12) != '\0');
      iVar5 = ((int)&local_120 + (int)lVar10) - (int)&local_120;
      if (0 < iVar5) {
        lVar18 = -1;
        do {
          lVar18 = lVar18 + 1;
        } while (pcVar19[lVar18] != '\0');
        sVar20 = (size_t)iVar5;
        FUN_1812342b0(&local_108,sVar20 + lVar18);
        pcVar19 = local_108;
        pcVar21 = local_108 + (int)lVar18;
        memcpy(pcVar21,&local_120,sVar20);
        pcVar21[sVar20] = '\0';
      }
    }
    iVar7 = iVar7 + 1;
    if ((*(uint *)(pcVar19 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar19 + -0x10) = *(int *)(pcVar19 + -0x10) + 1;
      UNLOCK();
    }
    local_100 = pcVar19;
    plVar13 = (longlong *)FUN_181232d30(&local_100,local_c0);
    local_b8 = *plVar13;
    puVar14 = (uint *)(local_b8 + -0x10);
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      *puVar14 = *puVar14 + 1;
      UNLOCK();
    }
    local_118 = local_118 | 8;
    puVar16 = (uint *)(local_100 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar17 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    puVar8 = (undefined8 *)FUN_181245100(local_b0,&local_e8,local_b8);
    local_70 = *local_a8;
    *local_a8 = *puVar8;
    *puVar8 = local_70;
    puVar16 = (uint *)(local_e8 + -0x10);
    if ((*puVar16 & 0x30000000) == 0) {
      LOCK();
      uVar17 = *puVar16;
      *puVar16 = *puVar16 - 1;
      UNLOCK();
      if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar16);
      }
    }
    if ((*puVar14 & 0x30000000) == 0) {
      LOCK();
      uVar17 = *puVar14;
      *puVar14 = *puVar14 - 1;
      UNLOCK();
      if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar14);
      }
    }
    if ((*(uint *)(pcVar19 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(pcVar19 + -0x10);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(pcVar19 + -0x10);
      }
    }
    cVar3 = FUN_181245810(local_a8);
    param_5 = local_128;
  } while (cVar3 != '\0');
  if ((*puVar15 & 0x30000000) == 0) {
    LOCK();
    uVar17 = *puVar15;
    *puVar15 = *puVar15 - 1;
    UNLOCK();
    if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar15);
    }
  }
}



############ FUN_ 181245810 size=71 ############

ulonglong FUN_181245810(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4
                       )

{
  DWORD DVar1;
  ulonglong uVar2;
  undefined8 *puVar3;
  undefined4 extraout_var;
  bool bVar4;
  undefined1 local_res8 [32];
  
  bVar4 = *(char *)*param_1 == '\0';
  uVar2 = CONCAT71((int7)((ulonglong)*param_1 >> 8),bVar4);
  if (!bVar4) {
    puVar3 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    DVar1 = GetFileAttributesW((LPCWSTR)*puVar3);
    uVar2 = CONCAT44(extraout_var,DVar1);
    if (DVar1 != 0xffffffff) {
      return 1;
    }
  }
  return uVar2 & 0xffffffffffffff00;
}



############ FUN_ 1805167d0 size=130 ############

undefined8 FUN_1805167d0(longlong param_1)

{
  LPCWSTR lpCaption;
  int iVar1;
  undefined8 *puVar2;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  
  puVar2 = (undefined8 *)FUN_18049a930(local_res8,param_1 + 0x20);
  lpCaption = (LPCWSTR)*puVar2;
  puVar2 = (undefined8 *)FUN_18049a930(local_res10,param_1 + 0x28);
  iVar1 = MessageBoxW(*(HWND *)(param_1 + 0x18),(LPCWSTR)*puVar2,lpCaption,*(UINT *)(param_1 + 0x10)
                     );
  if ((iVar1 == 6) || (iVar1 == 1)) {
    return 1;
  }
  if ((iVar1 == 7) && ((*(byte *)(param_1 + 0x10) & 1) != 0)) {
    return 2;
  }
  return 0;
}



############ FUN_ 1812457c0 size=70 ############

ulonglong FUN_1812457c0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4
                       )

{
  DWORD DVar1;
  ulonglong uVar2;
  undefined8 *puVar3;
  undefined4 extraout_var;
  bool bVar4;
  undefined1 local_res8 [32];
  
  bVar4 = *(char *)*param_1 == '\0';
  uVar2 = CONCAT71((int7)((ulonglong)*param_1 >> 8),bVar4);
  if (!bVar4) {
    puVar3 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    DVar1 = GetFileAttributesW((LPCWSTR)*puVar3);
    uVar2 = CONCAT44(extraout_var,DVar1);
    if ((DVar1 & 0x10) == 0) {
      return 1;
    }
  }
  return uVar2 & 0xffffffffffffff00;
}



############ FUN_ 1813290e0 size=154 ############

void FUN_1813290e0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  bool bVar2;
  undefined1 uVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  undefined1 local_res8 [32];
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  uVar3 = FUN_18132c430(*(undefined8 *)(*(longlong *)(param_1 + 8) + 0xb0));
  FUN_18133e970(*(longlong *)(param_1 + 8) + 0xb8,uVar3,param_3,param_4,uVar7);
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0xb0);
  if ((*(uint *)(lVar1 + 0xf0) >> 1 & 1) != 0) {
    puVar5 = (undefined8 *)FUN_18049a930(local_res8,lVar1 + 0xf8);
    DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
    if (((DVar4 & 0x10) == 0) || (DVar4 == 0xffffffff)) {
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
    if (bVar2) {
      uVar7 = 1;
      goto LAB_181329163;
    }
  }
  uVar7 = 0;
LAB_181329163:
  plVar6 = (longlong *)(*(longlong *)(param_1 + 8) + 0x448);
                    /* WARNING: Could not recover jumptable at 0x000181329176. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar6 + 0x58))(plVar6,uVar7);
  return;
}



############ FUN_ 18132c430 size=217 ############

bool FUN_18132c430(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  bool bVar2;
  bool bVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  undefined1 local_res8 [8];
  char *local_res10;
  undefined1 local_res18 [8];
  
  FUN_18132c510(param_1,&local_res10,0,param_4,0xfffffffffffffffe);
  bVar2 = true;
  if ((*(byte *)(param_1 + 0xf0) & 8) == 0) {
    puVar5 = (undefined8 *)FUN_18049a930(local_res18,&local_res10);
    DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
    if (((DVar4 & 0x10) == 0) || (DVar4 == 0xffffffff)) {
      bVar3 = false;
    }
    else {
      bVar3 = true;
    }
    if (bVar3) {
      bVar2 = false;
      goto LAB_18132c4d3;
    }
  }
  if ((*(uint *)(param_1 + 0xf0) >> 1 & 1) == 0) {
    if (*local_res10 == '\0') {
LAB_18132c4cb:
      bVar2 = false;
    }
    else {
      puVar5 = (undefined8 *)FUN_18049a930(local_res8,&local_res10);
      DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
      if (DVar4 == 0xffffffff) goto LAB_18132c4cb;
    }
    if (!bVar2) goto LAB_18132c4d3;
  }
  bVar2 = true;
LAB_18132c4d3:
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return bVar2;
}



############ FUN_ 181245770 size=62 ############

ulonglong FUN_181245770(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  DWORD DVar1;
  undefined8 *puVar2;
  undefined4 extraout_var;
  undefined1 local_res8 [32];
  
  puVar2 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  DVar1 = GetFileAttributesW((LPCWSTR)*puVar2);
  if (((DVar1 & 0x10) != 0) && (DVar1 != 0xffffffff)) {
    return 1;
  }
  return CONCAT44(extraout_var,DVar1) & 0xffffffffffffff00;
}



############ FUN_ 181229320 size=309 ############

undefined8 * FUN_181229320(undefined8 *param_1,undefined8 *param_2,tm *param_3)

{
  int iVar1;
  wchar_t *_Buf;
  undefined8 *puVar2;
  size_t sVar3;
  ulonglong uVar4;
  wchar_t *pwVar5;
  wchar_t *pwVar6;
  undefined1 local_res20 [8];
  
  if (9999 < param_3->tm_year + 0x76cU) {
    *param_1 = &DAT_1821dbf98;
    return param_1;
  }
  _Buf = malloc(0x200);
  puVar2 = (undefined8 *)FUN_18049a930(local_res20,param_2);
  sVar3 = wcsftime(_Buf,0xff,(wchar_t *)*puVar2,param_3);
  if ((sVar3 == 0) && (*(char *)*param_2 != '\0')) {
                    /* WARNING: Subroutine does not return */
    free(_Buf);
  }
  iVar1 = (int)sVar3;
  pwVar5 = _Buf;
  if (iVar1 < 0) {
    if (iVar1 + 1 < 1) {
      uVar4 = (ulonglong)(1 - (iVar1 + 1));
      do {
        pwVar6 = pwVar5 + -1;
        if ((ushort)*pwVar6 - 0xdc00 < 0x400) {
          pwVar6 = pwVar5 + -2;
        }
        uVar4 = uVar4 - 1;
        pwVar5 = pwVar6;
      } while (uVar4 != 0);
    }
  }
  else {
    while (pwVar6 = pwVar5, iVar1 = iVar1 + -1, -1 < iVar1) {
      pwVar5 = pwVar6 + 1;
      if (((ushort)*pwVar6 - 0xd800 < 0x800) && (0xdbff < (ushort)*pwVar5)) {
        pwVar5 = pwVar6 + 2;
      }
    }
  }
  FUN_18049cfa0(param_1,_Buf);
                    /* WARNING: Subroutine does not return */
  free(_Buf);
}



############ FUN_ 181218410 size=130 ############

void FUN_181218410(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  uint *_Memory;
  longlong local_res8;
  longlong local_res10;
  undefined1 local_res18 [16];
  
  local_res8 = *param_1;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  uVar2 = FUN_1812184a0(&local_res10,&local_res8,param_3,param_4,0xfffffffffffffffe);
  puVar3 = (undefined8 *)FUN_18049a930(local_res18,uVar2);
  GetDriveTypeW((LPCWSTR)*puVar3);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18132e830 size=277 ############

void FUN_18132e830(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  int *piVar1;
  longlong *plVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  int iVar7;
  bool bVar8;
  undefined8 *local_res8;
  undefined1 local_res20 [8];
  
  if (**(char **)(*(longlong *)(param_1 + 8) + 0x48) != '\0') {
    puVar4 = (undefined8 *)FUN_18049a930(local_res20);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar4);
    if (DVar3 != 0xffffffff) {
      bVar8 = true;
      goto LAB_18132e88d;
    }
  }
  bVar8 = false;
LAB_18132e88d:
  if (bVar8) {
    uVar5 = __RTDynamicCast(param_1,0,&juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor
                            ,&juce::Component::RTTI_Type_Descriptor,0);
    FUN_1804de690(&local_res8,uVar5);
    puVar4 = local_res8;
    iVar7 = *(int *)(param_1 + 0x1c);
    bVar8 = local_res8 == (undefined8 *)0x0;
    while( true ) {
      if (bVar8) {
        lVar6 = 0;
      }
      else {
        lVar6 = puVar4[2];
      }
      if ((lVar6 == 0) || (iVar7 < 1)) break;
      iVar7 = iVar7 + -1;
      if ((*(int *)(param_1 + 0x1c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x1c) + -1, iVar7 < 0))
      break;
      plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x10) + (longlong)iVar7 * 8);
      (**(code **)(*plVar2 + 0x10))(plVar2,param_2,param_3);
    }
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18132e710 size=274 ############

void FUN_18132e710(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  longlong *plVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  int iVar7;
  bool bVar8;
  undefined8 *local_res8;
  undefined1 local_res18 [8];
  
  if (**(char **)(*(longlong *)(param_1 + 8) + 0x48) != '\0') {
    puVar4 = (undefined8 *)FUN_18049a930(local_res18);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar4);
    if (DVar3 != 0xffffffff) {
      bVar8 = true;
      goto LAB_18132e769;
    }
  }
  bVar8 = false;
LAB_18132e769:
  if (bVar8) {
    uVar5 = __RTDynamicCast(param_1,0,&juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor
                            ,&juce::Component::RTTI_Type_Descriptor,0);
    FUN_1804de690(&local_res8,uVar5);
    puVar4 = local_res8;
    iVar7 = *(int *)(param_1 + 0x1c);
    bVar8 = local_res8 == (undefined8 *)0x0;
    while( true ) {
      if (bVar8) {
        lVar6 = 0;
      }
      else {
        lVar6 = puVar4[2];
      }
      if ((lVar6 == 0) || (iVar7 < 1)) break;
      iVar7 = iVar7 + -1;
      if ((*(int *)(param_1 + 0x1c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x1c) + -1, iVar7 < 0))
      break;
      plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x10) + (longlong)iVar7 * 8);
      (**(code **)(*plVar2 + 0x18))(plVar2,param_2);
    }
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 180510480 size=573 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180510480(undefined8 *param_1)

{
  uint uVar1;
  char cVar2;
  ATOM AVar3;
  ulonglong uVar4;
  undefined4 *puVar5;
  HMODULE hModule;
  undefined8 *puVar6;
  uint *puVar7;
  char *_Src;
  undefined1 auStack_908 [32];
  WORD local_8e8 [4];
  longlong local_8e0;
  undefined4 *local_8d8;
  undefined8 local_8d0;
  undefined8 *local_8c8;
  undefined1 local_8c0 [8];
  WNDCLASSEXW local_8b8;
  longlong local_868;
  ushort local_860;
  char local_83a [2];
  WCHAR local_838;
  undefined1 auStack_835 [12];
  char acStack_829 [2033];
  ulonglong local_38;
  
  local_8d0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_908;
  local_8c8 = param_1;
  FUN_1812a7230();
  *param_1 = juce::HWNDComponentPeer::WindowClassHolder::vftable;
  FUN_18049c4e0(&local_8e0,"JUCE_");
  _ftime64_s(&local_868);
  uVar4 = local_868 * 1000 + (ulonglong)local_860;
  _Src = local_83a + 1;
  local_83a[1] = 0;
  do {
    _Src = _Src + -1;
    cVar2 = "0123456789abcdef"[(uint)uVar4 & 0xf];
    *_Src = cVar2;
    uVar4 = uVar4 >> 4;
  } while (uVar4 != 0);
  if (cVar2 == '\0') {
    puVar5 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    puVar5 = (undefined4 *)
             thunk_FUN_1811316e0(((ulonglong)(auStack_835 + -(longlong)_Src) & 0xfffffffffffffffc) +
                                 0x17);
    LOCK();
    *puVar5 = 0;
    UNLOCK();
    *(ulonglong *)(puVar5 + 2) = (ulonglong)(auStack_835 + -(longlong)_Src) & 0xfffffffffffffffc;
    puVar5 = puVar5 + 4;
    memcpy(puVar5,_Src,(size_t)(local_83a + -(longlong)_Src + 1));
    *(char *)((longlong)puVar5 + (longlong)(local_83a + -(longlong)_Src + 1)) = '\0';
  }
  local_8d8 = puVar5;
  FUN_181232d30(&local_8e0);
  puVar7 = puVar5 + -4;
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  hModule = (HMODULE)FUN_181249ad0();
  memset(local_83a + 2,0,0x800);
  GetModuleFileNameW(hModule,(LPWSTR)(local_83a + 2),0x400);
  local_8e8[0] = 0;
  memset(&local_8b8,0,0x50);
  local_8b8.cbSize = 0x50;
  local_8b8.style = 0x20;
  local_8b8.lpfnWndProc = FUN_180514940;
  puVar6 = (undefined8 *)FUN_18049a930(local_8c0,&local_8e0);
  local_8b8.lpszClassName = (LPCWSTR)*puVar6;
  local_8b8.cbWndExtra = 0x20;
  local_8b8.hInstance = hModule;
  local_8b8.hIcon = ExtractAssociatedIconW(hModule,(LPWSTR)(local_83a + 2),local_8e8);
  local_8e8[0] = 1;
  local_8b8.hIconSm = ExtractAssociatedIconW(hModule,(LPWSTR)(local_83a + 2),local_8e8);
  AVar3 = RegisterClassExW(&local_8b8);
  *(ATOM *)(param_1 + 1) = AVar3;
  DAT_1826736e8 = FUN_180510810;
  puVar7 = (uint *)(local_8e0 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
}



############ FUN_ 18050e350 size=41 ############

void FUN_18050e350(longlong param_1)

{
  undefined8 *puVar1;
  undefined1 local_res8 [32];
  
  puVar1 = (undefined8 *)FUN_18049a930(local_res8);
  SetWindowTextW(*(HWND *)(param_1 + 0x88),(LPCWSTR)*puVar1);
  return;
}



############ FUN_ 180519050 size=299 ############

undefined8 FUN_180519050(HWND param_1,int param_2,undefined8 param_3,longlong param_4)

{
  int iVar1;
  longlong lVar2;
  uint uVar3;
  LPARAM *pLVar4;
  int *piVar5;
  longlong local_res20;
  longlong local_18;
  undefined1 local_10 [8];
  
  if (param_2 == 1) {
    pLVar4 = (LPARAM *)FUN_18049a930(local_10,param_4 + 0x240);
    SendMessageW(param_1,0x467,1,*pLVar4);
    FUN_180518790(param_4,param_1);
  }
  else {
    if (param_2 == 3) {
      FUN_18049c4e0(&local_18,param_3);
      if ((*(uint *)(local_18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_18 + -0x10) = *(int *)(local_18 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar2 = *(longlong *)(param_4 + 0x248);
      *(longlong *)(param_4 + 0x248) = local_18;
      UNLOCK();
      uVar3 = *(uint *)(lVar2 + -0x10);
      local_res20 = local_18;
    }
    else {
      if (param_2 != 4) {
        return 0;
      }
      FUN_18049c800(&local_res20,param_3);
      if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar2 = *(longlong *)(param_4 + 0x248);
      *(longlong *)(param_4 + 0x248) = local_res20;
      UNLOCK();
      uVar3 = *(uint *)(lVar2 + -0x10);
    }
    piVar5 = (int *)(lVar2 + -0x10);
    if ((uVar3 & 0x30000000) == 0) {
      LOCK();
      iVar1 = *piVar5;
      *piVar5 = *piVar5 + -1;
      UNLOCK();
      if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar5);
      }
    }
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar5 = (int *)(local_res20 + -0x10);
      iVar1 = *piVar5;
      *piVar5 = *piVar5 + -1;
      UNLOCK();
      if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)(local_res20 + -0x10));
      }
    }
  }
  return 0;
}



############ FUN_ 18054d130 size=353 ############

void FUN_18054d130(ulonglong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  FARPROC pFVar3;
  FARPROC pFVar4;
  INT_PTR IVar5;
  uint *puVar6;
  ulonglong local_res8;
  HMODULE local_res10;
  longlong local_res18;
  LPCSTR local_res20;
  LPCSTR local_48;
  undefined8 local_40;
  undefined1 local_38 [24];
  
  local_40 = 0xfffffffffffffffe;
  local_res8 = param_1;
  FUN_18049c4e0(&local_res18,"avrt.dll");
  puVar2 = (undefined8 *)FUN_18049a930(local_38,&local_res18);
  local_res10 = LoadLibraryW((LPCWSTR)*puVar2);
  puVar6 = (uint *)(local_res18 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  FUN_18049c4e0(&local_res20,"AvSetMmThreadCharacteristicsW");
  if (local_res10 == (HMODULE)0x0) {
    pFVar3 = (FARPROC)0x0;
  }
  else {
    pFVar3 = GetProcAddress(local_res10,local_res20);
  }
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  FUN_18049c4e0(&local_48,"AvSetMmThreadPriority");
  if (local_res10 == (HMODULE)0x0) {
    pFVar4 = (FARPROC)0x0;
  }
  else {
    pFVar4 = GetProcAddress(local_res10,local_48);
  }
  puVar6 = (uint *)(local_48 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if ((pFVar3 != (FARPROC)0x0) && (pFVar4 != (FARPROC)0x0)) {
    local_res8 = local_res8 & 0xffffffff00000000;
    IVar5 = (*pFVar3)(L"Pro Audio",&local_res8);
    if (IVar5 != 0) {
      (*pFVar4)(IVar5,0);
    }
  }
  if (local_res10 != (HMODULE)0x0) {
    FreeLibrary(local_res10);
  }
  return;
}



############ FUN_ 18055b020 size=491 ############

void FUN_18055b020(longlong param_1,undefined8 param_2,longlong param_3,undefined8 *param_4)

{
  uint uVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong lVar4;
  uint *_Memory;
  void *local_res8;
  longlong local_b8;
  undefined4 local_b0;
  undefined4 uStack_ac;
  undefined8 uStack_a8;
  undefined8 local_a0;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined8 local_88;
  undefined2 local_80 [4];
  undefined8 local_78;
  undefined8 local_68;
  undefined1 local_60 [8];
  undefined1 local_58 [8];
  undefined1 local_50 [24];
  undefined1 local_38 [32];
  
  local_68 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0xc0) != 0) {
    Ordinal_8(local_50);
    Ordinal_8(local_38);
    Ordinal_8(&local_98);
    Ordinal_8(local_80);
    if (param_3 != 0) {
      local_80[0] = 8;
      uVar2 = FUN_18122d360(param_3,&local_b8,&DAT_182496878);
      puVar3 = (undefined8 *)FUN_18049a930(local_60,uVar2);
      local_78 = Ordinal_2(*puVar3);
      _Memory = (uint *)(local_b8 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
    if ((param_4 != (undefined8 *)0x0) && (param_4[1] != 0)) {
      lVar4 = Ordinal_411(0x11,0,param_4[1] & 0xffffffff);
      if (lVar4 != 0) {
        local_res8 = (void *)0x0;
        Ordinal_23(lVar4,&local_res8);
        if (local_res8 == (void *)0x0) {
          Ordinal_16(lVar4);
        }
        else {
          if (param_4[1] != 0) {
            memcpy(local_res8,(void *)*param_4,param_4[1]);
          }
          Ordinal_24(lVar4);
          Ordinal_8(&local_b0);
          local_b0 = CONCAT22(local_b0._2_2_,0x2011);
          uStack_a8._0_4_ = (undefined4)lVar4;
          uStack_a8._4_4_ = (undefined4)((ulonglong)lVar4 >> 0x20);
          local_98 = local_b0;
          uStack_94 = uStack_ac;
          uStack_90 = (undefined4)uStack_a8;
          uStack_8c = uStack_a8._4_4_;
          local_88 = local_a0;
          uStack_a8 = lVar4;
        }
      }
    }
    puVar3 = (undefined8 *)FUN_18049a930(local_58,param_2);
    uVar2 = Ordinal_2(*puVar3);
    (**(code **)(**(longlong **)(param_1 + 0xc0) + 0x58))
              (*(longlong **)(param_1 + 0xc0),uVar2,local_50,local_38,&local_98,local_80);
    Ordinal_6(uVar2);
    Ordinal_9(local_50);
    Ordinal_9(local_38);
    Ordinal_9(&local_98);
    Ordinal_9(local_80);
  }
  return;
}



############ FUN_ 18055e2c0 size=305 ############

bool FUN_18055e2c0(void)

{
  uint uVar1;
  byte bVar2;
  DWORD DVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  undefined8 in_R9;
  bool bVar7;
  char *local_res8;
  longlong local_res10;
  longlong local_res18;
  undefined *local_res20;
  undefined8 uVar8;
  undefined1 local_20 [16];
  
  uVar8 = 0xfffffffffffffffe;
  local_res20 = &DAT_182673740;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673740);
  if (DAT_182673664 != 0) goto LAB_18055e3d5;
  FUN_18049c4e0(&local_res10,"disableOpenGL.xml");
  uVar4 = FUN_1811e05b0(&local_res18);
  FUN_181245100(uVar4,&local_res8,local_res10,in_R9,uVar8);
  puVar6 = (uint *)(local_res18 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_res10 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (*local_res8 == '\0') {
LAB_18055e3a3:
    bVar2 = 0;
  }
  else {
    puVar5 = (undefined8 *)FUN_18049a930(local_20,&local_res8);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar5);
    if ((DVar3 & 0x10) != 0) goto LAB_18055e3a3;
    bVar2 = 1;
  }
  DAT_182673664 = 2 - (uint)bVar2;
  puVar6 = (uint *)(local_res8 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
LAB_18055e3d5:
  bVar7 = DAT_182673664 == 1;
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673740);
  return bVar7;
}



############ FUN_ 1814d7520 size=685 ############

void FUN_1814d7520(void)

{
  uint uVar1;
  char *pcVar2;
  bool bVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  uint *puVar8;
  uint *puVar9;
  undefined1 *puVar10;
  undefined8 in_R9;
  char *local_res8;
  longlong local_res10;
  undefined1 *local_res18;
  longlong local_res20;
  longlong local_90;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70 [2];
  char *local_60;
  undefined8 local_58;
  undefined8 local_50;
  char *local_48;
  undefined1 local_40 [16];
  
  local_70[1] = 0xfffffffffffffffe;
  local_res8 = "";
  puVar5 = (undefined8 *)FUN_181249b30(&local_res20,7);
  local_60 = local_res8;
  pcVar2 = (char *)*puVar5;
  *puVar5 = local_res8;
  puVar8 = (uint *)(local_res20 + -0x10);
  local_res8 = pcVar2;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  FUN_18049c4e0(&local_res10,"soothe2");
  FUN_181232e20(&local_res10,"_ManualFAQ.pdf","",in_R9,&local_res10);
  puVar8 = (uint *)(local_res10 + -0x10);
  bVar3 = true;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    *puVar8 = *puVar8 + 1;
    UNLOCK();
  }
  puVar9 = (uint *)(local_res10 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar5 = (undefined8 *)FUN_181353210(local_70);
  puVar6 = (undefined8 *)FUN_181353df0(&local_78);
  local_58 = *puVar6;
  uVar7 = FUN_181245100(&local_res8,&local_80);
  local_50 = *puVar5;
  uVar7 = FUN_181245100(uVar7,&local_88);
  puVar5 = (undefined8 *)FUN_181245100(uVar7,&local_90,local_res10);
  local_48 = local_res8;
  pcVar2 = (char *)*puVar5;
  *puVar5 = local_res8;
  puVar9 = (uint *)(local_90 + -0x10);
  local_res8 = pcVar2;
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_88 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_80 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_78 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar9 = (uint *)(local_70[0] + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_res18 = &DAT_1821dbf98;
  if (*pcVar2 != '\0') {
    puVar5 = (undefined8 *)FUN_18049a930(local_40,&local_res8);
    DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
    if (DVar4 != 0xffffffff) goto LAB_1814d776c;
  }
  bVar3 = false;
LAB_1814d776c:
  puVar10 = &DAT_1821dbf98;
  if (bVar3) {
    FUN_1812171f0(&local_res8,&local_res18);
    puVar10 = local_res18;
  }
  puVar8 = (uint *)(puVar10 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_res8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return;
}



############ FUN_ 1812171f0 size=90 ############

bool FUN_1812171f0(undefined8 param_1)

{
  LPCWSTR lpParameters;
  undefined8 *puVar1;
  HINSTANCE pHVar2;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  
  puVar1 = (undefined8 *)FUN_18049a930(local_res18);
  lpParameters = (LPCWSTR)*puVar1;
  puVar1 = (undefined8 *)FUN_18049a930(local_res20,param_1);
  pHVar2 = ShellExecuteW((HWND)0x0,(LPCWSTR)0x0,(LPCWSTR)*puVar1,lpParameters,(LPCWSTR)0x0,10);
  return (HINSTANCE)0x20 < pHVar2;
}



############ FUN_ 1811ca580 size=313 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811ca580(undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  DWORD DVar2;
  undefined8 *puVar3;
  uint *puVar4;
  char *pcVar5;
  bool bVar6;
  undefined1 auStack_68 [32];
  char *local_48;
  undefined8 *local_40;
  undefined8 local_38;
  undefined1 local_30 [8];
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_38 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_40 = param_2;
  puVar3 = (undefined8 *)
           .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
           vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                     (param_1,&local_28);
  (**(code **)(*(longlong *)*puVar3 + 0x20))((longlong *)*puVar3,&local_40,puVar3 + 1);
  FUN_181241890(&local_48,&local_40);
  puVar4 = (uint *)(local_40 + -2);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  if (*local_48 == '\0') {
LAB_1811ca653:
    bVar6 = false;
    pcVar5 = local_48;
  }
  else {
    puVar3 = (undefined8 *)FUN_18049a930(local_30,&local_48);
    DVar2 = GetFileAttributesW((LPCWSTR)*puVar3);
    if (DVar2 == 0xffffffff) goto LAB_1811ca653;
    bVar6 = true;
    pcVar5 = local_48;
  }
  if (bVar6) {
    *param_2 = pcVar5;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      UNLOCK();
      bVar6 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = DAT_1821dbf88 - 1;
      if (bVar6) {
        puVar4 = &DAT_1821dbf88;
        DAT_1821dbf88 = 0xffffffff;
LAB_1811ca6a5:
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  else {
    FUN_1811542f0(param_2);
    puVar4 = (uint *)(pcVar5 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) goto LAB_1811ca6a5;
    }
  }
}



############ FUN_ 181212f00 size=632 ############

bool FUN_181212f00(longlong *param_1)

{
  uint uVar1;
  longlong *plVar2;
  LPCWSTR lpParameters;
  longlong *plVar3;
  int iVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  HINSTANCE pHVar7;
  uint *puVar8;
  longlong lVar9;
  longlong *local_res10;
  longlong *local_res18;
  longlong local_res20;
  undefined1 *local_68;
  longlong local_60;
  longlong *local_58;
  undefined8 local_50;
  char *local_48;
  longlong *local_40;
  undefined1 local_38 [8];
  undefined1 local_30 [8];
  
  local_50 = 0xfffffffffffffffe;
  uVar5 = FUN_1812147b0(param_1,&local_60);
  local_res20 = *param_1;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  local_res18 = &local_res20;
  puVar6 = (undefined8 *)FUN_181232d30(&local_res20,uVar5);
  plVar2 = (longlong *)*puVar6;
  if ((*(uint *)(plVar2 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(plVar2 + -2) = (int)plVar2[-2] + 1;
    UNLOCK();
  }
  puVar8 = (uint *)(local_res20 + -0x10);
  local_res18 = plVar2;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_60 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  iVar4 = FUN_18049bc80(plVar2,0x40);
  if (-1 < iVar4) {
    iVar4 = FUN_18049bc80(plVar2,0x3a);
    if (iVar4 < 0) {
      FUN_18049c4e0(&local_res10,"mailto:");
      plVar3 = local_res10;
      if ((char)*local_res10 == '\0') {
        if ((*(uint *)(plVar2 + -2) & 0x30000000) == 0) {
          LOCK();
          *(int *)(plVar2 + -2) = (int)plVar2[-2] + 1;
          UNLOCK();
        }
        LOCK();
        local_res10 = local_res18;
        UNLOCK();
        puVar8 = (uint *)(plVar3 + -2);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
      }
      else {
        lVar9 = -1;
        do {
          lVar9 = lVar9 + 1;
        } while (*(char *)((longlong)plVar2 + lVar9) != '\0');
        local_48 = (char *)((longlong)plVar2 + lVar9);
        FUN_181232e20(&local_res10,plVar2);
      }
      plVar2 = local_res18;
      local_58 = local_res10;
      if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
        UNLOCK();
      }
      puVar8 = (uint *)(local_res10 + -2);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      local_40 = local_res18;
      local_res18 = local_res10;
      puVar8 = (uint *)(plVar2 + -2);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
    }
  }
  local_68 = &DAT_1821dbf98;
  puVar6 = (undefined8 *)FUN_18049a930(local_38,&local_68);
  lpParameters = (LPCWSTR)*puVar6;
  puVar6 = (undefined8 *)FUN_18049a930(local_30,&local_res18);
  pHVar7 = ShellExecuteW((HWND)0x0,(LPCWSTR)0x0,(LPCWSTR)*puVar6,lpParameters,(LPCWSTR)0x0,10);
  puVar8 = (uint *)(local_68 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_res18 + -2);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return (HINSTANCE)0x20 < pHVar7;
}



############ FUN_ 181215f90 size=79 ############

bool FUN_181215f90(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  HMODULE pHVar2;
  undefined1 local_res8 [8];
  
  if ((HMODULE)*param_1 != (HMODULE)0x0) {
    FreeLibrary((HMODULE)*param_1);
    *param_1 = 0;
  }
  puVar1 = (undefined8 *)FUN_18049a930(local_res8,param_2);
  pHVar2 = LoadLibraryW((LPCWSTR)*puVar1);
  *param_1 = pHVar2;
  return pHVar2 != (HMODULE)0x0;
}



############ FUN_ 181217250 size=379 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181217250(longlong *param_1,longlong *param_2,byte *param_3,byte *param_4,
                  undefined8 *param_5,ulonglong *param_6,ulonglong *param_7,byte *param_8)

{
  int *_Memory;
  int iVar1;
  longlong lVar2;
  BOOL BVar3;
  undefined8 *puVar4;
  HANDLE pvVar5;
  undefined1 auStack_2e8 [32];
  longlong local_2c8;
  undefined1 local_2c0 [8];
  longlong local_2b8;
  _WIN32_FIND_DATAW local_2a8;
  ulonglong local_58;
  
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2e8;
  lVar2 = *param_1;
  if (*(HANDLE *)(lVar2 + 8) == (HANDLE)0xffffffffffffffff) {
    puVar4 = (undefined8 *)FUN_18049a930(local_2c0,lVar2);
    pvVar5 = FindFirstFileW((LPCWSTR)*puVar4,&local_2a8);
    *(HANDLE *)(lVar2 + 8) = pvVar5;
    if (pvVar5 == (HANDLE)0xffffffffffffffff) {
    }
  }
  else {
    BVar3 = FindNextFileW(*(HANDLE *)(lVar2 + 8),&local_2a8);
    if (BVar3 == 0) {
    }
  }
  FUN_18049c800(&local_2c8,local_2a8.cFileName);
  local_2b8 = *param_2;
  *param_2 = local_2c8;
  _Memory = (int *)(local_2b8 + -0x10);
  if ((*(uint *)(local_2b8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_3 != (byte *)0x0) {
    *param_3 = (byte)(local_2a8.dwFileAttributes >> 4) & 1;
  }
  if (param_4 != (byte *)0x0) {
    *param_4 = (byte)(local_2a8.dwFileAttributes >> 1) & 1;
  }
  if (param_8 != (byte *)0x0) {
    *param_8 = (byte)local_2a8.dwFileAttributes & 1;
  }
  if (param_5 != (undefined8 *)0x0) {
    *param_5 = CONCAT44(local_2a8.nFileSizeHigh,local_2a8.nFileSizeLow);
  }
  if (param_6 != (ulonglong *)0x0) {
    *param_6 = ((longlong)local_2a8.ftLastWriteTime + 0xfe624e212ac18000U) / 10000;
  }
  if (param_7 != (ulonglong *)0x0) {
    *param_7 = ((longlong)local_2a8.ftCreationTime + 0xfe624e212ac18000U) / 10000;
  }
}



############ FUN_ 181217570 size=240 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181217570(longlong *param_1,longlong param_2)

{
  uint uVar1;
  BOOL BVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint *_Memory;
  undefined1 auStackY_f8 [32];
  longlong local_b8;
  longlong local_b0 [2];
  undefined1 local_a0 [8];
  WCHAR local_98 [64];
  ulonglong local_18;
  
  local_b0[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_f8;
  local_b0[0] = *param_1;
  if ((*(uint *)(local_b0[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_b0[0] + -0x10) = *(int *)(local_b0[0] + -0x10) + 1;
    UNLOCK();
  }
  local_b8 = param_2;
  uVar3 = FUN_1812184a0(&local_b8,local_b0);
  puVar4 = (undefined8 *)FUN_18049a930(local_a0,uVar3);
  BVar2 = GetVolumeInformationW
                    ((LPCWSTR)*puVar4,local_98,0x40,(LPDWORD)0x0,(LPDWORD)0x0,(LPDWORD)0x0,
                     (LPWSTR)0x0,0);
  _Memory = (uint *)(local_b8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (BVar2 == 0) {
    local_98[0] = L'\0';
  }
  FUN_18049c800(param_2,local_98);
}



############ FUN_ 181217970 size=174 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181217970(undefined8 param_1,ulonglong *param_2,ulonglong *param_3,ulonglong *param_4)

{
  BOOL BVar1;
  undefined8 *puVar2;
  undefined1 auStack_78 [32];
  undefined1 local_58 [8];
  undefined1 local_50 [4];
  longlong local_4c;
  longlong local_44;
  longlong local_3c;
  ulonglong local_28;
  
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  puVar2 = (undefined8 *)FUN_18049a930(local_58,param_1);
  BVar1 = GetFileAttributesExW((LPCWSTR)*puVar2,GetFileExInfoStandard,local_50);
  if (BVar1 == 0) {
    *param_2 = 0;
    *param_3 = 0;
    *param_4 = 0;
  }
  else {
    *param_2 = (local_3c + 0xfe624e212ac18000U) / 10000;
    *param_4 = (local_4c + 0xfe624e212ac18000U) / 10000;
    *param_3 = (local_44 + 0xfe624e212ac18000U) / 10000;
  }
}



############ FUN_ 181217a30 size=95 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181217a30(undefined8 param_1)

{
  BOOL BVar1;
  undefined8 *puVar2;
  undefined1 auStack_68 [32];
  undefined1 local_48 [8];
  undefined1 local_40 [40];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  puVar2 = (undefined8 *)FUN_18049a930(local_48,param_1);
  BVar1 = GetFileAttributesExW((LPCWSTR)*puVar2,GetFileExInfoStandard,local_40);
  if (BVar1 != 0) {
  }
}



############ FUN_ 181217ae0 size=269 ############

void FUN_181217ae0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  HANDLE pvVar2;
  LPVOID pvVar3;
  longlong lVar4;
  undefined1 local_res8 [8];
  _SYSTEM_INFO local_38;
  
  if (0 < (longlong)param_1[1]) {
    GetNativeSystemInfo(&local_38);
    lVar4 = param_1[1] -
            (longlong)param_1[1] % (longlong)(ulonglong)local_38.dwAllocationGranularity;
    param_1[1] = lVar4;
    if ((longlong)param_1[2] < lVar4) {
      param_1[2] = lVar4;
    }
  }
  puVar1 = (undefined8 *)FUN_18049a930(local_res8,param_2);
  pvVar2 = CreateFileW((LPCWSTR)*puVar1,0x80000000,5,(LPSECURITY_ATTRIBUTES)0x0,3,0x8000080,
                       (HANDLE)0x0);
  if (pvVar2 != (HANDLE)0xffffffffffffffff) {
    param_1[3] = pvVar2;
    pvVar2 = CreateFileMappingW(pvVar2,(LPSECURITY_ATTRIBUTES)0x0,2,
                                (DWORD)((ulonglong)param_1[2] >> 0x20),(DWORD)param_1[2],
                                (LPCWSTR)0x0);
    if (pvVar2 != (HANDLE)0x0) {
      pvVar3 = MapViewOfFile(pvVar2,4,(DWORD)((ulonglong)param_1[1] >> 0x20),(DWORD)param_1[1],
                             param_1[2] - param_1[1]);
      *param_1 = pvVar3;
      if (pvVar3 == (LPVOID)0x0) {
        param_1[1] = 0;
        param_1[2] = 0;
      }
      CloseHandle(pvVar2);
    }
  }
  return;
}



############ FUN_ 181217d10 size=214 ############

void FUN_181217d10(longlong param_1)

{
  uint uVar1;
  DWORD DVar2;
  undefined8 *puVar3;
  HANDLE hFile;
  uint *_Memory;
  undefined8 local_res8;
  longlong local_res10;
  undefined1 local_res18 [8];
  undefined8 local_res20;
  
  puVar3 = (undefined8 *)FUN_18049a930(local_res18,param_1 + 0x10);
  hFile = CreateFileW((LPCWSTR)*puVar3,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,4,0x80,(HANDLE)0x0);
  if (hFile != (HANDLE)0xffffffffffffffff) {
    local_res8 = 0;
    DVar2 = SetFilePointer(hFile,0,(PLONG)((longlong)&local_res8 + 4),2);
    local_res8 = CONCAT44(local_res8._4_4_,DVar2);
    if (DVar2 != 0xffffffff) {
      *(undefined8 *)(param_1 + 0x28) = local_res8;
      *(HANDLE *)(param_1 + 0x18) = hFile;
      return;
    }
  }
  puVar3 = (undefined8 *)FUN_1812181b0(&local_res10);
  local_res20 = *(undefined8 *)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = *puVar3;
  *puVar3 = local_res20;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 181217f00 size=159 ############

void FUN_181217f00(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  HANDLE pvVar3;
  uint *_Memory;
  longlong local_res8;
  undefined1 local_res10 [8];
  undefined8 local_res18;
  
  puVar2 = (undefined8 *)FUN_18049a930(local_res10,param_1 + 8);
  pvVar3 = CreateFileW((LPCWSTR)*puVar2,0x80000000,7,(LPSECURITY_ATTRIBUTES)0x0,3,0x8000080,
                       (HANDLE)0x0);
  if (pvVar3 != (HANDLE)0xffffffffffffffff) {
    *(HANDLE *)(param_1 + 0x10) = pvVar3;
    return;
  }
  puVar2 = (undefined8 *)FUN_1812181b0(&local_res8);
  local_res18 = *(undefined8 *)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = *puVar2;
  *puVar2 = local_res18;
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 181217fe0 size=234 ############

undefined8 *
FUN_181217fe0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  BOOL BVar2;
  undefined8 *puVar3;
  undefined8 **ppuVar4;
  uint *puVar5;
  bool bVar6;
  longlong local_res8;
  undefined8 *local_res10;
  undefined1 local_res20 [8];
  
  local_res8 = param_1;
  local_res10 = param_2;
  puVar3 = (undefined8 *)FUN_18049a930(local_res20,param_3,param_3,param_4,0,0xfffffffffffffffe);
  BVar2 = CreateDirectoryW((LPCWSTR)*puVar3,(LPSECURITY_ATTRIBUTES)0x0);
  bVar6 = BVar2 == 0;
  if (bVar6) {
    ppuVar4 = (undefined8 **)FUN_1812181b0(&local_res8);
  }
  else {
    local_res10 = (undefined8 *)&DAT_1821dbf98;
    ppuVar4 = &local_res10;
  }
  *param_2 = *ppuVar4;
  *ppuVar4 = (undefined8 *)&DAT_1821dbf98;
  if ((bVar6) && (puVar5 = (uint *)(local_res8 + -0x10), (*puVar5 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  if ((!bVar6) && (puVar5 = (uint *)(local_res10 + -2), (*puVar5 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_2;
}



############ FUN_ 1812180d0 size=89 ############

bool FUN_1812180d0(undefined8 param_1,undefined8 param_2)

{
  LPCWSTR lpReplacementFileName;
  undefined8 *puVar1;
  BOOL BVar2;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  
  puVar1 = (undefined8 *)FUN_18049a930(local_res8,param_1);
  lpReplacementFileName = (LPCWSTR)*puVar1;
  puVar1 = (undefined8 *)FUN_18049a930(local_res10,param_2);
  BVar2 = ReplaceFileW((LPCWSTR)*puVar1,lpReplacementFileName,(LPCWSTR)0x0,6,(LPVOID)0x0,(LPVOID)0x0
                      );
  return BVar2 != 0;
}



############ FUN_ 181218130 size=67 ############

bool FUN_181218130(undefined8 param_1)

{
  LPCWSTR lpNewFileName;
  undefined8 *puVar1;
  BOOL BVar2;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  
  puVar1 = (undefined8 *)FUN_18049a930(local_res8);
  lpNewFileName = (LPCWSTR)*puVar1;
  puVar1 = (undefined8 *)FUN_18049a930(local_res10,param_1);
  BVar2 = MoveFileW((LPCWSTR)*puVar1,lpNewFileName);
  return BVar2 != 0;
}



############ FUN_ 181218640 size=42 ############

void FUN_181218640(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined1 local_res10 [24];
  
  puVar1 = (undefined8 *)FUN_18049a930(local_res10,param_1,param_3,param_4,0xfffffffffffffffe);
  GetFileAttributesW((LPCWSTR)*puVar1);
  return;
}



############ FUN_ 18122f740 size=25 ############

undefined8 FUN_18122f740(undefined8 param_1)

{
  undefined8 *puVar1;
  undefined1 local_res10 [24];
  
  puVar1 = (undefined8 *)FUN_18049a930(local_res10,param_1);
  return *puVar1;
}



############ FUN_ 18122f8c0 size=29 ############

undefined8 FUN_18122f8c0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049a930(param_2,param_1);
  return param_2;
}



############ FUN_ 181235f40 size=261 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181235f40(longlong param_1,undefined8 param_2,ulonglong param_3)

{
  byte bVar1;
  byte *pbVar2;
  undefined8 *puVar3;
  uint uVar4;
  int iVar5;
  undefined1 auStack_68 [32];
  undefined1 local_48 [8];
  undefined1 local_40 [40];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  pbVar2 = *(byte **)(param_1 + 8);
  bVar1 = *pbVar2;
  while( true ) {
    if (bVar1 == 0) {
      if (*(char *)(param_1 + 0x10) != '\0') {
        puVar3 = (undefined8 *)FUN_18049a930(local_48,param_1 + 8,param_3);
        GetFileAttributesExW((LPCWSTR)*puVar3,GetFileExInfoStandard,local_40);
      }
    }
    pbVar2 = pbVar2 + 1;
    if ((char)bVar1 < '\0') break;
LAB_181235fd6:
    bVar1 = *pbVar2;
  }
  uVar4 = 0x40;
  iVar5 = 0;
  param_3 = 0x7f;
  if ((bVar1 & 0x40) != 0) {
    do {
      if (uVar4 < 9) break;
      param_3 = param_3 >> 1;
      iVar5 = iVar5 + 1;
      uVar4 = uVar4 >> 1;
    } while ((bVar1 & uVar4) != 0);
  }
  do {
    iVar5 = iVar5 + -1;
    if (iVar5 < 0) goto LAB_181235fd6;
    bVar1 = *pbVar2;
    param_3 = (ulonglong)bVar1;
    if ((bVar1 & 0xc0) != 0x80) goto LAB_181235fd6;
    param_3 = (ulonglong)(bVar1 & 0x3f);
    pbVar2 = pbVar2 + 1;
  } while( true );
}



############ FUN_ 18123fac0 size=123 ############

undefined8
FUN_18123fac0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  char cVar2;
  DWORD DVar3;
  undefined8 *puVar4;
  undefined1 local_res8 [8];
  
  if (*(char *)*param_1 != '\0') {
    puVar4 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    DVar3 = GetFileAttributesW((LPCWSTR)*puVar4);
    if (DVar3 != 0xffffffff) {
      bVar1 = true;
      goto LAB_18123fb13;
    }
  }
  bVar1 = false;
LAB_18123fb13:
  if ((bVar1) && (cVar2 = FUN_1812171f0(param_1,param_2), cVar2 != '\0')) {
    return 1;
  }
  return 0;
}



############ FUN_ 181240c00 size=120 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181240c00(undefined8 param_1,ulonglong *param_2)

{
  BOOL BVar1;
  undefined8 *puVar2;
  undefined1 auStack_68 [32];
  undefined1 local_48 [8];
  undefined1 local_40 [20];
  longlong local_2c;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  puVar2 = (undefined8 *)FUN_18049a930(local_48,param_1);
  BVar1 = GetFileAttributesExW((LPCWSTR)*puVar2,GetFileExInfoStandard,local_40);
  if (BVar1 == 0) {
    *param_2 = 0;
  }
  else {
    *param_2 = (local_2c + 0xfe624e212ac18000U) / 10000;
  }
}



############ FUN_ 181244e60 size=518 ############

undefined8 *
FUN_181244e60(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  char *pcVar1;
  DWORD DVar2;
  int iVar3;
  uint uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  bool bVar7;
  char *local_res8;
  longlong local_res18;
  longlong local_res20;
  undefined1 local_70 [8];
  undefined1 local_68 [32];
  char *local_48;
  
  if (*(char *)*param_1 != '\0') {
    puVar5 = (undefined8 *)FUN_18049a930(local_70,param_1,param_3,param_4,0xfffffffffffffffe);
    DVar2 = GetFileAttributesW((LPCWSTR)*puVar5);
    if (DVar2 != 0xffffffff) {
      bVar7 = true;
      goto LAB_181244eb6;
    }
  }
  bVar7 = false;
LAB_181244eb6:
  if (bVar7) {
    *param_2 = &DAT_1821dbf98;
    return param_2;
  }
  FUN_181241230(param_1,&local_res18);
  if ((local_res18 == *param_1) || (iVar3 = FUN_18049bb30(), iVar3 == 0)) {
    FUN_18049c4e0(&local_res20,"Cannot create parent directory");
    FUN_18123a0b0(param_2,&local_res20);
    puVar6 = (uint *)(local_res20 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_res18 + -0x10);
    uVar4 = *puVar6;
  }
  else {
    FUN_181244be0(&local_res18,&local_res8);
    if (*local_res8 == '\0') {
      FUN_18123ed20(local_68,param_1,8);
      pcVar1 = local_res8;
      if ((*(uint *)(local_48 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      local_res8 = local_48;
      UNLOCK();
      puVar6 = (uint *)(pcVar1 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      FUN_18123ec40(local_68);
    }
    *param_2 = local_res8;
    local_res8 = "";
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar4 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar7 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar4;
      if (bVar7) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    puVar6 = (uint *)(local_res18 + -0x10);
    uVar4 = *puVar6;
  }
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return param_2;
}



############ FUN_ 181245070 size=84 ############

undefined8
FUN_181245070(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  DWORD DVar1;
  undefined8 *puVar2;
  undefined1 local_res8 [32];
  
  if (*(char *)*param_1 == '\0') {
    return CONCAT71((int7)((ulonglong)*param_1 >> 8),1);
  }
  puVar2 = (undefined8 *)FUN_18049a930(local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  DVar1 = GetFileAttributesW((LPCWSTR)*puVar2);
  if ((DVar1 != 0xffffffff) && (((byte)DVar1 & 0x11) == 1)) {
    return 0;
  }
  return 1;
}



############ FUN_ 1812b9060 size=372 ############

void FUN_1812b9060(longlong param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 uVar3;
  uint uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  uint *_Memory;
  int iVar7;
  bool bVar8;
  char *local_res8;
  undefined1 local_res18 [16];
  undefined8 uVar9;
  void *local_90;
  undefined8 local_88;
  undefined1 local_80 [104];
  
  uVar9 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  local_90 = (void *)0x0;
  local_88 = 0;
  iVar2 = *(int *)(param_1 + 0x44);
  uVar3 = *(undefined8 *)(param_1 + 0x38);
  iVar7 = 0;
  if (0 < iVar2) {
    FUN_1804dcaa0(&local_90,iVar2 + 8 + iVar2 / 2 & 0xfffffff8);
    iVar7 = local_88._4_4_;
  }
  FUN_1804e14e0(&local_90,uVar3,iVar2,param_4,uVar9);
  local_88 = CONCAT44(iVar7 + iVar2,(undefined4)local_88);
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x8c));
  lVar5 = FUN_1804db2a0(&local_90,local_80,param_2);
  if ((*(uint *)(*(longlong *)(lVar5 + 0x30) + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*(longlong *)(lVar5 + 0x30) + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  local_res8 = *(char **)(lVar5 + 0x30);
  LOCK();
  UNLOCK();
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar4 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar8 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar4;
    if (bVar8) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (*local_res8 != '\0') {
    puVar6 = (undefined8 *)FUN_18049a930(local_res18,&local_res8);
    GetFileAttributesW((LPCWSTR)*puVar6);
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1804d7190(local_80);
  FUN_1804dca40(&local_90);
                    /* WARNING: Subroutine does not return */
  free(local_90);
}



############ FUN_ 18132aec0 size=330 ############

void FUN_18132aec0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong *plVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  longlong lVar6;
  uint *_Memory;
  int iVar7;
  bool bVar8;
  undefined8 *local_res10;
  undefined1 *local_res18;
  undefined1 local_res20 [8];
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)FUN_18049a930(local_res20);
  DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
  if (((DVar4 & 0x10) == 0) || (DVar4 == 0xffffffff)) {
    bVar8 = false;
  }
  else {
    bVar8 = true;
  }
  if (bVar8) {
    FUN_18132bdc0(param_1 + -0xb0,param_2);
    if ((*(uint *)(param_1 + 0x40) & 0x108) == 8) {
      local_res18 = &DAT_1821dbf98;
      FUN_1812e1110(param_1 + 0x210,&local_res18,1,param_4,uVar9);
      _Memory = (uint *)(local_res18 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
  }
  else {
    FUN_1804de690(&local_res10,param_1 + -0xb0);
    puVar5 = local_res10;
    iVar7 = *(int *)(param_1 + 0x6c);
    bVar8 = local_res10 == (undefined8 *)0x0;
    while( true ) {
      if (bVar8) {
        lVar6 = 0;
      }
      else {
        lVar6 = puVar5[2];
      }
      if ((lVar6 == 0) || (iVar7 < 1)) break;
      iVar7 = iVar7 + -1;
      if ((*(int *)(param_1 + 0x6c) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x6c) + -1, iVar7 < 0))
      break;
      plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x60) + (longlong)iVar7 * 8);
      (**(code **)(*plVar3 + 0x18))(plVar3,param_2);
    }
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*local_res10)(local_res10,1);
      }
    }
  }
  return;
}



############ FUN_ 18132c320 size=174 ############

undefined8 FUN_18132c320(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  bool bVar2;
  char cVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  undefined1 local_res10 [8];
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)FUN_18049a930(local_res10);
  DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
  if (((DVar4 & 0x10) == 0) || (DVar4 == 0xffffffff)) {
    bVar2 = false;
  }
  else {
    bVar2 = true;
  }
  if (bVar2) {
    if ((*(byte *)(param_1 + 0xf0) & 8) == 0) {
      return 0;
    }
    plVar1 = *(longlong **)(param_1 + 0xe8);
    if (plVar1 == (longlong *)0x0) {
      return 1;
    }
    cVar3 = (**(code **)(*plVar1 + 0x10))(plVar1,param_2);
  }
  else {
    if ((*(byte *)(param_1 + 0xf0) & 4) == 0) {
      return 0;
    }
    cVar3 = FUN_181245810(param_2);
    if (cVar3 == '\0') {
      return 0;
    }
    plVar1 = *(longlong **)(param_1 + 0xe8);
    if (plVar1 == (longlong *)0x0) {
      return 1;
    }
    cVar3 = (**(code **)(*plVar1 + 8))(plVar1,param_2,param_3,param_4,uVar6);
  }
  if (cVar3 == '\0') {
    return 0;
  }
  return 1;
}



############ FUN_ 1814c6f90 size=359 ############

void FUN_1814c6f90(longlong param_1,longlong *param_2)

{
  uint uVar1;
  bool bVar2;
  char cVar3;
  DWORD DVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  undefined8 uVar7;
  uint *_Memory;
  undefined1 *local_res18;
  void *local_res20;
  void *local_38;
  undefined8 local_30;
  undefined1 local_28 [16];
  
  local_30 = 0xfffffffffffffffe;
  if (*(char *)*param_2 != '\0') {
    puVar5 = (undefined8 *)FUN_18049a930(local_28);
    DVar4 = GetFileAttributesW((LPCWSTR)*puVar5);
    if ((DVar4 & 0x10) == 0) {
      bVar2 = true;
      goto LAB_1814c6fd9;
    }
  }
  bVar2 = false;
LAB_1814c6fd9:
  if ((bVar2) && (cVar3 = FUN_1814c7100(), cVar3 != '\0')) {
    puVar5 = (undefined8 *)FUN_181225f50(&local_res20,param_2);
    FUN_1814c78b0(param_1,*puVar5);
    if (local_res20 != (void *)0x0) {
      FUN_1812472e0(local_res20);
                    /* WARNING: Subroutine does not return */
      free(local_res20);
    }
    plVar6 = (longlong *)FUN_1811f0330(*(undefined8 *)(param_1 + 0x138));
    local_res18 = &DAT_1821dbf98;
    uVar7 = (**(code **)(*plVar6 + 0x10))(plVar6,&local_38,&local_res18);
    FUN_180487580(param_1 + 0x140,uVar7);
    if (local_38 != (void *)0x0) {
      FUN_1812472e0(local_38);
                    /* WARNING: Subroutine does not return */
      free(local_38);
    }
    *(undefined4 *)(param_1 + 0xe0) = 0xffffffff;
    FUN_1814c7ed0(param_1);
    _Memory = (uint *)(*param_2 + -0x10);
    if ((*_Memory & 0x30000000) != 0) {
      return;
    }
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
  }
  else {
    if (*(longlong **)(param_1 + 0xd70) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(**(longlong **)(param_1 + 0xd70) + 0x10))();
    _Memory = (uint *)(*param_2 + -0x10);
    if ((*_Memory & 0x30000000) != 0) {
      return;
    }
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
  }
  if (uVar1 != 0) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18133f2f0 size=153 ############

void FUN_18133f2f0(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*param_1 + 0xf8))(param_1,param_2);
  puVar3 = local_res8;
  if (local_res8 == (undefined8 *)0x0) {
    lVar4 = 0;
  }
  else {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    FUN_18133f200(param_1,param_2,&local_res8);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18133f200 size=233 ############

void FUN_18133f200(longlong *param_1,undefined4 param_2,longlong *param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  longlong *plVar4;
  longlong lVar5;
  byte bVar6;
  undefined8 *local_res8;
  
  plVar4 = DAT_182673708;
  do {
    if (plVar4 == param_1) {
      bVar6 = 1;
LAB_18133f246:
      bVar3 = *(byte *)((longlong)param_1 + 0xa9);
      if ((bVar3 >> 5 & 1) != bVar6) {
        *(byte *)((longlong)param_1 + 0xa9) = (bVar6 << 5 ^ bVar3) & 0x20 ^ bVar3;
        (**(code **)(*param_1 + 0x100))(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
        if (*param_3 == 0) {
          lVar5 = 0;
        }
        else {
          lVar5 = *(longlong *)(*param_3 + 0x10);
        }
        if (lVar5 == 0) {
          return;
        }
      }
      if (param_1[3] != 0) {
        FUN_1804de690(&local_res8);
        FUN_18133f200(param_1[3],param_2,&local_res8);
        if (local_res8 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_res8 + 1);
          iVar2 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar2 == 1) {
            (**(code **)*local_res8)(local_res8,1);
          }
        }
      }
      return;
    }
    if (plVar4 == (longlong *)0x0) {
      bVar6 = 0;
      goto LAB_18133f246;
    }
    plVar4 = (longlong *)plVar4[3];
  } while( true );
}



############ FUN_ 1813437a0 size=240 ############

void FUN_1813437a0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  if (*(int *)((longlong)param_1 + 0x8c) == 0) {
    (**(code **)(*param_1 + 0x90))();
  }
  else {
    FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
    (**(code **)(*param_1 + 0x90))(param_1);
    puVar3 = local_res8;
    bVar6 = local_res8 == (undefined8 *)0x0;
    if (bVar6) {
      lVar4 = 0;
    }
    else {
      lVar4 = local_res8[2];
    }
    if (lVar4 != 0) {
      iVar5 = *(int *)((longlong)param_1 + 0x8c);
      while( true ) {
        if (bVar6) {
          lVar4 = 0;
        }
        else {
          lVar4 = puVar3[2];
        }
        if ((lVar4 == 0) || (iVar5 < 1)) break;
        iVar5 = iVar5 + -1;
        if ((*(int *)((longlong)param_1 + 0x8c) <= iVar5) &&
           (iVar5 = *(int *)((longlong)param_1 + 0x8c) + -1, iVar5 < 0)) break;
        plVar2 = *(longlong **)(param_1[0x10] + (longlong)iVar5 * 8);
        (**(code **)(*plVar2 + 0x20))(plVar2,param_1);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18134b590 size=408 ############

bool FUN_18134b590(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  longlong lVar7;
  longlong lVar8;
  uint uVar9;
  undefined8 *local_res10;
  undefined8 *local_res18;
  undefined8 *local_res20;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  plVar6 = (longlong *)FUN_1804fc440();
  iVar3 = *(int *)((longlong)plVar6 + 0xc);
  uVar9 = iVar3 - 1;
  lVar8 = (longlong)(int)uVar9;
  if (-1 < (int)uVar9) {
    do {
      if (uVar9 < *(uint *)((longlong)plVar6 + 0xc)) {
        lVar4 = *(longlong *)(*plVar6 + lVar8 * 8);
        if (lVar4 != 0) {
          puVar5 = *(undefined8 **)(lVar4 + 0x50);
          lVar7 = 0;
          if (puVar5 != (undefined8 *)0x0) {
            lVar7 = puVar5[2];
          }
          if (lVar7 != 0) {
            *(undefined8 *)(lVar4 + 0x50) = 0;
            local_res18 = puVar5;
            if (puVar5 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar5 + 1);
              iVar2 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar2 == 1) {
                (**(code **)*puVar5)(puVar5,1,param_3,param_4,uVar10);
              }
            }
            FUN_181341b10(lVar4);
          }
          if (*(longlong *)(lVar4 + 0xb0) == 0) {
            if ((*(byte *)(lVar4 + 0xa8) >> 1 & 1) != 0) {
              FUN_1804de690(&local_res10,lVar4);
              puVar5 = *(undefined8 **)(lVar4 + 0x158);
              *(undefined8 *)(lVar4 + 0x158) = 0;
              if (puVar5 != (undefined8 *)0x0) {
                (**(code **)*puVar5)(puVar5,1);
              }
              local_res20 = *(undefined8 **)(lVar4 + 0x150);
              *(undefined8 *)(lVar4 + 0x150) = 0;
              if (local_res20 != (undefined8 *)0x0) {
                LOCK();
                piVar1 = (int *)(local_res20 + 1);
                iVar2 = *piVar1;
                *piVar1 = *piVar1 + -1;
                UNLOCK();
                if (iVar2 == 1) {
                  (**(code **)*local_res20)(local_res20,1);
                }
              }
              FUN_181343150(lVar4,0);
              if (local_res10 != (undefined8 *)0x0) {
                LOCK();
                piVar1 = (int *)(local_res10 + 1);
                iVar2 = *piVar1;
                *piVar1 = *piVar1 + -1;
                UNLOCK();
                if (iVar2 == 1) {
                  (**(code **)*local_res10)(local_res10,1);
                }
              }
            }
          }
          else {
            FUN_1804fbaf0(*(longlong *)(lVar4 + 0xb0),0);
          }
        }
      }
      uVar9 = uVar9 - 1;
      lVar8 = lVar8 + -1;
    } while (-1 < lVar8);
  }
  return 0 < iVar3;
}



############ FUN_ 1804fb940 size=429 ############

void FUN_1804fb940(longlong *param_1,longlong param_2,char param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  ulonglong uVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  undefined8 *local_res8;
  undefined1 local_68 [64];
  
  if ((*(byte *)(param_1 + 0x15) >> 1 & 1) == 0) {
    return;
  }
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar3 = (undefined8 *)param_1[0x2b];
  uVar7 = 0;
  param_1[0x2b] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  puVar3 = (undefined8 *)param_1[0x2a];
  param_1[0x2a] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (((param_2 != 0) && (*(longlong *)(param_2 + 0x70) != 0)) && (*(int *)(param_2 + 8) != 0)) {
    *(longlong *)param_1[0x22] = *(longlong *)(param_2 + 0x70);
  }
  if (*(char *)((longlong)param_1 + 0xf4) != '\0') {
    uVar5 = uVar7;
    if (param_1[0x1b] != 0) {
      uVar5 = *(ulonglong *)(param_1[0x1b] + 0x10);
    }
    uVar8 = uVar7;
    if (uVar5 == 0) goto LAB_1804fba51;
  }
  if (param_2 == 0) {
    uVar8 = 0;
  }
  else {
    if (*(longlong **)(param_2 + 0x68) != (longlong *)0x0) {
      cVar4 = (**(code **)(**(longlong **)(param_2 + 0x68) + 8))();
      uVar8 = 0;
      if (cVar4 == '\0') goto LAB_1804fba51;
    }
    uVar8 = (ulonglong)*(uint *)(param_2 + 8);
  }
LAB_1804fba51:
  FUN_181343150(param_1,uVar8);
  puVar3 = local_res8;
  if (param_3 != '\0') {
    if (local_res8 != (undefined8 *)0x0) {
      uVar7 = local_res8[2];
    }
    if (uVar7 != 0) {
      (**(code **)(*param_1 + 0x58))(param_1,0);
    }
  }
  if ((((int)uVar8 != 0) && (param_2 != 0)) && (*(longlong *)(param_2 + 0x48) != 0)) {
    uVar6 = FUN_1804871c0(local_68,param_2 + 0x10);
    FUN_1812a7460(uVar6);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18051e7b0 size=383 ############

void FUN_18051e7b0(longlong param_1,longlong *param_2,code *param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  char cVar4;
  longlong lVar5;
  longlong *local_40;
  undefined8 *local_38 [2];
  
  if (*param_2 == 0) {
    lVar5 = 0;
  }
  else {
    lVar5 = *(longlong *)(*param_2 + 0x10);
  }
  if (lVar5 != 0) {
    plVar2 = *(longlong **)(param_1 + 0x70);
    if (plVar2 != (longlong *)0x0) {
      iVar3 = *(int *)((longlong)plVar2 + 0xc);
      while (iVar3 = iVar3 + -1, -1 < iVar3) {
        (*param_3)(*(undefined8 *)(*plVar2 + (longlong)iVar3 * 8),param_4);
        if (*param_2 == 0) {
          lVar5 = 0;
        }
        else {
          lVar5 = *(longlong *)(*param_2 + 0x10);
        }
        if (lVar5 == 0) {
          return;
        }
        if (*(int *)((longlong)plVar2 + 0xc) < iVar3) {
          iVar3 = *(int *)((longlong)plVar2 + 0xc);
        }
      }
    }
    for (lVar5 = *(longlong *)(param_1 + 0x18); lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
      plVar2 = *(longlong **)(lVar5 + 0x70);
      if ((plVar2 != (longlong *)0x0) && (0 < (int)plVar2[2])) {
        local_40 = param_2;
        FUN_1804de690(local_38,lVar5);
        iVar3 = (int)plVar2[2];
        while (iVar3 = iVar3 + -1, -1 < iVar3) {
          (*param_3)(*(undefined8 *)(*plVar2 + (longlong)iVar3 * 8),param_4);
          cVar4 = FUN_1804e4a60(&local_40);
          if (cVar4 != '\0') {
            if (local_38[0] == (undefined8 *)0x0) {
              return;
            }
            LOCK();
            piVar1 = (int *)(local_38[0] + 1);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 != 1) {
              return;
            }
            (**(code **)*local_38[0])(local_38[0],1);
            return;
          }
          if ((int)plVar2[2] < iVar3) {
            iVar3 = (int)plVar2[2];
          }
        }
        if (local_38[0] != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_38[0] + 1);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)*local_38[0])(local_38[0],1);
          }
        }
      }
    }
  }
  return;
}



############ FUN_ 180501f20 size=270 ############

void FUN_180501f20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  (**(code **)(**(longlong **)(param_1 + 0x18) + 0x160))();
  *(undefined4 *)(param_1 + 0x1e0) = 0xffffffff;
  FUN_1804de690(&local_res8,*(undefined8 *)(param_1 + 0x18),param_3,param_4,uVar8);
  puVar3 = local_res8;
  iVar6 = *(int *)(param_1 + 0x34);
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar5 = 0;
  while( true ) {
    lVar4 = lVar5;
    if (bVar7) {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar6 < 1)) break;
    iVar6 = iVar6 + -1;
    if ((*(int *)(param_1 + 0x34) <= iVar6) && (iVar6 = *(int *)(param_1 + 0x34) + -1, iVar6 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x28) + (longlong)iVar6 * 8);
    (**(code **)(*plVar2 + 0x18))(plVar2,*(undefined8 *)(param_1 + 0x18));
  }
  if (bVar7) {
    lVar5 = puVar3[2];
  }
  if ((lVar5 != 0) && (*(longlong *)(*(longlong *)(param_1 + 0x18) + 0x178) != 0)) {
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x18) + 0x178);
    if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(*plVar2 + 0x10))();
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1812d21d0 size=353 ############

char FUN_1812d21d0(undefined8 param_1,undefined1 param_2)

{
  int *piVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  undefined8 *puVar5;
  char cVar6;
  longlong *plVar7;
  longlong lVar8;
  bool bVar9;
  undefined8 *local_res18;
  
  plVar7 = (longlong *)FUN_1812d2590();
  while( true ) {
    if (plVar7 == (longlong *)0x0) {
      return '\0';
    }
    FUN_1804de690(&local_res18,plVar7);
    cVar6 = (**(code **)(*plVar7 + 0xe0))(plVar7,param_2);
    puVar5 = local_res18;
    if (cVar6 != '\0') break;
    bVar9 = local_res18 == (undefined8 *)0x0;
    if (bVar9) {
      lVar8 = 0;
    }
    else {
      lVar8 = local_res18[2];
    }
    if (lVar8 == 0) break;
    plVar2 = (longlong *)plVar7[0xf];
    if (plVar2 != (longlong *)0x0) {
      iVar4 = *(int *)((longlong)plVar2 + 0xc);
      while (iVar4 = iVar4 + -1, -1 < iVar4) {
        plVar3 = *(longlong **)(*plVar2 + (longlong)iVar4 * 8);
        cVar6 = (**(code **)(*plVar3 + 0x10))(plVar3,param_2,plVar7);
        if (cVar6 != '\0') goto LAB_1812d22ee;
        if (bVar9) {
          lVar8 = 0;
        }
        else {
          lVar8 = puVar5[2];
        }
        if (lVar8 == 0) goto LAB_1812d22ee;
        if (*(int *)((longlong)plVar2 + 0xc) < iVar4) {
          iVar4 = *(int *)((longlong)plVar2 + 0xc);
        }
      }
    }
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar4 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar4 == 1) {
        (**(code **)*local_res18)(local_res18,1);
      }
    }
    plVar7 = (longlong *)plVar7[3];
  }
LAB_1812d22ee:
  if (puVar5 == (undefined8 *)0x0) {
    return cVar6;
  }
  LOCK();
  piVar1 = (int *)(puVar5 + 1);
  iVar4 = *piVar1;
  *piVar1 = *piVar1 + -1;
  UNLOCK();
  if (iVar4 != 1) {
    return cVar6;
  }
  (**(code **)*local_res18)(local_res18,1);
  return cVar6;
}



############ FUN_ 1812d2340 size=523 ############

bool FUN_1812d2340(undefined8 param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  bool bVar5;
  undefined8 *puVar6;
  char cVar7;
  char cVar8;
  wint_t wVar9;
  wint_t wVar10;
  longlong *plVar11;
  longlong lVar12;
  longlong lVar13;
  int iVar14;
  undefined8 *local_res18;
  undefined8 uVar15;
  
  uVar15 = 0xfffffffffffffffe;
  cVar7 = false;
  plVar11 = (longlong *)FUN_1812d2590();
  while( true ) {
    if (plVar11 == (longlong *)0x0) {
      return (bool)cVar7;
    }
    FUN_1804de690(&local_res18,plVar11);
    puVar6 = local_res18;
    plVar3 = (longlong *)plVar11[0xf];
    if (plVar3 != (longlong *)0x0) {
      iVar14 = *(int *)((longlong)plVar3 + 0xc);
      while (iVar14 = iVar14 + -1, -1 < iVar14) {
        plVar4 = *(longlong **)(*plVar3 + (longlong)iVar14 * 8);
        cVar7 = (**(code **)(*plVar4 + 8))(plVar4,param_2,plVar11,param_4,uVar15);
        if (cVar7 != '\0') goto LAB_1812d2508;
        if (puVar6 == (undefined8 *)0x0) {
          lVar12 = 0;
        }
        else {
          lVar12 = puVar6[2];
        }
        if (lVar12 == 0) goto LAB_1812d2508;
        if (*(int *)((longlong)plVar3 + 0xc) < iVar14) {
          iVar14 = *(int *)((longlong)plVar3 + 0xc);
        }
      }
    }
    cVar7 = (**(code **)(*plVar11 + 0xd8))(plVar11,param_2);
    lVar12 = DAT_182673708;
    if (cVar7 != '\0') break;
    if (puVar6 == (undefined8 *)0x0) {
      lVar13 = 0;
    }
    else {
      lVar13 = puVar6[2];
    }
    if (lVar13 == 0) break;
    cVar7 = false;
    if (DAT_182673708 != 0) {
      iVar14 = 9;
      cVar8 = FUN_181338a70(param_2);
      if (param_2[1] == 1) {
        iVar2 = *param_2;
        if (iVar2 != iVar14) {
          if (iVar2 < 0x100) {
            wVar9 = towlower((wint_t)iVar2);
            wVar10 = towlower(9);
            if (wVar9 == wVar10) goto LAB_1812d2482;
          }
          goto LAB_1812d2486;
        }
LAB_1812d2482:
        bVar5 = true;
      }
      else {
LAB_1812d2486:
        bVar5 = false;
      }
      if ((cVar8 != '\0') || (bVar5)) {
        FUN_18133ebe0(lVar12,cVar8);
        cVar7 = lVar12 != DAT_182673708;
        if (!(bool)cVar7) {
          if (puVar6 == (undefined8 *)0x0) {
            lVar12 = 0;
          }
          else {
            lVar12 = puVar6[2];
          }
          if (lVar12 != 0) goto LAB_1812d24c5;
        }
        if (puVar6 == (undefined8 *)0x0) {
          return (bool)cVar7;
        }
        LOCK();
        piVar1 = (int *)(puVar6 + 1);
        iVar14 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        goto LAB_1812d2519;
      }
    }
LAB_1812d24c5:
    if (puVar6 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar6 + 1);
      iVar14 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar14 == 1) {
        (**(code **)*local_res18)(local_res18,1);
      }
    }
    plVar11 = (longlong *)plVar11[3];
  }
LAB_1812d2508:
  if (puVar6 == (undefined8 *)0x0) {
    return (bool)cVar7;
  }
  LOCK();
  piVar1 = (int *)(puVar6 + 1);
  iVar14 = *piVar1;
  *piVar1 = *piVar1 + -1;
  UNLOCK();
LAB_1812d2519:
  if (iVar14 != 1) {
    return (bool)cVar7;
  }
  (**(code **)*local_res18)(local_res18,1);
  return (bool)cVar7;
}



############ FUN_ 18133ebe0 size=341 ############

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

void FUN_18133ebe0(longlong *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  longlong *plVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *local_res8;
  
  if (param_1[3] != 0) {
    plVar5 = (longlong *)(**(code **)(*param_1 + 0xa8))();
    if (plVar5 != (longlong *)0x0) {
      if (param_2 == '\0') {
        lVar6 = (**(code **)(*plVar5 + 0x10))(plVar5,param_1);
      }
      else {
        lVar6 = (**(code **)(*plVar5 + 8))();
      }
      lVar7 = 0;
      if (plVar5 != (longlong *)0x0) {
        (**(code **)*plVar5)(plVar5,1);
      }
      if (lVar6 != 0) {
        cVar4 = FUN_181343030(lVar6);
        if (cVar4 != '\0') {
          FUN_1804de690(&local_res8,lVar6);
          FUN_181341760();
          puVar3 = local_res8;
          if (local_res8 != (undefined8 *)0x0) {
            lVar7 = local_res8[2];
          }
          if ((lVar7 == 0) || (cVar4 = FUN_181343030(lVar6), cVar4 != '\0')) {
            if (puVar3 == (undefined8 *)0x0) {
              return;
            }
            LOCK();
            piVar1 = (int *)(puVar3 + 1);
            iVar2 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar2 != 1) {
              return;
            }
            (**(code **)*local_res8)(local_res8,1);
            return;
          }
          if (puVar3 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(puVar3 + 1);
            iVar2 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar2 == 1) {
              (**(code **)*local_res8)(local_res8,1);
            }
          }
        }
        FUN_18133ed60(lVar6,1,1);
        return;
      }
    }
    FUN_18133ebe0(param_1[3],param_2);
  }
  return;
}



############ FUN_ 1804783a0 size=690 ############

undefined8 * FUN_1804783a0(undefined8 *param_1,undefined8 param_2,longlong *param_3)

{
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *local_res18;
  LPCRITICAL_SECTION local_res20;
  undefined1 local_58 [16];
  undefined8 local_48;
  undefined8 uStack_40;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  lVar6 = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::JuceVST3EditController::JuceVST3Editor::ContentWrapperComponent::vftable;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_3 + 0x14);
  local_res20 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  lVar4 = param_3[5];
  lVar3 = lVar6;
  if (lVar4 != 0) {
    lVar3 = *(longlong *)(lVar4 + 0x10);
  }
  if (lVar3 == 0) {
    lVar4 = (**(code **)(*param_3 + 0xa8))(param_3);
    if (lVar4 != 0) {
      plVar5 = (longlong *)FUN_1804de690(&local_res18,lVar4);
      lVar6 = param_3[5];
      param_3[5] = *plVar5;
      *plVar5 = lVar6;
      if (local_res18 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_res18 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res18)(local_res18,1);
        }
      }
    }
  }
  else {
    if (lVar4 != 0) {
      lVar6 = *(longlong *)(lVar4 + 0x10);
    }
    lVar4 = __RTDynamicCast(lVar6,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::AudioProcessorEditor::RTTI_Type_Descriptor,0);
  }
  LeaveCriticalSection(lpCriticalSection);
  param_1[0x16] = lVar4;
  param_1[0x17] = param_2;
  *(undefined8 *)((longlong)param_1 + 0xc4) = 0;
  *(undefined8 *)((longlong)param_1 + 0xcc) = 0;
  *(undefined2 *)((longlong)param_1 + 0xd4) = 0;
  FUN_18134bd50(param_1,1);
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 4;
  if (param_1[0x16] != 0) {
    plVar5 = (longlong *)param_1[0x16];
    if (plVar5 != (longlong *)0x0) {
      (**(code **)(*plVar5 + 0x58))(plVar5,1);
      FUN_181343cc0(param_1,plVar5,0xffffffff);
    }
    lVar4 = param_1[0x16];
    FUN_18134bfe0(lVar4,0,0,*(undefined4 *)(lVar4 + 0x28),*(undefined4 *)(lVar4 + 0x2c));
    if (param_1[0x16] == 0) {
      local_58 = ZEXT816(0);
    }
    else {
      uStack_40 = *(undefined8 *)(param_1[0x16] + 0x28);
      local_48 = 0;
      FUN_18051df30(local_58,param_1,param_1[0x16],&local_48);
    }
    *(undefined1 (*) [16])((longlong)param_1 + 0xc4) = local_58;
    *(undefined1 *)((longlong)param_1 + 0xd5) = 1;
    FUN_18134bfe0(param_1,local_58._0_8_,local_58._0_8_ >> 0x20,local_58._8_4_,local_58._12_4_);
    *(undefined1 *)((longlong)param_1 + 0xd5) = 0;
    FUN_1804789b0(param_1);
  }
  return param_1;
}



############ FUN_ 181344840 size=406 ############

void FUN_181344840(longlong *param_1,char param_2,ulonglong param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  undefined8 *local_res20;
  
  FUN_1804de690(&local_res20,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res20;
  if (param_2 != '\0') {
    (**(code **)(*param_1 + 0x110))(param_1);
    if (puVar3 == (undefined8 *)0x0) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if (lVar4 == 0) goto LAB_18134499a;
  }
  if ((char)param_3 != '\0') {
    (**(code **)(*param_1 + 0x108))(param_1);
    if (puVar3 == (undefined8 *)0x0) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if (lVar4 == 0) goto LAB_18134499a;
    iVar5 = *(int *)((longlong)param_1 + 0x4c);
    while (iVar5 = iVar5 + -1, -1 < iVar5) {
      (**(code **)(**(longlong **)(param_1[8] + (longlong)iVar5 * 8) + 0x120))();
      if (puVar3 == (undefined8 *)0x0) {
        lVar4 = 0;
      }
      else {
        lVar4 = puVar3[2];
      }
      if (lVar4 == 0) goto LAB_18134499a;
      if (*(int *)((longlong)param_1 + 0x4c) < iVar5) {
        iVar5 = *(int *)((longlong)param_1 + 0x4c);
      }
    }
  }
  plVar2 = (longlong *)param_1[3];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x118))(plVar2,param_1);
  }
  if (puVar3 == (undefined8 *)0x0) {
    lVar4 = 0;
  }
  else {
    lVar4 = puVar3[2];
  }
  if (lVar4 != 0) {
    iVar5 = *(int *)((longlong)param_1 + 0x8c);
    while( true ) {
      if (puVar3 == (undefined8 *)0x0) {
        lVar4 = 0;
      }
      else {
        lVar4 = puVar3[2];
      }
      if ((lVar4 == 0) || (iVar5 < 1)) break;
      iVar5 = iVar5 + -1;
      if ((*(int *)((longlong)param_1 + 0x8c) <= iVar5) &&
         (iVar5 = *(int *)((longlong)param_1 + 0x8c) + -1, iVar5 < 0)) break;
      plVar2 = *(longlong **)(param_1[0x10] + (longlong)iVar5 * 8);
      (**(code **)(*plVar2 + 8))(plVar2,param_1,param_2,param_3 & 0xff);
    }
  }
LAB_18134499a:
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  return;
}



############ FUN_ 18133e970 size=294 ############

void FUN_18133e970(longlong param_1,byte param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  byte bVar2;
  longlong *plVar3;
  code *pcVar4;
  undefined8 *puVar5;
  char cVar6;
  longlong lVar7;
  int iVar8;
  bool bVar9;
  undefined8 *local_res8;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  bVar2 = *(byte *)(param_1 + 0xa9);
  if ((bVar2 >> 4 & 1) == param_2) {
    *(byte *)(param_1 + 0xa9) = ((param_2 == 0) << 4 ^ bVar2) & 0x10 ^ bVar2;
    lVar7 = *(longlong *)(param_1 + 0x18);
    if ((lVar7 == 0) ||
       (((*(byte *)(lVar7 + 0xa9) & 0x10) == 0 &&
        ((*(longlong *)(lVar7 + 0x18) == 0 || (cVar6 = FUN_18133eaa0(), cVar6 != '\0')))))) {
      FUN_18133e890(param_1);
    }
    FUN_1804de690(&local_res8,param_1);
    puVar5 = local_res8;
    iVar8 = *(int *)(param_1 + 0x8c);
    bVar9 = local_res8 == (undefined8 *)0x0;
    while( true ) {
      if (bVar9) {
        lVar7 = 0;
      }
      else {
        lVar7 = puVar5[2];
      }
      if ((lVar7 == 0) || (iVar8 < 1)) break;
      iVar8 = iVar8 + -1;
      if ((*(int *)(param_1 + 0x8c) <= iVar8) && (iVar8 = *(int *)(param_1 + 0x8c) + -1, iVar8 < 0))
      break;
      plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x80) + (longlong)iVar8 * 8);
      pcVar4 = *(code **)(*plVar3 + 0x40);
      if (pcVar4 != .?AVSoothe2Grid@@::vtbl___AVSoothe2Grid__) {
        (*pcVar4)(plVar3,param_1,pcVar4,param_4,uVar10);
      }
    }
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar8 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar8 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18133e890 size=208 ############

void FUN_18133e890(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  uint uVar6;
  bool bVar7;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*param_1 + 0xb0))(param_1);
  puVar3 = local_res8;
  bVar7 = local_res8 == (undefined8 *)0x0;
  if (bVar7) {
    lVar5 = 0;
  }
  else {
    lVar5 = local_res8[2];
  }
  if (lVar5 != 0) {
    uVar6 = *(int *)((longlong)param_1 + 0x4c) - 1;
    lVar5 = (longlong)(int)uVar6;
    if (-1 < (int)uVar6) {
      do {
        if ((uVar6 < *(uint *)((longlong)param_1 + 0x4c)) &&
           (*(longlong *)(param_1[8] + lVar5 * 8) != 0)) {
          FUN_18133e890();
          if (bVar7) {
            lVar4 = 0;
          }
          else {
            lVar4 = puVar3[2];
          }
          if (lVar4 == 0) break;
        }
        uVar6 = uVar6 - 1;
        lVar5 = lVar5 + -1;
      } while (-1 < lVar5);
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1813367f0 size=266 ############

void FUN_1813367f0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*param_1 + 0x178))(param_1);
  puVar3 = local_res8;
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar5 = 0;
  lVar4 = lVar5;
  if (bVar7) {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    iVar6 = *(int *)((longlong)param_1 + 0x16c);
    while( true ) {
      lVar4 = lVar5;
      if (bVar7) {
        lVar4 = puVar3[2];
      }
      if ((lVar4 == 0) || (iVar6 < 1)) break;
      iVar6 = iVar6 + -1;
      if ((*(int *)((longlong)param_1 + 0x16c) <= iVar6) &&
         (iVar6 = *(int *)((longlong)param_1 + 0x16c) + -1, iVar6 < 0)) break;
      plVar2 = *(longlong **)(param_1[0x2c] + (longlong)iVar6 * 8);
      (**(code **)(*plVar2 + 0x10))(plVar2,param_1);
    }
    if (bVar7) {
      lVar5 = puVar3[2];
    }
    if ((lVar5 != 0) && (param_1[0x27] != 0)) {
      if ((longlong *)param_1[0x27] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*(longlong *)param_1[0x27] + 0x10))();
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 181336910 size=352 ############

void FUN_181336910(longlong *param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  int local_50 [4];
  longlong *local_40;
  undefined8 local_38;
  undefined4 local_30;
  undefined1 local_2c;
  undefined4 local_28;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  lVar5 = 0;
  if ((param_1[0x30] != 0) && (*(int *)((longlong)param_1 + 0x19c) != 0)) {
    local_50[1] = 0;
    local_38 = 0;
    local_30 = 0;
    local_2c = 0;
    local_28 = 0;
    local_50[2] = 3;
    local_50[0] = *(int *)((longlong)param_1 + 0x19c);
    local_40 = param_1;
    FUN_1812cb380(param_1[0x30],local_50,1);
  }
  (**(code **)(*param_1 + 0x160))(param_1,param_2);
  puVar3 = local_res8;
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar4 = lVar5;
  if (bVar7) {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    iVar6 = *(int *)((longlong)param_1 + 0x16c);
    while( true ) {
      lVar4 = lVar5;
      if (bVar7) {
        lVar4 = puVar3[2];
      }
      if ((lVar4 == 0) || (iVar6 < 1)) break;
      iVar6 = iVar6 + -1;
      if ((*(int *)((longlong)param_1 + 0x16c) <= iVar6) &&
         (iVar6 = *(int *)((longlong)param_1 + 0x16c) + -1, iVar6 < 0)) break;
      plVar2 = *(longlong **)(param_1[0x2c] + (longlong)iVar6 * 8);
      (**(code **)(*plVar2 + 8))(plVar2,param_1);
    }
    if (bVar7) {
      lVar5 = puVar3[2];
    }
    if ((lVar5 != 0) && (param_1[0x1f] != 0)) {
      if ((longlong *)param_1[0x1f] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*(longlong *)param_1[0x1f] + 0x10))();
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 181336f60 size=267 ############

void FUN_181336f60(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined8 *local_res8;
  
  lVar5 = *(longlong *)(param_1 + 0x18);
  if ((lVar5 != 0) && (*(int *)(param_1 + 0x194) != 0)) {
    FUN_1804de690(&local_res8,param_1);
    puVar4 = local_res8;
    plVar6 = *(longlong **)(lVar5 + 0x40);
    plVar2 = plVar6 + *(int *)(lVar5 + 0x4c);
    if (plVar6 != plVar2) {
      do {
        if (((*plVar6 != param_1) &&
            (lVar5 = __RTDynamicCast(*plVar6,0,&juce::Component::RTTI_Type_Descriptor,
                                     &juce::Button::RTTI_Type_Descriptor,0), lVar5 != 0)) &&
           (*(int *)(lVar5 + 0x194) == *(int *)(param_1 + 0x194))) {
          FUN_181337080(lVar5,0,param_2,param_3);
          lVar5 = 0;
          if (puVar4 != (undefined8 *)0x0) {
            lVar5 = puVar4[2];
          }
          if (lVar5 == 0) break;
        }
        plVar6 = plVar6 + 1;
      } while (plVar6 != plVar2);
    }
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 1812cc1e0 size=135 ############

void FUN_1812cc1e0(longlong *param_1,char param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 uVar1;
  undefined1 local_res8 [16];
  
  if (*(char *)((longlong)param_1 + 0xb1) != param_2) {
    FUN_1804de690(local_res8,DAT_182673708,param_3,param_4,0xfffffffffffffffe);
    *(char *)((longlong)param_1 + 0xb1) = param_2;
    if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
      uVar1 = (**(code **)(*param_1 + 0x160))(param_1);
      .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar1,0);
      FUN_181344f60(param_1,1);
    }
    FUN_181341b10(param_1);
    FUN_1804e4a90(local_res8);
  }
  return;
}



############ FUN_ 18050cf50 size=320 ############

undefined8 * FUN_18050cf50(undefined8 *param_1,longlong param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::DropShadower::ShadowWindow::vftable;
  FUN_1804de690();
  uVar1 = param_3[1];
  uVar2 = param_3[2];
  uVar3 = param_3[3];
  *(undefined4 *)(param_1 + 0x17) = *param_3;
  *(undefined4 *)((longlong)param_1 + 0xbc) = uVar1;
  *(undefined4 *)(param_1 + 0x18) = uVar2;
  *(undefined4 *)((longlong)param_1 + 0xc4) = uVar3;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,1);
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  if ((*(byte *)(param_2 + 0xa8) & 1) == 0) {
    if (*(longlong *)(param_2 + 0x18) != 0) {
      FUN_181343cc0(*(longlong *)(param_2 + 0x18),param_1,0xffffffff);
    }
  }
  else {
    FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 4),*(undefined4 *)((longlong)param_1 + 0x24),1,1
                 );
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,0x406,0);
  }
  return param_1;
}



############ FUN_ 1804dcbc0 size=80 ############

undefined8 * FUN_1804dcbc0(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *local_res8 [2];
  undefined8 local_res18;
  
  puVar3 = (undefined8 *)FUN_1804de690(local_res8);
  local_res18 = *param_1;
  *param_1 = *puVar3;
  *puVar3 = local_res18;
  if (local_res8[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8[0] + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8[0])(local_res8[0],1);
    }
  }
  return param_1;
}



############ FUN_ 1804e6010 size=556 ############

void FUN_1804e6010(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  undefined4 uVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined8 *puVar7;
  longlong lVar8;
  bool bVar9;
  undefined8 *local_res8;
  longlong local_res10;
  undefined8 *local_88;
  longlong local_80;
  longlong *local_78;
  undefined8 local_70;
  undefined1 local_68 [8];
  undefined8 local_60;
  longlong *local_58;
  undefined1 local_50 [24];
  
  local_70 = 0xfffffffffffffffe;
  lVar8 = 0;
  lVar6 = lVar8;
  if (*(longlong *)(param_1 + 0x48) != 0) {
    lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x10);
  }
  if (param_2 != lVar6) {
    FUN_1804de690(&local_res8);
    uVar4 = *(undefined4 *)(param_1 + 0x28);
    if (lVar6 != 0) {
      FUN_1804de690(&local_88,lVar6);
      FUN_1804e5c30(param_1,param_3,param_4,0);
      puVar7 = local_88;
      lVar6 = lVar8;
      if (local_88 != (undefined8 *)0x0) {
        lVar6 = local_88[2];
      }
      if (lVar6 != 0) {
        FUN_1804a9e60(param_1 + 0x48,&local_res8);
        local_78 = &local_res10;
        local_res10 = param_1;
        puVar5 = (undefined8 *)FUN_1804e5790(local_68,lVar6,param_3);
        FUN_181341050(lVar6,&local_res10,*puVar5,param_4);
      }
      *(undefined4 *)(param_1 + 0x28) = uVar4;
      if (puVar7 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar7 + 1);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*local_88)(local_88,1);
        }
      }
    }
    puVar7 = local_res8;
    bVar9 = local_res8 != (undefined8 *)0x0;
    lVar6 = lVar8;
    if (bVar9) {
      lVar6 = local_res8[2];
    }
    puVar5 = (undefined8 *)FUN_1804de690(&local_78,lVar6);
    local_60 = *(undefined8 *)(param_1 + 0x48);
    *(undefined8 *)(param_1 + 0x48) = *puVar5;
    *puVar5 = local_60;
    if (local_78 != (longlong *)0x0) {
      LOCK();
      plVar2 = local_78 + 1;
      lVar6 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      puVar7 = local_res8;
      if ((int)lVar6 == 1) {
        (**(code **)*local_78)(local_78,1);
        puVar7 = local_res8;
      }
    }
    if (bVar9) {
      lVar8 = puVar7[2];
    }
    if (lVar8 != 0) {
      local_58 = &local_80;
      local_80 = param_1;
      puVar5 = (undefined8 *)FUN_1804e5790(local_50,lVar8,param_3);
      FUN_1813412b0(lVar8,&local_80,*puVar5,param_4);
    }
    FUN_1804e6e90(param_1,0);
    FUN_1804e5c30(param_1,param_3,param_4,uVar4);
    if (puVar7 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar7 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 18051e930 size=401 ############

void FUN_18051e930(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  char cVar4;
  longlong lVar5;
  longlong *local_40;
  undefined8 *local_38 [2];
  
  if (*param_2 == 0) {
    lVar5 = 0;
  }
  else {
    lVar5 = *(longlong *)(*param_2 + 0x10);
  }
  if (lVar5 != 0) {
    plVar2 = *(longlong **)(param_1 + 0x70);
    if (plVar2 != (longlong *)0x0) {
      iVar3 = *(int *)((longlong)plVar2 + 0xc);
      while (iVar3 = iVar3 + -1, -1 < iVar3) {
        FUN_1805261b0(*(undefined8 *)(*plVar2 + (longlong)iVar3 * 8),param_4,param_5);
        if (*param_2 == 0) {
          lVar5 = 0;
        }
        else {
          lVar5 = *(longlong *)(*param_2 + 0x10);
        }
        if (lVar5 == 0) {
          return;
        }
        if (*(int *)((longlong)plVar2 + 0xc) < iVar3) {
          iVar3 = *(int *)((longlong)plVar2 + 0xc);
        }
      }
    }
    for (lVar5 = *(longlong *)(param_1 + 0x18); lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
      plVar2 = *(longlong **)(lVar5 + 0x70);
      if ((plVar2 != (longlong *)0x0) && (0 < (int)plVar2[2])) {
        local_40 = param_2;
        FUN_1804de690(local_38,lVar5);
        iVar3 = (int)plVar2[2];
        while (iVar3 = iVar3 + -1, -1 < iVar3) {
          FUN_1805261b0(*(undefined8 *)(*plVar2 + (longlong)iVar3 * 8),param_4,param_5);
          cVar4 = FUN_1804e4a60(&local_40);
          if (cVar4 != '\0') {
            if (local_38[0] == (undefined8 *)0x0) {
              return;
            }
            LOCK();
            piVar1 = (int *)(local_38[0] + 1);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 != 1) {
              return;
            }
            (**(code **)*local_38[0])(local_38[0],1);
            return;
          }
          if ((int)plVar2[2] < iVar3) {
            iVar3 = (int)plVar2[2];
          }
        }
        if (local_38[0] != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_38[0] + 1);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)*local_38[0])(local_38[0],1);
          }
        }
      }
    }
  }
  return;
}



############ FUN_ 1812cf600 size=379 ############

void FUN_1812cf600(longlong *param_1,longlong param_2,undefined1 param_3,char param_4)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 *local_res8;
  longlong local_res10;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  
  lVar6 = 0;
  lVar4 = lVar6;
  if (param_1[0x1a] != 0) {
    lVar4 = *(longlong *)(param_1[0x1a] + 0x10);
  }
  if (param_2 != lVar4) {
    FUN_1812cf790();
    plVar5 = (longlong *)FUN_1804de690(&local_res8,param_2);
    local_res10 = param_1[0x1a];
    param_1[0x1a] = *plVar5;
    *plVar5 = local_res10;
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    if ((param_1[0x1a] != 0) &&
       (plVar5 = *(longlong **)(param_1[0x1a] + 0x10), plVar5 != (longlong *)0x0)) {
      (**(code **)(*plVar5 + 0x58))(plVar5,1);
      FUN_181343cc0(param_1,plVar5,0xffffffff);
    }
  }
  *(undefined1 *)(param_1 + 0x1c) = param_3;
  *(char *)((longlong)param_1 + 0xe1) = param_4;
  if (param_4 != '\0') {
    lVar4 = lVar6;
    if (param_1[0x1a] != 0) {
      lVar4 = *(longlong *)(param_1[0x1a] + 0x10);
    }
    pcVar3 = *(code **)(*param_1 + 0x118);
    if (pcVar3 == FUN_1812cf070) {
      if (param_1[0x1a] != 0) {
        lVar6 = *(longlong *)(param_1[0x1a] + 0x10);
      }
      if ((lVar4 == lVar6) && (lVar4 != 0)) {
        (**(code **)(*param_1 + 0x170))(param_1,&local_28);
        FUN_18134bfe0(param_1,(int)param_1[4],*(undefined4 *)((longlong)param_1 + 0x24),
                      *(int *)(lVar4 + 0x28) + local_1c + local_24,
                      *(int *)(lVar4 + 0x2c) + local_28 + local_20);
      }
    }
    else {
      (*pcVar3)(param_1,lVar4);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001812cf76a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x108))(param_1);
  return;
}



############ FUN_ 1813416b0 size=166 ############

void FUN_1813416b0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *local_res18 [2];
  undefined **local_50;
  undefined8 *local_48;
  undefined4 local_40;
  undefined ***local_18;
  
  FUN_1804de690(local_res18,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res18[0];
  if (local_res18[0] != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res18[0] + 1) = *(int *)(local_res18[0] + 1) + 1;
    UNLOCK();
  }
  local_50 = std::_Func_impl_no_alloc<<lambda_9328431c2f54c84ae96c403f93b75e6e>,void>::vftable;
  local_48 = local_res18[0];
  local_18 = &local_50;
  local_40 = param_2;
  FUN_1812a7460(&local_50);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res18[0])(local_res18[0],1);
    }
  }
  return;
}



############ FUN_ 1812e8980 size=235 ############

void FUN_1812e8980(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res8;
  iVar6 = *(int *)(param_1 + 0x1dc);
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar5 = 0;
  while( true ) {
    lVar4 = lVar5;
    if (bVar7) {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar6 < 1)) break;
    iVar6 = iVar6 + -1;
    if ((*(int *)(param_1 + 0x1dc) <= iVar6) && (iVar6 = *(int *)(param_1 + 0x1dc) + -1, iVar6 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x1d0) + (longlong)iVar6 * 8);
    (**(code **)(*plVar2 + 8))(plVar2,param_1);
  }
  if (bVar7) {
    lVar5 = puVar3[2];
  }
  if ((lVar5 != 0) && (*(longlong *)(param_1 + 0x110) != 0)) {
    if (*(longlong **)(param_1 + 0x110) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(**(longlong **)(param_1 + 0x110) + 0x10))();
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1804fbc00 size=713 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1804fbc00(longlong param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  longlong lVar8;
  longlong lVar9;
  longlong *plVar10;
  longlong *plVar11;
  bool bVar12;
  undefined8 *local_res10;
  
  iVar2 = *param_2;
  if (iVar2 == 0x10028) {
    FUN_1804fe050(param_1,1);
  }
  else if (iVar2 == 0x10026) {
    FUN_1804fe050(param_1,0xffffffff);
  }
  else if (iVar2 == 0x10025) {
    if (*(longlong *)(param_1 + 0xb0) == 0) {
      lVar9 = *(longlong *)(param_1 + 0x118);
      if ((lVar9 != 0) && (*(longlong *)(lVar9 + 0x10) != 0)) {
        if (lVar9 == 0) {
          (**(code **)(_DAT_00000000 + 0xd8))(0,param_2);
          return 1;
        }
        (**(code **)(**(longlong **)(lVar9 + 0x10) + 0xd8))(*(longlong **)(lVar9 + 0x10),param_2);
        return 1;
      }
    }
    else {
      FUN_1804de690(&local_res10);
      puVar3 = local_res10;
      bVar12 = local_res10 != (undefined8 *)0x0;
      lVar9 = 0;
      lVar8 = lVar9;
      if (bVar12) {
        lVar8 = local_res10[2];
      }
      lVar5 = __RTDynamicCast(lVar8,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::PopupMenu::HelperClasses::MenuWindow::RTTI_Type_Descriptor,0);
      lVar8 = lVar9;
      if (*(longlong *)(lVar5 + 0x150) != 0) {
        lVar8 = *(longlong *)(*(longlong *)(lVar5 + 0x150) + 0x10);
      }
      uVar6 = __RTDynamicCast(lVar8,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::PopupMenu::HelperClasses::ItemComponent::RTTI_Type_Descriptor,0
                             );
      FUN_1804fb940(param_1,0,1);
      lVar8 = lVar9;
      if (bVar12) {
        lVar8 = puVar3[2];
      }
      if (lVar8 != 0) {
        if (bVar12) {
          lVar9 = puVar3[2];
        }
        uVar7 = __RTDynamicCast(lVar9,0,&juce::Component::RTTI_Type_Descriptor,
                                &juce::PopupMenu::HelperClasses::MenuWindow::RTTI_Type_Descriptor,0)
        ;
        FUN_1804fda20(uVar7,uVar6);
      }
      FUN_1804fe1d0(param_1);
      if (puVar3 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar3 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res10)(local_res10,1);
          return 1;
        }
      }
    }
  }
  else if (iVar2 == 0x10027) {
    FUN_1804fe1d0(param_1);
    plVar11 = (longlong *)0x0;
    plVar10 = plVar11;
    if (*(longlong *)(param_1 + 0x150) != 0) {
      plVar10 = *(longlong **)(*(longlong *)(param_1 + 0x150) + 0x10);
    }
    uVar6 = __RTDynamicCast(plVar10,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::PopupMenu::HelperClasses::ItemComponent::RTTI_Type_Descriptor,0);
    cVar4 = FUN_1804fdba0(param_1,uVar6);
    if (cVar4 == '\0') {
      lVar9 = *(longlong *)(param_1 + 0x118);
      if ((lVar9 != 0) && (*(longlong *)(lVar9 + 0x10) != 0)) {
        if (lVar9 != 0) {
          plVar11 = *(longlong **)(lVar9 + 0x10);
        }
        (**(code **)(*plVar11 + 0xd8))(plVar11,param_2);
        return 1;
      }
    }
    else {
      lVar9 = *(longlong *)(param_1 + 0x158);
      if ((lVar9 != 0) && ((*(byte *)(lVar9 + 0xa8) & 2) != 0)) {
        FUN_1804fe050(lVar9,1);
        return 1;
      }
    }
  }
  else {
    if (iVar2 == 0xd) {
      FUN_1804fdee0(param_1);
      return 1;
    }
    if (iVar2 != 0x1b) {
      return 0;
    }
    FUN_1804fbaf0(param_1,0);
  }
  return 1;
}



############ FUN_ 1804fda20 size=371 ############

DWORD FUN_1804fda20(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  longlong lVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  undefined8 *local_res8;
  
  lVar3 = *(longlong *)(param_1 + 0x150);
  if (lVar3 == 0) {
    lVar7 = 0;
  }
  else {
    lVar7 = *(longlong *)(lVar3 + 0x10);
  }
  if (lVar7 != 0) {
    if (lVar3 == 0) {
      uVar8 = 0;
    }
    else {
      uVar8 = *(undefined8 *)(lVar3 + 0x10);
    }
    uVar8 = __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::PopupMenu::HelperClasses::ItemComponent::RTTI_Type_Descriptor,0);
    FUN_1804fa880(uVar8,0);
  }
  puVar9 = (undefined8 *)FUN_1804de690(&local_res8,param_2);
  uVar8 = *(undefined8 *)(param_1 + 0x150);
  *(undefined8 *)(param_1 + 0x150) = *puVar9;
  *puVar9 = uVar8;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  lVar3 = *(longlong *)(param_1 + 0x150);
  if (lVar3 == 0) {
    lVar7 = 0;
  }
  else {
    lVar7 = *(longlong *)(lVar3 + 0x10);
  }
  uVar5 = 0;
  if (lVar7 != 0) {
    if (lVar3 == 0) {
      uVar8 = 0;
    }
    else {
      uVar8 = *(undefined8 *)(lVar3 + 0x10);
    }
    uVar8 = __RTDynamicCast(uVar8,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::PopupMenu::HelperClasses::ItemComponent::RTTI_Type_Descriptor,0);
    uVar5 = FUN_1804fa880(uVar8,1);
    uVar6 = DAT_1826737fc;
    uVar4 = DAT_1826737fc;
    if (DAT_1826737fc == 0) {
      uVar6 = timeGetTime();
      if (uVar6 < DAT_1826737fc) {
        uVar4 = DAT_1826737fc;
        uVar5 = uVar6;
        if (uVar6 < DAT_1826737fc - 1000) {
          LOCK();
          UNLOCK();
          DAT_1826737fc = uVar6;
          *(uint *)(param_1 + 0x178) = uVar6;
          return uVar6;
        }
      }
      else {
        LOCK();
        UNLOCK();
        uVar4 = uVar6;
        uVar5 = DAT_1826737fc;
      }
    }
    DAT_1826737fc = uVar4;
    *(uint *)(param_1 + 0x178) = uVar6;
  }
  return uVar5;
}



############ FUN_ 180501e20 size=249 ############

void FUN_180501e20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  (**(code **)(**(longlong **)(param_1 + 0x18) + 0x158))();
  FUN_1804de690(&local_res8,*(undefined8 *)(param_1 + 0x18),param_3,param_4,uVar8);
  puVar3 = local_res8;
  iVar6 = *(int *)(param_1 + 0x34);
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar5 = 0;
  while( true ) {
    lVar4 = lVar5;
    if (bVar7) {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar6 < 1)) break;
    iVar6 = iVar6 + -1;
    if ((*(int *)(param_1 + 0x34) <= iVar6) && (iVar6 = *(int *)(param_1 + 0x34) + -1, iVar6 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x28) + (longlong)iVar6 * 8);
    (**(code **)(*plVar2 + 0x10))(plVar2,*(undefined8 *)(param_1 + 0x18));
  }
  if (bVar7) {
    lVar5 = puVar3[2];
  }
  if ((lVar5 != 0) && (*(longlong *)(*(longlong *)(param_1 + 0x18) + 0x138) != 0)) {
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x18) + 0x138);
    if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(*plVar2 + 0x10))();
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 180502bf0 size=1243 ############

void FUN_180502bf0(longlong param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  uint *puVar7;
  undefined1 *local_res8;
  undefined8 *local_res10;
  longlong local_res18;
  undefined1 local_res20 [8];
  undefined1 *local_1b8;
  undefined1 **local_1b0;
  undefined8 *local_1a8;
  undefined8 local_1a0;
  undefined8 uStack_198;
  undefined8 local_190;
  undefined8 *local_188;
  longlong local_180;
  undefined1 local_178 [8];
  longlong local_170;
  undefined1 local_168 [8];
  longlong local_160;
  undefined1 local_158 [8];
  longlong local_150;
  undefined1 local_148 [8];
  longlong local_140 [5];
  undefined8 *puStack_118;
  undefined8 local_110;
  undefined8 uStack_108;
  undefined8 local_100;
  undefined8 *puStack_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 *local_d8;
  undefined8 local_d0;
  undefined **local_c8;
  code *local_c0;
  undefined8 *local_b8;
  undefined ***local_90;
  undefined1 local_78 [32];
  undefined8 *local_58;
  
  local_d0 = 0xfffffffffffffffe;
  local_110 = 0;
  uStack_108 = 0;
  local_100 = 0;
  puStack_f8 = (undefined8 *)0x0;
  uVar5 = FUN_18134adf0(*(undefined8 *)(param_1 + 0x18));
  FUN_18051b750(&puStack_f8,uVar5);
  FUN_18049c4e0(&local_res18,"Velocity-sensitive mode");
  FUN_1812344e0(local_res20,&local_res18);
  puVar7 = (uint *)(local_res18 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_1813486a0(&local_110,1,local_res20,1,*(undefined1 *)(param_1 + 0x22e));
  FUN_181348300(&local_110);
  if (*(int *)(param_1 + 0x20) - 4U < 4) {
    local_140[2] = 0;
    local_140[3] = 0;
    local_140[4] = 0;
    puStack_118 = (undefined8 *)0x0;
    FUN_18049c4e0(&local_180,"Use circular dragging");
    FUN_1812344e0(local_178,&local_180);
    puVar7 = (uint *)(local_180 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    FUN_1813486a0(local_140 + 2,2,local_178,1,*(int *)(param_1 + 0x20) == 4);
    FUN_18049c4e0(&local_170,"Use left-right dragging");
    FUN_1812344e0(local_168,&local_170);
    puVar7 = (uint *)(local_170 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    FUN_1813486a0(local_140 + 2,3,local_168,1,*(int *)(param_1 + 0x20) == 5);
    FUN_18049c4e0(&local_160,"Use up-down dragging");
    FUN_1812344e0(local_158,&local_160);
    puVar7 = (uint *)(local_160 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    FUN_1813486a0(local_140 + 2,4,local_158,1,*(int *)(param_1 + 0x20) == 6);
    FUN_18049c4e0(&local_150,"Use left-right/up-down dragging");
    FUN_1812344e0(local_148,&local_150);
    puVar7 = (uint *)(local_150 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    FUN_1813486a0(local_140 + 2,5,local_148,1,*(int *)(param_1 + 0x20) == 7);
    local_1b0 = (undefined1 **)&local_1a0;
    FUN_18051b380(&local_1a0,local_140 + 2);
    local_188 = puStack_118;
    if (puStack_118 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puStack_118 + 1) = *(int *)(puStack_118 + 1) + 1;
      UNLOCK();
    }
    local_1a8 = &local_1a0;
    FUN_18049c4e0(local_140,"Rotary mode");
    FUN_1812344e0(&local_res8,local_140);
    puVar7 = (uint *)(local_140[0] + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_1b0 = &local_res8;
    local_140[1] = 0;
    local_f0 = local_1a0;
    local_e8 = uStack_198;
    local_e0 = local_190;
    local_1a0 = 0;
    uStack_198 = 0;
    local_190 = 0;
    local_d8 = local_188;
    local_188 = (undefined8 *)0x0;
    local_1b8 = local_res8;
    local_res8 = &DAT_1821dbf98;
    FUN_181348420(&local_110,&local_1b8,&local_f0);
    puVar7 = (uint *)(local_res8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (local_188 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_188 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_188)(local_188,1);
      }
    }
    FUN_18051c930(&local_1a0);
    if (puStack_118 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puStack_118 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*puStack_118)(puStack_118,1);
      }
    }
    FUN_18051c930(local_140 + 2);
  }
  uVar5 = FUN_181348060(local_78);
  FUN_1804de690(&local_res10,*(undefined8 *)(param_1 + 0x18));
  puVar4 = local_res10;
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  local_c8 = std::_Func_impl_no_alloc<<lambda_12130bedb08cee781cf1a1ba365df8e6>,void,int>::vftable;
  local_c0 = FUN_1805030d0;
  local_b8 = local_res10;
  local_90 = &local_c8;
  uVar6 = FUN_181347bc0(&local_c8);
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  FUN_1812f0230(&local_110,uVar5,uVar6);
  if (local_58 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_58 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_58)(local_58,1);
    }
  }
  if (puStack_f8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puStack_f8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puStack_f8)(puStack_f8,1);
    }
  }
  FUN_18051c930(&local_110);
  return;
}



############ FUN_ 180509db0 size=358 ############

undefined8 * FUN_180509db0(undefined8 *param_1,longlong param_2,undefined4 param_3)

{
  int iVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  int *piVar6;
  int iVar7;
  longlong lVar8;
  
  puVar5 = param_1;
  FUN_1812effb0(param_1,1);
  *puVar5 = juce::Toolbar::MissingItemsComponent::vftable;
  puVar5[0x16] = juce::Toolbar::MissingItemsComponent::vftable;
  FUN_1804de690(puVar5 + 0x1a,param_2);
  *(undefined4 *)(param_1 + 0x1b) = param_3;
  puVar5 = param_1 + 0x1c;
  *puVar5 = 0;
  param_1[0x1d] = 0;
  iVar7 = *(int *)(param_2 + 0xec) + -1;
  if (-1 < iVar7) {
    lVar8 = (longlong)iVar7 * 8;
    do {
      plVar2 = *(longlong **)(lVar8 + *(longlong *)(param_2 + 0xe0));
      lVar4 = __RTDynamicCast(plVar2,0,&juce::ToolbarItemComponent::RTTI_Type_Descriptor,
                              &juce::Toolbar::Spacer::RTTI_Type_Descriptor,0);
      if ((lVar4 == 0) && ((*(byte *)(plVar2 + 0x15) >> 1 & 1) == 0)) {
        iVar1 = *(int *)((longlong)param_1 + 0xec);
        iVar3 = iVar1 + 1;
        if (*(int *)(param_1 + 0x1d) < iVar3) {
          if (iVar3 < 0) {
            iVar3 = iVar1 + 2;
          }
          FUN_1804af790(puVar5,iVar1 + 9 + (iVar3 >> 1) & 0xfffffff8);
        }
        if (*(int *)((longlong)param_1 + 0xec) == 0) {
          piVar6 = (int *)*puVar5;
        }
        else {
          memmove((void *)((longlong)*puVar5 + 4),(void *)*puVar5,
                  (longlong)*(int *)((longlong)param_1 + 0xec) << 2);
          piVar6 = (int *)*puVar5;
        }
        *piVar6 = iVar7;
        *(int *)((longlong)param_1 + 0xec) = *(int *)((longlong)param_1 + 0xec) + 1;
        (**(code **)(*plVar2 + 0x58))(plVar2,CONCAT71((int7)((ulonglong)piVar6 >> 8),1));
        FUN_181343cc0(param_1,plVar2,0);
      }
      lVar8 = lVar8 + -8;
      iVar7 = iVar7 + -1;
    } while (-1 < iVar7);
  }
  FUN_18050a130(param_1);
  return param_1;
}



############ FUN_ 18050ecb0 size=563 ############

void FUN_18050ecb0(longlong *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined1 auVar3 [16];
  char cVar4;
  undefined8 *puVar5;
  longlong lVar6;
  float fVar7;
  undefined8 *local_res8 [2];
  double local_res18;
  double local_res20;
  undefined4 local_78;
  undefined4 local_70;
  undefined1 local_58 [16];
  undefined1 local_48 [16];
  undefined8 local_38;
  undefined8 uStack_30;
  
  (**(code **)(*param_1 + 0x60))(param_1,0);
  cVar4 = (**(code **)(*param_1 + 0x78))(param_1);
  if (cVar4 != param_2) {
    if ((longlong *)param_1[5] != (longlong *)0x0) {
      (**(code **)(*(longlong *)param_1[5] + 0x10))();
    }
    *(char *)(param_1 + 0x16) = param_2;
    FUN_1804de690(local_res8,param_1[1]);
    if ((char)param_1[0x16] == '\0') {
      auVar3 = *(undefined1 (*) [16])((longlong)param_1 + 0x14);
      local_58 = auVar3;
      if ((*(uint *)(param_1 + 2) >> 3 & 1) != 0) {
        ShowWindow((HWND)param_1[0x11],1);
      }
      if ((0 < auVar3._8_4_) && (0 < auVar3._12_4_)) {
        fVar7 = (float)(**(code **)(*(longlong *)param_1[1] + 0x80))();
        if (fVar7 == DAT_1824c3ea4) {
          local_48 = auVar3;
          puVar5 = (undefined8 *)local_48;
        }
        else {
          local_res20 = (double)((float)(int)local_58._4_4_ * fVar7) + DAT_1824c4520;
          local_res18 = (double)((float)(int)local_58._0_4_ * fVar7) + DAT_1824c4520;
          local_58._4_4_ = local_res20._0_4_;
          local_58._0_4_ = local_res18._0_4_;
          local_78 = SUB84((double)((float)auVar3._8_4_ * fVar7) + DAT_1824c4520,0);
          local_58._8_4_ = local_78;
          local_70 = SUB84((double)((float)auVar3._12_4_ * fVar7) + DAT_1824c4520,0);
          local_58._12_4_ = local_70;
          puVar5 = (undefined8 *)local_58;
        }
        local_38 = *puVar5;
        uStack_30 = puVar5[1];
        (**(code **)(*param_1 + 0x30))(param_1,&local_38,0);
      }
    }
    else if ((*(uint *)(param_1 + 2) >> 3 & 1) == 0) {
      SendMessageW((HWND)param_1[0x11],0x1a,0,0);
    }
    else {
      ShowWindow((HWND)param_1[0x11],3);
    }
    puVar5 = local_res8[0];
    if (local_res8[0] == (undefined8 *)0x0) {
      lVar6 = 0;
    }
    else {
      lVar6 = local_res8[0][2];
    }
    if (lVar6 != 0) {
      FUN_1812d1d10(param_1);
    }
    if ((longlong *)param_1[5] != (longlong *)0x0) {
      (**(code **)(*(longlong *)param_1[5] + 0x18))();
    }
    if (puVar5 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar5 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8[0])(local_res8[0],1);
      }
    }
  }
  return;
}



############ FUN_ 1812d1d10 size=782 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812d1d10(longlong *param_1)

{
  longlong *plVar1;
  undefined8 *puVar2;
  code *pcVar3;
  undefined8 uVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  int *piVar9;
  undefined8 uVar10;
  longlong lVar11;
  char cVar12;
  char cVar13;
  char cVar14;
  float fVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  undefined1 auStack_188 [32];
  undefined8 *local_168 [2];
  int local_158;
  int iStack_154;
  int iStack_150;
  int iStack_14c;
  int local_148;
  undefined4 local_144;
  undefined4 local_140;
  undefined4 local_13c;
  double local_120;
  double local_118;
  double local_110;
  double local_108;
  int local_100;
  int iStack_fc;
  int iStack_f8;
  int iStack_f4;
  undefined8 local_f0;
  undefined8 uStack_e8;
  undefined8 local_e0;
  int local_d8;
  int iStack_d4;
  int iStack_d0;
  int iStack_cc;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined8 local_a0;
  undefined1 local_98 [16];
  undefined1 local_88 [16];
  undefined1 local_78 [24];
  WINDOWPLACEMENT local_60;
  ulonglong local_30;
  
  local_e0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_188;
  if ((undefined **)*param_1 == juce::HWNDComponentPeer::vftable) {
    local_60.length = 0x2c;
    GetWindowPlacement((HWND)param_1[0x11],&local_60);
    cVar14 = local_60.showCmd == 2;
  }
  else {
    cVar14 = (*(code *)((undefined **)*param_1)[0xd])(param_1);
  }
  if (((*(byte *)(param_1[1] + 0xa8) & 1) != 0) && (cVar14 == '\0')) {
    FUN_1804de690(local_168);
    piVar9 = (int *)(**(code **)(*param_1 + 0x38))(param_1,local_98);
    iVar16 = *piVar9;
    iVar17 = piVar9[1];
    iVar18 = piVar9[2];
    iVar19 = piVar9[3];
    plVar1 = (longlong *)param_1[1];
    puVar2 = (undefined8 *)plVar1[7];
    if (puVar2 != (undefined8 *)0x0) {
      uVar10 = *puVar2;
      uVar4 = puVar2[1];
      local_b8 = puVar2[2];
      local_c8._0_4_ = (undefined4)uVar10;
      local_c8._4_4_ = (undefined4)((ulonglong)uVar10 >> 0x20);
      uStack_c0._0_4_ = (undefined4)uVar4;
      uStack_c0._4_4_ = (undefined4)((ulonglong)uVar4 >> 0x20);
      local_b0 = (undefined4)local_c8;
      uStack_ac = local_c8._4_4_;
      uStack_a8 = (undefined4)uStack_c0;
      uStack_a4 = uStack_c0._4_4_;
      local_158 = iVar16;
      iStack_154 = iVar17;
      iStack_150 = iVar18;
      iStack_14c = iVar19;
      local_c8 = uVar10;
      uStack_c0 = uVar4;
      local_a0 = local_b8;
      uVar10 = FUN_1812a04f0(&local_b0,local_78);
      piVar9 = (int *)FUN_1804b1290(&local_158,local_88,uVar10);
      iVar16 = *piVar9;
      iVar17 = piVar9[1];
      iVar18 = piVar9[2];
      iVar19 = piVar9[3];
    }
    local_158 = iVar16;
    iStack_154 = iVar17;
    iStack_150 = iVar18;
    iStack_14c = iVar19;
    fVar15 = (float)(**(code **)(*plVar1 + 0x80))(plVar1);
    puVar2 = local_168[0];
    if (fVar15 == DAT_1824c3ea4) {
      local_d8 = iVar16;
      iStack_d4 = iVar17;
      iStack_d0 = iVar18;
      iStack_cc = iVar19;
      piVar9 = &local_d8;
    }
    else {
      local_108 = (double)((float)iStack_14c / fVar15) + DAT_1824c4520;
      dVar8 = local_108;
      local_110 = (double)((float)iStack_150 / fVar15) + DAT_1824c4520;
      dVar7 = local_110;
      local_118 = (double)((float)iStack_154 / fVar15) + DAT_1824c4520;
      dVar6 = local_118;
      local_120 = (double)((float)local_158 / fVar15) + DAT_1824c4520;
      dVar5 = local_120;
      local_148 = local_120._0_4_;
      local_144 = local_118._0_4_;
      local_140 = local_110._0_4_;
      local_13c = local_108._0_4_;
      piVar9 = &local_148;
      local_120 = dVar5;
      local_118 = dVar6;
      local_110 = dVar7;
      local_108 = dVar8;
    }
    local_f0 = *(undefined8 *)piVar9;
    uStack_e8 = *(undefined8 *)(piVar9 + 2);
    lVar11 = param_1[1];
    local_100 = *(int *)(lVar11 + 0x20);
    iStack_fc = *(int *)(lVar11 + 0x24);
    iStack_f8 = *(int *)(lVar11 + 0x28);
    iStack_f4 = *(int *)(lVar11 + 0x2c);
    if ((*(int *)(lVar11 + 0x20) == (int)local_f0) &&
       (*(int *)(lVar11 + 0x24) == (int)((ulonglong)local_f0 >> 0x20))) {
      cVar13 = '\0';
    }
    else {
      cVar13 = '\x01';
    }
    if ((*(int *)(lVar11 + 0x28) == (int)uStack_e8) &&
       (*(int *)(lVar11 + 0x2c) == (int)((ulonglong)uStack_e8 >> 0x20))) {
      cVar12 = '\0';
    }
    else {
      cVar12 = '\x01';
    }
    if ((cVar13 != '\0') || (cVar12 != '\0')) {
      iVar16 = piVar9[1];
      iVar17 = piVar9[2];
      iVar18 = piVar9[3];
      *(int *)(lVar11 + 0x20) = *piVar9;
      *(int *)(lVar11 + 0x24) = iVar16;
      *(int *)(lVar11 + 0x28) = iVar17;
      *(int *)(lVar11 + 0x2c) = iVar18;
      if (cVar12 != '\0') {
        FUN_18134bdf0(param_1[1]);
      }
      FUN_181344840(param_1[1],cVar13,cVar12);
      if (puVar2 == (undefined8 *)0x0) {
        lVar11 = 0;
      }
      else {
        lVar11 = puVar2[2];
      }
      if (lVar11 == 0) {
        if (puVar2 == (undefined8 *)0x0) {
        }
        LOCK();
        piVar9 = (int *)(puVar2 + 1);
        iVar16 = *piVar9;
        *piVar9 = *piVar9 + -1;
        UNLOCK();
        if (iVar16 != 1) {
        }
        (**(code **)*local_168[0])(local_168[0],1);
      }
    }
    if (puVar2 != (undefined8 *)0x0) {
      LOCK();
      piVar9 = (int *)(puVar2 + 1);
      iVar16 = *piVar9;
      *piVar9 = *piVar9 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_168[0])(local_168[0],1);
      }
    }
  }
  if (*(char *)((longlong)param_1 + 0x5c) != cVar14) {
    *(char *)((longlong)param_1 + 0x5c) = cVar14;
    pcVar3 = *(code **)(*(longlong *)param_1[1] + 0x78);
    if (pcVar3 != .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__) {
      (*pcVar3)((longlong *)param_1[1],cVar14);
    }
    FUN_1813452b0(param_1[1]);
  }
  cVar14 = (**(code **)(*param_1 + 0x78))(param_1);
  if (cVar14 == '\0') {
    uVar10 = *(undefined8 *)(param_1[1] + 0x28);
    *(undefined8 *)((longlong)param_1 + 0x14) = *(undefined8 *)(param_1[1] + 0x20);
    *(undefined8 *)((longlong)param_1 + 0x1c) = uVar10;
  }
}



############ FUN_ 18050f910 size=204 ############

void FUN_18050f910(longlong param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  BOOL BVar4;
  longlong lVar5;
  undefined8 *local_res10;
  tagMSG local_40;
  
  if ((*(byte *)(*(longlong *)(param_1 + 8) + 0xa8) >> 1 & 1) != 0) {
    FUN_1804de690(&local_res10);
    puVar3 = local_res10;
    if (((*(byte *)(*(longlong *)(param_1 + 8) + 0xa8) >> 2 & 1) == 0) ||
       (BVar4 = PeekMessageW(&local_40,*(HWND *)(param_1 + 0x88),0xf,0xf,1), BVar4 != 0)) {
      if (puVar3 == (undefined8 *)0x0) {
        lVar5 = 0;
      }
      else {
        lVar5 = puVar3[2];
      }
      if (lVar5 != 0) {
        FUN_1805113b0(param_1);
      }
    }
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res10)(local_res10,1);
      }
    }
    return;
  }
  return;
}



############ FUN_ 18051ead0 size=408 ############

void FUN_18051ead0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  char cVar4;
  longlong lVar5;
  longlong *local_40;
  undefined8 *local_38 [4];
  
  if (*param_2 == 0) {
    lVar5 = 0;
  }
  else {
    lVar5 = *(longlong *)(*param_2 + 0x10);
  }
  if (lVar5 != 0) {
    plVar2 = *(longlong **)(param_1 + 0x70);
    if (plVar2 != (longlong *)0x0) {
      iVar3 = *(int *)((longlong)plVar2 + 0xc);
      while (iVar3 = iVar3 + -1, -1 < iVar3) {
        FUN_180525b78(*(undefined8 *)(*plVar2 + (longlong)iVar3 * 8),param_4,param_5);
        if (*param_2 == 0) {
          lVar5 = 0;
        }
        else {
          lVar5 = *(longlong *)(*param_2 + 0x10);
        }
        if (lVar5 == 0) {
          return;
        }
        if (*(int *)((longlong)plVar2 + 0xc) < iVar3) {
          iVar3 = *(int *)((longlong)plVar2 + 0xc);
        }
      }
    }
    for (lVar5 = *(longlong *)(param_1 + 0x18); lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
      plVar2 = *(longlong **)(lVar5 + 0x70);
      if ((plVar2 != (longlong *)0x0) && (0 < (int)plVar2[2])) {
        local_40 = param_2;
        FUN_1804de690(local_38,lVar5);
        iVar3 = (int)plVar2[2];
        while (iVar3 = iVar3 + -1, -1 < iVar3) {
          FUN_180525b78(*(undefined8 *)(*plVar2 + (longlong)iVar3 * 8),param_4,param_5);
          cVar4 = FUN_1804e4a60(&local_40);
          if (cVar4 != '\0') {
            if (local_38[0] == (undefined8 *)0x0) {
              return;
            }
            LOCK();
            piVar1 = (int *)(local_38[0] + 1);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 != 1) {
              return;
            }
            (**(code **)*local_38[0])(local_38[0],1);
            return;
          }
          if ((int)plVar2[2] < iVar3) {
            iVar3 = (int)plVar2[2];
          }
        }
        if (local_38[0] != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_38[0] + 1);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)*local_38[0])(local_38[0],1);
          }
        }
      }
    }
  }
  return;
}



############ FUN_ 1805170d0 size=492 ############

void FUN_1805170d0(undefined8 *param_1,undefined8 param_2,uint param_3,undefined8 param_4,
                  undefined8 param_5,longlong *param_6,longlong *param_7)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  longlong local_68;
  undefined1 local_60 [8];
  undefined8 local_58;
  undefined8 *local_50;
  
  local_58 = 0xfffffffffffffffe;
  *param_1 = juce::ReferenceCountedObject::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  FUN_18049c4e0(&local_68,"Native Win32 FileChooser");
  FUN_18122b770(param_1 + 2,&local_68);
  _Memory = (uint *)(local_68 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::Win32NativeFileChooser::vftable;
  param_1[2] = juce::Win32NativeFileChooser::vftable;
  param_1[0x42] = 0;
  param_1[0x43] = 0;
  local_50 = param_1 + 0x44;
  FUN_1804de690(local_50,param_2);
  lVar2 = *param_6;
  param_1[0x45] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar2 = *param_7;
  param_1[0x46] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x47] = 0;
  param_1[0x48] = &DAT_1821dbf98;
  param_1[0x49] = &DAT_1821dbf98;
  param_1[0x4a] = &DAT_1821dbf98;
  *(undefined1 *)(param_1 + 0x4b) = 0;
  _Mtx_init_in_situ(param_1 + 0x4c,2);
  _Cnd_init_in_situ(param_1 + 0x56);
  *(undefined1 *)(param_1 + 0x5f) = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x60));
  *(byte *)((longlong)param_1 + 0x32c) = (byte)(param_3 >> 3) & 1;
  *(byte *)((longlong)param_1 + 0x32d) = (byte)(param_3 >> 2) & 1;
  *(byte *)((longlong)param_1 + 0x32e) = (byte)(param_3 >> 1) & 1;
  *(byte *)((longlong)param_1 + 0x32f) = (byte)(param_3 >> 7) & 1;
  *(byte *)(param_1 + 0x66) = (byte)(param_3 >> 4) & 1;
  param_1[0x67] = 0;
  param_1[0x68] = 0;
  param_1[0x69] = 0;
  *(undefined4 *)(param_1 + 0x6a) = 0;
  FUN_181241230(param_5,local_60);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x67]);
}



############ FUN_ 180518d60 size=706 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180518d60(longlong param_1,HWND param_2)

{
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar2;
  int iVar3;
  DWORD DVar4;
  longlong *plVar5;
  longlong lVar6;
  undefined8 uVar7;
  uint *puVar8;
  undefined1 auStack_4f8 [32];
  undefined4 local_4d8;
  undefined8 *local_4c8;
  longlong local_4c0;
  longlong local_4b8;
  longlong local_4b0;
  longlong local_4a8 [2];
  undefined8 *local_498;
  undefined1 *local_490;
  undefined8 local_488;
  LPCRITICAL_SECTION local_480;
  undefined **local_478;
  undefined8 *local_470;
  longlong local_468;
  undefined ***local_440;
  undefined1 local_438 [1040];
  ulonglong local_28;
  
  local_488 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_4f8;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x300);
  local_480 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  if ((*(longlong *)(param_1 + 0x238) != 0) && (*(int *)(param_1 + 0x350) == 0)) {
    if (*(int *)(*(longlong *)(param_1 + 0x238) + 0x4c) == 0) {
      uVar7 = 0;
    }
    else {
      uVar7 = **(undefined8 **)(*(longlong *)(param_1 + 0x238) + 0x40);
    }
    local_4d8 = 0;
    plVar5 = (longlong *)
             __RTDynamicCast(uVar7,0,&juce::Component::RTTI_Type_Descriptor,
                             &juce::FilePreviewComponent::RTTI_Type_Descriptor);
    if (plVar5 != (longlong *)0x0) {
      memset(local_438,0,0x410);
      SendMessageW(param_2,0x465,0x104,(LPARAM)local_438);
      lVar6 = FUN_1812a7550();
      DVar4 = GetCurrentThreadId();
      if ((ulonglong)DVar4 == *(ulonglong *)(lVar6 + 0x10)) {
        FUN_18049c800(&local_4b8,local_438);
        FUN_181241890(&local_4c0,&local_4b8);
        (**(code **)(*plVar5 + 0x158))(plVar5,&local_4c0);
        puVar8 = (uint *)(local_4c0 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_4b8 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
      }
      else {
        FUN_1804de690(&local_4c8,plVar5);
        FUN_18049c800(&local_4b0,local_438);
        FUN_181241890(local_4a8,&local_4b0);
        puVar8 = (uint *)(local_4b0 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        local_498 = local_4c8;
        if (local_4c8 != (undefined8 *)0x0) {
          LOCK();
          *(int *)(local_4c8 + 1) = *(int *)(local_4c8 + 1) + 1;
          UNLOCK();
        }
        if ((*(uint *)(local_4a8[0] + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_4a8[0] + -0x10) = *(int *)(local_4a8[0] + -0x10) + 1;
          UNLOCK();
        }
        local_478 = std::_Func_impl_no_alloc<<lambda_e056cdc39985cb289dda366ec637a5f2>,void>::
                    vftable;
        local_470 = local_4c8;
        if (local_4c8 != (undefined8 *)0x0) {
          LOCK();
          *(int *)(local_4c8 + 1) = *(int *)(local_4c8 + 1) + 1;
          UNLOCK();
        }
        local_468 = local_4a8[0];
        local_490 = &DAT_1821dbf98;
        local_440 = &local_478;
        FUN_1805192f0(&local_498);
        FUN_1812a7460(&local_478);
        if ((*(uint *)(local_4a8[0] + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar1 = (int *)(local_4a8[0] + -0x10);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)(local_4a8[0] + -0x10));
          }
        }
        if (local_4c8 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_4c8 + 1);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)*local_4c8)(local_4c8,1);
          }
        }
      }
    }
  }
  LeaveCriticalSection(lpCriticalSection);
}



############ FUN_ 180519560 size=352 ############

void FUN_180519560(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined ***pppuVar4;
  undefined8 uVar5;
  undefined8 *local_res8 [2];
  undefined **local_60;
  undefined8 *local_58;
  undefined ***local_28;
  
  FUN_1804de690(local_res8,param_1 + -0xb0,param_3,param_4,0xfffffffffffffffe);
  if (local_res8[0] != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res8[0] + 1) = *(int *)(local_res8[0] + 1) + 1;
    UNLOCK();
  }
  local_60 = std::_Func_impl_no_alloc<<lambda_c421c67f8c8865192bd19a3d6247c5ec>,void,int>::vftable;
  local_58 = local_res8[0];
  local_28 = &local_60;
  pppuVar4 = &local_60;
  if (local_res8[0] != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res8[0] + 1) = *(int *)(local_res8[0] + 1) + 1;
    UNLOCK();
    LOCK();
    piVar1 = (int *)(local_res8[0] + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    pppuVar4 = local_28;
    if (iVar2 == 1) {
      (**(code **)*local_res8[0])(local_res8[0],1);
      pppuVar4 = local_28;
    }
  }
  local_28 = pppuVar4;
  uVar5 = FUN_181347bc0(&local_60);
  FUN_18134ab30(param_1 + -0xb0,1,uVar5,0);
  lVar3 = *(longlong *)(param_1 + 0x10);
  FUN_18051c520(lVar3 + 0x210);
  if (*(int *)(lVar3 + 0x218) == 0) {
    *(undefined4 *)(lVar3 + 0x218) = 0;
    LOCK();
    *(undefined8 *)(lVar3 + 0x348) = 0;
    UNLOCK();
    LOCK();
    *(undefined1 *)(lVar3 + 0x2f8) = 0;
    UNLOCK();
    FUN_18122b350(lVar3 + 0x10);
    FUN_181215c90(lVar3 + 600,0xffffffff);
    if (local_res8[0] != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8[0] + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8[0])(local_res8[0],1);
      }
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(lVar3 + 0x210));
}



############ FUN_ 1813258a0 size=688 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813258a0(longlong param_1,undefined4 param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  int iVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  uint uVar7;
  uint *puVar8;
  undefined1 auStack_148 [64];
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  undefined1 local_e8 [8];
  longlong local_e0 [2];
  undefined4 *local_d0;
  undefined1 local_b8 [44];
  int local_8c;
  longlong *local_40;
  ulonglong local_38;
  
  local_e0[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_148;
  FUN_18049c4e0(&local_f0,&DAT_1821e2cbc);
  uVar4 = FUN_181249970(param_1 + 8,param_2);
  FUN_181241890(&local_f8,uVar4);
  FUN_18049c4e0(&local_108,"Change folder...");
  lVar2 = DAT_1826739f8;
  local_d0 = &DAT_182673984;
  do {
    LOCK();
    uVar7 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar7 != 0);
  if (DAT_1826739f8 == 0) {
    local_100 = local_108;
    uVar7 = *(uint *)(local_108 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_108,*(undefined1 *)(DAT_1826739f8 + 0x38),0);
      if (iVar3 < 0) {
        FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_100,&local_108,&local_108);
        goto LAB_1813259d1;
      }
    }
    iVar3 = FUN_1812498b0(lVar2 + 0x18,local_108,*(undefined1 *)(lVar2 + 0x38),0);
    if (iVar3 < 0) {
      local_100 = local_108;
      uVar7 = *(uint *)(local_108 + -0x10);
    }
    else {
      plVar5 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar3);
      local_100 = *plVar5;
      uVar7 = *(uint *)(local_100 + -0x10);
    }
  }
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_100 + -0x10) = *(int *)(local_100 + -0x10) + 1;
    UNLOCK();
  }
LAB_1813259d1:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar8 = (uint *)(local_108 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  FUN_181329f30(local_b8,&local_100,&local_f8,&local_f0);
  puVar8 = (uint *)(local_100 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_f8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_f0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  FUN_1804de690(local_e8,DAT_182673708);
  plVar6 = (longlong *)FUN_181329c90(local_b8,9);
  plVar5 = local_40;
  if (local_40 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)*local_40;
    local_40 = plVar6;
    (*(code *)*puVar1)(plVar5,1);
    plVar6 = local_40;
  }
  local_40 = plVar6;
  (**(code **)(*local_40 + 0x10))();
  FUN_1804e4a90(local_e8);
  if (0 < local_8c) {
    FUN_180488fc0(param_1 + 8,param_2);
    uVar4 = FUN_181329930(local_b8,local_e0);
    FUN_18123e5f0(param_1 + 8,uVar4,param_2);
    puVar8 = (uint *)(local_e0[0] + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    FUN_181325e40(param_1 + -200);
  }
  FUN_181329e40(local_b8);
}



############ FUN_ 1805596e0 size=596 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805596e0(undefined8 param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  uint *puVar7;
  undefined8 *local_res18;
  longlong local_res20;
  undefined1 local_148 [8];
  longlong local_140;
  undefined1 local_138 [16];
  undefined8 local_128;
  undefined8 uStack_120;
  undefined8 local_118;
  undefined8 *puStack_110;
  undefined8 local_108;
  undefined1 local_100 [8];
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined4 local_c0;
  undefined1 local_bc;
  undefined4 local_b8;
  undefined **local_b0;
  code *local_a8;
  undefined8 *local_a0;
  undefined ***local_78;
  undefined1 local_60 [32];
  undefined8 *local_40;
  
  local_108 = 0xfffffffffffffffe;
  local_128 = 0;
  uStack_120 = 0;
  local_118 = 0;
  puStack_110 = (undefined8 *)0x0;
  FUN_18049c4e0(&local_res20,"Use this swatch as the current colour");
  FUN_1812344e0(local_148,&local_res20);
  puVar7 = (uint *)(local_res20 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_1813486a0(&local_128,1,local_148,1,0);
  FUN_181348300(&local_128);
  FUN_18049c4e0(&local_140,"Set this swatch to the current colour");
  FUN_1812344e0(local_138,&local_140);
  puVar7 = (uint *)(local_140 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_1813486a0(&local_128,2,local_138,1,0);
  local_f8 = 0;
  uStack_f0 = 0;
  local_e8 = 0;
  uStack_e0 = 0;
  local_d8 = 0;
  local_d0 = _DAT_1824c47c0;
  uStack_c8 = _UNK_1824c47c8;
  local_c0 = 0;
  local_bc = 0;
  local_b8 = 1;
  puVar4 = (undefined8 *)FUN_18133c1f0(local_100);
  local_f8 = *puVar4;
  uVar5 = FUN_1812f0830(&local_f8,local_60,param_1);
  FUN_1804de690(&local_res18,param_1);
  puVar4 = local_res18;
  if (local_res18 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res18 + 1) = *(int *)(local_res18 + 1) + 1;
    UNLOCK();
  }
  local_b0 = std::_Func_impl_no_alloc<<lambda_751036b3556278e17c2db0572440f49d>,void,int>::vftable;
  local_a8 = FUN_180559940;
  local_a0 = local_res18;
  local_78 = &local_b0;
  uVar6 = FUN_181347bc0(&local_b0);
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res18)(local_res18,1);
    }
  }
  FUN_1812f0230(&local_128,uVar5,uVar6);
  if (local_40 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_40 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_40)(local_40,1);
    }
  }
  if (puStack_110 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puStack_110 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puStack_110)(puStack_110,1);
    }
  }
  FUN_18051c930(&local_128);
  return;
}



############ FUN_ 1812c36c0 size=230 ############

longlong FUN_1812c36c0(longlong *param_1)

{
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined8 *local_res8;
  LPCRITICAL_SECTION local_res10;
  longlong local_res18;
  
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x14);
  local_res10 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  lVar4 = param_1[5];
  if (lVar4 == 0) {
    lVar3 = 0;
  }
  else {
    lVar3 = *(longlong *)(lVar4 + 0x10);
  }
  if (lVar3 == 0) {
    lVar4 = (**(code **)(*param_1 + 0xa8))(param_1);
    if (lVar4 != 0) {
      plVar5 = (longlong *)FUN_1804de690(&local_res8,lVar4);
      local_res18 = param_1[5];
      param_1[5] = *plVar5;
      *plVar5 = local_res18;
      if (local_res8 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_res8 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
    }
  }
  else {
    if (lVar4 == 0) {
      uVar6 = 0;
    }
    else {
      uVar6 = *(undefined8 *)(lVar4 + 0x10);
    }
    lVar4 = __RTDynamicCast(uVar6,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::AudioProcessorEditor::RTTI_Type_Descriptor,0);
  }
  LeaveCriticalSection(lpCriticalSection);
  return lVar4;
}



############ FUN_ 1812d7490 size=220 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812d7490(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  undefined4 uStack_54;
  undefined8 local_50;
  undefined **local_40;
  undefined1 local_38 [8];
  undefined8 *local_30;
  undefined8 local_28;
  undefined **local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_50 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_20 = &PTR_vftable_18262b558;
  local_40 = &PTR_vftable_18262b558;
  local_58 = param_3;
  uStack_54 = param_4;
  (**(code **)(PTR_vftable_18262b558 + 0xb8))(&PTR_vftable_18262b558,local_38,local_18);
  FUN_1804de690(&local_30,param_1 + -0xc0);
  local_28 = CONCAT44(uStack_54,local_58);
  FUN_1812d77b0(param_1 + -0xc0,param_2,&local_40);
  if (local_30 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_30 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_30)(local_30,1);
    }
  }
  (**(code **)(*local_40 + 0xb0))(local_40,local_38);
  (**(code **)(*local_20 + 0xb0))(local_20,local_18);
}



############ FUN_ 1812d75a0 size=220 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812d75a0(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  undefined4 uStack_54;
  undefined8 local_50;
  undefined **local_40;
  undefined1 local_38 [8];
  undefined8 *local_30;
  undefined8 local_28;
  undefined **local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_50 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_20 = &PTR_vftable_18262b558;
  local_40 = &PTR_vftable_18262b558;
  local_58 = param_3;
  uStack_54 = param_4;
  (**(code **)(PTR_vftable_18262b558 + 0xb8))(&PTR_vftable_18262b558,local_38,local_18);
  FUN_1804de690(&local_30,param_1 + -0xc0);
  local_28 = CONCAT44(uStack_54,local_58);
  FUN_1812d78b0(param_1 + -0xc0,param_2,&local_40);
  if (local_30 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_30 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_30)(local_30,1);
    }
  }
  (**(code **)(*local_40 + 0xb0))(local_40,local_38);
  (**(code **)(*local_20 + 0xb0))(local_20,local_18);
}



############ FUN_ 1812d7690 size=245 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812d7690(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  undefined1 auStack_88 [32];
  undefined4 local_68;
  undefined4 uStack_64;
  undefined8 local_60;
  undefined **local_50;
  undefined1 local_48 [8];
  undefined8 *local_40;
  undefined8 local_38;
  undefined **local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_60 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  if (*(code **)(*param_1 + 0x18) == FUN_1812d75a0) {
    local_30 = &PTR_vftable_18262b558;
    local_50 = &PTR_vftable_18262b558;
    local_68 = param_3;
    uStack_64 = param_4;
    (**(code **)(PTR_vftable_18262b558 + 0xb8))(&PTR_vftable_18262b558,local_48,local_28);
    FUN_1804de690(&local_40,param_1 + -0x18);
    local_38 = CONCAT44(uStack_64,local_68);
    FUN_1812d78b0(param_1 + -0x18,param_2,&local_50);
    if (local_40 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_40 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_40)(local_40,1);
      }
    }
    (**(code **)(*local_50 + 0xb0))(local_50,local_48);
    (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  }
  else {
    (**(code **)(*param_1 + 0x18))();
  }
}



############ FUN_ 1812dd150 size=711 ############

void FUN_1812dd150(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  undefined8 *puVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res18 [2];
  
  FUN_1804de690(local_res18,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar2 = local_res18[0];
  if (param_2 == 0x10003001) {
    iVar6 = *(int *)(param_1 + 0x30c);
    bVar7 = local_res18[0] != (undefined8 *)0x0;
    lVar5 = 0;
    while( true ) {
      lVar3 = lVar5;
      if (bVar7) {
        lVar3 = puVar2[2];
      }
      if ((lVar3 == 0) || (iVar6 < 1)) break;
      iVar6 = iVar6 + -1;
      if ((*(int *)(param_1 + 0x30c) <= iVar6) &&
         (iVar6 = *(int *)(param_1 + 0x30c) + -1, iVar6 < 0)) break;
      plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x300) + (longlong)iVar6 * 8);
      (**(code **)(*plVar4 + 8))(plVar4,param_1);
    }
    if (bVar7) {
      lVar5 = puVar2[2];
    }
    if ((lVar5 == 0) || (*(longlong *)(param_1 + 0x100) == 0)) goto LAB_1812dd3e5;
    plVar4 = *(longlong **)(param_1 + 0x100);
    if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
  }
  else if (param_2 == 0x10003002) {
    iVar6 = *(int *)(param_1 + 0x30c);
    bVar7 = local_res18[0] != (undefined8 *)0x0;
    lVar5 = 0;
    while( true ) {
      lVar3 = lVar5;
      if (bVar7) {
        lVar3 = puVar2[2];
      }
      if ((lVar3 == 0) || (iVar6 < 1)) break;
      iVar6 = iVar6 + -1;
      if ((*(int *)(param_1 + 0x30c) <= iVar6) &&
         (iVar6 = *(int *)(param_1 + 0x30c) + -1, iVar6 < 0)) break;
      plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x300) + (longlong)iVar6 * 8);
      (**(code **)(*plVar4 + 0x10))(plVar4,param_1);
    }
    if (bVar7) {
      lVar5 = puVar2[2];
    }
    if ((lVar5 == 0) || (*(longlong *)(param_1 + 0x140) == 0)) goto LAB_1812dd3e5;
    plVar4 = *(longlong **)(param_1 + 0x140);
    if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
  }
  else if (param_2 == 0x10003003) {
    iVar6 = *(int *)(param_1 + 0x30c);
    bVar7 = local_res18[0] != (undefined8 *)0x0;
    lVar5 = 0;
    while( true ) {
      lVar3 = lVar5;
      if (bVar7) {
        lVar3 = puVar2[2];
      }
      if ((lVar3 == 0) || (iVar6 < 1)) break;
      iVar6 = iVar6 + -1;
      if ((*(int *)(param_1 + 0x30c) <= iVar6) &&
         (iVar6 = *(int *)(param_1 + 0x30c) + -1, iVar6 < 0)) break;
      plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x300) + (longlong)iVar6 * 8);
      (**(code **)(*plVar4 + 0x18))(plVar4,param_1);
    }
    if (bVar7) {
      lVar5 = puVar2[2];
    }
    if ((lVar5 == 0) || (*(longlong *)(param_1 + 0x180) == 0)) goto LAB_1812dd3e5;
    plVar4 = *(longlong **)(param_1 + 0x180);
    if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
  }
  else {
    if (param_2 != 0x10003004) goto LAB_1812dd3e5;
    FUN_1812e1050(param_1);
    iVar6 = *(int *)(param_1 + 0x30c);
    lVar5 = 0;
    while( true ) {
      lVar3 = lVar5;
      if (puVar2 != (undefined8 *)0x0) {
        lVar3 = puVar2[2];
      }
      if ((lVar3 == 0) || (iVar6 < 1)) break;
      iVar6 = iVar6 + -1;
      if ((*(int *)(param_1 + 0x30c) <= iVar6) &&
         (iVar6 = *(int *)(param_1 + 0x30c) + -1, iVar6 < 0)) break;
      plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x300) + (longlong)iVar6 * 8);
      (**(code **)(*plVar4 + 0x20))(plVar4,param_1);
    }
    if (puVar2 != (undefined8 *)0x0) {
      lVar5 = puVar2[2];
    }
    if ((lVar5 == 0) || (*(longlong *)(param_1 + 0x1c0) == 0)) goto LAB_1812dd3e5;
    plVar4 = *(longlong **)(param_1 + 0x1c0);
    if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
  }
  (**(code **)(*plVar4 + 0x10))();
LAB_1812dd3e5:
  if (puVar2 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar2 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res18[0])(local_res18[0],1);
    }
  }
  return;
}



############ FUN_ 1812e3060 size=411 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812e3060(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  int iVar5;
  undefined8 *local_res8;
  undefined1 local_res18 [16];
  longlong local_e8;
  longlong lStack_e0;
  undefined8 local_d8;
  undefined8 *puStack_d0;
  undefined8 local_c8;
  undefined **local_c0;
  undefined1 *local_b8;
  undefined8 *local_b0;
  undefined4 local_a8;
  undefined ***local_88;
  undefined8 local_80;
  undefined8 uStack_78;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined4 local_48;
  undefined1 local_44;
  undefined4 local_40;
  
  local_c8 = 0xfffffffffffffffe;
  local_e8 = 0;
  lStack_e0 = 0;
  local_d8 = 0;
  puStack_d0 = (undefined8 *)0x0;
  (**(code **)(*param_1 + 0x160))(param_1,&local_e8,param_2);
  iVar5 = 0;
  lVar2 = local_e8;
  if (local_e8 != lStack_e0) {
    do {
      if (*(char *)(lVar2 + 0x86) == '\0') {
        iVar5 = iVar5 + 1;
      }
      lVar2 = lVar2 + 0x88;
    } while (lVar2 != lStack_e0);
    if (0 < iVar5) {
      uVar3 = FUN_18134adf0(param_1);
      FUN_18051b750(&puStack_d0,uVar3);
      local_80 = 0;
      uStack_78 = 0;
      local_70 = 0;
      uStack_68 = 0;
      local_60 = 0;
      local_58 = _DAT_1824c47c0;
      uStack_50 = _UNK_1824c47c8;
      local_48 = 0;
      local_44 = 0;
      local_40 = 1;
      puVar4 = (undefined8 *)FUN_18133c1f0(local_res18);
      local_80 = *puVar4;
      FUN_1804de690(&local_res8,param_1);
      puVar4 = local_res8;
      if (local_res8 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
        UNLOCK();
      }
      local_c0 = std::_Func_impl_no_alloc<<lambda_617fb99d0862711ecabfb79c33209401>,void,int>::
                 vftable;
      local_b8 = &LAB_1812e3210;
      local_b0 = local_res8;
      local_88 = &local_c0;
      local_a8 = param_2;
      uVar3 = FUN_181347bc0(&local_c0);
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar5 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar5 == 1) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      FUN_1812f0230(&local_e8,&local_80,uVar3);
    }
  }
  if (puStack_d0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puStack_d0 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*puStack_d0)(puStack_d0,1);
    }
  }
  FUN_18051c930(&local_e8);
  return;
}



############ FUN_ 1812e87f0 size=221 ############

void FUN_1812e87f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  undefined8 *puVar4;
  char cVar5;
  longlong lVar6;
  longlong lVar7;
  bool bVar8;
  undefined8 *local_res8;
  
  if (*(longlong *)(param_1 + 0x108) != 0) {
    plVar2 = (longlong *)(param_1 + -0xc0);
    FUN_1804de690(&local_res8,plVar2,param_3,param_4,0xfffffffffffffffe);
    cVar5 = FUN_1812e9110(plVar2,param_2);
    FUN_1812e8fb0(plVar2,1);
    puVar4 = local_res8;
    if (cVar5 != '\0') {
      bVar8 = local_res8 != (undefined8 *)0x0;
      lVar7 = 0;
      lVar6 = lVar7;
      if (bVar8) {
        lVar6 = local_res8[2];
      }
      if (lVar6 != 0) {
        (**(code **)(*plVar2 + 0x160))(plVar2);
        if (bVar8) {
          lVar7 = puVar4[2];
        }
        if (lVar7 != 0) {
          FUN_1812e8980(plVar2);
        }
      }
    }
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return;
}



############ FUN_ 1812e97a0 size=271 ############

void FUN_1812e97a0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  code *pcVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  int iVar7;
  bool bVar8;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar4 = local_res8;
  iVar7 = *(int *)(param_1 + 0x1dc);
  bVar8 = local_res8 != (undefined8 *)0x0;
  lVar6 = 0;
  while( true ) {
    lVar5 = lVar6;
    if (bVar8) {
      lVar5 = puVar4[2];
    }
    if ((lVar5 == 0) || (iVar7 < 1)) break;
    iVar7 = iVar7 + -1;
    if ((*(int *)(param_1 + 0x1dc) <= iVar7) && (iVar7 = *(int *)(param_1 + 0x1dc) + -1, iVar7 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x1d0) + (longlong)iVar7 * 8);
    pcVar3 = *(code **)(*plVar2 + 0x10);
    if (pcVar3 != _guard_check_icall) {
      (*pcVar3)(plVar2,param_1,param_2);
    }
  }
  if (bVar8) {
    lVar6 = puVar4[2];
  }
  if ((lVar6 != 0) && (*(longlong *)(param_1 + 0x150) != 0)) {
    if (*(longlong **)(param_1 + 0x150) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(**(longlong **)(param_1 + 0x150) + 0x10))();
  }
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1812ea310 size=254 ############

void FUN_1812ea310(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1 + -200,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res8;
  iVar6 = *(int *)(param_1 + 0xa4);
  bVar7 = local_res8 != (undefined8 *)0x0;
  lVar5 = 0;
  while( true ) {
    lVar4 = lVar5;
    if (bVar7) {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar6 < 1)) break;
    iVar6 = iVar6 + -1;
    if ((*(int *)(param_1 + 0xa4) <= iVar6) && (iVar6 = *(int *)(param_1 + 0xa4) + -1, iVar6 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x98) + (longlong)iVar6 * 8);
    (**(code **)(*plVar2 + 8))(plVar2,param_1 + -200);
  }
  if (bVar7) {
    lVar5 = puVar3[2];
  }
  if ((lVar5 != 0) && (*(longlong *)(param_1 + 0x48) != 0)) {
    if (*(longlong **)(param_1 + 0x48) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    (**(code **)(**(longlong **)(param_1 + 0x48) + 0x10))();
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1812eccd0 size=187 ############

void FUN_1812eccd0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res8;
  iVar5 = *(int *)(param_1 + 0xe4);
  bVar6 = local_res8 == (undefined8 *)0x0;
  while( true ) {
    if (bVar6) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar5 < 1)) break;
    iVar5 = iVar5 + -1;
    if ((*(int *)(param_1 + 0xe4) <= iVar5) && (iVar5 = *(int *)(param_1 + 0xe4) + -1, iVar5 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0xd8) + (longlong)iVar5 * 8);
    (**(code **)(*plVar2 + 8))(plVar2,param_1);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1812f3550 size=1060 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f3550(longlong param_1,uint param_2)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  int *piVar3;
  undefined8 *puVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  undefined8 *local_res8;
  undefined1 local_res18 [16];
  undefined1 local_1b8 [24];
  undefined8 *local_1a0;
  int local_198;
  int iStack_194;
  int iStack_190;
  int iStack_18c;
  undefined8 local_188;
  undefined8 local_180;
  undefined8 *local_178;
  undefined4 local_170;
  int local_16c;
  undefined4 local_168;
  undefined4 local_164;
  undefined4 local_160;
  undefined1 local_15c;
  undefined4 local_158;
  undefined8 local_150;
  int local_148;
  int iStack_144;
  int iStack_140;
  int iStack_13c;
  undefined **local_138;
  undefined1 *local_130;
  undefined8 *local_128;
  uint local_120;
  undefined ***local_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined4 local_c0;
  undefined1 local_bc;
  undefined4 local_b8;
  undefined1 local_b0 [40];
  undefined1 local_88 [32];
  undefined8 *local_68;
  
  local_150 = 0xfffffffffffffffe;
  if (param_2 != *(uint *)(param_1 + 0x104)) {
    FUN_18134b590();
    (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))((longlong *)(param_1 + 0xb0),0);
    FUN_1812f39d0(param_1,param_2);
    if (*(uint *)(param_1 + 0x100) != param_2) {
      FUN_1812f3ae0(param_1);
      *(uint *)(param_1 + 0x100) = param_2;
      FUN_1812f3ae0(param_1,param_2);
    }
    if (-1 < (int)param_2) {
      lVar5 = **(longlong **)(param_1 + 0xd0);
      uVar2 = FUN_181249970(param_1 + 0xd8,*(undefined4 *)(param_1 + 0x100));
      (**(code **)(lVar5 + 0x18))
                (*(undefined8 *)(param_1 + 0xd0),local_1b8,*(undefined4 *)(param_1 + 0x100),uVar2);
      lVar5 = 0;
      if (local_1a0 != (undefined8 *)0x0) {
        lVar5 = local_1a0[2];
      }
      if (lVar5 == 0) {
        uVar2 = FUN_18134adf0(param_1);
        FUN_18051b750(&local_1a0,uVar2);
      }
      iStack_18c = *(int *)(param_1 + 0x2c);
      local_198 = 0;
      iVar6 = local_198;
      if (param_2 + 1 < *(uint *)(param_1 + 0xf4)) {
        iVar6 = *(int *)(*(longlong *)(param_1 + 0xe8) + (longlong)(int)(param_2 + 1) * 4);
      }
      iVar7 = local_198;
      if (param_2 < *(uint *)(param_1 + 0xf4)) {
        iVar7 = *(int *)(*(longlong *)(param_1 + 0xe8) + (longlong)(int)param_2 * 4);
      }
      if (param_2 < *(uint *)(param_1 + 0xf4)) {
        local_198 = *(int *)(*(longlong *)(param_1 + 0xe8) + (longlong)(int)param_2 * 4);
      }
      iStack_194 = 0;
      iStack_190 = iVar6 - iVar7;
      for (lVar5 = param_1; lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x18)) {
        local_148 = local_198;
        iStack_144 = iStack_194;
        iStack_140 = iStack_190;
        iStack_13c = iStack_18c;
        piVar3 = (int *)FUN_18051e4b0(local_b0,lVar5,&local_148);
        local_198 = *piVar3;
        iStack_194 = piVar3[1];
        iStack_190 = piVar3[2];
        iStack_18c = piVar3[3];
      }
      local_f8 = 0;
      uStack_f0 = 0;
      local_e8 = 0;
      uStack_e0 = 0;
      local_d8 = 0;
      local_c0 = 0;
      local_bc = 0;
      local_b8 = 1;
      local_d0 = _DAT_1824c47c0;
      uStack_c8 = _UNK_1824c47c8;
      puVar4 = (undefined8 *)FUN_18133c1f0(local_res18);
      local_f8 = *puVar4;
      lVar5 = FUN_1812f0830(&local_f8,local_88,param_1);
      local_188 = *(undefined8 *)(lVar5 + 0x10);
      local_180 = *(undefined8 *)(lVar5 + 0x18);
      puVar4 = *(undefined8 **)(lVar5 + 0x20);
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
        UNLOCK();
      }
      local_170 = *(undefined4 *)(lVar5 + 0x28);
      local_168 = *(undefined4 *)(lVar5 + 0x30);
      local_164 = *(undefined4 *)(lVar5 + 0x34);
      local_160 = *(undefined4 *)(lVar5 + 0x38);
      local_15c = *(undefined1 *)(lVar5 + 0x3c);
      local_158 = *(undefined4 *)(lVar5 + 0x40);
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(puVar4 + 1) = *(int *)(puVar4 + 1) + 1;
        UNLOCK();
      }
      local_178 = puVar4;
      local_16c = iVar6 - iVar7;
      FUN_1804de690(&local_res8,param_1);
      puVar1 = local_res8;
      if (local_res8 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_res8 + 1) = *(int *)(local_res8 + 1) + 1;
        UNLOCK();
      }
      local_138 = std::_Func_impl_no_alloc<<lambda_6d84db41a432c75563b33271e1692ab6>,void,int>::
                  vftable;
      local_130 = &LAB_1812f3530;
      local_128 = local_res8;
      local_100 = &local_138;
      local_120 = param_2;
      uVar2 = FUN_181347bc0(&local_138);
      if (puVar1 != (undefined8 *)0x0) {
        LOCK();
        piVar3 = (int *)(puVar1 + 1);
        iVar6 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
      FUN_1812f0230(local_1b8,&local_198,uVar2);
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar3 = (int *)(puVar4 + 1);
        iVar6 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar3 = (int *)(puVar4 + 1);
        iVar6 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      if (local_68 != (undefined8 *)0x0) {
        LOCK();
        piVar3 = (int *)(local_68 + 1);
        iVar6 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)*local_68)(local_68,1);
        }
      }
      if (local_1a0 != (undefined8 *)0x0) {
        LOCK();
        piVar3 = (int *)(local_1a0 + 1);
        iVar6 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)*local_1a0)(local_1a0,1);
        }
      }
      FUN_18051c930(local_1b8);
    }
  }
  return;
}



############ FUN_ 1813184c0 size=255 ############

/* WARNING: Removing unreachable block (ram,0x00018131851b) */
/* WARNING: Removing unreachable block (ram,0x000181318527) */
/* WARNING: Removing unreachable block (ram,0x000181318530) */
/* WARNING: Removing unreachable block (ram,0x000181318549) */

void FUN_1813184c0(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *local_28 [2];
  
  FUN_1804de690(local_28,param_4);
  iVar2 = *(int *)((longlong)param_1 + 0xc4) + 1;
  if ((int)param_1[0x18] < iVar2) {
    FUN_18051cb30(param_1 + 0x17,*(int *)((longlong)param_1 + 0xc4) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  *(undefined8 **)(param_1[0x17] + (longlong)*(int *)((longlong)param_1 + 0xc4) * 8) = local_28[0];
  if (local_28[0] != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_28[0] + 1) = *(int *)(local_28[0] + 1) + 1;
    UNLOCK();
  }
  *(int *)((longlong)param_1 + 0xc4) = *(int *)((longlong)param_1 + 0xc4) + 1;
  if (local_28[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_28[0] + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_28[0])(local_28[0],1);
    }
  }
  FUN_181319d00(param_1[0x16],param_2,param_3);
                    /* WARNING: Could not recover jumptable at 0x0001813185b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x108))(param_1);
  return;
}



############ FUN_ 181347f60 size=206 ############

undefined4 *
FUN_181347f60(undefined4 *param_1,undefined4 *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined8 *puVar7;
  undefined8 *local_res8;
  undefined4 *local_res10;
  undefined8 local_res20;
  
  uVar4 = param_1[1];
  uVar5 = param_1[2];
  uVar6 = param_1[3];
  *param_2 = *param_1;
  param_2[1] = uVar4;
  param_2[2] = uVar5;
  param_2[3] = uVar6;
  *(undefined8 *)(param_2 + 4) = *(undefined8 *)(param_1 + 4);
  *(undefined8 *)(param_2 + 6) = *(undefined8 *)(param_1 + 6);
  lVar3 = *(longlong *)(param_1 + 8);
  *(longlong *)(param_2 + 8) = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  param_2[10] = param_1[10];
  param_2[0xb] = param_1[0xb];
  param_2[0xc] = param_1[0xc];
  param_2[0xd] = param_1[0xd];
  param_2[0xe] = param_1[0xe];
  *(undefined1 *)(param_2 + 0xf) = *(undefined1 *)(param_1 + 0xf);
  param_2[0x10] = param_1[0x10];
  local_res10 = param_2;
  puVar7 = (undefined8 *)FUN_1804de690(&local_res8,param_3,param_3,param_4,1,0xfffffffffffffffe);
  local_res20 = *(undefined8 *)(param_2 + 8);
  *(undefined8 *)(param_2 + 8) = *puVar7;
  *puVar7 = local_res20;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  *(undefined1 *)(param_2 + 0xf) = 1;
  return param_2;
}



############ FUN_ 18131fb50 size=260 ############

undefined8 * FUN_18131fb50(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = juce::ResizableBorderComponent::vftable;
  FUN_1804de690();
  param_1[0x17] = param_3;
  *(undefined4 *)(param_1 + 0x18) = 5;
  *(undefined4 *)((longlong)param_1 + 0xc4) = 5;
  *(undefined4 *)(param_1 + 0x19) = 5;
  *(undefined8 *)((longlong)param_1 + 0xcc) = 5;
  *(undefined8 *)((longlong)param_1 + 0xd4) = 0;
  *(undefined8 *)((longlong)param_1 + 0xdc) = 0;
  return param_1;
}



############ FUN_ 181329d80 size=121 ############

bool FUN_181329d80(longlong param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 local_res18 [2];
  
  local_res18[0] = param_3;
  FUN_1804de690(local_res18,DAT_182673708,param_3,param_4,0xfffffffffffffffe);
  uVar3 = FUN_181329c90(param_1,param_2);
  puVar2 = *(undefined8 **)(param_1 + 0x78);
  *(undefined8 *)(param_1 + 0x78) = uVar3;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  (**(code **)(**(longlong **)(param_1 + 0x78) + 0x10))();
  iVar1 = *(int *)(param_1 + 0x2c);
  FUN_1804e4a90(local_res18);
  return 0 < iVar1;
}



############ FUN_ 181325f50 size=191 ############

void FUN_181325f50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1 + -200,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res8;
  iVar5 = *(int *)(param_1 + 0x1dc);
  bVar6 = local_res8 == (undefined8 *)0x0;
  while( true ) {
    if (bVar6) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar5 < 1)) break;
    iVar5 = iVar5 + -1;
    if ((*(int *)(param_1 + 0x1dc) <= iVar5) && (iVar5 = *(int *)(param_1 + 0x1dc) + -1, iVar5 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x1d0) + (longlong)iVar5 * 8);
    (**(code **)(*plVar2 + 8))(plVar2,param_1 + -200);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 181328b40 size=1280 ############

void FUN_181328b40(longlong param_1)

{
  int *piVar1;
  longlong lVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  undefined8 uVar9;
  uint uVar10;
  uint *puVar11;
  bool bVar12;
  undefined4 local_res8;
  undefined4 uStackX_c;
  longlong local_res10;
  undefined8 *local_res18;
  longlong local_res20;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  undefined4 *local_c8;
  longlong *local_c0;
  longlong local_b8;
  undefined1 local_b0 [8];
  longlong local_a8;
  longlong local_a0 [3];
  undefined **local_88;
  undefined1 *local_80;
  undefined8 *local_78;
  undefined ***local_50;
  
  local_a0[1] = 0xfffffffffffffffe;
  bVar12 = false;
  local_res8 = 0;
  if ((*(char *)(param_1 + 0x150) == '\0') ||
     (lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0xb0),
     (*(uint *)(lVar2 + 0xf0) >> 1 & 1) == 0)) {
LAB_181328baa:
    bVar3 = false;
  }
  else {
    uVar6 = FUN_18132c510(lVar2,&local_b8,0);
    bVar12 = true;
    cVar4 = FUN_181245810(uVar6);
    if (cVar4 == '\0') goto LAB_181328baa;
    bVar3 = true;
  }
  if ((bVar12) && (puVar11 = (uint *)(local_b8 + -0x10), (*puVar11 & 0x30000000) == 0)) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  if (!bVar3) {
    FUN_181343150(param_1,1);
    return;
  }
  FUN_18049c4e0(&local_res8,"Cancel");
  lVar2 = DAT_1826739f8;
  local_c8 = &DAT_182673984;
  do {
    LOCK();
    uVar10 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar10 != 0);
  if (DAT_1826739f8 == 0) {
    local_res10 = CONCAT44(uStackX_c,local_res8);
    uVar10 = *(uint *)(local_res10 + -0x10);
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) != 0) &&
       (iVar5 = FUN_1812498b0(DAT_1826739f8 + 0x18,CONCAT44(uStackX_c,local_res8),
                              *(undefined1 *)(DAT_1826739f8 + 0x38),0), iVar5 < 0)) {
      FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_res10,&local_res8,&local_res8);
      goto LAB_181328ca4;
    }
    iVar5 = FUN_1812498b0(lVar2 + 0x18,CONCAT44(uStackX_c,local_res8),*(undefined1 *)(lVar2 + 0x38),
                          0);
    if (iVar5 < 0) {
      local_res10 = CONCAT44(uStackX_c,local_res8);
      uVar10 = *(uint *)(local_res10 + -0x10);
    }
    else {
      plVar8 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar5);
      local_res10 = *plVar8;
      uVar10 = *(uint *)(local_res10 + -0x10);
    }
  }
  if ((uVar10 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
    UNLOCK();
  }
LAB_181328ca4:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar11 = (uint *)(CONCAT44(uStackX_c,local_res8) + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  FUN_18049c4e0(&local_res20,"Overwrite");
  FUN_1812344e0(&local_d0,&local_res20);
  puVar11 = (uint *)(local_res20 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  FUN_18049c4e0(&local_108,"Are you sure you want to overwrite it?");
  FUN_1812344e0(&local_d8,&local_108);
  puVar11 = (uint *)(local_108 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar7 = (undefined8 *)
           FUN_18132c510(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0xb0),local_a0,0);
  FUN_18049c4e0(&local_100,"There\'s already a file called: FLNM");
  FUN_1812344e0(&local_e0,&local_100);
  puVar11 = (uint *)(local_100 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  local_a0[2] = *puVar7;
  plVar8 = (longlong *)FUN_1812319a0(&local_e0,local_b0,&DAT_1821e3efc);
  local_c0 = plVar8;
  FUN_181232e20(plVar8,&DAT_1821e2c4c,&DAT_1821e2c4e);
  local_f8 = *plVar8;
  if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
    UNLOCK();
  }
  puVar11 = (uint *)(*plVar8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  uVar6 = FUN_181232aa0(&local_a8,&local_f8,&local_d8);
  FUN_18049c4e0(&local_f0,"File already exists");
  FUN_1812344e0(&local_e8,&local_f0);
  puVar11 = (uint *)(local_f0 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  FUN_1804de690(&local_res18,param_1);
  puVar7 = local_res18;
  if (local_res18 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res18 + 1) = *(int *)(local_res18 + 1) + 1;
    UNLOCK();
  }
  local_88 = std::_Func_impl_no_alloc<<lambda_9187841d0506c1a3c680a955d53e60bb>,void,int>::vftable;
  local_80 = &LAB_181329070;
  local_78 = local_res18;
  local_50 = &local_88;
  uVar9 = FUN_181347bc0(&local_88);
  if (puVar7 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar7 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res18)(local_res18,1);
    }
  }
  FUN_181346500(2,&local_e8,uVar6,&local_d0,&local_res10,param_1,uVar9);
  puVar11 = (uint *)(local_e8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_a8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_e0 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_a0[0] + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_d8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_d0 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  puVar11 = (uint *)(local_res10 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  return;
}



############ FUN_ 18132b010 size=203 ############

void FUN_18132b010(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1 + -0xb0,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res8;
  iVar5 = *(int *)(param_1 + 0x6c);
  bVar6 = local_res8 == (undefined8 *)0x0;
  while( true ) {
    if (bVar6) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar3[2];
    }
    if ((lVar4 == 0) || (iVar5 < 1)) break;
    iVar5 = iVar5 + -1;
    if ((*(int *)(param_1 + 0x6c) <= iVar5) && (iVar5 = *(int *)(param_1 + 0x6c) + -1, iVar5 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x60) + (longlong)iVar5 * 8);
    (**(code **)(*plVar2 + 0x10))(plVar2,param_2,param_3);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18132b3d0 size=276 ############

void FUN_18132b3d0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong lVar5;
  uint *_Memory;
  int iVar6;
  bool bVar7;
  undefined8 *local_res8;
  longlong local_res10;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  if (*(longlong *)(param_1 + 0x128) != 0) {
    uVar4 = FUN_18132c510(param_1,&local_res10,0);
    (**(code **)(**(longlong **)(param_1 + 0x128) + 0x158))(*(longlong **)(param_1 + 0x128),uVar4);
    _Memory = (uint *)(local_res10 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  puVar3 = local_res8;
  iVar6 = *(int *)(param_1 + 0x11c);
  bVar7 = local_res8 == (undefined8 *)0x0;
  while( true ) {
    if (bVar7) {
      lVar5 = 0;
    }
    else {
      lVar5 = puVar3[2];
    }
    if ((lVar5 == 0) || (iVar6 < 1)) break;
    iVar6 = iVar6 + -1;
    if ((*(int *)(param_1 + 0x11c) <= iVar6) && (iVar6 = *(int *)(param_1 + 0x11c) + -1, iVar6 < 0))
    break;
    (**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x110) + (longlong)iVar6 * 8) + 8))();
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18132e950 size=209 ############

void FUN_18132e950(longlong param_1)

{
  int *piVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  longlong lVar4;
  int iVar5;
  bool bVar6;
  undefined8 *local_res8;
  
  uVar3 = __RTDynamicCast(param_1,0,&juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor,
                          &juce::Component::RTTI_Type_Descriptor,0);
  FUN_1804de690(&local_res8,uVar3);
  puVar2 = local_res8;
  iVar5 = *(int *)(param_1 + 0x1c);
  bVar6 = local_res8 == (undefined8 *)0x0;
  while( true ) {
    if (bVar6) {
      lVar4 = 0;
    }
    else {
      lVar4 = puVar2[2];
    }
    if ((lVar4 == 0) || (iVar5 < 1)) break;
    iVar5 = iVar5 + -1;
    if ((*(int *)(param_1 + 0x1c) <= iVar5) && (iVar5 = *(int *)(param_1 + 0x1c) + -1, iVar5 < 0))
    break;
    (**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x10) + (longlong)iVar5 * 8) + 8))();
  }
  if (puVar2 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar2 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 181336170 size=303 ############

void FUN_181336170(longlong param_1)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *local_res8;
  undefined8 local_res10;
  
  lVar7 = 0;
  lVar6 = lVar7;
  if (*(int *)(param_1 + 0x14c) != 0) {
    lVar3 = *(longlong *)(param_1 + 0x18);
    lVar6 = param_1;
    while (lVar5 = lVar3, lVar5 != 0) {
      lVar6 = lVar5;
      lVar3 = *(longlong *)(lVar5 + 0x18);
    }
  }
  lVar3 = lVar7;
  if (*(longlong *)(param_1 + 0x150) != 0) {
    lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x150) + 0x10);
  }
  if (lVar6 != lVar3) {
    if ((*(longlong *)(param_1 + 0x150) != 0) &&
       (*(longlong *)(*(longlong *)(param_1 + 0x150) + 0x10) != 0)) {
      lVar3 = *(longlong *)(param_1 + 0x170) + 0x28;
      if (*(longlong *)(param_1 + 0x170) == 0) {
        lVar3 = lVar7;
      }
      lVar5 = lVar7;
      if (*(longlong *)(param_1 + 0x150) != 0) {
        lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x150) + 0x10);
      }
      FUN_18133e200(lVar5,lVar3);
    }
    puVar4 = (undefined8 *)FUN_1804de690(&local_res8,lVar6);
    local_res10 = *(undefined8 *)(param_1 + 0x150);
    *(undefined8 *)(param_1 + 0x150) = *puVar4;
    *puVar4 = local_res10;
    if (local_res8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res8 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
    if ((*(longlong *)(param_1 + 0x150) != 0) &&
       (*(longlong *)(*(longlong *)(param_1 + 0x150) + 0x10) != 0)) {
      lVar6 = *(longlong *)(param_1 + 0x170) + 0x28;
      if (*(longlong *)(param_1 + 0x170) == 0) {
        lVar6 = lVar7;
      }
      if (*(longlong *)(param_1 + 0x150) != 0) {
        lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x150) + 0x10);
      }
      FUN_18133e2b0(lVar7,lVar6);
    }
  }
  return;
}



############ FUN_ 181339d60 size=94 ############

undefined8 *
FUN_181339d60(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)*param_2;
  *param_1 = plVar1;
  (**(code **)(*plVar1 + 0xb8))(plVar1,param_1 + 1,param_2 + 1,param_4,0xfffffffffffffffe);
  FUN_1804de690(param_1 + 2,param_3);
  param_1[3] = param_4;
  return param_1;
}



############ FUN_ 18133aef0 size=281 ############

undefined4 FUN_18133aef0(longlong param_1)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  undefined8 uVar4;
  longlong lVar5;
  int iVar6;
  bool bVar7;
  char local_res8 [8];
  undefined4 local_res10 [2];
  undefined1 local_res18 [16];
  undefined **local_60;
  undefined4 *local_58;
  char *pcStack_50;
  undefined ***local_28;
  
  local_res10[0] = 0;
  iVar6 = 0;
  iVar3 = *(int *)(param_1 + 0x24) + -1;
  lVar5 = (longlong)iVar3;
  if (-1 < iVar3) {
    do {
      lVar1 = *(longlong *)(*(longlong *)(param_1 + 0x18) + lVar5 * 8);
      if ((*(char *)(lVar1 + 0x5c) != '\0') && (bVar7 = iVar6 == 0, iVar6 = iVar6 + 1, bVar7)) {
        lVar5 = *(longlong *)(lVar1 + 0x40);
        if (lVar5 == 0) {
          return 0;
        }
        FUN_1804de690(local_res18,DAT_182673708,1,*(longlong *)(param_1 + 0x18),0xfffffffffffffffe);
        local_res8[0] = '\0';
        local_58 = local_res10;
        pcStack_50 = local_res8;
        local_60 = std::_Func_impl_no_alloc<<lambda_e9497a67ceca33c41238fd92e5d477a0>,void,int>::
                   vftable;
        local_28 = &local_60;
        uVar4 = FUN_181347bc0(&local_60);
        FUN_18133b470(param_1,lVar5,uVar4);
        goto joined_r0x00018133afc9;
      }
      lVar5 = lVar5 + -1;
    } while (-1 < lVar5);
  }
  return 0;
  while( true ) {
    uVar4 = FUN_1812a7550();
    cVar2 = FUN_1812a6650(uVar4);
    if (cVar2 == '\0') break;
joined_r0x00018133afc9:
    if (local_res8[0] != '\0') break;
  }
  FUN_1804e4a90(local_res18);
  return local_res10[0];
}



############ FUN_ 18133bec0 size=163 ############

void FUN_18133bec0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  int iVar4;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,DAT_182673708,param_3,param_4,0xfffffffffffffffe);
  puVar3 = local_res8;
  iVar4 = *(int *)(param_1 + 0x34);
  while (0 < iVar4) {
    iVar4 = iVar4 + -1;
    if ((*(int *)(param_1 + 0x34) <= iVar4) && (iVar4 = *(int *)(param_1 + 0x34) + -1, iVar4 < 0))
    break;
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x28) + (longlong)iVar4 * 8);
    if (puVar3 == (undefined8 *)0x0) {
      (**(code **)(*plVar2 + 8))(plVar2,0);
    }
    else {
      (**(code **)(*plVar2 + 8))();
    }
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar4 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar4 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18133e1b0 size=23 ############

undefined8 FUN_18133e1b0(undefined8 param_1)

{
  FUN_1804de690();
  return param_1;
}



############ FUN_ 18133f3f0 size=147 ############

void FUN_18133f3f0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 *local_res8;
  
  FUN_1804de690(&local_res8,param_1,param_3,param_4,0xfffffffffffffffe);
  (**(code **)(*param_1 + 0xf0))(param_1,2);
  puVar3 = local_res8;
  if (local_res8 == (undefined8 *)0x0) {
    lVar4 = 0;
  }
  else {
    lVar4 = local_res8[2];
  }
  if (lVar4 != 0) {
    FUN_18133f200(param_1,2,&local_res8);
  }
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1813450b0 size=95 ############

void FUN_1813450b0(longlong param_1,int param_2,int param_3)

{
  if (param_2 != param_3) {
    FUN_181342b10(*(undefined8 *)(*(longlong *)(param_1 + 0x40) + (longlong)param_2 * 8));
    FUN_18051b170(param_1 + 0x40,param_2,param_3);
    FUN_18133f790();
    FUN_1813437a0(param_1);
  }
  return;
}



############ FUN_ 1812a6720 size=337 ############

undefined8 FUN_1812a6720(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  void *pvVar4;
  int iVar5;
  uint uVar6;
  
  lVar3 = DAT_182673ad8;
  if (((DAT_1826736d0 != 0) && (*(int *)(DAT_1826736d0 + 8) == 0)) && (DAT_182673ad8 != 0)) {
    EnterCriticalSection((LPCRITICAL_SECTION)(DAT_182673ad8 + 8));
    iVar2 = *(int *)(lVar3 + 0x44);
    iVar5 = *(int *)(lVar3 + 0x44) + 1;
    if ((int)*(uint *)(lVar3 + 0x40) < iVar5) {
      uVar6 = *(int *)(lVar3 + 0x44) + 9 + iVar5 / 2 & 0xfffffff8;
      if (*(uint *)(lVar3 + 0x40) != uVar6) {
        pvVar4 = *(void **)(lVar3 + 0x38);
        if ((int)uVar6 < 1) {
                    /* WARNING: Subroutine does not return */
          free(pvVar4);
        }
        if (pvVar4 == (void *)0x0) {
          pvVar4 = malloc((longlong)(int)uVar6 * 8);
          *(void **)(lVar3 + 0x38) = pvVar4;
        }
        else {
          pvVar4 = realloc(pvVar4,(longlong)(int)uVar6 * 8);
          *(void **)(lVar3 + 0x38) = pvVar4;
        }
      }
      *(uint *)(lVar3 + 0x40) = uVar6;
    }
    iVar5 = *(int *)(lVar3 + 0x44);
    *(int *)(lVar3 + 0x44) = iVar5 + 1;
    *(undefined8 **)(*(longlong *)(lVar3 + 0x38) + (longlong)iVar5 * 8) = param_1;
    if (param_1 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + 1;
      UNLOCK();
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar3 + 8));
    if (iVar2 == 0) {
      PostMessageW(DAT_1826736b0,0x47b,0,0);
    }
    return 1;
  }
  if (param_1 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + 1;
    UNLOCK();
    LOCK();
    piVar1 = (int *)(param_1 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*param_1)();
    }
  }
  return 0;
}



############ FUN_ 18133e1d0 size=39 ############

void FUN_18133e1d0(longlong *param_1)

{
  FUN_18133f790();
                    /* WARNING: Could not recover jumptable at 0x00018133e1f0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0xe8))(param_1,&DAT_182673aec);
  return;
}



############ FUN_ 18134caa0 size=363 ############

void FUN_18134caa0(undefined8 *param_1)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined4 uVar5;
  longlong *plVar6;
  int iVar7;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  *param_1 = juce::Component::vftable;
  iVar7 = *(int *)((longlong)param_1 + 0x8c);
  while (0 < iVar7) {
    iVar7 = iVar7 + -1;
    if ((*(int *)((longlong)param_1 + 0x8c) <= iVar7) &&
       (iVar7 = *(int *)((longlong)param_1 + 0x8c) + -1, iVar7 < 0)) break;
    plVar2 = *(longlong **)(param_1[0x10] + (longlong)iVar7 * 8);
    (**(code **)(*plVar2 + 0x38))(plVar2,param_1);
  }
  if (param_1[0x14] != 0) {
    *(undefined8 *)(param_1[0x14] + 0x10) = 0;
  }
  iVar7 = *(int *)((longlong)param_1 + 0x4c);
  while (0 < iVar7) {
    FUN_181343a90(param_1,iVar7 + -1,0,1,uVar8);
    iVar7 = *(int *)((longlong)param_1 + 0x4c);
  }
  lVar3 = param_1[3];
  puVar4 = DAT_182673708;
  if (lVar3 == 0) {
    for (; puVar4 != param_1; puVar4 = (undefined8 *)puVar4[3]) {
      if (puVar4 == (undefined8 *)0x0) goto LAB_18134cbbc;
    }
    FUN_18133eae0(DAT_182673708 != param_1);
  }
  else {
    plVar2 = *(longlong **)(lVar3 + 0x40);
    for (plVar6 = plVar2; plVar6 != plVar2 + *(int *)(lVar3 + 0x4c); plVar6 = plVar6 + 1) {
      if (param_1 == (undefined8 *)*plVar6) {
        uVar5 = (undefined4)((longlong)plVar6 - (longlong)plVar2 >> 3);
        goto LAB_18134cb70;
      }
    }
    uVar5 = 0xffffffff;
LAB_18134cb70:
    FUN_181343a90(lVar3,uVar5,CONCAT71((int7)((ulonglong)plVar2 >> 8),1),0,uVar8);
  }
LAB_18134cbbc:
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    FUN_18134c310(param_1);
  }
  puVar4 = (undefined8 *)param_1[0x14];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  FUN_18049b580(param_1 + 0x12);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x12]);
}



############ FUN_ 18133eaa0 size=48 ############

ulonglong FUN_18133eaa0(longlong param_1)

{
  ulonglong in_RAX;
  
  if ((*(byte *)(param_1 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      in_RAX = FUN_18133eaa0();
      if ((char)in_RAX == '\0') goto LAB_18133eac9;
    }
    return 1;
  }
LAB_18133eac9:
  return in_RAX & 0xffffffffffffff00;
}



############ FUN_ 1804e4a90 size=153 ############

void FUN_1804e4a90(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  
  if (((*param_1 != 0) && (*(longlong *)(*param_1 + 0x10) != 0)) &&
     (cVar4 = FUN_181345240(), cVar4 != '\0')) {
    uVar6 = 0;
    uVar5 = uVar6;
    if (*param_1 != 0) {
      uVar5 = *(undefined8 *)(*param_1 + 0x10);
    }
    cVar4 = FUN_181343030(uVar5);
    if (cVar4 == '\0') {
      if (*param_1 != 0) {
        uVar6 = *(undefined8 *)(*param_1 + 0x10);
      }
      FUN_18133ed60(uVar6,2,1);
    }
  }
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  return;
}



############ FUN_ 181320970 size=316 ############

void FUN_181320970(longlong param_1,longlong param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  undefined8 *puVar5;
  
  if (*(int *)(param_1 + 0xb8) == 0) {
    puVar5 = *(undefined8 **)(param_1 + 0x40);
    puVar1 = puVar5 + *(int *)(param_1 + 0x4c);
    lVar2 = param_2;
    if (puVar5 != puVar1) {
      do {
        lVar2 = __RTDynamicCast(*puVar5,0,&juce::Component::RTTI_Type_Descriptor,
                                &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor,0);
        if (lVar2 != 0) {
          lVar3 = 0;
          if (*(longlong *)(lVar2 + 0xd0) != 0) {
            lVar3 = *(longlong *)(*(longlong *)(lVar2 + 0xd0) + 0x10);
          }
          if (lVar3 == param_2) break;
        }
        puVar5 = puVar5 + 1;
        lVar2 = param_2;
      } while (puVar5 != puVar1);
    }
    if (lVar2 != 0) {
      FUN_181344f60(lVar2,1);
      return;
    }
  }
  else if (*(longlong *)(param_1 + 0xd0) == 0) {
    FUN_18133ed60(param_2,2,1);
  }
  else {
    iVar4 = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0xd0) + 0xb0) + 0xf4) + -1;
    if (-1 < iVar4) {
      do {
        lVar2 = FUN_181318140(*(undefined8 *)(param_1 + 0xd0),iVar4);
        if (lVar2 == param_2) {
          FUN_181319980(*(undefined8 *)(*(longlong *)(param_1 + 0xd0) + 0xb0),iVar4);
          return;
        }
        iVar4 = iVar4 + -1;
      } while (-1 < iVar4);
      return;
    }
  }
  return;
}



############ FUN_ 1804ff1e0 size=217 ############

void FUN_1804ff1e0(longlong param_1,int param_2)

{
  undefined8 *puVar1;
  longlong lVar2;
  char cVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  int local_38 [4];
  undefined8 local_28;
  undefined8 local_20;
  undefined4 local_18;
  undefined1 local_14;
  undefined4 local_10;
  
  uVar5 = 0;
  if ((*(longlong *)(param_1 + 8) != 0) && (param_2 != 0)) {
    local_38[1] = 0;
    local_28 = 0;
    local_20 = 0;
    local_18 = 0;
    local_14 = 0;
    local_10 = 0;
    local_38[2] = 2;
    local_38[0] = param_2;
    FUN_1812cb380(*(longlong *)(param_1 + 8),local_38,1);
  }
  puVar1 = *(undefined8 **)(param_1 + 0x10);
  *(undefined8 *)(param_1 + 0x10) = 0;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  if (DAT_182678e96 == '\0') {
    lVar2 = *(longlong *)(param_1 + 0x20);
    if ((lVar2 != 0) && (*(longlong *)(lVar2 + 0x10) != 0)) {
      uVar4 = uVar5;
      if (lVar2 != 0) {
        uVar4 = *(undefined8 *)(lVar2 + 0x10);
      }
      FUN_181344f60(uVar4,1);
    }
    lVar2 = *(longlong *)(param_1 + 0x18);
    if ((lVar2 != 0) && (*(longlong *)(lVar2 + 0x10) != 0)) {
      uVar4 = uVar5;
      if (lVar2 != 0) {
        uVar4 = *(undefined8 *)(lVar2 + 0x10);
      }
      cVar3 = FUN_181345240(uVar4);
      if (cVar3 != '\0') {
        if (*(longlong *)(param_1 + 0x18) != 0) {
          uVar5 = *(undefined8 *)(*(longlong *)(param_1 + 0x18) + 0x10);
        }
        FUN_18133ed60(uVar5,2,1);
      }
    }
  }
  return;
}



############ FUN_ 18148b7d0 size=191 ############

undefined8 FUN_18148b7d0(longlong param_1,int *param_2,undefined1 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res10 [2];
  undefined1 local_res20 [8];
  
  if ((*param_2 == 0xd) && ((*(byte *)(param_2 + 1) & 7) == 0)) {
    uVar2 = FUN_1812dc020(param_1 + 0x58,local_res20,param_3,param_4,0xfffffffffffffffe);
    FUN_180579b20(param_1 + 0x10,uVar2);
    FUN_18049c4e0(local_res10,&DAT_1821d918e);
    FUN_1812e1110(param_1 + 0x58,local_res10,1);
    _Memory = (uint *)(local_res10[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    FUN_18133ed60(param_1 + 0x58,2,1);
    return 1;
  }
  return 0;
}



############ FUN_ 18057dd00 size=54 ############

void FUN_18057dd00(longlong param_1)

{
  FUN_1812ddaf0(*(longlong *)(param_1 + 8) + 0x9c0);
  FUN_18133ed60(*(longlong *)(param_1 + 8) + 0x9c0,2,1);
  return;
}



############ FUN_ 18148b8a0 size=151 ############

void FUN_18148b8a0(longlong param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res8;
  undefined1 local_res18 [16];
  
  uVar2 = FUN_1812dc020(param_1 + 0x60,local_res18,param_3,param_4,0xfffffffffffffffe);
  FUN_180579b20(param_1 + 0x18,uVar2);
  FUN_18049c4e0(&local_res8,"");
  FUN_1812e1110(param_1 + 0x60,&local_res8,1);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18133ed60(param_1 + 0x60,2,1);
  return;
}



############ FUN_ 181344e50 size=263 ############

void FUN_181344e50(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong lVar6;
  int iVar7;
  longlong lVar8;
  
  if ((param_2 != 0) && (param_2 != param_1)) {
    lVar5 = *(longlong *)(param_1 + 0x18);
    if (lVar5 == 0) {
      if (((*(byte *)(param_1 + 0xa8) & 1) != 0) && ((*(byte *)(param_2 + 0xa8) & 1) != 0)) {
        plVar4 = (longlong *)FUN_18134c2e0();
        lVar5 = FUN_18134c2e0(param_2);
        if ((plVar4 != (longlong *)0x0) && (lVar5 != 0)) {
          (**(code **)(*plVar4 + 0xb8))(plVar4,lVar5);
        }
      }
    }
    else {
      plVar1 = *(longlong **)(lVar5 + 0x40);
      plVar4 = plVar1 + (int)*(uint *)(lVar5 + 0x4c);
      plVar3 = plVar1;
      if (plVar1 != plVar4) {
        while (param_1 != *plVar3) {
          plVar3 = plVar3 + 1;
          if (plVar3 == plVar4) {
            return;
          }
        }
        lVar8 = (longlong)plVar3 - (longlong)plVar1 >> 3;
        iVar7 = (int)lVar8;
        if (-1 < iVar7) {
          if (iVar7 + 1U < *(uint *)(lVar5 + 0x4c)) {
            lVar6 = plVar1[(int)(iVar7 + 1U)];
          }
          else {
            lVar6 = 0;
          }
          if ((lVar6 != param_2) && (plVar3 = plVar1, plVar1 != plVar4)) {
            while (param_2 != *plVar3) {
              plVar3 = plVar3 + 1;
              if (plVar3 == plVar4) {
                return;
              }
            }
            iVar2 = (int)((longlong)plVar3 - (longlong)plVar1 >> 3);
            if (-1 < iVar2) {
              if (iVar7 < iVar2) {
                iVar2 = iVar2 + -1;
              }
              FUN_1813450b0(lVar5,lVar8,iVar2);
              return;
            }
          }
        }
      }
    }
  }
  return;
}



############ FUN_ 1812cbe70 size=620 ############

void FUN_1812cbe70(longlong param_1,longlong param_2,int param_3,int param_4)

{
  longlong lVar1;
  bool bVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  undefined8 *puVar6;
  int iVar7;
  int iVar8;
  undefined8 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int local_res10;
  int iStackX_14;
  int local_58;
  int iStack_54;
  undefined8 local_48;
  undefined8 uStack_40;
  
  if ((param_2 != 0) || (param_2 = FUN_1812cbb60(), param_2 != 0)) {
    local_48 = *(undefined8 *)(param_2 + 0x20);
    uStack_40 = *(undefined8 *)(param_2 + 0x28);
    if ((0 < (int)uStack_40) &&
       (uStack_40._4_4_ = (int)((ulonglong)uStack_40 >> 0x20), bVar2 = 0 < uStack_40._4_4_, bVar2))
    {
      local_res10 = *(int *)(param_2 + 0x28) / 2;
      iStackX_14 = *(int *)(param_2 + 0x2c) / 2;
      uVar9 = CONCAT44(iStackX_14,local_res10);
      for (lVar1 = param_2; lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
        puVar6 = (undefined8 *)FUN_18051e290(&local_res10,lVar1,uVar9);
        uVar9 = *puVar6;
      }
      FUN_181344bc0(param_2,&local_48);
      lVar1 = *(longlong *)(param_1 + 0x18);
      if (lVar1 != 0) {
        lVar3 = lVar1;
        for (lVar4 = *(longlong *)(lVar1 + 0x18); lVar4 != 0; lVar4 = *(longlong *)(lVar4 + 0x18)) {
          lVar3 = lVar4;
        }
        puVar6 = (undefined8 *)FUN_18051e060(&local_58,lVar3,uVar9);
        uVar9 = *puVar6;
        if (lVar3 != lVar1) {
          if (*(longlong *)(lVar1 + 0x18) != lVar3) {
            puVar6 = (undefined8 *)FUN_180520050(&local_48,lVar3,*(longlong *)(lVar1 + 0x18),uVar9);
            uVar9 = *puVar6;
          }
          FUN_18051e060(&local_res10,lVar1,uVar9);
          uVar9 = CONCAT44(iStackX_14,local_res10);
        }
        uStack_40 = *(undefined8 *)(lVar1 + 0x28);
        local_48 = 0;
      }
      iVar13 = 0;
      iVar7 = (int)uStack_40 + -0x18;
      iVar10 = (int)local_48 + 0xc;
      iVar8 = (int)((ulonglong)uStack_40 >> 0x20) + -0x18;
      iVar5 = (int)((ulonglong)local_48 >> 0x20) + 0xc;
      iVar12 = iVar13;
      if (0 < iVar7) {
        iVar12 = iVar7;
      }
      iVar7 = iVar13;
      if (0 < iVar8) {
        iVar7 = iVar8;
      }
      local_58 = (int)uVar9 - param_3 / 2;
      iStack_54 = (int)((ulonglong)uVar9 >> 0x20) - param_4 / 2;
      if (0 < iVar12 - param_3) {
        iVar13 = iVar12 - param_3;
      }
      iVar8 = 0;
      if (0 < iVar7 - param_4) {
        iVar8 = iVar7 - param_4;
      }
      iVar11 = iVar10;
      if ((iVar10 <= local_58) && (iVar11 = local_58, iVar13 + iVar10 < local_58)) {
        iVar11 = iVar13 + iVar10;
      }
      iVar13 = iVar5;
      if ((iVar5 <= iStack_54) && (iVar13 = iStack_54, iVar5 + iVar8 < iStack_54)) {
        iVar13 = iVar5 + iVar8;
      }
      if (iVar12 < param_3) {
        param_3 = iVar12;
      }
      local_48 = CONCAT44(iVar13,iVar11);
      if (iVar7 < param_4) {
        param_4 = iVar7;
      }
      uStack_40 = CONCAT44(param_4,param_3);
      FUN_18134bfe0(param_1,iVar11,iVar13,param_3,param_4);
      return;
    }
  }
  FUN_181344560(param_1,param_3,param_4);
  return;
}



############ FUN_ 1804e7f00 size=460 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804e7f00(longlong *param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  longlong lVar4;
  undefined8 uVar5;
  bool bVar6;
  longlong lVar7;
  undefined8 *puVar8;
  longlong *plVar9;
  longlong lVar10;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  undefined4 uStack_54;
  undefined8 local_50;
  undefined1 local_48 [8];
  undefined1 local_40 [8];
  longlong *local_38;
  undefined1 local_30 [8];
  undefined8 *local_28;
  longlong local_20;
  ulonglong local_18;
  
  local_50 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_78;
  if (*(longlong **)(param_2 + 0x38) != param_1) {
    lVar10 = 0;
    if ((*(int *)(*(longlong *)(param_2 + 0x50) + 0x14) != *(int *)((longlong)param_1 + 0x124)) ||
       (bVar6 = true, *(int *)(*(longlong *)(param_2 + 0x50) + 0x10) != (int)param_1[0x24])) {
      bVar6 = false;
    }
    if (bVar6) {
      lVar4 = param_1[0x1f];
      lVar7 = lVar10;
      if (lVar4 != 0) {
        lVar7 = *(longlong *)(lVar4 + 0x10);
      }
      if (lVar7 != 0) {
        if (lVar4 != 0) {
          lVar10 = *(longlong *)(lVar4 + 0x10);
        }
        FUN_181341510(lVar10,param_1);
      }
      local_38 = (longlong *)param_1[0x19];
      (**(code **)(*local_38 + 0xb8))(local_38,local_30,param_1 + 0x1a);
      local_28 = (undefined8 *)param_1[0x1b];
      if (local_28 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_28 + 1) = *(int *)(local_28 + 1) + 1;
        UNLOCK();
      }
      local_20 = param_1[0x1c];
      bVar3 = *(byte *)(param_1 + 0x15);
      (**(code **)(*param_1 + 0x58))(param_1,0);
      uStack_54 = *(undefined4 *)(param_2 + 0xc);
      local_58 = *(undefined4 *)(param_2 + 8);
      uVar5 = *(undefined8 *)(param_2 + 8);
      for (lVar10 = *(longlong *)(param_2 + 0x30); lVar10 != 0;
          lVar10 = *(longlong *)(lVar10 + 0x18)) {
        puVar8 = (undefined8 *)FUN_18051e290(local_48,lVar10,uVar5);
        uVar5 = *puVar8;
      }
      plVar9 = (longlong *)FUN_1804e8770(param_1,uVar5,&local_20,local_40);
      if ((bVar3 >> 1 & 1) != 0) {
        FUN_1804e8d50(param_1,plVar9 == (longlong *)0x0);
      }
      if (param_1[3] != 0) {
        FUN_181343c70(param_1[3],param_1);
      }
      if (plVar9 != (longlong *)0x0) {
        FUN_1804dcbc0(param_1 + 0x20,0);
        (**(code **)(*plVar9 + 0x28))(plVar9,&local_38);
      }
      if (local_28 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_28 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*local_28)(local_28,1);
        }
      }
      (**(code **)(*local_38 + 0xb0))(local_38,local_30);
    }
  }
}



############ FUN_ 18051db10 size=295 ############

undefined8 * FUN_18051db10(undefined8 *param_1,longlong param_2,longlong param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined1 local_res18 [16];
  
  for (; param_3 != 0; param_3 = *(longlong *)(param_3 + 0x18)) {
    lVar1 = param_2;
    if (param_3 == param_2) goto LAB_18051dc21;
    while (lVar1 != 0) {
      lVar1 = *(longlong *)(lVar1 + 0x18);
      if (lVar1 == param_3) {
        if (*(longlong *)(param_2 + 0x18) == param_3) {
          FUN_18051e060(param_1,param_2,param_4);
          return param_1;
        }
        puVar4 = (undefined8 *)FUN_180520050(local_res18,param_3);
        FUN_18051e060(param_1,param_2,*puVar4);
        return param_1;
      }
    }
    puVar4 = (undefined8 *)FUN_18051e290(local_res18,param_3,param_4);
    param_4 = *puVar4;
  }
  if (param_2 != 0) {
    lVar3 = *(longlong *)(param_2 + 0x18);
    lVar1 = param_2;
    while (lVar2 = lVar3, lVar2 != 0) {
      lVar1 = lVar2;
      lVar3 = *(longlong *)(lVar2 + 0x18);
    }
    puVar4 = (undefined8 *)FUN_18051e060(local_res18,lVar1,param_4);
    param_4 = *puVar4;
    if (lVar1 != param_2) {
      FUN_180520050(param_1,lVar1,param_2);
      return param_1;
    }
  }
LAB_18051dc21:
  *param_1 = param_4;
  return param_1;
}



############ FUN_ 1804e80e0 size=133 ############

void FUN_1804e80e0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  bool bVar3;
  undefined8 *puVar4;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  if (*(longlong *)(param_2 + 0x38) != param_1) {
    if ((*(int *)(*(longlong *)(param_2 + 0x50) + 0x14) == *(int *)(param_1 + 0x124)) &&
       (*(int *)(*(longlong *)(param_2 + 0x50) + 0x10) == *(int *)(param_1 + 0x120))) {
      bVar3 = true;
    }
    else {
      bVar3 = false;
    }
    if (bVar3) {
      local_res8 = *(undefined4 *)(param_2 + 8);
      uStackX_c = *(undefined4 *)(param_2 + 0xc);
      uVar2 = *(undefined8 *)(param_2 + 8);
      for (lVar1 = *(longlong *)(param_2 + 0x30); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
        puVar4 = (undefined8 *)FUN_18051e290(&local_res8,lVar1,uVar2);
        uVar2 = *puVar4;
      }
      FUN_1804e8170(param_1,1);
    }
  }
  return;
}



############ FUN_ 18114c8a0 size=587 ############

void FUN_18114c8a0(longlong param_1,longlong param_2,undefined4 param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong lVar7;
  undefined8 *puVar8;
  uint *puVar9;
  undefined8 extraout_XMM0_Qa;
  float fVar10;
  longlong local_d8 [2];
  undefined8 local_c8;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined8 local_b8;
  undefined8 uStack_b0;
  longlong local_a8;
  undefined8 local_a0;
  undefined1 local_98 [8];
  undefined1 local_90 [8];
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [80];
  
  local_a0 = 0xfffffffffffffffe;
  lVar2 = *(longlong *)(param_2 + 0x38);
  if (lVar2 != 0) {
    lVar7 = __RTDynamicCast(lVar2,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::AudioProcessorEditor::RTTI_Type_Descriptor,0);
    if (lVar7 == 0) {
      lVar7 = FUN_18114c730(extraout_XMM0_Qa,*(undefined8 *)(lVar2 + 0x18));
    }
    if (lVar7 != 0) {
      FUN_18114c790(param_1,local_d8,*(undefined8 *)(lVar7 + 0xb0));
      local_a8 = *(longlong *)(*(longlong *)(param_2 + 0x38) + 8);
      puVar9 = (uint *)(local_a8 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        *puVar9 = *puVar9 + 1;
        UNLOCK();
      }
      uStack_bc = *(undefined4 *)(lVar7 + 0x2c);
      uStack_c0 = *(undefined4 *)(lVar7 + 0x28);
      uStack_b0 = *(undefined8 *)(lVar7 + 0x28);
      local_c8 = 0;
      local_b8 = 0;
      if (lVar7 == 0) {
        local_b8 = 0;
      }
      else {
        do {
          local_88 = local_b8;
          uStack_80 = uStack_b0;
          puVar8 = (undefined8 *)FUN_18051e4b0(local_78,lVar7,&local_88);
          local_b8 = *puVar8;
          uStack_b0 = puVar8[1];
          lVar7 = *(longlong *)(lVar7 + 0x18);
        } while (lVar7 != 0);
      }
      iVar4 = (int)uStack_b0;
      fVar10 = (float)(int)((ulonglong)uStack_b0 >> 0x20);
      uVar3 = *(undefined8 *)(param_2 + 8);
      for (lVar2 = *(longlong *)(param_2 + 0x30); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
        puVar8 = (undefined8 *)FUN_18051e290(local_98,lVar2,uVar3);
        uVar3 = *puVar8;
      }
      iVar5 = (int)uVar3 - (int)local_b8;
      uVar3 = *(undefined8 *)(param_2 + 8);
      for (lVar2 = *(longlong *)(param_2 + 0x30); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
        puVar8 = (undefined8 *)FUN_18051e290(local_90,lVar2,uVar3);
        uVar3 = *puVar8;
      }
      local_b8._4_4_ = (int)((ulonglong)local_b8 >> 0x20);
      iVar6 = (int)((ulonglong)uVar3 >> 0x20) - local_b8._4_4_;
      FUN_18114dc20(param_1 + 0x18,local_d8,param_3,(float)iVar5 / (float)iVar4,
                    (float)iVar6 / fVar10,(float)iVar4 / fVar10,&local_a8);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_d8[0] + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
    }
  }
  return;
}



############ FUN_ 18131c750 size=526 ############

void FUN_18131c750(longlong param_1,longlong param_2)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  int iVar5;
  undefined8 local_res8;
  undefined8 local_res18;
  
  if (*(char *)(param_1 + 0x5d8) == '\0') {
    if (*(char *)(param_1 + 0x5b9) != '\0') {
      local_res18 = (double)*(float *)(param_2 + 0x2c) + DAT_1824c4520;
      local_res8 = CONCAT44((undefined4)local_res18,
                            SUB84((double)*(float *)(param_2 + 0x28) + DAT_1824c4520,0));
      FUN_18051db10(&local_res18,param_1,*(undefined8 *)(param_2 + 0x30),local_res8);
      local_res8 = *(longlong *)(param_2 + 8);
      FUN_18051db10(&local_res8,param_1,*(undefined8 *)(param_2 + 0x30),local_res8);
      if (((((SUB84(local_res18,0) < 0) || ((longlong)local_res18 < 0)) ||
           (*(int *)(param_1 + 0x28) <= SUB84(local_res18,0))) ||
          (*(int *)(param_1 + 0x2c) <= local_res18._4_4_)) &&
         (((-1 < (int)local_res8 && (-1 < local_res8)) &&
          (((int)local_res8 < *(int *)(param_1 + 0x28) &&
           (local_res8._4_4_ < *(int *)(param_1 + 0x2c))))))) {
        *(undefined1 *)(param_1 + 0x5d8) = 1;
        *(undefined8 *)(param_1 + 0x5c8) = *(undefined8 *)(param_1 + 0x20);
        *(undefined8 *)(param_1 + 0x5d0) = *(undefined8 *)(param_1 + 0x28);
      }
    }
    return;
  }
  local_res8 = *(undefined8 *)(param_2 + 8);
  if (*(longlong *)(param_1 + 0x18) == 0) {
    uVar4 = local_res8;
    for (lVar2 = *(longlong *)(param_2 + 0x30); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      puVar3 = (undefined8 *)FUN_18051e290(&local_res8,lVar2,uVar4);
      uVar4 = *puVar3;
    }
  }
  else {
    FUN_18051db10(&local_res8,*(longlong *)(param_1 + 0x18),*(undefined8 *)(param_2 + 0x30),
                  local_res8);
    uVar4 = local_res8;
  }
  auVar1 = *(undefined1 (*) [16])(param_1 + 0x20);
  if (*(char *)(param_1 + 0x5b8) != '\0') {
    iVar5 = (*(int *)(param_1 + 0x5d0) - (int)uVar4) + *(int *)(param_1 + 0x5c8);
    *(int *)(param_1 + 0x5dc) = iVar5;
    if (iVar5 < 0) {
      iVar5 = 0;
    }
    FUN_18134bfe0(param_1,*(int *)(param_1 + 0x5c8) - iVar5,auVar1._4_4_,auVar1._8_4_,auVar1._12_4_)
    ;
    return;
  }
  iVar5 = (int)uVar4 - *(int *)(param_1 + 0x5c8);
  *(int *)(param_1 + 0x5dc) = iVar5;
  if (iVar5 < 0) {
    iVar5 = 0;
  }
  FUN_18134bfe0(param_1,iVar5 + *(int *)(param_1 + 0x5c8),auVar1._4_4_,auVar1._8_4_,auVar1._12_4_);
  return;
}



############ FUN_ 181339680 size=86 ############

undefined8 * FUN_181339680(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  local_res8 = *(undefined4 *)(param_1 + 8);
  uStackX_c = *(undefined4 *)(param_1 + 0xc);
  uVar2 = *(undefined8 *)(param_1 + 8);
  for (lVar1 = *(longlong *)(param_1 + 0x30); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
    puVar3 = (undefined8 *)FUN_18051e290(&local_res8,lVar1,uVar2);
    uVar2 = *puVar3;
  }
  *param_2 = uVar2;
  return param_2;
}



############ FUN_ 181344ab0 size=68 ############

undefined8 * FUN_181344ab0(longlong param_1,undefined8 *param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  undefined1 local_res8 [8];
  
  if (param_1 != 0) {
    for (; param_1 != 0; param_1 = *(longlong *)(param_1 + 0x18)) {
      puVar1 = (undefined8 *)FUN_18051e290(local_res8,param_1);
      param_3 = *puVar1;
    }
  }
  *param_2 = param_3;
  return param_2;
}



############ FUN_ 181344b60 size=78 ############

undefined8 * FUN_181344b60(longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined8 local_res8;
  
  uVar1 = 0;
  local_res8 = 0;
  if (param_1 != 0) {
    for (; param_1 != 0; param_1 = *(longlong *)(param_1 + 0x18)) {
      puVar2 = (undefined8 *)FUN_18051e290(&local_res8,param_1,uVar1);
      uVar1 = *puVar2;
    }
  }
  *param_2 = uVar1;
  return param_2;
}



############ FUN_ 18134b240 size=72 ############

ulonglong FUN_18134b240(longlong param_1)

{
  longlong lVar1;
  ulonglong uVar2;
  ulonglong *puVar3;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  local_res8 = *(undefined4 *)(param_1 + 8);
  uStackX_c = *(undefined4 *)(param_1 + 0xc);
  uVar2 = *(ulonglong *)(param_1 + 8);
  for (lVar1 = *(longlong *)(param_1 + 0x30); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
    puVar3 = (ulonglong *)FUN_18051e290(&local_res8,lVar1,uVar2);
    uVar2 = *puVar3;
  }
  return uVar2 >> 0x20;
}



############ FUN_ 18134b290 size=68 ############

void FUN_18134b290(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  local_res8 = *(undefined4 *)(param_1 + 8);
  uStackX_c = *(undefined4 *)(param_1 + 0xc);
  uVar2 = *(undefined8 *)(param_1 + 8);
  for (lVar1 = *(longlong *)(param_1 + 0x30); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
    puVar3 = (undefined8 *)FUN_18051e290(&local_res8,lVar1,uVar2);
    uVar2 = *puVar3;
  }
  return;
}



############ FUN_ 1812c73f0 size=109 ############

double FUN_1812c73f0(void)

{
  int iVar1;
  int iVar2;
  HDC hdc;
  double dVar3;
  
  FUN_1812c75b0();
  hdc = GetDC((HWND)0x0);
  iVar1 = GetDeviceCaps(hdc,0x5a);
  iVar2 = GetDeviceCaps(hdc,0x58);
  dVar3 = (double)(iVar1 + iVar2) * DAT_1824c4050;
  ReleaseDC((HWND)0x0,hdc);
  return dVar3;
}



############ FUN_ 1812c7510 size=147 ############

undefined1
FUN_1812c7510(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  int local_res8 [8];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267b0f8) {
    _Init_thread_header(&DAT_18267b0f8);
    if (DAT_18267b0f8 == -1) {
      FUN_1812c75b0();
      bVar1 = false;
      if (DAT_182678ed8 != (code *)0x0) {
        (*DAT_182678ed8)(0,local_res8,param_3,param_4,uVar2);
        bVar1 = local_res8[0] == 2;
      }
      DAT_18267b0ac = bVar1;
      _Init_thread_footer(&DAT_18267b0f8);
      return DAT_18267b0ac;
    }
  }
  return DAT_18267b0ac;
}



############ FUN_ 1812c53e0 size=1133 ############

void FUN_1812c53e0(longlong *param_1,float param_2)

{
  int *piVar1;
  double dVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  char cVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined8 *puVar15;
  longlong lVar16;
  HDC hdc;
  int iVar17;
  uint uVar18;
  int iVar19;
  int *piVar20;
  int iVar21;
  int iVar22;
  double dVar23;
  double dVar24;
  undefined1 auStack_188 [32];
  int *local_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 uStack_150;
  longlong local_148;
  int local_140;
  int iStack_13c;
  int local_138;
  int iStack_134;
  int *local_130;
  undefined4 local_128;
  int iStack_124;
  int iStack_120;
  int iStack_11c;
  int iStack_118;
  int iStack_114;
  int iStack_110;
  int iStack_10c;
  int iStack_108;
  undefined4 local_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  double local_f8;
  double dStack_f0;
  undefined8 local_e8;
  int local_e0;
  int local_dc;
  int local_d8;
  int local_d4;
  int local_d0;
  int iStack_cc;
  int iStack_c8;
  int iStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  double dStack_b8;
  ulonglong local_b0;
  
  local_e8 = 0xfffffffffffffffe;
  local_b0 = DAT_182615970 ^ (ulonglong)auStack_188;
  FUN_1812c75b0();
  local_148 = 0;
  if (((DAT_182678ee8 != (code *)0x0) && (DAT_182678ec8 != (code *)0x0)) &&
     (DAT_182678f18 != (code *)0x0)) {
    (*DAT_182678f18)();
    iVar12 = (*DAT_182678ec8)();
    if (iVar12 != 2) {
      local_148 = (*DAT_182678ee8)();
    }
  }
  local_168 = (int *)0x0;
  local_160._0_4_ = 0;
  local_160._4_4_ = 0;
  EnumDisplayMonitors((HDC)0x0,(LPCRECT)0x0,FUN_1812c58b0,(LPARAM)&local_168);
  dVar23 = (double)FUN_1812c73f0();
  if (local_160._4_4_ == 0) {
    GetDesktopWindow();
    puVar15 = (undefined8 *)FUN_1812c6d70(&local_e0);
    local_d0 = CONCAT31(local_d0._1_3_,1);
    iStack_cc = (int)*puVar15;
    iStack_c8 = (int)((ulonglong)*puVar15 >> 0x20);
    iStack_c4 = (int)puVar15[1];
    uStack_c0 = (undefined4)((ulonglong)puVar15[1] >> 0x20);
    dStack_b8 = dVar23;
    uVar18 = (uint)local_160;
    if (((int)(uint)local_160 < (int)(local_160._4_4_ + 1)) &&
       (uVar18 = local_160._4_4_ + 9 + (int)(local_160._4_4_ + 1) / 2 & 0xfffffff8,
       (uint)local_160 != uVar18)) {
      if ((int)uVar18 < 1) {
                    /* WARNING: Subroutine does not return */
        free(local_168);
      }
      if (local_168 == (int *)0x0) {
        local_168 = malloc((longlong)(int)uVar18 << 5);
      }
      else {
        local_168 = realloc(local_168,(longlong)(int)uVar18 << 5);
      }
    }
    local_160._0_4_ = uVar18;
    lVar16 = (longlong)(int)local_160._4_4_;
    local_160._4_4_ = local_160._4_4_ + 1;
    piVar20 = local_168 + lVar16 * 8;
    *(ulonglong *)piVar20 = CONCAT44(iStack_cc,local_d0);
    *(ulonglong *)(piVar20 + 2) = CONCAT44(iStack_c4,iStack_c8);
    *(ulonglong *)(piVar20 + 4) = CONCAT44(uStack_bc,uStack_c0);
    *(double *)(piVar20 + 6) = dStack_b8;
  }
  uVar18 = 1;
  if (1 < (int)local_160._4_4_) {
    lVar16 = 0x20;
    do {
      if (((*(char *)((longlong)local_168 + lVar16) != '\0') && (uVar18 < local_160._4_4_)) &&
         (local_160._4_4_ != 0)) {
        uVar4 = *(undefined8 *)((longlong)local_168 + lVar16);
        uVar5 = ((undefined8 *)((longlong)local_168 + lVar16))[1];
        puVar15 = (undefined8 *)((longlong)local_168 + lVar16 + 0x10);
        uVar6 = *puVar15;
        uVar7 = puVar15[1];
        uVar3 = *(undefined8 *)(local_168 + 2);
        *(undefined8 *)((longlong)local_168 + lVar16) = *(undefined8 *)local_168;
        ((undefined8 *)((longlong)local_168 + lVar16))[1] = uVar3;
        uVar3 = *(undefined8 *)(local_168 + 6);
        puVar15 = (undefined8 *)((longlong)local_168 + lVar16 + 0x10);
        *puVar15 = *(undefined8 *)(local_168 + 4);
        puVar15[1] = uVar3;
        *(undefined8 *)local_168 = uVar4;
        *(undefined8 *)(local_168 + 2) = uVar5;
        *(undefined8 *)(local_168 + 4) = uVar6;
        *(undefined8 *)(local_168 + 6) = uVar7;
      }
      uVar18 = uVar18 + 1;
      lVar16 = lVar16 + 0x20;
    } while ((int)uVar18 < (int)local_160._4_4_);
  }
  dVar10 = DAT_1824c42e8;
  dVar9 = DAT_1824c4140;
  dVar8 = DAT_1824c4050;
  local_130 = local_168 + (longlong)(int)local_160._4_4_ * 8;
  if (local_168 != local_130) {
    piVar20 = local_168 + 4;
    do {
      local_104 = 0;
      uStack_100 = 0;
      iVar12 = piVar20[-4];
      local_128 = CONCAT31(local_128._1_3_,(char)iVar12);
      dVar2 = *(double *)(piVar20 + 2);
      if (dVar2 == 0.0) {
        local_f8 = (double)param_2;
        dStack_f0 = dVar23;
      }
      else {
        dVar24 = dVar9;
        dStack_f0 = dVar2;
        if ((DAT_1826736d8 != 0) && (cVar11 = FUN_1812c7510(), cVar11 == '\0')) {
          FUN_1812c75b0();
          hdc = GetDC((HWND)0x0);
          iVar13 = GetDeviceCaps(hdc,0x5a);
          iVar14 = GetDeviceCaps(hdc,0x58);
          ReleaseDC((HWND)0x0,hdc);
          dVar24 = ((double)(iVar13 + iVar14) * dVar8) / dVar10;
        }
        local_f8 = ((double)param_2 / dVar24) * (dVar2 / dVar10);
      }
      iVar13 = piVar20[-2];
      iVar14 = piVar20[-3];
      iVar22 = piVar20[-1] - iVar14;
      iVar19 = *piVar20 - iVar13;
      iStack_124 = iVar14;
      iStack_120 = iVar13;
      iStack_11c = iVar22;
      iStack_118 = iVar19;
      iStack_114 = iVar14;
      iStack_110 = iVar13;
      iStack_10c = iVar22;
      iStack_108 = iVar19;
      local_d0 = iVar14;
      iStack_cc = iVar13;
      iStack_c8 = iVar22;
      iStack_c4 = iVar19;
      if ((char)iVar12 != '\0') {
        SystemParametersInfoW(0x30,0,&local_e0,0);
        local_140 = local_e0;
        iStack_13c = local_dc;
        local_138 = local_d8 - local_e0;
        iStack_134 = local_d4 - local_dc;
        iVar12 = iVar14;
        if (iVar14 < local_e0) {
          iVar12 = local_e0;
        }
        iVar21 = iVar13;
        if (iVar13 < local_dc) {
          iVar21 = local_dc;
        }
        iVar17 = iVar22 + iVar14;
        if (local_138 + local_e0 < iVar22 + iVar14) {
          iVar17 = local_138 + local_e0;
        }
        if (iVar17 - iVar12 < 0) {
LAB_1812c57bf:
          local_158 = 0;
          uStack_150 = 0;
        }
        else {
          iVar14 = iVar19 + iVar13;
          if (iStack_134 + local_dc < iVar19 + iVar13) {
            iVar14 = iStack_134 + local_dc;
          }
          if (iVar14 - iVar21 < 0) goto LAB_1812c57bf;
          local_158 = CONCAT44(iVar21,iVar12);
          uStack_150 = CONCAT44(iVar14 - iVar21,iVar17 - iVar12);
        }
        iStack_114 = (int)local_158;
        iStack_110 = (int)((ulonglong)local_158 >> 0x20);
        iStack_10c = (int)uStack_150;
        iStack_108 = (int)((ulonglong)uStack_150 >> 0x20);
      }
      FUN_18051d660(param_1);
      iVar12 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar12 + 1;
      puVar15 = (undefined8 *)((longlong)iVar12 * 0x40 + *param_1);
      *puVar15 = CONCAT44(iStack_124,local_128);
      puVar15[1] = CONCAT44(iStack_11c,iStack_120);
      puVar15[2] = CONCAT44(iStack_114,iStack_118);
      puVar15[3] = CONCAT44(iStack_10c,iStack_110);
      puVar15[4] = CONCAT44(local_104,iStack_108);
      puVar15[5] = CONCAT44(uStack_fc,uStack_100);
      puVar15[6] = local_f8;
      puVar15[7] = dStack_f0;
      piVar1 = piVar20 + 4;
      piVar20 = piVar20 + 8;
    } while (piVar1 != local_130);
  }
  FUN_18133c890(param_1);
  if (local_148 != 0) {
    (*DAT_182678ee8)(local_148);
  }
  local_160 = (ulonglong)(uint)local_160;
                    /* WARNING: Subroutine does not return */
  free(local_168);
}



############ FUN_ 1813240c0 size=127 ############

undefined8 * FUN_1813240c0(undefined8 *param_1)

{
  *param_1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0();
  param_1[1] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 6) = 0;
  param_1[3] = param_1;
  param_1[8] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 9) = 0;
  *param_1 = juce::ComponentAnimator::vftable;
  param_1[7] = juce::ComponentAnimator::vftable;
  param_1[10] = 0;
  param_1[0xb] = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  return param_1;
}



############ FUN_ 1812299e0 size=175 ############

void FUN_1812299e0(longlong param_1,longlong param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x22c);
  EnterCriticalSection(lpCriticalSection);
  if (*(longlong *)(param_1 + 0x268) == param_2) {
    LeaveCriticalSection(lpCriticalSection);
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x200));
    EnterCriticalSection(lpCriticalSection);
    FUN_180488600(param_1 + 600,param_2);
    LeaveCriticalSection(lpCriticalSection);
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x200));
    EnterCriticalSection(lpCriticalSection);
  }
  else {
    FUN_180488600(param_1 + 600,param_2);
  }
                    /* WARNING: Could not recover jumptable at 0x000181229a88. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection(lpCriticalSection);
  return;
}



############ FUN_ 1804e7610 size=190 ############

ulonglong FUN_1804e7610(longlong param_1,ulonglong param_2)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  ulonglong uVar4;
  
  FUN_180488600(param_1 + 0x18);
  uVar4 = 0;
  if (*(longlong *)(param_1 + 8) != 0) {
    uVar4 = *(ulonglong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  if (uVar4 == param_2) {
    FUN_1813224b0(param_1);
  }
  uVar4 = *(ulonglong *)(param_1 + 0x40);
  if (uVar4 != param_2) {
    if (uVar4 == 0) {
      return 0;
    }
    while (uVar4 = *(ulonglong *)(uVar4 + 0x18), uVar4 != param_2) {
      if (uVar4 == 0) {
        return 0;
      }
    }
  }
  *(undefined1 *)(param_1 + 0x5d) = 0;
  if ((*(char *)(param_1 + 0x5c) != '\0') &&
     (*(undefined1 *)(param_1 + 0x5c) = 0, lVar3 = DAT_182673c20, DAT_182673c20 != 0)) {
    uVar4 = 0;
    puVar1 = (uint *)(*(longlong *)(DAT_182673c20 + 8) + 0x18);
    LOCK();
    uVar2 = *puVar1;
    if (uVar2 == 0) {
      *puVar1 = 1;
    }
    else {
      uVar4 = (ulonglong)uVar2;
    }
    UNLOCK();
    if ((uVar2 == 0) && (uVar4 = FUN_1812a6720(*(undefined8 *)(lVar3 + 8)), (char)uVar4 == '\0')) {
      uVar4 = *(ulonglong *)(lVar3 + 8);
      LOCK();
      *(undefined4 *)(uVar4 + 0x18) = 0;
      UNLOCK();
    }
  }
  return uVar4;
}



############ FUN_ 1813292f0 size=102 ############

void FUN_1813292f0(undefined8 *param_1)

{
  *param_1 = juce::FileChooserDialogBox::vftable;
  param_1[0x28] = juce::FileChooserDialogBox::vftable;
  FUN_180488600(*(longlong *)(param_1[0x29] + 0xb0) + 0x110,param_1 + 0x28);
  param_1[0x28] = juce::FileBrowserListener::vftable;
  FUN_1812cf990(param_1);
  return;
}



############ FUN_ 181229610 size=602 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181229610(longlong param_1)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  LPCRITICAL_SECTION lpCriticalSection_00;
  longlong lVar2;
  double dVar3;
  double dVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  ulonglong uVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  longlong lVar13;
  ulonglong uVar14;
  undefined1 auStack_98 [40];
  undefined8 local_70;
  LPCRITICAL_SECTION local_68;
  longlong local_60;
  ushort local_58;
  ulonglong local_50;
  
  dVar4 = DAT_1824c4340;
  dVar3 = DAT_1824c3e30;
  local_70 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_98;
  uVar14 = 0;
LAB_181229661:
  if (*(int *)(param_1 + 0x1b8) != 0) {
  }
  uVar8 = 500;
  lVar6 = 0;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x22c);
  EnterCriticalSection(lpCriticalSection);
  plVar1 = (longlong *)(param_1 + 600);
  iVar10 = *(int *)(param_1 + 0x264);
  if (iVar10 < 1) {
    uVar14 = 0;
  }
  else {
    uVar14 = (longlong)((int)uVar14 + 1) % (longlong)iVar10 & 0xffffffff;
  }
  lVar7 = 0;
  lVar13 = 0;
  iVar9 = iVar10 + -1;
  iVar12 = (int)uVar14;
  if (-1 < iVar9) {
    iVar11 = iVar9 + iVar12;
    do {
      lVar2 = *(longlong *)(*plVar1 + (longlong)(iVar11 % iVar10) * 8);
      if ((lVar13 == 0) || (*(longlong *)(lVar2 + 8) < lVar7)) {
        lVar7 = *(longlong *)(lVar2 + 8);
        lVar13 = lVar2;
      }
      iVar11 = iVar11 + -1;
      iVar9 = iVar9 + -1;
    } while (-1 < iVar9);
    if (lVar13 != 0) {
      lVar6 = *(longlong *)(lVar13 + 8);
    }
  }
  LeaveCriticalSection(lpCriticalSection);
  if (0 < iVar10) goto code_r0x000181229707;
  goto LAB_18122984a;
code_r0x000181229707:
  _ftime64_s(&local_60);
  lVar7 = local_60 * 1000 + (ulonglong)local_58;
  if (lVar7 < lVar6) {
    uVar5 = (ulonglong)((double)(lVar6 - lVar7) * dVar3 * dVar4);
    uVar8 = 500;
    if ((longlong)uVar5 < 500) {
      uVar8 = uVar5 & 0xffffffff;
    }
  }
  else {
    uVar8 = (ulonglong)(iVar12 == 0);
    lpCriticalSection_00 = (LPCRITICAL_SECTION)(param_1 + 0x200);
    local_68 = lpCriticalSection_00;
    EnterCriticalSection(lpCriticalSection_00);
    EnterCriticalSection(lpCriticalSection);
    lVar6 = 0;
    lVar13 = 0;
    iVar10 = *(int *)(param_1 + 0x264) + -1;
    if (-1 < iVar10) {
      iVar12 = iVar10 + iVar12;
      do {
        lVar2 = *(longlong *)(*plVar1 + (longlong)(iVar12 % *(int *)(param_1 + 0x264)) * 8);
        if ((lVar13 == 0) || (*(longlong *)(lVar2 + 8) < lVar6)) {
          lVar6 = *(longlong *)(lVar2 + 8);
          lVar13 = lVar2;
        }
        iVar12 = iVar12 + -1;
        iVar10 = iVar10 + -1;
      } while (-1 < iVar10);
    }
    *(longlong *)(param_1 + 0x268) = lVar13;
    LeaveCriticalSection(lpCriticalSection);
    if (*(longlong **)(param_1 + 0x268) != (longlong *)0x0) {
      iVar10 = (**(code **)(**(longlong **)(param_1 + 0x268) + 8))();
      EnterCriticalSection(lpCriticalSection);
      if (iVar10 < 0) {
        FUN_180488600(plVar1,*(undefined8 *)(param_1 + 0x268));
      }
      else {
        *(longlong *)(*(longlong *)(param_1 + 0x268) + 8) =
             (longlong)((double)iVar10 * dVar3 * dVar4) + lVar7;
      }
      *(undefined8 *)(param_1 + 0x268) = 0;
      LeaveCriticalSection(lpCriticalSection);
    }
    LeaveCriticalSection(lpCriticalSection_00);
  }
  if (0 < (int)uVar8) {
LAB_18122984a:
    FUN_181215c90(param_1 + 0xf8,uVar8);
  }
  goto LAB_181229661;
}



############ FUN_ 1812ef080 size=28 ############

void FUN_1812ef080(longlong param_1)

{
  FUN_180488600(param_1 + 0x10);
  *(undefined1 *)(param_1 + 0x30) = 0;
  return;
}



############ FUN_ 181322730 size=62 ############

void FUN_181322730(longlong param_1,longlong param_2)

{
  longlong lVar1;
  
  FUN_180488600(param_1 + 0x18);
  lVar1 = 0;
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x10);
  }
  if (lVar1 == param_2) {
    FUN_1813224b0(param_1);
  }
  return;
}



############ FUN_ 1804789b0 size=370 ############

void FUN_1804789b0(longlong param_1)

{
  undefined1 *puVar1;
  undefined1 uVar2;
  int iVar3;
  longlong lVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  longlong lVar8;
  undefined4 uVar9;
  double dVar10;
  undefined8 local_48;
  int iStack_40;
  int iStack_3c;
  undefined1 *local_38;
  undefined8 uStack_30;
  
  lVar4 = *(longlong *)(param_1 + 0xb0);
  if (lVar4 != 0) {
    iStack_3c = *(int *)(lVar4 + 0x2c);
    iStack_40 = *(int *)(lVar4 + 0x28);
    uStack_30 = *(undefined8 *)(lVar4 + 0x28);
    lVar8 = 0;
    local_48 = 0;
    local_38 = (undefined1 *)0x0;
    FUN_18051df30(&local_48,param_1,lVar4,&local_38);
    iVar6 = iStack_3c;
    iVar5 = iStack_40;
    piVar7 = (int *)FUN_180473b00();
    iVar3 = *piVar7;
    FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),iVar5,
                  iVar6);
    lVar4 = *(longlong *)(param_1 + 0xb8);
    if (*(longlong *)(lVar4 + 0x30) != 0) {
      dVar10 = (double)((float)iVar5 * *(float *)(lVar4 + 0x78)) + DAT_1824c4520;
      local_48 = 0;
      iStack_40 = SUB84(dVar10,0);
      uVar9 = SUB84((double)((float)iVar6 * *(float *)(lVar4 + 0x78)) + DAT_1824c4520,0);
      puVar1 = (undefined1 *)(param_1 + 0xd5);
      uVar2 = *puVar1;
      uStack_30 = CONCAT71(uStack_30._1_7_,uVar2);
      *puVar1 = 1;
      lVar4 = *(longlong *)(param_1 + 0xb8);
      if (lVar4 != 0) {
        lVar8 = lVar4 + 0x10;
      }
      iStack_3c = uVar9;
      local_38 = puVar1;
      (**(code **)(**(longlong **)(lVar4 + 0x30) + 0x18))
                (*(longlong **)(lVar4 + 0x30),lVar8,&local_48);
      *puVar1 = uVar2;
      if ((iVar3 - 0x30U < 5) || (iVar3 - 1U < 6)) {
        FUN_18134bfe0(param_1,0,0,(ulonglong)dVar10 & 0xffffffff,uVar9);
      }
    }
  }
  return;
}



############ FUN_ 180478800 size=426 ############

void FUN_180478800(longlong param_1)

{
  uint uVar1;
  longlong lVar2;
  ulonglong uVar3;
  double dVar4;
  double dVar5;
  int local_res8;
  ulonglong local_28;
  uint uStack_20;
  int iStack_1c;
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if ((*(longlong *)(param_1 + 0xb0) != 0) && (FUN_180478740(), *(char *)(param_1 + 0xd5) == '\0'))
  {
    uStack_20 = *(uint *)(param_1 + 0x28);
    iStack_1c = *(int *)(param_1 + 0x2c);
    *(undefined1 *)(param_1 + 0xd4) = 1;
    local_28 = 0;
    *(undefined4 *)(param_1 + 0xc4) = 0;
    *(undefined4 *)(param_1 + 200) = 0;
    *(uint *)(param_1 + 0xcc) = uStack_20;
    *(int *)(param_1 + 0xd0) = iStack_1c;
    lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x100);
    if (lVar2 != 0) {
      dVar5 = *(double *)(lVar2 + 0x28);
      uVar1 = *(uint *)(param_1 + 0xcc);
      uVar3 = (ulonglong)uVar1;
      dVar4 = (double)*(int *)(param_1 + 0xd0);
      if (dVar5 != 0.0) {
        local_28 = 0;
        if ((double)(int)uVar1 / dVar4 <= dVar5) {
          local_res8 = SUB84((double)(int)uVar1 / dVar5 + DAT_1824c4520,0);
          iStack_1c = local_res8;
          uStack_20 = uVar1;
        }
        else {
          dVar5 = dVar4 * dVar5 + DAT_1824c4520;
          uVar3 = (ulonglong)dVar5 & 0xffffffff;
          uStack_20 = SUB84(dVar5,0);
          iStack_1c = *(int *)(param_1 + 0xd0);
        }
        FUN_18134bfe0(param_1,0,0,uVar3,iStack_1c);
      }
    }
    lVar2 = *(longlong *)(param_1 + 0xb0);
    FUN_18134bfe0(lVar2,0,0,*(undefined4 *)(lVar2 + 0x28),*(undefined4 *)(lVar2 + 0x2c));
    uStack_20 = *(undefined4 *)(param_1 + 0x28);
    iStack_1c = *(undefined4 *)(param_1 + 0x2c);
    local_28 = 0;
    local_18 = 0;
    uStack_14 = 0;
    uStack_10 = uStack_20;
    uStack_c = iStack_1c;
    FUN_18051df30(&local_28,*(undefined8 *)(param_1 + 0xb0),param_1,&local_18);
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0xb0),local_28,local_28 >> 0x20,uStack_20,iStack_1c);
    *(undefined1 *)(param_1 + 0xd4) = 0;
  }
  return;
}



############ FUN_ 1813165e0 size=2420 ############

void FUN_1813165e0(longlong *param_1)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  longlong *plVar4;
  bool bVar5;
  ulonglong uVar6;
  double *pdVar7;
  double *pdVar8;
  uint7 uVar9;
  int iVar10;
  uint uVar11;
  char cVar12;
  char cVar13;
  int iVar14;
  ulonglong uVar15;
  double dVar16;
  int local_res8;
  int iStackX_c;
  char local_res10;
  char local_res18;
  int local_res20;
  int local_188;
  int iStack_174;
  uint uStack_16c;
  double local_148;
  double dStack_140;
  undefined8 local_138;
  undefined8 uStack_130;
  int local_128;
  int iStack_124;
  undefined4 uStack_120;
  undefined4 uStack_11c;
  int local_118;
  int iStack_114;
  uint uStack_110;
  uint uStack_10c;
  int local_108;
  int iStack_104;
  uint uStack_100;
  uint uStack_fc;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  int local_d8;
  int iStack_d4;
  int iStack_d0;
  int iStack_cc;
  int local_c8;
  int iStack_c4;
  int iStack_c0;
  int iStack_bc;
  int local_b8;
  int iStack_b4;
  int iStack_b0;
  int iStack_ac;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  longlong local_88;
  longlong lStack_80;
  double local_78;
  double dStack_70;
  longlong local_68;
  longlong lStack_60;
  
  iVar1 = (int)param_1[0x33];
  if ((iVar1 < (int)param_1[5]) && (iVar1 < *(int *)((longlong)param_1 + 0x2c))) {
    bVar5 = true;
  }
  else {
    bVar5 = false;
  }
  if ((*(char *)((longlong)param_1 + 0x1a4) == '\0') || (!bVar5)) {
    local_res18 = '\0';
  }
  else {
    local_res18 = '\x01';
  }
  if ((*(char *)((longlong)param_1 + 0x1a5) == '\0') || (!bVar5)) {
    local_res10 = '\0';
  }
  else {
    local_res10 = '\x01';
  }
  uVar15 = 0;
  local_118 = 0;
  iStack_114 = 0;
  local_res20 = 2;
  do {
    if ((local_res18 == '\0') || (*(char *)(param_1[0x19] + 0x12e) != '\0')) {
      pdVar8 = (double *)0x0;
    }
    else {
      pdVar8 = (double *)0x1;
    }
    if ((local_res10 == '\0') || (*(char *)(param_1[0x18] + 0x12e) != '\0')) {
      cVar12 = '\0';
    }
    else {
      cVar12 = '\x01';
    }
    uStack_10c = *(uint *)((longlong)param_1 + 0x2c);
    uStack_110 = *(uint *)(param_1 + 5);
    lVar2 = param_1[0x30];
    iVar14 = 0;
    uVar11 = uStack_110;
    uStack_16c = uStack_10c;
    if ((lVar2 == 0) || (*(longlong *)(lVar2 + 0x10) == 0)) {
LAB_1813168eb:
      local_res8 = CONCAT31(local_res8._1_3_,cVar12);
      if (cVar12 != '\0') {
LAB_1813168f6:
        uVar11 = (int)param_1[5] - iVar1;
      }
    }
    else {
      uVar6 = uVar15;
      if (lVar2 != 0) {
        uVar6 = *(ulonglong *)(lVar2 + 0x10);
      }
      local_d8 = *(int *)(uVar6 + 0x20);
      iStack_d4 = *(int *)(uVar6 + 0x24);
      iStack_d0 = *(int *)(uVar6 + 0x28);
      iStack_cc = *(int *)(uVar6 + 0x2c);
      if ((((-1 < local_d8) && (iStack_114 <= iStack_d4)) &&
          (local_d8 + iStack_d0 <= (int)uStack_110)) &&
         (iStack_cc + iStack_d4 <= (int)(uStack_10c + iStack_114))) goto LAB_1813168eb;
      if (local_res18 == '\0') {
LAB_18131678d:
        pdVar8 = (double *)0x0;
      }
      else {
        if ((char)pdVar8 == '\0') {
          uVar6 = uVar15;
          if (param_1[0x30] != 0) {
            uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
          }
          if (-1 < *(int *)(uVar6 + 0x20)) {
            uVar6 = uVar15;
            if (param_1[0x30] != 0) {
              uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
            }
            if (*(int *)(uVar6 + 0x28) + *(int *)(uVar6 + 0x20) <= (int)uStack_110)
            goto LAB_18131678d;
          }
        }
        pdVar8 = (double *)0x1;
      }
      if (local_res10 == '\0') {
LAB_1813167e7:
        cVar12 = '\0';
      }
      else {
        if (cVar12 == '\0') {
          uVar6 = uVar15;
          if (param_1[0x30] != 0) {
            uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
          }
          if (-1 < *(int *)(uVar6 + 0x24)) {
            uVar6 = uVar15;
            if (param_1[0x30] != 0) {
              uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
            }
            if (*(int *)(uVar6 + 0x2c) + *(int *)(uVar6 + 0x24) <= (int)uStack_10c)
            goto LAB_1813167e7;
          }
        }
        cVar12 = '\x01';
        uVar11 = (int)param_1[5] - iVar1;
      }
      if ((char)pdVar8 != '\0') {
        uStack_16c = *(int *)((longlong)param_1 + 0x2c) - iVar1;
      }
      uVar6 = uVar15;
      if (param_1[0x30] != 0) {
        uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
      }
      local_c8 = *(int *)(uVar6 + 0x20);
      iStack_c4 = *(int *)(uVar6 + 0x24);
      iStack_c0 = *(int *)(uVar6 + 0x28);
      iStack_bc = *(int *)(uVar6 + 0x2c);
      if (((local_118 <= local_c8) && (iStack_114 <= iStack_c4)) &&
         ((local_c8 + iStack_c0 <= (int)(local_118 + uVar11) &&
          (iStack_bc + iStack_c4 <= (int)(uStack_16c + iStack_114))))) goto LAB_1813168eb;
      if (local_res18 == '\0') {
LAB_1813168a2:
        pdVar8 = (double *)0x0;
      }
      else {
        if ((char)pdVar8 == '\0') {
          uVar6 = uVar15;
          if (param_1[0x30] != 0) {
            uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
          }
          if (*(int *)(uVar6 + 0x28) + *(int *)(uVar6 + 0x20) <= (int)uVar11) goto LAB_1813168a2;
        }
        pdVar8 = (double *)0x1;
      }
      if (local_res10 != '\0') {
        if (cVar12 == '\0') {
          uVar6 = uVar15;
          if (param_1[0x30] != 0) {
            uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
          }
          if (*(int *)(uVar6 + 0x2c) + *(int *)(uVar6 + 0x24) <= (int)uStack_16c)
          goto LAB_1813168d8;
        }
        cVar12 = '\x01';
        local_res8 = CONCAT31(local_res8._1_3_,1);
        goto LAB_1813168f6;
      }
LAB_1813168d8:
      cVar12 = '\0';
      local_res8 = (uint)local_res8._1_3_ << 8;
    }
    cVar13 = (char)pdVar8;
    if (cVar13 != '\0') {
      uStack_16c = *(int *)((longlong)param_1 + 0x2c) - iVar1;
    }
    iVar10 = local_118;
    if ((*(char *)((longlong)param_1 + 0x1aa) == '\0') && (cVar12 != '\0')) {
      iVar10 = iVar1;
    }
    iStack_174 = iStack_114;
    if ((*(char *)((longlong)param_1 + 0x1ab) == '\0') && (iStack_174 = iStack_114, cVar13 != '\0'))
    {
      iStack_174 = iVar1;
    }
    lVar2 = param_1[0x30];
    if ((lVar2 == 0) || (*(longlong *)(lVar2 + 0x10) == 0)) {
      FUN_18134bfe0(param_1 + 0x1a,iVar10,iStack_174,uVar11,uStack_16c);
LAB_181316a1c:
      local_138 = 0;
      uStack_130 = 0;
      uVar6 = uVar15;
      if (param_1[0x30] != 0) {
        uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
      }
      if (uVar6 != 0) {
        uStack_e0 = *(undefined4 *)(uVar6 + 0x28);
        uStack_dc = *(undefined4 *)(uVar6 + 0x2c);
        uStack_a0 = *(undefined8 *)(uVar6 + 0x28);
        local_e8 = 0;
        local_a8 = 0;
        FUN_18051df30(&local_98,param_1 + 0x1a,uVar6,&local_a8);
        local_138 = local_98;
        uStack_130 = uStack_90;
      }
      plVar3 = (longlong *)param_1[0x19];
      local_188 = -(int)local_138;
      plVar4 = (longlong *)param_1[0x18];
      local_res20 = -local_138._4_4_;
      uVar6 = uVar15;
      if (*(char *)((longlong)param_1 + 0x1ab) != '\0') {
        uVar6 = (ulonglong)uStack_16c;
      }
      local_128 = local_188;
      iStack_124 = local_res20;
      FUN_18134bfe0(plVar3,iVar10,uVar6,uVar11,iVar1);
      dVar16 = (double)(int)uStack_130;
      if (dVar16 <= 0.0) {
        dVar16 = 0.0;
      }
      if (((double)plVar3[0x1b] != 0.0) || ((double)plVar3[0x1c] != dVar16)) {
        local_88 = plVar3[0x1d];
        lStack_80 = plVar3[0x1e];
        plVar3[0x1c] = (longlong)dVar16;
        plVar3[0x1b] = 0;
        FUN_18131e660(plVar3,&local_88);
        FUN_18131e060(plVar3);
      }
      local_148 = (double)local_188;
      dStack_140 = local_148;
      if (local_148 < (double)(int)uVar11 + local_148) {
        dStack_140 = (double)(int)uVar11 + local_148;
      }
      dStack_70 = dStack_140;
      local_78 = local_148;
      FUN_18131e660(plVar3,&local_78);
      plVar3[0x1f] = (longlong)(double)*(int *)((longlong)param_1 + 0x19c);
      if ((local_res18 != '\0') && (local_128 = local_188, cVar13 == '\0')) {
        local_188 = iVar14;
        local_128 = iVar14;
      }
      uVar6 = uVar15;
      if (*(char *)((longlong)param_1 + 0x1aa) != '\0') {
        uVar6 = (ulonglong)uVar11;
      }
      FUN_18134bfe0(plVar4,uVar6,iStack_174,iVar1,uStack_16c);
      dVar16 = (double)uStack_130._4_4_;
      if (dVar16 <= 0.0) {
        dVar16 = 0.0;
      }
      if (((double)plVar4[0x1b] != 0.0) || ((double)plVar4[0x1c] != dVar16)) {
        local_68 = plVar4[0x1d];
        lStack_60 = plVar4[0x1e];
        plVar4[0x1c] = (longlong)dVar16;
        plVar4[0x1b] = 0;
        FUN_18131e660(plVar4,&local_68);
        FUN_18131e060(plVar4);
      }
      local_148 = (double)local_res20;
      dStack_140 = local_148;
      if (local_148 < (double)(int)uStack_16c + local_148) {
        dStack_140 = (double)(int)uStack_16c + local_148;
      }
      pdVar7 = &local_148;
      FUN_18131e660(plVar4,pdVar7);
      plVar4[0x1f] = (longlong)(double)(int)param_1[0x34];
      if ((local_res10 != '\0') && (iStack_124 = local_res20, (char)local_res8 == '\0')) {
        local_res20 = iVar14;
        iStack_124 = iVar14;
      }
      if ((undefined **)*plVar3 == juce::ScrollBar::vftable) {
        pdVar8 = pdVar7;
        if (*(char *)((longlong)plVar3 + 0x12f) != cVar13) {
          *(char *)((longlong)plVar3 + 0x12f) = cVar13;
          if (cVar13 == '\0') {
            pdVar8 = (double *)((ulonglong)pdVar7 & 0xffffffffffffff00);
            .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(plVar3,pdVar8);
          }
          else {
            uVar9 = (uint7)((ulonglong)pdVar7 >> 8);
            if ((*(char *)((longlong)plVar3 + 0x12e) == '\0') ||
               (((double)plVar3[0x1e] - (double)plVar3[0x1d] <
                 (double)plVar3[0x1c] - (double)plVar3[0x1b] &&
                (0.0 < (double)plVar3[0x1e] - (double)plVar3[0x1d])))) {
              pdVar8 = (double *)CONCAT71(uVar9,1);
              .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(plVar3,pdVar8);
            }
            else {
              pdVar8 = (double *)((ulonglong)uVar9 << 8);
              .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(plVar3,pdVar8);
            }
          }
        }
      }
      else {
        (*(code *)((undefined **)*plVar3)[0xb])(plVar3,pdVar8);
      }
      if ((undefined **)*plVar4 == juce::ScrollBar::vftable) {
        if (*(char *)((longlong)plVar4 + 0x12f) != (char)local_res8) {
          *(char *)((longlong)plVar4 + 0x12f) = (char)local_res8;
          if ((char)local_res8 == '\0') {
            .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                      (plVar4,(ulonglong)pdVar8 & 0xffffffffffffff00);
          }
          else {
            uVar9 = (uint7)((ulonglong)pdVar8 >> 8);
            if ((*(char *)((longlong)plVar4 + 0x12e) == '\0') ||
               (((double)plVar4[0x1e] - (double)plVar4[0x1d] <
                 (double)plVar4[0x1c] - (double)plVar4[0x1b] &&
                (0.0 < (double)plVar4[0x1e] - (double)plVar4[0x1d])))) {
              .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                        (plVar4,CONCAT71(uVar9,1));
            }
            else {
              .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__
                        (plVar4,(ulonglong)uVar9 << 8);
            }
          }
        }
      }
      else {
        (*(code *)((undefined **)*plVar4)[0xb])(plVar4,(char)local_res8);
      }
      if ((param_1[0x30] != 0) && (*(longlong *)(param_1[0x30] + 0x10) != 0)) {
        FUN_1813173a0(param_1,&local_res8,CONCAT44(iStack_124,local_128));
        uVar6 = uVar15;
        if (param_1[0x30] != 0) {
          uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
        }
        local_128 = *(int *)(uVar6 + 0x20);
        iStack_124 = *(int *)(uVar6 + 0x24);
        uStack_120 = *(undefined4 *)(uVar6 + 0x28);
        uStack_11c = *(undefined4 *)(uVar6 + 0x2c);
        if ((local_128 != local_res8) || (iStack_124 != iStackX_c)) {
          if (param_1[0x30] != 0) {
            uVar15 = *(ulonglong *)(param_1[0x30] + 0x10);
          }
          FUN_18134bfe0(uVar15,local_res8,iStackX_c,*(undefined4 *)(uVar15 + 0x28),
                        *(undefined4 *)(uVar15 + 0x2c));
          return;
        }
      }
      local_108 = local_188;
      iStack_104 = local_res20;
      uStack_100 = (int)uStack_130 - local_188;
      if ((int)uVar11 < (int)uStack_130 - local_188) {
        uStack_100 = uVar11;
      }
      uStack_fc = uStack_130._4_4_ - local_res20;
      if ((int)uStack_16c < uStack_130._4_4_ - local_res20) {
        uStack_fc = uStack_16c;
      }
      if (((((int)param_1[0x31] != local_188) ||
           (*(int *)((longlong)param_1 + 0x18c) != local_res20)) ||
          (*(uint *)(param_1 + 0x32) != uStack_100)) ||
         (*(uint *)((longlong)param_1 + 0x194) != uStack_fc)) {
        param_1[0x31] = CONCAT44(local_res20,local_188);
        param_1[0x32] = CONCAT44(uStack_fc,uStack_100);
        (**(code **)(*param_1 + 0x158))(param_1,&local_108);
      }
      LOCK();
      iVar1 = *(int *)(plVar3[0x17] + 0x18);
      *(int *)(plVar3[0x17] + 0x18) = 0;
      UNLOCK();
      if (iVar1 != 0) {
        (**(code **)(plVar3[0x16] + 8))();
      }
      LOCK();
      iVar1 = *(int *)(plVar4[0x17] + 0x18);
      *(int *)(plVar4[0x17] + 0x18) = 0;
      UNLOCK();
      if (iVar1 != 0) {
        (**(code **)(plVar4[0x16] + 8))();
      }
      return;
    }
    uVar6 = uVar15;
    if (lVar2 != 0) {
      uVar6 = *(ulonglong *)(lVar2 + 0x10);
    }
    local_f8 = *(undefined8 *)(uVar6 + 0x20);
    uStack_f0 = *(undefined8 *)(uVar6 + 0x28);
    FUN_18134bfe0(param_1 + 0x1a,iVar10,iStack_174,uVar11,uStack_16c);
    uVar6 = uVar15;
    if (param_1[0x30] != 0) {
      uVar6 = *(ulonglong *)(param_1[0x30] + 0x10);
    }
    local_b8 = *(int *)(uVar6 + 0x20);
    iStack_b4 = *(int *)(uVar6 + 0x24);
    iStack_b0 = *(int *)(uVar6 + 0x28);
    iStack_ac = *(int *)(uVar6 + 0x2c);
    if ((((((int)local_f8 == local_b8) && (local_f8._4_4_ == iStack_b4)) &&
         ((int)uStack_f0 == iStack_b0)) && (uStack_f0._4_4_ == iStack_ac)) ||
       (local_res20 = local_res20 + -1, local_res20 < 0)) goto LAB_181316a1c;
  } while( true );
}



############ FUN_ 181317310 size=95 ############

void FUN_181317310(longlong param_1,undefined8 param_2)

{
  ulonglong *puVar1;
  longlong lVar2;
  undefined1 local_res8 [32];
  
  lVar2 = *(longlong *)(param_1 + 0x180);
  if ((lVar2 != 0) && (*(longlong *)(lVar2 + 0x10) != 0)) {
    if (lVar2 == 0) {
      lVar2 = 0;
    }
    else {
      lVar2 = *(longlong *)(lVar2 + 0x10);
    }
    puVar1 = (ulonglong *)FUN_1813173a0(param_1,local_res8,param_2);
    FUN_18134bfe0(lVar2,*puVar1 & 0xffffffff,*puVar1 >> 0x20,*(undefined4 *)(lVar2 + 0x28),
                  *(undefined4 *)(lVar2 + 0x2c));
  }
  return;
}



############ FUN_ 18050beb0 size=357 ############

void FUN_18050beb0(longlong param_1,int param_2)

{
  uint uVar1;
  byte bVar2;
  int iVar3;
  undefined8 *puVar4;
  int iVar5;
  byte *pbVar6;
  uint *_Memory;
  longlong lVar7;
  longlong local_res8;
  void *local_60;
  ulonglong local_58;
  undefined8 local_50;
  undefined4 local_48;
  undefined1 *local_40;
  undefined4 local_38;
  undefined4 local_34;
  undefined8 local_30;
  undefined8 local_28;
  undefined8 local_20;
  
  local_40 = &DAT_1821dbf98;
  local_38 = 0;
  local_30 = 1;
  lVar7 = 0;
  local_28 = 0;
  local_20 = 0;
  local_34 = 9;
  puVar4 = (undefined8 *)FUN_1812dc020(param_1,&local_res8);
  FUN_181232d30(&local_40,puVar4);
  pbVar6 = (byte *)*puVar4;
LAB_18050bf26:
  do {
    bVar2 = *pbVar6;
    pbVar6 = pbVar6 + 1;
    if ((char)bVar2 < '\0') {
      if ((*pbVar6 & 0xc0) == 0x80) {
        do {
          pbVar6 = pbVar6 + 1;
        } while ((*pbVar6 & 0xc0) == 0x80);
        lVar7 = lVar7 + 1;
        goto LAB_18050bf26;
      }
    }
    else if (bVar2 == 0) {
      FUN_1812554b0(&local_28,lVar7,param_1 + 0x298,0);
      _Memory = (uint *)(local_res8 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      local_60 = (void *)0x0;
      local_58 = 0;
      local_50 = 0;
      local_48 = 9;
      FUN_18124e270(&local_60,&local_40,(float)param_2 - DAT_1824c43d8);
      iVar5 = (int)(local_50._4_4_ + *(float *)(*(longlong *)(param_1 + 0x298) + 0x28));
      iVar3 = param_2;
      if (iVar5 < param_2) {
        iVar3 = iVar5;
      }
      FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),param_2,
                    iVar3);
      FUN_1804ae9d0(&local_60);
      local_58 = local_58 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_60);
    }
    lVar7 = lVar7 + 1;
  } while( true );
}



############ FUN_ 181344560 size=265 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181344560(longlong param_1,int param_2,int param_3)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  int local_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  ulonglong local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  ulonglong local_30;
  undefined1 local_28 [32];
  
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 == (undefined8 *)0x0) {
    local_40 = _DAT_1824c4780;
    uStack_38 = _UNK_1824c4788;
    local_30 = (ulonglong)DAT_1824c3ea4;
  }
  else {
    local_40 = *puVar1;
    uStack_38 = puVar1[1];
    local_30 = puVar1[2];
  }
  local_58 = (int)local_40;
  iStack_54 = local_40._4_4_;
  iStack_50 = (int)uStack_38;
  iStack_4c = uStack_38._4_4_;
  local_48 = local_30;
  uVar2 = FUN_1812a04f0(&local_58,local_28);
  uVar3 = FUN_1804e4fb0(&local_40,param_1);
  FUN_1804b1290(uVar3,&local_58,uVar2);
  FUN_18134bfe0(param_1,(iStack_50 / 2 - param_2 / 2) + local_58,
                (iStack_4c / 2 - param_3 / 2) + iStack_54,param_2,param_3);
  return;
}



############ FUN_ 180500cb0 size=160 ############

void FUN_180500cb0(longlong param_1,char param_2)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  
  *(undefined1 *)(param_1 + 0x1dc) = 0;
  lVar6 = 0;
  if (*(longlong *)(param_1 + 0x180) != 0) {
    lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
  }
  lVar2 = *(longlong *)(param_1 + 0x1b8);
  iVar4 = *(int *)(lVar6 + 0x24);
  iVar3 = *(int *)(lVar2 + 0xf8);
  if (*(int *)(lVar2 + 0xf8) < *(int *)(param_1 + 0xf8)) {
    iVar3 = *(int *)(param_1 + 0xf8);
  }
  iVar5 = *(int *)(lVar2 + 0xf4) * *(int *)(lVar2 + 0xf0);
  iVar1 = *(int *)(param_1 + 0xfc);
  if ((iVar5 + iVar4 < iVar1) && (iVar1 < iVar5)) {
    iVar4 = iVar1 - iVar5;
  }
  FUN_18134bfe0(lVar6,*(undefined4 *)(lVar6 + 0x20),iVar4,iVar3,iVar5);
  if ((param_2 != '\0') && (*(char *)(param_1 + 0x1dc) == '\0')) {
    FUN_180500d50(param_1);
  }
  return;
}



############ FUN_ 181332960 size=213 ############

void FUN_181332960(longlong param_1,undefined8 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  int *piVar6;
  int iVar7;
  undefined8 local_res8;
  undefined1 local_18 [16];
  
  iVar4 = 0;
  local_res8._4_4_ = 0;
  lVar5 = __RTDynamicCast(*(undefined8 *)(param_1 + 0x18),0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::DrawableComposite::RTTI_Type_Descriptor,0);
  if (lVar5 != 0) {
    iVar4 = (int)*(undefined8 *)(lVar5 + 0xb0);
    local_res8._4_4_ = (int)((ulonglong)*(undefined8 *)(lVar5 + 0xb0) >> 0x20);
  }
  piVar6 = (int *)FUN_1804ab070(param_2,local_18);
  iVar1 = *piVar6;
  iVar2 = piVar6[2];
  iVar7 = piVar6[1] + local_res8._4_4_;
  iVar3 = piVar6[3];
  local_res8 = CONCAT44(local_res8._4_4_ - iVar7,iVar4 - (iVar1 + iVar4));
  *(undefined8 *)(param_1 + 0xb0) = local_res8;
  FUN_18134bfe0(param_1,iVar1 + iVar4,iVar7,iVar2,iVar3);
  return;
}



############ FUN_ 1812ce910 size=118 ############

void FUN_1812ce910(longlong param_1,undefined1 (*param_2) [16])

{
  undefined1 auVar1 [16];
  uint in_stack_ffffffffffffffc8;
  undefined8 local_18;
  undefined8 uStack_10;
  
  if (*(longlong *)(param_1 + 0x138) != 0) {
    local_18 = *(undefined8 *)*param_2;
    uStack_10 = *(undefined8 *)(*param_2 + 8);
    FUN_1813489c0(*(longlong *)(param_1 + 0x138),param_1,&local_18,0,
                  in_stack_ffffffffffffffc8 & 0xffffff00,0,0);
    return;
  }
  auVar1 = *param_2;
  FUN_18134bfe0(param_1,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_4_,auVar1._12_4_);
  return;
}



############ FUN_ 1812e0480 size=356 ############

void FUN_1812e0480(longlong param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  float fVar5;
  char cVar6;
  uint *_Memory;
  float fVar7;
  int local_res8;
  int local_res10;
  undefined1 local_88 [4];
  float local_84;
  float local_7c;
  float local_70;
  longlong local_30;
  
  if ((*(char *)(param_1 + 0x1ef) == '\0') ||
     (0.0 < (float)((*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - *(int *)(param_1 + 0x288)) +
                   -3))) {
    iVar2 = *(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8);
    iVar3 = *(int *)(param_1 + 0x288);
    FUN_1805074f0(local_88,param_1);
    cVar6 = FUN_1805075e0(local_88);
    fVar7 = (float)((iVar2 - iVar3) + -3);
    while (cVar6 != '\0') {
      fVar5 = local_70;
      if (local_70 <= fVar7) {
        fVar5 = fVar7;
      }
      cVar6 = FUN_1805075e0(local_88);
      fVar7 = fVar5;
    }
    local_res8 = SUB84((double)fVar7 + DAT_1824c4520,0);
    fVar7 = *(float *)(*(longlong *)(param_1 + 0x298) + 0x28);
    if (fVar7 <= local_7c + local_84) {
      fVar7 = local_7c + local_84;
    }
    local_res10 = SUB84((double)fVar7 + DAT_1824c4520,0);
    lVar4 = *(longlong *)(param_1 + 0x1d0);
    FUN_18134bfe0(lVar4,*(undefined4 *)(lVar4 + 0x20),*(undefined4 *)(lVar4 + 0x24),
                  local_res8 + 2 + *(int *)(param_1 + 0x288),
                  local_res10 + 1 + *(int *)(param_1 + 0x28c));
    _Memory = (uint *)(local_30 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 181344690 size=309 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181344690(longlong param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  int iVar2;
  float *pfVar3;
  undefined8 uVar4;
  int iVar5;
  int iStackX_14;
  undefined8 local_58;
  undefined8 uStack_50;
  ulonglong local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  ulonglong local_30;
  undefined1 local_28 [40];
  
  puVar1 = *(undefined8 **)(param_1 + 0x38);
  if (puVar1 == (undefined8 *)0x0) {
    local_58 = _DAT_1824c4780;
    uStack_50 = _UNK_1824c4788;
    local_48 = (ulonglong)DAT_1824c3ea4;
  }
  else {
    local_58 = *puVar1;
    uStack_50 = puVar1[1];
    local_48 = puVar1[2];
  }
  local_40 = local_58;
  uStack_38 = uStack_50;
  local_30 = local_48;
  uVar4 = param_2;
  pfVar3 = (float *)FUN_1812a04f0(&local_40,local_28);
  iStackX_14 = (int)((ulonglong)param_2 >> 0x20);
  iVar2 = SUB164(*(undefined1 (*) [16])(param_1 + 0x20),0xc);
  iVar5 = SUB164(*(undefined1 (*) [16])(param_1 + 0x20),8);
  FUN_18134bfe0(param_1,(int)((float)iStackX_14 * pfVar3[1] + (float)(int)uVar4 * *pfVar3 +
                             pfVar3[2]) - iVar5 / 2,
                (int)((float)(int)uVar4 * pfVar3[3] + (float)iStackX_14 * pfVar3[4] + pfVar3[5]) -
                iVar2 / 2,iVar5,iVar2);
  return;
}



############ FUN_ 18051c3e0 size=307 ############

void FUN_18051c3e0(longlong param_1,double param_2)

{
  double dVar1;
  longlong *plVar2;
  ulonglong *puVar3;
  int iVar4;
  longlong lVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined1 local_res10 [8];
  
  dVar1 = *(double *)(param_1 + 0x48);
  uVar6 = SUB84(dVar1,0);
  uVar7 = (undefined4)((ulonglong)dVar1 >> 0x20);
  if (dVar1 <= param_2) {
    dVar1 = *(double *)(param_1 + 0x50);
    uVar6 = SUB84(dVar1,0);
    uVar7 = (undefined4)((ulonglong)dVar1 >> 0x20);
    if (param_2 <= dVar1) {
      uVar6 = SUB84(param_2,0);
      uVar7 = (undefined4)((ulonglong)param_2 >> 0x20);
    }
  }
  if (*(double *)(param_1 + 0x30) != (double)CONCAT44(uVar7,uVar6)) {
    *(ulonglong *)(param_1 + 0x30) = CONCAT44(uVar7,uVar6);
    iVar4 = *(int *)(param_1 + 0x74);
    while (0 < iVar4) {
      iVar4 = iVar4 + -1;
      if ((*(int *)(param_1 + 0x74) <= iVar4) && (iVar4 = *(int *)(param_1 + 0x74) + -1, iVar4 < 0))
      {
        return;
      }
      plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x68) + (longlong)iVar4 * 8);
      if ((undefined **)*plVar2 == juce::Viewport::DragToScrollListener::vftable) {
        lVar5 = *(longlong *)(plVar2[1] + 0x180);
        if ((lVar5 != 0) && (*(longlong *)(lVar5 + 0x10) != 0)) {
          if (lVar5 == 0) {
            lVar5 = 0;
          }
          else {
            lVar5 = *(longlong *)(lVar5 + 0x10);
          }
          puVar3 = (ulonglong *)
                   FUN_1813173a0(plVar2[1],local_res10,
                                 CONCAT44(*(int *)((longlong)plVar2 + 0x104) -
                                          (int)(double)plVar2[0x17],
                                          (int)plVar2[0x20] - (int)(double)plVar2[8]));
          FUN_18134bfe0(lVar5,*puVar3 & 0xffffffff,*puVar3 >> 0x20,*(undefined4 *)(lVar5 + 0x28),
                        *(undefined4 *)(lVar5 + 0x2c));
        }
      }
      else {
        (*(code *)((undefined **)*plVar2)[1])(plVar2,param_1,uVar6);
      }
    }
  }
  return;
}



############ FUN_ 1804f9f30 size=341 ############

void FUN_1804f9f30(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong lVar5;
  
  lVar5 = param_1[0x16];
  if (*param_2 == lVar5) {
    return;
  }
  if (lVar5 != 0) {
    plVar2 = (longlong *)param_1[8];
    for (plVar4 = plVar2; plVar4 != plVar2 + *(int *)((longlong)param_1 + 0x4c); plVar4 = plVar4 + 1
        ) {
      if (lVar5 == *plVar4) {
        lVar5 = (longlong)plVar4 - (longlong)plVar2 >> 3;
        goto LAB_1804f9f83;
      }
    }
    lVar5 = 0xffffffff;
LAB_1804f9f83:
    FUN_181343a90(param_1,lVar5,1);
  }
  lVar5 = *param_2;
  if (lVar5 == 0) {
    puVar3 = (undefined8 *)param_1[0x16];
    param_1[0x16] = 0;
  }
  else {
    if (param_1[0x16] == lVar5) goto LAB_1804f9fec;
    *(int *)(lVar5 + 0xb8) = *(int *)(lVar5 + 0xb8) + 1;
    puVar3 = (undefined8 *)param_1[0x16];
    param_1[0x16] = lVar5;
  }
  if (puVar3 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar3 + 0x17);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
LAB_1804f9fec:
  plVar2 = (longlong *)param_1[0x16];
  (**(code **)(*plVar2 + 0x58))(plVar2,1);
  FUN_181343cc0(param_1,plVar2,0xffffffff);
  if ((undefined **)*param_1 != juce::CustomMenuBarItemHolder::vftable) {
    (*(code *)((undefined **)*param_1)[0x21])(param_1);
    return;
  }
  FUN_18134bfe0(param_1[0x16],0,0,(int)param_1[5],*(undefined4 *)((longlong)param_1 + 0x2c));
  return;
}



############ FUN_ 1804fa090 size=68 ############

void FUN_1804fa090(longlong param_1)

{
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0xb0),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1804fa7c0 size=181 ############

void FUN_1804fa7c0(longlong param_1)

{
  longlong lVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  
  if ((*(int *)(param_1 + 0x4c) != 0) && (lVar1 = **(longlong **)(param_1 + 0x40), lVar1 != 0)) {
    lVar5 = FUN_18134adf0();
    pcVar2 = *(code **)(*(longlong *)(lVar5 + 0x40) + 0x80);
    if (pcVar2 == FUN_18130fd40) {
      iVar4 = 2;
    }
    else {
      iVar4 = (*pcVar2)(lVar5 + 0x40);
    }
    iVar6 = *(int *)(param_1 + 0x28) + iVar4 * -2;
    iVar3 = 0;
    if (0 < iVar6) {
      iVar3 = iVar6;
    }
    iVar6 = 0;
    if (0 < *(int *)(param_1 + 0x2c)) {
      iVar6 = *(int *)(param_1 + 0x2c);
    }
    FUN_18134bfe0(lVar1,iVar4,0,iVar3,iVar6);
  }
  return;
}



############ FUN_ 1804fd6e0 size=189 ############

void FUN_1804fd6e0(longlong param_1)

{
  int iVar1;
  int iVar2;
  int iStack_24;
  int iStack_1c;
  
  iVar1 = *(int *)(param_1 + 300);
  iStack_1c = *(int *)(param_1 + 0x134);
  iVar2 = *(int *)(param_1 + 0x148);
  if (iVar2 < 0) {
    iStack_24 = iVar1 - iVar2;
    iVar1 = (iStack_1c - iStack_24) + iVar1;
    iStack_1c = 0;
    if (0 < iVar1) {
      iStack_1c = iVar1;
    }
  }
  else {
    iStack_24 = iVar1;
    if ((0 < iVar2) && (iVar2 = (iVar2 - *(int *)(param_1 + 0x144)) + iStack_1c, 0 < iVar2)) {
      iStack_1c = iStack_1c - iVar2;
    }
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x128),iStack_24,*(undefined4 *)(param_1 + 0x130),
                iStack_1c);
  FUN_1804fd880(param_1);
  return;
}



############ FUN_ 1804fd880 size=402 ############

int FUN_1804fd880(longlong param_1)

{
  code *pcVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  int local_res8;
  uint local_res10;
  longlong local_res18;
  
  iVar7 = 0;
  local_res8 = 0;
  local_res10 = 0;
  if (0 < *(int *)(param_1 + 0x140)) {
    local_res18 = 0;
    do {
      iVar6 = *(int *)(param_1 + 0x140);
      iVar3 = iVar6 + -1 + *(int *)(param_1 + 0x10c);
      iVar8 = *(int *)(param_1 + 0x10c) - local_res8;
      iVar4 = iVar3 / iVar6;
      if (iVar4 < iVar8) {
        iVar8 = iVar4;
      }
      if (local_res10 < *(uint *)(param_1 + 0x16c)) {
        iVar4 = *(int *)(local_res18 + *(longlong *)(param_1 + 0x160));
      }
      else {
        iVar4 = 0;
      }
      lVar5 = FUN_18134adf0(param_1,(longlong)iVar3 % (longlong)iVar6 & 0xffffffff);
      pcVar1 = *(code **)(*(longlong *)(lVar5 + 0x40) + 0x80);
      if (pcVar1 == FUN_18130fd40) {
        iVar6 = 2;
      }
      else {
        iVar6 = (*pcVar1)(lVar5 + 0x40);
      }
      iVar6 = ((*(int *)(param_1 + 300) - *(int *)(param_1 + 0x148)) - *(int *)(param_1 + 0x24)) +
              iVar6;
      lVar5 = (longlong)iVar8;
      if (0 < iVar8) {
        lVar9 = (longlong)local_res8 * 8;
        do {
          lVar2 = *(longlong *)(lVar9 + *(longlong *)(param_1 + 0x100));
          FUN_18134bfe0(lVar2,iVar7,iVar6,iVar4,*(undefined4 *)(lVar2 + 0x2c));
          iVar6 = iVar6 + *(int *)(lVar2 + 0x2c);
          lVar9 = lVar9 + 8;
          lVar5 = lVar5 + -1;
        } while (lVar5 != 0);
      }
      local_res10 = local_res10 + 1;
      local_res18 = local_res18 + 4;
      local_res8 = local_res8 + iVar8;
      iVar7 = iVar7 + iVar4;
    } while ((int)local_res10 < *(int *)(param_1 + 0x140));
  }
  return iVar7;
}



############ FUN_ 180500a00 size=76 ############

void FUN_180500a00(longlong param_1)

{
  if (*(longlong *)(param_1 + 0xc0) != 0) {
    FUN_18134bfe0(*(longlong *)(param_1 + 0xc0),0,0,*(undefined4 *)(param_1 + 0x28),
                  *(undefined4 *)(param_1 + 0x2c));
  }
  return;
}



############ FUN_ 1812c89a0 size=832 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812c89a0(longlong *param_1,int *param_2)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  int iVar4;
  int iVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  float fVar17;
  int local_res18 [2];
  int local_res20 [2];
  undefined8 local_78;
  int iStack_70;
  int iStack_6c;
  ulonglong local_68;
  undefined8 local_60;
  undefined8 uStack_58;
  ulonglong local_50;
  undefined1 local_48 [32];
  
  local_res20[0] = 0x96;
  local_res18[0] = 0x1e;
  if ((undefined **)*param_1 == juce::Slider::Pimpl::PopupDisplayComponent::vftable) {
    fVar17 = (float)FUN_1812518d0(param_1 + 0x21,param_1 + 0x22);
    fVar17 = ceilf(fVar17);
    local_res20[0] = (int)fVar17 + 0x12;
    iVar5 = (int)(*(float *)(param_1[0x21] + 0x28) * _DAT_1824c3fb4);
  }
  else {
    (*(code *)((undefined **)*param_1)[0x2b])(param_1,local_res20,local_res18);
    iVar5 = local_res18[0];
  }
  iVar4 = local_res20[0];
  *(undefined4 *)(param_1 + 0x16) = 0xf;
  *(undefined4 *)((longlong)param_1 + 0xb4) = 0xf;
  *(int *)(param_1 + 0x17) = local_res20[0];
  *(int *)((longlong)param_1 + 0xbc) = iVar5;
  lVar2 = param_1[3];
  if (lVar2 == 0) {
    puVar3 = (undefined8 *)param_1[7];
    if (puVar3 == (undefined8 *)0x0) {
      local_60 = _DAT_1824c4780;
      uStack_58 = _UNK_1824c4788;
      local_50 = (ulonglong)DAT_1824c3ea4;
    }
    else {
      local_60 = *puVar3;
      uStack_58 = puVar3[1];
      local_50 = puVar3[2];
    }
    local_78 = local_60;
    iStack_70 = (undefined4)uStack_58;
    iStack_6c = uStack_58._4_4_;
    local_68 = local_50;
    uVar6 = FUN_1812a04f0(&local_78,local_48);
    uVar7 = FUN_181344bc0(param_1,&local_78);
    piVar8 = (int *)FUN_1804b1290(uVar7,&local_60,uVar6);
  }
  else {
    local_78 = 0;
    iStack_70 = *(undefined4 *)(lVar2 + 0x28);
    iStack_6c = *(undefined4 *)(lVar2 + 0x2c);
    piVar8 = (int *)&local_78;
  }
  local_78 = *(undefined8 *)piVar8;
  iStack_70 = piVar8[2];
  iStack_6c = piVar8[3];
  uVar1 = *(uint *)(param_1 + 0x19);
  iVar13 = -1;
  iVar14 = iVar13;
  if ((uVar1 & 1) != 0) {
    iVar9 = param_2[1] - piVar8[1];
    iVar14 = 0;
    if (0 < iVar9) {
      iVar14 = iVar9;
    }
  }
  iVar9 = iVar13;
  if ((uVar1 & 2) != 0) {
    iVar10 = ((iStack_6c + piVar8[1]) - param_2[3]) - param_2[1];
    iVar9 = 0;
    if (0 < iVar10) {
      iVar9 = iVar10;
    }
  }
  if ((uVar1 & 4) != 0) {
    iVar10 = *param_2 - *piVar8;
    iVar13 = 0;
    if (0 < iVar10) {
      iVar13 = iVar10;
    }
  }
  iVar10 = -1;
  if ((uVar1 & 8) != 0) {
    iVar12 = ((*piVar8 - param_2[2]) - *param_2) + iStack_70;
    iVar10 = 0;
    if (0 < iVar12) {
      iVar10 = iVar12;
    }
  }
  iVar12 = param_2[3];
  iVar16 = param_2[2];
  if ((iVar12 * 2 < iVar16) && ((iVar5 + 0x32 < iVar14 || (iVar5 + 0x32 < iVar9)))) {
    iVar10 = 0;
    iVar13 = 0;
  }
  else if ((iVar16 < iVar12 / 2) && ((iVar4 + 0x32 < iVar13 || (iVar4 + 0x32 < iVar10)))) {
    iVar9 = 0;
    iVar14 = 0;
  }
  iVar15 = iVar13;
  if (iVar13 < iVar10) {
    iVar15 = iVar10;
  }
  iVar11 = iVar14;
  if (iVar14 < iVar9) {
    iVar11 = iVar9;
  }
  if (iVar11 < iVar15) {
    iVar15 = iVar12 / 2 + param_2[1];
    *(int *)((longlong)param_1 + 0xc4) = (iVar5 + 0x1e) / 2;
    if (iVar10 < iVar13) {
      iVar16 = *param_2;
      *(int *)(param_1 + 0x18) = (int)param_1[0x17] + 10 + (int)param_1[0x16];
    }
    else {
      iVar16 = iVar16 + *param_2;
      *(int *)(param_1 + 0x18) = (int)param_1[0x16] + -10;
    }
  }
  else {
    iVar16 = iVar16 / 2 + *param_2;
    *(int *)(param_1 + 0x18) = (iVar4 + 0x1e) / 2;
    iVar15 = param_2[1];
    if (iVar14 < iVar9) {
      iVar15 = iVar15 + iVar12;
      *(int *)((longlong)param_1 + 0xc4) = *(int *)((longlong)param_1 + 0xb4) + -10;
    }
    else {
      *(int *)((longlong)param_1 + 0xc4) =
           *(int *)((longlong)param_1 + 0xbc) + 10 + *(int *)((longlong)param_1 + 0xb4);
    }
  }
  FUN_18134bfe0(param_1,iVar16 - (int)param_1[0x18],iVar15 - *(int *)((longlong)param_1 + 0xc4),
                iVar4 + 0x1e,iVar5 + 0x1e);
  return;
}



############ FUN_ 180505e90 size=211 ############

void FUN_180505e90(longlong param_1,int param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xc0) + (longlong)param_2 * 8);
  if (lVar2 != 0) {
    iVar8 = 0;
    iVar7 = 0;
    lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x118);
    plVar5 = *(longlong **)(lVar3 + 0xc0);
    plVar1 = plVar5 + *(int *)(lVar3 + 0xcc);
    iVar4 = 0;
    for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
      iVar8 = iVar8 + iVar7;
      if ((*(byte *)(*plVar5 + 0xc) & 1) == 0) {
        iVar7 = 0;
        iVar6 = iVar4;
      }
      else {
        iVar7 = *(int *)(*plVar5 + 0x10);
        iVar6 = iVar4 + 1;
        if (iVar4 == param_2) break;
      }
      iVar4 = iVar6;
    }
    iVar4 = 0;
    if (0 < *(int *)(param_1 + 0x2c)) {
      iVar4 = *(int *)(param_1 + 0x2c);
    }
    FUN_18134bfe0(lVar2,iVar8,0,iVar7,iVar4);
  }
  return;
}



############ FUN_ 180505d80 size=264 ############

void FUN_180505d80(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  int iVar9;
  int iVar10;
  
  iVar7 = *(int *)(param_1 + 0xcc) + -1;
  lVar8 = (longlong)iVar7;
  if (-1 < iVar7) {
    do {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xc0) + lVar8 * 8);
      if (lVar2 != 0) {
        iVar10 = 0;
        iVar9 = 0;
        lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x118);
        plVar5 = *(longlong **)(lVar3 + 0xc0);
        plVar1 = plVar5 + *(int *)(lVar3 + 0xcc);
        iVar4 = 0;
        for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
          iVar10 = iVar10 + iVar9;
          if ((*(byte *)(*plVar5 + 0xc) & 1) == 0) {
            iVar9 = 0;
            iVar6 = iVar4;
          }
          else {
            iVar9 = *(int *)(*plVar5 + 0x10);
            iVar6 = iVar4 + 1;
            if (iVar4 == iVar7) break;
          }
          iVar4 = iVar6;
        }
        iVar4 = 0;
        if (0 < *(int *)(param_1 + 0x2c)) {
          iVar4 = *(int *)(param_1 + 0x2c);
        }
        FUN_18134bfe0(lVar2,iVar10,0,iVar9,iVar4);
      }
      iVar7 = iVar7 + -1;
      lVar8 = lVar8 + -1;
    } while (-1 < lVar8);
  }
  return;
}



############ FUN_ 180509650 size=110 ############

void FUN_180509650(longlong param_1)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined4 uVar3;
  undefined1 local_30 [16];
  undefined1 local_20 [24];
  
  if (*(longlong *)(param_1 + 0x18) == 0) {
    lVar2 = FUN_181344bc0(param_1,local_30);
    uVar3 = *(undefined4 *)(lVar2 + 0xc);
  }
  else {
    uVar3 = *(undefined4 *)(*(longlong *)(param_1 + 0x18) + 0x2c);
  }
  if (*(longlong *)(param_1 + 0x18) == 0) {
    lVar2 = FUN_181344bc0(param_1,local_20);
    uVar1 = *(undefined4 *)(lVar2 + 8);
  }
  else {
    uVar1 = *(undefined4 *)(*(longlong *)(param_1 + 0x18) + 0x28);
  }
  FUN_18134bfe0(param_1,0,0,uVar1,uVar3);
  return;
}



############ FUN_ 18050a130 size=606 ############

void FUN_18050a130(longlong param_1,int param_2)

{
  double dVar1;
  char cVar2;
  longlong *plVar3;
  ulonglong uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  double dVar11;
  undefined8 local_res8;
  int local_res10 [2];
  int local_res18 [2];
  int *in_stack_ffffffffffffff98;
  undefined4 uVar12;
  
  dVar1 = DAT_1824c4520;
  uVar12 = (undefined4)((ulonglong)in_stack_ffffffffffffff98 >> 0x20);
  uVar5 = 8;
  uVar4 = 0;
  iVar6 = 8;
  iVar7 = 0;
  puVar9 = *(undefined8 **)(param_1 + 0x40);
  uVar10 = (ulonglong)((longlong)(puVar9 + *(int *)(param_1 + 0x4c)) + (7 - (longlong)puVar9)) >> 3;
  if (puVar9 + *(int *)(param_1 + 0x4c) < puVar9) {
    uVar10 = uVar4;
  }
  uVar8 = uVar4;
  local_res10[0] = param_2;
  if (uVar10 != 0) {
    do {
      in_stack_ffffffffffffff98 = (int *)((ulonglong)in_stack_ffffffffffffff98 & 0xffffffff00000000)
      ;
      plVar3 = (longlong *)
               __RTDynamicCast(*puVar9,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::ToolbarItemComponent::RTTI_Type_Descriptor,
                               in_stack_ffffffffffffff98);
      uVar12 = (undefined4)((ulonglong)in_stack_ffffffffffffff98 >> 0x20);
      if (plVar3 != (longlong *)0x0) {
        iVar7 = *(int *)(param_1 + 0xd8);
        local_res10[0] = 1;
        local_res18[0] = 1;
        local_res8 = (double)CONCAT44(local_res8._4_4_,1);
        if ((undefined **)*plVar3 == juce::Toolbar::Spacer::vftable) {
          if (0.0 < *(float *)(plVar3 + 0x40)) {
            dVar11 = (double)((float)iVar7 * *(float *)(plVar3 + 0x40)) + dVar1;
            local_res10[0] = SUB84(dVar11,0);
            local_res8._4_4_ = (undefined4)((ulonglong)dVar11 >> 0x20);
            local_res18[0] = local_res10[0];
            if ((*(char *)((longlong)plVar3 + 0x204) == '\0') &&
               (local_res18[0] = 4, local_res10[0] < 4)) {
              local_res18[0] = local_res10[0];
            }
            if (*(int *)((longlong)plVar3 + 0x1cc) == 2) {
              local_res10[0] = iVar7 / (int)((*(char *)((longlong)plVar3 + 0x204) != '\0') + 2);
              local_res8 = (double)CONCAT44(local_res8._4_4_,local_res10[0]);
              dVar11 = local_res8;
            }
          }
          else {
            local_res10[0] = iVar7 * 2;
            local_res18[0] = 4;
            local_res8 = (double)CONCAT44(local_res8._4_4_,0x8000);
            dVar11 = local_res8;
          }
        }
        else {
          in_stack_ffffffffffffff98 = local_res18;
          cVar2 = (*(code *)((undefined **)*plVar3)[0x32])
                            (plVar3,iVar7,0,local_res10,in_stack_ffffffffffffff98,&local_res8);
          uVar12 = (undefined4)((ulonglong)in_stack_ffffffffffffff98 >> 0x20);
          dVar11 = local_res8;
          if (cVar2 == '\0') goto LAB_18050a2f6;
        }
        local_res8 = dVar11;
        if ((400 < (int)(local_res10[0] + uVar5)) && (8 < (int)uVar5)) {
          iVar6 = iVar6 + *(int *)(param_1 + 0xd8);
          uVar5 = 8;
        }
        in_stack_ffffffffffffff98 = (int *)CONCAT44(uVar12,*(undefined4 *)(param_1 + 0xd8));
        FUN_18134bfe0(plVar3,uVar5,iVar6,local_res10[0],in_stack_ffffffffffffff98);
        uVar5 = uVar5 + local_res10[0];
        if ((int)uVar8 < (int)uVar5) {
          uVar8 = (ulonglong)uVar5;
        }
      }
LAB_18050a2f6:
      uVar12 = (undefined4)((ulonglong)in_stack_ffffffffffffff98 >> 0x20);
      iVar7 = (int)uVar8;
      puVar9 = puVar9 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar10);
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),iVar7 + 8,
                CONCAT44(uVar12,*(int *)(param_1 + 0xd8) + 8 + iVar6));
  return;
}



############ FUN_ 180518a90 size=316 ############

void FUN_180518a90(longlong *param_1)

{
  int iVar1;
  longlong lVar2;
  undefined1 (*pauVar3) [16];
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  undefined1 local_38 [16];
  double local_28;
  double local_20;
  double local_18;
  double local_10;
  
  if ((*param_1 != 0) && (*(longlong *)(*param_1 + 0x10) != 0)) {
    local_10 = (double)param_1[3];
    iVar1 = (int)param_1[1];
    local_38._0_8_ = param_1[1];
    local_38._12_4_ = *(int *)((longlong)param_1 + 0x14) - *(int *)((longlong)param_1 + 0xc);
    local_38._8_4_ = (int)param_1[2] - iVar1;
    local_28 = (double)iVar1 / local_10;
    local_18 = (double)(int)local_38._8_4_ / local_10;
    local_20 = (double)(int)((ulonglong)local_38._0_8_ >> 0x20) / local_10;
    local_10 = (double)(int)local_38._12_4_ / local_10;
    pauVar3 = (undefined1 (*) [16])FUN_18051bbd0(&local_28,local_38);
    lVar2 = *param_1;
    plVar6 = (longlong *)0x0;
    local_38 = *pauVar3;
    plVar4 = plVar6;
    if (lVar2 != 0) {
      plVar4 = *(longlong **)(lVar2 + 0x10);
    }
    plVar5 = plVar6;
    if (lVar2 != 0) {
      plVar5 = *(longlong **)(lVar2 + 0x10);
    }
    FUN_18134bfe0(plVar5,local_38._0_4_ + local_38._8_4_,(ulonglong)local_38._0_8_ >> 0x20,
                  (int)plVar4[5],local_38._12_4_);
    if (*param_1 != 0) {
      plVar6 = *(longlong **)(*param_1 + 0x10);
    }
    (**(code **)(*plVar6 + 0x68))(plVar6,0,param_1[4]);
  }
  return;
}



############ FUN_ 180559470 size=219 ############

void FUN_180559470(longlong param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar3 = *(int *)(param_1 + 0xd4);
  iVar5 = 0xe;
  if (0xe < iVar3 * 2) {
    iVar5 = iVar3 * 2;
  }
  iVar1 = *(int *)(param_1 + 0x28) + iVar3 * -2;
  iVar2 = *(int *)(param_1 + 0x2c) + iVar3 * -2;
  iVar4 = 0;
  if (0 < iVar1) {
    iVar4 = iVar1;
  }
  iVar1 = 0;
  if (0 < iVar2) {
    iVar1 = iVar2;
  }
  FUN_18134bfe0(param_1 + 0xe0,
                ((int)((float)iVar4 * **(float **)(param_1 + 0xc0)) + iVar3) - iVar5 / 2,
                ((int)((DAT_1824c3ea4 - **(float **)(param_1 + 200)) * (float)iVar1) + iVar3) -
                iVar5 / 2,iVar5,iVar5);
  return;
}



############ FUN_ 18055f0d0 size=471 ############

void FUN_18055f0d0(longlong *param_1,int param_2,int param_3,int param_4,int param_5,
                  longlong param_6)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  longlong local_28;
  longlong lStack_20;
  
  if ((param_6 != 0) && (param_1[6] != 0)) {
    iVar5 = 0;
    iVar4 = 0;
    for (lVar2 = *(longlong *)(param_1[6] + 0x18); lVar2 != param_6;
        lVar2 = *(longlong *)(lVar2 + 0x18)) {
      iVar5 = iVar5 - (int)*(undefined8 *)(lVar2 + 0x20);
      iVar4 = iVar4 - (int)((ulonglong)*(undefined8 *)(lVar2 + 0x20) >> 0x20);
    }
    param_2 = param_2 + iVar5;
    param_3 = param_3 + iVar4;
  }
  if (*(int *)((longlong)param_1 + 0x54) == 1) {
    fVar8 = *(float *)(param_1 + 10);
  }
  else {
    fVar8 = (float)param_5 * *(float *)(param_1 + 10);
  }
  if (*(int *)((longlong)param_1 + 0x5c) == 1) {
    fVar9 = *(float *)(param_1 + 0xb);
  }
  else {
    fVar9 = (float)param_4 * *(float *)(param_1 + 0xb);
  }
  if (*(int *)((longlong)param_1 + 100) == 1) {
    fVar7 = *(float *)(param_1 + 0xc);
  }
  else {
    fVar7 = (float)param_5 * *(float *)(param_1 + 0xc);
  }
  if (*(int *)((longlong)param_1 + 0x6c) == 1) {
    fVar6 = *(float *)(param_1 + 0xd);
  }
  else {
    fVar6 = (float)param_4 * *(float *)(param_1 + 0xd);
  }
  *(int *)(param_1 + 8) = (int)((float)param_2 + fVar6);
  *(int *)((longlong)param_1 + 0x44) = (int)((float)param_3 + fVar8);
  iVar5 = (int)((float)param_4 - (fVar6 + fVar9));
  *(int *)(param_1 + 9) = iVar5;
  iVar4 = (int)((float)param_5 - (fVar7 + fVar8));
  *(int *)((longlong)param_1 + 0x4c) = iVar4;
  if (param_1[6] != 0) {
    auVar1 = *(undefined1 (*) [16])(param_1 + 8);
    FUN_18134bfe0(param_1[6],auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_8_,auVar1._12_4_);
  }
  piVar3 = (int *)param_1[7];
  if (piVar3 != (int *)0x0) {
    *piVar3 = (int)((float)param_2 + fVar6);
    piVar3[1] = (int)((float)param_3 + fVar8);
    piVar3[2] = iVar5;
    piVar3[3] = iVar4;
  }
  lVar2 = param_1[1] - *param_1 >> 0x3f;
  if ((param_1[1] - *param_1) / 0x70 + lVar2 != lVar2) {
    local_28 = param_1[8];
    lStack_20 = param_1[9];
    FUN_18055f500(param_1,&local_28,param_6);
  }
  return;
}



############ FUN_ 180564a00 size=659 ############

void FUN_180564a00(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  uint uVar4;
  undefined4 *puVar5;
  longlong lVar6;
  uint *_Memory;
  float fVar7;
  undefined4 local_res8;
  undefined4 local_res10;
  undefined1 local_res20 [8];
  undefined8 *local_90;
  longlong local_88;
  undefined8 *local_80;
  undefined8 local_78;
  undefined8 local_68;
  undefined4 uStack_60;
  int iStack_5c;
  undefined8 local_58;
  undefined8 uStack_50;
  
  local_78 = 0xfffffffffffffffe;
  iStack_5c = *(int *)(param_1 + 0x2c);
  uStack_60 = *(undefined4 *)(param_1 + 0x28);
  local_68 = 0;
  fVar7 = (float)iStack_5c;
  FUN_18134bfe0(param_1 + 200,0,0,uStack_60,iStack_5c);
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar2 + 8))(plVar2);
  }
  local_res8 = CONCAT13(0x7f,(int3)DAT_18262bb54);
  FUN_1812a3160(param_2,local_res8);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar2 + 8))(plVar2);
  }
  puVar5 = (undefined4 *)FUN_1812a2a20(&DAT_18262bb50,local_res20,DAT_18248d13c,DAT_1824c3cac);
  local_res10 = CONCAT13(0x54,(int3)*puVar5);
  FUN_1812a3160(param_2,local_res10);
  lVar6 = FUN_18134adf0(param_1);
  (**(code **)(*(longlong *)(lVar6 + 0x50) + 0x10))
            ((longlong *)(lVar6 + 0x50),&local_80,param_1 + 200);
  local_90 = local_80;
  if (local_80 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_80 + 1) = *(int *)(local_80 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_90,fVar7 * DAT_1824c3cb8);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_90);
  if (local_90 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_90 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_90)(local_90,1);
    }
  }
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar2 + 8))(plVar2);
  }
  FUN_181296c00(param_2,DAT_18262bb50);
  FUN_18049c4e0(&local_88,
                "no valid license found.\naudio output has been muted.\n\nif using a physical iLok,\nplease ensure it is connected."
               );
  uStack_50 = CONCAT44(iStack_5c,uStack_60);
  local_58 = local_68;
  FUN_181296100(param_2,&local_88,&local_58,0x24,2,0,0x24);
  _Memory = (uint *)(local_88 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_80 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_80 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_80)(local_80,1);
    }
  }
  return;
}



############ FUN_ 1805650d0 size=581 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805650d0(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  float fVar4;
  float fVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  longlong lVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  undefined8 *puVar15;
  undefined8 *local_res10;
  
  uVar13 = 0;
  iVar11 = *(int *)(param_1 + 0x2c);
  iVar6 = *(int *)(param_1 + 0x28);
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    lVar9 = *(longlong *)(param_1 + 0xb8);
  }
  else {
    lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar4 = *(float *)(lVar8 + 0x88);
  local_res10 = (undefined8 *)**(longlong **)(lVar9 + 0x78);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_res10,fVar4 * DAT_1824c441c);
  FUN_1812e9e30(param_1 + 0x100,&local_res10);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar12 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar12 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar4 = *(float *)(lVar9 + 0x88);
  fVar5 = *(float *)(param_1 + 0x308);
  lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
  iVar12 = (int)(fVar5 * *(float *)(lVar9 + 0x88));
  if (iVar11 < iVar12) {
    iVar12 = iVar11;
  }
  iVar11 = iVar11 - iVar12;
  iVar10 = (int)(fVar4 * _DAT_1824c4718);
  uVar3 = iVar6 + iVar10 * 2;
  uVar14 = uVar13;
  if (0 < (int)uVar3) {
    uVar14 = (ulonglong)uVar3;
  }
  iVar7 = 0;
  if (0 < iVar12) {
    iVar7 = iVar12;
  }
  FUN_18134bfe0(param_1 + 0x100,-iVar10,0,uVar14,iVar7);
  puVar15 = *(undefined8 **)(param_1 + 0xf0);
  uVar14 = (ulonglong)((longlong)(puVar15 + *(int *)(param_1 + 0xfc)) + (7 - (longlong)puVar15)) >>
           3;
  if (puVar15 + *(int *)(param_1 + 0xfc) < puVar15) {
    uVar14 = uVar13;
  }
  if (uVar14 != 0) {
    iVar10 = (int)(float)(iVar11 / *(int *)(param_1 + 0xfc));
    do {
      iVar7 = iVar10;
      if (iVar11 < iVar10) {
        iVar7 = iVar11;
      }
      iVar11 = iVar11 - iVar7;
      FUN_18134bfe0(*puVar15,0,iVar12,iVar6,iVar7);
      puVar15 = puVar15 + 1;
      uVar13 = uVar13 + 1;
      iVar12 = iVar12 + iVar7;
    } while (uVar13 != uVar14);
  }
  return;
}



############ FUN_ 180566600 size=318 ############

void FUN_180566600(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  undefined4 local_res20;
  
  if (*(longlong *)(param_1 + 0x4a8) != 0) {
    cVar1 = FUN_181345240();
    if (cVar1 != '\0') {
      *(float *)(*(longlong *)(param_1 + 0x4a8) + 0x530) =
           (float)*(int *)(*(longlong *)(param_1 + 0x498) + 0x2c);
      fVar5 = *(float *)(param_1 + 0x88c);
      lVar2 = (**(code **)(*(longlong *)(param_1 + 0x140) + 8))();
      fVar5 = fVar5 * *(float *)(lVar2 + 0x88);
      fVar3 = (float)*(int *)(param_1 + 0x28);
      fVar4 = fVar3;
      if (fVar5 <= fVar3) {
        fVar4 = fVar5;
      }
      local_res20 = SUB84((double)*(int *)(param_1 + 0x2c) + DAT_1824c4520,0);
      FUN_18134bfe0(*(undefined8 *)(param_1 + 0x4a8),
                    (ulonglong)((double)((fVar3 + 0.0) - fVar4) + DAT_1824c4520) & 0xffffffff,
                    (ulonglong)DAT_1824c4520 & 0xffffffff,
                    (ulonglong)((double)fVar4 + DAT_1824c4520) & 0xffffffff,local_res20);
      lVar2 = *(longlong *)(param_1 + 0x4a8);
      FUN_181344f60(*(undefined8 *)(lVar2 + 0x520),0);
      FUN_181344f60(*(undefined8 *)(lVar2 + 0x528),0);
      FUN_181344f60(lVar2,0);
    }
  }
  return;
}



############ FUN_ 180572680 size=122 ############

void FUN_180572680(longlong param_1,undefined8 param_2,float *param_3)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 8);
  FUN_18134bfe0(lVar1,(int)((float)*(int *)(lVar1 + 0xd4) * *param_3) + *(int *)(lVar1 + 0xc4),
                (int)((float)*(int *)(lVar1 + 0xd8) * *param_3) + *(int *)(lVar1 + 200),
                *(undefined4 *)(lVar1 + 0xcc),*(undefined4 *)(lVar1 + 0xd0));
  return;
}



############ FUN_ 1815ecd00 size=690 ############

void FUN_1815ecd00(longlong param_1)

{
  int iVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  uint uVar5;
  undefined8 *puVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong lVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  double local_res8;
  double local_res10;
  double local_res18;
  double local_res20;
  float local_98;
  float fStack_94;
  float local_90;
  float fStack_8c;
  ulonglong uVar6;
  
  lVar10 = *(longlong *)(param_1 + 0x2d0);
  if (lVar10 == 0) {
    lVar10 = *(longlong *)(param_1 + 200);
  }
  uVar8 = 0;
  uVar5 = 0;
  uVar6 = uVar8;
  uVar9 = uVar8;
  for (lVar4 = lVar10; lVar4 != *(longlong *)(param_1 + 0xd0); lVar4 = *(longlong *)(lVar4 + 0x18))
  {
    uVar5 = (int)uVar6 + (int)*(undefined8 *)(lVar4 + 0x20);
    uVar6 = (ulonglong)uVar5;
    uVar9 = (ulonglong)(uint)((int)uVar9 + (int)((ulonglong)*(undefined8 *)(lVar4 + 0x20) >> 0x20));
  }
  fVar13 = (float)(int)uVar5;
  fVar14 = (float)(int)uVar9;
  iVar3 = FUN_1815af820(param_1,*(undefined4 *)(param_1 + 0x2c4));
  puVar7 = *(undefined8 **)(param_1 + 0x2b0);
  fVar12 = 0.0;
  uVar6 = (ulonglong)((longlong)(puVar7 + *(int *)(param_1 + 700)) + (7 - (longlong)puVar7)) >> 3;
  if (puVar7 + *(int *)(param_1 + 700) < puVar7) {
    uVar6 = uVar8;
  }
  if (uVar6 != 0) {
    do {
      plVar2 = (longlong *)*puVar7;
      lVar4 = (**(code **)(*plVar2 + 8))(plVar2);
      if ((*(byte *)(lVar4 + 0xa8) & 2) != 0) {
        lVar4 = (**(code **)(*plVar2 + 0x10))(plVar2,&local_res8);
        fVar12 = fVar12 + *(float *)(lVar4 + 4);
      }
      puVar7 = puVar7 + 1;
      uVar8 = uVar8 + 1;
    } while (uVar8 != uVar6);
  }
  iVar1 = *(int *)(param_1 + 0x2c0);
  local_90 = (float)iVar3;
  if (iVar1 == 0) {
    local_98 = fVar13 + 0.0;
    fStack_94 = ((float)((uint)fVar12 ^ DAT_1824c4f30) - *(float *)(param_1 + 0x2c8)) + fVar14;
    goto LAB_1815ecec4;
  }
  if (iVar1 == 1) {
    fVar11 = (float)*(int *)(lVar10 + 0x28) + *(float *)(param_1 + 0x2c8);
  }
  else {
    if (iVar1 == 2) {
      local_98 = fVar13 + 0.0;
      fStack_94 = (float)*(int *)(lVar10 + 0x2c) + *(float *)(param_1 + 0x2c8) + fVar14;
      goto LAB_1815ecec4;
    }
    local_98 = fVar13;
    fStack_94 = fVar14;
    if (iVar1 != 3) goto LAB_1815ecec4;
    fVar11 = (float)-iVar3 - *(float *)(param_1 + 0x2c8);
  }
  local_98 = fVar11 + fVar13;
  fStack_94 = fVar14 + 0.0;
LAB_1815ecec4:
  fStack_8c = fVar12;
  lVar4 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  FUN_1815af520(param_1 + 0x2c0,lVar10,*(undefined8 *)(param_1 + 0xd0),&local_98,
                *(float *)(lVar4 + 0x88) * DAT_1824c43e8);
  local_res8 = (double)local_98 + DAT_1824c4520;
  local_res18 = (double)local_90 + DAT_1824c4520;
  local_98 = SUB84(local_res8,0);
  local_res10 = (double)fStack_94 + DAT_1824c4520;
  fStack_94 = (float)local_res10._0_4_;
  local_90 = SUB84(local_res18,0);
  local_res20 = (double)fStack_8c + DAT_1824c4520;
  fStack_8c = (float)local_res20._0_4_;
  FUN_18134bfe0(param_1,(ulonglong)local_res8 & 0xffffffff,(ulonglong)local_res10 & 0xffffffff,
                (ulonglong)local_res18 & 0xffffffff,local_res20._0_4_);
  return;
}



############ FUN_ 18057c930 size=407 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18057c930(longlong param_1,undefined8 param_2,float *param_3)

{
  float fVar1;
  float *pfVar2;
  longlong lVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  undefined4 local_res20;
  
  fVar4 = *param_3;
  if (*(longlong *)(*(longlong *)(param_1 + 8) + 0x290) != 0) {
    lVar3 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 8) + 0xb0) + 8))();
    fVar5 = *(float *)(lVar3 + 0x88);
    lVar3 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 8) + 0xb0) + 8))();
    fVar1 = *(float *)(lVar3 + 0x88);
    pfVar2 = *(float **)(*(longlong *)(param_1 + 8) + 0x290);
    fVar5 = (float)((uint)(fVar5 * _DAT_1824c4744 * fVar4) ^ DAT_1824c4f30);
    fVar4 = fVar5 * DAT_1824c41e0 + fVar1 * pfVar2[2];
    if (fVar4 <= 0.0) {
      fVar4 = 0.0;
    }
    fVar6 = fVar5 * DAT_1824c41e0 + fVar1 * pfVar2[3];
    if (fVar6 <= 0.0) {
      fVar6 = 0.0;
    }
    local_res20 = SUB84((double)fVar6 + DAT_1824c4520,0);
    FUN_18134bfe0(*(longlong *)(param_1 + 8),(double)(*pfVar2 * fVar1 - fVar5) + DAT_1824c4520,
                  (ulonglong)((double)(pfVar2[1] * fVar1 - fVar5) + DAT_1824c4520) & 0xffffffff,
                  (ulonglong)((double)fVar4 + DAT_1824c4520) & 0xffffffff,local_res20);
  }
  return;
}



############ FUN_ 180581aa0 size=2131 ############

void FUN_180581aa0(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  undefined1 auVar3 [16];
  int iVar4;
  code *pcVar5;
  uint uVar6;
  undefined8 uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  uint uVar11;
  ulonglong uVar12;
  uint uVar13;
  int iVar14;
  ulonglong uVar15;
  int iVar16;
  undefined4 uVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined8 *local_res10;
  undefined8 *local_res18;
  undefined1 local_res20 [4];
  undefined4 local_res24;
  undefined8 *local_108;
  undefined8 *local_100;
  undefined8 *local_f8;
  undefined8 *local_f0;
  double local_e8;
  undefined8 *local_e0;
  undefined8 *local_d8;
  undefined8 local_d0;
  undefined1 local_c8 [8];
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined1 local_a0 [8];
  undefined1 local_98 [8];
  undefined8 local_90;
  
  local_d0 = 0xfffffffffffffffe;
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar7 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  uVar7 = FUN_1813f22a0(uVar7,local_c8,DAT_182674210,param_1);
  uVar17 = FUN_1813ec390(uVar7);
  *(undefined4 *)(param_1 + 0x314) = uVar17;
  uVar17 = DAT_182674230;
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar7 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  FUN_1813f22a0(uVar7,local_res20,uVar17,param_1);
  *(undefined4 *)(param_1 + 0x7f8) = local_res24;
  FUN_181403590(*(undefined8 *)(param_1 + 0x800),uVar17);
  iVar16 = *(int *)(param_1 + 0x2c);
  iVar4 = *(int *)(param_1 + 0x28);
  fVar20 = (float)iVar4 / ((float)iVar16 + DAT_1824c3ea4);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    lVar8 = *(longlong *)(param_1 + 0xb8);
  }
  else {
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  fVar18 = DAT_1824c441c;
  fVar19 = *(float *)(lVar8 + 0x88);
  uVar13 = 0;
  if (*(char *)(param_1 + 0x31c) == '\0') {
    iVar16 = (int)(*(float *)(param_1 + 0x318) * DAT_1824c441c * fVar19);
    pcVar5 = *(code **)(*plVar2 + 8);
    if (pcVar5 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (*pcVar5)(plVar2);
    }
    uVar7 = FUN_1813f22a0(uVar7,local_a0,DAT_1826742bc,param_1);
    fVar20 = (float)FUN_1813ec390(uVar7);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    iVar14 = (int)(*(float *)(lVar8 + 0x88) * fVar20 * *(float *)(param_1 + 0x314));
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    uVar7 = FUN_1813f22a0(uVar7,local_98,DAT_182674220,param_1);
    fVar20 = (float)FUN_1813ec390(uVar7);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    local_e8 = (double)(*(float *)(lVar8 + 0x88) * fVar18 * DAT_1824c3df0 * fVar20) + DAT_1824c4520;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar19 = *(float *)(lVar8 + 0x88) * DAT_1824c4408;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar18 = *(float *)(lVar8 + 0x88) * DAT_1824c4408;
    *(ulonglong *)(param_1 + 0x330) =
         CONCAT44(*(int *)(param_1 + 0x2c) - iVar16,
                  (int)((double)(*(int *)(param_1 + 0x28) - iVar14) * DAT_1824c4050));
    *(ulonglong *)(param_1 + 0x338) = CONCAT44(iVar16,iVar14);
    *(undefined4 *)(param_1 + 0x340) = 0xc;
    uVar6 = SUB84(local_e8,0);
    uVar11 = uVar13;
    if ((int)uVar6 < 0) {
      uVar11 = uVar6;
    }
    if (0 < (int)uVar6) {
      uVar13 = uVar6;
    }
    *(ulonglong *)(param_1 + 800) = (ulonglong)uVar11 << 0x20;
    *(ulonglong *)(param_1 + 0x328) = CONCAT44(uVar13,iVar4);
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      lVar8 = *(longlong *)(param_1 + 0xb8);
    }
    else {
      lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    local_res10 = (undefined8 *)**(longlong **)(lVar8 + 0x68);
    if (local_res10 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
      UNLOCK();
    }
    FUN_1812520a0(&local_res10,fVar19);
    FUN_181251cf0(&local_res10,&local_res18,DAT_1824c3c7c);
    if (local_res10 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res10 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_res10)(local_res10,1);
      }
    }
    local_e0 = *(undefined8 **)(param_1 + 0x350);
    *(undefined8 **)(param_1 + 0x350) = local_res18;
    local_res18 = local_e0;
    if (local_e0 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_e0 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_e0)(local_e0,1);
      }
    }
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    puVar9 = (undefined8 *)FUN_1813f2500(uVar7,&local_d8,fVar18 * fVar20);
    local_90 = *(undefined8 *)(param_1 + 0x348);
    *(undefined8 *)(param_1 + 0x348) = *puVar9;
    *puVar9 = local_90;
    if (local_d8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_d8 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_d8)(local_d8,1);
      }
    }
    if (*(char *)(param_1 + 0x31d) == '\0') {
      iVar16 = *(int *)(param_1 + 0x33c);
      uVar15 = (ulonglong)*(uint *)(param_1 + 0x28);
      uVar10 = (ulonglong)(uint)((*(int *)(param_1 + 0x2c) - iVar16) / 2);
      uVar12 = 0;
      goto LAB_18058224d;
    }
  }
  else {
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar18 = *(float *)(lVar8 + 0x88) * DAT_1824c440c;
    uVar11 = (uint)(*(float *)(param_1 + 0x318) * DAT_1824c441c * fVar19);
    iVar14 = (int)(*(float *)(param_1 + 0x314) * DAT_1824c44a8 * fVar19);
    if (fVar20 < *(float *)(param_1 + 0x2f8) || fVar20 == *(float *)(param_1 + 0x2f8)) {
      *(ulonglong *)(param_1 + 0x330) =
           CONCAT44((int)((float)iVar16 * DAT_1824c3d8c),(iVar4 - iVar14) / 2);
      *(ulonglong *)(param_1 + 0x338) = CONCAT44(uVar11,iVar14);
      *(undefined4 *)(param_1 + 0x340) = 0x24;
      if (0 < (int)uVar11) {
        uVar13 = uVar11;
      }
      *(ulonglong *)(param_1 + 800) = (ulonglong)(*(int *)(param_1 + 0x334) - uVar11) << 0x20;
      *(ulonglong *)(param_1 + 0x328) = CONCAT44(uVar13,iVar4);
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2460(uVar7,&local_f8,fVar18);
      local_b0 = *(undefined8 *)(param_1 + 0x350);
      *(undefined8 *)(param_1 + 0x350) = *puVar9;
      *puVar9 = local_b0;
      if (local_f8 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_f8 + 1);
        iVar16 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar16 == 1) {
          (**(code **)*local_f8)(local_f8,1);
        }
      }
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2500(uVar7,&local_f0,fVar18);
      local_a8 = *(undefined8 *)(param_1 + 0x348);
      *(undefined8 *)(param_1 + 0x348) = *puVar9;
      *puVar9 = local_a8;
      local_100 = local_f0;
    }
    else {
      *(ulonglong *)(param_1 + 0x330) = CONCAT44((int)(iVar16 - uVar11) / 2,iVar4 - iVar14);
      *(ulonglong *)(param_1 + 0x338) = CONCAT44(uVar11,iVar14);
      uVar11 = *(uint *)(param_1 + 0x330);
      uVar6 = 0;
      if ((int)uVar11 < 0) {
        uVar6 = uVar11;
      }
      if (0 < (int)uVar11) {
        uVar13 = uVar11;
      }
      *(ulonglong *)(param_1 + 800) = (ulonglong)uVar6;
      *(ulonglong *)(param_1 + 0x328) = CONCAT44(iVar16,uVar13);
      *(undefined4 *)(param_1 + 0x340) = 1;
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2460(uVar7,&local_108,fVar18);
      local_c0 = *(undefined8 *)(param_1 + 0x350);
      *(undefined8 *)(param_1 + 0x350) = *puVar9;
      *puVar9 = local_c0;
      if (local_108 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_108 + 1);
        iVar16 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar16 == 1) {
          (**(code **)*local_108)(local_108,1);
        }
      }
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2500(uVar7,&local_100,fVar18);
      local_b8 = *(undefined8 *)(param_1 + 0x348);
      *(undefined8 *)(param_1 + 0x348) = *puVar9;
      *puVar9 = local_b8;
    }
    if (local_100 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_100 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_100)(local_100,1);
      }
    }
  }
  auVar3 = *(undefined1 (*) [16])(param_1 + 0x330);
  uVar15 = auVar3._8_8_;
  uVar12 = auVar3._0_8_;
  uVar10 = uVar12 >> 0x20;
  iVar16 = auVar3._12_4_;
LAB_18058224d:
  FUN_18134bfe0(param_1 + 0x358,uVar12,uVar10,uVar15,iVar16);
  return;
}



############ FUN_ 180582940 size=2131 ############

void FUN_180582940(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  undefined1 auVar3 [16];
  int iVar4;
  code *pcVar5;
  uint uVar6;
  undefined8 uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  uint uVar11;
  ulonglong uVar12;
  uint uVar13;
  int iVar14;
  ulonglong uVar15;
  int iVar16;
  undefined4 uVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined8 *local_res10;
  undefined8 *local_res18;
  undefined1 local_res20 [4];
  undefined4 local_res24;
  undefined8 *local_108;
  undefined8 *local_100;
  undefined8 *local_f8;
  undefined8 *local_f0;
  double local_e8;
  undefined8 *local_e0;
  undefined8 *local_d8;
  undefined8 local_d0;
  undefined1 local_c8 [8];
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined1 local_a0 [8];
  undefined1 local_98 [8];
  undefined8 local_90;
  
  local_d0 = 0xfffffffffffffffe;
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar7 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  uVar7 = FUN_1813f22a0(uVar7,local_c8,DAT_182674210,param_1);
  uVar17 = FUN_1813ec390(uVar7);
  *(undefined4 *)(param_1 + 0x34c) = uVar17;
  uVar17 = DAT_182674230;
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar7 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  FUN_1813f22a0(uVar7,local_res20,uVar17,param_1);
  *(undefined4 *)(param_1 + 0x830) = local_res24;
  FUN_181403590(*(undefined8 *)(param_1 + 0x838),uVar17);
  iVar16 = *(int *)(param_1 + 0x2c);
  iVar4 = *(int *)(param_1 + 0x28);
  fVar20 = (float)iVar4 / ((float)iVar16 + DAT_1824c3ea4);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    lVar8 = *(longlong *)(param_1 + 0xb8);
  }
  else {
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  fVar18 = DAT_1824c441c;
  fVar19 = *(float *)(lVar8 + 0x88);
  uVar13 = 0;
  if (*(char *)(param_1 + 0x354) == '\0') {
    iVar16 = (int)(*(float *)(param_1 + 0x350) * DAT_1824c441c * fVar19);
    pcVar5 = *(code **)(*plVar2 + 8);
    if (pcVar5 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (*pcVar5)(plVar2);
    }
    uVar7 = FUN_1813f22a0(uVar7,local_a0,DAT_1826742bc,param_1);
    fVar20 = (float)FUN_1813ec390(uVar7);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    iVar14 = (int)(*(float *)(lVar8 + 0x88) * fVar20 * *(float *)(param_1 + 0x34c));
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    uVar7 = FUN_1813f22a0(uVar7,local_98,DAT_182674220,param_1);
    fVar20 = (float)FUN_1813ec390(uVar7);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    local_e8 = (double)(*(float *)(lVar8 + 0x88) * fVar18 * DAT_1824c3df0 * fVar20) + DAT_1824c4520;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar19 = *(float *)(lVar8 + 0x88) * DAT_1824c4408;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar18 = *(float *)(lVar8 + 0x88) * DAT_1824c4408;
    *(ulonglong *)(param_1 + 0x368) =
         CONCAT44(*(int *)(param_1 + 0x2c) - iVar16,
                  (int)((double)(*(int *)(param_1 + 0x28) - iVar14) * DAT_1824c4050));
    *(ulonglong *)(param_1 + 0x370) = CONCAT44(iVar16,iVar14);
    *(undefined4 *)(param_1 + 0x378) = 0xc;
    uVar6 = SUB84(local_e8,0);
    uVar11 = uVar13;
    if ((int)uVar6 < 0) {
      uVar11 = uVar6;
    }
    if (0 < (int)uVar6) {
      uVar13 = uVar6;
    }
    *(ulonglong *)(param_1 + 0x358) = (ulonglong)uVar11 << 0x20;
    *(ulonglong *)(param_1 + 0x360) = CONCAT44(uVar13,iVar4);
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      lVar8 = *(longlong *)(param_1 + 0xb8);
    }
    else {
      lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    local_res10 = (undefined8 *)**(longlong **)(lVar8 + 0x68);
    if (local_res10 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
      UNLOCK();
    }
    FUN_1812520a0(&local_res10,fVar19);
    FUN_181251cf0(&local_res10,&local_res18,DAT_1824c3c7c);
    if (local_res10 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res10 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_res10)(local_res10,1);
      }
    }
    local_e0 = *(undefined8 **)(param_1 + 0x388);
    *(undefined8 **)(param_1 + 0x388) = local_res18;
    local_res18 = local_e0;
    if (local_e0 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_e0 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_e0)(local_e0,1);
      }
    }
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar7 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    puVar9 = (undefined8 *)FUN_1813f2500(uVar7,&local_d8,fVar18 * fVar20);
    local_90 = *(undefined8 *)(param_1 + 0x380);
    *(undefined8 *)(param_1 + 0x380) = *puVar9;
    *puVar9 = local_90;
    if (local_d8 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_d8 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_d8)(local_d8,1);
      }
    }
    if (*(char *)(param_1 + 0x355) == '\0') {
      iVar16 = *(int *)(param_1 + 0x374);
      uVar15 = (ulonglong)*(uint *)(param_1 + 0x28);
      uVar10 = (ulonglong)(uint)((*(int *)(param_1 + 0x2c) - iVar16) / 2);
      uVar12 = 0;
      goto LAB_1805830ed;
    }
  }
  else {
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar18 = *(float *)(lVar8 + 0x88) * DAT_1824c440c;
    uVar11 = (uint)(*(float *)(param_1 + 0x350) * DAT_1824c441c * fVar19);
    iVar14 = (int)(*(float *)(param_1 + 0x34c) * DAT_1824c44a8 * fVar19);
    if (fVar20 < *(float *)(param_1 + 0x330) || fVar20 == *(float *)(param_1 + 0x330)) {
      *(ulonglong *)(param_1 + 0x368) =
           CONCAT44((int)((float)iVar16 * DAT_1824c3d8c),(iVar4 - iVar14) / 2);
      *(ulonglong *)(param_1 + 0x370) = CONCAT44(uVar11,iVar14);
      *(undefined4 *)(param_1 + 0x378) = 0x24;
      if (0 < (int)uVar11) {
        uVar13 = uVar11;
      }
      *(ulonglong *)(param_1 + 0x358) = (ulonglong)(*(int *)(param_1 + 0x36c) - uVar11) << 0x20;
      *(ulonglong *)(param_1 + 0x360) = CONCAT44(uVar13,iVar4);
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2460(uVar7,&local_f8,fVar18);
      local_b0 = *(undefined8 *)(param_1 + 0x388);
      *(undefined8 *)(param_1 + 0x388) = *puVar9;
      *puVar9 = local_b0;
      if (local_f8 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_f8 + 1);
        iVar16 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar16 == 1) {
          (**(code **)*local_f8)(local_f8,1);
        }
      }
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2500(uVar7,&local_f0,fVar18);
      local_a8 = *(undefined8 *)(param_1 + 0x380);
      *(undefined8 *)(param_1 + 0x380) = *puVar9;
      *puVar9 = local_a8;
      local_100 = local_f0;
    }
    else {
      *(ulonglong *)(param_1 + 0x368) = CONCAT44((int)(iVar16 - uVar11) / 2,iVar4 - iVar14);
      *(ulonglong *)(param_1 + 0x370) = CONCAT44(uVar11,iVar14);
      uVar11 = *(uint *)(param_1 + 0x368);
      uVar6 = 0;
      if ((int)uVar11 < 0) {
        uVar6 = uVar11;
      }
      if (0 < (int)uVar11) {
        uVar13 = uVar11;
      }
      *(ulonglong *)(param_1 + 0x358) = (ulonglong)uVar6;
      *(ulonglong *)(param_1 + 0x360) = CONCAT44(iVar16,uVar13);
      *(undefined4 *)(param_1 + 0x378) = 1;
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2460(uVar7,&local_108,fVar18);
      local_c0 = *(undefined8 *)(param_1 + 0x388);
      *(undefined8 *)(param_1 + 0x388) = *puVar9;
      *puVar9 = local_c0;
      if (local_108 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_108 + 1);
        iVar16 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar16 == 1) {
          (**(code **)*local_108)(local_108,1);
        }
      }
      if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar7 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      }
      puVar9 = (undefined8 *)FUN_1813f2500(uVar7,&local_100,fVar18);
      local_b8 = *(undefined8 *)(param_1 + 0x380);
      *(undefined8 *)(param_1 + 0x380) = *puVar9;
      *puVar9 = local_b8;
    }
    if (local_100 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_100 + 1);
      iVar16 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)*local_100)(local_100,1);
      }
    }
  }
  auVar3 = *(undefined1 (*) [16])(param_1 + 0x368);
  uVar15 = auVar3._8_8_;
  uVar12 = auVar3._0_8_;
  uVar10 = uVar12 >> 0x20;
  iVar16 = auVar3._12_4_;
LAB_1805830ed:
  FUN_18134bfe0(param_1 + 0x390,uVar12,uVar10,uVar15,iVar16);
  return;
}



############ FUN_ 1812b9370 size=303 ############

void FUN_1812b9370(longlong param_1)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  longlong lVar5;
  int iVar6;
  undefined4 uStack_1c;
  
  iVar3 = *(int *)(param_1 + 0x28) + -4;
  iVar6 = *(int *)(param_1 + 0x2c) + -4;
  iVar2 = 0;
  if (0 < iVar3) {
    iVar2 = iVar3;
  }
  uStack_1c = 0;
  if (0 < iVar6) {
    uStack_1c = iVar6;
  }
  if ((*(byte *)(param_1 + 0x2b0) & 2) != 0) {
    iVar3 = 0x18;
    if (uStack_1c < 0x18) {
      iVar3 = uStack_1c;
    }
    lVar1 = param_1 + 0x208;
    iVar6 = uStack_1c - iVar3;
    FUN_18134bfe0(lVar1,2,(uStack_1c - iVar3) + 2,iVar2,iVar3);
    lVar5 = FUN_18134adf0(lVar1);
    uVar4 = (**(code **)(*(longlong *)(lVar5 + 8) + 0x18))(lVar5 + 8,lVar1,0x18);
    FUN_18134bfe0(lVar1,*(undefined4 *)(param_1 + 0x228),*(undefined4 *)(param_1 + 0x22c),uVar4,0x18
                 );
    uStack_1c = 3;
    if (iVar6 < 3) {
      uStack_1c = iVar6;
    }
    uStack_1c = iVar6 - uStack_1c;
  }
  FUN_18134bfe0(param_1 + 0xd8,2,2,iVar2,uStack_1c);
  return;
}



############ FUN_ 1812bb800 size=127 ############

void FUN_1812bb800(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  
  lVar2 = 0;
  lVar1 = *(longlong *)(param_1 + 0x110);
  FUN_18134bfe0(lVar1 + 0x30,0,0,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  if (*(longlong *)(lVar1 + 0x1b0) != 0) {
    lVar2 = *(longlong *)(*(longlong *)(lVar1 + 0x1b0) + 0x10);
  }
  FUN_18134bfe0(lVar2,*(undefined4 *)(lVar2 + 0x20),*(undefined4 *)(lVar2 + 0x24),
                *(undefined4 *)(lVar1 + 0x128),*(undefined4 *)(lVar2 + 0x2c));
  return;
}



############ FUN_ 1812c5e10 size=196 ############

void FUN_1812c5e10(longlong param_1,undefined8 param_2,char param_3)

{
  undefined1 auVar1 [16];
  char *pcVar2;
  longlong lVar3;
  char *pcVar4;
  char *pcVar5;
  
  lVar3 = __RTDynamicCast(param_2,0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::TopLevelWindow::RTTI_Type_Descriptor,0);
  if (lVar3 != 0) {
    FUN_1812cc1e0(lVar3,param_3 == '\0');
  }
  if (param_3 != '\0') {
    pcVar2 = (char *)**(undefined8 **)(param_1 + 0x78);
    for (pcVar4 = pcVar2;
        (pcVar5 = pcVar2,
        pcVar4 != pcVar2 + (longlong)*(int *)((longlong)*(undefined8 **)(param_1 + 0x78) + 0xc) *
                           0x40 && (pcVar5 = pcVar4, *pcVar4 == '\0')); pcVar4 = pcVar4 + 0x40) {
    }
    auVar1 = *(undefined1 (*) [16])(pcVar5 + 4);
    FUN_18134bfe0(param_2,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_4_,auVar1._12_4_);
  }
  return;
}



############ FUN_ 1812c7b60 size=101 ############

void FUN_1812c7b60(longlong param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  
  lVar3 = *(longlong *)(param_1 + 0x18);
  if (lVar3 != 0) {
    iVar1 = *(int *)(lVar3 + 0x28);
    iVar2 = *(int *)(lVar3 + 0x2c);
    iVar5 = 0xbd;
    if (iVar2 < 0xbd) {
      iVar5 = iVar2;
    }
    iVar4 = 0x171;
    if (iVar1 < 0x171) {
      iVar4 = iVar1;
    }
    FUN_18134bfe0(param_1,iVar1 - iVar4,iVar2 - iVar5,iVar4,iVar5);
  }
  return;
}



############ FUN_ 1812cd070 size=472 ############

void FUN_1812cd070(longlong *param_1,undefined8 param_2,undefined8 param_3,ulonglong *param_4)

{
  undefined1 auVar1 [16];
  code *pcVar2;
  longlong lVar3;
  undefined1 (*pauVar4) [16];
  int iVar5;
  int iVar6;
  int iVar7;
  ulonglong uVar8;
  int iVar9;
  int iStackX_1c;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined4 local_58;
  int local_54;
  int local_50;
  int local_4c;
  uint local_48;
  int iStack_44;
  void *local_38;
  undefined4 local_2c;
  float local_28;
  float local_24;
  
  local_68 = *param_4;
  uStack_60 = param_4[1];
  lVar3 = FUN_18134adf0();
  pcVar2 = *(code **)(*(longlong *)(lVar3 + 0x70) + 8);
  if (pcVar2 != FUN_18130c830) {
    pauVar4 = (undefined1 (*) [16])(*pcVar2)(lVar3 + 0x70,&local_58,param_2,param_3,&local_68);
    auVar1 = *pauVar4;
    FUN_18134bfe0(param_1,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_4_,auVar1._12_4_);
                    /* WARNING: Could not recover jumptable at 0x0001812cd237. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x58))(param_1,1);
    return;
  }
  FUN_181315540(&local_38,param_2,DAT_18262b5b8);
  iStackX_1c = (int)((ulonglong)param_3 >> 0x20);
  local_50 = (int)(local_28 + DAT_1824c4414);
  local_4c = (int)(local_24 + DAT_1824c4388);
  if (uStack_60._4_4_ / 2 + local_68._4_4_ < iStackX_1c) {
    iStack_44 = (iStackX_1c - local_4c) + -6;
  }
  else {
    iStack_44 = iStackX_1c + 6;
  }
  iVar6 = (int)uStack_60;
  iVar7 = (int)local_68;
  iVar5 = (int)param_3;
  if (iVar6 / 2 + iVar7 < iVar5) {
    local_48 = (iVar5 - local_50) - 0xc;
  }
  else {
    local_48 = iVar5 + 0x18;
  }
  iVar5 = 0;
  if (0 < iVar6 - local_50) {
    iVar5 = iVar6 - local_50;
  }
  iVar9 = 0;
  if (0 < uStack_60._4_4_ - local_4c) {
    iVar9 = uStack_60._4_4_ - local_4c;
  }
  uVar8 = local_68;
  if ((iVar7 <= (int)local_48) && (uVar8 = (ulonglong)local_48, iVar5 + iVar7 < (int)local_48)) {
    uVar8 = (ulonglong)(uint)(iVar5 + iVar7);
  }
  local_54 = local_68._4_4_;
  if ((local_68._4_4_ <= iStack_44) && (local_54 = iStack_44, iVar9 + local_68._4_4_ < iStack_44)) {
    local_54 = iVar9 + local_68._4_4_;
  }
  local_58 = (undefined4)uVar8;
  if (iVar6 < local_50) {
    local_50 = iVar6;
  }
  if (uStack_60._4_4_ < local_4c) {
    local_4c = uStack_60._4_4_;
  }
  FUN_1804ae9d0(&local_38);
  local_2c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_38);
}



############ FUN_ 1812cf070 size=120 ############

void FUN_1812cf070(longlong *param_1,longlong param_2)

{
  longlong lVar1;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  
  lVar1 = 0;
  if (param_1[0x1a] != 0) {
    lVar1 = *(longlong *)(param_1[0x1a] + 0x10);
  }
  if (((param_2 == lVar1) && (param_2 != 0)) && (*(char *)((longlong)param_1 + 0xe1) != '\0')) {
    (**(code **)(*param_1 + 0x170))(param_1,&local_18);
    FUN_18134bfe0(param_1,(int)param_1[4],*(undefined4 *)((longlong)param_1 + 0x24),
                  *(int *)(param_2 + 0x28) + local_c + local_14,
                  *(int *)(param_2 + 0x2c) + local_10 + local_18);
  }
  return;
}



############ FUN_ 1812d3180 size=1545 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812d3180(longlong param_1,undefined8 *param_2,int *param_3)

{
  int iVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined8 uVar5;
  char cVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  float *pfVar11;
  int iVar12;
  float *pfVar13;
  int iVar14;
  longlong lVar15;
  undefined4 extraout_XMM0_Db;
  undefined8 extraout_XMM0_Qb;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  undefined1 auVar26 [16];
  undefined1 auStack_198 [32];
  undefined1 *local_178;
  float local_168;
  float local_164;
  float local_160;
  float local_15c;
  float local_158;
  float local_154;
  undefined1 local_150 [8];
  int local_148;
  int iStack_144;
  int local_140;
  int iStack_13c;
  float local_138 [5];
  float local_124;
  float local_120;
  float local_11c;
  float local_118 [2];
  undefined8 local_110;
  float local_108;
  float local_104;
  float local_100;
  float local_fc;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_ec;
  float local_e8;
  float local_e4;
  float local_e0;
  float local_dc;
  ulonglong local_d8;
  
  local_d8 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar5 = param_2[1];
  *(undefined8 *)(param_1 + 0x110) = *param_2;
  *(undefined8 *)(param_1 + 0x118) = uVar5;
  uVar5 = *(undefined8 *)(param_3 + 2);
  *(undefined8 *)(param_1 + 0x100) = *(undefined8 *)param_3;
  *(undefined8 *)(param_1 + 0x108) = uVar5;
  iVar7 = FUN_1812d3a80();
  iVar12 = 0;
  local_148 = 0;
  iStack_144 = 0;
  iVar14 = *(int *)(*(longlong *)(param_1 + 200) + 0x28) + iVar7 * 2;
  iStack_13c = *(int *)(*(longlong *)(param_1 + 200) + 0x2c) + iVar7 * 2;
  local_138[4] = (float)*(int *)(param_1 + 0x110);
  iVar8 = iVar14 / 2;
  iVar9 = iStack_13c / 2;
  local_f8 = (float)iVar7 - *(float *)(param_1 + 0x128);
  local_138[0] = (float)(*(int *)(param_1 + 0x118) / 2 + *(int *)(param_1 + 0x110));
  local_138[1] = (float)(*(int *)(param_1 + 0x11c) + *(int *)(param_1 + 0x114));
  local_138[2] = (float)(*(int *)(param_1 + 0x118) + *(int *)(param_1 + 0x110));
  local_138[3] = (float)(*(int *)(param_1 + 0x11c) / 2 + *(int *)(param_1 + 0x114));
  local_124 = (float)(*(int *)(param_1 + 0x11c) / 2 + *(int *)(param_1 + 0x114));
  fVar25 = (float)(iVar8 + iVar7 * -2);
  fVar23 = (float)(iVar9 + iVar7 * -2);
  local_120 = (float)(*(int *)(param_1 + 0x118) / 2 + *(int *)(param_1 + 0x110));
  local_118[0] = local_138[0] - fVar25;
  local_154 = (float)iVar9;
  local_e4 = local_154 - local_f8;
  local_118[1] = local_138[1] + local_e4;
  local_11c = (float)*(int *)(param_1 + 0x114);
  local_e4 = (float)*(int *)(param_1 + 0x114) - local_e4;
  local_110 = CONCAT44(local_118[1],local_138[0] + fVar25);
  local_158 = (float)iVar8;
  iVar7 = param_3[2] + iVar8 * -2;
  iVar1 = param_3[3] + iVar9 * -2;
  iVar10 = 0;
  if (0 < iVar7) {
    iVar10 = iVar7;
  }
  local_dc = local_e4;
  local_f8 = local_158 - local_f8;
  iVar7 = 0;
  if (0 < iVar1) {
    iVar7 = iVar1;
  }
  local_108 = local_138[2] + local_f8;
  local_104 = local_138[3] - fVar23;
  local_f8 = (float)*(int *)(param_1 + 0x110) - local_f8;
  local_168 = (float)iVar7;
  local_f4 = local_124 - fVar23;
  local_100 = local_108;
  local_fc = local_138[3] + fVar23;
  local_f0 = local_f8;
  local_e8 = local_120 - fVar25;
  local_e0 = local_120 + fVar25;
  local_ec = local_124 + fVar23;
  fVar25 = (float)(*param_3 + iVar8);
  fVar23 = (float)(param_3[1] + iVar9);
  pfVar13 = local_138;
  local_15c = (float)(*(int *)(param_1 + 0x118) / 2 + *(int *)(param_1 + 0x110));
  pfVar11 = (float *)&local_110;
  lVar15 = 4;
  local_164 = DAT_1824c4618;
  fVar22 = fVar25 + (float)iVar10;
  local_160 = (float)(*(int *)(param_1 + 0x11c) / 2 + *(int *)(param_1 + 0x114));
  local_140 = iVar14;
  do {
    fVar24 = *pfVar11;
    fVar2 = pfVar11[1];
    fVar17 = fVar25;
    if ((fVar25 <= fVar24) && (fVar17 = fVar22, fVar24 <= fVar22)) {
      fVar17 = fVar24;
    }
    fVar16 = fVar23;
    if ((fVar23 <= fVar2) && (fVar16 = fVar23 + local_168, fVar2 <= fVar23 + local_168)) {
      fVar16 = fVar2;
    }
    fVar3 = pfVar11[-2];
    fVar4 = pfVar11[-1];
    fVar21 = fVar25;
    if ((fVar25 <= fVar3) && (fVar21 = fVar22, fVar3 <= fVar22)) {
      fVar21 = fVar3;
    }
    fVar20 = fVar23;
    if ((fVar23 <= fVar4) && (fVar20 = fVar23 + local_168, fVar4 <= fVar23 + local_168)) {
      fVar20 = fVar4;
    }
    fVar17 = fVar17 - fVar21;
    fVar16 = fVar16 - fVar20;
    fVar18 = fVar16 * fVar16 + fVar17 * fVar17;
    if (0.0 < fVar18) {
      fVar18 = ((local_160 - fVar20) * fVar16 + (local_15c - fVar21) * fVar17) / fVar18;
      if (0.0 <= fVar18) {
        fVar19 = DAT_1824c3ea4;
        if (fVar18 <= DAT_1824c3ea4) {
          fVar19 = fVar18;
        }
      }
      else {
        fVar19 = 0.0;
      }
    }
    else {
      fVar19 = 0.0;
    }
    fVar20 = fVar19 * fVar16 + fVar20;
    fVar21 = fVar19 * fVar17 + fVar21;
    fVar17 = _hypotf(fVar21 - *pfVar13,fVar20 - pfVar13[1]);
    auVar26._4_4_ = extraout_XMM0_Db;
    auVar26._0_4_ = fVar17;
    auVar26._8_4_ = (int)extraout_XMM0_Qb;
    auVar26._12_4_ = (int)((ulonglong)extraout_XMM0_Qb >> 0x20);
    if (((((fVar3 < fVar25) || (fVar4 < fVar23)) || (fVar22 <= fVar3)) ||
        (fVar23 + local_168 <= fVar4)) &&
       (((fVar24 < fVar25 || (fVar2 < fVar23)) ||
        ((fVar22 <= fVar24 || (fVar23 + local_168 <= fVar2)))))) {
      local_178 = local_150;
      cVar6 = FUN_1804af1a0(*(undefined8 *)(pfVar11 + -2),*(undefined8 *)pfVar11,
                            CONCAT44(fVar23,fVar25),CONCAT44(fVar23,fVar22));
      if (cVar6 == '\0') {
        local_178 = local_150;
        fVar24 = fVar23 + local_168;
        cVar6 = FUN_1804af1a0(CONCAT44(fVar24,fVar22),CONCAT44(fVar23,fVar22),
                              CONCAT44(fVar23,fVar22),CONCAT44(fVar24,fVar22));
        if (cVar6 == '\0') {
          local_178 = local_150;
          cVar6 = FUN_1804af1a0(CONCAT44(fVar24,fVar25),CONCAT44(fVar24,fVar22),
                                CONCAT44(fVar24,fVar22),CONCAT44(fVar24,fVar25));
          if (cVar6 == '\0') {
            local_178 = local_150;
            cVar6 = FUN_1804af1a0(CONCAT44(fVar23,fVar25),CONCAT44(fVar24,fVar25),
                                  CONCAT44(fVar24,fVar25),CONCAT44(fVar23,fVar25));
            if (cVar6 == '\0') {
              auVar26._0_4_ = fVar17 + DAT_1824c459c;
            }
          }
        }
      }
    }
    if (auVar26._0_4_ < local_164) {
      *(undefined8 *)(param_1 + 0xf8) = *(undefined8 *)pfVar13;
      iStack_144 = (int)(fVar20 - local_154);
      iVar12 = (int)(fVar21 - local_158);
      local_164 = auVar26._0_4_;
    }
    pfVar11 = pfVar11 + 4;
    pfVar13 = pfVar13 + 2;
    lVar15 = lVar15 + -1;
  } while (lVar15 != 0);
  _local_148 = CONCAT44(iStack_144,iVar12);
  local_178 = (undefined1 *)CONCAT44(local_178._4_4_,iStack_13c);
  FUN_18134bfe0(param_1,iVar12,iStack_144,iVar14);
}



############ FUN_ 1812d39e0 size=69 ############

void FUN_1812d39e0(longlong param_1)

{
  longlong lVar1;
  undefined4 uVar2;
  
  uVar2 = FUN_1812d3a80();
  lVar1 = *(longlong *)(param_1 + 200);
  FUN_18134bfe0(lVar1,uVar2,uVar2,*(undefined4 *)(lVar1 + 0x28),*(undefined4 *)(lVar1 + 0x2c));
  FUN_1812d2f60(param_1);
  return;
}



############ FUN_ 1813170d0 size=567 ############

undefined8 FUN_1813170d0(longlong param_1,int param_2,int param_3)

{
  int iVar1;
  char cVar2;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  bool bVar10;
  
  if (*(longlong *)(param_1 + 0x180) == 0) {
    return 0;
  }
  if (*(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10) == 0) {
    return 0;
  }
  lVar7 = 0;
  iVar9 = 0;
  lVar5 = lVar7;
  if ((*(byte *)(*(longlong *)(param_1 + 200) + 0xa8) & 2) == 0) {
    iVar9 = 0;
    cVar2 = FUN_181317540();
    iVar8 = (int)lVar5;
    if (cVar2 != '\0') goto LAB_181317127;
  }
  else {
LAB_181317127:
    iVar8 = (int)lVar5;
    if (param_2 < 0x14) {
      iVar9 = 0x14 - param_2;
LAB_18131714f:
      if (-1 < iVar9) goto LAB_181317190;
      lVar5 = lVar7;
      if (*(longlong *)(param_1 + 0x180) != 0) {
        lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
      }
      iVar3 = (*(int *)(param_1 + 0xf8) - *(int *)(lVar5 + 0x28)) - *(int *)(lVar5 + 0x20);
      if (iVar9 < -10) {
        iVar9 = -10;
        if (-10 < iVar3) {
          iVar9 = iVar3;
        }
        goto LAB_1813171bd;
      }
      bVar10 = SBORROW4(iVar9,iVar3);
      iVar1 = iVar9 - iVar3;
    }
    else {
      if (*(int *)(param_1 + 0xf8) + -0x14 <= param_2) {
        iVar9 = (*(int *)(param_1 + 0xf8) - param_2) + -0x14;
        goto LAB_18131714f;
      }
LAB_181317190:
      lVar5 = lVar7;
      if (*(longlong *)(param_1 + 0x180) != 0) {
        lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
      }
      iVar3 = -*(int *)(lVar5 + 0x20);
      if (10 < iVar9) {
        iVar9 = 10;
      }
      bVar10 = SBORROW4(iVar3,iVar9);
      iVar1 = iVar3 - iVar9;
    }
    if (bVar10 != iVar1 < 0) {
      iVar9 = iVar3;
    }
  }
LAB_1813171bd:
  if (((*(byte *)(*(longlong *)(param_1 + 0xc0) + 0xa8) & 2) == 0) &&
     (cVar2 = FUN_181317590(param_1), cVar2 == '\0')) goto LAB_181317273;
  if (param_3 < 0x14) {
    iVar8 = 0x14 - param_3;
LAB_181317205:
    if (-1 < iVar8) goto LAB_181317246;
    lVar5 = lVar7;
    if (*(longlong *)(param_1 + 0x180) != 0) {
      lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
    }
    iVar3 = (*(int *)(param_1 + 0xfc) - *(int *)(lVar5 + 0x2c)) - *(int *)(lVar5 + 0x24);
    if (iVar8 < -10) {
      iVar8 = -10;
      if (-10 < iVar3) {
        iVar8 = iVar3;
      }
      goto LAB_181317273;
    }
    bVar10 = SBORROW4(iVar8,iVar3);
    iVar1 = iVar8 - iVar3;
  }
  else {
    if (*(int *)(param_1 + 0xfc) + -0x14 <= param_3) {
      iVar8 = (*(int *)(param_1 + 0xfc) - param_3) + -0x14;
      goto LAB_181317205;
    }
LAB_181317246:
    lVar5 = lVar7;
    if (*(longlong *)(param_1 + 0x180) != 0) {
      lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
    }
    iVar3 = -*(int *)(lVar5 + 0x24);
    if (10 < iVar8) {
      iVar8 = 10;
    }
    bVar10 = SBORROW4(iVar3,iVar8);
    iVar1 = iVar3 - iVar8;
  }
  if (bVar10 != iVar1 < 0) {
    iVar8 = iVar3;
  }
LAB_181317273:
  if ((iVar9 == 0) && (iVar8 == 0)) {
    return 0;
  }
  lVar5 = *(longlong *)(param_1 + 0x180);
  lVar6 = lVar7;
  if (lVar5 != 0) {
    lVar6 = *(longlong *)(lVar5 + 0x10);
  }
  lVar4 = lVar7;
  if (lVar5 != 0) {
    lVar4 = *(longlong *)(lVar5 + 0x10);
  }
  if (*(longlong *)(param_1 + 0x180) != 0) {
    lVar7 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x10);
  }
  FUN_18134bfe0(lVar7,*(int *)(lVar4 + 0x20) + iVar9,*(int *)(lVar6 + 0x24) + iVar8,
                *(undefined4 *)(lVar7 + 0x28),*(undefined4 *)(lVar7 + 0x2c));
  return 1;
}



############ FUN_ 1812d8a40 size=89 ############

void FUN_1812d8a40(longlong param_1)

{
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0xd0),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  FUN_1812d7f20(param_1);
  FUN_1812d7d90(param_1);
  return;
}



############ FUN_ 1812dd430 size=307 ############

void FUN_1812dd430(longlong param_1)

{
  undefined8 uVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  undefined1 local_28 [32];
  
  uVar1 = *(undefined8 *)(param_1 + 0x1c8);
  iVar6 = *(int *)(param_1 + 0x1d8);
  iVar3 = *(int *)(param_1 + 0x1dc);
  iVar4 = *(int *)(param_1 + 0x1e0);
  iVar5 = *(int *)(param_1 + 0x1e4);
  piVar7 = (int *)FUN_1804e4fb0(local_28,uVar1);
  FUN_18134bfe0(uVar1,*piVar7 + iVar3,piVar7[1] + iVar6,(piVar7[2] - iVar3) - iVar5,
                (piVar7[3] - iVar4) - iVar6);
  lVar2 = *(longlong *)(param_1 + 0x1c8);
  iVar6 = SUB84((double)*(float *)(*(longlong *)(param_1 + 0x298) + 0x28) + DAT_1824c4520,0);
  if ((*(int *)(lVar2 + 0x19c) != 0x10) || (*(int *)(lVar2 + 0x1a0) != iVar6)) {
    *(undefined4 *)(lVar2 + 0x19c) = 0x10;
    *(int *)(lVar2 + 0x1a0) = iVar6;
    FUN_1813165e0();
  }
  FUN_1812e0480(param_1);
  if (*(char *)(param_1 + 0x1ee) != '\0') {
    FUN_1812e16d0();
    return;
  }
  FUN_1812e0240(param_1);
  return;
}



############ FUN_ 1812e2790 size=575 ############

void FUN_1812e2790(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  uint uVar3;
  longlong *plVar4;
  longlong *plVar5;
  ulonglong uVar6;
  int iVar7;
  ulonglong uVar8;
  int iVar9;
  int iVar10;
  longlong lVar11;
  uint uVar12;
  ulonglong uVar14;
  ulonglong uVar13;
  
  if ((*(int *)(param_1 + 0x28) == 0) ||
     (uVar3 = (*(int *)(*(longlong *)(param_1 + 200) + 0x18c) -
              *(int *)(*(longlong *)(param_1 + 200) + 0x24)) / *(int *)(param_1 + 0xf4),
     *(uint *)(param_1 + 0xf0) <= uVar3)) {
    uVar3 = 0xffffffff;
  }
  iVar10 = *(int *)(*(longlong *)(param_1 + 200) + 0xfc) / *(int *)(param_1 + 0xf4) + 1 + uVar3;
  if ((int)uVar3 <= iVar10) {
    uVar14 = 0;
    do {
      lVar11 = *(longlong *)(param_1 + 200);
      uVar8 = uVar14;
      if ((*(int *)(lVar11 + 0x1d0) <= iVar10) &&
         (iVar9 = *(int *)(lVar11 + 0x1cc), iVar10 < *(int *)(lVar11 + 0x1d0) + iVar9)) {
        iVar7 = 1;
        if (1 < iVar9) {
          iVar7 = iVar9;
        }
        if ((uint)(iVar10 % iVar7) < *(uint *)(lVar11 + 0x1cc)) {
          uVar8 = *(ulonglong *)(*(longlong *)(lVar11 + 0x1c0) + (longlong)(iVar10 % iVar7) * 8);
        }
      }
      uVar6 = uVar14;
      if (uVar8 != 0) {
        uVar6 = *(ulonglong *)(uVar8 + 0xc0);
      }
      plVar4 = (longlong *)
               __RTDynamicCast(uVar6,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::TableListBox::RowComp::RTTI_Type_Descriptor,0);
      if (plVar4 != (longlong *)0x0) {
        if ((undefined **)*plVar4 == juce::TableListBox::RowComp::vftable) {
          iVar9 = *(int *)((longlong)plVar4 + 0xcc) + -1;
          lVar11 = (longlong)iVar9;
          if (-1 < iVar9) {
            do {
              lVar2 = *(longlong *)(plVar4[0x18] + lVar11 * 8);
              if (lVar2 != 0) {
                plVar5 = *(longlong **)(*(longlong *)(plVar4[0x17] + 0x118) + 0xc0);
                plVar1 = plVar5 + *(int *)(*(longlong *)(plVar4[0x17] + 0x118) + 0xcc);
                uVar12 = 0;
                uVar8 = uVar14;
                uVar6 = uVar14;
                uVar13 = uVar14;
                for (; plVar5 != plVar1; plVar5 = plVar5 + 1) {
                  uVar12 = (int)uVar13 + (int)uVar6;
                  uVar13 = (ulonglong)uVar12;
                  uVar6 = uVar14;
                  if ((*(byte *)(*plVar5 + 0xc) & 1) != 0) {
                    uVar6 = (ulonglong)*(uint *)(*plVar5 + 0x10);
                    iVar7 = (int)uVar8;
                    uVar8 = (ulonglong)(iVar7 + 1);
                    if (iVar7 == iVar9) break;
                  }
                }
                iVar7 = 0;
                if (0 < *(int *)((longlong)plVar4 + 0x2c)) {
                  iVar7 = *(int *)((longlong)plVar4 + 0x2c);
                }
                FUN_18134bfe0(lVar2,uVar12,0,uVar6,iVar7);
              }
              iVar9 = iVar9 + -1;
              lVar11 = lVar11 + -1;
            } while (-1 < lVar11);
          }
        }
        else {
          (*(code *)((undefined **)*plVar4)[0x21])(plVar4);
        }
      }
      iVar10 = iVar10 + -1;
    } while ((int)uVar3 <= iVar10);
  }
  return;
}



############ FUN_ 1812e8140 size=355 ############

void FUN_1812e8140(longlong param_1)

{
  int iVar1;
  int iVar2;
  undefined8 uVar3;
  longlong lVar4;
  longlong lVar5;
  int *piVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  undefined1 local_18 [16];
  
  lVar7 = 0;
  if (*(longlong *)(param_1 + 0xd0) == 0) {
    iVar8 = 0;
  }
  else {
    iVar8 = *(int *)(*(longlong *)(param_1 + 0xd0) + 0x2c);
  }
  iVar1 = *(int *)(param_1 + 0xfc);
  uVar3 = *(undefined8 *)(param_1 + 200);
  piVar6 = (int *)FUN_1804e4fb0(local_18,uVar3);
  FUN_18134bfe0(uVar3,*piVar6 + iVar1,piVar6[1] + iVar1 + iVar8,(piVar6[2] - iVar1) - iVar1,
                (piVar6[3] - (iVar1 + iVar8)) - iVar1);
  lVar4 = *(longlong *)(param_1 + 200);
  iVar8 = *(int *)(param_1 + 0xf4);
  if ((*(int *)(lVar4 + 0x19c) != 0x14) || (*(int *)(lVar4 + 0x1a0) != iVar8)) {
    *(undefined4 *)(lVar4 + 0x19c) = 0x14;
    *(int *)(lVar4 + 0x1a0) = iVar8;
    FUN_1813165e0();
  }
  lVar4 = *(longlong *)(param_1 + 200);
  *(undefined1 *)(lVar4 + 0x1dc) = 0;
  if (*(longlong *)(lVar4 + 0x180) != 0) {
    lVar7 = *(longlong *)(*(longlong *)(lVar4 + 0x180) + 0x10);
  }
  lVar5 = *(longlong *)(lVar4 + 0x1b8);
  iVar8 = *(int *)(lVar7 + 0x24);
  iVar1 = *(int *)(lVar5 + 0xf8);
  if (*(int *)(lVar5 + 0xf8) < *(int *)(lVar4 + 0xf8)) {
    iVar1 = *(int *)(lVar4 + 0xf8);
  }
  iVar9 = *(int *)(lVar5 + 0xf4) * *(int *)(lVar5 + 0xf0);
  iVar2 = *(int *)(lVar4 + 0xfc);
  if ((iVar9 + iVar8 < iVar2) && (iVar2 < iVar9)) {
    iVar8 = iVar2 - iVar9;
  }
  FUN_18134bfe0(lVar7,*(undefined4 *)(lVar7 + 0x20),iVar8,iVar1,iVar9);
  return;
}



############ FUN_ 1812e3d50 size=1222 ############

void FUN_1812e3d50(longlong param_1,float *param_2)

{
  undefined4 uVar1;
  undefined8 *puVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  longlong lVar8;
  int *piVar9;
  longlong *plVar10;
  ulonglong uVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  longlong *plVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int local_res8;
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  undefined1 local_48 [16];
  undefined1 local_38 [16];
  
  if ((((*(int *)(param_1 + 0xf0) == 0) && (*(int *)(param_1 + 0xf4) == 0)) &&
      (*(char *)((longlong)param_2 + 0x59) != '\0')) && (((uint)param_2[4] >> 5 & 1) == 0)) {
    puVar2 = *(undefined8 **)(param_1 + 0xe0);
    *(undefined8 *)(param_1 + 0xe0) = 0;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    iVar5 = FUN_1812e3370(param_1,(ulonglong)((double)param_2[10] + DAT_1824c4520) & 0xffffffff);
    *(int *)(param_1 + 0xf0) = iVar5;
    if (iVar5 == 0) {
      FUN_1812e39f0(param_1,param_2);
    }
    else {
      lVar8 = FUN_1812e3610(param_1,iVar5);
      if (lVar8 != 0) {
        *(undefined4 *)(param_1 + 0xf8) = *(undefined4 *)(lVar8 + 0x10);
      }
    }
  }
  iVar5 = *(int *)(param_1 + 0xf0);
  if (iVar5 == 0) {
    if (*(int *)(param_1 + 0xf4) == 0) {
      return;
    }
    if (((int)param_2[3] < -0x32) || (*(int *)(param_1 + 0x2c) + 0x32 <= (int)param_2[3])) {
      FUN_1812e3940(param_1,*(undefined4 *)(param_1 + 0x104));
      return;
    }
    plVar16 = *(longlong **)(param_1 + 0xe0);
    if (plVar16 == (longlong *)0x0) {
      return;
    }
    (**(code **)(*plVar16 + 0x58))(plVar16,1);
    lVar8 = *(longlong *)(param_1 + 0xe0);
    uVar1 = *(undefined4 *)(param_1 + 0x2c);
    iVar5 = *(int *)(lVar8 + 0x28);
    iVar12 = FUN_1812e4d70();
    iVar13 = (int)param_2[2] - *(int *)(param_1 + 0x100);
    iVar18 = 0;
    if (0 < iVar12 - iVar5) {
      iVar18 = iVar12 - iVar5;
    }
    if (iVar13 < 0) {
      iVar13 = 0;
    }
    else if (iVar18 < iVar13) {
      iVar13 = iVar18;
    }
    FUN_18134bfe0(lVar8,iVar13,0,iVar5,uVar1);
    iVar5 = *(int *)(param_1 + 0xcc);
    do {
      iVar5 = iVar5 + -1;
      if (iVar5 < 0) {
        return;
      }
      plVar10 = *(longlong **)(param_1 + 0xc0);
      iVar18 = 0;
      lVar8 = 0;
      plVar16 = plVar10 + *(int *)(param_1 + 0xcc);
      for (; plVar10 != plVar16; plVar10 = plVar10 + 1) {
        if ((*(byte *)(*plVar10 + 0xc) & 1) != 0) {
          if (*(int *)(*plVar10 + 8) == *(int *)(param_1 + 0xf4)) goto LAB_1812e40ce;
          iVar18 = iVar18 + 1;
          lVar8 = lVar8 + 1;
        }
      }
      iVar18 = -1;
      lVar8 = -1;
LAB_1812e40ce:
      iVar13 = iVar18;
      if ((0 < iVar18) &&
         ((*(byte *)(*(longlong *)(*(longlong *)(param_1 + 0xc0) + -8 + lVar8 * 8) + 0xc) & 4) != 0)
         ) {
        piVar9 = (int *)FUN_1812e4e20(param_1,local_68,iVar18 + -1);
        iVar12 = *piVar9;
        piVar9 = (int *)FUN_1812e4e20(param_1,local_58,iVar18);
        lVar3 = *(longlong *)(param_1 + 0xe0);
        uVar6 = ((*(int *)(lVar3 + 0x28) - piVar9[2]) - *piVar9) + *(int *)(lVar3 + 0x20);
        uVar14 = (int)uVar6 >> 0x1f;
        uVar7 = *(int *)(lVar3 + 0x20) - iVar12;
        uVar15 = (int)uVar7 >> 0x1f;
        if ((int)((uVar7 ^ uVar15) - uVar15) < (int)((uVar6 ^ uVar14) - uVar14)) {
          iVar13 = iVar18 + -1;
          lVar8 = lVar8 + -1;
        }
      }
      if ((iVar13 < *(int *)(param_1 + 0xcc) + -1) &&
         ((*(byte *)(*(longlong *)(*(longlong *)(param_1 + 0xc0) + 8 + lVar8 * 8) + 0xc) & 4) != 0))
      {
        piVar9 = (int *)FUN_1812e4e20(param_1,local_48,iVar13);
        iVar12 = *piVar9;
        piVar9 = (int *)FUN_1812e4e20(param_1,local_38,iVar13 + 1);
        lVar8 = *(longlong *)(param_1 + 0xe0);
        uVar6 = ((*(int *)(lVar8 + 0x28) - piVar9[2]) - *piVar9) + *(int *)(lVar8 + 0x20);
        uVar14 = (int)uVar6 >> 0x1f;
        uVar7 = *(int *)(lVar8 + 0x20) - iVar12;
        uVar15 = (int)uVar7 >> 0x1f;
        if ((int)((uVar6 ^ uVar14) - uVar14) < (int)((uVar7 ^ uVar15) - uVar15)) {
          iVar13 = iVar13 + 1;
        }
      }
      if (iVar13 == iVar18) {
        return;
      }
      FUN_1812e5170(param_1,*(undefined4 *)(param_1 + 0xf4),iVar13);
    } while( true );
  }
  plVar10 = *(longlong **)(param_1 + 0xc0);
  plVar16 = plVar10 + *(int *)(param_1 + 0xcc);
  while( true ) {
    if (plVar10 == plVar16) {
      return;
    }
    lVar8 = *plVar10;
    if (*(int *)(lVar8 + 8) == iVar5) break;
    plVar10 = plVar10 + 1;
  }
  iVar18 = *(int *)(lVar8 + 0x14);
  local_res8 = SUB84((double)(*param_2 - param_2[10]) + DAT_1824c4520,0);
  local_res8 = local_res8 + *(int *)(param_1 + 0xf8);
  iVar13 = iVar18;
  if ((iVar18 <= local_res8) && (iVar13 = local_res8, *(int *)(lVar8 + 0x18) < local_res8)) {
    iVar13 = *(int *)(lVar8 + 0x18);
  }
  if (*(char *)(param_1 + 0xec) != '\0') {
    plVar10 = *(longlong **)(param_1 + 0xc0);
    iVar19 = 0;
    iVar12 = 0;
    plVar16 = plVar10 + *(int *)(param_1 + 0xcc);
    for (; plVar10 != plVar16; plVar10 = plVar10 + 1) {
      if (*(int *)(*plVar10 + 8) == iVar5) goto LAB_1812e3edc;
      iVar12 = iVar12 + 1;
    }
    iVar12 = -1;
LAB_1812e3edc:
    iVar12 = iVar12 + 1;
    if (iVar12 < *(int *)(param_1 + 0xcc)) {
      plVar16 = (longlong *)(*(longlong *)(param_1 + 0xc0) + (longlong)iVar12 * 8);
      uVar11 = (ulonglong)(uint)(*(int *)(param_1 + 0xcc) - iVar12);
      do {
        if ((*(byte *)(*plVar16 + 0xc) & 1) != 0) {
          iVar19 = iVar19 + *(int *)(*plVar16 + 0x14);
        }
        plVar16 = plVar16 + 1;
        uVar11 = uVar11 - 1;
      } while (uVar11 != 0);
    }
    plVar10 = *(longlong **)(param_1 + 0xc0);
    iVar12 = 0;
    plVar16 = plVar10 + *(int *)(param_1 + 0xcc);
    for (; plVar10 != plVar16; plVar10 = plVar10 + 1) {
      if ((*(byte *)(*plVar10 + 0xc) & 1) != 0) {
        if (*(int *)(*plVar10 + 8) == iVar5) goto LAB_1812e3f4f;
        iVar12 = iVar12 + 1;
      }
    }
    iVar12 = -1;
LAB_1812e3f4f:
    plVar10 = *(longlong **)(param_1 + 0xc0);
    iVar17 = 0;
    iVar20 = 0;
    plVar16 = plVar10 + *(int *)(param_1 + 0xcc);
    iVar4 = 0;
    for (; plVar10 != plVar16; plVar10 = plVar10 + 1) {
      iVar17 = iVar17 + iVar20;
      if ((*(byte *)(*plVar10 + 0xc) & 1) == 0) {
        iVar20 = 0;
        iVar21 = iVar4;
      }
      else {
        iVar20 = *(int *)(*plVar10 + 0x10);
        iVar21 = iVar4 + 1;
        if (iVar4 == iVar12) break;
      }
      iVar4 = iVar21;
    }
    iVar19 = (*(int *)(param_1 + 0x108) - iVar17) - iVar19;
    iVar12 = iVar13;
    if (iVar19 < iVar13) {
      iVar12 = iVar19;
    }
    iVar13 = iVar18;
    if (iVar18 < iVar12) {
      iVar13 = iVar12;
    }
  }
  FUN_1812e4f80(param_1,iVar5,iVar13);
  return;
}



############ FUN_ 1812e5600 size=203 ############

void FUN_1812e5600(longlong param_1)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  ulonglong local_18;
  undefined8 local_10;
  
  lVar2 = *(longlong *)(param_1 + 0x200);
  lVar3 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar3 + 0x58) + 0x58))
            (lVar3 + 0x58,&local_28,*(undefined8 *)(lVar2 + 0x18));
  *(undefined4 *)(lVar2 + 0x1f0) = local_28;
  *(undefined4 *)(lVar2 + 500) = uStack_24;
  *(undefined4 *)(lVar2 + 0x1f8) = uStack_20;
  *(undefined4 *)(lVar2 + 0x1fc) = uStack_1c;
  if (*(longlong *)(lVar2 + 0x250) != 0) {
    FUN_18134bfe0(*(longlong *)(lVar2 + 0x250),local_18,local_18 >> 0x20,local_10,
                  (int)((ulonglong)local_10 >> 0x20));
  }
  uVar1 = *(uint *)(lVar2 + 0x20);
  if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
    *(undefined4 *)(lVar2 + 0x1d8) = local_28;
    *(undefined4 *)(lVar2 + 0x1dc) = uStack_20;
    return;
  }
  if ((uVar1 < 0xd) && ((0x140aU >> (uVar1 & 0x1f) & 1) != 0)) {
    *(undefined4 *)(lVar2 + 0x1d8) = uStack_24;
    *(undefined4 *)(lVar2 + 0x1dc) = uStack_1c;
    return;
  }
  if (uVar1 == 8) {
    FUN_180505060(lVar2);
  }
  return;
}



############ FUN_ 1812e8c60 size=76 ############

void FUN_1812e8c60(longlong param_1)

{
  if (*(longlong *)(param_1 + 0x1c8) != 0) {
    FUN_18134bfe0(*(longlong *)(param_1 + 0x1c8),0,0,*(undefined4 *)(param_1 + 0x28),
                  *(undefined4 *)(param_1 + 0x2c));
  }
  return;
}



############ FUN_ 1812e9930 size=468 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e9930(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int *piVar2;
  longlong lVar3;
  uint uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  uint *_Memory;
  int iVar7;
  int iVar8;
  int iVar9;
  float fVar10;
  undefined1 auStack_98 [32];
  int local_78;
  undefined8 *local_68;
  longlong local_60;
  int local_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  double local_48;
  double local_40;
  undefined8 local_38;
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_38 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_98;
  lVar3 = param_1 + -200;
  lVar5 = FUN_18134adf0(lVar3);
  plVar1 = (longlong *)(lVar5 + 0x50);
  (**(code **)(*plVar1 + 0x10))(plVar1,&local_68,lVar3);
  if (*(code **)(*plVar1 + 0x18) == FUN_18130e9a0) {
    local_58 = *(int *)(param_1 + 0x120);
    iStack_54 = *(int *)(param_1 + 0x124);
    iStack_50 = *(int *)(param_1 + 0x128);
    iStack_4c = *(int *)(param_1 + 300);
  }
  else {
    (**(code **)(*plVar1 + 0x18))(plVar1,&local_58,lVar3);
  }
  if (*(char *)(param_1 + 0x13b) == '\0') {
    local_40 = (double)(*(float *)(local_68 + 5) + DAT_1824c3d8c) + DAT_1824c4520;
    local_78 = local_58 + iStack_50 + local_40._0_4_ + 6;
    iVar8 = *(int *)(param_2 + 0x24) - local_78;
    iVar9 = *(int *)(param_2 + 0x28);
    iVar7 = *(int *)(param_2 + 0x20);
  }
  else {
    puVar6 = (undefined8 *)
             (**(code **)(**(longlong **)(param_1 + 0xd0) + 8))
                       (*(longlong **)(param_1 + 0xd0),&local_30);
    (**(code **)(*(longlong *)*puVar6 + 0x20))((longlong *)*puVar6,&local_60,puVar6 + 1);
    (**(code **)(*local_30 + 0xb0))(local_30,local_28);
    iVar8 = *(int *)(param_2 + 0x20);
    fVar10 = (float)FUN_1812518d0(&local_68,&local_60);
    local_48 = (double)(fVar10 + DAT_1824c3d8c) + DAT_1824c4520;
    iVar9 = local_48._0_4_ + iStack_4c + iStack_54;
    if (iVar8 < iVar9) {
      iVar9 = iVar8;
    }
    _Memory = (uint *)(local_60 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar4 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    local_78 = *(int *)(param_2 + 0x2c);
    iVar7 = *(int *)(param_2 + 0x20) - iVar9;
    iVar8 = *(int *)(param_2 + 0x24);
  }
  FUN_18134bfe0(lVar3,iVar7,iVar8,iVar9);
  if (local_68 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(local_68 + 1);
    iVar8 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_68)(local_68,1);
    }
  }
}



############ FUN_ 1812ec650 size=461 ############

void FUN_1812ec650(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  int iVar11;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int iStack_24;
  undefined4 local_20;
  int iStack_1c;
  
  lVar3 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar3 + 0x80) + 0x20))((longlong *)(lVar3 + 0x80),&local_38,param_1);
  iVar2 = local_30;
  iVar5 = local_38;
  iVar4 = 5;
  if (local_2c < 5) {
    iVar4 = local_2c;
  }
  iVar4 = local_2c - iVar4;
  iVar11 = 10;
  if (iVar4 < 10) {
    iVar11 = iVar4;
  }
  iVar6 = local_34 - iVar11;
  local_2c = iVar4 - iVar11;
  FUN_18134bfe0(param_1 + 0x130,*(undefined4 *)(param_1 + 0x150),*(undefined4 *)(param_1 + 0x154),10
                ,10);
  FUN_181344690(param_1 + 0x130,CONCAT44(iVar11 / 2 + iVar6 + iVar4,iVar2 / 2 + iVar5));
  *(undefined4 *)(param_1 + 0x114) = 0;
  uVar8 = 0;
  puVar9 = *(undefined8 **)(param_1 + 0x120);
  uVar7 = (ulonglong)((longlong)(puVar9 + *(int *)(param_1 + 300)) + (7 - (longlong)puVar9)) >> 3;
  if (puVar9 + *(int *)(param_1 + 300) < puVar9) {
    uVar7 = 0;
  }
  if (uVar7 != 0) {
    do {
      plVar1 = (longlong *)*puVar9;
      if (local_2c < 0x19) {
        (**(code **)(*plVar1 + 0x58))(plVar1,0);
        *(int *)(param_1 + 0x114) = *(int *)(param_1 + 0x114) + 1;
      }
      else {
        (**(code **)(*plVar1 + 0x58))(plVar1,1);
        iVar5 = 0x19;
        if (local_2c < 0x19) {
          iVar5 = local_2c;
        }
        local_2c = local_2c - iVar5;
        iStack_24 = local_34 + 2;
        local_28 = local_38 + 5;
        uVar10 = 0;
        if (0 < (int)(local_30 - 10U)) {
          uVar10 = (ulonglong)(local_30 - 10U);
        }
        local_20 = (undefined4)uVar10;
        iStack_1c = 0;
        if (0 < iVar5 + -4) {
          iStack_1c = iVar5 + -4;
        }
        local_34 = local_34 + iVar5;
        FUN_18134bfe0(plVar1,local_28,iStack_24,uVar10,iStack_1c);
      }
      puVar9 = puVar9 + 1;
      uVar8 = uVar8 + 1;
    } while (uVar8 != uVar7);
  }
  return;
}



############ FUN_ 1812ed220 size=125 ############

void FUN_1812ed220(longlong param_1)

{
  int iVar1;
  
  FUN_18134bfe0(param_1 + 0xb0,0,0,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  iVar1 = *(int *)(param_1 + 0x1a8);
  FUN_1804ffdf0(*(undefined8 *)(param_1 + 0x268),iVar1);
  if (iVar1 != *(int *)(param_1 + 0x1a8)) {
    FUN_1804ffdf0(*(undefined8 *)(param_1 + 0x268));
  }
  return;
}



############ FUN_ 1812ed4d0 size=121 ############

void FUN_1812ed4d0(longlong param_1)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  longlong lVar3;
  undefined1 (*pauVar4) [16];
  undefined1 local_18 [16];
  
  if ((*(int *)(param_1 + 0x4c) != 0) && (lVar2 = **(longlong **)(param_1 + 0x40), lVar2 != 0)) {
    lVar3 = FUN_18134adf0();
    pauVar4 = (undefined1 (*) [16])
              (**(code **)(*(longlong *)(lVar3 + 0x80) + 0x20))
                        ((longlong *)(lVar3 + 0x80),local_18,param_1);
    auVar1 = *pauVar4;
    FUN_18134bfe0(lVar2,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_8_,auVar1._12_4_);
  }
  return;
}



############ FUN_ 1812f1af0 size=68 ############

void FUN_1812f1af0(longlong param_1)

{
  FUN_18134bfe0(param_1 + 200,0,0,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1812f6f30 size=149 ############

void FUN_1812f6f30(longlong *param_1,longlong param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  
  FUN_18134bfe0(param_3,1,1,*(int *)(param_2 + 0x28) + -0x1e,*(int *)(param_2 + 0x2c) + -2);
  uVar3 = (**(code **)(*param_1 + 0x10))(param_1,&local_res8,param_2);
  FUN_1812e9e30(param_3,uVar3);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1812f8560 size=538 ############

void FUN_1812f8560(undefined8 param_1,longlong param_2,undefined8 param_3,longlong param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  
  iVar1 = *(int *)(param_2 + 0x28) + -0x28;
  iVar3 = *(int *)(param_2 + 0x2c) + -10;
  iVar7 = 0;
  if (0 < iVar1) {
    iVar7 = iVar1;
  }
  iVar1 = 0;
  if (0 < iVar3) {
    iVar1 = iVar3;
  }
  iVar3 = 0x16;
  if (iVar1 < 0x16) {
    iVar3 = iVar1;
  }
  iVar1 = iVar1 - iVar3;
  iVar4 = 0x16;
  if (iVar1 < 0x16) {
    iVar4 = iVar1;
  }
  iVar8 = iVar7 + -0x32;
  if (iVar7 < iVar7 + -0x32) {
    iVar8 = iVar7;
  }
  iVar6 = iVar7 - iVar8;
  FUN_18134bfe0(param_5,0x14,5,iVar8,iVar3);
  iVar5 = 6;
  if (iVar6 < 6) {
    iVar5 = iVar6;
  }
  iVar8 = iVar8 + 0x14 + iVar5;
  FUN_18134bfe0(param_7,iVar8,CONCAT44(5,iVar8) >> 0x20,iVar6 - iVar5,iVar3);
  iVar8 = 0x14;
  if (iVar7 < 0x14) {
    iVar8 = iVar7;
  }
  FUN_18134bfe0(param_6,iVar8 + 0x14,((iVar3 + 5) - iVar4) + iVar1,iVar7 - iVar8,iVar4);
  if (param_4 != 0) {
    iVar8 = iVar7 / 3;
    if (iVar7 < iVar7 / 3) {
      iVar8 = iVar7;
    }
    iVar5 = iVar7 - iVar8;
    iVar7 = iVar7 - iVar8;
    FUN_18134bfe0(param_4,iVar5 + 0x14,iVar3 + 5,iVar8,iVar1 - iVar4);
  }
  lVar2 = __RTDynamicCast(param_3,0,&juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor,
                          &juce::Component::RTTI_Type_Descriptor,0);
  if (lVar2 != 0) {
    iVar1 = (iVar1 - iVar4) + -0x14;
    iVar4 = 0;
    if (0 < iVar7) {
      iVar4 = iVar7;
    }
    iVar7 = 0;
    if (0 < iVar1) {
      iVar7 = iVar1;
    }
    FUN_18134bfe0(lVar2,0x14,iVar3 + 0xf,iVar4,iVar7);
  }
  return;
}



############ FUN_ 1812fa810 size=421 ############

longlong FUN_1812fa810(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                      undefined8 param_5,undefined8 param_6,undefined4 param_7,undefined4 param_8,
                      undefined8 param_9)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  int iVar7;
  int iVar8;
  ulonglong uVar9;
  
  lVar2 = FUN_181313f10(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  auVar1 = *(undefined1 (*) [16])(lVar2 + 0x20);
  iVar7 = auVar1._8_4_ + 0x32;
  iVar8 = auVar1._12_4_ + 0x32;
  uVar9 = CONCAT44((int)((ulonglong)param_5 >> 0x20),iVar8);
  FUN_18134bfe0(lVar2,auVar1._0_4_ + (auVar1._8_4_ - iVar7) / 2,
                (auVar1._12_4_ - iVar8) / 2 + auVar1._4_4_,iVar7,uVar9);
  puVar6 = *(undefined8 **)(lVar2 + 0x40);
  uVar4 = 0;
  uVar5 = (ulonglong)((longlong)(puVar6 + *(int *)(lVar2 + 0x4c)) + (7 - (longlong)puVar6)) >> 3;
  if (puVar6 + *(int *)(lVar2 + 0x4c) < puVar6) {
    uVar5 = uVar4;
  }
  if (uVar5 != 0) {
    do {
      uVar9 = uVar9 & 0xffffffff00000000;
      lVar3 = __RTDynamicCast(*puVar6,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::TextButton::RTTI_Type_Descriptor,uVar9);
      if (lVar3 != 0) {
        auVar1 = *(undefined1 (*) [16])(lVar3 + 0x20);
        uVar9 = CONCAT44((int)(uVar9 >> 0x20),auVar1._12_4_);
        FUN_18134bfe0(lVar3,auVar1._0_4_ + 0x19,auVar1._4_4_ + 0x28,auVar1._8_8_,uVar9);
      }
      puVar6 = puVar6 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar5);
  }
  return lVar2;
}



############ FUN_ 1812fb7e0 size=249 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fb7e0(undefined8 param_1,undefined8 param_2,int param_3,int param_4,int param_5,
                  int param_6,longlong param_7,longlong param_8,longlong param_9,char param_10)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  
  if (param_6 - param_4 < param_6) {
    param_6 = param_6 - param_4;
  }
  iVar4 = (int)((double)param_6 * _DAT_1824c4168);
  iVar3 = (param_3 - iVar4) + param_5;
  if (param_10 != '\0') {
    iVar3 = param_3;
  }
  if (param_9 != 0) {
    FUN_18134bfe0(param_9,iVar3,param_4,iVar4,param_6);
    iVar1 = iVar4;
    if (param_10 == '\0') {
      iVar1 = -iVar4;
    }
    iVar3 = iVar3 + iVar1;
  }
  lVar2 = param_8;
  if (param_10 != '\0') {
    lVar2 = param_7;
    param_7 = param_8;
  }
  if (lVar2 != 0) {
    FUN_18134bfe0(lVar2,iVar3,param_4,iVar4,param_6);
    iVar1 = iVar4;
    if (param_10 == '\0') {
      iVar1 = -iVar4;
    }
    iVar3 = iVar3 + iVar1;
  }
  if (param_7 != 0) {
    FUN_18134bfe0(param_7,iVar3,param_4,iVar4,param_6);
  }
  return;
}



############ FUN_ 181300c40 size=282 ############

void FUN_181300c40(undefined8 param_1,undefined8 param_2,int param_3,int param_4,int param_5,
                  int param_6,longlong param_7,longlong param_8,longlong param_9,char param_10)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  param_4 = ((int)((param_6 >> 0x1f & 7U) + param_6) >> 3) + param_4;
  param_6 = param_6 - ((int)(param_6 + (param_6 >> 0x1f & 3U)) >> 2);
  if (param_10 == '\0') {
    param_3 = param_5 + -4 + (param_3 - param_6);
  }
  else {
    param_3 = param_3 + 4;
  }
  if (param_9 != 0) {
    FUN_18134bfe0(param_9,param_3,param_4,param_6,param_6);
    iVar1 = param_6 >> 0x1f;
    iVar3 = param_6 / 5 + iVar1;
    if (param_10 == '\0') {
      iVar1 = -(iVar3 - iVar1) - param_6;
    }
    else {
      iVar1 = (iVar3 - iVar1) + param_6;
    }
    param_3 = param_3 + iVar1;
  }
  lVar2 = param_8;
  if (param_10 != '\0') {
    lVar2 = param_7;
    param_7 = param_8;
  }
  if (lVar2 != 0) {
    FUN_18134bfe0(lVar2,param_3,param_4 + -2,param_6,param_6);
    iVar1 = param_6;
    if (param_10 == '\0') {
      iVar1 = -param_6;
    }
    param_3 = param_3 + iVar1;
  }
  if (param_7 != 0) {
    FUN_18134bfe0(param_7,param_3,param_4 + -2,param_6,param_6);
  }
  return;
}



############ FUN_ 181306e50 size=277 ############

void FUN_181306e50(undefined8 param_1,longlong param_2,undefined8 param_3,longlong param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = *(int *)(param_2 + 0x28) + -0x10;
  if (param_4 != 0) {
    iVar3 = iVar2 - iVar2 / 3;
    FUN_18134bfe0(param_4,iVar3 + 8,0,iVar2 / 3,*(undefined4 *)(param_2 + 0x2c));
    iVar2 = iVar3 + -4;
  }
  FUN_18134bfe0(param_5,8,4,iVar2 + -0x38,0x16);
  FUN_18134bfe0(param_7,iVar2 + -0x2a,4,0x32,0x16);
  iVar3 = 0x1e;
  lVar1 = __RTDynamicCast(param_3,0,&juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor,
                          &juce::Component::RTTI_Type_Descriptor,0);
  if (lVar1 != 0) {
    FUN_18134bfe0(lVar1,8,0x1e,iVar2,*(int *)(param_2 + 0x2c) + -0x3c);
    iVar3 = *(int *)(lVar1 + 0x24) + 4 + *(int *)(lVar1 + 0x2c);
  }
  FUN_18134bfe0(param_6,0x3a,iVar3,iVar2 + -0x32);
  return;
}



############ FUN_ 18130b0c0 size=268 ############

void FUN_18130b0c0(undefined8 param_1,undefined8 param_2,int param_3,undefined4 param_4,int param_5,
                  int param_6,longlong param_7,longlong param_8,longlong param_9,char param_10)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  
  iVar3 = param_6 - ((int)(param_6 + (param_6 >> 0x1f & 7U)) >> 3);
  if (param_10 == '\0') {
    param_3 = ((param_3 - ((int)(iVar3 + (iVar3 >> 0x1f & 3U)) >> 2)) - iVar3) + param_5;
  }
  else {
    param_3 = param_3 + 4;
  }
  if (param_9 != 0) {
    FUN_18134bfe0(param_9,param_3,param_4,iVar3,param_6);
    iVar1 = iVar3;
    if (param_10 == '\0') {
      iVar1 = -((int)(iVar3 + (iVar3 >> 0x1f & 3U)) >> 2) - iVar3;
    }
    param_3 = param_3 + iVar1;
  }
  lVar2 = param_8;
  if (param_10 != '\0') {
    lVar2 = param_7;
    param_7 = param_8;
  }
  if (lVar2 != 0) {
    FUN_18134bfe0(lVar2,param_3,param_4,iVar3,param_6);
    iVar1 = iVar3;
    if (param_10 == '\0') {
      iVar1 = -iVar3;
    }
    param_3 = param_3 + iVar1;
  }
  if (param_7 != 0) {
    FUN_18134bfe0(param_7,param_3,param_4,iVar3,param_6);
  }
  return;
}



############ FUN_ 18130c440 size=238 ############

void FUN_18130c440(undefined8 param_1,longlong param_2,undefined8 param_3,longlong param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  longlong lVar4;
  
  FUN_18134bfe0(param_4,*(undefined4 *)(param_4 + 0x20),*(undefined4 *)(param_4 + 0x24),0x50,
                *(undefined4 *)(param_2 + 0x2c));
  lVar3 = __RTDynamicCast(param_4,0,&juce::Button::RTTI_Type_Descriptor,
                          &juce::TextButton::RTTI_Type_Descriptor,0);
  if (lVar3 != 0) {
    uVar1 = *(undefined4 *)(lVar3 + 0x2c);
    lVar4 = FUN_18134adf0(lVar3);
    uVar2 = (**(code **)(*(longlong *)(lVar4 + 8) + 0x18))(lVar4 + 8,lVar3,uVar1);
    FUN_18134bfe0(lVar3,*(undefined4 *)(lVar3 + 0x20),*(undefined4 *)(lVar3 + 0x24),uVar2,uVar1);
  }
  FUN_18134bfe0(param_4,*(int *)(param_2 + 0x28) - *(int *)(param_4 + 0x28),0,
                *(int *)(param_4 + 0x28),*(undefined4 *)(param_4 + 0x2c));
  FUN_18134bfe0(param_3,0,0,*(undefined4 *)(param_4 + 0x20),*(undefined4 *)(param_2 + 0x2c));
  return;
}



############ FUN_ 18130f150 size=154 ############

void FUN_18130f150(longlong *param_1,longlong param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *local_res8;
  
  FUN_18134bfe0(param_3,1,1,(*(int *)(param_2 + 0x28) - *(int *)(param_2 + 0x2c)) + 3,
                *(int *)(param_2 + 0x2c) + -2);
  uVar3 = (**(code **)(*param_1 + 0x10))(param_1,&local_res8,param_2);
  FUN_1812e9e30(param_3,uVar3);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 181317ce0 size=435 ############

void FUN_181317ce0(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  int iVar5;
  longlong *plVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int local_res8;
  int local_res10;
  undefined8 local_48;
  int iStack_40;
  int iStack_3c;
  
  iVar8 = *(int *)(param_1 + 0xd4);
  iVar3 = 0;
  iVar7 = *(int *)(param_1 + 0x28);
  iVar9 = 0;
  iVar5 = *(int *)(param_1 + 0x2c);
  iVar10 = 0;
  iStack_40 = *(int *)(param_1 + 0xd0);
  iVar2 = *(int *)(*(longlong *)(param_1 + 0xb0) + 0xf8);
  local_res8 = iVar8;
  local_res10 = iVar8;
  if (iVar2 == 0) {
    iVar11 = 0;
    iVar10 = iStack_40;
    if (iVar5 < iStack_40) {
      iVar10 = iVar5;
    }
    iVar5 = iVar5 - iVar10;
    iStack_40 = iVar7;
    iStack_3c = iVar10;
LAB_181317dc5:
    iVar3 = 0;
LAB_181317dc8:
    local_48._4_4_ = 0;
  }
  else {
    iVar11 = iVar8;
    iStack_3c = iVar5;
    if (iVar2 != 1) {
      if (iVar2 == 2) {
        iVar9 = iStack_40;
        if (iVar7 < iStack_40) {
          iVar9 = iVar7;
        }
        iVar7 = iVar7 - iVar9;
        iVar8 = iVar3;
        iStack_40 = iVar9;
        goto LAB_181317dc5;
      }
      if (iVar2 != 3) {
        local_48 = 0;
        iStack_3c = 0;
        iStack_40 = 0;
        local_48._0_4_ = 0;
        iVar3 = (int)local_48;
        goto LAB_181317dcf;
      }
      local_res8 = 0;
      if (iVar7 < iStack_40) {
        iStack_40 = iVar7;
      }
      iVar3 = iVar7 - iStack_40;
      iVar7 = iVar7 - iStack_40;
      goto LAB_181317dc8;
    }
    local_res10 = 0;
    iStack_3c = iStack_40;
    if (iVar5 < iStack_40) {
      iStack_3c = iVar5;
    }
    local_48._4_4_ = iVar5 - iStack_3c;
    iVar5 = iVar5 - iStack_3c;
    iStack_40 = iVar7;
  }
  local_48 = CONCAT44(local_48._4_4_,iVar3);
LAB_181317dcf:
  FUN_18134bfe0(*(longlong *)(param_1 + 0xb0),iVar3,local_48 >> 0x20,iStack_40,iStack_3c);
  iVar2 = *(int *)(param_1 + 0xd8);
  plVar6 = *(longlong **)(param_1 + 0xb8);
  plVar1 = plVar6 + *(int *)(param_1 + 0xc4);
  for (; plVar6 != plVar1; plVar6 = plVar6 + 1) {
    lVar4 = 0;
    if (*plVar6 != 0) {
      lVar4 = *(longlong *)(*plVar6 + 0x10);
    }
    if (lVar4 != 0) {
      FUN_18134bfe0(lVar4,iVar8 + iVar9 + iVar2,iVar10 + iVar11 + iVar2,
                    ((iVar7 - iVar8) - local_res8) + iVar2 * -2,
                    ((iVar5 - iVar11) - local_res10) + iVar2 * -2);
    }
  }
  return;
}



############ FUN_ 18131a330 size=116 ############

void FUN_18131a330(longlong param_1)

{
  ulonglong local_28;
  undefined8 uStack_20;
  undefined8 local_18;
  undefined8 uStack_10;
  
  if (*(longlong *)(param_1 + 0x1d8) != 0) {
    local_28 = 0;
    uStack_20 = 0;
    local_18 = 0;
    uStack_10 = 0;
    FUN_18131a590(0,&local_28,&local_18);
    if ((0 < (int)uStack_20) && (0 < uStack_20._4_4_)) {
      FUN_18134bfe0(*(undefined8 *)(param_1 + 0x1d8),local_28,local_28 >> 0x20,
                    uStack_20 & 0xffffffff,uStack_20._4_4_);
    }
  }
  return;
}



############ FUN_ 18131a3b0 size=216 ############

void FUN_18131a3b0(longlong *param_1,longlong param_2)

{
  ulonglong local_28;
  undefined8 uStack_20;
  undefined8 local_18;
  undefined8 uStack_10;
  
  if (param_2 == param_1[0x3b]) {
    if (*(code **)(*(longlong *)param_1[0x39] + 0x108) == thunk_FUN_181319110) {
      FUN_181319110();
    }
    else {
      (**(code **)(*(longlong *)param_1[0x39] + 0x108))();
    }
    if ((undefined **)*param_1 != juce::TabBarButton::vftable) {
      (*(code *)((undefined **)*param_1)[0x21])(param_1);
      return;
    }
    if (param_1[0x3b] != 0) {
      local_28 = 0;
      uStack_20 = 0;
      local_18 = 0;
      uStack_10 = 0;
      FUN_18131a590(param_1,&local_28,&local_18);
      if ((0 < (int)uStack_20) && (0 < uStack_20._4_4_)) {
        FUN_18134bfe0(param_1[0x3b],local_28,local_28 >> 0x20,uStack_20 & 0xffffffff,uStack_20._4_4_
                     );
        return;
      }
    }
  }
  return;
}



############ FUN_ 18131c4b0 size=98 ############

void FUN_18131c4b0(longlong param_1,longlong param_2,undefined8 param_3,char param_4)

{
  undefined1 auVar1 [16];
  undefined1 (*pauVar2) [16];
  undefined1 local_18 [24];
  
  if ((param_4 != '\0') && (param_2 == *(longlong *)(param_1 + 0x88))) {
    param_1 = param_1 + -0xb0;
    pauVar2 = (undefined1 (*) [16])FUN_18131c3d0(param_1,local_18,param_2);
    auVar1 = *pauVar2;
    FUN_18134bfe0(param_1,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_8_,auVar1._12_4_);
  }
  return;
}



############ FUN_ 18131ccb0 size=695 ############

void FUN_18131ccb0(longlong param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined1 auVar4 [16];
  undefined1 auVar5 [16];
  uint uVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  ulonglong uVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  ulonglong uVar14;
  uint uVar15;
  undefined8 local_58;
  undefined4 local_38;
  
  uVar11 = *(uint *)(param_1 + 0x28);
  iVar13 = 0;
  iVar2 = *(int *)(param_1 + 0x2c);
  cVar1 = *(char *)(param_1 + 0x5b8);
  if (cVar1 == '\0') {
    uVar15 = *(uint *)(param_1 + 0x5c0);
    local_58 = 0;
    uVar12 = uVar15;
    if ((int)uVar11 < (int)uVar15) {
      uVar15 = uVar11;
      uVar12 = uVar11;
    }
  }
  else {
    uVar15 = *(uint *)(param_1 + 0x5c0);
    if ((int)uVar11 < (int)*(uint *)(param_1 + 0x5c0)) {
      uVar15 = uVar11;
    }
    local_58 = (ulonglong)(uVar11 - uVar15);
    uVar12 = 0;
  }
  uVar11 = uVar11 - uVar15;
  iVar3 = *(int *)(param_1 + 0x5c4);
  if (iVar2 < *(int *)(param_1 + 0x5c4)) {
    iVar3 = iVar2;
  }
  *(ulonglong *)(param_1 + 0x5a8) = local_58;
  *(ulonglong *)(param_1 + 0x5b0) = CONCAT44(iVar2,uVar15);
  if (*(longlong *)(param_1 + 0x150) == 0) {
    if (cVar1 == '\0') {
      uVar6 = uVar12 + 10;
      uVar15 = 0x1e;
      if ((int)uVar11 < 0x1e) {
        uVar15 = uVar11;
      }
      iVar8 = (uVar12 - uVar6) + uVar15;
      local_38 = uVar12 + uVar15;
    }
    else {
      uVar15 = 0x1e;
      if ((int)uVar11 < 0x1e) {
        uVar15 = uVar11;
      }
      uVar6 = (uVar12 - uVar15) + uVar11;
      iVar8 = uVar15 - 10;
      local_38 = uVar12;
    }
    iVar7 = 0;
    if (0 < iVar8) {
      iVar7 = iVar8;
    }
    auVar4._8_4_ = iVar7;
    auVar4._0_8_ = CONCAT44(0,uVar6);
    auVar4._12_4_ = iVar3;
    FUN_18134bfe0(param_1 + 0x368,CONCAT44(0,uVar6),0,auVar4._8_8_,iVar3);
    if (*(char *)(param_1 + 0x5b8) == '\0') {
      uVar6 = local_38 + 0x28;
      iVar8 = (local_38 - uVar6) + (uVar11 - uVar15);
      iVar13 = 0;
      local_38 = uVar6;
      if (0 < iVar8) {
        iVar13 = iVar8;
      }
    }
    else {
      iVar8 = (uVar11 - uVar15) + -0x28;
      if (0 < iVar8) {
        iVar13 = iVar8;
      }
    }
    uVar10 = CONCAT44(0,local_38);
    auVar5._8_4_ = iVar13;
    auVar5._0_8_ = uVar10;
    auVar5._12_4_ = iVar3;
    lVar9 = param_1 + 0x160;
    uVar14 = auVar5._8_8_;
  }
  else {
    uVar15 = uVar11;
    if (*(char *)(param_1 + 0x5e0) != '\0') {
      if (cVar1 == '\0') {
        local_38 = uVar12 + 10;
        uVar15 = 0x1e;
        if ((int)uVar11 < 0x1e) {
          uVar15 = uVar11;
        }
        iVar8 = (uVar12 - local_38) + uVar15;
        if (0 < iVar8) {
          iVar13 = iVar8;
        }
      }
      else {
        uVar15 = 0x1e;
        if ((int)uVar11 < 0x1e) {
          uVar15 = uVar11;
        }
        local_38 = (uVar12 - uVar15) + uVar11;
        if (0 < (int)(uVar15 - 10)) {
          iVar13 = uVar15 - 10;
        }
      }
      uVar15 = uVar11 - uVar15;
      FUN_18134bfe0(param_1 + 0x368,local_38,0,iVar13,iVar3);
    }
    uVar10 = 0;
    uVar14 = (ulonglong)uVar15;
    lVar9 = *(longlong *)(param_1 + 0x150);
  }
  FUN_18134bfe0(lVar9,uVar10,0,uVar14,iVar3);
  if (*(longlong *)(param_1 + 0x140) != 0) {
    FUN_18134bfe0(*(longlong *)(param_1 + 0x140),uVar12,iVar3,uVar11,iVar2 - iVar3);
  }
  return;
}



############ FUN_ 18131eb60 size=553 ############

void FUN_18131eb60(longlong param_1,float *param_2)

{
  int iVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  int local_res8;
  int local_28;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  int local_18;
  int iStack_14;
  int iStack_10;
  int iStack_c;
  
  if ((*(longlong *)(param_1 + 0xb0) != 0) &&
     (*(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x10) != 0)) {
    local_28 = *(int *)(param_1 + 0xc0);
    iStack_24 = *(int *)(param_1 + 0xc4);
    iStack_20 = *(int *)(param_1 + 200);
    iVar4 = *(int *)(param_1 + 0xcc);
    lVar6 = 0;
    iVar1 = *(int *)(param_1 + 0xd0);
    iStack_1c = iVar4;
    if (iVar1 == 0) {
      local_res8 = SUB84((double)(*param_2 - param_2[10]) + DAT_1824c4520,0);
      iVar4 = local_28 + iStack_20;
      if (local_res8 + local_28 < local_28 + iStack_20) {
        iVar4 = local_res8 + local_28;
      }
      iVar5 = (local_28 - iVar4) + iStack_20;
      local_28 = iVar4;
      iStack_20 = 0;
      if (0 < iVar5) {
        iStack_20 = iVar5;
      }
    }
    else if (iVar1 == 1) {
      local_res8 = SUB84((double)(*param_2 - param_2[10]) + DAT_1824c4520,0);
      local_res8 = local_res8 + iStack_20;
      iStack_20 = 0;
      if (0 < local_res8) {
        iStack_20 = local_res8;
      }
    }
    else if (iVar1 == 2) {
      local_res8 = SUB84((double)(param_2[1] - param_2[0xb]) + DAT_1824c4520,0);
      iVar5 = iStack_24 + iVar4;
      if (local_res8 + iStack_24 < iStack_24 + iVar4) {
        iVar5 = local_res8 + iStack_24;
      }
      iVar4 = (iStack_24 - iVar5) + iVar4;
      iStack_24 = iVar5;
      iStack_1c = 0;
      if (0 < iVar4) {
        iStack_1c = iVar4;
      }
    }
    else if (iVar1 == 3) {
      local_res8 = SUB84((double)(param_2[1] - param_2[0xb]) + DAT_1824c4520,0);
      iStack_1c = 0;
      if (0 < iVar4 + local_res8) {
        iStack_1c = iVar4 + local_res8;
      }
    }
    if (*(longlong *)(param_1 + 0xb8) != 0) {
      local_18 = local_28;
      iStack_14 = iStack_24;
      iStack_10 = iStack_20;
      iStack_c = iStack_1c;
      if (*(longlong *)(param_1 + 0xb0) != 0) {
        lVar6 = *(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x10);
      }
      FUN_1813489c0(*(longlong *)(param_1 + 0xb8),lVar6,&local_18,iVar1 == 2,iVar1 == 0,iVar1 == 3,
                    iVar1 == 1);
      return;
    }
    lVar3 = lVar6;
    if (*(longlong *)(param_1 + 0xb0) != 0) {
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x10);
    }
    plVar2 = *(longlong **)(lVar3 + 0x30);
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 8))(plVar2,&local_28);
      return;
    }
    if (*(longlong *)(param_1 + 0xb0) != 0) {
      lVar6 = *(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x10);
    }
    FUN_18134bfe0(lVar6,local_28,iStack_24,iStack_20,iStack_1c);
  }
  return;
}



############ FUN_ 18131efe0 size=358 ############

void FUN_18131efe0(longlong param_1,float *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  int local_res8;
  int local_res18;
  uint in_stack_ffffffffffffffb8;
  undefined4 local_28;
  undefined4 uStack_24;
  int iStack_20;
  int iStack_1c;
  undefined4 local_18;
  undefined4 uStack_14;
  int iStack_10;
  int iStack_c;
  
  if ((*(longlong *)(param_1 + 0xb8) != 0) &&
     (*(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x10) != 0)) {
    uStack_24 = *(undefined4 *)(param_1 + 0xc4);
    local_28 = *(undefined4 *)(param_1 + 0xc0);
    local_res8 = SUB84((double)(param_2[1] - param_2[0xb]) + DAT_1824c4520,0);
    local_res8 = local_res8 + *(int *)(param_1 + 0xcc);
    local_res18 = SUB84((double)(*param_2 - param_2[10]) + DAT_1824c4520,0);
    local_res18 = local_res18 + *(int *)(param_1 + 200);
    lVar2 = 0;
    iStack_20 = 0;
    if (0 < local_res18) {
      iStack_20 = local_res18;
    }
    iStack_1c = 0;
    if (0 < local_res8) {
      iStack_1c = local_res8;
    }
    if (*(longlong *)(param_1 + 0xb0) != 0) {
      if (*(longlong *)(param_1 + 0xb8) != 0) {
        lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x10);
      }
      local_18 = local_28;
      uStack_14 = uStack_24;
      iStack_10 = iStack_20;
      iStack_c = iStack_1c;
      FUN_1813489c0(*(longlong *)(param_1 + 0xb0),lVar2,&local_18,0,
                    in_stack_ffffffffffffffb8 & 0xffffff00,1,1);
      return;
    }
    lVar3 = lVar2;
    if (*(longlong *)(param_1 + 0xb8) != 0) {
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x10);
    }
    plVar1 = *(longlong **)(lVar3 + 0x30);
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 8))(plVar1,&local_28);
      return;
    }
    if (*(longlong *)(param_1 + 0xb8) != 0) {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x10);
    }
    FUN_18134bfe0(lVar2,local_28,*(ulonglong *)(param_1 + 0xc0) >> 0x20,iStack_20,iStack_1c);
  }
  return;
}



############ FUN_ 18131f7c0 size=601 ############

void FUN_18131f7c0(longlong param_1,float *param_2)

{
  uint uVar1;
  longlong *plVar2;
  int iVar3;
  int iVar4;
  ulonglong uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  ulonglong uVar9;
  undefined4 in_stack_ffffffffffffffb8;
  undefined8 local_28;
  undefined8 uStack_20;
  int local_18;
  int iStack_14;
  int iStack_10;
  undefined4 uStack_c;
  
  if ((*(longlong *)(param_1 + 0xb0) != 0) &&
     (*(longlong *)(*(longlong *)(param_1 + 0xb0) + 0x10) != 0)) {
    local_28 = *(undefined8 *)(param_1 + 0xd0);
    uStack_20 = *(undefined8 *)(param_1 + 0xd8);
    uVar9 = 0;
    uVar1 = *(uint *)(param_1 + 0xe0);
    iVar3 = SUB84((double)(*param_2 - param_2[10]) + DAT_1824c4520,0);
    iVar4 = SUB84((double)(param_2[1] - param_2[0xb]) + DAT_1824c4520,0);
    iStack_14 = (int)((ulonglong)local_28 >> 0x20);
    uStack_c = (undefined4)((ulonglong)uStack_20 >> 0x20);
    if (uVar1 == 0) {
      iStack_14 = iStack_14 + iVar4;
      local_18 = (int)local_28 + iVar3;
    }
    else {
      iVar6 = (int)uStack_20;
      if ((*(byte *)(param_1 + 0xe0) & 1) != 0) {
        iVar6 = (int)local_28 + (int)uStack_20;
        if (iVar3 + (int)local_28 < (int)local_28 + (int)uStack_20) {
          iVar6 = iVar3 + (int)local_28;
        }
        iVar7 = (int)local_28 - iVar6;
        local_28 = CONCAT44(iStack_14,iVar6);
        uVar8 = iVar7 + (int)uStack_20;
        uVar5 = uVar9;
        if (0 < (int)uVar8) {
          uVar5 = (ulonglong)uVar8;
        }
        iVar6 = (int)uVar5;
        uStack_20 = CONCAT44(uStack_c,iVar6);
      }
      if ((uVar1 >> 2 & 1) != 0) {
        iVar7 = 0;
        if (0 < iVar3 + iVar6) {
          iVar7 = iVar3 + iVar6;
        }
        uStack_20 = CONCAT44(uStack_20._4_4_,iVar7);
      }
      iVar3 = uStack_20._4_4_;
      if ((uVar1 >> 1 & 1) != 0) {
        iVar3 = local_28._4_4_ + uStack_20._4_4_;
        if (iVar4 + local_28._4_4_ < local_28._4_4_ + uStack_20._4_4_) {
          iVar3 = iVar4 + local_28._4_4_;
        }
        iVar6 = local_28._4_4_ - iVar3;
        local_28 = CONCAT44(iVar3,(int)local_28);
        iVar6 = iVar6 + uStack_20._4_4_;
        iVar3 = 0;
        if (0 < iVar6) {
          iVar3 = iVar6;
        }
        uStack_20 = CONCAT44(iVar3,(int)uStack_20);
      }
      if ((uVar1 >> 3 & 1) != 0) {
        iVar6 = 0;
        if (0 < iVar3 + iVar4) {
          iVar6 = iVar3 + iVar4;
        }
        uStack_20 = CONCAT44(iVar6,(int)uStack_20);
      }
      iStack_14 = local_28._4_4_;
      uStack_c = uStack_20._4_4_;
      local_18 = (int)local_28;
    }
    iStack_10 = (int)uStack_20;
    if (*(longlong *)(param_1 + 0xb8) != 0) {
      uVar1 = *(uint *)(param_1 + 0xe0);
      local_28 = CONCAT44(iStack_14,local_18);
      uStack_20 = CONCAT44(uStack_c,(int)uStack_20);
      if (*(longlong *)(param_1 + 0xb0) != 0) {
        uVar9 = *(ulonglong *)(*(longlong *)(param_1 + 0xb0) + 0x10);
      }
      FUN_1813489c0(*(longlong *)(param_1 + 0xb8),uVar9,&local_28,(byte)(uVar1 >> 1) & 1,
                    CONCAT31((int3)((uint)in_stack_ffffffffffffffb8 >> 8),(char)uVar1) & 0xffffff01,
                    (byte)(uVar1 >> 3) & 1,(byte)(uVar1 >> 2) & 1);
      return;
    }
    uVar5 = uVar9;
    if (*(longlong *)(param_1 + 0xb0) != 0) {
      uVar5 = *(ulonglong *)(*(longlong *)(param_1 + 0xb0) + 0x10);
    }
    plVar2 = *(longlong **)(uVar5 + 0x30);
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 8))(plVar2,&local_18);
      return;
    }
    if (*(longlong *)(param_1 + 0xb0) != 0) {
      uVar9 = *(ulonglong *)(*(longlong *)(param_1 + 0xb0) + 0x10);
    }
    FUN_18134bfe0(uVar9,local_18,iStack_14,(int)uStack_20,uStack_c);
  }
  return;
}



############ FUN_ 181320420 size=219 ############

void FUN_181320420(longlong param_1)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  
  if ((*(int *)(param_1 + 0xb8) == 1) || (*(int *)(param_1 + 0xcc) == *(int *)(param_1 + 0xe0))) {
    puVar2 = *(undefined8 **)(param_1 + 0x40);
    uVar3 = 0;
    uVar1 = (ulonglong)((longlong)(puVar2 + *(int *)(param_1 + 0x4c)) + (7 - (longlong)puVar2)) >> 3
    ;
    if (puVar2 + *(int *)(param_1 + 0x4c) < puVar2) {
      uVar1 = uVar3;
    }
    if (uVar1 != 0) {
      do {
        FUN_18134bfe0(*puVar2,0,0,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
        uVar3 = uVar3 + 1;
        puVar2 = puVar2 + 1;
      } while (uVar3 != uVar1);
    }
  }
  *(byte *)(param_1 + 0xa8) =
       *(byte *)(param_1 + 0xa8) ^
       ((*(int *)(param_1 + 0xcc) == 0) << 5 ^ *(byte *)(param_1 + 0xa8)) & 0x20;
  return;
}



############ FUN_ 1813220f0 size=328 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813220f0(longlong param_1,longlong *param_2,char param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  undefined4 local_58;
  int iStack_54;
  undefined4 local_50;
  int iStack_4c;
  
  if (param_3 == '\0') {
    FUN_181323d10(param_1 + 200);
  }
  uVar6 = _UNK_1824c4da8;
  uVar5 = _DAT_1824c4da0;
  uVar4 = DAT_1824c3ea4;
  uVar1 = *(undefined4 *)(param_1 + 0x28);
  iVar7 = 0;
  iVar8 = 0;
  if (0 < *(int *)(param_1 + 0xc4)) {
    lVar9 = 0;
    lVar10 = 0;
    do {
      local_58 = 0;
      uVar3 = *(undefined8 *)(lVar10 + *(longlong *)(param_1 + 0xb8));
      iVar2 = *(int *)(lVar9 + *param_2);
      iStack_54 = iVar7;
      local_50 = uVar1;
      iStack_4c = iVar2;
      if (param_3 == '\0') {
        FUN_18134bfe0(uVar3,0,iVar7,uVar1,iVar2);
      }
      else {
        FUN_181323e20(param_1 + 200,uVar3,&local_58,uVar4,0x96,0,uVar5,uVar6);
      }
      iVar7 = iVar7 + iVar2;
      iVar8 = iVar8 + 1;
      lVar10 = lVar10 + 8;
      lVar9 = lVar9 + 0xc;
    } while (iVar8 < *(int *)(param_1 + 0xc4));
  }
  return;
}



############ FUN_ 1813238d0 size=86 ############

void FUN_1813238d0(undefined8 param_1,longlong param_2,undefined1 (*param_3) [16])

{
  undefined1 auVar1 [16];
  longlong *plVar2;
  
  plVar2 = *(longlong **)(param_2 + 0x30);
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 8))(plVar2,param_3);
    return;
  }
  auVar1 = *param_3;
  FUN_18134bfe0(param_2,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_4_,auVar1._12_4_);
  return;
}



############ FUN_ 181325670 size=435 ############

void FUN_181325670(longlong param_1)

{
  longlong lVar1;
  undefined4 uVar2;
  longlong lVar3;
  int iVar4;
  
  iVar4 = *(int *)(param_1 + 0x2c) + -0x1a;
  FUN_18134bfe0(param_1 + 0xe8,2,2,*(int *)(param_1 + 0x28) + -4,*(int *)(param_1 + 0x2c) + -0x1f);
  FUN_18134bfe0(param_1 + 0x1f0,2,iVar4,0x16,0x16);
  FUN_18134bfe0(param_1 + 0x3b8,*(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x210),iVar4,0x16,
                0x16);
  lVar1 = param_1 + 0x580;
  lVar3 = FUN_18134adf0(lVar1);
  uVar2 = (**(code **)(*(longlong *)(lVar3 + 8) + 0x18))(lVar3 + 8,lVar1,0x16);
  FUN_18134bfe0(lVar1,*(undefined4 *)(param_1 + 0x5a0),*(undefined4 *)(param_1 + 0x5a4),uVar2,0x16);
  FUN_18134bfe0(param_1 + 0x968,*(undefined4 *)(param_1 + 0x988),*(undefined4 *)(param_1 + 0x98c),
                0x2c,0x16);
  FUN_18134bfe0(param_1 + 0x748,*(undefined4 *)(param_1 + 0x768),*(undefined4 *)(param_1 + 0x76c),
                0x2c,0x16);
  FUN_18134bfe0(param_1 + 0x968,(*(int *)(param_1 + 0x28) - *(int *)(param_1 + 0x990)) + -2,iVar4,
                *(int *)(param_1 + 0x990),*(undefined4 *)(param_1 + 0x994));
  FUN_18134bfe0(param_1 + 0x748,(*(int *)(param_1 + 0x988) - *(int *)(param_1 + 0x770)) + -4,iVar4,
                *(int *)(param_1 + 0x770),*(undefined4 *)(param_1 + 0x774));
  FUN_18134bfe0(lVar1,(*(int *)(param_1 + 0x768) - *(int *)(param_1 + 0x5a8)) + -8,iVar4,
                *(int *)(param_1 + 0x5a8),*(undefined4 *)(param_1 + 0x5ac));
  return;
}



############ FUN_ 1813270b0 size=304 ############

void FUN_1813270b0(longlong param_1)

{
  undefined4 uVar1;
  longlong lVar2;
  code *pcVar3;
  undefined4 uVar4;
  longlong lVar5;
  longlong lVar6;
  
  lVar5 = FUN_18134adf0();
  lVar2 = *(longlong *)(param_1 + 0x270);
  pcVar3 = *(code **)(*(longlong *)(lVar5 + 0x88) + 0x10);
  if (pcVar3 == FUN_18130c440) {
    FUN_18134bfe0(lVar2,*(undefined4 *)(lVar2 + 0x20),*(undefined4 *)(lVar2 + 0x24),0x50,
                  *(undefined4 *)(param_1 + 0x2c));
    lVar5 = __RTDynamicCast(lVar2,0,&juce::Button::RTTI_Type_Descriptor,
                            &juce::TextButton::RTTI_Type_Descriptor,0);
    if (lVar5 != 0) {
      uVar1 = *(undefined4 *)(lVar5 + 0x2c);
      lVar6 = FUN_18134adf0(lVar5);
      uVar4 = (**(code **)(*(longlong *)(lVar6 + 8) + 0x18))(lVar6 + 8,lVar5,uVar1);
      FUN_18134bfe0(lVar5,*(undefined4 *)(lVar5 + 0x20),*(undefined4 *)(lVar5 + 0x24),uVar4,uVar1);
    }
    FUN_18134bfe0(lVar2,*(int *)(param_1 + 0x28) - *(int *)(lVar2 + 0x28),0,*(int *)(lVar2 + 0x28),
                  *(undefined4 *)(lVar2 + 0x2c));
    FUN_18134bfe0(param_1 + 0xd8,0,0,*(undefined4 *)(lVar2 + 0x20),*(undefined4 *)(param_1 + 0x2c));
    return;
  }
  (*pcVar3)((longlong *)(lVar5 + 0x88),param_1,param_1 + 0xd8,lVar2);
  return;
}



############ FUN_ 181331620 size=195 ############

undefined8 * FUN_181331620(undefined8 *param_1,longlong param_2)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  undefined8 uVar3;
  
  FUN_181333090();
  *param_1 = juce::DrawableImage::vftable;
  lVar2 = *(longlong *)(param_2 + 0xc0);
  param_1[0x18] = lVar2;
  if (lVar2 != 0) {
    LOCK();
    *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
    UNLOCK();
  }
  *(undefined4 *)(param_1 + 0x19) = *(undefined4 *)(param_2 + 200);
  *(undefined4 *)((longlong)param_1 + 0xcc) = *(undefined4 *)(param_2 + 0xcc);
  uVar3 = *(undefined8 *)(param_2 + 0xd8);
  param_1[0x1a] = *(undefined8 *)(param_2 + 0xd0);
  param_1[0x1b] = uVar3;
  param_1[0x1c] = *(undefined8 *)(param_2 + 0xe0);
  auVar1 = *(undefined1 (*) [16])(param_2 + 0x20);
  FUN_18134bfe0(param_1,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_4_,auVar1._12_4_);
  return param_1;
}



############ FUN_ 1813318c0 size=697 ############

void FUN_1813318c0(longlong param_1)

{
  undefined1 auVar1 [16];
  longlong lVar2;
  int iVar3;
  int iVar4;
  undefined1 (*pauVar5) [16];
  int iVar6;
  ulonglong uVar7;
  longlong *plVar8;
  int iVar9;
  int iVar10;
  ulonglong uVar11;
  int local_98;
  int iStack_94;
  int iStack_90;
  int iStack_8c;
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  undefined1 local_48 [32];
  
  if (*(char *)(param_1 + 0xe8) == '\0') {
    *(char *)(param_1 + 0xe8) = '\x01';
    local_98 = 0;
    iStack_94 = 0;
    iStack_90 = 0;
    iStack_8c = 0;
    plVar8 = *(longlong **)(param_1 + 0x40);
    uVar7 = 0;
    uVar11 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0x4c)) + (7 - (longlong)plVar8)) >>
             3;
    if (plVar8 + *(int *)(param_1 + 0x4c) < plVar8) {
      uVar11 = uVar7;
    }
    if (uVar11 != 0) {
      do {
        lVar2 = *plVar8;
        if (*(longlong *)(lVar2 + 0x38) == 0) {
          local_68._0_8_ = *(undefined8 *)(lVar2 + 0x20);
          local_68._8_8_ = *(undefined8 *)(lVar2 + 0x28);
          pauVar5 = &local_68;
        }
        else {
          pauVar5 = (undefined1 (*) [16])FUN_1804b1290(lVar2 + 0x20,local_48);
        }
        local_58 = *pauVar5;
        if ((0 < local_58._8_4_) && (0 < local_58._12_4_)) {
          if ((iStack_90 < 1) || (iStack_8c < 1)) {
            local_98 = *(int *)*pauVar5;
            iStack_94 = *(int *)(*pauVar5 + 4);
            iStack_90 = *(int *)(*pauVar5 + 8);
            iStack_8c = *(int *)(*pauVar5 + 0xc);
          }
          else {
            iVar3 = local_58._0_4_;
            iVar6 = local_98;
            if (iVar3 < local_98) {
              iVar6 = iVar3;
            }
            iVar4 = local_58._4_4_;
            iVar10 = iStack_94;
            if (iVar4 < iStack_94) {
              iVar10 = iVar4;
            }
            iVar3 = iVar3 + local_58._8_4_;
            iVar9 = local_98 + iStack_90;
            if (local_98 + iStack_90 < iVar3) {
              iVar9 = iVar3;
            }
            iStack_90 = iVar9 - iVar6;
            iVar4 = local_58._12_4_ + iVar4;
            iVar3 = iStack_94 + iStack_8c;
            if (iStack_94 + iStack_8c < iVar4) {
              iVar3 = iVar4;
            }
            iStack_8c = iVar3 - iVar10;
            local_98 = iVar6;
            iStack_94 = iVar10;
          }
        }
        plVar8 = plVar8 + 1;
        uVar7 = uVar7 + 1;
      } while (uVar7 != uVar11);
    }
    uVar11 = 0;
    iVar3 = local_98 + (int)*(undefined8 *)(param_1 + 0x20);
    iVar6 = iStack_94 + (int)((ulonglong)*(undefined8 *)(param_1 + 0x20) >> 0x20);
    if ((((iVar3 != *(int *)(param_1 + 0x20)) || (iVar6 != *(int *)(param_1 + 0x24))) ||
        (iStack_90 != *(int *)(param_1 + 0x28))) || (iStack_8c != *(int *)(param_1 + 0x2c))) {
      if ((local_98 != 0) || (iStack_94 != 0)) {
        *(int *)(param_1 + 0xb0) = *(int *)(param_1 + 0xb0) - local_98;
        *(int *)(param_1 + 0xb4) = *(int *)(param_1 + 0xb4) - iStack_94;
        plVar8 = *(longlong **)(param_1 + 0x40);
        uVar7 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0x4c)) + (7 - (longlong)plVar8))
                >> 3;
        if (plVar8 + *(int *)(param_1 + 0x4c) < plVar8) {
          uVar7 = uVar11;
        }
        if (uVar7 != 0) {
          do {
            auVar1 = *(undefined1 (*) [16])(*plVar8 + 0x20);
            FUN_18134bfe0(*plVar8,auVar1._0_4_ - local_98,auVar1._4_4_ - iStack_94,auVar1._8_4_,
                          auVar1._12_4_);
            plVar8 = plVar8 + 1;
            uVar11 = uVar11 + 1;
          } while (uVar11 != uVar7);
        }
      }
      FUN_18134bfe0(param_1,iVar3,iVar6,iStack_90,iStack_8c);
    }
    *(undefined1 *)(param_1 + 0xe8) = 0;
  }
  return;
}



############ FUN_ 1813337e0 size=71 ############

void FUN_1813337e0(longlong param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  
  uVar1 = *(undefined4 *)(param_1 + 0x2c);
  lVar3 = FUN_18134adf0();
  uVar2 = (**(code **)(*(longlong *)(lVar3 + 8) + 0x18))(lVar3 + 8,param_1,uVar1);
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),uVar2,uVar1)
  ;
  return;
}



############ FUN_ 18133b750 size=213 ############

void FUN_18133b750(longlong param_1)

{
  char *pcVar1;
  undefined1 auVar2 [16];
  longlong lVar3;
  longlong lVar4;
  
  pcVar1 = (char *)(param_1 + 0xb8);
  if (*pcVar1 == '\0') {
    *pcVar1 = '\x01';
    lVar3 = *(longlong *)(param_1 + 0xa0);
    if (lVar3 != 0) {
      *(undefined8 *)(param_1 + 0xa0) = 0;
      lVar4 = __RTDynamicCast(lVar3,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::TopLevelWindow::RTTI_Type_Descriptor,0);
      if (lVar4 != 0) {
        FUN_1812cc1e0(lVar4,1);
      }
      auVar2 = *(undefined1 (*) [16])(param_1 + 0xa8);
      FUN_18134bfe0(lVar3,auVar2._0_8_,auVar2._0_8_ >> 0x20,auVar2._8_8_,auVar2._12_4_);
      *(undefined8 *)(param_1 + 0xa0) = 0;
    }
    *pcVar1 = '\0';
  }
  return;
}



############ FUN_ 1813444e0 size=120 ############

void FUN_1813444e0(undefined8 param_1,int *param_2)

{
  int *piVar1;
  undefined1 local_18 [16];
  
  piVar1 = (int *)FUN_1804e4fb0(local_18,param_1);
  FUN_18134bfe0(param_1,*piVar1 + param_2[1],piVar1[1] + *param_2,
                (piVar1[2] - param_2[3]) - param_2[1],(piVar1[3] - param_2[2]) - *param_2);
  return;
}



############ FUN_ 1813447d0 size=46 ############

void FUN_1813447d0(longlong param_1,int param_2,undefined4 param_3)

{
  FUN_18134bfe0(param_1,param_2 - *(int *)(param_1 + 0x28),param_3,*(int *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 181344810 size=32 ############

void FUN_181344810(longlong param_1,ulonglong param_2)

{
  FUN_18134bfe0(param_1,param_2,param_2 >> 0x20,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1813462d0 size=70 ############

void FUN_1813462d0(longlong param_1,undefined4 param_2)

{
  undefined4 uVar1;
  longlong lVar2;
  
  lVar2 = FUN_18134adf0();
  uVar1 = (**(code **)(*(longlong *)(lVar2 + 8) + 0x18))(lVar2 + 8,param_1,param_2);
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),uVar1,
                param_2);
  return;
}



############ FUN_ 18134c1a0 size=29 ############

void FUN_18134c1a0(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),param_2,
                param_3);
  return;
}



############ FUN_ 18134c1d0 size=43 ############

void FUN_18134c1d0(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_18134bfe0(param_1,param_2,param_3,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1813bd020 size=43 ############

void FUN_1813bd020(longlong param_1)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 0xb0);
  FUN_18134bfe0(lVar1,*(undefined4 *)(lVar1 + 0x20),*(undefined4 *)(lVar1 + 0x24),
                *(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1813be720 size=190 ############

void FUN_1813be720(longlong param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  
  iVar4 = 0;
  if (0 < *(int *)(param_1 + 0xcc)) {
    lVar3 = 0;
    do {
      iVar1 = *(int *)(param_1 + 0xd0);
      FUN_18134bfe0(*(undefined8 *)(*(longlong *)(param_1 + 0xc0) + lVar3),iVar1 * iVar4,0,iVar1,
                    iVar1);
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 8;
    } while (iVar4 < *(int *)(param_1 + 0xcc));
  }
  if (*(longlong *)(param_1 + 0xb8) != 0) {
    iVar1 = *(int *)(param_1 + 0xd0) + 5;
    iVar2 = *(int *)(param_1 + 0x2c) - iVar1;
    iVar4 = 0;
    if (0 < iVar2) {
      iVar4 = iVar2;
    }
    FUN_18134bfe0(*(longlong *)(param_1 + 0xb8),0,iVar1,*(undefined4 *)(param_1 + 0x28),iVar4);
  }
  return;
}



############ FUN_ 1813be950 size=199 ############

void FUN_1813be950(longlong param_1)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  longlong lVar5;
  int iVar6;
  
  iVar2 = *(int *)(param_1 + 0x2c);
  iVar6 = iVar2;
  if ((*(byte *)(param_1 + 0x290) & 2) != 0) {
    iVar6 = iVar2 + -0x1c;
    lVar1 = param_1 + 0x1e8;
    iVar3 = *(int *)(param_1 + 0x28);
    lVar5 = FUN_18134adf0(lVar1);
    uVar4 = (**(code **)(*(longlong *)(lVar5 + 8) + 0x18))(lVar5 + 8,lVar1,0x14);
    FUN_18134bfe0(lVar1,*(undefined4 *)(param_1 + 0x208),*(undefined4 *)(param_1 + 0x20c),uVar4,0x14
                 );
    FUN_18134bfe0(lVar1,(iVar3 - *(int *)(param_1 + 0x210)) + -8,iVar2 + -0x16,
                  *(int *)(param_1 + 0x210),*(undefined4 *)(param_1 + 0x214));
  }
  FUN_18134bfe0(param_1 + 0xb8,0,0,*(undefined4 *)(param_1 + 0x28),iVar6);
  return;
}



############ FUN_ 1813c6040 size=354 ############

void FUN_1813c6040(longlong *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined8 uVar4;
  
  iVar1 = 5;
  if (*(char *)((longlong)param_1 + 0xfa) != '\0') {
    iVar1 = 0x23;
  }
  iVar3 = ((int)param_1[5] - iVar1) - (int)param_1[0x1e];
  iVar2 = (*(int *)((longlong)param_1 + 0x2c) - (int)param_1[0x1e]) /
          *(int *)((longlong)param_1 + 0xe4);
  iVar1 = 1;
  if (1 < iVar2) {
    iVar1 = iVar2;
  }
  *(int *)(param_1 + 0x1d) = iVar1;
  iVar2 = (int)((float)iVar3 / *(float *)(param_1 + 0x1c));
  iVar1 = 1;
  if (1 < iVar2) {
    iVar1 = iVar2;
  }
  *(int *)((longlong)param_1 + 0xec) = iVar1;
  FUN_18055c7d0(param_1 + 0x86);
  if ((int)param_1[0x87] != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x86]);
  }
  *(undefined4 *)(param_1 + 0x87) = 0;
  FUN_1813c5840(param_1);
  (**(code **)(*param_1 + 0x1a8))(param_1);
  if (param_1[0x81] != 0) {
    iVar1 = 5;
    if (*(char *)((longlong)param_1 + 0xfa) != '\0') {
      iVar1 = 0x23;
    }
    FUN_18134bfe0(param_1[0x81],0,0,iVar1 + -2,*(undefined4 *)((longlong)param_1 + 0x2c));
  }
  iVar1 = (int)param_1[0x1e];
  FUN_18134bfe0(param_1 + 0x2b,(int)param_1[5] - iVar1,0,iVar1,
                *(int *)((longlong)param_1 + 0x2c) - iVar1);
  uVar4 = 5;
  if (*(char *)((longlong)param_1 + 0xfa) != '\0') {
    uVar4 = 0x23;
  }
  FUN_18134bfe0(param_1 + 0x55,uVar4,*(int *)((longlong)param_1 + 0x2c) - (int)param_1[0x1e],iVar3,
                (int)param_1[0x1e]);
  FUN_1813c4ff0(param_1);
  return;
}



############ FUN_ 1813e73f0 size=68 ############

void FUN_1813e73f0(longlong param_1)

{
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x148),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 181413d00 size=64 ############

void FUN_181413d00(longlong param_1,undefined1 (*param_2) [16])

{
  undefined1 auVar1 [16];
  
  auVar1 = *param_2;
  *(undefined1 (*) [16])(param_1 + 0xc4) = auVar1;
  FUN_18134bfe0(auVar1._8_8_,auVar1._0_8_,auVar1._0_8_ >> 0x20,auVar1._8_8_,auVar1._12_4_);
  return;
}



############ FUN_ 18148ae90 size=376 ############

void FUN_18148ae90(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  float fVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  undefined8 uVar9;
  int iVar10;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar9 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar9 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  FUN_1813f22a0(uVar9,local_res8,DAT_1826741c8,param_1);
  *(undefined4 *)(param_1 + 0x2b0) = local_resc;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar9 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar9 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  FUN_1813f22a0(uVar9,local_res8,DAT_182674234,param_1);
  *(undefined4 *)(param_1 + 0x2b4) = local_resc;
  lVar8 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar3 = *(float *)(lVar8 + 0x88);
  lVar8 = (**(code **)(*plVar1 + 8))(plVar1);
  iVar4 = *(int *)(param_1 + 0x28);
  iVar6 = (int)fVar3;
  iVar10 = (int)(*(float *)(lVar8 + 0x88) * DAT_1824c442c);
  if (iVar4 < iVar10) {
    iVar10 = iVar4;
  }
  iVar7 = iVar10 + iVar6 * -2;
  iVar2 = *(int *)(param_1 + 0x2c) + iVar6 * -2;
  iVar5 = 0;
  if (0 < iVar7) {
    iVar5 = iVar7;
  }
  iVar7 = 0;
  if (0 < iVar2) {
    iVar7 = iVar2;
  }
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x100),(iVar4 - iVar10) + iVar6,iVar6,iVar5,iVar7);
  return;
}



############ FUN_ 1815eeec0 size=865 ############

void FUN_1815eeec0(longlong *param_1)

{
  longlong *plVar1;
  double dVar2;
  undefined8 uVar3;
  longlong lVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  undefined8 local_res8;
  double local_res10;
  double local_res18;
  double local_res20;
  float local_78;
  float local_74;
  float local_70;
  float local_6c;
  undefined8 local_68;
  undefined4 local_60;
  undefined4 uStack_5c;
  
  if (param_1[0x17] != 0) {
    plVar1 = param_1 + 0x16;
    if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (param_1[0x17] == 0) {
        FUN_180569ff0(param_1);
      }
      lVar4 = param_1[0x17];
    }
    else {
      lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    }
    FUN_1813f22a0(lVar4,&local_res8,DAT_182674244,param_1);
    FUN_1813ea700(param_1 + 0x1b,local_res8._4_4_);
    if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (param_1[0x17] == 0) {
        FUN_180569ff0(param_1);
      }
      lVar4 = param_1[0x17];
    }
    else {
      lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    }
    uVar3 = FUN_1813f22a0(lVar4,&local_res8,DAT_1826741d4,param_1);
    fVar5 = (float)FUN_1813ec390(uVar3);
    lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    *(float *)((longlong)param_1 + 0x1c4) = fVar5 * *(float *)(lVar4 + 0x88);
    if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (param_1[0x17] == 0) {
        FUN_180569ff0(param_1);
      }
      lVar4 = param_1[0x17];
    }
    else {
      lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    }
    FUN_1813f22a0(lVar4,&local_res8,DAT_1826741e4,param_1);
    *(undefined4 *)(param_1 + 0x19) = local_res8._4_4_;
    local_68 = 0;
    local_60 = *(undefined4 *)(param_1[0x1a] + 0x28);
    uStack_5c = *(undefined4 *)(param_1[0x1a] + 0x2c);
    FUN_18134bfe0(param_1,0,0,local_60,uStack_5c);
    FUN_181344f60(param_1,1);
    (**(code **)(*param_1 + 0x178))(param_1,&local_78);
    fVar5 = *(float *)(param_1 + 0xdf);
    lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    dVar2 = DAT_1824c4520;
    fVar5 = fVar5 * *(float *)(lVar4 + 0x88);
    fVar6 = fVar5 * DAT_1824c41e0 + local_70;
    fVar7 = fVar5 * DAT_1824c41e0 + local_6c;
    local_res8 = (double)(local_78 - fVar5) + DAT_1824c4520;
    if (fVar6 <= 0.0) {
      fVar6 = 0.0;
    }
    if (fVar7 <= 0.0) {
      fVar7 = 0.0;
    }
    local_res10 = (double)(local_74 - fVar5) + DAT_1824c4520;
    local_res18 = (double)fVar6 + DAT_1824c4520;
    local_68 = CONCAT44(local_res10._0_4_,SUB84(local_res8,0));
    local_res20 = (double)fVar7 + DAT_1824c4520;
    local_60 = SUB84(local_res18,0);
    uStack_5c = local_res20._0_4_;
    FUN_18134bfe0(param_1 + 0x1b,local_res8,(ulonglong)local_res10 & 0xffffffff,
                  (ulonglong)local_res18 & 0xffffffff,local_res20._0_4_);
    local_res10 = (double)local_74 + dVar2;
    local_70 = local_70 - (float)-(int)param_1[0xda];
    if (local_70 <= 0.0) {
      local_70 = 0.0;
    }
    local_res8 = (double)local_78 + dVar2;
    local_res20 = (double)local_6c + dVar2;
    local_68 = CONCAT44(SUB84(local_res10,0),SUB84(local_res8,0));
    local_res18 = (double)local_70 + dVar2;
    uStack_5c = local_res20._0_4_;
    local_60 = SUB84(local_res18,0);
    FUN_18134bfe0(param_1 + 0xa7,local_res8,(ulonglong)local_res10 & 0xffffffff,
                  (ulonglong)local_res18 & 0xffffffff,local_res20._0_4_);
  }
  return;
}



############ FUN_ 1814b41f0 size=68 ############

void FUN_1814b41f0(longlong param_1)

{
  FUN_18134bfe0(param_1 + 0xf8,0,0,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1814b4380 size=68 ############

void FUN_1814b4380(longlong param_1)

{
  FUN_18134bfe0(param_1 + 0xf8,0,0,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1814c20d0 size=241 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c20d0(longlong *param_1)

{
  longlong lVar1;
  float *pfVar2;
  double dVar3;
  double dVar4;
  int local_res18;
  int local_res20;
  undefined1 local_18 [16];
  
  FUN_1815eeec0();
  lVar1 = (**(code **)(param_1[0x16] + 8))();
  *(float *)((longlong)param_1 + 0x974) = *(float *)(lVar1 + 0x88) * _DAT_1824c44e8;
  pfVar2 = (float *)(**(code **)(*param_1 + 0x178))(param_1,local_18);
  local_res20 = SUB84((double)(pfVar2[1] + pfVar2[3]) + DAT_1824c4520,0);
  dVar3 = (double)pfVar2[1] + DAT_1824c4520;
  local_res18 = SUB84((double)(*pfVar2 + pfVar2[2]) + DAT_1824c4520,0);
  dVar4 = (double)*pfVar2 + DAT_1824c4520;
  FUN_18134bfe0(param_1 + 0x10f,dVar4,(ulonglong)dVar3 & 0xffffffff,local_res18 - SUB84(dVar4,0),
                local_res20 - SUB84(dVar3,0));
  FUN_1814c1e30(param_1);
  return;
}



############ FUN_ 1814c2850 size=435 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c2850(longlong *param_1)

{
  longlong *plVar1;
  float fVar2;
  code *pcVar3;
  longlong lVar4;
  float *pfVar5;
  double dVar6;
  double dVar7;
  int local_res18;
  int local_res20;
  float local_48;
  float local_44;
  float local_40;
  float local_3c;
  int local_38;
  int iStack_34;
  int local_30;
  int iStack_2c;
  
  FUN_1815eeec0();
  plVar1 = param_1 + 0x16;
  lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
  pcVar3 = *(code **)(*param_1 + 0x178);
  *(float *)((longlong)param_1 + 0x97c) = *(float *)(lVar4 + 0x88) * _DAT_1824c4554;
  if (pcVar3 == FUN_1814c21d0) {
    lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    fVar2 = *(float *)(lVar4 + 0x88);
    lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    local_3c = fVar2 * DAT_1824c44f8;
    pfVar5 = &local_48;
    local_40 = *(float *)(lVar4 + 0x88) * _DAT_1824c4554;
    local_48 = ((float)(int)param_1[5] - local_40) * DAT_1824c3d8c + 0.0;
    local_44 = ((float)*(int *)((longlong)param_1 + 0x2c) - local_3c) * DAT_1824c3d8c + 0.0;
  }
  else {
    pfVar5 = (float *)(*pcVar3)(param_1,&local_48);
  }
  local_res20 = SUB84((double)(pfVar5[1] + pfVar5[3]) + DAT_1824c4520,0);
  dVar6 = (double)pfVar5[1] + DAT_1824c4520;
  local_res18 = SUB84((double)(*pfVar5 + pfVar5[2]) + DAT_1824c4520,0);
  dVar7 = (double)*pfVar5 + DAT_1824c4520;
  iStack_34 = SUB84(dVar6,0);
  iStack_2c = local_res20 - iStack_34;
  local_38 = SUB84(dVar7,0);
  local_30 = local_res18 - local_38;
  FUN_18134bfe0(param_1 + 0x110,dVar7,(ulonglong)dVar6 & 0xffffffff,local_30,iStack_2c);
  FUN_1814c2340(param_1);
  return;
}



############ FUN_ 1814c4480 size=1374 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c4480(longlong *param_1)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  double dVar7;
  longlong lVar8;
  longlong lVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  undefined8 uVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  double dVar16;
  double dVar17;
  double dVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  uint local_res8 [2];
  uint *local_res10;
  undefined8 *local_res18;
  double local_res20;
  undefined8 in_stack_ffffffffffffff38;
  undefined4 uVar22;
  undefined4 local_b0;
  float local_a0;
  float local_9c;
  float local_98;
  float local_94;
  undefined4 local_90;
  undefined4 uStack_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  
  FUN_1815eeec0();
  if (*(code **)(*param_1 + 0x178) == FUN_1814c4280) {
    iVar5 = *(int *)((longlong)param_1 + 0x894);
    plVar1 = param_1 + 0x16;
    lVar9 = param_1[0x110];
    fVar20 = *(float *)((longlong)param_1 + 0x89c);
    lVar8 = (**(code **)(*plVar1 + 8))(plVar1);
    fVar21 = *(float *)(param_1 + 0x113);
    fVar19 = *(float *)(lVar8 + 0x88);
    lVar8 = (**(code **)(*plVar1 + 8))(plVar1);
    fVar2 = *(float *)(param_1 + 0x114);
    fVar3 = *(float *)(lVar8 + 0x88);
    lVar8 = (**(code **)(*plVar1 + 8))(plVar1);
    iVar6 = *(int *)((longlong)param_1 + 0x2c);
    fVar21 = fVar3 * fVar21 * (float)iVar5 + fVar19 * fVar20 * (float)(int)lVar9 +
             (float)(iVar5 + ((int)lVar9 + -1) * 2) * fVar2 * *(float *)(lVar8 + 0x88);
    lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
    fVar20 = *(float *)(lVar9 + 0x88);
    lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
    local_98 = *(float *)(lVar9 + 0x88) * _DAT_1824c4554;
    local_a0 = ((float)(int)param_1[5] - local_98) * DAT_1824c3d8c + 0.0;
    local_9c = ((float)iVar6 - fVar20 * _DAT_1824c44c4) - fVar21;
    local_94 = fVar21;
  }
  else {
    (**(code **)(*param_1 + 0x178))(param_1,&local_a0);
  }
  fVar20 = *(float *)(param_1 + 0x113);
  plVar1 = param_1 + 0x16;
  lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
  dVar7 = DAT_1824c4520;
  local_res8[0] = 0;
  fVar20 = fVar20 * *(float *)(lVar9 + 0x88);
  if (0 < *(int *)((longlong)param_1 + 0x894)) {
    do {
      uVar22 = (undefined4)((ulonglong)in_stack_ffffffffffffff38 >> 0x20);
      puVar15 = (undefined8 *)param_1[0x10f];
      puVar14 = (undefined8 *)puVar15[1];
      cVar4 = *(char *)((longlong)puVar14 + 0x19);
      puVar11 = puVar15;
      puVar10 = puVar14;
      while (cVar4 == '\0') {
        if (*(int *)(puVar10 + 4) < (int)local_res8[0]) {
          puVar12 = (undefined8 *)puVar10[2];
          puVar10 = puVar11;
        }
        else {
          if ((*(char *)((longlong)puVar15 + 0x19) != '\0') &&
             ((int)local_res8[0] < *(int *)(puVar10 + 4))) {
            puVar15 = puVar10;
          }
          puVar12 = (undefined8 *)*puVar10;
        }
        puVar11 = puVar10;
        puVar10 = puVar12;
        cVar4 = *(char *)((longlong)puVar12 + 0x19);
      }
      if (*(char *)((longlong)puVar15 + 0x19) == '\0') {
        puVar14 = (undefined8 *)*puVar15;
      }
      cVar4 = *(char *)((longlong)puVar14 + 0x19);
      while (cVar4 == '\0') {
        if ((int)local_res8[0] < *(int *)(puVar14 + 4)) {
          puVar10 = (undefined8 *)*puVar14;
          puVar15 = puVar14;
        }
        else {
          puVar10 = (undefined8 *)puVar14[2];
        }
        puVar14 = puVar10;
        cVar4 = *(char *)((longlong)puVar10 + 0x19);
      }
      lVar9 = 0;
      if (puVar11 != puVar15) {
        do {
          puVar14 = (undefined8 *)puVar11[2];
          lVar9 = lVar9 + 1;
          if (*(char *)((longlong)puVar14 + 0x19) == '\0') {
            cVar4 = *(char *)((longlong)*puVar14 + 0x19);
            puVar11 = puVar14;
            puVar14 = (undefined8 *)*puVar14;
            while (cVar4 == '\0') {
              cVar4 = *(char *)((longlong)*puVar14 + 0x19);
              puVar11 = puVar14;
              puVar14 = (undefined8 *)*puVar14;
            }
          }
          else {
            cVar4 = *(char *)((longlong)puVar11[1] + 0x19);
            puVar10 = (undefined8 *)puVar11[1];
            puVar14 = puVar11;
            while ((puVar11 = puVar10, cVar4 == '\0' && (puVar14 == (undefined8 *)puVar11[2]))) {
              cVar4 = *(char *)((longlong)puVar11[1] + 0x19);
              puVar10 = (undefined8 *)puVar11[1];
              puVar14 = puVar11;
            }
          }
        } while (puVar11 != puVar15);
        if (lVar9 == 1) {
          if (0 < (int)local_res8[0]) {
            fVar21 = *(float *)(param_1 + 0x114);
            lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
            fVar21 = fVar21 * *(float *)(lVar9 + 0x88);
            fVar19 = local_94;
            if (fVar21 <= local_94) {
              fVar19 = fVar21;
            }
            local_9c = local_9c + fVar19;
            local_94 = local_94 - fVar19;
          }
          fVar21 = *(float *)((longlong)param_1 + 0x89c);
          lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
          fVar21 = fVar21 * *(float *)(lVar9 + 0x88);
          fVar19 = local_94;
          if (fVar21 <= local_94) {
            fVar19 = fVar21;
          }
          local_94 = local_94 - fVar19;
          fVar21 = local_9c + fVar19;
          puVar15 = (undefined8 *)((undefined8 *)param_1[0x10f])[1];
          dVar16 = (double)local_a0;
          dVar18 = (double)local_9c;
          dVar17 = (double)local_98;
          local_res20 = (double)fVar19 + dVar7;
          cVar4 = *(char *)((longlong)puVar15 + 0x19);
          puVar14 = (undefined8 *)param_1[0x10f];
          while (cVar4 == '\0') {
            if (*(int *)(puVar15 + 4) < (int)local_res8[0]) {
              puVar11 = (undefined8 *)puVar15[2];
              puVar15 = puVar14;
            }
            else {
              puVar11 = (undefined8 *)*puVar15;
            }
            puVar14 = puVar15;
            puVar15 = puVar11;
            cVar4 = *(char *)((longlong)puVar11 + 0x19);
          }
          local_9c = fVar21;
          if ((puVar14 == (undefined8 *)param_1[0x10f]) ||
             ((int)local_res8[0] < *(int *)(puVar14 + 4))) {
            local_res10 = local_res8;
            lVar9 = FUN_180481d40(param_1 + 0x10f,local_res20,&local_res10);
            FUN_18057dd90(param_1 + 0x10f,&local_res18,puVar14,lVar9 + 0x20,lVar9);
            uVar22 = (undefined4)((ulonglong)lVar9 >> 0x20);
            puVar14 = local_res18;
          }
          uVar13 = CONCAT44(uVar22,local_res20._0_4_);
          FUN_18134bfe0(puVar14[5],(ulonglong)(dVar16 + dVar7) & 0xffffffff,
                        (ulonglong)(dVar18 + dVar7) & 0xffffffff,
                        (ulonglong)(dVar17 + dVar7) & 0xffffffff,uVar13);
          uVar22 = (undefined4)((ulonglong)uVar13 >> 0x20);
          fVar21 = *(float *)(param_1 + 0x114);
          lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
          fVar21 = fVar21 * *(float *)(lVar9 + 0x88);
          fVar19 = local_94;
          if (fVar21 <= local_94) {
            fVar19 = fVar21;
          }
          local_9c = local_9c + fVar19;
          local_94 = local_94 - fVar19;
        }
      }
      if (local_res8[0] < *(uint *)((longlong)param_1 + 0x894)) {
        uVar13 = *(undefined8 *)(param_1[0x111] + (longlong)(int)local_res8[0] * 8);
      }
      else {
        uVar13 = 0;
      }
      local_res10 = (uint *)((double)local_a0 + dVar7);
      local_res20 = (double)local_9c + dVar7;
      fVar21 = local_94;
      if (fVar20 <= local_94) {
        fVar21 = fVar20;
      }
      local_9c = local_9c + fVar21;
      local_94 = local_94 - fVar21;
      uStack_8c = local_res20._0_4_;
      local_90 = SUB84(local_res10,0);
      local_b0 = SUB84((double)fVar21 + dVar7,0);
      uStack_84 = local_b0;
      local_88 = SUB84((double)local_98 + dVar7,0);
      in_stack_ffffffffffffff38 = CONCAT44(uVar22,local_b0);
      FUN_18134bfe0(uVar13,local_res10,(ulonglong)local_res20 & 0xffffffff,
                    (ulonglong)((double)local_98 + dVar7) & 0xffffffff,in_stack_ffffffffffffff38);
      fVar21 = *(float *)(param_1 + 0x114);
      lVar9 = (**(code **)(*plVar1 + 8))(plVar1);
      fVar21 = fVar21 * *(float *)(lVar9 + 0x88);
      local_res8[0] = local_res8[0] + 1;
      fVar19 = local_94;
      if (fVar21 <= local_94) {
        fVar19 = fVar21;
      }
      local_9c = local_9c + fVar19;
      local_94 = local_94 - fVar19;
    } while ((int)local_res8[0] < *(int *)((longlong)param_1 + 0x894));
  }
  return;
}



############ FUN_ 1814c58f0 size=814 ############

void FUN_1814c58f0(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  ulonglong uVar7;
  int iVar8;
  int iVar9;
  undefined8 *puVar10;
  int iVar11;
  ulonglong uVar12;
  int iVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  *(undefined4 *)(param_1 + 0x518) = 0xff293843;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  *(undefined4 *)(param_1 + 0x51c) = 0xff20303b;
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x520),0,0,
                *(undefined4 *)(*(longlong *)(param_1 + 0x100) + 0x28),
                *(undefined4 *)(*(longlong *)(param_1 + 0x100) + 0x2c));
  iVar9 = (int)*(float *)(param_1 + 0x530);
  iVar8 = *(int *)(param_1 + 0x28);
  iVar2 = iVar9;
  if (*(int *)(param_1 + 0x2c) < iVar9) {
    iVar2 = *(int *)(param_1 + 0x2c);
  }
  if (iVar8 < iVar9) {
    iVar9 = iVar8;
  }
  FUN_18134bfe0(param_1 + 0x138,iVar8 - iVar9,0,iVar9,iVar2);
  iVar8 = *(int *)(param_1 + 0x2c);
  iVar2 = *(int *)(param_1 + 0x28);
  iVar9 = (int)*(float *)(param_1 + 0x530);
  if (iVar8 < (int)*(float *)(param_1 + 0x530)) {
    iVar9 = iVar8;
  }
  iVar8 = iVar8 - iVar9;
  *(undefined4 *)(param_1 + 0x534) = 0;
  *(undefined4 *)(param_1 + 0x538) = 0;
  *(int *)(param_1 + 0x53c) = iVar2;
  *(int *)(param_1 + 0x540) = iVar9;
  if ((*(byte *)(*(longlong *)(param_1 + 0x108) + 0xa8) & 2) == 0) {
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x110),0,0,iVar2,*(undefined4 *)(param_1 + 0x2c));
    return;
  }
  lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar15 = *(float *)(lVar6 + 0x88) * DAT_1824c43e8;
  iVar13 = (int)fVar15;
  iVar11 = iVar13;
  if (iVar8 < iVar13) {
    iVar11 = iVar8;
  }
  iVar9 = iVar9 + iVar11;
  iVar8 = iVar8 - iVar11;
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x108),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  puVar10 = *(undefined8 **)(param_1 + 0x118);
  uVar12 = 0;
  uVar7 = (ulonglong)((longlong)(puVar10 + *(int *)(param_1 + 0x124)) + (7 - (longlong)puVar10)) >>
          3;
  if (puVar10 + *(int *)(param_1 + 0x124) < puVar10) {
    uVar7 = uVar12;
  }
  if (uVar7 != 0) {
    fVar16 = fVar15 * DAT_1824c3d3c;
    fVar15 = fVar15 * DAT_1824c41e0;
    iVar5 = iVar13 * -2 + iVar2;
    iVar11 = 0;
    if (0 < iVar5) {
      iVar11 = iVar5;
    }
    do {
      uVar3 = *puVar10;
      fVar14 = (float)FUN_1814d0fc0(uVar3,(float)iVar2 - fVar15);
      iVar5 = (int)fVar14;
      if (iVar8 < (int)fVar14) {
        iVar5 = iVar8;
      }
      iVar8 = iVar8 - iVar5;
      iVar4 = 0;
      if (0 < iVar5) {
        iVar4 = iVar5;
      }
      FUN_18134bfe0(uVar3,iVar13,iVar9,iVar11,iVar4);
      puVar10 = puVar10 + 1;
      iVar4 = (int)fVar16;
      if (iVar8 < (int)fVar16) {
        iVar4 = iVar8;
      }
      uVar12 = uVar12 + 1;
      iVar9 = iVar9 + iVar5 + iVar4;
      iVar8 = iVar8 - iVar4;
    } while (uVar12 != uVar7);
  }
  return;
}



############ FUN_ 1814c8060 size=3600 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c8060(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  code *pcVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  longlong lVar8;
  undefined8 uVar9;
  uint uVar10;
  longlong *plVar11;
  bool bVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  longlong local_res8;
  longlong local_res20;
  undefined4 local_238;
  undefined4 local_230;
  undefined4 local_228;
  undefined4 local_208;
  undefined4 local_1e8;
  undefined4 local_1c8;
  undefined4 local_1a8;
  undefined4 local_188;
  undefined4 local_168;
  undefined8 *local_158;
  double local_150;
  double local_148;
  double local_140;
  double local_138;
  double local_130;
  double local_128;
  double local_120;
  double local_118;
  double local_110;
  double local_108;
  double local_100;
  double local_f8;
  
  if (*(longlong *)(param_1 + 0xd8) != 0) {
    FUN_1814c8e80();
    plVar2 = (longlong *)(param_1 + 0xb0);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar24 = DAT_1824c4408;
    fVar17 = *(float *)(lVar8 + 0x88) * DAT_1824c4408;
    FUN_1814cdcf0(param_1 + 0x150,*(longlong *)(param_1 + 0xd8) + 0x20);
    fVar21 = DAT_1824c41e0;
    fVar18 = fVar17 * DAT_1824c41e0;
    *(float *)(param_1 + 0x24c) = (float)*(int *)(param_1 + 0x28) - fVar18;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    pcVar4 = *(code **)(*plVar2 + 8);
    *(float *)(param_1 + 0x278) = *(float *)(lVar8 + 0x88) * DAT_1824c4414;
    if (pcVar4 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
    }
    else {
      (*pcVar4)(plVar2);
    }
    *(undefined4 *)(param_1 + 0x248) = 0xffd1dbe3;
    (**(code **)(*(longlong *)(param_1 + 0x150) + 0x160))(param_1 + 0x150);
    local_res20 = *(longlong *)(*(longlong *)(param_1 + 0xd8) + 0x40);
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    plVar11 = (longlong *)(param_1 + 0x290);
    FUN_1815ef610(plVar11,&local_res20);
    pcVar4 = *(code **)(*plVar2 + 8);
    *(float *)(param_1 + 0x38c) = (float)*(int *)(param_1 + 0x28) - fVar18;
    if (pcVar4 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar9 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar9 = (*pcVar4)(plVar2);
    }
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    uVar9 = FUN_1813f2500(uVar9,&local_158,*(float *)(lVar8 + 0x88) * DAT_1824c43f8);
    FUN_181252990(param_1 + 0x380,uVar9);
    if (local_158 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_158 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_158)(local_158,1);
      }
    }
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
    }
    else {
      (**(code **)(*plVar2 + 8))(plVar2);
    }
    *(undefined4 *)(param_1 + 0x388) = 0xff92b3cd;
    (**(code **)(*plVar11 + 0x160))(plVar11);
    fVar18 = DAT_1824c4640;
    fVar20 = 0.0 - (float)((uint)fVar17 ^ DAT_1824c4f30);
    fVar21 = (float)((uint)fVar17 ^ DAT_1824c4f30) * fVar21 + (float)*(int *)(param_1 + 0x28);
    fVar23 = (float)*(int *)(param_1 + 0x2c) + DAT_1824c4640;
    if (fVar21 <= 0.0) {
      fVar21 = 0.0;
    }
    if (fVar23 <= 0.0) {
      fVar23 = 0.0;
    }
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar22 = *(float *)(lVar8 + 0x88);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar13 = *(float *)(lVar8 + 0x88) * DAT_1824c4434;
    fVar22 = fVar21 - fVar22 * fVar24;
    fVar24 = fVar23;
    if (fVar13 <= fVar23) {
      fVar24 = fVar13;
    }
    if (fVar22 <= 0.0) {
      fVar22 = 0.0;
    }
    fVar23 = fVar23 - fVar24;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar13 = *(float *)(lVar8 + 0x88);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar19 = *(float *)(lVar8 + 0x88);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar19 = fVar19 * _DAT_1824c46c0;
    fVar14 = *(float *)(lVar8 + 0x88) * DAT_1824c4490;
    fVar16 = fVar22;
    if (fVar14 <= fVar22) {
      fVar16 = fVar14;
    }
    fVar14 = fVar19 * DAT_1824c41e0 + fVar24;
    fVar22 = fVar22 - fVar16;
    if (fVar14 <= 0.0) {
      fVar14 = 0.0;
    }
    fVar15 = fVar16 + fVar18;
    if (fVar16 + fVar18 <= 0.0) {
      fVar15 = 0.0;
    }
    local_140 = (double)(fVar13 * DAT_1824c4388) + DAT_1824c4520;
    local_138 = (double)(0.0 - fVar19) + DAT_1824c4520;
    local_130 = (double)fVar15 + DAT_1824c4520;
    local_120 = (double)fVar14 + DAT_1824c4520;
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x118),(ulonglong)local_140 & 0xffffffff,
                  (ulonglong)local_138 & 0xffffffff,(ulonglong)local_130 & 0xffffffff,
                  local_120._0_4_);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar13 = *(float *)(lVar8 + 0x88);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    dVar7 = DAT_1824c4520;
    fVar13 = fVar13 * _DAT_1824c46c0;
    fVar14 = *(float *)(lVar8 + 0x88) * DAT_1824c4490;
    fVar19 = fVar22;
    if (fVar14 <= fVar22) {
      fVar19 = fVar14;
    }
    fVar14 = fVar13 * DAT_1824c41e0 + fVar24;
    fVar15 = fVar19 + fVar18;
    if (fVar19 + fVar18 <= 0.0) {
      fVar15 = 0.0;
    }
    if (fVar14 <= 0.0) {
      fVar14 = 0.0;
    }
    local_118 = (double)(((fVar20 + fVar16 + fVar22) - fVar19) - fVar18) + DAT_1824c4520;
    local_108 = (double)fVar14 + DAT_1824c4520;
    local_110 = (double)fVar15 + DAT_1824c4520;
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x110),(ulonglong)local_118 & 0xffffffff,
                  (ulonglong)((double)(0.0 - fVar13) + DAT_1824c4520) & 0xffffffff,
                  (ulonglong)local_110 & 0xffffffff,local_108._0_4_);
    local_100 = (double)(fVar20 + fVar16) + dVar7;
    fVar18 = fVar23;
    if (fVar17 <= fVar23) {
      fVar18 = fVar17;
    }
    local_238 = SUB84(dVar7,0);
    local_230 = SUB84((double)(fVar22 - fVar19) + dVar7,0);
    fVar22 = fVar24 + 0.0 + fVar18;
    fVar23 = fVar23 - fVar18;
    local_228 = SUB84((double)fVar24 + dVar7,0);
    dVar5 = (double)fVar21 + dVar7;
    *(ulonglong *)(param_1 + 0xd28) = CONCAT44(local_238,local_100._0_4_);
    *(ulonglong *)(param_1 + 0xd30) = CONCAT44(local_228,local_230);
    dVar6 = (double)fVar20 + dVar7;
    fVar24 = fVar23;
    if ((float)*(int *)(param_1 + 0x17c) <= fVar23) {
      fVar24 = (float)*(int *)(param_1 + 0x17c);
    }
    fVar23 = fVar23 - fVar24;
    local_208 = SUB84((double)fVar24 + dVar7,0);
    FUN_18134bfe0(param_1 + 0x150,dVar6,(ulonglong)((double)fVar22 + dVar7) & 0xffffffff,
                  (ulonglong)dVar5 & 0xffffffff,local_208);
    fVar16 = DAT_1824c4424;
    fVar19 = DAT_1824c4414;
    fVar13 = DAT_1824c3de4;
    uVar10 = 0;
    fVar18 = fVar23;
    if (fVar17 <= fVar23) {
      fVar18 = fVar17;
    }
    fVar24 = fVar22 + fVar24 + fVar18;
    fVar23 = fVar23 - fVar18;
    if (0 < *(int *)(param_1 + 0xd04)) {
      bVar12 = *(int *)(param_1 + 0xd04) != 0;
      fVar18 = fVar17 * DAT_1824c3d18;
      local_res8 = 0;
      do {
        if (bVar12) {
          plVar11 = *(longlong **)(local_res8 + *(longlong *)(param_1 + 0xcf8));
        }
        else {
          plVar11 = (longlong *)0x0;
        }
        lVar8 = (**(code **)(plVar11[0x16] + 8))(plVar11 + 0x16);
        *(float *)(plVar11 + 0x73) = *(float *)(lVar8 + 0x88) * fVar19;
        lVar8 = (**(code **)(plVar11[0x16] + 8))(plVar11 + 0x16);
        *(float *)((longlong)plVar11 + 0x36c) = fVar21 - *(float *)(lVar8 + 0x88) * DAT_1824c4478;
        (**(code **)(plVar11[0x4e] + 0x160))();
        fVar22 = fVar23;
        if (fVar18 <= fVar23) {
          fVar22 = fVar18;
        }
        fVar23 = fVar23 - fVar22;
        fVar15 = (float)*(int *)((longlong)plVar11 + 0x29c) + fVar17;
        fVar14 = fVar23;
        if (fVar15 <= fVar23) {
          fVar14 = fVar15;
        }
        fVar23 = fVar23 - fVar14;
        local_1e8 = SUB84((double)fVar14 + dVar7,0);
        FUN_18134bfe0(plVar11,(ulonglong)dVar6 & 0xffffffff,
                      (ulonglong)((double)(fVar24 + fVar22) + dVar7) & 0xffffffff,
                      (ulonglong)dVar5 & 0xffffffff,local_1e8);
        fVar15 = fVar23;
        if (fVar18 <= fVar23) {
          fVar15 = fVar18;
        }
        fVar24 = fVar24 + fVar22 + fVar14 + fVar15;
        fVar23 = fVar23 - fVar15;
        (**(code **)(*plVar11 + 0x58))
                  (plVar11,(int)uVar10 <= *(int *)(*(longlong *)(param_1 + 0xd8) + 0x88));
        (**(code **)(*plVar11 + 0x108))(plVar11);
        if (uVar10 == *(uint *)(*(longlong *)(param_1 + 0xd8) + 0x88)) {
          lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
          fVar14 = *(float *)(lVar8 + 0x88) * fVar16;
          fVar22 = fVar23;
          if (fVar14 <= fVar23) {
            fVar22 = fVar14;
          }
          fVar14 = (fVar20 + fVar21) - fVar21 * fVar13;
          if (fVar14 <= 0.0) {
            fVar14 = 0.0;
          }
          fVar23 = fVar23 - fVar22;
          local_1c8 = SUB84((double)fVar22 + dVar7,0);
          FUN_18134bfe0(*(undefined8 *)(param_1 + 0x100),
                        (ulonglong)((double)(fVar21 * fVar13) + dVar7) & 0xffffffff,
                        (ulonglong)((double)fVar24 + dVar7) & 0xffffffff,
                        (ulonglong)((double)fVar14 + dVar7) & 0xffffffff,local_1c8);
          (**(code **)(**(longlong **)(param_1 + 0x100) + 0x58))(*(longlong **)(param_1 + 0x100),1);
          fVar14 = fVar23;
          if (fVar17 * DAT_1824c3d8c <= fVar23) {
            fVar14 = fVar17 * DAT_1824c3d8c;
          }
          fVar24 = fVar24 + fVar22 + fVar14;
          fVar23 = fVar23 - fVar14;
        }
        uVar10 = uVar10 + 1;
        local_res8 = local_res8 + 8;
        bVar12 = uVar10 < *(uint *)(param_1 + 0xd04);
      } while ((int)uVar10 < (int)*(uint *)(param_1 + 0xd04));
    }
    lVar8 = *(longlong *)(param_1 + 0xd8);
    if ((ulonglong)((*(longlong *)(lVar8 + 0x78) - *(longlong *)(lVar8 + 0x70)) / 0x60) <=
        (ulonglong)(longlong)*(int *)(lVar8 + 0x88)) {
      (**(code **)(**(longlong **)(param_1 + 0x100) + 0x58))(*(longlong **)(param_1 + 0x100),0);
    }
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar22 = *(float *)(lVar8 + 0x88) * DAT_1824c44bc;
    fVar18 = fVar23;
    if (fVar22 <= fVar23) {
      fVar18 = fVar22;
    }
    fVar22 = fVar23 - fVar18;
    local_1a8 = SUB84((double)fVar18 + dVar7,0);
    local_128 = dVar6;
    FUN_18134bfe0(param_1 + 0x290,dVar6,
                  (ulonglong)((double)((fVar24 + fVar23) - fVar18) + dVar7) & 0xffffffff,
                  (ulonglong)dVar5 & 0xffffffff,local_1a8);
    fVar18 = fVar22;
    if (fVar17 <= fVar22) {
      fVar18 = fVar17;
    }
    fVar22 = fVar22 - fVar18;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar23 = *(float *)(lVar8 + 0x88) * DAT_1824c442c;
    fVar18 = fVar22;
    if (fVar23 <= fVar22) {
      fVar18 = fVar23;
    }
    fVar19 = (fVar24 + fVar22) - fVar18;
    fVar22 = fVar22 - fVar18;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar13 = *(float *)(lVar8 + 0x88) * DAT_1824c4478;
    fVar23 = fVar21;
    if (fVar13 <= fVar21) {
      fVar23 = fVar13;
    }
    fVar21 = fVar21 - fVar23;
    local_188 = SUB84((double)fVar18 + dVar7,0);
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0x108),(ulonglong)dVar6 & 0xffffffff,
                  (ulonglong)((double)fVar19 + dVar7) & 0xffffffff,
                  (ulonglong)((double)fVar23 + dVar7) & 0xffffffff,local_188);
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar16 = *(float *)(lVar8 + 0x88) * DAT_1824c43d8;
    fVar13 = fVar21;
    if (fVar16 <= fVar21) {
      fVar13 = fVar16;
    }
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar16 = (float)((uint)(*(float *)(lVar8 + 0x88) * DAT_1824c4334) ^ DAT_1824c4f30);
    fVar21 = fVar16 * DAT_1824c41e0 + (fVar21 - fVar13);
    if (fVar21 <= 0.0) {
      fVar21 = 0.0;
    }
    fVar18 = fVar16 * DAT_1824c41e0 + fVar18;
    if (fVar18 <= 0.0) {
      fVar18 = 0.0;
    }
    local_168 = SUB84((double)fVar18 + dVar7,0);
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0xcf0),
                  (double)((fVar20 + fVar23 + fVar13) - fVar16) + dVar7,
                  (ulonglong)((double)(fVar19 - fVar16) + dVar7) & 0xffffffff,
                  (ulonglong)((double)fVar21 + dVar7) & 0xffffffff,local_168);
    fVar21 = fVar22;
    if (fVar17 * DAT_1824c3d8c <= fVar22) {
      fVar21 = fVar17 * DAT_1824c3d8c;
    }
    fVar22 = fVar22 - fVar21;
    lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar17 = *(float *)(lVar8 + 0x88) * DAT_1824c442c;
    fVar21 = fVar22;
    if (fVar17 <= fVar22) {
      fVar21 = fVar17;
    }
    local_f8 = (double)((fVar24 + fVar22) - fVar21) + dVar7;
    local_148 = (double)fVar21 + dVar7;
    local_150 = dVar5;
    FUN_18134bfe0(*(undefined8 *)(param_1 + 0xf8),(ulonglong)dVar6 & 0xffffffff,
                  (ulonglong)local_f8 & 0xffffffff,(ulonglong)dVar5 & 0xffffffff,local_148._0_4_);
  }
  return;
}



############ FUN_ 1814cec60 size=562 ############

void FUN_1814cec60(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  undefined4 uVar8;
  float fVar9;
  undefined4 local_res20;
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  iVar2 = *(int *)(param_1 + 0x2c);
  fVar9 = (float)*(int *)(param_1 + 0x28);
  lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar4 = *(float *)(lVar3 + 0x88) * DAT_1824c43a8;
  fVar7 = fVar9;
  if (fVar4 <= fVar9) {
    fVar7 = fVar4;
  }
  fVar9 = fVar9 - fVar7;
  lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar5 = *(float *)(lVar3 + 0x88) * DAT_1824c43e8;
  fVar4 = fVar9;
  if (fVar5 <= fVar9) {
    fVar4 = fVar5;
  }
  fVar9 = fVar9 - fVar4;
  *(float *)(param_1 + 0x3b0) = fVar7 + 0.0;
  *(undefined4 *)(param_1 + 0x3b4) = 0;
  *(float *)(param_1 + 0x3b8) = fVar4;
  *(float *)(param_1 + 0x3bc) = (float)iVar2;
  lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar6 = *(float *)(lVar3 + 0x88) * DAT_1824c440c;
  fVar5 = fVar9;
  if (fVar6 <= fVar9) {
    fVar5 = fVar6;
  }
  fVar9 = fVar9 - fVar5;
  FUN_180576b40(param_1 + 0x3c0,param_1 + 0x3b0,0x24);
  local_res20 = SUB84((double)*(int *)(param_1 + 0x29c) + DAT_1824c4520,0);
  FUN_18134bfe0(param_1 + 0x270,
                (double)((fVar9 - fVar9) * DAT_1824c3d8c + fVar7 + 0.0 + fVar4 + fVar5) +
                DAT_1824c4520,
                (ulonglong)
                ((double)(((float)iVar2 - (float)*(int *)(param_1 + 0x29c)) * DAT_1824c3d8c + 0.0) +
                DAT_1824c4520) & 0xffffffff,(ulonglong)((double)fVar9 + DAT_1824c4520) & 0xffffffff,
                local_res20);
  uVar8 = DAT_1824c3ea4;
  if (*(char *)(*(longlong *)(param_1 + 200) + 0x58) != '\0') {
    uVar8 = DAT_1824c3db8;
  }
  FUN_181411d60(param_1 + 0xd0,"alpha",uVar8);
  return;
}



############ FUN_ 1814d03e0 size=422 ############

void FUN_1814d03e0(longlong param_1)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  longlong lVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  undefined4 local_res20;
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  fVar6 = *(float *)(param_1 + 0xf4);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar8 = *(float *)(param_1 + 0xf0);
  fVar6 = fVar6 * *(float *)(lVar5 + 0x88);
  fVar2 = *(float *)(param_1 + 0x3e0);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar7 = fVar6 * fVar2 * DAT_1824c41e0;
  fVar8 = fVar8 * *(float *)(lVar5 + 0x88);
  *(float *)(param_1 + 0x220) = fVar6;
  *(float *)(param_1 + 500) = fVar8 - fVar7;
  (**(code **)(*(longlong *)(param_1 + 0xf8) + 0x160))();
  iVar4 = *(int *)(param_1 + 0x124);
  fVar6 = *(float *)(param_1 + 0xe8);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar2 = *(float *)(param_1 + 0xec);
  fVar3 = *(float *)(lVar5 + 0x88);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  local_res20 = SUB84((double)((float)iVar4 + fVar7) + DAT_1824c4520,0);
  FUN_18134bfe0(param_1,(ulonglong)((double)(fVar6 * fVar3) + DAT_1824c4520) & 0xffffffff,
                (ulonglong)((double)(fVar2 * *(float *)(lVar5 + 0x88)) + DAT_1824c4520) & 0xffffffff
                ,(ulonglong)((double)fVar8 + DAT_1824c4520) & 0xffffffff,local_res20);
  FUN_181344f60(param_1,0);
  return;
}



############ FUN_ 1814d05c0 size=299 ############

void FUN_1814d05c0(longlong param_1)

{
  longlong lVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined4 local_res20;
  
  fVar2 = *(float *)(param_1 + 0xf4);
  lVar1 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  fVar3 = (float)((uint)(fVar2 * *(float *)(lVar1 + 0x88) * *(float *)(param_1 + 0x3e0)) ^
                 DAT_1824c4f30);
  fVar2 = fVar3 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x28);
  if (fVar2 <= 0.0) {
    fVar2 = 0.0;
  }
  fVar4 = fVar3 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x2c);
  if (fVar4 <= 0.0) {
    fVar4 = 0.0;
  }
  local_res20 = SUB84((double)fVar4 + DAT_1824c4520,0);
  FUN_18134bfe0(param_1 + 0xf8,(double)(0.0 - fVar3) + DAT_1824c4520,
                (ulonglong)((double)(0.0 - fVar3) + DAT_1824c4520) & 0xffffffff,
                (ulonglong)((double)fVar2 + DAT_1824c4520) & 0xffffffff,local_res20);
  return;
}



############ FUN_ 1814dba40 size=279 ############

void FUN_1814dba40(longlong param_1)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  undefined4 local_res8 [2];
  undefined1 *local_40;
  undefined4 local_38;
  undefined4 local_34;
  undefined8 local_30;
  void *local_28;
  undefined8 local_20;
  
  local_40 = &DAT_1821dbf98;
  local_38 = 0;
  local_34 = 1;
  local_30 = 1;
  iVar3 = 0;
  local_28 = (void *)0x0;
  local_20 = 0;
  local_res8[0] = *(undefined4 *)(param_1 + 0xf8);
  FUN_181232d30(&local_40,param_1 + 200);
  pbVar2 = *(byte **)(param_1 + 200);
LAB_1814dbab0:
  do {
    bVar1 = *pbVar2;
    pbVar2 = pbVar2 + 1;
    if ((char)bVar1 < '\0') {
      if ((*pbVar2 & 0xc0) == 0x80) {
        do {
          pbVar2 = pbVar2 + 1;
        } while ((*pbVar2 & 0xc0) == 0x80);
        iVar3 = iVar3 + 1;
        goto LAB_1814dbab0;
      }
    }
    else if (bVar1 == 0) {
      FUN_1812554b0(&local_28,iVar3,param_1 + 0xf0,local_res8);
      FUN_18124e420(param_1 + 0xd0,&local_40,*(undefined4 *)(param_1 + 0xfc),DAT_1824c4610);
      FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),
                    (int)*(float *)(param_1 + 0xe0),(int)*(float *)(param_1 + 0xe4));
      FUN_1804aed10(&local_28);
                    /* WARNING: Subroutine does not return */
      free(local_28);
    }
    iVar3 = iVar3 + 1;
  } while( true );
}



############ FUN_ 1814e2910 size=1297 ############

/* WARNING: Removing unreachable block (ram,0x0001814e2969) */
/* WARNING: Removing unreachable block (ram,0x0001814e29b8) */
/* WARNING: Removing unreachable block (ram,0x0001814e2a1e) */

ulonglong FUN_1814e2910(longlong param_1)

{
  int iVar1;
  undefined8 uVar2;
  float fVar3;
  float fVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint *puVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  ulonglong uVar11;
  uint uVar12;
  int iVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  int unaff_retaddr;
  undefined1 auStack_208 [32];
  int local_1e8;
  uint local_1b0;
  uint local_190;
  uint local_18c;
  uint local_188 [4];
  longlong local_178;
  undefined1 local_15c [196];
  ulonglong local_98;
  
  local_98 = DAT_182615970 ^ (ulonglong)auStack_208;
  uVar9 = (uint)&stack0x00000000;
  uVar12 = ((uVar9 & 0x1aff) + 1) * (uVar9 & 0x1aff) + 0x4015 & 0x80000001;
  uVar6 = uVar9 & 0x23f;
  iVar8 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  local_18c = (((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e | 0xefe7U) ^
              ((int)(-uVar12 | uVar12) >> 0x1f) * -0xe417;
  if (((ulonglong)&stack0x00000000 & 0x1d8) == 0) {
    uVar12 = ((uVar9 & 0x3ff) * (uVar9 & 0x3ff) * 0x10 + 4) % 0x13;
  }
  else {
    uVar12 = 0x8064b43;
  }
  iVar8 = *(int *)(param_1 + 0x2c);
  iVar1 = *(int *)(param_1 + 0x28);
  local_190 = ((int)(-uVar12 | uVar12) >> 0x1f) * -0x5629 ^ 0x5999;
  local_178 = param_1;
  fVar14 = (float)FUN_1814e1bd0(param_1);
  do {
    puVar7 = local_188;
    FUN_1814e1eb6();
    *puVar7 = 0x720c1ca2;
    fVar4 = DAT_1824c3ea4;
    fVar3 = DAT_1824c3d8c;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  iVar13 = 0;
  uVar12 = ~(~local_188[0] + 0x887da9f) ^ 0xb42e2e0;
  uVar12 = ~(uVar12 << 10 | uVar12 >> 0x16) + 0xc5804bd0;
  local_1b0 = ~(uVar12 * 0x100 | uVar12 >> 0x18);
  if (*(longlong *)(param_1 + 0x168) - *(longlong *)(param_1 + 0x160) >> 3 != 0) {
    uVar11 = 0;
    lVar10 = 0;
    do {
      uVar2 = *(undefined8 *)(lVar10 + *(longlong *)(param_1 + 0x160));
      fVar15 = (float)FUN_1815d34d0(uVar2,fVar14);
      if (*(int *)(param_1 + 0xf8) == 1) {
        puVar5 = (undefined4 *)FUN_180581780(param_1 + 0xe0,uVar11);
        fVar15 = (float)FUN_180487300(*(undefined8 *)(param_1 + 0xd8),*puVar5);
        local_1e8 = (int)fVar14;
        FUN_18134bfe0(uVar2,0,(int)((fVar4 - fVar15) * (float)iVar8 - fVar14),(int)(float)iVar1);
        puVar5 = (undefined4 *)FUN_18049ea60(local_15c,2);
        FUN_181349c00(uVar2,*puVar5);
      }
      else if (*(int *)(param_1 + 0xf8) == 0) {
        puVar5 = (undefined4 *)FUN_180581780(param_1 + 0xe0,uVar11);
        fVar16 = (float)FUN_180487300(*(undefined8 *)(param_1 + 0xd8),*puVar5);
        local_1e8 = (int)fVar14;
        FUN_18134bfe0(uVar2,(int)(fVar16 * (float)iVar1 - fVar15 * fVar3),0,(int)fVar15);
      }
      iVar13 = iVar13 + 1;
      lVar10 = lVar10 + 8;
      uVar11 = (ulonglong)iVar13;
    } while (uVar11 < (ulonglong)
                      (*(longlong *)(param_1 + 0x168) - *(longlong *)(param_1 + 0x160) >> 3));
  }
                    /* WARNING: Call to offcut address within same function */
  uVar11 = func_0x0001814e2d04();
  return uVar11 & 0xfffffffffffffff8;
}



############ FUN_ 1814fcc60 size=420 ############

void FUN_1814fcc60(longlong param_1)

{
  int iVar1;
  double dVar2;
  int iVar3;
  undefined8 uVar4;
  longlong lVar5;
  uint uVar6;
  float fVar7;
  double dVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined4 local_res10;
  
  dVar2 = DAT_1824c4520;
  iVar1 = *(int *)(param_1 + 0xec);
  uVar6 = 0;
  lVar5 = 0;
  fVar10 = 0.0;
  fVar9 = (float)*(int *)(param_1 + 0x28);
  fVar11 = (fVar9 - (float)(int)(iVar1 - 1U) * *(float *)(param_1 + 0xf0)) / (float)iVar1;
  if (0 < iVar1) {
    local_res10 = SUB84((double)((float)*(int *)(param_1 + 0x2c) + 0.0) + DAT_1824c4520,0);
    iVar3 = local_res10 - SUB84(DAT_1824c4520,0);
    do {
      fVar7 = fVar9;
      if (fVar11 <= fVar9) {
        fVar7 = fVar11;
      }
      dVar8 = (double)fVar10;
      fVar10 = fVar10 + fVar7;
      fVar9 = fVar9 - fVar7;
      local_res10 = SUB84((double)fVar10 + dVar2,0);
      if (uVar6 < *(uint *)(param_1 + 0xec)) {
        uVar4 = *(undefined8 *)(*(longlong *)(param_1 + 0xe0) + lVar5 * 8);
      }
      else {
        uVar4 = 0;
      }
      FUN_18134bfe0(uVar4,(ulonglong)(dVar8 + dVar2) & 0xffffffff,(ulonglong)dVar2 & 0xffffffff,
                    local_res10 - SUB84(dVar8 + dVar2,0),iVar3);
      if (uVar6 != iVar1 - 1U) {
        fVar7 = fVar9;
        if (*(float *)(param_1 + 0xf0) <= fVar9) {
          fVar7 = *(float *)(param_1 + 0xf0);
        }
        fVar10 = fVar10 + fVar7;
        fVar9 = fVar9 - fVar7;
      }
      uVar6 = uVar6 + 1;
      lVar5 = lVar5 + 1;
    } while (lVar5 < iVar1);
  }
  FUN_1814fc2f0(param_1);
  return;
}



############ FUN_ 1814fd200 size=272 ############

void FUN_1814fd200(longlong param_1)

{
  code *pcVar1;
  longlong lVar2;
  
  if (*(float *)(param_1 + 0x2b4) != 0.0) {
    lVar2 = (**(code **)(*(longlong *)(param_1 + 0x1c8) + 8))();
    *(float *)(*(longlong *)(param_1 + 0x2a0) + 0xec) = *(float *)(lVar2 + 0x88) * DAT_1824c41e0;
  }
  pcVar1 = *(code **)(*(longlong *)(param_1 + 0x1c8) + 8);
  if (pcVar1 == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
  }
  else {
    (*pcVar1)();
  }
  FUN_1813ea700(*(undefined8 *)(param_1 + 0x2a0),*(undefined4 *)(param_1 + 0x2b8));
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x2a0),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  FUN_18134bfe0(*(undefined8 *)(param_1 + 0x2a8),0,0,*(undefined4 *)(param_1 + 0x28),
                *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1815d8700 size=842 ############

void FUN_1815d8700(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  byte bVar4;
  int iVar5;
  longlong lVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  undefined8 uVar9;
  uint *_Memory;
  byte *pbVar10;
  int iVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  undefined8 *local_res8;
  float local_res10;
  float local_res14;
  longlong local_res18;
  double local_res20;
  undefined4 local_b8;
  undefined4 local_a8;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 local_80;
  undefined4 uStack_7c;
  
  plVar2 = (longlong *)(param_1 + 0x208);
  lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar15 = *(float *)(lVar6 + 0x88) * DAT_1824c4414;
  fVar12 = *(float *)(param_1 + 0x248);
  if ((undefined **)*plVar2 == InlineTooltip::vftable) {
    if (*(longlong *)(param_1 + 0x210) == 0) {
      FUN_1805849b0(param_1);
    }
    uVar9 = *(undefined8 *)(param_1 + 0x210);
  }
  else {
    uVar9 = (*(code *)((undefined **)*plVar2)[1])(plVar2);
  }
  FUN_1813f2500(uVar9,&local_res8,fVar15 * fVar12);
  lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar14 = *(float *)(lVar6 + 0x88) * DAT_1824c43a8;
  puVar7 = (undefined8 *)FUN_1812ea010(param_1,&local_res18);
  plVar8 = (longlong *)FUN_181252280(&local_res8);
  fVar12 = (float)(**(code **)(*plVar8 + 0x28))(plVar8,puVar7);
  if (*(float *)(local_res8 + 6) != 0.0) {
    pbVar10 = (byte *)*puVar7;
    iVar11 = 0;
    while( true ) {
      while( true ) {
        bVar4 = *pbVar10;
        pbVar10 = pbVar10 + 1;
        if (-1 < (char)bVar4) break;
        if ((*pbVar10 & 0xc0) != 0x80) goto LAB_1815d8828;
        do {
          pbVar10 = pbVar10 + 1;
        } while ((*pbVar10 & 0xc0) == 0x80);
        iVar11 = iVar11 + 1;
      }
      if (bVar4 == 0) break;
LAB_1815d8828:
      iVar11 = iVar11 + 1;
    }
    fVar12 = fVar12 + (float)iVar11 * *(float *)(local_res8 + 6);
  }
  fVar12 = ceilf(fVar12 * *(float *)(local_res8 + 5) * *(float *)((longlong)local_res8 + 0x2c));
  fVar14 = (float)(int)fVar12 + fVar14;
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134bfe0(param_1,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),(int)fVar14,
                (int)fVar15);
  FUN_18051dc40(&local_res10,*(undefined8 *)(param_1 + 0x4a8),param_2,0);
  iVar11 = *(int *)(param_2 + 0x28);
  fVar13 = fVar14 * DAT_1824c3d8c;
  fVar12 = *(float *)(param_1 + 0x650);
  iVar5 = *(int *)(param_2 + 0x2c);
  lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  local_94 = (float)iVar5 + local_res14 + *(float *)(lVar6 + 0x88) * DAT_1824c4334 +
             *(float *)(param_1 + 0x654);
  local_98 = (((float)(iVar11 / 2) + local_res10) - fVar13) + fVar12;
  local_90 = fVar14;
  local_8c = fVar15;
  lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  FUN_1815af520(param_1 + 0x4a0,param_2,*(undefined8 *)(param_1 + 0x4a8),&local_98,
                *(float *)(lVar6 + 0x88) * DAT_1824c43d8);
  local_res20 = (double)local_98 + DAT_1824c4520;
  local_88 = SUB84(local_res20,0);
  local_b8 = SUB84((double)local_94 + DAT_1824c4520,0);
  uStack_84 = local_b8;
  local_80 = SUB84((double)local_90 + DAT_1824c4520,0);
  local_a8 = SUB84((double)local_8c + DAT_1824c4520,0);
  uStack_7c = local_a8;
  FUN_18134bfe0(param_1,(ulonglong)local_res20 & 0xffffffff,
                (ulonglong)((double)local_94 + DAT_1824c4520) & 0xffffffff,
                (ulonglong)((double)local_90 + DAT_1824c4520) & 0xffffffff,local_a8);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar11 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar11 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1815e4290 size=184 ############

void FUN_1815e4290(longlong param_1)

{
  undefined8 uVar1;
  longlong *plVar2;
  int iVar3;
  int iVar4;
  undefined8 local_res8;
  
  if (*(longlong *)(param_1 + 200) != 0) {
    uVar1 = *(undefined8 *)(*(longlong *)(param_1 + 200) + 0x20);
    iVar4 = (int)uVar1 - (int)*(undefined8 *)(param_1 + 0xd8);
    iVar3 = (int)((ulonglong)uVar1 >> 0x20) -
            (int)((ulonglong)*(undefined8 *)(param_1 + 0xd8) >> 0x20);
    if (*(longlong *)(param_1 + 0x198) != 0) {
      plVar2 = *(longlong **)(param_1 + 0x198);
      if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*plVar2 + 0x10))(plVar2,&local_res8);
      iVar4 = iVar4 + (int)local_res8;
      iVar3 = iVar3 + (int)((ulonglong)local_res8 >> 0x20);
    }
    uVar1 = *(undefined8 *)(param_1 + 0x20);
    local_res8._4_4_ = (int)((ulonglong)uVar1 >> 0x20);
    iVar3 = local_res8._4_4_ + iVar3;
    local_res8 = uVar1;
    FUN_18134bfe0(param_1,iVar4 + (int)uVar1,iVar3,*(undefined4 *)(param_1 + 0x28),
                  *(undefined4 *)(param_1 + 0x2c));
    *(undefined8 *)(param_1 + 0xd8) = *(undefined8 *)(*(longlong *)(param_1 + 200) + 0x20);
  }
  return;
}



############ FUN_ 1812cf790 size=220 ############

void FUN_1812cf790(longlong param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined4 uVar5;
  longlong *plVar6;
  longlong lVar7;
  
  if (*(char *)(param_1 + 0xe0) == '\0') {
    lVar7 = 0;
    if (*(longlong *)(param_1 + 0xd0) != 0) {
      lVar7 = *(longlong *)(*(longlong *)(param_1 + 0xd0) + 0x10);
    }
    plVar4 = *(longlong **)(param_1 + 0x40);
    for (plVar6 = plVar4; plVar6 != plVar4 + *(int *)(param_1 + 0x4c); plVar6 = plVar6 + 1) {
      if (lVar7 == *plVar6) {
        uVar5 = (undefined4)((longlong)plVar6 - (longlong)plVar4 >> 3);
        goto LAB_1812cf810;
      }
    }
    uVar5 = 0xffffffff;
LAB_1812cf810:
    FUN_181343a90(param_1,uVar5,1);
    puVar3 = *(undefined8 **)(param_1 + 0xd0);
    *(undefined8 *)(param_1 + 0xd0) = 0;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
  }
  else if ((*(longlong *)(param_1 + 0xd0) != 0) &&
          (puVar3 = *(undefined8 **)(*(longlong *)(param_1 + 0xd0) + 0x10),
          puVar3 != (undefined8 *)0x0)) {
                    /* WARNING: Could not recover jumptable at 0x0001812cf7cc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)*puVar3)(puVar3,1);
    return;
  }
  return;
}



############ FUN_ 181332610 size=127 ############

void FUN_181332610(undefined8 *param_1)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  *param_1 = juce::DrawableComposite::vftable;
  iVar1 = *(int *)((longlong)param_1 + 0x4c);
  while (iVar1 != 0) {
    puVar2 = (undefined8 *)FUN_181343a90(param_1,iVar1 + -1,1,1,uVar3);
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    iVar1 = *(int *)((longlong)param_1 + 0x4c);
  }
  *param_1 = juce::Drawable::vftable;
  puVar2 = (undefined8 *)param_1[0x17];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 1813185d0 size=529 ############

void FUN_1813185d0(longlong param_1)

{
  int *piVar1;
  undefined8 *puVar2;
  longlong lVar3;
  char cVar4;
  int iVar5;
  longlong *plVar6;
  undefined4 uVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  longlong lVar10;
  
  lVar10 = *(longlong *)(param_1 + 200);
  plVar6 = (longlong *)0x0;
  if ((lVar10 != 0) && (*(longlong *)(lVar10 + 0x10) != 0)) {
    plVar8 = plVar6;
    if (lVar10 != 0) {
      plVar8 = *(longlong **)(lVar10 + 0x10);
    }
    (**(code **)(*plVar8 + 0x58))(plVar8,0);
    if (*(longlong *)(param_1 + 200) != 0) {
      plVar6 = *(longlong **)(*(longlong *)(param_1 + 200) + 0x10);
    }
    puVar2 = *(undefined8 **)(param_1 + 0x40);
    for (puVar9 = puVar2; puVar9 != puVar2 + *(int *)(param_1 + 0x4c); puVar9 = puVar9 + 1) {
      if (plVar6 == (longlong *)*puVar9) {
        uVar7 = (undefined4)((longlong)puVar9 - (longlong)puVar2 >> 3);
        goto LAB_181318659;
      }
    }
    uVar7 = 0xffffffff;
LAB_181318659:
    FUN_181343a90(param_1,uVar7,1);
    puVar2 = *(undefined8 **)(param_1 + 200);
    *(undefined8 *)(param_1 + 200) = 0;
    if (puVar2 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar2 + 1);
      iVar5 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)*puVar2)(puVar2,1);
      }
    }
  }
  lVar10 = *(longlong *)(param_1 + 0xb0);
  FUN_18051cc20(lVar10 + 0xe8);
  if (*(int *)(lVar10 + 0xf0) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar10 + 0xe8));
  }
  *(undefined4 *)(lVar10 + 0xf0) = 0;
  puVar2 = *(undefined8 **)(lVar10 + 0x118);
  *(undefined8 *)(lVar10 + 0x118) = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_181319980(lVar10,0xffffffff);
  iVar5 = *(int *)(param_1 + 0xc4) + -1;
  lVar10 = (longlong)iVar5;
  if (-1 < iVar5) {
    do {
      lVar3 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + lVar10 * 8);
      if ((lVar3 != 0) && (puVar2 = *(undefined8 **)(lVar3 + 0x10), puVar2 != (undefined8 *)0x0)) {
        plVar6 = (longlong *)puVar2[0x12];
        plVar8 = plVar6 + (longlong)*(int *)((longlong)puVar2 + 0x9c) * 3;
        for (; plVar6 != plVar8; plVar6 = plVar6 + 3) {
          if (*plVar6 == DAT_182673af0) {
            plVar6 = plVar6 + 1;
            if (plVar6 != (longlong *)0x0) goto LAB_18131878a;
            break;
          }
        }
        plVar6 = (longlong *)FUN_181244160();
LAB_18131878a:
        cVar4 = (**(code **)(*(longlong *)*plVar6 + 0x28))((longlong *)*plVar6,plVar6 + 1);
        if (cVar4 != '\0') {
          (**(code **)*puVar2)(puVar2,1);
        }
      }
      lVar10 = lVar10 + -1;
    } while (-1 < lVar10);
  }
  FUN_18051cab0((undefined8 *)(param_1 + 0xb8));
  if (*(int *)(param_1 + 0xc0) == 0) {
    *(undefined4 *)(param_1 + 0xc0) = 0;
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0xb8));
}



############ FUN_ 1814c5ed0 size=658 ############

void FUN_1814c5ed0(undefined8 *param_1)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined4 uVar4;
  longlong *plVar5;
  uint *puVar6;
  longlong lVar7;
  longlong local_res8;
  undefined8 uVar8;
  
  uVar8 = 0xfffffffffffffffe;
  *param_1 = CloudyTutorialPanel::vftable;
  param_1[0x16] = CloudyTutorialPanel::vftable;
  param_1[0x19] = CloudyTutorialPanel::vftable;
  param_1[0x1a] = CloudyTutorialPanel::vftable;
  FUN_1814c6df0(param_1[0x22]);
  lVar7 = param_1[0x20];
  plVar2 = *(longlong **)(lVar7 + 0x40);
  for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)(lVar7 + 0x4c); plVar5 = plVar5 + 1) {
    if (param_1[0xa4] == *plVar5) {
      uVar4 = (undefined4)((longlong)plVar5 - (longlong)plVar2 >> 3);
      goto LAB_1814c5f74;
    }
  }
  uVar4 = 0xffffffff;
LAB_1814c5f74:
  FUN_181343a90(lVar7,uVar4,1,CONCAT71((int7)((ulonglong)plVar2 >> 8),1),uVar8);
  lVar7 = param_1[0x20];
  plVar2 = *(longlong **)(lVar7 + 0x40);
  plVar5 = plVar2;
  do {
    if (plVar5 == plVar2 + *(int *)(lVar7 + 0x4c)) {
      uVar4 = 0xffffffff;
LAB_1814c5fc4:
      FUN_181343a90(lVar7,uVar4,1,CONCAT71((int7)((ulonglong)plVar2 >> 8),1),uVar8);
      uVar8 = (**(code **)(param_1[0x26] + 0x10))(param_1 + 0x26,&local_res8);
      FUN_1811e1f10(uVar8,param_1 + 0x19);
      puVar6 = (uint *)(local_res8 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      if (param_1[0x22] == 0) {
        lVar7 = 0;
      }
      else {
        lVar7 = param_1[0x22] + 0xd0;
      }
      FUN_18133e200(param_1[0x20],lVar7);
      puVar3 = (undefined8 *)param_1[0xa5];
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      puVar3 = (undefined8 *)param_1[0xa4];
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      FUN_180576bb0(param_1 + 0x6e);
      FUN_180577740(param_1 + 0x27);
      param_1[0x26] = ConfigOption::vftable;
      FUN_180485f00(param_1 + 0x23);
      puVar3 = (undefined8 *)param_1[0x22];
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      puVar3 = (undefined8 *)param_1[0x21];
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
      puVar6 = (uint *)(param_1[0x1f] + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      puVar6 = (uint *)(param_1[0x1d] + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      param_1[0x19] = ConfigOptionListener::vftable;
      FUN_18134caa0(param_1);
      return;
    }
    if (param_1[0xa5] == *plVar5) {
      uVar4 = (undefined4)((longlong)plVar5 - (longlong)plVar2 >> 3);
      goto LAB_1814c5fc4;
    }
    plVar5 = plVar5 + 1;
  } while( true );
}



############ FUN_ 1814c65c0 size=546 ############

void FUN_1814c65c0(longlong param_1)

{
  ulonglong *puVar1;
  ulonglong *puVar2;
  char cVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  longlong lVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  undefined4 uVar10;
  longlong *plVar11;
  longlong *plVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  
  puVar4 = *(undefined8 **)(param_1 + 0xd08);
  puVar5 = (undefined8 *)*puVar4;
  while (puVar5 != puVar4) {
    (**(code **)(*(longlong *)puVar5[4] + 0x58))((longlong *)puVar5[4],*(undefined1 *)(puVar5 + 5));
    puVar6 = (undefined8 *)puVar5[2];
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      cVar3 = *(char *)((longlong)*puVar6 + 0x19);
      puVar5 = puVar6;
      puVar6 = (undefined8 *)*puVar6;
      while (cVar3 == '\0') {
        cVar3 = *(char *)((longlong)*puVar6 + 0x19);
        puVar5 = puVar6;
        puVar6 = (undefined8 *)*puVar6;
      }
    }
    else {
      cVar3 = *(char *)((longlong)puVar5[1] + 0x19);
      puVar9 = (undefined8 *)puVar5[1];
      puVar6 = puVar5;
      while ((puVar5 = puVar9, cVar3 == '\0' && (puVar6 == (undefined8 *)puVar5[2]))) {
        cVar3 = *(char *)((longlong)puVar5[1] + 0x19);
        puVar9 = (undefined8 *)puVar5[1];
        puVar6 = puVar5;
      }
    }
  }
  uVar14 = 0;
  puVar1 = (ulonglong *)(param_1 + 0xd18);
  plVar12 = (longlong *)*puVar1;
  uVar13 = (ulonglong)((longlong)(plVar12 + *(int *)(param_1 + 0xd24)) + (7 - (longlong)plVar12)) >>
           3;
  if (plVar12 + *(int *)(param_1 + 0xd24) < plVar12) {
    uVar13 = uVar14;
  }
  uVar15 = uVar14;
  if (uVar13 != 0) {
    do {
      lVar7 = *(longlong *)(param_1 + 0x130);
      plVar8 = *(longlong **)(lVar7 + 0x40);
      for (plVar11 = plVar8; plVar11 != plVar8 + *(int *)(lVar7 + 0x4c); plVar11 = plVar11 + 1) {
        if (*plVar12 == *plVar11) {
          uVar10 = (undefined4)((longlong)plVar11 - (longlong)plVar8 >> 3);
          goto LAB_1814c66c7;
        }
      }
      uVar10 = 0xffffffff;
LAB_1814c66c7:
      FUN_181343a90(lVar7,uVar10,1);
      plVar12 = plVar12 + 1;
      uVar15 = uVar15 + 1;
    } while (uVar15 != uVar13);
  }
  puVar2 = (ulonglong *)(param_1 + 0xcf8);
  plVar12 = (longlong *)*puVar2;
  uVar13 = (ulonglong)((longlong)(plVar12 + *(int *)(param_1 + 0xd04)) + (7 - (longlong)plVar12)) >>
           3;
  if (plVar12 + *(int *)(param_1 + 0xd04) < plVar12) {
    uVar13 = uVar14;
  }
  if (uVar13 != 0) {
    do {
      plVar8 = *(longlong **)(param_1 + 0x40);
      for (plVar11 = plVar8; plVar11 != plVar8 + *(int *)(param_1 + 0x4c); plVar11 = plVar11 + 1) {
        if (*plVar12 == *plVar11) {
          uVar10 = (undefined4)((longlong)plVar11 - (longlong)plVar8 >> 3);
          goto LAB_1814c674e;
        }
      }
      uVar10 = 0xffffffff;
LAB_1814c674e:
      FUN_181343a90(param_1,uVar10,1);
      plVar12 = plVar12 + 1;
      uVar14 = uVar14 + 1;
    } while (uVar14 != uVar13);
  }
  FUN_18047c710(param_1 + 0xd08);
  FUN_18047cbc0(puVar1);
  if (*(int *)(param_1 + 0xd20) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  *(undefined4 *)(param_1 + 0xd20) = 0;
  FUN_18047cbc0(puVar2);
  if (*(int *)(param_1 + 0xd00) == 0) {
    *(undefined4 *)(param_1 + 0xd00) = 0;
    return;
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar2);
}



############ FUN_ 180587b80 size=228 ############

void FUN_180587b80(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined4 uVar4;
  longlong *plVar5;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if ((float)(int)(0xff - (uint)*(byte *)(lVar1 + 0xac)) / DAT_1824c4548 < DAT_1824c3c70) {
    return;
  }
  lVar2 = *(longlong *)(lVar1 + 0xd0);
  plVar3 = *(longlong **)(lVar2 + 0x40);
  for (plVar5 = plVar3; plVar5 != plVar3 + *(int *)(lVar2 + 0x4c); plVar5 = plVar5 + 1) {
    if (*(longlong *)(lVar1 + 0x2d8) == *plVar5) {
      uVar4 = (undefined4)((longlong)plVar5 - (longlong)plVar3 >> 3);
      goto LAB_180587bf3;
    }
  }
  uVar4 = 0xffffffff;
LAB_180587bf3:
  FUN_181343a90(lVar2,uVar4,1);
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0xd0);
  plVar3 = *(longlong **)(lVar1 + 0x40);
  plVar5 = plVar3;
  do {
    if (plVar5 == plVar3 + *(int *)(lVar1 + 0x4c)) {
      uVar4 = 0xffffffff;
LAB_180587c36:
      FUN_181343a90(lVar1,uVar4,1);
      return;
    }
    if (*(longlong *)(param_1 + 8) == *plVar5) {
      uVar4 = (undefined4)((longlong)plVar5 - (longlong)plVar3 >> 3);
      goto LAB_180587c36;
    }
    plVar5 = plVar5 + 1;
  } while( true );
}



############ FUN_ 180587c70 size=228 ############

void FUN_180587c70(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined4 uVar4;
  longlong *plVar5;
  
  lVar1 = *(longlong *)(param_1 + 8);
  if (DAT_1824c3c70 <= (float)(int)(0xff - (uint)*(byte *)(lVar1 + 0xac)) / DAT_1824c4548) {
    return;
  }
  lVar2 = *(longlong *)(lVar1 + 0xd0);
  plVar3 = *(longlong **)(lVar2 + 0x40);
  for (plVar5 = plVar3; plVar5 != plVar3 + *(int *)(lVar2 + 0x4c); plVar5 = plVar5 + 1) {
    if (*(longlong *)(lVar1 + 0x2d8) == *plVar5) {
      uVar4 = (undefined4)((longlong)plVar5 - (longlong)plVar3 >> 3);
      goto LAB_180587ce3;
    }
  }
  uVar4 = 0xffffffff;
LAB_180587ce3:
  FUN_181343a90(lVar2,uVar4,1);
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0xd0);
  plVar3 = *(longlong **)(lVar1 + 0x40);
  plVar5 = plVar3;
  do {
    if (plVar5 == plVar3 + *(int *)(lVar1 + 0x4c)) {
      uVar4 = 0xffffffff;
LAB_180587d26:
      FUN_181343a90(lVar1,uVar4,1);
      return;
    }
    if (*(longlong *)(param_1 + 8) == *plVar5) {
      uVar4 = (undefined4)((longlong)plVar5 - (longlong)plVar3 >> 3);
      goto LAB_180587d26;
    }
    plVar5 = plVar5 + 1;
  } while( true );
}



############ FUN_ 1812d97b0 size=215 ############

void FUN_1812d97b0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong *plVar2;
  undefined4 uVar3;
  longlong lVar4;
  longlong *plVar5;
  undefined8 uVar6;
  longlong lVar7;
  
  uVar6 = 0;
  if (*(longlong *)(param_2 + 0x10) != 0) {
    uVar6 = *(undefined8 *)(*(longlong *)(param_2 + 0x10) + 0x10);
  }
  lVar4 = __RTDynamicCast(uVar6,0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::ToolbarItemComponent::RTTI_Type_Descriptor,0);
  if (lVar4 != 0) {
    lVar1 = param_1 + -200;
    lVar7 = lVar4;
    while (lVar7 = *(longlong *)(lVar7 + 0x18), lVar7 != lVar1) {
      if (lVar7 == 0) {
        return;
      }
    }
    FUN_18051b040(param_1 + 0x18,lVar4);
    plVar2 = *(longlong **)(param_1 + -0x88);
    for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)(param_1 + -0x7c); plVar5 = plVar5 + 1) {
      if (lVar4 == *plVar5) {
        uVar3 = (undefined4)((longlong)plVar5 - (longlong)plVar2 >> 3);
        goto LAB_1812d9853;
      }
    }
    uVar3 = 0xffffffff;
LAB_1812d9853:
    FUN_181343a90(lVar1,uVar3,1);
    FUN_1812da170(lVar1,1);
  }
  return;
}



############ FUN_ 181333290 size=224 ############

void FUN_181333290(longlong *param_1)

{
  longlong *plVar1;
  char cVar2;
  undefined4 uVar3;
  longlong *plVar4;
  longlong lVar5;
  
  if ((int)param_1[0x3a] == 2) {
    lVar5 = 0;
  }
  else {
    cVar2 = FUN_1804d6ee0();
    if ((cVar2 == '\0') || (lVar5 = param_1[0x41], lVar5 == 0)) {
      lVar5 = param_1[0x40];
    }
  }
  if (lVar5 != param_1[0x42]) {
    plVar1 = (longlong *)param_1[8];
    for (plVar4 = plVar1; plVar4 != plVar1 + *(int *)((longlong)param_1 + 0x4c); plVar4 = plVar4 + 1
        ) {
      if (param_1[0x42] == *plVar4) {
        uVar3 = (undefined4)((longlong)plVar4 - (longlong)plVar1 >> 3);
        goto LAB_181333303;
      }
    }
    uVar3 = 0xffffffff;
LAB_181333303:
    FUN_181343a90(param_1,uVar3,1);
    param_1[0x42] = lVar5;
    if (lVar5 != 0) {
      (**(code **)(*param_1 + 0xb0))(param_1);
      plVar1 = (longlong *)param_1[0x42];
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x58))(plVar1,1);
        FUN_181343cc0(param_1,plVar1,0xffffffff);
      }
      FUN_181333460(param_1);
    }
  }
  return;
}



############ FUN_ 181333560 size=180 ############

void FUN_181333560(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  undefined4 uVar2;
  longlong *plVar3;
  
  if (param_2 != param_1[0x42]) {
    plVar1 = (longlong *)param_1[8];
    for (plVar3 = plVar1; plVar3 != plVar1 + *(int *)((longlong)param_1 + 0x4c); plVar3 = plVar3 + 1
        ) {
      if (param_1[0x42] == *plVar3) {
        uVar2 = (undefined4)((longlong)plVar3 - (longlong)plVar1 >> 3);
        goto LAB_1813335a7;
      }
    }
    uVar2 = 0xffffffff;
LAB_1813335a7:
    FUN_181343a90(param_1,uVar2,1);
    param_1[0x42] = param_2;
    if (param_2 != 0) {
      (**(code **)(*param_1 + 0xb0))(param_1);
      plVar1 = (longlong *)param_1[0x42];
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x58))(plVar1,1);
        FUN_181343cc0(param_1,plVar1,0xffffffff);
      }
      FUN_181333460(param_1);
    }
  }
  return;
}



############ FUN_ 181343a00 size=66 ############

void FUN_181343a00(longlong param_1)

{
  int iVar1;
  undefined8 *puVar2;
  
  iVar1 = *(int *)(param_1 + 0x4c);
  while (iVar1 != 0) {
    puVar2 = (undefined8 *)FUN_181343a90(param_1,iVar1 + -1,1);
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    iVar1 = *(int *)(param_1 + 0x4c);
  }
  return;
}



############ FUN_ 181343a50 size=47 ############

void FUN_181343a50(longlong param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x4c);
  while (iVar1 != 0) {
    FUN_181343a90(param_1,iVar1 + -1,1);
    iVar1 = *(int *)(param_1 + 0x4c);
  }
  return;
}



############ FUN_ 181343c70 size=74 ############

void FUN_181343c70(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  
  plVar1 = *(longlong **)(param_1 + 0x40);
  plVar2 = plVar1;
  while( true ) {
    if (plVar2 == plVar1 + *(int *)(param_1 + 0x4c)) {
      FUN_181343a90(param_1,0xffffffff,1);
      return;
    }
    if (param_2 == *plVar2) break;
    plVar2 = plVar2 + 1;
  }
  FUN_181343a90(param_1,(longlong)plVar2 - (longlong)plVar1 >> 3 & 0xffffffff,1);
  return;
}



############ FUN_ 180587dc0 size=152 ############

void FUN_180587dc0(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  undefined4 uVar3;
  longlong *plVar4;
  
  plVar1 = *(longlong **)(param_1 + 8);
  if ((float)(int)(0xff - (uint)*(byte *)((longlong)plVar1 + 0xac)) / DAT_1824c4548 != 0.0) {
    return;
  }
  (**(code **)(*plVar1 + 0x58))(plVar1,0);
  lVar2 = *(longlong *)(*(longlong *)(param_1 + 8) + 0xd0);
  plVar1 = *(longlong **)(lVar2 + 0x40);
  plVar4 = plVar1;
  do {
    if (plVar4 == plVar1 + *(int *)(lVar2 + 0x4c)) {
      uVar3 = 0xffffffff;
LAB_180587e33:
      FUN_181343a90(lVar2,uVar3,1);
      return;
    }
    if (*(longlong *)(param_1 + 8) == *plVar4) {
      uVar3 = (undefined4)((longlong)plVar4 - (longlong)plVar1 >> 3);
      goto LAB_180587e33;
    }
    plVar4 = plVar4 + 1;
  } while( true );
}



############ FUN_ 18057f750 size=126 ############

undefined4 * FUN_18057f750(longlong param_1,undefined4 *param_2)

{
  code *pcVar1;
  undefined8 uVar2;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  
  pcVar1 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
  if (pcVar1 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0();
    }
    uVar2 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar2 = (*pcVar1)(param_1 + 0xb0);
  }
  FUN_1813f22a0(uVar2,local_res8,DAT_1826741b0,param_1);
  *param_2 = local_resc;
  return param_2;
}



############ FUN_ 180581960 size=317 ############

void FUN_180581960(longlong param_1,longlong param_2)

{
  code *pcVar1;
  undefined8 uVar2;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  float local_18;
  float fStack_14;
  float fStack_10;
  float fStack_c;
  
  if (*(char *)(param_1 + 0x31d) != '\0') {
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0x348);
    pcVar1 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
    if (pcVar1 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar2 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar2 = (*pcVar1)(param_1 + 0xb0);
    }
    FUN_1813f22a0(uVar2,local_res8,DAT_182674280,param_1);
    FUN_181296c00(param_2,local_resc);
    local_18 = (float)*(int *)(param_1 + 800);
    fStack_14 = (float)*(int *)(param_1 + 0x324);
    fStack_10 = (float)*(int *)(param_1 + 0x328);
    fStack_c = (float)*(int *)(param_1 + 0x32c);
    FUN_1812963b0(param_2,param_1 + 8,&local_18,*(undefined4 *)(param_1 + 0x340),1);
  }
  return;
}



############ FUN_ 180582800 size=317 ############

void FUN_180582800(longlong param_1,longlong param_2)

{
  code *pcVar1;
  undefined8 uVar2;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  float local_18;
  float fStack_14;
  float fStack_10;
  float fStack_c;
  
  if (*(char *)(param_1 + 0x355) != '\0') {
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0x380);
    pcVar1 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
    if (pcVar1 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar2 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar2 = (*pcVar1)(param_1 + 0xb0);
    }
    FUN_1813f22a0(uVar2,local_res8,DAT_182674280,param_1);
    FUN_181296c00(param_2,local_resc);
    local_18 = (float)*(int *)(param_1 + 0x358);
    fStack_14 = (float)*(int *)(param_1 + 0x35c);
    fStack_10 = (float)*(int *)(param_1 + 0x360);
    fStack_c = (float)*(int *)(param_1 + 0x364);
    FUN_1812963b0(param_2,param_1 + 8,&local_18,*(undefined4 *)(param_1 + 0x378),1);
  }
  return;
}



############ FUN_ 180590350 size=590 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AVSoothe2SectionHeader@@::vtbl___AVSoothe2SectionHeader__
               (longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong *plVar5;
  int iVar6;
  float fVar7;
  float fVar8;
  undefined8 uStack_c0;
  undefined4 uStack_ac;
  float local_a8 [3];
  undefined4 local_9c;
  undefined1 local_98;
  void *local_90;
  undefined8 local_88;
  
  FUN_181296a90(param_2,param_1 + 0x100,param_3,param_4,0xfffffffffffffffe);
  FUN_181295ed0(param_2,param_1 + 0xd0);
  if (*(char *)(param_1 + 0xf8) != '\0') {
    fVar7 = (float)((double)(*(float *)(param_1 + 0xe4) - *(float *)(param_1 + 0xe0)) *
                   _DAT_1824c4170) + 0.0;
    fVar8 = ((float)*(int *)(param_1 + 0x28) + 0.0) - fVar7;
    if (fVar8 <= 0.0) {
      fVar8 = 0.0;
    }
    plVar5 = (longlong *)(param_1 + 0xb0);
    (**(code **)(*plVar5 + 8))(plVar5);
    fVar7 = (fVar8 - fVar8) * DAT_1824c3d8c + fVar7;
    if (*(code **)(*plVar5 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
    }
    else {
      (**(code **)(*plVar5 + 8))(plVar5);
    }
    if (*(code **)(*plVar5 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
    }
    else {
      (**(code **)(*plVar5 + 8))(plVar5);
    }
    uVar4 = DAT_1824c4140._4_4_;
    uVar3 = (undefined4)DAT_1824c4140;
    local_a8[2] = fVar7 + fVar8;
    local_a8[1] = 0.0;
    local_9c = 0;
    local_98 = 0;
    local_90 = (void *)0x0;
    local_88 = 0;
    uStack_c0 = CONCAT44(uStack_c0._4_4_,0xcc94afbf);
    local_a8[0] = fVar7;
    FUN_18049ba20(&local_90,8);
    iVar6 = local_88._4_4_ + 1;
    puVar1 = (undefined8 *)((longlong)local_90 + (longlong)local_88._4_4_ * 0x10);
    *puVar1 = 0;
    puVar1[1] = uStack_c0;
    local_88 = CONCAT44(local_88._4_4_ + 2,(undefined4)local_88);
    puVar2 = (undefined4 *)((longlong)local_90 + (longlong)iVar6 * 0x10);
    *puVar2 = uVar3;
    puVar2[1] = uVar4;
    puVar2[2] = 0x9999b4c3;
    puVar2[3] = uStack_ac;
    FUN_181296970(param_2,local_a8);
                    /* WARNING: Subroutine does not return */
    free(local_90);
  }
  return;
}



############ FUN_ 18059cb60 size=217 ############

void .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  
  plVar2 = *(longlong **)(param_1 + 200);
  plVar1 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  (**(code **)(*plVar2 + 0x170))(plVar2,DAT_182492928,0xff4b4c4f);
  plVar2 = *(longlong **)(param_1 + 200);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
                    /* WARNING: Could not recover jumptable at 0x00018059cc21. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*plVar2 + 0x170))(plVar2,DAT_18262bb88,0xffe2f1fb);
  return;
}



############ FUN_ 18059cc40 size=1423 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(longlong param_1,longlong param_2)

{
  int *piVar1;
  uint uVar2;
  longlong *plVar3;
  double dVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong lVar7;
  longlong *plVar8;
  int iVar9;
  uint *puVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  undefined4 local_res8;
  undefined4 local_res10 [2];
  undefined4 local_res18;
  undefined4 local_res20;
  undefined8 *local_1c8;
  float local_1c0;
  float local_1b8;
  undefined8 *local_1b0;
  longlong local_1a8;
  longlong local_1a0;
  longlong local_198;
  longlong local_190;
  float local_188;
  float local_184;
  float local_180;
  float local_17c;
  int local_178;
  int iStack_174;
  int iStack_170;
  int iStack_16c;
  int local_168;
  int iStack_164;
  int iStack_160;
  int iStack_15c;
  undefined4 local_158;
  undefined1 local_150 [8];
  double local_148;
  double local_140;
  double local_138;
  double local_130;
  double local_128;
  double local_120;
  double local_118;
  double local_110;
  float local_104;
  float local_fc;
  undefined8 local_f8;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  float local_bc;
  undefined1 local_b8 [16];
  undefined1 local_a8 [128];
  
  local_f8 = 0xfffffffffffffffe;
  local_res18 = 0;
  plVar8 = (longlong *)(param_1 + 0xb0);
  lVar5 = (**(code **)(*plVar8 + 8))(plVar8);
  fVar12 = *(float *)(lVar5 + 0x88);
  lVar5 = (**(code **)(*plVar8 + 8))(plVar8);
  fVar12 = fVar12 * _DAT_1824c4708;
  fVar11 = *(float *)(lVar5 + 0x88) * _DAT_1824c471c;
  local_180 = fVar11 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x28);
  if (local_180 <= 0.0) {
    local_180 = 0.0;
  }
  local_fc = fVar12 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x2c);
  if (local_fc <= 0.0) {
    local_fc = 0.0;
  }
  fVar12 = 0.0 - fVar12;
  fVar11 = 0.0 - fVar11;
  fVar13 = local_fc;
  if ((float)((double)local_fc * _DAT_1824c40c8) <= local_fc) {
    fVar13 = (float)((double)local_fc * _DAT_1824c40c8);
  }
  local_104 = fVar13 + fVar12;
  local_fc = local_fc - fVar13;
  local_bc = fVar13;
  lVar5 = (**(code **)(*plVar8 + 8))(plVar8);
  fVar14 = fVar11 + *(float *)(lVar5 + 0x88);
  local_1b8 = (fVar11 + local_180) - fVar14;
  if (local_1b8 <= 0.0) {
    local_1b8 = 0.0;
  }
  plVar3 = *(longlong **)(param_1 + 200);
  local_res10[0] = 0x24;
  local_188 = fVar11;
  local_184 = fVar12;
  local_17c = fVar13;
  uVar6 = (**(code **)(*plVar3 + 0x168))(plVar3,local_b8);
  FUN_1812971a0(local_res10,local_a8,uVar6,&local_188);
  FUN_181332c20(plVar3,param_2);
  if (*(code **)(*plVar8 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar6 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar6 = (**(code **)(*plVar8 + 8))(plVar8);
  }
  FUN_1813f22a0(uVar6,local_150,DAT_182674280,param_1);
  local_res8 = CONCAT13(0xb3,(int3)local_150._4_4_);
  FUN_181296c00(param_2,local_res8);
  if (*(code **)(*plVar8 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    lVar5 = *(longlong *)(param_1 + 0xb8);
  }
  else {
    lVar5 = (**(code **)(*plVar8 + 8))(plVar8);
  }
  lVar7 = (**(code **)(*plVar8 + 8))(plVar8);
  fVar12 = *(float *)(lVar7 + 0x88);
  local_1c8 = (undefined8 *)**(longlong **)(lVar5 + 0x68);
  if (local_1c8 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_1c8 + 1) = *(int *)(local_1c8 + 1) + 1;
    UNLOCK();
  }
  local_res18 = 4;
  FUN_1812520a0(&local_1c8,fVar12 * DAT_1824c43f8);
  FUN_181251cf0(&local_1c8,&local_1b0);
  if (local_1c8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_1c8 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_1c8)(local_1c8,1);
    }
  }
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_1b0);
  if (local_1b0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_1b0 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_1b0)(local_1b0,1);
    }
  }
  FUN_18049c4e0(&local_1a8,"oeksound");
  local_128 = DAT_1824c4520;
  fVar12 = local_1b8;
  if (local_1b8 * DAT_1824c3d8c <= local_1b8) {
    fVar12 = local_1b8 * DAT_1824c3d8c;
  }
  local_1c0 = fVar12 + fVar14;
  local_1b8 = local_1b8 - fVar12;
  fVar12 = local_104 + local_fc;
  local_130 = (double)fVar12 + DAT_1824c4520;
  local_138 = (double)local_1c0 + DAT_1824c4520;
  dVar4 = (double)local_104 + DAT_1824c4520;
  local_148 = (double)fVar14 + DAT_1824c4520;
  local_178 = SUB84(local_148,0);
  iVar9 = SUB84(dVar4,0);
  iStack_170 = local_138._0_4_ - local_178;
  iStack_16c = local_130._0_4_ - iVar9;
  local_e8 = CONCAT44(iVar9,local_178);
  uStack_e0 = CONCAT44(iStack_16c,iStack_170);
  local_res20 = 9;
  iStack_174 = iVar9;
  local_140 = dVar4;
  FUN_181296100(param_2,&local_1a8,&local_e8,9,1,0);
  puVar10 = (uint *)(local_1a8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  local_110 = (double)fVar12 + local_128;
  local_118 = (double)(local_1c0 + local_1b8) + local_128;
  local_128 = (double)local_1c0 + local_128;
  local_168 = SUB84(local_128,0);
  iStack_160 = local_118._0_4_ - local_168;
  iStack_15c = local_110._0_4_ - iVar9;
  local_d8 = CONCAT44(iVar9,local_168);
  uStack_d0 = CONCAT44(iStack_15c,iStack_160);
  iStack_164 = iVar9;
  local_120 = dVar4;
  FUN_18049c4e0(&local_190,"1.1.2");
  FUN_18049c4e0(&local_1a0,"version ");
  plVar8 = (longlong *)FUN_181232d30(&local_1a0,&local_190);
  local_198 = *plVar8;
  if ((*(uint *)(local_198 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_198 + -0x10) = *(int *)(local_198 + -0x10) + 1;
    UNLOCK();
  }
  puVar10 = (uint *)(local_1a0 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  local_158 = 10;
  FUN_181296100(param_2,&local_198,&local_d8,10,1,0);
  puVar10 = (uint *)(local_198 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_190 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return;
}



############ FUN_ 18059d700 size=941 ############

void FUN_18059d700(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  longlong lVar10;
  undefined8 uVar11;
  int *piVar12;
  undefined8 *local_res8;
  int local_f8 [3];
  int iStack_ec;
  int local_e8;
  int iStack_e4;
  int iStack_e0;
  int iStack_dc;
  undefined8 local_d8;
  float fStack_d0;
  float fStack_cc;
  undefined4 local_c8;
  float local_b8;
  float fStack_b4;
  float fStack_b0;
  float fStack_ac;
  undefined8 local_98;
  undefined4 local_88;
  undefined4 uStack_84;
  float fStack_80;
  float fStack_7c;
  float local_78;
  float fStack_74;
  float fStack_70;
  float fStack_6c;
  undefined4 local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  float local_58;
  float fStack_54;
  float fStack_50;
  float fStack_4c;
  int local_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  
  local_98 = 0xfffffffffffffffe;
  iVar9 = *(int *)(param_1 + 0x2c);
  local_f8[2] = *(int *)(param_1 + 0x28);
  local_f8[0] = 0;
  local_f8[1] = 0;
  iVar4 = local_f8[2] / 2;
  if (local_f8[2] < local_f8[2] / 2) {
    iVar4 = local_f8[2];
  }
  local_e8 = local_f8[2] - iVar4;
  iStack_e4 = 0;
  local_f8[2] = local_f8[2] - iVar4;
  iVar2 = *(int *)(param_1 + 0x28);
  iStack_ec = iVar9;
  iStack_e0 = iVar4;
  iStack_dc = iVar9;
  iVar8 = FUN_1811ab7e0(*(undefined8 *)(param_1 + 800));
  piVar12 = local_f8;
  if (iVar8 != 0) {
    piVar12 = &local_e8;
  }
  iVar8 = *piVar12;
  iVar5 = piVar12[1];
  iVar6 = piVar12[2];
  iVar7 = piVar12[3];
  local_48 = iVar8;
  iStack_44 = iVar5;
  iStack_40 = iVar6;
  iStack_3c = iVar7;
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x34c));
  fStack_cc = (float)iVar9;
  fStack_d0 = (float)iVar2;
  local_d8 = 0;
  local_88 = 0;
  uStack_84 = 0;
  plVar1 = (longlong *)(param_1 + 0xb0);
  fStack_80 = fStack_d0;
  fStack_7c = fStack_cc;
  lVar10 = (**(code **)(*plVar1 + 8))(plVar1);
  FUN_181295300(param_2,&local_88,*(float *)(lVar10 + 0x88) * DAT_1824c42d0);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x338));
  fStack_ac = (float)iVar7;
  fStack_b0 = (float)iVar6;
  fStack_b4 = (float)iVar5;
  local_b8 = (float)iVar8;
  local_78 = local_b8;
  fStack_74 = fStack_b4;
  fStack_70 = fStack_b0;
  fStack_6c = fStack_ac;
  lVar10 = (**(code **)(*plVar1 + 8))(plVar1);
  FUN_181295300(param_2,&local_78,*(float *)(lVar10 + 0x88) * DAT_1824c42d0);
  iVar9 = FUN_1811ab7e0(*(undefined8 *)(param_1 + 800));
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar11 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar11 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  lVar10 = (**(code **)(*plVar1 + 8))(plVar1);
  uVar11 = FUN_1813f2500(uVar11,&local_res8,*(float *)(lVar10 + 0x88) * DAT_1824c4408);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar11);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar12 = (int *)(local_res8 + 1);
    iVar2 = *piVar12;
    *piVar12 = *piVar12 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  if (iVar9 == 0) {
    uVar3 = *(undefined4 *)(param_1 + 0x344);
  }
  else {
    uVar3 = *(undefined4 *)(param_1 + 0x348);
  }
  FUN_181296c00(param_2,uVar3);
  local_c8 = 0;
  fStack_64 = (float)SUB84(local_f8._0_8_,4);
  fStack_60 = (float)local_f8[2];
  fStack_5c = (float)iStack_ec;
  local_68 = 0;
  FUN_1812963b0(param_2,param_1 + 0x328,&local_68,0x24,1);
  if (iVar9 == 0) {
    uVar3 = *(undefined4 *)(param_1 + 0x348);
  }
  else {
    uVar3 = *(undefined4 *)(param_1 + 0x344);
  }
  FUN_181296c00(param_2,uVar3);
  local_58 = (float)local_e8;
  fStack_54 = (float)iStack_e4;
  fStack_50 = (float)iVar4;
  fStack_4c = (float)iStack_dc;
  FUN_1812963b0(param_2,param_1 + 0x330,&local_58,0x24,1);
  return;
}



############ FUN_ 18059dab0 size=396 ############

void FUN_18059dab0(longlong param_1)

{
  longlong *plVar1;
  undefined4 *puVar2;
  undefined4 local_res8;
  undefined1 local_res10 [8];
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  local_res8 = CONCAT13(0xff,(int3)DAT_18262bb88);
  *(undefined4 *)(param_1 + 0x338) = local_res8;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  local_res8 = 0xffa7bcc8;
  *(undefined4 *)(param_1 + 0x340) = 0xffa7bcc8;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  local_res8 = 0xffa7bcc8;
  puVar2 = (undefined4 *)FUN_1812a2a20(&local_res8,local_res10,DAT_18262bb88,DAT_1824c3d74);
  *(undefined4 *)(param_1 + 0x33c) = *puVar2;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  local_res8 = 0xff4f5f6b;
  *(undefined4 *)(param_1 + 0x348) = 0xff4f5f6b;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  local_res8 = 0xff6f8596;
  *(undefined4 *)(param_1 + 0x344) = 0xff6f8596;
  FUN_181403590(*(undefined8 *)(param_1 + 0x318),0,*(undefined4 *)(param_1 + 0x340));
  return;
}



############ FUN_ 1814203a0 size=2122 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_1814203a0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  uint *puVar6;
  int *piVar7;
  uint uVar8;
  undefined4 *puVar9;
  longlong *plVar10;
  ulonglong *puVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  uint uVar14;
  longlong lVar15;
  ulonglong uVar16;
  int unaff_retaddr;
  undefined1 auStack_208 [32];
  undefined1 local_1e8;
  undefined8 local_1d8;
  uint local_1d0;
  uint local_1cc;
  undefined8 local_1c0;
  uint local_1b4;
  ulonglong local_1b0;
  int local_1a8 [6];
  int local_190;
  undefined8 local_188;
  uint local_174;
  uint local_170;
  uint local_16c;
  longlong local_140;
  undefined4 local_138;
  undefined4 local_134;
  undefined4 local_130 [2];
  longlong local_128;
  ulonglong local_120 [2];
  undefined8 local_110;
  undefined1 local_f8 [12];
  undefined4 local_ec;
  undefined8 local_d0;
  undefined1 local_c8 [96];
  ulonglong local_68;
  
  local_d0 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_208;
  uVar8 = (uint)&stack0x00000000;
  uVar14 = ((uVar8 & 0x7ff) * (uVar8 & 0x7ff) * 0x10 + 4) % 0x13 |
           ((uVar8 & 0x16ff) * (uVar8 & 0x16ff) * 0x10 + 4) % 0x13;
  local_16c = ((int)(-uVar14 | uVar14) >> 0x1f) * -0x7178 ^ 0x7a58;
  uVar14 = ((uVar8 & 0x19ff) * (uVar8 & 0x19ff) * 0x10 + 4) % 0x13;
  local_170 = (int)(-uVar14 | uVar14) >> 0x1f & 0xe025U ^ 0xe7c5;
  plVar10 = (longlong *)(param_1 + 0xb0);
  local_140 = param_1;
  local_110 = param_2;
  lVar1 = (**(code **)(*plVar10 + 8))(plVar10);
  local_190 = (int)(*(float *)(lVar1 + 0x88) * _DAT_1824c4560);
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  local_1e8 = 1;
  uVar2 = FUN_1813f22a0(*(undefined8 *)(param_1 + 0xb8),local_c8,DAT_1826741ec,param_1);
  FUN_1813ec390(uVar2);
  (**(code **)(*plVar10 + 8))(plVar10);
  FUN_1804f8fe0(local_f8);
  local_1b0 = 0;
  local_188 = 0x3550;
  local_1c0 = 0x18067917c;
  local_1d8 = 0x18067c6cc;
  local_134 = 1;
  local_ec = 1;
  do {
    plVar10 = &local_128;
    puVar9 = local_130;
    puVar6 = &local_1d0;
    FUN_18141fbbf();
    *puVar6 = 0xa66c80de;
    *puVar9 = 0x2a;
    *plVar10 = 0x181420648;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar14 = (local_1d0 >> 10 ^ local_1d0) & 0x3ff;
  uVar14 = local_1d0 ^ (uVar14 << 10 | uVar14);
  uVar14 = (uVar14 >> 8 | uVar14 << 0x18) & 0xcf30cf30 |
           (uVar14 << 8 | local_1d0 >> 0x18) & 0x30cf30cf;
  uVar14 = (uVar14 >> 0xd | uVar14 << 0x13) + 0xe9912eaf;
  uVar8 = ~(((uVar14 >> 8 | uVar14 * 0x1000000) & 0xac53ac53 |
            (uVar14 * 0x100 | uVar14 >> 0x18) & 0x53ac53ac) ^ 0xb5979db1);
  uVar14 = (uVar8 >> 5 ^ uVar8) >> 7 & 0x1f;
  uVar14 = uVar8 ^ (uVar14 << 5 | uVar14) << 7;
  local_1d0 = uVar14 >> 2 & 0xcccccccc | uVar8 << 0x1e | (uVar14 & 0xccccccc) << 2 | uVar8 >> 0x1e;
  do {
    puVar11 = local_120;
    puVar9 = &local_138;
    piVar7 = local_1a8;
                    /* WARNING: Call to offcut address within same function */
    func_0x000181420b2a();
    *piVar7 = -0x347dbd1f;
    *puVar9 = 0x67;
    *puVar11 = 0x181420728;
    FUN_18141f9d9();
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar14 = local_1a8[0] + 0x35776d7;
  uVar8 = ((uVar14 >> 2 | uVar14 * 0x40000000) & 0x99999999 |
          (uVar14 * 4 | uVar14 >> 0x1e) & 0x66666666) ^ 0x4d19f7b7;
  uVar14 = (uVar8 >> 0x18 ^ uVar8) & 0x7f;
  uVar14 = ((uVar14 << 0x18 | uVar14) ^ uVar8) + 0x13a7ce4;
  uVar8 = ~(((uVar14 * 0x100 | uVar14 >> 0x18) & 0x9b649b64 |
            (uVar14 >> 8 | uVar14 * 0x1000000) & 0x649b649b) + 0x94af418d);
  uVar14 = (uVar8 >> 0xb ^ uVar8) >> 4 & 0x7f;
  lVar1 = (longlong)(int)local_1d0;
  lVar15 = (longlong)(int)((uVar14 << 0xb | uVar14) << 4 ^ uVar8);
  local_1d0 = 0;
  local_1a8[0] = 0;
  plVar10 = (longlong *)(lVar1 + 4 + local_128);
  *plVar10 = *plVar10 + (*(ulonglong *)(lVar15 + 4 + local_120[0]) >> 0x10 & 0x83154424);
  do {
    uVar2 = rdtsc();
    local_174 = (int)uVar2 + (int)((ulonglong)uVar2 >> 0x20) * 2;
    uVar3 = (ulonglong)local_174 + ((ulonglong)(local_174 >> 0xc) - 0x691ec0ed);
    uVar3 = (uVar3 >> 0xc | uVar3 << 0x34) * -0x3ff + 0x593ab35d;
    uVar3 = uVar3 >> 0xd | uVar3 << 0x33;
    uVar16 = -lVar15;
    lVar15 = (uVar16 ^ 0xffffffffffffffff) + 1;
    uVar3 = uVar3 - (uVar3 >> 0xb);
    local_120[0] = -(~local_120[0] + 1);
    uVar4 = (uVar3 * 0x400 | uVar3 >> 0x36) * -0x9fff - 0x1e85c194;
    uVar3 = uVar4 >> 10;
    uVar4 = uVar3 | uVar4 << 0x36;
    lVar5 = uVar4 - ((uVar4 >> 7 | uVar3 << 0x39) + 0x6763e301);
    uVar14 = (int)lVar5 * 0x40 | (uint)((ulonglong)lVar5 >> 0x3a);
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  piVar7 = (int *)(lVar1 + 8 + local_128);
  *piVar7 = *piVar7 + (uVar14 ^ 0x24b1cfee);
  piVar7 = (int *)(lVar1 + 4 + local_128);
  *piVar7 = *piVar7 + (uVar14 ^ 0x2dba021a);
  uVar3 = *(ulonglong *)(lVar1 + 4 + local_128);
  uVar14 = (uint)(uVar3 >> 0x20);
  uVar14 = (uVar14 >> 7 ^ uVar14) >> 2 & 3;
  uVar3 = (((ulonglong)uVar14 << 7 | (ulonglong)uVar14) << 0x22 ^ uVar3) + 0x4350a69157392b82;
  uVar4 = (uVar3 >> 0x10 | uVar3 << 0x30) & 0x1162ee9d1162ee9d;
  uVar12 = ((uVar3 * 0x10000 | uVar3 >> 0x30) & 0xee9d1162ee9d1162 | uVar4) + 0x6781ed249dcf407e;
  uVar3 = (ulonglong)((uint)((uVar12 >> 0x1d ^ uVar12) >> 6) & 0x1ffffff);
  uVar12 = uVar12 ^ (uVar3 << 0x1d | uVar3) << 6;
  uVar13 = uVar12 >> 0x2f | uVar12 << 0x11;
  uVar3 = (ulonglong)((uint)(((uVar12 & 0x7fffffffffff) >> 2 ^ uVar13) >> 0x17) & 0x7fff);
  uVar13 = uVar13 ^ (uVar3 << 0x13 | uVar3) << 0x17;
  uVar3 = (uVar13 << 0x1b | uVar13 >> 0x25) ^ 0xf3f5078d240fc321;
  *(ulonglong *)(lVar1 + 4 + local_128) = uVar3;
  uVar3 = (ulonglong)((uint)(uVar3 >> 5) & 0x48220140);
  plVar10 = (longlong *)((uVar16 ^ 0xffffffffffffffff) + 5 + local_120[0]);
  *plVar10 = *plVar10 + uVar3;
  local_1cc = (uint)(*(ulonglong *)(lVar1 + 4 + local_128) >> 0x14) & 0x7fffffff;
  local_1b4 = (uint)(*(ulonglong *)(lVar1 + 4 + local_128) >> 0x1c) ^ 0xa9d22a07;
  local_1b0 = *(ulonglong *)(lVar1 + 4 + local_128) ^ 0xc74359c12be2bf11;
                    /* WARNING: Call to offcut address within same function */
  uVar14 = func_0x000181420ab3(0xc74359c12be2bf11,uVar4,uVar3,param_1);
  IMAGE_DOS_HEADER_180000000._21_4_ = IMAGE_DOS_HEADER_180000000._21_4_ + (int)local_128;
  return (uVar14 & 0xffffff75) + 0xeccd0696 + (uint)(0x14287ab2 < (uVar14 & 0xffffff75));
}



############ FUN_ 181478a60 size=1476 ############

/* WARNING: Instruction at (ram,0x000181478e22) overlaps instruction at (ram,0x000181478e1f)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001814794da) */
/* WARNING: Removing unreachable block (ram,0x000181479222) */
/* WARNING: Removing unreachable block (ram,0x00018147925f) */
/* WARNING: Removing unreachable block (ram,0x00018147914f) */
/* WARNING: Removing unreachable block (ram,0x000181479233) */
/* WARNING: Removing unreachable block (ram,0x00018147924f) */
/* WARNING: Removing unreachable block (ram,0x000181479379) */
/* WARNING: Removing unreachable block (ram,0x000181478e1f) */
/* WARNING: Removing unreachable block (ram,0x000181479245) */
/* WARNING: Removing unreachable block (ram,0x000181479247) */
/* WARNING: Removing unreachable block (ram,0x00018147927e) */
/* WARNING: Removing unreachable block (ram,0x00018147915d) */
/* WARNING: Removing unreachable block (ram,0x0001814791b1) */
/* WARNING: Removing unreachable block (ram,0x0001814791ba) */
/* WARNING: Removing unreachable block (ram,0x0001814791f8) */
/* WARNING: Removing unreachable block (ram,0x00018147920f) */
/* WARNING: Heritage AFTER dead removal. Example location: s0x00000000 : 0x000181479283 */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_181478a60(longlong param_1,undefined8 param_2)

{
  code *pcVar1;
  bool bVar2;
  int iVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  ulonglong uVar10;
  longlong lVar11;
  undefined4 *puVar12;
  int *piVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  int *piVar17;
  int unaff_retaddr;
  undefined8 uStack_260;
  undefined1 local_258 [32];
  undefined1 local_238;
  int local_224;
  int *local_220;
  int *local_218;
  undefined4 local_210 [5];
  uint local_1fc;
  undefined8 local_1f8;
  undefined4 local_1dc;
  undefined8 local_1c8;
  undefined4 local_1c0;
  undefined4 local_1bc;
  undefined1 local_178 [8];
  undefined1 local_170 [4];
  undefined4 local_16c;
  undefined8 local_c8;
  ulonglong local_40;
  
  puVar15 = (undefined8 *)local_258;
  local_c8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)local_258;
  uVar6 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x150) == 0) {
    uVar7 = ((uVar6 & 0x6ff) * (uVar6 & 0x6ff) * 0x10 + 4) % 0x13 | uVar6;
    local_1fc = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x929d;
  }
  else {
    local_1fc = 0x929d;
  }
  if (((ulonglong)&stack0x00000000 & 0x4c0) == 0) {
    iVar3 = (uVar6 & 0x56ff) * (uVar6 & 0x56ff) + 1;
    uVar6 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
    uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
  }
  else {
    uVar6 = ((uVar6 & 0x7ff) * (uVar6 & 0x7ff) * 0x10 + 4) % 0x13;
  }
  local_1fc = (int)(-uVar6 | uVar6) >> 0x1f & 0x9fcdU ^ local_1fc;
  local_1dc = 0x580;
  lVar11 = DAT_182673708;
  do {
    if (lVar11 == param_1) {
      bVar2 = true;
LAB_181478bd4:
      local_1bc = *(undefined4 *)(param_1 + 0x2c);
      local_1c0 = *(undefined4 *)(param_1 + 0x28);
      local_1c8 = 0;
      pcVar1 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
      local_1f8 = param_2;
      if (pcVar1 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (*(longlong *)(param_1 + 0xb8) == 0) {
          FUN_180569ff0(param_1);
        }
        uVar5 = *(undefined8 *)(param_1 + 0xb8);
      }
      else {
        uVar5 = (*pcVar1)(param_1 + 0xb0);
      }
      local_238 = 1;
      FUN_1813f22a0(uVar5,local_170,DAT_1826742b0,param_1);
      local_210[0] = local_16c;
      local_218 = (int *)0x100;
      local_220 = (int *)&DAT_1811b5f24;
      if (!bVar2) {
        if (*(char *)(param_1 + 0xd9) != '\0') {
          local_218 = (int *)&UNK_1811b6024;
          local_218 = (int *)FUN_1812a2670(local_210,local_178,DAT_1824c3cb8);
        }
        return local_218;
      }
      local_220 = &iRam000000018160c694;
      piVar9 = (int *)0x18160c794;
      do {
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      local_224 = (((((((((iRam000000018160c694 * 0x6b + iRam000000018160c698) * 0x6b +
                         iRam000000018160c69c) * 0x6b + iRam000000018160c6a0) * 0x6b +
                       iRam000000018160c6a4) * 0x6b + iRam000000018160c6a8) * 0x6b +
                     iRam000000018160c6ac) * 0x6b + iRam000000018160c6b0) * 0x6b +
                   iRam000000018160c6b4) * 0x6b + iRam000000018160c6b8) * 0x6b +
                  iRam000000018160c6bc;
      local_218 = piVar9;
      do {
                    /* WARNING: Call to offcut address within same function */
        func_0x000181479265();
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      local_224 = ((((((((local_224 * 0x6b + iRam000000018160c6c0) * 0x6b + iRam000000018160c6c4) *
                        0x6b + iRam000000018160c6c8) * 0x6b + iRam000000018160c6cc) * 0x6b +
                     iRam000000018160c6d0) * 0x6b + iRam000000018160c6d4) * 0x6b +
                   iRam000000018160c6d8) * 0x6b + iRam000000018160c6dc) * 0x6b;
      do {
        piVar17 = (int *)((longlong)puVar15 + 0x34);
        piVar13 = (int *)0x18160c6e0;
        uVar10 = 0x4408;
        puVar15[-1] = &UNK_181478f93;
        iVar3 = func_0x00018147a94a();
        puVar14 = puVar15;
        if ((uVar10 & 0xc3) == 0) {
          puVar15[-1] = piVar9;
          puVar14 = puVar15 + -1;
          piVar9 = piVar13;
          if (((uVar10 & 0xc300) != 0) && (puVar14 = puVar15 + -1, (uVar10 & 0xc300) != 0)) {
            iVar3 = *piVar17;
            puVar14 = puVar15 + -1;
          }
        }
        *piVar17 = iVar3 + *piVar9;
        piVar9 = (int *)*puVar14;
        puVar15 = puVar14 + 1;
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar14 + 0x3c);
      *(int *)((longlong)puVar14 + 0x3c) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + iRam000000018160c6e4) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + iRam000000018160c6e8) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + _UNK_18160c6ec) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      uVar6 = iVar3 + iRam000000018160c6f0;
      if (((((uVar6 & 0xbff) + 1) * (uVar6 & 0xbff) + 7) % 0x51 & 0x3b) == 0) {
        uVar7 = ((uVar6 & 0x27ff) - 1) * (uVar6 & 0x27ff) & 1;
      }
      else {
        uVar7 = uVar6 & 0x37f;
        iVar3 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
        uVar7 = ((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e;
      }
      uVar8 = (uint)piVar9 & 0x3f;
      lVar11 = ((longlong)
                (int)(0xb48e - (uVar8 * uVar8 * (uVar8 + 1) * (uVar8 + 1) & (uint)piVar9 & 1)) ^
               0xb4eaU) - ((longlong)(int)uVar7 ^ 0x60U);
      *(uint *)((longlong)puVar14 + 0x3c) = uVar6 * 0x6b;
      iVar3 = (uVar6 * 0x6b + *(int *)((longlong)&iRam000000018160c6f0 + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c6f4)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c6f8 + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c6fc + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c700 + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c704 + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c708 + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c70c + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(&UNK_18160c710 + lVar11)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c714)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c718)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c71c)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      *(int *)((longlong)puVar14 + 0x3c) = (iVar3 + *(int *)(lVar11 + 0x18160c720)) * 0x6b;
      do {
        *(int *)((longlong)puVar14 + 0x3c) =
             *(int *)((longlong)puVar14 + 0x3c) + *(int *)(lVar11 + 0x18160c724);
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar14 + 0x3c);
      *(int *)((longlong)puVar14 + 0x3c) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + *(int *)(lVar11 + 0x18160c728)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c72c)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c730)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c734)) * 0x6b;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3;
      *(int *)((longlong)puVar14 + 0x3c) = iVar3 + *(int *)(lVar11 + 0x18160c738);
      do {
        uVar10 = 0x4408;
        puVar15[-1] = &UNK_1814792fa;
        func_0x00018147a94a();
        if ((uVar10 & 0xe300) == 0) {
          puVar16 = puVar15 + -1;
          puVar15 = puVar15 + -1;
          *puVar16 = register0x00000020;
        }
        *(undefined **)((longlong)puVar15 + -8) = &UNK_18147931e;
        func_0x000181479aa1();
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar15 + 0x34);
      *(int *)((longlong)puVar15 + 0x34) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + *(int *)(lVar11 + 0x18160c73c)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c740)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      *(int *)((longlong)puVar15 + 0x34) = iVar3 + *(int *)(lVar11 + 0x18160c744);
      do {
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar15 + 0x34);
      *(int *)((longlong)puVar15 + 0x34) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + *(int *)(lVar11 + 0x18160c748)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c74c)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c750)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      *(int *)((longlong)puVar15 + 0x34) = iVar3 + *(int *)(lVar11 + 0x18160c754);
      do {
                    /* WARNING: Call to offcut address within same function */
        *(undefined **)((longlong)puVar15 + -8) = &UNK_1814793e2;
        func_0x000181479265();
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar15 + 0x34);
      *(int *)((longlong)puVar15 + 0x34) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + *(int *)(lVar11 + 0x18160c758)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c75c)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c760)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      *(int *)((longlong)puVar15 + 0x34) = (iVar3 + *(int *)(lVar11 + 0x18160c764)) * 0x6b;
      do {
        *(int *)((longlong)puVar15 + 0x34) =
             *(int *)((longlong)puVar15 + 0x34) + *(int *)(lVar11 + 0x18160c768);
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      do {
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar15 + 0x34);
      *(int *)((longlong)puVar15 + 0x34) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + *(int *)(lVar11 + 0x18160c76c)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c770)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c774)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c778)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      *(int *)((longlong)puVar15 + 0x34) = iVar3 + *(int *)(lVar11 + 0x18160c77c);
      do {
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      iVar3 = *(int *)((longlong)puVar15 + 0x34);
      *(int *)((longlong)puVar15 + 0x34) = iVar3 * 0x6b;
      iVar3 = (iVar3 * 0x6b + *(int *)(lVar11 + 0x18160c780)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      iVar3 = (iVar3 + *(int *)(lVar11 + 0x18160c784)) * 0x6b;
      *(int *)((longlong)puVar15 + 0x34) = iVar3;
      *(int *)((longlong)puVar15 + 0x34) = (iVar3 + *(int *)(lVar11 + 0x18160c788)) * 0x6b;
      do {
        *(int *)((longlong)puVar15 + 0x34) =
             *(int *)((longlong)puVar15 + 0x34) + *(int *)(&UNK_18160c78c + lVar11);
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      *(undefined8 *)((longlong)puVar15 + 0x38) = 0x18833a6099e6fe3d;
      *(int *)((longlong)puVar15 + 0x40) = (int)*(undefined8 *)((longlong)puVar15 + 0x38);
      *(undefined4 *)((longlong)puVar15 + 0x68) = *(undefined4 *)((longlong)puVar15 + 0x34);
      do {
        puVar12 = (undefined4 *)((longlong)puVar15 + 0x68);
        *(undefined **)((longlong)puVar15 + -8) = &UNK_181479669;
        uVar4 = func_0x0001814ed8d3();
        *puVar12 = uVar4;
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      uVar6 = (*(uint *)((longlong)puVar15 + 0x68) << 0x11 |
              *(uint *)((longlong)puVar15 + 0x68) >> 0xf) + 0xcbd96526;
      *(uint *)((longlong)puVar15 + 0x34) = uVar6 >> 8 | uVar6 * 0x1000000;
      do {
        *(undefined **)((longlong)puVar15 + -8) = &UNK_1814796bb;
        func_0x00018147b1a3(0x4408);
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      *(BADSPACEBASE **)((longlong)puVar15 + -8) = register0x00000020;
      *(undefined **)((longlong)puVar15 + -0x10) = &DAT_1811b5f24;
                    /* WARNING: Call to offcut address within same function */
      *(undefined **)((longlong)puVar15 + -0x18) = &UNK_18147975c;
      _DAT_1811b5f24 = func_0x000181479765();
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    if (lVar11 == 0) {
      bVar2 = false;
      goto LAB_181478bd4;
    }
    lVar11 = *(longlong *)(lVar11 + 0x18);
  } while( true );
}



############ FUN_ 18148b010 size=562 ############

void FUN_18148b010(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  undefined1 uVar4;
  int iVar5;
  longlong lVar6;
  undefined8 uVar7;
  int iVar8;
  int iVar9;
  float fVar10;
  undefined4 local_res8;
  undefined8 *local_res10;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  
  iVar3 = *(int *)(param_1 + 0x2c);
  iVar9 = *(int *)(param_1 + 0x28);
  FUN_1812a3160(param_2,*(undefined4 *)(param_1 + 0x2b0));
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x2b4));
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar7 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  uVar7 = FUN_1813f2500(uVar7,&local_res10,*(float *)(lVar6 + 0x88) * DAT_1824c440c);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar7);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  iVar8 = (int)(*(float *)(lVar6 + 0x88) * DAT_1824c4388);
  iVar9 = iVar9 + iVar8 * -2;
  iVar3 = iVar3 + iVar8 * -2;
  iVar5 = 0;
  if (0 < iVar9) {
    iVar5 = iVar9;
  }
  iVar9 = 0;
  if (0 < iVar3) {
    iVar9 = iVar3;
  }
  local_58 = CONCAT44(iVar8,iVar8);
  uStack_50 = CONCAT44(iVar9,iVar5);
  FUN_181296100(param_2,param_1 + 8,&local_58,0x21,1,0);
  fVar10 = (float)(int)(0xff - (uint)*(byte *)(*(longlong *)(param_1 + 0x100) + 0xac)) /
           DAT_1824c4548;
  if (0.0 < fVar10) {
    if (fVar10 < DAT_1824c3ea4) {
      uVar4 = (undefined1)(int)(fVar10 * DAT_1824c454c);
    }
    else {
      uVar4 = 0xff;
    }
  }
  else {
    uVar4 = 0;
  }
  local_res8 = CONCAT13(uVar4,(int3)*(undefined4 *)(param_1 + 0x2b0));
  FUN_181296c00(param_2,local_res8);
  local_48 = *(undefined8 *)(*(longlong *)(param_1 + 0x100) + 0x20);
  uStack_40 = *(undefined8 *)(*(longlong *)(param_1 + 0x100) + 0x28);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_48,0);
  return;
}



############ FUN_ 18148b5f0 size=83 ############

void FUN_18148b5f0(longlong param_1)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined1 local_res8 [8];
  
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0();
  }
  uVar1 = *(undefined8 *)(param_1 + 0xb8);
  puVar2 = (undefined8 *)FUN_18140ed70(local_res8,0);
  FUN_1813f0dc0(uVar1,DAT_1826741d0,*puVar2,param_1 + 0x490);
  return;
}



############ FUN_ 18148b9d0 size=520 ############

void FUN_18148b9d0(longlong param_1)

{
  undefined4 local_res8;
  undefined4 uStackX_c;
  undefined8 local_178;
  undefined4 uStack_170;
  undefined4 uStack_16c;
  undefined8 local_168;
  undefined8 uStack_160;
  undefined8 local_158;
  undefined4 local_150;
  undefined8 local_14c;
  undefined *local_140;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined4 local_118;
  undefined8 local_114;
  undefined8 local_10c;
  undefined8 local_104;
  undefined4 local_fc;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined4 local_d8;
  undefined *local_d0;
  longlong local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined4 local_a8;
  undefined8 local_a4;
  undefined8 local_9c;
  undefined8 local_94;
  undefined4 local_8c;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined4 local_68;
  undefined *local_60;
  longlong local_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined4 local_38;
  undefined8 local_34;
  undefined8 local_2c;
  undefined8 local_24;
  undefined4 local_1c;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0();
  }
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0xb8),&local_res8,DAT_1826741d8,param_1);
  *(undefined4 *)(param_1 + 0x140) = uStackX_c;
  local_168 = 0;
  uStack_160 = 0;
  local_158 = 0;
  local_150 = 0;
  local_14c = 0;
  local_140 = &DAT_18249f4b4;
  local_138 = 0;
  uStack_130 = 0;
  local_128 = 0;
  uStack_120 = 0;
  local_118 = 0;
  local_114 = 1;
  local_10c = 1;
  local_104 = 1;
  local_fc = 1;
  local_f8 = 0;
  uStack_f0 = 0;
  local_e8 = 0;
  local_e0 = 0x40000000;
  local_d8 = 0;
  local_d0 = &DAT_18249f4b4;
  local_c8 = param_1 + 0x490;
  local_c0 = 0;
  local_b8 = 0;
  uStack_b0 = 0;
  local_a8 = 0;
  local_a4 = 1;
  local_9c = 1;
  local_94 = 1;
  local_8c = 1;
  local_res8 = 0x40a00000;
  uStackX_c = 0;
  local_88 = 0;
  uStack_80 = 0;
  local_78 = 0;
  local_70 = 0x40a00000;
  local_68 = 0;
  local_60 = &DAT_18249f4b4;
  local_58 = param_1 + 0x148;
  local_50 = 0;
  local_48 = 0;
  uStack_40 = 0;
  local_38 = 0;
  local_34 = 1;
  local_2c = 1;
  local_24 = 1;
  local_1c = 1;
  FUN_18056c190(&local_168,&local_88,&local_f8);
  uStack_16c = *(undefined4 *)(param_1 + 0x2c);
  uStack_170 = *(undefined4 *)(param_1 + 0x28);
  local_178 = 0;
  FUN_18055f500(&local_168,&local_178,param_1);
  FUN_180569ed0(&local_168);
  return;
}



############ FUN_ 1814a0c20 size=718 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814a0c20(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  int iVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  uint *_Memory;
  undefined1 auStack_e8 [32];
  undefined1 local_c8;
  longlong local_b8;
  undefined8 *local_b0;
  int local_a8;
  int iStack_a4;
  int local_a0;
  int iStack_9c;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  float local_88;
  float fStack_84;
  float fStack_80;
  float fStack_7c;
  undefined8 local_78;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  longlong *local_38;
  undefined1 local_30 [8];
  ulonglong local_28;
  
  local_78 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_e8;
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar7 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  lVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  FUN_1813f2500(uVar7,&local_b0,*(float *)(lVar5 + 0x88) * DAT_1824c441c);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x310));
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_b0);
  puVar6 = (undefined8 *)
           (**(code **)(*(longlong *)(param_1 + 0x128) + 0x10))
                     ((longlong *)(param_1 + 0x128),&local_38);
  (**(code **)(*(longlong *)*puVar6 + 0x20))((longlong *)*puVar6,&local_b8,puVar6 + 1);
  lVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  local_a8 = *(int *)(param_1 + 0x2f8) - (int)(*(float *)(lVar5 + 0x88) * DAT_1824c46e8);
  iStack_a4 = *(int *)(param_1 + 0x2fc);
  iVar4 = (*(int *)(param_1 + 0x300) - local_a8) + *(int *)(param_1 + 0x2f8);
  local_a0 = 0;
  if (0 < iVar4) {
    local_a0 = iVar4;
  }
  iStack_9c = *(int *)(param_1 + 0x304);
  fStack_7c = (float)iStack_9c;
  fStack_80 = (float)local_a0;
  fStack_84 = (float)iStack_a4;
  local_88 = (float)local_a8;
  local_c8 = 1;
  local_68 = local_88;
  fStack_64 = fStack_84;
  fStack_60 = fStack_80;
  fStack_5c = fStack_7c;
  FUN_1812963b0(param_2,&local_b8,&local_68,0x21);
  _Memory = (uint *)(local_b8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*local_38 + 0xb0))(local_38,local_30);
  if (*(char *)(param_1 + 0x308) != '\0') {
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x314));
    local_58 = *(undefined8 *)(param_1 + 0x2e8);
    uStack_50 = *(undefined8 *)(param_1 + 0x2f0);
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_58,0);
    local_48 = *(undefined8 *)(param_1 + 0x2f8);
    uStack_40 = *(undefined8 *)(param_1 + 0x300);
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_48,0);
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x310));
  }
  local_8c = (float)*(int *)(param_1 + 0x2f4);
  local_90 = (float)*(int *)(param_1 + 0x2f0);
  local_94 = (float)*(int *)(param_1 + 0x2ec);
  local_98 = (float)*(int *)(param_1 + 0x2e8);
  FUN_18149f4f0(param_1,param_2,&local_98);
  if (local_b0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_b0 + 1);
    iVar4 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar4 == 1) {
      (**(code **)*local_b0)(local_b0,1);
    }
  }
}



############ FUN_ 1814b2a10 size=242 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814b2a10(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  code *pcVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined8 *local_res8;
  
  FUN_1815eeec0();
  plVar2 = (longlong *)(param_1 + 0xb0);
  lVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  pcVar4 = *(code **)(*plVar2 + 8);
  *(float *)(param_1 + 0x974) = *(float *)(lVar5 + 0x88) * _DAT_1824c4558;
  if (pcVar4 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar6 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar6 = (*pcVar4)(plVar2);
  }
  lVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  uVar6 = FUN_1813f2500(uVar6,&local_res8,*(float *)(lVar5 + 0x88) * DAT_1824c440c);
  FUN_181252990(param_1 + 0x968,uVar6);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001814b2aee. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(longlong *)(param_1 + 0x878) + 0x108))();
  return;
}



############ FUN_ 1814b34e0 size=786 ############

void FUN_1814b34e0(longlong param_1,longlong param_2)

{
  int *piVar1;
  float fVar2;
  int iVar3;
  undefined1 *puVar4;
  uint uVar5;
  longlong lVar6;
  longlong *plVar7;
  uint *puVar8;
  undefined4 local_res8;
  undefined1 *local_res18;
  undefined8 *local_res20;
  longlong local_b8 [2];
  float fStack_a8;
  float fStack_a4;
  undefined1 *local_a0;
  undefined1 *local_98;
  float local_90;
  float fStack_8c;
  float fStack_88;
  float fStack_84;
  undefined8 local_80;
  undefined1 *local_78;
  undefined1 *local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  float fStack_60;
  float fStack_5c;
  float local_58;
  float fStack_54;
  float fStack_50;
  float fStack_4c;
  int local_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  
  local_80 = 0xfffffffffffffffe;
  local_res8 = CONCAT13(0x19,(int3)DAT_1826742e8);
  FUN_181296c00(param_2,local_res8);
  fStack_a4 = (float)*(int *)(param_1 + 0x2c);
  fStack_a8 = (float)*(int *)(param_1 + 0x28);
  local_b8[1] = 0;
  local_68 = 0;
  uStack_64 = 0;
  fVar2 = *(float *)(param_1 + 0x1c4);
  plVar7 = (longlong *)(param_1 + 0xb0);
  fStack_60 = fStack_a8;
  fStack_5c = fStack_a4;
  lVar6 = (**(code **)(*plVar7 + 8))(plVar7);
  FUN_181295300(param_2,&local_68,*(float *)(lVar6 + 0x88) * fVar2);
  if (*(code **)(*plVar7 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    lVar6 = *(longlong *)(param_1 + 0xb8);
  }
  else {
    lVar6 = (**(code **)(*plVar7 + 8))(plVar7);
  }
  local_res20 = (undefined8 *)**(longlong **)(lVar6 + 0x78);
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res20 + 1) = *(int *)(local_res20 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_res20);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_res20);
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res20 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  FUN_181296c00(param_2,DAT_18262bb5c);
  local_res18 = &DAT_1821dbf98;
  if (*(int *)(param_1 + 0x1c0) == 2) {
    FUN_18049c4e0(local_b8,"New version available: ");
    plVar7 = (longlong *)FUN_181232d30(local_b8,param_1 + 0x138);
    local_a0 = (undefined1 *)*plVar7;
    if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
      UNLOCK();
    }
    puVar8 = (uint *)(local_b8[0] + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    local_78 = local_res18;
    puVar8 = (uint *)(local_res18 + -0x10);
    uVar5 = *puVar8;
    local_res18 = local_a0;
  }
  else {
    FUN_18049c4e0(&local_98,"You have the latest version.");
    puVar4 = local_res18;
    local_70 = local_res18;
    local_res18 = local_98;
    puVar8 = (uint *)(puVar4 + -0x10);
    uVar5 = *puVar8;
  }
  if ((uVar5 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_48 = *(int *)(param_1 + 0x194);
  iStack_44 = *(int *)(param_1 + 0x198);
  iStack_40 = *(int *)(param_1 + 0x19c);
  iStack_3c = *(int *)(param_1 + 0x1a0);
  fStack_84 = (float)iStack_3c;
  fStack_88 = (float)iStack_40;
  fStack_8c = (float)iStack_44;
  local_90 = (float)local_48;
  local_58 = local_90;
  fStack_54 = fStack_8c;
  fStack_50 = fStack_88;
  fStack_4c = fStack_84;
  FUN_1812963b0(param_2,&local_res18,&local_58,9,1);
  puVar8 = (uint *)(local_res18 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return;
}



############ FUN_ 1814c4ae0 size=161 ############

void FUN_1814c4ae0(longlong param_1)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  undefined8 *local_res8;
  undefined8 local_res10;
  
  pcVar3 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
  if (pcVar3 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0();
    }
    uVar5 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar5 = (*pcVar3)(param_1 + 0xb0);
  }
  puVar4 = (undefined8 *)FUN_1813f2500(uVar5,&local_res8);
  local_res10 = *(undefined8 *)(param_1 + 200);
  *(undefined8 *)(param_1 + 200) = *puVar4;
  *puVar4 = local_res10;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1814c4ce0 size=236 ############

void FUN_1814c4ce0(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  int iVar7;
  undefined8 *local_res8;
  undefined8 local_res10;
  
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar6 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar6 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  lVar4 = (**(code **)(*plVar2 + 8))(plVar2);
  iVar3 = *(int *)(param_1 + 0x2c) + (int)(*(float *)(lVar4 + 0x88) * DAT_1824c41e0) * -2;
  iVar7 = 0;
  if (0 < iVar3) {
    iVar7 = iVar3;
  }
  puVar5 = (undefined8 *)FUN_1813f2500(uVar6,&local_res8,(float)iVar7 * DAT_1824c3df0);
  local_res10 = *(undefined8 *)(param_1 + 0xe8);
  *(undefined8 *)(param_1 + 0xe8) = *puVar5;
  *puVar5 = local_res10;
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1814c5540 size=612 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c5540(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  int iVar4;
  undefined8 uVar5;
  longlong lVar6;
  uint *_Memory;
  int iVar7;
  int iVar8;
  longlong local_res8;
  undefined8 *local_res10;
  undefined8 local_48;
  undefined8 uStack_40;
  float local_38;
  float fStack_34;
  float fStack_30;
  float fStack_2c;
  
  FUN_1812a3160(param_2,*(undefined4 *)(param_1 + 0x518));
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x51c));
  iVar8 = *(int *)(param_1 + 0x540);
  if (*(int *)(param_1 + 0x2c) < *(int *)(param_1 + 0x540)) {
    iVar8 = *(int *)(param_1 + 0x2c);
  }
  uStack_40 = CONCAT44(iVar8,*(undefined4 *)(param_1 + 0x28));
  local_48 = 0;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_48,0);
  if ((*(byte *)(*(longlong *)(param_1 + 0x108) + 0xa8) >> 1 & 1) != 0) {
    plVar2 = (longlong *)(param_1 + 0xb0);
    if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (*(longlong *)(param_1 + 0xb8) == 0) {
        FUN_180569ff0(param_1);
      }
      uVar5 = *(undefined8 *)(param_1 + 0xb8);
    }
    else {
      uVar5 = (**(code **)(*plVar2 + 8))(plVar2);
    }
    uVar5 = FUN_1813f2500(uVar5,&local_res10,(float)*(int *)(param_1 + 0x540) * DAT_1824c3df0);
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar5);
    if (local_res10 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_res10 + 1);
      iVar8 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar8 == 1) {
        (**(code **)*local_res10)(local_res10,1);
      }
    }
    FUN_181296c00(param_2,DAT_18262bb5c);
    FUN_18049c4e0(&local_res8,"Tutorials");
    lVar6 = (**(code **)(*plVar2 + 8))(plVar2);
    iVar7 = *(int *)(param_1 + 0x534) - (int)(*(float *)(lVar6 + 0x88) * _DAT_1824c4718);
    iVar4 = (*(int *)(param_1 + 0x53c) - iVar7) + *(int *)(param_1 + 0x534);
    iVar8 = 0;
    if (0 < iVar4) {
      iVar8 = iVar4;
    }
    fStack_2c = (float)*(int *)(param_1 + 0x540);
    fStack_30 = (float)iVar8;
    fStack_34 = (float)*(int *)(param_1 + 0x538);
    local_38 = (float)iVar7;
    FUN_1812963b0(param_2,&local_res8,&local_38,0x21,1);
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 1814c6250 size=842 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814c6250(longlong param_1,longlong param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  code *pcVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong *plVar7;
  uint *puVar8;
  undefined1 auStack_118 [32];
  undefined1 local_f8;
  undefined4 local_e8;
  undefined4 local_e4;
  longlong local_e0;
  longlong local_d8;
  longlong *local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 *local_98;
  float local_90;
  float fStack_8c;
  float fStack_88;
  float fStack_84;
  undefined8 local_80;
  float local_78;
  float fStack_74;
  float fStack_70;
  float fStack_6c;
  undefined1 local_49 [32];
  undefined1 local_29;
  ulonglong local_28 [2];
  
  local_80 = 0xfffffffffffffffe;
  local_28[0] = DAT_182615970 ^ (ulonglong)auStack_118;
  pcVar4 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
  if (pcVar4 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0();
    }
    uVar5 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar5 = (*pcVar4)(param_1 + 0xb0);
  }
  uVar5 = FUN_1813f2500(uVar5,&local_98,(float)*(int *)(param_1 + 0xd34) * DAT_1824c3db8);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar5);
  if (local_98 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_98 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_98)(local_98,1);
    }
  }
  local_e8 = CONCAT13(0xb3,(int3)DAT_18262bb5c);
  FUN_181296c00(param_2,local_e8);
  local_a8 = *(undefined8 *)(param_1 + 0xd28);
  uStack_a0 = *(undefined8 *)(param_1 + 0xd30);
  lVar6 = FUN_181233e10(local_49 + 1,*(undefined4 *)(param_1 + 0xf4));
  FUN_180495150(&local_b0,lVar6,local_49 + -lVar6);
  lVar6 = FUN_181233e10(local_28,*(int *)(param_1 + 0xe0) + 1);
  FUN_180495150(&local_b8,lVar6,&local_29 + -lVar6);
  FUN_18049c4e0(&local_c8,"Step ");
  plVar7 = (longlong *)FUN_181232d30(&local_c8,&local_b8);
  local_e0 = *plVar7;
  if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
    UNLOCK();
  }
  puVar8 = (uint *)(local_c8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_d0 = &local_e0;
  FUN_181232e20(&local_e0,&DAT_1822a1ba4,&DAT_1822a1ba8);
  local_d8 = local_e0;
  if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
    UNLOCK();
  }
  puVar8 = (uint *)(local_e0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_d0 = &local_d8;
  plVar7 = (longlong *)FUN_181232d30(&local_d8,&local_b0);
  local_c0 = *plVar7;
  if ((*(uint *)(local_c0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_c0 + -0x10) = *(int *)(local_c0 + -0x10) + 1;
    UNLOCK();
  }
  puVar8 = (uint *)(local_d8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  fStack_84 = (float)uStack_a0._4_4_;
  fStack_88 = (float)(int)uStack_a0;
  fStack_8c = (float)local_a8._4_4_;
  local_90 = (float)(int)local_a8;
  local_f8 = 1;
  local_78 = local_90;
  fStack_74 = fStack_8c;
  fStack_70 = fStack_88;
  fStack_6c = fStack_84;
  FUN_1812963b0(param_2,&local_c0,&local_78,0x24);
  puVar8 = (uint *)(local_c0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_b8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_b0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_e4 = CONCAT13(0xcc,(int3)DAT_18262bb5c);
  FUN_181296c00(param_2,local_e4);
}



############ FUN_ 1814ec190 size=198 ############

undefined4 * FUN_1814ec190(longlong param_1,undefined4 *param_2)

{
  float fVar1;
  code *pcVar2;
  undefined4 uVar3;
  undefined1 uVar4;
  undefined8 uVar5;
  undefined4 local_res8;
  undefined4 local_resc;
  
  uVar3 = DAT_1826741b0;
  pcVar2 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
  if (pcVar2 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0();
    }
    uVar5 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar5 = (*pcVar2)(param_1 + 0xb0);
  }
  FUN_1813f22a0(uVar5,&local_res8,uVar3,param_1);
  fVar1 = *(float *)(param_1 + 0x3fc);
  if (0.0 < fVar1) {
    if (fVar1 < DAT_1824c3ea4) {
      uVar4 = (undefined1)(int)(fVar1 * DAT_1824c454c);
    }
    else {
      uVar4 = 0xff;
    }
  }
  else {
    uVar4 = 0;
  }
  local_res8 = CONCAT13(uVar4,(int3)local_resc);
  *param_2 = local_res8;
  return param_2;
}



############ FUN_ 1814f2690 size=1783 ############

/* WARNING: Instruction at (ram,0x0001814f2d43) overlaps instruction at (ram,0x0001814f2d3f)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001814f2d94) */

void FUN_1814f2690(longlong *param_1,undefined8 param_2)

{
  int *piVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  uint uVar6;
  undefined4 uVar7;
  uint *puVar8;
  uint uVar9;
  undefined4 *puVar10;
  longlong lVar11;
  longlong *plVar12;
  ulonglong uVar13;
  int unaff_retaddr;
  undefined1 auStack_2c8 [32];
  undefined1 local_2a8;
  undefined4 local_298;
  int local_294;
  uint local_290;
  uint local_288;
  undefined8 local_280;
  uint local_278 [4];
  undefined1 local_268 [8];
  undefined8 local_260;
  undefined8 local_258;
  undefined8 local_250;
  uint local_244;
  undefined4 local_23c;
  undefined1 local_238 [4];
  undefined4 local_234;
  undefined1 local_230 [8];
  undefined8 local_228;
  ulonglong local_220;
  undefined1 local_218 [24];
  undefined4 local_200;
  longlong local_1f8;
  longlong local_1f0;
  undefined4 local_1e8 [2];
  longlong *local_1e0;
  undefined8 local_190;
  ulonglong local_68;
  
  local_190 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_2c8;
  plVar12 = param_1 + 0x16;
  local_228 = param_2;
  local_1e0 = param_1;
  if (*(code **)(*plVar12 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (param_1[0x17] == 0) {
      FUN_180569ff0(param_1);
    }
    lVar11 = param_1[0x17];
  }
  else {
    lVar11 = (**(code **)(*plVar12 + 8))(plVar12);
  }
  local_2a8 = 1;
  FUN_1813f22a0(lVar11,local_238,DAT_1826741f0,param_1);
  local_23c = local_234;
  if (*(code **)(*plVar12 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (param_1[0x17] == 0) {
      FUN_180569ff0(param_1);
    }
    lVar11 = param_1[0x17];
  }
  else {
    lVar11 = (**(code **)(*plVar12 + 8))(plVar12);
  }
  local_2a8 = 1;
  FUN_1813f22a0(lVar11,local_230,DAT_1826742b8,param_1);
  (**(code **)(*param_1 + 0x160))(param_1,local_268);
  if (*(code **)(*plVar12 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (param_1[0x17] == 0) {
      FUN_180569ff0(param_1);
    }
    lVar11 = param_1[0x17];
  }
  else {
    lVar11 = (**(code **)(*plVar12 + 8))(plVar12);
  }
  local_2a8 = 1;
  FUN_1813f22a0(lVar11,local_218,DAT_182674284,param_1);
  do {
    local_200 = 0x46;
    local_1f8 = 0x1814f2807;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_294 = 0x1138315;
  do {
    plVar12 = &local_1f0;
    puVar10 = local_1e8;
    puVar8 = local_278;
    FUN_1814f1aa9();
    *puVar8 = 0x15f9d49d;
    *puVar10 = 9;
    *plVar12 = 0x1814f28d7;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (local_278[0] >> 0xd ^ local_278[0]) >> 10 & 0x1ff;
  local_278[0] = (uVar6 << 0xd | uVar6) << 10 ^ local_278[0];
  uVar6 = (local_278[0] >> 0x19 | local_278[0] << 7) ^ 0xd5e6ea05;
  uVar6 = (uVar6 >> 7 | uVar6 << 0x19) + 0xa558945f;
  uVar6 = (uVar6 * 0x800000 | uVar6 >> 9) + 0x530f1a08;
  uVar9 = uVar6 * 8 | uVar6 >> 0x1d;
  uVar6 = (uVar6 & 0x1fffffff) >> 0x11 ^ uVar9;
  lVar11 = (longlong)local_294;
  uVar13 = (ulonglong)(int)((uVar6 << 0x14 | uVar6 & 0xfff) ^ uVar9);
  local_294 = 0;
  local_278[0] = 0;
  plVar12 = (longlong *)(lVar11 + 4 + local_1f8);
  *plVar12 = *plVar12 + (*(ulonglong *)(uVar13 + 4 + local_1f0) >> 1 & 0xa8ec3a88);
  do {
    uVar2 = rdtsc();
    local_244 = (int)uVar2 + (int)((ulonglong)uVar2 >> 0x20) * 8;
    uVar4 = ((ulonglong)(local_244 >> 9) - 0x10d37fdc) + (ulonglong)local_244 * 8;
    uVar3 = uVar4 * 0x1000 | uVar4 >> 0x34;
    uVar4 = ((uVar4 & 0xfffffffffffff) >> 3 | uVar3 << 0x31) + 0x704543f4 + uVar3 * 8;
    uVar4 = uVar4 + ((uVar4 >> 9) - 0x1439e7a);
    uVar3 = uVar4 >> 0xd | uVar4 << 0x33;
    uVar4 = uVar3 * 9;
    uVar3 = uVar3 ^ (uVar4 >> 6 | uVar4 << 0x3a);
    uVar4 = uVar3 << 6 | uVar3 >> 0x3a;
    uVar4 = uVar4 - ((uVar4 << 7 | (uVar3 & 0x3ffffffffffffff) >> 0x33) - 0x656ed8d);
    lVar5 = uVar4 + (uVar4 * 0x2000 | uVar4 >> 0x33);
    uVar13 = -(~uVar13 + 1);
    uVar6 = ((uint)lVar5 ^ (uint)((ulonglong)(lVar5 * 3) >> 0xb)) & 0x49a5ddaa;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  piVar1 = (int *)(lVar11 + 8 + local_1f8);
  *piVar1 = *piVar1 + (uVar6 ^ 0x3711ec37);
  piVar1 = (int *)(lVar11 + 4 + local_1f8);
  *piVar1 = *piVar1 + (uVar6 ^ 0xe721b0bf);
  uVar4 = *(ulonglong *)(lVar11 + 4 + local_1f8) ^ 0xe97fcc702ab62f93;
  uVar4 = uVar4 >> 2 & 0xcccccccccccccccc | uVar4 << 0x3e |
          (uVar4 & 0xccccccccccccccc) << 2 | uVar4 >> 0x3e;
  uVar4 = (uVar4 >> 4 | uVar4 << 0x3c) & 0xe1e1e1e1e1e1e1e1 |
          (uVar4 << 4 | uVar4 >> 0x3c) & 0x1e1e1e1e1e1e1e1e;
  uVar7 = (undefined4)((uVar4 >> 0x20 ^ uVar4) >> 1);
  uVar4 = uVar4 ^ (CONCAT44(uVar7,uVar7) & 0x3ffffff03ffffff) * 2;
  uVar4 = (uVar4 >> 0x27 | uVar4 << 0x19) ^ 0x79b7031b67e019be;
  uVar4 = (uVar4 << 0x10 | uVar4 >> 0x30) & 0xefc4103befc4103b |
          (uVar4 >> 0x10 | uVar4 << 0x30) & 0x103befc4103befc4;
  uVar4 = ((uVar4 << 4 | uVar4 >> 0x3c) & 0x9696969696969696 |
          (uVar4 >> 4 | uVar4 << 0x3c) & 0x6969696969696969) ^ 0x2e8282dd4d8bffa6;
  *(ulonglong *)(lVar11 + 4 + local_1f8) = uVar4;
  plVar12 = (longlong *)(uVar13 + 4 + local_1f0);
  *plVar12 = *plVar12 + (ulonglong)((uint)(uVar4 >> 2) & 0xa2c1201);
  local_290 = (uint)(*(ulonglong *)(lVar11 + 4 + local_1f8) >> 0x15) & 0x7fffffff;
  local_288 = (uint)(*(ulonglong *)(lVar11 + 4 + local_1f8) >> 6) ^ 0xceee86b7;
  local_220 = *(ulonglong *)(lVar11 + 4 + local_1f8) ^ 0x10033af337bc25c3;
  local_298 = 0;
  local_258 = 0;
  local_260 = 0x11857b8;
  local_250 = 0x1811857b8;
  local_280 = 0x1811857c0;
  FUN_1814f2d95();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1814f5590 size=919 ############

/* WARNING: Removing unreachable block (ram,0x0001814f5742) */
/* WARNING: Removing unreachable block (ram,0x0001814f5636) */
/* WARNING: Removing unreachable block (ram,0x0001814f575b) */
/* WARNING: Removing unreachable block (ram,0x0001814f560d) */

void FUN_1814f5590(longlong param_1)

{
  code *pcVar1;
  uint *puVar2;
  undefined8 uVar3;
  uint uVar4;
  char *pcVar5;
  ulonglong uVar6;
  undefined8 uVar7;
  uint uVar8;
  longlong unaff_R12;
  uint uVar9;
  undefined4 uVar10;
  undefined1 in_XMM3 [16];
  undefined1 auVar11 [16];
  undefined1 in_XMM4 [16];
  int unaff_retaddr;
  undefined1 auStack_178 [32];
  undefined1 local_158;
  uint local_148;
  uint *local_140;
  undefined *local_130;
  undefined8 local_120;
  uint local_fc;
  uint local_f4;
  undefined1 local_a0 [8];
  char *local_98;
  ulonglong local_50;
  
  local_50 = DAT_182615970 ^ (ulonglong)auStack_178;
  uVar9 = (uint)&stack0x00000000;
  uVar8 = ((uVar9 & 0x1eff) + 1) * (uVar9 & 0x1eff) + 0x5bd1 & 0x80000001;
  uVar4 = uVar9 & 0x2ff;
  uVar7 = 0;
  local_f4 = 0xe61d - ((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 ^
             (int)(-uVar8 | uVar8) >> 0x1f & 0xef3dU;
  if (((ulonglong)&stack0x00000000 & 0xf00) == 0) {
    uVar4 = ((uVar9 & 0xaff) * (uVar9 & 0xaff) * 0x10 + 4) % 0x13;
    local_fc = -((int)(-uVar4 | uVar4) >> 0x1f) - 1U | 0xc817;
  }
  else {
    local_fc = 0xc817;
  }
  uVar4 = ((uVar9 & 0x8ff) + 1) * (uVar9 & 0x8ff) + 0x43e3 & 0x80000001;
  local_fc = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xccf7 ^ local_fc;
  local_120 = 0x100;
  local_140 = &DAT_181527d50;
  local_130 = &DAT_181527e50;
  local_148 = 0x811c9dc5;
  pcVar1 = *(code **)(*(longlong *)(param_1 + 0xb0) + 8);
  if (pcVar1 == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar3 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar3 = (*pcVar1)((longlong *)(param_1 + 0xb0));
  }
  uVar6 = (ulonglong)DAT_1826741a0;
  local_158 = 1;
  uVar3 = FUN_1813f22a0(uVar3,local_a0,uVar6,param_1);
  uVar10 = FUN_1813ec390(uVar3);
  pcVar5 = "radiusScaling";
  local_98 = "radiusScaling";
  FUN_181411b10(*(undefined8 *)(param_1 + 0x328),"radiusScaling",uVar10);
  puVar2 = local_140;
  local_148 = (local_140[2] ^ (local_140[1] ^ (*local_140 ^ local_148) * 0x1000181) * 0x1000181) *
              0x1000181;
  do {
    FUN_1814f5bbf();
    FUN_1814f1c09();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_148 = (puVar2[3] ^ local_148) * 0x1000181;
  uVar10 = FUN_1814f5932();
  auVar11 = sqrtps(in_XMM3,in_XMM4);
                    /* WARNING: Could not recover jumptable at 0x0001814f5aaa. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_R12 + 0x76636))
            (uVar10,pcVar5,(~uVar6 + 1 ^ 0xffffffffffffffff) + 1,auVar11._0_8_,unaff_R12 + 0x41503,
             unaff_R12 + 0x4f66a,unaff_R12 + -0x3a096,unaff_R12 + 0x17e,uVar7);
  return;
}



############ FUN_ 18155d3f0 size=1896 ############

/* WARNING: Removing unreachable block (ram,0x00018155d4a5) */
/* WARNING: Removing unreachable block (ram,0x00018155d487) */
/* WARNING: Removing unreachable block (ram,0x00018155d4d6) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 FUN_18155d3f0(longlong param_1)

{
  longlong *plVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint *puVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  float fVar12;
  int unaff_retaddr;
  undefined1 auStack_248 [32];
  undefined1 local_228;
  uint local_218;
  undefined8 local_210;
  undefined4 local_1fc;
  undefined *local_1f8;
  uint *local_1e0;
  undefined8 local_1d8;
  uint local_1c0;
  undefined1 local_1b8 [32];
  longlong local_198;
  undefined1 local_148 [8];
  undefined1 local_140 [24];
  undefined1 local_128 [144];
  ulonglong local_98;
  
  local_98 = DAT_182615970 ^ (ulonglong)auStack_248;
  plVar1 = (longlong *)(param_1 + 0xb0);
  uVar9 = (uint)&stack0x00000000 & 0x3cff;
  local_1fc = 0xa10;
  iVar10 = uVar9 * uVar9 + 1;
  uVar9 = (uint)&stack0x00000000 & 0x16ff;
  uVar8 = iVar10 * 0x24924924 + (iVar10 >> 4) + (iVar10 >> 1) >> 0x1d;
  uVar8 = (int)(uVar8 - 7) >> 0x1f & uVar8;
  uVar9 = ((uVar9 + 1) * uVar9 + 7) % 0x51;
  uVar9 = (int)((-uVar9 | uVar9) & (-uVar8 | uVar8)) >> 0x1f;
  local_1c0 = ((int)(-uVar9 | uVar9) >> 0x1f) * 0x3113 & 0x408dU ^ 0x4c8d;
  local_198 = param_1;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    uVar6 = *(undefined8 *)(param_1 + 0xb8);
  }
  else {
    uVar6 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  (**(code **)(*plVar1 + 8))(plVar1);
  local_228 = 1;
  uVar6 = FUN_1813f22a0(uVar6,local_148,DAT_182674210,param_1);
  FUN_1813ec390(uVar6);
  uVar6 = (**(code **)(*plVar1 + 8))(plVar1);
  local_228 = 1;
  uVar6 = FUN_1813f22a0(uVar6,local_140,DAT_1826742bc,param_1);
  FUN_1813ec390(uVar6);
  FUN_18055e970(plVar1,DAT_1824c441c);
  fVar12 = (float)FUN_18055e970(plVar1,DAT_1824c4408);
  FUN_1804731b0(param_1);
  FUN_18055e970(plVar1,DAT_1824c42d0);
  FUN_1804731b0(param_1);
  FUN_18055e970(plVar1,DAT_1824c4360);
  FUN_18134c250(param_1,local_1b8);
  local_210 = 0x2621fc0;
  local_1d8 = 0x100;
  local_1e0 = &DAT_18142c514;
  local_1f8 = &DAT_18142c614;
  puVar7 = (undefined4 *)FUN_1804dba00(local_1b8,local_128,(int)fVar12);
  puVar5 = local_1e0;
  uVar2 = puVar7[1];
  uVar3 = puVar7[2];
  uVar4 = puVar7[3];
  *(undefined4 *)(param_1 + 0x360) = *puVar7;
  *(undefined4 *)(param_1 + 0x364) = uVar2;
  *(undefined4 *)(param_1 + 0x368) = uVar3;
  *(undefined4 *)(param_1 + 0x36c) = uVar4;
  uVar9 = local_1e0[1] ^ *local_1e0 >> 0x1c ^ (*local_1e0 ^ 0xc50) << 4;
  uVar9 = local_1e0[2] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = local_1e0[3] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = local_1e0[4] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  local_218 = local_1e0[5] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  do {
    FUN_1815649b4();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_218 = puVar5[6] ^ local_218 >> 0x1c ^ local_218 << 4;
  do {
    FUN_18155c15f();
    FUN_18155f8f3();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = puVar5[7] ^ local_218 >> 0x1c ^ local_218 << 4;
  uVar9 = puVar5[8] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[9] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[10] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0xb] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0xc] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0xd] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0xe] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0xf] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0x10] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar9 = puVar5[0x11] ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar8 = uVar9 << 4;
  uVar9 = puVar5[0x12] ^ uVar9 >> 0x1c ^ uVar8;
  uVar11 = uVar9 << 4;
  local_218 = puVar5[0x13] ^ uVar9 >> 0x1c ^ uVar11;
                    /* WARNING: Call to offcut address within same function */
  func_0x00018155d9eb(local_218,uVar8,uVar11);
  return _DAT_49d58b4d5d415ac2;
}



############ FUN_ 181595ef0 size=148 ############

void FUN_181595ef0(longlong param_1)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  *(undefined4 *)(param_1 + 0x310) = *(undefined4 *)(param_1 + 0x368);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  *(undefined4 *)(param_1 + 0x314) = *(undefined4 *)(param_1 + 0x36c);
  return;
}



############ FUN_ 1815cab20 size=874 ############

void FUN_1815cab20(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  float fVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined8 uVar7;
  longlong lVar8;
  undefined4 *puVar9;
  float fVar10;
  undefined8 *local_res10;
  undefined8 *local_res18;
  undefined1 local_res20 [4];
  undefined4 local_res24;
  undefined1 local_e8 [4];
  undefined4 local_e4;
  void *local_e0;
  ulonglong local_d8;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined1 local_c0;
  undefined8 local_b8;
  undefined1 local_b0 [8];
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  float local_98 [3];
  float fStack_8c;
  undefined1 local_88 [88];
  
  local_b8 = 0xfffffffffffffffe;
  iVar4 = *(int *)(param_1 + 0x2c);
  iVar5 = *(int *)(param_1 + 0x28);
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  uVar7 = FUN_1813f22a0(*(undefined8 *)(param_1 + 0xb8),local_b0,DAT_182674238,param_1);
  fVar10 = (float)FUN_1813ec390(uVar7);
  lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar3 = *(float *)(lVar8 + 0x88);
  iVar6 = FUN_1815cb020(param_1 + 200);
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0xb8),local_res20,DAT_1826741d8,param_1);
  FUN_181296c00(param_2,local_res24);
  if ((0.0 < fVar3 * fVar10) && (iVar6 != 2)) {
    *(bool *)(param_1 + 0xd8) = iVar6 == 0;
    *(bool *)(param_1 + 0xd9) = iVar6 == 0;
    *(bool *)(param_1 + 0xdb) = iVar6 == 1;
    *(bool *)(param_1 + 0xda) = iVar6 == 1;
    local_e0 = (void *)0x0;
    local_d8 = 0;
    local_d0 = 0;
    uStack_c8 = 0;
    local_c0 = 1;
    FUN_18129d5a0(&local_e0);
    FUN_181295ed0(param_2,&local_e0);
    local_d8 = local_d8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_e0);
  }
  puVar9 = (undefined4 *)
           (**(code **)(**(longlong **)(param_2 + 8) + 0x58))(*(longlong **)(param_2 + 8),local_88);
  local_a8 = *puVar9;
  uStack_a4 = puVar9[1];
  uStack_a0 = puVar9[2];
  uStack_9c = puVar9[3];
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_a8,0);
  iVar6 = *(int *)(param_1 + 0x2c);
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  local_res10 = (undefined8 *)**(longlong **)(*(longlong *)(param_1 + 0xb8) + 0x68);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res10 + 1) = *(int *)(local_res10 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_res10,(float)iVar6 * DAT_1824c3e28);
  FUN_181251cf0(&local_res10,&local_res18,DAT_1824c3c7c);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_res18);
  if (local_res18 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res18 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_res18)(local_res18,1);
    }
  }
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0(param_1);
  }
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0xb8),local_e8,DAT_182674178,param_1);
  FUN_181296c00(param_2,local_e4);
  lVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  local_98[0] = *(float *)(lVar8 + 0x88) * DAT_1824c4334 + 0.0;
  local_98[2] = ((float)iVar5 + 0.0) - local_98[0];
  if (local_98[2] <= 0.0) {
    local_98[2] = 0.0;
  }
  local_98[1] = 0.0;
  fStack_8c = (float)iVar4;
  FUN_1812963b0(param_2,param_1 + 8,local_98,0x21,1);
  return;
}



############ FUN_ 1815caea0 size=209 ############

float * FUN_1815caea0(longlong param_1,float *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  float fVar4;
  float fVar5;
  undefined8 *local_res8;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lVar3 = (**(code **)(*(longlong *)(param_1 + -0x18) + 8))(param_1 + -0x18);
  fVar5 = *(float *)(lVar3 + 0x88) * DAT_1824c4408;
  if (*(longlong *)(param_1 + -0x10) == 0) {
    FUN_180569ff0(param_1 + -200);
  }
  uVar6 = FUN_1813f2500(*(undefined8 *)(param_1 + -0x10),&local_res8,fVar5,param_4,uVar6);
  fVar4 = (float)FUN_1812518d0(uVar6,param_1 + -0xc0);
  fVar4 = ceilf(fVar4);
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  *param_2 = (float)(int)fVar4;
  param_2[1] = fVar5;
  return param_2;
}



############ FUN_ 1815cafc0 size=80 ############

void FUN_1815cafc0(longlong param_1,undefined8 param_2)

{
  undefined1 local_res8 [4];
  undefined4 local_resc;
  
  if (*(longlong *)(param_1 + 0xb8) == 0) {
    FUN_180569ff0();
  }
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0xb8),local_res8,DAT_18267425c,param_1);
  FUN_1812a3160(param_2,local_resc);
  return;
}



############ FUN_ 181611210 size=160 ############

void FUN_181611210(longlong param_1)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  *(undefined4 *)(param_1 + 0x280) = 0xffffffff;
  if (*(code **)(*plVar1 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
  }
  else {
    (**(code **)(*plVar1 + 8))(plVar1);
  }
  *(undefined4 *)(param_1 + 0x284) = 0xff6b7982;
  return;
}



############ FUN_ 1816112c0 size=732 ############

void FUN_1816112c0(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  uint uVar4;
  longlong lVar5;
  uint *puVar6;
  undefined *puVar7;
  char *pcVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined8 *local_res20;
  undefined8 *local_a8;
  longlong local_a0;
  longlong local_98 [3];
  float fStack_80;
  float fStack_7c;
  undefined4 local_78;
  float local_74;
  float local_70;
  float local_6c;
  float local_64;
  float local_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  float fStack_50;
  float fStack_4c;
  
  local_98[1] = 0xfffffffffffffffe;
  plVar2 = (longlong *)(param_1 + 0xb0);
  if (*(code **)(*plVar2 + 8) == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
    if (*(longlong *)(param_1 + 0xb8) == 0) {
      FUN_180569ff0(param_1);
    }
    lVar5 = *(longlong *)(param_1 + 0xb8);
  }
  else {
    lVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  (**(code **)(*plVar2 + 8))(plVar2);
  local_res20 = (undefined8 *)**(longlong **)(lVar5 + 0x68);
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res20 + 1) = *(int *)(local_res20 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_res20);
  FUN_181251cf0(&local_res20,&local_a8,DAT_1824c3c7c);
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res20 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_a8);
  if (local_a8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_a8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_a8)(local_a8,1);
    }
  }
  fVar10 = (float)*(int *)(param_1 + 0x2c);
  fVar11 = (float)*(int *)(param_1 + 0x28);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x280));
  puVar7 = &DAT_1822d5d64;
  if (*(char *)(param_1 + 0xd8) != '\0') {
    puVar7 = &DAT_182218efc;
  }
  FUN_18049c4e0(&local_a0,puVar7);
  lVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar9 = *(float *)(lVar5 + 0x88) * DAT_1824c4408;
  fStack_7c = fVar10;
  if (fVar9 <= fVar10) {
    fStack_7c = fVar9;
  }
  local_64 = fStack_7c + 0.0;
  local_5c = fVar10 - fStack_7c;
  local_98[2] = 0;
  local_58 = 0;
  uStack_54 = 0;
  fStack_80 = fVar11;
  fStack_50 = fVar11;
  fStack_4c = fStack_7c;
  FUN_1812963b0(param_2,&local_a0,&local_58,9,1);
  puVar6 = (uint *)(local_a0 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x284));
  pcVar8 = "right";
  if (*(char *)(param_1 + 0xd8) != '\0') {
    pcVar8 = "side";
  }
  FUN_18049c4e0(local_98,pcVar8);
  local_78 = 0;
  local_74 = local_64;
  local_6c = local_5c;
  local_70 = fVar11;
  FUN_1812963b0(param_2,local_98,&local_78,9,1);
  puVar6 = (uint *)(local_98[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return;
}



############ FUN_ 1812a04f0 size=280 ############

float * FUN_1812a04f0(float *param_1,float *param_2)

{
  float fVar1;
  float fVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  uint uVar5;
  double dVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  
  uVar5 = DAT_1824c4f30;
  fVar1 = *param_1;
  dVar6 = (double)(fVar1 * param_1[4] - param_1[1] * param_1[3]);
  if (dVar6 != 0.0) {
    dVar6 = DAT_1824c4140 / dVar6;
    fVar2 = param_1[2];
    fVar7 = (float)((uint)param_1[3] ^ DAT_1824c4f30);
    fVar9 = (float)((uint)param_1[1] ^ DAT_1824c4f30);
    fVar8 = (float)((double)param_1[4] * dVar6);
    *param_2 = fVar8;
    fVar11 = (float)((double)fVar7 * dVar6);
    fVar10 = (float)((double)fVar1 * dVar6);
    fVar1 = param_1[5];
    fVar7 = (float)((double)fVar9 * dVar6);
    param_2[3] = fVar11;
    param_2[1] = fVar7;
    param_2[4] = fVar10;
    param_2[5] = (float)((uint)(fVar2 * fVar11) ^ uVar5) - fVar1 * fVar10;
    param_2[2] = (float)((uint)(fVar2 * fVar8) ^ uVar5) - fVar1 * fVar7;
    return param_2;
  }
  uVar4 = *(undefined8 *)(param_1 + 2);
  uVar3 = *(undefined8 *)(param_1 + 4);
  *(undefined8 *)param_2 = *(undefined8 *)param_1;
  *(undefined8 *)(param_2 + 2) = uVar4;
  *(undefined8 *)(param_2 + 4) = uVar3;
  return param_2;
}



############ FUN_ 18134b740 size=213 ############

undefined8 FUN_18134b740(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  char cVar4;
  int iVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  longlong lVar8;
  undefined8 local_res8 [2];
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  
  iVar5 = *(int *)(param_1 + 100) + -1;
  lVar8 = (longlong)iVar5;
  if (-1 < iVar5) {
    do {
      lVar1 = *(longlong *)(*(longlong *)(param_1 + 0x58) + lVar8 * 8);
      if ((*(byte *)(lVar1 + 0xa8) & 2) != 0) {
        lVar2 = lVar1;
        for (lVar3 = *(longlong *)(lVar1 + 0x18); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
          lVar2 = lVar3;
        }
        puVar6 = (undefined8 *)FUN_18051e060(local_res18,lVar2,param_2);
        uVar7 = *puVar6;
        if (lVar2 != lVar1) {
          if (*(longlong *)(lVar1 + 0x18) != lVar2) {
            puVar6 = (undefined8 *)FUN_180520050(local_res20,lVar2);
            uVar7 = *puVar6;
          }
          FUN_18051e060(local_res8,lVar1,uVar7);
          uVar7 = local_res8[0];
        }
        local_res8[0] = uVar7;
        cVar4 = FUN_181343fe0(lVar1,local_res8[0]);
        if (cVar4 != '\0') {
          uVar7 = FUN_181343e50(lVar1,local_res8[0]);
          return uVar7;
        }
      }
      lVar8 = lVar8 + -1;
    } while (-1 < lVar8);
  }
  return 0;
}



############ FUN_ 181343e50 size=197 ############

longlong * FUN_181343e50(longlong *param_1,ulonglong param_2)

{
  undefined8 uVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  longlong lVar7;
  undefined1 local_res8 [8];
  
  if ((*(byte *)(param_1 + 0x15) & 2) != 0) {
    if ((((uint)param_2 < *(uint *)(param_1 + 5)) &&
        ((uint)(param_2 >> 0x20) < *(uint *)((longlong)param_1 + 0x2c))) &&
       (cVar3 = (**(code **)(*param_1 + 0x98))(param_1,param_2,param_2 >> 0x20), cVar3 != '\0')) {
      bVar2 = true;
    }
    else {
      bVar2 = false;
    }
    if (bVar2) {
      iVar4 = *(int *)((longlong)param_1 + 0x4c) + -1;
      lVar7 = (longlong)iVar4;
      if (-1 < iVar4) {
        do {
          uVar1 = *(undefined8 *)(param_1[8] + lVar7 * 8);
          puVar5 = (undefined8 *)FUN_18051e060(local_res8,uVar1,param_2);
          plVar6 = (longlong *)FUN_181343e50(uVar1,*puVar5);
          if (plVar6 != (longlong *)0x0) {
            return plVar6;
          }
          lVar7 = lVar7 + -1;
        } while (-1 < lVar7);
      }
      return param_1;
    }
  }
  return (longlong *)0x0;
}



############ FUN_ 180520050 size=68 ############

undefined8 FUN_180520050(undefined8 param_1,longlong param_2,longlong param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined1 local_res10 [24];
  
  if (*(longlong *)(param_3 + 0x18) != param_2) {
    puVar1 = (undefined8 *)FUN_180520050(local_res10);
    param_4 = *puVar1;
  }
  FUN_18051e060(param_1,param_3,param_4);
  return param_1;
}



############ FUN_ 1804fe350 size=675 ############

void FUN_1804fe350(longlong param_1,undefined8 param_2)

{
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  char cVar4;
  undefined1 uVar5;
  DWORD DVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  uint uVar10;
  undefined8 uVar11;
  undefined1 local_res8 [8];
  undefined8 local_res10;
  undefined1 local_res18 [8];
  
  lVar2 = *(longlong *)(param_1 + 0x18);
  uVar11 = param_2;
  if (lVar2 != 0) {
    lVar3 = lVar2;
    for (lVar8 = *(longlong *)(lVar2 + 0x18); lVar8 != 0; lVar8 = *(longlong *)(lVar8 + 0x18)) {
      lVar3 = lVar8;
    }
    puVar7 = (undefined8 *)FUN_18051e060(local_res8,lVar3,param_2);
    uVar11 = *puVar7;
    if (lVar3 != lVar2) {
      if (*(longlong *)(lVar2 + 0x18) != lVar3) {
        puVar7 = (undefined8 *)FUN_180520050(local_res18,lVar3);
        uVar11 = *puVar7;
      }
      FUN_18051e060(&local_res10,lVar2,uVar11);
      uVar11 = local_res10;
    }
  }
  local_res10 = uVar11;
  DVar6 = timeGetTime();
  uVar11 = local_res10;
  if (DVar6 < DAT_1826737fc) {
    if (DVar6 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar6;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar6;
  }
  if ((*(int *)(*(longlong *)(param_1 + 0x18) + 0x178) + 100U < DVar6) &&
     (cVar4 = FUN_181343f20(*(longlong *)(param_1 + 0x18),local_res10,1), cVar4 != '\0')) {
    lVar2 = *(longlong *)(param_1 + 0x18);
    lVar3 = *(longlong *)(lVar2 + 0x150);
    if (lVar3 == 0) {
      lVar8 = 0;
    }
    else {
      lVar8 = *(longlong *)(lVar3 + 0x10);
    }
    if (((lVar8 != 0) && (*(char *)(lVar2 + 0x13c) == '\0')) &&
       ((*(longlong *)(lVar2 + 0x158) == 0 ||
        ((*(byte *)(*(longlong *)(lVar2 + 0x158) + 0xa8) >> 1 & 1) == 0)))) {
      if (lVar3 == 0) {
        uVar9 = 0;
      }
      else {
        uVar9 = *(undefined8 *)(lVar3 + 0x10);
      }
      uVar9 = __RTDynamicCast(uVar9,0,&juce::Component::RTTI_Type_Descriptor,
                              &juce::PopupMenu::HelperClasses::ItemComponent::RTTI_Type_Descriptor,0
                             );
      FUN_1804fdba0(*(undefined8 *)(param_1 + 0x18),uVar9);
    }
  }
  FUN_1804fe830(param_1,param_2,uVar11,DVar6);
  lVar2 = *(longlong *)(param_1 + 0x18);
  if (((*(int *)(lVar2 + 0x148) != 0) || (*(char *)(lVar2 + 0x139) != '\0')) &&
     ((uint)uVar11 < *(uint *)(lVar2 + 0x28))) {
    uVar10 = (uint)((ulonglong)uVar11 >> 0x20);
    if ((uVar10 < *(uint *)(lVar2 + 0x2c)) ||
       ((*(byte *)(*(longlong *)(param_1 + 0x20) + 0x28) & 0x70) != 0)) {
      iVar1 = *(int *)(lVar2 + 0x148);
      if (((iVar1 != 0) || (*(char *)(lVar2 + 0x139) != '\0')) &&
         ((0 < iVar1 && ((int)uVar10 < 0x18)))) {
        uVar5 = FUN_1804fec90(param_1,DVar6,0xffffffff);
        goto LAB_1804fe591;
      }
      if ((((iVar1 != 0) || (*(char *)(lVar2 + 0x139) != '\0')) &&
          (iVar1 < *(int *)(lVar2 + 0x144) - *(int *)(lVar2 + 0x134))) &&
         ((int)(*(uint *)(lVar2 + 0x2c) - 0x18) < local_res10._4_4_)) {
        uVar5 = FUN_1804fec90(param_1,DVar6,1);
        goto LAB_1804fe591;
      }
    }
  }
  *(undefined8 *)(param_1 + 0x30) = 0x3ff0000000000000;
  uVar5 = 0;
LAB_1804fe591:
  cVar4 = FUN_1804fc6a0(*(undefined8 *)(param_1 + 0x18));
  lVar2 = *(longlong *)(param_1 + 0x18);
  if (((*(char *)(lVar2 + 0x13b) != '\0') && (*(char *)(lVar2 + 0x138) != '\0')) && (cVar4 == '\0'))
  {
    FUN_1804fb940(lVar2,0,1);
    return;
  }
  FUN_1804fe600(param_1,uVar11,DVar6,*(undefined1 *)(param_1 + 0x40),uVar5,cVar4);
  return;
}



############ FUN_ 180506420 size=299 ############

undefined8 * FUN_180506420(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  longlong *plVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  undefined8 *puVar6;
  longlong *plVar8;
  int iVar9;
  undefined8 local_res8;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  undefined1 local_28 [16];
  undefined8 uVar7;
  
  lVar1 = param_1 + -0xb0;
  puVar6 = (undefined8 *)FUN_18133c1f0(local_res18);
  iVar5 = (int)*puVar6;
  if (lVar1 != 0) {
    lVar3 = lVar1;
    for (lVar4 = *(longlong *)(param_1 + -0x98); lVar4 != 0; lVar4 = *(longlong *)(lVar4 + 0x18)) {
      lVar3 = lVar4;
    }
    puVar6 = (undefined8 *)FUN_18051e060(local_res20,lVar3);
    uVar7 = *puVar6;
    if (lVar3 != lVar1) {
      if (*(longlong *)(param_1 + -0x98) != lVar3) {
        FUN_180520050(local_28,lVar3,*(longlong *)(param_1 + -0x98),*puVar6);
      }
      FUN_18051e060(&local_res8,lVar1);
      uVar7 = local_res8;
    }
    iVar5 = (int)uVar7;
  }
  if (-1 < iVar5) {
    iVar9 = 0;
    lVar1 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x118);
    plVar8 = *(longlong **)(lVar1 + 0xc0);
    plVar2 = plVar8 + *(int *)(lVar1 + 0xcc);
    for (; plVar8 != plVar2; plVar8 = plVar8 + 1) {
      lVar1 = *plVar8;
      if (((*(byte *)(lVar1 + 0xc) & 1) != 0) &&
         (iVar9 = iVar9 + *(int *)(lVar1 + 0x10), iVar5 < iVar9)) {
        if ((*(int *)(lVar1 + 8) != 0) &&
           (plVar2 = *(longlong **)(*(longlong *)(param_1 + 8) + 0x120), plVar2 != (longlong *)0x0))
        {
          (**(code **)(*plVar2 + 0x50))(plVar2,param_2,*(undefined4 *)(param_1 + 0x20));
          return param_2;
        }
        break;
      }
    }
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 18050b120 size=249 ############

undefined8 FUN_18050b120(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  undefined8 uVar6;
  undefined8 local_res8;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  undefined1 local_38 [8];
  undefined1 local_30 [24];
  
  lVar1 = param_1 + -0xb0;
  puVar4 = (undefined8 *)FUN_18133c1f0(local_res18);
  uVar6 = *puVar4;
  if (lVar1 != 0) {
    lVar2 = lVar1;
    for (lVar3 = *(longlong *)(param_1 + -0x98); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
      lVar2 = lVar3;
    }
    puVar4 = (undefined8 *)FUN_18051e060(local_res20,lVar2);
    uVar6 = *puVar4;
    if (lVar2 != lVar1) {
      if (*(longlong *)(param_1 + -0x98) != lVar2) {
        puVar4 = (undefined8 *)FUN_180520050(local_38,lVar2);
        uVar6 = *puVar4;
      }
      FUN_18051e060(&local_res8,lVar1,uVar6);
      uVar6 = local_res8;
    }
  }
  local_res8 = uVar6;
  if (*(longlong *)(*(longlong *)(param_1 + 0x18) + 0x108) != 0) {
    plVar5 = (longlong *)FUN_18050ab80(lVar1,local_res8._4_4_,local_30);
    if (plVar5 != (longlong *)0x0) {
      (**(code **)(*plVar5 + 0x80))(plVar5,param_2);
      return param_2;
    }
  }
  plVar5 = (longlong *)(*(longlong *)(param_1 + 0x18) + 0xb0);
  (**(code **)(*plVar5 + 8))(plVar5,param_2);
  return param_2;
}



############ FUN_ 18133e370 size=156 ############

undefined8 * FUN_18133e370(longlong param_1,undefined8 *param_2)

{
  longlong lVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined1 local_res10 [8];
  undefined1 local_res18 [8];
  
  puVar4 = (undefined8 *)FUN_18133c1f0(local_res10);
  if (param_1 == 0) {
    *param_2 = *puVar4;
    return param_2;
  }
  lVar3 = *(longlong *)(param_1 + 0x18);
  lVar2 = param_1;
  while (lVar1 = lVar3, lVar1 != 0) {
    lVar2 = lVar1;
    lVar3 = *(longlong *)(lVar1 + 0x18);
  }
  puVar4 = (undefined8 *)FUN_18051e060(local_res18,lVar2);
  if (lVar2 != param_1) {
    FUN_180520050(param_2,lVar2,param_1);
    return param_2;
  }
  *param_2 = *puVar4;
  return param_2;
}



############ FUN_ 1812f2a70 size=187 ############

void FUN_1812f2a70(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  int iVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  longlong lVar6;
  undefined8 local_res8;
  undefined1 local_res10 [8];
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  
  FUN_1812a7720();
  puVar4 = (undefined8 *)FUN_18133c1f0(local_res10);
  lVar6 = param_1 + -0xb8;
  uVar5 = *puVar4;
  if (lVar6 != 0) {
    lVar1 = lVar6;
    for (lVar2 = *(longlong *)(param_1 + -0xa0); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      lVar1 = lVar2;
    }
    puVar4 = (undefined8 *)FUN_18051e060(local_res18,lVar1,*puVar4);
    uVar5 = *puVar4;
    if (lVar1 != lVar6) {
      if (*(longlong *)(param_1 + -0xa0) != lVar1) {
        puVar4 = (undefined8 *)FUN_180520050(local_res20,lVar1,*(longlong *)(param_1 + -0xa0),uVar5)
        ;
        uVar5 = *puVar4;
      }
      FUN_18051e060(&local_res8,lVar6,uVar5);
      uVar5 = local_res8;
    }
  }
  iVar3 = FUN_1812f3b60(lVar6,uVar5);
  if (*(int *)(param_1 + 0x48) != iVar3) {
    FUN_1812f3ae0(lVar6);
    *(int *)(param_1 + 0x48) = iVar3;
    FUN_1812f3ae0(lVar6,iVar3);
  }
  return;
}



############ FUN_ 18124d930 size=398 ############

void FUN_18124d930(undefined4 *param_1,longlong param_2,longlong *param_3)

{
  int *piVar1;
  longlong *plVar2;
  longlong lVar3;
  char cVar4;
  int iVar5;
  undefined8 *puVar6;
  longlong *local_res18;
  undefined8 *local_res20;
  undefined8 local_28;
  float local_20;
  undefined4 local_1c;
  undefined4 local_18;
  float local_14;
  
  if (*param_3 != 0) {
    FUN_181290930(param_3,&local_res18,3,param_3,0xfffffffffffffffe);
    if (local_res18 != (longlong *)0x0) {
      if (*(code **)(*local_res18 + 0x28) == FUN_181291820) {
        iVar5 = (int)local_res18[1];
      }
      else {
        iVar5 = (**(code **)(*local_res18 + 0x28))();
      }
      if (1 < iVar5) {
        puVar6 = (undefined8 *)(**(code **)(*local_res18 + 0x10))(local_res18,&local_res20);
        plVar2 = (longlong *)*puVar6;
        *puVar6 = local_res18;
        local_res18 = plVar2;
        if (local_res20 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(local_res20 + 1);
          iVar5 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar5 == 1) {
            (**(code **)*local_res20)(local_res20,1);
          }
        }
      }
    }
    FUN_18124daf0(&local_res18,param_1[1]);
    FUN_181296c00(param_2,*param_1);
    local_28 = 0x3f800000;
    local_20 = (float)(int)param_1[2];
    local_1c = 0;
    local_18 = 0x3f800000;
    local_14 = (float)(int)param_1[3];
    if ((local_res18 != (longlong *)0x0) &&
       (cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))(), cVar4 == '\0')) {
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      (**(code **)(**(longlong **)(param_2 + 8) + 0x48))
                (*(longlong **)(param_2 + 8),&local_res18,&local_28);
      FUN_181295f50(param_2);
      (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
    }
    if (local_res18 != (longlong *)0x0) {
      LOCK();
      plVar2 = local_res18 + 1;
      lVar3 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar3 == 1) {
        (**(code **)*local_res18)(local_res18,1);
      }
    }
  }
  return;
}



############ FUN_ 1804f96d0 size=1153 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804f96d0(longlong param_1,longlong param_2,char param_3,char param_4)

{
  longlong lVar1;
  float fVar2;
  char cVar3;
  longlong lVar4;
  undefined8 uVar5;
  uint uVar6;
  undefined4 uVar7;
  ulonglong uVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  undefined4 local_res20;
  float local_d8;
  float fStack_d4;
  float fStack_d0;
  float fStack_cc;
  float local_c8;
  float fStack_c4;
  float fStack_c0;
  float fStack_bc;
  
  uVar6 = DAT_18262b5a4;
  for (lVar1 = *(longlong *)(param_1 + 0x18); lVar1 != 0; lVar1 = *(longlong *)(lVar1 + 0x18)) {
    lVar4 = __RTDynamicCast(lVar1,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::ResizableWindow::RTTI_Type_Descriptor,0);
    if (lVar4 != 0) {
      FUN_18134a8d0(lVar4,&local_res20,0x1005700,0);
      uVar6 = local_res20;
      break;
    }
  }
  fVar2 = DAT_1824c3db8;
  fVar9 = (float)*(int *)(param_1 + 0x28) * DAT_1824c3d8c;
  fVar10 = (float)*(int *)(param_1 + 0x2c) * DAT_1824c3d8c;
  fVar11 = DAT_1824c3ddc;
  if (param_4 != '\0') {
    fVar11 = DAT_1824c3db8;
  }
  fVar12 = fVar10;
  if (fVar9 <= fVar10) {
    fVar12 = fVar9;
  }
  fVar12 = fVar12 * fVar11;
  FUN_181296c00(param_2,uVar6);
  fVar11 = fVar12 * DAT_1824c41e0;
  local_d8 = fVar9 - fVar12;
  fStack_d4 = fVar10 - fVar12;
  fStack_d0 = fVar11;
  fStack_cc = fVar11;
  FUN_181295820(param_2,&local_d8);
  uVar8 = (ulonglong)*(uint *)(param_1 + 0x1c8);
  FUN_18049fe40(&local_c8,uVar6);
  FUN_18049fe40(&local_d8,uVar8 & 0xffffffff);
  if ((float)(double)CONCAT44((uint)((ulonglong)(double)(local_c8 - local_d8) >> 0x20) &
                              (uint)((ulonglong)DAT_1824c4f10 >> 0x20),
                              SUB84((double)(local_c8 - local_d8),0) & (uint)DAT_1824c4f10) < fVar2)
  {
    FUN_1812a2fc0(&local_res20);
    uVar8 = (ulonglong)local_res20;
  }
  uVar7 = (undefined4)uVar8;
  if ((*(byte *)(param_1 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_1 + 0x18) != 0) {
      cVar3 = FUN_18133eaa0();
      uVar7 = (undefined4)uVar8;
      if (cVar3 == '\0') goto LAB_1804f9a1a;
    }
    if (param_3 == '\0') goto LAB_1804f9a29;
    local_res20 = CONCAT13((char)(uVar8 >> 0x18),
                           CONCAT12((char)(int)(DAT_1824c4548 -
                                               (float)(int)(0xff - ((uint)(uVar8 >> 0x10) & 0xff)) *
                                               DAT_1824c3e08),
                                    CONCAT11((char)(int)(DAT_1824c4548 -
                                                        (float)(int)(0xff - ((uint)(uVar8 >> 8) &
                                                                            0xff)) * DAT_1824c3e08),
                                             (char)(int)(DAT_1824c4548 -
                                                        (float)(int)(0xff - ((uint)uVar8 & 0xff)) *
                                                        DAT_1824c3e08))));
  }
  else {
LAB_1804f9a1a:
    local_res20 = CONCAT13(0x99,(int3)uVar7);
  }
  uVar8 = (ulonglong)local_res20;
LAB_1804f9a29:
  FUN_181296c00(param_2,uVar8 & 0xffffffff);
  local_c8 = fVar9 - fVar12;
  fStack_c4 = fVar10 - fVar12;
  fStack_c0 = fVar11;
  fStack_bc = fVar11;
  FUN_1812954c0(param_2,&local_c8,fVar12 * DAT_1824c3d18);
  cVar3 = FUN_1804d6ee0(param_1);
  if (cVar3 == '\0') {
    param_1 = param_1 + 0x1d0;
  }
  else {
    param_1 = param_1 + 0x1f8;
  }
  uVar5 = FUN_18129b390(param_1,&local_c8,fVar9 - fVar12 * DAT_1824c3da8,
                        fVar10 - fVar12 * DAT_1824c3da8,fVar11 * DAT_1824c3da8,
                        fVar11 * DAT_1824c3da8,1,0x24);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if ((cVar3 == '\0') && (cVar3 = FUN_18129dff0(param_1), cVar3 == '\0')) {
    (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))(*(longlong **)(param_2 + 8),param_1,uVar5);
  }
  return;
}



############ FUN_ 1804f9ba0 size=602 ############

void FUN_1804f9ba0(longlong param_1,longlong param_2,char param_3,char param_4)

{
  int iVar1;
  char cVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong lVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined4 local_res18;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined1 local_58 [48];
  
  uVar7 = DAT_18262b5a4;
  lVar5 = *(longlong *)(param_1 + 0x18);
  do {
    if (lVar5 == 0) {
LAB_1804f9c49:
      FUN_1812a3160(param_2,uVar7);
      if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
         (((*(longlong *)(param_1 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')) &&
          (param_4 == '\0')))) {
        local_res18 = *(undefined4 *)(param_1 + 0x1c8);
      }
      else {
        local_res18 = CONCAT13(0x99,(int3)*(undefined4 *)(param_1 + 0x1c8));
      }
      FUN_181296c00(param_2,local_res18);
      if (param_3 != '\0') {
        puVar6 = (undefined4 *)
                 (**(code **)(**(longlong **)(param_2 + 8) + 0x58))
                           (*(longlong **)(param_2 + 8),local_58);
        local_68 = *puVar6;
        uStack_64 = puVar6[1];
        uStack_60 = puVar6[2];
        uStack_5c = puVar6[3];
        (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_68,0);
        FUN_181296c00(param_2,uVar7);
      }
      cVar2 = FUN_1804d6ee0(param_1);
      lVar5 = param_1 + 0x1f8;
      if (cVar2 == '\0') {
        lVar5 = param_1 + 0x1d0;
      }
      iVar1 = *(int *)(param_1 + 0x2c);
      fVar9 = (float)((uint)((float)iVar1 * DAT_1824c3d54) ^ DAT_1824c4f30);
      fVar8 = fVar9 * DAT_1824c41e0 + (float)iVar1;
      if (fVar8 <= 0.0) {
        fVar8 = 0.0;
      }
      fVar10 = fVar9 * DAT_1824c41e0 + (float)iVar1;
      if (fVar10 <= 0.0) {
        fVar10 = 0.0;
      }
      FUN_18129b390(lVar5,local_58,(float)((*(int *)(param_1 + 0x28) - iVar1) / 2) - fVar9,
                    0.0 - fVar9,fVar8,fVar10,1,0x24);
      cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
      if ((cVar2 == '\0') && (cVar2 = FUN_18129dff0(lVar5), cVar2 == '\0')) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),lVar5,local_58);
      }
      return;
    }
    lVar3 = __RTDynamicCast(lVar5,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::ResizableWindow::RTTI_Type_Descriptor,0);
    if (lVar3 != 0) {
      uVar4 = FUN_18134adf0(lVar3);
      lVar5 = __RTDynamicCast(uVar4,0,&juce::LookAndFeel::RTTI_Type_Descriptor,
                              &juce::LookAndFeel_V4::RTTI_Type_Descriptor,0);
      if (lVar5 != 0) {
        uVar7 = *(undefined4 *)(lVar5 + 0x14c);
      }
      goto LAB_1804f9c49;
    }
    lVar5 = *(longlong *)(lVar5 + 0x18);
  } while( true );
}



############ FUN_ 1805052d0 size=196 ############

void FUN_1805052d0(longlong param_1,longlong param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined1 local_res18 [8];
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0x108);
  puVar1 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(param_1 + 0x100),local_res18,0x1001c00,1);
  FUN_181296c00(param_2,*puVar1);
  _uStack_10 = CONCAT44(param_4,param_3);
  local_18 = 0;
  FUN_181296100(param_2,param_1 + 0x110,&local_18,0x24,1,0);
  return;
}



############ FUN_ 180507e00 size=1488 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180507e00(int *param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  uint uVar1;
  longlong lVar2;
  wint_t _C;
  int iVar3;
  undefined8 uVar4;
  uint *_Memory;
  undefined4 *puVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  longlong *plVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iStackX_1c;
  void *local_148;
  undefined8 local_140;
  void *local_138;
  undefined8 local_130;
  void *local_128;
  undefined8 local_120;
  double local_118;
  longlong local_110;
  undefined8 local_108;
  undefined8 uStack_100;
  ulonglong local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  ulonglong local_d8;
  undefined8 local_a8;
  undefined8 uStack_a0;
  ulonglong local_98;
  undefined8 local_68;
  undefined8 uStack_60;
  ulonglong local_58;
  
  local_f0 = 0xfffffffffffffffe;
  if (param_1[0x13] == 0) {
    _C = FUN_180493050(*(undefined8 *)(param_1 + 8),0);
    iVar3 = iswspace(_C);
    if (iVar3 != 0) {
      return;
    }
  }
  iVar3 = 0;
  local_148 = (void *)0x0;
  local_140 = 0;
  FUN_1804aebd0(&local_148,200);
  uVar4 = FUN_180506710(*(undefined8 *)(param_1 + 8),&local_110,param_1[0x13]);
  local_118 = (double)(((float)param_1[3] + (float)param_1[1]) - (float)param_1[4]) + DAT_1824c4520;
  FUN_1812510e0(&local_148,*(undefined8 *)(param_1 + 10),uVar4,param_1[5],(float)local_118._0_4_,
                DAT_1824c4620,0);
  _Memory = (uint *)(local_110 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  iStackX_1c = (int)((ulonglong)param_3 >> 0x20);
  iVar8 = local_140._4_4_;
  iVar7 = 0;
  if (*(int *)(*(longlong *)(param_1 + 8) + 0xc) + *param_1 <= iStackX_1c) {
    iVar10 = (int)param_3;
    if (iVar10 <= *param_1) {
      FUN_181296c00(param_2,param_4);
      local_68 = _DAT_1824c4780;
      uStack_60 = _UNK_1824c4788;
      local_58 = (ulonglong)DAT_1824c3ea4;
      FUN_18124efb0(&local_148,param_2,&local_68);
      FUN_1804aeb50(&local_148);
                    /* WARNING: Subroutine does not return */
      free(local_148);
    }
    local_138 = (void *)0x0;
    local_130 = 0;
    local_130._4_4_ = 0;
    iVar13 = 0;
    if (0 < local_140._4_4_) {
      FUN_1804aebd0(&local_138,local_140._4_4_ / 2 + 8 + local_140._4_4_ & 0xfffffff8);
      iVar13 = (int)local_130;
    }
    iVar11 = iVar8 + -1;
    if (-1 < iVar11) {
      puVar5 = (undefined4 *)((longlong)local_148 + 0xc);
      plVar9 = (longlong *)((longlong)local_130._4_4_ * 0x20 + (longlong)local_138);
      do {
        lVar2 = *(longlong *)(puVar5 + -3);
        *plVar9 = lVar2;
        if (lVar2 != 0) {
          LOCK();
          *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
          UNLOCK();
        }
        *(undefined4 *)(plVar9 + 1) = puVar5[-1];
        *(undefined4 *)((longlong)plVar9 + 0xc) = *puVar5;
        *(undefined4 *)(plVar9 + 2) = puVar5[1];
        *(undefined4 *)((longlong)plVar9 + 0x14) = puVar5[2];
        *(undefined4 *)(plVar9 + 3) = puVar5[3];
        *(undefined1 *)((longlong)plVar9 + 0x1c) = *(undefined1 *)(puVar5 + 4);
        puVar5 = puVar5 + 8;
        iVar11 = iVar11 + -1;
        plVar9 = plVar9 + 4;
      } while (-1 < iVar11);
      iVar8 = local_140._4_4_;
      iVar13 = (int)local_130;
    }
    iVar14 = local_130._4_4_ + iVar8;
    local_130 = CONCAT44(iVar14,(int)local_130);
    iVar6 = iVar10 - *param_1;
    iVar11 = iVar14 + iVar6;
    iVar12 = iVar7;
    if ((-1 < iVar11) && (iVar12 = iVar11, iVar14 < iVar11)) {
      iVar12 = iVar14;
    }
    iVar11 = iVar3;
    if ((-1 < iVar6) && (iVar11 = iVar6, iVar14 < iVar6)) {
      iVar11 = iVar14;
    }
    iVar12 = iVar12 - iVar11;
    if (0 < iVar12) {
      FUN_1804b0ee0(&local_138,iVar11,iVar12);
      iVar14 = iVar14 - iVar12;
      local_130 = CONCAT44(iVar14,(int)local_130);
      iVar11 = iVar7;
      if (0 < iVar14 * 2) {
        iVar11 = iVar14 * 2;
      }
      if (iVar11 < iVar13) {
        if (iVar14 < 2) {
          iVar14 = 2;
        }
        if (iVar14 < iVar13) {
          FUN_1804aebd0(&local_138,iVar14);
        }
      }
    }
    iVar13 = iVar10 - *param_1;
    if (iVar10 - *param_1 < 0) {
      iVar13 = iVar8;
    }
    if ((-1 < iVar13) && (iVar7 = iVar13, iVar8 < iVar13)) {
      iVar7 = iVar8;
    }
    if (iVar8 < 0) {
      iVar3 = iVar8;
    }
    iVar7 = iVar7 - iVar3;
    if (0 < iVar7) {
      FUN_1804b0ee0(&local_148,iVar3,iVar7);
      iVar8 = iVar8 - iVar7;
      local_140 = CONCAT44(iVar8,(int)local_140);
      iVar3 = 0;
      if (0 < iVar8 * 2) {
        iVar3 = iVar8 * 2;
      }
      if (iVar3 < (int)local_140) {
        if (iVar8 < 2) {
          iVar8 = 2;
        }
        if (iVar8 < (int)local_140) {
          FUN_1804aebd0(&local_148,iVar8);
        }
      }
    }
    FUN_181296c00(param_2,*(undefined4 *)(*(longlong *)(param_1 + 10) + 8));
    local_a8 = _DAT_1824c4780;
    uStack_a0 = _UNK_1824c4788;
    local_98 = (ulonglong)DAT_1824c3ea4;
    FUN_18124efb0(&local_138,param_2,&local_a8);
    FUN_1804aeb50(&local_138);
                    /* WARNING: Subroutine does not return */
    free(local_138);
  }
  local_128 = (void *)0x0;
  local_120 = 0;
  local_120._4_4_ = 0;
  if (0 < local_140._4_4_) {
    FUN_1804aebd0(&local_128,local_140._4_4_ + 8 + local_140._4_4_ / 2 & 0xfffffff8);
  }
  iVar10 = iVar8 + -1;
  iVar13 = local_120._4_4_;
  if (-1 < iVar10) {
    puVar5 = (undefined4 *)((longlong)local_148 + 0xc);
    plVar9 = (longlong *)((longlong)local_120._4_4_ * 0x20 + (longlong)local_128);
    do {
      lVar2 = *(longlong *)(puVar5 + -3);
      *plVar9 = lVar2;
      if (lVar2 != 0) {
        LOCK();
        *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
        UNLOCK();
      }
      *(undefined4 *)(plVar9 + 1) = puVar5[-1];
      *(undefined4 *)((longlong)plVar9 + 0xc) = *puVar5;
      *(undefined4 *)(plVar9 + 2) = puVar5[1];
      *(undefined4 *)((longlong)plVar9 + 0x14) = puVar5[2];
      *(undefined4 *)(plVar9 + 3) = puVar5[3];
      *(undefined1 *)((longlong)plVar9 + 0x1c) = *(undefined1 *)(puVar5 + 4);
      puVar5 = puVar5 + 8;
      iVar10 = iVar10 + -1;
      plVar9 = plVar9 + 4;
    } while (-1 < iVar10);
    iVar8 = local_140._4_4_;
    iVar13 = local_120._4_4_;
  }
  iVar13 = iVar13 + iVar8;
  local_120 = CONCAT44(iVar13,(int)local_120);
  iVar10 = iStackX_1c - *param_1;
  if (iStackX_1c - *param_1 < 0) {
    iVar10 = iVar13;
  }
  iVar11 = iVar7;
  if ((-1 < iVar10) && (iVar11 = iVar10, iVar13 < iVar10)) {
    iVar11 = iVar13;
  }
  if (iVar13 < 0) {
    iVar3 = iVar13;
  }
  iVar11 = iVar11 - iVar3;
  if (0 < iVar11) {
    FUN_1804b0ee0(&local_128,iVar3,iVar11);
    iVar13 = iVar13 - iVar11;
    local_120 = CONCAT44(iVar13,(int)local_120);
    iVar3 = iVar7;
    if (0 < iVar13 * 2) {
      iVar3 = iVar13 * 2;
    }
    if (iVar3 < (int)local_120) {
      if (iVar13 < 2) {
        iVar13 = 2;
      }
      if (iVar13 < (int)local_120) {
        FUN_1804aebd0(&local_128,iVar13);
      }
    }
  }
  iStackX_1c = iStackX_1c - *param_1;
  iVar3 = iVar8 + iStackX_1c;
  iVar10 = iVar7;
  if ((-1 < iVar3) && (iVar10 = iVar3, iVar8 < iVar3)) {
    iVar10 = iVar8;
  }
  iVar3 = iVar7;
  if ((-1 < iStackX_1c) && (iVar3 = iStackX_1c, iVar8 < iStackX_1c)) {
    iVar3 = iVar8;
  }
  iVar10 = iVar10 - iVar3;
  if (0 < iVar10) {
    FUN_1804b0ee0(&local_148,iVar3,iVar10);
    iVar8 = iVar8 - iVar10;
    local_140 = CONCAT44(iVar8,(int)local_140);
    if (0 < iVar8 * 2) {
      iVar7 = iVar8 * 2;
    }
    if (iVar7 < (int)local_140) {
      if (iVar8 < 2) {
        iVar8 = 2;
      }
      if (iVar8 < (int)local_140) {
        FUN_1804aebd0(&local_148);
      }
    }
  }
  FUN_181296c00(param_2,*(undefined4 *)(*(longlong *)(param_1 + 10) + 8));
  local_108 = _DAT_1824c4780;
  uStack_100 = _UNK_1824c4788;
  local_e8 = _DAT_1824c4780;
  uStack_e0 = _UNK_1824c4788;
  local_f8 = (ulonglong)DAT_1824c3ea4;
  local_d8 = (ulonglong)DAT_1824c3ea4;
  FUN_18124efb0(&local_128,param_2,&local_e8);
  FUN_1804aeb50(&local_128);
                    /* WARNING: Subroutine does not return */
  free(local_128);
}



############ FUN_ 180509300 size=318 ############

void FUN_180509300(longlong param_1,undefined8 param_2)

{
  char cVar1;
  longlong lVar2;
  undefined4 *puVar3;
  undefined1 local_res8 [8];
  undefined1 local_18 [16];
  
  lVar2 = __RTDynamicCast(*(undefined8 *)(param_1 + 0x18),0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::ToolbarItemComponent::RTTI_Type_Descriptor,0);
  if (((lVar2 != 0) && (cVar1 = FUN_18133e440(param_1), cVar1 != '\0')) &&
     (*(int *)(lVar2 + 0x1cc) == 1)) {
    puVar3 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1003250,1);
    FUN_181296c00(param_2,*puVar3);
    local_18 = ZEXT416((uint)(float)*(int *)(param_1 + 0x28)) << 0x40;
    FUN_181295950(param_2,local_18);
  }
  return;
}



############ FUN_ 180509900 size=1130 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180509900(longlong param_1,longlong param_2)

{
  float fVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  bool bVar5;
  undefined4 uVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  undefined4 *puVar10;
  longlong lVar11;
  float *pfVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  undefined1 local_res8 [8];
  undefined8 uVar23;
  undefined8 local_f8;
  undefined8 uStack_f0;
  ulonglong local_e8;
  float *local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined1 local_b8;
  
  fVar14 = DAT_1824c3d74;
  fVar1 = DAT_1824c3d18;
  uVar23 = 0xfffffffffffffffe;
  iVar2 = *(int *)(param_1 + 0x28);
  iVar3 = *(int *)(param_1 + 0x2c);
  if (*(char *)(param_1 + 0x204) != '\0') {
    puVar10 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1003210,1);
    FUN_181296c00(param_2,*puVar10);
    lVar11 = __RTDynamicCast(*(undefined8 *)(param_1 + 0x18),0,
                             &juce::Component::RTTI_Type_Descriptor,
                             &juce::Toolbar::RTTI_Type_Descriptor,0);
    if ((lVar11 == 0) || (bVar5 = true, *(char *)(lVar11 + 0xd8) == '\0')) {
      bVar5 = false;
    }
    fVar15 = DAT_1824c3cb8;
    fVar16 = fVar1;
    fVar17 = DAT_1824c3e28;
    fVar20 = fVar14;
    if (bVar5) {
      fVar15 = fVar14;
      fVar16 = DAT_1824c3e28;
      fVar17 = fVar1;
      fVar20 = DAT_1824c3cb8;
    }
    local_f8 = CONCAT44((float)iVar3 * fVar15,(float)iVar2 * fVar20);
    uStack_f0 = CONCAT44((float)iVar3 * fVar17,(float)iVar2 * fVar16);
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_f8);
  }
  if ((*(int *)(param_1 + 0x1cc) != 0) && (*(char *)(param_1 + 0x204) == '\0')) {
    puVar10 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1003210,1);
    FUN_181296c00(param_2,*puVar10);
    iVar8 = (iVar2 + -3) / 2;
    iVar4 = 2;
    if (iVar8 < 2) {
      iVar4 = iVar8;
    }
    iVar9 = (iVar3 + -3) / 2;
    iVar8 = 2;
    if (iVar9 < 2) {
      iVar8 = iVar9;
    }
    FUN_181295c90(param_2,iVar4,iVar8,iVar2 + iVar4 * -2,iVar3 + iVar8 * -2,1,uVar23);
    if (*(float *)(param_1 + 0x200) <= 0.0) {
      cVar7 = FUN_1812dafc0(param_1);
      uVar6 = DAT_1824c3f78;
      if (cVar7 == '\0') {
        fVar20 = (float)iVar2;
        fVar13 = fVar20 * fVar14;
        fVar18 = (float)iVar3;
        fVar14 = fVar18 * DAT_1824c3d8c;
        fVar15 = (float)iVar4 * DAT_1824c41e0;
        fVar17 = fVar20 * DAT_1824c3db8;
        fVar20 = fVar20 - fVar15;
        fVar16 = fVar14;
        fVar22 = fVar14;
        fVar21 = fVar14;
      }
      else {
        fVar18 = (float)iVar2;
        fVar13 = fVar18 * DAT_1824c3d8c;
        fVar21 = (float)iVar3;
        fVar14 = fVar21 * fVar14;
        fVar15 = fVar13;
        fVar16 = (float)iVar4 * DAT_1824c41e0;
        fVar17 = fVar13;
        fVar20 = fVar13;
        fVar22 = fVar21 - (float)iVar4 * DAT_1824c41e0;
        fVar21 = fVar21 * DAT_1824c3db8;
      }
      fVar19 = fVar18 * DAT_1824c3d04;
      local_d8 = (float *)0x0;
      local_d0 = 0;
      local_c8 = 0;
      uStack_c0 = 0;
      local_b8 = 1;
      local_f8 = CONCAT44(fVar14,fVar13);
      uStack_f0 = CONCAT44(fVar16,fVar15);
      FUN_18129c5c0(&local_d8,&local_f8,DAT_1824c3f78,fVar19,fVar18 * fVar1);
      local_f8 = CONCAT44(fVar21,fVar17);
      uStack_f0 = CONCAT44(fVar22,fVar20);
      FUN_18129c5c0(&local_d8,&local_f8,uVar6,fVar19,fVar18 * fVar1);
      cVar7 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
      if (cVar7 == '\0') {
        for (pfVar12 = local_d8; pfVar12 != local_d8 + local_d0._4_4_; pfVar12 = pfVar12 + 1) {
          fVar1 = *pfVar12;
          if (fVar1 == DAT_1824c4600) {
            pfVar12 = pfVar12 + 2;
          }
          else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) ||
                  (fVar1 == DAT_1824c4608)) {
            local_f8 = _DAT_1824c4780;
            uStack_f0 = _UNK_1824c4788;
            local_e8 = (ulonglong)DAT_1824c3ea4;
            (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                      (*(longlong **)(param_2 + 8),&local_d8,&local_f8);
            break;
          }
        }
      }
      local_d0 = local_d0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_d8);
    }
  }
  return;
}



############ FUN_ 1812d5ef0 size=1568 ############

void FUN_1812d5ef0(longlong *param_1,ulonglong param_2,int param_3)

{
  longlong *plVar1;
  char cVar2;
  int iVar3;
  undefined4 *puVar4;
  longlong lVar5;
  longlong lVar6;
  uint uVar7;
  ulonglong *puVar8;
  longlong *plVar9;
  int iVar10;
  undefined8 uVar11;
  int iVar12;
  longlong *plVar13;
  bool bVar14;
  bool bVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  undefined4 local_res8;
  int iStackX_c;
  ulonglong local_res20;
  undefined8 local_a0;
  float fStack_98;
  float fStack_94;
  ulonglong local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  
  if (param_1[1] == 0) {
    return;
  }
  iVar3 = FUN_1812d65b0();
  iVar10 = *(int *)((longlong)param_1 + 0x34);
  if ((iVar10 < 0) || ((*(byte *)(param_1 + 8) & 0x20) != 0)) {
    iVar10 = param_3 - iVar3;
  }
  local_a0 = param_2;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  iStackX_c = 0;
  *(undefined1 *)(param_2 + 0x10) = 0;
  local_res8 = iVar3;
  (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  (**(code **)(**(longlong **)(param_2 + 8) + 0x10))
            (*(longlong **)(param_2 + 8),CONCAT44(iStackX_c,local_res8));
  if ((*(byte *)(param_1 + 8) >> 4 & 1) == 0) {
    uVar7 = 0;
  }
  else {
    iVar10 = iVar10 + iVar3;
    uVar7 = -iVar3;
  }
  local_88 = (ulonglong)uVar7;
  uStack_80 = CONCAT44(*(undefined4 *)((longlong)param_1 + 0x2c),iVar10);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_88);
  if (cVar2 != '\0') {
    if ((*(byte *)(param_1 + 8) & 1) == 0) {
      uVar7 = FUN_1812d5a10(param_1);
      uVar7 = uVar7 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      if (uVar7 == 0) {
        uVar11 = 0x1000504;
        puVar8 = (ulonglong *)&local_res8;
      }
      else {
        uVar11 = 0x1000505;
        puVar8 = &local_res20;
      }
    }
    else {
      uVar11 = 0x1000503;
      puVar8 = (ulonglong *)&local_res8;
    }
    puVar4 = (undefined4 *)FUN_18134a8d0(param_1[1],puVar8,uVar11,0);
    FUN_1812a3160(param_2,*puVar4);
    iVar10 = *(int *)((longlong)param_1 + 0x34);
    if (iVar10 < 0) {
      iVar10 = param_3 - iVar3;
    }
    (**(code **)(*param_1 + 0x40))(param_1,param_2,iVar10,*(undefined4 *)((longlong)param_1 + 0x2c))
    ;
  }
  if (*(char *)(param_2 + 0x10) == '\0') {
    (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
  }
  else {
    *(undefined1 *)(param_2 + 0x10) = 0;
  }
  fVar18 = (float)*(int *)((longlong)param_1 + 0x2c) * DAT_1824c3d8c;
  lVar6 = param_1[1];
  iVar10 = *(int *)(lVar6 + 0x120);
  if (iVar10 < 0) {
    lVar5 = FUN_18134adf0(lVar6);
    iVar10 = (**(code **)(*(longlong *)(lVar5 + 0x28) + 0x18))((longlong *)(lVar5 + 0x28),lVar6);
  }
  iVar3 = (*(char *)(param_1[1] + 0x126) != '\0') - 1;
  lVar6 = param_1[2];
  for (lVar5 = lVar6; lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x10)) {
    iVar3 = iVar3 + 1;
  }
  if ((iVar3 < 0) || (*(char *)(param_1[1] + 0x128) == '\0')) goto LAB_1812d6387;
  fVar19 = (float)iVar10;
  fVar17 = ((float)iVar3 + DAT_1824c3d8c) * fVar19;
  if ((lVar6 == 0) || (cVar2 = FUN_1812d6520(lVar6), cVar2 == '\0')) {
    if ((param_1[2] == 0) && (cVar2 = FUN_1812d6520(param_1), cVar2 != '\0')) goto LAB_1812d618a;
  }
  else {
    cVar2 = FUN_1812d5eb0(param_1);
    fVar16 = fVar18;
    if (cVar2 == '\0') {
      fVar16 = (float)*(int *)((longlong)param_1 + 0x2c);
    }
    local_88 = (ulonglong)(uint)fVar17;
    uStack_80 = CONCAT44(fVar16,fVar17);
    (**(code **)(*param_1 + 0x58))(param_1,param_2,&local_88);
LAB_1812d618a:
    local_a0 = CONCAT44(fVar18,fVar17);
    fStack_98 = (float)(iVar10 / 2) + fVar17;
    fStack_94 = fVar18;
    if (*(code **)(*param_1 + 0x50) == FUN_1812d6ac0) {
      puVar4 = (undefined4 *)FUN_18134a8d0(param_1[1],&local_res8,0x1000501,0);
      FUN_181296c00(param_2,*puVar4);
      uStack_80 = CONCAT44(fStack_94,fStack_98);
      local_88 = local_a0;
      (**(code **)(**(longlong **)(param_2 + 8) + 200))(*(longlong **)(param_2 + 8),&local_88);
    }
    else {
      (**(code **)(*param_1 + 0x50))(param_1,param_2,&local_a0);
    }
  }
  plVar1 = (longlong *)param_1[2];
  iVar12 = iVar3;
  while ((plVar1 != (longlong *)0x0 && (iVar12 = iVar12 + -1, -1 < iVar12))) {
    fVar17 = fVar17 - fVar19;
    plVar13 = plVar1 + 2;
    if (((*plVar13 == 0) || (cVar2 = FUN_1812d6520(), cVar2 != '\0')) &&
       (lVar6 = *plVar13, lVar6 != 0)) {
      if (*(int *)(lVar6 + 0x24) < 1) {
        plVar9 = (longlong *)0x0;
      }
      else {
        plVar9 = *(longlong **)
                  (*(longlong *)(lVar6 + 0x18) + (longlong)(*(int *)(lVar6 + 0x24) + -1) * 8);
      }
      if (plVar9 != plVar1) {
        local_88 = (ulonglong)(uint)fVar17;
        uStack_80 = CONCAT44((float)*(int *)((longlong)param_1 + 0x2c),fVar17);
        (**(code **)(*plVar1 + 0x58))(plVar1,param_2,&local_88);
      }
    }
    plVar1 = (longlong *)*plVar13;
  }
  cVar2 = (**(code **)(*param_1 + 8))(param_1);
  if (cVar2 != '\0') {
    FUN_18134a8d0(param_1[1],&local_res8,0x1000500,0);
    iVar12 = local_res8;
    if (local_res8._3_1_ == '\0') {
      iVar12 = DAT_18262b5a8;
    }
    lVar6 = *(longlong *)(*(longlong *)(param_1[1] + 0xd0) + 0x180);
    if (lVar6 == 0) {
      lVar6 = 0;
    }
    else {
      lVar6 = *(longlong *)(lVar6 + 0x10);
    }
    bVar14 = param_1 == *(longlong **)(lVar6 + 0xe0);
    fStack_94 = (float)*(int *)((longlong)param_1 + 0x2c);
    local_a0 = (ulonglong)(uint)(float)(iVar3 * iVar10);
    fStack_98 = fVar19;
    if (*(code **)(*param_1 + 0x48) == FUN_1812d6b20) {
      lVar6 = FUN_18134adf0();
      uVar7 = *(uint *)((longlong)param_1 + 0x44) & 3;
      if (uVar7 == 0) {
        if ((param_1[1] == 0) || (*(char *)(param_1[1] + 0x124) == '\0')) {
          bVar15 = false;
        }
        else {
          bVar15 = true;
        }
      }
      else {
        bVar15 = uVar7 == 2;
      }
      (**(code **)(*(longlong *)(lVar6 + 0x28) + 8))
                (lVar6 + 0x28,param_2,&local_a0,iVar12,bVar15,bVar14);
    }
    else {
      (**(code **)(*param_1 + 0x48))(param_1,param_2,&local_a0,iVar12,bVar14);
    }
  }
LAB_1812d6387:
  uVar7 = *(uint *)((longlong)param_1 + 0x44) & 3;
  if (uVar7 == 0) {
    if (param_1[1] == 0) {
      return;
    }
    if (*(char *)(param_1[1] + 0x124) == '\0') {
      return;
    }
  }
  else if (uVar7 != 2) {
    return;
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x58))(*(longlong **)(param_2 + 8),&local_a0);
  plVar13 = (longlong *)param_1[3];
  plVar1 = plVar13 + *(int *)((longlong)param_1 + 0x24);
  if (plVar13 != plVar1) {
    iVar10 = local_a0._4_4_;
    do {
      lVar6 = *plVar13;
      iVar3 = *(int *)(lVar6 + 0x28) - (int)param_1[5];
      if ((int)fStack_94 + iVar10 <= iVar3) {
        return;
      }
      if (iVar10 <= *(int *)(lVar6 + 0x30) + iVar3) {
        local_res20 = param_2;
        if (*(char *)(param_2 + 0x10) != '\0') {
          *(undefined1 *)(param_2 + 0x10) = 0;
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        }
        local_res8 = 0;
        *(undefined1 *)(param_2 + 0x10) = 0;
        iStackX_c = iVar3;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        (**(code **)(**(longlong **)(param_2 + 8) + 0x10))
                  (*(longlong **)(param_2 + 8),CONCAT44(iStackX_c,local_res8));
        local_88 = 0;
        uStack_80 = CONCAT44(*(undefined4 *)(lVar6 + 0x30),param_3);
        local_78 = 0;
        uStack_70 = uStack_80;
        if (*(char *)(param_2 + 0x10) != '\0') {
          *(undefined1 *)(param_2 + 0x10) = 0;
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        }
        cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x28))
                          (*(longlong **)(param_2 + 8),&local_78);
        if (cVar2 != '\0') {
          FUN_1812d5ef0(lVar6,param_2,param_3);
        }
        if (*(char *)(param_2 + 0x10) == '\0') {
          (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
        }
        else {
          *(undefined1 *)(param_2 + 0x10) = 0;
        }
        iVar10 = local_a0._4_4_;
      }
      plVar13 = plVar13 + 1;
    } while (plVar13 != plVar1);
  }
  return;
}



############ FUN_ 18050bb70 size=407 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18050bb70(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 *puVar1;
  float fVar2;
  float fVar3;
  undefined1 local_res8 [8];
  undefined8 local_78;
  float fStack_70;
  float fStack_6c;
  undefined8 local_68;
  undefined8 uStack_60;
  ulonglong local_58;
  void *local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined1 local_30;
  
  local_50 = (void *)0x0;
  local_48 = 0;
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 1;
  fVar2 = (float)*(int *)(param_1 + 0x2c);
  fStack_70 = fVar2 - DAT_1824c4334;
  local_78 = 0x4000000040000000;
  fStack_6c = fStack_70;
  FUN_18129d1e0(&local_50,&local_78,param_3,param_4,0xfffffffffffffffe);
  fVar3 = fVar2 * DAT_1824c3d8c;
  fVar2 = fVar2 - DAT_1824c41e0;
  if (local_48._4_4_ == 0) {
    local_40 = CONCAT44(fVar2,fVar2);
    uStack_38 = (ulonglong)(uint)fVar3;
  }
  else {
    if ((float)local_40 <= fVar2) {
      if (local_40._4_4_ < fVar2) {
        local_40 = CONCAT44(fVar2,(float)local_40);
      }
    }
    else {
      local_40 = CONCAT44(local_40._4_4_,fVar2);
    }
    if (fVar3 < (float)uStack_38) {
      uStack_38 = CONCAT44(uStack_38._4_4_,fVar3);
      goto LAB_18050bc6b;
    }
    if (fVar3 <= uStack_38._4_4_) goto LAB_18050bc6b;
  }
  uStack_38 = CONCAT44(fVar3,(float)uStack_38);
LAB_18050bc6b:
  FUN_1804b02a0(&local_50,&DAT_1821df344,fVar2,fVar3);
  FUN_18129ddd0(&local_50);
  puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1000502,1);
  FUN_181296c00(param_2,*puVar1);
  local_68 = _DAT_1824c4780;
  uStack_60 = _UNK_1824c4788;
  local_58 = (ulonglong)DAT_1824c3ea4;
  local_78 = 0x40000000;
  fStack_70 = 0.0;
  FUN_181295d20(param_2,&local_50,&local_78,&local_68);
  local_48 = local_48 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 18050bd70 size=161 ############

void FUN_18050bd70(longlong param_1,undefined8 param_2)

{
  undefined4 *puVar1;
  undefined1 local_res8 [8];
  undefined4 local_18;
  undefined4 uStack_14;
  float fStack_10;
  float fStack_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1000502,1);
  FUN_181296c00(param_2,*puVar1);
  fStack_10 = (float)*(int *)(param_1 + 0x28) - DAT_1824c41e0;
  fStack_c = (float)*(int *)(param_1 + 0x2c) - DAT_1824c41e0;
  local_18 = 0x3f800000;
  uStack_14 = 0x3f800000;
  FUN_181295190(param_2,&local_18,DAT_1824c42d0);
  return;
}



############ FUN_ 18124ce30 size=1836 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18124ce30(uint *param_1,longlong param_2,int *param_3)

{
  undefined8 *puVar1;
  double *pdVar2;
  undefined1 auVar3 [12];
  undefined1 auVar4 [12];
  double dVar5;
  double dVar6;
  undefined1 uVar7;
  int iVar8;
  float fVar9;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar10 [16];
  undefined1 auVar11 [16];
  double dVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  undefined4 local_res8;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined1 local_118;
  void *local_110;
  undefined8 local_108;
  float local_100;
  float local_fc;
  float local_f8;
  float local_f4;
  float local_f0;
  undefined4 uStack_e4;
  uint uStack_e0;
  undefined4 uStack_dc;
  undefined8 local_d8;
  
  dVar5 = DAT_1824c4140;
  local_d8 = 0xfffffffffffffffe;
  local_res8 = *param_1 & 0xffffff;
  local_128 = 0;
  uStack_120 = 0;
  local_118 = 0;
  local_110 = (void *)0x0;
  local_108 = 0;
  uStack_e0 = local_res8;
  uStack_130._0_4_ = *param_1;
  FUN_18049ba20(&local_110,8);
  iVar8 = local_108._4_4_ + 1;
  auVar3._4_8_ = extraout_XMM0_Qb;
  auVar3._0_4_ = local_138._4_4_;
  auVar10._0_8_ = auVar3._0_8_ << 0x20;
  auVar10._8_4_ = (uint)uStack_130;
  auVar10._12_4_ = uStack_130._4_4_;
  uStack_130 = auVar10._8_8_;
  local_138 = 0;
  puVar1 = (undefined8 *)((longlong)local_110 + (longlong)local_108._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = uStack_130;
  local_108 = CONCAT44(local_108._4_4_ + 2,(undefined4)local_108);
  auVar4._4_8_ = uStack_130;
  auVar4._0_4_ = uStack_e4;
  auVar11._0_8_ = auVar4._0_8_ << 0x20;
  auVar11._8_4_ = uStack_e0;
  auVar11._12_4_ = uStack_dc;
  pdVar2 = (double *)((longlong)local_110 + (longlong)iVar8 * 0x10);
  *pdVar2 = dVar5;
  pdVar2[1] = auVar11._8_8_;
  dVar6 = DAT_1824c4520;
  fVar15 = DAT_1824c3ea4;
  fVar13 = DAT_1824c3cb8;
  fVar14 = DAT_1824c3c94;
  do {
    dVar12 = (double)((float)(*param_1 >> 0x18) * fVar14 * fVar14) + dVar6;
    uVar7 = 0xff;
    if (SUB84(dVar12,0) < 0xff) {
      uVar7 = SUB81(dVar12,0);
    }
    local_res8 = CONCAT13(uVar7,(int3)*param_1);
    FUN_1812a1940(&local_128,dVar5 - (double)fVar14,local_res8);
    fVar14 = fVar14 + fVar13;
  } while (fVar14 < fVar15);
  fVar13 = (float)(int)param_1[1] * DAT_1824c3d8c;
  fVar15 = (float)(int)param_1[1] + fVar13;
  fVar13 = (float)((uint)fVar13 ^ DAT_1824c4f30);
  local_f4 = fVar13 * DAT_1824c41e0 + (float)param_3[2];
  if (local_f4 <= 0.0) {
    local_f4 = 0.0;
  }
  local_f0 = fVar13 * DAT_1824c41e0 + (float)param_3[3];
  if (local_f0 <= 0.0) {
    local_f0 = 0.0;
  }
  local_f8 = ((float)param_3[1] - fVar13) + (float)(int)param_1[3];
  local_fc = (float)(int)param_1[2] + ((float)*param_3 - fVar13);
  fVar13 = local_f4 + fVar15 * DAT_1824c41e0;
  if (fVar13 <= 0.0) {
    fVar13 = 0.0;
  }
  local_100 = local_f0 + fVar15 * DAT_1824c41e0;
  if (local_100 <= 0.0) {
    local_100 = 0.0;
  }
  fVar20 = local_f8 - fVar15;
  fVar24 = local_fc - fVar15;
  fVar14 = local_100;
  if (fVar15 <= local_100) {
    fVar14 = fVar15;
  }
  fVar9 = fVar14 + fVar20;
  local_100 = local_100 - fVar14;
  fVar19 = local_100;
  if (fVar15 <= local_100) {
    fVar19 = fVar15;
  }
  fVar22 = (fVar9 + local_100) - fVar19;
  local_100 = local_100 - fVar19;
  fVar23 = fVar13;
  if (fVar15 <= fVar13) {
    fVar23 = fVar15;
  }
  fVar16 = fVar23 + fVar24;
  fVar13 = fVar13 - fVar23;
  local_128 = CONCAT44(fVar9,fVar16);
  fVar21 = fVar23 * 0.0 + fVar24;
  uStack_120 = CONCAT44(fVar9,fVar21);
  local_118 = 1;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar20,fVar24);
  uStack_130 = CONCAT44(fVar14,fVar23);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar18 = fVar13;
  if (fVar15 <= fVar13) {
    fVar18 = fVar15;
  }
  fVar17 = (fVar16 + fVar13) - fVar18;
  local_128 = CONCAT44(fVar9,fVar18 * 0.0 + fVar17);
  uStack_120 = CONCAT44(fVar9,fVar17 + fVar18);
  local_118 = 1;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar20,fVar17);
  uStack_130 = CONCAT44(fVar14,fVar18);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar17 = (fVar13 - fVar18) * 0.0 + fVar16;
  local_128 = CONCAT44(fVar9,fVar17);
  uStack_120 = CONCAT44(fVar14 * 0.0 + fVar20,fVar17);
  local_118 = 0;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar20,fVar16);
  uStack_130 = CONCAT44(fVar14,fVar13 - fVar18);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar20 = fVar19 * 0.0 + fVar22;
  local_128 = CONCAT44(fVar20,fVar16);
  uStack_120 = CONCAT44(fVar20,fVar21);
  local_118 = 1;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar22,fVar24);
  uStack_130 = CONCAT44(fVar19,fVar23);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar14 = fVar13;
  if (fVar15 <= fVar13) {
    fVar14 = fVar15;
  }
  fVar18 = (fVar16 + fVar13) - fVar14;
  local_128 = CONCAT44(fVar20,fVar14 * 0.0 + fVar18);
  uStack_120 = CONCAT44(fVar20,fVar18 + fVar14);
  local_118 = 1;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar22,fVar18);
  uStack_130 = CONCAT44(fVar19,fVar14);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar18 = (fVar13 - fVar14) * 0.0 + fVar16;
  local_128 = CONCAT44(fVar20,fVar18);
  uStack_120 = CONCAT44(fVar22 + fVar19,fVar18);
  local_118 = 0;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar22,fVar16);
  uStack_130 = CONCAT44(fVar19,fVar13 - fVar14);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar20 = local_100;
  fVar19 = local_100 * 0.0 + fVar9;
  local_128 = CONCAT44(fVar19,fVar16);
  uStack_120 = CONCAT44(fVar19,fVar21);
  local_118 = 0;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar9,fVar24);
  uStack_130 = CONCAT44(fVar20,fVar23);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  fVar14 = fVar13;
  if (fVar15 <= fVar13) {
    fVar14 = fVar15;
  }
  fVar13 = (fVar16 + fVar13) - fVar14;
  local_128 = CONCAT44(fVar19,fVar14 * 0.0 + fVar13);
  uStack_120 = CONCAT44(fVar19,fVar13 + fVar14);
  local_118 = 0;
  FUN_181296a90(param_2,&local_128);
  local_138 = CONCAT44(fVar9,fVar13);
  uStack_130 = CONCAT44(fVar20,fVar14);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
  FUN_181296c00(param_2,*param_1);
  local_138 = CONCAT44(local_f8,local_fc);
  uStack_130 = CONCAT44(local_f0,local_f4);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_138);
                    /* WARNING: Could not recover jumptable at 0x00018124d555. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_110);
  return;
}



############ FUN_ 1805767b0 size=461 ############

void FUN_1805767b0(longlong param_1,longlong param_2)

{
  int iVar1;
  float fVar2;
  int iVar3;
  int iVar4;
  float local_28;
  float local_24;
  float local_20;
  float local_1c;
  
  FUN_1812a3160(param_2,*(undefined4 *)(param_1 + 0xb4));
  if (*(int *)(param_1 + 0xb8) != DAT_1826742e8) {
    iVar3 = *(int *)(param_1 + 0x28) + -2;
    iVar4 = *(int *)(param_1 + 0x2c) + -2;
    iVar1 = 0;
    if (0 < iVar3) {
      iVar1 = iVar3;
    }
    iVar3 = 0;
    if (0 < iVar4) {
      iVar3 = iVar4;
    }
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xb8));
    fVar2 = DAT_1824c4680;
    if (((*(byte *)(param_1 + 0xb0) & 1) != 0) && (DAT_1824c4680 < (float)(iVar1 + 2))) {
      local_20 = (float)(iVar1 + 2) - DAT_1824c4680;
      local_28 = -1.0;
      local_24 = 0.0;
      local_1c = 1.0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_28);
    }
    if (((*(byte *)(param_1 + 0xb0) & 2) != 0) && (fVar2 < (float)(iVar3 + 2))) {
      local_1c = (float)(iVar3 + 2) - fVar2;
      local_28 = (float)(iVar1 + 1);
      local_24 = -1.0;
      local_20 = 1.0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_28);
    }
    if (((*(byte *)(param_1 + 0xb0) & 4) != 0) && (fVar2 < (float)(iVar1 + 2))) {
      local_20 = (float)(iVar1 + 2) - fVar2;
      local_24 = (float)(iVar3 + 1);
      local_28 = -1.0;
      local_1c = 1.0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_28);
    }
    if (((*(byte *)(param_1 + 0xb0) & 8) != 0) && (fVar2 < (float)(iVar3 + 2))) {
      local_1c = (float)(iVar3 + 2) - fVar2;
      local_28 = 0.0;
      local_24 = -1.0;
      local_20 = 1.0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_28);
    }
  }
  return;
}



############ FUN_ 180576de0 size=231 ############

void FUN_180576de0(longlong param_1,longlong param_2)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  undefined4 local_res8;
  float local_38;
  float fStack_34;
  float fStack_30;
  undefined4 uStack_2c;
  
  iVar1 = *(int *)(param_1 + 0x28);
  iVar2 = *(int *)(param_1 + 0x2c);
  local_res8 = CONCAT13(0x19,(int3)DAT_18262bb5c);
  FUN_181296c00(param_2,local_res8);
  lVar3 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  fStack_30 = (float)iVar1 - *(float *)(lVar3 + 0x88) * DAT_1824c4424;
  fStack_34 = ((float)iVar2 - DAT_1824c3ea4) * DAT_1824c3d8c + 0.0;
  local_38 = ((float)iVar1 - fStack_30) * DAT_1824c3d8c + 0.0;
  uStack_2c = 0x3f800000;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_38);
  return;
}



############ FUN_ 18058c900 size=597 ############

void .?AVLines@?$FilterGraphGrid@M@@::vtbl___AVLines___FilterGraphGrid_M__
               (longlong param_1,longlong param_2)

{
  float fVar1;
  double dVar2;
  longlong lVar3;
  undefined1 uVar4;
  int iVar5;
  uint uVar6;
  ulonglong uVar8;
  ulonglong uVar9;
  bool bVar10;
  float fVar11;
  double dVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  undefined4 local_res8;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  ulonglong uVar7;
  
  fVar1 = DAT_1824c3ea4;
  uVar8 = 0;
  lVar3 = *(longlong *)(param_1 + 0xb0);
  fVar16 = (float)*(int *)(param_1 + 0x28);
  fVar15 = (float)*(int *)(param_1 + 0x2c);
  if (0 < *(int *)(lVar3 + 0xdc)) {
    bVar10 = *(int *)(lVar3 + 0xdc) != 0;
    uVar7 = uVar8;
    uVar9 = uVar8;
    do {
      if (bVar10) {
        fVar13 = *(float *)(uVar9 + *(longlong *)(lVar3 + 0xd0));
      }
      else {
        fVar13 = 0.0;
      }
      FUN_181296c00(param_2,*(undefined4 *)(lVar3 + 200));
      if (0.0 < fVar15) {
        local_94 = 0.0;
        local_90 = 1.0;
        local_98 = (float)(int)(fVar13 * fVar16);
        local_8c = fVar15 - 0.0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_98);
      }
      lVar3 = *(longlong *)(param_1 + 0xb0);
      uVar6 = (int)uVar7 + 1;
      uVar7 = (ulonglong)uVar6;
      uVar9 = uVar9 + 4;
      bVar10 = uVar6 < *(uint *)(lVar3 + 0xdc);
    } while ((int)uVar6 < (int)*(uint *)(lVar3 + 0xdc));
  }
  dVar2 = DAT_1824c4520;
  fVar13 = DAT_1824c41e0;
  lVar3 = *(longlong *)(param_1 + 0xb0);
  iVar5 = *(int *)(lVar3 + 0xec);
  uVar7 = uVar8;
  if (0 < iVar5) {
    do {
      uVar6 = (uint)uVar7;
      if (uVar6 < *(uint *)(lVar3 + 0xec)) {
        fVar14 = *(float *)(uVar8 + *(longlong *)(lVar3 + 0xe0));
      }
      else {
        fVar14 = 0.0;
      }
      fVar11 = fVar1;
      if (uVar6 == iVar5 / 2) {
        fVar11 = fVar13;
      }
      dVar12 = (double)((float)(*(uint *)(lVar3 + 200) >> 0x18) * fVar11) + dVar2;
      uVar4 = 0xff;
      if (SUB84(dVar12,0) < 0xff) {
        uVar4 = SUB81(dVar12,0);
      }
      local_res8 = CONCAT13(uVar4,(int3)*(uint *)(lVar3 + 200));
      FUN_181296c00(param_2,local_res8);
      if (0.0 < fVar16) {
        local_98 = 0.0;
        local_8c = 1.0;
        local_90 = fVar16 - 0.0;
        local_94 = (float)(int)(fVar14 * fVar15);
        (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_98);
      }
      lVar3 = *(longlong *)(param_1 + 0xb0);
      uVar8 = uVar8 + 4;
      iVar5 = *(int *)(lVar3 + 0xec);
      uVar7 = (ulonglong)(uVar6 + 1);
    } while ((int)(uVar6 + 1) < iVar5);
  }
  return;
}



############ FUN_ 18124c910 size=757 ############

void FUN_18124c910(longlong param_1,longlong *param_2,longlong param_3,float param_4,float param_5)

{
  float fVar1;
  char cVar2;
  void *_Memory;
  longlong lVar3;
  undefined8 *puVar4;
  float *pfVar5;
  undefined1 uVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  ulonglong uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  longlong local_res8;
  undefined **local_res10;
  double local_res18;
  undefined4 local_res20;
  undefined8 local_d8;
  undefined4 local_d0;
  undefined4 local_cc;
  undefined8 local_c8;
  float local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  float local_b4;
  undefined8 local_b0;
  float local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  float local_9c;
  double local_98;
  undefined8 local_90;
  undefined8 uStack_88;
  void *local_80;
  int local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  
  local_70 = 0xfffffffffffffffe;
  lVar3 = *param_2;
  uVar11 = 0;
  uVar12 = 0;
  uVar9 = uVar11;
  if (lVar3 != 0) {
    uVar12 = *(undefined4 *)(lVar3 + 0x18);
    uVar11 = *(undefined4 *)(lVar3 + 0x14);
    uVar9 = *(undefined4 *)(lVar3 + 0x10);
  }
  local_res10 = juce::NativeImageType::vftable;
  (*(code *)PTR_FUN_1824988f0)(&local_res10,&local_res8,uVar9,uVar11,uVar12,1);
  local_res18 = (double)(param_4 * *(float *)(param_1 + 8) * DAT_1824c41e0) + DAT_1824c4520;
  iVar7 = SUB84(local_res18,0);
  _Memory = malloc((longlong)(iVar7 * iVar7) << 2);
  iVar8 = iVar7 * iVar7 + -1;
  lVar3 = (longlong)iVar8;
  if (-1 < iVar8) {
    do {
      *(undefined4 *)((longlong)_Memory + lVar3 * 4) = 0;
      lVar3 = lVar3 + -1;
    } while (-1 < lVar3);
  }
  local_80 = _Memory;
  local_78 = iVar7;
  FUN_18128f3a0(&local_80,*(undefined4 *)(param_1 + 8));
  fVar1 = *(float *)(param_1 + 8);
  lVar3 = (longlong)iVar8;
  if (-1 < iVar8) {
    if (3 < (longlong)(lVar3 + 1U)) {
      pfVar5 = (float *)((longlong)_Memory + (lVar3 + -2) * 4);
      uVar10 = lVar3 + 1U >> 2;
      lVar3 = lVar3 + uVar10 * -4;
      do {
        pfVar5[-1] = pfVar5[-1] * fVar1;
        *pfVar5 = *pfVar5 * fVar1;
        pfVar5[1] = pfVar5[1] * fVar1;
        pfVar5[2] = pfVar5[2] * fVar1;
        pfVar5 = pfVar5 + -4;
        uVar10 = uVar10 - 1;
      } while (uVar10 != 0);
    }
    for (; -1 < lVar3; lVar3 = lVar3 + -1) {
      *(float *)((longlong)_Memory + lVar3 * 4) = fVar1 * *(float *)((longlong)_Memory + lVar3 * 4);
    }
  }
  lVar3 = *param_2;
  if (lVar3 == 0) {
    local_90 = 0;
    uStack_88 = 0;
    puVar4 = &local_90;
  }
  else {
    local_d8 = 0;
    local_d0 = *(undefined4 *)(lVar3 + 0x14);
    local_cc = *(undefined4 *)(lVar3 + 0x18);
    puVar4 = &local_d8;
  }
  local_68 = *puVar4;
  uStack_60 = puVar4[1];
  FUN_18128e790(&local_80,&local_res8,param_2,&local_68);
  local_98 = (double)((float)(*(uint *)(param_1 + 0xc) >> 0x18) * param_5) + DAT_1824c4520;
  uVar6 = 0xff;
  if (SUB84(local_98,0) < 0xff) {
    uVar6 = SUB81(local_98,0);
  }
  local_res20 = CONCAT13(uVar6,(int3)*(uint *)(param_1 + 0xc));
  FUN_181296c00(param_3,local_res20);
  local_c8 = 0x3f800000;
  local_c0 = (float)*(int *)(param_1 + 0x10);
  local_bc = 0;
  local_b8 = 0x3f800000;
  local_b4 = (float)*(int *)(param_1 + 0x14);
  if ((local_res8 != 0) &&
     (cVar2 = (**(code **)(**(longlong **)(param_3 + 8) + 0x60))(), cVar2 == '\0')) {
    (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
    (**(code **)(**(longlong **)(param_3 + 8) + 0x48))
              (*(longlong **)(param_3 + 8),&local_res8,&local_c8);
    FUN_181295f50(param_3);
    (**(code **)(**(longlong **)(param_3 + 8) + 0x70))();
  }
  if (*(char *)(param_3 + 0x10) != '\0') {
    *(undefined1 *)(param_3 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_3 + 8) + 0x90))(*(longlong **)(param_3 + 8),param_5);
  local_b0 = 0x3f800000;
  local_a8 = (float)*(int *)(param_1 + 0x10);
  local_a4 = 0;
  local_a0 = 0x3f800000;
  local_9c = (float)*(int *)(param_1 + 0x14);
  if ((*param_2 != 0) &&
     (cVar2 = (**(code **)(**(longlong **)(param_3 + 8) + 0x60))(), cVar2 == '\0')) {
    (**(code **)(**(longlong **)(param_3 + 8) + 0xc0))
              (*(longlong **)(param_3 + 8),param_2,&local_b0);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18124d610 size=780 ############

void FUN_18124d610(undefined4 *param_1,longlong param_2,longlong param_3)

{
  undefined8 uVar1;
  int iVar2;
  longlong *plVar3;
  char cVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined8 *puVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int local_res8;
  undefined4 uStackX_c;
  undefined **local_res10;
  undefined8 local_res18;
  int local_res20;
  longlong *local_d8;
  longlong *local_d0;
  undefined1 local_c8;
  int local_c0;
  int local_bc;
  int local_b8;
  int local_b4;
  float local_b0;
  float local_ac;
  float local_a8;
  float local_a4;
  undefined8 local_a0;
  float local_98;
  undefined4 local_94;
  undefined4 local_90;
  float local_8c;
  undefined8 local_88;
  float local_80;
  undefined4 local_7c;
  undefined4 local_78;
  float local_74;
  undefined8 local_70;
  int local_68;
  undefined1 local_58 [24];
  
  local_70 = 0xfffffffffffffffe;
  (**(code **)(**(longlong **)(param_2 + 8) + 0x58))(*(longlong **)(param_2 + 8),&local_c0);
  iVar11 = param_1[1] + 1;
  local_b8 = local_b8 + iVar11 * 2;
  iVar7 = 0;
  if (0 < local_b8) {
    iVar7 = local_b8;
  }
  local_b4 = local_b4 + iVar11 * 2;
  iVar13 = 0;
  if (0 < local_b4) {
    iVar13 = local_b4;
  }
  local_res10 = (undefined **)CONCAT44(local_res10._4_4_,iVar13);
  local_res8 = local_bc - iVar11;
  iVar11 = local_c0 - iVar11;
  local_ac = *(float *)(param_3 + 0x18);
  local_a4 = *(float *)(param_3 + 0x1c) - local_ac;
  local_b0 = *(float *)(param_3 + 0x10);
  local_a8 = *(float *)(param_3 + 0x14) - local_b0;
  uVar1 = *(undefined8 *)(param_1 + 2);
  local_res18 = uVar1;
  local_68 = iVar11;
  piVar5 = (int *)FUN_1804ab070(&local_b0,local_58);
  iVar9 = param_1[1] + 1;
  iVar13 = iVar9 * 2 + piVar5[2];
  iVar10 = 0;
  if (0 < iVar13) {
    iVar10 = iVar13;
  }
  iVar13 = iVar9 * 2 + piVar5[3];
  iVar6 = 0;
  if (0 < iVar13) {
    iVar6 = iVar13;
  }
  local_res18 = CONCAT44(local_res18._4_4_,iVar6);
  iVar13 = (local_res18._4_4_ + piVar5[1]) - iVar9;
  iVar9 = (*piVar5 + (int)uVar1) - iVar9;
  local_res20 = iVar9;
  if (iVar9 < iVar11) {
    local_res20 = iVar11;
  }
  iVar2 = iVar13;
  if (iVar13 < local_res8) {
    iVar2 = local_res8;
  }
  iVar12 = iVar9 + iVar10;
  if (iVar11 + iVar7 < iVar9 + iVar10) {
    iVar12 = iVar11 + iVar7;
  }
  iVar12 = iVar12 - local_res20;
  if (-1 < iVar12) {
    iVar7 = iVar6 + iVar13;
    if ((int)local_res10 + local_res8 < iVar6 + iVar13) {
      iVar7 = (int)local_res10 + local_res8;
    }
    iVar7 = iVar7 - iVar2;
    if (((-1 < iVar7) && (2 < iVar12)) && (2 < iVar7)) {
      local_res10 = juce::NativeImageType::vftable;
      (*(code *)PTR_FUN_1824988f0)(&local_res10,&local_res8,3,iVar12,iVar7,1);
      local_res10 = juce::ImageType::vftable;
      plVar3 = (longlong *)CONCAT44(uStackX_c,local_res8);
      if (plVar3 == (longlong *)0x0) {
        local_d8 = (longlong *)0x0;
      }
      else {
        (**(code **)(*plVar3 + 8))(plVar3,&local_d8);
      }
      local_c8 = 0;
      local_d0 = local_d8;
      FUN_181296c00(&local_d8,DAT_18262b598);
      iVar7 = local_res20;
      local_8c = (float)(param_1[3] - iVar2);
      local_98 = (float)(param_1[2] - local_res20);
      local_a0 = 0x3f800000;
      local_94 = 0;
      local_90 = 0x3f800000;
      cVar4 = (**(code **)(*local_d0 + 0x60))();
      if (cVar4 == '\0') {
        cVar4 = FUN_18129dff0(param_3);
        if (cVar4 == '\0') {
          (**(code **)(*local_d0 + 0xb8))(local_d0,param_3,&local_a0);
        }
      }
      if (local_d8 != (longlong *)0x0) {
        (**(code **)*local_d8)(local_d8,1);
      }
      FUN_18124daf0(&local_res8,param_1[1]);
      FUN_181296c00(param_2,*param_1);
      local_88 = 0x3f800000;
      local_80 = (float)iVar7;
      local_7c = 0;
      local_78 = 0x3f800000;
      local_74 = (float)iVar2;
      puVar8 = (undefined8 *)0x0;
      if (CONCAT44(uStackX_c,local_res8) != 0) {
        cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
        if (cVar4 == '\0') {
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
          (**(code **)(**(longlong **)(param_2 + 8) + 0x48))
                    (*(longlong **)(param_2 + 8),&local_res8,&local_88);
          FUN_181295f50(param_2);
          (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
        }
        puVar8 = (undefined8 *)CONCAT44(uStackX_c,local_res8);
      }
      if (puVar8 != (undefined8 *)0x0) {
        LOCK();
        piVar5 = (int *)(puVar8 + 1);
        iVar7 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar7 == 1) {
          (**(code **)*puVar8)(puVar8,1);
        }
      }
    }
  }
  return;
}



############ FUN_ 1812c8e40 size=470 ############

void FUN_1812c8e40(longlong *param_1,longlong param_2)

{
  longlong lVar1;
  undefined4 *puVar2;
  float local_res8;
  float local_resc;
  undefined8 *puVar3;
  undefined4 uVar4;
  undefined8 local_18;
  undefined8 uStack_10;
  
  lVar1 = FUN_18134adf0();
  puVar3 = &local_18;
  local_18 = CONCAT44((float)*(int *)((longlong)param_1 + 0xb4),(float)(int)param_1[0x16]);
  uStack_10 = CONCAT44((float)*(int *)((longlong)param_1 + 0xbc),(float)(int)param_1[0x17]);
  local_res8 = (float)(int)param_1[0x18];
  local_resc = (float)*(int *)((longlong)param_1 + 0xc4);
  (**(code **)(*(longlong *)(lVar1 + 0x30) + 8))
            ((longlong *)(lVar1 + 0x30),param_2,param_1,&local_res8,puVar3);
  uVar4 = (undefined4)((ulonglong)puVar3 >> 0x20);
  local_18 = param_1[0x16];
  uStack_10 = param_1[0x17];
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_18);
  lVar1 = param_1[0x16];
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x10))(*(longlong **)(param_2 + 8),lVar1);
  lVar1 = param_1[0x17];
  if (*(code **)(*param_1 + 0x160) == FUN_1805052d0) {
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0x21);
    puVar2 = (undefined4 *)FUN_18134a8d0(param_1[0x20],&local_res8,0x1001c00,1);
    FUN_181296c00(param_2,*puVar2);
    local_18 = 0;
    uStack_10 = lVar1;
    FUN_181296100(param_2,param_1 + 0x22,&local_18,0x24,CONCAT44(uVar4,1),0);
  }
  else {
    (**(code **)(*param_1 + 0x160))
              (param_1,param_2,(int)param_1[0x17],*(undefined4 *)((longlong)param_1 + 0xbc));
  }
  return;
}



############ FUN_ 1812d4bb0 size=692 ############

void FUN_1812d4bb0(longlong param_1,longlong param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  longlong lVar5;
  undefined4 *puVar6;
  undefined8 uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  longlong lVar11;
  int iVar12;
  undefined1 local_res8 [8];
  undefined8 *local_res10;
  undefined4 uVar13;
  undefined4 local_78;
  int iStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 local_68;
  int iStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  int iStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  
  lVar5 = FUN_18134adf0();
  plVar8 = (longlong *)(lVar5 + 0x38);
  lVar5 = param_1 + 200;
  (**(code **)(*plVar8 + 0x10))(plVar8,param_2,param_1,param_1 + 0x130,lVar5);
  puVar6 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1001810,0);
  FUN_181296c00(param_2,*puVar6);
  uVar7 = (**(code **)(*plVar8 + 0x40))(plVar8,&local_res10);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar7);
  if (local_res10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res10 + 1);
    iVar12 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar12 == 1) {
      (**(code **)*local_res10)(local_res10,1);
    }
  }
  iVar12 = *(int *)(param_1 + 0x15c) + -1;
  if (-1 < iVar12) {
    lVar11 = (longlong)iVar12 * 8;
    do {
      uVar13 = (undefined4)((ulonglong)lVar5 >> 0x20);
      lVar5 = *(longlong *)(lVar11 + *(longlong *)(param_1 + 0x150));
      uVar2 = *(undefined4 *)(lVar5 + 0x28);
      iVar3 = *(int *)(lVar5 + 0x24);
      uVar4 = *(undefined4 *)(lVar5 + 0x20);
      uVar7 = FUN_181249970(param_1 + 0x1b0,iVar12);
      iStack_74 = iVar3 + -0xe;
      uStack_6c = 0xe;
      lVar5 = CONCAT44(uVar13,1);
      local_78 = uVar4;
      uStack_70 = uVar2;
      FUN_181296100(param_2,uVar7,&local_78,0x21,lVar5,0);
      lVar11 = lVar11 + -8;
      iVar12 = iVar12 + -1;
    } while (-1 < iVar12);
  }
  iVar12 = *(int *)(param_1 + 0x1cc) + -1;
  if (-1 < iVar12) {
    lVar11 = (longlong)iVar12 * 8;
    do {
      uVar13 = (undefined4)((ulonglong)lVar5 >> 0x20);
      lVar5 = *(longlong *)(lVar11 + *(longlong *)(param_1 + 0x160));
      uVar2 = *(undefined4 *)(lVar5 + 0x28);
      iVar3 = *(int *)(lVar5 + 0x24);
      uVar4 = *(undefined4 *)(lVar5 + 0x20);
      uVar7 = FUN_181249970(param_1 + 0x1c0,iVar12);
      iStack_64 = iVar3 + -0xe;
      uStack_5c = 0xe;
      lVar5 = CONCAT44(uVar13,1);
      local_68 = uVar4;
      uStack_60 = uVar2;
      FUN_181296100(param_2,uVar7,&local_68,0x21,lVar5,0);
      lVar11 = lVar11 + -8;
      iVar12 = iVar12 + -1;
    } while (-1 < iVar12);
  }
  plVar8 = *(longlong **)(param_1 + 0x180);
  uVar10 = 0;
  uVar9 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0x18c)) + (7 - (longlong)plVar8)) >> 3;
  if (plVar8 + *(int *)(param_1 + 0x18c) < plVar8) {
    uVar9 = uVar10;
  }
  if (uVar9 != 0) {
    do {
      lVar5 = *plVar8;
      local_58 = *(undefined4 *)(lVar5 + 0x20);
      iStack_54 = *(int *)(lVar5 + 0x24) + -0xe;
      uStack_50 = *(undefined4 *)(lVar5 + 0x28);
      uStack_4c = 0xe;
      FUN_181296100(param_2,lVar5 + 8,&local_58,0x21,1,0);
      plVar8 = plVar8 + 1;
      uVar10 = uVar10 + 1;
    } while (uVar10 != uVar9);
  }
  return;
}



############ FUN_ 1812d6a60 size=86 ############

void FUN_1812d6a60(longlong param_1,longlong param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  undefined1 local_res8 [8];
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(param_1 + 8),local_res8,0x1000501,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = *param_3;
  uStack_14 = param_3[1];
  uStack_10 = param_3[2];
  uStack_c = param_3[3];
  (**(code **)(**(longlong **)(param_2 + 8) + 200))(*(longlong **)(param_2 + 8),&local_18);
  return;
}



############ FUN_ 1812d6ac0 size=86 ############

void FUN_1812d6ac0(longlong param_1,longlong param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  undefined1 local_res8 [8];
  undefined4 local_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(param_1 + 8),local_res8,0x1000501,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = *param_3;
  uStack_14 = param_3[1];
  uStack_10 = param_3[2];
  uStack_c = param_3[3];
  (**(code **)(**(longlong **)(param_2 + 8) + 200))(*(longlong **)(param_2 + 8),&local_18);
  return;
}



############ FUN_ 1812deec0 size=348 ############

void FUN_1812deec0(longlong param_1,undefined8 param_2)

{
  int iVar1;
  longlong lVar2;
  undefined1 local_18 [16];
  
  if ((**(char **)(param_1 + 0x2b8) != '\0') && (DAT_182673708 != param_1)) {
    iVar1 = FUN_1812dbb90();
    if (iVar1 == 0) {
      FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x2c0));
      FUN_1812967b0(param_2,param_1 + 0x298);
      if (*(char *)(param_1 + 0x1ee) == '\0') {
        FUN_1812962a0(param_2,param_1 + 0x2b8,*(int *)(param_1 + 0x288),0,
                      *(int *)(*(longlong *)(param_1 + 0x1c8) + 0x28) - *(int *)(param_1 + 0x288),
                      *(undefined4 *)(param_1 + 0x2c),0x21,1);
      }
      else {
        local_18._4_4_ = (float)*(int *)(param_1 + 0x2c);
        local_18._0_4_ = (float)*(int *)(param_1 + 0x28);
        local_18._8_8_ = 0;
        local_18 = local_18 << 0x40;
        FUN_1812963b0(param_2,param_1 + 0x2b8,local_18,0x24,1);
      }
    }
  }
  lVar2 = FUN_18134adf0(param_1);
  (**(code **)(*(longlong *)(lVar2 + 0x18) + 0x10))
            (lVar2 + 0x18,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
             param_1);
  return;
}



############ FUN_ 1812df080 size=2794 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812df080(longlong param_1,longlong param_2)

{
  uint uVar1;
  ulonglong uVar2;
  longlong lVar3;
  bool bVar4;
  undefined4 uVar5;
  float fVar6;
  double dVar7;
  undefined4 uVar8;
  char cVar9;
  wint_t _C;
  uint *puVar10;
  longlong *plVar11;
  undefined8 uVar12;
  longlong *plVar13;
  undefined1 uVar14;
  int iVar15;
  longlong *plVar16;
  ulonglong *puVar17;
  int iVar18;
  longlong *plVar19;
  ulonglong *puVar20;
  float fVar21;
  undefined4 uVar22;
  float fVar23;
  float fVar24;
  undefined4 uStackX_c;
  undefined4 local_res18 [2];
  undefined4 local_res20;
  undefined4 uStack_334;
  void *local_330;
  undefined8 local_328;
  void *local_320;
  ulonglong local_318;
  undefined1 local_310 [4];
  int local_30c;
  int local_304;
  undefined4 local_300;
  undefined4 uStack_2fc;
  int local_2f8;
  int iStack_2f4;
  int iStack_2ec;
  int local_2e8;
  int iStack_2e4;
  int local_2d8;
  float local_2d4;
  float fStack_2cc;
  float fStack_2c8;
  undefined4 local_2c4;
  undefined4 local_2c0;
  longlong local_2b8;
  longlong local_2b0;
  undefined8 local_2a8;
  undefined4 local_2a0;
  undefined4 local_29c;
  undefined4 local_298;
  undefined4 local_294;
  undefined4 local_290;
  int local_28c;
  float local_288;
  longlong local_280;
  undefined4 local_278;
  undefined4 local_274;
  float local_268;
  undefined4 local_264;
  float local_260;
  float local_25c;
  int local_258;
  int iStack_254;
  int iStack_250;
  undefined4 uStack_24c;
  undefined8 local_248;
  float fStack_240;
  float fStack_23c;
  int local_238;
  ulonglong local_234;
  undefined8 uStack_22c;
  undefined4 local_224;
  undefined4 local_220;
  longlong local_218;
  longlong local_210;
  undefined8 local_208;
  undefined4 local_200;
  undefined4 local_1fc;
  undefined4 local_1f8;
  undefined4 local_1f4;
  undefined4 local_1f0;
  int local_1ec;
  float local_1e8;
  longlong local_1e0;
  undefined4 local_1d8;
  undefined4 local_1d4;
  undefined8 local_1c8;
  undefined8 local_1c0;
  undefined8 local_1b8;
  undefined4 local_1b0;
  longlong local_1a8;
  longlong *plStack_1a0;
  undefined8 *local_198;
  undefined8 local_190;
  undefined4 local_188;
  float local_184;
  float local_180;
  undefined4 local_17c;
  undefined4 local_178;
  undefined1 *local_170;
  undefined1 local_158 [4];
  undefined1 local_154 [4];
  double local_150;
  double local_148;
  longlong local_140;
  longlong local_138;
  double local_130;
  double local_128;
  ulonglong *local_120;
  undefined8 local_118;
  undefined8 uStack_110;
  ulonglong local_108;
  undefined8 local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined4 local_c8;
  undefined4 uStack_c4;
  float fStack_c0;
  float fStack_bc;
  undefined8 local_b8;
  undefined8 uStack_b0;
  ulonglong local_a8;
  
  local_100 = 0xfffffffffffffffe;
  if ((*(char *)(param_1 + 0x1ef) == '\0') ||
     (0.0 < (float)((*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - *(int *)(param_1 + 0x288)) +
                   -3))) {
    uStack_2fc = *(undefined4 *)(param_1 + 0x28c);
    local_300 = *(undefined4 *)(param_1 + 0x288);
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0x10))
              (*(longlong **)(param_2 + 8),CONCAT44(uStack_2fc,local_300));
    (**(code **)(**(longlong **)(param_2 + 8) + 0x58))(*(longlong **)(param_2 + 8),local_310);
    FUN_1805074f0(&local_2d8,param_1);
    dVar7 = DAT_1824c4520;
    fVar6 = DAT_1824c3ea4;
    fVar24 = DAT_1824c3d8c;
    if (*(int *)(param_1 + 0x280) != *(int *)(param_1 + 0x284)) {
      local_238 = local_2d8;
      local_234 = (ulonglong)(uint)local_2d4;
      uStack_22c = CONCAT44(fStack_2c8,fStack_2cc);
      local_224 = local_2c4;
      local_220 = local_2c0;
      local_218 = local_2b8;
      local_210 = local_2b0;
      local_208 = local_2a8;
      local_200 = local_2a0;
      local_1fc = local_29c;
      local_1f8 = local_298;
      local_1f4 = local_294;
      local_1f0 = local_290;
      local_1ec = local_28c;
      local_1e8 = local_288;
      local_1e0 = local_280;
      if ((*(uint *)(local_280 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_280 + -0x10) = *(int *)(local_280 + -0x10) + 1;
        UNLOCK();
      }
      local_1d8 = local_278;
      local_1d4 = local_274;
      local_320 = (void *)0x0;
      local_318 = 0;
      cVar9 = FUN_1805075e0(&local_238);
      iVar15 = local_2f8;
      local_2f8 = local_238;
      while ((lVar3 = DAT_182673708, local_238 = local_2f8, cVar9 != '\0' &&
             ((float)local_234 < (float)(local_304 + local_30c)))) {
        if ((float)local_30c <= (float)uStack_22c + (float)local_234) {
          iVar15 = *(int *)(local_218 + 0xc) + local_2f8;
          iStack_2f4 = local_2f8;
          if (local_2f8 < iVar15) {
            iStack_2f4 = iVar15;
          }
          iVar15 = local_2f8;
          if ((local_2f8 < *(int *)(param_1 + 0x284)) && (*(int *)(param_1 + 0x280) < iStack_2f4)) {
            uVar2 = *(ulonglong *)(param_1 + 0x280);
            fVar21 = (float)FUN_1805083d0(&local_238,uVar2 & 0xffffffff);
            uStackX_c = (undefined4)(uVar2 >> 0x20);
            local_260 = (float)FUN_1805083d0(&local_238,uStackX_c);
            local_25c = local_1e8 * (float)uStack_22c;
            local_260 = local_260 - fVar21;
            local_264 = (float)local_234;
            local_268 = fVar21;
            FUN_18051cfc0(&local_320,&local_268);
            iVar15 = local_2f8;
          }
        }
        local_2f8 = iVar15;
        cVar9 = FUN_1805075e0(&local_238);
        iVar15 = local_2f8;
        local_2f8 = local_238;
      }
      do {
        if (lVar3 == param_1) {
          bVar4 = true;
LAB_1812df37e:
          if (bVar4) {
            fVar24 = fVar6;
          }
          local_2f8 = iVar15;
          puVar10 = (uint *)FUN_18134a8d0(param_1,local_158,0x1000202,0);
          local_150 = (double)((float)(*puVar10 >> 0x18) * fVar24) + dVar7;
          uVar14 = 0xff;
          if (SUB84(local_150,0) < 0xff) {
            uVar14 = SUB81(local_150,0);
          }
          local_res20 = CONCAT13(uVar14,(int3)*puVar10);
          FUN_181296c00(param_2,local_res20);
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb0))(*(longlong **)(param_2 + 8),&local_320)
          ;
          FUN_18134a8d0(param_1,local_154,0x1000203,0);
          local_318 = local_318 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
          free(local_320);
        }
        if (lVar3 == 0) {
          bVar4 = false;
          goto LAB_1812df37e;
        }
        lVar3 = *(longlong *)(lVar3 + 0x18);
      } while( true );
    }
    cVar9 = FUN_1805075e0(&local_2d8);
    uVar8 = DAT_1824c4620;
    uVar5 = DAT_1824c42d0;
    fVar21 = DAT_1824c4628;
    while ((DAT_1824c42d0 = uVar5, DAT_1824c4628 = fVar21, cVar9 != '\0' &&
           (local_2d4 < (float)(local_304 + local_30c)))) {
      if ((float)local_30c <= fStack_2cc + local_2d4) {
        iVar15 = *(int *)(local_2b8 + 0xc) + local_2d8;
        iStack_2ec = local_2d8;
        if (local_2d8 < iVar15) {
          iStack_2ec = iVar15;
        }
        if ((local_2d8 < *(int *)(param_1 + 0x284)) && (*(int *)(param_1 + 0x280) < iStack_2ec)) {
          FUN_180507e00(&local_2d8,param_2,*(undefined8 *)(param_1 + 0x280),0);
        }
        else {
          if (local_28c != 0) {
LAB_1812df52f:
            if (local_2b0 != 0) {
              FUN_181296c00(param_2,*(undefined4 *)(local_2b0 + 8));
              lVar3 = local_2b0;
              if (*(char *)(param_2 + 0x10) != '\0') {
                *(undefined1 *)(param_2 + 0x10) = 0;
                (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
              }
              (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),lVar3);
            }
            local_330 = (void *)0x0;
            local_328 = 0;
            FUN_1804aebd0(&local_330,200);
            uVar12 = FUN_180506710(local_2b8,&local_140,local_28c);
            local_148 = (double)((fStack_2cc + local_2d4) - fStack_2c8) + dVar7;
            FUN_1812510e0(&local_330,local_2b0,uVar12,local_2c4,(float)local_148._0_4_,uVar8,0);
            puVar10 = (uint *)(local_140 + -0x10);
            if ((*puVar10 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar10;
              *puVar10 = *puVar10 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar10);
              }
            }
            local_118 = _DAT_1824c4780;
            uStack_110 = _UNK_1824c4788;
            local_b8 = _DAT_1824c4780;
            uStack_b0 = _UNK_1824c4788;
            local_108 = (ulonglong)(uint)fVar6;
            local_a8 = local_108;
            FUN_18124efb0(&local_330,param_2,&local_b8);
            FUN_1804aeb50(&local_330);
                    /* WARNING: Subroutine does not return */
            free(local_330);
          }
          _C = FUN_180493050(local_2b8,0);
          iVar15 = iswspace(_C);
          if (iVar15 == 0) goto LAB_1812df52f;
        }
      }
      cVar9 = FUN_1805075e0(&local_2d8);
      uVar5 = DAT_1824c42d0;
      fVar21 = DAT_1824c4628;
    }
    puVar20 = *(ulonglong **)(param_1 + 0x310);
    puVar17 = puVar20 + *(int *)(param_1 + 0x31c);
    local_120 = puVar17;
    if (puVar20 != puVar17) {
      do {
        local_198 = (undefined8 *)(param_1 + 0x2a8);
        local_1c8 = 0;
        local_1c0 = 0;
        local_1b8 = 0;
        local_1b0 = 0;
        local_1a8 = 0;
        plStack_1a0 = (longlong *)0x0;
        local_190 = 0;
        local_188 = *(undefined4 *)(param_1 + 0x1e8);
        local_184 = (float)((*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) -
                            *(int *)(param_1 + 0x288)) + -3);
        local_180 = fVar21;
        if (*(char *)(param_1 + 0x1ef) != '\0') {
          local_180 = (float)((*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) -
                              *(int *)(param_1 + 0x288)) + -3);
        }
        local_17c = *(undefined4 *)(param_1 + 0x2c4);
        local_178 = *(undefined4 *)(param_1 + 0x2f4);
        local_170 = &DAT_1821dbf98;
        if ((*(int *)(param_1 + 0x2b4) != 0) &&
           (plStack_1a0 = *(longlong **)*local_198, plStack_1a0 != (longlong *)0x0)) {
          FUN_180507b50(&local_1c8);
        }
        cVar9 = FUN_1805075e0(&local_1c8);
        uVar12 = local_1c8;
        while (local_1c8 = uVar12, cVar9 != '\0') {
          plVar16 = (longlong *)0x0;
          local_1c8._4_4_ = (float)((ulonglong)uVar12 >> 0x20);
          puVar17 = local_120;
          if ((float)(local_304 + local_30c) <= local_1c8._4_4_) break;
          local_1c0._4_4_ = (float)((ulonglong)local_1c0 >> 0x20);
          fVar23 = local_1c0._4_4_ + local_1c8._4_4_;
          if ((float)local_30c <= fVar23) {
            local_1c8._0_4_ = (int)uVar12;
            iVar15 = *(int *)(local_1a8 + 0xc) + (int)local_1c8;
            local_2e8 = (int)local_1c8;
            iStack_2e4 = (int)local_1c8;
            if ((int)local_1c8 < iVar15) {
              iStack_2e4 = iVar15;
            }
            bVar4 = (int)local_1c8 < *(int *)((longlong)puVar20 + 4);
            if ((bVar4) && ((int)*puVar20 < iStack_2e4)) {
              plVar11 = (longlong *)FUN_1804e4ce0(&local_138,0x1000201);
              plVar19 = *(longlong **)(param_1 + 0x90);
              plVar13 = plVar19 + (longlong)*(int *)(param_1 + 0x9c) * 3;
              if (plVar19 != plVar13) {
                local_f8 = *plVar11;
                do {
                  local_f0 = *plVar19;
                  if (local_f0 == local_f8) {
                    plVar16 = plVar19 + 1;
                    break;
                  }
                  plVar19 = plVar19 + 3;
                } while (plVar19 != plVar13);
              }
              puVar10 = (uint *)(local_138 + -0x10);
              if ((*puVar10 & 0x30000000) == 0) {
                LOCK();
                uVar1 = *puVar10;
                *puVar10 = *puVar10 - 1;
                UNLOCK();
                if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar10);
                }
              }
              if (plVar16 == (longlong *)0x0) {
                uVar12 = FUN_18134adf0(param_1);
                FUN_181346420(uVar12,local_res18,0x1000201);
              }
              else {
                local_res18[0] =
                     (**(code **)(*(longlong *)*plVar16 + 8))((longlong *)*plVar16,plVar16 + 1);
              }
              uVar8 = local_res18[0];
              uVar2 = *puVar20;
              fVar23 = (float)FUN_1805083d0(&local_1c8,uVar2 & 0xffffffff);
              local_130 = (double)fVar23 + dVar7;
              uStack_334 = (undefined4)(uVar2 >> 0x20);
              fVar23 = (float)FUN_1805083d0(&local_1c8,uStack_334);
              plVar16 = plStack_1a0;
              local_128 = (double)fVar23 + dVar7;
              if (*(float *)(*plStack_1a0 + 0x34) == 0.0) {
                plVar13 = (longlong *)FUN_181252280(plStack_1a0);
                lVar3 = *plVar16;
                uVar22 = (**(code **)(*plVar13 + 0x10))(plVar13);
                *(undefined4 *)(lVar3 + 0x34) = uVar22;
              }
              lVar3 = *plVar16;
              fVar23 = *(float *)(lVar3 + 0x34) * *(float *)(lVar3 + 0x28) + local_1c8._4_4_;
              local_e8 = param_2;
              if (*(char *)(param_2 + 0x10) != '\0') {
                *(undefined1 *)(param_2 + 0x10) = 0;
                (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
              }
              *(undefined1 *)(param_2 + 0x10) = 1;
              local_258 = SUB84(local_130,0);
              iVar15 = SUB84((double)(fVar23 + fVar24) + dVar7,0);
              iVar18 = SUB84(local_128,0);
              iStack_250 = iVar18 - local_258;
              uStack_24c = 1;
              local_d8 = CONCAT44(iVar15,local_258);
              uStack_d0 = CONCAT44(1,iStack_250);
              iStack_254 = iVar15;
              if (*(char *)(param_2 + 0x10) != '\0') {
                *(undefined1 *)(param_2 + 0x10) = 0;
                (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
              }
              (**(code **)(**(longlong **)(param_2 + 8) + 0x28))
                        (*(longlong **)(param_2 + 8),&local_d8);
              fStack_240 = (float)iVar18;
              fStack_23c = (float)iVar15 + fVar6;
              local_248 = 0;
              local_c8 = 0;
              uStack_c4 = 0;
              fStack_c0 = fStack_240;
              fStack_bc = fStack_23c;
              FUN_181294be0(param_2,&local_c8,uVar5,fVar6,uVar8,DAT_182673b60);
              if (*(char *)(param_2 + 0x10) == '\0') {
                (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
              }
              else {
                *(undefined1 *)(param_2 + 0x10) = 0;
              }
            }
          }
          cVar9 = FUN_1805075e0(&local_1c8);
          puVar17 = local_120;
          uVar12 = local_1c8;
        }
        puVar10 = (uint *)(local_170 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        puVar20 = puVar20 + 1;
      } while (puVar20 != puVar17);
    }
    puVar10 = (uint *)(local_280 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  return;
}



############ FUN_ 1812e56e0 size=541 ############

void FUN_1812e56e0(longlong param_1,undefined8 param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  longlong lVar6;
  longlong lVar7;
  double dVar8;
  longlong lVar9;
  undefined4 *puVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined1 local_res8 [8];
  undefined8 local_res10;
  undefined8 in_stack_ffffffffffffff90;
  undefined4 uVar14;
  
  uVar14 = (undefined4)((ulonglong)in_stack_ffffffffffffff90 >> 0x20);
  lVar6 = *(longlong *)(param_1 + 0x200);
  local_res10 = param_2;
  lVar9 = FUN_18134adf0();
  iVar1 = *(int *)(lVar6 + 0x20);
  if (iVar1 != 8) {
    if (iVar1 - 4U < 4) {
      dVar8 = (double)(**(code **)(**(longlong **)(lVar6 + 0x18) + 0x188))
                                (*(longlong **)(lVar6 + 0x18),*(undefined8 *)(lVar6 + 0x80));
      (**(code **)(*(longlong *)(lVar9 + 0x58) + 0x28))
                ((longlong *)(lVar9 + 0x58),param_2,*(undefined4 *)(lVar6 + 0x1f0),
                 *(undefined4 *)(lVar6 + 500),*(undefined4 *)(lVar6 + 0x1f8),
                 *(undefined4 *)(lVar6 + 0x1fc),(float)dVar8,*(undefined4 *)(lVar6 + 0x1bc),
                 *(undefined4 *)(lVar6 + 0x1c0),*(undefined8 *)(lVar6 + 0x18));
    }
    else {
      uVar2 = *(undefined4 *)(lVar6 + 0x1fc);
      uVar3 = *(undefined4 *)(lVar6 + 0x1f0);
      uVar4 = *(undefined4 *)(lVar6 + 500);
      uVar5 = *(undefined4 *)(lVar6 + 0x1f8);
      lVar7 = *(longlong *)(lVar9 + 0x58);
      uVar11 = FUN_180502240(lVar6,*(undefined8 *)(lVar6 + 0x90));
      uVar12 = FUN_180502240(lVar6,*(undefined8 *)(lVar6 + 0x88));
      uVar13 = FUN_180502240(lVar6,*(undefined8 *)(lVar6 + 0x80));
      param_2 = local_res10;
      (**(code **)(lVar7 + 8))
                (lVar9 + 0x58,local_res10,uVar3,uVar4,uVar5,uVar2,uVar13,uVar12,uVar11,
                 CONCAT44(uVar14,iVar1),*(undefined8 *)(lVar6 + 0x18));
    }
    if ((*(int *)(lVar6 + 0x20) - 2U < 2) && (*(longlong *)(lVar6 + 0x250) == 0)) {
      puVar10 = (undefined4 *)FUN_18134a8d0(*(undefined8 *)(lVar6 + 0x18),local_res8,0x1001700,0);
      FUN_181296c00(param_2,*puVar10);
      FUN_181295c90(param_2,0,0,*(undefined4 *)(*(longlong *)(lVar6 + 0x18) + 0x28),
                    *(undefined4 *)(*(longlong *)(lVar6 + 0x18) + 0x2c),1);
    }
  }
  return;
}



############ FUN_ 1812e82b0 size=195 ############

void FUN_1812e82b0(longlong param_1,undefined8 param_2)

{
  undefined4 *puVar1;
  undefined1 local_res8 [8];
  undefined1 local_18 [16];
  
  if (0 < *(int *)(param_1 + 0xfc)) {
    puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1002810,0);
    FUN_181296c00(param_2,*puVar1);
    local_18 = ZEXT416((uint)(float)*(int *)(param_1 + 0x28)) << 0x40;
    FUN_181295950(param_2,local_18);
  }
  return;
}



############ FUN_ 1812ec830 size=682 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812ec830(longlong param_1,longlong param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  int *piVar5;
  longlong *plVar6;
  uint *puVar7;
  int iVar8;
  undefined1 auStack_118 [32];
  undefined4 local_f8;
  undefined4 local_f0;
  undefined4 local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8 [2];
  int local_b8;
  int iStack_b4;
  int iStack_b0;
  int iStack_ac;
  undefined1 local_a8 [4];
  undefined1 local_a4 [4];
  undefined1 local_a0 [4];
  undefined4 local_9c;
  undefined8 local_98;
  longlong *local_90;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  int local_78;
  int iStack_74;
  int iStack_70;
  int iStack_6c;
  undefined1 local_68 [16];
  undefined1 local_58 [47];
  undefined1 local_29;
  ulonglong local_28 [2];
  
  local_98 = 0xfffffffffffffffe;
  local_28[0] = DAT_182615970 ^ (ulonglong)auStack_118;
  puVar2 = (undefined4 *)FUN_18134a8d0(param_1,local_a8,0x1000200,0);
  FUN_181296c00(param_2,*puVar2);
  lVar3 = FUN_18134adf0(param_1);
  puVar2 = (undefined4 *)
           (**(code **)(*(longlong *)(lVar3 + 0x80) + 0x20))
                     ((longlong *)(lVar3 + 0x80),local_68,param_1);
  local_88 = *puVar2;
  uStack_84 = puVar2[1];
  uStack_80 = puVar2[2];
  uStack_7c = puVar2[3];
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_88,0);
  if (*(char *)(param_1 + 0x118) == '\0') {
    uVar4 = FUN_18134a8d0(param_1,local_a4,0x1000200,0);
    puVar2 = (undefined4 *)FUN_1812a24b0(uVar4,local_a0,DAT_1824c3ea4);
    local_e8 = CONCAT13(0x66,(int3)*puVar2);
    FUN_181296c00(param_2,local_e8);
    lVar3 = FUN_18134adf0(param_1);
    piVar5 = (int *)(**(code **)(*(longlong *)(lVar3 + 0x80) + 0x20))
                              ((longlong *)(lVar3 + 0x80),local_58,param_1);
    iVar8 = piVar5[3];
    iStack_ac = 0x14;
    if (iVar8 < 0x14) {
      iStack_ac = iVar8;
    }
    iStack_b4 = (piVar5[1] - iStack_ac) + iVar8;
    piVar5[3] = iVar8 - iStack_ac;
    local_b8 = *piVar5 + 10;
    iVar8 = (*piVar5 - local_b8) + piVar5[2];
    iStack_b0 = 0;
    if (0 < iVar8) {
      iStack_b0 = iVar8;
    }
    local_78 = local_b8;
    iStack_74 = iStack_b4;
    iStack_70 = iStack_b0;
    iStack_6c = iStack_ac;
    lVar3 = FUN_181233e10(local_28,*(undefined4 *)(param_1 + 0x114));
    FUN_180495150(&local_d8,lVar3,&local_29 + -lVar3);
    FUN_18049c4e0(&local_d0,&DAT_1821e2ff4);
    plVar6 = (longlong *)FUN_181232d30(&local_d0,&local_d8);
    local_e0 = *plVar6;
    if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(local_d0 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_90 = &local_e0;
    FUN_181232e20(&local_e0," more","");
    local_c8[0] = local_e0;
    if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(local_e0 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_9c = 0x21;
    local_f0 = 0;
    local_f8 = 1;
    FUN_181296100(param_2,local_c8,&local_78,0x21);
    puVar7 = (uint *)(local_c8[0] + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_d8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  FUN_1812ed550(param_1,param_2);
}



############ FUN_ 1812ed2b0 size=219 ############

void FUN_1812ed2b0(longlong param_1,undefined8 param_2)

{
  undefined4 local_res8;
  undefined8 local_18;
  undefined8 uStack_10;
  
  if (*(int *)(*(longlong *)(param_1 + 0x268) + 0xbc) == 0) {
    local_res8 = CONCAT13(0x7f,(int3)DAT_18262b5b8);
    FUN_181296c00(param_2,local_res8);
    FUN_1812966f0(param_2);
    uStack_10 = CONCAT44(0x41f00000,(float)*(int *)(param_1 + 0x28));
    local_18 = 0;
    FUN_1812963b0(param_2,param_1 + 0x270,&local_18,0x24,1);
  }
  return;
}



############ FUN_ 1812ee050 size=247 ############

void FUN_1812ee050(longlong param_1,longlong param_2)

{
  undefined4 *puVar1;
  undefined1 local_res8 [8];
  undefined8 local_18;
  undefined8 uStack_10;
  
  FUN_1812ed550();
  puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x100e801,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = *(undefined8 *)(param_1 + 0xe8);
  uStack_10 = *(undefined8 *)(param_1 + 0xf0);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_18,0);
  puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x100e803,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = CONCAT44((float)*(int *)(param_1 + 0xec),(float)*(int *)(param_1 + 0xe8));
  uStack_10 = CONCAT44((float)*(int *)(param_1 + 0xf4),(float)*(int *)(param_1 + 0xf0));
  FUN_181295950(param_2,&local_18);
  return;
}



############ FUN_ 1812f2000 size=773 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812f2000(longlong param_1,int param_2,longlong param_3,int param_4,int param_5,
                  undefined1 param_6)

{
  longlong lVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined1 *puVar4;
  char *pcVar5;
  int *piVar6;
  uint uVar7;
  int *piVar8;
  longlong lVar9;
  undefined1 auStack_318 [32];
  undefined1 local_2f8;
  undefined1 local_2f0;
  undefined1 local_2e8;
  undefined1 local_2e0;
  undefined1 *local_2d8;
  undefined1 *local_2d0;
  undefined8 local_2c8;
  int *local_2c0;
  uint local_2b8 [4];
  undefined8 local_2a8;
  int iStack_2a0;
  int iStack_29c;
  undefined8 local_298;
  undefined1 local_288;
  undefined4 local_284;
  undefined1 *local_280;
  undefined4 local_278;
  undefined8 local_238;
  undefined8 uStack_230;
  undefined8 local_228;
  undefined8 uStack_220;
  undefined8 local_218;
  undefined8 uStack_210;
  undefined1 *local_208;
  undefined4 local_200;
  undefined4 local_1fc;
  char local_1f8;
  undefined4 local_1f4;
  undefined1 local_1f0 [88];
  undefined8 local_198;
  longlong local_190;
  undefined1 local_178 [8];
  int local_170;
  undefined1 local_16c;
  undefined1 local_16b;
  undefined1 local_16a;
  char local_168 [148];
  undefined4 local_d4;
  undefined1 local_d0 [136];
  ulonglong local_48;
  
  local_298 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_318;
  piVar6 = (int *)0x0;
  local_2b8[0] = 0;
  lVar1 = FUN_18134adf0(param_1 + -0xb0);
  if (param_2 < *(int *)(param_1 + 300)) {
    puVar4 = (undefined1 *)((longlong)param_2 * 0x90 + *(longlong *)(param_1 + 0x120));
    local_168[0x90] = *puVar4;
    local_d4 = *(undefined4 *)(puVar4 + 4);
    FUN_1812f0e30(local_d0,puVar4 + 8);
    pcVar5 = local_168 + 0x90;
    uVar7 = 1;
  }
  else {
    local_288 = 1;
    local_284 = 0;
    local_280 = &DAT_1821dbf98;
    local_278 = 0;
    local_238 = 0;
    uStack_230 = 0;
    local_228 = 0;
    uStack_220 = 0;
    local_218 = 0;
    uStack_210 = 0;
    local_208 = &DAT_1821dbf98;
    local_200 = 0;
    local_1fc = 1;
    local_2b8[0] = 6;
    local_168[0] = '\x01';
    local_168[4] = '\0';
    local_168[5] = '\0';
    local_168[6] = '\0';
    local_168[7] = '\0';
    FUN_181348200(local_168 + 8,&local_280);
    pcVar5 = local_168;
    uVar7 = 0xe;
  }
  local_1f8 = *pcVar5;
  local_1f4 = *(undefined4 *)(pcVar5 + 4);
  local_2b8[0] = uVar7;
  FUN_181348200(local_1f0,pcVar5 + 8);
  if ((uVar7 & 8) != 0) {
    uVar7 = uVar7 & 0xfffffff7;
    FUN_1804d80a0(local_168 + 8);
  }
  if ((uVar7 & 4) != 0) {
    uVar7 = uVar7 & 0xfffffffb;
    FUN_1804d80a0(&local_280);
  }
  if ((uVar7 & 1) != 0) {
    FUN_1804d80a0(local_d0);
  }
  puVar2 = (undefined4 *)FUN_18134a8d0(param_1 + -0xb0,local_2b8,0x1000700,0);
  FUN_1812a3160(param_3,*puVar2);
  iVar3 = 0;
  if (local_1f8 == '\0') {
    local_2b8[0] = 0;
    piVar8 = &local_170;
    if (local_170 == 0) {
      piVar8 = piVar6;
    }
    if (local_190 == 0) {
      if (0 < (int)(param_4 - 0x28U)) {
        piVar6 = (int *)(ulonglong)(param_4 - 0x28U);
      }
      iStack_29c = iVar3;
      if (0 < param_5) {
        iStack_29c = param_5;
      }
      local_2a8 = 0x14;
      iStack_2a0 = (int)piVar6;
      lVar9 = *(longlong *)(lVar1 + 0x40);
      local_2e0 = FUN_1812f1fb0(local_1f0);
      local_2c8 = local_198;
      local_2d0 = local_178;
      local_2d8 = local_1f0;
      local_2e8 = local_16b;
      local_2f0 = param_6;
      local_2f8 = local_16c;
      local_2c0 = piVar8;
      (**(code **)(lVar9 + 0x10))(lVar1 + 0x40,param_3,&local_2a8,local_16a);
    }
  }
  else {
    iStack_2a0 = iVar3;
    if (0 < param_4 + -0x28) {
      iStack_2a0 = param_4 + -0x28;
    }
    iStack_29c = iVar3;
    if (0 < param_5) {
      iStack_29c = param_5;
    }
    local_2a8 = 0x14;
    (**(code **)(*(longlong *)(lVar1 + 0x40) + 0x18))
              ((longlong *)(lVar1 + 0x40),param_3,&local_2a8,local_1f0);
    FUN_181296c00(param_3,DAT_18262b5a4);
    local_2a8 = 0;
    iStack_29c = 1;
    iStack_2a0 = param_4;
    (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_2a8,0);
  }
  FUN_1804d80a0(local_1f0);
}



############ FUN_ 1812f4d00 size=517 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f4d00(longlong param_1,longlong param_2,longlong param_3,undefined8 param_4,
                  longlong *param_5)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  char cVar4;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined8 *local_a0;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 local_90;
  undefined8 local_8c;
  undefined8 *local_80;
  undefined8 *local_78;
  undefined1 local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined **local_50;
  undefined8 *local_48;
  undefined4 local_40;
  undefined4 local_3c;
  undefined8 local_38;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined8 local_20;
  undefined8 local_18;
  
  plVar3 = param_5;
  local_18 = 0xfffffffffffffffe;
  if (*param_5 == 0) {
    local_50 = juce::NativeImageType::vftable;
    (*(code *)PTR_FUN_1824988f0)
              (&local_50,&local_a0,2,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c)
               ,1);
    local_48 = (undefined8 *)*param_5;
    *param_5 = (longlong)local_a0;
    local_a0 = local_48;
    if (local_48 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_48 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_48)(local_48,1);
      }
    }
    param_5 = (longlong *)*param_5;
    if (param_5 == (longlong *)0x0) {
      local_80 = (undefined8 *)0x0;
    }
    else {
      (**(code **)(*param_5 + 8))(param_5,&local_80);
    }
    local_70 = 0;
    local_98 = 0;
    uStack_94 = 2;
    param_5._0_4_ = CONCAT13(0xb3,(int3)DAT_18262b5b8);
    local_40 = param_5._0_4_;
    local_3c = 8;
    local_38 = 0x200000000;
    local_78 = local_80;
    FUN_18124d610(&local_40,&local_80,param_4);
    if (local_80 != (undefined8 *)0x0) {
      (**(code **)*local_80)(local_80,1);
    }
  }
  FUN_181296c00(param_3,DAT_18262b5b8);
  local_30 = _DAT_1824c4780;
  uStack_2c = _UNK_1824c4784;
  uStack_28 = _UNK_1824c4788;
  uStack_24 = _UNK_1824c478c;
  local_20 = 0x3f800000;
  if (*plVar3 != 0) {
    cVar4 = (**(code **)(**(longlong **)(param_3 + 8) + 0x60))();
    if (cVar4 == '\0') {
      (**(code **)(**(longlong **)(param_3 + 8) + 0xc0))
                (*(longlong **)(param_3 + 8),plVar3,&local_30);
    }
  }
  local_a8 = CONCAT13(0xcc,(int3)*(undefined4 *)(param_1 + 0xac));
  FUN_181296c00(param_3,local_a8);
  FUN_181295ed0(param_3,param_4);
  local_a4 = CONCAT13(0xcc,(int3)*(undefined4 *)(param_1 + 0xb4));
  FUN_181296c00(param_3,local_a4);
  local_68 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
  uStack_60 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
  local_58 = 0x3f800000;
  local_90 = DAT_1824c41e0;
  local_8c = 0;
  FUN_181295d20(param_3,param_4,&local_90,&local_68);
  return;
}



############ FUN_ 1812f4f80 size=452 ############

void FUN_1812f4f80(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  uint *puVar4;
  undefined1 uVar5;
  int iVar6;
  double dVar7;
  float fVar8;
  undefined4 local_res20;
  int local_48;
  undefined4 local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined4 uStack_34;
  int iStack_30;
  int iStack_2c;
  
  lVar1 = param_5;
  iVar3 = *(int *)(param_5 + 0x28) / 10;
  iVar6 = 10;
  if (iVar3 < 10) {
    iVar6 = iVar3;
  }
  fVar8 = DAT_1824c3db8;
  if (((*(byte *)(param_5 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_5 + 0x18) == 0 ||
      (cVar2 = FUN_18133eaa0(), fVar8 = DAT_1824c3db8, cVar2 != '\0')))) {
    fVar8 = DAT_1824c3ea4;
  }
  puVar4 = (uint *)FUN_18134a8d0(lVar1,&param_5,0x1008301,0);
  dVar7 = (double)((float)(*puVar4 >> 0x18) * fVar8) + DAT_1824c4520;
  uVar5 = 0xff;
  if (SUB84(dVar7,0) < 0xff) {
    uVar5 = SUB81(dVar7,0);
  }
  local_res20 = CONCAT13(uVar5,(int3)*puVar4);
  FUN_181296c00(param_2,local_res20);
  FUN_1812966f0(param_2);
  if (*(code **)(*param_1 + 0x20) == FUN_1812f4f10) {
    iVar3 = *(int *)(lVar1 + 0x28) / 2;
    local_48 = 200;
    if (iVar3 < 200) {
      local_48 = iVar3;
    }
    local_40 = *(int *)(lVar1 + 0x28) - local_48;
    local_3c = *(int *)(lVar1 + 0x2c) + -1;
    local_44 = 0;
  }
  else {
    (**(code **)(*param_1 + 0x20))(param_1,&local_48,lVar1);
  }
  _iStack_30 = CONCAT44(local_3c,local_48 + -5);
  _local_38 = CONCAT44(local_44,iVar6);
  FUN_181296100(param_2,lVar1 + 8,&local_38,0x21,2,0);
  return;
}



############ FUN_ 1812f5150 size=113 ############

void FUN_1812f5150(undefined8 param_1,longlong param_2,undefined4 param_3,int param_4,
                  undefined8 param_5)

{
  undefined4 *puVar1;
  undefined1 local_res18 [16];
  undefined8 local_18;
  undefined4 local_10;
  int local_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(param_5,local_res18,0x1008300,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = 0;
  local_c = param_4 + -1;
  local_10 = param_3;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_18,0);
  return;
}



############ FUN_ 1812f5400 size=371 ############

void FUN_1812f5400(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,int param_6,undefined8 param_7,longlong param_8)

{
  longlong lVar1;
  char cVar2;
  undefined1 uVar3;
  longlong lVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  float fVar9;
  undefined4 local_res18;
  undefined4 local_res20 [2];
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  int iStack_3c;
  
  lVar1 = *(longlong *)(param_8 + 0x18);
  do {
    if (lVar1 == 0) {
      uVar8 = 0x1003240;
      puVar5 = local_res20;
LAB_1812f5479:
      puVar5 = (undefined4 *)FUN_18134a8d0(param_8,puVar5,uVar8,0);
      uVar7 = *puVar5;
      if (((*(byte *)(param_8 + 0xa9) & 0x10) == 0) &&
         ((*(longlong *)(param_8 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
        uVar3 = 0xff;
      }
      else {
        uVar3 = 0x3f;
      }
      local_res18 = CONCAT13(uVar3,(int3)uVar7);
      FUN_181296c00(param_2,local_res18);
      fVar9 = (float)param_6 * DAT_1824c3e4c;
      if (DAT_1824c4414 <= (float)param_6 * DAT_1824c3e4c) {
        fVar9 = DAT_1824c4414;
      }
      FUN_1812966f0(param_2,fVar9);
      _local_48 = CONCAT44(param_4,param_3);
      _uStack_40 = CONCAT44(param_6,param_5);
      iVar6 = 1;
      if (1 < param_6 / (int)fVar9) {
        iVar6 = param_6 / (int)fVar9;
      }
      FUN_181296100(param_2,param_7,&local_48,0x24,iVar6,0);
      return;
    }
    lVar4 = __RTDynamicCast(lVar1,0,&juce::Component::RTTI_Type_Descriptor,
                            &juce::PopupMenu::CustomComponent::RTTI_Type_Descriptor,0);
    if (lVar4 != 0) {
      uVar8 = 0x1000600;
      puVar5 = &local_res18;
      goto LAB_1812f5479;
    }
    lVar1 = *(longlong *)(lVar1 + 0x18);
  } while( true );
}



############ FUN_ 1812f5750 size=493 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f5750(longlong param_1,undefined8 param_2,int param_3,int param_4,float param_5)

{
  double dVar1;
  float fVar2;
  float fVar3;
  undefined4 *puVar4;
  int iVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined1 local_res18 [16];
  undefined8 local_88;
  float fStack_80;
  float fStack_7c;
  float local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  float fStack_6c;
  
  puVar4 = (undefined4 *)FUN_181346420(param_1 + -0xd0,local_res18,0x1005700);
  FUN_181296c00(param_2,*puVar4);
  local_88 = 0;
  fStack_80 = (float)param_3;
  fStack_7c = (float)param_4;
  FUN_181295300(param_2,&local_88,DAT_1824c42d0);
  fVar6 = (float)param_4 - DAT_1824c4334;
  fVar7 = ((float)param_3 - DAT_1824c4334) / DAT_1824c43a8;
  dVar1 = (double)(param_5 * DAT_1824c43a8) + DAT_1824c4520;
  fVar8 = fVar7 * DAT_1824c3c8c;
  fVar9 = fVar7 * DAT_1824c3cb8;
  fStack_80 = (float)FUN_181346420(fVar7 * _DAT_1824c3e74,&param_5,0x1001300);
  fVar3 = param_5;
  fVar2 = DAT_1824c41e0;
  iVar5 = 0;
  local_88._4_4_ = 0x40000000;
  fStack_7c = fVar6;
  do {
    if (iVar5 < SUB84(dVar1,0)) {
      fVar6 = DAT_18262b5c0;
      if (iVar5 < 6) {
        fVar6 = fVar3;
      }
    }
    else {
      param_5 = (float)CONCAT13(0x7f,SUB43(fVar3,0));
      fVar6 = param_5;
    }
    FUN_181296c00(param_2,fVar6);
    local_78 = (float)iVar5 * fVar7 + fVar2 + fVar8;
    uStack_74 = local_88._4_4_;
    uStack_70 = fStack_80;
    fStack_6c = fStack_7c;
    local_88._0_4_ = local_78;
    FUN_181295300(param_2,&local_78,fVar9);
    iVar5 = iVar5 + 1;
  } while (iVar5 < 7);
  return;
}



############ FUN_ 1812f5c40 size=420 ############

void FUN_1812f5c40(longlong param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  undefined8 uVar2;
  float fVar3;
  float fVar4;
  undefined1 local_res20 [8];
  undefined8 local_78;
  float fStack_70;
  float fStack_6c;
  void *local_68;
  undefined4 local_5c;
  
  param_1 = param_1 + -0x70;
  puVar1 = (undefined4 *)FUN_181346420(param_1,local_res20,0x1001b00,param_4,0xfffffffffffffffe);
  FUN_181296c00(param_2,*puVar1);
  fVar4 = (float)param_5;
  fVar3 = (float)param_4;
  local_78 = 0;
  fStack_70 = fVar3;
  fStack_6c = fVar4;
  FUN_181295300(param_2,&local_78,DAT_1824c4360);
  puVar1 = (undefined4 *)FUN_181346420(param_1,&param_5,0x1001c10);
  FUN_181296c00(param_2,*puVar1);
  fStack_70 = fVar3 - DAT_1824c3ea4;
  if (fStack_70 <= 0.0) {
    fStack_70 = 0.0;
  }
  fStack_6c = fVar4 - DAT_1824c3ea4;
  if (fStack_6c <= 0.0) {
    fStack_6c = 0.0;
  }
  local_78 = 0x3f0000003f000000;
  FUN_181295190(param_2,&local_78,DAT_1824c4360);
  local_78 = 0;
  fStack_70 = fVar3;
  fStack_6c = fVar4;
  puVar1 = (undefined4 *)FUN_181346420(param_1,&param_5,0x1001c00);
  uVar2 = FUN_181315540(&local_68,param_3,*puVar1);
  FUN_18124e500(uVar2,param_2,&local_78);
  FUN_1804ae9d0(&local_68);
  local_5c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 1812f5f20 size=735 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f5f20(undefined8 param_1,longlong param_2,float param_3,float param_4,float param_5,
                  undefined4 *param_6,int param_7)

{
  char cVar1;
  float *pfVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined8 local_c0;
  float *local_b8;
  undefined8 local_b0;
  float local_a8;
  float local_a4;
  float local_a0;
  float local_9c;
  undefined1 local_98;
  
  local_b8 = (float *)0x0;
  local_b0._0_4_ = 0;
  local_b0._4_4_ = 0;
  local_98 = 1;
  fVar5 = param_5 * DAT_1824c3d8c;
  fVar6 = fVar5 + param_3;
  local_a8 = fVar6;
  local_a4 = fVar6;
  local_a0 = param_4;
  local_9c = param_4;
  FUN_1804b02a0(&local_b8,&DAT_1821df344,fVar6,param_4,0xfffffffffffffffe);
  fVar4 = param_5 * DAT_1824c3db8 + param_4;
  FUN_18129ddd0(&local_b8,param_3 + param_5,fVar4);
  FUN_18129ddd0(&local_b8,param_3 + param_5,param_4 + param_5);
  FUN_18129ddd0(&local_b8,param_3,param_4 + param_5);
  FUN_18129ddd0(&local_b8,param_3,fVar4);
  if ((local_b0._4_4_ != 0) &&
     ((local_b0._4_4_ < 1 || (local_b8[local_b0._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_b0 < local_b0._4_4_ + 1) {
      FUN_1804af790(&local_b8,local_b0._4_4_ + 9 + (local_b0._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_b0._4_4_ = 1;
    *local_b8 = 100005.0;
  }
  fVar5 = fVar5 + param_4;
  fVar3 = (float)param_7 * DAT_1824c3fa0;
  fVar4 = cosf(fVar3);
  fVar3 = sinf(fVar3);
  local_d0 = CONCAT44((uint)fVar3 ^ DAT_1824c4f30,fVar4);
  uStack_c8 = CONCAT44(fVar3,(fVar3 * fVar5 - fVar4 * fVar6) + fVar6);
  local_c0 = CONCAT44(fVar5 - (fVar3 * fVar6 + fVar4 * fVar5),fVar4);
  FUN_18129b680(&local_b8,&local_d0);
  FUN_181296c00(param_2,*param_6);
  cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar1 == '\0') {
    for (pfVar2 = local_b8; pfVar2 != local_b8 + local_b0._4_4_; pfVar2 = pfVar2 + 1) {
      fVar4 = *pfVar2;
      if (fVar4 == DAT_1824c4600) {
        pfVar2 = pfVar2 + 2;
      }
      else if (((fVar4 == DAT_1824c45fc) || (fVar4 == DAT_1824c4604)) || (fVar4 == DAT_1824c4608)) {
        local_d0 = _DAT_1824c4780;
        uStack_c8 = _UNK_1824c4788;
        local_c0 = (ulonglong)DAT_1824c3ea4;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_b8,&local_d0);
        break;
      }
    }
  }
  local_b0 = (ulonglong)(uint)local_b0;
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 1812f6250 size=890 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f6250(undefined8 param_1,undefined8 param_2,int param_3,int param_4,int param_5,
                  int param_6,float param_7,float param_8,float param_9,longlong param_10)

{
  float fVar1;
  longlong lVar2;
  char cVar3;
  undefined4 *puVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  undefined4 local_res18 [2];
  undefined4 local_res20 [2];
  float local_118;
  float fStack_114;
  float fStack_110;
  float fStack_10c;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined8 local_f8;
  void *local_f0;
  ulonglong local_e8;
  undefined8 local_e0;
  undefined8 uStack_d8;
  undefined1 local_d0;
  void *local_c8;
  ulonglong local_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined1 local_a8;
  undefined8 local_a0;
  
  lVar2 = param_10;
  local_a0 = 0xfffffffffffffffe;
  FUN_18134a8d0(param_10,local_res18,0x1001312,0);
  FUN_18134a8d0(lVar2,local_res20,0x1001311,0);
  fVar1 = DAT_1824c3d8c;
  fVar11 = (float)param_5 - DAT_1824c442c;
  if (fVar11 <= 0.0) {
    fVar11 = 0.0;
  }
  fVar12 = (float)param_6 - DAT_1824c442c;
  if (fVar12 <= 0.0) {
    fVar12 = 0.0;
  }
  fVar6 = (float)param_4 - DAT_1824c4720;
  fVar7 = (float)param_3 - DAT_1824c4720;
  fVar9 = fVar12;
  if (fVar11 <= fVar12) {
    fVar9 = fVar11;
  }
  fVar8 = (param_9 - param_8) * param_7 + param_8;
  fVar10 = fVar9 * DAT_1824c3d8c * DAT_1824c3d8c;
  if (DAT_1824c43d8 <= fVar10) {
    fVar10 = DAT_1824c43d8;
  }
  fVar9 = fVar9 * DAT_1824c3d8c - fVar10 * DAT_1824c3d8c;
  local_c8 = (void *)0x0;
  local_c0 = 0;
  local_b8 = 0;
  uStack_b0 = 0;
  local_a8 = 1;
  fVar12 = fVar12 * DAT_1824c3d8c;
  fVar11 = fVar11 * DAT_1824c3d8c;
  if (0.0 < fVar9) {
    FUN_18129cdf0(&local_c8);
  }
  FUN_181296c00(param_2,local_res18[0]);
  local_108 = _DAT_1824c4780;
  uStack_104 = _UNK_1824c4784;
  uStack_100 = _UNK_1824c4788;
  uStack_fc = _UNK_1824c478c;
  local_f8 = 0x3f800000;
  fStack_114 = 1.4013e-45;
  fStack_110 = 2.8026e-45;
  local_118 = fVar10;
  FUN_181295d20(param_2,&local_c8,&local_118,&local_108);
  if ((*(byte *)(lVar2 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(lVar2 + 0x18) != 0) {
      cVar3 = FUN_18133eaa0();
      if (cVar3 == '\0') goto LAB_1812f6518;
    }
    local_f0 = (void *)0x0;
    local_e8 = 0;
    local_e0 = 0;
    uStack_d8 = 0;
    local_d0 = 1;
    if (0.0 < fVar9) {
      FUN_18129cdf0(&local_f0);
    }
    FUN_181296c00(param_2,local_res20[0]);
    local_108 = _DAT_1824c4780;
    uStack_104 = _UNK_1824c4784;
    uStack_100 = _UNK_1824c4788;
    uStack_fc = _UNK_1824c478c;
    local_f8 = 0x3f800000;
    fStack_114 = 1.4013e-45;
    fStack_110 = 2.8026e-45;
    local_118 = fVar10;
    FUN_181295d20(param_2,&local_f0,&local_118,&local_108);
    local_e8 = local_e8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_f0);
  }
LAB_1812f6518:
  fVar10 = fVar10 * DAT_1824c41e0;
  fVar8 = fVar8 - DAT_1824c3fa0;
  fVar5 = sinf(fVar8);
  fVar8 = cosf(fVar8);
  puVar4 = (undefined4 *)FUN_18134a8d0(lVar2,&param_6,0x1001300,0);
  FUN_181296c00(param_2,*puVar4);
  fStack_114 = (fVar5 * fVar9 + fVar12 + fVar6) - fVar10 * fVar1;
  local_118 = (fVar8 * fVar9 + fVar11 + fVar7) - fVar10 * fVar1;
  fStack_110 = fVar10;
  fStack_10c = fVar10;
  FUN_181295820(param_2,&local_118);
  local_c0 = local_c0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_c8);
}



############ FUN_ 1812f6610 size=2225 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f6610(longlong *param_1,longlong param_2,undefined8 param_3,int param_4,int param_5,
                  int param_6,float param_7,float param_8,float param_9,int param_10,
                  longlong param_11)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  longlong lVar4;
  int iVar5;
  undefined4 *puVar6;
  longlong lVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float local_168;
  float fStack_164;
  float fStack_160;
  float fStack_15c;
  float local_158;
  undefined1 local_154 [4];
  undefined8 local_150;
  undefined8 uStack_148;
  undefined8 local_140;
  void *local_138;
  undefined8 local_130;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined1 local_118;
  undefined8 local_110;
  undefined8 local_108;
  float local_100;
  float local_fc;
  float local_f8;
  float local_f4;
  undefined1 local_f0;
  undefined8 local_e8;
  
  lVar4 = param_11;
  fVar10 = DAT_1824c3d8c;
  iVar8 = (int)param_3;
  local_e8 = 0xfffffffffffffffe;
  lVar7 = *(longlong *)(param_11 + 0x200);
  if (*(int *)(lVar7 + 0x20) - 2U < 2) {
    puVar6 = (undefined4 *)FUN_18134a8d0(param_11,&param_11,0x1001310,0);
    FUN_181296c00(param_2,*puVar6);
    uVar1 = *(uint *)(*(longlong *)(lVar4 + 0x200) + 0x20);
    if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
      _local_168 = CONCAT44((float)param_4 + DAT_1824c3d8c,(float)iVar8);
      _fStack_160 = CONCAT44((float)param_6 - DAT_1824c3ea4,param_7 - (float)iVar8);
    }
    else {
      _local_168 = CONCAT44(param_7,(float)iVar8 + DAT_1824c3d8c);
      _fStack_160 = CONCAT44(((float)param_6 - param_7) + (float)param_4,
                             (float)param_5 - DAT_1824c3ea4);
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_168);
    return;
  }
  bVar3 = param_10 - 9U < 2;
  param_11._0_1_ = param_10 - 0xbU < 2;
  uVar1 = *(uint *)(lVar7 + 0x20);
  iVar5 = param_5;
  if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
    iVar5 = param_6;
  }
  fVar12 = (float)iVar5 * DAT_1824c3d3c;
  if (DAT_1824c4388 <= (float)iVar5 * DAT_1824c3d3c) {
    fVar12 = DAT_1824c4388;
  }
  if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
    fVar13 = (float)param_6 * DAT_1824c3d8c + (float)param_4;
  }
  else {
    fVar13 = (float)(param_4 + param_6);
  }
  if ((*(uint *)(lVar7 + 0x20) < 0xc) && ((0xa05U >> (*(uint *)(lVar7 + 0x20) & 0x1f) & 1) != 0)) {
    fVar9 = (float)iVar8;
  }
  else {
    fVar9 = (float)param_5 * DAT_1824c3d8c + (float)iVar8;
  }
  local_158 = (float)iVar8;
  local_110 = 0;
  local_108 = 0;
  local_f0 = 1;
  local_100 = fVar9;
  local_fc = fVar9;
  local_f8 = fVar13;
  local_f4 = fVar13;
  FUN_1804b02a0(&local_110,&DAT_1821df344,param_3,fVar13);
  FUN_18129ddd0(&local_110);
  puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_154,0x1001200,0);
  FUN_181296c00(param_2,*puVar6);
  local_150 = _DAT_1824c4780;
  uStack_148 = _UNK_1824c4788;
  local_140 = 0x3f800000;
  _local_168 = CONCAT44(1,fVar12);
  _fStack_160 = CONCAT44(fStack_15c,2);
  FUN_181295d20(param_2,&local_110,&local_168,&local_150);
  local_138 = (void *)0x0;
  local_130 = 0;
  local_130._4_4_ = 0;
  local_128 = 0;
  uStack_120 = 0;
  local_118 = 1;
  fVar11 = 0.0;
  fVar15 = 0.0;
  if ((bVar3) || ((char)param_11 != '\0')) {
    lVar7 = *(longlong *)(lVar4 + 0x200);
    uVar1 = *(uint *)(lVar7 + 0x20);
    if ((0xb < uVar1) || (fVar9 = param_8, (0xa05U >> (uVar1 & 0x1f) & 1) == 0)) {
      fVar9 = (float)param_5 * fVar10;
    }
    fVar13 = param_8;
    if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
      fVar13 = (float)param_6 * fVar10;
    }
    if ((char)param_11 == '\0') {
LAB_1812f6a9d:
      if ((0xb < uVar1) || (fVar14 = param_9, (0xa05U >> (uVar1 & 0x1f) & 1) == 0))
      goto LAB_1812f6aad;
    }
    else {
      if ((0xb < uVar1) || (fVar11 = param_7, (0xa05U >> (uVar1 & 0x1f) & 1) == 0)) {
        fVar11 = (float)param_5 * fVar10;
      }
      fVar15 = param_7;
      if (uVar1 < 0xc) {
        if ((0xa05U >> (uVar1 & 0x1f) & 1) != 0) {
          fVar15 = (float)param_6 * fVar10;
        }
        goto LAB_1812f6a9d;
      }
LAB_1812f6aad:
      fVar14 = (float)param_5 * fVar10;
    }
    param_7 = param_9;
    if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
      param_7 = (float)param_6 * fVar10;
    }
  }
  else {
    lVar7 = *(longlong *)(lVar4 + 0x200);
    uVar1 = *(uint *)(lVar7 + 0x20);
    if ((0xb < uVar1) || (fVar14 = param_7, (0xa05U >> (uVar1 & 0x1f) & 1) == 0)) {
      fVar14 = (float)param_5 * fVar10 + local_158;
    }
    if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
      param_7 = (float)param_6 * fVar10 + (float)param_4;
    }
  }
  if (*(code **)(*param_1 + 0x20) == FUN_1812f6ee0) {
    if ((*(uint *)(lVar7 + 0x20) < 0xc) && ((0xa05U >> (*(uint *)(lVar7 + 0x20) & 0x1f) & 1) != 0))
    {
      iVar2 = *(int *)(lVar4 + 0x2c);
    }
    else {
      iVar2 = *(int *)(lVar4 + 0x28);
    }
    iVar5 = 0xc;
    if ((int)((float)iVar2 * fVar10) < 0xc) {
      iVar5 = (int)((float)iVar2 * fVar10);
    }
  }
  else {
    iVar5 = (**(code **)(*param_1 + 0x20))(param_1,lVar4);
  }
  if (local_130._4_4_ == 0) {
    local_128 = CONCAT44(fVar9,fVar9);
    uStack_120 = (ulonglong)(uint)fVar13;
LAB_1812f6b7d:
    uStack_120 = CONCAT44(fVar13,(float)uStack_120);
  }
  else {
    if ((float)local_128 <= fVar9) {
      if (local_128._4_4_ < fVar9) {
        local_128 = CONCAT44(fVar9,(float)local_128);
      }
    }
    else {
      local_128 = CONCAT44(local_128._4_4_,fVar9);
    }
    if ((float)uStack_120 <= fVar13) {
      if (uStack_120._4_4_ < fVar13) goto LAB_1812f6b7d;
    }
    else {
      uStack_120 = CONCAT44(uStack_120._4_4_,fVar13);
    }
  }
  FUN_1804b02a0(&local_138,&DAT_1821df344);
  FUN_18129ddd0(&local_138);
  puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_154,0x1001310,0);
  FUN_181296c00(param_2,*puVar6);
  local_150 = _DAT_1824c4780;
  uStack_148 = _UNK_1824c4788;
  local_140 = 0x3f800000;
  _local_168 = CONCAT44(1,fVar12);
  _fStack_160 = CONCAT44(fStack_15c,2);
  FUN_181295d20(param_2,&local_138,&local_168,&local_150);
  if (!bVar3) {
    puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_154,0x1001300,0);
    FUN_181296c00(param_2,*puVar6);
    if ((char)param_11 == '\0') {
      fVar11 = fVar14;
      fVar15 = param_7;
    }
    fVar9 = (float)iVar5;
    fVar13 = fVar9 * fVar10;
    _local_168 = CONCAT44(fVar15 - fVar13,fVar11 - fVar13);
    _fStack_160 = CONCAT44(fVar9,fVar9);
    FUN_181295820(fVar13,&local_168);
    if ((char)param_11 == '\0') goto LAB_1812f6e4a;
  }
  FUN_18134a8d0(lVar4,&param_11,0x1001300,0);
  uVar1 = *(uint *)(*(longlong *)(lVar4 + 0x200) + 0x20);
  if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
    fVar12 = fVar12 * DAT_1824c41e0;
    FUN_1812f5f20(uVar1,param_2);
    fVar12 = (float)(param_4 + param_6) - fVar12;
  }
  else {
    fVar13 = fVar12 * DAT_1824c41e0;
    fVar10 = ((float)param_5 * fVar10 + local_158) - fVar13;
    if (fVar10 <= 0.0) {
      fVar10 = 0.0;
    }
    FUN_1812f5f20(uVar1,param_2,fVar10,param_8 - fVar12,fVar13,&param_11,1);
    fVar12 = (float)(iVar8 + param_5) - fVar13;
  }
  FUN_1812f5f20(fVar12,param_2);
LAB_1812f6e4a:
  local_130 = local_130 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_138);
}



############ FUN_ 1812f7010 size=757 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f7010(undefined8 param_1,undefined8 param_2,int param_3,int param_4)

{
  longlong lVar1;
  float fVar2;
  char cVar3;
  undefined1 uVar4;
  longlong lVar5;
  undefined4 *puVar6;
  float fVar7;
  undefined4 local_res18;
  undefined1 local_res20 [8];
  longlong in_stack_00000050;
  undefined8 local_d8;
  float fStack_d0;
  float fStack_cc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined8 local_b8;
  void *local_b0;
  ulonglong local_a8;
  float local_a0;
  float local_9c;
  float local_98;
  float local_94;
  undefined1 local_90;
  
  fVar7 = DAT_1824c42d0;
  lVar1 = *(longlong *)(in_stack_00000050 + 0x18);
  while ((lVar1 != 0 &&
         (lVar5 = __RTDynamicCast(lVar1,0,&juce::Component::RTTI_Type_Descriptor,
                                  &juce::ChoicePropertyComponent::RTTI_Type_Descriptor,0),
         lVar5 == 0))) {
    lVar1 = *(longlong *)(lVar1 + 0x18);
  }
  puVar6 = (undefined4 *)FUN_18134a8d0(in_stack_00000050,&local_res18,0x1000b00,0);
  FUN_181296c00(param_2,*puVar6);
  local_d8 = 0;
  fStack_d0 = (float)param_3;
  fStack_cc = (float)param_4;
  FUN_181295300(param_2,&local_d8);
  puVar6 = (undefined4 *)FUN_18134a8d0(in_stack_00000050,&local_res18,0x1000c00,0);
  FUN_181296c00(param_2,*puVar6);
  fVar2 = DAT_1824c3ea4;
  fStack_d0 = (float)param_3 - DAT_1824c3ea4;
  if (fStack_d0 <= 0.0) {
    fStack_d0 = 0.0;
  }
  fStack_cc = (float)param_4 - DAT_1824c3ea4;
  if (fStack_cc <= 0.0) {
    fStack_cc = 0.0;
  }
  local_d8 = 0x3f0000003f000000;
  FUN_181295190(param_2,&local_d8);
  local_b0 = (void *)0x0;
  local_a8 = 0;
  local_90 = 1;
  local_98 = (float)(param_4 / 2) - DAT_1824c41e0;
  local_a0 = (float)(param_3 + -0x1e) + fVar7;
  local_9c = local_a0;
  local_94 = local_98;
  FUN_1804b02a0(&local_b0,&DAT_1821df344);
  FUN_18129ddd0(&local_b0);
  FUN_18129ddd0(&local_b0,(float)(param_3 + -10) - fVar7);
  fVar7 = DAT_1824c3d18;
  if (((*(byte *)(in_stack_00000050 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(in_stack_00000050 + 0x18) == 0 ||
      (cVar3 = FUN_18133eaa0(), fVar7 = DAT_1824c3d18, cVar3 != '\0')))) {
    fVar7 = DAT_1824c3e58;
  }
  puVar6 = (undefined4 *)FUN_18134a8d0(in_stack_00000050,local_res20,0x1000e00,0);
  if (0.0 < fVar7) {
    if (fVar7 < fVar2) {
      uVar4 = (undefined1)(int)(fVar7 * DAT_1824c454c);
    }
    else {
      uVar4 = 0xff;
    }
  }
  else {
    uVar4 = 0;
  }
  local_res18 = CONCAT13(uVar4,(int3)*puVar6);
  FUN_181296c00(param_2,local_res18);
  local_c8 = _DAT_1824c4780;
  uStack_c4 = _UNK_1824c4784;
  uStack_c0 = _UNK_1824c4788;
  uStack_bc = _UNK_1824c478c;
  local_b8 = 0x3f800000;
  local_d8 = 0x40000000;
  fStack_d0 = 0.0;
  FUN_181295d20(param_2,&local_b0,&local_d8,&local_c8);
  local_a8 = local_a8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_b0);
}



############ FUN_ 1812f7350 size=494 ############

void FUN_1812f7350(longlong *param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined8 *param_6,char param_7,char param_8,
                  undefined8 param_9,longlong param_10)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  char cVar5;
  undefined4 *puVar6;
  uint *puVar7;
  undefined8 uVar8;
  undefined1 uVar9;
  undefined4 uVar10;
  double dVar11;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  undefined4 local_res18;
  undefined1 local_res20 [8];
  undefined8 *puVar12;
  undefined8 local_48;
  undefined8 uStack_40;
  
  lVar4 = param_10;
  if ((*(byte *)(param_10 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_10 + 0x18) != 0) {
      cVar5 = FUN_18133eaa0();
      if (cVar5 == '\0') goto LAB_1812f740d;
    }
    if ((param_8 == '\0') && (param_7 == '\0')) {
      puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_res20,0x1000102,0);
      uVar10 = *puVar6;
    }
    else {
      puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,&param_10,0x1000101,0);
      FUN_1812a3160(param_2,*puVar6);
      puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_res8,0x1000103,0);
      uVar10 = *puVar6;
    }
  }
  else {
LAB_1812f740d:
    puVar7 = (uint *)FUN_18134a8d0(lVar4,local_res10,0x1000102,0);
    dVar11 = (double)((float)(*puVar7 >> 0x18) * DAT_1824c3d8c) + DAT_1824c4520;
    uVar9 = 0xff;
    if (SUB84(dVar11,0) < 0xff) {
      uVar9 = SUB81(dVar11,0);
    }
    local_res18 = CONCAT13(uVar9,(int3)*puVar7);
    uVar10 = local_res18;
  }
  FUN_181296c00(param_2,uVar10);
  puVar3 = param_6;
  puVar12 = param_6;
  uVar8 = (**(code **)(*param_1 + 0x58))(param_1,&param_6,lVar4,param_5,param_6);
  uVar10 = (undefined4)((ulonglong)puVar12 >> 0x20);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar8);
  if (param_6 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(param_6 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*param_6)(param_6,1);
    }
  }
  uStack_40 = CONCAT44(param_4,param_3);
  local_48 = 0;
  FUN_181296100(param_2,puVar3,&local_48,0x24,CONCAT44(uVar10,1),0);
  return;
}



############ FUN_ 1812f7550 size=763 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f7550(undefined8 param_1,longlong param_2,undefined4 param_3,int param_4,
                  undefined8 param_5,undefined8 param_6)

{
  undefined8 *puVar1;
  uint uVar2;
  uint uVar3;
  undefined1 auVar4 [12];
  undefined1 auVar5 [12];
  undefined8 uVar6;
  uint uVar7;
  uint *puVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  uint uVar15;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar16 [16];
  undefined1 auVar17 [16];
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  undefined4 local_res18;
  undefined4 local_res20;
  longlong local_b8;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined4 local_80;
  float local_7c;
  undefined1 local_78;
  void *local_70;
  undefined8 local_68;
  
  puVar8 = (uint *)FUN_18134a8d0(param_6,&local_res18,0x1000100,0,0xfffffffffffffffe);
  uVar11 = *puVar8;
  local_res18 = CONCAT13(0x66,(int3)uVar11);
  uVar7 = local_res18;
  uVar15 = (uVar11 & 0xff0000) >> 0x10;
  fVar20 = (float)uVar15 / DAT_1824c4548;
  uVar10 = (uVar11 & 0xff00) >> 8;
  fVar19 = (float)uVar10 / DAT_1824c4548;
  fVar21 = (float)(uVar11 & 0xff);
  fVar18 = fVar21 / DAT_1824c4548;
  fVar18 = sqrtf(fVar19 * fVar19 * _DAT_1824c3dec + fVar20 * fVar20 * _DAT_1824c3d2c +
                 fVar18 * fVar18 * _DAT_1824c3ca0);
  puVar8 = &DAT_18262b598;
  if (DAT_1824c3d8c <= fVar18) {
    puVar8 = &DAT_18262b59c;
  }
  uVar2 = *puVar8;
  local_res20._0_3_ = (undefined3)uVar2;
  local_res20 = CONCAT13(0x26,(undefined3)local_res20);
  uVar13 = uVar7 >> 0x18;
  uVar3 = local_res20;
  if (uVar13 != 0) {
    iVar9 = 0xff - (local_res20 >> 0x18);
    iVar14 = 0xff - ((int)((0xff - uVar13) * iVar9) >> 8);
    uVar3 = uVar7;
    if (0 < iVar14) {
      iVar9 = (int)(iVar9 * uVar13) / iVar14;
      local_res20._0_1_ = (char)uVar2;
      local_res20._0_1_ =
           (char)(((uVar11 & 0xff) - (uVar2 & 0xff)) * iVar9 >> 8) + (char)local_res20;
      local_res20._0_3_ =
           CONCAT12((char)((uVar15 - ((uVar2 & 0xff0000) >> 0x10)) * iVar9 >> 8) +
                    (char)(uVar2 >> 0x10),
                    CONCAT11((char)((uVar10 - ((uVar2 & 0xff00) >> 8)) * iVar9 >> 8) +
                             (char)(uVar2 >> 8),(char)local_res20));
      local_res20 = CONCAT13((char)iVar14,(undefined3)local_res20);
      uVar3 = local_res20;
    }
  }
  FUN_181296c00(param_2,uVar3);
  iVar9 = 1;
  if (param_4 < 1) {
    iVar9 = param_4;
  }
  iVar12 = param_4 - iVar9;
  uStack_90 = CONCAT44(iVar9,param_3);
  local_98 = 0;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_98,0);
  iVar14 = 1;
  if (iVar12 < 1) {
    iVar14 = iVar12;
  }
  uVar11 = (iVar9 - iVar14) + iVar12;
  local_b8 = (ulonglong)uVar11 << 0x20;
  local_98 = local_b8;
  uStack_90._0_4_ = param_3;
  uStack_90._4_4_ = iVar14;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_98,0);
  uVar6 = DAT_1824c4140;
  local_res20 = CONCAT13(0x66,CONCAT12((char)(int)((float)(local_res18 >> 0x10 & 0xff) *
                                                  DAT_1824c3e48),
                                       CONCAT11((char)(int)((float)(local_res18 >> 8 & 0xff) *
                                                           DAT_1824c3e48),
                                                (char)(int)(fVar21 * DAT_1824c3e48))));
  local_7c = (float)param_4;
  local_88 = 0;
  local_80 = 0;
  local_78 = 0;
  local_70 = (void *)0x0;
  local_68 = 0;
  uStack_90._0_4_ = local_res20;
  FUN_18049ba20(&local_70,8);
  iVar9 = local_68._4_4_ + 1;
  auVar4._4_8_ = extraout_XMM0_Qb;
  auVar4._0_4_ = uVar11;
  auVar16._0_8_ = auVar4._0_8_ << 0x20;
  auVar16._8_4_ = uVar7;
  auVar16._12_4_ = iVar14;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)local_68._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = auVar16._8_8_;
  local_68 = CONCAT44(local_68._4_4_ + 2,(undefined4)local_68);
  auVar5._4_8_ = auVar16._8_8_;
  auVar5._0_4_ = local_98._4_4_;
  auVar17._0_8_ = auVar5._0_8_ << 0x20;
  auVar17._8_4_ = (undefined4)uStack_90;
  auVar17._12_4_ = uStack_90._4_4_;
  uStack_90 = auVar17._8_8_;
  local_98 = uVar6;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)iVar9 * 0x10);
  *puVar1 = uVar6;
  puVar1[1] = uStack_90;
  FUN_181296970(param_2,&local_88);
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 1812f7b00 size=2617 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f7b00(longlong *param_1,longlong param_2,int *param_3,char param_4,char param_5,
                  char param_6,char param_7,char param_8,undefined8 param_9,undefined8 *param_10,
                  longlong *param_11,uint *param_12)

{
  int *piVar1;
  undefined4 uVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  double dVar5;
  char cVar6;
  int iVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined8 uVar10;
  float *pfVar11;
  undefined1 uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  undefined4 local_res20;
  undefined8 *local_2a8 [2];
  int local_298;
  int iStack_294;
  int iStack_290;
  int iStack_28c;
  undefined8 *local_288;
  undefined4 local_280;
  int local_27c;
  uint local_278 [2];
  undefined4 local_270 [2];
  int local_268;
  void *local_260;
  ulonglong local_258;
  float local_250;
  float local_24c;
  float local_248;
  float local_244;
  undefined1 local_240;
  undefined8 local_238;
  undefined4 local_230;
  int local_228;
  int iStack_224;
  int iStack_220;
  int iStack_21c;
  float local_218;
  float local_214;
  float local_210;
  float local_20c;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined1 local_1f0 [4];
  undefined1 local_1ec [4];
  undefined1 local_1e8 [4];
  undefined1 local_1e4 [4];
  undefined4 local_1e0;
  double local_1d8;
  double local_1d0;
  double local_1c8;
  double local_1c0;
  undefined8 *local_1b8;
  float local_1b0;
  float fStack_1ac;
  float fStack_1a8;
  float fStack_1a4;
  float *local_1a0;
  int local_194;
  int local_178;
  int local_170;
  undefined8 local_168;
  undefined8 uStack_160;
  float local_158;
  float fStack_154;
  float fStack_150;
  float fStack_14c;
  undefined8 local_148;
  undefined8 uStack_140;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined1 local_120 [24];
  undefined1 local_108 [24];
  int local_f0;
  undefined1 local_e8 [176];
  
  local_128 = 0xfffffffffffffffe;
  if (param_4 != '\0') {
    iVar7 = *param_3;
    iVar15 = param_3[1];
    iVar14 = 0;
    if (0 < param_3[2] + -10) {
      iVar14 = param_3[2] + -10;
    }
    iVar16 = 0;
    if (0 < param_3[3]) {
      iVar16 = param_3[3];
    }
    local_1d8 = (double)((float)iVar16 * DAT_1824c3d8c - DAT_1824c3d8c) + DAT_1824c4520;
    iVar13 = SUB84(local_1d8,0);
    if (iVar16 < SUB84(local_1d8,0)) {
      iVar13 = iVar16;
    }
    puVar8 = (undefined4 *)FUN_181346420(param_1 + -8,local_1f0,0x1000600);
    local_res20 = CONCAT13(0x4c,(int3)*puVar8);
    FUN_181296c00(param_2,local_res20);
    iStack_21c = 1;
    if (iVar16 - iVar13 < 1) {
      iStack_21c = iVar16 - iVar13;
    }
    local_148 = CONCAT44(iVar15 + iVar13,iVar7 + 5);
    uStack_140 = CONCAT44(iStack_21c,iVar14);
    local_228 = iVar7 + 5;
    iStack_224 = iVar15 + iVar13;
    iStack_220 = iVar14;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_148,0);
    return;
  }
  if (param_12 == (uint *)0x0) {
    puVar9 = (uint *)FUN_181346420(param_1 + -8,local_1ec,0x1000600);
  }
  else {
    local_278[0] = *param_12;
    puVar9 = local_278;
  }
  dVar5 = DAT_1824c4520;
  iVar7 = 0;
  if (0 < param_3[2] + -2) {
    iVar7 = param_3[2] + -2;
  }
  iVar15 = 0;
  if (0 < param_3[3] + -2) {
    iVar15 = param_3[3] + -2;
  }
  iStack_294 = param_3[1] + 1;
  iVar14 = *param_3 + 1;
  local_298 = iVar14;
  iStack_290 = iVar7;
  iStack_28c = iVar15;
  local_27c = iStack_294;
  if (param_6 == '\0') {
    fVar17 = DAT_1824c3ea4;
    if (param_5 == '\0') goto LAB_1812f7d4c;
  }
  else {
    if (param_5 != '\0') {
      puVar8 = (undefined4 *)FUN_181346420(param_1 + -8,local_1e8,0x1000900);
      FUN_181296c00(param_2,*puVar8);
      local_138 = CONCAT44(iStack_294,local_298);
      uStack_130 = CONCAT44(iStack_28c,iStack_290);
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_138,0);
      puVar8 = (undefined4 *)FUN_181346420(param_1 + -8,local_1e4,0x1000800);
      uVar2 = *puVar8;
      goto LAB_1812f7d8c;
    }
LAB_1812f7d4c:
    fVar17 = DAT_1824c3d8c;
  }
  local_1d0 = (double)((float)(*puVar9 >> 0x18) * fVar17) + DAT_1824c4520;
  uVar12 = 0xff;
  if (SUB84(local_1d0,0) < 0xff) {
    uVar12 = SUB81(local_1d0,0);
  }
  local_280 = CONCAT13(uVar12,(int3)*puVar9);
  uVar2 = local_280;
LAB_1812f7d8c:
  FUN_181296c00(param_2,uVar2);
  iVar16 = local_27c;
  local_298 = 5;
  if (param_3[2] / 0x14 < 5) {
    local_298 = param_3[2] / 0x14;
  }
  iVar7 = local_298 * -2 + iVar7;
  iVar13 = 0;
  if (0 < iVar7) {
    iVar13 = iVar7;
  }
  iVar7 = 0;
  if (0 < iVar15) {
    iVar7 = iVar15;
  }
  local_298 = iVar14 + local_298;
  iStack_294 = local_27c;
  iStack_28c = iVar7;
  local_268 = iVar7;
  (**(code **)(*param_1 + 0x20))(param_1,&local_288);
  fVar17 = DAT_1824c3cb8;
  fVar19 = (float)iVar7 / DAT_1824c3f20;
  if (fVar19 < *(float *)(local_288 + 5)) {
    fVar18 = DAT_1824c3cb8;
    if ((DAT_1824c3cb8 <= fVar19) && (fVar18 = DAT_1824c45c8, fVar19 <= DAT_1824c45c8)) {
      fVar18 = fVar19;
    }
    if (*(float *)(local_288 + 5) != fVar18) {
      FUN_181252760(&local_288);
      *(float *)(local_288 + 5) = fVar18;
      plVar3 = (longlong *)local_288[2];
      if (((plVar3 != (longlong *)0x0) &&
          (*(code **)(*plVar3 + 8) !=
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
         (cVar6 = (**(code **)(*plVar3 + 8))(plVar3,&local_288), cVar6 == '\0')) {
        puVar4 = (undefined8 *)local_288[2];
        local_288[2] = 0;
        if (puVar4 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar4 + 1);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar15 == 1) {
            (**(code **)*puVar4)(puVar4,1);
          }
        }
      }
    }
  }
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_288);
  local_1c8 = (double)fVar19 + dVar5;
  local_178 = local_298;
  local_170 = SUB84(local_1c8,0);
  if (iVar13 < SUB84(local_1c8,0)) {
    local_170 = iVar13;
  }
  iVar15 = local_298 + local_170;
  iVar13 = iVar13 - local_170;
  fVar18 = (float)local_298;
  local_298 = iVar15;
  iStack_290 = iVar13;
  if (param_11 == (longlong *)0x0) {
    if (param_7 != '\0') {
      (**(code **)(param_1[-8] + 0x60))(param_1 + -8,&local_1a0);
      FUN_18129b390(&local_1a0,local_120);
      cVar6 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
      if (cVar6 == '\0') {
        for (pfVar11 = local_1a0; pfVar11 != local_1a0 + local_194; pfVar11 = pfVar11 + 1) {
          fVar17 = *pfVar11;
          if (fVar17 == DAT_1824c4600) {
            pfVar11 = pfVar11 + 2;
          }
          else if (((fVar17 == DAT_1824c45fc) || (fVar17 == DAT_1824c4604)) ||
                  (fVar17 == DAT_1824c4608)) {
            (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                      (*(longlong **)(param_2 + 8),&local_1a0,local_120);
            break;
          }
        }
      }
      local_194 = 0;
                    /* WARNING: Subroutine does not return */
      free(local_1a0);
    }
  }
  else {
    local_270[0] = 0x124;
    local_218 = fVar18;
    local_214 = (float)iVar16;
    local_210 = (float)local_170;
    local_20c = (float)iVar7;
    uVar10 = (**(code **)(*param_11 + 0x168))(param_11,local_108);
    FUN_1812971a0(local_270,local_e8,uVar10,&local_218);
    FUN_181332c20(param_11,param_2);
    local_1c0 = (double)(fVar19 * DAT_1824c3d8c) + dVar5;
    local_f0 = SUB84(local_1c0,0);
    if (iVar13 < SUB84(local_1c0,0)) {
      local_f0 = iVar13;
    }
    iVar13 = iVar13 - local_f0;
    local_298 = local_298 + local_f0;
  }
  if (param_8 == '\0') {
    iVar7 = 3;
    if (iVar13 < 3) {
      iVar7 = iVar13;
    }
    iVar13 = iVar13 - iVar7;
    local_168 = CONCAT44(iStack_294,local_298);
    uStack_160 = CONCAT44(iStack_28c,iVar13);
    local_1e0 = 0x21;
    iStack_290 = iVar13;
    FUN_181296100(param_2,param_9,&local_168,0x21,1,0);
    if (*(char *)*param_10 != '\0') {
      local_2a8[0] = local_288;
      if (local_288 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_288 + 1) = *(int *)(local_288 + 1) + 1;
        UNLOCK();
        iVar13 = iStack_290;
      }
      fVar19 = *(float *)(local_288 + 5) * DAT_1824c3e10;
      if ((fVar17 <= fVar19) && (fVar17 = DAT_1824c45c8, fVar19 <= DAT_1824c45c8)) {
        fVar17 = fVar19;
      }
      if (*(float *)(local_288 + 5) != fVar17) {
        FUN_181252760(local_2a8);
        *(float *)(local_2a8[0] + 5) = fVar17;
        plVar3 = (longlong *)local_2a8[0][2];
        if (((plVar3 != (longlong *)0x0) &&
            (*(code **)(*plVar3 + 8) !=
             .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
             vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
           (cVar6 = (**(code **)(*plVar3 + 8))(plVar3,local_2a8), cVar6 == '\0')) {
          puVar4 = (undefined8 *)local_2a8[0][2];
          local_2a8[0][2] = 0;
          if (puVar4 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(puVar4 + 1);
            iVar7 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            iVar13 = iStack_290;
            if (iVar7 == 1) {
              (**(code **)*puVar4)(puVar4,1);
              iVar13 = iStack_290;
            }
          }
        }
      }
      FUN_181252760(local_2a8);
      *(undefined4 *)((longlong)local_2a8[0] + 0x2c) = 0x3f733333;
      plVar3 = (longlong *)local_2a8[0][2];
      if (((plVar3 != (longlong *)0x0) &&
          (*(code **)(*plVar3 + 8) !=
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
         (cVar6 = (**(code **)(*plVar3 + 8))(plVar3,local_2a8), cVar6 == '\0')) {
        puVar4 = (undefined8 *)local_2a8[0][2];
        local_2a8[0][2] = 0;
        if (puVar4 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar4 + 1);
          iVar7 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          iVar13 = iStack_290;
          if (iVar7 == 1) {
            (**(code **)*puVar4)(puVar4,1);
            iVar13 = iStack_290;
          }
        }
      }
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),local_2a8);
      fStack_1a4 = (float)iStack_28c;
      fStack_1a8 = (float)iVar13;
      fStack_1ac = (float)iStack_294;
      local_1b0 = (float)local_298;
      local_158 = local_1b0;
      fStack_154 = fStack_1ac;
      fStack_150 = fStack_1a8;
      fStack_14c = fStack_1a4;
      FUN_1812963b0(param_2,param_10,&local_158,0x22,1);
      if (local_2a8[0] != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_2a8[0] + 1);
        iVar7 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar7 == 1) {
          (**(code **)*local_2a8[0])(local_2a8[0],1);
        }
      }
    }
    if (local_288 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_288 + 1);
      iVar7 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*local_288)(local_288,1);
      }
    }
    return;
  }
  iStack_290 = iVar13;
  uVar10 = (**(code **)(*param_1 + 0x20))(param_1,&local_1b8);
  fVar17 = (float)FUN_181251a10(uVar10);
  fVar17 = fVar17 * DAT_1824c3db8;
  if (local_1b8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_1b8 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    iVar13 = iStack_290;
    if (iVar7 == 1) {
      (**(code **)*local_1b8)(local_1b8,1);
      iVar13 = iStack_290;
    }
  }
  iVar7 = (int)fVar17;
  if (iVar13 < iVar7) {
    iVar7 = iVar13;
  }
  local_250 = (float)((local_298 - iVar7) + iVar13);
  local_260 = (void *)0x0;
  local_258 = 0;
  local_240 = 1;
  local_248 = (float)(local_27c + local_268 / 2) - fVar17 * DAT_1824c3d8c;
  local_24c = local_250;
  local_244 = local_248;
  FUN_1804b02a0(&local_260,&DAT_1821df344);
  FUN_18129ddd0(&local_260);
  FUN_18129ddd0(&local_260);
  local_208 = _DAT_1824c4780;
  uStack_200 = _UNK_1824c4788;
  local_1f8 = 0x3f800000;
  local_238 = 0x40000000;
  local_230 = 0;
  FUN_181295d20(param_2,&local_260,&local_238,&local_208);
  local_258 = local_258 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_260);
}



############ FUN_ 1812f8a90 size=299 ############

void FUN_1812f8a90(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  longlong param_5)

{
  bool bVar1;
  longlong lVar2;
  char cVar3;
  longlong lVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  
  lVar2 = param_5;
  lVar4 = __RTDynamicCast(*(undefined8 *)(param_5 + 0x18),0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::AlertWindow::RTTI_Type_Descriptor,0);
  if (((lVar4 == 0) && ((*(byte *)(lVar2 + 0xa9) & 0x10) == 0)) &&
     ((lVar4 = DAT_182673708, *(longlong *)(lVar2 + 0x18) == 0 ||
      (cVar3 = FUN_18133eaa0(), lVar4 = DAT_182673708, cVar3 != '\0')))) {
    for (; lVar4 != lVar2; lVar4 = *(longlong *)(lVar4 + 0x18)) {
      bVar1 = false;
      if (lVar4 == 0) goto LAB_1812f8b29;
    }
    bVar1 = true;
LAB_1812f8b29:
    if ((bVar1) && (cVar3 = FUN_1812e1d20(lVar2), cVar3 == '\0')) {
      puVar5 = (undefined4 *)FUN_18134a8d0(lVar2,&param_5,0x1000206,0);
      FUN_181296c00(param_2,*puVar5);
      uVar6 = 2;
    }
    else {
      puVar5 = (undefined4 *)FUN_18134a8d0(lVar2,&param_5,0x1000205,0);
      FUN_181296c00(param_2,*puVar5);
      uVar6 = 1;
    }
    FUN_181295c90(param_2,0,0,param_3,param_4,uVar6);
  }
  return;
}



############ FUN_ 1812f8bd0 size=297 ############

void FUN_1812f8bd0(undefined8 param_1,longlong param_2,int param_3,int param_4,longlong param_5)

{
  longlong lVar1;
  longlong lVar2;
  undefined4 *puVar3;
  longlong local_18;
  float local_10;
  int local_c;
  
  lVar1 = param_5;
  lVar2 = __RTDynamicCast(*(undefined8 *)(param_5 + 0x18),0,&juce::Component::RTTI_Type_Descriptor,
                          &juce::AlertWindow::RTTI_Type_Descriptor,0);
  if (lVar2 == 0) {
    puVar3 = (undefined4 *)FUN_18134a8d0(lVar1,&param_5,0x1000200,0);
    FUN_1812a3160(param_2,*puVar3);
  }
  else {
    puVar3 = (undefined4 *)FUN_18134a8d0(lVar1,&param_5,0x1000200,0);
    FUN_181296c00(param_2,*puVar3);
    local_18 = 0;
    local_10 = (float)param_3;
    local_c = param_4;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_18,0);
    puVar3 = (undefined4 *)FUN_18134a8d0(lVar1,&param_5,0x1000205,0);
    FUN_181296c00(param_2,*puVar3);
    if (0.0 < (float)param_3) {
      local_10 = (float)param_3 - 0.0;
      local_18 = (ulonglong)(uint)(float)(param_4 + -1) << 0x20;
      local_c = DAT_1824c3ea4;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_18);
    }
  }
  return;
}



############ FUN_ 1812f8f00 size=383 ############

void FUN_1812f8f00(undefined8 param_1,undefined8 param_2,undefined8 param_3,float param_4,
                  float param_5,int param_6,int param_7,uint param_8,float param_9,int param_10,
                  uint param_11)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  float local_18;
  float fStack_14;
  float fStack_10;
  float fStack_c;
  
  if ((char)param_8 == '\0') {
    local_18 = param_9;
    fStack_14 = param_5;
    fStack_c = (float)param_7;
    param_6 = param_10;
  }
  else {
    fStack_14 = param_9;
    fStack_c = (float)param_10;
    local_18 = param_4;
  }
  fStack_10 = (float)param_6;
  FUN_18134a8d0(param_3,&param_8,0x1000400,0);
  uVar1 = param_8;
  if ((char)param_11 != '\0') {
    param_11 = CONCAT13(param_8._3_1_,
                        CONCAT12((char)(int)(DAT_1824c4548 -
                                            (float)(int)(0xff - (param_8 >> 0x10 & 0xff)) *
                                            DAT_1824c3e28),
                                 CONCAT11((char)(int)(DAT_1824c4548 -
                                                     (float)(int)(0xff - (param_8 >> 8 & 0xff)) *
                                                     DAT_1824c3e28),
                                          (char)(int)(DAT_1824c4548 -
                                                     (float)(int)(0xff - (param_8 & 0xff)) *
                                                     DAT_1824c3e28))));
    uVar1 = param_11;
  }
  FUN_181296c00(param_2,uVar1);
  iVar4 = (int)local_18 + 1;
  iVar3 = (int)fStack_c + -2;
  iVar2 = 0;
  if (0 < (int)fStack_10 + -2) {
    iVar2 = (int)fStack_10 + -2;
  }
  iVar5 = 0;
  if (0 < iVar3) {
    iVar5 = iVar3;
  }
  _local_18 = CONCAT44((float)((int)fStack_14 + 1),(float)iVar4);
  _fStack_10 = CONCAT44((float)iVar5,(float)iVar2);
  FUN_181295300(param_2,&local_18,iVar3,iVar4);
  return;
}



############ FUN_ 1812f9600 size=1963 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812f9600(ulonglong param_1,longlong param_2,longlong param_3,int param_4,int param_5,
                  double param_6)

{
  longlong *plVar1;
  int iVar2;
  float fVar3;
  float fVar4;
  char cVar5;
  DWORD DVar6;
  longlong lVar7;
  int iVar8;
  float *pfVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  ulonglong local_res8;
  undefined4 local_res18 [2];
  undefined4 uVar15;
  float *local_1e8;
  undefined8 local_1e0;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined1 local_1c8;
  float local_1c0;
  longlong *local_1b8;
  float local_1b0;
  undefined **local_1a8 [3];
  undefined8 *local_190;
  undefined8 *local_188;
  undefined1 local_180;
  undefined8 local_178;
  float local_170;
  float local_16c;
  undefined8 local_168;
  float local_160;
  float local_15c;
  undefined8 local_158;
  float local_150;
  float local_14c;
  undefined8 local_138;
  undefined8 uStack_130;
  ulonglong local_128;
  undefined8 local_120;
  undefined8 uStack_118;
  ulonglong local_110;
  float *local_108;
  ulonglong local_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined1 local_e8;
  undefined8 local_e0;
  
  local_e0 = 0xfffffffffffffffe;
  local_res8 = param_1;
  FUN_18134a8d0(param_3,local_res18,0x1001900,0);
  FUN_18134a8d0(param_3,&local_res8,0x1001a00,0);
  fVar11 = (float)*(int *)(param_3 + 0x2c);
  fVar12 = (float)*(int *)(param_3 + 0x28);
  local_1c0 = fVar11;
  local_1b0 = fVar12;
  FUN_181296c00(param_2,local_res18[0]);
  fVar3 = DAT_1824c3d8c;
  local_178 = 0;
  local_170 = fVar12;
  local_16c = fVar11;
  FUN_181295300(param_2,&local_178,(float)*(int *)(param_3 + 0x2c) * DAT_1824c3d8c);
  if ((param_6 < 0.0) || (DAT_1824c4140 < param_6)) {
    FUN_181296c00(param_2,local_res18[0]);
    iVar2 = param_5 * 2;
    DVar6 = timeGetTime();
    fVar4 = DAT_1824c460c;
    if (DVar6 < DAT_1826737fc) {
      if (DVar6 < DAT_1826737fc - 1000) {
        LOCK();
        UNLOCK();
        DAT_1826737fc = DVar6;
      }
    }
    else {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar6;
    }
    iVar8 = 0;
    local_1e8 = (float *)0x0;
    local_1e0 = 0;
    local_1d8 = 0;
    uStack_1d0 = 0;
    local_1c8 = 1;
    fVar10 = (float)-(0 % iVar2);
    if (fVar10 < (float)(iVar2 + param_4)) {
      fVar13 = (float)param_5;
      fVar14 = (float)iVar2 * fVar3;
      do {
        fVar12 = fVar10 - fVar14;
        fVar11 = fVar14 + fVar10;
        if (iVar8 == 0) {
          local_1d8 = CONCAT44(fVar10,fVar10);
          uStack_1d0 = 0;
        }
        else {
          if ((float)local_1d8 <= fVar10) {
            if (local_1d8._4_4_ < fVar10) {
              local_1d8 = CONCAT44(fVar10,(float)local_1d8);
            }
          }
          else {
            local_1d8 = CONCAT44(local_1d8._4_4_,fVar10);
          }
          if ((float)uStack_1d0 <= 0.0) {
            if (uStack_1d0._4_4_ < 0.0) {
              uStack_1d0 = uStack_1d0 & 0xffffffff;
            }
          }
          else {
            uStack_1d0 = (ulonglong)(uint)uStack_1d0._4_4_ << 0x20;
          }
        }
        FUN_1804b02a0(&local_1e8,&DAT_1821df344,iVar8,0);
        if (local_1e0._4_4_ == 0) {
          local_1d8 = 0;
          uStack_1d0 = 0;
          FUN_1804b02a0(&local_1e8,&DAT_1821df344);
        }
        FUN_1804b02a0(&local_1e8,&DAT_1821dfcb4);
        if ((float)local_1d8 <= fVar11) {
          if (local_1d8._4_4_ < fVar11) {
            local_1d8 = CONCAT44(fVar11,(float)local_1d8);
          }
        }
        else {
          local_1d8 = CONCAT44(local_1d8._4_4_,fVar11);
        }
        fVar11 = uStack_1d0._4_4_;
        if ((float)uStack_1d0 <= 0.0) {
          if (uStack_1d0._4_4_ < 0.0) {
            fVar11 = 0.0;
            uStack_1d0 = uStack_1d0 & 0xffffffff;
          }
        }
        else {
          uStack_1d0 = (ulonglong)(uint)uStack_1d0._4_4_ << 0x20;
        }
        if (local_1e0._4_4_ == 0) {
          local_1d8 = 0;
          uStack_1d0 = 0;
          FUN_1804b02a0(&local_1e8,fVar11);
        }
        FUN_1804b02a0(&local_1e8,&DAT_1821dfcb4);
        if ((float)local_1d8 <= fVar10) {
          if (local_1d8._4_4_ < fVar10) {
            local_1d8 = CONCAT44(fVar10,(float)local_1d8);
          }
        }
        else {
          local_1d8 = CONCAT44(local_1d8._4_4_,fVar10);
        }
        if ((float)uStack_1d0 <= fVar13) {
          if (uStack_1d0._4_4_ < fVar13) {
            uStack_1d0 = CONCAT44(fVar13,(float)uStack_1d0);
          }
        }
        else {
          uStack_1d0 = CONCAT44(uStack_1d0._4_4_,fVar13);
        }
        if (local_1e0._4_4_ == 0) {
          local_1d8 = 0;
          uStack_1d0 = 0;
          FUN_1804b02a0(&local_1e8,&DAT_1821df344);
        }
        FUN_1804b02a0(&local_1e8,&DAT_1821dfcb4);
        if ((float)local_1d8 <= fVar12) {
          if (local_1d8._4_4_ < fVar12) {
            local_1d8 = CONCAT44(fVar12,(float)local_1d8);
          }
        }
        else {
          local_1d8 = CONCAT44(local_1d8._4_4_,fVar12);
        }
        if ((float)uStack_1d0 <= fVar13) {
          if (uStack_1d0._4_4_ < fVar13) {
            uStack_1d0 = CONCAT44(fVar13,(float)uStack_1d0);
          }
        }
        else {
          uStack_1d0 = CONCAT44(uStack_1d0._4_4_,fVar13);
        }
        iVar8 = local_1e0._4_4_;
        if ((local_1e0._4_4_ != 0) &&
           ((local_1e0._4_4_ < 1 || (local_1e8[local_1e0._4_4_ + -1] != fVar4)))) {
          iVar8 = local_1e0._4_4_ + 1;
          if ((int)local_1e0 < iVar8) {
            if (iVar8 < 0) {
              iVar8 = local_1e0._4_4_ + 2;
            }
            FUN_1804af790(&local_1e8,local_1e0._4_4_ + 9 + (iVar8 >> 1) & 0xfffffff8);
          }
          lVar7 = (longlong)local_1e0._4_4_;
          iVar8 = local_1e0._4_4_ + 1;
          local_1e0 = CONCAT44(iVar8,(int)local_1e0);
          local_1e8[lVar7] = 100005.0;
        }
        fVar10 = fVar10 + (float)iVar2;
        fVar12 = local_1b0;
        fVar11 = local_1c0;
      } while (fVar10 < (float)(iVar2 + param_4));
    }
    local_1a8[0] = juce::NativeImageType::vftable;
    (*(code *)PTR_FUN_1824988f0)(local_1a8,&local_1b8,2,param_4,param_5,1);
    local_1a8[0] = juce::ImageType::vftable;
    if (local_1b8 == (longlong *)0x0) {
      local_190 = (undefined8 *)0x0;
    }
    else {
      (**(code **)(*local_1b8 + 8))(local_1b8,&local_190);
    }
    local_180 = 0;
    local_188 = local_190;
    FUN_181296c00(&local_190,local_res8 & 0xffffffff);
    local_158 = 0;
    local_150 = fVar12;
    local_14c = fVar11;
    FUN_181295300(&local_190,&local_158,(float)*(int *)(param_3 + 0x2c) * fVar3);
    if (local_190 != (undefined8 *)0x0) {
      (**(code **)*local_190)(local_190,1);
    }
    uVar15 = DAT_1824c3e4c;
    FUN_181296850(param_2,&local_1b8);
    cVar5 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
    if (cVar5 == '\0') {
      for (pfVar9 = local_1e8; pfVar9 != local_1e8 + local_1e0._4_4_; pfVar9 = pfVar9 + 1) {
        fVar11 = *pfVar9;
        if (fVar11 == DAT_1824c4600) {
          pfVar9 = pfVar9 + 2;
        }
        else if (((fVar11 == DAT_1824c45fc) || (fVar11 == DAT_1824c4604)) ||
                (fVar11 == DAT_1824c4608)) {
          local_120 = _DAT_1824c4780;
          uStack_118 = _UNK_1824c4788;
          local_110 = (ulonglong)DAT_1824c3ea4;
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                    (*(longlong **)(param_2 + 8),&local_1e8,&local_120,DAT_1824c4604,uVar15);
          break;
        }
      }
    }
    if (local_1b8 != (longlong *)0x0) {
      LOCK();
      plVar1 = local_1b8 + 1;
      lVar7 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar7 == 1) {
        (**(code **)*local_1b8)(local_1b8,1);
      }
    }
    local_1e0 = local_1e0 & 0xffffffff;
    pfVar9 = local_1e8;
  }
  else {
    local_108 = (float *)0x0;
    local_100 = 0;
    local_f8 = 0;
    uStack_f0 = 0;
    local_e8 = 1;
    FUN_18129d5a0(&local_108,0);
    local_138 = _DAT_1824c4780;
    uStack_130 = _UNK_1824c4788;
    local_128 = (ulonglong)DAT_1824c3ea4;
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0x40))
              (*(longlong **)(param_2 + 8),&local_108,&local_138);
    (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
    FUN_181296c00(param_2,local_res8 & 0xffffffff);
    local_168 = 0;
    local_160 = (float)param_6 * fVar12;
    local_15c = fVar11;
    FUN_181295300(param_2,&local_168,(float)*(int *)(param_3 + 0x2c) * fVar3);
    local_100 = local_100 & 0xffffffff;
    pfVar9 = local_108;
  }
                    /* WARNING: Subroutine does not return */
  free(pfVar9);
}



############ FUN_ 1812fab70 size=587 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fab70(longlong param_1,longlong param_2,undefined8 param_3,float param_4,float param_5,
                  float param_6,float param_7,char param_8)

{
  float fVar1;
  char cVar2;
  undefined4 *puVar3;
  float *pfVar4;
  undefined1 local_res20 [8];
  undefined8 uVar5;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  float local_88;
  float local_84;
  float *local_78;
  int local_6c;
  float local_68;
  float local_64;
  float local_60;
  float local_5c;
  
  uVar5 = 0xfffffffffffffffe;
  puVar3 = (undefined4 *)FUN_18134a8d0(param_3,local_res20,0x1006503,0,0xfffffffffffffffe);
  FUN_181296c00(param_2,*puVar3);
  local_94 = param_5;
  local_90 = param_6;
  local_8c = param_7;
  local_98 = param_4;
  FUN_181295190(param_2,&local_98,DAT_1824c4334,DAT_1824c3ea4);
  if (param_8 == '\0') {
    return;
  }
  puVar3 = (undefined4 *)FUN_18134a8d0(param_3,&param_8,0x1006502,0,uVar5);
  FUN_181296c00(param_2,*puVar3);
  (**(code **)(*(longlong *)(param_1 + -8) + 0x60))
            ((longlong *)(param_1 + -8),&local_78,DAT_1824c3e10);
  param_6 = param_6 - DAT_1824c43d8;
  if (param_6 <= 0.0) {
    param_6 = 0.0;
  }
  param_7 = param_7 - DAT_1824c43e8;
  if (param_7 <= 0.0) {
    param_7 = 0.0;
  }
  local_88 = param_7 / (local_5c - local_60);
  local_98 = param_6 / (local_64 - local_68);
  local_8c = local_88 * 0.0;
  local_94 = local_98 * 0.0;
  local_84 = (float)((uint)local_60 ^ DAT_1824c4f30) * local_88 + (param_5 - _DAT_1824c46f8);
  local_90 = (param_4 - DAT_1824c46e8) + (float)((uint)local_68 ^ DAT_1824c4f30) * local_98;
  cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar2 == '\0') {
    for (pfVar4 = local_78; pfVar4 != local_78 + local_6c; pfVar4 = pfVar4 + 1) {
      fVar1 = *pfVar4;
      if (fVar1 == DAT_1824c4600) {
        pfVar4 = pfVar4 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_78,&local_98);
        break;
      }
    }
  }
  local_6c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 1812fadd0 size=490 ############

void FUN_1812fadd0(longlong *param_1,longlong param_2,longlong param_3,undefined1 param_4,
                  undefined1 param_5)

{
  int iVar1;
  char cVar2;
  undefined1 uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined1 uVar6;
  float fVar7;
  float fVar8;
  int local_res8;
  ulonglong local_48;
  int iStack_40;
  undefined4 uStack_3c;
  
  fVar7 = (float)*(int *)(param_3 + 0x2c) * DAT_1824c3e10;
  if (DAT_1824c4418 <= fVar7) {
    fVar7 = DAT_1824c4418;
  }
  fVar8 = fVar7 * DAT_1824c3ee0;
  if ((*(byte *)(param_3 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_3 + 0x18) != 0) {
      cVar2 = FUN_18133eaa0();
      if (cVar2 == '\0') goto LAB_1812fae40;
    }
    uVar6 = 1;
  }
  else {
LAB_1812fae40:
    uVar6 = 0;
  }
  uVar3 = FUN_1804d6ee0(param_3);
  (**(code **)(*param_1 + 0x38))
            (param_1,param_2,param_3,DAT_1824c4334,
             ((float)*(int *)(param_3 + 0x2c) - fVar8) * DAT_1824c3d8c,fVar8,fVar8,uVar3,uVar6,
             param_4,param_5);
  puVar4 = (undefined4 *)FUN_18134a8d0(param_3,&param_5,0x1006501,0);
  FUN_181296c00(param_2,*puVar4);
  FUN_1812966f0(param_2,fVar7);
  if ((*(byte *)(param_3 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_3 + 0x18) == 0) goto LAB_1812faf14;
    cVar2 = FUN_18133eaa0();
    if (cVar2 != '\0') goto LAB_1812faf14;
  }
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x90))(*(longlong **)(param_2 + 8),DAT_1824c3d8c);
LAB_1812faf14:
  local_res8 = SUB84((double)fVar8 + DAT_1824c4520,0);
  iVar5 = *(int *)(param_3 + 0x28) - (local_res8 + 10U);
  local_48 = (ulonglong)(local_res8 + 10U);
  iVar1 = 0;
  if (0 < iVar5) {
    iVar1 = iVar5;
  }
  iVar5 = 0;
  if (0 < iVar1 + -2) {
    iVar5 = iVar1 + -2;
  }
  _iStack_40 = CONCAT44(*(undefined4 *)(param_3 + 0x2c),iVar5);
  FUN_181296100(param_2,param_3 + 0x158,&local_48,0x21,10,0);
  return;
}



############ FUN_ 1812fafc0 size=1073 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fafc0(undefined8 param_1,longlong param_2,longlong param_3,uint *param_4,char param_5,
                  char param_6)

{
  float fVar1;
  undefined4 uVar2;
  longlong lVar3;
  bool bVar4;
  char cVar5;
  undefined1 uVar6;
  uint uVar7;
  undefined4 *puVar8;
  undefined1 uVar9;
  uint uVar10;
  float *pfVar11;
  uint uVar12;
  byte bVar13;
  undefined1 uVar14;
  uint *puVar15;
  undefined1 uVar16;
  float fVar17;
  undefined4 uVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  undefined4 local_res18;
  double local_res20;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined8 local_c8;
  float *local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined1 local_98;
  ulonglong local_90;
  ulonglong uStack_88;
  undefined8 local_80;
  undefined8 local_78;
  
  fVar1 = DAT_1824c3ea4;
  local_78 = 0xfffffffffffffffe;
  fVar21 = (float)*(int *)(param_3 + 0x28) - DAT_1824c3ea4;
  if (fVar21 <= 0.0) {
    fVar21 = 0.0;
  }
  fVar22 = (float)*(int *)(param_3 + 0x2c) - DAT_1824c3ea4;
  if (fVar22 <= 0.0) {
    fVar22 = 0.0;
  }
  puVar15 = param_4;
  fVar20 = DAT_1824c3d8c;
  if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_3 + 0x18) == 0 ||
      (cVar5 = FUN_18133eaa0(), fVar20 = DAT_1824c3d8c, cVar5 != '\0')))) {
    fVar20 = fVar1;
  }
  bVar4 = false;
  for (lVar3 = DAT_182673708; lVar3 != param_3; lVar3 = *(longlong *)(lVar3 + 0x18)) {
    if (lVar3 == 0) goto LAB_1812fb08c;
  }
  bVar4 = true;
LAB_1812fb08c:
  fVar19 = DAT_1824c3e58;
  if (bVar4) {
    fVar19 = DAT_1824c3f20;
  }
  FUN_18049fa40(&local_d8,*puVar15);
  fVar17 = local_d8._4_4_ * fVar19;
  if (fVar1 <= local_d8._4_4_ * fVar19) {
    fVar17 = fVar1;
  }
  FUN_18049fbb0(&local_res18,local_d8 & 0xffffffff,fVar17,(undefined4)uStack_d0,*param_4 >> 0x18);
  local_res20 = (double)((float)(local_res18 >> 0x18) * fVar20) + DAT_1824c4520;
  uVar16 = 0xff;
  if (SUB84(local_res20,0) < 0xff) {
    uVar16 = SUB81(local_res20,0);
  }
  local_res18 = CONCAT13(uVar16,(undefined3)local_res18);
  uVar18 = DAT_1824c3d18;
  if ((param_6 != '\0') || (uVar18 = DAT_1824c3c94, uVar2 = local_res18, param_5 != '\0')) {
    puVar8 = (undefined4 *)FUN_1812a24b0(&local_res18,&param_6,uVar18);
    uVar2 = *puVar8;
  }
  FUN_181296c00(param_2,uVar2);
  uVar18 = DAT_1824c4388;
  uVar7 = *(uint *)(param_3 + 0x198);
  uVar10 = uVar7 >> 1;
  uVar12 = uVar7 >> 2;
  uVar7 = uVar7 >> 3;
  bVar13 = *(byte *)(param_3 + 0x198) & 1;
  if ((((bVar13 == 0) && ((uVar10 & 1) == 0)) && ((uVar12 & 1) == 0)) && ((uVar7 & 1) == 0)) {
    local_d8 = 0x3f0000003f000000;
    uStack_d0 = CONCAT44(fVar22,fVar21);
    FUN_181295300(param_2,&local_d8,DAT_1824c4388);
    puVar8 = (undefined4 *)FUN_18134a8d0(param_3,&param_6,0x1000c00,0);
    FUN_181296c00(param_2,*puVar8);
    local_d8 = 0x3f0000003f000000;
    uStack_d0 = CONCAT44(fVar22,fVar21);
    FUN_181295190(param_2,&local_d8,uVar18,fVar1);
    return;
  }
  local_b8 = (float *)0x0;
  local_b0 = 0;
  local_a8 = 0;
  uStack_a0 = 0;
  local_98 = 1;
  if (((uVar10 & 1) == 0) && ((uVar7 & 1) == 0)) {
    uVar16 = 1;
  }
  else {
    uVar16 = 0;
  }
  if ((bVar13 == 0) && ((uVar7 & 1) == 0)) {
    uVar14 = 1;
  }
  else {
    uVar14 = 0;
  }
  if (((uVar10 & 1) == 0) && ((uVar12 & 1) == 0)) {
    uVar9 = 1;
  }
  else {
    uVar9 = 0;
  }
  if ((bVar13 == 0) && ((uVar12 & 1) == 0)) {
    uVar6 = 1;
  }
  else {
    uVar6 = 0;
  }
  FUN_18129d5a0(&local_b8,DAT_1824c3d8c,bVar13,fVar21,fVar22,DAT_1824c4388,DAT_1824c4388,uVar6,uVar9
                ,uVar14,uVar16);
  cVar5 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar5 == '\0') {
    for (pfVar11 = local_b8; pfVar11 != local_b8 + local_b0._4_4_; pfVar11 = pfVar11 + 1) {
      fVar1 = *pfVar11;
      if (fVar1 == DAT_1824c4600) {
        pfVar11 = pfVar11 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        local_d8 = _DAT_1824c4780;
        uStack_d0 = _UNK_1824c4788;
        local_c8 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_b8,&local_d8);
        break;
      }
    }
  }
  puVar8 = (undefined4 *)FUN_18134a8d0(param_3,&param_6,0x1000c00,0);
  FUN_181296c00(param_2,*puVar8);
  local_90 = _DAT_1824c4780;
  uStack_88 = _UNK_1824c4788;
  local_80 = 0x3f800000;
  local_d8 = 0x3f800000;
  uStack_d0 = uStack_d0 & 0xffffffff00000000;
  FUN_181295d20(param_2,&local_b8,&local_d8,&local_90);
  local_b0 = local_b0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 1812fc8d0 size=1195 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fc8d0(undefined8 param_1,longlong param_2,int param_3,int param_4,longlong param_5,
                  undefined8 *param_6)

{
  float fVar1;
  char cVar2;
  undefined8 uVar3;
  float *pfVar4;
  float fVar5;
  float fVar6;
  undefined1 uVar7;
  undefined4 uVar8;
  uint local_98 [2];
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  float *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  
  local_90 = 0xfffffffffffffffe;
  FUN_18134a8d0(param_5,local_98,0x100ad01,1);
  if (*(char *)*param_6 != '\0') {
    if (((*(byte *)(param_5 + 0xa9) & 0x10) == 0) &&
       ((*(longlong *)(param_5 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
      fVar5 = DAT_1824c3d74;
      if ((*(int *)(param_5 + 0x1a0) != 2) &&
         (fVar5 = DAT_1824c3cb8, *(int *)(param_5 + 0x1a0) != 0)) {
        fVar5 = DAT_1824c3d18;
      }
      FUN_181296c00(param_2,CONCAT13((char)(int)(fVar5 * DAT_1824c454c),(int3)local_98[0]));
      local_88 = 0;
      uStack_80 = CONCAT44((float)*(int *)(param_5 + 0x2c),(float)*(int *)(param_5 + 0x28));
      FUN_181295300(param_2,&local_88);
      local_88 = 0;
      uStack_80 = CONCAT44((float)*(int *)(param_5 + 0x2c),(float)*(int *)(param_5 + 0x28));
      FUN_181295190(param_2,&local_88);
    }
    FUN_181296c00(param_2,local_98[0]);
    FUN_1812966f0(param_2,(float)param_4 * DAT_1824c3db8);
    uStack_80 = CONCAT44(param_4,param_3 + -8);
    local_88 = 4;
    FUN_181296100(param_2,param_6,&local_88,0x24,1,0);
    if (DAT_182673708 == param_5) {
      FUN_181296c00(param_2,CONCAT13(0x66,(int3)local_98[0]));
      FUN_181295c90(param_2,0,0,param_3,param_4,1);
    }
    return;
  }
  local_68 = (float *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  local_88 = _DAT_1824c4ec0;
  uStack_80 = _UNK_1824c4ec8;
  FUN_18129d1e0(&local_68,&local_88);
  FUN_18129d850(&local_68);
  FUN_18129d850(&local_68);
  FUN_18129d850(&local_68);
  local_48 = 0;
  fVar5 = DAT_1824c3df0;
  if ((*(int *)(param_5 + 0x1a0) != 2) && (fVar5 = DAT_1824c3d54, *(int *)(param_5 + 0x1a0) != 0)) {
    fVar5 = DAT_1824c3d8c;
  }
  if (0.0 < fVar5) {
    if (fVar5 < DAT_1824c3ea4) {
      uVar7 = (undefined1)(int)(fVar5 * DAT_1824c454c);
    }
    else {
      uVar7 = 0xff;
    }
  }
  else {
    uVar7 = 0;
  }
  FUN_181296c00(param_2,CONCAT13(uVar7,CONCAT12((char)(int)((float)(local_98[0] >> 0x10 & 0xff) *
                                                           DAT_1824c3e5c),
                                                CONCAT11((char)(int)((float)(local_98[0] >> 8 & 0xff
                                                                            ) * DAT_1824c3e5c),
                                                         (char)(int)((float)(local_98[0] & 0xff) *
                                                                    DAT_1824c3e5c)))));
  fVar6 = (float)param_4 - DAT_1824c4334;
  fVar5 = (float)param_3 - DAT_1824c4334;
  uVar8 = 0x24;
  uVar7 = 1;
  uVar3 = FUN_18129b390(&local_68,&local_88);
  cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar2 == '\0') {
    for (pfVar4 = local_68; pfVar4 != local_68 + local_60._4_4_; pfVar4 = pfVar4 + 1) {
      fVar1 = *pfVar4;
      if (fVar1 == DAT_1824c4600) {
        pfVar4 = pfVar4 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_68,uVar3,local_68 + local_60._4_4_,fVar5,fVar6
                   ,uVar7,uVar8);
        break;
      }
    }
  }
  local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 1812fcd90 size=731 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fcd90(undefined8 param_1,longlong param_2,undefined4 param_3,int param_4,
                  undefined8 param_5,undefined8 param_6)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined1 auVar3 [12];
  undefined1 auVar4 [12];
  undefined8 uVar5;
  uint *puVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar15 [16];
  undefined1 auVar16 [16];
  float fVar17;
  float fVar18;
  float fVar19;
  undefined4 local_res18;
  undefined4 local_res20;
  longlong local_b8;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined4 local_80;
  float local_7c;
  undefined1 local_78;
  void *local_70;
  undefined8 local_68;
  
  FUN_18134a8d0(param_6,&local_res18,0x1000700,0,0xfffffffffffffffe);
  uVar12 = local_res18;
  uVar14 = local_res18 >> 0x10 & 0xff;
  fVar19 = (float)uVar14 / DAT_1824c4548;
  uVar10 = local_res18 >> 8 & 0xff;
  fVar18 = (float)uVar10 / DAT_1824c4548;
  uVar11 = local_res18 & 0xff;
  fVar17 = (float)uVar11 / DAT_1824c4548;
  fVar17 = sqrtf(fVar18 * fVar18 * _DAT_1824c3dec + fVar19 * fVar19 * _DAT_1824c3d2c +
                 fVar17 * fVar17 * _DAT_1824c3ca0);
  puVar6 = &DAT_18262b598;
  if (DAT_1824c3d8c <= fVar17) {
    puVar6 = &DAT_18262b59c;
  }
  uVar2 = *puVar6;
  local_res20._0_3_ = (undefined3)uVar2;
  local_res20 = CONCAT13(0x26,(undefined3)local_res20);
  uVar8 = local_res20;
  if (local_res18._3_1_ != 0) {
    iVar7 = 0xff - (local_res20 >> 0x18);
    iVar13 = 0xff - ((int)((0xff - (uint)local_res18._3_1_) * iVar7) >> 8);
    uVar8 = uVar12;
    if (0 < iVar13) {
      iVar7 = (int)(iVar7 * (uint)local_res18._3_1_) / iVar13;
      local_res20._0_1_ = (char)uVar2;
      local_res20._0_1_ = (char)((uVar11 - (uVar2 & 0xff)) * iVar7 >> 8) + (char)local_res20;
      local_res20._0_3_ =
           CONCAT12((char)((uVar14 - ((uVar2 & 0xff0000) >> 0x10)) * iVar7 >> 8) +
                    (char)(uVar2 >> 0x10),
                    CONCAT11((char)((uVar10 - ((uVar2 & 0xff00) >> 8)) * iVar7 >> 8) +
                             (char)(uVar2 >> 8),(char)local_res20));
      local_res20 = CONCAT13((char)iVar13,(undefined3)local_res20);
      uVar8 = local_res20;
    }
  }
  FUN_181296c00(param_2,uVar8);
  iVar7 = 1;
  if (param_4 < 1) {
    iVar7 = param_4;
  }
  iVar9 = param_4 - iVar7;
  uStack_90 = CONCAT44(iVar7,param_3);
  local_98 = 0;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_98,0);
  iVar13 = 1;
  if (iVar9 < 1) {
    iVar13 = iVar9;
  }
  uVar12 = (iVar7 - iVar13) + iVar9;
  local_b8 = (ulonglong)uVar12 << 0x20;
  local_98 = local_b8;
  uStack_90._0_4_ = param_3;
  uStack_90._4_4_ = iVar13;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_98,0);
  uVar5 = DAT_1824c4140;
  local_res20 = CONCAT13(local_res18._3_1_,
                         CONCAT12((char)(int)((float)(local_res18 >> 0x10 & 0xff) * DAT_1824c3e6c),
                                  CONCAT11((char)(int)((float)(local_res18 >> 8 & 0xff) *
                                                      DAT_1824c3e6c),
                                           (char)(int)((float)(local_res18 & 0xff) * DAT_1824c3e6c))
                                 ));
  local_7c = (float)param_4;
  local_88 = 0;
  local_80 = 0;
  local_78 = 0;
  local_70 = (void *)0x0;
  local_68 = 0;
  uStack_90._0_4_ = local_res20;
  FUN_18049ba20(&local_70,8);
  iVar7 = local_68._4_4_ + 1;
  auVar3._4_8_ = extraout_XMM0_Qb;
  auVar3._0_4_ = uVar12;
  auVar15._0_8_ = auVar3._0_8_ << 0x20;
  auVar15._8_4_ = local_res18;
  auVar15._12_4_ = iVar13;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)local_68._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = auVar15._8_8_;
  local_68 = CONCAT44(local_68._4_4_ + 2,(undefined4)local_68);
  auVar4._4_8_ = auVar15._8_8_;
  auVar4._0_4_ = local_98._4_4_;
  auVar16._0_8_ = auVar4._0_8_ << 0x20;
  auVar16._8_4_ = (undefined4)uStack_90;
  auVar16._12_4_ = uStack_90._4_4_;
  uStack_90 = auVar16._8_8_;
  local_98 = uVar5;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)iVar7 * 0x10);
  *puVar1 = uVar5;
  puVar1[1] = uStack_90;
  FUN_181296970(param_2,&local_88);
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 1812fd0c0 size=153 ############

void FUN_1812fd0c0(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 local_res8;
  undefined1 local_18 [16];
  
  puVar1 = (undefined4 *)FUN_181346420(param_1 + -0x40,&local_res8,0x1000700);
  FUN_1812a3160(param_2,*puVar1);
  puVar1 = (undefined4 *)FUN_181346420(param_1 + -0x40,local_18,0x1000600);
  local_res8 = CONCAT13(0x99,(int3)*puVar1);
  FUN_181296c00(param_2,local_res8);
  FUN_181295c90(param_2,0,0,param_3,param_4,1);
  return;
}



############ FUN_ 1812fdeb0 size=1153 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fdeb0(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  undefined8 param_5,int param_6,int param_7,int param_8,int param_9,double param_10
                  )

{
  longlong lVar1;
  char cVar2;
  undefined4 *puVar3;
  longlong lVar4;
  uint *puVar5;
  float *pfVar6;
  undefined1 uVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  undefined1 local_res10 [8];
  undefined4 uVar16;
  undefined8 local_c0;
  undefined8 uStack_b8;
  undefined8 local_b0;
  float *local_a8;
  undefined8 local_a0;
  float local_98;
  float local_94;
  float local_90;
  float local_8c;
  undefined1 local_88;
  
  lVar1 = (longlong)param_10;
  puVar3 = (undefined4 *)FUN_18134a8d0(param_10,local_res10,0x1000b00,0);
  FUN_1812a3160(param_2,*puVar3);
  if (((*(byte *)(lVar1 + 0xa9) & 0x10) == 0) &&
     (((*(longlong *)(lVar1 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')) &&
      (DAT_182673708 == lVar1)))) {
    puVar3 = (undefined4 *)FUN_18134a8d0(lVar1,&param_10,0x1000f00,0);
    FUN_181296c00(param_2,*puVar3);
    uVar16 = 2;
  }
  else {
    puVar3 = (undefined4 *)FUN_18134a8d0(lVar1,&param_10,0x1000c00,0);
    FUN_181296c00(param_2,*puVar3);
    uVar16 = 1;
  }
  FUN_181295c90(param_2,0,0,param_3,param_4,uVar16);
  local_a8 = (float *)0x0;
  local_a0._0_4_ = 0;
  local_a0._4_4_ = 0;
  local_88 = 1;
  fVar12 = (float)param_8;
  fVar8 = (float)param_6;
  fVar14 = fVar12 * DAT_1824c3d54 + fVar8;
  fVar11 = (float)param_9;
  fVar13 = (float)param_7;
  fVar9 = fVar11 * DAT_1824c3d80 + fVar13;
  fVar15 = fVar12 * DAT_1824c3df0 + fVar8;
  fVar8 = fVar12 * DAT_1824c3d8c + fVar8;
  local_90 = fVar11 * _DAT_1824c3d38 + fVar13;
  local_98 = fVar8;
  local_94 = fVar8;
  local_8c = local_90;
  FUN_1804b02a0(&local_a8,&DAT_1821df344,fVar8);
  FUN_18129ddd0(&local_a8,fVar15,fVar9);
  FUN_18129ddd0(&local_a8,fVar14,fVar9);
  if ((local_a0._4_4_ != 0) &&
     ((local_a0._4_4_ < 1 || (local_a8[local_a0._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_a0 < local_a0._4_4_ + 1) {
      FUN_1804af790(&local_a8,local_a0._4_4_ + 9 + (local_a0._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_a0._4_4_ = 1;
    *local_a8 = 100005.0;
  }
  fVar10 = fVar11 * DAT_1824c3da8 + fVar13;
  fVar13 = fVar11 * DAT_1824c3e10 + fVar13;
  fVar9 = fVar8;
  fVar11 = fVar8;
  fVar12 = fVar13;
  if (local_a0._4_4_ != 0) {
    if ((local_98 <= fVar8) && (fVar9 = local_98, local_94 < fVar8)) {
      local_94 = fVar8;
    }
    local_98 = fVar9;
    if ((fVar13 < local_90) ||
       (fVar9 = local_98, fVar11 = local_94, fVar12 = local_90, fVar13 <= local_8c))
    goto LAB_1812fe151;
  }
  local_90 = fVar12;
  local_94 = fVar11;
  local_98 = fVar9;
  fVar12 = local_90;
  local_8c = fVar13;
LAB_1812fe151:
  local_90 = fVar12;
  FUN_1804b02a0(&local_a8,&DAT_1821df344,fVar8,fVar13);
  FUN_18129ddd0(&local_a8,fVar15,fVar10);
  FUN_18129ddd0(&local_a8,fVar14,fVar10);
  if ((local_a0._4_4_ != 0) &&
     ((local_a0._4_4_ < 1 || (local_a8[local_a0._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_a0 < local_a0._4_4_ + 1) {
      FUN_1804af790(&local_a8,local_a0._4_4_ + 9 + (local_a0._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar4 = (longlong)local_a0._4_4_;
    local_a0._4_4_ = local_a0._4_4_ + 1;
    local_a8[lVar4] = 100005.0;
  }
  fVar8 = DAT_1824c3ea4;
  if (((*(byte *)(lVar1 + 0xa9) & 0x10) != 0) ||
     ((*(longlong *)(lVar1 + 0x18) != 0 && (cVar2 = FUN_18133eaa0(), cVar2 == '\0')))) {
    fVar8 = DAT_1824c3d54;
  }
  puVar5 = (uint *)FUN_18134a8d0(lVar1,&param_6,0x1000e00,0);
  param_10 = (double)((float)(*puVar5 >> 0x18) * fVar8) + DAT_1824c4520;
  uVar7 = 0xff;
  if (SUB84(param_10,0) < 0xff) {
    uVar7 = SUB81(param_10,0);
  }
  param_8 = CONCAT13(uVar7,(int3)*puVar5);
  FUN_181296c00(param_2,param_8);
  cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar2 == '\0') {
    for (pfVar6 = local_a8; pfVar6 != local_a8 + local_a0._4_4_; pfVar6 = pfVar6 + 1) {
      fVar8 = *pfVar6;
      if (fVar8 == DAT_1824c4600) {
        pfVar6 = pfVar6 + 2;
      }
      else if (((fVar8 == DAT_1824c45fc) || (fVar8 == DAT_1824c4604)) || (fVar8 == DAT_1824c4608)) {
        local_c0 = _DAT_1824c4780;
        uStack_b8 = _UNK_1824c4788;
        local_b0 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_a8,&local_c0);
        break;
      }
    }
  }
  local_a0 = (ulonglong)(uint)local_a0;
                    /* WARNING: Subroutine does not return */
  free(local_a8);
}



############ FUN_ 1812fe3a0 size=646 ############

void FUN_1812fe3a0(undefined8 param_1,longlong param_2,float *param_3,undefined4 param_4,
                  char param_5,char param_6)

{
  float fVar1;
  undefined1 uVar2;
  char cVar3;
  undefined4 *puVar4;
  float *pfVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  undefined4 local_res20 [2];
  undefined1 local_90 [24];
  float *local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined1 local_58;
  
  fVar7 = DAT_1824c3d8c;
  local_78 = (float *)0x0;
  local_70._0_4_ = 0;
  local_70._4_4_ = 0;
  local_58 = 1;
  if (param_5 == '\0') {
    fVar6 = 0.0;
    fVar8 = DAT_1824c3d8c;
  }
  else {
    fVar8 = 0.0;
    fVar6 = DAT_1824c3d8c;
  }
  local_68 = 0;
  local_60 = 0;
  local_res20[0] = param_4;
  FUN_1804b02a0(&local_78,&DAT_1821df344,0,0);
  fVar1 = DAT_1824c3ea4;
  FUN_18129ddd0(&local_78,DAT_1824c3ea4,fVar8);
  FUN_18129ddd0(&local_78,fVar6,fVar1);
  if ((local_70._4_4_ != 0) &&
     ((local_70._4_4_ < 1 || (local_78[local_70._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_70 < local_70._4_4_ + 1) {
      FUN_1804af790(&local_78,local_70._4_4_ + 9 + (local_70._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_70._4_4_ = 1;
    *local_78 = 100005.0;
  }
  if (param_6 == '\0') {
    fVar7 = DAT_1824c3d54;
  }
  puVar4 = (undefined4 *)FUN_1812a24b0(local_res20,&param_6,fVar1);
  if (0.0 < fVar7) {
    if (fVar7 < fVar1) {
      uVar2 = (undefined1)(int)(fVar7 * DAT_1824c454c);
    }
    else {
      uVar2 = 0xff;
    }
  }
  else {
    uVar2 = 0;
  }
  _param_5 = CONCAT13(uVar2,(int3)*puVar4);
  FUN_181296c00(param_2,_param_5);
  fVar7 = (float)((uint)(param_3[3] * DAT_1824c3d3c) ^ DAT_1824c4f30);
  fVar8 = param_3[2] - DAT_1824c4334;
  if (fVar8 <= 0.0) {
    fVar8 = 0.0;
  }
  fVar6 = fVar7 * DAT_1824c41e0 + param_3[3];
  if (fVar6 <= 0.0) {
    fVar6 = 0.0;
  }
  FUN_18129b390(&local_78,local_90,*param_3 - DAT_1824c46a8,param_3[1] - fVar7,fVar8,fVar6,1,0x24);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    for (pfVar5 = local_78; pfVar5 != local_78 + local_70._4_4_; pfVar5 = pfVar5 + 1) {
      fVar7 = *pfVar5;
      if (fVar7 == DAT_1824c4600) {
        pfVar5 = pfVar5 + 2;
      }
      else if (((fVar7 == DAT_1824c45fc) || (fVar7 == DAT_1824c4604)) || (fVar7 == DAT_1824c4608)) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_78,local_90);
        break;
      }
    }
  }
  local_70 = (ulonglong)(uint)local_70;
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 1812fe660 size=257 ############

void FUN_1812fe660(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  longlong param_5)

{
  bool bVar1;
  longlong lVar2;
  char cVar3;
  undefined4 *puVar4;
  longlong lVar5;
  longlong lVar6;
  undefined4 uVar7;
  
  if (((*(byte *)(param_5 + 0xa9) & 0x10) == 0) &&
     ((lVar6 = *(longlong *)(param_5 + 0x18), lVar2 = DAT_182673708, lVar5 = param_5, lVar6 == 0 ||
      (cVar3 = FUN_18133eaa0(lVar6), lVar2 = DAT_182673708, cVar3 != '\0')))) {
    for (; lVar2 != lVar5; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      if (lVar2 == 0) {
        bVar1 = false;
        goto LAB_1812fe6cc;
      }
    }
    bVar1 = true;
LAB_1812fe6cc:
    if (((bVar1) && (*(char *)(lVar5 + 0x1ec) == '\0')) &&
       ((lVar6 == 0 || (cVar3 = FUN_18133eaa0(lVar6), cVar3 != '\0')))) {
      puVar4 = (undefined4 *)FUN_18134a8d0(lVar5,&param_5,0x1000206,0);
      FUN_181296c00(param_2,*puVar4);
      uVar7 = 2;
    }
    else {
      puVar4 = (undefined4 *)FUN_18134a8d0(lVar5,&param_5,0x1000205,0);
      FUN_181296c00(param_2,*puVar4);
      uVar7 = 1;
    }
    FUN_181295c90(param_2,0,0,param_3,param_4,uVar7);
  }
  return;
}



############ FUN_ 1812fe770 size=703 ############

void FUN_1812fe770(undefined8 param_1,longlong param_2,longlong param_3,int param_4,int param_5)

{
  undefined8 *puVar1;
  undefined1 auVar2 [12];
  undefined1 auVar3 [12];
  undefined8 uVar4;
  longlong lVar5;
  char cVar6;
  undefined4 *puVar7;
  int iVar8;
  int iVar9;
  float fVar10;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar11 [16];
  undefined1 auVar12 [16];
  undefined4 local_res10;
  longlong local_res18 [2];
  ulonglong local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined4 uStack_a4;
  undefined4 uStack_9c;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78;
  void *local_70;
  undefined8 local_68;
  
  local_c8 = 0;
  uStack_c0 = 0;
  fVar10 = DAT_1824c3c90;
  local_res18[0] = param_3;
  if (((*(byte *)(param_2 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_2 + 0x18) == 0 ||
      (cVar6 = FUN_18133eaa0(), fVar10 = DAT_1824c3c90, cVar6 != '\0')))) {
    fVar10 = DAT_1824c3cac;
  }
  uVar4 = DAT_1824c4140;
  local_res10 = CONCAT13((char)(int)(fVar10 * DAT_1824c454c),(int3)DAT_18262b5b8);
  local_88 = 0;
  uStack_80 = 0;
  local_78 = 0;
  local_b8._4_4_ = 0;
  local_70 = (void *)0x0;
  local_68 = 0;
  uStack_90._0_4_ = DAT_182673b60;
  FUN_18049ba20(&local_70,8);
  lVar5 = local_res18[0];
  iVar9 = local_68._4_4_ + 1;
  auVar2._4_8_ = extraout_XMM0_Qb;
  auVar2._0_4_ = uStack_a4;
  auVar11._0_8_ = auVar2._0_8_ << 0x20;
  auVar11._8_4_ = local_res10;
  auVar11._12_4_ = uStack_9c;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)local_68._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = auVar11._8_8_;
  local_68 = CONCAT44(local_68._4_4_ + 2,(undefined4)local_68);
  auVar3._4_8_ = auVar11._8_8_;
  auVar3._0_4_ = local_98._4_4_;
  auVar12._0_8_ = auVar3._0_8_ << 0x20;
  auVar12._8_4_ = (undefined4)uStack_90;
  auVar12._12_4_ = uStack_90._4_4_;
  uStack_90 = auVar12._8_8_;
  local_98 = uVar4;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)iVar9 * 0x10);
  *puVar1 = uVar4;
  puVar1[1] = uStack_90;
  iVar9 = *(int *)(param_2 + 0xf8);
  iVar8 = 0;
  local_b8._0_4_ = iVar8;
  if (iVar9 == 0) {
    local_88 = CONCAT44((float)param_5,(undefined4)local_88);
    fVar10 = (float)param_5 * DAT_1824c3e4c;
    local_b8._4_4_ = (int)fVar10;
    uStack_b0._4_4_ = param_5 - local_b8._4_4_;
    local_c8 = (ulonglong)(param_5 - 1) << 0x20;
  }
  else {
    if (iVar9 != 1) {
      uStack_b0._4_4_ = param_5;
      if (iVar9 == 2) {
        local_88 = CONCAT44(local_88._4_4_,(float)param_4);
        fVar10 = (float)param_4 * DAT_1824c3e4c;
        uStack_80 = CONCAT44(uStack_80._4_4_,fVar10);
        local_b8._0_4_ = (int)fVar10;
        uStack_b0._0_4_ = param_4 - (int)local_b8;
        local_c8 = (ulonglong)(param_4 - 1);
        uStack_c0 = CONCAT44(param_5,1);
        local_b8._4_4_ = iVar8;
      }
      else if (iVar9 == 3) {
        uStack_80 = CONCAT44(uStack_80._4_4_,(float)param_4 * DAT_1824c3d04);
        uStack_b0._0_4_ = (int)((float)param_4 * DAT_1824c3d04);
        local_c8 = 0;
        uStack_c0 = CONCAT44(param_5,1);
      }
      else {
        uStack_b0._4_4_ = 0;
        uStack_b0._0_4_ = 0;
        local_b8._4_4_ = 0;
        local_b8._0_4_ = 0;
      }
      goto LAB_1812fe96f;
    }
    fVar10 = (float)param_5 * DAT_1824c3d04;
    uStack_b0._4_4_ = (int)fVar10;
    local_c8 = 0;
  }
  uStack_c0 = CONCAT44(1,param_4);
  uStack_80 = CONCAT44(fVar10,(undefined4)uStack_80);
  uStack_b0._0_4_ = param_4;
LAB_1812fe96f:
  FUN_181296a90(local_res18[0],&local_88);
  if (0 < (int)uStack_b0 + 4) {
    iVar8 = (int)uStack_b0 + 4;
  }
  iVar9 = 0;
  if (0 < uStack_b0._4_4_ + 4) {
    iVar9 = uStack_b0._4_4_ + 4;
  }
  local_b8 = CONCAT44(local_b8._4_4_ + -2,(int)local_b8 + -2);
  uStack_b0 = CONCAT44(iVar9,iVar8);
  local_98 = local_b8;
  uStack_90 = uStack_b0;
  (**(code **)(**(longlong **)(lVar5 + 8) + 0xa8))(*(longlong **)(lVar5 + 8),&local_98,0);
  puVar7 = (undefined4 *)FUN_18134a8d0(param_2,local_res18,0x1005812,0);
  FUN_181296c00(lVar5,*puVar7);
  local_98 = local_c8;
  uStack_90 = uStack_c0;
  (**(code **)(**(longlong **)(lVar5 + 8) + 0xa8))(*(longlong **)(lVar5 + 8),&local_98,0);
                    /* WARNING: Could not recover jumptable at 0x0001812fea28. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_70);
  return;
}



############ FUN_ 1812fea40 size=2399 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812fea40(longlong param_1,longlong param_2,longlong param_3,char param_4,char param_5)

{
  uint uVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  uint *puVar8;
  undefined8 *puVar9;
  int iVar10;
  longlong lVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  undefined1 uVar16;
  uint uVar17;
  int iVar18;
  int iVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  undefined4 uVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  undefined4 local_res10;
  undefined8 local_res18;
  char local_res20;
  ulonglong in_stack_fffffffffffffe98;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined8 local_118;
  void *local_110;
  ulonglong local_108;
  undefined8 local_100;
  undefined4 local_f8;
  undefined8 local_f0;
  undefined1 local_e8 [24];
  void *local_d0;
  undefined4 local_c4;
  
  local_f0 = 0xfffffffffffffffe;
  local_res20 = param_4;
  FUN_18131a490(param_2,&local_158);
  lVar2 = *(longlong *)(param_2 + 0x1c8);
  iVar4 = *(int *)(lVar2 + 0xf8);
  uVar17 = *(int *)(lVar2 + 0xf4) - 1;
  lVar11 = (longlong)(int)uVar17;
  if (-1 < (int)uVar17) {
    do {
      if (**(longlong **)(*(longlong *)(lVar2 + 0xe8) + lVar11 * 8) == param_2) goto LAB_1812feae8;
      uVar17 = uVar17 - 1;
      lVar11 = lVar11 + -1;
    } while (-1 < lVar11);
  }
  uVar17 = 0xffffffff;
LAB_1812feae8:
  uVar13 = DAT_182673b60;
  if ((uVar17 < *(uint *)(lVar2 + 0xf4)) &&
     (lVar2 = *(longlong *)(*(longlong *)(lVar2 + 0xe8) + (longlong)(int)uVar17 * 8), lVar2 != 0)) {
    uVar13 = *(uint *)(lVar2 + 0x10);
  }
  local_res10 = uVar13;
  cVar3 = FUN_1804d6ee0(param_2);
  fVar21 = DAT_1824c4548;
  iVar12 = (int)local_158;
  iVar10 = local_158._4_4_;
  iVar18 = (int)uStack_150;
  iVar19 = uStack_150._4_4_;
  if (cVar3 != '\0') {
    FUN_181296c00(param_3,uVar13);
    (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_158,0);
    puVar7 = (undefined4 *)FUN_18134a8d0(param_2,&local_res18,0x1005812,0);
    FUN_181296c00(param_3,*puVar7);
    iVar12 = (int)(uStack_150 >> 0x20);
    if (iVar4 == 1) {
      local_res18 = (double)CONCAT44(local_res18._4_4_,local_158._4_4_);
      iVar10 = local_158._4_4_;
    }
    else {
      iVar5 = 1;
      if (iVar19 < 1) {
        iVar5 = iVar19;
      }
      uStack_130 = CONCAT44(iVar5,iVar18);
      local_res18 = (double)CONCAT44(local_res18._4_4_,iVar10 + iVar5);
      iVar12 = iVar12 - iVar5;
      (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_138,0);
      iVar10 = (uint)local_res18;
    }
    iVar18 = (int)uStack_150;
    iVar19 = (int)local_158;
    if (iVar4 != 0) {
      iVar5 = 1;
      if (iVar12 < 1) {
        iVar5 = iVar12;
      }
      local_158 = CONCAT44((iVar10 - iVar5) + iVar12,(int)local_158);
      uStack_150 = CONCAT44(iVar5,(int)uStack_150);
      iVar12 = iVar12 - iVar5;
      (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_158,0);
    }
    if (iVar4 != 3) {
      local_158 = CONCAT44((uint)local_res18,iVar19);
      iVar10 = 1;
      if (iVar18 < 1) {
        iVar10 = iVar18;
      }
      uStack_150 = CONCAT44(iVar12,iVar10);
      iVar19 = iVar19 + iVar10;
      iVar18 = iVar18 - iVar10;
      (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_158,0);
    }
    if (iVar4 != 2) {
      iVar10 = 1;
      if (iVar18 < 1) {
        iVar10 = iVar18;
      }
      local_158 = CONCAT44((uint)local_res18,(iVar19 - iVar10) + iVar18);
      uStack_150 = CONCAT44(iVar12,iVar10);
      (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_158,0);
    }
    fVar24 = DAT_1824c3d54;
    if ((((*(byte *)(param_2 + 0xa9) & 0x10) == 0) &&
        (((*(longlong *)(param_2 + 0x18) == 0 ||
          (cVar3 = FUN_18133eaa0(), fVar24 = DAT_1824c3d54, cVar3 != '\0')) &&
         (fVar24 = DAT_1824c3ea4, local_res20 == '\0')))) && (param_5 == '\0')) {
      fVar24 = DAT_1824c3e28;
    }
    uVar17 = local_res10 >> 0x10 & 0xff;
    fVar22 = (float)uVar17 / fVar21;
    uVar15 = local_res10 >> 8 & 0xff;
    fVar20 = (float)uVar15 / fVar21;
    fVar21 = (float)(uVar13 & 0xff) / fVar21;
    fVar21 = sqrtf(fVar20 * fVar20 * _DAT_1824c3dec + fVar22 * fVar22 * _DAT_1824c3d2c +
                   fVar21 * fVar21 * _DAT_1824c3ca0);
    puVar8 = &DAT_18262b598;
    if (DAT_1824c3d8c <= fVar21) {
      puVar8 = &DAT_18262b59c;
    }
    uVar1 = *puVar8;
    local_res18._0_3_ = (undefined3)uVar1;
    local_res18._0_4_ = CONCAT13(0xff,(undefined3)local_res18);
    uVar14 = (uint)local_res18;
    if (local_res10._3_1_ != 0) {
      iVar10 = 0xff - ((uint)local_res18 >> 0x18);
      iVar19 = 0xff - ((int)((0xff - (uint)local_res10._3_1_) * iVar10) >> 8);
      uVar14 = uVar13;
      if (0 < iVar19) {
        iVar10 = (int)(iVar10 * (uint)local_res10._3_1_) / iVar19;
        local_res18._0_1_ = (char)uVar1;
        local_res10._0_3_ =
             CONCAT12((char)((uVar17 - ((uVar1 & 0xff0000) >> 0x10)) * iVar10 >> 8) +
                      (char)(uVar1 >> 0x10),
                      CONCAT11((char)((uVar15 - ((uVar1 & 0xff00) >> 8)) * iVar10 >> 8) +
                               (char)(uVar1 >> 8),
                               (char)(((uVar13 & 0xff) - (uVar1 & 0xff)) * iVar10 >> 8) +
                               (char)local_res18));
        local_res10 = CONCAT13((char)iVar19,(undefined3)local_res10);
        uVar14 = local_res10;
      }
    }
    local_res18 = (double)((float)(uVar14 >> 0x18) * fVar24) + DAT_1824c4520;
    uVar16 = 0xff;
    if (SUB84(local_res18,0) < 0xff) {
      uVar16 = SUB81(local_res18,0);
    }
    local_res10._0_3_ = (undefined3)uVar14;
    local_res10 = CONCAT13(uVar16,(undefined3)local_res10);
    for (lVar2 = *(longlong *)(param_2 + 0x18); lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      in_stack_fffffffffffffe98 = in_stack_fffffffffffffe98 & 0xffffffff00000000;
      lVar11 = __RTDynamicCast(lVar2,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::TabbedButtonBar::RTTI_Type_Descriptor,
                               in_stack_fffffffffffffe98);
      if (lVar11 != 0) {
        cVar3 = FUN_1804d6ee0(param_2);
        uVar23 = 0x1005813;
        if (cVar3 != '\0') {
          uVar23 = 0x1005815;
        }
        cVar3 = FUN_181341a70(lVar11,uVar23);
        if (cVar3 == '\0') {
          cVar3 = FUN_181315bd0(param_1 + -0x78,uVar23);
          if (cVar3 != '\0') {
            FUN_181346420(param_1 + -0x78,&local_res10,uVar23);
          }
        }
        else {
          FUN_18134a8d0(lVar11,&local_res10,uVar23,0);
        }
        break;
      }
    }
    local_138 = 0;
    uStack_130 = 0;
    local_158 = 0;
    uStack_150 = 0;
    FUN_18131a590(param_2,&local_138,&local_158);
    fVar25 = (float)uStack_150._4_4_;
    fVar26 = (float)(int)uStack_150;
    fVar22 = (float)local_158._4_4_;
    fVar20 = (float)(int)local_158;
    fVar21 = fVar26;
    fVar24 = fVar25;
    if (*(int *)(*(longlong *)(param_2 + 0x1c8) + 0xf8) - 2U < 2) {
      fVar21 = fVar25;
      fVar24 = fVar26;
    }
    local_110 = (void *)0x0;
    local_108 = 0;
    local_100 = 0;
    local_f8 = 9;
    FUN_1812ff3e0(param_2);
    local_128 = _DAT_1824c4780;
    uStack_120 = _UNK_1824c4788;
    local_118 = 0x3f800000;
    if (-1 < iVar4) {
      if (iVar4 < 2) {
        fVar22 = fVar22 + 0.0;
        local_158 = 0x3f800000;
        uStack_150 = (ulonglong)(uint)(fVar20 + 0.0);
        local_128 = 0x3f800000;
        uStack_120 = (ulonglong)(uint)(fVar20 + 0.0);
        fVar20 = DAT_1824c3ea4;
      }
      else {
        if (iVar4 == 2) {
          fVar22 = fVar22 + fVar25;
          uVar23 = DAT_1824c4690;
        }
        else {
          if (iVar4 != 3) goto LAB_1812ff337;
          fVar20 = fVar20 + fVar26;
          uVar23 = DAT_1824c3fa0;
        }
        puVar9 = (undefined8 *)FUN_1812a0880(&local_128,&local_158,uVar23);
        fVar22 = fVar22 + *(float *)((longlong)puVar9 + 0x14);
        local_128 = *puVar9;
        local_158 = *puVar9;
        uStack_150 = CONCAT44(*(undefined4 *)((longlong)puVar9 + 0xc),
                              fVar20 + *(float *)(puVar9 + 1));
        uStack_120 = CONCAT44(*(undefined4 *)((longlong)puVar9 + 0xc),
                              fVar20 + *(float *)(puVar9 + 1));
        fVar20 = *(float *)(puVar9 + 2);
      }
      local_118 = CONCAT44(fVar22,fVar20);
    }
LAB_1812ff337:
    if (*(char *)(param_3 + 0x10) != '\0') {
      *(undefined1 *)(param_3 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_3 + 8) + 0x18))(*(longlong **)(param_3 + 8),&local_128);
    local_158 = 0;
    uStack_150 = CONCAT44(fVar24,fVar21);
    FUN_18124e500(&local_110,param_3,&local_158);
    FUN_1804ae9d0(&local_110);
    local_108 = local_108 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_110);
  }
  local_138 = 0;
  local_res18 = 0.0;
  if (iVar4 == 0) {
    local_res18 = (double)CONCAT44(local_158._4_4_ + uStack_150._4_4_,iVar12);
  }
  else {
    if (iVar4 == 1) {
      local_138 = CONCAT44(local_158._4_4_ + uStack_150._4_4_,iVar12);
      local_res18 = (double)local_158;
      goto LAB_1812fec20;
    }
    if (iVar4 != 2) {
      if (iVar4 == 3) {
        local_res18 = (double)CONCAT44(local_158._4_4_,iVar12 + iVar18);
        local_138 = local_res18;
        local_res18 = (double)local_158;
      }
      goto LAB_1812fec20;
    }
    local_res18 = (double)CONCAT44(local_158._4_4_,iVar12 + iVar18);
  }
  local_138 = local_158;
LAB_1812fec20:
  iVar10 = (int)((ulonglong)local_res18 >> 0x20);
  fVar24 = (float)(int)(uint)local_res18;
  uVar17 = local_res10 >> 8 & 0xff;
  uVar15 = local_res10 >> 0x10 & 0xff;
  local_res18._0_3_ =
       CONCAT12((char)(int)((float)uVar15 * DAT_1824c3e5c),
                CONCAT11((char)(int)((float)uVar17 * DAT_1824c3e5c),
                         (char)(int)((float)(uVar13 & 0xff) * DAT_1824c3e5c)));
  local_res18._0_4_ = CONCAT13(local_res10._3_1_,(undefined3)local_res18);
  local_res18 = (double)CONCAT44(iVar10,(uint)local_res18);
  iVar4 = (int)((ulonglong)local_138 >> 0x20);
  fVar21 = (float)(int)local_138;
  local_138._0_4_ =
       CONCAT13(local_res10._3_1_,
                CONCAT12((char)(int)(DAT_1824c4548 - (float)(int)(0xff - uVar15) * DAT_1824c3e48),
                         CONCAT11((char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - uVar17) * DAT_1824c3e48),
                                  (char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - (uVar13 & 0xff)) * DAT_1824c3e48)))
               );
  local_138 = CONCAT44(iVar4,(int)local_138);
  uVar6 = FUN_1812a1c70(local_e8,(int)local_138,CONCAT44((float)iVar4,fVar21),(uint)local_res18,
                        CONCAT44((float)iVar10,fVar24),0);
  FUN_181296970(param_3,uVar6);
  local_c4 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_d0);
}



############ FUN_ 1812ff670 size=460 ############

void FUN_1812ff670(undefined8 param_1,longlong param_2,longlong param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  longlong *plVar3;
  int iVar4;
  longlong *plVar5;
  ulonglong uVar6;
  uint uVar7;
  int iVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  uint uVar11;
  ulonglong uVar12;
  undefined4 local_res10 [2];
  undefined1 local_res18 [16];
  int local_48;
  int iStack_44;
  uint uStack_40;
  int iStack_3c;
  undefined8 local_38;
  uint uStack_30;
  int iStack_2c;
  
  uVar1 = *(undefined4 *)(param_3 + 0x28);
  iVar8 = *(int *)(param_3 + 0x2c);
  uVar12 = 0;
  local_38 = 0;
  uStack_30 = uVar1;
  FUN_18134a8d0(param_3,local_res10,0x1003820,0);
  FUN_181296c00(param_2,local_res10[0]);
  iStack_3c = 1;
  if (iVar8 < 1) {
    iStack_3c = iVar8;
  }
  iStack_44 = iVar8 - iStack_3c;
  iStack_2c = iVar8 - iStack_3c;
  local_48 = 0;
  uStack_40 = uVar1;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_48,0);
  puVar2 = (undefined4 *)FUN_18134a8d0(param_3,local_res18,0x1003810,0);
  FUN_181296c00(param_2,*puVar2);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_38,0);
  FUN_181296c00(param_2,local_res10[0]);
  plVar5 = *(longlong **)(param_3 + 0xc0);
  uVar6 = (ulonglong)((longlong)(plVar5 + *(int *)(param_3 + 0xcc)) + (7 - (longlong)plVar5)) >> 3;
  if (plVar5 + *(int *)(param_3 + 0xcc) < plVar5) {
    uVar6 = uVar12;
  }
  uVar9 = uVar12;
  uVar10 = uVar12;
  uVar7 = 0;
  if (uVar6 != 0) {
    do {
      if ((*(byte *)(*plVar5 + 0xc) & 1) != 0) {
        uVar9 = (ulonglong)((int)uVar9 + 1);
      }
      uVar7 = (uint)uVar9;
      plVar5 = plVar5 + 1;
      uVar10 = uVar10 + 1;
    } while (uVar10 != uVar6);
  }
  iVar8 = uVar7 - 1;
  if (-1 < iVar8) {
    local_38 = 0;
    do {
      plVar3 = *(longlong **)(param_3 + 0xc0);
      plVar5 = plVar3 + *(int *)(param_3 + 0xcc);
      uVar7 = 0;
      uVar6 = uVar12;
      uVar9 = uVar12;
      uVar10 = uVar12;
      for (; uVar11 = (uint)uVar10, plVar3 != plVar5; plVar3 = plVar3 + 1) {
        uVar11 = uVar11 + (int)uVar9;
        uVar10 = (ulonglong)uVar11;
        uVar9 = uVar12;
        if ((*(byte *)(*plVar3 + 0xc) & 1) != 0) {
          uVar7 = *(uint *)(*plVar3 + 0x10);
          uVar9 = (ulonglong)uVar7;
          iVar4 = (int)uVar6;
          uVar6 = (ulonglong)(iVar4 + 1);
          if (iVar4 == iVar8) break;
        }
        uVar7 = (uint)uVar9;
      }
      iStack_3c = *(undefined4 *)(param_3 + 0x2c);
      uStack_40 = 1;
      if ((int)uVar7 < 1) {
        uStack_40 = uVar7;
      }
      local_48 = (uVar7 - uStack_40) + uVar11;
      local_38 = CONCAT44(local_38._4_4_,local_48);
      iStack_44 = local_38._4_4_;
      uStack_30 = uStack_40;
      iStack_2c = iStack_3c;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_48,0);
      iVar8 = iVar8 + -1;
    } while (-1 < iVar8);
  }
  return;
}



############ FUN_ 181300460 size=686 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181300460(undefined8 param_1,longlong param_2,undefined8 param_3,int param_4,int param_5,
                  int param_6,int param_7,char param_8,int param_9,uint param_10,char param_11,
                  char param_12)

{
  char cVar1;
  int iVar2;
  undefined4 *puVar3;
  float *pfVar4;
  undefined1 uVar5;
  float fVar6;
  float fVar7;
  double dVar8;
  float fVar9;
  float fVar10;
  undefined8 local_68;
  ulonglong uStack_60;
  undefined8 local_58;
  float *local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined1 local_30;
  undefined8 local_28;
  ulonglong uStack_20;
  undefined8 local_18;
  undefined8 local_10;
  
  local_10 = 0xfffffffffffffffe;
  local_50 = (float *)0x0;
  local_48 = 0;
  local_40 = 0;
  uStack_38 = 0;
  local_30 = 1;
  if (0 < (int)param_10) {
    iVar2 = param_7;
    if (param_8 != '\0') {
      iVar2 = param_6;
    }
    fVar10 = (float)iVar2 * DAT_1824c3d3c;
    fVar7 = fVar10 * DAT_1824c41e0;
    if (param_8 == '\0') {
      fVar6 = (float)param_7 - fVar7;
      fVar9 = (float)(int)param_10 - fVar7;
      param_4 = param_9;
      param_9 = param_5;
      fVar7 = fVar6;
    }
    else {
      fVar9 = (float)param_6 - fVar7;
      fVar6 = (float)(int)param_10 - fVar7;
      fVar7 = fVar9;
    }
    FUN_18129d5a0(&local_50,(float)param_4 + fVar10,(float)param_9 + fVar10,fVar9,fVar6,
                  fVar7 * DAT_1824c3d8c,fVar7 * DAT_1824c3d8c,1,1,1,1);
  }
  FUN_18134a8d0(param_3,&param_10,0x1000400,1);
  if ((param_11 != '\0') || (param_12 != '\0')) {
    dVar8 = (double)((float)(param_10 >> 0x18) * DAT_1824c41e0) + DAT_1824c4520;
    uVar5 = 0xff;
    if (SUB84(dVar8,0) < 0xff) {
      uVar5 = SUB81(dVar8,0);
    }
    param_10 = CONCAT13(uVar5,(undefined3)param_10);
  }
  FUN_181296c00(param_2,param_10);
  cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar1 == '\0') {
    for (pfVar4 = local_50; pfVar4 != local_50 + local_48._4_4_; pfVar4 = pfVar4 + 1) {
      fVar7 = *pfVar4;
      if (fVar7 == DAT_1824c4600) {
        pfVar4 = pfVar4 + 2;
      }
      else if (((fVar7 == DAT_1824c45fc) || (fVar7 == DAT_1824c4604)) || (fVar7 == DAT_1824c4608)) {
        local_68 = _DAT_1824c4780;
        uStack_60 = _UNK_1824c4788;
        local_58 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_50,&local_68);
        break;
      }
    }
  }
  puVar3 = (undefined4 *)FUN_1812a24b0(&param_10,&param_11);
  FUN_181296c00(param_2,*puVar3);
  local_28 = _DAT_1824c4780;
  uStack_20 = _UNK_1824c4788;
  local_18 = 0x3f800000;
  local_68 = 0x3f800000;
  uStack_60 = uStack_60 & 0xffffffff00000000;
  FUN_181295d20(param_2,&local_50,&local_68,&local_28);
  local_48 = local_48 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 1813013a0 size=318 ############

void FUN_1813013a0(undefined8 param_1,undefined8 param_2,int param_3,int param_4,char param_5,
                  char param_6)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 uVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float local_78;
  float fStack_74;
  float fStack_70;
  float fStack_6c;
  
  if ((param_5 != '\0') || (uVar4 = DAT_18262b5ac, param_6 != '\0')) {
    uVar4 = DAT_18262b5a0;
  }
  FUN_181296c00(param_2,uVar4);
  fVar3 = DAT_1824c3ea4;
  fVar2 = DAT_1824c3d54;
  iVar1 = param_3;
  if (param_4 < param_3) {
    iVar1 = param_4;
  }
  fVar7 = 0.0;
  fVar5 = (float)param_4 + DAT_1824c3ea4;
  fVar6 = (float)param_3 + DAT_1824c3ea4;
  fVar8 = (float)iVar1 * DAT_1824c3cb8;
  do {
    local_78 = (float)param_3 * fVar7;
    fStack_6c = (float)param_4 * fVar7;
    fStack_74 = fVar5;
    fStack_70 = fVar6;
    FUN_181294940(param_2,&local_78,fVar8);
    fVar7 = fVar7 + fVar2;
  } while (fVar7 < fVar3);
  return;
}



############ FUN_ 181301620 size=1668 ############

void FUN_181301620(undefined8 param_1,longlong param_2,int param_3,int param_4,int param_5,
                  int param_6,float param_7,undefined8 param_8,undefined8 param_9,int param_10,
                  longlong param_11)

{
  uint uVar1;
  float fVar2;
  double dVar3;
  int iVar4;
  longlong lVar5;
  char cVar6;
  undefined1 uVar7;
  undefined4 *puVar8;
  uint *puVar9;
  float fVar10;
  float fVar11;
  undefined8 local_a8;
  undefined8 local_a0;
  int local_98;
  int local_94;
  int local_90;
  int local_8c;
  int local_88;
  int local_84;
  
  lVar5 = param_11;
  puVar8 = (undefined4 *)FUN_18134a8d0(param_11,&local_a8,0x1001200,0);
  FUN_1812a3160(param_2,*puVar8);
  iVar4 = param_10;
  fVar2 = DAT_1824c3ea4;
  fVar11 = DAT_1824c3d54;
  if (param_10 == 2) {
    puVar8 = (undefined4 *)FUN_18134a8d0(lVar5,&param_10,0x1001300,0);
    FUN_181296c00(param_2,*puVar8);
    local_a0 = (double)CONCAT44(param_4,param_3);
    local_94 = param_6;
    local_98 = (int)param_7 - param_3;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_a0,0);
    puVar9 = (uint *)FUN_18134a8d0(lVar5,&local_a8,0x1001400,0);
    local_a0 = (double)((float)(*puVar9 >> 0x18) * DAT_1824c3d8c) + DAT_1824c4520;
    uVar7 = 0xff;
    if (SUB84(local_a0,0) < 0xff) {
      uVar7 = SUB81(local_a0,0);
    }
    param_10._0_3_ = (undefined3)*puVar9;
    param_10 = CONCAT13(uVar7,(undefined3)param_10);
    FUN_181296c00(param_2,param_10);
    FUN_181295c90(param_2,param_3,param_4,(int)param_7 - param_3,param_6,1);
  }
  else {
    if (((*(byte *)(lVar5 + 0xa9) & 0x10) == 0) &&
       ((*(longlong *)(lVar5 + 0x18) == 0 || (cVar6 = FUN_18133eaa0(), cVar6 != '\0')))) {
      fVar11 = fVar2;
    }
    puVar9 = (uint *)FUN_18134a8d0(lVar5,&local_a8,0x1001310,0);
    dVar3 = DAT_1824c4520;
    local_a0 = (double)((float)(*puVar9 >> 0x18) * fVar11) + DAT_1824c4520;
    uVar7 = 0xff;
    if (SUB84(local_a0,0) < 0xff) {
      uVar7 = SUB81(local_a0,0);
    }
    param_10._0_3_ = (undefined3)*puVar9;
    param_10 = CONCAT13(uVar7,(undefined3)param_10);
    FUN_181296c00(param_2,param_10);
    uVar1 = *(uint *)(*(longlong *)(lVar5 + 0x200) + 0x20);
    if ((uVar1 < 0xc) && ((0xa05U >> (uVar1 & 0x1f) & 1) != 0)) {
      local_88 = param_5;
      local_a8 = (double)((float)param_6 * DAT_1824c3d18) + dVar3;
      local_84 = (int)local_a8;
      local_a0 = (double)((float)param_6 * DAT_1824c3db8) + dVar3;
      local_8c = (int)local_a0 + param_4;
      local_90 = param_3;
    }
    else {
      fVar10 = (float)param_5;
      local_84 = param_6;
      fVar11 = fVar10 * DAT_1824c3cb8;
      if (DAT_1824c42d0 <= fVar10 * DAT_1824c3cb8) {
        fVar11 = DAT_1824c42d0;
      }
      local_a8 = (double)(fVar10 * DAT_1824c3d18) + dVar3;
      local_a0 = (double)(fVar10 * DAT_1824c3d8c - fVar11) + dVar3;
      local_90 = (int)local_a0 + param_3;
      local_8c = param_4;
      local_88 = 4;
      if (SUB84(local_a8,0) < 4) {
        local_88 = SUB84(local_a8,0);
      }
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_90,0);
    fVar10 = DAT_1824c3df0;
    fVar11 = DAT_1824c3d64;
    if (((*(byte *)(lVar5 + 0xa9) & 0x10) == 0) &&
       (((*(longlong *)(lVar5 + 0x18) == 0 || (cVar6 = FUN_18133eaa0(), cVar6 != '\0')) &&
        (cVar6 = FUN_18133e440(lVar5), fVar11 = fVar10, cVar6 != '\0')))) {
      fVar11 = fVar2;
    }
    puVar8 = (undefined4 *)FUN_18134a8d0(lVar5,&param_10,0x1001300,0);
    if (0.0 < fVar11) {
      if (fVar11 < fVar2) {
        uVar7 = (undefined1)(int)(fVar11 * DAT_1824c454c);
      }
      else {
        uVar7 = 0xff;
      }
    }
    else {
      uVar7 = 0;
    }
    local_a8._0_4_ = CONCAT13(uVar7,(int3)*puVar8);
    fVar11 = DAT_1824c454c;
    if (((*(byte *)(lVar5 + 0xa9) & 0x10) != 0) ||
       ((*(longlong *)(lVar5 + 0x18) != 0 && (cVar6 = FUN_18133eaa0(), cVar6 == '\0')))) {
      fVar10 = DAT_1824c3d64;
    }
    param_10._0_3_ = (undefined3)DAT_18262b5b8;
    param_10 = CONCAT13((char)(int)(fVar10 * fVar11),(undefined3)param_10);
    if ((iVar4 - 10U & 0xfffffffd) == 0) {
      FUN_181301cb0(param_2);
      FUN_181301cb0(param_2);
    }
    else if ((iVar4 - 9U & 0xfffffffd) == 0) {
      FUN_181301cb0(param_2);
      FUN_181301cb0(param_2);
    }
    if (((iVar4 == 0) || (iVar4 == 0xb)) || ((iVar4 == 1 || (iVar4 == 0xc)))) {
      FUN_181301cb0(param_2);
    }
  }
  return;
}



############ FUN_ 181301cb0 size=479 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181301cb0(longlong param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                  undefined4 param_9)

{
  float fVar1;
  char cVar2;
  float *pfVar3;
  float *local_78;
  undefined8 local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined1 local_58;
  undefined4 local_50;
  undefined8 uStack_4c;
  undefined4 uStack_44;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 uStack_30;
  undefined8 local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  local_78 = (float *)0x0;
  local_70._0_4_ = 0;
  local_70._4_4_ = 0;
  local_58 = 1;
  local_68 = param_2;
  local_64 = param_2;
  local_60 = param_3;
  local_5c = param_3;
  FUN_1804b02a0(&local_78,&DAT_1821df344,param_2,param_3);
  FUN_18129ddd0(&local_78,param_4,param_5);
  FUN_18129ddd0(&local_78,param_6,param_7);
  if ((local_70._4_4_ != 0) &&
     ((local_70._4_4_ < 1 || (local_78[local_70._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_70 < local_70._4_4_ + 1) {
      FUN_1804af790(&local_78,local_70._4_4_ + 9 + (local_70._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_70._4_4_ = 1;
    *local_78 = 100005.0;
  }
  FUN_181296c00(param_1,param_8);
  cVar2 = (**(code **)(**(longlong **)(param_1 + 8) + 0x60))();
  if (cVar2 == '\0') {
    for (pfVar3 = local_78; pfVar3 != local_78 + local_70._4_4_; pfVar3 = pfVar3 + 1) {
      fVar1 = *pfVar3;
      if (fVar1 == DAT_1824c4600) {
        pfVar3 = pfVar3 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        local_50 = _DAT_1824c4780;
        uStack_4c = CONCAT44(_UNK_1824c4788,_UNK_1824c4784);
        uStack_44 = _UNK_1824c478c;
        local_40 = 0x3f800000;
        (**(code **)(**(longlong **)(param_1 + 8) + 0xb8))
                  (*(longlong **)(param_1 + 8),&local_78,&local_50);
        break;
      }
    }
  }
  FUN_181296c00(param_1,param_9);
  local_38 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
  uStack_30 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
  local_28 = 0x3f800000;
  local_50 = DAT_1824c3d54;
  uStack_4c = 0;
  FUN_181295d20(param_1,&local_78,&local_50,&local_38);
  local_70 = (ulonglong)(uint)local_70;
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 181301f20 size=1218 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181301f20(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  char param_5,int param_6,int param_7,int param_8,int param_9,longlong param_10)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  char cVar5;
  undefined4 *puVar6;
  longlong lVar7;
  float *pfVar8;
  undefined4 uVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  undefined1 local_res10 [8];
  undefined8 local_d0;
  undefined8 uStack_c8;
  ulonglong local_c0;
  float *local_b8;
  undefined8 local_b0;
  float local_a8;
  float local_a4;
  float local_a0;
  float local_9c;
  undefined1 local_98;
  
  lVar4 = param_10;
  puVar6 = (undefined4 *)FUN_18134a8d0(param_10,local_res10,0x1000b00,0);
  FUN_1812a3160(param_2,*puVar6);
  uVar9 = 0x1000d00;
  uVar1 = 0x1000b00;
  if (param_5 != '\0') {
    uVar1 = uVar9;
  }
  puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,&param_10,uVar1,0);
  FUN_181296c00(param_2,*puVar6);
  iVar3 = param_7;
  iVar2 = param_6;
  local_d0 = CONCAT44(param_7,param_6);
  uStack_c8 = CONCAT44(param_9,param_8);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_d0,0);
  puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,&param_6,0x1000c00,0);
  FUN_181296c00(param_2,*puVar6);
  FUN_181295c90(param_2,0,0,param_3,param_4,1);
  if (((*(byte *)(lVar4 + 0xa9) & 0x10) != 0) ||
     ((*(longlong *)(lVar4 + 0x18) != 0 && (cVar5 = FUN_18133eaa0(), cVar5 == '\0')))) {
    return;
  }
  local_b8 = (float *)0x0;
  local_b0._0_4_ = 0;
  local_b0._4_4_ = 0;
  local_98 = 1;
  fVar14 = (float)param_8;
  fVar10 = (float)iVar2;
  fVar16 = fVar14 * DAT_1824c3d18 + fVar10;
  fVar13 = (float)param_9;
  fVar15 = (float)iVar3;
  fVar11 = fVar13 * DAT_1824c3d80 + fVar15;
  fVar17 = fVar14 * DAT_1824c3e28 + fVar10;
  fVar10 = fVar14 * DAT_1824c3d8c + fVar10;
  local_a0 = fVar13 * _DAT_1824c3d00 + fVar15;
  local_a8 = fVar10;
  local_a4 = fVar10;
  local_9c = local_a0;
  FUN_1804b02a0(&local_b8,&DAT_1821df344,fVar10);
  FUN_18129ddd0(&local_b8,fVar17,fVar11);
  FUN_18129ddd0(&local_b8,fVar16,fVar11);
  if ((local_b0._4_4_ != 0) &&
     ((local_b0._4_4_ < 1 || (local_b8[local_b0._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_b0 < local_b0._4_4_ + 1) {
      FUN_1804af790(&local_b8,local_b0._4_4_ + 9 + (local_b0._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_b0._4_4_ = 1;
    *local_b8 = 100005.0;
  }
  fVar12 = fVar13 * DAT_1824c3da8 + fVar15;
  fVar15 = fVar13 * DAT_1824c3e4c + fVar15;
  fVar11 = fVar10;
  fVar13 = fVar10;
  fVar14 = fVar15;
  if (local_b0._4_4_ != 0) {
    if ((local_a8 <= fVar10) && (fVar11 = local_a8, local_a4 < fVar10)) {
      local_a4 = fVar10;
    }
    local_a8 = fVar11;
    if ((fVar15 < local_a0) ||
       (fVar11 = local_a8, fVar13 = local_a4, fVar14 = local_a0, fVar15 <= local_9c))
    goto LAB_181302206;
  }
  local_a0 = fVar14;
  local_a4 = fVar13;
  local_a8 = fVar11;
  fVar14 = local_a0;
  local_9c = fVar15;
LAB_181302206:
  local_a0 = fVar14;
  FUN_1804b02a0(&local_b8,&DAT_1821df344,fVar10,fVar15);
  FUN_18129ddd0(&local_b8,fVar17,fVar12);
  FUN_18129ddd0(&local_b8,fVar16,fVar12);
  if ((local_b0._4_4_ != 0) &&
     ((local_b0._4_4_ < 1 || (local_b8[local_b0._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_b0 < local_b0._4_4_ + 1) {
      FUN_1804af790(&local_b8,local_b0._4_4_ + 9 + (local_b0._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar7 = (longlong)local_b0._4_4_;
    local_b0._4_4_ = local_b0._4_4_ + 1;
    local_b8[lVar7] = 100005.0;
  }
  if (param_5 != '\0') {
    uVar9 = 0x1000b00;
  }
  puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,&param_5,uVar9,0);
  FUN_181296c00(param_2,*puVar6);
  cVar5 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar5 == '\0') {
    for (pfVar8 = local_b8; pfVar8 != local_b8 + local_b0._4_4_; pfVar8 = pfVar8 + 1) {
      fVar10 = *pfVar8;
      if (fVar10 == DAT_1824c4600) {
        pfVar8 = pfVar8 + 2;
      }
      else if (((fVar10 == DAT_1824c45fc) || (fVar10 == DAT_1824c4604)) || (fVar10 == DAT_1824c4608)
              ) {
        local_d0 = _DAT_1824c4780;
        uStack_c8 = _UNK_1824c4788;
        local_c0 = (ulonglong)DAT_1824c3ea4;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_b8,&local_d0);
        break;
      }
    }
  }
  local_b0 = (ulonglong)(uint)local_b0;
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 1813023f0 size=133 ############

void FUN_1813023f0(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  longlong param_5)

{
  undefined4 *puVar1;
  char cVar2;
  longlong lVar3;
  
  if ((*(byte *)(param_5 + 0xa9) & 0x10) == 0) {
    lVar3 = param_5;
    if ((*(longlong *)(param_5 + 0x18) != 0) && (cVar2 = FUN_18133eaa0(), cVar2 == '\0')) {
      return;
    }
    puVar1 = (undefined4 *)FUN_18134a8d0(lVar3,&param_5,0x1000205,0);
    FUN_181296c00(param_2,*puVar1);
    FUN_181295c90(param_2,0,0,param_3,param_4,1);
  }
  return;
}



############ FUN_ 1813024c0 size=125 ############

void FUN_1813024c0(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 local_res8;
  
  puVar1 = (undefined4 *)FUN_181346420(param_1 + -0x40,&local_res8,0x1000700);
  FUN_1812a3160(param_2,*puVar1);
  local_res8 = CONCAT13(0x99,(int3)DAT_18262b5b8);
  FUN_181296c00(param_2,local_res8);
  FUN_181295c90(param_2,0,0,param_3,param_4,1);
  return;
}



############ FUN_ 181302560 size=1299 ############

void FUN_181302560(undefined8 param_1,longlong param_2,undefined8 param_3,float param_4,int param_5,
                  int param_6,int param_7,char param_8,float param_9,float param_10,char param_11,
                  char param_12)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined1 uVar5;
  undefined4 *puVar6;
  undefined8 *puVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  undefined4 local_e8;
  undefined8 local_e0;
  float local_d8;
  float local_d4;
  undefined8 local_d0;
  float local_c8;
  float local_c4;
  float local_b8;
  float fStack_b4;
  float fStack_b0;
  float fStack_ac;
  undefined8 local_a8;
  undefined8 uStack_a0;
  
  fVar4 = param_10;
  puVar6 = (undefined4 *)FUN_18134a8d0(param_3,&local_e0,0x1000300,0);
  FUN_1812a3160(param_2,*puVar6);
  fVar11 = DAT_1824c3d74;
  fVar9 = DAT_1824c3d74;
  if ((param_11 == '\0') && (param_12 == '\0')) {
    fVar9 = DAT_1824c3d04;
  }
  puVar6 = (undefined4 *)FUN_18134a8d0(param_3,&local_e0,0x1000400,0);
  fVar3 = DAT_1824c454c;
  fVar2 = DAT_1824c3ea4;
  if (0.0 < fVar9) {
    if (fVar9 < DAT_1824c3ea4) {
      uVar5 = (undefined1)(int)(fVar9 * DAT_1824c454c);
    }
    else {
      uVar5 = 0xff;
    }
  }
  else {
    uVar5 = 0;
  }
  local_e8 = CONCAT13(uVar5,(int3)*puVar6);
  FUN_181296c00(param_2,local_e8);
  if (0.0 < (float)(int)param_10) {
    if (param_8 == '\0') {
      local_e8 = param_7 + -2;
      param_10 = (float)param_6;
      fStack_b0 = (float)param_6;
      local_e0 = (double)((float)local_e8 * DAT_1824c3d54) + DAT_1824c4520;
      local_d0 = (double)((float)local_e8 * DAT_1824c3d64) + DAT_1824c4520;
      fStack_b4 = (float)((int)local_d0 + param_5);
      fStack_ac = (float)(undefined4)local_e0;
      local_b8 = param_4;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_b8,0);
      fVar9 = (float)(param_5 + 1);
      local_b8 = param_9;
      fStack_ac = (float)(param_7 + -4);
      fStack_b0 = fVar4;
    }
    else {
      fVar9 = (float)(param_6 + -2);
      fStack_b4 = (float)param_5;
      local_e0 = (double)(fVar9 * DAT_1824c3d54) + DAT_1824c4520;
      local_d0 = (double)(fVar9 * DAT_1824c3d64) + DAT_1824c4520;
      fStack_b0 = (float)(undefined4)local_e0;
      local_b8 = (float)((int)local_d0 + (int)param_4);
      local_e8 = param_7;
      fStack_ac = (float)param_7;
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))();
      local_b8 = (float)((int)param_4 + 1);
      fStack_ac = param_10;
      fStack_b0 = (float)(param_6 + -4);
      fVar9 = param_9;
      param_10 = (float)(param_6 + -2);
    }
    fVar13 = DAT_1824c3e7c;
    if ((param_11 == '\0') && (param_12 == '\0')) {
      fVar13 = DAT_1824c3df0;
    }
    fStack_b4 = fVar9;
    puVar6 = (undefined4 *)FUN_18134a8d0(param_3,&local_d0,0x1000400,0);
    if (0.0 < fVar13) {
      if (fVar13 < fVar2) {
        uVar5 = (undefined1)(int)(fVar13 * fVar3);
      }
      else {
        uVar5 = 0xff;
      }
    }
    else {
      uVar5 = 0;
    }
    local_e0._0_4_ = CONCAT13(uVar5,(int3)*puVar6);
    FUN_181296c00(param_2,(undefined4)local_e0);
    local_a8 = CONCAT44(fStack_b4,local_b8);
    uStack_a0 = CONCAT44(fStack_ac,fStack_b0);
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_a8,0);
    if ((param_11 == '\0') && (param_12 == '\0')) {
      fVar11 = DAT_1824c3d3c;
    }
    _param_11 = (undefined3)DAT_18262b5b8;
    _param_11 = CONCAT13((char)(int)(fVar11 * fVar3),_param_11);
    FUN_181296c00(param_2,_param_11);
    FUN_181295c90(param_2,local_b8,fVar9,fStack_b0,fStack_ac,1);
    fVar3 = DAT_1824c4334;
    fVar9 = DAT_1824c3e28;
    fVar11 = DAT_1824c3d18;
    if (0x10 < (int)fVar4) {
      iVar8 = 2;
      do {
        iVar8 = iVar8 + -1;
        _param_11 = (undefined3)DAT_18262b5b8;
        _param_11 = CONCAT13(0x26,_param_11);
        fVar13 = (float)iVar8 * fVar3 + (float)((int)fVar4 / 2 + (int)param_9);
        FUN_181296c00(param_2,_param_11);
        plVar1 = *(longlong **)(param_2 + 8);
        if (param_8 == '\0') {
          fVar10 = (float)local_e8 * fVar11;
          fVar12 = (float)local_e8 * fVar9;
          local_e0 = (double)CONCAT44(fVar10,fVar13);
          local_d8 = fVar13;
          local_d4 = fVar12;
          (**(code **)(*plVar1 + 200))(plVar1,&local_e0);
          _param_11 = (undefined3)DAT_18262b5a8;
          _param_11 = CONCAT13(0x26,_param_11);
          FUN_181296c00(param_2,_param_11);
          puVar7 = &local_a8;
          local_a8 = CONCAT44(fVar10,fVar13 - fVar2);
          uStack_a0 = CONCAT44(fVar12,fVar13 - fVar2);
        }
        else {
          fVar10 = (float)(int)param_10 * fVar11;
          fVar12 = (float)(int)param_10 * fVar9;
          local_b8 = (float)(int)param_4 + fVar10;
          fStack_b4 = fVar13;
          fStack_b0 = fVar12;
          fStack_ac = fVar13;
          (**(code **)(*plVar1 + 200))(plVar1,&local_b8);
          _param_11 = (undefined3)DAT_18262b5a8;
          _param_11 = CONCAT13(0x26,_param_11);
          FUN_181296c00(param_2,_param_11);
          local_c4 = fVar13 - fVar2;
          puVar7 = &local_d0;
          local_d0 = (double)CONCAT44(local_c4,fVar10);
          local_c8 = fVar12;
        }
        (**(code **)(**(longlong **)(param_2 + 8) + 200))(*(longlong **)(param_2 + 8),puVar7);
      } while (-1 < iVar8);
    }
  }
  return;
}



############ FUN_ 181302a80 size=929 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181302a80(undefined8 param_1,longlong param_2,undefined8 param_3,int param_4,int param_5,
                  int param_6,char param_7,char param_8,char param_9)

{
  char cVar1;
  longlong lVar2;
  undefined4 *puVar3;
  float *pfVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float *local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78;
  undefined8 local_70;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined8 local_60;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined8 local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  if (param_7 == '\0') {
    param_5 = param_5 + -2;
  }
  else {
    param_4 = param_4 + -2;
  }
  local_98 = (float *)0x0;
  local_90 = 0;
  local_88 = 0;
  uStack_80 = 0;
  local_78 = 1;
  if (param_6 == 0) {
    fVar5 = (float)param_4;
    fVar7 = fVar5 * DAT_1824c3e58;
    fVar6 = fVar5 * DAT_1824c3cb8;
    local_88 = CONCAT44(fVar5 * DAT_1824c3d8c,fVar5 * DAT_1824c3d8c);
    uStack_80 = CONCAT44((float)param_5 * DAT_1824c3d18,(float)param_5 * DAT_1824c3d18);
    FUN_1804b02a0(&local_98,&DAT_1821df344);
  }
  else {
    if (param_6 == 1) {
      fVar6 = (float)param_4 * DAT_1824c3d54;
      fVar7 = (float)param_4 * DAT_1824c3e28;
    }
    else {
      if (param_6 == 2) {
        fVar5 = (float)param_4;
        fVar7 = fVar5 * DAT_1824c3e58;
        fVar6 = fVar5 * DAT_1824c3cb8;
        local_88 = CONCAT44(fVar5 * DAT_1824c3d8c,fVar5 * DAT_1824c3d8c);
        uStack_80 = CONCAT44((float)param_5 * DAT_1824c3e28,(float)param_5 * DAT_1824c3e28);
        FUN_1804b02a0(&local_98,&DAT_1821df344);
        goto LAB_181302c61;
      }
      if (param_6 != 3) goto LAB_181302cdc;
      fVar6 = (float)param_4 * DAT_1824c3df0;
      fVar7 = (float)param_4 * DAT_1824c3d18;
    }
    local_88 = CONCAT44(fVar7,fVar7);
    uStack_80 = CONCAT44((float)param_5 * DAT_1824c3d8c,(float)param_5 * DAT_1824c3d8c);
    FUN_1804b02a0(&local_98,&DAT_1821df344);
    fVar7 = fVar6;
  }
LAB_181302c61:
  FUN_18129ddd0(&local_98,fVar6);
  FUN_18129ddd0(&local_98,fVar7);
  if ((local_90._4_4_ != 0) &&
     ((local_90._4_4_ < 1 || (local_98[local_90._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)local_90 < local_90._4_4_ + 1) {
      FUN_1804af790(&local_98,local_90._4_4_ + 9 + (local_90._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar2 = (longlong)local_90._4_4_;
    local_90 = CONCAT44(local_90._4_4_ + 1,(int)local_90);
    local_98[lVar2] = 100005.0;
  }
LAB_181302cdc:
  _param_7 = DAT_18262b5a8;
  if (param_9 == '\0') {
    if (param_8 == '\0') {
      puVar3 = (undefined4 *)FUN_18134a8d0(param_3,&param_9,0x1000400,0);
      _param_7 = (undefined3)*puVar3;
      _param_7 = CONCAT13(0x7f,_param_7);
    }
    else {
      _param_7 = (undefined3)DAT_18262b5a8;
      _param_7 = CONCAT13(0xb3,_param_7);
    }
  }
  FUN_181296c00(param_2,_param_7);
  cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar1 == '\0') {
    for (pfVar4 = local_98; pfVar4 != local_98 + local_90._4_4_; pfVar4 = pfVar4 + 1) {
      fVar7 = *pfVar4;
      if (fVar7 == DAT_1824c4600) {
        pfVar4 = pfVar4 + 2;
      }
      else if (((fVar7 == DAT_1824c45fc) || (fVar7 == DAT_1824c4604)) || (fVar7 == DAT_1824c4608)) {
        local_70 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
        uStack_68 = _UNK_1824c4788;
        uStack_64 = _UNK_1824c478c;
        local_60 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_98,&local_70);
        break;
      }
    }
  }
  _param_7 = (undefined3)DAT_18262b5b8;
  _param_7 = CONCAT13(0x7f,_param_7);
  FUN_181296c00(param_2,_param_7);
  local_58 = _DAT_1824c4780;
  uStack_54 = _UNK_1824c4784;
  uStack_50 = _UNK_1824c4788;
  uStack_4c = _UNK_1824c478c;
  local_48 = 0x3f800000;
  local_70 = 0x3f000000;
  uStack_68 = 0;
  FUN_181295d20(param_2,&local_98,&local_70,&local_58);
  local_90 = local_90 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_98);
}



############ FUN_ 181302e50 size=421 ############

void FUN_181302e50(undefined8 param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                  int param_5,double param_6,undefined8 *param_7)

{
  double dVar1;
  undefined8 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined8 in_stack_ffffffffffffffb0;
  undefined4 uVar5;
  undefined8 in_stack_ffffffffffffffb8;
  undefined4 uVar6;
  undefined4 local_38 [2];
  undefined8 local_30;
  int local_28;
  int local_24;
  
  dVar1 = param_6;
  uVar5 = (undefined4)((ulonglong)in_stack_ffffffffffffffb0 >> 0x20);
  uVar6 = (undefined4)((ulonglong)in_stack_ffffffffffffffb8 >> 0x20);
  if ((param_6 < 0.0) || (DAT_1824c4140 <= param_6)) {
    FUN_181312dd0(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  }
  else {
    FUN_18134a8d0(param_3,local_38,0x1001900,0);
    FUN_18134a8d0(param_3,&param_6,0x1001a00,0);
    FUN_1812a3160(param_2,local_38[0]);
    FUN_181296c00(param_2,param_6._0_4_);
    iVar4 = (int)param_4 + -2;
    local_28 = SUB84((double)iVar4 * dVar1 + DAT_1824c4520,0);
    if (local_28 < 0) {
      local_28 = 0;
    }
    else if (iVar4 < local_28) {
      local_28 = iVar4;
    }
    local_30 = 0x100000001;
    local_24 = param_5 + -2;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_30,0);
    puVar2 = param_7;
    if (*(char *)*param_7 != '\0') {
      puVar3 = (undefined4 *)FUN_1812a2060(&local_30,local_38[0],param_6._0_4_);
      FUN_181296c00(param_2,*puVar3);
      FUN_1812966f0(param_2,(float)param_5 * DAT_1824c3db8);
      FUN_1812962a0(param_2,puVar2,0,0,(int)param_4,CONCAT44(uVar5,param_5),CONCAT44(uVar6,0x24),0);
    }
  }
  return;
}



############ FUN_ 181312dd0 size=2021 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181312dd0(undefined8 param_1,longlong param_2,undefined8 param_3,int param_4,int param_5,
                  double param_6,undefined8 *param_7)

{
  longlong *plVar1;
  int iVar2;
  undefined8 *puVar3;
  char cVar4;
  DWORD DVar5;
  longlong lVar6;
  undefined4 *puVar7;
  int iVar8;
  float *pfVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  undefined4 *puVar15;
  float fVar16;
  undefined4 uVar17;
  undefined1 uVar18;
  undefined1 uVar19;
  undefined1 uVar20;
  undefined1 uVar21;
  float *local_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined1 local_148;
  undefined4 local_140;
  undefined4 local_13c;
  longlong *local_138;
  undefined **local_130;
  undefined8 local_128;
  int local_120;
  int iStack_11c;
  undefined8 *local_118;
  undefined8 *local_110;
  undefined1 local_108;
  undefined4 local_100;
  undefined8 local_f0;
  undefined8 uStack_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined4 local_c8;
  undefined4 uStack_c4;
  float fStack_c0;
  float fStack_bc;
  
  local_d8 = 0xfffffffffffffffe;
  FUN_18134a8d0(param_3,&local_13c,0x1001900,0);
  FUN_18134a8d0(param_3,&local_140,0x1001a00,0);
  FUN_1812a3160(param_2,local_13c);
  iVar8 = 0;
  if ((0.0 <= param_6) && (param_6 < DAT_1824c4140)) {
    fVar10 = (float)(param_5 + -2);
    uVar21 = 1;
    uVar20 = 1;
    uVar19 = 1;
    uVar18 = 1;
    uVar17 = 0;
    puVar15 = &local_140;
    fVar16 = DAT_1824c3d8c;
    FUN_181303d30(param_2);
    puVar3 = param_7;
    if (*(char *)*param_7 != '\0') {
      puVar7 = (undefined4 *)FUN_1812a2060(&param_6,local_13c,local_140);
      FUN_181296c00(param_2,*puVar7);
      FUN_1812966f0(param_2,(float)param_5 * DAT_1824c3db8);
      local_128 = 0;
      iStack_11c = param_5;
      local_100 = 0;
      fStack_c0 = (float)param_4;
      fStack_bc = (float)param_5;
      local_c8 = 0;
      uStack_c4 = 0;
      local_120 = param_4;
      FUN_1812963b0(param_2,puVar3,&local_c8,0x24,(uint)fVar10 & 0xffffff00,puVar15,fVar16,uVar17,
                    uVar18,uVar19,uVar20,uVar21);
    }
    return;
  }
  FUN_181296c00(param_2,local_140);
  iVar2 = param_5 * 2;
  DVar5 = timeGetTime();
  fVar16 = DAT_1824c460c;
  if (DVar5 < DAT_1826737fc) {
    if (DVar5 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar5;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar5;
  }
  local_168 = (float *)0x0;
  local_160 = 0;
  local_158 = 0;
  uStack_150 = 0;
  local_148 = 1;
  fVar10 = (float)-(0 % iVar2);
  if (fVar10 < (float)(iVar2 + param_4)) {
    fVar12 = (float)param_5;
    fVar14 = (float)iVar2 * DAT_1824c3d8c;
    do {
      fVar13 = fVar10 - fVar14;
      fVar11 = fVar14 + fVar10;
      if (iVar8 == 0) {
        local_158 = CONCAT44(fVar10,fVar10);
        uStack_150 = 0;
      }
      else {
        if ((float)local_158 <= fVar10) {
          if (local_158._4_4_ < fVar10) {
            local_158 = CONCAT44(fVar10,(float)local_158);
          }
        }
        else {
          local_158 = CONCAT44(local_158._4_4_,fVar10);
        }
        if ((float)uStack_150 <= 0.0) {
          if (uStack_150._4_4_ < 0.0) {
            uStack_150 = uStack_150 & 0xffffffff;
          }
        }
        else {
          uStack_150 = (ulonglong)(uint)uStack_150._4_4_ << 0x20;
        }
      }
      FUN_1804b02a0(&local_168,&DAT_1821df344);
      if (local_160._4_4_ == 0) {
        local_158 = 0;
        uStack_150 = 0;
        FUN_1804b02a0(&local_168,&DAT_1821df344);
      }
      FUN_1804b02a0(&local_168,&DAT_1821dfcb4);
      if ((float)local_158 <= fVar11) {
        if (local_158._4_4_ < fVar11) {
          local_158 = CONCAT44(fVar11,(float)local_158);
        }
      }
      else {
        local_158 = CONCAT44(local_158._4_4_,fVar11);
      }
      if ((float)uStack_150 <= 0.0) {
        if (uStack_150._4_4_ < 0.0) {
          uStack_150 = uStack_150 & 0xffffffff;
        }
      }
      else {
        uStack_150 = (ulonglong)(uint)uStack_150._4_4_ << 0x20;
      }
      if (local_160._4_4_ == 0) {
        local_158 = 0;
        uStack_150 = 0;
        FUN_1804b02a0(&local_168,&DAT_1821df344);
      }
      FUN_1804b02a0(&local_168,&DAT_1821dfcb4);
      if ((float)local_158 <= fVar10) {
        if (local_158._4_4_ < fVar10) {
          local_158 = CONCAT44(fVar10,(float)local_158);
        }
      }
      else {
        local_158 = CONCAT44(local_158._4_4_,fVar10);
      }
      if ((float)uStack_150 <= fVar12) {
        if (uStack_150._4_4_ < fVar12) {
          uStack_150 = CONCAT44(fVar12,(float)uStack_150);
        }
      }
      else {
        uStack_150 = CONCAT44(uStack_150._4_4_,fVar12);
      }
      if (local_160._4_4_ == 0) {
        local_158 = 0;
        uStack_150 = 0;
        FUN_1804b02a0(&local_168,&DAT_1821df344);
      }
      FUN_1804b02a0(&local_168,&DAT_1821dfcb4);
      if ((float)local_158 <= fVar13) {
        if (local_158._4_4_ < fVar13) {
          local_158 = CONCAT44(fVar13,(float)local_158);
        }
      }
      else {
        local_158 = CONCAT44(local_158._4_4_,fVar13);
      }
      if ((float)uStack_150 <= fVar12) {
        if (uStack_150._4_4_ < fVar12) {
          uStack_150 = CONCAT44(fVar12,(float)uStack_150);
        }
      }
      else {
        uStack_150 = CONCAT44(uStack_150._4_4_,fVar12);
      }
      iVar8 = local_160._4_4_;
      if ((local_160._4_4_ != 0) &&
         ((local_160._4_4_ < 1 || (local_168[local_160._4_4_ + -1] != fVar16)))) {
        iVar8 = local_160._4_4_ + 1;
        if ((int)local_160 < iVar8) {
          if (iVar8 < 0) {
            iVar8 = local_160._4_4_ + 2;
          }
          FUN_1804af790(&local_168,local_160._4_4_ + 9 + (iVar8 >> 1) & 0xfffffff8);
        }
        lVar6 = (longlong)local_160._4_4_;
        iVar8 = local_160._4_4_ + 1;
        local_160 = CONCAT44(iVar8,(int)local_160);
        local_168[lVar6] = 100005.0;
      }
      fVar10 = fVar10 + (float)iVar2;
    } while (fVar10 < (float)(iVar2 + param_4));
  }
  local_130 = juce::NativeImageType::vftable;
  (*(code *)PTR_FUN_1824988f0)(&local_130,&local_138,2,param_4,param_5,1);
  local_130 = juce::ImageType::vftable;
  if (local_138 == (longlong *)0x0) {
    local_118 = (undefined8 *)0x0;
  }
  else {
    (**(code **)(*local_138 + 8))(local_138,&local_118);
  }
  local_108 = 0;
  local_110 = local_118;
  FUN_181303d30(&local_118);
  if (local_118 != (undefined8 *)0x0) {
    (**(code **)*local_118)(local_118,1);
  }
  FUN_181296850(param_2,&local_138);
  cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar4 == '\0') {
    for (pfVar9 = local_168; pfVar9 != local_168 + local_160._4_4_; pfVar9 = pfVar9 + 1) {
      fVar16 = *pfVar9;
      if (fVar16 == DAT_1824c4600) {
        pfVar9 = pfVar9 + 2;
      }
      else if (((fVar16 == DAT_1824c45fc) || (fVar16 == DAT_1824c4604)) || (fVar16 == DAT_1824c4608)
              ) {
        local_f0 = _DAT_1824c4780;
        uStack_e8 = _UNK_1824c4788;
        local_e0 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_168,&local_f0);
        break;
      }
    }
  }
  if (local_138 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_138 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)*local_138)(local_138,1);
    }
  }
  local_160 = local_160 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_168);
}



############ FUN_ 181303000 size=579 ############

void FUN_181303000(longlong *param_1,longlong param_2,longlong param_3,undefined1 param_4,
                  undefined1 param_5)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  bool bVar4;
  char cVar5;
  undefined1 uVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined1 uVar9;
  undefined1 local_res8 [8];
  int local_48;
  undefined4 uStack_44;
  int iStack_40;
  int iStack_3c;
  
  lVar3 = DAT_182673708;
  do {
    if (lVar3 == param_3) {
      bVar4 = true;
LAB_181303059:
      if (bVar4) {
        puVar7 = (undefined4 *)FUN_18134a8d0(param_3,local_res8,0x1000206,0);
        FUN_181296c00(param_2,*puVar7);
        FUN_181295c90(param_2,0,0,*(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),1)
        ;
      }
      iVar2 = *(int *)(param_3 + 0x2c);
      iVar1 = iVar2 + -4;
      iVar8 = 0x14;
      if (iVar1 < 0x14) {
        iVar8 = iVar1;
      }
      if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
         ((*(longlong *)(param_3 + 0x18) == 0 || (cVar5 = FUN_18133eaa0(), cVar5 != '\0')))) {
        uVar9 = 1;
      }
      else {
        uVar9 = 0;
      }
      lVar3 = *param_1;
      uVar6 = FUN_1804d6ee0(param_3);
      (**(code **)(lVar3 + 0x38))
                (param_1,param_2,param_3,DAT_1824c4334,(float)(iVar2 - iVar8) * DAT_1824c3d8c,
                 (float)iVar8,(float)iVar8,uVar6,uVar9,param_4,param_5);
      puVar7 = (undefined4 *)FUN_18134a8d0(param_3,local_res8,0x1006501,0);
      FUN_181296c00(param_2,*puVar7);
      FUN_1812966f0(param_2);
      if (((*(byte *)(param_3 + 0xa9) & 0x10) != 0) ||
         ((*(longlong *)(param_3 + 0x18) != 0 && (cVar5 = FUN_18133eaa0(), cVar5 == '\0')))) {
        if (*(char *)(param_2 + 0x10) != '\0') {
          *(undefined1 *)(param_2 + 0x10) = 0;
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        }
        (**(code **)(**(longlong **)(param_2 + 8) + 0x90))();
      }
      _local_48 = CONCAT44(4,iVar8 + 5);
      _iStack_40 = CONCAT44(*(int *)(param_3 + 0x2c) + -8,
                            (*(int *)(param_3 + 0x28) - (iVar8 + 5)) + -2);
      FUN_181296100(param_2,param_3 + 0x158,&local_48,0x21,10,0);
      return;
    }
    if (lVar3 == 0) {
      bVar4 = false;
      goto LAB_181303059;
    }
    lVar3 = *(longlong *)(lVar3 + 0x18);
  } while( true );
}



############ FUN_ 181303250 size=1001 ############

void FUN_181303250(undefined8 param_1,longlong param_2,undefined8 param_3,float param_4,
                  float param_5,float param_6,float param_7,char param_8,char param_9,
                  undefined8 param_10,char param_11)

{
  undefined4 uVar1;
  float fVar2;
  char cVar3;
  float *pfVar4;
  float fVar5;
  float fVar6;
  undefined4 local_res20;
  void *local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined1 local_98;
  undefined4 local_90;
  undefined8 local_8c;
  float local_80 [3];
  undefined4 local_74;
  float local_70;
  float local_6c;
  float *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  undefined8 local_40;
  
  fVar2 = DAT_1824c4388;
  local_40 = 0xfffffffffffffffe;
  local_68 = (float *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  FUN_18129d5a0(&local_68,0,DAT_1824c41e0,DAT_1824c4388,DAT_1824c4388,DAT_1824c3ea4,DAT_1824c3ea4,1,
                1,1,1);
  if (param_9 == '\0') {
    local_res20._0_3_ = (undefined3)DAT_18262b5a0;
    local_res20 = CONCAT13(0x19,(undefined3)local_res20);
  }
  else {
    fVar5 = DAT_1824c3cb8;
    if (param_11 != '\0') {
      fVar5 = DAT_1824c3d54;
    }
    local_res20._0_3_ = (undefined3)DAT_18262b5b0;
    local_res20 = CONCAT13((char)(int)(fVar5 * DAT_1824c454c),(undefined3)local_res20);
  }
  FUN_181296c00(param_2,local_res20);
  local_70 = param_7 / DAT_1824c43e4;
  local_80[0] = param_6 / DAT_1824c43e4;
  local_6c = param_5 + 0.0;
  local_80[2] = param_4 + 0.0;
  local_80[1] = 0.0;
  local_74 = 0;
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    for (pfVar4 = local_68; pfVar4 != local_68 + local_60._4_4_; pfVar4 = pfVar4 + 1) {
      fVar5 = *pfVar4;
      if (fVar5 == DAT_1824c4600) {
        pfVar4 = pfVar4 + 2;
      }
      else if (((fVar5 == DAT_1824c45fc) || (fVar5 == DAT_1824c4604)) || (fVar5 == DAT_1824c4608)) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_68,local_80);
        break;
      }
    }
  }
  param_7 = (float)CONCAT13(0x99,(int3)DAT_18262b5b8);
  FUN_181296c00(param_2,param_7);
  local_90 = DAT_1824c3e58;
  local_8c = 0;
  FUN_181295d20(param_2,&local_68,&local_90,local_80);
  fVar5 = DAT_1824c42d0;
  if (param_8 == '\0') {
    local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_68);
  }
  local_b8 = (void *)0x0;
  local_b0 = 0;
  local_98 = 1;
  local_a8 = 0x3fc000003fc00000;
  local_a0 = 0x4040000040400000;
  FUN_1804b02a0(&local_b8,&DAT_1821df344,DAT_1824c3f78,DAT_1824c42d0);
  if (local_b0._4_4_ == 0) {
    local_a8 = 0;
    local_a0 = 0;
    FUN_1804b02a0(&local_b8,&DAT_1821df344,0,0);
  }
  FUN_1804b02a0(&local_b8,&DAT_1821dfcb4,fVar5,fVar2);
  fVar6 = local_a8._4_4_;
  if ((float)local_a8 <= fVar5) {
    if (local_a8._4_4_ < fVar5) {
      local_a8 = CONCAT44(fVar5,(float)local_a8);
      fVar6 = fVar5;
    }
  }
  else {
    local_a8 = CONCAT44(local_a8._4_4_,fVar5);
  }
  if ((float)local_a0 <= fVar2) {
    if (local_a0._4_4_ < fVar2) {
      local_a0 = CONCAT44(fVar2,(float)local_a0);
    }
  }
  else {
    local_a0 = CONCAT44(local_a0._4_4_,fVar2);
  }
  if (local_b0._4_4_ == 0) {
    local_a8 = 0;
    local_a0 = 0;
    fVar6 = (float)FUN_1804b02a0(fVar6,&DAT_1821df344,0,0);
  }
  FUN_1804b02a0(fVar6,&DAT_1821dfcb4,fVar2,0);
  if ((float)local_a8 <= fVar2) {
    if (local_a8._4_4_ < fVar2) {
      local_a8 = CONCAT44(0x40c00000,(float)local_a8);
    }
  }
  else {
    local_a8 = CONCAT44(local_a8._4_4_,0x40c00000);
  }
  if ((float)local_a0 <= 0.0) {
    if (local_a0._4_4_ < 0.0) {
      local_a0 = local_a0 & 0xffffffff;
    }
  }
  else {
    local_a0 = (ulonglong)(uint)local_a0._4_4_ << 0x20;
  }
  uVar1 = DAT_18262b5a4;
  if (param_9 != '\0') {
    uVar1 = DAT_18262b5b8;
  }
  FUN_181296c00(param_2,uVar1);
  local_90 = DAT_1824c4258;
  local_8c = 0;
  FUN_181295d20(param_2,&local_b8,&local_90,local_80);
  local_b0 = local_b0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 181303670 size=1275 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181303670(undefined8 param_1,longlong param_2,longlong param_3,undefined4 *param_4,
                  char param_5,char param_6)

{
  uint uVar1;
  undefined4 uVar2;
  double dVar3;
  double dVar4;
  undefined8 uVar5;
  char cVar6;
  undefined1 uVar7;
  longlong lVar8;
  uint *puVar9;
  float *pfVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  undefined8 local_res10;
  undefined8 local_res18;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined8 local_b8;
  float *local_b0;
  undefined8 local_a8;
  undefined1 local_a0 [16];
  undefined1 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 local_70;
  
  uVar2 = DAT_1824c41e0;
  fVar19 = DAT_1824c3d74;
  local_70 = 0xfffffffffffffffe;
  local_res18 = (double)((float)*(int *)(param_3 + 0x2c) * DAT_1824c3d74) + DAT_1824c4520;
  local_res10 = (double)((float)*(int *)(param_3 + 0x28) * DAT_1824c3d74) + DAT_1824c4520;
  iVar13 = SUB84(local_res10,0);
  if (SUB84(local_res18,0) < SUB84(local_res10,0)) {
    iVar13 = SUB84(local_res18,0);
  }
  local_b0 = (float *)0x0;
  local_a8 = 0;
  local_a0._0_12_ = ZEXT812(0);
  local_a0._12_4_ = 0;
  local_90 = 1;
  FUN_18129d5a0(&local_b0,param_2,DAT_1824c41e0,(float)*(int *)(param_3 + 0x28) - DAT_1824c4334,
                (float)*(int *)(param_3 + 0x2c) - DAT_1824c4334,(float)iVar13,(float)iVar13,1,1,1,1)
  ;
  FUN_18049fa40(&local_c8,*param_4);
  FUN_18049fbb0(&local_res10);
  dVar3 = local_res10;
  fVar17 = DAT_1824c4548;
  uVar12 = (uint)local_res10;
  if (param_5 != '\0') {
    if (param_6 == '\0') {
      lVar8 = FUN_18049fa40(&local_c8,(ulonglong)local_res10 & 0xffffffff);
      dVar4 = local_res10;
      if (*(float *)(lVar8 + 8) <= DAT_1824c3d8c) {
        local_res10._0_2_ =
             CONCAT11((char)(int)(fVar17 - (float)(int)(0xff - (uVar12 >> 8 & 0xff)) * DAT_1824c3e5c
                                 ),
                      (char)(int)(fVar17 - (float)(int)(0xff - (uVar12 & 0xff)) * DAT_1824c3e5c));
        local_res10._0_3_ =
             CONCAT12((char)(int)(fVar17 - (float)(int)(0xff - (uVar12 >> 0x10 & 0xff)) *
                                           DAT_1824c3e5c),(undefined2)local_res10);
        local_res10._4_4_ = SUB84(dVar4,4);
        local_res10._0_4_ = CONCAT13((char)((ulonglong)dVar3 >> 0x18),(uint3)local_res10);
        uVar12 = (uint)local_res10;
        goto LAB_181303925;
      }
      local_res18._0_2_ =
           CONCAT11((char)(int)((float)local_res10._1_1_ * DAT_1824c3e5c),
                    (char)(int)((float)(uVar12 & 0xff) * DAT_1824c3e5c));
      fVar16 = (float)local_res10._2_1_ * DAT_1824c3e5c;
    }
    else {
      local_res18._0_2_ =
           CONCAT11((char)(int)(DAT_1824c4548 -
                               (float)(int)(0xff - (uint)local_res10._1_1_) * DAT_1824c3e08),
                    (char)(int)(DAT_1824c4548 -
                               (float)(int)(0xff - (uint)(byte)local_res10) * DAT_1824c3e08));
      fVar16 = DAT_1824c4548 - (float)(int)(0xff - (uint)local_res10._2_1_) * DAT_1824c3e08;
    }
    uVar5 = local_res18;
    local_res18._0_3_ = CONCAT12((char)(int)fVar16,(undefined2)local_res18);
    local_res18._4_4_ = SUB84(uVar5,4);
    local_res18._0_4_ = CONCAT13(local_res10._3_1_,(undefined3)local_res18);
    local_res10 = (double)CONCAT44(local_res10._4_4_,(uint)local_res18);
    uVar12 = (uint)local_res18;
  }
LAB_181303925:
  FUN_181296c00(param_2,uVar12);
  cVar6 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar6 == '\0') {
    for (pfVar10 = local_b0; pfVar10 != local_b0 + local_a8._4_4_; pfVar10 = pfVar10 + 1) {
      fVar16 = *pfVar10;
      if (fVar16 == DAT_1824c4600) {
        pfVar10 = pfVar10 + 2;
      }
      else if (((fVar16 == DAT_1824c45fc) || (fVar16 == DAT_1824c4604)) || (fVar16 == DAT_1824c4608)
              ) {
        local_c8 = (undefined4)_DAT_1824c4780;
        uStack_c4 = (undefined4)((ulonglong)_DAT_1824c4780 >> 0x20);
        uStack_c0 = (undefined4)_UNK_1824c4788;
        uStack_bc = (undefined4)((ulonglong)_UNK_1824c4788 >> 0x20);
        local_b8 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_b0,&local_c8);
        break;
      }
    }
  }
  if (param_5 != '\0') {
    fVar19 = DAT_1824c3db8;
  }
  uVar15 = (uint)local_res10._2_1_;
  fVar18 = (float)uVar15 / fVar17;
  uVar14 = (uint)local_res10._1_1_;
  fVar16 = (float)uVar14 / fVar17;
  fVar17 = (float)(uVar12 & 0xff) / fVar17;
  fVar17 = sqrtf(fVar16 * fVar16 * _DAT_1824c3dec + fVar18 * fVar18 * _DAT_1824c3d2c +
                 fVar17 * fVar17 * _DAT_1824c3ca0);
  dVar3 = local_res10;
  puVar9 = &DAT_18262b598;
  if (DAT_1824c3d8c <= fVar17) {
    puVar9 = &DAT_18262b59c;
  }
  uVar1 = *puVar9;
  local_res18._0_3_ = (undefined3)uVar1;
  local_res18._0_4_ = CONCAT13(0xff,(undefined3)local_res18);
  uVar5 = local_res18;
  if (local_res10._3_1_ != 0) {
    iVar11 = 0xff - ((uint)local_res18 >> 0x18);
    iVar13 = 0xff - ((int)((0xff - (uint)local_res10._3_1_) * iVar11) >> 8);
    local_res18._0_4_ = uVar12;
    if (0 < iVar13) {
      iVar13 = (int)(iVar11 * (uint)local_res10._3_1_) / iVar13;
      local_res18._0_1_ = (char)uVar1;
      local_res10._0_2_ =
           CONCAT11((char)((uVar14 - ((uVar1 & 0xff00) >> 8)) * iVar13 >> 8) + (char)(uVar1 >> 8),
                    (char)(((uVar12 & 0xff) - (uVar1 & 0xff)) * iVar13 >> 8) + (char)local_res18);
      local_res10._0_3_ =
           CONCAT12((char)((uVar15 - ((uVar1 & 0xff0000) >> 0x10)) * iVar13 >> 8) +
                    (char)(uVar1 >> 0x10),(undefined2)local_res10);
      local_res10._4_4_ = SUB84(dVar3,4);
      local_res10._0_4_ = (uint)(uint3)local_res10;
      local_res18._0_4_ = (uint)local_res10;
    }
  }
  if (0.0 < fVar19) {
    if (fVar19 < DAT_1824c3ea4) {
      uVar7 = (undefined1)(int)(fVar19 * DAT_1824c454c);
    }
    else {
      uVar7 = 0xff;
    }
  }
  else {
    uVar7 = 0;
  }
  local_res10._0_3_ = (uint3)(uint)local_res18;
  local_res10._0_4_ = CONCAT13(uVar7,(uint3)local_res10);
  local_res18 = (double)uVar5;
  FUN_181296c00(param_2,(uint)local_res10);
  local_88 = _DAT_1824c4780;
  uStack_80 = _UNK_1824c4788;
  local_78 = 0x3f800000;
  local_c8 = uVar2;
  if (param_5 == '\0') {
    local_c8 = DAT_1824c3f48;
  }
  uStack_c4 = 0;
  uStack_c0 = 0;
  FUN_181295d20(param_2,&local_b0,&local_c8,&local_88);
  local_a8 = local_a8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_b0);
}



############ FUN_ 181305bb0 size=778 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181305bb0(undefined8 param_1,longlong param_2,undefined8 param_3,float param_4,
                  float param_5,float param_6,float param_7,undefined4 *param_8,float param_9,
                  undefined4 param_10)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *puVar5;
  float *pfVar6;
  int iVar7;
  float fVar8;
  float fVar9;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined8 local_a8;
  float local_a0 [4];
  undefined4 local_90;
  float local_8c;
  undefined4 local_88;
  float local_84;
  undefined1 local_80;
  void *local_78;
  undefined8 local_70;
  float *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  if ((param_5 <= param_9 * DAT_1824c3ee0) || (param_6 <= param_9 * DAT_1824c3ee0)) {
    return;
  }
  fVar8 = param_6 * DAT_1824c3d8c;
  fVar9 = param_5 * DAT_1824c3d8c;
  if (param_7 <= fVar9) {
    if (param_7 <= fVar8) {
      fVar8 = param_7;
    }
  }
  else if (fVar9 <= fVar8) {
    fVar8 = fVar9;
  }
  local_68 = (float *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  FUN_18129d5a0(&local_68,param_3,param_4,param_5,param_6,fVar8,fVar8,0,0,0,0);
  uVar3 = DAT_1824c4140._4_4_;
  uVar2 = (undefined4)DAT_1824c4140;
  param_10 = 0x70000ff;
  local_84 = param_4 + param_6;
  local_90 = 0;
  local_88 = 0;
  local_80 = 0;
  local_78 = (void *)0x0;
  local_70 = 0;
  local_8c = param_4;
  puVar5 = (undefined4 *)FUN_1812a2c30(param_8,&param_10,0x70000ff);
  uStack_b0 = *puVar5;
  local_a0[2] = (float)*param_8;
  FUN_18049ba20(&local_78,8);
  iVar7 = local_70._4_4_ + 1;
  local_a0[0] = 0.0;
  local_a0[1] = 0.0;
  puVar1 = (undefined8 *)((longlong)local_78 + (longlong)local_70._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = CONCAT44(local_a0[3],local_a0[2]);
  local_70 = CONCAT44(local_70._4_4_ + 2,(undefined4)local_70);
  local_b8 = uVar2;
  uStack_b4 = uVar3;
  puVar5 = (undefined4 *)((longlong)local_78 + (longlong)iVar7 * 0x10);
  *puVar5 = uVar2;
  puVar5[1] = uVar3;
  puVar5[2] = uStack_b0;
  puVar5[3] = uStack_ac;
  param_10 = 0x33ffffff;
  puVar5 = (undefined4 *)FUN_1812a2c30(param_8,&param_10,0x33ffffff);
  FUN_1812a1940(&local_90,DAT_1824c4050,*puVar5);
  param_10 = 0x110000ff;
  puVar5 = (undefined4 *)FUN_1812a2c30(param_8,&param_10,0x110000ff);
  FUN_1812a1940(&local_90,DAT_1824c4058,*puVar5);
  FUN_181296a90(param_2,&local_90);
  cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar4 == '\0') {
    for (pfVar6 = local_68; pfVar6 != local_68 + local_60._4_4_; pfVar6 = pfVar6 + 1) {
      fVar8 = *pfVar6;
      if (fVar8 == DAT_1824c4600) {
        pfVar6 = pfVar6 + 2;
      }
      else if (((fVar8 == DAT_1824c45fc) || (fVar8 == DAT_1824c4604)) || (fVar8 == DAT_1824c4608)) {
        local_b8 = _DAT_1824c4780;
        uStack_b4 = _UNK_1824c4784;
        uStack_b0 = _UNK_1824c4788;
        uStack_ac = _UNK_1824c478c;
        local_a8 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_68,&local_b8);
        break;
      }
    }
  }
  param_10 = 0x80000000;
  FUN_181296c00(param_2,0x80000000);
  local_b8 = _DAT_1824c4780;
  uStack_b4 = _UNK_1824c4784;
  uStack_b0 = _UNK_1824c4788;
  uStack_ac = _UNK_1824c478c;
  local_a8 = 0x3f800000;
  local_a0[0] = param_9;
  local_a0[1] = 0.0;
  local_a0[2] = 0.0;
  FUN_181295d20(param_2,&local_68,local_a0,&local_b8);
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 1813064e0 size=1020 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813064e0(undefined8 param_1,longlong param_2,int param_3,int param_4,longlong param_5,
                  undefined8 *param_6)

{
  float fVar1;
  longlong lVar2;
  char cVar3;
  undefined8 uVar4;
  float *pfVar5;
  float fVar6;
  float fVar7;
  undefined8 uVar8;
  undefined8 in_stack_ffffffffffffff50;
  undefined4 uVar10;
  undefined8 uVar9;
  undefined4 local_98 [2];
  undefined8 local_90;
  undefined8 local_88;
  int iStack_80;
  int iStack_7c;
  float *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  
  lVar2 = param_5;
  uVar10 = (undefined4)((ulonglong)in_stack_ffffffffffffff50 >> 0x20);
  local_90 = 0xfffffffffffffffe;
  FUN_18134a8d0(param_5,local_98,0x100ad01,1);
  if (*(char *)*param_6 != '\0') {
    if (((*(byte *)(param_5 + 0xa9) & 0x10) == 0) &&
       ((*(longlong *)(param_5 + 0x18) == 0 || (cVar3 = FUN_18133eaa0(), cVar3 != '\0')))) {
      fVar6 = DAT_1824c3d54;
      if ((*(int *)(param_5 + 0x1a0) != 2) &&
         (fVar6 = DAT_1824c3cac, *(int *)(param_5 + 0x1a0) != 0)) {
        fVar6 = DAT_1824c3d04;
      }
      param_5._0_3_ = (undefined3)local_98[0];
      param_5._0_4_ = CONCAT13((char)(int)(fVar6 * DAT_1824c454c),(undefined3)param_5);
      FUN_1812a3160(param_2,(undefined4)param_5);
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0x90))();
      FUN_181305ed0(param_2);
    }
    FUN_181296c00(param_2,local_98[0]);
    FUN_1812966f0(param_2);
    iStack_80 = param_3 + -6;
    local_88 = 3;
    iStack_7c = param_4;
    FUN_181296100(param_2,param_6,&local_88,0x24,1,0);
    if (DAT_182673708 == lVar2) {
      param_5._0_3_ = (undefined3)local_98[0];
      param_5._0_4_ = CONCAT13(0x66,(undefined3)param_5);
      FUN_181296c00(param_2,(undefined4)param_5);
      FUN_181295c90(param_2,0,0,param_3,param_4,1);
    }
    return;
  }
  local_68 = (float *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  local_88 = CONCAT44(_UNK_1824c4ec4,_DAT_1824c4ec0);
  iStack_80 = _UNK_1824c4ec8;
  iStack_7c = _UNK_1824c4ecc;
  FUN_18129d1e0(&local_68,&local_88);
  FUN_18129d850(&local_68);
  FUN_18129d850(&local_68);
  FUN_18129d850(&local_68);
  local_48 = 0;
  fVar6 = DAT_1824c3df0;
  if ((*(int *)(param_5 + 0x1a0) != 2) && (fVar6 = DAT_1824c3d54, *(int *)(param_5 + 0x1a0) != 0)) {
    fVar6 = DAT_1824c3d8c;
  }
  param_5._0_3_ = (undefined3)local_98[0];
  param_5._0_4_ = CONCAT13((char)(int)(fVar6 * DAT_1824c454c),(undefined3)param_5);
  FUN_181296c00(param_2,(undefined4)param_5);
  fVar7 = (float)param_4 - DAT_1824c4334;
  fVar6 = (float)param_3 - DAT_1824c4334;
  uVar9 = CONCAT44(uVar10,0x24);
  uVar8 = 1;
  uVar4 = FUN_18129b390(&local_68,&local_88);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    for (pfVar5 = local_68; pfVar5 != local_68 + local_60._4_4_; pfVar5 = pfVar5 + 1) {
      fVar1 = *pfVar5;
      if (fVar1 == DAT_1824c4600) {
        pfVar5 = pfVar5 + 2;
      }
      else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608)) {
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_68,uVar4,local_68 + local_60._4_4_,fVar6,fVar7
                   ,uVar8,uVar9);
        break;
      }
    }
  }
  local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 1813068f0 size=549 ############

void FUN_1813068f0(undefined8 param_1,undefined8 param_2,int param_3,int param_4,float param_5)

{
  double dVar1;
  float fVar2;
  int iVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  undefined4 local_res18;
  undefined8 local_68;
  float fStack_60;
  float fStack_5c;
  float local_58;
  undefined4 uStack_54;
  float fStack_50;
  float fStack_4c;
  
  local_res18._0_3_ = (undefined3)DAT_18262b5a8;
  local_res18 = CONCAT13(0xb3,(undefined3)local_res18);
  FUN_181296c00(param_2,local_res18);
  fVar2 = DAT_1824c42d0;
  fVar5 = (float)param_3;
  fVar4 = (float)param_4;
  local_68 = 0.0;
  local_58 = 0.0;
  uStack_54 = 0;
  fStack_60 = fVar5;
  fStack_5c = fVar4;
  fStack_50 = fVar5;
  fStack_4c = fVar4;
  FUN_181295300(param_2,&local_58,DAT_1824c42d0);
  local_res18._0_3_ = (undefined3)DAT_18262b5b8;
  local_res18 = CONCAT13(0x33,(undefined3)local_res18);
  FUN_181296c00(param_2,local_res18);
  fStack_5c = fVar4 - DAT_1824c41e0;
  fStack_60 = fVar5 - DAT_1824c41e0;
  local_68 = 0.007812501848093234;
  local_58 = 1.0;
  uStack_54 = 0x3f800000;
  fStack_50 = fStack_60;
  fStack_4c = fStack_5c;
  FUN_181295190(param_2,&local_58,fVar2,DAT_1824c3ea4);
  fStack_4c = fVar4 - DAT_1824c4388;
  iVar3 = 0;
  uStack_54 = 0x40400000;
  fVar5 = (fVar5 - DAT_1824c4388) / DAT_1824c43a8;
  dVar1 = (double)(param_5 * DAT_1824c43a8) + DAT_1824c4520;
  fVar6 = fVar5 * DAT_1824c3cb8;
  fVar4 = fVar5 * DAT_1824c3d74;
  fStack_50 = fVar5 * DAT_1824c3e28;
  local_68 = dVar1;
  do {
    if (iVar3 < SUB84(dVar1,0)) {
      param_5 = (float)DAT_18262b5c0;
      if (iVar3 < 6) {
        param_5._0_3_ = (undefined3)DAT_18262b5b0;
        param_5 = (float)CONCAT13(0x7f,param_5._0_3_);
      }
    }
    else {
      param_5._0_3_ = (undefined3)DAT_18262b5bc;
      param_5 = (float)CONCAT13(0x99,param_5._0_3_);
    }
    FUN_181296c00(param_2,param_5);
    local_58 = (float)iVar3 * fVar5 + fVar2 + fVar6;
    local_68 = (double)CONCAT44(uStack_54,local_58);
    fStack_60 = fStack_50;
    fStack_5c = fStack_4c;
    FUN_181295300(param_2,&local_68,fVar4);
    iVar3 = iVar3 + 1;
  } while (iVar3 < 7);
  return;
}



############ FUN_ 181307280 size=1067 ############

void FUN_181307280(longlong *param_1,undefined8 param_2,int param_3,int param_4,undefined8 param_5,
                  undefined8 param_6,longlong *param_7,undefined8 param_8,undefined8 param_9,
                  char param_10,char param_11,undefined8 param_12,undefined8 param_13)

{
  longlong lVar1;
  undefined8 *puVar2;
  float fVar3;
  longlong lVar4;
  undefined4 *puVar5;
  longlong *plVar6;
  longlong *plVar7;
  code *pcVar8;
  int iVar9;
  undefined8 uVar10;
  longlong *plVar11;
  undefined4 local_res18 [2];
  undefined1 local_res20 [8];
  longlong *local_98 [2];
  ulonglong local_88;
  int iStack_80;
  float fStack_7c;
  undefined1 local_78 [16];
  undefined1 local_68 [64];
  
  lVar4 = __RTDynamicCast(param_13,0,&juce::DirectoryContentsDisplayComponent::RTTI_Type_Descriptor,
                          &juce::Component::RTTI_Type_Descriptor,0);
  if (param_11 != '\0') {
    if (lVar4 == 0) {
      puVar5 = (undefined4 *)FUN_181346420(param_1 + -4,local_res20,0x1000540);
    }
    else {
      puVar5 = (undefined4 *)FUN_18134a8d0(lVar4,local_res18,0x1000540,0);
    }
    FUN_1812a3160(param_2,*puVar5);
  }
  FUN_181296c00(param_2,DAT_18262b5b8);
  if ((param_7 != (longlong *)0x0) && (*param_7 != 0)) {
    FUN_181294760(param_2,param_7,2,2,0x1c,param_4 + -4,0x124);
    goto LAB_1813074ad;
  }
  if (param_10 == '\0') {
    pcVar8 = *(code **)(*param_1 + 0x10);
    if (pcVar8 == FUN_181306c70) {
      plVar7 = param_1 + 0x22;
      if (*plVar7 == 0) {
        plVar6 = (longlong *)
                 FUN_181306d50(local_98,
                               "\n<svg version=\"1\" viewBox=\"-10 -10 450 600\" xmlns=\"http:\n  <path d=\"M17 0h290l120 132v426c0 10-8 19-17 19H17c-9 0-17-9-17-19V19C0 8 8 0 17 0z\" fill=\"#e5e5e5\" stroke=\"#888888\" stroke-width=\"7\"/>\n  <path d=\"M427 132H324c-9 0-17-9-17-19V0l120 132z\" fill=\"#ccc\"/>\n</svg>\n"
                              );
        plVar11 = local_98[0];
        if (plVar7 != plVar6) {
          lVar1 = *plVar6;
          *plVar6 = 0;
          puVar2 = (undefined8 *)*plVar7;
          *plVar7 = lVar1;
          if (puVar2 != (undefined8 *)0x0) {
            (**(code **)*puVar2)(puVar2,1);
            plVar11 = local_98[0];
          }
        }
        goto LAB_181307425;
      }
      goto LAB_181307434;
    }
LAB_18130769e:
    plVar7 = (longlong *)(*pcVar8)(param_1);
  }
  else {
    pcVar8 = *(code **)(*param_1 + 8);
    if (pcVar8 != FUN_181306ce0) goto LAB_18130769e;
    plVar7 = param_1 + 0x21;
    if (*plVar7 == 0) {
      plVar6 = (longlong *)
               FUN_181306d50(&param_7,
                             "\n<svg xmlns=\"http:\n  <defs>\n    <linearGradient id=\"a\">\n      <stop stop-color=\"#adf\" offset=\"0\"/>\n      <stop stop-color=\"#ecfaff\" offset=\"1\"/>\n    </linearGradient>\n    <linearGradient id=\"b\" x1=\".6\" x2=\"0\" y1=\".9\" xlink:href=\"#a\"/>\n    <linearGradient id=\"c\" x1=\".6\" x2=\".1\" y1=\".9\" y2=\".3\" xlink:href=\"#a\"/>\n  </defs>\n  <g class=\"currentLayer\">\n    <path d=\"M112.1 104c-8.2 2.2-13.2 11.6-11.3 21l68.3 342.7c1.9 9.4 10.1 15.2 18.4 13l384.3-104.1c8.2-2.2 13.2-11.6 11.3-21l-48-266a15.8 15.8 0 0 0-18.4-12.8l-224.2 38s-20.3-41.3-28.3-39.3z\" display=\"block\" fill=\"url(#b)\" stroke=\"#446c98\" stroke-width=\"7\"/>\n    <path d=\"M608.6 136.8L235.2 208a22.7 22.7 0 0 0-16 19l-40.8 241c1.7 8.4 9.6 14.5 17.8 12.3l380-104c8-2.2 10.7-10.2 12.3-18.4l38-210.1c.4-15.4-10.4-11.8-18-11.1z\" display=\"block\" fill=\"url(#c)\" opacity=\".8\" stroke=\"#446c98\" stroke-width=\"7\"/>\n  </g>\n</svg>\n"
                            );
      plVar11 = param_7;
      if (plVar7 != plVar6) {
        lVar1 = *plVar6;
        *plVar6 = 0;
        puVar2 = (undefined8 *)*plVar7;
        *plVar7 = lVar1;
        if (puVar2 != (undefined8 *)0x0) {
          (**(code **)*puVar2)(puVar2,1);
          plVar11 = param_7;
        }
      }
LAB_181307425:
      if (plVar11 != (longlong *)0x0) {
        (**(code **)*plVar11)(plVar11,1);
      }
    }
LAB_181307434:
    plVar7 = (longlong *)*plVar7;
  }
  if (plVar7 != (longlong *)0x0) {
    local_88 = 0x4000000040000000;
    local_res18[0] = 0x124;
    iStack_80 = DAT_1824c4468;
    fStack_7c = (float)param_4 - DAT_1824c4334;
    uVar10 = (**(code **)(*plVar7 + 0x168))(plVar7,local_78);
    FUN_1812971a0(local_res18,local_68,uVar10,&local_88);
    FUN_181332c20(plVar7,param_2);
  }
LAB_1813074ad:
  if (param_11 == '\0') {
    uVar10 = 0x1000541;
  }
  else {
    uVar10 = 0x1000542;
  }
  if (lVar4 == 0) {
    puVar5 = (undefined4 *)FUN_181346420(param_1 + -4,local_res18,uVar10);
  }
  else {
    puVar5 = (undefined4 *)FUN_18134a8d0(lVar4,&param_11,uVar10,0);
  }
  FUN_181296c00(param_2,*puVar5);
  fVar3 = DAT_1824c3df0;
  FUN_1812966f0(param_2);
  if ((param_3 < 0x1c3) || (param_10 != '\0')) {
    iStack_80 = param_3 + -0x20;
    uVar10 = 0x21;
    local_88 = 0x20;
  }
  else {
    plVar11 = (longlong *)((double)((float)param_3 * fVar3) + DAT_1824c4520);
    local_98[0] = (longlong *)((double)((float)param_3 * DAT_1824c3e28) + DAT_1824c4520);
    iStack_80 = (int)plVar11 + -0x20;
    local_88 = 0x20;
    param_7 = plVar11;
    fStack_7c = (float)param_4;
    FUN_181296100(param_2,param_6,&local_88,0x21,1,0);
    FUN_1812966f0(param_2,(float)param_4 * DAT_1824c3d8c);
    FUN_181296c00(param_2,DAT_18262b5ac);
    plVar7 = local_98[0];
    iVar9 = (int)local_98[0];
    iStack_80 = (iVar9 - (int)plVar11) + -8;
    local_88 = (ulonglong)plVar11 & 0xffffffff;
    fStack_7c = (float)param_4;
    FUN_181296100(param_2,param_8,&local_88,0x22,1,0);
    uVar10 = 0x22;
    iStack_80 = (param_3 - iVar9) + -8;
    local_88 = (ulonglong)plVar7 & 0xffffffff;
    param_6 = param_9;
  }
  fStack_7c = (float)param_4;
  FUN_181296100(param_2,param_6,&local_88,uVar10,1,0);
  return;
}



############ FUN_ 181307940 size=505 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181307940(undefined8 param_1,longlong param_2,longlong param_3,undefined8 param_4,
                  longlong *param_5)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  char cVar4;
  undefined4 local_a8;
  undefined4 local_a0;
  undefined8 *local_98;
  undefined8 *local_90;
  undefined4 local_88;
  undefined8 local_84;
  undefined8 *local_78;
  undefined8 *local_70;
  undefined1 local_68;
  undefined8 local_60;
  undefined8 uStack_58;
  undefined8 local_50;
  undefined **local_48;
  undefined4 local_40;
  undefined4 local_3c;
  undefined8 local_38;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined8 local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  if (*param_5 == 0) {
    local_48 = juce::NativeImageType::vftable;
    (*(code *)PTR_FUN_1824988f0)
              (&local_48,&local_98,2,*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c)
               ,1);
    local_90 = (undefined8 *)*param_5;
    *param_5 = (longlong)local_98;
    local_98 = local_90;
    if (local_90 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_90 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*local_90)(local_90,1);
      }
    }
    plVar3 = (longlong *)*param_5;
    if (plVar3 == (longlong *)0x0) {
      local_78 = (undefined8 *)0x0;
    }
    else {
      (**(code **)(*plVar3 + 8))(plVar3,&local_78);
    }
    local_68 = 0;
    local_98 = (undefined8 *)0x200000000;
    local_a8 = CONCAT13(0xb3,(int3)DAT_18262b5b8);
    local_40 = local_a8;
    local_3c = 8;
    local_38 = 0x200000000;
    local_70 = local_78;
    FUN_18124d610(&local_40,&local_78,param_4);
    if (local_78 != (undefined8 *)0x0) {
      (**(code **)*local_78)(local_78,1);
    }
  }
  FUN_181296c00(param_3,DAT_18262b5b8);
  local_30 = _DAT_1824c4780;
  uStack_2c = _UNK_1824c4784;
  uStack_28 = _UNK_1824c4788;
  uStack_24 = _UNK_1824c478c;
  local_20 = 0x3f800000;
  if (*param_5 != 0) {
    cVar4 = (**(code **)(**(longlong **)(param_3 + 8) + 0x60))();
    if (cVar4 == '\0') {
      (**(code **)(**(longlong **)(param_3 + 8) + 0xc0))
                (*(longlong **)(param_3 + 8),param_5,&local_30);
    }
  }
  FUN_181296c00(param_3,0xe63a3a3a);
  FUN_181295ed0(param_3,param_4);
  local_a0 = CONCAT13(0xcc,(int3)DAT_18262b5a8);
  FUN_181296c00(param_3,local_a0);
  local_60 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
  uStack_58 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
  local_50 = 0x3f800000;
  local_88 = DAT_1824c41e0;
  local_84 = 0;
  FUN_181295d20(param_3,param_4,&local_88,&local_60);
  return;
}



############ FUN_ 181307bb0 size=349 ############

void FUN_181307bb0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  longlong param_5)

{
  longlong lVar1;
  char cVar2;
  uint *puVar3;
  undefined1 uVar4;
  double dVar5;
  float fVar6;
  undefined4 local_res20;
  undefined4 local_48;
  undefined4 uStack_44;
  int iStack_40;
  undefined4 uStack_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_2c;
  
  lVar1 = param_5;
  fVar6 = DAT_1824c3db8;
  if (((*(byte *)(param_5 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_5 + 0x18) == 0 ||
      (cVar2 = FUN_18133eaa0(), fVar6 = DAT_1824c3db8, cVar2 != '\0')))) {
    fVar6 = DAT_1824c3ea4;
  }
  puVar3 = (uint *)FUN_18134a8d0(lVar1,&param_5,0x1008301,0);
  dVar5 = (double)((float)(*puVar3 >> 0x18) * fVar6) + DAT_1824c4520;
  uVar4 = 0xff;
  if (SUB84(dVar5,0) < 0xff) {
    uVar4 = SUB81(dVar5,0);
  }
  local_res20 = CONCAT13(uVar4,(int3)*puVar3);
  FUN_181296c00(param_2,local_res20);
  FUN_1812966f0(param_2);
  (**(code **)(*param_1 + 0x20))(param_1,&local_38,lVar1);
  _local_48 = CONCAT44(local_34,3);
  _iStack_40 = CONCAT44(local_2c,local_38 + -5);
  FUN_181296100(param_2,lVar1 + 8,&local_48,0x21,2,0);
  return;
}



############ FUN_ 181307d20 size=113 ############

void FUN_181307d20(undefined8 param_1,longlong param_2,undefined4 param_3,int param_4,
                  undefined8 param_5)

{
  undefined4 *puVar1;
  undefined1 local_res18 [16];
  undefined8 local_18;
  undefined4 local_10;
  int local_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(param_5,local_res18,0x1008300,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = 0;
  local_c = param_4 + -1;
  local_10 = param_3;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_18,0);
  return;
}



############ FUN_ 181307fb0 size=340 ############

void FUN_181307fb0(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,int param_6,undefined8 param_7,longlong param_8)

{
  char cVar1;
  undefined1 uVar2;
  undefined4 *puVar3;
  int iVar4;
  float fVar5;
  undefined4 local_res18;
  undefined1 local_res20 [8];
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  int iStack_3c;
  
  fVar5 = DAT_1824c3d3c;
  if (((*(byte *)(param_8 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_8 + 0x18) == 0 ||
      (cVar1 = FUN_18133eaa0(), fVar5 = DAT_1824c3d3c, cVar1 != '\0')))) {
    fVar5 = DAT_1824c3ea4;
  }
  puVar3 = (undefined4 *)FUN_18134a8d0(param_8,local_res20,0x1003240,1);
  if (0.0 < fVar5) {
    if (fVar5 < DAT_1824c3ea4) {
      uVar2 = (undefined1)(int)(fVar5 * DAT_1824c454c);
    }
    else {
      uVar2 = 0xff;
    }
  }
  else {
    uVar2 = 0;
  }
  local_res18 = CONCAT13(uVar2,(int3)*puVar3);
  FUN_181296c00(param_2,local_res18);
  fVar5 = (float)param_6 * DAT_1824c3e4c;
  if (DAT_1824c4414 <= (float)param_6 * DAT_1824c3e4c) {
    fVar5 = DAT_1824c4414;
  }
  FUN_1812966f0(param_2,fVar5);
  uStack_40 = param_5;
  iStack_3c = param_6;
  iVar4 = 1;
  if (1 < param_6 / (int)fVar5) {
    iVar4 = param_6 / (int)fVar5;
  }
  local_48 = param_3;
  uStack_44 = param_4;
  FUN_181296100(param_2,param_7,&local_48,0x24,iVar4,0);
  return;
}



############ FUN_ 181308350 size=214 ############

void FUN_181308350(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  undefined4 *puVar1;
  undefined1 local_res18 [16];
  undefined1 local_18 [16];
  
  puVar1 = (undefined4 *)FUN_18134a8d0(param_3,local_res18,0x1000440,0);
  FUN_1812a3160(param_2,*puVar1);
  puVar1 = (undefined4 *)FUN_18134a8d0(param_3,local_res18,0x1000441,0);
  FUN_181296c00(param_2,*puVar1);
  local_18 = ZEXT416((uint)(float)*(int *)(param_3 + 0x28)) << 0x40;
  FUN_181295950(param_2,local_18);
  return;
}



############ FUN_ 1813094a0 size=696 ############

void FUN_1813094a0(undefined8 param_1,longlong param_2,longlong param_3,int param_4,int param_5)

{
  undefined8 *puVar1;
  undefined1 auVar2 [12];
  undefined1 auVar3 [12];
  undefined8 uVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  float fVar8;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar9 [16];
  undefined1 auVar10 [16];
  undefined4 local_res10;
  ulonglong local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined4 uStack_94;
  undefined4 uStack_8c;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined1 local_68;
  void *local_60;
  undefined8 local_58;
  
  local_b8 = 0;
  uStack_b0 = 0;
  fVar8 = DAT_1824c3d04;
  if (((*(byte *)(param_2 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_2 + 0x18) == 0 ||
      (cVar5 = FUN_18133eaa0(), fVar8 = DAT_1824c3d04, cVar5 != '\0')))) {
    fVar8 = DAT_1824c3d3c;
  }
  uVar4 = DAT_1824c4140;
  local_res10 = CONCAT13((char)(int)(fVar8 * DAT_1824c454c),(int3)DAT_18262b5b8);
  local_78 = 0;
  uStack_70 = 0;
  local_68 = 0;
  local_a8._4_4_ = 0;
  local_60 = (void *)0x0;
  local_58 = 0;
  uStack_80._0_4_ = DAT_182673b60;
  FUN_18049ba20(&local_60,8);
  iVar7 = local_58._4_4_ + 1;
  auVar2._4_8_ = extraout_XMM0_Qb;
  auVar2._0_4_ = uStack_94;
  auVar9._0_8_ = auVar2._0_8_ << 0x20;
  auVar9._8_4_ = local_res10;
  auVar9._12_4_ = uStack_8c;
  puVar1 = (undefined8 *)((longlong)local_60 + (longlong)local_58._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = auVar9._8_8_;
  local_58 = CONCAT44(local_58._4_4_ + 2,(undefined4)local_58);
  auVar3._4_8_ = auVar9._8_8_;
  auVar3._0_4_ = local_88._4_4_;
  auVar10._0_8_ = auVar3._0_8_ << 0x20;
  auVar10._8_4_ = (undefined4)uStack_80;
  auVar10._12_4_ = uStack_80._4_4_;
  uStack_80 = auVar10._8_8_;
  local_88 = uVar4;
  puVar1 = (undefined8 *)((longlong)local_60 + (longlong)iVar7 * 0x10);
  *puVar1 = uVar4;
  puVar1[1] = uStack_80;
  iVar7 = *(int *)(param_2 + 0xf8);
  iVar6 = 0;
  local_a8._0_4_ = iVar6;
  if (iVar7 == 0) {
    local_78 = CONCAT44((float)param_5,(undefined4)local_78);
    fVar8 = (float)param_5 * DAT_1824c3e28;
    local_a8._4_4_ = (int)fVar8;
    uStack_a0._4_4_ = param_5 - local_a8._4_4_;
    local_b8 = (ulonglong)(param_5 - 1) << 0x20;
  }
  else {
    if (iVar7 != 1) {
      uStack_a0._4_4_ = param_5;
      if (iVar7 == 2) {
        local_78 = CONCAT44(local_78._4_4_,(float)param_4);
        fVar8 = (float)param_4 * DAT_1824c3e28;
        uStack_70 = CONCAT44(uStack_70._4_4_,fVar8);
        local_a8._0_4_ = (int)fVar8;
        uStack_a0._0_4_ = param_4 - (int)local_a8;
        local_b8 = (ulonglong)(param_4 - 1);
        uStack_b0 = CONCAT44(param_5,1);
        local_a8._4_4_ = iVar6;
      }
      else if (iVar7 == 3) {
        uStack_70 = CONCAT44(uStack_70._4_4_,(float)param_4 * DAT_1824c3d18);
        uStack_a0._0_4_ = (int)((float)param_4 * DAT_1824c3d18);
        local_b8 = 0;
        uStack_b0 = CONCAT44(param_5,1);
      }
      else {
        uStack_a0._4_4_ = 0;
        uStack_a0._0_4_ = 0;
        local_a8._4_4_ = 0;
        local_a8._0_4_ = 0;
      }
      goto LAB_1813096a1;
    }
    fVar8 = (float)param_5 * DAT_1824c3d18;
    uStack_a0._4_4_ = (int)fVar8;
    local_b8 = 0;
  }
  uStack_b0 = CONCAT44(1,param_4);
  uStack_70 = CONCAT44(fVar8,(undefined4)uStack_70);
  uStack_a0._0_4_ = param_4;
LAB_1813096a1:
  FUN_181296a90(param_3,&local_78);
  if (0 < (int)uStack_a0 + 4) {
    iVar6 = (int)uStack_a0 + 4;
  }
  iVar7 = 0;
  if (0 < uStack_a0._4_4_ + 4) {
    iVar7 = uStack_a0._4_4_ + 4;
  }
  local_a8 = CONCAT44(local_a8._4_4_ + -2,(int)local_a8 + -2);
  uStack_a0 = CONCAT44(iVar7,iVar6);
  local_88 = local_a8;
  uStack_80 = uStack_a0;
  (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_88,0);
  FUN_181296c00(param_3,0x80000000);
  local_88 = local_b8;
  uStack_80 = uStack_b0;
  (**(code **)(**(longlong **)(param_3 + 8) + 0xa8))(*(longlong **)(param_3 + 8),&local_88,0);
                    /* WARNING: Could not recover jumptable at 0x000181309751. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(local_60);
  return;
}



############ FUN_ 1813098c0 size=1464 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813098c0(longlong *param_1,longlong param_2,longlong param_3,char param_4,char param_5)

{
  int *piVar1;
  code *pcVar2;
  longlong lVar3;
  float fVar4;
  char cVar5;
  int iVar6;
  undefined8 *puVar7;
  uint *puVar8;
  uint uVar9;
  uint uVar10;
  undefined1 uVar11;
  longlong lVar12;
  undefined1 *puVar13;
  undefined8 uVar14;
  bool bVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined4 local_res10 [2];
  uint local_res18;
  undefined8 *local_1a8;
  undefined4 local_1a0;
  float local_19c;
  undefined8 local_198;
  undefined8 uStack_190;
  undefined8 local_188;
  undefined8 local_180;
  undefined8 uStack_178;
  undefined8 local_168;
  int iStack_160;
  int iStack_15c;
  undefined1 local_158 [4];
  undefined1 local_154 [4];
  undefined1 local_150 [8];
  double local_148;
  longlong local_140 [2];
  float fStack_130;
  undefined4 uStack_12c;
  undefined8 local_128;
  undefined4 local_120;
  undefined4 uStack_11c;
  float fStack_118;
  undefined4 uStack_114;
  undefined8 local_110;
  undefined4 local_108;
  undefined4 uStack_104;
  float fStack_100;
  undefined4 uStack_fc;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined1 local_c8 [24];
  undefined1 local_b0 [136];
  
  local_f0 = 0xfffffffffffffffe;
  local_e8 = 0;
  uStack_e0 = 0;
  local_180 = 0;
  uStack_178 = 0;
  FUN_18131a590(param_2,&local_e8,&local_180);
  fVar19 = (float)uStack_178._4_4_;
  fVar20 = (float)(int)uStack_178;
  fVar18 = (float)local_180._4_4_;
  fVar17 = (float)(int)local_180;
  fVar16 = fVar19;
  local_19c = fVar20;
  if (*(int *)(*(longlong *)(param_2 + 0x1c8) + 0xf8) - 2U < 2) {
    fVar16 = fVar20;
    local_19c = fVar19;
  }
  (**(code **)(*param_1 + 0x30))(param_1,&local_1a8,param_2,fVar16);
  bVar15 = DAT_182673708 == param_2;
  FUN_181252760(&local_1a8);
  *(bool *)(local_1a8 + 7) = bVar15;
  if (local_1a8[2] != 0) {
    pcVar2 = *(code **)(*(longlong *)local_1a8[2] + 8);
    if ((pcVar2 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                   vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) &&
       (cVar5 = (*pcVar2)((longlong *)local_1a8[2],&local_1a8), cVar5 == '\0')) {
      puVar7 = (undefined8 *)local_1a8[2];
      local_1a8[2] = 0;
      if (puVar7 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar7 + 1);
        iVar6 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar6 == 1) {
          (**(code **)*puVar7)(puVar7,1);
        }
      }
    }
  }
  fVar4 = DAT_1824c3ea4;
  local_198 = _DAT_1824c4780;
  uStack_190 = _UNK_1824c4788;
  local_188 = 0x3f800000;
  iVar6 = *(int *)(*(longlong *)(param_2 + 0x1c8) + 0xf8);
  if (-1 < iVar6) {
    if (iVar6 < 2) {
      fStack_130 = fVar17 + 0.0;
      local_140[1] = 0x3f800000;
      uStack_12c = 0;
      local_198 = 0x3f800000;
      uStack_190 = (ulonglong)(uint)fStack_130;
      local_188 = CONCAT44(fVar18 + 0.0,DAT_1824c3ea4);
      local_128 = local_188;
    }
    else if (iVar6 == 2) {
      puVar7 = (undefined8 *)FUN_1812a0880(&local_198,local_b0,DAT_1824c4690);
      uStack_fc = *(undefined4 *)((longlong)puVar7 + 0xc);
      fStack_100 = fVar17 + *(float *)(puVar7 + 1);
      local_198 = *puVar7;
      local_108 = *(undefined4 *)puVar7;
      uStack_104 = *(undefined4 *)((longlong)puVar7 + 4);
      uStack_190 = CONCAT44(uStack_fc,fStack_100);
      local_188 = CONCAT44(fVar18 + fVar19 + *(float *)((longlong)puVar7 + 0x14),
                           *(undefined4 *)(puVar7 + 2));
      local_f8 = local_188;
    }
    else if (iVar6 == 3) {
      puVar7 = (undefined8 *)FUN_1812a0880(&local_198,local_c8,DAT_1824c3fa0);
      uStack_114 = *(undefined4 *)((longlong)puVar7 + 0xc);
      fStack_118 = fVar17 + fVar20 + *(float *)(puVar7 + 1);
      local_198 = *puVar7;
      local_120 = *(undefined4 *)puVar7;
      uStack_11c = *(undefined4 *)((longlong)puVar7 + 4);
      uStack_190 = CONCAT44(uStack_114,fStack_118);
      local_188 = CONCAT44(fVar18 + *(float *)((longlong)puVar7 + 0x14),*(undefined4 *)(puVar7 + 2))
      ;
      local_110 = local_188;
    }
  }
  cVar5 = FUN_1804d6ee0(param_2);
  if ((cVar5 == '\0') ||
     ((cVar5 = FUN_181341a70(param_2,0x1005815), cVar5 == '\0' &&
      (cVar5 = FUN_181315bd0(param_1 + -0xf,0x1005815), cVar5 == '\0')))) {
    cVar5 = FUN_181341a70(param_2,0x1005813);
    if ((cVar5 == '\0') && (cVar5 = FUN_181315bd0(param_1 + -0xf,0x1005813), cVar5 == '\0')) {
      lVar3 = *(longlong *)(param_2 + 0x1c8);
      uVar9 = *(int *)(lVar3 + 0xf4) - 1;
      lVar12 = (longlong)(int)uVar9;
      uVar10 = 0xffffffff;
      if (-1 < (int)uVar9) {
        do {
          uVar10 = uVar9;
          if (**(longlong **)(*(longlong *)(lVar3 + 0xe8) + lVar12 * 8) == param_2) break;
          uVar9 = uVar9 - 1;
          lVar12 = lVar12 + -1;
          uVar10 = 0xffffffff;
        } while (-1 < lVar12);
      }
      local_res10[0] = DAT_182673b60;
      if ((uVar10 < *(uint *)(lVar3 + 0xf4)) &&
         (lVar3 = *(longlong *)(*(longlong *)(lVar3 + 0xe8) + (longlong)(int)uVar10 * 8), lVar3 != 0
         )) {
        local_res10[0] = *(undefined4 *)(lVar3 + 0x10);
      }
      puVar8 = (uint *)FUN_1812a24b0(local_res10,local_154,fVar4);
      goto LAB_181309c6d;
    }
    uVar14 = 0x1005813;
    puVar13 = local_150;
  }
  else {
    uVar14 = 0x1005815;
    puVar13 = local_158;
  }
  puVar8 = (uint *)FUN_181346420(param_1 + -0xf,puVar13,uVar14);
LAB_181309c6d:
  uVar10 = *puVar8;
  fVar17 = DAT_1824c3d54;
  local_res18 = uVar10;
  if ((((*(byte *)(param_2 + 0xa9) & 0x10) == 0) &&
      (((*(longlong *)(param_2 + 0x18) == 0 ||
        (cVar5 = FUN_18133eaa0(), fVar17 = DAT_1824c3d54, cVar5 != '\0')) &&
       (fVar17 = fVar4, param_4 == '\0')))) && (param_5 == '\0')) {
    fVar17 = DAT_1824c3e28;
  }
  local_148 = (double)((float)(uVar10 >> 0x18) * fVar17) + DAT_1824c4520;
  uVar11 = 0xff;
  if (SUB84(local_148,0) < 0xff) {
    uVar11 = SUB81(local_148,0);
  }
  local_1a0 = CONCAT13(uVar11,(int3)uVar10);
  FUN_181296c00(param_3,local_1a0);
  if (*(char *)(param_3 + 0x10) != '\0') {
    *(undefined1 *)(param_3 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_3 + 8) + 0xd0))(*(longlong **)(param_3 + 8),&local_1a8);
  if (*(char *)(param_3 + 0x10) != '\0') {
    *(undefined1 *)(param_3 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_3 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_3 + 8) + 0x18))(*(longlong **)(param_3 + 8),&local_198);
  uVar14 = FUN_181248e40(param_2 + 0x158,local_140);
  iStack_15c = (int)fVar16;
  iStack_160 = (int)local_19c;
  local_168 = 0;
  uStack_d0 = CONCAT44(iStack_15c,iStack_160);
  local_d8 = 0;
  iVar6 = 1;
  if (1 < iStack_15c / 0xc) {
    iVar6 = iStack_15c / 0xc;
  }
  FUN_181296100(param_3,uVar14,&local_d8,0x24,iVar6,0);
  puVar8 = (uint *)(local_140[0] + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (local_1a8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_1a8 + 1);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar6 == 1) {
      (**(code **)*local_1a8)(local_1a8,1);
    }
  }
  return;
}



############ FUN_ 181309eb0 size=534 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181309eb0(undefined8 param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  float fVar2;
  char cVar3;
  char cVar4;
  uint *puVar5;
  uint uVar6;
  undefined1 uVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  longlong lVar10;
  float fVar11;
  undefined4 local_res10;
  double local_68;
  undefined8 local_60;
  undefined4 uStack_58;
  undefined8 local_50;
  undefined8 uStack_48;
  undefined8 local_40;
  
  lVar1 = *(longlong *)(param_2 + 0x1c8);
  uVar6 = *(int *)(lVar1 + 0xf4) - 1;
  if (-1 < (int)uVar6) {
    lVar10 = (longlong)(int)uVar6;
    puVar9 = (undefined8 *)(*(longlong *)(lVar1 + 0xe8) + lVar10 * 8);
    do {
      if (*(longlong *)*puVar9 == param_2) goto LAB_181309f19;
      uVar6 = uVar6 - 1;
      puVar9 = puVar9 + -1;
      lVar10 = lVar10 + -1;
    } while (-1 < lVar10);
  }
  uVar6 = 0xffffffff;
LAB_181309f19:
  local_res10 = DAT_182673b60;
  if ((uVar6 < *(uint *)(lVar1 + 0xf4)) &&
     (lVar1 = *(longlong *)(*(longlong *)(lVar1 + 0xe8) + (longlong)(int)uVar6 * 8), lVar1 != 0)) {
    local_res10 = *(uint *)(lVar1 + 0x10);
  }
  cVar3 = FUN_1804d6ee0(param_2);
  if (cVar3 == '\0') {
    local_68 = (double)((float)(local_res10 >> 0x18) * DAT_1824c3e58) + DAT_1824c4520;
    uVar7 = 0xff;
    if (SUB84(local_68,0) < 0xff) {
      uVar7 = SUB81(local_68,0);
    }
    local_res10 = CONCAT13(uVar7,(undefined3)local_res10);
  }
  FUN_181296c00(param_3,local_res10);
  FUN_181295ed0(param_3,param_4);
  fVar2 = DAT_1824c3ea4;
  fVar11 = DAT_1824c3d8c;
  if (((*(byte *)(param_2 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_2 + 0x18) == 0 ||
      (cVar4 = FUN_18133eaa0(), fVar11 = DAT_1824c3d8c, cVar4 != '\0')))) {
    fVar11 = fVar2;
  }
  uVar8 = 0x1005812;
  if (cVar3 != '\0') {
    uVar8 = 0x1005814;
  }
  puVar5 = (uint *)FUN_18134a8d0(param_2,&local_68,uVar8,0);
  local_60 = (double)((float)(*puVar5 >> 0x18) * fVar11) + DAT_1824c4520;
  uVar7 = 0xff;
  if (SUB84(local_60,0) < 0xff) {
    uVar7 = SUB81(local_60,0);
  }
  local_res10._0_3_ = (undefined3)*puVar5;
  local_res10 = CONCAT13(uVar7,(undefined3)local_res10);
  FUN_181296c00(param_3,local_res10);
  local_50 = _DAT_1824c4780;
  uStack_48 = _UNK_1824c4788;
  local_40 = 0x3f800000;
  local_60._0_4_ = fVar2;
  if (cVar3 == '\0') {
    local_60._0_4_ = DAT_1824c3d8c;
  }
  local_60._4_4_ = 0;
  uStack_58 = 0;
  FUN_181295d20(param_3,param_4,&local_60,&local_50);
  return;
}



############ FUN_ 18130bc20 size=518 ############

void FUN_18130bc20(undefined8 param_1,longlong param_2,int param_3,int param_4,int *param_5)

{
  int iVar1;
  int iVar2;
  undefined1 auVar3 [16];
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined1 local_38 [8];
  float fStack_30;
  float fStack_2c;
  
  iVar4 = param_5[2];
  iVar1 = param_5[1];
  iVar2 = *param_5;
  if (iVar2 + iVar1 + iVar4 + param_5[3] != 0) {
    iVar7 = 0;
    iVar6 = (param_4 - iVar2) - iVar4;
    iVar5 = (param_3 - iVar1) - param_5[3];
    local_38._4_4_ = iVar2;
    local_38._0_4_ = iVar1;
    fStack_30 = (float)iVar5;
    fStack_2c = (float)iVar6;
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      iVar7 = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))
                (*(longlong **)(param_2 + 8),iVar4,param_3,param_4,0xfffffffffffffffe,param_2,0,
                 param_3);
    }
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    (**(code **)(**(longlong **)(param_2 + 8) + 0x38))(*(longlong **)(param_2 + 8),local_38);
    FUN_181296c00(param_2,0x50000000);
    auVar3._4_4_ = (float)param_3;
    auVar3._0_4_ = (float)iVar7;
    auVar3._8_4_ = (float)param_4;
    auVar3._12_4_ = 0;
    _local_38 = auVar3 << 0x20;
    FUN_181295950(param_2,local_38,DAT_1824c3ea4);
    FUN_181296c00(param_2,0x19000000);
    iVar5 = iVar5 + 2;
    iVar4 = 0;
    if (0 < iVar5) {
      iVar4 = iVar5;
    }
    iVar6 = iVar6 + 2;
    iVar5 = 0;
    if (0 < iVar6) {
      iVar5 = iVar6;
    }
    local_38._4_4_ = (float)(iVar2 + -1);
    local_38._0_4_ = (float)(iVar1 + -1);
    fStack_30 = (float)iVar4;
    fStack_2c = (float)iVar5;
    FUN_181295950(param_2,local_38,DAT_1824c3ea4);
    if (*(char *)(param_2 + 0x10) == '\0') {
      (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
    }
    else {
      *(undefined1 *)(param_2 + 0x10) = 0;
    }
  }
  return;
}



############ FUN_ 18130be30 size=422 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18130be30(undefined8 param_1,undefined8 param_2,int param_3,int param_4)

{
  int iVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float local_b8;
  float fStack_b4;
  float fStack_b0;
  float fStack_ac;
  
  fVar3 = DAT_1824c3ea4;
  fVar2 = DAT_1824c3d54;
  fVar7 = 0.0;
  iVar1 = param_3;
  if (param_4 < param_3) {
    iVar1 = param_4;
  }
  fVar9 = (float)param_3 + DAT_1824c3ea4;
  fVar8 = (float)param_4 + DAT_1824c3ea4;
  fVar6 = (float)iVar1 * _DAT_1824c3ca8;
  do {
    FUN_181296c00(param_2,DAT_18262b5a0);
    fVar4 = (float)param_3 * fVar7;
    fVar5 = (float)param_4 * fVar7;
    local_b8 = fVar4;
    fStack_b4 = fVar8;
    fStack_b0 = fVar9;
    fStack_ac = fVar5;
    FUN_181294940(param_2,&local_b8,fVar6);
    FUN_181296c00(param_2,DAT_18262b5ac);
    local_b8 = fVar4 + fVar6;
    fStack_ac = fVar5 + fVar6;
    fStack_b4 = fVar8;
    fStack_b0 = fVar9;
    FUN_181294940(param_2,&local_b8,fVar6);
    fVar7 = fVar7 + fVar2;
  } while (fVar7 < fVar3);
  return;
}



############ FUN_ 18130bfe0 size=489 ############

void FUN_18130bfe0(undefined8 param_1,longlong param_2,longlong *param_3,int param_4,int param_5,
                  int param_6,int param_7,undefined4 *param_8,undefined8 param_9,longlong param_10)

{
  longlong lVar1;
  undefined4 *puVar2;
  char cVar3;
  longlong *plVar4;
  undefined4 local_58;
  undefined4 uStack_54;
  float fStack_50;
  float fStack_4c;
  float local_48;
  float local_44;
  float local_40;
  float local_3c;
  undefined1 local_38 [48];
  
  plVar4 = param_3;
  if (((*(byte *)(param_10 + 0xa9) & 0x10) == 0) && (*(longlong *)(param_10 + 0x18) != 0)) {
    FUN_18133eaa0();
  }
  lVar1 = *plVar4;
  local_48 = (float)param_4;
  local_44 = (float)param_5;
  local_40 = (float)param_6;
  local_3c = (float)param_7;
  if (lVar1 == 0) {
    fStack_50 = 0.0;
    fStack_4c = 0.0;
  }
  else {
    fStack_50 = *(float *)(lVar1 + 0x14);
    fStack_4c = *(float *)(lVar1 + 0x18);
  }
  param_5 = 0x40;
  local_58 = 0;
  uStack_54 = 0;
  fStack_50 = (float)(int)fStack_50;
  fStack_4c = (float)(int)fStack_4c;
  FUN_1812971a0(&param_5,local_38,&local_58,&local_48);
  puVar2 = param_8;
  if (*(char *)((longlong)param_8 + 3) != -1) {
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0x90))();
    if ((*param_3 != 0) &&
       (cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))(), cVar3 == '\0')) {
      (**(code **)(**(longlong **)(param_2 + 8) + 0xc0))
                (*(longlong **)(param_2 + 8),param_3,local_38);
    }
  }
  if (((*(char *)((longlong)puVar2 + 3) != '\0') && (FUN_181296c00(param_2,*puVar2), *param_3 != 0))
     && (cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))(), cVar3 == '\0')) {
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    (**(code **)(**(longlong **)(param_2 + 8) + 0x48))(*(longlong **)(param_2 + 8),param_3,local_38)
    ;
    FUN_181295f50(param_2);
    (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
  }
  return;
}



############ FUN_ 18130c710 size=255 ############

void FUN_18130c710(longlong param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5)

{
  int iVar1;
  undefined4 *puVar2;
  undefined1 local_res20 [8];
  undefined8 uVar3;
  undefined8 local_48;
  float local_40;
  float local_3c;
  void *local_38;
  undefined4 local_2c;
  
  uVar3 = 0xfffffffffffffffe;
  param_1 = param_1 + -0x70;
  puVar2 = (undefined4 *)FUN_181346420(param_1,local_res20,0x1001b00);
  FUN_1812a3160(param_2,*puVar2);
  puVar2 = (undefined4 *)FUN_181346420(param_1,local_res20,0x1001c10);
  FUN_181296c00(param_2,*puVar2);
  iVar1 = param_5;
  FUN_181295c90(param_2,0,0,param_4,param_5,1,uVar3);
  local_40 = (float)param_4;
  local_3c = (float)iVar1;
  local_48 = 0;
  puVar2 = (undefined4 *)FUN_181346420(param_1,&param_5,0x1001c00);
  uVar3 = FUN_181315540(&local_38,param_3,*puVar2);
  FUN_18124e500(uVar3,param_2,&local_48);
  FUN_1804ae9d0(&local_38);
  local_2c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_38);
}



############ FUN_ 18130d0f0 size=1526 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18130d0f0(undefined8 param_1,longlong param_2,int param_3,int param_4,int param_5,
                  uint param_6,float param_7,float param_8,float param_9,longlong param_10)

{
  float fVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  uint *puVar5;
  float *pfVar6;
  float *pfVar7;
  bool bVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float _X;
  undefined8 in_stack_fffffffffffffea8;
  undefined4 uVar15;
  undefined8 in_stack_fffffffffffffeb0;
  undefined4 uVar16;
  undefined8 local_138;
  undefined8 uStack_130;
  undefined8 local_128;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined1 local_f8;
  float *local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 uStack_d8;
  undefined1 local_d0;
  float local_c8;
  float local_c4;
  undefined8 local_c0;
  
  lVar2 = param_10;
  uVar15 = (undefined4)((ulonglong)in_stack_fffffffffffffea8 >> 0x20);
  uVar16 = (undefined4)((ulonglong)in_stack_fffffffffffffeb0 >> 0x20);
  local_c0 = 0xfffffffffffffffe;
  iVar4 = param_5 / 2;
  if ((int)param_6 / 2 < param_5 / 2) {
    iVar4 = (int)param_6 / 2;
  }
  fVar10 = (float)iVar4 - DAT_1824c41e0;
  fVar12 = (float)param_5 * DAT_1824c3d8c + (float)param_3;
  fVar11 = (float)(int)param_6 * DAT_1824c3d8c + (float)param_4;
  fVar14 = fVar12 - fVar10;
  fVar13 = fVar10 * DAT_1824c41e0;
  _X = (param_9 - param_8) * param_7 + param_8;
  local_c8 = fVar13;
  local_c4 = fVar14;
  cVar3 = FUN_18133e440(param_10);
  if (((cVar3 == '\0') || ((*(byte *)(lVar2 + 0xa9) & 0x10) != 0)) ||
     ((*(longlong *)(lVar2 + 0x18) != 0 && (cVar3 = FUN_18133eaa0(), cVar3 == '\0')))) {
    bVar8 = false;
  }
  else {
    bVar8 = true;
  }
  fVar1 = DAT_1824c3ea4;
  if (fVar10 <= DAT_1824c4408) {
    if (((*(byte *)(lVar2 + 0xa9) & 0x10) == 0) &&
       ((*(longlong *)(lVar2 + 0x18) == 0 || (cVar3 = FUN_18133eaa0(), cVar3 != '\0')))) {
      fVar14 = DAT_1824c3df0;
      if (bVar8) {
        fVar14 = fVar1;
      }
      puVar5 = (uint *)FUN_18134a8d0(lVar2,&param_9,0x1001311,0);
      if (0.0 < fVar14) {
        param_8._0_3_ = (undefined3)*puVar5;
        if (fVar14 < fVar1) {
          param_8 = (float)CONCAT13((char)(int)(fVar14 * DAT_1824c454c),param_8._0_3_);
        }
        else {
          param_8 = (float)CONCAT13(0xff,param_8._0_3_);
        }
      }
      else {
        param_8 = (float)(*puVar5 & 0xffffff);
      }
    }
    else {
      param_8 = -1.180104e-38;
    }
    FUN_181296c00(param_2,param_8);
    local_f0 = (float *)0x0;
    local_e8 = 0;
    local_e0 = 0;
    uStack_d8 = 0;
    local_d0 = 1;
    local_138 = CONCAT44(fVar13 * _DAT_1824c466c,fVar13 * _DAT_1824c466c);
    uStack_130 = CONCAT44(fVar13 * DAT_1824c3e28,fVar13 * DAT_1824c3e28);
    FUN_18129d1e0(&local_f0,&local_138);
    local_118 = (float *)_DAT_1824c4780;
    uStack_110 = _UNK_1824c4788;
    local_108 = 0x3f800000;
    FUN_181297840(fVar13 * DAT_1824c3cb8,0,0,&local_f0,&local_f0,&local_118,fVar1);
    local_138 = 0;
    uStack_130 = (ulonglong)((uint)fVar10 ^ DAT_1824c4f30) << 0x20;
    FUN_18129c940(&local_f0,&local_138,fVar13 * DAT_1824c3d18);
    fVar10 = cosf(_X);
    fVar13 = sinf(_X);
    local_118 = (float *)CONCAT44((uint)fVar13 ^ DAT_1824c4f30,fVar10);
    uStack_110 = CONCAT44(fVar13,fVar12 + 0.0);
    local_108 = CONCAT44(fVar11 + 0.0,fVar10);
    cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
    if (cVar3 == '\0') {
      for (pfVar7 = local_f0; pfVar7 != local_f0 + local_e8._4_4_; pfVar7 = pfVar7 + 1) {
        fVar10 = *pfVar7;
        if (fVar10 == DAT_1824c4600) {
          pfVar7 = pfVar7 + 2;
        }
        else if (((fVar10 == DAT_1824c45fc) || (fVar10 == DAT_1824c4604)) ||
                (fVar10 == DAT_1824c4608)) {
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                    (*(longlong **)(param_2 + 8),&local_f0,&local_118);
          break;
        }
      }
    }
    local_e8 = local_e8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_f0);
  }
  if (((*(byte *)(lVar2 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(lVar2 + 0x18) == 0 || (cVar3 = FUN_18133eaa0(), cVar3 != '\0')))) {
    fVar12 = DAT_1824c3df0;
    fVar9 = DAT_1824c3df0;
    if (bVar8) {
      fVar9 = fVar1;
    }
    puVar5 = (uint *)FUN_18134a8d0(lVar2,&param_7,0x1001311,0);
    if (0.0 < fVar9) {
      param_6._0_3_ = (undefined3)*puVar5;
      if (fVar9 < fVar1) {
        param_6 = CONCAT13((char)(int)(fVar9 * DAT_1824c454c),(undefined3)param_6);
        FUN_181296c00(param_2,param_6);
      }
      else {
        param_6 = CONCAT13(0xff,(undefined3)param_6);
        FUN_181296c00(param_2,param_6);
      }
    }
    else {
      param_6 = *puVar5 & 0xffffff;
      FUN_181296c00(param_2,param_6);
    }
  }
  else {
    FUN_181296c00(param_2,0x80808080);
    fVar12 = DAT_1824c3df0;
  }
  local_118 = (float *)0x0;
  uStack_110 = 0;
  local_108 = 0;
  uStack_100 = 0;
  local_f8 = 1;
  FUN_18129cb60(&local_118,fVar14,fVar11 - fVar10,fVar13,CONCAT44(uVar15,fVar13),
                CONCAT44(uVar16,param_8),_X,fVar12);
  cVar3 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar3 == '\0') {
    pfVar7 = local_118 + uStack_110._4_4_;
    bVar8 = local_118 == pfVar7;
    pfVar6 = local_118;
    while (!bVar8) {
      fVar10 = *pfVar6;
      if (fVar10 == DAT_1824c4600) {
        pfVar6 = pfVar6 + 3;
        bVar8 = pfVar6 == pfVar7;
      }
      else {
        if (((fVar10 == DAT_1824c45fc) || (fVar10 == DAT_1824c4604)) || (fVar10 == DAT_1824c4608)) {
          local_138 = _DAT_1824c4780;
          uStack_130 = _UNK_1824c4788;
          local_128 = 0x3f800000;
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                    (*(longlong **)(param_2 + 8),&local_118,&local_138);
          break;
        }
        pfVar6 = pfVar6 + 1;
        bVar8 = pfVar6 == pfVar7;
      }
    }
  }
  uStack_110 = uStack_110 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_118);
}



############ FUN_ 18130e9c0 size=832 ############

void FUN_18130e9c0(longlong *param_1,longlong param_2,longlong param_3)

{
  uint uVar1;
  char cVar2;
  undefined4 *puVar3;
  uint *puVar4;
  undefined8 uVar5;
  int *piVar6;
  int iVar7;
  undefined1 uVar8;
  int iVar9;
  float fVar10;
  undefined4 local_res18;
  undefined4 local_res20;
  undefined8 *local_d8;
  undefined8 local_d0;
  int local_c8;
  int iStack_c4;
  int local_b8;
  int iStack_b4;
  int iStack_b0;
  int iStack_ac;
  undefined1 local_a8 [4];
  undefined1 local_a4 [4];
  undefined4 local_a0;
  undefined1 local_9c [4];
  undefined1 local_98 [8];
  double local_90;
  longlong local_88;
  double local_80;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined1 local_38 [2] [16];
  
  local_58 = 0xfffffffffffffffe;
  puVar3 = (undefined4 *)FUN_18134a8d0(param_3,local_a8,0x1000280,0);
  FUN_1812a3160(param_2,*puVar3);
  if (*(longlong *)(param_3 + 0x1c8) == 0) {
    fVar10 = DAT_1824c3d8c;
    if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
       ((*(longlong *)(param_3 + 0x18) == 0 ||
        (cVar2 = FUN_18133eaa0(), fVar10 = DAT_1824c3d8c, cVar2 != '\0')))) {
      fVar10 = DAT_1824c3ea4;
    }
    (**(code **)(*param_1 + 0x10))(param_1,&local_d8,param_3);
    puVar4 = (uint *)FUN_18134a8d0(param_3,local_a4,0x1000281,0);
    local_90 = (double)((float)(*puVar4 >> 0x18) * fVar10) + DAT_1824c4520;
    uVar8 = 0xff;
    if (SUB84(local_90,0) < 0xff) {
      uVar8 = SUB81(local_90,0);
    }
    local_res18 = CONCAT13(uVar8,(int3)*puVar4);
    FUN_181296c00(param_2,local_res18);
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_d8);
    if (*(code **)(*param_1 + 0x18) == FUN_18130e9a0) {
      local_68 = *(undefined8 *)(param_3 + 0x1e8);
      uStack_60 = *(undefined8 *)(param_3 + 0x1f0);
      piVar6 = (int *)&local_68;
    }
    else {
      piVar6 = (int *)(**(code **)(*param_1 + 0x18))(param_1,&local_68,param_3);
    }
    iStack_b4 = *piVar6;
    iVar9 = (*(int *)(param_3 + 0x2c) - piVar6[2]) - iStack_b4;
    local_b8 = piVar6[1];
    iStack_b0 = (*(int *)(param_3 + 0x28) - piVar6[3]) - local_b8;
    local_48 = CONCAT44(iStack_b4,local_b8);
    uStack_40 = CONCAT44(iVar9,iStack_b0);
    iStack_ac = iVar9;
    uVar5 = FUN_1812ea010(param_3,&local_88);
    local_a0 = *(undefined4 *)(param_3 + 0x1c0);
    iVar7 = 1;
    if (1 < (int)((float)iVar9 / *(float *)(local_d8 + 5))) {
      iVar7 = (int)((float)iVar9 / *(float *)(local_d8 + 5));
    }
    FUN_181296100(param_2,uVar5,&local_48,local_a0,iVar7,*(undefined4 *)(param_3 + 0x1f8));
    puVar4 = (uint *)(local_88 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    puVar4 = (uint *)FUN_18134a8d0(param_3,local_9c,0x1000282,0);
    local_80 = (double)((float)(*puVar4 >> 0x18) * fVar10) + DAT_1824c4520;
    uVar8 = 0xff;
    if (SUB84(local_80,0) < 0xff) {
      uVar8 = SUB81(local_80,0);
    }
    local_res20 = CONCAT13(uVar8,(int3)*puVar4);
    FUN_181296c00(param_2,local_res20);
    if (local_d8 != (undefined8 *)0x0) {
      LOCK();
      piVar6 = (int *)(local_d8 + 1);
      iVar7 = *piVar6;
      *piVar6 = *piVar6 + -1;
      UNLOCK();
      if (iVar7 == 1) {
        (**(code **)*local_d8)(local_d8,1);
      }
    }
  }
  else if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
          ((*(longlong *)(param_3 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
    puVar3 = (undefined4 *)FUN_18134a8d0(param_3,local_98,0x1000282,0);
    FUN_181296c00(param_2,*puVar3);
  }
  local_d0 = 0;
  local_c8 = *(int *)(param_3 + 0x28);
  iStack_c4 = *(int *)(param_3 + 0x2c);
  local_38[0]._4_4_ = (float)iStack_c4;
  local_38[0]._0_4_ = (float)local_c8;
  local_38[0]._8_8_ = 0;
  local_38[0] = local_38[0] << 0x40;
  FUN_181295950(param_2,local_38,DAT_1824c3ea4);
  return;
}



############ FUN_ 18130ed40 size=489 ############

void FUN_18130ed40(longlong param_1,longlong param_2,longlong param_3,longlong param_4)

{
  uint uVar1;
  code *pcVar2;
  int iVar3;
  uint *puVar4;
  longlong lVar5;
  int *piVar6;
  undefined1 uVar7;
  undefined4 local_res8;
  undefined1 local_res10 [8];
  undefined4 local_res18;
  undefined8 *local_res20;
  longlong local_78;
  double local_70;
  undefined8 local_68;
  int local_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined8 local_38;
  undefined8 uStack_30;
  
  local_68 = 0xfffffffffffffffe;
  puVar4 = (uint *)FUN_181346420(param_1 + -0x48,local_res10,0x1000a00);
  local_70 = (double)((float)(*puVar4 >> 0x18) * DAT_1824c3d8c) + DAT_1824c4520;
  uVar7 = 0xff;
  if (SUB84(local_70,0) < 0xff) {
    uVar7 = SUB81(local_70,0);
  }
  local_res8 = CONCAT13(uVar7,(int3)*puVar4);
  FUN_181296c00(param_2,local_res8);
  lVar5 = FUN_18134adf0(param_4);
  (**(code **)(*(longlong *)(lVar5 + 0x50) + 0x10))((longlong *)(lVar5 + 0x50),&local_res20,param_4)
  ;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_res20);
  pcVar2 = *(code **)(*(longlong *)(param_1 + 8) + 0x18);
  if (pcVar2 == FUN_18130e9a0) {
    local_48 = *(undefined8 *)(param_4 + 0x1e8);
    uStack_40 = *(undefined8 *)(param_4 + 0x1f0);
    piVar6 = (int *)&local_48;
  }
  else {
    piVar6 = (int *)(*pcVar2)((longlong *)(param_1 + 8),&local_48,param_4);
  }
  iStack_54 = *piVar6;
  iStack_4c = (*(int *)(param_4 + 0x2c) - piVar6[2]) - iStack_54;
  local_58 = piVar6[1];
  iStack_50 = (*(int *)(param_4 + 0x28) - piVar6[3]) - local_58;
  local_38 = CONCAT44(iStack_54,local_58);
  uStack_30 = CONCAT44(iStack_4c,iStack_50);
  local_78 = *(longlong *)(param_3 + 0x178);
  if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
    UNLOCK();
  }
  local_res18 = *(undefined4 *)(param_4 + 0x1c0);
  iVar3 = 1;
  if (1 < (int)((float)iStack_4c / *(float *)(local_res20 + 5))) {
    iVar3 = (int)((float)iStack_4c / *(float *)(local_res20 + 5));
  }
  FUN_181296100(param_2,&local_78,&local_38,local_res18,iVar3,*(undefined4 *)(param_4 + 0x1f8));
  puVar4 = (uint *)(local_78 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (local_res20 != (undefined8 *)0x0) {
    LOCK();
    piVar6 = (int *)(local_res20 + 1);
    iVar3 = *piVar6;
    *piVar6 = *piVar6 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res20)(local_res20,1);
    }
  }
  return;
}



############ FUN_ 18130f310 size=1668 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18130f310(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  uint param_5,int param_6,int param_7,int param_8,int param_9,double param_10)

{
  uint uVar1;
  bool bVar2;
  longlong lVar3;
  float fVar4;
  char cVar5;
  char cVar6;
  undefined4 *puVar7;
  uint *puVar8;
  longlong lVar9;
  float *pfVar10;
  byte bVar11;
  undefined1 uVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined8 in_stack_fffffffffffffee0;
  undefined4 uVar22;
  undefined8 uVar21;
  undefined1 local_e8 [8];
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined8 local_c8;
  float *local_c0;
  undefined8 local_b8;
  float local_b0;
  float local_ac;
  float local_a8;
  float local_a4;
  undefined1 local_a0;
  
  lVar3 = (longlong)param_10;
  uVar22 = (undefined4)((ulonglong)in_stack_fffffffffffffee0 >> 0x20);
  local_e0 = 0xfffffffffffffffe;
  puVar7 = (undefined4 *)FUN_18134a8d0(param_10,local_e8,0x1000b00,0);
  FUN_1812a3160(param_2,*puVar7);
  if (((*(byte *)(lVar3 + 0xa9) & 0x10) == 0) &&
     (((*(longlong *)(lVar3 + 0x18) == 0 || (cVar5 = FUN_18133eaa0(), cVar5 != '\0')) &&
      (DAT_182673708 == lVar3)))) {
    puVar7 = (undefined4 *)FUN_18134a8d0(lVar3,&param_10,0x1000f00,0);
    FUN_181296c00(param_2,*puVar7);
    uVar21 = CONCAT44(uVar22,2);
  }
  else {
    puVar7 = (undefined4 *)FUN_18134a8d0(lVar3,&param_10,0x1000c00,0);
    FUN_181296c00(param_2,*puVar7);
    uVar21 = CONCAT44(uVar22,1);
  }
  FUN_181295c90(param_2,0,0,param_3,param_4,uVar21);
  fVar4 = DAT_1824c3d8c;
  fVar13 = DAT_1824c3d54;
  cVar5 = (char)param_5;
  bVar11 = *(byte *)(lVar3 + 0xa9) >> 4 & 1;
  fVar19 = fVar13;
  if (((bVar11 == 0) &&
      ((*(longlong *)(lVar3 + 0x18) == 0 || (cVar6 = FUN_18133eaa0(), cVar6 != '\0')))) &&
     (fVar19 = fVar4, cVar5 != '\0')) {
    fVar19 = DAT_1824c3ef8;
  }
  fVar15 = DAT_1824c3ea4;
  lVar9 = DAT_182673708;
  fVar17 = fVar4;
  if ((bVar11 == 0) &&
     ((*(longlong *)(lVar3 + 0x18) == 0 ||
      (cVar6 = FUN_18133eaa0(), lVar9 = DAT_182673708, cVar6 != '\0')))) {
    lVar9 = DAT_182673708;
    fVar17 = fVar15;
  }
  for (; (bVar2 = true, lVar9 != lVar3 && (bVar2 = false, lVar9 != 0));
      lVar9 = *(longlong *)(lVar9 + 0x18)) {
  }
  puVar8 = (uint *)FUN_18134a8d0(lVar3,local_e8,0x1000d00,0);
  uVar1 = *puVar8;
  fVar16 = DAT_1824c3e58;
  if (bVar2) {
    fVar16 = DAT_1824c3f20;
  }
  FUN_18049fa40(&local_d8,uVar1);
  fVar18 = local_d8._4_4_ * fVar16;
  if (fVar15 <= local_d8._4_4_ * fVar16) {
    fVar18 = fVar15;
  }
  FUN_18049fbb0(&param_5,local_d8 & 0xffffffff,fVar18,(undefined4)uStack_d0,uVar1 >> 0x18);
  if (cVar5 != '\0') {
    FUN_1812a24b0(&param_5,&param_10,DAT_1824c3d18);
    param_5 = param_10._0_4_;
  }
  param_10 = (double)((float)(param_5 >> 0x18) * fVar17) + DAT_1824c4520;
  uVar12 = 0xff;
  if (SUB84(param_10,0) < 0xff) {
    uVar12 = SUB81(param_10,0);
  }
  param_5 = CONCAT13(uVar12,(undefined3)param_5);
  fVar15 = (float)param_9;
  fVar16 = (float)param_8;
  fVar17 = (float)param_7;
  fVar18 = (float)param_6;
  FUN_181303d30(param_2,fVar18 + fVar19,fVar17 + fVar19,fVar16 - fVar19 * DAT_1824c41e0,
                fVar15 - fVar19 * DAT_1824c41e0,&param_5,fVar19,DAT_1824c4680,1,1,1,1);
  if (((*(byte *)(lVar3 + 0xa9) & 0x10) != 0) ||
     ((*(longlong *)(lVar3 + 0x18) != 0 && (cVar5 = FUN_18133eaa0(), cVar5 == '\0')))) {
    return;
  }
  local_c0 = (float *)0x0;
  local_b8._0_4_ = 0;
  local_b8._4_4_ = 0;
  local_a0 = 1;
  fVar20 = fVar16 * fVar13 + fVar18;
  fVar13 = fVar15 * DAT_1824c3d80 + fVar17;
  fVar19 = fVar16 * DAT_1824c3df0 + fVar18;
  fVar18 = fVar16 * fVar4 + fVar18;
  local_a8 = fVar15 * _DAT_1824c3d38 + fVar17;
  local_b0 = fVar18;
  local_ac = fVar18;
  local_a4 = local_a8;
  FUN_1804b02a0(&local_c0,&DAT_1821df344,fVar18);
  FUN_18129ddd0(&local_c0,fVar19,fVar13);
  FUN_18129ddd0(&local_c0,fVar20,fVar13);
  fVar13 = DAT_1824c460c;
  if ((local_b8._4_4_ != 0) &&
     ((local_b8._4_4_ < 1 || (local_c0[local_b8._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)(uint)local_b8 < local_b8._4_4_ + 1) {
      FUN_1804af790(&local_c0,local_b8._4_4_ + 9 + (local_b8._4_4_ + 1) / 2 & 0xfffffff8);
    }
    local_b8._4_4_ = 1;
    *local_c0 = 100005.0;
  }
  fVar14 = fVar15 * DAT_1824c3da8 + fVar17;
  fVar17 = fVar15 * DAT_1824c3e10 + fVar17;
  fVar4 = fVar18;
  fVar15 = fVar18;
  fVar16 = fVar17;
  if (local_b8._4_4_ != 0) {
    if ((local_b0 <= fVar18) && (fVar4 = local_b0, local_ac < fVar18)) {
      local_ac = fVar18;
    }
    local_b0 = fVar4;
    if ((fVar17 < local_a8) ||
       (fVar4 = local_b0, fVar15 = local_ac, fVar16 = local_a8, fVar17 <= local_a4))
    goto LAB_18130f7d3;
  }
  local_a8 = fVar16;
  local_ac = fVar15;
  local_b0 = fVar4;
  fVar16 = local_a8;
  local_a4 = fVar17;
LAB_18130f7d3:
  local_a8 = fVar16;
  FUN_1804b02a0(&local_c0,&DAT_1821df344,fVar18,fVar17);
  FUN_18129ddd0(&local_c0,fVar19,fVar14);
  FUN_18129ddd0(&local_c0,fVar20,fVar14);
  if ((local_b8._4_4_ != 0) && ((local_b8._4_4_ < 1 || (local_c0[local_b8._4_4_ + -1] != fVar13))))
  {
    if ((int)(uint)local_b8 < local_b8._4_4_ + 1) {
      FUN_1804af790(&local_c0,local_b8._4_4_ + 9 + (local_b8._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar9 = (longlong)local_b8._4_4_;
    local_b8._4_4_ = local_b8._4_4_ + 1;
    local_c0[lVar9] = 100005.0;
  }
  puVar7 = (undefined4 *)FUN_18134a8d0(lVar3,&param_5,0x1000e00,0);
  FUN_181296c00(param_2,*puVar7);
  cVar5 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar5 == '\0') {
    for (pfVar10 = local_c0; pfVar10 != local_c0 + local_b8._4_4_; pfVar10 = pfVar10 + 1) {
      fVar13 = *pfVar10;
      if (fVar13 == DAT_1824c4600) {
        pfVar10 = pfVar10 + 2;
      }
      else if (((fVar13 == DAT_1824c45fc) || (fVar13 == DAT_1824c4604)) || (fVar13 == DAT_1824c4608)
              ) {
        local_d8 = _DAT_1824c4780;
        uStack_d0 = _UNK_1824c4788;
        local_c8 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_c0,&local_d8);
        break;
      }
    }
  }
  local_b8 = (ulonglong)(uint)local_b8;
                    /* WARNING: Subroutine does not return */
  free(local_c0);
}



############ FUN_ 18130fa90 size=614 ############

void FUN_18130fa90(undefined8 param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  longlong param_5)

{
  bool bVar1;
  longlong lVar2;
  longlong lVar3;
  char cVar4;
  undefined4 *puVar5;
  uint *puVar6;
  undefined1 uVar7;
  longlong lVar8;
  double local_18 [2];
  
  lVar3 = param_5;
  if (((*(byte *)(param_5 + 0xa9) & 0x10) == 0) &&
     ((lVar8 = *(longlong *)(param_5 + 0x18), lVar2 = DAT_182673708, lVar8 == 0 ||
      (cVar4 = FUN_18133eaa0(lVar8), lVar2 = DAT_182673708, cVar4 != '\0')))) {
    for (; lVar2 != lVar3; lVar2 = *(longlong *)(lVar2 + 0x18)) {
      if (lVar2 == 0) {
        bVar1 = false;
        goto LAB_18130fb07;
      }
    }
    bVar1 = true;
LAB_18130fb07:
    if (((bVar1) && (*(char *)(lVar3 + 0x1ec) == '\0')) &&
       ((lVar8 == 0 || (cVar4 = FUN_18133eaa0(lVar8), cVar4 != '\0')))) {
      puVar5 = (undefined4 *)FUN_18134a8d0(lVar3,&param_5,0x1000206,0);
      FUN_181296c00(param_2,*puVar5);
      FUN_181295c90(param_2,0,0,param_3,param_4,2);
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0x90))(*(longlong **)(param_2 + 8),DAT_1824c3ea4);
      puVar6 = (uint *)FUN_18134a8d0(lVar3,&param_5,0x1000207,0);
      local_18[0] = (double)((float)(*puVar6 >> 0x18) * DAT_1824c3e10) + DAT_1824c4520;
      uVar7 = 0xff;
      if (SUB84(local_18[0],0) < 0xff) {
        uVar7 = SUB81(local_18[0],0);
      }
      param_5._0_4_ = CONCAT13(uVar7,(int3)*puVar6);
    }
    else {
      puVar5 = (undefined4 *)FUN_18134a8d0(lVar3,local_18,0x1000205,0);
      FUN_181296c00(param_2,*puVar5);
      FUN_181295c90(param_2,0,0,param_3,param_4,1);
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0x90))(*(longlong **)(param_2 + 8),DAT_1824c3ea4);
      FUN_18134a8d0(lVar3,&param_5,0x1000207,0);
    }
    FUN_181305ed0(param_2);
  }
  return;
}



############ FUN_ 18130fd80 size=494 ############

void FUN_18130fd80(longlong *param_1,longlong param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined8 *param_6,char param_7,char param_8,
                  undefined8 param_9,longlong param_10)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  char cVar5;
  undefined4 *puVar6;
  uint *puVar7;
  undefined8 uVar8;
  undefined1 uVar9;
  undefined4 uVar10;
  double dVar11;
  undefined1 local_res8 [8];
  undefined1 local_res10 [8];
  undefined4 local_res18;
  undefined1 local_res20 [8];
  undefined8 *puVar12;
  undefined8 local_48;
  undefined8 uStack_40;
  
  lVar4 = param_10;
  if ((*(byte *)(param_10 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_10 + 0x18) != 0) {
      cVar5 = FUN_18133eaa0();
      if (cVar5 == '\0') goto LAB_18130fe3d;
    }
    if ((param_8 == '\0') && (param_7 == '\0')) {
      puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_res20,0x1000600,0);
      uVar10 = *puVar6;
    }
    else {
      puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,&param_10,0x1000900,0);
      FUN_1812a3160(param_2,*puVar6);
      puVar6 = (undefined4 *)FUN_18134a8d0(lVar4,local_res8,0x1000800,0);
      uVar10 = *puVar6;
    }
  }
  else {
LAB_18130fe3d:
    puVar7 = (uint *)FUN_18134a8d0(lVar4,local_res10,0x1000600,0);
    dVar11 = (double)((float)(*puVar7 >> 0x18) * DAT_1824c3d8c) + DAT_1824c4520;
    uVar9 = 0xff;
    if (SUB84(dVar11,0) < 0xff) {
      uVar9 = SUB81(dVar11,0);
    }
    local_res18 = CONCAT13(uVar9,(int3)*puVar7);
    uVar10 = local_res18;
  }
  FUN_181296c00(param_2,uVar10);
  puVar3 = param_6;
  puVar12 = param_6;
  uVar8 = (**(code **)(*param_1 + 0x58))(param_1,&param_6,lVar4,param_5,param_6);
  uVar10 = (undefined4)((ulonglong)puVar12 >> 0x20);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),uVar8);
  if (param_6 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(param_6 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*param_6)(param_6,1);
    }
  }
  uStack_40 = CONCAT44(param_4,param_3);
  local_48 = 0;
  FUN_181296100(param_2,puVar3,&local_48,0x24,CONCAT44(uVar10,1),0);
  return;
}



############ FUN_ 181310190 size=382 ############

void FUN_181310190(longlong *param_1,longlong param_2,int *param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  longlong *plVar4;
  undefined4 *puVar5;
  undefined1 local_res10 [8];
  undefined8 *local_res18 [2];
  undefined8 *local_58;
  undefined8 local_50;
  int local_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  undefined8 local_38;
  undefined8 uStack_30;
  
  local_50 = 0xfffffffffffffffe;
  plVar4 = (longlong *)(**(code **)(*param_1 + 0x20))(param_1,&local_58);
  uVar3 = FUN_181252020(plVar4);
  local_res18[0] = (undefined8 *)*plVar4;
  if (local_res18[0] != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res18[0] + 1) = *(int *)(local_res18[0] + 1) + 1;
    UNLOCK();
  }
  FUN_181251ed0(local_res18,uVar3 | 1);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),local_res18);
  if (local_res18[0] != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res18[0] + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_res18[0])(local_res18[0],1);
    }
  }
  if (local_58 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_58 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_58)(local_58,1);
    }
  }
  puVar5 = (undefined4 *)FUN_181346420(param_1 + -8,local_res10,0x1000601);
  FUN_181296c00(param_2,*puVar5);
  local_48 = *param_3 + 0xc;
  iStack_44 = param_3[1];
  iStack_40 = param_3[2] + -0x10;
  iStack_3c = (int)((float)param_3[3] * DAT_1824c3e28);
  local_38 = CONCAT44(iStack_44,local_48);
  uStack_30 = CONCAT44(iStack_3c,iStack_40);
  FUN_181296100(param_2,param_4,&local_38,0x11,1,0);
  return;
}



############ FUN_ 181310320 size=2631 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181310320(longlong *param_1,longlong param_2,int *param_3,char param_4,char param_5,
                  char param_6,char param_7,char param_8,undefined8 param_9,undefined8 *param_10,
                  longlong *param_11,undefined4 *param_12)

{
  int *piVar1;
  float *pfVar2;
  undefined4 uVar3;
  longlong *plVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  float fVar7;
  float fVar8;
  char cVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined8 uVar12;
  float *pfVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  bool bVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  undefined8 *local_278;
  undefined4 local_270;
  undefined8 *local_268 [2];
  int local_258;
  int iStack_254;
  int iStack_250;
  int iStack_24c;
  undefined4 local_248;
  int local_244;
  int local_240;
  float *local_238;
  undefined8 local_230;
  float local_228;
  float local_224;
  float local_220;
  float local_21c;
  undefined1 local_218;
  undefined4 local_210 [2];
  int local_208;
  int iStack_204;
  int iStack_200;
  int iStack_1fc;
  int local_1f8;
  int iStack_1f4;
  int iStack_1f0;
  int iStack_1ec;
  float local_1e8;
  float local_1e4;
  float local_1e0;
  float local_1dc;
  undefined8 local_1d8;
  undefined8 uStack_1d0;
  undefined8 local_1c8;
  undefined1 local_1c0 [4];
  undefined1 local_1bc [4];
  undefined4 local_1b8;
  undefined8 *local_1b0;
  float local_1a8;
  float fStack_1a4;
  float fStack_1a0;
  float fStack_19c;
  float *local_198;
  int local_18c;
  undefined8 local_170;
  undefined8 local_168;
  undefined8 uStack_160;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined8 local_148;
  undefined8 uStack_140;
  undefined8 local_138;
  undefined8 uStack_130;
  float local_128;
  float fStack_124;
  float fStack_120;
  float fStack_11c;
  undefined1 local_118 [24];
  undefined1 local_100 [16];
  undefined1 local_f0 [184];
  
  local_170 = 0xfffffffffffffffe;
  if (param_4 == '\0') {
    plVar5 = param_1 + -8;
    FUN_181346420(plVar5,&local_248,0x1000600);
    if (param_12 != (undefined4 *)0x0) {
      local_248 = *param_12;
    }
    iVar14 = 0;
    if (0 < param_3[2] + -2) {
      iVar14 = param_3[2] + -2;
    }
    iStack_24c = 0;
    if (0 < param_3[3] + -2) {
      iStack_24c = param_3[3] + -2;
    }
    iStack_254 = param_3[1] + 1;
    iVar15 = *param_3;
    iVar17 = iVar15 + 1;
    uVar3 = local_248;
    local_258 = iVar17;
    iStack_250 = iVar14;
    local_244 = iStack_24c;
    local_240 = iStack_254;
    if (param_6 != '\0') {
      puVar11 = (undefined4 *)FUN_181346420(plVar5,local_1c0,0x1000900);
      FUN_181296c00(param_2,*puVar11);
      local_148 = CONCAT44(iStack_254,local_258);
      uStack_140 = CONCAT44(iStack_24c,iStack_250);
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_148,0);
      puVar11 = (undefined4 *)FUN_181346420(plVar5,local_1bc,0x1000800);
      uVar3 = *puVar11;
    }
    FUN_181296c00(param_2,uVar3);
    if (param_5 == '\0') {
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0x90))();
    }
    (**(code **)(*param_1 + 0x20))(param_1,local_268);
    fVar20 = DAT_1824c3cb8;
    fVar19 = (float)param_3[3] / DAT_1824c3f20;
    if (fVar19 < *(float *)(local_268[0] + 5)) {
      fVar21 = DAT_1824c3cb8;
      if ((DAT_1824c3cb8 <= fVar19) && (fVar21 = DAT_1824c45c8, fVar19 <= DAT_1824c45c8)) {
        fVar21 = fVar19;
      }
      if (*(float *)(local_268[0] + 5) != fVar21) {
        FUN_181252760(local_268);
        *(float *)(local_268[0] + 5) = fVar21;
        plVar4 = (longlong *)local_268[0][2];
        if (((plVar4 != (longlong *)0x0) &&
            (*(code **)(*plVar4 + 8) !=
             .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
             vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
           (cVar9 = (**(code **)(*plVar4 + 8))(plVar4,local_268), cVar9 == '\0')) {
          puVar6 = (undefined8 *)local_268[0][2];
          local_268[0][2] = 0;
          if (puVar6 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(puVar6 + 1);
            iVar10 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar10 == 1) {
              (**(code **)*puVar6)(puVar6,1);
            }
          }
        }
      }
    }
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),local_268);
    fVar8 = DAT_1824c4608;
    fVar7 = DAT_1824c4604;
    fVar21 = DAT_1824c4600;
    fVar19 = DAT_1824c45fc;
    iVar10 = (int)(local_244 * 5 + (local_244 * 5 >> 0x1f & 3U)) >> 2;
    if (iVar14 < iVar10) {
      iVar10 = iVar14;
    }
    local_258 = iVar10 + iVar17;
    iVar14 = iVar14 - iVar10;
    iVar17 = 0;
    if (0 < iVar10 + -6) {
      iVar17 = iVar10 + -6;
    }
    iVar10 = 0;
    if (0 < local_244 + -6) {
      iVar10 = local_244 + -6;
    }
    iStack_250 = iVar14;
    if (param_11 == (longlong *)0x0) {
      if (param_7 != '\0') {
        (**(code **)(*plVar5 + 0x60))(plVar5,&local_198);
        FUN_18129b390(&local_198,local_118);
        cVar9 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
        if (cVar9 == '\0') {
          pfVar2 = local_198 + local_18c;
          bVar18 = local_198 == pfVar2;
          pfVar13 = local_198;
          while (!bVar18) {
            fVar20 = *pfVar13;
            if (fVar20 == fVar21) {
              pfVar13 = pfVar13 + 3;
              bVar18 = pfVar13 == pfVar2;
            }
            else {
              if (((fVar20 == fVar19) || (fVar20 == fVar7)) || (fVar20 == fVar8)) {
                (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                          (*(longlong **)(param_2 + 8),&local_198,local_118);
                break;
              }
              pfVar13 = pfVar13 + 1;
              bVar18 = pfVar13 == pfVar2;
            }
          }
        }
        local_18c = 0;
                    /* WARNING: Subroutine does not return */
        free(local_198);
      }
    }
    else {
      local_210[0] = 0x124;
      local_1e8 = (float)(iVar15 + 4);
      local_1e4 = (float)(local_240 + 3);
      local_1e0 = (float)iVar17;
      local_1dc = (float)iVar10;
      uVar12 = (**(code **)(*param_11 + 0x168))(param_11,local_100);
      FUN_1812971a0(local_210,local_f0,uVar12,&local_1e8);
      FUN_181332c20(param_11,param_2);
    }
    if (param_8 != '\0') {
      uVar12 = (**(code **)(*param_1 + 0x20))(param_1,&local_1b0);
      fVar20 = (float)FUN_181251a10(uVar12);
      fVar20 = fVar20 * DAT_1824c3db8;
      if (local_1b0 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_1b0 + 1);
        iVar15 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        iVar14 = iStack_250;
        if (iVar15 == 1) {
          (**(code **)*local_1b0)(local_1b0,1);
          iVar14 = iStack_250;
        }
      }
      iVar15 = (int)fVar20;
      if (iVar14 < iVar15) {
        iVar15 = iVar14;
      }
      local_228 = (float)((local_258 - iVar15) + iVar14);
      local_238 = (float *)0x0;
      local_230._0_4_ = 0;
      local_230._4_4_ = 0;
      local_218 = 1;
      local_220 = (float)(local_240 + local_244 / 2) - fVar20 * DAT_1824c3d8c;
      local_224 = local_228;
      local_21c = local_220;
      FUN_1804b02a0(&local_238,&DAT_1821df344);
      FUN_18129ddd0(&local_238);
      FUN_18129ddd0(&local_238);
      if ((local_230._4_4_ != 0) &&
         ((local_230._4_4_ < 1 || (local_238[local_230._4_4_ + -1] != DAT_1824c460c)))) {
        if ((int)(uint)local_230 < local_230._4_4_ + 1) {
          FUN_1804af790(&local_238,local_230._4_4_ + 9 + (local_230._4_4_ + 1) / 2 & 0xfffffff8);
        }
        local_230._4_4_ = 1;
        *local_238 = 100005.0;
      }
      cVar9 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
      if (cVar9 == '\0') {
        pfVar2 = local_238 + local_230._4_4_;
        bVar18 = local_238 == pfVar2;
        pfVar13 = local_238;
        while (!bVar18) {
          fVar20 = *pfVar13;
          if (fVar20 == fVar21) {
            pfVar13 = pfVar13 + 3;
            bVar18 = pfVar13 == pfVar2;
          }
          else {
            if (((fVar20 == fVar19) || (fVar20 == fVar7)) || (fVar20 == fVar8)) {
              local_1d8 = _DAT_1824c4780;
              uStack_1d0 = _UNK_1824c4788;
              local_1c8 = 0x3f800000;
              (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                        (*(longlong **)(param_2 + 8),&local_238,&local_1d8);
              break;
            }
            pfVar13 = pfVar13 + 1;
            bVar18 = pfVar13 == pfVar2;
          }
        }
      }
      local_230 = (ulonglong)(uint)local_230;
                    /* WARNING: Subroutine does not return */
      free(local_238);
    }
    iVar15 = 3;
    if (iVar14 < 3) {
      iVar15 = iVar14;
    }
    iVar14 = iVar14 - iVar15;
    local_138 = CONCAT44(iStack_254,local_258);
    uStack_130 = CONCAT44(iStack_24c,iVar14);
    local_1b8 = 0x21;
    iStack_250 = iVar14;
    FUN_181296100(param_2,param_9,&local_138,0x21,1,0);
    if (*(char *)*param_10 != '\0') {
      local_278 = local_268[0];
      if (local_268[0] != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_268[0] + 1) = *(int *)(local_268[0] + 1) + 1;
        UNLOCK();
        iVar14 = iStack_250;
      }
      fVar19 = *(float *)(local_268[0] + 5) * DAT_1824c3e10;
      if ((fVar20 <= fVar19) && (fVar20 = DAT_1824c45c8, fVar19 <= DAT_1824c45c8)) {
        fVar20 = fVar19;
      }
      if (*(float *)(local_268[0] + 5) != fVar20) {
        FUN_181252760(&local_278);
        *(float *)(local_278 + 5) = fVar20;
        plVar5 = (longlong *)local_278[2];
        if (((plVar5 != (longlong *)0x0) &&
            (*(code **)(*plVar5 + 8) !=
             .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
             vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
           (cVar9 = (**(code **)(*plVar5 + 8))(plVar5,&local_278), cVar9 == '\0')) {
          puVar6 = (undefined8 *)local_278[2];
          local_278[2] = 0;
          if (puVar6 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(puVar6 + 1);
            iVar15 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            iVar14 = iStack_250;
            if (iVar15 == 1) {
              (**(code **)*puVar6)(puVar6,1);
              iVar14 = iStack_250;
            }
          }
        }
      }
      FUN_181252760(&local_278);
      *(undefined4 *)((longlong)local_278 + 0x2c) = 0x3f733333;
      plVar5 = (longlong *)local_278[2];
      if (((plVar5 != (longlong *)0x0) &&
          (*(code **)(*plVar5 + 8) !=
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
         (cVar9 = (**(code **)(*plVar5 + 8))(plVar5,&local_278), cVar9 == '\0')) {
        puVar6 = (undefined8 *)local_278[2];
        local_278[2] = 0;
        if (puVar6 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar6 + 1);
          iVar15 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          iVar14 = iStack_250;
          if (iVar15 == 1) {
            (**(code **)*puVar6)(puVar6,1);
            iVar14 = iStack_250;
          }
        }
      }
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_278);
      fStack_19c = (float)iStack_24c;
      fStack_1a0 = (float)iVar14;
      fStack_1a4 = (float)iStack_254;
      local_1a8 = (float)local_258;
      local_128 = local_1a8;
      fStack_124 = fStack_1a4;
      fStack_120 = fStack_1a0;
      fStack_11c = fStack_19c;
      FUN_1812963b0(param_2,param_10,&local_128,0x22,1);
      if (local_278 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_278 + 1);
        iVar14 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar14 == 1) {
          (**(code **)*local_278)(local_278,1);
        }
      }
    }
    if (local_268[0] != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_268[0] + 1);
      iVar14 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar14 == 1) {
        (**(code **)*local_268[0])(local_268[0],1);
      }
    }
  }
  else {
    iVar15 = *param_3 + 5;
    iVar14 = 0;
    if (0 < param_3[2] + -10) {
      iVar14 = param_3[2] + -10;
    }
    iVar17 = 0;
    if (0 < param_3[3]) {
      iVar17 = param_3[3];
    }
    iVar10 = iVar17 / 2 + -1;
    if (iVar17 < iVar10) {
      iVar10 = iVar17;
    }
    iVar16 = param_3[1] + iVar10;
    iVar17 = iVar17 - iVar10;
    FUN_181296c00(param_2,0x33000000);
    iStack_1fc = 1;
    if (iVar17 < 1) {
      iStack_1fc = iVar17;
    }
    iVar10 = iVar16 + iStack_1fc;
    iVar17 = iVar17 - iStack_1fc;
    local_168 = CONCAT44(iVar16,iVar15);
    uStack_160 = CONCAT44(iStack_1fc,iVar14);
    local_208 = iVar15;
    iStack_204 = iVar16;
    iStack_200 = iVar14;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_168,0);
    local_270 = 0x66ffffff;
    FUN_181296c00(param_2,0x66ffffff);
    iStack_1ec = 1;
    if (iVar17 < 1) {
      iStack_1ec = iVar17;
    }
    local_158 = CONCAT44(iVar10,iVar15);
    uStack_150 = CONCAT44(iStack_1ec,iVar14);
    local_1f8 = iVar15;
    iStack_1f4 = iVar10;
    iStack_1f0 = iVar14;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_158,0);
  }
  return;
}



############ FUN_ 181311110 size=470 ############

void FUN_181311110(longlong param_1,longlong param_2,int param_3,int param_4)

{
  int iVar1;
  undefined4 *puVar2;
  uint uVar3;
  int iVar4;
  undefined4 local_res18;
  undefined4 local_res20;
  longlong local_38;
  undefined8 uStack_30;
  
  FUN_181346420(param_1 + -0x40,&local_res20,0x1000700);
  uVar3 = local_res20;
  FUN_1812a3160(param_2,local_res20);
  local_res18 = 0x2badd8e6;
  if (local_res20._3_1_ != 0) {
    iVar4 = 0xff - ((int)((0xff - (uint)local_res20._3_1_) * 0xd4) >> 8);
    local_res18 = uVar3;
    if (0 < iVar4) {
      iVar1 = (int)((uint)local_res20._3_1_ * 0xd4) / iVar4;
      local_res18._3_1_ = (undefined1)iVar4;
      local_res18._0_3_ =
           CONCAT12((char)(((local_res20 >> 0x10 & 0xff) - 0xad) * iVar1 >> 8) + -0x53,
                    CONCAT11((char)(((local_res20 >> 8 & 0xff) - 0xd8) * iVar1 >> 8) + -0x28,
                             (char)(((uVar3 & 0xff) - 0xe6) * iVar1 >> 8) + -0x1a));
    }
  }
  FUN_181296c00(param_2,local_res18);
  uVar3 = 0;
  if (0 < param_4) {
    do {
      local_38 = (ulonglong)uVar3 << 0x20;
      uStack_30 = CONCAT44(1,param_3);
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_38,0);
      uVar3 = uVar3 + 3;
    } while ((int)uVar3 < param_4);
  }
  puVar2 = (undefined4 *)FUN_181346420(param_1 + -0x40,&local_res20,0x1000600);
  local_res18._0_3_ = (undefined3)*puVar2;
  local_res18 = CONCAT13(0x99,(undefined3)local_res18);
  FUN_181296c00(param_2,local_res18);
  uStack_30 = CONCAT44((float)param_4,(float)param_3);
  local_38 = 0;
  FUN_181295950(param_2,&local_38);
  return;
}



############ FUN_ 181311590 size=696 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181311590(undefined8 param_1,longlong param_2,undefined8 param_3,float *param_4,
                  float *param_5)

{
  float fVar1;
  float fVar2;
  float fVar3;
  char cVar4;
  undefined4 *puVar5;
  float *pfVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined8 local_98;
  float fStack_90;
  float fStack_8c;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  float *local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  
  local_68 = (float *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  fVar9 = param_4[1];
  fVar1 = *param_4;
  local_98 = *(undefined8 *)param_4;
  fVar10 = param_5[2];
  if ((fVar10 <= 0.0) || (param_5[3] <= 0.0)) {
    fStack_90 = 1.0;
    fStack_8c = 1.0;
  }
  else {
    fVar2 = *param_5;
    fVar8 = fVar1;
    if (fVar2 <= fVar1) {
      fVar8 = fVar2;
    }
    fVar3 = param_5[1];
    fVar7 = fVar9;
    if (fVar3 <= fVar9) {
      fVar7 = fVar3;
    }
    fStack_90 = fVar1 + DAT_1824c3ea4;
    if (fVar1 + DAT_1824c3ea4 <= fVar2 + fVar10) {
      fStack_90 = fVar2 + fVar10;
    }
    fStack_90 = fStack_90 - fVar8;
    fStack_8c = fVar9 + DAT_1824c3ea4;
    if (fVar9 + DAT_1824c3ea4 <= fVar3 + param_5[3]) {
      fStack_8c = fVar3 + param_5[3];
    }
    fStack_8c = fStack_8c - fVar7;
    local_98 = CONCAT44(fVar7,fVar8);
  }
  uStack_80 = CONCAT44(fStack_8c,fStack_90);
  local_88 = local_98;
  fStack_90 = fVar10 - DAT_1824c3ea4;
  if (fStack_90 <= 0.0) {
    fStack_90 = 0.0;
  }
  fStack_8c = param_5[3] - DAT_1824c3ea4;
  if (fStack_8c <= 0.0) {
    fStack_8c = 0.0;
  }
  local_98 = CONCAT44(param_5[1] - DAT_1824c4670,*param_5 - DAT_1824c4670);
  fVar9 = param_5[3] * DAT_1824c3d18;
  fVar10 = fVar10 * DAT_1824c3d18;
  if (DAT_1824c4418 <= fVar10) {
    if (DAT_1824c4418 <= fVar9) {
      fVar9 = DAT_1824c4418;
    }
  }
  else if (fVar10 <= fVar9) {
    fVar9 = fVar10;
  }
  FUN_18129c020(&local_68,&local_98,&local_88,*(undefined8 *)param_4,DAT_1824c4360,fVar9,
                0xfffffffffffffffe);
  puVar5 = (undefined4 *)FUN_18134a8d0(param_3,&param_5,0x1000af0,0);
  FUN_181296c00(param_2,*puVar5);
  cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar4 == '\0') {
    for (pfVar6 = local_68; pfVar6 != local_68 + local_60._4_4_; pfVar6 = pfVar6 + 1) {
      fVar9 = *pfVar6;
      if (fVar9 == DAT_1824c4600) {
        pfVar6 = pfVar6 + 2;
      }
      else if (((fVar9 == DAT_1824c45fc) || (fVar9 == DAT_1824c4604)) || (fVar9 == DAT_1824c4608)) {
        local_88 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
        uStack_80 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
        local_78 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_68,&local_88);
        break;
      }
    }
  }
  puVar5 = (undefined4 *)FUN_18134a8d0(param_3,&param_5,0x1000af1,0);
  FUN_181296c00(param_2,*puVar5);
  local_88 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
  uStack_80 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
  local_78 = 0x3f800000;
  local_98 = 0x3f800000;
  fStack_90 = 0.0;
  FUN_181295d20(param_2,&local_68,&local_98,&local_88);
  local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 1813118a0 size=551 ############

void FUN_1813118a0(undefined8 param_1,longlong param_2,float *param_3,undefined8 param_4,
                  char param_5)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  uint local_res10;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  
  fVar2 = param_3[2];
  fVar4 = param_3[3];
  fVar1 = fVar4;
  if (DAT_1824c441c <= fVar2) {
    if (DAT_1824c441c <= fVar4) {
      fVar1 = DAT_1824c441c;
    }
  }
  else if (fVar2 <= fVar4) {
    fVar1 = fVar2;
  }
  local_res10 = SUB84((double)(fVar1 * DAT_1824c3df0) + DAT_1824c4520,0);
  local_res10 = local_res10 | 1;
  fVar1 = (float)(int)local_res10;
  fVar3 = (float)((int)((int)fVar2 - local_res10) / 2 + (int)*param_3);
  fVar5 = (float)((int)((int)fVar4 - local_res10) / 2 + (int)param_3[1]);
  FUN_181296c00(param_2,0xe5ffffff);
  local_68 = fVar3;
  fStack_64 = fVar5;
  fStack_60 = fVar1;
  fStack_5c = fVar1;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_68);
  FUN_181296c00(param_2,0x80000000);
  local_68 = fVar3;
  fStack_64 = fVar5;
  fStack_60 = fVar1;
  fStack_5c = fVar1;
  FUN_181295950(param_2,&local_68,DAT_1824c3ea4);
  fVar6 = (float)((int)local_res10 / 2);
  fStack_64 = fVar5 + fVar6;
  fVar4 = fVar6 + DAT_1824c3ea4;
  fVar2 = (fVar1 - fVar4) * DAT_1824c3d8c;
  local_68 = fVar2 + fVar3;
  fStack_5c = 1.0;
  fStack_60 = fVar4;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_68);
  if (param_5 == '\0') {
    local_68 = fVar3 + fVar6;
    fStack_64 = fVar2 + fVar5;
    fStack_60 = 1.0;
    fStack_5c = fVar4;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_68);
  }
  return;
}



############ FUN_ 181312640 size=891 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181312640(undefined8 param_1,longlong param_2,undefined8 param_3,int param_4,int param_5,
                  int param_6,undefined8 param_7,undefined8 param_8,undefined4 param_9)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined4 *puVar4;
  float *pfVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float *local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78;
  undefined8 local_70;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined8 local_60;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined8 local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  local_98 = (float *)0x0;
  local_90 = 0;
  local_88 = 0;
  uStack_80 = 0;
  local_78 = 1;
  if (param_6 == 0) {
    fVar6 = (float)param_4;
    fVar8 = fVar6 * DAT_1824c3e58;
    fVar7 = fVar6 * DAT_1824c3cb8;
    local_88 = CONCAT44(fVar6 * DAT_1824c3d8c,fVar6 * DAT_1824c3d8c);
    uStack_80 = CONCAT44((float)param_5 * DAT_1824c3d18,(float)param_5 * DAT_1824c3d18);
    FUN_1804b02a0(&local_98,&DAT_1821df344);
  }
  else {
    if (param_6 == 1) {
      fVar7 = (float)param_4 * DAT_1824c3d54;
      fVar8 = (float)param_4 * DAT_1824c3e28;
    }
    else {
      if (param_6 == 2) {
        fVar6 = (float)param_4;
        fVar8 = fVar6 * DAT_1824c3e58;
        fVar7 = fVar6 * DAT_1824c3cb8;
        local_88 = CONCAT44(fVar6 * DAT_1824c3d8c,fVar6 * DAT_1824c3d8c);
        uStack_80 = CONCAT44((float)param_5 * DAT_1824c3e28,(float)param_5 * DAT_1824c3e28);
        FUN_1804b02a0(&local_98,&DAT_1821df344);
        goto LAB_181312812;
      }
      if (param_6 != 3) goto LAB_18131288d;
      fVar7 = (float)param_4 * DAT_1824c3df0;
      fVar8 = (float)param_4 * DAT_1824c3d18;
    }
    local_88 = CONCAT44(fVar8,fVar8);
    uStack_80 = CONCAT44((float)param_5 * DAT_1824c3d8c,(float)param_5 * DAT_1824c3d8c);
    FUN_1804b02a0(&local_98,&DAT_1821df344);
    fVar8 = fVar7;
  }
LAB_181312812:
  FUN_18129ddd0(&local_98,fVar7);
  FUN_18129ddd0(&local_98,fVar8);
  if ((local_90._4_4_ != 0) &&
     ((local_90._4_4_ < 1 || (local_98[local_90._4_4_ + -1] != DAT_1824c460c)))) {
    if ((int)local_90 < local_90._4_4_ + 1) {
      FUN_1804af790(&local_98,local_90._4_4_ + 9 + (local_90._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar2 = (longlong)local_90._4_4_;
    local_90 = CONCAT44(local_90._4_4_ + 1,(int)local_90);
    local_98[lVar2] = 100005.0;
  }
LAB_18131288d:
  if ((char)param_9 == '\0') {
    puVar4 = (undefined4 *)FUN_18134a8d0(param_3,&param_9,0x1000400);
  }
  else {
    uVar3 = FUN_18134a8d0(param_3,&param_9,0x1000400);
    puVar4 = (undefined4 *)FUN_1812a24b0(uVar3,&param_6);
  }
  FUN_181296c00(param_2,*puVar4);
  cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar1 == '\0') {
    for (pfVar5 = local_98; pfVar5 != local_98 + local_90._4_4_; pfVar5 = pfVar5 + 1) {
      fVar8 = *pfVar5;
      if (fVar8 == DAT_1824c4600) {
        pfVar5 = pfVar5 + 2;
      }
      else if (((fVar8 == DAT_1824c45fc) || (fVar8 == DAT_1824c4604)) || (fVar8 == DAT_1824c4608)) {
        local_70 = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
        uStack_68 = _UNK_1824c4788;
        uStack_64 = _UNK_1824c478c;
        local_60 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_98,&local_70);
        break;
      }
    }
  }
  param_9 = 0x80000000;
  FUN_181296c00(param_2,0x80000000);
  local_58 = _DAT_1824c4780;
  uStack_54 = _UNK_1824c4784;
  uStack_50 = _UNK_1824c4788;
  uStack_4c = _UNK_1824c478c;
  local_48 = 0x3f800000;
  local_70 = 0x3f000000;
  uStack_68 = 0;
  FUN_181295d20(param_2,&local_98,&local_70,&local_58);
  local_90 = local_90 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_98);
}



############ FUN_ 181312a30 size=832 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181312a30(undefined8 param_1,longlong param_2,uint *param_3,int param_4,int param_5,
                  int param_6,int param_7)

{
  float *pfVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  uint uVar6;
  char cVar7;
  int iVar8;
  DWORD DVar9;
  float *pfVar10;
  undefined1 uVar11;
  uint uVar12;
  bool bVar13;
  float fVar14;
  float fVar15;
  double dVar16;
  float fVar17;
  float _X;
  float fVar18;
  float local_f8;
  uint local_f4;
  float local_f0;
  float local_ec;
  float local_e8;
  float local_e4;
  float *local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined1 local_c0;
  
  fVar2 = DAT_1824c3d8c;
  iVar8 = param_6;
  if (param_7 < param_6) {
    iVar8 = param_7;
  }
  fVar15 = (float)iVar8 * DAT_1824c3d74;
  fVar17 = fVar15 * DAT_1824c3d04;
  uVar12 = 0;
  local_e0 = (float *)0x0;
  local_d8 = 0;
  local_d0 = 0;
  uStack_c8 = 0;
  local_c0 = 1;
  FUN_18129d5a0(&local_e0,fVar15 * DAT_1824c3d74,fVar17 * DAT_1824c4670,fVar15 * DAT_1824c3db8,
                fVar17,fVar17 * DAT_1824c3d8c,fVar17 * DAT_1824c3d8c,1,1,1,1);
  fVar18 = (float)param_6;
  DVar9 = timeGetTime();
  uVar6 = DAT_1824c4f30;
  fVar5 = DAT_1824c4608;
  fVar4 = DAT_1824c4604;
  fVar3 = DAT_1824c4600;
  fVar17 = DAT_1824c45fc;
  fVar15 = DAT_1824c4408;
  if (DVar9 < DAT_1826737fc) {
    if (DVar9 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      DAT_1826737fc = DVar9;
    }
  }
  else {
    LOCK();
    UNLOCK();
    DAT_1826737fc = DVar9;
  }
  do {
    dVar16 = (double)((float)(*param_3 >> 0x18) *
                     ((float)((((int)(((ulonglong)DVar9 / 100) / 0xc) * 0xc -
                               (int)((ulonglong)DVar9 / 100)) + 0xc + uVar12) % 0xc + 1) / fVar15))
             + DAT_1824c4520;
    uVar11 = 0xff;
    if (SUB84(dVar16,0) < 0xff) {
      uVar11 = SUB81(dVar16,0);
    }
    param_6 = CONCAT13(uVar11,(int3)*param_3);
    FUN_181296c00(param_2,param_6);
    _X = (float)uVar12 * _DAT_1824c3d9c;
    fVar14 = cosf(_X);
    local_ec = sinf(_X);
    local_f4 = (uint)local_ec ^ uVar6;
    local_f8 = fVar14;
    local_f0 = fVar18 * fVar2 + (float)param_4 + 0.0;
    local_e8 = fVar14;
    local_e4 = (float)param_7 * fVar2 + (float)param_5 + 0.0;
    cVar7 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
    if (cVar7 == '\0') {
      pfVar1 = local_e0 + local_d8._4_4_;
      bVar13 = local_e0 == pfVar1;
      pfVar10 = local_e0;
      while (!bVar13) {
        fVar14 = *pfVar10;
        if (fVar14 == fVar3) {
          pfVar10 = pfVar10 + 3;
          bVar13 = pfVar10 == pfVar1;
        }
        else {
          if (((fVar14 == fVar17) || (fVar14 == fVar4)) || (fVar14 == fVar5)) {
            (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                      (*(longlong **)(param_2 + 8),&local_e0,&local_f8);
            break;
          }
          pfVar10 = pfVar10 + 1;
          bVar13 = pfVar10 == pfVar1;
        }
      }
    }
    uVar12 = uVar12 + 1;
    if (0xb < uVar12) {
      local_d8 = local_d8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_e0);
    }
  } while( true );
}



############ FUN_ 181314110 size=452 ############

void FUN_181314110(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  char cVar1;
  char cVar2;
  undefined4 *puVar3;
  uint *puVar4;
  undefined1 uVar5;
  int iVar6;
  undefined8 uVar7;
  float fVar8;
  undefined8 local_res18;
  undefined1 local_38 [16];
  undefined8 local_28;
  int iStack_20;
  int iStack_1c;
  
  cVar1 = FUN_1804d6ee0(param_3);
  puVar3 = (undefined4 *)FUN_18134a8d0(param_3,&local_res18,(cVar1 != '\0') + 0x1004011,0);
  FUN_1812a3160(param_2,*puVar3);
  if (*(int *)(param_3 + 0x1c8) == 2) {
    local_res18 = (double)((float)*(int *)(param_3 + 0x2c) * DAT_1824c3d3c) + DAT_1824c4520;
    iVar6 = 0x10;
    if (SUB84(local_res18,0) < 0x10) {
      iVar6 = SUB84(local_res18,0);
    }
    if (0 < iVar6) {
      FUN_1812966f0(param_2);
      fVar8 = DAT_1824c3d74;
      if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
         ((*(longlong *)(param_3 + 0x18) == 0 ||
          (cVar2 = FUN_18133eaa0(), fVar8 = DAT_1824c3d74, cVar2 != '\0')))) {
        fVar8 = DAT_1824c3ea4;
      }
      uVar7 = 0x1004010;
      if (cVar1 != '\0') {
        uVar7 = 0x1004013;
      }
      puVar4 = (uint *)FUN_18134a8d0(param_3,local_38,uVar7,0);
      local_28 = (double)((float)(*puVar4 >> 0x18) * fVar8) + DAT_1824c4520;
      uVar5 = 0xff;
      if (SUB84(local_28,0) < 0xff) {
        uVar5 = SUB81(local_28,0);
      }
      local_res18._0_4_ = CONCAT13(uVar5,(int3)*puVar4);
      FUN_181296c00(param_2,(undefined4)local_res18);
      local_28 = (double)CONCAT44((*(int *)(param_3 + 0x2c) - iVar6) + -1,2);
      _iStack_20 = CONCAT44(iVar6,*(int *)(param_3 + 0x28) + -4);
      FUN_181296100(param_2,param_3 + 0x158,&local_28,0x24,1,0);
    }
  }
  return;
}



############ FUN_ 181314490 size=617 ############

void FUN_181314490(longlong *param_1,longlong param_2,longlong param_3,undefined1 param_4,
                  undefined1 param_5)

{
  longlong lVar1;
  bool bVar2;
  char cVar3;
  undefined1 uVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined1 uVar8;
  float fVar9;
  float fVar10;
  double local_res8;
  ulonglong local_58;
  int iStack_50;
  undefined4 uStack_4c;
  
  lVar1 = DAT_182673708;
  do {
    if (lVar1 == param_3) {
      bVar2 = true;
LAB_1813144ee:
      if (bVar2) {
        puVar6 = (undefined4 *)FUN_18134a8d0(param_3,&local_res8,0x1000206,0);
        FUN_181296c00(param_2,*puVar6);
        FUN_181295c90(param_2,0,0,*(undefined4 *)(param_3 + 0x28),*(undefined4 *)(param_3 + 0x2c),1)
        ;
      }
      iVar5 = *(int *)(param_3 + 0x2c);
      fVar9 = (float)iVar5 * DAT_1824c3e10;
      if (DAT_1824c4418 <= fVar9) {
        fVar9 = DAT_1824c4418;
      }
      fVar10 = fVar9 * DAT_1824c3ee0;
      if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
         ((*(longlong *)(param_3 + 0x18) == 0 || (cVar3 = FUN_18133eaa0(), cVar3 != '\0')))) {
        uVar8 = 1;
      }
      else {
        uVar8 = 0;
      }
      lVar1 = *param_1;
      uVar4 = FUN_1804d6ee0(param_3);
      (**(code **)(lVar1 + 0x38))
                (param_1,param_2,param_3,DAT_1824c4334,((float)iVar5 - fVar10) * DAT_1824c3d8c,
                 fVar10,fVar10,uVar4,uVar8,param_4,param_5);
      puVar6 = (undefined4 *)FUN_18134a8d0(param_3,&local_res8,0x1006501,0);
      FUN_181296c00(param_2,*puVar6);
      FUN_1812966f0(param_2,fVar9);
      if (((*(byte *)(param_3 + 0xa9) & 0x10) != 0) ||
         ((*(longlong *)(param_3 + 0x18) != 0 && (cVar3 = FUN_18133eaa0(), cVar3 == '\0')))) {
        if (*(char *)(param_2 + 0x10) != '\0') {
          *(undefined1 *)(param_2 + 0x10) = 0;
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
        }
        (**(code **)(**(longlong **)(param_2 + 8) + 0x90))
                  (*(longlong **)(param_2 + 8),DAT_1824c3d8c);
      }
      local_res8 = (double)fVar10 + DAT_1824c4520;
      iVar7 = *(int *)(param_3 + 0x28) - (local_res8._0_4_ + 5U);
      local_58 = (ulonglong)(local_res8._0_4_ + 5U);
      iVar5 = 0;
      if (0 < iVar7) {
        iVar5 = iVar7;
      }
      iVar7 = 0;
      if (0 < iVar5 + -2) {
        iVar7 = iVar5 + -2;
      }
      _iStack_50 = CONCAT44(*(undefined4 *)(param_3 + 0x2c),iVar7);
      FUN_181296100(param_2,param_3 + 0x158,&local_58,0x21,10,0);
      return;
    }
    if (lVar1 == 0) {
      bVar2 = false;
      goto LAB_1813144ee;
    }
    lVar1 = *(longlong *)(lVar1 + 0x18);
  } while( true );
}



############ FUN_ 181314700 size=1058 ############

void FUN_181314700(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  float param_5,float param_6,float param_7,char param_8,undefined4 param_9,
                  char param_10,undefined4 param_11)

{
  float fVar1;
  float fVar2;
  char cVar3;
  uint *puVar4;
  undefined4 *puVar5;
  undefined1 uVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined8 local_d8;
  undefined4 local_d0;
  undefined8 local_c8;
  float local_c0 [3];
  undefined4 local_b4;
  float local_b0;
  float local_ac;
  void *local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined1 local_88;
  
  fVar2 = param_6;
  fVar1 = DAT_1824c3ea4;
  fVar7 = DAT_1824c3d8c;
  local_c8 = 0xfffffffffffffffe;
  fVar9 = param_6 * DAT_1824c3df0;
  cVar3 = (char)param_9;
  fVar10 = DAT_1824c3d54;
  fVar8 = DAT_1824c3d8c;
  if ((((char)param_9 != '\0') &&
      (fVar10 = DAT_1824c3ee0, fVar8 = DAT_1824c3ea4, (char)param_11 == '\0')) && (param_10 == '\0')
     ) {
    fVar10 = DAT_1824c3d8c;
  }
  puVar4 = (uint *)FUN_18134a8d0(param_3,&param_6,0x1000100,0);
  local_d8 = (double)((float)(*puVar4 >> 0x18) * fVar8) + DAT_1824c4520;
  uVar6 = 0xff;
  if (SUB84(local_d8,0) < 0xff) {
    uVar6 = SUB81(local_d8,0);
  }
  param_9 = CONCAT13(uVar6,(int3)*puVar4);
  FUN_18049fa40(&local_d8,param_9);
  fVar8 = local_d8._4_4_ * DAT_1824c3f20;
  if (fVar1 <= local_d8._4_4_ * DAT_1824c3f20) {
    fVar8 = fVar1;
  }
  FUN_18049fbb0(&param_9,(undefined4)local_d8,fVar8,local_d0,uVar6);
  if ((char)param_11 == '\0') {
    if (param_10 == '\0') {
      param_11 = param_9;
    }
    else {
      FUN_1812a24b0(&param_9,&param_11,DAT_1824c3cb8);
    }
  }
  else {
    FUN_1812a24b0(&param_9,&param_11,DAT_1824c3d18);
  }
  fVar1 = param_7;
  FUN_181305260(param_2,param_4,(param_7 - fVar9) * fVar7 + param_5,fVar9,&param_11,fVar10);
  fVar7 = DAT_1824c42d0;
  if (param_8 == '\0') {
    return;
  }
  local_a8 = (void *)0x0;
  local_a0 = 0;
  local_88 = 1;
  local_98 = 0x3fc000003fc00000;
  local_90 = 0x4040000040400000;
  FUN_1804b02a0(&local_a8,&DAT_1821df344,DAT_1824c3f78,DAT_1824c42d0);
  if (local_a0._4_4_ == 0) {
    local_98 = 0;
    local_90 = 0;
    FUN_1804b02a0(&local_a8,&DAT_1821df344,0,0);
  }
  fVar10 = DAT_1824c4388;
  FUN_1804b02a0(&local_a8,&DAT_1821dfcb4,fVar7,DAT_1824c4388);
  if ((float)local_98 <= fVar7) {
    if (local_98._4_4_ < fVar7) {
      local_98 = CONCAT44(fVar7,(float)local_98);
    }
  }
  else {
    local_98 = CONCAT44(local_98._4_4_,fVar7);
  }
  fVar7 = local_90._4_4_;
  if ((float)local_90 <= fVar10) {
    if (local_90._4_4_ < fVar10) {
      local_90 = CONCAT44(fVar10,(float)local_90);
      fVar7 = fVar10;
    }
  }
  else {
    local_90 = CONCAT44(local_90._4_4_,fVar10);
  }
  if (local_a0._4_4_ == 0) {
    local_98 = 0;
    local_90 = 0;
    FUN_1804b02a0(&local_a8,fVar7,0,0);
  }
  FUN_1804b02a0(&local_a8,&DAT_1821dfcb4,fVar10,0);
  if ((float)local_98 <= fVar10) {
    if (local_98._4_4_ < fVar10) {
      local_98 = CONCAT44(0x40c00000,(float)local_98);
    }
  }
  else {
    local_98 = CONCAT44(local_98._4_4_,0x40c00000);
  }
  if ((float)local_90 <= 0.0) {
    if (local_90._4_4_ < 0.0) {
      local_90 = local_90 & 0xffffffff;
    }
  }
  else {
    local_90 = (ulonglong)(uint)local_90._4_4_ << 0x20;
  }
  puVar5 = (undefined4 *)FUN_18134a8d0(param_3,&param_11,0x1006503 - (uint)(cVar3 != '\0'),0);
  FUN_181296c00(param_2,*puVar5);
  local_b0 = fVar1 / DAT_1824c43e4;
  local_c0[0] = fVar2 / DAT_1824c43e4;
  local_ac = param_5 + 0.0;
  local_c0[2] = (float)param_4 + 0.0;
  local_c0[1] = 0.0;
  local_b4 = 0;
  local_d8._0_4_ = DAT_1824c4258;
  local_d8._4_4_ = 0.0;
  local_d0 = 0;
  FUN_181295d20(param_2,&local_a8,&local_d8,local_c0);
  local_a0 = local_a0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_a8);
}



############ FUN_ 181314b30 size=599 ############

void FUN_181314b30(longlong *param_1,longlong param_2,longlong param_3)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  uint *puVar6;
  int iVar7;
  undefined1 uVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  float fVar12;
  undefined4 local_res10;
  undefined1 local_res18 [8];
  undefined8 *local_88;
  double local_80;
  double local_78;
  double local_70;
  undefined8 local_68;
  int local_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  undefined8 local_48;
  undefined8 uStack_40;
  
  local_68 = 0xfffffffffffffffe;
  (**(code **)(*param_1 + 0x10))(param_1,&local_88,param_3,*(undefined4 *)(param_3 + 0x2c));
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_88);
  fVar12 = DAT_1824c3d8c;
  if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_3 + 0x18) == 0 ||
      (cVar3 = FUN_18133eaa0(), fVar12 = DAT_1824c3d8c, cVar3 != '\0')))) {
    fVar12 = DAT_1824c3ea4;
  }
  cVar3 = FUN_1804d6ee0(param_3);
  puVar6 = (uint *)FUN_18134a8d0(param_3,local_res18,(cVar3 != '\0') + 0x1000102,0);
  local_70 = DAT_1824c4520;
  local_80 = (double)((float)(*puVar6 >> 0x18) * fVar12) + DAT_1824c4520;
  uVar8 = 0xff;
  if (SUB84(local_80,0) < 0xff) {
    uVar8 = SUB81(local_80,0);
  }
  local_res10 = CONCAT13(uVar8,(int3)*puVar6);
  FUN_181296c00(param_2,local_res10);
  iVar2 = *(int *)(param_3 + 0x2c);
  local_78 = (double)((float)iVar2 * DAT_1824c3d54) + local_70;
  iVar10 = 4;
  if (SUB84(local_78,0) < 4) {
    iVar10 = SUB84(local_78,0);
  }
  iVar9 = *(int *)(param_3 + 0x28);
  iVar5 = iVar2;
  if (iVar9 < iVar2) {
    iVar5 = iVar9;
  }
  local_70 = (double)(*(float *)(local_88 + 5) * DAT_1824c3db8) + local_70;
  iVar7 = 2;
  if ((*(byte *)(param_3 + 0x198) & 1) != 0) {
    iVar7 = 4;
  }
  iVar4 = (iVar5 / 2) / iVar7 + 2;
  iVar7 = SUB84(local_70,0);
  iVar11 = iVar7;
  if (iVar4 < iVar7) {
    iVar11 = iVar4;
  }
  iVar4 = 2;
  if ((*(uint *)(param_3 + 0x198) >> 1 & 1) != 0) {
    iVar4 = 4;
  }
  iVar5 = (iVar5 / 2) / iVar4 + 2;
  if (iVar5 < iVar7) {
    iVar7 = iVar5;
  }
  iVar9 = (iVar9 - iVar7) - iVar11;
  if (0 < iVar9) {
    iStack_4c = iVar2 + iVar10 * -2;
    local_48 = CONCAT44(iVar10,iVar11);
    uStack_40 = CONCAT44(iStack_4c,iVar9);
    local_58 = iVar11;
    iStack_54 = iVar10;
    iStack_50 = iVar9;
    FUN_181296100(param_2,param_3 + 0x158,&local_48,0x24,2,0);
  }
  if (local_88 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_88 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*local_88)(local_88,1);
    }
  }
  return;
}



############ FUN_ 1813271f0 size=190 ############

void FUN_1813271f0(longlong param_1,undefined8 param_2)

{
  undefined4 local_res8;
  undefined1 local_18 [16];
  
  if (*(char *)(param_1 + 0x27e) != '\0') {
    local_res8 = CONCAT13(0x33,(int3)DAT_18262b5c0);
    FUN_181296c00(param_2,local_res8);
    local_18 = ZEXT416((uint)(float)*(int *)(param_1 + 0x28)) << 0x40;
    FUN_181295950(param_2,local_18);
  }
  return;
}



############ FUN_ 18132f1a0 size=470 ############

void FUN_18132f1a0(longlong param_1,longlong param_2)

{
  float fVar1;
  float fVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  ulonglong uVar5;
  undefined8 local_68;
  float local_60;
  float local_5c;
  undefined1 local_58 [80];
  
  uVar3 = *(undefined8 *)(param_1 + 0xb0);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x10))(*(longlong **)(param_2 + 8),uVar3);
  fVar1 = _hypotf(*(float *)(param_1 + 0xc0) - *(float *)(param_1 + 200),
                  *(float *)(param_1 + 0xc4) - *(float *)(param_1 + 0xcc));
  fVar2 = _hypotf(*(float *)(param_1 + 0xc0) - *(float *)(param_1 + 0xd0),
                  *(float *)(param_1 + 0xc4) - *(float *)(param_1 + 0xd4));
  uVar3 = *(undefined8 *)(param_1 + 200);
  uVar5 = (ulonglong)(uint)fVar2 << 0x20;
  FUN_18051f040(local_58,0,*(undefined8 *)(param_1 + 0xc0),fVar1,uVar3,uVar5,
                *(undefined8 *)(param_1 + 0xd0));
  uVar4 = (undefined4)((ulonglong)uVar3 >> 0x20);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x18))(*(longlong **)(param_2 + 8),local_58);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0xe8);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xf8));
  local_68 = 0;
  local_60 = fVar1;
  local_5c = fVar2;
  FUN_1804ab070(&local_68,local_58);
  FUN_181296100(param_2,param_1 + 0xf0,local_58,*(undefined4 *)(param_1 + 0xfc),
                CONCAT44(uVar4,0x100000),uVar5 & 0xffffffff00000000);
  return;
}



############ FUN_ 181330e80 size=341 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181330e80(longlong param_1,longlong param_2)

{
  char cVar1;
  undefined1 uVar2;
  double dVar3;
  undefined4 local_res8;
  undefined8 local_28;
  undefined8 uStack_20;
  undefined8 local_18;
  
  if (*(longlong *)(param_1 + 0xc0) != 0) {
    if ((0.0 < *(float *)(param_1 + 200)) && (*(char *)(param_1 + 0xcf) != -1)) {
      FUN_181296bb0(param_2);
      local_28 = _DAT_1824c4780;
      uStack_20 = _UNK_1824c4788;
      local_18 = 0x3f800000;
      if (*(longlong *)(param_1 + 0xc0) != 0) {
        cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
        if (cVar1 == '\0') {
          (**(code **)(**(longlong **)(param_2 + 8) + 0xc0))
                    (*(longlong **)(param_2 + 8),param_1 + 0xc0,&local_28);
        }
      }
    }
    if (*(char *)(param_1 + 0xcf) != '\0') {
      dVar3 = (double)((float)(*(uint *)(param_1 + 0xcc) >> 0x18) * *(float *)(param_1 + 200)) +
              DAT_1824c4520;
      uVar2 = 0xff;
      if (SUB84(dVar3,0) < 0xff) {
        uVar2 = SUB81(dVar3,0);
      }
      local_res8 = CONCAT13(uVar2,(int3)*(uint *)(param_1 + 0xcc));
      FUN_181296c00(param_2,local_res8);
      local_28 = _DAT_1824c4780;
      uStack_20 = _UNK_1824c4788;
      local_18 = 0x3f800000;
      if (*(longlong *)(param_1 + 0xc0) != 0) {
        cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
        if (cVar1 == '\0') {
          (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
          (**(code **)(**(longlong **)(param_2 + 8) + 0x48))
                    (*(longlong **)(param_2 + 8),param_1 + 0xc0,&local_28);
          FUN_181295f50(param_2);
          (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
        }
      }
    }
  }
  return;
}



############ FUN_ 1813339b0 size=792 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813339b0(longlong param_1,longlong param_2,char param_3,char param_4)

{
  char cVar1;
  undefined4 uVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float local_68;
  undefined8 uStack_64;
  float fStack_5c;
  undefined1 local_58 [80];
  
  if ((*(byte *)(param_1 + 0xa9) & 0x10) == 0) {
    if (*(longlong *)(param_1 + 0x18) == 0) goto LAB_1813339fb;
    cVar1 = FUN_18133eaa0();
    if (cVar1 != '\0') goto LAB_1813339fb;
  }
  param_3 = '\0';
  param_4 = '\0';
LAB_1813339fb:
  fVar3 = (float)((uint)(*(float *)(param_1 + 0x23c) * DAT_1824c3d8c) ^ DAT_1824c4f30);
  fVar4 = (float)*(int *)(param_1 + 0x22c) - fVar3;
  fVar6 = (float)*(int *)(param_1 + 0x228) - fVar3;
  fVar5 = fVar3 * DAT_1824c41e0 +
          (float)((*(int *)(param_1 + 0x28) - *(int *)(param_1 + 0x234)) - *(int *)(param_1 + 0x22c)
                 );
  fVar3 = fVar3 * DAT_1824c41e0 +
          (float)((*(int *)(param_1 + 0x2c) - *(int *)(param_1 + 0x230)) - *(int *)(param_1 + 0x228)
                 );
  if (fVar5 <= 0.0) {
    fVar5 = 0.0;
  }
  if (fVar3 <= 0.0) {
    fVar3 = 0.0;
  }
  if (*(longlong *)(param_1 + 0x60) != 0) {
    fVar4 = fVar4 - DAT_1824c46a8;
    fVar5 = fVar5 - DAT_1824c4334;
    fVar6 = fVar6 - DAT_1824c46a8;
    fVar3 = fVar3 - DAT_1824c4334;
    if (fVar5 <= 0.0) {
      fVar5 = 0.0;
    }
    if (fVar3 <= 0.0) {
      fVar3 = 0.0;
    }
    uStack_64 = CONCAT44(fVar5,fVar6);
    local_68 = fVar4;
    fStack_5c = fVar3;
  }
  if (param_4 != '\0') {
    fVar4 = fVar4 - fVar5 * _DAT_1824c4650;
    fVar6 = fVar6 - fVar3 * _DAT_1824c4650;
    fVar5 = fVar5 * _DAT_1824c4650 * DAT_1824c41e0 + fVar5;
    fVar3 = fVar3 * _DAT_1824c4650 * DAT_1824c41e0 + fVar3;
    if (fVar5 <= 0.0) {
      fVar5 = 0.0;
    }
    if (fVar3 <= 0.0) {
      fVar3 = 0.0;
    }
    uStack_64 = CONCAT44(fVar5,fVar6);
    local_68 = fVar4;
    fStack_5c = fVar3;
  }
  FUN_18129b390(param_1 + 0x200,local_58,fVar4,fVar6,fVar5,fVar3,*(undefined1 *)(param_1 + 0x238),
                0x24);
  if (param_4 == '\0') {
    if (param_3 == '\0') {
      cVar1 = FUN_1804d6ee0(param_1);
      if ((cVar1 == '\0') || (*(char *)(param_1 + 0x1e4) == '\0')) {
        uVar2 = *(undefined4 *)(param_1 + 0x1c8);
      }
      else {
        uVar2 = *(undefined4 *)(param_1 + 0x1d4);
      }
    }
    else {
      cVar1 = FUN_1804d6ee0(param_1);
      if ((cVar1 == '\0') || (*(char *)(param_1 + 0x1e4) == '\0')) {
        uVar2 = *(undefined4 *)(param_1 + 0x1cc);
      }
      else {
        uVar2 = *(undefined4 *)(param_1 + 0x1d8);
      }
    }
  }
  else {
    cVar1 = FUN_1804d6ee0(param_1);
    if ((cVar1 == '\0') || (*(char *)(param_1 + 0x1e4) == '\0')) {
      uVar2 = *(undefined4 *)(param_1 + 0x1d0);
    }
    else {
      uVar2 = *(undefined4 *)(param_1 + 0x1dc);
    }
  }
  FUN_181296c00(param_2,uVar2);
  cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar1 == '\0') {
    cVar1 = FUN_18129dff0(param_1 + 0x200);
    if (cVar1 == '\0') {
      (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                (*(longlong **)(param_2 + 8),param_1 + 0x200,local_58);
    }
  }
  if (0.0 < *(float *)(param_1 + 0x23c)) {
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x1e0));
    local_68 = *(float *)(param_1 + 0x23c);
    uStack_64 = 0;
    FUN_181295d20(param_2,param_1 + 0x200,&local_68,local_58);
  }
  return;
}



############ FUN_ 181334810 size=653 ############

void FUN_181334810(longlong param_1,longlong param_2,char param_3,char param_4)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  float fVar4;
  float fVar5;
  undefined4 local_res8;
  uint local_res10;
  uint local_78;
  undefined8 *local_70;
  double local_68;
  undefined8 local_60;
  undefined8 local_58;
  int local_50;
  int iStack_4c;
  undefined4 local_48;
  undefined4 local_38;
  undefined4 uStack_34;
  float fStack_30;
  float fStack_2c;
  
  local_60 = 0xfffffffffffffffe;
  FUN_18134a8d0(param_1,&local_res8,0x1001f00,0);
  if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
     ((fVar5 = DAT_1824c3ea4, *(longlong *)(param_1 + 0x18) == 0 ||
      (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
    local_78 = local_res8;
    if (param_3 != '\0') {
      fVar4 = DAT_1824c3d74;
      if (param_4 != '\0') {
        fVar4 = DAT_1824c3f20;
      }
      fVar5 = fVar5 / (fVar4 + fVar5);
      local_res10 = CONCAT13(local_res8._3_1_,
                             CONCAT12((char)(int)((float)(local_res8 >> 0x10 & 0xff) * fVar5),
                                      CONCAT11((char)(int)((float)(local_res8 >> 8 & 0xff) * fVar5),
                                               (char)(int)((float)(local_res8 & 0xff) * fVar5))));
      local_78 = local_res10;
    }
  }
  else {
    local_68 = (double)((float)(local_res8 >> 0x18) * DAT_1824c3d74) + DAT_1824c4520;
    local_78 = local_res8 & 0xffffff;
  }
  FUN_181296c00(param_2,local_78);
  if (*(char *)(param_1 + 0x218) == '\0') {
    local_70 = *(undefined8 **)(param_1 + 0x210);
    if (local_70 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_70 + 1) = *(int *)(local_70 + 1) + 1;
      UNLOCK();
    }
  }
  else {
    iVar3 = *(int *)(param_1 + 0x2c);
    local_70 = *(undefined8 **)(param_1 + 0x210);
    if (local_70 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(local_70 + 1) = *(int *)(local_70 + 1) + 1;
      UNLOCK();
    }
    FUN_1812520a0(&local_70,(float)iVar3 * DAT_1824c3df0);
  }
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_70);
  if (local_70 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_70 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_70)(local_70,1);
    }
  }
  iVar3 = *(int *)(param_1 + 0x28) + -2;
  local_58 = 1;
  local_50 = 0;
  if (0 < iVar3) {
    local_50 = iVar3;
  }
  iStack_4c = 0;
  if (0 < *(int *)(param_1 + 0x2c)) {
    iStack_4c = *(int *)(param_1 + 0x2c);
  }
  local_48 = 0x3f800000;
  uStack_34 = 0;
  fStack_30 = (float)local_50;
  fStack_2c = (float)iStack_4c;
  local_38 = 0x3f800000;
  FUN_1812963b0(param_2,param_1 + 0x158,&local_38,*(uint *)(param_1 + 0x21c) & 0x47 | 0x20,1);
  return;
}



############ FUN_ 181334dc0 size=610 ############

void FUN_181334dc0(longlong param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4)

{
  longlong lVar1;
  code *pcVar2;
  char cVar3;
  char cVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  uint *puVar8;
  undefined1 uVar9;
  int iVar10;
  float fVar11;
  undefined8 local_res8;
  undefined1 local_58 [16];
  undefined8 local_48;
  int iStack_40;
  int iStack_3c;
  
  lVar5 = FUN_18134adf0();
  if (*(int *)(param_1 + 0x1c8) - 3U < 2) {
    lVar1 = *(longlong *)(lVar5 + 8);
    cVar3 = FUN_1804d6ee0(param_1);
    uVar6 = FUN_18134a8d0(param_1,&local_res8,(cVar3 != '\0') + 0x1000100,0);
    (**(code **)(lVar1 + 8))(lVar5 + 8,param_2,param_1,uVar6,param_3,param_4);
  }
  else {
    pcVar2 = *(code **)(*(longlong *)(lVar5 + 8) + 0x40);
    if (pcVar2 == FUN_181314110) {
      cVar3 = FUN_1804d6ee0(param_1);
      puVar7 = (undefined4 *)FUN_18134a8d0(param_1,&local_res8,(cVar3 != '\0') + 0x1004011,0);
      FUN_1812a3160(param_2,*puVar7);
      if (*(int *)(param_1 + 0x1c8) == 2) {
        local_res8 = (double)((float)*(int *)(param_1 + 0x2c) * DAT_1824c3d3c) + DAT_1824c4520;
        iVar10 = 0x10;
        if (SUB84(local_res8,0) < 0x10) {
          iVar10 = SUB84(local_res8,0);
        }
        if (0 < iVar10) {
          FUN_1812966f0(param_2);
          fVar11 = DAT_1824c3d74;
          if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
             ((*(longlong *)(param_1 + 0x18) == 0 ||
              (cVar4 = FUN_18133eaa0(), fVar11 = DAT_1824c3d74, cVar4 != '\0')))) {
            fVar11 = DAT_1824c3ea4;
          }
          uVar6 = 0x1004010;
          if (cVar3 != '\0') {
            uVar6 = 0x1004013;
          }
          puVar8 = (uint *)FUN_18134a8d0(param_1,local_58,uVar6,0);
          local_48 = (double)((float)(*puVar8 >> 0x18) * fVar11) + DAT_1824c4520;
          uVar9 = 0xff;
          if (SUB84(local_48,0) < 0xff) {
            uVar9 = SUB81(local_48,0);
          }
          local_res8._0_4_ = CONCAT13(uVar9,(int3)*puVar8);
          FUN_181296c00(param_2,(undefined4)local_res8);
          local_48 = (double)CONCAT44((*(int *)(param_1 + 0x2c) - iVar10) + -1,2);
          _iStack_40 = CONCAT44(iVar10,*(int *)(param_1 + 0x28) + -4);
          FUN_181296100(param_2,param_1 + 0x158,&local_48,0x24,1,0);
        }
      }
    }
    else {
      (*pcVar2)(lVar5 + 8,param_2,param_1,param_3,param_4);
    }
  }
  return;
}



############ FUN_ 181337b80 size=556 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181337b80(longlong param_1,longlong param_2,undefined8 param_3,char param_4)

{
  char cVar1;
  float *pfVar2;
  float fVar3;
  float fVar4;
  undefined4 local_res20;
  float local_a0;
  float fStack_9c;
  undefined8 uStack_98;
  undefined8 local_90;
  float *local_88;
  int local_7c;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined1 local_68;
  
  FUN_1804ab000(&local_88,param_1 + 0x1d0,param_3,param_4,0xfffffffffffffffe);
  local_78 = *(undefined8 *)(param_1 + 0x1e0);
  uStack_70 = *(undefined8 *)(param_1 + 0x1e8);
  local_68 = *(undefined1 *)(param_1 + 0x1f0);
  fVar4 = DAT_1824c3ea4;
  if (param_4 == '\0') {
    fVar4 = 0.0;
  }
  fVar3 = ((float)*(int *)(param_1 + 0x2c) - DAT_1824c42d0) /
          (*(float *)(param_1 + 0x1ec) - *(float *)(param_1 + 0x1e8));
  local_a0 = ((float)*(int *)(param_1 + 0x28) - DAT_1824c42d0) /
             (*(float *)(param_1 + 0x1e4) - *(float *)(param_1 + 0x1e0));
  fStack_9c = local_a0 * 0.0;
  uStack_98 = CONCAT44(fVar3 * 0.0,
                       local_a0 * (float)((uint)*(float *)(param_1 + 0x1e0) ^ DAT_1824c4f30) + fVar4
                      );
  local_90 = CONCAT44(fVar3 * (float)((uint)*(float *)(param_1 + 0x1e8) ^ DAT_1824c4f30) + fVar4,
                      fVar3);
  FUN_18129b680(&local_88,&local_a0);
  local_res20 = (float)CONCAT13(0x4c,(int3)DAT_18262b5b8);
  local_a0 = local_res20;
  fStack_9c = 5.60519e-45;
  if (param_4 != '\0') {
    fStack_9c = 2.8026e-45;
  }
  uStack_98 = 0;
  FUN_18124d610(&local_a0,param_2,&local_88);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x1c8));
  cVar1 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar1 == '\0') {
    for (pfVar2 = local_88; pfVar2 != local_88 + local_7c; pfVar2 = pfVar2 + 1) {
      fVar4 = *pfVar2;
      if (fVar4 == DAT_1824c4600) {
        pfVar2 = pfVar2 + 2;
      }
      else if (((fVar4 == DAT_1824c45fc) || (fVar4 == DAT_1824c4604)) || (fVar4 == DAT_1824c4608)) {
        local_a0 = _DAT_1824c4780;
        fStack_9c = (float)_UNK_1824c4784;
        uStack_98 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
        local_90 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_88,&local_a0);
        break;
      }
    }
  }
  local_7c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_88);
}



############ FUN_ 181339080 size=109 ############

void FUN_181339080(longlong param_1,longlong param_2)

{
  undefined4 *puVar1;
  undefined1 local_res8 [8];
  undefined8 local_18;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res8,0x1000204,1);
  FUN_181296c00(param_2,*puVar1);
  uStack_10 = *(undefined4 *)(param_1 + 0x28);
  uStack_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_18,0);
  return;
}



############ FUN_ 1813be6b0 size=98 ############

void FUN_1813be6b0(longlong param_1,longlong param_2)

{
  undefined4 local_18;
  int local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_181296c00(param_2,DAT_18248ca98);
  local_14 = *(int *)(param_1 + 0xd0) + 2;
  local_10 = *(undefined4 *)(param_1 + 0x28);
  local_18 = 0;
  local_c = 1;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_18,0);
  return;
}



############ FUN_ 1813bf0d0 size=497 ############

void FUN_1813bf0d0(longlong param_1,undefined8 param_2)

{
  uint uVar1;
  longlong lVar2;
  undefined4 *puVar3;
  uint *puVar4;
  longlong *plVar5;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  longlong local_78;
  longlong local_70;
  undefined8 local_68;
  undefined4 local_60;
  int iStack_5c;
  int local_58;
  int iStack_54;
  undefined4 local_50;
  float fStack_4c;
  float fStack_48;
  float fStack_44;
  undefined4 local_38;
  float fStack_34;
  float fStack_30;
  float fStack_2c;
  
  local_68 = 0xfffffffffffffffe;
  puVar3 = (undefined4 *)FUN_18134a8d0(param_1,local_res18,0x1007000,0);
  FUN_1812a3160(param_2,*puVar3);
  if ((*(byte *)(param_1 + 0x140) & 8) != 0) {
    puVar3 = (undefined4 *)FUN_18134a8d0(param_1,local_res20,0x1007001,0);
    FUN_181296c00(param_2,*puVar3);
    FUN_1812966f0(param_2);
    for (plVar5 = (longlong *)(param_1 + 0xf8); plVar5 != (longlong *)(param_1 + 0x118);
        plVar5 = plVar5 + 1) {
      if ((*(byte *)(*plVar5 + 0xa8) >> 1 & 1) != 0) {
        local_78 = *(longlong *)(*plVar5 + 8);
        if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
          UNLOCK();
        }
        FUN_181232e20(&local_78,&DAT_1821e4ae4,&DAT_1821e4ae5);
        local_70 = local_78;
        if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
          UNLOCK();
        }
        puVar4 = (uint *)(local_78 + -0x10);
        if ((*puVar4 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar4;
          *puVar4 = *puVar4 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar4);
          }
        }
        lVar2 = *plVar5;
        iStack_54 = *(int *)(lVar2 + 0x2c);
        iStack_5c = *(int *)(lVar2 + 0x24);
        local_60 = 0;
        local_58 = *(int *)(lVar2 + 0x20) + -8;
        fStack_44 = (float)iStack_54;
        fStack_48 = (float)local_58;
        fStack_4c = (float)iStack_5c;
        local_50 = 0;
        local_38 = 0;
        fStack_34 = fStack_4c;
        fStack_30 = fStack_48;
        fStack_2c = fStack_44;
        FUN_1812963b0(param_2,&local_70,&local_38,0x22,0);
        puVar4 = (uint *)(local_70 + -0x10);
        if ((*puVar4 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar4;
          *puVar4 = *puVar4 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar4);
          }
        }
      }
    }
  }
  return;
}



############ FUN_ 1813bfa00 size=172 ############

void FUN_1813bfa00(longlong param_1,undefined8 param_2,int param_3,int param_4)

{
  undefined4 *puVar1;
  undefined1 local_res18 [8];
  undefined4 local_18;
  undefined4 local_14;
  float local_10;
  float local_c;
  
  puVar1 = (undefined4 *)FUN_18134a8d0(param_1,local_res18,0x1001c00,0);
  FUN_181296c00(param_2,*puVar1);
  local_10 = (float)param_3 - DAT_1824c442c;
  local_c = (float)param_4 - DAT_1824c4414;
  local_18 = DAT_1824c43e8;
  local_14 = DAT_1824c43a8;
  FUN_18124e500(param_1 + 0x108,param_2,&local_18);
  return;
}



############ FUN_ 1813c5c40 size=865 ############

void FUN_1813c5c40(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  float fVar2;
  uint uVar3;
  double dVar4;
  int iVar5;
  longlong lVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  int iVar10;
  int iVar11;
  undefined4 *puVar12;
  longlong *plVar13;
  undefined8 uVar14;
  uint *_Memory;
  longlong lVar15;
  int iVar16;
  longlong *plVar17;
  int iVar18;
  undefined4 local_res8 [2];
  undefined1 local_res10 [8];
  longlong local_res18;
  longlong local_res20;
  void *local_f8;
  ulonglong local_f0;
  int local_e8;
  undefined4 uStack_e4;
  int iStack_e0;
  undefined4 uStack_dc;
  undefined1 local_d8 [4];
  int local_d4;
  int local_cc;
  float local_c8;
  float local_c4;
  float local_c0;
  float local_bc;
  int local_b8;
  undefined4 uStack_b4;
  int iStack_b0;
  undefined4 uStack_ac;
  float local_a8;
  
  puVar12 = (undefined4 *)FUN_18134a8d0(param_1,local_res10,0x1004500,0);
  FUN_1812a3160(param_2,*puVar12);
  iVar16 = 5;
  if (*(char *)(param_1 + 0xfa) != '\0') {
    iVar16 = 0x23;
  }
  if ((*(byte *)(param_1 + 0x350) >> 1 & 1) == 0) {
    uStack_dc = *(undefined4 *)(param_1 + 0x2c);
  }
  else {
    uStack_dc = *(undefined4 *)(param_1 + 0x2cc);
  }
  if ((*(byte *)(param_1 + 0x200) >> 1 & 1) == 0) {
    iStack_e0 = *(int *)(param_1 + 0x28);
  }
  else {
    iStack_e0 = *(int *)(param_1 + 0x178);
  }
  uStack_e4 = 0;
  iStack_e0 = iStack_e0 - iVar16;
  uStack_b4 = 0;
  local_e8 = iVar16;
  local_b8 = iVar16;
  iStack_b0 = iStack_e0;
  uStack_ac = uStack_dc;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_b8);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0xd0);
  (**(code **)(**(longlong **)(param_2 + 8) + 0x58))(*(longlong **)(param_2 + 8),local_d8);
  fVar9 = DAT_1824c3f78;
  fVar8 = DAT_1824c3ea4;
  fVar7 = DAT_1824c3d8c;
  iVar10 = local_d4 / *(int *)(param_1 + 0xe4);
  iVar18 = 0;
  if (0 < iVar10) {
    iVar18 = iVar10;
  }
  iVar11 = (local_cc + local_d4) / *(int *)(param_1 + 0xe4) + 1;
  iVar10 = *(int *)(param_1 + 0x43c);
  if (iVar11 < *(int *)(param_1 + 0x43c)) {
    iVar10 = iVar11;
  }
  fVar2 = *(float *)(param_1 + 0xe0);
  dVar4 = *(double *)(param_1 + 0x100);
  local_f8 = (void *)0x0;
  local_f0 = 0;
  for (lVar15 = (longlong)iVar18; lVar15 < iVar10; lVar15 = lVar15 + 1) {
    lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x430) + lVar15 * 8);
    iVar11 = *(int *)(lVar6 + 0x14);
    iVar5 = *(int *)(lVar6 + 0x10);
    if (iVar5 < iVar11) {
      local_c0 = (float)(iVar11 - iVar5) * *(float *)(param_1 + 0xe0) + fVar9;
      local_c8 = ((float)iVar5 * *(float *)(param_1 + 0xe0) +
                 (float)((double)iVar16 - (double)fVar2 * dVar4)) - fVar8;
      local_c4 = (float)(*(int *)(param_1 + 0xe4) * iVar18) - fVar7;
      local_bc = (float)*(int *)(param_1 + 0xe4) + fVar8;
      local_a8 = local_c8;
      FUN_18051cfc0(&local_f8,&local_c8);
    }
    iVar18 = iVar18 + 1;
  }
  plVar13 = (longlong *)FUN_1804e4ce0(&local_res18,0x1004502);
  plVar17 = *(longlong **)(param_1 + 0x90);
  plVar1 = plVar17 + (longlong)*(int *)(param_1 + 0x9c) * 3;
  if (plVar17 != plVar1) {
    local_res20 = *plVar13;
    do {
      if (*plVar17 == local_res20) {
        plVar17 = plVar17 + 1;
        goto LAB_1813c5efd;
      }
      plVar17 = plVar17 + 3;
    } while (plVar17 != plVar1);
  }
  plVar17 = (longlong *)0x0;
LAB_1813c5efd:
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (plVar17 == (longlong *)0x0) {
    uVar14 = FUN_18134adf0(param_1);
    FUN_181346420(uVar14,local_res8,0x1004502);
  }
  else {
    local_res8[0] = (**(code **)(*(longlong *)*plVar17 + 8))((longlong *)*plVar17,plVar17 + 1);
  }
  FUN_181296c00(param_2,local_res8[0]);
  (**(code **)(**(longlong **)(param_2 + 8) + 0xb0))(*(longlong **)(param_2 + 8),&local_f8);
  local_f0 = local_f0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_f8);
}



############ FUN_ 1813ea380 size=881 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813ea380(longlong param_1,longlong param_2)

{
  float fVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  longlong lVar5;
  undefined8 *puVar6;
  longlong lVar7;
  float *pfVar8;
  float fVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined1 uVar12;
  undefined1 uVar13;
  undefined1 uVar14;
  undefined1 uVar15;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  void *local_70 [3];
  undefined8 local_58;
  undefined8 uStack_50;
  float *local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 uStack_30;
  undefined1 local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  lVar5 = *(longlong *)(param_1 + 200);
  lVar7 = (longlong)*(int *)(param_1 + 0xd4) * 0x10 + lVar5;
  bVar3 = true;
  bVar2 = false;
  for (; lVar5 != lVar7; lVar5 = lVar5 + 0x10) {
    if (*(char *)(lVar5 + 0xb) != '\0') {
      local_88 = *(undefined8 *)(param_1 + 0xb0);
      uStack_80 = *(undefined8 *)(param_1 + 0xb8);
      local_78 = CONCAT71(local_78._1_7_,*(undefined1 *)(param_1 + 0xc0));
      FUN_1804aaeb0(local_70,param_1 + 200);
      local_88 = CONCAT44(local_88._4_4_ * (float)*(int *)(param_1 + 0x2c),
                          (float)local_88 * (float)*(int *)(param_1 + 0x28));
      uStack_80 = CONCAT44(uStack_80._4_4_ * (float)*(int *)(param_1 + 0x2c),
                           (float)uStack_80 * (float)*(int *)(param_1 + 0x28));
      FUN_181296a90(param_2,&local_88);
                    /* WARNING: Subroutine does not return */
      free(local_70[0]);
    }
  }
  if ((((*(char *)(param_1 + 0xf0) != '\0') || (*(char *)(param_1 + 0xf1) != '\0')) ||
      (*(char *)(param_1 + 0xf2) != '\0')) || (*(char *)(param_1 + 0xf3) != '\0')) {
    bVar2 = true;
  }
  if (bVar2) {
    FUN_181296c00();
    if (((*(char *)(param_1 + 0xf0) == '\0') && (*(char *)(param_1 + 0xf1) == '\0')) &&
       ((*(char *)(param_1 + 0xf2) == '\0' && (*(char *)(param_1 + 0xf3) == '\0')))) {
      bVar3 = false;
    }
    if (bVar3) {
      fVar9 = (float)*(int *)(param_1 + 0x2c);
      uVar10 = *(undefined4 *)(param_1 + 0xec);
      local_48 = (float *)0x0;
      local_40 = 0;
      local_38 = 0;
      uStack_30 = 0;
      local_28 = 1;
      uVar15 = *(undefined1 *)(param_1 + 0xf2);
      uVar14 = *(undefined1 *)(param_1 + 0xf3);
      uVar13 = *(undefined1 *)(param_1 + 0xf1);
      uVar12 = *(undefined1 *)(param_1 + 0xf0);
      uVar11 = uVar10;
      FUN_18129d5a0(&local_48,0);
      cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
      if (cVar4 == '\0') {
        for (pfVar8 = local_48; pfVar8 != local_48 + local_40._4_4_; pfVar8 = pfVar8 + 1) {
          fVar1 = *pfVar8;
          if (fVar1 == DAT_1824c4600) {
            pfVar8 = pfVar8 + 2;
          }
          else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) ||
                  (fVar1 == DAT_1824c4608)) {
            local_88 = _DAT_1824c4780;
            uStack_80 = _UNK_1824c4788;
            local_78 = 0x3f800000;
            (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                      (*(longlong **)(param_2 + 8),&local_48,&local_88);
            break;
          }
        }
      }
      FUN_181296c00(param_2,0x19ffffff);
      local_88 = _DAT_1824c4820;
      uStack_80 = _UNK_1824c4828;
      local_78 = 0x3f800000;
      local_58 = 0x3f000000;
      uStack_50._0_4_ = 0;
      FUN_181295d20(param_2,&local_48,&local_58,&local_88,fVar9,uVar10,uVar11,uVar12,uVar13,uVar14,
                    uVar15);
      FUN_181296c00(param_2,0xc000000);
      local_88 = _DAT_1824c4780;
      uStack_80 = _UNK_1824c4788;
      local_78 = 0x3f800000;
      local_58 = 0x3f000000;
      uStack_50 = (ulonglong)uStack_50._4_4_ << 0x20;
      FUN_181295d20(param_2,&local_48,&local_58,&local_88);
      local_40 = local_40 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_48);
    }
    puVar6 = (undefined8 *)
             (**(code **)(**(longlong **)(param_2 + 8) + 0x58))
                       (*(longlong **)(param_2 + 8),&local_88);
    local_58 = *puVar6;
    uStack_50 = puVar6[1];
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_58,0);
  }
  else {
    FUN_1812a3160(param_2,*(undefined4 *)(param_1 + 0xd8));
  }
  return;
}



############ FUN_ 181493d80 size=490 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181493d80(longlong param_1,longlong param_2,char param_3)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  char cVar6;
  undefined1 uVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  uint *_Memory;
  undefined1 auStack_e8 [32];
  undefined1 local_c8;
  undefined4 local_b8;
  undefined1 local_b0 [8];
  longlong local_a8;
  undefined8 *local_a0;
  float local_98;
  float fStack_94;
  float fStack_90;
  float fStack_8c;
  undefined1 local_88 [16];
  undefined8 local_78;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  longlong *local_58;
  undefined1 local_50 [8];
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  plVar2 = (longlong *)(param_1 + 0x1c8);
  (**(code **)(*plVar2 + 8))(plVar2);
  uVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  FUN_1813f2500(uVar8,&local_a0);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_a0);
  FUN_1814acd80(param_1,local_88);
  uVar5 = DAT_182674280;
  uVar8 = (**(code **)(*plVar2 + 8))(plVar2);
  FUN_1813f22a0(uVar8,local_b0,uVar5,param_1);
  puVar9 = (undefined8 *)
           (**(code **)(*(longlong *)(param_1 + 0x1f0) + 0x10))
                     ((longlong *)(param_1 + 0x1f0),&local_58);
  cVar6 = (**(code **)(*(longlong *)*puVar9 + 0x28))((longlong *)*puVar9,puVar9 + 1);
  (**(code **)(*local_58 + 0xb0))(local_58,local_50);
  if ((param_3 == '\0') && (cVar6 == '\0')) {
    uVar7 = 0x4c;
  }
  else {
    uVar7 = 0xff;
  }
  local_b8 = CONCAT13(uVar7,(int3)local_b0._4_4_);
  FUN_181296c00(param_2,local_b8);
  FUN_18049c4e0(&local_a8,"band listen");
  fStack_8c = (float)SUB84(local_88._8_8_,4);
  fStack_90 = (float)(int)local_88._8_8_;
  fStack_94 = (float)SUB84(local_88._0_8_,4);
  local_98 = (float)(int)local_88._0_8_;
  local_c8 = 1;
  local_68 = local_98;
  fStack_64 = fStack_94;
  fStack_60 = fStack_90;
  fStack_5c = fStack_8c;
  FUN_1812963b0(param_2,&local_a8,&local_68,0x21);
  _Memory = (uint *)(local_a8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (local_a0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_a0 + 1);
    iVar4 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar4 == 1) {
      (**(code **)*local_a0)(local_a0,1);
    }
  }
}



############ FUN_ 1814c1760 size=1109 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c1760(longlong *param_1,longlong param_2)

{
  longlong *plVar1;
  undefined4 uVar2;
  float fVar3;
  char cVar4;
  longlong lVar5;
  float *pfVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined4 local_res8;
  undefined4 local_resc;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined8 local_118;
  void *local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined1 local_e8;
  float local_e0 [4];
  float *local_d0;
  undefined8 local_c8;
  undefined8 local_c0;
  undefined8 uStack_b8;
  undefined1 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined1 local_88;
  undefined8 local_80;
  
  local_80 = 0xfffffffffffffffe;
  plVar1 = param_1 + 0x16;
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar10 = *(float *)(lVar5 + 0x88);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar9 = *(float *)(lVar5 + 0x88);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  uVar2 = *(undefined4 *)(lVar5 + 0x88);
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar8 = *(float *)(lVar5 + 0x88) * _DAT_1824c4588;
  fVar9 = fVar9 * DAT_1824c4424;
  fVar10 = fVar10 * DAT_1824c4424;
  local_e0[3] = *(float *)((longlong)param_1 + 0x2c);
  local_e0[2] = (float)param_1[5];
  local_e0[0] = 0.0;
  local_e0[1] = 0.0;
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar11 = *(float *)(lVar5 + 0x88) * _DAT_1824c458c;
  (**(code **)(*plVar1 + 8))(plVar1);
  local_a8 = 0;
  local_a0 = 0;
  local_98 = 0;
  uStack_90 = 0;
  local_88 = 1;
  local_128 = CONCAT44(uVar2,fVar8);
  uStack_120 = CONCAT44(fVar10,fVar9);
  FUN_18129d1e0(&local_a8,&local_128);
  local_d0 = (float *)0x0;
  local_c8 = 0;
  local_c0 = 0;
  uStack_b8 = 0;
  local_b0 = 1;
  FUN_18129d850(&local_d0,0);
  local_b0 = 0;
  FUN_18129bd50(&local_d0,&local_a8);
  local_res8._0_3_ = (undefined3)DAT_18262bb60;
  local_res8 = CONCAT13(0x26,(undefined3)local_res8);
  FUN_181296c00(param_2,local_res8);
  cVar4 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar4 == '\0') {
    for (pfVar6 = local_d0; pfVar6 != local_d0 + local_c8._4_4_; pfVar6 = pfVar6 + 1) {
      fVar3 = *pfVar6;
      if (fVar3 == DAT_1824c4600) {
        pfVar6 = pfVar6 + 2;
      }
      else if (((fVar3 == DAT_1824c45fc) || (fVar3 == DAT_1824c4604)) || (fVar3 == DAT_1824c4608)) {
        local_128 = _DAT_1824c4780;
        uStack_120 = _UNK_1824c4788;
        local_118 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_d0,&local_128);
        break;
      }
    }
  }
  local_108 = (void *)0x0;
  local_100 = 0;
  local_f8 = 0;
  uStack_f0 = 0;
  local_e8 = 1;
  local_128 = CONCAT44(uVar2,fVar8);
  uStack_120 = CONCAT44(fVar10,fVar9);
  FUN_18129d1e0(&local_108,&local_128);
  pfVar6 = (float *)(**(code **)(*param_1 + 0x178))(param_1,&local_128);
  fVar3 = pfVar6[1];
  fVar7 = pfVar6[2] + *pfVar6;
  if (local_100._4_4_ == 0) {
    local_f8 = CONCAT44(fVar7,fVar7);
    uStack_f0 = (ulonglong)(uint)fVar3;
  }
  else {
    if ((float)local_f8 <= fVar7) {
      if (local_f8._4_4_ < fVar7) {
        local_f8 = CONCAT44(fVar7,(float)local_f8);
      }
    }
    else {
      local_f8 = CONCAT44(local_f8._4_4_,fVar7);
    }
    if (fVar3 < (float)uStack_f0) {
      uStack_f0 = CONCAT44(uStack_f0._4_4_,fVar3);
      goto LAB_1814c1a6b;
    }
    if (fVar3 <= uStack_f0._4_4_) goto LAB_1814c1a6b;
  }
  uStack_f0 = CONCAT44(fVar3,(float)uStack_f0);
LAB_1814c1a6b:
  FUN_1804b02a0(&local_108,&DAT_1821df344);
  FUN_18129ddd0(&local_108,fVar11);
  local_e8 = 0;
  local_128 = CONCAT44(uVar2,fVar8);
  uStack_120 = CONCAT44(fVar10,fVar9);
  FUN_18129d1e0(&local_108,&local_128);
  if ((local_100._4_4_ != 0) &&
     ((local_100._4_4_ < 1 ||
      (*(float *)((longlong)local_108 + (longlong)(local_100._4_4_ + -1) * 4) != DAT_1824c460c)))) {
    if ((int)local_100 < local_100._4_4_ + 1) {
      FUN_1804af790(&local_108,local_100._4_4_ + 9 + (local_100._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar5 = (longlong)local_100._4_4_;
    local_100 = CONCAT44(local_100._4_4_ + 1,(int)local_100);
    *(undefined4 *)((longlong)local_108 + lVar5 * 4) = 0x47c35280;
  }
  FUN_1813f22a0(param_1[0x17],&local_res8,DAT_182674244,param_1);
  local_res8._0_3_ = (undefined3)local_resc;
  local_res8 = CONCAT13(0xe6,(undefined3)local_res8);
  FUN_181296c00(param_2,local_res8);
  local_128 = _DAT_1824c4780;
  uStack_120 = _UNK_1824c4788;
  local_118 = 0x3f800000;
  lVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  local_e0[0] = *(float *)(lVar5 + 0x88) * DAT_1824c3f78;
  local_e0[1] = 0.0;
  local_e0[2] = 0.0;
  FUN_181295d20(param_2,&local_108,local_e0,&local_128);
  local_100 = local_100 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_108);
}



############ FUN_ 1814c2fd0 size=68 ############

void FUN_1814c2fd0(longlong param_1,undefined8 param_2,char param_3)

{
  undefined4 uVar1;
  
  if (param_3 == '\0') {
    uVar1 = *(undefined4 *)(param_1 + 0x2e8);
  }
  else {
    uVar1 = *(undefined4 *)(param_1 + 0x2ec);
  }
  FUN_181296c00(param_2,uVar1);
  FUN_181295ed0(param_2,param_1 + 0x1f8);
  return;
}



############ FUN_ 1814c4b90 size=211 ############

void FUN_1814c4b90(longlong param_1,longlong param_2)

{
  undefined1 local_18 [16];
  
  FUN_181296c00(param_2,DAT_18262bb5c);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 200);
  local_18 = ZEXT416((uint)(float)*(int *)(param_1 + 0x28)) << 0x40;
  FUN_1812963b0(param_2,param_1 + 8,local_18,9,1);
  return;
}



############ FUN_ 1814c4de0 size=1409 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814c4de0(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong lVar9;
  uint *_Memory;
  ulonglong uVar10;
  uint uVar11;
  ulonglong uVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  undefined4 local_res8;
  undefined8 *local_res20;
  float local_1a8;
  float local_1a0;
  longlong local_198;
  int local_190;
  int iStack_18c;
  int local_188;
  int iStack_184;
  float local_178;
  float local_174;
  float local_170;
  float local_16c;
  float local_168;
  float local_164;
  float local_160;
  float local_15c;
  double local_158;
  double local_150;
  double local_148;
  double local_140;
  float local_138;
  float fStack_134;
  float fStack_130;
  float fStack_12c;
  undefined8 local_118;
  float local_108;
  float fStack_104;
  float fStack_100;
  float fStack_fc;
  float local_f8;
  float fStack_f4;
  float fStack_f0;
  float fStack_ec;
  float local_e8;
  
  local_118 = 0xfffffffffffffffe;
  plVar2 = (longlong *)(param_1 + 0xb0);
  lVar7 = (**(code **)(*plVar2 + 8))(plVar2);
  local_1a8 = (float)((uint)(*(float *)(lVar7 + 0x88) * DAT_1824c41e0) ^ DAT_1824c4f30);
  local_1a0 = local_1a8 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x28);
  if (local_1a0 <= 0.0) {
    local_1a0 = 0.0;
  }
  fVar16 = local_1a8 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x2c);
  if (fVar16 <= 0.0) {
    fVar16 = 0.0;
  }
  fVar17 = 0.0 - local_1a8;
  local_1a8 = 0.0 - local_1a8;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),param_1 + 0xe8);
  FUN_181296c00(param_2,DAT_18262bb5c);
  fVar6 = DAT_1824c43d8;
  fVar5 = DAT_1824c4334;
  fVar4 = DAT_1824c42d0;
  uVar10 = 0;
  uVar12 = uVar10;
  if (*(longlong *)(param_1 + 0xd0) - *(longlong *)(param_1 + 200) >> 3 != 0) {
    do {
      lVar7 = *(longlong *)(param_1 + 200) + uVar10 * 8;
      plVar8 = (longlong *)(**(code **)(**(longlong **)(param_2 + 8) + 0xd8))();
      local_res20 = (undefined8 *)*plVar8;
      if (local_res20 != (undefined8 *)0x0) {
        LOCK();
        *(int *)(local_res20 + 1) = *(int *)(local_res20 + 1) + 1;
        UNLOCK();
      }
      fVar13 = (float)FUN_1812518d0(&local_res20,lVar7);
      if (local_res20 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_res20 + 1);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)*local_res20)(local_res20,1);
        }
      }
      lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
      fVar13 = *(float *)(lVar9 + 0x88) * fVar6 + fVar13;
      fVar15 = local_1a0;
      if (fVar13 <= local_1a0) {
        fVar15 = fVar13;
      }
      local_1a0 = local_1a0 - fVar15;
      local_res8 = CONCAT13(0xb3,(int3)DAT_18262bb5c);
      local_e8 = local_1a8;
      FUN_181296c00(param_2,local_res8);
      local_178 = local_1a8;
      local_174 = fVar17;
      local_170 = fVar15;
      local_16c = fVar16;
      (**(code **)(*plVar2 + 8))(plVar2);
      lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
      FUN_181295190(param_2,&local_178,*(float *)(lVar9 + 0x88) * fVar4);
      FUN_181296c00(param_2,DAT_18262bb5c);
      local_168 = local_1a8;
      local_164 = fVar17;
      local_160 = fVar15;
      local_15c = fVar16;
      FUN_1812963b0(param_2,lVar7,&local_168,0x24,1);
      lVar7 = (**(code **)(*plVar2 + 8))(plVar2);
      fVar14 = *(float *)(lVar7 + 0x88) * fVar5;
      fVar13 = local_1a0;
      if (fVar14 <= local_1a0) {
        fVar13 = fVar14;
      }
      local_1a8 = local_1a8 + fVar15 + fVar13;
      local_1a0 = local_1a0 - fVar13;
      if (uVar10 < (*(longlong *)(param_1 + 0xd0) - *(longlong *)(param_1 + 200) >> 3) - 1U) {
        FUN_18049c4e0(&local_198,&DAT_1821ea324);
        lVar7 = (**(code **)(*plVar2 + 8))(plVar2);
        fVar13 = *(float *)(lVar7 + 0x88) * fVar5;
        fStack_130 = local_1a0;
        if (fVar13 <= local_1a0) {
          fStack_130 = fVar13;
        }
        fVar13 = local_1a8 + fStack_130;
        local_1a0 = local_1a0 - fStack_130;
        local_138 = local_1a8;
        fStack_134 = fVar17;
        fStack_12c = fVar16;
        local_108 = local_1a8;
        fStack_104 = fVar17;
        fStack_100 = fStack_130;
        fStack_fc = fVar16;
        FUN_1812963b0(param_2,&local_198,&local_108,0x24,1);
        _Memory = (uint *)(local_198 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar11 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        lVar7 = (**(code **)(*plVar2 + 8))(plVar2);
        fVar14 = *(float *)(lVar7 + 0x88) * fVar5;
        fVar15 = local_1a0;
        if (fVar14 <= local_1a0) {
          fVar15 = fVar14;
        }
        local_1a8 = fVar13 + fVar15;
        local_1a0 = local_1a0 - fVar15;
      }
      uVar11 = (int)uVar12 + 1;
      uVar10 = (ulonglong)(int)uVar11;
      uVar12 = (ulonglong)uVar11;
    } while (uVar10 < (ulonglong)(*(longlong *)(param_1 + 0xd0) - *(longlong *)(param_1 + 200) >> 3)
            );
  }
  local_158 = (double)local_1a8 + DAT_1824c4520;
  local_150 = (double)fVar17 + DAT_1824c4520;
  local_148 = (double)local_1a0 + DAT_1824c4520;
  local_140 = (double)fVar16 + DAT_1824c4520;
  local_190 = SUB84(local_158,0);
  iStack_18c = local_150._0_4_;
  local_188 = SUB84(local_148,0);
  iStack_184 = local_140._0_4_;
  local_f8 = (float)local_190;
  fStack_f4 = (float)local_150._0_4_;
  fStack_f0 = (float)local_188;
  fStack_ec = (float)local_140._0_4_;
  FUN_1812963b0(param_2,param_1 + 0xe0,&local_f8,0x21,1);
  return;
}



############ FUN_ 1814ce9e0 size=622 ############

void FUN_1814ce9e0(longlong param_1,undefined8 param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  char cVar5;
  longlong lVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined4 local_res8;
  undefined8 local_88;
  float fStack_80;
  float fStack_7c;
  
  cVar5 = FUN_18133e590(param_1,1);
  if (((cVar5 != '\0') && (*(char *)(*(longlong *)(param_1 + 200) + 0x58) == '\0')) &&
     (*(longlong *)(*(longlong *)(param_1 + 200) + 0x50) != 0)) {
    local_res8 = CONCAT13(0x19,(int3)DAT_18262bb5c);
    FUN_181296c00(param_2,local_res8);
    fStack_80 = (float)*(int *)(param_1 + 0x28);
    fStack_7c = (float)*(int *)(param_1 + 0x2c);
    local_88 = 0;
    lVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
    FUN_181295300(param_2,&local_88,*(float *)(lVar6 + 0x88) * DAT_1824c42d0);
  }
  FUN_181296c00(param_2,0x987a8387);
  fVar4 = DAT_1824c3d8c;
  fVar1 = *(float *)(param_1 + 0x3b8);
  fVar7 = (fVar1 - fVar1) * DAT_1824c3d8c;
  fVar2 = *(float *)(param_1 + 0x3b0);
  fVar9 = (*(float *)(param_1 + 0x3bc) - fVar1) * DAT_1824c3d8c + *(float *)(param_1 + 0x3b4);
  if (*(char *)(*(longlong *)(param_1 + 200) + 0x58) == '\0') {
    fVar8 = fVar1 * DAT_1824c3d8c;
    lVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    fVar3 = *(float *)(lVar6 + 0x88);
    lVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    fStack_80 = fVar1 - fVar3 * DAT_1824c41e0;
    fStack_7c = (fVar9 + fVar1) - (*(float *)(lVar6 + 0x88) * DAT_1824c41e0 + fVar9);
    if (fStack_80 <= 0.0) {
      fStack_80 = 0.0;
    }
    if (fStack_7c <= 0.0) {
      fStack_7c = 0.0;
    }
    local_88 = CONCAT44((fVar8 + fVar9) - fStack_7c * fVar4,
                        (fVar8 + fVar7 + fVar2) - fStack_80 * fVar4);
    FUN_181295820(param_2,&local_88);
  }
  else {
    FUN_181295ed0(param_2,param_1 + 0x3c0);
  }
  return;
}



############ FUN_ 1814cf280 size=1686 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

DWORD FUN_1814cf280(longlong param_1,longlong param_2)

{
  uint uVar1;
  char cVar2;
  DWORD DVar3;
  DWORD DVar4;
  longlong lVar5;
  float *pfVar6;
  int iVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float *local_168;
  undefined8 local_160;
  float local_158;
  float local_154;
  float local_150;
  float local_14c;
  undefined1 local_148;
  float *local_140;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 uStack_128;
  undefined1 local_120;
  float local_118 [4];
  float local_108;
  float local_104;
  float local_100;
  float local_fc;
  undefined8 local_f8;
  undefined8 uStack_f0;
  undefined8 local_e8;
  float local_e0;
  uint local_dc;
  float local_d8;
  float local_d4;
  float local_d0;
  float local_cc;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  float local_b0;
  uint local_ac;
  float local_a8;
  float local_a4;
  float local_a0;
  float local_9c;
  undefined8 local_98;
  undefined8 uStack_90;
  ulonglong local_88;
  undefined8 local_80;
  
  local_80 = 0xfffffffffffffffe;
  DVar3 = timeGetTime();
  if (DVar3 < DAT_1826737fc) {
    uVar1 = DAT_1826737fc;
    DVar4 = DVar3;
    if (DVar3 < DAT_1826737fc - 1000) {
      LOCK();
      UNLOCK();
      uVar1 = DVar3;
    }
  }
  else {
    LOCK();
    UNLOCK();
    uVar1 = DVar3;
    DVar4 = DAT_1826737fc;
  }
  DAT_1826737fc = uVar1;
  iVar7 = DVar3 - *(int *)(param_1 + 0x2a0);
  if (*(longlong *)(param_1 + 0x290) == 0) {
    if (*(longlong *)(param_1 + 0x298) == 0) {
      return DVar4;
    }
    lVar5 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    fVar11 = *(float *)(lVar5 + 0x88) * DAT_1824c43d8;
    (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    fVar10 = sinf((float)iVar7 / DAT_1824c4540);
    fVar9 = (float)((uint)fVar11 ^ DAT_1824c4f30);
    fVar8 = fVar9 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x28);
    if (fVar8 <= 0.0) {
      fVar8 = 0.0;
    }
    fVar12 = fVar9 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x2c);
    if (fVar12 <= 0.0) {
      fVar12 = 0.0;
    }
    fVar12 = fVar12 * DAT_1824c3d8c + (0.0 - fVar9);
    fVar8 = fVar8 * DAT_1824c3d8c + (0.0 - fVar9);
    local_168 = (float *)0x0;
    local_160._0_4_ = 0;
    local_160._4_4_ = 0;
    local_148 = 1;
    local_150 = fVar12 - (fVar10 * DAT_1824c3d8c + DAT_1824c3d8c) * fVar11;
    local_158 = fVar8;
    local_154 = fVar8;
    local_14c = local_150;
    FUN_1804b02a0(&local_168,&DAT_1821df344);
    FUN_18129ddd0(&local_168);
    FUN_18129ddd0(&local_168);
    if ((local_160._4_4_ != 0) &&
       ((local_160._4_4_ < 1 || (local_168[local_160._4_4_ + -1] != DAT_1824c460c)))) {
      if ((int)(uint)local_160 < local_160._4_4_ + 1) {
        FUN_1804af790(&local_168,local_160._4_4_ + 9 + (local_160._4_4_ + 1) / 2 & 0xfffffff8);
      }
      local_160._4_4_ = 1;
      *local_168 = 100005.0;
    }
    fVar9 = (*(float *)(*(longlong *)(param_1 + 0x298) + 8) * DAT_1824c42e0) / DAT_1824c4518;
    fVar10 = cosf(fVar9);
    local_a4 = sinf(fVar9);
    local_ac = (uint)local_a4 ^ DAT_1824c4f30;
    local_a8 = (local_a4 * fVar12 - fVar10 * fVar8) + fVar8;
    local_9c = fVar12 - (local_a4 * fVar8 + fVar10 * fVar12);
    local_b0 = fVar10;
    local_a0 = fVar10;
    FUN_18129b680(&local_168,&local_b0);
    FUN_181296c00(param_2,DAT_18262bb5c);
    cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
    if (cVar2 == '\0') {
      for (pfVar6 = local_168; pfVar6 != local_168 + local_160._4_4_; pfVar6 = pfVar6 + 1) {
        fVar8 = *pfVar6;
        if (fVar8 == DAT_1824c4600) {
          pfVar6 = pfVar6 + 2;
        }
        else if (((fVar8 == DAT_1824c45fc) || (fVar8 == DAT_1824c4604)) || (fVar8 == DAT_1824c4608))
        {
          local_98 = _DAT_1824c4780;
          uStack_90 = _UNK_1824c4788;
          local_88 = (ulonglong)DAT_1824c3ea4;
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                    (*(longlong **)(param_2 + 8),&local_168,&local_98);
          break;
        }
      }
    }
    local_160 = (ulonglong)(uint)local_160;
    pfVar6 = local_168;
  }
  else {
    lVar5 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    fVar8 = (float)((uint)(*(float *)(lVar5 + 0x88) * DAT_1824c41e0) ^ DAT_1824c4f30);
    fVar10 = fVar8 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x28);
    if (fVar10 <= 0.0) {
      fVar10 = 0.0;
    }
    fVar9 = fVar8 * DAT_1824c41e0 + (float)*(int *)(param_1 + 0x2c);
    if (fVar9 <= 0.0) {
      fVar9 = 0.0;
    }
    local_140 = (float *)0x0;
    local_138 = 0;
    local_130 = 0;
    uStack_128 = 0;
    local_120 = 1;
    local_108 = 0.0 - fVar8;
    local_104 = 0.0 - fVar8;
    local_100 = fVar10;
    local_fc = fVar9;
    FUN_18129d1e0(&local_140,&local_108);
    lVar5 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    local_118[0] = *(float *)(lVar5 + 0x88) * DAT_1824c42d0;
    local_118[1] = 0.0;
    local_118[2] = 0.0;
    local_f8 = _DAT_1824c4780;
    uStack_f0 = _UNK_1824c4788;
    local_e8 = 0x3f800000;
    FUN_181297340(local_118,&local_140,&local_140,param_1 + 0x284,2,&local_f8,DAT_1824c3ea4);
    fVar9 = fVar9 * DAT_1824c3d8c + (0.0 - fVar8);
    fVar11 = fVar10 * DAT_1824c3d8c + (0.0 - fVar8);
    fVar10 = (float)iVar7 / _DAT_1824c45b0;
    fVar8 = cosf(fVar10);
    local_d4 = sinf(fVar10);
    local_dc = (uint)local_d4 ^ DAT_1824c4f30;
    local_d8 = (local_d4 * fVar9 - fVar8 * fVar11) + fVar11;
    local_cc = fVar9 - (local_d4 * fVar11 + fVar8 * fVar9);
    local_e0 = fVar8;
    local_d0 = fVar8;
    FUN_18129b680(&local_140,&local_e0);
    FUN_181296c00(param_2,DAT_18262bb5c);
    cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
    if (cVar2 == '\0') {
      for (pfVar6 = local_140; pfVar6 != local_140 + local_138._4_4_; pfVar6 = pfVar6 + 1) {
        fVar8 = *pfVar6;
        if (fVar8 == DAT_1824c4600) {
          pfVar6 = pfVar6 + 2;
        }
        else if (((fVar8 == DAT_1824c45fc) || (fVar8 == DAT_1824c4604)) || (fVar8 == DAT_1824c4608))
        {
          local_c8 = _DAT_1824c4780;
          uStack_c0 = _UNK_1824c4788;
          local_b8 = 0x3f800000;
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                    (*(longlong **)(param_2 + 8),&local_140,&local_c8);
          break;
        }
      }
    }
    local_138 = local_138 & 0xffffffff;
    pfVar6 = local_140;
  }
                    /* WARNING: Subroutine does not return */
  free(pfVar6);
}



############ FUN_ 1814d09a0 size=643 ############

void FUN_1814d09a0(longlong param_1,undefined8 param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined4 local_res8;
  float local_c8;
  float fStack_c4;
  float fStack_c0;
  float fStack_bc;
  undefined1 local_b8 [8];
  float fStack_b0;
  float fStack_ac;
  
  fVar1 = DAT_1824c3d8c;
  fVar2 = (float)*(int *)(param_1 + 0x2c);
  fVar5 = fVar2 * DAT_1824c3d3c;
  fVar9 = fVar2 * DAT_1824c3e28;
  local_res8._0_3_ = (undefined3)DAT_18262bb5c;
  local_res8 = CONCAT13(0xe6,(undefined3)local_res8);
  fVar11 = (float)*(int *)(param_1 + 0x28);
  fVar3 = fVar2 * DAT_1824c3d8c;
  fVar7 = fVar2 * DAT_1824c3d18 * *(float *)(param_1 + 0x274) + fVar9;
  fVar10 = (fVar2 - fVar5) * DAT_1824c3d8c + 0.0;
  fVar8 = (*(float *)(param_1 + 0x270) * fVar11 - *(float *)(param_1 + 0x270) * fVar2) + fVar3;
  fVar4 = (fVar11 - fVar11) * DAT_1824c3d8c + 0.0;
  FUN_181296c00(param_2,local_res8);
  fVar9 = fVar9 * DAT_1824c3e58;
  fVar2 = fVar8 - fVar9;
  fStack_c0 = fVar11;
  if (fVar2 <= fVar11) {
    fStack_c0 = fVar2;
  }
  _local_b8 = ZEXT416((uint)(fVar4 + fStack_c0));
  fVar2 = fVar11 - fStack_c0;
  fVar6 = fVar5 * fVar1;
  local_c8 = fVar4;
  fStack_c4 = fVar10;
  fStack_bc = fVar5;
  FUN_181295300(param_2,&local_c8,fVar6);
  FUN_181296c00(param_2,DAT_18262bb5c);
  if (fVar7 <= 0.0) {
    fVar7 = 0.0;
  }
  fVar1 = fVar7 * fVar1;
  local_c8 = fVar8 - fVar1;
  fStack_c4 = fVar3 - fVar1;
  fStack_c0 = fVar7;
  fStack_bc = fVar7;
  FUN_181295820(param_2,&local_c8);
  local_res8._0_3_ = (undefined3)DAT_18262bb5c;
  local_res8 = CONCAT13(0x33,(undefined3)local_res8);
  FUN_181296c00(param_2,local_res8);
  fVar9 = (fVar11 - fVar8) - fVar9;
  fStack_b0 = fVar2;
  if (fVar9 <= fVar2) {
    fStack_b0 = fVar9;
  }
  local_b8._4_4_ = fVar10;
  local_b8._0_4_ = ((float)local_b8._0_4_ + fVar2) - fStack_b0;
  fStack_ac = fVar5;
  FUN_181295300(param_2,local_b8,fVar6);
  return;
}



############ FUN_ 1814d0d80 size=557 ############

void FUN_1814d0d80(longlong param_1,longlong param_2,char param_3)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 *local_res8;
  undefined4 local_res18;
  undefined4 local_48;
  undefined4 uStack_44;
  float fStack_40;
  float fStack_3c;
  float local_38;
  float fStack_34;
  float fStack_30;
  float fStack_2c;
  int local_28;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  
  if (param_3 != '\0') {
    local_res18 = CONCAT13(0x19,(int3)DAT_18262bb5c);
    FUN_181296c00(param_2,local_res18);
    fStack_3c = (float)*(int *)(param_1 + 0x2c);
    fStack_40 = (float)*(int *)(param_1 + 0x28);
    local_48 = 0;
    uStack_44 = 0;
    lVar4 = (**(code **)(*(longlong *)(param_1 + 0x1c8) + 8))();
    FUN_181295300(param_2,&local_48,*(float *)(lVar4 + 0x88) * DAT_1824c4334);
  }
  plVar2 = (longlong *)(param_1 + 0x1c8);
  if (*(code **)(*plVar2 + 8) == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    uVar5 = *(undefined8 *)(param_1 + 0x1d0);
  }
  else {
    uVar5 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  lVar4 = (**(code **)(*plVar2 + 8))(plVar2);
  FUN_1813f2500(uVar5,&local_res8,*(float *)(lVar4 + 0x88) * DAT_1824c441c);
  FUN_181296c00(param_2,DAT_18262bb5c);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_res8);
  local_28 = *(int *)(param_1 + 0x21c);
  iStack_24 = *(int *)(param_1 + 0x220);
  iStack_20 = *(int *)(param_1 + 0x224);
  iStack_1c = *(int *)(param_1 + 0x228);
  fStack_2c = (float)iStack_1c;
  fStack_30 = (float)iStack_20;
  fStack_34 = (float)iStack_24;
  local_38 = (float)local_28;
  FUN_1812963b0(param_2,param_1 + 8,&local_38,0x21,1);
  if (*(char *)(param_1 + 0x218) != '\0') {
    FUN_181295ed0(param_2,param_1 + 0x1f0);
  }
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 1814dc080 size=498 ############

void FUN_1814dc080(longlong param_1,longlong param_2)

{
  int iVar1;
  undefined1 uVar2;
  uint uVar3;
  int iVar4;
  double dVar5;
  float fVar6;
  undefined4 local_res8;
  ulonglong local_58;
  int iStack_50;
  float fStack_4c;
  
  iVar1 = *(int *)(param_1 + 0x2c);
  uVar3 = (uint)((float)*(int *)(param_1 + 0x28) * *(float *)(param_1 + 0xc4));
  iVar4 = (int)((float)*(int *)(param_1 + 0x28) * *(float *)(param_1 + 0xc0));
  if (*(char *)(param_1 + 0x3dd) == '\0') {
    fVar6 = *(float *)(param_1 + 200) * DAT_1824c3d3c;
    if (0.0 < fVar6) {
      if (fVar6 < DAT_1824c3ea4) {
        uVar2 = (undefined1)(int)(fVar6 * DAT_1824c454c);
      }
      else {
        uVar2 = 0xff;
      }
    }
    else {
      uVar2 = 0;
    }
    local_res8._0_3_ = (undefined3)DAT_18262bb70;
    local_res8 = CONCAT13(uVar2,(undefined3)local_res8);
    FUN_181296c00(param_2,local_res8);
    _iStack_50 = CONCAT44(iVar1,iVar4);
    local_58 = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_58,0);
    local_58 = (ulonglong)uVar3;
    _iStack_50 = CONCAT44(iVar1,*(int *)(param_1 + 0x28) - uVar3);
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_58,0);
  }
  else {
    dVar5 = (double)((float)(*(uint *)(param_1 + 0x3d8) >> 0x18) * *(float *)(param_1 + 200)) +
            DAT_1824c4520;
    uVar2 = 0xff;
    if (SUB84(dVar5,0) < 0xff) {
      uVar2 = SUB81(dVar5,0);
    }
    local_res8._0_3_ = (undefined3)*(uint *)(param_1 + 0x3d8);
    local_res8 = CONCAT13(uVar2,(undefined3)local_res8);
    FUN_181296c00(param_2,local_res8);
    fVar6 = (float)iVar1;
    if (0.0 < fVar6) {
      local_58 = (ulonglong)(uint)(float)iVar4;
      _iStack_50 = CONCAT44(fVar6 - 0.0,0x3f800000);
      (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_58);
      if (0.0 < fVar6) {
        _iStack_50 = CONCAT44(fVar6 - 0.0,0x3f800000);
        local_58 = (ulonglong)(uint)(float)(int)uVar3;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xa0))(*(longlong **)(param_2 + 8),&local_58);
      }
    }
  }
  return;
}



############ FUN_ 1814ea2c0 size=786 ############

void FUN_1814ea2c0(longlong param_1,longlong param_2)

{
  float *pfVar1;
  undefined1 auVar2 [16];
  uint uVar3;
  longlong *plVar4;
  undefined4 uVar5;
  longlong lVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  int iVar11;
  float fVar12;
  uint uVar13;
  longlong lVar14;
  undefined8 uVar15;
  int iVar16;
  int iVar17;
  ulonglong uVar18;
  float fVar19;
  int *piVar20;
  float fVar21;
  ulonglong uVar22;
  undefined8 local_res10;
  float local_res18;
  uint local_res20;
  float local_d4;
  float fStack_d0;
  float fStack_cc;
  float fStack_c8;
  uint local_c4;
  ulonglong local_c0;
  longlong local_b8;
  longlong local_b0;
  ulonglong local_a8;
  float local_98;
  float fStack_94;
  float fStack_90;
  float fStack_8c;
  undefined1 local_88 [4];
  undefined4 local_84;
  longlong local_80;
  float local_78;
  float fStack_74;
  float fStack_70;
  float fStack_6c;
  
  auVar2 = *(undefined1 (*) [16])(param_1 + 0x20);
  local_res20 = *(uint *)(param_1 + 0xf0);
  uVar3 = *(uint *)(param_1 + 0xf4);
  lVar14 = *(longlong *)(param_1 + 0x118);
  iVar17 = auVar2._0_4_ + -8 + auVar2._8_4_;
  iVar11 = 0;
  if (0 < iVar17) {
    iVar11 = iVar17;
  }
  iVar16 = auVar2._12_4_ + -8;
  iVar17 = 0;
  if (0 < iVar16) {
    iVar17 = iVar16;
  }
  fVar12 = (float)(iVar11 / (int)local_res20);
  uVar13 = (uint)((longlong)iVar17 / (longlong)(int)uVar3);
  uVar22 = (longlong)iVar17 / (longlong)(int)uVar3 & 0xffffffff;
  local_res10 = param_2;
  local_res18 = fVar12;
  local_c4 = uVar13;
  local_80 = lVar14;
  FUN_181296c00(param_2,DAT_1826741dc);
  if (0 < (int)uVar3) {
    uVar18 = (ulonglong)(int)local_res20;
    lVar14 = uVar18 << 4;
    local_a8 = (ulonglong)uVar3;
    fVar19 = (float)((uVar3 - 1) * uVar13);
    local_b0 = 0;
    local_b8 = lVar14;
    do {
      fVar7 = local_res18;
      if (0 < (int)uVar18) {
        fStack_90 = 0.0;
        if (0 < (int)fVar12) {
          fStack_90 = fVar12;
        }
        fVar12 = 0.0;
        if (0 < (int)(float)uVar22) {
          fVar12 = (float)uVar22;
        }
        fStack_cc = (float)(int)fStack_90;
        local_c0 = uVar18 & 0xffffffff;
        fVar21 = 0.0;
        lVar14 = local_b0;
        fStack_94 = fVar19;
        fStack_8c = fVar12;
        do {
          fVar10 = fStack_8c;
          fVar9 = fStack_90;
          fVar8 = fStack_94;
          uVar5 = DAT_182674278;
          pfVar1 = (float *)(lVar14 + *(longlong *)(param_1 + 0x120));
          *pfVar1 = fVar21;
          pfVar1[1] = fStack_94;
          pfVar1[2] = fStack_90;
          pfVar1[3] = fStack_8c;
          local_98 = fVar21;
          uVar15 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
          FUN_1813f22a0(uVar15,local_88,uVar5,param_1);
          lVar6 = local_res10;
          FUN_181296c00(local_res10,local_84);
          plVar4 = *(longlong **)(lVar6 + 8);
          fStack_74 = fVar8;
          fStack_70 = fVar9;
          fStack_6c = fVar10;
          local_78 = fVar21;
          (**(code **)(*plVar4 + 0xa8))(plVar4,&local_78,0);
          local_d4 = (float)(int)fVar21;
          fStack_c8 = (float)(int)fVar12;
          fStack_d0 = (float)(int)fVar8;
          fStack_70 = fStack_cc;
          local_78 = local_d4;
          fStack_74 = fStack_d0;
          fStack_6c = fStack_c8;
          FUN_181295950(lVar6,&local_78);
          fVar21 = (float)((int)fVar21 + (int)fVar7);
          lVar14 = lVar14 + 0x10;
          local_c0 = local_c0 - 1;
        } while (local_c0 != 0);
        uVar18 = (ulonglong)local_res20;
        uVar22 = (ulonglong)local_c4;
        local_c0 = 0;
        lVar14 = local_b8;
        fVar12 = local_res18;
      }
      fVar19 = (float)((int)fVar19 - uVar13);
      local_b0 = local_b0 + lVar14;
      local_a8 = local_a8 - 1;
    } while (local_a8 != 0);
    local_a8 = 0;
    param_2 = local_res10;
    lVar14 = local_80;
  }
  uVar5 = DAT_182674258;
  piVar20 = (int *)(lVar14 * 0x10 + *(longlong *)(param_1 + 0x120));
  iVar11 = piVar20[2];
  if (piVar20[3] < piVar20[2]) {
    iVar11 = piVar20[3];
  }
  uVar15 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  FUN_1813f22a0(uVar15,&local_res10,uVar5,param_1);
  FUN_181296c00(param_2,local_res10._4_4_);
  local_d4 = (float)((piVar20[2] - iVar11) / 2 + *piVar20);
  fStack_d0 = (float)((piVar20[3] - iVar11) / 2 + piVar20[1]);
  fStack_cc = (float)iVar11;
  fStack_c8 = (float)iVar11;
  (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_d4,0);
  return;
}



############ FUN_ 1814eb910 size=1490 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1814eb910(longlong param_1,longlong param_2,char param_3,char param_4)

{
  int *piVar1;
  longlong *plVar2;
  float fVar3;
  float fVar4;
  int iVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  bool bVar8;
  double dVar9;
  char cVar10;
  longlong lVar11;
  undefined1 uVar12;
  undefined4 uVar13;
  float fVar14;
  double dVar15;
  undefined4 local_res8;
  undefined4 local_res10;
  undefined8 *local_158;
  int local_150;
  undefined4 local_14c;
  undefined4 local_148;
  int local_144;
  undefined1 local_140 [8];
  float local_138;
  int local_130;
  int iStack_12c;
  undefined8 local_128;
  int iStack_120;
  int iStack_11c;
  double local_118;
  double local_110;
  double local_108;
  double local_100;
  float local_f8;
  float fStack_f4;
  float fStack_f0;
  float fStack_ec;
  void *local_e8;
  ulonglong local_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined1 local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  float local_a8;
  float fStack_a4;
  float fStack_a0;
  float fStack_9c;
  
  local_c0 = 0xfffffffffffffffe;
  local_14c = 0;
  local_144 = *(int *)(param_1 + 0x2c);
  local_150 = *(int *)(param_1 + 0x28);
  local_128 = 0;
  local_res8 = *(uint *)(param_1 + 0x21c);
  plVar2 = (longlong *)(param_1 + 0x1c8);
  iStack_120 = local_150;
  iStack_11c = local_144;
  if (*(code **)(*plVar2 + 8) == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    lVar11 = *(longlong *)(param_1 + 0x1d0);
  }
  else {
    lVar11 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  local_158 = (undefined8 *)**(longlong **)(lVar11 + 0x78);
  if (local_158 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_158 + 1) = *(int *)(local_158 + 1) + 1;
    UNLOCK();
  }
  local_14c = 4;
  FUN_1812520a0(&local_158);
  dVar9 = DAT_1824c4520;
  if (*(char *)(param_1 + 0x200) == '\0') {
    uVar13 = *(undefined4 *)(param_1 + 0x220);
    if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
       ((*(longlong *)(param_1 + 0x18) == 0 || (cVar10 = FUN_18133eaa0(), cVar10 != '\0')))) {
      cVar10 = FUN_1804d6ee0(param_1);
      if (cVar10 == '\0') {
        if (param_3 != '\0') {
          uVar13 = *(undefined4 *)(param_1 + 0x228);
        }
      }
      else {
        uVar13 = *(undefined4 *)(param_1 + 0x22c);
      }
    }
    else {
      local_118 = (double)((float)(local_res8 >> 0x18) * DAT_1824c3d8c) + dVar9;
      uVar12 = 0xff;
      if (SUB84(local_118,0) < 0xff) {
        uVar12 = SUB81(local_118,0);
      }
      local_res8 = CONCAT13(uVar12,(undefined3)local_res8);
      uVar13 = *(undefined4 *)(param_1 + 0x224);
    }
    fVar14 = cosf((*(float *)(param_1 + 0x234) * DAT_1824c4334 + DAT_1824c3ea4) * DAT_1824c42e0);
    FUN_18049fa40(local_140,uVar13);
    local_138 = (float)((double)(fVar14 * DAT_1824c3d74) + _DAT_1824c41a0) * local_138;
    if (DAT_1824c3ea4 <= local_138) {
      local_138 = DAT_1824c3ea4;
    }
    FUN_18049fbb0(&local_148);
    FUN_181296c00(param_2,local_148);
    if (0.0 < *(float *)(param_1 + 0x230)) {
      if (((*(char *)(param_1 + 0x208) != '\0') || (*(char *)(param_1 + 0x209) != '\0')) ||
         ((*(char *)(param_1 + 0x20a) != '\0' || (bVar8 = false, *(char *)(param_1 + 0x20b) != '\0')
          ))) {
        bVar8 = true;
      }
      if (bVar8) {
        (**(code **)(*plVar2 + 8))(plVar2);
        local_e8 = (void *)0x0;
        local_e0 = 0;
        local_d8 = 0;
        uStack_d0 = 0;
        local_c8 = 1;
        FUN_18129d5a0(&local_e8);
        FUN_181295ed0(param_2,&local_e8);
        local_e0 = local_e0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
        free(local_e8);
      }
    }
    uStack_b0 = CONCAT44(iStack_11c,iStack_120);
    local_b8 = local_128;
    (**(code **)(**(longlong **)(param_2 + 8) + 0xa8))(*(longlong **)(param_2 + 8),&local_b8,0);
  }
  else {
    FUN_181252760(&local_158);
    *(char *)(local_158 + 7) = param_3;
    plVar6 = (longlong *)local_158[2];
    if (((plVar6 != (longlong *)0x0) &&
        (*(code **)(*plVar6 + 8) !=
         .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
         vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
       (cVar10 = (**(code **)(*plVar6 + 8))(plVar6,&local_158), cVar10 == '\0')) {
      puVar7 = (undefined8 *)local_158[2];
      local_158[2] = 0;
      if (puVar7 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar7 + 1);
        iVar5 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar5 == 1) {
          (**(code **)*puVar7)(puVar7,1);
        }
      }
    }
  }
  dVar15 = DAT_1824c4140;
  if (param_4 != '\0') {
    dVar15 = DAT_1824c40f0;
  }
  local_110 = (double)((float)(local_res8 >> 0x18) * (float)dVar15) + dVar9;
  uVar12 = 0xff;
  if (SUB84(local_110,0) < 0xff) {
    uVar12 = SUB81(local_110,0);
  }
  local_res10 = CONCAT13(uVar12,(int3)local_res8);
  FUN_181296c00(param_2,local_res10);
  if (*(longlong *)(param_1 + 0x1f8) != 0) {
    FUN_181295ed0(param_2);
  }
  fVar14 = *(float *)(param_1 + 0x214);
  lVar11 = (**(code **)(*plVar2 + 8))(plVar2);
  fVar3 = *(float *)(lVar11 + 0x88);
  fVar4 = *(float *)(param_1 + 0x218);
  lVar11 = (**(code **)(*plVar2 + 8))(plVar2);
  local_100 = (double)(*(float *)(lVar11 + 0x88) * fVar4 + 0.0) + dVar9;
  local_108 = (double)(fVar3 * fVar14 + 0.0) + dVar9;
  iVar5 = local_108._0_4_;
  local_130 = local_108._0_4_;
  iStack_12c = local_100._0_4_;
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_158);
  if (*(int *)(param_1 + 0x20c) == 1) {
    cVar10 = '$';
  }
  else {
    cVar10 = (*(int *)(param_1 + 0x20c) != 0) + '!';
  }
  fStack_ec = (float)iStack_11c;
  fStack_f0 = (float)local_150;
  fStack_f4 = (float)iStack_12c;
  local_f8 = (float)iVar5;
  local_a8 = local_f8;
  fStack_a4 = fStack_f4;
  fStack_a0 = fStack_f0;
  fStack_9c = fStack_ec;
  FUN_1812963b0(param_2,param_1 + 0x158,&local_a8,cVar10,1);
  if (local_158 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_158 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_158)(local_158,1);
    }
  }
  return;
}



############ FUN_ 181560880 size=351 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181560880(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,float param_6,float param_7)

{
  float fVar1;
  longlong lVar2;
  undefined4 local_90;
  undefined8 local_8c;
  undefined8 local_84;
  undefined8 uStack_7c;
  ulonglong local_74;
  void *local_68;
  ulonglong local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  
  local_68 = (void *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  lVar2 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
  fVar1 = *(float *)(lVar2 + 0x88);
  lVar2 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
  if (0.0 < param_6) {
    FUN_18129cdf0(&local_68,param_3,param_4,param_6,param_6,0,
                  param_7 - *(float *)(lVar2 + 0x88) * DAT_1824c3c7c,fVar1 * DAT_1824c3c90 + param_7
                  ,1);
  }
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xa18));
  local_84 = _DAT_1824c4780;
  uStack_7c = _UNK_1824c4788;
  local_74 = (ulonglong)DAT_1824c3ea4;
  local_90 = param_5;
  local_8c = 1;
  FUN_181295d20(param_2,&local_68,&local_90,&local_84);
  local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 181560a10 size=1239 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181560a10(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined4 param_5,float param_6)

{
  float fVar1;
  void **ppvVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  undefined4 local_108;
  undefined8 local_104;
  undefined8 local_fc;
  undefined8 uStack_f4;
  ulonglong local_ec;
  void *local_e0;
  ulonglong local_d8;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined1 local_c0;
  void *local_b8;
  ulonglong local_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined1 local_98;
  undefined8 local_90;
  
  fVar1 = DAT_1824c3d8c;
  local_90 = 0xfffffffffffffffe;
  fVar5 = *(float *)(param_1 + 0x9e0);
  fVar4 = *(float *)(param_1 + 0x9e4);
  if (*(int *)(param_1 + 0xa04) == 0) {
    local_e0 = (void *)0x0;
    local_d8 = 0;
    local_d0 = 0;
    uStack_c8 = 0;
    local_c0 = 1;
    if (0.0 < param_6) {
      FUN_18129cdf0(&local_e0,param_3,param_4,param_6,param_6,0,fVar5,
                    (fVar4 - fVar5) * *(float *)(param_1 + 0x9ec) + fVar5,1);
    }
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xa14));
    local_fc = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
    uStack_f4 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
    local_ec = (ulonglong)(uint)DAT_1824c3ea4;
    local_108 = param_5;
    local_104 = 1;
    FUN_181295d20(param_2,&local_e0,&local_108,&local_fc);
LAB_181560eda:
    local_d8 = local_d8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_e0);
  }
  fVar6 = *(float *)(param_1 + 0x9ec);
  if (*(int *)(param_1 + 0xa04) == 1) {
    if (fVar6 <= DAT_1824c3d8c) {
      if (fVar6 < DAT_1824c3d8c) {
        fVar4 = (float)((double)fVar4 - (double)(fVar4 - fVar5) * (DAT_1824c4050 - (double)fVar6));
      }
    }
    else {
      fVar5 = (float)((double)(fVar4 - fVar5) * ((double)fVar6 - DAT_1824c4050) + (double)fVar5);
    }
    local_e0 = (void *)0x0;
    local_d8 = 0;
    local_d0 = 0;
    uStack_c8 = 0;
    local_c0 = 1;
    if (0.0 < param_6) {
      FUN_18129cdf0(&local_e0,param_3,param_4,param_6,param_6,0,fVar5,fVar4,1);
    }
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xa14));
    local_fc = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
    uStack_f4 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
    local_ec = (ulonglong)(uint)DAT_1824c3ea4;
    local_108 = param_5;
    local_104 = 1;
    FUN_181295d20(param_2,&local_e0,&local_108,&local_fc);
    FUN_181560880(param_1,param_2,param_3,param_4,param_5,param_6,DAT_1824c43a4);
    goto LAB_181560eda;
  }
  fVar3 = fVar6 * DAT_1824c3d8c + DAT_1824c3d3c;
  local_e0 = (void *)0x0;
  local_d8 = 0;
  local_d0 = 0;
  uStack_c8 = 0;
  local_c0 = 1;
  local_b8 = (void *)0x0;
  local_b0 = 0;
  local_a8 = 0;
  uStack_a0 = 0;
  local_98 = 1;
  if (fVar6 <= DAT_1824c3d8c) {
    fVar6 = (fVar4 - fVar5) * (DAT_1824c3d8c - fVar3);
    if (param_6 <= 0.0) goto LAB_181560dda;
    fVar3 = fVar6 + fVar5;
    ppvVar2 = &local_e0;
  }
  else {
    fVar6 = (fVar4 - fVar5) * (DAT_1824c3ea4 - fVar3);
    if (param_6 <= 0.0) goto LAB_181560dda;
    FUN_18129cdf0(&local_e0,param_3,param_4,param_6,param_6,0,fVar5,fVar6 + fVar5,1);
    ppvVar2 = &local_b8;
    fVar3 = fVar4;
  }
  FUN_18129cdf0(ppvVar2,param_3,param_4,param_6,param_6,0,fVar3,fVar4 - fVar6,1);
LAB_181560dda:
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0xa14));
  local_fc = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
  uStack_f4 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
  local_ec = 0x3f800000;
  local_108 = param_5;
  local_104 = 1;
  FUN_181295d20(param_2,&local_e0,&local_108,&local_fc);
  local_fc = CONCAT44(_UNK_1824c4784,_DAT_1824c4780);
  uStack_f4 = CONCAT44(_UNK_1824c478c,_UNK_1824c4788);
  local_ec = 0x3f800000;
  local_108 = param_5;
  local_104 = 1;
  FUN_181295d20(param_2,&local_b8,&local_108,&local_fc);
  fVar4 = DAT_1824c42e0;
  FUN_181560880(param_1,param_2,param_3,param_4,param_5,param_6,fVar5 * fVar1 + DAT_1824c42e0);
  FUN_181560880(param_1,param_2,param_3,param_4,param_5,param_6,fVar4 - fVar5 * fVar1);
  local_b0 = local_b0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 1815a9ca0 size=999 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815a9ca0(longlong param_1,longlong param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  char cVar6;
  int iVar7;
  float *pfVar8;
  float *pfVar9;
  bool bVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  undefined4 local_res8;
  float local_128;
  float fStack_124;
  float fStack_120;
  float fStack_11c;
  undefined8 local_118;
  float local_108;
  float fStack_104;
  float fStack_100;
  float fStack_fc;
  undefined8 local_f8;
  float *local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 uStack_d8;
  undefined1 local_d0;
  undefined8 local_c8;
  
  fVar5 = DAT_1824c4608;
  fVar4 = DAT_1824c4604;
  fVar3 = DAT_1824c4600;
  fVar2 = DAT_1824c45fc;
  fVar1 = DAT_1824c3d8c;
  local_c8 = 0xfffffffffffffffe;
  fVar13 = (float)*(int *)(param_1 + 0x2c);
  fVar11 = (float)*(int *)(param_1 + 0x28);
  fVar14 = fVar13 * _DAT_1824c3ca4;
  fVar12 = fVar11 * *(float *)(param_1 + 0x3d0) * _DAT_1824c3de8;
  if (*(char *)(param_1 + 0x3cc) == '\0') {
    local_f0 = (float *)0x0;
    local_e8 = 0;
    local_e0 = 0;
    uStack_d8 = 0;
    local_d0 = 1;
    bVar10 = false;
    if (*(longlong *)(param_1 + 0x348) != 0) {
      iVar7 = FUN_1811bf620();
      bVar10 = iVar7 == 0;
    }
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x310));
    if (bVar10) {
      fStack_120 = fVar12 - fVar14;
      fStack_124 = (fVar13 - fStack_120) * fVar1 + 0.0;
      local_128 = (fVar11 - fStack_120) * fVar1 + 0.0;
      fStack_11c = fStack_120;
      FUN_18129d1e0(&local_f0,&local_128);
      local_128 = fVar14;
    }
    else {
      fStack_124 = (fVar13 - fVar12) * fVar1 + 0.0;
      local_128 = (fVar11 - fVar12) * fVar1 + 0.0;
      fStack_120 = fVar12;
      fStack_11c = fVar12;
      FUN_18129d1e0(&local_f0,&local_128);
      cVar6 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
      if (cVar6 == '\0') {
        pfVar9 = local_f0;
        while (pfVar9 != local_f0 + local_e8._4_4_) {
          fVar1 = *pfVar9;
          if (fVar1 == fVar3) {
            pfVar9 = pfVar9 + 3;
          }
          else {
            if (((fVar1 == fVar2) || (fVar1 == fVar4)) || (fVar1 == fVar5)) {
              local_108 = _DAT_1824c4780;
              fStack_104 = _UNK_1824c4784;
              fStack_100 = _UNK_1824c4788;
              fStack_fc = _UNK_1824c478c;
              local_f8 = 0x3f800000;
              (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                        (*(longlong **)(param_2 + 8),&local_f0,&local_108);
              break;
            }
            pfVar9 = pfVar9 + 1;
          }
        }
      }
      local_res8 = CONCAT13(0xb3,(int3)DAT_18262bb68);
      FUN_181296c00(param_2,local_res8);
      local_128 = 1.0;
    }
    fStack_120 = 0.0;
    fStack_124 = 0.0;
    local_108 = _DAT_1824c4780;
    fStack_104 = _UNK_1824c4784;
    fStack_100 = _UNK_1824c4788;
    fStack_fc = _UNK_1824c478c;
    local_f8 = 0x3f800000;
    FUN_181295d20(param_2,&local_f0,&local_128,&local_108);
    local_e8 = local_e8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_f0);
  }
  local_f0 = (float *)0x0;
  local_e8 = 0;
  local_e0 = 0;
  uStack_d8 = 0;
  local_d0 = 1;
  fStack_120 = (float)((double)fVar14 * _DAT_1824c41a0) * DAT_1824c42d0 + fVar12;
  fStack_124 = (fVar13 - fStack_120) * DAT_1824c3d8c + 0.0;
  local_128 = (fVar11 - fStack_120) * DAT_1824c3d8c + 0.0;
  fStack_11c = fStack_120;
  FUN_18129d1e0(&local_f0,&local_128);
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x314));
  cVar6 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar6 == '\0') {
    pfVar9 = local_f0 + local_e8._4_4_;
    bVar10 = local_f0 == pfVar9;
    pfVar8 = local_f0;
    while (!bVar10) {
      fVar1 = *pfVar8;
      if (fVar1 == fVar3) {
        pfVar8 = pfVar8 + 3;
        bVar10 = pfVar8 == pfVar9;
      }
      else {
        if (((fVar1 == fVar2) || (fVar1 == fVar4)) || (fVar1 == fVar5)) {
          local_128 = _DAT_1824c4780;
          fStack_124 = _UNK_1824c4784;
          fStack_120 = _UNK_1824c4788;
          fStack_11c = _UNK_1824c478c;
          local_118 = 0x3f800000;
          (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                    (*(longlong **)(param_2 + 8),&local_f0,&local_128);
          break;
        }
        pfVar8 = pfVar8 + 1;
        bVar10 = pfVar8 == pfVar9;
      }
    }
  }
  local_e8 = local_e8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_f0);
}



############ FUN_ 1815cb0d0 size=2683 ############

/* WARNING: Instruction at (ram,0x0001815cb373) overlaps instruction at (ram,0x0001815cb372)
    */
/* WARNING: Removing unreachable block (ram,0x0001815cba0c) */

ulonglong FUN_1815cb0d0(ulonglong param_1,ulonglong param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  undefined8 uVar2;
  undefined4 *puVar3;
  uint uVar4;
  uint uVar5;
  ulonglong uVar6;
  uint *puVar7;
  longlong *plVar8;
  int iVar9;
  uint uVar10;
  undefined4 *puVar11;
  IMAGE_DOS_HEADER *pIVar12;
  uint uVar13;
  uint uVar14;
  longlong lVar15;
  ulonglong uVar16;
  int unaff_retaddr;
  undefined1 auStack_1f8 [32];
  uint local_1d8;
  uint local_1d4;
  uint local_1d0;
  undefined8 local_1c8;
  undefined8 local_1c0;
  undefined *local_1b8;
  uint local_1ac;
  undefined8 local_1a8;
  undefined4 local_1a0;
  undefined4 local_190;
  undefined4 local_18c;
  undefined4 local_188;
  undefined4 local_184;
  uint local_180;
  undefined4 local_17c;
  uint local_178;
  ulonglong local_170;
  ulonglong local_168;
  longlong local_138 [5];
  undefined4 local_110;
  undefined4 local_10c;
  undefined4 local_108;
  uint local_104;
  int local_100;
  uint local_fc;
  undefined4 local_f8;
  undefined4 local_f4;
  undefined8 local_f0;
  undefined4 local_78 [14];
  ulonglong local_40;
  
  local_f0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  local_17c = 0x810;
  uVar4 = (uint)&stack0x00000000 & 0x33f;
  iVar9 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_178 = 0x7e75 >> ((byte)(((iVar9 >> 1) - (iVar9 >> 3)) + iVar9 * 0x55555555 >> 0x1e) & 0x1f)
              ^ 0x7415;
  local_1a8 = &IMAGE_DOS_HEADER_180000000;
  local_1c0 = 0x1600;
  puVar3 = (undefined4 *)0x180b95860;
  local_1b8 = &DAT_180b96e60;
  local_1c8 = 0x17fbc08503886140;
  uVar16 = param_2;
  do {
    uVar16 = -((uVar16 ^ 0xffffffffffffffff) + 1);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    local_190 = param_3;
    local_18c = param_4;
    local_170 = param_1;
    local_168 = param_2;
  } while (uVar4 != 0);
  do {
    uVar6 = 0x4c0c;
    FUN_1815cd23e();
    if ((uVar6 & 0x40) == 0) {
      uVar6 = param_1;
    }
    FUN_1815ca843();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    param_1 = uVar6;
  } while (uVar4 != 0);
  FUN_181296c00(uVar16,*(undefined4 *)(uVar6 + 0x160));
  local_1d8 = 0xb3;
  do {
    plVar8 = local_138;
    puVar11 = &local_10c;
    puVar7 = &local_1d4;
    FUN_1815c9e99();
    *puVar7 = 0xb4511964;
    *puVar11 = 3;
    *plVar8 = 0x1815cb3d9;
    pIVar12 = local_1a8;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (local_1d4 >> 1 | (uint)((local_1d4 & 1) != 0) << 0x1f) + 0xbae9819b;
  uVar4 = (uVar4 * 0x100 | uVar4 >> 0x18) & 0xe21de21d |
          (uVar4 >> 8 | uVar4 * 0x1000000) & 0x1de21de2;
  uVar10 = uVar4 >> 0x1c | uVar4 << 4;
  uVar4 = ((uVar4 & 0xfffffff) >> 0x11 ^ uVar10) >> 3 & 0x7f;
  uVar10 = (uVar4 << 0x15 | uVar4) << 3 ^ uVar10;
  uVar4 = uVar10 >> 0xc;
  uVar10 = uVar4 | uVar10 << 0x14;
  uVar4 = (uVar10 >> 0x10 | uVar4 << 0x10) & 0x8bc97436 |
          (uVar4 << 0x10 | uVar10 >> 0x10) & 0x74368bc9;
  uVar10 = (uVar4 << 4 | uVar4 >> 0x1c) & 0xc3c3c3c3 | (uVar4 >> 4 | uVar4 << 0x1c) & 0x3c3c3c3c;
  uVar4 = uVar10 >> 0x11 ^ uVar10;
  do {
    local_110 = 0;
    local_138[1] = 0x1815cb4b7;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  lVar15 = (longlong)(int)(uVar10 ^ (uVar4 << 0x11 | uVar4 & 0x7fff));
  local_1d4 = 0;
  local_1a0 = 0;
  plVar8 = (longlong *)(lVar15 + 4 + local_138[0]);
  *plVar8 = *plVar8 + (ulonglong)((uint)((ulonglong)dvs_0x811a06e9_mfort6317_ >> 0x15) & 0x342000e0)
  ;
  do {
    uVar2 = rdtsc();
    local_180 = (int)uVar2 + (int)((ulonglong)uVar2 >> 0x20) * 2;
    uVar16 = (ulonglong)local_180 ^ (ulonglong)local_180 * 0x100 - 0x471b7108;
    uVar16 = uVar16 ^ uVar16 << 8;
    uVar4 = (int)(uVar16 >> 0xe) - (int)(uVar16 >> 0x18);
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  piVar1 = (int *)(lVar15 + 8 + local_138[0]);
  *piVar1 = *piVar1 + (uVar4 ^ 0x6a94b391);
  piVar1 = (int *)(lVar15 + 4 + local_138[0]);
  *piVar1 = *piVar1 + (uVar4 ^ 0xa0af71);
  uVar16 = *(ulonglong *)(lVar15 + 4 + local_138[0]);
  uVar4 = (uint)((uVar16 >> 0xe ^ uVar16) >> 0xe) & 0x3fff;
  uVar6 = ((ulonglong)uVar4 << 0xe | (ulonglong)uVar4) << 0xe ^ uVar16;
  uVar16 = ((uVar6 >> 8 | uVar16 << 0x38) & 0xbf40bf40bf40bf40 |
           (uVar6 << 8 | uVar16 >> 0x38) & 0x40bf40bf40bf40bf) ^ 0xe3289d009b58b0ec;
  uVar16 = (uVar16 >> 0x32 | uVar16 << 0xe) + 0xcd5ad76a5c7a8a0c;
  uVar16 = ((uVar16 >> 0x10 | uVar16 << 0x30) & 0xf2880d77f2880d77 |
           (uVar16 * 0x10000 | uVar16 >> 0x30) & 0xd77f2880d77f288) + 0x820b207f49eab4a0;
  uVar16 = (uVar16 >> 0x10 | uVar16 << 0x30) & 0xf96b0694f96b0694 |
           (uVar16 * 0x10000 | uVar16 >> 0x30) & 0x694f96b0694f96b;
  uVar16 = (uVar16 & 0x3333333333333333) << 2 | uVar16 >> 2 & 0x3333333333333333;
  *(ulonglong *)(lVar15 + 4 + local_138[0]) = uVar16;
  dvs_0x811a06e9_mfort6317_ =
       (uint *)((longlong)dvs_0x811a06e9_mfort6317_ +
               (ulonglong)((uint)(uVar16 >> 0x17) & 0x14160034));
  local_1d0 = (uint)(*(ulonglong *)(lVar15 + 4 + local_138[0]) >> 3) & 0x7fffffff;
  local_1ac = (uint)((ulonglong)*(undefined8 *)(lVar15 + 4 + local_138[0]) >> 0x18) ^ 0x5991f192;
  uVar16 = *(ulonglong *)(lVar15 + 4 + local_138[0]) ^ 0x48858e2e916f0dd4;
  do {
    local_188 = 0x4246a95b;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_f8 = 0xd01f52c0;
  local_f4 = 0xba1d6772;
  uVar10 = (uint)uVar16 ^ local_1ac;
  uVar4 = (uVar10 & 0x6593f979 ^ local_1ac) + 0x4ed1481b;
  uVar10 = (local_1ac ^ uVar10 & 0x9a6c0686) + 0xaef7aa14;
  iVar9 = (int)(uVar16 >> 0x20);
  uVar13 = iVar9 + 0x7bc739d3;
  uVar5 = (uVar4 * 0x100 | uVar4 >> 0x18) & 0x9a659a65 |
          (uVar4 >> 8 | uVar4 * 0x1000000) & 0x659a659a;
  uVar10 = ((uVar10 * 0x10000 | uVar10 >> 0x10) & 0xc73b38c4 |
           (uVar10 >> 0x10 | uVar10 * 0x10000) & 0x38c4c73b) ^ uVar5;
  uVar4 = uVar10 & 0x8a578475 ^ uVar5;
  uVar10 = uVar10 & 0x75a87b8a ^ uVar5 ^ uVar4;
  uVar14 = uVar10 & 0xbbb9a4a9 ^ uVar4;
  uVar4 = uVar10 & 0x44465b56 ^ uVar4;
  uVar10 = uVar4 >> 0x19 | uVar4 << 7;
  uVar4 = uVar13 >> 2 & 0xcccccccc | uVar13 * 0x40000000 | uVar13 * 4 & 0x33333333 | uVar13 >> 0x1e;
  uVar5 = (uVar4 >> 10 | uVar4 << 0x16) ^ uVar10;
  uVar4 = uVar5 & 0xddffbe9c ^ uVar10;
  uVar10 = uVar5 & 0x22004163 ^ uVar10 ^ uVar4;
  local_184 = 0xfb14be6e;
  uVar5 = uVar14 >> 0x1f | uVar14 << 1;
  local_104 = uVar5 ^ 0xea2cbcd1;
  local_1a8 = (IMAGE_DOS_HEADER *)(CONCAT44(local_1a8._4_4_,uVar5) ^ 0xea2cbcd1);
  local_100 = (uVar10 & 0x7310039d ^ uVar4) + 0x6bb1bcf9;
  local_1c0 = CONCAT44(iVar9,local_100);
  local_fc = uVar10 & 0x8ceffc62 ^ uVar4 ^ 0xaa7d1554;
  if (local_1b8 == (undefined *)0x180b95860) {
    return (ulonglong)local_1d8;
  }
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  if ((pIVar12 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar15._0_1_ = pIVar12->e_magic[0], lVar15._1_1_ = pIVar12->e_magic[1],
     lVar15._2_2_ = pIVar12->e_cblp, lVar15._4_2_ = pIVar12->e_cp, lVar15._6_2_ = pIVar12->e_crlc,
     -1 < lVar15)) {
    local_138[2] = 0x2621fc0;
    do {
      if (0x180b95860 < lVar15 + 0x180000008U) {
        if ((-1 < lVar15) &&
           (plVar8 = (longlong *)(lVar15 + 0x180000000), plVar8 < (longlong *)0x180b95864)) {
          puVar3 = local_78;
          local_78[0] = uRam0000000180b95860;
          goto LAB_1815cbac0;
        }
        break;
      }
      lVar15._0_2_ = pIVar12->e_cparhdr;
      lVar15._2_2_ = pIVar12->e_minalloc;
      lVar15._4_2_ = pIVar12->e_maxalloc;
      lVar15._6_2_ = pIVar12->e_ss;
      pIVar12 = (IMAGE_DOS_HEADER *)&pIVar12->e_cparhdr;
    } while (-1 < lVar15);
  }
  goto LAB_1815cbae7;
  while (plVar8 = (longlong *)(lVar15 + 0x180000000), plVar8 < (longlong *)0x180b95864) {
LAB_1815cbac0:
    *(longlong *)(&stack0xffffffffff46a728 + lVar15) = *plVar8 + -0x180000000;
    pIVar12 = (IMAGE_DOS_HEADER *)&pIVar12->e_cparhdr;
    lVar15 = *(longlong *)pIVar12;
    if (lVar15 < 0) break;
  }
LAB_1815cbae7:
  local_1d8 = local_1d8 >> 0x1c ^ local_1d8 << 4;
  local_108 = local_184;
  uVar16 = FUN_1815cbba8(0x4c0c,puVar3);
  return uVar16;
}



############ FUN_ 1815d4570 size=996 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815d4570(longlong param_1,longlong param_2,float *param_3)

{
  code *pcVar1;
  char cVar2;
  longlong lVar3;
  float *pfVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float local_c8;
  undefined8 uStack_c4;
  float fStack_bc;
  undefined8 local_b8;
  float *local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined1 local_88;
  float local_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined8 local_70;
  void *local_68;
  ulonglong local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined1 local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  pcVar1 = *(code **)(*(longlong *)(param_1 + 0x208) + 8);
  if (pcVar1 == FUN_180584490) {
    if (*(longlong *)(param_1 + 0x210) == 0) {
      FUN_1805849b0();
    }
    lVar3 = *(longlong *)(param_1 + 0x210);
  }
  else {
    lVar3 = (*pcVar1)(param_1 + 0x208);
  }
  fVar5 = *(float *)(lVar3 + 0x88);
  fVar9 = fVar5 * *(float *)(param_1 + 0x268);
  if (*(float *)(param_1 + 0x24c) == 0.0) {
    FUN_1812a3160(param_2,*(undefined4 *)(param_1 + 0x254));
    if (0.0 < *(float *)(param_1 + 0x268)) {
      FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x260));
      fVar7 = (float)((uint)(fVar9 * DAT_1824c3d8c) ^ DAT_1824c4f30);
      local_c8 = *param_3 - fVar7;
      fVar5 = fVar7 * DAT_1824c41e0 + param_3[2];
      if (fVar5 <= 0.0) {
        fVar5 = 0.0;
      }
      fStack_bc = fVar7 * DAT_1824c41e0 + param_3[3];
      if (fStack_bc <= 0.0) {
        fStack_bc = 0.0;
      }
      uStack_c4 = CONCAT44(fVar5,param_3[1] - fVar7);
      FUN_181295950(param_2,&local_c8,fVar9);
    }
    return;
  }
  fVar7 = *(float *)(param_1 + 0x24c) * fVar5;
  local_a8 = (float *)0x0;
  local_a0 = 0;
  local_98 = 0;
  uStack_90 = 0;
  local_88 = 1;
  FUN_18129d5a0(&local_a8,*param_3,param_3[1],param_3[2],param_3[3],fVar7,fVar7,
                *(undefined1 *)(param_1 + 0x490),*(undefined1 *)(param_1 + 0x491),
                *(undefined1 *)(param_1 + 0x493),*(undefined1 *)(param_1 + 0x492));
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x254));
  cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x60))();
  if (cVar2 == '\0') {
    for (pfVar4 = local_a8; pfVar4 != local_a8 + local_a0._4_4_; pfVar4 = pfVar4 + 1) {
      fVar7 = *pfVar4;
      if (fVar7 == DAT_1824c4600) {
        pfVar4 = pfVar4 + 2;
      }
      else if (((fVar7 == DAT_1824c45fc) || (fVar7 == DAT_1824c4604)) || (fVar7 == DAT_1824c4608)) {
        local_c8 = _DAT_1824c4780;
        uStack_c4 = CONCAT44(_UNK_1824c4788,_UNK_1824c4784);
        fStack_bc = (float)_UNK_1824c478c;
        local_b8 = 0x3f800000;
        (**(code **)(**(longlong **)(param_2 + 8) + 0xb8))
                  (*(longlong **)(param_2 + 8),&local_a8,&local_c8);
        break;
      }
    }
  }
  if (*(float *)(param_1 + 0x268) <= 0.0) {
    local_a0 = local_a0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_a8);
  }
  fVar7 = (float)((uint)(fVar9 * DAT_1824c3d8c) ^ DAT_1824c4f30);
  fVar8 = fVar7 * DAT_1824c41e0 + param_3[2];
  if (fVar8 <= 0.0) {
    fVar8 = 0.0;
  }
  fVar6 = fVar7 * DAT_1824c41e0 + param_3[3];
  if (fVar6 <= 0.0) {
    fVar6 = 0.0;
  }
  fVar5 = fVar5 * *(float *)(param_1 + 0x24c);
  local_68 = (void *)0x0;
  local_60 = 0;
  local_58 = 0;
  uStack_50 = 0;
  local_48 = 1;
  FUN_18129d5a0(&local_68,*param_3 - fVar7,param_3[1] - fVar7,fVar8,fVar6,fVar5,fVar5,
                *(undefined1 *)(param_1 + 0x490),*(undefined1 *)(param_1 + 0x491),
                *(undefined1 *)(param_1 + 0x493),*(undefined1 *)(param_1 + 0x492));
  FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x260));
  local_80 = _DAT_1824c4780;
  uStack_7c = _UNK_1824c4784;
  uStack_78 = _UNK_1824c4788;
  uStack_74 = _UNK_1824c478c;
  local_70 = 0x3f800000;
  uStack_c4 = 0;
  local_c8 = fVar9;
  FUN_181295d20(param_2,&local_68,&local_c8,&local_80);
  local_60 = local_60 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 1815d4960 size=1223 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815d4960(longlong param_1,longlong param_2)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  float fVar4;
  int iVar5;
  double dVar6;
  char cVar7;
  undefined8 uVar8;
  longlong lVar9;
  float *pfVar10;
  uint *puVar11;
  undefined1 uVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  undefined4 local_res8;
  undefined8 in_stack_fffffffffffffeb8;
  undefined8 *puVar16;
  undefined8 *local_138;
  undefined8 *local_130;
  longlong local_128;
  undefined8 local_120;
  undefined8 uStack_118;
  float local_110;
  float fStack_10c;
  float fStack_108;
  float fStack_104;
  float local_100 [3];
  float local_f4;
  undefined8 local_e8;
  float local_e0;
  float local_dc;
  int local_d8;
  int iStack_d4;
  int iStack_d0;
  int iStack_cc;
  longlong local_c8;
  double local_c0;
  double local_b8;
  double local_b0;
  double local_a8;
  double local_a0;
  undefined8 local_98;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined4 uVar17;
  
  uVar17 = (undefined4)((ulonglong)in_stack_fffffffffffffeb8 >> 0x20);
  local_98 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0x1c8) != 0) {
    return;
  }
  fVar14 = (float)*(int *)(param_1 + 0x2c);
  fVar15 = (float)*(int *)(param_1 + 0x28);
  fVar13 = DAT_1824c3d8c;
  if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_1 + 0x18) == 0 ||
      (cVar7 = FUN_18133eaa0(), fVar13 = DAT_1824c3d8c, cVar7 != '\0')))) {
    fVar13 = DAT_1824c3ea4;
  }
  uVar8 = FUN_1812ea010(param_1,&local_c8);
  FUN_181248e40(uVar8,&local_128);
  puVar11 = (uint *)(local_c8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  plVar2 = (longlong *)(param_1 + 0x208);
  if (*(code **)(*plVar2 + 8) == FUN_180584490) {
    if (*(longlong *)(param_1 + 0x210) == 0) {
      FUN_1805849b0(param_1);
    }
    lVar9 = *(longlong *)(param_1 + 0x210);
  }
  else {
    lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
  }
  fVar4 = *(float *)(param_1 + 0x248);
  local_138 = (undefined8 *)**(longlong **)(lVar9 + 0x68);
  if (local_138 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_138 + 1) = *(int *)(local_138 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_138,fVar14 * fVar4);
  FUN_181251cf0(&local_138,&local_130,DAT_1824c3c7c);
  if (local_138 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_138 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_138)(local_138,1);
    }
  }
  dVar6 = DAT_1824c4520;
  local_c0 = (double)((float)(*(uint *)(param_1 + 0x250) >> 0x18) * fVar13) + DAT_1824c4520;
  uVar12 = 0xff;
  if (SUB84(local_c0,0) < 0xff) {
    uVar12 = SUB81(local_c0,0);
  }
  local_res8 = CONCAT13(uVar12,(int3)*(uint *)(param_1 + 0x250));
  if (*(char *)(param_1 + 0x49d) == '\0') {
    lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar13 = *(float *)(lVar9 + 0x88) * _DAT_1824c46c0;
    local_100[2] = fVar13 * DAT_1824c41e0 + fVar15;
    if (local_100[2] <= 0.0) {
      local_100[2] = 0.0;
    }
    local_f4 = fVar14 + DAT_1824c4640;
    if (local_f4 <= 0.0) {
      local_f4 = 0.0;
    }
    local_100[0] = 0.0 - fVar13;
    local_100[1] = 0.0;
    pfVar10 = local_100;
  }
  else {
    lVar9 = (**(code **)(*plVar2 + 8))();
    fVar13 = (float)((uint)(*(float *)(lVar9 + 0x88) * DAT_1824c41e0) ^ DAT_1824c4f30);
    fStack_108 = fVar13 * DAT_1824c41e0 + fVar15;
    if (fStack_108 <= 0.0) {
      fStack_108 = 0.0;
    }
    fStack_104 = fVar13 * DAT_1824c41e0 + fVar14;
    if (fStack_104 <= 0.0) {
      fStack_104 = 0.0;
    }
    local_110 = 0.0 - fVar13;
    fStack_10c = 0.0 - fVar13;
    pfVar10 = &local_110;
  }
  local_120 = *(undefined8 *)pfVar10;
  uStack_118 = *(undefined8 *)(pfVar10 + 2);
  local_e8 = 0;
  local_e0 = fVar15;
  local_dc = fVar14;
  FUN_1815d4570(param_1,param_2,&local_e8);
  if (*(int *)(param_1 + 0x2c8) == 0) {
    fVar13 = (float)uStack_118;
  }
  else {
    lVar9 = (**(code **)(*plVar2 + 8))(plVar2);
    fVar14 = *(float *)(lVar9 + 0x88) * DAT_1824c43d8;
    fVar13 = (float)uStack_118;
    if (fVar14 <= (float)uStack_118) {
      fVar13 = fVar14;
    }
    fVar13 = (float)uStack_118 - fVar13;
    uStack_118 = CONCAT44(uStack_118._4_4_,fVar13);
  }
  FUN_181296c00(param_2,local_res8);
  if (*(char *)(param_2 + 0x10) != '\0') {
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
  }
  (**(code **)(**(longlong **)(param_2 + 8) + 0xd0))(*(longlong **)(param_2 + 8),&local_130);
  if (*(char *)(param_1 + 0x49d) != '\0') {
    puVar16 = &local_120;
    cVar7 = FUN_1815d4160(param_1,param_2,&local_128,&local_130,puVar16);
    uVar17 = (undefined4)((ulonglong)puVar16 >> 0x20);
    if (cVar7 != '\0') goto LAB_1815d4d74;
  }
  local_a0 = (double)(local_120._4_4_ + uStack_118._4_4_) + dVar6;
  local_a8 = (double)((float)local_120 + fVar13) + dVar6;
  local_b0 = (double)local_120._4_4_ + dVar6;
  local_b8 = (double)(float)local_120 + dVar6;
  local_d8 = SUB84(local_b8,0);
  iStack_d4 = SUB84(local_b0,0);
  iStack_d0 = local_a8._0_4_ - local_d8;
  iStack_cc = local_a0._0_4_ - iStack_d4;
  local_88 = CONCAT44(iStack_d4,local_d8);
  uStack_80 = CONCAT44(iStack_cc,iStack_d0);
  FUN_181296100(param_2,&local_128,&local_88,*(undefined4 *)(param_1 + 0x1c0),
                CONCAT44(uVar17,*(undefined4 *)(param_1 + 0x498)),0);
LAB_1815d4d74:
  if (*(int *)(param_1 + 0x2c8) != 0) {
    FUN_181296c00(param_2,*(undefined4 *)(param_1 + 0x264));
    lVar9 = param_1 + 0x278;
    if (*(int *)(param_1 + 0x2c8) != 1) {
      lVar9 = param_1 + 0x2a0;
    }
    FUN_181295ed0(param_2,lVar9);
  }
  if (local_130 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_130 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_130)(local_130,1);
    }
  }
  puVar11 = (uint *)(local_128 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  return;
}



############ FUN_ 1815ec850 size=387 ############

void FUN_1815ec850(longlong param_1,undefined8 param_2,undefined8 param_3,int param_4,int param_5,
                  int param_6,int param_7,char param_8,int param_9,int param_10,char param_11,
                  char param_12)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  float fVar4;
  float local_38;
  float fStack_34;
  float fStack_30;
  float fStack_2c;
  
  uVar1 = DAT_18262bb70;
  if (*(char *)(param_1 + 0x170) != '\0') {
    uVar1 = DAT_18262bb68;
  }
  fVar4 = DAT_1824c3d64;
  if ((param_11 == '\0') && (param_12 == '\0')) {
    fVar4 = DAT_1824c3d3c;
  }
  _param_11 = CONCAT13((char)(int)(fVar4 * DAT_1824c454c),(int3)uVar1);
  FUN_181296c00(param_2,_param_11);
  iVar2 = param_10;
  iVar3 = param_7;
  if (param_8 != '\0') {
    param_7 = param_6;
    iVar2 = param_6;
    iVar3 = param_10;
    param_5 = param_9;
    param_9 = param_4;
  }
  fVar4 = (float)((uint)(float)((double)param_7 * DAT_1824c3fc0) ^ DAT_1824c4f30);
  local_38 = (float)param_9 - fVar4;
  fStack_34 = (float)param_5 - fVar4;
  fStack_30 = fVar4 * DAT_1824c41e0 + (float)iVar2;
  fStack_2c = fVar4 * DAT_1824c41e0 + (float)iVar3;
  if (fStack_30 <= 0.0) {
    fStack_30 = 0.0;
  }
  if (fStack_2c <= 0.0) {
    fStack_2c = 0.0;
  }
  FUN_181295300(param_2,&local_38,(float)((double)param_7 * DAT_1824c4050 * DAT_1824c4050));
  return;
}



############ FUN_ 18162ac90 size=2211 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18162ac90(longlong param_1,undefined8 param_2)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined1 uVar3;
  undefined4 *puVar4;
  uint *puVar5;
  uint *puVar6;
  int iVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong lVar10;
  uint uVar11;
  uint uVar12;
  longlong *plVar13;
  uint uVar14;
  int *piVar15;
  ulonglong uVar16;
  ulonglong uVar17;
  float fVar18;
  int unaff_retaddr;
  undefined1 auStack_218 [32];
  undefined4 local_1f8;
  undefined *local_1f0;
  uint local_1e8;
  uint local_1e4;
  longlong local_1e0;
  uint local_1d4;
  undefined4 local_1d0;
  undefined *local_1c8;
  uint local_1c0 [5];
  undefined4 local_1ac;
  undefined8 local_1a8;
  undefined8 local_1a0;
  ulonglong local_198;
  undefined4 local_190;
  uint local_18c;
  uint local_188;
  uint local_184;
  longlong local_180;
  undefined4 local_178;
  longlong local_170;
  undefined4 local_168;
  undefined4 local_164;
  longlong local_160;
  longlong local_158 [3];
  undefined *local_140;
  undefined1 local_120 [24];
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined1 local_d8 [136];
  ulonglong local_50;
  
  local_50 = DAT_182615970 ^ (ulonglong)auStack_218;
  uVar12 = (uint)&stack0x00000000;
  uVar11 = (((uVar12 & 0xdff) + 1) * (uVar12 & 0xdff) + 7) % 0x51;
  uVar14 = (int)(-uVar11 | uVar11) >> 0x1f;
  uVar11 = uVar12 & 0x17f;
  iVar7 = (uVar11 + 2) * (uVar11 + 1) * uVar11;
  local_184 = (((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) + 0x5dbdU ^
              ((int)(-uVar14 | uVar14) >> 0x1f) * -0x5bed;
  iVar7 = (uVar12 & 0x1cff) * (uVar12 & 0x1cff) + 1;
  uVar11 = (iVar7 >> 4) + (iVar7 >> 1) + iVar7 * 0x24924924 >> 0x1d;
  uVar11 = (int)(uVar11 - 7) >> 0x1f & uVar11;
  uVar12 = (((uVar12 & 0x34ff) + 1) * (uVar12 & 0x34ff) + 7) % 0x51;
  local_188 = (((int)(-uVar11 | uVar11) >> 0x1f) - ((int)(-uVar12 | uVar12) >> 0x1f) | 0x161dU) ^
              0x1efd;
  local_1a0 = param_2;
  local_180 = param_1;
  FUN_1813ea380(param_1,param_2);
  local_1e0 = 0x6f123c0;
  local_1a8 = 0x234d598;
  local_1c8 = &DAT_18234d598;
  local_1f0 = &DAT_18236d558;
  do {
    plVar13 = &local_160;
    puVar4 = &local_168;
    puVar5 = &local_1e4;
    FUN_18162c064();
    *puVar5 = 0xa4351a12;
    *puVar4 = 0x73;
    *plVar13 = 0x18162ae9a;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = (local_1e4 << 0x10 | local_1e4 >> 0x10) & 0xe3e41c1b |
           (local_1e4 >> 0x10 | local_1e4 << 0x10) & 0x1c1be3e4;
  uVar12 = uVar11 >> 3 | uVar11 << 0x1d;
  uVar11 = (uVar12 >> 0x15 ^ uVar12) >> 3 & 0xff;
  uVar12 = uVar12 ^ (uVar11 << 0x15 | uVar11) << 3;
  uVar11 = (uVar12 >> 4 | uVar12 << 0x1c) & 0xb4b4b4b4 | (uVar12 << 4 | uVar12 >> 0x1c) & 0x4b4b4b4b
  ;
  uVar12 = ((uVar11 >> 2 & 0x33333333) << 2 | uVar11 & 0x33333333) ^ 0x67cdfd9c;
  uVar11 = (uVar12 >> 0xc ^ uVar12) >> 9 & 0x1f;
  local_1e4 = ((uVar11 << 0xc | uVar11) << 9 ^ uVar12) + 0x3b7742d5;
  do {
    plVar13 = local_158;
    puVar4 = &local_164;
    puVar5 = local_1c0;
    FUN_1816298ba();
    *puVar5 = 0x9773d281;
    *puVar4 = 0x31;
    *plVar13 = 0x18162af88;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  lVar10 = (longlong)(int)local_1e4;
  uVar12 = local_1c0[0] << 2 | local_1c0[0] >> 0x1e;
  uVar11 = ((local_1c0[0] & 0x3fffffff) >> 0xb ^ uVar12) >> 2 & 0xfff;
  uVar12 = uVar12 ^ (uVar11 << 0xd | uVar11) << 2;
  uVar12 = ((uVar12 << 2 | (local_1c0[0] & 0x3fffffff) >> 0x1c) & 0x99999999 |
           (uVar12 >> 2 | (local_1c0[0] >> 0x1e) << 0x1e) & 0x66666666) ^ 0xb7848c34;
  uVar11 = (uVar12 >> 0x10 | uVar12 << 0x10) & 0xd7ff2800 |
           (uVar12 << 0x10 | uVar12 >> 0x10) & 0x2800d7ff;
  uVar11 = (uVar11 >> 4 | (uVar12 >> 0x10) << 0x1c) & 0xc3c3c3c3 |
           (uVar11 << 4 | uVar11 >> 0x1c) & 0x3c3c3c3c;
  uVar11 = ((uVar11 << 0x10 | uVar11 >> 0x10) & 0xe67b1984 |
           (uVar11 >> 0x10 | uVar11 << 0x10) & 0x1984e67b) ^ 0x8eff4cb5;
  uVar16 = (longlong)(int)(uVar11 << 4 | uVar11 >> 0x1c) & 0xffffffffe1e1e1e1U |
           (ulonglong)((uVar11 >> 4 | uVar11 << 0x1c) & 0x1e1e1e1e);
  local_1e4 = 0;
  local_1c0[0] = 0;
  plVar13 = (longlong *)(lVar10 + 4 + local_160);
  *plVar13 = *plVar13 + (*(ulonglong *)(uVar16 + 4 + local_158[0]) >> 2 & 0x94b089a1);
  piVar15 = (int *)register0x00000020;
  do {
    puVar5 = &local_18c;
    puVar6 = &local_1e8;
    FUN_18162a49b();
    uVar1 = rdtsc();
    uVar11 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20);
    *puVar5 = uVar11;
    piVar15 = (int *)(~-(longlong)piVar15 + 1);
    uVar17 = ~uVar16;
    uVar16 = ~(uVar17 + 1) + 1;
    uVar8 = ((ulonglong)uVar11 ^ ((ulonglong)uVar11 * 5 >> 0xc) + 0x3d62febc) * 0x50010000 +
            0x300cd822;
    uVar8 = uVar8 - ((uVar8 >> 10) - 0x517d1a2e);
    uVar9 = uVar8 >> 0xc;
    uVar8 = uVar9 | uVar8 << 0x34;
    uVar9 = (uVar9 * 0x28000 | uVar8 * 5 >> 0x31) + uVar8 * 8;
    uVar9 = ((uVar9 * 0x8000 | uVar9 >> 0x31) * -0x1f + 0x68c463cf) * 0x204 - 0x5dfa5781;
    uVar9 = uVar9 * 0x100 | uVar9 >> 0x38;
    *puVar6 = (int)uVar9 + (int)(uVar9 << 0xb) + 0x1f68b0b1 & 0x85ddfa43;
    lVar2 = local_180;
    uVar11 = (*piVar15 + 1) * *piVar15 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  piVar15 = (int *)(lVar10 + 8 + local_160);
  *piVar15 = *piVar15 + (local_1e8 ^ 0xe3c66c19);
  piVar15 = (int *)(lVar10 + 4 + local_160);
  *piVar15 = *piVar15 + (local_1e8 ^ 0x11f44600);
  uVar16 = *(longlong *)(lVar10 + 4 + local_160) + 0x8cd7e833895bb60c;
  uVar16 = (uVar16 >> 0x1c | uVar16 << 0x24) + 0xef211a4a44476f71;
  uVar16 = ((uVar16 >> 8 | uVar16 << 0x38) & 0xd728d728d728d728 |
           (uVar16 * 0x100 | uVar16 >> 0x38) & 0x28d728d728d728d7) + 0x9d43a5e96091cc48;
  uVar16 = (uVar16 >> 0x17 | uVar16 << 0x29) + 0x846aef3dad79503d;
  uVar16 = ((uVar16 * 4 | uVar16 >> 0x3e) & 0x9999999999999999 |
           (uVar16 >> 2 | uVar16 << 0x3e) & 0x6666666666666666) + 0xd18fb7bc75cb03f;
  *(ulonglong *)(lVar10 + 4 + local_160) = uVar16;
  plVar13 = (longlong *)(~(uVar17 + 1) + 5 + local_158[0]);
  *plVar13 = *plVar13 + (ulonglong)((uint)(uVar16 >> 2) & 0x4651000);
  local_1e8 = (uint)((ulonglong)*(undefined8 *)(lVar10 + 4 + local_160) >> 8) & 0x7fffffff;
  local_1d4 = (uint)(*(ulonglong *)(lVar10 + 4 + local_160) >> 1) ^ 0xcc046bf8;
  local_198 = *(ulonglong *)(lVar10 + 4 + local_160) ^ 0xe682584c9f9ab81f;
  local_1e0 = 0xc6fbbcf5828702d;
  local_1a8 = CONCAT44(local_1a8._4_4_,0x5828702d);
  local_170 = (longlong)local_1f0 - (longlong)local_1c8;
  local_140 = local_1c8;
  local_1d0 = 0x25e55822;
  local_1f8 = 0x8f93e678;
  local_1f0 = (undefined *)CONCAT44(local_1f0._4_4_,0x1b873593);
  local_1c8 = (undefined *)CONCAT44(local_1c8._4_4_,0xcc9e2d51);
  fVar18 = *(float *)(local_180 + 0x470) * DAT_1824c3d54;
  if (0.0 < fVar18) {
    if (fVar18 < DAT_1824c3ea4) {
      uVar3 = (undefined1)(int)(fVar18 * DAT_1824c454c);
    }
    else {
      uVar3 = 0xff;
    }
  }
  else {
    uVar3 = 0;
  }
  local_1ac = CONCAT13(uVar3,(int3)DAT_18262bb84);
  local_178 = local_1ac;
  FUN_181296c00(local_1a0);
  plVar13 = (longlong *)(lVar2 + 0xf8);
  lVar10 = (**(code **)(*plVar13 + 8))(plVar13);
  fVar18 = *(float *)(lVar10 + 0x88);
  lVar10 = (**(code **)(*plVar13 + 8))(plVar13);
  local_1e0 = lVar2 + 0x498;
  FUN_1804ab5e0(local_1e0,local_120,(int)(*(float *)(lVar10 + 0x88) * _DAT_1824c46c0),
                (int)(fVar18 * _DAT_1824c46f8));
  puVar4 = (undefined4 *)FUN_1804ab5a0(local_120,local_d8);
  local_108 = *puVar4;
  uStack_104 = puVar4[1];
  uStack_100 = puVar4[2];
  uStack_fc = puVar4[3];
  lVar10 = (**(code **)(*plVar13 + 8))(plVar13);
  FUN_181295300(local_1a0,&local_108,*(float *)(lVar10 + 0x88) * DAT_1824c41e0);
  local_1f8 = 0xe6546b64;
  do {
    local_190 = 0x59ca3bf5;
                    /* WARNING: Call to offcut address within same function */
    func_0x00018162b163();
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  FUN_18162b56e();
  FUN_18162b568();
  return;
}



############ FUN_ 181a061e0 size=61 ############

void FUN_181a061e0(longlong param_1,undefined8 param_2)

{
  FUN_181296c00(param_2,0xff91979a);
  FUN_181295ed0(param_2,param_1 + 400);
  return;
}



############ FUN_ 181a06230 size=61 ############

void FUN_181a06230(longlong param_1,undefined8 param_2)

{
  FUN_181296c00(param_2,0xff86aac0);
  FUN_181295ed0(param_2,param_1 + 400);
  return;
}



############ FUN_ 181a06280 size=186 ############

void FUN_181a06280(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 uVar1;
  bool bVar2;
  LPCRITICAL_SECTION lpCriticalSection;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  lpCriticalSection = (LPCRITICAL_SECTION)(*(longlong *)(param_1 + 0x1b8) + 0x528);
  EnterCriticalSection(lpCriticalSection);
  if (*(longlong *)(*(longlong *)(param_1 + 0x1b8) + 0x168) != 0) {
    FUN_181a058a0(param_1);
    if ((*(char *)(*(longlong *)(param_1 + 0x1b8) + 0x93a) == '\0') ||
       (*(char *)(*(longlong *)(param_1 + 0x1b8) + 0x939) == '\0')) {
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
    if (bVar2) {
      uVar1 = 0xff91979a;
    }
    else {
      uVar1 = 0xff86aac0;
    }
    FUN_181296c00(param_2,uVar1,param_3,param_4,uVar3);
    FUN_181295ed0(param_2,param_1 + 400);
  }
                    /* WARNING: Could not recover jumptable at 0x000181a06333. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection(lpCriticalSection);
  return;
}



############ FUN_ 181a0b7b0 size=953 ############

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

undefined8 FUN_181a0b7b0(longlong param_1,undefined8 param_2)

{
  code *pcVar1;
  uint uVar2;
  undefined8 uVar3;
  int iVar4;
  int unaff_retaddr;
  undefined1 auStack_2d8 [32];
  undefined1 local_2b8;
  uint local_2a8;
  uint local_2a4;
  undefined4 local_29c;
  undefined4 local_260;
  uint local_25c;
  longlong local_228;
  undefined1 local_1d8 [4];
  undefined4 local_1d4;
  undefined8 local_1c8;
  undefined8 local_190;
  ulonglong local_58;
  
  local_190 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_2d8;
  uVar2 = (uint)&stack0x00000000 & 0x20ff;
  uVar2 = ((uVar2 + 1) * uVar2 + 7) % 0x51;
  uVar2 = (int)(-uVar2 | uVar2) >> 0x1f;
  local_25c = ((int)(-uVar2 | uVar2) >> 0x1f) * -0x3046 ^ 0x3226;
  uVar2 = (uint)&stack0x00000000 & 0x64ff;
  iVar4 = uVar2 * uVar2 + 1;
  uVar2 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar2 = (int)(uVar2 - 7) >> 0x1f & uVar2;
  local_2a4 = (int)(-uVar2 | uVar2) >> 0x1f & 0xf095U ^ 0xf025;
  do {
    local_260 = 0x5699f676;
    local_2a8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)local_2a8 < 0) {
      local_2a8 = (local_2a8 - 1 | 0xfffffffe) + 1;
    }
  } while (local_2a8 != 0);
  local_29c = 0xdbe48c19;
  pcVar1 = *(code **)(*(longlong *)(param_1 + 0x1c8) + 8);
  local_228 = param_1;
  local_1c8 = param_2;
  if (pcVar1 == FUN_180579300) {
    if (*(longlong *)(param_1 + 0x1d0) == 0) {
      FUN_180579970(param_1);
    }
    uVar3 = *(undefined8 *)(param_1 + 0x1d0);
  }
  else {
    uVar3 = (*pcVar1)(param_1 + 0x1c8);
  }
  local_2b8 = 1;
  FUN_1813f22a0(uVar3,local_1d8,DAT_1826741d8,param_1);
  uVar3 = FUN_181296c00(param_2,local_1d4);
  return uVar3;
}



############ FUN_ 1814d0590 size=27 ############

void FUN_1814d0590(undefined8 param_1,undefined8 param_2)

{
  undefined4 local_res18;
  
  local_res18 = CONCAT13(0x7f,(int3)DAT_18262bb60);
  FUN_181296c00(param_2,local_res18);
  return;
}



############ FUN_ 181297840 size=1240 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181297840(float param_1,undefined4 param_2,undefined4 param_3,longlong *param_4,
                  longlong *param_5,undefined4 *param_6,float param_7)

{
  undefined8 *puVar1;
  float *pfVar2;
  undefined4 uVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  char cVar7;
  int iVar8;
  longlong lVar9;
  int iVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  undefined1 auStack_1f8 [32];
  float local_1d8;
  undefined4 local_1d0;
  undefined4 local_1c8;
  void *local_1b8;
  undefined8 local_1b0;
  longlong local_1a8;
  undefined8 local_1a0;
  longlong local_198;
  longlong lStack_190;
  undefined1 local_188;
  float local_178;
  float local_174;
  undefined8 local_170;
  char local_168;
  int local_164;
  longlong *local_160;
  undefined4 local_158;
  undefined4 uStack_154;
  undefined4 uStack_150;
  undefined4 uStack_14c;
  undefined8 local_148;
  float *local_140;
  float local_138;
  undefined8 local_134;
  undefined1 local_12c;
  void *local_128;
  void *local_120;
  undefined8 local_118;
  float local_108;
  float fStack_104;
  float fStack_100;
  float fStack_fc;
  float local_f8;
  float fStack_f4;
  float fStack_f0;
  float fStack_ec;
  float local_e8;
  float fStack_e4;
  float fStack_e0;
  float fStack_dc;
  ulonglong local_d8;
  
  local_d8 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  if (0.0 < param_1) {
    local_1a8 = 0;
    local_1a0 = 0;
    local_188 = 1;
    local_198 = 0;
    lStack_190 = 0;
    if (param_5 == param_4) {
      local_1a8 = *param_4;
      *param_4 = 0;
      lVar9 = param_4[1];
      *(undefined4 *)(param_4 + 1) = 0;
      uVar3 = *(undefined4 *)((longlong)param_4 + 0xc);
      *(undefined4 *)((longlong)param_4 + 0xc) = 0;
      local_198 = param_4[2];
      lStack_190 = param_4[3];
      param_4[2] = 0;
      param_4[3] = 0;
      local_1a0 = CONCAT44(uVar3,(int)lVar9);
      local_188 = (char)param_4[4];
      param_5 = &local_1a8;
      *(undefined1 *)(param_4 + 4) = 1;
    }
    else {
      *(undefined8 *)((longlong)param_4 + 0xc) = 0;
      *(undefined8 *)((longlong)param_4 + 0x14) = 0;
      *(undefined4 *)((longlong)param_4 + 0x1c) = 0;
    }
    param_7 = DAT_1824c3db8 / param_7;
    *(undefined1 *)(param_4 + 4) = 1;
    local_160 = param_5;
    local_140 = (float *)*param_5;
    local_170 = 0;
    local_168 = '\0';
    local_164 = -1;
    local_134 = 0;
    local_158 = *param_6;
    uStack_154 = param_6[1];
    uStack_150 = param_6[2];
    uStack_14c = param_6[3];
    local_148 = *(undefined8 *)(param_6 + 4);
    local_138 = param_7 * param_7;
    fVar16 = param_1 * DAT_1824c43e4 * param_1;
    param_1 = param_1 * DAT_1824c3d8c;
    local_12c = FUN_1812a0b10();
    local_128 = malloc(0x80);
    local_118 = 0x20;
    local_1b8 = (void *)0x0;
    local_1b0 = 0;
    local_120 = local_128;
    FUN_1804af890(&local_1b8,0x308);
    fVar12 = 0.0;
    fVar13 = 0.0;
    local_108 = 0.0;
    fStack_104 = 0.0;
    cVar7 = FUN_1812992b0(&local_178);
    fVar4 = DAT_1824c3c44;
    iVar10 = local_1b0._4_4_;
    while (cVar7 != '\0') {
      if (local_164 == 0) {
        if (0 < iVar10) {
          local_1d8 = fVar16;
          local_1d0 = param_2;
          local_1c8 = param_3;
          FUN_181297d70(param_4,&local_1b8,0,param_1);
          local_1b0 = local_1b0 & 0xffffffff;
          iVar10 = 0;
        }
        local_108 = local_178;
        fStack_104 = local_174;
        fVar12 = local_178;
        fVar13 = local_174;
      }
      cVar7 = local_168;
      fVar5 = (float)local_170;
      fVar6 = local_170._4_4_;
      fVar14 = (float)local_170 - fVar12;
      fStack_100 = (float)local_170;
      fStack_fc = local_170._4_4_;
      fVar15 = local_170._4_4_ - fVar13;
      fVar11 = fVar15 * fVar15 + fVar14 * fVar14;
      if (((local_168 != '\0') || (fVar4 < fVar11)) ||
         ((local_120 == local_128 &&
          ((local_140 == (float *)(*local_160 + (longlong)*(int *)((longlong)local_160 + 0xc) * 4)
           || (*local_140 == DAT_1824c4600)))))) {
        fVar11 = sqrtf(fVar11);
        local_f8 = fVar12;
        fStack_f4 = fVar13;
        fStack_f0 = fVar12;
        fStack_ec = fVar13;
        local_e8 = fVar12;
        fStack_e4 = fVar13;
        fStack_e0 = fVar12;
        fStack_dc = fVar13;
        if (fVar11 != 0.0) {
          fVar14 = fVar14 * (param_1 / fVar11);
          fVar15 = fVar15 * (param_1 / fVar11);
          local_f8 = fVar15 + fVar12;
          fStack_f4 = fVar13 - fVar14;
          fStack_f0 = fVar15 + fVar5;
          fStack_ec = fVar6 - fVar14;
          local_e8 = fVar5 - fVar15;
          fStack_e4 = fVar14 + fVar6;
          fStack_e0 = fVar12 - fVar15;
          fStack_dc = fVar14 + fVar13;
        }
        iVar8 = iVar10 + 1;
        if ((int)local_1b0 < iVar8) {
          if (iVar8 < 0) {
            iVar8 = iVar10 + 2;
          }
          FUN_1804af890(&local_1b8,iVar10 + 9 + (iVar8 >> 1) & 0xfffffff8);
          iVar10 = local_1b0._4_4_;
        }
        lVar9 = (longlong)iVar10;
        iVar10 = iVar10 + 1;
        local_1b0 = CONCAT44(iVar10,(int)local_1b0);
        puVar1 = (undefined8 *)((longlong)local_1b8 + lVar9 * 0x30);
        *puVar1 = CONCAT44(fStack_104,local_108);
        puVar1[1] = CONCAT44(fStack_fc,fStack_100);
        pfVar2 = (float *)((longlong)local_1b8 + lVar9 * 0x30 + 0x10);
        *pfVar2 = local_f8;
        pfVar2[1] = fStack_f4;
        pfVar2[2] = fStack_f0;
        pfVar2[3] = fStack_ec;
        pfVar2 = (float *)((longlong)local_1b8 + lVar9 * 0x30 + 0x20);
        *pfVar2 = local_e8;
        pfVar2[1] = fStack_e4;
        pfVar2[2] = fStack_e0;
        pfVar2[3] = fStack_dc;
        if (cVar7 == '\0') {
          local_108 = fVar5;
          fStack_104 = fVar6;
          fVar12 = fVar5;
          fVar13 = fVar6;
        }
        else {
          local_1d8 = fVar16;
          local_1d0 = param_2;
          local_1c8 = param_3;
          FUN_181297d70(param_4,&local_1b8,1,param_1);
          local_1b0 = local_1b0 & 0xffffffff;
          iVar10 = 0;
        }
      }
      cVar7 = FUN_1812992b0(&local_178);
    }
    if (0 < iVar10) {
      local_1d8 = fVar16;
      local_1d0 = param_2;
      local_1c8 = param_3;
      FUN_181297d70(param_4,&local_1b8,0,param_1);
    }
                    /* WARNING: Subroutine does not return */
    free(local_1b8);
  }
  *(undefined8 *)((longlong)param_4 + 0xc) = 0;
  *(undefined8 *)((longlong)param_4 + 0x14) = 0;
  *(undefined4 *)((longlong)param_4 + 0x1c) = 0;
}



############ FUN_ 1812954c0 size=647 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812954c0(longlong param_1,float *param_2,float param_3)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  char cVar5;
  float *pfVar6;
  float local_d8;
  float fStack_d4;
  float fStack_d0;
  float fStack_cc;
  ulonglong local_c8;
  float *local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined1 local_98;
  undefined8 local_90;
  undefined8 uStack_88;
  ulonglong local_80;
  undefined8 local_78;
  
  local_78 = 0xfffffffffffffffe;
  local_b8 = (float *)0x0;
  local_b0 = 0;
  local_a8 = 0;
  uStack_a0 = 0;
  local_98 = 1;
  fVar1 = param_2[2];
  fVar2 = param_2[3];
  if (fVar1 == fVar2) {
    param_3 = param_3 * DAT_1824c3d8c;
    fStack_d0 = param_3 * DAT_1824c41e0 + fVar1;
    if (fStack_d0 <= 0.0) {
      fStack_d0 = 0.0;
    }
    fStack_cc = param_3 * DAT_1824c41e0 + fVar2;
    if (fStack_cc <= 0.0) {
      fStack_cc = 0.0;
    }
    fVar3 = param_2[1];
    fStack_d4 = fVar3 - param_3;
    fVar4 = *param_2;
    local_d8 = fVar4 - param_3;
    FUN_18129d1e0(&local_b8,&local_d8);
    param_3 = (float)((uint)param_3 ^ DAT_1824c4f30);
    fStack_d0 = param_3 * DAT_1824c41e0 + fVar1;
    if (fStack_d0 <= 0.0) {
      fStack_d0 = 0.0;
    }
    fStack_cc = param_3 * DAT_1824c41e0 + fVar2;
    if (fStack_cc <= 0.0) {
      fStack_cc = 0.0;
    }
    fStack_d4 = fVar3 - param_3;
    local_d8 = fVar4 - param_3;
    FUN_18129d1e0(&local_b8,&local_d8);
    local_98 = 0;
    cVar5 = (**(code **)(**(longlong **)(param_1 + 8) + 0x60))();
    if (cVar5 == '\0') {
      for (pfVar6 = local_b8; pfVar6 != local_b8 + local_b0._4_4_; pfVar6 = pfVar6 + 1) {
        fVar1 = *pfVar6;
        if (fVar1 == DAT_1824c4600) {
          pfVar6 = pfVar6 + 2;
        }
        else if (((fVar1 == DAT_1824c45fc) || (fVar1 == DAT_1824c4604)) || (fVar1 == DAT_1824c4608))
        {
          local_d8 = (float)_DAT_1824c4780;
          fStack_d4 = (float)((ulonglong)_DAT_1824c4780 >> 0x20);
          fStack_d0 = (float)_UNK_1824c4788;
          fStack_cc = (float)((ulonglong)_UNK_1824c4788 >> 0x20);
          local_c8 = (ulonglong)DAT_1824c3ea4;
          (**(code **)(**(longlong **)(param_1 + 8) + 0xb8))
                    (*(longlong **)(param_1 + 8),&local_b8,&local_d8);
          break;
        }
      }
    }
  }
  else {
    local_d8 = *param_2;
    fStack_d4 = param_2[1];
    fStack_d0 = param_2[2];
    fStack_cc = param_2[3];
    FUN_18129d1e0(&local_b8,&local_d8);
    local_90 = _DAT_1824c4780;
    uStack_88 = _UNK_1824c4788;
    local_80 = (ulonglong)DAT_1824c3ea4;
    fStack_d4 = 0.0;
    fStack_d0 = 0.0;
    local_d8 = param_3;
    FUN_181295d20(param_1,&local_b8,&local_d8,&local_90);
  }
  local_b0 = local_b0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 181295190 size=235 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181295190(undefined8 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 local_70;
  undefined8 local_6c;
  undefined8 local_64;
  undefined8 uStack_5c;
  ulonglong local_54;
  void *local_48;
  ulonglong local_40;
  undefined8 local_38;
  undefined8 uStack_30;
  undefined1 local_28;
  
  local_48 = (void *)0x0;
  local_40 = 0;
  local_38 = 0;
  uStack_30 = 0;
  local_28 = 1;
  FUN_18129d5a0(&local_48,*param_2,param_2[1],param_2[2],param_2[3],param_3,param_3,1,1,1,1);
  local_64 = _DAT_1824c4780;
  uStack_5c = _UNK_1824c4788;
  local_54 = (ulonglong)DAT_1824c3ea4;
  local_6c = 0;
  local_70 = param_4;
  FUN_181295d20(param_1,&local_48,&local_70,&local_64);
  local_40 = local_40 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_48);
}



############ FUN_ 18059eb10 size=994 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18059eb10(undefined8 param_1,undefined8 param_2,float *param_3)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float local_c0;
  undefined8 uStack_bc;
  float fStack_b4;
  undefined1 local_b0 [24];
  void *local_98;
  undefined8 local_90;
  float local_88;
  float fStack_84;
  float local_80;
  float fStack_7c;
  undefined1 local_78;
  
  fVar4 = (float)((uint)(float)((double)param_3[3] * _DAT_1824c3fa8) ^ DAT_1824c4f30);
  fVar5 = fVar4 * DAT_1824c41e0 + param_3[2];
  if (fVar5 <= 0.0) {
    fVar5 = 0.0;
  }
  fVar3 = fVar4 * DAT_1824c41e0 + param_3[3];
  if (fVar3 <= 0.0) {
    fVar3 = 0.0;
  }
  local_c0 = *param_3 - fVar4;
  uStack_bc = CONCAT44(fVar5,param_3[1] - fVar4);
  *param_3 = local_c0;
  param_3[1] = param_3[1] - fVar4;
  param_3[2] = fVar5;
  param_3[3] = fVar3;
  fVar4 = DAT_1824c3d8c;
  fVar5 = fVar3 * DAT_1824c3cb8;
  local_98 = (void *)0x0;
  local_90 = 0;
  local_78 = 1;
  local_88 = 0.0;
  fStack_84 = 0.0;
  fStack_7c = 0.5;
  local_80 = 0.5;
  fStack_b4 = fVar3;
  FUN_1804b02a0(&local_98,&DAT_1821df344,0,DAT_1824c3d8c);
  if (local_90._4_4_ == 0) {
    local_88 = 0.0;
    fStack_84 = 0.0;
    local_80 = 0.0;
    fStack_7c = 0.0;
    FUN_1804b02a0(&local_98,&DAT_1821df344,0,0);
  }
  fVar1 = DAT_1824c3f78;
  FUN_1804b02a0(&local_98,&DAT_1821dfcb4,DAT_1824c3f78,fVar4);
  fVar2 = DAT_1824c3ea4;
  if (local_88 <= fVar1) {
    if (fStack_84 < fVar1) {
      fStack_84 = fVar1;
    }
  }
  else {
    local_88 = fVar1;
  }
  if (local_80 <= fVar4) {
    if (fStack_7c < fVar4) {
      fStack_7c = fVar4;
    }
  }
  else {
    local_80 = fVar4;
  }
  if (local_90._4_4_ == 0) {
    fStack_84 = 1.0;
    local_88 = 1.0;
    local_80 = 0.0;
    fStack_7c = 0.0;
  }
  else {
    if (local_88 <= DAT_1824c3ea4) {
      if (fStack_84 < DAT_1824c3ea4) {
        fStack_84 = 1.0;
      }
    }
    else {
      local_88 = 1.0;
    }
    if (local_80 <= 0.0) {
      if (fStack_7c < 0.0) {
        fStack_7c = 0.0;
      }
    }
    else {
      local_80 = 0.0;
    }
  }
  FUN_1804b02a0(&local_98,&DAT_1821df344,DAT_1824c3ea4,0);
  if (local_90._4_4_ == 0) {
    local_88 = 0.0;
    fStack_84 = 0.0;
    local_80 = 0.0;
    fStack_7c = 0.0;
    FUN_1804b02a0(&local_98,&DAT_1821df344,0,0);
  }
  FUN_1804b02a0(&local_98,&DAT_1821dfcb4,fVar1,fVar4);
  if (local_88 <= fVar1) {
    if (fStack_84 < fVar1) {
      fStack_84 = fVar1;
    }
  }
  else {
    local_88 = fVar1;
  }
  fVar1 = fStack_84;
  if (local_80 <= fVar4) {
    if (fStack_7c < fVar4) {
      fStack_7c = fVar4;
    }
  }
  else {
    local_80 = fVar4;
  }
  if (local_90._4_4_ == 0) {
    local_88 = 0.0;
    fStack_84 = 0.0;
    local_80 = 0.0;
    fStack_7c = 0.0;
    FUN_1804b02a0(fVar1,&DAT_1821df344,0,0);
  }
  FUN_1804b02a0(&local_98,&DAT_1821dfcb4,fVar2,fVar2);
  if (local_88 <= fVar2) {
    if (fStack_84 < fVar2) {
      fStack_84 = 1.0;
    }
  }
  else {
    local_88 = 1.0;
  }
  if (local_80 <= fVar2) {
    if (fStack_7c < fVar2) {
      fStack_7c = 1.0;
    }
  }
  else {
    local_80 = 1.0;
  }
  fVar2 = param_3[2] * fVar4;
  FUN_18129b390(&local_98,local_b0,(fVar2 + *param_3) - fVar2,
                (fVar3 / DAT_1824c4408 + fVar3 * fVar4 + param_3[1]) - fVar3 * fVar4,param_3[2],
                fVar3,1,0x24);
  uStack_bc = 1;
  local_c0 = fVar5;
  FUN_181295d20(param_2,&local_98,&local_c0,local_b0);
  local_90 = local_90 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_98);
}



############ FUN_ 181351450 size=104 ############

undefined8 * FUN_181351450(undefined8 *param_1)

{
  *param_1 = juce::ReferenceCountedObject::vftable;
  *(undefined4 *)(param_1 + 1) = 0;
  FUN_1812a59f0(param_1 + 2);
  *param_1 = juce::Value::ValueSource::vftable;
  param_1[2] = juce::Value::ValueSource::vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  return param_1;
}



############ FUN_ 18131e970 size=436 ############

undefined8 * FUN_18131e970(undefined8 *param_1,undefined1 param_2)

{
  undefined8 uVar1;
  
  *param_1 = juce::Component::vftable;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  FUN_1812a59f0(param_1 + 0x16);
  param_1[0x19] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x1a) = 0;
  *param_1 = juce::ScrollBar::vftable;
  param_1[0x16] = juce::ScrollBar::vftable;
  param_1[0x18] = juce::ScrollBar::vftable;
  param_1[0x1b] = 0;
  uVar1 = DAT_1824c4140;
  param_1[0x1c] = DAT_1824c4140;
  param_1[0x1d] = 0;
  param_1[0x1e] = uVar1;
  param_1[0x1f] = 0x3fb999999999999a;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  *(undefined4 *)(param_1 + 0x24) = 100;
  *(undefined4 *)((longlong)param_1 + 0x124) = 0x32;
  *(undefined4 *)(param_1 + 0x25) = 10;
  *(undefined1 *)((longlong)param_1 + 300) = param_2;
  *(undefined2 *)((longlong)param_1 + 0x12d) = 0x100;
  *(undefined1 *)((longlong)param_1 + 0x12f) = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 8;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x40;
  return param_1;
}



############ FUN_ 1805166a0 size=300 ############

undefined8 *
FUN_1805166a0(undefined8 *param_1,int param_2,longlong *param_3,longlong *param_4,longlong param_5,
             uint param_6,undefined8 param_7,char param_8)

{
  longlong lVar1;
  char cVar2;
  undefined8 uVar3;
  uint uVar4;
  bool bVar5;
  char local_res10 [8];
  
  FUN_1812a59f0();
  *param_1 = juce::WindowsMessageBox::vftable;
  local_res10[0] = '\0';
  EnumWindows(FUN_1812c6400,(LPARAM)local_res10);
  uVar4 = 0x12000;
  if (local_res10[0] != '\0') {
    uVar4 = 0x52000;
  }
  if (param_2 == 1) {
    uVar4 = uVar4 | 0x20;
  }
  else if (param_2 == 2) {
    uVar4 = uVar4 | 0x30;
  }
  else if (param_2 == 3) {
    uVar4 = uVar4 | 0x40;
  }
  *(uint *)(param_1 + 2) = uVar4 | param_6;
  uVar3 = 0;
  if (param_5 != 0) {
    uVar3 = FUN_18134b8d0();
  }
  param_1[3] = uVar3;
  lVar1 = *param_3;
  param_1[4] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  lVar1 = *param_4;
  param_1[5] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  param_1[6] = param_7;
  if (param_8 != '\0') {
    LOCK();
    bVar5 = *(int *)(param_1[1] + 0x18) == 0;
    if (bVar5) {
      *(int *)(param_1[1] + 0x18) = 1;
    }
    UNLOCK();
    if ((bVar5) && (cVar2 = FUN_1812a6720(param_1[1]), cVar2 == '\0')) {
      LOCK();
      *(undefined4 *)(param_1[1] + 0x18) = 0;
      UNLOCK();
    }
  }
  return param_1;
}



############ FUN_ 1804f5420 size=740 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804f5420(undefined8 *param_1,undefined8 param_2,longlong param_3,undefined4 param_4,
                  longlong *param_5,undefined8 param_6)

{
  uint uVar1;
  longlong lVar2;
  char cVar3;
  errno_t eVar4;
  undefined8 *puVar5;
  uint *puVar6;
  undefined1 auStack_118 [32];
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  undefined8 local_e0;
  tm local_d8;
  undefined1 *local_b0;
  undefined8 local_a8;
  longlong local_a0;
  undefined8 uStack_98;
  undefined1 local_90;
  undefined8 local_88;
  undefined8 *local_80;
  undefined8 local_78;
  longlong local_70;
  int local_68;
  int iStack_64;
  int iStack_60;
  int iStack_5c;
  int local_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  int local_48;
  ulonglong local_40;
  
  local_88 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_118;
  *param_1 = juce::TreeViewItem::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  *(undefined4 *)(param_1 + 7) = 0;
  *(byte *)(param_1 + 8) = *(byte *)(param_1 + 8) & 0xc2 | 2;
  *(uint *)((longlong)param_1 + 0x44) = *(uint *)((longlong)param_1 + 0x44) & 0xfffffffc;
  *(int *)((longlong)param_1 + 0x3c) = DAT_18267aaa4;
  DAT_18267aaa4 = DAT_18267aaa4 + 1;
  param_1[9] = juce::TimeSliceClient::vftable;
  param_1[10] = 0;
  local_80 = param_1;
  FUN_1812a59f0(param_1 + 0xb);
  *param_1 = juce::FileListTreeItem::vftable;
  param_1[9] = juce::FileListTreeItem::vftable;
  param_1[0xb] = juce::FileListTreeItem::vftable;
  param_1[0xd] = juce::FileListTreeItem::vftable;
  lVar2 = *param_5;
  param_1[0xe] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0xf] = param_2;
  param_1[0x10] = param_3;
  *(undefined4 *)(param_1 + 0x11) = param_4;
  param_1[0x12] = 0;
  *(undefined1 *)(param_1 + 0x13) = 0;
  param_1[0x15] = param_6;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x16));
  param_1[0x1c] = 0;
  param_1[0x1d] = &DAT_1821dbf98;
  param_1[0x1e] = &DAT_1821dbf98;
  local_b0 = &DAT_1821dbf98;
  local_a0 = 0;
  uStack_98 = 0;
  if ((param_3 == 0) || (cVar3 = FUN_18132e000(param_3,param_4,&local_b0), cVar3 == '\0')) {
    *(undefined1 *)(param_1 + 0x14) = 1;
  }
  else {
    puVar5 = (undefined8 *)FUN_181240c90(&local_f0,local_a8);
    local_78 = param_1[0x1d];
    param_1[0x1d] = *puVar5;
    *puVar5 = local_78;
    puVar6 = (uint *)(local_f0 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    FUN_18049c4e0(&local_f8,"%d %b \'%y %H:%M");
    local_e8 = local_a0 / 1000;
    eVar4 = _localtime64_s(&local_d8,&local_e8);
    if (eVar4 != 0) {
      local_d8.tm_sec = 0;
      local_d8.tm_min = 0;
      local_d8.tm_hour = 0;
      local_d8.tm_mday = 0;
      local_d8.tm_mon = 0;
      local_d8.tm_year = 0;
      local_d8.tm_wday = 0;
      local_d8.tm_yday = 0;
      local_d8.tm_isdst = 0;
    }
    local_68 = local_d8.tm_sec;
    iStack_64 = local_d8.tm_min;
    iStack_60 = local_d8.tm_hour;
    iStack_5c = local_d8.tm_mday;
    local_58 = local_d8.tm_mon;
    iStack_54 = local_d8.tm_year;
    iStack_50 = local_d8.tm_wday;
    iStack_4c = local_d8.tm_yday;
    local_48 = local_d8.tm_isdst;
    FUN_181229320(&local_e0,&local_f8,&local_68);
    local_70 = param_1[0x1e];
    param_1[0x1e] = local_e0;
    puVar6 = (uint *)(local_70 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_f8 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    *(undefined1 *)(param_1 + 0x14) = local_90;
  }
  puVar6 = (uint *)(local_b0 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
}



############ FUN_ 18132e630 size=215 ############

undefined8 * FUN_18132e630(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  *param_1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0(param_1 + 1);
  param_1[1] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 6) = 0;
  param_1[3] = param_1;
  param_1[8] = 0;
  *param_1 = juce::DirectoryContentsList::vftable;
  param_1[7] = juce::DirectoryContentsList::vftable;
  param_1[9] = &DAT_1821dbf98;
  param_1[10] = param_2;
  param_1[0xb] = param_3;
  *(undefined4 *)(param_1 + 0xc) = 6;
  InitializeCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 100));
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined2 *)(param_1 + 0x15) = 0x101;
  return param_1;
}



############ FUN_ 181349800 size=399 ############

undefined8 *
FUN_181349800(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  undefined8 *local_res18 [2];
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  puVar2 = param_1;
  FUN_1813453e0();
  puVar2[0x16] = juce::SettableTooltipClient::vftable;
  puVar2[0x17] = &DAT_1821dbf98;
  puVar2[0x18] = juce::Value::Listener::vftable;
  FUN_1812a59f0(puVar2 + 0x19);
  *param_1 = juce::ComboBox::vftable;
  param_1[0x16] = juce::ComboBox::vftable;
  param_1[0x18] = juce::ComboBox::vftable;
  param_1[0x19] = juce::ComboBox::vftable;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  FUN_181351c70(param_1 + 0x27);
  *(undefined4 *)(param_1 + 0x2a) = 0;
  *(undefined2 *)((longlong)param_1 + 0x154) = 0;
  *(undefined1 *)((longlong)param_1 + 0x156) = 0;
  *(undefined4 *)(param_1 + 0x2b) = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  param_1[0x2f] = &DAT_1821dbf98;
  local_res18[0] = param_1 + 0x30;
  FUN_18049c4e0(local_res18,"(no choices)",param_3,param_4,uVar3);
  FUN_1812344e0(param_1 + 0x30,local_res18);
  _Memory = (uint *)(local_res18[0] + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined4 *)(param_1 + 0x31) = 0;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) | 8;
  FUN_1812eadd0(param_1);
  FUN_181351570(param_1 + 0x27,param_1 + 0x18);
  return param_1;
}



############ FUN_ 181352b90 size=145 ############

undefined8 * FUN_181352b90(undefined8 *param_1)

{
  *param_1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0();
  param_1[1] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 6) = 0;
  param_1[3] = param_1;
  *param_1 = juce::UndoManager::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = &DAT_1821dbf98;
  *(undefined4 *)(param_1 + 0xc) = 0;
  param_1[0xd] = 0x1e;
  *(undefined2 *)(param_1 + 0xe) = 1;
  *(undefined4 *)((longlong)param_1 + 100) = 30000;
  return param_1;
}



############ FUN_ 18054b9d0 size=574 ############

undefined8 *
FUN_18054b9d0(undefined8 *param_1,longlong *param_2,longlong *param_3,longlong *param_4,
             longlong *param_5,undefined1 param_6)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  longlong local_res10;
  
  *param_1 = juce::AudioIODevice::vftable;
  lVar2 = *param_2;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar2 = *param_3;
  param_1[2] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18049c4e0(&local_res10,"JUCE WASAPI",param_3,param_4,0xfffffffffffffffe);
  FUN_18122b770(param_1 + 3,&local_res10);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1812a59f0(param_1 + 0x43);
  *param_1 = juce::WasapiClasses::WASAPIAudioIODevice::vftable;
  param_1[3] = juce::WasapiClasses::WASAPIAudioIODevice::vftable;
  param_1[0x43] = juce::WasapiClasses::WASAPIAudioIODevice::vftable;
  lVar2 = *param_4;
  param_1[0x45] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar2 = *param_5;
  param_1[0x46] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x47] = &DAT_1821dbf98;
  param_1[0x48] = 0;
  param_1[0x49] = 0;
  *(undefined1 *)(param_1 + 0x4a) = param_6;
  param_1[0x4b] = 0;
  param_1[0x4c] = 0;
  param_1[0x4d] = 0;
  param_1[0x4e] = 0;
  param_1[0x4f] = 0;
  param_1[0x50] = 0;
  param_1[0x51] = 0;
  *(undefined2 *)(param_1 + 0x52) = 0;
  *(undefined4 *)((longlong)param_1 + 0x294) = 0;
  param_1[0x53] = 0;
  param_1[0x54] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x55));
  *(undefined2 *)((longlong)param_1 + 0x2d4) = 0;
  param_1[0x5b] = 0;
  param_1[0x5e] = 4;
  *(undefined4 *)(param_1 + 0x5f) = 0xffffffff;
  *(undefined1 *)((longlong)param_1 + 0x2fc) = 0;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2e4) = 0;
  *(undefined4 *)(param_1 + 0x5d) = 0;
  *(undefined4 *)((longlong)param_1 + 0x2ec) = 0;
  param_1[0x60] = 0;
  param_1[99] = 4;
  *(undefined4 *)(param_1 + 100) = 0xffffffff;
  *(undefined1 *)((longlong)param_1 + 0x324) = 0;
  *(undefined4 *)(param_1 + 0x61) = 0;
  *(undefined4 *)((longlong)param_1 + 0x30c) = 0;
  *(undefined4 *)(param_1 + 0x62) = 0;
  *(undefined4 *)((longlong)param_1 + 0x314) = 0;
  return param_1;
}



############ FUN_ 180580670 size=103 ############

undefined8 * FUN_180580670(undefined8 *param_1)

{
  *param_1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0();
  param_1[1] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 6) = 0;
  param_1[3] = param_1;
  *param_1 = juce::SelectedItemSet<XYThumb*___ptr64>::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  return param_1;
}



############ FUN_ 1812a5780 size=41 ############

undefined8 * FUN_1812a5780(undefined8 *param_1)

{
  FUN_1812a59f0();
  param_1[2] = 0;
  *param_1 = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  return param_1;
}



############ FUN_ 1812a58e0 size=85 ############

undefined8 * FUN_1812a58e0(undefined8 *param_1)

{
  *param_1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0(param_1 + 1);
  param_1[1] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined1 *)(param_1 + 6) = 0;
  param_1[3] = param_1;
  return param_1;
}



############ FUN_ 18133b700 size=72 ############

undefined8 * FUN_18133b700(undefined8 *param_1)

{
  FUN_1812a59f0();
  FUN_1812a7230(param_1 + 2);
  *param_1 = juce::ModalComponentManager::vftable;
  param_1[2] = juce::ModalComponentManager::vftable;
  param_1[3] = 0;
  param_1[4] = 0;
  return param_1;
}



############ FUN_ 1813bafe0 size=240 ############

undefined8 * FUN_1813bafe0(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  *param_1 = juce::PositionableAudioSource::vftable;
  puVar1 = param_1 + 1;
  *puVar1 = juce::ChangeBroadcaster::vftable;
  FUN_1812a59f0(param_1 + 2);
  param_1[2] = juce::ChangeBroadcaster::ChangeBroadcasterCallback::vftable;
  param_1[5] = 0;
  param_1[6] = 0;
  *(undefined1 *)(param_1 + 7) = 0;
  param_1[4] = puVar1;
  *param_1 = juce::AudioTransportSource::vftable;
  *puVar1 = juce::AudioTransportSource::vftable;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xd));
  *(undefined4 *)((longlong)param_1 + 0x94) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x13) = 0x3f800000;
  *(undefined2 *)((longlong)param_1 + 0x9c) = 0x100;
  param_1[0x14] = 0x40e5888000000000;
  param_1[0x15] = 0;
  param_1[0x16] = 0x80;
  *(undefined2 *)(param_1 + 0x17) = 0;
  return param_1;
}



############ FUN_ 1812a6d90 size=124 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 * FUN_1812a6d90(void)

{
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267b0a0) {
    _Init_thread_header(&DAT_18267b0a0);
    if (DAT_18267b0a0 == -1) {
      DAT_18267b090 = 0;
      _DAT_18267b098 = 0;
      atexit((_func_5014 *)&LAB_181a4ac90);
      _Init_thread_footer(&DAT_18267b0a0);
      return &DAT_18267b090;
    }
  }
  return &DAT_18267b090;
}



############ FUN_ 18133b370 size=76 ############

ulonglong FUN_18133b370(longlong param_1)

{
  ulonglong uVar1;
  longlong *plVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  plVar2 = *(longlong **)(param_1 + 0x18);
  uVar3 = 0;
  uVar1 = (ulonglong)((longlong)(plVar2 + *(int *)(param_1 + 0x24)) + (7 - (longlong)plVar2)) >> 3;
  if (plVar2 + *(int *)(param_1 + 0x24) < plVar2) {
    uVar1 = uVar3;
  }
  uVar4 = uVar3;
  if (uVar1 != 0) {
    do {
      if (*(char *)(*plVar2 + 0x5c) != '\0') {
        uVar4 = (ulonglong)((int)uVar4 + 1);
      }
      plVar2 = plVar2 + 1;
      uVar3 = uVar3 + 1;
    } while (uVar3 != uVar1);
  }
  return uVar4;
}



############ FUN_ 1812fbfd0 size=446 ############

undefined8 * FUN_1812fbfd0(undefined8 *param_1)

{
  FUN_181300930();
  *param_1 = juce::LookAndFeel_V4::vftable;
  param_1[1] = juce::LookAndFeel_V4::vftable;
  param_1[2] = juce::LookAndFeel_V4::vftable;
  param_1[3] = juce::LookAndFeel_V4::vftable;
  param_1[4] = juce::LookAndFeel_V4::vftable;
  param_1[5] = juce::LookAndFeel_V4::vftable;
  param_1[6] = juce::LookAndFeel_V4::vftable;
  param_1[7] = juce::LookAndFeel_V4::vftable;
  param_1[8] = juce::LookAndFeel_V4::vftable;
  param_1[9] = juce::LookAndFeel_V4::vftable;
  param_1[10] = juce::LookAndFeel_V4::vftable;
  param_1[0xb] = juce::LookAndFeel_V4::vftable;
  param_1[0xc] = juce::LookAndFeel_V4::vftable;
  param_1[0xd] = juce::LookAndFeel_V4::vftable;
  param_1[0xe] = juce::LookAndFeel_V4::vftable;
  param_1[0xf] = juce::LookAndFeel_V4::vftable;
  param_1[0x10] = juce::LookAndFeel_V4::vftable;
  param_1[0x11] = juce::LookAndFeel_V4::vftable;
  param_1[0x12] = juce::LookAndFeel_V4::vftable;
  param_1[0x13] = juce::LookAndFeel_V4::vftable;
  param_1[0x14] = juce::LookAndFeel_V4::vftable;
  param_1[0x15] = juce::LookAndFeel_V4::vftable;
  param_1[0x16] = juce::LookAndFeel_V4::vftable;
  param_1[0x17] = juce::LookAndFeel_V4::vftable;
  param_1[0x18] = juce::LookAndFeel_V4::vftable;
  param_1[0x19] = juce::LookAndFeel_V4::vftable;
  param_1[0x1a] = juce::LookAndFeel_V4::vftable;
  param_1[0x1b] = juce::LookAndFeel_V4::vftable;
  param_1[0x1c] = juce::LookAndFeel_V4::vftable;
  FUN_18051f810(param_1 + 0x29,0xff323e44,0xff263238,0xff323e44,0xff8e989b);
  FUN_1812f4280(param_1);
  return param_1;
}



############ FUN_ 18131e060 size=515 ############

void FUN_18131e060(longlong param_1)

{
  int iVar1;
  undefined1 uVar2;
  longlong *plVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined8 extraout_XMM0_Qa;
  double dVar8;
  int local_res8;
  ulonglong local_18;
  int iStack_10;
  int iStack_c;
  
  plVar3 = (longlong *)FUN_18134adf0();
  if (*(code **)(*plVar3 + 0x28) == FUN_181311b00) {
    iVar6 = *(int *)(param_1 + 0x28);
    if (*(int *)(param_1 + 0x2c) < *(int *)(param_1 + 0x28)) {
      iVar6 = *(int *)(param_1 + 0x2c);
    }
    iVar6 = iVar6 * 2;
  }
  else {
    iVar6 = (**(code **)(*plVar3 + 0x28))(plVar3,param_1);
  }
  iVar4 = *(int *)(param_1 + 0x10c);
  if (*(double *)(param_1 + 0xe0) - *(double *)(param_1 + 0xd8) <= 0.0) {
    dVar8 = (double)iVar4;
  }
  else {
    dVar8 = ((*(double *)(param_1 + 0xf0) - *(double *)(param_1 + 0xe8)) * (double)iVar4) /
            (*(double *)(param_1 + 0xe0) - *(double *)(param_1 + 0xd8));
  }
  iVar5 = SUB84(dVar8 + DAT_1824c4520,0);
  if ((iVar5 < iVar6) && (iVar5 = iVar6, iVar4 + -1 < iVar6)) {
    iVar5 = iVar4 + -1;
  }
  iVar6 = *(int *)(param_1 + 0x108);
  if (iVar4 < iVar5) {
    iVar5 = iVar4;
  }
  if (*(double *)(param_1 + 0xf0) - *(double *)(param_1 + 0xe8) <
      *(double *)(param_1 + 0xe0) - *(double *)(param_1 + 0xd8)) {
    local_res8 = SUB84(((double)(iVar4 - iVar5) *
                       (*(double *)(param_1 + 0xe8) - *(double *)(param_1 + 0xd8))) /
                       ((*(double *)(param_1 + 0xe0) - *(double *)(param_1 + 0xd8)) -
                       (*(double *)(param_1 + 0xf0) - *(double *)(param_1 + 0xe8))) + DAT_1824c4520,
                       0);
    iVar6 = iVar6 + local_res8;
  }
  uVar2 = FUN_18131d310(param_1);
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(extraout_XMM0_Qa,uVar2);
  iVar4 = *(int *)(param_1 + 0x110);
  if ((iVar4 != iVar6) || (*(int *)(param_1 + 0x114) != iVar5)) {
    iVar1 = iVar4;
    if (iVar6 < iVar4) {
      iVar1 = iVar6;
    }
    iVar4 = iVar4 + *(int *)(param_1 + 0x114);
    uVar7 = iVar1 - 4;
    if (iVar4 < iVar6 + iVar5) {
      iVar4 = iVar6 + iVar5;
    }
    iVar4 = (iVar4 - uVar7) + 8;
    if (*(char *)(param_1 + 300) == '\0') {
      local_18 = (ulonglong)uVar7;
      _iStack_10 = CONCAT44(*(undefined4 *)(param_1 + 0x2c),iVar4);
    }
    else {
      local_18 = (ulonglong)uVar7 << 0x20;
      _iStack_10 = CONCAT44(iVar4,*(undefined4 *)(param_1 + 0x28));
    }
    FUN_181342a30(param_1,&local_18);
    *(int *)(param_1 + 0x110) = iVar6;
    *(int *)(param_1 + 0x114) = iVar5;
  }
  return;
}



############ FUN_ 1804e6e90 size=189 ############

void FUN_1804e6e90(longlong param_1,undefined1 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong local_res8;
  longlong local_res18;
  longlong local_res20;
  
  local_res8 = 0;
  lVar2 = 0;
  if (*(longlong *)(param_1 + 0x48) != 0) {
    lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x48) + 0x10);
  }
  if (lVar2 != 0) {
    plVar1 = (longlong *)FUN_18134adf0(lVar2);
    plVar1 = (longlong *)(**(code **)(*plVar1 + 0x48))(plVar1,&local_res20,lVar2);
    local_res8 = *plVar1;
    *plVar1 = 0;
    if (local_res20 != 0) {
      FUN_1804e9060();
    }
  }
  local_res18 = 0;
  if (local_res8 != 0) {
    LOCK();
    *(int *)(local_res8 + 0x10) = *(int *)(local_res8 + 0x10) + 1;
    UNLOCK();
    local_res18 = local_res8;
  }
  FUN_1804e6d20(param_1,&local_res18,param_2);
  if (local_res8 != 0) {
    FUN_1804e9060(local_res8);
  }
  return;
}



############ FUN_ 181347860 size=633 ############

undefined8 *
FUN_181347860(undefined8 *param_1,undefined8 param_2,undefined8 *param_3,undefined4 param_4,
             undefined8 param_5)

{
  uint *_Memory;
  code *pcVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined1 local_res20 [8];
  
  FUN_1812cc700(param_1,param_2,1,param_4,0xfffffffffffffffe);
  *param_1 = juce::AlertWindow::vftable;
  param_1[0x18] = &DAT_1821dbf98;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  *(undefined4 *)(param_1 + 0x1c) = 9;
  *(undefined4 *)(param_1 + 0x1d) = param_4;
  param_1[0x1e] = juce::ComponentBoundsConstrainer::vftable;
  *(undefined4 *)(param_1 + 0x1f) = 0;
  *(undefined8 *)((longlong)param_1 + 0xfc) = 0x3fffffff;
  *(undefined8 *)((longlong)param_1 + 0x104) = 0x3fffffff;
  *(undefined8 *)((longlong)param_1 + 0x10c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x114) = 0;
  param_1[0x23] = 0;
  param_1[0x24] = juce::ComponentDragger::vftable;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  param_1[0x2f] = 0;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  param_1[0x32] = 0;
  param_1[0x33] = 0;
  param_1[0x34] = 0;
  param_1[0x35] = 0;
  param_1[0x36] = 0;
  param_1[0x37] = 0;
  param_1[0x38] = 0;
  param_1[0x39] = 0;
  param_1[0x3a] = param_5;
  *(undefined1 *)(param_1 + 0x3b) = 1;
  local_res20[0] = 0;
  EnumWindows(FUN_1812c6400,(LPARAM)local_res20);
  FUN_18134b0f0(param_1,local_res20[0]);
  if (*(char *)*param_3 == '\0') {
    FUN_18049c4e0(&param_5,&DAT_1821e32e4);
    lVar3 = param_1[0x18];
    param_1[0x18] = param_5;
    _Memory = (uint *)(lVar3 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  FUN_181347520(param_1,param_3);
  lVar3 = FUN_18134adf0(param_1);
  pcVar1 = *(code **)(*(longlong *)(lVar3 + 0x38) + 0x18);
  if (pcVar1 == FUN_181313890) {
    uVar2 = 0x101;
  }
  else {
    uVar2 = (*pcVar1)();
  }
  FUN_1812cc1e0(param_1,uVar2 >> 3 & 0xffffff01);
  if (((*(byte *)(param_1 + 0x15) >> 2 & 1) == 0) || ((uVar2 >> 8 & 1) == 0)) {
    uVar4 = 0;
  }
  else {
    uVar4 = 1;
  }
  FUN_1812cc270(param_1,uVar4);
  FUN_1812d3dc0(param_1,0);
  *(undefined4 *)(param_1 + 0x21) = 0x10000;
  *(undefined4 *)((longlong)param_1 + 0x10c) = 0x10000;
  *(undefined4 *)(param_1 + 0x22) = 0x10000;
  *(undefined4 *)((longlong)param_1 + 0x114) = 0x10000;
  return param_1;
}



############ FUN_ 1812cc270 size=227 ############

void FUN_1812cc270(longlong *param_1,char param_2)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  longlong *plVar3;
  longlong lVar4;
  
  *(char *)(param_1 + 0x16) = param_2;
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    puVar1 = (undefined8 *)param_1[0x17];
    param_1[0x17] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    uVar2 = (**(code **)(*param_1 + 0x160))(param_1);
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar2,0);
    return;
  }
  if ((param_2 == '\0') || ((*(byte *)(param_1 + 0x15) & 4) == 0)) {
    puVar1 = (undefined8 *)param_1[0x17];
    param_1[0x17] = 0;
    if (puVar1 != (undefined8 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001812cc34a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      (**(code **)*puVar1)(puVar1,1);
      return;
    }
  }
  else if (param_1[0x17] == 0) {
    plVar3 = (longlong *)FUN_18134adf0();
    lVar4 = (**(code **)(*plVar3 + 0x70))(plVar3,param_1);
    puVar1 = (undefined8 *)param_1[0x17];
    param_1[0x17] = lVar4;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    if (param_1[0x17] != 0) {
      FUN_1812c8710(param_1[0x17],param_1);
      return;
    }
  }
  return;
}



############ FUN_ 18134a8d0 size=330 ############

undefined1 * FUN_18134a8d0(longlong param_1,undefined1 *param_2,undefined4 param_3,char param_4)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  char cVar4;
  undefined4 uVar5;
  longlong *plVar6;
  undefined8 uVar7;
  uint *_Memory;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong local_res8;
  
  plVar6 = (longlong *)FUN_1804e4ce0(&local_res8,param_3);
  plVar8 = *(longlong **)(param_1 + 0x90);
  plVar10 = (longlong *)0x0;
  plVar1 = plVar8 + (longlong)*(int *)(param_1 + 0x9c) * 3;
  plVar9 = plVar10;
  if (plVar8 != plVar1) {
    do {
      if (*plVar8 == *plVar6) {
        plVar9 = plVar8 + 1;
        break;
      }
      plVar8 = plVar8 + 3;
    } while (plVar8 != plVar1);
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (plVar9 != (longlong *)0x0) {
    uVar5 = (**(code **)(*(longlong *)*plVar9 + 8))((longlong *)*plVar9,plVar9 + 1);
    *param_2 = (char)uVar5;
    param_2[1] = (char)((uint)uVar5 >> 8);
    param_2[3] = (char)((uint)uVar5 >> 0x18);
    param_2[2] = (char)((uint)uVar5 >> 0x10);
    return param_2;
  }
  if ((param_4 == '\0') || (*(longlong *)(param_1 + 0x18) == 0)) {
LAB_18134a9e8:
    uVar7 = FUN_18134adf0(param_1);
    FUN_181346420(uVar7,param_2,param_3);
  }
  else {
    lVar3 = *(longlong *)(param_1 + 0x50);
    if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x10) != 0)) {
      if (lVar3 != 0) {
        plVar10 = *(longlong **)(lVar3 + 0x10);
      }
      cVar4 = FUN_181315bd0(plVar10,param_3);
      if (cVar4 != '\0') goto LAB_18134a9e8;
    }
    FUN_18134a8d0(*(undefined8 *)(param_1 + 0x18),param_2,param_3,1);
  }
  return param_2;
}



############ FUN_ 1812ec210 size=167 ############

void FUN_1812ec210(longlong *param_1,char param_2)

{
  longlong lVar1;
  int iVar2;
  
  lVar1 = param_1[0x2e];
  if ((*(char *)(lVar1 + 0x200) != param_2) || (*(char *)(lVar1 + 0x201) != param_2)) {
    FUN_1812e9d80(lVar1,param_2);
    *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
    iVar2 = (param_2 != '\0') + 1;
    *(int *)(param_1 + 0x31) = iVar2;
    *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | (iVar2 == 1) << 5;
    if (*(code **)(*param_1 + 0x108) == FUN_1812eb3c0) {
      if ((0 < *(int *)((longlong)param_1 + 0x2c)) && (0 < (int)param_1[5])) {
        lVar1 = FUN_18134adf0(param_1);
                    /* WARNING: Could not recover jumptable at 0x0001812ec2a6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (**(code **)(*(longlong *)(lVar1 + 0x48) + 0x20))(lVar1 + 0x48,param_1,param_1[0x2e]);
        return;
      }
    }
    else {
      (**(code **)(*param_1 + 0x108))(param_1);
    }
  }
  return;
}



############ FUN_ 1812d65b0 size=122 ############

int FUN_1812d65b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  int iVar2;
  longlong lVar3;
  uint uVar4;
  bool bVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lVar1 = *(longlong *)(param_1 + 8);
  bVar5 = *(char *)(lVar1 + 0x126) != '\0';
  uVar4 = (uint)bVar5;
  if (*(char *)(lVar1 + 0x128) == '\0') {
    uVar4 = bVar5 - 1;
  }
  for (lVar3 = *(longlong *)(param_1 + 0x10); lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x10)) {
    uVar4 = uVar4 + 1;
  }
  iVar2 = *(int *)(lVar1 + 0x120);
  if (iVar2 < 0) {
    lVar3 = FUN_18134adf0(lVar1);
    iVar2 = (**(code **)(*(longlong *)(lVar3 + 0x28) + 0x18))
                      ((longlong *)(lVar3 + 0x28),lVar1,param_3,param_4,uVar6);
  }
  return iVar2 * uVar4;
}



############ FUN_ 1804f4210 size=139 ############

void FUN_1804f4210(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 local_40 [24];
  void *local_28 [2];
  
  lVar1 = FUN_18134adf0();
  uVar2 = (**(code **)(*(longlong *)(lVar1 + 0x20) + 0x18))
                    ((longlong *)(lVar1 + 0x20),local_40,param_1 + 8,param_1 + 0x610);
  FUN_18124e420(param_1 + 0x618,uVar2,(float)*(int *)(param_1 + 0x28) - DAT_1824c4408,DAT_1824c4610)
  ;
  FUN_1804aed10(local_28);
                    /* WARNING: Subroutine does not return */
  free(local_28[0]);
}



############ FUN_ 1804f8160 size=127 ############

void FUN_1804f8160(longlong param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)FUN_18134adf0();
  (**(code **)(*plVar1 + 0x10))
            (plVar1,param_2,*(longlong *)(param_1 + 0x1d0),*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x1c8),
             *(undefined1 *)(*(longlong *)(param_1 + 0x1d0) + 300),param_3,param_4);
  return;
}



############ FUN_ 1804f83c0 size=65 ############

void FUN_1804f83c0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x78) + 0x48))
            (lVar1 + 0x78,*(undefined8 *)(param_1 + 0xb0),param_2,*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1804fa330 size=101 ############

void FUN_1804fa330(longlong param_1,int *param_2,int *param_3)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x40) + 0x30))
            (lVar1 + 0x40,param_1 + 8,0,0xffffffff,param_2,param_3);
  *param_3 = *param_3 + *param_3 / 2;
  *param_2 = *param_2 + ((int)(*param_2 + (*param_2 >> 0x1f & 3U)) >> 2);
  return;
}



############ FUN_ 1804fa690 size=293 ############

void FUN_1804fa690(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  undefined1 uVar4;
  int *piVar5;
  int *piVar6;
  undefined8 local_18;
  undefined4 local_10;
  undefined4 local_c;
  
  if (*(longlong *)(param_1 + 0x138) != 0) {
    return;
  }
  lVar2 = FUN_18134adf0();
  piVar5 = (int *)0x0;
  plVar1 = *(longlong **)(param_1 + 0x100);
  piVar6 = piVar5;
  if (*(int *)(param_1 + 0x130) != 0) {
    piVar6 = (int *)(param_1 + 0x130);
  }
  if (plVar1 != (longlong *)0x0) {
    if (*(int *)(param_1 + 0xb8) == 0) {
LAB_1804fa72a:
      uVar4 = 1;
      goto LAB_1804fa730;
    }
    lVar3 = *plVar1;
    if (lVar3 != plVar1[1]) {
      do {
        if (*(char *)(lVar3 + 0x86) == '\0') {
          piVar5 = (int *)(ulonglong)((int)piVar5 + 1);
        }
        lVar3 = lVar3 + 0x88;
      } while (lVar3 != plVar1[1]);
      if (0 < (int)piVar5) goto LAB_1804fa72a;
    }
  }
  uVar4 = 0;
LAB_1804fa730:
  local_10 = *(undefined4 *)(param_1 + 0x28);
  local_c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = 0;
  (**(code **)(*(longlong *)(lVar2 + 0x40) + 0x10))
            (lVar2 + 0x40,param_2,&local_18,*(undefined1 *)(param_1 + 0x136),
             *(undefined1 *)(param_1 + 0x134),*(undefined1 *)(param_1 + 0x140),
             *(undefined1 *)(param_1 + 0x135),uVar4,param_1 + 0xb0,param_1 + 0x128,
             *(undefined8 *)(param_1 + 0x108),piVar6);
  return;
}



############ FUN_ 1804fcbe0 size=1422 ############

void FUN_1804fcbe0(longlong param_1,int *param_2,char param_3)

{
  float fVar1;
  undefined1 auVar2 [16];
  longlong lVar3;
  code *pcVar4;
  bool bVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  longlong lVar10;
  undefined1 (*pauVar11) [16];
  undefined8 *puVar12;
  longlong lVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int local_res8;
  int iStackX_c;
  int local_res10;
  int local_res18 [2];
  int local_res20;
  int iStack_b4;
  int iStack_ac;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [16];
  undefined1 local_68 [40];
  
  fVar1 = *(float *)(param_1 + 400);
  local_res8 = param_2[2] / 2 + *param_2;
  iStackX_c = param_2[3] / 2 + param_2[1];
  pauVar11 = (undefined1 (*) [16])FUN_1804fc960(param_1,&local_88,CONCAT44(iStackX_c,local_res8),0);
  auVar2 = *pauVar11;
  local_a8 = CONCAT44((float)auVar2._4_4_ / fVar1,(float)auVar2._0_4_ / fVar1);
  uStack_a0 = CONCAT44((float)auVar2._12_4_ / fVar1,(float)auVar2._8_4_ / fVar1);
  puVar12 = (undefined8 *)FUN_1804ab070(&local_a8,&local_98);
  lVar13 = *(longlong *)(param_1 + 0x120);
  uVar6 = *puVar12;
  uVar7 = puVar12[1];
  if (lVar13 == 0) goto LAB_1804fcdad;
  lVar3 = lVar13;
  for (lVar10 = *(longlong *)(lVar13 + 0x18); lVar10 != 0; lVar10 = *(longlong *)(lVar10 + 0x18)) {
    lVar3 = lVar10;
  }
  local_a8 = *(undefined8 *)param_2;
  uStack_a0 = *(undefined8 *)(param_2 + 2);
  local_98 = uVar6;
  uStack_90 = uVar7;
  puVar12 = (undefined8 *)FUN_180520340(local_78,lVar3,&local_a8);
  uVar8 = *puVar12;
  uVar9 = puVar12[1];
  if (lVar3 != lVar13) {
    local_88 = uVar8;
    uStack_80 = uVar9;
    if (*(longlong *)(lVar13 + 0x18) != lVar3) {
      puVar12 = (undefined8 *)FUN_1805202e0(local_68,lVar3,*(longlong *)(lVar13 + 0x18),&local_88);
      local_88 = *puVar12;
      uStack_80 = puVar12[1];
    }
    FUN_180520340(&local_a8,lVar13,&local_88);
    uVar8 = local_a8;
    uVar9 = uStack_a0;
  }
  uStack_a0 = uVar9;
  local_a8 = uVar8;
  iVar20 = (int)local_a8;
  if ((int)local_a8 < (int)local_98) {
    iVar20 = (int)local_98;
  }
  iVar21 = local_a8._4_4_;
  if (local_a8._4_4_ < local_98._4_4_) {
    iVar21 = local_98._4_4_;
  }
  iVar19 = (int)uStack_a0 + (int)local_a8;
  if ((int)local_98 + (int)uStack_90 < (int)uStack_a0 + (int)local_a8) {
    iVar19 = (int)local_98 + (int)uStack_90;
  }
  if (iVar19 - iVar20 < 0) {
LAB_1804fcd9b:
    local_a8 = 0;
    uStack_a0 = 0;
  }
  else {
    iVar17 = uStack_a0._4_4_ + local_a8._4_4_;
    if (uStack_90._4_4_ + local_98._4_4_ < uStack_a0._4_4_ + local_a8._4_4_) {
      iVar17 = uStack_90._4_4_ + local_98._4_4_;
    }
    if (iVar17 - iVar21 < 0) goto LAB_1804fcd9b;
    local_a8 = CONCAT44(iVar21,iVar20);
    uStack_a0 = CONCAT44(iVar17 - iVar21,iVar19 - iVar20);
  }
  *(undefined8 *)param_2 = local_a8;
  *(undefined8 *)(param_2 + 2) = uStack_a0;
LAB_1804fcdad:
  iStack_ac = (int)((ulonglong)uVar7 >> 0x20);
  iVar20 = (int)uVar7;
  FUN_1804fd170(param_1,iVar20 + -0x18,iStack_ac + -0x18,local_res18,&local_res8);
  iVar19 = (int)uVar6;
  iStack_b4 = (int)((ulonglong)uVar6 >> 0x20);
  iVar21 = local_res18[0];
  if (param_3 == '\0') {
    iVar16 = param_2[2];
    iVar17 = *param_2;
    lVar13 = *(longlong *)(param_1 + 0xb0);
    bVar5 = iVar17 + iVar16 / 2 < iVar20 / 2 + iVar19;
    if (lVar13 != 0) {
      lVar3 = *(longlong *)(lVar13 + 0xb0);
      if (lVar3 == 0) {
        if (iVar17 + iVar16 + local_res18[0] < iVar20 + -0x20 + iVar19) {
          bVar5 = true;
        }
      }
      else if (*(int *)(lVar3 + 0x28) / 2 + *(int *)(lVar3 + 0x20) <
               *(int *)(lVar13 + 0x28) / 2 + *(int *)(lVar13 + 0x20)) {
        if (iVar17 + iVar16 + local_res18[0] < iVar20 + -4 + iVar19) {
          bVar5 = true;
        }
      }
      else if (local_res18[0] + 4 < iVar17) {
        bVar5 = false;
      }
    }
    local_res20 = iVar17 - iVar19;
    local_res10 = ((iVar19 - iVar17) - iVar16) + iVar20;
    iVar18 = local_res10;
    if (local_res10 < local_res20) {
      iVar18 = local_res20;
    }
    if (iVar18 + -0x20 < local_res18[0]) {
      FUN_1804fd170(param_1,iVar16 / 3 + (iVar16 >> 0x1f) +
                            (int)(((longlong)iVar16 / 3 + ((longlong)iVar16 >> 0x3f) & 0xffffffffU)
                                 >> 0x1f) + iVar18 + -0x20,iStack_ac + -0x18,local_res18,&local_res8
                   );
      if (1 < *(int *)(param_1 + 0x140)) {
        FUN_1804fd170(param_1,iVar18 + -0x24,iStack_ac + -0x18,local_res18,&local_res8);
      }
      iVar16 = param_2[2];
      bVar5 = local_res20 <= local_res10;
      iVar21 = local_res18[0];
    }
    if (bVar5) {
      iVar18 = iVar20 + -4 + (iVar19 - iVar21);
      if (iVar17 + iVar16 < iVar18) {
        iVar18 = iVar17 + iVar16;
      }
    }
    else {
      iVar18 = iVar19 + 4;
      if (iVar19 + 4 < iVar17 - iVar21) {
        iVar18 = iVar17 - iVar21;
      }
    }
    lVar13 = FUN_18134adf0(param_1);
    pcVar4 = *(code **)(*(longlong *)(lVar13 + 0x40) + 0x80);
    if ((pcVar4 != FUN_18130fd40) && (iVar17 = (*pcVar4)(lVar13 + 0x40), iVar17 == 0)) {
      iVar17 = -1;
      if (bVar5) {
        iVar17 = 1;
      }
      iVar18 = iVar18 + iVar17;
    }
    iVar17 = param_2[1];
    if ((iStack_ac / 2 + iStack_b4 < iVar17 + param_2[3] / 2) &&
       (iVar16 = param_2[3] + (iVar17 - local_res8), iVar17 = iStack_b4, iStack_b4 < iVar16)) {
      iVar17 = iVar16;
    }
  }
  else {
    iVar17 = param_2[1];
    iVar16 = param_2[3];
    iVar18 = *param_2;
    iVar14 = ((iStack_b4 - iVar17) - iVar16) + iStack_ac;
    iVar15 = iVar17 - iStack_b4;
    if (*(int *)(param_1 + 0xf8) == 0) {
      if ((local_res8 < iVar15 + -0x1e) || (iVar14 <= iVar15)) {
        iVar17 = iVar17 - local_res8;
      }
      else {
        iVar17 = iVar17 + iVar16;
      }
    }
    else if ((local_res8 < iVar14 + -0x1e) || (iVar15 <= iVar14)) {
      iVar17 = iVar17 + iVar16;
    }
    else {
      iVar17 = iVar17 - local_res8;
    }
  }
  *(int *)(param_1 + 0x130) = iVar21;
  *(int *)(param_1 + 0x134) = local_res8;
  iVar20 = (iVar19 - iVar21) + -6 + iVar20;
  if (iVar18 < iVar20) {
    iVar20 = iVar18;
  }
  iVar16 = iStack_ac + -6 + (iStack_b4 - local_res8);
  if (iVar17 < iVar16) {
    iVar16 = iVar17;
  }
  iVar17 = iVar19 + 1;
  if (iVar19 + 1 < iVar20) {
    iVar17 = iVar20;
  }
  *(int *)(param_1 + 0x128) = iVar17;
  iVar20 = iStack_b4 + 1;
  if (iStack_b4 + 1 < iVar16) {
    iVar20 = iVar16;
  }
  *(int *)(param_1 + 300) = iVar20;
  lVar13 = *(longlong *)(param_1 + 0xb0);
  if (lVar13 != 0) {
    iVar17 = *(int *)(param_1 + 0x134) + -8;
    iVar16 = *(int *)(param_1 + 0x128) + 4;
    iVar19 = 0;
    if (0 < iVar21 + -8) {
      iVar19 = iVar21 + -8;
    }
    iVar21 = 0;
    if (0 < iVar17) {
      iVar21 = iVar17;
    }
    if (iVar16 < *(int *)(lVar13 + 0x128) + *(int *)(lVar13 + 0x130)) {
      if ((((iVar20 + 4 < *(int *)(lVar13 + 300) + *(int *)(lVar13 + 0x134)) &&
           (*(int *)(lVar13 + 0x128) < iVar16 + iVar19)) &&
          (*(int *)(lVar13 + 300) < iVar21 + iVar20 + 4)) &&
         (((0 < *(int *)(lVar13 + 0x130) && (0 < *(int *)(lVar13 + 0x134))) &&
          ((0 < iVar19 && (0 < iVar21)))))) {
        *(undefined1 *)(param_1 + 0x13b) = 1;
        return;
      }
    }
  }
  *(undefined1 *)(param_1 + 0x13b) = 0;
  return;
}



############ FUN_ 1804fd170 size=317 ############

void FUN_1804fd170(longlong param_1,int param_2,int param_3,undefined4 *param_4,int *param_5)

{
  code *pcVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  longlong lVar5;
  
  *(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_1 + 0xe8);
  iVar4 = 7;
  if (0 < *(int *)(param_1 + 0xec)) {
    iVar4 = *(int *)(param_1 + 0xec);
  }
  *(undefined4 *)(param_1 + 0x144) = 0;
  iVar2 = FUN_1804fd2c0();
  if (iVar2 <= param_2) {
    do {
      if (((param_2 / 2 < iVar2) || (*(int *)(param_1 + 0x144) < param_3)) ||
         (iVar4 <= *(int *)(param_1 + 0x140))) goto LAB_1804fd227;
      *(int *)(param_1 + 0x140) = *(int *)(param_1 + 0x140) + 1;
      iVar2 = FUN_1804fd2c0(param_1,param_2);
    } while (iVar2 <= param_2);
  }
  iVar2 = *(int *)(param_1 + 0x140) + -1;
  iVar4 = 1;
  if (1 < iVar2) {
    iVar4 = iVar2;
  }
  *(int *)(param_1 + 0x140) = iVar4;
  FUN_1804fd2c0(param_1,param_2);
LAB_1804fd227:
  iVar4 = *(int *)(param_1 + 0x144);
  iVar2 = iVar4;
  if (param_3 < iVar4) {
    iVar2 = param_3;
  }
  *(bool *)(param_1 + 0x139) = iVar2 < iVar4;
  uVar3 = FUN_1804fd880(param_1);
  *param_4 = uVar3;
  lVar5 = FUN_18134adf0(param_1);
  pcVar1 = *(code **)(*(longlong *)(lVar5 + 0x40) + 0x80);
  if (pcVar1 == FUN_18130fd40) {
    *param_5 = iVar2 + 4;
    return;
  }
  iVar4 = (*pcVar1)(lVar5 + 0x40);
  *param_5 = iVar2 + iVar4 * 2;
  return;
}



############ FUN_ 1804fd2c0 size=569 ############

int FUN_1804fd2c0(longlong param_1,int param_2)

{
  longlong *plVar1;
  longlong lVar2;
  code *pcVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  ulonglong uVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  longlong lVar12;
  longlong *plVar13;
  int iVar14;
  longlong lVar15;
  int local_res8;
  int local_res10;
  
  iVar8 = 0;
  local_res8 = 0;
  iVar6 = 0;
  local_res10 = 0;
  iVar14 = 0;
  *(undefined4 *)(param_1 + 0x144) = 0;
  if (0 < *(int *)(param_1 + 0x140)) {
    lVar15 = 0;
    plVar1 = (longlong *)(param_1 + 0x160);
    do {
      iVar9 = 0;
      iVar6 = *(int *)(param_1 + 0x140);
      iVar11 = *(int *)(param_1 + 0xf0);
      iVar4 = iVar6 + -1 + *(int *)(param_1 + 0x10c);
      iVar10 = *(int *)(param_1 + 0x10c) - local_res8;
      iVar5 = iVar4 / iVar6;
      uVar7 = (longlong)iVar4 % (longlong)iVar6 & 0xffffffff;
      if (iVar5 < iVar10) {
        iVar10 = iVar5;
      }
      lVar12 = (longlong)(iVar10 + -1);
      if (-1 < iVar10 + -1) {
        uVar7 = *(ulonglong *)(param_1 + 0x100);
        plVar13 = (longlong *)(uVar7 + (local_res8 + lVar12) * 8);
        do {
          lVar2 = *plVar13;
          plVar13 = plVar13 + -1;
          if (iVar11 < *(int *)(lVar2 + 0x28)) {
            iVar11 = *(int *)(lVar2 + 0x28);
          }
          iVar9 = iVar9 + *(int *)(lVar2 + 0x2c);
          lVar12 = lVar12 + -1;
        } while (-1 < lVar12);
      }
      lVar12 = FUN_18134adf0(param_1,uVar7);
      pcVar3 = *(code **)(*(longlong *)(lVar12 + 0x40) + 0x80);
      if (pcVar3 == FUN_18130fd40) {
        iVar6 = 2;
      }
      else {
        iVar6 = (*pcVar3)(lVar12 + 0x40);
      }
      iVar11 = iVar11 + iVar6 * 2;
      iVar6 = *(int *)(param_1 + 0x140) + -2;
      iVar4 = 1;
      if (1 < iVar6) {
        iVar4 = iVar6;
      }
      iVar6 = param_2 / iVar4;
      if (iVar11 < param_2 / iVar4) {
        iVar6 = iVar11;
      }
      if (-1 < lVar15) {
        iVar11 = *(int *)(param_1 + 0x16c);
        if (iVar14 < iVar11) {
          *(int *)(*plVar1 + lVar15 * 4) = iVar6;
        }
        else {
          iVar4 = iVar11 + 1;
          if (*(int *)(param_1 + 0x168) < iVar4) {
            if (iVar4 < 0) {
              iVar4 = iVar11 + 2;
            }
            FUN_1804af790(plVar1,iVar11 + 9 + (iVar4 >> 1) & 0xfffffff8);
          }
          iVar11 = *(int *)(param_1 + 0x16c);
          *(int *)(param_1 + 0x16c) = iVar11 + 1;
          *(int *)(*plVar1 + (longlong)iVar11 * 4) = iVar6;
        }
      }
      iVar6 = local_res10 + iVar6;
      iVar11 = *(int *)(param_1 + 0x144);
      if (*(int *)(param_1 + 0x144) < iVar9) {
        iVar11 = iVar9;
      }
      local_res8 = local_res8 + iVar10;
      iVar14 = iVar14 + 1;
      *(int *)(param_1 + 0x144) = iVar11;
      lVar15 = lVar15 + 1;
      local_res10 = iVar6;
    } while (iVar14 < *(int *)(param_1 + 0x140));
  }
  if (*(int *)(param_1 + 0xe4) < param_2) {
    param_2 = *(int *)(param_1 + 0xe4);
  }
  if (param_2 <= iVar6) {
    return iVar6;
  }
  if (0 < *(int *)(param_1 + 0x140)) {
    plVar1 = (longlong *)(param_1 + 0x160);
    do {
      iVar6 = *(int *)(param_1 + 0x16c);
      iVar14 = param_2 / *(int *)(param_1 + 0x140);
      if (iVar6 < 1) {
        iVar11 = iVar6 + 1;
        if (*(int *)(param_1 + 0x168) < iVar11) {
          if (iVar11 < 0) {
            iVar11 = iVar6 + 2;
          }
          FUN_1804af790(plVar1,iVar6 + 9 + (iVar11 >> 1) & 0xfffffff8);
        }
        iVar6 = *(int *)(param_1 + 0x16c);
        *(int *)(param_1 + 0x16c) = iVar6 + 1;
        *(int *)(*plVar1 + (longlong)iVar6 * 4) = iVar14;
      }
      else {
        *(int *)*plVar1 = iVar14;
      }
      iVar8 = iVar8 + 1;
    } while (iVar8 < *(int *)(param_1 + 0x140));
  }
  return param_2;
}



############ FUN_ 1804fb790 size=80 ############

void FUN_1804fb790(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  if ((*(byte *)(param_1 + 0xa8) & 4) != 0) {
    FUN_1812a3160(param_2,DAT_18262b5a8);
  }
  lVar1 = FUN_18134adf0(param_1);
                    /* WARNING: Could not recover jumptable at 0x0001804fb7dc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(longlong *)(lVar1 + 0x40) + 8))
            (lVar1 + 0x40,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1804fb7e0 size=337 ############

void FUN_1804fb7e0(longlong param_1,longlong param_2)

{
  int iVar1;
  code *pcVar2;
  longlong lVar3;
  longlong lVar4;
  undefined4 *in_stack_ffffffffffffffd8;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  lVar3 = FUN_18134adf0();
  if (*(longlong *)(param_1 + 0x120) != 0) {
    lVar4 = FUN_18134adf0(param_1);
    pcVar2 = *(code **)(*(longlong *)(lVar4 + 0x40) + 0x80);
    if (pcVar2 == FUN_18130fd40) {
      local_18 = 2;
    }
    else {
      local_18 = (*pcVar2)(lVar4 + 0x40);
    }
    in_stack_ffffffffffffffd8 = &local_18;
    local_14 = local_18;
    local_10 = local_18;
    local_c = local_18;
    (**(code **)(*(longlong *)(lVar3 + 0x60) + 0x10))
              ((longlong *)(lVar3 + 0x60),param_2,*(undefined4 *)(param_1 + 0x28),
               *(undefined4 *)(param_1 + 0x2c),in_stack_ffffffffffffffd8);
  }
  if (*(int *)(param_1 + 0x148) == 0) {
    if (*(char *)(param_1 + 0x139) == '\0') {
      return;
    }
    if (*(char *)(param_1 + 0x139) == '\0') goto LAB_1804fb8a2;
  }
  if (0 < *(int *)(param_1 + 0x148)) {
    in_stack_ffffffffffffffd8 =
         (undefined4 *)CONCAT71((int7)((ulonglong)in_stack_ffffffffffffffd8 >> 8),1);
    (**(code **)(*(longlong *)(lVar3 + 0x40) + 0x28))
              (lVar3 + 0x40,param_2,*(undefined4 *)(param_1 + 0x28),0x18,in_stack_ffffffffffffffd8);
  }
LAB_1804fb8a2:
  if (((*(int *)(param_1 + 0x148) != 0) || (*(char *)(param_1 + 0x139) != '\0')) &&
     (*(int *)(param_1 + 0x148) < *(int *)(param_1 + 0x144) - *(int *)(param_1 + 0x134))) {
    iVar1 = *(int *)(param_1 + 0x2c);
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0x10))
              (*(longlong **)(param_2 + 8),(ulonglong)(iVar1 - 0x18) << 0x20);
    (**(code **)(*(longlong *)(lVar3 + 0x40) + 0x28))
              (lVar3 + 0x40,param_2,*(undefined4 *)(param_1 + 0x28),0x18,
               (ulonglong)in_stack_ffffffffffffffd8 & 0xffffffffffffff00);
  }
  return;
}



############ FUN_ 1812d8c50 size=54 ############

void FUN_1812d8c50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(int *)(param_1 + 0x120) < 0) {
    lVar1 = FUN_18134adf0();
    (**(code **)(*(longlong *)(lVar1 + 0x28) + 0x18))
              ((longlong *)(lVar1 + 0x28),param_1,param_3,param_4,uVar2);
  }
  return;
}



############ FUN_ 1812d6520 size=81 ############

byte FUN_1812d6520(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  
  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {
    return *(byte *)(param_1 + 0x40) >> 2 & 1;
  }
  if (*(longlong *)(param_1 + 8) != 0) {
    lVar2 = FUN_18134adf0();
    cVar1 = (**(code **)(*(longlong *)(lVar2 + 0x28) + 0x10))
                      (lVar2 + 0x28,*(undefined8 *)(param_1 + 8));
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



############ FUN_ 18050b760 size=1039 ############

int * FUN_18050b760(int *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  int iVar1;
  undefined8 uVar2;
  longlong *plVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  longlong *plVar9;
  longlong lVar10;
  longlong *plVar11;
  longlong lVar12;
  code *pcVar13;
  int iVar14;
  int local_res8;
  uint uStackX_c;
  int local_48;
  int iStack_44;
  int local_38;
  int iStack_34;
  int iStack_30;
  undefined4 uStack_2c;
  
  *(undefined8 *)param_1 = *(undefined8 *)(param_4 + 0x18);
  uStackX_c = *(uint *)(param_4 + 0x1c);
  lVar10 = *(longlong *)(*(longlong *)(param_2 + 0xd0) + 0x180);
  lVar8 = 0;
  lVar12 = lVar8;
  if (lVar10 != 0) {
    lVar12 = *(longlong *)(lVar10 + 0x10);
  }
  local_res8 = 0;
  FUN_18051db10(&local_res8,lVar12,param_2,(ulonglong)uStackX_c << 0x20,0xfffffffffffffffe);
  if (*(longlong *)(*(longlong *)(lVar12 + 200) + 0x108) != 0) {
    lVar8 = FUN_18050ab80(lVar12,uStackX_c,&local_38);
  }
  *(longlong *)(param_1 + 2) = lVar8;
  param_1[4] = 0;
  if (lVar8 == 0) {
    lVar10 = *(longlong *)(param_2 + 0x108);
    if (lVar10 == 0) {
      return param_1;
    }
    *(longlong *)(param_1 + 2) = lVar10;
    param_1[4] = *(int *)(lVar10 + 0x24);
    local_res8 = FUN_1812d65b0(lVar10);
    iVar14 = *(int *)(lVar10 + 0x28);
    if (*(longlong *)(lVar10 + 8) != 0) {
      uVar2 = *(undefined8 *)(*(longlong *)(*(longlong *)(lVar10 + 8) + 0xd0) + 0x188);
      local_res8 = local_res8 - (int)uVar2;
      iVar14 = iVar14 - (int)((ulonglong)uVar2 >> 0x20);
    }
    uStackX_c = iVar14 + *(int *)(lVar10 + 0x30);
    *(ulonglong *)param_1 = CONCAT44(uStackX_c,local_res8);
    iVar14 = *(int *)(param_2 + 0x120);
    if (iVar14 < 0) {
      lVar10 = FUN_18134adf0(param_2);
      iVar14 = (**(code **)(*(longlong *)(lVar10 + 0x28) + 0x18))
                         ((longlong *)(lVar10 + 0x28),param_2);
    }
    *param_1 = *param_1 + iVar14;
    return param_1;
  }
  local_48 = FUN_1812d65b0(lVar8);
  iVar14 = *(int *)(lVar8 + 0x28);
  iVar1 = *(int *)(lVar8 + 0x30);
  if (*(longlong *)(lVar8 + 8) != 0) {
    uVar2 = *(undefined8 *)(*(longlong *)(*(longlong *)(lVar8 + 8) + 0xd0) + 0x188);
    local_48 = local_48 - (int)uVar2;
    iVar14 = iVar14 - (int)((ulonglong)uVar2 >> 0x20);
  }
  plVar3 = *(longlong **)(param_1 + 2);
  lVar10 = plVar3[2];
  if (lVar10 == 0) {
    iVar7 = 0;
  }
  else {
    plVar9 = *(longlong **)(lVar10 + 0x18);
    for (plVar11 = plVar9; plVar11 != plVar9 + *(int *)(lVar10 + 0x24); plVar11 = plVar11 + 1) {
      if (plVar3 == (longlong *)*plVar11) {
        iVar7 = (int)((longlong)plVar11 - (longlong)plVar9 >> 3);
        goto LAB_18050b893;
      }
    }
    iVar7 = -1;
  }
LAB_18050b893:
  param_1[4] = iVar7;
  iVar7 = param_1[1];
  param_1[1] = iVar14;
  if (*(int *)((longlong)plVar3 + 0x24) == 0) {
LAB_18050b8d3:
    if (*(int *)(param_3 + 0xc) < 1) {
      pcVar13 = *(code **)(*plVar3 + 0xa0);
      param_3 = param_4;
      if (pcVar13 != FUN_1812d6930) goto LAB_18050bb20;
    }
    else {
      pcVar13 = *(code **)(*plVar3 + 0x90);
      if (pcVar13 != FUN_1812d6950) {
LAB_18050bb20:
        cVar4 = (*pcVar13)(plVar3,param_3);
        if (((cVar4 != '\0') &&
            (iVar6 = (int)(iVar1 + (iVar1 >> 0x1f & 3U)) >> 2, iVar14 + iVar6 < iVar7)) &&
           (iVar7 < (iVar14 - iVar6) + iVar1)) {
          param_1[4] = 0;
          iVar7 = FUN_1812d8c50(param_2);
          *param_1 = iVar7 + local_48;
          param_1[1] = iVar14 + iVar1;
          return param_1;
        }
      }
    }
  }
  else {
    uVar5 = *(uint *)((longlong)plVar3 + 0x44) & 3;
    if (uVar5 == 0) {
      if (plVar3[1] == 0) goto LAB_18050b8d3;
      cVar4 = *(char *)(plVar3[1] + 0x124);
    }
    else {
      cVar4 = uVar5 == 2;
    }
    if (cVar4 == '\0') goto LAB_18050b8d3;
  }
  if (iVar1 / 2 + iVar14 < iVar7) {
    iVar14 = (**(code **)(**(longlong **)(param_1 + 2) + 0x28))();
    param_1[1] = param_1[1] + iVar14;
LAB_18050b930:
    lVar10 = *(longlong *)(param_1 + 2);
    lVar12 = *(longlong *)(lVar10 + 0x10);
    if (lVar12 != 0) {
      if (*(int *)(lVar12 + 0x24) < 1) {
        lVar12 = 0;
      }
      else {
        lVar12 = *(longlong *)
                  (*(longlong *)(lVar12 + 0x18) + (longlong)(*(int *)(lVar12 + 0x24) + -1) * 8);
      }
      if (lVar12 != lVar10) goto LAB_18050ba62;
    }
    if (((*(longlong *)(lVar10 + 0x10) == 0) ||
        (lVar10 = *(longlong *)(lVar10 + 0x10), *(longlong *)(lVar10 + 0x10) == 0)) ||
       (local_48 < *param_1)) goto LAB_18050ba62;
    *(longlong *)(param_1 + 2) = lVar10;
    local_48 = FUN_1812d65b0();
    iVar14 = *(int *)(lVar10 + 0x34);
    lVar12 = *(longlong *)(lVar10 + 8);
    if ((lVar12 != 0) && (iVar14 < 0)) {
      iVar14 = *(int *)(*(longlong *)(lVar12 + 0xd0) + 400) - local_48;
    }
    iStack_44 = *(int *)(lVar10 + 0x28);
    iStack_30 = 0;
    if (0 < iVar14) {
      iStack_30 = iVar14;
    }
    uStack_2c = *(undefined4 *)(lVar10 + 0x30);
    if (lVar12 != 0) {
      uVar2 = *(undefined8 *)(*(longlong *)(lVar12 + 0xd0) + 0x188);
      local_48 = local_48 - (int)uVar2;
      iStack_44 = iStack_44 - (int)((ulonglong)uVar2 >> 0x20);
    }
    local_38 = local_48;
    iStack_34 = iStack_44;
    lVar10 = *(longlong *)(*(longlong *)(param_1 + 2) + 0x10);
    if (lVar10 == 0) {
      param_1[4] = 0;
    }
    else {
      plVar3 = *(longlong **)(lVar10 + 0x18);
      for (plVar9 = plVar3; plVar9 != plVar3 + *(int *)(lVar10 + 0x24); plVar9 = plVar9 + 1) {
        if (*(longlong *)(param_1 + 2) == *plVar9) {
          param_1[4] = (int)((longlong)plVar9 - (longlong)plVar3 >> 3);
          goto LAB_18050b930;
        }
      }
      param_1[4] = -1;
    }
    goto LAB_18050b930;
  }
LAB_18050ba65:
  *param_1 = local_48;
  *(undefined8 *)(param_1 + 2) = *(undefined8 *)(*(longlong *)(param_1 + 2) + 0x10);
  return param_1;
LAB_18050ba62:
  param_1[4] = param_1[4] + 1;
  goto LAB_18050ba65;
}



############ FUN_ 180511150 size=139 ############

void FUN_180511150(longlong param_1)

{
  undefined8 *puVar1;
  char cVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 uVar5;
  
  cVar2 = FUN_18134aa20(*(undefined8 *)(param_1 + 8),1);
  if ((cVar2 == '\0') && ((*(uint *)(param_1 + 0x10) >> 8 & 1) != 0)) {
    if (((*(uint *)(param_1 + 0x10) >> 3 & 1) != 0) && (iVar3 = FUN_181216340(), 0x202 < iVar3)) {
      return;
    }
    plVar4 = (longlong *)FUN_18134adf0(*(undefined8 *)(param_1 + 8));
    uVar5 = (**(code **)(*plVar4 + 0x70))(plVar4,*(undefined8 *)(param_1 + 8));
    puVar1 = *(undefined8 **)(param_1 + 0x98);
    *(undefined8 *)(param_1 + 0x98) = uVar5;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    if (*(longlong *)(param_1 + 0x98) != 0) {
      FUN_1812c8710(*(longlong *)(param_1 + 0x98),*(undefined8 *)(param_1 + 8));
      return;
    }
  }
  return;
}



############ FUN_ 1812bb890 size=49 ############

void FUN_1812bb890(undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  undefined4 *puVar2;
  undefined1 local_res18 [16];
  
  uVar1 = FUN_18134adf0();
  puVar2 = (undefined4 *)FUN_181346420(uVar1,local_res18,0x1005700);
  FUN_1812a3160(param_2,*puVar2);
  return;
}



############ FUN_ 1812c9b20 size=585 ############

undefined8 FUN_1812c9b20(longlong param_1,int *param_2,longlong param_3)

{
  wint_t *pwVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  bool bVar5;
  wint_t wVar6;
  wint_t wVar7;
  longlong lVar8;
  longlong *plVar9;
  int iVar10;
  longlong lVar11;
  wint_t *pwVar12;
  ulonglong uVar13;
  uint uVar14;
  ulonglong uVar15;
  undefined8 uVar16;
  int local_a0 [4];
  longlong local_90;
  undefined8 local_88;
  int local_80;
  undefined1 local_7c;
  undefined4 local_78;
  undefined4 local_70 [2];
  undefined1 *local_68;
  undefined1 *local_60;
  undefined1 *local_58;
  undefined8 local_50;
  undefined8 local_48;
  uint local_40;
  
  uVar16 = 0xfffffffffffffffe;
  bVar4 = false;
  uVar13 = 0;
  uVar15 = uVar13;
  bVar5 = false;
  if (*(int *)(param_1 + 0x5c) < 1) {
LAB_1812c9cb4:
    if ((param_3 != 0) && (bVar4)) {
      plVar9 = (longlong *)FUN_18134adf0(param_3);
      if (*(code **)(*plVar9 + 0x78) == FUN_1812c6070) {
        MessageBeep(0);
      }
      else {
        (**(code **)(*plVar9 + 0x78))(plVar9);
      }
    }
    return 0;
  }
LAB_1812c9b70:
  bVar4 = bVar5;
  piVar3 = *(int **)(uVar13 + *(longlong *)(param_1 + 0x50));
  pwVar12 = *(wint_t **)(piVar3 + 2);
  pwVar1 = pwVar12 + (longlong)piVar3[5] * 6;
  for (; pwVar12 != pwVar1; pwVar12 = pwVar12 + 6) {
    if (param_2[1] == *(int *)(pwVar12 + 2)) {
      if (((param_2[2] == *(int *)(pwVar12 + 4)) || (param_2[2] == 0)) ||
         (*(int *)(pwVar12 + 4) == 0)) {
        iVar10 = *param_2;
        if (iVar10 == *(int *)pwVar12) {
LAB_1812c9be4:
          lVar8 = *(longlong *)(param_1 + 0x48);
          iVar10 = *(int *)(lVar8 + 0x24) + -1;
          if (-1 < iVar10) {
            iVar2 = *piVar3;
            lVar11 = (longlong)iVar10;
            goto LAB_1812c9c00;
          }
          break;
        }
        if ((iVar10 < 0x100) && (*(int *)pwVar12 < 0x100)) {
          wVar6 = towlower((wint_t)iVar10);
          wVar7 = towlower(*pwVar12);
          if (wVar6 == wVar7) goto LAB_1812c9be4;
        }
      }
    }
  }
  goto LAB_1812c9c93;
  while( true ) {
    iVar10 = iVar10 + -1;
    lVar11 = lVar11 + -1;
    if (lVar11 < 0) break;
LAB_1812c9c00:
    if (**(int **)(*(longlong *)(lVar8 + 0x18) + lVar11 * 8) == iVar2) {
      lVar11 = *(longlong *)(*(longlong *)(lVar8 + 0x18) + (longlong)iVar10 * 8);
      if ((lVar11 != 0) && ((*(byte *)(lVar11 + 0x30) & 4) == 0)) {
        local_70[0] = 0;
        local_68 = &DAT_1821dbf98;
        local_60 = &DAT_1821dbf98;
        local_58 = &DAT_1821dbf98;
        local_50 = 0;
        local_48 = 0;
        local_40 = 0;
        lVar8 = FUN_1812cb190(lVar8,iVar2,local_70,iVar2,uVar16);
        if (lVar8 != 0) {
          if ((local_40 & 1) == 0) {
            local_a0[0] = *piVar3;
            local_a0[1] = 0;
            local_a0[2] = 1;
            local_7c = 1;
            local_88 = *(undefined8 *)param_2;
            local_80 = param_2[2];
            local_78 = 0;
            local_90 = param_3;
            FUN_1812cb380(*(undefined8 *)(param_1 + 0x48),local_a0,0);
            FUN_1804e9590(local_70);
            return 1;
          }
          bVar4 = true;
        }
        FUN_1804e9590(local_70);
      }
      break;
    }
  }
LAB_1812c9c93:
  uVar14 = (int)uVar15 + 1;
  uVar13 = uVar13 + 8;
  uVar15 = (ulonglong)uVar14;
  bVar5 = bVar4;
  if (*(int *)(param_1 + 0x5c) <= (int)uVar14) goto LAB_1812c9cb4;
  goto LAB_1812c9b70;
}



############ FUN_ 1812cd270 size=65 ############

void FUN_1812cd270(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x70) + 0x10))
            (lVar1 + 0x70,param_2,param_1 + 0xd8,*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1812d3a80 size=100 ############

int FUN_1812d3a80(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  code *pcVar1;
  int iVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar3 = FUN_18134adf0();
  pcVar1 = *(code **)(*(longlong *)(lVar3 + 0xa0) + 0x10);
  if (pcVar1 == FUN_181307930) {
    iVar2 = 0x14;
    if (0x14 < (int)*(float *)(param_1 + 0x128)) {
      iVar2 = (int)*(float *)(param_1 + 0x128);
    }
    return iVar2;
  }
  iVar2 = (*pcVar1)((longlong *)(lVar3 + 0xa0),param_1,pcVar1,param_4,uVar4);
  if (iVar2 < (int)*(float *)(param_1 + 0x128)) {
    iVar2 = (int)*(float *)(param_1 + 0x128);
  }
  return iVar2;
}



############ FUN_ 1812d3a30 size=71 ############

void FUN_1812d3a30(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0xa0) + 8))
            ((longlong *)(lVar1 + 0xa0),param_1,param_2,param_1 + 0xd0,param_1 + 0x120);
  return;
}



############ FUN_ 1812d3ba0 size=52 ############

undefined8 FUN_1812d3ba0(void)

{
  code *pcVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  lVar2 = FUN_18134adf0();
  pcVar1 = *(code **)(*(longlong *)(lVar2 + 0x38) + 0x18);
  if (pcVar1 == FUN_181313890) {
    return 0x101;
  }
  uVar3 = (*pcVar1)(lVar2 + 0x38);
  return uVar3;
}



############ FUN_ 1812d3be0 size=118 ############

void FUN_1812d3be0(longlong param_1)

{
  code *pcVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  lVar3 = FUN_18134adf0();
  pcVar1 = *(code **)(*(longlong *)(lVar3 + 0x38) + 0x18);
  if (pcVar1 == FUN_181313890) {
    uVar2 = 0x101;
  }
  else {
    uVar2 = (*pcVar1)(lVar3 + 0x38);
  }
  FUN_1812cc1e0(param_1,uVar2 >> 3 & 0xffffff01);
  if (((*(byte *)(param_1 + 0xa8) & 4) == 0) || ((uVar2 >> 8 & 1) == 0)) {
    uVar4 = 0;
  }
  else {
    uVar4 = 1;
  }
  FUN_1812cc270(param_1,uVar4);
  FUN_1812d3dc0(param_1,0);
  return;
}



############ FUN_ 1812d6b20 size=139 ############

void FUN_1812d6b20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,
                  undefined1 param_5)

{
  uint uVar1;
  longlong lVar2;
  bool bVar3;
  
  lVar2 = FUN_18134adf0();
  uVar1 = *(uint *)(param_1 + 0x44) & 3;
  if (uVar1 == 0) {
    if ((*(longlong *)(param_1 + 8) == 0) || (*(char *)(*(longlong *)(param_1 + 8) + 0x124) == '\0')
       ) {
      bVar3 = false;
    }
    else {
      bVar3 = true;
    }
  }
  else {
    bVar3 = uVar1 == 2;
  }
  (**(code **)(*(longlong *)(lVar2 + 0x28) + 8))(lVar2 + 0x28,param_2,param_3,param_4,bVar3,param_5)
  ;
  return;
}



############ FUN_ 1812da6a0 size=61 ############

void FUN_1812da6a0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0xa8) + 8))
            ((longlong *)(lVar1 + 0xa8),param_2,*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x2c),param_1);
  return;
}



############ FUN_ 1812dad10 size=558 ############

void FUN_1812dad10(longlong *param_1,longlong param_2,char param_3,char param_4)

{
  int iVar1;
  code *pcVar2;
  longlong lVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined8 uVar6;
  int iVar7;
  longlong local_res8;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  
  if (*(char *)((longlong)param_1 + 0x1ea) != '\0') {
    lVar3 = FUN_18134adf0();
    pcVar2 = *(code **)(*(longlong *)(lVar3 + 0xa8) + 0x18);
    if (pcVar2 == FUN_181308110) {
      if (param_4 == '\0') {
        if (param_3 == '\0') goto LAB_1812dada3;
        uVar6 = 0x1003220;
      }
      else {
        uVar6 = 0x1003230;
      }
      puVar4 = (undefined4 *)FUN_18134a8d0(param_1,&local_res8,uVar6,1);
      FUN_1812a3160(param_2,*puVar4);
    }
    else {
      (*pcVar2)((longlong *)(lVar3 + 0xa8),param_2,(int)param_1[5],
                *(undefined4 *)((longlong)param_1 + 0x2c),param_3,param_4,param_1);
    }
  }
LAB_1812dada3:
  if ((int)param_1[0x3a] != 0) {
    iVar1 = *(int *)((longlong)param_1 + 0x1ec);
    iVar5 = *(int *)((longlong)param_1 + 0x2c) + iVar1 * -2;
    iVar7 = iVar1;
    if ((int)param_1[0x3a] == 1) {
      iVar7 = (int)param_1[0x3f] + (int)param_1[0x3e] + iVar1 / 2;
      iVar5 = iVar5 - (int)param_1[0x3f];
    }
    lVar3 = FUN_18134adf0(param_1);
    (**(code **)(*(longlong *)(lVar3 + 0xa8) + 0x20))
              ((longlong *)(lVar3 + 0xa8),param_2,iVar1,iVar7,(int)param_1[5] + iVar1 * -2,iVar5,
               param_1 + 0x2b,param_1);
  }
  if ((0 < *(int *)((longlong)param_1 + 500)) && (0 < (int)param_1[0x3f])) {
    local_res8 = param_2;
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    *(undefined1 *)(param_2 + 0x10) = 1;
    local_38 = *(undefined4 *)((longlong)param_1 + 0x1ec);
    uStack_34 = (undefined4)param_1[0x3e];
    uStack_30 = *(undefined4 *)((longlong)param_1 + 500);
    uStack_2c = (undefined4)param_1[0x3f];
    *(undefined1 *)(param_2 + 0x10) = 0;
    (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_38);
    uVar6 = *(undefined8 *)((longlong)param_1 + 0x1ec);
    if (*(char *)(param_2 + 0x10) != '\0') {
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
    }
    (**(code **)(**(longlong **)(param_2 + 8) + 0x10))(*(longlong **)(param_2 + 8),uVar6);
    if (*(code **)(*param_1 + 0x198) != _guard_check_icall) {
      (**(code **)(*param_1 + 0x198))
                (param_1,param_2,*(undefined4 *)((longlong)param_1 + 500),(int)param_1[0x3f],param_3
                 ,param_4);
    }
    if (*(char *)(param_2 + 0x10) == '\0') {
      (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
    }
    else {
      *(undefined1 *)(param_2 + 0x10) = 0;
    }
  }
  return;
}



############ FUN_ 1812df030 size=59 ############

void FUN_1812df030(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x18) + 8))
            (lVar1 + 0x18,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
             param_1);
  return;
}



############ FUN_ 1812e6330 size=34 ############

void FUN_1812e6330(longlong param_1)

{
  undefined8 uVar1;
  undefined8 uVar2;
  
  uVar1 = *(undefined8 *)(param_1 + 0x200);
  uVar2 = FUN_18134adf0();
  FUN_1805023a0(uVar1,uVar2);
  return;
}



############ FUN_ 1812e6640 size=527 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e6640(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  uint uVar2;
  double dVar3;
  longlong lVar4;
  int iVar5;
  void *_Src;
  longlong lVar6;
  uint *_Memory;
  size_t sVar7;
  longlong lVar8;
  undefined1 *puVar9;
  bool bVar10;
  undefined1 auStack_a8 [32];
  undefined4 local_88;
  undefined8 local_80;
  undefined1 **local_78;
  char local_68 [8];
  undefined1 *local_60;
  double local_58;
  undefined8 local_50;
  ulonglong local_38 [2];
  
  local_50 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_60 = &DAT_1821dbf98;
  if (*(char *)(param_1 + 0xe8) == '\0') {
    if ((*(uint *)(*(longlong *)(param_1 + 0xf0) + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*(longlong *)(param_1 + 0xf0) + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    local_60 = *(undefined1 **)(param_1 + 0xf0);
    LOCK();
    UNLOCK();
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  else {
    dVar3 = *(double *)(param_1 + 0xe0);
    if ((0.0 <= dVar3) && (dVar3 <= DAT_1824c4140)) {
      local_58 = dVar3 * DAT_1824c42f0 + DAT_1824c4520;
      _Src = (void *)FUN_181233e10(local_38,(ulonglong)local_58 & 0xffffffff);
      iVar5 = (int)local_38 - (int)_Src;
      if (0 < iVar5) {
        lVar8 = -1;
        do {
          lVar8 = lVar8 + 1;
        } while (local_60[lVar8] != '\0');
        sVar7 = (size_t)iVar5;
        FUN_1812342b0(&local_60,sVar7 + lVar8);
        puVar9 = local_60 + (int)lVar8;
        memcpy(puVar9,_Src,sVar7);
        puVar9[sVar7] = 0;
      }
      local_68[0] = '%';
      local_68[1] = '\0';
      lVar8 = -1;
      do {
        lVar6 = lVar8 + 1;
        lVar4 = lVar8 + 1;
        lVar8 = lVar6;
      } while (local_68[lVar4] != '\0');
      iVar5 = ((int)local_68 + (int)lVar6) - (int)local_68;
      if (0 < iVar5) {
        lVar8 = -1;
        do {
          lVar8 = lVar8 + 1;
        } while (local_60[lVar8] != '\0');
        sVar7 = (size_t)iVar5;
        FUN_1812342b0(&local_60,sVar7 + lVar8);
        puVar9 = local_60 + (int)lVar8;
        memcpy(puVar9,local_68,sVar7);
        puVar9[sVar7] = 0;
      }
    }
  }
  lVar8 = FUN_18134adf0(param_1);
  local_88 = *(undefined4 *)(param_1 + 0x2c);
  local_78 = &local_60;
  local_80 = *(undefined8 *)(param_1 + 0xe0);
  (**(code **)(*(longlong *)(lVar8 + 0xb8) + 8))
            ((longlong *)(lVar8 + 0xb8),param_2,param_1,*(undefined4 *)(param_1 + 0x28));
  _Memory = (uint *)(local_60 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1812e6870 size=78 ############

void FUN_1812e6870(longlong *param_1)

{
  undefined1 uVar1;
  longlong lVar2;
  
  if (*(code **)(*param_1 + 0xa0) == FUN_1812e68d0) {
    lVar2 = FUN_18134adf0();
    uVar1 = (**(code **)(*(longlong *)(lVar2 + 0xb8) + 0x10))((longlong *)(lVar2 + 0xb8),param_1);
    FUN_18134bd50(param_1,uVar1);
    return;
  }
  (**(code **)(*param_1 + 0xa0))();
  return;
}



############ FUN_ 1812e68d0 size=46 ############

void FUN_1812e68d0(undefined8 param_1)

{
  undefined1 uVar1;
  longlong lVar2;
  
  lVar2 = FUN_18134adf0();
  uVar1 = (**(code **)(*(longlong *)(lVar2 + 0xb8) + 0x10))((longlong *)(lVar2 + 0xb8),param_1);
  FUN_18134bd50(param_1,uVar1);
  return;
}



############ FUN_ 1812e8d90 size=49 ############

void FUN_1812e8d90(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
                    /* WARNING: Could not recover jumptable at 0x0001812e8dbd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(longlong *)(lVar1 + 0x50) + 8))(lVar1 + 0x50,param_2,param_1);
  return;
}



############ FUN_ 1812e8ed0 size=119 ############

void FUN_1812e8ed0(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined8 uVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined1 local_18 [16];
  
  cVar3 = FUN_181341a70(param_1,param_3);
  if (cVar3 == '\0') {
    uVar1 = FUN_18134adf0(param_1);
    cVar3 = FUN_181315bd0(uVar1,param_3);
    if (cVar3 == '\0') {
      return;
    }
  }
  puVar2 = (undefined4 *)FUN_18134a8d0(param_1,local_18,param_3,0);
  FUN_18134a800(param_2,param_4,*puVar2);
  return;
}



############ FUN_ 1812eb3c0 size=59 ############

void FUN_1812eb3c0(longlong param_1)

{
  longlong lVar1;
  
  if ((0 < *(int *)(param_1 + 0x2c)) && (0 < *(int *)(param_1 + 0x28))) {
    lVar1 = FUN_18134adf0();
                    /* WARNING: Could not recover jumptable at 0x0001812eb3f1. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*(longlong *)(lVar1 + 0x48) + 0x20))
              (lVar1 + 0x48,param_1,*(undefined8 *)(param_1 + 0x170));
    return;
  }
  return;
}



############ FUN_ 1812eb410 size=290 ############

void FUN_1812eb410(longlong param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  longlong lVar3;
  undefined8 *puVar4;
  longlong lVar5;
  uint *_Memory;
  bool bVar6;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  bVar6 = false;
  local_res8 = 0;
  lVar3 = FUN_18134adf0();
  lVar5 = *(longlong *)(param_1 + 0x170);
  (**(code **)(*(longlong *)(lVar3 + 0x48) + 8))
            (lVar3 + 0x48,param_2,*(int *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
             *(undefined1 *)(param_1 + 0x154),*(int *)(lVar5 + 0x28) + *(int *)(lVar5 + 0x20),0,
             (*(int *)(param_1 + 0x28) - *(int *)(lVar5 + 0x28)) - *(int *)(lVar5 + 0x20),
             *(undefined4 *)(param_1 + 0x2c),param_1);
  if (**(char **)(param_1 + 0x178) != '\0') {
    puVar4 = (undefined8 *)FUN_1812ea010(*(undefined8 *)(param_1 + 0x170),&local_res8);
    bVar6 = true;
    if ((*(char *)*puVar4 == '\0') && (*(longlong *)(*(longlong *)(param_1 + 0x170) + 0x1c8) == 0))
    {
      bVar2 = true;
      goto LAB_1812eb4cb;
    }
  }
  bVar2 = false;
LAB_1812eb4cb:
  if ((bVar6) &&
     (_Memory = (uint *)(CONCAT44(uStackX_c,local_res8) + -0x10), (*_Memory & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (bVar2) {
    lVar5 = FUN_18134adf0(param_1);
    (**(code **)(*(longlong *)(lVar5 + 0x48) + 0x30))
              (lVar5 + 0x48,param_2,param_1,*(undefined8 *)(param_1 + 0x170));
  }
  return;
}



############ FUN_ 1812ecc20 size=136 ############

void FUN_1812ecc20(undefined8 param_1,char param_2)

{
  undefined1 uVar1;
  undefined8 uVar2;
  undefined4 *puVar3;
  float fVar4;
  undefined4 local_res10;
  undefined1 local_res18 [16];
  
  fVar4 = DAT_1824c3ea4;
  if (param_2 != '\0') {
    fVar4 = DAT_1824c3d74;
  }
  uVar2 = FUN_18134adf0();
  puVar3 = (undefined4 *)FUN_181346420(uVar2,local_res18,0x1006502);
  if (0.0 < fVar4) {
    if (fVar4 < DAT_1824c3ea4) {
      uVar1 = (undefined1)(int)(fVar4 * DAT_1824c454c);
    }
    else {
      uVar1 = 0xff;
    }
  }
  else {
    uVar1 = 0;
  }
  local_res10 = CONCAT13(uVar1,(int3)*puVar3);
  FUN_18134a800(param_1,0x1006502,local_res10);
  return;
}



############ FUN_ 1812ed550 size=99 ############

void FUN_1812ed550(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  longlong lVar2;
  
  lVar2 = FUN_18134adf0();
  plVar1 = (longlong *)(lVar2 + 0x80);
  (**(code **)(*plVar1 + 0x10))
            (plVar1,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),param_1)
  ;
  (**(code **)(*plVar1 + 0x18))
            (plVar1,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),param_1)
  ;
  return;
}



############ FUN_ 1812f1430 size=75 ############

void FUN_1812f1430(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 local_18;
  undefined4 local_10;
  undefined4 local_c;
  
  lVar1 = FUN_18134adf0();
  local_18 = 0;
  local_10 = *(undefined4 *)(param_1 + 0x28);
  local_c = *(undefined4 *)(param_1 + 0x2c);
  (**(code **)(*(longlong *)(lVar1 + 0x40) + 0x18))
            ((longlong *)(lVar1 + 0x40),param_2,&local_18,param_1 + 8);
  return;
}



############ FUN_ 1812f2330 size=54 ############

void FUN_1812f2330(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
                    /* WARNING: Could not recover jumptable at 0x0001812f2362. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(longlong *)(lVar1 + 0x40) + 8))
            (lVar1 + 0x40,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  return;
}



############ FUN_ 1812f3bf0 size=533 ############

void FUN_1812f3bf0(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  code *pcVar4;
  void *pvVar5;
  longlong lVar6;
  undefined8 uVar7;
  int iVar8;
  ulonglong uVar9;
  uint uVar10;
  undefined1 **ppuVar11;
  float fVar12;
  int local_res8;
  undefined8 *local_res10;
  
  plVar2 = (longlong *)(param_1 + 0xe8);
  *(undefined4 *)(param_1 + 0xf4) = 0;
  if (*(int *)(param_1 + 0xf0) == 0) {
    *(undefined4 *)(param_1 + 0xf0) = 0;
    local_res8 = 0;
    iVar8 = *(int *)(param_1 + 0xf4) + 1;
    if (0 < iVar8) {
      FUN_1804af790(plVar2,*(int *)(param_1 + 0xf4) + 9 + iVar8 / 2 & 0xfffffff8);
    }
    iVar8 = *(int *)(param_1 + 0xf4);
    *(int *)(param_1 + 0xf4) = iVar8 + 1;
    *(undefined4 *)(*plVar2 + (longlong)iVar8 * 4) = 0;
    pvVar5 = ThreadLocalStoragePointer;
    uVar10 = 0;
    if (0 < *(int *)(param_1 + 0xe4)) {
      uVar9 = (ulonglong)_tls_index;
      do {
        lVar6 = FUN_18134adf0(param_1);
        if (uVar10 < *(uint *)(param_1 + 0xe4)) {
          ppuVar11 = (undefined1 **)(*(longlong *)(param_1 + 0xd8) + (longlong)(int)uVar10 * 8);
        }
        else {
          if ((*(int *)(*(longlong *)((longlong)pvVar5 + uVar9 * 8) + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar11 = &DAT_18267af68;
        }
        pcVar4 = *(code **)(*(longlong *)(lVar6 + 0x40) + 0x50);
        if (pcVar4 == FUN_18130ff80) {
          uVar7 = (**(code **)(*(longlong *)(lVar6 + 0x40) + 0x58))
                            (lVar6 + 0x40,&local_res10,param_1,uVar10,ppuVar11);
          iVar8 = *(int *)(param_1 + 0x2c);
          fVar12 = (float)FUN_1812518d0(uVar7,ppuVar11);
          fVar12 = ceilf(fVar12);
          iVar8 = iVar8 + (int)fVar12;
          if (local_res10 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(local_res10 + 1);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)*local_res10)(local_res10,1);
            }
          }
        }
        else {
          iVar8 = (*pcVar4)(lVar6 + 0x40,param_1,uVar10,ppuVar11);
        }
        local_res8 = local_res8 + iVar8;
        iVar3 = *(int *)(param_1 + 0xf4);
        iVar8 = iVar3 + 1;
        if (*(int *)(param_1 + 0xf0) < iVar8) {
          if (iVar8 < 0) {
            iVar8 = iVar3 + 2;
          }
          FUN_1804af790(plVar2,iVar3 + 9 + (iVar8 >> 1) & 0xfffffff8);
        }
        iVar8 = *(int *)(param_1 + 0xf4);
        *(int *)(param_1 + 0xf4) = iVar8 + 1;
        *(int *)(*plVar2 + (longlong)iVar8 * 4) = local_res8;
        uVar10 = uVar10 + 1;
      } while ((int)uVar10 < *(int *)(param_1 + 0xe4));
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*plVar2);
}



############ FUN_ 1812f3e10 size=695 ############

void FUN_1812f3e10(longlong param_1,longlong param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  char cVar4;
  longlong lVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined1 uVar10;
  uint uVar11;
  ulonglong uVar12;
  uint uVar13;
  ulonglong uVar14;
  int local_res18;
  longlong *local_68;
  int iStack_60;
  undefined4 uStack_5c;
  undefined8 local_58;
  longlong local_50;
  longlong *local_48;
  int iStack_40;
  undefined4 uStack_3c;
  
  local_58 = 0xfffffffffffffffe;
  if (((*(int *)(param_1 + 0x104) < 0) && (*(int *)(param_1 + 0x100) < 0)) &&
     (cVar4 = FUN_18133e590(param_1,0), cVar4 == '\0')) {
    uVar10 = 0;
  }
  else {
    uVar10 = 1;
  }
  lVar5 = FUN_18134adf0(param_1);
  (**(code **)(*(longlong *)(lVar5 + 0x40) + 0x40))
            ((longlong *)(lVar5 + 0x40),param_2,*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x2c),uVar10,param_1);
  if ((*(longlong *)(param_1 + 0xd0) != 0) && (uVar12 = 0, 0 < *(int *)(param_1 + 0xe4))) {
    local_48 = (longlong *)0x0;
    uVar14 = uVar12;
    local_50 = param_2;
    do {
      iVar8 = 0;
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      *(undefined1 *)(param_2 + 0x10) = 1;
      uVar13 = (uint)uVar14;
      iVar9 = 0;
      iVar7 = iVar9;
      if (uVar13 < *(uint *)(param_1 + 0xf4)) {
        iVar7 = *(int *)(uVar12 + *(longlong *)(param_1 + 0xe8));
      }
      *(undefined1 *)(param_2 + 0x10) = 0;
      (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      (**(code **)(**(longlong **)(param_2 + 8) + 0x10))(*(longlong **)(param_2 + 8),iVar7);
      uStack_5c = *(undefined4 *)(param_1 + 0x2c);
      uVar11 = uVar13 + 1;
      iStack_60 = iVar9;
      if (uVar11 < *(uint *)(param_1 + 0xf4)) {
        iStack_60 = *(int *)(uVar12 + 4 + *(longlong *)(param_1 + 0xe8));
      }
      if (uVar13 < *(uint *)(param_1 + 0xf4)) {
        iVar8 = *(int *)(uVar12 + *(longlong *)(param_1 + 0xe8));
      }
      iStack_60 = iStack_60 - iVar8;
      local_68 = local_48;
      iStack_40 = iStack_60;
      uStack_3c = uStack_5c;
      if (*(char *)(param_2 + 0x10) != '\0') {
        *(undefined1 *)(param_2 + 0x10) = 0;
        (**(code **)(**(longlong **)(param_2 + 8) + 0x68))();
      }
      (**(code **)(**(longlong **)(param_2 + 8) + 0x28))(*(longlong **)(param_2 + 8),&local_68);
      lVar5 = FUN_18134adf0(param_1);
      local_68 = (longlong *)(lVar5 + 0x40);
      uVar3 = *(undefined4 *)(param_1 + 0x2c);
      if (uVar13 < *(uint *)(param_1 + 0xf4)) {
        local_res18 = *(int *)(uVar12 + *(longlong *)(param_1 + 0xe8));
      }
      else {
        local_res18 = 0;
      }
      if (uVar11 < *(uint *)(param_1 + 0xf4)) {
        iVar9 = *(int *)(uVar12 + 4 + *(longlong *)(param_1 + 0xe8));
      }
      lVar5 = *local_68;
      uVar1 = *(uint *)(param_1 + 0x104);
      uVar2 = *(uint *)(param_1 + 0x100);
      uVar6 = FUN_181249970(param_1 + 0xd8,uVar14);
      (**(code **)(lVar5 + 0x60))
                (local_68,param_2,iVar9 - local_res18,uVar3,uVar13,uVar6,uVar13 == uVar2,
                 uVar13 == uVar1,uVar10,param_1);
      if (*(char *)(param_2 + 0x10) == '\0') {
        (**(code **)(**(longlong **)(param_2 + 8) + 0x70))();
      }
      else {
        *(undefined1 *)(param_2 + 0x10) = 0;
      }
      uVar14 = (ulonglong)uVar11;
      uVar12 = uVar12 + 4;
    } while ((int)uVar11 < *(int *)(param_1 + 0xe4));
  }
  return;
}



############ FUN_ 18131a490 size=175 ############

int * FUN_18131a490(longlong param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  int iVar5;
  
  iVar1 = *(int *)(param_1 + 0x2c);
  iVar3 = *(int *)(param_1 + 0x28);
  param_2[0] = 0;
  param_2[1] = 0;
  param_2[2] = iVar3;
  param_2[3] = iVar1;
  lVar4 = FUN_18134adf0(param_1);
  iVar3 = (**(code **)(*(longlong *)(lVar4 + 0x78) + 8))(lVar4 + 0x78);
  iVar1 = *(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8);
  if (iVar1 != 2) {
    iVar2 = param_2[2];
    iVar5 = iVar3;
    if (iVar2 < iVar3) {
      iVar5 = iVar2;
    }
    param_2[2] = iVar2 - iVar5;
  }
  if (iVar1 != 3) {
    iVar2 = param_2[2];
    iVar5 = iVar3;
    if (iVar2 < iVar3) {
      iVar5 = iVar2;
    }
    *param_2 = *param_2 + iVar5;
    param_2[2] = iVar2 - iVar5;
  }
  if (iVar1 != 1) {
    iVar2 = param_2[3];
    iVar5 = iVar3;
    if (iVar2 < iVar3) {
      iVar5 = iVar2;
    }
    param_2[1] = param_2[1] + iVar5;
    param_2[3] = iVar2 - iVar5;
  }
  if (iVar1 != 0) {
    iVar1 = param_2[3];
    if (iVar1 < iVar3) {
      iVar3 = iVar1;
    }
    param_2[3] = iVar1 - iVar3;
  }
  return param_2;
}



############ FUN_ 18131a590 size=493 ############

void FUN_18131a590(longlong param_1,int *param_2,int *param_3)

{
  undefined8 uVar1;
  int iVar2;
  int iVar3;
  longlong lVar4;
  int *piVar5;
  undefined8 *puVar6;
  int iVar7;
  int iVar8;
  undefined1 local_18 [16];
  
  lVar4 = FUN_18134adf0();
  piVar5 = (int *)FUN_18131a490(param_1,local_18);
  iVar2 = piVar5[1];
  iVar8 = piVar5[2];
  iVar7 = piVar5[3];
  *param_3 = *piVar5;
  param_3[1] = iVar2;
  param_3[2] = iVar8;
  param_3[3] = iVar7;
  if (*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - 2U < 2) {
    iVar2 = param_3[2];
  }
  else {
    iVar2 = param_3[3];
  }
  iVar2 = (**(code **)(*(longlong *)(lVar4 + 0x78) + 0x10))(lVar4 + 0x78,iVar2);
  if (0 < iVar2) {
    if (*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - 2U < 2) {
      iVar7 = param_3[2];
      param_3[1] = param_3[1] + iVar2;
      iVar8 = param_3[3] + iVar2 * -2;
    }
    else {
      iVar8 = param_3[3];
      *param_3 = *param_3 + iVar2;
      iVar7 = param_3[2] + iVar2 * -2;
    }
    iVar2 = 0;
    if (0 < iVar7) {
      iVar2 = iVar7;
    }
    param_3[2] = iVar2;
    iVar2 = 0;
    if (0 < iVar8) {
      iVar2 = iVar8;
    }
    param_3[3] = iVar2;
  }
  if (*(longlong *)(param_1 + 0x1d8) != 0) {
    puVar6 = (undefined8 *)
             (**(code **)(*(longlong *)(lVar4 + 0x78) + 0x20))
                       (lVar4 + 0x78,local_18,param_1,param_3,*(longlong *)(param_1 + 0x1d8));
    uVar1 = puVar6[1];
    *(undefined8 *)param_2 = *puVar6;
    *(undefined8 *)(param_2 + 2) = uVar1;
    if (*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - 2U < 2) {
      iVar2 = param_2[1];
      iVar8 = param_3[3];
      iVar7 = param_3[1];
      if (iVar8 / 2 + iVar7 < iVar2 + param_2[3] / 2) {
        iVar3 = iVar7 + iVar8;
        if (iVar2 < iVar7 + iVar8) {
          iVar3 = iVar2;
        }
        if (iVar3 < iVar7) {
          iVar7 = iVar3;
        }
        param_3[1] = iVar7;
        param_3[3] = iVar3 - iVar7;
      }
      else {
        iVar2 = iVar2 + param_2[3];
        iVar3 = iVar7;
        if (iVar7 < iVar2) {
          iVar3 = iVar2;
        }
        param_3[1] = iVar3;
        iVar8 = (iVar7 - iVar3) + iVar8;
        iVar2 = 0;
        if (0 < iVar8) {
          iVar2 = iVar8;
        }
        param_3[3] = iVar2;
      }
    }
    else {
      iVar2 = *param_2;
      iVar8 = param_3[2];
      iVar7 = *param_3;
      if (iVar8 / 2 + iVar7 < iVar2 + param_2[2] / 2) {
        iVar3 = iVar7 + iVar8;
        if (iVar2 < iVar7 + iVar8) {
          iVar3 = iVar2;
        }
        if (iVar3 < iVar7) {
          iVar7 = iVar3;
        }
        *param_3 = iVar7;
        param_3[2] = iVar3 - iVar7;
      }
      else {
        iVar2 = iVar2 + param_2[2];
        iVar3 = iVar7;
        if (iVar7 < iVar2) {
          iVar3 = iVar2;
        }
        *param_3 = iVar3;
        iVar8 = (iVar7 - iVar3) + iVar8;
        iVar2 = 0;
        if (0 < iVar8) {
          iVar2 = iVar8;
        }
        param_3[2] = iVar2;
      }
    }
  }
  return;
}



############ FUN_ 181316550 size=78 ############

void FUN_181316550(longlong param_1,int param_2)

{
  longlong *plVar1;
  
  if (param_2 < 1) {
    *(undefined1 *)(param_1 + 0x1a7) = 0;
    plVar1 = (longlong *)FUN_18134adf0();
    param_2 = (**(code **)(*plVar1 + 0x30))(plVar1);
  }
  else {
    *(undefined1 *)(param_1 + 0x1a7) = 1;
  }
  if (*(int *)(param_1 + 0x198) != param_2) {
    *(int *)(param_1 + 0x198) = param_2;
    FUN_1813165e0(param_1);
    return;
  }
  return;
}



############ FUN_ 181316f70 size=83 ############

void FUN_181316f70(longlong *param_1)

{
  undefined4 uVar1;
  longlong *plVar2;
  
  if (*(char *)((longlong)param_1 + 0x1a7) == '\0') {
    plVar2 = (longlong *)FUN_18134adf0();
    uVar1 = (**(code **)(*plVar2 + 0x30))(plVar2);
    *(undefined4 *)(param_1 + 0x33) = uVar1;
    if (*(code **)(*param_1 + 0x108) == thunk_FUN_1813165e0) {
      FUN_1813165e0();
      return;
    }
    (**(code **)(*param_1 + 0x108))(param_1);
  }
  return;
}



############ FUN_ 181319850 size=67 ############

void FUN_181319850(undefined8 param_1,undefined8 param_2)

{
  code *pcVar1;
  longlong lVar2;
  
  lVar2 = FUN_18134adf0();
  pcVar1 = *(code **)(*(longlong *)(lVar2 + 0x78) + 0x40);
  if (pcVar1 != FUN_181309760) {
    (*pcVar1)(lVar2 + 0x78,param_1,param_2);
  }
  return;
}



############ FUN_ 18131a790 size=48 ############

void FUN_18131a790(undefined8 param_1,undefined4 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
                    /* WARNING: Could not recover jumptable at 0x00018131a7bc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(longlong *)(lVar1 + 0x78) + 0x18))(lVar1 + 0x78,param_1,param_2);
  return;
}



############ FUN_ 18131a7d0 size=301 ############

undefined8 FUN_18131a7d0(longlong param_1,uint param_2,uint param_3)

{
  uint3 uVar1;
  longlong lVar2;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  void *local_40;
  ulonglong local_38;
  undefined8 local_30;
  undefined8 uStack_28;
  undefined1 local_20;
  
  FUN_18131a490(param_1,&local_50);
  if (*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - 2U < 2) {
    if (((*(uint *)(param_1 + 0x28) <= param_2) ||
        ((int)param_3 < *(int *)(param_1 + 0x1d0) + local_4c)) ||
       ((local_4c + local_44) - *(int *)(param_1 + 0x1d0) <= (int)param_3)) {
LAB_18131a870:
      local_40 = (void *)0x0;
      local_38 = 0;
      local_30 = 0;
      uStack_28 = 0;
      local_20 = 1;
      lVar2 = FUN_18134adf0(param_1);
      (**(code **)(*(longlong *)(lVar2 + 0x78) + 0x50))
                ((longlong *)(lVar2 + 0x78),param_1,&local_40,0,0);
      FUN_18129b1f0(&local_40);
      local_38 = local_38 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
      free(local_40);
    }
    uVar1 = (uint3)((uint)local_44 >> 8);
  }
  else {
    if (((*(uint *)(param_1 + 0x2c) <= param_3) ||
        ((int)param_2 < *(int *)(param_1 + 0x1d0) + local_50)) ||
       ((local_50 + local_48) - *(int *)(param_1 + 0x1d0) <= (int)param_2)) goto LAB_18131a870;
    uVar1 = (uint3)((uint)local_48 >> 8);
  }
  return CONCAT71((uint7)uVar1,1);
}



############ FUN_ 18131a9b0 size=85 ############

void FUN_18131a9b0(undefined8 param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x78) + 0x28))(lVar1 + 0x78,param_1,param_2,param_3,param_4);
  return;
}



############ FUN_ 18131c520 size=108 ############

void FUN_18131c520(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  void *local_68;
  undefined4 local_5c;
  
  lVar1 = FUN_18134adf0();
  uVar2 = (**(code **)(*(longlong *)(lVar1 + 0xe0) + 0x18))
                    ((longlong *)(lVar1 + 0xe0),&local_68,param_1);
  FUN_181333cd0(param_1 + 0x368,uVar2,0);
  local_5c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_68);
}



############ FUN_ 18131cab0 size=386 ############

void FUN_18131cab0(longlong param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined1 auVar2 [12];
  undefined1 auVar3 [12];
  uint uVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  int iVar7;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  uint local_res8 [2];
  undefined8 local_res10;
  undefined1 local_res18 [8];
  undefined8 local_res20;
  undefined4 uStack_9c;
  undefined4 uStack_94;
  undefined8 local_88;
  undefined4 uStack_84;
  undefined8 uStack_80;
  float local_78;
  float local_74;
  float local_70;
  float local_6c;
  undefined1 local_68;
  void *local_60;
  undefined8 local_58;
  
  uVar6 = FUN_18134adf0();
  FUN_181346420(uVar6,local_res18,0x100f001);
  FUN_181346420(uVar6,local_res8,0x100f003);
  uVar4 = local_res8[0];
  uVar6 = DAT_1824c4140;
  if (*(char *)(param_1 + 0x5b8) == '\0') {
    local_res10 = *(undefined8 *)(param_1 + 0x5a8);
    local_res20 = CONCAT44(*(undefined4 *)(param_1 + 0x5ac),
                           *(int *)(param_1 + 0x5b0) + *(int *)(param_1 + 0x5a8));
  }
  else {
    local_res10 = CONCAT44(*(undefined4 *)(param_1 + 0x5ac),
                           *(int *)(param_1 + 0x5b0) + *(int *)(param_1 + 0x5a8));
    local_res20 = *(undefined8 *)(param_1 + 0x5a8);
  }
  local_6c = (float)local_res10._4_4_;
  local_70 = (float)(int)local_res10;
  local_res8[0] = local_res8[0] & 0xffffff;
  local_74 = (float)local_res20._4_4_;
  local_78 = (float)(int)local_res20;
  local_res10._0_4_ = CONCAT13(0xb3,(int3)uVar4);
  uVar5 = (int)local_res10;
  local_68 = 0;
  local_60 = (void *)0x0;
  local_58 = 0;
  uStack_80 = CONCAT44(uStack_80._4_4_,uVar4) & 0xffffffff00ffffff;
  FUN_18049ba20(&local_60,8);
  iVar7 = local_58._4_4_ + 1;
  auVar2._4_8_ = extraout_XMM0_Qb;
  auVar2._0_4_ = uStack_9c;
  auVar8._0_8_ = auVar2._0_8_ << 0x20;
  auVar8._8_4_ = uVar5;
  auVar8._12_4_ = uStack_94;
  puVar1 = (undefined8 *)((longlong)local_60 + (longlong)local_58._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = auVar8._8_8_;
  local_58 = CONCAT44(local_58._4_4_ + 2,(undefined4)local_58);
  auVar3._4_8_ = auVar8._8_8_;
  auVar3._0_4_ = uStack_84;
  auVar9._0_8_ = auVar3._0_8_ << 0x20;
  auVar9._8_4_ = (undefined4)uStack_80;
  auVar9._12_4_ = uStack_80._4_4_;
  puVar1 = (undefined8 *)((longlong)local_60 + (longlong)iVar7 * 0x10);
  *puVar1 = uVar6;
  puVar1[1] = auVar9._8_8_;
  FUN_181296970(param_2,&local_78);
                    /* WARNING: Subroutine does not return */
  free(local_60);
}



############ FUN_ 18131fab0 size=67 ############

void FUN_18131fab0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x60) + 0x10))
            (lVar1 + 0x60,param_2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
             param_1 + 0xc0);
  return;
}



############ FUN_ 181321ef0 size=86 ############

void FUN_181321ef0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x90) + 8))
            ((longlong *)(lVar1 + 0x90),param_2,*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x2c),param_1 + 0xb0,param_1 + 0xb8,param_1);
  return;
}



############ FUN_ 18132b5e0 size=85 ############

void FUN_18132b5e0(longlong param_1)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 0x20) + 0x30))
            (lVar1 + 0x20,param_1,*(undefined8 *)(param_1 + 0x120),*(undefined8 *)(param_1 + 0x128),
             param_1 + 0x130,param_1 + 0x2c0,*(undefined8 *)(param_1 + 0x7e8));
  return;
}



############ FUN_ 181333700 size=86 ############

void FUN_181333700(undefined8 param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
  (**(code **)(*(longlong *)(lVar1 + 8) + 0x28))(lVar1 + 8,param_2,param_1,param_3,param_4);
  return;
}



############ FUN_ 1813337a0 size=48 ############

void FUN_1813337a0(undefined8 param_1,undefined4 param_2)

{
  longlong lVar1;
  
  lVar1 = FUN_18134adf0();
                    /* WARNING: Could not recover jumptable at 0x0001813337cc. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*(longlong *)(lVar1 + 8) + 0x18))(lVar1 + 8,param_1,param_2);
  return;
}



############ FUN_ 181333870 size=165 ############

void FUN_181333870(undefined8 param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  char cVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined1 local_res18 [8];
  
  lVar4 = FUN_18134adf0();
  lVar2 = *(longlong *)(lVar4 + 8);
  plVar1 = (longlong *)(lVar4 + 8);
  cVar3 = FUN_1804d6ee0(param_1);
  uVar5 = FUN_18134a8d0(param_1,local_res18,(cVar3 != '\0') + 0x1000100,0);
  (**(code **)(lVar2 + 8))(plVar1,param_2,param_1,uVar5,param_3,param_4);
  (**(code **)(*plVar1 + 0x20))(plVar1,param_2,param_1,param_3,param_4);
  return;
}



############ FUN_ 181334230 size=609 ############

void FUN_181334230(longlong param_1,undefined8 param_2,char param_3,char param_4)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  float fVar11;
  undefined4 uVar12;
  undefined8 *local_res8;
  int local_58;
  int local_50;
  
  if (((*(byte *)(param_1 + 0xa9) & 0x10) != 0) ||
     ((*(longlong *)(param_1 + 0x18) != 0 && (cVar2 = FUN_18133eaa0(), cVar2 == '\0')))) {
    param_3 = '\0';
    param_4 = '\0';
  }
  FUN_181334610(param_1,&local_res8);
  if (local_res8 == (undefined8 *)0x0) goto LAB_18133444d;
  if (local_res8 == (undefined8 *)0x0) {
    iVar10 = 0;
    iVar6 = 0;
  }
  else {
    iVar10 = *(int *)((longlong)local_res8 + 0x14);
    iVar6 = *(int *)(local_res8 + 3);
  }
  iVar9 = *(int *)(param_1 + 0x28);
  iVar8 = *(int *)(param_1 + 0x2c);
  iVar3 = (iVar9 - iVar10) / 2;
  iVar4 = (iVar8 - iVar6) / 2;
  if (*(char *)(param_1 + 0x1c8) == '\0') {
LAB_1813343a2:
    iVar9 = iVar10;
    iVar8 = iVar6;
  }
  else {
    if (*(char *)(param_1 + 0x1c9) == '\0') {
      iVar3 = 0;
      iVar4 = 0;
    }
    else {
      fVar11 = (float)iVar6 / (float)iVar10;
      if (fVar11 <= (float)iVar8 / (float)iVar9) {
        local_50 = SUB84((double)((float)iVar9 * fVar11) + DAT_1824c4520,0);
        local_58 = iVar9;
      }
      else {
        local_58 = SUB84((double)((float)iVar8 / fVar11) + DAT_1824c4520,0);
        local_50 = iVar8;
      }
      iVar3 = (iVar9 - local_58) / 2;
      iVar4 = (iVar8 - local_50) / 2;
      iVar9 = local_58;
      iVar8 = local_50;
    }
    if (*(char *)(param_1 + 0x1c8) == '\0') goto LAB_1813343a2;
  }
  *(int *)(param_1 + 0x1cc) = iVar3;
  *(int *)(param_1 + 0x1d0) = iVar4;
  *(int *)(param_1 + 0x1d4) = iVar9;
  *(int *)(param_1 + 0x1d8) = iVar8;
  if ((param_4 == '\0') && (cVar2 = FUN_1804d6ee0(param_1), cVar2 == '\0')) {
    if (param_3 == '\0') {
      uVar12 = *(undefined4 *)(param_1 + 0x1f8);
      lVar7 = param_1 + 0x204;
    }
    else {
      uVar12 = *(undefined4 *)(param_1 + 0x1fc);
      lVar7 = param_1 + 0x208;
    }
  }
  else {
    uVar12 = *(undefined4 *)(param_1 + 0x200);
    lVar7 = param_1 + 0x20c;
  }
  lVar5 = FUN_18134adf0(param_1);
  (**(code **)(*(longlong *)(lVar5 + 0x10) + 8))
            ((longlong *)(lVar5 + 0x10),param_2,&local_res8,iVar3,iVar4,iVar9,iVar8,lVar7,uVar12,
             param_1);
LAB_18133444d:
  if (local_res8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res8 + 1);
    iVar10 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar10 == 1) {
      (**(code **)*local_res8)(local_res8,1);
    }
  }
  return;
}



############ FUN_ 18142b570 size=342 ############

void FUN_18142b570(longlong param_1,undefined8 param_2)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined4 local_res8;
  uint local_resc;
  
  lVar2 = (**(code **)(*(longlong *)(param_1 + 0x280) + 8))();
  iVar1 = (int)(*(float *)(lVar2 + 0x88) * DAT_1824c43d8);
  if (iVar1 < 1) {
    *(undefined1 *)(param_1 + 0x9af) = 0;
    plVar3 = (longlong *)FUN_18134adf0(param_1 + 0x808);
    iVar1 = (**(code **)(*plVar3 + 0x30))(plVar3);
  }
  else {
    *(undefined1 *)(param_1 + 0x9af) = 1;
  }
  if (*(int *)(param_1 + 0x9a0) != iVar1) {
    *(int *)(param_1 + 0x9a0) = iVar1;
    FUN_1813165e0(param_1 + 0x808);
  }
  FUN_1813f22a0(param_2,&local_res8,DAT_182674274,param_1);
  local_res8 = CONCAT13((char)(local_resc >> 0x18),
                        CONCAT12((char)(int)((float)(local_resc >> 0x10 & 0xff) * DAT_1824c3e70),
                                 CONCAT11((char)(int)((float)(local_resc >> 8 & 0xff) *
                                                     DAT_1824c3e70),
                                          (char)(int)((float)(local_resc & 0xff) * DAT_1824c3e70))))
  ;
  FUN_18134a800(param_1 + 0x9c0,0x1000200,local_res8);
  FUN_1813f22a0(param_2,&local_res8,DAT_1826742b0,param_1);
  *(uint *)(param_1 + 0xdbc) = local_resc;
  FUN_1813f22a0(param_2,&local_res8,DAT_182674274,param_1);
  *(uint *)(param_1 + 0xdc0) = local_resc;
  return;
}



############ FUN_ 1814c1e30 size=661 ############

void FUN_1814c1e30(longlong param_1)

{
  int *piVar1;
  float fVar2;
  int iVar3;
  undefined1 *puVar4;
  longlong lVar5;
  longlong *plVar6;
  longlong lVar7;
  undefined1 *puVar8;
  undefined1 *local_res10;
  undefined8 *local_res18;
  undefined1 *local_res20;
  undefined8 *local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  lVar5 = FUN_18134adf0();
  plVar6 = (longlong *)
           (**(code **)(*(longlong *)(lVar5 + 0x38) + 0x40))((longlong *)(lVar5 + 0x38),&local_48);
  lVar5 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  fVar2 = *(float *)(lVar5 + 0x88);
  local_res18 = (undefined8 *)*plVar6;
  if (local_res18 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_res18 + 1) = *(int *)(local_res18 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_res18,fVar2 * DAT_1824c4408);
  FUN_181252990(param_1 + 0x968,&local_res18);
  if (local_res18 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_res18 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_res18)(local_res18,1);
    }
  }
  if (local_48 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_48 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*local_48)(local_48,1);
    }
  }
  local_res10 = &DAT_1821dbf98;
  lVar5 = -1;
  do {
    lVar7 = lVar5;
    lVar5 = lVar7 + 1;
  } while ((&DAT_1821dbf99)[lVar7] != '\0');
  FUN_1812342b0(&local_res10,lVar7 + 0x12);
  puVar4 = local_res10;
  puVar8 = local_res10 + (int)(lVar7 + 1);
  memcpy(puVar8,"A guided tour of\n",0x11);
  puVar8[0x11] = 0;
  lVar5 = -1;
  do {
    lVar7 = lVar5;
    lVar5 = lVar7 + 1;
  } while (puVar4[lVar5] != '\0');
  FUN_1812342b0(&local_res10,lVar7 + 0x18);
  puVar4 = local_res10;
  puVar8 = local_res10 + (int)lVar5;
  memcpy(puVar8,"soothe is available by\n",0x17);
  puVar8[0x17] = 0;
  lVar5 = -1;
  do {
    lVar7 = lVar5;
    lVar5 = lVar7 + 1;
  } while (puVar4[lVar5] != '\0');
  FUN_1812342b0(&local_res10,lVar7 + 0x19);
  puVar4 = local_res10;
  puVar8 = local_res10 + (int)lVar5;
  memcpy(puVar8,"clicking the ?-icon and\n",0x18);
  puVar8[0x18] = 0;
  lVar5 = -1;
  do {
    lVar7 = lVar5;
    lVar5 = lVar7 + 1;
  } while (puVar4[lVar5] != '\0');
  FUN_1812342b0(&local_res10,lVar7 + 0x16);
  puVar4 = local_res10;
  puVar8 = local_res10 + (int)lVar5;
  memcpy(puVar8,"selecting \"tutorials\"",0x15);
  puVar8[0x15] = 0;
  if ((*(uint *)(puVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(puVar4 + -0x10) = *(int *)(puVar4 + -0x10) + 1;
    UNLOCK();
  }
  local_res20 = puVar4;
  FUN_1815ef610(param_1 + 0x878,&local_res20);
  if ((*(uint *)(puVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(puVar4 + -0x10);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4 + -0x10);
    }
  }
  return;
}



############ FUN_ 1814c2340 size=1272 ############

void FUN_1814c2340(longlong param_1)

{
  int *piVar1;
  float fVar2;
  uint uVar3;
  byte bVar4;
  int iVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 uVar8;
  longlong lVar9;
  uint *puVar10;
  byte *pbVar11;
  char *pcVar12;
  char *_Dst;
  char *pcVar13;
  char *local_res18;
  char *local_res20;
  undefined8 *local_88;
  char *local_80;
  undefined8 *local_78;
  longlong local_70 [2];
  char *local_60;
  undefined1 local_58 [24];
  
  local_70[1] = 0xfffffffffffffffe;
  *(undefined4 *)(param_1 + 0x978) = DAT_18262bb5c;
  lVar6 = FUN_18134adf0();
  plVar7 = (longlong *)
           (**(code **)(*(longlong *)(lVar6 + 0x38) + 0x40))((longlong *)(lVar6 + 0x38),&local_78);
  lVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
  fVar2 = *(float *)(lVar6 + 0x88);
  local_88 = (undefined8 *)*plVar7;
  if (local_88 != (undefined8 *)0x0) {
    LOCK();
    *(int *)(local_88 + 1) = *(int *)(local_88 + 1) + 1;
    UNLOCK();
  }
  FUN_1812520a0(&local_88,fVar2 * DAT_1824c440c);
  FUN_181252990(param_1 + 0x970,&local_88);
  if (local_88 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_88 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_88)(local_88,1);
    }
  }
  if (local_78 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_78 + 1);
    iVar5 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar5 == 1) {
      (**(code **)*local_78)(local_78,1);
    }
  }
  iVar5 = *(int *)(*(longlong *)(param_1 + 0x878) + 8);
  if (iVar5 == 6) {
    FUN_18049c4e0(&local_res20,&DAT_1821eeb64);
  }
  else if (iVar5 == 1) {
    FUN_18049c4e0(&local_res20,&DAT_1822af074);
  }
  else if (iVar5 == 2) {
    FUN_18049c4e0(&local_res20,&DAT_1822af1a4);
  }
  else if (iVar5 == 3) {
    FUN_18049c4e0(&local_res20,"AudioUnit");
  }
  else {
    local_res20 = "";
  }
  pcVar13 = local_res20;
  local_res18 = "";
  lVar6 = -1;
  do {
    lVar9 = lVar6;
    lVar6 = lVar9 + 1;
  } while ((&DAT_1821dbf99)[lVar9] != '\0');
  FUN_1812342b0(&local_res18,lVar9 + 8);
  pcVar12 = local_res18 + (int)(lVar9 + 1);
  memcpy(pcVar12,"soothe2",7);
  pcVar12[7] = '\0';
  lVar6 = -1;
  do {
    lVar9 = lVar6;
    lVar6 = lVar9 + 1;
  } while (local_res18[lVar6] != '\0');
  FUN_1812342b0(&local_res18,lVar9 + 3);
  pcVar12 = local_res18 + (int)lVar6;
  memcpy(pcVar12,&DAT_182496878,2);
  pcVar12[2] = '\0';
  lVar6 = -1;
  do {
    lVar9 = lVar6;
    lVar6 = lVar9 + 1;
  } while (local_res18[lVar6] != '\0');
  FUN_1812342b0(&local_res18,lVar9 + 6);
  pcVar12 = local_res18 + (int)lVar6;
  memcpy(pcVar12,&DAT_1822a7b94,5);
  pcVar12[5] = '\0';
  lVar6 = -1;
  do {
    lVar9 = lVar6;
    lVar6 = lVar9 + 1;
  } while (local_res18[lVar6] != '\0');
  FUN_1812342b0(&local_res18,lVar9 + 3);
  _Dst = local_res18 + (int)lVar6;
  memcpy(_Dst,&DAT_182496878,2);
  pcVar12 = local_res18;
  _Dst[2] = '\0';
  if (*local_res18 == '\0') {
    if ((*(uint *)(pcVar13 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar13 + -0x10) = *(int *)(pcVar13 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    local_res18 = local_res20;
    UNLOCK();
    puVar10 = (uint *)(pcVar12 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  else {
    lVar6 = -1;
    do {
      lVar6 = lVar6 + 1;
    } while (pcVar13[lVar6] != '\0');
    local_60 = pcVar13 + lVar6;
    FUN_181232e20(&local_res18,pcVar13);
  }
  FUN_181232e20(&local_res18,&DAT_182496878,&DAT_18249687a);
  uVar8 = FUN_181227e70(local_58);
  uVar8 = FUN_181228830(uVar8,local_70);
  lVar6 = -1;
  do {
    lVar9 = lVar6;
    lVar6 = lVar9 + 1;
  } while (local_res18[lVar6] != '\0');
  FUN_1812342b0(&local_res18,lVar9 + 0xd);
  pcVar13 = local_res18 + (int)lVar6;
  memcpy(pcVar13,"Compiled on ",0xc);
  pcVar13[0xc] = '\0';
  uVar8 = FUN_181232d30(&local_res18,uVar8);
  FUN_181232e20(uVar8,&DAT_182496878,&DAT_18249687a);
  puVar10 = (uint *)(local_70[0] + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  pbVar11 = &DAT_1821ea5d4;
  iVar5 = 0;
  do {
    while( true ) {
      bVar4 = *pbVar11;
      pbVar11 = pbVar11 + 1;
      if ((char)bVar4 < '\0') break;
      if (bVar4 == 0) {
        iVar5 = FUN_18049da40(local_res20,&DAT_1821ea5d4,iVar5);
        if (iVar5 == 0) {
          FUN_181232e20(&local_res18,&DAT_182496878,&DAT_18249687a);
          FUN_181232e20(&local_res18,
                        "VST is a trademark and software of Steinberg Media Technologies GmbH.","");
          FUN_181232e20(&local_res18,&DAT_182496878,&DAT_18249687a);
          FUN_181232e20(&local_res18,"VST Plug-in Technology by Steinberg Media Technologies","");
          FUN_181232e20(&local_res18,&DAT_182496878,&DAT_18249687a);
        }
        local_80 = local_res18;
        if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
          UNLOCK();
        }
        FUN_1815ef610(param_1 + 0x880,&local_80);
        puVar10 = (uint *)(local_res18 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        puVar10 = (uint *)(local_res20 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        return;
      }
LAB_1814c2738:
      iVar5 = iVar5 + 1;
    }
    if ((*pbVar11 & 0xc0) != 0x80) goto LAB_1814c2738;
    do {
      pbVar11 = pbVar11 + 1;
    } while ((*pbVar11 & 0xc0) == 0x80);
    iVar5 = iVar5 + 1;
  } while( true );
}



############ FUN_ 18050dad0 size=355 ############

undefined8 * FUN_18050dad0(undefined8 *param_1)

{
  uint uVar1;
  int iVar2;
  HMODULE hModule;
  FARPROC pFVar3;
  longlong local_res10;
  HMODULE local_res18;
  
  *param_1 = 0;
  param_1[1] = 0;
  hModule = LoadLibraryW(L"api-ms-win-core-winrt-l1-1-0");
  local_res18 = hModule;
  if (hModule != (HMODULE)0x0) {
    pFVar3 = GetProcAddress(hModule,"RoInitialize");
    param_1[2] = pFVar3;
    pFVar3 = GetProcAddress(hModule,"RoGetActivationFactory");
    param_1[3] = pFVar3;
    pFVar3 = GetProcAddress(hModule,"WindowsCreateString");
    param_1[4] = pFVar3;
    pFVar3 = GetProcAddress(hModule,"WindowsDeleteString");
    param_1[5] = pFVar3;
    if ((((((code *)param_1[2] == (code *)0x0) || (param_1[3] == 0)) || (param_1[4] == 0)) ||
        (pFVar3 == (FARPROC)0x0)) ||
       (((uVar1 = (*(code *)param_1[2])(1), 1 < uVar1 && (uVar1 != 0x80010106)) ||
        ((iVar2 = (*(code *)param_1[4])
                            (L"Windows.UI.ViewManagement.UIViewSettings",0x28,&local_res10),
         iVar2 != 0 || (local_res10 == 0)))))) goto LAB_18050dc18;
    if ((longlong *)param_1[1] != (longlong *)0x0) {
      (**(code **)(*(longlong *)param_1[1] + 0x10))();
    }
    param_1[1] = 0;
    iVar2 = (*(code *)param_1[3])(local_res10,&DAT_1824a2318,param_1 + 1);
    (*(code *)param_1[5])(local_res10);
    if ((iVar2 != 0) || (param_1[1] == 0)) goto LAB_18050dc18;
    if ((HMODULE)*param_1 != (HMODULE)0x0) {
      FreeLibrary((HMODULE)*param_1);
    }
    *param_1 = hModule;
    hModule = (HMODULE)0x0;
  }
  if (hModule == (HMODULE)0x0) {
    return param_1;
  }
LAB_18050dc18:
  FreeLibrary(hModule);
  return param_1;
}



############ FUN_ 1804648a0 size=121 ############

void FUN_1804648a0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [2];
  undefined1 local_res10 [24];
  undefined4 local_18;
  undefined4 local_14;
  float local_10;
  
  local_res8[0] = 0xff899ca2;
  FUN_18049fa40(&local_18,0xff899ca2);
  local_10 = local_10 * DAT_1824c3e50;
  if (DAT_1824c3ea4 <= local_10) {
    local_10 = DAT_1824c3ea4;
  }
  FUN_18049fbb0(local_res8,local_18,local_14,local_10,0xff);
  puVar1 = (undefined8 *)FUN_18140e230(local_res10,local_res8[0]);
  DAT_1826741cc = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1813bf680 size=126 ############

void FUN_1813bf680(longlong param_1,int param_2)

{
  undefined4 local_res18;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  
  if (param_2 == *(int *)(param_1 + 0xe8)) {
    return;
  }
  local_res18 = param_2;
  if ((*(byte *)(param_1 + 0x140) & 1) == 0) {
    local_res18 = CONCAT13(0xff,(int3)param_2);
  }
  *(int *)(param_1 + 0xe8) = local_res18;
  FUN_18049fa40(&local_18,local_res18);
  *(undefined4 *)(param_1 + 0xec) = local_18;
  *(undefined4 *)(param_1 + 0xf4) = local_10;
  *(undefined4 *)(param_1 + 0xf0) = local_14;
  FUN_1813bf2d0(param_1);
  return;
}



############ FUN_ 1812a2060 size=774 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1812a2060(undefined8 param_1,uint param_2,uint param_3)

{
  int iVar1;
  byte bVar2;
  int iVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  double dVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  uint uVar14;
  byte bStackX_13;
  undefined4 local_res18;
  undefined4 local_88;
  undefined4 local_84;
  
  fVar7 = DAT_1824c4548;
  fVar10 = (float)(param_2 >> 0x10 & 0xff) / DAT_1824c4548;
  fVar4 = (float)(param_2 >> 8 & 0xff) / DAT_1824c4548;
  fVar6 = (float)(param_2 & 0xff) / DAT_1824c4548;
  fVar6 = sqrtf(fVar4 * fVar4 * _DAT_1824c3dec + fVar10 * fVar10 * _DAT_1824c3d2c +
                fVar6 * fVar6 * _DAT_1824c3ca0);
  fVar10 = (float)(param_3 >> 0x10 & 0xff) / fVar7;
  fVar4 = (float)(param_3 >> 8 & 0xff) / fVar7;
  fVar7 = (float)(param_3 & 0xff) / fVar7;
  fVar10 = sqrtf(fVar4 * fVar4 * _DAT_1824c3dec + fVar10 * fVar10 * _DAT_1824c3d2c +
                 fVar7 * fVar7 * _DAT_1824c3ca0);
  uVar14 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
  fVar12 = 0.0;
  fVar4 = 0.0;
  fVar7 = 0.0;
  do {
    fVar13 = (float)(double)CONCAT44((uint)((ulonglong)(double)(fVar12 - fVar6) >> 0x20) & uVar14,
                                     SUB84((double)(fVar12 - fVar6),0) & (uint)DAT_1824c4f10);
    fVar11 = (float)(double)CONCAT44((uint)((ulonglong)(double)(fVar12 - fVar10) >> 0x20) & uVar14,
                                     SUB84((double)(fVar12 - fVar10),0) & (uint)DAT_1824c4f10);
    fVar8 = DAT_1824c3ea4 - fVar13;
    fVar5 = DAT_1824c3ea4 - fVar11;
    if (fVar11 <= fVar8) {
      if (fVar11 <= fVar5) {
        fVar5 = fVar11;
      }
    }
    else if (fVar8 <= fVar5) {
      fVar5 = fVar8;
    }
    if (fVar13 <= fVar5) {
      fVar5 = fVar13;
    }
    if (fVar7 < fVar5) {
      fVar7 = fVar5;
      fVar4 = fVar12;
    }
    fVar12 = fVar12 + DAT_1824c3c7c;
  } while (fVar12 < DAT_1824c3ea4);
  bStackX_13 = (byte)(param_2 >> 0x18);
  dVar9 = (double)((float)(param_3 >> 0x18) * DAT_1824c3d8c) + DAT_1824c4520;
  bVar2 = 0xff;
  if (SUB84(dVar9,0) < 0xff) {
    bVar2 = SUB81(dVar9,0);
  }
  local_res18._0_3_ = (undefined3)param_3;
  local_res18 = CONCAT13(bVar2,(undefined3)local_res18);
  if (bStackX_13 != 0) {
    iVar3 = 0xff - ((int)((0xff - (uint)bStackX_13) * (0xff - (uint)bVar2)) >> 8);
    local_res18 = param_2;
    if (0 < iVar3) {
      local_res18._0_1_ = (char)param_3;
      iVar1 = (int)((0xff - (uint)bVar2) * (uint)bStackX_13) / iVar3;
      local_res18._0_1_ =
           (char)(((param_2 & 0xff) - (param_3 & 0xff)) * iVar1 >> 8) + (char)local_res18;
      local_res18._3_1_ = (undefined1)iVar3;
      local_res18._0_3_ =
           CONCAT12((char)(((param_2 >> 0x10 & 0xff) - ((param_3 & 0xff0000) >> 0x10)) * iVar1 >> 8)
                    + (char)(param_3 >> 0x10),
                    CONCAT11((char)(((param_2 >> 8 & 0xff) - ((param_3 & 0xff00) >> 8)) * iVar1 >> 8
                                   ) + (char)(param_3 >> 8),(char)local_res18));
    }
  }
  FUN_18049fa40(&local_88,local_res18);
  FUN_18049fbb0(param_1,local_88,local_84,fVar4,(char)(local_res18 >> 0x18));
  return param_1;
}



############ FUN_ 1812a2710 size=102 ############

undefined8 FUN_1812a2710(undefined4 *param_1,undefined8 param_2,float param_3)

{
  float fVar1;
  undefined4 local_28;
  undefined4 local_24;
  float local_20;
  
  FUN_18049fa40(&local_28,*param_1);
  fVar1 = local_20 * param_3;
  if (DAT_1824c3ea4 <= local_20 * param_3) {
    fVar1 = DAT_1824c3ea4;
  }
  FUN_18049fbb0(param_2,local_28,local_24,fVar1,(char)((uint)*param_1 >> 0x18));
  return param_2;
}



############ FUN_ 1812a2780 size=102 ############

undefined8 FUN_1812a2780(undefined4 *param_1,undefined8 param_2,float param_3)

{
  float fVar1;
  undefined4 local_28;
  float local_24;
  undefined4 local_20;
  
  FUN_18049fa40(&local_28,*param_1);
  fVar1 = local_24 * param_3;
  if (DAT_1824c3ea4 <= local_24 * param_3) {
    fVar1 = DAT_1824c3ea4;
  }
  FUN_18049fbb0(param_2,local_28,fVar1,local_20,(char)((uint)*param_1 >> 0x18));
  return param_2;
}



############ FUN_ 1812a2860 size=87 ############

undefined8 FUN_1812a2860(undefined4 *param_1,undefined8 param_2,undefined4 param_3)

{
  undefined4 local_28;
  undefined4 local_24;
  
  FUN_18049fa40(&local_28,*param_1);
  FUN_18049fbb0(param_2,local_28,local_24,param_3,(char)((uint)*param_1 >> 0x18));
  return param_2;
}



############ FUN_ 1812a28c0 size=81 ############

undefined8 FUN_1812a28c0(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  undefined4 local_28 [2];
  undefined4 local_20;
  
  FUN_18049fa40(local_28,DAT_18262e938);
  FUN_18049fbb0(param_2,local_28[0],param_3,local_20,(char)((uint)DAT_18262e938 >> 0x18));
  return param_2;
}



############ FUN_ 1812a2920 size=26 ############

undefined4 FUN_1812a2920(undefined4 *param_1)

{
  longlong lVar1;
  undefined1 local_18 [24];
  
  lVar1 = FUN_18049fa40(local_18,*param_1);
  return *(undefined4 *)(lVar1 + 8);
}



############ FUN_ 1812a2940 size=82 ############

void FUN_1812a2940(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  
  FUN_18049fa40(&local_18,*param_1);
  *param_2 = local_18;
  *param_3 = local_14;
  *param_4 = local_10;
  return;
}



############ FUN_ 1812fd8d0 size=1125 ############

void FUN_1812fd8d0(longlong *param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,int param_6,float param_7,undefined4 param_8,undefined4 param_9
                  ,uint param_10,longlong param_11)

{
  undefined8 *puVar1;
  undefined1 auVar2 [12];
  undefined1 auVar3 [12];
  undefined8 uVar4;
  undefined1 uVar5;
  uint uVar6;
  undefined4 uVar7;
  longlong lVar8;
  undefined4 *puVar9;
  uint *puVar10;
  uint uVar11;
  undefined1 uVar12;
  int iVar13;
  uint uVar14;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar15 [16];
  undefined1 auVar16 [16];
  double dVar17;
  float fVar18;
  float fVar19;
  uint uVar20;
  undefined8 local_148;
  undefined8 uStack_140;
  undefined4 local_138;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined8 local_108;
  undefined4 local_100;
  float local_fc;
  undefined1 local_f8;
  void *local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined1 local_c0;
  undefined8 local_b8;
  
  lVar8 = param_11;
  local_b8 = 0xfffffffffffffffe;
  puVar9 = (undefined4 *)FUN_18134a8d0(param_11,&local_148,0x1001200,0);
  FUN_1812a3160(param_2,*puVar9);
  uVar20 = param_10;
  if (param_10 - 2 < 2) {
    fVar18 = (float)param_6;
    local_e0 = 0;
    local_d8 = 0;
    local_d0 = 0;
    uStack_c8 = 0;
    local_c0 = 1;
    fVar19 = fVar18;
    if (param_10 == 3) {
      fVar19 = (fVar18 + DAT_1824c3ea4) - param_7;
    }
    FUN_18129d850(&local_e0);
    if (((*(byte *)(lVar8 + 0xa9) & 0x10) == 0) && (*(longlong *)(lVar8 + 0x18) != 0)) {
      FUN_18133eaa0();
    }
    puVar10 = (uint *)FUN_18134a8d0(lVar8,&param_10,0x1001300,0,fVar19);
    FUN_18049fa40(&local_148,*puVar10);
    uVar20 = *puVar10 >> 0x18;
    FUN_18049fbb0(&param_10);
    uVar6 = param_10;
    uVar4 = DAT_1824c4140;
    dVar17 = (double)((float)(param_10 >> 0x18) * DAT_1824c3e28) + DAT_1824c4520;
    uVar12 = 0xff;
    if (SUB84(dVar17,0) < 0xff) {
      uVar12 = SUB81(dVar17,0);
    }
    param_10 = CONCAT13(uVar12,(undefined3)param_10);
    uVar7 = param_10;
    param_10._0_1_ = (undefined1)uVar6;
    uVar5 = (undefined1)param_10;
    uVar11 = (uVar6 & 0xff00) >> 8;
    uVar14 = (uVar6 & 0xff0000) >> 0x10;
    local_138 = CONCAT13(uVar12,CONCAT12((char)(int)((float)uVar14 * DAT_1824c3e6c),
                                         CONCAT11((char)(int)((float)uVar11 * DAT_1824c3e6c),
                                                  (char)(int)((float)(uVar6 & 0xff) * DAT_1824c3e6c)
                                                 )));
    local_148._4_4_ = (undefined4)((ulonglong)dVar17 >> 0x20);
    local_148._0_4_ =
         CONCAT13(uVar12,CONCAT12((char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - uVar14) * DAT_1824c3e6c),
                                  CONCAT11((char)(int)(DAT_1824c4548 -
                                                      (float)(int)(0xff - uVar11) * DAT_1824c3e6c),
                                           (char)(int)(DAT_1824c4548 -
                                                      (float)(int)(0xff - (uVar6 & 0xff)) *
                                                      DAT_1824c3e6c))));
    local_108 = 0;
    local_100 = 0;
    local_f8 = 0;
    local_f0 = (void *)0x0;
    local_e8 = 0;
    uStack_140._0_4_ = (undefined4)local_148;
    param_10 = uVar7;
    local_fc = fVar18;
    uStack_120._0_4_ = local_138;
    FUN_18049ba20(&local_f0,8,uVar5,uVar14,uVar20);
    iVar13 = local_e8._4_4_ + 1;
    auVar2._4_8_ = extraout_XMM0_Qb;
    auVar2._0_4_ = local_148._4_4_;
    auVar15._0_8_ = auVar2._0_8_ << 0x20;
    auVar15._8_4_ = (undefined4)uStack_140;
    auVar15._12_4_ = uStack_140._4_4_;
    uStack_140 = auVar15._8_8_;
    local_148 = 0;
    puVar1 = (undefined8 *)((longlong)local_f0 + (longlong)local_e8._4_4_ * 0x10);
    *puVar1 = 0;
    puVar1[1] = uStack_140;
    local_e8 = CONCAT44(local_e8._4_4_ + 2,(undefined4)local_e8);
    auVar3._4_8_ = uStack_140;
    auVar3._0_4_ = local_128._4_4_;
    auVar16._0_8_ = auVar3._0_8_ << 0x20;
    auVar16._8_4_ = (undefined4)uStack_120;
    auVar16._12_4_ = uStack_120._4_4_;
    uStack_120 = auVar16._8_8_;
    local_128 = uVar4;
    puVar1 = (undefined8 *)((longlong)local_f0 + (longlong)iVar13 * 0x10);
    *puVar1 = uVar4;
    puVar1[1] = uStack_120;
    FUN_181296970(param_2,&local_108);
                    /* WARNING: Subroutine does not return */
    free(local_f0);
  }
  (**(code **)(*param_1 + 0x10))
            (param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10,lVar8)
  ;
  (**(code **)(*param_1 + 0x18))
            (param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,uVar20,lVar8);
  return;
}



############ FUN_ 1812ff850 size=676 ############

void FUN_1812ff850(undefined8 param_1,undefined8 param_2,longlong param_3,undefined4 *param_4,
                  char param_5,char param_6)

{
  uint uVar1;
  longlong lVar2;
  bool bVar3;
  char cVar4;
  undefined1 uVar5;
  undefined4 *puVar6;
  undefined1 uVar7;
  undefined4 uVar8;
  byte bVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  undefined4 uVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  undefined4 local_res18;
  double local_res20;
  undefined4 local_70;
  float local_6c;
  void *local_60;
  ulonglong local_58;
  undefined8 local_50;
  undefined8 uStack_48;
  undefined1 local_40;
  
  fVar13 = DAT_1824c3e58;
  fVar15 = DAT_1824c3d8c;
  if (((*(byte *)(param_3 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(param_3 + 0x18) == 0 ||
      (cVar4 = FUN_18133eaa0(), fVar15 = DAT_1824c3d8c, cVar4 != '\0')))) {
    fVar15 = fVar13;
  }
  bVar3 = false;
  for (lVar2 = DAT_182673708; lVar2 != param_3; lVar2 = *(longlong *)(lVar2 + 0x18)) {
    if (lVar2 == 0) goto LAB_1812ff8d7;
  }
  bVar3 = true;
LAB_1812ff8d7:
  if (bVar3) {
    fVar13 = DAT_1824c3f20;
  }
  FUN_18049fa40(&local_70,*param_4);
  fVar14 = fVar13 * local_6c;
  if (DAT_1824c3ea4 <= fVar13 * local_6c) {
    fVar14 = DAT_1824c3ea4;
  }
  FUN_18049fbb0(&local_res18,local_70,fVar14);
  local_res20 = (double)((float)(local_res18 >> 0x18) * fVar15) + DAT_1824c4520;
  uVar11 = 0xff;
  if (SUB84(local_res20,0) < 0xff) {
    uVar11 = SUB81(local_res20,0);
  }
  local_res18 = CONCAT13(uVar11,(undefined3)local_res18);
  uVar12 = DAT_1824c3d18;
  if ((param_6 != '\0') || (uVar12 = DAT_1824c3cb8, uVar8 = local_res18, param_5 != '\0')) {
    puVar6 = (undefined4 *)FUN_1812a24b0(&local_res18,&param_6,uVar12);
    uVar8 = *puVar6;
  }
  bVar9 = *(byte *)(param_3 + 0x198) & 1;
  uVar1 = *(uint *)(param_3 + 0x198);
  fVar13 = (float)*(int *)(param_3 + 0x28) - DAT_1824c3ea4;
  fVar15 = (float)*(int *)(param_3 + 0x2c) - DAT_1824c3ea4;
  if ((0.0 < fVar13) && (0.0 < fVar15)) {
    local_60 = (void *)0x0;
    local_58 = 0;
    local_50 = 0;
    uStack_48 = 0;
    local_40 = 1;
    if (((uVar1 >> 1 & 1) == 0) && ((uVar1 >> 3 & 1) == 0)) {
      uVar11 = 1;
    }
    else {
      uVar11 = 0;
    }
    if ((bVar9 == 0) && ((uVar1 >> 3 & 1) == 0)) {
      uVar10 = 1;
    }
    else {
      uVar10 = 0;
    }
    if (((uVar1 >> 1 & 1) == 0) && ((uVar1 >> 2 & 1) == 0)) {
      uVar7 = 1;
    }
    else {
      uVar7 = 0;
    }
    if ((bVar9 == 0) && ((uVar1 >> 2 & 1) == 0)) {
      uVar5 = 1;
    }
    else {
      uVar5 = 0;
    }
    FUN_18129d5a0(&local_60,DAT_1824c3d8c,bVar9,fVar13,fVar15,DAT_1824c4334,DAT_1824c4334,uVar5,
                  uVar7,uVar10,uVar11);
    FUN_1812ffb00(param_2,&local_60,uVar8);
    local_58 = local_58 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
    free(local_60);
  }
  return;
}



############ FUN_ 1812ffb00 size=470 ############

void FUN_1812ffb00(undefined8 param_1,undefined8 param_2,uint param_3,undefined4 param_4)

{
  undefined8 *puVar1;
  undefined1 auVar2 [12];
  undefined1 auVar3 [12];
  undefined8 uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar8 [16];
  undefined1 auVar9 [16];
  undefined1 uStackX_1b;
  undefined8 local_d0;
  undefined8 uStack_c8;
  undefined8 local_c0;
  undefined8 uStack_b8;
  undefined8 local_a8;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined1 local_98;
  void *local_90;
  undefined8 local_88;
  undefined8 local_80;
  
  local_80 = 0xfffffffffffffffe;
  FUN_18049fa40(&local_d0,param_3);
  uVar4 = DAT_1824c4140;
  uStackX_1b = (undefined1)(param_3 >> 0x18);
  uVar5 = param_3 >> 8 & 0xff;
  uVar7 = param_3 >> 0x10 & 0xff;
  uStack_b8._0_4_ =
       CONCAT13(uStackX_1b,
                CONCAT12((char)(int)((float)uVar7 * DAT_1824c3e28),
                         CONCAT11((char)(int)((float)uVar5 * DAT_1824c3e28),
                                  (char)(int)((float)(param_3 & 0xff) * DAT_1824c3e28))));
  uStack_c8._0_4_ =
       CONCAT13(uStackX_1b,
                CONCAT12((char)(int)(DAT_1824c4548 - (float)(int)(0xff - uVar7) * DAT_1824c3e48),
                         CONCAT11((char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - uVar5) * DAT_1824c3e48),
                                  (char)(int)(DAT_1824c4548 -
                                             (float)(int)(0xff - (param_3 & 0xff)) * DAT_1824c3e48))
                        ));
  local_a8 = 0;
  local_a0 = 0;
  local_98 = 0;
  local_90 = (void *)0x0;
  local_88 = 0;
  local_9c = param_4;
  FUN_18049ba20(&local_90,8);
  iVar6 = local_88._4_4_ + 1;
  auVar2._4_8_ = extraout_XMM0_Qb;
  auVar2._0_4_ = local_d0._4_4_;
  auVar8._0_8_ = auVar2._0_8_ << 0x20;
  auVar8._8_4_ = (undefined4)uStack_c8;
  auVar8._12_4_ = uStack_c8._4_4_;
  uStack_c8 = auVar8._8_8_;
  local_d0 = 0;
  puVar1 = (undefined8 *)((longlong)local_90 + (longlong)local_88._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = uStack_c8;
  local_88 = CONCAT44(local_88._4_4_ + 2,(undefined4)local_88);
  auVar3._4_8_ = uStack_c8;
  auVar3._0_4_ = local_c0._4_4_;
  auVar9._0_8_ = auVar3._0_8_ << 0x20;
  auVar9._8_4_ = (undefined4)uStack_b8;
  auVar9._12_4_ = uStack_b8._4_4_;
  uStack_b8 = auVar9._8_8_;
  local_c0 = uVar4;
  puVar1 = (undefined8 *)((longlong)local_90 + (longlong)iVar6 * 0x10);
  *puVar1 = uVar4;
  puVar1[1] = uStack_b8;
  FUN_181296970(param_1,&local_a8);
                    /* WARNING: Subroutine does not return */
  free(local_90);
}



############ FUN_ 1813088a0 size=365 ############

void FUN_1813088a0(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  undefined8 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 local_res10 [2];
  undefined4 local_res18 [4];
  undefined1 local_c0 [8];
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  undefined4 local_a8;
  int local_a4;
  undefined4 local_a0;
  int local_9c;
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 local_88;
  float local_84;
  undefined4 local_80;
  float local_7c;
  undefined1 local_78;
  void *local_70;
  undefined8 local_68;
  
  FUN_1812a3160(param_2,DAT_18262b5a8);
  iVar6 = *(int *)(param_3 + 0x2c);
  local_a0 = *(undefined4 *)(param_3 + 0x28);
  local_a8 = 0;
  iVar3 = iVar6 / 2;
  if (iVar6 < iVar6 / 2) {
    iVar3 = iVar6;
  }
  local_a4 = iVar3;
  local_9c = iVar6 - iVar3;
  FUN_18134a8d0(param_3,local_res10,0x1003810,0);
  FUN_18049fa40(local_c0,local_res10[0]);
  FUN_18049fbb0(local_res18);
  uVar5 = DAT_1824c4140._4_4_;
  uVar4 = (undefined4)DAT_1824c4140;
  local_7c = (float)(iVar3 + (iVar6 - iVar3));
  local_84 = (float)iVar3;
  local_88 = 0;
  local_80 = 0;
  local_78 = 0;
  local_70 = (void *)0x0;
  local_68 = 0;
  uStack_90 = local_res18[0];
  uStack_b8 = local_res10[0];
  FUN_18049ba20(&local_70,8);
  iVar6 = local_68._4_4_ + 1;
  puVar1 = (undefined8 *)((longlong)local_70 + (longlong)local_68._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = CONCAT44(uStack_b4,uStack_b8);
  local_68 = CONCAT44(local_68._4_4_ + 2,(undefined4)local_68);
  local_98 = uVar4;
  uStack_94 = uVar5;
  puVar2 = (undefined4 *)((longlong)local_70 + (longlong)iVar6 * 0x10);
  *puVar2 = uVar4;
  puVar2[1] = uVar5;
  puVar2[2] = uStack_90;
  puVar2[3] = uStack_8c;
  FUN_181296970(param_2,&local_88);
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 181315720 size=200 ############

undefined4 *
FUN_181315720(undefined4 *param_1,undefined8 param_2,char param_3,char param_4,char param_5)

{
  float fVar1;
  float fVar2;
  undefined4 local_res18 [4];
  undefined4 local_28;
  float local_24;
  undefined4 local_20;
  
  fVar2 = DAT_1824c3e58;
  if (param_3 != '\0') {
    fVar2 = DAT_1824c3f20;
  }
  FUN_18049fa40(&local_28);
  fVar1 = local_24 * fVar2;
  if (DAT_1824c3ea4 <= local_24 * fVar2) {
    fVar1 = DAT_1824c3ea4;
  }
  FUN_18049fbb0(local_res18,local_28,fVar1,local_20,(char)((ulonglong)param_2 >> 0x18));
  if (param_5 == '\0') {
    if (param_4 == '\0') {
      *param_1 = local_res18[0];
    }
    else {
      FUN_1812a24b0(local_res18,param_1,DAT_1824c3cb8);
    }
  }
  else {
    FUN_1812a24b0(local_res18,param_1,DAT_1824c3d18);
  }
  return param_1;
}



############ FUN_ 181310040 size=307 ############

void FUN_181310040(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 uStack0000000000000030;
  undefined1 local_28 [8];
  undefined1 local_20 [24];
  
  lVar1 = _uStack0000000000000030;
  puVar3 = (undefined4 *)FUN_18134a8d0(_uStack0000000000000030,local_28,0x1000700,0);
  FUN_18049fa40(local_20,*puVar3);
  FUN_18049fbb0(&stack0x00000030);
  if (((*(byte *)(lVar1 + 0xa9) & 0x10) == 0) &&
     ((*(longlong *)(lVar1 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
    FUN_181305bb0(DAT_1824c3d74,param_2);
  }
  else {
    FUN_1812a3160(param_2);
  }
  return;
}



############ FUN_ 1813bf490 size=73 ############

void FUN_1813bf490(longlong param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  
  FUN_18049fa40(&local_18,*(undefined4 *)(param_1 + 0xe8));
  *(undefined4 *)(param_1 + 0xec) = local_18;
  *(undefined4 *)(param_1 + 0xf4) = local_10;
  *(undefined4 *)(param_1 + 0xf0) = local_14;
  return;
}



############ FUN_ 1813cc160 size=1462 ############

void FUN_1813cc160(longlong param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined8 uVar4;
  float fVar5;
  undefined1 auStack_228 [32];
  longlong local_208;
  undefined4 local_1f8;
  undefined4 local_1f0;
  undefined4 local_1ec;
  float local_1e8;
  void *local_1e0;
  undefined8 local_1d8;
  undefined1 local_1d0 [4];
  undefined1 local_1cc [4];
  undefined8 local_1c8;
  undefined4 local_1b8;
  undefined1 local_1b4 [8];
  undefined4 local_1ac;
  undefined1 local_1a8 [8];
  undefined4 local_1a0;
  undefined1 local_19c [8];
  undefined4 local_194;
  undefined1 local_190 [8];
  undefined4 local_188;
  undefined1 local_184 [8];
  undefined4 local_17c;
  undefined1 local_178 [8];
  undefined4 local_170;
  undefined1 local_16c [8];
  undefined4 local_164;
  undefined1 local_160 [8];
  undefined4 local_158;
  undefined1 local_154 [8];
  undefined4 local_14c;
  undefined1 local_148 [8];
  undefined4 local_140;
  undefined1 local_13c [8];
  undefined4 local_134;
  undefined1 local_130 [8];
  undefined4 local_128;
  undefined1 local_124 [8];
  undefined4 local_11c;
  undefined1 local_118 [8];
  undefined4 local_110;
  undefined1 local_10c [8];
  undefined4 local_104;
  undefined1 local_100 [8];
  undefined4 local_f8;
  undefined1 local_f4 [8];
  undefined4 local_ec;
  undefined1 local_e8 [8];
  undefined4 local_e0;
  undefined1 local_dc [8];
  undefined4 local_d4;
  undefined1 local_d0 [8];
  undefined4 local_c8;
  undefined1 local_c4 [8];
  undefined4 local_bc;
  undefined1 local_b8 [8];
  undefined4 local_b0;
  undefined1 local_ac [8];
  undefined4 local_a4;
  undefined1 local_a0 [8];
  undefined4 local_98;
  undefined1 local_94 [8];
  undefined4 local_8c;
  undefined1 local_88 [8];
  undefined4 local_80;
  undefined1 local_7c [8];
  undefined4 local_74;
  undefined1 local_70 [8];
  undefined4 local_68;
  undefined1 local_64 [8];
  undefined4 local_5c;
  undefined1 local_58 [8];
  undefined4 local_50;
  undefined1 local_4c [8];
  undefined4 local_44;
  undefined1 local_40 [8];
  undefined4 local_38;
  undefined1 local_34 [8];
  undefined4 local_2c;
  ulonglong local_28;
  
  local_1c8 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_228;
  if (*(undefined ***)(param_1 + 0x140) == Soothe2AudioProcessorEditor::vftable) {
    uVar4 = *(undefined8 *)(param_1 + 0x148);
  }
  else {
    uVar4 = (*(code *)(*(undefined ***)(param_1 + 0x140))[1])();
  }
  local_1f0 = 0xff5e7487;
  local_1f8 = 0xff77a3b6;
  local_1b8 = DAT_182674208;
  FUN_18140e230(local_1b4,0xff77a3b6);
  local_1f8 = 0xff77a3b6;
  puVar3 = (undefined4 *)FUN_1812a2a20(&local_1f8,local_1d0,DAT_18262bb50,DAT_1824c3df0);
  local_1ac = DAT_18267427c;
  FUN_18140e230(local_1a8,*puVar3);
  local_1f8 = 0xffffffff;
  local_1a0 = DAT_182674180;
  FUN_18140e230(local_19c,0xffffffff);
  local_194 = DAT_1826741f8;
  FUN_18140ed70(local_190,DAT_1824c41e0);
  local_188 = DAT_182674210;
  FUN_18140ed70(local_184,DAT_1824c3ee8);
  local_1f8 = 0xff495b6b;
  local_17c = DAT_18267421c;
  FUN_18140e230(local_178,0xff495b6b);
  local_170 = DAT_1826741d0;
  FUN_18140ed70(local_16c,DAT_1824c4334);
  local_1f8 = CONCAT13(0xe6,(int3)DAT_18262bb50);
  local_164 = DAT_182674198;
  FUN_18140e230(local_160,local_1f8);
  local_158 = DAT_182674214;
  FUN_18140ed70(local_154,DAT_1824c4334);
  local_1f8 = 0xff505b61;
  local_14c = DAT_182674280;
  FUN_18140e230(local_148,0xff505b61);
  local_140 = DAT_1826742bc;
  FUN_18140ed70(local_13c,DAT_1824c44a0);
  local_1f8 = 0x66ffffff;
  local_134 = DAT_182674230;
  FUN_18140e230(local_130,0x66ffffff);
  local_1f8 = 0xff7e9cb1;
  local_128 = DAT_182674288;
  FUN_18140e230(local_124,0xff7e9cb1);
  local_11c = DAT_1826741c0;
  FUN_18140ed70(local_118,DAT_1824c41e0);
  local_1f8 = 0xe63f3f3f;
  local_110 = DAT_182674268;
  FUN_18140e230(local_10c,0xe63f3f3f);
  local_104 = DAT_182674238;
  FUN_18140ed70(local_100,DAT_1824c41e0);
  local_1f8 = 0xe63f3f3f;
  local_f8 = DAT_182674234;
  FUN_18140e230(local_f4,0xe63f3f3f);
  uVar2 = local_1f0;
  FUN_18049fa40(&local_1f0,local_1f0);
  fVar5 = local_1e8 * DAT_1824c3e28;
  if (DAT_1824c3ea4 <= local_1e8 * DAT_1824c3e28) {
    fVar5 = DAT_1824c3ea4;
  }
  local_208 = CONCAT71(local_208._1_7_,(char)((uint)uVar2 >> 0x18));
  FUN_18049fbb0(&local_1f0,local_1f0,local_1ec,fVar5);
  local_ec = DAT_182674274;
  FUN_18140e230(local_e8,local_1f0);
  local_e0 = DAT_1826742b0;
  FUN_18140e230(local_dc,uVar2);
  local_1f0 = 0xffa8bdca;
  local_d4 = DAT_1826741dc;
  FUN_18140e230(local_d0,0xffa8bdca);
  local_1f0 = 0xffffffff;
  local_c8 = DAT_1826741a8;
  FUN_18140e230(local_c4,0xffffffff);
  local_1f0 = 0xffa7bcc8;
  local_bc = DAT_182674184;
  FUN_18140e230(local_b8,0xffa7bcc8);
  local_1f0 = 0xff3d3d3d;
  local_b0 = DAT_1826742ac;
  FUN_18140e230(local_ac,0xff3d3d3d);
  local_1f0 = 0xff356f85;
  puVar3 = (undefined4 *)FUN_1812a2a20(&local_1f0,local_1cc,DAT_18262bb54,DAT_1824c3d04);
  local_1f0._0_3_ = (undefined3)*puVar3;
  local_1f0 = CONCAT13(0xcc,(undefined3)local_1f0);
  local_a4 = DAT_1826741c4;
  FUN_18140e230(local_a0,local_1f0);
  local_98 = DAT_1826741a4;
  FUN_18140ed70(local_94,DAT_1824c3ce0);
  local_8c = DAT_1826742b4;
  FUN_18140ed70(local_88,DAT_1824c3cac);
  local_80 = DAT_18267419c;
  FUN_18140ed70(local_7c,DAT_1824c3e4c);
  local_74 = DAT_182674134;
  FUN_18140ed70(local_70,DAT_1824c3d04);
  local_1f0 = 0xff435260;
  local_68 = DAT_182674224;
  FUN_18140e230(local_64,0xff435260);
  local_1f0._0_3_ = (undefined3)DAT_18262bb50;
  local_1f0 = CONCAT13(0xb3,(undefined3)local_1f0);
  local_5c = DAT_1826741f4;
  FUN_18140e230(local_58,local_1f0);
  local_50 = DAT_182674200;
  FUN_18140e230(local_4c,DAT_18262bb50);
  local_1f0 = 0xff6d8698;
  local_44 = DAT_1826741cc;
  FUN_18140e230(local_40,0xff6d8698);
  local_1f0 = 0xff3b454a;
  local_38 = DAT_18267418c;
  FUN_18140e230(local_34,0xff3b454a);
  local_1e0 = (void *)0x0;
  local_1d8 = 0;
  local_1e0 = (void *)FUN_18048c850();
  puVar3 = &local_1b8;
  do {
    pvVar1 = local_1e0;
    local_208 = FUN_18056f2e0(&local_1e0,puVar3);
    FUN_18056f310(&local_1e0,&local_1f0,pvVar1,local_208 + 0x1c);
    puVar3 = puVar3 + 3;
  } while (puVar3 != &local_2c);
  FUN_1814139d0(uVar4,0,&local_1e0);
  pvVar1 = *(void **)((longlong)local_1e0 + 8);
  if (*(char *)((longlong)pvVar1 + 0x19) != '\0') {
    *(void **)((longlong)local_1e0 + 8) = local_1e0;
    *(void **)local_1e0 = local_1e0;
    *(void **)((longlong)local_1e0 + 0x10) = local_1e0;
    local_1d8 = 0;
                    /* WARNING: Subroutine does not return */
    free(local_1e0);
  }
  FUN_18056b2f0(&local_1e0,*(undefined8 *)((longlong)pvVar1 + 0x10));
                    /* WARNING: Subroutine does not return */
  free(pvVar1);
}



############ FUN_ 1814c1ce0 size=317 ############

void FUN_1814c1ce0(longlong param_1,undefined8 param_2)

{
  byte bVar1;
  undefined8 uVar2;
  byte *pbVar3;
  undefined8 *puVar4;
  float fVar5;
  undefined4 local_res8;
  undefined1 local_res18 [8];
  undefined1 local_res20 [8];
  undefined4 local_28;
  float local_24;
  undefined4 local_20;
  
  uVar2 = FUN_1813f22a0(param_2,local_res20,DAT_1826742b0,param_1);
  pbVar3 = (byte *)FUN_1813eca90(uVar2,local_res18);
  bVar1 = pbVar3[3];
  local_res8 = CONCAT13(bVar1,CONCAT12((char)(int)((float)pbVar3[2] * DAT_1824c3de0),
                                       CONCAT11((char)(int)((float)pbVar3[1] * DAT_1824c3de0),
                                                (char)(int)((float)*pbVar3 * DAT_1824c3de0))));
  FUN_18049fa40(&local_28,local_res8);
  fVar5 = local_24 * DAT_1824c3e58;
  if (DAT_1824c3ea4 <= local_24 * DAT_1824c3e58) {
    fVar5 = DAT_1824c3ea4;
  }
  FUN_18049fbb0(&local_res8,local_28,fVar5,local_20,bVar1);
  puVar4 = (undefined8 *)FUN_18140e230(local_res18,DAT_1826742e8);
  FUN_1813f0dc0(param_2,DAT_1826741e4,*puVar4,param_1);
  puVar4 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  FUN_1813f0dc0(param_2,DAT_182674244,*puVar4,param_1);
  local_res8 = CONCAT13(0xb3,(int3)DAT_18262bb5c);
  *(undefined4 *)(param_1 + 0x970) = local_res8;
  FUN_1814c1e30(param_1);
  return;
}



############ FUN_ 1814fc710 size=346 ############

void FUN_1814fc710(longlong param_1,longlong param_2)

{
  uint uVar1;
  longlong lVar2;
  uint *puVar3;
  undefined1 uVar4;
  longlong lVar5;
  longlong lVar6;
  float fVar7;
  undefined4 local_res10;
  double local_res18;
  undefined4 local_28;
  float local_24;
  undefined4 local_20;
  
  lVar5 = 0;
  lVar2 = __RTDynamicCast(*(undefined8 *)(param_2 + 0x38),0,&juce::Component::RTTI_Type_Descriptor,
                          &CloudyComboBoxRadioButton::RTTI_Type_Descriptor,0);
  if (lVar2 != 0) {
    uVar1 = *(uint *)(*(longlong *)(param_2 + 0x38) + 0x4a0);
    lVar6 = (longlong)(int)uVar1;
    lVar2 = lVar5;
    if (uVar1 < *(uint *)(param_1 + 0xec)) {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xe0) + lVar6 * 8);
    }
    if (*(char *)(lVar2 + 0x4a4) == '\0') {
      lVar2 = lVar5;
      if (uVar1 < *(uint *)(param_1 + 0xec)) {
        lVar2 = *(longlong *)(*(longlong *)(param_1 + 0xe0) + lVar6 * 8);
      }
      puVar3 = (uint *)FUN_1805823c0(param_1 + 0x110,lVar2 + 8);
      local_res18 = (double)((float)(*puVar3 >> 0x18) * DAT_1824c3db8) + DAT_1824c4520;
      uVar4 = 0xff;
      if (SUB84(local_res18,0) < 0xff) {
        uVar4 = SUB81(local_res18,0);
      }
      local_res10 = CONCAT13(uVar4,(int3)*puVar3);
      FUN_18049fa40(&local_28,local_res10);
      fVar7 = local_24 * DAT_1824c3d8c;
      if (DAT_1824c3ea4 <= local_24 * DAT_1824c3d8c) {
        fVar7 = DAT_1824c3ea4;
      }
      FUN_18049fbb0(&local_res10,local_28,fVar7,local_20,uVar4);
      if (uVar1 < *(uint *)(param_1 + 0xec)) {
        lVar5 = *(longlong *)(*(longlong *)(param_1 + 0xe0) + lVar6 * 8);
      }
      FUN_181405270(*(undefined8 *)(lVar5 + 0x4a8),DAT_182674230,local_res10,DAT_1824c4680,
                    DAT_1824c4680);
    }
  }
  return;
}



############ FUN_ 18049fb70 size=49 ############

undefined8 FUN_18049fb70(undefined4 *param_1,undefined8 param_2,undefined4 param_3)

{
  FUN_18049fbb0(param_2,*param_1,param_1[1],param_1[2],(char)((uint)param_3 >> 0x18));
  return param_2;
}



############ FUN_ 1812a2f20 size=32 ############

undefined8 FUN_1812a2f20(undefined8 param_1)

{
  FUN_18049fbb0();
  return param_1;
}



############ FUN_ 1812a2f50 size=102 ############

undefined8 FUN_1812a2f50(undefined8 param_1)

{
  float in_stack_00000028;
  
  if (in_stack_00000028 <= 0.0) {
    FUN_18049fbb0();
    return param_1;
  }
  if (DAT_1824c3ea4 <= in_stack_00000028) {
    FUN_18049fbb0();
    return param_1;
  }
  FUN_18049fbb0();
  return param_1;
}



############ FUN_ 1813bf4e0 size=206 ############

void FUN_1813bf4e0(longlong param_1,float param_2,float param_3)

{
  float fVar1;
  undefined1 uVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  undefined4 local_res10 [6];
  
  fVar1 = DAT_1824c3ea4;
  if (0.0 <= param_2) {
    fVar4 = DAT_1824c3ea4;
    if (param_2 <= DAT_1824c3ea4) {
      fVar4 = param_2;
    }
  }
  else {
    fVar4 = 0.0;
  }
  if (0.0 <= param_3) {
    fVar5 = DAT_1824c3ea4;
    if (param_3 <= DAT_1824c3ea4) {
      fVar5 = param_3;
    }
  }
  else {
    fVar5 = 0.0;
  }
  if ((*(float *)(param_1 + 0xf0) == fVar4) && (*(float *)(param_1 + 0xf4) == fVar5)) {
    return;
  }
  *(float *)(param_1 + 0xf0) = fVar4;
  *(float *)(param_1 + 0xf4) = fVar5;
  fVar3 = (float)*(byte *)(param_1 + 0xeb) / DAT_1824c4548;
  if (0.0 < fVar3) {
    if (fVar3 < fVar1) {
      uVar2 = (undefined1)(int)(fVar3 * DAT_1824c454c);
    }
    else {
      uVar2 = 0xff;
    }
  }
  else {
    uVar2 = 0;
  }
  FUN_18049fbb0(local_res10,*(undefined4 *)(param_1 + 0xec),fVar4,fVar5,uVar2);
  *(undefined4 *)(param_1 + 0xe8) = local_res10[0];
  FUN_1813bf2d0(param_1);
  return;
}



############ FUN_ 1813bf5c0 size=174 ############

void FUN_1813bf5c0(longlong param_1,float param_2)

{
  float fVar1;
  undefined1 uVar2;
  float fVar3;
  float fVar4;
  undefined4 local_res10 [6];
  
  fVar1 = DAT_1824c3ea4;
  if (0.0 <= param_2) {
    fVar4 = DAT_1824c3ea4;
    if (param_2 <= DAT_1824c3ea4) {
      fVar4 = param_2;
    }
  }
  else {
    fVar4 = 0.0;
  }
  if (*(float *)(param_1 + 0xec) != fVar4) {
    *(float *)(param_1 + 0xec) = fVar4;
    fVar3 = (float)*(byte *)(param_1 + 0xeb) / DAT_1824c4548;
    if (0.0 < fVar3) {
      if (fVar3 < fVar1) {
        uVar2 = (undefined1)(int)(fVar3 * DAT_1824c454c);
      }
      else {
        uVar2 = 0xff;
      }
    }
    else {
      uVar2 = 0;
    }
    FUN_18049fbb0(local_res10,fVar4,*(undefined4 *)(param_1 + 0xf0),*(undefined4 *)(param_1 + 0xf4),
                  uVar2);
    *(undefined4 *)(param_1 + 0xe8) = local_res10[0];
    FUN_1813bf2d0(param_1);
    return;
  }
  return;
}



############ FUN_ 180001000 size=102 ############

undefined4 FUN_180001000(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined8 local_18;
  undefined4 local_10;
  
  iVar1 = FUN_180001360(&local_18,0);
  if (iVar1 != 0) {
    DAT_1826159a0 = 0;
    FUN_1800013e0(7);
  }
  local_10 = 0;
  uVar2 = FUN_1800010e0(local_18);
  DAT_1826159a0 = local_10;
  iVar1 = FUN_181a53388();
  if (iVar1 == 0) {
    uVar2 = 0x14;
  }
  return uVar2;
}



############ FUN_ 18146e100 size=2167 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018146e1e8) */
/* WARNING: Removing unreachable block (ram,0x00018146e28f) */

void FUN_18146e100(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  uint *puVar5;
  uint *puVar6;
  uint uVar7;
  uint uVar8;
  undefined4 *puVar9;
  longlong lVar10;
  longlong lVar11;
  uint uVar12;
  longlong *plVar13;
  ulonglong uVar14;
  int unaff_retaddr;
  undefined1 auStack_218 [36];
  int local_1f4;
  uint local_1f0 [2];
  undefined8 local_1e8;
  uint local_1dc;
  undefined8 local_1d8;
  uint local_1d0 [6];
  ulonglong local_1b8;
  undefined *local_1b0;
  undefined4 local_1a8;
  uint local_1a0 [2];
  undefined8 local_198;
  uint local_190;
  uint local_18c;
  undefined8 local_168;
  undefined4 local_160;
  undefined4 local_15c;
  longlong local_158;
  longlong local_150 [2];
  undefined8 *local_140;
  undefined8 local_110;
  undefined8 *local_108;
  undefined8 local_100;
  ulonglong local_48;
  
  local_110 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_218;
  local_168 = param_4;
  local_140 = param_1;
  local_108 = param_1;
  local_100 = param_4;
  FUN_181489570();
  *param_1 = PresetDirectoryComponent::vftable;
  param_1[0x16] = PresetDirectoryComponent::vftable;
  param_1[0x1c] = &DAT_1821dbf98;
  param_1[0x1d] = param_3;
  FUN_18129e350(param_1 + 0x1e);
  uVar12 = (uint)&stack0x00000000 & 0x1bff;
  uVar12 = (uVar12 * uVar12 + 1) % 7;
  local_190 = ((int)(-uVar12 | uVar12) >> 0x1f) * -0x7a55 ^ 0x7385;
  uVar12 = (uint)&stack0x00000000 & 0x23f;
  local_18c = 0x89bb >> ((char)((ulonglong)
                                ((longlong)(int)((uVar12 + 2) * (uVar12 + 1) * uVar12) * 0x55555556)
                               >> 0x20) * -3 & 0x1fU) ^ 0x853b;
  do {
    local_160 = 0x55;
    local_158 = 0x18146e2c9;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_1f4 = 0x11bc343;
  do {
    plVar13 = local_150;
    puVar9 = &local_15c;
    puVar5 = local_1d0;
    FUN_18146da62();
    *puVar5 = 0xa2852aaf;
    *puVar9 = 0x40;
    *plVar13 = 0x18146e3b7;
    FUN_18146d909();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar7 = (local_1d0[0] << 8 | local_1d0[0] >> 0x18) & 0xca35ca35 |
          (local_1d0[0] >> 8 | local_1d0[0] << 0x18) & 0x35ca35ca;
  uVar8 = uVar7 ^ 0x6b72438c;
  uVar12 = (uVar8 >> 0xe ^ uVar8) >> 0xd & 0xf;
  uVar8 = uVar8 ^ (uVar12 << 0xe | uVar12) << 0xd;
  uVar12 = (uVar8 >> 2 & 0xcccccccc | uVar7 << 0x1e | (uVar8 & 0xccccccc) << 2 | uVar8 >> 0x1e) +
           0x771485f7;
  uVar7 = uVar12 >> 0x12 | uVar12 * 0x4000;
  uVar7 = (((uVar12 & 0x3ffff) >> 2 | uVar7 << 0x10) & 0xfb6a0495 |
          (uVar7 << 0x10 | (uVar12 & 0x3ffff) >> 2) & 0x495fb6a) ^ 0x44b9fbc1;
  uVar14 = (ulonglong)uVar7;
  uVar12 = (uVar7 >> 8 ^ uVar7) >> 3 & 0xff;
  lVar10 = local_1f4 + local_158;
  lVar11 = (int)((uVar12 << 8 | uVar12) << 3 ^ uVar7) + local_150[0];
  local_1f4 = 0;
  local_1d0[0] = 0;
  *(longlong *)(lVar10 + 4) =
       *(longlong *)(lVar10 + 4) + (ulonglong)(*(uint *)(lVar11 + 4) & 0x623aa0);
  do {
    puVar5 = local_1a0;
    puVar6 = local_1f0;
    FUN_18146d631(puVar6,puVar5,uVar14);
    uVar1 = rdtsc();
    uVar12 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    *puVar5 = uVar12;
    uVar2 = (ulonglong)uVar12 - ((ulonglong)(uVar12 >> 0xc) - 0x2b5118f4);
    uVar3 = uVar2 * 0x800 | uVar2 >> 0x35;
    uVar2 = uVar3 * 9;
    uVar3 = uVar3 ^ (uVar2 >> 0xe | uVar2 << 0x32) - 0x119ff153;
    uVar3 = uVar3 ^ (uVar3 << 10 | uVar3 >> 0x36) - 0x184fdf2a;
    uVar2 = ((uVar3 >> 0xe | uVar3 << 0x32) - 0x15e38024) + uVar3 * 2;
    uVar2 = uVar2 * 0x400 | uVar2 >> 0x36;
    uVar14 = -((uVar14 ^ 0xffffffffffffffff) + 1);
    uVar2 = uVar2 - ((uVar2 * 0x3000 | uVar2 * 3 >> 0x34) - 0x7e803ad8);
    lVar4 = uVar2 - (uVar2 >> 10);
    *puVar6 = (int)lVar4 * 0x200 | (uint)((ulonglong)lVar4 >> 0x37);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  *(int *)(lVar10 + 8) = *(int *)(lVar10 + 8) + (local_1f0[0] ^ 0xaf09849e);
  *(int *)(lVar10 + 4) = *(int *)(lVar10 + 4) + (local_1f0[0] ^ 0x76ab4291);
  uVar2 = *(longlong *)(lVar10 + 4) + 0x8d4b8ecea95a6093;
  uVar14 = (ulonglong)(((uint)(uVar2 >> 0x18) ^ (uint)uVar2) & 0xfffff);
  uVar2 = uVar2 ^ (uVar14 << 0x18 | uVar14) ^ 0x7989f80cd5d6986f;
  uVar14 = (ulonglong)((uint)((uVar2 >> 0x14 ^ uVar2) >> 0xd) & 0x3fff);
  uVar14 = uVar2 ^ (uVar14 << 0x14 | uVar14) << 0xd;
  uVar2 = ~((uVar14 >> 8 | uVar2 << 0x38) & 0xe718e718e718e718 |
           (uVar14 << 8 | uVar2 >> 0x38) & 0x18e718e718e718e7);
  uVar14 = (ulonglong)((uint)((uVar2 >> 0x10 ^ uVar2) >> 2) & 0x3fff);
  uVar2 = uVar2 ^ (uVar14 << 0x10 | uVar14) << 2;
  uVar14 = (uVar2 >> 0x16 | uVar2 << 0x2a) + 0x6138c623224ac802;
  *(ulonglong *)(lVar10 + 4) = uVar14;
  plVar13 = (longlong *)(lVar11 + 4);
  *plVar13 = *plVar13 + (uVar14 >> 6 & 0x946c0200);
  local_1f0[0] = (uint)(*(ulonglong *)(lVar10 + 4) >> 0x1e) & 0x7fffffff;
  local_1dc = (uint)(*(ulonglong *)(lVar10 + 4) >> 0xf) ^ 0x72ec54af;
  local_1b8 = *(ulonglong *)(lVar10 + 4) ^ 0xbbc4570e484bdfb6;
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  do {
    local_1a8 = 0x7e2b33d0;
    FUN_18147044d();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_198 = 0;
  local_1b0 = &UNK_180940ea8;
  local_1d8 = 0x1809430c4;
  local_1e8 = 0x4d75b44fa128bc83;
  FUN_18146e9b3(0x1809430c4,0x221c,0x940ea8,0x66666462);
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 181490880 size=1139 ############

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

undefined8 FUN_181490880(undefined8 param_1)

{
  undefined8 uVar1;
  int iVar2;
  int *piVar3;
  uint *puVar4;
  uint *puVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  uint uVar8;
  uint uVar9;
  int unaff_retaddr;
  undefined1 auStack_248 [68];
  undefined4 local_204;
  uint local_200 [8];
  uint uStack_1e0;
  undefined4 local_1dc;
  int local_1c0 [4];
  int local_1b0;
  uint local_1ac;
  uint local_1a8;
  uint local_1a4;
  ulonglong uStack_188;
  undefined8 local_180;
  undefined1 local_168 [40];
  undefined8 local_140;
  undefined8 local_138;
  undefined4 local_110;
  undefined4 local_10c;
  undefined8 local_e8;
  ulonglong local_70;
  
  local_e8 = 0xfffffffffffffffe;
  local_70 = DAT_182615970 ^ (ulonglong)auStack_248;
  uVar9 = (uint)&stack0x00000000;
  iVar2 = (uVar9 & 0x7dff) * (uVar9 & 0x7dff) + 1;
  uVar8 = (iVar2 >> 4) + (iVar2 >> 1) + iVar2 * 0x24924924 >> 0x1d;
  uVar8 = (int)(uVar8 - 7) >> 0x1f & uVar8;
  local_1a4 = 0x16fa << ((char)((byte)(-(((uVar9 & 0x2dff) * (uVar9 & 0x2dff) + 1) % 7) >> 0x18) ^
                               0xff) >> 7 & 0x1fU) ^ ((int)(-uVar8 | uVar8) >> 0x1f) * -0x18ea;
  uVar8 = ((uVar9 & 0x1eff) * (uVar9 & 0x1eff) * 0x10 + 4) % 0x13;
  local_1ac = -((int)((-uVar8 | uVar8) ^ 0xfffffffc) >> 0x1f) - 0x1407U & 0x2ab1 ^ 0x2cb1;
  local_180 = param_1;
  FUN_18129e350(local_168);
  FUN_18129deb0(local_168,0,0);
  FUN_18129ddd0(local_168,DAT_1824c42d0,DAT_1824c42d0);
  do {
    piVar3 = local_1c0;
    FUN_181490f1b();
    *piVar3 = -0x6c5d32be;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = (local_1c0[0] + 0x7861bcb3U >> 4 | (local_1c0[0] + 0x7861bcb3U) * 0x10000000) + 0x2711672a
  ;
  uVar8 = (uVar8 >> 0x17 | uVar8 * 0x200) + 0xf58d30d2;
  local_1b0 = ((uint)((uVar8 & 1) != 0) | (uVar8 >> 1 ^ 0x3d5858b1) << 1) + 0xeca0133f;
  FUN_18129deb0(local_168,0,DAT_1824c3ea4);
  do {
    local_110 = 0x23;
    local_140 = 0x181490b47;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    local_10c = 0x49;
    local_138 = 0x181490c37;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_204 = 0;
  local_1dc = 0;
  dvs_0x9ecd6c0e_mfort6317_ =
       (uint *)((longlong)dvs_0x9ecd6c0e_mfort6317_ +
               (ulonglong)((uint)((ulonglong)dvs_0x3f4e005a_mfort6317_ >> 0x1c) & 0x40a80041));
  do {
    puVar5 = &local_1a8;
    puVar4 = local_200;
    FUN_181491b51();
    uVar1 = rdtsc();
    uVar8 = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20);
    *puVar5 = uVar8;
    uVar6 = (ulonglong)uVar8 * 0x1001 + 0x74c8da8e;
    uVar6 = ((uVar6 >> 0xc | uVar6 << 0x34) ^
            ((uVar6 >> 0xc) << 0xf | (uVar6 & 0xfff) << 3) - 0x13e3af91) >> 10;
    *puVar4 = (int)(uVar6 >> 0x10) + -0x3fef79de + (int)uVar6 * 2;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  dvs_0x9ecd6c0e_mfort6317_ =
       (uint *)CONCAT44(dvs_0x9ecd6c0e_mfort6317_._4_4_ + (local_200[0] ^ 0xa3cd347a),
                        (int)dvs_0x9ecd6c0e_mfort6317_ + (local_200[0] ^ 0x2fe711d));
  uVar7 = (ulonglong)dvs_0x9ecd6c0e_mfort6317_ ^ 0x6ebb0078280ae1d3;
  uVar6 = (ulonglong)((uint)((uVar7 >> 0x15 ^ uVar7) >> 6) & 0x3fff);
  uVar6 = uVar7 ^ (uVar6 << 0x15 | uVar6) << 6;
  uVar6 = ((uVar6 << 0x10 | uVar7 >> 0x30) & 0x8a6b75948a6b7594 |
          (uVar6 >> 0x10 | uVar6 << 0x30) & 0x75948a6b75948a6b) + 0x77ad75d1ff9ec411;
  uVar6 = (uVar6 >> 4 & 0xf0f0f0f0f0f0f0f0 | uVar6 << 0x3c |
          uVar6 * 0x10 & 0xf0f0f0f0f0f0f0f | uVar6 >> 0x3c) + 0x57a2f43750153a1b;
  uVar6 = ((uVar6 >> 8 | uVar6 << 0x38) & 0x8b748b748b748b74 |
          (uVar6 * 0x100 | uVar6 >> 0x38) & 0x748b748b748b748b) ^ 0x454eb57adbfebbc1;
  dvs_0x9ecd6c0e_mfort6317_ =
       (uint *)((uVar6 >> 4 | uVar6 << 0x3c) & 0xd2d2d2d2d2d2d2d2 |
               (uVar6 << 4 | uVar6 >> 0x3c) & 0x2d2d2d2d2d2d2d2d);
  dvs_0x3f4e005a_mfort6317_ =
       (uint *)((longlong)dvs_0x3f4e005a_mfort6317_ +
               ((ulonglong)dvs_0x9ecd6c0e_mfort6317_ >> 0x17 & 0xa0001204));
  local_200[0] = (uint)((ulonglong)dvs_0x9ecd6c0e_mfort6317_ >> 0xc) & 0x7fffffff;
  uStack_1e0 = (uint)((ulonglong)dvs_0x9ecd6c0e_mfort6317_ >> 0xd) ^ 0x6c500699;
  uStack_188 = (ulonglong)dvs_0x9ecd6c0e_mfort6317_ ^ 0x9398028dc352e471;
  uVar1 = FUN_18129ddd0(local_168,0,0);
  return uVar1;
}



############ FUN_ 181496af0 size=859 ############

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

void FUN_181496af0(undefined8 param_1,undefined8 param_2)

{
  uint uVar1;
  int unaff_retaddr;
  undefined1 auStack_238 [72];
  undefined8 local_1f0;
  undefined8 local_1e0;
  undefined4 local_1c0;
  undefined8 local_1b8;
  undefined4 local_1b0;
  undefined4 local_1a8;
  undefined8 local_188;
  undefined8 local_180;
  undefined1 local_168 [48];
  undefined8 local_138;
  undefined8 local_108;
  ulonglong local_78;
  
  local_108 = 0xfffffffffffffffe;
  local_78 = DAT_182615970 ^ (ulonglong)auStack_238;
  local_1c0 = 0xa20;
  local_1a8 = 0x620;
  local_188 = param_2;
  local_180 = param_1;
  FUN_18129e350(local_168);
  local_138 = 0;
  local_1f0 = 0x180742a38;
  local_1b8 = 0x180744198;
  do {
    local_1b0 = 0x471f2f06;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  local_1e0 = 0x7766abf8;
  FUN_18149534a();
  FUN_1814b52a9();
  return;
}



############ FUN_ 18153a390 size=2527 ############

/* WARNING: Instruction at (ram,0x00018153ac18) overlaps instruction at (ram,0x00018153ac15)
    */
/* WARNING: Removing unreachable block (ram,0x00018153a5ce) */
/* WARNING: Removing unreachable block (ram,0x00018153a43e) */
/* WARNING: Removing unreachable block (ram,0x00018153a8a2) */
/* WARNING: Removing unreachable block (ram,0x00018153a9ec) */
/* WARNING: Removing unreachable block (ram,0x00018153a957) */

void FUN_18153a390(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4)

{
  longlong *plVar1;
  undefined4 uVar2;
  undefined8 *puVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined4 uVar7;
  longlong lVar8;
  undefined4 *puVar9;
  longlong lVar10;
  uint uVar11;
  longlong lVar12;
  longlong lVar13;
  uint uVar14;
  longlong lVar15;
  undefined8 *puVar16;
  undefined8 *puVar17;
  undefined4 *puVar18;
  int iVar19;
  int iVar20;
  longlong *plVar21;
  undefined4 *puVar22;
  ulonglong uVar23;
  IMAGE_DOS_HEADER *pIVar24;
  uint uVar25;
  IMAGE_DOS_HEADER *pIVar26;
  uint uVar27;
  uint uVar28;
  ulonglong uVar29;
  bool bVar30;
  uint unaff_retaddr;
  longlong alStack_2d0 [13];
  undefined1 local_268 [64];
  int local_228 [2];
  undefined1 *local_220 [2];
  undefined4 local_20c;
  uint local_204 [6];
  undefined4 local_1ec;
  undefined8 local_1e8;
  undefined4 local_1e0;
  uint local_1dc;
  uint local_1d8;
  undefined8 local_1d0;
  undefined8 local_1c8;
  undefined1 local_188 [48];
  undefined *local_158;
  undefined8 local_d8;
  undefined4 local_b0 [14];
  ulonglong local_78;
  
  puVar16 = (undefined8 *)local_268;
  local_d8 = 0xfffffffffffffffe;
  local_78 = DAT_182615970 ^ (ulonglong)local_268;
  uVar11 = (uint)&stack0x00000000 & 0x1bf;
  local_1d8 = ((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3 + 0xb661 ^ 0xbb61;
  uVar11 = (uint)&stack0x00000000 & 0x3ff;
  uVar11 = 1 << ((char)(((uVar11 + 2) * (uVar11 + 1) * uVar11) / 3) * -3 & 0x1fU);
  local_1dc = (int)(-uVar11 | uVar11) >> 0x1f & 0x4644U ^ 0x4894;
  local_20c = param_4;
  local_204[4] = param_3;
  local_1d0 = param_2;
  local_1c8 = param_1;
  FUN_18129e350(local_188);
  FUN_18129deb0(local_188,0,0);
  pIVar26 = &IMAGE_DOS_HEADER_180000000;
  local_1e8 = 0;
  local_220[0] = &DAT_180ae2558;
  local_220[1] = &LAB_180ae3940;
  do {
    FUN_18153a119();
    uVar7 = DAT_1824c3ea4;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_1ec = 0x990d6471;
  do {
    local_1e0 = 0xa5092677;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_1e8 = 0x9881a2db55643a34;
  FUN_18129ddd0(local_188,0,DAT_1824c3ea4);
  uVar2 = DAT_1824c3ef8;
  local_228[0] = 0xaf6e6cb0;
  lVar15 = (longlong)local_220[1] - (longlong)local_220[0];
  local_158 = local_220[0];
  uVar27 = 0x9d09ad3d;
  FUN_18129ddd0(local_188,DAT_1824c3ef8,uVar7);
  FUN_18129ddd0(local_188,uVar2,0);
  FUN_18129ddd0(local_188,0,0);
  local_228[0] = 0x5bd1e995;
  uVar14 = (uint)lVar15;
  uVar11 = ((uVar14 & 0x76ff) * (uVar14 & 0x76ff) + 1) % 7 | 0x9d09ad3d;
  lVar8 = 0x20 - ((longlong)(((int)(-uVar11 | uVar11) >> 0x1f) * -0x85e4) ^ 0x85c0U);
  uVar25 = uVar14 & 0x1ff;
  uVar11 = uVar14 & 0x3bf;
  iVar19 = (uVar11 + 2) * (uVar11 + 1) * uVar11;
  iVar20 = (uVar25 + 2) * (uVar25 + 1) * uVar25;
  uVar23 = 0x2cb6L >>
           (((byte)(((iVar19 >> 1) - (iVar19 >> 3)) + iVar19 * 0x55555555 >> 0x1e) |
            (char)iVar20 + (char)((ulonglong)((longlong)iVar20 * 0x55555556) >> 0x20) * -3) & 0x3f);
  local_220[1] = (undefined1 *)uVar23;
LAB_18153a871:
  uVar11 = uVar27 & 0x6f;
  uVar25 = (((uVar27 & 0xcff) - 1) * (uVar27 & 0xcff) - 1 & 1) -
           (uVar11 * uVar11 * (uVar11 + 1) * (uVar11 + 1) & 0x80000003);
  lVar8 = lVar8 + (0x54 - (((int)(-uVar25 | uVar25) >> 0x1f) * 0x10a & 0x2ce6 ^ uVar23));
  uVar28 = (uint)lVar8;
  iVar19 = (uVar28 & 0x14ff) * (uVar28 & 0x14ff) + 1;
  uVar11 = (iVar19 >> 4) + (iVar19 >> 1) + iVar19 * 0x24924924 >> 0x1d;
  if (((int)(uVar11 - 7) >> 0x1f & uVar11 & 0xc40) == 0) {
    uVar6 = uVar27 & 0x3f | 0x21;
    uVar11 = uVar28 & 0x7f | 0x5d;
    uVar11 = ((uint)(uVar6 * uVar6 * 0xa4ed == uVar11 * uVar11 * 0xc86b) << ((byte)lVar15 & 0x1f)) +
             (uVar14 ^ 0xb20e);
  }
  else {
    uVar11 = uVar14 ^ 0xb20e;
  }
  uVar4 = uVar14 & 7 | 3;
  uVar6 = 0xbd1;
  if ((uVar27 & 0xac) == 0) {
    uVar25 = uVar28 & 0x34ff;
    uVar5 = uVar28 & 0x1f | 0x24;
    uVar6 = uVar27 & 0x3f | 0x44;
    bVar30 = uVar5 * uVar5 * 0xa05b == uVar6 * uVar6 * 0xc95;
    uVar6 = (uint)bVar30;
    uVar5 = (int)(uVar28 ^ 0x8000 | 0x667f) >>
            (((char)uVar25 + '\x01') * (char)uVar25 & 1U) + bVar30;
  }
  else {
    uVar5 = uVar28 ^ 0x8000 | 0x667f;
  }
  uVar11 = (uVar4 * uVar4 * 0xcedd == 0x3cee651) + 0x1628 ^ uVar11;
  puVar9 = (undefined4 *)(ulonglong)uVar11;
  if (uVar11 == ((uVar28 ^ 0xa426) & uVar5)) {
    *(uint *)(puVar16 + 0xd) = uVar27;
    puVar16[-1] = pIVar26;
    puVar16[-2] = lVar8;
    puVar16[-3] = register0x00000020;
    puVar16[-4] = &DAT_18153adf3;
    puVar16[-5] = &LAB_1814e7fbe;
    puVar16[-6] = &DAT_18152831a;
    puVar16[-7] = &DAT_18159c0ed;
    puVar16[-8] = &LAB_1814fd9f5;
    puVar16[-9] = &LAB_1814fe982;
    puVar16[-10] = &LAB_181507b32;
    puVar16[-0xb] = &LAB_181529965;
    puVar16[-0xc] = &LAB_1814e891a;
    puVar16[-0xd] = &LAB_18151c2fb;
    FUN_18158a3a2(puVar16 + 0xd,uVar6,uVar25);
    return;
  }
  puVar18 = (undefined4 *)(local_158 + lVar8);
  if ((pIVar26 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar12._0_1_ = pIVar26->e_magic[0], lVar12._1_1_ = pIVar26->e_magic[1],
     lVar12._2_2_ = pIVar26->e_cblp, lVar12._4_2_ = pIVar26->e_cp, lVar12._6_2_ = pIVar26->e_crlc,
     -1 < lVar12)) {
    puVar16[9] = 0x2621fc0;
    lVar13 = (longlong)&DAT_182621fc0 + -puVar16[9];
    pIVar24 = pIVar26;
    do {
      puVar9 = (undefined4 *)(-puVar16[9] + 0x182621fc8 + lVar12);
      if (puVar18 < puVar9) {
        pIVar26 = pIVar24;
        if (-1 < lVar12) {
          plVar21 = (longlong *)(lVar13 + lVar12);
          plVar1 = (longlong *)(puVar18 + 1);
          if (plVar21 < plVar1) {
            local_b0[0] = *puVar18;
            lVar10 = lVar13 - (longlong)puVar18;
            goto LAB_18153aab0;
          }
        }
        break;
      }
      pIVar26 = (IMAGE_DOS_HEADER *)&pIVar24->e_cparhdr;
      lVar12._0_2_ = pIVar24->e_cparhdr;
      lVar12._2_2_ = pIVar24->e_minalloc;
      lVar12._4_2_ = pIVar24->e_maxalloc;
      lVar12._6_2_ = pIVar24->e_ss;
      pIVar24 = pIVar26;
    } while (-1 < lVar12);
  }
  goto LAB_18153aae0;
  while (plVar21 = (longlong *)(lVar13 + lVar12), plVar21 < plVar1) {
LAB_18153aab0:
    puVar9 = (undefined4 *)(*plVar21 - lVar13);
    *(undefined4 **)((longlong)local_b0 + lVar12 + lVar10) = puVar9;
    pIVar24 = (IMAGE_DOS_HEADER *)&pIVar24->e_cparhdr;
    lVar12 = *(longlong *)pIVar24;
    puVar18 = local_b0;
    if (lVar12 < 0) break;
  }
LAB_18153aae0:
  do {
    puVar22 = (undefined4 *)((longlong)puVar16 + 100);
    uVar23 = 0xf430;
    puVar16[-1] = puVar18;
    puVar3 = puVar16 + -1;
    if (((((ulonglong)puVar9 & 0xc3) != 0) &&
        (puVar3 = puVar16 + -1, ((ulonglong)puVar9 & 0xc3) != 0)) &&
       (puVar3 = puVar16 + -1, ((ulonglong)puVar9 & 0xc3) != 0)) {
      puVar3 = puVar16 + -1;
    }
    do {
      do {
        puVar17 = puVar3;
        puVar3 = puVar17;
      } while ((uVar23 & 0xc300) == 0);
      puVar17[-1] = 0x18153ab7f;
      uVar7 = FUN_181533845();
      *puVar22 = uVar7;
      puVar16 = puVar17 + 1;
      puVar3 = puVar16;
    } while ((uVar23 & 0xc300) == 0);
    puVar9 = (undefined4 *)(ulonglong)unaff_retaddr;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
    puVar18 = (undefined4 *)*puVar17;
  } while (uVar11 != 0);
  iVar19 = *(int *)(puVar17 + 9);
  uVar11 = ((uint)(*(int *)((longlong)puVar17 + 0x6c) * iVar19) >> 0x18 ^
           *(int *)((longlong)puVar17 + 0x6c) * iVar19) * iVar19;
  *(uint *)((longlong)puVar17 + 0x6c) = uVar11;
  uVar27 = uVar27 * iVar19 ^ uVar11;
  do {
    uVar23 = 0xf430;
    *puVar17 = 0x18153ac0a;
    FUN_18153b456();
    uVar29 = -lVar8;
    if ((uVar23 & 0xdf00) != 0) {
      uVar29 = ~uVar29;
    }
    lVar8 = uVar29 + 1;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar23 = puVar17[0xb];
  goto LAB_18153a871;
}



############ FUN_ 181a3be1a size=41 ############

void Unwind_181a3be1a(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x40) & 1) != 0) {
    *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0xa8));
  }
  return;
}



############ FUN_ 181a3be5f size=41 ############

void Unwind_181a3be5f(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x40) & 1) != 0) {
    *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0xa8));
  }
  return;
}



############ FUN_ 181a3c057 size=41 ############

void Unwind_181a3c057(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x40) & 1) != 0) {
    *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0xa8));
  }
  return;
}



############ FUN_ 181a3c09c size=41 ############

void Unwind_181a3c09c(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x40) & 1) != 0) {
    *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0xa8));
  }
  return;
}



############ FUN_ 181a3c543 size=41 ############

void Unwind_181a3c543(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x40) & 1) != 0) {
    *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0xa0));
  }
  return;
}



############ FUN_ 181a3e03c size=41 ############

void Unwind_181a3e03c(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x78) & 1) != 0) {
    *(uint *)(param_2 + 0x78) = *(uint *)(param_2 + 0x78) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0x168));
  }
  return;
}



############ FUN_ 181a3e292 size=41 ############

void Unwind_181a3e292(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x30) & 1) != 0) {
    *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffe;
    FUN_18129e330(*(undefined8 *)(param_2 + 0xa8));
  }
  return;
}



############ FUN_ 181a38286 size=12 ############

void Unwind_181a38286(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a3829e size=12 ############

void Unwind_181a3829e(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a382aa size=12 ############

void Unwind_181a382aa(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x38);
  return;
}



############ FUN_ 181a38322 size=12 ############

void Unwind_181a38322(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a38536 size=12 ############

void Unwind_181a38536(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xb0);
  return;
}



############ FUN_ 181a38587 size=12 ############

void Unwind_181a38587(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a389d9 size=12 ############

void Unwind_181a389d9(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a389e5 size=12 ############

void Unwind_181a389e5(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a38a25 size=12 ############

void Unwind_181a38a25(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a38a31 size=12 ############

void Unwind_181a38a31(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a38a3d size=12 ############

void Unwind_181a38a3d(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a38a49 size=12 ############

void Unwind_181a38a49(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a38aba size=12 ############

void Unwind_181a38aba(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a38ac6 size=12 ############

void Unwind_181a38ac6(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a38af6 size=12 ############

void Unwind_181a38af6(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x90);
  return;
}



############ FUN_ 181a38b02 size=12 ############

void Unwind_181a38b02(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a38b0e size=12 ############

void Unwind_181a38b0e(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a38b1a size=12 ############

void Unwind_181a38b1a(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a38b32 size=12 ############

void Unwind_181a38b32(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3bcdb size=12 ############

void Unwind_181a3bcdb(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xa0);
  return;
}



############ FUN_ 181a3bcff size=12 ############

void Unwind_181a3bcff(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xa0);
  return;
}



############ FUN_ 181a3bd0b size=12 ############

void Unwind_181a3bd0b(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a3bd17 size=12 ############

void Unwind_181a3bd17(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xa8);
  return;
}



############ FUN_ 181a3bd23 size=12 ############

void Unwind_181a3bd23(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a3bd3b size=12 ############

void Unwind_181a3bd3b(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a3bd77 size=12 ############

void Unwind_181a3bd77(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x148);
  return;
}



############ FUN_ 181a3bd8f size=12 ############

void Unwind_181a3bd8f(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x88);
  return;
}



############ FUN_ 181a3bdf6 size=12 ############

void Unwind_181a3bdf6(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3bea4 size=12 ############

void Unwind_181a3bea4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xf8);
  return;
}



############ FUN_ 181a3beb0 size=12 ############

void Unwind_181a3beb0(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xd0);
  return;
}



############ FUN_ 181a3bec8 size=12 ############

void Unwind_181a3bec8(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x140);
  return;
}



############ FUN_ 181a3bed4 size=12 ############

void Unwind_181a3bed4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3bf04 size=12 ############

void Unwind_181a3bf04(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a3bf40 size=12 ############

void Unwind_181a3bf40(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a3bf4c size=12 ############

void Unwind_181a3bf4c(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a3bf64 size=12 ############

void Unwind_181a3bf64(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x48);
  return;
}



############ FUN_ 181a3c002 size=12 ############

void Unwind_181a3c002(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a3c0e1 size=12 ############

void Unwind_181a3c0e1(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x48);
  return;
}



############ FUN_ 181a3c17f size=12 ############

void Unwind_181a3c17f(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a3c1d4 size=12 ############

void Unwind_181a3c1d4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a3c1ec size=12 ############

void Unwind_181a3c1ec(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xb0);
  return;
}



############ FUN_ 181a3c210 size=12 ############

void Unwind_181a3c210(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 200);
  return;
}



############ FUN_ 181a3c228 size=12 ############

void Unwind_181a3c228(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a3c234 size=12 ############

void Unwind_181a3c234(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3c288 size=12 ############

void Unwind_181a3c288(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a3c2ea size=12 ############

void Unwind_181a3c2ea(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a3c2f6 size=12 ############

void Unwind_181a3c2f6(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a3c48d size=12 ############

void Unwind_181a3c48d(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x20);
  return;
}



############ FUN_ 181a3c4bf size=12 ############

void Unwind_181a3c4bf(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a3c4cb size=12 ############

void Unwind_181a3c4cb(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x20);
  return;
}



############ FUN_ 181a3c4d7 size=12 ############

void Unwind_181a3c4d7(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xb0);
  return;
}



############ FUN_ 181a3c4e3 size=12 ############

void Unwind_181a3c4e3(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3c4ef size=12 ############

void Unwind_181a3c4ef(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a3c537 size=12 ############

void Unwind_181a3c537(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a3c5fb size=12 ############

void Unwind_181a3c5fb(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3c6a8 size=12 ############

void Unwind_181a3c6a8(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x48);
  return;
}



############ FUN_ 181a3c6cc size=12 ############

void Unwind_181a3c6cc(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a3c809 size=12 ############

void Unwind_181a3c809(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3c851 size=12 ############

void Unwind_181a3c851(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x58);
  return;
}



############ FUN_ 181a3c869 size=12 ############

void Unwind_181a3c869(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a3c8b5 size=12 ############

void Unwind_181a3c8b5(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a3ca51 size=12 ############

void Unwind_181a3ca51(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3ca5d size=12 ############

void Unwind_181a3ca5d(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3ca69 size=12 ############

void Unwind_181a3ca69(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x88);
  return;
}



############ FUN_ 181a3ca75 size=12 ############

void Unwind_181a3ca75(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x88);
  return;
}



############ FUN_ 181a3cabe size=12 ############

void Unwind_181a3cabe(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xb0);
  return;
}



############ FUN_ 181a3cba3 size=12 ############

void Unwind_181a3cba3(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x88);
  return;
}



############ FUN_ 181a3cc1a size=12 ############

void Unwind_181a3cc1a(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x120);
  return;
}



############ FUN_ 181a3cc32 size=12 ############

void Unwind_181a3cc32(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a3cc56 size=12 ############

void Unwind_181a3cc56(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x20);
  return;
}



############ FUN_ 181a3cc6e size=12 ############

void Unwind_181a3cc6e(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a3cc7a size=12 ############

void Unwind_181a3cc7a(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xe8);
  return;
}



############ FUN_ 181a3cc86 size=12 ############

void Unwind_181a3cc86(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xc0);
  return;
}



############ FUN_ 181a3ccc2 size=12 ############

void Unwind_181a3ccc2(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x20);
  return;
}



############ FUN_ 181a3ccce size=12 ############

void Unwind_181a3ccce(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x88);
  return;
}



############ FUN_ 181a3ccda size=12 ############

void Unwind_181a3ccda(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3cd62 size=12 ############

void Unwind_181a3cd62(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a3cdbb size=12 ############

void Unwind_181a3cdbb(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a3d068 size=12 ############

void Unwind_181a3d068(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x48);
  return;
}



############ FUN_ 181a3d094 size=12 ############

void Unwind_181a3d094(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a3e065 size=12 ############

void Unwind_181a3e065(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a3e188 size=19 ############

void Unwind_181a3e188(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x40) + 0xe0);
  return;
}



############ FUN_ 181a3e19b size=19 ############

void Unwind_181a3e19b(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x40) + 0x108);
  return;
}



############ FUN_ 181a3e1c1 size=12 ############

void Unwind_181a3e1c1(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a3e32f size=12 ############

void Unwind_181a3e32f(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a3e53e size=12 ############

void Unwind_181a3e53e(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a3ee87 size=12 ############

void Unwind_181a3ee87(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 200);
  return;
}



############ FUN_ 181a3eeab size=12 ############

void Unwind_181a3eeab(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xf0);
  return;
}



############ FUN_ 181a42c2c size=12 ############

void Unwind_181a42c2c(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xa0);
  return;
}



############ FUN_ 181a43b35 size=19 ############

void Unwind_181a43b35(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x110) + 0xf0);
  return;
}



############ FUN_ 181a43c00 size=19 ############

void Unwind_181a43c00(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 400) + 0x450);
  return;
}



############ FUN_ 181a43fc3 size=12 ############

void Unwind_181a43fc3(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xe0);
  return;
}



############ FUN_ 181a4409b size=12 ############

void Unwind_181a4409b(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xd0);
  return;
}



############ FUN_ 181a441bb size=12 ############

void Unwind_181a441bb(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x160);
  return;
}



############ FUN_ 181a44772 size=12 ############

void Unwind_181a44772(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xb0);
  return;
}



############ FUN_ 181a4477e size=12 ############

void Unwind_181a4477e(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x88);
  return;
}



############ FUN_ 181a4478a size=12 ############

void Unwind_181a4478a(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a449fa size=19 ############

void Unwind_181a449fa(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x3e0) + 0x1f8);
  return;
}



############ FUN_ 181a44a0d size=19 ############

void Unwind_181a44a0d(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x3e0) + 0x220);
  return;
}



############ FUN_ 181a44a20 size=19 ############

void Unwind_181a44a20(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x3e0) + 0x248);
  return;
}



############ FUN_ 181a44a33 size=19 ############

void Unwind_181a44a33(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x3e0) + 0x270);
  return;
}



############ FUN_ 181a44a46 size=19 ############

void Unwind_181a44a46(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x3e0) + 0x298);
  return;
}



############ FUN_ 181a44a59 size=19 ############

void Unwind_181a44a59(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x3e0) + 0x2c0);
  return;
}



############ FUN_ 181a45084 size=12 ############

void Unwind_181a45084(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x198);
  return;
}



############ FUN_ 181a4509c size=12 ############

void Unwind_181a4509c(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x1c0);
  return;
}



############ FUN_ 181a450b4 size=12 ############

void Unwind_181a450b4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x1e8);
  return;
}



############ FUN_ 181a450cc size=12 ############

void Unwind_181a450cc(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x210);
  return;
}



############ FUN_ 181a450e4 size=12 ############

void Unwind_181a450e4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x238);
  return;
}



############ FUN_ 181a450fc size=12 ############

void Unwind_181a450fc(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x260);
  return;
}



############ FUN_ 181a455f2 size=12 ############

void Unwind_181a455f2(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xe0);
  return;
}



############ FUN_ 181a4576d size=19 ############

void Unwind_181a4576d(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0xe0) + 0x3c0);
  return;
}



############ FUN_ 181a4578c size=12 ############

void Unwind_181a4578c(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a45798 size=12 ############

void Unwind_181a45798(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x40);
  return;
}



############ FUN_ 181a457fc size=12 ############

void Unwind_181a457fc(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x90);
  return;
}



############ FUN_ 181a4595c size=19 ############

void Unwind_181a4595c(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0xd0) + 0x1f0);
  return;
}



############ FUN_ 181a465a7 size=12 ############

void Unwind_181a465a7(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xd0);
  return;
}



############ FUN_ 181a466e4 size=12 ############

void Unwind_181a466e4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 400);
  return;
}



############ FUN_ 181a466f0 size=12 ############

void Unwind_181a466f0(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x1b8);
  return;
}



############ FUN_ 181a467ce size=12 ############

void Unwind_181a467ce(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x130);
  return;
}



############ FUN_ 181a467da size=12 ############

void Unwind_181a467da(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x158);
  return;
}



############ FUN_ 181a46a06 size=12 ############

void Unwind_181a46a06(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x1b8);
  return;
}



############ FUN_ 181a46a12 size=12 ############

void Unwind_181a46a12(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x1e0);
  return;
}



############ FUN_ 181a46d4e size=12 ############

void Unwind_181a46d4e(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xe0);
  return;
}



############ FUN_ 181a46d5a size=12 ############

void Unwind_181a46d5a(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xa8);
  return;
}



############ FUN_ 181a46e80 size=12 ############

void Unwind_181a46e80(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a46e8c size=12 ############

void Unwind_181a46e8c(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a46e98 size=12 ############

void Unwind_181a46e98(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a46ea4 size=12 ############

void Unwind_181a46ea4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a46eb0 size=12 ############

void Unwind_181a46eb0(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xa0);
  return;
}



############ FUN_ 181a46efa size=12 ############

void Unwind_181a46efa(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xe8);
  return;
}



############ FUN_ 181a46f12 size=12 ############

void Unwind_181a46f12(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x180);
  return;
}



############ FUN_ 181a472fa size=12 ############

void Unwind_181a472fa(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x58);
  return;
}



############ FUN_ 181a47306 size=12 ############

void Unwind_181a47306(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x58);
  return;
}



############ FUN_ 181a47481 size=12 ############

void Unwind_181a47481(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 800);
  return;
}



############ FUN_ 181a4748d size=12 ############

void Unwind_181a4748d(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x2f8);
  return;
}



############ FUN_ 181a47499 size=12 ############

void Unwind_181a47499(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x78);
  return;
}



############ FUN_ 181a474f8 size=12 ############

void Unwind_181a474f8(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x110);
  return;
}



############ FUN_ 181a47504 size=12 ############

void Unwind_181a47504(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x138);
  return;
}



############ FUN_ 181a475a8 size=12 ############

void Unwind_181a475a8(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a475b4 size=12 ############

void Unwind_181a475b4(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0xc0);
  return;
}



############ FUN_ 181a47672 size=19 ############

void Unwind_181a47672(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x150) + 0x278);
  return;
}



############ FUN_ 181a47685 size=19 ############

void Unwind_181a47685(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x150) + 0x2a0);
  return;
}



############ FUN_ 181a477ff size=12 ############

void Unwind_181a477ff(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(undefined8 *)(param_2 + 0x58));
  return;
}



############ FUN_ 181a47954 size=12 ############

void Unwind_181a47954(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(undefined8 *)(param_2 + 0x100));
  return;
}



############ FUN_ 181a47992 size=19 ############

void Unwind_181a47992(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0xf8) + 0x398);
  return;
}



############ FUN_ 181a498c3 size=19 ############

void Unwind_181a498c3(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x50) + 400);
  return;
}



############ FUN_ 181a49acb size=12 ############

void Unwind_181a49acb(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x200);
  return;
}



############ FUN_ 181a16c10 size=12 ############

void Unwind_181a16c10(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x80);
  return;
}



############ FUN_ 181a16a10 size=12 ############

void Unwind_181a16a10(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x70);
  return;
}



############ FUN_ 181a16a00 size=12 ############

void Unwind_181a16a00(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x50);
  return;
}



############ FUN_ 181a16bf0 size=12 ############

void Unwind_181a16bf0(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x58);
  return;
}



############ FUN_ 181a16660 size=12 ############

void Unwind_181a16660(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x68);
  return;
}



############ FUN_ 181a183a0 size=12 ############

void Unwind_181a183a0(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(param_2 + 0x60);
  return;
}



############ FUN_ 181a1bf90 size=19 ############

void Unwind_181a1bf90(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x70) + 0x98a8);
  return;
}



############ FUN_ 181a1c610 size=19 ############

void Unwind_181a1c610(undefined8 param_1,longlong param_2)

{
  FUN_18129e330(*(longlong *)(param_2 + 0x40) + 0xd0);
  return;
}



############ FUN_ 181a1bfb0 size=49 ############

void Unwind_181a1bfb0(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x70) + 0x98d0),0x28,6,FUN_18129e330);
  return;
}



############ FUN_ 1804af790 size=115 ############

void FUN_1804af790(undefined8 *param_1,int param_2)

{
  void *pvVar1;
  
  if (*(int *)(param_1 + 1) == param_2) {
    *(int *)(param_1 + 1) = param_2;
    return;
  }
  pvVar1 = (void *)*param_1;
  if (0 < param_2) {
    if (pvVar1 == (void *)0x0) {
      pvVar1 = malloc((longlong)param_2 * 4);
      *param_1 = pvVar1;
      *(int *)(param_1 + 1) = param_2;
      return;
    }
    pvVar1 = realloc(pvVar1,(longlong)param_2 * 4);
    *param_1 = pvVar1;
    *(int *)(param_1 + 1) = param_2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar1);
}



############ FUN_ 18129daf0 size=356 ############

void FUN_18129daf0(longlong *param_1,float param_2,float param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  float *pfVar1;
  int iVar2;
  
  if (*(int *)((longlong)param_1 + 0xc) == 0) {
    param_1[2] = 0;
    param_1[3] = 0;
    FUN_1804b02a0(param_1,&DAT_1821df344,0,0);
  }
  iVar2 = *(int *)((longlong)param_1 + 0xc) + 7;
  if ((int)param_1[1] < iVar2) {
    FUN_1804af790(param_1,*(int *)((longlong)param_1 + 0xc) + 0xf + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar2 * 4) = 0x47c35200;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(float *)(*param_1 + (longlong)iVar2 * 4) = param_2;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(float *)(*param_1 + (longlong)iVar2 * 4) = param_3;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar2 * 4) = param_4;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar2 * 4) = param_5;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar2 * 4) = param_6;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar2 * 4) = param_7;
  pfVar1 = (float *)(param_1 + 2);
  if (*pfVar1 <= param_2) {
    if (*(float *)((longlong)param_1 + 0x14) <= param_2 &&
        param_2 != *(float *)((longlong)param_1 + 0x14)) {
      *(float *)((longlong)param_1 + 0x14) = param_2;
    }
  }
  else {
    *pfVar1 = param_2;
  }
  if (*(float *)(param_1 + 3) <= param_3) {
    if (*(float *)((longlong)param_1 + 0x1c) <= param_3 &&
        param_3 != *(float *)((longlong)param_1 + 0x1c)) {
      *(float *)((longlong)param_1 + 0x1c) = param_3;
    }
  }
  else {
    *(float *)(param_1 + 3) = param_3;
  }
  FUN_1804b0330(pfVar1,param_4);
  return;
}



############ FUN_ 18129dca0 size=245 ############

void FUN_18129dca0(longlong *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5)

{
  int iVar1;
  
  if (*(int *)((longlong)param_1 + 0xc) == 0) {
    param_1[2] = 0;
    param_1[3] = 0;
    FUN_1804b02a0(param_1,&DAT_1821df344,0,0);
  }
  iVar1 = *(int *)((longlong)param_1 + 0xc) + 5;
  if ((int)param_1[1] < iVar1) {
    FUN_1804af790(param_1,*(int *)((longlong)param_1 + 0xc) + 0xd + iVar1 / 2 & 0xfffffff8);
  }
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = 0x47c35180;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = param_2;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = param_3;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = param_4;
  iVar1 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
  *(undefined4 *)(*param_1 + (longlong)iVar1 * 4) = param_5;
  FUN_1804b0330(param_1 + 2,param_2,param_3,param_4);
  return;
}



############ FUN_ 1804a1a40 size=1190 ############

void FUN_1804a1a40(float *param_1,float param_2,longlong *param_3)

{
  void *_Memory;
  bool bVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined4 uVar5;
  char cVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  ulonglong uVar10;
  undefined1 uVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  longlong local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined1 local_98;
  int local_90;
  undefined8 local_8c;
  undefined8 uStack_84;
  undefined8 local_7c;
  longlong *local_70;
  longlong local_68;
  
  if (*param_1 != param_2) {
    fVar12 = param_1[8] * param_2 + DAT_1824c3d8c;
    fVar15 = param_1[7];
    *param_1 = param_2;
    local_b8 = CONCAT44(local_b8._4_4_,fVar15);
    fVar13 = floorf(fVar12);
    fVar14 = floorf(fVar15 * param_2 + DAT_1824c3d54);
    fVar14 = fVar14 / param_2;
    fVar12 = floorf(param_1[6] * param_2 + DAT_1824c3d8c);
    fVar16 = (fVar14 - fVar12 / param_2) / (fVar15 - param_1[6]);
    fVar12 = DAT_1824c3e58;
    if ((DAT_1824c3e58 <= fVar16) && (fVar12 = DAT_1824c3ee0, fVar16 <= DAT_1824c3ee0)) {
      fVar12 = fVar16;
    }
    fVar17 = (fVar13 / param_2 - fVar14) / (param_1[8] - fVar15);
    fVar16 = DAT_1824c3e58;
    if ((DAT_1824c3e58 <= fVar17) && (fVar16 = DAT_1824c3ee0, fVar17 <= DAT_1824c3ee0)) {
      fVar16 = fVar17;
    }
    param_1[1] = (float)local_b8;
    param_1[2] = fVar12;
    param_1[3] = fVar14 - fVar12 * fVar15;
    param_1[4] = fVar16;
    param_1[5] = fVar13 / param_2 - fVar16 * param_1[8];
  }
  fVar15 = DAT_1824c42d0 / param_2 + param_1[6];
  if (param_1[8] <= fVar15 && fVar15 != param_1[8]) {
    return;
  }
  local_68 = *param_3;
  uVar10 = 0;
  local_b8 = 0;
  uVar11 = 1;
  uStack_b0 = 0;
  local_a8 = 0;
  uStack_a0 = 0;
  local_98 = 1;
  local_90 = 0;
  local_8c = 0;
  uStack_84 = 0;
  local_7c = 0;
  local_70 = param_3;
  cVar6 = FUN_181299d60(&local_90);
  fVar15 = DAT_1824c460c;
  uVar8 = (undefined4)uVar10;
  lVar4 = local_a8;
  uVar2 = uStack_a0;
  uVar3 = local_7c;
  do {
    local_a8 = lVar4;
    uStack_a0 = uVar2;
    local_7c = uVar3;
    if (cVar6 == '\0') {
      _Memory = (void *)*param_3;
      *param_3 = local_b8;
      *(int *)(param_3 + 1) = (int)uStack_b0;
      *(undefined4 *)((longlong)param_3 + 0xc) = uVar8;
      param_3[2] = lVar4;
      param_3[3] = uVar2;
      *(undefined1 *)(param_3 + 4) = uVar11;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    iVar9 = (int)uVar10;
    local_8c._4_4_ = (float)((ulonglong)local_8c >> 0x20);
    if (local_90 == 0) {
      if (param_1[1] <= local_8c._4_4_) {
        fVar12 = local_8c._4_4_ * param_1[4] + param_1[5];
      }
      else {
        fVar12 = local_8c._4_4_ * param_1[2] + param_1[3];
      }
      if (iVar9 == 0) {
        local_a8 = CONCAT44((float)local_8c,(float)local_8c);
        uStack_a0 = (ulonglong)(uint)fVar12;
LAB_1804a1e77:
        uStack_a0 = CONCAT44(fVar12,(float)uStack_a0);
      }
      else {
        local_a8._0_4_ = (float)lVar4;
        local_a8._4_4_ = (float)((ulonglong)lVar4 >> 0x20);
        if ((float)local_a8 <= (float)local_8c) {
          if (local_a8._4_4_ < (float)local_8c) {
            local_a8 = CONCAT44((float)local_8c,(float)local_a8);
            lVar4 = local_a8;
          }
        }
        else {
          local_a8 = CONCAT44(local_a8._4_4_,(float)local_8c);
          lVar4 = local_a8;
        }
        local_a8 = lVar4;
        uStack_a0._0_4_ = (float)uVar2;
        uStack_a0._4_4_ = (float)(uVar2 >> 0x20);
        if ((float)uStack_a0 <= fVar12) {
          bVar1 = uStack_a0._4_4_ < fVar12;
          if (bVar1) goto LAB_1804a1e77;
        }
        else {
          uStack_a0 = CONCAT44(uStack_a0._4_4_,fVar12);
        }
      }
      FUN_1804b02a0(&local_b8,&DAT_1821df344);
LAB_1804a1e8c:
      uVar10 = uStack_b0 >> 0x20;
    }
    else {
      if (local_90 == 1) {
        if (param_1[1] <= local_8c._4_4_) {
          fVar13 = local_8c._4_4_ * param_1[4];
          fVar12 = (float)local_8c;
          FUN_18129ddd0(&local_b8,fVar12,fVar13 + param_1[5]);
        }
        else {
          fVar13 = local_8c._4_4_ * param_1[2];
          fVar12 = (float)local_8c;
          FUN_18129ddd0(&local_b8,fVar12,fVar13 + param_1[3]);
        }
        goto LAB_1804a1e8c;
      }
      uStack_84._4_4_ = (float)((ulonglong)uStack_84 >> 0x20);
      if (local_90 == 2) {
        if (param_1[1] <= uStack_84._4_4_) {
          fVar12 = uStack_84._4_4_ * param_1[4] + param_1[5];
        }
        else {
          fVar12 = uStack_84._4_4_ * param_1[2] + param_1[3];
        }
        if (param_1[1] <= local_8c._4_4_) {
          fVar13 = local_8c._4_4_ * param_1[4] + param_1[5];
        }
        else {
          fVar13 = local_8c._4_4_ * param_1[2] + param_1[3];
        }
        fVar14 = (float)local_8c;
        uVar8 = (undefined4)uStack_84;
        FUN_18129dca0(&local_b8,fVar14,fVar13,uVar8,fVar12);
        goto LAB_1804a1e8c;
      }
      if (local_90 == 3) {
        fVar12 = param_1[1];
        local_7c._4_4_ = (float)((ulonglong)uVar3 >> 0x20);
        if (fVar12 <= local_7c._4_4_) {
          fVar13 = local_7c._4_4_ * param_1[4] + param_1[5];
        }
        else {
          fVar13 = local_7c._4_4_ * param_1[2] + param_1[3];
        }
        if (fVar12 <= uStack_84._4_4_) {
          fVar14 = uStack_84._4_4_ * param_1[4] + param_1[5];
        }
        else {
          fVar14 = uStack_84._4_4_ * param_1[2] + param_1[3];
        }
        if (fVar12 <= local_8c._4_4_) {
          fVar12 = local_8c._4_4_ * param_1[4] + param_1[5];
        }
        else {
          fVar12 = local_8c._4_4_ * param_1[2] + param_1[3];
        }
        local_7c._0_4_ = (undefined4)uVar3;
        fVar16 = (float)local_8c;
        uVar8 = (undefined4)uStack_84;
        uVar5 = (undefined4)local_7c;
        FUN_18129daf0(&local_b8,fVar16,fVar12,uVar8,fVar14,uVar5,fVar13);
        goto LAB_1804a1e8c;
      }
      if (((local_90 == 4) && (iVar9 != 0)) &&
         ((iVar9 < 1 || (*(float *)(local_b8 + (longlong)(iVar9 + -1) * 4) != fVar15)))) {
        iVar7 = iVar9 + 1;
        if ((int)uStack_b0 < iVar7) {
          if (iVar7 < 0) {
            iVar7 = iVar9 + 2;
          }
          FUN_1804af790(&local_b8,iVar9 + 9 + (iVar7 >> 1) & 0xfffffff8);
          iVar9 = uStack_b0._4_4_;
        }
        uVar10 = (ulonglong)(iVar9 + 1U);
        uStack_b0 = CONCAT44(iVar9 + 1U,(int)uStack_b0);
        *(undefined4 *)(local_b8 + (longlong)iVar9 * 4) = 0x47c35280;
      }
    }
    cVar6 = FUN_181299d60(&local_90);
    uVar8 = (undefined4)uVar10;
    uVar11 = local_98;
    lVar4 = local_a8;
    uVar2 = uStack_a0;
    uVar3 = local_7c;
  } while( true );
}



############ FUN_ 1804a5ff0 size=833 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804a5ff0(longlong param_1,UINT param_2,longlong *param_3)

{
  float fVar1;
  float fVar2;
  DWORD cjBuffer;
  int iVar3;
  uint *pvBuffer;
  uint uVar4;
  int iVar5;
  short *psVar6;
  uint *puVar7;
  uint *puVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  undefined1 auStackY_d8 [32];
  _GLYPHMETRICS local_98;
  ulonglong local_80;
  
  local_80 = DAT_182615970 ^ (ulonglong)auStackY_d8;
  if ((int)param_2 < 0) {
    param_2 = *(UINT *)(param_1 + 0xc0);
  }
  cjBuffer = GetGlyphOutlineW(*(HDC *)(param_1 + 0x68),param_2,0x82,&local_98,0,(LPVOID)0x0,
                              (MAT2 *)&DAT_1821e1368);
  if ((int)cjBuffer < 1) {
  }
  pvBuffer = malloc((longlong)(int)cjBuffer);
  GetGlyphOutlineW(*(HDC *)(param_1 + 0x68),param_2,0x82,&local_98,cjBuffer,pvBuffer,
                   (MAT2 *)&DAT_1821e1368);
  fVar2 = DAT_1824c460c;
  fVar1 = DAT_1824c3d8c;
  fVar11 = DAT_1824c3ea4 / (float)*(int *)(param_1 + 0x70);
  fVar12 = (float)((uint)fVar11 ^ DAT_1824c4f30);
  puVar7 = pvBuffer;
  do {
    if ((uint *)((longlong)(int)cjBuffer + (longlong)pvBuffer) <= puVar7) {
                    /* WARNING: Subroutine does not return */
      free(pvBuffer);
    }
    fVar10 = (float)(int)*(short *)((longlong)puVar7 + 0xe) * fVar12;
    fVar9 = (float)(int)*(short *)((longlong)puVar7 + 10) * fVar11;
    if (*(int *)((longlong)param_3 + 0xc) == 0) {
      *(float *)((longlong)param_3 + 0x14) = fVar9;
      *(float *)(param_3 + 2) = fVar9;
      *(float *)(param_3 + 3) = fVar10;
LAB_1804a6172:
      *(float *)((longlong)param_3 + 0x1c) = fVar10;
    }
    else {
      if (*(float *)(param_3 + 2) <= fVar9) {
        if (*(float *)((longlong)param_3 + 0x14) <= fVar9 &&
            fVar9 != *(float *)((longlong)param_3 + 0x14)) {
          *(float *)((longlong)param_3 + 0x14) = fVar9;
        }
      }
      else {
        *(float *)(param_3 + 2) = fVar9;
      }
      if (*(float *)(param_3 + 3) <= fVar10) {
        if (*(float *)((longlong)param_3 + 0x1c) <= fVar10 &&
            fVar10 != *(float *)((longlong)param_3 + 0x1c)) goto LAB_1804a6172;
      }
      else {
        *(float *)(param_3 + 3) = fVar10;
      }
    }
    FUN_1804b02a0(param_3,&DAT_1821df344);
    puVar8 = (uint *)((ulonglong)*puVar7 + (longlong)puVar7);
    for (puVar7 = puVar7 + 4; puVar7 < puVar8;
        puVar7 = puVar7 + (ulonglong)*(ushort *)((longlong)puVar7 + 2) * 2 + 1) {
      if ((short)*puVar7 == 1) {
        if (*(short *)((longlong)puVar7 + 2) != 0) {
          psVar6 = (short *)((longlong)puVar7 + 6);
          iVar5 = 0;
          do {
            FUN_18129ddd0(param_3,(float)(int)*psVar6 * fVar11,(float)(int)psVar6[2] * fVar12);
            psVar6 = psVar6 + 4;
            iVar5 = iVar5 + 1;
          } while (iVar5 < (int)(uint)*(ushort *)((longlong)puVar7 + 2));
        }
      }
      else if (((short)*puVar7 == 2) &&
              (uVar4 = (uint)*(ushort *)((longlong)puVar7 + 2),
              0 < (int)(*(ushort *)((longlong)puVar7 + 2) - 1))) {
        psVar6 = (short *)((longlong)puVar7 + 0x12);
        iVar5 = 0;
        do {
          fVar9 = (float)(int)psVar6[-2] * fVar11;
          if (iVar5 < (int)(uVar4 - 2)) {
            fVar9 = (fVar9 + (float)(int)psVar6[-6] * fVar11) * fVar1;
          }
          FUN_18129dca0(param_3,(float)(int)psVar6[-6] * fVar11,(float)(int)psVar6[-4] * fVar12,
                        fVar9);
          uVar4 = (uint)*(ushort *)((longlong)puVar7 + 2);
          iVar5 = iVar5 + 1;
          psVar6 = psVar6 + 4;
        } while (iVar5 < (int)(uVar4 - 1));
      }
    }
    iVar5 = *(int *)((longlong)param_3 + 0xc);
    if ((iVar5 != 0) &&
       ((iVar5 < 1 || (*(float *)(*param_3 + (longlong)(iVar5 + -1) * 4) != fVar2)))) {
      iVar3 = iVar5 + 1;
      if ((int)param_3[1] < iVar3) {
        if (iVar3 < 0) {
          iVar3 = iVar5 + 2;
        }
        FUN_1804af790(param_3,iVar5 + 9 + (iVar3 >> 1) & 0xfffffff8);
      }
      iVar5 = *(int *)((longlong)param_3 + 0xc);
      *(int *)((longlong)param_3 + 0xc) = iVar5 + 1;
      *(undefined4 *)(*param_3 + (longlong)iVar5 * 4) = 0x47c35280;
    }
  } while( true );
}



############ FUN_ 181297340 size=1170 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181297340(float *param_1,undefined8 param_2,undefined8 *param_3,longlong param_4,
                  int param_5,undefined4 *param_6,float param_7)

{
  bool bVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  char cVar4;
  int iVar5;
  char cVar6;
  int iVar7;
  byte bVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float _X;
  float _Y;
  float fVar13;
  float fVar14;
  float fVar15;
  undefined8 local_168;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 uStack_150;
  undefined1 local_148;
  undefined8 local_140;
  undefined8 uStack_138;
  ulonglong local_130;
  float local_128;
  float local_124;
  undefined8 local_120;
  char local_118;
  undefined4 local_114;
  undefined8 *local_110;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined8 local_f8;
  undefined8 local_f0;
  float local_e8;
  undefined8 local_e4;
  undefined1 local_dc;
  void *local_d8;
  void *local_d0;
  undefined8 local_c8;
  
  if (*param_1 <= 0.0) {
    return;
  }
  iVar7 = 0;
  local_f8 = *(undefined8 *)(param_6 + 4);
  local_158 = 0;
  uStack_150 = 0;
  local_168 = 0;
  local_108 = *param_6;
  uStack_104 = param_6[1];
  uStack_100 = param_6[2];
  uStack_fc = param_6[3];
  local_160 = 0;
  local_148 = 1;
  local_f0 = *param_3;
  local_120 = 0;
  local_118 = '\0';
  local_114 = 0xffffffff;
  local_e4 = 0;
  local_e8 = (DAT_1824c3db8 / param_7) * (DAT_1824c3db8 / param_7);
  local_110 = param_3;
  local_dc = FUN_1812a0b10();
  local_d8 = malloc(0x80);
  cVar6 = '\x01';
  fVar15 = 0.0;
  fVar13 = 0.0;
  fVar14 = 0.0;
  local_c8 = 0x20;
  _X = 0.0;
  _Y = 0.0;
  fVar11 = local_124;
  fVar12 = local_128;
  local_d0 = local_d8;
LAB_181297470:
  do {
    do {
      iVar5 = iVar7 % param_5;
      bVar8 = ~(byte)iVar7 & 1;
      iVar7 = iVar7 + 1;
      fVar10 = *(float *)(param_4 + (longlong)iVar5 * 4);
    } while (fVar10 <= 0.0);
    fVar15 = fVar15 + fVar10;
    uVar3 = local_158;
    uVar2 = uStack_150;
    for (; local_158 = uVar3, uStack_150 = uVar2, fVar14 < fVar15; fVar14 = fVar14 + fVar13) {
      cVar4 = FUN_1812992b0(&local_128);
      fVar11 = local_124;
      fVar12 = local_128;
      if (cVar4 == '\0') {
        if ((bVar8 != 0) && (cVar6 == '\0')) {
          FUN_18129ddd0(&local_168,local_120 & 0xffffffff,local_120._4_4_);
        }
        local_140 = _DAT_1824c4780;
        uStack_138 = _UNK_1824c4788;
        local_130 = (ulonglong)DAT_1824c3ea4;
        FUN_181297840(*param_1,param_1[1],param_1[2],param_2,&local_168,&local_140,param_7);
                    /* WARNING: Subroutine does not return */
        free(local_d8);
      }
      if ((bVar8 == 0) || (cVar6 != '\0')) {
        if (local_160._4_4_ == 0) {
          uStack_150 = (ulonglong)(uint)local_124;
          local_158 = CONCAT44(local_128,local_128);
LAB_1812975c6:
          uStack_150 = CONCAT44(local_124,(float)uStack_150);
        }
        else {
          if ((float)local_158 <= local_128) {
            if (local_158._4_4_ < local_128) {
              local_158 = CONCAT44(local_128,(float)local_158);
            }
          }
          else {
            local_158 = CONCAT44(local_158._4_4_,local_128);
          }
          if ((float)uStack_150 <= local_124) {
            if (uStack_150._4_4_ < local_124) goto LAB_1812975c6;
          }
          else {
            uStack_150 = CONCAT44(uStack_150._4_4_,local_124);
          }
        }
        FUN_1804b02a0(&local_168,&DAT_1821df344,local_128,local_124);
      }
      else {
        if (local_160._4_4_ == 0) {
          local_158 = 0;
          uStack_150 = 0;
          FUN_1804b02a0(&local_168,&DAT_1821df344,0,0);
        }
        fVar11 = local_124;
        fVar12 = local_128;
        FUN_1804b02a0(&local_168,&DAT_1821dfcb4,local_128,local_124);
        if ((float)local_158 <= fVar12) {
          if (local_158._4_4_ < fVar12) {
            local_158 = CONCAT44(fVar12,(float)local_158);
          }
        }
        else {
          local_158 = CONCAT44(local_158._4_4_,fVar12);
        }
        if ((float)uStack_150 <= fVar11) {
          if (uStack_150._4_4_ < fVar11) {
            uStack_150 = CONCAT44(fVar11,(float)uStack_150);
          }
        }
        else {
          uStack_150 = CONCAT44(uStack_150._4_4_,fVar11);
        }
      }
      _X = (float)local_120 - fVar12;
      _Y = local_120._4_4_ - fVar11;
      fVar13 = _hypotf(_X,_Y);
      cVar6 = local_118;
      uVar3 = local_158;
      uVar2 = uStack_150;
    }
    fVar10 = (fVar15 - (fVar14 - fVar13)) / fVar13;
    if (bVar8 == 0) {
      local_160._4_4_ = (int)((ulonglong)local_160 >> 0x20);
      fVar9 = fVar10 * _Y + fVar11;
      fVar10 = fVar10 * _X + fVar12;
      if (local_160._4_4_ == 0) {
        local_158 = CONCAT44(fVar10,fVar10);
        uStack_150 = (ulonglong)(uint)fVar9;
LAB_1812976ca:
        uStack_150 = CONCAT44(fVar9,(float)uStack_150);
      }
      else {
        local_158._0_4_ = (float)uVar3;
        local_158._4_4_ = (float)((ulonglong)uVar3 >> 0x20);
        if ((float)local_158 <= fVar10) {
          if (local_158._4_4_ < fVar10) {
            local_158 = CONCAT44(fVar10,(float)local_158);
            uVar3 = local_158;
          }
        }
        else {
          local_158 = CONCAT44(local_158._4_4_,fVar10);
          uVar3 = local_158;
        }
        local_158 = uVar3;
        uStack_150._0_4_ = (float)uVar2;
        uStack_150._4_4_ = (float)(uVar2 >> 0x20);
        if ((float)uStack_150 <= fVar9) {
          bVar1 = uStack_150._4_4_ < fVar9;
          if (bVar1) goto LAB_1812976ca;
        }
        else {
          uStack_150 = CONCAT44(uStack_150._4_4_,fVar9);
        }
      }
      FUN_1804b02a0(&local_168,&DAT_1821df344,fVar10);
      goto LAB_181297470;
    }
    FUN_18129ddd0(&local_168,fVar10 * _X + fVar12,fVar10 * _Y + fVar11);
  } while( true );
}



############ FUN_ 181297d70 size=1276 ############

void FUN_181297d70(longlong *param_1,longlong *param_2,char param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  float fVar1;
  float fVar2;
  undefined4 *puVar3;
  longlong lVar4;
  int iVar5;
  int iVar6;
  longlong lVar7;
  longlong lVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  
  lVar8 = *param_2;
  uVar11 = *(undefined4 *)(lVar8 + 0x10);
  uVar12 = *(undefined4 *)(lVar8 + 0x14);
  uVar10 = *(undefined4 *)(lVar8 + 0x18);
  uVar9 = *(undefined4 *)(lVar8 + 0x1c);
  if (param_3 == '\0') {
    FUN_18129deb0(param_1,*(undefined4 *)(lVar8 + 0x28),*(undefined4 *)(lVar8 + 0x2c));
    FUN_181298750(param_1,param_7,*(undefined4 *)(lVar8 + 0x28),*(undefined4 *)(lVar8 + 0x2c),uVar11
                  ,uVar12,param_4);
  }
  else {
    FUN_18129deb0(param_1,uVar11,uVar12);
  }
  iVar6 = 1;
  if (1 < *(int *)((longlong)param_2 + 0xc)) {
    lVar8 = 0x30;
    do {
      lVar7 = *param_2;
      FUN_1812989f0(param_1,param_6,param_5,param_4,uVar11,uVar12,uVar10,uVar9,
                    *(undefined4 *)(lVar8 + 0x10 + lVar7),*(undefined4 *)(lVar8 + 0x14 + lVar7),
                    *(undefined4 *)(lVar8 + 0x18 + lVar7),*(undefined4 *)(lVar8 + 0x1c + lVar7),
                    *(undefined4 *)(lVar8 + lVar7),*(undefined4 *)(lVar8 + 4 + lVar7));
      uVar11 = *(undefined4 *)(lVar8 + 0x10 + lVar7);
      iVar6 = iVar6 + 1;
      uVar12 = *(undefined4 *)(lVar8 + 0x14 + lVar7);
      uVar10 = *(undefined4 *)(lVar8 + 0x18 + lVar7);
      uVar9 = *(undefined4 *)(lVar8 + 0x1c + lVar7);
      lVar8 = lVar8 + 0x30;
    } while (iVar6 < *(int *)((longlong)param_2 + 0xc));
  }
  puVar3 = (undefined4 *)*param_2;
  iVar6 = *(int *)((longlong)param_2 + 0xc) + -1;
  if (param_3 == '\0') {
    FUN_18129ddd0(param_1,uVar10,uVar9);
    FUN_181298750(param_1,param_7,uVar10,uVar9,puVar3[(longlong)iVar6 * 0xc + 8],
                  puVar3[(longlong)iVar6 * 0xc + 9],param_4);
    goto LAB_18129808c;
  }
  FUN_1812989f0(param_1,param_6,param_5,param_4,uVar11,uVar12,uVar10,uVar9,puVar3[4],puVar3[5],
                puVar3[6],puVar3[7],*puVar3,puVar3[1]);
  iVar5 = *(int *)((longlong)param_1 + 0xc);
  if ((iVar5 != 0) &&
     ((iVar5 < 1 || (*(float *)(*param_1 + (longlong)(iVar5 + -1) * 4) != DAT_1824c460c)))) {
    if ((int)param_1[1] < iVar5 + 1) {
      FUN_1804af790(param_1,iVar5 + 9 + (iVar5 + 1) / 2 & 0xfffffff8);
    }
    iVar5 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar5 + 1;
    *(undefined4 *)(*param_1 + (longlong)iVar5 * 4) = 0x47c35280;
  }
  fVar1 = (float)puVar3[(longlong)iVar6 * 0xc + 9];
  fVar2 = (float)puVar3[(longlong)iVar6 * 0xc + 8];
  if (*(int *)((longlong)param_1 + 0xc) == 0) {
    *(float *)((longlong)param_1 + 0x14) = fVar2;
    *(float *)(param_1 + 2) = fVar2;
    *(float *)(param_1 + 3) = fVar1;
LAB_181298036:
    *(float *)((longlong)param_1 + 0x1c) = fVar1;
  }
  else {
    if (*(float *)(param_1 + 2) <= fVar2) {
      if (*(float *)((longlong)param_1 + 0x14) <= fVar2 &&
          fVar2 != *(float *)((longlong)param_1 + 0x14)) {
        *(float *)((longlong)param_1 + 0x14) = fVar2;
      }
    }
    else {
      *(float *)(param_1 + 2) = fVar2;
    }
    if (fVar1 < *(float *)(param_1 + 3)) {
      *(float *)(param_1 + 3) = fVar1;
      FUN_1804b02a0(param_1,&DAT_1821df344);
      goto LAB_18129808c;
    }
    if (*(float *)((longlong)param_1 + 0x1c) <= fVar1 &&
        fVar1 != *(float *)((longlong)param_1 + 0x1c)) goto LAB_181298036;
  }
  FUN_1804b02a0(param_1,&DAT_1821df344);
LAB_18129808c:
  uVar11 = puVar3[(longlong)iVar6 * 0xc + 8];
  iVar5 = *(int *)((longlong)param_2 + 0xc) + -2;
  uVar12 = puVar3[(longlong)iVar6 * 0xc + 9];
  uVar10 = puVar3[(longlong)iVar6 * 0xc + 10];
  uVar9 = puVar3[(longlong)iVar6 * 0xc + 0xb];
  lVar8 = (longlong)iVar5;
  if (-1 < iVar5) {
    lVar7 = lVar8 * 0x30;
    do {
      lVar4 = *param_2;
      FUN_1812989f0(param_1,param_6,param_5,param_4,uVar11,uVar12,uVar10,uVar9,
                    *(undefined4 *)(lVar4 + 0x20 + lVar7),*(undefined4 *)(lVar4 + 0x24 + lVar7),
                    *(undefined4 *)(lVar4 + 0x28 + lVar7),*(undefined4 *)(lVar4 + 0x2c + lVar7),
                    *(undefined4 *)(lVar4 + 8 + lVar7),*(undefined4 *)(lVar4 + 0xc + lVar7));
      lVar8 = lVar8 + -1;
      uVar11 = *(undefined4 *)(lVar4 + 0x20 + lVar7);
      uVar12 = *(undefined4 *)(lVar4 + 0x24 + lVar7);
      uVar10 = *(undefined4 *)(lVar4 + 0x28 + lVar7);
      uVar9 = *(undefined4 *)(lVar4 + 0x2c + lVar7);
      lVar7 = lVar7 + -0x30;
    } while (-1 < lVar8);
  }
  if (param_3 == '\0') {
    FUN_18129ddd0(param_1,uVar10);
  }
  else {
    FUN_1812989f0(param_1,param_6,param_5,param_4,uVar11,uVar12,uVar10,uVar9,
                  puVar3[(longlong)iVar6 * 0xc + 8],puVar3[(longlong)iVar6 * 0xc + 9],
                  puVar3[(longlong)iVar6 * 0xc + 10],puVar3[(longlong)iVar6 * 0xc + 0xb],
                  puVar3[(longlong)iVar6 * 0xc + 2],puVar3[(longlong)iVar6 * 0xc + 3]);
  }
  iVar6 = *(int *)((longlong)param_1 + 0xc);
  if ((iVar6 != 0) &&
     ((iVar6 < 1 || (*(float *)(*param_1 + (longlong)(iVar6 + -1) * 4) != DAT_1824c460c)))) {
    if ((int)param_1[1] < iVar6 + 1) {
      FUN_1804af790(param_1,iVar6 + 9 + (iVar6 + 1) / 2 & 0xfffffff8);
    }
    iVar6 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
    *(undefined4 *)(*param_1 + (longlong)iVar6 * 4) = 0x47c35280;
  }
  return;
}



############ FUN_ 1804fea80 size=510 ############

ulonglong FUN_1804fea80(longlong param_1)

{
  undefined8 *puVar1;
  longlong lVar2;
  int local_res8;
  int iStackX_c;
  undefined8 local_98;
  undefined8 uStack_90;
  undefined1 local_88 [16];
  void *local_78;
  undefined8 local_70;
  float local_68;
  float local_64;
  float local_60;
  float local_5c;
  undefined1 local_58;
  
  lVar2 = *(longlong *)(*(ulonglong *)(param_1 + 0x18) + 0x158);
  if (lVar2 == 0) {
    return *(ulonglong *)(param_1 + 0x18) & 0xffffffffffffff00;
  }
  uStack_90 = *(undefined8 *)(lVar2 + 0x28);
  local_98 = 0;
  for (; lVar2 != 0; lVar2 = *(longlong *)(lVar2 + 0x18)) {
    puVar1 = (undefined8 *)FUN_18051e4b0(local_88,lVar2,&local_98);
    local_98 = *puVar1;
    uStack_90 = puVar1[1];
  }
  local_res8 = (int)*(undefined8 *)(param_1 + 0x28);
  if (*(int *)(*(longlong *)(param_1 + 0x18) + 0x20) < (int)local_98) {
    local_res8 = local_res8 + -2;
  }
  else {
    local_res8 = local_res8 + 2;
  }
  iStackX_c = (int)((ulonglong)*(undefined8 *)(param_1 + 0x28) >> 0x20);
  local_68 = (float)local_res8;
  local_78 = (void *)0x0;
  local_70 = 0;
  local_58 = 1;
  local_60 = (float)iStackX_c;
  local_64 = local_68;
  local_5c = local_60;
  FUN_1804b02a0(&local_78,&DAT_1821df344);
  FUN_18129ddd0(&local_78);
  FUN_18129ddd0(&local_78);
  if ((local_70._4_4_ != 0) &&
     ((local_70._4_4_ < 1 ||
      (*(float *)((longlong)local_78 + (longlong)(local_70._4_4_ + -1) * 4) != DAT_1824c460c)))) {
    if ((int)local_70 < local_70._4_4_ + 1) {
      FUN_1804af790(&local_78,local_70._4_4_ + 9 + (local_70._4_4_ + 1) / 2 & 0xfffffff8);
    }
    lVar2 = (longlong)local_70._4_4_;
    local_70 = CONCAT44(local_70._4_4_ + 1,(int)local_70);
    *(undefined4 *)((longlong)local_78 + lVar2 * 4) = 0x47c35280;
  }
  FUN_18129b1f0(&local_78);
  local_70 = local_70 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_78);
}



############ FUN_ 18058a4c0 size=1310 ############

void FUN_18058a4c0(longlong param_1)

{
  float fVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong *plVar4;
  void *_Memory;
  double dVar5;
  double dVar6;
  double dVar7;
  float fVar8;
  char cVar9;
  int iVar10;
  int iVar11;
  undefined8 *puVar12;
  undefined8 uVar13;
  char *pcVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  undefined8 *puVar18;
  float *pfVar19;
  float fVar20;
  undefined4 uVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  int local_res8 [2];
  int local_res10 [2];
  void *local_158;
  undefined4 local_14c;
  undefined8 local_130;
  undefined8 local_128;
  undefined8 local_120;
  undefined8 local_118;
  undefined1 local_110;
  
  iVar16 = 0;
  iVar10 = 0;
  if (0 < *(int *)(param_1 + 0x9878)) {
    pcVar14 = (char *)(param_1 + 0x9a02);
    puVar18 = (undefined8 *)(param_1 + 0x9c8);
    iVar15 = iVar16;
    do {
      if (*pcVar14 != '\0') {
        plVar4 = *(longlong **)(param_1 + 0x140);
        local_res10[0] = iVar15;
        if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        if ((undefined **)*plVar4 ==
            std::
            _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>
            ::vftable) {
          plVar4 = (longlong *)plVar4[8];
          local_res8[0] = iVar15;
          if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
            std::_Xbad_function_call();
          }
          uVar13 = (**(code **)(*plVar4 + 0x10))(plVar4,local_res8);
          *puVar18 = uVar13;
        }
        else {
          uVar13 = (*(code *)((undefined **)*plVar4)[2])(plVar4,local_res10);
          *puVar18 = uVar13;
        }
      }
      iVar15 = iVar15 + 1;
      puVar18 = puVar18 + 1;
      pcVar14 = pcVar14 + 1;
    } while (iVar15 < *(int *)(param_1 + 0x9878));
  }
  dVar6 = DAT_1824c4140;
  uVar3 = DAT_1824c3ea4;
  uVar21 = SUB84(DAT_1824c4140,0);
  if (0 < *(int *)(param_1 + 0x9878)) {
    puVar18 = (undefined8 *)(param_1 + 0x9c8);
    do {
      plVar4 = *(longlong **)(param_1 + 0x180);
      if (iVar16 == 0) {
        local_res8[0] = 0;
        if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        cVar9 = (**(code **)(*plVar4 + 0x10))(plVar4,local_res8);
        uVar2 = *(undefined4 *)(param_1 + 0x9890);
        if (cVar9 == '\0') {
          uVar13 = *(undefined8 *)(param_1 + 0x9c8);
          iVar10 = __std_type_info_compare(0x182650db8,0x182650db8);
          if (iVar10 == 0) {
                    /* WARNING: Subroutine does not return */
            thunk_FUN_181ba94b0();
          }
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0(uVar13,param_1 + 0x1c8,uVar2);
        }
        iVar10 = __std_type_info_compare(0x182650db8,0x182650db8);
        if (iVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0(uVar3);
        }
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0(uVar21,param_1 + 0x1c8,uVar2);
      }
      local_res8[0] = iVar16;
      if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      cVar9 = (**(code **)(*plVar4 + 0x10))(plVar4,local_res8);
      if (cVar9 == '\0') {
        uVar3 = *(undefined4 *)(param_1 + 0x9890);
        uVar13 = *puVar18;
        iVar10 = __std_type_info_compare(0x182650db8,0x182650db8);
        if (iVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          thunk_FUN_181ba94b0();
        }
                    /* WARNING: Subroutine does not return */
        thunk_FUN_181ba94b0(uVar13,param_1 + 0x1c8,uVar3);
      }
      iVar16 = iVar16 + 1;
      puVar18 = puVar18 + 1;
    } while (iVar16 < *(int *)(param_1 + 0x9878));
  }
  *(undefined4 *)(param_1 + 0x9a10) = *(undefined4 *)(param_1 + 0x99dc);
  *(undefined4 *)(param_1 + 0x9a0c) = 0;
  iVar16 = *(int *)(param_1 + 0x28);
  iVar17 = *(int *)(param_1 + 0x9894) + -1;
  iVar15 = *(int *)(param_1 + 0x9890);
  fVar24 = (float)*(int *)(param_1 + 0x2c);
  fVar1 = *(float *)(param_1 + 0x9b10);
  fVar25 = *(float *)(param_1 + 0x9b14) - fVar1;
  dVar5 = log10((double)*(float *)(param_1 + 0x1c8));
  dVar7 = DAT_1824c42b0;
  iVar11 = (int)((((float)(dVar5 * DAT_1824c42b0) - fVar1) * ((float)iVar17 - 0.0)) / fVar25 + 0.0);
  if ((-1 < iVar11) && (iVar10 = iVar11, iVar17 < iVar11)) {
    iVar10 = iVar17;
  }
  local_130 = 0;
  local_128 = 0;
  local_110 = 1;
  local_120 = 0;
  fVar20 = fVar24 - fVar24 * *(float *)(param_1 + 0x19f8 + (longlong)iVar10 * 4);
  local_118 = CONCAT44(fVar20,fVar20);
  FUN_1804b02a0(&local_130,&DAT_1821df344,0);
  fVar8 = DAT_1824c46a8;
  fVar20 = DAT_1824c3ee0;
  iVar10 = 1;
  fVar23 = 0.0;
  if (1 < *(int *)(param_1 + 0x9890)) {
    pfVar19 = (float *)(param_1 + 0x1cc);
    do {
      fVar23 = fVar23 + (float)((double)iVar16 * (dVar6 / (double)iVar15));
      iVar17 = *(int *)(param_1 + 0x9894) + -1;
      dVar5 = log10((double)*pfVar19);
      iVar11 = (int)((((float)(dVar5 * dVar7) - fVar1) * ((float)iVar17 - 0.0)) / fVar25 + 0.0);
      if (iVar11 < 0) {
        iVar11 = 0;
      }
      else if (iVar17 < iVar11) {
        iVar11 = iVar17;
      }
      fVar22 = fVar24 - fVar24 * *(float *)(param_1 + 0x19f8 + (longlong)iVar11 * 4);
      if (fVar22 == 0.0) {
        fVar22 = *(float *)(param_1 + 0x99f4) * fVar8;
      }
      else if (fVar22 == fVar24) {
        fVar22 = fVar24 * fVar20;
      }
      if (local_128._4_4_ == 0) {
        local_120 = 0;
        local_118 = 0;
        FUN_1804b02a0(&local_130,&DAT_1821df344,0,0);
      }
      FUN_1804b02a0(&local_130,&DAT_1821dfcb4,fVar23,fVar22);
      if ((float)local_120 <= fVar23) {
        if (local_120._4_4_ < fVar23) {
          local_120 = CONCAT44(fVar23,(float)local_120);
        }
      }
      else {
        local_120 = CONCAT44(local_120._4_4_,fVar23);
      }
      if ((float)local_118 <= fVar22) {
        if (local_118._4_4_ < fVar22) {
          local_118 = CONCAT44(fVar22,(float)local_118);
        }
      }
      else {
        local_118 = CONCAT44(local_118._4_4_,fVar22);
      }
      iVar10 = iVar10 + 1;
      pfVar19 = pfVar19 + 1;
    } while (iVar10 < *(int *)(param_1 + 0x9890));
  }
  puVar12 = (undefined8 *)FUN_18129a910(&local_130,&local_158,*(undefined4 *)(param_1 + 0x99f8));
  puVar18 = (undefined8 *)(param_1 + 0x98a8);
  if (puVar18 != puVar12) {
    uVar13 = *puVar12;
    *puVar12 = 0;
    uVar3 = *(undefined4 *)(puVar12 + 1);
    uVar21 = *(undefined4 *)((longlong)puVar12 + 0xc);
    puVar12[1] = 0;
    _Memory = (void *)*puVar18;
    *puVar18 = uVar13;
    *(undefined4 *)(param_1 + 0x98b0) = uVar3;
    *(undefined4 *)(param_1 + 0x98b4) = uVar21;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  uVar13 = puVar12[3];
  *(undefined8 *)(param_1 + 0x98b8) = puVar12[2];
  *(undefined8 *)(param_1 + 0x98c0) = uVar13;
  *(undefined1 *)(param_1 + 0x98c8) = *(undefined1 *)(puVar12 + 4);
  local_14c = 0;
                    /* WARNING: Subroutine does not return */
  free(local_158);
}



############ FUN_ 18129bd50 size=706 ############

void FUN_18129bd50(longlong *param_1,undefined8 *param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  float *pfVar11;
  float *pfVar12;
  float *pfVar13;
  float *pfVar14;
  float *pfVar15;
  float *pfVar16;
  float *pfVar17;
  float *pfVar18;
  float *pfVar19;
  float *pfVar20;
  float *pfVar21;
  float *pfVar22;
  
  fVar7 = DAT_1824c460c;
  fVar6 = DAT_1824c4608;
  fVar5 = DAT_1824c4604;
  fVar4 = DAT_1824c4600;
  fVar3 = DAT_1824c45fc;
  pfVar13 = (float *)*param_2;
  iVar9 = 0;
  if (0 < *(int *)((longlong)param_2 + 0xc)) {
    pfVar11 = pfVar13 + 1;
    pfVar15 = pfVar13 + 4;
    pfVar17 = pfVar13 + 5;
    pfVar19 = pfVar13 + 2;
    pfVar21 = pfVar13 + 3;
    do {
      fVar1 = *pfVar13;
      iVar10 = iVar9 + 1;
      pfVar14 = pfVar13 + 1;
      pfVar18 = pfVar17 + 1;
      pfVar16 = pfVar15 + 1;
      pfVar22 = pfVar21 + 1;
      pfVar20 = pfVar19 + 1;
      pfVar12 = pfVar11 + 1;
      if (fVar1 == fVar4) {
        fVar1 = *pfVar12;
        fVar2 = *pfVar14;
        if (*(int *)((longlong)param_1 + 0xc) == 0) {
          *(float *)((longlong)param_1 + 0x14) = fVar2;
          *(float *)(param_1 + 2) = fVar2;
          *(float *)(param_1 + 3) = fVar1;
LAB_18129be60:
          *(float *)((longlong)param_1 + 0x1c) = fVar1;
        }
        else {
          if (*(float *)(param_1 + 2) <= fVar2) {
            if (*(float *)((longlong)param_1 + 0x14) <= fVar2 &&
                fVar2 != *(float *)((longlong)param_1 + 0x14)) {
              *(float *)((longlong)param_1 + 0x14) = fVar2;
            }
          }
          else {
            *(float *)(param_1 + 2) = fVar2;
          }
          if (*(float *)(param_1 + 3) <= fVar1) {
            if (*(float *)((longlong)param_1 + 0x1c) <= fVar1 &&
                fVar1 != *(float *)((longlong)param_1 + 0x1c)) goto LAB_18129be60;
          }
          else {
            *(float *)(param_1 + 3) = fVar1;
          }
        }
        FUN_1804b02a0(param_1,&DAT_1821df344);
LAB_18129be74:
        pfVar18 = pfVar17 + 3;
        pfVar16 = pfVar15 + 3;
        pfVar22 = pfVar21 + 3;
        pfVar20 = pfVar19 + 3;
        pfVar12 = pfVar11 + 3;
        pfVar14 = pfVar13 + 3;
        iVar9 = iVar9 + 3;
      }
      else {
        if (fVar1 == fVar3) {
          FUN_18129ddd0(param_1,*pfVar14,*pfVar12);
          goto LAB_18129be74;
        }
        if (fVar1 == fVar5) {
          FUN_18129dca0(param_1,*pfVar14,*pfVar12,*pfVar20,*pfVar22);
          pfVar18 = pfVar17 + 5;
          pfVar16 = pfVar15 + 5;
          pfVar22 = pfVar21 + 5;
          pfVar20 = pfVar19 + 5;
          pfVar12 = pfVar11 + 5;
          pfVar14 = pfVar13 + 5;
          iVar9 = iVar9 + 5;
        }
        else if (fVar1 == fVar6) {
          FUN_18129daf0(param_1,*pfVar14,*pfVar12,*pfVar20,*pfVar22,*pfVar16,*pfVar18);
          pfVar18 = pfVar17 + 7;
          pfVar16 = pfVar15 + 7;
          pfVar22 = pfVar21 + 7;
          pfVar20 = pfVar19 + 7;
          pfVar12 = pfVar11 + 7;
          pfVar14 = pfVar13 + 7;
          iVar9 = iVar9 + 7;
        }
        else {
          iVar9 = iVar10;
          if (((fVar1 == fVar7) && (iVar10 = *(int *)((longlong)param_1 + 0xc), iVar10 != 0)) &&
             ((iVar10 < 1 || (*(float *)(*param_1 + (longlong)(iVar10 + -1) * 4) != fVar7)))) {
            iVar8 = iVar10 + 1;
            if ((int)param_1[1] < iVar8) {
              if (iVar8 < 0) {
                iVar8 = iVar10 + 2;
              }
              FUN_1804af790(param_1,iVar10 + 9 + (iVar8 >> 1) & 0xfffffff8);
            }
            iVar10 = *(int *)((longlong)param_1 + 0xc);
            *(int *)((longlong)param_1 + 0xc) = iVar10 + 1;
            *(undefined4 *)(*param_1 + (longlong)iVar10 * 4) = 0x47c35280;
          }
        }
      }
      pfVar11 = pfVar12;
      pfVar13 = pfVar14;
      pfVar15 = pfVar16;
      pfVar17 = pfVar18;
      pfVar19 = pfVar20;
      pfVar21 = pfVar22;
    } while (iVar9 < *(int *)((longlong)param_2 + 0xc));
  }
  return;
}



############ FUN_ 181304950 size=1610 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181304950(longlong param_1,undefined8 param_2,undefined8 param_3,float param_4,
                  uint *param_5,float param_6,int param_7)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined1 auVar3 [12];
  undefined1 auVar4 [12];
  uint uVar5;
  undefined3 uVar6;
  char cVar7;
  int iVar8;
  float *pfVar9;
  int iVar10;
  byte bVar11;
  char cVar12;
  char cVar13;
  undefined8 extraout_XMM0_Qb;
  undefined1 auVar14 [16];
  undefined1 auVar15 [16];
  double dVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  undefined4 local_res20;
  undefined8 local_128;
  undefined8 uStack_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined8 uStack_108;
  undefined4 local_100;
  float local_fc;
  undefined4 local_f8;
  float local_f4;
  undefined1 local_f0;
  void *local_e8;
  undefined8 local_e0;
  float *local_d8;
  int local_d0;
  int iStack_cc;
  float local_c8;
  float local_c4;
  float local_c0;
  float local_bc;
  undefined1 local_b8;
  undefined8 local_b0;
  
  fVar17 = (float)param_3;
  local_b0 = 0xfffffffffffffffe;
  if (param_4 <= param_6) {
    return;
  }
  local_d8 = (float *)0x0;
  local_d0 = 0;
  iStack_cc = 0;
  local_b8 = 1;
  fVar21 = param_4 * DAT_1824c3d8c;
  fVar20 = fVar21 + (float)param_2;
  local_c8 = fVar20;
  local_c4 = fVar20;
  local_c0 = fVar17;
  local_bc = fVar17;
  FUN_1804b02a0(&local_d8,&DAT_1821df344,fVar20,param_3);
  fVar19 = param_4 * DAT_1824c3db8 + fVar17;
  fVar18 = (float)param_2 + param_4;
  FUN_18129ddd0(&local_d8,fVar18,fVar19);
  param_4 = fVar17 + param_4;
  FUN_18129ddd0(&local_d8,fVar18,param_4);
  FUN_18129ddd0(&local_d8,param_2,param_4);
  FUN_18129ddd0(&local_d8,param_2,fVar19);
  if ((iStack_cc != 0) && ((iStack_cc < 1 || (local_d8[iStack_cc + -1] != DAT_1824c460c)))) {
    if (local_d0 < iStack_cc + 1) {
      FUN_1804af790(&local_d8,iStack_cc + 9 + (iStack_cc + 1) / 2 & 0xfffffff8);
    }
    iStack_cc = 1;
    *local_d8 = 100005.0;
  }
  fVar21 = fVar21 + fVar17;
  fVar19 = (float)param_7 * DAT_1824c3fa0;
  fVar18 = cosf(fVar19);
  uStack_120._4_4_ = sinf(fVar19);
  local_128._4_4_ = (uint)uStack_120._4_4_ ^ DAT_1824c4f30;
  uStack_120._0_4_ = (uStack_120._4_4_ * fVar21 - fVar18 * fVar20) + fVar20;
  local_118 = CONCAT44(fVar21 - (uStack_120._4_4_ * fVar20 + fVar18 * fVar21),fVar18);
  local_128._0_4_ = fVar18;
  FUN_18129b680(&local_d8,&local_128);
  uVar2 = *param_5;
  dVar16 = (double)((float)(uVar2 >> 0x18) * DAT_1824c3d54) + DAT_1824c4520;
  bVar11 = 0xff;
  if (SUB84(dVar16,0) < 0xff) {
    bVar11 = SUB81(dVar16,0);
  }
  local_res20._0_3_ = (undefined3)uVar2;
  uVar6 = (undefined3)local_res20;
  local_res20 = CONCAT13(bVar11,(undefined3)local_res20);
  uStack_120._0_4_ = (float)local_res20;
  uVar5 = DAT_18262b5a8 >> 0x18;
  local_res20._0_1_ = (char)uVar2;
  cVar7 = (char)local_res20;
  cVar13 = (char)(uVar2 >> 8);
  cVar12 = (char)(uVar2 >> 0x10);
  if (uVar5 != 0) {
    iVar10 = 0xff - ((int)((0xff - uVar5) * (0xff - (uint)bVar11)) >> 8);
    uStack_120._0_4_ = (float)DAT_18262b5a8;
    if (0 < iVar10) {
      iVar8 = (int)((0xff - (uint)bVar11) * uVar5) / iVar10;
      local_res20._0_2_ =
           CONCAT11((char)(((DAT_18262b5a8 >> 8 & 0xff) - ((uVar2 & 0xff00) >> 8)) * iVar8 >> 8) +
                    cVar13,(char)(((DAT_18262b5a8 & 0xff) - (uVar2 & 0xff)) * iVar8 >> 8) +
                           (char)local_res20);
      local_res20._0_3_ =
           CONCAT12((char)(((DAT_18262b5a8 >> 0x10 & 0xff) - ((uVar2 & 0xff0000) >> 0x10)) * iVar8
                          >> 8) + cVar12,(undefined2)local_res20);
      local_res20 = CONCAT13((char)iVar10,(undefined3)local_res20);
      uStack_120._0_4_ = (float)local_res20;
    }
  }
  local_110 = (double)((float)(uVar2 >> 0x18) * DAT_1824c3d54) + DAT_1824c4520;
  bVar11 = 0xff;
  if (SUB84(local_110,0) < 0xff) {
    bVar11 = SUB81(local_110,0);
  }
  local_res20 = CONCAT13(bVar11,uVar6);
  uStack_108._0_4_ = local_res20;
  if (uVar5 != 0) {
    iVar10 = 0xff - ((int)((0xff - uVar5) * (0xff - (uint)bVar11)) >> 8);
    uStack_108._0_4_ = DAT_18262b5a8;
    if (0 < iVar10) {
      iVar8 = (int)((0xff - (uint)bVar11) * uVar5) / iVar10;
      local_res20._0_2_ =
           CONCAT11((char)(((DAT_18262b5a8 >> 8 & 0xff) - ((uVar2 & 0xff00) >> 8)) * iVar8 >> 8) +
                    cVar13,(char)(((DAT_18262b5a8 & 0xff) - (uVar2 & 0xff)) * iVar8 >> 8) + cVar7);
      local_res20._0_3_ =
           CONCAT12((char)(((DAT_18262b5a8 >> 0x10 & 0xff) - ((uVar2 & 0xff0000) >> 0x10)) * iVar8
                          >> 8) + cVar12,(undefined2)local_res20);
      local_res20 = CONCAT13((char)iVar10,(undefined3)local_res20);
      uStack_108._0_4_ = local_res20;
    }
  }
  local_100 = 0;
  local_f8 = 0;
  local_f0 = 0;
  local_e8 = (void *)0x0;
  local_e0 = 0;
  local_fc = fVar17;
  local_f4 = param_4;
  FUN_18049ba20(&local_e8,8);
  iVar10 = local_e0._4_4_ + 1;
  auVar3._4_8_ = extraout_XMM0_Qb;
  auVar3._0_4_ = local_110._4_4_;
  auVar14._0_8_ = auVar3._0_8_ << 0x20;
  auVar14._8_4_ = (uint)uStack_108;
  auVar14._12_4_ = uStack_108._4_4_;
  uStack_108 = auVar14._8_8_;
  local_110 = 0.0;
  puVar1 = (undefined8 *)((longlong)local_e8 + (longlong)local_e0._4_4_ * 0x10);
  *puVar1 = 0;
  puVar1[1] = uStack_108;
  local_e0 = CONCAT44(local_e0._4_4_ + 2,(undefined4)local_e0);
  auVar4._4_8_ = uStack_108;
  auVar4._0_4_ = local_128._4_4_;
  auVar15._0_8_ = auVar4._0_8_ << 0x20;
  auVar15._8_4_ = (float)uStack_120;
  auVar15._12_4_ = uStack_120._4_4_;
  uStack_120 = auVar15._8_8_;
  local_128 = DAT_1824c4140;
  puVar1 = (undefined8 *)((longlong)local_e8 + (longlong)iVar10 * 0x10);
  *puVar1 = DAT_1824c4140;
  puVar1[1] = uStack_120;
  uVar2 = *param_5;
  uVar5 = DAT_18262b5a8 >> 0x18;
  local_res20 = uVar2;
  if (uVar5 != 0) {
    iVar10 = 0xff - (uVar2 >> 0x18);
    iVar8 = 0xff - ((int)((0xff - uVar5) * iVar10) >> 8);
    local_res20 = DAT_18262b5a8;
    if (0 < iVar8) {
      iVar10 = (int)(iVar10 * uVar5) / iVar8;
      local_res20._0_2_ =
           CONCAT11((char)(((DAT_18262b5a8 >> 8 & 0xff) - (uVar2 >> 8 & 0xff)) * iVar10 >> 8) +
                    (char)(uVar2 >> 8),
                    (char)(((DAT_18262b5a8 & 0xff) - (uVar2 & 0xff)) * iVar10 >> 8) + (char)uVar2);
      local_res20._0_3_ =
           CONCAT12((char)(((DAT_18262b5a8 >> 0x10 & 0xff) - (uVar2 >> 0x10 & 0xff)) * iVar10 >> 8)
                    + (char)(uVar2 >> 0x10),(undefined2)local_res20);
      local_res20 = CONCAT13((char)iVar8,(undefined3)local_res20);
    }
  }
  FUN_1812a1940(&local_100,DAT_1824c4008,local_res20);
  FUN_181296a90(param_1,&local_100);
  cVar7 = (**(code **)(**(longlong **)(param_1 + 8) + 0x60))();
  if (cVar7 == '\0') {
    pfVar9 = local_d8;
    while (pfVar9 != local_d8 + iStack_cc) {
      fVar17 = *pfVar9;
      if (fVar17 == DAT_1824c4600) {
        pfVar9 = pfVar9 + 3;
      }
      else {
        if (((fVar17 == DAT_1824c45fc) || (fVar17 == DAT_1824c4604)) || (fVar17 == DAT_1824c4608)) {
          local_128 = _DAT_1824c4780;
          uStack_120 = _UNK_1824c4788;
          local_118 = 0x3f800000;
          (**(code **)(**(longlong **)(param_1 + 8) + 0xb8))
                    (*(longlong **)(param_1 + 8),&local_d8,&local_128);
          break;
        }
        pfVar9 = pfVar9 + 1;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  free(local_e8);
}



############ FUN_ 18129deb0 size=113 ############

void FUN_18129deb0(float param_1,float param_2,float param_3)

{
  longlong in_RCX;
  
  if (*(int *)(in_RCX + 0xc) == 0) {
    *(float *)(in_RCX + 0x14) = param_2;
    *(float *)(in_RCX + 0x10) = param_2;
    *(float *)(in_RCX + 0x18) = param_3;
  }
  else {
    if (*(float *)(in_RCX + 0x10) <= param_2) {
      if (*(float *)(in_RCX + 0x14) <= param_2 && param_2 != *(float *)(in_RCX + 0x14)) {
        *(float *)(in_RCX + 0x14) = param_2;
      }
    }
    else {
      *(float *)(in_RCX + 0x10) = param_2;
    }
    param_1 = *(float *)(in_RCX + 0x18);
    if (param_3 < param_1) {
      *(float *)(in_RCX + 0x18) = param_3;
      FUN_1804b02a0(param_1,&DAT_1821df344,param_2,param_3);
      return;
    }
    if (param_3 < *(float *)(in_RCX + 0x1c) || param_3 == *(float *)(in_RCX + 0x1c))
    goto LAB_18129df0f;
  }
  *(float *)(in_RCX + 0x1c) = param_3;
LAB_18129df0f:
  FUN_1804b02a0(param_1,&DAT_1821df344,param_2,param_3);
  return;
}



############ FUN_ 18129ba20 size=807 ############

void FUN_18129ba20(longlong *param_1,longlong *param_2,float *param_3)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  longlong lVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  float fVar14;
  float fVar15;
  
  lVar10 = *param_2;
  iVar12 = 0;
  if (0 < *(int *)((longlong)param_2 + 0xc)) {
    do {
      iVar13 = iVar12 + 1;
      fVar1 = *(float *)(lVar10 + (longlong)iVar12 * 4);
      if (fVar1 == DAT_1824c460c) {
        iVar12 = *(int *)((longlong)param_1 + 0xc);
        if ((iVar12 != 0) &&
           ((iVar12 < 1 || (*(float *)(*param_1 + (longlong)(iVar12 + -1) * 4) != DAT_1824c460c))))
        {
          iVar11 = iVar12 + 1;
          if ((int)param_1[1] < iVar11) {
            if (iVar11 < 0) {
              iVar11 = iVar12 + 2;
            }
            FUN_1804af790(param_1,iVar12 + 9 + (iVar11 >> 1) & 0xfffffff8);
          }
          iVar12 = *(int *)((longlong)param_1 + 0xc);
          *(int *)((longlong)param_1 + 0xc) = iVar12 + 1;
          *(undefined4 *)(*param_1 + (longlong)iVar12 * 4) = 0x47c35280;
        }
      }
      else {
        fVar2 = param_3[1];
        fVar3 = *param_3;
        fVar4 = param_3[3];
        fVar5 = param_3[4];
        fVar6 = param_3[2];
        fVar7 = param_3[5];
        fVar15 = *(float *)(lVar10 + (longlong)iVar13 * 4);
        iVar13 = iVar12 + 3;
        fVar14 = fVar3 * fVar15 + fVar2 * *(float *)(lVar10 + (longlong)(iVar12 + 2) * 4) + fVar6;
        fVar15 = fVar4 * fVar15 + fVar5 * *(float *)(lVar10 + (longlong)(iVar12 + 2) * 4) + fVar7;
        if (fVar1 == DAT_1824c4600) {
          FUN_18129deb0(param_1,fVar14,fVar15);
        }
        else if (fVar1 == DAT_1824c45fc) {
          FUN_18129ddd0(param_1,fVar14,fVar15);
        }
        else if (fVar1 == DAT_1824c4604) {
          fVar1 = *(float *)(lVar10 + (longlong)iVar13 * 4);
          FUN_18129dca0(param_1,fVar14,fVar15,
                        fVar3 * fVar1 + fVar2 * *(float *)(lVar10 + (longlong)(iVar12 + 4) * 4) +
                        fVar6,fVar5 * *(float *)(lVar10 + (longlong)(iVar12 + 4) * 4) +
                              fVar4 * fVar1 + fVar7);
          iVar13 = iVar12 + 5;
        }
        else if (fVar1 == DAT_1824c4608) {
          fVar1 = *(float *)(lVar10 + (longlong)iVar13 * 4);
          fVar8 = *(float *)(lVar10 + (longlong)(iVar12 + 4) * 4);
          fVar9 = *(float *)(lVar10 + (longlong)(iVar12 + 5) * 4);
          FUN_18129daf0(param_1,fVar14,fVar15,fVar3 * fVar1 + fVar2 * fVar8 + fVar6,
                        fVar5 * fVar8 + fVar4 * fVar1 + fVar7,
                        fVar3 * fVar9 + fVar2 * *(float *)(lVar10 + (longlong)(iVar12 + 6) * 4) +
                        fVar6,fVar5 * *(float *)(lVar10 + (longlong)(iVar12 + 6) * 4) +
                              fVar4 * fVar9 + fVar7);
          iVar13 = iVar12 + 7;
        }
      }
      iVar12 = iVar13;
    } while (iVar12 < *(int *)((longlong)param_2 + 0xc));
  }
  return;
}



############ FUN_ 1804a5030 size=75 ############

void FUN_1804a5030(longlong param_1,undefined4 *param_2,uint param_3)

{
  ulonglong uVar1;
  
  if (param_3 != 0) {
    uVar1 = (ulonglong)param_3;
    do {
      FUN_18129ddd0(param_1 + 0x10,*param_2,param_2[1]);
      param_2 = param_2 + 2;
      uVar1 = uVar1 - 1;
    } while (uVar1 != 0);
  }
  return;
}



############ FUN_ 18129c940 size=530 ############

void FUN_18129c940(undefined8 param_1,undefined8 *param_2,float param_3)

{
  undefined8 uVar1;
  float fVar2;
  undefined4 *puVar3;
  double dVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined1 local_res10 [24];
  
  uVar1 = *param_2;
  fVar5 = *(float *)(param_2 + 1);
  fVar7 = *(float *)((longlong)param_2 + 0xc);
  param_3 = param_3 * DAT_1824c3d8c;
  puVar3 = (undefined4 *)FUN_1804ab660(param_2,local_res10,0,param_3);
  FUN_18129deb0(param_1,*puVar3,puVar3[1]);
  fVar10 = (float)((uint)param_3 ^ DAT_1824c4f30);
  puVar3 = (undefined4 *)FUN_1804ab660(param_2,local_res10,0,fVar10);
  FUN_18129ddd0(param_1,*puVar3,puVar3[1]);
  fVar8 = (float)uVar1 - fVar5;
  fVar9 = (float)((ulonglong)uVar1 >> 0x20) - fVar7;
  dVar4 = _hypot((double)fVar8,(double)fVar9);
  fVar6 = fVar7;
  fVar2 = fVar5;
  if (0.0 < dVar4) {
    fVar6 = (float)((double)(fVar8 * param_3 + fVar9 * 0.0) / dVar4) + fVar7;
    fVar2 = (float)((double)(fVar8 * 0.0 - fVar9 * param_3) / dVar4) + fVar5;
  }
  FUN_18129ddd0(param_1,fVar2,fVar6);
  dVar4 = _hypot((double)fVar8,(double)fVar9);
  if (0.0 < dVar4) {
    fVar5 = (float)((double)(fVar8 * 0.0 - fVar9 * fVar10) / dVar4) + fVar5;
    fVar7 = (float)((double)(fVar8 * fVar10 + fVar9 * 0.0) / dVar4) + fVar7;
  }
  FUN_18129ddd0(param_1,fVar5,fVar7);
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 18129c5c0 size=889 ############

void FUN_18129c5c0(undefined8 param_1,float *param_2,float param_3,float param_4,float param_5)

{
  undefined8 uVar1;
  undefined4 *puVar2;
  float fVar3;
  double dVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined1 local_res10 [24];
  
  uVar1 = *(undefined8 *)param_2;
  fVar5 = param_2[2];
  fVar7 = param_2[3];
  param_4 = param_4 * DAT_1824c3d8c;
  param_3 = param_3 * DAT_1824c3d8c;
  fVar3 = _hypotf(*param_2 - fVar5,param_2[1] - fVar7);
  fVar10 = fVar3 * DAT_1824c3e28;
  if (param_5 <= fVar3 * DAT_1824c3e28) {
    fVar10 = param_5;
  }
  puVar2 = (undefined4 *)FUN_1804ab660(param_2,local_res10,0,param_3);
  FUN_18129deb0(param_1,*puVar2,puVar2[1]);
  fVar11 = (float)((uint)param_3 ^ DAT_1824c4f30);
  puVar2 = (undefined4 *)FUN_1804ab660(param_2,local_res10,0,fVar11);
  FUN_18129ddd0(param_1,*puVar2,puVar2[1]);
  fVar8 = (float)uVar1 - fVar5;
  fVar9 = (float)((ulonglong)uVar1 >> 0x20) - fVar7;
  dVar4 = _hypot((double)fVar8,(double)fVar9);
  fVar6 = fVar7;
  fVar3 = fVar5;
  if (0.0 < dVar4) {
    fVar6 = (float)((double)(fVar8 * param_3 + fVar9 * fVar10) / dVar4) + fVar7;
    fVar3 = (float)((double)(fVar8 * fVar10 - fVar9 * param_3) / dVar4) + fVar5;
  }
  FUN_18129ddd0(param_1,fVar3,fVar6);
  dVar4 = _hypot((double)fVar8,(double)fVar9);
  fVar6 = fVar7;
  fVar3 = fVar5;
  if (0.0 < dVar4) {
    fVar6 = (float)((double)(fVar8 * param_4 + fVar9 * fVar10) / dVar4) + fVar7;
    fVar3 = (float)((double)(fVar8 * fVar10 - fVar9 * param_4) / dVar4) + fVar5;
  }
  FUN_18129ddd0(param_1,fVar3,fVar6);
  FUN_18129ddd0(param_1,param_2[2],param_2[3]);
  param_4 = (float)((uint)param_4 ^ DAT_1824c4f30);
  dVar4 = _hypot((double)fVar8,(double)fVar9);
  fVar6 = fVar7;
  fVar3 = fVar5;
  if (0.0 < dVar4) {
    fVar6 = (float)((double)(fVar8 * param_4 + fVar9 * fVar10) / dVar4) + fVar7;
    fVar3 = (float)((double)(fVar8 * fVar10 - fVar9 * param_4) / dVar4) + fVar5;
  }
  FUN_18129ddd0(param_1,fVar3,fVar6);
  dVar4 = _hypot((double)fVar8,(double)fVar9);
  if (0.0 < dVar4) {
    fVar5 = (float)((double)(fVar8 * fVar10 - fVar9 * fVar11) / dVar4) + fVar5;
    fVar7 = (float)((double)(fVar8 * fVar11 + fVar9 * fVar10) / dVar4) + fVar7;
  }
  FUN_18129ddd0(param_1,fVar5,fVar7);
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 181298750 size=657 ############

void FUN_181298750(undefined8 param_1,int param_2,float param_3,float param_4,float param_5,
                  float param_6,float param_7)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  
  if (param_2 == 0) {
    FUN_18129ddd0(param_1,param_5,param_6);
  }
  else {
    fVar3 = _hypotf(param_5 - param_3,param_6 - param_4);
    fVar2 = DAT_1824c3da8;
    fVar1 = DAT_1824c3d80;
    fVar4 = param_4;
    fVar5 = param_3;
    fVar8 = param_3;
    fVar6 = param_4;
    if (fVar3 != 0.0) {
      fVar8 = (param_6 - param_4) * (param_7 / fVar3);
      fVar6 = (param_5 - param_3) * (param_7 / fVar3);
      fVar4 = param_4 - fVar6;
      fVar5 = fVar8 + param_3;
      fVar8 = fVar8 + param_5;
      fVar6 = param_6 - fVar6;
    }
    if (param_2 == 1) {
      FUN_18129ddd0(param_1,fVar5);
      FUN_18129ddd0(param_1,fVar8,fVar6);
      FUN_18129ddd0(param_1,param_5,param_6);
    }
    else {
      fVar3 = (fVar6 + fVar4) * DAT_1824c3d8c;
      fVar7 = (fVar8 + fVar5) * DAT_1824c3d8c;
      FUN_18129daf0(param_1,(fVar5 - param_3) * DAT_1824c3da8 + param_3,
                    (fVar4 - param_4) * DAT_1824c3da8 + param_4,
                    (fVar7 - fVar5) * DAT_1824c3d80 + fVar5,(fVar3 - fVar4) * DAT_1824c3d80 + fVar4,
                    fVar7,fVar3);
      FUN_18129daf0(param_1,(fVar8 - fVar7) * fVar2 + fVar7,(fVar6 - fVar3) * fVar2 + fVar3,
                    (param_5 - fVar8) * fVar1 + fVar8,(param_6 - fVar6) * fVar1 + fVar6,param_5,
                    param_6);
    }
  }
  return;
}



############ FUN_ 1812989f0 size=807 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1812989f0(undefined8 param_1,int param_2,float param_3,float param_4,float param_5,
                  float param_6,float param_7,float param_8,float param_9,float param_10,
                  float param_11,float param_12,float param_13,float param_14)

{
  char cVar1;
  float _X;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  undefined4 extraout_XMM0_Db;
  undefined4 extraout_XMM0_Db_00;
  float local_res10 [6];
  float local_a8;
  float local_a4 [39];
  
  if (((param_2 != 2) && ((param_9 != param_11 || (param_10 != param_12)))) &&
     ((param_5 != param_7 || (param_6 != param_8)))) {
    cVar1 = FUN_181298d20(param_5,param_6,param_7,param_8,param_9,param_10,param_11,param_12,
                          &local_a8,local_res10,local_a4);
    if (cVar1 != '\0') goto LAB_181298b2a;
    if (param_2 != 0) {
      _X = atan2f(param_7 - param_13,param_8 - param_14);
      fVar2 = atan2f(param_9 - param_13,param_10 - param_14);
      FUN_18129ddd0(param_1,param_7,param_8);
      fVar3 = DAT_1824c4658;
      fVar5 = DAT_1824c3cb8;
      if ((float)(double)CONCAT44((uint)((ulonglong)(double)(_X - fVar2) >> 0x20) &
                                  DAT_1824c4f10._4_4_,
                                  SUB84((double)(_X - fVar2),0) & (uint)DAT_1824c4f10) <=
          DAT_1824c3cb8) goto LAB_181298ce7;
      if (_X + DAT_1824c42e0 < fVar2) {
LAB_181298c84:
        if (_X < fVar2) {
          fVar2 = fVar2 + _DAT_1824c4700;
        }
        while (_X = _X + fVar3, fVar2 < _X) {
          fVar5 = cosf(_X);
          fVar4 = sinf(_X);
          FUN_18129ddd0(param_1,fVar4 * param_4 + param_13,
                        CONCAT44(extraout_XMM0_Db_00,fVar5 * param_4 + param_14));
        }
      }
      else {
        if (fVar2 < _X) {
          if (_X - DAT_1824c42e0 <= fVar2) goto LAB_181298c84;
          if (fVar2 < _X) {
            _X = _X + _DAT_1824c4700;
          }
        }
        while (_X = _X + fVar5, _X < fVar2) {
          fVar3 = cosf(_X);
          fVar4 = sinf(_X);
          FUN_18129ddd0(param_1,fVar4 * param_4 + param_13,
                        CONCAT44(extraout_XMM0_Db,fVar3 * param_4 + param_14));
        }
      }
LAB_181298ce7:
      FUN_18129ddd0(param_1,param_9,param_10);
      return;
    }
    if ((local_a4[0] < param_3) && (0.0 < local_a4[0])) goto LAB_181298b2a;
  }
  FUN_18129ddd0(param_1,param_7,param_8);
  local_a8 = param_9;
  local_res10[0] = param_10;
LAB_181298b2a:
  FUN_18129ddd0(param_1,local_a8,local_res10[0]);
  return;
}



############ FUN_ 18129d5a0 size=586 ############

void FUN_18129d5a0(undefined8 param_1,float param_2,float param_3,float param_4,float param_5,
                  float param_6,float param_7,char param_8,char param_9,char param_10,char param_11)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  
  fVar1 = param_3 + param_5;
  fVar2 = param_2 + param_4;
  fVar4 = param_4 * DAT_1824c3d8c;
  if (param_6 <= param_4 * DAT_1824c3d8c) {
    fVar4 = param_6;
  }
  fVar5 = param_5 * DAT_1824c3d8c;
  if (param_7 <= param_5 * DAT_1824c3d8c) {
    fVar5 = param_7;
  }
  fVar3 = fVar4 * DAT_1824c3d80;
  fVar6 = fVar5 * DAT_1824c3d80;
  if (param_8 == '\0') {
    FUN_18129deb0();
  }
  else {
    FUN_18129deb0(param_1,param_2,param_3 + fVar5);
    FUN_18129daf0(param_1,param_2,fVar6 + param_3,fVar3 + param_2,param_3,param_2 + fVar4,param_3);
  }
  if (param_9 == '\0') {
    FUN_18129ddd0(param_1,fVar2,param_3);
  }
  else {
    FUN_18129ddd0(param_1,fVar2 - fVar4,param_3);
    FUN_18129daf0(param_1,fVar2 - fVar3,param_3,fVar2,fVar6 + param_3,fVar2,param_3 + fVar5);
  }
  if (param_11 == '\0') {
    FUN_18129ddd0(param_1,fVar2,fVar1);
  }
  else {
    FUN_18129ddd0(param_1,fVar2,fVar1 - fVar5);
    FUN_18129daf0(param_1,fVar2,fVar1 - fVar6,fVar2 - fVar3,fVar1,fVar2 - fVar4,fVar1);
  }
  if (param_10 == '\0') {
    FUN_18129ddd0(param_1,param_2,fVar1);
  }
  else {
    FUN_18129ddd0(param_1,param_2 + fVar4,fVar1);
    FUN_18129daf0(param_1,fVar3 + param_2,fVar1,param_2,fVar1 - fVar6,param_2,fVar1 - fVar5);
  }
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 181298550 size=496 ############

void FUN_181298550(undefined8 param_1,ulonglong param_2,float param_3,undefined8 param_4,
                  float param_5,undefined4 param_6,undefined4 param_7,float param_8,float param_9)

{
  double dVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  undefined4 uVar5;
  float fVar6;
  float fVar7;
  
  fVar2 = (float)param_2;
  uVar5 = (undefined4)(param_2 >> 0x20);
  fVar4 = (float)param_4 - fVar2;
  fVar6 = param_5 - param_3;
  param_8 = param_9 * DAT_1824c3d8c - param_8;
  fVar7 = (float)((uint)param_8 ^ DAT_1824c4f30);
  dVar1 = _hypot((double)fVar4,(double)fVar6);
  fVar3 = param_3;
  if (0.0 < dVar1) {
    param_2 = (ulonglong)(uint)((float)((double)(fVar4 * fVar7 - fVar6 * 0.0) / dVar1) + fVar2);
    fVar3 = (float)((double)(fVar6 * fVar7 + fVar4 * 0.0) / dVar1) + param_3;
  }
  FUN_18129ddd0(param_1,param_2,fVar3);
  FUN_18129ddd0(param_1,param_6,param_7);
  param_9 = param_9 - param_8;
  dVar1 = _hypot((double)fVar4,(double)fVar6);
  if (0.0 < dVar1) {
    fVar2 = (float)((double)(param_9 * fVar4 - fVar6 * 0.0) / dVar1) + fVar2;
    uVar5 = 0;
    param_3 = (float)((double)(param_9 * fVar6 + fVar4 * 0.0) / dVar1) + param_3;
  }
  FUN_18129ddd0(param_1,CONCAT44(uVar5,fVar2),param_3);
  FUN_18129ddd0(param_1,param_4,param_5);
  return;
}



############ FUN_ 18129c020 size=1428 ############

void FUN_18129c020(undefined8 param_1,float *param_2,float *param_3,undefined8 param_4,float param_5
                  ,float param_6)

{
  float fVar1;
  float fVar2;
  float fVar3;
  undefined4 uVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float local_c0;
  float fStack_bc;
  
  fVar3 = DAT_1824c41e0;
  fVar15 = DAT_1824c3d8c;
  fVar1 = param_2[1];
  fVar7 = param_2[2];
  fVar9 = param_2[3] * DAT_1824c3d8c;
  fVar10 = fVar7 * DAT_1824c3d8c;
  fVar13 = fVar9;
  if (param_5 <= fVar9) {
    fVar13 = param_5;
  }
  fVar2 = *param_2;
  fVar16 = fVar10;
  if (param_5 <= fVar10) {
    fVar16 = param_5;
  }
  fVar5 = fVar13 * DAT_1824c41e0;
  fVar14 = fVar16 * DAT_1824c41e0;
  fVar6 = fVar2 + fVar16;
  FUN_18129deb0(fVar6,fVar6,fVar1);
  fVar8 = fVar13 + param_6;
  if (fVar9 - DAT_1824c3ea4 <= fVar13 + param_6) {
    fVar8 = fVar9 - DAT_1824c3ea4;
  }
  fStack_bc = (float)((ulonglong)param_4 >> 0x20);
  fVar9 = fVar16 + param_6;
  if (fVar10 - DAT_1824c3ea4 <= fVar16 + param_6) {
    fVar9 = fVar10 - DAT_1824c3ea4;
  }
  fVar11 = fVar1 - (float)((uint)fVar8 ^ DAT_1824c4f30);
  fVar10 = fVar2 - (float)((uint)fVar9 ^ DAT_1824c4f30);
  fVar8 = (float)((uint)fVar8 ^ DAT_1824c4f30) * fVar3 + param_2[3];
  local_c0 = (float)param_4;
  fVar7 = (float)((uint)fVar9 ^ DAT_1824c4f30) * fVar3 + fVar7;
  fVar3 = param_3[1];
  if (fVar8 <= 0.0) {
    fVar8 = 0.0;
  }
  if (fVar7 <= 0.0) {
    fVar7 = 0.0;
  }
  if ((((fVar10 <= local_c0) && (fVar3 <= fStack_bc)) && (local_c0 < fVar10 + fVar7)) &&
     (fStack_bc < fVar3 + (fVar1 - fVar3))) {
    FUN_18129ddd0(param_1,local_c0 - param_6,fVar1);
    FUN_18129ddd0(param_1,local_c0,fStack_bc);
    FUN_18129ddd0(param_1,local_c0 + param_6,fVar1);
  }
  fVar9 = fVar2 + param_2[2];
  FUN_18129ddd0(param_1,fVar9 - fVar16,fVar1);
  fVar15 = fVar14 * fVar15;
  fVar16 = fVar5 * DAT_1824c3d8c;
  if (0.0 < fVar15) {
    FUN_18129cdf0(param_1,(fVar9 - fVar14) + fVar15,fVar16 + fVar1,fVar15,fVar16,0,0,DAT_1824c3fa0,0
                 );
  }
  fVar1 = *param_3;
  if (((fVar9 <= local_c0) && (fVar11 <= fStack_bc)) &&
     ((local_c0 < fVar9 + ((fVar1 + param_3[2]) - fVar9) && (fStack_bc < fVar11 + fVar8)))) {
    FUN_18129ddd0(param_1,fVar9,fStack_bc - param_6);
    FUN_18129ddd0(param_1,local_c0,fStack_bc);
    FUN_18129ddd0(param_1,fVar9,fStack_bc + param_6);
  }
  fVar12 = param_2[1] + param_2[3];
  FUN_18129ddd0(param_1,fVar9,fVar12 - fVar13);
  if (0.0 < fVar15) {
    FUN_18129cdf0(param_1,(fVar9 - fVar14) + fVar15,(fVar12 - fVar5) + fVar16,fVar15,fVar16,0,
                  DAT_1824c3fa0,DAT_1824c42e0,0);
  }
  if (((fVar10 <= local_c0) && (fVar12 <= fStack_bc)) &&
     ((local_c0 < fVar10 + fVar7 && (fStack_bc < fVar12 + ((fVar3 + param_3[3]) - fVar12))))) {
    FUN_18129ddd0(param_1,local_c0 + param_6,fVar12);
    FUN_18129ddd0(param_1,local_c0,fStack_bc);
    FUN_18129ddd0(param_1,local_c0 - param_6,fVar12);
  }
  FUN_18129ddd0(param_1,fVar6,fVar12);
  uVar4 = DAT_1824c435c;
  if (0.0 < fVar15) {
    FUN_18129cdf0(param_1,fVar15 + fVar2,(fVar12 - fVar5) + fVar16,fVar15,fVar16,0,DAT_1824c42e0,
                  DAT_1824c435c,0);
  }
  if ((((fVar1 <= local_c0) && (fVar11 <= fStack_bc)) && (local_c0 < fVar1 + (fVar2 - fVar1))) &&
     (fStack_bc < fVar11 + fVar8)) {
    FUN_18129ddd0(param_1,fVar2,fStack_bc + param_6);
    FUN_18129ddd0(param_1,local_c0,fStack_bc);
    FUN_18129ddd0(param_1,fVar2,fStack_bc - param_6);
  }
  fVar1 = param_2[1];
  FUN_18129ddd0(param_1,fVar2,fVar1 + fVar13);
  if (0.0 < fVar15) {
    FUN_18129cdf0(param_1,fVar15 + fVar2,fVar16 + fVar1,fVar15,fVar16,0,uVar4,DAT_1824c4398,0);
  }
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 18129cdf0 size=848 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18129cdf0(undefined8 param_1,float param_2,float param_3,float param_4,float param_5,
                  float param_6,float param_7,float param_8,char param_9)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  
  if (0.0 < param_5) {
    fVar1 = cosf(param_6);
    fVar2 = sinf(param_6);
    fVar8 = (float)((uint)fVar2 ^ DAT_1824c4f30);
    fVar7 = (fVar2 * param_3 - fVar1 * param_2) + param_2;
    fVar6 = param_3 - (fVar2 * param_2 + fVar1 * param_3);
    if (param_9 != '\0') {
      fVar3 = sinf(param_7);
      fVar4 = fVar3 * param_4 + param_2;
      fVar3 = cosf(param_7);
      fVar3 = param_3 - fVar3 * param_5;
      FUN_18129deb0(param_1,fVar3 * fVar8 + fVar4 * fVar1 + fVar7,
                    fVar3 * fVar1 + fVar4 * fVar2 + fVar6);
    }
    fVar3 = DAT_1824c3c94;
    if (param_8 <= param_7) {
      if (param_9 != '\0') {
        param_7 = param_7 - DAT_1824c3c94;
      }
      for (; param_8 < param_7; param_7 = param_7 + _DAT_1824c4654) {
        fVar3 = sinf(param_7);
        fVar4 = fVar3 * param_4 + param_2;
        fVar3 = cosf(param_7);
        fVar3 = param_3 - fVar3 * param_5;
        FUN_18129ddd0(param_1,fVar3 * fVar8 + fVar4 * fVar1 + fVar7,
                      fVar4 * fVar2 + fVar3 * fVar1 + fVar6);
      }
    }
    else {
      if (param_9 != '\0') {
        param_7 = param_7 + DAT_1824c3c94;
      }
      for (; param_7 < param_8; param_7 = param_7 + fVar3) {
        fVar4 = sinf(param_7);
        fVar5 = fVar4 * param_4 + param_2;
        fVar4 = cosf(param_7);
        fVar4 = param_3 - fVar4 * param_5;
        FUN_18129ddd0(param_1,fVar4 * fVar8 + fVar5 * fVar1 + fVar7,
                      fVar4 * fVar1 + fVar5 * fVar2 + fVar6);
      }
    }
    fVar3 = sinf(param_8);
    param_2 = fVar3 * param_4 + param_2;
    fVar3 = cosf(param_8);
    param_3 = param_3 - fVar3 * param_5;
    FUN_18129ddd0(param_1,param_3 * fVar8 + param_2 * fVar1 + fVar7,
                  param_3 * fVar1 + param_2 * fVar2 + fVar6);
  }
  return;
}



############ FUN_ 18129cb60 size=642 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18129cb60(undefined8 param_1,undefined8 param_2,float param_3,float param_4,float param_5,
                  float param_6,float param_7,float param_8)

{
  float fVar1;
  float fVar2;
  undefined4 extraout_XMM0_Db;
  undefined4 extraout_XMM0_Db_00;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  
  fVar3 = param_4 * DAT_1824c3d8c;
  fVar4 = param_5 * DAT_1824c3d8c;
  fVar5 = fVar3 + (float)param_2;
  fVar6 = fVar4 + param_3;
  fVar1 = sinf(param_6);
  fVar2 = cosf(param_6);
  FUN_18129deb0(param_1,CONCAT44(extraout_XMM0_Db,fVar1 * fVar3 + fVar5),fVar6 - fVar2 * fVar4);
  FUN_18129d150(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  if ((float)(double)CONCAT44((uint)((ulonglong)(double)(param_6 - param_7) >> 0x20) &
                              DAT_1824c4f10._4_4_,
                              SUB84((double)(param_6 - param_7),0) & (uint)DAT_1824c4f10) <=
      _DAT_1824c43a0) {
    if (param_8 <= 0.0) {
      FUN_18129ddd0(param_1,fVar5,fVar6);
    }
    else {
      FUN_18129d150(param_1,fVar5 - fVar3 * param_8,fVar6 - fVar4 * param_8,
                    fVar3 * param_8 * DAT_1824c41e0,fVar4 * param_8 * DAT_1824c41e0,param_7,param_6)
      ;
    }
  }
  else {
    FUN_18129da20();
    if (0.0 < param_8) {
      fVar3 = fVar3 * param_8;
      fVar4 = fVar4 * param_8;
      fVar1 = sinf(param_7);
      fVar2 = cosf(param_7);
      FUN_18129deb0(param_1,CONCAT44(extraout_XMM0_Db_00,fVar1 * fVar3 + fVar5),
                    fVar6 - fVar2 * fVar4);
      FUN_18129d150(param_1,fVar5 - fVar3,fVar6 - fVar4,fVar3 * DAT_1824c41e0,fVar4 * DAT_1824c41e0,
                    param_7,param_6);
    }
  }
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 18129d410 size=100 ############

void FUN_18129d410(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                  undefined4 param_9)

{
  FUN_18129deb0();
  FUN_18129ddd0(param_1,param_4,param_5);
  FUN_18129ddd0(param_1,param_6,param_7);
  FUN_18129ddd0(param_1,param_8,param_9);
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 18129d480 size=94 ############

void FUN_18129d480(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 local_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  undefined4 uStack_14;
  
  uStack_24 = (undefined4)((ulonglong)param_2 >> 0x20);
  local_28 = (undefined4)param_2;
  FUN_18129deb0(param_1,local_28,uStack_24);
  uStack_1c = (undefined4)((ulonglong)param_3 >> 0x20);
  local_20 = (undefined4)param_3;
  FUN_18129ddd0(param_1,local_20,uStack_1c);
  uStack_14 = (undefined4)((ulonglong)param_4 >> 0x20);
  local_18 = (undefined4)param_4;
  FUN_18129ddd0(param_1,local_18,uStack_14);
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 18129d4f0 size=77 ############

void FUN_18129d4f0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_18129deb0();
  FUN_18129ddd0(param_1,param_4,param_5);
  FUN_18129ddd0(param_1,param_6,param_7);
  FUN_18129da20(param_1);
  return;
}



############ FUN_ 1812ee7b0 size=46 ############

void FUN_1812ee7b0(longlong param_1,undefined8 param_2)

{
  undefined4 *puVar1;
  undefined1 local_res8 [32];
  
  puVar1 = (undefined4 *)FUN_1812ee9c0(param_1 + 0x10,local_res8);
  FUN_18129ddd0(param_2,*puVar1,puVar1[1]);
  return;
}



############ FUN_ 181337e30 size=320 ############

undefined8 * FUN_181337e30(undefined8 *param_1,undefined8 param_2,float param_3,undefined4 param_4)

{
  undefined8 *puVar1;
  float fVar2;
  undefined4 uVar3;
  float fVar4;
  float local_58;
  uint local_54;
  float local_50;
  float local_4c;
  float local_48;
  float local_44;
  
  FUN_1813379d0();
  *(undefined4 *)(param_1 + 0x39) = param_4;
  *param_1 = juce::ArrowButton::vftable;
  puVar1 = param_1 + 0x3a;
  param_1[0x16] = juce::ArrowButton::vftable;
  *puVar1 = 0;
  param_1[0x3b] = 0;
  param_1[0x3c] = 0;
  param_1[0x3d] = 0;
  *(undefined1 *)(param_1 + 0x3e) = 1;
  FUN_18129deb0(puVar1,0,0);
  uVar3 = DAT_1824c3ea4;
  FUN_18129ddd0(puVar1,0,DAT_1824c3ea4);
  fVar2 = DAT_1824c3d8c;
  FUN_18129ddd0(puVar1,uVar3,DAT_1824c3d8c);
  FUN_18129da20(puVar1);
  param_3 = param_3 * DAT_1824c43a4;
  fVar4 = cosf(param_3);
  local_4c = sinf(param_3);
  local_54 = (uint)local_4c ^ DAT_1824c4f30;
  local_50 = (local_4c * fVar2 - fVar4 * fVar2) + fVar2;
  local_44 = fVar2 - (fVar4 * fVar2 + local_4c * fVar2);
  local_58 = fVar4;
  local_48 = fVar4;
  FUN_18129b680(puVar1,&local_58);
  return param_1;
}



############ FUN_ 18130a0d0 size=657 ############

void FUN_18130a0d0(longlong *param_1,longlong param_2,undefined8 *param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  void *_Memory;
  int iVar5;
  undefined8 *puVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined1 local_78 [8];
  int local_70;
  int local_6c;
  void *local_68;
  undefined4 local_5c;
  
  FUN_18131a490(param_2,local_78);
  fVar7 = (float)local_6c;
  fVar8 = (float)local_70;
  fVar9 = fVar7;
  if (*(int *)(*(longlong *)(param_2 + 0x1c8) + 0xf8) - 2U < 2) {
    fVar9 = fVar8;
  }
  iVar5 = (**(code **)(*param_1 + 0x10))(param_1,(int)fVar9);
  iVar1 = *(int *)(*(longlong *)(param_2 + 0x1c8) + 0xf8);
  fVar9 = (float)iVar5;
  if (iVar1 == 1) {
    FUN_18129deb0(param_3,0,0);
    FUN_18129ddd0(param_3,fVar9,fVar7);
    FUN_18129ddd0(param_3,fVar8 - fVar9,fVar7);
    FUN_18129ddd0(param_3,fVar8,0);
    fVar9 = fVar8 + DAT_1824c4334;
    fVar7 = DAT_1824c46e8;
  }
  else {
    if (iVar1 == 2) {
      FUN_18129deb0(param_3,fVar8,0);
      FUN_18129ddd0(param_3,0,fVar9);
      FUN_18129ddd0(param_3,0,fVar7 - fVar9);
      FUN_18129ddd0(param_3,fVar8,fVar7);
      fVar8 = fVar8 + DAT_1824c4334;
      FUN_18129ddd0(param_3,fVar8,fVar7 + DAT_1824c4334);
      fVar7 = DAT_1824c46e8;
      goto LAB_18130a2f0;
    }
    if (iVar1 != 3) {
      FUN_18129deb0(param_3,0,fVar7);
      FUN_18129ddd0(param_3,fVar9,0);
      FUN_18129ddd0(param_3,fVar8 - fVar9,0);
      FUN_18129ddd0(param_3,fVar8,fVar7);
      fVar7 = fVar7 + DAT_1824c4334;
      FUN_18129ddd0(param_3,fVar8 + DAT_1824c4334,fVar7);
      fVar8 = DAT_1824c46e8;
      goto LAB_18130a2f0;
    }
    FUN_18129deb0(param_3,0,0);
    FUN_18129ddd0(param_3,fVar8,fVar9);
    FUN_18129ddd0(param_3,fVar8,fVar7 - fVar9);
    FUN_18129ddd0(param_3,0,fVar7);
    fVar9 = DAT_1824c46e8;
    fVar7 = fVar7 + DAT_1824c4334;
  }
  fVar8 = DAT_1824c46e8;
  FUN_18129ddd0(param_3,fVar9,fVar7);
  fVar7 = fVar8;
LAB_18130a2f0:
  FUN_18129ddd0(param_3,fVar8,fVar7);
  FUN_18129da20(param_3);
  puVar6 = (undefined8 *)FUN_18129a910(param_3,&local_68,DAT_1824c42d0);
  if (param_3 == puVar6) {
    uVar4 = puVar6[3];
    param_3[2] = puVar6[2];
    param_3[3] = uVar4;
    *(undefined1 *)(param_3 + 4) = *(undefined1 *)(puVar6 + 4);
    local_5c = 0;
                    /* WARNING: Subroutine does not return */
    free(local_68);
  }
  uVar4 = *puVar6;
  *puVar6 = 0;
  uVar2 = *(undefined4 *)(puVar6 + 1);
  uVar3 = *(undefined4 *)((longlong)puVar6 + 0xc);
  puVar6[1] = 0;
  _Memory = (void *)*param_3;
  *param_3 = uVar4;
  *(undefined4 *)(param_3 + 1) = uVar2;
  *(undefined4 *)((longlong)param_3 + 0xc) = uVar3;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18129dda0 size=30 ############

void FUN_18129dda0(undefined8 param_1,undefined8 param_2)

{
  undefined4 local_18;
  undefined4 uStack_14;
  
  uStack_14 = (undefined4)((ulonglong)param_2 >> 0x20);
  local_18 = (undefined4)param_2;
  FUN_18129ddd0(param_1,local_18,uStack_14);
  return;
}



############ FUN_ 181299f70 size=2382 ############

void FUN_181299f70(longlong param_1,longlong *param_2)

{
  code *pcVar1;
  longlong lVar2;
  char cVar3;
  undefined1 uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  undefined4 uVar12;
  uint local_res10 [2];
  uint local_res18 [2];
  uint local_res20 [2];
  uint local_b8;
  uint local_b4;
  uint local_b0;
  uint local_ac;
  uint local_a8;
  uint local_a4;
  uint local_a0;
  uint local_9c;
  uint local_98;
  uint local_94;
  uint local_90;
  uint local_8c [21];
  
  cVar3 = (**(code **)(*param_2 + 0x10))(param_2);
  if (cVar3 == '\0') {
    do {
      pcVar1 = *(code **)(*param_2 + 0x20);
      if (pcVar1 == FUN_181235e90) {
        local_res10[0] = local_res10[0] & 0xffffff00;
        (**(code **)(*param_2 + 0x18))(param_2,local_res10,1);
        uVar4 = (undefined1)local_res10[0];
      }
      else {
        uVar4 = (*pcVar1)(param_2);
      }
      switch(uVar4) {
      case 0x62:
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_a0,4);
            if (iVar5 == 4) {
              local_res10[0] = local_a0;
              uVar6 = local_a0;
            }
            else {
              local_res10[0] = 0;
              uVar6 = 0;
            }
          }
          else {
            uVar6 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar6;
          }
        }
        else {
          uVar6 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_9c,4);
            if (iVar5 == 4) {
              local_res10[0] = local_9c;
              uVar7 = local_9c;
            }
            else {
              local_res10[0] = 0;
              uVar7 = 0;
            }
          }
          else {
            uVar7 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar7;
          }
        }
        else {
          uVar7 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_98,4);
            if (iVar5 == 4) {
              local_res10[0] = local_98;
              uVar8 = local_98;
            }
            else {
              local_res10[0] = 0;
              uVar8 = 0;
            }
          }
          else {
            uVar8 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar8;
          }
        }
        else {
          uVar8 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_94,4);
            if (iVar5 == 4) {
              local_res10[0] = local_94;
              uVar9 = local_94;
            }
            else {
              local_res10[0] = 0;
              uVar9 = 0;
            }
          }
          else {
            uVar9 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar9;
          }
        }
        else {
          uVar9 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_90,4);
            if (iVar5 == 4) {
              local_res10[0] = local_90;
              uVar10 = local_90;
            }
            else {
              local_res10[0] = 0;
              uVar10 = 0;
            }
          }
          else {
            uVar10 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar10;
          }
        }
        else {
          uVar10 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,local_8c,4);
            if (iVar5 == 4) {
              local_res10[0] = local_8c[0];
              uVar11 = local_8c[0];
            }
            else {
              local_res10[0] = 0;
              uVar11 = 0;
            }
          }
          else {
            uVar11 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar11;
          }
        }
        else {
          uVar11 = (**(code **)(lVar2 + 0x60))();
        }
        FUN_18129daf0(param_1,uVar6,uVar7,uVar8,uVar9,uVar10,uVar11);
        break;
      case 99:
        FUN_18129da20(param_1);
        break;
      case 0x65:
        goto switchD_18129a04e_caseD_65;
      case 0x6c:
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_b8,4);
            if (iVar5 == 4) {
              local_res10[0] = local_b8;
              uVar6 = local_b8;
            }
            else {
              local_res10[0] = 0;
              uVar6 = 0;
            }
          }
          else {
            uVar6 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar6;
          }
        }
        else {
          uVar6 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_b4,4);
            if (iVar5 == 4) {
              local_res10[0] = local_b4;
              FUN_18129ddd0(param_1,uVar6,local_b4);
            }
            else {
              local_res10[0] = 0;
              FUN_18129ddd0(param_1,uVar6,0);
            }
          }
          else {
            local_res10[0] = (**(code **)(lVar2 + 0x40))();
            FUN_18129ddd0(param_1,uVar6,local_res10[0]);
          }
        }
        else {
          uVar12 = (**(code **)(lVar2 + 0x60))();
          FUN_18129ddd0(param_1,uVar6,uVar12);
        }
        break;
      case 0x6d:
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,local_res18,4);
            if (iVar5 == 4) {
              local_res10[0] = local_res18[0];
              uVar6 = local_res18[0];
            }
            else {
              local_res10[0] = 0;
              uVar6 = 0;
            }
          }
          else {
            uVar6 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar6;
          }
        }
        else {
          uVar6 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,local_res20,4);
            if (iVar5 == 4) {
              local_res10[0] = local_res20[0];
              FUN_18129deb0(param_1,uVar6,local_res20[0]);
            }
            else {
              local_res10[0] = 0;
              FUN_18129deb0(param_1,uVar6,0);
            }
          }
          else {
            local_res10[0] = (**(code **)(lVar2 + 0x40))();
            FUN_18129deb0(param_1,uVar6,local_res10[0]);
          }
        }
        else {
          uVar12 = (**(code **)(lVar2 + 0x60))();
          FUN_18129deb0(param_1,uVar6,uVar12);
        }
        break;
      case 0x6e:
        *(undefined1 *)(param_1 + 0x20) = 1;
        break;
      case 0x71:
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_b0,4);
            if (iVar5 == 4) {
              local_res10[0] = local_b0;
              uVar6 = local_b0;
            }
            else {
              local_res10[0] = 0;
              uVar6 = 0;
            }
          }
          else {
            uVar6 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar6;
          }
        }
        else {
          uVar6 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_ac,4);
            if (iVar5 == 4) {
              local_res10[0] = local_ac;
              uVar7 = local_ac;
            }
            else {
              local_res10[0] = 0;
              uVar7 = 0;
            }
          }
          else {
            uVar7 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar7;
          }
        }
        else {
          uVar7 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_a8,4);
            if (iVar5 == 4) {
              local_res10[0] = local_a8;
              uVar8 = local_a8;
            }
            else {
              local_res10[0] = 0;
              uVar8 = 0;
            }
          }
          else {
            uVar8 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar8;
          }
        }
        else {
          uVar8 = (**(code **)(lVar2 + 0x60))();
        }
        lVar2 = *param_2;
        if (*(code **)(lVar2 + 0x60) == FUN_181235af0) {
          if (*(code **)(lVar2 + 0x40) == FUN_181235d70) {
            iVar5 = (**(code **)(lVar2 + 0x18))(param_2,&local_a4,4);
            if (iVar5 == 4) {
              local_res10[0] = local_a4;
              uVar9 = local_a4;
            }
            else {
              local_res10[0] = 0;
              uVar9 = 0;
            }
          }
          else {
            uVar9 = (**(code **)(lVar2 + 0x40))();
            local_res10[0] = uVar9;
          }
        }
        else {
          uVar9 = (**(code **)(lVar2 + 0x60))();
        }
        FUN_18129dca0(param_1,uVar6,uVar7,uVar8,uVar9);
        break;
      case 0x7a:
        *(undefined1 *)(param_1 + 0x20) = 0;
      }
      cVar3 = (**(code **)(*param_2 + 0x10))(param_2);
    } while (cVar3 == '\0');
switchD_18129a04e_caseD_65:
  }
  return;
}



############ FUN_ 1804ea1e0 size=4558 ############

void FUN_1804ea1e0(longlong param_1,undefined8 *param_2,undefined8 *param_3)

{
  byte bVar1;
  float *pfVar2;
  bool bVar3;
  float *pfVar4;
  undefined1 uVar5;
  undefined1 *puVar6;
  byte bVar7;
  char cVar8;
  uint uVar9;
  uint uVar10;
  byte bVar11;
  uint *puVar12;
  char *pcVar13;
  float *pfVar14;
  uint uVar15;
  byte *pbVar16;
  longlong lVar17;
  int iVar18;
  bool bVar19;
  undefined4 uVar20;
  float fVar21;
  undefined8 extraout_XMM0_Qa;
  undefined8 extraout_XMM0_Qa_00;
  undefined8 extraout_XMM0_Qa_01;
  undefined8 extraout_XMM0_Qa_02;
  double dVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  undefined1 local_res10 [8];
  float local_res18;
  byte *local_res20;
  double in_stack_fffffffffffffe58;
  undefined7 uVar32;
  double *pdVar33;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  undefined1 *local_140;
  undefined1 *local_138;
  undefined1 *local_130;
  undefined1 *local_128;
  undefined1 *local_120;
  double local_118;
  double local_110;
  undefined1 *local_108;
  double local_100;
  double local_f8;
  double local_f0;
  double local_e8 [22];
  
  local_e8[1] = -NAN;
  local_res20 = (byte *)*param_3;
  while ((bVar1 = *local_res20, bVar1 == 0x20 || ((byte)(bVar1 - 9) < 5))) {
    local_res20 = local_res20 + 1;
    if ((char)bVar1 < '\0') {
      bVar7 = 0x40;
      bVar11 = bVar1 & 0x40;
      while ((bVar11 != 0 && (8 < bVar7))) {
        local_res20 = local_res20 + 1;
        bVar7 = bVar7 >> 1;
        bVar11 = bVar1 & bVar7;
      }
    }
  }
  fVar30 = 0.0;
  local_res18 = 0.0;
  fVar31 = 0.0;
  fVar26 = 0.0;
  fVar27 = 0.0;
  fVar28 = 0.0;
  fVar29 = 0.0;
  local_158 = 0;
  local_150 = 0;
  local_148 = 0;
  uVar10 = 0;
  bVar19 = true;
  if (*local_res20 != 0) {
LAB_1804ea2f0:
    fVar24 = local_res18;
    bVar1 = *local_res20;
    bVar11 = bVar1;
    if ((char)bVar1 < '\0') {
      uVar15 = 0x7f;
      uVar9 = 0x40;
      iVar18 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar9 < 9) break;
          uVar15 = uVar15 >> 1;
          iVar18 = iVar18 + 1;
          uVar9 = uVar9 >> 1;
        } while ((bVar1 & uVar9) != 0);
      }
      uVar15 = bVar1 & uVar15;
      bVar11 = (byte)uVar15;
      lVar17 = 1;
      if (0 < (longlong)iVar18) {
        do {
          bVar11 = (byte)uVar15;
          if ((local_res20[lVar17] & 0xc0) != 0x80) break;
          uVar15 = local_res20[lVar17] & 0x3f | uVar15 << 6;
          bVar11 = (byte)uVar15;
          lVar17 = lVar17 + 1;
        } while (lVar17 <= iVar18);
      }
    }
    iVar18 = 0;
    bVar7 = 0x4d;
    pbVar16 = &DAT_18249eec8;
    do {
      uVar9 = uVar10;
      if (bVar7 == bVar11) {
        if (-1 < iVar18) {
          local_res20 = local_res20 + 1;
          uVar9 = (uint)bVar1;
          if (-1 < (char)bVar1) goto LAB_1804ea3e6;
          uVar9 = 0x7f;
          uVar15 = 0x40;
          iVar18 = 0;
          if ((bVar1 & 0x40) != 0) goto LAB_1804ea3a0;
          goto LAB_1804ea3af;
        }
        break;
      }
      iVar18 = iVar18 + 1;
      pbVar16 = pbVar16 + 1;
      bVar7 = *pbVar16;
    } while (bVar7 != 0);
    goto LAB_1804ea3ed;
  }
switchD_1804ea40d_caseD_42:
  if (*(int *)((longlong)param_2 + 0xc) != 0) {
    pfVar2 = (float *)*param_2;
    pfVar14 = pfVar2 + (longlong)*(int *)((longlong)param_2 + 0xc) + -1;
    if (*pfVar14 == DAT_1824c460c) {
      do {
        pfVar4 = pfVar14;
        if (pfVar4 == pfVar2) goto LAB_1804eb334;
        pfVar14 = pfVar4 + -1;
      } while (pfVar4[-1] != DAT_1824c4600);
      pfVar14 = pfVar4 + 1;
    }
    if (pfVar14 != pfVar2) {
      fVar26 = pfVar14[-1];
      fVar30 = *pfVar14;
      goto LAB_1804eb338;
    }
  }
LAB_1804eb334:
  fVar26 = 0.0;
LAB_1804eb338:
  if ((fVar26 == local_res18) && (fVar30 == fVar31)) {
    FUN_18129da20(param_2);
  }
  return;
  while( true ) {
    uVar9 = uVar9 >> 1;
    iVar18 = iVar18 + 1;
    uVar15 = uVar15 >> 1;
    if ((bVar1 & uVar15) == 0) break;
LAB_1804ea3a0:
    if (uVar15 < 9) break;
  }
LAB_1804ea3af:
  uVar9 = bVar1 & uVar9;
  for (; (iVar18 = iVar18 + -1, -1 < iVar18 && ((*local_res20 & 0xc0) == 0x80));
      local_res20 = local_res20 + 1) {
    uVar9 = *local_res20 & 0x3f | uVar9 << 6;
  }
LAB_1804ea3e6:
  bVar19 = 0x60 < uVar9;
LAB_1804ea3ed:
  pbVar16 = local_res20;
  uVar32 = (undefined7)((ulonglong)in_stack_fffffffffffffe58 >> 8);
  fVar21 = fVar27;
  switch(uVar9) {
  case 0x41:
  case 0x61:
    in_stack_fffffffffffffe58 = (double)CONCAT71(uVar32,1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_158,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804eaf75:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_158 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804eaf75;
      bVar3 = true;
    }
    if (!bVar3) {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
      break;
    }
    local_120 = &DAT_1821dbf98;
    local_res10[0] = 0;
    cVar8 = FUN_1804f1a00(&local_res20,&local_120);
    puVar6 = local_120;
    fVar24 = fVar26;
    if (cVar8 != '\0') {
      local_108 = local_120;
      dVar22 = (double)FUN_18049bd80(&local_108);
      fVar23 = (float)dVar22 * DAT_1824c3c78;
      cVar8 = FUN_1804f1ff0(&local_res20,local_res10);
      uVar5 = local_res10[0];
      if ((cVar8 != '\0') && (cVar8 = FUN_1804f1ff0(&local_res20,local_res10), cVar8 != '\0')) {
        in_stack_fffffffffffffe58 =
             (double)CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe58 >> 8),1);
        cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_150,0,in_stack_fffffffffffffe58);
        if (cVar8 == '\0') {
LAB_1804eb0a1:
          bVar3 = false;
        }
        else {
          in_stack_fffffffffffffe58 =
               (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
          cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_150 + 4,0,
                                in_stack_fffffffffffffe58);
          if (cVar8 == '\0') goto LAB_1804eb0a1;
          bVar3 = true;
        }
        if (bVar3) {
          fVar24 = (float)local_150;
          fVar21 = local_150._4_4_;
          if (bVar19) {
            fVar24 = (float)local_150 + fVar26;
            fVar21 = local_150._4_4_ + fVar27;
            local_150 = CONCAT44(fVar21,fVar24);
          }
          if ((fVar26 != fVar24) || (fVar28 = fVar26, fVar29 = fVar27, fVar27 != fVar21)) {
            local_110 = (double)(float)local_158;
            local_118 = (double)local_158._4_4_;
            in_stack_fffffffffffffe58 = (double)fVar23;
            pdVar33 = &local_118;
            FUN_1804f30e0((double)fVar26,SUB84((double)fVar27,0),(double)fVar24,(double)fVar21,
                          in_stack_fffffffffffffe58,uVar5,local_res10[0],&local_110,pdVar33,local_e8
                          ,&local_f0,&local_100,&local_f8);
            if (0.0 < (float)local_110) {
              in_stack_fffffffffffffe58 =
                   (double)CONCAT44((int)((ulonglong)in_stack_fffffffffffffe58 >> 0x20),
                                    (float)local_118);
              FUN_18129cdf0(param_2,(float)local_e8[0],(float)local_f0,(float)local_110,
                            in_stack_fffffffffffffe58,fVar23,(float)local_100,
                            (float)(local_100 + local_f8),(ulonglong)pdVar33 & 0xffffffffffffff00);
            }
            FUN_18129ddd0(param_2,fVar24,fVar21);
            fVar28 = fVar26;
            fVar29 = fVar27;
          }
        }
        else {
          bVar1 = *local_res20;
          if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
            bVar7 = 0x40;
            bVar11 = bVar1 & 0x40;
            while ((bVar11 != 0 && (8 < bVar7))) {
              local_res20 = local_res20 + 1;
              bVar7 = bVar7 >> 1;
              bVar11 = bVar7 & bVar1;
            }
          }
        }
      }
    }
    puVar12 = (uint *)(puVar6 + -0x10);
    if ((*puVar12 & 0x30000000) == 0) {
      LOCK();
      uVar10 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
      if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar12);
      }
    }
    break;
  default:
    goto switchD_1804ea40d_caseD_42;
  case 0x43:
  case 99:
    in_stack_fffffffffffffe58 = (double)CONCAT71(uVar32,1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_158,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804ea828:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_158 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804ea828;
      bVar3 = true;
    }
    if (!bVar3) {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
      break;
    }
    in_stack_fffffffffffffe58 =
         (double)CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe58 >> 8),1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_150,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804ea8c4:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_150 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804ea8c4;
      bVar3 = true;
    }
    if (!bVar3) {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
      break;
    }
    in_stack_fffffffffffffe58 =
         (double)CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe58 >> 8),1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_148,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804ea95a:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_148 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804ea95a;
      bVar3 = true;
    }
    if (bVar3) {
      fVar24 = (float)local_148;
      fVar21 = local_148._4_4_;
      fVar28 = (float)local_150;
      fVar29 = local_150._4_4_;
      if (bVar19) {
        local_158 = CONCAT44(local_158._4_4_ + fVar27,(float)local_158 + fVar26);
        fVar28 = (float)local_150 + fVar26;
        fVar29 = local_150._4_4_ + fVar27;
        fVar24 = (float)local_148 + fVar26;
        fVar21 = local_148._4_4_ + fVar27;
      }
      local_148 = CONCAT44(fVar21,fVar24);
      local_150 = CONCAT44(fVar29,fVar28);
      FUN_18129da90(param_2,local_158,CONCAT44(fVar29,fVar28),CONCAT44(fVar21,fVar24));
    }
    else {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
    }
    break;
  case 0x48:
  case 0x68:
    local_130 = &DAT_1821dbf98;
    cVar8 = FUN_1804f1a00(&local_res20,&local_130);
    if (cVar8 == '\0') {
      local_158 = local_158 & 0xffffffff00000000;
      puVar12 = (uint *)(local_130 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      bVar1 = *local_res20;
      local_res20 = local_res20 + 1;
      fVar24 = fVar26;
      if ((char)bVar1 < '\0') {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar1 & bVar7;
        }
      }
    }
    else {
      fVar24 = (float)FUN_1804f0b80(extraout_XMM0_Qa_01,&local_130,*(undefined4 *)(param_1 + 0x20));
      local_158 = CONCAT44(local_158._4_4_,fVar24);
      puVar12 = (uint *)(local_130 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      if (bVar19) {
        fVar24 = fVar24 + fVar26;
        local_158 = CONCAT44(local_158._4_4_,fVar24);
      }
      FUN_18129ddd0(param_2,fVar24,fVar27);
      fVar28 = fVar26;
    }
    break;
  case 0x4c:
  case 0x4d:
  case 0x6c:
  case 0x6d:
    local_140 = &DAT_1821dbf98;
    cVar8 = FUN_1804f1a00(&local_res20,&local_140);
    if (cVar8 == '\0') {
      local_158 = local_158 & 0xffffffff00000000;
      puVar12 = (uint *)(local_140 + -0x10);
      uVar10 = *puVar12;
LAB_1804ea4ad:
      if ((uVar10 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      bVar3 = false;
    }
    else {
      uVar20 = FUN_1804f0b80(extraout_XMM0_Qa,&local_140,*(undefined4 *)(param_1 + 0x20));
      local_158 = CONCAT44(local_158._4_4_,uVar20);
      puVar12 = (uint *)(local_140 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      local_138 = &DAT_1821dbf98;
      cVar8 = FUN_1804f1a00(&local_res20,&local_138);
      if (cVar8 == '\0') {
        local_158 = local_158 & 0xffffffff;
        puVar12 = (uint *)(local_138 + -0x10);
        uVar10 = *puVar12;
        goto LAB_1804ea4ad;
      }
      uVar20 = FUN_1804f0b80(extraout_XMM0_Qa_00,&local_138,*(undefined4 *)(param_1 + 0x24));
      local_158 = CONCAT44(uVar20,(float)local_158);
      puVar12 = (uint *)(local_138 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      bVar3 = true;
    }
    if (bVar3) {
      fVar24 = (float)local_158;
      fVar21 = local_158._4_4_;
      if (bVar19) {
        fVar24 = (float)local_158 + fVar26;
        fVar21 = local_158._4_4_ + fVar27;
        local_158 = CONCAT44(fVar21,fVar24);
      }
      fVar28 = fVar24;
      fVar29 = fVar21;
      if ((uVar9 - 0x4d & 0xffffffdf) == 0) {
        local_res18 = fVar24;
        FUN_18129deb0(param_2,fVar24,fVar21);
        uVar9 = 0x6c;
        fVar31 = fVar21;
      }
      else {
        FUN_18129ddd0();
      }
    }
    else {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
    }
    break;
  case 0x51:
  case 0x71:
    in_stack_fffffffffffffe58 = (double)CONCAT71(uVar32,1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_158,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804eac94:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_158 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804eac94;
      bVar3 = true;
    }
    if (!bVar3) {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
      break;
    }
    in_stack_fffffffffffffe58 =
         (double)CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe58 >> 8),1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_150,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804ead2c:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_150 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804ead2c;
      bVar3 = true;
    }
    if (bVar3) {
      fVar24 = (float)local_150;
      fVar21 = local_150._4_4_;
      fVar28 = (float)local_158;
      fVar29 = local_158._4_4_;
      if (bVar19) {
        fVar28 = (float)local_158 + fVar26;
        fVar29 = local_158._4_4_ + fVar27;
        fVar24 = (float)local_150 + fVar26;
        fVar21 = local_150._4_4_ + fVar27;
      }
      local_150 = CONCAT44(fVar21,fVar24);
      local_158 = CONCAT44(fVar29,fVar28);
      FUN_18129dc60(param_2,CONCAT44(fVar29,fVar28));
    }
    else {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
    }
    break;
  case 0x53:
  case 0x73:
    in_stack_fffffffffffffe58 = (double)CONCAT71(uVar32,1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_158,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804eaa8b:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_158 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804eaa8b;
      bVar3 = true;
    }
    if (!bVar3) {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
      break;
    }
    in_stack_fffffffffffffe58 =
         (double)CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe58 >> 8),1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_148,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804eab22:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_148 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804eab22;
      bVar3 = true;
    }
    if (bVar3) {
      fVar23 = (float)local_158;
      fVar25 = local_158._4_4_;
      fVar24 = (float)local_148;
      fVar21 = local_148._4_4_;
      if (bVar19) {
        fVar23 = (float)local_158 + fVar26;
        fVar25 = local_158._4_4_ + fVar27;
        fVar24 = (float)local_148 + fVar26;
        fVar21 = local_148._4_4_ + fVar27;
      }
      local_150 = CONCAT44(fVar27,fVar26);
      iVar18 = 0;
      cVar8 = 'C';
      pcVar13 = "CcSs";
      do {
        if (cVar8 == (char)uVar10) {
          if (-1 < iVar18) {
            local_150 = CONCAT44(fVar27 + (fVar27 - fVar29),fVar26 + (fVar26 - fVar28));
          }
          break;
        }
        iVar18 = iVar18 + 1;
        pcVar13 = pcVar13 + 1;
        cVar8 = *pcVar13;
      } while (cVar8 != '\0');
      local_148 = CONCAT44(fVar21,fVar24);
      local_158 = CONCAT44(fVar25,fVar23);
      FUN_18129da90(param_2,local_150,CONCAT44(fVar25,fVar23),CONCAT44(fVar21,fVar24));
      fVar28 = fVar23;
      fVar29 = fVar25;
    }
    else {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
    }
    break;
  case 0x54:
  case 0x74:
    in_stack_fffffffffffffe58 = (double)CONCAT71(uVar32,1);
    cVar8 = FUN_1804f0ad0(param_1,&local_res20,&local_158,0,in_stack_fffffffffffffe58);
    if (cVar8 == '\0') {
LAB_1804eae37:
      bVar3 = false;
    }
    else {
      in_stack_fffffffffffffe58 =
           (double)((ulonglong)in_stack_fffffffffffffe58 & 0xffffffffffffff00);
      cVar8 = FUN_1804f0ad0(param_1,&local_res20,(longlong)&local_158 + 4,0,
                            in_stack_fffffffffffffe58);
      if (cVar8 == '\0') goto LAB_1804eae37;
      bVar3 = true;
    }
    if (bVar3) {
      fVar24 = (float)local_158;
      fVar21 = local_158._4_4_;
      if (bVar19) {
        fVar24 = (float)local_158 + fVar26;
        fVar21 = local_158._4_4_ + fVar27;
      }
      iVar18 = 0;
      cVar8 = 'Q';
      pcVar13 = "QqTt";
      do {
        if (cVar8 == (char)uVar10) {
          if (-1 < iVar18) {
            fVar26 = fVar26 + (fVar26 - fVar28);
            fVar27 = fVar27 + (fVar27 - fVar29);
          }
          break;
        }
        iVar18 = iVar18 + 1;
        pcVar13 = pcVar13 + 1;
        cVar8 = *pcVar13;
      } while (cVar8 != '\0');
      local_158 = CONCAT44(fVar21,fVar24);
      local_150 = CONCAT44(fVar27,fVar26);
      FUN_18129dc60(param_2,CONCAT44(fVar27,fVar26));
      fVar28 = fVar26;
      fVar29 = fVar27;
    }
    else {
      bVar1 = *local_res20;
      fVar24 = fVar26;
      if ((bVar1 != 0) && (local_res20 = local_res20 + 1, (char)bVar1 < '\0')) {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar7 & bVar1;
        }
      }
    }
    break;
  case 0x56:
  case 0x76:
    local_128 = &DAT_1821dbf98;
    cVar8 = FUN_1804f1a00(&local_res20,&local_128);
    if (cVar8 == '\0') {
      local_158 = local_158 & 0xffffffff;
      puVar12 = (uint *)(local_128 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      bVar1 = *local_res20;
      local_res20 = local_res20 + 1;
      fVar24 = fVar26;
      if ((char)bVar1 < '\0') {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          local_res20 = local_res20 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar1 & bVar7;
        }
      }
    }
    else {
      fVar21 = (float)FUN_1804f0b80(extraout_XMM0_Qa_02,&local_128,*(undefined4 *)(param_1 + 0x24));
      local_158 = CONCAT44(fVar21,(float)local_158);
      puVar12 = (uint *)(local_128 + -0x10);
      if ((*puVar12 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar12;
        *puVar12 = *puVar12 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar12);
        }
      }
      if (bVar19) {
        fVar21 = fVar21 + fVar27;
        local_158 = CONCAT44(fVar21,(float)local_158);
      }
      FUN_18129ddd0(param_2,fVar26,fVar21);
      fVar24 = fVar26;
      fVar29 = fVar27;
    }
    break;
  case 0x5a:
  case 0x7a:
    FUN_18129da20(param_2);
    while ((bVar1 = *pbVar16, bVar1 == 0x20 || ((byte)(bVar1 - 9) < 5))) {
      pbVar16 = pbVar16 + 1;
      if ((char)bVar1 < '\0') {
        bVar7 = 0x40;
        bVar11 = bVar1 & 0x40;
        while ((bVar11 != 0 && (8 < bVar7))) {
          pbVar16 = pbVar16 + 1;
          bVar7 = bVar7 >> 1;
          bVar11 = bVar1 & bVar7;
        }
      }
    }
    uVar9 = 0x4d;
    fVar21 = fVar31;
    fVar28 = fVar24;
    fVar29 = fVar31;
    local_res20 = pbVar16;
  }
  fVar26 = fVar24;
  fVar27 = fVar21;
  uVar10 = uVar9;
  if (*local_res20 == 0) goto switchD_1804ea40d_caseD_42;
  goto LAB_1804ea2f0;
}



############ FUN_ 1804ab000 size=106 ############

longlong * FUN_1804ab000(longlong *param_1,undefined8 *param_2)

{
  int iVar1;
  void *_Src;
  
  *param_1 = 0;
  param_1[1] = 0;
  iVar1 = *(int *)((longlong)param_2 + 0xc);
  _Src = (void *)*param_2;
  if (0 < iVar1) {
    FUN_1804af790(param_1,iVar1 + 8 + iVar1 / 2 & 0xfffffff8);
  }
  memcpy((void *)(*param_1 + (longlong)*(int *)((longlong)param_1 + 0xc) * 4),_Src,
         (longlong)iVar1 << 2);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + iVar1;
  return param_1;
}



############ FUN_ 1804844e0 size=99 ############

void FUN_1804844e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if ((longlong *)param_1[0x43] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  uVar2 = (**(code **)(*(longlong *)param_1[0x43] + 0x10))();
  uVar1 = (**(code **)(*param_1 + 0x88))(param_1);
  uVar2 = FUN_180487220(uVar1,uVar2,param_3,param_4,uVar3);
  FUN_180487300(uVar1,uVar2);
  return;
}



############ FUN_ 1804e2980 size=125 ############

undefined8 FUN_1804e2980(longlong param_1,undefined8 param_2,double *param_3,undefined8 param_4)

{
  double dVar1;
  longlong lVar2;
  longlong *plVar3;
  undefined8 uVar4;
  undefined4 uVar5;
  
  dVar1 = *param_3;
  lVar2 = *(longlong *)(param_1 + 8);
  plVar3 = *(longlong **)(lVar2 + 0x20);
  uVar4 = (**(code **)(*plVar3 + 0x88))(plVar3,param_2,param_3,param_4,0xfffffffffffffffe);
  uVar5 = FUN_180487220(uVar4,(float)dVar1);
  uVar5 = FUN_180487300(uVar4,uVar5);
  plVar3 = *(longlong **)(lVar2 + 0x20);
  (**(code **)(*plVar3 + 0x48))(plVar3,param_2,uVar5,0);
  return param_2;
}



############ FUN_ 180528c00 size=144 ############

bool FUN_180528c00(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong *plVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  float fVar5;
  
  plVar2 = (longlong *)FUN_18119aa60(param_1 + 0x178,"delta",param_3,param_4,0xfffffffffffffffe);
  if (*(code **)(*plVar2 + 8) == FUN_1811bf850) {
    lVar1 = plVar2[0x31];
    uVar3 = (**(code **)(*plVar2 + 0x88))(plVar2);
    uVar4 = FUN_180487220(uVar3,(int)lVar1);
    fVar5 = (float)FUN_180487300(uVar3,uVar4);
    return 0.0 < fVar5;
  }
  fVar5 = (float)(**(code **)(*plVar2 + 8))(plVar2);
  return 0.0 < fVar5;
}



############ FUN_ 180528ca0 size=170 ############

undefined8 FUN_180528ca0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong *plVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  float extraout_XMM0_Da;
  float extraout_XMM0_Da_00;
  float fVar5;
  
  plVar2 = (longlong *)FUN_18119aa60(param_1 + 0x178,"bypass",param_3,param_4,0xfffffffffffffffe);
  if (*(code **)(*plVar2 + 8) == FUN_1811bf850) {
    lVar1 = plVar2[0x31];
    uVar3 = (**(code **)(*plVar2 + 0x88))(plVar2);
    uVar4 = FUN_180487220(uVar3,(int)lVar1);
    FUN_180487300(uVar3,uVar4);
    fVar5 = extraout_XMM0_Da;
  }
  else {
    (**(code **)(*plVar2 + 8))(plVar2);
    fVar5 = extraout_XMM0_Da_00;
  }
  if ((fVar5 <= 0.0) && (*(char *)(param_1 + 0x164) == '\0')) {
    return 0;
  }
  return 1;
}



############ FUN_ 18055fee0 size=335 ############

void FUN_18055fee0(longlong param_1)

{
  longlong lVar1;
  int iVar2;
  uint uVar4;
  longlong lVar5;
  bool bVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  longlong lVar3;
  
  uVar4 = (uint)*(float *)(*(longlong *)(param_1 + 0x2e0) + 0x188);
  if (-1 < (int)uVar4) {
    lVar1 = *(longlong *)(param_1 + 0x20);
    lVar3 = 0;
    iVar2 = 0;
    bVar6 = uVar4 < *(uint *)(lVar1 + 0x84);
    lVar5 = lVar3;
    if (bVar6) {
      lVar5 = *(longlong *)(*(longlong *)(lVar1 + 0x78) + (longlong)(int)uVar4 * 8);
    }
    fVar9 = *(float *)(lVar5 + 0x804);
    lVar5 = lVar3;
    if (bVar6) {
      lVar3 = *(longlong *)(*(longlong *)(lVar1 + 0x78) + (longlong)(int)uVar4 * 8);
      lVar5 = *(longlong *)(*(longlong *)(lVar1 + 0x78) + (longlong)(int)uVar4 * 8);
    }
    uVar4 = *(uint *)(lVar3 + 0x800);
    if (((3 < uVar4) && (uVar4 != 10)) && ((uVar4 - 4 < 4 || (iVar2 = 2, uVar4 == 9)))) {
      iVar2 = 1;
    }
    if (iVar2 == 1) {
      fVar7 = *(float *)(param_1 + 0x6c);
      fVar8 = fVar9;
    }
    else if (iVar2 == 2) {
      fVar7 = (float)FUN_180534980(*(undefined4 *)(lVar5 + 0x80c));
      fVar7 = powf(DAT_1824c41e0,fVar7);
      fVar8 = sqrtf(fVar7);
      fVar7 = fVar8 * fVar9;
      fVar8 = fVar9 / fVar8;
    }
    else {
      fVar8 = *(float *)(param_1 + 0x68);
      fVar7 = fVar9;
    }
    *(float *)(param_1 + 0x318) = fVar7;
    *(float *)(param_1 + 0x314) = fVar8;
  }
  fVar9 = (float)FUN_180487300(param_1 + 0x68,*(undefined4 *)(param_1 + 0x314));
  *(float *)(param_1 + 0x10) = fVar9 - *(float *)(param_1 + 0x310);
  fVar9 = (float)FUN_180487300(param_1 + 0x68,*(undefined4 *)(param_1 + 0x318));
  *(float *)(param_1 + 0x14) = fVar9 + *(float *)(param_1 + 0x310);
  return;
}



############ FUN_ 1811bf680 size=261 ############

ulonglong FUN_1811bf680(longlong *param_1,undefined8 param_2,char param_3,undefined8 param_4)

{
  byte bVar1;
  float fVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  int iVar5;
  float fVar6;
  undefined4 uVar7;
  
  fVar6 = (float)FUN_180487220(param_1 + 0x16,param_2,param_3,param_4,0xfffffffffffffffe);
  LOCK();
  fVar2 = *(float *)(param_1 + 0x31);
  *(float *)(param_1 + 0x31) = fVar6;
  uVar4 = (ulonglong)(uint)fVar2;
  UNLOCK();
  if (fVar2 != fVar6) {
    (**(code **)(*(longlong *)param_1[0x51] + 8))();
    iVar5 = *(int *)((longlong)param_1 + 0x2ac);
    while (0 < iVar5) {
      iVar5 = iVar5 + -1;
      if ((*(int *)((longlong)param_1 + 0x2ac) <= iVar5) &&
         (iVar5 = *(int *)((longlong)param_1 + 0x2ac) + -1, iVar5 < 0)) break;
      FUN_180492ecc(*(undefined8 *)(param_1[0x54] + (longlong)iVar5 * 8),param_1,(int)param_1[0x31])
      ;
    }
    LOCK();
    bVar1 = *(byte *)((longlong)param_1 + 0x194);
    *(byte *)((longlong)param_1 + 0x194) = 1;
    uVar4 = (ulonglong)bVar1;
    UNLOCK();
    if (param_3 != '\0') {
      uVar3 = (**(code **)(*param_1 + 0x88))(param_1);
      uVar7 = FUN_180487220(uVar3,fVar6);
      uVar7 = FUN_180487300(uVar3,uVar7);
      uVar4 = FUN_1812c3d40(param_1,uVar7);
    }
  }
  return uVar4;
}



############ FUN_ 18114c600 size=292 ############

void FUN_18114c600(undefined8 param_1,longlong *param_2,undefined1 param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint *puVar4;
  undefined4 uVar5;
  longlong local_28;
  longlong local_20 [3];
  
  local_20[1] = 0xfffffffffffffffe;
  FUN_18114c790(DAT_182673988,&local_28,param_2[1]);
  local_20[0] = param_2[0xd];
  puVar4 = (uint *)(local_20[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  if (*(code **)(*param_2 + 8) == FUN_1811bf850) {
    lVar2 = param_2[0x31];
    uVar3 = (**(code **)(*param_2 + 0x88))(param_2);
    uVar5 = FUN_180487220(uVar3,(int)lVar2);
    uVar5 = FUN_180487300(uVar3,uVar5);
  }
  else {
    uVar5 = (**(code **)(*param_2 + 8))(param_2);
  }
  FUN_18114d930(DAT_182673988 + 0x18,&local_28,local_20,uVar5,param_3);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_28 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 1811a3ed0 size=152 ############

undefined8 *
FUN_1811a3ed0(undefined8 *param_1,longlong *param_2,undefined4 param_3,undefined8 param_4)

{
  code *pcVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  
  *param_1 = UndoableParameterGesture::vftable;
  param_1[1] = param_2;
  pcVar1 = *(code **)(*param_2 + 8);
  if (pcVar1 == FUN_1811bf850) {
    lVar2 = param_2[0x31];
    uVar3 = (**(code **)(*param_2 + 0x88))(param_2);
    uVar4 = FUN_180487220(uVar3,(int)lVar2);
    uVar4 = FUN_180487300(uVar3,uVar4);
  }
  else {
    uVar4 = (*pcVar1)(param_2,param_2,pcVar1,param_4,0xfffffffffffffffe);
  }
  *(undefined4 *)(param_1 + 2) = uVar4;
  *(undefined4 *)((longlong)param_1 + 0x14) = param_3;
  return param_1;
}



############ FUN_ 1811bf850 size=68 ############

void FUN_1811bf850(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar1 = param_1[0x31];
  uVar2 = (**(code **)(*param_1 + 0x88))();
  uVar3 = FUN_180487220(uVar2,(int)lVar1,param_3,param_4,uVar4);
  FUN_180487300(uVar2,uVar3);
  return;
}



############ FUN_ 1812b56a0 size=539 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812b56a0(longlong param_1,longlong *param_2)

{
  uint *_Memory;
  longlong *plVar1;
  uint uVar2;
  longlong *plVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  float fVar7;
  undefined4 uVar8;
  float fVar9;
  double dVar10;
  undefined1 auStack_98 [32];
  longlong local_78;
  longlong local_70 [2];
  longlong *local_60;
  longlong local_58;
  undefined **local_50;
  double local_48;
  longlong *local_40;
  undefined1 local_38 [8];
  ulonglong local_30;
  
  local_70[1] = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  lVar4 = *param_2;
  local_60 = param_2;
  if (lVar4 == 0) {
    plVar3 = (longlong *)FUN_181350e20();
  }
  else {
    plVar3 = *(longlong **)(lVar4 + 0x18);
    plVar1 = plVar3 + (longlong)*(int *)(lVar4 + 0x24) * 3;
    if (plVar3 != plVar1) {
      local_78 = *(longlong *)(param_1 + 0x58);
      do {
        local_58 = *plVar3;
        if (local_58 == local_78) {
          plVar3 = plVar3 + 1;
          if (plVar3 != (longlong *)0x0) goto LAB_1812b573e;
          break;
        }
        plVar3 = plVar3 + 3;
      } while (plVar3 != plVar1);
    }
    plVar3 = (longlong *)FUN_181244160();
  }
LAB_1812b573e:
  (**(code **)(*(longlong *)*plVar3 + 0x20))((longlong *)*plVar3,local_70,plVar3 + 1);
  lVar4 = FUN_1812b5a60(param_1,local_70[0]);
  _Memory = (uint *)(local_70[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (lVar4 != 0) {
    FUN_1813522a0(lVar4 + 8,param_2);
    fVar7 = (float)(**(code **)(**(longlong **)(lVar4 + 0x20) + 0x18))();
    uVar5 = (**(code **)(**(longlong **)(lVar4 + 0x20) + 0x88))();
    fVar9 = 0.0;
    if ((0.0 <= fVar7) && (fVar9 = DAT_1824c3ea4, fVar7 <= DAT_1824c3ea4)) {
      fVar9 = fVar7;
    }
    uVar8 = FUN_1804db050(uVar5,fVar9);
    fVar9 = (float)FUN_180487220(uVar5,uVar8);
    local_50 = &PTR_vftable_18262b4d8;
    local_48 = (double)fVar9;
    puVar6 = (undefined8 *)FUN_181352cf0(lVar4 + 8,&local_40,param_1 + 0x50,&local_50);
    dVar10 = (double)(**(code **)(*(longlong *)*puVar6 + 0x18))((longlong *)*puVar6,puVar6 + 1);
    local_78 = CONCAT44(local_78._4_4_,*(float *)(lVar4 + 0x38));
    if ((float)dVar10 != *(float *)(lVar4 + 0x38)) {
      uVar5 = (**(code **)(**(longlong **)(lVar4 + 0x20) + 0x88))();
      uVar8 = FUN_180487220(uVar5,(float)dVar10);
      uVar8 = FUN_180487300(uVar5,uVar8);
      if (*(char *)(lVar4 + 0x3e) == '\0') {
        plVar3 = *(longlong **)(lVar4 + 0x20);
        (**(code **)(*plVar3 + 0x10))(plVar3,uVar8);
        FUN_1812c3d40(plVar3,uVar8);
      }
    }
    (**(code **)(*local_40 + 0xb0))(local_40,local_38);
    (**(code **)(*local_50 + 0xb0))(local_50,&local_48);
  }
  FUN_181352e50(param_2);
}



############ FUN_ 1812b5e30 size=102 ############

void FUN_1812b5e30(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  
  plVar1 = (longlong *)param_1[0x3d];
  if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(*plVar1 + 0x10))(plVar1,param_2,param_3,param_4,0xfffffffffffffffe);
  uVar2 = (**(code **)(*param_1 + 0x88))(param_1);
  FUN_180487220(uVar2);
  FUN_180487300(uVar2);
  return;
}



############ FUN_ 1812b5f80 size=69 ############

void FUN_1812b5f80(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar1 = param_1[0x2d];
  uVar2 = (**(code **)(*param_1 + 0x88))();
  uVar3 = FUN_180487220(uVar2,(int)lVar1,param_3,param_4,uVar4);
  FUN_180487300(uVar2,uVar3);
  return;
}



############ FUN_ 1812b62e0 size=102 ############

void FUN_1812b62e0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  
  plVar1 = (longlong *)param_1[0x3b];
  if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(*plVar1 + 0x10))(plVar1,param_2,param_3,param_4,0xfffffffffffffffe);
  uVar2 = (**(code **)(*param_1 + 0x88))(param_1);
  FUN_180487220(uVar2);
  FUN_180487300(uVar2);
  return;
}



############ FUN_ 1812b6440 size=69 ############

void FUN_1812b6440(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar1 = param_1[0x2b];
  uVar2 = (**(code **)(*param_1 + 0x88))();
  uVar3 = FUN_180487220(uVar2,(int)lVar1,param_3,param_4,uVar4);
  FUN_180487300(uVar2,uVar3);
  return;
}



############ FUN_ 1812b6530 size=99 ############

void FUN_1812b6530(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if ((longlong *)param_1[0x3b] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  uVar2 = (**(code **)(*(longlong *)param_1[0x3b] + 0x10))();
  uVar1 = (**(code **)(*param_1 + 0x88))(param_1);
  uVar2 = FUN_180487220(uVar1,uVar2,param_3,param_4,uVar3);
  FUN_180487300(uVar1,uVar2);
  return;
}



############ FUN_ 1812b6660 size=74 ############

void FUN_1812b6660(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar2 = *(undefined4 *)((longlong)param_1 + 0x15c);
  uVar1 = (**(code **)(*param_1 + 0x88))();
  uVar2 = FUN_180487220(uVar1,uVar2,param_3,param_4,uVar3);
  FUN_180487300(uVar1,uVar2);
  return;
}



############ FUN_ 1812b6750 size=69 ############

void FUN_1812b6750(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  lVar1 = param_1[0x2b];
  uVar2 = (**(code **)(*param_1 + 0x88))();
  uVar3 = FUN_180487220(uVar2,(int)lVar1,param_3,param_4,uVar4);
  FUN_180487300(uVar2,uVar3);
  return;
}



############ FUN_ 18161a990 size=284 ############

void FUN_18161a990(longlong param_1)

{
  float *pfVar1;
  undefined4 *puVar2;
  undefined8 *puVar3;
  float fVar4;
  uint uVar5;
  longlong lVar6;
  ulonglong uVar7;
  int iVar8;
  undefined4 uVar9;
  float fVar10;
  float fVar11;
  
  uVar9 = FUN_180487300(*(undefined8 *)(param_1 + 0xa8));
  fVar4 = DAT_1824c4624;
  iVar8 = 0;
  if (*(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 3 != 0) {
    do {
      uVar7 = (ulonglong)(uint)(iVar8 * 2);
      lVar6 = *(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 3;
      fVar11 = (float)iVar8;
      fVar10 = (float)lVar6;
      if (lVar6 < 0) {
        fVar10 = fVar10 + fVar4;
      }
      lVar6 = *(longlong *)(param_1 + 0x28);
      uVar5 = iVar8 * 2 + 1;
      iVar8 = iVar8 + 1;
      *(undefined4 *)(lVar6 + uVar7 * 4) = 0x3f800000;
      *(undefined4 *)(lVar6 + (ulonglong)uVar5 * 4) = 0x40000000;
      pfVar1 = (float *)(*(longlong *)(param_1 + 0x40) + uVar7 * 0x10);
      *pfVar1 = fVar11 / fVar10;
      pfVar1[1] = 0.0;
      pfVar1[2] = 0.0;
      pfVar1[3] = 0.0;
      pfVar1 = (float *)(*(longlong *)(param_1 + 0x40) + (ulonglong)uVar5 * 0x10);
      *pfVar1 = fVar11 / fVar10;
      pfVar1[1] = 0.0;
      pfVar1[2] = 0.0;
      pfVar1[3] = 0.0;
      puVar2 = (undefined4 *)(*(longlong *)(param_1 + 0x58) + uVar7 * 0x10);
      *puVar2 = uVar9;
      puVar2[1] = uVar9;
      puVar2[2] = uVar9;
      puVar2[3] = uVar9;
      puVar3 = (undefined8 *)(*(longlong *)(param_1 + 0x58) + (ulonglong)uVar5 * 0x10);
      *puVar3 = 0;
      puVar3[1] = 0;
    } while ((ulonglong)(longlong)iVar8 <
             (ulonglong)(*(longlong *)(param_1 + 0xe8) - *(longlong *)(param_1 + 0xe0) >> 3));
  }
  return;
}



############ FUN_ 18161b320 size=1107 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18161b320(longlong param_1)

{
  longlong *plVar1;
  float fVar2;
  float *pfVar3;
  longlong *plVar4;
  float fVar5;
  float fVar6;
  ulonglong uVar7;
  float fVar8;
  int iVar9;
  longlong lVar10;
  ulonglong uVar11;
  LPCRITICAL_SECTION lpCriticalSection;
  ulonglong uVar12;
  uint uVar13;
  float fVar15;
  float fVar16;
  float fVar17;
  undefined4 uVar18;
  float fVar19;
  float fVar20;
  uint uVar21;
  undefined1 auStack_198 [32];
  undefined4 local_178;
  float local_168 [2];
  float local_160 [2];
  float local_158 [4];
  longlong local_148;
  undefined8 uStack_140;
  longlong local_138;
  undefined8 local_128;
  LPCRITICAL_SECTION local_120;
  undefined **local_118;
  float local_110;
  float fStack_10c;
  float fStack_108;
  undefined4 uStack_104;
  longlong local_100;
  undefined ***local_e0;
  ulonglong local_d8;
  ulonglong uVar14;
  
  local_128 = 0xfffffffffffffffe;
  local_d8 = DAT_182615970 ^ (ulonglong)auStack_198;
  lpCriticalSection = (LPCRITICAL_SECTION)(*(longlong *)(param_1 + 0x98) + 0x528);
  local_120 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  plVar1 = (longlong *)(param_1 + 0xe0);
  if (*(longlong *)(param_1 + 0xe8) - *plVar1 >> 3 == 0) {
    FUN_18056c640(plVar1,(longlong)*(int *)(param_1 + 0xbc));
    FUN_18056cd00(param_1 + 0xf8,0x8000);
  }
  iVar9 = *(int *)(*(longlong *)(*(longlong *)(param_1 + 0x98) + 0x168) + 100) / 2 + 1;
  *(int *)(param_1 + 0xd4) = iVar9;
  local_168[0] = 0.0;
  local_148 = param_1 + 0x150;
  uStack_140 = local_168;
  FUN_18058fc80(local_148,(longlong)iVar9,&local_148);
  fVar2 = DAT_1824c41e0;
  fVar8 = DAT_1824c3ea4;
  lVar10 = (*(longlong *)(param_1 + 0xe8) - *plVar1 >> 3) + -1;
  fVar15 = (float)lVar10;
  if (lVar10 < 0) {
    fVar15 = fVar15 + DAT_1824c4624;
  }
  fVar15 = DAT_1824c3ea4 / fVar15;
  fVar20 = (float)(*(int *)(param_1 + 0xd4) + -1) * DAT_1824c41e0;
  *(int *)(param_1 + 0xd0) =
       (int)*(float *)(*(longlong *)(*(longlong *)(param_1 + 0x98) + 0x168) + 0x24);
  fVar6 = DAT_1824c4680;
  fVar5 = DAT_1824c3d8c;
  uVar11 = 0;
  if (*(longlong *)(param_1 + 0xe8) - *plVar1 >> 3 != 0) {
    uVar21 = (uint)DAT_1824c4f10;
    uVar7 = (ulonglong)DAT_1824c4f10 >> 0x20;
    uVar12 = uVar11;
    uVar14 = uVar11;
    do {
      fVar16 = (float)(int)uVar14 * fVar15;
      pfVar3 = *(float **)(param_1 + 0xb0);
      if (0.0 <= fVar16) {
        fVar17 = fVar8;
        if (fVar16 <= fVar8) {
          fVar17 = fVar16;
        }
      }
      else {
        fVar17 = 0.0;
      }
      if (*(longlong *)(pfVar3 + 0x14) == 0) {
        if (*(char *)(pfVar3 + 4) == '\0') {
          fVar16 = pfVar3[3];
          if ((fVar16 != fVar8) && (0.0 < fVar17)) {
            fVar17 = logf(fVar17);
            fVar17 = expf(fVar17 / fVar16);
          }
          fVar16 = pfVar3[1] - *pfVar3;
        }
        else {
          fVar17 = fVar17 * fVar2 - fVar8;
          fVar16 = pfVar3[3];
          if ((fVar16 != fVar8) && (fVar17 != 0.0)) {
            fVar19 = fVar8;
            if (fVar17 < 0.0) {
              fVar19 = fVar6;
            }
            fVar17 = logf((float)(double)CONCAT44((uint)((ulonglong)(double)fVar17 >> 0x20) &
                                                  (uint)uVar7,SUB84((double)fVar17,0) & uVar21));
            fVar17 = expf(fVar17 / fVar16);
            fVar17 = fVar17 * fVar19;
          }
          fVar16 = (pfVar3[1] - *pfVar3) * fVar5;
          fVar17 = fVar17 + fVar8;
        }
        fVar16 = fVar16 * fVar17 + *pfVar3;
      }
      else {
        local_160[0] = pfVar3[1];
        local_158[0] = *pfVar3;
        plVar4 = *(longlong **)(pfVar3 + 0x14);
        local_168[0] = fVar17;
        if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar16 = (float)(**(code **)(*plVar4 + 0x10))(plVar4,local_158,local_160,local_168);
      }
      fVar16 = (fVar16 / (float)*(int *)(param_1 + 0xd0)) * fVar20;
      iVar9 = (int)fVar16;
      *(int *)(*plVar1 + uVar12) = iVar9;
      *(float *)(*plVar1 + 4 + uVar12) = fVar16 - (float)iVar9;
      uVar13 = (int)uVar14 + 1;
      uVar14 = (ulonglong)uVar13;
      uVar12 = uVar12 + 8;
    } while ((ulonglong)(longlong)(int)uVar13 <
             (ulonglong)(*(longlong *)(param_1 + 0xe8) - *plVar1 >> 3));
  }
  lVar10 = *(longlong *)(param_1 + 0xf8);
  pfVar3 = *(float **)(param_1 + 0xa8);
  fVar2 = pfVar3[1];
  fVar15 = *pfVar3;
  fVar5 = *pfVar3;
  fVar6 = pfVar3[1];
  local_178 = 0x8000;
  FUN_180557920(lVar10,fVar8,fVar15,fVar2);
  fVar8 = DAT_1824c43e0;
  do {
    fVar20 = logf(*(float *)(lVar10 + uVar11 * 4));
    uVar18 = FUN_180487300(*(undefined8 *)(param_1 + 0xa8),
                           fVar20 * fVar8 * *(float *)(param_1 + 0xb8));
    *(undefined4 *)(lVar10 + uVar11 * 4) = uVar18;
    uVar11 = uVar11 + 1;
  } while ((longlong)uVar11 < 0x8000);
  fStack_108 = DAT_1824c45e8 / (fVar2 - fVar15);
  local_118 = std::_Func_impl_no_alloc<<lambda_03f01822f76fc2673078ee71b606abaa>,float,float>::
              vftable;
  uStack_104 = uStack_140._4_4_;
  local_e0 = &local_118;
  local_138 = lVar10;
  local_110 = fVar5;
  fStack_10c = fVar6;
  local_100 = lVar10;
  FUN_18058fc00(param_1 + 0x110,&local_118);
  if (local_e0 != (undefined ***)0x0) {
    (*(code *)(*local_e0)[4])(local_e0,local_e0 != &local_118);
  }
  LeaveCriticalSection(lpCriticalSection);
}



############ FUN_ 18161ba20 size=425 ############

void FUN_18161ba20(longlong param_1,undefined8 *param_2,longlong *param_3,undefined8 param_4)

{
  longlong lVar1;
  bool bVar2;
  char cVar3;
  char cVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined8 uVar7;
  undefined4 uVar8;
  
  (*(code *)*param_2)(0x84c0,param_2,param_3,param_4,0xfffffffffffffffe);
  glBindTexture(0xde1,**(undefined4 **)(param_1 + 0x170));
  lVar1 = *(longlong *)(param_1 + 0x98);
  cVar3 = FUN_180528c00(lVar1);
  if ((cVar3 == '\0') && (*(char *)(lVar1 + 0x939) == '\0')) {
    cVar3 = '\0';
  }
  else {
    cVar3 = '\x01';
  }
  cVar4 = FUN_180528ca0(*(undefined8 *)(param_1 + 0x98));
  if (cVar4 == '\0') {
    if ((*(char *)(*(longlong *)(param_1 + 0x98) + 0x93a) == '\0') ||
       (*(char *)(*(longlong *)(param_1 + 0x98) + 0x939) == '\0')) {
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
    if (!bVar2) {
      uVar7 = 0;
      goto LAB_18161bad1;
    }
  }
  uVar7 = 1;
LAB_18161bad1:
  uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"deltaEnabled");
  (**(code **)(*param_3 + 200))(uVar5,cVar3);
  uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"bypassEnabled");
  (**(code **)(*param_3 + 200))(uVar5,uVar7);
  uVar8 = FUN_180487300(*(undefined8 *)(param_1 + 0xa8),0);
  uVar5 = uVar8;
  if (cVar3 != '\0') {
    uVar5 = DAT_1824c3ea4;
  }
  uVar6 = (**(code **)(*param_3 + 0x98))((int)param_3[1],&DAT_1822ece74);
  (**(code **)(*param_3 + 0xc0))(uVar6,uVar5);
  if (cVar3 == '\0') {
    uVar8 = DAT_1824c4680;
  }
  uVar5 = (**(code **)(*param_3 + 0x98))((int)param_3[1],"bottomY");
  (**(code **)(*param_3 + 0xc0))(uVar5,uVar8);
  uVar5 = (**(code **)(*(longlong *)(param_1 + 8) + 0x18))();
                    /* WARNING: Could not recover jumptable at 0x00018161bbc2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  glDrawArrays(5,0,uVar5);
  return;
}



############ FUN_ 181a05850 size=70 ############

float FUN_181a05850(longlong param_1,undefined4 *param_2)

{
  float fVar1;
  
  fVar1 = (float)FUN_180487300(*(undefined8 *)(param_1 + 0x1c8),*param_2);
  return (float)((double)*(int *)(param_1 + 0x16c) * (DAT_1824c4140 - (double)fVar1));
}



############ FUN_ 181a06340 size=1337 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181a06340(longlong param_1,char param_2)

{
  float fVar1;
  float fVar2;
  longlong lVar3;
  float *pfVar4;
  float *pfVar5;
  longlong *plVar6;
  int *piVar7;
  float fVar8;
  ulonglong uVar9;
  float fVar10;
  double dVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  longlong lVar15;
  undefined1 (*pauVar16) [16];
  float *pfVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  double dVar21;
  undefined1 auVar22 [16];
  float fVar23;
  uint uVar24;
  undefined1 auStack_178 [32];
  undefined4 local_158;
  int local_148 [2];
  double local_140;
  float local_138 [2];
  float local_130 [2];
  float local_128;
  float fStack_124;
  float fStack_120;
  undefined4 uStack_11c;
  longlong local_118;
  undefined8 local_110;
  undefined **local_108;
  float local_100;
  float fStack_fc;
  float fStack_f8;
  undefined4 uStack_f4;
  longlong local_f0;
  undefined ***local_d0;
  ulonglong local_c8;
  undefined8 extraout_XMM0_Qb;
  
  local_110 = 0xfffffffffffffffe;
  local_c8 = DAT_182615970 ^ (ulonglong)auStack_178;
  lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x1b8) + 0x168);
  iVar12 = *(int *)(lVar3 + 100) / 2 + 1;
  fVar1 = *(float *)(lVar3 + 0x24);
  if (((param_2 != '\0') || (*(int *)(param_1 + 0x15c) != iVar12)) ||
     (*(float *)(param_1 + 0x160) != fVar1)) {
    *(int *)(param_1 + 0x15c) = iVar12;
    *(float *)(param_1 + 0x160) = fVar1;
    FUN_180534840(param_1 + 0xd0,0x2000);
    fVar10 = DAT_1824c3ea4;
    lVar3 = *(longlong *)(param_1 + 0xd0);
    pfVar17 = *(float **)(param_1 + 0x1c8);
    fVar1 = pfVar17[1];
    fVar2 = *pfVar17;
    fVar8 = *pfVar17;
    fVar19 = pfVar17[1];
    local_158 = 0x2000;
    FUN_180557920(lVar3,DAT_1824c3ea4);
    lVar15 = 0;
    do {
      fVar18 = *(float *)(lVar3 + lVar15 * 4);
      pfVar17 = *(float **)(param_1 + 0x1c8);
      fVar23 = *pfVar17;
      if ((*pfVar17 <= fVar18) && (fVar23 = pfVar17[1], fVar18 <= pfVar17[1])) {
        fVar23 = fVar18;
      }
      fVar18 = (float)FUN_180487300(pfVar17,fVar23);
      *(float *)(lVar3 + lVar15 * 4) = fVar10 - fVar18;
      fVar18 = DAT_1824c45c0;
      lVar15 = lVar15 + 1;
    } while (lVar15 < 0x2000);
    fStack_120 = DAT_1824c45c0 / (fVar1 - fVar2);
    local_108 = std::_Func_impl_no_alloc<<lambda_03f01822f76fc2673078ee71b606abaa>,float,float>::
                vftable;
    uStack_f4 = uStack_11c;
    local_d0 = &local_108;
    local_128 = fVar8;
    fStack_124 = fVar19;
    local_118 = lVar3;
    local_100 = fVar8;
    fStack_fc = fVar19;
    fStack_f8 = fStack_120;
    local_f0 = lVar3;
    (*(code *)
      PTR_vtbl___AV__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M___1824b0a58
    )(&local_108,0);
    iVar12 = *(int *)(param_1 + 0x28);
    FUN_18056cd00(param_1 + 0x110,0x400);
    pauVar16 = *(undefined1 (**) [16])(param_1 + 0x110);
    pfVar17 = *(float **)(param_1 + 0x1c0);
    logf(*pfVar17);
    logf(pfVar17[1]);
    iVar14 = 0;
    do {
      auVar22._0_8_ = FUN_181a10f40();
      auVar22._8_8_ = extraout_XMM0_Qb;
      *pauVar16 = auVar22;
      iVar14 = iVar14 + 4;
      pauVar16 = pauVar16 + 1;
    } while (iVar14 < 0x400);
    *(undefined8 *)(param_1 + 0x180) = *(undefined8 *)(param_1 + 0x178);
    *(undefined8 *)(param_1 + 0xe8) = *(undefined8 *)(param_1 + 0xe0);
    fVar8 = DAT_1824c4680;
    dVar11 = DAT_1824c4520;
    fVar2 = DAT_1824c41e0;
    fVar1 = DAT_1824c3d8c;
    iVar14 = -1;
    pfVar17 = *(float **)(param_1 + 0x110);
    pfVar4 = *(float **)(param_1 + 0x118);
    if (pfVar17 != pfVar4) {
      uVar24 = (uint)DAT_1824c4f10;
      uVar9 = (ulonglong)DAT_1824c4f10 >> 0x20;
      do {
        fVar19 = *pfVar17;
        lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x1b8) + 0x168);
        if (lVar3 == 0) {
          iVar13 = 0;
        }
        else {
          iVar13 = *(int *)(lVar3 + 100);
          if (iVar13 < 0) {
            iVar13 = iVar13 + 1;
          }
          local_140 = (double)((fVar19 / (*(float *)(lVar3 + 0x24) * fVar1)) *
                              (float)((iVar13 >> 1) + 1)) + dVar11;
          iVar13 = local_140._0_4_;
        }
        local_148[0] = iVar13;
        if ((iVar14 < iVar13) && (iVar13 < *(int *)(param_1 + 0x15c))) {
          pfVar5 = *(float **)(param_1 + 0x1c0);
          fVar23 = pfVar5[1];
          fVar20 = fVar10;
          if (*(longlong *)(pfVar5 + 0x24) == 0) {
            fVar19 = (fVar19 - *pfVar5) / (fVar23 - *pfVar5);
            if (0.0 <= fVar19) {
              if (fVar19 <= fVar10) {
                fVar20 = fVar19;
              }
            }
            else {
              fVar20 = 0.0;
            }
            fVar19 = pfVar5[3];
            if (fVar19 != fVar10) {
              if (*(char *)(pfVar5 + 4) == '\0') {
                fVar20 = powf(fVar20,fVar19);
              }
              else {
                fVar20 = fVar20 * fVar2 - fVar10;
                fVar23 = fVar10;
                if (fVar20 < 0.0) {
                  fVar23 = fVar8;
                }
                dVar21 = (double)fVar20;
                fVar19 = powf((float)(double)CONCAT44((uint)((ulonglong)dVar21 >> 0x20) &
                                                      (uint)uVar9,SUB84(dVar21,0) & uVar24),fVar19);
                fVar20 = (fVar23 * fVar19 + fVar10) * fVar1;
              }
            }
          }
          else {
            local_140 = (double)CONCAT44(local_140._4_4_,*pfVar5);
            plVar6 = *(longlong **)(pfVar5 + 0x24);
            local_138[0] = fVar19;
            local_130[0] = fVar23;
            if (plVar6 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
              std::_Xbad_function_call();
            }
            fVar19 = (float)(**(code **)(*plVar6 + 0x10))(plVar6,&local_140,local_130,local_138);
            if (0.0 <= fVar19) {
              if (fVar19 <= fVar10) {
                fVar20 = fVar19;
              }
            }
            else {
              fVar20 = 0.0;
            }
          }
          fVar20 = (float)iVar12 * fVar20;
          local_140 = (double)CONCAT44(local_140._4_4_,fVar20);
          pfVar5 = *(float **)(param_1 + 0x180);
          if (*(float **)(param_1 + 0x188) == pfVar5) {
            FUN_18056cef0((undefined8 *)(param_1 + 0x178),pfVar5,&local_140);
          }
          else {
            *pfVar5 = fVar20;
            *(longlong *)(param_1 + 0x180) = *(longlong *)(param_1 + 0x180) + 4;
          }
          piVar7 = *(int **)(param_1 + 0xe8);
          if (*(int **)(param_1 + 0xf0) == piVar7) {
            FUN_18057b9e0((undefined8 *)(param_1 + 0xe0),piVar7,local_148);
            iVar14 = local_148[0];
          }
          else {
            *piVar7 = iVar13;
            *(longlong *)(param_1 + 0xe8) = *(longlong *)(param_1 + 0xe8) + 4;
            iVar14 = iVar13;
          }
        }
        pfVar17 = pfVar17 + 1;
      } while (pfVar17 != pfVar4);
    }
    local_118 = *(undefined8 *)(param_1 + 0xd0);
    pfVar17 = *(float **)(param_1 + 0x1c8);
    local_100 = *pfVar17;
    fStack_fc = pfVar17[1];
    fStack_f8 = fVar18 / (pfVar17[1] - *pfVar17);
    local_108 = std::_Func_impl_no_alloc<<lambda_03f01822f76fc2673078ee71b606abaa>,float,float>::
                vftable;
    uStack_f4 = uStack_11c;
    local_d0 = &local_108;
    local_f0 = local_118;
    FUN_18058fc00(param_1 + 0x1e8,&local_108);
    if (local_d0 != (undefined ***)0x0) {
      (*(code *)(*local_d0)[4])
                (local_d0,CONCAT71((int7)((ulonglong)&local_108 >> 8),local_d0 != &local_108));
    }
  }
}



############ FUN_ 181a06940 size=104 ############

void FUN_181a06940(longlong param_1)

{
  float fVar1;
  
  *(undefined4 *)(param_1 + 0x168) = *(undefined4 *)(param_1 + 0x28);
  *(undefined4 *)(param_1 + 0x16c) = *(undefined4 *)(param_1 + 0x2c);
  fVar1 = (float)FUN_180487300(*(undefined8 *)(param_1 + 0x1c8),0);
  *(float *)(param_1 + 0x170) =
       (float)((DAT_1824c4140 - (double)fVar1) * (double)*(int *)(param_1 + 0x16c));
  FUN_181a06340(param_1,1);
  return;
}



############ FUN_ 1811b9cc0 size=34 ############

void FUN_1811b9cc0(longlong param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_1811b8610();
  FUN_180487300(param_1 + 0xb0,uVar1);
  return;
}



############ FUN_ 1812c3200 size=69 ############

void FUN_1812c3200(longlong *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  uVar1 = (**(code **)(*param_1 + 0x88))();
  uVar2 = FUN_180487220(uVar1,param_2,param_3,param_4,uVar3);
  FUN_180487300(uVar1,uVar2);
  return;
}



############ FUN_ 180ac3340 size=850 ############

/* WARNING: Removing unreachable block (ram,0x000180ac346e) */
/* WARNING: Removing unreachable block (ram,0x000180ac340f) */
/* WARNING: Removing unreachable block (ram,0x000180ac3454) */
/* WARNING: Removing unreachable block (ram,0x000180ac348d) */

void FUN_180ac3340(undefined8 param_1,undefined8 param_2,undefined1 param_3)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  undefined *puVar4;
  int iVar5;
  undefined8 uVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_e8 [32];
  undefined1 local_c8;
  undefined *local_c0;
  undefined8 local_b8;
  uint local_b0;
  undefined *local_a8;
  uint local_9c;
  undefined4 local_98;
  code *local_90;
  undefined8 local_88;
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  uVar3 = (uint)&stack0x00000000 & 0x17f;
  iVar5 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  local_9c = 0xdf14 << ((byte)(((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) & 0x1f) ^
             0xd944;
  local_98 = 800;
  do {
    uVar6 = rdtsc();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ((uint)uVar6 ^ (uint)((ulonglong)uVar6 >> 0x20)) * -0x50283b32;
  local_b0 = (uVar3 >> 0x18 ^ uVar3) * 0x1a85ca6b;
  local_c8 = param_3;
  local_70 = param_1;
  local_68 = param_2;
  if (local_b0 < 0x3333333f) {
    do {
      local_90 = FUN_1813f2240;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar2 = FUN_1813f2240(0,0x1f37);
    if (1 < uVar2) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  local_88 = 0;
  uVar6 = 0x2610;
  local_a8 = &DAT_180acd758;
  local_b8 = 0x2610;
  puVar4 = &DAT_180acfd68;
  local_c0 = puVar4;
  FUN_180ac36be();
                    /* WARNING: Call to offcut address within same function */
  iVar5 = func_0x000180ac36a1();
  *(undefined4 *)(puVar4 + 0x4d584142) = 0x80000000;
  FUN_180ac36bf(iVar5 + 0x156,uVar6);
  return;
}



############ FUN_ 1808c2da0 size=1667 ############

/* WARNING: Instruction at (ram,0x0001808c2ff7) overlaps instruction at (ram,0x0001808c2ff6)
    */
/* WARNING: Removing unreachable block (ram,0x0001808c31d0) */
/* WARNING: Removing unreachable block (ram,0x0001808c2fdf) */
/* WARNING: Removing unreachable block (ram,0x0001808c2ff1) */
/* WARNING: Removing unreachable block (ram,0x0001808c3175) */
/* WARNING: Removing unreachable block (ram,0x0001808c31f2) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_1808c2da0(undefined8 param_1,int *param_2)

{
  undefined8 uVar1;
  bool bVar2;
  byte bVar3;
  undefined *puVar4;
  uint uVar5;
  ulonglong uVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  uint uVar11;
  IMAGE_DOS_HEADER *pIVar12;
  IMAGE_DOS_HEADER *pIVar13;
  longlong *plVar14;
  undefined4 *puVar15;
  uint *puVar16;
  uint uVar17;
  uint uVar18;
  uint unaff_R12D;
  undefined4 *puVar19;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_d8 [32];
  uint local_b8 [2];
  undefined *local_b0;
  undefined *local_a8;
  uint local_a0;
  undefined *local_98;
  uint local_90;
  uint local_8c;
  int local_88;
  code *local_80;
  int *local_78;
  undefined8 local_70;
  undefined4 local_50 [4];
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_d8;
  uVar11 = unaff_R12D & 0xffffff00;
  local_88 = 1;
  do {
    uVar1 = rdtsc();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x46017333;
  bVar2 = false;
  local_a0 = (uVar7 >> 0x18 ^ uVar7) * -0x3d4da42f;
  local_90 = uVar11;
  local_78 = param_2;
  local_70 = param_1;
  if (local_a0 < 0x3333333f) {
    do {
      local_80 = FUN_1813f2240;
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar6 = FUN_1813f2240(0,0x6c7f);
    if (1 < uVar6) {
      lVar10 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar14 = (longlong *)register0x00000020;
      while (lVar10 != -0x3333333333333334) {
        *plVar14 = 0;
        plVar14 = plVar14 + 8;
        lVar10 = *plVar14;
      }
    }
  }
  local_b8[0] = 0x811c9ddb;
  pIVar12 = &IMAGE_DOS_HEADER_180000000;
  local_98 = (undefined *)0x0;
  local_b0 = &DAT_1808f04ac;
  local_a8 = &DAT_1808f36a8;
  pIVar13 = pIVar12;
  do {
    FUN_1808c1278(0x6224,pIVar13);
    puVar4 = local_b0;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_98 = local_a8;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_b0 = (undefined *)0x322b50da4d0206ed;
                    /* WARNING: Ignoring partial resolution of indirect */
  local_b0._0_4_ = 0x4d0206ed;
  local_90 = uVar11;
  do {
    if (bVar2) break;
    local_90 = local_90 & 0xff;
    if (local_88 == *param_2) {
      local_90 = 1;
    }
    bVar2 = true;
  } while ((char)local_90 == '\0');
  iVar8 = (local_b8[0] & 0x8ff) * (local_b8[0] & 0x8ff) + 1;
  uVar11 = (iVar8 >> 4) + (iVar8 >> 1) + iVar8 * 0x24924924 >> 0x1d;
  uVar7 = (uint)local_a8;
  if (((int)(uVar11 - 7) >> 0x1f & uVar11 & 0x7c0) == 0) {
    uVar11 = (uint)puVar4 & 0x1f | 0xf;
    uVar5 = uVar7 & 0x7f | 0x58;
    uVar11 = uVar11 * uVar11 * 0xeee1 ^ uVar5 * uVar5 * 0xdf87;
  }
  else {
    uVar11 = ((uVar7 & 0xfff) * (uVar7 & 0xfff) * 0x10 + 4) % 0x13;
  }
  uVar5 = local_b8[0] & 0x3f | 0x6d;
  uVar9 = local_b8[0] & 0xf | 7;
  puVar15 = (undefined4 *)
            (puVar4 + (0xc - (longlong)
                             (int)(62999 - (uVar5 * uVar5 * 0x4cd == uVar9 * uVar9 * 0x708d) ^
                                  ((int)(-uVar11 | uVar11) >> 0x1f) * -0xf607)));
LAB_1808c3150:
  if (((uint)puVar15 >> 0xc & 1) == 0) {
    uVar11 = (uint)local_98 & 0x17f;
    iVar8 = (uVar11 + 2) * (uVar11 + 1) * uVar11;
    uVar11 = ((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e;
  }
  else {
    uVar11 = local_b8[0] & 0x6f;
    uVar11 = (uVar11 + 1) * (uVar11 + 1) * uVar11 * uVar11 & 0x80000003;
  }
  if (((ulonglong)puVar15 & 4) == 0) {
    bVar3 = (byte)puVar15 & 0x3f;
    bVar3 = bVar3 * bVar3 * (bVar3 + 1) * (bVar3 + 1);
  }
  else {
    bVar3 = (byte)local_b8[0] & 0x3f;
    bVar3 = bVar3 * bVar3 * (bVar3 + 1) * (bVar3 + 1);
  }
  puVar15 = (undefined4 *)
            ((longlong)puVar15 +
            ((0x5a11L >> (bVar3 & 3) ^ 0x5915U) - ((longlong)(int)(uVar11 + 0x8427) ^ 0x8727U)));
  uVar11 = local_b8[0] & 0x17f;
  uVar5 = (uint)puVar15;
  uVar18 = ((uVar5 & 0x7ff) - 1) * (uVar5 & 0x7ff) - 1 & 1;
  uVar17 = (((local_b8[0] & 0x2ff) - 1) * (local_b8[0] & 0x2ff) - 1 & 1) -
           ((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3;
  uVar9 = (((local_b8[0] & 0x6ff) + 1) * (local_b8[0] & 0x6ff) + 7) % 0x51;
  uVar11 = (-((int)(-uVar18 | uVar18) >> 0x1f) * (uVar5 ^ 0x1000 | 0xe9f1) & (uVar5 ^ 0xb130)) -
           (uVar7 ^ 0xb130);
  if (uVar11 == ((int)(-uVar17 | uVar17) >> 0x1f) - ((int)(-uVar9 | uVar9) >> 0x1f)) {
    local_8c = local_b8[0];
                    /* WARNING: Call to offcut address within same function */
    func_0x0001808c345d(&local_8c,(-(ulonglong)uVar11 ^ 0xffffffffffffffff) + 1);
    return;
  }
  puVar19 = puVar15;
  if ((pIVar12 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar10._0_1_ = pIVar12->e_magic[0], lVar10._1_1_ = pIVar12->e_magic[1],
     lVar10._2_2_ = pIVar12->e_cblp, lVar10._4_2_ = pIVar12->e_cp, lVar10._6_2_ = pIVar12->e_crlc,
     -1 < lVar10)) {
    local_a8 = (undefined *)0x2621fc0;
    do {
      if (puVar15 < IMAGE_DOS_HEADER_180000000.e_magic + lVar10 + 8) {
        if (-1 < lVar10) {
          plVar14 = (longlong *)(lVar10 + 0x180000000);
          if (plVar14 < puVar15 + 1) {
            local_50[0] = *puVar15;
            pIVar13 = pIVar12;
            goto LAB_1808c3370;
          }
        }
        break;
      }
      lVar10._0_2_ = pIVar12->e_cparhdr;
      lVar10._2_2_ = pIVar12->e_minalloc;
      lVar10._4_2_ = pIVar12->e_maxalloc;
      lVar10._6_2_ = pIVar12->e_ss;
      pIVar12 = (IMAGE_DOS_HEADER *)&pIVar12->e_cparhdr;
    } while (-1 < lVar10);
  }
  goto LAB_1808c33a0;
  while (plVar14 = (longlong *)(lVar10 + 0x180000000), plVar14 < puVar15 + 1) {
LAB_1808c3370:
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    *(longlong *)(&stack0x00017fffffb0 + (lVar10 - (longlong)puVar15)) = *plVar14 + -0x180000000;
    lVar10 = *(longlong *)pIVar13;
    puVar19 = local_50;
    if (lVar10 < 0) break;
  }
LAB_1808c33a0:
  do {
    puVar16 = local_b8;
    uVar11 = FUN_1808c634a(0x6224,(undefined *)((longlong)puVar19 + 0x3c3f003d),0);
    *puVar16 = uVar11;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001808c2ec1();
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  local_b8[0] = local_b8[0] * 0x1000193;
  goto LAB_1808c3150;
}



############ FUN_ 180942e80 size=2675 ############

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

void FUN_180942e80(void)

{
  longlong *plVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  int iVar22;
  int iVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  longlong lVar32;
  undefined8 uVar33;
  ulonglong uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  uint uVar39;
  int *unaff_RBX;
  longlong unaff_RBP;
  longlong *unaff_RSI;
  uint unaff_EDI;
  longlong unaff_R13;
  longlong unaff_R14;
  longlong unaff_R15;
  
  uVar35 = (*unaff_RBX + 1) * *unaff_RBX & 0x80000001;
  if ((int)uVar35 < 0) {
    uVar35 = (uVar35 - 1 | 0xfffffffe) + 1;
  }
  if (uVar35 != 0) {
    FUN_1809438db(0x7114);
    FUN_180942e80();
    return;
  }
  (**(code **)(*unaff_RSI + 0xc0))();
  uVar35 = *(uint *)(unaff_R14 + 4 + unaff_R13);
  uVar2 = *(uint *)(unaff_R14 + 8 + unaff_R13);
  uVar3 = *(uint *)(unaff_R14 + 0xc + unaff_R13);
  uVar4 = *(uint *)(unaff_R14 + 0x10 + unaff_R13);
  uVar5 = *(uint *)(unaff_R14 + 0x14 + unaff_R13);
  uVar6 = *(uint *)(unaff_R14 + 0x18 + unaff_R13);
  uVar7 = *(uint *)(unaff_R14 + 0x1c + unaff_R13);
  uVar8 = *(uint *)(unaff_R14 + 0x20 + unaff_R13);
  uVar9 = *(uint *)(unaff_R14 + 0x24 + unaff_R13);
  uVar10 = *(uint *)(unaff_R14 + 0x28 + unaff_R13);
  uVar11 = *(uint *)(unaff_R14 + 0x2c + unaff_R13);
  uVar12 = *(uint *)(unaff_R14 + 0x30 + unaff_R13);
  uVar13 = *(uint *)(unaff_R14 + 0x34 + unaff_R13);
  uVar14 = *(uint *)(unaff_R14 + 0x38 + unaff_R13);
  uVar15 = *(uint *)(unaff_R14 + 0x3c + unaff_R13);
  uVar16 = *(uint *)(unaff_R14 + 0x40 + unaff_R13);
  uVar17 = *(uint *)(unaff_R14 + 0x44 + unaff_R13);
  uVar18 = *(uint *)(unaff_R14 + 0x48 + unaff_R13);
  uVar19 = *(uint *)(unaff_R14 + 0x4c + unaff_R13);
  uVar20 = *(uint *)(unaff_R14 + 0x50 + unaff_R13);
  uVar21 = *(uint *)(unaff_R14 + 0x54 + unaff_R13);
  do {
    uVar33 = rdtsc();
    *(uint *)(unaff_RBP + -0x55) = (uint)uVar33 ^ (uint)((ulonglong)uVar33 >> 0x20);
    uVar36 = (*(int *)(unaff_RBP + 0x5f) + 1) * *(int *)(unaff_RBP + 0x5f) & 0x80000001;
    if ((int)uVar36 < 0) {
      uVar36 = (uVar36 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar36 != 0);
  uVar36 = *(int *)(unaff_RBP + -0x55) * -0x3d4d00af;
  uVar36 = (uVar36 >> 0x18 ^ uVar36) * -0x733200af;
  *(uint *)(unaff_RBP + -0x55) = uVar36;
  if (uVar36 < 0x2061237) {
    *(undefined8 *)(unaff_RBP + -0x29) = 0;
    do {
      *(undefined8 *)(unaff_RBP + -0x29) = FUN_1813f2240;
      func_0x000180941958((undefined8 *)(unaff_RBP + -0x29),0xb34);
      uVar36 = (*(int *)(unaff_RBP + 0x5f) + 1) * *(int *)(unaff_RBP + 0x5f) & 0x80000001;
      if ((int)uVar36 < 0) {
        uVar36 = (uVar36 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar36 != 0);
    uVar34 = (**(code **)(unaff_RBP + -0x29))();
    if (1 < uVar34) {
      plVar1 = (longlong *)(unaff_RBP + 0x5f);
      lVar32 = *plVar1;
      while (lVar32 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar32 = *plVar1;
      }
    }
  }
  *(undefined8 *)(unaff_RBP + -0x51) = 0xdbcf46a282f26230;
  *(int *)(unaff_RBP + -0x41) = (int)*(undefined8 *)(unaff_RBP + -0x51);
  uVar36 = *(uint *)(unaff_R14 + 0x58 + unaff_R13);
  do {
    FUN_180944a7c(0x7114);
    uVar37 = (*(int *)(unaff_RBP + 0x5f) + 1) * *(int *)(unaff_RBP + 0x5f) & 0x80000001;
    if ((int)uVar37 < 0) {
      uVar37 = (uVar37 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar37 != 0);
  *(uint *)(unaff_RBP + -0x55) =
       (*(uint *)(unaff_R14 + 0x7c + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x78 + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x74 + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x70 + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x6c + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x68 + unaff_R13) ^
       (*(uint *)(unaff_R14 + 100 + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x60 + unaff_R13) ^
       (*(uint *)(unaff_R14 + 0x5c + unaff_R13) ^
       (uVar36 ^ (((((((((((((((((((((uVar35 ^ unaff_EDI) * 0x1000181 ^ uVar2) * 0x1000181 ^ uVar3)
                                   * 0x1000181 ^ uVar4) * 0x1000181 ^ uVar5) * 0x1000181 ^ uVar6) *
                                0x1000181 ^ uVar7) * 0x1000181 ^ uVar8) * 0x1000181 ^ uVar9) *
                             0x1000181 ^ uVar10) * 0x1000181 ^ uVar11) * 0x1000181 ^ uVar12) *
                          0x1000181 ^ uVar13) * 0x1000181 ^ uVar14) * 0x1000181 ^ uVar15) *
                       0x1000181 ^ uVar16) * 0x1000181 ^ uVar17) * 0x1000181 ^ uVar18) * 0x1000181 ^
                   uVar19) * 0x1000181 ^ uVar20) * 0x1000181 ^ uVar21) * 0x1000181) * 0x1000181) *
       0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
       0x1000181) * 0x1000181;
  (**(code **)(*unaff_RSI + 0xd0))();
  iVar22 = *(int *)(unaff_RBP + -0x35);
  iVar23 = *(int *)(unaff_RBP + -0x49);
  if (iVar22 != 0) {
    do {
      switch(*(undefined2 *)(unaff_RBP + -0x59)) {
      case 1:
        if (iVar22 != 8) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x128))();
        *(undefined1 *)(unaff_R15 + 0x418) = 1;
        break;
      case 2:
        if (iVar22 != 8) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x128))();
        *(undefined1 *)(unaff_R15 + 0x419) = 1;
        break;
      case 3:
        if (iVar22 != 8) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x128))();
        *(undefined1 *)(unaff_R15 + 0x41a) = 1;
        break;
      case 4:
        if (iVar22 != 8) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x128))();
        *(undefined1 *)(unaff_R15 + 0x41b) = 1;
        break;
      case 5:
        if (iVar22 != 0xf) goto LAB_18094360a;
        *(undefined8 *)(unaff_R15 + 0x20) = *(undefined8 *)(unaff_R15 + 0x18);
        (**(code **)(*unaff_RSI + 0xf0))();
        FUN_1805b1330(unaff_R15 + 0x18,*(undefined4 *)(unaff_RBP + -0x39),unaff_R15 + 0x18);
        uVar35 = 0;
        if (*(int *)(unaff_RBP + -0x39) != 0) {
          do {
            (**(code **)(*unaff_RSI + 0x118))();
            uVar35 = uVar35 + 1;
          } while (uVar35 < *(uint *)(unaff_RBP + -0x39));
        }
        (**(code **)(*unaff_RSI + 0xf8))();
        *(undefined1 *)(unaff_R15 + 0x41c) = 1;
        break;
      default:
switchD_18094320c_caseD_6:
LAB_18094360a:
        FUN_1806d8eb0();
        break;
      case 10:
        if (iVar22 != 10) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x130))();
        *(undefined1 *)(unaff_R15 + 0x41d) = 1;
        break;
      case 0xb:
        if (iVar22 != 10) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x130))();
        *(undefined1 *)(unaff_R15 + 0x41e) = 1;
        break;
      case 0xc:
        if (iVar22 != 10) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x130))();
        *(undefined1 *)(unaff_R15 + 0x41f) = 1;
        break;
      case 0xd:
        if (iVar22 != 10) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x130))();
        *(undefined1 *)(unaff_R15 + 0x420) = 1;
        break;
      case 0xe:
        if (iVar22 != 8) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x128))();
        *(undefined1 *)(unaff_R15 + 0x421) = 1;
        break;
      case 0xf:
        if (iVar22 != 8) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x128))();
        *(undefined1 *)(unaff_R15 + 0x422) = 1;
        break;
      case 0x14:
        if (iVar22 != 2) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x110))();
        *(undefined1 *)(unaff_R15 + 0x423) = 1;
        break;
      case 0x15:
        if (iVar22 != 2) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x110))();
        *(undefined1 *)(unaff_R15 + 0x424) = 1;
        break;
      case 0x16:
        if (iVar22 != 0xc) goto switchD_18094320c_caseD_6;
        FUN_18094f6f0(unaff_R15 + 0x60);
        *(undefined1 *)(unaff_R15 + 0x425) = 1;
        break;
      case 0x17:
        if (iVar22 != 0xc) goto switchD_18094320c_caseD_6;
        FUN_180945070(unaff_R15 + 0x108);
        *(undefined1 *)(unaff_R15 + 0x426) = 1;
        break;
      case 0x18:
        if (iVar22 != 0xc) goto switchD_18094320c_caseD_6;
        FUN_18094f6f0(unaff_R15 + 0x168);
        *(undefined1 *)(unaff_R15 + 0x427) = 1;
        break;
      case 0x1e:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x428) = 1;
        break;
      case 0x1f:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x429) = 1;
        break;
      case 0x20:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x42a) = 1;
        break;
      case 0x21:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x42b) = 1;
        break;
      case 0x22:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x42c) = 1;
        break;
      case 0x23:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x42d) = 1;
        break;
      case 0x24:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x42e) = 1;
        break;
      case 0x28:
        if (iVar22 != 0xc) goto switchD_18094320c_caseD_6;
        FUN_1809404a0(unaff_R15 + 0x2f0);
        *(undefined1 *)(unaff_R15 + 0x42f) = 1;
        break;
      case 0x29:
        if (iVar22 != 0xb) goto LAB_18094360a;
        (**(code **)(*unaff_RSI + 0x140))();
        *(undefined1 *)(unaff_R15 + 0x430) = 1;
      }
      (**(code **)(*unaff_RSI + 0xd8))();
      (**(code **)(*unaff_RSI + 0xd0))();
      iVar22 = *(int *)(unaff_RBP + -0x35);
    } while (iVar22 != 0);
    unaff_R13 = *(longlong *)(unaff_RBP + -0x19);
  }
  uVar39 = (*(uint *)(unaff_R14 + 0x80 + unaff_R13) ^ *(uint *)(unaff_RBP + -0x55)) * 0x1000181;
  uVar34 = (ulonglong)uVar39;
  uVar35 = *(uint *)(unaff_R14 + 0x84 + unaff_R13);
  (**(code **)(*unaff_RSI + 200))();
  uVar2 = *(uint *)(unaff_R14 + 0x88 + unaff_R13);
  uVar3 = *(uint *)(unaff_R14 + 0x8c + unaff_R13);
  uVar4 = *(uint *)(unaff_R14 + 0x90 + unaff_R13);
  uVar5 = *(uint *)(unaff_R14 + 0x94 + unaff_R13);
  uVar6 = *(uint *)(unaff_R14 + 0x98 + unaff_R13);
  uVar7 = *(uint *)(unaff_R14 + 0x9c + unaff_R13);
  uVar8 = *(uint *)(unaff_R14 + 0xa0 + unaff_R13);
  uVar9 = *(uint *)(unaff_R14 + 0xa4 + unaff_R13);
  uVar10 = *(uint *)(unaff_R14 + 0xa8 + unaff_R13);
  uVar11 = *(uint *)(unaff_R14 + 0xac + unaff_R13);
  uVar12 = *(uint *)(unaff_R14 + 0xb0 + unaff_R13);
  uVar13 = *(uint *)(unaff_R14 + 0xb4 + unaff_R13);
  uVar14 = *(uint *)(unaff_R14 + 0xb8 + unaff_R13);
  uVar15 = *(uint *)(unaff_R14 + 0xbc + unaff_R13);
  uVar16 = *(uint *)(unaff_R14 + 0xc0 + unaff_R13);
  uVar17 = *(uint *)(unaff_R14 + 0xc4 + unaff_R13);
  uVar18 = *(uint *)(unaff_R14 + 200 + unaff_R13);
  uVar19 = *(uint *)(unaff_R14 + 0xcc + unaff_R13);
  uVar20 = *(uint *)(unaff_R14 + 0xd0 + unaff_R13);
  uVar21 = *(uint *)(unaff_R14 + 0xd4 + unaff_R13);
  uVar36 = *(uint *)(unaff_R14 + 0xd8 + unaff_R13);
  uVar37 = *(uint *)(unaff_R14 + 0xdc + unaff_R13);
  uVar24 = *(uint *)(unaff_R14 + 0xe0 + unaff_R13);
  uVar25 = *(uint *)(unaff_R14 + 0xe4 + unaff_R13);
  uVar26 = *(uint *)(unaff_R14 + 0xe8 + unaff_R13);
  uVar27 = *(uint *)(unaff_R14 + 0xec + unaff_R13);
  uVar28 = *(uint *)(unaff_R14 + 0xf0 + unaff_R13);
  uVar29 = *(uint *)(unaff_R14 + 0xf4 + unaff_R13);
  uVar30 = *(uint *)(unaff_R14 + 0xf8 + unaff_R13);
  uVar31 = *(uint *)(unaff_R14 + 0xfc + unaff_R13);
  do {
    FUN_180942b28(0x7114);
    uVar38 = (*(int *)(unaff_RBP + 0x5f) + 1) * *(int *)(unaff_RBP + 0x5f) & 0x80000001;
    if ((int)uVar38 < 0) {
      uVar38 = (uVar38 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar38 != 0);
  uVar35 = (uVar31 ^ (((((((((((((((((((((((((((((uVar2 ^ (uVar35 ^ uVar39) * 0x1000181) * 0x1000181
                                                ^ uVar3) * 0x1000181 ^ uVar4) * 0x1000181 ^ uVar5) *
                                              0x1000181 ^ uVar6) * 0x1000181 ^ uVar7) * 0x1000181 ^
                                           uVar8) * 0x1000181 ^ uVar9) * 0x1000181 ^ uVar10) *
                                         0x1000181 ^ uVar11) * 0x1000181 ^ uVar12) * 0x1000181 ^
                                      uVar13) * 0x1000181 ^ uVar14) * 0x1000181 ^ uVar15) *
                                    0x1000181 ^ uVar16) * 0x1000181 ^ uVar17) * 0x1000181 ^ uVar18)
                                 * 0x1000181 ^ uVar19) * 0x1000181 ^ uVar20) * 0x1000181 ^ uVar21) *
                              0x1000181 ^ uVar36) * 0x1000181 ^ uVar37) * 0x1000181 ^ uVar24) *
                           0x1000181 ^ uVar25) * 0x1000181 ^ uVar26) * 0x1000181 ^ uVar27) *
                        0x1000181 ^ uVar28) * 0x1000181 ^ uVar29) * 0x1000181 ^ uVar30) * 0x1000181)
           * 0x1000181 ^ 0x7a742fca;
  uVar35 = ~((uVar35 << 0x1c | uVar35 >> 4) + 0xe6487921) ^ 0xd676aace;
  if ((uVar35 << 4 | uVar35 >> 0x1c) == *(uint *)(unaff_RBP + -0x41)) {
    thunk_FUN_1805a9280((longlong)*(int *)(unaff_RBP + -0x31),
                        ~((uVar34 ^ 0xffffffffffffffff) + 1) + 1);
    return;
  }
  FUN_1809438dc((longlong)iVar23);
  return;
}



############ FUN_ 1807115d0 size=1993 ############

/* WARNING: Instruction at (ram,0x0001807119ea) overlaps instruction at (ram,0x0001807119e8)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018071183e) */
/* WARNING: Removing unreachable block (ram,0x000180711a79) */
/* WARNING: Removing unreachable block (ram,0x000180711a80) */

longlong FUN_1807115d0(undefined4 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  code *pcVar1;
  uint uVar2;
  int iVar3;
  ulonglong uVar4;
  longlong lVar5;
  uint uVar6;
  ulonglong uVar7;
  uint *puVar8;
  IMAGE_DOS_HEADER *pIVar9;
  longlong *plVar10;
  int *piVar11;
  longlong *plVar12;
  longlong *plVar13;
  longlong *plVar14;
  int *piVar15;
  int *piVar16;
  uint uVar17;
  byte bVar18;
  IMAGE_DOS_HEADER *pIVar19;
  uint uVar20;
  char cVar21;
  uint uVar22;
  undefined8 uVar23;
  uint uVar24;
  ulonglong uVar25;
  bool bVar26;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  longlong local_120;
  undefined1 local_118 [32];
  undefined4 local_f8;
  undefined8 local_f0;
  undefined8 local_e0;
  undefined8 local_d8;
  undefined8 local_d0;
  undefined4 local_c8;
  undefined4 local_c4;
  code *local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  int local_98 [20];
  ulonglong local_48;
  
  plVar12 = (longlong *)local_118;
  local_48 = DAT_182615970 ^ (ulonglong)local_118;
  pIVar9 = &IMAGE_DOS_HEADER_180000000;
  local_d0 = 0;
  local_e0 = 0xffe0;
  local_d8 = 0x180060f40;
  local_f0 = 0x180070f20;
  uVar23 = 0xffe0;
  local_c8 = param_4;
  local_c4 = param_1;
  local_b8 = uVar23;
  local_b0 = param_3;
  local_a8 = param_2;
  do {
    FUN_180710aaf(0xca30);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_d0 = 0xc05aad58b54436f8;
  uVar2 = 0;
  local_f0 = CONCAT44(local_f0._4_4_,0xb54436f8);
  local_f8 = 0;
  uVar6 = 0x1d747f4;
  local_e0 = CONCAT44(local_e0._4_4_,0x1d747f4);
  piVar11 = (int *)0x180060f3c;
  uVar7 = 0xfffffffffffffffc;
LAB_180711800:
  uVar25 = uVar7 + 4;
  piVar16 = piVar11 + 1;
  uVar24 = (uint)uVar25;
  if ((uVar25 & 0xc00) == 0) {
    uVar20 = ((uint)uVar23 ^ 0x4622 | 0x295d) - (0 >> ((byte)uVar2 & 0x1f));
  }
  else {
    uVar20 = (uint)uVar23 ^ 0x4622 | 0x295d;
  }
  if ((uVar25 & 0xa0) == 0) {
    uVar17 = uVar2 & 0x3f;
    iVar3 = (uVar17 + 2) * (uVar17 + 1) * uVar17;
    bVar18 = (byte)(((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e);
  }
  else {
    bVar18 = (byte)uVar2 & 0x3f;
    bVar18 = (bVar18 + 1) * (bVar18 + 1) * bVar18 * bVar18 & 3;
  }
  uVar22 = uVar2 & 0x1f | 0x3e;
  uVar17 = uVar2 & 0x7f | 0x65;
  uVar22 = uVar22 * uVar22;
  uVar4 = (ulonglong)uVar22;
  uVar2 = uVar24 & 0xf | 0x20;
  uVar6 = (uint)(uVar2 * uVar2 * 0x9037 == uVar22 * 0xb03f) + (uVar17 * uVar17 * 0x8a5 ^ uVar6);
  if ((uVar20 & 0xb18a) ==
      (((int)(-uVar6 | uVar6) >> 0x1f) * -0x7ec8 ^ uVar24 ^ 0x30a2 |
      (int)((uVar24 ^ 0xffffffea) & 0xc3f) >> (bVar18 & 0x1f))) {
    do {
      puVar8 = (uint *)(plVar12 + 6);
      plVar12[-1] = 0x180711abf;
      FUN_180713ae9(puVar8,plVar12 + 6);
      bVar18 = (byte)uVar4;
      uVar23 = rdtsc();
      *puVar8 = (uint)uVar23 ^ (uint)((ulonglong)uVar23 >> 0x20);
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar6 = ((uint)((int)plVar12[6] * 0x5bd1afd7) >> 0x18 ^ (int)plVar12[6] * 0x5bd1afd7) *
            -0x13ac3595;
    *(uint *)(plVar12 + 6) = uVar6;
    if (uVar6 < 0x7fffffff) {
      do {
        local_c0 = FUN_1813f2240;
        plVar12[-1] = 0x180711b61;
        FUN_180711487(&local_c0,0xbfb);
        pcVar1 = local_c0;
        bVar18 = (byte)uVar4;
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      plVar12[-1] = 0x180711b7f;
      uVar4 = (*pcVar1)();
      if (1 < uVar4) {
        lVar5 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
        while (lVar5 != -0x3333333333333334) {
          *(longlong *)register0x00000020 = 0;
          register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
          lVar5 = *(longlong *)register0x00000020;
        }
      }
    }
    plVar12[-1] = 0x180711bb5;
    FUN_180711487();
    plVar12[-1] = (longlong)piVar16;
    plVar12[-2] = uVar25;
    cVar21 = ~(~bVar18 + 1) + 1;
                    /* WARNING: Call to offcut address within same function */
    plVar12[-3] = 0x180711be1;
    lVar5 = func_0x000180711c00();
    LOCK();
    cRam000000000000004c = cVar21;
    UNLOCK();
    plVar12[-3] = uVar7 + 0x228;
    plVar12[-4] = (longlong)piVar11 + -0x16b36;
    plVar12[-5] = (longlong)piVar11 + 0x383db;
    plVar12[-6] = (longlong)piVar11 + 0x20c2f;
    plVar12[-7] = (longlong)piVar11 + -0x73fb1;
    plVar12[-8] = (longlong)piVar11 + 0x34cd7;
    plVar12[-9] = (longlong)piVar11 + -0x3fe6d;
    plVar12[-10] = (longlong)(piVar11 + 0x19df6);
    plVar12[-0xb] = (longlong)piVar11 + 0x54e92;
    plVar12[-0xc] = (longlong)piVar11 + -0x6e811;
    plVar12[-0xd] = (longlong)piVar11 + -0x4cd96;
    return (-lVar5 ^ 0xffffffffffffffffU) + 1;
  }
  piVar15 = piVar16;
  if ((pIVar9 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar5._0_1_ = pIVar9->e_magic[0], lVar5._1_1_ = pIVar9->e_magic[1],
     lVar5._2_2_ = pIVar9->e_cblp, lVar5._4_2_ = pIVar9->e_cp, lVar5._6_2_ = pIVar9->e_crlc,
     -1 < lVar5)) {
    local_d0 = 0x2621fc0;
    do {
      if (piVar16 < IMAGE_DOS_HEADER_180000000.e_magic + lVar5 + 8) {
        if (-1 < lVar5) {
          plVar10 = (longlong *)(lVar5 + 0x180000000);
          if (plVar10 < piVar11 + 2) {
            local_98[0] = *piVar16;
            pIVar19 = pIVar9;
            goto LAB_1807119b0;
          }
        }
        break;
      }
      lVar5._0_2_ = pIVar9->e_cparhdr;
      lVar5._2_2_ = pIVar9->e_minalloc;
      lVar5._4_2_ = pIVar9->e_maxalloc;
      lVar5._6_2_ = pIVar9->e_ss;
      pIVar9 = (IMAGE_DOS_HEADER *)&pIVar9->e_cparhdr;
    } while (-1 < lVar5);
  }
  goto LAB_1807119e0;
  while (plVar10 = (longlong *)(lVar5 + 0x180000000), plVar10 < piVar11 + 2) {
LAB_1807119b0:
    pIVar19 = (IMAGE_DOS_HEADER *)&pIVar19->e_cparhdr;
    *(longlong *)(&stack0x00017fffff68 + (lVar5 - (longlong)piVar16)) = *plVar10 + -0x180000000;
    lVar5 = *(longlong *)pIVar19;
    piVar15 = local_98;
    if (lVar5 < 0) break;
  }
LAB_1807119e0:
  plVar10 = plVar12 + 4;
  uVar7 = 0xca30;
  plVar12[-1] = 0x1807119f5;
  piVar11 = piVar15;
  iVar3 = FUN_18070fdd2(0xca30,piVar15,0);
  bVar26 = (uVar7 & 0xc300) == 0;
  plVar14 = plVar12;
  if (!bVar26) goto LAB_180711a08;
  do {
    plVar12 = plVar14;
    if ((uVar7 & 0xc3) == 0) goto LAB_180711a16;
    while ((uVar7 & 0xc3) != 0) {
      bVar26 = false;
      if (-1 < (char)uVar7) {
LAB_180711a08:
        plVar13 = (longlong *)((longlong)plVar14 + -8);
        plVar14 = (longlong *)((longlong)plVar14 + -8);
        *plVar13 = (longlong)piVar15;
      }
      iVar3 = (int)*plVar10;
      piVar15 = piVar11;
      while (bVar26) {
        plVar12 = plVar14;
        if ((uVar7 & 0xc3) != 0) goto LAB_180711a5b;
LAB_180711a16:
        if (((uVar7 & 0xc300) == 0) || (bVar26 = (uVar7 & 0xc300) == 0, !bVar26))
        goto LAB_180711a24;
        iVar3 = (int)*plVar10;
        plVar14 = plVar12;
      }
    }
  } while( true );
LAB_180711a24:
  do {
    plVar14 = plVar12;
    if (iVar3 + *piVar15 != 0) goto LAB_180711a5b;
    while ((uVar7 & 0xc300) == 0) {
LAB_180711a5b:
      if ((uVar7 & 0xc300) == 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
        halt_baddata();
      }
    }
    plVar14[-1] = 0x180711a38;
    iVar3 = FUN_180725241();
    *(int *)plVar10 = iVar3;
    uVar23 = local_b8;
    piVar15 = (int *)*plVar14;
    plVar12 = plVar14 + 1;
  } while ((uVar7 & 0xc3) != 0);
  uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
  if ((int)uVar6 < 0) {
    uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
  }
  if (uVar6 == 0) goto code_r0x000180711a82;
  goto LAB_1807119e0;
code_r0x000180711a82:
  uVar6 = *(uint *)(plVar14 + 8);
  uVar2 = (int)plVar14[5] * 0x401 ^ (uint)((int)plVar14[5] * 0x401) >> 6;
  *(uint *)(plVar14 + 5) = uVar2;
  piVar11 = piVar16;
  uVar7 = uVar25;
  goto LAB_180711800;
}



############ FUN_ 1806b79a0 size=3052 ############

/* WARNING: Removing unreachable block (ram,0x0001806b8581) */
/* WARNING: Removing unreachable block (ram,0x0001806b7a69) */
/* WARNING: Removing unreachable block (ram,0x0001806b7a55) */
/* WARNING: Removing unreachable block (ram,0x0001806b7bd5) */
/* WARNING: Removing unreachable block (ram,0x0001806b8378) */
/* WARNING: Removing unreachable block (ram,0x0001806b7a0b) */

void FUN_1806b79a0(longlong param_1,byte param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  uint *puVar7;
  code **ppcVar8;
  longlong *plVar9;
  void *pvVar10;
  undefined1 *puVar11;
  void **ppvVar12;
  ulonglong in_R11;
  undefined8 uVar13;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint local_res18 [2];
  int *local_res20;
  undefined1 auStack_f8 [32];
  undefined *local_d8;
  code *local_d0;
  void *local_c8;
  longlong lStack_c0;
  longlong local_b8;
  void *local_b0;
  longlong lStack_a8;
  longlong local_a0;
  undefined **local_98;
  undefined4 local_90;
  undefined1 local_8c;
  undefined **local_88;
  undefined4 local_80;
  undefined1 local_7c;
  void *local_78;
  undefined8 uStack_70;
  longlong local_68;
  void *local_60;
  undefined8 uStack_58;
  longlong local_50;
  undefined8 local_48;
  
  puVar11 = auStack_f8;
  local_48 = 0xfffffffffffffffe;
  uVar13 = 0xfe0;
  uVar3 = (uint)&stack0x00000000 & 0x1dff;
  uVar5 = (uVar3 + 1) * uVar3 + 0x48d5 & 0x80000001;
  ppvVar12 = (void **)0xc85e5258;
  local_res20 = &DAT_181547b88;
  local_d8 = &DAT_181547c88;
  uVar3 = (((uint)(DAT_181547b88 * 0x401) >> 6 ^ DAT_181547b88 * 0x401) + DAT_181547b8c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547b90) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547b94) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547b98) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547b9c) * 0x401;
  do {
    in_R11 = -((in_R11 ^ 0xffffffffffffffff) + 1);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_181547ba0 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547ba4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547ba8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bac) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bb0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bb4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bb8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bbc) * 0x401;
  do {
    FUN_1806b5f86();
    FUN_1806b6c79();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_181547bc0 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bc4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bc8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bcc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bd0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bd4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bd8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bdc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547be0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547be4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547be8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bec) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bf0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bf4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bf8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547bfc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c00) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c04) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c08) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c0c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c10) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c14) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c18) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c1c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c20) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c24) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c28) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c2c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c30) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c34) * 0x401;
  do {
    param_2 = -(~param_2 + 1);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_181547c38 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c3c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c40) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c44) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c48) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c4c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c50) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c54) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c58) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c5c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c60) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c64) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c68) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c6c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c70) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c74) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c78) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c7c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c80) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181547c84) * 0x401;
  uVar3 = (uVar3 >> 6 ^ uVar3) + 0xdb1443;
  uVar6 = uVar3 * 0x100000 | uVar3 >> 0xc;
  uVar3 = (uVar6 >> 0xc ^ uVar6) >> 3 & 0xfff;
  uVar6 = (uVar3 << 0xc | uVar3) << 3 ^ uVar6;
  local_res20 = (int *)0xeff10f0e4bd5afb8;
  do {
    puVar7 = local_res18;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001806b7bb3(puVar7,local_res18);
    uVar2 = rdtsc();
    *puVar7 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
                    /* WARNING: Call to offcut address within same function */
    func_0x0001806b8200();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_res18[0] =
       (local_res18[0] * -0x12aae57b >> 0x18 ^ local_res18[0] * -0x12aae57b) * -0x51ca7333;
  if (local_res18[0] < 0xd79435) {
    local_d0 = (code *)0x0;
    do {
      ppcVar8 = &local_d0;
      func_0x0001806b8d7e(ppcVar8,&local_d0);
      *ppcVar8 = FUN_1813f2240;
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar4 = (*local_d0)(0,0x3d22);
    if (1 < uVar4) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar9 = (longlong *)register0x00000020;
      while (lVar1 != -0x3333333333333334) {
        *plVar9 = 0;
        plVar9 = plVar9 + 8;
        lVar1 = *plVar9;
      }
    }
  }
  if ((uint)local_res20 != ((uVar6 >> 0x10 | uVar6 << 0x10) ^ 0xb92ce131)) {
    if ((param_2 == 0) && (*(char *)(param_1 + 0x5a) != '\0')) {
      *(undefined1 *)(param_1 + 0x5a) = 0;
      local_98 = pace::eden::thrift::authorize::GetAuthorizationServerInfoInput::vftable;
      local_8c = 0;
      local_90 = 0;
      if (*(longlong *)(param_1 + 0x48) == 0) {
        local_78 = (void *)0x0;
        uStack_70 = 0;
        local_68 = 0;
        local_c8 = (void *)0x0;
        lStack_c0 = 0;
        local_b8 = 0;
        FUN_180673ab0(&local_98,&local_78,1);
        FUN_1806b86d0(param_1,0x17,&local_78,&local_c8);
        FUN_180671970(local_c8,lStack_c0 - (longlong)local_c8,param_1 + 0x60);
        if (local_c8 != (void *)0x0) {
          pvVar10 = local_c8;
          if ((0xfff < (ulonglong)(local_b8 - (longlong)local_c8)) &&
             (pvVar10 = *(void **)((longlong)local_c8 + -8),
             0x1f < (ulonglong)((longlong)local_c8 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar10);
        }
        if (local_78 != (void *)0x0) {
          pvVar10 = local_78;
          if ((0xfff < (ulonglong)(local_68 - (longlong)local_78)) &&
             (pvVar10 = *(void **)((longlong)local_78 + -8),
             0x1f < (ulonglong)((longlong)local_78 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar10);
        }
      }
      else {
        plVar9 = (longlong *)
                 ((longlong)*(int *)(**(longlong **)(param_1 + 8) + 8) +
                 (longlong)*(longlong **)(param_1 + 8));
        (**(code **)(*plVar9 + 0xb0))(plVar9,param_1 + 0x60,&local_98,4);
      }
      *(undefined1 *)(param_1 + 0x5a) = 1;
    }
    thunk_FUN_1805a9280();
    return;
  }
  if ((param_2 != 0) || (*(char *)(param_1 + 0x5a) == '\0')) {
    *(undefined1 *)(param_1 + 0x5a) = 0;
    local_88 = pace::eden::thrift::authorize::GetAuthorizationServerInfoInput::vftable;
    local_7c = 0;
    local_80 = 0;
    if (*(longlong *)(param_1 + 0x48) == 0) {
      plVar9 = (longlong *)
               ((longlong)*(int *)(**(longlong **)(param_1 + 8) + 8) +
               (longlong)*(longlong **)(param_1 + 8));
      ppvVar12 = (void **)0x4;
      (**(code **)(*plVar9 + 0xb0))(plVar9,param_1 + 0x60,&local_88);
    }
    else {
      local_60 = (void *)0x0;
      uStack_58 = 0;
      local_50 = 0;
      local_b0 = (void *)0x0;
      lStack_a8 = 0;
      local_a0 = 0;
      FUN_180673ab0(&local_88,&local_60,1);
      ppvVar12 = &local_b0;
      FUN_1806b86d0(param_1,0x17,&local_60);
      FUN_180671970(local_b0,lStack_a8 - (longlong)local_b0,param_1 + 0x60);
      if (local_b0 != (void *)0x0) {
        pvVar10 = local_b0;
        if ((0xfff < (ulonglong)(local_a0 - (longlong)local_b0)) &&
           (pvVar10 = *(void **)((longlong)local_b0 + -8),
           0x1f < (ulonglong)((longlong)local_b0 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar10);
      }
      if (local_60 != (void *)0x0) {
        pvVar10 = local_60;
        if ((0xfff < (ulonglong)(local_50 - (longlong)local_60)) &&
           (pvVar10 = *(void **)((longlong)local_60 + -8),
           0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar10);
      }
    }
    *(undefined1 *)(param_1 + 0x5a) = 1;
  }
  do {
    *(undefined8 *)(puVar11 + -8) = uVar13;
    *(void ***)(puVar11 + -0x10) = ppvVar12;
    *(ulonglong *)(puVar11 + -0x18) = in_R11;
    lVar1 = -(longlong)(int)((int)(-uVar5 | uVar5) >> 0x1f & 0x3d00U ^ 0x3e40);
    register0x00000020 =
         (BADSPACEBASE *)(~-((ulonglong)register0x00000020 ^ 0x3443e78d) + 1 ^ 0x3443e78d);
    in_R11 = *(ulonglong *)(puVar11 + lVar1 + 0x328);
    ppvVar12 = *(void ***)(puVar11 + lVar1 + 0x330);
    uVar13 = *(undefined8 *)(puVar11 + lVar1 + 0x338);
    puVar11 = puVar11 + lVar1 + 0x340;
    uVar3 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  return;
}



############ FUN_ 180a37a80 size=1295 ############

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

longlong FUN_180a37a80(longlong param_1,undefined1 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  uint uVar5;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_d8 [32];
  undefined1 local_b8;
  undefined8 local_b0;
  uint local_a8;
  undefined *local_a0;
  undefined8 local_90;
  undefined **local_88;
  uint local_7c;
  uint local_78;
  code *local_70;
  longlong local_58;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_d8;
  uVar4 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x240) == 0) {
    uVar5 = ((uVar4 & 0x23ff) * (uVar4 & 0x23ff) + 1) % 7;
    local_78 = (int)(-uVar5 | uVar5) >> 0x1f & 0x6ebd;
  }
  else {
    local_78 = 0x6ebd;
  }
  local_78 = local_78 ^ 0x6fad;
  *(undefined1 *)(param_1 + 0x168) = 1;
  uVar5 = ((uVar4 & 0x1eff) * (uVar4 & 0x1eff) * 0x10 + 4) % 0x13;
  uVar4 = (((uVar4 & 0x9ff) + 1) * (uVar4 & 0x9ff) + 7) % 0x51;
  local_7c = (((int)(-uVar5 | uVar5) >> 0x1f) - ((int)(-uVar4 | uVar4) >> 0x1f)) - 0x2144U & 0xde1c
             ^ 0xd07c;
  local_b8 = param_2;
  local_58 = param_1;
  do {
    uVar2 = rdtsc();
    local_a8 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_180a36fbe();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_a8 = (local_a8 * -0x3b313b32 >> 0x18 ^ local_a8 * -0x3b313b32) * -0x460113ad;
  if (local_a8 < 0x3333333f) {
    do {
      local_70 = FUN_1813f2240;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813f2240(0,0xc714);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  *(undefined1 *)(param_1 + 0x169) = 1;
  local_88 = &PTR__guard_check_icall_181bab6a8;
  local_a0 = &DAT_181bab6b8;
  local_b0 = 0x1e1450c8154146c0;
  local_90 = 0x154146c0;
  *(undefined1 *)(param_1 + 0x16a) = param_2;
  uVar3 = FUN_180a380d2();
  return -((uVar3 ^ 0xffffffffffffffff) + 1);
}



############ FUN_ 180b47ca0 size=876 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b47e4a) */
/* WARNING: Removing unreachable block (ram,0x000180b47d89) */
/* WARNING: Removing unreachable block (ram,0x000180b47e0d) */

void FUN_180b47ca0(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_108 [32];
  undefined4 local_e8;
  undefined *local_e0;
  uint local_d8;
  undefined8 local_d0;
  undefined8 local_c8;
  uint local_bc;
  undefined4 local_b8;
  code *local_b0;
  undefined8 *local_a8;
  undefined8 local_a0;
  undefined8 local_80;
  undefined8 *local_78;
  ulonglong local_48;
  
  local_80 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_a8 = param_1;
  local_a0 = param_3;
  local_78 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorSignedInfo::vftable;
  param_1[3] = param_2;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180bb0370(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  local_b8 = 0x310;
  uVar4 = (uint)&stack0x00000000 & 0x12ff;
  uVar4 = (uVar4 + 1) * uVar4 + 0x9cf & 0x80000001;
  local_bc = (int)(-uVar4 | uVar4) >> 0x1f & 0xb46U ^ 0x306;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x12aa7a15;
  local_d8 = (uVar4 >> 0x18 ^ uVar4) * 0x5bd18ccd;
  if (local_d8 < 0x3333333f) {
    do {
      local_b0 = FUN_1813f2240;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813f2240(0,0xe689);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  local_c8 = 0x180000000;
  local_e0 = &DAT_18094e64c;
  local_d0 = 0x1809516c4;
  local_e8 = 0x811c9e53;
  FUN_180b48030();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1808b74b0 size=1045 ############

/* WARNING: Removing unreachable block (ram,0x0001808b75da) */
/* WARNING: Removing unreachable block (ram,0x0001808b7537) */
/* WARNING: Removing unreachable block (ram,0x0001808b7602) */
/* WARNING: Removing unreachable block (ram,0x0001808b7580) */

undefined8 FUN_1808b74b0(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_d8 [52];
  uint local_a4;
  uint local_a0;
  undefined4 local_98;
  code *local_70;
  undefined8 local_68;
  undefined8 local_60;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_d8;
  uVar4 = (uint)&stack0x00000000 & 0x3bf;
  local_a0 = (((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 | 0xda82) ^ 0xd872;
  local_98 = 0x9e0;
  local_68 = param_2;
  local_60 = param_1;
  do {
    FUN_1808b69dc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x166aa42f;
  local_a4 = (uVar4 >> 0x18 ^ uVar4) * -0x50283b32;
  if (local_a4 < 0x1999999f) {
    do {
      local_70 = FUN_1813f2240;
      FUN_1808b79de(&local_70,0xd312);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_70)();
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  return 0xd7287a8e5fda5534;
}



############ FUN_ 180957590 size=1146 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180957624) */
/* WARNING: Removing unreachable block (ram,0x00018095797a) */
/* WARNING: Removing unreachable block (ram,0x0001809575e7) */

void FUN_180957590(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined4 *puVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  
  uVar5 = (uint)&stack0x00000000 & 0x2bf;
  uVar5 = 0xe9f2 >> ((char)(((uVar5 + 2) * (uVar5 + 1) * uVar5) / 3) * '\x03' & 0x1fU) ^ 0xe092;
  (**(code **)(*param_2 + 0x18))(param_2,"FindAuthOptions");
  do {
    FUN_180957e0a(0xff18);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  puVar3 = &DAT_181463b44;
  do {
    uVar2 = rdtsc();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x3d4d5029;
  if ((uVar6 >> 0x18 ^ uVar6) * -0x51ca5029 < 0x330a5df) {
    do {
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = FUN_1813f2240(0,0xb217);
    if (1 < uVar4) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  uVar6 = DAT_181463b48 ^ (DAT_181463b44 ^ 0x811c9e07) * 0x10001a7;
  (**(code **)(*param_2 + 0x28))(param_2,"sortChainsHighestRankingFirst",2,1,puVar3,uVar5);
  (**(code **)(*param_2 + 0x70))(param_2,*(undefined1 *)(param_1 + 8));
  uVar5 = (DAT_181463b50 ^ (DAT_181463b4c ^ uVar6 * 0x10001a7) * 0x10001a7) * 0x10001a7 & 0x14ff;
  uVar5 = (uVar5 * uVar5 * 0x10 + 4) % 0x13;
  uVar4 = (longlong)(((int)(-uVar5 | uVar5) >> 0x1f) * -0xfb4b) ^ 0xfa4b;
  (**(code **)(*param_2 + 0x30))(param_2);
                    /* WARNING: Call to offcut address within same function */
  func_0x000180957a2c();
  *(int *)(uVar4 - 0x3b7cb8d9) = (int)uVar4 + -0xf0;
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180995e90 size=2023 ############

/* WARNING: Instruction at (ram,0x000180996307) overlaps instruction at (ram,0x000180996303)
    */
/* WARNING: Removing unreachable block (ram,0x0001809960f1) */
/* WARNING: Removing unreachable block (ram,0x000180996303) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180995e90(void)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  uint *puVar5;
  int iVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint auStackX_10 [6];
  
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  iVar6 = ((((((((((((((((((((((((((((((DAT_180783c5c * 0xc1 + DAT_180783c60) * 0xc1 + DAT_180783c64
                                      ) * 0xc1 + DAT_180783c68) * 0xc1 + _DAT_180783c6c) * 0xc1 +
                                   _DAT_180783c70) * 0xc1 + _DAT_180783c74) * 0xc1 + _DAT_180783c78)
                                 * 0xc1 + _DAT_180783c7c) * 0xc1 + _DAT_180783c80) * 0xc1 +
                              _LAB_180783c84) * 0xc1 + _DAT_180783c88) * 0xc1 + _DAT_180783c8c) *
                            0xc1 + _DAT_180783c90) * 0xc1 + _DAT_180783c94) * 0xc1 + _DAT_180783c98)
                         * 0xc1 + _LAB_180783c9c) * 0xc1 + _DAT_180783ca0) * 0xc1 + _DAT_180783ca4)
                      * 0xc1 + _DAT_180783ca8) * 0xc1 + _DAT_180783cac) * 0xc1 + _DAT_180783cb0) *
                   0xc1 + _DAT_180783cb4) * 0xc1 + _DAT_180783cb8) * 0xc1 + _DAT_180783cbc) * 0xc1 +
               _DAT_180783cc0) * 0xc1 + _DAT_180783cc4) * 0xc1 + _LAB_180783cc8) * 0xc1 +
            _DAT_180783ccc) * 0xc1 + _LAB_180783cd0) * 0xc1 + _DAT_180783cd4) * 0xc1 +
          _DAT_180783cd8;
  do {
    puVar5 = auStackX_10;
    FUN_18099804b(puVar5,auStackX_10);
    uVar2 = rdtsc();
    *puVar5 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  auStackX_10[0] =
       (auStackX_10[0] * -0x13ac4602 >> 0x18 ^ auStackX_10[0] * -0x13ac4602) * -0x12aa12ab;
  if (auStackX_10[0] < 0x7ea3bd) {
    do {
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813f2240(0,0x4595);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  iVar6 = (((((((((((((((((((((((((((iVar6 * 0xc1 + _DAT_180783cdc) * 0xc1 + _DAT_180783ce0) * 0xc1
                                  + _DAT_180783ce4) * 0xc1 + _DAT_180783ce8) * 0xc1 + _DAT_180783cec
                                ) * 0xc1 + _DAT_180783cf0) * 0xc1 + _UNK_180783cf4) * 0xc1 +
                             _UNK_180783cf8) * 0xc1 + _UNK_180783cfc) * 0xc1 + _UNK_180783d00) *
                           0xc1 + _UNK_180783d04) * 0xc1 + _UNK_180783d08) * 0xc1 + _UNK_180783d0c)
                        * 0xc1 + _UNK_180783d10) * 0xc1 + _UNK_180783d14) * 0xc1 + _UNK_180783d18) *
                     0xc1 + _UNK_180783d1c) * 0xc1 + _UNK_180783d20) * 0xc1 + _UNK_180783d24) * 0xc1
                 + _UNK_180783d28) * 0xc1 + _UNK_180783d2c) * 0xc1 + _UNK_180783d30) * 0xc1 +
              _UNK_180783d34) * 0xc1 + _UNK_180783d38) * 0xc1 + _UNK_180783d3c) * 0xc1 +
           _UNK_180783d40) * 0xc1 + _UNK_180783d44) * 0xc1 + _UNK_180783d48;
  do {
    func_0x000180995236(0xd730);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = _UNK_180783d58 +
          (((iVar6 * 0xc1 + _UNK_180783d4c) * 0xc1 + _UNK_180783d50) * 0xc1 + _UNK_180783d54) * 0xc1
          + 0x1cfa789d;
  FUN_180996e05(0xd730,(uVar4 * 0x10000 | uVar4 >> 0x10) & 0x4b77b488);
  FUN_1809966a4();
  return;
}



############ FUN_ 180a947e0 size=869 ############

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

undefined8
FUN_180a947e0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  uint *puVar4;
  uint uVar5;
  int iVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_118 [68];
  uint local_d4;
  undefined8 local_d0;
  undefined4 local_c4;
  uint local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  uint local_a0;
  code *local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_118;
  uVar5 = (uint)&stack0x00000000 & 0x6cff;
  iVar6 = uVar5 * uVar5 + 1;
  uVar5 = iVar6 * 0x24924924 + (iVar6 >> 4) + (iVar6 >> 1) >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  uVar5 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_a0 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x4e ^ 0x24e;
  uVar5 = (uint)&stack0x00000000 & 0x3dff;
  uVar5 = ((uVar5 + 1) * uVar5 + 7) % 0x51;
  local_c0 = (int)(-uVar5 | uVar5) >> 0x1f & 0x3207U ^ 0x3867;
  local_c4 = param_2;
  local_90 = param_1;
  local_88 = param_3;
  local_80 = param_4;
  do {
    puVar4 = &local_d4;
    FUN_180a93a5f(puVar4,&local_d4);
    uVar3 = rdtsc();
    *puVar4 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    func_0x000180a93c1f();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_d4 = (local_d4 * -0x50283595 >> 0x18 ^ local_d4 * -0x50283595) * -0x7a14a42f;
  if (local_d4 < 0x1999999f) {
    do {
      local_98 = FUN_1813f2240;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = FUN_1813f2240(0,0x978b);
    if (1 < uVar2) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  local_b0 = 0x1800b4e98;
  local_d0 = 0x1800b6e94;
  local_a8 = 0xf953bf7947252097;
  local_b8 = 0x47252097;
  uVar3 = FUN_180a94b6d(0x1800b6e94,0xb0498);
  return uVar3;
}



############ FUN_ 180b5b9a0 size=1918 ############

/* WARNING: Removing unreachable block (ram,0x000180b5be04) */
/* WARNING: Removing unreachable block (ram,0x000180b5bd9b) */
/* WARNING: Removing unreachable block (ram,0x000180b5bdb6) */
/* WARNING: Removing unreachable block (ram,0x000180b5bed5) */

void FUN_180b5b9a0(undefined8 param_1)

{
  undefined8 uVar1;
  byte bVar2;
  byte bVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  bool bVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong *plVar10;
  undefined4 *puVar11;
  uint uVar12;
  undefined4 *puVar13;
  undefined4 *puVar14;
  longlong lVar15;
  IMAGE_DOS_HEADER *pIVar16;
  uint uVar17;
  uint uVar18;
  IMAGE_DOS_HEADER *pIVar19;
  uint uVar20;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_d8 [32];
  uint local_b8 [2];
  undefined8 local_b0;
  uint local_a8;
  uint local_a4;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  code *local_88;
  longlong local_80;
  undefined8 local_78;
  undefined8 local_70;
  longlong local_68;
  undefined8 local_60;
  undefined4 local_48 [4];
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_d8;
  lVar15 = (longlong)&DAT_18266fe00 +
           (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18266fe00),8) >> 5) * -0x29;
  uVar12 = 0;
  LOCK();
  iVar4 = *(int *)(&DAT_18265dbd0 + lVar15 * 4);
  *(int *)(&DAT_18265dbd0 + lVar15 * 4) = 1;
  UNLOCK();
  local_68 = lVar15;
  local_70 = param_1;
  local_78 = DAT_18266fe00;
  while (DAT_18266fe00 = local_78, iVar4 != 0) {
    if ((3 < uVar12) && (0xf < uVar12)) {
      Sleep((uint)(0x1f < uVar12));
    }
    uVar12 = uVar12 + 1;
    LOCK();
    iVar4 = *(int *)(&DAT_18265dbd0 + lVar15 * 4);
    *(int *)(&DAT_18265dbd0 + lVar15 * 4) = 1;
    UNLOCK();
    local_78 = DAT_18266fe00;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar15 * 4) = 0;
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  pIVar19 = &IMAGE_DOS_HEADER_180000000;
  local_98 = 0;
  uVar9 = 0;
  local_a0 = 0x6ff4;
  local_b0 = 0x1ffc;
  local_80 = 0x180006ff4;
  local_90 = 0x180008ff0;
  do {
    FUN_180b5d4b5(0xda28,uVar9);
    uVar9 = ((uVar9 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  do {
    puVar6 = local_b8;
    FUN_180b5caa4(puVar6,local_b8);
    uVar1 = rdtsc();
    *puVar6 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_b8[0] = (local_b8[0] * -0x7a143b32 >> 0x18 ^ local_b8[0] * -0x7a143b32) * -0x50284602;
  if (local_b8[0] < 0x1999999f) {
    do {
      local_88 = FUN_1813f2240;
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar9 = FUN_1813f2240(0,0x7825);
    if (1 < uVar9) {
      lVar15 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar10 = (longlong *)register0x00000020;
      while (lVar15 != -0x3333333333333334) {
        *plVar10 = 0;
        plVar10 = plVar10 + 8;
        lVar15 = *plVar10;
      }
    }
  }
  local_98 = 0xbbdac0568887f03a;
  local_a0 = CONCAT44(local_a0._4_4_,0x8887f03a);
  uVar12 = 0x2f4d615a;
  local_b0 = CONCAT44(local_b0._4_4_,0x5bd1e995);
  puVar13 = (undefined4 *)(local_80 + -4);
  uVar20 = (uint)local_90;
  bVar2 = (byte)local_90 & 0x6f;
  bVar3 = (byte)local_90 & 0x3f;
LAB_180b5bdd0:
  uVar5 = (uint)puVar13;
  uVar8 = uVar12 & 0xf | 0x11;
  if (((((uVar5 & 0x4ff) + 1) * (uVar5 & 0x4ff) + 7) % 0x51 & 0x330) == 0) {
    uVar17 = uVar12 & 0x17f;
    iVar4 = (uVar17 + 2) * (uVar17 + 1) * uVar17;
    if ((((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e & 0x27U) == 0) {
      uVar17 = uVar5 & 0x7f | 0x6c;
      uVar18 = uVar20 & 0x7f | 0x59;
      bVar7 = uVar17 * uVar17 * 0x1915 == uVar18 * uVar18 * 0xca9d;
    }
    else {
      bVar7 = (bool)(((char)puVar13 + '\x01') * (char)puVar13 & 1);
    }
    uVar17 = (int)(uVar5 ^ 0x7be9) >> bVar7;
  }
  else {
    uVar17 = uVar5 ^ 0x7be9;
  }
  if (((uVar8 * uVar8 * 0xf755 == 0x1744938b & uVar5 | uVar20 - 4 ^ 0x63a9 | 0x9850) &
      (uVar20 - 4 ^ 0x7be9)) ==
      ((uVar5 ^ 0x43c1 | 0xb83a) <<
       (bVar2 * bVar2 * (bVar2 + 1) * (bVar2 + 1) & 3 |
       bVar3 * bVar3 * (bVar3 + 1) * (bVar3 + 1) & 3) & uVar17)) {
    local_a4 = uVar12;
    FUN_180b5c147();
    FUN_180b5c158();
    return;
  }
  iVar4 = (uVar5 & 0x5bff) * (uVar5 & 0x5bff) + 1;
  uVar8 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar8 = (int)(uVar8 - 7) >> 0x1f & uVar8;
  uVar17 = uVar12 & 0x5f;
  uVar5 = uVar5 & 0x33f;
  iVar4 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  puVar13 = (undefined4 *)
            ((longlong)puVar13 +
            (0x84 - ((longlong)
                     (int)((iVar4 + (iVar4 / 3 + (iVar4 >> 0x1f) +
                                    (int)(((longlong)iVar4 / 3 + ((longlong)iVar4 >> 0x3f) &
                                          0xffffffffU) >> 0x1f)) * -3 &
                            uVar17 * uVar17 * (uVar17 + 1) * (uVar17 + 1) & 2) + 0x6f4c) ^
                    (ulonglong)((int)(-uVar8 | uVar8) >> 0x1f & 0x6fcc))));
  puVar14 = puVar13;
  if ((pIVar19 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar15._0_1_ = pIVar19->e_magic[0], lVar15._1_1_ = pIVar19->e_magic[1],
     lVar15._2_2_ = pIVar19->e_cblp, lVar15._4_2_ = pIVar19->e_cp, lVar15._6_2_ = pIVar19->e_crlc,
     -1 < lVar15)) {
    local_98 = 0x2621fc0;
    pIVar16 = pIVar19;
    do {
      if (puVar13 < IMAGE_DOS_HEADER_180000000.e_magic + lVar15 + 8) {
        pIVar19 = pIVar16;
        if (-1 < lVar15) {
          plVar10 = (longlong *)(lVar15 + 0x180000000);
          if (plVar10 < puVar13 + 1) {
            local_48[0] = *puVar13;
            goto LAB_180b5c070;
          }
        }
        break;
      }
      pIVar19 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
      lVar15._0_2_ = pIVar16->e_cparhdr;
      lVar15._2_2_ = pIVar16->e_minalloc;
      lVar15._4_2_ = pIVar16->e_maxalloc;
      lVar15._6_2_ = pIVar16->e_ss;
      pIVar16 = pIVar19;
    } while (-1 < lVar15);
  }
  goto LAB_180b5c0a0;
  while (plVar10 = (longlong *)(lVar15 + 0x180000000), plVar10 < puVar13 + 1) {
LAB_180b5c070:
    *(longlong *)(&stack0x00017fffffb8 + (lVar15 - (longlong)puVar13)) = *plVar10 + -0x180000000;
    pIVar16 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
    lVar15 = *(longlong *)pIVar16;
    puVar14 = local_48;
    if (lVar15 < 0) break;
  }
LAB_180b5c0a0:
  do {
    puVar6 = &local_a8;
    puVar11 = puVar14 + 0xf0f02b5;
    FUN_180b5a7c9(0xda28,puVar11,0);
    *puVar6 = puVar11[-0xf0f02b5];
    FUN_180b5c157();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_a8 = (local_a8 * (int)local_b0 >> 0x18 ^ local_a8 * (int)local_b0) * (int)local_b0;
  uVar12 = uVar12 * (int)local_b0 ^ local_a8;
  goto LAB_180b5bdd0;
}



############ FUN_ 180a0a380 size=1981 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180a0b250) overlaps instruction at (ram,0x000180a0b24d)
    */
/* WARNING: Removing unreachable block (ram,0x000180a0b24d) */
/* WARNING: Removing unreachable block (ram,0x000180a0b0a2) */
/* WARNING: Removing unreachable block (ram,0x000180a0a45c) */
/* WARNING: Removing unreachable block (ram,0x000180a0a3d0) */
/* WARNING: Removing unreachable block (ram,0x000180a0a400) */
/* WARNING: Removing unreachable block (ram,0x000180a0b084) */
/* WARNING: Removing unreachable block (ram,0x000180a0b234) */
/* WARNING: Removing unreachable block (ram,0x000180a0ab6a) */
/* WARNING: Removing unreachable block (ram,0x000180a0a40f) */
/* WARNING: Removing unreachable block (ram,0x000180a0a746) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

char FUN_180a0a380(void)

{
  undefined8 uVar1;
  longlong *plVar2;
  byte bVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  code **ppcVar7;
  ulonglong uVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  ulonglong uVar12;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint auStackX_18 [4];
  code *local_58 [3];
  
  lVar11 = 0x180000000;
  uVar12 = 0x19821582;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = (iRam00000001811b87b8 * 0x16a88000 | (uint)(iRam00000001811b87b8 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ 0xc3589e80;
  uVar5 = (iRam00000001811b87bc * 0x16a88000 | (uint)(iRam00000001811b87bc * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87c0 * 0x16a88000 | (uint)(iRam00000001811b87c0 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87c4 * 0x16a88000 | (uint)(iRam00000001811b87c4 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87c8 * 0x16a88000 | (uint)(iRam00000001811b87c8 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87cc * 0x16a88000 | (uint)(iRam00000001811b87cc * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87d0 * 0x16a88000 | (uint)(iRam00000001811b87d0 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar1 = rdtsc();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20)) * -0x12aaa42f;
  if ((uVar6 >> 0x18 ^ uVar6) * -0x3d4d7a15 < 0x3e0f83f) {
    local_58[0] = (code *)0x0;
    do {
      ppcVar7 = local_58;
      FUN_180a0944d(ppcVar7,local_58);
      *ppcVar7 = FUN_1813f2240;
      func_0x000180a08dde();
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = (*local_58[0])();
    if (1 < uVar4) {
      lVar9 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar2 = (longlong *)register0x00000020;
      while (lVar9 != -0x3333333333333334) {
        *plVar2 = 0;
        plVar2 = plVar2 + 8;
        lVar9 = *plVar2;
      }
    }
  }
  uVar5 = (iRam00000001811b87d4 * 0x16a88000 | (uint)(iRam00000001811b87d4 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87d8 * 0x16a88000 | (uint)(iRam00000001811b87d8 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87dc * 0x16a88000 | (uint)(iRam00000001811b87dc * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87e0 * 0x16a88000 | (uint)(iRam00000001811b87e0 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87e4 * 0x16a88000 | (uint)(iRam00000001811b87e4 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87e8 * 0x16a88000 | (uint)(iRam00000001811b87e8 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_180a0b0a6(0xc73c);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001811b87ec * 0x16a88000 | (uint)(iRam00000001811b87ec * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87f0 * 0x16a88000 | (uint)(iRam00000001811b87f0 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87f4 * 0x16a88000 | (uint)(iRam00000001811b87f4 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87f8 * 0x16a88000 | (uint)(iRam00000001811b87f8 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b87fc * 0x16a88000 | (uint)(iRam00000001811b87fc * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8800 * 0x16a88000 | (uint)(iRam00000001811b8800 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8804 * 0x16a88000 | (uint)(iRam00000001811b8804 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8808 * 0x16a88000 | (uint)(iRam00000001811b8808 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b880c * 0x16a88000 | (uint)(iRam00000001811b880c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar5 = ~((uVar5 ^ 0xffffffff) + 1) + 1;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001811b8810 * 0x16a88000 | (uint)(iRam00000001811b8810 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ uVar5;
  uVar5 = (iRam00000001811b8814 * 0x16a88000 | (uint)(iRam00000001811b8814 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8818 * 0x16a88000 | (uint)(iRam00000001811b8818 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b881c * 0x16a88000 | (uint)(iRam00000001811b881c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8820 * 0x16a88000 | (uint)(iRam00000001811b8820 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8824 * 0x16a88000 | (uint)(iRam00000001811b8824 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8828 * 0x16a88000 | (uint)(iRam00000001811b8828 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b882c * 0x16a88000 | (uint)(iRam00000001811b882c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8830 * 0x16a88000 | (uint)(iRam00000001811b8830 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8834 * 0x16a88000 | (uint)(iRam00000001811b8834 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8838 * 0x16a88000 | (uint)(iRam00000001811b8838 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b883c * 0x16a88000 | (uint)(iRam00000001811b883c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8840 * 0x16a88000 | (uint)(iRam00000001811b8840 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8844 * 0x16a88000 | (uint)(iRam00000001811b8844 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8848 * 0x16a88000 | (uint)(iRam00000001811b8848 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b884c * 0x16a88000 | (uint)(iRam00000001811b884c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001811b8850 * 0x16a88000 | (uint)(iRam00000001811b8850 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8854 * 0x16a88000 | (uint)(iRam00000001811b8854 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8858 * 0x16a88000 | (uint)(iRam00000001811b8858 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b885c * 0x16a88000 | (uint)(iRam00000001811b885c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8860 * 0x16a88000 | (uint)(iRam00000001811b8860 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8864 * 0x16a88000 | (uint)(iRam00000001811b8864 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8868 * 0x16a88000 | (uint)(iRam00000001811b8868 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b886c * 0x16a88000 | (uint)(iRam00000001811b886c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8870 * 0x16a88000 | (uint)(iRam00000001811b8870 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8874 * 0x16a88000 | (uint)(iRam00000001811b8874 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8878 * 0x16a88000 | (uint)(iRam00000001811b8878 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b887c * 0x16a88000 | (uint)(iRam00000001811b887c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8880 * 0x16a88000 | (uint)(iRam00000001811b8880 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8884 * 0x16a88000 | (uint)(iRam00000001811b8884 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8888 * 0x16a88000 | (uint)(iRam00000001811b8888 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b888c * 0x16a88000 | (uint)(iRam00000001811b888c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8890 * 0x16a88000 | (uint)(iRam00000001811b8890 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8894 * 0x16a88000 | (uint)(iRam00000001811b8894 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b8898 * 0x16a88000 | (uint)(iRam00000001811b8898 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b889c * 0x16a88000 | (uint)(iRam00000001811b889c * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b88a0 * 0x16a88000 | (uint)(iRam00000001811b88a0 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b88a4 * 0x16a88000 | (uint)(iRam00000001811b88a4 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar4 = (ulonglong)uVar5;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001811b88a8 * 0x16a88000 | (uint)(iRam00000001811b88a8 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ uVar5;
  do {
    func_0x000180a0bdb9(0xc73c);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001811b88ac * 0x16a88000 | (uint)(iRam00000001811b88ac * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (iRam00000001811b88b0 * 0x16a88000 | (uint)(iRam00000001811b88b0 * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64 ^
          (iRam00000001811b88b4 * 0x16a88000 | (uint)(iRam00000001811b88b4 * -0x3361d2af) >> 0x11) *
          0x1b873593;
  uVar5 = (uVar5 << 0xd | uVar5 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar8 = 0xc73c;
    bVar3 = func_0x000180a0ba30();
    lVar9 = uVar4 + uVar12;
    lVar10 = lVar11 + uVar12;
    if ((uVar8 & 0xc0) == 0) {
      uVar12 = uVar12 - lVar10;
    }
    else {
      bVar3 = bVar3 ^ 10;
      uRam00000000cc9e2d7c = uRam00000000cc9e2d7c >> 0x11 | uRam00000000cc9e2d7c << 0xf;
    }
    lVar11 = (uVar12 ^ 0xffffffffffffffff) + 1;
    if ((uVar8 & 0xf300) == 0) {
      return bVar3 + 0xb9;
    }
    uVar5 = -(~uVar5 + 1);
    uVar12 = lVar10 - lVar11;
    uVar4 = lVar9 - uVar12;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  auStackX_18[0] = uVar5;
  func_0x000180a09803(auStackX_18,uVar4);
  func_0x000180a0b2bf();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 1806a8b40 size=2177 ############

/* WARNING: Instruction at (ram,0x0001806a9286) overlaps instruction at (ram,0x0001806a9285)
    */
/* WARNING: Removing unreachable block (ram,0x0001806a9233) */
/* WARNING: Removing unreachable block (ram,0x0001806a9237) */
/* WARNING: Removing unreachable block (ram,0x0001806a8c05) */
/* WARNING: Removing unreachable block (ram,0x0001806a9137) */
/* WARNING: Removing unreachable block (ram,0x0001806a9375) */
/* WARNING: Removing unreachable block (ram,0x0001806a8bee) */

void FUN_1806a8b40(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  uint *puVar3;
  char *pcVar4;
  int iVar5;
  uint uVar6;
  byte bVar7;
  undefined8 uVar8;
  ulonglong uVar9;
  char *pcVar10;
  uint uVar11;
  code **ppcVar12;
  ulonglong uVar13;
  uint uVar14;
  uint *puVar15;
  undefined1 *puVar16;
  int iVar17;
  longlong lVar18;
  longlong lVar19;
  uint *puVar20;
  ulonglong uVar21;
  longlong lVar22;
  longlong *plVar23;
  undefined8 uVar24;
  uint local_res8 [2];
  undefined4 *local_res10;
  undefined *local_res18;
  code *local_res20;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  undefined8 local_68;
  undefined1 local_60 [8];
  longlong *local_58;
  
  puVar16 = auStack_98;
  local_68 = 0xfffffffffffffffe;
  uVar24 = 0xe10;
  lVar19 = 0x2b0;
  local_res10 = &DAT_1815064c4;
  local_res18 = &DAT_1815065c4;
  iVar17 = (((DAT_1815064c4 * 0x25 + DAT_1815064c8) * 0x25 + DAT_1815064cc) * 0x25 + DAT_1815064d0)
           * 0x25 + DAT_1815064d4;
  FUN_1806b9be0(param_1);
  iVar17 = ((((iVar17 * 0x25 + DAT_1815064d8) * 0x25 + DAT_1815064dc) * 0x25 + DAT_1815064e0) * 0x25
           + DAT_1815064e4) * 0x25 + DAT_1815064e8;
  FUN_1806ba570(param_1,0);
  iVar17 = (iVar17 * 0x25 + DAT_1815064ec) * 0x25 + DAT_1815064f0;
  plVar23 = (longlong *)register0x00000020;
  do {
    FUN_1806a7553(0x601c);
    plVar23 = (longlong *)(~(((ulonglong)plVar23 ^ 0xffffffffffffffff) + 1) + 1);
                    /* WARNING: Call to offcut address within same function */
    func_0x0001806a9139();
    uVar11 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  iVar17 = iVar17 * 0x25 + DAT_1815064f4;
  lVar22 = 2;
  FUN_1806bace0(param_1,0);
  iVar17 = (iVar17 * 0x25 + DAT_1815064f8) * 0x25 + DAT_1815064fc;
  do {
    FUN_1806a7e92(0x601c);
    lVar18 = lVar22 + lVar19;
    lVar22 = (lVar19 - lVar18 ^ 0xffffffffffffffffU) + 1;
    lVar19 = lVar18 - lVar22;
    uVar11 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  iVar17 = ((((((iVar17 * 0x25 + DAT_181506500) * 0x25 + DAT_181506504) * 0x25 + DAT_181506508) *
              0x25 + DAT_18150650c) * 0x25 + DAT_181506510) * 0x25 + DAT_181506514) * 0x25 +
           DAT_181506518;
  uVar8 = FUN_1806ab5b0();
  local_78 = 1;
  uVar21 = 2;
  puVar20 = (uint *)0x0;
  uVar8 = FUN_18066b810(local_60,uVar8);
  FUN_18067dba0(param_1 + 8,uVar8);
  if (local_58 != (longlong *)0x0) {
    LOCK();
    plVar1 = local_58 + 1;
    lVar22 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar22 == 1) {
      (**(code **)(*local_58 + 8))(local_58);
      LOCK();
      piVar2 = (int *)((longlong)local_58 + 0xc);
      iVar5 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar5 == 1) {
        (**(code **)(*local_58 + 0x10))(local_58);
      }
    }
  }
  iVar17 = ((((((((((((iVar17 * 0x25 + DAT_18150651c) * 0x25 + DAT_181506520) * 0x25 + DAT_181506524
                    ) * 0x25 + DAT_181506528) * 0x25 + DAT_18150652c) * 0x25 + DAT_181506530) * 0x25
                + DAT_181506534) * 0x25 + DAT_181506538) * 0x25 + DAT_18150653c) * 0x25 +
             DAT_181506540) * 0x25 + DAT_181506544) * 0x25 + DAT_181506548) * 0x25 + DAT_18150654c;
  *(undefined4 *)(param_1 + 0x30) = 0;
  iVar17 = ((((iVar17 * 0x25 + DAT_181506550) * 0x25 + DAT_181506554) * 0x25 + DAT_181506558) * 0x25
           + DAT_18150655c) * 0x25 + DAT_181506560;
  *(undefined4 *)(param_1 + 0x34) = 0;
  iVar17 = (iVar17 * 0x25 + DAT_181506564) * 0x25 + DAT_181506568;
  do {
    uVar8 = rdtsc();
    uVar14 = (uint)((ulonglong)uVar8 >> 0x20);
    puVar15 = (uint *)CONCAT44((int)((ulonglong)local_res8 >> 0x20),uVar14);
    uVar11 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = ((uint)uVar8 ^ uVar14) * -0x3b3113ad;
  local_res8[0] = (uVar11 >> 0x18 ^ uVar11) * -0x3b3100af;
  if (local_res8[0] < 0x2d228e7) {
    local_res20 = (code *)0x0;
    do {
      ppcVar12 = &local_res20;
      FUN_1806a7ade(ppcVar12,&local_res20);
      puVar15 = (uint *)0xe8cd;
      *ppcVar12 = FUN_1813f2240;
      FUN_1806a87ec();
      uVar11 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    uVar9 = (*local_res20)();
    if (1 < uVar9) {
      lVar22 = *plVar23;
      plVar1 = plVar23;
      while (lVar22 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar22 = *plVar1;
      }
    }
  }
  local_res10 = (undefined4 *)0xe7d34df505c09de7;
  local_res8[0] = 0x5c09de7;
  do {
    uVar11 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  iVar17 = (((((iVar17 * 0x25 + DAT_18150656c) * 0x25 + DAT_181506570) * 0x25 + DAT_181506574) *
             0x25 + DAT_181506578) * 0x25 + DAT_18150657c) * 0x25 + DAT_181506580;
  *(undefined4 *)(param_1 + 0x38) = 0;
  uVar11 = (((((((((((((((iVar17 * 0x25 + DAT_181506584) * 0x25 + DAT_181506588) * 0x25 +
                       DAT_18150658c) * 0x25 + DAT_181506590) * 0x25 + DAT_181506594) * 0x25 +
                    DAT_181506598) * 0x25 + DAT_18150659c) * 0x25 + DAT_1815065a0) * 0x25 +
                 DAT_1815065a4) * 0x25 + DAT_1815065a8) * 0x25 + DAT_1815065ac) * 0x25 +
              DAT_1815065b0) * 0x25 + DAT_1815065b4) * 0x25 + DAT_1815065b8) * 0x25 + DAT_1815065bc)
           * 0x25 + DAT_1815065c0;
  do {
    uVar9 = ~(ulonglong)plVar23;
    plVar23 = (longlong *)(~(uVar9 + 1) + 1);
    uVar21 = (~uVar21 + 1 ^ 0xffffffffffffffff) + 1;
    uVar14 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  do {
    uVar13 = 0x601c;
    uVar14 = FUN_1806a9b3c();
    if ((uVar13 & 0xcf00) == 0) {
      uVar14 = uVar14 ^ 0xf74976d0;
      pcVar10 = (char *)(ulonglong)uVar14;
      puVar3 = (uint *)(uVar13 - 0x7d);
      bVar7 = (byte)uVar13 & 0x1f;
      *puVar3 = *puVar3 >> bVar7 | *puVar3 << 0x20 - bVar7;
      uVar6 = *puVar3;
      *(int *)(uVar13 - 0x79) = *(int *)(uVar13 - 0x79) + -1;
      pcVar10[-0x1737c6b8] = pcVar10[-0x1737c6b8] << 1 | ((uVar13 & 0x1f) != 0 && (int)uVar6 < 0);
      *puVar15 = *puVar15 | uVar14;
      *(char *)(uVar13 - 0x75) = *(char *)(uVar13 - 0x75) + (char)uVar14;
      pcVar4 = (char *)(~(uVar9 + 1) - 0x50f0feb7);
      *pcVar4 = *pcVar4 + (char)uVar21;
      *pcVar10 = *pcVar10 + (char)uVar14;
      puVar3 = puVar20;
      puVar20 = puVar15;
code_r0x0001806a92a7:
      puVar15 = puVar3;
      uVar14 = ((uint)uVar13 | 0xfffffffe) + 1;
    }
    else {
      FUN_1806a9bd6();
      uVar14 = (*(int *)plVar23 + 1) * *(int *)plVar23 & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar13 = (ulonglong)(uVar14 - 1);
        puVar3 = puVar15;
        goto code_r0x0001806a92a7;
      }
    }
    if (uVar14 == 0) {
      uVar14 = uVar11 >> 1;
      uVar11 = uVar14 | (uint)((uVar11 & 1) != 0) << 0x1f;
      uVar11 = (uVar14 << 2 | uVar11 >> 0x1e) & 0x99999999 |
               (uVar11 >> 2 | uVar14 << 0x1e) & 0x66666666;
      if (((uVar11 << 2 | uVar11 >> 0x1e) & 0x99999999 | (uVar11 >> 2 | uVar11 << 0x1e) & 0x66666666
          ) + 0xc2bbff46 != local_res8[0]) {
        thunk_FUN_1805a9280();
        return;
      }
      do {
        *(longlong **)(puVar16 + -8) = plVar23;
        *(uint **)(puVar16 + -0x10) = puVar15;
        *(undefined8 *)(puVar16 + -0x18) = uVar24;
        lVar22 = -(longlong)(int)lVar19;
        uVar24 = *(undefined8 *)(puVar16 + lVar22 + 0x298);
        puVar15 = *(uint **)(puVar16 + lVar22 + 0x2a0);
        plVar23 = *(longlong **)(puVar16 + lVar22 + 0x2a8);
        puVar16 = puVar16 + lVar22 + 0x2b0;
        uVar11 = ((int)*plVar23 + 1) * (int)*plVar23 & 0x80000001;
        if ((int)uVar11 < 0) {
          uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar11 != 0);
      *(undefined8 *)(param_1 + 0x3c) = 0;
      *(undefined2 *)(param_1 + 0x59) = 0;
      *(undefined1 *)(param_1 + 0x58) = 0;
      *(undefined8 *)(param_1 + 0x1a0) = 0x65;
      *(undefined8 *)(param_1 + 0x198) = 0x65;
      return;
    }
  } while( true );
}



############ FUN_ 1807bf080 size=3500 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001807bf435) */
/* WARNING: Removing unreachable block (ram,0x0001807bf1b0) */
/* WARNING: Removing unreachable block (ram,0x0001807bf0c7) */
/* WARNING: Removing unreachable block (ram,0x0001807bf0d7) */
/* WARNING: Removing unreachable block (ram,0x0001807bf11b) */
/* WARNING: Removing unreachable block (ram,0x0001807bf32e) */
/* WARNING: Removing unreachable block (ram,0x0001807bf560) */

void FUN_1807bf080(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  byte bVar3;
  void *pvVar4;
  char cVar5;
  longlong *plVar6;
  byte bVar7;
  undefined1 *puVar8;
  undefined4 uVar9;
  int *piVar10;
  ulonglong uVar11;
  uint uVar12;
  uint uVar13;
  void *_Memory;
  int iVar14;
  uint uVar15;
  undefined1 *puVar16;
  int *piVar17;
  longlong lVar18;
  longlong lVar19;
  ulonglong uVar20;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_d8 [32];
  undefined8 local_b8;
  short local_b0 [4];
  undefined8 local_a8;
  uint local_a0;
  int local_9c;
  int *local_98;
  undefined8 local_90;
  uint local_88;
  uint local_84;
  code *local_80;
  longlong local_78;
  undefined8 local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_d8;
  uVar12 = (uint)&stack0x00000000;
  local_88 = 0x883e << ((char)((int)-(((uVar12 & 0xeff) + 1) * (uVar12 & 0xeff) + 0x3ac1 &
                                     0x80000001) >> 0x1f) -
                        (char)((int)-(((uVar12 & 0x1ff) * (uVar12 & 0x1ff) * 0x10 + 4) % 0x13) >>
                              0x1f) & 0x1fU) ^ 0x89fe;
  if (((ulonglong)&stack0x00000000 & 0x110) == 0) {
    uVar12 = ((uVar12 & 0x8ff) + 1) * (uVar12 & 0x8ff) + 0x6f85 & 0x80000001;
  }
  else {
    uVar12 = 1;
  }
  local_84 = (int)(-uVar12 | uVar12) >> 0x1f & 0x5705U ^ 0x5495;
  local_58 = 0;
  local_50 = 0xf;
  local_68 = 0;
  piVar10 = &iRam000000018162b348;
  local_b8 = 0x18162b448;
  local_a8._0_4_ = 0x4bce9b23;
  local_a8._4_4_ = 0;
  local_90 = 0x100;
  uVar12 = (iRam000000018162b348 + -0x2b914ad3) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + iRam000000018162b34c) * -0x395b586d;
  uVar15 = ((uVar12 >> 0x10 ^ uVar12) + iRam000000018162b350) * -0x395b586d;
  uVar15 = uVar15 ^ uVar15 >> 0x10;
  uVar12 = uVar15 & 0x7f | 0x23;
  lVar18 = -((longlong)(int)((uVar12 * uVar12 * 0xbfcf == 0x5435367) + 0xb020) ^ 0xb010U);
  do {
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = (*(int *)(lVar18 + 0x18162b384) + uVar15) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b388)) * -0x395b586d;
  uVar15 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b38c)) * -0x395b586d;
  uVar15 = uVar15 ^ uVar15 >> 0x10;
  cVar5 = (char)(lVar18 + 0x44);
  bVar3 = (byte)uVar15 & 0x7f;
  lVar18 = lVar18 + 0x44 +
           (0x7c6bL >> (((bVar3 + 1) * (bVar3 + 1) * bVar3 * bVar3 ^ (cVar5 + -1) * cVar5) & 1) ^
           0x7c6fU);
  uVar12 = (*(int *)(lVar18 + 0x18162b348) + uVar15) * -0x395b586d;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar12 = (*(int *)(lVar18 + 0x18162b34c) + (uVar12 ^ uVar12 >> 0x10)) * -0x395b586d;
  local_98 = piVar10;
  local_78 = param_1;
  uVar9 = (**(code **)(*param_2 + 0xc0))(param_2,&local_68,uVar15,0);
  local_98 = (int *)CONCAT44(local_98._4_4_,uVar9);
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b350)) * -0x395b586d;
  lVar19 = lVar18 + 0xc;
  uVar13 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b354)) * -0x395b586d;
  uVar13 = uVar13 ^ uVar13 >> 0x10;
  bVar7 = (byte)local_90 & 0x7f;
  uVar12 = (uint)lVar19 & 0x1ff;
  iVar14 = (uVar12 + 2) * (uVar12 + 1) * uVar12;
  bVar3 = (byte)lVar19 & 0x4f;
  uVar12 = uVar13 & 0xf | 0x79;
  uVar15 = (uint)local_90 & 7 | 0x72;
  uVar15 = uVar12 * uVar12 * 0xd5c7 ^ uVar15 * uVar15 * 0x3805;
  uVar12 = (uint)local_90 & 0xaff;
  uVar12 = (uVar12 - 1) * uVar12 - 1 & 1;
  lVar18 = ((longlong)(int)((uVar12 | -uVar12) ^ (-uVar15 | uVar15)) >> 0x1f ^
            ((longlong)(0x9483 << ((bVar7 + 1) * (bVar7 + 1) * bVar7 * bVar7 & 2)) | 0xf5fbU) ^
           0xf5f7) + lVar19 +
           ((longlong)
            (0x292b - ((((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e) <<
                      ((bVar3 + 1) * (bVar3 + 1) * bVar3 * bVar3 & 3))) ^ 0xffffffffffffd6d3U);
  uVar12 = (*(int *)(lVar18 + 0x18162b348) + uVar13) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b34c)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b350)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b354)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b358)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b35c)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b360)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b364)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b368)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b36c)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b370)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b374)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b378)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b37c)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b380)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b384)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b388)) * -0x395b586d;
  local_a8._0_4_ = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(lVar18 + 0x18162b38c)) * -0x395b586d;
  local_a8._0_4_ = (uint)local_a8 ^ (uint)local_a8 >> 0x10;
  do {
    uVar20 = ((ulonglong)piVar10 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff;
    piVar10 = (int *)(uVar20 + 1);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = (*(int *)(uVar20 + 0x49 + lVar18) + (uint)local_a8) * -0x395b586d;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807bfd62(0x4324);
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar12 = (*(int *)(uVar20 + 0x4d + lVar18) + (uVar12 ^ uVar12 >> 0x10)) * -0x395b586d;
  local_a8 = CONCAT44(local_a8._4_4_,uVar12 ^ uVar12 >> 0x10);
  local_b8 = 0x284dab239789b57;
  do {
    uVar2 = rdtsc();
    local_a0 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_1807be657();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_a0 = (local_a0 * -0x7a143d4e >> 0x18 ^ local_a0 * -0x7a143d4e) * -0x3b31a42f;
  lVar19 = local_78;
  if (local_a0 < 0x6aa638) {
    do {
      local_80 = FUN_1813f2240;
      uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    uVar11 = FUN_1813f2240(0,0x2f97);
    lVar19 = local_78;
    if (1 < uVar11) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar6 = (longlong *)register0x00000020;
      while (lVar1 != -0x3333333333333334) {
        *plVar6 = 0;
        plVar6 = plVar6 + 8;
        lVar1 = *plVar6;
      }
    }
  }
  uVar12 = (*(int *)(uVar20 + 0x51 + lVar18) + (uint)local_a8) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x55 + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x59 + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x5d + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x61 + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x65 + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x69 + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x6d + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x71 + lVar18)) * -0x395b586d;
  uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0x75 + lVar18)) * -0x395b586d;
  lVar18 = lVar18 + 0x78;
  uVar15 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18)) * -0x395b586d;
  uVar12 = (uint)lVar18 & 0x33f;
  iVar14 = (uVar12 + 2) * (uVar12 + 1) * uVar12;
  uVar12 = (uint)local_90 & 0x63ff;
  uVar12 = uVar12 * uVar12 + 1;
  lVar18 = lVar18 + (0x1955L >>
                     ((byte)((((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e) <<
                            ((char)uVar12 + (char)(uVar12 / 7) * -7 & 0x1fU)) & 0x3f) ^ 0x1951U);
  uVar12 = ((uVar15 >> 0x10 ^ uVar15) + *(int *)((longlong)piVar10 + lVar18)) * -0x395b586d;
  piVar17 = &local_9c;
  (**(code **)(*param_2 + 0xd0))(param_2,&local_68,piVar17,local_b0);
  do {
    if (local_9c == 0) {
      uVar12 = (*(int *)(uVar20 + 5 + lVar18) + (uVar12 ^ uVar12 >> 0x10)) * -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 9 + lVar18)) * -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)(uVar20 + 0xd + lVar18)) * -0x395b586d;
      uVar20 = (ulonglong)(uVar12 ^ uVar12 >> 0x10);
      do {
        FUN_1807be7b7(0x4324);
        lVar19 = uVar20 + (longlong)piVar10;
        uVar20 = ((longlong)piVar10 - lVar19 ^ 0xffffffffffffffffU) + 1;
        piVar10 = (int *)(lVar19 - uVar20);
        uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar12 < 0) {
          uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar12 != 0);
      uVar12 = (*(int *)((longlong)piVar10 + lVar18 + 0x10) + (int)uVar20) * -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x14)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x18)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x1c)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x20)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x24)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x28)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x2c)) *
               -0x395b586d;
      do {
        FUN_1807c18d5(0x4324);
        uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar15 < 0) {
          uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar15 != 0);
      uVar12 = (*(int *)((longlong)piVar10 + lVar18 + 0x30) + (uVar12 ^ uVar12 >> 0x10)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x34)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x38)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x3c)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x40)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x44)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x48)) *
               -0x395b586d;
      do {
        uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar15 < 0) {
          uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar15 != 0);
      uVar12 = (*(int *)((longlong)piVar10 + lVar18 + 0x4c) + (uVar12 ^ uVar12 >> 0x10)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x50)) *
               -0x395b586d;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x54)) *
               -0x395b586d;
      uVar20 = (ulonglong)uVar12;
      uVar12 = ((uVar12 >> 0x10 ^ uVar12) + *(int *)((longlong)piVar10 + lVar18 + 0x58)) *
               -0x395b586d;
      uVar12 = (uVar12 >> 0x10 ^ uVar12) + 0x3908f999;
      (**(code **)(*param_2 + 200))(param_2);
      if ((uVar12 * 0x80000 | uVar12 >> 0xd) + 0x1ba96765 == (int)local_b8) {
        lVar18 = (longlong)(int)local_84;
        puVar8 = auStack_d8;
        do {
          puVar16 = puVar8;
          *(undefined8 *)(puVar16 + -8) = 0x1807bfe80;
          lVar19 = lVar18;
          FUN_1807c18d5();
          *(int **)(puVar16 + -8) = piVar10;
          *(int **)(puVar16 + -0x10) = piVar17;
          *(ulonglong *)(puVar16 + -0x18) = uVar20;
          lVar19 = -lVar19;
          uVar20 = *(ulonglong *)(puVar16 + lVar19 + 0x378);
          piVar17 = *(int **)(puVar16 + lVar19 + 0x380);
          piVar10 = *(int **)(puVar16 + lVar19 + 0x388);
          uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
          if ((int)uVar12 < 0) {
            uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
          }
          puVar8 = puVar16 + lVar19 + 0x390;
        } while (uVar12 != 0);
        if (local_50 < 0x10) {
          *(undefined **)(puVar16 + lVar19 + 0x388) = &UNK_1807bffaa;
        }
        pvVar4 = (void *)CONCAT71(uStack_67,local_68);
        _Memory = pvVar4;
        if ((0xfff < local_50 + 1) &&
           (_Memory = *(void **)((longlong)pvVar4 + -8),
           0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
          *(undefined **)(puVar16 + lVar19 + 0x388) = &UNK_1807bffcb;
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        *(undefined1 **)(puVar16 + lVar19 + 0x388) = &LAB_1807bff9c;
        free(_Memory);
      }
      thunk_FUN_1805a9280((longlong)(int)local_88,uVar20);
      return;
    }
    if (local_b0[0] == 0) {
      if (local_9c != 0xc) goto LAB_1807bfab4;
      FUN_18079f0e0(*(undefined8 *)(lVar19 + 8),param_2);
      *(undefined1 *)(lVar19 + 0x148) = 1;
    }
    else if ((local_b0[0] == 1) && (local_9c == 0xc)) {
      FUN_1809f8f70(lVar19 + 0x10,param_2);
      *(undefined1 *)(lVar19 + 0x149) = 1;
    }
    else {
LAB_1807bfab4:
      FUN_1806d8eb0(param_2,local_9c);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    piVar17 = &local_9c;
    (**(code **)(*param_2 + 0xd0))(param_2,&local_68,piVar17,local_b0);
  } while( true );
}



############ FUN_ 180a7f400 size=1356 ############

char * FUN_180a7f400(undefined8 *param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  char cVar3;
  ulonglong uVar4;
  code **ppcVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  uint local_94;
  undefined8 local_90;
  uint local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  uint local_68;
  code *local_60;
  undefined8 *local_58;
  undefined8 local_50;
  ulonglong local_30;
  char *pcVar5;
  
  local_50 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_b8;
  *param_1 = license_services::LsObjectRelationVectorMachineBinding::vftable;
  uVar9 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0xb00) == 0) {
    uVar7 = uVar9 & 0x1fff;
  }
  else {
    uVar7 = uVar9 & 0x16ff;
  }
  uVar8 = (uVar7 * uVar7 * 0x10 + 4) % 0x13;
  uVar7 = (((uVar9 & 0x38ff) + 1) * (uVar9 & 0x38ff) + 7) % 0x51;
  local_68 = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x6039 ^ ((int)(-uVar8 | uVar8) >> 0x1f) * -0x6ee9;
  if (((ulonglong)&stack0x00000000 & 0x1100) == 0) {
    uVar9 = (((uVar9 & 0x34ff) + 1) * (uVar9 & 0x34ff) + 7) % 0x51;
  }
  else {
    uVar9 = 1;
  }
  local_88 = (int)(-uVar9 | uVar9) >> 0x1f & 0x6128U ^ 0x6898;
  local_70 = 0;
  local_80 = 0x9ffff0;
  local_78 = 0x1809ffff0;
  local_90 = 0x180a02c9c;
  do {
    uVar2 = rdtsc();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x12aa7333;
  local_94 = (uVar9 >> 0x18 ^ uVar9) * -0x51ca00af;
  local_58 = param_1;
  if (local_94 < 0x3333333f) {
    local_60 = (code *)0x0;
    do {
      ppcVar6 = &local_60;
                    /* WARNING: Call to offcut address within same function */
      func_0x000180a7f781(ppcVar6,&local_60);
      *ppcVar6 = FUN_1813f2240;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar4 = (*local_60)();
    if (1 < uVar4) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  local_70 = 0xa508dd3ec43afa36;
  local_80 = CONCAT44(local_80._4_4_,0xc43afa36);
  local_98 = 0xb5;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
                    /* WARNING: Call to offcut address within same function */
  uVar4 = func_0x000180a7f7bc();
  cVar3 = (char)(uVar4 & 0xffffffffffffff81) + '$';
  pcVar5 = (char *)CONCAT71((int7)((uVar4 & 0xffffffffffffff81) >> 8),cVar3);
  out(1,(int)pcVar5);
  *pcVar5 = *pcVar5 + cVar3;
  return pcVar5;
}



############ FUN_ 18092ec20 size=3400 ############

/* WARNING: Instruction at (ram,0x00018092f534) overlaps instruction at (ram,0x00018092f532)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018092f2db) */
/* WARNING: Removing unreachable block (ram,0x00018092eeb5) */
/* WARNING: Removing unreachable block (ram,0x00018092f5a0) */
/* WARNING: Removing unreachable block (ram,0x00018092f0b1) */

void FUN_18092ec20(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  ulonglong uVar4;
  uint uVar5;
  void *pvVar6;
  undefined8 *******pppppppuVar7;
  int iVar8;
  longlong *plVar9;
  longlong *plVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  ulonglong uVar14;
  longlong lVar15;
  int *piVar16;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_5d8 [32];
  undefined4 local_5b8;
  undefined8 *local_5b0;
  undefined8 local_5a8;
  undefined *local_5a0;
  uint local_598;
  uint local_594;
  undefined8 local_588;
  undefined8 uStack_580;
  code *local_578;
  void *local_570;
  longlong lStack_568;
  longlong local_560;
  void *local_558;
  undefined8 uStack_550;
  longlong local_548;
  undefined8 local_540;
  longlong local_538;
  undefined4 local_528;
  undefined4 uStack_524;
  undefined4 uStack_520;
  undefined4 uStack_51c;
  undefined8 local_518;
  undefined8 ******local_510 [2];
  undefined8 local_500;
  ulonglong local_4f8;
  undefined **local_4e8;
  undefined1 local_4e0 [16];
  undefined8 local_4d0;
  undefined8 local_4c8;
  undefined8 local_4c0;
  undefined1 local_4b8 [752];
  undefined8 local_1c8;
  undefined8 uStack_1c0;
  undefined8 local_1b8;
  undefined4 local_1b0;
  undefined **local_1a8;
  undefined1 local_1a0 [352];
  undefined4 local_40;
  undefined2 local_3c;
  ulonglong local_38;
  
  local_518 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_5d8;
  local_5a0 = &DAT_18136c410;
  uVar3 = (DAT_18136c310 + -0x7e8aee03) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c314) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c318) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c31c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c320) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c324) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c328) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c32c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c330) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c334) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c338) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c33c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c340) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c344) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c348) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c34c) * -0x395b586d;
  local_5a8 = 0xb3d307fcc9da0249;
  local_594 = 0xc9da0249;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c350) * -0x395b586d;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_18136c354 + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c358) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c35c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c360) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c364) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c368) * -0x395b586d;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_18136c36c + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c370) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c374) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c378) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c37c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c380) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c384) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c388) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c38c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c390) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c394) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c398) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c39c) * -0x395b586d;
  uVar5 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18136c3a0) * -0x395b586d;
  uVar5 = uVar5 ^ uVar5 >> 0x10;
  uVar3 = uVar5 & 0x1f;
  uVar14 = (longlong)(int)((uVar3 * uVar3 * (uVar3 + 1) * (uVar3 + 1) & 1) + 0x184c) ^
           0xffffffffffffe7b8;
  uVar3 = (*(int *)(&DAT_18136c3b0 + uVar14) + uVar5) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(&DAT_18136c3b4 + uVar14)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(&DAT_18136c3b8 + uVar14)) * -0x395b586d;
  uVar11 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(&DAT_18136c3bc + uVar14)) * -0x395b586d;
  uVar11 = uVar11 ^ uVar11 >> 0x10;
  uVar3 = uVar11 & 0xf | 0x1a;
  uVar5 = uVar11 & 0x7f | 0x2d;
  uVar13 = uVar3 * uVar3 * 0xd7cb ^ uVar5 * uVar5 * 0x12fd;
  uVar12 = ((uVar11 & 0x1aff) - 1) * (uVar11 & 0x1aff) - 1 & 1;
  uVar3 = (uint)(uVar14 + 0xac);
  uVar5 = uVar3 & 0x10ff;
  uVar3 = uVar3 & 0x1bf;
  iVar8 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  lVar15 = uVar14 + 0xac +
           (((longlong)(((int)(-uVar13 | uVar13) >> 0x1f) - ((int)(-uVar12 | uVar12) >> 0x1f)) |
            0x8626U) ^ 0x8616) +
           ((longlong)
            (int)((((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e |
                  (uVar5 - 1) * uVar5 & 1) + 0x7037) ^ 0xffffffffffff8fe3U);
  uVar11 = (*(int *)(lVar15 + 0x18136c310) + uVar11) * -0x395b586d;
  uVar11 = uVar11 ^ uVar11 >> 0x10;
  uVar5 = uVar11 & 0xbf;
  uVar13 = (uint)lVar15 & 0x7f;
  uVar12 = -1 >> ((byte)lVar15 & 0x1f);
  uVar3 = uVar13 + 1;
  uVar14 = (ulonglong)uVar3;
  lVar15 = ((longlong)(((int)(-uVar12 | uVar12) >> 0x1f) * -0xb7e) ^ 0xbfeU) + lVar15 +
           (((longlong)(int)(((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3) |
            (ulonglong)(uVar13 * uVar13 * uVar3 * uVar3 & 1)) ^ 0xffffffffffffff84);
  uVar3 = (*(int *)(lVar15 + 0x18136c310) + uVar11) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c314)) * -0x395b586d;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (*(int *)(lVar15 + 0x18136c318) + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c31c)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c320)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c324)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c328)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c32c)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c330)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c334)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c338)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c33c)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c340)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c344)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c348)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c34c)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c350)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c354)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c358)) * -0x395b586d;
  do {
    uVar2 = rdtsc();
    local_598 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_18092eac5();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_598 = (local_598 * -0xae00af >> 0x18 ^ local_598 * -0xae00af) * -0x3d4d4602;
  if (local_598 < 0x1f81f81) {
    do {
      local_578 = FUN_1813f2240;
      FUN_1809314b4(&local_578,0x3869);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = (*local_578)();
    if (1 < uVar4) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar10 = (longlong *)register0x00000020;
      while (lVar1 != -0x3333333333333334) {
        *plVar10 = 0;
        plVar10 = plVar10 + 8;
        lVar1 = *plVar10;
      }
    }
  }
  do {
    uVar4 = ~-param_1;
    param_1 = uVar4 + 1;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (*(int *)(lVar15 + 0x18136c35c) + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  piVar16 = (int *)register0x00000020;
  do {
    piVar16 = (int *)(~(~((longlong)piVar16 - uVar14) + 1) + 1 + uVar14);
    uVar5 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (*(int *)(lVar15 + 0x18136c360) + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(lVar15 + 0x18136c364)) * -0x395b586d;
  uVar3 = (uVar3 >> 0x10 ^ uVar3) + 0xf3836013;
  uVar5 = ((uVar3 >> 8 | uVar3 * 0x1000000) & 0xd728d728 |
          (uVar3 * 0x100 | uVar3 >> 0x18) & 0x28d728d7) + 0x66065284;
  uVar3 = (uVar5 >> 8 | uVar5 * 0x1000000) & 0xea15ea15 |
          (uVar5 * 0x100 | uVar5 >> 0x18) & 0x15ea15ea;
  if (((uVar3 >> 2 & 0xcccccccc | uVar3 << 0x1e | (uVar3 & 0xccccccc) << 2 | (uVar5 & 0xff) >> 6) !=
       local_594) || (*(char *)(uVar4 + 0x49) != '\0')) {
    *(undefined1 *)(uVar4 + 0x49) = 0;
    *(undefined8 *)(uVar4 + 0x39) = 0;
    plVar10 = *(longlong **)(uVar4 + 0x41);
    *(undefined8 *)(uVar4 + 0x41) = 0;
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      plVar9 = plVar10 + 1;
      lVar15 = *plVar9;
      *(int *)plVar9 = (int)*plVar9 + -1;
      UNLOCK();
      if ((int)lVar15 == 1) {
        (**(code **)(*plVar10 + 8))(plVar10);
        LOCK();
        piVar16 = (int *)((longlong)plVar10 + 0xc);
        iVar8 = *piVar16;
        *piVar16 = *piVar16 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)(*plVar10 + 0x10))(plVar10);
        }
      }
    }
    local_588 = *(longlong *)(uVar4 + 9);
    plVar10 = *(longlong **)(uVar4 + 0x11);
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar10 + 1) = (int)plVar10[1] + 1;
      UNLOCK();
    }
    uStack_580 = plVar10;
    FUN_1805a4070(local_510,uVar4 + 0x19);
    *(undefined8 *)(uVar4 + 9) = 0;
    plVar9 = *(longlong **)(uVar4 + 0x11);
    *(undefined8 *)(uVar4 + 0x11) = 0;
    if (plVar9 != (longlong *)0x0) {
      LOCK();
      plVar10 = plVar9 + 1;
      lVar15 = *plVar10;
      *(int *)plVar10 = (int)*plVar10 + -1;
      UNLOCK();
      plVar10 = uStack_580;
      if ((int)lVar15 == 1) {
        (**(code **)(*plVar9 + 8))(plVar9);
        LOCK();
        piVar16 = (int *)((longlong)plVar9 + 0xc);
        iVar8 = *piVar16;
        *piVar16 = *piVar16 + -1;
        UNLOCK();
        plVar10 = uStack_580;
        if (iVar8 == 1) {
          (**(code **)(*plVar9 + 0x10))(plVar9);
          plVar10 = uStack_580;
        }
      }
    }
    FUN_1805a6cb0(uVar4 + 0x19,&DAT_181baf991,0);
    if (local_588 != 0) {
      local_4e8 = pace::eden::thrift::authorize::CloseDirectLocationConnectionInput::vftable;
      local_4d0 = 0;
      local_4c8 = 0xf;
      local_4e0[0] = 0;
      FUN_1805a6cb0(local_4e0,&DAT_181baf991,0);
      local_4c0 = 0;
      FUN_180575180(local_4b8);
      local_1c8 = 0;
      uStack_1c0 = 0;
      local_1b8 = 0;
      local_1b0 = 0;
      local_1a8 = pace::eden::thrift::authorize::CloseDirectLocationConnectionReturn::vftable;
      FUN_180750800(local_1a0);
      local_40 = 4;
      local_3c = 0;
      pppppppuVar7 = local_510;
      if (0xf < local_4f8) {
        pppppppuVar7 = (undefined8 *******)local_510[0];
      }
      FUN_1805a6cb0(local_4e0,pppppppuVar7,local_500);
      local_1b0._0_3_ = CONCAT12(1,(undefined2)local_1b0);
      FUN_1805b9ea0(local_4b8,uVar4 + 0x61);
      local_4c0 = FUN_1806d2560();
      local_558 = (void *)0x0;
      uStack_550 = 0;
      local_548 = 0;
      local_570 = (void *)0x0;
      lStack_568 = 0;
      local_560 = 0;
      FUN_18092ce70(&local_4e8,&local_558,1);
      local_540 = *(undefined8 *)(uVar4 + 0x51);
      local_538 = *(longlong *)(uVar4 + 0x59);
      plVar9 = plVar10;
      if (local_538 != 0) {
        LOCK();
        *(int *)(local_538 + 8) = *(int *)(local_538 + 8) + 1;
        UNLOCK();
        plVar9 = uStack_580;
      }
      local_528 = (undefined4)local_588;
      uStack_524 = local_588._4_4_;
      uStack_520 = (undefined4)uStack_580;
      uStack_51c = uStack_580._4_4_;
      plVar10 = (longlong *)0x0;
      if (plVar9 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar9 + 1) = (int)plVar9[1] + 1;
        UNLOCK();
        plVar10 = uStack_580;
      }
      local_5b0 = &local_540;
      local_5b8 = *(undefined4 *)(uVar4 + 0x4d);
      FUN_1806b91d0(6,&local_558,&local_570,&local_528);
      FUN_18092ca90(local_570,lStack_568 - (longlong)local_570,&local_1a8);
      if (local_570 != (void *)0x0) {
        pvVar6 = local_570;
        if ((0xfff < (ulonglong)(local_560 - (longlong)local_570)) &&
           (pvVar6 = *(void **)((longlong)local_570 + -8),
           0x1f < (ulonglong)((longlong)local_570 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar6);
      }
      if (local_558 != (void *)0x0) {
        pvVar6 = local_558;
        if ((0xfff < (ulonglong)(local_548 - (longlong)local_558)) &&
           (pvVar6 = *(void **)((longlong)local_558 + -8),
           0x1f < (ulonglong)((longlong)local_558 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar6);
      }
      local_1a8 = pace::eden::thrift::authorize::CloseDirectLocationConnectionReturn::vftable;
      FUN_180750cf0(local_1a0);
      FUN_18092e830(&local_4e8);
    }
    plVar9 = uStack_580;
    if (0xf < local_4f8) {
      pppppppuVar7 = (undefined8 *******)local_510[0];
      if ((0xfff < local_4f8 + 1) &&
         (pppppppuVar7 = (undefined8 *******)local_510[0][-1],
         0x1f < (ulonglong)((longlong)local_510[0] + (-8 - (longlong)pppppppuVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pppppppuVar7);
    }
    if (plVar10 != (longlong *)0x0) {
      LOCK();
      plVar10 = plVar10 + 1;
      lVar15 = *plVar10;
      *(int *)plVar10 = (int)*plVar10 + -1;
      UNLOCK();
      if ((int)lVar15 == 1) {
        (**(code **)(*uStack_580 + 8))(uStack_580);
        LOCK();
        piVar16 = (int *)((longlong)plVar9 + 0xc);
        iVar8 = *piVar16;
        *piVar16 = *piVar16 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)(*uStack_580 + 0x10))();
        }
      }
    }
  }
}



############ FUN_ 18077e390 size=1659 ############

/* WARNING: Instruction at (ram,0x00018077ea37) overlaps instruction at (ram,0x00018077ea32)
    */
/* WARNING: Removing unreachable block (ram,0x00018077ed6f) */
/* WARNING: Removing unreachable block (ram,0x00018077ec2f) */
/* WARNING: Removing unreachable block (ram,0x00018077e3e3) */
/* WARNING: Removing unreachable block (ram,0x00018077e9cc) */
/* WARNING: Removing unreachable block (ram,0x00018077ed63) */
/* WARNING: Removing unreachable block (ram,0x00018077ea32) */

ulonglong FUN_18077e390(int param_1,longlong *param_2)

{
  longlong *plVar1;
  ulonglong uVar2;
  longlong lVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  code **ppcVar7;
  undefined1 *puVar8;
  longlong *plVar9;
  ulonglong uVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  uint unaff_retaddr;
  undefined4 unaff_retaddr_00;
  int local_res8 [2];
  longlong *local_res10;
  longlong lStackX_18;
  undefined1 auStackX_20 [8];
  undefined1 auStack_d8 [32];
  undefined1 uStack_b8;
  undefined1 uStack_b7;
  undefined1 uStack_b6;
  undefined1 uStack_b5;
  undefined1 uStack_b4;
  undefined1 uStack_b3;
  undefined1 uStack_b2;
  undefined1 uStack_b1;
  undefined1 uStack_b0;
  undefined1 uStack_af;
  undefined1 uStack_ae;
  undefined1 uStack_ad;
  undefined1 uStack_ac;
  undefined1 uStack_ab;
  undefined1 uStack_aa;
  undefined1 uStack_a9;
  undefined1 uStack_a8;
  undefined1 uStack_a7;
  undefined1 uStack_a6;
  undefined1 uStack_a5;
  undefined1 uStack_a4;
  undefined1 uStack_a3;
  undefined1 uStack_a2;
  undefined1 uStack_a1;
  undefined1 uStack_a0;
  undefined1 uStack_9f;
  undefined1 uStack_9e;
  undefined1 uStack_9d;
  undefined1 uStack_9c;
  undefined1 auStack_9b [3];
  undefined8 local_98;
  undefined8 local_90;
  uint local_88;
  int local_84;
  undefined4 auStack_80 [2];
  undefined4 auStack_78 [2];
  code *local_70;
  char *pcStack_68;
  char *pcStack_60;
  undefined8 local_58;
  
  puVar8 = auStack_d8;
  local_58 = 0xfffffffffffffffe;
  lVar3 = 0;
  local_84 = 0x960;
  uVar10 = 0x180000000;
  plVar9 = (longlong *)0x2000000;
  lVar12 = 0x41c8;
  local_98 = 0x1814847d8;
  local_90 = 0x1814848d8;
  uVar5 = (iRam00000001814847d8 + -0x4f486278) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847dc) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847e0) * 0x401;
  local_res8[0] = param_1;
  local_res10 = param_2;
  do {
    FUN_18077ca1f(0xc100);
    lVar12 = (-lVar12 ^ 0xffffffffffffffffU) + 1;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001814847e4 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847e8) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847ec) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847f0) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847f4) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814847f8) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_1814847fc) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484800) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484804) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484808) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148480c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484810) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484814) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_181484818) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_18148481c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_181484820) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_181484824) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_181484828) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148482c) * 0x401;
  do {
    uVar4 = rdtsc();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20)) * -0x733212ab;
  local_88 = (uVar6 >> 0x18 ^ uVar6) * -0x51caa42f;
  if (local_88 < 0x190d4f1) {
    local_70 = (code *)0x0;
    do {
      ppcVar7 = &local_70;
                    /* WARNING: Call to offcut address within same function */
      func_0x00018077e9d3(ppcVar7,&local_70);
      *ppcVar7 = FUN_1813f2240;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar2 = (*local_70)(0,0xfdae);
    if (1 < uVar2) {
      lVar13 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar13 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar13 = *plVar1;
      }
    }
  }
  uVar5 = (iRam0000000181484830 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484834) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484838) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148483c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484840) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484844) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484848) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148484c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484850) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484854) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484858) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148485c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484860) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484864) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484868) * 0x401;
  do {
    FUN_18077cf79();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam000000018148486c + (uVar5 ^ uVar5 >> 6)) * 0x401;
  do {
    func_0x00018078013e();
    plVar1 = local_res10;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam0000000181484870 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484874) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484878) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148487c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484880) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484884) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484888) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148488c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484890) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484894) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam0000000181484898) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam000000018148489c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848a0) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848a4) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848a8) * 0x401;
  local_98 = 0x446712c11771e8aa;
  lStackX_18 = CONCAT44(lStackX_18._4_4_,0x1771e8aa);
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848ac) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848b0) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848b4) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848b8) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848bc) * 0x401;
  do {
    lVar13 = 0;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar5 = (iRam00000001814848c0 + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848c4) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848c8) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848cc) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848d0) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + iRam00000001814848d4) * 0x401;
  uVar6 = uVar5 >> 6 ^ uVar5;
  uVar6 = uVar6 >> 4 & 0xf0f0f0f0 | uVar6 << 0x1c | (uVar6 & 0xf0f0f0) << 4 | uVar5 >> 0x1c;
  uVar5 = (uVar6 >> 7 ^ uVar6) >> 0x13 & 0x3f;
  uVar5 = uVar6 ^ (uVar5 << 7 | uVar5) << 0x13;
  uVar6 = (uVar6 << 0x10 | uVar5 >> 0x10) & 0xa93f56c0 |
          (uVar5 >> 0x10 | uVar6 << 0x10) & 0x56c0a93f;
  uVar5 = (uVar6 >> 10 ^ uVar6) >> 3 & 0x3ff;
  uVar6 = uVar6 ^ (uVar5 << 10 | uVar5) << 3;
  lVar11 = (longlong)local_84;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018077e9d3();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar10 = ~(~uVar10 + 1) + 1;
                    /* WARNING: Call to offcut address within same function */
    func_0x00018077e9d3(0xc100);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  if ((char)(((uVar6 >> 0xf | uVar6 << 0x11) != (uint)lStackX_18) * '3') != '\0') {
    if (local_res8[0] == 0x2a9f3eff) {
      plVar1[1] = *plVar1;
      if ((ulonglong)(plVar1[2] - *plVar1) < 0x18) {
        FUN_1805bbf80(plVar1,0x18);
      }
      uStack_aa = 0x5b;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_aa);
      }
      else {
        *puVar8 = 0x5b;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a9 = 0xf7;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a9);
      }
      else {
        *puVar8 = 0xf7;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a8 = 0xf1;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a8);
      }
      else {
        *puVar8 = 0xf1;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a7 = 0xe6;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a7);
      }
      else {
        *puVar8 = 0xe6;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a6 = 0x57;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a6);
      }
      else {
        *puVar8 = 0x57;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a5 = 0x12;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a5);
      }
      else {
        *puVar8 = 0x12;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a4 = 0x10;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a4);
      }
      else {
        *puVar8 = 0x10;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a3 = 0xf;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a3);
      }
      else {
        *puVar8 = 0xf;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a2 = 0x97;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a2);
      }
      else {
        *puVar8 = 0x97;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a1 = 0xf9;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a1);
      }
      else {
        *puVar8 = 0xf9;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_a0 = 99;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_a0);
      }
      else {
        *puVar8 = 99;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_9f = 0x8f;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_9f);
      }
      else {
        *puVar8 = 0x8f;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_9e = 8;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_9e);
      }
      else {
        *puVar8 = 8;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_9d = 0x83;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_9d);
      }
      else {
        *puVar8 = 0x83;
        plVar1[1] = plVar1[1] + 1;
      }
      uStack_9c = 0x97;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,&uStack_9c);
      }
      else {
        *puVar8 = 0x97;
        plVar1[1] = plVar1[1] + 1;
      }
      auStack_9b[0] = 0xe7;
      puVar8 = (undefined1 *)plVar1[1];
      if ((undefined1 *)plVar1[2] == puVar8) {
        FUN_1805b0850(plVar1,puVar8,auStack_9b);
      }
      else {
        *puVar8 = 0xe7;
        plVar1[1] = plVar1[1] + 1;
      }
      uVar10 = thunk_FUN_1805a9280(0x2e0,thunk_FUN_1805a9280);
      return uVar10;
    }
    lVar3 = FUN_1805c0220(
                         "The given connection ID 0x%08X for the default connection is not a supported value."
                         );
    lVar12 = FUN_1805c0260();
    FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_res8);
    auStack_78[0] = 0x16a5;
    pcStack_60 = 
    "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
    uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&pcStack_60);
                    /* WARNING: Subroutine does not return */
    FUN_1805b20d0(uVar4,auStack_78);
  }
  if (local_res8[0] == 0x2a9f3eff) {
    plVar1[1] = *plVar1;
    if ((ulonglong)(plVar1[2] - *plVar1) < 0x10) {
      FUN_1805bbf80(plVar1,0x10);
    }
    lStackX_18 = CONCAT71(lStackX_18._1_7_,0x7c);
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = &lStackX_18;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x7c;
      plVar1[1] = plVar1[1] + 1;
    }
    auStackX_20[0] = 0x83;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)auStackX_20;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x83;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b8 = 0xe5;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b8;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xe5;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b7 = 0xba;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b7;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xba;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b6 = 0x4e;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b6;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x4e;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b5 = 0x11;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b5;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x11;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b4 = 0x1b;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b4;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x1b;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b3 = 9;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b3;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 9;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b2 = 0xea;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b2;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xea;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b1 = 0xaa;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b1;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xaa;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_b0 = 0x40;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_b0;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x40;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_af = 0xf7;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_af;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xf7;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_ae = 0xe;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_ae;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xe;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_ad = 0x97;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_ad;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0x97;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_ac = 0xde;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_ac;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xde;
      plVar1[1] = plVar1[1] + 1;
    }
    uStack_ab = 0xd2;
    if ((undefined1 *)plVar1[2] == (undefined1 *)plVar1[1]) {
      plVar9 = (longlong *)&uStack_ab;
      FUN_1805b0850(plVar1);
    }
    else {
      *(undefined1 *)plVar1[1] = 0xd2;
      plVar1[1] = plVar1[1] + 1;
      puVar8 = auStack_d8;
      lVar13 = lVar3;
    }
    do {
      *(ulonglong *)(puVar8 + -8) = uVar10;
      *(longlong *)(puVar8 + -0x10) = lVar13;
      *(longlong **)(puVar8 + -0x18) = plVar9;
      lVar3 = (-lVar12 ^ 0xffffffffffffffffU) + 1 + lVar11;
      lVar12 = ~(lVar11 - lVar3) + 1;
      lVar11 = -lVar11;
      plVar9 = *(longlong **)(puVar8 + lVar11 + 0x948);
      lVar13 = *(longlong *)(puVar8 + lVar11 + 0x950);
      uVar10 = *(ulonglong *)(puVar8 + lVar11 + 0x958);
      puVar8 = puVar8 + lVar11 + 0x960;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
      lVar11 = lVar3 - lVar12;
    } while (uVar5 != 0);
    return (ulonglong)unaff_retaddr;
  }
  lStackX_18 = FUN_1811316e0(0x18);
  if (lStackX_18 != 0) {
    lVar3 = FUN_1805a48c0(lStackX_18,
                          "The given connection ID 0x%08X for the default connection is not a supported value."
                         );
  }
  lVar12 = FUN_1805c0260();
  FUN_18060e760(*(undefined8 *)(lVar3 + 8),local_res8);
  auStack_80[0] = 0x16a5;
  pcStack_68 = 
  "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libilokutil\\ilok2commander.cpp";
  uVar4 = FUN_1805a21d0(*(undefined8 *)(lVar12 + 8),&pcStack_68);
                    /* WARNING: Subroutine does not return */
  FUN_1805b20d0(uVar4,auStack_80);
}



############ FUN_ 180a9d880 size=1864 ############

/* WARNING: Instruction at (ram,0x000180a9db88) overlaps instruction at (ram,0x000180a9db87)
    */
/* WARNING: Removing unreachable block (ram,0x000180a9db36) */
/* WARNING: Removing unreachable block (ram,0x000180a9d998) */
/* WARNING: Removing unreachable block (ram,0x000180a9db83) */
/* WARNING: Removing unreachable block (ram,0x000180a9de60) */

undefined8
FUN_180a9d880(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  ulonglong uVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  longlong lVar7;
  undefined1 *puVar8;
  uint *puVar9;
  IMAGE_DOS_HEADER *pIVar10;
  longlong *plVar11;
  uint uVar12;
  longlong lVar13;
  IMAGE_DOS_HEADER *pIVar14;
  longlong lVar15;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_c8 [32];
  uint local_a8;
  uint local_a4;
  longlong local_a0;
  longlong local_98;
  uint local_90;
  uint local_8c;
  undefined8 local_88;
  undefined8 local_80;
  uint local_78;
  code *local_70;
  undefined8 local_68;
  undefined4 *local_60;
  undefined4 local_50;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_c8;
  uVar12 = 0xf63082e9;
  uVar6 = (uint)&stack0x00000000;
  if (((ulonglong)&stack0x00000000 & 0x5e0) == 0) {
    uVar5 = (uVar6 & 0xdff) * (uVar6 & 0xdff) * 0x10 + 4;
    iVar2 = (uVar5 / 0x13) * 0x13;
  }
  else {
    uVar5 = ((uVar6 & 0x1dff) + 1) * (uVar6 & 0x1dff) + 7;
    iVar2 = (uVar5 / 0x51) * 0x51;
  }
  local_8c = (int)(-(uVar5 - iVar2) | uVar5 - iVar2) >> 0x1f & 0xbf93U ^ 0xb2a3;
  local_a8 = 0x811c9e53;
  uVar6 = uVar6 & 0x13f;
  iVar2 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  local_78 = ((((iVar2 >> 1) - (iVar2 >> 3)) + iVar2 * 0x55555555 >> 0x1e) + 0x12U | 0x2a13) ^
             0x2313;
  pIVar10 = &IMAGE_DOS_HEADER_180000000;
  local_98 = 0x1800a6eb4;
  local_a0 = 0x1800a8eb0;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_80 = 0x5aab090524265e43;
  local_88 = 0x24265e43;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    local_68 = param_1;
    local_60 = param_4;
  } while (uVar6 != 0);
  do {
    uVar4 = rdtsc();
    local_a4 = (uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20);
    FUN_180a9eb02();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_a4 = (local_a4 * -0x13ac00af >> 0x18 ^ local_a4 * -0x13ac00af) * -0x359413ad;
  if (local_a4 < 0x1999999f) {
    do {
      local_70 = FUN_1813f2240;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar3 = FUN_1813f2240(0,0x3cfc);
    if (1 < uVar3) {
      lVar13 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar11 = (longlong *)register0x00000020;
      while (lVar13 != -0x3333333333333334) {
        *plVar11 = 0;
        plVar11 = plVar11 + 8;
        lVar13 = *plVar11;
      }
    }
  }
  lVar13 = 0;
  lVar15 = local_a0 - local_98;
  *param_4 = 0xfffffffe;
  uVar6 = 0xf63082e9;
  if (local_a0 == local_98) {
LAB_180a9de99:
    local_8c = uVar6;
    local_90 = local_a8;
    do {
      puVar9 = &local_90;
      FUN_180a9fb8c();
      uVar6 = FUN_180b08fed();
      *puVar9 = uVar6;
      FUN_180a9c6d3();
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    local_a8 = ((local_90 + 0x72b4b07e) * 0x80 | local_90 + 0x72b4b07e >> 0x19) + 0xb851ea09;
    FUN_180a9dffc();
    uVar4 = FUN_180a9dffd();
    return uVar4;
  }
LAB_180a9dcf0:
  puVar1 = (undefined4 *)(local_98 + lVar13);
  if ((pIVar10 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar7._0_1_ = pIVar10->e_magic[0], lVar7._1_1_ = pIVar10->e_magic[1],
     lVar7._2_2_ = pIVar10->e_cblp, lVar7._4_2_ = pIVar10->e_cp, lVar7._6_2_ = pIVar10->e_crlc,
     -1 < lVar7)) {
    local_80 = 0x2621fc0;
    do {
      if (puVar1 < IMAGE_DOS_HEADER_180000000.e_magic + lVar7 + 8) {
        if (-1 < lVar7) {
          plVar11 = (longlong *)(lVar7 + 0x180000000);
          if (plVar11 < puVar1 + 1) {
            local_50 = *puVar1;
            pIVar14 = pIVar10;
            goto LAB_180a9dd70;
          }
        }
        break;
      }
      lVar7._0_2_ = pIVar10->e_cparhdr;
      lVar7._2_2_ = pIVar10->e_minalloc;
      lVar7._4_2_ = pIVar10->e_maxalloc;
      lVar7._6_2_ = pIVar10->e_ss;
      pIVar10 = (IMAGE_DOS_HEADER *)&pIVar10->e_cparhdr;
    } while (-1 < lVar7);
  }
  goto LAB_180a9dd8f;
  while (plVar11 = (longlong *)(lVar7 + 0x180000000), plVar11 < puVar1 + 1) {
LAB_180a9dd70:
    pIVar14 = (IMAGE_DOS_HEADER *)&pIVar14->e_cparhdr;
    *(longlong *)(&stack0x00017fffffb0 + (lVar7 - (longlong)puVar1)) = *plVar11 + -0x180000000;
    lVar7 = *(longlong *)pIVar14;
    if (lVar7 < 0) break;
  }
LAB_180a9dd8f:
  uVar12 = uVar12 | local_a8;
  do {
    puVar9 = &local_a8;
    puVar8 = &DAT_0000ca10;
    FUN_180a9d878();
    do {
      do {
      } while (((ulonglong)puVar8 & 0xc3) != 0);
    } while (((ulonglong)puVar8 & 0xc300) == 0);
    do {
      do {
      } while (((ulonglong)puVar8 & 0xc300) == 0);
      uVar6 = FUN_180aa5999();
      *puVar9 = uVar6;
    } while ((((ulonglong)puVar8 & 0xc300) != 0) && (((ulonglong)puVar8 & 0xc300) == 0));
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar12 = uVar12 + (uVar12 >> 7);
  if (0x1d < uVar12 - local_a8) {
    uVar12 = uVar12 ^ uVar12 >> 6;
  }
  local_a8 = local_a8 * 0x10001d1;
  uVar12 = uVar12 * local_a8;
  lVar13 = lVar13 + 4;
  uVar6 = uVar12;
  if (lVar15 == lVar13) goto LAB_180a9de99;
  goto LAB_180a9dcf0;
}



############ FUN_ 180aade30 size=798 ############

/* WARNING: Control flow encountered bad instruction data */

void FUN_180aade30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint *puVar4;
  code **ppcVar5;
  uint uVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_d8 [32];
  undefined8 local_b8;
  uint local_b0 [2];
  undefined8 local_a8;
  undefined8 local_98;
  undefined8 local_90;
  undefined4 local_84;
  uint local_80;
  code *local_78;
  undefined8 *local_70;
  undefined8 *local_68;
  undefined8 local_60;
  ulonglong local_40;
  
  local_60 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_70 = param_1;
  local_68 = param_1;
  FUN_180a39dc0();
  *param_1 = license_services::LsObjectRelationVectorSignature::vftable;
  param_1[4] = param_4;
  param_1[5] = 0;
  param_1[6] = 0;
  local_84 = 0x200;
  uVar6 = (uint)&stack0x00000000 & 0x2ff;
  local_80 = 0x11c1 << ((char)((ulonglong)
                               ((longlong)(int)((uVar6 + 2) * (uVar6 + 1) * uVar6) * 0x55555556) >>
                              0x20) * -3 & 0x1fU) ^ 0x1751;
  do {
    puVar4 = local_b0;
    FUN_180aaf36c(puVar4,local_b0);
    uVar2 = rdtsc();
    *puVar4 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_b0[0] = (local_b0[0] * -0x51ca13ad >> 0x18 ^ local_b0[0] * -0x51ca13ad) * -0x50283b32;
  if (local_b0[0] < 0x1999999f) {
    local_78 = (code *)0x0;
    do {
      ppcVar5 = &local_78;
      FUN_180aac821(ppcVar5,&local_78);
      *ppcVar5 = FUN_1813f2240;
      func_0x000180aace4c();
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar3 = (*local_78)();
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  do {
    FUN_180aaf545();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_b8 = 0x180092edc;
  local_a8 = 0x180094ed8;
  local_90 = 0x1cdf829641ce7c35;
  local_98 = 0x41ce7c35;
  FUN_180aaf7bf();
  FUN_180aae16d();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 181608c50 size=2466 ############

/* WARNING: Instruction at (ram,0x000181609953) overlaps instruction at (ram,0x00018160994d)
    */
/* WARNING: Removing unreachable block (ram,0x000181608d33) */
/* WARNING: Removing unreachable block (ram,0x000181608cc6) */
/* WARNING: Removing unreachable block (ram,0x0001816094f0) */

void FUN_181608c50(undefined8 param_1,undefined4 param_2)

{
  undefined8 uVar1;
  ulonglong uVar2;
  longlong lVar3;
  uint uVar4;
  uint uVar5;
  IMAGE_DOS_HEADER *pIVar6;
  longlong *plVar7;
  uint uVar8;
  IMAGE_DOS_HEADER *pIVar9;
  longlong lVar10;
  ulonglong uVar11;
  uint uVar12;
  undefined4 *puVar14;
  bool bVar15;
  int unaff_retaddr;
  undefined8 uStack_1a8;
  ulonglong uStack_1a0;
  undefined1 auStack_198 [24];
  longlong lStack_180;
  longlong local_178;
  undefined8 local_170;
  undefined8 local_168;
  uint local_158;
  undefined8 local_150;
  undefined4 *local_148;
  undefined4 local_140;
  undefined4 local_13c;
  undefined4 uStack_138;
  uint local_12c;
  longlong local_128;
  undefined4 local_120;
  undefined8 local_118;
  undefined4 local_110;
  uint local_10c;
  undefined4 local_108;
  uint local_f8;
  undefined8 local_f0;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined8 local_e0;
  undefined8 local_d8;
  longlong local_d0;
  undefined4 local_b8;
  uint local_b4;
  int local_b0;
  uint local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_70 [14];
  ulonglong local_38;
  int iVar13;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar4 = (uint)&stack0x00000000 & 0x27f;
  local_10c = ((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 ^ 0x780;
  local_110 = 0xa60;
  pIVar9 = &IMAGE_DOS_HEADER_180000000;
  local_118 = 0;
  local_148 = (undefined4 *)0x180016fd4;
  local_128 = 0x180018fd0;
  do {
    local_108 = 0xc576a1fc;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    local_e4 = 0x62;
    local_e0 = 0x181608ee7;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    local_e8 = 1;
    local_d8 = 0x181608fb7;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_178 = 0x811c9e29;
  local_140 = 0;
  lVar10 = (longlong)dvs_0x45419988_mfort6317_ +
           ((ulonglong)dvs_0x91056ddb_mfort6317_ >> 10 & 0xb0600288);
  do {
    uVar1 = rdtsc();
    local_f8 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar2 = (((ulonglong)(local_f8 >> 6) | (ulonglong)local_f8 << 0x3a) - 0x38d166c3) +
            (ulonglong)local_f8 * 2;
    uVar11 = uVar2 >> 0xe;
    uVar2 = uVar11 | uVar2 << 0x32;
    lVar3 = uVar2 - ((uVar2 >> 0xc | uVar11 << 0x34) + 0x6dd6cb4b);
    uVar2 = lVar3 * 5;
    uVar2 = lVar3 - ((uVar2 >> 0x10 | uVar2 << 0x30) + 0x4b2218c8);
    uVar2 = (uVar2 - ((uVar2 >> 0xf) - 0x1e6e5e63)) * 0x10001 + 0x364c9173;
    uVar4 = (int)(uVar2 >> 0xc) + -0x5f32ccc1 + (int)uVar2 * 8;
    local_170 = CONCAT44(local_170._4_4_,uVar4);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  dvs_0x45419988_mfort6317_._4_4_ = (int)((ulonglong)lVar10 >> 0x20);
  uVar5 = dvs_0x45419988_mfort6317_._4_4_ + (uVar4 ^ 0xbfac674b);
  dvs_0x45419988_mfort6317_._0_4_ = (uint)lVar10;
  dvs_0x45419988_mfort6317_ =
       (uint *)CONCAT44(uVar5,(uint)dvs_0x45419988_mfort6317_ + (uVar4 ^ 0xf11428a9));
  uVar4 = (uint)(((ulonglong)dvs_0x45419988_mfort6317_ >> 5 ^ (ulonglong)dvs_0x45419988_mfort6317_)
                >> 3) & 0xf;
  uVar2 = ((ulonglong)uVar4 << 5 | (ulonglong)uVar4) << 3 ^ (ulonglong)dvs_0x45419988_mfort6317_;
  uVar11 = ((uVar2 >> 8 | uVar2 << 0x38) & 0xad52ad52ad52ad52 |
           (uVar2 << 8 | (ulonglong)(uVar5 >> 0x18)) & 0x52ad52ad52ad52ad) ^ 0x4febf484fb0c05fe;
  uVar4 = (uint)(uVar11 >> 0x20);
  uVar2 = (ulonglong)((uVar4 >> 9 ^ uVar4) & 0x3f);
  uVar2 = uVar11 ^ (uVar2 << 9 | uVar2) << 0x20;
  uVar2 = ((uVar2 >> 8 | uVar11 << 0x38) & 0xc738c738c738c738 |
          (uVar2 << 8 | uVar11 >> 0x38) & 0x38c738c738c738c7) + 0xf04a0f02157e2d57;
  uVar2 = ((uVar2 >> 4 | uVar2 << 0x3c) & 0xe1e1e1e1e1e1e1e1 |
          (uVar2 * 0x10 | uVar2 >> 0x3c) & 0x1e1e1e1e1e1e1e1e) + 0xe3a6d0fe81a23384;
  dvs_0x45419988_mfort6317_ = (uint *)(uVar2 * 0x10 | uVar2 >> 0x3c);
  dvs_0x91056ddb_mfort6317_ =
       (uint *)((longlong)dvs_0x91056ddb_mfort6317_ +
               (ulonglong)((uint)((uVar2 & 0xfffffffffffffff) >> 0xf) & 0x10058042));
  local_170 = CONCAT44(local_170._4_4_,(int)((uVar2 & 0xfffffffffffffff) >> 7)) & 0xffffffff7fffffff
  ;
  local_158 = (uint)dvs_0x45419988_mfort6317_ ^ 0x68960f26;
  local_168 = (ulonglong)dvs_0x45419988_mfort6317_ ^ 0xf3649063469b9fd4;
  local_150 = 0xfbe71094cb82d8fb;
  local_13c = param_2;
  local_f0 = param_1;
  do {
    pIVar6 = (IMAGE_DOS_HEADER *)0x5410;
    uStack_1a0 = 0x18160934f;
    FUN_18160a645();
    if (((ulonglong)pIVar6 & 0xe700) == 0) {
      pIVar9 = pIVar6;
    }
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar5 = (uint)local_168 ^ local_158;
  local_a8 = 0xb45e9de0;
  local_a4 = 0x41847a8d;
  uVar4 = (uVar5 & 0x6593f979 ^ local_158) + 0x4ed1481b;
  iVar13 = (int)(local_168 >> 0x20);
  uVar12 = iVar13 + 0x7bc739d3;
  uVar5 = (local_158 ^ uVar5 & 0x9a6c0686) + 0xaef7aa14;
  uVar8 = (uVar4 * 0x100 | uVar4 >> 0x18) & 0x9a659a65 |
          (uVar4 >> 8 | uVar4 * 0x1000000) & 0x659a659a;
  uVar5 = ((uVar5 * 0x10000 | uVar5 >> 0x10) & 0xc73b38c4 |
          (uVar5 >> 0x10 | uVar5 * 0x10000) & 0x38c4c73b) ^ uVar8;
  uVar12 = uVar12 >> 2 & 0xcccccccc | uVar12 * 0x40000000 | uVar12 * 4 & 0x33333333 | uVar12 >> 0x1e
  ;
  uVar4 = uVar5 & 0x8a578475 ^ uVar8;
  uVar5 = uVar5 & 0x75a87b8a ^ uVar8 ^ uVar4;
  uVar8 = uVar5 & 0x44465b56 ^ uVar4;
  uVar4 = uVar5 & 0xbbb9a4a9 ^ uVar4;
  uVar5 = uVar8 >> 0x19 | uVar8 << 7;
  uVar8 = (uVar12 >> 10 | uVar12 << 0x16) ^ uVar5;
  uVar4 = uVar4 >> 0x1f | uVar4 << 1;
  local_b4 = uVar4 ^ 0xea2cbcd1;
  local_118 = CONCAT44(local_118._4_4_,uVar4) ^ 0xea2cbcd1;
  uVar4 = uVar8 & 0xddffbe9c ^ uVar5;
  uVar5 = uVar8 & 0x22004163 ^ uVar5 ^ uVar4;
  local_b0 = (uVar5 & 0x7310039d ^ uVar4) + 0x6bb1bcf9;
  local_168 = CONCAT44(iVar13,local_b0);
  local_120 = 0xef76326e;
  local_ac = uVar5 & 0x8ceffc62 ^ uVar4 ^ 0xaa7d1554;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = 0;
  local_d0 = local_128 - (longlong)local_148;
  local_b8 = local_120;
  if (local_d0 == 0) {
    local_12c = 0x2e0c929c;
    uStack_138 = (undefined4)local_178;
    plVar7 = &uStack_1a8;
    uStack_1a8 = 0;
    bVar15 = false;
    uStack_1a0 = uVar2;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001816098df();
    if (!bVar15) {
      local_178 = local_170 - 0x9d37;
      lStack_180 = local_170 + 0x3fb845;
      plVar7 = (longlong *)auStack_198;
      uVar2 = local_170;
      local_170 = local_170 + 0x1aa;
    }
    plVar7[2] = uVar2 - 0x23408;
    plVar7[1] = uVar2 + 0x3fb845;
    *plVar7 = uVar2 + 0x3fb845;
    plVar7[-1] = uVar2 + 0x3fb828;
    plVar7[-2] = uVar2 - 0x5e462;
    plVar7[-3] = uVar2 - 0x303d4;
    plVar7[-4] = uVar2 - 0x4494d;
                    /* WARNING: Could not recover jumptable at 0x000181609a50. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)(uVar2 - 0x23408))();
    return;
  }
  puVar14 = local_148;
  if ((pIVar9 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar10._0_1_ = pIVar9->e_magic[0], lVar10._1_1_ = pIVar9->e_magic[1],
     lVar10._2_2_ = pIVar9->e_cblp, lVar10._4_2_ = pIVar9->e_cp, lVar10._6_2_ = pIVar9->e_crlc,
     -1 < lVar10)) {
    local_128 = 0x2621fc0;
    do {
      if (local_148 < IMAGE_DOS_HEADER_180000000.e_magic + lVar10 + 8) {
        if (-1 < lVar10) {
          plVar7 = (longlong *)(lVar10 + 0x180000000);
          if (plVar7 < local_148 + 1) {
            local_70[0] = *local_148;
            goto LAB_1816095e1;
          }
        }
        break;
      }
      lVar10._0_2_ = pIVar9->e_cparhdr;
      lVar10._2_2_ = pIVar9->e_minalloc;
      lVar10._4_2_ = pIVar9->e_maxalloc;
      lVar10._6_2_ = pIVar9->e_ss;
      pIVar9 = (IMAGE_DOS_HEADER *)&pIVar9->e_cparhdr;
    } while (-1 < lVar10);
  }
  goto LAB_181609606;
  while (plVar7 = (longlong *)(lVar10 + 0x180000000), plVar7 < local_148 + 1) {
LAB_1816095e1:
    lVar3 = lVar10 - (longlong)local_148;
    lVar10 = *(longlong *)&pIVar9->e_cparhdr;
    pIVar9 = (IMAGE_DOS_HEADER *)&pIVar9->e_cparhdr;
    *(longlong *)(&stack0x00017fffff90 + lVar3) = *plVar7 + -0x180000000;
    puVar14 = local_70;
    if (lVar10 < 0) break;
  }
LAB_181609606:
  local_12c = local_ac;
  FUN_181609638(0x5410,puVar14,0,&local_178);
  return;
}



############ FUN_ 1811528a0 size=8 ############

void FUN_1811528a0(void)

{
  DAT_18262170d = 0;
  return;
}



############ FUN_ 181453a9e size=3491 ############

/* WARNING: Instruction at (ram,0x000181454172) overlaps instruction at (ram,0x000181454171)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000181454a0a) */
/* WARNING: Removing unreachable block (ram,0x00018145412b) */
/* WARNING: Removing unreachable block (ram,0x000181453fdf) */
/* WARNING: Removing unreachable block (ram,0x000181453ae7) */
/* WARNING: Removing unreachable block (ram,0x00018145415f) */
/* WARNING: Removing unreachable block (ram,0x000181454164) */
/* WARNING: Removing unreachable block (ram,0x000181454191) */
/* WARNING: Removing unreachable block (ram,0x000181454146) */
/* WARNING: Removing unreachable block (ram,0x000181454181) */
/* WARNING: Removing unreachable block (ram,0x000181454145) */
/* WARNING: Removing unreachable block (ram,0x000181454156) */
/* WARNING: Removing unreachable block (ram,0x000181454172) */
/* WARNING: Removing unreachable block (ram,0x000181454158) */
/* WARNING: Removing unreachable block (ram,0x00018145415d) */
/* WARNING: Removing unreachable block (ram,0x000181454176) */
/* WARNING: Removing unreachable block (ram,0x00018145417b) */

undefined8 FUN_181453a9e(undefined8 param_1,undefined8 param_2,ulonglong param_3)

{
  code *pcVar1;
  longlong lVar2;
  undefined1 *puVar3;
  char cVar4;
  uint uVar5;
  int *piVar6;
  ulonglong uVar7;
  undefined8 uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint *puVar13;
  longlong *plVar14;
  uint uVar15;
  int iVar16;
  undefined4 *puVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  undefined1 *puVar20;
  longlong unaff_RBP;
  undefined8 *puVar21;
  undefined8 *puVar22;
  uint uVar23;
  longlong lVar24;
  IMAGE_DOS_HEADER *pIVar25;
  uint uVar26;
  IMAGE_DOS_HEADER *pIVar27;
  uint uVar28;
  int *unaff_R14;
  int *piVar29;
  ulonglong uVar30;
  longlong lVar31;
  longlong *plVar32;
  uint local_res20;
  undefined4 local_res24;
  uint uStack0000000000000044;
  uint uStack0000000000000050;
  undefined8 in_stack_00000068;
  
  FUN_1814551e0(param_1,param_2,(param_3 ^ 0xffffffffffffffff) + 1);
  uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
  if ((int)uVar9 < 0) {
    uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
  }
  if (uVar9 != 0) {
    FUN_181452c89(&DAT_0000fc1c);
    uVar8 = FUN_181453a9e();
    return uVar8;
  }
  do {
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  pIVar27 = &IMAGE_DOS_HEADER_180000000;
  piVar6 = (int *)0x1809babe0;
  do {
    puVar22 = (undefined8 *)(unaff_RBP + -0x68);
    puVar17 = (undefined4 *)(unaff_RBP + -0x78);
    puVar13 = &local_res20;
    FUN_181455152();
    *puVar13 = 0x42dffabc;
    *puVar17 = 0x15;
    *puVar22 = 0x181453c69;
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = (local_res20 >> 0x10 | local_res20 << 0x10) & 0xd48e2b71 |
          (local_res20 << 0x10 | local_res20 >> 0x10) & 0x2b71d48e;
  uVar10 = uVar9 >> 0xc | uVar9 << 0x14;
  uVar10 = (uVar10 << 8 | (uVar9 & 0xfff) >> 4) & 0xd629d629 |
           (uVar10 >> 8 | (uVar9 >> 0xc) << 0x18) & 0x29d629d6;
  uVar9 = uVar10 + 0x6e988628 >> 2;
  uVar10 = uVar9 | uVar10 << 0x1e;
  uVar9 = (uVar9 << 8 | uVar10 >> 0x18) & 0x9c639c63 | (uVar10 >> 8 | uVar9 << 0x18) & 0x639c639c;
  uVar10 = uVar9 >> 0xf | uVar9 << 0x11;
  uVar9 = (uVar10 >> 0xb ^ uVar10) >> 1 & 0x1f;
  uVar10 = uVar10 ^ (uVar9 << 0xb | uVar9) * 2;
  local_res20 = (uVar10 >> 0x10 | uVar10 << 0x10) & 0xf1b40e4b |
                (uVar10 << 0x10 | uVar10 >> 0x10) & 0xe4bf1b4;
  do {
    *(undefined4 *)(unaff_RBP + -0x74) = 0x18;
    *(undefined8 *)(unaff_RBP + -0x60) = 0x181453d47;
    FUN_181453a9d();
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar24 = (longlong)(int)local_res20 + *(longlong *)(unaff_RBP + -0x68);
  lVar31 = *(longlong *)(unaff_RBP + -0x60);
  *(longlong *)(lVar24 + 4) =
       *(longlong *)(lVar24 + 4) +
       (ulonglong)((uint)((ulonglong)*(undefined8 *)(lVar31 + 0x11d6a89) >> 0x10) & 0x2e03820a) +
       0x37608b7cbcf285e2;
  uVar18 = *(ulonglong *)(lVar24 + 4);
  uVar9 = (uint)((uVar18 >> 0x17 ^ uVar18) >> 4) & 0x7fffff;
  uVar18 = ((ulonglong)uVar9 << 0x17 | (ulonglong)uVar9) << 4 ^ uVar18 ^ 0xf71569f258b6366b;
  uVar18 = (uVar18 >> 2 & 0xcccccccccccccccc | uVar18 << 0x3e |
           (uVar18 & 0xccccccccccccccc) << 2 | uVar18 >> 0x3e) + 0x87dba52a0f662656;
  uVar18 = (uVar18 * 0x100 | uVar18 >> 0x38) & 0xda25da25da25da25 |
           (uVar18 >> 8 | uVar18 << 0x38) & 0x25da25da25da25da;
  uVar9 = ((uint)(uVar18 >> 0x2f) ^ (uint)uVar18) & 0x7ff;
  uVar18 = ((ulonglong)uVar9 << 0x2f | (ulonglong)uVar9) ^ uVar18;
  uVar18 = ((uVar18 << 0x10 | uVar18 >> 0x30) & 0xd15f2ea0d15f2ea0 |
           (uVar18 >> 0x10 | uVar18 << 0x30) & 0x2ea0d15f2ea0d15f) + 0xda841598c39f2960;
  *(ulonglong *)(lVar24 + 4) = uVar18;
  plVar32 = (longlong *)(lVar31 + 0x11d6a89);
  *plVar32 = *plVar32 + (ulonglong)((uint)(uVar18 >> 7) & 0x4024040);
  uStack0000000000000050 = (uint)(*(ulonglong *)(lVar24 + 4) >> 0x13) & 0x7fffffff;
  uVar9 = (uint)(*(ulonglong *)(lVar24 + 4) >> 0x15) ^ 0x81ea92a2;
  uVar18 = *(ulonglong *)(lVar24 + 4) ^ 0x8d65030ba6aec77f;
  do {
    FUN_181453875(&DAT_0000fc1c);
    uVar10 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  do {
    uVar10 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = 0x60e9747;
LAB_181454071:
  piVar29 = piVar6;
  if (pIVar27 != (IMAGE_DOS_HEADER *)0x0) {
    lVar31._0_1_ = pIVar27->e_magic[0];
    lVar31._1_1_ = pIVar27->e_magic[1];
    lVar31._2_2_ = pIVar27->e_cblp;
    lVar31._4_2_ = pIVar27->e_cp;
    lVar31._6_2_ = pIVar27->e_crlc;
    while (-1 < lVar31) {
      if (piVar6 < IMAGE_DOS_HEADER_180000000.e_magic + lVar31 + 8) {
        if (-1 < lVar31) {
          plVar32 = (longlong *)(lVar31 + 0x180000000);
          if (plVar32 < piVar6 + 1) {
            *(int *)(unaff_RBP + 8) = *piVar6;
            pIVar25 = pIVar27;
            goto LAB_1814540f0;
          }
        }
        break;
      }
      lVar31._0_2_ = pIVar27->e_cparhdr;
      lVar31._2_2_ = pIVar27->e_minalloc;
      lVar31._4_2_ = pIVar27->e_maxalloc;
      lVar31._6_2_ = pIVar27->e_ss;
      pIVar27 = (IMAGE_DOS_HEADER *)&pIVar27->e_cparhdr;
    }
  }
  goto LAB_181454114;
  while (plVar32 = (longlong *)(lVar31 + 0x180000000),
        pIVar25 = (IMAGE_DOS_HEADER *)&pIVar25->e_cparhdr, plVar32 < piVar6 + 1) {
LAB_1814540f0:
    *(longlong *)(unaff_RBP + (0x180000008 - (longlong)piVar6) + lVar31) = *plVar32 + -0x180000000;
    lVar31 = *(longlong *)&pIVar25->e_cparhdr;
    piVar29 = (int *)(unaff_RBP + 8);
    if (lVar31 < 0) break;
  }
LAB_181454114:
  do {
    uVar5 = (*(int *)(unaff_RBP + 0x78) + 1) * *(int *)(unaff_RBP + 0x78) & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar10 = (uVar10 + *piVar29) * -0x395b586d;
  uVar10 = uVar10 ^ uVar10 >> 0x10;
  piVar6 = piVar6 + 1;
  if (piVar6 == (int *)0x1809cfddc) goto code_r0x0001814541c8;
  goto LAB_181454071;
code_r0x0001814541c8:
  lVar31 = *(longlong *)(unaff_RBP + -0x58);
  uVar5 = (uVar10 ^ 0xa2a148e7) >> 8;
  uVar10 = (uVar10 ^ 0xa2a148e7) << 0x18 | uVar5;
  uVar5 = ((uVar5 << 0x10 | uVar10 >> 0x10) & 0x880877f7 |
          (uVar10 >> 0x10 | uVar5 << 0x10) & 0x77f78808) + 0xae97b7b5;
  uVar10 = (uVar5 >> 0xc ^ uVar5) >> 1 & 0x7f;
  do {
    FUN_181455152();
    uVar11 = (*(int *)(unaff_RBP + 0x78) + 1) * *(int *)(unaff_RBP + 0x78) & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  *(undefined4 *)(unaff_RBP + -0x38) = 0xa1cd0420;
  *(uint *)(unaff_RBP + -0x34) = uVar9;
  *(int *)(unaff_RBP + -0x30) = (int)uVar18;
  uVar11 = *(uint *)(unaff_RBP + -0x34);
  uVar15 = uVar11 ^ *(uint *)(unaff_RBP + -0x30);
  uVar26 = *(int *)(unaff_RBP + -0x38) + 0xd6c7eba2;
  uVar12 = (uVar15 & 0x6593f979 ^ uVar11) + 0x4ed1481b;
  uVar11 = (uVar15 & 0x9a6c0686 ^ uVar11) + 0xaef7aa14;
  uVar23 = (int)(uVar18 >> 0x20) + 0x7bc739d3;
  uVar15 = (uVar12 * 0x100 | uVar12 >> 0x18) & 0x9a659a65 |
           (uVar12 >> 8 | uVar12 * 0x1000000) & 0x659a659a;
  uVar12 = ((uVar11 * 0x10000 | uVar11 >> 0x10) & 0xc73b38c4 |
           (uVar11 >> 0x10 | uVar11 * 0x10000) & 0x38c4c73b) ^ uVar15;
  uVar11 = uVar12 & 0x8a578475 ^ uVar15;
  uVar12 = uVar12 & 0x75a87b8a ^ uVar15 ^ uVar11;
  uVar28 = uVar12 & 0xbbb9a4a9 ^ uVar11;
  uVar11 = uVar12 & 0x44465b56 ^ uVar11;
  uVar12 = uVar11 >> 0x19 | uVar11 << 7;
  uVar11 = uVar23 * 4 & 0x33333333 | uVar23 >> 0x1e;
  uVar18 = (ulonglong)uVar11;
  uVar11 = uVar23 >> 2 & 0xcccccccc | uVar23 * 0x40000000 | uVar11;
  uVar15 = (uVar11 >> 10 | uVar11 << 0x16) ^ uVar12;
  uVar11 = uVar15 & 0xddffbe9c ^ uVar12;
  uVar12 = uVar15 & 0x22004163 ^ uVar12 ^ uVar11;
  uVar15 = (uVar26 * 0x10 | uVar26 >> 0x1c) & 0x96969696 |
           (uVar26 >> 4 | uVar26 * 0x10000000) & 0x69696969;
  uVar23 = (uVar28 >> 0x1f | uVar28 << 1) ^ 0xea2cbcd1;
  uVar30 = (ulonglong)uVar23;
  piVar6 = (int *)(unaff_RBP + 0x78);
  do {
    uVar8 = rdtsc();
    uVar26 = (int)uVar8 + (int)((ulonglong)uVar8 >> 0x20);
    *(uint *)(unaff_RBP + -0x70) = uVar26;
    uVar19 = (ulonglong)uVar26 * 0x2004 - 0x159f3633;
    uVar7 = uVar19 >> 0xc;
    uVar19 = uVar7 | uVar19 << 0x34;
    lVar31 = ~-lVar31 + 1;
    uVar7 = (uVar7 * 0xa000 | uVar19 * 5 >> 0x33) + uVar19 * 8;
    uVar7 = uVar7 ^ (uVar7 >> 0xc | uVar7 << 0x34) - 0x5ad3dc2d;
    uVar7 = uVar7 << 0xe | uVar7 >> 0x32;
    uVar7 = uVar7 - ((uVar7 >> 0xc) - 0x1aa55391);
    uVar19 = uVar7 * 0x40 | uVar7 >> 0x3a;
    piVar6 = (int *)((-(longlong)piVar6 ^ 0xffffffffffffffffU) + 1);
    uVar7 = (((uVar7 & 0x3ffffffffffffff) >> 9 | uVar19 << 0x31) - 0x4170389c) + uVar19 * 4;
    uVar26 = (*piVar6 + 1) * *piVar6 & 0x80000001;
    if ((int)uVar26 < 0) {
      uVar26 = (uVar26 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar26 != 0);
  uStack0000000000000044 =
       (int)((uVar7 ^ (uVar7 >> 0xb) - 0x777ccde9) >> 7) * -0x11fff + 0x787c8924U >> 1 ^
       uStack0000000000000050;
  if (uStack0000000000000044 < 0x4444447) {
    *(uint *)(unaff_RBP + -0x18) = (uVar15 >> 0x1d | uVar15 << 3) + 0xbc64070c;
    *(uint *)(unaff_RBP + -0x14) = uVar23;
    *(uint *)(unaff_RBP + -0x10) = (uVar12 & 0x7310039d ^ uVar11) + 0x6bb1bcf9;
    *(uint *)(unaff_RBP + -0xc) = uVar12 & 0x8ceffc62 ^ uVar11 ^ 0xaa7d1554;
    do {
      *(undefined8 *)(unaff_RBP + -0x50) = 0x181454543;
      uVar11 = (*piVar6 + 1) * *piVar6 & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    (*(code *)(*(longlong *)(unaff_RBP + -0x50) + -0x80c7c3))(unaff_RBP + -0x18,unaff_RBP + 0x18);
    uVar11 = *(uint *)(unaff_RBP + 0x38);
    uVar12 = *(uint *)(unaff_RBP + 0x3c);
    iVar16 = 7;
    do {
      uVar15 = ((uVar11 << 4 | uVar11 >> 0x1c) & 0xb4b4b4b4 |
               (uVar11 >> 4 | uVar11 << 0x1c) & 0x4b4b4b4b) + 0xedf66992;
      uVar11 = uVar15 >> 0xc;
      uVar23 = (((uVar11 | uVar15 * 0x100000) ^ 0x2677a938) >> 3 | uVar11 << 0x1d) + 0x70f6a640;
      uVar26 = uVar23 >> 0x17 | uVar23 * 0x200;
      uVar11 = ((uVar12 >> 8 | uVar12 << 0x18) & 0xfa05fa05 |
               (uVar12 << 8 | uVar12 >> 0x18) & 0x5fa05fa) + 0x703d2ee4;
      uVar11 = (uVar11 >> 0x1d | uVar11 * 8) + 0x5f26144;
      uVar11 = (uVar11 * 0x8000 | uVar11 >> 0x11) + 0x191d2650;
      uVar12 = uVar11 >> 0xc;
      uVar15 = uVar11 * 0x100000 | uVar12;
      uVar11 = (uVar26 >> 8 | (uVar23 >> 0x17) << 0x18) & 0xa857a857 |
               (uVar26 << 8 | (uVar23 & 0x7fffff) >> 0xf) & 0x57a857a8;
      uVar11 = uVar11 >> 6 | uVar11 << 0x1a;
      uVar12 = (uVar12 << 0x10 | uVar15 >> 0x10) & 0xd65429ab |
               (uVar15 >> 0x10 | uVar12 << 0x10) & 0x29abd654;
      uVar12 = uVar12 << 0x16 | uVar12 >> 10;
      iVar16 = iVar16 + -1;
    } while (-1 < iVar16);
    do {
      uVar15 = (*piVar6 + 1) * *piVar6 & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    local_res24 = 0xe00d7435;
    uVar11 = (uVar11 + 0xb07c676d >> 0x13 | (uVar11 + 0xb07c676d) * 0x2000) + 0xefdbf9bd;
    uVar11 = (uVar11 >> 0x1d | uVar11 * 8) + 0x9c744744;
    uVar11 = (uVar11 * 0x40 | uVar11 >> 0x1a) ^ 0xd751fc63;
    if (((uVar11 << 0xb | uVar11 >> 0x15) ^ 0xd1233e69) + uVar12 != uVar9) {
      do {
        *(code **)(unaff_RBP + -0x48) = FUN_180bc28e0;
        uVar9 = (*piVar6 + 1) * *piVar6 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar9 != 0);
      (**(code **)(unaff_RBP + -0x48))();
      do {
        uVar9 = (*piVar6 + 1) * *piVar6 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar9 != 0);
    }
  }
  plVar32 = (longlong *)0x0;
  if ((char)((((uVar10 << 0xc | uVar10) * 2 ^ uVar5) != 0x79167c08) * '\x0f') != '\0') {
    FUN_181456600();
    uVar8 = thunk_FUN_1805a9280();
    return uVar8;
  }
  puVar3 = (undefined1 *)register0x00000020;
  do {
    puVar20 = puVar3;
    *(ulonglong *)(puVar20 + -8) = uVar30;
    *(ulonglong *)(puVar20 + -0x10) = uVar18;
    *(longlong *)(puVar20 + -0x18) = lVar31;
    lVar31 = (longlong)plVar32 + (longlong)piVar6;
    uVar18 = (~((longlong)piVar6 - lVar31) + 1U) - lVar31 ^ 0xffffffffffffffff;
    plVar32 = (longlong *)(lVar31 - (uVar18 + 1));
    lVar24 = -(longlong)in_stack_00000068._4_4_;
    piVar6 = (int *)(uVar18 + 1);
    lVar31 = *(longlong *)(puVar20 + lVar24 + 0xdd8);
    uVar18 = *(ulonglong *)(puVar20 + lVar24 + 0xde0);
    uVar30 = *(ulonglong *)(puVar20 + lVar24 + 0xde8);
    uVar9 = (*piVar6 + 1) * *piVar6 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    puVar3 = puVar20 + lVar24 + 0xdf0;
  } while (uVar9 != 0);
  if (*(int *)(lVar31 + 0x11c) != (int)plVar32) {
    uVar8 = *(undefined8 *)(lVar31 + 0x130);
    *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x1814548df;
    FUN_1814369a0(uVar8,unaff_RBP + -0x80,lVar31);
    if (**(char **)(unaff_RBP + -0x80) == '\0') {
      plVar14 = plVar32;
      if (*(int *)(lVar31 + 0x11c) != 0) {
        plVar14 = (longlong *)**(undefined8 **)(lVar31 + 0x110);
      }
      pcVar1 = *(code **)(*plVar14 + 0x170);
      *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x181454910;
      (*pcVar1)();
      plVar14 = plVar32;
      if (*(int *)(lVar31 + 0x11c) != 0) {
        plVar14 = (longlong *)**(undefined8 **)(lVar31 + 0x110);
      }
      *(undefined1 **)(puVar20 + lVar24 + 0xde8) = &LAB_181454936;
      FUN_18133ed60(plVar14,2,1);
    }
    puVar21 = *(undefined8 **)(lVar31 + 0x110);
    puVar22 = puVar21 + *(int *)(lVar31 + 0x11c);
    for (; puVar21 != puVar22; puVar21 = puVar21 + 1) {
      plVar14 = (longlong *)*puVar21;
      pcVar1 = *(code **)(*plVar14 + 0x168);
      *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x181454963;
      uVar8 = (*pcVar1)(plVar14,unaff_RBP + -0x40);
      *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x18145496f;
      cVar4 = FUN_18124a340(uVar8,unaff_RBP + -0x80);
      lVar2 = *(longlong *)(unaff_RBP + -0x40);
      *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x18145497f;
      FUN_1804951e0(lVar2 + -0x10);
      if (cVar4 != '\0') {
        pcVar1 = *(code **)(*plVar14 + 0x170);
        *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x1814549cf;
        (*pcVar1)(plVar14);
        plVar32 = plVar14;
        goto LAB_1814549a3;
      }
    }
    if (*(int *)(lVar31 + 0x11c) != 0) {
      plVar32 = (longlong *)**(undefined8 **)(lVar31 + 0x110);
    }
LAB_1814549a3:
    *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x1814549b0;
    FUN_18133ed60(plVar32,2,1);
    lVar31 = *(longlong *)(unaff_RBP + -0x80);
    *(undefined8 *)(puVar20 + lVar24 + 0xde8) = 0x1814549be;
    FUN_1804951e0(lVar31 + -0x10);
  }
  *(undefined **)(puVar20 + lVar24 + 0xde8) = &UNK_181454abb;
}



############ FUN_ 1805a4fa0 size=249 ############

void FUN_1805a4fa0(longlong param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *pvVar3;
  
  if (*(char *)(param_1 + 0xf0) != '\0') {
    if ((*(longlong **)(param_1 + 0x100) != (longlong *)0x0) &&
       (puVar2 = (undefined8 *)(**(code **)(**(longlong **)(param_1 + 0x100) + 0x10))(),
       puVar2 != (undefined8 *)0x0)) {
      (**(code **)*puVar2)(puVar2,1);
    }
    *(undefined1 *)(param_1 + 0xf0) = 0;
  }
  FUN_1805a4ee0(param_1 + 0x70);
  if (0xf < *(ulonglong *)(param_1 + 0x60)) {
    pvVar1 = *(void **)(param_1 + 0x48);
    pvVar3 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x60) + 1) &&
       (pvVar3 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  *(undefined8 *)(param_1 + 0x58) = 0;
  *(undefined8 *)(param_1 + 0x60) = 0xf;
  *(undefined1 *)(param_1 + 0x48) = 0;
  pvVar1 = *(void **)(param_1 + 0x18);
  if (pvVar1 == (void *)0x0) {
    FUN_1805a5460(param_1);
    return;
  }
  pvVar3 = pvVar1;
  if ((0xfff < (*(longlong *)(param_1 + 0x28) - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
     (pvVar3 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 1805f02b0 size=629 ############

/* WARNING: Instruction at (ram,0x0001805f0521) overlaps instruction at (ram,0x0001805f051f)
    */
/* WARNING: Removing unreachable block (ram,0x0001805f0441) */
/* WARNING: Removing unreachable block (ram,0x0001805f033b) */
/* WARNING: Removing unreachable block (ram,0x0001805f0424) */
/* WARNING: Removing unreachable block (ram,0x0001805f051f) */
/* WARNING: Removing unreachable block (ram,0x0001805f03a7) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1805f02b0(LPCSTR param_1,FARPROC param_2,int param_3,char param_4,char param_5,char param_6
                  )

{
  longlong *plVar1;
  LPCSTR pCVar2;
  wchar_t *pwVar3;
  undefined1 auVar4 [16];
  undefined1 auVar5 [16];
  BOOL BVar6;
  DWORD DVar7;
  ulonglong uVar8;
  undefined8 uVar9;
  LPCWSTR lpWideCharStr;
  LPCWSTR lpWideCharStr_00;
  LPCSTR lpMultiByteStr;
  HMODULE hModule;
  FARPROC pFVar10;
  HWINSTA hObj;
  INT_PTR IVar11;
  uint *puVar12;
  longlong lVar13;
  int iVar14;
  size_t _Count;
  uint uVar15;
  size_t _Count_00;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStackY_508 [32];
  undefined4 uStack_4a8;
  uint uStack_490;
  uint uStack_48c;
  undefined4 uStack_488;
  undefined4 uStack_47c;
  undefined8 local_470;
  uint local_468;
  uint local_464;
  code *pcStack_460;
  code *pcStack_458;
  FARPROC local_450;
  LPCWSTR pWStack_448;
  LPCSTR local_440;
  _NOTIFYICONDATAW _Stack_438;
  wchar_t awStack_308 [256];
  undefined4 uStack_108;
  wchar_t awStack_104 [64];
  undefined4 uStack_84;
  wchar_t wStack_52;
  undefined8 uStack_50;
  undefined8 uStack_48;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStackY_508;
  uVar15 = (uint)&stack0x00000000 & 0x27f;
  iVar14 = (uVar15 + 2) * (uVar15 + 1) * uVar15;
  local_464 = ((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e ^ 0x630;
  iVar14 = (uVar15 + 2) * (uVar15 + 1) * uVar15;
  local_468 = 0x4cfa >> (-(char)(((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e) &
                        0x1fU) ^ 0x4fba;
  local_470 = 0;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uStack_4a8 = 0;
  uStack_47c = 0x64df472d;
  local_450 = param_2;
  local_440 = param_1;
  do {
    puVar12 = &uStack_490;
    func_0x0001805f02a1(puVar12,&uStack_490);
    uVar9 = rdtsc();
    *puVar12 = (uint)uVar9 ^ (uint)((ulonglong)uVar9 >> 0x20);
    func_0x0001805f23f7();
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uStack_490 = (uStack_490 * -0x166a51cb >> 0x18 ^ uStack_490 * -0x166a51cb) * -0x50285029;
  if (uStack_490 < 0x1fffffff) {
    do {
      pcStack_460 = FUN_1813f2240;
      uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    uVar8 = FUN_1813f2240(0,0x8e7);
    if (1 < uVar8) {
      lVar13 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar13 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar13 = *plVar1;
      }
    }
  }
  uStack_48c = 0x88a1c1ce;
  uStack_488 = 0xc751e41d;
  uVar15 = (uint)(param_5 != '\0');
  if (param_3 == 0) {
    uVar15 = uVar15 | 0x10;
    uStack_4a8 = 3;
  }
  else if (param_3 == 1) {
    uVar15 = uVar15 | 0x40;
    uStack_4a8 = 1;
  }
  else if (param_3 == 2) {
    uVar15 = uVar15 | 0x30;
    uStack_4a8 = 2;
  }
  pCVar2 = param_1 + 0x10;
  _Count_00 = 0xffffffffffffffff;
  auVar4._8_8_ = 0;
  auVar4._0_8_ = *(longlong *)(param_1 + 0x10) + 1;
  uVar9 = SUB168(ZEXT816(2) * auVar4,0);
  if (SUB168(ZEXT816(2) * auVar4,8) != 0) {
    uVar9 = 0xffffffffffffffff;
  }
  lpWideCharStr = (LPCWSTR)thunk_FUN_1811316e0(uVar9);
  uStack_48c = (~uStack_48c + 0xcfb2cf84 >> 0x18 | (~uStack_48c + 0xcfb2cf84) * 0x100) + 0xa79804c;
  pcStack_458 = param_2 + 0x10;
  auVar5._8_8_ = 0;
  auVar5._0_8_ = *(longlong *)(param_2 + 0x10) + 1;
  uVar9 = SUB168(ZEXT816(2) * auVar5,0);
  if (SUB168(ZEXT816(2) * auVar5,8) != 0) {
    uVar9 = 0xffffffffffffffff;
  }
  pWStack_448 = lpWideCharStr;
  lpWideCharStr_00 = (LPCWSTR)thunk_FUN_1811316e0(uVar9);
  lpMultiByteStr = local_440;
  if (0xf < *(ulonglong *)(local_440 + 0x18)) {
    lpMultiByteStr = *(LPCSTR *)local_440;
  }
  MultiByteToWideChar(0xfde9,0,lpMultiByteStr,(int)*(undefined8 *)pCVar2 + 1,lpWideCharStr,
                      (int)*(undefined8 *)pCVar2 + 1);
  pFVar10 = local_450;
  if (0xf < *(ulonglong *)(local_450 + 0x18)) {
    pFVar10 = *(FARPROC *)local_450;
  }
  MultiByteToWideChar(0xfde9,0,(LPCSTR)pFVar10,(int)*(undefined8 *)pcStack_458 + 1,lpWideCharStr_00,
                      (int)*(undefined8 *)pcStack_458 + 1);
  uStack_488 = 0xcc9e2d51;
  if (param_4 != '\0') {
    iVar14 = MessageBoxW((HWND)0x0,lpWideCharStr_00,lpWideCharStr,uVar15 | 0x2000);
    if (iVar14 == 1) {
      local_470 = 1;
    }
    else if (iVar14 == 2) {
      local_470 = 2;
    }
    else {
      local_470 = 0;
    }
    FUN_18113eab0();
    uRam000000018265f0f8 = 1;
    goto code_r0x0001805f093e;
  }
  hModule = LoadLibraryW(L"Wtsapi32.dll");
  if ((hModule != (HMODULE)0x0) &&
     (pFVar10 = GetProcAddress(hModule,"WTSSendMessageW"), local_450 = pFVar10,
     pFVar10 != (FARPROC)0x0)) {
    uStack_50 = _UNK_181bb5208;
    uStack_48 = _UNK_181bb5210;
    if (param_6 == '\0') {
      hObj = GetProcessWindowStation();
      BVar6 = GetUserObjectInformationW(hObj,2,&uStack_50,0x10,(LPDWORD)0x0);
      if (BVar6 == 0) goto code_r0x0001805f0c72;
      lVar13 = 0;
      do {
        pwVar3 = L"WinSta0" + lVar13;
        lVar13 = lVar13 + 1;
        if (*pwVar3 != (&wStack_52)[lVar13]) goto code_r0x0001805f0c72;
      } while (lVar13 != 8);
      IVar11 = (*pFVar10)(0,0xffffffff,lpWideCharStr,
                          (ulonglong)(uint)((int)*(undefined8 *)pCVar2 * 2));
      iVar14 = (int)IVar11;
    }
    else {
code_r0x0001805f0c72:
      uVar9 = *(undefined8 *)pCVar2;
      DVar7 = WTSGetActiveConsoleSessionId();
      lpWideCharStr = pWStack_448;
      IVar11 = (*local_450)(0,(ulonglong)DVar7,pWStack_448,(ulonglong)(uint)((int)uVar9 * 2));
      iVar14 = (int)IVar11;
    }
    if (iVar14 != 0) goto code_r0x0001805f093e;
  }
  memset(&_Stack_438,0,0x3d0);
  _Stack_438.cbSize = 0x3b8;
  _Stack_438.hWnd = GetDesktopWindow();
  _Stack_438.uID = 0;
  Shell_NotifyIconW(2,&_Stack_438);
  uVar8 = 0xffffffffffffffff;
  _Stack_438.uFlags = 0x10;
  do {
    uVar8 = uVar8 + 1;
  } while (lpWideCharStr[uVar8] != L'\0');
  if (uVar8 < 0x3f) {
    _Count = 0xffffffffffffffff;
    do {
      _Count = _Count + 1;
    } while (lpWideCharStr[_Count] != L'\0');
  }
  else {
    _Count = 0x3f;
  }
  wcsncpy(awStack_104,lpWideCharStr,_Count);
  uVar8 = 0xffffffffffffffff;
  awStack_104[_Count] = L'\0';
  do {
    uVar8 = uVar8 + 1;
  } while (lpWideCharStr_00[uVar8] != L'\0');
  if (uVar8 < 0xff) {
    do {
      _Count_00 = _Count_00 + 1;
    } while (lpWideCharStr_00[_Count_00] != L'\0');
  }
  else {
    _Count_00 = 0xff;
  }
  wcsncpy(awStack_308,lpWideCharStr_00,_Count_00);
  awStack_308[_Count_00] = L'\0';
  uStack_84 = uStack_4a8;
  uStack_108 = 30000;
  Shell_NotifyIconW(0,&_Stack_438);
code_r0x0001805f093e:
                    /* WARNING: Subroutine does not return */
  free(lpWideCharStr);
}



############ FUN_ 180485450 size=94 ############

void FUN_180485450(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
    return;
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < param_1[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805a3b50 size=32 ############

undefined8 FUN_1805a3b50(undefined8 param_1,undefined8 param_2)

{
  FUN_1805ae640(param_2,param_1);
  return param_1;
}



############ FUN_ 1805a3f20 size=309 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805a3f20(undefined8 *param_1,longlong param_2)

{
  basic_streambuf<char,std::char_traits<char>_> *this;
  void *pvVar1;
  void *_Memory;
  longlong lVar2;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  undefined8 *local_50;
  basic_streambuf<char,std::char_traits<char>_> *local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_58 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined1 *)((longlong)param_1 + 0x44) = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  *(undefined1 *)(param_1 + 0xd) = 0xff;
  this = (basic_streambuf<char,std::char_traits<char>_> *)(param_1 + 0xe);
  local_50 = param_1;
  local_48 = this;
  std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
            (this);
  *(undefined ***)this =
       boost::io::basic_altstringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  param_1[0x1b] = 0;
  *(undefined1 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)((longlong)param_1 + 0xe4) = 3;
  *(undefined1 *)(param_1 + 0x1e) = 0;
  if (param_2 != 0) {
    local_30 = 0;
    local_28 = 0xf;
    local_40 = 0;
    lVar2 = -1;
    do {
      lVar2 = lVar2 + 1;
    } while (*(char *)(param_2 + lVar2) != '\0');
    FUN_1805a6cb0(&local_40,param_2);
    FUN_1805a99a0(param_1,&local_40);
    if (0xf < local_28) {
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1805a4160 size=59 ############

undefined1 * FUN_1805a4160(undefined1 *param_1,longlong param_2)

{
  longlong lVar1;
  
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined8 *)(param_1 + 0x18) = 0xf;
  lVar1 = -1;
  *param_1 = 0;
  do {
    lVar1 = lVar1 + 1;
  } while (*(char *)(param_2 + lVar1) != '\0');
  FUN_1805a6cb0();
  return param_1;
}



############ FUN_ 180487a80 size=23 ############

undefined1 * FUN_180487a80(undefined1 *param_1)

{
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined8 *)(param_1 + 0x18) = 0xf;
  *param_1 = 0;
  return param_1;
}



############ FUN_ 1805a5a40 size=73 ############

undefined8 * FUN_1805a5a40(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  
  if (param_1 != param_2) {
    FUN_180485450();
    uVar1 = param_2[1];
    *param_1 = *param_2;
    param_1[1] = uVar1;
    uVar1 = param_2[3];
    param_1[2] = param_2[2];
    param_1[3] = uVar1;
    param_2[2] = 0;
    param_2[3] = 0xf;
    *(undefined1 *)param_2 = 0;
  }
  return param_1;
}



############ FUN_ 1814220a0 size=1757 ############

/* WARNING: Instruction at (ram,0x000181422540) overlaps instruction at (ram,0x00018142253e)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Possible PIC construction at 0x000181422828: Changing call to branch */
/* WARNING: Removing unreachable block (ram,0x00018142282d) */
/* WARNING: Removing unreachable block (ram,0x000181422600) */
/* WARNING: Removing unreachable block (ram,0x000181422498) */
/* WARNING: Removing unreachable block (ram,0x00018142249e) */
/* WARNING: Removing unreachable block (ram,0x000181422147) */
/* WARNING: Removing unreachable block (ram,0x00018142217b) */
/* WARNING: Removing unreachable block (ram,0x00018142253b) */
/* WARNING: Removing unreachable block (ram,0x0001814224e1) */
/* WARNING: Removing unreachable block (ram,0x00018142243a) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_1814220a0(longlong param_1,undefined8 param_2)

{
  byte bVar1;
  char cVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  undefined4 *puVar5;
  longlong lVar6;
  ulonglong uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  IMAGE_DOS_HEADER *pIVar11;
  undefined1 *puVar12;
  IMAGE_DOS_HEADER *pIVar13;
  uint *puVar14;
  uint *puVar15;
  uint *puVar16;
  undefined4 uVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  int unaff_retaddr;
  undefined1 auStack_258 [32];
  int local_238;
  uint uStack_228;
  undefined8 local_220;
  undefined8 local_208;
  undefined8 local_1f8;
  undefined8 local_1f0;
  uint uStack_1e8;
  uint local_1d4;
  undefined4 local_1d0;
  undefined8 local_1c8;
  undefined8 local_1c0;
  longlong local_1b8;
  uint local_1b0 [2];
  undefined8 local_1a8;
  undefined8 local_1a0;
  undefined **local_198;
  undefined4 local_190;
  undefined4 local_18c;
  undefined8 local_180;
  undefined4 local_148;
  undefined4 uStack_144;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  undefined8 local_138;
  undefined4 local_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  undefined4 uStack_11c;
  undefined1 local_108 [16];
  undefined1 local_f8 [16];
  undefined **local_e8;
  undefined1 local_e0 [8];
  longlong *local_d8;
  undefined1 local_d0 [40];
  uint auStack_a8 [20];
  ulonglong local_58;
  
  local_138 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_258;
  local_1d0 = 0x310;
  uVar8 = (uint)&stack0x00000000 & 0x8ff;
  iVar9 = uVar8 * uVar8 + 1;
  uVar10 = (iVar9 >> 4) + (iVar9 >> 1) + iVar9 * 0x24924924 >> 0x1d;
  uVar10 = (int)(uVar10 - 7) >> 0x1f & uVar10;
  uVar8 = (uint)&stack0x00000000 & 0x6eff;
  uVar8 = (uVar8 * uVar8 + 1) % 7;
  local_1d4 = ((int)(-uVar8 | uVar8) >> 0x1f) - ((int)(-uVar10 | uVar10) >> 0x1f) ^ 0xe0;
  local_1b8 = param_1;
  local_180 = param_2;
  (**(code **)(**(longlong **)(param_1 + 0x138) + 8))(*(longlong **)(param_1 + 0x138),&local_190);
  local_1f0 = 0x180000000;
  local_220 = 0x3654;
  local_1c8 = 0x1809fbe14;
  local_1c0 = 0x1809ff468;
  local_1f8 = 0xff7924fa701aeb97;
  local_198 = NoTooltipOption::vftable;
  local_e8 = &PTR_vftable_18262b550;
  local_e0[0] = 1;
  puVar3 = (undefined8 *)
           (*(code *)
             PTR_vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData_____1824b79c8
           )(&local_198,&local_d8);
  cVar2 = (**(code **)(*(longlong *)*puVar3 + 0xc0))
                    ((longlong *)*puVar3,puVar3 + 1,local_e0,local_e8);
  (**(code **)(*local_d8 + 0xb0))(local_d8,local_d0);
  (**(code **)(*local_e8 + 0xb0))(local_e8,local_e0);
  local_198 = ConfigOption::vftable;
  if (cVar2 == '\0') {
    FUN_1814203a0(param_1,local_180);
    fVar18 = (float)FUN_18055e970(param_1 + 0xb0,DAT_1824c442c);
    fVar19 = (float)FUN_18049ea90(param_1 + 0x118);
    fVar20 = (float)FUN_18055e970(param_1 + 0xb0,DAT_1824c442c);
    fVar21 = (float)FUN_18049eaa0(param_1 + 0x118);
    local_238 = (int)(fVar20 + fVar21);
    FUN_18047c5b0(&local_148,local_190,local_18c,(int)(fVar18 + fVar19));
    do {
      puVar15 = local_1b0;
      FUN_181425126();
      *puVar15 = 0x6a843276;
      FUN_181424806();
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar8 = ~(local_1b0[0] << 7 | local_1b0[0] >> 0x19) + 0xb7b507da;
    uVar8 = (uVar8 >> 0x1f | uVar8 * 2) ^ 0x283f7658;
    uVar8 = (uVar8 >> 10 | uVar8 << 0x16) + 0x75704c60;
    local_220 = CONCAT44(local_220._4_4_,uVar8 * 0x2000 | uVar8 >> 0x13) ^ 0xffc049d2;
    uVar4 = FUN_180483f90(local_1b8);
    puVar5 = (undefined4 *)FUN_18134c250(uVar4,local_108);
    local_128 = *puVar5;
    uStack_124 = puVar5[1];
    uStack_120 = puVar5[2];
    uStack_11c = puVar5[3];
    puVar12 = local_f8;
    puVar5 = (undefined4 *)FUN_18051bdb0(&local_148,puVar12,&local_128);
    local_148 = *puVar5;
    uStack_144 = puVar5[1];
    uStack_140 = puVar5[2];
    uStack_13c = puVar5[3];
                    /* WARNING: Call to offcut address within same function */
    lVar6 = func_0x000181422dc6();
    for (uVar7 = (lVar6 - (longlong)puVar12) + 0x382d27e4;
        SCARRY8(uVar7 - 0x382d27e4,(longlong)puVar12) ==
        (longlong)(puVar12 + (uVar7 - 0x382d27e4)) < 0;
        uVar7 = (ulonglong)((int)(puVar12 + (uVar7 - 0x382d27e4)) + 0xc7d2d81c)) {
    }
    uVar4 = (*(code *)0x180000616)();
    return uVar4;
  }
  pIVar11 = &IMAGE_DOS_HEADER_180000000;
  local_220 = 0x1805f56f4;
  local_1a0 = 0x1805f8d54;
  local_1a8 = 0x4ffbcc21cb326b5f;
  local_208 = 0xcb326b5f;
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  puVar15 = (uint *)0x1805f56f4;
  do {
                    /* WARNING: Bad instruction - Truncating control flow here */
    func_0x000181422779();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uStack_228 = 0xb3;
code_r0x000181422593:
  if (((ulonglong)puVar15 & 0x28) == 0) {
    uVar8 = uStack_228 & 0xff;
  }
  else {
    uVar8 = uStack_228 & 0x17f;
  }
  iVar9 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  uVar10 = (uint)puVar15;
  uVar8 = ((uVar10 & 0x10ff) - 1) * (uVar10 & 0x10ff) - 1 & 1;
  uVar8 = ((int)(-uVar8 | uVar8) >> 0x1f) >> (((char)puVar15 + '\x01') * (char)puVar15 + 0x49U & 1);
  uVar7 = (ulonglong)uVar8;
  if (((((iVar9 >> 1) - (iVar9 >> 3)) + iVar9 * 0x55555555 >> 0x1e | 0x805ff7e5U) & 0x805ff741) ==
      ((int)(-uVar8 | uVar8) >> 0x1f & (uVar10 ^ 0x5815) & 0xd915 | uVar10 ^ 0x7a15)) {
    uStack_1e8 = uStack_228;
    uVar17 = func_0x000181423a07();
                    /* WARNING: Could not recover jumptable at 0x0001814229a4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar4 = (*(code *)&UNK_1813b130f)(uVar17,uVar7);
    return uVar4;
  }
  puVar14 = puVar15;
  if ((pIVar11 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar6._0_1_ = pIVar11->e_magic[0], lVar6._1_1_ = pIVar11->e_magic[1],
     lVar6._2_2_ = pIVar11->e_cblp, lVar6._4_2_ = pIVar11->e_cp, lVar6._6_2_ = pIVar11->e_crlc,
     -1 < lVar6)) {
    local_1a0 = 0x2621fc0;
    pIVar13 = pIVar11;
    do {
      if (puVar15 < IMAGE_DOS_HEADER_180000000.e_magic + lVar6 + 8) {
        pIVar11 = pIVar13;
        if (-1 < lVar6) {
          puVar16 = (uint *)(lVar6 + 0x180000000);
          if (puVar16 < puVar15 + 1) {
            auStack_a8[0] = *puVar15;
            goto code_r0x0001814226d0;
          }
        }
        break;
      }
      pIVar11 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
      lVar6._0_2_ = pIVar13->e_cparhdr;
      lVar6._2_2_ = pIVar13->e_minalloc;
      lVar6._4_2_ = pIVar13->e_maxalloc;
      lVar6._6_2_ = pIVar13->e_ss;
      pIVar13 = pIVar11;
    } while (-1 < lVar6);
  }
  goto code_r0x0001814226f4;
  while (puVar16 = (uint *)(lVar6 + 0x180000000), puVar16 < puVar15 + 1) {
code_r0x0001814226d0:
    *(longlong *)(&stack0x00017fffff58 + (lVar6 - (longlong)puVar15)) =
         *(longlong *)puVar16 + -0x180000000;
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    lVar6 = *(longlong *)pIVar13;
    puVar14 = auStack_a8;
    if (lVar6 < 0) break;
  }
code_r0x0001814226f4:
  uStack_228 = uStack_228 >> 0x1c ^ uStack_228 << 4;
  do {
    uStack_228 = uStack_228 ^ *puVar14;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  bVar1 = (byte)uStack_228 & 0x5f;
  uVar8 = uStack_228 & 0xf | 0x78;
  puVar15 = (uint *)((longlong)puVar15 +
                    (0x6703L >>
                     (uVar8 * uVar8 * 0x4627 == 0x17619fc5 |
                     bVar1 * bVar1 * (bVar1 + 1) * (bVar1 + 1) & 1) ^ 0x6707U));
  goto code_r0x000181422593;
}



############ FUN_ 18148ede0 size=1371 ############

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

longlong FUN_18148ede0(longlong param_1,undefined8 param_2)

{
  undefined8 uVar1;
  undefined4 extraout_var;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined1 auStack_1e8 [48];
  undefined *local_1b8;
  undefined *local_1a8;
  undefined8 local_188;
  undefined1 local_180 [8];
  float local_178;
  float local_174;
  uint local_150;
  uint local_14c;
  undefined8 local_140;
  undefined1 local_a8 [104];
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  uVar4 = (uint)&stack0x00000000;
  uVar2 = ((uVar4 & 0x13ff) * (uVar4 & 0x13ff) * 0x10 + 4) % 0x13;
  local_150 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0x9117 ^ 0x9bf7;
  if (((ulonglong)&stack0x00000000 & 0x680) == 0) {
    uVar2 = uVar4 & 0x33f;
    iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
    local_14c = 0x18d - (((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e);
  }
  else {
    local_14c = 0x18d;
  }
  uVar2 = ((uVar4 & 0x4ff) + 1) * (uVar4 & 0x4ff) + 0x22d1 & 0x80000001;
  local_14c = ((int)(-uVar2 | uVar2) >> 0x1f) * -0xc6d ^ local_14c;
  local_140 = param_2;
  uVar1 = FUN_18134c250(param_1,local_a8);
  FUN_1804ab5a0(uVar1,local_180);
  FUN_180579a70(local_180,local_178 * DAT_1824c4668,local_174 * DAT_1824c4668);
  FUN_181345240(param_1 + 0x200);
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  local_188 = 0;
  local_1b8 = &DAT_180746594;
  local_1a8 = &DAT_180748b64;
  FUN_181490d2f();
                    /* WARNING: Call to offcut address within same function */
  func_0x00018148f158();
  return ~((CONCAT44(extraout_var,unaff_retaddr) ^ 0xffffffffffffffff) + 1) + 1;
}



############ FUN_ 1815112f0 size=1068 ############

/* WARNING: Removing unreachable block (ram,0x0001815113af) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1815112f0(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  float fVar3;
  uint uVar4;
  undefined1 auStack_1c8 [48];
  undefined8 local_198;
  undefined8 local_190;
  undefined8 local_188;
  undefined4 local_170;
  undefined4 local_15c;
  undefined1 local_e8 [64];
  undefined1 local_a8 [16];
  undefined1 local_98 [80];
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  local_15c = 0xe70;
  lVar1 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
  fVar3 = *(float *)(lVar1 + 0x88) * _DAT_1824c42e4;
  uVar2 = FUN_18134c250(param_1,local_a8);
  uVar2 = FUN_1804ab5a0(uVar2,local_98);
  uVar4 = (uint)fVar3 ^ DAT_1824c4f30;
  FUN_1804af0b0(uVar2,local_e8,uVar4,uVar4);
  local_170 = 0x3385300c;
  local_190 = 0x2621fc0;
  lVar1 = 0x1448d70;
  local_198 = 0x181448d70;
  local_188 = 0x181448e70;
  uVar4 = (iRam0000000181448d70 + -0x1d46075c) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d74) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d78) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d7c) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d80) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d84) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d88) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d8c) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d90) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d94) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d98) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000181448d9c) * 0x401;
  FUN_18151326f((uVar4 >> 6 ^ uVar4) + iRam0000000181448da0);
                    /* WARNING: Call to offcut address within same function */
  func_0x000181511610();
                    /* WARNING: Could not recover jumptable at 0x00018151172a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(lVar1 + -0x13c70))();
  return;
}



############ FUN_ 181544600 size=993 ############

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

void FUN_181544600(longlong param_1)

{
  uint uVar1;
  undefined1 *puVar2;
  longlong unaff_RBX;
  longlong unaff_RSI;
  undefined1 auStack_1b8 [104];
  uint local_150;
  uint local_14c;
  longlong local_148;
  longlong *local_128;
  undefined1 local_d8 [160];
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar1 = (uint)&stack0x00000000 & 0xeff;
  uVar1 = uVar1 * uVar1 * 0x10 + 4;
  uVar1 = -1 >> ((char)uVar1 + (char)(uVar1 / 0x13) * -0x13 & 0x1fU);
  local_150 = ((int)(-uVar1 | uVar1) >> 0x1f) * -0xf0aa ^ 0xfd2a;
  if (((ulonglong)&stack0x00000000 & 0x1d00) == 0) {
    uVar1 = 0x1f9fabd7;
  }
  else {
    uVar1 = 4;
  }
  puVar2 = local_d8;
  local_14c = ((int)(-uVar1 | uVar1) >> 0x1f) * -0x90ad ^ 0x934d;
  local_148 = param_1;
  FUN_18134c250(param_1,puVar2);
  local_128 = (longlong *)(param_1 + 0x3d8);
  if (*local_128 == 0) {
    uVar1 = FUN_181545547();
    *(int *)(unaff_RBX + -0x4f) = *(int *)(unaff_RBX + -0x4f) - (~(~uVar1 + 1) + 1);
                    /* WARNING: Could not recover jumptable at 0x000181545658. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)(unaff_RSI + -0x586))();
    return;
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x000181544828();
                    /* WARNING: Could not recover jumptable at 0x0001815449cb. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_RSI + 0x1b79))(0x495eef90,puVar2);
  return;
}



############ FUN_ 18157dc80 size=570 ############

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

void FUN_18157dc80(undefined8 param_1)

{
  int iVar1;
  uint uVar2;
  bool bVar3;
  int unaff_retaddr;
  undefined1 auStack_1c8 [128];
  uint local_148;
  uint local_144;
  undefined8 local_f0;
  undefined1 local_a8 [120];
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_1c8;
  uVar2 = (uint)&stack0x00000000 & 0x3ff;
  local_148 = 49999 >> ((char)((ulonglong)
                               ((longlong)(int)((uVar2 + 2) * (uVar2 + 1) * uVar2) * 0x55555556) >>
                              0x20) * -3 & 0x1fU) ^ 0xcb6f;
  uVar2 = (uint)&stack0x00000000 & 0x2ff;
  iVar1 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_144 = 0xe60c << ((byte)(((iVar1 >> 1) - (iVar1 >> 3)) + iVar1 * 0x55555555 >> 0x1e) & 0x1f)
              ^ 0xe4dc;
  local_f0 = param_1;
  FUN_18134c250(param_1,local_a8);
  do {
    FUN_18157f05c();
    FUN_18157f601();
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    bVar3 = uVar2 == 0;
  } while (!bVar3);
  do {
    FUN_18157c8de(0x781c);
    if (!bVar3) {
      register0x00000020 = (BADSPACEBASE *)-(~(ulonglong)register0x00000020 + 1);
    }
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    bVar3 = uVar2 == 0;
  } while (!bVar3);
  FUN_18157fe16();
  func_0x00018157ded8();
  func_0x00018157dec2();
  return;
}



############ FUN_ 181593e50 size=1088 ############

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

void FUN_181593e50(longlong param_1)

{
  undefined8 *puVar1;
  char cVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  uint uVar6;
  undefined8 auStack_1a0 [4];
  undefined1 auStack_178 [56];
  undefined8 local_140;
  undefined8 local_138;
  undefined8 local_118;
  undefined8 local_110;
  undefined4 local_fc;
  uint local_f8;
  longlong local_f0;
  undefined1 local_a8 [16];
  undefined1 local_98 [24];
  undefined8 auStack_80 [10];
  ulonglong local_30;
  
  puVar1 = auStack_80 + 1;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_178;
  if (((ulonglong)&stack0x00000000 & 0x3a00) == 0) {
    uVar6 = (uint)&stack0x00000000 & 0x10ff;
    uVar6 = (uVar6 * uVar6 + 1) % 7;
    local_f8 = (int)(-uVar6 | uVar6) >> 0x1f & 0x20bb;
  }
  else {
    local_f8 = 0x20bb;
  }
  local_f8 = local_f8 ^ 0x2a4b;
  local_fc = 0xc30;
  local_f0 = param_1;
  uVar3 = FUN_18134c250(param_1,local_a8);
  lVar4 = FUN_1804ab5a0(uVar3,local_98);
  local_138 = 0;
  local_118 = 0x30c;
  local_140 = 0x1809c46c4;
  local_110 = 0x1809c49d0;
  FUN_1815930d6(*(float *)(lVar4 + 0xc) * DAT_1824c3c70 * *(float *)(param_1 + 0xe4));
                    /* WARNING: Call to offcut address within same function */
  auStack_1a0[1] = 0x181594136;
  auStack_1a0[2] = 0x180000000;
  func_0x000181594139();
  puVar5 = auStack_1a0 + 1;
  cVar2 = '\x1c';
  do {
    puVar1 = puVar1 + -1;
    puVar5 = puVar5 + -1;
    *puVar5 = *puVar1;
    cVar2 = cVar2 + -1;
  } while ('\0' < cVar2);
  return;
}



############ FUN_ 1815d59cd size=6391 ############

/* WARNING: Instruction at (ram,0x0001815d5fda) overlaps instruction at (ram,0x0001815d5fd8)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001815d7a22) */
/* WARNING: Removing unreachable block (ram,0x0001815d6abd) */
/* WARNING: Removing unreachable block (ram,0x0001815d60b9) */
/* WARNING: Removing unreachable block (ram,0x0001815d5fd6) */
/* WARNING: Removing unreachable block (ram,0x0001815d6cd3) */
/* WARNING: Removing unreachable block (ram,0x0001815d710c) */
/* WARNING: Removing unreachable block (ram,0x0001815d69ba) */
/* WARNING: Removing unreachable block (ram,0x0001815d6351) */
/* WARNING: Removing unreachable block (ram,0x0001815d70db) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1815d59cd(undefined8 param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  undefined8 uVar24;
  uint *puVar25;
  ulonglong uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  int iVar33;
  undefined8 *puVar34;
  undefined1 *puVar35;
  undefined1 *puVar36;
  longlong unaff_RBP;
  int unaff_ESI;
  ulonglong uVar37;
  ulonglong unaff_RDI;
  code *pcVar38;
  ulonglong uVar39;
  ulonglong uVar40;
  longlong lVar41;
  undefined8 uVar42;
  longlong unaff_R13;
  int *piVar43;
  ulonglong unaff_R14;
  longlong lVar44;
  ulonglong uVar45;
  undefined4 uVar46;
  undefined4 uVar47;
  undefined4 uVar48;
  undefined4 uVar49;
  ulonglong in_stack_00000060;
  
  uVar27 = (*param_2 + 1) * *param_2 & 0x80000001;
  if ((int)uVar27 < 0) {
    uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
  }
  if (uVar27 != 0) {
    uVar24 = FUN_1815d59cd(0x5620,param_2);
    return uVar24;
  }
  do {
    unaff_R14 = ((((unaff_R14 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1 ^
                 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    uVar27 = (*param_2 + 1) * *param_2 & 0x80000001;
    if ((int)uVar27 < 0) {
      uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar27 != 0);
  if (*(longlong *)(unaff_RDI + 0x210) != 0) {
    pcVar38 = *(code **)(*(longlong *)(unaff_RDI + 0x208) + 8);
    if (pcVar38 == FUN_180584490) {
      if (*(longlong *)(unaff_RDI + 0x210) == 0) {
        FUN_1805849b0();
      }
      uVar26 = *(ulonglong *)(unaff_RDI + 0x210);
    }
    else {
      uVar26 = (*pcVar38)(unaff_RDI + 0x208,pcVar38,param_3,param_4);
    }
    uVar27 = DAT_181497138 * 0x5bd1e995;
    uVar2 = DAT_18149713c * 0x5bd1e995;
    uVar3 = DAT_181497140 * 0x5bd1e995;
    lVar41 = unaff_RBP + 0x38;
    uVar45 = unaff_RDI;
    uVar40 = uVar26;
    uVar24 = FUN_1813f22a0(uVar26,lVar41,DAT_1826741c0);
    uVar46 = FUN_1813ec390(uVar24);
    *(undefined4 *)(unaff_RDI + 0x24c) = uVar46;
    do {
      lVar44 = ~uVar45 + 1 + unaff_R14 + lVar41;
      uVar39 = ~((unaff_R14 + lVar41) - lVar44) + 1;
      uVar40 = uVar40 ^ ~uVar45 + 1 ^ uVar39;
      uVar45 = ~uVar39 + 1;
      unaff_R14 = (lVar44 - uVar39) - lVar41;
      uVar28 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar28 < 0) {
        uVar28 = (uVar28 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar28 != 0);
    uVar28 = DAT_181497144 * 0x5bd1e995;
    uVar4 = DAT_181497148 * 0x5bd1e995;
    uVar5 = DAT_18149714c * 0x5bd1e995;
    uVar6 = DAT_181497150 * 0x5bd1e995;
    FUN_1813f22a0(uVar26,unaff_RBP + -0x18,DAT_182674268,in_stack_00000060,1);
    *(undefined4 *)(in_stack_00000060 + 0x250) = *(undefined4 *)(unaff_RBP + -0x14);
    uVar7 = DAT_181497154 * 0x5bd1e995;
    uVar8 = DAT_181497158 * 0x5bd1e995;
    uVar9 = DAT_18149715c * 0x5bd1e995;
    uVar10 = DAT_181497160 * 0x5bd1e995;
    uVar11 = DAT_181497164 * 0x5bd1e995;
    do {
      func_0x0001815d4ec2(0x6d28);
      uVar29 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar29 < 0) {
        uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar29 != 0);
    uVar29 = DAT_181497168 * 0x5bd1e995;
    uVar12 = DAT_18149716c * 0x5bd1e995;
    uVar13 = DAT_181497170 * 0x5bd1e995;
    do {
      uVar30 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar30 < 0) {
        uVar30 = (uVar30 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar30 != 0);
    uVar30 = DAT_181497174 * 0x5bd1e995;
    FUN_1813f22a0(uVar26,unaff_RBP + -0x10,DAT_182674230,in_stack_00000060,1);
    *(undefined4 *)(in_stack_00000060 + 0x254) = *(undefined4 *)(unaff_RBP + -0xc);
    uVar14 = DAT_181497178 * 0x5bd1e995;
    uVar15 = DAT_18149717c * 0x5bd1e995;
    do {
      uVar31 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar31 < 0) {
        uVar31 = (uVar31 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar31 != 0);
    uVar31 = DAT_181497180 * 0x5bd1e995;
    uVar16 = DAT_181497184 * 0x5bd1e995;
    uVar17 = DAT_181497188 * 0x5bd1e995;
    FUN_1813f22a0(uVar26,unaff_RBP + -8,DAT_18267417c,in_stack_00000060,1);
    *(undefined4 *)(in_stack_00000060 + 600) = *(undefined4 *)(unaff_RBP + -4);
    do {
      uVar32 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar32 < 0) {
        uVar32 = (uVar32 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar32 != 0);
    uVar27 = ((uint)(DAT_181497190 * 0x5bd1e995) >> 0x18 ^ DAT_181497190 * 0x5bd1e995) * 0x5bd1e995
             ^ (((uint)(DAT_18149718c * 0x5bd1e995) >> 0x18 ^ DAT_18149718c * 0x5bd1e995) *
                0x5bd1e995 ^
               ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
               ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
               ((uVar31 >> 0x18 ^ uVar31) * 0x5bd1e995 ^
               ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
               ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
               ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
               ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
               ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
               ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^
               ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
               ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
               ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
               ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
               ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
               ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
               ((uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995 ^
               ((uVar4 >> 0x18 ^ uVar4) * 0x5bd1e995 ^
               ((uVar28 >> 0x18 ^ uVar28) * 0x5bd1e995 ^
               ((uVar3 >> 0x18 ^ uVar3) * 0x5bd1e995 ^
               ((uVar2 >> 0x18 ^ uVar2) * 0x5bd1e995 ^
               ((uVar27 >> 0x18 ^ uVar27) * 0x5bd1e995 ^ 0xfb6bdfd9) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995;
    uVar45 = (ulonglong)uVar27;
    do {
      FUN_1815d59cc(0x6d28);
      if ((longlong)(uVar45 ^ 0x1bbefaff) < 0) {
        uVar24 = FUN_1815d621c();
        return uVar24;
      }
      lVar41 = uVar40 + unaff_R14;
      uVar40 = ~(unaff_R14 - lVar41) + 1;
      unaff_R14 = lVar41 - uVar40;
      uVar2 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    uVar2 = _UNK_181497194 * 0x5bd1e995;
    uVar3 = _UNK_181497198 * 0x5bd1e995;
    uVar28 = _UNK_18149719c * 0x5bd1e995;
    uVar4 = _UNK_1814971a0 * 0x5bd1e995;
    uVar5 = _UNK_1814971a4 * 0x5bd1e995;
    uVar6 = _UNK_1814971a8 * 0x5bd1e995;
    do {
      uVar7 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar7 = _UNK_1814971ac * 0x5bd1e995;
    FUN_1813f22a0(uVar26);
    *(undefined4 *)(in_stack_00000060 + 0x25c) = *(undefined4 *)(unaff_RBP + 4);
    uVar8 = _UNK_1814971b0 * 0x5bd1e995;
    do {
      uVar9 = (*(int *)(unaff_RBP + 0x248) + 1) * *(int *)(unaff_RBP + 0x248) & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar9 = _UNK_1814971b4 * 0x5bd1e995;
    uVar10 = _UNK_1814971b8 * 0x5bd1e995;
    uVar11 = _UNK_1814971bc * 0x5bd1e995;
    uVar29 = _UNK_1814971c0 * 0x5bd1e995;
    uVar12 = _UNK_1814971c4 * 0x5bd1e995;
    uVar13 = _UNK_1814971c8 * 0x5bd1e995;
    uVar30 = _UNK_1814971cc * 0x5bd1e995;
    uVar14 = _UNK_1814971d0 * 0x5bd1e995;
    FUN_1813f22a0(uVar26,unaff_RBP + 8,_DAT_1826741e8,in_stack_00000060,1);
    *(undefined4 *)(in_stack_00000060 + 0x260) = *(undefined4 *)(unaff_RBP + 0xc);
    uVar15 = _UNK_1814971d4 * 0x5bd1e995;
    uVar31 = _UNK_1814971d8 * 0x5bd1e995;
    uVar16 = _UNK_1814971dc * 0x5bd1e995;
    uVar17 = _UNK_1814971e0 * 0x5bd1e995;
    uVar32 = _UNK_1814971e4 * 0x5bd1e995;
    uVar18 = _UNK_1814971e8 * 0x5bd1e995;
    uVar19 = _UNK_1814971ec * 0x5bd1e995;
    uVar20 = _UNK_1814971f0 * 0x5bd1e995;
    uVar21 = _UNK_1814971f4 * 0x5bd1e995;
    uVar22 = _UNK_1814971f8 * 0x5bd1e995;
    uVar24 = FUN_1813f22a0(uVar26,unaff_RBP + 0x40,_DAT_1826741b8,in_stack_00000060,1);
    uVar46 = FUN_1813ec390(uVar24);
    *(undefined4 *)(in_stack_00000060 + 0x268) = uVar46;
    uVar23 = _UNK_1814971fc * 0x5bd1e995;
    FUN_1813f22a0(uVar26,unaff_RBP + 0x10,DAT_182674288,in_stack_00000060,1);
    *(undefined4 *)(in_stack_00000060 + 0x264) = *(undefined4 *)(unaff_RBP + 0x14);
    uVar27 = (((uint)(_DAT_181497230 * 0x5bd1e995) >> 0x18 ^ _DAT_181497230 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_18149722c * 0x5bd1e995) >> 0x18 ^ _UNK_18149722c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497228 * 0x5bd1e995) >> 0x18 ^ _UNK_181497228 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497224 * 0x5bd1e995) >> 0x18 ^ _UNK_181497224 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497220 * 0x5bd1e995) >> 0x18 ^ _UNK_181497220 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_18149721c * 0x5bd1e995) >> 0x18 ^ _UNK_18149721c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497218 * 0x5bd1e995) >> 0x18 ^ _UNK_181497218 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497214 * 0x5bd1e995) >> 0x18 ^ _UNK_181497214 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497210 * 0x5bd1e995) >> 0x18 ^ _UNK_181497210 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_18149720c * 0x5bd1e995) >> 0x18 ^ _UNK_18149720c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497208 * 0x5bd1e995) >> 0x18 ^ _UNK_181497208 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497204 * 0x5bd1e995) >> 0x18 ^ _UNK_181497204 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_181497200 * 0x5bd1e995) >> 0x18 ^ _UNK_181497200 * 0x5bd1e995) *
              0x5bd1e995 ^
             ((uVar23 >> 0x18 ^ uVar23) * 0x5bd1e995 ^
             ((uVar22 >> 0x18 ^ uVar22) * 0x5bd1e995 ^
             ((uVar21 >> 0x18 ^ uVar21) * 0x5bd1e995 ^
             ((uVar20 >> 0x18 ^ uVar20) * 0x5bd1e995 ^
             ((uVar19 >> 0x18 ^ uVar19) * 0x5bd1e995 ^
             ((uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
             ((uVar32 >> 0x18 ^ uVar32) * 0x5bd1e995 ^
             ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
             ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
             ((uVar31 >> 0x18 ^ uVar31) * 0x5bd1e995 ^
             ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
             ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
             ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
             ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
             ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
             ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^
             ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
             ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
             ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
             ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
             ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
             ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
             ((uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995 ^
             ((uVar4 >> 0x18 ^ uVar4) * 0x5bd1e995 ^
             ((uVar28 >> 0x18 ^ uVar28) * 0x5bd1e995 ^
             ((uVar3 >> 0x18 ^ uVar3) * 0x5bd1e995 ^
             ((uVar2 >> 0x18 ^ uVar2) * 0x5bd1e995 ^ uVar27 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995
             ) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995 ^
             ((uint)(_UNK_181497234 * 0x5bd1e995) >> 0x18 ^ _UNK_181497234 * 0x5bd1e995) *
             0x5bd1e995;
    uVar27 = ((uVar27 << 0x10 | uVar27 >> 0x10) & 0xcff83007 |
             (uVar27 >> 0x10 | uVar27 << 0x10) & 0x3007cff8) + 0x974af179;
    uVar45 = (ulonglong)DAT_18267422c;
    if ((char)(((uVar27 >> 2 & 0xcccccccc | uVar27 * 0x40000000 |
                uVar27 * 4 & 0x33333333 | uVar27 >> 0x1e) == 0xefe2c278) * '7') == '\0') {
      uVar24 = FUN_1813f22a0(uVar26,unaff_RBP + 0x48,uVar45,in_stack_00000060,1);
      uVar46 = FUN_1813ec390(uVar24);
      *(undefined4 *)(in_stack_00000060 + 0x248) = uVar46;
      uVar24 = thunk_FUN_1805a9280();
      return uVar24;
    }
    lVar41 = unaff_RBP + 0x50;
    uVar24 = FUN_1813f22a0(uVar26,lVar41,uVar45,in_stack_00000060,1);
    uVar46 = func_0x0001813ec380(uVar24);
    *(undefined4 *)(in_stack_00000060 + 0x248) = uVar46;
    iVar33 = *(int *)(unaff_RBP + -0x68);
    param_2 = (int *)(unaff_RBP + 0x248);
    puVar35 = (undefined1 *)register0x00000020;
    do {
      *(ulonglong *)(puVar35 + -8) = unaff_R14;
      *(ulonglong *)(puVar35 + -0x10) = in_stack_00000060;
      *(ulonglong *)(puVar35 + -0x18) = uVar45;
      lVar44 = unaff_R13 + lVar41;
      unaff_R13 = (lVar41 - lVar44 ^ 0xffffffffffffffffU) + 1;
      lVar41 = lVar44 - unaff_R13;
      lVar44 = -(longlong)iVar33;
      uVar45 = *(ulonglong *)(puVar35 + lVar44 + 0x9e8);
      unaff_RDI = *(ulonglong *)(puVar35 + lVar44 + 0x9f0);
      unaff_R14 = *(ulonglong *)(puVar35 + lVar44 + 0x9f8);
      register0x00000020 = (BADSPACEBASE *)(puVar35 + lVar44 + 0xa00);
      puVar35 = puVar35 + lVar44 + 0xa00;
      uVar27 = (*param_2 + 1) * *param_2 & 0x80000001;
      if ((int)uVar27 < 0) {
        uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
      }
      in_stack_00000060 = unaff_RDI;
    } while (uVar27 != 0);
  }
  uVar27 = *(int *)(unaff_R14 + 0x14 + unaff_R13) * unaff_ESI;
  iVar33 = *(int *)((longlong)register0x00000020 + 0x78);
  uVar2 = *(int *)(unaff_R14 + 0x18 + unaff_R13) * unaff_ESI;
  uVar3 = *(int *)(unaff_R14 + 0x1c + unaff_R13) * unaff_ESI;
  *(undefined8 *)((longlong)register0x00000020 + 0x68) = 0x52caf7faaf50128f;
  *(int *)((longlong)register0x00000020 + 0x78) =
       (int)*(undefined8 *)((longlong)register0x00000020 + 0x68);
  uVar28 = *(int *)(unaff_R14 + 0x20 + unaff_R13) * unaff_ESI;
  uVar4 = *(int *)(unaff_R14 + 0x24 + unaff_R13) * unaff_ESI;
  uVar5 = *(int *)(unaff_R14 + 0x28 + unaff_R13) * unaff_ESI;
  uVar6 = *(int *)(unaff_R14 + 0x2c + unaff_R13) * unaff_ESI;
  uVar7 = *(int *)(unaff_R14 + 0x30 + unaff_R13) * unaff_ESI;
  uVar8 = *(int *)(unaff_R14 + 0x34 + unaff_R13) * unaff_ESI;
  lVar41 = unaff_R14 + 0x38;
  uVar9 = *(int *)(lVar41 + unaff_R13) * unaff_ESI;
  uVar11 = (uint)lVar41 & 0x4f;
  uVar10 = *(uint *)(unaff_RBP + -0x58) & 0xbf;
  uVar10 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
  uVar26 = (ulonglong)uVar10;
  uVar45 = lVar41 + (0xc - ((longlong)
                            (int)(((int)((((int)uVar10 >> 1) - ((int)uVar10 >> 3)) +
                                        uVar10 * 0x55555555) >> 0x1e |
                                  (uVar11 + 1) * (uVar11 + 1) * uVar11 * uVar11 & 0x80000003) +
                                 0x5a3b) ^ 0x5a33U));
  *(undefined4 *)(unaff_RDI + 0x440) = *(undefined4 *)(unaff_RDI + 0x24c);
  uVar10 = *(int *)(uVar45 + unaff_R13) * unaff_ESI;
  uVar11 = *(int *)(uVar45 + 4 + unaff_R13) * unaff_ESI;
  do {
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d6d4a;
    FUN_1815d8321(0x5620);
    lVar41 = unaff_R13 + uVar26;
    unaff_R13 = ~(uVar26 - lVar41) + 1;
    uVar26 = lVar41 - unaff_R13;
    uVar29 = (*param_2 + 1) * *param_2 & 0x80000001;
    if ((int)uVar29 < 0) {
      uVar29 = (uVar29 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar29 != 0);
  uVar29 = *(int *)(uVar45 + 8 + unaff_R13) * unaff_ESI;
  uVar12 = *(int *)(uVar45 + 0xc + unaff_R13) * unaff_ESI;
  uVar13 = *(int *)(uVar45 + 0x10 + unaff_R13) * unaff_ESI;
  uVar30 = *(int *)(uVar45 + 0x14 + unaff_R13) * unaff_ESI;
  uVar14 = *(int *)(uVar45 + 0x18 + unaff_R13) * unaff_ESI;
  uVar15 = *(int *)(uVar45 + 0x1c + unaff_R13) * unaff_ESI;
  uVar31 = *(int *)(uVar45 + 0x20 + unaff_R13) * unaff_ESI;
  uVar4 = (uVar31 >> 0x18 ^ uVar31) * unaff_ESI ^
          unaff_ESI *
          ((uVar15 >> 0x18 ^ uVar15) * unaff_ESI ^
          unaff_ESI *
          ((uVar14 >> 0x18 ^ uVar14) * unaff_ESI ^
          unaff_ESI *
          ((uVar30 >> 0x18 ^ uVar30) * unaff_ESI ^
          unaff_ESI *
          ((uVar13 >> 0x18 ^ uVar13) * unaff_ESI ^
          unaff_ESI *
          ((uVar12 >> 0x18 ^ uVar12) * unaff_ESI ^
          unaff_ESI *
          ((uVar29 >> 0x18 ^ uVar29) * unaff_ESI ^
          unaff_ESI *
          ((uVar11 >> 0x18 ^ uVar11) * unaff_ESI ^
          unaff_ESI *
          ((uVar10 >> 0x18 ^ uVar10) * unaff_ESI ^
          unaff_ESI *
          ((uVar9 >> 0x18 ^ uVar9) * unaff_ESI ^
          unaff_ESI *
          ((uVar8 >> 0x18 ^ uVar8) * unaff_ESI ^
          unaff_ESI *
          ((uVar7 >> 0x18 ^ uVar7) * unaff_ESI ^
          unaff_ESI *
          ((uVar6 >> 0x18 ^ uVar6) * unaff_ESI ^
          unaff_ESI *
          ((uVar5 >> 0x18 ^ uVar5) * unaff_ESI ^
          unaff_ESI *
          ((uVar4 >> 0x18 ^ uVar4) * unaff_ESI ^
          unaff_ESI *
          ((uVar28 >> 0x18 ^ uVar28) * unaff_ESI ^
          unaff_ESI *
          ((uVar3 >> 0x18 ^ uVar3) * unaff_ESI ^
          unaff_ESI *
          ((uVar2 >> 0x18 ^ uVar2) * unaff_ESI ^
          unaff_ESI * ((uVar27 >> 0x18 ^ uVar27) * unaff_ESI ^ unaff_ESI * iVar33))))))))))))))))));
  uVar26 = (ulonglong)uVar4;
  *(undefined4 *)(unaff_RDI + 0x448) = *(undefined4 *)(unaff_RDI + 0x25c);
  uVar27 = *(int *)(uVar45 + 0x24 + unaff_R13) * unaff_ESI;
  uVar2 = *(int *)(uVar45 + 0x28 + unaff_R13) * unaff_ESI;
  uVar3 = *(int *)(uVar45 + 0x2c + unaff_R13) * unaff_ESI;
  uVar28 = *(int *)(uVar45 + 0x30 + unaff_R13) * unaff_ESI;
  do {
    uVar40 = ~(~uVar45 + 1);
    uVar45 = uVar40 + 1;
    uVar26 = (~uVar26 + 1 ^ 0xffffffffffffffff) + 1;
    uVar5 = (*param_2 + 1) * *param_2 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = *(int *)(uVar40 + 0x35 + unaff_R13) * unaff_ESI;
  uVar6 = *(int *)(uVar40 + 0x39 + unaff_R13) * unaff_ESI;
  uVar7 = *(int *)(uVar40 + 0x3d + unaff_R13) * unaff_ESI;
  uVar8 = *(int *)(uVar40 + 0x41 + unaff_R13) * unaff_ESI;
  uVar9 = *(int *)(uVar40 + 0x45 + unaff_R13) * unaff_ESI;
  uVar10 = *(int *)(uVar40 + 0x49 + unaff_R13) * unaff_ESI;
  *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d6faf;
  cVar1 = FUN_18048a590(unaff_RDI + 0x1c8,0,uVar26);
  if (cVar1 != '\0') {
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d6fbb;
    FUN_1812e8c60(unaff_RDI);
  }
  uVar11 = *(int *)(uVar40 + 0x4d + unaff_R13) * unaff_ESI;
  uVar29 = *(int *)(uVar40 + 0x51 + unaff_R13) * unaff_ESI;
  uVar12 = *(int *)(uVar40 + 0x55 + unaff_R13) * unaff_ESI;
  uVar13 = *(int *)(uVar40 + 0x59 + unaff_R13) * unaff_ESI;
  uVar30 = *(int *)(uVar40 + 0x5d + unaff_R13) * unaff_ESI;
  uVar14 = *(int *)(uVar40 + 0x61 + unaff_R13) * unaff_ESI;
  uVar15 = *(int *)(uVar40 + 0x65 + unaff_R13) * unaff_ESI;
  uVar31 = *(int *)(uVar40 + 0x69 + unaff_R13) * unaff_ESI;
  lVar41 = uVar40 + 0x6d;
  uVar16 = *(int *)(lVar41 + unaff_R13) * unaff_ESI;
  uVar17 = (uint)lVar41 & 0x5f;
  lVar41 = lVar41 + (0x24 - ((longlong)
                             (int)((uVar17 + 1) * (uVar17 + 1) * uVar17 * uVar17 & 0x80000003) ^
                            0x20U));
  uVar17 = *(int *)(lVar41 + unaff_R13) * unaff_ESI;
  uVar32 = (uint)lVar41 & 0x7eff;
  iVar33 = uVar32 * uVar32 + 1;
  uVar32 = iVar33 * 0x24924924 + (iVar33 >> 4) + (iVar33 >> 1) >> 0x1d;
  uVar18 = (uint)*(undefined8 *)(unaff_RBP + -0x58) & 0x1ff;
  uVar32 = ((uVar18 + 2) * (uVar18 + 1) * uVar18) % 3 ^ (int)(uVar32 - 7) >> 0x1f & uVar32;
  lVar41 = ((longlong)(((int)(-uVar32 | uVar32) >> 0x1f) * -0xe994) ^ 0xe9b4U) + lVar41;
  uVar32 = *(int *)(lVar41 + -0x1c + unaff_R13) * unaff_ESI;
  uVar18 = *(int *)(lVar41 + -0x18 + unaff_R13) * unaff_ESI;
  uVar27 = unaff_ESI *
           ((uVar32 >> 0x18 ^ uVar32) * unaff_ESI ^
           unaff_ESI *
           ((uVar17 >> 0x18 ^ uVar17) * unaff_ESI ^
           unaff_ESI *
           ((uVar16 >> 0x18 ^ uVar16) * unaff_ESI ^
           unaff_ESI *
           ((uVar31 >> 0x18 ^ uVar31) * unaff_ESI ^
           unaff_ESI *
           ((uVar15 >> 0x18 ^ uVar15) * unaff_ESI ^
           unaff_ESI *
           ((uVar14 >> 0x18 ^ uVar14) * unaff_ESI ^
           unaff_ESI *
           ((uVar30 >> 0x18 ^ uVar30) * unaff_ESI ^
           unaff_ESI *
           ((uVar13 >> 0x18 ^ uVar13) * unaff_ESI ^
           unaff_ESI *
           ((uVar12 >> 0x18 ^ uVar12) * unaff_ESI ^
           unaff_ESI *
           ((uVar29 >> 0x18 ^ uVar29) * unaff_ESI ^
           unaff_ESI *
           ((uVar11 >> 0x18 ^ uVar11) * unaff_ESI ^
           unaff_ESI *
           ((uVar10 >> 0x18 ^ uVar10) * unaff_ESI ^
           unaff_ESI *
           ((uVar9 >> 0x18 ^ uVar9) * unaff_ESI ^
           unaff_ESI *
           ((uVar8 >> 0x18 ^ uVar8) * unaff_ESI ^
           unaff_ESI *
           ((uVar7 >> 0x18 ^ uVar7) * unaff_ESI ^
           unaff_ESI *
           ((uVar6 >> 0x18 ^ uVar6) * unaff_ESI ^
           unaff_ESI *
           ((uVar5 >> 0x18 ^ uVar5) * unaff_ESI ^
           unaff_ESI *
           ((uVar28 >> 0x18 ^ uVar28) * unaff_ESI ^
           unaff_ESI *
           ((uVar3 >> 0x18 ^ uVar3) * unaff_ESI ^
           unaff_ESI *
           ((uVar2 >> 0x18 ^ uVar2) * unaff_ESI ^
           unaff_ESI * ((uVar27 >> 0x18 ^ uVar27) * unaff_ESI ^ unaff_ESI * uVar4)))))))))))))))))))
           )) ^ (uVar18 >> 0x18 ^ uVar18) * unaff_ESI;
  uVar27 = ((uVar27 << 0x10 | uVar27 >> 0x10) & 0xcff83007 |
           (uVar27 >> 0x10 | uVar27 << 0x10) & 0x3007cff8) + 0x974af179;
  uVar26 = (ulonglong)
           ((uVar27 >> 2 & 0xcccccccc | uVar27 * 0x40000000 |
            uVar27 * 4 & 0x33333333 | uVar27 >> 0x1e) + 0xbeed1d6c);
  piVar43 = (int *)(unaff_RBP + 0x248);
  do {
    *(undefined4 *)(unaff_RBP + -100) = 0xd7989643;
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d726d;
    FUN_1815d621b();
    uVar27 = (*piVar43 + 1) * *piVar43 & 0x80000001;
    if ((int)uVar27 < 0) {
      uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar27 != 0);
  uVar27 = *(int *)(unaff_RBP + -100) + 0x42263d59;
  uVar27 = (uVar27 * 0x200 | uVar27 >> 0x17) ^ 0x3e0f46eb;
  uVar2 = ~((uVar27 >> 0x14 | uVar27 << 0xc) + 0x4de31597) + 0x1b935995;
  uVar27 = (int)((ulonglong)*(undefined8 *)(unaff_RBP + -0x80) >> 0x20) + 0xfa8073e1;
  uVar2 = uVar27 ^ ((uVar2 * 0x8000 | uVar2 >> 0x11) ^ 0xb636548e) + 0x62bfbbd;
  uVar6 = ~(uVar2 & 0x74363136 ^ uVar27);
  uVar28 = ~(*(uint *)((longlong)register0x00000020 + 0x48) ^ 0x860084d7);
  uVar5 = ~((int)*(undefined8 *)(unaff_RBP + -0x80) + 0x7e45d4e7U);
  uVar40 = (ulonglong)uVar5;
  uVar8 = ~(uVar2 & 0x8bc9cec9 ^ uVar27);
  uVar3 = (uVar6 >> 0x10 ^ uVar6) >> 1 & 0x7fff;
  uVar7 = (uVar28 >> 0x13 ^ uVar28) >> 4 & 3;
  uVar45 = (ulonglong)uVar7;
  uVar27 = (uVar5 >> 8 ^ uVar5) >> 6 & 7;
  uVar2 = (uVar8 >> 0xe ^ uVar8) >> 2 & 0x1fff;
  uVar4 = ((uVar3 << 0x10 | uVar3) * 2 ^ uVar6) + 0xd72ec56e;
  uVar27 = (uVar27 << 8 | uVar27) << 6 ^ uVar5 ^ 0xa4daaba5;
  uVar3 = uVar27 >> 0x13 | uVar27 << 0xd;
  uVar27 = ((uVar2 << 0xe | uVar2) << 2 ^ uVar8) + 0xb13e8770;
  uVar2 = (uVar4 >> 0x14 | uVar4 * 0x1000) ^ uVar3;
  uVar27 = (uVar27 >> 0x10 | uVar27 * 0x10000) ^ 0xf6ce2a6f;
  uVar37 = (ulonglong)uVar27;
  uVar28 = (uVar7 << 0x13 | uVar7) << 4 ^ uVar28 ^ 0xd8b18c67;
  uVar28 = (uVar28 >> 10 | uVar28 << 0x16) + 0xd9158d31;
  uVar4 = uVar2 & 0xfbebf0ee ^ uVar3 ^ 0x38262af0;
  uVar39 = (ulonglong)uVar4;
  do {
    *(ulonglong *)((longlong)register0x00000020 + -8) = uVar45;
    uVar24 = rdtsc();
    uVar5 = (uint)uVar24 ^ (uint)((ulonglong)uVar24 >> 0x20);
    *(uint *)(unaff_RBP + -0x60) = uVar5;
    uVar45 = (ulonglong)uVar5 * -0xff - 0x768463d0;
    uVar45 = uVar45 * 0x4000 | uVar45 >> 0x32;
    uVar45 = uVar45 ^ (uVar45 * 3 >> 6) + 0x5ce8d945;
    *(uint *)(unaff_RBP + -0x74) = (uint)((uVar45 ^ uVar45 * 0x8000 - 0x20bf198d) >> 0xb) >> 1;
    uVar45 = *(ulonglong *)((longlong)register0x00000020 + -8);
    uVar5 = (*piVar43 + 1) * *piVar43 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = *(uint *)((longlong)register0x00000020 + 0x5c);
  uVar7 = *(uint *)(unaff_RBP + -0x74);
  *(uint *)(unaff_RBP + -0x74) = uVar7 ^ uVar5;
  if ((uVar7 ^ uVar5) < 0xdd91) {
    *(uint *)(unaff_RBP + 0x198) = uVar27;
    *(uint *)(unaff_RBP + 0x19c) = uVar28;
    *(uint *)(unaff_RBP + 0x1a0) = uVar4;
    *(uint *)(unaff_RBP + 0x1a4) = (uVar2 & 0x4140f11 ^ uVar3) + 0xa2ddb101;
    do {
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7522;
      uVar24 = *(undefined8 *)((longlong)register0x00000020 + -8);
      *(undefined4 *)(unaff_RBP + -0x70) = 0xd93f0690;
      uVar42 = 0;
      *(undefined8 *)(unaff_RBP + 0x18) = uVar24;
      uVar27 = (*piVar43 + 1) * *piVar43 & 0x80000001;
      if ((int)uVar27 < 0) {
        uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar27 != 0);
    uVar27 = ~((*(uint *)(unaff_RBP + -0x70) >> 0x1f | *(uint *)(unaff_RBP + -0x70) << 1) +
              0x53b3d8a1) ^ 0xb502ba63;
    iVar33 = (uVar27 >> 0x18 | uVar27 << 8) + 0x32c6a252;
    *(int *)(unaff_RBP + -0x70) = iVar33;
    pcVar38 = (code *)((longlong)iVar33 + *(longlong *)(unaff_RBP + 0x18));
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7593;
    (*pcVar38)(unaff_RBP + 0x198,unaff_RBP + 0x1b0,pcVar38,uVar6);
    uVar27 = *(uint *)(unaff_RBP + 0x1c0);
    uVar2 = *(uint *)(unaff_RBP + 0x1c4);
    uVar45 = 7;
    do {
      uVar4 = (uVar2 ^ uVar27) & 0xfb5db4b7 ^ uVar2;
      uVar2 = (uVar2 ^ uVar27) & 0x4a24b48 ^ uVar2;
      uVar27 = (uVar2 >> 4 ^ uVar2) >> 0x12 & 7;
      uVar3 = (uVar4 >> 0xb ^ uVar4) >> 5 & 0x7ff;
      uVar4 = (uVar3 << 0xb | uVar3) << 5 ^ uVar4;
      uVar27 = uVar4 ^ (uVar27 << 4 | uVar27) << 0x12 ^ uVar2;
      uVar2 = (uVar4 ^ uVar27 & 0x10492ef4) + 0x47bf4e2c;
      uVar3 = uVar2 * 0x4000 | uVar2 >> 0x12;
      uVar4 = (uVar27 & 0xefb6d10b ^ uVar4) + 0xb1b2ab94;
      uVar5 = uVar4 >> 0xe | uVar4 * 0x40000;
      uVar27 = (uVar3 >> 7 ^ uVar3) >> 10 & 0x7f;
      uVar3 = uVar3 ^ (uVar27 << 7 | uVar27) << 10;
      uVar27 = (uVar5 >> 0x10 ^ uVar5) >> 3 & 0x1ff;
      uVar5 = uVar5 ^ (uVar27 << 0x10 | uVar27) << 3;
      uVar2 = (uVar3 << 4 | (uVar2 & 0x3ffff) >> 0xe) & 0xe1e1e1e1 |
              (uVar3 >> 4 | (uVar2 >> 0x12) << 0x1c) & 0x1e1e1e1e;
      uVar3 = (uVar5 >> 4 | uVar5 << 0x1c) & 0x4b4b4b4b;
      uVar40 = (ulonglong)uVar3;
      uVar3 = (uVar5 << 4 | (uVar4 & 0x3fff) >> 10) & 0xb4b4b4b4 | uVar3;
      uVar27 = (uVar2 >> 10 ^ uVar2) >> 0xb & 0x1ff;
      uVar2 = uVar2 ^ (uVar27 << 10 | uVar27) << 0xb;
      uVar27 = (uVar3 >> 0xf ^ uVar3) & 0x7fff;
      uVar3 = uVar3 ^ (uVar27 << 0xf | uVar27) ^ uVar2;
      uVar27 = uVar3 & 0xc9f05eab ^ uVar2;
      uVar2 = uVar3 & 0x360fa154 ^ uVar2;
      uVar3 = (int)uVar45 - 1;
      uVar45 = (ulonglong)uVar3;
    } while (-1 < (int)uVar3);
    uVar27 = ~(~(uVar27 << 0x19 | uVar27 >> 7) + 0x6efcae41) + 0xb4add5ea;
    uVar27 = (uVar27 * 0x200 | uVar27 >> 0x17) + 0x405aa29e;
    uVar27 = (uVar27 >> 0x19 | uVar27 * 0x80) + 0x31d0bbef;
    uVar37 = (ulonglong)uVar27;
    do {
      *(undefined4 *)((longlong)register0x00000020 + 0x70) = 0x7f0f2a30;
      uVar3 = (*piVar43 + 1) * *piVar43 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar3 = ~((*(uint *)((longlong)register0x00000020 + 0x70) << 0x11 |
              *(uint *)((longlong)register0x00000020 + 0x70) >> 0xf) + 0xa93e07f2) + 0xc0203c9c;
    *(uint *)((longlong)register0x00000020 + 0x70) =
         ~(~((uVar3 >> 0x1c | uVar3 * 0x10) + 0x2cd4bdcd) ^ 0xac76b6d);
    if ((*(uint *)((longlong)register0x00000020 + 0x70) ^ uVar27) + uVar2 !=
        *(int *)((longlong)register0x00000020 + 0x48)) {
      do {
        puVar34 = (undefined8 *)(unaff_RBP + 0x20);
        *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d77b9;
        FUN_1815d676a();
        *(ulonglong *)((longlong)register0x00000020 + -8) = uVar26;
        *(undefined8 *)((longlong)register0x00000020 + -0x10) = uVar42;
        *puVar34 = FUN_180bc2900;
        uVar42 = *(undefined8 *)((longlong)register0x00000020 + -0x10);
        uVar26 = *(ulonglong *)((longlong)register0x00000020 + -8);
        uVar27 = (*piVar43 + 1) * *piVar43 & 0x80000001;
        if ((int)uVar27 < 0) {
          uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar27 != 0);
      pcVar38 = *(code **)(unaff_RBP + 0x20);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d780c;
      (*pcVar38)();
      do {
        *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7839;
        FUN_1815d676a();
        uVar27 = (*piVar43 + 1) * *piVar43 & 0x80000001;
        if ((int)uVar27 < 0) {
          uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar27 != 0);
    }
  }
  if ((char)(((int)uVar26 == *(int *)((longlong)register0x00000020 + 0x78)) * '*') == '\0') {
    if (*(int *)(unaff_RDI + 0x2c8) == 1) {
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7891;
      uVar46 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c41e0);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d78a9;
      uVar47 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c4300);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d78bc;
      uVar48 = FUN_18055e970(unaff_RDI + 0x208,0);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d78d3;
      uVar49 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c43f8);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d78e5;
      uVar24 = FUN_18134c250(unaff_RDI,unaff_RBP + 0x98);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d78f4;
      uVar24 = FUN_1804ab5a0(uVar24,unaff_RBP + 0xa8);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7906;
      uVar24 = FUN_1804ab3a0(uVar24,unaff_RBP + 0xb8,uVar49);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d791c;
      uVar24 = FUN_1804ab4f0(uVar24,unaff_RBP + 200,uVar48,uVar47);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d792c;
      FUN_18056a0d0(uVar24,unaff_RBP + 0x58,uVar46);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d793a;
      puVar25 = (uint *)FUN_18049ea60(unaff_RBP + -0x48,0x24);
      lVar44 = unaff_RDI + 0x2a0;
      lVar41 = unaff_RBP + 0x58;
    }
    else {
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d794f;
      uVar46 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c41e0);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7967;
      uVar47 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c3ea4);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d797e;
      uVar48 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c4408);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7990;
      uVar24 = FUN_18134c250(unaff_RDI,unaff_RBP + 0xd8);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d799f;
      uVar24 = FUN_1804ab5a0(uVar24,unaff_RBP + 0xe8);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d79b1;
      uVar24 = FUN_1804ab3a0(uVar24,unaff_RBP + 0xf8,uVar48);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d79c3;
      uVar24 = FUN_1805796a0(uVar24,unaff_RBP + 0x108,uVar47);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d79d3;
      FUN_18056a0d0(uVar24,unaff_RBP + 0x68,uVar46);
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d79e1;
      puVar25 = (uint *)FUN_18049ea60(unaff_RBP + -0x44,0x24);
      lVar44 = unaff_RDI + 0x278;
      lVar41 = unaff_RBP + 0x68;
    }
    uVar26 = (ulonglong)*puVar25;
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d79f4;
    thunk_FUN_180576b40(lVar44,lVar41);
    *(ulonglong *)((longlong)register0x00000020 + -8) = (ulonglong)uVar28;
    *(ulonglong *)((longlong)register0x00000020 + -0x10) = uVar26;
    *(ulonglong *)((longlong)register0x00000020 + -0x18) = uVar37;
    uVar24 = thunk_FUN_1805a9280();
    return uVar24;
  }
  if (*(int *)(unaff_RDI + 0x2c8) == 1) {
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7ada;
    uVar46 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c42d0);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7af2;
    uVar47 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c3ea4);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b09;
    uVar48 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c43e8);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b1b;
    uVar24 = FUN_18134c250(unaff_RDI,unaff_RBP + 0x118);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b2a;
    uVar24 = FUN_1804ab5a0(uVar24,unaff_RBP + 0x128);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b3c;
    uVar24 = FUN_1804ab3a0(uVar24,unaff_RBP + 0x138,uVar48);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b4e;
    uVar24 = FUN_1805796a0(uVar24,unaff_RBP + 0x148,uVar47);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b5e;
    FUN_18056a0d0(uVar24,unaff_RBP + 0x78,uVar46);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b6c;
    puVar25 = (uint *)FUN_18049ea60(unaff_RBP + -0x40,0x24);
    lVar44 = unaff_RDI + 0x278;
    lVar41 = unaff_RBP + 0x78;
  }
  else {
    if (*(int *)(unaff_RDI + 0x2c8) != 2) goto LAB_1815d7c5b;
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7b99;
    uVar46 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c42d0);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7bb1;
    uVar47 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c4300);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7bc4;
    uVar48 = FUN_18055e970(unaff_RDI + 0x208,0);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7bdb;
    uVar49 = FUN_18055e970(unaff_RDI + 0x208,DAT_1824c43e8);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7bed;
    uVar24 = FUN_18134c250(unaff_RDI,unaff_RBP + 0x158);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7bfc;
    uVar24 = FUN_1804ab5a0(uVar24,unaff_RBP + 0x168);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7c0e;
    uVar24 = FUN_1804ab3a0(uVar24,unaff_RBP + 0x178,uVar49);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7c24;
    uVar24 = FUN_1804ab4f0(uVar24,unaff_RBP + 0x188,uVar48,uVar47);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7c37;
    FUN_18056a0d0(uVar24,unaff_RBP + 0x88,uVar46);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7c45;
    puVar25 = (uint *)FUN_18049ea60(unaff_RBP + -0x3c,0x24);
    lVar44 = unaff_RDI + 0x2a0;
    lVar41 = unaff_RBP + 0x88;
  }
  uVar40 = (ulonglong)*puVar25;
  *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1815d7c5b;
  thunk_FUN_180576b40(lVar44,lVar41);
LAB_1815d7c5b:
  iVar33 = *(int *)(unaff_RBP + -0x68);
  puVar35 = (undefined1 *)register0x00000020;
  do {
    puVar36 = puVar35;
    *(ulonglong *)(puVar36 + -8) = uVar39;
    *(ulonglong *)(puVar36 + -0x10) = uVar40;
    *(ulonglong *)(puVar36 + -0x18) = uVar45;
    piVar43 = (int *)-(~(ulonglong)piVar43 + 1);
    lVar41 = -(longlong)iVar33;
    uVar45 = *(ulonglong *)(puVar36 + lVar41 + 0x9e8);
    uVar40 = *(ulonglong *)(puVar36 + lVar41 + 0x9f0);
    uVar39 = *(ulonglong *)(puVar36 + lVar41 + 0x9f8);
    uVar27 = (*piVar43 + 1) * *piVar43 & 0x80000001;
    if ((int)uVar27 < 0) {
      uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
    }
    puVar35 = puVar36 + lVar41 + 0xa00;
  } while (uVar27 != 0);
  *(undefined **)(puVar36 + lVar41 + 0x9f8) = &UNK_1815d7d59;
}



############ FUN_ 181446a30 size=880 ############

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

ulonglong FUN_181446a30(longlong param_1)

{
  int iVar1;
  uint uVar2;
  longlong lVar3;
  ulonglong uVar4;
  undefined1 auStack_6e8 [96];
  int local_688;
  int local_65c;
  uint local_654;
  uint local_650;
  undefined8 local_608;
  undefined4 uStack_600;
  undefined4 uStack_5fc;
  longlong local_5e8;
  undefined8 local_568;
  undefined4 local_558;
  undefined4 uStack_554;
  undefined4 uStack_550;
  undefined4 uStack_54c;
  ulonglong local_60;
  
  local_568 = 0xfffffffffffffffe;
  local_60 = DAT_182615970 ^ (ulonglong)auStack_6e8;
  uVar2 = (uint)&stack0x00000000 & 0x20ff;
  uVar2 = ((uVar2 + 1) * uVar2 + 7) % 0x51;
  uVar2 = (int)(-uVar2 | uVar2) >> 0x1f;
  local_650 = (int)(-uVar2 | uVar2) >> 0x1f & 0x8211U ^ 0x8861;
  uVar2 = (uint)&stack0x00000000 & 0x33ff;
  uVar2 = ((uVar2 + 1) * uVar2 + 7) % 0x51;
  local_654 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0x13fc ^ 0x184c;
  local_5e8 = param_1;
  lVar3 = (**(code **)(*(longlong *)(param_1 + 0x280) + 8))();
  local_688 = (int)(*(float *)(lVar3 + 0x88) * DAT_1824c43d8);
  iVar1 = *(int *)(param_1 + 0x744);
  uStack_5fc = *(undefined4 *)(param_1 + 0x2c);
  uStack_600 = *(undefined4 *)(param_1 + 0x28);
  local_608 = 0;
  local_558 = 0;
  uStack_554 = 0;
  local_65c = iVar1;
  uStack_550 = uStack_600;
  uStack_54c = uStack_5fc;
  uVar4 = FUN_18134c170(param_1 + 0x2c8,&local_558);
  if (-1 < iVar1) {
    uVar4 = -((uVar4 ^ 0xffffffffffffffff) + 1);
  }
  return uVar4;
}



############ FUN_ 1815624c0 size=1388 ############

/* WARNING: Instruction at (ram,0x000181562a21) overlaps instruction at (ram,0x000181562a1c)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181562a1c) */
/* WARNING: Removing unreachable block (ram,0x000181562504) */
/* WARNING: Removing unreachable block (ram,0x000181562512) */
/* WARNING: Removing unreachable block (ram,0x0001815625a4) */
/* WARNING: Removing unreachable block (ram,0x000181562a3b) */

void FUN_1815624c0(longlong param_1)

{
  undefined8 uVar1;
  undefined4 *puVar2;
  uint uVar3;
  uint *puVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong *plVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  int *piVar10;
  uint uVar11;
  ulonglong uVar12;
  int unaff_retaddr;
  undefined1 auStack_188 [32];
  undefined1 uStack_168;
  undefined4 *local_158;
  undefined *local_150;
  uint local_148 [3];
  uint local_13c;
  undefined4 local_138;
  uint local_128;
  undefined8 local_120;
  uint local_118;
  undefined1 auStack_100 [4];
  undefined1 auStack_fc [24];
  undefined4 local_e4;
  undefined4 local_e0;
  longlong local_d8 [8];
  undefined4 local_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_188;
  uVar11 = (uint)&stack0x00000000;
  uVar3 = uVar11 & 0x1bf;
  uVar3 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3 |
          ((uVar11 & 0x10ff) + 1) * (uVar11 & 0x10ff) + 0x36fd & 0x80000001;
  local_118 = (int)(-uVar3 | uVar3) >> 0x1f & 0x53cfU ^ 0x5f3f;
  uVar11 = uVar11 & 0x13f;
  local_128 = 0x3564 << ((char)(((uVar11 + 2) * (uVar11 + 1) * uVar11) / 3) * -3 & 0x1fU) ^ 0x3424;
  local_120 = 0x100;
  local_158 = &DAT_1809a6730;
  local_150 = &DAT_1809a6830;
  FUN_18155d3f0(param_1);
  local_98 = *(undefined4 *)(param_1 + 0x370);
  uStack_94 = *(undefined4 *)(param_1 + 0x374);
  uStack_90 = *(undefined4 *)(param_1 + 0x378);
  uStack_8c = *(undefined4 *)(param_1 + 0x37c);
  FUN_18134c170(param_1 + 0x390,&local_98);
  do {
    plVar7 = local_d8;
    puVar2 = &local_e4;
    puVar4 = local_148;
    FUN_1815643a5();
    *puVar4 = 0xe57cc58a;
    *puVar2 = 0x1f;
    *plVar7 = 0x18156276a;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar11 = ~(((local_148[0] >> 8 | local_148[0] << 0x18) & 0xef10ef10 |
             (local_148[0] << 8 | local_148[0] >> 0x18) & 0x10ef10ef) ^ 0xd862b80a);
  uVar3 = (uVar11 >> 7 ^ uVar11) & 0xf;
  uVar3 = uVar11 ^ (uVar3 << 7 | uVar3);
  uVar3 = (uVar3 << 2 | uVar11 >> 0x1e) & 0x99999999 | (uVar3 >> 2 | uVar3 << 0x1e) & 0x66666666;
  uVar3 = (uVar3 << 0x16 | uVar3 >> 10) + 0x5741ff1f;
  do {
    local_e0 = 5;
    local_d8[1] = 0x181562817;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  lVar6 = (longlong)(int)~(uVar3 >> 5 | uVar3 * 0x8000000);
  local_148[0] = 0;
  local_138 = 0;
  uVar12 = 0x10bfa05;
  plVar7 = (longlong *)(lVar6 + 4 + local_d8[0]);
  *plVar7 = *plVar7 + (ulonglong)((uint)((ulonglong)dvs_0xbb9eab45_mfort6317_ >> 0x1e) & 0x20a00a7);
  uVar5 = *(ulonglong *)(lVar6 + 4 + local_d8[0]);
  uVar8 = uVar5 >> 0x1f | uVar5 << 0x21;
  uVar5 = (ulonglong)((uint)((uVar5 & 0x7fffffff ^ uVar8) >> 1) & 0x3fffffff);
  uVar8 = uVar8 ^ (uVar5 << 0x21 | uVar5) * 2 ^ 0xfa6b9617cceda772;
  uVar9 = uVar8 >> 0x38 | uVar8 << 8;
  uVar5 = (ulonglong)((uint)(((uVar8 & 0xffffffffffffff) >> 0x12 ^ uVar9) >> 1) & 7);
  uVar9 = uVar9 ^ (uVar5 << 0x1a | uVar5) * 2;
  uVar8 = (uVar9 >> 4 | uVar9 << 0x3c) & 0x8787878787878787 |
          (uVar9 << 4 | (uVar8 & 0xffffffffffffff) >> 0x34) & 0x7878787878787878;
  uVar9 = uVar8 >> 0x19 | uVar8 << 0x27;
  uVar5 = (ulonglong)((uint)((uVar9 >> 0x26 ^ uVar9) >> 9) & 0x3f);
  uVar5 = (uVar9 ^ (uVar5 << 0x26 | uVar5) << 9) << 9 | (uVar8 & 0x1ffffff) >> 0x10;
  *(ulonglong *)(lVar6 + 4 + local_d8[0]) = uVar5;
  uVar5 = (ulonglong)((uint)(uVar5 >> 5) & 0x42000896);
  dvs_0xbb9eab45_mfort6317_ = (uint *)((longlong)dvs_0xbb9eab45_mfort6317_ + uVar5);
  local_120 = CONCAT44(local_120._4_4_,
                       (int)((ulonglong)*(undefined8 *)(lVar6 + 4 + local_d8[0]) >> 0x20)) &
              0xffffffff7fffffff;
  local_13c = (uint)(*(ulonglong *)(lVar6 + 4 + local_d8[0]) >> 0xe) ^ 0x983383a0;
  local_150 = (undefined *)(*(ulonglong *)(lVar6 + 4 + local_d8[0]) ^ 0x84a7612c374cfb14);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  plVar7 = (longlong *)(param_1 + 0xb0);
  uVar1 = (**(code **)(*plVar7 + 8))(plVar7,uVar5);
  uVar5 = (ulonglong)DAT_182674280;
  uStack_168 = 1;
  puVar2 = (undefined4 *)FUN_1813f2270(uVar1,auStack_100,uVar5,param_1);
  *(undefined4 *)(param_1 + 0xa08) = *puVar2;
  piVar10 = (int *)register0x00000020;
  do {
    if ((POPCOUNT((uVar12 ^ 0x2bce2784) & 0xff) & 1U) == 0) {
      lVar6 = (longlong)piVar10 + uVar5;
      piVar10 = (int *)((uVar5 - lVar6 ^ 0xffffffffffffffff) + 1);
      uVar5 = lVar6 - (longlong)piVar10;
    }
    uVar3 = (*piVar10 + 1) * *piVar10 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar1 = (**(code **)(*plVar7 + 8))(plVar7);
  uStack_168 = 1;
  puVar2 = (undefined4 *)FUN_1813f2270(uVar1,auStack_fc,DAT_1826741dc,param_1);
  *(undefined4 *)(param_1 + 0xa0c) = *puVar2;
  return;
}



############ FUN_ 180643940 size=2679 ############

/* WARNING: Instruction at (ram,0x000180644226) overlaps instruction at (ram,0x000180644225)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180644093) */
/* WARNING: Removing unreachable block (ram,0x0001806439d2) */
/* WARNING: Removing unreachable block (ram,0x0001806439b2) */
/* WARNING: Removing unreachable block (ram,0x000180643f15) */
/* WARNING: Removing unreachable block (ram,0x000180644325) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180643940(undefined8 *param_1)

{
  longlong *plVar1;
  int *piVar2;
  longlong *plVar3;
  code *pcVar4;
  undefined8 uVar5;
  undefined1 *puVar6;
  uint uVar7;
  ulonglong uVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  longlong lVar12;
  ulonglong uVar13;
  undefined1 *puVar14;
  undefined1 *puVar15;
  longlong lVar16;
  longlong lVar17;
  ulonglong uVar18;
  longlong lVar19;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined8 uStack_130;
  undefined1 auStack_128 [32];
  undefined *local_108;
  undefined *local_100;
  uint local_f8 [2];
  undefined *local_f0;
  undefined4 local_e8;
  uint local_e4;
  code *local_e0;
  undefined8 *local_d8;
  undefined8 local_c8;
  undefined1 local_b8 [128];
  ulonglong local_38;
  
  puVar14 = auStack_128;
  local_c8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_128;
  *param_1 = pace::Ilok2ProtocolsOpener::vftable;
  local_e8 = 0x210;
  if (((ulonglong)&stack0x00000000 & 0x9c0) == 0) {
    uVar7 = 1;
  }
  else {
    uVar7 = (uint)&stack0x00000000 & 0x2aff;
    uVar7 = ((uVar7 + 1) * uVar7 + 7) % 0x51;
  }
  uVar9 = (uint)&stack0x00000000 & 0x7ff;
  iVar10 = uVar9 * uVar9 + 1;
  uVar9 = (iVar10 >> 4) + (iVar10 >> 1) + iVar10 * 0x24924924 >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  local_e4 = -((int)(-uVar9 | uVar9) >> 0x1f) - 1U ^
             (((int)(-uVar7 | uVar7) >> 0x1f) * -0x1804 | 0x9ca4U) ^ 0x94b4;
  lVar17 = 0x180000000;
  lVar16 = 0x1da9a04;
  local_108 = &UNK_18160fdf4;
  local_100 = &UNK_18160fef4;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  iVar10 = ((_UNK_18160fdf4 * 0x25 + _UNK_18160fdf8) * 0x25 + _UNK_18160fdfc) * 0x25 +
           _UNK_18160fe00;
  local_f0 = local_108;
  local_d8 = param_1;
  FUN_1805f1c10(local_b8);
  local_100 = (undefined *)0x14;
  local_108._0_4_ = iVar10 * 0x25 + _UNK_18160fe04;
  FUN_180645c50(param_1);
  iVar10 = (int)local_108 * 0x25;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_f0 = (undefined *)0x2fd84b582e9347c6;
  local_108 = (undefined *)CONCAT44(local_108._4_4_,0x2e9347c6);
  iVar10 = ((((((((((((((_UNK_18160fe08 + iVar10) * 0x25 + _UNK_18160fe0c) * 0x25 + _UNK_18160fe10)
                      * 0x25 + _UNK_18160fe14) * 0x25 + _UNK_18160fe18) * 0x25 + _UNK_18160fe1c) *
                   0x25 + _UNK_18160fe20) * 0x25 + _UNK_18160fe24) * 0x25 + _UNK_18160fe28) * 0x25 +
               _UNK_18160fe2c) * 0x25 + _UNK_18160fe30) * 0x25 + _UNK_18160fe34) * 0x25 +
            _UNK_18160fe38) * 0x25 + _UNK_18160fe3c) * 0x25 + _UNK_18160fe40;
  do {
    FUN_180642b67(0x5538);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  iVar10 = ((((((iVar10 * 0x25 + _UNK_18160fe44) * 0x25 + _UNK_18160fe48) * 0x25 + _UNK_18160fe4c) *
              0x25 + _UNK_18160fe50) * 0x25 + _UNK_18160fe54) * 0x25 + _UNK_18160fe58) * 0x25 +
           _UNK_18160fe5c;
  do {
    uVar5 = rdtsc();
    local_f8[0] = (uint)((ulonglong)uVar5 >> 0x20);
    lVar12 = CONCAT44((int)((ulonglong)local_f8 >> 0x20),local_f8[0]);
    local_f8[0] = (uint)uVar5 ^ local_f8[0];
    func_0x000180645e1b();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_f8[0] = (local_f8[0] * -0x50283d4e >> 0x18 ^ local_f8[0] * -0x50283d4e) * -0x13ac51cb;
  uVar18 = 0;
  if (local_f8[0] < 0x4b27ecf) {
    do {
      lVar12 = 0x597a;
      local_e0 = FUN_1813bba80;
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar8 = FUN_1813bba80();
    if (1 < uVar8) {
      lVar19 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar3 = (longlong *)register0x00000020;
      while (lVar19 != -0x3333333333333334) {
        *plVar3 = 0;
        plVar3 = plVar3 + 8;
        lVar19 = *plVar3;
      }
    }
  }
  iVar10 = iVar10 * 0x25 + _UNK_18160fe60;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar8 = 0x5538;
    *(undefined8 *)(puVar14 + -8) = 0x180643f5a;
    FUN_180644662();
    if ((uVar8 & 0x40) != 0) {
      puVar14 = puVar14 + 8;
      lVar16 = lVar12;
      uVar18 = uVar8;
    }
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    register0x00000020 = (BADSPACEBASE *)(~-(longlong)register0x00000020 + 1);
    lVar17 = ~-lVar17 + 1;
    uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = (((_UNK_18160fe88 +
            (((((((((iVar10 * 0x25 + _UNK_18160fe64) * 0x25 + _UNK_18160fe68) * 0x25 +
                  _UNK_18160fe6c) * 0x25 + _UNK_18160fe70) * 0x25 + _UNK_18160fe74) * 0x25 +
               _UNK_18160fe78) * 0x25 + _UNK_18160fe7c) * 0x25 + _UNK_18160fe80) * 0x25 +
            _UNK_18160fe84) * 0x25) * 0x25 + _UNK_18160fe8c) * 0x25 + _UNK_18160fe90) * 0x25 +
          _UNK_18160fe94;
  do {
    uVar9 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    lVar19 = (longlong)param_1 + lVar12;
    lVar12 = ~((~(lVar12 - lVar19) + 1U) - lVar19) + 1;
    param_1 = (undefined8 *)(lVar19 - lVar12);
    uVar18 = ((uVar18 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    uVar9 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  iVar10 = ((((((((_UNK_18160febc * 0x25 + _UNK_18160fec0) * 0x25 + _UNK_18160fec4) * 0x25 +
                _UNK_18160fec8) * 0x25 + _UNK_18160fecc) * 0x25 + _UNK_18160fed0) * 0x25 +
              _UNK_18160feb4 * -0x2fe8ed1f + _UNK_18160feac * -0x349c0ac7 +
              _UNK_18160fe9c * -0x5b104d57 + _UNK_18160fea0 * -0x7f0070cb +
              _UNK_18160fea4 * -0x5675a22f + _UNK_18160fe98 * -0x295b2d93 +
              _UNK_18160feb8 * 0x1a617d0d + _UNK_18160feb0 * 0x1355ba85 +
              _UNK_18160fea8 * 0x6572713d + _UNK_18160fed4 + uVar7 * 0x5d269c1) * 0x25 +
            _UNK_18160fed8) * 0x25 + _UNK_18160fedc) * 0x25 + _UNK_18160fee0;
  do {
    uVar8 = 0;
    *(undefined8 *)(puVar14 + -8) = 0x18064420b;
    FUN_180644842();
    uVar13 = -lVar12;
    if ((uVar8 & 0x42) != 0) {
      uVar13 = (ulonglong)((uint)uVar13 ^ 0x1f5dc043);
    }
    lVar12 = ~uVar13 + 1;
    uVar9 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = (((iVar10 * 0x25 + _UNK_18160fee4) * 0x25 + _UNK_18160fee8) * 0x25 + _UNK_18160feec) *
          0x25 + _UNK_18160fef0;
  do {
    *(undefined8 *)(puVar14 + -8) = 0x1806442af;
    FUN_18064541f(0x5538);
    uVar11 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar18 = CONCAT71((int7)(uVar18 >> 8),(~uVar9 ^ 0x6e2e5d74) == *(uint *)(puVar14 + 0x20));
  if ((int)uVar18 != 0 || (uVar18 & 0x3fffff) != 0) {
    iVar10 = *(int *)(puVar14 + 0x44);
    puVar6 = puVar14;
    do {
      puVar15 = puVar6;
      *(longlong *)(puVar15 + -8) = lVar12;
      *(undefined8 **)(puVar15 + -0x10) = param_1;
      *(longlong *)(puVar15 + -0x18) = lVar16;
      lVar17 = -(longlong)iVar10;
      lVar16 = *(longlong *)(puVar15 + lVar17 + 0x7f8);
      param_1 = *(undefined8 **)(puVar15 + lVar17 + 0x800);
      lVar12 = *(longlong *)(puVar15 + lVar17 + 0x808);
      uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      puVar6 = puVar15 + lVar17 + 0x810;
    } while (uVar7 != 0);
    *(undefined8 *)(puVar15 + lVar17 + 0x808) = 0x1806444f2;
    FUN_1805f2290(puVar15 + lVar17 + 0x880);
    plVar3 = (longlong *)param_1[2];
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar3 + 1;
      lVar16 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar16 == 1) {
        pcVar4 = *(code **)(*plVar3 + 8);
        *(undefined8 *)(puVar15 + lVar17 + 0x808) = 0x180644516;
        (*pcVar4)(plVar3);
        LOCK();
        piVar2 = (int *)((longlong)plVar3 + 0xc);
        iVar10 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar10 == 1) {
          pcVar4 = *(code **)(*plVar3 + 0x10);
          *(undefined8 *)(puVar15 + lVar17 + 0x808) = 0x18064452a;
          (*pcVar4)(plVar3);
        }
      }
    }
    *(undefined **)(puVar15 + lVar17 + 0x808) = &UNK_18064453b;
  }
  *(longlong *)(puVar14 + -8) = lVar16;
  *(ulonglong *)(puVar14 + -0x10) = (ulonglong)uVar7;
  *(undefined **)(puVar14 + -0x18) = &UNK_18160fdf4;
  (*(thunk_FUN_1805a9280 + lVar17 +
    -(~((longlong)thunk_FUN_1805a9280 - (longlong)(thunk_FUN_1805a9280 + lVar17)) + 1U)))();
  return;
}



############ FUN_ 180683d70 size=1070 ############

/* WARNING: Instruction at (ram,0x0001806840c9) overlaps instruction at (ram,0x0001806840c3)
    */
/* WARNING: Removing unreachable block (ram,0x000180683e19) */

ulonglong FUN_180683d70(undefined8 param_1,undefined1 param_2,undefined8 param_3)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  uint uVar6;
  uint *puVar7;
  code **ppcVar8;
  longlong *plVar9;
  longlong in_R10;
  longlong lVar10;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_210 [24];
  undefined8 local_1f8;
  undefined8 local_1f0;
  longlong lStack_1e8;
  undefined8 uStack_1e0;
  undefined1 auStack_1d8 [32];
  undefined1 local_1b8;
  undefined4 local_1b4;
  uint local_1b0 [2];
  undefined *local_1a8;
  undefined8 local_1a0;
  undefined *local_198;
  undefined4 local_18c;
  undefined8 local_188;
  undefined4 local_180;
  code *local_178;
  undefined8 local_170;
  undefined8 local_118;
  undefined8 local_60;
  ulonglong local_40;
  
  local_60 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1d8;
  local_18c = 0x5e0;
  lVar10 = 0x5e0;
  local_180 = 0x950;
  local_1b4 = 0x811c9e53;
  local_198 = &DAT_181c96308;
  local_1a8 = &DAT_181c9a300;
  local_1a0 = 0x1405f68cabd15c82;
  local_188 = 0xabd15c82;
  local_1b8 = param_2;
  local_170 = param_3;
  local_118 = param_1;
  do {
    puVar7 = local_1b0;
    uStack_1e0 = 0x180683f2f;
    FUN_180682951(puVar7,local_1b0);
    uVar3 = rdtsc();
    *puVar7 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    uStack_1e0 = 0x180683f53;
    FUN_180685d5b();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_1b0[0] = (local_1b0[0] * -0x73323b32 >> 0x18 ^ local_1b0[0] * -0x73323b32) * 0x1a858ccd;
  if (local_1b0[0] < 0x5555557f) {
    local_178 = (code *)0x0;
    do {
      ppcVar8 = &local_178;
      uStack_1e0 = 0x180683faf;
      FUN_180682ebd(ppcVar8,&local_178);
      *ppcVar8 = FUN_1813bba80;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uStack_1e0 = 0x180683ff2;
    uVar4 = (*local_178)(0,0x38be);
    if (1 < uVar4) {
      lVar2 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar2 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar2 = *plVar1;
      }
    }
  }
                    /* WARNING: Call to offcut address within same function */
  uStack_1e0 = 0x180684025;
  func_0x000180684172();
  plVar9 = &local_1f0;
                    /* WARNING: Call to offcut address within same function */
  local_1f8 = 0x180684052;
  local_1f0 = 0x180000000;
  lStack_1e8 = lVar10;
  uVar4 = func_0x00018068407c();
  uVar5 = uVar4 & 0xffffffffffffff44;
  if ((uVar4 & 0x44) == 0) {
    lVar10 = in_R10 + 0x19d;
    plVar9 = (longlong *)auStack_210;
  }
  else {
    uVar5 = CONCAT71((int7)(uVar5 >> 8),(char)uVar4) & 0xffffffffffffff44 ^ 0x49;
  }
  plVar9[4] = lVar10;
  plVar9[3] = in_R10 + 0xe457;
  plVar9[2] = in_R10 + 0x1f23a;
  plVar9[1] = in_R10 + 0xe457;
  *plVar9 = in_R10 + -0x5027d;
  plVar9[-1] = in_R10 + -0x26ce6;
  plVar9[-2] = in_R10 + -0x26ce6;
  plVar9[-3] = in_R10 + -0x1c3c;
  plVar9[-4] = in_R10 + -0xd8d6;
  return uVar5;
}



############ FUN_ 180983e10 size=970 ############

/* WARNING: Removing unreachable block (ram,0x000180983ed4) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180983e10(void)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  longlong unaff_RSI;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_b8 [48];
  uint local_88 [8];
  uint local_68;
  uint local_64;
  code *local_60;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_b8;
  uVar4 = (uint)&stack0x00000000 & 0x33f;
  iVar5 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_68 = 0x599e << ((byte)(((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) & 0x1f) ^
             0x579e;
  uVar4 = (uint)&stack0x00000000 & 0x27f;
  local_58 = _DAT_181bd2e28;
  uStack_54 = _UNK_181bd2e2c;
  uStack_50 = _UNK_181bd2e30;
  uStack_4c = _UNK_181bd2e34;
  iVar5 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_64 = 0x9efeU - (0 << ((byte)(((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) &
                             0x1f)) ^ 0x96ee;
  do {
    uVar2 = rdtsc();
    uVar6 = (uint)((ulonglong)uVar2 >> 0x20);
    lVar7 = CONCAT44((int)((ulonglong)local_88 >> 0x20),uVar6);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ uVar6) * -0x46013d4e;
  local_88[0] = (uVar4 >> 0x18 ^ uVar4) * -0x51ca3595;
  if (local_88[0] < 0x1861861f) {
    do {
      lVar7 = 0x27;
      local_60 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813bba80(_DAT_181bd2e28,0x27);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  FUN_180983624();
                    /* WARNING: Call to offcut address within same function */
  func_0x00018098409e();
                    /* WARNING: Could not recover jumptable at 0x000180984213. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_RSI + -0x636ee))(0x17b,~-lVar7 + 1);
  return;
}



############ FUN_ 180a51560 size=1003 ############

/* WARNING: Instruction at (ram,0x000180a51827) overlaps instruction at (ram,0x000180a51824)
    */
/* WARNING: Removing unreachable block (ram,0x000180a51654) */
/* WARNING: Removing unreachable block (ram,0x000180a51824) */

void FUN_180a51560(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int iVar5;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_f8 [56];
  undefined *local_c0;
  undefined8 local_b8;
  uint local_b0;
  undefined8 local_a0;
  undefined **local_98;
  undefined4 local_90;
  uint local_8c;
  code *local_88;
  undefined8 local_80;
  undefined8 local_68;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  uVar4 = (uint)&stack0x00000000 & 0x22ff;
  iVar5 = uVar4 * uVar4 + 1;
  uVar4 = iVar5 * 0x24924924 + (iVar5 >> 4) + (iVar5 >> 1) >> 0x1d;
  uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  local_8c = 0xb07a << ((char)(((byte)(-uVar4 >> 0x18) | (byte)(uVar4 >> 0x18)) ^ 0xff) >> 7 & 0x1fU
                       ) ^ 0xbb6a;
  local_90 = 0x400;
  local_b8 = 0x6f01000;
  local_a0 = 0x1bab6a8;
  local_98 = &PTR__guard_check_icall_181bab6a8;
  local_c0 = &DAT_181bab6b8;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0xae51cb;
  local_b0 = (uVar4 >> 0x18 ^ uVar4) * -0x3d4d51cb;
  local_80 = param_2;
  local_68 = param_1;
  if (local_b0 < 0x3333333f) {
    do {
      local_88 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813bba80(0,0x3962);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  do {
    FUN_180a52608();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
                    /* WARNING: Call to offcut address within same function */
  func_0x000180a51872();
  (*(code *)0x24399ce8)();
  return;
}



############ FUN_ 180b10830 size=587 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b108af) */
/* WARNING: Removing unreachable block (ram,0x000180b10926) */

void FUN_180b10830(undefined8 param_1,longlong *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  uint uVar5;
  int iVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_108 [48];
  uint local_d8;
  undefined4 local_cc;
  uint local_ac;
  uint local_a8;
  code *local_a0;
  longlong *local_90;
  undefined8 local_88;
  undefined8 local_80;
  undefined1 local_78 [16];
  undefined8 local_68;
  undefined8 local_60;
  ulonglong local_40;
  
  local_80 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_108;
  uVar5 = (uint)&stack0x00000000 & 0x3eff;
  iVar6 = uVar5 * uVar5 + 1;
  uVar5 = iVar6 * 0x24924924 + (iVar6 >> 4) + (iVar6 >> 1) >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_a8 = ((int)(-uVar5 | uVar5) >> 0x1f) * -0x8655 ^ 0x86c5;
  uVar5 = (uint)&stack0x00000000 & 0x23f;
  iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  local_ac = 0xd346 << (-(char)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) & 0x1fU)
             ^ 0xd3b6;
  local_68 = 0;
  local_60 = 0xf;
  local_78[0] = 0;
  do {
    uVar3 = rdtsc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x166a166b;
  local_d8 = (uVar5 >> 0x18 ^ uVar5) * -0x51ca5029;
  local_90 = param_2;
  local_88 = param_1;
  if (local_d8 < 0x1999999f) {
    do {
      local_a0 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = FUN_1813bba80(0,0x4de);
    if (1 < uVar4) {
      lVar2 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar2 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar2 = *plVar1;
      }
    }
  }
  local_cc = (**(code **)(*param_2 + 0xc0))(param_2,local_78);
  FUN_180b10aa8();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180aa0910 size=1149 ############

/* WARNING: Removing unreachable block (ram,0x000180aa0b82) */
/* WARNING: Removing unreachable block (ram,0x000180aa0a20) */
/* WARNING: Removing unreachable block (ram,0x000180aa0b9d) */

void FUN_180aa0910(longlong param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  uint *puVar5;
  longlong *plVar6;
  uint uVar7;
  undefined8 in_MM3;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint local_res10 [4];
  undefined8 local_res20;
  
  FUN_180a8cfe0(param_1,param_1 + 0x68,FUN_180a91f90,0);
  local_res20 = 0xe029a5beae1ee6dc;
  do {
    puVar5 = local_res10;
    FUN_180a9f8ee(puVar5,local_res10);
    uVar7 = (uint)in_MM3;
    uVar2 = rdtsc();
    *puVar5 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_res10[0] = (local_res10[0] * -0x7a1413ad >> 0x18 ^ local_res10[0] * -0x7a1413ad) * -0xae3b32
  ;
  if (local_res10[0] < 0xccccccf) {
    do {
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813bba80(0,0xd797);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  FUN_180aa13ac();
                    /* WARNING: Call to offcut address within same function */
  func_0x000180aa0ce8();
  plVar6 = (longlong *)(ulonglong)((uVar7 & 0xffff) - 0x18);
  lVar1 = plVar6[3];
  plVar6[3] = lVar1 + 0xd5;
  plVar6[2] = lVar1 + 0x28a;
  plVar6[1] = lVar1 + 0x58b1;
  *plVar6 = lVar1 + 0x3ad7;
  plVar6[-1] = lVar1 + 0x4cb4;
  plVar6[-2] = lVar1 + 0x28a;
  plVar6[-3] = lVar1 + 0x135c;
  return;
}



############ FUN_ 180925360 size=980 ############

/* WARNING: Removing unreachable block (ram,0x000180925464) */
/* WARNING: Removing unreachable block (ram,0x0001809253fb) */
/* WARNING: Removing unreachable block (ram,0x0001809254be) */
/* WARNING: Removing unreachable block (ram,0x000180925443) */

void FUN_180925360(undefined8 param_1,undefined8 param_2)

{
  code *UNRECOVERED_JUMPTABLE;
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  longlong local_408;
  longlong lStack_400;
  longlong lStack_3f8;
  longlong local_3f0;
  longlong local_3e8;
  uint local_3c0;
  uint local_3a0;
  code *local_398;
  undefined8 local_390;
  undefined8 local_340;
  ulonglong local_30;
  
  local_340 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)&local_408;
  uVar4 = (uint)&stack0x00000000 & 0x1bf;
  local_3a0 = ((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 ^ 0x920;
  local_390 = param_2;
  do {
    uVar2 = rdtsc();
    local_3c0 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_1809236e6();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_3c0 = (local_3c0 * -0x359412ab >> 0x18 ^ local_3c0 * -0x359412ab) * -0x3d4d51cb;
  if (local_3c0 < 0x3333333f) {
    do {
      local_398 = FUN_1813bba80;
      FUN_180927547(&local_398,0xaa58);
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_398)();
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x000180925601();
  local_3f0 = local_3e8 + 0x115e2;
  lStack_3f8 = local_3e8 + -0x8958;
  lStack_400 = local_3e8 + 0x8123a;
  local_408 = local_3e8 + -0x3b553;
  UNRECOVERED_JUMPTABLE = (code *)(local_3e8 + -0x3f367);
  local_3e8 = local_3e8 + 0x170;
                    /* WARNING: Could not recover jumptable at 0x000180925751. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



############ FUN_ 1805ebaa0 size=1809 ############

/* WARNING: Instruction at (ram,0x0001805ec1e5) overlaps instruction at (ram,0x0001805ec1e2)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001805ec1fb) */
/* WARNING: Removing unreachable block (ram,0x0001805ec989) */
/* WARNING: Removing unreachable block (ram,0x0001805ec99b) */
/* WARNING: Removing unreachable block (ram,0x0001805ec9b3) */
/* WARNING: Removing unreachable block (ram,0x0001805ec1e2) */

undefined8 FUN_1805ebaa0(undefined8 *param_1)

{
  int *piVar1;
  code *pcVar2;
  longlong *plVar3;
  undefined1 *puVar4;
  ulonglong uVar5;
  undefined8 uVar6;
  longlong lVar7;
  undefined8 uVar8;
  HANDLE pvVar9;
  undefined8 *puVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  longlong lVar15;
  ulonglong uVar16;
  uint *puVar17;
  uint *puVar18;
  undefined1 *puVar19;
  uint uVar20;
  uint uVar21;
  ulonglong uVar22;
  uint uVar23;
  ulonglong uVar24;
  longlong *plVar25;
  undefined1 local_1b8 [64];
  undefined8 local_178;
  undefined8 uStack_170;
  undefined8 local_168;
  undefined4 *local_160;
  undefined4 local_158;
  uint local_154;
  code *local_140 [3];
  uint *puStack_128;
  undefined1 uStack_120;
  char *apcStack_110 [3];
  undefined8 uStack_f8;
  longlong lStack_f0;
  undefined8 local_e8;
  undefined8 *local_e0;
  undefined1 auStack_88 [80];
  ulonglong local_38;
  
  local_e8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)local_1b8;
  local_158 = 0;
  uVar21 = (uint)&stack0x00000000;
  if (((((uVar21 & 0x29ff) + 1) * (uVar21 & 0x29ff) + 7) % 0x51 & 0x3c0) == 0) {
    uVar20 = ((uVar21 & 0x2dff) * (uVar21 & 0x2dff) + 1) % 7;
  }
  else {
    uVar20 = 0x7b6fe37;
  }
  uVar11 = uVar21 & 0x1bf;
  uVar21 = ((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3 ^
           ((uVar21 & 0x1bff) * (uVar21 & 0x1bff) * 0x10 + 4) % 0x13;
  uVar11 = ((int)(-uVar21 | uVar21) >> 0x1f) * -0xf3ee ^ 0xf8fe;
  uVar24 = (ulonglong)uVar11;
  local_178 = 0;
  uStack_170 = 0;
  uVar22 = 0x301830;
  local_160 = &DAT_1813598b0;
  local_168 = 0x1813599b0;
  uVar21 = DAT_1813598d0 ^
           (DAT_1813598cc ^
           (DAT_1813598c8 ^
           (DAT_1813598c4 ^
           (DAT_1813598c0 ^
           (DAT_1813598bc ^
           (DAT_1813598b8 ^ (DAT_1813598b4 ^ (DAT_1813598b0 ^ 0x811c9e07) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  plVar25 = (longlong *)register0x00000020;
  local_e0 = param_1;
  do {
    uVar5 = FUN_1805ec1ea(0xf918);
    if (uVar5 < uVar22) {
      plVar25 = (longlong *)-(~(ulonglong)plVar25 + 1);
    }
    uVar12 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar21 = (DAT_1813598e8 ^
           (DAT_1813598e4 ^
           (DAT_1813598e0 ^
           (DAT_1813598dc ^
           (DAT_1813598d8 ^ (DAT_1813598d4 ^ uVar21 * 0x10001a7) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  do {
    FUN_1805ec831(0xf918);
    uVar12 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  lVar15 = 3;
  puVar17 = &DAT_1813598ec;
  do {
    puVar18 = puVar17;
    uVar21 = (puVar18[4] ^
             (puVar18[3] ^
             (puVar18[2] ^ (puVar18[1] ^ (*puVar18 ^ uVar21) * 0x10001a7) * 0x10001a7) * 0x10001a7)
             * 0x10001a7) * 0x10001a7;
    lVar15 = lVar15 + -1;
    puVar17 = puVar18 + 5;
  } while (lVar15 != 0);
  do {
    uVar12 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  puVar17 = puVar18 + 7;
  uVar23 = (*puVar17 ^ (puVar18[6] ^ (puVar18[5] ^ uVar21) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  uVar22 = (ulonglong)uVar23;
  uVar21 = (uint)puVar17 & 0x3f;
  uVar12 = (uint)puVar17 & 0xf | 0x7b;
  uVar12 = uVar12 * uVar12;
  uVar5 = (ulonglong)uVar12;
  uVar16 = 0x9458L >>
           (uVar12 * 0x4735 == (uVar21 | 9) * (uVar21 | 9) * 0x486b |
           (byte)(((uVar21 + 2) * (uVar21 + 1) * uVar21) % 3)) ^ 0x9558;
  uVar21 = *(uint *)((longlong)puVar17 + (uVar16 - 0xfc));
  puVar17 = (uint *)((longlong)puVar17 + (uVar16 - 0xf8));
  uVar12 = *puVar17;
  uVar13 = (uint)puVar17 & 0x3ff;
  iVar14 = (uVar13 + 2) * (uVar13 + 1) * uVar13;
  puVar17 = (uint *)((longlong)puVar17 +
                    (0x4cb7L >>
                     (-(char)(((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e) & 0x3fU
                     ) ^ 0x4cb3U));
  do {
    uVar6 = rdtsc();
    local_154 = (uint)uVar6 ^ (uint)((ulonglong)uVar6 >> 0x20);
    uVar13 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_154 = local_154 * -0x3d4da42f;
  local_154 = (local_154 >> 0x18 ^ local_154) * 0x1a851a85;
  uVar6 = 0;
  if (local_154 < 0x3ce8353) {
    do {
      local_140[0] = FUN_1813bba80;
      FUN_1805eb268(local_140,0x379b);
      uVar13 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar13 != 0);
    uVar16 = (*local_140[0])();
    if (1 < uVar16) {
      lVar15 = *plVar25;
      plVar3 = plVar25;
      while (lVar15 != -0x3333333333333334) {
        *plVar3 = 0;
        plVar3 = plVar3 + 8;
        lVar15 = *plVar3;
      }
    }
  }
  uVar16 = (ulonglong)
           ((puVar17[0xb] ^
            (puVar17[10] ^
            (puVar17[9] ^
            (puVar17[8] ^
            (puVar17[7] ^
            (puVar17[6] ^
            (puVar17[5] ^
            (puVar17[4] ^
            (puVar17[3] ^
            (puVar17[2] ^
            (puVar17[1] ^
            (*puVar17 ^ (uVar12 ^ (uVar21 ^ uVar23) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
            0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
            * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7);
  local_168 = 0x36660670d99f39bb;
  local_160 = (undefined4 *)CONCAT44(local_160._4_4_,0xd99f39bb);
  lVar15 = 7;
  puVar17 = puVar17 + 0xc;
  do {
    puVar18 = puVar17;
    uVar21 = (puVar18[1] ^ (*puVar18 ^ (uint)uVar16) * 0x10001a7) * 0x10001a7;
    uVar16 = (ulonglong)uVar21;
    lVar15 = lVar15 + -1;
    puVar17 = puVar18 + 2;
  } while (lVar15 != 0);
  do {
    uVar12 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar21 = puVar18[4] ^ (puVar18[3] ^ (puVar18[2] ^ uVar21) * 0x10001a7) * 0x10001a7;
  uVar12 = (uVar21 * 0x1a700 | uVar21 * 0x10001a7 >> 0x18) & 0xe619e619 |
           (uVar21 * 0x10001a7 >> 8 | uVar21 * -0x59000000) & 0x19e619e6;
  uVar21 = (uVar12 >> 0xe ^ uVar12) >> 4 & 0x1fff;
  if (((uVar21 << 0xe | uVar21) << 4 ^ uVar12) != 0xd99f39bb) {
    uVar6 = thunk_FUN_1805a9280((longlong)
                                (int)(((int)(-uVar20 | uVar20) >> 0x1f) * -0xf46c ^ 0xf14c),uVar12);
    return uVar6;
  }
  puVar4 = local_1b8;
  do {
    puVar19 = puVar4;
    *(ulonglong *)(puVar19 + -8) = uVar5;
    *(ulonglong *)(puVar19 + -0x10) = uVar22;
    *(ulonglong *)(puVar19 + -0x18) = uVar16;
    lVar15 = uVar24 + (longlong)plVar25;
    uVar24 = ((longlong)plVar25 - lVar15 ^ 0xffffffffffffffffU) + 1;
    plVar25 = (longlong *)(lVar15 - uVar24);
    lVar15 = -(longlong)(int)uVar11;
    uVar16 = *(ulonglong *)(puVar19 + lVar15 + 0xaf8);
    uVar22 = *(ulonglong *)(puVar19 + lVar15 + 0xb00);
    uVar5 = *(ulonglong *)(puVar19 + lVar15 + 0xb08);
    uVar21 = ((int)*plVar25 + 1) * (int)*plVar25 & 0x80000001;
    if ((int)uVar21 < 0) {
      uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
    }
    puVar4 = puVar19 + lVar15 + 0xb10;
  } while (uVar21 != 0);
  if (DAT_18265deb8 == 0) {
    *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec72d;
    puVar17 = (uint *)FUN_1805ee6d0();
    uStack_120 = 0;
    puStack_128 = puVar17;
    if (puVar17 == (uint *)0x0) {
      *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805eca07;
      uVar6 = FUN_1805a4ab0(auStack_88,1,"boost unique_lock has no mutex");
                    /* WARNING: Subroutine does not return */
      *(undefined **)(puVar19 + lVar15 + 0xb08) = &UNK_1805eca10;
      FUN_1805a3bb0(uVar6);
    }
    *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec749;
    FUN_1805a9420(puVar17);
    uStack_120 = 1;
    if (DAT_18265deb8 == 0) {
      *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec764;
      lVar7 = FUN_1811316e0(0x1b0);
      *(longlong *)(puVar19 + lVar15 + 0xb60) = lVar7;
      if (lVar7 != 0) {
        *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec776;
        uVar6 = FUN_180675cd0(lVar7);
      }
      *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec788;
      FUN_1805e2150(puVar19 + lVar15 + 0xb50,uVar6);
      *(undefined8 *)(puVar19 + lVar15 + 0xb40) = 0;
      *(undefined8 *)(puVar19 + lVar15 + 0xb38) = 0;
      *(undefined4 *)(puVar19 + lVar15 + 0xb30) = 0;
      uVar6 = *(undefined8 *)(puVar19 + lVar15 + 0xb50);
      *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec7ad;
      FUN_1806afd50(uVar6,0,2);
      *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec7b2;
      uVar8 = FUN_1805ecbf0();
      *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec7c7;
      FUN_18069ae50(uVar6,&DAT_18265deb8,uVar8,1);
      if (DAT_18265deb8 == 0) {
        *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec7da;
        apcStack_110[0] = (char *)FUN_1811316e0(0x18);
        if (apcStack_110[0] != (char *)0x0) {
          *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec7f2;
          FUN_1805a48c0(apcStack_110[0],&DAT_181baf991);
        }
        *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec7ff;
        lVar7 = FUN_1805c0260();
        *(undefined4 *)(puVar19 + lVar15 + 0xb80) = 0x8e6;
        apcStack_110[0] =
             "d:\\jenkins\\full\\eden\\client\\pace\\customer\\libraries\\src\\libpacefusion\\licensecallbackhandler.cpp"
        ;
        uVar6 = *(undefined8 *)(lVar7 + 8);
        *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec822;
        uVar6 = FUN_1805a21d0(uVar6,apcStack_110);
                    /* WARNING: Subroutine does not return */
        *(undefined **)(puVar19 + lVar15 + 0xb08) = &UNK_1805ec82f;
        FUN_1805b20d0(uVar6,puVar19 + lVar15 + 0xb80);
      }
      *param_1 = uVar6;
      uVar6 = *(undefined8 *)(puVar19 + lVar15 + 0xb58);
      *(undefined8 *)(puVar19 + lVar15 + 0xb58) = 0;
      param_1[1] = uVar6;
      *(undefined8 *)(puVar19 + lVar15 + 0xb50) = 0;
      *(undefined4 *)(puVar19 + lVar15 + 0xb70) = 1;
      LOCK();
      uVar21 = *puVar17;
      *puVar17 = *puVar17 + 0x80000000;
      UNLOCK();
      if (((uVar21 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar21)) {
        LOCK();
        uVar21 = *puStack_128;
        *puStack_128 = *puStack_128 | 0x40000000;
        UNLOCK();
        if ((uVar21 >> 0x1e & 1) == 0) {
          *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec889;
          pvVar9 = (HANDLE)FUN_1805a9100(puStack_128);
          *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec892;
          SetEvent(pvVar9);
        }
      }
      if (*(longlong *)(puVar19 + lVar15 + 0xb58) != 0) {
        LOCK();
        piVar1 = (int *)(*(longlong *)(puVar19 + lVar15 + 0xb58) + 8);
        iVar14 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar14 == 1) {
          plVar25 = *(longlong **)(puVar19 + lVar15 + 0xb58);
          pcVar2 = *(code **)(*plVar25 + 8);
          *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec8bc;
          (*pcVar2)(plVar25);
          LOCK();
          piVar1 = (int *)((longlong)plVar25 + 0xc);
          iVar14 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar14 == 1) {
            pcVar2 = *(code **)(**(longlong **)(puVar19 + lVar15 + 0xb58) + 0x10);
            *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec8d1;
            (*pcVar2)();
          }
        }
      }
      goto LAB_1805ec9bf;
    }
    LOCK();
    uVar21 = *puVar17;
    *puVar17 = *puVar17 + 0x80000000;
    UNLOCK();
    if (((uVar21 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar21)) {
      LOCK();
      uVar21 = *puStack_128;
      *puStack_128 = *puStack_128 | 0x40000000;
      UNLOCK();
      if ((uVar21 >> 0x1e & 1) == 0) {
        *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec901;
        pvVar9 = (HANDLE)FUN_1805a9100(puStack_128);
        *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec90a;
        SetEvent(pvVar9);
      }
    }
  }
  *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec915;
  lVar7 = FUN_1811316e0(0x1b0);
  *(longlong *)(puVar19 + lVar15 + 0xb60) = lVar7;
  if (lVar7 != 0) {
    *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec927;
    puVar10 = (undefined8 *)FUN_1805ecbf0();
    uStack_f8 = *puVar10;
    lStack_f0 = puVar10[1];
    if (lStack_f0 != 0) {
      LOCK();
      *(int *)(lStack_f0 + 8) = *(int *)(lStack_f0 + 8) + 1;
      UNLOCK();
    }
    *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec954;
    uVar6 = FUN_180674d00(lVar7,DAT_18265deb8,&uStack_f8,1);
  }
  *(undefined8 *)(puVar19 + lVar15 + 0xb08) = 0x1805ec966;
  FUN_1805e2150(puVar19 + lVar15 + 0xb50,uVar6);
  *param_1 = *(undefined8 *)(puVar19 + lVar15 + 0xb50);
  uVar6 = *(undefined8 *)(puVar19 + lVar15 + 0xb58);
  *(undefined8 *)(puVar19 + lVar15 + 0xb58) = 0;
  param_1[1] = uVar6;
  *(undefined4 *)(puVar19 + lVar15 + 0xb70) = 1;
LAB_1805ec9bf:
  *(undefined **)(puVar19 + lVar15 + 0xb08) = &UNK_1805ec9d1;
}



############ FUN_ 18069bc20 size=1232 ############

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

void FUN_18069bc20(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 *param_4,
                  undefined8 *param_5)

{
  undefined8 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint uVar4;
  ulonglong uVar5;
  code **ppcVar6;
  undefined8 *puVar7;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_3a8 [40];
  undefined4 *local_380;
  undefined *local_378;
  uint local_370;
  undefined8 local_368;
  undefined8 local_360;
  uint local_358;
  code *local_350;
  undefined8 *local_348;
  undefined8 local_340;
  undefined8 local_338;
  undefined8 *local_330;
  undefined8 local_208;
  ulonglong local_58;
  
  local_208 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_3a8;
  uVar4 = (uint)&stack0x00000000 & 0x15ff;
  uVar4 = (uVar4 + 1) * uVar4 + 0x108b & 0x80000001;
  uVar4 = (int)(-uVar4 | uVar4) >> 0x1f;
  local_358 = (int)(-uVar4 | uVar4) >> 0x1f & 0x6416U ^ 0x6f46;
  local_368 = 0x100;
  local_380 = &DAT_1806debd0;
  local_378 = &DAT_1806decd0;
  puVar1 = (undefined8 *)param_4[1];
  local_330 = param_4;
  local_340 = param_3;
  local_360 = param_2;
  local_338 = param_1;
  local_348 = param_5;
  for (puVar7 = (undefined8 *)*param_4; puVar7 != puVar1; puVar7 = puVar7 + 0x5e) {
    (**(code **)*puVar7)(puVar7,0);
  }
  param_4[1] = *param_4;
  uVar5 = (ulonglong)local_368 >> 0x20;
  local_368 = CONCAT44((int)uVar5,0xa51f6b1f);
  if (param_5 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_5[1];
    for (puVar7 = (undefined8 *)*param_5; puVar7 != puVar1; puVar7 = puVar7 + 0x118) {
      (**(code **)*puVar7)(puVar7,0);
      param_5 = local_348;
    }
    param_5[1] = *param_5;
  }
  do {
    uVar3 = rdtsc();
    local_370 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_18069a182();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_370 = (local_370 * -0x13ac51cb >> 0x18 ^ local_370 * -0x13ac51cb) * -0x12aa12ab;
  if (local_370 < 0x330a5df) {
    local_350 = (code *)0x0;
    do {
      ppcVar6 = &local_350;
      FUN_18069c112(ppcVar6,&local_350);
      *ppcVar6 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar5 = (*local_350)(0,0x198f);
    if (1 < uVar5) {
      lVar2 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar2 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar2 = *(longlong *)register0x00000020;
      }
    }
  }
  FUN_18069c113(0xf53c);
  return;
}



############ FUN_ 18079b3d0 size=1265 ############

/* WARNING: Removing unreachable block (ram,0x00018079b436) */
/* WARNING: Removing unreachable block (ram,0x00018079b5d1) */
/* WARNING: Removing unreachable block (ram,0x00018079b4b8) */

ulonglong FUN_18079b3d0(undefined8 param_1,longlong *param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  longlong *plVar3;
  uint uVar4;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_e8 [40];
  undefined8 local_c0;
  undefined4 local_b4;
  uint local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  uint local_98;
  code *local_90;
  undefined8 local_88;
  undefined1 local_80 [16];
  undefined8 local_70;
  undefined8 local_68;
  ulonglong local_48;
  
  local_88 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_b4 = 0x260;
  if (((ulonglong)&stack0x00000000 & 0x980) == 0) {
    uVar4 = (uint)&stack0x00000000 & 0x1dff;
    uVar4 = ((uVar4 + 1) * uVar4 + 7) % 0x51;
    local_98 = (int)(-uVar4 | uVar4) >> 0x1f & 0x6cb5;
  }
  else {
    local_98 = 0x6cb5;
  }
  local_98 = local_98 ^ 0x6b25;
  local_70 = 0;
  local_68 = 0xf;
  local_80[0] = 0;
  local_a0 = 0;
  local_c0 = 0x180130da0;
  local_a8 = 0x180132d9c;
  (**(code **)(*param_2 + 0xc0))(param_2,local_80);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_a0 = local_a8;
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * 0x5bd1c4ce;
  local_b0 = (uVar4 >> 0x18 ^ uVar4) * -0x12aa3d4e;
  plVar3 = (longlong *)(ulonglong)local_b0;
  if (local_b0 < 0x1e1e1e1f) {
    do {
      local_90 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    plVar3 = (longlong *)FUN_1813bba80(0,0x6af7);
    if ((longlong *)0x1 < plVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar3 = (longlong *)register0x00000020;
      while (lVar1 != -0x3333333333333334) {
        *plVar3 = 0;
        plVar3 = plVar3 + 8;
        lVar1 = *plVar3;
      }
    }
  }
  return (ulonglong)plVar3 & 0xfffffffffffffff8;
}



############ FUN_ 18096a760 size=735 ############

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

void FUN_18096a760(void)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  code **ppcVar5;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  code *local_50 [2];
  
  do {
    uVar2 = rdtsc();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x460100af;
  if ((uVar4 >> 0x18 ^ uVar4) * -0x13aca42f < 0xcd1ed8) {
    local_50[0] = (code *)0x0;
    do {
      ppcVar5 = local_50;
      FUN_18096aa66(ppcVar5,local_50);
      *ppcVar5 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_50[0])(0,0x7da4);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  if ((POPCOUNT((DAT_1815fda74 ^ (DAT_1815fda70 ^ 0x811c9e53) * 0x10001d1) & 0xff) & 1U) != 0) {
    FUN_18096aa67(0x4628);
    return;
  }
  FUN_18096aa67(0x4628);
  return;
}



############ FUN_ 1805d9180 size=1513 ############

/* WARNING: Instruction at (ram,0x0001805d9554) overlaps instruction at (ram,0x0001805d9553)
    */
/* WARNING: Removing unreachable block (ram,0x0001805d91cd) */
/* WARNING: Removing unreachable block (ram,0x0001805d954f) */
/* WARNING: Removing unreachable block (ram,0x0001805d97b0) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

longlong FUN_1805d9180(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  uint uVar5;
  longlong lVar6;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  
  lVar6 = *(longlong *)(param_1 + 0x78) - *(longlong *)(param_1 + 0x70);
  lVar6 = lVar6 / 6 + (lVar6 >> 0x3f);
  lVar6 = (lVar6 >> 2) - (lVar6 >> 0x3f);
  do {
    uVar3 = rdtsc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x51ca3b32;
  if ((uVar5 >> 0x18 ^ uVar5) * -0x51ca4602 < 0x1111111f) {
    do {
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = FUN_1813bba80(0,41000);
    if (1 < uVar4) {
      lVar2 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar2 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar2 = *plVar1;
      }
    }
  }
  do {
    lVar6 = lVar6 + (longlong)register0x00000020;
    register0x00000020 =
         (BADSPACEBASE *)(~((~((longlong)register0x00000020 - lVar6) + 1U) - lVar6) + 1);
    lVar6 = lVar6 - (longlong)register0x00000020;
    uVar5 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    FUN_1805d8ebc();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  return -(((ulonglong)(uint)(_UNK_1811ddcb4 * 0x5bd1e995) ^ 0xffffffffffffffff) + 1);
}



############ FUN_ 1806f9730 size=1323 ############

/* WARNING: Instruction at (ram,0x0001806f9c68) overlaps instruction at (ram,0x0001806f9c64)
    */
/* WARNING: Removing unreachable block (ram,0x0001806f9f69) */
/* WARNING: Removing unreachable block (ram,0x0001806f99c9) */
/* WARNING: Removing unreachable block (ram,0x0001806f9d6f) */

ulonglong FUN_1806f9730(longlong param_1)

{
  longlong *plVar1;
  uint uVar2;
  undefined8 uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  ulonglong uVar8;
  uint *puVar9;
  uint *puVar10;
  undefined1 *puVar11;
  byte *pbVar12;
  byte *pbVar13;
  uint *puVar14;
  longlong lVar15;
  uint *puVar16;
  int *piVar17;
  undefined8 unaff_R14;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint local_res8 [2];
  uint local_res10;
  uint uStackX_18;
  uint *local_res20;
  undefined8 local_80;
  undefined1 auStack_78 [32];
  undefined *local_58;
  code *local_50;
  
  pbVar13 = auStack_78;
  puVar14 = (uint *)0x0;
  uVar2 = *(uint *)(param_1 + 0x14);
  uVar8 = 0x100;
  local_58 = &UNK_1813dee70;
  local_res20 = (uint *)&DAT_1813ded70;
  do {
    uVar8 = ~((uVar8 ^ 0xffffffffffffffff) + 1) + 1;
    FUN_1806fac92(0xdc28,uVar8);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar3 = rdtsc();
    local_res10 = (uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20);
    FUN_1806fa189();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_res10 = (local_res10 * -0x13ac3595 >> 0x18 ^ local_res10 * -0x13ac3595) * -0x46014602;
  if (local_res10 < 0x5254e77) {
    do {
      local_50 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar8 = FUN_1813bba80(0,0x28b2);
    if (1 < uVar8) {
      lVar15 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar1 = (longlong *)register0x00000020;
      while (lVar15 != -0x3333333333333334) {
        *plVar1 = 0;
        plVar1 = plVar1 + 8;
        lVar15 = *plVar1;
      }
    }
  }
  do {
    FUN_1806fb569();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  lVar15 = 2;
  uVar5 = (DAT_1813ded70 + 0x4849a6ce) * 0x401;
  puVar16 = (uint *)&DAT_1813ded70;
  do {
    puVar10 = puVar16;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[1]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[2]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[3]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[4]) * 0x401;
    local_res8[0] = puVar10[6];
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[5]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + local_res8[0]) * 0x401;
    lVar15 = lVar15 + -1;
    puVar16 = puVar10 + 6;
  } while (lVar15 != 0);
code_r0x0001806f9c12:
  puVar16 = local_res8;
  uVar8 = 0xdc28;
  puVar9 = puVar10 + 7;
  *(undefined8 *)(pbVar13 + -8) = 0x1806f9c24;
  uVar4 = FUN_1806fb4c0();
  puVar11 = pbVar13;
  if ((uVar8 & 0xc3) == 0) goto LAB_1806f9c4c;
  do {
    pbVar13 = puVar11 + -8;
    pbVar12 = puVar11 + -8;
    *(uint **)(puVar11 + -8) = puVar14;
    if (((uVar8 & 0xc3) != 0) || (puVar14 = puVar9, (uVar8 & 0xc300) != 0)) goto LAB_1806f9c40;
LAB_1806f9c4c:
    pbVar12 = pbVar13;
    puVar11 = pbVar13;
  } while ((uVar8 & 0xc300) != 0);
  goto LAB_1806f9c51;
LAB_1806f9c40:
  do {
    uVar4 = *puVar9;
  } while ((uVar8 & 0xc300) == 0);
LAB_1806f9c51:
  *puVar16 = uVar4;
  puVar14 = *(uint **)pbVar12;
  if ((uVar8 & 0xc2) != 0) {
    uVar4 = uVar4 | puVar14[0x13ae601];
    return (ulonglong)
           CONCAT22((short)(uVar4 >> 0x10),CONCAT11((byte)(uVar4 >> 8) ^ *pbVar12,(char)uVar4));
  }
  pbVar13 = pbVar12 + 8;
  uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 == 0) {
    uVar5 = (local_res8[0] + (uVar5 ^ uVar5 >> 6)) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[8]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[9]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[10]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[0xb]) * 0x401;
    local_res20 = (uint *)0x104770f94ecdbbbb;
    local_res10 = 0x4ecdbbbb;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[0xc]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[0xd]) * 0x401;
    do {
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    lVar15 = 4;
    uVar5 = (puVar10[0xe] + (uVar5 ^ uVar5 >> 6)) * 0x401;
    puVar16 = puVar10 + 0xe;
    do {
      puVar10 = puVar16;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[1]) * 0x401;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[2]) * 0x401;
      local_res8[0] = puVar10[4];
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[3]) * 0x401;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + local_res8[0]) * 0x401;
      lVar15 = lVar15 + -1;
      puVar16 = puVar10 + 4;
    } while (lVar15 != 0);
    puVar10 = puVar10 + 5;
    do {
      *(undefined **)pbVar12 = &UNK_1806f9e3d;
      FUN_1806fa2e5();
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    lVar15 = 3;
    uVar5 = (*puVar10 + (uVar5 ^ uVar5 >> 6)) * 0x401;
    do {
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[1]) * 0x401;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[2]) * 0x401;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[3]) * 0x401;
      puVar16 = puVar10 + 5;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + puVar10[4]) * 0x401;
      puVar10 = puVar10 + 6;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + *puVar16) * 0x401;
      uVar5 = ((uVar5 >> 6 ^ uVar5) + *puVar10) * 0x401;
      lVar15 = lVar15 + -1;
    } while (lVar15 != 0);
    uVar4 = (uint)puVar10 & 0x61ff;
    uVar5 = uVar5 ^ uVar5 >> 6;
    uVar7 = uVar5 & 0x6f;
    iVar6 = uVar4 * uVar4 + 1;
    uVar4 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
    uVar4 = uVar7 * uVar7 * (uVar7 + 1) * (uVar7 + 1) & 0x80000003 ^
            (int)(uVar4 - 7) >> 0x1f & uVar4;
    piVar17 = (int *)((((longlong)(((int)(-uVar4 | uVar4) >> 0x1f) * -0x58f3) ^ 0x5ef3U) - 0x5fc) +
                     (longlong)puVar10);
    uVar5 = (*piVar17 + uVar5) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar17[1]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar17[2]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar17[3]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar17[4]) * 0x401;
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar17[5]) * 0x401;
    local_res8[0] = piVar17[7];
    uVar5 = ((uVar5 >> 6 ^ uVar5) + piVar17[6]) * 0x401;
    uStackX_18 = ((uVar5 >> 6 ^ uVar5) + local_res8[0]) * 0x401;
    uStackX_18 = uStackX_18 >> 6 ^ uStackX_18;
                    /* WARNING: Call to offcut address within same function */
    *(undefined **)pbVar12 = &UNK_1806fa05b;
    func_0x0001806f9df2();
    *(uint **)pbVar12 = puVar14;
    *(ulonglong *)(pbVar12 + -8) = CONCAT71((int7)((ulonglong)unaff_R14 >> 8),uVar2 < 2);
                    /* WARNING: Call to offcut address within same function */
    *(undefined **)(pbVar12 + -0x10) = &UNK_1806fa065;
    iVar6 = func_0x0001806fa068();
    *(int *)(pbVar12 + -8) = *(int *)(pbVar12 + -8) + 0x1a0;
    *(longlong *)(pbVar12 + -0x10) = (longlong)puVar14 + 0x4e7f6;
    *(longlong *)(pbVar12 + -0x18) = (longlong)puVar14 + -0x6a4a5;
    *(uint **)(pbVar12 + -0x20) = puVar14 + -0x18ffb;
    *(uint **)(pbVar12 + -0x28) = puVar14 + 0x6c3d;
    *(uint **)(pbVar12 + -0x30) = puVar14 + -0x55fb;
    *(uint **)(pbVar12 + -0x38) = puVar14 + 0x6c3d;
    *(longlong *)(pbVar12 + -0x40) = (longlong)puVar14 + 0x7b7e1;
    *(longlong *)(pbVar12 + -0x48) = (longlong)puVar14 + -0x68e15;
    *(uint **)(pbVar12 + -0x50) = puVar14 + 0xac77;
    return (((ulonglong)(iVar6 + 0x8b483893) ^ 0xffffffffffffffdb) + 1 ^ 0xffffffffffffffff) + 1;
  }
  goto code_r0x0001806f9c12;
}



############ FUN_ 1807297b0 size=3096 ############

/* WARNING: Instruction at (ram,0x00018072a0d3) overlaps instruction at (ram,0x00018072a0d1)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018072a06e) */
/* WARNING: Removing unreachable block (ram,0x000180729b19) */
/* WARNING: Removing unreachable block (ram,0x000180729948) */
/* WARNING: Removing unreachable block (ram,0x0001807298e3) */
/* WARNING: Removing unreachable block (ram,0x000180729893) */
/* WARNING: Removing unreachable block (ram,0x000180729a8f) */
/* WARNING: Removing unreachable block (ram,0x000180729f5d) */
/* WARNING: Removing unreachable block (ram,0x00018072a45a) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffff80 : 0x00018072a2c2 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_1807297b0(undefined8 *param_1,undefined4 *param_2)

{
  byte *pbVar1;
  longlong *plVar2;
  undefined4 uVar3;
  ushort uVar4;
  int iVar5;
  uint *puVar6;
  ulonglong uVar7;
  ushort uVar8;
  uint uVar9;
  ulonglong uVar10;
  undefined1 *puVar11;
  longlong lVar12;
  uint uVar13;
  undefined1 *puVar14;
  ulonglong uVar15;
  uint uVar16;
  longlong lVar17;
  longlong lVar18;
  uint uVar19;
  undefined4 uVar20;
  longlong lVar21;
  undefined8 uVar22;
  bool bVar24;
  uint unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_b8 [32];
  uint local_98;
  undefined8 local_90;
  undefined8 local_88;
  uint local_80;
  uint local_7c;
  code *local_78;
  undefined4 *local_70;
  undefined8 local_68;
  undefined4 local_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined4 local_50;
  undefined1 local_48 [4];
  undefined1 local_44;
  undefined1 local_43;
  undefined1 local_42;
  undefined1 local_41;
  ulonglong local_40;
  uint7 uVar23;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_70 = param_2;
  uVar13 = (uint)&stack0x00000000;
  lVar21 = 0;
  local_7c = 0x7c86 >> ((char)((byte)(-(((uVar13 & 0xaff) * (uVar13 & 0xaff) + 1) % 7) >> 0x18) ^
                              0xff) >> 7 & 0x1fU) ^ 0x7c66;
  uVar9 = (((uVar13 & 0x36ff) + 1) * (uVar13 & 0x36ff) + 7) % 0x51;
  uVar13 = ((uVar13 & 0x8ff) + 1) * (uVar13 & 0x8ff) + 0x6285 & 0x80000001;
  lVar17 = 0x2e69;
  local_80 = (((int)(-uVar9 | uVar9) >> 0x1f) - ((int)(-uVar13 | uVar13) >> 0x1f)) + 0xafd6U ^
             0xaa16;
  uVar13 = 0xc5;
  lVar12 = 0x13;
  puVar6 = (uint *)0x181500cec;
  local_88 = 0x181500cec;
  local_90 = 0x181500dec;
  do {
    uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ *puVar6;
    puVar6 = puVar6 + 1;
    lVar12 = lVar12 + -1;
  } while (lVar12 != 0);
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = uVar13 >> 0x1c ^ uVar13 << 4 ^ *puVar6;
  uVar13 = uVar9 & 0x3f | 0x3c;
  uVar16 = uVar13 * uVar13 * 0x8609 ^ 0x482dbfd;
  uVar13 = (uint)puVar6 & 0xfff;
  uVar13 = (uVar13 + 1) * uVar13 + 0x434f & 0x80000001;
  puVar6 = (uint *)((longlong)puVar6 +
                   (0x1c - (((longlong)
                             (((int)(-uVar16 | uVar16) >> 0x1f) - ((int)(-uVar13 | uVar13) >> 0x1f))
                            | 0xe185U) ^ 0xe19d)));
  uVar13 = uVar9 >> 0x1c ^ uVar9 << 4 ^ *puVar6;
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[1];
  uVar20 = *(undefined4 *)(param_1 + 3);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[2];
  local_48[3] = (undefined1)uVar20;
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[3];
  local_48[0] = (undefined1)((uint)uVar20 >> 0x18);
  local_48[1] = (undefined1)((uint)uVar20 >> 0x10);
  uVar3 = *(undefined4 *)((longlong)param_1 + 0x14);
  local_48[2] = (undefined1)((uint)uVar20 >> 8);
  local_44 = (undefined1)((uint)uVar3 >> 0x18);
  local_43 = (undefined1)((uint)uVar3 >> 0x10);
  local_42 = (undefined1)((uint)uVar3 >> 8);
  local_41 = (undefined1)uVar3;
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[4];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[5];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[6];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[7];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[8];
  FUN_18072ae40(param_1,&DAT_181bd2dec,1);
  uVar9 = puVar6[9] ^ uVar13 >> 0x1c ^ uVar13 << 4;
  uVar13 = *(uint *)((longlong)param_1 + 0x14);
  while ((uVar13 & 0x1f8) != 0x1c0) {
    FUN_18072ae40(param_1,&DAT_181bd2df0,1);
    uVar13 = *(uint *)((longlong)param_1 + 0x14);
  }
  local_68 = 8;
  uVar16 = *(uint *)((longlong)param_1 + 0x14) + 0x40;
  uVar13 = *(uint *)((longlong)param_1 + 0x14) >> 3 & 0x3f;
  *(uint *)((longlong)param_1 + 0x14) = uVar16;
  if (uVar16 < 0x40) {
    *(int *)(param_1 + 3) = *(int *)(param_1 + 3) + 1;
  }
  uVar16 = 0;
  if (0x3f < uVar13 + 8) {
    uVar16 = -uVar13 + 0x40;
    memcpy((void *)((longlong)param_1 + (ulonglong)uVar13 + 0x1c),local_48,(ulonglong)uVar16);
    FUN_1807275a0(param_1,(longlong)param_1 + 0x1c);
    for (uVar19 = -uVar13 + 0x7f; uVar13 = 0, uVar19 < 8; uVar19 = uVar19 + 0x40) {
      FUN_1807275a0(param_1,local_48 + uVar16);
      uVar16 = uVar16 + 0x40;
    }
  }
  uVar7 = (ulonglong)(8 - uVar16);
  memcpy((void *)((longlong)param_1 + (ulonglong)uVar13 + 0x1c),local_48 + uVar16,uVar7);
  uVar13 = uVar9 >> 0x1c ^ uVar9 << 4 ^ puVar6[10];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0xb];
  uVar4 = (ushort)((uint)*(undefined4 *)param_1 >> 0x10);
  uVar8 = (ushort)*(undefined4 *)param_1;
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0xc];
  local_60 = CONCAT22(uVar8 << 8 | uVar8 >> 8,uVar4 << 8 | uVar4 >> 8);
  uVar4 = (ushort)((uint)*(undefined4 *)((longlong)param_1 + 4) >> 0x10);
  uVar8 = (ushort)*(undefined4 *)((longlong)param_1 + 4);
  uStack_5c = CONCAT22(uVar8 << 8 | uVar8 >> 8,uVar4 << 8 | uVar4 >> 8);
  uVar4 = (ushort)((uint)*(undefined4 *)(param_1 + 1) >> 0x10);
  uVar8 = (ushort)*(undefined4 *)(param_1 + 1);
  uStack_58 = CONCAT22(uVar8 << 8 | uVar8 >> 8,uVar4 << 8 | uVar4 >> 8);
  uVar4 = (ushort)((uint)*(undefined4 *)((longlong)param_1 + 0xc) >> 0x10);
  uVar8 = (ushort)*(undefined4 *)((longlong)param_1 + 0xc);
  uStack_54 = CONCAT22(uVar8 << 8 | uVar8 >> 8,uVar4 << 8 | uVar4 >> 8);
  uVar4 = (ushort)((uint)*(undefined4 *)(param_1 + 2) >> 0x10);
  uVar8 = (ushort)*(undefined4 *)(param_1 + 2);
  uVar20 = CONCAT22(uVar8 << 8 | uVar8 >> 8,uVar4 << 8 | uVar4 >> 8);
  uVar9 = uVar13 << 4;
  uVar15 = (ulonglong)uVar9;
  uVar13 = uVar13 >> 0x1c ^ uVar9 ^ puVar6[0xd];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0xe];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0xf];
  bVar24 = uVar13 == 0;
  local_50 = uVar20;
  do {
    uVar10 = 0;
    uVar9 = FUN_18072bb81();
    if ((bVar24) && ((uVar10 & 0x41) != 0)) {
      return (ulonglong)
             (CONCAT31((int3)((uVar9 | 0x308eb33) >> 8),(char)(uVar9 | 0x308eb33) + '$') +
             0x7f8d6200);
    }
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    bVar24 = uVar9 == 0;
  } while (!bVar24);
  *local_70 = local_60;
  local_70[1] = uStack_5c;
  local_70[2] = uStack_58;
  local_70[3] = uStack_54;
  local_70[4] = uVar20;
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x10];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x11];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x12];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x13];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x14];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x15];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x16];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x17];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x18];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x19];
  *(undefined8 *)((longlong)param_1 + 0x1c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x24) = 0;
  *(undefined8 *)((longlong)param_1 + 0x2c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x34) = 0;
  *(undefined8 *)((longlong)param_1 + 0x3c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x44) = 0;
  *(undefined8 *)((longlong)param_1 + 0x4c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x54) = 0;
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x1a];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x1b];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x1c];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x1d];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x1e];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x1f];
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x20];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x21];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x22];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x23];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x24];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x25];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x26];
  uVar13 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x27];
  *param_1 = 0;
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  *(undefined8 *)((longlong)param_1 + 0x14) = 0;
  uVar9 = uVar13 >> 0x1c ^ uVar13 << 4 ^ puVar6[0x28];
  uVar13 = uVar9 << 4;
  uVar9 = uVar9 >> 0x1c ^ uVar13 ^ puVar6[0x29];
  uVar9 = uVar9 >> 0x1c ^ uVar9 << 4 ^ puVar6[0x2a];
  do {
    lVar17 = (ulonglong)uVar13 + lVar17 + (lVar17 - ((ulonglong)uVar13 + lVar17));
    uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
    uVar13 = unaff_retaddr;
  } while (uVar16 != 0);
  do {
    puVar11 = &DAT_0000ed10;
    iVar5 = func_0x00018072aade();
    lVar12 = uVar15 + lVar17;
    uVar15 = -(lVar17 - lVar12);
    if (((ulonglong)puVar11 & 0xeb00) == 0) {
      uVar13 = iVar5 + 0xd4b2ad13;
      pbVar1 = puVar11 + -0x75;
      *pbVar1 = *pbVar1 << 1 | (char)*pbVar1 < '\0';
      *(char *)(ulonglong)uVar13 = *(char *)(ulonglong)uVar13 + (char)uVar13;
code_r0x00018072a0e6:
      uVar13 = ((int)puVar11 - 1U | 0xfffffffe) + 1;
    }
    else {
      lVar12 = lVar12 + (lVar17 - lVar12);
      uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      puVar11 = (undefined1 *)(ulonglong)uVar13;
      if ((int)uVar13 < 0) goto code_r0x00018072a0e6;
    }
    lVar17 = lVar12;
    if (uVar13 == 0) {
      uVar13 = puVar6[0x2b];
      do {
        uVar22 = rdtsc();
        uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar16 < 0) {
          uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar16 != 0);
      uVar16 = ((uint)uVar22 ^ (uint)((ulonglong)uVar22 >> 0x20)) * -0x3b3100af;
      local_98 = (uVar16 >> 0x18 ^ uVar16) * -0x3b317a15;
      if (local_98 < 0x2222223) {
        do {
          local_78 = FUN_1813bba80;
          uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
          if ((int)uVar16 < 0) {
            uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
          }
        } while (uVar16 != 0);
        uVar15 = FUN_1813bba80(0,0x315f,uVar15);
        if (1 < uVar15) {
          lVar17 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
          plVar2 = (longlong *)register0x00000020;
          while (lVar17 != -0x3333333333333334) {
            *plVar2 = 0;
            plVar2 = plVar2 + 8;
            lVar17 = *plVar2;
          }
        }
      }
      local_70 = (undefined4 *)0x351943fb79d086cc;
      local_98 = 0x79d086cc;
      do {
        lVar17 = FUN_180728e1c(&DAT_0000ed10);
        lVar18 = lVar12 + lVar21 + lVar17;
        lVar21 = (lVar21 + lVar17) - lVar18;
        lVar12 = -lVar21;
        lVar21 = (lVar18 + lVar21) - lVar17;
        uVar16 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar16 < 0) {
          uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar16 != 0);
      uVar13 = (uVar9 >> 0x1c ^ uVar9 << 4 ^ uVar13) + 0x7cc0190a;
      uVar13 = uVar13 * 0x4000 | uVar13 >> 0x12;
      lVar17 = (longlong)param_1 + 0x1c;
      uVar9 = ~(local_98 & uVar13);
      uVar13 = ~(uVar9 & uVar13);
      uVar15 = (ulonglong)uVar13;
      uVar23 = (uint7)((ulonglong)lVar21 >> 8);
      uVar22 = CONCAT71(uVar23,(~(uVar9 & local_98) & uVar13) == 0xffffffff);
      if ((int)uVar22 == (int)(((ulonglong)uVar23 & 0xffffff) << 4)) {
        FUN_1807275a0(param_1);
        puVar11 = auStack_b8;
        do {
          puVar14 = puVar11;
          *(ulonglong *)(puVar14 + -8) = uVar15;
          *(undefined8 *)(puVar14 + -0x10) = uVar22;
          *(ulonglong *)(puVar14 + -0x18) = uVar7;
          register0x00000020 =
               (BADSPACEBASE *)((-(longlong)register0x00000020 ^ 0xffffffffffffffffU) + 1);
          lVar17 = -(longlong)(int)local_80;
          uVar7 = *(ulonglong *)(puVar14 + lVar17 + 0x5a8);
          uVar22 = *(undefined8 *)(puVar14 + lVar17 + 0x5b0);
          uVar15 = *(ulonglong *)(puVar14 + lVar17 + 0x5b8);
          uVar13 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
          if ((int)uVar13 < 0) {
            uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
          }
          puVar11 = puVar14 + lVar17 + 0x5c0;
        } while (uVar13 != 0);
        *(undefined **)(puVar14 + lVar17 + 0x5b8) = &UNK_18072a4d6;
      }
      FUN_1807275a0(param_1,lVar17);
      lVar17 = lVar17 + uVar7;
      uVar7 = thunk_FUN_1805a9280((longlong)(int)local_7c,
                                  lVar17 - ((((uVar7 - lVar17 ^ 0xffffffffffffffff) + 1) - lVar17 ^
                                            0xffffffffffffffff) + 1));
      return uVar7;
    }
  } while( true );
}



############ FUN_ 180ab8940 size=780 ############

void FUN_180ab8940(void)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  code **ppcVar5;
  longlong unaff_R13;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  code *local_res10 [3];
  
  do {
    uVar2 = rdtsc();
    FUN_180ab6e0c();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20)) * -0x50283b32;
  if ((uVar4 >> 0x18 ^ uVar4) * -0x7a147333 < 0x7507507) {
    local_res10[0] = (code *)0x0;
    do {
      ppcVar5 = local_res10;
      FUN_180ab969b(ppcVar5,local_res10);
      *ppcVar5 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = (*local_res10[0])(0,0x50d1);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
                    /* WARNING: Call to offcut address within same function */
  func_0x000180ab8b50();
                    /* WARNING: Call to offcut address within same function */
  func_0x000180ab8b7e();
                    /* WARNING: Could not recover jumptable at 0x000180ab8c75. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_R13 + 0x2171))();
  return;
}



############ FUN_ 180b38a80 size=1008 ############

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

void FUN_180b38a80(undefined8 *param_1,longlong param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  uint uVar4;
  int iVar5;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_118 [32];
  undefined4 local_f8;
  uint local_f0;
  undefined *local_e8;
  undefined8 local_e0;
  undefined8 local_d0;
  uint local_c8;
  uint local_c4;
  code *local_c0;
  undefined8 *local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 *local_a0;
  undefined8 *local_98;
  longlong local_80;
  undefined8 local_70;
  undefined8 *local_68;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_b8 = param_1;
  local_a8 = param_3;
  local_80 = param_2;
  local_68 = param_1;
  FUN_180a3bf80(param_1,param_2 + 8);
  *param_1 = license_services::LsCachedObjectVectorIlokAuth::vftable;
  param_1[3] = param_2;
  local_a0 = param_1 + 4;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  local_98 = param_1 + 7;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  FUN_180baa320(param_1 + 10,*(undefined4 *)(param_1[3] + 0x38));
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  uVar4 = (uint)&stack0x00000000 & 0x23f;
  iVar5 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  local_c8 = 0x9511 << ((byte)(((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e) & 0x1f) ^
             0x9811;
  uVar4 = (uint)&stack0x00000000 & 0x6dff;
  iVar5 = uVar4 * uVar4 + 1;
  uVar4 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  local_c4 = (int)(-uVar4 | uVar4) >> 0x1f & 0xe17fU ^ 0xee8f;
  local_f8 = 0x811c9e29;
  do {
    uVar2 = rdtsc();
    local_f0 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    FUN_180b3ab61();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_f0 = (local_f0 * -0x73323b32 >> 0x18 ^ local_f0 * -0x73323b32) * -0x3d4d7333;
  if (local_f0 < 0x3333333f) {
    do {
      local_c0 = FUN_1813bba80;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = FUN_1813bba80(0,0xd853);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  local_d0 = 0x180000000;
  local_e0 = 0x180649144;
  local_e8 = &DAT_18064c174;
  local_b0 = local_e0;
  FUN_180b37fd0();
  FUN_180b38ea0();
  FUN_180b38e97();
  return;
}



############ FUN_ 180708bf0 size=3390 ############

/* WARNING: Instruction at (ram,0x0001807091af) overlaps instruction at (ram,0x0001807091ae)
    */
/* WARNING: Removing unreachable block (ram,0x00018070995b) */
/* WARNING: Removing unreachable block (ram,0x000180708ff8) */
/* WARNING: Removing unreachable block (ram,0x000180708da8) */
/* WARNING: Removing unreachable block (ram,0x000180708f49) */
/* WARNING: Removing unreachable block (ram,0x000180708f10) */
/* WARNING: Removing unreachable block (ram,0x00018070910c) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffff70 : 0x00018070910d */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_180708bf0(longlong param_1,ulonglong param_2)

{
  uint uVar1;
  ulonglong uVar2;
  longlong *plVar3;
  undefined8 uVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  longlong lVar8;
  longlong lVar9;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint local_res18;
  uint local_res20 [2];
  uint local_68 [2];
  int *local_60;
  undefined *local_58;
  code *local_50;
  
  local_60 = &DAT_18158dbc8;
  local_58 = &DAT_18158dcc8;
  uVar1 = (((uint)(DAT_18158dbc8 * 0x401) >> 6 ^ DAT_18158dbc8 * 0x401) + DAT_18158dbcc) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbd0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbd4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbd8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbdc) * 0x401;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dbe0 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  do {
    FUN_18070a551();
    FUN_18070aac9();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dbe4 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbe8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbec) * 0x401;
  do {
    FUN_18070cdb8();
    FUN_18070a4a2();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dbf0 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  local_res18 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dbf4) * 0x401;
  local_res18 = local_res18 ^ local_res18 >> 6;
  do {
    local_res18 = local_res18 + DAT_18158dbf8;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = ((local_res18 * 0x401 >> 6 ^ local_res18 * 0x401) + DAT_18158dbfc) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc00) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc04) * 0x401;
  do {
    FUN_18070a4a2();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dc08 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc0c) * 0x401;
  local_res18 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc10) * 0x401;
  local_res18 = local_res18 ^ local_res18 >> 6;
  do {
    local_res18 = local_res18 + DAT_18158dc14;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = ((local_res18 * 0x401 >> 6 ^ local_res18 * 0x401) + DAT_18158dc18) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc1c) * 0x401;
  do {
    uVar2 = 0;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807096fa();
    if ((uVar2 & 0x43) != 0) {
      func_0x0001c8d15ff5();
    }
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dc20 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc24) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc28) * 0x401;
  do {
    uVar4 = rdtsc();
    uVar7 = (uint)((ulonglong)uVar4 >> 0x20);
    lVar8 = CONCAT44((int)((ulonglong)local_res20 >> 0x20),uVar7);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = ((uint)uVar4 ^ uVar7) * -0x7a14e57b;
  local_res20[0] = (uVar5 >> 0x18 ^ uVar5) * 0x5bd15bd1;
  if (local_res20[0] < 0x4e04e07) {
    do {
      lVar8 = 0xb7f3;
      local_50 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar2 = FUN_1813bba80();
    if ((1 < uVar2) && (CONCAT44(unaff_retaddr_00,unaff_retaddr) != -0x3333333333333334)) {
      lVar8 = 0;
      plVar3 = (longlong *)register0x00000020;
      do {
        *plVar3 = 0;
        plVar3 = plVar3 + 8;
      } while (*plVar3 != -0x3333333333333334);
    }
  }
  uVar1 = (DAT_18158dc2c + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc30) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc34) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc38) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc3c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc40) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc44) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc48) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc4c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc50) * 0x401;
  do {
    FUN_18070abd7();
    FUN_180703c12();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dc54 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc58) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc5c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc60) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc64) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc68) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc6c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc70) * 0x401;
  do {
    uVar2 = 0;
    FUN_180709b34();
    param_2 = (param_2 ^ 0xffffffffffffffff) + 1;
    if ((uVar2 & 0x42) == 0) {
      param_2 = -param_2;
    }
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dc74 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc78) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc7c) * 0x401;
  do {
    FUN_180707549(0xd42c);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dc80 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc84) * 0x401;
  do {
    FUN_18070b18d(0xd42c);
    FUN_18070a4a2();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dc88 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc8c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc90) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc94) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc98) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dc9c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dca0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dca4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dca8) * 0x401;
  do {
    FUN_18070be2c();
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807096fa();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dcac + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dcb0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dcb4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dcb8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_18158dcbc) * 0x401;
  do {
    FUN_18070a4a2();
    FUN_180703c12();
    FUN_18070a694();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar1 = (DAT_18158dcc0 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  local_68[0] = ((uVar1 >> 6 ^ uVar1) + DAT_18158dcc4) * 0x401;
  local_68[0] = local_68[0] ^ local_68[0] >> 6;
  do {
    puVar6 = local_68;
    uVar1 = FUN_180698d27();
    *puVar6 = uVar1;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  local_58 = (undefined *)0xdc6b9421506e79ec;
  local_res20[0] = 0x506e79ec;
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = (local_68[0] << 4 | local_68[0] >> 0x1c) + 0xf0a1ca21;
  if ((uVar1 & 0x1fffff) == 0 && uVar1 == 0) {
    do {
      lVar9 = lVar8 + param_2;
      lVar8 = ~(param_2 - lVar9) + 1;
      param_2 = lVar9 - lVar8;
      uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar1 < 0) {
        uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar1 != 0);
    if ((param_1 == 0) || (param_2 == 0)) {
      uVar4 = 99;
    }
    else {
      uVar4 = FUN_180708b20(param_1,param_2,0);
      if ((int)uVar4 == 0) {
        uVar4 = FUN_180708b20(param_1 + 0x24,param_2 + 0x38,0);
      }
    }
    return uVar4;
  }
  uVar4 = thunk_FUN_1805a9280();
  return uVar4;
}



############ FUN_ 180b48ea0 size=1222 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180b48f51) */
/* WARNING: Removing unreachable block (ram,0x000180b48f3a) */
/* WARNING: Removing unreachable block (ram,0x000180b48f29) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180b48ea0(undefined8 *param_1)

{
  longlong lVar1;
  undefined8 uVar2;
  ulonglong uVar3;
  char *pcVar4;
  uint uVar5;
  uint *puVar6;
  undefined8 *puVar7;
  int iVar8;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  undefined *local_a0;
  uint local_98 [2];
  undefined8 local_90;
  undefined8 local_80;
  undefined8 local_78;
  undefined4 local_70;
  uint local_6c;
  code *local_68;
  undefined8 *local_60;
  undefined8 local_58;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  *param_1 = license_services::LsCachedObjectVectorSignedInfo::vftable;
  uVar5 = (uint)&stack0x00000000 & 0x17f;
  iVar8 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  local_6c = (((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e | 0x3a3fU) ^ 0x398f;
  local_70 = 0x470;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_90 = 0x180b51ef0;
  local_a0 = &DAT_180b54c9c;
  local_78 = 0xae89409bf5e82d74;
  local_80 = 0xf5e82d74;
  local_a8 = 0x811c9dc5;
  local_60 = param_1;
  if (param_1[4] != param_1[5]) {
    do {
      puVar7 = *(undefined8 **)(param_1[5] + -8);
      if (puVar7 != (undefined8 *)0x0) {
        (**(code **)*puVar7)(puVar7,1);
      }
      param_1[5] = param_1[5] + -8;
    } while (param_1[4] != param_1[5]);
  }
  do {
    puVar6 = local_98;
    FUN_180b4a375(puVar6,local_98);
    uVar2 = rdtsc();
    *puVar6 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_98[0] = (local_98[0] * -0x13ac13ad >> 0x18 ^ local_98[0] * -0x13ac13ad) * 0x5bd1ae35;
  if (local_98[0] < 0x3333333f) {
    do {
      local_68 = FUN_1813bba80;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar3 = FUN_1813bba80(0,0x54ea);
    if (1 < uVar3) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  do {
    FUN_180b4a0f7();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  iVar8 = 0;
  if (param_1[7] != param_1[8]) {
    do {
      puVar7 = *(undefined8 **)(param_1[8] + -8);
      if (puVar7 != (undefined8 *)0x0) {
        (**(code **)*puVar7)(puVar7,1);
      }
      iVar8 = (int)puVar7;
      param_1[8] = param_1[8] + -8;
    } while (param_1[7] != param_1[8]);
  }
  local_78 = local_90;
                    /* WARNING: Call to offcut address within same function */
  pcVar4 = (char *)func_0x000180b4939f();
  _DAT_10e00f334 = _DAT_10e00f334 + iVar8;
  pcVar4 = (char *)(CONCAT71((int7)((ulonglong)pcVar4 >> 8),(char)pcVar4 + *pcVar4) + -0x7d);
  *pcVar4 = *pcVar4 + (char)iVar8;
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 18083c6b0 size=1169 ############

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

longlong FUN_18083c6b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 *param_4)

{
  undefined8 uVar1;
  longlong lVar2;
  ulonglong uVar3;
  uint *puVar4;
  code **ppcVar5;
  uint uVar6;
  int iVar7;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_c8 [40];
  undefined *local_a0;
  uint local_98;
  uint local_94;
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined4 local_70;
  code *local_68 [4];
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_c8;
  uVar6 = (uint)&stack0x00000000 & 0x23ff;
  iVar7 = uVar6 * uVar6 + 1;
  uVar6 = iVar7 * 0x24924924 + (iVar7 >> 4) + (iVar7 >> 1) >> 0x1d;
  if (((int)(uVar6 - 7) >> 0x1f & uVar6 & 0xe80) == 0) {
    local_94 = 0;
  }
  else {
    uVar6 = (uint)&stack0x00000000 & 0x23f;
    local_94 = ((uVar6 + 2) * (uVar6 + 1) * uVar6) % 3;
  }
  local_94 = local_94 ^ 0x3f0;
  *param_4 = 0xfffffffe;
  local_70 = 0xb20;
  local_80 = 0;
  local_88 = 0x83caa0;
  local_78 = 0x18083caa0;
  local_a0 = &DAT_18083f4d4;
  lVar2 = FUN_1808460a0(param_1);
  FUN_18080ca00(param_1,*(undefined1 *)(lVar2 + 400),"systemMachine");
  do {
    puVar4 = &local_98;
    FUN_18083e98f(puVar4,&local_98);
    uVar1 = rdtsc();
    *puVar4 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  local_98 = (local_98 * -0x46013b32 >> 0x18 ^ local_98 * -0x46013b32) * -0x166a4602;
  if (local_98 < 0x3333333f) {
    local_68[0] = (code *)0x0;
    do {
      ppcVar5 = local_68;
      func_0x00018083bb78(ppcVar5,local_68);
      *ppcVar5 = FUN_1813bba80;
      FUN_18083e06d();
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar3 = (*local_68[0])();
    if (1 < uVar3) {
      lVar2 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar2 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar2 = *(longlong *)register0x00000020;
      }
    }
  }
  do {
    FUN_18083b7ba(0xe018);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  return ~(~(ulonglong)local_a0 + 1) + 1;
}



############ FUN_ 1800018e0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615a88)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001cd0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615fc8)[DAT_1826159a0])();
  return;
}



############ FUN_ 18052d990 size=97 ############

void FUN_18052d990(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_1,param_3);
}



############ FUN_ 18052e260 size=577 ############

undefined8 FUN_18052e260(longlong param_1,int param_2)

{
  undefined8 uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  undefined8 uVar7;
  longlong lVar8;
  longlong *plVar9;
  undefined4 uVar10;
  
  iVar5 = *(int *)(param_1 + 100) / 2 + 1;
  if (*(char *)(param_1 + 0x240464) != '\0') {
    *(undefined1 *)(param_1 + 0x240464) = 0;
    FUN_18052fbd0(param_1 + 0x3d8);
  }
  uVar1 = *(undefined8 *)(param_1 + 0x540788);
  iVar4 = *(int *)(param_1 + 0x2404d8);
  if (iVar4 < 1) {
    if (*(char *)(param_1 + 0x5408ad) != '\0') {
      *(undefined1 *)(param_1 + 0x5408ad) = 0;
      *(int *)(param_1 + 0x2404d8) = iVar5;
    }
    return 0;
  }
  iVar2 = iVar5;
  if (iVar4 < iVar5) {
    iVar2 = iVar4;
  }
  *(int *)(param_1 + 0x2404d8) = iVar2;
  if (iVar2 < param_2) {
    param_2 = iVar2;
  }
  uVar6 = 0;
  if (0 < *(int *)(param_1 + 0x2404d0)) {
    plVar9 = (longlong *)(param_1 + 0x5407e8);
    lVar8 = 0;
    do {
      if (uVar6 < *(uint *)(param_1 + 0x444)) {
        uVar7 = *(undefined8 *)(lVar8 + *(longlong *)(param_1 + 0x438));
      }
      else {
        uVar7 = 0;
      }
      FUN_180536300(param_1 + 0x3d8,*plVar9 + (longlong)(iVar5 - iVar2) * 4,
                    *(longlong *)(param_1 + 0x540758) + (longlong)(iVar5 - iVar2) * 4,uVar7,param_2)
      ;
      uVar6 = uVar6 + 1;
      plVar9 = plVar9 + 2;
      lVar8 = lVar8 + 8;
    } while ((int)uVar6 < *(int *)(param_1 + 0x2404d0));
  }
  *(int *)(param_1 + 0x2404d8) = *(int *)(param_1 + 0x2404d8) - param_2;
  if ((*(int *)(param_1 + 0x2404d8) < 1) && (0 < *(int *)(param_1 + 0x30))) {
    expf(DAT_1824c4208);
    uVar3 = DAT_1824c3ea4;
    uVar10 = (undefined4)DAT_1824c4140;
    iVar4 = __std_type_info_compare(0x182650db8,0x182650db8);
    if (iVar4 != 0) {
                    /* WARNING: Subroutine does not return */
      thunk_FUN_181ba94b0(uVar10,uVar1,iVar5);
    }
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(uVar3);
  }
  return 1;
}



############ FUN_ 180496c40 size=396 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180496c40(longlong param_1,undefined8 param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined1 local_51 [32];
  undefined1 local_31;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_a8 = param_2;
  lVar2 = FUN_181233e10(local_51 + 1,*(undefined4 *)(param_1 + 0xc));
  FUN_180495150(&local_88,lVar2,local_51 + -lVar2);
  lVar2 = FUN_181233e10(&local_30,*(undefined4 *)(param_1 + 8));
  FUN_180495150(&local_a0,lVar2,&local_31 + -lVar2);
  local_80 = &local_a0;
  FUN_181232e20(&local_a0,&DAT_1824968fc,&DAT_1824968fd);
  local_98 = local_a0;
  if ((*(uint *)(local_a0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_a0 + -0x10) = *(int *)(local_a0 + -0x10) + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(local_a0 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  plVar3 = (longlong *)FUN_181232aa0(&local_a8,&local_98,&local_88);
  local_80 = plVar3;
  FUN_181232e20(plVar3,": error: ","");
  local_90 = *plVar3;
  if ((*(uint *)(local_90 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_90 + -0x10) = *(int *)(local_90 + -0x10) + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(*plVar3 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_181232aa0(param_2,&local_90,param_1);
  puVar4 = (uint *)(local_88 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
}



############ FUN_ 180475070 size=469 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180475070(undefined8 param_1,longlong param_2)

{
  byte bVar1;
  longlong lVar2;
  byte *pbVar3;
  uint *_Memory;
  uint uVar4;
  int iVar5;
  bool bVar6;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  byte *local_48;
  byte *local_40;
  undefined8 local_38;
  undefined1 local_11;
  ulonglong local_10;
  
  local_38 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_58 = 0;
  lVar2 = __RTDynamicCast(param_2,0,&juce::AudioProcessorParameter::RTTI_Type_Descriptor,
                          &juce::LegacyAudioParameter::RTTI_Type_Descriptor);
  if (lVar2 == 0) {
    local_58 = 0;
    lVar2 = __RTDynamicCast(param_2,0,&juce::AudioProcessorParameter::RTTI_Type_Descriptor,
                            &juce::AudioProcessorParameterWithID::RTTI_Type_Descriptor);
    if (lVar2 == 0) {
      lVar2 = FUN_181233e10(&local_10,*(undefined4 *)(param_2 + 0x10));
      FUN_180495150(&local_48,lVar2,&local_11 + -lVar2);
    }
    else {
      local_48 = *(byte **)(lVar2 + 0x60);
      if ((*(uint *)(local_48 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
        UNLOCK();
      }
    }
  }
  else {
    (**(code **)(**(longlong **)(lVar2 + 8) + 0x188))
              (*(longlong **)(lVar2 + 8),&local_40,*(undefined4 *)(lVar2 + 0x10));
    local_48 = local_40;
    local_40 = &DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar4 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar6 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar4;
      if (bVar6) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  bVar1 = *local_48;
  pbVar3 = local_48;
  do {
    if (bVar1 == 0) {
      _Memory = (uint *)(local_48 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar4 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
    bVar1 = *pbVar3;
    pbVar3 = pbVar3 + 1;
    if ((char)bVar1 < '\0') {
      uVar4 = 0x40;
      iVar5 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar4 < 9) break;
          iVar5 = iVar5 + 1;
          uVar4 = uVar4 >> 1;
        } while ((bVar1 & uVar4) != 0);
      }
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*pbVar3 & 0xc0) == 0x80)); pbVar3 = pbVar3 + 1) {
      }
    }
    bVar1 = *pbVar3;
  } while( true );
}



############ FUN_ 1812214e0 size=536 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812214e0(longlong *param_1,undefined8 *param_2,char param_3)

{
  uint uVar1;
  longlong lVar2;
  code *pcVar3;
  uint uVar4;
  int iVar5;
  byte *pbVar6;
  byte bVar7;
  undefined1 auStack_78 [32];
  byte local_58 [39];
  undefined1 local_31;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  pbVar6 = (byte *)*param_2;
LAB_181221520:
  bVar7 = *pbVar6;
  pbVar6 = pbVar6 + 1;
  uVar4 = (uint)bVar7;
  if ((char)bVar7 < '\0') {
    uVar1 = 0x40;
    iVar5 = 0;
    uVar4 = 0x7f;
    if ((bVar7 & 0x40) != 0) {
      do {
        if (uVar1 < 9) break;
        uVar4 = uVar4 >> 1;
        iVar5 = iVar5 + 1;
        uVar1 = uVar1 >> 1;
      } while ((bVar7 & uVar1) != 0);
    }
    uVar4 = bVar7 & uVar4;
    for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*pbVar6 & 0xc0) == 0x80)); pbVar6 = pbVar6 + 1) {
      uVar4 = *pbVar6 & 0x3f | uVar4 << 6;
    }
  }
  if (uVar4 == 0) {
  }
  bVar7 = (byte)uVar4;
  if ((uVar4 < 0x80) && (((&DAT_182496020)[uVar4 >> 3] & (byte)(1 << (bVar7 & 7))) != 0)) {
    lVar2 = *param_1;
    pcVar3 = *(code **)(lVar2 + 0x28);
    if (pcVar3 != FUN_18122e9b0) {
LAB_1812216fe:
      (*pcVar3)(param_1);
      goto LAB_181221520;
    }
  }
  else {
    switch(uVar4) {
    case 10:
    case 0xd:
      if (param_3 == '\0') {
        lVar2 = *param_1;
        pcVar3 = *(code **)(lVar2 + 0x28);
        if (pcVar3 != FUN_18122e9b0) goto LAB_1812216fe;
        break;
      }
    default:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_1821db4d0,2);
      lVar2 = FUN_181233e10(&local_30,uVar4);
      (**(code **)(*param_1 + 0x20))(param_1,lVar2,&local_31 + -lVar2);
      lVar2 = *param_1;
      if (*(code **)(lVar2 + 0x28) != FUN_18122e9b0) {
        (**(code **)(lVar2 + 0x28))(param_1);
        goto LAB_181221520;
      }
      local_58[0] = 0x3b;
      bVar7 = local_58[0];
      break;
    case 0x22:
      (**(code **)(*param_1 + 0x20))(param_1,"&quot;",6);
      goto LAB_181221520;
    case 0x26:
      (**(code **)(*param_1 + 0x20))(param_1,"&amp;",5);
      goto LAB_181221520;
    case 0x3c:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_1821db4d4,4);
      goto LAB_181221520;
    case 0x3e:
      goto switchD_1812215e8_caseD_3e;
    }
  }
  local_58[0] = bVar7;
  (**(code **)(lVar2 + 0x20))(param_1,local_58,1);
  goto LAB_181221520;
switchD_1812215e8_caseD_3e:
  (**(code **)(*param_1 + 0x20))(param_1,&DAT_1821db4c0,4);
  goto LAB_181221520;
}



############ FUN_ 1804958a0 size=77 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804958a0(undefined8 param_1,undefined8 param_2,undefined4 *param_3)

{
  longlong lVar1;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined1 local_11;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_38 = param_2;
  lVar1 = FUN_181233e10(&local_10,*param_3);
  FUN_180495150(param_2,lVar1,&local_11 + -lVar1);
}



############ FUN_ 1812138f0 size=1931 ############

void FUN_1812138f0(longlong param_1,undefined8 *param_2,void **param_3)

{
  longlong *plVar1;
  char cVar2;
  longlong lVar3;
  void **ppvVar4;
  void *pvVar5;
  int iVar6;
  ulonglong *puVar7;
  undefined4 *puVar8;
  undefined8 uVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  void *pvVar12;
  uint *puVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  uint uVar16;
  longlong *plVar17;
  char *_Src;
  undefined1 **ppuVar18;
  undefined1 auStack_158 [32];
  undefined **local_138;
  undefined1 local_130 [8];
  void **local_128;
  void *local_120;
  undefined8 local_118;
  undefined8 local_110;
  undefined8 local_108;
  void *local_100;
  undefined8 local_f8;
  undefined4 *local_e8;
  undefined **local_e0;
  longlong local_d8;
  HANDLE local_d0;
  char *local_c0;
  longlong local_b8;
  undefined8 local_b0;
  undefined1 local_a8 [64];
  undefined1 local_68 [30];
  char local_4a [2];
  undefined8 local_48;
  char cStack_39;
  
  local_b0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_138 = juce::OutputStream::vftable;
  FUN_18049c4e0(local_130,&DAT_182496878);
  local_138 = juce::MemoryOutputStream::vftable;
  uVar16 = 0;
  local_120 = (void *)0x0;
  local_118 = 0;
  local_110 = 0;
  local_108 = 0;
  local_100 = (void *)0x0;
  local_f8 = 0;
  local_128 = param_3;
  if (*(int *)(param_1 + 0x44) < 1) {
    puVar10 = (undefined8 *)FUN_181214eb0(&local_b8,param_1);
    uVar9 = *puVar10;
    uVar11 = FUN_18049d240(uVar9);
    (*(code *)local_138[4])(&local_138,uVar9,uVar11);
    if (*(longlong *)(param_1 + 0x10) != 0) {
      (*(code *)local_138[4])(&local_138,*(undefined8 *)(param_1 + 8));
    }
    puVar13 = (uint *)(local_b8 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar16 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    iVar6 = FUN_18049d2f0(*param_2,"Content-Type");
    if (iVar6 < 0) {
      FUN_181232e20(param_2,"Content-Type: application/x-www-form-urlencoded\r\n","");
    }
    pvVar5 = local_100;
    FUN_181232e20(param_2,"Content-length: ","");
    uVar9 = FUN_181233e10(local_68,(ulonglong)pvVar5 & 0xffffffff);
    FUN_181232e20(param_2,uVar9,local_68);
    FUN_181232e20(param_2,&DAT_1821dbc3c,&DAT_1821dbc3e);
  }
  else {
    puVar7 = (ulonglong *)FUN_18123aca0();
    uVar14 = *puVar7 * 0x5deece66d + 0xb & 0xffffffffffff;
    uVar15 = uVar14 * 0x5deece66d + 0xb & 0xffffffffffff;
    *puVar7 = uVar15;
    uVar14 = ((longlong)uVar14 >> 0x10) << 0x20 | (longlong)uVar15 >> 0x10;
    _Src = local_4a + 1;
    local_4a[1] = 0;
    do {
      _Src = _Src + -1;
      cVar2 = "0123456789abcdef"[(uint)uVar14 & 0xf];
      *_Src = cVar2;
      uVar14 = uVar14 >> 4;
    } while (uVar14 != 0);
    if (cVar2 == '\0') {
      local_e8 = (undefined4 *)&DAT_1821dbf98;
    }
    else {
      uVar14 = (longlong)&local_48 + -(longlong)_Src + 3 & 0xfffffffffffffffc;
      puVar8 = (undefined4 *)thunk_FUN_1811316e0(uVar14 + 0x17);
      LOCK();
      *puVar8 = 0;
      UNLOCK();
      *(ulonglong *)(puVar8 + 2) = uVar14;
      puVar8 = puVar8 + 4;
      memcpy(puVar8,_Src,(size_t)(local_4a + -(longlong)_Src + 1));
      *(char *)((longlong)puVar8 + (longlong)(local_4a + -(longlong)_Src + 1)) = '\0';
      local_e8 = puVar8;
    }
    puVar8 = local_e8;
    FUN_181232e20(param_2,"Content-Type: multipart/form-data; boundary=","");
    uVar9 = FUN_181232d30(param_2,&local_e8);
    FUN_181232e20(uVar9,&DAT_1821dbb54,&DAT_1821dbb56);
    (*(code *)local_138[4])(&local_138,&DAT_1821dbb7c,2);
    uVar9 = FUN_18049d240(puVar8);
    (*(code *)local_138[4])(&local_138,puVar8,uVar9);
    if (0 < *(int *)(param_1 + 0x24)) {
      plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
      do {
        if (uVar16 < *(uint *)(param_1 + 0x34)) {
          ppuVar18 = (undefined1 **)(*(longlong *)(param_1 + 0x28) + (longlong)(int)uVar16 * 8);
        }
        else {
          if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar18 = &DAT_18267af68;
        }
        (*(code *)local_138[4])(&local_138,"\r\nContent-Disposition: form-data; name=\"",0x28);
        puVar10 = (undefined8 *)FUN_181249970(param_1 + 0x18,uVar16);
        uVar9 = *puVar10;
        uVar11 = FUN_18049d240(uVar9);
        (*(code *)local_138[4])(&local_138,uVar9,uVar11);
        (*(code *)local_138[4])(&local_138,"\"\r\n\r\n",5);
        uVar9 = FUN_18049d240(*ppuVar18);
        (*(code *)local_138[4])(&local_138,*ppuVar18,uVar9);
        (*(code *)local_138[4])(&local_138,&DAT_1821dbbd8,4);
        uVar9 = FUN_18049d240(puVar8);
        (*(code *)local_138[4])(&local_138,puVar8,uVar9);
        uVar16 = uVar16 + 1;
      } while ((int)uVar16 < *(int *)(param_1 + 0x24));
    }
    plVar17 = *(longlong **)(param_1 + 0x38);
    plVar1 = plVar17 + *(int *)(param_1 + 0x44);
    for (; plVar17 != plVar1; plVar17 = plVar17 + 1) {
      lVar3 = *plVar17;
      (*(code *)local_138[4])(&local_138,"\r\nContent-Disposition: form-data; name=\"",0x28);
      uVar9 = FUN_18049d240(*(undefined8 *)(lVar3 + 0x10));
      (*(code *)local_138[4])(&local_138,*(undefined8 *)(lVar3 + 0x10),uVar9);
      (*(code *)local_138[4])(&local_138,"\"; filename=\"",0xd);
      uVar9 = FUN_18049d240(*(undefined8 *)(lVar3 + 0x18));
      (*(code *)local_138[4])(&local_138,*(undefined8 *)(lVar3 + 0x18),uVar9);
      (*(code *)local_138[4])(&local_138,&DAT_1821dbba4,3);
      if (**(char **)(lVar3 + 0x20) != '\0') {
        (*(code *)local_138[4])(&local_138,"Content-Type: ",0xe);
        uVar9 = FUN_18049d240(*(undefined8 *)(lVar3 + 0x20));
        (*(code *)local_138[4])(&local_138,*(undefined8 *)(lVar3 + 0x20),uVar9);
        (*(code *)local_138[4])(&local_138,&DAT_1821dbc0c,2);
      }
      (*(code *)local_138[4])(&local_138,"Content-Transfer-Encoding: binary\r\n\r\n",0x25);
      puVar10 = *(undefined8 **)(lVar3 + 0x30);
      if (puVar10 == (undefined8 *)0x0) {
        FUN_18123efe0(&local_e0,lVar3 + 0x28);
        if (*local_c0 == '\0') {
          (*(code *)local_138[0x15])(&local_138,&local_e0,0xffffffffffffffff);
          local_e0 = juce::FileInputStream::vftable;
          CloseHandle(local_d0);
          puVar13 = (uint *)(local_c0 + -0x10);
          if ((*puVar13 & 0x30000000) == 0) {
            LOCK();
            uVar16 = *puVar13;
            *puVar13 = *puVar13 - 1;
            UNLOCK();
            if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar13);
            }
          }
          puVar13 = (uint *)(local_d8 + -0x10);
          puVar8 = local_e8;
          if ((*puVar13 & 0x30000000) == 0) {
            LOCK();
            uVar16 = *puVar13;
            *puVar13 = *puVar13 - 1;
            UNLOCK();
            if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar13);
            }
          }
        }
        else {
          local_e0 = juce::FileInputStream::vftable;
          CloseHandle(local_d0);
          puVar13 = (uint *)(local_c0 + -0x10);
          if ((*puVar13 & 0x30000000) == 0) {
            LOCK();
            uVar16 = *puVar13;
            *puVar13 = *puVar13 - 1;
            UNLOCK();
            if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar13);
            }
          }
          puVar13 = (uint *)(local_d8 + -0x10);
          puVar8 = local_e8;
          if ((*puVar13 & 0x30000000) == 0) {
            LOCK();
            uVar16 = *puVar13;
            *puVar13 = *puVar13 - 1;
            UNLOCK();
            if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar13);
            }
          }
        }
      }
      else if (puVar10[1] != 0) {
        (*(code *)local_138[4])(&local_138,*puVar10);
      }
      (*(code *)local_138[4])(&local_138,&DAT_1821dbc60,4);
      uVar9 = FUN_18049d240(puVar8);
      (*(code *)local_138[4])(&local_138,puVar8,uVar9);
    }
    (*(code *)local_138[4])(&local_138,&DAT_1821dbca0,4);
    puVar13 = puVar8 + -4;
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar16 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
  }
  pvVar5 = local_100;
  ppvVar4 = local_128;
  local_138 = juce::MemoryOutputStream::vftable;
  if (((local_128 != &local_120) && (local_128 != (void **)0x0)) && (local_128[1] != local_100)) {
    pvVar12 = *local_128;
    if (local_100 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar12);
    }
    if (pvVar12 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
    if (pvVar12 == (void *)0x0) {
      pvVar12 = malloc((size_t)local_100);
    }
    else {
      pvVar12 = realloc(pvVar12,(size_t)local_100);
    }
    *ppvVar4 = pvVar12;
    if (pvVar12 == (void *)0x0) {
      FUN_1804719e0(local_a8);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_a8,(ThrowInfo *)&DAT_1825fec68);
    }
    ppvVar4[1] = pvVar5;
  }
                    /* WARNING: Subroutine does not return */
  free(local_120);
}



############ FUN_ 181337fe0 size=2420 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181337fe0(int *param_1,longlong *param_2)

{
  uint uVar1;
  wint_t wVar2;
  int *piVar3;
  longlong lVar4;
  void *_Src;
  longlong lVar5;
  undefined8 uVar6;
  int iVar7;
  uint *puVar8;
  char *pcVar9;
  undefined1 *puVar10;
  longlong lVar11;
  size_t sVar12;
  int iVar13;
  char *pcVar14;
  bool bVar15;
  undefined1 auStack_118 [32];
  undefined1 *local_f8;
  char local_f0 [4];
  undefined2 local_ec;
  char local_e8 [4];
  undefined2 local_e4;
  char local_e0 [20];
  undefined2 local_cc;
  undefined1 *local_c8;
  longlong *local_c0;
  longlong local_b8;
  undefined8 local_b0;
  char *local_a8;
  char *local_a0;
  char *local_98;
  char *local_90;
  undefined1 local_78 [16];
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  ulonglong local_48 [2];
  
  local_b0 = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_118;
  local_c0 = param_2;
  local_f8 = &DAT_1821dbf98;
  puVar10 = &DAT_1821dbf98;
  if (0 < *param_1) {
    if ((param_1[2] == 0x2f) && (*param_1 != 0x1006f)) {
      FUN_18049c4e0(param_2,&DAT_1821e29ec);
      puVar8 = (uint *)(local_f8 + -0x10);
      if ((*puVar8 & 0x30000000) != 0) {
      }
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 != 0) {
      }
      goto LAB_18133871a;
    }
    if (((uint)param_1[1] >> 1 & 1) != 0) {
      lVar11 = -1;
      do {
        lVar5 = lVar11;
        lVar11 = lVar5 + 1;
      } while ((&DAT_1821dbf99)[lVar5] != '\0');
      FUN_1812342b0(&local_f8,lVar5 + 8);
      puVar10 = local_f8 + (int)(lVar5 + 1);
      memcpy(puVar10,&DAT_1821e3e00,7);
      puVar10[7] = 0;
    }
    if ((*(byte *)(param_1 + 1) & 1) != 0) {
      lVar11 = -1;
      do {
        lVar5 = lVar11;
        lVar11 = lVar5 + 1;
      } while (local_f8[lVar11] != '\0');
      FUN_1812342b0(&local_f8,lVar5 + 9);
      puVar10 = local_f8 + (int)lVar11;
      memcpy(puVar10,&DAT_1821e3e30,8);
      puVar10[8] = 0;
    }
    if (((uint)param_1[1] >> 2 & 1) != 0) {
      lVar11 = -1;
      do {
        lVar5 = lVar11;
        lVar11 = lVar5 + 1;
      } while (local_f8[lVar11] != '\0');
      FUN_1812342b0(&local_f8,lVar5 + 7);
      puVar10 = local_f8 + (int)lVar11;
      memcpy(puVar10,&DAT_1821e2b5c,6);
      puVar10[6] = 0;
    }
    iVar13 = 0;
    iVar7 = *param_1;
    piVar3 = &DAT_18262b5d8;
    do {
      if (iVar7 == *piVar3) {
        if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
          UNLOCK();
        }
        local_c8 = local_f8;
        FUN_1812465e0(param_2,&local_c8,(&PTR_s_spacebar_18262b5d0)[(longlong)iVar13 * 2]);
        puVar8 = (uint *)(local_f8 + -0x10);
        if ((*puVar8 & 0x30000000) != 0) {
        }
        LOCK();
        uVar1 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar1 != 0) {
        }
        goto LAB_18133871a;
      }
      iVar13 = iVar13 + 1;
      piVar3 = piVar3 + 4;
    } while ((longlong)piVar3 < 0x18262b708);
    if (iVar7 - 0x10070U < 0x10) {
      local_f0[0] = 'F';
      local_f0[1] = '\0';
      lVar11 = -1;
      do {
        lVar4 = lVar11 + 1;
        lVar5 = lVar11 + 1;
        lVar11 = lVar4;
      } while (local_f0[lVar5] != '\0');
      iVar7 = ((int)local_f0 + (int)lVar4) - (int)local_f0;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        sVar12 = (size_t)iVar7;
        FUN_1812342b0(&local_f8,sVar12 + lVar11);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,local_f0,sVar12);
        puVar10[sVar12] = 0;
      }
      _Src = (void *)FUN_181233e10(local_78,*param_1 + -0x1006f);
      iVar7 = (int)local_78 - (int)_Src;
      puVar10 = local_f8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
LAB_18133846f:
        sVar12 = (size_t)iVar7;
        FUN_1812342b0(&local_f8,sVar12 + lVar11);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,_Src,sVar12);
        puVar10[sVar12] = 0;
        puVar10 = local_f8;
      }
    }
    else if (iVar7 - 0x10080U < 8) {
      local_ec = 0x46;
      lVar11 = -1;
      do {
        lVar4 = lVar11 + 1;
        lVar5 = lVar11 + 1;
        lVar11 = lVar4;
      } while (*(char *)((longlong)&local_ec + lVar5) != '\0');
      iVar7 = ((int)&local_ec + (int)lVar4) - (int)&local_ec;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        sVar12 = (size_t)iVar7;
        FUN_1812342b0(&local_f8,sVar12 + lVar11);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,&local_ec,sVar12);
        puVar10[sVar12] = 0;
      }
      _Src = (void *)FUN_181233e10(local_68,*param_1 + -0x1006f);
      iVar7 = (int)local_68 - (int)_Src;
      puVar10 = local_f8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        goto LAB_18133846f;
      }
    }
    else if (iVar7 - 0x31000U < 0xb) {
      local_e8[0] = 'F';
      local_e8[1] = '\0';
      lVar11 = -1;
      do {
        lVar4 = lVar11 + 1;
        lVar5 = lVar11 + 1;
        lVar11 = lVar4;
      } while (local_e8[lVar5] != '\0');
      iVar7 = ((int)local_e8 + (int)lVar4) - (int)local_e8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        sVar12 = (size_t)iVar7;
        FUN_1812342b0(&local_f8,sVar12 + lVar11);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,local_e8,sVar12);
        puVar10[sVar12] = 0;
      }
      _Src = (void *)FUN_181233e10(local_58,*param_1 + -0x30fe7);
      iVar7 = (int)local_58 - (int)_Src;
      puVar10 = local_f8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        goto LAB_18133846f;
      }
    }
    else if (iVar7 - 0x10060U < 10) {
      lVar11 = -1;
      do {
        lVar5 = lVar11;
        lVar11 = lVar5 + 1;
      } while (local_f8[lVar11] != '\0');
      FUN_1812342b0(&local_f8,lVar5 + 8);
      puVar10 = local_f8 + (int)lVar11;
      memcpy(puVar10,"numpad ",7);
      puVar10[7] = 0;
      _Src = (void *)FUN_181233e10(local_48,*param_1 + -0x10060);
      iVar7 = (int)local_48 - (int)_Src;
      puVar10 = local_f8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        goto LAB_18133846f;
      }
    }
    else if (iVar7 - 0x21U < 0x8f) {
      wVar2 = towupper((wint_t)iVar7);
      FUN_181232b70(&local_f8,wVar2);
      puVar10 = local_f8;
    }
    else if (iVar7 == 0x1006b) {
      lVar11 = -1;
      do {
        lVar5 = lVar11;
        lVar11 = lVar5 + 1;
      } while (local_f8[lVar11] != '\0');
      FUN_1812342b0(&local_f8,lVar5 + 8);
      puVar10 = local_f8 + (int)lVar11;
      memcpy(puVar10,"numpad ",7);
      puVar10[7] = 0;
      local_e4 = 0x2b;
      lVar11 = -1;
      do {
        lVar4 = lVar11 + 1;
        lVar5 = lVar11 + 1;
        lVar11 = lVar4;
      } while (*(char *)((longlong)&local_e4 + lVar5) != '\0');
      iVar7 = ((int)&local_e4 + (int)lVar4) - (int)&local_e4;
      puVar10 = local_f8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        sVar12 = (size_t)iVar7;
        FUN_1812342b0(&local_f8,sVar12 + lVar11);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,&local_e4,sVar12);
        puVar10[sVar12] = 0;
        puVar10 = local_f8;
      }
    }
    else if (iVar7 == 0x1006d) {
      lVar11 = -1;
      do {
        lVar5 = lVar11;
        lVar11 = lVar5 + 1;
      } while (local_f8[lVar11] != '\0');
      FUN_1812342b0(&local_f8,lVar5 + 8);
      puVar10 = local_f8 + (int)lVar11;
      memcpy(puVar10,"numpad ",7);
      puVar10[7] = 0;
      local_e0[0] = '-';
      local_e0[1] = '\0';
      lVar11 = -1;
      do {
        lVar4 = lVar11 + 1;
        lVar5 = lVar11 + 1;
        lVar11 = lVar4;
      } while (local_e0[lVar5] != '\0');
      iVar7 = ((int)local_e0 + (int)lVar4) - (int)local_e0;
      puVar10 = local_f8;
      if (0 < iVar7) {
        lVar11 = -1;
        do {
          lVar11 = lVar11 + 1;
        } while (local_f8[lVar11] != '\0');
        sVar12 = (size_t)iVar7;
        FUN_1812342b0(&local_f8,lVar11 + sVar12);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,local_e0,sVar12);
        puVar10[sVar12] = 0;
        puVar10 = local_f8;
      }
    }
    else {
      if (iVar7 == 0x1006a) {
        lVar11 = -1;
        do {
          lVar5 = lVar11;
          lVar11 = lVar5 + 1;
        } while (local_f8[lVar11] != '\0');
        FUN_1812342b0(&local_f8,lVar5 + 8);
        puVar10 = local_f8 + (int)lVar11;
        memcpy(puVar10,"numpad ",7);
        puVar10[7] = 0;
        local_e0[4] = '*';
        local_e0[5] = '\0';
        lVar11 = -1;
        do {
          lVar5 = lVar11;
          lVar11 = lVar5 + 1;
        } while (local_e0[lVar5 + 5] != '\0');
        pcVar14 = local_e0 + lVar5 + 5;
        pcVar9 = local_e0 + 4;
        local_a8 = pcVar14;
      }
      else if (iVar7 == 0x1006f) {
        FUN_181232e20(&local_f8,"numpad ","");
        local_e0[8] = '/';
        local_e0[9] = '\0';
        lVar11 = -1;
        do {
          lVar5 = lVar11;
          lVar11 = lVar5 + 1;
        } while (local_e0[lVar5 + 9] != '\0');
        pcVar14 = local_e0 + lVar5 + 9;
        pcVar9 = local_e0 + 8;
        local_a0 = pcVar14;
      }
      else if (iVar7 == 0x1006c) {
        FUN_181232e20(&local_f8,"numpad ","");
        pcVar14 = "";
        pcVar9 = "separator";
      }
      else if (iVar7 == 0x1006e) {
        FUN_181232e20(&local_f8,"numpad ","");
        local_e0[0xc] = '.';
        local_e0[0xd] = '\0';
        lVar11 = -1;
        do {
          lVar5 = lVar11;
          lVar11 = lVar5 + 1;
        } while (local_e0[lVar5 + 0xd] != '\0');
        pcVar14 = local_e0 + lVar5 + 0xd;
        pcVar9 = local_e0 + 0xc;
        local_98 = pcVar14;
      }
      else if (iVar7 == 0x10092) {
        FUN_181232e20(&local_f8,"numpad ","");
        local_e0[0x10] = '=';
        local_e0[0x11] = '\0';
        lVar11 = -1;
        do {
          lVar5 = lVar11;
          lVar11 = lVar5 + 1;
        } while (local_e0[lVar5 + 0x11] != '\0');
        pcVar14 = local_e0 + lVar5 + 0x11;
        pcVar9 = local_e0 + 0x10;
        local_90 = pcVar14;
      }
      else {
        if (iVar7 != 0x1002e) {
          uVar6 = FUN_18049bd10(&local_c0,iVar7);
          local_cc = 0x23;
          lVar11 = -1;
          do {
            lVar5 = lVar11;
            lVar11 = lVar5 + 1;
          } while (*(char *)((longlong)&local_cc + lVar5 + 1) != '\0');
          local_b8 = (longlong)&local_cc + lVar5 + 1;
          FUN_181232e20(&local_f8,&local_cc);
          FUN_181232d30(&local_f8,uVar6);
          puVar8 = (uint *)(local_c0 + -2);
          puVar10 = local_f8;
          if ((*puVar8 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
          goto LAB_1813386eb;
        }
        FUN_181232e20(&local_f8,"numpad ","");
        pcVar14 = "";
        pcVar9 = "delete";
      }
      FUN_181232e20(&local_f8,pcVar9,pcVar14);
      puVar10 = local_f8;
    }
  }
LAB_1813386eb:
  *param_2 = (longlong)puVar10;
  local_f8 = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    UNLOCK();
    bVar15 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = DAT_1821dbf88 - 1;
    if (bVar15) {
      puVar8 = &DAT_1821dbf88;
      DAT_1821dbf88 = 0xffffffff;
LAB_18133871a:
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
}



############ FUN_ 180528f40 size=550 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180528f40(longlong *param_1)

{
  uint uVar1;
  undefined8 uVar2;
  longlong lVar3;
  longlong *plVar4;
  uint *puVar5;
  uint *_Memory;
  int iVar6;
  undefined1 auStack_b8 [48];
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  undefined8 local_58;
  undefined8 local_50;
  longlong *local_48;
  longlong *local_40;
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_58 = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_50 = FUN_18113e800(param_1,0xa086d479,&DAT_1824ac560,0xe);
  uVar2 = FUN_18119aa60(*param_1 + 0x178,local_50);
  FUN_1811afd70(uVar2);
  iVar6 = 0;
  local_48 = &local_88;
  local_40 = &local_80;
  do {
    uVar2 = FUN_18113e800();
    FUN_18049c4e0(&local_70,uVar2);
    lVar3 = FUN_181233e10(local_18,iVar6);
    FUN_180495150(&local_78,lVar3,&local_19 + -lVar3);
    uVar2 = FUN_18113e800();
    FUN_18049c4e0(&local_88,uVar2);
    plVar4 = (longlong *)FUN_181232d30(&local_88,&local_78);
    local_80 = *plVar4;
    if ((*(uint *)(local_80 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_80 + -0x10) = *(int *)(local_80 + -0x10) + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(local_88 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    plVar4 = (longlong *)FUN_181232d30(&local_80,&local_70);
    local_68 = *plVar4;
    puVar5 = (uint *)(local_68 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      *puVar5 = *puVar5 + 1;
      UNLOCK();
    }
    _Memory = (uint *)(local_80 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    uVar2 = FUN_18119aa60(*param_1 + 0x178,local_68);
    FUN_1811afd70(uVar2);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_78 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_70 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    iVar6 = iVar6 + 1;
  } while (iVar6 < 6);
}



############ FUN_ 1812b2440 size=1226 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812b2440(undefined8 *param_1,int param_2)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  undefined1 auStack_88 [32];
  undefined8 *local_68;
  undefined8 local_60;
  undefined1 local_39 [32];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_60 = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_88;
  local_68 = param_1;
  if (param_2 < 0x80) {
    switch(param_2) {
    case 1:
      FUN_18049c4e0(param_1,&DAT_1821e017c);
      break;
    case 2:
      FUN_18049c4e0(param_1,&DAT_1821e0194);
      break;
    case 3:
      FUN_18049c4e0(param_1,&DAT_1821e010c);
      break;
    case 4:
      FUN_18049c4e0(param_1,&DAT_1821e0164);
      break;
    case 5:
      FUN_18049c4e0(param_1,&DAT_1821e022c);
      break;
    case 6:
      FUN_18049c4e0(param_1,&DAT_1821e023c);
      break;
    case 7:
      FUN_18049c4e0(param_1,&DAT_1821e01dc);
      break;
    case 8:
      FUN_18049c4e0(param_1,&DAT_1821e01ec);
      break;
    case 9:
      FUN_18049c4e0(param_1,&DAT_1821e0314);
      break;
    case 10:
      FUN_18049c4e0(param_1,&DAT_1821e04cc);
      break;
    case 0xb:
      FUN_18049c4e0(param_1,&DAT_1821e04ac);
      break;
    case 0xc:
      FUN_18049c4e0(param_1,&DAT_1821e02cc);
      break;
    case 0xd:
      FUN_18049c4e0(param_1,&DAT_1821e037c);
      break;
    case 0xe:
      FUN_18049c4e0(param_1,&DAT_1821e03cc);
      break;
    case 0xf:
      FUN_18049c4e0(param_1,&DAT_1821e0354);
      break;
    case 0x10:
      FUN_18049c4e0(param_1,&DAT_1821e0364);
      break;
    case 0x11:
      FUN_18049c4e0(param_1,&DAT_1821e046c);
      break;
    case 0x12:
      FUN_18049c4e0(param_1,&DAT_1821e049c);
      break;
    case 0x13:
      FUN_18049c4e0(param_1,&DAT_1821e0e94);
      break;
    case 0x14:
      FUN_18049c4e0(param_1,&DAT_1821e033c);
      break;
    case 0x15:
      FUN_18049c4e0(param_1,&DAT_1821e0284);
      break;
    case 0x16:
      FUN_18049c4e0(param_1,&DAT_1821e0414);
      break;
    case 0x17:
      FUN_18049c4e0(param_1,&DAT_1821e0424);
      break;
    case 0x18:
      FUN_18049c4e0(param_1,&DAT_1821e0dc4);
      break;
    case 0x19:
      FUN_18049c4e0(param_1,&DAT_1821e0ff4);
      break;
    case 0x1a:
      FUN_18049c4e0(param_1,&DAT_1821e1164);
      break;
    case 0x1b:
      FUN_18049c4e0(param_1,&DAT_1821e0ec4);
      break;
    case 0x1c:
      FUN_18049c4e0(param_1,&DAT_1821e04dc);
      break;
    case 0x1d:
      FUN_18049c4e0(param_1,&DAT_1821e05f4);
      break;
    case 0x1e:
      FUN_18049c4e0(param_1,&DAT_1821e0f44);
      break;
    case 0x1f:
      FUN_18049c4e0(param_1,&DAT_1821e200c);
      break;
    case 0x20:
      FUN_18049c4e0(param_1,&DAT_1821e2014);
      break;
    case 0x21:
      FUN_18049c4e0(param_1,&DAT_1821e14c4);
      break;
    case 0x22:
      FUN_18049c4e0(param_1,&DAT_1821e2004);
      break;
    case 0x23:
      FUN_18049c4e0(param_1,&DAT_1821e201c);
      break;
    case 0x24:
      FUN_18049c4e0(param_1,"ACN10");
      break;
    case 0x25:
      FUN_18049c4e0(param_1,"ACN11");
      break;
    case 0x26:
      FUN_18049c4e0(param_1,"ACN12");
      break;
    case 0x27:
      FUN_18049c4e0(param_1,"ACN13");
      break;
    case 0x28:
      FUN_18049c4e0(param_1,"ACN14");
      break;
    case 0x29:
      FUN_18049c4e0(param_1,"ACN15");
      break;
    default:
      if (param_2 - 0x1eU < 0x20) {
        lVar2 = FUN_181233e10(local_18,param_2 + -0x1a);
        FUN_180495150(&local_68,lVar2,&local_19 + -lVar2);
        FUN_181246550(param_1,&DAT_1821e0e54,&local_68);
        _Memory = (uint *)(local_68 + -2);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
      }
      else {
        *param_1 = &DAT_1821dbf98;
      }
      break;
    case 0x3e:
      FUN_18049c4e0(param_1,&DAT_1821e0604);
      break;
    case 0x3f:
      FUN_18049c4e0(param_1,&DAT_1821e054c);
      break;
    case 0x40:
      FUN_18049c4e0(param_1,&DAT_1821e05cc);
      break;
    case 0x43:
      FUN_18049c4e0(param_1,&DAT_1821e0674);
      break;
    case 0x44:
      FUN_18049c4e0(param_1,&DAT_1821e0684);
      break;
    case 0x45:
      FUN_18049c4e0(param_1,&DAT_1821e0634);
      break;
    case 0x46:
      FUN_18049c4e0(param_1,&DAT_1821e0644);
      break;
    case 0x47:
      FUN_18049c4e0(param_1,&DAT_1821e06e4);
    }
  }
  else {
    lVar2 = FUN_181233e10(local_39 + 1,param_2 + -0x7f);
    FUN_180495150(param_1,lVar2,local_39 + -lVar2);
  }
}



############ FUN_ 18141a8b0 size=662 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18141a8b0(longlong *param_1,float param_2,char param_3)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  undefined *puVar5;
  char *pcVar6;
  double dVar7;
  undefined1 auStack_98 [32];
  longlong *local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong *local_58;
  double local_50;
  double local_48;
  undefined8 local_40;
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_40 = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_98;
  dVar7 = (double)(param_2 - DAT_1824c3d8c);
  local_78 = param_1;
  if ((float)(double)CONCAT44((uint)((ulonglong)dVar7 >> 0x20) & DAT_1824c4f10._4_4_,
                              SUB84(dVar7,0) & (uint)DAT_1824c4f10) < DAT_1824c3c64) {
    FUN_18049c4e0(DAT_1824c3c64,&DAT_18227cd84);
  }
  if (DAT_1824c3d8c <= param_2) {
    local_48 = (double)((param_2 - DAT_1824c3d8c) * DAT_1824c4540) + DAT_1824c4520;
    if (SUB84(local_48,0) == 100) {
      pcVar6 = "right";
      if (param_3 != '\0') {
        pcVar6 = "side";
      }
      FUN_18049c4e0(&local_60,pcVar6);
      FUN_181246550(param_1,"only ",&local_60);
      puVar4 = (uint *)(local_60 + -0x10);
      uVar1 = *puVar4;
    }
    else {
      plVar3 = (longlong *)FUN_18124a960(&local_78,100 - SUB84(local_48,0));
      local_58 = plVar3;
      FUN_181232e20(plVar3,&DAT_182360258,&DAT_182360260);
      lVar2 = *plVar3;
      *param_1 = lVar2;
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
        UNLOCK();
      }
      puVar4 = (uint *)(*plVar3 + -0x10);
      uVar1 = *puVar4;
    }
  }
  else {
    local_50 = (double)((DAT_1824c3d8c - param_2) * DAT_1824c4540) + DAT_1824c4520;
    if (SUB84(local_50,0) != 100) {
      lVar2 = FUN_181233e10(local_18,100 - SUB84(local_50,0));
      FUN_180495150(&local_68,lVar2,&local_19 + -lVar2);
      plVar3 = (longlong *)FUN_181246550(&local_58,"100% | ",&local_68);
      local_78 = plVar3;
      FUN_181232e20(plVar3,&DAT_1821e71f4,&DAT_1821e71f5);
      lVar2 = *plVar3;
      *param_1 = lVar2;
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
        UNLOCK();
      }
      puVar4 = (uint *)(*plVar3 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      puVar4 = (uint *)(local_68 + -0x10);
      if ((*puVar4 & 0x30000000) != 0) {
      }
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      goto LAB_18141ab2b;
    }
    puVar5 = &DAT_18227d9f4;
    if (param_3 != '\0') {
      puVar5 = &DAT_1821e7334;
    }
    FUN_18049c4e0(&local_70,puVar5);
    FUN_181246550(param_1,"only ",&local_70);
    puVar4 = (uint *)(local_70 + -0x10);
    uVar1 = *puVar4;
  }
  if ((uVar1 & 0x30000000) != 0) {
  }
  LOCK();
  uVar1 = *puVar4;
  *puVar4 = *puVar4 - 1;
  UNLOCK();
LAB_18141ab2b:
  if (uVar1 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(puVar4);
}



############ FUN_ 18124a960 size=69 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18124a960(undefined8 param_1)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233e10(local_18);
  FUN_180495150(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 18141afd0 size=618 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18141afd0(longlong *param_1)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  uint *puVar6;
  longlong *plVar7;
  int iVar8;
  float fVar9;
  undefined1 auStack_f8 [32];
  uint local_d8;
  longlong *local_d0;
  undefined1 local_c8 [8];
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  longlong *local_a8;
  undefined1 local_a0 [8];
  undefined8 local_98;
  longlong local_90;
  longlong local_88;
  undefined1 local_61 [32];
  undefined1 local_41 [32];
  undefined1 local_21;
  ulonglong local_20;
  
  local_98 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_f8;
  *param_1 = (longlong)&DAT_1821dbf98;
  local_d8 = 1;
  local_a8 = param_1;
  fVar9 = (float)roundf();
  if (fVar9 < DAT_1824c459c) {
    lVar3 = FUN_181233e10(&local_20,(int)fVar9);
    FUN_180495150(&local_d0,lVar3,&local_21 + -lVar3);
    local_88 = *param_1;
    *param_1 = (longlong)local_d0;
    puVar6 = (uint *)(local_88 + -0x10);
    if ((*puVar6 & 0x30000000) != 0) {
    }
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
  }
  else {
    iVar8 = (int)(fVar9 * DAT_1824c3c58);
    if ((int)((fVar9 * DAT_1824c3c58 - (float)iVar8) * DAT_1824c43e8) < 1) {
      FUN_18049c4e0(&local_b8,"");
      plVar7 = &local_b8;
      local_d8 = 5;
    }
    else {
      lVar3 = FUN_181233e10(local_61 + 1);
      FUN_180495150(&local_b0,lVar3,local_61 + -lVar3);
      plVar7 = &local_b0;
      local_d8 = 3;
    }
    FUN_18049c4e0(&local_c0,&DAT_1821e4b6c);
    lVar3 = FUN_181233e10(local_41 + 1,iVar8);
    FUN_180495150(local_c8,lVar3,local_41 + -lVar3);
    plVar4 = (longlong *)FUN_181232aa0(local_a0,local_c8,&local_c0);
    local_d0 = plVar4;
    puVar5 = (undefined8 *)FUN_181232d30(plVar4,plVar7);
    local_a8 = (longlong *)*puVar5;
    if ((*(uint *)(local_a8 + -2) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_a8 + -2) = (int)local_a8[-2] + 1;
      UNLOCK();
    }
    uVar1 = local_d8 | 8;
    puVar6 = (uint *)(*plVar4 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar2 == 0) {
        local_d8 = uVar1;
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    local_90 = *param_1;
    *param_1 = (longlong)local_a8;
    puVar6 = (uint *)(local_90 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar2 == 0) {
        local_d8 = uVar1;
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_c0 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar2 == 0) {
        local_d8 = uVar1;
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    if ((local_d8 & 4) != 0) {
      local_d8 = local_d8 & 0xfffffffb | 8;
      puVar6 = (uint *)(local_b8 + -0x10);
      uVar1 = local_d8;
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar2 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
    }
    local_d8 = uVar1;
    if ((local_d8 & 2) == 0) {
    }
    puVar6 = (uint *)(local_b0 + -0x10);
    if ((*puVar6 & 0x30000000) != 0) {
    }
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
  }
  if (uVar1 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(puVar6);
}



############ FUN_ 181212060 size=69 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181212060(undefined8 param_1)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233e10(local_18);
  FUN_180495150(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 18053f600 size=282 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18053f600(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong *plVar4;
  uint *puVar5;
  undefined1 auStack_98 [32];
  undefined1 local_78 [8];
  longlong local_70;
  longlong local_68;
  undefined1 local_60 [8];
  undefined8 local_58;
  longlong *local_50;
  undefined1 local_29;
  ulonglong local_28 [2];
  
  local_58 = 0xfffffffffffffffe;
  local_28[0] = DAT_182615970 ^ (ulonglong)auStack_98;
  lVar2 = FUN_181233e10(local_28);
  FUN_180495150(&local_68,lVar2,&local_29 + -lVar2);
  uVar3 = FUN_181246550(local_60,&DAT_1824ace68,&local_68);
  plVar4 = (longlong *)FUN_1812465e0(local_78,uVar3,param_3);
  local_50 = plVar4;
  FUN_181211fd0(&local_70,param_4);
  FUN_18122c880(param_1,plVar4,&local_70);
  puVar5 = (uint *)(local_70 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(*plVar4 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_68 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
}



############ FUN_ 180540390 size=191 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180540390(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  uint uVar1;
  longlong lVar2;
  uint *puVar3;
  undefined1 auStack_68 [32];
  longlong local_48;
  longlong local_40 [5];
  undefined1 local_11;
  ulonglong local_10;
  
  local_40[1] = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  FUN_18049c4e0(local_40);
  lVar2 = FUN_181233e10(&local_10,param_3);
  FUN_180495150(&local_48,lVar2,&local_11 + -lVar2);
  FUN_18122c880(param_1,local_40,&local_48);
  puVar3 = (uint *)(local_48 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(local_40[0] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
}



############ FUN_ 1805406a0 size=365 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805406a0(undefined8 param_1,undefined4 param_2,longlong param_3,undefined4 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *_Memory;
  uint *puVar4;
  undefined1 auStack_88 [32];
  longlong *local_68;
  longlong local_60;
  longlong local_58;
  undefined1 local_50 [8];
  undefined8 local_48;
  undefined1 local_21;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  FUN_181211fd0(&local_58,param_4);
  lVar2 = FUN_181233e10(&local_20,param_2);
  FUN_180495150(&local_60,lVar2,&local_21 + -lVar2);
  plVar3 = (longlong *)FUN_181246550(local_50,&DAT_1824acc54,&local_60);
  lVar2 = -1;
  do {
    lVar2 = lVar2 + 1;
  } while (*(char *)(param_3 + lVar2) != '\0');
  local_68 = plVar3;
  FUN_181232e20(plVar3,param_3,lVar2 + param_3);
  local_68 = (longlong *)*plVar3;
  puVar4 = (uint *)(local_68 + -2);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  _Memory = (uint *)(*plVar3 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18122c880(param_1,&local_68,&local_58);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_60 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_58 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
}



############ FUN_ 180540830 size=1193 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180540830(int *param_1,undefined8 param_2,int param_3)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  uint *puVar5;
  longlong lVar6;
  void *_Dst;
  int *piVar7;
  int iVar8;
  undefined1 auStack_118 [32];
  longlong local_f8;
  longlong local_f0;
  int local_e8;
  longlong *local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  longlong local_a0;
  int *local_98;
  longlong local_90;
  longlong local_88;
  int *local_80;
  undefined8 local_78;
  undefined1 local_51 [32];
  undefined1 local_31;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_98 = param_1;
  FUN_18049c4e0(&local_d0,"NumCuePoints");
  FUN_181211fd0(&local_d8,*param_1);
  FUN_18122c880(param_2,&local_d0,&local_d8);
  puVar4 = (uint *)(local_d8 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_d0 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (0 < *param_1) {
    local_80 = (int *)((longlong)param_1 + (longlong)param_3);
    piVar7 = param_1 + 2;
    iVar8 = 0;
    do {
      local_e8 = iVar8 + 1;
      if (local_80 < param_1 + (longlong)local_e8 * 6 + 1) {
      }
      FUN_181211fd0(&local_b8,piVar7[-1]);
      lVar2 = FUN_181233e10(local_51 + 1,iVar8);
      FUN_180495150(&local_c0,lVar2,local_51 + -lVar2);
      FUN_18049c4e0(&local_c8,&DAT_1824acc54);
      plVar3 = (longlong *)FUN_181232d30(&local_c8,&local_c0);
      local_f8 = *plVar3;
      if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
        UNLOCK();
      }
      puVar4 = (uint *)(local_c8 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      local_e0 = &local_f8;
      lVar2 = -1;
      do {
        lVar6 = lVar2;
        lVar2 = lVar6 + 1;
      } while (*(char *)(local_f8 + lVar2) != '\0');
      FUN_1812342b0(&local_f8,lVar6 + 0xb);
      _Dst = (void *)((int)lVar2 + local_f8);
      memcpy(_Dst,"Identifier",10);
      param_1 = local_98;
      *(undefined1 *)((longlong)_Dst + 10) = 0;
      local_90 = local_f8;
      puVar4 = (uint *)(local_f8 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        *puVar4 = *puVar4 + 1;
        UNLOCK();
      }
      puVar5 = (uint *)(local_f8 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      FUN_18122c880(param_2,&local_90,&local_b8);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      puVar4 = (uint *)(local_c0 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      puVar4 = (uint *)(local_b8 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      FUN_181211fd0(&local_a0,*piVar7);
      lVar2 = FUN_181233e10(&local_30,iVar8);
      FUN_180495150(&local_a8,lVar2,&local_31 + -lVar2);
      FUN_18049c4e0(&local_b0,&DAT_1824acc54);
      plVar3 = (longlong *)FUN_181232d30(&local_b0,&local_a8);
      local_f0 = *plVar3;
      if ((*(uint *)(local_f0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_f0 + -0x10) = *(int *)(local_f0 + -0x10) + 1;
        UNLOCK();
      }
      puVar4 = (uint *)(local_b0 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      local_e0 = &local_f0;
      FUN_181232e20(&local_f0,"Order","");
      local_88 = local_f0;
      puVar4 = (uint *)(local_f0 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        *puVar4 = *puVar4 + 1;
        UNLOCK();
      }
      puVar5 = (uint *)(local_f0 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      FUN_18122c880(param_2,&local_88,&local_a0);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      puVar4 = (uint *)(local_a8 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      puVar4 = (uint *)(local_a0 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      FUN_1805406a0(param_2,iVar8,"ChunkID",piVar7[1]);
      FUN_1805406a0(param_2,iVar8,"ChunkStart",piVar7[2]);
      FUN_1805406a0(param_2,iVar8,"BlockStart",piVar7[3]);
      FUN_1805406a0(param_2,iVar8,"Offset",piVar7[4]);
      piVar7 = piVar7 + 6;
      iVar8 = local_e8;
    } while (local_e8 < *param_1);
  }
}



############ FUN_ 18054c1e0 size=339 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18054c1e0(longlong param_1,undefined8 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  int iVar5;
  undefined1 auStack_88 [32];
  uint local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50 [2];
  undefined8 *local_40;
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_50[1] = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_88;
  *param_2 = 0;
  param_2[1] = 0;
  local_68 = 1;
  if ((*(longlong *)(param_1 + 0x248) != 0) &&
     (iVar5 = 1, local_40 = param_2, 0 < *(int *)(*(longlong *)(param_1 + 0x248) + 0x2c))) {
    do {
      lVar2 = FUN_181233e10(local_18,iVar5);
      FUN_180495150(local_50,lVar2,&local_19 + -lVar2);
      FUN_18049c4e0(&local_58,"Output channel ");
      plVar3 = (longlong *)FUN_181232d30(&local_58,local_50);
      local_60 = *plVar3;
      if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
        UNLOCK();
      }
      local_68 = local_68 | 2;
      puVar4 = (uint *)(local_58 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      FUN_18122dc00(param_2,&local_60);
      puVar4 = (uint *)(local_50[0] + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      iVar5 = iVar5 + 1;
    } while (iVar5 <= *(int *)(*(longlong *)(param_1 + 0x248) + 0x2c));
  }
}



############ FUN_ 18054c350 size=339 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18054c350(longlong param_1,undefined8 *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  int iVar5;
  undefined1 auStack_88 [32];
  uint local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50 [2];
  undefined8 *local_40;
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_50[1] = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_88;
  *param_2 = 0;
  param_2[1] = 0;
  local_68 = 1;
  if ((*(longlong *)(param_1 + 0x240) != 0) &&
     (iVar5 = 1, local_40 = param_2, 0 < *(int *)(*(longlong *)(param_1 + 0x240) + 0x2c))) {
    do {
      lVar2 = FUN_181233e10(local_18,iVar5);
      FUN_180495150(local_50,lVar2,&local_19 + -lVar2);
      FUN_18049c4e0(&local_58,"Input channel ");
      plVar3 = (longlong *)FUN_181232d30(&local_58,local_50);
      local_60 = *plVar3;
      if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
        UNLOCK();
      }
      local_68 = local_68 | 2;
      puVar4 = (uint *)(local_58 + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      FUN_18122dc00(param_2,&local_60);
      puVar4 = (uint *)(local_50[0] + -0x10);
      if ((*puVar4 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar4;
        *puVar4 = *puVar4 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar4);
        }
      }
      iVar5 = iVar5 + 1;
    } while (iVar5 <= *(int *)(*(longlong *)(param_1 + 0x240) + 0x2c));
  }
}



############ FUN_ 1813b43e0 size=499 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813b43e0(longlong param_1,int param_2)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  char *pcVar3;
  undefined1 auStack_68 [32];
  longlong local_48 [5];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_48[1] = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48[0] = param_1;
  if (param_2 < -0x7787fff5) {
    if (param_2 == -0x7787fff6) {
      pcVar3 = "Device already allocated";
    }
    else if (param_2 < -0x7ffbfeef) {
      if (param_2 == -0x7ffbfef0) {
        pcVar3 = "No aggregation";
      }
      else if (param_2 == -0x7fffbfff) {
        pcVar3 = "Unsupported function";
      }
      else if (param_2 == -0x7fffbffe) {
        pcVar3 = "No interface";
      }
      else {
        if (param_2 != -0x7fffbffb) goto LAB_1813b4540;
        pcVar3 = "Generic error";
      }
    }
    else if (param_2 == -0x7ff8fff2) {
      pcVar3 = "Out of memory";
    }
    else {
      if (param_2 != -0x7ff8ffa9) {
LAB_1813b4540:
        lVar2 = FUN_181233e10(local_18);
        FUN_180495150(local_48,lVar2,&local_19 + -lVar2);
        FUN_181246550(param_1,"Unknown error: ",local_48);
        _Memory = (uint *)(local_48[0] + -0x10);
        if ((*_Memory & 0x30000000) != 0) {
        }
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 != 0) {
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      pcVar3 = "Invalid parameter";
    }
  }
  else if (param_2 < -0x7787ff7d) {
    if (param_2 == -0x7787ff7e) {
      pcVar3 = "Already initialised";
    }
    else if (param_2 == -0x7787ffe2) {
      pcVar3 = "Control unavailable";
    }
    else if (param_2 == -0x7787ffce) {
      pcVar3 = "Invalid call";
    }
    else if (param_2 == -0x7787ffba) {
      pcVar3 = "Priority level error";
    }
    else if (param_2 == -0x7787ff9c) {
      pcVar3 = "Bad format";
    }
    else {
      if (param_2 != -0x7787ff88) goto LAB_1813b4540;
      pcVar3 = "No driver";
    }
  }
  else if (param_2 == -0x7787ff6a) {
    pcVar3 = "Buffer lost";
  }
  else if (param_2 == -0x7787ff60) {
    pcVar3 = "Another app has priority";
  }
  else if (param_2 == -0x7787ff56) {
    pcVar3 = "Uninitialised";
  }
  else {
    if (param_2 != 0) goto LAB_1813b4540;
    pcVar3 = "No error";
  }
  FUN_18049c4e0(param_1,pcVar3);
}



############ FUN_ 1816116b0 size=1495 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1816116b0(undefined8 *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  uint uVar3;
  int iVar4;
  undefined8 *puVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined8 uVar8;
  uint *puVar9;
  uint *puVar10;
  uint *_Memory;
  longlong lVar11;
  void *pvVar12;
  undefined8 *puVar13;
  int iVar14;
  size_t _Size;
  undefined1 auStack_188 [32];
  longlong local_168;
  longlong local_160;
  undefined8 local_158;
  longlong local_150;
  longlong local_148;
  longlong local_140;
  longlong local_138;
  undefined8 *local_130;
  undefined8 local_128;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  undefined8 local_100;
  undefined8 *local_f8;
  undefined8 local_f0;
  undefined8 *local_e8;
  longlong *local_e0;
  longlong *local_d8;
  undefined **local_d0;
  undefined8 *local_c8;
  undefined ***local_98;
  undefined1 local_71 [32];
  undefined1 local_51;
  ulonglong local_50 [3];
  
  local_f0 = 0xfffffffffffffffe;
  local_50[0] = DAT_182615970 ^ (ulonglong)auStack_188;
  local_158 = param_2;
  local_f8 = param_1;
  local_e8 = param_1;
  FUN_18049c4e0(&local_118,"GraphLegend");
  *param_1 = juce::Component::vftable;
  param_1[1] = local_118;
  puVar9 = (uint *)(local_118 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    *puVar9 = *puVar9 + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  iVar14 = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  *param_1 = GraphLegend::vftable;
  param_1[0x16] = GraphLegend::vftable;
  param_1[0x19] = GraphLegend::vftable;
  param_1[0x1a] = param_2;
  *(undefined1 *)(param_1 + 0x1b) = 0;
  FUN_181408890(param_1 + 0x1c);
  param_1[0x50] = 0;
  local_130 = param_1 + 0x51;
  *local_130 = 0;
  param_1[0x52] = 0;
  param_1[0x53] = 0;
  param_1[0x54] = 0;
  param_1[0x55] = 0;
  param_1[0x56] = 0;
  param_1[0x57] = 0;
  param_1[0x58] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 0;
  param_1[0x5c] = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  local_e0 = &local_168;
  local_d8 = &local_160;
  local_128 = 3;
  do {
    lVar6 = FUN_181233e10(local_71 + 1,iVar14);
    FUN_180495150(&local_138,lVar6,local_71 + -lVar6);
    FUN_18049c4e0(&local_150,&DAT_1822df2a4);
    plVar7 = (longlong *)FUN_181232d30(&local_150,&local_138);
    local_168 = *plVar7;
    if ((*(uint *)(local_168 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_168 + -0x10) = *(int *)(local_168 + -0x10) + 1;
      UNLOCK();
    }
    puVar9 = (uint *)(local_150 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    lVar6 = -1;
    do {
      lVar11 = lVar6;
      lVar6 = lVar11 + 1;
    } while (*(char *)(local_168 + lVar6) != '\0');
    FUN_1812342b0(&local_168,lVar11 + 9);
    pvVar12 = (void *)((int)lVar6 + local_168);
    memcpy(pvVar12," balance",8);
    *(undefined1 *)((longlong)pvVar12 + 8) = 0;
    iVar4 = (int)local_128;
    local_110 = local_168;
    puVar9 = (uint *)(local_168 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      *puVar9 = *puVar9 + 1;
      UNLOCK();
    }
    puVar10 = (uint *)(local_168 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_100 = FUN_18119aa60(local_158,local_168);
    lVar6 = FUN_181233e10(local_50,iVar14);
    FUN_180495150(&local_140,lVar6,&local_51 + -lVar6);
    FUN_18049c4e0(&local_148,&DAT_1822de4a4);
    plVar7 = (longlong *)FUN_181232d30(&local_148,&local_140);
    local_160 = *plVar7;
    if ((*(uint *)(local_160 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_160 + -0x10) = *(int *)(local_160 + -0x10) + 1;
      UNLOCK();
    }
    puVar10 = (uint *)(local_148 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    if (0 < iVar4) {
      lVar6 = -1;
      do {
        lVar6 = lVar6 + 1;
      } while (*(char *)(local_160 + lVar6) != '\0');
      _Size = (size_t)iVar4;
      FUN_1812342b0(&local_160,lVar6 + _Size);
      pvVar12 = (void *)((int)lVar6 + local_160);
      memcpy(pvVar12,&DAT_182219294,_Size);
      *(undefined1 *)((longlong)pvVar12 + _Size) = 0;
    }
    local_108 = local_160;
    puVar10 = (uint *)(local_160 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      *puVar10 = *puVar10 + 1;
      UNLOCK();
    }
    _Memory = (uint *)(local_160 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    uVar8 = FUN_18119aa60(local_158,local_160);
    puVar5 = local_f8;
    *local_130 = uVar8;
    local_130[1] = local_100;
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    puVar10 = (uint *)(local_140 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = (uint *)(local_138 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    iVar14 = iVar14 + 1;
    local_130 = local_130 + 2;
  } while (iVar14 < 6);
  puVar1 = local_f8 + 0x5d;
  puVar2 = local_f8 + 0x19;
  for (puVar13 = local_f8 + 0x51; puVar13 != puVar1; puVar13 = puVar13 + 2) {
    uVar8 = puVar13[1];
    FUN_1811be290(*puVar13,puVar2);
    FUN_1811be290(uVar8,puVar2);
  }
  uVar8 = FUN_18119aa60(local_158,"stereo mode");
  FUN_1811be290(uVar8,puVar2);
  FUN_181410d30(puVar5 + 0x1c,"alpha",DAT_1824c3ea4);
  local_d0 = std::
             _Func_impl_no_alloc<<lambda_a4be4752dde3036824e1d01d962b8160>,void,juce::StringRef,float>
             ::vftable;
  local_c8 = puVar5;
  local_98 = &local_d0;
  FUN_181410000(puVar5 + 0x1c,&local_d0);
  FUN_181610f90(puVar5);
}



############ FUN_ 18058e520 size=251 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
               (longlong param_1,float *param_2)

{
  uint *_Memory;
  float fVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  longlong lVar5;
  int iVar6;
  undefined4 uVar7;
  undefined1 auStack_a8 [32];
  undefined4 local_88;
  longlong local_78 [5];
  undefined1 local_49;
  ulonglong local_48 [8];
  
  uVar4 = DAT_1824c4680;
  uVar3 = DAT_1824c3ea4;
  local_78[1] = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_a8;
  fVar1 = *param_2;
  iVar6 = 0;
  if (0 < *(int *)(*(longlong *)(param_1 + 8) + 0x9878)) {
    do {
      uVar7 = uVar3;
      if ((int)fVar1 != iVar6) {
        uVar7 = 0;
      }
      lVar5 = FUN_181233e10(local_48,iVar6);
      FUN_180495150(local_78,lVar5,&local_49 + -lVar5);
      lVar5 = local_78[0];
      local_88 = uVar4;
      FUN_181411be0(*(undefined8 *)(*(longlong *)(param_1 + 8) + 0x98a0),local_78[0],uVar7,uVar4);
      _Memory = (uint *)(lVar5 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      iVar6 = iVar6 + 1;
    } while (iVar6 < *(int *)(*(longlong *)(param_1 + 8) + 0x9878));
  }
}



############ FUN_ 18114d930 size=699 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18114d930(longlong param_1,undefined8 param_2,longlong *param_3,undefined4 param_4,
                  undefined1 param_5)

{
  uint *_Memory;
  int *piVar1;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  longlong *plVar7;
  uint *puVar8;
  undefined8 *puVar9;
  undefined1 auStack_118 [32];
  longlong local_f8;
  undefined1 *local_f0;
  undefined4 local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  undefined4 local_c8;
  undefined1 local_c4;
  undefined8 local_c0;
  longlong local_b8;
  longlong *local_b0;
  undefined **local_a8;
  undefined1 *local_a0;
  longlong local_98;
  ushort local_90;
  undefined1 local_78 [31];
  undefined1 local_59;
  ulonglong local_58 [4];
  
  local_c0 = 0xfffffffffffffffe;
  local_58[0] = DAT_182615970 ^ (ulonglong)auStack_118;
  local_e8 = 0;
  _ftime64_s(&local_98);
  local_d8 = local_98 * 1000 + (ulonglong)local_90;
  local_d0 = *param_3;
  _Memory = (uint *)(local_d0 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_c4 = param_5;
  local_c8 = param_4;
  local_b8 = param_1;
  iVar3 = _Mtx_lock(param_1);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  FUN_18114d800(param_1,param_2);
  FUN_18049c4e0(&local_f8,&DAT_182495df0);
  local_b0 = &local_f8;
  local_f0 = &DAT_1821dbf98;
  local_e8 = 2;
  lVar4 = FUN_181233ea0(local_58,local_d8);
  FUN_180495150(&local_e0,lVar4,&local_59 + -lVar4);
  uVar5 = FUN_181232d30(&local_f0,&local_e0);
  if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_e0 + -0x10);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(local_e0 + -0x10));
    }
  }
  uVar5 = FUN_181232d30(uVar5,&local_f8);
  uVar5 = FUN_181232d30(uVar5,&local_d0);
  uVar5 = FUN_181232d30(uVar5,&local_f8);
  uVar5 = FUN_181245f80(uVar5,param_4);
  uVar5 = FUN_181232d30(uVar5,&local_f8);
  uVar6 = FUN_181233e10(local_78,param_5);
  FUN_181232e20(uVar5,uVar6,local_78);
  puVar8 = (uint *)(local_f8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_a8 = &PTR_vftable_18262b560;
  local_a0 = local_f0;
  local_f0 = &DAT_1821dbf98;
  plVar7 = (longlong *)FUN_180485c50(*(longlong *)(param_1 + 0x58) + 0x30,param_2);
  iVar3 = *(int *)((longlong)plVar7 + 0xc) + 1;
  if ((int)plVar7[1] < iVar3) {
    FUN_180489a50(plVar7,*(int *)((longlong)plVar7 + 0xc) + 9 + iVar3 / 2 & 0xfffffff8);
  }
  iVar3 = *(int *)((longlong)plVar7 + 0xc);
  *(int *)((longlong)plVar7 + 0xc) = iVar3 + 1;
  puVar9 = (undefined8 *)((longlong)iVar3 * 0x10 + *plVar7);
  *puVar9 = local_a8;
  puVar9[1] = local_a0;
  local_a8 = &PTR_vftable_18262b558;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_a0);
  puVar8 = (uint *)(local_f0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  iVar3 = _Mtx_unlock(param_1);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181211ce0 size=66 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181211ce0(longlong *param_1)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [3];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233e10(local_18);
  (**(code **)(*param_1 + 0x20))(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 181220aa0 size=148 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181220aa0(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  undefined1 auStack_68 [32];
  longlong local_48 [5];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_48[1] = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_68;
  lVar2 = FUN_181233e10(local_18,param_3);
  FUN_180495150(local_48,lVar2,&local_19 + -lVar2);
  FUN_181246b70(param_1,param_2,local_48);
  _Memory = (uint *)(local_48[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181228830 size=1229 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181228830(longlong *param_1,undefined8 param_2)

{
  errno_t eVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  longlong *plVar5;
  void *_Src;
  longlong lVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  longlong lVar9;
  uint uVar10;
  uint *puVar11;
  size_t sVar12;
  longlong lVar13;
  undefined1 *puVar14;
  undefined1 auStack_138 [32];
  char local_118 [4];
  undefined2 local_114;
  char local_110 [8];
  undefined1 *local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  tm local_e8;
  undefined8 local_c0;
  undefined4 *local_b8;
  longlong local_b0;
  char *local_a8;
  undefined1 *local_a0;
  undefined1 *local_98;
  undefined1 *local_90;
  undefined1 local_78 [16];
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  undefined1 local_48 [16];
  ulonglong local_38 [2];
  
  local_c0 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_138;
  local_108 = &DAT_1821dbf98;
  local_f0 = *param_1 / 1000;
  eVar1 = _localtime64_s(&local_e8,&local_f0);
  if (eVar1 != 0) {
    local_e8.tm_sec = 0;
    local_e8.tm_min = 0;
    local_e8.tm_hour = 0;
    local_e8.tm_mday = 0;
    local_e8.tm_mon = 0;
    local_e8.tm_year = 0;
    local_e8.tm_wday = 0;
    local_e8.tm_yday = 0;
    local_e8.tm_isdst = 0;
  }
  FUN_18049c4e0(&local_100,(&DAT_1821dbfa0)[local_e8.tm_mon % 0xc]);
  lVar13 = DAT_1826739f8;
  local_b8 = &DAT_182673984;
  do {
    LOCK();
    uVar10 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar10 != 0);
  if (DAT_1826739f8 == 0) {
    local_f8 = local_100;
    uVar10 = *(uint *)(local_100 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar2 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_100,*(undefined1 *)(DAT_1826739f8 + 0x38),0);
      if (iVar2 < 0) {
        FUN_181234570(*(undefined8 *)(lVar13 + 0x40),&local_f8,&local_100,&local_100);
        goto LAB_1812289be;
      }
    }
    iVar2 = FUN_1812498b0(lVar13 + 0x18,local_100,*(undefined1 *)(lVar13 + 0x38),0);
    if (iVar2 < 0) {
      local_f8 = local_100;
      uVar10 = *(uint *)(local_100 + -0x10);
    }
    else {
      plVar5 = (longlong *)FUN_181249970(lVar13 + 0x28,iVar2);
      local_f8 = *plVar5;
      uVar10 = *(uint *)(local_f8 + -0x10);
    }
  }
  if ((uVar10 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
    UNLOCK();
  }
LAB_1812289be:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar11 = (uint *)(local_100 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  uVar3 = FUN_1812286b0(param_1);
  _Src = (void *)FUN_181233e10(local_78,uVar3);
  iVar2 = (int)local_78 - (int)_Src;
  if (0 < iVar2) {
    lVar13 = -1;
    do {
      lVar13 = lVar13 + 1;
    } while (local_108[lVar13] != '\0');
    sVar12 = (size_t)iVar2;
    FUN_1812342b0(&local_108,sVar12 + lVar13);
    puVar14 = local_108 + (int)lVar13;
    memcpy(puVar14,_Src,sVar12);
    puVar14[sVar12] = 0;
  }
  local_118[0] = ' ';
  local_118[1] = '\0';
  lVar13 = -1;
  do {
    lVar6 = lVar13 + 1;
    lVar9 = lVar13 + 1;
    lVar13 = lVar6;
  } while (local_118[lVar9] != '\0');
  iVar2 = ((int)local_118 + (int)lVar6) - (int)local_118;
  if (0 < iVar2) {
    lVar13 = -1;
    do {
      lVar13 = lVar13 + 1;
    } while (local_108[lVar13] != '\0');
    sVar12 = (size_t)iVar2;
    FUN_1812342b0(&local_108,sVar12 + lVar13);
    puVar14 = local_108 + (int)lVar13;
    memcpy(puVar14,local_118,sVar12);
    puVar14[sVar12] = 0;
  }
  uVar7 = FUN_181232d30(&local_108,&local_f8);
  local_114 = 0x20;
  lVar13 = -1;
  do {
    lVar9 = lVar13;
    lVar13 = lVar9 + 1;
  } while (*(char *)((longlong)&local_114 + lVar9 + 1) != '\0');
  local_b0 = (longlong)&local_114 + lVar9 + 1;
  FUN_181232e20(uVar7,&local_114);
  uVar3 = FUN_181245c50(param_1);
  uVar8 = FUN_181233e10(local_68,uVar3);
  FUN_181232e20(uVar7,uVar8,local_68);
  puVar11 = (uint *)(local_f8 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
  local_110[0] = ' ';
  local_110[1] = '\0';
  lVar13 = -1;
  do {
    lVar9 = lVar13;
    lVar13 = lVar9 + 1;
  } while (local_110[lVar9 + 1] != '\0');
  local_a8 = local_110 + lVar9 + 1;
  FUN_181232e20(&local_108,local_110);
  iVar2 = FUN_181228600(param_1);
  iVar4 = FUN_181228660(param_1);
  if (iVar4 == 0) {
    iVar4 = 0xc;
  }
  else if (0xc < iVar4) {
    iVar4 = iVar4 + -0xc;
  }
  uVar7 = FUN_181233e10(local_58,iVar4);
  FUN_181232e20(&local_108,uVar7,local_58);
  local_a0 = &DAT_1821dacac;
  if (iVar2 < 10) {
    local_a0 = &DAT_1821daccc;
  }
  lVar13 = -1;
  do {
    lVar13 = lVar13 + 1;
  } while (local_a0[lVar13] != '\0');
  local_a0 = local_a0 + lVar13;
  FUN_181232e20(&local_108);
  uVar7 = FUN_181233e10(local_48,iVar2);
  FUN_181232e20(&local_108,uVar7,local_48);
  iVar2 = FUN_181228590(param_1);
  local_98 = &DAT_1821dad34;
  if (iVar2 < 10) {
    local_98 = &DAT_1821dad54;
  }
  lVar13 = -1;
  do {
    lVar13 = lVar13 + 1;
  } while (local_98[lVar13] != '\0');
  local_98 = local_98 + lVar13;
  FUN_181232e20(&local_108);
  uVar7 = FUN_181233e10(local_38,iVar2);
  FUN_181232e20(&local_108,uVar7,local_38);
  iVar2 = FUN_181228660(param_1);
  local_90 = &DAT_1821dad94;
  if (0xb < iVar2) {
    local_90 = &DAT_1821dadac;
  }
  lVar13 = -1;
  do {
    lVar13 = lVar13 + 1;
  } while (local_90[lVar13] != '\0');
  local_90 = local_90 + lVar13;
  FUN_181232e20(&local_108);
  FUN_181230800(&local_108,param_2);
  puVar11 = (uint *)(local_108 + -0x10);
  if ((*puVar11 & 0x30000000) == 0) {
    LOCK();
    uVar10 = *puVar11;
    *puVar11 = *puVar11 - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar11);
    }
  }
}



############ FUN_ 18122e210 size=71 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18122e210(longlong *param_1)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233e10(local_18);
  (**(code **)(*param_1 + 0x20))(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 181232b20 size=66 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181232b20(undefined8 param_1)

{
  undefined8 uVar1;
  undefined1 auStack_48 [48];
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_48;
  uVar1 = FUN_181233e10(local_18);
  FUN_181232e20(param_1,uVar1,local_18);
}



############ FUN_ 181233920 size=72 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181233920(undefined8 param_1,short param_2)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233e10(local_18,(int)param_2);
  FUN_180495150(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 181237540 size=997 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181237540(ushort *param_1,longlong *param_2)

{
  uint uVar1;
  char cVar2;
  ushort uVar3;
  longlong lVar4;
  int iVar5;
  longlong lVar6;
  undefined4 *puVar7;
  longlong lVar8;
  ushort uVar9;
  uint *puVar10;
  longlong *plVar11;
  ushort *_Dst;
  char *pcVar12;
  longlong lVar13;
  void *pvVar14;
  size_t sVar15;
  void *_Dst_00;
  bool bVar16;
  undefined1 auStack_118 [32];
  char local_f8 [4];
  undefined2 local_f4;
  char local_f0 [8];
  undefined4 *local_e8;
  longlong *local_e0;
  ushort *local_d8;
  longlong *local_d0;
  undefined8 local_c8;
  char *local_c0;
  longlong local_b8;
  undefined1 local_a0 [30];
  char local_82 [5];
  undefined1 auStack_7d [12];
  char acStack_71 [15];
  char local_62 [5];
  undefined1 auStack_5d [12];
  char acStack_51 [16];
  undefined1 local_41;
  ulonglong local_40;
  
  local_c8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_d0 = param_2;
  local_e0 = param_2;
  local_d8 = param_1;
  if ((char)param_1[8] == '\0') {
    lVar6 = FUN_181233e10(&local_40,(char)*param_1);
    FUN_180495150(&local_e0,lVar6,&local_41 + -lVar6);
    lVar6 = 1;
    plVar11 = local_e0;
    do {
      local_f8[0] = '.';
      local_f8[1] = '\0';
      lVar13 = -1;
      do {
        lVar8 = lVar13 + 1;
        lVar4 = lVar13 + 1;
        lVar13 = lVar8;
      } while (local_f8[lVar4] != '\0');
      iVar5 = ((int)local_f8 + (int)lVar8) - (int)local_f8;
      if (0 < iVar5) {
        lVar13 = -1;
        do {
          lVar13 = lVar13 + 1;
        } while (*(char *)((longlong)plVar11 + lVar13) != '\0');
        sVar15 = (size_t)iVar5;
        FUN_1812342b0(&local_e0,lVar13 + sVar15);
        plVar11 = local_e0;
        pvVar14 = (void *)((longlong)(int)lVar13 + (longlong)local_e0);
        memcpy(pvVar14,local_f8,sVar15);
        *(undefined1 *)((longlong)pvVar14 + sVar15) = 0;
      }
      pvVar14 = (void *)FUN_181233e10(local_a0,*(undefined1 *)(lVar6 + (longlong)param_1));
      iVar5 = (int)local_a0 - (int)pvVar14;
      if (0 < iVar5) {
        lVar13 = -1;
        do {
          lVar13 = lVar13 + 1;
        } while (*(char *)((longlong)plVar11 + lVar13) != '\0');
        sVar15 = (size_t)iVar5;
        FUN_1812342b0(&local_e0,sVar15 + lVar13);
        plVar11 = local_e0;
        _Dst_00 = (void *)((longlong)(int)lVar13 + (longlong)local_e0);
        memcpy(_Dst_00,pvVar14,sVar15);
        *(undefined1 *)(sVar15 + (longlong)_Dst_00) = 0;
        param_1 = local_d8;
      }
      lVar6 = lVar6 + 1;
    } while (lVar6 < 4);
    *local_d0 = (longlong)plVar11;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      UNLOCK();
      bVar16 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = DAT_1821dbf88 - 1;
      if (bVar16) {
        puVar10 = &DAT_1821dbf88;
        DAT_1821dbf88 = 0xffffffff;
LAB_181237911:
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  else {
    local_f4 = *param_1;
    pcVar12 = local_82 + 1;
    local_82[1] = 0;
    uVar9 = local_f4;
    do {
      pcVar12 = pcVar12 + -1;
      cVar2 = "0123456789abcdef"[uVar9 & 0xf];
      *pcVar12 = cVar2;
      uVar3 = uVar9 >> 4;
      uVar9 = uVar9 >> 4;
    } while (uVar3 != 0);
    if (cVar2 == '\0') {
      local_e8 = (undefined4 *)&DAT_1821dbf98;
    }
    else {
      puVar7 = (undefined4 *)thunk_FUN_1811316e0();
      LOCK();
      *puVar7 = 0;
      UNLOCK();
      *(ulonglong *)(puVar7 + 2) = (ulonglong)(auStack_7d + -(longlong)pcVar12) & 0xfffffffffffffffc
      ;
      puVar7 = puVar7 + 4;
      memcpy(puVar7,pcVar12,(size_t)(local_82 + -(longlong)pcVar12 + 1));
      *(char *)((longlong)puVar7 + (longlong)(local_82 + -(longlong)pcVar12 + 1)) = '\0';
      local_e8 = puVar7;
    }
    lVar6 = 1;
    do {
      local_f4 = CONCAT11(*(undefined1 *)((longlong)param_1 + lVar6 * 2 + 1),(char)param_1[lVar6]);
      pcVar12 = local_62 + 1;
      local_62[1] = 0;
      uVar9 = local_f4;
      do {
        pcVar12 = pcVar12 + -1;
        cVar2 = "0123456789abcdef"[uVar9 & 0xf];
        *pcVar12 = cVar2;
        uVar3 = uVar9 >> 4;
        uVar9 = uVar9 >> 4;
      } while (uVar3 != 0);
      if (cVar2 == '\0') {
        _Dst = (ushort *)&DAT_1821dbf98;
      }
      else {
        puVar7 = (undefined4 *)thunk_FUN_1811316e0();
        LOCK();
        *puVar7 = 0;
        UNLOCK();
        *(ulonglong *)(puVar7 + 2) =
             (ulonglong)(auStack_5d + -(longlong)pcVar12) & 0xfffffffffffffffc;
        _Dst = (ushort *)(puVar7 + 4);
        memcpy(_Dst,pcVar12,(size_t)(local_62 + -(longlong)pcVar12 + 1));
        *(char *)((longlong)_Dst + (longlong)(local_62 + -(longlong)pcVar12 + 1)) = '\0';
      }
      local_d8 = _Dst;
      local_f0[0] = ':';
      local_f0[1] = '\0';
      lVar13 = -1;
      do {
        lVar8 = lVar13;
        lVar13 = lVar8 + 1;
      } while (local_f0[lVar8 + 1] != '\0');
      local_c0 = local_f0 + lVar8 + 1;
      iVar5 = (int)local_c0 - (int)local_f0;
      lVar13 = -1;
      if (0 < iVar5) {
        do {
          lVar13 = lVar13 + 1;
        } while (*(char *)((longlong)local_e8 + lVar13) != '\0');
        local_b8 = lVar13 + (longlong)local_e8;
        lVar13 = local_b8 - (longlong)local_e8;
        sVar15 = (size_t)iVar5;
        FUN_1812342b0(&local_e8,lVar13 + sVar15);
        pvVar14 = (void *)((longlong)(int)lVar13 + (longlong)local_e8);
        memcpy(pvVar14,local_f0,sVar15);
        *(undefined1 *)((longlong)pvVar14 + sVar15) = 0;
      }
      FUN_181232d30(&local_e8,&local_d8);
      puVar10 = (uint *)(_Dst + -8);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      lVar6 = lVar6 + 1;
    } while (lVar6 < 8);
    FUN_1812369a0(local_d0,&local_e8);
    puVar10 = local_e8 + -4;
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) goto LAB_181237911;
    }
  }
}



############ FUN_ 181238b30 size=228 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_181238b30(undefined8 param_1,undefined8 *param_2,undefined4 param_3)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  undefined1 auStack_98 [32];
  undefined8 local_78;
  longlong local_70 [11];
  undefined1 local_11;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_70[3] = 0;
  local_70[4] = 0;
  local_70[5] = 0;
  local_70[6] = 0;
  local_70[2] = 2;
  local_70[1] = 8;
  local_78 = 0;
  lVar2 = FUN_181233e10(&local_10,param_3);
  FUN_180495150(local_70,lVar2,&local_11 + -lVar2);
  local_70[7] = *param_2;
  getaddrinfo(local_70[7],local_70[0],local_70 + 1,&local_78);
  _Memory = (uint *)(local_70[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181239cc0 size=227 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181239cc0(undefined8 *param_1,char param_2)

{
  int *_Memory;
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  longlong lVar4;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  longlong local_40 [4];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48 = *param_1;
  iVar2 = FUN_180493050(&local_48,0);
  if (iVar2 == 0x2d) {
    iVar2 = FUN_180493050(&local_48,1);
    bVar1 = true;
    if (iVar2 != 0x2d) goto LAB_181239d16;
  }
  bVar1 = false;
LAB_181239d16:
  if (bVar1) {
    lVar4 = FUN_181233e10(local_18,(int)param_2);
    FUN_180495150(local_40,lVar4,&local_19 + -lVar4);
    uVar3 = FUN_180493050(local_40,0);
    FUN_18049bc80(*param_1,uVar3);
    _Memory = (int *)(local_40[0] + -0x10);
    if ((*(uint *)(local_40[0] + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar2 = *_Memory;
      *_Memory = *_Memory + -1;
      UNLOCK();
      if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
}



############ FUN_ 181245d90 size=66 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181245d90(undefined8 param_1)

{
  undefined8 uVar1;
  undefined1 auStack_48 [48];
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_48;
  uVar1 = FUN_181233e10(local_18);
  FUN_181232e20(param_1,uVar1,local_18);
}



############ FUN_ 181292010 size=1530 ############

void FUN_181292010(longlong param_1,longlong *param_2,undefined8 *param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong *plVar4;
  code *pcVar5;
  longlong lVar6;
  ulonglong uVar7;
  undefined4 *puVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  uint uVar11;
  undefined1 auStack_1a8 [32];
  undefined4 local_188;
  undefined4 local_180;
  undefined1 local_178 [8];
  undefined1 local_170 [8];
  undefined1 local_168 [8];
  undefined1 local_160 [8];
  undefined4 local_158;
  undefined4 local_154;
  undefined4 *local_150;
  undefined8 local_148;
  float local_140;
  float local_13c;
  undefined4 local_138;
  undefined4 *local_130;
  longlong *local_128;
  undefined8 local_120;
  undefined1 local_f9 [32];
  undefined1 local_d9 [31];
  undefined1 local_ba;
  undefined1 local_b9 [32];
  undefined1 local_99 [32];
  undefined1 local_79 [32];
  undefined1 local_59;
  ulonglong local_58 [4];
  int iVar12;
  
  local_120 = 0xfffffffffffffffe;
  local_58[0] = DAT_182615970 ^ (ulonglong)auStack_1a8;
  lVar6 = *param_2;
  uVar9 = 0;
  if (lVar6 == 0) {
    local_158 = 0;
    local_154 = 0;
  }
  else {
    local_158 = *(undefined4 *)(lVar6 + 0x14);
    local_154 = *(undefined4 *)(lVar6 + 0x18);
  }
  local_128 = param_2;
  FUN_181293ca0(param_1);
  (**(code **)(**(longlong **)(param_1 + 8) + 0x20))(*(longlong **)(param_1 + 8),"gsave ",6);
  uVar10 = uVar9;
  if (0 < *(int *)(param_1 + 0x2c)) {
    uVar10 = *(ulonglong *)
              (*(longlong *)(param_1 + 0x20) + (longlong)(*(int *)(param_1 + 0x2c) + -1) * 8);
  }
  uVar7 = uVar9;
  if (0 < *(int *)(param_1 + 0x2c)) {
    uVar7 = *(ulonglong *)
             (*(longlong *)(param_1 + 0x20) + (longlong)(*(int *)(param_1 + 0x2c) + -1) * 8);
  }
  local_150 = (undefined4 *)*param_3;
  local_13c = ((float)*(int *)(uVar10 + 0x14) + *(float *)((longlong)param_3 + 0x14)) *
              DAT_1824c4680;
  local_140 = *(float *)(param_3 + 2) * DAT_1824c4680;
  local_148 = CONCAT44(*(float *)((longlong)param_3 + 0xc) * DAT_1824c4680,
                       (float)*(int *)(uVar7 + 0x10) + *(float *)(param_3 + 1));
  FUN_181293390(param_1,&local_150);
  local_150 = (undefined4 *)0x0;
  local_148 = 0;
  FUN_18128fb60(param_2,&local_150,DAT_1824c3d8c);
  (**(code **)(**(longlong **)(param_1 + 8) + 0x20))(*(longlong **)(param_1 + 8),"newpath ",8);
  local_130 = local_150 + (longlong)local_148._4_4_ * 4;
  if (local_150 != local_130) {
    puVar8 = local_150 + 2;
    uVar10 = uVar9;
    do {
      iVar12 = (int)uVar10;
      uVar11 = iVar12 + 1;
      uVar10 = (ulonglong)uVar11;
      if (uVar11 == 6) {
        plVar4 = *(longlong **)(param_1 + 8);
        pcVar5 = *(code **)(*plVar4 + 0x28);
        if (pcVar5 == FUN_18122e9b0) {
          local_160[0] = 10;
          (**(code **)(*plVar4 + 0x20))(plVar4,local_160,iVar12 + -4);
          uVar10 = uVar9;
        }
        else {
          (*pcVar5)(plVar4,0x18122e90a);
          uVar10 = uVar9;
        }
      }
      local_138 = puVar8[1];
      uVar2 = *puVar8;
      uVar3 = puVar8[-1];
      plVar4 = *(longlong **)(param_1 + 8);
      lVar6 = FUN_181233e10(local_b9 + 1,puVar8[-2]);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_b9 + -lVar6);
      pcVar5 = *(code **)(*plVar4 + 0x28);
      if (pcVar5 == FUN_18122e9b0) {
        local_170[0] = 0x20;
        (**(code **)(*plVar4 + 0x20))(plVar4,local_170,1);
      }
      else {
        (*pcVar5)(plVar4,0x20);
      }
      lVar6 = FUN_181233e10(local_99 + 1,uVar3);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_99 + -lVar6);
      pcVar5 = *(code **)(*plVar4 + 0x28);
      if (pcVar5 == FUN_18122e9b0) {
        local_168[0] = 0x20;
        (**(code **)(*plVar4 + 0x20))(plVar4,local_168,1);
      }
      else {
        (*pcVar5)(plVar4,0x20);
      }
      lVar6 = FUN_181233e10(local_f9 + 1,uVar2);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_f9 + -lVar6);
      pcVar5 = *(code **)(*plVar4 + 0x28);
      if (pcVar5 == FUN_18122e9b0) {
        local_178[0] = 0x20;
        (**(code **)(*plVar4 + 0x20))(plVar4,local_178,1);
      }
      else {
        (*pcVar5)(plVar4,0x20);
      }
      lVar6 = FUN_181233e10(local_d9 + 1,local_138);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_d9 + -lVar6);
      (**(code **)(*plVar4 + 0x20))(plVar4,&DAT_1821def90,4);
      puVar1 = puVar8 + 2;
      puVar8 = puVar8 + 4;
      param_2 = local_128;
    } while (puVar1 != local_130);
  }
  puVar8 = local_150;
  (**(code **)(**(longlong **)(param_1 + 8) + 0x20))
            (*(longlong **)(param_1 + 8)," clip newpath\n",0xe);
  uVar2 = local_158;
  plVar4 = *(longlong **)(param_1 + 8);
  lVar6 = FUN_181233e10(local_d9 + 1,local_158);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_d9 + -lVar6);
  pcVar5 = *(code **)(*plVar4 + 0x28);
  if (pcVar5 == FUN_18122e9b0) {
    local_178[0] = 0x20;
    (**(code **)(*plVar4 + 0x20))(plVar4,local_178,1);
  }
  else {
    (*pcVar5)(plVar4,0x20);
  }
  uVar3 = local_154;
  lVar6 = FUN_181233e10(local_f9 + 1,local_154);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_f9 + -lVar6);
  (**(code **)(*plVar4 + 0x20))(plVar4," scale\n",7);
  plVar4 = *(longlong **)(param_1 + 8);
  lVar6 = FUN_181233e10(local_d9 + 1,uVar2);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_d9 + -lVar6);
  pcVar5 = *(code **)(*plVar4 + 0x28);
  if (pcVar5 == FUN_18122e9b0) {
    local_178[0] = 0x20;
    (**(code **)(*plVar4 + 0x20))(plVar4,local_178,1);
  }
  else {
    (*pcVar5)(plVar4,0x20);
  }
  lVar6 = FUN_181233e10(local_f9 + 1,uVar3);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_f9 + -lVar6);
  (**(code **)(*plVar4 + 0x20))(plVar4,&DAT_1821defa0,4);
  lVar6 = FUN_181233e10(local_99 + 1,uVar2);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_99 + -lVar6);
  (**(code **)(*plVar4 + 0x20))(plVar4," 0 0 -",6);
  lVar6 = FUN_181233e10(local_79 + 1,uVar3);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_79 + -lVar6);
  pcVar5 = *(code **)(*plVar4 + 0x28);
  if (pcVar5 == FUN_18122e9b0) {
    local_168[0] = 0x20;
    (**(code **)(*plVar4 + 0x20))(plVar4,local_168,1);
  }
  else {
    (*pcVar5)(plVar4,0x20);
  }
  local_b9[0] = 0;
  local_ba = 0x30;
  (**(code **)(*plVar4 + 0x20))(plVar4,&local_ba,local_b9 + -(longlong)&local_ba);
  pcVar5 = *(code **)(*plVar4 + 0x28);
  if (pcVar5 == FUN_18122e9b0) {
    local_170[0] = 0x20;
    (**(code **)(*plVar4 + 0x20))(plVar4,local_170,1);
  }
  else {
    (*pcVar5)(plVar4,0x20);
  }
  lVar6 = FUN_181233e10(local_58,uVar3);
  (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,&local_59 + -lVar6);
  (**(code **)(*plVar4 + 0x20))(plVar4,&DAT_1821def04,3);
  local_180 = uVar3;
  local_188 = uVar2;
  FUN_181292650(param_1,param_2);
  (**(code **)(**(longlong **)(param_1 + 8) + 0x20))
            (*(longlong **)(param_1 + 8),"false 3 colorimage grestore\n",0x1c);
  *(undefined1 *)(param_1 + 0x18) = 1;
                    /* WARNING: Subroutine does not return */
  free(puVar8);
}



############ FUN_ 181293ca0 size=691 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181293ca0(longlong param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  longlong *plVar4;
  code *pcVar5;
  longlong lVar6;
  undefined8 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined1 auStack_f8 [32];
  undefined1 local_d8 [8];
  undefined1 local_d0 [8];
  undefined1 local_c8 [8];
  undefined1 local_c0 [39];
  undefined1 local_99 [32];
  undefined1 local_79 [32];
  undefined1 local_59 [32];
  undefined1 local_39;
  ulonglong local_38 [2];
  
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_f8;
  if (*(char *)(param_1 + 0x18) != '\0') {
    *(undefined1 *)(param_1 + 0x18) = 0;
    (**(code **)(**(longlong **)(param_1 + 8) + 0x20))(*(longlong **)(param_1 + 8),"doclip ",7);
    iVar8 = 0;
    if (*(int *)(param_1 + 0x2c) < 1) {
      puVar7 = (undefined8 *)0x0;
    }
    else {
      puVar7 = *(undefined8 **)
                (*(longlong *)(param_1 + 0x20) + (longlong)(*(int *)(param_1 + 0x2c) + -1) * 8);
    }
    puVar9 = (undefined4 *)*puVar7;
    puVar10 = puVar9 + (longlong)*(int *)((longlong)puVar7 + 0xc) * 4;
    for (; puVar9 != puVar10; puVar9 = puVar9 + 4) {
      iVar8 = iVar8 + 1;
      if (iVar8 == 6) {
        plVar4 = *(longlong **)(param_1 + 8);
        iVar8 = 0;
        pcVar5 = *(code **)(*plVar4 + 0x28);
        if (pcVar5 == FUN_18122e9b0) {
          local_d8[0] = 10;
          (**(code **)(*plVar4 + 0x20))(plVar4,local_d8,1);
        }
        else {
          (*pcVar5)(plVar4,10);
        }
      }
      iVar1 = puVar9[3];
      uVar2 = puVar9[2];
      iVar3 = puVar9[1];
      plVar4 = *(longlong **)(param_1 + 8);
      lVar6 = FUN_181233e10(local_99 + 1,*puVar9);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_99 + -lVar6);
      pcVar5 = *(code **)(*plVar4 + 0x28);
      if (pcVar5 == FUN_18122e9b0) {
        local_d0[0] = 0x20;
        (**(code **)(*plVar4 + 0x20))(plVar4,local_d0,1);
      }
      else {
        (*pcVar5)(plVar4,0x20);
      }
      lVar6 = FUN_181233e10(local_79 + 1,-iVar3);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_79 + -lVar6);
      pcVar5 = *(code **)(*plVar4 + 0x28);
      if (pcVar5 == FUN_18122e9b0) {
        local_c8[0] = 0x20;
        (**(code **)(*plVar4 + 0x20))(plVar4,local_c8,1);
      }
      else {
        (*pcVar5)(plVar4,0x20);
      }
      lVar6 = FUN_181233e10(local_59 + 1,uVar2);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,local_59 + -lVar6);
      pcVar5 = *(code **)(*plVar4 + 0x28);
      if (pcVar5 == FUN_18122e9b0) {
        local_c0[0] = 0x20;
        (**(code **)(*plVar4 + 0x20))(plVar4,local_c0,1);
      }
      else {
        (*pcVar5)(plVar4,0x20);
      }
      lVar6 = FUN_181233e10(local_38,-iVar1);
      (**(code **)(*plVar4 + 0x20))(plVar4,lVar6,&local_39 + -lVar6);
      (**(code **)(*plVar4 + 0x20))(plVar4,&DAT_1821de2a8,4);
    }
    (**(code **)(**(longlong **)(param_1 + 8) + 0x20))(*(longlong **)(param_1 + 8),"endclip\n",8);
  }
}



############ FUN_ 1812b2a40 size=856 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812b2a40(longlong *param_1,int param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *puVar4;
  char *pcVar5;
  undefined1 auStack_68 [32];
  longlong *local_48;
  longlong local_40 [5];
  undefined1 local_11;
  ulonglong local_10;
  
  local_40[1] = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48 = param_1;
  if (param_2 < 0x80) {
    switch(param_2) {
    case 1:
      pcVar5 = "Left";
      break;
    case 2:
      pcVar5 = "Right";
      break;
    case 3:
      pcVar5 = "Centre";
      break;
    case 4:
      pcVar5 = "LFE";
      break;
    case 5:
      pcVar5 = "Left Surround";
      break;
    case 6:
      pcVar5 = "Right Surround";
      break;
    case 7:
      pcVar5 = "Left Centre";
      break;
    case 8:
      pcVar5 = "Right Centre";
      break;
    case 9:
      pcVar5 = "Centre Surround";
      break;
    case 10:
      pcVar5 = "Left Surround Side";
      break;
    case 0xb:
      pcVar5 = "Right Surround Side";
      break;
    case 0xc:
      pcVar5 = "Top Middle";
      break;
    case 0xd:
      pcVar5 = "Top Front Left";
      break;
    case 0xe:
      pcVar5 = "Top Front Centre";
      break;
    case 0xf:
      pcVar5 = "Top Front Right";
      break;
    case 0x10:
      pcVar5 = "Top Rear Left";
      break;
    case 0x11:
      pcVar5 = "Top Rear Centre";
      break;
    case 0x12:
      pcVar5 = "Top Rear Right";
      break;
    case 0x13:
      pcVar5 = "LFE 2";
      break;
    case 0x14:
      pcVar5 = "Left Surround Rear";
      break;
    case 0x15:
      pcVar5 = "Right Surround Rear";
      break;
    case 0x16:
      pcVar5 = "Wide Left";
      break;
    case 0x17:
      pcVar5 = "Wide Right";
      break;
    case 0x18:
      pcVar5 = "Ambisonic W";
      break;
    case 0x19:
      pcVar5 = "Ambisonic Y";
      break;
    case 0x1a:
      pcVar5 = "Ambisonic Z";
      break;
    case 0x1b:
      pcVar5 = "Ambisonic X";
      break;
    case 0x1c:
      pcVar5 = "Top Side Left";
      break;
    case 0x1d:
      pcVar5 = "Top Side Right";
      break;
    case 0x1e:
      pcVar5 = "Ambisonic 4";
      break;
    case 0x1f:
      pcVar5 = "Ambisonic 5";
      break;
    case 0x20:
      pcVar5 = "Ambisonic 6";
      break;
    case 0x21:
      pcVar5 = "Ambisonic 7";
      break;
    case 0x22:
      pcVar5 = "Ambisonic 8";
      break;
    case 0x23:
      pcVar5 = "Ambisonic 9";
      break;
    case 0x24:
      pcVar5 = "Ambisonic 10";
      break;
    case 0x25:
      pcVar5 = "Ambisonic 11";
      break;
    case 0x26:
      pcVar5 = "Ambisonic 12";
      break;
    case 0x27:
      pcVar5 = "Ambisonic 13";
      break;
    case 0x28:
      pcVar5 = "Ambisonic 14";
      break;
    case 0x29:
      pcVar5 = "Ambisonic 15";
      break;
    default:
      pcVar5 = "Unknown";
      break;
    case 0x3e:
      pcVar5 = "Bottom Front Left";
      break;
    case 0x3f:
      pcVar5 = "Bottom Front Centre";
      break;
    case 0x40:
      pcVar5 = "Bottom Front Right";
      break;
    case 0x43:
      pcVar5 = "Bottom Side Left";
      break;
    case 0x44:
      pcVar5 = "Bottom Side Right";
      break;
    case 0x45:
      pcVar5 = "Bottom Rear Left";
      break;
    case 0x46:
      pcVar5 = "Bottom Rear Centre";
      break;
    case 0x47:
      pcVar5 = "Bottom Rear Right";
    }
    FUN_18049c4e0(param_1,pcVar5);
  }
  else {
    lVar2 = FUN_181233e10(&local_10,param_2 + -0x7f);
    FUN_180495150(&local_48,lVar2,&local_11 + -lVar2);
    FUN_18049c4e0(local_40,"Discrete ");
    plVar3 = (longlong *)FUN_181232d30(local_40,&local_48);
    lVar2 = *plVar3;
    *param_1 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    puVar4 = (uint *)(local_40[0] + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    puVar4 = (uint *)(local_48 + -2);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
}



############ FUN_ 1812be6a0 size=84 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812be6a0(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  longlong lVar1;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined1 local_11;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  DAT_1826736a2 = 1;
  local_38 = param_2;
  lVar1 = FUN_181233e10(&local_10,param_3);
  FUN_180495150(param_2,lVar1,&local_11 + -lVar1);
}



############ FUN_ 1812be9e0 size=170 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812be9e0(longlong param_1,longlong *param_2,uint param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined1 auStack_68 [32];
  undefined4 local_48;
  longlong *local_38;
  undefined1 local_11;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  if (param_3 < *(uint *)(param_1 + 0x144)) {
    uVar2 = *(undefined8 *)(*(longlong *)(param_1 + 0x138) + (longlong)(int)param_3 * 8);
  }
  else {
    uVar2 = 0;
  }
  local_48 = 0;
  local_38 = param_2;
  lVar1 = __RTDynamicCast(uVar2,0,&juce::AudioProcessorParameter::RTTI_Type_Descriptor,
                          &juce::AudioProcessorParameterWithID::RTTI_Type_Descriptor);
  if (lVar1 == 0) {
    lVar1 = FUN_181233e10(&local_10,param_3);
    FUN_180495150(param_2,lVar1,&local_11 + -lVar1);
  }
  else {
    lVar1 = *(longlong *)(lVar1 + 0x60);
    *param_2 = lVar1;
    if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
      UNLOCK();
    }
  }
}



############ FUN_ 1812bfcf0 size=656 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812bfcf0(longlong *param_1,char param_2,char param_3,longlong *param_4)

{
  uint uVar1;
  int iVar2;
  code *pcVar3;
  void *pvVar4;
  bool bVar5;
  bool bVar6;
  char cVar7;
  longlong lVar8;
  longlong *plVar9;
  uint *puVar10;
  char *pcVar11;
  void **ppvVar12;
  longlong lVar13;
  undefined1 auStack_f8 [32];
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 *local_d0;
  longlong local_c8;
  undefined8 local_c0;
  longlong local_b8;
  void *local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined8 local_90;
  void *local_88 [8];
  undefined1 local_41;
  ulonglong local_40;
  
  local_c0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_f8;
  lVar13 = 0;
  local_d8 = 0;
  if (param_3 == '\0') {
    pcVar3 = *(code **)(*param_1 + 0x58);
    if (pcVar3 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    }
    cVar7 = (*pcVar3)(param_1,param_2);
  }
  else {
    pcVar3 = *(code **)(*param_1 + 0x50);
    if (pcVar3 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    }
    cVar7 = (*pcVar3)(param_1,param_2);
  }
  if (cVar7 != '\0') {
    plVar9 = param_1 + 0x1a;
    if (param_2 == '\0') {
      plVar9 = param_1 + 0x1c;
    }
    iVar2 = *(int *)((longlong)plVar9 + 0xc);
    if ((iVar2 != 0) && (param_3 != '\0')) {
      plVar9 = param_1 + 0x1a;
      if (param_2 == '\0') {
        plVar9 = param_1 + 0x1c;
      }
      lVar8 = FUN_181233e10(&local_40,*(undefined4 *)((longlong)plVar9 + 0xc));
      FUN_180495150(&local_c8,lVar8,&local_41 + -lVar8);
      pcVar11 = "Output #";
      if (param_2 != '\0') {
        pcVar11 = "Input #";
      }
      FUN_18049c4e0(&local_d8,pcVar11);
      local_d0 = &local_d8;
      plVar9 = (longlong *)FUN_181232d30(&local_d8,&local_c8);
      local_d0 = (undefined4 *)*plVar9;
      if ((*(uint *)((longlong)local_d0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)((longlong)local_d0 + -0x10) = *(int *)((longlong)local_d0 + -0x10) + 1;
        UNLOCK();
      }
      puVar10 = (uint *)(CONCAT44(uStack_d4,local_d8) + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      local_b8 = *param_4;
      *param_4 = (longlong)local_d0;
      puVar10 = (uint *)(local_b8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      puVar10 = (uint *)(local_c8 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      if (iVar2 < 1) {
        local_b0 = (void *)0x0;
        local_98 = 4;
        local_90 = 0xffffffff;
        local_a8 = 0;
        local_a0 = 0;
        ppvVar12 = &local_b0;
        bVar6 = false;
        bVar5 = true;
      }
      else {
        plVar9 = param_1 + 0x1a;
        if (param_2 == '\0') {
          plVar9 = param_1 + 0x1c;
        }
        if (iVar2 - 1U < *(uint *)((longlong)plVar9 + 0xc)) {
          lVar13 = *(longlong *)(*plVar9 + (longlong)(int)(iVar2 - 1U) * 8);
        }
        FUN_18123db10(local_88,lVar13 + 0x38);
        ppvVar12 = local_88;
        bVar6 = true;
        bVar5 = false;
      }
      pvVar4 = (void *)param_4[1];
      param_4[1] = (longlong)*ppvVar12;
      *ppvVar12 = pvVar4;
      pvVar4 = ppvVar12[2];
      param_4[2] = (longlong)ppvVar12[1];
      param_4[3] = (longlong)pvVar4;
      param_4[4] = (longlong)ppvVar12[3];
      *(undefined4 *)(param_4 + 5) = *(undefined4 *)(ppvVar12 + 4);
      *(undefined1 *)((longlong)param_4 + 0x2c) = *(undefined1 *)((longlong)ppvVar12 + 0x24);
      if (bVar5) {
                    /* WARNING: Subroutine does not return */
        free(local_b0);
      }
      if (bVar6) {
                    /* WARNING: Subroutine does not return */
        free(local_88[0]);
      }
      *(undefined1 *)(param_4 + 6) = 1;
    }
  }
}



############ FUN_ 1813ac660 size=2448 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813ac660(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  void *pvVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  longlong *plVar9;
  longlong lVar10;
  undefined8 *puVar11;
  ulonglong uVar12;
  void *_Dst;
  uint *puVar13;
  uint *puVar14;
  int iVar15;
  size_t _Size;
  ushort uVar16;
  undefined1 auStack_208 [32];
  char local_1e8 [8];
  undefined1 local_1e0 [8];
  undefined1 local_1d8 [8];
  int local_1d0;
  ushort local_1cc [2];
  ushort local_1c8 [4];
  longlong local_1c0;
  longlong local_1b8;
  longlong local_1b0;
  uint local_1a8;
  void *local_1a0;
  uint local_198;
  int local_194;
  longlong local_190;
  longlong local_188;
  char *local_180;
  char *local_178;
  char *local_170;
  char *local_168;
  longlong local_160;
  longlong local_158;
  char *local_150;
  char *local_148;
  char *local_140;
  char *local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118 [2];
  undefined **local_108;
  undefined1 local_100 [8];
  undefined8 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined8 local_d8;
  ulonglong local_d0;
  undefined8 local_c8;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  longlong local_a0;
  longlong local_98;
  longlong local_90;
  longlong *local_88;
  undefined8 local_80;
  longlong *local_78;
  undefined8 local_70;
  void *local_68;
  longlong *local_60;
  undefined1 local_39;
  ulonglong local_38 [2];
  
  local_80 = 0xfffffffffffffffe;
  local_38[0] = DAT_182615970 ^ (ulonglong)auStack_208;
  FUN_18049c4e0(&local_178,&DAT_1821e3e74);
  iVar4 = FUN_1812498b0(param_2,"NumCuePoints",*(undefined1 *)(param_2 + 0x20),0);
  if (iVar4 < 0) {
    local_180 = local_178;
    puVar13 = (uint *)(local_178 + -0x10);
    uVar5 = *puVar13;
  }
  else {
    plVar9 = (longlong *)FUN_181249970(param_2 + 0x10,iVar4);
    local_180 = (char *)*plVar9;
    puVar13 = (uint *)(local_180 + -0x10);
    uVar5 = *puVar13;
  }
  if ((uVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar13 = *puVar13 + 1;
    UNLOCK();
  }
  iVar4 = atoi(local_180);
  local_194 = iVar4;
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  puVar13 = (uint *)(local_178 + -0x10);
  if ((*puVar13 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar13;
    *puVar13 = *puVar13 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
  }
  if (0 < iVar4) {
    local_108 = juce::OutputStream::vftable;
    FUN_18049c4e0(local_100,&DAT_182496878);
    local_108 = juce::MemoryOutputStream::vftable;
    local_f0 = 0;
    local_e8 = 0;
    local_e0 = 0;
    local_d8 = 0;
    local_d0 = 0;
    local_c8 = 0;
    local_1cc[0] = (ushort)iVar4 << 8 | (ushort)iVar4 >> 8;
    local_f8 = param_1;
    (*(code *)PTR_FUN_182496b98)(&local_108,local_1cc,2);
    FUN_18049c4e0(&local_168,&DAT_1821e3df4);
    iVar6 = FUN_1812498b0(param_2,"NumCueLabels",*(undefined1 *)(param_2 + 0x20),0);
    if (iVar6 < 0) {
      local_170 = local_168;
      puVar13 = (uint *)(local_168 + -0x10);
      uVar5 = *puVar13;
    }
    else {
      plVar9 = (longlong *)FUN_181249970(param_2 + 0x10,iVar6);
      local_170 = (char *)*plVar9;
      puVar13 = (uint *)(local_170 + -0x10);
      uVar5 = *puVar13;
    }
    if ((uVar5 & 0x30000000) == 0) {
      LOCK();
      *puVar13 = *puVar13 + 1;
      UNLOCK();
    }
    iVar6 = atoi(local_170);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    puVar13 = (uint *)(local_168 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar5 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    cVar3 = FUN_1813ad020(param_2);
    local_1a8 = (uint)(cVar3 != '\0');
    local_1d0 = 0;
    if (0 < iVar4) {
      local_78 = &local_1c0;
      local_60 = &local_1b8;
      do {
        uVar5 = local_1a8;
        lVar10 = FUN_181233e10(local_38,local_1d0);
        FUN_180495150(&local_158,lVar10,&local_39 + -lVar10);
        FUN_18049c4e0(&local_160,&DAT_1821e3e3c);
        plVar9 = (longlong *)FUN_181232d30(&local_160,&local_158);
        lVar10 = *plVar9;
        if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
          UNLOCK();
        }
        puVar13 = (uint *)(local_160 + -0x10);
        local_188 = lVar10;
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        puVar13 = (uint *)(local_158 + -0x10);
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        FUN_18049c4e0(&local_148,&DAT_1821e3e2c);
        local_1c0 = local_188;
        if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
          UNLOCK();
        }
        FUN_181232e20(&local_1c0,"Identifier","");
        local_b8 = local_1c0;
        puVar13 = (uint *)(local_1c0 + -0x10);
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          *puVar13 = *puVar13 + 1;
          UNLOCK();
        }
        puVar14 = (uint *)(local_1c0 + -0x10);
        if ((*puVar14 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar14;
          *puVar14 = *puVar14 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar14);
          }
        }
        iVar4 = FUN_1812498b0(param_2,local_1c0,*(undefined1 *)(param_2 + 0x20),0);
        if (iVar4 < 0) {
          local_150 = local_148;
          puVar14 = (uint *)(local_148 + -0x10);
          uVar8 = *puVar14;
        }
        else {
          plVar9 = (longlong *)FUN_181249970(param_2 + 0x10,iVar4);
          local_150 = (char *)*plVar9;
          puVar14 = (uint *)(local_150 + -0x10);
          uVar8 = *puVar14;
        }
        if ((uVar8 & 0x30000000) == 0) {
          LOCK();
          *puVar14 = *puVar14 + 1;
          UNLOCK();
        }
        iVar4 = atoi(local_150);
        if ((*puVar14 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar14;
          *puVar14 = *puVar14 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar14);
          }
        }
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        puVar13 = (uint *)(local_148 + -0x10);
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        FUN_18049c4e0(&local_138,&DAT_1821e3eac);
        local_1b8 = local_188;
        if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar10 + -0x10) = *(int *)(lVar10 + -0x10) + 1;
          UNLOCK();
        }
        FUN_181232e20(&local_1b8,"Offset","");
        local_b0 = local_1b8;
        puVar13 = (uint *)(local_1b8 + -0x10);
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          *puVar13 = *puVar13 + 1;
          UNLOCK();
        }
        puVar14 = (uint *)(local_1b8 + -0x10);
        if ((*puVar14 & 0x30000000) == 0) {
          LOCK();
          uVar8 = *puVar14;
          *puVar14 = *puVar14 - 1;
          UNLOCK();
          if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar14);
          }
        }
        iVar7 = FUN_1812498b0(param_2,local_1b8,*(undefined1 *)(param_2 + 0x20),0);
        if (iVar7 < 0) {
          local_140 = local_138;
          puVar14 = (uint *)(local_138 + -0x10);
          uVar8 = *puVar14;
        }
        else {
          plVar9 = (longlong *)FUN_181249970(param_2 + 0x10,iVar7);
          local_140 = (char *)*plVar9;
          puVar14 = (uint *)(local_140 + -0x10);
          uVar8 = *puVar14;
        }
        if ((uVar8 & 0x30000000) == 0) {
          LOCK();
          *puVar14 = *puVar14 + 1;
          UNLOCK();
        }
        uVar8 = atoi(local_140);
        iVar7 = local_1d0;
        if ((*puVar14 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar14;
          *puVar14 = *puVar14 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar14);
          }
        }
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        puVar13 = (uint *)(local_138 + -0x10);
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        FUN_181212060(&local_130,local_1d0);
        FUN_181246550(&local_1a0,"CueLabel",&local_130);
        puVar13 = (uint *)(local_130 + -0x10);
        if ((*puVar13 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar13;
          *puVar13 = *puVar13 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar13);
          }
        }
        iVar15 = 0;
        if (0 < iVar6) {
          local_88 = &local_1b0;
          do {
            FUN_181212060(&local_128,iVar15);
            FUN_181246550(&local_190,"CueLabel",&local_128);
            puVar13 = (uint *)(local_128 + -0x10);
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
            FUN_18049c4e0(&local_120,&DAT_1821e3e8c);
            local_1b0 = local_190;
            if ((*(uint *)(local_190 + -0x10) & 0x30000000) == 0) {
              LOCK();
              *(int *)(local_190 + -0x10) = *(int *)(local_190 + -0x10) + 1;
              UNLOCK();
            }
            FUN_181232e20(&local_1b0,"Identifier","");
            local_a8 = local_1b0;
            puVar13 = (uint *)(local_1b0 + -0x10);
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              *puVar13 = *puVar13 + 1;
              UNLOCK();
            }
            puVar14 = (uint *)(local_1b0 + -0x10);
            if ((*puVar14 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar14;
              *puVar14 = *puVar14 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar14);
              }
            }
            puVar11 = (undefined8 *)FUN_18122c970(param_2,&local_90,local_1b0);
            iVar7 = atoi((char *)*puVar11);
            puVar14 = (uint *)(local_90 + -0x10);
            if ((*puVar14 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar14;
              *puVar14 = *puVar14 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar14);
              }
            }
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
            puVar13 = (uint *)(local_120 + -0x10);
            if ((*puVar13 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar13;
              *puVar13 = *puVar13 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar13);
              }
            }
            if (local_1a8 + iVar7 == uVar5 + iVar4) {
              local_118[0] = local_190;
              puVar13 = (uint *)(local_190 + -0x10);
              if ((*puVar13 & 0x30000000) == 0) {
                LOCK();
                *puVar13 = *puVar13 + 1;
                UNLOCK();
              }
              puVar11 = (undefined8 *)FUN_1812465e0(&local_98,local_118,&DAT_1821e8c14);
              local_70 = *puVar11;
              puVar11 = (undefined8 *)FUN_18122c970(param_2,&local_a0);
              local_68 = local_1a0;
              pvVar2 = (void *)*puVar11;
              *puVar11 = local_1a0;
              puVar14 = (uint *)(local_a0 + -0x10);
              local_1a0 = pvVar2;
              if ((*puVar14 & 0x30000000) == 0) {
                LOCK();
                uVar1 = *puVar14;
                *puVar14 = *puVar14 - 1;
                UNLOCK();
                if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar14);
                }
              }
              puVar14 = (uint *)(local_98 + -0x10);
              if ((*puVar14 & 0x30000000) == 0) {
                LOCK();
                uVar1 = *puVar14;
                *puVar14 = *puVar14 - 1;
                UNLOCK();
                if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar14);
                }
              }
              iVar7 = local_1d0;
              if ((*puVar13 & 0x30000000) == 0) {
                LOCK();
                uVar1 = *puVar13;
                *puVar13 = *puVar13 - 1;
                UNLOCK();
                if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                  free(puVar13);
                }
              }
              break;
            }
            FUN_180495200(local_190);
            iVar15 = iVar15 + 1;
            iVar7 = local_1d0;
          } while (iVar15 < iVar6);
        }
        uVar16 = (ushort)(uVar5 + iVar4);
        local_1c8[0] = uVar16 << 8 | uVar16 >> 8;
        (*(code *)local_108[4])(&local_108,local_1c8,2);
        local_198 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
        (*(code *)local_108[4])(&local_108,&local_198,4);
        pvVar2 = local_1a0;
        uVar12 = FUN_18049d240(local_1a0);
        _Size = 0xfe;
        if (uVar12 < 0xfe) {
          _Size = uVar12;
        }
        local_1e8[0] = (char)_Size + '\x01';
        (*(code *)local_108[4])(&local_108,local_1e8,1);
        if ((_Size != 0) && (_Dst = (void *)FUN_181234e40(&local_108,_Size), _Dst != (void *)0x0)) {
          memcpy(_Dst,pvVar2,_Size);
        }
        local_1e0[0] = 0;
        (*(code *)local_108[4])(&local_108,local_1e0,1);
        if ((local_d0 & 1) != 0) {
          local_1d8[0] = 0;
          (*(code *)local_108[4])(&local_108,local_1d8,1);
        }
        FUN_180495200(pvVar2);
        FUN_180495200(local_188);
        local_1d0 = iVar7 + 1;
      } while (local_1d0 < local_194);
    }
    FUN_18124a420(&local_108);
  }
}



############ FUN_ 1815605d0 size=641 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1815605d0(longlong param_1,longlong *param_2)

{
  uint *_Memory;
  uint uVar1;
  longlong *plVar2;
  longlong lVar3;
  uint *puVar4;
  uint *_Memory_00;
  undefined4 uVar5;
  double dVar6;
  undefined1 auStack_e8 [32];
  float local_c8;
  undefined4 local_c4;
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  longlong local_a8;
  double local_a0;
  longlong local_98;
  longlong local_90;
  longlong local_88 [2];
  longlong *local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  undefined1 local_31;
  ulonglong local_30;
  
  local_88[1] = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_e8;
  *param_2 = (longlong)&DAT_1821dbf98;
  local_c4 = 1;
  local_78 = param_2;
  if (*(char *)(param_1 + 0xa00) == '\0') {
    local_c8 = *(float *)(*(longlong *)(param_1 + 0xe0) + 0x188);
    FUN_1812339a0(&local_b0,(double)local_c8,1,0);
    local_68 = *param_2;
    *param_2 = local_b0;
    puVar4 = (uint *)(local_68 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    dVar6 = (double)local_c8;
    if (DAT_1824c43e8 <
        (float)(double)CONCAT44((uint)((ulonglong)dVar6 >> 0x20) & DAT_1824c4f10._4_4_,
                                SUB84(dVar6,0) & (uint)DAT_1824c4f10)) {
      local_a0 = (double)local_c8 + DAT_1824c4520;
      lVar3 = FUN_181233e10(&local_30,(ulonglong)local_a0 & 0xffffffff);
      FUN_180495150(&local_98,lVar3,&local_31 + -lVar3);
      local_58 = *param_2;
      *param_2 = local_98;
      puVar4 = (uint *)(local_58 + -0x10);
      uVar1 = *puVar4;
    }
    else {
      FUN_1812339a0(&local_a8,dVar6,1,0);
      local_60 = *param_2;
      *param_2 = local_a8;
      puVar4 = (uint *)(local_60 + -0x10);
      uVar1 = *puVar4;
    }
  }
  else {
    uVar5 = (**(code **)(**(longlong **)(param_1 + 0xe0) + 8))();
    plVar2 = (longlong *)
             (**(code **)(**(longlong **)(param_1 + 0xe0) + 0x48))
                       (*(longlong **)(param_1 + 0xe0),&local_b8,uVar5,0x40);
    local_70 = *param_2;
    *param_2 = *plVar2;
    *plVar2 = local_70;
    puVar4 = (uint *)(local_b8 + -0x10);
    uVar1 = *puVar4;
  }
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  local_90 = *(longlong *)(param_1 + 0x9d8);
  puVar4 = (uint *)(local_90 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  FUN_18049c4e0(&local_c0,&DAT_1822144d4);
  plVar2 = (longlong *)FUN_181232d30(&local_c0,&local_90);
  local_88[0] = *plVar2;
  _Memory = (uint *)(local_88[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_c4 = 3;
  _Memory_00 = (uint *)(local_c0 + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  FUN_181232d30(param_2,local_88);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
}



############ FUN_ 181611cc0 size=783 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181611cc0(longlong param_1,longlong param_2,int param_3)

{
  uint uVar1;
  char cVar2;
  longlong lVar3;
  longlong *plVar4;
  uint *puVar5;
  uint *puVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  float fVar11;
  undefined1 auStack_f8 [32];
  undefined4 local_d8;
  longlong local_c0;
  longlong *local_b8;
  longlong local_b0;
  longlong local_a8;
  longlong local_a0;
  longlong local_98 [2];
  longlong *local_88;
  undefined1 local_80 [39];
  undefined1 local_59;
  ulonglong local_58 [4];
  
  local_98[1] = 0xfffffffffffffffe;
  local_58[0] = DAT_182615970 ^ (ulonglong)auStack_f8;
  if ((*(uint *)(param_2 + 0x10) >> 5 & 1) != 0) {
    (**(code **)(*(longlong *)(param_1 + 0x370) + 0x10))((longlong *)(param_1 + 0x370),&local_88);
    cVar2 = (**(code **)(*local_88 + 0x90))();
    if (cVar2 != '\0') {
      lVar3 = FUN_181233e10(local_58,param_3);
      FUN_180495150(&local_a0,lVar3,&local_59 + -lVar3);
      FUN_18049c4e0(&local_b0,&DAT_1822d7774);
      plVar4 = (longlong *)FUN_181232d30(&local_b0,&local_a0);
      local_c0 = *plVar4;
      if ((*(uint *)(local_c0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_c0 + -0x10) = *(int *)(local_c0 + -0x10) + 1;
        UNLOCK();
      }
      puVar5 = (uint *)(local_b0 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      local_b8 = &local_c0;
      FUN_181232e20(&local_c0,&DAT_182218e9c,&DAT_182218e9f);
      local_b8 = (longlong *)local_c0;
      puVar5 = (uint *)(local_c0 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        *puVar5 = *puVar5 + 1;
        UNLOCK();
      }
      puVar6 = (uint *)(local_c0 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      plVar4 = (longlong *)FUN_18119aa60(*(undefined8 *)(param_1 + 0x348),local_c0);
      fVar11 = (float)(**(code **)(*plVar4 + 8))(plVar4);
      FUN_18049c4e0(&local_a8,"on/off");
      plVar4 = (longlong *)FUN_1815af780(param_1 + 8,&local_a8);
      (**(code **)(*plVar4 + 0x18))(plVar4,fVar11 != 0.0);
      puVar6 = (uint *)(local_a8 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar5 = (uint *)(local_a0 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      FUN_18049c4e0(local_98,"listen");
      plVar4 = (longlong *)FUN_1815af780(param_1 + 8,local_98);
      lVar3 = *(longlong *)(param_1 + -0x248);
      if ((*(char *)(lVar3 + 0x20) == '\0') && (*(char *)(lVar3 + 0x22) == '\0')) {
        uVar7 = 0;
      }
      else {
        uVar7 = CONCAT71((int7)((ulonglong)lVar3 >> 8),1);
      }
      (**(code **)(*plVar4 + 0x18))(plVar4,uVar7);
      puVar5 = (uint *)(local_98[0] + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar8 = *(undefined8 **)(param_1 + 0x388);
      uVar10 = 0;
      uVar9 = (ulonglong)((longlong)*(undefined8 **)(param_1 + 0x390) + (7 - (longlong)puVar8)) >> 3
      ;
      if (*(undefined8 **)(param_1 + 0x390) < puVar8) {
        uVar9 = uVar10;
      }
      if (uVar9 != 0) {
        do {
          (**(code **)(*(longlong *)*puVar8 + 0x58))((longlong *)*puVar8,0);
          puVar8 = puVar8 + 1;
          uVar10 = uVar10 + 1;
        } while (uVar10 != uVar9);
      }
      plVar4 = *(longlong **)(*(longlong *)(param_1 + 0x388) + (longlong)param_3 * 8);
      (**(code **)(*plVar4 + 0x58))(plVar4,1);
      local_d8 = 0;
      FUN_1815fe690(param_1 + 8,1,0,*(undefined8 *)(param_2 + 0x30));
    }
    (**(code **)(*local_88 + 0xb0))(local_88,local_80);
  }
}



############ FUN_ 18049d7f0 size=313 ############

void FUN_18049d7f0(longlong *param_1,byte *param_2,int param_3)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  byte *pbVar6;
  
  param_3 = param_3 + -1;
  if (param_3 < 1) {
    *(undefined1 *)*param_1 = 0;
    return;
  }
  do {
    bVar1 = *param_2;
    param_2 = param_2 + 1;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar2 = 0x40;
      iVar5 = 0;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar2 < 9) break;
          uVar4 = uVar4 >> 1;
          iVar5 = iVar5 + 1;
          uVar2 = uVar2 >> 1;
        } while ((bVar1 & uVar2) != 0);
      }
      uVar4 = bVar1 & uVar4;
      for (; (iVar5 = iVar5 + -1, -1 < iVar5 && ((*param_2 & 0xc0) == 0x80)); param_2 = param_2 + 1)
      {
        uVar4 = *param_2 & 0x3f | uVar4 << 6;
      }
    }
    if (uVar4 == 0) break;
    if (uVar4 < 0x80) {
      *(char *)*param_1 = (char)uVar4;
      *param_1 = *param_1 + 1;
    }
    else {
      iVar5 = 1;
      if (0x7ff < uVar4) {
        iVar5 = 2;
        if (0xffff < uVar4) {
          iVar5 = 3;
        }
      }
      *(byte *)*param_1 = (byte)(uVar4 >> (char)iVar5 * '\x06') | -1 << (7U - (char)iVar5 & 0x1f);
      *param_1 = *param_1 + 1;
      iVar5 = iVar5 + -1;
      pbVar6 = (byte *)*param_1;
      if (-1 < iVar5) {
        iVar3 = iVar5 * 6;
        do {
          bVar1 = (byte)iVar3;
          iVar3 = iVar3 + -6;
          *pbVar6 = (byte)(uVar4 >> (bVar1 & 0x1f)) & 0x3f | 0x80;
          *param_1 = *param_1 + 1;
          iVar5 = iVar5 + -1;
          pbVar6 = (byte *)*param_1;
        } while (-1 < iVar5);
      }
    }
    param_3 = param_3 + -1;
  } while (0 < param_3);
  *(undefined1 *)*param_1 = 0;
  return;
}



############ FUN_ 181245ee0 size=134 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181245ee0(undefined8 param_1)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  undefined1 auStack_68 [32];
  longlong local_48 [5];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_48[1] = 0xfffffffffffffffe;
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_68;
  lVar2 = FUN_181233ea0(local_18);
  FUN_180495150(local_48,lVar2,&local_19 + -lVar2);
  FUN_181232d30(param_1,local_48);
  _Memory = (uint *)(local_48[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1812339a0 size=437 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812339a0(undefined8 param_1,double param_2,int param_3,char param_4)

{
  uint *puVar1;
  longlong lVar2;
  longlong lVar3;
  ushort uVar4;
  locale *plVar5;
  undefined1 auStack_168 [32];
  undefined8 local_148;
  undefined **local_138 [4];
  longlong *local_118;
  longlong *local_f8;
  undefined4 *local_e0;
  longlong local_c8 [3];
  uint auStack_b0 [2];
  longlong alStack_a8 [10];
  undefined1 local_58 [48];
  ulonglong local_28;
  
  local_148 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_168;
  std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
            ((basic_streambuf<char,std::char_traits<char>_> *)local_138);
  local_138[0] = juce::NumberToStringConverters::StackArrayStream::vftable;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267afd0) {
    _Init_thread_header(&DAT_18267afd0);
    if (DAT_18267afd0 == -1) {
      plVar5 = std::locale::classic();
      DAT_18267af58 = *(longlong **)(plVar5 + 8);
      (**(code **)(*DAT_18267af58 + 8))();
      atexit(FUN_181a4a770);
      _Init_thread_footer(&DAT_18267afd0);
    }
  }
  *local_118 = (longlong)local_58;
  *local_f8 = (longlong)local_58;
  *local_e0 = 0x30;
  std::basic_ostream<char,std::char_traits<char>_>::basic_ostream<char,std::char_traits<char>_>
            ((basic_ostream<char,std::char_traits<char>_> *)local_c8,
             (basic_streambuf<char,std::char_traits<char>_> *)local_138,false);
  if (0 < param_3) {
    uVar4 = 0x2000;
    if (param_4 != '\0') {
      uVar4 = 0x1000;
    }
    puVar1 = (uint *)((longlong)auStack_b0 + (longlong)*(int *)(local_c8[0] + 4));
    *puVar1 = *puVar1 | (uint)uVar4;
    *(longlong *)((longlong)alStack_a8 + (longlong)*(int *)(local_c8[0] + 4)) = (longlong)param_3;
  }
  std::basic_ostream<char,std::char_traits<char>_>::operator<<
            ((basic_ostream<char,std::char_traits<char>_> *)local_c8,param_2);
  std::basic_ostream<char,std::char_traits<char>_>::_vbase_destructor_
            ((basic_ostream<char,std::char_traits<char>_> *)local_c8);
  lVar2 = *local_f8;
  lVar3 = *local_118;
  std::basic_streambuf<char,std::char_traits<char>_>::~basic_streambuf<char,std::char_traits<char>_>
            ((basic_streambuf<char,std::char_traits<char>_> *)local_138);
  FUN_180495150(param_1,local_58,lVar2 - lVar3);
}



############ FUN_ 1811efc90 size=282 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811efc90(LPCRITICAL_SECTION param_1,longlong *param_2)

{
  uint uVar1;
  uint *puVar2;
  undefined8 ****ppppuVar3;
  undefined1 auStack_78 [32];
  longlong local_58 [2];
  longlong *local_48;
  LPCRITICAL_SECTION local_40;
  undefined8 ***local_38 [2];
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_58[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_48 = param_2;
  local_40 = param_1;
  EnterCriticalSection(param_1);
  FUN_180487940(local_38,*param_2);
  ppppuVar3 = local_38;
  if (0xf < local_20) {
    ppppuVar3 = (undefined8 ****)local_38[0];
  }
  FUN_180495150(local_58,ppppuVar3,local_28);
  FUN_180486900(&param_1[4].LockSemaphore,local_58);
  puVar2 = (uint *)(local_58[0] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  if (local_20 < 0x10) {
    LeaveCriticalSection(param_1);
    puVar2 = (uint *)(*param_2 + -0x10);
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
  }
  ppppuVar3 = (undefined8 ****)local_38[0];
  if ((0xfff < local_20 + 1) &&
     (ppppuVar3 = (undefined8 ****)local_38[0][-1],
     0x1f < (ulonglong)((longlong)local_38[0] + (-8 - (longlong)ppppuVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(ppppuVar3);
}



############ FUN_ 18048eab0 size=324 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18048eab0(undefined8 param_1,undefined8 param_2,undefined8 *param_3,longlong *param_4,
                  uint *param_5)

{
  undefined8 uVar1;
  uint uVar2;
  uint *_Memory;
  char *pcVar3;
  char *pcVar4;
  undefined1 auStack_78 [32];
  longlong local_58 [6];
  char local_23 [3];
  ulonglong local_20;
  
  local_58[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  uVar1 = FUN_181245ee0(param_1,*param_3);
  uVar1 = FUN_181232d30(uVar1,param_2);
  local_58[2] = -1;
  do {
    local_58[2] = local_58[2] + 1;
  } while (*(char *)(*param_4 + local_58[2]) != '\0');
  local_58[2] = local_58[2] + *param_4;
  FUN_181232e20(uVar1);
  uVar1 = FUN_181232d30(uVar1,param_2);
  uVar2 = *param_5;
  pcVar3 = local_23 + 2;
  local_23[2] = 0;
  if ((int)uVar2 < 0) {
    uVar2 = -uVar2;
    do {
      pcVar4 = pcVar3;
      pcVar3 = pcVar4 + -1;
      *pcVar3 = (char)uVar2 + (char)((ulonglong)uVar2 / 10) * -10 + '0';
      uVar2 = (uint)((ulonglong)uVar2 / 10);
    } while (uVar2 != 0);
    pcVar3 = pcVar4 + -2;
    *pcVar3 = '-';
  }
  else {
    do {
      pcVar3 = pcVar3 + -1;
      *pcVar3 = (char)uVar2 + (char)((ulonglong)uVar2 / 10) * -10 + '0';
      uVar2 = (uint)((ulonglong)uVar2 / 10);
    } while (uVar2 != 0);
  }
  FUN_180495150(local_58,pcVar3,local_23 + (2 - (longlong)pcVar3));
  FUN_181232d30(uVar1,local_58);
  _Memory = (uint *)(local_58[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181211fd0 size=125 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181211fd0(undefined8 param_1,uint param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  char *pcVar3;
  undefined1 auStack_58 [62];
  char local_1a [2];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_1a[1] = 0;
  pcVar3 = local_1a + 1;
  uVar2 = (ulonglong)param_2;
  do {
    pcVar3 = pcVar3 + -1;
    uVar1 = uVar2 / 10;
    *pcVar3 = (char)uVar2 + (char)uVar1 * -10 + '0';
    uVar2 = uVar1;
  } while ((int)uVar1 != 0);
  FUN_180495150(param_1,pcVar3,local_1a + (1 - (longlong)pcVar3));
}



############ FUN_ 180495a70 size=77 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180495a70(undefined8 param_1,undefined8 param_2,undefined8 *param_3)

{
  longlong lVar1;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined1 local_11;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_38 = param_2;
  lVar1 = FUN_181233ea0(&local_10,*param_3);
  FUN_180495150(param_2,lVar1,&local_11 + -lVar1);
}



############ FUN_ 181240c90 size=392 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181240c90(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong *plVar2;
  uint *puVar3;
  uint uVar4;
  char *pcVar5;
  double dVar6;
  undefined1 auStack_78 [32];
  uint local_58;
  longlong local_50;
  longlong local_48;
  longlong local_40 [5];
  undefined1 local_11;
  ulonglong local_10;
  
  local_40[1] = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_58 = 0;
  local_48 = param_1;
  if (param_2 == 1) {
    pcVar5 = " byte";
  }
  else {
    if (0x3ff < param_2) {
      if (param_2 < 0x100000) {
        pcVar5 = " KB";
        dVar6 = DAT_1824c4350;
      }
      else if (param_2 < 0x40000000) {
        pcVar5 = " MB";
        dVar6 = DAT_1824c4400;
      }
      else {
        pcVar5 = " GB";
        dVar6 = DAT_1824c4450;
      }
      uVar4 = 1;
      FUN_1812339a0(&local_48,(double)param_2 / dVar6,1,0);
      plVar2 = &local_48;
      goto LAB_181240d7a;
    }
    pcVar5 = " bytes";
  }
  lVar1 = FUN_181233ea0(&local_10);
  FUN_180495150(local_40,lVar1,&local_11 + -lVar1);
  plVar2 = local_40;
  uVar4 = 2;
LAB_181240d7a:
  local_50 = *plVar2;
  *plVar2 = (longlong)&DAT_1821dbf98;
  local_58 = uVar4;
  FUN_1812465e0(param_1,&local_50,pcVar5);
  local_58 = uVar4 | 4;
  if ((uVar4 & 2) != 0) {
    local_58 = uVar4 & 0xfffffffd | 4;
    puVar3 = (uint *)(local_40[0] + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
  }
  if (((local_58 & 1) != 0) && (puVar3 = (uint *)(local_48 + -0x10), (*puVar3 & 0x30000000) == 0)) {
    LOCK();
    uVar4 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
}



############ FUN_ 181211eb0 size=180 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181211eb0(undefined8 param_1,uint param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  char *pcVar3;
  char *pcVar4;
  undefined1 auStack_58 [61];
  char local_1b [3];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_1b[2] = 0;
  pcVar3 = local_1b + 2;
  uVar2 = (ulonglong)param_2;
  if ((int)param_2 < 0) {
    param_2 = -param_2;
    do {
      pcVar4 = pcVar3;
      pcVar3 = pcVar4 + -1;
      *pcVar3 = (char)param_2 + (char)((ulonglong)param_2 / 10) * -10 + '0';
      param_2 = (uint)((ulonglong)param_2 / 10);
    } while (param_2 != 0);
    pcVar3 = pcVar4 + -2;
    *pcVar3 = '-';
  }
  else {
    do {
      pcVar3 = pcVar3 + -1;
      uVar1 = uVar2 / 10;
      *pcVar3 = (char)uVar2 + (char)uVar1 * -10 + '0';
      uVar2 = uVar1;
    } while ((int)uVar1 != 0);
  }
  FUN_180495150(param_1,pcVar3,local_1b + (2 - (longlong)pcVar3));
}



############ FUN_ 181211f70 size=69 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181211f70(undefined8 param_1)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233ea0(local_18);
  FUN_180495150(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 181233800 size=180 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181233800(undefined8 param_1,uint param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  char *pcVar3;
  char *pcVar4;
  undefined1 auStack_58 [61];
  char local_1b [3];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_1b[2] = 0;
  pcVar3 = local_1b + 2;
  uVar2 = (ulonglong)param_2;
  if ((int)param_2 < 0) {
    param_2 = -param_2;
    do {
      pcVar4 = pcVar3;
      pcVar3 = pcVar4 + -1;
      *pcVar3 = (char)param_2 + (char)((ulonglong)param_2 / 10) * -10 + '0';
      param_2 = (uint)((ulonglong)param_2 / 10);
    } while (param_2 != 0);
    pcVar3 = pcVar4 + -2;
    *pcVar3 = '-';
  }
  else {
    do {
      pcVar3 = pcVar3 + -1;
      uVar1 = uVar2 / 10;
      *pcVar3 = (char)uVar2 + (char)uVar1 * -10 + '0';
      uVar2 = uVar1;
    } while ((int)uVar1 != 0);
  }
  FUN_180495150(param_1,pcVar3,local_1b + (2 - (longlong)pcVar3));
}



############ FUN_ 1812338c0 size=69 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812338c0(undefined8 param_1)

{
  longlong lVar1;
  undefined1 auStack_58 [63];
  undefined1 local_19;
  ulonglong local_18 [2];
  
  local_18[0] = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar1 = FUN_181233ea0(local_18);
  FUN_180495150(param_1,lVar1,&local_19 + -lVar1);
}



############ FUN_ 181245de0 size=237 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181245de0(undefined8 param_1,uint param_2)

{
  uint uVar1;
  ulonglong uVar2;
  uint *_Memory;
  ulonglong uVar3;
  char *pcVar4;
  char *pcVar5;
  undefined1 auStack_68 [32];
  longlong local_48 [5];
  char local_1b [3];
  ulonglong local_18;
  
  local_48[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  pcVar4 = local_1b + 2;
  local_1b[2] = 0;
  uVar3 = (ulonglong)param_2;
  if ((int)param_2 < 0) {
    param_2 = -param_2;
    do {
      pcVar5 = pcVar4;
      pcVar4 = pcVar5 + -1;
      *pcVar4 = (char)param_2 + (char)((ulonglong)param_2 / 10) * -10 + '0';
      param_2 = (uint)((ulonglong)param_2 / 10);
    } while (param_2 != 0);
    pcVar4 = pcVar5 + -2;
    *pcVar4 = '-';
  }
  else {
    do {
      pcVar4 = pcVar4 + -1;
      uVar2 = uVar3 / 10;
      *pcVar4 = (char)uVar3 + (char)uVar2 * -10 + '0';
      uVar3 = uVar2;
    } while ((int)uVar2 != 0);
  }
  FUN_180495150(local_48,pcVar4,local_1b + (2 - (longlong)pcVar4));
  FUN_181232d30(param_1,local_48);
  _Memory = (uint *)(local_48[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181249510 size=37 ############

undefined8 FUN_181249510(undefined8 param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  
  puVar1 = param_2 + 2;
  if (0xf < (ulonglong)param_2[3]) {
    param_2 = (undefined8 *)*param_2;
  }
  FUN_180495150(param_1,param_2,*puVar1);
  return param_1;
}



############ FUN_ 1813bb6b0 size=269 ############

void FUN_1813bb6b0(longlong param_1,float *param_2)

{
  int iVar1;
  int iVar2;
  
  iVar2 = SUB84((double)(param_2[1] * DAT_1824c3c58 * param_2[2]) + DAT_1824c4520,0);
  if (iVar2 < 1) {
    iVar2 = 1;
  }
  if ((iVar2 != *(int *)(param_1 + 100)) || (NAN(*param_2))) {
    *(int *)(param_1 + 100) = iVar2;
    *(int *)(param_1 + 0x68) = iVar2;
    FUN_180534840(param_1 + 0x78,iVar2);
    if (1 < iVar2) {
      FUN_180557920(*(undefined8 *)(param_1 + 0x78),*param_2,0,DAT_1824c3ea4,
                    *(int *)(param_1 + 100) + -1);
    }
    iVar2 = *(int *)(param_1 + 100) + -1;
    if (-1 < iVar2) {
      iVar1 = *(int *)(param_1 + 0x84);
      if (iVar1 <= iVar2) {
        if (*(int *)(param_1 + 0x80) < iVar1 + 1) {
          FUN_1804af790(param_1 + 0x78,iVar1 + 9 + (iVar1 + 1) / 2 & 0xfffffff8);
        }
        iVar2 = *(int *)(param_1 + 0x84);
        *(int *)(param_1 + 0x84) = iVar2 + 1;
      }
      *(undefined4 *)(*(longlong *)(param_1 + 0x78) + (longlong)iVar2 * 4) = 0x3f800000;
    }
  }
  return;
}



############ FUN_ 18148ad90 size=45 ############

void FUN_18148ad90(longlong param_1)

{
  FUN_181411be0(param_1 + 0x108,"deleteButtonAlpha",0,DAT_1824c4680,DAT_1824c4680);
  return;
}



############ FUN_ 18148add0 size=50 ############

void FUN_18148add0(longlong param_1)

{
  FUN_181411be0(param_1 + 0x108,"deleteButtonAlpha",DAT_1824c3ea4,DAT_1824c4680,DAT_1824c4680);
  return;
}



############ FUN_ 1815527f0 size=195 ############

void FUN_1815527f0(longlong *param_1)

{
  char cVar1;
  longlong lVar2;
  undefined4 uVar3;
  
  if (*(code **)(*param_1 + 0x38) == FUN_181552aa0) {
    lVar2 = param_1[0x1c];
    if ((lVar2 != 0) && ((*(byte *)((longlong)param_1 + 0xa9) & 0x10) == 0)) {
      if ((param_1[3] != 0) && (cVar1 = FUN_18133eaa0(), cVar1 == '\0')) {
        return;
      }
      FUN_1811c2330(lVar2);
      uVar3 = FUN_1811b6ab0(param_1[0x1c]);
      FUN_1811bf680(param_1[0x1c],uVar3,1);
      if ((longlong *)param_1[0x1c] != (longlong *)0x0) {
        uVar3 = (**(code **)(*(longlong *)param_1[0x1c] + 8))();
        FUN_181411be0(param_1[0x144],"normVal",uVar3,DAT_1824c4680,DAT_1824c4680);
      }
      FUN_1811bf8a0(param_1[0x1c]);
      return;
    }
  }
  else {
    (**(code **)(*param_1 + 0x38))();
  }
  return;
}



############ FUN_ 181552aa0 size=167 ############

void FUN_181552aa0(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  undefined4 uVar3;
  
  lVar2 = *(longlong *)(param_1 + 0xe0);
  if ((lVar2 == 0) || ((*(byte *)(param_1 + 0xa9) & 0x10) != 0)) {
    return;
  }
  if ((*(longlong *)(param_1 + 0x18) != 0) && (cVar1 = FUN_18133eaa0(), cVar1 == '\0')) {
    return;
  }
  FUN_1811c2330(lVar2);
  uVar3 = FUN_1811b6ab0(*(undefined8 *)(param_1 + 0xe0));
  FUN_1811bf680(*(undefined8 *)(param_1 + 0xe0),uVar3,1);
  if (*(longlong **)(param_1 + 0xe0) != (longlong *)0x0) {
    uVar3 = (**(code **)(**(longlong **)(param_1 + 0xe0) + 8))();
    FUN_181411be0(*(undefined8 *)(param_1 + 0xa20),"normVal",uVar3,DAT_1824c4680,DAT_1824c4680);
  }
  FUN_1811bf8a0(*(undefined8 *)(param_1 + 0xe0));
  return;
}



############ FUN_ 18155a180 size=69 ############

void FUN_18155a180(longlong param_1)

{
  undefined4 uVar1;
  
  if (*(longlong **)(param_1 + 0xe0) != (longlong *)0x0) {
    uVar1 = (**(code **)(**(longlong **)(param_1 + 0xe0) + 8))();
    FUN_181411be0(*(undefined8 *)(param_1 + 0xa20),"normVal",uVar1,DAT_1824c4680,DAT_1824c4680);
  }
  return;
}



############ FUN_ 18155b8b0 size=99 ############

void FUN_18155b8b0(longlong param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_1811b6ab0(*(undefined8 *)(param_1 + 0xe0));
  FUN_1811bf680(*(undefined8 *)(param_1 + 0xe0),uVar1,1);
  if (*(longlong **)(param_1 + 0xe0) != (longlong *)0x0) {
    uVar1 = (**(code **)(**(longlong **)(param_1 + 0xe0) + 8))();
    FUN_181411be0(*(undefined8 *)(param_1 + 0xa20),"normVal",uVar1,DAT_1824c4680,DAT_1824c4680);
  }
  return;
}



############ FUN_ 1815da420 size=440 ############

void FUN_1815da420(longlong *param_1,undefined8 param_2)

{
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  undefined1 local_res18 [4];
  undefined4 local_res1c;
  undefined1 local_res20 [8];
  
  plVar1 = param_1 + 0x41;
  if (*(code **)(*plVar1 + 8) == FUN_180584490) {
    if (param_1[0x42] == 0) {
      FUN_1805849b0(param_1);
    }
    lVar3 = param_1[0x42];
  }
  else {
    lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  FUN_1813f22a0(lVar3,local_res8,DAT_1826742a8,param_1);
  if (*(code **)(*plVar1 + 8) == FUN_180584490) {
    if (param_1[0x42] == 0) {
      FUN_1805849b0(param_1);
    }
    lVar3 = param_1[0x42];
  }
  else {
    lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  FUN_1813f22a0(lVar3,local_res18,DAT_182674218,param_1);
  if (*(code **)(*plVar1 + 8) == FUN_180584490) {
    if (param_1[0x42] == 0) {
      FUN_1805849b0(param_1);
    }
    lVar3 = param_1[0x42];
  }
  else {
    lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  puVar2 = (undefined8 *)FUN_18140e230(local_res20,local_resc);
  FUN_1813f0dc0(lVar3,DAT_182674230,*puVar2,param_1);
  if (*(code **)(*plVar1 + 8) == FUN_180584490) {
    if (param_1[0x42] == 0) {
      FUN_1805849b0(param_1);
    }
    lVar3 = param_1[0x42];
  }
  else {
    lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  puVar2 = (undefined8 *)FUN_18140e230(local_res8,local_res1c);
  FUN_1813f0dc0(lVar3,DAT_182674268,*puVar2,param_1);
  (**(code **)(*param_1 + 0x58))(param_1,1);
  FUN_1815d8700(param_1,param_2);
  FUN_181344f60(param_1,0);
  FUN_181411be0(param_1 + 0x96,"alpha",DAT_1824c3ea4,DAT_1824c44cc,DAT_1824c4680);
  return;
}



############ FUN_ 18162ac10 size=53 ############

void FUN_18162ac10(longlong param_1)

{
  FUN_181411be0(param_1 + 0x118,"hover",0,DAT_1824c44dc,DAT_1824c4680);
  return;
}



############ FUN_ 18162ac50 size=58 ############

void FUN_18162ac50(longlong param_1)

{
  FUN_181411be0(param_1 + 0x118,"hover",DAT_1824c3ea4,DAT_1824c44dc,DAT_1824c4680);
  return;
}



############ FUN_ 1815b64a0 size=210 ############

void FUN_1815b64a0(longlong *param_1,undefined4 param_2,undefined4 param_3,longlong param_4,
                  undefined4 param_5)

{
  longlong *plVar1;
  longlong lVar2;
  
  *(undefined4 *)(param_1 + 0x59) = param_5;
  param_1[0x5a] = param_4;
  *(undefined4 *)(param_1 + 0x58) = param_2;
  *(undefined4 *)((longlong)param_1 + 0x2c4) = param_3;
  FUN_1815ecd00();
  plVar1 = (longlong *)param_1[0x5b];
  lVar2 = param_1[0x1a];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x58))(plVar1,1);
    FUN_181343cc0(lVar2,plVar1,0xffffffff);
  }
  lVar2 = param_1[0x1a];
  (**(code **)(*param_1 + 0x58))(param_1,1);
  FUN_181343cc0(lVar2,param_1,0xffffffff);
  FUN_181344e50(param_1[0x5b],param_1);
  FUN_181411be0(param_1 + 0x1c,"alpha",DAT_1824c3ea4);
  return;
}



############ FUN_ 180485b50 size=46 ############

void FUN_180485b50(undefined8 *param_1)

{
  void *_Memory;
  
  _Memory = (void *)*param_1;
  if (_Memory != (void *)0x0) {
    FUN_180484cd0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 181a352a5 size=41 ############

void Unwind_181a352a5(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x70) & 1) != 0) {
    *(uint *)(param_2 + 0x70) = *(uint *)(param_2 + 0x70) & 0xfffffffe;
    FUN_180484cd0(param_2 + 0x350);
  }
  return;
}



############ FUN_ 181a352ce size=41 ############

void Unwind_181a352ce(undefined8 param_1,longlong param_2)

{
  if ((*(uint *)(param_2 + 0x70) & 2) != 0) {
    *(uint *)(param_2 + 0x70) = *(uint *)(param_2 + 0x70) & 0xfffffffd;
    FUN_180484cd0(param_2 + 0x270);
  }
  return;
}



############ FUN_ 1812b67a0 size=125 ############

void FUN_1812b67a0(undefined8 *param_1)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterFloat::vftable;
  plVar1 = (longlong *)param_1[0x3b];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x34);
    param_1[0x3b] = 0;
  }
  plVar1 = (longlong *)param_1[0x33];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2c);
    param_1[0x33] = 0;
  }
  FUN_180484cd0(param_1 + 0x10);
  FUN_1812c25c0(param_1);
  return;
}



############ FUN_ 1804d97d0 size=160 ############

undefined8 * FUN_1804d97d0(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterInt::vftable;
  plVar1 = (longlong *)param_1[0x3b];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x34);
    param_1[0x3b] = 0;
  }
  plVar1 = (longlong *)param_1[0x33];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2c);
    param_1[0x33] = 0;
  }
  FUN_180484cd0(param_1 + 0x10);
  FUN_1812c25c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d9b80 size=160 ############

undefined8 * FUN_1804d9b80(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterBool::vftable;
  plVar1 = (longlong *)param_1[0x3b];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x34);
    param_1[0x3b] = 0;
  }
  plVar1 = (longlong *)param_1[0x33];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2c);
    param_1[0x33] = 0;
  }
  FUN_180484cd0(param_1 + 0x10);
  FUN_1812c25c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805292a0 size=222 ############

void * .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
       vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
                 (void *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x940);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1,param_3,param_4,0xfffffffffffffffe);
  }
  _eh_vector_destructor_iterator_((void *)((longlong)param_1 + 0x8e8),0x28,2,FUN_18052bcb0);
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x8c8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180484cd0((longlong)param_1 + 0x7e0);
  FUN_180484cd0((longlong)param_1 + 0x708);
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x6f8);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_180529380((longlong)param_1 + 0x5e0);
  FUN_18052c910(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18058b860 size=507 ############

void FUN_18058b860(undefined8 *param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  uint uVar4;
  longlong *plVar5;
  ulonglong uVar6;
  uint *_Memory;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  *param_1 = FilterGraph<float,6,512>::vftable;
  param_1[0x16] = FilterGraph<float,6,512>::vftable;
  param_1[0x19] = FilterGraph<float,6,512>::vftable;
  param_1[0x1c] = FilterGraph<float,6,512>::vftable;
  param_1[0x1d] = FilterGraph<float,6,512>::vftable;
  param_1[0x1e] = FilterGraph<float,6,512>::vftable;
  plVar1 = (longlong *)param_1[0xe];
  if (plVar1 != (longlong *)0x0) {
    plVar2 = (longlong *)*plVar1;
    for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)((longlong)plVar1 + 0xc); plVar5 = plVar5 + 1)
    {
      if (param_1 == (undefined8 *)*plVar5) {
        uVar6 = (longlong)plVar5 - (longlong)plVar2 >> 3;
        uVar4 = (uint)uVar6;
        if (-1 < (int)uVar4) {
          if ((int)uVar4 < (int)plVar1[2]) {
            *(int *)(plVar1 + 2) = (int)plVar1[2] + -1;
          }
          if (uVar4 < *(uint *)((longlong)plVar1 + 0xc)) {
            FUN_18049b4a0(plVar1,uVar6 & 0xffffffff,plVar1,plVar2,0xfffffffffffffffe);
          }
        }
        break;
      }
    }
  }
  plVar1 = *(longlong **)(param_1[0x138c] + 0x70);
  if (plVar1 != (longlong *)0x0) {
    plVar2 = (longlong *)*plVar1;
    for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)((longlong)plVar1 + 0xc); plVar5 = plVar5 + 1)
    {
      if (param_1 == (undefined8 *)*plVar5) {
        uVar6 = (longlong)plVar5 - (longlong)plVar2 >> 3;
        uVar4 = (uint)uVar6;
        if (-1 < (int)uVar4) {
          if ((int)uVar4 < (int)plVar1[2]) {
            *(int *)(plVar1 + 2) = (int)plVar1[2] + -1;
          }
          if (uVar4 < *(uint *)((longlong)plVar1 + 0xc)) {
            FUN_18049b4a0(plVar1,uVar6 & 0xffffffff,plVar1,plVar2,uVar7);
          }
        }
        break;
      }
    }
  }
  FUN_18058d180(param_1 + 0x138a);
  FUN_180568840(param_1 + 5000);
  _Memory = (uint *)(param_1[0x1386] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_1[0x1384] != 0) {
    FUN_18056a070();
  }
  puVar3 = (undefined8 *)param_1[0x1382];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  FUN_180485f00(param_1 + 0x1380);
  FUN_180485f00(param_1 + 0x137e);
  puVar3 = (undefined8 *)param_1[0x137d];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  FUN_180484cd0(param_1 + 0x1362);
  FUN_180484cd0(param_1 + 0x1347);
  *(undefined4 *)((longlong)param_1 + 0x9a34) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1345]);
}



############ FUN_ 18119bff0 size=529 ############

undefined8
FUN_18119bff0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined4 param_6,longlong *param_7,undefined8 param_8,
             longlong *param_9,longlong *param_10,undefined4 param_11)

{
  longlong *plVar1;
  undefined8 uVar2;
  undefined1 local_1c8 [56];
  longlong *local_190;
  undefined1 local_188 [56];
  undefined8 local_150;
  undefined1 local_148 [56];
  undefined8 local_110;
  undefined1 local_108 [224];
  
  local_150 = 0;
  FUN_180488560(local_188,param_10);
  local_190 = (longlong *)0x0;
  plVar1 = (longlong *)param_9[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_9) {
      local_190 = (longlong *)(**(code **)(*plVar1 + 8))(plVar1,local_1c8);
      plVar1 = (longlong *)param_9[7];
      if (plVar1 == (longlong *)0x0) goto LAB_18119c0c6;
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_9);
      plVar1 = local_190;
    }
    local_190 = plVar1;
    param_9[7] = 0;
  }
LAB_18119c0c6:
  local_110 = 0;
  FUN_180488560(local_148,param_7);
  uVar2 = FUN_180485290(local_108,param_5);
  uVar2 = FUN_18119c460(param_1,param_2,param_3,param_4,uVar2,param_6,local_148,param_8,local_1c8,
                        local_188,param_11);
  FUN_1812c2e60(*(undefined8 *)(param_1 + 0x30),uVar2);
  FUN_180484cd0(param_5);
  plVar1 = (longlong *)param_7[7];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_7);
    param_7[7] = 0;
  }
  plVar1 = (longlong *)param_9[7];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_9);
    param_9[7] = 0;
  }
  plVar1 = (longlong *)param_10[7];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_10);
    param_10[7] = 0;
  }
  return uVar2;
}



############ FUN_ 1812b6190 size=125 ############

void FUN_1812b6190(undefined8 *param_1)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterBool::vftable;
  plVar1 = (longlong *)param_1[0x3b];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x34);
    param_1[0x3b] = 0;
  }
  plVar1 = (longlong *)param_1[0x33];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2c);
    param_1[0x33] = 0;
  }
  FUN_180484cd0(param_1 + 0x10);
  FUN_1812c25c0(param_1);
  return;
}



############ FUN_ 1812b6490 size=125 ############

void FUN_1812b6490(undefined8 *param_1)

{
  longlong *plVar1;
  
  *param_1 = juce::AudioParameterInt::vftable;
  plVar1 = (longlong *)param_1[0x3b];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x34);
    param_1[0x3b] = 0;
  }
  plVar1 = (longlong *)param_1[0x33];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 0x2c);
    param_1[0x33] = 0;
  }
  FUN_180484cd0(param_1 + 0x10);
  FUN_1812c25c0(param_1);
  return;
}



############ FUN_ 1814dc280 size=459 ############

undefined8 *
FUN_1814dc280(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined4 param_6)

{
  undefined8 uVar1;
  undefined4 uStack0000000000000038;
  undefined **local_140;
  undefined8 *local_138;
  undefined ***local_108;
  undefined1 local_100 [216];
  
  *param_1 = juce::Component::vftable;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  local_140 = std::_Func_impl_no_alloc<<lambda_1aec564f0c71825f9168bd57967a4f48>,void>::vftable;
  local_108 = &local_140;
  local_138 = param_1;
  uVar1 = FUN_180484da0(local_100);
  FUN_18055f8f0(param_1 + 0x16,uVar1,param_3,param_4,param_5,&local_140,param_6);
  *param_1 = CueVisualisationArea::vftable;
  param_1[0x16] = CueVisualisationArea::vftable;
  param_1[0x17] = CueVisualisationArea::vftable;
  uStack0000000000000038 = CONCAT13(0x7f,(int3)DAT_18262bb70);
  *(undefined4 *)(param_1 + 0x7b) = uStack0000000000000038;
  *(undefined1 *)((longlong)param_1 + 0x3dd) = 1;
  param_1[0x7c] = 0;
  param_1[0x7d] = 0;
  *(undefined1 *)(param_1 + 0x7e) = 0;
  param_1[0x7f] = 0;
  param_1[0x80] = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  FUN_180484cd0(param_2);
  return param_1;
}



############ FUN_ 181a345c2 size=12 ############

void Unwind_181a345c2(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(param_2 + 0x260);
  return;
}



############ FUN_ 181a35065 size=12 ############

void Unwind_181a35065(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x270));
  return;
}



############ FUN_ 181a35139 size=12 ############

void Unwind_181a35139(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x2e0));
  return;
}



############ FUN_ 181a353cf size=12 ############

void Unwind_181a353cf(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x188));
  return;
}



############ FUN_ 181a353fa size=19 ############

void Unwind_181a353fa(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x138) + 0xb0);
  return;
}



############ FUN_ 181a39f26 size=19 ############

void Unwind_181a39f26(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0xd8) + 0x80);
  return;
}



############ FUN_ 181a3fb34 size=19 ############

void Unwind_181a3fb34(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x240) + 0x708);
  return;
}



############ FUN_ 181a3fb47 size=19 ############

void Unwind_181a3fb47(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x240) + 0x7e0);
  return;
}



############ FUN_ 181a3fc50 size=12 ############

void Unwind_181a3fc50(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(param_2 + 0x3660);
  return;
}



############ FUN_ 181a3ff14 size=12 ############

void Unwind_181a3ff14(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0xa0));
  return;
}



############ FUN_ 181a40064 size=12 ############

void Unwind_181a40064(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x148));
  return;
}



############ FUN_ 181a400d0 size=12 ############

void Unwind_181a400d0(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x148));
  return;
}



############ FUN_ 181a40148 size=12 ############

void Unwind_181a40148(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x148));
  return;
}



############ FUN_ 181a401b4 size=12 ############

void Unwind_181a401b4(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x148));
  return;
}



############ FUN_ 181a40310 size=12 ############

void Unwind_181a40310(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x100));
  return;
}



############ FUN_ 181a42ace size=19 ############

void Unwind_181a42ace(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x1f0) + 0x988);
  return;
}



############ FUN_ 180564d60 size=87 ############

void FUN_180564d60(longlong param_1)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)(param_1 + 0x100);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)((longlong)puVar1 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  puVar1 = *(undefined8 **)(param_1 + 0xf8);
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)((longlong)puVar1 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  FUN_180484cd0(param_1);
  return;
}



############ FUN_ 181a464ab size=12 ############

void Unwind_181a464ab(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x1a8));
  return;
}



############ FUN_ 181a1a8d0 size=12 ############

void Unwind_181a1a8d0(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0x70));
  return;
}



############ FUN_ 181a1a4b0 size=12 ############

void Unwind_181a1a4b0(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(undefined8 *)(param_2 + 0xd8));
  return;
}



############ FUN_ 181a1a4f0 size=16 ############

void Unwind_181a1a4f0(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0xd0) + 0x68);
  return;
}



############ FUN_ 181a1c3a0 size=19 ############

void Unwind_181a1c3a0(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x50) + 0x128);
  return;
}



############ FUN_ 181a1c030 size=19 ############

void Unwind_181a1c030(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x70) + 0x9a38);
  return;
}



############ FUN_ 181a1c050 size=19 ############

void Unwind_181a1c050(undefined8 param_1,longlong param_2)

{
  FUN_180484cd0(*(longlong *)(param_2 + 0x70) + 0x9b10);
  return;
}



############ FUN_ 1813b0590 size=36 ############

void FUN_1813b0590(undefined8 *param_1)

{
  FUN_18047cbc0();
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001813b05ad. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 180486040 size=36 ############

void FUN_180486040(undefined8 *param_1)

{
  FUN_18047cbc0();
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018048605d. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 180528290 size=71 ############

void FUN_180528290(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[2] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18047cbc0(param_1);
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18052d410 size=39 ############

void FUN_18052d410(longlong param_1)

{
  FUN_18047cbc0(param_1 + 0x38);
  *(undefined4 *)(param_1 + 0x44) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x38));
}



############ FUN_ 1804859d0 size=96 ############

void FUN_1804859d0(longlong param_1)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)(param_1 + 0x130);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1813baf40(param_1 + 0x70);
  puVar1 = *(undefined8 **)(param_1 + 0x68);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18047cbc0(param_1 + 0x50);
  *(undefined4 *)(param_1 + 0x5c) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x50));
}



############ FUN_ 1804d0160 size=103 ############

void FUN_1804d0160(undefined8 *param_1)

{
  uint *puVar1;
  uint uVar2;
  
  *param_1 = juce::MultiTimer::vftable;
  do {
    LOCK();
    puVar1 = (uint *)(param_1 + 1);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 | 1;
    UNLOCK();
  } while ((uVar2 & 1) != 0);
  FUN_18047cbc0(param_1 + 2);
  if (*(int *)(param_1 + 3) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
  *(undefined4 *)(param_1 + 3) = 0;
  LOCK();
  *(undefined4 *)(param_1 + 1) = 0;
  UNLOCK();
  FUN_18047cbc0(param_1 + 2);
  *(undefined4 *)((longlong)param_1 + 0x1c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[2]);
}



############ FUN_ 1804d4cf0 size=66 ############

void FUN_1804d4cf0(undefined8 *param_1)

{
  *param_1 = juce::MPESynthesiser::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xc));
  FUN_18047cbc0(param_1 + 10);
  *(undefined4 *)((longlong)param_1 + 0x5c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 1804db450 size=91 ############

void FUN_1804db450(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  
  lVar1 = *param_1;
  if (lVar1 != 0) {
    FUN_18134a370(lVar1 + 0x30,0,0,param_4,0xfffffffffffffffe);
    FUN_18134a530(lVar1 + 0x30);
    FUN_18047cbc0(lVar1 + 0x18);
    *(undefined4 *)(lVar1 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar1 + 0x18));
  }
  return;
}



############ FUN_ 1804e7770 size=124 ############

void FUN_1804e7770(undefined8 *param_1)

{
  *param_1 = juce::ModalComponentManager::vftable;
  param_1[2] = juce::ModalComponentManager::vftable;
  FUN_18047cbc0(param_1 + 3);
  if (*(int *)(param_1 + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[3]);
  }
  *(undefined4 *)(param_1 + 4) = 0;
  if (DAT_182673c20 == param_1) {
    DAT_182673c20 = (undefined8 *)0x0;
  }
  FUN_18047cbc0(param_1 + 3);
  *(undefined4 *)((longlong)param_1 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 1804fff10 size=246 ############

undefined8 * FUN_1804fff10(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  uint *_Memory;
  
  *param_1 = juce::PropertyPanel::vftable;
  lVar3 = param_1[0x4d];
  if (*(int *)(lVar3 + 0xbc) != 0) {
    FUN_18047cbc0(lVar3 + 0xb0);
    if (*(int *)(lVar3 + 0xb8) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(lVar3 + 0xb0));
    }
    *(undefined4 *)(lVar3 + 0xb8) = 0;
    iVar2 = *(int *)(param_1 + 0x35);
    FUN_1804ffdf0(param_1[0x4d],iVar2);
    if (iVar2 != *(int *)(param_1 + 0x35)) {
      FUN_1804ffdf0(param_1[0x4d]);
    }
  }
  _Memory = (uint *)(param_1[0x4e] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134a530(param_1 + 0x16);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180506550 size=55 ############

void FUN_180506550(longlong param_1)

{
  FUN_18047cbc0(param_1 + 0xc0);
  *(undefined4 *)(param_1 + 0xcc) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0xc0));
}



############ FUN_ 18050a3e0 size=119 ############

void FUN_18050a3e0(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  *param_1 = juce::Toolbar::vftable;
  puVar1 = param_1 + 0x1c;
  param_1[0x16] = juce::Toolbar::vftable;
  param_1[0x19] = juce::Toolbar::vftable;
  FUN_18047cbc0(puVar1);
  if (*(int *)(param_1 + 0x1d) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  *(undefined4 *)(param_1 + 0x1d) = 0;
  FUN_18047cbc0(puVar1);
  *(undefined4 *)((longlong)param_1 + 0xec) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar1);
}



############ FUN_ 1812d96c0 size=72 ############

void FUN_1812d96c0(undefined8 *param_1)

{
  *param_1 = juce::ToolbarItemPalette::vftable;
  param_1[0x16] = juce::ToolbarItemPalette::vftable;
  FUN_18047cbc0(param_1 + 0x52);
  *(undefined4 *)((longlong)param_1 + 0x29c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x52]);
}



############ FUN_ 180559c80 size=150 ############

void FUN_180559c80(undefined8 *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  
  *param_1 = juce::ColourSelector::vftable;
  param_1[0x16] = juce::ColourSelector::vftable;
  LOCK();
  iVar2 = *(int *)(param_1[0x18] + 0x18);
  *(int *)(param_1[0x18] + 0x18) = 0;
  UNLOCK();
  if (iVar2 != 0) {
    (**(code **)(param_1[0x17] + 8))();
  }
  puVar1 = param_1 + 0x26;
  FUN_18047cbc0(puVar1);
  if (*(int *)(param_1 + 0x27) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  *(undefined4 *)(param_1 + 0x27) = 0;
  FUN_18047cbc0(puVar1);
  *(undefined4 *)((longlong)param_1 + 0x13c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar1);
}



############ FUN_ 1814c9750 size=571 ############

void FUN_1814c9750(undefined8 *param_1)

{
  longlong lVar1;
  undefined ***pppuVar2;
  longlong *plVar3;
  undefined ***pppuVar4;
  undefined1 auStack_d8 [32];
  undefined8 local_b8;
  undefined **local_a8 [7];
  undefined ***local_70;
  undefined **local_68 [7];
  undefined ***local_30;
  ulonglong local_28;
  
  local_b8 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_d8;
  *param_1 = CloudyTutorialEngine::vftable;
  param_1[0x16] = CloudyTutorialEngine::vftable;
  param_1[0x19] = CloudyTutorialEngine::vftable;
  param_1[0x1a] = CloudyTutorialEngine::vftable;
  lVar1 = param_1[0x29];
  pppuVar4 = (undefined ***)(lVar1 + 8);
  local_a8[0] = std::_Func_impl_no_alloc<<lambda_c753c0022419becb9aaa6252b3d19446>,void,bool>::
                vftable;
  local_70 = local_a8;
  local_30 = (undefined ***)0x0;
  if ((code *)PTR_FUN_1824b2ae0 == FUN_18048dd90) {
    local_68[0] = std::_Func_impl_no_alloc<<lambda_95b7fde7a02c4b6e888ff2c425dce4da>,void,bool>::
                  vftable;
    local_30 = local_68;
  }
  else {
    local_30 = (undefined ***)(*(code *)PTR_FUN_1824b2ae0)(local_a8,local_68);
  }
  FUN_180488cd0(local_a8);
  pppuVar2 = *(undefined ****)(lVar1 + 0x40);
  if (pppuVar2 != (undefined ***)0x0) {
    if (pppuVar2 == pppuVar4) {
      if ((code *)(*pppuVar2)[1] == FUN_18048dd90) {
        local_a8[0] = std::_Func_impl_no_alloc<<lambda_95b7fde7a02c4b6e888ff2c425dce4da>,void,bool>
                      ::vftable;
        local_70 = local_a8;
        FUN_180488cd0(pppuVar4);
      }
      else {
        local_70 = (undefined ***)(*(code *)(*pppuVar2)[1])(pppuVar2,local_a8);
        FUN_180488cd0(pppuVar4);
      }
    }
    else {
      *(undefined8 *)(lVar1 + 0x40) = 0;
      local_70 = pppuVar2;
    }
  }
  FUN_18057bcc0(pppuVar4,local_68);
  if (local_30 != (undefined ***)0x0) {
    if ((code *)(*local_30)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_30 != local_68) {
                    /* WARNING: Subroutine does not return */
        free(local_30);
      }
    }
    else {
      (*(code *)(*local_30)[4])();
    }
  }
  if (local_70 != (undefined ***)0x0) {
    if ((code *)(*local_70)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_70 != local_a8) {
                    /* WARNING: Subroutine does not return */
        free(local_70);
      }
    }
    else {
      (*(code *)(*local_70)[4])();
    }
  }
  plVar3 = (longlong *)param_1[0x1b6];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_1 + 0x1af);
    param_1[0x1b6] = 0;
  }
  plVar3 = (longlong *)param_1[0x1ae];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_1 + 0x1a7);
    param_1[0x1ae] = 0;
  }
  FUN_18047cbc0(param_1 + 0x1a3);
  *(undefined4 *)((longlong)param_1 + 0xd24) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1a3]);
}



############ FUN_ 180578bf0 size=62 ############

void FUN_180578bf0(undefined8 *param_1)

{
  if (1 < *(int *)((longlong)param_1 + 0xc)) {
    FUN_180528070(param_1,*(int *)((longlong)param_1 + 0xc) + -1);
    return;
  }
  FUN_18047cbc0();
  if (*(int *)(param_1 + 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  *(undefined4 *)(param_1 + 1) = 0;
  return;
}



############ FUN_ 1812a56b0 size=105 ############

void FUN_1812a56b0(undefined8 *param_1)

{
  uint *puVar1;
  uint uVar2;
  
  *param_1 = juce::MultiTimer::vftable;
  do {
    LOCK();
    puVar1 = (uint *)(param_1 + 1);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 | 1;
    UNLOCK();
  } while ((uVar2 & 1) != 0);
  FUN_18047cbc0(param_1 + 2);
  if (*(int *)(param_1 + 3) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
  *(undefined4 *)(param_1 + 3) = 0;
  LOCK();
  *(undefined4 *)(param_1 + 1) = 0;
  UNLOCK();
  FUN_18047cbc0(param_1 + 2);
  *(undefined4 *)((longlong)param_1 + 0x1c) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001812a571a. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)param_1[2]);
  return;
}



############ FUN_ 1812acde0 size=59 ############

void FUN_1812acde0(undefined8 *param_1)

{
  *param_1 = juce::MPESynthesiser::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xc));
  FUN_18047cbc0(param_1 + 10);
  *(undefined4 *)((longlong)param_1 + 0x5c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[10]);
}



############ FUN_ 1812da9c0 size=80 ############

void FUN_1812da9c0(longlong *param_1)

{
  FUN_18047cbc0(param_1 + 0x1c);
  if ((int)param_1[0x1d] != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x1c]);
  }
  *(undefined4 *)(param_1 + 0x1d) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001812daa14. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x108))(param_1);
  return;
}



############ FUN_ 1812daa30 size=112 ############

void FUN_1812daa30(undefined8 *param_1)

{
  undefined8 *puVar1;
  
  *param_1 = juce::Toolbar::vftable;
  puVar1 = param_1 + 0x1c;
  param_1[0x16] = juce::Toolbar::vftable;
  param_1[0x19] = juce::Toolbar::vftable;
  FUN_18047cbc0(puVar1);
  if (*(int *)(param_1 + 0x1d) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  *(undefined4 *)(param_1 + 0x1d) = 0;
  FUN_18047cbc0(puVar1);
  *(undefined4 *)((longlong)param_1 + 0xec) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar1);
}



############ FUN_ 1812ed190 size=126 ############

void FUN_1812ed190(longlong param_1)

{
  int iVar1;
  longlong lVar2;
  
  lVar2 = *(longlong *)(param_1 + 0x268);
  if (*(int *)(lVar2 + 0xbc) != 0) {
    FUN_18047cbc0(lVar2 + 0xb0);
    if (*(int *)(lVar2 + 0xb8) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(lVar2 + 0xb0));
    }
    *(undefined4 *)(lVar2 + 0xb8) = 0;
    iVar1 = *(int *)(param_1 + 0x1a8);
    FUN_1804ffdf0(*(undefined8 *)(param_1 + 0x268),iVar1);
    if (iVar1 != *(int *)(param_1 + 0x1a8)) {
      FUN_1804ffdf0(*(undefined8 *)(param_1 + 0x268));
    }
  }
  return;
}



############ FUN_ 1812ed3a0 size=210 ############

void FUN_1812ed3a0(undefined8 *param_1)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  uint *_Memory;
  
  *param_1 = juce::PropertyPanel::vftable;
  lVar3 = param_1[0x4d];
  if (*(int *)(lVar3 + 0xbc) != 0) {
    FUN_18047cbc0(lVar3 + 0xb0);
    if (*(int *)(lVar3 + 0xb8) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(lVar3 + 0xb0));
    }
    *(undefined4 *)(lVar3 + 0xb8) = 0;
    iVar2 = *(int *)(param_1 + 0x35);
    FUN_1804ffdf0(param_1[0x4d],iVar2);
    if (iVar2 != *(int *)(param_1 + 0x35)) {
      FUN_1804ffdf0(param_1[0x4d]);
    }
  }
  _Memory = (uint *)(param_1[0x4e] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134a530(param_1 + 0x16);
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 18133b620 size=117 ############

void FUN_18133b620(undefined8 *param_1)

{
  *param_1 = juce::ModalComponentManager::vftable;
  param_1[2] = juce::ModalComponentManager::vftable;
  FUN_18047cbc0(param_1 + 3);
  if (*(int *)(param_1 + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[3]);
  }
  *(undefined4 *)(param_1 + 4) = 0;
  if (DAT_182673c20 == param_1) {
    DAT_182673c20 = (undefined8 *)0x0;
  }
  FUN_18047cbc0(param_1 + 3);
  *(undefined4 *)((longlong)param_1 + 0x24) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 1813bf740 size=142 ############

void FUN_1813bf740(undefined8 *param_1)

{
  undefined8 *puVar1;
  int iVar2;
  
  *param_1 = juce::ColourSelector::vftable;
  param_1[0x16] = juce::ColourSelector::vftable;
  LOCK();
  iVar2 = *(int *)(param_1[0x18] + 0x18);
  *(int *)(param_1[0x18] + 0x18) = 0;
  UNLOCK();
  if (iVar2 != 0) {
    (**(code **)(param_1[0x17] + 8))();
  }
  puVar1 = param_1 + 0x26;
  FUN_18047cbc0(puVar1);
  if (*(int *)(param_1 + 0x27) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  *(undefined4 *)(param_1 + 0x27) = 0;
  FUN_18047cbc0(puVar1);
  *(undefined4 *)((longlong)param_1 + 0x13c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*puVar1);
}



############ FUN_ 1804646a0 size=110 ############

void FUN_1804646a0(void)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined4 local_res8;
  double local_res10;
  
  local_res10 = (double)(DAT_1824c3d64 * 255.0) + DAT_1824c4520;
  uVar2 = 0xff;
  if (SUB84(local_res10,0) < 0xff) {
    uVar2 = SUB81(local_res10,0);
  }
  local_res8 = CONCAT13(uVar2,0xffffff);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  DAT_182674204 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464710 size=45 ############

void FUN_180464710(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xb33f3f3f;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xb33f3f3f);
  DAT_182674280 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804647a0 size=58 ############

void FUN_1804647a0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xa6000000;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xa6000000);
  DAT_18267418c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804647e0 size=39 ############

void FUN_1804647e0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffa7b8ca;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffa7b8ca);
  FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464810 size=39 ############

void FUN_180464810(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464920 size=58 ############

void FUN_180464920(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x19ffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x19ffffff);
  DAT_18267428c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464960 size=58 ############

void FUN_180464960(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x99ffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x99ffffff);
  DAT_1826741f4 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804649a0 size=45 ############

void FUN_1804649a0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_182674200 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464a00 size=58 ############

void FUN_180464a00(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xccffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xccffffff);
  DAT_182674198 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464a40 size=45 ############

void FUN_180464a40(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff4d5c66;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff4d5c66);
  DAT_18267421c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464a70 size=45 ############

void FUN_180464a70(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff4d5c66;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff4d5c66);
  DAT_182674240 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464aa0 size=45 ############

void FUN_180464aa0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff53646e;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff53646e);
  DAT_1826741b4 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464ad0 size=45 ############

void FUN_180464ad0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff637682;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff637682);
  DAT_18267424c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464b30 size=58 ############

void FUN_180464b30(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xe6ffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xe6ffffff);
  DAT_1826741e0 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464b70 size=58 ############

void FUN_180464b70(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x99ffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x99ffffff);
  DAT_18267416c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464c10 size=109 ############

void FUN_180464c10(void)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined4 local_res8;
  double local_res10;
  
  local_res10 = DAT_1824c4520 + 0.0;
  uVar2 = 0xff;
  if (SUB84(local_res10,0) < 0xff) {
    uVar2 = SUB81(local_res10,0);
  }
  local_res8 = CONCAT13(uVar2,0xffffff);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  DAT_1826741f0 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464c80 size=110 ############

void FUN_180464c80(void)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined4 local_res8;
  double local_res10;
  
  local_res10 = (double)(DAT_1824c3d64 * 255.0) + DAT_1824c4520;
  uVar2 = 0xff;
  if (SUB84(local_res10,0) < 0xff) {
    uVar2 = SUB81(local_res10,0);
  }
  local_res8 = CONCAT13(uVar2,0xffffff);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  DAT_1826742b8 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464cf0 size=45 ############

void FUN_180464cf0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_1826741b0 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464d20 size=110 ############

void FUN_180464d20(void)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined4 local_res8;
  double local_res10;
  
  local_res10 = (double)(DAT_1824c3df0 * 255.0) + DAT_1824c4520;
  uVar2 = 0xff;
  if (SUB84(local_res10,0) < 0xff) {
    uVar2 = SUB81(local_res10,0);
  }
  local_res8 = CONCAT13(uVar2,0xffffff);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  DAT_182674284 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464dc0 size=45 ############

void FUN_180464dc0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffdcebf5;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffdcebf5);
  DAT_1826741c8 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464e50 size=45 ############

void FUN_180464e50(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffcfdce6;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffcfdce6);
  DAT_18267425c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464e80 size=45 ############

void FUN_180464e80(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffc8dceb;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffc8dceb);
  DAT_1826741fc = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464eb0 size=45 ############

void FUN_180464eb0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffc8dceb;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffc8dceb);
  DAT_1826741d8 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464ee0 size=45 ############

void FUN_180464ee0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x99000000;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x99000000);
  DAT_182674178 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180464f10 size=156 ############

void FUN_180464f10(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 *puVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  undefined1 local_res8 [8];
  undefined8 local_res10;
  undefined *local_res18;
  undefined1 local_res20 [8];
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  uVar3 = (ulonglong)DAT_182674280;
  local_res18 = &DAT_182674140;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  if (uVar3 < (ulonglong)(DAT_182674298 - DAT_182674290 >> 3)) {
    local_res10 = *(undefined8 *)(DAT_182674290 + uVar3 * 8);
  }
  else {
    FUN_18140e230(&local_res10,DAT_18248db80,param_3,param_4,uVar4);
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  puVar1 = (undefined4 *)FUN_1813eca90(&local_res10,local_res8);
  puVar2 = (undefined8 *)FUN_18140e230(local_res20,*puVar1,param_3,param_4,uVar4);
  DAT_182674234 = FUN_1813efdf0(*puVar2);
  return;
}



############ FUN_ 180464fb0 size=45 ############

void FUN_180464fb0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff779aad;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff779aad);
  DAT_182674190 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465010 size=45 ############

void FUN_180465010(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff3f3f3f;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff3f3f3f);
  DAT_1826742ac = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465040 size=58 ############

void FUN_180465040(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xcc8a9da9;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xcc8a9da9);
  DAT_1826741dc = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465080 size=45 ############

void FUN_180465080(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_1826741a8 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804650b0 size=58 ############

void FUN_1804650b0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xcc8a9da9;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xcc8a9da9);
  DAT_182674184 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804650f0 size=79 ############

void FUN_1804650f0(void)

{
  undefined4 *puVar1;
  undefined8 *puVar2;
  undefined4 local_res8 [2];
  undefined4 local_res10 [2];
  undefined1 local_res18 [16];
  
  local_res8[0] = 0xff5f8396;
  local_res10[0] = 0xff000000;
  puVar1 = (undefined4 *)FUN_1812a2a20(local_res10,local_res8,0xff5f8396,DAT_1824c3e10);
  puVar2 = (undefined8 *)FUN_18140e230(local_res18,*puVar1);
  DAT_1826741c4 = FUN_1813efdf0(*puVar2);
  return;
}



############ FUN_ 180465200 size=156 ############

void FUN_180465200(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 *puVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  undefined1 local_res8 [8];
  undefined8 local_res10;
  undefined *local_res18;
  undefined1 local_res20 [8];
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  uVar3 = (ulonglong)DAT_182674204;
  local_res18 = &DAT_182674140;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  if (uVar3 < (ulonglong)(DAT_182674298 - DAT_182674290 >> 3)) {
    local_res10 = *(undefined8 *)(DAT_182674290 + uVar3 * 8);
  }
  else {
    FUN_18140e230(&local_res10,DAT_18248db80,param_3,param_4,uVar4);
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  puVar1 = (undefined4 *)FUN_1813eca90(&local_res10,local_res8);
  puVar2 = (undefined8 *)FUN_18140e230(local_res20,*puVar1,param_3,param_4,uVar4);
  DAT_182674230 = FUN_1813efdf0(*puVar2);
  return;
}



############ FUN_ 1804652a0 size=156 ############

void FUN_1804652a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined4 *puVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  undefined1 local_res8 [8];
  undefined8 local_res10;
  undefined *local_res18;
  undefined1 local_res20 [8];
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  uVar3 = (ulonglong)DAT_182674280;
  local_res18 = &DAT_182674140;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  if (uVar3 < (ulonglong)(DAT_182674298 - DAT_182674290 >> 3)) {
    local_res10 = *(undefined8 *)(DAT_182674290 + uVar3 * 8);
  }
  else {
    FUN_18140e230(&local_res10,DAT_18248db80,param_3,param_4,uVar4);
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  puVar1 = (undefined4 *)FUN_1813eca90(&local_res10,local_res8);
  puVar2 = (undefined8 *)FUN_18140e230(local_res20,*puVar1,param_3,param_4,uVar4);
  DAT_182674268 = FUN_1813efdf0(*puVar2);
  return;
}



############ FUN_ 180465370 size=45 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180465370(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  _DAT_1826741e8 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804653d0 size=45 ############

void FUN_1804653d0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_182674288 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465430 size=45 ############

void FUN_180465430(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff3c3c3c;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff3c3c3c);
  DAT_182674224 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465460 size=45 ############

void FUN_180465460(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_18267417c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465490 size=45 ############

void FUN_180465490(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff293238;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff293238);
  DAT_182674274 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804654c0 size=45 ############

void FUN_1804654c0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff3a464f;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff3a464f);
  DAT_1826742b0 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804654f0 size=45 ############

void FUN_1804654f0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_182674248 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465520 size=45 ############

void FUN_180465520(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x4cffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x4cffffff);
  DAT_182674208 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465550 size=45 ############

void FUN_180465550(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xb3ffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xb3ffffff);
  DAT_18267427c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465580 size=45 ############

void FUN_180465580(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_182674180 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804655b0 size=110 ############

void FUN_1804655b0(void)

{
  undefined8 *puVar1;
  undefined1 uVar2;
  undefined4 local_res8;
  double local_res10;
  
  local_res10 = (double)(DAT_1824c3d18 * 255.0) + DAT_1824c4520;
  uVar2 = 0xff;
  if (SUB84(local_res10,0) < 0xff) {
    uVar2 = SUB81(local_res10,0);
  }
  local_res8 = CONCAT13(uVar2,0xd3d3d3);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  DAT_18267423c = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465620 size=45 ############

void FUN_180465620(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff3c3c3c;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff3c3c3c);
  DAT_182674188 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465650 size=39 ############

void FUN_180465650(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x4cffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x4cffffff);
  FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465680 size=45 ############

void FUN_180465680(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x4cffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x4cffffff);
  DAT_182674278 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804656b0 size=39 ############

void FUN_1804656b0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xb3ffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xb3ffffff);
  FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804656e0 size=45 ############

void FUN_1804656e0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_182674258 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465770 size=45 ############

void FUN_180465770(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0x7f000000;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0x7f000000);
  DAT_1826742a8 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804657a0 size=45 ############

void FUN_1804657a0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xffffffff;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xffffffff);
  DAT_182674218 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1804657d0 size=45 ############

void FUN_1804657d0(void)

{
  undefined8 *puVar1;
  undefined4 local_res8 [8];
  
  local_res8[0] = 0xff293238;
  puVar1 = (undefined8 *)FUN_18140e230(local_res8,0xff293238);
  DAT_182674244 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 180465800 size=52 ############

void FUN_180465800(void)

{
  undefined8 *puVar1;
  undefined4 local_res8;
  
  local_res8 = CONCAT13(0x33,(int3)DAT_18262bb58);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  DAT_1826741e4 = FUN_1813efdf0(*puVar1);
  return;
}



############ FUN_ 1813efd60 size=131 ############

undefined8 * FUN_1813efd60(undefined8 *param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  uVar1 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  if ((ulonglong)(longlong)param_2 < (ulonglong)(DAT_182674298 - DAT_182674290 >> 3)) {
    *param_1 = *(undefined8 *)(DAT_182674290 + (longlong)param_2 * 8);
  }
  else {
    FUN_18140e230(param_1,DAT_18248db80,param_3,param_4,uVar1);
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182674140);
  return param_1;
}



############ FUN_ 18149efe0 size=438 ############

void FUN_18149efe0(longlong param_1,undefined8 param_2)

{
  void *pvVar1;
  ulonglong *puVar2;
  undefined1 auStack_a8 [32];
  longlong local_88;
  void *local_78;
  undefined8 local_70;
  undefined1 local_68 [4];
  undefined4 local_64;
  undefined8 local_60;
  undefined4 local_58;
  undefined1 local_54 [8];
  undefined4 local_4c;
  undefined1 local_48 [8];
  undefined4 local_40;
  undefined1 local_3c [8];
  undefined4 local_34;
  undefined1 local_30 [8];
  ulonglong local_28 [2];
  
  local_60 = 0xfffffffffffffffe;
  local_28[0] = DAT_182615970 ^ (ulonglong)auStack_a8;
  FUN_1813f22a0(param_2,local_68,DAT_1826741f4,param_1);
  *(undefined4 *)(param_1 + 0x310) = local_64;
  FUN_1813f22a0(param_2,local_68,DAT_18267428c,param_1);
  *(undefined4 *)(param_1 + 0x314) = local_64;
  local_58 = DAT_18267421c;
  FUN_18140e230(local_54,DAT_18262bb64);
  local_4c = DAT_182674198;
  FUN_18140e230(local_48,*(undefined4 *)(param_1 + 0x310));
  local_40 = DAT_1826741b4;
  FUN_18140e230(local_3c,*(undefined4 *)(param_1 + 0x314));
  local_34 = DAT_182674240;
  FUN_18140e230(local_30,DAT_18262bb64);
  local_78 = (void *)0x0;
  local_70 = 0;
  local_78 = (void *)FUN_18048c850();
  puVar2 = (ulonglong *)&local_58;
  do {
    pvVar1 = local_78;
    local_88 = FUN_18056f2e0(&local_78,puVar2);
    FUN_18056f310(&local_78,local_68,pvVar1,local_88 + 0x1c);
    puVar2 = (ulonglong *)((longlong)puVar2 + 0xc);
  } while (puVar2 != local_28);
  FUN_1814139d0(param_2,*(undefined8 *)(param_1 + 0x110),&local_78);
  FUN_1814139d0(param_2,*(undefined8 *)(param_1 + 0x118),&local_78);
  pvVar1 = *(void **)((longlong)local_78 + 8);
  if (*(char *)((longlong)pvVar1 + 0x19) != '\0') {
    *(void **)((longlong)local_78 + 8) = local_78;
    *(void **)local_78 = local_78;
    *(void **)((longlong)local_78 + 0x10) = local_78;
    local_70 = 0;
                    /* WARNING: Subroutine does not return */
    free(local_78);
  }
  FUN_18056b2f0(&local_78,*(undefined8 *)((longlong)pvVar1 + 0x10));
                    /* WARNING: Subroutine does not return */
  free(pvVar1);
}



############ FUN_ 1814b2c80 size=164 ############

void FUN_1814b2c80(longlong param_1,undefined8 param_2)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined4 uVar3;
  undefined4 local_res8;
  
  uVar1 = FUN_1813f22a0(param_2,&local_res8,DAT_1826741d0,param_1);
  uVar3 = FUN_1813ec390(uVar1);
  *(undefined4 *)(param_1 + 0x1c4) = uVar3;
  local_res8._0_3_ = (undefined3)DAT_1826742e8;
  local_res8 = CONCAT13(0x33,(undefined3)local_res8);
  puVar2 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  FUN_1813f0dc0(param_2,DAT_18267421c,*puVar2,param_1);
  local_res8._0_3_ = (undefined3)DAT_1826742e8;
  local_res8 = CONCAT13(0x19,(undefined3)local_res8);
  puVar2 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  FUN_1813f0dc0(param_2,DAT_1826741b4,*puVar2,param_1);
  return;
}



############ FUN_ 1814c4410 size=97 ############

void FUN_1814c4410(undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined4 local_res18;
  undefined4 local_res1c;
  undefined1 local_res20 [8];
  
  FUN_1813f22a0(param_2,&local_res18,DAT_182674244,param_1);
  local_res18 = CONCAT13(0xb3,(int3)local_res1c);
  puVar1 = (undefined8 *)FUN_18140e230(local_res20,local_res18);
  FUN_1813f0dc0(param_2,DAT_182674244,*puVar1,param_1);
  return;
}



############ FUN_ 1814c5370 size=323 ############

void FUN_1814c5370(longlong param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined4 local_res8;
  undefined **local_c8;
  longlong local_c0;
  undefined ***local_90;
  undefined **local_88;
  longlong local_80;
  undefined ***local_50;
  undefined **local_48 [7];
  undefined ***local_10;
  
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,DAT_1826742e8);
  FUN_1813f0dc0(param_2,DAT_18267421c,*puVar1,param_1 + 0x138);
  puVar1 = (undefined8 *)FUN_18140ed70(&local_res8,0);
  FUN_1813f0dc0(param_2,DAT_1826741d0,*puVar1,param_1 + 0x138);
  local_res8._0_3_ = (undefined3)DAT_18262bb5c;
  local_res8 = CONCAT13(0x19,(undefined3)local_res8);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  FUN_1813f0dc0(param_2,DAT_1826741b4,*puVar1,param_1 + 0x138);
  local_res8._0_3_ = (undefined3)DAT_18262bb60;
  local_res8 = CONCAT13(0x7f,(undefined3)local_res8);
  *(undefined4 *)(param_1 + 0x444) = local_res8;
  local_48[0] = std::
                _Func_impl_no_alloc<<lambda_a54890ef11ac2095cea786afea85d89b>,juce::Point<int>_>::
                vftable;
  local_10 = local_48;
  local_c8 = std::_Func_impl_no_alloc<<lambda_859a33d6f49727b4ad752fbfb7044475>,juce::Path*___ptr64>
             ::vftable;
  local_90 = &local_c8;
  local_88 = std::_Func_impl_no_alloc<<lambda_bc04b27e8004ecc943ef5f890aa5ca88>,int>::vftable;
  local_50 = &local_88;
  local_c0 = param_1;
  local_80 = param_1;
  FUN_1815f8200(param_1 + 0x370,param_1,&local_88,&local_c8,local_48);
  FUN_181343cc0(*(undefined8 *)(param_1 + 0x18),param_1 + 0x370,0xffffffff);
  return;
}



############ FUN_ 1814c72c0 size=310 ############

void FUN_1814c72c0(undefined8 param_1,undefined8 param_2)

{
  void *pvVar1;
  undefined4 *puVar2;
  undefined1 auStack_128 [32];
  longlong local_108;
  undefined4 local_d8 [4];
  void *local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_a0;
  undefined4 local_98;
  undefined1 local_94 [8];
  undefined4 local_8c;
  undefined1 local_88 [8];
  undefined4 local_80 [14];
  ulonglong local_48;
  
  local_a0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_128;
  local_d8[0] = 0xff3a5565;
  local_98 = DAT_18267421c;
  local_b8 = param_1;
  FUN_18140e230(local_94,0xff3a5565);
  local_d8[0] = 0xff4b6473;
  local_8c = DAT_1826741b4;
  FUN_18140e230(local_88,0xff4b6473);
  local_c8 = (void *)0x0;
  local_c0 = 0;
  local_c8 = (void *)FUN_18048c850();
  puVar2 = &local_98;
  do {
    pvVar1 = local_c8;
    local_108 = FUN_18056f2e0(&local_c8,puVar2);
    FUN_18056f310(&local_c8,local_d8,pvVar1,local_108 + 0x1c);
    puVar2 = puVar2 + 3;
  } while (puVar2 != local_80);
  FUN_1814139d0(param_2,param_1,&local_c8);
  pvVar1 = *(void **)((longlong)local_c8 + 8);
  if (*(char *)((longlong)pvVar1 + 0x19) != '\0') {
    *(void **)((longlong)local_c8 + 8) = local_c8;
    *(void **)local_c8 = local_c8;
    *(void **)((longlong)local_c8 + 0x10) = local_c8;
    local_c0 = 0;
                    /* WARNING: Subroutine does not return */
    free(local_c8);
  }
  FUN_18056b2f0(&local_c8,*(undefined8 *)((longlong)pvVar1 + 0x10));
                    /* WARNING: Subroutine does not return */
  free(pvVar1);
}



############ FUN_ 1814dc460 size=112 ############

void FUN_1814dc460(undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined4 local_res18;
  
  local_res18 = CONCAT13(0xe6,(int3)DAT_18262bb68);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res18,local_res18);
  FUN_1813f0dc0(param_2,DAT_182674268,*puVar1,param_1);
  puVar1 = (undefined8 *)FUN_18140e230(&local_res18,DAT_1826742ec);
  FUN_1813f0dc0(param_2,DAT_182674230,*puVar1,param_1);
  return;
}



############ FUN_ 181612000 size=996 ############

/* WARNING: Removing unreachable block (ram,0x000181612165) */
/* WARNING: Removing unreachable block (ram,0x000181612088) */
/* WARNING: Removing unreachable block (ram,0x000181612071) */
/* WARNING: Removing unreachable block (ram,0x000181612109) */
/* WARNING: Removing unreachable block (ram,0x000181612121) */

undefined8 .?AVSoothe2XYSliderArea@@::vtbl___AVSoothe2XYSliderArea__(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined1 auStack_218 [32];
  undefined *local_1f8;
  uint local_1f0;
  undefined4 uStack_1ec;
  undefined8 local_1e8;
  undefined8 local_1e0;
  undefined8 local_1c8;
  longlong *local_1c0;
  undefined4 local_1b8;
  undefined4 local_1a4;
  undefined *local_198;
  longlong local_190;
  uint local_180;
  undefined4 local_158;
  undefined1 local_128 [200];
  ulonglong local_60;
  
  local_60 = DAT_182615970 ^ (ulonglong)auStack_218;
  local_1a4 = 0xff0;
  if (((ulonglong)&stack0x00000000 & 0x6e0) == 0) {
    if (((ulonglong)&stack0x00000000 & 0x880) == 0) {
      local_180 = 0;
    }
    else {
      uVar3 = (uint)&stack0x00000000 & 0x2ff;
      local_180 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3;
    }
    local_180 = local_180 | 0xb736;
  }
  else {
    local_180 = 0xb736;
  }
  uVar3 = (uint)&stack0x00000000 & 0x7ff;
  uVar3 = (uVar3 + 1) * uVar3 + 0x2a1f & 0x80000001;
  local_180 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0xbba6 ^ local_180;
  local_1c0 = (longlong *)(param_1 + 0x308);
  local_1f8 = &DAT_180b3d1c4;
  local_1c8 = 0x3a9204f4154558ef;
  local_1e0 = 0x2cddd46c;
  local_1e8 = 0xcc9e28da;
  _local_1f0 = CONCAT44(uStack_1ec,0xe6546a66);
  local_198 = local_1f8;
  local_190 = param_1;
  if (*(code **)(*local_1c0 + 8) == FUN_18058ee60) {
    if (*(longlong *)(param_1 + 0x310) == 0) {
      FUN_18058eee0(param_1);
    }
    local_1f8 = *(undefined **)(param_1 + 0x310);
  }
  else {
    local_1f8 = (undefined *)(**(code **)(*local_1c0 + 8))(local_1c0);
  }
  local_1b8 = CONCAT13(0xe6,(int3)DAT_18262bb7c);
  local_158 = local_1b8;
  puVar1 = (undefined8 *)FUN_18140e230(local_128);
  FUN_1813f0dc0(local_1f8,DAT_18267427c,*puVar1);
  uVar3 = (local_1f0 >> 7 ^ local_1f0) & 0xf;
  _local_1f0 = CONCAT44(uStack_1ec,local_1f0 ^ (uVar3 << 7 | uVar3));
  uVar3 = ((uint)local_1e8 >> 7 ^ (uint)local_1e8) & 0xf;
  local_1e8 = CONCAT44(local_1e8._4_4_,(uint)local_1e8 ^ (uVar3 << 7 | uVar3));
  local_1e0 = (CONCAT44(local_1e0._4_4_,0x400) | 8) ^ 0x1b87319b;
  uVar2 = FUN_1816123dd();
  return uVar2;
}



############ FUN_ 181615170 size=412 ############

void FUN_181615170(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  undefined4 local_res8;
  
  for (plVar4 = (longlong *)(param_1 + 0x148); plVar4 != (longlong *)(param_1 + 0x168);
      plVar4 = plVar4 + 1) {
    lVar1 = *plVar4;
    if (lVar1 != 0) {
      puVar3 = (undefined8 *)
               FUN_18140e230(&local_res8,
                             *(undefined4 *)
                              (param_1 + 0x120 + (longlong)*(int *)(param_1 + 0x138) * 4));
      FUN_1813f0dc0(param_2,DAT_1826741a8,*puVar3,lVar1);
    }
  }
  uVar2 = *(undefined8 *)(param_1 + 0x140);
  puVar3 = (undefined8 *)
           FUN_18140e230(&local_res8,
                         *(undefined4 *)(param_1 + 0x120 + (longlong)*(int *)(param_1 + 0x138) * 4))
  ;
  FUN_1813f0dc0(param_2,DAT_1826741b0,*puVar3,uVar2);
  uVar2 = *(undefined8 *)(param_1 + 0x140);
  puVar3 = (undefined8 *)
           FUN_18140e230(&local_res8,
                         *(undefined4 *)(param_1 + 0x120 + (longlong)*(int *)(param_1 + 0x138) * 4))
  ;
  FUN_1813f0dc0(param_2,DAT_1826742b8,*puVar3,uVar2);
  uVar2 = *(undefined8 *)(param_1 + 0x140);
  puVar3 = (undefined8 *)
           FUN_18140e230(&local_res8,
                         *(undefined4 *)(param_1 + 0x120 + (longlong)*(int *)(param_1 + 0x138) * 4))
  ;
  FUN_1813f0dc0(param_2,DAT_182674284,*puVar3,uVar2);
  uVar2 = *(undefined8 *)(param_1 + 0x140);
  local_res8 = CONCAT13(0x4c,(int3)DAT_18262bb80);
  puVar3 = (undefined8 *)FUN_18140e230(&local_res8,local_res8);
  FUN_1813f0dc0(param_2,DAT_1826741f0,*puVar3,uVar2);
  puVar3 = (undefined8 *)FUN_18140ed70(&local_res8,DAT_1824c3ea4);
  FUN_1813f0dc0(param_2,DAT_182674210,*puVar3,param_1);
  uVar2 = *(undefined8 *)(param_1 + 0x160);
  puVar3 = (undefined8 *)FUN_18140ed70(&local_res8,DAT_1824c3ddc);
  FUN_1813f0dc0(param_2,DAT_18267422c,*puVar3,uVar2);
  return;
}



############ FUN_ 18056a290 size=35 ############

undefined8 * FUN_18056a290(undefined8 *param_1)

{
  undefined8 uVar1;
  
  *param_1 = 0;
  param_1[1] = 0;
  uVar1 = FUN_18048c850();
  *param_1 = uVar1;
  return param_1;
}



############ FUN_ 180bc28c0 size=24 ############

void FUN_180bc28c0(void)

{
  FUN_1811efc80();
  return;
}



############ FUN_ 180c479c0 size=935 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180c479c0(int *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  uint *puVar11;
  longlong lVar12;
  bool bVar13;
  undefined1 local_158 [32];
  undefined4 local_138;
  undefined *local_130;
  undefined *local_128;
  int local_120;
  uint *local_118;
  undefined4 local_108 [4];
  undefined1 local_f8 [144];
  uint local_68;
  uint local_28 [6];
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)local_158;
  uVar9 = param_1[3] ^ 0x724d0b9e;
  uVar6 = param_1[1] + 0xf2e4e3bf;
  uVar3 = param_1[2] + 0x2e21e090U >> 2;
  uVar7 = uVar3 | param_1[2] << 0x1e;
  uVar4 = uVar9 ^ *param_1 + 0xd91241f5U;
  uVar1 = uVar4 & 0x55555555 ^ uVar9;
  uVar2 = uVar1 >> 0x15 | uVar1 << 0xb;
  uVar9 = uVar9 ^ uVar4 & 0xaaaaaaaa;
  uVar10 = uVar9 >> 5 | uVar9 << 0x1b;
  uVar4 = ~((uVar2 << 2 | (uVar1 & 0x1fffff) >> 0x13) & 0x99999999 |
           (uVar2 >> 2 | (uVar1 >> 0x15) << 0x1e) & 0x66666666);
  uVar7 = ~((uVar7 >> 8 | uVar3 << 0x18) & 0xdd22dd22 | (uVar3 << 8 | uVar7 >> 0x18) & 0x22dd22dd);
  uVar3 = ~((uVar6 & 0x3fffffff) >> 2 & 0xf0f0f0f0 | (uVar6 * 4 | uVar6 >> 0x1e) << 0x1c |
           (uVar6 * 4 & 0xf0f0f0) << 4 | (uVar6 & 0x3fffffff) >> 0x1a) ^ uVar4;
  uVar1 = uVar3 & 0x8ba8afcf ^ uVar4;
  uVar6 = uVar4 ^ uVar3 & 0x74575030;
  uVar2 = ~((uVar10 >> 2 | (uVar9 >> 5) << 0x1e) & 0x99999999 |
           (uVar10 << 2 | (uVar9 & 0x1f) >> 3) & 0x66666666);
  uVar3 = (uVar1 >> 6 ^ uVar1) >> 2 & 3;
  uVar9 = (uVar6 >> 0xf ^ uVar6) & 0x7fff;
  uVar1 = (uVar3 << 6 | uVar3) << 2 ^ uVar1;
  uVar3 = (uVar7 >> 0x16 ^ uVar7) >> 5 & 3;
  uVar10 = uVar7 ^ (uVar3 << 0x16 | uVar3) << 5 ^ uVar1;
  uVar3 = (uVar2 >> 0x14 ^ uVar2) >> 3 & 0x1ff;
  uVar7 = uVar1 ^ uVar10 & 0xf0f0f0f0;
  uVar1 = uVar10 & 0xf0f0f0f ^ uVar1 ^ uVar7;
  uVar4 = ~(uVar4 >> 0x1f | ((uVar9 << 0xf | uVar9) ^ uVar6) << 1) ^ 0xc5c0c37b;
  uVar4 = (uVar4 << 0x1c | uVar4 >> 4) + 0x91938a3a;
  uVar5 = CONCAT44(uVar2 ^ (uVar3 << 0x14 | uVar3) << 3,uVar1 & 0xd402b50e ^ uVar7);
  LOCK();
  bVar13 = DAT_182670780 == 0;
  if (bVar13) {
    DAT_182670780 = 1;
  }
  UNLOCK();
  while (!bVar13) {
    LOCK();
    bVar13 = DAT_182670780 == 0;
    if (bVar13) {
      DAT_182670780 = 1;
    }
    UNLOCK();
  }
  do {
    uVar3 = FUN_180bd9af0(local_f8,2,uVar5,local_108);
  } while ((uVar3 & 0xfffffffd) == 0);
  if (uVar3 == 1) {
    local_118 = local_28;
    local_128 = &DAT_18260f2c0;
    local_130 = &DAT_18260f2c0;
    local_138 = local_108[0];
    local_120 = ~((uVar4 >> 5 | uVar4 * 0x8000000) ^ 0xdb26c704) - 0xf77c77;
    FUN_180e401e0(local_f8,(&PTR_DAT_18260f198)[local_68],(&PTR_DAT_18260f1c8)[local_68],uVar5);
  }
  LOCK();
  UNLOCK();
  DAT_182670780 = 0;
  puVar11 = local_28;
  lVar12 = 5;
  do {
    iVar8 = 7;
    uVar3 = (*puVar11 >> 0xc | *puVar11 << 0x14) + 0xc0944f2d;
    uVar3 = (uVar3 * 0x40000 | uVar3 >> 0xe) + 0x15d47d29;
    uVar3 = (uVar3 * 0x20 | uVar3 >> 0x1b) + 0x38bb1898;
    uVar2 = ~((uVar3 >> 0x12 | uVar3 * 0x4000) ^ 0x9ef81955);
    *puVar11 = uVar2;
    uVar3 = uVar1 & 0x2bfd4af1 ^ uVar7;
    do {
      uVar4 = uVar2 + 0x3cee7323 >> 0x18 | (uVar2 + 0x3cee7323) * 0x100;
      uVar3 = ((uVar3 ^ 0x3825b93f) << 6 | (uVar3 ^ 0x3825b93f) >> 0x1a) ^ uVar4;
      uVar2 = (uVar3 & 0xa7071cb4 ^ uVar4) + 0xc9051e01;
      uVar3 = (uVar3 & 0x58f8e34b ^ uVar4) + 0xc9a2538;
      uVar6 = (uVar3 * 0x10000 | uVar3 >> 0x10) & 0x96b5694a |
              (uVar3 >> 0x10 | uVar3 * 0x10000) & 0x694a96b5;
      uVar3 = uVar6 ^ ((uVar2 * 0x10 | uVar2 >> 0x1c) & 0xc3c3c3c3 |
                      (uVar2 >> 4 | uVar2 * 0x10000000) & 0x3c3c3c3c);
      uVar4 = ~(uVar3 & 0x848b99fe ^ uVar6);
      uVar3 = ~(uVar6 ^ uVar3 & 0x7b746601) ^ uVar4;
      uVar2 = uVar4 ^ uVar3 & 0xab2cb7b4;
      uVar4 = uVar3 & 0x54d3484b ^ uVar4 ^ uVar2;
      uVar3 = uVar4 & 0xfb102e20 ^ uVar2;
      uVar2 = uVar2 ^ uVar4 & 0x4efd1df;
      iVar8 = iVar8 + -1;
    } while (-1 < iVar8);
    *param_2 = uVar2;
    puVar11 = puVar11 + 1;
    param_2[1] = uVar3;
    param_2 = param_2 + 2;
    lVar12 = lVar12 + -1;
  } while (lVar12 != 0);
}



############ FUN_ 180568e40 size=127 ############

void FUN_180568e40(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18056b2f0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
  return;
}



############ FUN_ 18056d400 size=103 ############

void FUN_18056d400(undefined8 *param_1,longlong param_2,longlong param_3)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined1 local_res10 [8];
  
  for (; param_2 != param_3; param_2 = param_2 + 0xc) {
    uVar1 = *param_1;
    lVar2 = FUN_18056f2e0(param_1,param_2);
    FUN_18056f310(param_1,local_res10,uVar1,lVar2 + 0x1c,lVar2);
  }
  return;
}



############ FUN_ 180568e30 size=13 ############

void FUN_180568e30(undefined8 *param_1)

{
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1814c0f30 size=65 ############

void FUN_1814c0f30(undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined1 local_res18 [16];
  
  puVar1 = (undefined8 *)FUN_18140ed70(local_res18,DAT_1824c43e8);
  FUN_1813f0dc0(param_2,DAT_182674194,*puVar1,param_1);
  return;
}



############ FUN_ 181508cd0 size=65 ############

void FUN_181508cd0(undefined8 param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  undefined1 local_res18 [16];
  
  puVar1 = (undefined8 *)FUN_18140ed70(local_res18,DAT_1824c41e0);
  FUN_1813f0dc0(param_2,DAT_1826741c0,*puVar1,param_1);
  return;
}



############ FUN_ 18163c030 size=200 ############

void FUN_18163c030(longlong param_1,undefined8 param_2)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined1 local_res8 [8];
  undefined **local_c8;
  longlong local_c0;
  undefined ***local_90;
  undefined **local_88;
  longlong local_80;
  undefined ***local_50;
  undefined1 local_48 [56];
  undefined8 local_10;
  
  uVar1 = *(undefined8 *)(param_1 + 0x170);
  puVar2 = (undefined8 *)FUN_18140ed70(local_res8,DAT_1824c3df0);
  FUN_1813f0dc0(param_2,DAT_18267422c,*puVar2,uVar1);
  local_10 = 0;
  local_c8 = std::_Func_impl_no_alloc<<lambda_6dd2f4301ceade03c2f5db92fb8a956f>,juce::Path*___ptr64>
             ::vftable;
  local_90 = &local_c8;
  local_88 = std::_Func_impl_no_alloc<<lambda_1568c668491e814dbf64aa465d2a8bbf>,int>::vftable;
  local_50 = &local_88;
  local_c0 = param_1;
  local_80 = param_1;
  FUN_1815f8200(param_1 + 0x178,param_1,&local_88,&local_c8,local_48);
  return;
}



############ FUN_ 180522e60 size=266 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180522e60(longlong param_1)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  double dVar4;
  undefined8 uVar5;
  uint *_Memory;
  undefined4 uVar6;
  double dVar7;
  undefined1 auStack_68 [32];
  longlong local_48 [3];
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_48[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_68;
  lVar2 = *(longlong *)(param_1 + 8);
  uVar5 = FUN_1812ea010(*(undefined8 *)(lVar2 + 0x250),local_48);
  lVar3 = **(longlong **)(lVar2 + 0x18);
  uVar6 = (**(code **)(lVar3 + 0x170))(*(longlong **)(lVar2 + 0x18),uVar5);
  dVar7 = (double)(**(code **)(lVar3 + 400))(*(undefined8 *)(lVar2 + 0x18),uVar6,0);
  _Memory = (uint *)(local_48[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(**(longlong **)(lVar2 + 0x38) + 8))(*(longlong **)(lVar2 + 0x38),&local_30);
  dVar4 = (double)(**(code **)(*local_30 + 0x18))(local_30,local_28);
  (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  if (dVar7 != dVar4) {
    local_48[2] = lVar2;
    FUN_180501e20(lVar2);
    FUN_1805014d0(lVar2,SUB84(dVar7,0),2);
    FUN_180501f20(lVar2);
  }
  FUN_180502100(lVar2);
}



############ FUN_ 1812ecf60 size=30 ############

undefined8 FUN_1812ecf60(longlong param_1,undefined8 param_2)

{
  FUN_1812ea010(*(undefined8 *)(param_1 + 0xd0));
  return param_2;
}



############ FUN_ 181326580 size=265 ############

undefined8 *
FUN_181326580(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  char *pcVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  longlong local_res8;
  undefined8 *local_res10;
  longlong local_res18;
  longlong local_res20;
  undefined4 uVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  local_res10 = param_2;
  FUN_1812ea010(*(undefined8 *)(param_1 + 0x248),&local_res8,param_3,param_4,0,0xfffffffffffffffe);
  uVar6 = 6;
  uVar3 = FUN_181217460(&local_res18);
  FUN_181245100(uVar3,param_2,local_res8,param_4,uVar6);
  puVar5 = (uint *)(local_res18 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_res8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  pcVar2 = *(char **)(param_1 + 0x288);
  if (*pcVar2 != '\0') {
    puVar4 = (undefined8 *)FUN_18123fb50(param_2,&local_res20,pcVar2,param_4,7,uVar7,pcVar2);
    uVar3 = *param_2;
    *param_2 = *puVar4;
    *puVar4 = uVar3;
    puVar5 = (uint *)(local_res20 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  return param_2;
}



############ FUN_ 1813266a0 size=30 ############

undefined8 FUN_1813266a0(longlong param_1,undefined8 param_2)

{
  FUN_1812ea010(*(undefined8 *)(param_1 + 0x248));
  return param_2;
}



############ FUN_ 181349320 size=30 ############

undefined8 FUN_181349320(longlong param_1,undefined8 param_2)

{
  FUN_1812ea010(*(undefined8 *)(param_1 + 0x170));
  return param_2;
}



############ FUN_ 181552b50 size=188 ############

void FUN_181552b50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 uVar3;
  uint *_Memory;
  undefined4 uVar4;
  longlong local_res8;
  
  if (*(longlong *)(param_1 + -0x38) != 0) {
    FUN_1811c2330(*(longlong *)(param_1 + -0x38),param_2,param_3,param_4,0xfffffffffffffffe);
    uVar3 = FUN_1812ea010(param_1 + 0x278,&local_res8);
    uVar4 = (**(code **)(**(longlong **)(param_1 + -0x38) + 0x50))
                      (*(longlong **)(param_1 + -0x38),uVar3);
    plVar2 = *(longlong **)(param_1 + -0x38);
    (**(code **)(*plVar2 + 0x10))(plVar2,uVar4);
    FUN_1812c3d40(plVar2,uVar4);
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    FUN_1811bf8a0(*(undefined8 *)(param_1 + -0x38));
    FUN_181552c80(param_1 + -0x118);
  }
  return;
}



############ FUN_ 1813f2270 size=33 ############

undefined4 * FUN_1813f2270(undefined8 param_1,undefined4 *param_2)

{
  undefined1 local_res10 [4];
  undefined4 local_res14;
  
  FUN_1813f22a0(param_1,local_res10);
  *param_2 = local_res14;
  return param_2;
}



############ FUN_ 181494050 size=1624 ############

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

void FUN_181494050(longlong param_1,undefined8 param_2,char param_3)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  uint uVar4;
  ulonglong uVar5;
  float fVar6;
  float fVar7;
  int unaff_retaddr;
  undefined1 auStack_3c8 [32];
  undefined1 local_3a8;
  undefined1 local_398;
  undefined *local_390;
  undefined4 local_388;
  undefined *local_380;
  undefined4 local_378;
  int local_36c;
  int local_368;
  int local_364;
  undefined4 local_360;
  int local_35c;
  int local_358;
  undefined8 local_350;
  uint local_348;
  undefined4 local_32c;
  undefined4 local_328;
  undefined *local_320;
  longlong local_318;
  undefined1 local_310 [8];
  undefined1 local_308 [8];
  undefined1 local_300 [8];
  undefined8 local_2f8;
  undefined8 local_2e8;
  undefined1 local_2e0 [64];
  undefined8 local_2a0;
  longlong local_298;
  longlong local_290 [13];
  undefined8 local_228;
  longlong *local_d8;
  undefined1 local_d0 [120];
  ulonglong local_58;
  
  local_228 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_3c8;
  local_32c = 0x870;
  local_328 = 0x350;
  local_318 = param_1;
  local_2e8 = param_2;
  uVar3 = (**(code **)(*(longlong *)(param_1 + 0x1f0) + 0x10))
                    ((longlong *)(param_1 + 0x1f0),&local_d8);
  local_398 = FUN_1812477c0(uVar3,&DAT_1821f8414);
  (**(code **)(*local_d8 + 0xb0))(local_d8,local_d0);
  (**(code **)(*(longlong *)(param_1 + 0x1c8) + 8))((longlong *)(param_1 + 0x1c8));
  if (*(longlong *)(param_1 + 0x1d0) == 0) {
    FUN_180579970(param_1);
  }
  FUN_1813f2500(*(undefined8 *)(param_1 + 0x1d0),local_310);
  FUN_18049c4e0(&local_298,&DAT_1821f8494);
  fVar6 = (float)FUN_1812518d0(local_310,&local_298);
  fVar6 = ceilf(fVar6);
  local_364 = (int)fVar6;
  FUN_1804951e0(local_298 + -0x10);
  FUN_18049c4e0(local_290,&DAT_1821f9374);
  fVar7 = (float)FUN_1812518d0(local_310,local_290);
  fVar7 = ceilf(fVar7);
  local_36c = (int)fVar7;
  FUN_1804951e0(local_290[0] + -0x10);
  local_348 = *(uint *)(param_1 + 0x28);
  uVar5 = (ulonglong)local_348;
  local_360 = *(undefined4 *)(param_1 + 0x2c);
  fVar6 = (float)(int)((local_348 - (int)fVar7) - (int)fVar6);
  local_358 = (int)(fVar6 * DAT_1824c3c98);
  local_35c = (int)(fVar6 * DAT_1824c3d8c);
  local_368 = (int)(fVar6 * DAT_1824c3d18);
  if (*(longlong *)(param_1 + 0x1d0) == 0) {
    FUN_180579970(param_1);
  }
  local_3a8 = 1;
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0x1d0),local_308,DAT_1826741f4,param_1);
  if (*(longlong *)(param_1 + 0x1d0) == 0) {
    FUN_180579970(param_1);
  }
  uVar2 = DAT_1826741f4;
  if (param_3 != '\0') {
    uVar2 = DAT_182674200;
  }
  local_3a8 = 1;
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0x1d0),local_300,uVar2,param_1);
  local_2a0 = 0x180000000;
  local_390 = (undefined *)0x1807734d8;
  local_380 = &UNK_180774c34;
  local_388 = 0xc5;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_350 = local_390;
  local_320 = local_380;
  if (param_3 == '\0') {
    FUN_18149534b(0,0x5d7,0xffffffff2c9ffe24,uVar5 + 0x175c);
    return;
  }
  if (*(longlong *)(param_1 + 0x1d0) == 0) {
    FUN_180579970(param_1);
  }
  local_3a8 = 1;
  FUN_1813f22a0(*(undefined8 *)(param_1 + 0x1d0),local_2e0,DAT_18267428c,local_318);
  local_2f8 = 0;
  local_390 = &DAT_1807f2a54;
  local_380 = &UNK_1807f41a4;
  local_378 = 0xc5;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  FUN_181492f4c();
  FUN_1814946a2();
  pcVar1 = (code *)swi(1);
  (*pcVar1)();
  return;
}



############ FUN_ 1814c10b0 size=1614 ############

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

void FUN_1814c10b0(longlong param_1)

{
  longlong *plVar1;
  int iVar2;
  int *piVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  int *piVar7;
  undefined8 *puVar8;
  uint uVar9;
  undefined8 *puVar11;
  undefined8 *puVar12;
  undefined8 *puVar13;
  float fVar14;
  undefined1 local_res8 [8];
  float local_res10;
  undefined4 uStackX_14;
  undefined4 local_res18;
  undefined4 uStackX_1c;
  undefined1 local_158 [16];
  undefined8 local_148;
  float local_140;
  undefined4 uStack_13c;
  undefined4 local_138;
  undefined *local_130;
  undefined1 local_128 [16];
  undefined8 local_118;
  undefined8 uStack_110;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined4 uStack_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  undefined8 local_e8;
  undefined8 *puStack_e0;
  undefined8 *local_d8;
  int local_c8;
  int iStack_c4;
  undefined4 uStack_c0;
  int iStack_bc;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_98;
  undefined1 local_90 [24];
  undefined1 local_78 [64];
  undefined8 *puVar10;
  
  fVar14 = local_res10;
  local_98 = 0xfffffffffffffffe;
  plVar1 = (longlong *)(param_1 + 0x280);
  if (*(code **)(*plVar1 + 8) == FUN_180579370) {
    if (*(longlong *)(param_1 + 0x288) == 0) {
      FUN_1805799f0(param_1);
      local_res10 = fVar14;
      uVar9 = stack0x0000000f;
      fVar14 = local_res10;
      unique0x10000db2 = uVar9;
    }
    local_res10 = fVar14;
    uVar9 = stack0x0000000f;
    uVar5 = *(undefined8 *)(param_1 + 0x288);
  }
  else {
    uVar5 = (**(code **)(*plVar1 + 8))(plVar1);
    local_res10 = fVar14;
    uVar9 = stack0x0000000f;
  }
  stack0x0000000f = uVar9;
  fVar14 = local_res10;
  stack0x0000000f = stack0x0000000f;
  local_res8._4_4_ = stack0x0000000f;
  FUN_1813f22a0(uVar5,local_res8,DAT_1826742b0,param_1);
  local_res10 = fVar14;
  local_res8._0_2_ =
       CONCAT11((char)(int)((float)((uint)local_res8._4_4_ >> 8 & 0xff) * DAT_1824c3e5c),
                (char)(int)((float)(local_res8._4_4_ & 0xff) * DAT_1824c3e5c));
  local_res8._0_4_ =
       CONCAT13(SUB41(local_res8._4_4_,3),
                CONCAT12((char)(int)((float)((uint)local_res8._4_4_ >> 0x10 & 0xff) * DAT_1824c3e5c)
                         ,local_res8._0_2_));
  *(undefined4 *)(param_1 + 0x2f0) = local_res8._0_4_;
  lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
  local_c8 = (int)(*(float *)(lVar4 + 0x88) * DAT_1824c43d8);
  uVar9 = *(int *)(param_1 + 0x28) + local_c8 * -2;
  puVar10 = (undefined8 *)0x0;
  puVar8 = puVar10;
  if (0 < (int)uVar9) {
    puVar8 = (undefined8 *)(ulonglong)uVar9;
  }
  uStack_c0 = SUB84(puVar8,0);
  local_res8 = (undefined1  [8])CONCAT44(local_res8._4_4_,uStack_c0);
  iVar2 = *(int *)(param_1 + 0x2c) + local_c8 * -2;
  iStack_bc = 0;
  if (0 < iVar2) {
    iStack_bc = iVar2;
  }
  iStack_c4 = local_c8;
  if (*(code **)(*plVar1 + 8) == FUN_180579370) {
    if (*(longlong *)(param_1 + 0x288) == 0) {
      FUN_1805799f0(param_1);
    }
    uVar5 = *(undefined8 *)(param_1 + 0x288);
  }
  else {
    uVar5 = (**(code **)(*plVar1 + 8))(plVar1);
  }
  uVar5 = FUN_1813f22a0(uVar5,&local_res10,DAT_182674214,param_1);
  fVar14 = (float)FUN_1813ec390(uVar5);
  lVar4 = (**(code **)(*plVar1 + 8))(plVar1);
  fVar14 = *(float *)(lVar4 + 0x88) * fVar14;
  local_e8 = 0;
  puStack_e0 = (undefined8 *)0x0;
  local_d8 = (undefined8 *)0x0;
  if (*(longlong *)(param_1 + 0x2c8) - *(longlong *)(param_1 + 0x2c0) >> 3 != 0) {
    uStackX_14 = 1;
    puVar8 = (undefined8 *)0x0;
    puVar11 = puVar10;
    puVar12 = puVar10;
    puVar13 = puVar10;
    do {
      plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x2c0) + (longlong)puVar12);
      (**(code **)(*plVar1 + 0x160))(plVar1,&local_b8,(ulonglong)local_res8 & 0xffffffff);
      local_res10 = (float)uStack_b0._4_4_;
      local_158 = ZEXT816(0);
      local_148 = 0;
      uStack_13c = uStackX_14;
      local_138 = 0;
      local_130 = &DAT_18249f4b4;
      local_128._8_8_ = 0;
      local_128._0_8_ = plVar1;
      local_118 = 0;
      uStack_110 = 0;
      local_108 = 0;
      uStack_104 = 1;
      uStack_100 = 0;
      uStack_fc = 1;
      uStack_f8 = 0;
      uStack_f4 = 1;
      uStack_f0 = 0;
      uStack_ec = 1;
      local_140 = local_res10;
      if (puVar13 == puVar8) {
        FUN_18056d010(&local_e8,puVar8,local_158);
        puVar13 = local_d8;
      }
      else {
        *puVar8 = 0;
        puVar8[1] = 0;
        puVar8[2] = 0;
        local_158 = ZEXT816(0);
        local_148 = 0;
        puVar8[3] = CONCAT44(uStackX_14,local_res10);
        *(undefined4 *)(puVar8 + 4) = 0;
        puVar8[5] = &DAT_18249f4b4;
        puVar8[6] = plVar1;
        puVar8[7] = 0;
        puVar8[8] = 0;
        puVar8[9] = 0;
        puVar8[10] = 0x100000000;
        puVar8[0xb] = 0x100000000;
        puVar8[0xc] = 0x100000000;
        puVar8[0xd] = 0x100000000;
        puStack_e0 = puVar8 + 0xe;
      }
      puVar8 = puStack_e0;
      FUN_180569ed0(local_158);
      piVar3 = *(int **)(param_1 + 0x2e0);
      piVar7 = *(int **)(param_1 + 0x2d8);
      if (piVar7 == piVar3) {
LAB_1814c14c2:
        if (puVar11 < (undefined8 *)
                      ((*(longlong *)(param_1 + 0x2c8) - *(longlong *)(param_1 + 0x2c0) >> 3) + -1))
        {
          local_158 = ZEXT816(0);
          local_148 = 0;
          uStack_13c = 1;
          local_138 = 0;
          local_130 = &DAT_18249f4b4;
          local_128 = ZEXT816(0);
          local_118 = 0;
          uStack_110 = 0;
          local_108 = 0;
          uStack_104 = 1;
          uStack_100 = 0;
          uStack_fc = 1;
          uStack_f8 = 0;
          uStack_f4 = 1;
          uStack_f0 = 0;
          uStack_ec = 1;
          local_140 = fVar14;
          if (puVar13 == puVar8) {
            FUN_18056d010(&local_e8,puVar8,local_158);
            puVar13 = local_d8;
          }
          else {
            *puVar8 = 0;
            puVar8[1] = 0;
            puVar8[2] = 0;
            local_158 = ZEXT816(0);
            local_148 = 0;
            puVar8[3] = CONCAT44(1,fVar14);
            *(undefined4 *)(puVar8 + 4) = 0;
            puVar8[5] = &DAT_18249f4b4;
            puVar8[6] = 0;
            puVar8[7] = 0;
            puVar8[8] = 0;
            puVar8[9] = 0;
            puVar8[10] = 0x100000000;
            puVar8[0xb] = 0x100000000;
            puVar8[0xc] = 0x100000000;
            puVar8[0xd] = 0x100000000;
            puStack_e0 = puVar8 + 0xe;
          }
          goto LAB_1814c159f;
        }
      }
      else {
        do {
          if (*piVar7 == (int)puVar10) break;
          piVar7 = piVar7 + 1;
        } while (piVar7 != piVar3);
        if (piVar7 == piVar3) goto LAB_1814c14c2;
        local_res18 = 0x3f800000;
        uStackX_1c = 0;
        local_158 = ZEXT416(0);
        local_148 = 0;
        local_140 = 1.0;
        uStack_13c = 0;
        local_138 = 0;
        local_130 = &DAT_18249f4b4;
        local_118 = 0;
        uStack_110 = 0;
        local_108 = 0;
        uStack_104 = 1;
        uStack_100 = 0;
        uStack_fc = 1;
        uStack_f8 = 0;
        uStack_f4 = 1;
        uStack_f0 = 0;
        uStack_ec = 1;
        local_128 = local_158;
        if (puVar13 == puVar8) {
          FUN_18056d010(&local_e8,puVar8,local_158);
          puVar13 = local_d8;
        }
        else {
          *puVar8 = 0;
          puVar8[1] = 0;
          puVar8[2] = 0;
          local_148 = 0;
          puVar8[3] = 0x3f800000;
          *(undefined4 *)(puVar8 + 4) = 0;
          puVar8[5] = &DAT_18249f4b4;
          puVar8[6] = 0;
          puVar8[7] = 0;
          puVar8[8] = 0;
          puVar8[9] = 0;
          puVar8[10] = 0x100000000;
          puVar8[0xb] = 0x100000000;
          puVar8[0xc] = 0x100000000;
          puVar8[0xd] = 0x100000000;
          puStack_e0 = puVar8 + 0xe;
        }
LAB_1814c159f:
        puVar8 = puStack_e0;
        FUN_180569ed0(local_158);
      }
      uVar9 = (int)puVar10 + 1;
      puVar10 = (undefined8 *)(ulonglong)uVar9;
      puVar12 = puVar12 + 1;
      puVar11 = (undefined8 *)(longlong)(int)uVar9;
    } while (puVar11 < (undefined8 *)
                       (*(longlong *)(param_1 + 0x2c8) - *(longlong *)(param_1 + 0x2c0) >> 3));
  }
  local_158 = ZEXT816(0);
  local_148 = 0;
  local_140 = 0.0;
  uStack_13c = 0;
  local_138 = 0;
  local_130 = &DAT_18249f4b4;
  local_128 = ZEXT816(0);
  local_118 = 0;
  uStack_110 = 0;
  local_108 = 0;
  uStack_104 = 1;
  uStack_100 = 0;
  uStack_fc = 1;
  uStack_f8 = 0;
  uStack_f4 = 1;
  uStack_f0 = 0;
  uStack_ec = 1;
  uVar5 = FUN_180568910(local_90,&local_e8);
  local_res8 = (undefined1  [8])uVar5;
  FUN_180568910(&local_b8,uVar5);
  uVar6 = FUN_180568910(local_78,&local_b8);
  FUN_18055f7e0(local_158,uVar6,1);
  FUN_180569ed0(&local_b8);
  FUN_180569ed0(uVar5);
  local_b8 = CONCAT44(iStack_c4,local_c8);
  uStack_b0 = CONCAT44(iStack_bc,uStack_c0);
  FUN_18055f500(local_158,&local_b8,param_1);
  FUN_180569ed0(local_158);
  FUN_180569ed0(&local_e8);
  return;
}



############ FUN_ 1814eab40 size=164 ############

void FUN_1814eab40(longlong param_1)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong lVar3;
  float fVar4;
  undefined1 local_res8 [8];
  
  if (*(longlong *)(param_1 + 0x1d0) != 0) {
    plVar1 = (longlong *)(param_1 + 0x1c8);
    if (*(code **)(*plVar1 + 8) == FUN_180579300) {
      if (*(longlong *)(param_1 + 0x1d0) == 0) {
        FUN_180579970(param_1);
      }
      uVar2 = *(undefined8 *)(param_1 + 0x1d0);
    }
    else {
      uVar2 = (**(code **)(*plVar1 + 8))(plVar1);
    }
    uVar2 = FUN_1813f22a0(uVar2,local_res8,DAT_182674194,param_1);
    fVar4 = (float)FUN_1813ec390(uVar2);
    lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
    *(float *)(param_1 + 0x1e8) = fVar4 * *(float *)(lVar3 + 0x88);
  }
  return;
}



############ FUN_ 1814eb5c0 size=830 ############

void FUN_1814eb5c0(longlong param_1)

{
  longlong *plVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  code *pcVar5;
  longlong lVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined4 uVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  float local_68;
  float fStack_64;
  float fStack_60;
  float fStack_5c;
  
  lVar6 = *(longlong *)(param_1 + 0x1f8);
  if (((lVar6 != 0) && (*(int *)(param_1 + 0x2c) != 0)) && (*(int *)(param_1 + 0x28) != 0)) {
    plVar1 = (longlong *)(param_1 + 0x1c8);
    fVar12 = *(float *)(lVar6 + 0x1c);
    fVar11 = *(float *)(lVar6 + 0x18);
    fVar2 = *(float *)(lVar6 + 0x14);
    fVar3 = *(float *)(lVar6 + 0x10);
    fVar13 = (float)*(int *)(param_1 + 0x2c) * *(float *)(param_1 + 0x204);
    lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
    local_68 = 0.0;
    fVar10 = (float)*(int *)(param_1 + 0x28);
    iVar4 = *(int *)(param_1 + 0x2c);
    fVar12 = ((fVar2 - fVar3) / (fVar12 - fVar11)) * fVar13 +
             *(float *)(lVar6 + 0x88) * DAT_1824c4334;
    if (**(char **)(param_1 + 0x158) != '\0') {
      if (*(int *)(param_1 + 0x210) == 0) {
        lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
        local_68 = *(float *)(lVar6 + 0x88) * DAT_1824c4334 + 0.0;
        fVar10 = (fVar10 + 0.0) - local_68;
        if (fVar10 <= 0.0) {
          fVar10 = 0.0;
        }
        if (fVar12 <= fVar10) {
          fVar10 = fVar12;
        }
      }
      else if (*(int *)(param_1 + 0x210) == 1) {
        lVar6 = (**(code **)(*plVar1 + 8))(plVar1);
        fVar11 = fVar10 - *(float *)(lVar6 + 0x88) * DAT_1824c4334;
        if (fVar11 <= 0.0) {
          fVar11 = 0.0;
        }
        fVar10 = fVar11;
        if (fVar12 <= fVar11) {
          fVar10 = fVar12;
        }
        local_68 = (fVar11 + 0.0) - fVar10;
      }
    }
    local_68 = (fVar10 - fVar12) * DAT_1824c3d8c + local_68;
    fStack_64 = ((float)iVar4 - fVar13) * DAT_1824c3d8c + 0.0;
    fStack_60 = fVar12;
    fStack_5c = fVar13;
    FUN_180576b40(*(undefined8 *)(param_1 + 0x1f8),&local_68,0x24);
  }
  if (*(longlong *)(param_1 + 0x1d0) != 0) {
    pcVar5 = *(code **)(*(longlong *)(param_1 + 0x1c8) + 8);
    if (pcVar5 == FUN_180579300) {
      if (*(longlong *)(param_1 + 0x1d0) == 0) {
        FUN_180579970(param_1);
      }
      uVar8 = *(undefined8 *)(param_1 + 0x1d0);
    }
    else {
      uVar8 = (*pcVar5)(param_1 + 0x1c8);
    }
    FUN_1813f22a0(uVar8,local_res8,DAT_182674198,param_1);
    *(undefined4 *)(param_1 + 0x21c) = local_resc;
    uVar7 = FUN_1813f22a0(uVar8,local_res8,DAT_1826741d0,param_1);
    uVar9 = FUN_1813ec390(uVar7);
    *(undefined4 *)(param_1 + 0x230) = uVar9;
    FUN_1813f22a0(uVar8,local_res8,DAT_18267421c,param_1);
    *(undefined4 *)(param_1 + 0x220) = local_resc;
    FUN_1813f22a0(uVar8,local_res8,DAT_1826741b4,param_1);
    *(undefined4 *)(param_1 + 0x228) = local_resc;
    FUN_1813f22a0(uVar8,local_res8,DAT_182674240,param_1);
    uVar9 = DAT_18267424c;
    *(undefined4 *)(param_1 + 0x224) = local_resc;
    FUN_1813f22a0(uVar8,local_res8,uVar9,param_1);
    *(undefined4 *)(param_1 + 0x22c) = local_resc;
  }
  return;
}



############ FUN_ 1814fc2f0 size=583 ############

void FUN_1814fc2f0(longlong param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  uint *_Memory;
  longlong *plVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong local_res8;
  undefined1 local_res10 [4];
  undefined4 local_res14;
  undefined1 local_res18 [4];
  undefined4 local_res1c;
  
  if (*(longlong *)(param_1 + 0xb8) != 0) {
    uVar5 = FUN_1811bf620(*(undefined8 *)(param_1 + 0xf8));
    (**(code **)(**(longlong **)(param_1 + 0xf8) + 0x78))
              (*(longlong **)(param_1 + 0xf8),&local_res8);
    uVar1 = DAT_182674230;
    uVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    FUN_1813f22a0(uVar6,local_res10,uVar1,param_1);
    uVar1 = DAT_182674268;
    uVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))(param_1 + 0xb0);
    FUN_1813f22a0(uVar6,local_res18,uVar1,param_1);
    puVar7 = (undefined4 *)FUN_1805823c0(param_1 + 0x110,&local_res8);
    uVar1 = *puVar7;
    puVar7 = (undefined4 *)FUN_1805823c0(param_1 + 0x130,&local_res8);
    uVar2 = *puVar7;
    plVar8 = *(longlong **)(param_1 + 0xe0);
    uVar11 = 0;
    uVar9 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0xec)) + (7 - (longlong)plVar8)) >> 3
    ;
    if (plVar8 + *(int *)(param_1 + 0xec) < plVar8) {
      uVar9 = uVar11;
    }
    uVar10 = uVar11;
    if (uVar9 != 0) {
      do {
        *(undefined1 *)(*plVar8 + 0x4a4) = 0;
        plVar8 = plVar8 + 1;
        uVar10 = uVar10 + 1;
      } while (uVar10 != uVar9);
    }
    uVar9 = uVar11;
    if (uVar5 < *(uint *)(param_1 + 0xec)) {
      uVar9 = *(ulonglong *)(*(longlong *)(param_1 + 0xe0) + (longlong)(int)uVar5 * 8);
    }
    *(undefined1 *)(uVar9 + 0x4a4) = 1;
    uVar4 = DAT_1824c4680;
    plVar8 = *(longlong **)(param_1 + 0xe0);
    uVar9 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0xec)) + (7 - (longlong)plVar8)) >> 3
    ;
    if (plVar8 + *(int *)(param_1 + 0xec) < plVar8) {
      uVar9 = uVar11;
    }
    if (uVar9 != 0) {
      do {
        uVar6 = *(undefined8 *)(*plVar8 + 0x4a8);
        if (*(char *)(*plVar8 + 0x4a4) == '\0') {
          FUN_181405270(uVar6,DAT_182674230,local_res14,uVar4,uVar4);
          uVar3 = local_res1c;
        }
        else {
          FUN_181405270(uVar6,DAT_182674230,uVar1,uVar4,uVar4);
          uVar3 = uVar2;
        }
        FUN_181405270(uVar6,DAT_182674268,uVar3,uVar4,uVar4);
        plVar8 = plVar8 + 1;
        uVar11 = uVar11 + 1;
      } while (uVar11 != uVar9);
    }
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar5 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 1814fc580 size=389 ############

void FUN_1814fc580(longlong param_1,longlong param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  longlong lVar4;
  undefined4 *puVar5;
  undefined8 uVar6;
  ulonglong uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  undefined1 local_res10 [4];
  undefined4 local_res14;
  
  uVar10 = 0;
  lVar4 = __RTDynamicCast(*(undefined8 *)(param_2 + 0x38),0,&juce::Component::RTTI_Type_Descriptor,
                          &CloudyComboBoxRadioButton::RTTI_Type_Descriptor,0);
  uVar2 = DAT_1824c4680;
  if (lVar4 != 0) {
    uVar1 = *(uint *)(*(longlong *)(param_2 + 0x38) + 0x4a0);
    uVar7 = uVar10;
    if (uVar1 < *(uint *)(param_1 + 0xec)) {
      uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0xe0) + (longlong)(int)uVar1 * 8);
    }
    if (*(char *)(uVar7 + 0x4a4) == '\0') {
      plVar8 = *(longlong **)(param_1 + 0xe0);
      uVar7 = (ulonglong)((longlong)(plVar8 + *(int *)(param_1 + 0xec)) + (7 - (longlong)plVar8)) >>
              3;
      if (plVar8 + *(int *)(param_1 + 0xec) < plVar8) {
        uVar7 = uVar10;
      }
      uVar9 = uVar10;
      if (uVar7 != 0) {
        do {
          lVar4 = *plVar8;
          if (*(char *)(lVar4 + 0x4a4) != '\0') {
            puVar5 = (undefined4 *)FUN_1805823c0(param_1 + 0x110,lVar4 + 8);
            FUN_181405270(*(undefined8 *)(lVar4 + 0x4a8),DAT_182674230,*puVar5,uVar2,uVar2);
          }
          plVar8 = plVar8 + 1;
          uVar9 = uVar9 + 1;
        } while (uVar9 != uVar7);
      }
      uVar3 = DAT_182674230;
      uVar6 = (**(code **)(*(longlong *)(param_1 + 0xb0) + 8))();
      FUN_1813f22a0(uVar6,local_res10,uVar3,param_1);
      if (uVar1 < *(uint *)(param_1 + 0xec)) {
        uVar10 = *(ulonglong *)(*(longlong *)(param_1 + 0xe0) + (longlong)(int)uVar1 * 8);
      }
      FUN_181405270(*(undefined8 *)(uVar10 + 0x4a8),DAT_182674230,local_res14,uVar2,uVar2);
    }
  }
  return;
}



############ FUN_ 1815528c0 size=386 ############

void FUN_1815528c0(longlong param_1,undefined8 param_2)

{
  undefined8 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  undefined4 local_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  undefined **local_e8;
  longlong local_e0;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined ***local_b0;
  undefined **local_a8;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined ***local_70;
  undefined **local_68;
  longlong local_60;
  undefined ***local_30;
  
  uVar1 = FUN_1813f22a0(param_2,local_res8,DAT_1826741a4,param_1);
  uVar2 = FUN_1813ec390(uVar1);
  uVar1 = FUN_1813f22a0(param_2,local_res8,DAT_1826742b4,param_1);
  uVar3 = FUN_1813ec390(uVar1);
  FUN_1813f22a0(param_2,local_res8,DAT_1826741c4,param_1);
  *(undefined4 *)(param_1 + 0x904) = local_resc;
  local_f8 = (undefined4)param_1;
  uStack_f4 = (undefined4)((ulonglong)param_1 >> 0x20);
  local_a8 = std::_Func_impl_no_alloc<<lambda_381713201a25d444fa40849e0083adc3>,juce::Point<int>_>::
             vftable;
  local_70 = &local_a8;
  local_68 = std::_Func_impl_no_alloc<<lambda_f6d0f159b19c60d550ee9f6ba3efb044>,juce::Path*___ptr64>
             ::vftable;
  local_30 = &local_68;
  local_e8 = std::_Func_impl_no_alloc<<lambda_d491ff4427c18f2575bfa6a20428a074>,int>::vftable;
  local_b0 = &local_e8;
  local_a0 = local_f8;
  uStack_9c = uStack_f4;
  local_e0 = param_1;
  uStack_98 = uVar2;
  uStack_94 = uVar3;
  local_60 = param_1;
  FUN_1815f8200(param_1 + 0x830,param_1,&local_e8,&local_68,&local_a8);
  local_e8 = std::_Func_impl_no_alloc<<lambda_cac93642f04fd3a1f613208f2ac7884d>,void,CloudyGUIValue>
             ::vftable;
  local_b0 = &local_e8;
  uStack_f0 = (undefined4)param_2;
  uStack_ec = (undefined4)((ulonglong)param_2 >> 0x20);
  uStack_d8 = uStack_f0;
  uStack_d4 = uStack_ec;
  local_e0 = param_1;
  FUN_1813ef120(param_2,param_1,DAT_1826741a8,&local_e8);
  return;
}



############ FUN_ 1815badd0 size=393 ############

void FUN_1815badd0(longlong param_1)

{
  longlong *plVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 uVar4;
  float fVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined1 local_res8 [4];
  undefined4 local_resc;
  
  if (*(longlong *)(param_1 + 0x1d0) != 0) {
    plVar1 = (longlong *)(param_1 + 0x1c8);
    if (*(code **)(*plVar1 + 8) == FUN_180579300) {
      if (*(longlong *)(param_1 + 0x1d0) == 0) {
        FUN_180579970(param_1);
      }
      uVar4 = *(undefined8 *)(param_1 + 0x1d0);
    }
    else {
      uVar4 = (**(code **)(*plVar1 + 8))(plVar1);
    }
    uVar2 = FUN_1813f22a0(uVar4,local_res8,DAT_182674238,param_1);
    fVar5 = (float)FUN_1813ec390(uVar2);
    lVar3 = (**(code **)(*plVar1 + 8))(plVar1);
    *(float *)(param_1 + 0x278) = fVar5 * *(float *)(lVar3 + 0x88);
    FUN_1813f22a0(uVar4,local_res8,DAT_182674234,param_1);
    uVar7 = DAT_182674190;
    *(undefined4 *)(param_1 + 0x284) = local_resc;
    FUN_1813f22a0(uVar4,local_res8,uVar7,param_1);
    uVar7 = DAT_1826741c8;
    *(undefined4 *)(param_1 + 0x288) = local_resc;
    FUN_1813f22a0(uVar4,local_res8,uVar7,param_1);
    uVar7 = DAT_1826741fc;
    *(undefined4 *)(param_1 + 0x28c) = local_resc;
    FUN_1813f22a0(uVar4,local_res8,uVar7,param_1);
    uVar7 = DAT_182674228;
    *(undefined4 *)(param_1 + 0x290) = local_resc;
    uVar2 = FUN_1813f22a0(uVar4,local_res8,uVar7,param_1);
    uVar6 = FUN_1813ec390(uVar2);
    uVar7 = DAT_182674270;
    *(undefined4 *)(param_1 + 0x280) = uVar6;
    uVar4 = FUN_1813f22a0(uVar4,local_res8,uVar7,param_1);
    uVar7 = FUN_1813ec390(uVar4);
    *(undefined4 *)(param_1 + 0x27c) = uVar7;
  }
  return;
}



############ FUN_ 180001d30 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616048)[DAT_1826159a0])();
  return;
}



############ FUN_ 1800020f0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616548)[DAT_1826159a0])();
  return;
}



############ FUN_ 1800020c0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_DAT_182616508)[DAT_1826159a0])();
  return;
}



############ FUN_ 1800022d0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_1826167c8)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001b50 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_LAB_182615dc8)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001850 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_1826159c8)[DAT_1826159a0])();
  return;
}



############ FUN_ 180002030 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616448)[DAT_1826159a0])();
  return;
}



############ FUN_ 1800019a0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615b88)[DAT_1826159a0])();
  return;
}



############ FUN_ 18056c640 size=363 ############

void FUN_18056c640(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  
  pvVar3 = (void *)param_1[1];
  lVar5 = *param_1;
  uVar6 = (longlong)pvVar3 - lVar5 >> 3;
  uVar4 = param_1[2] - lVar5 >> 3;
  if (uVar4 < param_2) {
    if (0x1fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar2 = param_2;
    if ((uVar4 <= 0x1fffffffffffffff - (uVar4 >> 1)) &&
       (uVar2 = (uVar4 >> 1) + uVar4, uVar2 < param_2)) {
      uVar2 = param_2;
    }
    lVar5 = uVar2 * 8;
    if (0x1fffffffffffffff < uVar2) {
      lVar5 = -1;
    }
    pvVar3 = (void *)FUN_180480500(lVar5);
    if (param_2 - uVar6 != 0) {
      memset((void *)((longlong)pvVar3 + uVar6 * 8),0,(param_2 - uVar6) * 8);
    }
    memmove(pvVar3,(void *)*param_1,param_1[1] - *param_1);
    pvVar1 = (void *)*param_1;
    if (pvVar1 != (void *)0x0) {
      pvVar3 = pvVar1;
      if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
         (pvVar3 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar3);
    }
    *param_1 = (longlong)pvVar3;
    param_1[1] = (longlong)((longlong)pvVar3 + param_2 * 8);
    param_1[2] = (longlong)(uVar2 * 8 + (longlong)pvVar3);
  }
  else if (uVar6 < param_2) {
    lVar5 = param_2 - uVar6;
    if (lVar5 != 0) {
      memset(pvVar3,0,lVar5 * 8);
      pvVar3 = (void *)((longlong)pvVar3 + lVar5 * 8);
    }
    param_1[1] = (longlong)pvVar3;
  }
  else if (param_2 != uVar6) {
    param_1[1] = lVar5 + param_2 * 8;
  }
  return;
}



############ FUN_ 180001be0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615e88)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001a00 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615c08)[DAT_1826159a0])();
  return;
}



############ FUN_ 181a05cc3 size=446 ############

void FUN_181a05cc3(void)

{
  longlong *plVar1;
  float *pfVar2;
  longlong lVar3;
  int iVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  longlong *plVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  bool bVar11;
  double dVar12;
  char cVar13;
  uint uVar14;
  float *pfVar15;
  longlong lVar16;
  longlong unaff_RBP;
  uint uVar17;
  ulonglong unaff_RSI;
  longlong unaff_RDI;
  longlong lVar18;
  uint uVar19;
  ulonglong uVar20;
  longlong unaff_R12;
  ulonglong uVar21;
  ulonglong *unaff_R13;
  uint unaff_R14D;
  ulonglong *unaff_R15;
  float fVar22;
  undefined1 auVar23 [16];
  float fVar24;
  undefined1 unaff_XMM6 [16];
  float unaff_XMM8_Da;
  undefined4 unaff_XMM8_Db;
  float afStackX_20 [2];
  
  uVar17 = (uint)unaff_RSI;
  LOCK();
  *(uint *)(unaff_R12 + 0x2404b8) = uVar17;
  UNLOCK();
  fVar22 = (float)(**(code **)(**(longlong **)(*(longlong *)(unaff_RDI + 0x1b8) + 0x168) + 0xe0))();
  FUN_1812b3270(*unaff_R13);
  auVar23._4_12_ = unaff_XMM6._4_12_;
  auVar23._0_4_ = unaff_XMM6._0_4_ - fVar22;
  FUN_1812b3db0(*unaff_R13,auVar23._0_8_,unaff_R14D);
  uVar20 = *unaff_R13;
  FUN_180535a70(uVar20,uVar20,unaff_R14D);
  FUN_18052d920(uVar20);
  fVar22 = DAT_1824c3df0;
  fVar24 = unaff_XMM6._0_4_ - DAT_1824c3df0;
  uVar20 = unaff_RSI & 0xffffffff;
  uVar19 = uVar17;
  if ((0 < (int)unaff_R14D) && (0xf < unaff_R14D)) {
    uVar5 = *unaff_R15;
    uVar6 = *unaff_R13;
    if ((uVar6 + (longlong)(int)(unaff_R14D - 1) * 4 < uVar5) ||
       (uVar5 + (longlong)(int)(unaff_R14D - 1) * 4 < uVar6)) {
      uVar14 = unaff_R14D & 0x8000000f;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffff0) + 1;
      }
      pfVar15 = (float *)(uVar5 + 0x20);
      uVar21 = unaff_RSI;
      do {
        uVar19 = (int)uVar20 + 0x10;
        uVar20 = (ulonglong)uVar19;
        pfVar2 = (float *)((longlong)pfVar15 + uVar6 + (-0x20 - uVar5));
        fVar8 = pfVar2[1];
        fVar9 = pfVar2[2];
        fVar10 = pfVar2[3];
        uVar21 = uVar21 + 0x10;
        pfVar15[-8] = *pfVar2 * fVar22 + pfVar15[-8] * fVar24;
        pfVar15[-7] = fVar8 * fVar22 + pfVar15[-7] * fVar24;
        pfVar15[-6] = fVar9 * fVar22 + pfVar15[-6] * fVar24;
        pfVar15[-5] = fVar10 * fVar22 + pfVar15[-5] * fVar24;
        pfVar2 = (float *)((longlong)pfVar15 + uVar6 + (-0x10 - uVar5));
        fVar8 = pfVar2[1];
        fVar9 = pfVar2[2];
        fVar10 = pfVar2[3];
        pfVar15[-4] = *pfVar2 * fVar22 + pfVar15[-4] * fVar24;
        pfVar15[-3] = fVar8 * fVar22 + pfVar15[-3] * fVar24;
        pfVar15[-2] = fVar9 * fVar22 + pfVar15[-2] * fVar24;
        pfVar15[-1] = fVar10 * fVar22 + pfVar15[-1] * fVar24;
        pfVar2 = (float *)((longlong)pfVar15 + (uVar6 - uVar5));
        fVar8 = pfVar2[1];
        fVar9 = pfVar2[2];
        fVar10 = pfVar2[3];
        *pfVar15 = *pfVar2 * fVar22 + *pfVar15 * fVar24;
        pfVar15[1] = fVar8 * fVar22 + pfVar15[1] * fVar24;
        pfVar15[2] = fVar9 * fVar22 + pfVar15[2] * fVar24;
        pfVar15[3] = fVar10 * fVar22 + pfVar15[3] * fVar24;
        pfVar2 = (float *)((longlong)pfVar15 + uVar6 + (0x10 - uVar5));
        fVar8 = pfVar2[1];
        fVar9 = pfVar2[2];
        fVar10 = pfVar2[3];
        pfVar15[4] = *pfVar2 * fVar22 + pfVar15[4] * fVar24;
        pfVar15[5] = fVar8 * fVar22 + pfVar15[5] * fVar24;
        pfVar15[6] = fVar9 * fVar22 + pfVar15[6] * fVar24;
        pfVar15[7] = fVar10 * fVar22 + pfVar15[7] * fVar24;
        pfVar15 = pfVar15 + 0x10;
      } while ((longlong)uVar21 < (longlong)(int)(unaff_R14D - uVar14));
    }
  }
  lVar18 = (longlong)(int)uVar19;
  if (lVar18 < unaff_RBP) {
    if (3 < unaff_RBP - lVar18) {
      uVar20 = *unaff_R15;
      uVar5 = *unaff_R13;
      pfVar15 = (float *)(uVar20 + 8 + lVar18 * 4);
      lVar16 = ((unaff_RBP - lVar18) - 4U >> 2) + 1;
      lVar18 = lVar18 + lVar16 * 4;
      do {
        lVar3 = uVar5 + (-8 - uVar20);
        pfVar15[-2] = fVar24 * pfVar15[-2] + fVar22 * *(float *)(lVar3 + (longlong)pfVar15);
        pfVar15[-1] = fVar22 * *(float *)(lVar3 + 4 + (longlong)pfVar15) + fVar24 * pfVar15[-1];
        *pfVar15 = fVar22 * *(float *)((uVar5 - uVar20) + (longlong)pfVar15) + fVar24 * *pfVar15;
        pfVar15[1] = fVar22 * *(float *)(uVar5 + (4 - uVar20) + (longlong)pfVar15) +
                     fVar24 * pfVar15[1];
        pfVar15 = pfVar15 + 4;
        lVar16 = lVar16 + -1;
      } while (lVar16 != 0);
    }
    if (lVar18 < unaff_RBP) {
      uVar20 = *unaff_R15;
      uVar5 = *unaff_R13;
      pfVar15 = (float *)(uVar20 + lVar18 * 4);
      lVar18 = unaff_RBP - lVar18;
      do {
        *pfVar15 = fVar22 * *(float *)((longlong)pfVar15 + (uVar5 - uVar20)) + fVar24 * *pfVar15;
        pfVar15 = pfVar15 + 1;
        lVar18 = lVar18 + -1;
      } while (lVar18 != 0);
    }
  }
  fVar22 = (float)FUN_180487300(*(undefined8 *)(unaff_RDI + 0x1c8));
  dVar12 = DAT_1824c4140;
  plVar1 = (longlong *)(unaff_RDI + 400);
  *(ulonglong *)(unaff_RDI + 0x19c) = unaff_RSI;
  *(ulonglong *)(unaff_RDI + 0x1a4) = unaff_RSI;
  *(uint *)(unaff_RDI + 0x1ac) = uVar17;
  fVar22 = (float)((dVar12 - (double)fVar22) * (double)*(int *)(unaff_RDI + 0x16c));
  if (*(uint *)(unaff_RDI + 0x19c) == uVar17) {
    *(float *)(unaff_RDI + 0x1a8) = fVar22;
    *(ulonglong *)(unaff_RDI + 0x1a0) = unaff_RSI;
  }
  else {
    if (*(float *)(unaff_RDI + 0x1a0) <= unaff_XMM8_Da) {
      if (*(float *)(unaff_RDI + 0x1a4) <= unaff_XMM8_Da &&
          unaff_XMM8_Da != *(float *)(unaff_RDI + 0x1a4)) {
        *(uint *)(unaff_RDI + 0x1a4) = uVar17;
      }
    }
    else {
      *(uint *)(unaff_RDI + 0x1a0) = uVar17;
    }
    if (fVar22 < *(float *)(unaff_RDI + 0x1a8)) {
      *(float *)(unaff_RDI + 0x1a8) = fVar22;
      goto LAB_181a06023;
    }
    if (fVar22 < *(float *)(unaff_RDI + 0x1ac) || fVar22 == *(float *)(unaff_RDI + 0x1ac))
    goto LAB_181a06023;
  }
  *(float *)(unaff_RDI + 0x1ac) = fVar22;
LAB_181a06023:
  FUN_1804b02a0(plVar1,&DAT_1821df344,CONCAT44(unaff_XMM8_Db,unaff_XMM8_Da),fVar22);
  lVar18 = *(longlong *)(unaff_RDI + 0x1b8);
  cVar13 = FUN_180528c00(lVar18);
  uVar19 = DAT_1824c4f30;
  if ((cVar13 == '\0') && (*(char *)(lVar18 + 0x939) == '\0')) {
    bVar11 = false;
  }
  else {
    bVar11 = true;
  }
  if (0 < unaff_RBP) {
    do {
      afStackX_20[0] = *(float *)(*unaff_R15 + unaff_RSI * 4);
      if (bVar11) {
        afStackX_20[0] = (float)((uint)afStackX_20[0] ^ uVar19);
      }
      afStackX_20[0] = afStackX_20[0] * *(float *)(unaff_RDI + 0x164);
      plVar7 = *(longlong **)(unaff_RDI + 0x220);
      if (plVar7 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*plVar7 + 0x10))(plVar7,afStackX_20);
      FUN_18129ddd0(plVar1);
      unaff_RSI = unaff_RSI + 1;
    } while ((longlong)unaff_RSI < unaff_RBP);
  }
  FUN_18129ddd0(plVar1);
  if (!bVar11) {
    FUN_18129ddd0(plVar1);
    FUN_18129ddd0(plVar1);
  }
  iVar4 = *(int *)(unaff_RDI + 0x19c);
  if ((iVar4 != 0) &&
     ((iVar4 < 1 || (*(float *)(*plVar1 + (longlong)(iVar4 + -1) * 4) != DAT_1824c460c)))) {
    if (*(int *)(unaff_RDI + 0x198) < iVar4 + 1) {
      FUN_1804af790(plVar1,iVar4 + 9 + (iVar4 + 1) / 2 & 0xfffffff8);
    }
    iVar4 = *(int *)(unaff_RDI + 0x19c);
    *(int *)(unaff_RDI + 0x19c) = iVar4 + 1;
    *(undefined4 *)(*plVar1 + (longlong)iVar4 * 4) = 0x47c35280;
  }
  return;
}



############ FUN_ 180001dc0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616108)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001d00 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616008)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001e50 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_1826161c8)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001a30 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615c48)[DAT_1826159a0])();
  return;
}



############ FUN_ 180534180 size=382 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

longlong *
FUN_180534180(longlong *param_1,double param_2,double param_3,double param_4,float param_5)

{
  double dVar1;
  double _X;
  double dVar2;
  float fVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  fVar3 = sqrtf(param_5);
  uVar8 = SUB84(DAT_1824c41e8,0);
  uVar9 = (int)((ulonglong)DAT_1824c41e8 >> 0x20);
  if (DAT_1824c41e8 <= param_3) {
    uVar8 = SUB84(param_3,0);
    uVar9 = (int)((ulonglong)param_3 >> 0x20);
  }
  if (fVar3 <= 0.0) {
    fVar3 = 0.0;
  }
  _X = (double)fVar3;
  param_2 = ((double)CONCAT44(uVar9,uVar8) * DAT_1824c4248) / param_2;
  dVar2 = _X - DAT_1824c4140;
  dVar1 = _X + DAT_1824c4140;
  dVar4 = cos(param_2);
  dVar5 = sin(param_2);
  dVar6 = sqrt(_X);
  dVar7 = dVar4 * dVar2;
  param_4 = (dVar5 * dVar6) / param_4;
  FUN_180534730(param_1);
  dVar5 = (dVar4 * dVar1 + dVar2) * _DAT_1824c46b0;
  *(double *)*param_1 = ((dVar1 - dVar7) + param_4) * _X;
  *(double *)(*param_1 + 8) = (dVar2 - dVar4 * dVar1) * _X * DAT_1824c41e8;
  *(double *)(*param_1 + 0x10) = ((dVar1 - dVar7) - param_4) * _X;
  *(double *)param_1[1] = dVar7 + dVar1 + param_4;
  *(double *)(param_1[1] + 8) = dVar5;
  *(double *)(param_1[1] + 0x10) = (dVar7 + dVar1) - param_4;
  return param_1;
}



############ FUN_ 180533ec0 size=290 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

longlong *
FUN_180533ec0(longlong *param_1,double param_2,double param_3,double param_4,float param_5)

{
  float fVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  
  fVar1 = sqrtf(param_5);
  uVar6 = SUB84(DAT_1824c41e8,0);
  uVar7 = (int)((ulonglong)DAT_1824c41e8 >> 0x20);
  if (DAT_1824c41e8 <= param_3) {
    uVar6 = SUB84(param_3,0);
    uVar7 = (int)((ulonglong)param_3 >> 0x20);
  }
  if (fVar1 <= 0.0) {
    fVar1 = 0.0;
  }
  param_2 = ((double)CONCAT44(uVar7,uVar6) * DAT_1824c4248) / param_2;
  dVar2 = sin(param_2);
  param_4 = (dVar2 * DAT_1824c4050) / param_4;
  dVar2 = cos(param_2);
  dVar2 = dVar2 * _DAT_1824c46b0;
  dVar5 = param_4 * (double)fVar1;
  param_4 = param_4 / (double)fVar1;
  FUN_180534730(param_1);
  dVar4 = param_4 + DAT_1824c4140;
  dVar3 = DAT_1824c4140 - dVar5;
  param_4 = DAT_1824c4140 - param_4;
  *(double *)*param_1 = dVar5 + DAT_1824c4140;
  *(double *)(*param_1 + 8) = dVar2;
  *(double *)(*param_1 + 0x10) = dVar3;
  *(double *)param_1[1] = dVar4;
  *(double *)(param_1[1] + 8) = dVar2;
  *(double *)(param_1[1] + 0x10) = param_4;
  return param_1;
}



############ FUN_ 181132120 size=81 ############

/* WARNING: This is an inlined function */
/* Library Function - Single Match
    _alloca_probe
   
   Libraries: Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 */

void _alloca_probe(void)

{
  undefined1 *in_RAX;
  undefined1 *puVar1;
  undefined1 *puVar2;
  undefined1 local_res8 [32];
  
  puVar1 = local_res8 + -(longlong)in_RAX;
  if (local_res8 < in_RAX) {
    puVar1 = (undefined1 *)0x0;
  }
  if (puVar1 < StackLimit) {
    puVar2 = StackLimit;
    do {
      puVar2 = puVar2 + -0x1000;
      *puVar2 = 0;
    } while ((undefined1 *)((ulonglong)puVar1 & 0xfffffffffffff000) != puVar2);
  }
  return;
}



############ FUN_ 180533ff0 size=387 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

longlong *
FUN_180533ff0(longlong *param_1,double param_2,double param_3,double param_4,float param_5)

{
  double _X;
  double dVar1;
  double dVar2;
  float fVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  fVar3 = sqrtf(param_5);
  uVar8 = SUB84(DAT_1824c41e8,0);
  uVar9 = (int)((ulonglong)DAT_1824c41e8 >> 0x20);
  if (DAT_1824c41e8 <= param_3) {
    uVar8 = SUB84(param_3,0);
    uVar9 = (int)((ulonglong)param_3 >> 0x20);
  }
  if (fVar3 <= 0.0) {
    fVar3 = 0.0;
  }
  _X = (double)fVar3;
  param_2 = ((double)CONCAT44(uVar9,uVar8) * DAT_1824c4248) / param_2;
  dVar1 = _X - DAT_1824c4140;
  dVar2 = _X + DAT_1824c4140;
  dVar4 = cos(param_2);
  dVar5 = sin(param_2);
  dVar6 = sqrt(_X);
  dVar7 = dVar4 * dVar1;
  param_4 = (dVar5 * dVar6) / param_4;
  FUN_180534730(param_1);
  dVar5 = (dVar1 - dVar4 * dVar2) * DAT_1824c41e8;
  *(double *)*param_1 = (dVar7 + dVar2 + param_4) * _X;
  *(double *)(*param_1 + 8) = (dVar4 * dVar2 + dVar1) * _X * _DAT_1824c46b0;
  *(double *)(*param_1 + 0x10) = ((dVar7 + dVar2) - param_4) * _X;
  *(double *)param_1[1] = (dVar2 - dVar7) + param_4;
  *(double *)(param_1[1] + 8) = dVar5;
  *(double *)(param_1[1] + 0x10) = (dVar2 - dVar7) - param_4;
  return param_1;
}



############ FUN_ 1805343e0 size=212 ############

longlong * FUN_1805343e0(longlong *param_1,double param_2,double param_3,double param_4)

{
  double dVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  
  dVar2 = tan((param_3 * DAT_1824c4218) / param_2);
  dVar1 = DAT_1824c4140;
  dVar2 = DAT_1824c4140 / dVar2;
  dVar5 = (DAT_1824c4140 / param_4) * dVar2;
  dVar2 = dVar2 * dVar2;
  dVar4 = DAT_1824c4140 / (dVar5 + DAT_1824c4140 + dVar2);
  FUN_180534730(param_1);
  *(double *)*param_1 = dVar4;
  dVar3 = dVar4 * DAT_1824c41e8;
  *(double *)(*param_1 + 8) = dVar3;
  *(double *)(*param_1 + 0x10) = dVar4;
  *(undefined8 *)param_1[1] = 0x3ff0000000000000;
  *(double *)(param_1[1] + 8) = (dVar1 - dVar2) * dVar3;
  *(double *)(param_1[1] + 0x10) = ((dVar1 - dVar5) + dVar2) * dVar4;
  return param_1;
}



############ FUN_ 180534730 size=260 ############

undefined8 * FUN_180534730(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  
  puVar1 = param_1 + 3;
  *(undefined4 *)(param_1 + 2) = 3;
  *param_1 = puVar1;
  *(undefined1 *)(param_1 + 0xf) = 1;
  puVar2 = param_1 + 6;
  param_1[1] = puVar2;
  if (((ulonglong)puVar1 & 0xf) == 0) {
    *puVar1 = 0;
    param_1[4] = 0;
  }
  else {
    *puVar1 = 0;
    param_1[4] = 0;
  }
  param_1[5] = 0;
  if (((ulonglong)puVar2 & 0xf) == 0) {
    *puVar2 = 0;
    param_1[7] = 0;
  }
  else {
    *puVar2 = 0;
    param_1[7] = 0;
  }
  param_1[8] = 0;
  *puVar1 = 0x3ff0000000000000;
  puVar1 = param_1 + 9;
  *puVar2 = 0x3ff0000000000000;
  if (((ulonglong)puVar1 & 0xf) == 0) {
    *puVar1 = 0;
    param_1[10] = 0;
  }
  else {
    *puVar1 = 0;
    param_1[10] = 0;
  }
  puVar2 = param_1 + 0xc;
  param_1[0xb] = 0;
  if (((ulonglong)puVar2 & 0xf) == 0) {
    *puVar2 = 0;
    param_1[0xd] = 0;
    param_1[0xe] = 0;
    *puVar1 = 0x3ff0000000000000;
    *puVar2 = 0x3ff0000000000000;
    return param_1;
  }
  *puVar2 = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  *puVar1 = 0x3ff0000000000000;
  *puVar2 = 0x3ff0000000000000;
  return param_1;
}



############ FUN_ 180534300 size=216 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

longlong * FUN_180534300(longlong *param_1,double param_2,double param_3,double param_4)

{
  double dVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  
  dVar2 = tan((param_3 * DAT_1824c4218) / param_2);
  dVar1 = DAT_1824c4140;
  dVar6 = dVar2 * dVar2;
  dVar2 = (DAT_1824c4140 / param_4) * dVar2;
  dVar5 = DAT_1824c4140 / (dVar2 + DAT_1824c4140 + dVar6);
  FUN_180534730(param_1);
  dVar4 = dVar5 * _DAT_1824c46b0;
  *(double *)*param_1 = dVar5;
  dVar3 = dVar5 * DAT_1824c41e8;
  *(double *)(*param_1 + 8) = dVar4;
  *(double *)(*param_1 + 0x10) = dVar5;
  *(undefined8 *)param_1[1] = 0x3ff0000000000000;
  *(double *)(param_1[1] + 8) = dVar3 * (dVar6 - dVar1);
  *(double *)(param_1[1] + 0x10) = ((dVar1 - dVar2) + dVar6) * dVar5;
  return param_1;
}



############ FUN_ 18052fbd0 size=82 ############

void FUN_18052fbd0(longlong param_1)

{
  char *pcVar1;
  int iVar2;
  
  iVar2 = 0;
  if (0 < *(int *)(param_1 + 0x240084)) {
    pcVar1 = (char *)(param_1 + 0x24008f);
    do {
      if (*pcVar1 != '\0') {
        FUN_1805316e0(param_1,iVar2);
        *pcVar1 = '\0';
      }
      iVar2 = iVar2 + 1;
      pcVar1 = pcVar1 + 1;
    } while (iVar2 < *(int *)(param_1 + 0x240084));
  }
  return;
}



############ FUN_ 18052d040 size=135 ############

void FUN_18052d040(longlong param_1)

{
  int iVar1;
  char *pcVar2;
  
  pcVar2 = (char *)(param_1 + 0x24008f);
  iVar1 = 0;
  *pcVar2 = '\x01';
  *(undefined4 *)(param_1 + 0x240090) = 0x1010101;
  *(undefined2 *)(param_1 + 0x240094) = 0x101;
  *(undefined1 *)(param_1 + 0x240096) = 1;
  if (0 < *(int *)(param_1 + 0x240084)) {
    do {
      if (*pcVar2 != '\0') {
        FUN_1805316e0(param_1,iVar1);
        *pcVar2 = '\0';
      }
      iVar1 = iVar1 + 1;
      pcVar2 = pcVar2 + 1;
    } while (iVar1 < *(int *)(param_1 + 0x240084));
  }
  if (*(char *)(param_1 + 0x24008c) != '\0') {
    *(undefined1 *)(param_1 + 0x24008c) = 0;
    FUN_18052fbd0(param_1);
  }
  return;
}



############ FUN_ 181a2d8b7 size=34 ############

void Unwind_181a2d8b7(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(undefined8 *)(param_2 + 0x80),*(undefined8 *)(param_2 + 0x140));
  return;
}



############ FUN_ 181a2dd6c size=31 ############

void Unwind_181a2dd6c(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(undefined8 *)(param_2 + 0xb0),*(undefined8 *)(param_2 + 0x78));
  return;
}



############ FUN_ 180720170 size=26 ############

void FUN_180720170(void)

{
  _guard_check_icall();
  DAT_18260af38 = TlsAlloc();
  return;
}



############ FUN_ 180a315d0 size=107 ############

void FUN_180a315d0(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  undefined8 *puVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  undefined1 local_res18 [16];
  
  uVar4 = 0;
  lVar1 = FUN_180a35a60();
  if (lVar1 != 0) {
    do {
      puVar2 = (undefined8 *)FUN_180a30470(param_1,local_res18,uVar4);
      _guard_check_icall(*puVar2,param_2);
      uVar4 = uVar4 + 1;
      uVar3 = FUN_180a35a60(param_1);
    } while (uVar4 < uVar3);
  }
  return;
}



############ FUN_ 180b05c10 size=103 ############

undefined8 FUN_180b05c10(longlong param_1,uint param_2,int param_3)

{
  if (((param_2 + param_3 == 0x640) && (param_2 - 1 < 0x640)) && ((param_2 & 7) == 0)) {
    _guard_check_icall();
    FUN_180b9e180(param_1);
    *(short *)(param_1 + 0xce) = (short)param_2;
    *(undefined4 *)(param_1 + 200) = 0;
    *(undefined2 *)(param_1 + 0xcc) = 0;
    return 0;
  }
  return 1;
}



############ FUN_ 18097cbd0 size=28 ############

undefined8 FUN_18097cbd0(void)

{
  atexit(thunk_FUN_180721060);
  _guard_check_icall();
  return 0;
}



############ FUN_ 180a316c0 size=479 ############

void FUN_180a316c0(longlong *param_1,longlong param_2)

{
  int iVar1;
  longlong *plVar2;
  longlong *plVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  char cVar6;
  int iVar7;
  undefined4 uVar8;
  void *_Memory;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 *puVar11;
  longlong *plVar12;
  longlong lVar13;
  
  iVar1 = *(int *)(param_2 + 8);
  iVar7 = (**(code **)(*param_1 + 0x48))();
  if (iVar1 != iVar7) {
    uVar8 = (**(code **)(*param_1 + 0x48))(param_1);
    FUN_180a3e040(param_1,"deleteObject",uVar8,iVar1,
                  "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lscachedobjectvectorcertificatechain.cpp"
                  ,0x20b);
  }
  plVar2 = *(longlong **)(param_1[1] + 0x10);
  plVar3 = *(longlong **)(param_1[1] + 8);
  for (plVar12 = plVar3; (plVar12 != plVar2 && (*plVar12 != *(longlong *)(param_2 + 0x10)));
      plVar12 = plVar12 + 1) {
  }
  if (plVar12 == plVar2) {
    lVar13 = -1;
  }
  else {
    lVar13 = (longlong)plVar12 - (longlong)plVar3 >> 3;
    if (lVar13 != -1) goto LAB_180a3177e;
  }
  FUN_180a3dc30(param_1,"deleteObject",*(undefined4 *)(param_2 + 8),*(longlong *)(param_2 + 0x10),
                "d:\\jenkins\\full\\eden\\common\\pacesources\\generated\\licenseservices\\liblicenseservices\\lscachedobjectvectorcertificatechain.cpp"
                ,0x212);
LAB_180a3177e:
  uVar4 = *(undefined8 *)(param_1[7] + lVar13 * 8);
  _guard_check_icall(*(undefined8 *)(param_1[4] + lVar13 * 8));
  FUN_180807870(param_1[2],param_2);
  FUN_180a23490(*(undefined8 *)(param_1[2] + 0x1970),param_2);
  cVar6 = FUN_18080b1c0(param_2);
  if (cVar6 == '\0') {
    FUN_180b6b000(param_1 + 10,lVar13 * 0x178 + *(longlong *)(param_1[3] + 0x40));
    lVar13 = param_1[0xe];
    if (param_1[0xf] == lVar13) {
      FUN_180a2dff0(param_1 + 0xd,lVar13,uVar4);
    }
    else {
      FUN_180a2f530(lVar13,uVar4);
      param_1[0xe] = param_1[0xe] + 0x178;
    }
  }
  puVar5 = *(undefined8 **)(param_1[3] + 0x28);
  puVar11 = puVar5;
  if (*(char *)((longlong)puVar5[1] + 0x19) == '\0') {
    puVar9 = (undefined8 *)puVar5[1];
    do {
      if ((longlong)puVar9[4] < *(longlong *)(param_2 + 0x10)) {
        puVar10 = (undefined8 *)puVar9[2];
      }
      else {
        puVar10 = (undefined8 *)*puVar9;
        puVar11 = puVar9;
      }
      puVar9 = puVar10;
    } while (*(char *)((longlong)puVar10 + 0x19) == '\0');
  }
  if ((puVar11 == puVar5) || (*(longlong *)(param_2 + 0x10) < (longlong)puVar11[4])) {
    puVar11 = puVar5;
  }
  if (*(char *)((longlong)puVar11[2] + 0x19) == '\0') {
    plVar2 = *(longlong **)puVar11[2];
    cVar6 = *(char *)((longlong)plVar2 + 0x19);
    while (cVar6 == '\0') {
      plVar2 = (longlong *)*plVar2;
      cVar6 = *(char *)((longlong)plVar2 + 0x19);
    }
  }
  else {
    cVar6 = *(char *)((longlong)puVar11[1] + 0x19);
    puVar5 = (undefined8 *)puVar11[1];
    while ((puVar9 = puVar5, cVar6 == '\0' && (puVar11 == (undefined8 *)puVar9[2]))) {
      cVar6 = *(char *)((longlong)puVar9[1] + 0x19);
      puVar5 = (undefined8 *)puVar9[1];
      puVar11 = puVar9;
    }
  }
  _Memory = (void *)FUN_180715ef0(param_1[3] + 0x28);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a507b0 size=181 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a507b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  byte bVar2;
  void *_Memory;
  
  bVar2 = (byte)DAT_18260a1f0;
  if (DAT_18260a208 < 0x10) {
    DAT_18260a208 = 0xf;
    _DAT_18260a200 = 0;
    DAT_18260a1f0._0_1_ = 0;
    _guard_check_icall(&DAT_18260a1f0);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260a1f0._1_7_,(byte)DAT_18260a1f0);
  _guard_check_icall(&DAT_18260a1f0,&DAT_18260a1f0,param_3,param_4,0xfffffffffffffffe);
  _Memory = pvVar1;
  if (0xfff < DAT_18260a208 + 1) {
    if ((bVar2 & 0x1f) != 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    _Memory = *(void **)((longlong)pvVar1 - 8);
    if (pvVar1 <= _Memory) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    if ((ulonglong)((longlong)pvVar1 - (longlong)_Memory) < 8) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    if (0x27 < (ulonglong)((longlong)pvVar1 - (longlong)_Memory)) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a50c10 size=122 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a50c10(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  if (7 < DAT_18265f190) {
    uVar1 = CONCAT62(DAT_18265f178._2_6_,(undefined2)DAT_18265f178);
    _guard_check_icall(&DAT_18265f178,&DAT_18265f178,param_3,param_4,0xfffffffffffffffe);
    FUN_1805f54d0(&DAT_18265f178,uVar1,DAT_18265f190 + 1);
  }
  DAT_18265f190 = 7;
  _DAT_18265f188 = 0;
  DAT_18265f178._0_2_ = 0;
  _guard_check_icall(&DAT_18265f178);
  return;
}



############ FUN_ 181a50c90 size=122 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a50c90(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  if (7 < DAT_18265f170) {
    uVar1 = CONCAT62(DAT_18265f158._2_6_,(undefined2)DAT_18265f158);
    _guard_check_icall(&DAT_18265f158,&DAT_18265f158,param_3,param_4,0xfffffffffffffffe);
    FUN_1805f54d0(&DAT_18265f158,uVar1,DAT_18265f170 + 1);
  }
  DAT_18265f170 = 7;
  _DAT_18265f168 = 0;
  DAT_18265f158._0_2_ = 0;
  _guard_check_icall(&DAT_18265f158);
  return;
}



############ FUN_ 181a50d10 size=122 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a50d10(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  if (7 < DAT_18265f228) {
    uVar1 = CONCAT62(DAT_18265f210._2_6_,(undefined2)DAT_18265f210);
    _guard_check_icall(&DAT_18265f210,&DAT_18265f210,param_3,param_4,0xfffffffffffffffe);
    FUN_1805f54d0(&DAT_18265f210,uVar1,DAT_18265f228 + 1);
  }
  DAT_18265f228 = 7;
  _DAT_18265f220 = 0;
  DAT_18265f210._0_2_ = 0;
  _guard_check_icall(&DAT_18265f210);
  return;
}



############ FUN_ 181a50d90 size=122 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a50d90(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  if (7 < DAT_18265f208) {
    uVar1 = CONCAT62(DAT_18265f1f0._2_6_,(undefined2)DAT_18265f1f0);
    _guard_check_icall(&DAT_18265f1f0,&DAT_18265f1f0,param_3,param_4,0xfffffffffffffffe);
    FUN_1805f54d0(&DAT_18265f1f0,uVar1,DAT_18265f208 + 1);
  }
  DAT_18265f208 = 7;
  _DAT_18265f200 = 0;
  DAT_18265f1f0._0_2_ = 0;
  _guard_check_icall(&DAT_18265f1f0);
  return;
}



############ FUN_ 181a51290 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51290(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b128);
  if (DAT_18260b140 < 0x10) {
    _DAT_18260b138 = _DAT_181bd21a0;
    DAT_18260b140 = _UNK_181bd21a8;
    DAT_18260b128._0_1_ = 0;
    _guard_check_icall(&DAT_18260b128);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b128._1_7_,(byte)DAT_18260b128);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b140 + 1) &&
     (((((byte)DAT_18260b128 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51310 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51310(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260af48);
  if (DAT_18260af60 < 0x10) {
    _DAT_18260af58 = _DAT_181bd21a0;
    DAT_18260af60 = _UNK_181bd21a8;
    DAT_18260af48._0_1_ = 0;
    _guard_check_icall(&DAT_18260af48);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260af48._1_7_,(byte)DAT_18260af48);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260af60 + 1) &&
     (((((byte)DAT_18260af48 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51390 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51390(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260af88);
  if (DAT_18260afa0 < 0x10) {
    _DAT_18260af98 = _DAT_181bd21a0;
    DAT_18260afa0 = _UNK_181bd21a8;
    DAT_18260af88._0_1_ = 0;
    _guard_check_icall(&DAT_18260af88);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260af88._1_7_,(byte)DAT_18260af88);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260afa0 + 1) &&
     (((((byte)DAT_18260af88 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51410 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51410(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260af68);
  if (DAT_18260af80 < 0x10) {
    _DAT_18260af78 = _DAT_181bd21a0;
    DAT_18260af80 = _UNK_181bd21a8;
    DAT_18260af68._0_1_ = 0;
    _guard_check_icall(&DAT_18260af68);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260af68._1_7_,(byte)DAT_18260af68);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260af80 + 1) &&
     (((((byte)DAT_18260af68 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51490 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51490(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260afa8);
  if (DAT_18260afc0 < 0x10) {
    _DAT_18260afb8 = _DAT_181bd21a0;
    DAT_18260afc0 = _UNK_181bd21a8;
    DAT_18260afa8._0_1_ = 0;
    _guard_check_icall(&DAT_18260afa8);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260afa8._1_7_,(byte)DAT_18260afa8);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260afc0 + 1) &&
     (((((byte)DAT_18260afa8 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51510 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51510(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260afc8);
  if (DAT_18260afe0 < 0x10) {
    _DAT_18260afd8 = _DAT_181bd21a0;
    DAT_18260afe0 = _UNK_181bd21a8;
    DAT_18260afc8._0_1_ = 0;
    _guard_check_icall(&DAT_18260afc8);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260afc8._1_7_,(byte)DAT_18260afc8);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260afe0 + 1) &&
     (((((byte)DAT_18260afc8 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51590 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51590(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260afe8);
  if (DAT_18260b000 < 0x10) {
    _DAT_18260aff8 = _DAT_181bd21a0;
    DAT_18260b000 = _UNK_181bd21a8;
    DAT_18260afe8._0_1_ = 0;
    _guard_check_icall(&DAT_18260afe8);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260afe8._1_7_,(byte)DAT_18260afe8);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b000 + 1) &&
     (((((byte)DAT_18260afe8 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51610 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51610(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b068);
  if (DAT_18260b080 < 0x10) {
    _DAT_18260b078 = _DAT_181bd21a0;
    DAT_18260b080 = _UNK_181bd21a8;
    DAT_18260b068._0_1_ = 0;
    _guard_check_icall(&DAT_18260b068);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b068._1_7_,(byte)DAT_18260b068);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b080 + 1) &&
     (((((byte)DAT_18260b068 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51690 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51690(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b008);
  if (DAT_18260b020 < 0x10) {
    _DAT_18260b018 = _DAT_181bd21a0;
    DAT_18260b020 = _UNK_181bd21a8;
    DAT_18260b008._0_1_ = 0;
    _guard_check_icall(&DAT_18260b008);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b008._1_7_,(byte)DAT_18260b008);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b020 + 1) &&
     (((((byte)DAT_18260b008 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51710 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51710(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b028);
  if (DAT_18260b040 < 0x10) {
    _DAT_18260b038 = _DAT_181bd21a0;
    DAT_18260b040 = _UNK_181bd21a8;
    DAT_18260b028._0_1_ = 0;
    _guard_check_icall(&DAT_18260b028);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b028._1_7_,(byte)DAT_18260b028);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b040 + 1) &&
     (((((byte)DAT_18260b028 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51790 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51790(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b048);
  if (DAT_18260b060 < 0x10) {
    _DAT_18260b058 = _DAT_181bd21a0;
    DAT_18260b060 = _UNK_181bd21a8;
    DAT_18260b048._0_1_ = 0;
    _guard_check_icall(&DAT_18260b048);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b048._1_7_,(byte)DAT_18260b048);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b060 + 1) &&
     (((((byte)DAT_18260b048 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51810 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51810(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b0e8);
  if (DAT_18260b100 < 0x10) {
    _DAT_18260b0f8 = _DAT_181bd21a0;
    DAT_18260b100 = _UNK_181bd21a8;
    DAT_18260b0e8._0_1_ = 0;
    _guard_check_icall(&DAT_18260b0e8);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b0e8._1_7_,(byte)DAT_18260b0e8);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b100 + 1) &&
     (((((byte)DAT_18260b0e8 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51890 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51890(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b0c8);
  if (DAT_18260b0e0 < 0x10) {
    _DAT_18260b0d8 = _DAT_181bd21a0;
    DAT_18260b0e0 = _UNK_181bd21a8;
    DAT_18260b0c8._0_1_ = 0;
    _guard_check_icall(&DAT_18260b0c8);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b0c8._1_7_,(byte)DAT_18260b0c8);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b0e0 + 1) &&
     (((((byte)DAT_18260b0c8 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51910 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51910(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b108);
  if (DAT_18260b120 < 0x10) {
    _DAT_18260b118 = _DAT_181bd21a0;
    DAT_18260b120 = _UNK_181bd21a8;
    DAT_18260b108._0_1_ = 0;
    _guard_check_icall(&DAT_18260b108);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b108._1_7_,(byte)DAT_18260b108);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b120 + 1) &&
     (((((byte)DAT_18260b108 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51990 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51990(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b0a8);
  if (DAT_18260b0c0 < 0x10) {
    _DAT_18260b0b8 = _DAT_181bd21a0;
    DAT_18260b0c0 = _UNK_181bd21a8;
    DAT_18260b0a8._0_1_ = 0;
    _guard_check_icall(&DAT_18260b0a8);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b0a8._1_7_,(byte)DAT_18260b0a8);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b0c0 + 1) &&
     (((((byte)DAT_18260b0a8 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a51a10 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a51a10(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260b088);
  if (DAT_18260b0a0 < 0x10) {
    _DAT_18260b098 = _DAT_181bd21a0;
    DAT_18260b0a0 = _UNK_181bd21a8;
    DAT_18260b088._0_1_ = 0;
    _guard_check_icall(&DAT_18260b088);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260b088._1_7_,(byte)DAT_18260b088);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260b0a0 + 1) &&
     (((((byte)DAT_18260b088 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a52180 size=127 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a52180(void)

{
  void *pvVar1;
  void *_Memory;
  
  _guard_check_icall(&DAT_18260c718);
  if (DAT_18260c730 < 0x10) {
    DAT_18260c728 = _DAT_181bd21a0;
    DAT_18260c730 = _UNK_181bd21a8;
    DAT_18260c718._0_1_ = 0;
    _guard_check_icall(&DAT_18260c718);
    return;
  }
  pvVar1 = (void *)CONCAT71(DAT_18260c718._1_7_,(byte)DAT_18260c718);
  _Memory = pvVar1;
  if ((0xfff < DAT_18260c730 + 1) &&
     (((((byte)DAT_18260c718 & 0x1f) != 0 ||
       (_Memory = *(void **)((longlong)pvVar1 - 8), pvVar1 <= _Memory)) ||
      (0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a351d5 size=16 ############

void Unwind_181a351d5(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xe0) + 0x10);
  return;
}



############ FUN_ 181a351e5 size=16 ############

void Unwind_181a351e5(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xe0) + 0x18);
  return;
}



############ FUN_ 181a35ef9 size=12 ############

void Unwind_181a35ef9(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(undefined8 *)(param_2 + 0xe0));
  return;
}



############ FUN_ 181a35f1d size=12 ############

void Unwind_181a35f1d(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(param_2 + 0x58);
  return;
}



############ FUN_ 181a42992 size=19 ############

void Unwind_181a42992(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0x1f0) + 0x8a8);
  return;
}



############ FUN_ 181a429a5 size=19 ############

void Unwind_181a429a5(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0x1f0) + 0x8b0);
  return;
}



############ FUN_ 181a43bb4 size=19 ############

void Unwind_181a43bb4(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 400) + 0xe0);
  return;
}



############ FUN_ 181a445e7 size=19 ############

void Unwind_181a445e7(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xe8) + 0xf0);
  return;
}



############ FUN_ 181a44679 size=19 ############

void Unwind_181a44679(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0x140) + 0xf0);
  return;
}



############ FUN_ 181a46996 size=19 ############

void Unwind_181a46996(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0x100) + 0xe0);
  return;
}



############ FUN_ 181a46a68 size=19 ############

void Unwind_181a46a68(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xd0) + 0xe0);
  return;
}



############ FUN_ 181a46df8 size=19 ############

void Unwind_181a46df8(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xf8) + 0x858);
  return;
}



############ FUN_ 181a46f74 size=19 ############

void Unwind_181a46f74(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xe8) + 0x118);
  return;
}



############ FUN_ 181a47024 size=19 ############

void Unwind_181a47024(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xe8) + 0xa28);
  return;
}



############ FUN_ 181a478e2 size=19 ############

void Unwind_181a478e2(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xa8) + 0xb0);
  return;
}



############ FUN_ 181a47ade size=19 ############

void Unwind_181a47ade(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xe0) + 0x200);
  return;
}



############ FUN_ 181a47b80 size=19 ############

void Unwind_181a47b80(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0xf0) + 0x200);
  return;
}



############ FUN_ 181a48bd8 size=19 ############

void Unwind_181a48bd8(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0x138) + 0x118);
  return;
}



############ FUN_ 181a49b97 size=19 ############

void Unwind_181a49b97(undefined8 param_1,longlong param_2)

{
  _guard_check_icall(*(longlong *)(param_2 + 0x1f8) + 0x2a0);
  return;
}



############ FUN_ 181a26450 size=68 ############

void Catch_All_181a26450(undefined8 param_1,longlong param_2)

{
  undefined8 uVar1;
  
  _guard_check_icall(*(undefined8 *)(param_2 + 0x70),*(undefined8 *)(param_2 + 0x20),
                     *(undefined8 *)(param_2 + 0x78));
  uVar1 = FUN_180473130(*(undefined8 *)(param_2 + 0x70));
  FUN_1805bd950(uVar1,*(undefined8 *)(param_2 + 0x28),*(undefined8 *)(param_2 + 0x88));
                    /* WARNING: Subroutine does not return */
  _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
}



############ FUN_ 180523910 size=949 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180523910(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  int iVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  undefined1 auStack_118 [32];
  longlong *local_f8;
  undefined1 local_f0 [8];
  longlong *local_e8;
  undefined1 local_e0 [8];
  longlong **local_d8;
  longlong **local_d0;
  longlong *local_c8;
  undefined1 local_c0 [8];
  longlong *local_b8;
  undefined1 local_b0 [8];
  longlong *local_a8;
  undefined1 local_a0 [8];
  longlong *local_98;
  undefined1 local_90 [8];
  longlong **local_88;
  longlong **local_80;
  longlong *local_78;
  undefined1 local_70 [8];
  longlong *local_68;
  undefined1 local_60 [8];
  undefined8 local_58;
  longlong **local_50;
  longlong **local_48;
  longlong *local_40;
  undefined8 local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_118;
  if ((param_1 != param_2) && (puVar6 = param_1 + 2, puVar6 != param_2)) {
    local_50 = &local_b8;
    local_48 = &local_c8;
    do {
      local_40 = (longlong *)*puVar6;
      local_38 = puVar6[1];
      *puVar6 = &PTR_vftable_18262b558;
      local_d0 = &local_b8;
      local_b8 = (longlong *)*param_1;
      (**(code **)(*local_b8 + 0xb8))(local_b8,local_b0,param_1 + 1);
      local_c8 = local_40;
      (**(code **)(*local_40 + 0xb8))(local_40,local_c0,&local_38);
      local_d0 = &local_78;
      local_78 = local_b8;
      (**(code **)(*local_b8 + 0xb8))(local_b8,local_70,local_b0);
      local_68 = local_c8;
      (**(code **)(*local_c8 + 0xb8))(local_c8,local_60,local_c0);
      iVar3 = FUN_180500180(&local_68,&local_78);
      (**(code **)(*local_c8 + 0xb0))(local_c8,local_c0);
      (**(code **)(*local_b8 + 0xb0))(local_b8,local_b0);
      if (iVar3 < 0) {
        if (puVar6 != param_1) {
          puVar5 = puVar6 + -1;
          puVar7 = puVar6 + 2;
          do {
            puVar2 = puVar7 + -2;
            uVar4 = *puVar2;
            *puVar2 = puVar5[-1];
            puVar5[-1] = uVar4;
            uVar4 = puVar7[-1];
            puVar7[-1] = *puVar5;
            *puVar5 = uVar4;
            puVar1 = puVar5 + -1;
            puVar5 = puVar5 + -2;
            puVar7 = puVar2;
          } while (puVar1 != param_1);
        }
        plVar8 = (longlong *)*param_1;
        *param_1 = local_40;
        uVar4 = param_1[1];
        param_1[1] = local_38;
      }
      else {
        local_d8 = &local_e8;
        local_e8 = (longlong *)puVar6[-2];
        (**(code **)(*local_e8 + 0xb8))(local_e8,local_e0,puVar6 + -1);
        local_88 = &local_e8;
        local_f8 = local_40;
        (**(code **)(*local_40 + 0xb8))(local_40,local_f0,&local_38);
        local_80 = &local_f8;
        local_d0 = &local_a8;
        local_a8 = local_e8;
        (**(code **)(*local_e8 + 0xb8))(local_e8,local_a0,local_e0);
        local_98 = local_f8;
        (**(code **)(*local_f8 + 0xb8))(local_f8,local_90,local_f0);
        iVar3 = FUN_180500180(&local_98,&local_a8);
        (**(code **)(*local_f8 + 0xb0))(local_f8,local_f0);
        (**(code **)(*local_e8 + 0xb0))(local_e8,local_e0);
        puVar5 = puVar6;
        if (iVar3 < 0) {
          local_88 = &local_e8;
          local_80 = &local_f8;
          puVar7 = puVar6;
          puVar2 = puVar6 + -2;
          do {
            puVar5 = puVar2;
            uVar4 = *puVar7;
            *puVar7 = *puVar5;
            *puVar5 = uVar4;
            uVar4 = puVar7[1];
            puVar7[1] = puVar5[1];
            puVar5[1] = uVar4;
            local_d8 = &local_e8;
            local_e8 = (longlong *)puVar5[-2];
            (**(code **)(*local_e8 + 0xb8))(local_e8,local_e0,puVar5 + -1);
            local_f8 = local_40;
            (**(code **)(*local_40 + 0xb8))(local_40,local_f0,&local_38);
            local_d0 = &local_a8;
            local_a8 = local_e8;
            (**(code **)(*local_e8 + 0xb8))(local_e8,local_a0,local_e0);
            local_98 = local_f8;
            (**(code **)(*local_f8 + 0xb8))(local_f8,local_90,local_f0);
            iVar3 = FUN_180500180(&local_98,&local_a8);
            (**(code **)(*local_f8 + 0xb0))(local_f8,local_f0);
            (**(code **)(*local_e8 + 0xb0))(local_e8,local_e0);
            puVar7 = puVar5;
            puVar2 = puVar5 + -2;
          } while (iVar3 < 0);
        }
        plVar8 = (longlong *)*puVar5;
        *puVar5 = local_40;
        uVar4 = puVar5[1];
        puVar5[1] = local_38;
      }
      local_40 = plVar8;
      local_38 = uVar4;
      (**(code **)(*plVar8 + 0xb0))(plVar8,&local_38);
      puVar6 = puVar6 + 2;
    } while (puVar6 != param_2);
  }
}



############ FUN_ 181243cd0 size=405 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181243cd0(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  uint uVar2;
  longlong *plVar3;
  char cVar4;
  int iVar5;
  uint *_Memory;
  longlong *plVar6;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  longlong local_40;
  longlong local_38;
  undefined1 *local_30;
  undefined **local_28;
  longlong local_20;
  ulonglong local_18;
  
  local_48 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  plVar6 = (longlong *)*param_1;
  plVar1 = plVar6 + (longlong)*(int *)((longlong)param_1 + 0xc) * 3;
  if (plVar6 != plVar1) {
    local_40 = *param_2;
    do {
      local_38 = *plVar6;
      if (local_38 == local_40) {
        plVar1 = plVar6 + 1;
        if (plVar1 != (longlong *)0x0) {
          plVar3 = (longlong *)*plVar1;
          if ((plVar3 == (longlong *)*param_3) &&
             (cVar4 = (**(code **)(*plVar3 + 0xc0))(plVar3,plVar6 + 2,param_3 + 1), cVar4 != '\0'))
          {
          }
          FUN_181246290(plVar1,param_3);
        }
        break;
      }
      plVar6 = plVar6 + 3;
    } while (plVar6 != plVar1);
  }
  local_30 = (undefined1 *)*param_2;
  if ((*(uint *)((longlong)local_30 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)((longlong)local_30 + -0x10) = *(int *)((longlong)local_30 + -0x10) + 1;
    UNLOCK();
  }
  local_28 = (undefined **)*param_3;
  (**(code **)((longlong)*local_28 + 0xb8))(local_28,&local_20,param_3 + 1);
  iVar5 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar5) {
    FUN_18049b620(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar5 / 2 & 0xfffffff8);
  }
  iVar5 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar5 + 1;
  plVar1 = (longlong *)(*param_1 + (longlong)iVar5 * 0x18);
  *plVar1 = (longlong)local_30;
  local_30 = &DAT_1821dbf98;
  plVar1[1] = (longlong)local_28;
  plVar1[2] = local_20;
  local_28 = &PTR_vftable_18262b558;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_20);
  _Memory = (uint *)(local_30 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181243e80 size=400 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181243e80(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  uint uVar2;
  longlong *plVar3;
  longlong lVar4;
  char cVar5;
  int iVar6;
  uint *_Memory;
  longlong *plVar7;
  undefined1 auStack_58 [32];
  longlong local_38;
  longlong local_30;
  undefined1 *local_28;
  undefined **local_20;
  longlong local_18;
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  plVar7 = (longlong *)*param_1;
  plVar1 = plVar7 + (longlong)*(int *)((longlong)param_1 + 0xc) * 3;
  if (plVar7 != plVar1) {
    local_38 = *param_2;
    do {
      local_30 = *plVar7;
      if (local_30 == local_38) {
        plVar1 = plVar7 + 1;
        if (plVar1 != (longlong *)0x0) {
          plVar3 = (longlong *)*plVar1;
          if ((plVar3 == (longlong *)*param_3) &&
             (cVar5 = (**(code **)(*plVar3 + 0xc0))(plVar3,plVar7 + 2,param_3 + 1), cVar5 != '\0'))
          {
          }
          lVar4 = *plVar1;
          *plVar1 = *param_3;
          *param_3 = lVar4;
          lVar4 = plVar7[2];
          plVar7[2] = param_3[1];
          param_3[1] = lVar4;
        }
        break;
      }
      plVar7 = plVar7 + 3;
    } while (plVar7 != plVar1);
  }
  local_28 = (undefined1 *)*param_2;
  if ((*(uint *)((longlong)local_28 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)((longlong)local_28 + -0x10) = *(int *)((longlong)local_28 + -0x10) + 1;
    UNLOCK();
  }
  local_20 = (undefined **)*param_3;
  *param_3 = (longlong)&PTR_vftable_18262b558;
  iVar6 = *(int *)((longlong)param_1 + 0xc) + 1;
  local_18 = param_3[1];
  if ((int)param_1[1] < iVar6) {
    FUN_18049b620(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar6 / 2 & 0xfffffff8);
  }
  iVar6 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
  plVar1 = (longlong *)(*param_1 + (longlong)iVar6 * 0x18);
  *plVar1 = (longlong)local_28;
  local_28 = &DAT_1821dbf98;
  plVar1[1] = (longlong)local_20;
  plVar1[2] = local_18;
  local_20 = &PTR_vftable_18262b558;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_18);
  _Memory = (uint *)(local_28 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 180533240 size=186 ############

void FUN_180533240(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        _eh_vector_destructor_iterator_(_Memory,0x80,0x10,_guard_check_icall);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  return;
}



############ FUN_ 181352cf0 size=325 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181352cf0(longlong *param_1,longlong *param_2,longlong *param_3,longlong *param_4)

{
  longlong *plVar1;
  longlong lVar2;
  bool bVar3;
  bool bVar4;
  longlong **pplVar5;
  longlong *plVar6;
  undefined1 auStack_68 [32];
  undefined4 local_48;
  undefined8 local_40;
  longlong *local_38;
  undefined1 local_30 [8];
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48 = 0;
  lVar2 = *param_1;
  if (lVar2 == 0) {
    local_28 = (longlong *)*param_4;
    local_38 = param_2;
    (**(code **)(*local_28 + 0xb8))(local_28,local_20,param_4 + 1);
    pplVar5 = &local_28;
    bVar4 = true;
    bVar3 = false;
  }
  else {
    plVar6 = *(longlong **)(lVar2 + 0x18);
    plVar1 = plVar6 + (longlong)*(int *)(lVar2 + 0x24) * 3;
    if (plVar6 != plVar1) {
      do {
        if (*plVar6 == *param_3) {
          plVar6 = plVar6 + 1;
          if (plVar6 != (longlong *)0x0) {
            local_38 = (longlong *)*plVar6;
            goto LAB_181352d9e;
          }
          break;
        }
        plVar6 = plVar6 + 3;
      } while (plVar6 != plVar1);
    }
    local_38 = (longlong *)*param_4;
    plVar6 = param_4;
LAB_181352d9e:
    (**(code **)(*local_38 + 0xb8))(local_38,local_30,plVar6 + 1);
    pplVar5 = &local_38;
    bVar4 = false;
    bVar3 = true;
  }
  *param_2 = (longlong)*pplVar5;
  param_2[1] = (longlong)pplVar5[1];
  *pplVar5 = (longlong *)&PTR_vftable_18262b558;
  if (bVar3) {
    (**(code **)(*local_38 + 0xb0))(local_38,local_30);
  }
  if (bVar4) {
    (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  }
}



############ FUN_ 181202350 size=207 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181202350(LPCRITICAL_SECTION param_1,longlong param_2,undefined8 param_3)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  LPCRITICAL_SECTION local_28;
  undefined **local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_38[1] = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_38[0] = param_2;
  local_28 = param_1;
  EnterCriticalSection(param_1);
  uVar2 = FUN_18122bf10();
  FUN_18122c480(uVar2,local_38,param_3);
  local_20 = &PTR_vftable_18262b558;
  FUN_181352cf0(&param_1[2].LockCount,param_2,local_38,&local_20);
  (**(code **)(*local_20 + 0xb0))(local_20,local_18);
  _Memory = (uint *)(local_38[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  LeaveCriticalSection(param_1);
}



############ FUN_ 1815703f0 size=607 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018157046e) */

void FUN_1815703f0(longlong param_1)

{
  int iVar1;
  undefined8 uVar2;
  longlong *plVar3;
  int iVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  undefined **local_40;
  int local_38 [2];
  undefined **local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_68;
  if (*(int *)(param_1 + 0x1bc) == 0) {
    local_30 = &PTR_vftable_18262b558;
    (**(code **)(*(longlong *)(param_1 + 0x2e8) + 0x18))((longlong *)(param_1 + 0x2e8),&local_30);
  }
  else {
    if (*(int *)(param_1 + 0x1bc) == 1) {
      uVar2 = **(undefined8 **)(param_1 + 0x1b0);
      local_38[0] = FUN_1815761a0(param_1,uVar2);
      if (local_38[0] < 0) {
      }
      FUN_181570670(param_1,uVar2);
      local_30 = &PTR_vftable_18262b558;
      local_40 = &PTR_vftable_18262b570;
      plVar3 = (longlong *)FUN_181227270(&local_30);
      iVar4 = *(int *)((longlong)plVar3 + 0xc) + 1;
      if ((int)plVar3[1] < iVar4) {
        FUN_180489a50(plVar3,*(int *)((longlong)plVar3 + 0xc) + 9 + iVar4 / 2 & 0xfffffff8);
      }
      iVar4 = *(int *)((longlong)plVar3 + 0xc);
      *(int *)((longlong)plVar3 + 0xc) = iVar4 + 1;
      puVar5 = (undefined8 *)((longlong)iVar4 * 0x10 + *plVar3);
      *puVar5 = local_40;
      (**(code **)(*local_40 + 0xb8))(local_40,puVar5 + 1,local_38);
      (**(code **)(*local_40 + 0xb0))(local_40,local_38);
      local_40 = local_30;
      (**(code **)(*local_30 + 0xb8))(local_30,local_38,local_28);
      (**(code **)(*(longlong *)(param_1 + 0x2e8) + 0x18))((longlong *)(param_1 + 0x2e8),&local_40);
    }
    else {
      local_30 = &PTR_vftable_18262b558;
      puVar7 = *(undefined8 **)(param_1 + 0x1b0);
      puVar5 = puVar7 + *(int *)(param_1 + 0x1bc);
      for (; puVar7 != puVar5; puVar7 = puVar7 + 1) {
        local_38[0] = FUN_1815761a0(param_1,*puVar7);
        local_40 = &PTR_vftable_18262b570;
        plVar3 = (longlong *)FUN_181227270(&local_30);
        iVar1 = *(int *)((longlong)plVar3 + 0xc);
        iVar4 = iVar1 + 1;
        if ((int)plVar3[1] < iVar4) {
          if (iVar4 < 0) {
            iVar4 = iVar1 + 2;
          }
          FUN_180489a50(plVar3,(iVar4 >> 1) + iVar1 + 9 & 0xfffffff8);
        }
        iVar4 = *(int *)((longlong)plVar3 + 0xc);
        *(int *)((longlong)plVar3 + 0xc) = iVar4 + 1;
        puVar6 = (undefined8 *)((longlong)iVar4 * 0x10 + *plVar3);
        *puVar6 = local_40;
        (**(code **)(*local_40 + 0xb8))(local_40,puVar6 + 1,local_38);
        (**(code **)(*local_40 + 0xb0))(local_40,local_38);
      }
      local_40 = local_30;
      (**(code **)(*local_30 + 0xb8))(local_30,local_38,local_28);
      (**(code **)(*(longlong *)(param_1 + 0x2e8) + 0x18))((longlong *)(param_1 + 0x2e8),&local_40);
    }
    (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  }
}



############ FUN_ 181320530 size=983 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181320530(longlong *param_1)

{
  LPCRITICAL_SECTION p_Var1;
  longlong *plVar2;
  longlong *plVar3;
  uint uVar4;
  undefined1 uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  uint *puVar9;
  longlong *plVar10;
  longlong *plVar11;
  longlong lVar12;
  uint uVar13;
  undefined1 auStack_f8 [32];
  undefined4 local_d8;
  undefined4 local_c8;
  longlong local_c0;
  longlong *local_b8;
  undefined8 local_b0;
  longlong local_a8;
  char *local_a0;
  longlong local_98;
  undefined8 *local_90;
  char *local_88;
  LPCRITICAL_SECTION local_80;
  undefined8 local_78;
  LPCRITICAL_SECTION local_70;
  longlong local_68;
  undefined **local_60;
  undefined1 local_58 [8];
  undefined **local_50;
  longlong local_48;
  undefined **local_40;
  undefined8 local_38;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_f8;
  if ((int)param_1[0x17] == 1) {
  }
  *(undefined4 *)(param_1 + 0x17) = 1;
  uVar13 = *(int *)((longlong)param_1 + 0x4c) - 1;
  lVar12 = (longlong)(int)uVar13;
  if (-1 < (int)uVar13) {
    do {
      lVar8 = 0;
      if (uVar13 < *(uint *)((longlong)param_1 + 0x4c)) {
        lVar8 = *(longlong *)(param_1[8] + lVar12 * 8);
      }
      local_d8 = 0;
      puVar6 = (undefined8 *)
               __RTDynamicCast(lVar8,0,&juce::Component::RTTI_Type_Descriptor,
                               &juce::MultiDocumentPanelWindow::RTTI_Type_Descriptor);
      local_90 = puVar6;
      if (puVar6 != (undefined8 *)0x0) {
        puVar7 = (undefined8 *)FUN_1812cdd10(puVar6,&local_98);
        local_40 = &PTR_vftable_18262b560;
        local_38 = *puVar7;
        *puVar7 = &DAT_1821dbf98;
        lVar8 = FUN_18122bf10();
        p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
        local_70 = p_Var1;
        EnterCriticalSection(p_Var1);
        FUN_18122c130(lVar8);
        local_a0 = "mdiDocumentPos_";
        FUN_181211b90(&local_c0,lVar8,&local_a0);
        LeaveCriticalSection(p_Var1);
        lVar8 = 0;
        if (puVar6[0x1a] != 0) {
          lVar8 = *(longlong *)(puVar6[0x1a] + 0x10);
        }
        FUN_181243e80(lVar8 + 0x90,&local_c0,&local_40);
        puVar9 = (uint *)(local_c0 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        (**(code **)(*local_40 + 0xb0))();
        puVar6 = local_90;
        puVar9 = (uint *)(local_98 + -0x10);
        if ((*puVar9 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar9;
          *puVar9 = *puVar9 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar9);
          }
        }
        FUN_1812cf790(local_90);
      }
      if (puVar6 != (undefined8 *)0x0) {
        (**(code **)*puVar6)(puVar6);
      }
      uVar13 = uVar13 - 1;
      lVar12 = lVar12 + -1;
    } while (-1 < lVar12);
  }
  (**(code **)(*param_1 + 0x108))(param_1);
  local_b8 = (longlong *)0x0;
  local_b0 = 0;
  FUN_18051fcc0(&local_b8,param_1[0x18],*(undefined4 *)((longlong)param_1 + 0xcc));
  *(undefined4 *)((longlong)param_1 + 0xcc) = 0;
  if ((int)param_1[0x19] != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x18]);
  }
  *(undefined4 *)(param_1 + 0x19) = 0;
  plVar2 = local_b8 + local_b0._4_4_;
  if (local_b8 != plVar2) {
    local_88 = "mdiDocumentBkg_";
    plVar10 = local_b8;
    do {
      lVar12 = *plVar10;
      local_50 = &PTR_vftable_18262b570;
      local_48._0_4_ = DAT_18262b5a8;
      lVar8 = FUN_18122bf10();
      p_Var1 = (LPCRITICAL_SECTION)(lVar8 + 0x10);
      local_80 = p_Var1;
      EnterCriticalSection(p_Var1);
      FUN_18122c130(lVar8);
      FUN_181211b90(&local_a8,lVar8,&local_88);
      LeaveCriticalSection(p_Var1);
      lVar8 = local_a8;
      plVar11 = *(longlong **)(lVar12 + 0x90);
      plVar3 = plVar11 + (longlong)*(int *)(lVar12 + 0x9c) * 3;
      for (; plVar11 != plVar3; plVar11 = plVar11 + 3) {
        local_68 = *plVar11;
        if (local_68 == local_a8) {
          if (plVar11 + 1 != (longlong *)0x0) {
            local_60 = (undefined **)plVar11[1];
            plVar11 = plVar11 + 2;
            goto LAB_181320836;
          }
          break;
        }
      }
      plVar11 = &local_48;
      local_60 = local_50;
LAB_181320836:
      (**(code **)(*local_60 + 0xb8))(local_60,local_58,plVar11);
      local_c8 = (**(code **)(*local_60 + 8))(local_60,local_58);
      uVar5 = FUN_181321a10(lVar12);
      FUN_1813210c0(param_1,lVar12,local_c8,uVar5);
      (**(code **)(*local_60 + 0xb0))(local_60,local_58);
      puVar9 = (uint *)(lVar8 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar13 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar13 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      (**(code **)(*local_50 + 0xb0))(local_50,&local_48);
      plVar10 = plVar10 + 1;
    } while (plVar10 != plVar2);
  }
                    /* WARNING: Subroutine does not return */
  free(local_b8);
}



############ FUN_ 181270700 size=2200 ############

void FUN_181270700(undefined8 param_1,longlong *param_2,longlong *param_3)

{
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar2;
  undefined1 uVar3;
  undefined1 uVar4;
  undefined1 *puVar5;
  uint uVar6;
  char cVar7;
  int iVar8;
  undefined8 *puVar9;
  longlong lVar10;
  undefined1 *puVar11;
  void *pvVar12;
  uint *_Memory;
  int iVar13;
  int iVar14;
  undefined1 auStack_478 [32];
  uint local_458;
  undefined1 local_450;
  char local_448 [4];
  undefined4 local_444;
  int local_440 [2];
  longlong local_438;
  undefined8 *local_430;
  char *local_428 [2];
  undefined **local_418 [2];
  void **local_408;
  void *local_400 [2];
  void *local_3f0;
  void *local_3e0;
  undefined **local_3c8;
  undefined8 *local_3c0;
  longlong *local_3b8;
  longlong local_3b0;
  int local_3a4;
  int local_3a0;
  undefined4 local_39c;
  undefined4 local_398;
  undefined8 *local_390;
  undefined8 local_388;
  longlong *local_380;
  LPCRITICAL_SECTION local_378;
  code **local_368;
  undefined8 *local_360;
  undefined8 *local_358;
  char *local_350;
  char local_348;
  int local_344;
  longlong *local_340;
  undefined4 local_328;
  char local_310;
  int local_2f4;
  uint local_2f0;
  uint local_2d0;
  undefined4 local_2cc;
  undefined4 local_2c4;
  undefined8 local_1f8;
  int local_1e4;
  undefined8 *local_168;
  longlong local_160;
  undefined8 *local_148;
  undefined **local_108;
  undefined1 local_100;
  code *local_f8;
  code *local_f0;
  code *local_e8;
  undefined *local_e0;
  code *local_d8;
  ulonglong local_48;
  
  local_388 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_478;
  local_444 = 0;
  local_3b8 = param_3;
  local_380 = param_2;
  FUN_18124a4b0(local_418,0x100);
  (*(code *)local_418[0][0x15])(local_418,param_3,0xffffffffffffffff);
  *param_2 = 0;
  local_444 = 1;
  if (local_3e0 < (void *)0x11) goto LAB_181270f62;
  memset(&local_f8,0,0xa8);
  local_f8 = FUN_181271280;
  local_f0 = FUN_181271260;
  local_e8 = FUN_181271270;
  local_e0 = &DAT_181271250;
  local_d8 = FUN_181271270;
  local_368 = &local_f8;
  FUN_181283700(&local_368);
  local_340 = (longlong *)(*(code *)*local_360)(&local_368,0,0x38);
  local_448[0] = '\0';
  local_350 = local_448;
  local_340[2] = (longlong)FUN_1812711e0;
  local_340[3] = (longlong)&LAB_1812711a0;
  local_340[4] = (longlong)&LAB_1812711b0;
  local_340[5] = (longlong)FUN_18127c920;
  local_340[6] = (longlong)FUN_1812711e0;
  pvVar12 = local_3f0;
  if (local_408 != (void **)0x0) {
    if (local_3e0 < local_408[1]) {
      *(undefined1 *)((longlong)local_3e0 + (longlong)*local_408) = 0;
    }
    pvVar12 = *local_408;
  }
  *local_340 = (longlong)pvVar12;
  local_340[1] = (longlong)local_3e0;
  if (1 < local_344 - 200U) {
    *(undefined4 *)(local_368 + 5) = 0x14;
    *(int *)((longlong)local_368 + 0x2c) = local_344;
    (**local_368)(&local_368);
  }
  iVar8 = 0;
  switch(local_344) {
  case 200:
    (*(code *)local_148[1])(&local_368);
    (*(code *)local_340[2])(&local_368);
    local_344 = 0xc9;
  case 0xc9:
    iVar8 = (*(code *)*local_148)(&local_368);
    if (iVar8 == 1) {
      FUN_181283500(&local_368);
      local_344 = 0xca;
    }
    break;
  case 0xca:
    iVar8 = 1;
    break;
  case 0xcb:
  case 0xcc:
  case 0xcd:
  case 0xce:
  case 0xcf:
  case 0xd0:
  case 0xd2:
    iVar8 = (*(code *)*local_148)(&local_368);
    break;
  default:
    *(undefined4 *)(local_368 + 5) = 0x14;
    *(int *)((longlong)local_368 + 0x2c) = local_344;
    (**local_368)(&local_368);
  }
  if ((iVar8 != 1) && (iVar8 == 2)) {
    *(undefined4 *)(local_368 + 5) = 0x33;
    (**local_368)(&local_368);
    if (local_360 != (undefined8 *)0x0) {
      (*(code *)local_360[9])(&local_368,1);
      if (local_348 == '\0') {
        local_344 = 100;
      }
      else {
        local_344 = 200;
        local_1f8 = 0;
      }
    }
  }
  if ((local_448[0] == '\0') && (FUN_18127c480(&local_368), uVar6 = local_2f0, local_448[0] == '\0')
     ) {
    local_328 = 2;
    puVar9 = (undefined8 *)(*(code *)local_360[2])(&local_368,1,local_2f4 * 3,1);
    if (local_344 == 0xca) {
      local_168 = (undefined8 *)(*(code *)*local_360)(&local_368,1,0x30);
      *local_168 = FUN_18127ba50;
      local_168[1] = FUN_18127ba20;
      *(undefined1 *)(local_168 + 2) = 0;
      FUN_18127bbc0(&local_368);
      if (local_310 == '\0') {
        local_344 = 0xcb;
LAB_181270a6d:
        if (*(char *)(local_148 + 4) != '\0') {
          do {
            if (local_358 != (undefined8 *)0x0) {
              (*(code *)*local_358)(&local_368);
            }
            do {
              iVar8 = (*(code *)*local_148)(&local_368);
              if (iVar8 == 0) goto LAB_181270f51;
              if (iVar8 == 2) goto LAB_181270ad3;
            } while (local_358 == (undefined8 *)0x0);
            if ((iVar8 - 1U & 0xfffffffd) == 0) {
              *(int *)(local_358 + 1) = *(int *)(local_358 + 1) + 1;
              if (*(int *)((longlong)local_358 + 0xc) <= *(int *)(local_358 + 1)) {
                *(int *)((longlong)local_358 + 0xc) =
                     *(int *)((longlong)local_358 + 0xc) + local_1e4;
              }
            }
          } while( true );
        }
LAB_181270ad3:
        local_2c4 = local_2cc;
        goto LAB_181270b08;
      }
      local_344 = 0xcf;
    }
    else {
      if (local_344 == 0xcb) goto LAB_181270a6d;
      if (local_344 != 0xcc) {
        *(undefined4 *)(local_368 + 5) = 0x14;
        *(int *)((longlong)local_368 + 0x2c) = local_344;
        (**local_368)(&local_368);
      }
LAB_181270b08:
      cVar7 = FUN_1812839f0(&local_368);
      if (cVar7 == '\0') goto LAB_181270f51;
    }
    if (local_448[0] == '\0') {
      local_3c8 = juce::NativeImageType::vftable;
      local_450 = 0;
      local_458 = uVar6;
      (*(code *)PTR_FUN_1824988f0)(&local_3c8,&local_430,1,local_2f4);
      local_3c0 = (undefined8 *)*param_2;
      *param_2 = (longlong)local_430;
      local_430 = local_3c0;
      if (local_3c0 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(local_3c0 + 1);
        iVar8 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar8 == 1) {
          (**(code **)*local_3c0)(local_3c0,1);
        }
      }
      local_108 = &PTR_vftable_18262b550;
      local_100 = 0;
      lVar10 = FUN_18122bf10();
      lpCriticalSection = (LPCRITICAL_SECTION)(lVar10 + 0x10);
      local_378 = lpCriticalSection;
      EnterCriticalSection(lpCriticalSection);
      FUN_18122c130(lVar10);
      local_428[0] = "originalImageHadAlpha";
      FUN_181211b90(&local_438,lVar10,local_428);
      local_444 = 3;
      LeaveCriticalSection(lpCriticalSection);
      if (*param_2 == 0) {
        lVar10 = 0;
      }
      else {
        lVar10 = *param_2 + 0x20;
      }
      FUN_181243e80(lVar10,&local_438,&local_108);
      _Memory = (uint *)(local_438 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      (**(code **)(*local_108 + 0xb0))();
      param_2 = (longlong *)*param_2;
      if (param_2 != (longlong *)0x0) {
        iVar8 = (int)param_2[2];
      }
      else {
        iVar8 = 0;
      }
      if (param_2 != (longlong *)0x0) {
        local_39c = *(undefined4 *)((longlong)param_2 + 0x14);
        local_398 = (undefined4)param_2[3];
      }
      else {
        local_39c = 0;
        local_398 = 0;
      }
      local_390 = (undefined8 *)0x0;
      local_458 = 1;
      (**(code **)(*param_2 + 0x20))(param_2,&local_3b0,0,0);
      iVar13 = 0;
      if (0 < (int)uVar6) {
        do {
          if (local_344 != 0xcd) {
            *(undefined4 *)(local_368 + 5) = 0x14;
            *(int *)((longlong)local_368 + 0x2c) = local_344;
            (**local_368)(&local_368);
          }
          if (local_2d0 < local_2f0) {
            if (local_358 != (undefined8 *)0x0) {
              *(uint *)(local_358 + 1) = local_2d0;
              *(uint *)((longlong)local_358 + 0xc) = local_2f0;
              (*(code *)*local_358)(&local_368);
            }
            local_440[0] = 0;
            (**(code **)(local_160 + 8))(&local_368,puVar9,local_440,1);
            local_2d0 = local_2d0 + local_440[0];
          }
          else {
            *(undefined4 *)(local_368 + 5) = 0x7b;
            (*local_368[1])(&local_368,0xffffffff);
          }
          if (local_448[0] != '\0') goto LAB_181270ef9;
          puVar5 = (undefined1 *)*puVar9;
          puVar11 = (undefined1 *)((longlong)local_3a4 * (longlong)iVar13 + local_3b0);
          iVar14 = local_2f4 + -1;
          if (iVar8 == 1) {
            for (; -1 < iVar14; iVar14 = iVar14 + -1) {
              uVar3 = puVar5[2];
              uVar4 = puVar5[1];
              puVar11[2] = *puVar5;
              puVar11[1] = uVar4;
              *puVar11 = uVar3;
              puVar11 = puVar11 + local_3a0;
              puVar5 = puVar5 + 3;
            }
          }
          else {
            for (; -1 < iVar14; iVar14 = iVar14 + -1) {
              uVar3 = puVar5[1];
              uVar4 = *puVar5;
              *puVar11 = puVar5[2];
              puVar11[1] = uVar3;
              puVar11[2] = uVar4;
              puVar11[3] = 0xff;
              puVar11 = puVar11 + local_3a0;
              puVar5 = puVar5 + 3;
            }
          }
          iVar13 = iVar13 + 1;
        } while (iVar13 < (int)uVar6);
      }
      if (local_448[0] == '\0') {
        if ((local_344 - 0xcdU < 2) && (local_310 == '\0')) {
          if (local_2d0 < local_2f0) {
            *(undefined4 *)(local_368 + 5) = 0x43;
            (**local_368)(&local_368);
          }
          (*(code *)local_168[1])(&local_368);
          local_344 = 0xd2;
        }
        else if (local_344 == 0xcf) {
          local_344 = 0xd2;
        }
        else if (local_344 != 0xd2) {
          *(undefined4 *)(local_368 + 5) = 0x14;
          *(int *)((longlong)local_368 + 0x2c) = local_344;
          (**local_368)(&local_368);
        }
        cVar7 = *(char *)((longlong)local_148 + 0x21);
        while (cVar7 == '\0') {
          iVar8 = (*(code *)*local_148)(&local_368);
          if (iVar8 == 0) goto LAB_181270ef9;
          cVar7 = *(char *)((longlong)local_148 + 0x21);
        }
        (*(code *)local_340[6])(&local_368);
        if (local_360 != (undefined8 *)0x0) {
          (*(code *)local_360[9])(&local_368,1);
          if (local_348 == '\0') {
            local_344 = 100;
          }
          else {
            local_344 = 200;
            local_1f8 = 0;
          }
        }
      }
LAB_181270ef9:
      if (local_408 != (void **)0x0) {
        if (local_3e0 < local_408[1]) {
          *(undefined1 *)((longlong)local_3e0 + (longlong)*local_408) = 0;
        }
        local_3f0 = *local_408;
      }
      (**(code **)(*local_3b8 + 0xb0))(local_3b8,*local_340 - (longlong)local_3f0);
      if (local_390 != (undefined8 *)0x0) {
        (**(code **)*local_390)(local_390,1);
      }
    }
  }
LAB_181270f51:
  if (local_360 != (undefined8 *)0x0) {
    (*(code *)local_360[10])(&local_368);
  }
LAB_181270f62:
  local_418[0] = juce::MemoryOutputStream::vftable;
  if ((local_408 != local_400) && (local_408 != (void **)0x0)) {
    FUN_18124a200(local_408,local_3e0,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_400[0]);
}



############ FUN_ 1804a0710 size=1111 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804a0710(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  LPCRITICAL_SECTION lpCriticalSection;
  char cVar2;
  int iVar3;
  uint uVar4;
  longlong lVar5;
  uint *_Memory;
  uint uVar6;
  longlong lVar7;
  undefined1 auStack_1f8 [32];
  uint local_1d8;
  undefined1 local_1d0;
  byte local_1c8;
  byte local_1c7;
  char local_1c6 [6];
  longlong local_1c0;
  undefined8 *local_1b8;
  char *local_1b0;
  undefined **local_1a8;
  undefined8 *local_1a0;
  undefined8 local_198;
  longlong *local_190;
  LPCRITICAL_SECTION local_188;
  undefined **local_180;
  undefined1 local_178 [8];
  short local_170;
  short local_16e;
  byte local_168 [4];
  undefined2 local_164;
  ushort local_162;
  byte local_160;
  byte local_158 [3];
  byte local_155;
  ulonglong local_48;
  
  local_198 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  lVar7 = 0;
  *param_1 = 0;
  param_1[1] = (longlong)param_2;
  *(undefined2 *)((longlong)param_1 + 0x514) = 0;
  *(undefined1 *)((longlong)param_1 + 0x516) = 0;
  param_1[0xa3] = 0;
  param_1[0xa4] = 0;
  param_1[0xa5] = 0;
  param_1[0xa6] = 0;
  param_1[0xa7] = 0;
  *(undefined4 *)(param_1 + 0xa8) = 0;
  local_190 = param_1;
  iVar3 = (**(code **)(*param_2 + 0x18))(param_2,&local_170,6);
  if (((iVar3 == 6) &&
      ((((iVar3 = strncmp("GIF87a",(char *)&local_170,6), iVar3 == 0 ||
         (iVar3 = strncmp("GIF89a",(char *)&local_170,6), iVar3 == 0)) &&
        (iVar3 = (**(code **)(*(longlong *)param_1[1] + 0x18))((longlong *)param_1[1],&local_170,4),
        iVar3 == 4)) && ((local_170 != 0 && (local_16e != 0)))))) &&
     (iVar3 = (**(code **)(*param_2 + 0x18))(param_2,local_168,3), iVar3 == 3)) {
    uVar6 = 0xffffffff;
    if ((char)local_168[0] < '\0') {
      FUN_1804a0b90(param_1,2 << (local_168[0] & 7));
      uVar6 = 0xffffffff;
    }
LAB_1804a0883:
    do {
      while( true ) {
        iVar3 = (**(code **)(*(longlong *)param_1[1] + 0x18))((longlong *)param_1[1],local_168,1);
        if (iVar3 != 1) {
        }
        if (local_168[0] == 0x3b) {
        }
        if (local_168[0] == 0x21) break;
        if (local_168[0] == 0x2c) {
          iVar3 = (**(code **)(*(longlong *)param_1[1] + 0x18))((longlong *)param_1[1],local_168,9);
          if (iVar3 != 9) {
          }
          if (((char)local_160 < '\0') &&
             (cVar2 = FUN_1804a0b90(param_1,2 << (local_160 & 7)), cVar2 == '\0')) {
          }
          local_1a8 = juce::NativeImageType::vftable;
          local_1d8 = (uint)local_162;
          local_1d0 = -1 < (int)uVar6;
          (*(code *)PTR_FUN_1824988f0)(&local_1a8,&local_1b8,(-1 < (int)uVar6) + '\x01',local_164);
          local_1a0 = (undefined8 *)*param_1;
          *param_1 = (longlong)local_1b8;
          local_1b8 = local_1a0;
          if (local_1a0 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(local_1a0 + 1);
            iVar3 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)*local_1a0)(local_1a0,1);
            }
          }
          local_180 = &PTR_vftable_18262b550;
          local_178[0] = -1 < (int)uVar6;
          lVar5 = FUN_18122bf10();
          lpCriticalSection = (LPCRITICAL_SECTION)(lVar5 + 0x10);
          local_188 = lpCriticalSection;
          EnterCriticalSection(lpCriticalSection);
          FUN_18122c130(lVar5);
          local_1b0 = "originalImageHadAlpha";
          FUN_181211b90(&local_1c0,lVar5,&local_1b0);
          LeaveCriticalSection(lpCriticalSection);
          if (*param_1 != 0) {
            lVar7 = *param_1 + 0x20;
          }
          FUN_181243e80(lVar7,&local_1c0,&local_180);
          _Memory = (uint *)(local_1c0 + -0x10);
          if ((*_Memory & 0x30000000) == 0) {
            LOCK();
            uVar4 = *_Memory;
            *_Memory = *_Memory - 1;
            UNLOCK();
            if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          (**(code **)(*local_180 + 0xb0))(local_180,local_178);
          FUN_1804a12a0(param_1,local_160 >> 6 & 1,uVar6);
        }
      }
      iVar3 = (**(code **)(*(longlong *)param_1[1] + 0x18))((longlong *)param_1[1],local_1c6,1);
      if (iVar3 != 1) {
      }
      if (local_1c6[0] == -7) {
        iVar3 = (**(code **)(*(longlong *)param_1[1] + 0x18))((longlong *)param_1[1],&local_1c8,1);
        if ((iVar3 != 1) ||
           ((*(bool *)((longlong)param_1 + 0x514) = local_1c8 == 0, local_1c8 != 0 &&
            (uVar4 = (**(code **)(*(longlong *)param_1[1] + 0x18))
                               ((longlong *)param_1[1],local_158,local_1c8), uVar4 != local_1c8))))
        goto LAB_1804a0883;
        if ((local_158[0] & 1) != 0) {
          uVar6 = (uint)local_155;
        }
      }
      do {
        iVar3 = (**(code **)(*(longlong *)param_1[1] + 0x18))((longlong *)param_1[1],&local_1c7,1);
        if ((iVar3 != 1) ||
           ((*(bool *)((longlong)param_1 + 0x514) = local_1c7 == 0, local_1c7 != 0 &&
            (uVar4 = (**(code **)(*(longlong *)param_1[1] + 0x18))
                               ((longlong *)param_1[1],local_158,local_1c7), uVar4 != local_1c7))))
        {
          iVar3 = -1;
          break;
        }
        iVar3 = 0;
      } while (local_1c7 != 0);
    } while (-1 < iVar3);
  }
}



############ FUN_ 180727260 size=130 ############

void FUN_180727260(longlong param_1)

{
  HANDLE local_18;
  undefined8 local_10;
  
  local_18 = *(HANDLE *)(param_1 + 0x10);
  local_10 = *(undefined8 *)(param_1 + 8);
  WaitForMultipleObjects(2,&local_18,0,0xffffffff);
  CloseHandle(*(HANDLE *)(param_1 + 0x10));
  LOCK();
  UNLOCK();
  if (DAT_182666a38 != 0) {
    TerminateThread(*(HANDLE *)(param_1 + 8),0);
    return;
  }
  QueueUserAPC(_guard_check_icall,*(HANDLE *)(param_1 + 8),0);
  WaitForSingleObject(*(HANDLE *)(param_1 + 8),0xffffffff);
  return;
}



############ FUN_ 1804976b0 size=442 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804976b0(longlong param_1,undefined **param_2,char param_3)

{
  undefined8 uVar1;
  int iVar2;
  int iVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  undefined ***pppuVar6;
  ulonglong uVar7;
  bool bVar8;
  undefined *puVar9;
  undefined1 auStack_88 [32];
  undefined4 local_68;
  undefined **local_60;
  undefined4 local_58 [2];
  undefined **local_50;
  ulonglong local_48;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_88;
  uVar5 = *(undefined8 *)(param_1 + 8);
  local_68 = 0;
  local_60 = param_2;
  iVar2 = FUN_180483820(param_1 + 8);
  uVar1 = *(undefined8 *)(param_1 + 8);
  uVar7 = (ulonglong)(iVar2 - 0x30);
  iVar2 = FUN_180483820(param_1 + 8);
  while (iVar2 - 0x30U < 10) {
    uVar1 = *(undefined8 *)(param_1 + 8);
    uVar7 = (longlong)(int)(iVar2 - 0x30U) + uVar7 * 10;
    iVar2 = FUN_180483820(param_1 + 8);
  }
  if ((iVar2 - 0x2eU < 0x38) &&
     ((0x80000000800001U >> ((ulonglong)(iVar2 - 0x2eU) & 0x3f) & 1) != 0)) {
    *(undefined8 *)(param_1 + 8) = uVar5;
    puVar9 = (undefined *)FUN_18049bd80(param_1 + 8);
    if (param_3 != '\0') {
      puVar9 = (undefined *)
               CONCAT44((uint)((ulonglong)puVar9 >> 0x20) ^ DAT_1824c4f20._4_4_,
                        (uint)puVar9 ^ (uint)DAT_1824c4f20);
    }
    param_2[1] = puVar9;
    *param_2 = (undefined *)&PTR_vftable_18262b4d8;
  }
  else {
    iVar3 = iswspace((wint_t)iVar2);
    if (((iVar3 == 0) && (((iVar2 != 0x2c && (iVar2 != 0x7d)) && (iVar2 != 0x5d)))) && (iVar2 != 0))
    {
      uVar5 = FUN_18124a880(&local_60,"Syntax error in number");
                    /* WARNING: Subroutine does not return */
      FUN_180496e50(param_1,uVar5,uVar1);
    }
    *(undefined8 *)(param_1 + 8) = uVar1;
    uVar4 = uVar7;
    if (param_3 != '\0') {
      uVar4 = -uVar7;
    }
    bVar8 = (uVar7 & 0xffffffff80000000) == 0;
    if (bVar8) {
      local_58[0] = (int)uVar4;
      local_60 = &PTR_vftable_18262b570;
      pppuVar6 = &local_60;
    }
    else {
      local_48 = uVar4;
      local_50 = &PTR_vftable_18262b568;
      pppuVar6 = &local_50;
    }
    *param_2 = (undefined *)*pppuVar6;
    param_2[1] = (undefined *)pppuVar6[1];
    *pppuVar6 = &PTR_vftable_18262b558;
    if (bVar8) {
      (**(code **)(*local_60 + 0xb0))(local_60,local_58);
    }
    else {
      (**(code **)(*local_50 + 0xb0))(local_50,&local_48);
    }
  }
}



############ FUN_ 1811376a0 size=153 ############

undefined8 FUN_1811376a0(longlong *param_1,double param_2)

{
  code *pcVar1;
  double dVar2;
  double dVar3;
  
  dVar2 = 0.0;
  if (0.0 <= param_2) {
    dVar2 = param_2;
  }
  dVar3 = DAT_1824c4140;
  if (dVar2 <= DAT_1824c4140) {
    dVar3 = dVar2;
  }
  if (dVar3 == (double)param_1[0x65]) {
    return 0;
  }
  param_1[0x65] = (longlong)dVar3;
  pcVar1 = *(code **)(*param_1 + 0x50);
  if (pcVar1 == FUN_18113d640) {
    if (DAT_182673668 != (longlong *)0x0) {
      (**(code **)(*DAT_182673668 + 0x28))(DAT_182673668,param_1,1);
      return 1;
    }
    pcVar1 = *(code **)(*param_1 + 0x60);
    if (pcVar1 != _guard_check_icall) {
      (*pcVar1)(dVar2,1);
      return 1;
    }
  }
  else {
    (*pcVar1)(dVar2,1);
  }
  return 1;
}



############ FUN_ 181256650 size=712 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181256650(longlong *param_1,char param_2,int param_3,int param_4,longlong param_5)

{
  LPCRITICAL_SECTION lpCriticalSection;
  byte bVar1;
  byte bVar2;
  byte bVar3;
  longlong lVar4;
  byte *pbVar5;
  uint *_Memory;
  uint uVar6;
  int iVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  byte *pbVar10;
  char cVar11;
  undefined1 auStack_f8 [32];
  int local_d8;
  char local_d0;
  char local_c8;
  undefined4 local_c4;
  longlong local_c0;
  char *local_b8;
  undefined **local_b0;
  longlong local_a8;
  int local_9c;
  int local_98;
  int local_94;
  int local_90;
  undefined8 *local_88;
  undefined8 local_80;
  longlong *local_78;
  LPCRITICAL_SECTION local_70;
  undefined **local_68;
  undefined1 local_60 [8];
  ulonglong local_58;
  
  local_80 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_f8;
  uVar8 = 0;
  iVar7 = 0;
  local_c4 = 0;
  local_b0 = juce::NativeImageType::vftable;
  local_d8 = param_4;
  local_d0 = param_2;
  local_78 = param_1;
  (*(code *)PTR_FUN_1824988f0)(&local_b0,param_1,(param_2 != '\0') + '\x01',param_3);
  local_c4 = 1;
  if (*param_1 != 0) {
    iVar7 = *(int *)(*param_1 + 0x10);
  }
  local_60[0] = iVar7 != 1;
  local_68 = &PTR_vftable_18262b550;
  lVar4 = FUN_18122bf10();
  lpCriticalSection = (LPCRITICAL_SECTION)(lVar4 + 0x10);
  local_70 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  FUN_18122c130(lVar4);
  local_b8 = "originalImageHadAlpha";
  FUN_181211b90(&local_c0,lVar4,&local_b8);
  local_c4 = 3;
  LeaveCriticalSection(lpCriticalSection);
  uVar9 = uVar8;
  if (*param_1 != 0) {
    uVar9 = *param_1 + 0x20;
  }
  FUN_181243e80(uVar9,&local_c0,&local_68);
  _Memory = (uint *)(local_c0 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar6 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*local_68 + 0xb0))(local_68,local_60);
  param_1 = (longlong *)*param_1;
  local_90 = 0;
  iVar7 = local_90;
  if (param_1 != (longlong *)0x0) {
    iVar7 = (int)param_1[2];
  }
  cVar11 = iVar7 != 1;
  local_94 = local_90;
  if (param_1 != (longlong *)0x0) {
    local_94 = *(int *)((longlong)param_1 + 0x14);
    local_90 = (int)param_1[3];
  }
  local_88 = (undefined8 *)0x0;
  local_d8 = 1;
  local_c8 = cVar11;
  (**(code **)(*param_1 + 0x20))(param_1,&local_a8,0,0);
  if (0 < (longlong)param_4) {
    uVar9 = uVar8;
    do {
      pbVar10 = *(byte **)(param_5 + uVar9 * 8);
      pbVar5 = (byte *)((longlong)local_9c * (longlong)(int)uVar8 + local_a8);
      iVar7 = param_3 + -1;
      if (cVar11 == '\0') {
        for (; -1 < iVar7; iVar7 = iVar7 + -1) {
          bVar1 = pbVar10[2];
          bVar2 = pbVar10[1];
          pbVar5[2] = *pbVar10;
          pbVar5[1] = bVar2;
          *pbVar5 = bVar1;
          pbVar5 = pbVar5 + local_98;
          pbVar10 = pbVar10 + 4;
        }
      }
      else {
        for (; -1 < iVar7; iVar7 = iVar7 + -1) {
          bVar1 = pbVar10[1];
          bVar2 = *pbVar10;
          bVar3 = pbVar10[3];
          *pbVar5 = pbVar10[2];
          pbVar5[1] = bVar1;
          pbVar5[2] = bVar2;
          pbVar5[3] = bVar3;
          uVar6 = (uint)bVar3;
          if (uVar6 < 0xff) {
            if (bVar3 == 0) {
              pbVar5[0] = 0;
              pbVar5[1] = 0;
              pbVar5[2] = 0;
            }
            else {
              *pbVar5 = (byte)(*pbVar5 * uVar6 + 0x7f >> 8);
              pbVar5[1] = (byte)(bVar1 * uVar6 + 0x7f >> 8);
              pbVar5[2] = (byte)(bVar2 * uVar6 + 0x7f >> 8);
            }
          }
          pbVar5 = pbVar5 + local_98;
          pbVar10 = pbVar10 + 4;
          cVar11 = local_c8;
        }
      }
      uVar8 = (ulonglong)((int)uVar8 + 1);
      uVar9 = uVar9 + 1;
    } while ((longlong)uVar9 < (longlong)param_4);
  }
  if (local_88 != (undefined8 *)0x0) {
    (**(code **)*local_88)(local_88,1);
  }
}



############ FUN_ 1805258f0 size=514 ############

void FUN_1805258f0(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  undefined1 local_58 [8];
  longlong *local_50;
  undefined8 local_48 [2];
  
  (**(code **)(*(longlong *)*param_1 + 0xb8))
            ((longlong *)*param_1,local_58,param_1 + 1,param_4,0xfffffffffffffffe);
  local_50 = (longlong *)*param_2;
  (**(code **)(*local_50 + 0xb8))(local_50,local_48,param_2 + 1);
  cVar4 = FUN_1805244f0();
  if (cVar4 != '\0') {
    uVar1 = *param_2;
    uVar2 = param_2[1];
    *param_2 = &PTR_vftable_18262b558;
    *param_2 = *param_1;
    *param_1 = &PTR_vftable_18262b558;
    uVar3 = param_2[1];
    param_2[1] = param_1[1];
    param_1[1] = uVar3;
    local_50 = (longlong *)*param_1;
    *param_1 = uVar1;
    local_48[0] = param_1[1];
    param_1[1] = uVar2;
    (**(code **)(*local_50 + 0xb0))(local_50,local_48);
  }
  local_50 = (longlong *)*param_2;
  (**(code **)(*local_50 + 0xb8))(local_50,local_48,param_2 + 1);
  (**(code **)(*(longlong *)*param_3 + 0xb8))((longlong *)*param_3,local_58,param_3 + 1);
  cVar4 = FUN_1805244f0();
  if (cVar4 != '\0') {
    uVar1 = *param_3;
    uVar2 = param_3[1];
    *param_3 = &PTR_vftable_18262b558;
    *param_3 = *param_2;
    *param_2 = &PTR_vftable_18262b558;
    uVar3 = param_3[1];
    param_3[1] = param_2[1];
    param_2[1] = uVar3;
    local_50 = (longlong *)*param_2;
    *param_2 = uVar1;
    local_48[0] = param_2[1];
    param_2[1] = uVar2;
    (**(code **)(*local_50 + 0xb0))(local_50,local_48);
    local_50 = (longlong *)*param_1;
    (**(code **)(*local_50 + 0xb8))(local_50,local_48,param_1 + 1);
    (**(code **)(*(longlong *)*param_2 + 0xb8))((longlong *)*param_2,local_58,param_2 + 1);
    cVar4 = FUN_1805244f0();
    if (cVar4 != '\0') {
      uVar1 = *param_2;
      uVar2 = param_2[1];
      *param_2 = &PTR_vftable_18262b558;
      *param_2 = *param_1;
      *param_1 = &PTR_vftable_18262b558;
      uVar3 = param_2[1];
      param_2[1] = param_1[1];
      param_1[1] = uVar3;
      local_50 = (longlong *)*param_1;
      *param_1 = uVar1;
      local_48[0] = param_1[1];
      param_1[1] = uVar2;
      (**(code **)(*local_50 + 0xb0))(local_50,local_48);
    }
  }
  return;
}



############ FUN_ 180475900 size=226 ############

undefined8 FUN_180475900(longlong *param_1,double param_2)

{
  undefined1 *puVar1;
  code *pcVar2;
  double dVar3;
  
  dVar3 = 0.0;
  if ((0.0 <= param_2) && (dVar3 = DAT_1824c4140, param_2 <= DAT_1824c4140)) {
    dVar3 = param_2;
  }
  if (dVar3 == (double)param_1[0x65]) {
    return 0;
  }
  param_1[0x65] = (longlong)dVar3;
  if (*(char *)(param_1[0x67] + 0x621c) == '\0') {
    (**(code **)(*(longlong *)param_1[0x68] + 0x10))((longlong *)param_1[0x68],(float)dVar3);
    puVar1 = (undefined1 *)FUN_18047c390();
    *puVar1 = 1;
    FUN_1812c3d40(param_1[0x68],(float)dVar3);
  }
  pcVar2 = (code *)((undefined **)*param_1)[10];
  if ((undefined **)*param_1 == juce::JuceVST3EditController::Param::vftable) {
    if (DAT_182673668 != (longlong *)0x0) {
      (**(code **)(*DAT_182673668 + 0x28))(DAT_182673668,param_1,1);
      return 1;
    }
    pcVar2 = (code *)juce::JuceVST3EditController::Param::vftable[0xc];
    if ((code *)juce::JuceVST3EditController::Param::vftable[0xc] == _guard_check_icall) {
      return 0x180471401;
    }
  }
  (*pcVar2)(param_1,1);
  return 1;
}



############ FUN_ 180475e10 size=256 ############

undefined8 FUN_180475e10(longlong *param_1,double param_2)

{
  int iVar1;
  code *pcVar2;
  longlong *plVar3;
  uint uVar4;
  
  iVar1 = *(int *)((longlong)param_1 + 0x314);
  pcVar2 = *(code **)(*(longlong *)param_1[0x67] + 0xc0);
  if (pcVar2 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    uVar4 = 1;
    if ((int)((longlong *)param_1[0x67])[1] == 3) {
      uVar4 = 0x80;
    }
  }
  else {
    uVar4 = (*pcVar2)();
  }
  plVar3 = DAT_182673668;
  if ((uVar4 <= (uint)(int)((double)iVar1 * param_2)) || ((double)param_1[0x65] == param_2)) {
    return 0;
  }
  param_1[0x65] = (longlong)param_2;
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x28))(plVar3,param_1,1);
    return 1;
  }
  if (*(code **)(*param_1 + 0x60) != _guard_check_icall) {
    (**(code **)(*param_1 + 0x60))(param_1,1);
    return 1;
  }
  return 0x180471401;
}



############ FUN_ 180584d60 size=51 ############

void FUN_180584d60(longlong param_1)

{
  code *pcVar1;
  
  if (*(longlong **)(param_1 + 0x38) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x38) + 0x10);
  if (pcVar1 == _guard_check_icall) {
    return;
  }
  (*pcVar1)();
  return;
}



############ FUN_ 1805245d0 size=2884 ############

void FUN_1805245d0(ulonglong *param_1,longlong **param_2,longlong **param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong *plVar3;
  int iVar4;
  longlong **pplVar5;
  longlong lVar6;
  longlong **pplVar7;
  longlong **pplVar8;
  longlong **pplVar9;
  longlong **pplVar10;
  longlong **pplVar11;
  longlong **pplVar12;
  longlong **pplVar13;
  longlong **local_res20;
  longlong *local_200;
  undefined1 local_1f8 [8];
  longlong *local_1f0;
  undefined1 local_1e8 [8];
  longlong *local_1e0;
  undefined1 local_1d8 [8];
  longlong **local_1d0;
  longlong **local_1c8;
  longlong *local_1c0;
  undefined1 local_1b8 [8];
  longlong **local_1b0;
  longlong *local_1a8;
  undefined1 local_1a0 [8];
  longlong *local_198;
  undefined1 local_190 [8];
  longlong *local_188;
  undefined1 local_180 [8];
  longlong *local_178;
  undefined1 local_170 [8];
  longlong **local_168;
  longlong **local_160;
  longlong *local_158;
  undefined1 local_150 [8];
  longlong *local_148;
  undefined1 local_140 [8];
  longlong *local_138;
  undefined1 local_130 [8];
  longlong *local_128;
  undefined1 local_120 [8];
  longlong *local_118;
  undefined1 local_110 [8];
  longlong *local_108;
  undefined1 local_100 [8];
  longlong *local_f8;
  undefined1 local_f0 [8];
  longlong *local_e8;
  undefined1 local_e0 [8];
  longlong *local_d8;
  undefined1 local_d0 [8];
  longlong *local_c8;
  longlong *local_c0;
  longlong *local_b8;
  longlong *local_b0;
  longlong *local_a8;
  longlong *local_a0;
  longlong *local_98;
  longlong *local_90;
  longlong *local_88;
  longlong *local_80;
  longlong *local_78;
  longlong *local_70;
  longlong *local_68;
  longlong *local_60;
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  pplVar8 = param_2 + ((longlong)param_3 - (longlong)param_2 >> 5) * 2;
  lVar6 = (longlong)param_3 + (-0x10 - (longlong)param_2) >> 4;
  if (lVar6 < 0x29) {
    FUN_1805258f0(param_2,pplVar8,param_3 + -2);
  }
  else {
    lVar6 = lVar6 + 1 >> 3;
    FUN_1805258f0(param_2,param_2 + lVar6 * 2,param_2 + lVar6 * 4);
    FUN_1805258f0(pplVar8 + lVar6 * -2,pplVar8,pplVar8 + lVar6 * 2,param_4);
    pplVar5 = param_3 + -2;
    FUN_1805258f0(pplVar5 + lVar6 * -4,pplVar5 + lVar6 * -2,pplVar5,param_4);
    FUN_1805258f0(param_2 + lVar6 * 2,pplVar8,pplVar5 + lVar6 * -2,param_4);
  }
  pplVar5 = pplVar8 + 2;
  pplVar9 = pplVar8;
  if (param_2 < pplVar8) {
    local_1b0 = &local_200;
    local_168 = &local_1c0;
    while( true ) {
      local_1d0 = &local_200;
      local_200 = *pplVar9;
      (**(code **)(*local_200 + 0xb8))(local_200,local_1f8,pplVar9 + 1);
      pplVar7 = pplVar9 + -2;
      local_1c0 = *pplVar7;
      (**(code **)(*local_1c0 + 0xb8))(local_1c0,local_1b8,pplVar9 + -1);
      local_178 = local_200;
      (**(code **)(*local_200 + 0xb8))(local_200,local_170,local_1f8);
      local_188 = local_1c0;
      (**(code **)(*local_1c0 + 0xb8))(local_1c0,local_180,local_1b8);
      iVar4 = FUN_180500180(&local_188,&local_178);
      (**(code **)(*local_1c0 + 0xb0))(local_1c0,local_1b8);
      (**(code **)(*local_200 + 0xb0))(local_200,local_1f8);
      if (iVar4 < 0) break;
      local_1e0 = *pplVar7;
      (**(code **)(*local_1e0 + 0xb8))(local_1e0,local_1d8,pplVar9 + -1);
      local_1d0 = &local_1e0;
      local_1f0 = *pplVar9;
      (**(code **)(*local_1f0 + 0xb8))(local_1f0,local_1e8,pplVar9 + 1);
      local_1c8 = &local_198;
      local_198 = local_1e0;
      (**(code **)(*local_1e0 + 0xb8))(local_1e0,local_190,local_1d8);
      local_1a8 = local_1f0;
      (**(code **)(*local_1f0 + 0xb8))(local_1f0,local_1a0,local_1e8);
      iVar4 = FUN_180500180(&local_1a8,&local_198);
      (**(code **)(*local_1f0 + 0xb0))(local_1f0,local_1e8);
      (**(code **)(*local_1e0 + 0xb0))(local_1e0,local_1d8);
      if ((iVar4 < 0) || (pplVar9 = pplVar7, pplVar7 <= param_2)) break;
    }
  }
  pplVar7 = pplVar5;
  pplVar12 = pplVar9;
  local_res20 = pplVar5;
  pplVar10 = pplVar5;
  pplVar13 = pplVar9;
  if (pplVar5 < param_3) {
    local_160 = &local_1e0;
    pplVar8 = pplVar8 + 3;
    do {
      local_1c8 = &local_1f0;
      local_1f0 = *pplVar9;
      (**(code **)(*local_1f0 + 0xb8))(local_1f0,local_1e8,pplVar9 + 1);
      local_1e0 = *pplVar5;
      (**(code **)(*local_1e0 + 0xb8))(local_1e0,local_1d8,pplVar8);
      local_1c8 = &local_178;
      local_178 = local_1f0;
      (**(code **)(*local_1f0 + 0xb8))(local_1f0,local_170,local_1e8);
      local_188 = local_1e0;
      (**(code **)(*local_1e0 + 0xb8))(local_1e0,local_180,local_1d8);
      iVar4 = FUN_180500180(&local_188,&local_178);
      (**(code **)(*local_1e0 + 0xb0))(local_1e0,local_1d8);
      (**(code **)(*local_1f0 + 0xb0))(local_1f0,local_1e8);
      pplVar7 = pplVar5;
      local_res20 = pplVar5;
      pplVar10 = pplVar5;
      if (iVar4 < 0) break;
      local_1c8 = &local_1c0;
      local_1c0 = *pplVar5;
      (**(code **)(*local_1c0 + 0xb8))(local_1c0,local_1b8,pplVar8);
      local_200 = *pplVar9;
      (**(code **)(*local_200 + 0xb8))(local_200,local_1f8,pplVar9 + 1);
      local_1c8 = &local_200;
      local_1d0 = &local_198;
      local_198 = local_1c0;
      (**(code **)(*local_1c0 + 0xb8))(local_1c0,local_190,local_1b8);
      local_1a8 = local_200;
      (**(code **)(*local_200 + 0xb8))(local_200,local_1a0,local_1f8);
      iVar4 = FUN_180500180(&local_1a8,&local_198);
      (**(code **)(*local_200 + 0xb0))(local_200,local_1f8);
      (**(code **)(*local_1c0 + 0xb0))(local_1c0,local_1b8);
      if (iVar4 < 0) break;
      pplVar5 = pplVar5 + 2;
      pplVar8 = pplVar8 + 2;
      pplVar7 = pplVar5;
      local_res20 = pplVar5;
      pplVar10 = pplVar5;
    } while (pplVar5 < param_3);
  }
  do {
    local_168 = pplVar13;
    local_1b0 = pplVar10;
    pplVar8 = local_1b0;
    if (pplVar5 < param_3) {
      local_160 = &local_1e0;
      do {
        local_1c8 = &local_1f0;
        local_1f0 = *pplVar5;
        (**(code **)(*local_1f0 + 0xb8))(local_1f0,local_1e8,pplVar5 + 1);
        local_1e0 = *pplVar9;
        (**(code **)(*local_1e0 + 0xb8))(local_1e0,local_1d8,pplVar9 + 1);
        local_1c8 = &local_148;
        local_148 = local_1f0;
        (**(code **)(*local_1f0 + 0xb8))(local_1f0,local_140,local_1e8);
        local_138 = local_1e0;
        (**(code **)(*local_1e0 + 0xb8))(local_1e0,local_130,local_1d8);
        iVar4 = FUN_180500180(&local_138,&local_148);
        (**(code **)(*local_1e0 + 0xb0))(local_1e0,local_1d8);
        (**(code **)(*local_1f0 + 0xb0))(local_1f0,local_1e8);
        if (-1 < iVar4) {
          local_1c8 = &local_158;
          local_158 = *pplVar9;
          (**(code **)(*local_158 + 0xb8))(local_158,local_150,pplVar9 + 1);
          local_200 = *pplVar5;
          (**(code **)(*local_200 + 0xb8))(local_200,local_1f8,pplVar5 + 1);
          local_1c8 = &local_200;
          local_128 = local_158;
          local_1d0 = &local_128;
          (**(code **)(*local_158 + 0xb8))(local_158,local_120,local_150);
          local_118 = local_200;
          (**(code **)(*local_200 + 0xb8))(local_200,local_110,local_1f8);
          iVar4 = FUN_180500180(&local_118,&local_128);
          (**(code **)(*local_200 + 0xb0))(local_200,local_1f8);
          (**(code **)(*local_158 + 0xb0))(local_158,local_150);
          pplVar12 = local_168;
          local_res20 = pplVar7;
          pplVar8 = pplVar5;
          if (iVar4 < 0) break;
          if (pplVar7 != pplVar5) {
            plVar1 = *pplVar7;
            plVar2 = pplVar7[1];
            *pplVar7 = (longlong *)&PTR_vftable_18262b558;
            *pplVar7 = *pplVar5;
            *pplVar5 = (longlong *)&PTR_vftable_18262b558;
            plVar3 = pplVar7[1];
            pplVar7[1] = pplVar5[1];
            pplVar5[1] = plVar3;
            local_c8 = *pplVar5;
            *pplVar5 = plVar1;
            local_c0 = pplVar5[1];
            pplVar5[1] = plVar2;
            (**(code **)(*local_c8 + 0xb0))(local_c8,&local_c0);
          }
          pplVar7 = pplVar7 + 2;
        }
        pplVar5 = pplVar5 + 2;
        pplVar12 = local_168;
        local_res20 = pplVar7;
        pplVar8 = pplVar5;
      } while (pplVar5 < param_3);
    }
    local_1b0 = pplVar8;
    pplVar8 = pplVar7;
    pplVar10 = pplVar9;
    pplVar7 = local_168;
    if (param_2 < pplVar12) {
      local_160 = &local_198;
      local_1c8 = &local_1a8;
      pplVar13 = pplVar12;
      do {
        pplVar11 = pplVar13 + -2;
        local_198 = *pplVar9;
        (**(code **)(*local_198 + 0xb8))(local_198,local_190,pplVar9 + 1);
        local_1a8 = *pplVar11;
        (**(code **)(*local_1a8 + 0xb8))(local_1a8,local_1a0,pplVar13 + -1);
        local_108 = local_198;
        (**(code **)(*local_198 + 0xb8))(local_198,local_100,local_190);
        local_f8 = local_1a8;
        (**(code **)(*local_1a8 + 0xb8))(local_1a8,local_f0,local_1a0);
        iVar4 = FUN_180500180(&local_f8,&local_108);
        (**(code **)(*local_1a8 + 0xb0))(local_1a8,local_1a0);
        (**(code **)(*local_198 + 0xb0))(local_198,local_190);
        pplVar10 = pplVar9;
        pplVar8 = local_res20;
        if (-1 < iVar4) {
          local_178 = *pplVar11;
          (**(code **)(*local_178 + 0xb8))(local_178,local_170,pplVar13 + -1);
          local_1d0 = &local_178;
          local_188 = *pplVar9;
          (**(code **)(*local_188 + 0xb8))(local_188,local_180,pplVar9 + 1);
          local_168 = &local_e8;
          local_e8 = local_178;
          (**(code **)(*local_178 + 0xb8))(local_178,local_e0,local_170);
          local_d8 = local_188;
          (**(code **)(*local_188 + 0xb8))(local_188,local_d0,local_180);
          iVar4 = FUN_180500180(&local_d8,&local_e8);
          (**(code **)(*local_188 + 0xb0))(local_188,local_180);
          (**(code **)(*local_178 + 0xb0))(local_178,local_170);
          pplVar5 = local_1b0;
          pplVar7 = pplVar12;
          if (iVar4 < 0) break;
          pplVar10 = pplVar9 + -2;
          if (pplVar10 != pplVar11) {
            plVar1 = *pplVar10;
            plVar2 = pplVar9[-1];
            *pplVar10 = (longlong *)&PTR_vftable_18262b558;
            *pplVar10 = *pplVar11;
            *pplVar11 = (longlong *)&PTR_vftable_18262b558;
            plVar3 = pplVar9[-1];
            pplVar9[-1] = pplVar13[-1];
            pplVar13[-1] = plVar3;
            local_b8 = *pplVar11;
            *pplVar11 = plVar1;
            local_b0 = pplVar13[-1];
            pplVar13[-1] = plVar2;
            (**(code **)(*local_b8 + 0xb0))(local_b8,&local_b0);
          }
        }
        pplVar12 = pplVar12 + -2;
        pplVar5 = local_1b0;
        pplVar9 = pplVar10;
        pplVar13 = pplVar11;
        pplVar7 = pplVar12;
      } while (param_2 < pplVar12);
    }
    local_168 = pplVar7;
    if (pplVar12 == param_2) {
      if (pplVar5 == param_3) {
        *param_1 = (ulonglong)pplVar10;
        param_1[1] = (ulonglong)pplVar8;
        return;
      }
      if (pplVar8 != pplVar5) {
        plVar1 = *pplVar10;
        plVar2 = pplVar10[1];
        *pplVar10 = (longlong *)&PTR_vftable_18262b558;
        *pplVar10 = *pplVar8;
        *pplVar8 = (longlong *)&PTR_vftable_18262b558;
        plVar3 = pplVar10[1];
        pplVar10[1] = pplVar8[1];
        pplVar8[1] = plVar3;
        local_a8 = *pplVar8;
        *pplVar8 = plVar1;
        local_a0 = pplVar8[1];
        pplVar8[1] = plVar2;
        (**(code **)(*local_a8 + 0xb0))(local_a8,&local_a0);
      }
      plVar1 = *pplVar10;
      plVar2 = pplVar10[1];
      *pplVar10 = (longlong *)&PTR_vftable_18262b558;
      *pplVar10 = *pplVar5;
      *pplVar5 = (longlong *)&PTR_vftable_18262b558;
      plVar3 = pplVar10[1];
      pplVar10[1] = pplVar5[1];
      pplVar5[1] = plVar3;
      local_98 = *pplVar5;
      *pplVar5 = plVar1;
      local_90 = pplVar5[1];
      pplVar5[1] = plVar2;
      (**(code **)(*local_98 + 0xb0))(local_98,&local_90);
      pplVar9 = pplVar10 + 2;
      pplVar5 = pplVar5 + 2;
      pplVar7 = pplVar8 + 2;
      local_res20 = pplVar8 + 2;
      pplVar10 = pplVar5;
      pplVar13 = local_168;
    }
    else {
      pplVar13 = pplVar12 + -2;
      local_168 = pplVar13;
      if (pplVar5 == param_3) {
        pplVar9 = pplVar10 + -2;
        if (pplVar13 != pplVar9) {
          plVar1 = *pplVar13;
          plVar2 = pplVar12[-1];
          *pplVar13 = (longlong *)&PTR_vftable_18262b558;
          *pplVar13 = *pplVar9;
          *pplVar9 = (longlong *)&PTR_vftable_18262b558;
          plVar3 = pplVar12[-1];
          pplVar12[-1] = pplVar10[-1];
          pplVar10[-1] = plVar3;
          local_88 = *pplVar9;
          *pplVar9 = plVar1;
          local_80 = pplVar10[-1];
          pplVar10[-1] = plVar2;
          (**(code **)(*local_88 + 0xb0))(local_88,&local_80);
        }
        pplVar7 = pplVar8 + -2;
        plVar1 = *pplVar9;
        plVar2 = pplVar10[-1];
        *pplVar9 = (longlong *)&PTR_vftable_18262b558;
        *pplVar9 = *pplVar7;
        *pplVar7 = (longlong *)&PTR_vftable_18262b558;
        plVar3 = pplVar10[-1];
        pplVar10[-1] = pplVar8[-1];
        pplVar8[-1] = plVar3;
        local_78 = *pplVar7;
        *pplVar7 = plVar1;
        local_70 = pplVar8[-1];
        pplVar8[-1] = plVar2;
        (**(code **)(*local_78 + 0xb0))(local_78,&local_70);
        pplVar12 = pplVar13;
        local_res20 = pplVar7;
        pplVar10 = local_1b0;
        pplVar13 = local_168;
      }
      else {
        plVar1 = *pplVar5;
        plVar2 = pplVar5[1];
        *pplVar5 = (longlong *)&PTR_vftable_18262b558;
        *pplVar5 = *pplVar13;
        *pplVar13 = (longlong *)&PTR_vftable_18262b558;
        plVar3 = pplVar5[1];
        pplVar5[1] = pplVar12[-1];
        pplVar12[-1] = plVar3;
        local_68 = *pplVar13;
        *pplVar13 = plVar1;
        local_60 = pplVar12[-1];
        pplVar12[-1] = plVar2;
        (**(code **)(*local_68 + 0xb0))(local_68,&local_60);
        pplVar5 = pplVar5 + 2;
        pplVar7 = pplVar8;
        pplVar9 = pplVar10;
        pplVar12 = pplVar13;
        pplVar10 = pplVar5;
        pplVar13 = local_168;
      }
    }
  } while( true );
}



############ FUN_ 1805345d0 size=125 ############

void * FUN_1805345d0(void *param_1)

{
  _eh_vector_constructor_iterator_(param_1,0x80,0x10,FUN_180534680,_guard_check_icall);
  *(undefined4 *)((longlong)param_1 + 0x800) = 8;
  *(undefined8 *)((longlong)param_1 + 0x804) = 0x447a0000;
  *(undefined4 *)((longlong)param_1 + 0x80c) = 0x3f34fdf4;
  *(undefined1 *)((longlong)param_1 + 0x810) = 0;
  *(undefined4 *)((longlong)param_1 + 0x814) = 1;
  *(undefined8 *)((longlong)param_1 + 0x818) = 0;
  *(undefined8 *)((longlong)param_1 + 0x820) = 0;
  return param_1;
}



############ FUN_ 180534650 size=40 ############

void FUN_180534650(void *param_1)

{
  _eh_vector_destructor_iterator_(param_1,0x80,0x10,_guard_check_icall);
  return;
}



############ FUN_ 18049b850 size=208 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18049b850(longlong *param_1,undefined8 *param_2,uint param_3)

{
  undefined ***pppuVar1;
  undefined8 *puVar2;
  bool bVar3;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  undefined8 local_50;
  undefined **local_48;
  undefined1 local_40 [8];
  undefined **local_38;
  undefined1 local_30 [8];
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_58 = 0;
  bVar3 = *(uint *)((longlong)param_1 + 0xc) <= param_3;
  if (bVar3) {
    local_38 = &PTR_vftable_18262b558;
    pppuVar1 = &local_38;
  }
  else {
    puVar2 = (undefined8 *)((longlong)(int)param_3 * 0x10 + *param_1);
    local_48 = (undefined **)*puVar2;
    (**(code **)(*local_48 + 0xb8))(local_48,local_40,puVar2 + 1);
    pppuVar1 = &local_48;
  }
  *param_2 = *pppuVar1;
  param_2[1] = pppuVar1[1];
  *pppuVar1 = &PTR_vftable_18262b558;
  if (bVar3) {
    (**(code **)(*local_38 + 0xb0))(local_38,local_30);
  }
  else {
    (**(code **)(*local_48 + 0xb0))(local_48,local_40);
  }
}



############ FUN_ 18113b5c0 size=877 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18113b5c0(longlong param_1,undefined8 *param_2,undefined4 param_3)

{
  longlong lVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  longlong *plVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined1 *_Dst;
  undefined8 uVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  uint uVar11;
  int iVar13;
  longlong *plVar14;
  longlong lVar15;
  undefined1 auStack_20b8 [32];
  longlong *local_2098;
  undefined4 local_2090;
  longlong local_2088;
  longlong *local_2080;
  longlong *local_2078;
  undefined1 *puStack_2070;
  uint local_2068;
  undefined4 uStack_2064;
  undefined8 local_2060;
  longlong *local_2058;
  undefined1 local_2048 [8192];
  ulonglong local_48;
  undefined8 uStack_40;
  ulonglong uVar12;
  
  uStack_40 = 0x18113b5d6;
  local_2060 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_20b8;
  if (DAT_182673660 == '\0') {
    uVar10 = 0;
    local_2098 = (longlong *)0x0;
    local_2090 = param_3;
    local_2088 = param_1;
    if (param_2 != (undefined8 *)0x0) {
      (**(code **)*param_2)(param_2,&DAT_18262b038,&local_2098);
    }
    plVar4 = local_2098;
    local_2058 = local_2098;
    if (local_2098 != (longlong *)0x0) {
      _Dst = local_2048;
      uVar11 = 0;
      plVar14 = (longlong *)(param_1 + 0x20);
      local_2080 = plVar14;
      (**(code **)(*plVar14 + 8))(plVar14);
      lVar15 = ((ulonglong)plVar4 >> 0xc & 0xff) * 0x40 + *(longlong *)(param_1 + 0x50);
      uVar5 = *(ulonglong *)(lVar15 + 0x30) &
              (((((((((ulonglong)plVar4 & 0xff ^ 0xcbf29ce484222325) * 0x100000001b3 ^
                    (ulonglong)local_2098 >> 8 & 0xff) * 0x100000001b3 ^
                   (ulonglong)local_2098 >> 0x10 & 0xff) * 0x100000001b3 ^
                  (ulonglong)local_2098 >> 0x18 & 0xff) * 0x100000001b3 ^
                 (ulonglong)local_2098 >> 0x20 & 0xff) * 0x100000001b3 ^
                (ulonglong)local_2098 >> 0x28 & 0xff) * 0x100000001b3 ^
               (ulonglong)local_2098 >> 0x30 & 0xff) * 0x100000001b3 ^ (ulonglong)local_2098 >> 0x38
              ) * 0x100000001b3;
      lVar1 = *(longlong *)(lVar15 + 0x18);
      puVar8 = *(undefined8 **)(lVar1 + uVar5 * 0x10);
      puVar2 = *(undefined8 **)(lVar15 + 8);
      while( true ) {
        puVar6 = puVar2;
        if (*(undefined8 **)(lVar1 + uVar5 * 0x10) != puVar2) {
          puVar6 = (undefined8 *)**(undefined8 **)(uVar5 * 0x10 + 8 + lVar1);
        }
        puVar9 = puVar2;
        if ((puVar8 == puVar6) || (puVar9 = puVar8, (longlong *)puVar8[2] == plVar4)) break;
        puVar8 = (undefined8 *)*puVar8;
      }
      if ((puVar9 != puVar2) &&
         (puVar8 = (undefined8 *)puVar9[3], puVar8 != (undefined8 *)puVar9[4])) {
        iVar13 = 0x400;
        uVar12 = uVar10;
        uVar5 = uVar10;
        do {
          *(undefined8 *)(_Dst + uVar5) = *puVar8;
          uVar11 = (int)uVar12 + 1;
          uVar12 = (ulonglong)uVar11;
          uVar5 = uVar5 + 8;
          if (iVar13 <= (int)uVar11) {
            if (_Dst != local_2048) break;
            _Dst = (undefined1 *)thunk_FUN_1811316e0(0x14000);
            memcpy(_Dst,local_2048,(longlong)(int)uVar11 * 8);
            iVar13 = 0x2800;
          }
          puVar8 = puVar8 + 1;
        } while (puVar8 != (undefined8 *)puVar9[4]);
        plVar14 = local_2080;
        param_3 = local_2090;
        if (0 < (int)uVar11) {
          lVar1 = *(longlong *)(local_2088 + 0x50);
          local_2078 = plVar4;
          puStack_2070 = _Dst;
          local_2068 = uVar11;
          if (*(ulonglong *)(lVar1 + 0x4038) <= *(longlong *)(lVar1 + 0x4048) + 1U) {
            FUN_18047d010(lVar1 + 0x4028);
          }
          *(ulonglong *)(lVar1 + 0x4040) =
               *(ulonglong *)(lVar1 + 0x4040) & *(longlong *)(lVar1 + 0x4038) - 1U;
          lVar15 = (*(longlong *)(lVar1 + 0x4038) - 1U &
                   *(longlong *)(lVar1 + 0x4040) + *(longlong *)(lVar1 + 0x4048)) * 8;
          if (*(longlong *)(lVar15 + *(longlong *)(lVar1 + 0x4030)) == 0) {
            uVar7 = FUN_180480500(0x18);
            *(undefined8 *)(lVar15 + *(longlong *)(lVar1 + 0x4030)) = uVar7;
          }
          puVar8 = *(undefined8 **)(lVar15 + *(longlong *)(lVar1 + 0x4030));
          *puVar8 = local_2078;
          puVar8[1] = puStack_2070;
          puVar8[2] = CONCAT44(uStack_2064,local_2068);
          *(longlong *)(lVar1 + 0x4048) = *(longlong *)(lVar1 + 0x4048) + 1;
          param_3 = local_2090;
        }
      }
      (**(code **)(*plVar14 + 0x10))(plVar14);
      if (0 < (int)uVar11) {
        do {
          plVar3 = *(longlong **)(_Dst + uVar10 * 8);
          if ((plVar3 != (longlong *)0x0) && (*(code **)(*plVar3 + 0x18) != _guard_check_icall)) {
            (**(code **)(*plVar3 + 0x18))(plVar3,plVar4,param_3);
          }
          uVar10 = uVar10 + 1;
        } while ((longlong)uVar10 < (longlong)(int)uVar11);
      }
      if (_Dst != local_2048) {
                    /* WARNING: Subroutine does not return */
        free(_Dst);
      }
      if (0 < (int)uVar11) {
        (**(code **)(*plVar14 + 8))(plVar14);
        lVar1 = *(longlong *)(local_2088 + 0x50);
        plVar3 = (longlong *)(lVar1 + 0x4048);
        *plVar3 = *plVar3 + -1;
        if (*plVar3 == 0) {
          *(undefined8 *)(lVar1 + 0x4040) = 0;
        }
        (**(code **)(*plVar14 + 0x10))(plVar14);
      }
      FUN_18113c0c0(plVar4,param_3);
    }
    if (plVar4 != (longlong *)0x0) {
      (**(code **)(*plVar4 + 0x10))(plVar4);
    }
  }
}



############ FUN_ 18048b4b0 size=279 ############

undefined8 * FUN_18048b4b0(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint *puVar4;
  longlong local_18 [2];
  
  lVar2 = *param_2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = param_2[1];
  param_2[1] = (longlong)&PTR_vftable_18262b558;
  local_18[0] = param_2[2];
  param_1[7] = 0;
  *param_1 = std::_Func_impl_no_alloc<<lambda_b88e618ef802701dafd5feddd9d7606e>,void>::vftable;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = lVar3;
  param_1[3] = local_18[0];
  param_1[7] = param_1;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,local_18);
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  (**(code **)(*(longlong *)param_2[1] + 0xb0))((longlong *)param_2[1],param_2 + 2);
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 18048b5d0 size=279 ############

undefined8 * FUN_18048b5d0(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint *puVar4;
  longlong local_18 [2];
  
  lVar2 = *param_2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = param_2[1];
  param_2[1] = (longlong)&PTR_vftable_18262b558;
  local_18[0] = param_2[2];
  param_1[7] = 0;
  *param_1 = std::_Func_impl_no_alloc<<lambda_52de231aa20041c12f5522b7809d902d>,void>::vftable;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = lVar3;
  param_1[3] = local_18[0];
  param_1[7] = param_1;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,local_18);
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  (**(code **)(*(longlong *)param_2[1] + 0xb0))((longlong *)param_2[1],param_2 + 2);
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 18134a800 size=179 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18134a800(longlong *param_1,undefined8 param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  undefined8 uVar4;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined **local_28;
  undefined4 local_20 [2];
  ulonglong local_18;
  
  local_38[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = &PTR_vftable_18262b570;
  local_20[0] = param_3;
  uVar4 = FUN_1804e4ce0(local_38);
  cVar3 = FUN_181243e80(param_1 + 0x12,uVar4,&local_28);
  if ((*(uint *)(local_38[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(local_38[0] + -0x10);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(local_38[0] + -0x10));
    }
  }
  (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  if (cVar3 != '\0') {
    (**(code **)(*param_1 + 0x148))(param_1);
  }
}



############ FUN_ 18048a9f0 size=297 ############

undefined8 * FUN_18048a9f0(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint *puVar4;
  longlong local_18;
  longlong local_10;
  
  lVar2 = *param_2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = param_2[1];
  param_2[1] = (longlong)&PTR_vftable_18262b558;
  local_18 = param_2[2];
  local_10 = param_2[3];
  param_1[7] = 0;
  *param_1 = std::_Func_impl_no_alloc<<lambda_ee4c2f5dabc6856f330dfd94725903b5>,void>::vftable;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = lVar3;
  param_1[3] = local_18;
  param_1[4] = local_10;
  param_1[7] = param_1;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_18);
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  (**(code **)(*(longlong *)param_2[1] + 0xb0))((longlong *)param_2[1],param_2 + 2);
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 18048ab20 size=297 ############

undefined8 * FUN_18048ab20(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint *puVar4;
  longlong local_18;
  longlong local_10;
  
  lVar2 = *param_2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = param_2[1];
  param_2[1] = (longlong)&PTR_vftable_18262b558;
  local_18 = param_2[2];
  local_10 = param_2[3];
  param_1[7] = 0;
  *param_1 = std::_Func_impl_no_alloc<<lambda_a0922a310af1d6a12e298acff68a7d74>,void>::vftable;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = lVar3;
  param_1[3] = local_18;
  param_1[4] = local_10;
  param_1[7] = param_1;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_18);
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  (**(code **)(*(longlong *)param_2[1] + 0xb0))((longlong *)param_2[1],param_2 + 2);
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 1812dac10 size=243 ############

void FUN_1812dac10(longlong *param_1)

{
  int iVar1;
  int iVar2;
  float fVar3;
  int local_res8;
  
  if ((int)param_1[0x3a] == 2) {
    *(undefined8 *)((longlong)param_1 + 0x1ec) = 0;
    *(undefined8 *)((longlong)param_1 + 500) = 0;
  }
  else {
    fVar3 = (float)*(int *)((longlong)param_1 + 0x2c);
    iVar2 = SUB84((double)((float)(int)param_1[5] * DAT_1824c3cac) + DAT_1824c4520,0);
    iVar1 = SUB84((double)(fVar3 * DAT_1824c3cac) + DAT_1824c4520,0);
    if (iVar1 < iVar2) {
      iVar2 = iVar1;
    }
    if ((int)param_1[0x3a] == 1) {
      local_res8 = SUB84((double)(fVar3 * DAT_1824c3da8) + DAT_1824c4520,0);
    }
    else {
      local_res8 = *(int *)((longlong)param_1 + 0x2c) + iVar2 * -2;
    }
    *(ulonglong *)((longlong)param_1 + 0x1ec) = CONCAT44(iVar2,iVar2);
    *(ulonglong *)((longlong)param_1 + 500) = CONCAT44(local_res8,(int)param_1[5] + iVar2 * -2);
  }
  if (*(code **)(*param_1 + 0x1a0) == _guard_check_icall) {
    return;
  }
  (**(code **)(*param_1 + 0x1a0))(param_1);
  return;
}



############ FUN_ 1804d9ee0 size=422 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804d9ee0(longlong param_1,longlong *param_2,undefined8 param_3)

{
  undefined1 *puVar1;
  longlong *plVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong *plVar5;
  bool bVar6;
  double dVar7;
  undefined1 auStack_a8 [32];
  undefined8 local_88;
  float local_78;
  undefined1 *local_70;
  undefined1 local_68;
  undefined8 local_60;
  undefined **local_58;
  double local_50;
  undefined **local_48;
  double local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  plVar5 = (longlong *)0x0;
  LOCK();
  bVar6 = *(char *)(param_1 + 0x3c) == '\x01';
  if (bVar6) {
    *(char *)(param_1 + 0x3c) = '\0';
  }
  UNLOCK();
  if (bVar6) {
    lVar3 = *(longlong *)(param_1 + 8);
    if (lVar3 != 0) {
      plVar4 = *(longlong **)(lVar3 + 0x18);
      plVar2 = plVar4 + (longlong)*(int *)(lVar3 + 0x24) * 3;
      if (plVar4 != plVar2) {
        do {
          if (*plVar4 == *param_2) {
            plVar5 = plVar4 + 1;
            break;
          }
          plVar4 = plVar4 + 3;
        } while (plVar4 != plVar2);
      }
    }
    if (plVar5 == (longlong *)0x0) {
      local_78 = *(float *)(param_1 + 0x38);
      local_48 = &PTR_vftable_18262b4d8;
      local_40 = (double)local_78;
      if (*(longlong *)(param_1 + 8) != 0) {
        local_88 = 0;
        FUN_180526e00(*(longlong *)(param_1 + 8),param_2,&local_48,0);
      }
      (**(code **)(*local_48 + 0xb0))(local_48,&local_40);
    }
    else {
      dVar7 = (double)(**(code **)(*(longlong *)*plVar5 + 0x18))((longlong *)*plVar5,plVar5 + 1);
      if ((float)dVar7 != *(float *)(param_1 + 0x38)) {
        puVar1 = (undefined1 *)(param_1 + 0x3e);
        local_68 = *puVar1;
        *puVar1 = 1;
        local_78 = *(float *)(param_1 + 0x38);
        local_58 = &PTR_vftable_18262b4d8;
        local_50 = (double)local_78;
        local_70 = puVar1;
        if (*(longlong *)(param_1 + 8) != 0) {
          local_88 = 0;
          FUN_180526e00(*(longlong *)(param_1 + 8),param_2,&local_58,param_3);
        }
        (**(code **)(*local_58 + 0xb0))(local_58,&local_50);
        *puVar1 = local_68;
      }
    }
  }
}



############ FUN_ 180479040 size=43 ############

undefined8 FUN_180479040(longlong param_1)

{
  code *pcVar1;
  
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x30) + 0x20);
  if (pcVar1 == _guard_check_icall) {
    return 0;
  }
  (*pcVar1)();
  return 0;
}



############ FUN_ 180479250 size=698 ############

undefined8 FUN_180479250(longlong param_1,char param_2)

{
  int *piVar1;
  uint uVar2;
  double dVar3;
  undefined8 uVar4;
  code *pcVar5;
  longlong *plVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  ulonglong uVar10;
  longlong lVar11;
  ulonglong uVar12;
  longlong lVar13;
  undefined4 uVar14;
  undefined4 uVar15;
  
  if (param_2 == '\0') {
    pcVar5 = *(code **)(**(longlong **)(param_1 + 0x30) + 0x20);
    if (pcVar5 != _guard_check_icall) {
      (*pcVar5)();
    }
    *(undefined4 *)(param_1 + 0xf4) = 0;
    if ((*(int *)(param_1 + 0x10c) != 0) || (*(int *)(param_1 + 0x108) != 0)) {
      *(undefined8 *)(param_1 + 0x110) = 0x30;
      FUN_180481140(param_1 + 0x120,0x30,*(char *)(param_1 + 0x228) != '\0');
      *(undefined8 **)(param_1 + 0x118) = *(undefined8 **)(param_1 + 0x120);
      **(undefined8 **)(param_1 + 0x120) = 0;
      *(undefined8 *)(param_1 + 0x108) = 0;
    }
    *(undefined4 *)(param_1 + 0x104) = 0;
    FUN_180480760(param_1 + 0x230,0,0);
    return 0;
  }
  dVar3 = *(double *)(param_1 + 0xd0);
  uVar4 = *(undefined8 *)(*(longlong *)(param_1 + 0x30) + 0x30);
  uVar14 = (undefined4)uVar4;
  uVar15 = (undefined4)((ulonglong)uVar4 >> 0x20);
  if (0.0 < dVar3) {
    uVar14 = SUB84(dVar3,0);
    uVar15 = (undefined4)((ulonglong)dVar3 >> 0x20);
  }
  piVar1 = (int *)(param_1 + 0x108);
  iVar7 = *(int *)(*(longlong *)(param_1 + 0x30) + 0x38);
  if (0 < *(int *)(param_1 + 200)) {
    iVar7 = *(int *)(param_1 + 200);
  }
  lVar9 = 0;
  *(undefined4 *)(param_1 + 0xf4) = 0;
  FUN_180480640(param_1 + 0xe8,0,0x80);
  lVar11 = *(longlong *)(param_1 + 0x30);
  iVar8 = *(int *)(lVar11 + 0x100);
  if (*(int *)(lVar11 + 0x100) < *(int *)(lVar11 + 0x104)) {
    iVar8 = *(int *)(lVar11 + 0x104);
  }
  uVar2 = *(int *)(lVar11 + 0x38) * 4;
  if ((uVar2 - *(int *)(param_1 + 0x10c) != 0) || (iVar8 != *piVar1)) {
    uVar12 = (ulonglong)uVar2 + 3 & 0xfffffffc;
    lVar13 = (longlong)iVar8;
    uVar10 = (ulonglong)(iVar8 + 1) * 8 + 0xf & 0xfffffff0;
    lVar11 = uVar10 + (lVar13 * uVar12 + 8) * 4;
    *(longlong *)(param_1 + 0x110) = lVar11;
    FUN_180481140(param_1 + 0x120,lVar11,*(char *)(param_1 + 0x228) != '\0');
    *(longlong *)(param_1 + 0x118) = *(longlong *)(param_1 + 0x120);
    lVar11 = *(longlong *)(param_1 + 0x120) + uVar10;
    if (0 < iVar8) {
      do {
        *(longlong *)(*(longlong *)(param_1 + 0x118) + lVar9 * 8) = lVar11;
        lVar11 = lVar11 + uVar12 * 4;
        lVar9 = lVar9 + 1;
      } while (lVar9 < lVar13);
    }
    *(undefined8 *)(*(longlong *)(param_1 + 0x118) + lVar13 * 8) = 0;
    *(uint *)(param_1 + 0x10c) = uVar2;
    *piVar1 = iVar8;
  }
  FUN_180480870(piVar1);
  *(undefined4 *)(param_1 + 0x104) = 0;
  FUN_180480640(param_1 + 0xf8,0,0x80);
  lVar11 = *(longlong *)(param_1 + 0x30);
  iVar8 = *(int *)(lVar11 + 0x100);
  if (*(int *)(lVar11 + 0x100) < *(int *)(lVar11 + 0x104)) {
    iVar8 = *(int *)(lVar11 + 0x104);
  }
  FUN_180480760(param_1 + 0x230,iVar8,*(int *)(lVar11 + 0x38) << 2);
  FUN_1804806f0(param_1 + 0x230);
  plVar6 = *(longlong **)(param_1 + 0x30);
  plVar6[6] = CONCAT44(uVar15,uVar14);
  *(int *)(plVar6 + 7) = iVar7;
  (**(code **)(*plVar6 + 0x18))(plVar6,CONCAT44(uVar15,uVar14),iVar7);
  if (*(int *)(param_1 + 0xe0) < 0x800) {
    FUN_18049bab0(param_1 + 0xd8,0xc08);
  }
  *(undefined4 *)(param_1 + 0xe4) = 0;
  return 0;
}



############ FUN_ 1805794d0 size=78 ############

void FUN_1805794d0(longlong *param_1)

{
  if ((char)param_1[0x3b] == '\0') {
    FUN_180579970();
    if (param_1[0x3a] != 0) {
      if (*(code **)(*param_1 + 0x188) != _guard_check_icall) {
        (**(code **)(*param_1 + 0x188))(param_1);
      }
      *(undefined1 *)(param_1 + 0x3b) = 1;
    }
  }
  return;
}



############ FUN_ 181139590 size=48 ############

void FUN_181139590(longlong param_1)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(param_1 + 0x38);
  if ((plVar1 != (longlong *)0x0) && (*(code **)(*plVar1 + 0xb0) != _guard_check_icall)) {
    (**(code **)(*plVar1 + 0xb0))(plVar1,param_1);
  }
  return;
}



############ FUN_ 1811395d0 size=48 ############

void FUN_1811395d0(longlong param_1)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)(param_1 + 0x38);
  if ((plVar1 != (longlong *)0x0) && (*(code **)(*plVar1 + 0xa8) != _guard_check_icall)) {
    (**(code **)(*plVar1 + 0xa8))(plVar1,param_1);
  }
  return;
}



############ FUN_ 181249700 size=213 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181249700(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  uint *_Memory;
  undefined1 auStack_58 [32];
  undefined8 *local_38;
  undefined8 local_30;
  undefined **local_28;
  undefined8 local_20;
  ulonglong local_18;
  
  local_30 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = &PTR_vftable_18262b558;
  local_38 = param_1;
  puVar3 = (undefined8 *)FUN_181226ac0(&local_38,param_2,&local_28);
  cVar2 = *(char *)*puVar3;
  _Memory = (uint *)(local_38 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (cVar2 == '\0') {
    *param_1 = local_28;
    param_1[1] = local_20;
    local_28 = &PTR_vftable_18262b558;
    (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_20);
  }
  else {
    *param_1 = &PTR_vftable_18262b558;
    (**(code **)(*local_28 + 0xb0))(local_28,&local_20);
  }
}



############ FUN_ 181139610 size=117 ############

void FUN_181139610(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  code *pcVar2;
  
  *param_1 = Steinberg::Vst::EditorView::vftable;
  param_1[2] = Steinberg::Vst::EditorView::vftable;
  plVar1 = (longlong *)param_1[7];
  if (plVar1 != (longlong *)0x0) {
    pcVar2 = *(code **)(*plVar1 + 0xa0);
    if (pcVar2 != _guard_check_icall) {
      (*pcVar2)(plVar1,param_1,pcVar2,param_4,0xfffffffffffffffe);
    }
    (**(code **)(*(longlong *)param_1[7] + 0x10))();
  }
  param_1[2] = Steinberg::CPluginView::vftable;
  *param_1 = Steinberg::FObject::vftable;
  return;
}



############ FUN_ 1811efad0 size=298 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
               (longlong *param_1,undefined8 *param_2)

{
  uint *_Memory;
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  undefined1 auStack_68 [32];
  longlong local_48;
  undefined8 local_40;
  undefined1 local_30 [16];
  undefined **local_20;
  undefined8 local_18;
  ulonglong local_10;
  
  local_40 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48 = param_1[1];
  _Memory = (uint *)(local_48 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  FUN_181202350(param_1[2],&local_20,local_48);
  cVar2 = (**(code **)(*local_20 + 0x50))();
  if (cVar2 == '\0') {
    *param_2 = local_20;
    param_2[1] = local_18;
    local_20 = &PTR_vftable_18262b558;
    (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_18);
    if ((*_Memory & 0x30000000) != 0) {
    }
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
  }
  else {
    uVar3 = (**(code **)(*param_1 + 8))(param_1,local_30);
    (**(code **)(*param_1 + 0x18))(param_1,uVar3);
    (**(code **)(*param_1 + 8))(param_1,param_2);
    (**(code **)(*local_20 + 0xb0))(local_20,&local_18);
    if ((*_Memory & 0x30000000) != 0) {
    }
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
  }
  if (uVar1 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18058ee90 size=78 ############

void .?AVSoothe2XYSliderArea@@::vtbl___AVSoothe2XYSliderArea__(longlong *param_1)

{
  if ((char)param_1[99] == '\0') {
    FUN_18058eee0();
    if (param_1[0x62] != 0) {
      if (*(code **)(*param_1 + 0x160) != _guard_check_icall) {
        (**(code **)(*param_1 + 0x160))(param_1);
      }
      *(undefined1 *)(param_1 + 99) = 1;
    }
  }
  return;
}



############ FUN_ 18055e1f0 size=190 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
     vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
               (undefined8 param_1,undefined8 *param_2)

{
  char cVar1;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined8 *local_30;
  undefined **local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_38 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  local_28 = &PTR_vftable_18262b550;
  local_20[0] = 1;
  local_30 = param_2;
  cVar1 = (**(code **)(*(longlong *)*param_2 + 0xc0))((longlong *)*param_2,param_2 + 1,local_20);
  DAT_182673698 = 2 - (uint)(cVar1 != '\0');
  (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  local_28 = (undefined **)*param_2;
  (**(code **)(*local_28 + 0xb8))(local_28,local_20,param_2 + 1);
  FUN_1811d0a50(param_1,&local_28);
  (**(code **)(*(longlong *)*param_2 + 0xb0))((longlong *)*param_2,param_2 + 1);
}



############ FUN_ 18055e400 size=203 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18055e400(undefined8 param_1)

{
  char cVar1;
  undefined8 *puVar2;
  undefined1 auStack_58 [32];
  undefined8 local_38;
  undefined **local_30;
  undefined1 local_28 [8];
  longlong *local_20;
  undefined1 local_18 [8];
  ulonglong local_10;
  
  local_38 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_58;
  if (DAT_182673698 == 0) {
    local_30 = &PTR_vftable_18262b550;
    local_28[0] = 1;
    puVar2 = (undefined8 *)
             .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
             vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                       (param_1,&local_20);
    cVar1 = (**(code **)(*(longlong *)*puVar2 + 0xc0))
                      ((longlong *)*puVar2,puVar2 + 1,local_28,local_30);
    DAT_182673698 = 2 - (uint)(cVar1 != '\0');
    (**(code **)(*local_20 + 0xb0))(local_20,local_18);
    (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  }
  cVar1 = FUN_18055e2c0();
  if (((cVar1 == '\0') && (DAT_182673698 == 2)) && (DAT_18267369c != 1)) {
  }
}



############ FUN_ 18114dc20 size=479 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18114dc20(longlong param_1,undefined8 param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,longlong *param_7)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  uint *puVar5;
  undefined1 auStack_a8 [32];
  longlong local_88;
  longlong local_80;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_6c;
  longlong local_68;
  undefined8 local_60;
  longlong local_58;
  undefined **local_50;
  undefined8 local_48;
  longlong local_40;
  ushort local_38;
  ulonglong local_30;
  
  local_60 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  _ftime64_s(&local_40);
  local_80 = local_40 * 1000 + (ulonglong)local_38;
  local_70 = param_5;
  local_6c = param_6;
  local_68 = *param_7;
  if ((*(uint *)(local_68 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_68 + -0x10) = *(int *)(local_68 + -0x10) + 1;
    UNLOCK();
  }
  local_78 = param_3;
  local_74 = param_4;
  local_58 = param_1;
  iVar2 = _Mtx_lock(param_1);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  FUN_18114d800(param_1,param_2);
  puVar3 = (undefined8 *)FUN_180484970(&local_80,&local_88);
  local_50 = &PTR_vftable_18262b560;
  local_48 = *puVar3;
  *puVar3 = &DAT_1821dbf98;
  plVar4 = (longlong *)FUN_180485c50(*(longlong *)(param_1 + 0x58) + 0x10,param_2);
  iVar2 = *(int *)((longlong)plVar4 + 0xc) + 1;
  if ((int)plVar4[1] < iVar2) {
    FUN_180489a50(plVar4,*(int *)((longlong)plVar4 + 0xc) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)((longlong)plVar4 + 0xc);
  *(int *)((longlong)plVar4 + 0xc) = iVar2 + 1;
  puVar3 = (undefined8 *)((longlong)iVar2 * 0x10 + *plVar4);
  *puVar3 = local_50;
  puVar3[1] = local_48;
  local_50 = &PTR_vftable_18262b558;
  (**(code **)(PTR_vftable_18262b558 + 0xb0))(&PTR_vftable_18262b558,&local_48);
  puVar5 = (uint *)(local_88 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  iVar2 = _Mtx_unlock(param_1);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  puVar5 = (uint *)(local_68 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
}



############ FUN_ 18114dfe0 size=88 ############

void FUN_18114dfe0(longlong param_1,longlong param_2)

{
  longlong *plVar1;
  longlong lVar2;
  undefined1 local_res8 [32];
  
  lVar2 = 0;
  if (param_1 != -0x70) {
    lVar2 = param_1 + 0x78;
  }
  if (param_2 == lVar2) {
    plVar1 = *(longlong **)(param_1 + 0x40);
    local_res8[0] = *(char *)(param_1 + 0x10c) != '\0';
    if (plVar1 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    if (*(code **)(*plVar1 + 0x10) != _guard_check_icall) {
      (**(code **)(*plVar1 + 0x10))(plVar1,local_res8);
      return;
    }
  }
  return;
}



############ FUN_ 18113d5f0 size=65 ############

void FUN_18113d5f0(longlong *param_1,undefined4 param_2)

{
  if (DAT_182673668 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018113d610. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*DAT_182673668 + 0x30))(DAT_182673668,param_1,param_2);
    return;
  }
  if (*(code **)(*param_1 + 0x60) != _guard_check_icall) {
    (**(code **)(*param_1 + 0x60))();
  }
  return;
}



############ FUN_ 1812bd4f0 size=100 ############

void FUN_1812bd4f0(longlong param_1)

{
  code *pcVar1;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x52));
  if (*(char *)(param_1 + 0x50) != '\0') {
    *(undefined1 *)(param_1 + 0x50) = 0;
    pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0x20);
    if (pcVar1 != _guard_check_icall) {
      (*pcVar1)();
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001812bd548. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x52));
  return;
}



############ FUN_ 18113d640 size=65 ############

void FUN_18113d640(longlong *param_1,undefined4 param_2)

{
  if (DAT_182673668 != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00018113d660. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*DAT_182673668 + 0x28))(DAT_182673668,param_1,param_2);
    return;
  }
  if (*(code **)(*param_1 + 0x60) != _guard_check_icall) {
    (**(code **)(*param_1 + 0x60))();
  }
  return;
}



############ FUN_ 18113c0c0 size=101 ############

void FUN_18113c0c0(undefined8 *param_1,int param_2)

{
  longlong *local_res18 [2];
  
  if ((((param_2 != 2) && (local_res18[0] = (longlong *)0x0, param_1 != (undefined8 *)0x0)) &&
      ((**(code **)*param_1)(param_1,&DAT_18262b050,local_res18), local_res18[0] != (longlong *)0x0)
      ) && (((**(code **)(*local_res18[0] + 0x10))(), local_res18[0] != (longlong *)0x0 &&
            (*(code **)(*local_res18[0] + 0x60) != _guard_check_icall)))) {
    (**(code **)(*local_res18[0] + 0x60))(local_res18[0],param_2);
  }
  return;
}



############ FUN_ 1812bc290 size=620 ############

void FUN_1812bc290(longlong param_1)

{
  longlong lVar1;
  code *pcVar2;
  longlong *plVar3;
  longlong *plVar4;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  LOCK();
  *(undefined4 *)(*(longlong *)(param_1 + 0x188) + 0x18) = 0;
  UNLOCK();
  LOCK();
  *(undefined1 *)(param_1 + 0x1b8) = 0;
  UNLOCK();
  plVar4 = *(longlong **)(param_1 + 400);
  plVar3 = plVar4 + *(int *)(param_1 + 0x19c);
  for (; plVar4 != plVar3; plVar4 = plVar4 + 1) {
    lVar1 = *plVar4;
    EnterCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x52));
    if (*(char *)(lVar1 + 0x50) != '\0') {
      *(undefined1 *)(lVar1 + 0x50) = 0;
      pcVar2 = *(code **)(**(longlong **)(lVar1 + 0x28) + 0x20);
      if (pcVar2 != _guard_check_icall) {
        (*pcVar2)();
      }
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x52));
  }
  lVar1 = *(longlong *)(param_1 + 0x1a8);
  if (lVar1 != 0) {
    if ((*(int *)(lVar1 + 0xc) != 1) || (*(int *)(lVar1 + 8) != 1)) {
      *(undefined8 *)(lVar1 + 0x10) = 0x40;
      FUN_180481140(lVar1 + 0x20,0x40,*(char *)(lVar1 + 0x128) != '\0');
      plVar3 = *(longlong **)(lVar1 + 0x20);
      *(longlong **)(lVar1 + 0x18) = plVar3;
      *plVar3 = (longlong)(plVar3 + 2);
      *(undefined8 *)(*(longlong *)(lVar1 + 0x18) + 8) = 0;
      *(undefined4 *)(lVar1 + 0xc) = 1;
      *(undefined4 *)(lVar1 + 8) = 1;
    }
    if ((*(int *)(lVar1 + 0x134) != 1) || (*(int *)(lVar1 + 0x130) != 1)) {
      *(undefined8 *)(lVar1 + 0x138) = 0x40;
      FUN_180481140(lVar1 + 0x148,0x40,*(char *)(lVar1 + 0x250) != '\0');
      plVar3 = *(longlong **)(lVar1 + 0x148);
      *(longlong **)(lVar1 + 0x140) = plVar3;
      *plVar3 = (longlong)(plVar3 + 2);
      *(undefined8 *)(*(longlong *)(lVar1 + 0x140) + 8) = 0;
      *(undefined4 *)(lVar1 + 0x134) = 1;
      *(undefined4 *)(lVar1 + 0x130) = 1;
    }
    *(undefined8 *)(lVar1 + 600) = 0;
    *(undefined8 *)(lVar1 + 0x260) = 0;
    *(undefined4 *)(lVar1 + 0x274) = 0;
    FUN_1804de250(lVar1 + 0x278);
    if (*(int *)(lVar1 + 0x280) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(lVar1 + 0x278));
    }
    *(undefined4 *)(lVar1 + 0x280) = 0;
  }
  lVar1 = *(longlong *)(param_1 + 0x1b0);
  if (lVar1 != 0) {
    FUN_180480760(lVar1 + 8,1,1);
    FUN_180480760(lVar1 + 0x130,1,1);
    *(undefined8 *)(lVar1 + 600) = 0;
    *(undefined8 *)(lVar1 + 0x260) = 0;
    *(undefined4 *)(lVar1 + 0x274) = 0;
    FUN_1804de250(lVar1 + 0x278);
    if (*(int *)(lVar1 + 0x280) != 0) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(lVar1 + 0x278));
    }
    *(undefined4 *)(lVar1 + 0x280) = 0;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812bc4fb. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  return;
}



############ FUN_ 18053c590 size=948 ############

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

undefined8 * FUN_18053c590(undefined8 *param_1,undefined8 param_2)

{
  uint *_Memory;
  undefined8 *puVar1;
  undefined8 uVar2;
  int iVar3;
  int iVar4;
  longlong *plVar5;
  void *pvVar6;
  uint uVar7;
  undefined8 *local_res8;
  longlong local_res10;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res10,"FLAC file");
  iVar4 = 0;
  *param_1 = juce::AudioFormatReader::vftable;
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  _Memory = (uint *)(local_res10 + -0x10);
  *(undefined1 *)((longlong)param_1 + 0x24) = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = 1;
  param_1[10] = param_2;
  param_1[0xb] = local_res10;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar7 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::FlacReader::vftable;
  param_1[0xf] = param_1 + 0x11;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0x10] = 0;
  *(undefined1 *)(param_1 + 0x31) = 0;
  param_1[0x32] = 0;
  *(undefined2 *)(param_1 + 0x33) = 0;
  param_1[3] = 0;
  plVar5 = (longlong *)FUN_1813a22f0();
  param_1[0xc] = plVar5;
  if (*(int *)*plVar5 == 9) {
    FUN_1813a9b70(plVar5[1] + 0xf7c);
    *(code **)(plVar5[1] + 0x40) = FUN_1813a4ae0;
    *(code **)(plVar5[1] + 0x48) = FUN_1813a4000;
    *(code **)(plVar5[1] + 0x50) = FUN_1813a4ae0;
    puVar1 = *(undefined8 **)(plVar5[1] + 0x68);
    *(undefined8 *)((longlong)puVar1 + 0xc) = 0;
    *(undefined8 *)((longlong)puVar1 + 0x14) = 0;
    *(undefined4 *)(puVar1 + 1) = 0x800;
    pvVar6 = malloc(0x2000);
    *puVar1 = pvVar6;
    if (pvVar6 == (void *)0x0) {
      iVar4 = 3;
      *(undefined4 *)*plVar5 = 8;
    }
    else {
      puVar1[6] = plVar5;
      puVar1[5] = FUN_18139e0e0;
      *(code **)plVar5[1] = FUN_18053ceb0;
      *(code **)(plVar5[1] + 8) = FUN_18053cee0;
      *(code **)(plVar5[1] + 0x10) = FUN_18053cf00;
      *(code **)(plVar5[1] + 0x18) = FUN_18053cf30;
      *(code **)(plVar5[1] + 0x20) = FUN_18053cf50;
      *(code **)(plVar5[1] + 0x28) = FUN_18053cf70;
      *(code **)(plVar5[1] + 0x30) = FUN_18053cf90;
      *(code **)(plVar5[1] + 0x38) = _guard_check_icall;
      *(undefined8 **)(plVar5[1] + 0x58) = param_1;
      *(undefined4 *)(plVar5[1] + 0x1bc) = 0;
      *(undefined4 *)(plVar5[1] + 0x1b8) = 0;
      *(undefined8 *)(plVar5[1] + 0x1c0) = 0;
      *(undefined4 *)(plVar5[1] + 0x1c8) = 0;
      *(undefined4 *)(plVar5[1] + 0xf78) = 0;
      *(undefined4 *)(plVar5[1] + 0xfe8) = *(undefined4 *)(*plVar5 + 0x1c);
      *(undefined4 *)(plVar5[1] + 0xff0) = 0;
      *(undefined4 *)(plVar5[1] + 0xfec) = 1;
      iVar3 = FUN_1813a1ac0(plVar5);
      if (iVar3 == 0) {
        iVar4 = 3;
      }
    }
  }
  else {
    iVar4 = 5;
  }
  *(bool *)(param_1 + 0x33) = iVar4 == 0;
  if (((iVar4 == 0) && (FUN_1813a1980(param_1[0xc]), param_1[3] == 0)) && (0.0 < (double)param_1[1])
     ) {
    puVar1 = (undefined8 *)param_1[0xc];
    *(undefined1 *)((longlong)param_1 + 0x199) = 1;
    uVar7 = *(uint *)*puVar1;
    if (uVar7 < 8) {
      do {
        switch((ulonglong)(&switchD_18053c8dd::switchdataD_18053c944)[(int)uVar7] + 0x180000000) {
        case 0x18053c8df:
          iVar4 = FUN_1813a1310(puVar1);
          break;
        case 0x18053c8e9:
          iVar4 = FUN_1813a0d90(puVar1);
          break;
        case 0x18053c8f3:
          iVar4 = FUN_18139ffc0(puVar1);
          break;
        case 0x18053c8fd:
          iVar4 = FUN_18139fa20(puVar1,&local_res8);
          break;
        case 0x18053c918:
          goto switchD_18053c8dd_caseD_8053c918;
        }
        if ((iVar4 == 0) || (uVar7 = *(uint *)*puVar1, 7 < uVar7)) break;
      } while( true );
    }
switchD_18053c8dd_caseD_8053c918:
    uVar2 = param_1[3];
    *(undefined1 *)((longlong)param_1 + 0x199) = 0;
    FUN_1813a1ac0(param_1[0xc]);
    FUN_1813a1980(param_1[0xc]);
    param_1[3] = uVar2;
  }
  return param_1;
}



############ FUN_ 181131914 size=48 ############

/* Library Function - Single Match
    __scrt_dllmain_uninitialize_c
   
   Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */

void __scrt_dllmain_uninitialize_c(void)

{
  int iVar1;
  
  iVar1 = __scrt_is_ucrt_dll_in_use();
  if (iVar1 != 0) {
    _execute_onexit_table(&DAT_182672fd8);
    return;
  }
  iVar1 = .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  if (iVar1 == 0) {
    _cexit();
  }
  return;
}



############ FUN_ 180523060 size=968 ############

void FUN_180523060(longlong *param_1,undefined8 param_2,longlong param_3)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  int iVar6;
  longlong *plVar7;
  longlong lVar8;
  longlong *plVar9;
  int iVar10;
  longlong *_Src;
  longlong *plVar11;
  size_t _Size;
  longlong *plVar12;
  bool bVar13;
  bool bVar14;
  
  if (0x20 < param_3) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    lVar8 = (param_3 - 0x21U >> 5) + 1;
    _Src = param_1;
    do {
      param_1 = _Src + 0x20;
      if ((_Src != param_1) && (plVar12 = _Src + 1, plVar12 != param_1)) {
        _Size = (longlong)plVar12 - (longlong)_Src;
LAB_1805230f5:
        lVar3 = *plVar12;
        lVar4 = *_Src;
        plVar7 = *(longlong **)(lVar3 + 0x90);
        plVar9 = plVar7 + (longlong)*(int *)(lVar3 + 0x9c) * 3;
        for (; plVar7 != plVar9; plVar7 = plVar7 + 3) {
          if (*plVar7 == DAT_182673c28) {
            plVar7 = plVar7 + 1;
            if (plVar7 != (longlong *)0x0) goto LAB_180523144;
            break;
          }
        }
        plVar7 = (longlong *)FUN_181244160();
LAB_180523144:
        iVar5 = (**(code **)(*(longlong *)*plVar7 + 8))((longlong *)*plVar7,plVar7 + 1);
        plVar7 = *(longlong **)(lVar4 + 0x90);
        iVar10 = 0x3fffffff;
        if (0 < iVar5) {
          iVar10 = iVar5;
        }
        plVar9 = plVar7 + (longlong)*(int *)(lVar4 + 0x9c) * 3;
        for (; plVar7 != plVar9; plVar7 = plVar7 + 3) {
          if (*plVar7 == DAT_182673c28) {
            plVar7 = plVar7 + 1;
            if (plVar7 != (longlong *)0x0) goto LAB_1805231a3;
            break;
          }
        }
        plVar7 = (longlong *)FUN_181244160();
LAB_1805231a3:
        iVar6 = (**(code **)(*(longlong *)*plVar7 + 8))((longlong *)*plVar7,plVar7 + 1);
        iVar5 = 0x3fffffff;
        if (0 < iVar6) {
          iVar5 = iVar6;
        }
        bVar14 = SBORROW4(iVar10,iVar5);
        bVar13 = iVar10 - iVar5 < 0;
        if (iVar10 == iVar5) {
          iVar5 = *(int *)(lVar3 + 0x24);
          iVar10 = *(int *)(lVar4 + 0x24);
          bVar14 = SBORROW4(iVar5,iVar10);
          bVar13 = iVar5 - iVar10 < 0;
          if (iVar5 == iVar10) {
            bVar14 = SBORROW4(*(int *)(lVar3 + 0x20),*(int *)(lVar4 + 0x20));
            bVar13 = *(int *)(lVar3 + 0x20) - *(int *)(lVar4 + 0x20) < 0;
          }
        }
        plVar7 = plVar12;
        if (bVar14 == bVar13) {
          do {
            plVar9 = *(longlong **)(lVar3 + 0x90);
            plVar11 = plVar7 + -1;
            lVar4 = *plVar11;
            plVar2 = plVar9 + (longlong)*(int *)(lVar3 + 0x9c) * 3;
            for (; plVar9 != plVar2; plVar9 = plVar9 + 3) {
              if (*plVar9 == DAT_182673c28) {
                plVar9 = plVar9 + 1;
                if (plVar9 != (longlong *)0x0) goto LAB_180523269;
                break;
              }
            }
            if ((*(int *)(*plVar1 + 0xc) < DAT_18267af7c) &&
               (_Init_thread_header(&DAT_18267af7c), DAT_18267af7c == -1)) {
              DAT_18267af40 = &PTR_vftable_18262b558;
              atexit((_func_5014 *)&LAB_181a4a6e0);
              _Init_thread_footer(&DAT_18267af7c);
            }
            plVar9 = (longlong *)&DAT_18267af40;
LAB_180523269:
            iVar5 = (**(code **)(*(longlong *)*plVar9 + 8))((longlong *)*plVar9,plVar9 + 1);
            plVar9 = *(longlong **)(lVar4 + 0x90);
            iVar10 = 0x3fffffff;
            if (0 < iVar5) {
              iVar10 = iVar5;
            }
            plVar2 = plVar9 + (longlong)*(int *)(lVar4 + 0x9c) * 3;
            for (; plVar9 != plVar2; plVar9 = plVar9 + 3) {
              if (*plVar9 == DAT_182673c28) {
                plVar9 = plVar9 + 1;
                if (plVar9 != (longlong *)0x0) goto LAB_1805232d8;
                break;
              }
            }
            if ((*(int *)(*plVar1 + 0xc) < DAT_18267af7c) &&
               (_Init_thread_header(&DAT_18267af7c), DAT_18267af7c == -1)) {
              DAT_18267af40 = &PTR_vftable_18262b558;
              atexit((_func_5014 *)&LAB_181a4a6e0);
              _Init_thread_footer(&DAT_18267af7c);
            }
            plVar9 = (longlong *)&DAT_18267af40;
LAB_1805232d8:
            iVar6 = (**(code **)(*(longlong *)*plVar9 + 8))((longlong *)*plVar9,plVar9 + 1);
            iVar5 = 0x3fffffff;
            if (0 < iVar6) {
              iVar5 = iVar6;
            }
            bVar14 = SBORROW4(iVar10,iVar5);
            bVar13 = iVar10 - iVar5 < 0;
            if (iVar10 == iVar5) {
              iVar5 = *(int *)(lVar3 + 0x24);
              iVar10 = *(int *)(lVar4 + 0x24);
              bVar14 = SBORROW4(iVar5,iVar10);
              bVar13 = iVar5 - iVar10 < 0;
              if (iVar5 == iVar10) {
                bVar14 = SBORROW4(*(int *)(lVar3 + 0x20),*(int *)(lVar4 + 0x20));
                bVar13 = *(int *)(lVar3 + 0x20) - *(int *)(lVar4 + 0x20) < 0;
              }
            }
            if (bVar14 == bVar13) goto LAB_180523316;
            *plVar7 = *plVar11;
            plVar7 = plVar11;
          } while( true );
        }
        memmove((void *)((longlong)plVar12 + (8 - _Size)),_Src,_Size);
        *_Src = lVar3;
        goto LAB_18052332e;
      }
LAB_180523356:
      lVar8 = lVar8 + -1;
      _Src = param_1;
    } while (lVar8 != 0);
  }
  FUN_180520650(param_1,param_2);
  return;
LAB_180523316:
  *plVar7 = lVar3;
LAB_18052332e:
  plVar12 = plVar12 + 1;
  _Size = _Size + 8;
  if (plVar12 == param_1) goto LAB_180523356;
  goto LAB_1805230f5;
}



############ FUN_ 180523430 size=790 ############

void FUN_180523430(longlong *param_1,longlong param_2,longlong *param_3,longlong param_4,
                  longlong *param_5)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong lVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  size_t _Size;
  int iVar11;
  bool bVar12;
  bool bVar13;
  longlong local_res20;
  
  local_res20 = param_4;
  if (param_4 < (longlong)param_5) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    plVar9 = param_5;
    do {
      param_5 = (longlong *)((longlong)plVar9 - local_res20);
      plVar2 = param_1 + local_res20;
      plVar8 = (longlong *)&param_5;
      if (local_res20 <= (longlong)param_5) {
        plVar8 = &local_res20;
      }
      plVar9 = (longlong *)((longlong)param_5 - *plVar8);
      param_5 = plVar2 + *plVar8;
      plVar8 = plVar2;
LAB_1805234d0:
      do {
        lVar4 = *plVar8;
        lVar5 = *param_1;
        plVar10 = *(longlong **)(lVar4 + 0x90);
        plVar3 = plVar10 + (longlong)*(int *)(lVar4 + 0x9c) * 3;
        for (; plVar10 != plVar3; plVar10 = plVar10 + 3) {
          if (*plVar10 == DAT_182673c28) {
            plVar10 = plVar10 + 1;
            if (plVar10 != (longlong *)0x0) goto LAB_18052353b;
            break;
          }
        }
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af7c) &&
           (_Init_thread_header(&DAT_18267af7c), DAT_18267af7c == -1)) {
          DAT_18267af40 = &PTR_vftable_18262b558;
          atexit((_func_5014 *)&LAB_181a4a6e0);
          _Init_thread_footer(&DAT_18267af7c);
        }
        plVar10 = (longlong *)&DAT_18267af40;
LAB_18052353b:
        iVar6 = (**(code **)(*(longlong *)*plVar10 + 8))((longlong *)*plVar10,plVar10 + 1);
        plVar10 = *(longlong **)(lVar5 + 0x90);
        iVar11 = 0x3fffffff;
        if (0 < iVar6) {
          iVar11 = iVar6;
        }
        plVar3 = plVar10 + (longlong)*(int *)(lVar5 + 0x9c) * 3;
        for (; plVar10 != plVar3; plVar10 = plVar10 + 3) {
          if (*plVar10 == DAT_182673c28) {
            plVar10 = plVar10 + 1;
            if (plVar10 != (longlong *)0x0) goto LAB_1805235ae;
            break;
          }
        }
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af7c) &&
           (_Init_thread_header(&DAT_18267af7c), DAT_18267af7c == -1)) {
          DAT_18267af40 = &PTR_vftable_18262b558;
          atexit((_func_5014 *)&LAB_181a4a6e0);
          _Init_thread_footer(&DAT_18267af7c);
        }
        plVar10 = (longlong *)&DAT_18267af40;
LAB_1805235ae:
        iVar7 = (**(code **)(*(longlong *)*plVar10 + 8))((longlong *)*plVar10,plVar10 + 1);
        iVar6 = 0x3fffffff;
        if (0 < iVar7) {
          iVar6 = iVar7;
        }
        bVar13 = SBORROW4(iVar11,iVar6);
        bVar12 = iVar11 - iVar6 < 0;
        if (iVar11 == iVar6) {
          iVar6 = *(int *)(lVar4 + 0x24);
          iVar11 = *(int *)(lVar5 + 0x24);
          bVar13 = SBORROW4(iVar6,iVar11);
          bVar12 = iVar6 - iVar11 < 0;
          if (iVar6 == iVar11) {
            bVar13 = SBORROW4(*(int *)(lVar4 + 0x20),*(int *)(lVar5 + 0x20));
            bVar12 = *(int *)(lVar4 + 0x20) - *(int *)(lVar5 + 0x20) < 0;
          }
        }
        if (bVar13 != bVar12) {
          lVar4 = *plVar8;
          plVar8 = plVar8 + 1;
          *param_3 = lVar4;
          param_3 = param_3 + 1;
          if (plVar8 == param_5) {
            memmove(param_3,param_1,(longlong)plVar2 - (longlong)param_1);
            param_3 = (longlong *)((longlong)param_3 + ((longlong)plVar2 - (longlong)param_1));
            goto LAB_180523663;
          }
          goto LAB_1805234d0;
        }
        lVar4 = *param_1;
        param_1 = param_1 + 1;
        *param_3 = lVar4;
        param_3 = param_3 + 1;
      } while (param_1 != plVar2);
      _Size = (longlong)param_5 - (longlong)plVar8;
      memmove(param_3,plVar8,_Size);
      param_3 = (longlong *)((longlong)param_3 + _Size);
LAB_180523663:
      param_1 = param_5;
    } while (local_res20 < (longlong)plVar9);
  }
  memmove(param_3,param_1,param_2 - (longlong)param_1);
  return;
}



############ FUN_ 1812bd3a0 size=111 ############

bool FUN_1812bd3a0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  code *pcVar1;
  longlong *plVar2;
  float fVar3;
  
  plVar2 = *(longlong **)(param_1 + 0x28);
  if (((plVar2 != (longlong *)0x0) &&
      (pcVar1 = *(code **)(*plVar2 + 0x98),
      pcVar1 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
     (plVar2 = (longlong *)(*pcVar1)(plVar2,pcVar1,param_3,param_4,0xfffffffffffffffe),
     plVar2 != (longlong *)0x0)) {
    fVar3 = (float)(**(code **)(*plVar2 + 8))(plVar2);
    if (fVar3 != 0.0) {
      return true;
    }
    return false;
  }
  return *(char *)(param_1 + 0x51) != '\0';
}



############ FUN_ 18053d660 size=1002 ############

undefined8 * FUN_18053d660(undefined8 *param_1,undefined8 param_2)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  ulonglong uVar3;
  longlong lVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  longlong local_res10;
  undefined8 *puVar9;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  
  FUN_18049c4e0(&local_res10,"Ogg-Vorbis file");
  *param_1 = juce::AudioFormatReader::vftable;
  uVar3 = 0;
  param_1[1] = 0;
  *(undefined4 *)(param_1 + 2) = 0;
  param_1[3] = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined1 *)((longlong)param_1 + 0x24) = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = 1;
  param_1[10] = param_2;
  param_1[0xb] = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::OggReader::vftable;
  param_1[0x79] = 0;
  param_1[0x7a] = 0;
  param_1[0x7b] = param_1 + 0x7d;
  param_1[0x7c] = 0;
  *(undefined1 *)(param_1 + 0x9d) = 0;
  param_1[0x9e] = 0;
  param_1[1] = 0;
  *(undefined1 *)((longlong)param_1 + 0x24) = 1;
  param_1[0x75] = FUN_18053df80;
  param_1[0x76] = FUN_18053dfb0;
  param_1[0x77] =
       .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
       vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____;
  param_1[0x78] = &LAB_18053e000;
  local_58 = param_1[0x75];
  uStack_50 = param_1[0x76];
  local_48 = *(undefined4 *)(param_1 + 0x77);
  uStack_44 = *(undefined4 *)((longlong)param_1 + 0x3bc);
  uStack_40 = *(undefined4 *)(param_1 + 0x78);
  uStack_3c = *(undefined4 *)((longlong)param_1 + 0x3c4);
  puVar9 = &local_58;
  iVar2 = FUN_181371680(param_1[10],param_1 + 0xc);
  if (iVar2 != 0) {
    return param_1;
  }
  iVar2 = FUN_1813714a0(param_1 + 0xc);
  if (iVar2 != 0) {
    return param_1;
  }
  if ((*(int *)(param_1 + 0xd) == 0) || (*(int *)(param_1 + 0x1c) < 3)) {
    lVar4 = param_1[0x19];
  }
  else {
    lVar4 = param_1[0x19] + (longlong)*(int *)(param_1 + 0x1d) * 0x28;
  }
  if ((*(int *)(param_1 + 0xd) == 0) || (*(int *)(param_1 + 0x1c) < 3)) {
    lVar5 = param_1[0x1a];
  }
  else {
    lVar5 = (longlong)*(int *)(param_1 + 0x1d) * 0x20 + param_1[0x1a];
  }
  FUN_18053da50(param_1,lVar5,"ENCODER","encoder",puVar9);
  FUN_18053da50(param_1,lVar5,"TITLE","id3title");
  FUN_18053da50(param_1,lVar5,"ARTIST","id3artist");
  FUN_18053da50(param_1,lVar5,"ALBUM","id3album");
  FUN_18053da50(param_1,lVar5,"COMMENT","id3comment");
  FUN_18053da50(param_1,lVar5,&DAT_1824ace18,"id3date");
  FUN_18053da50(param_1,lVar5,"GENRE","id3genre");
  FUN_18053da50(param_1,lVar5,"TRACKNUMBER","id3trackNumber");
  if ((1 < *(int *)(param_1 + 0x1c)) && (*(int *)(param_1 + 0xd) != 0)) {
    uVar1 = *(uint *)(param_1 + 0x14);
    uVar6 = (ulonglong)uVar1;
    if (-1 < (int)uVar1) {
      uVar8 = uVar3;
      uVar7 = uVar3;
      if (0 < (int)uVar1) {
        do {
          iVar2 = (int)uVar8;
          lVar5 = FUN_181371270(param_1 + 0xc,uVar8);
          uVar7 = uVar7 + lVar5;
          uVar8 = (ulonglong)(iVar2 + 1U);
        } while ((int)(iVar2 + 1U) < (int)uVar6);
      }
      goto LAB_18053d940;
    }
  }
  uVar7 = 0xffffffffffffff7d;
LAB_18053d940:
  uVar7 = uVar7 & 0xffffffff;
  param_1[3] = uVar7;
  iVar2 = *(int *)(lVar4 + 4);
  lVar5 = (longlong)iVar2;
  *(int *)(param_1 + 4) = iVar2;
  *(undefined4 *)(param_1 + 2) = 0x10;
  param_1[1] = (double)*(int *)(lVar4 + 8);
  if (0x1000 < uVar7) {
    uVar7 = 0x1000;
  }
  if (((int)uVar7 != *(int *)((longlong)param_1 + 0x3cc)) || (iVar2 != *(int *)(param_1 + 0x79))) {
    uVar8 = uVar7 + 3 & 0xfffffffc;
    uVar6 = (ulonglong)(iVar2 + 1) * 8 + 0xf & 0xfffffff0;
    lVar4 = uVar6 + (uVar8 * lVar5 + 8) * 4;
    param_1[0x7a] = lVar4;
    FUN_180481140(param_1 + 0x7c,lVar4,*(char *)(param_1 + 0x9d) != '\0');
    param_1[0x7b] = param_1[0x7c];
    lVar4 = uVar6 + param_1[0x7c];
    if (0 < iVar2) {
      do {
        *(longlong *)(param_1[0x7b] + uVar3 * 8) = lVar4;
        lVar4 = lVar4 + uVar8 * 4;
        uVar3 = uVar3 + 1;
      } while ((longlong)uVar3 < lVar5);
    }
    *(undefined8 *)(param_1[0x7b] + lVar5 * 8) = 0;
    *(int *)((longlong)param_1 + 0x3cc) = (int)uVar7;
    *(int *)(param_1 + 0x79) = iVar2;
  }
  return param_1;
}



############ FUN_ 180538484 size=12 ############

void .?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(longlong param_1)

{
  .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__(param_1 + -0x148);
  return;
}



############ FUN_ 181353210 size=328 ############

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

void FUN_181353210(undefined8 param_1)

{
  uint uVar1;
  longlong unaff_RDI;
  undefined1 auStack_98 [48];
  undefined8 local_68;
  undefined4 local_5c;
  uint local_58;
  undefined8 local_50;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  uVar1 = (uint)&stack0x00000000 & 0x13ff;
  uVar1 = ((uVar1 + 1) * uVar1 + 7) % 0x51;
  uVar1 = (int)(-uVar1 | uVar1) >> 0x1f;
  local_58 = ((int)(-uVar1 | uVar1) >> 0x1f) * -0x4852 ^ 0x45e2;
  local_5c = 0x2a0;
  local_68 = param_1;
  local_50 = param_1;
  FUN_181353cc6();
  FUN_18135335c();
                    /* WARNING: Could not recover jumptable at 0x00018135346f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(unaff_RDI + 0x76408))();
  return;
}



############ FUN_ 1804df300 size=439 ############

void FUN_1804df300(longlong param_1,longlong param_2,undefined8 param_3)

{
  longlong lVar1;
  longlong *plVar2;
  code *pcVar3;
  char cVar4;
  int iVar5;
  longlong lVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)(param_1 + 0x10) + 0x44) != 1) {
    FUN_1804d5f80(param_1 + 0x30);
    cVar4 = FUN_1812bd3a0(*(undefined8 *)(param_1 + 8));
    if (cVar4 == '\0') {
      FUN_1804e03c0(*(undefined8 *)(param_1 + 8),param_1 + 0x30,param_3);
    }
    else {
      FUN_1804e0350();
    }
    FUN_1804d6110(param_2,param_1 + 0x30);
    return;
  }
  cVar4 = FUN_1812bd3a0(*(undefined8 *)(param_1 + 8));
  lVar1 = *(longlong *)(param_1 + 8);
  if (cVar4 != '\0') {
    EnterCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x52));
    plVar2 = *(longlong **)(lVar1 + 0x28);
    if (*(code **)(*plVar2 + 0x40) ==
        .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
        vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      if ((*(int *)((longlong)plVar2 + 0xdc) == 0) || (*(longlong *)plVar2[0x1a] == 0)) {
        iVar5 = 0;
      }
      else {
        iVar5 = *(int *)(*(longlong *)plVar2[0x1a] + 0x8c);
      }
      if (iVar5 < *(int *)((longlong)plVar2 + 0x104)) {
        lVar6 = (longlong)iVar5 * 8;
        do {
          if (*(char *)(param_2 + 0x120) == '\0') {
            memset(*(void **)(lVar6 + *(longlong *)(param_2 + 0x10)),0,
                   (longlong)*(int *)(param_2 + 4) << 3);
          }
          iVar5 = iVar5 + 1;
          lVar6 = lVar6 + 8;
        } while (iVar5 < *(int *)((longlong)plVar2 + 0x104));
      }
    }
    else {
      (**(code **)(*plVar2 + 0x40))(plVar2,param_2,param_3);
    }
                    /* WARNING: Could not recover jumptable at 0x0001804df407. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x52));
    return;
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x52));
  pcVar3 = *(code **)(**(longlong **)(lVar1 + 0x28) + 0x30);
  if (pcVar3 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    (*pcVar3)(*(longlong **)(lVar1 + 0x28),param_2,param_3,pcVar3,uVar7);
  }
                    /* WARNING: Could not recover jumptable at 0x0001804df44b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(lVar1 + 0x52));
  return;
}



############ FUN_ 18135fd30 size=51 ############

void .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
     vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____
               (longlong param_1,longlong param_2)

{
  .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__();
                    /* WARNING: Could not recover jumptable at 0x00018135fd5c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(longlong **)(param_1 + 0x168) + 200))
            (*(longlong **)(param_1 + 0x168),*(undefined4 *)(param_2 + 4));
  return;
}



############ FUN_ 181254db0 size=268 ############

void FUN_181254db0(undefined8 *param_1,longlong param_2,undefined4 *param_3,undefined8 param_4)

{
  code *pcVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  void *local_28;
  ulonglong local_20;
  undefined8 local_18;
  undefined4 local_10;
  
  if (*(char *)*param_1 != '\0') {
    puVar3 = (undefined4 *)FUN_1804ab070(param_3,&local_28,param_3,param_4,0xfffffffffffffffe);
    local_38 = *puVar3;
    uStack_34 = puVar3[1];
    uStack_30 = puVar3[2];
    uStack_2c = puVar3[3];
    cVar2 = (**(code **)(**(longlong **)(param_2 + 8) + 0x50))
                      (*(longlong **)(param_2 + 8),&local_38);
    if (cVar2 != '\0') {
      pcVar1 = *(code **)(**(longlong **)(param_2 + 8) + 0xe8);
      if ((pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                     vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) ||
         (cVar2 = (*pcVar1)(*(longlong **)(param_2 + 8),param_1,param_3), cVar2 == '\0')) {
        local_28 = (void *)0x0;
        local_20 = 0;
        local_18 = 0;
        local_10 = 9;
        FUN_18124e420(&local_28,param_1,param_3[2],DAT_1824c4610);
        local_38 = *param_3;
        uStack_34 = param_3[1];
        uStack_30 = param_3[2];
        uStack_2c = param_3[3];
        FUN_18124e500(&local_28,param_2,&local_38);
        FUN_1804ae9d0(&local_28);
        local_20 = local_20 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
        free(local_28);
      }
    }
  }
  return;
}



############ FUN_ 18059a460 size=546 ############

longlong * FUN_18059a460(longlong param_1,longlong *param_2,undefined8 param_3,int param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong lVar1;
  undefined8 *puVar2;
  char cVar3;
  undefined1 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  undefined8 uVar10;
  LPCRITICAL_SECTION p_Var11;
  float local_48 [5];
  undefined4 local_34;
  
  uVar10 = 0xfffffffffffffffe;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x24);
  p_Var11 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  plVar6 = *(longlong **)(param_1 + 8);
  plVar5 = plVar6 + *(int *)(param_1 + 0x14);
  for (; plVar6 != plVar5; plVar6 = plVar6 + 1) {
    lVar7 = *plVar6;
    if ((*(int *)(lVar7 + 0x20) == param_4) &&
       (cVar3 = FUN_181252880(lVar7 + 0x10,param_3), cVar3 != '\0')) {
      LOCK();
      *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1;
      UNLOCK();
      LOCK();
      *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
      UNLOCK();
      *param_2 = lVar7;
      goto LAB_18059a65b;
    }
  }
  LOCK();
  *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
  UNLOCK();
  lVar7 = 0;
  if (*(int *)(param_1 + 0x14) << 4 < *(int *)(param_1 + 0x1c) + *(int *)(param_1 + 0x20)) {
    if (*(int *)(param_1 + 0x1c) < *(int *)(param_1 + 0x20) * 2) {
      FUN_18059a360(param_1,0x20);
    }
    LOCK();
    *(undefined4 *)(param_1 + 0x1c) = 0;
    UNLOCK();
    LOCK();
    *(undefined4 *)(param_1 + 0x20) = 0;
    UNLOCK();
  }
  iVar9 = 0x7fffffff;
  plVar6 = *(longlong **)(param_1 + 8);
  plVar5 = plVar6 + *(int *)(param_1 + 0x14);
  lVar8 = lVar7;
  if (plVar6 != plVar5) {
    do {
      lVar1 = *plVar6;
      if ((*(int *)(lVar1 + 0x24) <= iVar9) && (*(int *)(lVar1 + 8) == 1)) {
        iVar9 = *(int *)(lVar1 + 0x24);
        lVar8 = lVar1;
      }
      plVar6 = plVar6 + 1;
    } while (plVar6 != plVar5);
    if (lVar8 != 0) {
      LOCK();
      *(int *)(lVar8 + 8) = *(int *)(lVar8 + 8) + 1;
      UNLOCK();
      lVar7 = lVar8;
      goto LAB_18059a5b6;
    }
  }
  FUN_18059a360(param_1,0x20,0,iVar9,uVar10,p_Var11);
  if (0 < *(int *)(param_1 + 0x14)) {
    lVar7 = *(longlong *)
             (*(longlong *)(param_1 + 8) + (longlong)(*(int *)(param_1 + 0x14) + -1) * 8);
  }
  if (lVar7 != 0) {
    LOCK();
    *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1;
    UNLOCK();
  }
LAB_18059a5b6:
  FUN_181252990(lVar7 + 0x10,param_3);
  plVar5 = (longlong *)FUN_181252280(param_3);
  if (*(code **)(*plVar5 + 0x48) ==
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(*plVar5 + 0x48))(plVar5);
  }
  *(undefined1 *)(lVar7 + 0x28) = uVar4;
  *(int *)(lVar7 + 0x20) = param_4;
  local_48[4] = *(float *)(*(longlong *)(lVar7 + 0x10) + 0x28);
  local_48[0] = *(float *)(*(longlong *)(lVar7 + 0x10) + 0x2c) * local_48[4];
  local_48[1] = 0.0;
  local_48[2] = 0.0;
  local_48[3] = 0.0;
  local_34 = 0;
  uVar10 = (**(code **)(*plVar5 + 0x40))(plVar5,param_4,local_48);
  puVar2 = *(undefined8 **)(lVar7 + 0x18);
  *(undefined8 *)(lVar7 + 0x18) = uVar10;
  if (puVar2 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar2);
  }
  *param_2 = lVar7;
LAB_18059a65b:
  LeaveCriticalSection(lpCriticalSection);
  return param_2;
}



############ FUN_ 1805589f0 size=1118 ############

void FUN_1805589f0(undefined8 *param_1,longlong param_2,longlong param_3,undefined8 param_4,
                  float param_5,float param_6,int param_7,int param_8,float param_9)

{
  uint *_Memory;
  byte bVar1;
  byte *pbVar2;
  code *pcVar3;
  byte bVar4;
  float fVar5;
  byte bVar6;
  char cVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined8 *puVar10;
  uint uVar11;
  byte *pbVar12;
  size_t _Size;
  longlong lVar13;
  int iVar14;
  undefined8 *puVar15;
  int iVar16;
  undefined1 local_res8 [8];
  byte *local_118;
  float local_110;
  float fStack_10c;
  float fStack_108;
  float fStack_104;
  void *local_100;
  ulonglong local_f8;
  undefined8 local_f0;
  undefined4 local_e8;
  char *local_e0;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined8 local_d0;
  void *local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined4 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined1 local_78 [64];
  
  local_90 = 0xfffffffffffffffe;
  local_e0 = "";
  local_d8 = 0;
  local_d0 = 1;
  local_c8 = (void *)0x0;
  local_c0 = 0;
  local_d4 = 0x21;
  iVar16 = 0;
  puVar10 = (undefined8 *)*param_1;
  puVar15 = puVar10 + (longlong)*(int *)((longlong)param_1 + 0xc) * 2;
  do {
    if ((puVar10 == puVar15) || (param_5 < (float)iVar16 * param_9 + param_6)) {
      local_110 = param_6;
      fStack_10c = (float)param_7;
      fStack_108 = (float)iVar16 * param_9 + DAT_1824c43e8;
      fStack_104 = (float)param_8;
      if (*local_e0 != '\0') {
        puVar10 = (undefined8 *)FUN_1804ab070(&local_110,local_78);
        local_88 = *puVar10;
        uStack_80 = puVar10[1];
        cVar7 = (**(code **)(**(longlong **)(param_3 + 8) + 0x50))
                          (*(longlong **)(param_3 + 8),&local_88);
        if (cVar7 != '\0') {
          pcVar3 = *(code **)(**(longlong **)(param_3 + 8) + 0xe8);
          if ((pcVar3 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                         vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) ||
             (cVar7 = (*pcVar3)(*(longlong **)(param_3 + 8),&local_e0,&local_110), cVar7 == '\0')) {
            fVar5 = fStack_108;
            local_100 = (void *)0x0;
            local_f8 = 0;
            local_f0 = 0;
            local_e8 = 9;
            FUN_1804ae9d0(&local_100);
            if ((int)local_f8 == 0) {
              local_f8 = local_f8 & 0xffffffff00000000;
              local_f0 = CONCAT44(DAT_1824c4610,fVar5);
              local_e8 = local_d4;
              cVar7 = FUN_18124b8d0(&local_100,&local_e0);
              if (cVar7 == '\0') {
                local_a8 = 0;
                local_a0 = 0;
                local_98 = 0;
                FUN_1804a30a0(&local_a8,&local_e0,&local_100);
                FUN_1804a7840(&local_a8);
              }
              FUN_18124de00(&local_100);
              local_b8 = CONCAT44(fStack_10c,local_110);
              uStack_b0 = CONCAT44(fStack_104,fStack_108);
              FUN_18124e500(&local_100,param_3,&local_b8);
              FUN_1804ae9d0(&local_100);
              local_f8 = local_f8 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
              free(local_100);
            }
                    /* WARNING: Subroutine does not return */
            free(local_100);
          }
        }
      }
      FUN_1804aed10(&local_c8);
                    /* WARNING: Subroutine does not return */
      free(local_c8);
    }
    pbVar2 = (byte *)*puVar10;
    bVar1 = *pbVar2;
    pbVar12 = pbVar2;
    while (bVar1 != 0) {
      uVar11 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar11 = 0x7f;
        uVar8 = 0x40;
        iVar14 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar8 < 9) break;
            uVar11 = uVar11 >> 1;
            iVar14 = iVar14 + 1;
            uVar8 = uVar8 >> 1;
          } while ((bVar1 & uVar8) != 0);
        }
        uVar11 = bVar1 & uVar11;
        lVar13 = 1;
        if (0 < (longlong)iVar14) {
          do {
            if ((pbVar12[lVar13] & 0xc0) != 0x80) break;
            uVar11 = pbVar12[lVar13] & 0x3f | uVar11 << 6;
            lVar13 = lVar13 + 1;
          } while (lVar13 <= iVar14);
        }
      }
      iVar14 = FUN_18049bc80(&DAT_182496878,uVar11);
      if (-1 < iVar14) {
        if ((pbVar2 == (byte *)0x0) || (*pbVar2 == 0)) {
          local_118 = &DAT_1821dbf98;
        }
        else {
          _Size = (longlong)pbVar12 - (longlong)pbVar2;
          puVar9 = (undefined4 *)thunk_FUN_1811316e0();
          LOCK();
          *puVar9 = 0;
          UNLOCK();
          *(size_t *)(puVar9 + 2) = _Size + 4 & 0xfffffffffffffffc;
          pbVar12 = (byte *)(puVar9 + 4);
          memcpy(pbVar12,pbVar2,_Size);
          pbVar12[_Size] = 0;
          local_118 = pbVar12;
        }
        goto LAB_180558b8b;
      }
      pbVar12 = pbVar12 + 1;
      if ((char)bVar1 < '\0') {
        bVar6 = 0x40;
        bVar4 = bVar1 & 0x40;
        while ((bVar4 != 0 && (8 < bVar6))) {
          pbVar12 = pbVar12 + 1;
          bVar6 = bVar6 >> 1;
          bVar4 = bVar1 & bVar6;
        }
      }
      bVar1 = *pbVar12;
    }
    local_118 = pbVar2;
    if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
      UNLOCK();
    }
LAB_180558b8b:
    pbVar2 = local_118;
    if (*(uint *)(param_2 + 0x42c) <= *(uint *)((longlong)puVar10 + 0xc)) {
      FUN_18134a8d0(param_2,local_res8,0x1004503,0);
    }
    FUN_181232d30(&local_e0,&local_118);
    lVar13 = 0;
    pbVar12 = pbVar2;
    while( true ) {
      while( true ) {
        bVar1 = *pbVar12;
        pbVar12 = pbVar12 + 1;
        if (-1 < (char)bVar1) break;
        if ((*pbVar12 & 0xc0) != 0x80) goto LAB_180558c68;
        do {
          pbVar12 = pbVar12 + 1;
        } while ((*pbVar12 & 0xc0) == 0x80);
        lVar13 = lVar13 + 1;
      }
      if (bVar1 == 0) break;
LAB_180558c68:
      lVar13 = lVar13 + 1;
    }
    FUN_1812554b0(&local_c8,lVar13,param_4);
    _Memory = (uint *)(pbVar2 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar11 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    iVar16 = iVar16 + *(int *)(puVar10 + 1);
    puVar10 = puVar10 + 2;
  } while( true );
}



############ FUN_ 1804ac600 size=546 ############

longlong * FUN_1804ac600(longlong param_1,longlong *param_2,undefined8 param_3,int param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong lVar1;
  undefined8 *puVar2;
  char cVar3;
  undefined1 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  longlong lVar8;
  int iVar9;
  undefined8 uVar10;
  LPCRITICAL_SECTION p_Var11;
  float local_48 [5];
  undefined4 local_34;
  
  uVar10 = 0xfffffffffffffffe;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x24);
  p_Var11 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  plVar6 = *(longlong **)(param_1 + 8);
  plVar5 = plVar6 + *(int *)(param_1 + 0x14);
  for (; plVar6 != plVar5; plVar6 = plVar6 + 1) {
    lVar7 = *plVar6;
    if ((*(int *)(lVar7 + 0x20) == param_4) &&
       (cVar3 = FUN_181252880(lVar7 + 0x10,param_3), cVar3 != '\0')) {
      LOCK();
      *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1;
      UNLOCK();
      LOCK();
      *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
      UNLOCK();
      *param_2 = lVar7;
      goto LAB_1804ac7fb;
    }
  }
  LOCK();
  *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
  UNLOCK();
  lVar7 = 0;
  if (*(int *)(param_1 + 0x14) << 4 < *(int *)(param_1 + 0x1c) + *(int *)(param_1 + 0x20)) {
    if (*(int *)(param_1 + 0x1c) < *(int *)(param_1 + 0x20) * 2) {
      FUN_1804ac500(param_1,0x20);
    }
    LOCK();
    *(undefined4 *)(param_1 + 0x1c) = 0;
    UNLOCK();
    LOCK();
    *(undefined4 *)(param_1 + 0x20) = 0;
    UNLOCK();
  }
  iVar9 = 0x7fffffff;
  plVar6 = *(longlong **)(param_1 + 8);
  plVar5 = plVar6 + *(int *)(param_1 + 0x14);
  lVar8 = lVar7;
  if (plVar6 != plVar5) {
    do {
      lVar1 = *plVar6;
      if ((*(int *)(lVar1 + 0x24) <= iVar9) && (*(int *)(lVar1 + 8) == 1)) {
        iVar9 = *(int *)(lVar1 + 0x24);
        lVar8 = lVar1;
      }
      plVar6 = plVar6 + 1;
    } while (plVar6 != plVar5);
    if (lVar8 != 0) {
      LOCK();
      *(int *)(lVar8 + 8) = *(int *)(lVar8 + 8) + 1;
      UNLOCK();
      lVar7 = lVar8;
      goto LAB_1804ac756;
    }
  }
  FUN_1804ac500(param_1,0x20,0,iVar9,uVar10,p_Var11);
  if (0 < *(int *)(param_1 + 0x14)) {
    lVar7 = *(longlong *)
             (*(longlong *)(param_1 + 8) + (longlong)(*(int *)(param_1 + 0x14) + -1) * 8);
  }
  if (lVar7 != 0) {
    LOCK();
    *(int *)(lVar7 + 8) = *(int *)(lVar7 + 8) + 1;
    UNLOCK();
  }
LAB_1804ac756:
  FUN_181252990(lVar7 + 0x10,param_3);
  plVar5 = (longlong *)FUN_181252280(param_3);
  if (*(code **)(*plVar5 + 0x48) ==
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(*plVar5 + 0x48))(plVar5);
  }
  *(undefined1 *)(lVar7 + 0x28) = uVar4;
  *(int *)(lVar7 + 0x20) = param_4;
  local_48[4] = *(float *)(*(longlong *)(lVar7 + 0x10) + 0x28);
  local_48[0] = *(float *)(*(longlong *)(lVar7 + 0x10) + 0x2c) * local_48[4];
  local_48[1] = 0.0;
  local_48[2] = 0.0;
  local_48[3] = 0.0;
  local_34 = 0;
  uVar10 = (**(code **)(*plVar5 + 0x40))(plVar5,param_4,local_48);
  puVar2 = *(undefined8 **)(lVar7 + 0x18);
  *(undefined8 *)(lVar7 + 0x18) = uVar10;
  if (puVar2 != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar2);
  }
  *param_2 = lVar7;
LAB_1804ac7fb:
  LeaveCriticalSection(lpCriticalSection);
  return param_2;
}



############ FUN_ 18047ace0 size=378 ############

undefined8 FUN_18047ace0(longlong *param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  code *pcVar2;
  longlong *plVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  char cVar7;
  int iVar8;
  undefined8 uVar9;
  
  lVar1 = param_1[8];
  uVar9 = 1;
  if (lVar1 != 0) {
    LOCK();
    *(undefined1 *)(lVar1 + 0x621d) = 1;
    UNLOCK();
  }
  iVar8 = param_2[1];
  pcVar2 = (code *)((undefined **)*param_1)[5];
  if ((undefined **)*param_1 == juce::JuceVST3Component::vftable) {
    if ((iVar8 != 0) &&
       (((*(code **)(*(longlong *)param_1[5] + 0x60) ==
          .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ ||
         (cVar7 = (**(code **)(*(longlong *)param_1[5] + 0x60))(), cVar7 == '\0')) || (iVar8 != 1)))
       ) goto LAB_18047ae0a;
  }
  else {
    iVar8 = (*pcVar2)(param_1,iVar8,pcVar2,param_4,0xfffffffffffffffe);
    if (iVar8 != 0) goto LAB_18047ae0a;
  }
  iVar8 = param_2[1];
  iVar4 = param_2[2];
  iVar5 = param_2[3];
  *(int *)(param_1 + 0x17) = *param_2;
  *(int *)((longlong)param_1 + 0xbc) = iVar8;
  *(int *)(param_1 + 0x18) = iVar4;
  *(int *)((longlong)param_1 + 0xc4) = iVar5;
  param_1[0x19] = *(longlong *)(param_2 + 4);
  param_1[10] = param_1[0x19];
  *(uint *)(param_1[5] + 0x44) = (uint)(param_2[1] == 1);
  pcVar2 = *(code **)(*(longlong *)param_1[5] + 0xa0);
  if (pcVar2 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    *(bool *)(param_1[5] + 0x41) = *param_2 == 2;
  }
  else {
    (*pcVar2)();
  }
  lVar6 = param_1[0x18];
  plVar3 = (longlong *)param_1[5];
  plVar3[6] = param_1[0x19];
  *(int *)(plVar3 + 7) = (int)lVar6;
  (**(code **)(*plVar3 + 0x18))();
  if ((int)param_1[0x1b] < 0x800) {
    FUN_18049bab0(param_1 + 0x1a,0xc08);
  }
  *(undefined4 *)((longlong)param_1 + 0xdc) = 0;
  uVar9 = 0;
LAB_18047ae0a:
  if (lVar1 != 0) {
    LOCK();
    *(undefined1 *)(lVar1 + 0x621d) = 0;
    UNLOCK();
  }
  return uVar9;
}



############ FUN_ 18047ac80 size=76 ############

undefined8 FUN_18047ac80(longlong param_1,int param_2)

{
  code *pcVar1;
  char cVar2;
  
  if (param_2 == 0) {
    return 0;
  }
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0x60);
  if ((pcVar1 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                 vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) &&
     (cVar2 = (*pcVar1)(), cVar2 != '\0')) {
    if (param_2 == 1) {
      return 0;
    }
    return 1;
  }
  return 1;
}



############ FUN_ 1812bd560 size=196 ############

void FUN_1812bd560(longlong param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4,
                  undefined4 param_5)

{
  code *pcVar1;
  longlong lVar2;
  char cVar3;
  undefined4 uVar4;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x52));
  if (*(char *)(param_1 + 0x50) == '\0') {
    FUN_1812bd420(param_1,param_4);
    pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0x60);
    if (pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      cVar3 = '\0';
    }
    else {
      cVar3 = (*pcVar1)();
    }
    uVar4 = 0;
    if (cVar3 != '\0') {
      uVar4 = param_5;
    }
    *(undefined4 *)(*(longlong *)(param_1 + 0x28) + 0x44) = uVar4;
    lVar2 = *(longlong *)(param_1 + 0x28);
    *(undefined8 *)(lVar2 + 0x30) = param_2;
    *(undefined4 *)(lVar2 + 0x38) = param_3;
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0x18))
              (*(longlong **)(param_1 + 0x28),(int)param_2,param_3);
    *(undefined1 *)(param_1 + 0x50) = 1;
  }
                    /* WARNING: Could not recover jumptable at 0x0001812bd618. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x52));
  return;
}



############ FUN_ 18047ae60 size=50 ############

undefined8 FUN_18047ae60(longlong param_1,char param_2)

{
  code *pcVar1;
  
  if (param_2 == '\0') {
    pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0x90);
    if (pcVar1 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      (*pcVar1)();
      return 0;
    }
  }
  return 0;
}



############ FUN_ 1812bc1d0 size=179 ############

void FUN_1812bc1d0(longlong param_1)

{
  code *pcVar1;
  ulonglong uVar2;
  longlong *plVar3;
  ulonglong uVar4;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  plVar3 = *(longlong **)(param_1 + 400);
  uVar4 = 0;
  uVar2 = (ulonglong)((longlong)(plVar3 + *(int *)(param_1 + 0x19c)) + (7 - (longlong)plVar3)) >> 3;
  if (plVar3 + *(int *)(param_1 + 0x19c) < plVar3) {
    uVar2 = uVar4;
  }
  if (uVar2 != 0) {
    do {
      pcVar1 = *(code **)(**(longlong **)(*plVar3 + 0x28) + 0x90);
      if (pcVar1 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                    vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
        (*pcVar1)();
      }
      plVar3 = plVar3 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar2);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812bc277. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  return;
}



############ FUN_ 1812bc110 size=179 ############

void FUN_1812bc110(longlong param_1,undefined1 param_2)

{
  longlong *plVar1;
  longlong *plVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  *(undefined1 *)(param_1 + 0x41) = param_2;
  plVar2 = *(longlong **)(param_1 + 400);
  uVar3 = 0;
  uVar4 = (ulonglong)((longlong)(plVar2 + *(int *)(param_1 + 0x19c)) + (7 - (longlong)plVar2)) >> 3;
  if (plVar2 + *(int *)(param_1 + 0x19c) < plVar2) {
    uVar4 = uVar3;
  }
  if (uVar4 != 0) {
    do {
      plVar1 = *(longlong **)(*plVar2 + 0x28);
      if (*(code **)(*plVar1 + 0xa0) ==
          .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
        *(undefined1 *)((longlong)plVar1 + 0x41) = param_2;
      }
      else {
        (**(code **)(*plVar1 + 0xa0))(plVar1,param_2);
      }
      plVar2 = plVar2 + 1;
      uVar3 = uVar3 + 1;
    } while (uVar3 != uVar4);
  }
                    /* WARNING: Could not recover jumptable at 0x0001812bc1b3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  return;
}



############ FUN_ 181131874 size=40 ############

undefined1 FUN_181131874(void)

{
  char cVar1;
  
  cVar1 = .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  if (cVar1 != '\0') {
    cVar1 = .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
            vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
    if (cVar1 != '\0') {
      return 1;
    }
    .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
    vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  }
  return 0;
}



############ FUN_ 18113189c size=21 ############

undefined1 FUN_18113189c(void)

{
  .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  return 1;
}



############ FUN_ 181131944 size=20 ############

void FUN_181131944(void)

{
  .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(0);
  .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  return;
}



############ FUN_ 181131958 size=73 ############

/* Library Function - Single Match
    __scrt_initialize_crt
   
   Library: Visual Studio 2017 Release */

undefined8 __scrt_initialize_crt(int param_1)

{
  char cVar1;
  
  if (param_1 == 0) {
    DAT_182672fd0 = 1;
  }
  __isa_available_init();
  cVar1 = .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
  if (cVar1 != '\0') {
    cVar1 = .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
            vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____();
    if (cVar1 != '\0') {
      return 1;
    }
    .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
    vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(0);
  }
  return 0;
}



############ FUN_ 181131b3c size=43 ############

/* Library Function - Single Match
    __scrt_uninitialize_crt
   
   Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release */

undefined1 __scrt_uninitialize_crt(undefined1 param_1,char param_2)

{
  if ((DAT_182672fd0 == '\0') || (param_2 == '\0')) {
    .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
    vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(param_1);
    .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
    vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____(param_1);
  }
  return 1;
}



############ FUN_ 1812520a0 size=175 ############

void FUN_1812520a0(longlong *param_1,float param_2)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  char cVar5;
  float fVar6;
  
  fVar6 = DAT_1824c3cb8;
  if ((DAT_1824c3cb8 <= param_2) && (fVar6 = DAT_1824c45c8, param_2 <= DAT_1824c45c8)) {
    fVar6 = param_2;
  }
  if (*(float *)(*param_1 + 0x28) != fVar6) {
    FUN_181252760();
    *(float *)(*param_1 + 0x28) = fVar6;
    plVar3 = *(longlong **)(*param_1 + 0x10);
    if (((plVar3 != (longlong *)0x0) &&
        (*(code **)(*plVar3 + 8) !=
         .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
         vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
       (cVar5 = (**(code **)(*plVar3 + 8))(plVar3,param_1), cVar5 == '\0')) {
      puVar4 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1);
          return;
        }
      }
    }
  }
  return;
}



############ FUN_ 1812526e0 size=107 ############

void FUN_1812526e0(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  char cVar5;
  
  plVar3 = *(longlong **)(*param_1 + 0x10);
  if ((plVar3 != (longlong *)0x0) &&
     (*(code **)(*plVar3 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar5 = (**(code **)(*plVar3 + 8))(plVar3,param_1);
    if (cVar5 == '\0') {
      puVar4 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1);
          return;
        }
      }
    }
  }
  return;
}



############ FUN_ 181251a70 size=135 ############

void FUN_181251a70(longlong *param_1,undefined1 param_2)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  char cVar5;
  
  FUN_181252760();
  *(undefined1 *)(*param_1 + 0x38) = param_2;
  plVar3 = *(longlong **)(*param_1 + 0x10);
  if ((plVar3 != (longlong *)0x0) &&
     (*(code **)(*plVar3 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar5 = (**(code **)(*plVar3 + 8))(plVar3,param_1);
    if (cVar5 == '\0') {
      puVar4 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1);
          return;
        }
      }
    }
  }
  return;
}



############ FUN_ 181251de0 size=138 ############

void FUN_181251de0(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  char cVar5;
  
  FUN_181252760();
  *(undefined4 *)(*param_1 + 0x2c) = param_2;
  plVar3 = *(longlong **)(*param_1 + 0x10);
  if ((plVar3 != (longlong *)0x0) &&
     (*(code **)(*plVar3 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar5 = (**(code **)(*plVar3 + 8))(plVar3,param_1);
    if (cVar5 == '\0') {
      puVar4 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1);
          return;
        }
      }
    }
  }
  return;
}



############ FUN_ 181251c60 size=138 ############

void FUN_181251c60(longlong *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  char cVar5;
  
  FUN_181252760();
  *(undefined4 *)(*param_1 + 0x30) = param_2;
  plVar3 = *(longlong **)(*param_1 + 0x10);
  if ((plVar3 != (longlong *)0x0) &&
     (*(code **)(*plVar3 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar5 = (**(code **)(*plVar3 + 8))(plVar3,param_1);
    if (cVar5 == '\0') {
      puVar4 = *(undefined8 **)(*param_1 + 0x10);
      *(undefined8 *)(*param_1 + 0x10) = 0;
      if (puVar4 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar4 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar4)(puVar4,1);
          return;
        }
      }
    }
  }
  return;
}



############ FUN_ 181251cf0 size=197 ############

longlong * FUN_181251cf0(longlong *param_1,longlong *param_2,undefined4 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  char cVar6;
  undefined8 in_R8;
  
  lVar3 = *param_1;
  *param_2 = lVar3;
  if (lVar3 != 0) {
    LOCK();
    *(int *)(lVar3 + 8) = *(int *)(lVar3 + 8) + 1;
    UNLOCK();
  }
  FUN_181252760(param_2,lVar3,in_R8,param_4,1,0xfffffffffffffffe);
  *(undefined4 *)(*param_2 + 0x30) = param_3;
  plVar4 = *(longlong **)(*param_2 + 0x10);
  if ((plVar4 != (longlong *)0x0) &&
     (*(code **)(*plVar4 + 8) !=
      .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
      vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) {
    cVar6 = (**(code **)(*plVar4 + 8))(plVar4,param_2);
    if (cVar6 == '\0') {
      puVar5 = *(undefined8 **)(*param_2 + 0x10);
      *(undefined8 *)(*param_2 + 0x10) = 0;
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar5)(puVar5,1);
          return param_2;
        }
      }
    }
  }
  return param_2;
}



############ FUN_ 1813112f0 size=573 ############

void FUN_1813112f0(longlong *param_1,undefined8 *param_2,char param_3,int param_4,int *param_5,
                  int *param_6)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  undefined8 *puVar4;
  char cVar5;
  longlong *plVar6;
  byte *pbVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  undefined8 *local_38;
  double local_30;
  undefined8 local_28;
  
  local_28 = 0xfffffffffffffffe;
  if (param_3 == '\0') {
    (**(code **)(*param_1 + 0x20))(param_1,&local_38);
    iVar8 = 0;
    if (param_4 < 1) {
      local_30 = (double)(*(float *)(local_38 + 5) * DAT_1824c3f20) + DAT_1824c4520;
      param_4 = local_30._0_4_;
    }
    else {
      fVar9 = (float)param_4 / DAT_1824c3f20;
      if (fVar9 < *(float *)(local_38 + 5)) {
        fVar10 = DAT_1824c3cb8;
        if ((DAT_1824c3cb8 <= fVar9) && (fVar10 = DAT_1824c45c8, fVar9 <= DAT_1824c45c8)) {
          fVar10 = fVar9;
        }
        if (*(float *)(local_38 + 5) != fVar10) {
          FUN_181252760(&local_38);
          *(float *)(local_38 + 5) = fVar10;
          plVar6 = (longlong *)local_38[2];
          if (((plVar6 != (longlong *)0x0) &&
              (*(code **)(*plVar6 + 8) !=
               .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
               vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
             (cVar5 = (**(code **)(*plVar6 + 8))(plVar6,&local_38), cVar5 == '\0')) {
            puVar4 = (undefined8 *)local_38[2];
            local_38[2] = 0;
            if (puVar4 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar4 + 1);
              iVar2 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar2 == 1) {
                (**(code **)*puVar4)(puVar4,1);
              }
            }
          }
        }
      }
    }
    *param_6 = param_4;
    plVar6 = (longlong *)FUN_181252280(&local_38);
    fVar9 = (float)(**(code **)(*plVar6 + 0x28))(plVar6,param_2);
    if (*(float *)(local_38 + 6) != 0.0) {
      pbVar7 = (byte *)*param_2;
      while( true ) {
        while( true ) {
          bVar3 = *pbVar7;
          pbVar7 = pbVar7 + 1;
          if (-1 < (char)bVar3) break;
          if ((*pbVar7 & 0xc0) != 0x80) goto LAB_1813114b8;
          do {
            pbVar7 = pbVar7 + 1;
          } while ((*pbVar7 & 0xc0) == 0x80);
          iVar8 = iVar8 + 1;
        }
        if (bVar3 == 0) break;
LAB_1813114b8:
        iVar8 = iVar8 + 1;
      }
      fVar9 = fVar9 + (float)iVar8 * *(float *)(local_38 + 6);
    }
    fVar9 = ceilf(fVar9 * *(float *)(local_38 + 5) * *(float *)((longlong)local_38 + 0x2c));
    *param_5 = (int)fVar9 + *param_6 * 2;
    LOCK();
    piVar1 = (int *)(local_38 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_38)(local_38,1);
    }
  }
  else {
    *param_5 = 0x32;
    if (param_4 < 1) {
      *param_6 = 10;
    }
    else {
      *param_6 = param_4 / 2;
    }
  }
  return;
}



############ FUN_ 1812501e0 size=332 ############

void FUN_1812501e0(longlong *param_1,int param_2,int param_3,float param_4)

{
  int *piVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  char cVar7;
  longlong *plVar8;
  longlong lVar9;
  
  if ((param_3 < 0) || (*(int *)((longlong)param_1 + 0xc) < param_2 + param_3)) {
    param_3 = *(int *)((longlong)param_1 + 0xc) - param_2;
  }
  if (0 < param_3) {
    lVar9 = (longlong)param_2 * 0x20;
    fVar2 = *(float *)(lVar9 + 0x10 + *param_1);
    while (param_3 = param_3 + -1, -1 < param_3) {
      plVar8 = (longlong *)(*param_1 + lVar9);
      lVar9 = lVar9 + 0x20;
      *(float *)(plVar8 + 2) = (*(float *)(plVar8 + 2) - fVar2) * param_4 + fVar2;
      fVar3 = *(float *)(*plVar8 + 0x2c);
      FUN_181252760(plVar8);
      *(float *)(*plVar8 + 0x2c) = fVar3 * param_4;
      plVar5 = *(longlong **)(*plVar8 + 0x10);
      if (((plVar5 != (longlong *)0x0) &&
          (*(code **)(*plVar5 + 8) !=
           .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
           vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
         (cVar7 = (**(code **)(*plVar5 + 8))(plVar5,plVar8), cVar7 == '\0')) {
        puVar6 = *(undefined8 **)(*plVar8 + 0x10);
        *(undefined8 *)(*plVar8 + 0x10) = 0;
        if (puVar6 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar6 + 1);
          iVar4 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar4 == 1) {
            (**(code **)*puVar6)(puVar6,1);
          }
        }
      }
      *(float *)(plVar8 + 3) = param_4 * *(float *)(plVar8 + 3);
    }
  }
  return;
}



############ FUN_ 180477940 size=95 ############

undefined8 FUN_180477940(longlong param_1,longlong param_2)

{
  code *pcVar1;
  char cVar2;
  longlong lVar3;
  longlong lVar4;
  
  if ((param_2 != 0) &&
     ((pcVar1 = *(code **)(**(longlong **)(param_1 + 0x58) + 0xb0),
      pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ ||
      (cVar2 = (*pcVar1)(), cVar2 != '\0')))) {
    lVar3 = 0;
    while (lVar4 = lVar3 + 1, *(char *)(param_2 + lVar3) == (&DAT_1821d8ff4)[lVar3]) {
      lVar3 = lVar4;
      if (lVar4 == 5) {
        return 0;
      }
    }
  }
  return 1;
}



############ FUN_ 1812f78a0 size=589 ############

void FUN_1812f78a0(longlong *param_1,undefined8 *param_2,char param_3,int param_4,int *param_5,
                  int *param_6)

{
  int *piVar1;
  int iVar2;
  byte bVar3;
  undefined8 *puVar4;
  char cVar5;
  longlong *plVar6;
  byte *pbVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  undefined8 *local_38;
  double local_30;
  undefined8 local_28;
  
  local_28 = 0xfffffffffffffffe;
  if (param_3 == '\0') {
    (**(code **)(*param_1 + 0x20))(param_1,&local_38);
    iVar8 = 0;
    if (param_4 < 1) {
      local_30 = (double)(*(float *)(local_38 + 5) * DAT_1824c3f20) + DAT_1824c4520;
      param_4 = local_30._0_4_;
    }
    else {
      fVar9 = (float)param_4 / DAT_1824c3f20;
      if (fVar9 < *(float *)(local_38 + 5)) {
        fVar10 = DAT_1824c3cb8;
        if ((DAT_1824c3cb8 <= fVar9) && (fVar10 = DAT_1824c45c8, fVar9 <= DAT_1824c45c8)) {
          fVar10 = fVar9;
        }
        if (*(float *)(local_38 + 5) != fVar10) {
          FUN_181252760(&local_38);
          *(float *)(local_38 + 5) = fVar10;
          plVar6 = (longlong *)local_38[2];
          if (((plVar6 != (longlong *)0x0) &&
              (*(code **)(*plVar6 + 8) !=
               .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
               vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____)) &&
             (cVar5 = (**(code **)(*plVar6 + 8))(plVar6,&local_38), cVar5 == '\0')) {
            puVar4 = (undefined8 *)local_38[2];
            local_38[2] = 0;
            if (puVar4 != (undefined8 *)0x0) {
              LOCK();
              piVar1 = (int *)(puVar4 + 1);
              iVar2 = *piVar1;
              *piVar1 = *piVar1 + -1;
              UNLOCK();
              if (iVar2 == 1) {
                (**(code **)*puVar4)(puVar4,1);
              }
            }
          }
        }
      }
    }
    *param_6 = param_4;
    plVar6 = (longlong *)FUN_181252280(&local_38);
    fVar9 = (float)(**(code **)(*plVar6 + 0x28))(plVar6,param_2);
    if (*(float *)(local_38 + 6) != 0.0) {
      pbVar7 = (byte *)*param_2;
      while( true ) {
        while( true ) {
          bVar3 = *pbVar7;
          pbVar7 = pbVar7 + 1;
          if (-1 < (char)bVar3) break;
          if ((*pbVar7 & 0xc0) != 0x80) goto LAB_1812f7a78;
          do {
            pbVar7 = pbVar7 + 1;
          } while ((*pbVar7 & 0xc0) == 0x80);
          iVar8 = iVar8 + 1;
        }
        if (bVar3 == 0) break;
LAB_1812f7a78:
        iVar8 = iVar8 + 1;
      }
      fVar9 = fVar9 + (float)iVar8 * *(float *)(local_38 + 6);
    }
    fVar9 = ceilf(fVar9 * *(float *)(local_38 + 5) * *(float *)((longlong)local_38 + 0x2c));
    *param_5 = (int)fVar9 + *param_6 * 2;
    LOCK();
    piVar1 = (int *)(local_38 + 1);
    iVar8 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar8 == 1) {
      (**(code **)*local_38)(local_38,1);
    }
  }
  else {
    *param_5 = 0x32;
    if (param_4 < 1) {
      *param_6 = 10;
    }
    else {
      *param_6 = param_4 / 10;
    }
  }
  return;
}



############ FUN_ 18049a020 size=247 ############

bool FUN_18049a020(longlong *param_1)

{
  longlong lVar1;
  longlong *plVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  int local_res8 [2];
  
  iVar6 = 0;
  lVar1 = *param_1;
  plVar2 = *(longlong **)param_1[2];
  iVar5 = HttpSendRequestExW(*(undefined8 *)(lVar1 + 0x60),param_1[1],0,8,0);
  if ((iVar5 != 0) && (iVar5 = *(int *)(lVar1 + 0x78), 0 < iVar5)) {
    do {
      local_res8[0] = 0;
      iVar3 = 0x400;
      if (iVar5 - iVar6 < 0x400) {
        iVar3 = iVar5 - iVar6;
      }
    } while ((((iVar3 != 0) &&
              (iVar5 = InternetWriteFile(*(undefined8 *)(lVar1 + 0x60),
                                         (longlong)iVar6 + *(longlong *)(lVar1 + 0x70),iVar3,
                                         local_res8), iVar5 != 0)) &&
             ((iVar6 = iVar6 + local_res8[0], plVar2 == (longlong *)0x0 ||
              ((*(code **)(*plVar2 + 8) ==
                .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____ ||
               (cVar4 = (**(code **)(*plVar2 + 8))
                                  (plVar2,*(undefined8 *)(lVar1 + 8),iVar6,
                                   *(undefined4 *)(lVar1 + 0x78)), cVar4 != '\0')))))) &&
            (iVar5 = *(int *)(lVar1 + 0x78), iVar6 < iVar5));
  }
  iVar5 = HttpEndRequestW(*(undefined8 *)(*param_1 + 0x60),0,0,0);
  return iVar5 != 0;
}



############ FUN_ 180476930 size=98 ############

undefined8 FUN_180476930(longlong param_1)

{
  longlong *plVar1;
  code *UNRECOVERED_JUMPTABLE;
  int iVar2;
  undefined8 uVar3;
  
  plVar1 = *(longlong **)(param_1 + 0x20);
  if (plVar1 != (longlong *)0x0) {
    UNRECOVERED_JUMPTABLE = (code *)((undefined **)*plVar1)[5];
    if ((undefined **)*plVar1 != juce::JuceAudioProcessor::vftable) {
                    /* WARNING: Could not recover jumptable at 0x00018047697f. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar3 = (*UNRECOVERED_JUMPTABLE)(plVar1,UNRECOVERED_JUMPTABLE);
      return uVar3;
    }
    if (*(code **)(*(longlong *)plVar1[5] + 0xc0) ==
        .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
        vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      return 1;
    }
    iVar2 = (**(code **)(*(longlong *)plVar1[5] + 0xc0))();
    if (0 < iVar2) {
      return 1;
    }
  }
  return 0;
}



############ FUN_ 180476df0 size=901 ############

void FUN_180476df0(longlong param_1)

{
  longlong *plVar1;
  uint uVar2;
  longlong *plVar3;
  longlong *plVar4;
  int iVar5;
  int iVar6;
  longlong **pplVar7;
  longlong lVar8;
  undefined8 uVar9;
  uint *puVar10;
  longlong *plVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  uint local_res8;
  longlong *local_res18;
  longlong *local_res20;
  longlong local_68;
  longlong local_60;
  longlong local_58 [4];
  
  local_58[1] = 0xfffffffffffffffe;
  uVar12 = 0;
  iVar6 = 0;
  iVar5 = 0;
  plVar11 = *(longlong **)(param_1 + -0x30);
  if (plVar11 != (longlong *)0x0) {
    iVar5 = (int)(plVar11[1] - *plVar11 >> 3);
  }
  plVar11 = local_res18;
  uVar13 = uVar12;
  if (0 < iVar5) {
    do {
      plVar3 = *(longlong **)(param_1 + -0x30);
      if (plVar3 == (longlong *)0x0) {
        local_res20 = (longlong *)0x0;
        pplVar7 = &local_res20;
        local_res8 = (uint)uVar12 | 2;
      }
      else {
        if ((ulonglong)(plVar3[1] - *plVar3 >> 3) <= uVar13) {
                    /* WARNING: Subroutine does not return */
          FUN_18047cca0();
        }
        plVar11 = *(longlong **)(*plVar3 + uVar13 * 8);
        local_res18 = plVar11;
        if (plVar11 != (longlong *)0x0) {
          (**(code **)(*plVar11 + 8))(plVar11);
        }
        pplVar7 = &local_res18;
        local_res8 = (uint)uVar12 | 1;
      }
      uVar12 = (ulonglong)local_res8;
      plVar3 = *pplVar7;
      if ((local_res8 & 2) != 0) {
        local_res8 = local_res8 & 0xfffffffd;
        uVar12 = (ulonglong)local_res8;
        if (local_res20 != (longlong *)0x0) {
          if (*(code **)(*local_res20 + 0x10) == FUN_18113d7a0) {
            LOCK();
            plVar11 = local_res20 + 1;
            lVar8 = *plVar11;
            *(int *)plVar11 = (int)*plVar11 + -1;
            UNLOCK();
            if ((int)lVar8 == 1) {
              *(undefined4 *)(local_res20 + 1) = 0xfffffc18;
              (**(code **)(*local_res20 + 0x20))(local_res20,1);
            }
            uVar12 = (ulonglong)local_res8;
            plVar11 = local_res18;
          }
          else {
            (**(code **)(*local_res20 + 0x10))(local_res20);
          }
        }
      }
      plVar4 = local_res18;
      if ((uVar12 & 1) != 0) {
        local_res8 = (uint)uVar12 & 0xfffffffe;
        uVar12 = (ulonglong)local_res8;
        if (plVar11 != (longlong *)0x0) {
          if (*(code **)(*plVar11 + 0x10) == FUN_18113d7a0) {
            LOCK();
            plVar1 = plVar11 + 1;
            lVar8 = *plVar1;
            *(int *)plVar1 = (int)*plVar1 + -1;
            UNLOCK();
            if ((int)lVar8 == 1) {
              *(undefined4 *)(plVar11 + 1) = 0xfffffc18;
              (**(code **)(*local_res18 + 0x20))(local_res18,1);
              uVar12 = (ulonglong)local_res8;
              plVar11 = plVar4;
            }
            else {
              uVar12 = (ulonglong)local_res8;
              plVar11 = plVar4;
            }
          }
          else {
            (**(code **)(*plVar11 + 0x10))(plVar11);
          }
        }
      }
      lVar8 = __RTDynamicCast(plVar3,0,&Steinberg::Vst::Parameter::RTTI_Type_Descriptor,
                              &juce::JuceVST3EditController::Param::RTTI_Type_Descriptor,0);
      if (lVar8 != 0) {
        uVar9 = (**(code **)(**(longlong **)(lVar8 + 0x340) + 0x20))
                          (*(longlong **)(lVar8 + 0x340),&local_68,0x80);
        FUN_1804741b0(lVar8 + 0x14,uVar9);
        puVar10 = (uint *)(local_68 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        uVar9 = (**(code **)(**(longlong **)(lVar8 + 0x340) + 0x20))
                          (*(longlong **)(lVar8 + 0x340),&local_60,8);
        FUN_1804741b0(lVar8 + 0x114,uVar9);
        puVar10 = (uint *)(local_60 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        (**(code **)(**(longlong **)(lVar8 + 0x340) + 0x28))(*(longlong **)(lVar8 + 0x340),local_58)
        ;
        FUN_1804741b0(lVar8 + 0x214);
        puVar10 = (uint *)(local_58[0] + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        uVar12 = (ulonglong)local_res8;
        plVar11 = local_res18;
      }
      uVar13 = uVar13 + 1;
    } while ((longlong)uVar13 < (longlong)iVar5);
  }
  if ((*(longlong *)(param_1 + 0x10) != 0) &&
     (plVar11 = *(longlong **)(*(longlong *)(param_1 + 0x10) + 0x28), plVar11 != (longlong *)0x0)) {
    if (*(code **)(*plVar11 + 0xc0) ==
        .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
        vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      if ((int)plVar11[1] != 3) goto LAB_180477103;
    }
    else {
      iVar5 = (**(code **)(*plVar11 + 0xc0))(plVar11);
      if (iVar5 < 2) goto LAB_180477103;
    }
    if (*(code **)(*plVar11 + 200) ==
        .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__) {
      if ((int)plVar11[1] == 3) {
        iVar6 = (int)plVar11[0x89];
      }
    }
    else {
      iVar6 = (**(code **)(*plVar11 + 200))(plVar11);
    }
    iVar5 = (**(code **)(*plVar11 + 0xc0))(plVar11);
    FUN_181139990(param_1 + -0x50,0x70727374,SUB84((double)iVar6 / (double)(iVar5 + -1),0));
  }
LAB_180477103:
  if ((*(longlong *)(param_1 + -0x40) != 0) && (*(char *)(param_1 + 0x619d) == '\0')) {
    (**(code **)(**(longlong **)(param_1 + -0x40) + 0x30))(*(longlong **)(param_1 + -0x40),0x1c);
  }
  return;
}



############ FUN_ 180476340 size=415 ############

undefined8 FUN_180476340(longlong *param_1)

{
  uint uVar1;
  longlong *plVar2;
  uint *puVar3;
  int iVar4;
  int iVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *plVar8;
  uint *puVar9;
  longlong *plVar10;
  float fVar11;
  
  if ((param_1[0xc] != 0) &&
     (plVar2 = *(longlong **)(param_1[0xc] + 0x28), plVar2 != (longlong *)0x0)) {
    plVar7 = (longlong *)0x0;
    iVar4 = 0;
    puVar9 = *(uint **)(param_1[0xc] + 8);
    plVar8 = (longlong *)
             ((ulonglong)
              ((longlong)(puVar9 + *(int *)(param_1[0xc] + 0x14)) + (3 - (longlong)puVar9)) >> 2);
    if (puVar9 + *(int *)(param_1[0xc] + 0x14) < puVar9) {
      plVar8 = plVar7;
    }
    plVar10 = plVar7;
    if (plVar8 != (longlong *)0x0) {
      do {
        uVar1 = *puVar9;
        for (puVar3 = *(uint **)(*(longlong *)(param_1[0xc] + 0x60) +
                                (longlong)(int)(uVar1 % *(uint *)(param_1[0xc] + 0x6c)) * 8);
            plVar6 = plVar7, puVar3 != (uint *)0x0; puVar3 = *(uint **)(puVar3 + 4)) {
          if (*puVar3 == uVar1) {
            plVar6 = *(longlong **)(puVar3 + 2);
            break;
          }
        }
        fVar11 = (float)(**(code **)(*plVar6 + 8))();
        (**(code **)(*param_1 + 0x78))(param_1,uVar1,(double)fVar11);
        puVar9 = puVar9 + 1;
        plVar10 = (longlong *)((longlong)plVar10 + 1);
      } while (plVar10 != plVar8);
    }
    if (*(code **)(*plVar2 + 0xc0) ==
        .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
        vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      iVar5 = 1;
      if ((int)plVar2[1] == 3) {
        iVar5 = 0x80;
      }
    }
    else {
      iVar5 = (**(code **)(*plVar2 + 0xc0))(plVar2);
    }
    if (1 < iVar5) {
      if (*(code **)(*plVar2 + 200) ==
          .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__) {
        if ((int)plVar2[1] == 3) {
          iVar4 = (int)plVar2[0x89];
        }
      }
      else {
        iVar4 = (**(code **)(*plVar2 + 200))(plVar2);
      }
      (**(code **)(*param_1 + 0x78))(param_1,0x70727374,(double)iVar4 / (double)(iVar5 + -1));
    }
  }
  plVar2 = (longlong *)param_1[2];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x30))(plVar2,4);
  }
  return 0x80004001;
}



############ FUN_ 180475ba0 size=617 ############

undefined8 *
FUN_180475ba0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  code *pcVar1;
  longlong *plVar2;
  int iVar3;
  int iVar4;
  short *psVar5;
  longlong lVar6;
  longlong lVar7;
  
  FUN_181137760(param_1,param_2,param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::JuceVST3EditController::ProgramChangeParameter::vftable;
  param_1[0x67] = param_2;
  *(undefined4 *)(param_1 + 2) = 0x70727374;
  lVar6 = 0;
  iVar3 = 0;
  psVar5 = (short *)(param_1 + 3);
  lVar7 = lVar6;
  do {
    psVar5[-2] = (short)"Program"[lVar7];
    if (((("Program"[lVar7] == '\0') ||
         (psVar5[-1] = (short)"Program"[lVar7 + 1], "Program"[lVar7 + 1] == '\0')) ||
        (*psVar5 = (short)"Program"[lVar7 + 2], "Program"[lVar7 + 2] == '\0')) ||
       (psVar5[1] = (short)"Program"[lVar7 + 3], "Program"[lVar7 + 3] == '\0')) break;
    lVar7 = lVar7 + 4;
    psVar5 = psVar5 + 4;
  } while (lVar7 < 0x80);
  *(undefined2 *)((longlong)param_1 + 0x112) = 0;
  psVar5 = (short *)(param_1 + 0x23);
  lVar7 = lVar6;
  do {
    psVar5[-2] = (short)"Program"[lVar7];
    if ((("Program"[lVar7] == '\0') ||
        (psVar5[-1] = (short)"Program"[lVar7 + 1], "Program"[lVar7 + 1] == '\0')) ||
       ((*psVar5 = (short)"Program"[lVar7 + 2], "Program"[lVar7 + 2] == '\0' ||
        (psVar5[1] = (short)"Program"[lVar7 + 3], "Program"[lVar7 + 3] == '\0')))) break;
    lVar7 = lVar7 + 4;
    psVar5 = psVar5 + 4;
  } while (lVar7 < 0x80);
  *(undefined2 *)((longlong)param_1 + 0x212) = 0;
  psVar5 = (short *)(param_1 + 0x43);
  do {
    psVar5[-2] = (short)(char)(&DAT_18249336a)[lVar6];
    if ((((&DAT_18249336a)[lVar6] == '\0') ||
        (psVar5[-1] = (short)(char)(&DAT_18249336b)[lVar6], (&DAT_18249336b)[lVar6] == '\0')) ||
       ((*psVar5 = (short)(char)(&DAT_18249336c)[lVar6], (&DAT_18249336c)[lVar6] == '\0' ||
        (psVar5[1] = (short)(char)(&DAT_18249336d)[lVar6], (&DAT_18249336d)[lVar6] == '\0'))))
    break;
    lVar6 = lVar6 + 4;
    psVar5 = psVar5 + 4;
  } while (lVar6 < 0x80);
  *(undefined2 *)((longlong)param_1 + 0x312) = 0;
  pcVar1 = *(code **)(*(longlong *)param_1[0x67] + 0xc0);
  if (pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    iVar4 = 1;
    if ((int)((longlong *)param_1[0x67])[1] == 3) {
      iVar4 = 0x80;
    }
  }
  else {
    iVar4 = (*pcVar1)();
  }
  *(int *)((longlong)param_1 + 0x314) = iVar4 + -1;
  plVar2 = (longlong *)param_1[0x67];
  if (*(code **)(*plVar2 + 200) ==
      .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__) {
    if ((int)plVar2[1] == 3) {
      iVar3 = (int)plVar2[0x89];
    }
  }
  else {
    iVar3 = (**(code **)(*plVar2 + 200))();
  }
  param_1[99] = (double)iVar3 / (double)*(int *)((longlong)param_1 + 0x314);
  *(undefined4 *)(param_1 + 100) = 0;
  *(undefined4 *)((longlong)param_1 + 0x324) = 0x8001;
  return param_1;
}



############ FUN_ 180474840 size=53 ############

undefined8 FUN_180474840(longlong param_1)

{
  code *pcVar1;
  int iVar2;
  
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0xc0);
  if (pcVar1 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    iVar2 = (*pcVar1)();
    if (iVar2 < 1) {
      return 0;
    }
  }
  return 1;
}



############ FUN_ 180474880 size=456 ############

undefined8 FUN_180474880(longlong param_1,int param_2,undefined4 *param_3)

{
  code *pcVar1;
  longlong lVar2;
  int iVar3;
  undefined4 uVar4;
  longlong *plVar5;
  uint uVar6;
  uint *puVar7;
  longlong local_res20;
  longlong local_28 [2];
  undefined4 *local_18;
  
  local_28[1] = 0xfffffffffffffffe;
  if (param_2 != 0) {
    memset(param_3,0,0x108);
    return 1;
  }
  *param_3 = 0x70727374;
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x28) + 0xc0);
  if (pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    uVar4 = 1;
    if ((int)(*(longlong **)(param_1 + 0x28))[1] == 3) {
      uVar4 = 0x80;
    }
  }
  else {
    uVar4 = (*pcVar1)();
  }
  param_3[0x41] = uVar4;
  FUN_18049c4e0(&local_res20,"Factory Presets");
  lVar2 = DAT_1826739f8;
  local_18 = &DAT_182673984;
  do {
    LOCK();
    uVar6 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar6 != 0);
  if (DAT_1826739f8 == 0) {
    local_28[0] = local_res20;
    uVar6 = *(uint *)(local_res20 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,*(undefined1 *)(DAT_1826739f8 + 0x38),0
                           );
      if (iVar3 < 0) {
        FUN_181234570(*(undefined8 *)(lVar2 + 0x40),local_28,&local_res20,&local_res20);
        goto LAB_1804749a9;
      }
    }
    iVar3 = FUN_1812498b0(lVar2 + 0x18,local_res20,*(undefined1 *)(lVar2 + 0x38),0);
    if (iVar3 < 0) {
      local_28[0] = local_res20;
      uVar6 = *(uint *)(local_res20 + -0x10);
    }
    else {
      plVar5 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar3);
      local_28[0] = *plVar5;
      uVar6 = *(uint *)(local_28[0] + -0x10);
    }
  }
  if ((uVar6 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_28[0] + -0x10) = *(int *)(local_28[0] + -0x10) + 1;
    UNLOCK();
  }
LAB_1804749a9:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar7 = (uint *)(local_res20 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  FUN_1804741b0(param_3 + 1,local_28);
  puVar7 = (uint *)(local_28[0] + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return 0;
}



############ FUN_ 180474a50 size=276 ############

undefined8 FUN_180474a50(longlong param_1,int param_2,uint param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  uint uVar4;
  undefined8 uVar5;
  bool bVar6;
  longlong local_18;
  undefined1 *local_10;
  
  if (param_2 == 0x70727374) {
    pcVar3 = *(code **)(**(longlong **)(param_1 + 0x28) + 0xc0);
    if (pcVar3 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                  vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
      uVar4 = 1;
      if ((int)(*(longlong **)(param_1 + 0x28))[1] == 3) {
        uVar4 = 0x80;
      }
    }
    else {
      uVar4 = (*pcVar3)();
    }
    if (param_3 < uVar4) {
      uVar5 = (**(code **)(**(longlong **)(param_1 + 0x28) + 0xd8))
                        (*(longlong **)(param_1 + 0x28),&local_18,param_3);
      FUN_1804741b0(param_4,uVar5);
      if ((*(uint *)(local_18 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar1 = (int *)(local_18 + -0x10);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free((void *)(local_18 + -0x10));
        }
      }
      return 0;
    }
  }
  local_10 = &DAT_1821dbf98;
  FUN_1804741b0(param_4,&local_10);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar4 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar6 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar4;
    if (bVar6) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return 1;
}



############ FUN_ 18047af10 size=645 ############

void FUN_18047af10(longlong param_1,longlong *param_2)

{
  code *pcVar1;
  uint *puVar2;
  double dVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  longlong *plVar7;
  undefined1 *puVar8;
  uint uVar9;
  int iVar10;
  double dVar11;
  float fVar12;
  undefined4 local_res10 [2];
  double local_res18;
  double local_res20;
  
  iVar4 = (**(code **)(*param_2 + 0x18))(param_2);
  dVar3 = DAT_1824c4520;
  iVar10 = 0;
  if (0 < iVar4) {
    do {
      plVar7 = (longlong *)(**(code **)(*param_2 + 0x20))(param_2,iVar10);
      if (plVar7 != (longlong *)0x0) {
        iVar5 = (**(code **)(*plVar7 + 0x20))(plVar7);
        local_res18 = 0.0;
        local_res10[0] = 0;
        iVar5 = (**(code **)(*plVar7 + 0x28))(plVar7,iVar5 + -1,local_res10,&local_res18);
        if (iVar5 == 0) {
          uVar6 = (**(code **)(*plVar7 + 0x18))(plVar7);
          if (uVar6 == 0x70727374) {
            pcVar1 = *(code **)(**(longlong **)(param_1 + 0x30) + 0xc0);
            if (pcVar1 == .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                          vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
              uVar6 = 1;
              if ((int)(*(longlong **)(param_1 + 0x30))[1] == 3) {
                uVar6 = 0x80;
              }
            }
            else {
              uVar6 = (*pcVar1)();
            }
            iVar5 = 0;
            if (0 < (int)(uVar6 - 1)) {
              iVar5 = uVar6 - 1;
            }
            dVar11 = (double)iVar5 * local_res18 + dVar3;
            local_res20 = dVar11;
            if ((1 < (int)uVar6) && (uVar9 = SUB84(dVar11,0), uVar9 < uVar6)) {
              plVar7 = *(longlong **)(param_1 + 0x30);
              if (*(code **)(*plVar7 + 200) ==
                  .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__) {
                if ((int)plVar7[1] == 3) {
                  uVar6 = *(uint *)(plVar7 + 0x89);
                }
                else {
                  uVar6 = 0;
                }
              }
              else {
                uVar6 = (**(code **)(*plVar7 + 200))();
              }
              if (uVar9 != uVar6) {
                plVar7 = *(longlong **)(param_1 + 0x30);
                if (*(code **)(*plVar7 + 0xd0) ==
                    .?AV?$SpectralProcessor@M$07$01@@::vtbl___AV__SpectralProcessor_M_07_01__) {
                  if ((int)plVar7[1] == 3) {
                    if (uVar9 < *(uint *)((longlong)plVar7 + 0x444)) {
                      FUN_18115d300(plVar7 + 0x80,
                                    *(undefined8 *)(plVar7[0x87] + (longlong)(int)uVar9 * 8));
                    }
                    else {
                      FUN_18115d300(plVar7 + 0x80,0);
                    }
                  }
                }
                else {
                  (**(code **)(*plVar7 + 0xd0))(plVar7,(ulonglong)dVar11 & 0xffffffff);
                }
              }
            }
          }
          else {
            fVar12 = (float)local_res18;
            for (puVar2 = *(uint **)(*(longlong *)(*(longlong *)(param_1 + 0x40) + 0x60) +
                                    (longlong)
                                    (int)(uVar6 % *(uint *)(*(longlong *)(param_1 + 0x40) + 0x6c)) *
                                    8); puVar2 != (uint *)0x0; puVar2 = *(uint **)(puVar2 + 4)) {
              if (*puVar2 == uVar6) {
                plVar7 = *(longlong **)(puVar2 + 2);
                if (plVar7 != (longlong *)0x0) {
                  (**(code **)(*plVar7 + 0x10))(plVar7,fVar12);
                  puVar8 = (undefined1 *)FUN_18047c390();
                  *puVar8 = 1;
                  FUN_1812c3d40(plVar7,fVar12);
                }
                break;
              }
            }
          }
        }
      }
      iVar10 = iVar10 + 1;
    } while (iVar10 < iVar4);
  }
  return;
}



############ FUN_ 18047a420 size=83 ############

undefined8 FUN_18047a420(longlong param_1)

{
  undefined **ppuVar1;
  code *pcVar2;
  int iVar3;
  undefined8 uVar4;
  
  ppuVar1 = (undefined **)**(longlong **)(param_1 + 0x30);
  if (ppuVar1 != juce::JuceAudioProcessor::vftable) {
    uVar4 = (*(code *)ppuVar1[5])();
    return uVar4;
  }
  pcVar2 = *(code **)(*(longlong *)(*(longlong **)(param_1 + 0x30))[5] + 0xc0);
  if (pcVar2 != .?AV?$ModuleDecryptor@VSoothe2_DynamicCryptoManager@eden@pace@@@@::
                vtbl___AV__ModuleDecryptor_VSoothe2_DynamicCryptoManager_eden_pace____) {
    iVar3 = (*pcVar2)();
    if (iVar3 < 1) {
      return 0;
    }
  }
  return 1;
}



############ FUN_ 18115d300 size=958 ############

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

longlong FUN_18115d300(undefined8 param_1,undefined8 param_2)

{
  longlong lVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined1 auStack_1d8 [48];
  undefined *local_1a8;
  undefined8 local_1a0;
  undefined *local_198;
  undefined8 local_190;
  undefined8 local_168;
  undefined4 local_150;
  uint local_14c;
  undefined8 local_148;
  undefined8 local_c0;
  ulonglong local_48;
  
  local_c0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1d8;
  uVar2 = (uint)&stack0x00000000 & 0x7aff;
  iVar3 = uVar2 * uVar2 + 1;
  uVar4 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  uVar2 = (uint)&stack0x00000000 & 0x5bff;
  iVar3 = uVar2 * uVar2 + 1;
  uVar2 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  uVar2 = (int)(uVar2 - 7) >> 0x1f & uVar2 | (int)(uVar4 - 7) >> 0x1f & uVar4;
  local_14c = ((int)(-uVar2 | uVar2) >> 0x1f) * -0xf094 ^ 0xf974;
  local_150 = 0xa30;
  local_1a0 = 0;
  local_190 = 0xd24;
  local_1a8 = &DAT_180bab7d8;
  local_198 = &DAT_180bac4fc;
  local_168 = param_1;
  local_148 = param_2;
  lVar1 = FUN_18115f1b4();
  return (-lVar1 ^ 0xffffffffffffffffU) + 1;
}



############ FUN_ 1811fe4a0 size=290 ############

void FUN_1811fe4a0(LPCRITICAL_SECTION param_1,undefined8 param_2,undefined1 param_3)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  void *local_res8;
  undefined1 *local_res20;
  longlong local_28;
  longlong local_20 [2];
  LPCRITICAL_SECTION local_10;
  
  local_20[1] = 0xfffffffffffffffe;
  local_10 = param_1;
  EnterCriticalSection(param_1);
  FUN_1811fc470(param_1,local_20,param_3);
  local_res20 = &DAT_1821dbf98;
  (**(code **)(*(longlong *)param_1[2].SpinCount + 0x10))
            ((longlong *)param_1[2].SpinCount,&local_res8,&local_res20);
  uVar2 = FUN_18122bf10();
  FUN_18122c1b0(uVar2,&local_28,&DAT_182673950);
  FUN_181246b70(local_res8,&local_28,local_20);
  puVar3 = (uint *)(local_28 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  FUN_1812c29a0(local_res8,param_2);
  if (local_res8 != (void *)0x0) {
    FUN_1812472e0(local_res8);
                    /* WARNING: Subroutine does not return */
    free(local_res8);
  }
  puVar3 = (uint *)(local_20[0] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  LeaveCriticalSection(param_1);
  return;
}



############ FUN_ 1811fc760 size=3247 ############

/* WARNING: Instruction at (ram,0x0001811fd3b5) overlaps instruction at (ram,0x0001811fd3b1)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001811fc7f5) */
/* WARNING: Removing unreachable block (ram,0x0001811fc8d3) */

void FUN_1811fc760(LPCRITICAL_SECTION param_1,undefined8 param_2,undefined8 param_3)

{
  longlong lVar1;
  undefined8 uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int *piVar6;
  ulonglong uVar7;
  uint *puVar8;
  uint *puVar9;
  int iVar10;
  uint uVar11;
  undefined4 *puVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  uint uVar15;
  uint uVar16;
  longlong *plVar17;
  undefined1 (*pauVar18) [16];
  uint uVar19;
  uint uVar20;
  bool bVar21;
  undefined1 unaff_XMM14 [16];
  int unaff_retaddr;
  ulonglong uStack_1c8;
  ulonglong uStack_1c0;
  undefined1 auStack_1b8 [32];
  undefined8 local_198;
  undefined4 local_18c;
  uint local_188;
  undefined8 local_180;
  undefined8 local_178;
  int local_170;
  uint local_16c;
  uint local_168;
  uint local_164;
  undefined4 local_150;
  uint local_14c;
  uint local_148;
  undefined4 local_144;
  undefined8 local_140;
  undefined4 local_138;
  undefined8 local_130;
  LPCRITICAL_SECTION local_110;
  longlong local_108 [2];
  uint local_f8 [2];
  longlong local_f0;
  code *local_e8;
  undefined4 local_e0;
  undefined4 local_dc;
  LPCRITICAL_SECTION local_d8;
  uint local_d0;
  uint local_cc;
  uint local_c8;
  uint local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined8 local_b8;
  uint local_b0;
  uint local_ac;
  uint local_a8;
  uint local_a4;
  undefined1 local_68 [32];
  uint local_48;
  uint local_44;
  ulonglong local_40;
  
  local_b8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  uVar4 = (uint)&stack0x00000000;
  local_144 = 0x980;
  uVar3 = uVar4 & 0x1bf;
  iVar10 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  if ((((iVar10 >> 1) - (iVar10 >> 3)) + iVar10 * 0x55555555 >> 0x1e & 0x68U) == 0) {
    if (((ulonglong)&stack0x00000000 & 0xf80) == 0) {
      iVar10 = (uVar4 & 0x76ff) * (uVar4 & 0x76ff) + 1;
      uVar3 = (iVar10 >> 4) + (iVar10 >> 1) + iVar10 * 0x24924924 >> 0x1d;
      uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3;
    }
    else {
      uVar3 = (((uVar4 & 0x10ff) + 1) * (uVar4 & 0x10ff) + 7) % 0x51;
    }
    local_164 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0x85c9;
  }
  else {
    local_164 = 0x85c9;
  }
  local_164 = local_164 ^ 0x8589;
  uStack_1c0 = 0x1811fc8ff;
  local_180 = param_2;
  local_130 = param_3;
  local_110 = param_1;
  local_d8 = param_1;
  EnterCriticalSection(param_1);
  do {
    uStack_1c0 = 0x1811fc90a;
    FUN_1811fde5a(0xe21c);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    local_138 = 0x587a9850;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    bVar21 = false;
    uVar13 = 0;
    uStack_1c0 = 0x1811fc9cf;
    FUN_1811fb671();
    if ((!bVar21) && ((uVar13 & 0xc0) != 0)) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_18c = 0;
  do {
    plVar17 = local_108;
    puVar12 = &local_dc;
    piVar6 = &local_170;
    uStack_1c0 = 0x1811fca32;
    FUN_1811fab5b();
    *piVar6 = -0x728e2044;
    *puVar12 = 0x29;
    *plVar17 = 0x1811fca37;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = local_170 + 0x9f2404cb;
  uVar3 = (uVar3 >> 4 | uVar3 * 0x10000000) & 0xe1e1e1e1 |
          (uVar3 * 0x10 | uVar3 >> 0x1c) & 0x1e1e1e1e;
  uVar3 = ((uVar3 << 4 | uVar3 >> 0x1c) & 0x87878787 | (uVar3 >> 4 | uVar3 << 0x1c) & 0x78787878) +
          0x4c4027a0;
  uVar3 = (uVar3 * 0x1000 | uVar3 >> 0x14) + 0x1876c4f3;
  uVar3 = (uVar3 * 0x200000 | uVar3 >> 0xb) + 0x821b153f;
  do {
    local_e0 = 8;
    local_108[1] = 0x1811fcaf7;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_108[0] = (int)(uVar3 * 4 & 0xcccccccc | uVar3 >> 2 & 0x33333333) + local_108[0];
  local_170 = 0;
  local_150 = 0;
  uVar13 = (ulonglong)((uint)((ulonglong)dvs_0xfd072124_mfort6317_ >> 0x1c) & 0x88200e9) +
           0x554987a8992bb71a + *(longlong *)(local_108[0] + 4);
  uVar13 = ((uVar13 >> 0x10 | uVar13 << 0x30) & 0xeea61159eea61159 |
           (uVar13 * 0x10000 | uVar13 >> 0x30) & 0x1159eea61159eea6) ^ 0x82f3d1143c75518e;
  uVar13 = (uVar13 << 0x3a | uVar13 >> 6) ^ 0xdae712cd3d6c499d;
  uVar13 = ((uVar13 >> 0x10 | uVar13 << 0x30) & 0x95ba6a4595ba6a45 |
           (uVar13 << 0x10 | uVar13 >> 0x30) & 0x6a4595ba6a4595ba) + 0xc6a73e6f71ec9cab;
  uVar7 = uVar13 * 4 & 0xcccccccccccccccc | uVar13 >> 2 & 0x3333333333333333;
  uVar13 = (uVar7 >> 2 | (uVar13 >> 2) << 0x3e) & 0x9999999999999999 |
           (uVar7 << 2 | (uVar13 & 0x3fffffffffffffff) >> 0x3c) & 0x6666666666666666;
  *(ulonglong *)(local_108[0] + 4) = uVar13;
  dvs_0xfd072124_mfort6317_ =
       (uint *)((longlong)dvs_0xfd072124_mfort6317_ + (uVar13 >> 0x1d & 0x8100c000));
  local_188 = (uint)((ulonglong)*(undefined8 *)(local_108[0] + 4) >> 0x20) & 0x7fffffff;
  local_16c = (uint)(*(ulonglong *)(local_108[0] + 4) >> 0x1d) ^ 0xc27112f9;
  uVar13 = *(ulonglong *)(local_108[0] + 4) ^ 0xbbfc7104dceb8f33;
  local_c0 = 0xec33faa3;
  local_bc = 0x531bcd36;
  uVar3 = (uint)(uVar13 >> 0x20);
  uVar20 = (uVar3 ^ 0x1f906bf5) & 0x66666666 ^ uVar3;
  uVar7 = (ulonglong)uVar20;
  uVar3 = (uVar3 ^ 0x1f906bf5) & 0x99999999 ^ uVar3;
  uVar4 = (uVar3 >> 2 ^ uVar3) >> 4 & 1;
  uVar5 = (local_16c >> 0x11 ^ local_16c) & 0x3fff;
  uVar11 = ((uint)(uVar13 >> 0xc) & 0xfffff ^ (uint)uVar13) >> 9 & 0x7f;
  uVar16 = (uVar20 >> 0xb ^ uVar20) & 3;
  uVar15 = ~((uVar4 * 4 | uVar4) << 4 ^ uVar3);
  uVar3 = ~((uVar5 << 0x11 | uVar5) ^ local_16c);
  uVar16 = ~((uVar16 << 0xb | uVar16) ^ uVar20);
  uVar4 = ~((uVar11 << 0xc | uVar11) << 9 ^ (uint)uVar13) ^ uVar3;
  uVar19 = uVar4 & 0xe074d180 ^ uVar3;
  uVar3 = uVar4 & 0x1f8b2e7f ^ uVar3;
  uVar5 = (uVar15 >> 0x11 ^ uVar15) & 0xff;
  uVar20 = (uVar19 >> 6 ^ uVar19) >> 0x11 & 0xf;
  pauVar18 = (undefined1 (*) [16])(ulonglong)uVar20;
  uVar4 = (uVar3 >> 6 ^ uVar3) & 0xf;
  uVar3 = (uVar4 << 6 | uVar4) ^ uVar3;
  uVar4 = (uVar16 >> 0x11 ^ uVar16) & 0x1ff;
  uVar4 = uVar16 ^ (uVar4 << 0x11 | uVar4) ^ uVar3;
  uVar11 = uVar4 & 0x5b705ebb ^ uVar3;
  uVar16 = uVar11 ^ uVar15 ^ (uVar5 << 0x11 | uVar5);
  uVar15 = ~(uVar16 & 0xaaaaaaaa ^ uVar11);
  uVar5 = ~((uVar20 << 6 | uVar20) << 0x11 ^ uVar19);
  uVar3 = ~(uVar4 & 0xa48fa144 ^ uVar3);
  uVar4 = ~(uVar16 & 0x55555555 ^ uVar11) ^ uVar3;
  uVar11 = uVar4 & 0x7f807f80 ^ uVar3;
  uVar3 = uVar4 & 0x807f807f ^ uVar3;
  local_140 = 0;
  local_178 = 0x180128db0;
  local_198 = 0x18012adac;
  local_d0 = uVar15;
  local_cc = uVar5;
  local_c8 = uVar11;
  local_c4 = uVar3;
  do {
    puVar9 = local_f8;
    puVar8 = &local_14c;
    uStack_1c0 = 0x1811fcf5e;
    FUN_1811fb900();
    uVar2 = rdtsc();
    uVar4 = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    *puVar9 = uVar4;
    *(uint *)-(((ulonglong)puVar8 ^ 0xffffffffffffffff) + 1) =
         (uVar4 * 0x10504 + 0x19030f71) * 0x208082 + 0x92e38490 >> 1;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  local_14c = local_14c ^ local_188;
  uVar13 = (ulonglong)local_14c;
  if (local_14c < 0x5b05b0) {
    do {
      puVar9 = &local_168;
      uStack_1c0 = 0x1811fd03a;
      FUN_1811fd478();
      *puVar9 = 0xf087664a;
      uStack_1c0 = 0x1811fd05e;
      FUN_1811fd753();
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar4 = (~local_168 << 0x16 | ~local_168 >> 10) ^ 0x3733a16f;
    uVar4 = ~((uVar4 >> 0x16 | uVar4 << 10) ^ 0x3a10cb83) + 0x3f16583;
    local_168 = (uVar4 * 0x10000000 | uVar4 >> 4) + 0x34abeef1;
    local_b0 = uVar15;
    local_ac = uVar5;
    local_a8 = uVar11;
    local_a4 = uVar3;
    do {
      local_148 = 0xcf11da5;
      uVar7 = 0;
      local_f0 = 0x1811fd0d3;
      uStack_1c0 = 0x1811fd0f2;
      FUN_1811ff1b9();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar3 = (local_148 >> 0x12 | local_148 << 0xe) + 0x296894cd;
    uVar3 = ~(uVar3 * 0x40 | uVar3 >> 0x1a) ^ 0x22a1cadc;
    local_148 = uVar3 << 0x1a | uVar3 >> 6;
    uStack_1c0 = 0x1811fd13a;
    (*(code *)((int)local_148 + local_f0))(&local_b0,local_68);
    pauVar18 = (undefined1 (*) [16])(ulonglong)local_48;
    iVar10 = 7;
    do {
      uVar3 = ((uint)((ulonglong)pauVar18 >> 0xc) ^ (uint)pauVar18) >> 2 & 0xfff;
      uVar4 = (local_44 >> 5 ^ local_44) >> 8 & 1;
      uVar3 = (uVar3 << 0xc | uVar3) << 2 ^ (uint)pauVar18;
      uVar5 = (uVar3 >> 0x18 | uVar3 << 8) + 0x6e4157a7;
      uVar11 = (local_44 << 0x1c | ((uVar4 << 5 | uVar4) << 8 ^ local_44) >> 4) + 0x20a786ca;
      uVar3 = (uVar5 >> 0xb ^ uVar5) >> 9 & 0x3ff;
      uVar4 = uVar5 ^ (uVar3 << 0xb | uVar3) << 9;
      uVar3 = (uVar11 >> 0x11 ^ uVar11) >> 0xb & 3;
      uVar11 = uVar11 ^ (uVar3 << 0x11 | uVar3) << 0xb;
      uVar5 = (uVar4 >> 4 | uVar5 * 0x10000000) & 0x78787878;
      uVar3 = (uVar4 << 4 | uVar4 >> 0x1c) & 0x87878787 | uVar5;
      uVar4 = (uVar11 >> 0x10 | uVar11 << 0x10) & 0xa3635c9c |
              (uVar11 << 0x10 | uVar11 >> 0x10) & 0x5c9ca363;
      uVar4 = (uVar4 << 0x12 | uVar4 >> 0xe) + 0x607d5440;
      uVar11 = uVar4 ^ (uVar3 << 0x12 | uVar3 >> 0xe) + 0x270a0bab;
      uVar3 = uVar11 & 0x3c3c3c3c ^ uVar4;
      uVar4 = uVar11 & 0xc3c3c3c3 ^ uVar4 ^ uVar3;
      local_44 = uVar4 & 0x8cbe5e76 ^ uVar3;
      uVar3 = uVar4 & 0x7341a189 ^ uVar3;
      pauVar18 = (undefined1 (*) [16])(ulonglong)uVar3;
      iVar10 = iVar10 + -1;
    } while (-1 < iVar10);
    uVar3 = uVar3 + 0x98c757c6;
    uVar3 = (uVar3 >> 4 | uVar3 * 0x10000000) ^ 0xd005f22a;
    local_44 = (~(~(~(uVar3 >> 0x1e | uVar3 << 2) + 0xf0cf10f9) ^ 0x49546c3e) ^ local_168) +
               local_44;
    uVar13 = (ulonglong)local_44;
    if (local_44 != local_16c) {
      do {
        local_e8 = FUN_180bc28c0;
        uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar3 < 0) {
          uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar3 != 0);
      uStack_1c0 = 0x1811fd2ec;
      uStack_1c8 = (ulonglong)uVar5;
      FUN_180bc28c0();
      do {
        uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar3 < 0) {
          uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar3 != 0);
      uVar13 = 0;
    }
  }
  uStack_1c0 = 0x1811fd345;
  FUN_1811fc74f();
  uStack_1c8 = 0;
  uStack_1c0 = uVar7;
                    /* WARNING: Call to offcut address within same function */
  uVar7 = func_0x0001811fd36c();
  if ((uVar7 & 0x400) != 0) {
    *(char *)(uVar13 - 0x39) = *(char *)(uVar13 - 0x39) - (char)uVar13;
    vpshufb_avx(unaff_XMM14,*pauVar18);
  }
  uVar14 = (ulonglong)((int)&uStack_1c8 - 0x38);
  lVar1 = *(longlong *)(uVar14 + 0x38);
  *(longlong *)(uVar14 + 0x38) = lVar1 + 0x165;
  *(longlong *)(uVar14 + 0x30) = lVar1 + 0x942;
  *(longlong *)(uVar14 + 0x28) = lVar1 + 0x74e;
  *(longlong *)(uVar14 + 0x20) = lVar1 + 0x74d;
  *(longlong *)(uVar14 + 0x18) = lVar1 + 0xde52;
  FUN_1811fd479();
  return;
}



############ FUN_ 18047bdf0 size=187 ############

void FUN_18047bdf0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  code *pcVar2;
  
  *param_1 = juce::JuceVST3Component::vftable;
  param_1[1] = juce::JuceVST3Component::vftable;
  param_1[2] = juce::JuceVST3Component::vftable;
  param_1[3] = juce::JuceVST3Component::vftable;
  param_1[4] = juce::JuceVST3Component::vftable;
  if (param_1[9] != 0) {
    LOCK();
    *(undefined1 *)(param_1[9] + 0x621c) = 0;
    UNLOCK();
  }
  if ((param_1[6] != 0) && (*(undefined8 **)(param_1[6] + 0x10) == param_1 + 4)) {
    plVar1 = (longlong *)param_1[6];
    pcVar2 = *(code **)(*plVar1 + 0x130);
    if (pcVar2 == FUN_1812c11d0) {
      LOCK();
      plVar1[2] = 0;
      UNLOCK();
    }
    else {
      (*pcVar2)(plVar1,0,pcVar2,param_4,0xfffffffffffffffe);
    }
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x49]);
}



############ FUN_ 1804de990 size=323 ############

void FUN_1804de990(longlong param_1,longlong *param_2)

{
  code *pcVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  uint uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  int local_138;
  int local_134;
  undefined8 local_130;
  longlong local_128;
  void *local_120;
  char local_18;
  
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x10) + 0x130);
  if (pcVar1 == FUN_1812c11d0) {
    LOCK();
    (*(longlong **)(param_1 + 0x10))[2] = param_2[2];
    UNLOCK();
  }
  else {
    (*pcVar1)();
  }
  uVar2 = 0;
  uVar3 = uVar2;
  uVar5 = uVar2;
  uVar6 = uVar2;
  if (0 < *(int *)(param_1 + 0x280)) {
    do {
      *(undefined8 *)(*(longlong *)(param_1 + 0x28) + uVar5) =
           *(undefined8 *)(*param_2 + (longlong)*(int *)(uVar6 + *(longlong *)(param_1 + 0x18)) * 8)
      ;
      uVar4 = (int)uVar3 + 1;
      uVar3 = (ulonglong)uVar4;
      uVar5 = uVar5 + 8;
      uVar6 = uVar6 + 4;
    } while ((int)uVar4 < *(int *)(param_1 + 0x280));
  }
  local_134 = (int)param_2[3];
  local_138 = *(int *)(param_1 + 0x280);
  local_130 = 0;
  local_120 = (void *)0x0;
  local_18 = '\0';
  FUN_180480d30(&local_138,*(undefined8 *)(param_1 + 0x28),0);
  if (*(char *)(*(longlong *)(param_1 + 0x10) + 0x40) == '\0') {
    FUN_1804df300(param_1,&local_138,(longlong)*(int *)(param_1 + 0x284) * 0x10 + param_2[1]);
  }
  else if (local_18 == '\0') {
    uVar3 = uVar2;
    if (0 < local_138) {
      do {
        memset(*(void **)(uVar3 + local_128),0,(longlong)local_134 << 3);
        uVar4 = (int)uVar2 + 1;
        uVar2 = (ulonglong)uVar4;
        uVar3 = uVar3 + 8;
      } while ((int)uVar4 < local_138);
    }
    LOCK();
    local_18 = '\x01';
    UNLOCK();
  }
                    /* WARNING: Subroutine does not return */
  free(local_120);
}



############ FUN_ 1804dec20 size=518 ############

void FUN_1804dec20(longlong param_1,longlong *param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  code *pcVar1;
  longlong lVar2;
  char cVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  uint uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  int local_148;
  int local_144;
  undefined8 local_140;
  longlong local_138;
  void *local_130;
  char local_28;
  
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x10) + 0x130);
  if (pcVar1 == FUN_1812c11d0) {
    LOCK();
    (*(longlong **)(param_1 + 0x10))[2] = param_2[2];
    UNLOCK();
  }
  else {
    (*pcVar1)();
  }
  uVar4 = 0;
  uVar6 = uVar4;
  uVar8 = uVar4;
  uVar9 = uVar4;
  if (0 < *(int *)(param_1 + 0x280)) {
    do {
      *(undefined8 *)(*(longlong *)(param_1 + 0x28) + uVar8) =
           *(undefined8 *)(*param_2 + (longlong)*(int *)(uVar9 + *(longlong *)(param_1 + 0x18)) * 8)
      ;
      uVar7 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar7;
      uVar8 = uVar8 + 8;
      uVar9 = uVar9 + 4;
    } while ((int)uVar7 < *(int *)(param_1 + 0x280));
  }
  local_144 = (int)param_2[3];
  local_148 = *(int *)(param_1 + 0x280);
  local_140 = 0;
  local_130 = (void *)0x0;
  local_28 = '\0';
  FUN_180480e00(&local_148,*(undefined8 *)(param_1 + 0x28),0);
  if (*(char *)(*(longlong *)(param_1 + 0x10) + 0x40) == '\0') {
    lVar5 = (longlong)*(int *)(param_1 + 0x284) * 0x10 + param_2[1];
    if (*(int *)(*(longlong *)(param_1 + 0x10) + 0x44) == 1) {
      FUN_1804d5df0(param_1 + 0x158,&local_148);
      cVar3 = FUN_1812bd3a0(*(undefined8 *)(param_1 + 8));
      if (cVar3 == '\0') {
        FUN_1804e03c0(*(undefined8 *)(param_1 + 8),param_1 + 0x158,lVar5);
      }
      else {
        FUN_1804e0350();
      }
      FUN_1804d5df0(&local_148,param_1 + 0x158);
    }
    else {
      cVar3 = FUN_1812bd3a0(*(undefined8 *)(param_1 + 8));
      lVar2 = *(longlong *)(param_1 + 8);
      lpCriticalSection = (LPCRITICAL_SECTION)(lVar2 + 0x52);
      if (cVar3 == '\0') {
        EnterCriticalSection(lpCriticalSection);
        (**(code **)(**(longlong **)(lVar2 + 0x28) + 0x38))
                  (*(longlong **)(lVar2 + 0x28),&local_148,lVar5);
      }
      else {
        EnterCriticalSection(lpCriticalSection);
        (**(code **)(**(longlong **)(lVar2 + 0x28) + 0x48))
                  (*(longlong **)(lVar2 + 0x28),&local_148,lVar5);
      }
      LeaveCriticalSection(lpCriticalSection);
    }
  }
  else if (local_28 == '\0') {
    uVar6 = uVar4;
    if (0 < local_148) {
      do {
        memset(*(void **)(uVar6 + local_138),0,(longlong)local_144 << 2);
        uVar7 = (int)uVar4 + 1;
        uVar4 = (ulonglong)uVar7;
        uVar6 = uVar6 + 8;
      } while ((int)uVar7 < local_148);
    }
    LOCK();
    local_28 = '\x01';
    UNLOCK();
  }
                    /* WARNING: Subroutine does not return */
  free(local_130);
}



############ FUN_ 180481590 size=47 ############

void FUN_180481590(longlong param_1)

{
  code *pcVar1;
  
  pcVar1 = *(code **)(**(longlong **)(param_1 + 0x18) + 0x148);
  if (pcVar1 == FUN_1812bffa0) {
    return;
  }
  (*pcVar1)(*(longlong **)(param_1 + 0x18),param_1 + 8);
  return;
}



############ FUN_ 180476110 size=528 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180476110(longlong param_1,longlong *param_2)

{
  uint uVar1;
  longlong *plVar2;
  undefined1 *puVar3;
  int iVar4;
  DWORD DVar5;
  longlong lVar6;
  uint *puVar7;
  bool bVar8;
  undefined1 auStack_1e8 [40];
  undefined1 *local_1c0;
  undefined4 local_1b8;
  undefined1 *local_1b0;
  undefined4 local_1a8 [4];
  undefined8 local_198;
  undefined1 *local_190;
  undefined1 *local_188;
  undefined **local_170;
  undefined1 *local_168;
  undefined4 local_160;
  longlong *local_158;
  undefined ***local_138;
  undefined1 local_128 [256];
  ulonglong local_28;
  
  local_198 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  if (((*(longlong *)(param_1 + 0x18) != 0) &&
      (plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x18) + 0x28), plVar2 != (longlong *)0x0)) &&
     (param_2 != (longlong *)0x0)) {
    local_1c0 = &DAT_1821dbf98;
    local_1b8 = 0;
    iVar4 = (**(code **)(*param_2 + 0x40))(param_2,"channel name",local_128,0x100);
    if (iVar4 == 0) {
      FUN_18049c800(&local_1b0,local_128);
      puVar3 = local_1c0;
      local_190 = local_1c0;
      local_1c0 = local_1b0;
      puVar7 = (uint *)(puVar3 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
    iVar4 = (**(code **)(*param_2 + 0x20))(param_2,"channel color",local_1a8);
    if (iVar4 == 0) {
      local_1b8 = local_1a8[0];
    }
    lVar6 = FUN_1812a7550();
    DVar5 = GetCurrentThreadId();
    if ((ulonglong)DVar5 == *(ulonglong *)(lVar6 + 0x10)) {
      if (*(code **)(*plVar2 + 0x148) != FUN_1812bffa0) {
        (**(code **)(*plVar2 + 0x148))(plVar2,&local_1c0);
      }
    }
    else {
      local_188 = local_1c0;
      if ((*(uint *)(local_1c0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_1c0 + -0x10) = *(int *)(local_1c0 + -0x10) + 1;
        UNLOCK();
      }
      local_170 = std::_Func_impl_no_alloc<<lambda_08732340dbf1f68e67e88870cf60e53d>,void>::vftable;
      local_168 = local_1c0;
      local_160 = local_1b8;
      local_138 = &local_170;
      local_158 = plVar2;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar1 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar8 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar1;
        if (bVar8) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      FUN_1812a7460(&local_170);
    }
    puVar7 = (uint *)(local_1c0 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
}



############ FUN_ 180538478 size=12 ############

void FUN_180538478(longlong param_1)

{
  .?AV?$AudioProcessingModule@M$01@@::vtbl___AV__AudioProcessingModule_M_01__(param_1 + -0x3d0);
  return;
}



############ FUN_ 18048c4c0 size=141 ############

ulonglong FUN_18048c4c0(ulonglong *param_1,longlong *param_2,int param_3)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  longlong *plVar4;
  ulonglong uVar5;
  int iVar6;
  
  iVar6 = *(int *)((longlong)param_1 + 0xc) + param_3;
  if ((int)param_1[1] < iVar6) {
    FUN_18048a300(param_1,iVar6 + 8 + iVar6 / 2 & 0xfffffff8);
  }
  uVar5 = *param_1;
  plVar4 = (longlong *)(uVar5 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8);
  iVar6 = param_3;
  while (iVar6 = iVar6 + -1, -1 < iVar6) {
    lVar3 = *param_2;
    *plVar4 = lVar3;
    uVar2 = *(uint *)(lVar3 + -0x10);
    if ((uVar2 & 0x30000000) == 0) {
      LOCK();
      puVar1 = (uint *)(lVar3 + -0x10);
      uVar2 = *puVar1;
      *puVar1 = *puVar1 + 1;
      UNLOCK();
    }
    uVar5 = (ulonglong)uVar2;
    param_2 = param_2 + 1;
    plVar4 = plVar4 + 1;
  }
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + param_3;
  return uVar5;
}



############ FUN_ 181371350 size=300 ############

undefined8 FUN_181371350(longlong *param_1)

{
  longlong *plVar1;
  int iVar2;
  
  if (param_1 != (longlong *)0x0) {
    FUN_181390bc0(param_1 + 0x53);
    FUN_18138ffc0(param_1 + 0x43);
    FUN_181392710(param_1 + 0x14);
    if ((param_1[0xd] != 0) && ((int)param_1[8] != 0)) {
      iVar2 = 0;
      if (0 < (int)param_1[8]) {
        do {
          FUN_181388250(param_1[0xd] + (longlong)iVar2 * 0x28);
          FUN_181388560((longlong)iVar2 * 0x20 + param_1[0xe]);
          iVar2 = iVar2 + 1;
        } while (iVar2 < (int)param_1[8]);
      }
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[0xd]);
    }
    if ((void *)param_1[10] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[10]);
    }
    if ((void *)param_1[0xc] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[0xc]);
    }
    if ((void *)param_1[0xb] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[0xb]);
    }
    if ((void *)param_1[9] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[9]);
    }
    plVar1 = param_1 + 4;
    if (plVar1 != (longlong *)0x0) {
      if ((void *)*plVar1 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*plVar1);
      }
      *plVar1 = 0;
      param_1[5] = 0;
      param_1[6] = 0;
      param_1[7] = 0;
    }
    if ((*param_1 != 0) && ((code *)param_1[0x67] != (code *)0x0)) {
      (*(code *)param_1[0x67])();
    }
    memset(param_1,0,0x348);
  }
  return 0;
}



############ FUN_ 1812b7ae0 size=876 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812b7ae0(longlong param_1,undefined8 *param_2,int param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined1 uVar4;
  int iVar5;
  undefined8 uVar6;
  uint *_Memory;
  undefined ***_Memory_00;
  bool bVar7;
  undefined1 auStack_368 [32];
  undefined4 local_348;
  undefined ***local_340;
  undefined1 *local_338;
  undefined1 *local_330;
  longlong local_328;
  undefined8 local_320;
  int iStack_318;
  undefined4 uStack_314;
  undefined ***local_310;
  undefined **local_308;
  undefined4 local_300;
  undefined4 uStack_2fc;
  int iStack_2f8;
  undefined4 uStack_2f4;
  undefined ***local_2d0;
  undefined8 local_2c8;
  undefined8 *local_2c0;
  undefined **local_2b8;
  undefined4 local_2b0;
  undefined4 uStack_2ac;
  int iStack_2a8;
  undefined4 uStack_2a4;
  undefined ***local_280;
  undefined1 local_278 [136];
  undefined1 local_1f0 [136];
  undefined1 *local_168;
  undefined4 local_160;
  longlong local_158 [7];
  longlong *local_120;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined8 local_f8;
  undefined1 *local_f0;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined1 *local_d8;
  undefined4 local_d0;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 uStack_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined1 *local_60;
  undefined4 local_58;
  undefined4 local_54;
  ulonglong local_48;
  
  local_2c8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_368;
  *param_2 = 0;
  param_2[1] = 0;
  param_2[2] = 0;
  param_2[3] = 0;
  local_348 = 1;
  if (-1 < param_3) {
    local_2c0 = param_2;
    iVar5 = (**(code **)(**(longlong **)(param_1 + 0x3f0) + 8))();
    if (param_3 < iVar5) {
      local_340 = &local_2b8;
      local_2b8 = std::_Func_impl_no_alloc<<lambda_fca31dbe8763091326c7348c4059f80f>,void>::vftable;
      local_320._0_4_ = (undefined4)param_1;
      uVar2 = (undefined4)local_320;
      local_320._4_4_ = (undefined4)((ulonglong)param_1 >> 0x20);
      uVar3 = local_320._4_4_;
      local_2b0 = (undefined4)local_320;
      uStack_2ac = local_320._4_4_;
      uStack_2a4 = uStack_314;
      local_280 = &local_2b8;
      local_320 = param_1;
      iStack_318 = param_3;
      iStack_2a8 = param_3;
      FUN_18049c4e0(&local_328,"Remove plug-in from list");
      FUN_1812344e0(&local_338,&local_328);
      local_348 = 3;
      _Memory = (uint *)(local_328 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      local_d8 = local_338;
      local_338 = &DAT_1821dbf98;
      local_d0 = 0xffffffff;
      local_90 = 0;
      local_88 = 0;
      uStack_80 = 0;
      local_78 = 0;
      uStack_70 = 0;
      local_68 = 0;
      local_60 = &DAT_1821dbf98;
      local_58 = 0;
      local_54 = 1;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar1 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar7 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar1;
        if (bVar7) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      uVar6 = FUN_1813480d0(&local_d8,&local_2b8);
      uVar6 = FUN_181348200(local_278,uVar6);
      FUN_181348630(param_2,uVar6);
      FUN_1804d80a0(&local_d8);
      local_310 = &local_308;
      local_308 = std::_Func_impl_no_alloc<<lambda_ece3e8ef21cb9174085d2b0f72104b85>,void>::vftable;
      local_300 = uVar2;
      uStack_2fc = uVar3;
      uStack_2f4 = uStack_314;
      local_2d0 = &local_308;
      local_320 = param_1;
      iStack_318 = param_3;
      iStack_2f8 = param_3;
      FUN_18049c4e0(&local_340,"Show folder containing plug-in");
      FUN_1812344e0(&local_330,&local_340);
      local_348 = 7;
      _Memory_00 = local_340 + -2;
      if (((ulonglong)*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *(uint *)_Memory_00;
        *(uint *)_Memory_00 = *(uint *)_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      local_168 = local_330;
      local_330 = &DAT_1821dbf98;
      local_160 = 0xffffffff;
      local_120 = (longlong *)0x0;
      local_118 = 0;
      uStack_110 = 0;
      local_108 = 0;
      uStack_100 = 0;
      local_f8 = 0;
      local_f0 = &DAT_1821dbf98;
      local_e8 = 0;
      local_e4 = 1;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar1 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar7 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar1;
        if (bVar7) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      uVar4 = FUN_1812b9060(*(undefined8 *)(param_1 + 200),param_3);
      local_e4 = CONCAT31(local_e4._1_3_,uVar4);
      if (local_120 != (longlong *)0x0) {
        (**(code **)(*local_120 + 0x20))(local_120,local_120 != local_158);
        local_120 = (longlong *)0x0;
      }
      FUN_180488560(local_158,&local_308);
      if (local_2d0 != (undefined ***)0x0) {
        (*(code *)(*local_2d0)[4])(local_2d0,local_2d0 != &local_308);
        local_2d0 = (undefined ***)0x0;
      }
      uVar6 = FUN_181348200(local_1f0,&local_168);
      FUN_181348630(param_2,uVar6);
      FUN_1804d80a0(&local_168);
    }
  }
}



############ FUN_ 1812b7e70 size=1673 ############

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

void FUN_1812b7e70(longlong param_1,undefined8 *param_2)

{
  int *piVar1;
  uint uVar2;
  ulonglong *puVar3;
  char cVar4;
  undefined8 uVar5;
  longlong lVar6;
  longlong *plVar7;
  uint *puVar8;
  int iVar9;
  int iVar10;
  longlong lVar11;
  void *_Dst;
  undefined8 *puVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  undefined8 *puVar16;
  bool bVar17;
  undefined1 auStack_968 [32];
  uint local_948;
  longlong *local_940;
  undefined ***local_938;
  longlong local_930;
  undefined8 *local_928;
  undefined8 local_920;
  undefined8 local_918;
  undefined8 uStack_910;
  undefined1 *local_908;
  undefined ***local_900;
  longlong local_8f8;
  longlong local_8f0 [9];
  longlong local_8a8;
  longlong local_8a0;
  longlong local_898;
  void *local_880 [2];
  undefined **local_870;
  undefined4 local_868;
  undefined4 uStack_864;
  undefined4 uStack_860;
  undefined4 uStack_85c;
  undefined ***local_838;
  undefined8 local_830;
  undefined8 *local_828;
  undefined **local_820;
  longlong local_818;
  undefined ***local_7e8;
  undefined1 local_658 [136];
  undefined1 local_5d0 [552];
  longlong local_3a8;
  undefined4 local_3a0;
  longlong local_398 [7];
  longlong *local_360;
  undefined8 local_358;
  undefined8 *puStack_350;
  undefined8 *local_348;
  undefined8 *puStack_340;
  undefined8 local_338;
  undefined1 *local_330;
  undefined4 local_328;
  uint local_324;
  undefined1 *local_318;
  undefined4 local_310;
  undefined8 local_2d0;
  undefined8 local_2c8;
  undefined8 uStack_2c0;
  undefined8 local_2b8;
  undefined8 uStack_2b0;
  undefined8 local_2a8;
  undefined1 *local_2a0;
  undefined4 local_298;
  undefined4 local_294;
  ulonglong local_48;
  longlong lVar12;
  
  local_830 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_968;
  uVar14 = 0;
  *param_2 = 0;
  param_2[1] = 0;
  param_2[2] = 0;
  param_2[3] = 0;
  local_948 = 1;
  local_900 = &local_820;
  local_820 = std::_Func_impl_no_alloc<<lambda_c29695f71d8b38fa26b90389946ab495>,void>::vftable;
  local_7e8 = &local_820;
  local_898 = param_1;
  local_828 = param_2;
  local_818 = param_1;
  FUN_18049c4e0(&local_8f8,"Clear list");
  FUN_1812344e0(&local_908,&local_8f8);
  local_948 = 3;
  puVar8 = (uint *)(local_8f8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_318 = local_908;
  local_908 = &DAT_1821dbf98;
  local_310 = 0xffffffff;
  local_2d0 = 0;
  local_2c8 = 0;
  uStack_2c0 = 0;
  local_2b8 = 0;
  uStack_2b0 = 0;
  local_2a8 = 0;
  local_2a0 = &DAT_1821dbf98;
  local_298 = 0;
  local_294 = 1;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar17 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar17) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  uVar5 = FUN_1813480d0(&local_318,&local_820);
  uVar5 = FUN_181348200(local_658,uVar5);
  local_938 = (undefined ***)uVar5;
  if (param_2[2] == param_2[1]) {
    FUN_18051fa90(param_2,param_2[1],uVar5);
  }
  else {
    FUN_181348200(param_2[1],uVar5);
    param_2[1] = param_2[1] + 0x88;
  }
  FUN_1804d80a0(uVar5);
  FUN_1804d80a0(&local_318);
  FUN_181348300(param_2);
  puVar3 = *(ulonglong **)(param_1 + 0xc0);
  local_928 = (undefined8 *)0x0;
  local_920 = 0;
  FUN_18047e060(&local_928,*(undefined4 *)((longlong)puVar3 + 0xc));
  puVar13 = (undefined8 *)*puVar3;
  uVar15 = (ulonglong)
           ((longlong)(puVar13 + *(int *)((longlong)puVar3 + 0xc)) + (7 - (longlong)puVar13)) >> 3;
  if (puVar13 + *(int *)((longlong)puVar3 + 0xc) < puVar13) {
    uVar15 = uVar14;
  }
  iVar10 = local_920._4_4_;
  iVar9 = local_920._4_4_;
  if (uVar15 != 0) {
    do {
      iVar10 = iVar9 + 1;
      local_928[iVar9] = *puVar13;
      puVar13 = puVar13 + 1;
      uVar14 = uVar14 + 1;
      iVar9 = iVar10;
    } while (uVar14 != uVar15);
    local_920 = CONCAT44(iVar10,(undefined4)local_920);
  }
  puVar13 = local_928 + iVar10;
  puVar16 = local_928;
  while( true ) {
    if (puVar16 == puVar13) {
                    /* WARNING: Subroutine does not return */
      free(local_928);
    }
    plVar7 = (longlong *)*puVar16;
    cVar4 = (**(code **)(*plVar7 + 0x40))(plVar7);
    if (cVar4 != '\0') break;
    puVar16 = puVar16 + 1;
  }
  local_938 = &local_870;
  local_870 = std::_Func_impl_no_alloc<<lambda_362c3e15d52cdad817eee0bcb26ce02d>,void>::vftable;
  local_918._0_4_ = (undefined4)param_1;
  local_918._4_4_ = (undefined4)((ulonglong)param_1 >> 0x20);
  uStack_910._0_4_ = SUB84(plVar7,0);
  uStack_910._4_4_ = (undefined4)((ulonglong)plVar7 >> 0x20);
  local_868 = (undefined4)local_918;
  uStack_864 = local_918._4_4_;
  uStack_860 = (undefined4)uStack_910;
  uStack_85c = uStack_910._4_4_;
  local_838 = &local_870;
  local_918 = param_1;
  uStack_910 = plVar7;
  lVar6 = FUN_1812bb3c0(*(undefined8 *)(param_1 + 200),local_880,plVar7);
  uVar5 = (**(code **)(*plVar7 + 0x10))(plVar7,&local_8a0);
  FUN_18049c4e0(local_8f0,"Remove all ");
  plVar7 = (longlong *)FUN_181232d30(local_8f0,uVar5);
  local_930 = *plVar7;
  if ((*(uint *)(local_930 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_930 + -0x10) = *(int *)(local_930 + -0x10) + 1;
    UNLOCK();
  }
  local_948 = local_948 | 4;
  puVar8 = (uint *)(local_8f0[0] + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_940 = &local_930;
  lVar11 = -1;
  do {
    lVar12 = lVar11;
    lVar11 = lVar12 + 1;
  } while (*(char *)(local_930 + lVar11) != '\0');
  FUN_1812342b0(&local_930,lVar12 + 10);
  _Dst = (void *)((int)lVar11 + local_930);
  memcpy(_Dst," plug-ins",9);
  *(undefined1 *)((longlong)_Dst + 9) = 0;
  local_8a8 = local_930;
  if ((*(uint *)(local_930 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_930 + -0x10) = *(int *)(local_930 + -0x10) + 1;
    UNLOCK();
  }
  local_948 = local_948 | 8;
  puVar8 = (uint *)(local_930 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  local_3a8 = local_930;
  local_3a0 = 0xffffffff;
  local_360 = (longlong *)0x0;
  local_358 = 0;
  puStack_350 = (undefined8 *)0x0;
  local_348 = (undefined8 *)0x0;
  puStack_340 = (undefined8 *)0x0;
  local_338 = 0;
  local_330 = &DAT_1821dbf98;
  local_328 = 0;
  local_324 = 1;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar17 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar17) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_324 = (uint)(*(int *)(lVar6 + 0xc) != 0);
  local_328 = 0;
  local_330 = &DAT_1821dbf98;
  local_338 = 0;
  puStack_340 = (undefined8 *)0x0;
  local_348 = (undefined8 *)0x0;
  puStack_350 = (undefined8 *)0x0;
  local_358 = 0;
  local_3a0 = 0xffffffff;
  local_360 = (longlong *)0x0;
  FUN_180488560(local_398,&local_870);
  if (local_838 != (undefined ***)0x0) {
    (*(code *)(*local_838)[4])(local_838,local_838 != &local_870);
    local_838 = (undefined ***)0x0;
  }
  uVar5 = FUN_181348200(local_5d0,&local_3a8);
  local_940 = (longlong *)uVar5;
  if (param_2[2] == param_2[1]) {
    FUN_18051fa90(param_2,param_2[1],uVar5);
  }
  else {
    FUN_181348200(param_2[1],uVar5);
    param_2[1] = param_2[1] + 0x88;
  }
  FUN_1804d80a0(uVar5);
  puVar8 = (uint *)(local_330 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (puStack_340 != (undefined8 *)0x0) {
    piVar1 = (int *)(puStack_340 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puStack_340)(puStack_340,1);
    }
  }
  if (local_348 != (undefined8 *)0x0) {
    piVar1 = (int *)(local_348 + 0x17);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*local_348)(local_348,1);
    }
  }
  if (puStack_350 != (undefined8 *)0x0) {
    (**(code **)*puStack_350)(puStack_350,1);
  }
  FUN_1804db930(&local_358);
  if (local_360 != (longlong *)0x0) {
    (**(code **)(*local_360 + 0x20))(local_360,local_360 != local_398);
    local_360 = (longlong *)0x0;
  }
  puVar8 = (uint *)(local_3a8 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_8a0 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  FUN_1804dca40(local_880);
                    /* WARNING: Subroutine does not return */
  free(local_880[0]);
}



############ FUN_ 181318c60 size=1093 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000181318dda) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181318c60(longlong param_1)

{
  int *piVar1;
  longlong *plVar2;
  uint uVar3;
  void *_Memory;
  undefined8 uVar4;
  undefined8 *puVar5;
  uint *puVar6;
  int iVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  bool bVar10;
  undefined1 auStack_2e8 [40];
  longlong local_2c0;
  undefined8 local_2b8;
  longlong lStack_2b0;
  longlong local_2a8;
  undefined8 *puStack_2a0;
  longlong local_298;
  int iStack_290;
  undefined4 uStack_28c;
  undefined **local_288;
  longlong local_280;
  undefined8 uStack_278;
  undefined ***local_250;
  undefined8 local_248;
  undefined8 local_240;
  undefined1 local_238 [8];
  undefined8 local_230;
  undefined8 uStack_228;
  undefined8 local_220;
  undefined8 uStack_218;
  undefined8 local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined4 local_1f8;
  undefined1 local_1f4;
  undefined4 local_1f0;
  undefined1 local_1e8 [32];
  undefined8 *local_1c8;
  undefined1 local_1a0 [32];
  undefined8 *local_180;
  undefined1 local_158 [144];
  longlong local_c8;
  undefined4 local_c0;
  longlong local_b8 [7];
  longlong *local_80;
  void *local_78;
  undefined8 *puStack_70;
  undefined8 *local_68;
  undefined8 *puStack_60;
  undefined8 local_58;
  undefined1 *local_50;
  undefined4 local_48;
  undefined4 local_44;
  ulonglong local_38;
  
  local_248 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_2e8;
  local_2b8 = 0;
  lStack_2b0 = 0;
  local_2a8 = 0;
  puStack_2a0 = (undefined8 *)0x0;
  uVar8 = 0;
  uVar9 = uVar8;
  if (0 < *(int *)(param_1 + 0xf4)) {
    do {
      plVar2 = *(longlong **)(uVar9 + *(longlong *)(param_1 + 0xe8));
      iVar7 = (int)uVar8;
      if ((*(byte *)(*plVar2 + 0xa8) >> 1 & 1) == 0) {
        local_288 = std::_Func_impl_no_alloc<<lambda_333d85f356a3a7a029605f50f67b6127>,void>::
                    vftable;
        uStack_278 = CONCAT44(uStack_28c,iVar7);
        local_250 = &local_288;
        local_2c0 = plVar2[1];
        if ((*(uint *)(local_2c0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_2c0 + -0x10) = *(int *)(local_2c0 + -0x10) + 1;
          UNLOCK();
        }
        local_c0 = 0xffffffff;
        local_80 = (longlong *)0x0;
        local_78 = (void *)0x0;
        puStack_70 = (undefined8 *)0x0;
        local_68 = (undefined8 *)0x0;
        puStack_60 = (undefined8 *)0x0;
        local_58 = 0;
        local_50 = &DAT_1821dbf98;
        local_48 = 0;
        local_44 = 1;
        local_298 = param_1;
        iStack_290 = iVar7;
        local_280 = param_1;
        local_c8 = local_2c0;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar3 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar10 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar3;
          if (bVar10) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
        local_44 = (uint)CONCAT11(iVar7 == *(int *)(param_1 + 0x108),1);
        local_48 = 0;
        local_50 = &DAT_1821dbf98;
        local_58 = 0;
        puStack_60 = (undefined8 *)0x0;
        local_68 = (undefined8 *)0x0;
        puStack_70 = (undefined8 *)0x0;
        local_78 = (void *)0x0;
        local_c0 = 0xffffffff;
        local_288 = std::_Func_impl_no_alloc<<lambda_333d85f356a3a7a029605f50f67b6127>,void>::
                    vftable;
        local_80 = (longlong *)0x0;
        FUN_180488560(local_b8,&local_288);
        if (local_250 != (undefined ***)0x0) {
          (*(code *)(*local_250)[4])(local_250,local_250 != &local_288);
          local_250 = (undefined ***)0x0;
        }
        uVar4 = FUN_181348200(local_158,&local_c8);
        local_240 = uVar4;
        if (local_2a8 == lStack_2b0) {
          FUN_18051fa90(&local_2b8,lStack_2b0,uVar4);
        }
        else {
          FUN_181348200(lStack_2b0,uVar4);
          lStack_2b0 = lStack_2b0 + 0x88;
        }
        FUN_1804d80a0(uVar4);
        puVar6 = (uint *)(local_50 + -0x10);
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
        if (puStack_60 != (undefined8 *)0x0) {
          piVar1 = (int *)(puStack_60 + 1);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            (**(code **)*puStack_60)(puStack_60,1);
          }
        }
        if (local_68 != (undefined8 *)0x0) {
          piVar1 = (int *)(local_68 + 0x17);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            (**(code **)*local_68)(local_68,1);
          }
        }
        if (puStack_70 != (undefined8 *)0x0) {
          (**(code **)*puStack_70)(puStack_70,1);
        }
        _Memory = local_78;
        if (local_78 != (void *)0x0) {
          puVar5 = *(undefined8 **)((longlong)local_78 + 0x18);
          if (puVar5 != (undefined8 *)0x0) {
            LOCK();
            piVar1 = (int *)(puVar5 + 1);
            iVar7 = *piVar1;
            *piVar1 = *piVar1 + -1;
            UNLOCK();
            if (iVar7 == 1) {
              (**(code **)*puVar5)(puVar5,1);
            }
          }
          FUN_18051c930(_Memory);
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        if (local_80 != (longlong *)0x0) {
          (**(code **)(*local_80 + 0x20))(local_80,local_80 != local_b8);
          local_80 = (longlong *)0x0;
        }
        puVar6 = (uint *)(local_c8 + -0x10);
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
      }
      uVar8 = (ulonglong)(iVar7 + 1U);
      uVar9 = uVar9 + 8;
    } while ((int)(iVar7 + 1U) < *(int *)(param_1 + 0xf4));
  }
  local_230 = 0;
  uStack_228 = 0;
  local_220 = 0;
  uStack_218 = 0;
  local_210 = 0;
  local_208 = _DAT_1824c47c0;
  uStack_200 = _UNK_1824c47c8;
  local_1f8 = 0;
  local_1f4 = 0;
  local_1f0 = 1;
  puVar5 = (undefined8 *)FUN_18133c1f0(local_238);
  local_230 = *puVar5;
  uVar4 = FUN_181347f60(&local_230,local_1a0,param_1);
  uVar4 = FUN_1812f0830(uVar4,local_1e8,*(undefined8 *)(param_1 + 0x118));
  FUN_1812f0230(&local_2b8,uVar4,0);
  if (local_1c8 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_1c8 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_1c8)(local_1c8,1);
    }
  }
  if (local_180 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(local_180 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*local_180)(local_180,1);
    }
  }
  if (puStack_2a0 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puStack_2a0 + 1);
    iVar7 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar7 == 1) {
      (**(code **)*puStack_2a0)(puStack_2a0,1);
    }
  }
  FUN_18051c930(&local_2b8);
}



############ FUN_ 181a20d00 size=95 ############

void Catch_All_181a20d00(undefined8 param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  
  lVar1 = *(longlong *)(param_2 + 0x78) + *(longlong *)(param_2 + 0x20) * 2;
  lVar2 = *(longlong *)(param_2 + 0x20) + *(longlong *)(param_2 + 0x78);
  uVar3 = *(undefined8 *)(param_2 + 0x70);
  FUN_1805d6950(uVar3,lVar2,lVar1);
  puVar4 = (undefined8 *).?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(uVar3);
  FUN_1805d5c60(lVar1,*puVar4,lVar2);
  *puVar4 = *(undefined8 *)(param_2 + 0x80);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
}



############ FUN_ 181a20d87 size=70 ############

void Catch_All_181a20d87(undefined8 param_1,longlong param_2)

{
  undefined8 *puVar1;
  
  puVar1 = (undefined8 *)
           .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(*(undefined8 *)(param_2 + 0x70));
  FUN_1805d6950(*(undefined8 *)(param_2 + 0x70),*(undefined8 *)(param_2 + 0x88),*puVar1,
                *(undefined8 *)(param_2 + 0x78));
  *puVar1 = *(undefined8 *)(param_2 + 0x80);
                    /* WARNING: Subroutine does not return */
  _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
}



############ FUN_ 180590f70 size=409 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180590f70(undefined ***param_1)

{
  undefined ***pppuVar1;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98 [7];
  undefined ***local_60;
  undefined **local_58 [7];
  undefined ***local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_98[0] = std::
                _Func_impl_no_alloc<<lambda_adc92708ac8d14747b01cac6365f2717>,bool,juce::Component*___ptr64>
                ::vftable;
  local_60 = local_98;
  local_20 = (undefined ***)0x0;
  if ((code *)PTR_FUN_1824bf9f0 == FUN_180586db0) {
    local_58[0] = std::
                  _Func_impl_no_alloc<<lambda_cb11d1e13129ec2f59609c71f06dfc37>,bool,juce::Component*___ptr64>
                  ::vftable;
    local_20 = local_58;
  }
  else {
    local_20 = (undefined ***)(*(code *)PTR_FUN_1824bf9f0)(local_98,local_58);
  }
  FUN_180488cd0(local_98);
  pppuVar1 = (undefined ***)param_1[7];
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == param_1) {
      if ((code *)(*pppuVar1)[1] == FUN_180586db0) {
        local_98[0] = std::
                      _Func_impl_no_alloc<<lambda_cb11d1e13129ec2f59609c71f06dfc37>,bool,juce::Component*___ptr64>
                      ::vftable;
        local_60 = local_98;
        FUN_180488cd0(param_1);
      }
      else {
        local_60 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,local_98);
        FUN_180488cd0(param_1);
      }
    }
    else {
      param_1[7] = (undefined **)0x0;
      local_60 = pppuVar1;
    }
  }
  FUN_18057bc30(param_1,local_58);
  if (local_20 != (undefined ***)0x0) {
    if ((code *)(*local_20)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_20 != local_58) {
                    /* WARNING: Subroutine does not return */
        free(local_20);
      }
    }
    else {
      (*(code *)(*local_20)[4])();
    }
  }
  if (local_60 != (undefined ***)0x0) {
    if ((code *)(*local_60)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_60 != local_98) {
                    /* WARNING: Subroutine does not return */
        free(local_60);
      }
    }
    else {
      (*(code *)(*local_60)[4])();
    }
  }
}



############ FUN_ 181227380 size=506 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181227380(undefined8 *param_1,undefined8 *param_2)

{
  longlong *plVar1;
  undefined ***pppuVar2;
  char cVar3;
  undefined8 uVar4;
  undefined ***pppuVar5;
  uint uVar6;
  undefined1 auStack_e8 [32];
  uint local_c8;
  undefined8 local_c0;
  undefined8 *local_b8;
  undefined **local_a8;
  longlong local_a0;
  undefined ***local_70;
  undefined **local_68 [7];
  undefined ***local_30;
  ulonglong local_28;
  
  local_c0 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_c8 = 0;
  local_b8 = param_2;
  cVar3 = (**(code **)(*(longlong *)*param_1 + 0xa0))();
  if ((cVar3 == '\0') || (param_1[1] == 0)) {
    local_30 = (undefined ***)0x0;
    pppuVar5 = local_68;
    uVar6 = 2;
  }
  else {
    local_70 = (undefined ***)0x0;
    plVar1 = *(longlong **)(param_1[1] + 0x38);
    if (plVar1 != (longlong *)0x0) {
      if ((undefined **)*plVar1 ==
          std::
          _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
          ::vftable) {
        local_a8 = std::
                   _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
                   ::vftable;
        local_a0 = plVar1[1];
        local_70 = &local_a8;
      }
      else {
        local_70 = (undefined ***)(**(code **)*plVar1)(plVar1,&local_a8);
      }
    }
    pppuVar5 = &local_a8;
    uVar6 = 1;
  }
  param_2[7] = 0;
  pppuVar2 = (undefined ***)pppuVar5[7];
  local_c8 = uVar6;
  if (pppuVar2 != (undefined ***)0x0) {
    if (pppuVar2 == pppuVar5) {
      if (*pppuVar2 ==
          std::
          _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
          ::vftable) {
        *param_2 = std::
                   _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
                   ::vftable;
        param_2[1] = pppuVar2[1];
        param_2[7] = param_2;
        FUN_18049b770(pppuVar5);
      }
      else {
        uVar4 = (*(code *)(*pppuVar2)[1])(pppuVar2,param_2);
        param_2[7] = uVar4;
        FUN_18049b770(pppuVar5);
      }
    }
    else {
      param_2[7] = pppuVar2;
      pppuVar5[7] = (undefined **)0x0;
    }
  }
  if (((uVar6 & 2) != 0) && (uVar6 = uVar6 & 0xfffffffd, local_30 != (undefined ***)0x0)) {
    if (*local_30 ==
        std::
        _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
        ::vftable) {
      if (local_30 != local_68) {
                    /* WARNING: Subroutine does not return */
        free(local_30);
      }
    }
    else {
      (*(code *)(*local_30)[4])(local_30);
    }
  }
  if (((uVar6 & 1) != 0) && (local_70 != (undefined ***)0x0)) {
    if (*local_70 ==
        std::
        _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
        ::vftable) {
      if (local_70 != &local_a8) {
                    /* WARNING: Subroutine does not return */
        free(local_70);
      }
    }
    else {
      (*(code *)(*local_70)[4])();
    }
  }
}



############ FUN_ 180585290 size=310 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180585290(undefined ***param_1,undefined8 *param_2)

{
  undefined ***pppuVar1;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98;
  undefined8 local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = *param_2;
  local_98 = std::_Func_impl_no_alloc<<lambda_75c056156476915ae87169b15f634da1>,void>::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_20 = (longlong *)(*(code *)PTR_FUN_1824b8f28)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar1 = (undefined ***)param_1[7];
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == param_1) {
      local_60 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_98);
      pppuVar1 = (undefined ***)param_1[7];
      if (pppuVar1 == (undefined ***)0x0) goto LAB_180585360;
      (*(code *)(*pppuVar1)[4])(pppuVar1,pppuVar1 != param_1);
      pppuVar1 = local_60;
    }
    local_60 = pppuVar1;
    param_1[7] = (undefined **)0x0;
  }
LAB_180585360:
  FUN_180488560(param_1,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
  }
}



############ FUN_ 180585400 size=310 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180585400(undefined ***param_1,undefined8 *param_2)

{
  undefined ***pppuVar1;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98;
  undefined8 local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = *param_2;
  local_98 = std::_Func_impl_no_alloc<<lambda_e0d341bc64bdea53c487a1659f6a6a52>,void>::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_20 = (longlong *)(*(code *)PTR_FUN_1824ba760)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar1 = (undefined ***)param_1[7];
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == param_1) {
      local_60 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_98);
      pppuVar1 = (undefined ***)param_1[7];
      if (pppuVar1 == (undefined ***)0x0) goto LAB_1805854d0;
      (*(code *)(*pppuVar1)[4])(pppuVar1,pppuVar1 != param_1);
      pppuVar1 = local_60;
    }
    local_60 = pppuVar1;
    param_1[7] = (undefined **)0x0;
  }
LAB_1805854d0:
  FUN_180488560(param_1,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
  }
}



############ FUN_ 1813f4190 size=559 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813f4190(undefined8 *param_1)

{
  undefined ***pppuVar1;
  undefined ***pppuVar2;
  undefined1 auStack_d8 [32];
  undefined8 local_b8;
  undefined8 *local_b0;
  undefined **local_98;
  undefined8 *local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_b8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_d8;
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = SpringAnimatedComponent::vftable;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 1;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  *(undefined4 *)(param_1 + 0x1b) = 0;
  local_b0 = param_1;
  FUN_181408890(param_1 + 0x1c);
  FUN_181411b10(param_1 + 0x1c,"position",DAT_1824c3ea4);
  local_98 = std::
             _Func_impl_no_alloc<<lambda_5edcfdc3eec74465a88dcc6efdec703f>,void,juce::StringRef,float>
             ::vftable;
  local_60 = &local_98;
  local_90 = param_1;
  FUN_181410000(param_1 + 0x1c,&local_98);
  pppuVar1 = (undefined ***)(param_1 + 0x1f);
  local_98 = std::_Func_impl_no_alloc<<lambda_5853be328c8769212f20c7bc74faa654>,void>::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_90 = param_1;
  local_20 = (longlong *)(*(code *)PTR_FUN_1824b21c0)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar2 = (undefined ***)param_1[0x26];
  if (pppuVar2 != (undefined ***)0x0) {
    if (pppuVar2 == pppuVar1) {
      local_60 = (undefined ***)(*(code *)(*pppuVar2)[1])(pppuVar2,&local_98);
      pppuVar2 = (undefined ***)param_1[0x26];
      if (pppuVar2 == (undefined ***)0x0) goto LAB_1813f435a;
      (*(code *)(*pppuVar2)[4])(pppuVar2,pppuVar2 != pppuVar1);
      pppuVar2 = local_60;
    }
    local_60 = pppuVar2;
    param_1[0x26] = 0;
  }
LAB_1813f435a:
  FUN_180488560(pppuVar1,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
  }
}



############ FUN_ 1805842a0 size=471 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805842a0(undefined ***param_1,longlong param_2)

{
  undefined8 *puVar1;
  undefined ***pppuVar2;
  undefined ***pppuVar3;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98 [7];
  undefined ***local_60;
  undefined **local_58 [7];
  undefined ***local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_60 = (undefined ***)0x0;
  puVar1 = *(undefined8 **)(param_2 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    if (*(code **)*puVar1 == FUN_180586dd0) {
      local_98[0] = std::
                    _Func_impl_no_alloc<<lambda_08aee2dacd76f4330974885e6a69dd09>,void,juce::TextEditor&___ptr64>
                    ::vftable;
      local_60 = local_98;
    }
    else {
      local_60 = (undefined ***)(**(code **)*puVar1)(puVar1,local_98);
    }
  }
  pppuVar3 = local_60;
  if ((local_60 == local_98) || (pppuVar2 = (undefined ***)param_1[7], pppuVar2 == param_1)) {
    local_20 = (undefined ***)0x0;
    if (local_60 != (undefined ***)0x0) {
      if (local_60 == local_98) {
        if ((code *)(*local_60)[1] == FUN_180586dd0) {
          local_58[0] = std::
                        _Func_impl_no_alloc<<lambda_08aee2dacd76f4330974885e6a69dd09>,void,juce::TextEditor&___ptr64>
                        ::vftable;
          local_20 = local_58;
          FUN_180488cd0(local_98);
        }
        else {
          local_20 = (undefined ***)(*(code *)(*local_60)[1])(local_60,local_58);
          FUN_180488cd0(local_98);
        }
      }
      else {
        local_60 = (undefined ***)0x0;
        local_20 = pppuVar3;
      }
    }
    FUN_180584c20(local_98,param_1);
    FUN_180584c20(param_1,local_58);
    if (local_20 != (undefined ***)0x0) {
      if ((code *)(*local_20)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (local_20 != local_58) {
                    /* WARNING: Subroutine does not return */
          free(local_20);
        }
      }
      else {
        (*(code *)(*local_20)[4])();
      }
    }
  }
  else {
    param_1[7] = (undefined **)local_60;
    local_60 = pppuVar2;
  }
  if (local_60 != (undefined ***)0x0) {
    if ((code *)(*local_60)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_60 != local_98) {
                    /* WARNING: Subroutine does not return */
        free(local_60);
      }
    }
    else {
      (*(code *)(*local_60)[4])();
    }
  }
}



############ FUN_ 18056bfe0 size=310 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18056bfe0(undefined ***param_1,undefined8 *param_2)

{
  undefined ***pppuVar1;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98;
  undefined8 local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = *param_2;
  local_98 = std::
             _Func_impl_no_alloc<<lambda_6828b8f2df6a37336c651ad6a3b1ab98>,void,juce::OpenGLShaderProgram*___ptr64>
             ::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_20 = (longlong *)(*(code *)PTR_vtbl___AUSoothe2VertexData___1824b07f8)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar1 = (undefined ***)param_1[7];
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == param_1) {
      local_60 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_98);
      pppuVar1 = (undefined ***)param_1[7];
      if (pppuVar1 == (undefined ***)0x0) goto LAB_18056c0b0;
      (*(code *)(*pppuVar1)[4])(pppuVar1,pppuVar1 != param_1);
      pppuVar1 = local_60;
    }
    local_60 = pppuVar1;
    param_1[7] = (undefined **)0x0;
  }
LAB_18056c0b0:
  FUN_180488560(param_1,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
  }
}



############ FUN_ 18057a900 size=409 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18057a900(undefined ***param_1)

{
  undefined ***pppuVar1;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98 [7];
  undefined ***local_60;
  undefined **local_58 [7];
  undefined ***local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_98[0] = std::
                _Func_impl_no_alloc<<lambda_4f00b88a95b672cdf84c4424cc78372a>,bool,juce::Component*___ptr64>
                ::vftable;
  local_60 = local_98;
  local_20 = (undefined ***)0x0;
  if ((code *)PTR_FUN_1824b5ad8 == FUN_180586db0) {
    local_58[0] = std::
                  _Func_impl_no_alloc<<lambda_cb11d1e13129ec2f59609c71f06dfc37>,bool,juce::Component*___ptr64>
                  ::vftable;
    local_20 = local_58;
  }
  else {
    local_20 = (undefined ***)(*(code *)PTR_FUN_1824b5ad8)(local_98,local_58);
  }
  FUN_180488cd0(local_98);
  pppuVar1 = (undefined ***)param_1[7];
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == param_1) {
      if ((code *)(*pppuVar1)[1] == FUN_180586db0) {
        local_98[0] = std::
                      _Func_impl_no_alloc<<lambda_cb11d1e13129ec2f59609c71f06dfc37>,bool,juce::Component*___ptr64>
                      ::vftable;
        local_60 = local_98;
        FUN_180488cd0(param_1);
      }
      else {
        local_60 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,local_98);
        FUN_180488cd0(param_1);
      }
    }
    else {
      param_1[7] = (undefined **)0x0;
      local_60 = pppuVar1;
    }
  }
  FUN_18057bc30(param_1,local_58);
  if (local_20 != (undefined ***)0x0) {
    if ((code *)(*local_20)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_20 != local_58) {
                    /* WARNING: Subroutine does not return */
        free(local_20);
      }
    }
    else {
      (*(code *)(*local_20)[4])();
    }
  }
  if (local_60 != (undefined ***)0x0) {
    if ((code *)(*local_60)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_60 != local_98) {
                    /* WARNING: Subroutine does not return */
        free(local_60);
      }
    }
    else {
      (*(code *)(*local_60)[4])();
    }
  }
}



############ FUN_ 18057a740 size=417 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18057a740(undefined ***param_1,undefined8 *param_2)

{
  undefined ***pppuVar1;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98;
  undefined8 local_90;
  undefined ***local_60;
  undefined **local_58 [7];
  undefined ***local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = *param_2;
  local_98 = std::_Func_impl_no_alloc<<lambda_477b927155b250ea6944920b66bd5f2e>,void,juce::String>::
             vftable;
  local_60 = &local_98;
  local_20 = (undefined ***)0x0;
  if ((code *)PTR_FUN_1824b3708 == FUN_18057c710) {
    local_58[0] = std::
                  _Func_impl_no_alloc<<lambda_04bc323a95f0bc74f374e4edc40cdbe4>,void,juce::String>::
                  vftable;
    local_20 = local_58;
  }
  else {
    local_20 = (undefined ***)(*(code *)PTR_FUN_1824b3708)(&local_98,local_58);
  }
  FUN_180488cd0(&local_98);
  pppuVar1 = (undefined ***)param_1[7];
  if (pppuVar1 != (undefined ***)0x0) {
    if (pppuVar1 == param_1) {
      if ((code *)(*pppuVar1)[1] == FUN_18057c710) {
        local_98 = std::
                   _Func_impl_no_alloc<<lambda_04bc323a95f0bc74f374e4edc40cdbe4>,void,juce::String>
                   ::vftable;
        local_60 = &local_98;
        FUN_180488cd0(param_1);
      }
      else {
        local_60 = (undefined ***)(*(code *)(*pppuVar1)[1])(pppuVar1,&local_98);
        FUN_180488cd0(param_1);
      }
    }
    else {
      param_1[7] = (undefined **)0x0;
      local_60 = pppuVar1;
    }
  }
  FUN_18057bba0(param_1,local_58);
  if (local_20 != (undefined ***)0x0) {
    if ((code *)(*local_20)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_20 != local_58) {
                    /* WARNING: Subroutine does not return */
        free(local_20);
      }
    }
    else {
      (*(code *)(*local_20)[4])();
    }
  }
  if (local_60 != (undefined ***)0x0) {
    if ((code *)(*local_60)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_60 != &local_98) {
                    /* WARNING: Subroutine does not return */
        free(local_60);
      }
    }
    else {
      (*(code *)(*local_60)[4])();
    }
  }
}



############ FUN_ 1804d9ce0 size=485 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804d9ce0(undefined8 *param_1,undefined8 param_2)

{
  undefined ***pppuVar1;
  undefined ***pppuVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined4 uVar5;
  undefined1 auStack_d8 [32];
  undefined4 local_b8;
  undefined8 local_a8;
  undefined8 *local_a0;
  undefined **local_98;
  undefined8 *local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_d8;
  *param_1 = juce::AudioProcessorValueTreeState::ParameterAdapter::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = param_2;
  param_1[5] = 0;
  param_1[6] = 0;
  local_a0 = param_1;
  uVar3 = (**(code **)(*(longlong *)param_1[4] + 0x88))();
  uVar5 = (**(code **)(*(longlong *)param_1[4] + 0x18))();
  uVar5 = FUN_1804db050(uVar3,uVar5);
  *(undefined4 *)(param_1 + 7) = uVar5;
  *(undefined2 *)((longlong)param_1 + 0x3c) = 0x101;
  *(undefined1 *)((longlong)param_1 + 0x3e) = 0;
  FUN_1812c3e50(param_1[4],param_1);
  local_b8 = 0;
  lVar4 = __RTDynamicCast(param_1[4],0,&juce::RangedAudioParameter::RTTI_Type_Descriptor,
                          &juce::AudioProcessorValueTreeState::Parameter::RTTI_Type_Descriptor);
  if (lVar4 == 0) {
  }
  pppuVar1 = (undefined ***)(lVar4 + 0x1e0);
  local_98 = std::_Func_impl_no_alloc<<lambda_de21e9b740860962018dc5b6f3a4e4c8>,void>::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_90 = param_1;
  local_20 = (longlong *)(*(code *)PTR_FUN_18249b1d0)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar2 = *(undefined ****)(lVar4 + 0x218);
  if (pppuVar2 != (undefined ***)0x0) {
    if (pppuVar2 == pppuVar1) {
      local_60 = (undefined ***)(*(code *)(*pppuVar2)[1])(pppuVar2,&local_98);
      pppuVar2 = *(undefined ****)(lVar4 + 0x218);
      if (pppuVar2 == (undefined ***)0x0) goto LAB_1804d9e4e;
      (*(code *)(*pppuVar2)[4])(pppuVar2,pppuVar2 != pppuVar1);
      pppuVar2 = local_60;
    }
    local_60 = pppuVar2;
    *(undefined8 *)(lVar4 + 0x218) = 0;
  }
LAB_1804d9e4e:
  FUN_180488560(pppuVar1,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
  }
}



############ FUN_ 180488cd0 size=88 ############

void FUN_180488cd0(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if (*(code **)(*_Memory + 0x20) != .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      (**(code **)(*_Memory + 0x20))();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 1811afba0 size=437 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811afba0(undefined8 *param_1,undefined8 param_2,longlong *param_3)

{
  undefined ***pppuVar1;
  undefined8 *puVar2;
  undefined ***pppuVar3;
  longlong *plVar4;
  undefined8 uVar5;
  undefined1 auStack_e8 [32];
  undefined8 local_c8;
  undefined8 *local_c0;
  longlong *local_b8;
  undefined ***local_b0;
  undefined **local_a8 [7];
  undefined ***local_70;
  longlong local_68 [7];
  longlong *local_30;
  ulonglong local_28;
  
  local_c8 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_e8;
  *(undefined4 *)(param_1 + 1) = 0;
  *param_1 = SyncUpdater::vftable;
  param_1[2] = param_2;
  pppuVar1 = (undefined ***)(param_1 + 3);
  param_1[10] = 0;
  puVar2 = (undefined8 *)param_3[7];
  local_c0 = param_1;
  local_b8 = param_3;
  local_b0 = pppuVar1;
  if (puVar2 != (undefined8 *)0x0) {
    uVar5 = (**(code **)*puVar2)(puVar2,pppuVar1);
    param_1[10] = uVar5;
  }
  *(undefined1 *)(param_1 + 0xb) = 1;
  if (param_1[10] != 0) goto LAB_1811afd28;
  local_a8[0] = std::_Func_impl_no_alloc<<lambda_1033d14e5edc874fa8b95e3ef3fb59d5>,void,float>::
                vftable;
  local_70 = local_a8;
  local_30 = (longlong *)0x0;
  local_30 = (longlong *)(*(code *)PTR_FUN_1824952c0)(local_a8,local_68);
  if (local_70 != (undefined ***)0x0) {
    (*(code *)(*local_70)[4])(local_70,local_70 != local_a8);
    local_70 = (undefined ***)0x0;
  }
  pppuVar3 = (undefined ***)param_1[10];
  if (pppuVar3 != (undefined ***)0x0) {
    if (pppuVar3 == pppuVar1) {
      local_70 = (undefined ***)(*(code *)(*pppuVar3)[1])(pppuVar3,local_a8);
      pppuVar3 = (undefined ***)param_1[10];
      if (pppuVar3 == (undefined ***)0x0) goto LAB_1811afcc4;
      (*(code *)(*pppuVar3)[4])(pppuVar3,pppuVar3 != pppuVar1);
      pppuVar3 = local_70;
    }
    local_70 = pppuVar3;
    param_1[10] = 0;
  }
LAB_1811afcc4:
  FUN_180488560(pppuVar1,local_68);
  if (local_30 != (longlong *)0x0) {
    (**(code **)(*local_30 + 0x20))(local_30,local_30 != local_68);
  }
  if (local_70 != (undefined ***)0x0) {
    (*(code *)(*local_70)[4])(local_70,local_70 != local_a8);
  }
LAB_1811afd28:
  plVar4 = (longlong *)param_3[7];
  if (plVar4 != (longlong *)0x0) {
    (**(code **)(*plVar4 + 0x20))(plVar4,plVar4 != param_3);
    param_3[7] = 0;
  }
}



############ FUN_ 18059f120 size=471 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18059f120(undefined ***param_1,longlong param_2)

{
  undefined8 *puVar1;
  undefined ***pppuVar2;
  undefined ***pppuVar3;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined **local_98 [7];
  undefined ***local_60;
  undefined **local_58 [7];
  undefined ***local_20;
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_60 = (undefined ***)0x0;
  puVar1 = *(undefined8 **)(param_2 + 0x38);
  if (puVar1 != (undefined8 *)0x0) {
    if (*(code **)*puVar1 == FUN_180586d50) {
      local_98[0] = std::
                    _Func_impl_no_alloc<<lambda_fed7eabe4e6d8633419e0498333e19c2>,juce::String,juce::String>
                    ::vftable;
      local_60 = local_98;
    }
    else {
      local_60 = (undefined ***)(**(code **)*puVar1)(puVar1,local_98);
    }
  }
  pppuVar3 = local_60;
  if ((local_60 == local_98) || (pppuVar2 = (undefined ***)param_1[7], pppuVar2 == param_1)) {
    local_20 = (undefined ***)0x0;
    if (local_60 != (undefined ***)0x0) {
      if (local_60 == local_98) {
        if ((code *)(*local_60)[1] == FUN_180586d50) {
          local_58[0] = std::
                        _Func_impl_no_alloc<<lambda_fed7eabe4e6d8633419e0498333e19c2>,juce::String,juce::String>
                        ::vftable;
          local_20 = local_58;
          FUN_180488cd0(local_98);
        }
        else {
          local_20 = (undefined ***)(*(code *)(*local_60)[1])(local_60,local_58);
          FUN_180488cd0(local_98);
        }
      }
      else {
        local_60 = (undefined ***)0x0;
        local_20 = pppuVar3;
      }
    }
    FUN_18059f500(local_98,param_1);
    FUN_18059f500(param_1,local_58);
    if (local_20 != (undefined ***)0x0) {
      if ((code *)(*local_20)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
        if (local_20 != local_58) {
                    /* WARNING: Subroutine does not return */
          free(local_20);
        }
      }
      else {
        (*(code *)(*local_20)[4])();
      }
    }
  }
  else {
    param_1[7] = (undefined **)local_60;
    local_60 = pppuVar2;
  }
  if (local_60 != (undefined ***)0x0) {
    if ((code *)(*local_60)[4] == .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__) {
      if (local_60 != local_98) {
                    /* WARNING: Subroutine does not return */
        free(local_60);
      }
    }
    else {
      (*(code *)(*local_60)[4])();
    }
  }
}



############ FUN_ 1812ed680 size=385 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812ed680(longlong *param_1)

{
  undefined ***pppuVar1;
  undefined ***pppuVar2;
  int iVar3;
  undefined1 auStack_c8 [40];
  undefined8 local_a0;
  undefined **local_98;
  longlong *local_90;
  undefined ***local_60;
  longlong local_58 [7];
  longlong *local_20;
  ulonglong local_18;
  
  local_a0 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  if ((char)param_1[0x4d] == '\0') {
  }
  if ((*(byte *)(param_1 + 0x30) >> 1 & 1) != 0) goto LAB_1812ed7d3;
  FUN_1812edc10();
  pppuVar1 = (undefined ***)(param_1 + 0x36);
  local_98 = std::_Func_impl_no_alloc<<lambda_74b4b8f383af5a61ef5d65543f9aa976>,void>::vftable;
  local_60 = &local_98;
  local_20 = (longlong *)0x0;
  local_90 = param_1;
  local_20 = (longlong *)(*(code *)PTR_FUN_1824a1950)(&local_98,local_58);
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])(local_60,local_60 != &local_98);
    local_60 = (undefined ***)0x0;
  }
  pppuVar2 = (undefined ***)param_1[0x3d];
  if (pppuVar2 != (undefined ***)0x0) {
    if (pppuVar2 == pppuVar1) {
      local_60 = (undefined ***)(*(code *)(*pppuVar2)[1])(pppuVar2,&local_98);
      pppuVar2 = (undefined ***)param_1[0x3d];
      if (pppuVar2 == (undefined ***)0x0) goto LAB_1812ed781;
      (*(code *)(*pppuVar2)[4])(pppuVar2,pppuVar2 != pppuVar1);
      pppuVar2 = local_60;
    }
    local_60 = pppuVar2;
    param_1[0x3d] = 0;
  }
LAB_1812ed781:
  FUN_180488560(pppuVar1,local_58);
  if (local_20 != (longlong *)0x0) {
    (**(code **)(*local_20 + 0x20))(local_20,local_20 != local_58);
  }
  if (local_60 != (undefined ***)0x0) {
    (*(code *)(*local_60)[4])
              (local_60,CONCAT71((int7)((ulonglong)&local_98 >> 8),local_60 != &local_98));
  }
LAB_1812ed7d3:
  iVar3 = (**(code **)(*param_1 + 0x168))(param_1);
  FUN_1812eba00(param_1 + 0x1b,iVar3 + 1,0);
}



############ FUN_ 1812a5870 size=38 ############

void FUN_1812a5870(undefined8 *param_1)

{
  *param_1 = juce::ChangeBroadcaster::vftable;
  *(undefined4 *)((longlong)param_1 + 0x2c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[4]);
}



############ FUN_ 18053849c size=9 ############

void FUN_18053849c(longlong param_1)

{
  .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__(param_1 + -0x60);
  return;
}



############ FUN_ 18052d0d0 size=277 ############

void FUN_18052d0d0(longlong param_1,float *param_2,int param_3)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  double dVar4;
  
  uVar2 = 0;
  if (0 < *(int *)(param_1 + 0x240084)) {
    lVar3 = 0;
    do {
      if (uVar2 < *(uint *)(param_1 + 0x7c)) {
        plVar1 = *(longlong **)(lVar3 + *(longlong *)(param_1 + 0x70));
      }
      else {
        plVar1 = (longlong *)0x0;
      }
      if (*(code **)(*plVar1 + 0x18) ==
          .?AV?$IIRFilterExtended@M$01@@::vtbl___AV__IIRFilterExtended_M_01__) {
        dVar4 = (double)*param_2 * (double)plVar1[0x17] + (double)plVar1[(longlong)param_3 + 0x13];
        plVar1[(longlong)param_3 + 0x13] =
             (longlong)
             (((double)*param_2 * (double)plVar1[0x18] - dVar4 * (double)plVar1[0x1a]) +
             (double)plVar1[(longlong)param_3 + 0x15]);
        plVar1[(longlong)param_3 + 0x15] =
             (longlong)((double)*param_2 * (double)plVar1[0x19] - dVar4 * (double)plVar1[0x1b]);
        *param_2 = (float)dVar4;
      }
      else {
        (**(code **)(*plVar1 + 0x18))(plVar1,param_2,param_3);
      }
      uVar2 = uVar2 + 1;
      lVar3 = lVar3 + 8;
    } while ((int)uVar2 < *(int *)(param_1 + 0x240084));
  }
  return;
}



############ FUN_ 18058eaec size=12 ############

void .?AVLines@?$FilterGraphGrid@M@@::vtbl___AVLines___FilterGraphGrid_M__(longlong param_1)

{
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -0x9c68);
  return;
}



############ FUN_ 18058ea98 size=12 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(longlong param_1)

{
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -0xe0);
  return;
}



############ FUN_ 18058eac8 size=12 ############

void FUN_18058eac8(longlong param_1)

{
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -200);
  return;
}



############ FUN_ 18058ead4 size=12 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(longlong param_1)

{
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1 + -0xe8);
  return;
}



############ FUN_ 1812de350 size=70 ############

void FUN_1812de350(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  char cVar1;
  
  cVar1 = FUN_1813162d0(*(undefined8 *)(param_1 + 0x1c8));
  if (cVar1 == '\0') {
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2,param_3);
  }
  return;
}



############ FUN_ 1812e53a0 size=97 ############

void FUN_1812e53a0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  char cVar1;
  
  if (((*(byte *)(param_1 + 0xa9) & 0x10) == 0) &&
     (((*(longlong *)(param_1 + 0x18) == 0 || (cVar1 = FUN_18133eaa0(), cVar1 != '\0')) &&
      (cVar1 = FUN_180504800(*(undefined8 *)(param_1 + 0x200)), cVar1 != '\0')))) {
    return;
  }
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2,param_3);
  return;
}



############ FUN_ 1812e74f0 size=178 ############

void FUN_1812e74f0(longlong param_1,undefined8 param_2,float *param_3)

{
  longlong *plVar1;
  bool bVar2;
  
  bVar2 = false;
  if ((*param_3 != 0.0) &&
     (plVar1 = *(longlong **)(*(longlong *)(param_1 + 200) + 200),
     (*(byte *)(plVar1 + 0x15) & 2) != 0)) {
    bVar2 = true;
    (**(code **)(*plVar1 + 0x40))();
  }
  if ((param_3[1] == 0.0) ||
     (plVar1 = *(longlong **)(*(longlong *)(param_1 + 200) + 0xc0),
     (*(byte *)(plVar1 + 0x15) & 2) == 0)) {
    if (!bVar2) {
      .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2,param_3)
      ;
    }
  }
  else {
    (**(code **)(*plVar1 + 0x40))(plVar1,param_2,param_3);
  }
  return;
}



############ FUN_ 181316480 size=63 ############

void FUN_181316480(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  char cVar1;
  
  cVar1 = FUN_1813162d0();
  if (cVar1 == '\0') {
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2,param_3);
  }
  return;
}



############ FUN_ 1813c0ce0 size=189 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813c0ce0(longlong param_1,undefined8 param_2,float *param_3)

{
  undefined1 auStack_58 [32];
  ulonglong local_38;
  float local_30;
  ulonglong local_28;
  
  local_28 = DAT_182615970 ^ (ulonglong)auStack_58;
  if ((((*(byte *)(param_1 + 0x200) & 2) == 0) || (param_3[1] == 0.0)) &&
     (((*(byte *)(param_1 + 0x350) & 2) == 0 || (*param_3 == 0.0)))) {
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__();
  }
  else {
    local_30 = param_3[2];
    local_38 = *(ulonglong *)param_3 & 0xffffffff00000000;
    (**(code **)(*(longlong *)(param_1 + 0x158) + 0x40))((longlong *)(param_1 + 0x158),0,&local_38);
    local_30 = param_3[2];
    local_38 = *(ulonglong *)param_3 & 0xffffffff;
    (**(code **)(*(longlong *)(param_1 + 0x2a8) + 0x40))
              ((longlong *)(param_1 + 0x2a8),param_2,&local_38);
  }
}



############ FUN_ 181550d40 size=581 ############

void FUN_181550d40(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  byte bVar1;
  undefined4 uVar2;
  undefined1 auStack_1f8 [112];
  undefined4 local_188;
  undefined8 *local_168;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 local_128;
  undefined8 local_108;
  undefined8 *local_100;
  undefined8 local_f8;
  ulonglong local_40;
  
  local_108 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  local_188 = DAT_1824c3e28;
  local_168 = param_1;
  local_138 = param_3;
  local_130 = param_3;
  local_128 = param_2;
  local_100 = param_1;
  local_f8 = param_2;
  FUN_1805857c0();
  param_1[0x109] = &DAT_1821dbf98;
  *param_1 = CloudyBoxSlider::vftable;
  param_1[0x16] = CloudyBoxSlider::vftable;
  param_1[0x19] = CloudyBoxSlider::vftable;
  param_1[0x108] = CloudyBoxSlider::vftable;
  param_1[0x10a] = CloudyBoxSlider::vftable;
  param_1[0x10b] = CloudyBoxSlider::vftable;
  param_1[0x10c] = CloudyBoxSlider::vftable;
  *(undefined4 *)(param_1 + 0x10d) = 0;
  *(undefined2 *)((longlong)param_1 + 0x86c) = 0;
  *(undefined1 *)((longlong)param_1 + 0x86e) = 0;
  uVar2 = .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2);
  bVar1 = (byte)param_1;
                    /* WARNING: Call to offcut address within same function */
  func_0x000181550e84(uVar2,param_2);
  FUN_181550f96(bVar1 & (byte)((ulonglong)&stack0x00000000 >> 8));
  return;
}



############ FUN_ 181413ea0 size=282 ############

undefined8 * FUN_181413ea0(undefined8 *param_1,longlong *param_2,undefined4 param_3)

{
  uint uVar1;
  uint *_Memory;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = CloudyContainer::vftable;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  *(undefined4 *)(param_1 + 0x1b) = param_3;
  *(undefined8 *)((longlong)param_1 + 0xdc) = 0;
  *(undefined8 *)((longlong)param_1 + 0xe4) = 0;
  *(undefined8 *)((longlong)param_1 + 0xec) = 0;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1);
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1815073e0 size=1599 ############

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

void FUN_1815073e0(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  uint *puVar2;
  ulonglong uVar3;
  uint uVar4;
  undefined4 *puVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong lVar9;
  int unaff_retaddr;
  undefined1 auStack_1a8 [32];
  ulonglong local_188;
  uint local_180 [2];
  undefined *local_178;
  undefined8 local_160;
  uint local_158;
  int local_150;
  undefined1 *local_140;
  undefined4 local_138;
  undefined4 local_130;
  uint local_12c;
  undefined8 *local_128;
  undefined8 local_118;
  longlong local_110;
  undefined8 *local_108;
  undefined8 local_100;
  undefined4 local_f8;
  undefined4 local_f4;
  longlong local_f0;
  longlong local_e8;
  longlong local_e0;
  undefined8 local_b0;
  undefined8 *local_a8;
  ulonglong local_48;
  
  local_b0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  local_108 = param_1;
  local_100 = param_3;
  local_a8 = param_1;
  FUN_18056b680();
  param_1[0x1a] = &DAT_1821dbf98;
  *param_1 = CloudyBandModeButtonGroup::vftable;
  param_1[0x16] = CloudyBandModeButtonGroup::vftable;
  param_1[0x19] = CloudyBandModeButtonGroup::vftable;
  param_1[0x1b] = CloudyBandModeButtonGroup::vftable;
  param_1[0x1c] = CloudyBandModeButtonGroup::vftable;
  FUN_180585060(param_1 + 0x1d,0);
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = param_2;
  local_128 = param_1 + 0x29;
  FUN_1804877b0(local_128,param_2 + 0x2c8);
  param_1[0x2b] = param_4;
  *(undefined4 *)(param_1 + 0x2c) = 0x41880000;
  local_130 = 0xb80;
  if (((ulonglong)&stack0x00000000 & 0xe00) == 0) {
    uVar4 = 1;
  }
  else {
    uVar4 = 0x36ba44e8;
  }
  local_12c = ((int)(-uVar4 | uVar4) >> 0x1f) * -0xdc5c ^ 0xd09c;
  FUN_18049c4e0(&local_110," band mode group");
  local_118 = *(undefined8 *)(param_1[0x28] + 0x68);
  FUN_1804951c0();
  uVar1 = FUN_181232aa0(&local_f0,&local_118,&local_110);
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar1);
  FUN_1804951e0(local_f0 + -0x10);
  FUN_1804951e0(local_110 + -0x10);
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x18;
  local_188 = 0;
  local_160 = 0x22c;
  local_140 = &LAB_1814153f0;
  local_178 = &DAT_18141561c;
  do {
    plVar8 = &local_e8;
    puVar5 = &local_f8;
    puVar2 = local_180;
    FUN_1815092b9();
    *puVar2 = 0x710d1111;
    *puVar5 = 0x22;
    *plVar8 = 0x181507727;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((local_180[0] << 2 | local_180[0] >> 0x1e) & 0x99999999 |
          (local_180[0] >> 2 | local_180[0] << 0x1e) & 0x66666666) ^ 0x7ef8cb85;
  uVar4 = (uVar4 << 0x18 | uVar4 >> 8) + 0xa38212da;
  uVar4 = (uVar4 >> 2 | uVar4 * 0x40000000) & 0x99999999 | (uVar4 * 4 | uVar4 >> 0x1e) & 0x66666666;
  uVar4 = (uVar4 >> 4 | uVar4 << 0x1c) & 0xe1e1e1e1 | (uVar4 << 4 | uVar4 >> 0x1c) & 0x1e1e1e1e;
  uVar4 = ((uVar4 << 0x10 | uVar4 >> 0x10) & 0xfde70218 |
          (uVar4 >> 0x10 | uVar4 << 0x10) & 0x218fde7) ^ 0xa89b571f;
  local_180[0] = uVar4 >> 0xf | uVar4 << 0x11;
  do {
    local_150 = -0x206bf078;
    local_f4 = 0x59;
    local_e0 = 0x1815077f7;
    FUN_1815066ce();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (local_150 << 1 | (uint)(local_150 < 0)) ^ 0x61a64fee;
  uVar4 = (uVar4 << 0x14 | uVar4 >> 0xc) + 0x8f92d705;
  lVar7 = (longlong)(int)local_180[0];
  uVar4 = ((uVar4 >> 4 | uVar4 * 0x10000000) & 0xb4b4b4b4 |
          (uVar4 * 0x10 | uVar4 >> 0x1c) & 0x4b4b4b4b) ^ 0x6b63aa0b;
  uVar4 = (uVar4 >> 8 | uVar4 << 0x18) ^ 0xfe520ce4;
  lVar9 = (longlong)(int)(uVar4 << 0x16 | uVar4 >> 10);
  local_180[0] = 0;
  local_150 = 0;
  plVar8 = (longlong *)(lVar7 + 4 + local_e8);
  *plVar8 = *plVar8 + (ulonglong)((uint)(*(ulonglong *)(lVar9 + 4 + local_e0) >> 0x1e) & 0x4548);
  uVar3 = *(ulonglong *)(lVar7 + 4 + local_e8);
  uVar6 = (uVar3 >> 0x1e | uVar3 << 0x22) + 0x4f200b1a46f166c9;
  *(ulonglong *)(lVar7 + 4 + local_e8) = uVar6;
  uVar3 = uVar6 >> 0xb & 0xff ^ (ulonglong)*(byte *)(lVar7 + 0xb + local_e8);
  uVar3 = uVar6 ^ (uVar3 << 0x2d | uVar3) << 0xb;
  uVar6 = ~((uVar3 >> 4 | uVar6 << 0x3c) & 0xb4b4b4b4b4b4b4b4 |
           (uVar3 << 4 | uVar3 >> 0x3c) & 0x4b4b4b4b4b4b4b4b);
  uVar3 = (ulonglong)((uint)((uVar6 >> 0x10 ^ uVar6) >> 0x11) & 0x7fff);
  uVar3 = (uVar6 ^ (uVar3 << 0x10 | uVar3) << 0x11) + 0x3b98484f32e678ec;
  uVar3 = (uVar3 * 0x800000 | uVar3 >> 0x29) ^ 0xa84595ed564a5e96;
  *(ulonglong *)(lVar7 + 4 + local_e8) = uVar3;
  plVar8 = (longlong *)(lVar9 + 4 + local_e0);
  *plVar8 = *plVar8 + (ulonglong)((uint)(uVar3 >> 8) & 0x4048c);
  local_160 = CONCAT44(local_160._4_4_,(int)(*(ulonglong *)(lVar7 + 4 + local_e8) >> 0x17)) &
              0xffffffff7fffffff;
  local_158 = (uint)(*(ulonglong *)(lVar7 + 4 + local_e8) >> 7) ^ 0xee8129c7;
  local_188 = *(ulonglong *)(lVar7 + 4 + local_e8) ^ 0xe23de60eb1ee877;
  do {
    local_138 = 0x301299a8;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  FUN_1815098bc();
  FUN_181507a4d();
                    /* WARNING: Could not recover jumptable at 0x000181507b2a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)&stack0x0004e39a)();
  return;
}



############ FUN_ 18158ea10 size=2405 ############

undefined8 *
FUN_18158ea10(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  longlong lVar4;
  uint *puVar5;
  undefined8 *puVar6;
  longlong local_res10;
  longlong *local_res20;
  
  param_1[1] = &DAT_1821dbf98;
  param_1[2] = &DAT_1821dbf98;
  lVar4 = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  *param_1 = XYSliderArea::vftable;
  param_1[0x16] = XYSliderArea::vftable;
  param_1[0x17] = XYSliderArea::vftable;
  param_1[0x18] = XYSliderArea::vftable;
  param_1[0x19] = XYSliderArea::vftable;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  lVar3 = __RTDynamicCast(*(undefined8 *)(param_2 + 0xb0),0,
                          &juce::AudioProcessor::RTTI_Type_Descriptor,
                          &WithAutoCue::RTTI_Type_Descriptor,0);
  if (lVar3 != 0) {
    lVar4 = lVar3 + 0x30;
  }
  param_1[0x1c] = lVar4;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1d));
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = param_4;
  FUN_180580670(param_1 + 0x26);
  FUN_180580670(param_1 + 0x2f);
  param_1[0x2f] = SelectedNodes::vftable;
  plVar1 = param_1 + 0x38;
  param_1[0x39] = &DAT_1821dbf98;
  param_1[0x3a] = &DAT_1821dbf98;
  param_1[0x3b] = 0;
  param_1[0x3c] = 0;
  param_1[0x3d] = 0;
  param_1[0x3e] = 0;
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  param_1[0x41] = 0;
  param_1[0x42] = 0;
  param_1[0x43] = 0;
  param_1[0x44] = 0;
  param_1[0x45] = 0;
  param_1[0x46] = 0;
  param_1[0x47] = 0;
  param_1[0x48] = 0;
  param_1[0x49] = 0;
  param_1[0x4a] = 0;
  param_1[0x4b] = 0;
  param_1[0x4c] = 0;
  *(undefined4 *)(param_1 + 0x4d) = 0;
  *(undefined1 *)((longlong)param_1 + 0x26c) = 0;
  param_1[0x4e] = 0;
  param_1[0x4f] = 0;
  param_1[0x50] = 0;
  param_1[0x51] = 0;
  *plVar1 = (longlong)XYSliderArea::NodeLasso::vftable;
  local_res20 = plVar1;
  FUN_18049c4e0(&local_res10,"NodeLasso");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(plVar1,&local_res10);
  puVar5 = (uint *)(local_res10 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar6 = param_1 + 0x53;
  *puVar6 = 0;
  param_1[0x54] = 0;
  *(undefined4 *)(param_1 + 0x55) = 0;
  FUN_18047e060(puVar6,*(int *)((longlong)param_1 + 0x2a4) + 0x65);
  if (*(int *)((longlong)param_1 + 0x2a4) == 0) {
    puVar6 = (undefined8 *)*puVar6;
  }
  else {
    memmove((void *)((longlong)*puVar6 + 0x328),(void *)*puVar6,
            (longlong)*(int *)((longlong)param_1 + 0x2a4) << 3);
    puVar6 = (undefined8 *)*puVar6;
  }
  *puVar6 = 0;
  puVar6[1] = 0;
  puVar6[2] = 0;
  puVar6[3] = 0;
  puVar6[4] = 0;
  puVar6[5] = 0;
  puVar6[6] = 0;
  puVar6[7] = 0;
  puVar6[8] = 0;
  puVar6[9] = 0;
  puVar6[10] = 0;
  puVar6[0xb] = 0;
  puVar6[0xc] = 0;
  puVar6[0xd] = 0;
  puVar6[0xe] = 0;
  puVar6[0xf] = 0;
  puVar6[0x10] = 0;
  puVar6[0x11] = 0;
  puVar6[0x12] = 0;
  puVar6[0x13] = 0;
  puVar6[0x14] = 0;
  puVar6[0x15] = 0;
  puVar6[0x16] = 0;
  puVar6[0x17] = 0;
  puVar6[0x18] = 0;
  puVar6[0x19] = 0;
  puVar6[0x1a] = 0;
  puVar6[0x1b] = 0;
  puVar6[0x1c] = 0;
  puVar6[0x1d] = 0;
  puVar6[0x1e] = 0;
  puVar6[0x1f] = 0;
  puVar6[0x20] = 0;
  puVar6[0x21] = 0;
  puVar6[0x22] = 0;
  puVar6[0x23] = 0;
  puVar6[0x24] = 0;
  puVar6[0x25] = 0;
  puVar6[0x26] = 0;
  puVar6[0x27] = 0;
  puVar6[0x28] = 0;
  puVar6[0x29] = 0;
  puVar6[0x2a] = 0;
  puVar6[0x2b] = 0;
  puVar6[0x2c] = 0;
  puVar6[0x2d] = 0;
  puVar6[0x2e] = 0;
  puVar6[0x2f] = 0;
  puVar6[0x30] = 0;
  puVar6[0x31] = 0;
  puVar6[0x32] = 0;
  puVar6[0x33] = 0;
  puVar6[0x34] = 0;
  puVar6[0x35] = 0;
  puVar6[0x36] = 0;
  puVar6[0x37] = 0;
  puVar6[0x38] = 0;
  puVar6[0x39] = 0;
  puVar6[0x3a] = 0;
  puVar6[0x3b] = 0;
  puVar6[0x3c] = 0;
  puVar6[0x3d] = 0;
  puVar6[0x3e] = 0;
  puVar6[0x3f] = 0;
  puVar6[0x40] = 0;
  puVar6[0x41] = 0;
  puVar6[0x42] = 0;
  puVar6[0x43] = 0;
  puVar6[0x44] = 0;
  puVar6[0x45] = 0;
  puVar6[0x46] = 0;
  puVar6[0x47] = 0;
  puVar6[0x48] = 0;
  puVar6[0x49] = 0;
  puVar6[0x4a] = 0;
  puVar6[0x4b] = 0;
  puVar6[0x4c] = 0;
  puVar6[0x4d] = 0;
  puVar6[0x4e] = 0;
  puVar6[0x4f] = 0;
  puVar6[0x50] = 0;
  puVar6[0x51] = 0;
  puVar6[0x52] = 0;
  puVar6[0x53] = 0;
  puVar6[0x54] = 0;
  puVar6[0x55] = 0;
  puVar6[0x56] = 0;
  puVar6[0x57] = 0;
  puVar6[0x58] = 0;
  puVar6[0x59] = 0;
  puVar6[0x5a] = 0;
  puVar6[0x5b] = 0;
  puVar6[0x5c] = 0;
  puVar6[0x5d] = 0;
  puVar6[0x5e] = 0;
  puVar6[0x5f] = 0;
  puVar6[0x60] = 0;
  puVar6[0x61] = 0;
  puVar6[0x62] = 0;
  puVar6[99] = 0;
  puVar6[100] = 0;
  *(int *)((longlong)param_1 + 0x2a4) = *(int *)((longlong)param_1 + 0x2a4) + 0x65;
  puVar6 = param_1 + 0x57;
  *puVar6 = 0;
  param_1[0x58] = 0;
  *(undefined4 *)(param_1 + 0x59) = 0;
  FUN_18047e060(puVar6,*(int *)((longlong)param_1 + 0x2c4) + 0x65);
  if (*(int *)((longlong)param_1 + 0x2c4) == 0) {
    puVar6 = (undefined8 *)*puVar6;
  }
  else {
    memmove((void *)((longlong)*puVar6 + 0x328),(void *)*puVar6,
            (longlong)*(int *)((longlong)param_1 + 0x2c4) << 3);
    puVar6 = (undefined8 *)*puVar6;
  }
  *puVar6 = 0;
  puVar6[1] = 0;
  puVar6[2] = 0;
  puVar6[3] = 0;
  puVar6[4] = 0;
  puVar6[5] = 0;
  puVar6[6] = 0;
  puVar6[7] = 0;
  puVar6[8] = 0;
  puVar6[9] = 0;
  puVar6[10] = 0;
  puVar6[0xb] = 0;
  puVar6[0xc] = 0;
  puVar6[0xd] = 0;
  puVar6[0xe] = 0;
  puVar6[0xf] = 0;
  puVar6[0x10] = 0;
  puVar6[0x11] = 0;
  puVar6[0x12] = 0;
  puVar6[0x13] = 0;
  puVar6[0x14] = 0;
  puVar6[0x15] = 0;
  puVar6[0x16] = 0;
  puVar6[0x17] = 0;
  puVar6[0x18] = 0;
  puVar6[0x19] = 0;
  puVar6[0x1a] = 0;
  puVar6[0x1b] = 0;
  puVar6[0x1c] = 0;
  puVar6[0x1d] = 0;
  puVar6[0x1e] = 0;
  puVar6[0x1f] = 0;
  puVar6[0x20] = 0;
  puVar6[0x21] = 0;
  puVar6[0x22] = 0;
  puVar6[0x23] = 0;
  puVar6[0x24] = 0;
  puVar6[0x25] = 0;
  puVar6[0x26] = 0;
  puVar6[0x27] = 0;
  puVar6[0x28] = 0;
  puVar6[0x29] = 0;
  puVar6[0x2a] = 0;
  puVar6[0x2b] = 0;
  puVar6[0x2c] = 0;
  puVar6[0x2d] = 0;
  puVar6[0x2e] = 0;
  puVar6[0x2f] = 0;
  puVar6[0x30] = 0;
  puVar6[0x31] = 0;
  puVar6[0x32] = 0;
  puVar6[0x33] = 0;
  puVar6[0x34] = 0;
  puVar6[0x35] = 0;
  puVar6[0x36] = 0;
  puVar6[0x37] = 0;
  puVar6[0x38] = 0;
  puVar6[0x39] = 0;
  puVar6[0x3a] = 0;
  puVar6[0x3b] = 0;
  puVar6[0x3c] = 0;
  puVar6[0x3d] = 0;
  puVar6[0x3e] = 0;
  puVar6[0x3f] = 0;
  puVar6[0x40] = 0;
  puVar6[0x41] = 0;
  puVar6[0x42] = 0;
  puVar6[0x43] = 0;
  puVar6[0x44] = 0;
  puVar6[0x45] = 0;
  puVar6[0x46] = 0;
  puVar6[0x47] = 0;
  puVar6[0x48] = 0;
  puVar6[0x49] = 0;
  puVar6[0x4a] = 0;
  puVar6[0x4b] = 0;
  puVar6[0x4c] = 0;
  puVar6[0x4d] = 0;
  puVar6[0x4e] = 0;
  puVar6[0x4f] = 0;
  puVar6[0x50] = 0;
  puVar6[0x51] = 0;
  puVar6[0x52] = 0;
  puVar6[0x53] = 0;
  puVar6[0x54] = 0;
  puVar6[0x55] = 0;
  puVar6[0x56] = 0;
  puVar6[0x57] = 0;
  puVar6[0x58] = 0;
  puVar6[0x59] = 0;
  puVar6[0x5a] = 0;
  puVar6[0x5b] = 0;
  puVar6[0x5c] = 0;
  puVar6[0x5d] = 0;
  puVar6[0x5e] = 0;
  puVar6[0x5f] = 0;
  puVar6[0x60] = 0;
  puVar6[0x61] = 0;
  puVar6[0x62] = 0;
  puVar6[99] = 0;
  puVar6[100] = 0;
  *(int *)((longlong)param_1 + 0x2c4) = *(int *)((longlong)param_1 + 0x2c4) + 0x65;
  FUN_18057f0f0(param_1 + 0x5a,param_3);
  FUN_1811e4f60(param_1 + 0x5d,param_3);
  *(undefined2 *)(param_1 + 0x60) = 0;
  *(undefined1 *)((longlong)param_1 + 0x302) = 0;
  (**(code **)(*plVar1 + 0x58))(plVar1,1);
  FUN_181343cc0(param_1,plVar1,0xffffffff);
  FUN_1811be290(param_4,param_1 + 0x17);
  lVar3 = param_1[0x5e];
  puVar5 = (uint *)(lVar3 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  FUN_1811f8160(param_3,lVar3,param_1 + 0x16);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_18134bd50(param_1,0);
  FUN_18049c4e0(&local_res20,"XYSliderArea");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_res20);
  puVar5 = (uint *)(local_res20 + -2);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_1;
}



############ FUN_ 1814d77e0 size=180 ############

undefined8 *
FUN_1814d77e0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res20;
  
  FUN_1815ef340(param_1,param_2,0,param_4,0xfffffffffffffffe);
  *param_1 = TutorialsHintModal::vftable;
  param_1[0x16] = TutorialsHintModal::vftable;
  FUN_1815ef760(param_1 + 0x10f);
  FUN_18134a370(param_1 + 0xa7,param_1 + 0x10f,0);
  FUN_18049c4e0(&local_res20,"TutorialsHintModal");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_res20);
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1814c49f0 size=225 ############

undefined8 *
FUN_1814c49f0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined8 uVar3;
  uint *_Memory;
  undefined8 *local_res20;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  FUN_1815ef340();
  *param_1 = ShortcutModal::vftable;
  param_1[0x16] = ShortcutModal::vftable;
  puVar1 = param_1 + 0x10f;
  *puVar1 = 0;
  param_1[0x110] = 0;
  local_res20 = puVar1;
  uVar3 = FUN_18047e380();
  *puVar1 = uVar3;
  param_1[0x111] = 0;
  param_1[0x112] = 0;
  *(undefined4 *)(param_1 + 0x113) = 0x41a00000;
  *(undefined4 *)((longlong)param_1 + 0x89c) = 0x41600000;
  *(undefined4 *)(param_1 + 0x114) = 0x40800000;
  FUN_18049c4e0(&local_res20,"ShortcutModal",param_3,param_4,uVar4);
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_res20);
  _Memory = (uint *)(local_res20 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181618200 size=1582 ############

ulonglong FUN_181618200(undefined8 *param_1,int param_2,undefined8 param_3,undefined8 *param_4,
                       undefined8 param_5,undefined8 param_6)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  undefined8 uVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 uVar10;
  bool bVar11;
  undefined4 uVar12;
  undefined1 local_368 [32];
  undefined1 local_2f0 [8];
  undefined1 local_2e8 [64];
  undefined8 *local_2a8;
  undefined8 local_2a0;
  longlong local_298;
  longlong local_290;
  longlong local_288;
  longlong local_280;
  longlong local_278;
  longlong local_270;
  longlong local_268;
  undefined1 local_260 [16];
  undefined1 local_250 [8];
  longlong local_248;
  undefined1 local_240 [8];
  undefined1 local_238 [8];
  undefined1 local_230 [280];
  undefined8 *local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined1 local_f8 [64];
  undefined8 local_b8;
  ulonglong local_40;
  
  plVar5 = &local_268;
  local_b8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)local_368;
  local_2a0 = param_6;
  local_2a8 = param_1;
  local_118 = param_1;
  FUN_1805718f0();
  *param_1 = SliderAreaLayer::vftable;
  param_1[0x1f] = SliderAreaLayer::vftable;
  param_1[0x22] = SliderAreaLayer::vftable;
  param_1[0x23] = param_3;
  uVar4 = param_4[1];
  param_1[0x24] = *param_4;
  param_1[0x25] = uVar4;
  param_1[0x26] = param_4[2];
  *(int *)(param_1 + 0x27) = param_2;
  local_110 = 0;
  param_1[0x28] = 0;
  _eh_vector_constructor_iterator_(param_1 + 0x29,8,4,FUN_18051f800,FUN_18047c160);
  local_108 = 0;
  param_1[0x2d] = 0;
  local_100 = 0;
  param_1[0x2e] = 0;
  uVar10 = 0x790370;
  FUN_18049c4e0(&local_290,"SliderAreaLayer");
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,&local_290);
  FUN_1804951e0(local_290 + -0x10);
  FUN_181212060(&local_288,param_2);
  uVar4 = FUN_181246550(local_250,&DAT_1822e0594,&local_288);
  FUN_1812465e0(local_2f0,uVar4,&DAT_1822196b4);
  FUN_1804951e0(local_288 + -0x10);
  if (param_2 == 0) {
    FUN_18049c4e0(plVar5,"low cut");
    bVar3 = true;
    bVar2 = false;
    bVar11 = false;
    bVar1 = false;
  }
  else {
    bVar11 = param_2 != 5;
    if (bVar11) {
      FUN_181212060(&local_278,param_2);
      plVar5 = (longlong *)FUN_181246550(&local_248,"band ",&local_278);
    }
    else {
      FUN_18049c4e0(&local_270,"high cut");
      plVar5 = &local_270;
    }
    bVar2 = !bVar11;
    local_280 = *plVar5;
    *plVar5 = (longlong)&DAT_1821dbf98;
    plVar5 = &local_280;
    bVar3 = false;
    bVar1 = true;
  }
  local_298 = *plVar5;
  *plVar5 = (longlong)&DAT_1821dbf98;
  if (bVar1) {
    FUN_1804951e0(local_280 + -0x10);
  }
  if (bVar11) {
    FUN_1804951e0(local_248 + -0x10);
    FUN_1804951e0(local_278 + -0x10);
  }
  if (bVar2) {
    FUN_1804951e0(local_270 + -0x10);
  }
  if (bVar3) {
    FUN_1804951e0(local_268 + -0x10);
  }
  FUN_181212060(local_260,param_2);
  FUN_1812465e0(local_2e8,local_260,"-control");
  uVar4 = FUN_18124a830(local_240,local_2f0);
  uVar4 = FUN_1812465e0(local_230,uVar4,&DAT_18221a1b4);
  puVar6 = (undefined8 *)FUN_181245ff0(local_f8,uVar4);
  uVar4 = FUN_18119aa60(param_3,*puVar6);
  uVar7 = FUN_18058f240(local_238,&local_298,uVar4);
  FUN_180485db0(param_1 + 0x28,uVar7);
  FUN_18047c160(local_238);
  FUN_18124a7e0(local_230);
  lVar8 = FUN_1804730e0(param_1 + 0x28);
  puVar6 = &DAT_182674550;
  (**(code **)(*(longlong *)(lVar8 + 200) + 0x10))((longlong *)(lVar8 + 200),&DAT_182674550);
  uVar12 = FUN_181617c91();
                    /* WARNING: Call to offcut address within same function */
  uVar9 = func_0x0001816186b3(uVar12,puVar6,uVar4,uVar10);
  return uVar9 & 0xfffffffffffffff8;
}



############ FUN_ 1816039d0 size=1148 ############

/* WARNING: Instruction at (ram,0x000181603dc4) overlaps instruction at (ram,0x000181603dc2)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181603c2f) */
/* WARNING: Removing unreachable block (ram,0x000181603c46) */

void FUN_1816039d0(undefined8 *param_1,undefined8 *param_2,ulonglong param_3,undefined8 param_4,
                  undefined4 param_5)

{
  undefined8 uVar1;
  longlong lVar2;
  longlong lVar3;
  uint uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  uint uVar7;
  ulonglong uVar8;
  int unaff_retaddr;
  undefined1 auStack_218 [32];
  undefined4 local_1f8;
  uint local_1b0;
  undefined4 local_1ac;
  undefined8 *local_198;
  ulonglong local_190;
  undefined8 local_188;
  undefined8 local_180 [2];
  undefined8 *local_170;
  undefined1 local_150 [8];
  undefined8 *local_148;
  ulonglong local_140;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 *local_128;
  undefined8 *local_120;
  ulonglong local_118;
  undefined8 local_110;
  undefined8 local_108;
  undefined1 local_100 [72];
  undefined8 local_b8;
  ulonglong local_58;
  
  local_130 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_218;
  local_170 = param_1;
  local_148 = param_2;
  local_140 = param_3;
  local_138 = param_4;
  local_128 = param_1;
  local_120 = param_2;
  local_118 = param_3;
  local_b8 = param_4;
  FUN_180579f00(param_1,param_3);
  local_188 = *param_2;
  FUN_1804951c0();
  FUN_1815fb460(param_1 + 0x3c,&local_188);
  *param_1 = CloudyPopupMenuItem::vftable;
  param_1[0x16] = CloudyPopupMenuItem::vftable;
  param_1[0x39] = CloudyPopupMenuItem::vftable;
  param_1[0x3c] = CloudyPopupMenuItem::vftable;
  param_1[0x40] = CloudyPopupMenuItem::vftable;
  local_198 = param_1 + 0x41;
  param_1[0x48] = 0;
  FUN_1804885d0(local_198,param_4);
  *(undefined4 *)(param_1 + 0x49) = param_5;
  param_1[0x4a] = 0;
  param_1[0x4b] = 0;
  param_1[0x4c] = 0;
  local_110 = 0;
  param_1[0x4d] = 0;
  local_108 = 0;
  param_1[0x4e] = 0;
  *(undefined8 *)((longlong)param_1 + 0x284) = 0;
  *(undefined8 *)((longlong)param_1 + 0x28c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x294) = 0x41800000;
  *(undefined4 *)(param_1 + 0x53) = 0x40000000;
  *(undefined4 *)((longlong)param_1 + 0x29c) = 0x41600000;
  local_1ac = 0xea0;
  uVar4 = (uint)&stack0x00000000 & 0x27f;
  uVar7 = (uint)&stack0x00000000 & 0x2ff;
  uVar7 = (uVar7 * uVar7 + 1) % 7;
  uVar8 = (ulonglong)uVar7;
  local_1b0 = (((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3 & uVar7) + 0x4ad1 ^ 0x46d1;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_3);
  FUN_18049c4e0(&local_190,
                "<svg width=\"10\" height=\"16\" viewBox=\"0 0 10 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1.27 15.91C1.10294 15.9111 0.937346 15.8789 0.782837 15.8154C0.628328 15.7519 0.487993 15.6583 0.369997 15.54C0.133671 15.3021 0.0010376 14.9803 0.0010376 14.645C0.0010376 14.3097 0.133671 13.9879 0.369997 13.75L6.16 8L0.369997 2.16C0.163824 1.91685 0.0566368 1.60505 0.0697213 1.28653C0.0828058 0.968004 0.215205 0.666049 0.440626 0.440628C0.666046 0.215207 0.968001 0.0828086 1.28653 0.0697242C1.60505 0.0566397 1.91685 0.163827 2.16 0.369999L9.75 8L2.16 15.54C2.0442 15.6584 1.90568 15.7522 1.75275 15.8158C1.59981 15.8794 1.43561 15.9114 1.27 15.91Z\" fill=\"black\"/>\n</svg>\n"
               );
  uVar1 = FUN_181248710(local_100,&local_190);
  FUN_181248430(uVar1,local_180,0);
  FUN_181248660(local_100);
  lVar2 = FUN_18132eac0(local_150,local_180[0]);
  FUN_180485db0(param_1 + 0x4e);
  FUN_18047c160(local_150);
  FUN_180487550(local_180);
  FUN_1804951e0(local_190 - 0x10);
  local_1f8 = 0;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    uVar5 = (ulonglong)uVar4;
  } while (uVar4 != 0);
                    /* WARNING: Call to offcut address within same function */
  lVar3 = func_0x000181603d77();
  uVar6 = (lVar3 + lVar2) - ((lVar2 - (lVar3 + lVar2) ^ 0xffffffffffffffffU) + 1);
  if (uVar5 != 1 && uVar6 != 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
    halt_baddata();
  }
                    /* WARNING: Could not recover jumptable at 0x000181603e69. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)(-0x6d3b - (~uVar8 + 1)))(param_3 & 0xffffffff,~(~uVar6 + 1) + 1);
  return;
}



############ FUN_ 1815df5c0 size=446 ############

undefined8 * FUN_1815df5c0(undefined8 *param_1,undefined8 param_2,longlong *param_3)

{
  undefined8 *puVar1;
  longlong *plVar2;
  undefined8 uVar3;
  undefined4 *puVar4;
  undefined8 *local_res10;
  longlong *local_res18;
  undefined1 *local_res20;
  undefined **local_e8;
  undefined8 *local_e0;
  undefined ***local_b0;
  undefined1 local_a8 [56];
  undefined8 local_70;
  undefined8 local_68 [7];
  undefined8 local_30;
  
  local_res18 = param_3;
  FUN_1815f84a0();
  param_1[0x36] = 0;
  *(undefined1 *)(param_1 + 0x37) = 0;
  param_1[0x39] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x3a) = 0;
  *param_1 = Glow::vftable;
  param_1[0x16] = Glow::vftable;
  param_1[0x35] = Glow::vftable;
  param_1[0x38] = Glow::vftable;
  param_1[0x3b] = param_2;
  local_res10 = param_1 + 0x3c;
  param_1[0x43] = 0;
  puVar1 = (undefined8 *)param_3[7];
  if (puVar1 != (undefined8 *)0x0) {
    uVar3 = (**(code **)*puVar1)(puVar1,local_res10);
    param_1[0x43] = uVar3;
  }
  param_1[0x44] = 3;
  *(undefined4 *)(param_1 + 0x45) = 0x3e99999a;
  *(undefined1 *)(param_1 + 0x34) = 1;
  local_res10 = local_68;
  local_res20 = local_a8;
  local_30 = 0;
  local_70 = 0;
  puVar1 = (undefined8 *)param_3[7];
  if (puVar1 != (undefined8 *)0x0) {
    local_70 = (**(code **)*puVar1)(puVar1,local_a8);
  }
  local_e8 = std::_Func_impl_no_alloc<<lambda_e009399a22168fe30d046e2b7f3708f2>,int>::vftable;
  local_b0 = &local_e8;
  local_e0 = param_1;
  FUN_1815f8200(param_1,param_2,&local_e8,local_a8,local_68);
  puVar4 = (undefined4 *)FUN_1812a2a20(&DAT_18262bb6c,&local_res10,DAT_18262bb68,DAT_1824c3df0);
  *(undefined4 *)((longlong)param_1 + 0xd4) = *puVar4;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,0);
  plVar2 = (longlong *)param_3[7];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != param_3);
    param_3[7] = 0;
  }
  return param_1;
}



############ FUN_ 1815bcd40 size=1154 ############

void FUN_1815bcd40(undefined8 param_1,undefined1 param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int unaff_retaddr;
  undefined1 auStack_148 [32];
  int local_128 [2];
  undefined *local_120;
  undefined8 local_110;
  uint local_104;
  undefined4 *local_100;
  undefined8 local_e0;
  uint local_d8;
  undefined8 local_d0;
  ulonglong local_40;
  
  local_40 = DAT_182615970 ^ (ulonglong)auStack_148;
  uVar2 = (uint)&stack0x00000000;
  uVar1 = ((uVar2 & 0x7ff) * (uVar2 & 0x7ff) * 0x10 + 4) % 0x13;
  local_104 = ((int)((-uVar1 | uVar1) ^ 0xffffffff) >> 0x1f) + 0xa606U ^ 0xa376;
  if (((ulonglong)&stack0x00000000 & 0x6e0) == 0) {
    uVar1 = 1;
  }
  else {
    uVar1 = ((uVar2 & 0x2eff) * (uVar2 & 0x2eff) + 1) % 7;
  }
  uVar2 = uVar2 & 0x3ff;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_d8 = (((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e | 0xb698U) ^
             (((int)(-uVar1 | uVar1) >> 0x1f) * -0x17a0 | 0xb7e8U);
  local_d0 = param_1;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,param_2);
  local_e0 = 0x2431c1b15d163064;
  local_100 = &DAT_18152ef78;
  local_120 = &DAT_18152f078;
  local_110 = 0xea066f9;
  local_128[0] = ((uint)(DAT_18152efa0 * 0x5bd1e995) >> 0x18 ^ DAT_18152efa0 * 0x5bd1e995) *
                 0x5bd1e995;
  do {
    FUN_1815c61cc();
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  local_128[0] = ((uint)(DAT_18152efac * 0x5bd1e995) >> 0x18 ^ DAT_18152efac * 0x5bd1e995) *
                 0x5bd1e995;
  FUN_1815bd224(0xd628,&DAT_18152efb0,0,local_128);
  return;
}



############ FUN_ 180583800 size=75 ############

void FUN_180583800(longlong param_1)

{
  *(undefined8 *)(param_1 + 0xc0) = 0;
  *(undefined4 *)(param_1 + 0xbc) = 0;
  if (*(int *)(param_1 + 0xb8) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0xb0));
  }
  *(undefined4 *)(param_1 + 0xb8) = 0;
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,0);
  return;
}



############ FUN_ 18131d380 size=40 ############

void FUN_18131d380(longlong param_1,char param_2)

{
  if (*(char *)(param_1 + 0x12f) != param_2) {
    *(char *)(param_1 + 0x12f) = param_2;
    FUN_18131d310();
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__();
    return;
  }
  return;
}



############ FUN_ 1812cf8d0 size=177 ############

void FUN_1812cf8d0(longlong *param_1,char param_2)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  
  *(undefined4 *)(param_1 + 0x24) = 0x10000;
  *(undefined4 *)((longlong)param_1 + 0x124) = 0x10;
  *(undefined4 *)(param_1 + 0x25) = 0x18;
  *(undefined4 *)((longlong)param_1 + 300) = 0x10;
  *(undefined4 *)(param_1 + 0x1f) = 0x32;
  *(undefined4 *)((longlong)param_1 + 0xfc) = 0x32;
  *(undefined4 *)(param_1 + 0x20) = 0x100;
  *(undefined4 *)((longlong)param_1 + 0x104) = 0x100;
  if (param_2 != '\0') {
    puVar1 = (undefined8 *)param_1[0x17];
    param_1[0x17] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    uVar2 = (**(code **)(*param_1 + 0x160))(param_1);
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar2,0);
    FUN_1812cc270(param_1,(char)param_1[0x16]);
    return;
  }
  return;
}



############ FUN_ 1812cc0f0 size=55 ############

void FUN_1812cc0f0(longlong *param_1,int param_2)

{
  int iVar1;
  
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__();
  iVar1 = (**(code **)(*param_1 + 0x160))(param_1);
  if (param_2 != iVar1) {
    FUN_181341b10(param_1);
  }
  return;
}



############ FUN_ 1812cc130 size=87 ############

void FUN_1812cc130(longlong *param_1)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined8 *)param_1[0x17];
  param_1[0x17] = 0;
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  uVar2 = (**(code **)(*param_1 + 0x160))(param_1);
  .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar2,0);
  FUN_1812cc270(param_1,(char)param_1[0x16]);
  return;
}



############ FUN_ 1812cc190 size=61 ############

void FUN_1812cc190(longlong *param_1)

{
  undefined4 uVar1;
  
  if ((*(byte *)(param_1 + 0x15) & 1) != 0) {
    uVar1 = (**(code **)(*param_1 + 0x160))();
    .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__(param_1,uVar1,0);
    FUN_181344f60(param_1,1);
    return;
  }
  return;
}



############ FUN_ 181330d70 size=106 ############

ulonglong FUN_181330d70(longlong param_1,undefined4 param_2,undefined4 param_3)

{
  ulonglong uVar1;
  undefined1 local_res20 [8];
  
  uVar1 = .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__();
  if (((char)uVar1 != '\0') && (*(longlong *)(param_1 + 0xc0) != 0)) {
    uVar1 = FUN_1812903f0((longlong *)(param_1 + 0xc0),local_res20,param_2,param_3);
    if (0x7e < *(byte *)(uVar1 + 3)) {
      return 1;
    }
  }
  return uVar1 & 0xffffffffffffff00;
}



############ FUN_ 181334090 size=405 ############

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

undefined1 FUN_181334090(longlong param_1,int param_2,int param_3)

{
  longlong *plVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  char cVar5;
  undefined1 uVar6;
  undefined1 local_res20 [3];
  byte local_res23;
  longlong *local_48;
  undefined8 local_40;
  undefined1 local_38 [20];
  undefined4 local_24;
  undefined4 local_20;
  undefined8 *local_18;
  
  local_40 = 0xfffffffffffffffe;
  cVar5 = .?AV?$DigitalFilter@M$0BA@$01@@::vtbl___AV__DigitalFilter_M_0BA__01__();
  if (cVar5 == '\0') {
    return 0;
  }
  if (*(char *)(param_1 + 0x1ca) == '\0') {
    return 1;
  }
  FUN_181334610(param_1,&local_48);
  plVar1 = local_48;
  if (local_48 == (longlong *)0x0) {
LAB_1813341e4:
    uVar6 = 1;
  }
  else {
    if ((0 < *(int *)(param_1 + 0x1d4)) && (0 < *(int *)(param_1 + 0x1d8))) {
      uVar2 = (longlong)((int)local_48[3] * (param_3 - *(int *)(param_1 + 0x1d0))) /
              (longlong)*(int *)(param_1 + 0x1d8);
      uVar3 = (longlong)
              ((param_2 - *(int *)(param_1 + 0x1cc)) * *(int *)((longlong)local_48 + 0x14)) /
              (longlong)*(int *)(param_1 + 0x1d4);
      if (((uint)uVar3 < *(uint *)((longlong)local_48 + 0x14)) &&
         ((uint)uVar2 < *(uint *)(local_48 + 3))) {
        local_24 = 1;
        local_20 = 1;
        local_18 = (undefined8 *)0x0;
        (**(code **)(*local_48 + 0x20))(local_48,local_38,uVar3 & 0xffffffff,uVar2 & 0xffffffff,0);
        FUN_181290670(local_38,local_res20,0,0);
        if (local_18 != (undefined8 *)0x0) {
          (**(code **)*local_18)(local_18,1);
        }
      }
      else {
        local_res23 = 0;
      }
      if (*(byte *)(param_1 + 0x1ca) < local_res23) goto LAB_1813341e4;
    }
    uVar6 = 0;
  }
  if (plVar1 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar1 + 1;
    lVar4 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar4 == 1) {
      (**(code **)*local_48)(local_48,1);
    }
  }
  return uVar6;
}



############ FUN_ 180002000 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616408)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001c40 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615f08)[DAT_1826159a0])();
  return;
}



############ FUN_ 181131c04 size=112 ############

/* Library Function - Single Match
    void __cdecl `eh vector constructor iterator'(void * __ptr64,unsigned __int64,unsigned
   __int64,void (__cdecl*)(void * __ptr64),void (__cdecl*)(void * __ptr64))
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void __cdecl
_eh_vector_constructor_iterator_
          (void *param_1,__uint64 param_2,__uint64 param_3,_func_void_void_ptr *param_4,
          _func_void_void_ptr *param_5)

{
  __uint64 _Var1;
  
  for (_Var1 = 0; _Var1 != param_3; _Var1 = _Var1 + 1) {
    (*(code *)PTR__guard_dispatch_icall_181bab6b0)(param_1);
    param_1 = (void *)((longlong)param_1 + param_2);
  }
  return;
}



############ FUN_ 18058c630 size=52 ############

void * FUN_18058c630(void *param_1,ulonglong param_2)

{
  FUN_18058b860();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180c47d80 size=845 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180c47d80(int *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  uint *puVar11;
  longlong lVar12;
  bool bVar13;
  undefined1 local_158 [32];
  undefined4 local_138;
  undefined *local_130;
  undefined *local_128;
  uint local_120;
  uint *local_118;
  undefined4 local_108 [4];
  undefined1 local_f8 [144];
  uint local_68;
  uint local_28 [6];
  ulonglong local_10;
  
  local_10 = DAT_182615970 ^ (ulonglong)local_158;
  uVar1 = param_1[2] + 0x944e4307;
  uVar5 = param_1[3] ^ 0xaa7d1554U ^ uVar1;
  uVar9 = (param_1[1] ^ 0xea2cbcd1U) << 0x1f | (param_1[1] ^ 0xea2cbcd1U) >> 1;
  uVar2 = uVar1 ^ uVar5 & 0x7310039d;
  uVar5 = uVar5 & 0x8ceffc62 ^ uVar1 ^ uVar2;
  uVar1 = *param_1 + 0x439bf8f4U >> 3;
  uVar7 = (*param_1 + 0x439bf8f4U) * 0x20000000 | uVar1;
  uVar3 = uVar5 & 0xddffbe9c ^ uVar2;
  uVar3 = (uVar3 << 0x19 | uVar3 >> 7) ^ uVar9;
  uVar2 = uVar5 & 0x22004163 ^ uVar2;
  uVar6 = uVar2 << 10 | uVar2 >> 0x16;
  uVar1 = ((uVar1 << 4 | uVar7 >> 0x1c) & 0x96969696 | (uVar7 >> 4 | uVar1 << 0x1c) & 0x69696969) +
          0x2938145e;
  uVar7 = (uVar1 >> 0xd | uVar1 * 0x80000) ^ 0x29b4851;
  uVar10 = uVar9 ^ uVar3 & 0xbbb9a4a9;
  uVar1 = uVar3 & 0x44465b56 ^ uVar9 ^ uVar10;
  uVar5 = uVar1 & 0x75a87b8a ^ uVar10;
  uVar3 = ~((uVar7 >> 0xb | uVar7 << 0x15) + 0xf84e1d81) ^ 0xbdd8dfd9;
  uVar10 = uVar10 ^ uVar1 & 0x8a578475;
  uVar1 = ((uVar10 << 8 | uVar10 >> 0x18) & 0x9a659a65 | (uVar10 >> 8 | uVar10 << 0x18) & 0x659a659a
          ) + 0xb12eb7e5;
  uVar5 = ((uVar5 << 0x10 | uVar5 >> 0x10) & 0xc73b38c4 |
          (uVar5 >> 0x10 | uVar5 << 0x10) & 0x38c4c73b) + 0x510855ec ^ uVar1;
  uVar3 = (uVar3 << 0x1b | uVar3 >> 5) + 0x9b28fac8;
  uVar4 = CONCAT44((uVar6 >> 2 & 0xcccccccc | (uVar2 >> 0x16) << 0x1e |
                   (uVar6 & 0xccccccc) << 2 | (uVar2 & 0x3fffff) >> 0x14) + 0x8438c62d,
                   uVar1 ^ uVar5 & 0x9a6c0686);
  LOCK();
  bVar13 = DAT_182670784 == 0;
  if (bVar13) {
    DAT_182670784 = 1;
  }
  UNLOCK();
  while (!bVar13) {
    LOCK();
    bVar13 = DAT_182670784 == 0;
    if (bVar13) {
      DAT_182670784 = 1;
    }
    UNLOCK();
  }
  do {
    uVar2 = FUN_180bd9af0(local_f8,3,uVar4,local_108);
  } while ((uVar2 & 0xfffffffd) == 0);
  if (uVar2 == 1) {
    local_118 = local_28;
    local_128 = &DAT_18260f320;
    local_130 = &DAT_18260f320;
    local_138 = local_108[0];
    local_120 = uVar3 >> 0x1d | uVar3 * 8;
    FUN_180f3a8a0(local_f8,(&PTR_DAT_18260f198)[local_68],(&PTR_DAT_18260f1c8)[local_68],uVar4);
  }
  LOCK();
  UNLOCK();
  DAT_182670784 = 0;
  puVar11 = local_28;
  lVar12 = 5;
  do {
    iVar8 = 7;
    uVar2 = (*puVar11 << 0x1a | *puVar11 >> 6) ^ 0x84f2174f;
    uVar2 = (uVar2 >> 3 | uVar2 << 0x1d) ^ 0x2a035b35;
    uVar2 = ~((uVar2 << 0x1a | uVar2 >> 6) + 0x4aedba70) + 0x37567977;
    uVar3 = uVar2 >> 9 | uVar2 * 0x800000;
    *puVar11 = uVar3;
    uVar2 = uVar5 & 0x6593f979 ^ uVar1;
    do {
      uVar7 = uVar3 << 6 | uVar3 >> 0x1a;
      uVar6 = uVar2 >> 0x16 | uVar2 << 10;
      uVar3 = ((uVar3 & 0x3ffffff) >> 2 | uVar7 << 0x18) & 0xa857a857 |
              (uVar7 << 8 | (uVar3 & 0x3ffffff) >> 0x12) & 0x57a857a8;
      uVar2 = (uVar6 << 0x10 | (uVar2 & 0x3fffff) >> 6) & 0xd65429ab |
              ((uVar2 & 0x3fffff) >> 6 | uVar6 << 0x10) & 0x29abd654;
      uVar3 = (uVar3 << 0x17 | uVar3 >> 9) + 0x8f0959c0;
      uVar2 = (uVar2 >> 0x14 | uVar2 << 0xc) + 0xe6e2d9b0;
      uVar3 = (uVar3 * 8 | uVar3 >> 0x1d) ^ 0x2677a938;
      uVar2 = (uVar2 >> 0xf | uVar2 * 0x20000) + 0xfa0d9ebc;
      uVar3 = (uVar3 << 0xc | uVar3 >> 0x14) + 0x1209966e;
      uVar2 = (uVar2 * 0x20000000 | uVar2 >> 3) + 0x8fc2d11c;
      uVar3 = (uVar3 * 0x10 | uVar3 >> 0x1c) & 0xb4b4b4b4 |
              (uVar3 >> 4 | uVar3 * 0x10000000) & 0x4b4b4b4b;
      uVar2 = (uVar2 >> 8 | uVar2 * 0x1000000) & 0xfa05fa05 |
              (uVar2 * 0x100 | uVar2 >> 0x18) & 0x5fa05fa;
      iVar8 = iVar8 + -1;
    } while (-1 < iVar8);
    *param_2 = uVar3;
    puVar11 = puVar11 + 1;
    param_2[1] = uVar2;
    param_2 = param_2 + 2;
    lVar12 = lVar12 + -1;
  } while (lVar12 != 0);
}



############ FUN_ 18058eae0 size=12 ############

void .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__(longlong param_1)

{
  .?AV?$FilterGraphGrid@M@@::vtbl___AV__FilterGraphGrid_M__(param_1 + -0xb0);
  return;
}



############ FUN_ 18052d8a0 size=93 ############

void FUN_18052d8a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_2,param_1,param_4,param_3);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_1,param_4,(double)(float)param_3,0);
}



############ FUN_ 1804d56b0 size=428 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804d56b0(undefined1 (*param_1) [16],uint param_2)

{
  undefined1 (*pauVar1) [16];
  float *pfVar2;
  float *pfVar3;
  float *pfVar4;
  float fVar5;
  int iVar6;
  uint uVar7;
  longlong lVar8;
  float *pfVar9;
  ulonglong uVar10;
  longlong lVar11;
  float fVar12;
  float fVar13;
  undefined1 auVar14 [16];
  float local_28;
  float fStack_1c;
  
  iVar6 = (int)(param_2 + ((int)param_2 >> 0x1f & 3U)) >> 2;
  if (iVar6 < 2) {
    if ((int)param_2 < 1) {
    }
    fVar12 = *(float *)*param_1;
    iVar6 = param_2 - 1;
    pfVar9 = (float *)(*param_1 + 4);
    if (3 < iVar6) {
      uVar7 = (param_2 - 5 >> 2) + 1;
      uVar10 = (ulonglong)uVar7;
      iVar6 = iVar6 + uVar7 * -4;
      do {
        pfVar2 = pfVar9 + 1;
        fVar13 = *pfVar9;
        if (*pfVar9 <= fVar12) {
          fVar13 = fVar12;
        }
        pfVar3 = pfVar9 + 2;
        pfVar4 = pfVar9 + 3;
        pfVar9 = pfVar9 + 4;
        fVar12 = *pfVar2;
        if (*pfVar2 <= fVar13) {
          fVar12 = fVar13;
        }
        fVar13 = *pfVar3;
        if (*pfVar3 <= fVar12) {
          fVar13 = fVar12;
        }
        fVar12 = *pfVar4;
        if (*pfVar4 <= fVar13) {
          fVar12 = fVar13;
        }
        uVar10 = uVar10 - 1;
      } while (uVar10 != 0);
    }
    for (; 0 < iVar6; iVar6 = iVar6 + -1) {
      fVar13 = *pfVar9;
      pfVar9 = pfVar9 + 1;
      if (fVar13 <= fVar12) {
        fVar13 = fVar12;
      }
      fVar12 = fVar13;
    }
  }
  else {
    iVar6 = iVar6 + -1;
    if (((ulonglong)param_1 & 0xf) == 0) {
      auVar14 = *param_1;
      for (; 0 < iVar6; iVar6 = iVar6 + -1) {
        auVar14 = maxps(auVar14,param_1[1]);
        param_1 = param_1 + 1;
      }
    }
    else {
      auVar14 = *param_1;
      while (0 < iVar6) {
        pauVar1 = param_1 + 1;
        param_1 = param_1 + 1;
        iVar6 = iVar6 + -1;
        auVar14 = maxps(auVar14,*pauVar1);
      }
    }
    fVar12 = auVar14._4_4_;
    fVar13 = auVar14._8_4_;
    fStack_1c = auVar14._12_4_;
    if (fVar13 <= fVar12) {
      if (fStack_1c <= fVar12) {
        fStack_1c = fVar12;
      }
    }
    else if (fStack_1c <= fVar13) {
      fStack_1c = fVar13;
    }
    local_28 = auVar14._0_4_;
    if (fStack_1c <= local_28) {
      fStack_1c = local_28;
    }
    lVar8 = 0;
    uVar10 = (ulonglong)(param_2 & 3);
    if (3 < uVar10) {
      pfVar9 = (float *)(param_1[1] + 8);
      lVar11 = (uVar10 - 4 >> 2) + 1;
      lVar8 = lVar11 * 4;
      do {
        pfVar2 = pfVar9 + -1;
        fVar12 = pfVar9[-2];
        if (pfVar9[-2] <= fStack_1c) {
          fVar12 = fStack_1c;
        }
        fVar13 = *pfVar9;
        pfVar3 = pfVar9 + 1;
        pfVar9 = pfVar9 + 4;
        fVar5 = *pfVar2;
        if (*pfVar2 <= fVar12) {
          fVar5 = fVar12;
        }
        if (fVar13 <= fVar5) {
          fVar13 = fVar5;
        }
        fStack_1c = *pfVar3;
        if (*pfVar3 <= fVar13) {
          fStack_1c = fVar13;
        }
        lVar11 = lVar11 + -1;
      } while (lVar11 != 0);
    }
    if (lVar8 < (longlong)uVar10) {
      do {
        lVar11 = lVar8 * 4;
        lVar8 = lVar8 + 1;
        fVar12 = *(float *)(param_1[1] + lVar11);
        if (*(float *)(param_1[1] + lVar11) <= fStack_1c) {
          fVar12 = fStack_1c;
        }
        fStack_1c = fVar12;
      } while (lVar8 < (longlong)uVar10);
    }
  }
}



############ FUN_ 1805355d0 size=97 ############

void FUN_1805355d0(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_1,param_3);
}



############ FUN_ 18052dae0 size=85 ############

void FUN_18052dae0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_2,param_3);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,(double)(float)param_3,param_1,param_4);
}



############ FUN_ 180530080 size=97 ############

void FUN_180530080(undefined8 param_1,undefined8 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_1,param_3);
}



############ FUN_ 180530b60 size=462 ############

void FUN_180530b60(longlong param_1)

{
  undefined4 uVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  
  fVar2 = powf(*(float *)(param_1 + 0x540878),DAT_1824c3df0);
  fVar3 = powf(*(float *)(param_1 + 0x54087c),DAT_1824c41e0);
  fVar7 = DAT_1824c45a8;
  if (*(char *)(param_1 + 0x5408b8) != '\0') {
    fVar7 = DAT_1824c4594;
  }
  fVar4 = logf(DAT_1824c4418);
  fVar5 = logf(fVar7);
  fVar5 = expf((fVar5 - fVar4) * fVar2 + fVar4);
  fVar4 = DAT_1824c43e4;
  *(float *)(param_1 + 0x540894) = fVar5;
  fVar4 = logf(fVar4);
  fVar6 = logf(DAT_1824c4518);
  fVar3 = expf((fVar6 - fVar4) * fVar3 + fVar4);
  *(float *)(param_1 + 0x540898) = fVar3;
  fVar4 = logf(DAT_1824c3c70);
  fVar3 = DAT_1824c3ea4;
  fVar6 = logf(DAT_1824c3ea4);
  fVar2 = expf((fVar6 - fVar4) * fVar2 + fVar4);
  uVar1 = DAT_1824c459c;
  fVar7 = fVar7 * DAT_1824c41e0;
  fVar3 = fVar3 - fVar2;
  FUN_180533340(param_1 + 0x2404e8,fVar5,DAT_1824c459c,*(undefined4 *)(param_1 + 0x24),fVar3,fVar7);
  FUN_180533340(param_1 + 0x340500,*(undefined4 *)(param_1 + 0x540894),uVar1,
                *(undefined4 *)(param_1 + 0x24),fVar3,fVar7);
  FUN_180533340(param_1 + 0x440518,*(undefined4 *)(param_1 + 0x540898),uVar1,
                *(undefined4 *)(param_1 + 0x24),fVar3,DAT_1824c4564);
  return;
}



############ FUN_ 18052fa60 size=78 ############

void FUN_18052fa60(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805619f0 size=231 ############

void FUN_1805619f0(longlong param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  pvVar1 = *(void **)(param_1 + 0x50);
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (*(longlong *)(param_1 + 0x60) - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = *(void **)(param_1 + 0x38);
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (*(longlong *)(param_1 + 0x48) - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_18052fa60(param_1 + 0x20);
  pvVar1 = *(void **)(param_1 + 8);
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (*(longlong *)(param_1 + 0x18) - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180564570 size=1083 ############

void FUN_180564570(longlong param_1)

{
  undefined4 *puVar1;
  float *pfVar2;
  float *pfVar3;
  longlong *plVar4;
  longlong lVar5;
  double dVar6;
  float fVar7;
  float _Y;
  float fVar8;
  float fVar9;
  float fVar10;
  int iVar11;
  float *pfVar12;
  longlong lVar13;
  longlong lVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  uint uVar18;
  uint uVar19;
  float local_res8 [2];
  float local_res10 [2];
  float local_res18 [4];
  undefined8 uVar20;
  
  fVar10 = DAT_1824c4680;
  fVar9 = DAT_1824c41e0;
  fVar8 = DAT_1824c3ea4;
  _Y = DAT_1824c3d8c;
  fVar7 = DAT_1824c3d3c;
  uVar20 = 0xfffffffffffffffe;
  iVar11 = 0;
  pfVar12 = *(float **)(param_1 + 0xa0);
  pfVar2 = *(float **)(param_1 + 0xa8);
  uVar18 = (uint)DAT_1824c4f10;
  uVar19 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
  if (pfVar12 != pfVar2) {
    lVar13 = 0;
    lVar14 = 0;
    do {
      fVar15 = *pfVar12;
      pfVar3 = *(float **)(param_1 + 0x80);
      fVar17 = pfVar3[1];
      fVar16 = fVar8;
      if (*(longlong *)(pfVar3 + 0x24) == 0) {
        fVar15 = (fVar15 - *pfVar3) / (fVar17 - *pfVar3);
        if (0.0 <= fVar15) {
          if (fVar15 <= fVar8) {
            fVar16 = fVar15;
          }
        }
        else {
          fVar16 = 0.0;
        }
        fVar15 = pfVar3[3];
        if (fVar15 != fVar8) {
          if (*(char *)(pfVar3 + 4) == '\0') {
            fVar16 = powf(fVar16,fVar15);
          }
          else {
            fVar16 = fVar16 * fVar9 - fVar8;
            fVar17 = fVar8;
            if (fVar16 < 0.0) {
              fVar17 = fVar10;
            }
            dVar6 = (double)fVar16;
            fVar15 = powf((float)(double)CONCAT44((uint)((ulonglong)dVar6 >> 0x20) & uVar19,
                                                  SUB84(dVar6,0) & uVar18),fVar15);
            fVar16 = (fVar17 * fVar15 + fVar8) * _Y;
          }
        }
      }
      else {
        local_res18[0] = *pfVar3;
        plVar4 = *(longlong **)(pfVar3 + 0x24);
        local_res8[0] = fVar15;
        local_res10[0] = fVar17;
        if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar15 = (float)(**(code **)(*plVar4 + 0x10))
                                  (plVar4,local_res18,local_res10,local_res8,uVar20);
        if (0.0 <= fVar15) {
          if (fVar15 <= fVar8) {
            fVar16 = fVar15;
          }
        }
        else {
          fVar16 = 0.0;
        }
      }
      fVar15 = powf(*(float *)(param_1 + 0xbc) * _Y,_Y);
      fVar15 = fVar15 * fVar7;
      lVar5 = *(longlong *)(param_1 + 0x28);
      *(undefined4 *)(lVar5 + lVar14) = 0x40c00000;
      *(undefined4 *)(lVar5 + 4 + lVar14) = 0x40c00000;
      pfVar3 = (float *)(*(longlong *)(param_1 + 0x40) + lVar13);
      *pfVar3 = fVar16;
      pfVar3[1] = 0.0;
      pfVar3[2] = fVar15;
      pfVar3[3] = 0.0;
      pfVar3 = (float *)(*(longlong *)(param_1 + 0x40) + 0x10 + lVar13);
      *pfVar3 = fVar16;
      pfVar3[1] = 1.0;
      pfVar3[2] = fVar15;
      pfVar3[3] = 0.0;
      iVar11 = iVar11 + 2;
      lVar14 = lVar14 + 8;
      lVar13 = lVar13 + 0x20;
      pfVar12 = pfVar12 + 1;
    } while (pfVar12 != pfVar2);
  }
  pfVar12 = *(float **)(param_1 + 0x88);
  pfVar2 = *(float **)(param_1 + 0x90);
  if (pfVar12 != pfVar2) {
    lVar14 = (longlong)iVar11 << 4;
    lVar13 = (longlong)iVar11 * 4;
    do {
      fVar15 = *pfVar12;
      pfVar3 = *(float **)(param_1 + 0x78);
      fVar17 = pfVar3[1];
      fVar16 = fVar8;
      if (*(longlong *)(pfVar3 + 0x24) == 0) {
        fVar15 = (fVar15 - *pfVar3) / (fVar17 - *pfVar3);
        if (0.0 <= fVar15) {
          if (fVar15 <= fVar8) {
            fVar16 = fVar15;
          }
        }
        else {
          fVar16 = 0.0;
        }
        fVar15 = pfVar3[3];
        if (fVar15 != fVar8) {
          if (*(char *)(pfVar3 + 4) == '\0') {
            fVar16 = powf(fVar16,fVar15);
          }
          else {
            fVar16 = fVar16 * fVar9 - fVar8;
            fVar17 = fVar8;
            if (fVar16 < 0.0) {
              fVar17 = fVar10;
            }
            dVar6 = (double)fVar16;
            fVar15 = powf((float)(double)CONCAT44((uint)((ulonglong)dVar6 >> 0x20) & uVar19,
                                                  SUB84(dVar6,0) & uVar18),fVar15);
            fVar16 = (fVar17 * fVar15 + fVar8) * _Y;
          }
        }
      }
      else {
        local_res18[0] = *pfVar3;
        plVar4 = *(longlong **)(pfVar3 + 0x24);
        local_res8[0] = fVar15;
        local_res10[0] = fVar17;
        if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        fVar15 = (float)(**(code **)(*plVar4 + 0x10))(plVar4,local_res18,local_res10,local_res8);
        if (0.0 <= fVar15) {
          if (fVar15 <= fVar8) {
            fVar16 = fVar15;
          }
        }
        else {
          fVar16 = 0.0;
        }
      }
      fVar15 = powf(*(float *)(param_1 + 0xbc) * _Y,_Y);
      fVar15 = fVar15 * fVar7;
      lVar5 = *(longlong *)(param_1 + 0x28);
      *(undefined4 *)(lVar5 + lVar13) = 0x40c00000;
      *(undefined4 *)(lVar5 + 4 + lVar13) = 0x40c00000;
      puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + lVar14);
      *puVar1 = 0;
      puVar1[1] = fVar16;
      puVar1[2] = fVar15;
      puVar1[3] = 0;
      puVar1 = (undefined4 *)(*(longlong *)(param_1 + 0x40) + 0x10 + lVar14);
      *puVar1 = 0x3f800000;
      puVar1[1] = fVar16;
      puVar1[2] = fVar15;
      puVar1[3] = 0;
      lVar13 = lVar13 + 8;
      lVar14 = lVar14 + 0x20;
      pfVar12 = pfVar12 + 1;
    } while (pfVar12 != pfVar2);
  }
  return;
}



############ FUN_ 18056d350 size=167 ############

void FUN_18056d350(longlong *param_1,void *param_2,longlong param_3)

{
  void *_Dst;
  ulonglong uVar1;
  longlong lVar2;
  size_t _Size;
  
  _Size = param_3 - (longlong)param_2;
  uVar1 = (longlong)_Size >> 2;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  if (uVar1 != 0) {
    if (0x3fffffffffffffff < uVar1) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    lVar2 = uVar1 * 4;
    if (0x3fffffffffffffff < uVar1) {
      lVar2 = -1;
    }
    lVar2 = FUN_180480500(lVar2);
    *param_1 = lVar2;
    param_1[1] = lVar2;
    param_1[2] = *param_1 + uVar1 * 4;
    _Dst = (void *)*param_1;
    memmove(_Dst,param_2,_Size);
    param_1[1] = _Size + (longlong)_Dst;
  }
  return;
}



############ FUN_ 18056a760 size=349 ############

undefined8 *
FUN_18056a760(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined1 local_res8 [8];
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18056b350(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar4 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar3 = plVar4, cVar1 == '\0' && (plVar2 == (longlong *)plVar3[2]))) {
          cVar1 = *(char *)(plVar3[1] + 0x19);
          plVar4 = (longlong *)plVar3[1];
          plVar2 = plVar3;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar4 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar2 = (longlong *)plVar4[1];
          param_3 = plVar4;
        }
      }
      lVar5 = FUN_18047db40(param_1);
      FUN_18056e1d0(lVar5 + 0x28,local_res8,**(undefined8 **)(lVar5 + 0x28),
                    *(undefined8 **)(lVar5 + 0x28));
                    /* WARNING: Subroutine does not return */
      free(*(void **)(lVar5 + 0x28));
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18055eb10 size=297 ############

void FUN_18055eb10(longlong param_1)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  
  plVar3 = *(longlong **)(param_1 + 0x38);
  if (plVar3 != (longlong *)0x0) {
    puVar4 = (undefined8 *)*plVar3;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(plVar3);
  }
  plVar3 = *(longlong **)(param_1 + 0x30);
  if (plVar3 != (longlong *)0x0) {
    puVar4 = (undefined8 *)*plVar3;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(plVar3);
  }
  plVar3 = *(longlong **)(param_1 + 0x28);
  if (plVar3 != (longlong *)0x0) {
    puVar4 = (undefined8 *)*plVar3;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(plVar3);
  }
  plVar3 = *(longlong **)(param_1 + 0x20);
  if (plVar3 != (longlong *)0x0) {
    puVar4 = (undefined8 *)*plVar3;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(plVar3);
  }
  plVar3 = *(longlong **)(param_1 + 0x18);
  if (plVar3 != (longlong *)0x0) {
    puVar4 = (undefined8 *)*plVar3;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(plVar3);
  }
  return;
}



############ FUN_ 18056a8e0 size=335 ############

undefined8 *
FUN_18056a8e0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  void *_Memory;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18056b3e0(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar4 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar3 = plVar4, cVar1 == '\0' && (plVar2 == (longlong *)plVar3[2]))) {
          cVar1 = *(char *)(plVar3[1] + 0x19);
          plVar4 = (longlong *)plVar3[1];
          plVar2 = plVar3;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar4 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar2 = (longlong *)plVar4[1];
          param_3 = plVar4;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      FUN_18056d800((longlong)_Memory + 0x20);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 181608b50 size=239 ############

void FUN_181608b50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  longlong lVar3;
  int iVar4;
  longlong lVar5;
  undefined4 local_res8 [2];
  longlong local_res10;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  iVar4 = 0;
  if (*(longlong *)(param_1 + 0x168) - *(longlong *)(param_1 + 0x160) >> 3 != 0) {
    lVar5 = 0;
    lVar3 = 0;
    do {
      local_res8[0] = *(undefined4 *)(lVar3 + *(longlong *)(param_1 + 0xe0));
      plVar2 = *(longlong **)(param_1 + 0x138);
      if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
        std::_Xbad_function_call();
      }
      (**(code **)(*plVar2 + 0x10))(plVar2,&local_res10,local_res8,param_4,uVar6);
      FUN_181349c50(*(undefined8 *)(lVar5 + *(longlong *)(param_1 + 0x160)),&local_res10,0);
      _Memory = (uint *)(local_res10 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      iVar4 = iVar4 + 1;
      lVar3 = lVar3 + 4;
      lVar5 = lVar5 + 8;
    } while ((ulonglong)(longlong)iVar4 <
             (ulonglong)(*(longlong *)(param_1 + 0x168) - *(longlong *)(param_1 + 0x160) >> 3));
  }
  return;
}



############ FUN_ 180564cf0 size=52 ############

void * FUN_180564cf0(void *param_1,ulonglong param_2)

{
  FUN_1813de690();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18124a7e0 size=37 ############

void FUN_18124a7e0(longlong *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*param_1 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 1811de3f0 size=451 ############

/* WARNING: Instruction at (ram,0x0001811de5b6) overlaps instruction at (ram,0x0001811de5b5)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001811de4a0) */
/* WARNING: Removing unreachable block (ram,0x0001811dee16) */
/* WARNING: Removing unreachable block (ram,0x0001811de5b1) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xfffffffffffffe60 : 0x0001811dee4e */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_1811de3f0(undefined8 param_1,undefined8 param_2)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  uint uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  longlong *plVar9;
  longlong in_R11;
  int *piVar10;
  longlong lVar11;
  int unaff_retaddr;
  undefined1 auStack_1a0 [8];
  undefined1 auStack_198 [32];
  uint uStack_178;
  undefined4 uStack_174;
  undefined *local_170;
  int *local_168;
  uint uStack_160;
  uint uStack_15c;
  uint uStack_154;
  undefined4 uStack_150;
  int *local_140;
  ulonglong uStack_138;
  undefined4 uStack_130;
  uint uStack_12c;
  longlong lStack_128;
  uint local_120;
  undefined4 local_11c;
  undefined8 local_110;
  undefined8 local_108;
  undefined8 local_f0;
  undefined4 uStack_e8;
  undefined *puStack_e0;
  undefined *puStack_d8;
  undefined4 uStack_c8;
  undefined8 local_a8;
  undefined1 local_98 [88];
  ulonglong local_40;
  
  local_a8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_198;
  local_11c = 0x370;
  uVar2 = (uint)&stack0x00000000 & 0x18ff;
  uVar3 = (uint)&stack0x00000000 & 0x30ff;
  local_120 = 0x6b1d << ((char)((int)-((uVar2 + 1) * uVar2 + 0x5b7b & 0x80000001) >> 0x1f) -
                         (char)((int)-(((uVar3 + 1) * uVar3 + 7) % 0x51) >> 0x1f) & 0x1fU) ^ 0x6f5d;
  local_168 = (int *)0x14f97a4;
  local_140 = &DAT_1814f97a4;
  local_170 = &DAT_1814f98a4;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    local_110 = param_2;
    local_108 = param_1;
    local_f0 = param_1;
  } while (uVar2 != 0);
  do {
    uStack_160 = 0x35e485d4;
    uStack_c8 = 0x20;
    puStack_e0 = &UNK_1811de607;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001811df299();
    piVar1 = local_140;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = (uStack_160 >> 4 ^ uStack_160) >> 0x10 & 7;
  uVar2 = ((uVar2 << 4 | uVar2) << 0x10 ^ uStack_160) >> 2;
  uVar3 = uVar2 | uStack_160 << 0x1e;
  uVar2 = ((uVar2 << 8 | uVar3 >> 0x18) & 0xd52ad52a | (uVar3 >> 8 | uVar2 << 0x18) & 0x2ad52ad5) +
          0xc69a7789;
  uVar3 = ((uVar2 * 0x100 | uVar2 >> 0x18) & 0xa659a659 |
          (uVar2 >> 8 | uVar2 * 0x1000000) & 0x59a659a6) ^ 0xe73b74f5;
  uVar2 = (uVar3 >> 5 ^ uVar3) >> 0xd & 0x1f;
  uVar3 = ((uVar2 << 5 | uVar2) << 0xd ^ uVar3) >> 6 | uVar3 << 0x1a;
  uVar2 = (uVar3 >> 0xb ^ uVar3) >> 10 & 3;
  uVar3 = uVar3 ^ (uVar2 << 0xb | uVar2) << 10;
  do {
    uStack_e8 = 10;
    puStack_d8 = &UNK_1811de6e7;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uStack_160 = 0;
  uStack_150 = 0;
  *(ulonglong *)(puStack_e0 + (longlong)(int)uVar3 + 4) =
       *(longlong *)(puStack_e0 + (longlong)(int)uVar3 + 4) +
       (ulonglong)((uint)((ulonglong)dvs_0x263bf41b_mfort6317_ >> 4) & 0xa8454);
  do {
    uVar5 = rdtsc();
    uStack_12c = (int)uVar5 + (int)((ulonglong)uVar5 >> 0x20);
    uVar7 = (ulonglong)uStack_12c * 0x401 + 0x38491015;
    uVar4 = (uVar7 >> 5 | uVar7 << 0x3b) + (((uVar7 >> 5) << 5 | uVar7 & 0x1f) - 0x73dfcba1);
    uVar7 = uVar4 >> 0x10;
    uVar7 = uVar7 ^ (uVar7 << 0xb | (uVar4 & 0xffff) >> 5);
    uVar2 = (int)uVar7 - (int)(uVar7 >> 0xd) & 0x74dd76c6;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  *(uint *)(puStack_e0 + (longlong)(int)uVar3 + 8) =
       *(int *)(puStack_e0 + (longlong)(int)uVar3 + 8) + (uVar2 ^ 0xd14d39b7);
  *(uint *)(puStack_e0 + (longlong)(int)uVar3 + 4) =
       *(int *)(puStack_e0 + (longlong)(int)uVar3 + 4) + (uVar2 ^ 0xbd831cc2);
  uVar7 = *(ulonglong *)(puStack_e0 + (longlong)(int)uVar3 + 4);
  uVar4 = ~((uVar7 << 8 | uVar7 >> 0x38) & 0x8b748b748b748b74 |
           (uVar7 >> 8 | uVar7 << 0x38) & 0x748b748b748b748b);
  uVar2 = (uint)((uVar4 >> 0x14 ^ uVar4) >> 3) & 0xfff;
  uVar7 = ((ulonglong)uVar2 << 0x14 | (ulonglong)uVar2) << 3 ^ uVar4;
  uVar7 = ((uVar7 >> 8 | uVar7 << 0x38) & 0x2ad52ad52ad52ad5 |
          (uVar7 << 8 | uVar4 >> 0x38) & 0xd52ad52ad52ad52a) + 0xe38d90b6e1611ac9;
  uVar2 = (uint)((uVar7 >> 0x17 ^ uVar7) >> 1) & 0x7f;
  uVar7 = (((ulonglong)uVar2 << 0x17 | (ulonglong)uVar2) * 2 ^ uVar7) + 0xe1ee0b0c2a0d84cc;
  uVar7 = (uVar7 >> 0x25 | uVar7 * 0x8000000) + 0x253f3128d3de704a;
  *(ulonglong *)(puStack_e0 + (longlong)(int)uVar3 + 4) = uVar7;
  dvs_0x263bf41b_mfort6317_ =
       (uint *)((longlong)dvs_0x263bf41b_mfort6317_ +
               (ulonglong)((uint)(uVar7 >> 0x11) & 0x504800a4));
  uStack_15c = (uint)(*(ulonglong *)(puStack_e0 + (longlong)(int)uVar3 + 4) >> 0xe) & 0x7fffffff;
  uStack_154 = (uint)(*(ulonglong *)(puStack_e0 + (longlong)(int)uVar3 + 4) >> 4) ^ 0x2e490557;
  uStack_138 = *(ulonglong *)(puStack_e0 + (longlong)(int)uVar3 + 4) ^ 0x40d147be558e0912;
  local_168 = local_140;
  lStack_128 = (longlong)local_170 - (longlong)local_140;
  uStack_174 = 0xe3329757;
  lVar11 = 0x1b873593;
  FUN_1811e2090();
  uVar2 = (*piVar1 * 0x16a88000 | (uint)(*piVar1 * -0x3361d2af) >> 0x11) * 0x1b873593 ^ 0xb6e040bb;
  uVar2 = (piVar1[1] * 0x16a88000 | (uint)(piVar1[1] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[2] * 0x16a88000 | (uint)(piVar1[2] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[3] * 0x16a88000 | (uint)(piVar1[3] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[4] * 0x16a88000 | (uint)(piVar1[4] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[5] * 0x16a88000 | (uint)(piVar1[5] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  local_170 = (undefined *)0xb4812982ccdf948e;
  uVar2 = (piVar1[6] * 0x16a88000 | (uint)(piVar1[6] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[7] * 0x16a88000 | (uint)(piVar1[7] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[8] * 0x16a88000 | (uint)(piVar1[8] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[9] * 0x16a88000 | (uint)(piVar1[9] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[10] * 0x16a88000 | (uint)(piVar1[10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[0xb] * 0x16a88000 | (uint)(piVar1[0xb] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[0xc] * 0x16a88000 | (uint)(piVar1[0xc] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[0xd] * 0x16a88000 | (uint)(piVar1[0xd] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[0xe] * 0x16a88000 | (uint)(piVar1[0xe] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[0xf] * 0x16a88000 | (uint)(piVar1[0xf] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = (piVar1[0x10] * 0x16a88000 | (uint)(piVar1[0x10] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (piVar1[0x11] * 0x16a88000 | (uint)(piVar1[0x11] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uStack_178 = (piVar1[0x12] * 0x16a88000 | (uint)(piVar1[0x12] * -0x3361d2af) >> 0x11) * 0x1b873593
  ;
  uStack_178 = uStack_178 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  piVar10 = (int *)register0x00000020;
  do {
    piVar10 = (int *)-(((ulonglong)piVar10 ^ 0xffffffffffffffff) + 1);
    uVar2 = (*piVar10 + 1) * *piVar10 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = (piVar1[0x13] * 0x16a88000 | (uint)(piVar1[0x13] * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uStack_178 << 0xd | uStack_178 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x14] * 0x16a88000 | (uint)(local_168[0x14] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x15] * 0x16a88000 | (uint)(local_168[0x15] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x16] * 0x16a88000 | (uint)(local_168[0x16] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  do {
    uStack_130 = 0x682779e;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uStack_174 = 0x49ea3452;
  uVar2 = (local_168[0x17] * 0x16a88000 | (uint)(local_168[0x17] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x18] * 0x16a88000 | (uint)(local_168[0x18] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x19] * 0x16a88000 | (uint)(local_168[0x19] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x1a] * 0x16a88000 | (uint)(local_168[0x1a] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x1b] * 0x16a88000 | (uint)(local_168[0x1b] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x1c] * 0x16a88000 | (uint)(local_168[0x1c] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x1d] * 0x16a88000 | (uint)(local_168[0x1d] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (local_168[0x1e] * 0x16a88000 | (uint)(local_168[0x1e] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar2 = (uVar2 << 0xd | uVar2 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (local_168[0x1f] * 0x16a88000 | (uint)(local_168[0x1f] * -0x3361d2af) >> 0x11) *
          0x1b873593 ^ uVar2;
  uStack_178 = (local_168[0x20] * 0x16a88000 | (uint)(local_168[0x20] * -0x3361d2af) >> 0x11) *
               0x1b873593;
  func_0x0001811e10d3((uVar3 << 0xd | uVar3 >> 0x13) * 5 + -0x19ab949c,uVar2,0);
                    /* WARNING: Call to offcut address within same function */
  uVar5 = func_0x0001811df194();
  uVar2 = (int)auStack_1a0 + -8 + (int)local_98;
  plVar9 = (longlong *)(ulonglong)uVar2;
  if ((POPCOUNT(uVar2 & 0xff) & 1U) != 0) {
    uVar8 = (ulonglong)(uVar2 - 0x10);
    lVar11 = *(longlong *)(uVar8 + 0x10);
    *(longlong *)(uVar8 + 0x10) = lVar11 + 0x188;
    in_R11 = lVar11 + 0x175378;
    plVar9 = (longlong *)(uVar8 - 8);
  }
  plVar9[2] = in_R11;
  plVar9[1] = lVar11 + 0xc19b;
  *plVar9 = lVar11 + 0x175378;
  plVar9[-1] = lVar11 + -0x3f0cb;
  plVar9[-2] = lVar11 + 0x30ef5;
  plVar9[-3] = lVar11 + -0x6581a;
  plVar9[-4] = lVar11 + 0x6ca8;
  plVar9[-5] = lVar11 + -0x77b08;
  return uVar5;
}



############ FUN_ 1811ca880 size=445 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811ca880(undefined8 param_1,longlong *param_2)

{
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  uint *puVar5;
  undefined8 *puVar6;
  undefined1 auStack_88 [32];
  longlong local_68;
  undefined8 local_60;
  longlong *local_58;
  undefined1 local_50 [8];
  undefined **local_48;
  longlong local_40;
  longlong *local_38;
  undefined1 local_30 [8];
  ulonglong local_28;
  
  local_60 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_48 = (undefined **)param_2;
  puVar3 = (undefined8 *)
           .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
           vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                     (param_1,&local_38);
  (**(code **)(*(longlong *)*puVar3 + 0x20))((longlong *)*puVar3,&local_68,puVar3 + 1);
  FUN_181249700(&local_58,&local_68);
  puVar5 = (uint *)(local_68 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  (**(code **)(*local_38 + 0xb0))(local_38,local_30);
  cVar2 = (**(code **)(*local_58 + 0x90))();
  if (cVar2 == '\0') {
    (**(code **)(*local_58 + 0xb0))(local_58,local_50);
    puVar5 = (uint *)(*param_2 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  else {
    local_48 = &PTR_vftable_18262b560;
    local_40 = *param_2;
    if ((*(uint *)(local_40 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_40 + -0x10) = *(int *)(local_40 + -0x10) + 1;
      UNLOCK();
    }
    plVar4 = (longlong *)(**(code **)(*local_58 + 0x38))(local_58,local_50);
    puVar3 = (undefined8 *)*plVar4;
    puVar6 = puVar3 + (longlong)*(int *)((longlong)plVar4 + 0xc) * 2;
    while ((puVar3 != puVar6 &&
           (cVar2 = (**(code **)(*local_48 + 0xc0))(local_48,&local_40,puVar3 + 1,*puVar3),
           cVar2 == '\0'))) {
      puVar3 = puVar3 + 2;
    }
    (**(code **)(*local_48 + 0xb0))(local_48,&local_40);
    (**(code **)(*local_58 + 0xb0))(local_58,local_50);
    puVar5 = (uint *)(*param_2 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
}



############ FUN_ 1811ca790 size=215 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1811ca790(undefined8 param_1)

{
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  uint *_Memory;
  undefined1 auStack_68 [32];
  longlong local_48 [2];
  longlong *local_38;
  undefined1 local_30 [8];
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_48[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  puVar3 = (undefined8 *)
           .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
           vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                     (param_1,&local_28);
  (**(code **)(*(longlong *)*puVar3 + 0x20))((longlong *)*puVar3,local_48,puVar3 + 1);
  FUN_181249700(&local_38,local_48);
  _Memory = (uint *)(local_48[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  cVar2 = (**(code **)(*local_38 + 0x90))();
  if (cVar2 != '\0') {
    (**(code **)(*local_38 + 0x38))(local_38,local_30);
  }
  (**(code **)(*local_38 + 0xb0))(local_38,local_30);
}



############ FUN_ 1811d0a50 size=693 ############

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

ulonglong FUN_1811d0a50(void)

{
  uint uVar1;
  
  uVar1 = (uint)&stack0x00000000 & 0x5ff;
  uVar1 = (uVar1 * uVar1 * 0x10 + 4) % 0x13;
  return (((ulonglong)(uint)(((int)(-uVar1 | uVar1) >> 0x1f) * -0xf390) ^ 0xffffffffffffffff) + 1 ^
         0xffffffffffffffff) + 1 & 0xfffffffffffffff8;
}



############ FUN_ 180564300 size=52 ############

void * FUN_180564300(void *param_1,ulonglong param_2)

{
  FUN_180562e20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813d59f0 size=815 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001813d5a78) */
/* WARNING: Removing unreachable block (ram,0x0001813d5ac0) */
/* WARNING: Removing unreachable block (ram,0x0001813d5b5f) */

void FUN_1813d59f0(undefined8 param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  undefined1 auStack_228 [40];
  undefined *local_200;
  undefined *local_1f0;
  undefined8 local_1e8;
  undefined8 local_1c8;
  uint local_1b4;
  uint local_1b0;
  undefined8 local_198;
  undefined8 local_f0;
  ulonglong local_30;
  
  local_f0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_228;
  uVar2 = (uint)&stack0x00000000;
  if ((((uVar2 & 0x44ff) * (uVar2 & 0x44ff) + 1) % 7 & 0x15) == 0) {
    uVar3 = 1;
  }
  else {
    iVar1 = (uVar2 & 0x57ff) * (uVar2 & 0x57ff) + 1;
    uVar3 = (iVar1 >> 4) + (iVar1 >> 1) + iVar1 * 0x24924924 >> 0x1d;
    uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3;
  }
  local_1b4 = ((int)(-uVar3 | uVar3) >> 0x1f) * -0xfa5b ^ 0xf2ab;
  uVar2 = uVar2 & 0x2bf;
  iVar1 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  local_1b0 = 0xe64dU - (((iVar1 >> 1) - (iVar1 >> 3)) + iVar1 * 0x55555555 >> 0x1e) ^ 0xed0d;
  local_1e8 = 0;
  local_1c8 = 0xc5c;
  local_1f0 = &DAT_180984420;
  local_200 = &DAT_18098507c;
  local_198 = param_1;
  FUN_1813d5d27();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 180568c40 size=52 ############

void * FUN_180568c40(void *param_1,ulonglong param_2)

{
  FUN_180566770();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180564ca0 size=67 ############

void * .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
       vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                 (void *param_1,ulonglong param_2)

{
  FUN_181349e00((longlong)param_1 + 200);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180562ab0 size=65 ############

void * FUN_180562ab0(void *param_1,ulonglong param_2)

{
  FUN_18055fc30((longlong)param_1 + 0x78);
  FUN_1805619f0((longlong)param_1 + 8);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180561290 size=39 ############

void FUN_180561290(longlong param_1)

{
  *(undefined4 *)(param_1 + 0x24011c) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x240110));
}



############ FUN_ 18056cd00 size=307 ############

void FUN_18056cd00(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  
  pvVar2 = (void *)param_1[1];
  lVar3 = *param_1;
  uVar6 = (longlong)pvVar2 - lVar3 >> 2;
  uVar4 = param_1[2] - lVar3 >> 2;
  if (param_2 <= uVar4) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        param_1[1] = lVar3 + param_2 * 4;
      }
      return;
    }
    pvVar1 = (void *)((longlong)pvVar2 + (param_2 - uVar6) * 4);
    memset(pvVar2,0,(longlong)pvVar1 - (longlong)pvVar2);
    param_1[1] = (longlong)pvVar1;
    return;
  }
  if (0x3fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar5 = param_2;
  if ((uVar4 <= 0x3fffffffffffffff - (uVar4 >> 1)) &&
     (uVar5 = (uVar4 >> 1) + uVar4, uVar5 < param_2)) {
    uVar5 = param_2;
  }
  lVar3 = uVar5 * 4;
  if (0x3fffffffffffffff < uVar5) {
    lVar3 = -1;
  }
  pvVar2 = (void *)FUN_180480500(lVar3);
  memset((void *)((longlong)pvVar2 + uVar6 * 4),0,(param_2 - uVar6) * 4);
  memmove(pvVar2,(void *)*param_1,param_1[1] - *param_1);
  FUN_18056df20(param_1,pvVar2,param_2,uVar5);
  return;
}



############ FUN_ 180530010 size=78 ############

void FUN_180530010(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0();
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,param_3,param_1,param_4);
}



############ FUN_ 1805686c0 size=302 ############

void FUN_1805686c0(longlong *param_1,ulonglong param_2,undefined4 *param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  undefined4 *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)*param_1;
  uVar6 = param_1[1] - (longlong)pvVar1 >> 2;
  uVar2 = param_1[2] - (longlong)pvVar1 >> 2;
  if (uVar2 < param_2) {
    if (0x3fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar6 = param_2;
    if ((uVar2 <= 0x3fffffffffffffff - (uVar2 >> 1)) &&
       (uVar6 = (uVar2 >> 1) + uVar2, uVar6 < param_2)) {
      uVar6 = param_2;
    }
    if (pvVar1 != (void *)0x0) {
      pvVar3 = pvVar1;
      if ((0xfff < uVar2 * 4) &&
         (pvVar3 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar3);
    }
    FUN_18052fac0(param_1,uVar6);
    puVar4 = (undefined4 *)*param_1;
    if (param_2 != 0) {
      do {
        *puVar4 = *param_3;
        puVar4 = puVar4 + 1;
        param_2 = param_2 - 1;
      } while (param_2 != 0);
      param_1[1] = (longlong)puVar4;
      return;
    }
  }
  else {
    if (param_2 <= uVar6) {
      pvVar3 = (void *)((longlong)pvVar1 + param_2 * 4);
      FUN_18056ce40(pvVar1,pvVar3);
      param_1[1] = (longlong)pvVar3;
      return;
    }
    FUN_18056ce40();
    puVar4 = (undefined4 *)param_1[1];
    for (lVar5 = param_2 - uVar6; lVar5 != 0; lVar5 = lVar5 + -1) {
      *puVar4 = *param_3;
      puVar4 = puVar4 + 1;
    }
  }
  param_1[1] = (longlong)puVar4;
  return;
}



############ FUN_ 18058fc80 size=333 ############

void FUN_18058fc80(longlong *param_1,ulonglong param_2,longlong param_3)

{
  undefined4 *puVar1;
  void *_Dst;
  ulonglong uVar2;
  longlong lVar3;
  undefined4 *puVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  
  lVar3 = *param_1;
  puVar4 = (undefined4 *)param_1[1];
  uVar6 = (longlong)puVar4 - lVar3 >> 2;
  uVar2 = param_1[2] - lVar3 >> 2;
  if (param_2 <= uVar2) {
    if (uVar6 < param_2) {
      puVar1 = *(undefined4 **)(param_3 + 8);
      for (lVar3 = param_2 - uVar6; lVar3 != 0; lVar3 = lVar3 + -1) {
        *puVar4 = *puVar1;
        puVar4 = puVar4 + 1;
      }
      param_1[1] = (longlong)puVar4;
      return;
    }
    if (param_2 != uVar6) {
      param_1[1] = lVar3 + param_2 * 4;
    }
    return;
  }
  if (param_2 < 0x4000000000000000) {
    uVar5 = param_2;
    if ((uVar2 <= 0x3fffffffffffffff - (uVar2 >> 1)) &&
       (uVar5 = (uVar2 >> 1) + uVar2, uVar5 < param_2)) {
      uVar5 = param_2;
    }
    lVar3 = uVar5 * 4;
    if (0x3fffffffffffffff < uVar5) {
      lVar3 = -1;
    }
    _Dst = (void *)FUN_180480500(lVar3);
    puVar1 = *(undefined4 **)(param_3 + 8);
    puVar4 = (undefined4 *)((longlong)_Dst + uVar6 * 4);
    for (lVar3 = param_2 - uVar6; lVar3 != 0; lVar3 = lVar3 + -1) {
      *puVar4 = *puVar1;
      puVar4 = puVar4 + 1;
    }
    memmove(_Dst,(void *)*param_1,param_1[1] - *param_1);
    FUN_18056df20(param_1,_Dst,param_2,uVar5);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_18047cf10();
}



############ FUN_ 180001b20 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182615d88)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001eb0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616248)[DAT_1826159a0])();
  return;
}



############ FUN_ 18129eee0 size=129 ############

void FUN_18129eee0(undefined8 *param_1,float param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  float fVar6;
  
  fVar6 = floorf(param_2);
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + param_3;
  param_2 = param_2 * DAT_1824c4550;
  *(int *)(param_1 + 1) = *(int *)(param_1 + 1) + (int)fVar6;
  iVar2 = *(int *)((longlong)param_1 + 0x14);
  piVar4 = (int *)*param_1;
  while (iVar2 = iVar2 + -1, -1 < iVar2) {
    piVar1 = piVar4 + *(int *)((longlong)param_1 + 0x1c);
    iVar3 = *piVar4;
    piVar5 = piVar4 + 1;
    while (iVar3 = iVar3 + -1, piVar4 = piVar1, -1 < iVar3) {
      *piVar5 = *piVar5 + (int)param_2;
      piVar5 = piVar5 + 2;
    }
  }
  return;
}



############ FUN_ 18129f510 size=213 ############

void FUN_18129f510(undefined8 *param_1,float *param_2)

{
  float fVar1;
  float fVar2;
  double dVar3;
  float fVar4;
  float fVar5;
  int local_res8;
  
  dVar3 = DAT_1824c4520;
  fVar1 = *param_2;
  fVar4 = param_2[1] * DAT_1824c4550;
  *param_1 = 0;
  fVar5 = floorf(fVar1);
  fVar1 = param_2[2];
  fVar2 = param_2[3];
  *(int *)(param_1 + 1) = (int)fVar5;
  local_res8 = SUB84((double)fVar4 + dVar3,0);
  *(int *)((longlong)param_1 + 0xc) = local_res8 >> 8;
  *(int *)(param_1 + 2) = (int)fVar1 + 2;
  *(int *)((longlong)param_1 + 0x14) = (int)fVar2 + 2;
  *(undefined4 *)(param_1 + 3) = 0x20;
  *(undefined4 *)((longlong)param_1 + 0x1c) = 0x41;
  *(undefined1 *)(param_1 + 4) = 1;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1804ae030 size=877 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

bool FUN_1804ae030(longlong *param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  undefined8 *local_res8;
  float local_a8;
  float fStack_a4;
  float fStack_a0;
  float fStack_9c;
  undefined8 local_98;
  undefined8 uStack_90;
  ulonglong local_88;
  void *local_78;
  ulonglong local_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined1 local_58;
  
  plVar4 = (longlong *)*param_1;
  if (plVar4 != (longlong *)0x0) {
    if (1 < (int)plVar4[1]) {
      plVar4 = (longlong *)(**(code **)(*plVar4 + 8))(plVar4,&local_res8);
      lVar5 = *param_1;
      *param_1 = *plVar4;
      *plVar4 = lVar5;
      if (local_res8 != (undefined8 *)0x0) {
        piVar1 = (int *)(local_res8 + 1);
        *piVar1 = *piVar1 + -1;
        if (*piVar1 == 0) {
          (**(code **)*local_res8)(local_res8,1);
        }
      }
    }
    if ((char)param_1[5] == '\0') {
      if (*(char *)((longlong)param_1 + 0x29) != '\0') {
        local_78 = (void *)0x0;
        local_70 = 0;
        local_68 = 0;
        uStack_60 = 0;
        local_58 = 1;
        FUN_18129d850(&local_78);
        FUN_18129b680(&local_78,param_1 + 1);
        lVar5 = (**(code **)(*(longlong *)*param_1 + 0x58))((longlong *)*param_1,&local_98);
        fVar6 = (float)*(int *)(lVar5 + 0xc);
        FUN_18129d850(&local_78);
        local_58 = 0;
        local_98 = _DAT_1824c4780;
        uStack_90 = _UNK_1824c4788;
        local_88 = (ulonglong)DAT_1824c3ea4;
        plVar4 = (longlong *)
                 (**(code **)(*(longlong *)*param_1 + 0x30))
                           ((longlong *)*param_1,&local_res8,&local_78,&local_98,fVar6);
        lVar5 = *param_1;
        *param_1 = *plVar4;
        *plVar4 = lVar5;
        if (local_res8 != (undefined8 *)0x0) {
          piVar1 = (int *)(local_res8 + 1);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            (**(code **)*local_res8)(local_res8,1);
          }
        }
        local_70 = local_70 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
        free(local_78);
      }
      uStack_90._0_4_ = (float)param_2[2];
      uStack_90._4_4_ = (float)param_2[3];
      local_98 = CONCAT44((float)param_2[1],(float)*param_2);
      FUN_1804ab160(&local_98,&local_a8,param_1 + 1);
      fVar6 = local_a8;
      fVar8 = ceilf(local_a8);
      fVar7 = fStack_a4;
      fVar9 = ceilf(fStack_a4);
      local_98 = CONCAT44((int)fVar9,(int)fVar8);
      fVar6 = floorf(fStack_a0 + fVar6);
      uStack_90 = CONCAT44(uStack_90._4_4_,(int)fVar6 - (int)fVar8);
      fVar6 = floorf(fStack_9c + fVar7);
      uStack_90 = CONCAT44((int)fVar6 - (int)fVar9,(float)uStack_90);
      plVar4 = (longlong *)
               (**(code **)(*(longlong *)*param_1 + 0x28))
                         ((longlong *)*param_1,&local_res8,&local_98);
      lVar5 = *param_1;
      *param_1 = *plVar4;
      *plVar4 = lVar5;
    }
    else {
      iVar2 = param_2[2];
      iVar3 = param_2[3];
      fVar8 = (float)*param_2 + (float)(int)param_1[4];
      fVar9 = (float)param_2[1] + (float)*(int *)((longlong)param_1 + 0x24);
      fVar6 = ceilf(fVar8);
      fVar7 = ceilf(fVar9);
      local_a8 = (float)(int)fVar6;
      fStack_a4 = (float)(int)fVar7;
      fVar8 = floorf(fVar8 + (float)iVar2);
      fStack_a0 = (float)((int)fVar8 - (int)fVar6);
      fVar6 = floorf(fVar9 + (float)iVar3);
      fStack_9c = (float)((int)fVar6 - (int)fVar7);
      local_98 = CONCAT44(fStack_a4,local_a8);
      uStack_90 = CONCAT44(fStack_9c,fStack_a0);
      plVar4 = (longlong *)
               (**(code **)(*(longlong *)*param_1 + 0x28))
                         ((longlong *)*param_1,&local_res8,&local_98);
      lVar5 = *param_1;
      *param_1 = *plVar4;
      *plVar4 = lVar5;
    }
    if (local_res8 != (undefined8 *)0x0) {
      piVar1 = (int *)(local_res8 + 1);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        (**(code **)*local_res8)(local_res8,1);
      }
    }
  }
  return *param_1 != 0;
}



############ FUN_ 18137af80 size=128 ############

int FUN_18137af80(uint *param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  ulonglong uVar6;
  int iVar7;
  float fVar8;
  
  uVar1 = *param_1;
  uVar2 = param_1[1];
  fVar8 = powf((float)(int)uVar2,DAT_1824c3ea4 / (float)(int)uVar1);
  fVar8 = floorf(fVar8);
  iVar5 = (int)fVar8;
  iVar7 = iVar5 + 1;
  while( true ) {
    while( true ) {
      iVar4 = 1;
      iVar3 = 1;
      uVar6 = (ulonglong)uVar1;
      if (0 < (int)uVar1) {
        do {
          iVar4 = iVar4 * iVar5;
          iVar3 = iVar3 * iVar7;
          uVar6 = uVar6 - 1;
        } while (uVar6 != 0);
      }
      if (iVar4 <= (int)uVar2) break;
      iVar5 = iVar5 + -1;
      iVar7 = iVar7 + -1;
    }
    if ((int)uVar2 < iVar3) break;
    iVar5 = iVar5 + 1;
    iVar7 = iVar7 + 1;
  }
  return iVar5;
}



############ FUN_ 181390660 size=1358 ############

undefined4 FUN_181390660(undefined4 *param_1,longlong param_2,int param_3)

{
  int *piVar1;
  undefined4 *puVar2;
  float fVar3;
  uint uVar4;
  uint uVar5;
  undefined4 uVar6;
  int iVar7;
  void *pvVar8;
  void *pvVar9;
  undefined8 uVar10;
  uint uVar11;
  int *piVar13;
  undefined4 *_Dst;
  longlong *plVar14;
  ulonglong uVar15;
  longlong *plVar16;
  ulonglong uVar17;
  float fVar18;
  double dVar19;
  ulonglong uVar12;
  
  piVar1 = *(int **)(param_2 + 0x20);
  if (piVar1 == (int *)0x0) {
    return 1;
  }
  iVar7 = piVar1[0x59a];
  memset(param_1,0,0x80);
  pvVar8 = calloc(1,0xd0);
  uVar15 = 0;
  *(longlong *)(param_1 + 2) = param_2;
  *(void **)(param_1 + 0x1e) = pvVar8;
  uVar11 = 0;
  if (piVar1[2] != 0) {
    uVar12 = uVar15;
    for (uVar4 = piVar1[2] - 1; uVar4 != 0; uVar4 = uVar4 >> 1) {
      uVar11 = (int)uVar12 + 1;
      uVar12 = (ulonglong)uVar11;
    }
  }
  *(uint *)((longlong)pvVar8 + 0x50) = uVar11;
  pvVar9 = calloc(1,8);
  *(void **)((longlong)pvVar8 + 0x10) = pvVar9;
  pvVar9 = calloc(1,8);
  *(void **)((longlong)pvVar8 + 0x18) = pvVar9;
  pvVar9 = calloc(1,0x20);
  **(undefined8 **)((longlong)pvVar8 + 0x10) = pvVar9;
  pvVar9 = calloc(1,0x20);
  **(undefined8 **)((longlong)pvVar8 + 0x18) = pvVar9;
  FUN_181384180(**(undefined8 **)((longlong)pvVar8 + 0x10),*piVar1 >> ((byte)iVar7 & 0x1f));
  FUN_181384180(**(undefined8 **)((longlong)pvVar8 + 0x18),piVar1[1] >> ((byte)iVar7 & 0x1f));
  uVar4 = 0;
  uVar11 = uVar4;
  if (*piVar1 != 0) {
    uVar12 = uVar15;
    for (uVar5 = *piVar1 - 1; uVar5 != 0; uVar5 = uVar5 >> 1) {
      uVar11 = (int)uVar12 + 1;
      uVar12 = (ulonglong)uVar11;
    }
  }
  *(uint *)((longlong)pvVar8 + 8) = uVar11 - 6;
  if (piVar1[1] != 0) {
    uVar12 = uVar15;
    for (uVar11 = piVar1[1] - 1; uVar11 != 0; uVar11 = uVar11 >> 1) {
      uVar4 = (int)uVar12 + 1;
      uVar12 = (ulonglong)uVar4;
    }
  }
  *(uint *)((longlong)pvVar8 + 0xc) = uVar4 - 6;
  if (param_3 == 0) {
    if (*(longlong *)(piVar1 + 0x4c8) == 0) {
      pvVar9 = calloc((longlong)piVar1[6],0x58);
      *(void **)(piVar1 + 0x4c8) = pvVar9;
      if (0 < piVar1[6]) {
        plVar16 = (longlong *)(piVar1 + 0x2c8);
        uVar12 = uVar15;
        plVar14 = plVar16;
        do {
          if (*plVar14 == 0) {
LAB_181390b7a:
            if (0 < piVar1[6]) {
              do {
                if (*plVar16 != 0) {
                  FUN_18137ac80();
                  *plVar16 = 0;
                }
                uVar11 = (int)uVar15 + 1;
                uVar15 = (ulonglong)uVar11;
                plVar16 = plVar16 + 1;
              } while ((int)uVar11 < piVar1[6]);
            }
            FUN_18138ffc0(param_1);
            return 0xffffffff;
          }
          iVar7 = FUN_18137a400((longlong)(int)uVar12 * 0x58 + *(longlong *)(piVar1 + 0x4c8));
          if (iVar7 != 0) goto LAB_181390b7a;
          FUN_18137ac80(*plVar14);
          *plVar14 = 0;
          uVar11 = (int)uVar12 + 1;
          uVar12 = (ulonglong)uVar11;
          plVar14 = plVar14 + 1;
        } while ((int)uVar11 < piVar1[6]);
      }
    }
  }
  else {
    FUN_1813776a0((longlong)pvVar8 + 0x20,*piVar1);
    FUN_1813776a0((longlong)pvVar8 + 0x38,piVar1[1]);
    if (*(longlong *)(piVar1 + 0x4c8) == 0) {
      pvVar9 = calloc((longlong)piVar1[6],0x58);
      *(void **)(piVar1 + 0x4c8) = pvVar9;
      fVar3 = DAT_1824c3d8c;
      if (0 < piVar1[6]) {
        piVar13 = piVar1 + 0x2c8;
        uVar11 = (uint)DAT_1824c4f20;
        uVar4 = (uint)((ulonglong)DAT_1824c4f20 >> 0x20);
        uVar12 = uVar15;
        uVar17 = uVar15;
        do {
          puVar2 = *(undefined4 **)piVar13;
          _Dst = (undefined4 *)(*(longlong *)(piVar1 + 0x4c8) + uVar17);
          memset(_Dst,0,0x58);
          *(undefined4 **)(_Dst + 4) = puVar2;
          _Dst[1] = puVar2[1];
          _Dst[2] = puVar2[1];
          *_Dst = *puVar2;
          uVar10 = FUN_18137b010(*(undefined8 *)(puVar2 + 2),puVar2[1],0);
          *(undefined8 *)(_Dst + 8) = uVar10;
          uVar6 = FUN_18137af80(puVar2);
          _Dst[0x12] = uVar6;
          uVar5 = puVar2[5];
          dVar19 = (double)(uVar5 & 0x1fffff);
          if ((int)uVar5 < 0) {
            dVar19 = (double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) ^ uVar4,
                                      SUB84(dVar19,0) ^ uVar11);
          }
          dVar19 = ldexp(dVar19,((int)uVar5 >> 0x15 & 0x3ffU) - 0x314);
          fVar18 = floorf((float)dVar19 + fVar3);
          _Dst[0x13] = (int)fVar18;
          uVar5 = puVar2[6];
          dVar19 = (double)(uVar5 & 0x1fffff);
          if ((int)uVar5 < 0) {
            dVar19 = (double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) ^ uVar4,
                                      SUB84(dVar19,0) ^ uVar11);
          }
          dVar19 = ldexp(dVar19,((int)uVar5 >> 0x15 & 0x3ffU) - 0x314);
          fVar18 = floorf((float)dVar19 + fVar3);
          uVar5 = (int)uVar12 + 1;
          uVar12 = (ulonglong)uVar5;
          piVar13 = piVar13 + 2;
          uVar17 = uVar17 + 0x58;
          _Dst[0x14] = (int)fVar18;
        } while ((int)uVar5 < piVar1[6]);
      }
    }
    pvVar9 = calloc((longlong)piVar1[7],0x50);
    *(void **)((longlong)pvVar8 + 0x68) = pvVar9;
    if (0 < piVar1[7]) {
      piVar13 = piVar1 + 0x4ca;
      uVar12 = uVar15;
      do {
        FUN_181380b80((longlong)(int)uVar12 * 0x50 + *(longlong *)((longlong)pvVar8 + 0x68),
                      *(int **)piVar13,piVar1 + 0x4d2,piVar1[**(int **)piVar13] / 2,
                      *(undefined4 *)(param_2 + 8));
        uVar11 = (int)uVar12 + 1;
        uVar12 = (ulonglong)uVar11;
        piVar13 = piVar13 + 2;
      } while ((int)uVar11 < piVar1[7]);
    }
    *param_1 = 1;
  }
  param_1[8] = piVar1[1];
  pvVar9 = malloc((longlong)*(int *)(param_2 + 4) << 3);
  *(void **)(param_1 + 4) = pvVar9;
  pvVar9 = malloc((longlong)*(int *)(param_2 + 4) << 3);
  *(void **)(param_1 + 6) = pvVar9;
  uVar12 = uVar15;
  uVar17 = uVar15;
  if (0 < *(int *)(param_2 + 4)) {
    do {
      pvVar9 = calloc((longlong)(int)param_1[8],4);
      uVar11 = (int)uVar12 + 1;
      *(void **)(uVar17 + *(longlong *)(param_1 + 4)) = pvVar9;
      uVar12 = (ulonglong)uVar11;
      uVar17 = uVar17 + 8;
    } while ((int)uVar11 < *(int *)(param_2 + 4));
  }
  *(undefined8 *)(param_1 + 0xd) = 0;
  iVar7 = piVar1[1];
  param_1[0x10] = iVar7 / 2;
  param_1[9] = iVar7 / 2;
  pvVar9 = calloc((longlong)piVar1[4],8);
  *(void **)((longlong)pvVar8 + 0x58) = pvVar9;
  pvVar9 = calloc((longlong)piVar1[5],8);
  *(void **)((longlong)pvVar8 + 0x60) = pvVar9;
  if (0 < piVar1[4]) {
    piVar13 = piVar1 + 0x148;
    uVar12 = uVar15;
    uVar17 = uVar15;
    do {
      uVar10 = (**(code **)((&PTR_DAT_1822f5a90)[*piVar13] + 0x10))
                         (param_1,*(undefined8 *)((longlong)piVar1 + uVar12 + 0x620));
      piVar13 = piVar13 + 1;
      uVar11 = (int)uVar17 + 1;
      uVar17 = (ulonglong)uVar11;
      *(undefined8 *)(uVar12 + *(longlong *)((longlong)pvVar8 + 0x58)) = uVar10;
      uVar12 = uVar12 + 8;
    } while ((int)uVar11 < piVar1[4]);
  }
  if (0 < piVar1[5]) {
    piVar13 = piVar1 + 0x208;
    uVar12 = uVar15;
    do {
      uVar10 = (**(code **)((&PTR_DAT_182280c20)[*piVar13] + 0x10))
                         (param_1,*(undefined8 *)((longlong)piVar1 + uVar12 + 0x920));
      piVar13 = piVar13 + 1;
      uVar11 = (int)uVar15 + 1;
      uVar15 = (ulonglong)uVar11;
      *(undefined8 *)(uVar12 + *(longlong *)((longlong)pvVar8 + 0x60)) = uVar10;
      uVar12 = uVar12 + 8;
    } while ((int)uVar11 < piVar1[5]);
  }
  return 0;
}



############ FUN_ 181380b80 size=2447 ############

void FUN_181380b80(int *param_1,longlong param_2,int *param_3,int param_4,int param_5)

{
  size_t _Size;
  char cVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  float fVar5;
  void *pvVar6;
  undefined8 uVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  int iVar11;
  uint uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  int iVar15;
  int iVar16;
  ulonglong uVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  longlong lVar21;
  float *pfVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  double dVar29;
  double dVar30;
  double dVar31;
  double dVar32;
  float fVar33;
  float fVar34;
  double dVar35;
  undefined4 uVar36;
  undefined4 uVar37;
  undefined4 uVar38;
  undefined4 uVar39;
  undefined4 uVar40;
  undefined4 uVar41;
  double dVar42;
  int local_res18;
  longlong local_100;
  
  iVar18 = -99;
  lVar21 = (longlong)param_4;
  local_res18 = 1;
  iVar19 = local_res18;
  memset(param_1,0,0x50);
  param_1[0x10] = *param_3;
  fVar23 = logf((float)*param_3 * DAT_1824c43d8);
  fVar24 = logf(DAT_1824c41e0);
  fVar24 = floorf(fVar23 / fVar24 + DAT_1824c3d8c);
  dVar2 = DAT_1824c4050;
  fVar23 = DAT_1824c3d3c;
  fVar24 = fVar24 - DAT_1824c3ea4;
  fVar25 = (float)param_5 * DAT_1824c3d3c;
  param_1[0xf] = (int)fVar24;
  dVar42 = (double)param_4;
  dVar29 = log(((double)fVar25 * dVar2) / dVar42);
  dVar32 = DAT_1824c4238;
  dVar31 = DAT_1824c41b0;
  cVar1 = (char)(int)fVar24;
  uVar40 = SUB84(DAT_1824c41b0,0);
  uVar41 = (undefined4)((ulonglong)DAT_1824c41b0 >> 0x20);
  uVar38 = SUB84(DAT_1824c4238,0);
  uVar39 = (undefined4)((ulonglong)DAT_1824c4238 >> 0x20);
  iVar11 = (int)((dVar29 * DAT_1824c41b0 - DAT_1824c4238) * (double)(1 << (cVar1 + 1U & 0x1f)) -
                (double)*param_3);
  param_1[0xe] = iVar11;
  dVar29 = log(((double)(((float)param_4 + fVar23) * (float)param_5) * dVar2) / dVar42);
  _Size = lVar21 * 4;
  param_1[0x11] =
       ((int)((dVar29 * dVar31 - dVar32) * (double)(1 << (cVar1 + 1U & 0x1f)) + dVar2) - iVar11) + 1
  ;
  pvVar6 = malloc(_Size);
  *(void **)(param_1 + 8) = pvVar6;
  pvVar6 = malloc(_Size);
  *(void **)(param_1 + 10) = pvVar6;
  pvVar6 = malloc(_Size);
  *(void **)(param_1 + 0xc) = pvVar6;
  uVar13 = 0;
  *(longlong *)(param_1 + 2) = param_2;
  *param_1 = param_4;
  param_1[0x12] = param_5;
  param_1[0x13] = 0x3f800000;
  if (param_5 < 26000) {
    param_1[0x13] = 0;
  }
  else if (param_5 < 38000) {
    param_1[0x13] = 0x3f70a3d7;
  }
  else if (46000 < param_5) {
    param_1[0x13] = 0x3fa33333;
  }
  dVar4 = DAT_1824c42f0;
  dVar3 = DAT_1824c41e8;
  dVar29 = DAT_1824c4098;
  dVar31 = DAT_1824c3f80;
  pfVar22 = (float *)&DAT_1822effc4;
  uVar36 = SUB84(DAT_1824c41e8,0);
  uVar37 = (undefined4)((ulonglong)DAT_1824c41e8 >> 0x20);
  iVar11 = 1;
  dVar35 = (double)param_5;
  uVar17 = uVar13;
  do {
    dVar30 = exp((((double)iVar11 * dVar31 - dVar3) + dVar32) * dVar29);
    dVar30 = floor((dVar30 * dVar3 * dVar42) / dVar35 + dVar2);
    fVar24 = pfVar22[-1];
    iVar8 = (int)dVar30;
    if ((int)uVar17 < iVar8) {
      lVar10 = (longlong)iVar8;
      fVar25 = (*pfVar22 - fVar24) / (float)(iVar8 - (int)uVar17);
      if ((longlong)uVar13 < lVar10) {
        if (3 < (longlong)(lVar10 - uVar13)) {
          lVar9 = uVar13 + 2;
          do {
            if (lVar21 <= (longlong)uVar13) goto LAB_181380f6a;
            *(float *)(*(longlong *)(param_1 + 8) + uVar13 * 4) = (float)((double)fVar24 + dVar4);
            iVar8 = (int)uVar17;
            if (lVar21 <= lVar9 + -1) {
              uVar13 = uVar13 + 1;
              uVar17 = (ulonglong)(iVar8 + 1);
              goto LAB_181380f6a;
            }
            fVar33 = fVar24 + fVar25 + fVar25;
            *(float *)(*(longlong *)(param_1 + 8) + 4 + uVar13 * 4) =
                 (float)((double)(fVar24 + fVar25) + dVar4);
            if (lVar21 <= lVar9) {
              uVar13 = uVar13 + 2;
              uVar17 = (ulonglong)(iVar8 + 2);
              goto LAB_181380f6a;
            }
            fVar34 = fVar33 + fVar25;
            *(float *)(*(longlong *)(param_1 + 8) + 8 + uVar13 * 4) =
                 (float)((double)fVar33 + dVar4);
            if (lVar21 <= lVar9 + 1) {
              uVar13 = uVar13 + 3;
              uVar17 = (ulonglong)(iVar8 + 3);
              goto LAB_181380f6a;
            }
            uVar17 = (ulonglong)(iVar8 + 4);
            lVar9 = lVar9 + 4;
            fVar24 = fVar34 + fVar25;
            *(float *)(*(longlong *)(param_1 + 8) + 0xc + uVar13 * 4) =
                 (float)((double)fVar34 + dVar4);
            uVar13 = uVar13 + 4;
          } while ((longlong)uVar13 < lVar10 + -3);
        }
        for (; ((longlong)uVar13 < lVar10 && ((longlong)uVar13 < lVar21)); uVar13 = uVar13 + 1) {
          dVar30 = (double)fVar24;
          uVar17 = (ulonglong)((int)uVar17 + 1);
          fVar24 = fVar24 + fVar25;
          *(float *)(*(longlong *)(param_1 + 8) + uVar13 * 4) = (float)(dVar30 + dVar4);
        }
      }
    }
LAB_181380f6a:
    iVar11 = iVar11 + 1;
    pfVar22 = pfVar22 + 1;
  } while ((longlong)pfVar22 < 0x1822f0120);
  lVar10 = (longlong)(int)uVar17;
  if (lVar10 < lVar21) {
    if (3 < lVar21 - lVar10) {
      do {
        *(undefined4 *)(*(longlong *)(param_1 + 8) + lVar10 * 4) =
             *(undefined4 *)(*(longlong *)(param_1 + 8) + -4 + lVar10 * 4);
        *(undefined4 *)(*(longlong *)(param_1 + 8) + 4 + lVar10 * 4) =
             *(undefined4 *)(*(longlong *)(param_1 + 8) + lVar10 * 4);
        *(undefined4 *)(*(longlong *)(param_1 + 8) + 8 + lVar10 * 4) =
             *(undefined4 *)(*(longlong *)(param_1 + 8) + 4 + lVar10 * 4);
        *(undefined4 *)(*(longlong *)(param_1 + 8) + 0xc + lVar10 * 4) =
             *(undefined4 *)(*(longlong *)(param_1 + 8) + 8 + lVar10 * 4);
        lVar10 = lVar10 + 4;
      } while (lVar10 < lVar21 + -3);
    }
    for (; lVar10 < lVar21; lVar10 = lVar10 + 1) {
      *(undefined4 *)(*(longlong *)(param_1 + 8) + lVar10 * 4) =
           *(undefined4 *)(*(longlong *)(param_1 + 8) + -4 + lVar10 * 4);
    }
  }
  fVar5 = DAT_1824c4410;
  fVar34 = DAT_1824c4220;
  fVar33 = DAT_1824c3c4c;
  fVar25 = DAT_1824c3c44;
  fVar24 = DAT_1824c3c30;
  iVar11 = 0;
  if (0 < param_4) {
    iVar8 = param_5 / (param_4 * 2);
    local_100 = 0;
    local_res18 = 0;
    param_5 = 0;
    do {
      fVar23 = atanf((float)(iVar8 * iVar11) * fVar33);
      fVar26 = atanf((float)(param_5 * iVar11) * fVar24);
      iVar20 = *(int *)(param_2 + 0x78) + iVar18;
      fVar23 = fVar23 * fVar5 + fVar26 * fVar34 + (float)local_res18 * fVar25;
      if (iVar20 < iVar11) {
        fVar26 = *(float *)(param_2 + 0x70);
        iVar16 = iVar8 * iVar18;
        iVar15 = iVar8 * iVar8 * iVar18;
        do {
          fVar27 = atanf((float)(iVar15 * iVar18) * fVar24);
          fVar28 = atanf((float)(iVar8 * iVar18) * fVar33);
          if (fVar23 - fVar26 <= fVar27 * fVar34 + fVar28 * fVar5 + (float)iVar16 * fVar25) break;
          iVar18 = iVar18 + 1;
          iVar15 = iVar15 + iVar8 * iVar8;
          iVar16 = iVar16 + iVar8;
          iVar20 = iVar20 + 1;
        } while (iVar20 < iVar11);
      }
      if (iVar19 <= param_4) {
        iVar20 = *(int *)(param_2 + 0x7c);
        iVar15 = iVar8 * iVar19;
        do {
          if (iVar20 + iVar11 <= iVar19) {
            fVar26 = atanf((float)(iVar8 * iVar8 * iVar19 * iVar19) * fVar24);
            fVar27 = atanf((float)(iVar8 * iVar19) * fVar33);
            if (fVar23 + *(float *)(param_2 + 0x74) <=
                fVar26 * fVar34 + fVar27 * fVar5 + (float)iVar15 * fVar25) break;
          }
          iVar19 = iVar19 + 1;
          iVar15 = iVar15 + iVar8;
        } while (iVar19 <= param_4);
      }
      local_res18 = local_res18 + iVar8;
      iVar11 = iVar11 + 1;
      *(int *)(local_100 + *(longlong *)(param_1 + 0xc)) = iVar18 * 0x10000 + -0x10001 + iVar19;
      local_100 = local_100 + 4;
      param_5 = param_5 + iVar8 * iVar8;
    } while (iVar11 < param_4);
    uVar36 = SUB84(DAT_1824c41e8,0);
    uVar37 = (undefined4)((ulonglong)DAT_1824c41e8 >> 0x20);
    uVar38 = SUB84(DAT_1824c4238,0);
    uVar39 = (undefined4)((ulonglong)DAT_1824c4238 >> 0x20);
    uVar40 = SUB84(DAT_1824c41b0,0);
    uVar41 = (undefined4)((ulonglong)DAT_1824c41b0 >> 0x20);
    fVar23 = DAT_1824c3d3c;
  }
  uVar14 = 0;
  uVar13 = uVar14;
  uVar17 = uVar14;
  if (0 < param_4) {
    do {
      dVar31 = log(((double)((float)(int)uVar13 + fVar23) * dVar2 * dVar35) / dVar42);
      uVar12 = (int)uVar13 + 1;
      *(int *)(uVar17 + *(longlong *)(param_1 + 10)) =
           (int)((dVar31 * (double)CONCAT44(uVar41,uVar40) - (double)CONCAT44(uVar39,uVar38)) *
                 (double)(1 << ((char)param_1[0xf] + 1U & 0x1f)) + dVar2);
      uVar13 = (ulonglong)uVar12;
      uVar17 = uVar17 + 4;
    } while ((int)uVar12 < param_4);
  }
  uVar7 = FUN_181381520(param_2 + 0x24,(float)((dVar35 * dVar2) / dVar42),param_4,
                        *(undefined4 *)(param_2 + 0x18),*(undefined4 *)(param_2 + 0x1c));
  *(undefined8 *)(param_1 + 4) = uVar7;
  pvVar6 = malloc(0x18);
  *(void **)(param_1 + 6) = pvVar6;
  uVar13 = uVar14;
  do {
    pvVar6 = malloc(_Size);
    *(void **)(uVar13 + *(longlong *)(param_1 + 6)) = pvVar6;
    fVar23 = DAT_1824c441c;
    dVar31 = DAT_1824c4140;
    uVar13 = uVar13 + 8;
  } while ((longlong)uVar13 < 0x18);
  if (0 < param_4) {
    uVar13 = uVar14;
    do {
      dVar32 = log((((double)(int)uVar13 + dVar2) * dVar35) /
                   (dVar42 * (double)CONCAT44(uVar37,uVar36)));
      uVar12 = (int)uVar13 + 1;
      uVar13 = (ulonglong)uVar12;
      fVar25 = (float)((dVar32 * (double)CONCAT44(uVar41,uVar40) - (double)CONCAT44(uVar39,uVar38))
                      * (double)CONCAT44(uVar37,uVar36));
      fVar24 = 0.0;
      if (0.0 <= fVar25) {
        fVar24 = fVar25;
      }
      fVar25 = fVar23;
      if (fVar24 <= fVar23) {
        fVar25 = fVar24;
      }
      lVar21 = (longlong)(int)fVar25;
      fVar25 = fVar25 - (float)(int)fVar25;
      dVar32 = dVar31 - (double)fVar25;
      *(float *)(uVar14 + **(longlong **)(param_1 + 6)) =
           (float)((double)*(float *)(*(longlong *)(param_1 + 2) + 0x84 + lVar21 * 4) * dVar32 +
                  (double)(fVar25 * *(float *)(*(longlong *)(param_1 + 2) + 0x88 + lVar21 * 4)));
      *(float *)(uVar14 + *(longlong *)(*(longlong *)(param_1 + 6) + 8)) =
           (float)((double)*(float *)(*(longlong *)(param_1 + 2) + 200 + lVar21 * 4) * dVar32 +
                  (double)(fVar25 * *(float *)(*(longlong *)(param_1 + 2) + 0xcc + lVar21 * 4)));
      *(float *)(uVar14 + *(longlong *)(*(longlong *)(param_1 + 6) + 0x10)) =
           (float)((double)*(float *)(*(longlong *)(param_1 + 2) + 0x10c + lVar21 * 4) * dVar32 +
                  (double)(fVar25 * *(float *)(*(longlong *)(param_1 + 2) + 0x110 + lVar21 * 4)));
      uVar14 = uVar14 + 4;
    } while ((int)uVar12 < param_4);
  }
  return;
}



############ FUN_ 181381520 size=4138 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181381520(float *param_1,float param_2,int param_3,float param_4,float param_5)

{
  undefined8 *puVar1;
  undefined1 *puVar2;
  double dVar3;
  longlong lVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  double dVar12;
  double dVar13;
  double dVar14;
  double dVar15;
  double dVar16;
  float fVar17;
  float fVar18;
  undefined4 *puVar19;
  int iVar20;
  ulonglong uVar21;
  float *pfVar22;
  undefined8 *puVar23;
  longlong *plVar24;
  float *pfVar25;
  uint uVar26;
  ulonglong uVar27;
  int iVar28;
  uint uVar29;
  int iVar30;
  longlong lVar31;
  longlong lVar32;
  undefined4 *puVar33;
  undefined4 *puVar34;
  undefined1 *puVar35;
  longlong lVar36;
  longlong lVar37;
  undefined1 *puVar38;
  int iVar39;
  longlong lVar40;
  undefined8 *puVar41;
  longlong lVar42;
  float *pfVar43;
  float fVar44;
  float fVar45;
  float fVar46;
  double dVar47;
  double dVar48;
  float fVar49;
  float fVar50;
  double dVar51;
  double dVar52;
  undefined8 auStack_8080 [5];
  int local_8058 [2];
  float *local_8050;
  longlong *local_8048;
  undefined8 *local_8040;
  float *local_8038;
  float *local_8030;
  undefined4 *local_8028;
  float *local_8020;
  longlong local_8018;
  void *local_8010;
  double local_8008;
  longlong local_8000;
  double local_7ff8;
  longlong local_7ff0;
  float *local_7fe8;
  longlong local_7fe0;
  float *local_7fd8;
  undefined8 local_7fc8;
  undefined8 uStack_7fc0;
  undefined8 local_7fb8;
  undefined8 uStack_7fb0;
  undefined8 local_7fa8;
  undefined8 uStack_7fa0;
  undefined8 local_7f98;
  undefined8 uStack_7f90;
  undefined8 local_7f88;
  undefined8 uStack_7f80;
  undefined8 local_7f78;
  undefined8 uStack_7f70;
  undefined8 local_7f68;
  undefined8 uStack_7f60;
  undefined8 local_7f58;
  undefined8 uStack_7f50;
  undefined8 local_7f48;
  undefined8 uStack_7f40;
  undefined8 local_7f38;
  undefined8 uStack_7f30;
  undefined8 local_7f28;
  undefined8 uStack_7f20;
  undefined8 local_7f18;
  undefined8 uStack_7f10;
  undefined8 local_7f08;
  undefined8 uStack_7f00;
  undefined8 local_7ef8;
  undefined8 uStack_7ef0;
  undefined1 local_7ee8 [224];
  undefined1 local_7e08 [1568];
  float local_77e8 [168];
  undefined8 local_7548 [3724];
  ulonglong local_e8;
  
  local_e8 = DAT_182615970 ^ (ulonglong)local_8058;
  uVar21 = (longlong)param_3 * 4 + 0xf;
  if (uVar21 <= (ulonglong)((longlong)param_3 * 4)) {
    uVar21 = 0xffffffffffffff0;
  }
  auStack_8080[0] = 0x1813815da;
  lVar4 = -(uVar21 & 0xfffffffffffffff0);
  local_8028 = (undefined4 *)((longlong)local_8058 + lVar4);
  local_8058[1] = param_3;
  local_8050 = param_1;
  *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x1813815f1;
  local_8010 = malloc(0x88);
  *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181381609;
  memset(local_77e8,0,0x7700);
  fVar18 = _UNK_1824c4ea4;
  fVar17 = _DAT_1824c4ea0;
  dVar51 = _UNK_1824c4e58;
  dVar47 = _DAT_1824c4e50;
  fVar46 = DAT_1824c4740;
  fVar45 = DAT_1824c4598;
  dVar52 = DAT_1824c42c8;
  dVar48 = DAT_1824c4270;
  pfVar43 = (float *)&DAT_1822effc4;
  pfVar25 = local_77e8;
  lVar31 = 0x700;
  local_8048 = (longlong *)&DAT_182332bd0;
  local_8038 = pfVar25;
  lVar37 = -0x700;
  local_8040 = (undefined8 *)&DAT_182332cb0;
  lVar40 = 0;
  puVar38 = &stack0xfffffffe7dd08074;
  local_8058[0] = 2;
  lVar42 = -0x7e0;
  puVar41 = local_7548;
  fVar50 = 0.0;
  do {
    lVar32 = 0x38;
    pfVar22 = pfVar43;
    iVar28 = local_8058[0];
    do {
      fVar44 = fVar46;
      if ((iVar28 + -2 < 0x58) && (fVar44 = pfVar22[-1], fVar45 <= pfVar22[-1])) {
        fVar44 = fVar45;
      }
      fVar49 = fVar46;
      if (iVar28 + -1 < 0x58) {
        fVar49 = *pfVar22;
      }
      if (fVar44 <= fVar49) {
        fVar49 = fVar44;
      }
      fVar44 = fVar46;
      if (iVar28 < 0x58) {
        fVar44 = pfVar22[1];
      }
      iVar28 = iVar28 + 1;
      if (fVar49 <= fVar44) {
        fVar44 = fVar49;
      }
      fVar49 = fVar46;
      if (iVar28 < 0x58) {
        fVar49 = pfVar22[2];
      }
      if (fVar44 <= fVar49) {
        fVar49 = fVar44;
      }
      *(float *)((longlong)pfVar22 + (longlong)puVar38) = fVar49;
      pfVar22 = pfVar22 + 1;
      lVar32 = lVar32 + -1;
    } while (lVar32 != 0);
    uVar5 = local_8040[-0x1b];
    uVar6 = local_8040[-0x1a];
    uVar7 = local_8040[-0x19];
    puVar41[-0x1c] = local_8040[-0x1c];
    puVar41[-0x1b] = uVar5;
    uVar5 = local_8040[-0x18];
    uVar8 = local_8040[-0x17];
    puVar41[-0x1a] = uVar6;
    puVar41[-0x19] = uVar7;
    uVar6 = local_8040[-0x16];
    uVar7 = local_8040[-0x15];
    puVar41[-0x18] = uVar5;
    puVar41[-0x17] = uVar8;
    uVar5 = local_8040[-0x14];
    uVar8 = local_8040[-0x13];
    puVar41[-0x16] = uVar6;
    puVar41[-0x15] = uVar7;
    uVar6 = local_8040[-0x12];
    uVar7 = local_8040[-0x11];
    puVar41[-0x14] = uVar5;
    puVar41[-0x13] = uVar8;
    uVar5 = local_8040[-0x10];
    uVar8 = local_8040[-0xf];
    puVar41[-0x12] = uVar6;
    puVar41[-0x11] = uVar7;
    uVar6 = local_8040[-0xe];
    uVar7 = local_8040[-0xd];
    puVar41[-0x10] = uVar5;
    puVar41[-0xf] = uVar8;
    uVar5 = local_8040[-0xc];
    uVar8 = local_8040[-0xb];
    puVar41[-0xe] = uVar6;
    puVar41[-0xd] = uVar7;
    uVar6 = local_8040[-10];
    uVar7 = local_8040[-9];
    puVar41[-0xc] = uVar5;
    puVar41[-0xb] = uVar8;
    uVar5 = local_8040[-8];
    uVar8 = local_8040[-7];
    puVar41[-10] = uVar6;
    puVar41[-9] = uVar7;
    uVar6 = local_8040[-6];
    uVar7 = local_8040[-5];
    puVar41[-8] = uVar5;
    puVar41[-7] = uVar8;
    uVar5 = local_8040[-4];
    uVar8 = local_8040[-3];
    puVar41[-6] = uVar6;
    puVar41[-5] = uVar7;
    uVar6 = local_8040[-2];
    uVar7 = local_8040[-1];
    puVar41[-4] = uVar5;
    puVar41[-3] = uVar8;
    uVar5 = *local_8040;
    uVar8 = local_8040[1];
    puVar41[-2] = uVar6;
    puVar41[-1] = uVar7;
    uVar6 = local_8040[2];
    uVar7 = local_8040[3];
    *puVar41 = uVar5;
    puVar41[1] = uVar8;
    uVar5 = local_8040[4];
    uVar8 = local_8040[5];
    puVar41[2] = uVar6;
    puVar41[3] = uVar7;
    uVar6 = local_8040[6];
    uVar7 = local_8040[7];
    puVar41[4] = uVar5;
    puVar41[5] = uVar8;
    uVar5 = local_8040[8];
    uVar8 = local_8040[9];
    puVar41[6] = uVar6;
    puVar41[7] = uVar7;
    uVar6 = local_8040[10];
    uVar7 = local_8040[0xb];
    puVar41[8] = uVar5;
    puVar41[9] = uVar8;
    uVar5 = local_8040[0xc];
    uVar8 = local_8040[0xd];
    puVar41[10] = uVar6;
    puVar41[0xb] = uVar7;
    uVar6 = local_8040[0xe];
    uVar7 = local_8040[0xf];
    puVar41[0xc] = uVar5;
    puVar41[0xd] = uVar8;
    uVar5 = local_8040[0x10];
    uVar8 = local_8040[0x11];
    puVar41[0xe] = uVar6;
    puVar41[0xf] = uVar7;
    uVar6 = local_8040[0x12];
    uVar7 = local_8040[0x13];
    puVar41[0x10] = uVar5;
    puVar41[0x11] = uVar8;
    uVar5 = local_8040[0x14];
    uVar8 = local_8040[0x15];
    puVar41[0x12] = uVar6;
    puVar41[0x13] = uVar7;
    uVar6 = local_8040[0x16];
    uVar7 = local_8040[0x17];
    puVar41[0x14] = uVar5;
    puVar41[0x15] = uVar8;
    uVar5 = local_8040[0x18];
    uVar8 = local_8040[0x19];
    puVar41[0x16] = uVar6;
    puVar41[0x17] = uVar7;
    uVar6 = local_8040[0x1a];
    uVar7 = local_8040[0x1b];
    puVar41[0x18] = uVar5;
    puVar41[0x19] = uVar8;
    uVar5 = local_8040[0x1c];
    uVar8 = local_8040[0x1d];
    puVar41[0x1a] = uVar6;
    puVar41[0x1b] = uVar7;
    uVar6 = local_8040[0x1e];
    uVar7 = local_8040[0x1f];
    puVar41[0x1c] = uVar5;
    puVar41[0x1d] = uVar8;
    uVar5 = local_8040[0x20];
    uVar8 = local_8040[0x21];
    puVar41[0x1e] = uVar6;
    puVar41[0x1f] = uVar7;
    uVar6 = local_8040[0x22];
    uVar7 = local_8040[0x23];
    puVar41[0x20] = uVar5;
    puVar41[0x21] = uVar8;
    uVar5 = local_8040[0x24];
    uVar8 = local_8040[0x25];
    puVar41[0x22] = uVar6;
    puVar41[0x23] = uVar7;
    uVar6 = local_8040[0x26];
    uVar7 = local_8040[0x27];
    puVar41[0x24] = uVar5;
    puVar41[0x25] = uVar8;
    uVar5 = local_8040[0x28];
    uVar8 = local_8040[0x29];
    puVar41[0x26] = uVar6;
    puVar41[0x27] = uVar7;
    uVar6 = local_8040[0x2a];
    uVar7 = local_8040[0x2b];
    puVar41[0x28] = uVar5;
    puVar41[0x29] = uVar8;
    puVar41[0x2a] = uVar6;
    puVar41[0x2b] = uVar7;
    uVar5 = local_8040[0x2d];
    uVar6 = local_8040[0x2e];
    uVar7 = local_8040[0x2f];
    puVar41[0x2c] = local_8040[0x2c];
    puVar41[0x2d] = uVar5;
    uVar5 = local_8040[0x30];
    uVar8 = local_8040[0x31];
    puVar41[0x2e] = uVar6;
    puVar41[0x2f] = uVar7;
    uVar6 = local_8040[0x32];
    uVar7 = local_8040[0x33];
    puVar41[0x30] = uVar5;
    puVar41[0x31] = uVar8;
    uVar5 = local_8040[0x34];
    uVar8 = local_8040[0x35];
    puVar41[0x32] = uVar6;
    puVar41[0x33] = uVar7;
    uVar6 = local_8040[0x36];
    uVar7 = local_8040[0x37];
    puVar41[0x34] = uVar5;
    puVar41[0x35] = uVar8;
    uVar5 = local_8040[0x38];
    uVar8 = local_8040[0x39];
    puVar41[0x36] = uVar6;
    puVar41[0x37] = uVar7;
    uVar6 = local_8040[0x3a];
    uVar7 = local_8040[0x3b];
    puVar41[0x38] = uVar5;
    puVar41[0x39] = uVar8;
    uVar5 = local_8040[0x3c];
    uVar8 = local_8040[0x3d];
    puVar41[0x3a] = uVar6;
    puVar41[0x3b] = uVar7;
    uVar6 = local_8040[0x3e];
    uVar7 = local_8040[0x3f];
    puVar41[0x3c] = uVar5;
    puVar41[0x3d] = uVar8;
    uVar5 = local_8040[0x40];
    uVar8 = local_8040[0x41];
    puVar41[0x3e] = uVar6;
    puVar41[0x3f] = uVar7;
    uVar6 = local_8040[0x42];
    uVar7 = local_8040[0x43];
    puVar41[0x40] = uVar5;
    puVar41[0x41] = uVar8;
    uVar5 = local_8040[0x44];
    uVar8 = local_8040[0x45];
    puVar41[0x42] = uVar6;
    puVar41[0x43] = uVar7;
    uVar6 = local_8040[0x46];
    uVar7 = local_8040[0x47];
    puVar41[0x44] = uVar5;
    puVar41[0x45] = uVar8;
    uVar5 = local_8040[0x48];
    uVar8 = local_8040[0x49];
    puVar41[0x46] = uVar6;
    puVar41[0x47] = uVar7;
    uVar6 = local_8040[0x4a];
    uVar7 = local_8040[0x4b];
    puVar41[0x48] = uVar5;
    puVar41[0x49] = uVar8;
    uVar5 = local_8040[0x4c];
    uVar8 = local_8040[0x4d];
    puVar41[0x4a] = uVar6;
    puVar41[0x4b] = uVar7;
    uVar6 = local_8040[0x4e];
    uVar7 = local_8040[0x4f];
    puVar41[0x4c] = uVar5;
    puVar41[0x4d] = uVar8;
    uVar5 = local_8040[0x50];
    uVar8 = local_8040[0x51];
    puVar41[0x4e] = uVar6;
    puVar41[0x4f] = uVar7;
    uVar6 = local_8040[0x52];
    uVar7 = local_8040[0x53];
    puVar41[0x50] = uVar5;
    puVar41[0x51] = uVar8;
    uVar5 = local_8040[0x54];
    uVar8 = local_8040[0x55];
    puVar41[0x52] = uVar6;
    puVar41[0x53] = uVar7;
    uVar6 = local_8040[0x56];
    uVar7 = local_8040[0x57];
    puVar41[0x54] = uVar5;
    puVar41[0x55] = uVar8;
    uVar5 = local_8040[0x58];
    uVar8 = local_8040[0x59];
    puVar41[0x56] = uVar6;
    puVar41[0x57] = uVar7;
    uVar6 = local_8040[0x5a];
    uVar7 = local_8040[0x5b];
    puVar41[0x58] = uVar5;
    puVar41[0x59] = uVar8;
    uVar5 = local_8040[0x5c];
    uVar8 = local_8040[0x5d];
    puVar41[0x5a] = uVar6;
    puVar41[0x5b] = uVar7;
    uVar6 = local_8040[0x5e];
    uVar7 = local_8040[0x5f];
    puVar41[0x5c] = uVar5;
    puVar41[0x5d] = uVar8;
    uVar5 = local_8040[0x60];
    uVar8 = local_8040[0x61];
    puVar41[0x5e] = uVar6;
    puVar41[0x5f] = uVar7;
    uVar6 = local_8040[0x62];
    uVar7 = local_8040[99];
    puVar41[0x60] = uVar5;
    puVar41[0x61] = uVar8;
    uVar5 = local_8040[100];
    uVar8 = local_8040[0x65];
    puVar41[0x62] = uVar6;
    puVar41[99] = uVar7;
    uVar6 = local_8040[0x66];
    uVar7 = local_8040[0x67];
    puVar41[100] = uVar5;
    puVar41[0x65] = uVar8;
    uVar5 = local_8040[0x68];
    uVar8 = local_8040[0x69];
    puVar41[0x66] = uVar6;
    puVar41[0x67] = uVar7;
    uVar6 = local_8040[0x6a];
    uVar7 = local_8040[0x6b];
    puVar41[0x68] = uVar5;
    puVar41[0x69] = uVar8;
    uVar5 = local_8040[0x6c];
    uVar8 = local_8040[0x6d];
    puVar41[0x6a] = uVar6;
    puVar41[0x6b] = uVar7;
    uVar6 = local_8040[0x6e];
    uVar7 = local_8040[0x6f];
    puVar41[0x6c] = uVar5;
    puVar41[0x6d] = uVar8;
    uVar5 = local_8040[0x70];
    uVar8 = local_8040[0x71];
    puVar41[0x6e] = uVar6;
    puVar41[0x6f] = uVar7;
    puVar41[0x70] = uVar5;
    puVar41[0x71] = uVar8;
    uVar5 = local_8040[0x73];
    pfVar22 = pfVar25 + 1;
    uVar6 = local_8040[0x74];
    uVar7 = local_8040[0x75];
    puVar41[0x72] = local_8040[0x72];
    puVar41[0x73] = uVar5;
    puVar41[0x74] = uVar6;
    puVar41[0x75] = uVar7;
    uVar5 = local_8040[0x77];
    uVar6 = local_8040[0x78];
    uVar7 = local_8040[0x79];
    puVar41[0x76] = local_8040[0x76];
    puVar41[0x77] = uVar5;
    puVar41[0x78] = uVar6;
    puVar41[0x79] = uVar7;
    uVar5 = local_8040[0x7b];
    uVar6 = local_8040[0x7c];
    uVar7 = local_8040[0x7d];
    puVar41[0x7a] = local_8040[0x7a];
    puVar41[0x7b] = uVar5;
    puVar41[0x7c] = uVar6;
    puVar41[0x7d] = uVar7;
    uVar5 = local_8040[0x7f];
    uVar6 = local_8040[0x80];
    uVar7 = local_8040[0x81];
    puVar41[0x7e] = local_8040[0x7e];
    puVar41[0x7f] = uVar5;
    puVar41[0x80] = uVar6;
    puVar41[0x81] = uVar7;
    uVar5 = local_8040[0x83];
    uVar6 = local_8040[0x84];
    uVar7 = local_8040[0x85];
    puVar41[0x82] = local_8040[0x82];
    puVar41[0x83] = uVar5;
    puVar41[0x84] = uVar6;
    puVar41[0x85] = uVar7;
    uVar5 = local_8040[0x87];
    uVar6 = local_8040[0x88];
    uVar7 = local_8040[0x89];
    puVar41[0x86] = local_8040[0x86];
    puVar41[0x87] = uVar5;
    puVar41[0x88] = uVar6;
    puVar41[0x89] = uVar7;
    uVar5 = local_8040[0x8b];
    lVar32 = *local_8048;
    lVar9 = local_8048[1];
    puVar41[0x8a] = local_8040[0x8a];
    puVar41[0x8b] = uVar5;
    lVar10 = local_8048[2];
    lVar11 = local_8048[3];
    *(longlong *)pfVar25 = lVar32;
    *(longlong *)(pfVar25 + 2) = lVar9;
    lVar32 = local_8048[4];
    lVar9 = local_8048[5];
    *(longlong *)(pfVar25 + 4) = lVar10;
    *(longlong *)(pfVar25 + 6) = lVar11;
    lVar10 = local_8048[6];
    lVar11 = local_8048[7];
    *(longlong *)(pfVar25 + 8) = lVar32;
    *(longlong *)(pfVar25 + 10) = lVar9;
    lVar32 = local_8048[8];
    lVar9 = local_8048[9];
    *(longlong *)(pfVar25 + 0xc) = lVar10;
    *(longlong *)(pfVar25 + 0xe) = lVar11;
    lVar10 = local_8048[10];
    lVar11 = local_8048[0xb];
    *(longlong *)(pfVar25 + 0x10) = lVar32;
    *(longlong *)(pfVar25 + 0x12) = lVar9;
    lVar32 = local_8048[0xc];
    lVar9 = local_8048[0xd];
    *(longlong *)(pfVar25 + 0x14) = lVar10;
    *(longlong *)(pfVar25 + 0x16) = lVar11;
    lVar10 = local_8048[0xe];
    lVar11 = local_8048[0xf];
    *(longlong *)(pfVar25 + 0x18) = lVar32;
    *(longlong *)(pfVar25 + 0x1a) = lVar9;
    lVar32 = local_8048[0x10];
    lVar9 = local_8048[0x11];
    *(longlong *)(pfVar25 + 0x1c) = lVar10;
    *(longlong *)(pfVar25 + 0x1e) = lVar11;
    lVar10 = local_8048[0x12];
    lVar11 = local_8048[0x13];
    *(longlong *)(pfVar25 + 0x20) = lVar32;
    *(longlong *)(pfVar25 + 0x22) = lVar9;
    lVar32 = local_8048[0x14];
    lVar9 = local_8048[0x15];
    *(longlong *)(pfVar25 + 0x24) = lVar10;
    *(longlong *)(pfVar25 + 0x26) = lVar11;
    lVar10 = local_8048[0x16];
    lVar11 = local_8048[0x17];
    *(longlong *)(pfVar25 + 0x28) = lVar32;
    *(longlong *)(pfVar25 + 0x2a) = lVar9;
    lVar32 = local_8048[0x18];
    lVar9 = local_8048[0x19];
    *(longlong *)(pfVar25 + 0x2c) = lVar10;
    *(longlong *)(pfVar25 + 0x2e) = lVar11;
    lVar10 = local_8048[0x1a];
    lVar11 = local_8048[0x1b];
    *(longlong *)(pfVar25 + 0x30) = lVar32;
    *(longlong *)(pfVar25 + 0x32) = lVar9;
    lVar32 = *local_8048;
    lVar9 = local_8048[1];
    *(longlong *)(pfVar25 + 0x34) = lVar10;
    *(longlong *)(pfVar25 + 0x36) = lVar11;
    lVar10 = local_8048[2];
    lVar11 = local_8048[3];
    *(longlong *)(pfVar25 + 0x38) = lVar32;
    *(longlong *)(pfVar25 + 0x3a) = lVar9;
    lVar32 = local_8048[4];
    lVar9 = local_8048[5];
    *(longlong *)(pfVar25 + 0x3c) = lVar10;
    *(longlong *)(pfVar25 + 0x3e) = lVar11;
    lVar10 = local_8048[6];
    lVar11 = local_8048[7];
    *(longlong *)(pfVar25 + 0x40) = lVar32;
    *(longlong *)(pfVar25 + 0x42) = lVar9;
    lVar32 = local_8048[8];
    lVar9 = local_8048[9];
    *(longlong *)(pfVar25 + 0x44) = lVar10;
    *(longlong *)(pfVar25 + 0x46) = lVar11;
    lVar10 = local_8048[10];
    lVar11 = local_8048[0xb];
    *(longlong *)(pfVar25 + 0x48) = lVar32;
    *(longlong *)(pfVar25 + 0x4a) = lVar9;
    lVar32 = local_8048[0xc];
    lVar9 = local_8048[0xd];
    *(longlong *)(pfVar25 + 0x4c) = lVar10;
    *(longlong *)(pfVar25 + 0x4e) = lVar11;
    lVar10 = local_8048[0xe];
    lVar11 = local_8048[0xf];
    *(longlong *)(pfVar25 + 0x50) = lVar32;
    *(longlong *)(pfVar25 + 0x52) = lVar9;
    lVar32 = local_8048[0x10];
    lVar9 = local_8048[0x11];
    *(longlong *)(pfVar25 + 0x54) = lVar10;
    *(longlong *)(pfVar25 + 0x56) = lVar11;
    *(longlong *)(pfVar25 + 0x58) = lVar32;
    *(longlong *)(pfVar25 + 0x5a) = lVar9;
    lVar32 = local_8048[0x13];
    lVar36 = 8;
    lVar9 = local_8048[0x14];
    lVar10 = local_8048[0x15];
    *(longlong *)(pfVar25 + 0x5c) = local_8048[0x12];
    *(longlong *)(pfVar25 + 0x5e) = lVar32;
    lVar32 = local_8048[0x16];
    lVar11 = local_8048[0x17];
    *(longlong *)(pfVar25 + 0x60) = lVar9;
    *(longlong *)(pfVar25 + 0x62) = lVar10;
    lVar9 = local_8048[0x18];
    lVar10 = local_8048[0x19];
    *(longlong *)(pfVar25 + 100) = lVar32;
    *(longlong *)(pfVar25 + 0x66) = lVar11;
    lVar32 = local_8048[0x1a];
    lVar11 = local_8048[0x1b];
    *(longlong *)(pfVar25 + 0x68) = lVar9;
    *(longlong *)(pfVar25 + 0x6a) = lVar10;
    *(longlong *)(pfVar25 + 0x6c) = lVar32;
    *(longlong *)(pfVar25 + 0x6e) = lVar11;
    do {
      uVar26 = 0xf;
      lVar32 = 0xe;
      do {
        uVar29 = (int)(uVar26 + 1) >> 0x1f;
        fVar44 = (float)(int)((uVar26 + 1 ^ uVar29) - uVar29) * param_5 + param_4;
        if (((fVar44 < fVar50) && (fVar50 < param_4)) || ((fVar50 < fVar44 && (param_4 < fVar50))))
        {
          fVar44 = fVar50;
        }
        pfVar22[-1] = fVar44 + pfVar22[-1];
        fVar44 = (float)(int)((uVar26 ^ (int)uVar26 >> 0x1f) - ((int)uVar26 >> 0x1f)) * param_5 +
                 param_4;
        if (((fVar44 < fVar50) && (fVar50 < param_4)) || ((fVar50 < fVar44 && (param_4 < fVar50))))
        {
          fVar44 = fVar50;
        }
        uVar29 = (int)(uVar26 - 1) >> 0x1f;
        *pfVar22 = fVar44 + *pfVar22;
        fVar44 = (float)(int)((uVar26 - 1 ^ uVar29) - uVar29) * param_5 + param_4;
        if (((fVar44 < fVar50) && (fVar50 < param_4)) || ((fVar50 < fVar44 && (param_4 < fVar50))))
        {
          fVar44 = fVar50;
        }
        uVar29 = (int)(uVar26 - 2) >> 0x1f;
        pfVar22[1] = fVar44 + pfVar22[1];
        fVar44 = (float)(int)((uVar26 - 2 ^ uVar29) - uVar29) * param_5 + param_4;
        if (((fVar44 < fVar50) && (fVar50 < param_4)) || ((fVar50 < fVar44 && (param_4 < fVar50))))
        {
          fVar44 = fVar50;
        }
        uVar26 = uVar26 - 4;
        pfVar22[2] = fVar44 + pfVar22[2];
        pfVar22 = pfVar22 + 4;
        lVar32 = lVar32 + -1;
      } while (lVar32 != 0);
      lVar36 = lVar36 + -1;
    } while (lVar36 != 0);
    dVar3 = (double)*local_8050 + DAT_1824c42f0;
    iVar28 = 0;
    local_8038 = pfVar25;
    do {
      uVar7 = uStack_7fb0;
      uVar6 = local_7fb8;
      uVar5 = uStack_7fc0;
      iVar30 = iVar28;
      if (iVar28 < 2) {
        iVar30 = 2;
      }
      lVar32 = 3;
      pfVar22 = pfVar25 + 8;
      fVar44 = (float)((dVar3 - (double)iVar30 * dVar48) - dVar52);
      do {
        pfVar22[-8] = fVar44 + pfVar22[-8];
        pfVar22[-7] = fVar44 + pfVar22[-7];
        pfVar22[-6] = fVar44 + pfVar22[-6];
        pfVar22[-5] = fVar44 + pfVar22[-5];
        pfVar22[-4] = fVar44 + pfVar22[-4];
        pfVar22[-3] = fVar44 + pfVar22[-3];
        pfVar22[-2] = fVar44 + pfVar22[-2];
        pfVar22[-1] = fVar44 + pfVar22[-1];
        *pfVar22 = fVar44 + *pfVar22;
        pfVar22[1] = fVar44 + pfVar22[1];
        pfVar22[2] = fVar44 + pfVar22[2];
        pfVar22[3] = fVar44 + pfVar22[3];
        pfVar22[4] = fVar44 + pfVar22[4];
        pfVar22[5] = fVar44 + pfVar22[5];
        pfVar22[6] = fVar44 + pfVar22[6];
        pfVar22[7] = fVar44 + pfVar22[7];
        pfVar22 = pfVar22 + 0x10;
        lVar32 = lVar32 + -1;
      } while (lVar32 != 0);
      pfVar22 = pfVar25 + 0x32;
      lVar32 = 2;
      do {
        pfVar22[-2] = pfVar22[-2] + fVar44;
        pfVar22[-1] = pfVar22[-1] + fVar44;
        *pfVar22 = *pfVar22 + fVar44;
        pfVar22[1] = pfVar22[1] + fVar44;
        pfVar22 = pfVar22 + 4;
        lVar32 = lVar32 + -1;
      } while (lVar32 != 0);
      puVar1 = (undefined8 *)((longlong)pfVar25 + lVar37);
      *puVar1 = local_7fc8;
      puVar1[1] = uVar5;
      puVar1[2] = uVar6;
      puVar1[3] = uVar7;
      puVar1[4] = local_7fa8;
      puVar1[5] = uStack_7fa0;
      puVar1[6] = local_7f98;
      puVar1[7] = uStack_7f90;
      puVar1[8] = local_7f88;
      puVar1[9] = uStack_7f80;
      puVar1[10] = local_7f78;
      puVar1[0xb] = uStack_7f70;
      puVar1[0xc] = local_7f68;
      puVar1[0xd] = uStack_7f60;
      puVar1[0xe] = local_7f58;
      puVar1[0xf] = uStack_7f50;
      puVar1[0x10] = local_7f48;
      puVar1[0x11] = uStack_7f40;
      puVar1[0x12] = local_7f38;
      puVar1[0x13] = uStack_7f30;
      puVar1[0x14] = local_7f28;
      puVar1[0x15] = uStack_7f20;
      puVar1[0x16] = local_7f18;
      puVar1[0x17] = uStack_7f10;
      puVar1[0x18] = local_7f08;
      puVar1[0x19] = uStack_7f00;
      puVar23 = (undefined8 *)(lVar37 + 0x10 + (longlong)pfVar25);
      puVar1[0x1a] = local_7ef8;
      puVar1[0x1b] = uStack_7ef0;
      lVar32 = 7;
      fVar44 = (float)((dVar47 - (double)((float)iVar28 * fVar17)) - _DAT_1824c4e40);
      fVar49 = (float)((dVar51 - (double)((float)iVar28 * fVar18)) - _UNK_1824c4e48);
      do {
        puVar23[-2] = CONCAT44((float)((ulonglong)puVar23[-2] >> 0x20) + fVar49,
                               (float)puVar23[-2] + fVar44);
        puVar23[-1] = CONCAT44(fVar49 + (float)((ulonglong)puVar23[-1] >> 0x20),
                               fVar44 + (float)puVar23[-1]);
        *puVar23 = CONCAT44((float)((ulonglong)*puVar23 >> 0x20) + fVar49,(float)*puVar23 + fVar44);
        puVar23[1] = CONCAT44(fVar49 + (float)((ulonglong)puVar23[1] >> 0x20),
                              fVar44 + (float)puVar23[1]);
        puVar23 = puVar23 + 4;
        lVar32 = lVar32 + -1;
      } while (lVar32 != 0);
      *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181381ebf;
      FUN_181382640(local_7ee8 + (longlong)iVar28 * 0xe0,local_77e8 + (lVar40 + iVar28) * 0x38);
      pfVar22 = local_8050;
      iVar28 = iVar28 + 1;
      pfVar25 = pfVar25 + 0x38;
    } while (iVar28 < 8);
    puVar35 = local_7e08;
    lVar32 = 7;
    do {
      puVar2 = puVar35 + lVar31;
      *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181381f00;
      FUN_181382840(puVar35,puVar2 + lVar42);
      *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181381f0b;
      FUN_181382840(puVar2,puVar35);
      puVar19 = local_8028;
      iVar28 = local_8058[1];
      fVar44 = DAT_1824c4748;
      dVar16 = DAT_1824c4238;
      dVar15 = DAT_1824c41f0;
      dVar14 = DAT_1824c41d8;
      dVar13 = DAT_1824c4140;
      dVar12 = DAT_1824c4098;
      dVar3 = DAT_1824c3f80;
      puVar35 = puVar35 + 0xe0;
      lVar32 = lVar32 + -1;
    } while (lVar32 != 0);
    local_8058[0] = local_8058[0] + 4;
    local_8048 = local_8048 + 0xa8;
    pfVar25 = local_8038 + 0x1c0;
    lVar40 = lVar40 + 8;
    lVar42 = lVar42 + -0x700;
    local_8040 = local_8040 + 0xa8;
    lVar31 = lVar31 + 0x700;
    local_8050 = pfVar22 + 1;
    pfVar43 = pfVar43 + 4;
    local_8038 = pfVar25;
    puVar38 = puVar38 + -0x10;
    puVar41 = puVar41 + 0xe0;
    lVar37 = lVar37 + -0x700;
  } while (local_8058[0] < 0x46);
  uVar21 = (ulonglong)local_8058[1];
  local_8008 = (double)param_2;
  local_8058[0] = 0;
  local_8040 = (undefined8 *)0x0;
  dVar48 = DAT_1824c4050;
  do {
    puVar41 = local_8040;
    iVar39 = local_8058[0];
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181381ffb;
    plVar24 = malloc(0x40);
    *(longlong **)((longlong)local_8010 + (longlong)puVar41 * 8) = plVar24;
    dVar52 = (double)iVar39 * dVar48;
    local_8048 = plVar24;
    local_7ff8 = dVar52;
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x18138202d;
    dVar47 = exp((dVar52 + dVar16) * dVar12);
    dVar47 = dVar47 / local_8008;
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181382037;
    dVar47 = floor(dVar47);
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181382054;
    fVar45 = logf((float)(int)dVar47 * param_2 + DAT_1824c3ea4);
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181382071;
    fVar45 = ceilf((fVar45 * _DAT_1824c3f5c - _DAT_1824c4378) * DAT_1824c41e0);
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x18138208a;
    fVar46 = logf((float)((int)dVar47 + 1) * param_2);
    *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x1813820a7;
    fVar46 = floorf((fVar46 * _DAT_1824c3f5c - _DAT_1824c4378) * DAT_1824c41e0);
    local_8018 = 8;
    iVar20 = (int)fVar46;
    iVar30 = (int)fVar45;
    if (iVar39 < (int)fVar45) {
      iVar30 = iVar39;
    }
    local_8050 = (float *)0x0;
    if (iVar30 < 0) {
      iVar30 = 0;
    }
    local_8038 = (float *)CONCAT44(local_8038._4_4_,iVar30);
    local_7fd8 = (float *)(longlong)iVar30;
    if (0x10 < iVar20) {
      iVar20 = 0x10;
    }
    local_8028 = (undefined4 *)(longlong)iVar20;
    local_8000 = 0;
    local_7ff0 = 0;
    local_7fe0 = 0;
    do {
      pfVar43 = local_7fd8;
      puVar34 = local_8028;
      pfVar25 = local_8050;
      *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x18138211b;
      local_7fe8 = malloc(0xe8);
      *(float **)(local_8000 + (longlong)plVar24) = local_7fe8;
      if (0 < iVar28) {
        puVar33 = puVar19;
        for (uVar27 = uVar21 & 0x3fffffffffffffff; pfVar25 = local_8050, uVar27 != 0;
            uVar27 = uVar27 - 1) {
          *puVar33 = 0x4479c000;
          puVar33 = puVar33 + 1;
        }
      }
      local_8058[1] = (int)local_8038;
      local_8030 = pfVar43;
      if ((longlong)pfVar43 <= (longlong)puVar34) {
        local_8020 = local_77e8 + (longlong)pfVar43 * 0x1c0;
        do {
          iVar39 = 0;
          pfVar25 = (float *)((longlong)pfVar25 + (longlong)local_8020);
          dVar52 = (double)local_8058[1];
          iVar30 = iVar39;
          do {
            dVar51 = (double)iVar39 * dVar3 + dVar52 * dVar48;
            *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x1813821b9;
            dVar47 = exp(((dVar51 - dVar15) + dVar16) * dVar12);
            iVar20 = (int)(dVar47 / (double)param_2);
            *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x1813821e0;
            dVar47 = exp(((dVar51 - dVar14) + dVar16) * dVar12);
            if (iVar20 < 0) {
              iVar20 = 0;
            }
            if (iVar28 < iVar20) {
              iVar20 = iVar28;
            }
            if (iVar20 < iVar30) {
              iVar30 = iVar20;
            }
            iVar20 = (int)(dVar47 / (double)param_2 + dVar13);
            if (iVar20 < 0) {
              iVar20 = 0;
            }
            if (iVar28 < iVar20) {
              iVar20 = iVar28;
            }
            if (iVar30 < iVar20) {
              lVar31 = (longlong)iVar30;
              do {
                if ((longlong)uVar21 <= lVar31) break;
                if (*pfVar25 < (float)puVar19[lVar31]) {
                  puVar19[lVar31] = *pfVar25;
                }
                iVar30 = iVar30 + 1;
                lVar31 = lVar31 + 1;
              } while (lVar31 < iVar20);
            }
            iVar39 = iVar39 + 1;
            pfVar25 = pfVar25 + 1;
          } while (iVar39 < 0x38);
          lVar31 = (longlong)iVar30;
          if (lVar31 < (longlong)uVar21) {
            fVar45 = *(float *)((longlong)(local_8050 + 0x37) + (longlong)local_8020);
            do {
              if (fVar45 < (float)puVar19[lVar31]) {
                puVar19[lVar31] = fVar45;
              }
              lVar31 = lVar31 + 1;
            } while (lVar31 < (longlong)uVar21);
          }
          local_8058[1] = local_8058[1] + 1;
          local_8030 = (float *)((longlong)local_8030 + 1);
          local_8020 = local_8020 + 0x1c0;
          pfVar25 = local_8050;
          plVar24 = local_8048;
          dVar48 = DAT_1824c4050;
          dVar52 = local_7ff8;
        } while ((longlong)local_8030 <= (longlong)local_8028);
      }
      iVar30 = 0;
      if (local_8058[0] + 1 < 0x11) {
        pfVar25 = (float *)((longlong)local_77e8 +
                           (longlong)(pfVar25 + ((longlong)local_8040 + 1) * 0x1c0));
        local_8030 = pfVar25;
        iVar39 = iVar30;
        do {
          dVar47 = (double)iVar30 * dVar3 + dVar52;
          *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181382329;
          dVar48 = exp(((dVar47 - dVar15) + dVar16) * dVar12);
          iVar20 = (int)(dVar48 / (double)param_2);
          *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181382350;
          dVar48 = exp(((dVar47 - dVar14) + dVar16) * dVar12);
          if (iVar20 < 0) {
            iVar20 = 0;
          }
          if (iVar28 < iVar20) {
            iVar20 = iVar28;
          }
          if (iVar20 < iVar39) {
            iVar39 = iVar20;
          }
          iVar20 = (int)(dVar48 / (double)param_2 + dVar13);
          if (iVar20 < 0) {
            iVar20 = 0;
          }
          if (iVar28 < iVar20) {
            iVar20 = iVar28;
          }
          if (iVar39 < iVar20) {
            lVar31 = (longlong)iVar39;
            do {
              if ((longlong)uVar21 <= lVar31) break;
              if (*pfVar25 < (float)puVar19[lVar31]) {
                puVar19[lVar31] = *pfVar25;
              }
              iVar39 = iVar39 + 1;
              lVar31 = lVar31 + 1;
            } while (lVar31 < iVar20);
          }
          iVar30 = iVar30 + 1;
          pfVar25 = pfVar25 + 1;
        } while (iVar30 < 0x38);
        lVar31 = (longlong)iVar39;
        plVar24 = local_8048;
        if (lVar31 < (longlong)uVar21) {
          fVar45 = local_8030[0x37];
          do {
            if (fVar45 < (float)puVar19[lVar31]) {
              puVar19[lVar31] = fVar45;
            }
            lVar31 = lVar31 + 1;
          } while (lVar31 < (longlong)uVar21);
        }
      }
      iVar30 = 0;
      puVar34 = (undefined4 *)(*plVar24 + 8);
      do {
        *(undefined8 *)((longlong)auStack_8080 + lVar4) = 0x181382437;
        dVar48 = exp(((((double)iVar30 * dVar3 + dVar52) - DAT_1824c41e8) + dVar16) * dVar12);
        iVar39 = (int)(dVar48 / (double)param_2);
        if (iVar39 < 0) {
          *puVar34 = 0xc479c000;
        }
        else if (iVar39 < iVar28) {
          *puVar34 = puVar19[iVar39];
        }
        else {
          *puVar34 = 0xc479c000;
        }
        iVar30 = iVar30 + 1;
        puVar34 = puVar34 + 1;
      } while (iVar30 < 0x38);
      iVar30 = 0;
      lVar31 = 0;
      pfVar25 = (float *)(*(longlong *)(local_7ff0 + (longlong)plVar24) + 8);
      do {
        if (fVar44 < *pfVar25) break;
        iVar30 = iVar30 + 1;
        lVar31 = lVar31 + 1;
        pfVar25 = pfVar25 + 1;
      } while (lVar31 < 0x10);
      iVar39 = 0x37;
      lVar31 = 0x37;
      pfVar25 = (float *)(*(longlong *)(local_7fe0 + (longlong)plVar24) + 0xe4);
      *local_7fe8 = (float)iVar30;
      dVar48 = DAT_1824c4050;
      do {
        if (fVar44 < *pfVar25) break;
        iVar39 = iVar39 + -1;
        lVar31 = lVar31 + -1;
        pfVar25 = pfVar25 + -1;
      } while (0x11 < lVar31);
      plVar24 = plVar24 + 1;
      local_7fe8[1] = (float)iVar39;
      local_8050 = local_8050 + 0x38;
      local_8018 = local_8018 + -1;
      local_8048 = plVar24;
    } while (local_8018 != 0);
    local_8058[0] = local_8058[0] + 1;
    local_8040 = (undefined8 *)((longlong)local_8040 + 1);
    local_8018 = 0;
    if (0x10 < local_8058[0]) {
      *(undefined **)((longlong)auStack_8080 + lVar4) = &UNK_18138254a;
    }
  } while( true );
}



############ FUN_ 181384180 size=792 ############

void FUN_181384180(int *param_1,int param_2)

{
  char cVar1;
  ulonglong uVar2;
  double dVar3;
  uint uVar4;
  uint uVar5;
  int *piVar6;
  void *pvVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  float *pfVar11;
  uint uVar12;
  int iVar13;
  ulonglong uVar14;
  longlong lVar15;
  int iVar16;
  float fVar17;
  float fVar18;
  double dVar19;
  double dVar20;
  double dVar21;
  double _X;
  
  uVar4 = (int)(param_2 + (param_2 >> 0x1f & 3U)) >> 2;
  uVar14 = (ulonglong)uVar4;
  piVar6 = malloc((longlong)(int)uVar4 << 2);
  pvVar7 = malloc((longlong)(int)(param_2 + uVar4) << 2);
  fVar17 = logf((float)param_2);
  fVar18 = logf(DAT_1824c41e0);
  fVar17 = floorf(fVar17 / fVar18 + DAT_1824c3d8c);
  dVar3 = DAT_1824c4218;
  *param_1 = param_2;
  *(void **)(param_1 + 2) = pvVar7;
  *(int **)(param_1 + 4) = piVar6;
  param_1[1] = (int)fVar17;
  if (0 < (int)uVar4) {
    iVar16 = 0;
    iVar13 = 1;
    lVar15 = (longlong)param_2 >> 1;
    uVar4 = (uint)DAT_1824c4f20;
    uVar2 = (ulonglong)DAT_1824c4f20 >> 0x20;
    pfVar11 = (float *)((longlong)pvVar7 + 4);
    do {
      dVar21 = (double)iVar16 * (dVar3 / (double)param_2);
      dVar19 = cos(dVar21);
      pfVar11[-1] = (float)dVar19;
      dVar19 = sin(dVar21);
      *pfVar11 = (float)(double)CONCAT44((uint)((ulonglong)dVar19 >> 0x20) ^ (uint)uVar2,
                                         SUB84(dVar19,0) ^ uVar4);
      dVar21 = (double)iVar13 * (dVar3 / (double)(param_2 * 2));
      dVar19 = cos(dVar21);
      pfVar11[lVar15 + -1] = (float)dVar19;
      dVar19 = sin(dVar21);
      iVar16 = iVar16 + 4;
      iVar13 = iVar13 + 2;
      pfVar11[lVar15] = (float)dVar19;
      uVar14 = uVar14 - 1;
      pfVar11 = pfVar11 + 2;
    } while (uVar14 != 0);
  }
  dVar21 = DAT_1824c4698;
  dVar19 = DAT_1824c4050;
  uVar4 = (int)(param_2 + (param_2 >> 0x1f & 7U)) >> 3;
  if (0 < (int)uVar4) {
    iVar13 = 2;
    uVar14 = (ulonglong)uVar4;
    pfVar11 = (float *)((longlong)pvVar7 + (longlong)param_2 * 4);
    do {
      _X = (double)iVar13 * (dVar3 / (double)param_2);
      dVar20 = cos(_X);
      *pfVar11 = (float)(dVar20 * dVar19);
      dVar20 = sin(_X);
      iVar13 = iVar13 + 4;
      pfVar11[1] = (float)(dVar20 * dVar21);
      uVar14 = uVar14 - 1;
      pfVar11 = pfVar11 + 2;
    } while (uVar14 != 0);
  }
  cVar1 = (char)(int)fVar17;
  uVar12 = 0;
  uVar10 = 1 << (cVar1 - 2U & 0x1f);
  if (0 < (int)uVar4) {
    do {
      uVar9 = 0;
      uVar8 = 0;
      uVar5 = uVar10;
      while (uVar5 != 0) {
        if ((uVar12 & uVar5) != 0) {
          uVar9 = uVar9 | 1 << (uVar8 & 0x1f);
        }
        uVar8 = uVar8 + 1;
        uVar5 = (int)uVar10 >> ((byte)uVar8 & 0x1f);
      }
      piVar6[1] = uVar9;
      uVar12 = uVar12 + 1;
      *piVar6 = (~uVar9 & (1 << (cVar1 - 1U & 0x1f)) - 1U) - 1;
      piVar6 = piVar6 + 2;
    } while ((int)uVar12 < (int)uVar4);
  }
  param_1[6] = (int)(DAT_1824c4334 / (float)param_2);
  return;
}



############ FUN_ 18137ab10 size=242 ############

undefined8 FUN_18137ab10(undefined4 *param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  float fVar4;
  double dVar5;
  
  memset(param_1,0,0x58);
  *(undefined4 **)(param_1 + 4) = param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[1];
  *param_1 = *param_2;
  uVar3 = FUN_18137b010(*(undefined8 *)(param_2 + 2),param_2[1],0);
  *(undefined8 *)(param_1 + 8) = uVar3;
  uVar2 = FUN_18137af80(param_2);
  param_1[0x12] = uVar2;
  uVar1 = param_2[5];
  dVar5 = (double)(uVar1 & 0x1fffff);
  if ((int)uVar1 < 0) {
    dVar5 = (double)CONCAT44((uint)((ulonglong)dVar5 >> 0x20) ^ DAT_1824c4f20._4_4_,
                             SUB84(dVar5,0) ^ (uint)DAT_1824c4f20);
  }
  dVar5 = ldexp(dVar5,((int)uVar1 >> 0x15 & 0x3ffU) - 0x314);
  fVar4 = floorf((float)dVar5 + DAT_1824c3d8c);
  param_1[0x13] = (int)fVar4;
  uVar1 = param_2[6];
  dVar5 = (double)(uVar1 & 0x1fffff);
  if ((int)uVar1 < 0) {
    dVar5 = (double)CONCAT44((uint)((ulonglong)dVar5 >> 0x20) ^ DAT_1824c4f20._4_4_,
                             SUB84(dVar5,0) ^ (uint)DAT_1824c4f20);
  }
  dVar5 = ldexp(dVar5,((int)uVar1 >> 0x15 & 0x3ffU) - 0x314);
  fVar4 = floorf((float)dVar5 + DAT_1824c3d8c);
  param_1[0x14] = (int)fVar4;
  return 0;
}



############ FUN_ 18137e330 size=1320 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18137e330(longlong param_1,int param_2,longlong param_3,float *param_4,longlong param_5,
                  longlong param_6,undefined8 param_7,int param_8,int param_9,longlong param_10)

{
  longlong lVar1;
  float fVar2;
  uint uVar3;
  longlong lVar4;
  undefined8 *_Base;
  int iVar5;
  int iVar6;
  longlong lVar7;
  float *_NumOfElements;
  ulonglong uVar8;
  longlong lVar9;
  longlong *plVar10;
  float *pfVar11;
  int *piVar12;
  int iVar13;
  int iVar14;
  undefined8 *puVar15;
  longlong lVar16;
  longlong lVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined8 auStack_f0 [5];
  int local_c8 [2];
  longlong local_c0;
  longlong local_b8;
  longlong local_b0;
  int local_a8;
  longlong local_a0;
  float *local_98;
  longlong local_90;
  undefined8 *local_88;
  ulonglong local_80;
  
  uVar3 = DAT_1824c4f30;
  fVar2 = DAT_1824c3d8c;
  local_80 = DAT_182615970 ^ (ulonglong)local_c8;
  local_90 = *(longlong *)(param_1 + 8);
  uVar8 = (longlong)param_9 * 8 + 0xf;
  if (uVar8 <= (ulonglong)((longlong)param_9 * 8)) {
    uVar8 = 0xffffffffffffff0;
  }
  auStack_f0[0] = 0x18137e3c9;
  lVar1 = -(uVar8 & 0xfffffffffffffff0);
  local_c8[0] = 0;
  local_88 = (undefined8 *)((longlong)local_c8 + lVar1);
  iVar5 = param_9;
  if ((*(int *)(local_90 + 500) != 0) &&
     (iVar5 = *(int *)(local_90 + 0x1f8) - param_8, param_9 < iVar5)) {
    iVar5 = param_9;
  }
  fVar20 = 0.0;
  lVar16 = (longlong)iVar5;
  local_a8 = param_2;
  local_a0 = param_3;
  local_98 = param_4;
  iVar14 = 0;
  if (0 < iVar5) {
    lVar7 = param_6 - (longlong)param_4;
    lVar9 = param_5 - (longlong)param_4;
    param_3 = param_3 - (longlong)param_4;
    pfVar11 = param_4;
    local_c0 = lVar7;
    local_b8 = lVar9;
    local_b0 = param_3;
    do {
      if ((param_6 == 0) || (*(int *)(lVar7 + (longlong)pfVar11) == 0)) {
        fVar18 = *pfVar11 / *(float *)(lVar9 + (longlong)pfVar11);
        if (0.0 < *(float *)(param_3 + (longlong)pfVar11) ||
            *(float *)(param_3 + (longlong)pfVar11) == 0.0) {
          *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e494;
          fVar18 = sqrtf(fVar18);
          *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e49d;
          fVar18 = floorf(fVar18 + fVar2);
        }
        else {
          *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e480;
          fVar18 = sqrtf(fVar18);
          *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e489;
          fVar18 = floorf(fVar18 + fVar2);
          fVar18 = (float)((uint)fVar18 ^ uVar3);
        }
        *(int *)((longlong)pfVar11 + (param_10 - (longlong)param_4)) = (int)fVar18;
        lVar7 = local_c0;
        lVar9 = local_b8;
        param_3 = local_b0;
      }
      pfVar11 = pfVar11 + 1;
      lVar16 = lVar16 + -1;
      iVar14 = iVar5;
    } while (lVar16 != 0);
  }
  iVar5 = local_a8;
  fVar18 = DAT_1824c3d3c;
  if (iVar14 < param_9) {
    lVar16 = local_a0 - param_10;
    lVar7 = param_5 - param_10;
    lVar17 = param_6 - local_a0;
    lVar9 = (longlong)param_4 - param_10;
    piVar12 = (int *)(param_10 + (longlong)iVar14 * 4);
    param_4 = param_4 + iVar14;
    puVar15 = local_88;
    iVar13 = local_c8[0];
    local_c0 = lVar16;
    local_b8 = lVar9;
    local_b0 = lVar7;
    do {
      if ((param_6 == 0) || (*(int *)(lVar16 + lVar17 + (longlong)piVar12) == 0)) {
        fVar19 = *(float *)(lVar9 + (longlong)piVar12) / *(float *)(lVar7 + (longlong)piVar12);
        if ((fVar18 <= fVar19) || ((param_6 != 0 && (iVar14 < iVar5 - param_8)))) {
          if (0.0 < *(float *)(lVar16 + (longlong)piVar12) ||
              *(float *)(lVar16 + (longlong)piVar12) == 0.0) {
            *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e588;
            fVar19 = sqrtf(fVar19);
            *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e591;
            fVar19 = floorf(fVar19 + fVar2);
          }
          else {
            *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e574;
            fVar19 = sqrtf(fVar19);
            *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e57d;
            fVar19 = floorf(fVar19 + fVar2);
            fVar19 = (float)((uint)fVar19 ^ uVar3);
          }
          iVar6 = (int)fVar19;
          *piVar12 = iVar6;
          *(float *)(local_b8 + (longlong)piVar12) =
               (float)(iVar6 * iVar6) * *(float *)(local_b0 + (longlong)piVar12);
          lVar16 = local_c0;
          lVar7 = local_b0;
          lVar9 = local_b8;
        }
        else {
          iVar13 = iVar13 + 1;
          *puVar15 = param_4;
          puVar15 = puVar15 + 1;
          fVar20 = fVar20 + fVar19;
        }
      }
      _Base = local_88;
      lVar4 = local_90;
      pfVar11 = local_98;
      iVar14 = iVar14 + 1;
      param_4 = param_4 + 1;
      piVar12 = piVar12 + 1;
    } while (iVar14 < param_9);
    if (iVar13 != 0) {
      _NumOfElements = (float *)(longlong)iVar13;
      local_c8[0] = iVar13;
      local_98 = _NumOfElements;
      *(undefined8 *)((longlong)auStack_f0 + lVar1) = 0x18137e620;
      qsort(_Base,(size_t)_NumOfElements,8,(_PtFuncCompare *)&LAB_18137e930);
      fVar2 = DAT_1824c4680;
      lVar16 = 0;
      if (3 < (longlong)_NumOfElements) {
        plVar10 = _Base + 2;
        lVar7 = ((longlong)_NumOfElements - 4U >> 2) + 1;
        lVar16 = lVar7 * 4;
        do {
          iVar5 = (int)(plVar10[-2] - (longlong)pfVar11 >> 2);
          if ((double)fVar20 < *(double *)(lVar4 + 0x200)) {
            *(undefined4 *)(param_10 + (longlong)iVar5 * 4) = 0;
            pfVar11[iVar5] = 0.0;
          }
          else {
            lVar9 = (longlong)iVar5;
            fVar20 = fVar20 + fVar2;
            *(int *)(param_10 + lVar9 * 4) =
                 (int)(float)(*(uint *)(local_a0 + lVar9 * 4) & 0xbf800000 | 0x3f800000);
            pfVar11[lVar9] = *(float *)(param_5 + lVar9 * 4);
          }
          iVar5 = (int)(plVar10[-1] - (longlong)pfVar11 >> 2);
          if ((double)fVar20 < *(double *)(lVar4 + 0x200)) {
            *(undefined4 *)(param_10 + (longlong)iVar5 * 4) = 0;
            pfVar11[iVar5] = 0.0;
          }
          else {
            lVar9 = (longlong)iVar5;
            fVar20 = fVar20 + fVar2;
            *(int *)(param_10 + lVar9 * 4) =
                 (int)(float)(*(uint *)(local_a0 + lVar9 * 4) & 0xbf800000 | 0x3f800000);
            pfVar11[lVar9] = *(float *)(param_5 + lVar9 * 4);
          }
          iVar5 = (int)(*plVar10 - (longlong)pfVar11 >> 2);
          if ((double)fVar20 < *(double *)(lVar4 + 0x200)) {
            *(undefined4 *)(param_10 + (longlong)iVar5 * 4) = 0;
            pfVar11[iVar5] = 0.0;
          }
          else {
            lVar9 = (longlong)iVar5;
            fVar20 = fVar20 + fVar2;
            *(int *)(param_10 + lVar9 * 4) =
                 (int)(float)(*(uint *)(local_a0 + lVar9 * 4) & 0xbf800000 | 0x3f800000);
            pfVar11[lVar9] = *(float *)(param_5 + lVar9 * 4);
          }
          iVar5 = (int)(plVar10[1] - (longlong)pfVar11 >> 2);
          if ((double)fVar20 < *(double *)(lVar4 + 0x200)) {
            *(undefined4 *)(param_10 + (longlong)iVar5 * 4) = 0;
            pfVar11[iVar5] = 0.0;
          }
          else {
            lVar9 = (longlong)iVar5;
            fVar20 = fVar20 + fVar2;
            *(int *)(param_10 + lVar9 * 4) =
                 (int)(float)(*(uint *)(local_a0 + lVar9 * 4) & 0xbf800000 | 0x3f800000);
            pfVar11[lVar9] = *(float *)(param_5 + lVar9 * 4);
          }
          plVar10 = plVar10 + 4;
          lVar7 = lVar7 + -1;
          _NumOfElements = local_98;
        } while (lVar7 != 0);
      }
      for (; lVar16 < (longlong)_NumOfElements; lVar16 = lVar16 + 1) {
        iVar5 = (int)(_Base[lVar16] - (longlong)pfVar11 >> 2);
        if ((double)fVar20 < *(double *)(lVar4 + 0x200)) {
          *(undefined4 *)(param_10 + (longlong)iVar5 * 4) = 0;
          pfVar11[iVar5] = 0.0;
        }
        else {
          lVar7 = (longlong)iVar5;
          fVar20 = fVar20 + fVar2;
          *(int *)(param_10 + lVar7 * 4) =
               (int)(float)(*(uint *)(local_a0 + lVar7 * 4) & 0xbf800000 | 0x3f800000);
          pfVar11[lVar7] = *(float *)(param_5 + lVar7 * 4);
        }
      }
    }
  }
  *(undefined **)((longlong)auStack_f0 + lVar1) = &UNK_18137e858;
}



############ FUN_ 18138bf10 size=794 ############

undefined8 FUN_18138bf10(longlong param_1,int *param_2,longlong param_3,void *param_4)

{
  int iVar1;
  longlong lVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  int iVar9;
  void *pvVar10;
  longlong lVar11;
  int iVar12;
  ulonglong uVar13;
  uint uVar14;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  ulonglong uVar15;
  
  fVar6 = DAT_1824c3d8c;
  fVar3 = DAT_1824c3c30;
  lVar11 = (longlong)*(int *)(param_1 + 0x2c);
  lVar2 = *(longlong *)(param_2 + 6);
  if (*(longlong *)(*(longlong *)(param_2 + 2) + lVar11 * 8) == 0) {
    iVar1 = *param_2;
    iVar9 = *(int *)(*(longlong *)(*(longlong *)(*(longlong *)(param_1 + 0x50) + 8) + 0x20) +
                    lVar11 * 4) / 2;
    fVar20 = (float)*(int *)(lVar2 + 4) * DAT_1824c3d8c;
    fVar16 = atanf(fVar20 * fVar20 * DAT_1824c3c30);
    fVar7 = DAT_1824c4220;
    fVar5 = DAT_1824c3c4c;
    fVar16 = fVar16 * DAT_1824c4220;
    fVar17 = atanf(fVar20 * DAT_1824c3c4c);
    fVar8 = DAT_1824c4410;
    fVar4 = DAT_1824c3c44;
    fVar17 = fVar17 * DAT_1824c4410;
    fVar20 = fVar20 * DAT_1824c3c44;
    pvVar10 = malloc((longlong)(iVar9 + 1) << 2);
    uVar13 = 0;
    uVar14 = 0;
    *(void **)(*(longlong *)(param_2 + 2) + lVar11 * 8) = pvVar10;
    if (0 < iVar9) {
      uVar15 = uVar13;
      do {
        fVar21 = (((float)*(int *)(lVar2 + 4) * fVar6) / (float)iVar9) * (float)(int)uVar15;
        fVar18 = atanf(fVar21 * fVar21 * fVar3);
        fVar19 = atanf(fVar21 * fVar5);
        fVar18 = floorf((fVar18 * fVar7 + fVar19 * fVar8 + fVar21 * fVar4) *
                        ((float)iVar1 / (fVar16 + fVar17 + fVar20)));
        iVar12 = (int)fVar18;
        if (*param_2 <= iVar12) {
          iVar12 = *param_2 + -1;
        }
        uVar14 = (int)uVar15 + 1;
        uVar15 = (ulonglong)uVar14;
        *(int *)(uVar13 + *(longlong *)(*(longlong *)(param_2 + 2) + lVar11 * 8)) = iVar12;
        uVar13 = uVar13 + 4;
      } while ((int)uVar14 < iVar9);
    }
    *(undefined4 *)
     (*(longlong *)(*(longlong *)(param_2 + 2) + lVar11 * 8) + (longlong)(int)uVar14 * 4) =
         0xffffffff;
    param_2[lVar11 + 4] = iVar9;
  }
  if (param_3 == 0) {
    memset(param_4,0,(longlong)param_2[(longlong)*(int *)(param_1 + 0x2c) + 4] << 2);
    return 0;
  }
  FUN_1813861b0(param_4,*(undefined8 *)
                         (*(longlong *)(param_2 + 2) + (longlong)*(int *)(param_1 + 0x2c) * 8),
                param_2[(longlong)*(int *)(param_1 + 0x2c) + 4],*param_2,param_3,param_2[1],
                *(undefined4 *)(param_3 + (longlong)param_2[1] * 4),(float)*(int *)(lVar2 + 0x10));
  return 1;
}



############ FUN_ 18138c420 size=610 ############

void FUN_18138c420(longlong param_1,longlong param_2,int *param_3)

{
  int iVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  int iVar8;
  void *pvVar9;
  int iVar10;
  int iVar11;
  longlong lVar12;
  longlong lVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  
  fVar5 = DAT_1824c3d8c;
  fVar2 = DAT_1824c3c30;
  lVar13 = (longlong)*(int *)(param_1 + 0x2c);
  if (*(longlong *)(*(longlong *)(param_3 + 2) + lVar13 * 8) == 0) {
    iVar1 = *param_3;
    iVar8 = *(int *)(*(longlong *)(*(longlong *)(*(longlong *)(param_1 + 0x50) + 8) + 0x20) +
                    lVar13 * 4) / 2;
    fVar18 = (float)*(int *)(param_2 + 4) * DAT_1824c3d8c;
    fVar14 = atanf(fVar18 * fVar18 * DAT_1824c3c30);
    fVar6 = DAT_1824c4220;
    fVar4 = DAT_1824c3c4c;
    fVar14 = fVar14 * DAT_1824c4220;
    fVar15 = atanf(fVar18 * DAT_1824c3c4c);
    fVar7 = DAT_1824c4410;
    fVar3 = DAT_1824c3c44;
    fVar15 = fVar15 * DAT_1824c4410;
    fVar18 = fVar18 * DAT_1824c3c44;
    pvVar9 = malloc((longlong)(iVar8 + 1) << 2);
    iVar11 = 0;
    *(void **)(*(longlong *)(param_3 + 2) + lVar13 * 8) = pvVar9;
    if (0 < iVar8) {
      lVar12 = 0;
      do {
        fVar19 = (((float)*(int *)(param_2 + 4) * fVar5) / (float)iVar8) * (float)iVar11;
        fVar16 = atanf(fVar19 * fVar19 * fVar2);
        fVar17 = atanf(fVar19 * fVar4);
        fVar16 = floorf((fVar16 * fVar6 + fVar17 * fVar7 + fVar19 * fVar3) *
                        ((float)iVar1 / (fVar14 + fVar15 + fVar18)));
        iVar10 = (int)fVar16;
        if (*param_3 <= iVar10) {
          iVar10 = *param_3 + -1;
        }
        iVar11 = iVar11 + 1;
        *(int *)(lVar12 + *(longlong *)(*(longlong *)(param_3 + 2) + lVar13 * 8)) = iVar10;
        lVar12 = lVar12 + 4;
      } while (iVar11 < iVar8);
    }
    *(undefined4 *)(*(longlong *)(*(longlong *)(param_3 + 2) + lVar13 * 8) + (longlong)iVar11 * 4) =
         0xffffffff;
    param_3[lVar13 + 4] = iVar8;
  }
  return;
}



############ FUN_ 180484e70 size=273 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_180484e70(longlong *param_1)

{
  float fVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  bool bVar5;
  double dVar6;
  float fVar7;
  float fVar8;
  uint local_res8;
  
  iVar4 = 7;
  fVar1 = *(float *)(*param_1 + 0xb8);
  if (fVar1 != 0.0) {
    fVar7 = (float)(double)CONCAT44((uint)((ulonglong)(double)(fVar1 - (float)(int)fVar1) >> 0x20) &
                                    DAT_1824c4f10._4_4_,
                                    SUB84((double)(fVar1 - (float)(int)fVar1),0) &
                                    (uint)DAT_1824c4f10);
    fVar8 = 0.0;
    if (0.0 <= fVar7) {
      fVar8 = fVar7;
    }
    fVar7 = (float)(double)CONCAT44((uint)((ulonglong)(double)(fVar7 - 0.0) >> 0x20) &
                                    DAT_1824c4f10._4_4_,
                                    SUB84((double)(fVar7 - 0.0),0) & (uint)DAT_1824c4f10);
    if ((fVar7 <= fVar8 * _DAT_1824c3c34) || (fVar7 < DAT_1824c3c20)) {
      return 0;
    }
    dVar6 = pow(DAT_1824c4270,DAT_1824c4250);
    local_res8 = SUB84(dVar6 * (double)fVar1 + DAT_1824c4520,0);
    iVar2 = (local_res8 ^ (int)local_res8 >> 0x1f) - ((int)local_res8 >> 0x1f);
    iVar3 = iVar2 / 10;
    if (iVar2 == iVar3 * 10) {
      do {
        if (iVar4 < 1) {
          return iVar4;
        }
        iVar4 = iVar4 + -1;
        bVar5 = iVar3 == (iVar3 / 10) * 10;
        iVar3 = iVar3 / 10;
      } while (bVar5);
    }
  }
  return iVar4;
}



############ FUN_ 180557920 size=512 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_180557920(undefined8 *param_1,float param_2,float param_3,float param_4,uint param_5)

{
  double dVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined8 *puVar5;
  float *pfVar6;
  double dVar7;
  double extraout_XMM0_Qb;
  
  iVar2 = _DAT_1824c4880;
  if (param_5 == 1) {
    *(undefined4 *)param_1 = 0x3f800000;
  }
  else {
    param_4 = param_4 - param_3;
    iVar4 = 0;
    dVar1 = DAT_1824c4140 / (double)(int)(param_5 - 1);
    if (0 < (int)param_5) {
      if (1 < param_5) {
        uVar3 = param_5 & 0x80000001;
        if ((int)uVar3 < 0) {
          uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
        }
        puVar5 = param_1;
        do {
          dVar7 = (double)thunk_FUN_181a12fb0((double)(iVar4 + iVar2) * dVar1);
          iVar4 = iVar4 + 2;
          *puVar5 = CONCAT44((float)(extraout_XMM0_Qb * (double)param_4 + (double)param_3),
                             (float)(dVar7 * (double)param_4 + (double)param_3));
          puVar5 = puVar5 + 1;
        } while (iVar4 < (int)(param_5 - uVar3));
      }
      if (iVar4 < (int)param_5) {
        pfVar6 = (float *)((longlong)param_1 + (longlong)iVar4 * 4);
        do {
          dVar7 = pow((double)iVar4 * dVar1,(double)param_2);
          iVar4 = iVar4 + 1;
          *pfVar6 = (float)(dVar7 * (double)param_4 + (double)param_3);
          pfVar6 = pfVar6 + 1;
        } while (iVar4 < (int)param_5);
      }
    }
  }
  return;
}



############ FUN_ 18126c590 size=274 ############

void FUN_18126c590(longlong param_1,undefined8 *param_2,int param_3)

{
  double dVar1;
  double dVar2;
  undefined1 *puVar3;
  ulonglong uVar4;
  undefined1 uVar5;
  uint uVar6;
  double dVar7;
  double _Y;
  
  uVar6 = 0;
  if (param_1 == 0) {
    puVar3 = (undefined1 *)0x0;
  }
  else {
    puVar3 = malloc(0x100);
    if (puVar3 == (undefined1 *)0x0) {
                    /* WARNING: Subroutine does not return */
      FUN_18126c150(param_1);
    }
  }
  *param_2 = puVar3;
  dVar2 = DAT_1824c4318;
  dVar1 = DAT_1824c4050;
  if (param_3 - 95000U < 0x2711) {
    do {
      *puVar3 = (char)uVar6;
      puVar3 = puVar3 + 1;
      uVar6 = uVar6 + 1;
    } while (uVar6 < 0x100);
  }
  else {
    _Y = (double)param_3 * DAT_1824c3d78;
    do {
      if (uVar6 - 1 < 0xfe) {
        dVar7 = pow((double)(int)uVar6 / dVar2,_Y);
        dVar7 = floor(dVar7 * dVar2 + dVar1);
        uVar5 = (undefined1)(int)dVar7;
      }
      else {
        uVar5 = (undefined1)uVar6;
      }
      uVar4 = (ulonglong)uVar6;
      uVar6 = uVar6 + 1;
      puVar3[uVar4] = uVar5;
    } while (uVar6 < 0x100);
  }
  return;
}



############ FUN_ 18126c6b0 size=528 ############

void FUN_18126c6b0(longlong param_1,longlong *param_2,byte param_3,int param_4)

{
  ushort uVar1;
  double dVar2;
  double dVar3;
  longlong lVar4;
  ulonglong uVar5;
  byte bVar6;
  ulonglong uVar7;
  uint uVar8;
  void *pvVar9;
  uint uVar10;
  void *pvVar11;
  void *pvVar12;
  ulonglong uVar13;
  uint uVar14;
  double dVar15;
  double _Y;
  
  bVar6 = 8 - param_3;
  uVar14 = 1 << (bVar6 & 0x1f);
  lVar4 = FUN_18126b5d0(param_1,(ulonglong)uVar14 << 3);
  pvVar9 = (void *)0x0;
  *param_2 = lVar4;
  pvVar11 = pvVar9;
  if (uVar14 != 0) {
    do {
      pvVar12 = pvVar9;
      if ((param_1 != 0) && (pvVar12 = malloc(0x200), pvVar12 == (void *)0x0)) {
                    /* WARNING: Subroutine does not return */
        FUN_18126c150(param_1);
      }
      uVar8 = (int)pvVar11 + 1;
      *(void **)(lVar4 + (longlong)pvVar11 * 8) = pvVar12;
      pvVar11 = (void *)(ulonglong)uVar8;
    } while (uVar8 < uVar14);
  }
  dVar3 = DAT_1824c43c8;
  dVar2 = DAT_1824c4050;
  _Y = (double)param_4 * DAT_1824c3d78;
  pvVar11 = pvVar9;
  do {
    uVar1 = (short)pvVar9 * 0x101;
    uVar8 = uVar1 + 0x80;
    if (uVar1 + 0x7f < 0xfffe) {
      dVar15 = pow((double)uVar8 / dVar3,_Y);
      dVar15 = floor(dVar15 * dVar3 + dVar2);
      uVar8 = (uint)dVar15;
    }
    uVar8 = ((uVar8 & 0xffff) * ((1 << (0x10 - param_3 & 0x1f)) + -1) + 0x8000) / 0xffff + 1;
    uVar10 = (uint)pvVar11;
    pvVar12 = pvVar11;
    if (uVar10 < uVar8) {
      uVar8 = uVar8 - uVar10;
      uVar13 = (ulonglong)uVar8;
      pvVar12 = (void *)(ulonglong)(uVar10 + uVar8);
      do {
        uVar5 = (ulonglong)pvVar11 & (ulonglong)(0xff >> (param_3 & 0x3f));
        uVar7 = (ulonglong)pvVar11 >> (bVar6 & 0x3f);
        pvVar11 = (void *)((longlong)pvVar11 + 1);
        *(ushort *)(*(longlong *)(lVar4 + uVar5 * 8) + uVar7 * 2) = uVar1;
        uVar13 = uVar13 - 1;
      } while (uVar13 != 0);
    }
    uVar8 = (int)pvVar9 + 1;
    pvVar9 = (void *)(ulonglong)uVar8;
    pvVar11 = pvVar12;
  } while (uVar8 < 0xff);
  if ((uint)pvVar12 < uVar14 * 0x100) {
    uVar13 = (ulonglong)(uVar14 * 0x100 - (uint)pvVar12);
    do {
      uVar5 = (ulonglong)pvVar12 & (ulonglong)(uint)(0xff >> (param_3 & 0x1f));
      uVar7 = (ulonglong)pvVar12 >> (bVar6 & 0x3f);
      pvVar12 = (void *)((longlong)pvVar12 + 1);
      *(undefined2 *)(*(longlong *)(lVar4 + uVar5 * 8) + uVar7 * 2) = 0xffff;
      uVar13 = uVar13 - 1;
    } while (uVar13 != 0);
  }
  return;
}



############ FUN_ 18126c8d0 size=486 ############

void FUN_18126c8d0(longlong param_1,longlong *param_2,int param_3,int param_4)

{
  double dVar1;
  char cVar2;
  double dVar3;
  double dVar4;
  uint uVar5;
  longlong lVar6;
  undefined2 *puVar7;
  byte bVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  ulonglong uVar12;
  int iVar13;
  double dVar14;
  double _Y;
  
  cVar2 = (char)param_3;
  bVar8 = 8 - cVar2;
  uVar9 = 1 << (bVar8 & 0x1f);
  iVar13 = 1 << (0x10U - cVar2 & 0x1f);
  dVar1 = DAT_1824c4140 / (double)(iVar13 + -1);
  lVar6 = FUN_18126b5d0(param_1,(ulonglong)uVar9 << 3);
  uVar12 = 0;
  *param_2 = lVar6;
  dVar4 = DAT_1824c43c8;
  dVar3 = DAT_1824c4050;
  if (uVar9 != 0) {
    _Y = (double)param_4 * DAT_1824c3d78;
    do {
      if (param_1 == 0) {
        puVar7 = (undefined2 *)0x0;
      }
      else {
        puVar7 = malloc(0x200);
        if (puVar7 == (undefined2 *)0x0) {
                    /* WARNING: Subroutine does not return */
          FUN_18126c150(param_1);
        }
      }
      *(undefined2 **)(lVar6 + uVar12 * 8) = puVar7;
      iVar11 = (int)uVar12;
      if (param_4 - 95000U < 0x2711) {
        uVar10 = 0;
        do {
          uVar5 = (uVar10 << (bVar8 & 0x1f)) + iVar11;
          if (param_3 != 0) {
            uVar5 = (uVar5 * 0xffff + (1 << (0xfU - cVar2 & 0x1f))) / (iVar13 - 1U);
          }
          *puVar7 = (short)uVar5;
          uVar10 = uVar10 + 1;
          puVar7 = puVar7 + 1;
        } while (uVar10 < 0x100);
      }
      else {
        uVar10 = 0;
        do {
          dVar14 = pow((double)((uVar10 << (bVar8 & 0x1f)) + iVar11) * dVar1,_Y);
          dVar14 = floor(dVar14 * dVar4 + dVar3);
          uVar10 = uVar10 + 1;
          *puVar7 = (short)(int)dVar14;
          puVar7 = puVar7 + 1;
        } while (uVar10 < 0x100);
      }
      uVar12 = (ulonglong)(iVar11 + 1U);
    } while (iVar11 + 1U < uVar9);
  }
  return;
}



############ FUN_ 18126caf0 size=89 ############

uint FUN_18126caf0(uint param_1,int param_2)

{
  double dVar1;
  
  if (param_1 - 1 < 0xfffe) {
    dVar1 = pow((double)(int)param_1 / DAT_1824c43c8,(double)param_2 * DAT_1824c3d78);
    dVar1 = floor(dVar1 * DAT_1824c43c8 + DAT_1824c4050);
    return (int)dVar1;
  }
  return param_1 & 0xffff;
}



############ FUN_ 18126cb50 size=89 ############

uint FUN_18126cb50(uint param_1,int param_2)

{
  double dVar1;
  
  if (param_1 - 1 < 0xfe) {
    dVar1 = pow((double)(int)param_1 / DAT_1824c4318,(double)param_2 * DAT_1824c3d78);
    dVar1 = floor(dVar1 * DAT_1824c4318 + DAT_1824c4050);
    return (int)dVar1;
  }
  return param_1 & 0xff;
}



############ FUN_ 1812e59f0 size=296 ############

double FUN_1812e59f0(longlong param_1,double param_2)

{
  longlong lVar1;
  longlong *plVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double local_res8 [2];
  double local_res18;
  double local_res20;
  
  dVar3 = DAT_1824c4140;
  lVar1 = *(longlong *)(param_1 + 0x200);
  local_res18 = *(double *)(lVar1 + 0xa0);
  local_res20 = *(double *)(lVar1 + 0x98);
  if (*(longlong *)(lVar1 + 0x138) == 0) {
    dVar6 = (param_2 - local_res20) / (local_res18 - local_res20);
    if (0.0 <= dVar6) {
      dVar4 = DAT_1824c4140;
      if (dVar6 <= DAT_1824c4140) {
        dVar4 = dVar6;
      }
    }
    else {
      dVar4 = 0.0;
    }
    dVar6 = *(double *)(lVar1 + 0xb0);
    if (dVar6 != DAT_1824c4140) {
      if (*(char *)(lVar1 + 0xb8) == '\0') {
        dVar4 = pow(dVar4,dVar6);
      }
      else {
        dVar5 = dVar4 * DAT_1824c41e8 - DAT_1824c4140;
        dVar4 = DAT_1824c4140;
        if (dVar5 < 0.0) {
          dVar4 = DAT_1824c46a0;
        }
        dVar6 = pow((double)CONCAT44((uint)((ulonglong)dVar5 >> 0x20) & DAT_1824c4f10._4_4_,
                                     SUB84(dVar5,0) & (uint)DAT_1824c4f10),dVar6);
        dVar4 = (dVar6 * dVar4 + dVar3) * DAT_1824c4050;
      }
    }
  }
  else {
    plVar2 = *(longlong **)(lVar1 + 0x138);
    local_res8[0] = param_2;
    if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
      std::_Xbad_function_call();
    }
    dVar3 = (double)(**(code **)(*plVar2 + 0x10))
                              (plVar2,&local_res20,&local_res18,local_res8,0xfffffffffffffffe);
    dVar4 = 0.0;
    if ((0.0 <= dVar3) && (dVar4 = DAT_1824c4140, dVar3 <= DAT_1824c4140)) {
      dVar4 = dVar3;
    }
  }
  return dVar4;
}



############ FUN_ 1813ada80 size=252 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1813ada80(longlong param_1,int param_2,undefined4 param_3,undefined8 param_4)

{
  double dVar1;
  longlong lVar2;
  undefined4 *puVar3;
  double dVar4;
  
  lVar2 = __RTDynamicCast(param_4,0,&juce::SynthesiserSound::RTTI_Type_Descriptor,
                          &juce::SamplerSound::RTTI_Type_Descriptor,0);
  if (lVar2 != 0) {
    dVar4 = pow(DAT_1824c41e8,(double)(param_2 - *(int *)(lVar2 + 0x54)) / _DAT_1824c4280);
    dVar1 = *(double *)(lVar2 + 0x20);
    puVar3 = (undefined4 *)(param_1 + 0x170);
    *(undefined8 *)(param_1 + 0x160) = 0;
    *(undefined4 *)(param_1 + 0x168) = param_3;
    *(undefined4 *)(param_1 + 0x16c) = param_3;
    *(double *)(param_1 + 0x158) = (dVar4 * dVar1) / *(double *)(param_1 + 8);
    *(undefined8 *)(param_1 + 0x188) = *(undefined8 *)(lVar2 + 0x20);
    FUN_1805384c0(puVar3,lVar2 + 0x58);
    if ((float)puVar3[10] <= 0.0) {
      if ((float)puVar3[0xb] <= 0.0) {
        *puVar3 = 3;
      }
      else {
        puVar3[8] = 0x3f800000;
        *puVar3 = 2;
      }
    }
    else {
      *puVar3 = 1;
    }
  }
  return;
}



############ FUN_ 1813bbbf0 size=64 ############

double FUN_1813bbbf0(double param_1,double param_2)

{
  double dVar1;
  
  if (param_2 != 0.0) {
    dVar1 = pow(param_2 + DAT_1824c4140,param_1);
    param_1 = (dVar1 - DAT_1824c4140) / param_2;
  }
  return param_1;
}



############ FUN_ 1813bbf00 size=86 ############

void FUN_1813bbf00(double param_1,undefined8 param_2,double param_3)

{
  double dVar1;
  
  dVar1 = (double)fmax(param_2,DAT_1824c3cf8);
  pow(param_1,DAT_1824c4140 / (dVar1 * param_3 * DAT_1824c3e30));
  return;
}



############ FUN_ 180533670 size=354 ############

undefined8 *
FUN_180533670(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = 2;
  *(undefined4 *)(param_1 + 1) = 0xffffffff;
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 2) = 1;
  *(undefined2 *)((longlong)param_1 + 0x14) = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  *(undefined4 *)(param_1 + 10) = 0;
  param_1[0xb] = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  param_1[0xd] = 0;
  *(undefined4 *)(param_1 + 0xe) = 0;
  param_1[0xf] = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  param_1[0x11] = 0;
  *(undefined4 *)(param_1 + 0x12) = 0;
  param_1[0x13] = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[0x15] = 0;
  *(undefined4 *)(param_1 + 0x16) = 0;
  param_1[0x17] = 0;
  *(undefined4 *)(param_1 + 0x18) = 0;
  param_1[0x19] = 0;
  *(undefined4 *)(param_1 + 0x1a) = 0;
  param_1[0x1b] = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  param_1[0x1d] = 0;
  *(undefined4 *)(param_1 + 0x1e) = 0;
  param_1[0x1f] = 0;
  *(undefined4 *)(param_1 + 0x20) = 0;
  param_1[0x21] = 0;
  *(undefined4 *)(param_1 + 0x22) = 0;
  param_1[0x23] = 0;
  *(undefined4 *)(param_1 + 0x24) = 0;
  param_1[0x25] = 0;
  *(undefined4 *)(param_1 + 0x26) = 0;
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8,param_3,param_4,0xfffffffffffffffe);
  if (iVar1 != 0) {
    __std_type_info_compare(0x182650db8,0x182650a88,param_3,param_4,uVar2);
  }
  FUN_1812459c0(&DAT_182673ea0,0xffffffff);
  if (DAT_182673714 == '\0') {
    DAT_182673714 = '\x01';
    FUN_180001000();
  }
  FUN_181245930(&DAT_182673ea0);
  return param_1;
}



############ FUN_ 180534840 size=311 ############

void FUN_180534840(longlong *param_1,uint param_2)

{
  void *pvVar1;
  int iVar2;
  ulonglong uVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  
  uVar6 = *(uint *)((longlong)param_1 + 0xc);
  uVar7 = param_2 - uVar6;
  if ((int)uVar7 < 1) {
    if ((int)uVar7 < 0) {
      uVar7 = param_2 - uVar7;
      uVar5 = 0;
      if ((-1 < (int)uVar7) && (uVar5 = uVar7, (int)uVar6 < (int)uVar7)) {
        uVar5 = uVar6;
      }
      if ((int)param_2 < 0) {
        param_2 = 0;
      }
      else if ((int)uVar6 < (int)param_2) {
        param_2 = uVar6;
      }
      iVar2 = uVar5 - param_2;
      if (0 < iVar2) {
        pvVar1 = (void *)(*param_1 + (longlong)(int)param_2 * 4);
        memmove(pvVar1,(void *)((longlong)pvVar1 + (longlong)iVar2 * 4),
                (longlong)(int)((uVar6 - param_2) - iVar2) << 2);
        *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) - iVar2;
        iVar2 = *(int *)((longlong)param_1 + 0xc);
        uVar6 = 0;
        if (0 < iVar2 * 2) {
          uVar6 = iVar2 * 2;
        }
        if ((int)uVar6 < (int)param_1[1]) {
          if (iVar2 < 0x10) {
            iVar2 = 0x10;
          }
          if (iVar2 < (int)param_1[1]) {
            FUN_1804af790(param_1);
          }
        }
      }
    }
  }
  else {
    iVar2 = uVar6 + uVar7;
    if ((int)param_1[1] < iVar2) {
      FUN_1804af790(param_1,iVar2 + 8 + iVar2 / 2 & 0xfffffff8);
    }
    uVar5 = *(uint *)((longlong)param_1 + 0xc);
    if (uVar6 < uVar5) {
      pvVar1 = (void *)(*param_1 + (longlong)(int)uVar6 * 4);
      memmove((void *)((longlong)pvVar1 + (longlong)(int)uVar7 * 4),pvVar1,
              (longlong)(int)(uVar5 - uVar6) << 2);
      puVar4 = (undefined4 *)(*param_1 + (longlong)(int)uVar6 * 4);
    }
    else {
      puVar4 = (undefined4 *)(*param_1 + (longlong)(int)uVar5 * 4);
    }
    if (0 < (int)uVar7) {
      uVar3 = (ulonglong)uVar7;
      do {
        *puVar4 = 0;
        uVar3 = uVar3 - 1;
        puVar4 = puVar4 + 1;
      } while (uVar3 != 0);
    }
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + uVar7;
  }
  return;
}



############ FUN_ 180bb3de0 size=2670 ############

/* WARNING: Instruction at (ram,0x000180bb41f3) overlaps instruction at (ram,0x000180bb41f2)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180bb43c9) */
/* WARNING: Removing unreachable block (ram,0x000180bb4349) */
/* WARNING: Removing unreachable block (ram,0x000180bb41f1) */
/* WARNING: Removing unreachable block (ram,0x000180bb3ef3) */
/* WARNING: Removing unreachable block (ram,0x000180bb3f0a) */
/* WARNING: Removing unreachable block (ram,0x000180bb42cf) */
/* WARNING: Removing unreachable block (ram,0x000180bb436d) */
/* WARNING: Removing unreachable block (ram,0x000180bb4450) */
/* WARNING: Removing unreachable block (ram,0x000180bb484a) */
/* WARNING: Removing unreachable block (ram,0x000180bb3f57) */

void FUN_180bb3de0(undefined8 *param_1)

{
  undefined1 *puVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  ulonglong uVar7;
  longlong lVar8;
  IMAGE_DOS_HEADER *pIVar9;
  longlong *plVar10;
  uint *puVar11;
  IMAGE_DOS_HEADER *pIVar12;
  undefined1 *puVar13;
  undefined4 *puVar14;
  uint uVar15;
  int iVar16;
  uint uVar17;
  int *piVar18;
  ulonglong uVar19;
  undefined8 *puVar20;
  uint uVar21;
  bool bVar22;
  int unaff_retaddr;
  undefined1 auStack_158 [32];
  undefined8 local_138;
  uint local_128;
  undefined8 local_120;
  undefined8 local_118;
  uint local_110 [2];
  undefined8 local_108;
  ulonglong local_100;
  int local_f8;
  undefined8 local_f0;
  int local_e8;
  int local_e4;
  int local_e0;
  longlong local_d8;
  undefined8 *local_d0;
  undefined8 local_c8;
  undefined8 *local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  code *local_a0;
  longlong local_98;
  undefined **local_90;
  code *local_88;
  undefined ***local_58;
  undefined4 local_48;
  ulonglong local_38;
  
  local_b8 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_158;
  *param_1 = pace::dlc::DlcQueue::vftable;
  param_1[3] = 1;
  local_b0 = 1000000;
  local_a8 = 1000000;
  local_c8 = 1000000;
  local_a0 = FUN_180bbed40;
  local_90 = std::_Func_impl_no_alloc<bool_(__cdecl*)(void*___ptr64),bool,void*___ptr64>::vftable;
  local_88 = FUN_180bbed40;
  local_58 = &local_90;
  local_138 = DAT_182670268;
  local_d0 = param_1;
  local_c0 = param_1;
  FUN_180bc8cd0(param_1 + 4,&local_90,param_1);
  *(undefined4 *)(param_1 + 0x23) = 0;
  *(undefined2 *)((longlong)param_1 + 0x11c) = 0;
  FUN_180bd2460(param_1 + 0x3e,DAT_182670270);
  local_e4 = 0xd70;
  local_e0 = 0x610;
  LOCK();
  bVar22 = DAT_182670278 == 0;
  if (bVar22) {
    DAT_182670278 = 1;
  }
  UNLOCK();
  while (!bVar22) {
    LOCK();
    bVar22 = DAT_182670278 == 0;
    if (bVar22) {
      DAT_182670278 = 1;
    }
    UNLOCK();
  }
  lVar2 = _Query_perf_frequency();
  lVar3 = _Query_perf_counter();
  local_d8 = ((lVar3 % lVar2) * 1000000000) / lVar2 + (lVar3 / lVar2) * 1000000000;
  pIVar9 = &IMAGE_DOS_HEADER_180000000;
  local_f0 = 0;
  local_120 = 0x16ce904;
  local_108 = 0x1816ce904;
  local_118 = 0x18170e804;
  local_98 = local_d8;
  do {
    FUN_180bb5c35(0x6318);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    FUN_180bb4e19(0x6318);
    lVar2 = local_108;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_120 = 0xd3bf000a444ef9ff;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_110[0] = 0x10c51683;
  local_108 = CONCAT44(local_108._4_4_,0x13534) ^ 0xc6a592a7;
  uVar5 = (uint)lVar2 & 0x5ff;
  uVar5 = (uVar5 - 1) * uVar5 - 1 & 1;
  puVar14 = (undefined4 *)
            ((((ulonglong)((int)(-uVar5 | uVar5) >> 0x1f & 0x2ea1) ^ 0x2da1) - 0x304) + lVar2);
  local_100 = CONCAT44(local_100._4_4_,(int)puVar14);
  uVar6 = (uint)local_118;
  uVar5 = ((uVar6 & 0xff) + 1) * (uVar6 & 0xff) + 0x2e0b & 0x80000001;
  local_f8 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_f0 = CONCAT44(local_f0._4_4_,((uVar6 & 0x18ff) - 1) * (uVar6 & 0x18ff)) & 0xffffffff00000001
  ;
  uVar5 = ((uVar6 & 0xcff) * (uVar6 & 0xcff) * 0x10 + 4) % 0x13;
  uVar5 = ((int)(-uVar5 | uVar5) >> 0x1f) >> ((byte)local_118 & 0x1f);
  uVar21 = uVar6 & 0x6f;
  local_128 = ((uVar6 & 0x20ff) + 1) * (uVar6 & 0x20ff) & 0x80000001;
  uVar5 = (int)(-uVar5 | uVar5) >> 0x1f;
  local_118 = CONCAT44(local_118._4_4_,uVar5);
  local_d0 = (undefined8 *)(ulonglong)(uVar6 ^ 0x7b12);
  uVar19 = local_100;
LAB_180bb4398:
  puVar20 = local_c0;
  if (((uint)uVar19 >> 8 & 1) == 0) {
    uVar6 = local_110[0] & 0x2f;
    uVar6 = 0x51e << ((byte)((int)(uVar6 * uVar6 * (uVar6 + 1) * (uVar6 + 1) & 0x80000003) >>
                            ((byte)uVar19 & 0x1f)) & 0x1f);
  }
  else {
    uVar6 = 0x51e;
  }
  uVar17 = local_110[0] & 0x3f;
  uVar15 = (((local_110[0] & 0x1cff) + 1) * (local_110[0] & 0x1cff) + 7) % 0x51;
  puVar14 = (undefined4 *)
            ((longlong)puVar14 +
            (longlong)(int)((local_f8 - ((int)(-uVar15 | uVar15) >> 0x1f)) + 0x59eU ^ uVar6) +
            ((longlong)
             (int)((int)local_f0 + 0xdf10 +
                  (uVar17 * uVar17 * (uVar17 + 1) * (uVar17 + 1) & 0x80000003)) ^
            0xffffffffffff2094U));
  uVar15 = (uint)puVar14;
  uVar19 = (ulonglong)puVar14 & 0xffffffff;
  uVar6 = uVar15 & 0x2ff;
  iVar16 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  if ((int)local_d0 - ((uVar15 ^ 0x2812) & uVar5 & 0xa8ff | uVar15 ^ 0x7b12) ==
      (((iVar16 >> 1) - (iVar16 >> 3)) + iVar16 * 0x55555555 >> 0x1e & local_128 |
      uVar21 * uVar21 * (uVar21 + 1) * (uVar21 + 1) & 0x80000003)) {
    lVar2 = (longlong)local_e4;
    do {
      puVar11 = local_110;
      uVar5 = FUN_180bb1b1d(&LAB_18113e030);
      *puVar11 = uVar5;
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = (local_110[0] >> 0x10 ^ local_110[0]) >> 1 & 0x3fff;
    uVar5 = (uVar5 << 0x10 | uVar5) * 2 ^ local_110[0];
    uVar6 = uVar5 >> 4 | uVar5 << 0x1c;
    uVar5 = (uVar6 >> 8 ^ uVar6) & 7;
    if (~(((uVar5 << 8 | uVar5) ^ uVar6) + 0x72ad52d4) != (uint)local_120) {
      lVar3 = FUN_180bb8910();
      FUN_180bd8160(local_d8,lVar3,1,puVar20 + 1);
      thunk_FUN_1805a9280(lVar2,(longlong)thunk_FUN_1805a9280 -
                                ((lVar3 - 0x180bc2890U ^ 0xffffffffffffffff) + 1),
                          thunk_FUN_1805a9280);
      return;
    }
    uVar4 = FUN_180bb8910();
    FUN_180bd8160(local_d8,uVar4,1,puVar20 + 1);
    lVar3 = (longlong)local_e0;
    puVar1 = auStack_158;
    do {
      puVar13 = puVar1;
      *(undefined8 *)(puVar13 + -8) = 0x180bb4728;
      lVar8 = lVar3;
      FUN_180bb51aa();
      *(longlong *)(puVar13 + -8) = lVar2;
      *(undefined8 **)(puVar13 + -0x10) = puVar20;
      *(BADSPACEBASE **)(puVar13 + -0x18) = register0x00000020;
      lVar8 = -lVar8;
      register0x00000020 = *(BADSPACEBASE **)(puVar13 + lVar8 + 0x5f8);
      puVar20 = *(undefined8 **)(puVar13 + lVar8 + 0x600);
      lVar2 = *(longlong *)(puVar13 + lVar8 + 0x608);
      uVar5 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
      puVar1 = puVar13 + lVar8 + 0x610;
    } while (uVar5 != 0);
    LOCK();
    *(undefined4 *)(puVar13 + lVar8 + 0x610) = *(undefined4 *)(puVar13 + lVar8 + 0x610);
    UNLOCK();
    DAT_182670278 = 0;
    *(undefined **)(puVar13 + lVar8 + 0x608) = &UNK_180bb490d;
  }
  if ((pIVar9 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar2._0_1_ = pIVar9->e_magic[0], lVar2._1_1_ = pIVar9->e_magic[1],
     lVar2._2_2_ = pIVar9->e_cblp, lVar2._4_2_ = pIVar9->e_cp, lVar2._6_2_ = pIVar9->e_crlc,
     -1 < lVar2)) {
    local_100 = 0x2621fc0;
    pIVar12 = pIVar9;
    do {
      if (puVar14 < IMAGE_DOS_HEADER_180000000.e_magic + lVar2 + 8) {
        pIVar9 = pIVar12;
        if (-1 < lVar2) {
          plVar10 = (longlong *)(lVar2 + 0x180000000);
          if (plVar10 < puVar14 + 1) {
            local_48 = *puVar14;
            goto LAB_180bb4560;
          }
        }
        break;
      }
      pIVar9 = (IMAGE_DOS_HEADER *)&pIVar12->e_cparhdr;
      lVar2._0_2_ = pIVar12->e_cparhdr;
      lVar2._2_2_ = pIVar12->e_minalloc;
      lVar2._4_2_ = pIVar12->e_maxalloc;
      lVar2._6_2_ = pIVar12->e_ss;
      pIVar12 = pIVar9;
    } while (-1 < lVar2);
  }
  goto LAB_180bb4590;
  while (plVar10 = (longlong *)(lVar2 + 0x180000000), plVar10 < puVar14 + 1) {
LAB_180bb4560:
    *(longlong *)(&stack0x00017fffffb8 + (lVar2 - (longlong)puVar14)) = *plVar10 + -0x180000000;
    pIVar12 = (IMAGE_DOS_HEADER *)&pIVar12->e_cparhdr;
    lVar2 = *(longlong *)pIVar12;
    if (lVar2 < 0) break;
  }
LAB_180bb4590:
  do {
    piVar18 = &local_e8;
    uVar7 = 0;
    do {
      iVar16 = FUN_180bafbe4();
      *piVar18 = iVar16;
    } while ((uVar7 & 0xc3) != 0);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_110[0] = (local_110[0] + local_e8) * (int)local_108;
  local_110[0] = local_110[0] ^ local_110[0] >> 0x10;
  uVar5 = (uint)local_118;
  goto LAB_180bb4398;
}



############ FUN_ 180bb7220 size=1604 ############

/* WARNING: Instruction at (ram,0x000180bb74c5) overlaps instruction at (ram,0x000180bb74c2)
    */
/* WARNING: Removing unreachable block (ram,0x000180bb74c2) */
/* WARNING: Removing unreachable block (ram,0x000180bb725a) */
/* WARNING: Removing unreachable block (ram,0x000180bb7289) */
/* WARNING: Removing unreachable block (ram,0x000180bb78bc) */

undefined1 * FUN_180bb7220(undefined8 param_1,int param_2,longlong param_3)

{
  longlong lVar1;
  undefined1 *puVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  undefined1 *puVar6;
  longlong lVar7;
  undefined1 *puVar8;
  uint uVar9;
  ulonglong uVar10;
  undefined8 in_R11;
  int unaff_retaddr;
  undefined1 auStack_78 [32];
  undefined4 *local_58;
  
  uVar3 = (uint)&stack0x00000000 & 0x13f;
  uVar9 = ((uVar3 + 2) * (uVar3 + 1) * uVar3) % 3;
  uVar10 = (ulonglong)uVar9;
  uVar9 = uVar9 ^ 0x592e;
  uVar3 = (uint)&stack0x00000000 & 0x12ff;
  uVar3 = uVar3 * uVar3 * 0x10 + 4;
  local_58 = &DAT_1815dcd28;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((DAT_1815dce20 ^
           (((((((((((((((((((((((((((((((((((((((((((((((((((DAT_1815dcd54 ^
                                                             (DAT_1815dcd50 ^
                                                             (DAT_1815dcd4c ^
                                                             (DAT_1815dcd48 ^
                                                             (DAT_1815dcd44 ^
                                                             (DAT_1815dcd40 ^
                                                             (DAT_1815dcd3c ^
                                                             (DAT_1815dcd38 ^
                                                             (DAT_1815dcd34 ^
                                                             (DAT_1815dcd30 ^
                                                             (DAT_1815dcd2c ^
                                                             (DAT_1815dcd28 ^ 0x811c9e07) *
                                                             0x10001a7) * 0x10001a7) * 0x10001a7) *
                                                             0x10001a7) * 0x10001a7) * 0x10001a7) *
                                                             0x10001a7) * 0x10001a7) * 0x10001a7) *
                                                             0x10001a7) * 0x10001a7) * 0x10001a7 ^
                                                            DAT_1815dcd58) * 0x10001a7 ^
                                                           DAT_1815dcd5c) * 0x10001a7 ^
                                                          DAT_1815dcd60) * 0x10001a7 ^ DAT_1815dcd64
                                                         ) * 0x10001a7 ^ DAT_1815dcd68) * 0x10001a7
                                                       ^ DAT_1815dcd6c) * 0x10001a7 ^ DAT_1815dcd70)
                                                      * 0x10001a7 ^ DAT_1815dcd74) * 0x10001a7 ^
                                                    DAT_1815dcd78) * 0x10001a7 ^ DAT_1815dcd7c) *
                                                   0x10001a7 ^ DAT_1815dcd80) * 0x10001a7 ^
                                                 DAT_1815dcd84) * 0x10001a7 ^ DAT_1815dcd88) *
                                                0x10001a7 ^ DAT_1815dcd8c) * 0x10001a7 ^
                                              DAT_1815dcd90) * 0x10001a7 ^ DAT_1815dcd94) *
                                             0x10001a7 ^ DAT_1815dcd98) * 0x10001a7 ^ DAT_1815dcd9c)
                                           * 0x10001a7 ^ DAT_1815dcda0) * 0x10001a7 ^ DAT_1815dcda4)
                                         * 0x10001a7 ^ DAT_1815dcda8) * 0x10001a7 ^ DAT_1815dcdac) *
                                       0x10001a7 ^ DAT_1815dcdb0) * 0x10001a7 ^ DAT_1815dcdb4) *
                                     0x10001a7 ^ DAT_1815dcdb8) * 0x10001a7 ^ DAT_1815dcdbc) *
                                   0x10001a7 ^ DAT_1815dcdc0) * 0x10001a7 ^ DAT_1815dcdc4) *
                                 0x10001a7 ^ DAT_1815dcdc8) * 0x10001a7 ^ DAT_1815dcdcc) * 0x10001a7
                              ^ DAT_1815dcdd0) * 0x10001a7 ^ DAT_1815dcdd4) * 0x10001a7 ^
                            DAT_1815dcdd8) * 0x10001a7 ^ DAT_1815dcddc) * 0x10001a7 ^ DAT_1815dcde0)
                          * 0x10001a7 ^ DAT_1815dcde4) * 0x10001a7 ^ DAT_1815dcde8) * 0x10001a7 ^
                       DAT_1815dcdec) * 0x10001a7 ^ DAT_1815dcdf0) * 0x10001a7 ^ DAT_1815dcdf4) *
                     0x10001a7 ^ DAT_1815dcdf8) * 0x10001a7 ^ DAT_1815dcdfc) * 0x10001a7 ^
                  DAT_1815dce00) * 0x10001a7 ^ DAT_1815dce04) * 0x10001a7 ^ DAT_1815dce08) *
                0x10001a7 ^ DAT_1815dce0c) * 0x10001a7 ^ DAT_1815dce10) * 0x10001a7 ^ DAT_1815dce14)
             * 0x10001a7 ^ DAT_1815dce18) * 0x10001a7 ^ DAT_1815dce1c) * 0x10001a7) * 0x10001a7 ^
          DAT_1815dce24) * 0x10001a7 ^ 0xe1b52eae;
  uVar4 = (uVar4 >> 0xb | uVar4 << 0x15) + 0xba4abab4;
  uVar4 = uVar4 * 0x40000 | uVar4 >> 0xe;
  uVar4 = ~uVar4 & 0x14dd2923 | uVar4 & 0xeb22d6dc;
  if ((uVar4 & 0x7ffffff) != 0 || uVar4 != 0) {
    puVar2 = (undefined1 *)FUN_180bb78cb(0xb10,thunk_FUN_1805a9280,uVar10,uVar9);
    return puVar2;
  }
  lVar7 = (longlong)
          (int)((0 >> ((char)uVar3 + (char)(uVar3 / 0x13) * -0x13 & 0x1fU)) + 0x57beU ^ uVar9);
  puVar2 = auStack_78;
  do {
    puVar6 = puVar2;
    *(undefined8 *)(puVar6 + -8) = in_R11;
    *(ulonglong *)(puVar6 + -0x10) = uVar10;
    *(longlong *)(puVar6 + -0x18) = lVar7;
    iVar5 = param_2 + uVar4;
    param_2 = (uVar4 - iVar5 ^ 0xffffffff) + 1;
    lVar1 = -lVar7;
    uVar4 = (~(iVar5 - param_2) + 1U ^ 0xffffffff) + 1;
    lVar7 = *(longlong *)(puVar6 + lVar1 + 0xe78);
    uVar10 = *(ulonglong *)(puVar6 + lVar1 + 0xe80);
    in_R11 = *(undefined8 *)(puVar6 + lVar1 + 0xe88);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar6 + lVar1 + 0xe90;
  } while (uVar3 != 0);
  puVar2 = *(undefined1 **)(puVar6 + lVar1 + 0xf10);
  if (param_3 != 0) {
    puVar8 = puVar2;
    for (; param_3 != 0; param_3 = param_3 + -1) {
      *puVar8 = (char)param_2;
      puVar8 = puVar8 + 1;
    }
  }
  return puVar2;
}



############ FUN_ 180809b20 size=3073 ############

/* WARNING: Instruction at (ram,0x00018080a4cf) overlaps instruction at (ram,0x00018080a4cb)
    */
/* WARNING: Removing unreachable block (ram,0x00018080a23c) */
/* WARNING: Removing unreachable block (ram,0x000180809e28) */
/* WARNING: Removing unreachable block (ram,0x000180809e3a) */
/* WARNING: Removing unreachable block (ram,0x000180809e38) */
/* WARNING: Removing unreachable block (ram,0x000180809e40) */
/* WARNING: Removing unreachable block (ram,0x000180809b6a) */
/* WARNING: Removing unreachable block (ram,0x00018080a0c4) */
/* WARNING: Removing unreachable block (ram,0x00018080a73a) */
/* WARNING: Removing unreachable block (ram,0x00018080a185) */
/* WARNING: Removing unreachable block (ram,0x00018080a207) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_180809b20(longlong param_1,longlong param_2)

{
  uint uVar1;
  ulonglong uVar2;
  int iVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  undefined1 *puVar7;
  longlong lVar8;
  uint uVar9;
  uint uVar10;
  ulonglong uVar12;
  longlong lVar13;
  ulonglong uVar14;
  uint uVar15;
  int *piVar16;
  int unaff_retaddr;
  undefined1 auStack_c8 [32];
  undefined4 *local_a8;
  longlong local_a0;
  longlong local_98;
  undefined **local_90;
  int local_88;
  longlong local_80;
  undefined2 local_78;
  undefined **local_70;
  int local_68;
  longlong local_60;
  undefined2 local_58;
  ulonglong uVar11;
  
  puVar7 = auStack_c8;
  local_98 = *(longlong *)(param_1 + 0xce8);
  uVar1 = (uint)&stack0x00000000 & 0x3ff;
  uVar9 = (uint)&stack0x00000000 & 0x4aff;
  iVar3 = (uVar1 + 2) * (uVar1 + 1) * uVar1;
  uVar1 = ((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e ^ (uVar9 * uVar9 + 1) % 7;
  local_88 = *(int *)(param_2 + 8);
  local_70 = license_services::LsRelation::vftable;
  local_80 = *(longlong *)(param_2 + 0x10);
  uVar12 = (ulonglong)(((int)(-uVar1 | uVar1) >> 0x1f) * -0x9da7 ^ 0x9037);
  local_78 = *(undefined2 *)(param_2 + 0x18);
  local_a0 = *(longlong *)(param_1 + 0xcf0);
  for (lVar8 = local_98;
      (lVar8 != local_a0 &&
      ((*(int *)(lVar8 + 8) != local_88 || (*(longlong *)(lVar8 + 0x10) != local_80))));
      lVar8 = lVar8 + 0x20) {
  }
  local_90 = license_services::LsRelation::vftable;
  local_a8 = &DAT_1813ee12c;
  uVar1 = DAT_1813ee130 ^ DAT_1813ee12c >> 0x1c ^ (DAT_1813ee12c ^ 0xb50) << 4;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar1 = DAT_1813ee134 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee138 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee13c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee140 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee144 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee148 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee14c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee150 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee154 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee158 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee15c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar1 = DAT_1813ee160 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee164 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee168 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee16c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee170 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee174 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee178 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee17c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee180 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee184 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee188 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee18c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee190 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = DAT_1813ee194 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = _DAT_1813ee198 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = _DAT_1813ee19c ^ uVar1 >> 0x1c ^ uVar1 << 4;
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar1 = _DAT_1813ee1a0 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = _DAT_1813ee1a4 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar15 = _LAB_1813ee1a8 ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = uVar15 & 0x4f;
  uVar10 = (uVar1 + 1) * (uVar1 + 1) * uVar1 * uVar1 & 0x80000003;
  uVar11 = (ulonglong)uVar10;
  uVar1 = uVar15 & 0x7f | 0x51;
  uVar9 = uVar15 & 0x3bf;
  iVar3 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  lVar6 = ((longlong)(int)uVar10 ^ 0xffffffffffffffb4U) + 0x7c +
          ((longlong)(0xa26c << (uVar1 * uVar1 * 0xc005 == 0x3ad66bb)) ^
          ((longlong)
           (iVar3 + (iVar3 / 3 + (iVar3 >> 0x1f) +
                    (int)(((longlong)iVar3 / 3 + ((longlong)iVar3 >> 0x3f) & 0xffffffffU) >> 0x1f))
                    * -3 << ((byte)uVar15 & 0x1f)) | 0xa23cU));
  uVar1 = *(uint *)(lVar6 + 0x1813ee12c) ^ uVar15 >> 0x1c ^ uVar15 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee130) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee134) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee138) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee13c) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee140) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee144) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee148) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee14c) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee150) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee154) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee158) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  local_68 = local_88;
  local_60 = local_80;
  local_58 = local_78;
  do {
    FUN_180809ac5(0x582c);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar1 = *(uint *)(lVar6 + 0x1813ee15c) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee160) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee164) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee168) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee16c) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee170) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee174) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee178) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee17c) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee180) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee184) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  do {
    uVar2 = 0;
    *(undefined8 *)(puVar7 + -8) = 0x18080a4c0;
    FUN_180809978();
    uVar12 = -uVar12;
    if ((uVar2 & 0xc2) == 0) {
      uVar12 = uVar12 ^ 0xffffffffffffffff;
    }
    else {
      *(undefined8 *)(puVar7 + -8) = 0x18080a4d0;
      func_0x0001c9fd16f0();
      puVar7 = (undefined1 *)(ulonglong)((uint)puVar7 ^ 0xffffffff);
    }
    uVar12 = uVar12 + 1;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  lVar5 = *(longlong *)(puVar7 + 0xd0);
  uVar1 = *(uint *)(lVar6 + 0x1813ee188) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  piVar16 = (int *)(puVar7 + 200);
  do {
    uVar9 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = uVar1 << 4;
  uVar2 = (ulonglong)uVar9;
  uVar9 = *(uint *)(lVar6 + 0x1813ee18c) ^ uVar1 >> 0x1c ^ uVar9;
  uVar1 = *(uint *)(lVar6 + 0x1813ee190) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar1 = *(uint *)(lVar6 + 0x1813ee194) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = *(uint *)(&DAT_1813ee198 + lVar6) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar9 = *(uint *)(&DAT_1813ee19c + lVar6) ^ uVar1 >> 0x1c ^ uVar1 << 4;
  uVar1 = uVar9 << 4;
  uVar4 = (ulonglong)uVar1;
  uVar1 = *(uint *)(&DAT_1813ee1a0 + lVar6) ^ uVar9 >> 0x1c ^ uVar1;
  uVar1 = uVar1 >> 0x1c ^ uVar1 << 4 ^ *(uint *)(&DAT_1813ee1a4 + lVar6);
  uVar9 = uVar1 << 4;
  uVar14 = (ulonglong)uVar9;
  uVar9 = (*(uint *)(&LAB_1813ee1a8 + lVar6) ^ uVar1 >> 0x1c ^ uVar9) + 0x7a23cb7b;
  uVar1 = uVar9 >> 9;
  uVar9 = uVar9 * 0x800000 | uVar1;
  uVar1 = *(uint *)(puVar7 + 0xe0) ^
          ((uVar1 << 0x10 | uVar9 >> 0x10) & 0xdab0254f |
          (uVar9 >> 0x10 | uVar1 << 0x10) & 0x254fdab0) + 0xb19d0a6b;
  if (uVar1 != uVar1 >> 4) {
    *(undefined8 *)(puVar7 + -8) = 0x18080a718;
    FUN_18080c3d9(0xda0);
    *(ulonglong *)(puVar7 + -8) = uVar4;
    *(ulonglong *)(puVar7 + -0x10) = uVar14;
    *(ulonglong *)(puVar7 + -0x18) = uVar12;
    uVar12 = FUN_18080a77c();
    return uVar12;
  }
  do {
    *(undefined8 *)(puVar7 + -8) = 0x18080a63b;
    lVar6 = (longlong)(int)uVar12;
    FUN_180808b48();
    *(ulonglong *)(puVar7 + -8) = uVar11;
    *(int **)(puVar7 + -0x10) = piVar16;
    *(ulonglong *)(puVar7 + -0x18) = uVar2;
    lVar13 = lVar5 + uVar14;
    uVar4 = ~(uVar14 - lVar13);
    lVar5 = uVar4 + 1;
    uVar14 = lVar13 - lVar5;
    lVar6 = -lVar6;
    uVar2 = *(ulonglong *)(puVar7 + lVar6 + 0xd78);
    piVar16 = *(int **)(puVar7 + lVar6 + 0xd80);
    uVar11 = *(ulonglong *)(puVar7 + lVar6 + 0xd88);
    puVar7 = puVar7 + lVar6 + 0xd90;
    iVar3 = *piVar16;
    uVar1 = (iVar3 + 1) * iVar3 & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  return (ulonglong)CONCAT31((int3)((uint)iVar3 >> 8),lVar8 != *(longlong *)(uVar4 + 0xcf1));
}



############ FUN_ 18093db89 size=1163 ############

/* WARNING: Instruction at (ram,0x00018093ddc3) overlaps instruction at (ram,0x00018093ddbe)
    */
/* WARNING: Removing unreachable block (ram,0x00018093dbfe) */

void FUN_18093db89(void)

{
  longlong lVar1;
  undefined4 in_EAX;
  undefined4 uVar2;
  int iVar3;
  void *_Memory;
  uint uVar4;
  int iVar5;
  ulonglong uVar6;
  undefined1 *puVar7;
  longlong unaff_RBX;
  undefined1 *puVar8;
  longlong unaff_RBP;
  longlong lVar9;
  int *unaff_RDI;
  int *piVar10;
  undefined4 *puVar11;
  undefined4 *in_R9;
  longlong in_R10;
  undefined8 in_R11;
  undefined1 *puVar12;
  undefined1 *puVar13;
  int unaff_R13D;
  undefined1 *unaff_R14;
  longlong lVar14;
  LPCWSTR unaff_R15;
  int unaff_retaddr;
  undefined1 local_res8 [32];
  
  *in_R9 = in_EAX;
  puVar7 = local_res8;
  uVar4 = (*unaff_RDI + 1) * *unaff_RDI & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 != 0) {
    FUN_18093db89(0xef0c,unaff_RBX + 0xa4,0);
    return;
  }
  *(uint *)(unaff_RBP + 0x58) =
       (*(uint *)(unaff_RBX + 0xb0) ^
       (*(uint *)(unaff_RBX + 0xac) ^
       (*(int *)(unaff_RBP + 0x58) * 0x1000181 ^ *(uint *)(unaff_RBX + 0xa8)) * 0x1000181) *
       0x1000181) * 0x1000181;
  *(undefined8 *)(unaff_RBP + -0x20) = 0x430a33282f8c7d72;
  *(int *)(unaff_RBP + -0x28) = (int)*(undefined8 *)(unaff_RBP + -0x20);
  do {
    *(uint *)(unaff_RBP + 0x58) = *(uint *)(unaff_RBP + 0x58) ^ *(uint *)(unaff_RBX + 0xb4);
    uVar4 = (*(int *)(unaff_RBP + 0x38) + 1) * *(int *)(unaff_RBP + 0x38) & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  *(int *)(unaff_RBP + 0x58) = *(int *)(unaff_RBP + 0x58) * 0x1000181;
  puVar13 = *(undefined1 **)(unaff_RBP + 0x40);
  piVar10 = (int *)(unaff_RBP + 0x38);
  do {
    FUN_18093e29a(0xef0c);
    puVar12 = puVar13 + in_R10;
    in_R10 = ~((longlong)puVar13 - (longlong)puVar12) + 1;
    puVar13 = puVar12 + -in_R10;
    uVar4 = (*piVar10 + 1) * *piVar10 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  *(uint *)(unaff_RBP + 0x58) =
       (*(uint *)(unaff_RBX + 0xe0) ^
       (*(uint *)(unaff_RBX + 0xdc) ^
       (*(uint *)(unaff_RBX + 0xd8) ^
       (*(uint *)(unaff_RBX + 0xd4) ^
       (*(uint *)(unaff_RBX + 0xd0) ^
       (*(uint *)(unaff_RBX + 0xcc) ^
       (*(uint *)(unaff_RBX + 200) ^
       (*(uint *)(unaff_RBX + 0xc4) ^
       (*(uint *)(unaff_RBX + 0xc0) ^
       (*(uint *)(unaff_RBX + 0xbc) ^
       (*(uint *)(unaff_RBX + 0xb8) ^ *(uint *)(unaff_RBP + 0x58)) * 0x1000181) * 0x1000181) *
       0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
       0x1000181) * 0x1000181;
  do {
    uVar6 = 0xef0c;
    *(undefined8 *)(puVar7 + -8) = 0x18093ddaa;
    FUN_18093db88();
    puVar12 = puVar13 + (longlong)unaff_R14;
    puVar13 = (undefined1 *)-((longlong)unaff_R14 - (longlong)puVar12);
    if ((uVar6 & 0xc300) == 0) {
      puVar7 = (undefined1 *)(ulonglong)(uint)((int)puVar7 - unaff_retaddr);
    }
    else {
      puVar12 = puVar12 + ((longlong)unaff_R14 - (longlong)puVar12);
    }
    uVar4 = (*piVar10 + 1) * *piVar10 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    unaff_R14 = puVar12;
  } while (uVar4 != 0);
  iVar5 = (*(uint *)(unaff_RBX + 0xfc) ^
          (*(uint *)(unaff_RBX + 0xf8) ^
          (*(uint *)(unaff_RBX + 0xf4) ^
          (*(uint *)(unaff_RBX + 0xf0) ^
          (*(uint *)(unaff_RBX + 0xec) ^
          (*(uint *)(unaff_RBX + 0xe8) ^
          (*(uint *)(unaff_RBX + 0xe4) ^ *(uint *)(unaff_RBP + 0x58)) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  *(int *)(unaff_RBP + 0x58) = iVar5;
  *(int *)(unaff_RBP + -0x30) = iVar5;
  do {
    puVar11 = (undefined4 *)(unaff_RBP + -0x30);
    *(undefined8 *)(puVar7 + -8) = 0x18093de71;
    uVar2 = FUN_1809826c7(&LAB_18113e030,&LAB_18113e030);
    *puVar11 = uVar2;
    uVar4 = (*piVar10 + 1) * *piVar10 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = *(int *)(unaff_RBP + -0x30) + 0x2e885f95;
  uVar4 = ~(uVar4 * 0x1000 | uVar4 >> 0x14) + 0xb443fe60;
  *(uint *)(unaff_RBP + 0x58) = (uVar4 >> 0xb | uVar4 * 0x200000) + 0x5a9ffed2;
  uVar4 = ~(*(uint *)(unaff_RBP + -0x28) & *(uint *)(unaff_RBP + 0x58));
  uVar4 = ~(~(uVar4 & *(uint *)(unaff_RBP + -0x28)) & ~(uVar4 & *(uint *)(unaff_RBP + 0x58)));
  uVar6 = (ulonglong)uVar4;
  if (uVar4 != 0) {
    *(undefined8 *)(puVar7 + -8) = 0x18093df08;
    FUN_18093df88();
    *(ulonglong *)(puVar7 + -8) = uVar6;
    *(undefined4 **)(puVar7 + -0x10) = in_R9;
    *(int **)(puVar7 + -0x18) = piVar10;
    FUN_18093df89();
    return;
  }
  lVar9 = 0;
  do {
    puVar8 = puVar7;
    *(LPCWSTR *)(puVar8 + -8) = unaff_R15;
    *(undefined8 *)(puVar8 + -0x10) = in_R11;
    *(int **)(puVar8 + -0x18) = piVar10;
    puVar7 = puVar12 + lVar9;
    puVar12 = (undefined1 *)((lVar9 - (longlong)puVar7 ^ 0xffffffffffffffffU) + 1);
    iVar5 = (int)puVar12;
    lVar9 = ~(~((longlong)puVar7 - (longlong)puVar12) + 1U) + 1;
    lVar1 = -(longlong)unaff_R13D;
    piVar10 = *(int **)(puVar8 + lVar1 + 0x208);
    in_R11 = *(undefined8 *)(puVar8 + lVar1 + 0x210);
    unaff_R15 = *(LPCWSTR *)(puVar8 + lVar1 + 0x218);
    uVar4 = (*piVar10 + 1) * *piVar10 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    puVar7 = puVar8 + lVar1 + 0x220;
  } while (uVar4 != 0);
  lVar9 = -1;
  if (iVar5 == 0) {
    lVar14 = -1;
    do {
      lVar14 = lVar14 + 1;
    } while (unaff_R15[lVar14] != L'\0');
    iVar5 = (int)lVar14 + 1;
  }
  *(undefined8 *)(puVar8 + lVar1 + 600) = 0;
  *(undefined8 *)(puVar8 + lVar1 + 0x250) = 0;
  *(undefined4 *)(puVar8 + lVar1 + 0x248) = 0;
  *(undefined8 *)(puVar8 + lVar1 + 0x240) = 0;
  *(undefined8 *)(puVar8 + lVar1 + 0x218) = 0x18093e208;
  iVar3 = WideCharToMultiByte(0xfde9,0,unaff_R15,iVar5,*(LPSTR *)(puVar8 + lVar1 + 0x240),
                              *(int *)(puVar8 + lVar1 + 0x248),*(LPCSTR *)(puVar8 + lVar1 + 0x250),
                              *(LPBOOL *)(puVar8 + lVar1 + 600));
  *(undefined8 *)(puVar8 + lVar1 + 0x218) = 0x18093e215;
  _Memory = (void *)thunk_FUN_1811316e0((longlong)(iVar3 + 2));
  *(void **)(unaff_RBP + -8) = _Memory;
  *(undefined8 *)(puVar8 + lVar1 + 600) = 0;
  *(undefined8 *)(puVar8 + lVar1 + 0x250) = 0;
  *(int *)(puVar8 + lVar1 + 0x248) = iVar3;
  *(void **)(puVar8 + lVar1 + 0x240) = _Memory;
  *(undefined8 *)(puVar8 + lVar1 + 0x218) = 0x18093e242;
  iVar5 = WideCharToMultiByte(0xfde9,0,unaff_R15,iVar5,*(LPSTR *)(puVar8 + lVar1 + 0x240),
                              *(int *)(puVar8 + lVar1 + 0x248),*(LPCSTR *)(puVar8 + lVar1 + 0x250),
                              *(LPBOOL *)(puVar8 + lVar1 + 600));
  *(undefined1 *)((longlong)iVar5 + (longlong)_Memory) = 0;
  *(undefined8 *)(puVar13 + 0x10) = 0;
  *(undefined8 *)(puVar13 + 0x18) = 0xf;
  *puVar13 = 0;
  do {
    lVar9 = lVar9 + 1;
  } while (*(char *)((longlong)_Memory + lVar9) != '\0');
  *(undefined8 *)(puVar8 + lVar1 + 0x218) = 0x18093e277;
  FUN_1805a6cb0(puVar13,_Memory,lVar9);
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar8 + lVar1 + 0x218) = &UNK_18093e280;
  free(_Memory);
}



############ FUN_ 180603ca0 size=2789 ############

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

void FUN_180603ca0(void)

{
  undefined8 uVar1;
  undefined1 *puVar2;
  ulonglong uVar3;
  undefined8 uVar4;
  uint uVar5;
  int iVar6;
  uint *puVar7;
  uint uVar8;
  uint uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong lVar12;
  undefined1 *puVar13;
  undefined1 *puVar14;
  uint uVar15;
  uint uVar16;
  longlong lVar17;
  ulonglong uVar18;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint local_res8 [2];
  undefined8 local_res10;
  undefined8 local_res18;
  code *local_res20;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  
  puVar13 = auStack_68;
  if (((ulonglong)&stack0x00000000 & 0xec0) == 0) {
    uVar5 = (uint)&stack0x00000000 & 0x1ff;
    iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
    uVar5 = 0xb377 - (((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e);
  }
  else {
    uVar5 = 0xb377;
  }
  uVar18 = (ulonglong)(uVar5 ^ 0xba17);
  uVar4 = 0x300;
  local_res18 = 0x100;
  local_48 = 0x18146c460;
  local_res10 = 0x18146c560;
  uVar8 = uRam000000018146c464 ^ uRam000000018146c460 >> 0x1c ^ (uRam000000018146c460 ^ 0xc10) << 4;
  uVar8 = uRam000000018146c468 ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = uRam000000018146c46c ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = uRam000000018146c470 ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = uRam000000018146c474 ^ uVar8 >> 0x1c ^ uVar8 << 4;
  iVar6 = (uVar8 & 0x42ff) * (uVar8 & 0x42ff) + 1;
  iVar6 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924;
  uVar11 = (0L >> ((byte)((iVar6 >> 0x1d) + -7 >> 0x1f) & (byte)(iVar6 >> 0x1d) & 0x1f) | 0x48feU) ^
           0x48de;
  uVar8 = *(uint *)(uVar11 + 0x18146c458) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(uVar11 + 0x18146c45c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(uVar11 + 0x18146c460) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(uVar11 + 0x18146c464) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(uVar11 + 0x18146c468) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar9 = *(uint *)(uVar11 + 0x18146c46c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = (int)uVar11 + 0x10U & 0x1f | 0x14;
  uVar16 = *(uint *)(uVar11 + 0x18146c470) ^ uVar9 >> 0x1c ^ uVar9 << 4;
  uVar15 = uVar8 * uVar8 * 0xfbb7 ^ 0x19b52e87;
  uVar8 = (int)uVar11 + 0x10U & 0x2cff;
  uVar9 = -1 >> ((byte)uVar16 & 0x1f);
  lVar12 = (uVar11 - 0x16c) +
           (0x11faL >>
            ((char)((byte)(-(((uVar8 + 1) * uVar8 + 7) % 0x51) >> 0x18) ^
                   ((byte)(-uVar15 >> 0x18) | (byte)(uVar15 >> 0x18))) >> 7 & 0x3fU) ^
           ((longlong)(((int)(-uVar9 | uVar9) >> 0x1f) * -0x1078) | 0x107aU));
  uVar8 = *(uint *)(lVar12 + 0x18146c460) ^ uVar16 >> 0x1c ^ uVar16 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c464) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c468) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c46c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c470) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c474) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c478) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c47c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c480) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c484) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c488) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c48c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c490) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c494) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c498) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c49c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4a0) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4a4) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(FUN_18146c4a8 + lVar12) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4ac) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar15 = *(uint *)(lVar12 + 0x18146c4b0) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar9 = uVar15 & 0x37f;
  uVar8 = uVar15 & 0x3f | 0xc;
  iVar6 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  uVar11 = (ulonglong)(uVar15 << 4);
  lVar12 = lVar12 + -0x3ac +
           (0x7ca7L >>
            ((char)iVar6 +
             ((char)(iVar6 / 3) + (char)(iVar6 >> 0x1f) +
             (char)(((longlong)iVar6 / 3 + ((longlong)iVar6 >> 0x3f) & 0xffffffffU) >> 0x1f)) * -3 +
             (uVar8 * uVar8 * 0xc7bd == 0x25cde70) & 0x3fU) ^ 0x78a7U);
  uVar8 = *(uint *)(lVar12 + 0x18146c460) ^ uVar15 >> 0x1c ^ uVar15 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c464) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c468) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c46c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c470) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c474) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c478) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c47c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  FUN_1806048c0();
  do {
    puVar7 = local_res8;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001806042ba(puVar7,local_res8);
    uVar1 = rdtsc();
    *puVar7 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_res8[0] = (local_res8[0] * -0x51ca4602 >> 0x18 ^ local_res8[0] * -0x51ca4602) * 0x5bd1ae35;
  if (local_res8[0] < 0x329161f) {
    do {
      local_res20 = FUN_18141db20;
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar3 = FUN_18141db20(0,0xeb55);
    if (1 < uVar3) {
      lVar17 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar17 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar17 = *(longlong *)register0x00000020;
      }
    }
  }
  uVar8 = *(uint *)(lVar12 + 0x18146c480) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c484) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c488) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c48c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c490) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c494) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c498) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c49c) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4a0) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4a4) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(FUN_18146c4a8 + lVar12) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4ac) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4b0) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4b4) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4b8) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4bc) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4c0) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = *(uint *)(lVar12 + 0x18146c4c4) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar9 = *(uint *)(&DAT_18146c4c8 + lVar12) ^ uVar8 >> 0x1c ^ uVar8 << 4;
  uVar8 = uVar9 << 4;
  uVar3 = (ulonglong)uVar8;
  uVar8 = *(uint *)(lVar12 + 0x18146c4cc) ^ uVar9 >> 0x1c ^ uVar8;
  uVar8 = uVar8 >> 0x1c ^ uVar8 << 4 ^ *(uint *)(lVar12 + 0x18146c4d0);
  uVar9 = uVar8 << 4;
  uVar10 = (ulonglong)uVar9;
  local_res10 = 0x377191fb6dfd8760;
  local_res8[0] = 0x6dfd8760;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar8 = ~((*(uint *)(lVar12 + 0x18146c4d4) ^ uVar8 >> 0x1c ^ uVar9) + 0xb0551763);
  uVar8 = ((uVar8 ^ 0xd1b50b04) >> 2 | uVar8 << 0x1e) + 0x931bf06f;
  do {
    lVar12 = uVar11 + uVar10;
    lVar17 = uVar10 - lVar12;
    uVar11 = -lVar17;
    uVar10 = lVar12 + lVar17;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  if ((uVar8 >> 0x1c | uVar8 * 0x10) == 0x6dfd8760) {
    puVar2 = puVar13;
    do {
      puVar14 = puVar2;
      *(undefined8 *)(puVar14 + -8) = 0x18060479f;
      lVar12 = 0x300;
      func_0x000180604e12();
      *(undefined8 *)(puVar14 + -8) = uVar4;
      *(ulonglong *)(puVar14 + -0x10) = uVar3;
      *(ulonglong *)(puVar14 + -0x18) = uVar18;
      lVar12 = -lVar12;
      uVar18 = *(ulonglong *)(puVar14 + lVar12 + 0x2e8);
      uVar3 = *(ulonglong *)(puVar14 + lVar12 + 0x2f0);
      uVar4 = *(undefined8 *)(puVar14 + lVar12 + 0x2f8);
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
      puVar2 = puVar14 + lVar12 + 0x300;
    } while (uVar5 != 0);
    *(undefined8 *)(puVar14 + lVar12 + 0x2f8) = 0x18060485b;
    uVar4 = FUN_180609880();
    FUN_180603bc0(uVar4);
    return;
  }
  thunk_FUN_1805a9280((longlong)(int)(uVar5 ^ 0xba17),uVar10);
  return;
}



############ FUN_ 181483f8b size=3309 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000181484a3e) */
/* WARNING: Removing unreachable block (ram,0x000181484cfa) */

void FUN_181483f8b(uint *param_1,uint param_2)

{
  int *piVar1;
  undefined8 uVar2;
  undefined1 *puVar3;
  uint in_EAX;
  undefined4 uVar4;
  ulonglong uVar5;
  uint uVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  longlong lVar10;
  int iVar11;
  longlong *plVar12;
  int unaff_EBX;
  uint uVar13;
  undefined4 *puVar14;
  undefined4 *puVar15;
  longlong lVar16;
  undefined1 *puVar17;
  undefined4 *unaff_RBP;
  longlong *plVar18;
  uint uVar19;
  longlong lVar20;
  uint uVar21;
  uint uVar22;
  longlong *plVar23;
  uint uVar24;
  int iVar25;
  int *unaff_R12;
  longlong unaff_R14;
  uint uVar26;
  ulonglong unaff_R15;
  undefined4 *puVar27;
  undefined1 auStackX_8 [32];
  uint in_stack_00000030;
  int iStack0000000000000038;
  undefined4 uStack000000000000003c;
  undefined4 in_stack_00000040;
  uint uStack0000000000000044;
  int in_stack_00000048;
  uint uStack0000000000000054;
  uint uStack0000000000000058;
  uint uStack000000000000005c;
  uint in_stack_00000060;
  int in_stack_00000068;
  undefined8 in_stack_00000070;
  uint uStack000000000000007c;
  int in_stack_00000080;
  
  *param_1 = (in_EAX ^ param_2) & 0x59127ed;
  uVar6 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar6 < 0) {
    uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
  }
  if (uVar6 != 0) {
    uVar2 = rdtsc();
    uStack000000000000007c = (int)uVar2 + (int)((ulonglong)uVar2 >> 0x20);
    uVar5 = (ulonglong)uStack000000000000007c +
            (ulonglong)(uStack000000000000007c >> 0xb) + 0x317a5f11;
    uVar5 = uVar5 >> 0xb | uVar5 << 0x35;
    uVar5 = uVar5 + (uVar5 * 0x600 | uVar5 * 3 >> 0x37) + 0x59afbb15;
    uVar5 = ((uVar5 * 0x2000 | uVar5 >> 0x33) - 0x4120587c) + uVar5 * 2;
    FUN_181483f8b(-(((ulonglong)&stack0x00000030 ^ 0xffffffffffffffff) + 1),
                  (uVar5 + (uVar5 * 0x1000 | uVar5 >> 0x34) >> 10) - 0x34dbd3d2);
    return;
  }
  *(int *)(unaff_R14 + 8) = *(int *)(unaff_R14 + 8) + (in_stack_00000030 ^ 0x9710f7a);
  *(int *)(unaff_R14 + 4) = *(int *)(unaff_R14 + 4) + (in_stack_00000030 ^ 0xe1066603);
  uVar5 = (ulonglong)
          ((uint)((*(ulonglong *)(unaff_R14 + 4) >> 0x15 ^ *(ulonglong *)(unaff_R14 + 4)) >> 1) &
          0x1fffff);
  uVar5 = (uVar5 << 0x15 | uVar5) * 2 ^ *(ulonglong *)(unaff_R14 + 4);
  uVar5 = (uVar5 << 0x10 | *(ulonglong *)(unaff_R14 + 4) >> 0x30) & 0xa963569ca963569c |
          (uVar5 >> 0x10 | uVar5 << 0x30) & 0x569ca963569ca963;
  uVar7 = uVar5 >> 0x3b | uVar5 << 5;
  uVar5 = ((uVar7 << 8 | (uVar5 & 0x7ffffffffffffff) >> 0x33) & 0x8679867986798679 |
          ((uVar5 & 0x7ffffffffffffff) >> 3 | uVar7 << 0x38) & 0x7986798679867986) ^
          0xf6bc17d56baeb45c;
  uVar5 = uVar5 << 0xb | uVar5 >> 0x35;
  uVar5 = (uVar5 >> 2 & 0x3333333333333333 | (uVar5 & 0x3333333333333333) << 2) + 0x7897527d138bafc9
  ;
  uVar6 = (uint)((uVar5 >> 0x14 ^ uVar5) >> 0x19) & 0xfff;
  uVar5 = ((ulonglong)uVar6 << 0x14 | (ulonglong)uVar6) << 0x19 ^ uVar5;
  *(ulonglong *)(unaff_R14 + 4) = uVar5;
  plVar18 = (longlong *)((unaff_R15 ^ 0x55d986ec) + 4);
  *plVar18 = *plVar18 + (uVar5 >> 1 & 0xa066a801);
  in_stack_00000030 = (uint)(*(ulonglong *)(unaff_R14 + 4) >> 0x15) & 0x7fffffff;
  uStack0000000000000044 = (uint)((ulonglong)*(undefined8 *)(unaff_R14 + 4) >> 0x10) ^ 0x72f7b528;
  uVar5 = *(ulonglong *)(unaff_R14 + 4) ^ 0x27fa0ced34425d9a;
  unaff_RBP[-0x19] = uStack0000000000000044;
  unaff_RBP[-0x18] = (int)uVar5;
  unaff_RBP[-0x16] = 0xd6ce4703;
  unaff_RBP[-0x15] = 0xa54145;
  iVar11 = (int)(uVar5 >> 0x20);
  uVar6 = iVar11 + 0xfa8073e1;
  uVar21 = uVar6 ^ unaff_EBX + 0x62bfbbdU;
  uVar19 = ~(unaff_RBP[-0x18] + 0x7e45d4e7);
  uVar5 = (ulonglong)uVar19;
  uVar22 = ~(uVar21 & 0x74363136 ^ uVar6);
  uVar24 = ~(uVar21 & 0x8bc9cec9 ^ uVar6);
  uVar13 = ~(unaff_RBP[-0x19] ^ 0x860084d7);
  uVar21 = (uVar22 >> 0x10 ^ uVar22) >> 1 & 0x7fff;
  uVar6 = (uVar19 >> 8 ^ uVar19) >> 6 & 7;
  uVar26 = ((uVar21 << 0x10 | uVar21) * 2 ^ uVar22) + 0xd72ec56e;
  uVar21 = (uVar24 >> 0xe ^ uVar24) >> 2 & 0x1fff;
  uVar22 = (uVar13 >> 0x13 ^ uVar13) >> 4 & 3;
  uVar6 = (uVar6 << 8 | uVar6) << 6 ^ uVar19 ^ 0xa4daaba5;
  uVar19 = uVar6 >> 0x13 | uVar6 << 0xd;
  uVar6 = ((uVar21 << 0xe | uVar21) << 2 ^ uVar24) + 0xb13e8770;
  uVar21 = (uVar22 << 0x13 | uVar22) << 4 ^ uVar13 ^ 0xd8b18c67;
  iVar25 = (uVar21 >> 10 | uVar21 << 0x16) + 0xd9158d31;
  unaff_RBP[-0x19] = iVar25;
  uVar21 = (uVar26 >> 0x14 | uVar26 * 0x1000) ^ uVar19;
  uVar13 = (uVar6 >> 0x10 | uVar6 * 0x10000) ^ 0xf6ce2a6f;
  unaff_RBP[-0x1a] = uVar13;
  uVar6 = uVar21 & 0xfbebf0ee ^ uVar19 ^ 0x38262af0;
  in_stack_00000048 = (uVar21 & 0x4140f11 ^ uVar19) + 0xa2ddb101;
  unaff_RBP[-0x17] = in_stack_00000048;
  unaff_RBP[-0x18] = uVar6;
  uVar21 = 0x8f7d1b57;
  lVar16 = *(longlong *)(unaff_RBP + -0x20);
  in_stack_00000068 = 0x1b873593;
  _iStack0000000000000038 = CONCAT44(iVar11,0x1af3eb21) ^ 0xd66dc670;
  *(undefined8 *)(unaff_RBP + -0x1c) = in_stack_00000070;
  do {
    uVar19 = (unaff_RBP[0x1a] + 1) * unaff_RBP[0x1a] & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  plVar18 = *(longlong **)(unaff_RBP + -0x1e);
  do {
    uVar2 = rdtsc();
    uStack000000000000007c = (uint)uVar2 ^ (uint)((ulonglong)uVar2 >> 0x20);
    uVar7 = (ulonglong)uStack000000000000007c ^
            (ulonglong)(uStack000000000000007c >> 6) + 0x72c155e8;
    lVar10 = (uVar7 >> 0xf) + 0x6232fffd + uVar7 * 4;
    uVar7 = lVar10 * -0x7ffc000 | (ulonglong)(lVar10 * -0x1fff) >> 0x32;
    uVar7 = uVar7 ^ uVar7 >> 5;
    uVar19 = (unaff_RBP[0x1a] + 1) * unaff_RBP[0x1a] & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  iVar11 = -0x53166325;
  uStack0000000000000054 = ((uint)(uVar7 << 6) | (uint)(uVar7 >> 0x3a)) >> 1 ^ in_stack_00000030;
  if (uStack0000000000000054 < 0x28f5c2b) {
    unaff_RBP[-8] = uVar13;
    piVar1 = unaff_RBP + 0x1a;
    unaff_RBP[-5] = in_stack_00000048;
    unaff_RBP[-7] = iVar25;
    unaff_RBP[-6] = uVar6;
    do {
      puVar9 = (undefined8 *)(unaff_RBP + -0xe);
      puVar8 = (undefined8 *)&stack0x00000058;
                    /* WARNING: Call to offcut address within same function */
      func_0x000181484306();
      *(undefined4 *)puVar8 = 0xa18ec06e;
      *puVar9 = 0x1814844b3;
      FUN_181485ca6();
      uVar19 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar19 < 0) {
        uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar19 != 0);
    uVar19 = (~uStack0000000000000058 << 0x1d | ~uStack0000000000000058 >> 3) + 0x429a40af;
    uVar19 = (uVar19 >> 0x1a | uVar19 * 0x40) + 0xd5e1b92d;
    uStack0000000000000058 = uVar19 >> 0x1b | uVar19 * 0x20;
    (*(code *)((longlong)(int)uStack0000000000000058 + *(longlong *)(unaff_RBP + -0xe)))
              (unaff_RBP + -8,unaff_RBP + 4);
    do {
      uVar19 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar19 < 0) {
        uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar19 != 0);
    iVar25 = 7;
    uVar19 = unaff_RBP[0xc];
    uVar13 = unaff_RBP[0xd];
    in_stack_00000040 = 0x1f7b9964;
    do {
      uVar24 = (uVar13 ^ uVar19) & 0x4a24b48 ^ uVar13;
      uVar13 = (uVar13 ^ uVar19) & 0xfb5db4b7 ^ uVar13;
      uVar19 = (uVar24 >> 4 ^ uVar24) >> 0x12 & 7;
      uVar22 = (uVar13 >> 0xb ^ uVar13) >> 5 & 0x7ff;
      uVar13 = (uVar22 << 0xb | uVar22) << 5 ^ uVar13;
      uVar19 = uVar13 ^ (uVar19 << 4 | uVar19) << 0x12 ^ uVar24;
      uVar22 = (uVar13 ^ uVar19 & 0x10492ef4) + 0x47bf4e2c;
      uVar24 = (uVar19 & 0xefb6d10b ^ uVar13) + 0xb1b2ab94;
      uVar13 = uVar22 * 0x4000 | uVar22 >> 0x12;
      uVar26 = uVar24 >> 0xe | uVar24 * 0x40000;
      uVar19 = (uVar13 >> 7 ^ uVar13) >> 10 & 0x7f;
      uVar13 = uVar13 ^ (uVar19 << 7 | uVar19) << 10;
      uVar19 = (uVar26 >> 0x10 ^ uVar26) >> 3 & 0x1ff;
      uVar26 = uVar26 ^ (uVar19 << 0x10 | uVar19) << 3;
      uVar19 = (uVar13 << 4 | (uVar22 & 0x3ffff) >> 0xe) & 0xe1e1e1e1 |
               (uVar13 >> 4 | (uVar22 >> 0x12) << 0x1c) & 0x1e1e1e1e;
      uVar13 = (uVar19 >> 10 ^ uVar19) >> 0xb & 0x1ff;
      uVar22 = (uVar26 << 4 | (uVar24 & 0x3fff) >> 10) & 0xb4b4b4b4 |
               (uVar26 >> 4 | uVar26 << 0x1c) & 0x4b4b4b4b;
      uVar19 = uVar19 ^ (uVar13 << 10 | uVar13) << 0xb;
      uVar13 = (uVar22 >> 0xf ^ uVar22) & 0x7fff;
      uVar22 = uVar22 ^ (uVar13 << 0xf | uVar13) ^ uVar19;
      uVar13 = uVar22 & 0x360fa154 ^ uVar19;
      uVar19 = uVar22 & 0xc9f05eab ^ uVar19;
      iVar25 = iVar25 + -1;
    } while (-1 < iVar25);
    uVar5 = (ulonglong)~uVar19;
    uVar19 = ~(~uVar19 + 0x59d0a5f4);
    uVar19 = ~((uVar19 >> 0x16 | uVar19 << 10) + 0xdf67aac3);
    uVar19 = (uVar19 << 0x18 | uVar19 >> 8) ^ 0x694b0da8;
    if (((uVar19 >> 8 | uVar19 << 0x18) ^ 0x1f7b9964) + uVar13 != uStack0000000000000044) {
      do {
        puVar9 = (undefined8 *)(unaff_RBP + -0xc);
        FUN_1814852fd();
        *puVar9 = FUN_180bc2900;
        uVar19 = (*piVar1 + 1) * *piVar1 & 0x80000001;
        if ((int)uVar19 < 0) {
          uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar19 != 0);
      (**(code **)(unaff_RBP + -0xc))();
      do {
        FUN_181483342();
        uVar19 = (*piVar1 + 1) * *piVar1 & 0x80000001;
        if ((int)uVar19 < 0) {
          uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar19 != 0);
    }
  }
  puVar27 = unaff_RBP + 0x1a;
  lVar10 = *(longlong *)(unaff_RBP + -0x1c);
  *(undefined8 *)(unaff_RBP + -0x1e) = 0xc6a3a51663e5f856;
  puVar14 = (undefined4 *)(lVar16 + -4);
  in_stack_00000048 = (int)*(undefined8 *)(unaff_RBP + -0x1e);
  uVar19 = 0x8f7d1b57;
  if ((undefined4 *)(lVar10 + -4) == puVar14) {
LAB_181484ac0:
    in_stack_00000060 = uVar19;
    uVar7 = (ulonglong)uVar6;
    _iStack0000000000000038 = CONCAT44(uStack000000000000003c,iVar11);
    piVar1 = unaff_RBP + 0x1a;
    do {
      puVar14 = &stack0x00000060;
      uVar4 = FUN_18141e8b8();
      *puVar14 = uVar4;
      uVar6 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar21 = in_stack_00000060 + 0x4f57cf6a;
    uVar6 = (uVar21 >> 7 ^ uVar21) >> 4 & 7;
    uVar21 = ~((uVar6 << 7 | uVar6) << 4 ^ uVar21);
    uVar6 = (uVar21 >> 9 ^ uVar21) >> 0xc & 0x1f;
    do {
      FUN_181482cf6(0xe908);
      uVar19 = (*piVar1 + 1) * *piVar1 & 0x80000001;
      if ((int)uVar19 < 0) {
        uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar19 != 0);
    if (((uVar6 << 9 | uVar6) << 0xc ^ uVar21) + 0x9ffb974c != in_stack_00000048) {
      lVar16 = (longlong)in_stack_00000080;
      puVar3 = auStackX_8;
      do {
        puVar17 = puVar3;
        *(undefined8 *)(puVar17 + -8) = 0x181484be8;
        lVar10 = lVar16;
        FUN_181486353();
        *(ulonglong *)(puVar17 + -8) = uVar5;
        *(ulonglong *)(puVar17 + -0x10) = uVar7;
        *(undefined4 **)(puVar17 + -0x18) = puVar27;
        lVar10 = -lVar10;
        puVar27 = *(undefined4 **)(puVar17 + lVar10 + 0x1f8);
        uVar7 = *(ulonglong *)(puVar17 + lVar10 + 0x200);
        uVar5 = *(ulonglong *)(puVar17 + lVar10 + 0x208);
        uVar6 = (*piVar1 + 1) * *piVar1 & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
        puVar3 = puVar17 + lVar10 + 0x210;
      } while (uVar6 != 0);
      *(undefined1 *)(*(longlong *)(unaff_RBP + -10) + 0xd8) = 1;
      *(undefined **)(puVar17 + lVar10 + 0x208) = &UNK_181484dee;
    }
    thunk_FUN_1805a9280();
    return;
  }
LAB_181484804:
  puVar15 = puVar14 + 1;
  do {
    FUN_1814855a7();
    FUN_181483396();
    FUN_181483f8a();
    uVar6 = (unaff_RBP[0x1a] + 1) * unaff_RBP[0x1a] & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  puVar27 = puVar15;
  if ((plVar18 != (longlong *)0x0) && (lVar16 = *plVar18, -1 < lVar16)) {
    *(undefined8 *)(unaff_RBP + -0x1c) = 0x2621fc0;
    lVar20 = (longlong)&DAT_182621fc0 + -*(longlong *)(unaff_RBP + -0x1c);
    do {
      if (puVar15 < (undefined4 *)(-*(longlong *)(unaff_RBP + -0x1c) + 0x182621fc8 + lVar16)) {
        if (-1 < lVar16) {
          plVar12 = (longlong *)(lVar20 + lVar16);
          if (plVar12 < puVar14 + 2) {
            *unaff_RBP = *puVar15;
            plVar23 = plVar18;
            goto LAB_1814848d0;
          }
        }
        break;
      }
      lVar16 = plVar18[1];
      plVar18 = plVar18 + 1;
    } while (-1 < lVar16);
  }
  goto LAB_1814848ef;
  while (plVar12 = (longlong *)(lVar20 + lVar16), plVar12 < puVar14 + 2) {
LAB_1814848d0:
    plVar23 = plVar23 + 1;
    *(longlong *)((longlong)unaff_RBP + lVar16 + (lVar20 - (longlong)puVar15)) = *plVar12 - lVar20;
    lVar16 = *plVar23;
    puVar27 = unaff_RBP;
    if (lVar16 < 0) break;
  }
LAB_1814848ef:
  uVar6 = iVar11 + uVar21;
  do {
    puVar14 = (undefined4 *)((longlong)&stack0x00000058 + 4);
    uVar4 = FUN_181486199(0xe908);
    *puVar14 = uVar4;
    uVar19 = (unaff_RBP[0x1a] + 1) * unaff_RBP[0x1a] & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  uVar19 = uVar21 & 0x1ff;
  iVar11 = (uVar19 + 2) * (uVar19 + 1) * uVar19;
  puVar14 = puVar15;
  if ((((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 & 0xc0000000U) != 0) {
    iVar11 = (uVar19 + 2) * (uVar19 + 1) * uVar19;
    do {
      puVar14 = puVar14 + 1;
      uVar6 = uVar6 * (uVar6 >> 3);
    } while (((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e != 0);
  }
  while( true ) {
    if ((uVar21 & 0x200) == 0) {
      uVar19 = (uint)puVar14 & 0x37f;
      iVar11 = (uVar19 + 2) * (uVar19 + 1) * uVar19;
      uVar19 = iVar11 + (iVar11 / 3 + (iVar11 >> 0x1f) +
                        (int)(((longlong)iVar11 / 3 + ((longlong)iVar11 >> 0x3f) & 0xffffffffU) >>
                             0x1f)) * -3;
    }
    else {
      uVar19 = (uint)puVar14 & 0x4f;
      uVar19 = (uVar19 + 1) * (uVar19 + 1) * uVar19 * uVar19 & 0x80000003;
    }
    if ((uVar21 & uVar19) == 0) break;
    uVar6 = uVar6 * uVar6 * 0x800;
    puVar14 = puVar14 + 1;
  }
  uStack000000000000005c =
       (uStack000000000000005c * iStack0000000000000038 * 0x8000 |
       uStack000000000000005c * iStack0000000000000038 >> 0x11) * in_stack_00000068;
  uVar5 = (ulonglong)uStack000000000000005c;
  uVar21 = (uVar21 ^ uStack000000000000005c) << 0xd | (uVar21 ^ uStack000000000000005c) >> 0x13;
  if ((uVar6 & 7) != 0) {
    uVar6 = uVar6 ^ uVar6 >> 3;
  }
  iVar11 = uVar6 * uVar21;
  uVar21 = uVar21 * 5 + 0xe6546b64;
  uVar19 = uVar21;
  uVar6 = 0xe6546b64;
  if ((undefined4 *)(lVar10 + -4) == puVar14) goto LAB_181484ac0;
  goto LAB_181484804;
}



############ FUN_ 1807731c7 size=2165 ############

/* WARNING: Instruction at (ram,0x000180773898) overlaps instruction at (ram,0x000180773896)
    */
/* WARNING: Removing unreachable block (ram,0x0001807738ab) */
/* WARNING: Removing unreachable block (ram,0x0001807736b5) */
/* WARNING: Removing unreachable block (ram,0x0001807735be) */
/* WARNING: Removing unreachable block (ram,0x000180773893) */
/* WARNING: Removing unreachable block (ram,0x0001807739b5) */
/* WARNING: Removing unreachable block (ram,0x000180773a63) */

void FUN_1807731c7(void)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  int unaff_EBX;
  int iVar4;
  uint unaff_EBP;
  int unaff_ESI;
  longlong unaff_RDI;
  longlong lVar5;
  uint uVar6;
  ulonglong uVar7;
  int *unaff_R12;
  uint uVar8;
  ulonglong uVar9;
  longlong *unaff_R14;
  longlong unaff_R15;
  bool bVar10;
  uint in_stack_00000028;
  int in_stack_00000088;
  int in_stack_00000090;
  longlong *in_stack_000000a8;
  
  FUN_1807714fc();
  uVar1 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar1 < 0) {
    uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
  }
  if (uVar1 != 0) {
    FUN_1807731c7(0x442c);
    return;
  }
  *(undefined4 *)((longlong)unaff_R14 + 0x3dc) = 0xffffffff;
  uVar1 = (*(int *)(unaff_R15 + 8 + unaff_RDI) + unaff_EBX) * unaff_ESI;
  iVar4 = *(int *)(unaff_R15 + 0xc + unaff_RDI);
  *(undefined1 *)((longlong)unaff_R14 + 999) = 0;
  *(undefined2 *)((longlong)unaff_R14 + 0x3e5) = 1;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + iVar4) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x10 + unaff_RDI)) * unaff_ESI;
  *(undefined1 *)(unaff_R14 + 0x7d) = 0;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x14 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x18 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x1c + unaff_RDI)) * unaff_ESI;
  do {
    uVar2 = (in_stack_00000088 + 1) * in_stack_00000088 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  *(undefined1 *)(unaff_R14 + 0x7e) = 0;
  uVar1 = (*(int *)(unaff_R15 + 0x20 + unaff_RDI) + (uVar1 ^ uVar1 >> 0x10)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x24 + unaff_RDI)) * unaff_ESI;
  *(undefined1 *)((longlong)unaff_R14 + 0x3f1) = 0;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x28 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x2c + unaff_RDI)) * unaff_ESI;
  if (unaff_EBP == 0) {
    *(undefined4 *)((longlong)unaff_R14 + 0x3c4) = 0x2a9f3eff;
  }
  else {
    *(uint *)((longlong)unaff_R14 + 0x3c4) = unaff_EBP | 0xf;
  }
  if ((in_stack_000000a8 == (longlong *)0x0) || (in_stack_000000a8[1] == *in_stack_000000a8)) {
    FUN_18077e390(*(undefined4 *)((longlong)unaff_R14 + 0x3c4),unaff_R14 + 0x7f);
  }
  else if (unaff_R14 + 0x7f != in_stack_000000a8) {
    FUN_1805e1990(unaff_R14 + 0x7f);
  }
  if (unaff_R14 + 0x82 != unaff_R14 + 0x7f) {
    FUN_1805e1990(unaff_R14 + 0x82,unaff_R14[0x7f]);
  }
  uVar1 = (*(int *)(unaff_R15 + 0x30 + unaff_RDI) + (uVar1 ^ uVar1 >> 0x10)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x34 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x38 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x3c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x40 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x44 + unaff_RDI)) * unaff_ESI;
  FUN_18077ae60(unaff_R14 + 3);
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x48 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x4c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x50 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x54 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x58 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x5c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x60 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 100 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x68 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x6c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x70 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x74 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x78 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x7c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x80 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x84 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x88 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x8c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x90 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x94 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x98 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x9c + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xa0 + unaff_RDI)) * unaff_ESI;
  do {
    uVar2 = (in_stack_00000088 + 1) * in_stack_00000088 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (*(int *)(unaff_R15 + 0xa4 + unaff_RDI) + (uVar1 ^ uVar1 >> 0x10)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xa8 + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xac + unaff_RDI)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xb0 + unaff_RDI)) * unaff_ESI;
  lVar5 = unaff_RDI + 0xb8;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xb4 + unaff_RDI)) * unaff_ESI;
  uVar2 = (uint)lVar5 & 0x3f;
  uVar6 = (uint)lVar5 & 0x2fff;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + lVar5)) * unaff_ESI;
  uVar8 = in_stack_00000028 & 0x3f | 0x66;
  uVar8 = uVar8 * uVar8;
  uVar9 = (ulonglong)uVar8;
  lVar5 = lVar5 + (0xc4 - ((longlong)
                           (int)((((uVar2 + 2) * (uVar2 + 1) * uVar2) % 3 ^
                                 (uVar6 + 1) * uVar6 & 0x80000001) + 0xef14) ^ 0xefd4U));
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 4 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 8 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xc + lVar5)) * unaff_ESI;
  uVar2 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + lVar5 + 0x10)) * unaff_ESI;
  uVar2 = uVar2 ^ uVar2 >> 0x10;
  uVar1 = uVar2 & 0xf | 0x28;
  bVar10 = uVar8 * 0x1ea1 == uVar1 * uVar1 * 0xccd1;
  uVar7 = (ulonglong)bVar10;
  uVar1 = (((uVar2 & 0x28ff) + 1) * (uVar2 & 0x28ff) + 7) % 0x51 - (uint)bVar10;
  lVar5 = (((longlong)(((int)(-uVar1 | uVar1) >> 0x1f) * -0x90a) ^ 0x88aU) - 0x17c) + lVar5 + 0x10;
  uVar1 = (*(int *)(unaff_R15 + lVar5) + uVar2) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 4 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 8 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0xc + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x10 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x14 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x18 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x1c + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x20 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x24 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x28 + lVar5)) * unaff_ESI;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + *(int *)(unaff_R15 + 0x2c + lVar5)) * unaff_ESI;
  do {
    uVar7 = -((uVar7 ^ 0xffffffffffffffff) + 1);
    uVar2 = (in_stack_00000088 + 1) * in_stack_00000088 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  iVar4 = (uVar1 ^ uVar1 >> 0x10) + 0x1f967835;
  do {
    func_0x000180772f6d(0x442c);
    uVar1 = (in_stack_00000088 + 1) * in_stack_00000088 & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = (iVar4 * 2 | (uint)(iVar4 < 0)) ^ 0x13841dd0;
  if (uVar1 != uVar1 >> 1) {
    (**(code **)(*unaff_R14 + 0x220))(unaff_R14);
    FUN_1807731c6();
    thunk_FUN_1805a9280();
    return;
  }
  (**(code **)(*unaff_R14 + 0x220))();
  do {
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x18077395b;
    lVar3 = (longlong)in_stack_00000090;
    FUN_180775908();
    *(ulonglong *)((longlong)register0x00000020 + -8) = uVar9;
    *(ulonglong *)((longlong)register0x00000020 + -0x10) = uVar7;
    *(longlong *)((longlong)register0x00000020 + -0x18) = lVar5;
    lVar3 = -lVar3;
    lVar5 = *(longlong *)((longlong)register0x00000020 + lVar3 + 0xb28);
    uVar7 = *(ulonglong *)((longlong)register0x00000020 + lVar3 + 0xb30);
    uVar9 = *(ulonglong *)((longlong)register0x00000020 + lVar3 + 0xb38);
    register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar3 + 0xb40);
    uVar1 = (in_stack_00000088 + 1) * in_stack_00000088 & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  return;
}



############ FUN_ 1813f30d0 size=3262 ############

/* WARNING: Instruction at (ram,0x0001813f3bf2) overlaps instruction at (ram,0x0001813f3bf0)
    */
/* WARNING: Removing unreachable block (ram,0x0001813f3a33) */
/* WARNING: Removing unreachable block (ram,0x0001813f3a1b) */
/* WARNING: Removing unreachable block (ram,0x0001813f3a27) */
/* WARNING: Removing unreachable block (ram,0x0001813f3a23) */
/* WARNING: Removing unreachable block (ram,0x0001813f3a2a) */
/* WARNING: Removing unreachable block (ram,0x0001813f340c) */
/* WARNING: Removing unreachable block (ram,0x0001813f318c) */
/* WARNING: Removing unreachable block (ram,0x0001813f3395) */
/* WARNING: Removing unreachable block (ram,0x0001813f3507) */
/* WARNING: Removing unreachable block (ram,0x0001813f3cc2) */
/* WARNING: Removing unreachable block (ram,0x0001813f336d) */
/* WARNING: Removing unreachable block (ram,0x0001813f3a19) */

longlong * FUN_1813f30d0(undefined8 param_1,longlong *param_2,undefined4 param_3)

{
  char cVar1;
  undefined1 *puVar2;
  undefined4 *puVar3;
  longlong *plVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  ulonglong uVar8;
  undefined1 *puVar9;
  undefined1 *puVar10;
  uint uVar11;
  longlong lVar12;
  uint uVar13;
  undefined8 uVar14;
  uint uVar15;
  undefined8 uVar16;
  longlong lVar17;
  int unaff_retaddr;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  undefined4 *local_70;
  undefined8 local_68;
  longlong *local_60;
  undefined8 local_58;
  
  puVar9 = auStack_98;
  local_58 = 0xfffffffffffffffe;
  local_78 = 0;
  uVar11 = (uint)&stack0x00000000 & 0x37f;
  uVar16 = 0xe50;
  local_68 = 0x100;
  puVar3 = &DAT_181604578;
  uVar5 = (DAT_181604578 + 0x3e803b4d) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_18160457c) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_181604580) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + DAT_181604584) * 0x401;
  uVar5 = uVar5 ^ uVar5 >> 6;
  if ((uVar5 & 0x3000) == 0) {
    uVar15 = ((uVar5 & 0x1aff) * (uVar5 & 0x1aff) + 1) % 7;
  }
  else {
    uVar15 = 1;
  }
  uVar13 = ((uVar5 & 0x19ff) * (uVar5 & 0x19ff) * 0x10 + 4) % 0x13;
  lVar7 = (longlong)(int)(((int)(-uVar15 | uVar15) >> 0x1f) * -0xc52d ^ 0xc5ed) + 0xc +
          ((ulonglong)((int)(-uVar13 | uVar13) >> 0x1f & 0xd511) ^ 0xffffffffffff2a55);
  uVar5 = (*(int *)(lVar7 + 0x181604578) + uVar5) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160457c)) * 0x401;
  uVar8 = lVar7 + 8;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604580)) * 0x401;
  if ((uVar8 & 0xa8) == 0) {
    cVar1 = '\0';
  }
  else {
    cVar1 = (char)uVar8;
  }
  lVar7 = uVar8 + (0xc - (0xb533L >> ((cVar1 + '\x01') * cVar1 & 1U) ^ 0xb53bU));
  uVar5 = (*(int *)(lVar7 + 0x181604578) + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160457c)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604580)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604584)) * 0x401;
  uVar15 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604588)) * 0x401;
  uVar15 = uVar15 ^ uVar15 >> 6;
  uVar5 = uVar15 & 0x7f | 0x7e;
  lVar12 = 0;
  lVar7 = lVar7 + (((longlong)(0x951f << (uVar5 * uVar5 * 0x4333 == 0x148e670)) ^ 0x971fU) - 0x1ec);
  uVar5 = (*(int *)(lVar7 + 0x181604578) + uVar15) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160457c)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604580)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604584)) * 0x401;
  local_70 = puVar3;
  local_60 = param_2;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001813f3bc8(0xcc38);
    plVar4 = local_60;
    lVar17 = (longlong)register0x00000020 + lVar12;
    lVar12 = ~(((lVar12 - lVar17 ^ 0xffffffffffffffffU) + 1) - lVar17) + 1;
    register0x00000020 = (BADSPACEBASE *)(lVar17 - lVar12);
    uVar15 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar5 = (*(int *)(lVar7 + 0x181604588) + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160458c)) * 0x401;
  uVar13 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604590)) * 0x401;
  uVar13 = uVar13 ^ uVar13 >> 6;
  uVar5 = (uint)(lVar7 + 0x18) & 0x11ff;
  uVar15 = (uVar5 * uVar5 * 0x10 + 4) % 0x13;
  uVar5 = uVar13 & 0x7f | 0xd;
  uVar5 = uVar5 * uVar5 * 0x3e11 ^ 0x3158ab4;
  lVar7 = lVar7 + 0x18 +
          (((longlong)(int)((-uVar5 | uVar5) ^ (-uVar15 | uVar15)) >> 0x1f | 0x3edbU) ^ 0x3e5b);
  uVar5 = (*(int *)(&DAT_1816044fc + lVar7) + uVar13) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604500 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604504 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604508 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_18160450c + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604510 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604514 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604518 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_18160451c + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604520 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604524 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604528 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_18160452c + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&DAT_181604530 + lVar7)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(&LAB_181604534 + lVar7)) * 0x401;
  uVar15 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604538)) * 0x401;
  uVar15 = uVar15 ^ uVar15 >> 6;
  uVar5 = uVar15 & 0xff;
  iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  uVar14 = 0;
  lVar7 = lVar7 + (0x104 - (0xfe7dL >>
                            ((byte)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) &
                            0x3f) ^ 0xff3dU));
  uVar5 = (*(int *)(lVar7 + 0x181604578) + uVar15) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160457c)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604580)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604584)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604588)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160458c)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604590)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604594)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x181604598)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x18160459c)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045a0)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045a4)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045a8)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar5 = (*(int *)(lVar7 + 0x1816045ac) + (uVar5 ^ uVar5 >> 6)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar5 = (*(int *)(lVar7 + 0x1816045b0) + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045b4)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045b8)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045bc)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045c0)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045c4)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045c8)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045cc)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045d0)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045d4)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045d8)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045dc)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045e0)) * 0x401;
  uVar5 = ((uVar5 >> 6 ^ uVar5) + *(int *)(lVar7 + 0x1816045e4)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar5 = (*(int *)(lVar7 + 0x1816045e8) + (uVar5 ^ uVar5 >> 6)) * 0x401;
  uVar5 = uVar5 >> 6 ^ uVar5;
  uVar15 = (uVar5 >> 0x11 ^ uVar5) >> 5 & 0x3ff;
  uVar5 = uVar5 ^ (uVar15 << 0x11 | uVar15) << 5;
  uVar15 = (uVar5 >> 0x10 | uVar5 << 0x10) & 0xd10f2ef0 |
           (uVar5 << 0x10 | uVar5 >> 0x10) & 0x2ef0d10f;
  uVar5 = ~(~(uVar15 & 0x7574d551) & uVar15);
  if ((char)(((~(~(uVar15 & 0x7574d551) & 0x7574d551) & uVar5) == 0xffffffff) * ':') == '\0') {
    plVar4 = (longlong *)
             thunk_FUN_1805a9280((longlong)
                                 (int)(0x6dda >> ((char)((ulonglong)
                                                         ((longlong)
                                                          (int)((uVar11 + 2) * (uVar11 + 1) * uVar11
                                                               ) * 0x55555556) >> 0x20) * -3 & 0x1fU
                                                 ) ^ 0x61ba),uVar5,uVar15);
    return plVar4;
  }
  puVar2 = puVar9;
  do {
    puVar10 = puVar2;
    *(undefined8 *)(puVar10 + -8) = 0x1813f3dd0;
    lVar7 = 0xe50;
    FUN_1813f417d();
    *(undefined4 **)(puVar10 + -8) = puVar3;
    *(undefined8 *)(puVar10 + -0x10) = uVar14;
    *(undefined8 *)(puVar10 + -0x18) = uVar16;
    lVar7 = -lVar7;
    uVar16 = *(undefined8 *)(puVar10 + lVar7 + 0xe38);
    uVar14 = *(undefined8 *)(puVar10 + lVar7 + 0xe40);
    puVar3 = *(undefined4 **)(puVar10 + lVar7 + 0xe48);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar10 + lVar7 + 0xe50;
  } while (uVar5 != 0);
  lVar12 = **(longlong **)(*(longlong *)(puVar10 + lVar7 + 0xef0) + 0x18);
  *plVar4 = lVar12;
  if (lVar12 != 0) {
    LOCK();
    *(int *)(lVar12 + 8) = *(int *)(lVar12 + 8) + 1;
    UNLOCK();
  }
  *(undefined4 *)(puVar10 + lVar7 + 0xe70) = 4;
  *(undefined8 *)(puVar10 + lVar7 + 0xe48) = 0x1813f3ed6;
  FUN_1812520a0(plVar4,param_3);
  return plVar4;
}



############ FUN_ 180752200 size=3295 ############

/* WARNING: Instruction at (ram,0x000180752a8f) overlaps instruction at (ram,0x000180752a8c)
    */
/* WARNING: Removing unreachable block (ram,0x000180752333) */
/* WARNING: Removing unreachable block (ram,0x00018075226f) */
/* WARNING: Removing unreachable block (ram,0x0001807522e4) */
/* WARNING: Removing unreachable block (ram,0x000180752d3a) */
/* WARNING: Removing unreachable block (ram,0x000180752d3f) */
/* WARNING: Removing unreachable block (ram,0x000180752342) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffff80 : 0x000180752fbe */
/* WARNING: Switch with 1 destination removed at 0x000180752fa8 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180752200(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  uint uVar3;
  ulonglong uVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  longlong lVar8;
  longlong in_R10;
  longlong lVar9;
  ulonglong uVar10;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  uint local_res10 [2];
  undefined *local_res18;
  undefined8 local_res20;
  
  uVar10 = 0;
  local_res20 = 0x100;
  local_res18 = &DAT_181604678;
  uVar3 = (((uint)(DAT_181604578 * 0x401) >> 6 ^ DAT_181604578 * 0x401) + DAT_18160457c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604580) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604584) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604588) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160458c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604590) * 0x401;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_181604594 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604598) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160459c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045a0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045a4) * 0x401;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000180752c5a(0x7504);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_1816045a8 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045ac) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045b0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045b4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045b8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045bc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045c0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045c4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045c8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045cc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045d0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045d4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045d8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045dc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045e0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045e4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045e8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045ec) * 0x401;
  local_res18 = (undefined *)0xdba7b4d8ec467e5d;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045f0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045f4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045f8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1816045fc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604600) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604604) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604608) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160460c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604610) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604614) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604618) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160461c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604620) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604624) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604628) * 0x401;
  do {
    lVar9 = in_R10 + uVar10;
    in_R10 = ~(uVar10 - lVar9) + 1;
    uVar10 = lVar9 - in_R10;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_18160462c + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604630) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604634) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604638) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160463c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604640) * 0x401;
  do {
    puVar7 = local_res10;
    puVar6 = local_res10;
    FUN_180750ec0(puVar6,puVar7);
    uVar2 = rdtsc();
    uVar5 = (uint)((ulonglong)uVar2 >> 0x20);
    lVar9 = CONCAT44((int)((ulonglong)puVar7 >> 0x20),uVar5);
    *puVar6 = (uint)uVar2 ^ uVar5;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  local_res10[0] = (local_res10[0] * -0xae4602 >> 0x18 ^ local_res10[0] * -0xae4602) * -0x3b31e57b;
  if (local_res10[0] < 0x190d4f1) {
    do {
      lVar9 = 0xb18b;
      FUN_180754590();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar4 = FUN_18141db20();
    if (1 < uVar4) {
      uVar4 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (uVar4 != 0xcccccccccccccccc) {
        *(ulonglong *)register0x00000020 = uVar10;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        uVar4 = *(ulonglong *)register0x00000020;
      }
    }
  }
  uVar3 = (DAT_181604644 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604648) * 0x401;
  do {
    uVar4 = 0;
    FUN_1807510d4();
    if ((uVar4 & 0xc2) != 0) {
      param_4 = lVar9;
    }
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_18160464c + (uVar3 ^ uVar3 >> 6)) * 0x401;
  do {
    FUN_180754926(0x7504);
    lVar9 = (uVar10 ^ 0xffffffffffffffff) + 1;
    if (lVar9 == 0 || (longlong)(uVar10 ^ 0xffffffffffffffff) < -1) {
      lVar8 = param_4 + lVar9;
      lVar9 = lVar9 - lVar8;
      param_4 = -lVar9;
      lVar9 = lVar8 + lVar9;
    }
    uVar10 = -lVar9;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_181604650 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604654) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604658) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160465c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604660) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604664) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604668) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18160466c) * 0x401;
  do {
    FUN_180753de0(0x7504);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (DAT_181604670 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181604674) * 0x401;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000180752c5a(0x7504);
    FUN_180754590();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar3 = (uVar3 ^ uVar3 >> 6) + 0x6dc13912;
  uVar5 = (uVar3 >> 1 ^ uVar3) >> 1 & 1;
  uVar5 = (uVar5 * 2 | uVar5) * 2 ^ uVar3 ^ 0x16c79e7b;
  uVar3 = (uVar5 >> 0x10 ^ uVar5) & 0x1fff;
  if ((((uVar3 << 0x10 | uVar3) ^ uVar5 ^ 0x81e4b2) - (int)local_res18 & 0x3ffffff) == 0) {
    if (*(ulonglong *)(param_1 + 0x10) == uVar10) {
      thunk_FUN_1805a9280();
      return;
    }
    plVar1 = (longlong *)**(undefined8 **)(param_1 + 8);
    *(longlong *)plVar1[1] = *plVar1;
    *(longlong *)(*plVar1 + 8) = plVar1[1];
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
                    /* WARNING: Subroutine does not return */
    free(plVar1);
  }
  if (*(ulonglong *)(param_1 + 0x10) == uVar10) {
    do {
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    return;
  }
  plVar1 = (longlong *)**(undefined8 **)(param_1 + 8);
  *(longlong *)plVar1[1] = *plVar1;
  *(longlong *)(*plVar1 + 8) = plVar1[1];
  *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
                    /* WARNING: Subroutine does not return */
  free(plVar1);
}



############ FUN_ 1813f2500 size=2600 ############

/* WARNING: Instruction at (ram,0x0001813f2b35) overlaps instruction at (ram,0x0001813f2b34)
    */
/* WARNING: Removing unreachable block (ram,0x0001813f2bb7) */
/* WARNING: Removing unreachable block (ram,0x0001813f2b24) */
/* WARNING: Removing unreachable block (ram,0x0001813f2768) */
/* WARNING: Removing unreachable block (ram,0x0001813f26b1) */
/* WARNING: Removing unreachable block (ram,0x0001813f2a2c) */
/* WARNING: Removing unreachable block (ram,0x0001813f2b2f) */
/* WARNING: Removing unreachable block (ram,0x0001813f2fb5) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_1813f2500(longlong param_1,undefined8 param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  longlong lVar5;
  undefined8 uVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  uint *puVar11;
  uint uVar12;
  uint *puVar13;
  uint *puVar14;
  int iVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  int unaff_retaddr;
  
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar20 = (uRam0000000181197508 ^
           (_DAT_181197504 ^
           (uRam0000000181197500 ^
           (uRam00000001811974fc ^
           (uRam00000001811974f8 ^
           (uRam00000001811974f4 ^ (uRam00000001811974f0 ^ 0x811c9dc5) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  uVar18 = ((uVar20 & 0x15ff) - 1) * (uVar20 & 0x15ff) - 1 & 1;
  uVar7 = uVar20 & 0x1f | 0x4f;
  lVar10 = ((longlong)(int)(uint)(uVar7 * uVar7 * 0x24df == 0x1a043a5c) ^ 0x14U) -
           ((longlong)(((int)(-uVar18 | uVar18) >> 0x1f) * -0x7b79) ^ 0x7b69U);
  puVar13 = (uint *)(lVar10 + 0x181197520);
  uVar12 = (uint)puVar13;
  uVar7 = uVar12 & 0x17f;
  iVar15 = (uVar7 + 2) * (uVar7 + 1) * uVar7;
  iVar8 = (uVar12 & 0xaff) * (uVar12 & 0xaff) + 1;
  uVar18 = uVar12 & 0x1f | 0xc;
  uVar7 = (iVar8 >> 4) + (iVar8 >> 1) + iVar8 * 0x24924924 >> 0x1d;
  uVar19 = (((iVar15 >> 1) - (iVar15 >> 3)) + iVar15 * 0x55555555 >> 0x1e) -
           ((int)(uVar7 - 7) >> 0x1f & uVar7);
  uVar7 = uVar12 & 0x7f | 0x59;
  lVar5 = (ulonglong)(~((int)(-uVar19 | uVar19) >> 0x1f & 0xffffffbfU) & 0x7f60) -
          ((longlong)(0xb1d2 - (0 >> (uVar7 * uVar7 * 0x139 == uVar18 * uVar18 * 0x5d6d))) ^ 0xb192U
          );
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = (*(uint *)((longlong)puVar13 + lVar5 + 0x2c) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x28) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x24) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x20) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x1c) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x18) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x14) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0x10) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 0xc) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 8) ^
          (*(uint *)((longlong)puVar13 + lVar5 + 4) ^
          (*puVar13 ^
          (*(uint *)(lVar10 + 0x18119751c) ^
          (*(uint *)(lVar10 + 0x181197518) ^
          (*(uint *)(lVar10 + 0x181197514) ^
          (*(uint *)(lVar10 + 0x181197510) ^
          (*(uint *)(lVar10 + 0x18119750c) ^
          (*(uint *)((longlong)&uRam0000000181197508 + lVar10) ^ uVar20) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181;
  puVar13 = (uint *)((longlong)puVar13 + lVar5 + 0x30);
  do {
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar18 != 0);
  lVar5 = 0xd;
  do {
    uVar18 = *puVar13;
    puVar13 = puVar13 + 1;
    uVar7 = (uVar18 ^ uVar7) * 0x1000181;
    lVar5 = lVar5 + -1;
  } while (lVar5 != 0);
  do {
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar18 != 0);
  uVar17 = (*puVar13 ^ uVar7) * 0x1000181;
  uVar7 = uVar17 & 0x7f | 0x43;
  puVar13 = (uint *)((longlong)puVar13 +
                    (0xc - ((0L >> (uVar7 * uVar7 * 0xe831 == 0x3d3d817) | 0xbe3cU) ^ 0xbe34)));
  uVar7 = *puVar13;
  uVar18 = puVar13[1];
  uVar12 = puVar13[2];
  uVar19 = puVar13[3];
  uVar20 = puVar13[4];
  uVar1 = puVar13[5];
  uVar2 = puVar13[6];
  uVar3 = puVar13[7];
  uVar4 = puVar13[8];
  do {
    FUN_1813f2179(0xd11c);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  puVar14 = puVar13 + 0x11;
  uVar16 = (uint)puVar14 & 0x9ff;
  uVar9 = (uint)puVar14 & 0x52ff;
  iVar8 = uVar9 * uVar9 + 1;
  uVar16 = (uVar16 * uVar16 * 0x10 + 4) % 0x13;
  uVar9 = (iVar8 >> 4) + (iVar8 >> 1) + iVar8 * 0x24924924 >> 0x1d;
  uVar9 = (int)(uVar9 - 7) >> 0x1f & uVar9;
  puVar11 = (uint *)((((longlong)
                       ((((int)(-uVar9 | uVar9) >> 0x1f) - ((int)(-uVar16 | uVar16) >> 0x1f)) +
                       0x21f) | 0x9bbfU) ^ 0x9ba7) + (longlong)puVar14);
  uVar18 = ((*puVar11 ^
            (puVar11[-1] ^
            (puVar11[-2] ^
            (puVar11[-3] ^
            (puVar11[-4] ^
            (puVar11[-5] ^
            (*puVar14 ^
            (puVar13[0x10] ^
            (puVar13[0xf] ^
            (puVar13[0xe] ^
            (puVar13[0xd] ^
            (puVar13[0xc] ^
            (puVar13[0xb] ^
            (puVar13[10] ^
            (puVar13[9] ^
            (uVar4 ^ (uVar3 ^ (uVar2 ^ (uVar1 ^ (uVar20 ^ (uVar19 ^ (uVar12 ^ (uVar18 ^ (uVar7 ^ 
                                                  uVar17) * 0x1000181) * 0x1000181) * 0x1000181) *
                                                  0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
                     * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
            0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
            * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181 ^ puVar11[1]) * 0x1000181;
  uVar7 = (uVar18 >> 1 ^ uVar18) >> 0xb & 1;
  uVar18 = (uVar7 * 2 | uVar7) << 0xb ^ uVar18 ^ 0x86fbd7ee;
  uVar7 = ~(uVar18 & 0x593ee41d);
  if ((~(uVar7 & 0x593ee41d) & ~(uVar7 & uVar18)) != 0xffffffff) {
    FUN_1813f4ab8();
    uVar6 = thunk_FUN_1805a9280();
    return uVar6;
  }
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  FUN_1813f30d0(param_1 + 0x48,param_2,param_3);
  return param_2;
}



############ FUN_ 180611922 size=890 ############

/* WARNING: Instruction at (ram,0x000180611916) overlaps instruction at (ram,0x000180611915)
    */
/* WARNING: Removing unreachable block (ram,0x000180611903) */
/* WARNING: Removing unreachable block (ram,0x000180611aa1) */
/* WARNING: Removing unreachable block (ram,0x000180611910) */

longlong FUN_180611922(undefined8 param_1,longlong param_2,longlong param_3)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  longlong unaff_RBX;
  int unaff_EBP;
  undefined8 unaff_RSI;
  ulonglong uVar4;
  longlong unaff_RDI;
  undefined8 in_R11;
  int iVar5;
  longlong unaff_R12;
  longlong unaff_R13;
  int *piVar6;
  int unaff_R15D;
  uint in_stack_00000060;
  
  piVar6 = (int *)(unaff_R13 - param_3);
  uVar1 = (*piVar6 + 1) * *piVar6 & 0x80000001;
  if ((int)uVar1 < 0) {
    uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
  }
  if (uVar1 != 0) {
    lVar3 = FUN_180611922(0x6530,param_2,param_3);
    return lVar3;
  }
  uVar1 = (*(int *)(unaff_RBX + 0xcc) + unaff_EBP) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xd0)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xd4)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xd8)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xdc)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xe0)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xe4)) * 0x401;
  do {
    lVar3 = param_2 + unaff_R12;
    param_2 = (unaff_R12 - lVar3 ^ 0xffffffffffffffffU) + 1;
    unaff_R12 = lVar3 - param_2;
    uVar2 = (*piVar6 + 1) * *piVar6 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (*(int *)(unaff_RBX + 0xe8) + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xec)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xf0)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xf4)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RBX + 0xf8)) * 0x401;
  do {
    FUN_18061074e();
    uVar2 = (*piVar6 + 1) * *piVar6 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (*(int *)(unaff_RBX + 0xfc) + (uVar1 ^ uVar1 >> 6)) * 0x401;
  do {
    lVar3 = unaff_R12 + (longlong)piVar6;
    unaff_R12 = ~((longlong)piVar6 - lVar3) + 1;
    piVar6 = (int *)(lVar3 - unaff_R12);
    uVar2 = (*piVar6 + 1) * *piVar6 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = uVar1 ^ uVar1 >> 6 ^ 0x1057fb46;
  uVar2 = (uVar1 << 0x17 | uVar1 >> 9) + 0xb861d458;
  *(undefined1 *)(unaff_RDI + 0x170) = 0;
  uVar1 = ~(in_stack_00000060 & uVar2);
  uVar4 = CONCAT71((int7)((ulonglong)unaff_RSI >> 8),
                   (~(uVar1 & in_stack_00000060) & ~(uVar1 & uVar2)) == 0xffffffff);
  if ((uVar4 & 0x3fffff) == 0 && (int)uVar4 == 0) {
    lVar3 = thunk_FUN_1805a9280((longlong)unaff_R15D,thunk_FUN_1805a9280);
    return lVar3;
  }
  iVar5 = (int)unaff_R12;
  do {
    *(undefined8 *)((longlong)register0x00000020 + -8) = in_R11;
    *(longlong *)((longlong)register0x00000020 + -0x10) = unaff_RDI;
    *(longlong *)((longlong)register0x00000020 + -0x18) = unaff_R12;
    lVar3 = -(longlong)iVar5;
    unaff_R12 = *(longlong *)((longlong)register0x00000020 + lVar3 + 0x88);
    unaff_RDI = *(longlong *)((longlong)register0x00000020 + lVar3 + 0x90);
    in_R11 = *(undefined8 *)((longlong)register0x00000020 + lVar3 + 0x98);
    register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar3 + 0xa0);
    uVar1 = (*piVar6 + 1) * *piVar6 & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  return unaff_RDI;
}



############ FUN_ 1807110f5 size=983 ############

/* WARNING: Instruction at (ram,0x00018071111d) overlaps instruction at (ram,0x00018071111b)
    */
/* WARNING: Removing unreachable block (ram,0x000180711471) */
/* WARNING: Removing unreachable block (ram,0x00018071111b) */

undefined8 FUN_1807110f5(void)

{
  undefined8 uVar1;
  uint uVar2;
  uint uVar3;
  longlong unaff_RBX;
  uint unaff_EBP;
  int *unaff_R15;
  
  while( true ) {
    uVar2 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    if (uVar2 == 0) break;
    if (-1 < (int)uVar2) {
      uVar1 = FUN_1807110f5();
      return uVar1;
    }
  }
  do {
    uVar2 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = (*(uint *)(unaff_RBX + 0xe8) ^
          (*(uint *)(unaff_RBX + 0xe4) ^
          (*(uint *)(unaff_RBX + 0xe0) ^
          (*(uint *)(unaff_RBX + 0xdc) ^
          (*(uint *)(unaff_RBX + 0xd8) ^
          (*(uint *)(unaff_RBX + 0xd4) ^
          (*(uint *)(unaff_RBX + 0xd0) ^
          (*(uint *)(unaff_RBX + 0xcc) ^
          (*(uint *)(unaff_RBX + 200) ^
          (*(uint *)(unaff_RBX + 0xc4) ^
          (*(uint *)(unaff_RBX + 0xc0) ^
          (*(uint *)(unaff_RBX + 0xbc) ^
          (*(uint *)(unaff_RBX + 0xb8) ^
          (*(uint *)(unaff_RBX + 0xb4) ^
          (*(uint *)(unaff_RBX + 0xb0) ^
          (*(uint *)(unaff_RBX + 0xac) ^
          (*(uint *)(unaff_RBX + 0xa8) ^
          (*(uint *)(unaff_RBX + 0xa4) ^
          (*(uint *)(unaff_RBX + 0xa0) ^
          (*(uint *)(unaff_RBX + 0x9c) ^
          (*(uint *)(unaff_RBX + 0x98) ^
          (*(uint *)(unaff_RBX + 0x94) ^
          (*(uint *)(unaff_RBX + 0x90) ^
          (*(uint *)(unaff_RBX + 0x8c) ^
          (*(uint *)(unaff_RBX + 0x88) ^
          (*(uint *)(unaff_RBX + 0x84) ^
          (*(uint *)(unaff_RBX + 0x80) ^
          (*(uint *)(unaff_RBX + 0x7c) ^
          (*(uint *)(unaff_RBX + 0x78) ^
          (*(uint *)(unaff_RBX + 0x74) ^
          (*(uint *)(unaff_RBX + 0x70) ^
          (*(uint *)(unaff_RBX + 0x6c) ^
          (*(uint *)(unaff_RBX + 0x68) ^
          (*(uint *)(unaff_RBX + 100) ^
          (*(uint *)(unaff_RBX + 0x60) ^
          (*(uint *)(unaff_RBX + 0x5c) ^
          (*(uint *)(unaff_RBX + 0x58) ^
          (*(uint *)(unaff_RBX + 0x54) ^
          (*(uint *)(unaff_RBX + 0x50) ^ (*(uint *)(unaff_RBX + 0x4c) ^ unaff_EBP) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1 ^ *(uint *)(unaff_RBX + 0xec);
  uVar2 = (uVar2 * 0x4000744 | uVar2 * 0x10001d1 >> 0x1e) & 0x99999999 |
          (uVar2 * 0x10001d1 >> 2 | uVar2 * 0x40000000) & 0x66666666;
  uVar3 = uVar2 << 0xb | uVar2 >> 0x15;
  uVar2 = ((uVar2 & 0x1fffff) >> 5 ^ uVar3) & 0xfff;
  uVar2 = (uVar2 << 0x10 | uVar2) ^ uVar3 ^ 0x7707253;
  if (uVar2 == uVar2 >> 3) {
    uVar1 = FUN_180711488();
    return uVar1;
  }
  FUN_18071275d();
  uVar1 = thunk_FUN_1805a9280();
  return uVar1;
}



############ FUN_ 1808517d0 size=1649 ############

/* WARNING: Instruction at (ram,0x000180851901) overlaps instruction at (ram,0x0001808518fd)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001808518b6) */
/* WARNING: Removing unreachable block (ram,0x000180851857) */
/* WARNING: Removing unreachable block (ram,0x0001808518fd) */

void FUN_1808517d0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined4 *param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  char cVar1;
  undefined4 uVar2;
  char *pcVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  ulonglong uVar7;
  uint *puVar8;
  IMAGE_DOS_HEADER *pIVar9;
  char *pcVar10;
  undefined1 *puVar11;
  undefined1 *puVar12;
  longlong *plVar13;
  longlong *plVar14;
  longlong *plVar15;
  undefined1 *puVar16;
  char *pcVar17;
  uint uVar18;
  longlong *plVar19;
  longlong lVar20;
  undefined4 *puVar21;
  IMAGE_DOS_HEADER *pIVar22;
  char *pcVar23;
  undefined4 *puVar24;
  undefined1 uVar25;
  int unaff_retaddr;
  longlong alStack_120 [3];
  undefined1 auStack_108 [56];
  uint auStack_d0 [4];
  undefined4 local_c0;
  uint local_bc;
  undefined8 local_b8;
  char *local_b0;
  undefined8 local_a8;
  char *local_a0;
  uint local_98;
  undefined4 uStack_88;
  undefined4 uStack_84;
  undefined8 local_80;
  undefined8 local_78;
  undefined4 *local_70;
  undefined4 local_60 [4];
  ulonglong local_50;
  
  plVar14 = (longlong *)auStack_108;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_108;
  local_80 = param_1;
  local_c0 = param_2;
  uVar5 = (uint)&stack0x00000000 & 0x1ff;
  local_78 = param_3;
  local_70 = param_4;
  pcVar17 = (char *)0xe3e902dd;
  uVar18 = (uint)&stack0x00000000 & 0x3ff;
  local_bc = ((uVar5 + 2) * (uVar5 + 1) * uVar5) % 3 + 0xb871 ^ 0xbff1;
  uVar5 = ((uVar18 + 1) * uVar18 + 0x6c21 & 0x80000001) <<
          ((char)((ulonglong)((longlong)(int)((uVar18 + 2) * (uVar18 + 1) * uVar18) * 0x55555556) >>
                 0x20) * -3 & 0x1fU);
  local_98 = (int)(-uVar5 | uVar5) >> 0x1f & 0x9bfbU ^ 0x976b;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  pIVar22 = &IMAGE_DOS_HEADER_180000000;
  pcVar3 = "l";
  local_a0 = "l";
  local_b0 = "gCheck";
  local_a8 = 0x1300d498339230d4;
  plVar13 = &DAT_186f06fe0;
  local_b8 = 0x339230d4;
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  auStack_d0[3] = 0xb5;
  auStack_d0[2] = 0xb5;
LAB_180851a74:
  pcVar23 = pcVar3;
  if ((plVar13 != (longlong *)0x0) && (lVar20 = *plVar13, -1 < lVar20)) {
    local_a8 = 0x2621fc0;
    do {
      if (pcVar3 < IMAGE_DOS_HEADER_180000000.e_magic + lVar20 + 8) {
        if (-1 < lVar20) {
          pIVar9 = (IMAGE_DOS_HEADER *)(lVar20 + 0x180000000);
          pIVar22 = (IMAGE_DOS_HEADER *)(pcVar3 + 4);
          if (pIVar9 < pIVar22) {
            local_60[0] = *(undefined4 *)pcVar3;
            plVar19 = plVar13;
            goto LAB_180851af0;
          }
        }
        break;
      }
      lVar20 = plVar13[1];
      plVar13 = plVar13 + 1;
    } while (-1 < lVar20);
    goto LAB_180851b0f;
  }
  goto LAB_180851b13;
  while (pIVar9 = (IMAGE_DOS_HEADER *)(lVar20 + 0x180000000), pIVar9 < pIVar22) {
LAB_180851af0:
    plVar19 = plVar19 + 1;
    *(longlong *)(&stack0x00017fffffa0 + (lVar20 - (longlong)pcVar3)) =
         *(longlong *)pIVar9 + -0x180000000;
    lVar20 = *plVar19;
    pcVar23 = (char *)local_60;
    if (lVar20 < 0) break;
  }
LAB_180851b0f:
  auStack_d0[3] = *(uint *)((longlong)plVar14 + 0x40);
LAB_180851b13:
  uVar5 = (int)pcVar17 * auStack_d0[3] * 0x32c79bc3;
  if (uVar5 - auStack_d0[3] < 0x15) {
    uVar5 = uVar5 * (uVar5 >> 8);
  }
  if ((char)uVar5 != '\0') {
    uVar5 = uVar5 ^ uVar5 * 8;
  }
  pcVar17 = (char *)(ulonglong)uVar5;
  *(uint *)((longlong)plVar14 + 0x40) = auStack_d0[3] >> 0x1c ^ auStack_d0[3] << 4;
  plVar19 = plVar14;
  do {
    plVar15 = plVar19;
    puVar21 = (undefined4 *)((longlong)plVar15 + 0x40);
    uVar25 = 1;
    uVar7 = 0x4e28;
    *(undefined8 *)((longlong)plVar15 + -8) = 0x180851b65;
    pcVar10 = pcVar23;
    FUN_180851785();
LAB_180851b6e:
    do {
      if (!(bool)uVar25) {
        uVar25 = true;
        if ((uVar7 & 0xc300) == 0) goto LAB_180851b6e;
      }
      uVar25 = (uVar7 & 0xc3) == 0;
    } while (!(bool)uVar25);
    if ((uVar7 & 0xc3) == 0) goto LAB_180851bca;
    while ((uVar7 & 0xc3) != 0) {
LAB_180851bca:
      if ((uVar7 & 0xc300) == 0) break;
      pcVar23 = (char *)((~(ulonglong)pcVar23 + 1 ^ 0xffffffffffffffff) + 1);
      *(char **)((longlong)plVar15 + -8) = pcVar17;
      plVar15 = (longlong *)((longlong)plVar15 + -8);
      pcVar17 = pcVar10;
    }
    plVar15[-1] = 0x180851bd5;
    uVar2 = FUN_18084f8a9();
    *puVar21 = uVar2;
    puVar24 = local_70;
    uVar5 = local_98;
    pcVar17 = (char *)*plVar15;
    plVar14 = plVar15 + 1;
    do {
    } while ((uVar7 & 0xc3) != 0);
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
    plVar19 = plVar15 + 1;
  } while (uVar18 != 0);
  auStack_d0[3] = *(uint *)(plVar15 + 9);
  pcVar3 = pcVar3 + 4;
  if (pcVar3 == "gCheck") {
    uVar7 = (ulonglong)local_bc;
    local_bc = (uint)pcVar17;
    do {
      puVar8 = auStack_d0 + 3;
      *plVar15 = 0x180851c41;
      uVar18 = FUN_1807e3a2c();
      *puVar8 = uVar18;
      *plVar15 = 0x180851c5d;
      FUN_18085282e();
      uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar18 < 0) {
        uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar18 != 0);
    uVar6 = (auStack_d0[3] >> 0xf | auStack_d0[3] << 0x11) + 0x451f4f5f;
    uVar18 = (uVar6 >> 0x12 ^ uVar6) & 0x3ff;
    uVar6 = ((uVar18 << 0x12 | uVar18) ^ uVar6) + 0x382f3935;
    uVar18 = (uVar6 >> 0xf ^ uVar6) & 0x1fff;
    uVar18 = uVar6 ^ (uVar18 << 0xf | uVar18);
    uVar6 = (uVar18 << 4 | uVar6 >> 0x1c) & 0x5a5a5a5a;
    puVar12 = (undefined1 *)(ulonglong)uVar6;
    *(uint *)(plVar15 + 9) = (uVar18 >> 4 | uVar18 << 0x1c) & 0xa5a5a5a5 | uVar6;
    do {
      puVar11 = (undefined1 *)((longlong)puVar21 + (longlong)puVar12);
      lVar20 = (longlong)puVar12 - (longlong)puVar11;
      puVar21 = (undefined4 *)-lVar20;
      puVar12 = puVar11 + lVar20;
      uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar18 < 0) {
        uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar18 != 0);
    do {
      *plVar15 = 0x180851d3a;
      FUN_18085255d(0x4e28);
      uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar18 < 0) {
        uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar18 != 0);
    if ((char)(((int)plVar15[9] == (int)local_b8) * '\x0f') == '\0') {
      *plVar15 = (longlong)puVar24;
      plVar15[-1] = (longlong)puVar21;
      plVar15[-2] = uVar7;
      thunk_FUN_1805a9280();
      return;
    }
    plVar13 = plVar15 + 1;
    do {
      puVar16 = (undefined1 *)plVar13;
      *(undefined4 **)(puVar16 + -8) = puVar24;
      *(undefined4 **)(puVar16 + -0x10) = puVar21;
      *(IMAGE_DOS_HEADER **)(puVar16 + -0x18) = pIVar22;
      uVar2 = local_c0;
      lVar20 = -(longlong)(int)uVar5;
      pIVar22 = *(IMAGE_DOS_HEADER **)(puVar16 + lVar20 + 0xc78);
      puVar21 = *(undefined4 **)(puVar16 + lVar20 + 0xc80);
      puVar24 = *(undefined4 **)(puVar16 + lVar20 + 0xc88);
      uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar18 < 0) {
        uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
      }
      plVar13 = (longlong *)(puVar16 + lVar20 + 0xc90);
    } while (uVar18 != 0);
    uStack_88 = 1;
    uStack_84 = 0xffffffff;
    *(undefined **)(puVar16 + lVar20 + 0xc88) = &UNK_180851fff;
    cVar1 = FUN_18080c610(&uStack_88,local_c0);
    if (cVar1 == '\0') {
      *puVar24 = 0xffffffff;
    }
    else {
      *(undefined4 *)(puVar16 + lVar20 + 0xcb0) = 0;
      *(undefined **)(puVar16 + lVar20 + 0xc88) = &UNK_180851eb8;
      uVar4 = __RTDynamicCast(local_80,0,&license_services::LsProxySimpleBase::RTTI_Type_Descriptor,
                              &license_services::LsDatabaseInfo::RTTI_Type_Descriptor);
      *(undefined8 *)(puVar16 + lVar20 + 0xcc0) = param_7;
      *(undefined8 *)(puVar16 + lVar20 + 0xcb8) = param_6;
      *(undefined8 *)(puVar16 + lVar20 + 0xcb0) = param_5;
      *(undefined **)(puVar16 + lVar20 + 0xc88) = &UNK_180851ee4;
      FUN_180859c50(uVar4,uVar2,local_78,puVar24);
    }
    *(undefined **)(puVar16 + lVar20 + 0xc88) = &UNK_18085201c;
  }
  goto LAB_180851a74;
}



############ FUN_ 180ba0b10 size=2118 ############

/* WARNING: Removing unreachable block (ram,0x000180ba0bb6) */
/* WARNING: Removing unreachable block (ram,0x000180ba0c05) */
/* WARNING: Heritage AFTER dead removal. Example location: s0x00000000 : 0x000180ba1318 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_180ba0b10(longlong param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  int iVar21;
  ulonglong uVar22;
  uint uVar23;
  longlong lVar24;
  longlong lVar25;
  longlong lVar26;
  uint uVar27;
  uint uVar28;
  ulonglong uVar29;
  ulonglong uVar30;
  int unaff_retaddr;
  
  uVar27 = (uint)&stack0x00000000 & 0x3ff;
  lVar26 = 0;
  uVar28 = (uVar27 * uVar27 * 0x10 + 4) % 0x13;
  uVar27 = ((uint)(DAT_1813cfa04 * 0x5bd1e995) >> 0x18 ^ DAT_1813cfa04 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cfa00 * 0x5bd1e995) >> 0x18 ^ DAT_1813cfa00 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9fc * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9fc * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9f8 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9f8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9f4 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9f4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9f0 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9f0 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9ec * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9ec * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9e8 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9e8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9e4 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9e4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9e0 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9e0 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9dc * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9dc * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9d8 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9d8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9d4 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9d4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9d0 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9d0 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9cc * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9cc * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9c8 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9c8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9c4 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9c4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9c0 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9c0 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9bc * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9bc * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_1813cf9b8 * 0x5bd1e995) >> 0x18 ^ DAT_1813cf9b8 * 0x5bd1e995) * 0x5bd1e995 ^
           0x854870b4) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995;
  do {
    lVar25 = param_1 + lVar26;
    param_1 = ~(lVar26 - lVar25) + 1;
    lVar26 = lVar25 - param_1;
    uVar23 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar23 < 0) {
      uVar23 = (uVar23 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar23 != 0);
  lVar25 = 2;
  lVar26 = 0x50;
  do {
    lVar24 = lVar26;
    uVar23 = *(int *)((longlong)&DAT_1813cf9b8 + lVar24) * 0x5bd1e995;
    uVar1 = *(int *)((longlong)&DAT_1813cf9bc + lVar24) * 0x5bd1e995;
    uVar2 = *(int *)((longlong)&DAT_1813cf9c0 + lVar24) * 0x5bd1e995;
    uVar3 = *(int *)((longlong)&DAT_1813cf9c4 + lVar24) * 0x5bd1e995;
    uVar4 = *(int *)((longlong)&DAT_1813cf9c8 + lVar24) * 0x5bd1e995;
    uVar5 = *(int *)((longlong)&DAT_1813cf9cc + lVar24) * 0x5bd1e995;
    uVar6 = *(int *)((longlong)&DAT_1813cf9d0 + lVar24) * 0x5bd1e995;
    uVar7 = *(int *)((longlong)&DAT_1813cf9d4 + lVar24) * 0x5bd1e995;
    uVar8 = *(int *)((longlong)&DAT_1813cf9d8 + lVar24) * 0x5bd1e995;
    uVar9 = *(int *)((longlong)&DAT_1813cf9dc + lVar24) * 0x5bd1e995;
    uVar10 = *(int *)((longlong)&DAT_1813cf9e0 + lVar24) * 0x5bd1e995;
    uVar11 = *(int *)((longlong)&DAT_1813cf9e4 + lVar24) * 0x5bd1e995;
    uVar12 = *(int *)((longlong)&DAT_1813cf9e8 + lVar24) * 0x5bd1e995;
    uVar13 = *(int *)((longlong)&DAT_1813cf9ec + lVar24) * 0x5bd1e995;
    uVar14 = *(int *)((longlong)&DAT_1813cf9f0 + lVar24) * 0x5bd1e995;
    uVar15 = *(int *)((longlong)&DAT_1813cf9f4 + lVar24) * 0x5bd1e995;
    uVar16 = *(int *)((longlong)&DAT_1813cf9f8 + lVar24) * 0x5bd1e995;
    uVar17 = *(int *)((longlong)&DAT_1813cf9fc + lVar24) * 0x5bd1e995;
    uVar18 = *(int *)((longlong)&DAT_1813cfa00 + lVar24) * 0x5bd1e995;
    uVar19 = *(int *)((longlong)&DAT_1813cfa04 + lVar24) * 0x5bd1e995;
    uVar20 = *(int *)((longlong)&DAT_1813cfa08 + lVar24) * 0x5bd1e995;
    uVar27 = ((uVar19 >> 0x18 ^ uVar19) * 0x5bd1e995 ^
             ((uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
             ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
             ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
             ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
             ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
             ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
             ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
             ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
             ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
             ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
             ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
             ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
             ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
             ((uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995 ^
             ((uVar4 >> 0x18 ^ uVar4) * 0x5bd1e995 ^
             ((uVar3 >> 0x18 ^ uVar3) * 0x5bd1e995 ^
             ((uVar2 >> 0x18 ^ uVar2) * 0x5bd1e995 ^
             ((uVar1 >> 0x18 ^ uVar1) * 0x5bd1e995 ^
             ((uVar23 >> 0x18 ^ uVar23) * 0x5bd1e995 ^ uVar27 * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995;
    uVar22 = (ulonglong)uVar27;
    uVar27 = (uVar20 >> 0x18 ^ uVar20) * 0x5bd1e995 ^ uVar27;
    lVar25 = lVar25 + -1;
    lVar26 = lVar24 + 0x54;
  } while (lVar25 != 0);
  uVar23 = *(int *)((longlong)&DAT_1813cfa0c + lVar24) * 0x5bd1e995;
  uVar1 = *(int *)((longlong)&DAT_1813cfa10 + lVar24) * 0x5bd1e995;
  uVar27 = (uVar1 >> 0x18 ^ uVar1) * 0x5bd1e995 ^
           ((uVar23 >> 0x18 ^ uVar23) * 0x5bd1e995 ^ uVar27 * 0x5bd1e995) * 0x5bd1e995;
  lVar26 = 0;
  do {
    func_0x000180ba2c12(0x551c);
    uVar23 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar23 < 0) {
      uVar23 = (uVar23 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar23 != 0);
  uVar27 = (uVar27 << 1 | (uint)((int)uVar27 < 0)) + 0xac0ff439;
  uVar27 = (uVar27 >> 0xf | uVar27 * 0x20000) + 0x57395982;
  uVar27 = uVar27 * 0x800 | uVar27 >> 0x15;
  if (((uVar27 & 0x1eff874d | ~uVar27 & 0xe10078b2) * 5 & 0x7fffffff) != 0) {
    lVar25 = ~(uVar22 - (lVar26 + uVar22)) + 1;
    uVar22 = thunk_FUN_1805a9280(((int)(-uVar28 | uVar28) >> 0x1f) * 0x1ac4 & 0x2538U ^ 0x2398,
                                 (lVar26 + uVar22) - lVar25,lVar25);
    return uVar22;
  }
  do {
    lVar25 = (longlong)param_2 + param_1;
    uVar29 = param_1 - lVar25 ^ 0xffffffffffffffff;
    param_2 = (uint *)(uVar29 + 1);
    uVar30 = ~((lVar25 - (longlong)param_2 ^ 0xffffffffffffffffU) + 1);
    param_1 = uVar30 + 1;
    uVar27 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar27 < 0) {
      uVar27 = (uVar27 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar27 != 0);
  if ((*(int *)(uVar30 + 0x169) == 0) &&
     (iVar21 = FUN_18096e580(param_2,uVar22,lVar26), iVar21 != 0)) {
    iVar21 = (*param_2 & 0x7fffffff) - 1;
    uVar28 = *(int *)(uVar30 + 9) * iVar21;
    for (uVar27 = *(uint *)(*(longlong *)(uVar29 + 9) + (longlong)iVar21 * 4); uVar27 != 0;
        uVar27 = uVar27 >> 1) {
      uVar28 = uVar28 + 1;
    }
    uVar22 = (ulonglong)uVar28;
  }
  else {
    uVar22 = 0;
  }
  return uVar22;
}



############ FUN_ 180660c00 size=2354 ############

/* WARNING: Instruction at (ram,0x0001806613f1) overlaps instruction at (ram,0x0001806613f0)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001806613ec) */
/* WARNING: Removing unreachable block (ram,0x0001806611b7) */
/* WARNING: Removing unreachable block (ram,0x000180660cdc) */
/* WARNING: Removing unreachable block (ram,0x00018066133e) */
/* WARNING: Removing unreachable block (ram,0x000180660f41) */
/* WARNING: Removing unreachable block (ram,0x000180660c86) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180660c00(undefined8 *param_1,longlong param_2,undefined1 param_3)

{
  code *pcVar1;
  longlong lVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  undefined1 *puVar13;
  undefined1 *puVar14;
  longlong lVar15;
  ulonglong uVar16;
  uint uVar17;
  ulonglong uVar19;
  longlong lVar20;
  ulonglong uVar21;
  int unaff_retaddr;
  undefined1 auStack_3d8 [32];
  undefined1 local_3b8;
  undefined *local_3b0;
  undefined4 local_3a8;
  uint *local_3a0;
  uint local_388;
  undefined8 *local_378;
  longlong local_368;
  undefined8 uStack_358;
  undefined1 auStack_350 [8];
  undefined8 local_348;
  undefined1 auStack_340 [24];
  locale alStack_328 [8];
  longlong *plStack_320;
  undefined1 auStack_318 [8];
  longlong *plStack_310;
  longlong *plStack_300;
  undefined1 auStack_2f8 [80];
  longlong alStack_2a8 [3];
  undefined1 auStack_290 [112];
  undefined4 uStack_220;
  undefined8 uStack_a8;
  char cStack_a0;
  undefined1 uStack_98;
  undefined7 uStack_97;
  undefined8 uStack_88;
  ulonglong uStack_80;
  ulonglong local_48;
  ulonglong uVar18;
  
  local_348 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_3d8;
  uVar10 = (uint)&stack0x00000000;
  uVar21 = 0xee0;
  iVar9 = (uVar10 & 0x68ff) * (uVar10 & 0x68ff) + 1;
  uVar12 = (iVar9 >> 4) + (iVar9 >> 1) + iVar9 * 0x24924924 >> 0x1d;
  if (((int)(uVar12 - 7) >> 0x1f & uVar12 & 0xc0) == 0) {
    uVar12 = uVar10 & 0x33f;
    uVar12 = ((uVar12 + 2) * (uVar12 + 1) * uVar12) % 3;
  }
  else {
    uVar12 = uVar10 & 0x23f;
    iVar9 = (uVar12 + 2) * (uVar12 + 1) * uVar12;
    uVar12 = ((iVar9 >> 1) - (iVar9 >> 3)) + iVar9 * 0x55555555 >> 0x1e;
  }
  uVar16 = (ulonglong)uVar12;
  uVar10 = ((uVar10 & 0x38ff) * (uVar10 & 0x38ff) + 1) % 7 | uVar10;
  local_388 = ((int)(-uVar10 | uVar10) >> 0x1f) * -0x8209 ^ uVar12 - 0x1801 & 0x82b9;
  local_3a0 = &DAT_181522960;
  local_3b0 = &DAT_181522a60;
  uVar10 = ((((((((((((((DAT_181522964 ^ (DAT_181522960 ^ 0x811c9e07) * 0x10001a7) * 0x10001a7 ^
                       DAT_181522968) * 0x10001a7 ^ DAT_18152296c) * 0x10001a7 ^ DAT_181522970) *
                     0x10001a7 ^ DAT_181522974) * 0x10001a7 ^ DAT_181522978) * 0x10001a7 ^
                  DAT_18152297c) * 0x10001a7 ^ DAT_181522980) * 0x10001a7 ^ DAT_181522984) *
                0x10001a7 ^ DAT_181522988) * 0x10001a7 ^ DAT_18152298c) * 0x10001a7 ^ DAT_181522990)
             * 0x10001a7 ^ DAT_181522994) * 0x10001a7 ^ DAT_181522998) * 0x10001a7 ^ DAT_18152299c;
  local_3b8 = param_3;
  local_378 = param_1;
  local_368 = param_2;
  do {
    FUN_180660567();
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar10 = DAT_1815229a0 ^ uVar10 * 0x10001a7;
  do {
    FUN_180662b72(0x4824);
    lVar4 = local_368;
    puVar3 = local_378;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  local_3b0 = (undefined *)0xf91ade4c15f3e8a7;
  local_3a8 = 0x15f3e8a7;
  do {
    lVar15 = uVar21 + uVar16;
    lVar20 = uVar16 - lVar15;
    uVar21 = -lVar20;
    uVar16 = lVar15 + lVar20;
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = (DAT_181522a3c ^
           (DAT_181522a38 ^
           (DAT_181522a34 ^
           (DAT_181522a30 ^
           (((((((((((((((((((((((((((((((DAT_1815229b4 ^
                                         (DAT_1815229b0 ^
                                         (DAT_1815229ac ^
                                         (DAT_1815229a8 ^
                                         (DAT_1815229a4 ^ uVar10 * 0x10001a7) * 0x10001a7) *
                                         0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7 ^
                                        DAT_1815229b8) * 0x10001a7 ^ DAT_1815229bc) * 0x10001a7 ^
                                      DAT_1815229c0) * 0x10001a7 ^ DAT_1815229c4) * 0x10001a7 ^
                                    DAT_1815229c8) * 0x10001a7 ^ DAT_1815229cc) * 0x10001a7 ^
                                  DAT_1815229d0) * 0x10001a7 ^ DAT_1815229d4) * 0x10001a7 ^
                                DAT_1815229d8) * 0x10001a7 ^ DAT_1815229dc) * 0x10001a7 ^
                              DAT_1815229e0) * 0x10001a7 ^ DAT_1815229e4) * 0x10001a7 ^
                            DAT_1815229e8) * 0x10001a7 ^ DAT_1815229ec) * 0x10001a7 ^ DAT_1815229f0)
                          * 0x10001a7 ^ DAT_1815229f4) * 0x10001a7 ^ DAT_1815229f8) * 0x10001a7 ^
                       DAT_1815229fc) * 0x10001a7 ^ DAT_181522a00) * 0x10001a7 ^ DAT_181522a04) *
                     0x10001a7 ^ DAT_181522a08) * 0x10001a7 ^ DAT_181522a0c) * 0x10001a7 ^
                  DAT_181522a10) * 0x10001a7 ^ DAT_181522a14) * 0x10001a7 ^ DAT_181522a18) *
                0x10001a7 ^ DAT_181522a1c) * 0x10001a7 ^ DAT_181522a20) * 0x10001a7 ^ DAT_181522a24)
             * 0x10001a7 ^ DAT_181522a28) * 0x10001a7 ^ DAT_181522a2c) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7;
  uVar10 = uVar12 & 0x2aff;
  uVar10 = ((uVar10 + 1) * uVar10 + 7) % 0x51;
  uVar16 = (longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0xe4e5) ^ 0xe4e1;
  uVar17 = (*(uint *)(&UNK_181522a54 + uVar16) ^
           (*(uint *)(&UNK_181522a50 + uVar16) ^
           (*(uint *)(&UNK_181522a4c + uVar16) ^
           (*(uint *)(&UNK_181522a48 + uVar16) ^
           (*(uint *)(&UNK_181522a44 + uVar16) ^
           (*(uint *)(&UNK_181522a40 + uVar16) ^
           (*(uint *)((longlong)&DAT_181522a3c + uVar16) ^ uVar12) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7;
  uVar18 = (ulonglong)uVar17;
  uVar19 = 0;
  lVar15 = 0;
  uVar12 = ((*(uint *)(&UNK_181522a58 + uVar16) ^ uVar17) * 0xd3800 |
           (*(uint *)(&UNK_181522a58 + uVar16) ^ uVar17) * 0x10001a7 >> 0x15) + 0x8b7c351d;
  uVar16 = (ulonglong)uVar12;
  uVar10 = (uVar12 >> 0xb ^ uVar12) >> 1 & 0x7ff;
  uVar10 = ((uVar10 << 0xb | uVar10) * 2 ^ uVar12) + 0x59129b7a;
  uVar12 = uVar10 * 0x100000 | uVar10 >> 0xc;
  uVar10 = (uVar10 & 0xfff ^ uVar12) >> 7 & 1;
  do {
    uVar19 = -(~uVar19 + 1);
    uVar21 = (~uVar21 + 1 ^ 0xffffffffffffffff) + 1;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  if ((((uVar10 << 0x14 | uVar10) << 7 ^ uVar12) + 0xea0c1759) * 0x29 != 0) {
    thunk_FUN_1805a9280((longlong)(int)uVar21,
                        ((ulonglong)uVar17 - (uVar16 + uVar17) ^ 0xffffffffffffffff) + 1,0x180661818
                       );
    return;
  }
  lVar20 = (longlong)(int)local_388;
  puVar13 = auStack_3d8;
  do {
    puVar14 = puVar13;
    *(ulonglong *)(puVar14 + -8) = uVar19;
    *(ulonglong *)(puVar14 + -0x10) = uVar18;
    *(ulonglong *)(puVar14 + -0x18) = uVar16;
    lVar15 = (-lVar15 ^ 0xffffffffffffffffU) + 1;
    lVar2 = -lVar20;
    uVar16 = *(ulonglong *)(puVar14 + lVar2 + 0x98);
    uVar18 = *(ulonglong *)(puVar14 + lVar2 + 0xa0);
    uVar19 = *(ulonglong *)(puVar14 + lVar2 + 0xa8);
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
    puVar13 = puVar14 + lVar2 + 0xb0;
  } while (uVar10 != 0);
  if (*(longlong *)(lVar4 + 0x10) == 0) {
    *(undefined8 *)(puVar14 + lVar2 + 0x128) = 0x7ffffffffffffffe;
    *(undefined4 *)(puVar14 + lVar2 + 0xe0) = 0xfffffffe;
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661564;
    FUN_1805b41e0(puVar3,puVar14 + lVar2 + 0xe0,puVar14 + lVar2 + 0x128);
  }
  else {
    plVar6 = (longlong *)0x0;
    uStack_a8 = 0;
    uStack_88 = 0;
    uStack_80 = 0xf;
    uStack_98 = 0;
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661599;
    FUN_1806651b0(lVar4,&uStack_a8,0,lVar15);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066159e;
    uVar5 = FUN_180669160();
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806615aa;
    FUN_18065ab80(auStack_2f8,uVar5);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806615bb;
    FUN_180658820(alStack_2a8,3,1);
    if (DAT_18265f610 == (longlong *)0x0) {
      *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806615d2;
      lVar15 = FUN_1811316e0(0x180);
      *(longlong *)(puVar14 + lVar2 + 0x118) = lVar15;
      if (lVar15 != 0) {
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806615e7;
        plVar6 = (longlong *)FUN_18065a970(lVar15,1);
      }
      *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661600;
      DAT_18265f610 = plVar6;
      FUN_1805ccdd0(FUN_18065c9b0,plVar6);
    }
    pcVar1 = *(code **)(*DAT_18265f610 + 0x20);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066160d;
    (*pcVar1)();
    iVar9 = *(int *)(alStack_2a8[0] + 4);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661626;
    uVar5 = std::ios_base::getloc((ios_base *)((longlong)alStack_2a8 + (longlong)iVar9));
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066163a;
    FUN_180652c10(auStack_318,uVar5,DAT_18265f610);
    iVar9 = *(int *)(alStack_2a8[0] + 4);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661657;
    std::basic_ios<char,std::char_traits<char>_>::imbue
              ((basic_ios<char,std::char_traits<char>_> *)((longlong)alStack_2a8 + (longlong)iVar9),
               alStack_328);
    if (plStack_320 != (longlong *)0x0) {
      pcVar1 = *(code **)(*plStack_320 + 0x10);
      *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661667;
      puVar7 = (undefined8 *)(*pcVar1)();
      if (puVar7 != (undefined8 *)0x0) {
        pcVar1 = *(code **)*puVar7;
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066167a;
        (*pcVar1)(puVar7,1);
      }
    }
    if (plStack_310 != (longlong *)0x0) {
      pcVar1 = *(code **)(*plStack_310 + 0x10);
      *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066168a;
      puVar7 = (undefined8 *)(*pcVar1)();
      if (puVar7 != (undefined8 *)0x0) {
        pcVar1 = *(code **)*puVar7;
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066169d;
        (*pcVar1)(puVar7,1);
      }
    }
    if (plStack_300 != (longlong *)0x0) {
      pcVar1 = *(code **)(*plStack_300 + 0x10);
      *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806616ad;
      puVar7 = (undefined8 *)(*pcVar1)();
      if (puVar7 != (undefined8 *)0x0) {
        pcVar1 = *(code **)*puVar7;
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806616c0;
        (*pcVar1)(puVar7,1);
      }
    }
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806616ca;
    FUN_18060cb50(auStack_290);
    uVar5 = uStack_88;
    puVar13 = &uStack_98;
    if (0xf < uStack_80) {
      puVar13 = (undefined1 *)CONCAT71(uStack_97,uStack_98);
    }
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806616f8;
    FUN_18065d910(auStack_290,puVar13,uVar5,uStack_220);
    uStack_358 = 0x7ffffffffffffffe;
    *(undefined4 *)(puVar14 + lVar2 + 0x104) = 0xfffffffe;
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661721;
    FUN_1805b41e0(puVar14 + lVar2 + 0xf0,puVar14 + lVar2 + 0x104,&uStack_358);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066172f;
    FUN_180652c80(alStack_2a8,puVar14 + lVar2 + 0xf0);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661744;
    puVar7 = (undefined8 *)FUN_18065bc00(puVar14 + lVar2 + 0xf0,auStack_340,&uStack_a8);
    uVar5 = *puVar7;
    *(undefined8 *)(puVar14 + lVar2 + 0xf0) = uVar5;
    if (puVar14[lVar2 + 0xd0] != '\0') {
      if (cStack_a0 != '\0') {
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661768;
        lVar15 = FUN_1805c0220(
                              "The time string \"%s\" contains offset information, but you also passed inLocal as true. These are inconsistent."
                              );
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x180661770;
        uVar8 = FUN_1805c0260();
        uVar5 = *(undefined8 *)(lVar15 + 8);
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066177f;
        FUN_1805b2240(uVar5,lVar4);
        uVar5 = *(undefined8 *)(lVar15 + 8);
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x18066178d;
        FUN_1806548b0(uVar5,puVar14 + lVar2 + 0xd0);
        *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806617a2;
        FUN_1805bc880(uVar8,
                      "d:\\jenkins\\full\\eden\\client\\pace\\libraries\\src\\libpaceutil\\timeutils.cpp"
                      ,0x10d);
        *(undefined1 **)(puVar14 + lVar2 + 0xa8) = &LAB_1806617b2;
        FUN_180703180(0x42,lVar15,uVar8);
      }
      *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806617c0;
      puVar7 = (undefined8 *)FUN_180662c90(auStack_350,puVar14 + lVar2 + 0xf0);
      uVar5 = *puVar7;
    }
    *puVar3 = uVar5;
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806617cf;
    FUN_18060c820(alStack_2a8);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806617d9;
    FUN_1805a5410(auStack_2f8);
    *(undefined8 *)(puVar14 + lVar2 + 0xa8) = 0x1806617e6;
    FUN_18065baf0(&uStack_a8);
  }
  *(undefined **)(puVar14 + lVar2 + 0xa8) = &UNK_180661b7c;
}



############ FUN_ 1809f0490 size=2160 ############

/* WARNING: Instruction at (ram,0x0001809f0af7) overlaps instruction at (ram,0x0001809f0af2)
    */
/* WARNING: Removing unreachable block (ram,0x0001809f05f8) */
/* WARNING: Removing unreachable block (ram,0x0001809f04f1) */
/* WARNING: Removing unreachable block (ram,0x0001809f050d) */
/* WARNING: Removing unreachable block (ram,0x0001809f0736) */
/* WARNING: Removing unreachable block (ram,0x0001809f05d8) */

void FUN_1809f0490(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  longlong *plVar4;
  uint uVar5;
  int iVar6;
  IMAGE_DOS_HEADER *pIVar7;
  longlong lVar8;
  uint *puVar9;
  uint uVar10;
  undefined8 *puVar11;
  ulonglong uVar12;
  IMAGE_DOS_HEADER *pIVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  undefined4 *puVar17;
  int unaff_retaddr;
  undefined1 local_e8 [32];
  uint local_c8;
  short local_c4 [2];
  undefined8 local_c0;
  undefined8 local_b8;
  uint local_b0;
  int local_ac;
  uint local_a8 [2];
  undefined8 local_a0;
  int local_98;
  uint local_94;
  uint local_90;
  uint local_8c;
  undefined8 local_88;
  undefined1 local_80 [16];
  undefined8 local_70;
  undefined8 local_68;
  undefined4 local_58 [4];
  ulonglong local_48;
  
  local_88 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)local_e8;
  uVar16 = 0x57971745;
  uVar10 = (uint)&stack0x00000000;
  uVar5 = ((uVar10 & 0xeff) + 1) * (uVar10 & 0xeff) + 0x309d & 0x80000001;
  uVar15 = (int)(-uVar5 | uVar5) >> 0x1f;
  uVar5 = uVar10 & 0x2bf;
  iVar14 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  uVar5 = uVar10 & 0x23f;
  iVar6 = (uVar5 + 2) * (uVar5 + 1) * uVar5;
  local_90 = (((iVar14 >> 1) - (iVar14 >> 3)) + iVar14 * 0x55555555 >> 0x1e) >>
             ((byte)(((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e) & 0x1f) ^
             (((int)(-uVar15 | uVar15) >> 0x1f) * -0x24 | 0x926U) ^ 0xb46;
  iVar6 = (uVar10 & 0x1dff) * (uVar10 & 0x1dff) + 1;
  uVar15 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
  uVar15 = (int)(uVar15 - 7) >> 0x1f & uVar15;
  iVar6 = (uVar10 & 0x32ff) * (uVar10 & 0x32ff) + 1;
  uVar5 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
  uVar5 = (int)(uVar5 - 7) >> 0x1f & uVar5;
  local_94 = 0xb5f7 << (((char)((byte)(-uVar15 >> 0x18) | (byte)(uVar15 >> 0x18)) >> 7) -
                        ((char)((byte)(-uVar5 >> 0x18) | (byte)(uVar5 >> 0x18)) >> 7) & 0x1fU) &
             0x31a7U ^ 0x34f7;
  local_70 = 0;
  local_68 = 0xf;
  local_80[0] = 0;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001809f082c();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  iVar6 = (**(code **)(*param_2 + 0xc0))(param_2,local_80);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  iVar14 = (**(code **)(*param_2 + 0xd0))(param_2,local_80,&local_ac,local_c4);
  iVar6 = iVar6 + iVar14;
  while (local_ac != 0) {
    if (local_c4[0] == 1) {
      if (local_ac != 0xc) goto LAB_1809f08b8;
      iVar14 = FUN_1809f5270(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x58) = 1;
LAB_1809f08c2:
      iVar6 = iVar6 + iVar14;
    }
    else {
      if ((local_c4[0] != 2) || (local_ac != 0xf)) {
LAB_1809f08b8:
        iVar14 = FUN_1806d8eb0(param_2,local_ac);
        goto LAB_1809f08c2;
      }
      puVar1 = *(undefined8 **)(param_1 + 0x48);
      for (puVar11 = *(undefined8 **)(param_1 + 0x40); puVar11 != puVar1; puVar11 = puVar11 + 0x18)
      {
        (**(code **)*puVar11)(puVar11,0);
      }
      *(undefined8 *)(param_1 + 0x48) = *(undefined8 *)(param_1 + 0x40);
      (**(code **)(*param_2 + 0xf0))(param_2,&local_8c,&local_b0);
      FUN_1809ce560(param_1 + 0x40,local_b0,param_1 + 0x40);
      uVar12 = 0;
      if (local_b0 != 0) {
        do {
          iVar14 = FUN_180b1cee0(uVar12 * 0xc0 + *(longlong *)(param_1 + 0x40),param_2);
          iVar6 = iVar6 + iVar14;
          uVar5 = (int)uVar12 + 1;
          uVar12 = (ulonglong)uVar5;
        } while (uVar5 < local_b0);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x59) = 1;
    }
    iVar14 = (**(code **)(*param_2 + 0xd8))(param_2);
    iVar2 = (**(code **)(*param_2 + 0xd0))(param_2,local_80,&local_ac,local_c4);
    iVar6 = iVar6 + iVar14 + iVar2;
  }
  local_98 = (**(code **)(*param_2 + 200))(param_2);
  local_98 = iVar6 + local_98;
  local_c8 = 0x811c9e53;
  pIVar7 = &IMAGE_DOS_HEADER_180000000;
  puVar3 = (undefined4 *)0x1809f09b4;
  local_b8 = 0x1809f2ed0;
  local_a0 = 0x21f1c20ce072a0cb;
  local_c0 = 0x1e072a0cb;
LAB_1809f09e4:
  puVar17 = puVar3;
  if ((pIVar7 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar8._0_1_ = pIVar7->e_magic[0], lVar8._1_1_ = pIVar7->e_magic[1],
     lVar8._2_2_ = pIVar7->e_cblp, lVar8._4_2_ = pIVar7->e_cp, lVar8._6_2_ = pIVar7->e_crlc,
     -1 < lVar8)) {
    local_a0 = 0x2621fc0;
    pIVar13 = pIVar7;
    do {
      if (puVar3 < IMAGE_DOS_HEADER_180000000.e_magic + lVar8 + 8) {
        pIVar7 = pIVar13;
        if (-1 < lVar8) {
          plVar4 = (longlong *)(lVar8 + 0x180000000);
          if (plVar4 < puVar3 + 1) {
            local_58[0] = *puVar3;
            goto LAB_1809f0a50;
          }
        }
        break;
      }
      pIVar7 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
      lVar8._0_2_ = pIVar13->e_cparhdr;
      lVar8._2_2_ = pIVar13->e_minalloc;
      lVar8._4_2_ = pIVar13->e_maxalloc;
      lVar8._6_2_ = pIVar13->e_ss;
      pIVar13 = pIVar7;
    } while (-1 < lVar8);
  }
  goto LAB_1809f0a80;
  while (plVar4 = (longlong *)(lVar8 + 0x180000000), plVar4 < puVar3 + 1) {
LAB_1809f0a50:
    *(longlong *)(&stack0x00017fffffa8 + (lVar8 - (longlong)puVar3)) = *plVar4 + -0x180000000;
    pIVar13 = (IMAGE_DOS_HEADER *)&pIVar13->e_cparhdr;
    lVar8 = *(longlong *)pIVar13;
    puVar17 = local_58;
    if (lVar8 < 0) break;
  }
LAB_1809f0a80:
  do {
    puVar9 = &local_c8;
    FUN_1809ef0f5(&DAT_0000df08,puVar17,0);
    uVar5 = FUN_1809f0fe3();
    *puVar9 = uVar5;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar16 = uVar16 * local_c8 + (uVar16 * local_c8 >> 0xc);
  local_c8 = local_c8 * 0x10001d1;
  if ((uVar16 & 0x1c) != 0) {
    uVar16 = uVar16 * (uVar16 >> 0x12);
  }
  if ((uVar16 & 0x1f80) != 0) {
    uVar16 = uVar16 ^ uVar16 >> 5;
  }
  uVar16 = uVar16 ^ uVar16 >> 0xc;
  puVar3 = puVar3 + 1;
  if (puVar3 == (undefined4 *)0x1809f2ed0) {
    do {
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
      local_a8[0] = local_c8;
      local_8c = uVar16;
    } while (uVar5 != 0);
    do {
      puVar9 = local_a8;
      uVar5 = FUN_180a0ab69(&LAB_18113e030);
      *puVar9 = uVar5;
      FUN_1809ef6d8();
      uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = local_a8[0] >> 0xd | local_a8[0] << 0x13;
    local_c8 = ~uVar5;
    uVar5 = (uint)local_c0 & uVar5;
    uVar15 = ~(uint)local_c0 & local_c8 | uVar5;
    if (uVar15 == uVar15 >> 5) {
      FUN_1809f0ce5((longlong)(int)local_94,~-(ulonglong)uVar5 + 1);
      return;
    }
    FUN_1809f184c();
    thunk_FUN_1805a9280();
    return;
  }
  goto LAB_1809f09e4;
}



############ FUN_ 180710410 size=1702 ############

/* WARNING: Instruction at (ram,0x0001807108b2) overlaps instruction at (ram,0x0001807108b0)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180710ba2) */
/* WARNING: Removing unreachable block (ram,0x00018071085d) */
/* WARNING: Removing unreachable block (ram,0x0001807108b2) */
/* WARNING: Removing unreachable block (ram,0x000180710865) */
/* WARNING: Removing unreachable block (ram,0x000180710652) */
/* WARNING: Removing unreachable block (ram,0x000180710524) */
/* WARNING: Removing unreachable block (ram,0x00018071053e) */
/* WARNING: Removing unreachable block (ram,0x000180710543) */
/* WARNING: Removing unreachable block (ram,0x0001807106be) */
/* WARNING: Removing unreachable block (ram,0x0001807109cc) */
/* WARNING: Removing unreachable block (ram,0x000180710877) */

undefined8 FUN_180710410(longlong param_1,undefined4 param_2,longlong param_3,ulonglong param_4)

{
  longlong lVar1;
  undefined1 *puVar2;
  ulonglong uVar3;
  undefined8 uVar4;
  code **ppcVar5;
  longlong lVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  int iVar12;
  uint uVar13;
  undefined1 *puVar14;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 local_b8 [32];
  undefined4 local_98;
  uint local_94;
  undefined8 local_90;
  undefined8 local_88;
  uint local_80;
  code *local_78 [5];
  ulonglong local_50;
  
  puVar10 = local_b8;
  local_50 = DAT_182615970 ^ (ulonglong)local_b8;
  uVar13 = (uint)&stack0x00000000 & 0x3ff;
  if ((((uVar13 + 2) * (uVar13 + 1) * uVar13) % 3 & 0x22) == 0) {
    uVar13 = (uint)&stack0x00000000 & 0x30ff;
    uVar13 = (uVar13 * uVar13 + 1) % 7;
  }
  else {
    uVar13 = 1;
  }
  local_80 = ((int)(-uVar13 | uVar13) >> 0x1f) * -0x1581 ^ 0x1141;
  local_88 = 0x1815361a4;
  local_90 = 0x1815362a4;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  iVar12 = (((((((((((iRam00000001815361a4 * 0x6b + iRam00000001815361a8) * 0x6b +
                    iRam00000001815361ac) * 0x6b + iRam00000001815361b0) * 0x6b +
                  iRam00000001815361b4) * 0x6b + iRam00000001815361b8) * 0x6b + iRam00000001815361bc
                ) * 0x6b + iRam00000001815361c0) * 0x6b + iRam00000001815361c4) * 0x6b +
             iRam00000001815361c8) * 0x6b + iRam00000001815361cc) * 0x6b + iRam00000001815361d0) *
           0x6b + iRam00000001815361d4;
  piVar7 = (int *)0x1815361d8;
  puVar14 = (undefined1 *)register0x00000020;
  local_98 = param_2;
  do {
    uVar4 = rdtsc();
    local_94 = (uint)uVar4 ^ (uint)((ulonglong)uVar4 >> 0x20);
    FUN_1807110f4();
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_94 = (local_94 * -0x4601e57b >> 0x18 ^ local_94 * -0x4601e57b) * -0x166a13ad;
  if (local_94 < 0xf00f00) {
    local_78[0] = (code *)0x0;
    do {
      ppcVar5 = local_78;
      func_0x00018071006c(ppcVar5,local_78);
      *ppcVar5 = FUN_18141db20;
      uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar13 != 0);
    uVar3 = (*local_78[0])();
    if (1 < uVar3) {
      lVar6 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar6 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar6 = *(longlong *)register0x00000020;
      }
    }
  }
  lVar6 = 4;
  do {
    iVar12 = (((iVar12 * 0x6b + *piVar7) * 0x6b + piVar7[1]) * 0x6b + piVar7[2]) * 0x6b + piVar7[3];
    piVar7 = piVar7 + 4;
    lVar6 = lVar6 + -1;
  } while (lVar6 != 0);
  do {
    param_3 = param_3 + param_1;
    lVar6 = ((param_1 - param_3 ^ 0xffffffffffffffffU) + 1) - param_3;
    param_1 = -lVar6;
    param_3 = param_3 + lVar6;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  lVar6 = 3;
  do {
    piVar8 = piVar7;
    iVar12 = (((((iVar12 * 0x6b + *piVar8) * 0x6b + piVar8[1]) * 0x6b + piVar8[2]) * 0x6b +
              piVar8[3]) * 0x6b + piVar8[4]) * 0x6b + piVar8[5];
    lVar6 = lVar6 + -1;
    piVar7 = piVar8 + 6;
  } while (lVar6 != 0);
  do {
    FUN_18070f174(0x6c2c);
    param_4 = ~((param_4 ^ 0xffffffffffffffff) + 1) + 1;
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  local_90 = 0x8067a5a24ac3a7f9;
  local_94 = 0x4ac3a7f9;
  piVar7 = piVar8 + 0xd;
  if (((ulonglong)piVar7 & 0xe0) == 0) {
    uVar13 = 1;
  }
  else {
    uVar13 = 0x1b;
  }
  piVar9 = (int *)((longlong)piVar7 +
                  ((longlong)(((int)(-uVar13 | uVar13) >> 0x1f) * -0x68b8) ^ 0x68bcU));
  uVar13 = ((((((((((((((((iVar12 * 0x6b + piVar8[6]) * 0x6b + piVar8[7]) * 0x6b + piVar8[8]) * 0x6b
                       + piVar8[9]) * 0x6b + piVar8[10]) * 0x6b + piVar8[0xb]) * 0x6b + piVar8[0xc])
                    * 0x6b + *piVar7) * 0x6b + *piVar9) * 0x6b + piVar9[1]) * 0x6b + piVar9[2]) *
                0x6b + piVar9[3]) * 0x6b + piVar9[4]) * 0x6b + piVar9[5]) * 0x6b + piVar9[6]) * 0x6b
           + piVar9[7]) * 0x6b + piVar9[8];
  uVar13 = (uVar13 * 0x8000 | uVar13 >> 0x11) + 0x5c83688d ^ 0x4ac3a7f9;
  if ((uVar13 & 0x7ffffff) != 0 || uVar13 != 0) {
    FUN_180710ca2();
    uVar4 = thunk_FUN_1805a9280();
    return uVar4;
  }
  lVar6 = (longlong)(int)local_80;
  puVar2 = puVar10;
  do {
    puVar11 = puVar2;
    *(ulonglong *)(puVar11 + -8) = param_4;
    *(undefined1 **)(puVar11 + -0x10) = puVar14;
    *(longlong *)(puVar11 + -0x18) = param_1;
    lVar1 = -lVar6;
    param_1 = *(longlong *)(puVar11 + lVar1 + 0x4a8);
    puVar14 = *(undefined1 **)(puVar11 + lVar1 + 0x4b0);
    param_4 = *(ulonglong *)(puVar11 + lVar1 + 0x4b8);
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar11 + lVar1 + 0x4c0;
  } while (uVar13 != 0);
  if ((param_1 != 0) && ((param_3 != 0 || (param_4 != 0)))) {
    uVar13 = *(uint *)(puVar11 + lVar1 + 0x4e0);
    if (0x20 < *(uint *)(puVar11 + lVar1 + 0x4e0)) {
      uVar13 = 0x20;
    }
    *(undefined8 *)(puVar11 + lVar1 + 0x4b8) = 0x180710b0e;
    FUN_18096f860(param_1,puVar11 + lVar1 + 0x508);
    if (param_4 != 0) {
      *(undefined1 **)(puVar11 + lVar1 + 0x4b8) = &LAB_180710b23;
      FUN_1806213f0(param_4,puVar11 + lVar1 + 0x508,0x20);
    }
    if ((param_3 != 0) && (uVar13 != 0)) {
      *(undefined8 *)(puVar11 + lVar1 + 0x4b8) = 0x180710b3f;
      FUN_180707db0(uVar13,puVar11 + lVar1 + 0x508,param_3);
    }
  }
  *(undefined **)(puVar11 + lVar1 + 0x4b8) = &UNK_180710c92;
}



############ FUN_ 180970450 size=2220 ############

/* WARNING: Instruction at (ram,0x000180970bcf) overlaps instruction at (ram,0x000180970bce)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180970c42) */
/* WARNING: Removing unreachable block (ram,0x000180970786) */
/* WARNING: Removing unreachable block (ram,0x0001809704ca) */
/* WARNING: Removing unreachable block (ram,0x0001809704ab) */
/* WARNING: Removing unreachable block (ram,0x0001809706b3) */
/* WARNING: Removing unreachable block (ram,0x000180970bcc) */
/* WARNING: Removing unreachable block (ram,0x000180970899) */

void FUN_180970450(undefined4 *param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  ulonglong uVar4;
  undefined1 *puVar5;
  uint uVar6;
  uint uVar8;
  longlong lVar9;
  ulonglong uVar10;
  longlong lVar11;
  longlong unaff_R13;
  longlong lVar12;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  ulonglong uVar7;
  
  puVar5 = auStack_58;
  uVar8 = (uint)&stack0x00000000;
  uVar1 = uVar8 & 0x1ff;
  uVar6 = uVar8 & 0x3dff;
  uVar7 = (ulonglong)uVar6;
  uVar6 = (uVar6 + 1) * uVar6 + 7;
  uVar8 = (((uVar8 & 0x6ff) + 1) * (uVar8 & 0x6ff) + 7) % 0x51 | uVar8;
  uVar10 = (ulonglong)uVar8;
  iVar3 = (uVar1 + 2) * (uVar1 + 1) * uVar1;
  param_1[0x22] = DAT_18260c2d0;
  do {
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = (((((((DAT_181606458 ^
                (DAT_181606454 ^
                (DAT_181606450 ^
                (DAT_18160644c ^
                (DAT_181606448 ^
                (DAT_181606444 ^ (DAT_181606440 ^ 0x811c9ddb) * 0x1000193) * 0x1000193) * 0x1000193)
                * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193 ^ DAT_18160645c) * 0x1000193 ^
              DAT_181606460) * 0x1000193 ^ DAT_181606464) * 0x1000193 ^ DAT_181606468) * 0x1000193 ^
           DAT_18160646c) * 0x1000193 ^ DAT_181606470) * 0x1000193 ^ DAT_181606474;
  param_1[0x23] = DAT_18260c2d4;
  uVar1 = uVar1 * 0x1000193;
  uVar4 = (ulonglong)uVar1;
  param_1[0x24] = DAT_18260c2d8;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = DAT_18160648c ^
          (DAT_181606488 ^
          (DAT_181606484 ^
          (DAT_181606480 ^ (DAT_18160647c ^ (DAT_181606478 ^ uVar1) * 0x1000193) * 0x1000193) *
          0x1000193) * 0x1000193) * 0x1000193;
  param_1[0x25] = DAT_18260c2dc;
  uVar1 = DAT_181606490 ^ uVar1 * 0x1000193;
  param_1[0x26] = DAT_18260c2e0;
  uVar1 = DAT_1816064ac ^
          (DAT_1816064a8 ^
          (DAT_1816064a4 ^
          (DAT_1816064a0 ^
          (DAT_18160649c ^
          (DAT_181606498 ^ (DAT_181606494 ^ uVar1 * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193
          ) * 0x1000193) * 0x1000193) * 0x1000193;
  do {
    if (uVar7 == 0x4ad875dc) {
      register0x00000020 =
           (BADSPACEBASE *)((~(ulonglong)register0x00000020 + 1 ^ 0xffffffffffffffff) + 1);
    }
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x000180970b7c(0x4c04);
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = DAT_1816064cc ^
          (DAT_1816064c8 ^
          (DAT_1816064c4 ^
          (DAT_1816064c0 ^
          (DAT_1816064bc ^
          (DAT_1816064b8 ^
          (DAT_1816064b4 ^ (DAT_1816064b0 ^ uVar1 * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193
          ) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193;
  param_1[0x27] = DAT_18260c2e4;
  uVar1 = DAT_1816064e8 ^
          (DAT_1816064e4 ^
          (DAT_1816064e0 ^
          (DAT_1816064dc ^
          (DAT_1816064d8 ^
          (DAT_1816064d4 ^ (DAT_1816064d0 ^ uVar1 * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193
          ) * 0x1000193) * 0x1000193) * 0x1000193;
  param_1[0x28] = DAT_18260c2e8;
  uVar2 = DAT_1816064ec ^ uVar1 * 0x1000193;
  param_1[0x29] = DAT_18260c2ec;
  uVar1 = DAT_181606538;
  uVar2 = DAT_181606534 ^
          (DAT_181606530 ^
          (DAT_18160652c ^
          (DAT_181606528 ^
          (DAT_181606524 ^
          (DAT_181606520 ^
          (DAT_18160651c ^
          (DAT_181606518 ^
          (DAT_181606514 ^
          (DAT_181606510 ^
          (DAT_18160650c ^
          (DAT_181606508 ^
          (DAT_181606504 ^
          (DAT_181606500 ^
          (DAT_1816064fc ^
          (DAT_1816064f8 ^
          (DAT_1816064f4 ^ (DAT_1816064f0 ^ uVar2 * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193
          ) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) *
          0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) *
          0x1000193;
  param_1[1] = 0;
  uVar1 = (DAT_18160653c ^ (uVar1 ^ uVar2 * 0x1000193) * 0x1000193) * 0x1000193 ^ 0x690c978f;
  uVar1 = (uVar1 << 0xc | uVar1 >> 0x14) ^ 0xb3e0165c;
  do {
    lVar9 = uVar4 + uVar10;
    lVar11 = (longlong)register0x00000020 + unaff_R13;
    lVar12 = unaff_R13 - lVar11;
    register0x00000020 = (BADSPACEBASE *)-lVar12;
    unaff_R13 = lVar11 + lVar12;
    uVar4 = (uVar10 - lVar9 ^ 0xffffffffffffffff) + 1;
    uVar10 = lVar9 - uVar4;
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  *param_1 = 0;
  if ((uVar1 >> 0x11 | uVar1 << 0xf) != 0xfecce9fe) {
    thunk_FUN_1805a9280();
    return;
  }
  do {
    *(ulonglong *)(puVar5 + -8) = uVar4;
    *(undefined4 **)(puVar5 + -0x10) = param_1;
    *(ulonglong *)(puVar5 + -0x18) = uVar7;
    lVar9 = -(longlong)
             (int)(0x261a << ((byte)(iVar3 * 0x55555555 + ((iVar3 >> 1) - (iVar3 >> 3)) >> 0x1e) &
                              (char)uVar6 + (char)(uVar6 / 0x51) * -0x51 & 0x1f) ^
                  (int)(-uVar8 | uVar8) >> 0x1f & 0x25faU);
    uVar7 = *(ulonglong *)(puVar5 + lVar9 + 0x3c8);
    param_1 = *(undefined4 **)(puVar5 + lVar9 + 0x3d0);
    uVar4 = *(ulonglong *)(puVar5 + lVar9 + 0x3d8);
    puVar5 = puVar5 + lVar9 + 0x3e0;
    uVar1 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  return;
}



############ FUN_ 181357a40 size=3724 ############

/* WARNING: Instruction at (ram,0x0001813582cc) overlaps instruction at (ram,0x0001813582c8)
    */
/* WARNING: Removing unreachable block (ram,0x000181358cf0) */
/* WARNING: Removing unreachable block (ram,0x000181358b1d) */
/* WARNING: Removing unreachable block (ram,0x000181358863) */
/* WARNING: Removing unreachable block (ram,0x00018135866f) */
/* WARNING: Removing unreachable block (ram,0x00018135847d) */
/* WARNING: Removing unreachable block (ram,0x000181357b12) */
/* WARNING: Removing unreachable block (ram,0x000181357ac5) */
/* WARNING: Removing unreachable block (ram,0x000181358091) */
/* WARNING: Removing unreachable block (ram,0x000181358504) */
/* WARNING: Removing unreachable block (ram,0x000181358a38) */
/* WARNING: Removing unreachable block (ram,0x000181358ccf) */
/* WARNING: Removing unreachable block (ram,0x000181358cdc) */
/* WARNING: Removing unreachable block (ram,0x000181358ce0) */
/* WARNING: Removing unreachable block (ram,0x000181358761) */
/* WARNING: Removing unreachable block (ram,0x0001813582c8) */
/* WARNING: Removing unreachable block (ram,0x000181358b00) */
/* WARNING: Removing unreachable block (ram,0x000181357b65) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_181357a40(undefined8 *param_1)

{
  int *piVar1;
  undefined1 uVar2;
  ulonglong uVar3;
  uint uVar4;
  undefined8 uVar5;
  ulonglong uVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  ulonglong uVar14;
  uint uVar15;
  ulonglong uVar16;
  undefined8 unaff_R14;
  longlong lVar17;
  ulonglong uVar18;
  int *piVar19;
  ulonglong uVar20;
  bool bVar21;
  char cVar22;
  char cVar23;
  int unaff_retaddr;
  undefined1 auStack_88 [32];
  undefined4 *local_68;
  undefined4 *local_60;
  undefined *local_58;
  
  puVar9 = auStack_88;
  puVar7 = auStack_88;
  uVar12 = (uint)&stack0x00000000;
  uVar4 = uVar12 & 0x3bf;
  uVar15 = uVar12 & 0x13f;
  uVar3 = (ulonglong)uVar15;
  iVar11 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  uVar4 = (uVar12 & 0xfff) * (uVar12 & 0xfff) * 0x10 + 4;
  uVar10 = ((uVar12 & 0x11ff) * (uVar12 & 0x11ff) + 1) % 7;
  uVar4 = ((int)(-uVar10 | uVar10) >> 0x1f) >> ((char)uVar4 + (char)(uVar4 / 0x13) * -0x13 & 0x1fU);
  uVar12 = uVar12 & 0x2bf;
  uVar12 = 0xf3c0 - ((uVar12 + 2) * (uVar12 + 1) * uVar12) % 3 ^
           (int)(-uVar4 | uVar4) >> 0x1f & 0xf6c0U;
  uVar18 = CONCAT71((int7)((ulonglong)unaff_R14 >> 8),*(char *)((longlong)param_1 + 0xc) == '\0');
  local_68 = &DAT_18136c310;
  local_58 = &DAT_18136c410;
  uVar5 = 0xe530d593;
  uVar4 = (DAT_18136c310 + 0x153e9ef4) * -0x395b586d;
  uVar10 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c314) * -0x395b586d;
  uVar10 = uVar10 ^ uVar10 >> 0x10;
  bVar21 = uVar10 == 0;
  piVar19 = (int *)register0x00000020;
  uVar4 = uVar10;
  do {
    cVar23 = '\0';
    cVar22 = (int)uVar4 < 0;
    FUN_1813582ac(0x6e00);
    if (bVar21 || cVar23 != cVar22) {
      piVar19 = (int *)((~(ulonglong)piVar19 + 1 ^ 0xffffffffffffffff) + 1);
    }
    uVar4 = (*piVar19 + 1) * *piVar19 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    bVar21 = uVar4 == 0;
  } while (!bVar21);
  *(undefined1 *)((longlong)param_1 + 0xc) = 1;
  uVar4 = (DAT_18136c318 + uVar10) * -0x395b586d;
  do {
    uVar10 = (*piVar19 + 1) * *piVar19 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar4 = (DAT_18136c31c + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c320) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c324) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c328) * -0x395b586d;
  uVar20 = (ulonglong)(uVar4 ^ uVar4 >> 0x10);
  cVar22 = FUN_180528bd0(*param_1,uVar5);
  if (cVar22 == *(char *)(param_1 + 1)) {
    uVar14 = (ulonglong)uVar12;
  }
  else {
    uVar14 = 0x100;
    local_60 = &DAT_18120faec;
    local_68 = (undefined4 *)&LAB_18120fbec;
    uVar4 = (DAT_18120faec + -0x5dbcd0be) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120faf0) * -0x395b586d;
    do {
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar2 = FUN_180528bd0(*param_1);
    *(undefined1 *)(param_1 + 1) = uVar2;
    uVar4 = (DAT_18120faf4 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120faf8) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fafc) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb00) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb04) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb08) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb0c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb10) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb14) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb18) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb1c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb20) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb24) * -0x395b586d;
    uVar18 = (ulonglong)(uVar4 ^ uVar4 >> 0x10);
    do {
      lVar17 = (longlong)register0x00000020 + uVar18;
      register0x00000020 = (BADSPACEBASE *)(~(uVar18 - lVar17) + 1);
      uVar18 = lVar17 - (longlong)register0x00000020;
      uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar4 = (DAT_18120fb28 + (int)uVar18) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb2c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb30) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb34) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb38) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb3c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb40) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb44) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb48) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18120fb4c) * -0x395b586d;
    do {
      uVar14 = (~uVar14 + 1 ^ 0xffffffffffffffff) + 1;
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar4 = (_UNK_18120fb50 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb54) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb58) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb5c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb60) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb64) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb68) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb6c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb70) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb74) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb78) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb7c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb80) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb84) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb88) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb8c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb90) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb94) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb98) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fb9c) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fba0) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fba4) * -0x395b586d;
    do {
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar4 = (_UNK_18120fba8 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbac) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbb0) * -0x395b586d;
    do {
      uVar14 = (-uVar14 ^ 0xffffffffffffffff) + 1;
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar4 = (_UNK_18120fbb4 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbb8) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbbc) * -0x395b586d;
    do {
                    /* WARNING: Call to offcut address within same function */
      func_0x00018135883f(0xfc2c);
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar4 = (_UNK_18120fbc0 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbc4) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbc8) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbcc) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbd0) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbd4) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbd8) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbdc) * -0x395b586d;
    uVar4 = uVar4 ^ uVar4 >> 0x10;
    do {
      func_0x000181358f1d();
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    uVar18 = CONCAT71((uint7)(uint3)(uVar4 >> 8),1);
    uVar4 = (_UNK_18120fbe0 + uVar4) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbe4) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + _UNK_18120fbe8) * -0x395b586d;
    uVar4 = (uVar4 >> 0x10 ^ uVar4) + 0xb079a1d2;
    uVar4 = ((uVar4 >> 0x10 | uVar4 * 0x10000) & 0xb8f0470f |
            (uVar4 * 0x10000 | uVar4 >> 0x10) & 0x470fb8f0) + 0x72246ee;
    uVar4 = (uVar4 * 0x200000 | uVar4 >> 0xb) + 0xcf1faa7a;
    uVar6 = (ulonglong)uVar4;
    if ((char)((uVar4 == 0xc60d242f) * '\x1d') == '\0') {
      uVar3 = thunk_FUN_1805a9280((longlong)
                                  (int)(0x1c10 << ((byte)(((iVar11 >> 1) - (iVar11 >> 3)) +
                                                          iVar11 * 0x55555555 >> 0x1e) & 0x1f) ^
                                       (0x10b0 >> ((char)((ulonglong)
                                                          ((longlong)
                                                           (int)((uVar15 + 2) * (uVar15 + 1) *
                                                                uVar15) * 0x55555556) >> 0x20) * -3
                                                  & 0x1fU) | 0x13f0U)),uVar6,
                                  ((uVar14 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
      return uVar3;
    }
    puVar8 = puVar7;
    uVar16 = (longlong)(int)uVar12;
    do {
      *(ulonglong *)(puVar8 + -8) = uVar3;
      *(ulonglong *)(puVar8 + -0x10) = uVar20;
      *(ulonglong *)(puVar8 + -0x18) = uVar6;
      uVar14 = -(~uVar16 + 1);
      lVar17 = -uVar16;
      uVar6 = *(ulonglong *)(puVar8 + lVar17 + 0x4e8);
      uVar20 = *(ulonglong *)(puVar8 + lVar17 + 0x4f0);
      uVar3 = *(ulonglong *)(puVar8 + lVar17 + 0x4f8);
      puVar9 = puVar8 + lVar17 + 0x500;
      uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
      puVar8 = puVar8 + lVar17 + 0x500;
      uVar16 = uVar14;
    } while (uVar4 != 0);
  }
  uVar4 = (DAT_18136c32c + (int)uVar20) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c330) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c334) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c338) * -0x395b586d;
  do {
    uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar4 = (DAT_18136c33c + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c340) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c344) * -0x395b586d;
  do {
    *(undefined8 *)(puVar9 + -8) = 0x18135899e;
    FUN_18135919c(0x6e00);
    uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar4 = (DAT_18136c348 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c34c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c350) * -0x395b586d;
  do {
    uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar4 = (DAT_18136c354 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c358) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c35c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c360) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c364) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c368) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c36c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c370) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_18136c374) * -0x395b586d;
  piVar19 = &DAT_18136c378;
  do {
    uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  lVar17 = 7;
  uVar4 = (DAT_18136c378 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  do {
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[1]) * -0x395b586d;
    piVar1 = piVar19 + 2;
    piVar19 = piVar19 + 3;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *piVar1) * -0x395b586d;
    uVar4 = ((uVar4 >> 0x10 ^ uVar4) + *piVar19) * -0x395b586d;
    lVar17 = lVar17 + -1;
  } while (lVar17 != 0);
  uVar4 = uVar4 ^ uVar4 >> 0x10;
  uVar3 = (ulonglong)uVar4;
  uVar10 = (uint)piVar19;
  if ((*(ulonglong *)(puVar9 + 0x30) & 0x34) == 0) {
    uVar12 = uVar10 & 0x7f | 0x30;
    uVar15 = uVar10 & 0x1f | 0x1b;
    uVar12 = uVar12 * uVar12 * 0xd973 ^ uVar15 * uVar15 * 0xfcb5;
  }
  else {
    uVar12 = (((uVar4 & 0x3ff) + 1) * (uVar4 & 0x3ff) + 7) % 0x51;
  }
  uVar15 = (uint)*(ulonglong *)(puVar9 + 0x30) & 0x37f;
  uVar10 = uVar10 & 0x7f;
  iVar11 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
  iVar13 = (uVar15 + 2) * (uVar15 + 1) * uVar15;
  piVar19 = (int *)((longlong)piVar19 +
                   (0x358aL >>
                    ((char)iVar13 +
                     ((char)(iVar13 / 3) + (char)(iVar13 >> 0x1f) +
                     (char)(((longlong)iVar13 / 3 + ((longlong)iVar13 >> 0x3f) & 0xffffffffU) >>
                           0x1f)) * -3 +
                     (char)(((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e) & 0x3fU)
                   ^ 0xffffffffffffca3eU) +
                   (ulonglong)(~((int)(-uVar12 | uVar12) >> 0x1f & 0xffffffafU) & 0xa47a));
  uVar4 = (*piVar19 + uVar4) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[1]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[2]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[3]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[4]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[5]) * -0x395b586d;
  do {
    uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar4 = (piVar19[6] + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[7]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[8]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[9]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[10]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[0xb]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[0xc]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[0xd]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[0xe]) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + piVar19[0xf]) * -0x395b586d;
  uVar4 = (uVar4 >> 0x10 ^ uVar4) + 0xb079a1d2;
  uVar4 = ((uVar4 >> 0x10 | uVar4 * 0x10000) & 0xb8f0470f |
          (uVar4 * 0x10000 | uVar4 >> 0x10) & 0x470fb8f0) + 0x72246ee;
  if (*(int *)(puVar9 + 0xa8) == (uVar4 * 0x200000 | uVar4 >> 0xb) + 0xcf1faa7a) {
    piVar19 = (int *)(puVar9 + 0x88);
    do {
      *(ulonglong *)(puVar9 + -8) = uVar3;
      *(ulonglong *)(puVar9 + -0x10) = uVar18;
      *(ulonglong *)(puVar9 + -0x18) = uVar20;
      lVar17 = -(longlong)(int)uVar14;
      uVar20 = *(ulonglong *)(puVar9 + lVar17 + 0x4e8);
      uVar18 = *(ulonglong *)(puVar9 + lVar17 + 0x4f0);
      uVar3 = *(ulonglong *)(puVar9 + lVar17 + 0x4f8);
      puVar9 = puVar9 + lVar17 + 0x500;
      uVar4 = (*piVar19 + 1) * *piVar19 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    return uVar18 & 0xff;
  }
  *(ulonglong *)(puVar9 + -8) = (ulonglong)uVar12;
  *(ulonglong *)(puVar9 + -0x10) = uVar3;
  *(undefined8 *)(puVar9 + -0x18) = 0;
  uVar3 = thunk_FUN_1805a9280();
  return uVar3;
}



############ FUN_ 180707e90 size=2870 ############

/* WARNING: Instruction at (ram,0x000180708238) overlaps instruction at (ram,0x000180708237)
    */
/* WARNING: Removing unreachable block (ram,0x000180708237) */
/* WARNING: Removing unreachable block (ram,0x000180708003) */
/* WARNING: Removing unreachable block (ram,0x000180708402) */
/* WARNING: Removing unreachable block (ram,0x000180707fea) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_180707e90(longlong param_1,longlong param_2,undefined1 *param_3)

{
  undefined1 uVar1;
  undefined8 uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  ulonglong uVar6;
  int *piVar7;
  int *piVar8;
  uint uVar9;
  ulonglong uVar10;
  uint uVar11;
  longlong lVar12;
  uint uVar13;
  uint uVar14;
  longlong lVar15;
  int unaff_retaddr;
  
  lVar15 = 0x3490;
  uVar3 = (iRam00000001811974f0 + -0x758f68fe) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam00000001811974f4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam00000001811974f8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam00000001811974fc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam0000000181197500) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + _DAT_181197504) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam0000000181197508) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam000000018119750c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam0000000181197510) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + iRam0000000181197514) * 0x401;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    lVar12 = (longlong)register0x00000020 + lVar15;
    lVar15 = lVar15 - lVar12;
    register0x00000020 = (BADSPACEBASE *)-lVar15;
    lVar15 = lVar12 + lVar15;
    uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar15 = 3;
  uVar3 = (iRam0000000181197518 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  piVar7 = &iRam0000000181197518;
  do {
    piVar8 = piVar7;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[1]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[2]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[3]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[4]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[5]) * 0x401;
    lVar15 = lVar15 + -1;
    piVar7 = piVar8 + 5;
  } while (lVar15 != 0);
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (piVar8[6] + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[7]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[8]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[9]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[10]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xb]) * 0x401;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (piVar8[0xc] + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xd]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xe]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xf]) * 0x401;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (piVar8[0x10] + (uVar3 ^ uVar3 >> 6)) * 0x401;
  piVar7 = piVar8 + 0x12;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0x11]) * 0x401;
  uVar4 = (uint)piVar7 & 0x59ff;
  uVar11 = ((uVar3 >> 6 ^ uVar3) + *piVar7) * 0x401;
  uVar11 = uVar11 ^ uVar11 >> 6;
  uVar3 = uVar11 & 7 | 0x3e;
  uVar3 = uVar3 * uVar3 * 0x871d ^ 0xa3b565d;
  piVar7 = (int *)((longlong)piVar7 +
                  ((longlong)
                   (0x3746 <<
                   ((char)((int)-((uVar4 * uVar4 + 1) % 7) >> 0x1f) -
                    ((char)((byte)(-uVar3 >> 0x18) | (byte)(uVar3 >> 0x18)) >> 7) & 0x1fU)) ^
                  0x3742U));
  uVar3 = (*piVar7 + uVar11) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar7[1]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar7[2]) * 0x401;
  piVar8 = piVar7 + 4;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar7[3]) * 0x401;
  uVar11 = ((uVar3 >> 6 ^ uVar3) + *piVar8) * 0x401;
  uVar11 = uVar11 ^ uVar11 >> 6;
  uVar3 = (uint)piVar8 & 0x75ff;
  uVar13 = (uint)piVar8 & 0x17f;
  uVar14 = uVar11 & 0x1f;
  uVar9 = (uVar3 * uVar3 + 1) % 7;
  uVar4 = (uVar14 | 0xc) * (uVar14 | 0xc) * 0xd211 ^ 0x19433c0;
  uVar3 = uVar14 + 1;
  uVar10 = (ulonglong)uVar3;
  uVar4 = (int)((-uVar4 | uVar4) & (-uVar9 | uVar9)) >> 0x1f;
  iVar5 = (uVar13 + 2) * (uVar13 + 1) * uVar13;
  uVar6 = ((longlong)
           (int)((uVar14 * uVar14 * uVar3 * uVar3 & 2) <<
                ((char)iVar5 + (char)((ulonglong)((longlong)iVar5 * 0x55555556) >> 0x20) * -3 &
                0x1fU)) | 0x6b7eU) ^ 0xffffffffffff94a2;
  piVar8 = (int *)((longlong)piVar8 +
                  uVar6 + ((longlong)(((int)(-uVar4 | uVar4) >> 0x1f) * -0xad23) ^ 0xad0bU));
  uVar3 = (*piVar8 + uVar11) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[1]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[2]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[3]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[4]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[5]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[6]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[7]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[8]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[9]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[10]) * 0x401;
  do {
    lVar15 = uVar6 + uVar10;
    uVar6 = ~(uVar10 - lVar15) + 1;
    uVar10 = lVar15 - uVar6;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (piVar8[0xb] + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xc]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xd]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xe]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0xf]) * 0x401;
  do {
    FUN_18070749d(0xd014,uVar6);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (piVar8[0x10] + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0x11]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0x12]) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar8[0x13]) * 0x401;
  uVar3 = uVar3 >> 6 ^ uVar3;
  if ((uVar3 >> 8 | uVar3 << 0x18) != 0x2c2f337b) {
    do {
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    if (((param_1 == 0) || (param_2 == 0)) || (param_3 == (undefined1 *)0x0)) {
      uVar2 = 99;
    }
    else {
      uVar1 = FUN_18096b400(param_1,param_2);
      *param_3 = uVar1;
      uVar2 = 0;
    }
    return uVar2;
  }
  FUN_1807077c2();
  uVar2 = thunk_FUN_1805a9280();
  return uVar2;
}



############ FUN_ 180bd7239 size=1264 ############

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

void FUN_180bd7239(void)

{
  ulonglong uVar1;
  uint uVar2;
  uint uVar3;
  ulonglong uVar4;
  longlong unaff_RBX;
  undefined1 *puVar5;
  ulonglong unaff_RBP;
  longlong unaff_RSI;
  ulonglong unaff_RDI;
  longlong in_R9;
  undefined8 in_R11;
  longlong unaff_R12;
  longlong lVar6;
  int *unaff_R15;
  int local_res20;
  int in_stack_00000078;
  longlong in_stack_00000080;
  ulonglong in_stack_00000088;
  uint in_stack_00000098;
  
  while( true ) {
    lVar6 = unaff_R12 + in_R9;
    uVar2 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    if (uVar2 == 0) break;
    FUN_180bd7238(0x7e0c);
    unaff_R12 = lVar6 - in_R9;
    if (in_R9 <= lVar6) {
      FUN_180bd7239();
      return;
    }
  }
  do {
    uVar2 = (in_stack_00000078 + 1) * in_stack_00000078 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  do {
    in_stack_00000088 = ((in_stack_00000088 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    uVar2 = (in_stack_00000078 + 1) * in_stack_00000078 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = *(uint *)(unaff_RSI + 0xfc + unaff_RBX) ^
          ((((*(uint *)(unaff_RSI + 0xec + unaff_RBX) ^
             (((((((((((((((((((((((((((((((((((((((((((*(uint *)(unaff_RSI + 0x40 + unaff_RBX) ^
                                                       (uint)lVar6) * 0x10001d1 ^
                                                      *(uint *)(unaff_RSI + 0x44 + unaff_RBX)) *
                                                      0x10001d1 ^
                                                     *(uint *)(unaff_RSI + 0x48 + unaff_RBX)) *
                                                     0x10001d1 ^
                                                    *(uint *)(unaff_RSI + 0x4c + unaff_RBX)) *
                                                    0x10001d1 ^
                                                   *(uint *)(unaff_RSI + 0x50 + unaff_RBX)) *
                                                   0x10001d1 ^
                                                  *(uint *)(unaff_RSI + 0x54 + unaff_RBX)) *
                                                  0x10001d1 ^
                                                 *(uint *)(unaff_RSI + 0x58 + unaff_RBX)) *
                                                 0x10001d1 ^ *(uint *)(unaff_RSI + 0x5c + unaff_RBX)
                                                ) * 0x10001d1 ^
                                               *(uint *)(unaff_RSI + 0x60 + unaff_RBX)) * 0x10001d1
                                              ^ *(uint *)(unaff_RSI + 100 + unaff_RBX)) * 0x10001d1
                                             ^ *(uint *)(unaff_RSI + 0x68 + unaff_RBX)) * 0x10001d1
                                            ^ *(uint *)(unaff_RSI + 0x6c + unaff_RBX)) * 0x10001d1 ^
                                           *(uint *)(unaff_RSI + 0x70 + unaff_RBX)) * 0x10001d1 ^
                                          *(uint *)(unaff_RSI + 0x74 + unaff_RBX)) * 0x10001d1 ^
                                         *(uint *)(unaff_RSI + 0x78 + unaff_RBX)) * 0x10001d1 ^
                                        *(uint *)(unaff_RSI + 0x7c + unaff_RBX)) * 0x10001d1 ^
                                       *(uint *)(unaff_RSI + 0x80 + unaff_RBX)) * 0x10001d1 ^
                                      *(uint *)(unaff_RSI + 0x84 + unaff_RBX)) * 0x10001d1 ^
                                     *(uint *)(unaff_RSI + 0x88 + unaff_RBX)) * 0x10001d1 ^
                                    *(uint *)(unaff_RSI + 0x8c + unaff_RBX)) * 0x10001d1 ^
                                   *(uint *)(unaff_RSI + 0x90 + unaff_RBX)) * 0x10001d1 ^
                                  *(uint *)(unaff_RSI + 0x94 + unaff_RBX)) * 0x10001d1 ^
                                 *(uint *)(unaff_RSI + 0x98 + unaff_RBX)) * 0x10001d1 ^
                                *(uint *)(unaff_RSI + 0x9c + unaff_RBX)) * 0x10001d1 ^
                               *(uint *)(unaff_RSI + 0xa0 + unaff_RBX)) * 0x10001d1 ^
                              *(uint *)(unaff_RSI + 0xa4 + unaff_RBX)) * 0x10001d1 ^
                             *(uint *)(unaff_RSI + 0xa8 + unaff_RBX)) * 0x10001d1 ^
                            *(uint *)(unaff_RSI + 0xac + unaff_RBX)) * 0x10001d1 ^
                           *(uint *)(unaff_RSI + 0xb0 + unaff_RBX)) * 0x10001d1 ^
                          *(uint *)(unaff_RSI + 0xb4 + unaff_RBX)) * 0x10001d1 ^
                         *(uint *)(unaff_RSI + 0xb8 + unaff_RBX)) * 0x10001d1 ^
                        *(uint *)(unaff_RSI + 0xbc + unaff_RBX)) * 0x10001d1 ^
                       *(uint *)(unaff_RSI + 0xc0 + unaff_RBX)) * 0x10001d1 ^
                      *(uint *)(unaff_RSI + 0xc4 + unaff_RBX)) * 0x10001d1 ^
                     *(uint *)(unaff_RSI + 200 + unaff_RBX)) * 0x10001d1 ^
                    *(uint *)(unaff_RSI + 0xcc + unaff_RBX)) * 0x10001d1 ^
                   *(uint *)(unaff_RSI + 0xd0 + unaff_RBX)) * 0x10001d1 ^
                  *(uint *)(unaff_RSI + 0xd4 + unaff_RBX)) * 0x10001d1 ^
                 *(uint *)(unaff_RSI + 0xd8 + unaff_RBX)) * 0x10001d1 ^
                *(uint *)(unaff_RSI + 0xdc + unaff_RBX)) * 0x10001d1 ^
               *(uint *)(unaff_RSI + 0xe0 + unaff_RBX)) * 0x10001d1 ^
              *(uint *)(unaff_RSI + 0xe4 + unaff_RBX)) * 0x10001d1 ^
             *(uint *)(unaff_RSI + 0xe8 + unaff_RBX)) * 0x10001d1) * 0x10001d1 ^
            *(uint *)(unaff_RSI + 0xf0 + unaff_RBX)) * 0x10001d1 ^
           *(uint *)(unaff_RSI + 0xf4 + unaff_RBX)) * 0x10001d1 ^
          *(uint *)(unaff_RSI + 0xf8 + unaff_RBX)) * 0x10001d1;
  uVar3 = (uVar2 * 0x40000000 | uVar2 * 0x10001d1 >> 2) ^ 0xdf3fb1c5;
  uVar2 = (uVar3 >> 3 ^ uVar3) >> 4 & 1;
  uVar3 = (uVar2 * 8 | uVar2) << 4 ^ uVar3;
  uVar4 = (ulonglong)uVar3;
  uVar1 = CONCAT71((int7)(unaff_RDI >> 8),uVar3 != in_stack_00000098);
  if ((uVar1 & 0x1ffff) == 0 && (int)uVar1 == 0) {
    if (unaff_RBP != 0) {
      do {
        uVar4 = unaff_RDI >> 3;
        *(char *)(unaff_RDI + in_stack_00000080) =
             (char)(*(ulonglong *)(in_stack_00000088 + uVar4 * 8) >> (((byte)unaff_RDI & 7) << 3));
        unaff_RDI = unaff_RDI + 1;
      } while (unaff_RDI < unaff_RBP);
    }
    puVar5 = (undefined1 *)register0x00000020;
    do {
      *(undefined8 *)(puVar5 + -8) = 0x180bd75e8;
      lVar6 = (longlong)local_res20;
      func_0x000180bd60ed();
      *(ulonglong *)(puVar5 + -8) = uVar4;
      *(undefined8 *)(puVar5 + -0x10) = in_R11;
      *(ulonglong *)(puVar5 + -0x18) = unaff_RDI;
      lVar6 = -lVar6;
      unaff_RDI = *(ulonglong *)(puVar5 + lVar6 + 0xc48);
      in_R11 = *(undefined8 *)(puVar5 + lVar6 + 0xc50);
      uVar4 = *(ulonglong *)(puVar5 + lVar6 + 0xc58);
      uVar2 = (*(int *)(puVar5 + lVar6 + 0xcd8) + 1) * *(int *)(puVar5 + lVar6 + 0xcd8) & 0x80000001
      ;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
      puVar5 = puVar5 + lVar6 + 0xc60;
    } while (uVar2 != 0);
    return;
  }
  if (unaff_RBP != 0) {
    do {
      *(char *)(unaff_RDI + in_stack_00000080) =
           (char)(*(ulonglong *)(in_stack_00000088 + (unaff_RDI & 0xfffffffffffffff8)) >>
                 (((byte)unaff_RDI & 7) << 3));
      unaff_RDI = unaff_RDI + 1;
    } while (unaff_RDI < unaff_RBP);
  }
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 180b06c70 size=1864 ############

/* WARNING: Removing unreachable block (ram,0x000180b06ca8) */
/* WARNING: Removing unreachable block (ram,0x000180b06d34) */
/* WARNING: Switch with 1 destination removed at 0x000180b074ed */

void FUN_180b06c70(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined1 *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  undefined8 uVar7;
  undefined1 *puVar8;
  longlong lVar9;
  undefined8 uVar10;
  undefined8 uVar11;
  int unaff_retaddr;
  undefined1 auStack_68 [32];
  ulonglong local_48;
  undefined8 local_40;
  uint local_38;
  undefined8 local_30;
  
  uVar11 = 0x7b0;
  if (((ulonglong)&stack0x00000000 & 0x4c0) == 0) {
    uVar4 = (uint)&stack0x00000000 & 0xaff;
    uVar2 = (uint)&stack0x00000000 & 0x7ff;
    uVar4 = (uVar4 * uVar4 + 1) % 7;
    uVar2 = (uVar2 * uVar2 + 1) % 7;
    uVar2 = (int)((-uVar2 | uVar2) & (-uVar4 | uVar4)) >> 0x1f;
    local_38 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0xa08b;
  }
  else {
    local_38 = 0xa08b;
  }
  local_38 = local_38 ^ 0xa84b;
  uVar10 = 0xa5ae63a1;
  lVar9 = 0x714;
  local_30 = 0x41675d515a8432a3;
  local_40 = 0x15a8432a3;
  uVar2 = (((((((((((((((((((((((DAT_181459ab8 ^ (DAT_181459ab4 ^ 0x811c9dc5) * 0x1000181) *
                                0x1000181 ^ DAT_181459abc) * 0x1000181 ^ DAT_181459ac0) * 0x1000181
                             ^ DAT_181459ac4) * 0x1000181 ^ DAT_181459ac8) * 0x1000181 ^
                           DAT_181459acc) * 0x1000181 ^ DAT_181459ad0) * 0x1000181 ^ DAT_181459ad4)
                         * 0x1000181 ^ DAT_181459ad8) * 0x1000181 ^ DAT_181459adc) * 0x1000181 ^
                      DAT_181459ae0) * 0x1000181 ^ DAT_181459ae4) * 0x1000181 ^ DAT_181459ae8) *
                    0x1000181 ^ DAT_181459aec) * 0x1000181 ^ DAT_181459af0) * 0x1000181 ^
                 DAT_181459af4) * 0x1000181 ^ DAT_181459af8) * 0x1000181 ^ DAT_181459afc) *
               0x1000181 ^ DAT_181459b00) * 0x1000181 ^ DAT_181459b04) * 0x1000181 ^ DAT_181459b08)
            * 0x1000181 ^ DAT_181459b0c) * 0x1000181 ^ DAT_181459b10) * 0x1000181;
  local_48 = (ulonglong)uVar2;
  do {
    lVar9 = ~-lVar9 + 1;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = ((DAT_181459bac ^
           ((((((((((((((((((((((((((((((((((((((DAT_181459b14 ^ uVar2) * 0x1000181 ^ DAT_181459b18)
                                               * 0x1000181 ^ DAT_181459b1c) * 0x1000181 ^
                                             DAT_181459b20) * 0x1000181 ^ DAT_181459b24) * 0x1000181
                                           ^ DAT_181459b28) * 0x1000181 ^ DAT_181459b2c) * 0x1000181
                                         ^ DAT_181459b30) * 0x1000181 ^ DAT_181459b34) * 0x1000181 ^
                                       DAT_181459b38) * 0x1000181 ^ DAT_181459b3c) * 0x1000181 ^
                                     DAT_181459b40) * 0x1000181 ^ DAT_181459b44) * 0x1000181 ^
                                   DAT_181459b48) * 0x1000181 ^ DAT_181459b4c) * 0x1000181 ^
                                 DAT_181459b50) * 0x1000181 ^ DAT_181459b54) * 0x1000181 ^
                               DAT_181459b58) * 0x1000181 ^ DAT_181459b5c) * 0x1000181 ^
                             DAT_181459b60) * 0x1000181 ^ DAT_181459b64) * 0x1000181 ^ DAT_181459b68
                           ) * 0x1000181 ^ DAT_181459b6c) * 0x1000181 ^ DAT_181459b70) * 0x1000181 ^
                        DAT_181459b74) * 0x1000181 ^ DAT_181459b78) * 0x1000181 ^ DAT_181459b7c) *
                      0x1000181 ^ DAT_181459b80) * 0x1000181 ^ DAT_181459b84) * 0x1000181 ^
                   DAT_181459b88) * 0x1000181 ^ DAT_181459b8c) * 0x1000181 ^ DAT_181459b90) *
                 0x1000181 ^ DAT_181459b94) * 0x1000181 ^ DAT_181459b98) * 0x1000181 ^ DAT_181459b9c
              ) * 0x1000181 ^ DAT_181459ba0) * 0x1000181 ^ DAT_181459ba4) * 0x1000181 ^
           DAT_181459ba8) * 0x1000181) * 0x1000181 ^ DAT_181459bb0) * 0x1000181 + 0x8d4c92ac;
  uVar2 = uVar2 * 8 | uVar2 >> 0x1d;
  if (uVar2 != 0x5a8432a3) {
    thunk_FUN_1805a9280(0x7b0,uVar2,lVar9);
    return;
  }
  lVar9 = (longlong)(int)local_38;
  uVar7 = 0x5a8432a3;
  puVar1 = auStack_68;
  do {
    puVar8 = puVar1;
    *(undefined8 *)(puVar8 + -8) = 0x180b07448;
    lVar6 = lVar9;
    FUN_180b081c5();
    *(undefined8 *)(puVar8 + -8) = uVar7;
    *(undefined8 *)(puVar8 + -0x10) = uVar11;
    *(undefined8 *)(puVar8 + -0x18) = uVar10;
    register0x00000020 = (BADSPACEBASE *)((-(longlong)register0x00000020 ^ 0xffffffffffffffffU) + 1)
    ;
    lVar6 = -lVar6;
    uVar10 = *(undefined8 *)(puVar8 + lVar6 + 0x8a8);
    uVar11 = *(undefined8 *)(puVar8 + lVar6 + 0x8b0);
    uVar7 = *(undefined8 *)(puVar8 + lVar6 + 0x8b8);
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    puVar1 = puVar8 + lVar6 + 0x8c0;
  } while (uVar2 != 0);
  if (*(int *)(param_1 + 0x168) != 0) {
    return;
  }
  *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b07555;
  FUN_180ba1a60(param_1,param_4);
  *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b0755d;
  iVar3 = FUN_18096e580(param_2);
  *(int *)(param_1 + 0xd0) = iVar3;
  iVar5 = iVar3;
  if (iVar3 < 0) {
    iVar5 = -iVar3;
  }
  if (iVar5 == 0x40000000) {
    if (-1 < iVar3) {
      uVar11 = *(undefined8 *)(param_1 + 0xe0);
      *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b07586;
      FUN_180969000(param_2,uVar11);
      uVar11 = *(undefined8 *)(param_1 + 0xe0);
      *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b0759b;
      FUN_180b048d0(param_1,uVar11,param_4,param_4);
      uVar11 = *(undefined8 *)(param_1 + 0xe0);
      *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b075b0;
      FUN_180b999e0(param_1,param_4,uVar11,uVar11);
      uVar11 = *(undefined8 *)(param_1 + 0xe0);
      *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b075bc;
      iVar5 = FUN_18096e580(uVar11);
      if (iVar5 < 0x40000000) {
        *(int *)(param_1 + 0xd0) = -iVar5;
        goto LAB_180b075df;
      }
    }
    uVar11 = *(undefined8 *)(param_1 + 0x158);
    *(undefined1 **)(puVar8 + lVar6 + 0x8b8) = &LAB_180b075df;
    FUN_180ba14c0(param_1,param_2,uVar11);
  }
LAB_180b075df:
  *(undefined8 *)(puVar8 + lVar6 + 0x8b8) = 0x180b075e7;
  iVar5 = FUN_18096e580(param_3);
  *(int *)(param_1 + 0xd4) = iVar5;
  if (iVar5 < 0) {
    iVar5 = -iVar5;
  }
  if (iVar5 == 0x40000000) {
    uVar11 = *(undefined8 *)(param_1 + 0x160);
    *(undefined1 **)(puVar8 + lVar6 + 0x8b8) = &LAB_180b0760c;
    FUN_180ba14c0(param_1,param_3,uVar11);
  }
  iVar5 = *(int *)(puVar8 + lVar6 + 0x950);
  if (iVar5 == 2) {
    iVar5 = 0;
  }
  *(int *)(param_1 + 0xcc) = iVar5;
  return;
}



############ FUN_ 1807d6d50 size=3366 ############

/* WARNING: Instruction at (ram,0x0001807d75a7) overlaps instruction at (ram,0x0001807d75a4)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001807d6ec8) */
/* WARNING: Removing unreachable block (ram,0x0001807d6de8) */
/* WARNING: Removing unreachable block (ram,0x0001807d6dc2) */
/* WARNING: Removing unreachable block (ram,0x0001807d6e9b) */
/* WARNING: Removing unreachable block (ram,0x0001807d787c) */
/* WARNING: Removing unreachable block (ram,0x0001807d7889) */
/* WARNING: Removing unreachable block (ram,0x0001807d787e) */
/* WARNING: Removing unreachable block (ram,0x0001807d7893) */
/* WARNING: Removing unreachable block (ram,0x0001807d6ed7) */
/* WARNING: Removing unreachable block (ram,0x0001807d6dd1) */
/* WARNING: Removing unreachable block (ram,0x0001807d6eaa) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1807d6d50(longlong param_1,longlong param_2,undefined4 param_3)

{
  int *piVar1;
  longlong *plVar2;
  undefined8 uVar3;
  void *pvVar4;
  longlong *plVar5;
  undefined1 *puVar6;
  ulonglong uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  void *_Memory;
  longlong lVar11;
  int iVar12;
  ulonglong uVar13;
  undefined1 *puVar14;
  ulonglong uVar15;
  int iVar16;
  longlong in_R11;
  longlong lVar17;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_108 [32];
  undefined8 local_e8;
  int *local_e0;
  uint local_d8;
  undefined4 local_d0 [2];
  uint local_c8;
  uint local_c4;
  code *local_c0;
  longlong *local_b8;
  longlong *local_b0;
  longlong *local_a8;
  longlong *local_a0;
  longlong *local_98;
  longlong *local_90;
  undefined **local_88;
  longlong local_80;
  undefined4 *local_78;
  undefined8 local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  uVar10 = (uint)&stack0x00000000;
  uVar8 = uVar10 & 0x3bf;
  iVar12 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  uVar8 = (((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e) - 1;
  local_c8 = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x47f3 ^ 0x4af3;
  uVar8 = ((uVar10 & 0x6aff) * (uVar10 & 0x6aff) + 1) % 7;
  uVar9 = uVar10 & 0x27f;
  iVar16 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
  uVar10 = uVar10 & 0x1bf;
  iVar12 = (uVar10 + 2) * (uVar10 + 1) * uVar10;
  local_c4 = (iVar16 * 0x55555555 + ((iVar16 >> 1) - (iVar16 >> 3)) >> 0x1e) + 0xda7 +
             (((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e) ^
             (int)(-uVar8 | uVar8) >> 0x1f & 0xa67U;
  local_e0 = &iRam000000018119937c;
  local_e8 = 0x18119947c;
  do {
    uVar3 = rdtsc();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar8 = ((uint)uVar3 ^ (uint)((ulonglong)uVar3 >> 0x20)) * -0x166a166b;
  local_d8 = (uVar8 >> 0x18 ^ uVar8) * -0xaea42f;
  local_d0[0] = param_3;
  if (local_d8 < 0x6aa638) {
    do {
      local_c0 = FUN_18141db20;
      FUN_1807d6400(&local_c0,0x18c9);
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar7 = (*local_c0)();
    if (1 < uVar7) {
      lVar17 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      plVar2 = (longlong *)register0x00000020;
      while (lVar17 != -0x3333333333333334) {
        *plVar2 = 0;
        plVar2 = plVar2 + 8;
        lVar17 = *plVar2;
      }
    }
  }
  uVar8 = (((uint)(iRam000000018119937c * 0x401) >> 6 ^ iRam000000018119937c * 0x401) +
          iRam0000000181199380) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199384) * 0x401;
  uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199388) * 0x401;
  local_e8 = 0xeeac3be06851671e;
  local_e0 = (int *)CONCAT44(local_e0._4_4_,0x6851671e);
  do {
    lVar17 = in_R11 + param_2;
    in_R11 = ~(param_2 - lVar17) + 1;
    param_2 = lVar17 - in_R11;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (iRam000000018119938c + (uVar8 ^ uVar8 >> 6)) * 0x401;
  local_58 = 0;
  local_50 = 0xf;
  local_68 = 0;
  FUN_1805a6cb0(&local_68,"sendEncryptedCommand",0x14);
  (**(code **)(**(longlong **)(param_1 + 0x30) + 8))(*(longlong **)(param_1 + 0x30),&local_68,1);
  if (local_50 < 0x10) {
    uVar8 = (iRam0000000181199390 + (uVar8 ^ uVar8 >> 6)) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199394) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199398) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119939c) * 0x401;
    local_88 = pace::eden::thrift::authorize::AuthorizationFull_sendEncryptedCommand_pargs::vftable;
    uVar8 = (iRam00000001811993a0 + (uVar8 ^ uVar8 >> 6)) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993a4) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993a8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993ac) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993b0) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993b4) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993b8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993bc) * 0x401;
    do {
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar8 = (_DAT_1811993c0 + (uVar8 ^ uVar8 >> 6)) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993c4) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993c8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993cc) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993d0) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993d4) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993d8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993dc) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993e0) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993e4) * 0x401;
    local_78 = local_d0;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993e8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993ec) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + FUN_1811993ef) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993f4) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993f8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam00000001811993fc) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + _DAT_181199400) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199404) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199408) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119940c) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199410) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199414) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199418) * 0x401;
    local_80 = param_2;
    FUN_1807d94d0(&local_88,*(undefined8 *)(param_1 + 0x30));
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119941c) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199420) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199424) * 0x401;
    do {
      FUN_1807d5870();
                    /* WARNING: Call to offcut address within same function */
      func_0x0001807d7860();
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar8 = (iRam0000000181199428 + (uVar8 ^ uVar8 >> 6)) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119942c) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199430) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199434) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199438) * 0x401;
    (**(code **)(**(longlong **)(param_1 + 0x30) + 0x10))();
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119943c) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199440) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199444) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199448) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119944c) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199450) * 0x401;
    do {
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar8 = (iRam0000000181199454 + (uVar8 ^ uVar8 >> 6)) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199458) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119945c) * 0x401;
    uVar8 = uVar8 ^ uVar8 >> 6;
    uVar7 = (ulonglong)uVar8;
    local_b8 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar2 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
      UNLOCK();
    }
    local_b0 = plVar2;
    (**(code **)(*local_b8 + 0x50))();
    plVar5 = local_b0;
    if (plVar2 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar2 + 1;
      lVar17 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar17 == 1) {
        (**(code **)(*local_b0 + 8))(local_b0);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar12 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar12 == 1) {
          (**(code **)(*local_b0 + 0x10))();
        }
      }
    }
    uVar8 = (iRam0000000181199460 + uVar8) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199464) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199468) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam000000018119946c) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199470) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199474) * 0x401;
    uVar8 = ((uVar8 >> 6 ^ uVar8) + iRam0000000181199478) * 0x401;
    do {
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar8 = (uVar8 ^ uVar8 >> 6) + 0x27bb267f;
    uVar8 = (uVar8 >> 0x10 | uVar8 * 0x10000) + 0x1d29601;
    uVar8 = (uVar8 * 0x10000000 | uVar8 >> 4) ^ 0x4dfdf083;
    uVar9 = uVar8 >> 2 | uVar8 << 0x1e;
    uVar15 = (ulonglong)uVar9;
    uVar8 = ~(~((uint)local_e0 & uVar9) & uVar9);
    uVar13 = (ulonglong)uVar8;
    local_a8 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar2 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if ((~(~((uint)local_e0 & uVar9) & (uint)local_e0) & uVar8) != 0xffffffff) {
      if (plVar2 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
        UNLOCK();
      }
      local_a0 = plVar2;
      (**(code **)(*local_a8 + 0x48))();
      plVar5 = local_a0;
      if (plVar2 != (longlong *)0x0) {
        LOCK();
        plVar2 = plVar2 + 1;
        lVar17 = *plVar2;
        *(int *)plVar2 = (int)*plVar2 + -1;
        UNLOCK();
        if ((int)lVar17 == 1) {
          (**(code **)(*local_a0 + 8))(local_a0);
          LOCK();
          piVar1 = (int *)((longlong)plVar5 + 0xc);
          iVar12 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar12 == 1) {
            (**(code **)(*local_a0 + 0x10))();
          }
        }
      }
      thunk_FUN_1805a9280((longlong)(int)local_c8,0x1807d79bd);
      return;
    }
    if (plVar2 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar2 + 1) = (int)plVar2[1] + 1;
      UNLOCK();
    }
    local_98 = local_a8;
    local_90 = plVar2;
    (**(code **)(*local_a8 + 0x48))();
    plVar5 = local_90;
    if (plVar2 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar2 + 1;
      lVar17 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar17 == 1) {
        (**(code **)(*local_90 + 8))(local_90);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar12 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar12 == 1) {
          (**(code **)(*local_90 + 0x10))();
        }
      }
    }
    lVar17 = (longlong)(int)local_c4;
    puVar6 = auStack_108;
    do {
      puVar14 = puVar6;
      *(undefined8 *)(puVar14 + -8) = 0x1807d7a9a;
      lVar11 = lVar17;
      FUN_1807d8900();
      *(ulonglong *)(puVar14 + -8) = uVar15;
      *(ulonglong *)(puVar14 + -0x10) = uVar13;
      *(ulonglong *)(puVar14 + -0x18) = uVar7;
      lVar11 = -lVar11;
      uVar7 = *(ulonglong *)(puVar14 + lVar11 + 0x7a8);
      uVar13 = *(ulonglong *)(puVar14 + lVar11 + 0x7b0);
      uVar15 = *(ulonglong *)(puVar14 + lVar11 + 0x7b8);
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      puVar6 = puVar14 + lVar11 + 0x7c0;
    } while (uVar8 != 0);
    *(undefined **)(puVar14 + lVar11 + 0x7b8) = &UNK_1807d7b10;
  }
  pvVar4 = (void *)CONCAT71(uStack_67,local_68);
  _Memory = pvVar4;
  if ((0xfff < local_50 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181356300 size=4580 ############

/* WARNING: Instruction at (ram,0x000181356eb2) overlaps instruction at (ram,0x000181356eb1)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018135795e) */
/* WARNING: Removing unreachable block (ram,0x000181356ead) */
/* WARNING: Removing unreachable block (ram,0x000181356e29) */
/* WARNING: Removing unreachable block (ram,0x000181356b12) */
/* WARNING: Removing unreachable block (ram,0x00018135633b) */
/* WARNING: Removing unreachable block (ram,0x0001813566e9) */
/* WARNING: Removing unreachable block (ram,0x000181356da3) */
/* WARNING: Removing unreachable block (ram,0x000181356e4a) */
/* WARNING: Removing unreachable block (ram,0x000181356e4f) */
/* WARNING: Removing unreachable block (ram,0x000181357647) */
/* WARNING: Removing unreachable block (ram,0x0001813575b5) */
/* WARNING: Removing unreachable block (ram,0x0001813567f7) */
/* WARNING: Removing unreachable block (ram,0x000181356347) */
/* WARNING: Removing unreachable block (ram,0x000181356db2) */
/* WARNING: Removing unreachable block (ram,0x000181356e13) */

ulonglong FUN_181356300(undefined8 *param_1)

{
  char cVar1;
  undefined1 uVar2;
  uint uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  uint uVar6;
  int iVar7;
  undefined *puVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  byte bVar12;
  longlong lVar13;
  int *piVar14;
  undefined1 *puVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  uint uVar18;
  undefined8 unaff_RDI;
  uint uVar19;
  longlong lVar20;
  undefined8 uVar21;
  int *piVar22;
  uint uVar23;
  undefined *puVar24;
  undefined *puVar25;
  int unaff_retaddr;
  undefined1 auStack_88 [32];
  undefined4 local_68;
  undefined *local_60;
  undefined *local_58;
  
  puVar17 = auStack_88;
  puVar15 = auStack_88;
  puVar24 = &DAT_182621fc0;
  uVar19 = (uint)&stack0x00000000 & 0x6aff;
  uVar19 = (uVar19 * uVar19 + 1) % 7;
  uVar19 = ((int)(-uVar19 | uVar19) >> 0x1f) * -0xc44a ^ 0xc58a;
  uVar5 = CONCAT71((int7)((ulonglong)unaff_RDI >> 8),*(char *)((longlong)param_1 + 0xd) == '\0');
  lVar20 = 0x800;
  puVar8 = &DAT_181191854;
  uVar3 = (((uint)(DAT_181191754 * 0x401) >> 6 ^ DAT_181191754 * 0x401) + DAT_181191758) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18119175c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191760) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191764) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191768) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18119176c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191770) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191774) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191778) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18119177c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191780) * 0x401;
  piVar22 = (int *)register0x00000020;
  do {
    uVar9 = 0x7314;
    FUN_1813582ac();
    lVar13 = lVar20;
    if ((uVar9 & 0xeb00) != 0) {
      lVar13 = lVar20 + (longlong)piVar22;
    }
    func_0x00016238b388();
    lVar20 = ((longlong)piVar22 - lVar13 ^ 0xffffffffffffffffU) + 1;
    piVar22 = (int *)(lVar13 - lVar20);
    uVar6 = (*piVar22 + 1) * *piVar22 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_181191784 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  do {
    puVar25 = (undefined *)((longlong)param_1 + (longlong)puVar24);
    lVar20 = (longlong)puVar24 - (longlong)puVar25;
    param_1 = (undefined8 *)-lVar20;
    puVar24 = puVar25 + lVar20;
    uVar6 = (*piVar22 + 1) * *piVar22 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar3 = (DAT_181191788 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18119178c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191790) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191794) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_181191798) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_18119179c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811917a0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811917a4) * 0x401;
  *(undefined1 *)((longlong)param_1 + 0xd) = 1;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811917a8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811917ac) * 0x401;
  uVar3 = (uVar3 ^ uVar3 >> 6) & 0x5bff;
  iVar7 = uVar3 * uVar3 + 1;
  uVar3 = (iVar7 >> 4) + (iVar7 >> 1) + iVar7 * 0x24924924 >> 0x1d;
  uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3;
  uVar3 = (int)(-uVar3 | uVar3) >> 0x1f;
  local_68 = 0x24e125df;
  local_58 = puVar8;
  do {
    FUN_181356169(0x7314);
    uVar6 = (*piVar22 + 1) * *piVar22 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  lVar20 = (longlong)&DAT_1811917b4 + ((ulonglong)((int)(-uVar3 | uVar3) >> 0x1f & 0x4af6) ^ 0x4aea)
  ;
  do {
    puVar8 = (undefined *)((~(ulonglong)puVar8 + 1 ^ 0xffffffffffffffff) + 1);
    uVar3 = (*piVar22 + 1) * *piVar22 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar6 = (uint)lVar20;
  uVar3 = uVar6 & 0x2bf;
  uVar6 = uVar6 & 0x5f;
  iVar7 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  uVar9 = (longlong)(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555) >> 0x1e ^ 4;
  lVar20 = lVar20 + uVar9;
  do {
    uVar3 = (*piVar22 + 1) * *piVar22 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  cVar1 = FUN_180528ca0(*param_1,uVar9,uVar6 + 1,uVar6 * uVar6 * (uVar6 + 1));
  puVar25 = local_58;
  uVar9 = 0;
  if (cVar1 == *(char *)((longlong)param_1 + 9)) {
    uVar4 = (ulonglong)uVar19;
    puVar25 = puVar8;
  }
  else {
    uVar21 = 0xc58161a4;
    local_60 = puVar24 + -0x1e9e264;
    piVar22 = (int *)(puVar24 + -0x1e9e360);
    uVar23 = (((uint)(*(int *)(puVar24 + -0x1e9e364) * 0x401) >> 6 ^
              *(int *)(puVar24 + -0x1e9e364) * 0x401) + *piVar22) * 0x401;
    uVar23 = uVar23 ^ uVar23 >> 6;
    uVar6 = (((uVar23 & 0x24ff) + 1) * (uVar23 & 0x24ff) + 7) % 0x51;
    uVar3 = uVar23 & 0x2f;
    lVar13 = ((ulonglong)((int)(-uVar6 | uVar6) >> 0x1f & 0x33cf) ^ 0x35cf) -
             ((longlong)(int)((uVar3 * uVar3 * (uVar3 + 1) * (uVar3 + 1) & 0x80000003) + 0xb026) ^
             0xb626U);
    do {
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar3 = (*(int *)((longlong)piVar22 + lVar13 + 4) + uVar23) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + *(int *)((longlong)piVar22 + lVar13 + 8)) * 0x401;
    piVar14 = (int *)((longlong)piVar22 + lVar13 + 0x10);
    uVar3 = ((uVar3 >> 6 ^ uVar3) + *(int *)((longlong)piVar22 + lVar13 + 0xc)) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + *piVar14) * 0x401;
    uVar3 = uVar3 ^ uVar3 >> 6;
    if (((ulonglong)local_60 & 0x7e0) == 0) {
      uVar6 = uVar3 & 0x27f;
      iVar7 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
      uVar6 = iVar7 + (iVar7 / 3 + (iVar7 >> 0x1f) +
                      (int)(((longlong)iVar7 / 3 + ((longlong)iVar7 >> 0x3f) & 0xffffffffU) >> 0x1f)
                      ) * -3;
    }
    else {
      uVar6 = (uint)piVar14 & 0x5f;
      uVar6 = uVar6 * uVar6 * (uVar6 + 1) * (uVar6 + 1) & 1;
    }
    uVar18 = (uint)local_60 & 0x7f | 0xe;
    uVar23 = uVar3 & 0x1f | 0x44;
    piVar14 = (int *)((longlong)piVar14 +
                     (0x84 - (longlong)
                             (int)(0xea92 << (uVar18 * uVar18 * 0x15f7 == uVar23 * uVar23 * 0x1a4d)
                                  ^ 0xea12 - uVar6)));
    uVar3 = (*piVar14 + uVar3) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[1]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[2]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[3]) * 0x401;
    piVar22 = piVar14 + 5;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[4]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + *piVar22) * 0x401;
    if (((ulonglong)piVar22 & 0x60) == 0) {
      uVar6 = (uint)piVar22 & 0x1f;
      uVar6 = uVar6 * uVar6 * (uVar6 + 1) * (uVar6 + 1) & 1;
    }
    else {
      uVar6 = (uint)piVar22 & 0x7f;
      uVar6 = ((uVar6 + 2) * (uVar6 + 1) * uVar6) % 3;
    }
    piVar22 = (int *)((longlong)piVar22 + (((longlong)(int)uVar6 | 0x10feU) ^ 0x10fa));
    uVar3 = (*piVar22 + (uVar3 ^ uVar3 >> 6)) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[1]) * 0x401;
    do {
      uVar5 = 0;
                    /* WARNING: Call to offcut address within same function */
      uVar4 = func_0x000181356959();
      uVar9 = uVar9 ^ uVar4;
      if ((uVar5 & 0x43) != 0) {
        uVar4 = CONCAT71((int7)(uVar4 >> 8),(char)uVar4 + -0x44);
      }
      uVar9 = uVar9 ^ uVar4;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar3 = (piVar22[2] + (uVar3 ^ uVar3 >> 6)) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[3]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[4]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[5]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[6]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[7]) * 0x401;
    uVar6 = ((uVar3 >> 6 ^ uVar3) + piVar22[8]) * 0x401;
    uVar6 = uVar6 ^ uVar6 >> 6;
    uVar2 = FUN_180528ca0(*param_1);
    lVar13 = 7;
    *(undefined1 *)((longlong)param_1 + 9) = uVar2;
    uVar3 = (piVar22[9] + uVar6) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[10]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[0xb]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[0xc]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[0xd]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar22[0xe]) * 0x401;
    piVar22 = piVar22 + 0xf;
    do {
      piVar14 = piVar22;
      uVar3 = ((uVar3 >> 6 ^ uVar3) + *piVar14) * 0x401;
      uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[1]) * 0x401;
      uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[2]) * 0x401;
      uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[3]) * 0x401;
      uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[4]) * 0x401;
      lVar13 = lVar13 + -1;
      piVar22 = piVar14 + 5;
    } while (lVar13 != 0);
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[5]) * 0x401;
    uVar3 = ((uVar3 >> 6 ^ uVar3) + piVar14[6]) * 0x401;
    do {
      uVar23 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar23 < 0) {
        uVar23 = (uVar23 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar23 != 0);
    do {
      lVar13 = uVar9 + (longlong)register0x00000020;
      uVar9 = ~((longlong)register0x00000020 - lVar13) + 1;
      register0x00000020 = (BADSPACEBASE *)(lVar13 - uVar9);
      uVar23 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar23 < 0) {
        uVar23 = (uVar23 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar23 != 0);
    uVar3 = ~(uVar3 ^ uVar3 >> 6);
    uVar5 = CONCAT71((uint7)(uint3)(uVar6 >> 8),1);
    uVar6 = ((uVar3 << 8 | uVar3 >> 0x18) & 0xa758a758 | (uVar3 >> 8 | uVar3 << 0x18) & 0x58a758a7)
            + 0x7821b95d;
    uVar3 = (uVar6 >> 3 ^ uVar6) >> 7 & 7;
    uVar3 = uVar6 ^ (uVar3 * 8 | uVar3) << 7;
    uVar3 = (uVar3 << 4 | uVar6 >> 0x1c) & 0xa5a5a5a5 |
            (uVar3 >> 4 | uVar6 * 0x10000000) & 0x5a5a5a5a;
    uVar11 = (ulonglong)uVar3;
    uVar4 = CONCAT71((int7)(uVar9 >> 8),uVar3 == 0xcbb532e3);
    if ((uVar4 & 0x7ffffff) == 0 && (int)uVar4 == 0) {
      uVar5 = thunk_FUN_1805a9280();
      return uVar5;
    }
    uVar4 = (ulonglong)(int)uVar19;
    puVar16 = puVar15;
    do {
      *(undefined8 *)(puVar16 + -8) = 0x1813574af;
      uVar10 = uVar4;
      FUN_1813578a0();
      *(undefined8 *)(puVar16 + -8) = uVar21;
      *(ulonglong *)(puVar16 + -0x10) = uVar11;
      *(ulonglong *)(puVar16 + -0x18) = uVar4;
      lVar13 = -uVar10;
      uVar4 = *(ulonglong *)(puVar16 + lVar13 + 0x1a8);
      uVar11 = *(ulonglong *)(puVar16 + lVar13 + 0x1b0);
      uVar21 = *(undefined8 *)(puVar16 + lVar13 + 0x1b8);
      puVar17 = puVar16 + lVar13 + 0x1c0;
      uVar19 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar19 < 0) {
        uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
      }
      puVar16 = puVar16 + lVar13 + 0x1c0;
    } while (uVar19 != 0);
  }
  uVar19 = (*(int *)(lVar20 + 0x44) + *(int *)(puVar17 + 0xa8)) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + *(int *)(lVar20 + 0x48)) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + *(int *)(lVar20 + 0x4c)) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + *(int *)(lVar20 + 0x50)) * 0x401;
  do {
    uVar3 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  piVar22 = (int *)(lVar20 + 0x58);
  uVar19 = (*(int *)(lVar20 + 0x54) + (uVar19 ^ uVar19 >> 6)) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + *piVar22) * 0x401;
  uVar19 = uVar19 ^ uVar19 >> 6;
  bVar12 = (byte)puVar25;
  if ((uVar19 & 0x40) == 0) {
    bVar12 = bVar12 & 0x5f;
    bVar12 = (bVar12 + 1) * (bVar12 + 1) * bVar12 * bVar12 & 3;
  }
  else {
    bVar12 = (bVar12 - 1) * bVar12 & 1;
  }
  uVar23 = (uint)puVar25 & 0x33f;
  uVar6 = (uint)piVar22 & 0x6f;
  uVar3 = uVar6 + 1;
  uVar11 = (ulonglong)uVar3;
  iVar7 = (uVar23 + 2) * (uVar23 + 1) * uVar23;
  lVar20 = (0xc495L >>
            ((byte)(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) & (byte)piVar22 &
            0x3f) ^ 0xc4f1U) -
           ((longlong)(int)((uVar6 * uVar6 * uVar3 * uVar3 & 3) + 0xb176) ^ 0xb116L >> bVar12);
  piVar22 = (int *)((longlong)piVar22 + lVar20);
  uVar19 = (*piVar22 + uVar19) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[1]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[2]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[3]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[4]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[5]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[6]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[7]) * 0x401;
  uVar19 = ((uVar19 >> 6 ^ uVar19) + piVar22[8]) * 0x401;
  do {
    *(undefined **)(puVar17 + -8) = &UNK_18135776a;
    func_0x000181358fd3(0x7314);
    uVar3 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar3 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar19 = ~(uVar19 ^ uVar19 >> 6);
  uVar3 = ((uVar19 << 8 | uVar19 >> 0x18) & 0xa758a758 | (uVar19 >> 8 | uVar19 << 0x18) & 0x58a758a7
          ) + 0x7821b95d;
  uVar19 = (uVar3 >> 3 ^ uVar3) >> 7 & 7;
  uVar19 = uVar3 ^ (uVar19 * 8 | uVar19) << 7;
  uVar6 = (uVar19 >> 4 | uVar3 * 0x10000000) & 0x5a5a5a5a;
  uVar9 = CONCAT71((int7)(uVar9 >> 8),
                   ((uVar19 << 4 | uVar3 >> 0x1c) & 0xa5a5a5a5 | uVar6) == *(uint *)(puVar17 + 0x20)
                  );
  if ((uVar9 & 0x1ffffff) == 0 && (int)uVar9 == 0) {
    *(longlong *)(puVar17 + -8) = lVar20;
    *(ulonglong *)(puVar17 + -0x10) = uVar9;
    *(BADSPACEBASE **)(puVar17 + -0x18) = register0x00000020;
    uVar5 = thunk_FUN_1805a9280(0x560,uVar6,thunk_FUN_1805a9280,uVar11);
    return uVar5;
  }
  iVar7 = (int)uVar4;
  do {
    *(ulonglong *)(puVar17 + -8) = uVar4;
    *(ulonglong *)(puVar17 + -0x10) = uVar5;
    *(BADSPACEBASE **)(puVar17 + -0x18) = register0x00000020;
    lVar20 = -(longlong)iVar7;
    register0x00000020 = *(BADSPACEBASE **)(puVar17 + lVar20 + 0x1a8);
    uVar5 = *(ulonglong *)(puVar17 + lVar20 + 0x1b0);
    uVar4 = *(ulonglong *)(puVar17 + lVar20 + 0x1b8);
    puVar17 = puVar17 + lVar20 + 0x1c0;
    uVar19 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  return uVar5 & 0xff;
}



############ FUN_ 1807b6230 size=4512 ############

/* WARNING: Removing unreachable block (ram,0x0001807b68c3) */
/* WARNING: Removing unreachable block (ram,0x0001807b687e) */
/* WARNING: Removing unreachable block (ram,0x0001807b6265) */
/* WARNING: Removing unreachable block (ram,0x0001807b6306) */
/* WARNING: Removing unreachable block (ram,0x0001807b6897) */
/* WARNING: Removing unreachable block (ram,0x0001807b69a9) */
/* WARNING: Removing unreachable block (ram,0x0001807b6271) */

ulonglong FUN_1807b6230(longlong param_1,longlong *param_2)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  longlong lVar5;
  undefined1 *puVar6;
  longlong lVar7;
  undefined1 *puVar8;
  uint uVar9;
  undefined8 uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  int iVar14;
  ulonglong uVar15;
  int unaff_retaddr;
  undefined1 auStack_88 [32];
  uint local_68;
  undefined1 *local_60;
  undefined1 *local_58;
  
  uVar3 = (uint)&stack0x00000000 & 0x31ff;
  uVar3 = (uVar3 * uVar3 + 1) % 7;
  uVar9 = (int)(-uVar3 | uVar3) >> 0x1f;
  uVar3 = (uint)&stack0x00000000 & 0x4aff;
  iVar4 = uVar3 * uVar3 + 1;
  uVar3 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
  uVar3 = (int)(uVar3 - 7) >> 0x1f & uVar3;
  local_68 = (((int)(-uVar9 | uVar9) >> 0x1f) * -0xc901 | 0xe901U) ^
             ((int)(-uVar3 | uVar3) >> 0x1f) * -0xe381;
  (**(code **)(*param_2 + 0x18))(param_2,"SendEncryptedCommandInput");
  (**(code **)(*param_2 + 0x28))(param_2,"channelId",8);
  (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(param_1 + 8));
  (**(code **)(*param_2 + 0x30))(param_2);
  (**(code **)(*param_2 + 0x28))(param_2,"encryptedCommand",0xf);
  (**(code **)(*param_2 + 0x50))
            (param_2,3,*(longlong *)(param_1 + 0x18) - *(longlong *)(param_1 + 0x10));
  puVar6 = *(undefined1 **)(param_1 + 0x10);
  uVar12 = 0xcc9e2d51;
  local_60 = *(undefined1 **)(param_1 + 0x18);
  local_58 = puVar6;
  if (puVar6 != local_60) {
    do {
      (**(code **)(*param_2 + 0x78))(param_2,*puVar6);
      puVar6 = puVar6 + 1;
      local_60 = *(undefined1 **)(param_1 + 0x18);
    } while (puVar6 != local_60);
  }
  (**(code **)(*param_2 + 0x58))(param_2);
  (**(code **)(*param_2 + 0x30))(param_2);
  uVar11 = 0x1b873593;
  uVar3 = (DAT_18136c310 * 0x16a88000 | (uint)(DAT_18136c310 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          0x4d789476;
  uVar3 = (DAT_18136c314 * 0x16a88000 | (uint)(DAT_18136c314 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x28))(param_2,"commandSize",8);
  (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(param_1 + 0x28));
  uVar3 = (DAT_18136c318 * 0x16a88000 | (uint)(DAT_18136c318 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (DAT_18136c31c * 0x16a88000 | (uint)(DAT_18136c31c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x30))(param_2);
  (**(code **)(*param_2 + 0x28))(param_2,"randomInitializationVector",0xf);
  uVar3 = (DAT_18136c320 * 0x16a88000 | (uint)(DAT_18136c320 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (DAT_18136c324 * 0x16a88000 | (uint)(DAT_18136c324 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_1807b8687(0xe62c);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar3 = (DAT_18136c328 * 0x16a88000 | (uint)(DAT_18136c328 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (DAT_18136c32c * 0x16a88000 | (uint)(DAT_18136c32c * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (DAT_18136c330 * 0x16a88000 | (uint)(DAT_18136c330 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (DAT_18136c334 * 0x16a88000 | (uint)(DAT_18136c334 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (DAT_18136c338 * 0x16a88000 | (uint)(DAT_18136c338 * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar15 = 0x19;
  bVar2 = (byte)uVar3;
  bVar1 = bVar2 & 0x7f;
  lVar7 = -((0x2200L >> ((bVar2 + 1) * bVar2 & 1 | bVar1 * bVar1 * (bVar1 + 1) * (bVar1 + 1) & 3) |
            0xfa56U) ^ 0xfbd6);
  uVar3 = (*(int *)(&UNK_18136c4bc + lVar7) * 0x16a88000 |
          (uint)(*(int *)(&UNK_18136c4bc + lVar7) * -0x3361d2af) >> 0x11) * 0x1b873593 ^ uVar3;
  uVar3 = (*(int *)(&UNK_18136c4c0 + lVar7) * 0x16a88000 |
          (uint)(*(int *)(&UNK_18136c4c0 + lVar7) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4c4 + lVar7) * 0x16a88000 |
          (uint)(*(int *)(&UNK_18136c4c4 + lVar7) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4c8 + lVar7) * 0x16a88000 |
          (uint)(*(int *)(&UNK_18136c4c8 + lVar7) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4cc + lVar7) * 0x16a88000 |
          (uint)(*(int *)(&UNK_18136c4cc + lVar7) * -0x3361d2af) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  do {
    uVar12 = -(~uVar12 + 1);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  iVar4 = (int)uVar12;
  uVar3 = (*(int *)(&UNK_18136c4d0 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4d0 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4d4 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4d4 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4d8 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4d8 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x50))
            (param_2,3,*(longlong *)(param_1 + 0x38) - *(longlong *)(param_1 + 0x30));
  uVar3 = (*(int *)(&UNK_18136c4dc + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4dc + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  puVar6 = *(undefined1 **)(param_1 + 0x30);
  uVar3 = (*(int *)(&UNK_18136c4e0 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4e0 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  if (puVar6 != *(undefined1 **)(param_1 + 0x38)) {
    do {
      (**(code **)(*param_2 + 0x78))(param_2,*puVar6);
      puVar6 = puVar6 + 1;
    } while (puVar6 != *(undefined1 **)(param_1 + 0x38));
  }
  uVar3 = (*(int *)(&UNK_18136c4e4 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4e4 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x58))(param_2);
  uVar3 = (*(int *)(&UNK_18136c4e8 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4e8 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x30))(param_2);
  uVar3 = (*(int *)(&UNK_18136c4ec + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4ec + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4f0 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4f0 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4f4 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4f4 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4f8 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4f8 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c4fc + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c4fc + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c500 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c500 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c504 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c504 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c508 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c508 + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c50c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c50c + lVar7) * iVar4) >> 0x11) * 0x1b873593 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_1807b5568(0xe62c);
    uVar11 = uVar15 ^ uVar11;
    uVar15 = -(~uVar15 + 1);
    uVar11 = uVar11 ^ uVar15;
    uVar13 = -param_1 ^ 0xffffffffffffffff;
    param_1 = uVar13 + 1;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  iVar14 = (int)uVar11;
  uVar3 = (*(int *)(&UNK_18136c510 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c510 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x28))(param_2,"checksum",8,5);
  uVar3 = (*(int *)(&UNK_18136c514 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c514 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c518 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c518 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c51c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c51c + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c520 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c520 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c524 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c524 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c528 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c528 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c52c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c52c + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c530 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c530 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c534 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c534 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(uVar13 + 0x49));
  uVar3 = (*(int *)(&UNK_18136c538 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c538 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c53c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c53c + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x30))(param_2);
  uVar3 = (*(int *)(&UNK_18136c540 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c540 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  if (*(char *)(uVar13 + 0xaa) != '\0') {
    (**(code **)(*param_2 + 0x28))(param_2,"auxChannelId",10);
    (**(code **)(*param_2 + 0x90))(param_2,*(undefined8 *)(uVar13 + 0x51));
    (**(code **)(*param_2 + 0x30))(param_2);
  }
  if (*(char *)(uVar13 + 0xab) != '\0') {
    (**(code **)(*param_2 + 0x28))(param_2,"computerId",10);
    (**(code **)(*param_2 + 0x90))(param_2,*(undefined8 *)(uVar13 + 0x59));
    (**(code **)(*param_2 + 0x30))(param_2);
  }
  uVar3 = (*(int *)(&UNK_18136c544 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c544 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  do {
    FUN_1807b51e0(0xe62c);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  if (*(char *)(uVar13 + 0xac) != '\0') {
    (**(code **)(*param_2 + 0x28))(param_2,"channelEstablishedTime",0xb,0xc);
    (**(code **)(*param_2 + 0xa0))(param_2,uVar13 + 0x61);
    (**(code **)(*param_2 + 0x30))(param_2);
  }
  uVar3 = (*(int *)(&UNK_18136c548 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c548 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  if (*(char *)(uVar13 + 0xad) != '\0') {
    (**(code **)(*param_2 + 0x28))(param_2,"minimizeLogging",2);
    (**(code **)(*param_2 + 0x70))(param_2,*(undefined1 *)(uVar13 + 0x81));
    (**(code **)(*param_2 + 0x30))(param_2);
  }
  if (*(char *)(uVar13 + 0xae) != '\0') {
    (**(code **)(*param_2 + 0x28))(param_2,"randomData",0xf);
    (**(code **)(*param_2 + 0x50))
              (param_2,3,*(longlong *)(uVar13 + 0x91) - *(longlong *)(uVar13 + 0x89));
    puVar6 = *(undefined1 **)(uVar13 + 0x89);
    if (puVar6 != *(undefined1 **)(uVar13 + 0x91)) {
      do {
        (**(code **)(*param_2 + 0x78))(param_2,*puVar6);
        puVar6 = puVar6 + 1;
      } while (puVar6 != *(undefined1 **)(uVar13 + 0x91));
    }
    (**(code **)(*param_2 + 0x58))(param_2);
    (**(code **)(*param_2 + 0x30))(param_2);
  }
  uVar10 = 10000;
  uVar3 = (*(int *)(&UNK_18136c54c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c54c + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x28))(param_2,"callingLicenseDVersion",8);
  uVar3 = (*(int *)(&UNK_18136c550 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c550 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c554 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c554 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(uVar13 + 0xa1));
  uVar3 = (*(int *)(&UNK_18136c558 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c558 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar11 = (ulonglong)uVar3;
  (**(code **)(*param_2 + 0x30))(param_2);
  (**(code **)(*param_2 + 0x38))(param_2);
  uVar3 = (*(int *)(&UNK_18136c55c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c55c + lVar7) * iVar4) >> 0x11) * iVar14 ^ uVar3;
  uVar3 = (*(int *)(&UNK_18136c560 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c560 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  (**(code **)(*param_2 + 0x20))(param_2);
  uVar3 = (*(int *)(&UNK_18136c564 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c564 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c568 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c568 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c56c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c56c + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c570 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c570 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c574 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c574 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c578 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c578 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c57c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c57c + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c580 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c580 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c584 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c584 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (*(int *)(&UNK_18136c588 + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c588 + lVar7) * iVar4) >> 0x11) * iVar14 ^
          (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64;
  uVar3 = (uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64 ^
          (*(int *)(&UNK_18136c58c + lVar7) * iVar4 * 0x8000 |
          (uint)(*(int *)(&UNK_18136c58c + lVar7) * iVar4) >> 0x11) * iVar14;
  uVar9 = ~((uVar3 << 0xd | uVar3 >> 0x13) * 5 + 0xe6546b64 ^ 0xc9a00ceb) ^ 0xac0b7c28;
  uVar3 = (uVar9 >> 2 ^ uVar9) >> 9 & 3;
  if ((((uVar3 * 4 | uVar3) << 9 ^ uVar9) + 0x469122b6) * 0x11 != 0) {
    lVar7 = (longlong)(int)local_68;
    puVar6 = auStack_88;
    do {
      puVar8 = puVar6;
      *(undefined8 *)(puVar8 + -8) = 0x1807b73eb;
      lVar5 = lVar7;
      FUN_1807b9125();
      *(ulonglong *)(puVar8 + -8) = uVar12;
      *(ulonglong *)(puVar8 + -0x10) = uVar11;
      *(undefined8 *)(puVar8 + -0x18) = uVar10;
      lVar5 = -lVar5;
      uVar10 = *(undefined8 *)(puVar8 + lVar5 + 0xa68);
      uVar11 = *(ulonglong *)(puVar8 + lVar5 + 0xa70);
      uVar12 = *(ulonglong *)(puVar8 + lVar5 + 0xa78);
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
      puVar6 = puVar8 + lVar5 + 0xa80;
    } while (uVar3 != 0);
    return (ulonglong)*(uint *)(puVar8 + lVar5 + 0xb10);
  }
  uVar12 = thunk_FUN_1805a9280();
  return uVar12;
}



############ FUN_ 1809966a4 size=608 ############

/* WARNING: Instruction at (ram,0x000180996751) overlaps instruction at (ram,0x00018099674f)
    */
/* WARNING: Removing unreachable block (ram,0x0001809968ed) */

ulonglong FUN_1809966a4(undefined8 param_1,undefined8 param_2,uint *param_3)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  char cVar5;
  longlong lVar4;
  uint unaff_EBX;
  undefined8 unaff_RSI;
  undefined8 uVar6;
  undefined8 in_R10;
  undefined8 in_R11;
  int unaff_R12D;
  int *unaff_R13;
  uint *unaff_R14;
  int unaff_R15D;
  int iVar8;
  uint in_stack_00000080;
  uint7 uVar7;
  
  uVar3 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
  }
  if (uVar3 != 0) {
    FUN_180996e05(0xd730);
    uVar2 = FUN_1809966a4();
    return uVar2;
  }
  do {
    iVar8 = unaff_R15D + unaff_R12D;
    unaff_R15D = ~(unaff_R12D - iVar8) + 1;
    unaff_R12D = iVar8 - unaff_R15D;
    uVar3 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    cVar5 = -0x29;
    FUN_18099804b();
    if (cVar5 == '\0') {
      func_0x0001cca052a0();
      unaff_R14 = param_3;
    }
    uVar3 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = ~(~(in_stack_00000080 & unaff_EBX) & unaff_EBX);
  uVar2 = (ulonglong)uVar3;
  uVar7 = (uint7)((ulonglong)unaff_RSI >> 8);
  uVar6 = CONCAT71(uVar7,(~(~(in_stack_00000080 & unaff_EBX) & in_stack_00000080) & uVar3) ==
                         0xffffffff);
  if ((int)uVar6 == (int)(((ulonglong)uVar7 & 0xffffff) << 3)) {
    do {
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1809967c8;
      lVar4 = (longlong)unaff_R12D;
      lVar1 = func_0x000180995236((longlong)unaff_R12D,uVar2);
      *(undefined8 *)((longlong)register0x00000020 + -8) = uVar6;
      *(undefined8 *)((longlong)register0x00000020 + -0x10) = in_R10;
      *(undefined8 *)((longlong)register0x00000020 + -0x18) = in_R11;
      lVar4 = -lVar4;
      lVar1 = (~((lVar1 + (longlong)param_3) -
                (~((longlong)param_3 - (lVar1 + (longlong)param_3)) + 1U)) + 1 ^ 0xffffffffffffffff)
              + 1;
      param_3 = (uint *)(~-lVar1 + 1);
      uVar2 = (uVar2 + lVar1) - (longlong)param_3;
      in_R11 = *(undefined8 *)((longlong)register0x00000020 + lVar4 + 0xfd8);
      in_R10 = *(undefined8 *)((longlong)register0x00000020 + lVar4 + 0xfe0);
      uVar6 = *(undefined8 *)((longlong)register0x00000020 + lVar4 + 0xfe8);
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar4 + 0xff0);
      uVar3 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    if (unaff_R14 == (uint *)0x0) {
      uVar2 = 0xffffffff;
    }
    else {
      uVar2 = (ulonglong)*unaff_R14;
    }
    return uVar2;
  }
  func_0x000180995236();
  uVar2 = thunk_FUN_1805a9280();
  return uVar2;
}



############ FUN_ 181205850 size=2873 ############

/* WARNING: Instruction at (ram,0x000181206218) overlaps instruction at (ram,0x000181206217)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001812063cb) */
/* WARNING: Removing unreachable block (ram,0x00018120655f) */
/* WARNING: Removing unreachable block (ram,0x000181206bb5) */
/* WARNING: Removing unreachable block (ram,0x000181206ec1) */
/* WARNING: Removing unreachable block (ram,0x00018120689e) */
/* WARNING: Removing unreachable block (ram,0x000181205f65) */
/* WARNING: Removing unreachable block (ram,0x000181206013) */
/* WARNING: Removing unreachable block (ram,0x00018120601a) */
/* WARNING: Removing unreachable block (ram,0x000181206038) */
/* WARNING: Removing unreachable block (ram,0x000181206035) */
/* WARNING: Removing unreachable block (ram,0x000181206018) */
/* WARNING: Removing unreachable block (ram,0x00018120603e) */
/* WARNING: Removing unreachable block (ram,0x0001812062b4) */
/* WARNING: Removing unreachable block (ram,0x000181206b40) */
/* WARNING: Removing unreachable block (ram,0x000181206d37) */
/* WARNING: Removing unreachable block (ram,0x000181206602) */
/* WARNING: Removing unreachable block (ram,0x000181206216) */
/* WARNING: Removing unreachable block (ram,0x000181206d91) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

uint FUN_181205850(longlong param_1)

{
  longlong lVar1;
  char cVar2;
  undefined8 uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  undefined1 *puVar10;
  longlong lVar11;
  longlong lVar12;
  uint uVar13;
  ulonglong uVar14;
  uint uVar15;
  ulonglong uVar16;
  undefined *puVar17;
  int *piVar18;
  int unaff_retaddr;
  undefined1 auStack_b8 [32];
  undefined8 local_98;
  int *local_90;
  undefined8 local_88;
  undefined *local_70;
  undefined1 local_68;
  
  local_88 = 0xfffffffffffffffe;
  puVar17 = &DAT_182621fc0;
  local_98 = 0x100;
  local_90 = &DAT_1814c053c;
  uVar6 = DAT_1814c053c * 0x401 ^ (uint)(DAT_1814c053c * 0x401) >> 6;
  uVar4 = uVar6 & 7 | 0x23;
  uVar4 = uVar4 * uVar4 * 0xa86d ^ 0xb3a0297;
  uVar3 = 0;
  lVar11 = -((longlong)
             (0x90d6 <<
             ((char)(((byte)(-uVar4 >> 0x18) | (byte)(uVar4 >> 0x18)) ^ 0xff) >> 7 & 0x1fU)) ^
            0x92d6U);
  uVar4 = (*(int *)(lVar11 + 0x1814c0740) + uVar6) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0744)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0748)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c074c)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0750)) * 0x401;
  do {
    FUN_181206567(0xf41c);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar4 = (*(int *)(lVar11 + 0x1814c0754) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0758)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c075c)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0760)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0764)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0768)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c076c)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0770)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0774)) * 0x401;
  uVar6 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar11 + 0x1814c0778)) * 0x401;
  uVar6 = uVar6 ^ uVar6 >> 6;
  uVar4 = uVar6 & 0x7f | 0x1f;
  lVar11 = lVar11 + 0x23c +
           (((longlong)(int)(uint)(uVar4 * uVar4 * 0x6d73 == 0xdc17514) | 0xf17cU) ^ 0xf178);
  uVar4 = (*(int *)(lVar11 + 0x1814c053c) + uVar6) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0540 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0544 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0548 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c054c + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0550 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0554 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0558 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c055c + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0560 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0564 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0568 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c056c + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0570 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0574 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0578 + lVar11)) * 0x401;
  local_70 = &DAT_182673860;
  local_68 = 0;
  uVar4 = (*(int *)(&DAT_1814c057c + lVar11) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0580 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0584 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0588 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c058c + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0590 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0594 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0598 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c059c + lVar11)) * 0x401;
  uVar15 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&UNK_1814c05a0 + lVar11)) * 0x401;
  uVar16 = (ulonglong)uVar15;
  uVar14 = 1;
  uVar4 = (uint)(lVar11 + 100) & 0x11ff;
  uVar4 = (uVar4 - 1) * uVar4 - 1 & 1;
  uVar6 = (int)(-uVar4 | uVar4) >> 0x1f;
  lVar11 = ((longlong)(((int)(-uVar6 | uVar6) >> 0x1f) * -0xff4a) ^ 0xffcaU) + lVar11 + 100;
  uVar4 = ((uVar15 >> 6 ^ uVar15) + *(int *)(&DAT_1814c04c0 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04c4 + lVar11)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar4 = (*(int *)(&DAT_1814c04c8 + lVar11) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04cc + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04d0 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04d4 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04d8 + lVar11)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar4 = (*(int *)(&DAT_1814c04dc + lVar11) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04e0 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04e4 + lVar11)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar4 = (*(int *)(&DAT_1814c04e8 + lVar11) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04ec + lVar11)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar4 = (*(int *)(&DAT_1814c04f0 + lVar11) + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04f4 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04f8 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c04fc + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0500 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0504 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0508 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c050c + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0510 + lVar11)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(&DAT_1814c0514 + lVar11)) * 0x401;
  do {
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar15 != 0);
  uVar4 = ~(uVar4 ^ uVar4 >> 6) + 0x925014ad;
  if ((((uVar4 * 0x800 | uVar4 >> 0x15) ^ 0x1f994175) << 2 | (uVar4 & 0x1fffff) >> 0x13) !=
      0xf6777f3c) {
    FUN_181205014();
    uVar4 = thunk_FUN_1805a9280();
    return uVar4;
  }
  lVar11 = 0x550;
  puVar9 = auStack_b8;
  do {
    puVar8 = puVar9;
    *(longlong *)(puVar8 + -8) = lVar11;
    *(undefined **)(puVar8 + -0x10) = puVar17;
    *(undefined8 *)(puVar8 + -0x18) = uVar3;
    uVar16 = ~-uVar16 + 1;
    lVar1 = -lVar11;
    puVar10 = puVar8 + lVar1 + -0x18;
    uVar14 = uVar14 ^ (ulonglong)register0x00000020;
    register0x00000020 =
         (BADSPACEBASE *)
         ((((ulonglong)register0x00000020 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1);
    uVar14 = uVar14 ^ (ulonglong)register0x00000020;
    uVar3 = *(undefined8 *)(puVar8 + lVar1 + 0x538);
    puVar17 = *(undefined **)(puVar8 + lVar1 + 0x540);
    lVar11 = *(longlong *)(puVar8 + lVar1 + 0x548);
    uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    puVar9 = puVar8 + lVar1 + 0x550;
  } while (uVar4 != 0);
  *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x18120645a;
  cVar2 = FUN_180487810(puVar8 + lVar1 + 0x598,uVar6,uVar14,uVar16);
  if (cVar2 == '\0') {
    *(undefined8 *)(puVar8 + lVar1 + 0x618) = 0x2621fc0;
    lVar12 = *(longlong *)(puVar8 + lVar1 + 0x618);
    *(undefined8 *)(puVar8 + lVar1 + 0x618) = 0xea56a473;
    *(undefined8 *)(puVar8 + lVar1 + 0x620) = 0xa2740b31;
    uVar6 = ~((*(uint *)(puVar8 + lVar1 + 0x618) >> 2 | *(uint *)(puVar8 + lVar1 + 0x618) << 0x1e) +
             0x1d144dc6) ^ 0xec80fb3d;
    uVar4 = ~((*(uint *)(puVar8 + lVar1 + 0x620) >> 0xf | *(uint *)(puVar8 + lVar1 + 0x620) << 0x11)
             + 0xa4ba1fdf) ^ 0x44e39b38;
    *(uint *)(puVar8 + lVar1 + 0x618) = uVar6 >> 2 | uVar6 << 0x1e;
    *(uint *)(puVar8 + lVar1 + 0x620) = uVar4 << 0x18 | uVar4 >> 8;
    *(undefined **)(puVar8 + lVar1 + 0x628) =
         puVar17 + (*(longlong *)(puVar8 + lVar1 + 0x618) - lVar12);
    *(longlong *)(puVar8 + lVar1 + 0x618) =
         *(longlong *)(puVar8 + lVar1 + 0x628) + *(longlong *)(puVar8 + lVar1 + 0x620);
    lVar7 = *(longlong *)(puVar8 + lVar1 + 0x618) - *(longlong *)(puVar8 + lVar1 + 0x618);
    lVar12 = *(longlong *)(puVar8 + lVar1 + 0x628);
    uVar14 = *(longlong *)(puVar8 + lVar1 + 0x618) - lVar12;
    uVar4 = *(int *)(lVar12 + lVar7) * 0x401;
    piVar18 = (int *)(puVar8 + lVar1 + 0x608);
    do {
      uVar6 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = (*(int *)(lVar12 + 4 + lVar7) + (uVar4 ^ uVar4 >> 6)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 8 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0xc + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x10 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x14 + lVar7)) * 0x401;
    do {
      *(undefined **)(puVar8 + lVar1 + 0x548) = &UNK_18120661f;
      func_0x000181204a85();
      uVar6 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = (*(int *)(lVar12 + 0x18 + lVar7) + (uVar4 ^ uVar4 >> 6)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x1c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x20 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x24 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x28 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x2c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x30 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x34 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x38 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x3c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x40 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x44 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x48 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x4c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x50 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x54 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x58 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x5c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x60 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 100 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x68 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x6c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x70 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x74 + lVar7)) * 0x401;
    do {
      uVar16 = 0;
      *(undefined **)(puVar8 + lVar1 + 0x548) = &UNK_1812067df;
      func_0x000181207eb6();
      if ((uVar16 & 0xc3) != 0) {
        *(undefined **)(puVar8 + lVar1 + 0x548) = &UNK_1812067e9;
        uVar3 = func_0x0001860c0e4d();
        return (uint)CONCAT11((byte)((ulonglong)uVar3 >> 8) ^ puVar8[lVar1 + 0x550],(char)uVar3);
      }
      uVar6 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = (*(int *)(lVar12 + 0x78 + lVar7) + (uVar4 ^ uVar4 >> 6)) * 0x401;
    lVar7 = lVar7 + 0x7c;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + lVar7)) * 0x401;
    uVar4 = uVar4 ^ uVar4 >> 6;
    if ((uVar14 & 0x22) == 0) {
      uVar6 = (uint)uVar14 & 0x12ff;
      uVar6 = (uVar6 + 1) * uVar6 + 0xe4b & 0x80000001;
    }
    else {
      uVar6 = (uint)lVar7 & 0x6bff;
      iVar5 = uVar6 * uVar6 + 1;
      uVar6 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
      uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
    }
    uVar15 = (uint)uVar14 & 0xff;
    uVar13 = uVar4 & 0x42ff;
    uVar15 = (uVar13 * uVar13 + 1) % 7 ^ (uVar15 - 1) * uVar15 & 1;
    lVar7 = lVar7 + (((longlong)(((int)(-uVar15 | uVar15) >> 0x1f) * -0x7c3b) ^ 0x7c7bU) -
                    ((longlong)(((int)(-uVar6 | uVar6) >> 0x1f) * -0xca0b) ^ 0xca4bU));
    uVar4 = (*(int *)(lVar12 + 4 + lVar7) + uVar4) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 8 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0xc + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x10 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x14 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x18 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x1c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x20 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x24 + lVar7)) * 0x401;
    uVar4 = uVar4 ^ uVar4 >> 6;
    lVar7 = lVar7 + 0x28;
    do {
      uVar16 = 0xc41c;
      *(undefined **)(puVar8 + lVar1 + 0x548) = &UNK_1812069ca;
      uVar6 = func_0x000181207f1c();
      if ((uVar16 & 0xf300) == 0) {
        iVar5 = (uVar6 ^ 0xffffffff) + 1 + *(int *)((ulonglong)uVar4 - 0x1467373f);
        return CONCAT31((int3)((uint)iVar5 >> 8),(char)iVar5 + 'V');
      }
      uVar6 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar15 = (*(int *)(lVar12 + lVar7) + uVar4) * 0x401;
    uVar4 = (uint)lVar7 & 0x41ff;
    iVar5 = uVar4 * uVar4 + 1;
    uVar6 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
    uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
    uVar4 = (uint)lVar7 & 0x16ff;
    uVar4 = (uVar4 - 1) * uVar4 - 1 & 1;
    lVar7 = lVar7 + (((longlong)(int)((-uVar4 | uVar4) ^ (-uVar6 | uVar6)) >> 0x1f | 0x9b6eU) ^
                    0x9b6a);
    uVar4 = ((uVar15 >> 6 ^ uVar15) + *(int *)(lVar12 + lVar7)) * 0x401;
    *(undefined8 *)(puVar8 + lVar1 + 0x618) = 0x97dda20f8dde6a78;
    *(int *)(puVar8 + lVar1 + 0x618) = (int)*(undefined8 *)(puVar8 + lVar1 + 0x618);
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 4 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 8 + lVar7)) * 0x401;
    lVar7 = lVar7 + 0xc;
    uVar6 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + lVar7)) * 0x401;
    uVar6 = uVar6 ^ uVar6 >> 6;
    uVar4 = (uint)lVar7 & 0x4f;
    cVar2 = (char)uVar6;
    lVar7 = lVar7 + ((longlong)
                     (0xd49b <<
                     ((byte)((int)(uVar4 * uVar4 * (uVar4 + 1) * (uVar4 + 1) & 2) >>
                            ((cVar2 + '\x01') * cVar2 + 0x41U & 1)) & 0x1f)) ^ 0xd49fU);
    uVar4 = (*(int *)(lVar12 + lVar7) + uVar6) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 4 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 8 + lVar7)) * 0x401;
    do {
      uVar6 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar4 = (*(int *)(lVar12 + 0xc + lVar7) + (uVar4 ^ uVar4 >> 6)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x10 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x14 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x18 + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x1c + lVar7)) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *(int *)(lVar12 + 0x20 + lVar7)) * 0x401;
    lVar7 = lVar7 + 0x24;
    do {
      uVar6 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar6 = (*(int *)(lVar12 + lVar7) + (uVar4 ^ uVar4 >> 6)) * 0x401;
    uVar6 = uVar6 ^ uVar6 >> 6;
    uVar15 = uVar6 & 0x5f;
    uVar4 = (uint)lVar7 & 0x2ff;
    iVar5 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
    uVar4 = ((uVar6 & 0x66ff) * (uVar6 & 0x66ff) + 1) % 7;
    uVar13 = (iVar5 + (iVar5 / 3 + (iVar5 >> 0x1f) +
                      (int)(((longlong)iVar5 / 3 + ((longlong)iVar5 >> 0x3f) & 0xffffffffU) >> 0x1f)
                      ) * -3) - uVar4;
    uVar14 = ((longlong)(int)(uVar15 * uVar15 * (uVar15 + 1) * (uVar15 + 1) & 0x80000003) >>
              ((byte)uVar14 & 0x1f) | 0xa3c1U) ^ 0xffffffffffff5c45;
    lVar7 = lVar7 + ((longlong)(((int)(-uVar13 | uVar13) >> 0x1f) * -0xbb49) ^ 0xbbc9U) + uVar14;
    do {
      uVar15 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    uVar6 = (*(int *)(lVar12 + lVar7) + uVar6) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 4 + lVar7)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 8 + lVar7)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 0xc + lVar7)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 0x10 + lVar7)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 0x14 + lVar7)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 0x18 + lVar7)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *(int *)(lVar12 + 0x1c + lVar7)) * 0x401;
    do {
      uVar15 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    do {
      uVar15 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    uVar6 = ~(uVar6 ^ uVar6 >> 6) + 0x925014ad;
    if ((CONCAT71((int7)((ulonglong)uVar3 >> 8),
                  (((uVar6 * 0x800 | uVar6 >> 0x15) ^ 0x1f994175) << 2 | (uVar6 & 0x1fffff) >> 0x13)
                  != *(uint *)(puVar8 + lVar1 + 0x618)) & 0x3ffffff) != 0) {
      *(longlong *)(puVar8 + lVar1 + 0x548) = lVar11;
      *(ulonglong *)(puVar8 + lVar1 + 0x540) = (ulonglong)uVar4;
      *(ulonglong *)(puVar8 + lVar1 + 0x538) = (ulonglong)uVar13;
      uVar4 = thunk_FUN_1805a9280();
      return uVar4;
    }
    puVar9 = puVar8 + lVar1 + -0x18;
    do {
      *(ulonglong *)(puVar9 + 0x560) = uVar14;
      *(longlong *)(puVar9 + 0x558) = lVar12;
      *(int **)(puVar9 + 0x550) = piVar18;
      lVar1 = -(longlong)(int)lVar11;
      puVar10 = puVar9 + lVar1 + 0x550;
      piVar18 = *(int **)(puVar9 + lVar1 + 0xaa0);
      lVar12 = *(longlong *)(puVar9 + lVar1 + 0xaa8);
      uVar14 = *(ulonglong *)(puVar9 + lVar1 + 0xab0);
      uVar4 = (*piVar18 + 1) * *piVar18 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
      puVar9 = puVar9 + lVar1 + 0x550;
    } while (uVar4 != 0);
  }
  else {
    *(undefined **)(puVar8 + lVar1 + 0x588) = &DAT_182673810;
    puVar8[lVar1 + 0x590] = 0;
    *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x1812070d4;
    cVar2 = FUN_180487810(puVar8 + lVar1 + 0x588);
    while ((cVar2 != '\0' && (DAT_182673940 != 0))) {
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x181207100;
      uVar3 = FUN_1804870c0(&DAT_182673920,puVar8 + lVar1 + 0x5a8);
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x181207109;
      lVar11 = FUN_180489600(uVar3);
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x181207117;
      FUN_18048a610(param_1 + 0x20,lVar11 + 8);
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x181207123;
      FUN_180487040(&DAT_182673920);
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x18120712e;
      FUN_1804878d0(puVar8 + lVar1 + 0x588);
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x181207137;
      FUN_18048a500(param_1 + 0x20);
      *(undefined **)(puVar8 + lVar1 + 0x588) = &DAT_182673810;
      puVar8[lVar1 + 0x590] = 0;
      *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x18120714b;
      cVar2 = FUN_180487810(puVar8 + lVar1 + 0x588);
    }
    *(undefined8 *)(puVar8 + lVar1 + 0x548) = 0x181207159;
    FUN_1804878d0(puVar8 + lVar1 + 0x588);
  }
  *(undefined8 *)(puVar10 + 0x560) = 0x181207164;
  uVar4 = FUN_1804878d0(puVar10 + 0x5b0);
  return uVar4;
}



############ FUN_ 180995c84 size=378 ############

ulonglong FUN_180995c84(void)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  int unaff_EBX;
  undefined8 unaff_RBP;
  undefined8 unaff_RDI;
  undefined8 in_R9;
  int *unaff_R12;
  longlong unaff_R14;
  int unaff_R15D;
  
  uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
  }
  if (uVar3 != 0) {
    func_0x00018099623a(0x5414);
    uVar2 = FUN_180995c84();
    return uVar2;
  }
  uVar2 = CONCAT71((int7)((ulonglong)unaff_RBP >> 8),
                   ((unaff_EBX + 0x3d7c6baaU) * 0x10000 | unaff_EBX + 0x3d7c6baaU >> 0x10) ==
                   0x18e747e1);
  if ((uVar2 & 0x7ffffff) != 0 || (int)uVar2 != 0) {
    do {
      *(undefined8 *)((longlong)register0x00000020 + -8) = in_R9;
      *(int **)((longlong)register0x00000020 + -0x10) = unaff_R12;
      *(undefined8 *)((longlong)register0x00000020 + -0x18) = unaff_RDI;
      lVar1 = -(longlong)unaff_R15D;
      unaff_RDI = *(undefined8 *)((longlong)register0x00000020 + lVar1 + 0x248);
      unaff_R12 = *(int **)((longlong)register0x00000020 + lVar1 + 0x250);
      in_R9 = *(undefined8 *)((longlong)register0x00000020 + lVar1 + 600);
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar1 + 0x260);
      uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    if (unaff_R14 == 0) {
      uVar2 = 0;
    }
    else {
      uVar2 = (ulonglong)*(uint *)(unaff_R14 + 8);
    }
    return uVar2;
  }
  uVar2 = thunk_FUN_1805a9280();
  return uVar2;
}



############ FUN_ 181205015 size=1412 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181205015(uint *param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4,
                  undefined4 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,
                  int param_9,undefined8 param_10,undefined4 param_11,undefined8 param_12,
                  undefined8 param_13,undefined4 param_14,undefined8 param_15,undefined8 param_16)

{
  longlong lVar1;
  undefined1 *puVar2;
  uint in_EAX;
  uint uVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint uVar7;
  undefined8 *puVar8;
  undefined4 *puVar9;
  uint *puVar10;
  undefined8 *puVar11;
  uint unaff_EBX;
  undefined1 *puVar12;
  undefined8 *unaff_RBP;
  longlong unaff_RDI;
  uint uVar13;
  longlong lVar14;
  int iVar15;
  longlong unaff_R13;
  longlong unaff_R15;
  int *piVar16;
  undefined1 auStackX_8 [32];
  
  while( true ) {
    piVar16 = (int *)(unaff_R15 + -0x7a623905);
    *param_1 = in_EAX >> 1;
    uVar6 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    if (uVar6 == 0) break;
    puVar10 = (uint *)(unaff_RBP + 2);
    param_1 = (uint *)((longlong)&param_12 + 4);
    FUN_181203e50();
    uVar5 = rdtsc();
    uVar6 = (int)uVar5 + (int)((ulonglong)uVar5 >> 0x20);
    *puVar10 = uVar6;
    uVar4 = (ulonglong)uVar6 * -0x1ff - 0x5b3ef5a3;
    uVar4 = ((uVar4 >> 9) - 0x300c9bb8) + uVar4 * 4;
    uVar4 = (uVar4 * 0x400 | uVar4 >> 0x36) * 0x1001 >> 5;
    uVar4 = uVar4 ^ uVar4 * 0x8000 - 0x48481e2b;
    uVar4 = (uVar4 ^ uVar4 * 3 >> 7) * -0x7ff - 0x2bb2843b;
    in_EAX = ((int)uVar4 + (int)(uVar4 >> 5)) * 2;
    if ((int *)0xffffffff859dc6fa < piVar16 || unaff_R15 == 0) {
      FUN_181205015();
      return;
    }
  }
  param_12._4_4_ = param_12._4_4_ ^ (uint)param_16;
  if (param_12._4_4_ < 0x4444447) {
    *(undefined4 *)(unaff_RBP + 0xf) = param_16._4_4_;
    *(undefined4 *)((longlong)unaff_RBP + 0x7c) = param_14;
    *(undefined4 *)(unaff_RBP + 0x10) = param_11;
    *(undefined4 *)((longlong)unaff_RBP + 0x84) = param_5;
    do {
      puVar11 = unaff_RBP + -1;
      puVar8 = &param_13;
      func_0x000181204a85();
      *(undefined4 *)puVar8 = 0x6ecd5091;
      *puVar11 = 0x1812050a3;
      uVar6 = (*piVar16 + 1) * *piVar16 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar6 = ((uint)param_13 << 4 | (uint)param_13 >> 0x1c) + 0x914f558b;
    uVar6 = (uVar6 >> 0x1f | uVar6 * 2) + 0x54b8b08f;
    param_13._0_4_ = (uVar6 >> 6 | uVar6 * 0x4000000) + 0xba601b56;
    (*(code *)((longlong)(int)(uint)param_13 + unaff_RBP[-1]))(unaff_RBP + 0xf,unaff_RBP + 0x15);
    do {
      puVar9 = (undefined4 *)((longlong)&param_8 + 4);
      func_0x000181204236();
      *puVar9 = 0xc2c879bf;
      uVar6 = (*piVar16 + 1) * *piVar16 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar6 = (param_8._4_4_ + 0x6b6aa9 >> 0x12 | (param_8._4_4_ + 0x6b6aa9) * 0x4000) ^ 0x42bee0a9;
    uVar6 = (uVar6 << 0x1c | uVar6 >> 4) + 0x2ffa1d7f;
    uVar6 = (uVar6 >> 0x14 | uVar6 * 0x1000) ^ 0xd8e961ca;
    param_8._4_4_ = (uVar6 >> 0x13 | uVar6 << 0xd) + 0x42302c84;
    uVar6 = *(uint *)(unaff_RBP + 0x16);
    param_4 = (ulonglong)*(uint *)((longlong)unaff_RBP + 0xb4);
    iVar15 = 7;
    do {
      uVar3 = (uVar6 >> 0xc ^ uVar6) >> 2 & 0xfff;
      uVar13 = (uint)param_4;
      uVar7 = ((uint)(param_4 >> 5) ^ uVar13) >> 8 & 1;
      uVar6 = (uVar3 << 0xc | uVar3) << 2 ^ uVar6;
      uVar3 = (uVar6 >> 0x18 | uVar6 << 8) + 0x6e4157a7;
      uVar13 = (uVar13 << 0x1c | ((uVar7 << 5 | uVar7) << 8 ^ uVar13) >> 4) + 0x20a786ca;
      uVar6 = (uVar3 >> 0xb ^ uVar3) >> 9 & 0x3ff;
      uVar7 = uVar3 ^ (uVar6 << 0xb | uVar6) << 9;
      uVar6 = (uVar13 >> 0x11 ^ uVar13) >> 0xb & 3;
      uVar13 = uVar13 ^ (uVar6 << 0x11 | uVar6) << 0xb;
      uVar6 = (uVar7 << 4 | uVar7 >> 0x1c) & 0x87878787 |
              (uVar7 >> 4 | uVar3 * 0x10000000) & 0x78787878;
      uVar3 = (uVar13 >> 0x10 | uVar13 << 0x10) & 0xa3635c9c |
              (uVar13 << 0x10 | uVar13 >> 0x10) & 0x5c9ca363;
      uVar3 = (uVar3 << 0x12 | uVar3 >> 0xe) + 0x607d5440;
      uVar7 = uVar3 ^ (uVar6 << 0x12 | uVar6 >> 0xe) + 0x270a0bab;
      uVar6 = uVar7 & 0x3c3c3c3c ^ uVar3;
      uVar3 = uVar7 & 0xc3c3c3c3 ^ uVar3 ^ uVar6;
      uVar7 = uVar3 & 0x8cbe5e76 ^ uVar6;
      param_4 = (ulonglong)uVar7;
      uVar6 = uVar3 & 0x7341a189 ^ uVar6;
      iVar15 = iVar15 + -1;
    } while (-1 < iVar15);
    iVar15 = (uVar6 + 0xfacf38d9 >> 0x15 | (uVar6 + 0xfacf38d9) * 0x800) + 0x58b3008b;
    uVar6 = (iVar15 * 2 | (uint)(iVar15 < 0)) ^ 0xd75fe617;
    uVar6 = ~(uVar6 << 0x1a | uVar6 >> 6) + 0x1325155;
    if (((uVar6 * 0x400 | uVar6 >> 0x16) ^ param_8._4_4_) + uVar7 != param_9) {
      do {
        *unaff_RBP = FUN_180bc28a0;
        uVar6 = (*piVar16 + 1) * *piVar16 & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      (*(code *)*unaff_RBP)();
      do {
        FUN_181203ea5();
        FUN_181207388();
        uVar6 = (*piVar16 + 1) * *piVar16 & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
    }
  }
  uVar6 = ~unaff_EBX & param_13._4_4_ | ~param_13._4_4_ & unaff_EBX;
  if (uVar6 == uVar6 >> 7) {
    if (*(longlong *)(unaff_R13 + 0x70) != 0) {
      unaff_RDI = *(longlong *)(unaff_R13 + 0x70) + 8;
    }
    uVar5 = FUN_1804730e0(unaff_R13 + 0xa0);
    uVar5 = .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(uVar5,unaff_RBP + 1);
    FUN_181245ff0(unaff_RBP + 0xc,uVar5);
    lVar14 = unaff_RDI;
    FUN_1811f8160();
    FUN_18124a7e0(unaff_RBP + 1);
    iVar15 = *(int *)(unaff_RBP + -0x10);
    puVar2 = auStackX_8;
    do {
      puVar12 = puVar2;
      *(longlong *)(puVar12 + -8) = unaff_RDI;
      *(longlong *)(puVar12 + -0x10) = unaff_R13;
      *(longlong *)(puVar12 + -0x18) = lVar14;
      lVar1 = -(longlong)iVar15;
      lVar14 = *(longlong *)(puVar12 + lVar1 + 0xac8);
      unaff_R13 = *(longlong *)(puVar12 + lVar1 + 0xad0);
      unaff_RDI = *(longlong *)(puVar12 + lVar1 + 0xad8);
      uVar6 = (*piVar16 + 1) * *piVar16 & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
      puVar2 = puVar12 + lVar1 + 0xae0;
    } while (uVar6 != 0);
    *(undefined **)(puVar12 + lVar1 + 0xad8) = &UNK_181205618;
  }
  uVar5 = FUN_1804730e0(unaff_R13 + 0xa0);
  uVar5 = .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(uVar5,unaff_RBP + -0xb);
  FUN_181245ff0(unaff_RBP + 0xd,uVar5);
  FUN_1811f8160();
  FUN_18124a7e0(unaff_RBP + -0xb);
  thunk_FUN_1805a9280((longlong)*(int *)((longlong)unaff_RBP + -0x7c),thunk_FUN_1805a9280,
                      0x181205577,~(~param_4 + 1) + 1);
  return;
}



############ FUN_ 180a05690 size=2000 ############

/* WARNING: Instruction at (ram,0x000180a05b00) overlaps instruction at (ram,0x000180a05afc)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000180a05b93) */
/* WARNING: Removing unreachable block (ram,0x000180a05797) */
/* WARNING: Removing unreachable block (ram,0x000180a056fd) */
/* WARNING: Removing unreachable block (ram,0x000180a056e6) */
/* WARNING: Removing unreachable block (ram,0x000180a05722) */
/* WARNING: Removing unreachable block (ram,0x000180a05afc) */
/* WARNING: Removing unreachable block (ram,0x000180a05b2a) */
/* WARNING: Removing unreachable block (ram,0x000180a0577e) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_180a05690(longlong param_1,char *param_2,uint param_3)

{
  byte bVar1;
  byte *pbVar2;
  undefined1 *puVar3;
  char cVar4;
  int iVar5;
  undefined8 uVar6;
  uint uVar7;
  undefined1 *puVar8;
  ulonglong uVar9;
  char *pcVar10;
  char *pcVar11;
  longlong lVar12;
  uint uVar13;
  uint uVar14;
  longlong lVar15;
  ulonglong uVar16;
  bool bVar17;
  bool bVar18;
  int unaff_retaddr;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  undefined4 local_74;
  undefined8 local_70;
  undefined8 local_68;
  undefined4 local_60;
  uint local_58;
  uint local_50;
  
  uVar16 = (ulonglong)param_3;
  uVar14 = (uint)&stack0x00000000;
  uVar13 = ((uVar14 & 0x19ff) + 1) * (uVar14 & 0x19ff) + 0x2cef & 0x80000001;
  uVar7 = ((uVar14 & 0x12ff) + 1) * (uVar14 & 0x12ff) + 0x2c51 & 0x80000001;
  local_50 = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x4f93 ^ ((int)(-uVar13 | uVar13) >> 0x1f) * -0x4603
  ;
  uVar7 = (((uVar14 & 0x37ff) + 1) * (uVar14 & 0x37ff) + 7) % 0x51;
  local_78 = 0xffffffff;
  uVar7 = ((int)(-uVar7 | uVar7) >> 0x1f) * -0x2dbc ^ 0x2d8c;
  local_58 = uVar7;
  local_74 = 0xffff0000;
  local_60 = 0xffff0000;
  lVar12 = 0x180000000;
  uVar6 = 0x181204464;
  local_70 = 0xd556ac27545129f;
  local_68 = 0x17545129f;
  uVar14 = (((iRam0000000181204468 + iRam0000000181204464 * 0x25) * 0x25 + iRam000000018120446c) *
            0x25 + iRam0000000181204470) * 0x25;
  bVar17 = CARRY4(uVar14,uRam0000000181204474);
  uVar14 = uVar14 + uRam0000000181204474;
  bVar18 = uVar14 == 0;
  do {
    if (!bVar17 && !bVar18) {
      uVar14 = ((uVar14 ^ 0xffffffff) + 1 ^ 0xffffffff) + 1;
    }
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
    bVar17 = false;
    bVar18 = uVar13 == 0;
  } while (!bVar18);
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar14 = ((((((((iRam00000001812044d0 * 0x25 + iRam00000001812044d4) * 0x25 + iRam00000001812044d8
                 ) * 0x25 + iRam00000001812044dc) * 0x25 + iRam00000001812044e0) * 0x25 +
              iRam00000001812044e4) * 0x25 + (DAT_1812044a4 * 0x25 + DAT_1812044a8) * 0x5d269c1 +
              DAT_1812044ac * -0x295b2d93 + iRam0000000181204478 * -0x63c28c6f +
              iRam00000001812044b8 * -0x5675a22f + DAT_181204498 * -0x503d94f +
              iRam000000018120447c * -0x7f3c9c03 + iRam0000000181204480 * -0x644dbf07 +
              iRam00000001812044c8 * -0x2fe8ed1f + iRam00000001812044c0 * -0x349c0ac7 +
              _DAT_18120448c * -0x4a8c6433 + DAT_18120449c * -0xdf92f63 +
              _DAT_1812044b0 * -0x5b104d57 + iRam00000001812044b4 * -0x7f0070cb +
              iRam0000000181204484 * 0x573c2b45 + iRam00000001812044cc * 0x1a617d0d +
              iRam0000000181204494 * 0x46719795 + iRam0000000181204490 * 0x2e6ae889 +
              iRam0000000181204488 * 0x39b584a1 + DAT_1812044a0 * 0x22378919 +
              iRam00000001812044c4 * 0x1355ba85 + iRam00000001812044bc * 0x6572713d +
              uVar14 * -0x6b1e4c0b + iRam00000001812044e8) * 0x25 + iRam00000001812044ec) * 0x25 +
           iRam00000001812044f0) * 0x25 + iRam00000001812044f4;
  uVar9 = (ulonglong)uVar14;
  do {
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar14 = (((((((iRam0000000181204540 * 0x25 + iRam0000000181204544) * 0x25 + iRam0000000181204548)
                * 0x25 + iRam000000018120454c) * 0x25 + iRam0000000181204550) * 0x25 +
             iRam0000000181204554) * 0x25 +
             (iRam0000000181204514 * 0x25 + iRam0000000181204518) * 0x5d269c1 +
             iRam0000000181204524 * -0x7f0070cb + _DAT_18120451c * -0x295b2d93 +
             iRam0000000181204528 * -0x5675a22f + iRam0000000181204508 * -0x503d94f +
             iRam0000000181204530 * -0x349c0ac7 + iRam0000000181204538 * -0x2fe8ed1f +
             iRam000000018120450c * -0xdf92f63 + iRam00000001812044fc * -0x4a8c6433 +
             iRam0000000181204520 * -0x5b104d57 + iRam000000018120453c * 0x1a617d0d +
             iRam00000001812044f8 * 0x39b584a1 + iRam0000000181204504 * 0x46719795 +
             iRam0000000181204500 * 0x2e6ae889 + iRam0000000181204534 * 0x1355ba85 +
             iRam0000000181204510 * 0x22378919 + iRam000000018120452c * 0x6572713d +
             iRam0000000181204558 + uVar14 * 0x573c2b45) * 0x25 + iRam000000018120455c) * 0x25 +
           iRam0000000181204560;
  uVar14 = (uVar14 * 4 | uVar14 >> 0x1e) & 0x99999999 |
           (uVar14 >> 2 | uVar14 * 0x40000000) & 0x66666666;
  uVar14 = (uVar14 << 0x1c | uVar14 >> 4) + 0x2e5c7dc2;
  uVar14 = (uVar14 >> 0x15 | uVar14 * 0x800) + 0x8abaed61;
  if (uVar14 != uVar14 >> 1) {
    lVar12 = (ulonglong)(uVar14 >> 1) + (ulonglong)uVar14;
    uVar6 = thunk_FUN_1805a9280((longlong)(int)local_50,
                                -((((ulonglong)uVar14 - lVar12 ^ 0xffffffffffffffff) + 1) - lVar12))
    ;
    return uVar6;
  }
  puVar3 = auStack_98;
  do {
    puVar8 = puVar3;
    *(BADSPACEBASE **)(puVar8 + -8) = register0x00000020;
    *(ulonglong *)(puVar8 + -0x10) = uVar9;
    *(undefined8 *)(puVar8 + -0x18) = uVar6;
    lVar15 = lVar12 + param_1;
    lVar12 = ~(param_1 - lVar15) + 1;
    param_1 = lVar15 - lVar12;
    lVar15 = -(longlong)(int)uVar7;
    uVar16 = -(~uVar16 + 1);
    uVar6 = *(undefined8 *)(puVar8 + lVar15 + 0x18);
    uVar9 = *(ulonglong *)(puVar8 + lVar15 + 0x20);
    register0x00000020 = *(BADSPACEBASE **)(puVar8 + lVar15 + 0x28);
    uVar14 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
    puVar3 = puVar8 + lVar15 + 0x30;
  } while (uVar14 != 0);
  if (((param_1 == 0) || (param_2 == (char *)0x0)) || (0x500 < (uint)uVar16)) {
    return 99;
  }
  if ((uint)uVar16 != 0) {
    pcVar11 = param_2 + uVar16;
    *(char **)(puVar8 + lVar15 + 0x58) = pcVar11;
    for (pcVar10 = param_2; pcVar10 < pcVar11;
        pcVar10 = pcVar10 + (*(uint *)(puVar8 + lVar15 + 0x6c) + uVar7)) {
      *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a05e90;
      uVar7 = FUN_180a00950(param_1,pcVar10,puVar8 + lVar15 + 0x6c);
      if ((0x500 < uVar7) ||
         (pcVar11 < pcVar10 + (ulonglong)uVar7 + (ulonglong)*(uint *)(puVar8 + lVar15 + 0x6c)))
      break;
      if (*pcVar10 == '\x06') {
        if (pcVar10 != (char *)0x0) {
          uVar14 = 0;
          if (pcVar10 == (char *)0xffffffffffffffff) {
            uVar14 = *(uint *)(puVar8 + lVar15 + 0x54);
            goto LAB_180a05fad;
          }
          lVar12 = 0;
          uVar13 = uVar14;
          goto LAB_180a05f10;
        }
        break;
      }
    }
  }
  uVar13 = *(uint *)(puVar8 + lVar15 + 0x54);
  goto LAB_180a05ebf;
LAB_180a05f10:
  do {
    pbVar2 = *(byte **)((longlong)&DAT_181c09d70 + lVar12);
    if (pbVar2 != (byte *)0x0) {
      bVar1 = *pbVar2;
      *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a05f2c;
      cVar4 = FUN_1806213b0(pcVar10 + 1,pbVar2,bVar1 + 1);
      if (cVar4 != '\0') goto LAB_180a05f34;
LAB_180a05f6c:
      *(uint *)(puVar8 + lVar15 + 0x50) = uVar13;
      if (uVar13 != 0xffffffff) goto LAB_180a05fc7;
      goto LAB_180a05fb6;
    }
LAB_180a05f34:
    pbVar2 = *(byte **)((longlong)&PTR_DAT_181c09dd0 + lVar12);
    if (pbVar2 != (byte *)0x0) {
      bVar1 = *pbVar2;
      *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a05f50;
      cVar4 = FUN_1806213b0(pcVar10 + 1,pbVar2,bVar1 + 1);
      if (cVar4 == '\0') {
        uVar14 = 0xffff0000;
        goto LAB_180a05f6c;
      }
    }
    uVar13 = uVar13 + 1;
    lVar12 = lVar12 + 8;
  } while (uVar13 < 0xc);
  *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a05f94;
  cVar4 = FUN_1806213b0(pcVar10 + 1,&DAT_181c09ad0,8);
  uVar14 = *(uint *)(puVar8 + lVar15 + 0x54);
  if (cVar4 == '\0') {
    uVar14 = 0;
  }
LAB_180a05fad:
  *(undefined4 *)(puVar8 + lVar15 + 0x50) = 0xffffffff;
LAB_180a05fb6:
  iVar5 = -1;
  if (uVar14 == 0xffff0000) goto LAB_180a05ec3;
LAB_180a05fc7:
  uVar16 = 0;
  iVar5 = *(int *)(puVar8 + lVar15 + 0x50);
  pcVar10 = pcVar10 + (*(int *)(puVar8 + lVar15 + 0x6c) + uVar7);
  if (((*(char **)(puVar8 + lVar15 + 0x58) <= pcVar10) || ((iVar5 != -1 && (uVar14 != 0xffff0000))))
     || (uVar7 = ((int)param_2 - (int)pcVar10) + *(int *)(puVar8 + lVar15 + 0xe0),
        pcVar10 == (char *)0x0)) goto LAB_180a05ec3;
  uVar13 = uVar14;
  if (uVar7 - 1 < 0x1400) {
    pcVar11 = pcVar10 + uVar7;
    for (; pcVar10 < pcVar11; pcVar10 = pcVar10 + (*(uint *)(puVar8 + lVar15 + 0x74) + uVar7)) {
      *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a06040;
      uVar7 = FUN_180a00950(param_1,pcVar10,puVar8 + lVar15 + 0x74);
      if ((0x500 < uVar7) ||
         (pcVar11 < pcVar10 + (ulonglong)uVar7 + (ulonglong)*(uint *)(puVar8 + lVar15 + 0x74)))
      break;
      if (*pcVar10 == '\x06') {
        if (pcVar10 != (char *)0x0) {
          iVar5 = *(int *)(puVar8 + lVar15 + 0x50);
          if (iVar5 == -1) {
            *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a06095;
            iVar5 = FUN_180a00490(pcVar10 + 1,0);
            goto LAB_180a05ec3;
          }
          pcVar10 = pcVar10 + 1;
          if (pcVar10 == (char *)0x0) goto LAB_180a05ec3;
          uVar9 = uVar16;
          goto LAB_180a060b0;
        }
        break;
      }
    }
  }
  goto LAB_180a05ebf;
  while( true ) {
    uVar7 = (int)uVar9 + 1;
    uVar9 = (ulonglong)uVar7;
    uVar16 = uVar16 + 8;
    if (0xb < uVar7) break;
LAB_180a060b0:
    pbVar2 = *(byte **)((longlong)&DAT_181c09d70 + uVar16);
    if (pbVar2 != (byte *)0x0) {
      bVar1 = *pbVar2;
      *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a060cc;
      cVar4 = FUN_1806213b0(pcVar10,pbVar2,bVar1 + 1);
      uVar13 = 0;
      if (cVar4 == '\0') goto LAB_180a05ebf;
    }
    pbVar2 = *(byte **)((longlong)&PTR_DAT_181c09dd0 + uVar16);
    if (pbVar2 != (byte *)0x0) {
      bVar1 = *pbVar2;
      *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a060ec;
      cVar4 = FUN_1806213b0(pcVar10,pbVar2,bVar1 + 1);
      if (cVar4 == '\0') {
        uVar13 = 0xffff0000;
        goto LAB_180a05ebf;
      }
    }
  }
  *(undefined8 *)(puVar8 + lVar15 + 0x28) = 0x180a06110;
  cVar4 = FUN_1806213b0(pcVar10,&DAT_181c09ad0,8);
  uVar13 = uVar14;
  if (cVar4 == '\0') {
    uVar13 = 0;
  }
LAB_180a05ebf:
  iVar5 = *(int *)(puVar8 + lVar15 + 0x50);
  uVar14 = uVar13;
LAB_180a05ec3:
  if (*(int **)(puVar8 + lVar15 + 0xe8) != (int *)0x0) {
    **(int **)(puVar8 + lVar15 + 0xe8) = iVar5;
  }
  if (*(uint **)(puVar8 + lVar15 + 0xf0) != (uint *)0x0) {
    **(uint **)(puVar8 + lVar15 + 0xf0) = uVar14;
  }
  return 0;
}



############ FUN_ 181354d20 size=3412 ############

/* WARNING: Instruction at (ram,0x000181355965) overlaps instruction at (ram,0x000181355961)
    */
/* WARNING: Removing unreachable block (ram,0x00018135614c) */
/* WARNING: Removing unreachable block (ram,0x000181355961) */
/* WARNING: Removing unreachable block (ram,0x00018135561e) */
/* WARNING: Removing unreachable block (ram,0x000181355313) */
/* WARNING: Removing unreachable block (ram,0x000181354e58) */
/* WARNING: Removing unreachable block (ram,0x0001813553ba) */
/* WARNING: Removing unreachable block (ram,0x0001813557dd) */
/* WARNING: Removing unreachable block (ram,0x000181355d8b) */
/* WARNING: Removing unreachable block (ram,0x0001813559d0) */
/* WARNING: Removing unreachable block (ram,0x000181354d96) */

ulonglong FUN_181354d20(longlong param_1)

{
  longlong lVar1;
  undefined1 *puVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  longlong lVar8;
  ulonglong uVar9;
  int *piVar10;
  int *piVar11;
  undefined1 *puVar12;
  undefined1 *puVar13;
  longlong lVar14;
  uint uVar15;
  uint uVar16;
  longlong lVar17;
  ulonglong uVar18;
  longlong lVar19;
  ulonglong uVar20;
  uint uVar21;
  ulonglong uVar22;
  uint uVar23;
  bool bVar24;
  int unaff_retaddr;
  undefined1 auStack_68 [40];
  
  uVar6 = (uint)&stack0x00000000;
  iVar5 = (uVar6 & 0x68ff) * (uVar6 & 0x68ff) + 1;
  uVar23 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar23 = (int)(uVar23 - 7) >> 0x1f & uVar23;
  uVar23 = (((int)(-uVar23 | uVar23) >> 0x1f) * 0x4841 ^ 0xfffffeffU) & 0x973e;
  if (((ulonglong)&stack0x00000000 & 0x160) == 0) {
    uVar6 = ((uVar6 & 0x1eff) + 1) * (uVar6 & 0x1eff) + 0x1fc7 & 0x80000001;
  }
  else {
    uVar6 = (((uVar6 & 0x9ff) + 1) * (uVar6 & 0x9ff) + 7) % 0x51;
  }
  uVar4 = (((uint)(iRam0000000180c4c6b8 * 0x401) >> 6 ^ iRam0000000180c4c6b8 * 0x401) +
          iRam0000000180c4c6bc) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6c0) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6c4) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6c8) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6cc) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6d0) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6d4) * 0x401;
  uVar15 = ((uVar4 >> 6 ^ uVar4) + iRam0000000180c4c6d8) * 0x401;
  uVar15 = uVar15 ^ uVar15 >> 6;
  uVar4 = uVar15 & 7 | 0x12;
  uVar7 = uVar15 & 0x1f | 0x33;
  uVar21 = uVar15 & 7 | 0x62;
  uVar4 = uVar7 * uVar7 * 0x6253 ^ uVar4 * uVar4 * 0x1b3b;
  uVar7 = uVar15 & 0x3f | 0x76;
  piVar10 = (int *)((longlong)
                    (int)((uVar7 * uVar7 * 0xdbcd == uVar21 * uVar21 * 0xd6a5) + 0xeaa3 ^
                         ((int)(-uVar4 | uVar4) >> 0x1f) + 0xebe4U) + 0x180c4c59c);
  lVar14 = 2;
  lVar8 = 2;
  uVar4 = (*piVar10 + uVar15) * 0x401;
  do {
    uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[1]) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[2]) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[3]) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[4]) * 0x401;
    piVar11 = piVar10 + 5;
    piVar10 = piVar10 + 6;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *piVar11) * 0x401;
    uVar4 = ((uVar4 >> 6 ^ uVar4) + *piVar10) * 0x401;
    lVar8 = lVar8 + -1;
  } while (lVar8 != 0);
  uVar7 = (uint)piVar10 & 0xeff;
  uVar15 = (uint)piVar10 & 0x6aff;
  piVar10 = (int *)((longlong)piVar10 +
                   ((longlong)(int)(((uVar15 - 1) * uVar15 & (uVar7 - 1) * uVar7 - 1 & 1) + 0xc642)
                   ^ 0xc646U));
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *piVar10) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[1]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[2]) * 0x401;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = (piVar10[3] + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[4]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[5]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[6]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[7]) * 0x401;
  uVar4 = uVar4 ^ uVar4 >> 6;
  if ((uVar4 & 0x3e) == 0) {
    uVar7 = ((uVar4 & 0x1eff) + 1) * (uVar4 & 0x1eff) + 0x480d & 0x80000001;
  }
  else {
    uVar7 = 0x31;
  }
  piVar10 = (int *)((longlong)(piVar10 + 7) +
                   (0x144 - ((longlong)(((int)(-uVar7 | uVar7) >> 0x1f) * -0x71f6) ^ 0x70b6U)));
  uVar4 = (*piVar10 + uVar4) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[1]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[2]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[3]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[4]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[5]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[6]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[7]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[8]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[9]) * 0x401;
  piVar10 = piVar10 + 10;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = (*piVar10 + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar7 = uVar7 ^ uVar7 >> 6;
  uVar4 = (uint)piVar10;
  if (((ulonglong)piVar10 & 0xc0) == 0) {
    uVar15 = uVar7 & 7 | 0x60;
    uVar21 = uVar7 & 0x3f | 0x34;
    if (((uVar15 * uVar15 * -0x11 ^ uVar21 * uVar21 * -0x33) & 0x44) == 0) {
      uVar15 = (uVar4 & 0x73ff) * (uVar4 & 0x73ff) + 1;
      iVar5 = (uVar15 / 7) * 7;
    }
    else {
      uVar15 = (uVar4 & 0xcff) * (uVar4 & 0xcff) * 0x10 + 4;
      iVar5 = (uVar15 / 0x13) * 0x13;
    }
    uVar15 = ((int)(-(uVar15 - iVar5) | uVar15 - iVar5) >> 0x1f) * -0xb572;
  }
  else {
    uVar15 = 0xb572;
  }
  uVar21 = uVar7 & 0x1f | 0x7e;
  uVar16 = uVar7 & 0x3f | 0x13;
  uVar4 = uVar4 & 0x4f;
  uVar21 = ((uVar7 & 0x16ff) * (uVar7 & 0x16ff) * 0x10 + 4) % 0x13 -
           (uint)(uVar21 * uVar21 * 0x9d2d == uVar16 * uVar16 * 0x568f);
  uVar20 = (ulonglong)uVar21;
  uVar4 = uVar4 * uVar4 * (uVar4 + 1) * (uVar4 + 1) & 0x80000003;
  uVar18 = (ulonglong)uVar4;
  lVar8 = 0;
  piVar10 = (int *)((longlong)piVar10 +
                   ((0xd6bL >> (sbyte)uVar4 ^ 0xf6fU) -
                   (longlong)(int)(((int)(-uVar21 | uVar21) >> 0x1f) * -0xb772 ^ uVar15)));
  uVar4 = (*piVar10 + uVar7) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[1]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[2]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[3]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[4]) * 0x401;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = (piVar10[5] + (uVar4 ^ uVar4 >> 6)) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[6]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[7]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[8]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[9]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[10]) * 0x401;
  piVar11 = piVar10 + 0xc;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar10[0xb]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + *piVar11) * 0x401;
  uVar4 = uVar4 ^ uVar4 >> 6;
  uVar22 = (ulonglong)uVar4;
  if (((ulonglong)piVar11 & 0x7a0) == 0) {
    uVar7 = 1;
  }
  else {
    uVar7 = (uint)piVar11 & 0xf | 0x45;
    uVar15 = (uint)piVar11 & 0x7f | 3;
    uVar7 = uVar7 * uVar7 * 0xca7f ^ uVar15 * uVar15 * 0xf0f1;
  }
  uVar9 = (ulonglong)uVar7;
  piVar11 = (int *)((longlong)piVar11 +
                   ((longlong)(((int)(-uVar7 | uVar7) >> 0x1f) * -0xcb81) ^ 0xcb85U));
  uVar4 = (*piVar11 + uVar4) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[1]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[2]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[3]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[4]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[5]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[6]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[7]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[8]) * 0x401;
  uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[9]) * 0x401;
  do {
    lVar19 = uVar9 + uVar20;
    uVar9 = (uVar20 - lVar19 ^ 0xffffffffffffffff) + 1;
    uVar20 = lVar19 - uVar9;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = (uVar4 ^ uVar4 >> 6) + 0xa8405bfe;
  *(undefined1 *)(param_1 + 0xf) = 1;
  uVar7 = (uVar4 >> 9 ^ uVar4) >> 0xb & 0x7f;
  uVar4 = ((uVar7 << 9 | uVar7) << 0xb ^ uVar4) + 0x409d9cf5;
  uVar4 = (uVar4 * 0x100 | uVar4 >> 0x18) + 0x22a092a7;
  do {
    uVar18 = (~uVar18 + 1 ^ 0xffffffffffffffff) + 1;
    uVar20 = -(~uVar20 + 1);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = (uVar4 >> 0x1e | uVar4 * 4) + 0xaa5d0dd6;
  if (uVar4 == 0 && (uVar4 & 0x7fffff) == 0) {
    uVar20 = thunk_FUN_1805a9280();
    return uVar20;
  }
  puVar2 = auStack_68;
  lVar19 = (longlong)(int)(((int)(-uVar6 | uVar6) >> 0x1f) * -0xad4b ^ 0xaeab);
  do {
    puVar12 = puVar2;
    *(ulonglong *)(puVar12 + -8) = uVar20;
    *(ulonglong *)(puVar12 + -0x10) = uVar9;
    *(longlong *)(puVar12 + -0x18) = param_1;
    lVar17 = uVar22 + lVar8;
    uVar22 = ~(lVar8 - lVar17) + 1;
    lVar8 = lVar17 - uVar22;
    lVar17 = (-lVar19 ^ 0xffffffffffffffffU) + 1;
    lVar1 = -lVar19;
    param_1 = *(longlong *)(puVar12 + lVar1 + 0x3c8);
    uVar9 = *(ulonglong *)(puVar12 + lVar1 + 0x3d0);
    uVar20 = *(ulonglong *)(puVar12 + lVar1 + 0x3d8);
    puVar13 = puVar12 + lVar1 + 0x3e0;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar12 + lVar1 + 0x3e0;
    lVar19 = lVar17;
  } while (uVar6 != 0);
  *(undefined8 *)(puVar12 + lVar1 + 0x3d8) = 0x181355b5e;
  cVar3 = FUN_180528ef0(param_1,uVar9,uVar22,uVar18);
  if (cVar3 == *(char *)(param_1 + 0xb)) {
    uVar20 = (ulonglong)(byte)puVar12[lVar1 + 0x458];
  }
  else {
    *(undefined8 *)(puVar12 + lVar1 + 0x450) = 0x2621fc0;
    lVar8 = *(longlong *)(puVar12 + lVar1 + 0x450);
    *(undefined8 *)(puVar12 + lVar1 + 0x450) = 0xa4408acf;
    *(undefined8 *)(puVar12 + lVar1 + 0x460) = 0x406dcce;
    uVar4 = (*(uint *)(puVar12 + lVar1 + 0x450) >> 2 | *(uint *)(puVar12 + lVar1 + 0x450) << 0x1e) +
            0x170415ba;
    uVar6 = (*(uint *)(puVar12 + lVar1 + 0x460) << 0x19 | *(uint *)(puVar12 + lVar1 + 0x460) >> 7) +
            0x65f7f247;
    *(uint *)(puVar12 + lVar1 + 0x450) = uVar4 * 0x10 | uVar4 >> 0x1c;
    *(uint *)(puVar12 + lVar1 + 0x460) = uVar6 >> 0x11 | uVar6 * 0x8000;
    *(undefined **)(puVar12 + lVar1 + 0x450) =
         &DAT_182621fc0 + (*(longlong *)(puVar12 + lVar1 + 0x450) - lVar8);
    *(longlong *)(puVar12 + lVar1 + 0x460) =
         *(longlong *)(puVar12 + lVar1 + 0x450) + *(longlong *)(puVar12 + lVar1 + 0x460);
    piVar10 = *(int **)(puVar12 + lVar1 + 0x450);
    uVar6 = (((uint)(*piVar10 * 0x401) >> 6 ^ *piVar10 * 0x401) + piVar10[1]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar10[2]) * 0x401;
    piVar11 = piVar10 + 4;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar10[3]) * 0x401;
    uVar4 = (uint)piVar11 & 0x17f;
    uVar15 = ((uVar6 >> 6 ^ uVar6) + *piVar11) * 0x401;
    uVar15 = uVar15 ^ uVar15 >> 6;
    uVar7 = uVar15 & 0x4f;
    uVar6 = ((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3;
    uVar18 = (ulonglong)uVar6;
    uVar20 = (ulonglong)(uVar7 * uVar7 * (uVar7 + 1) * (uVar7 + 1)) & 0xffffffffffffff03;
    piVar11 = (int *)((longlong)piVar11 + (0x578bL >> ((byte)uVar6 | (byte)uVar20) ^ 0x578fU));
    uVar6 = (*piVar11 + uVar15) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[1]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[2]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[3]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[4]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[5]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[6]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[7]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[8]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[9]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[10]) * 0x401;
    do {
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar6 = (piVar11[0xb] + (uVar6 ^ uVar6 >> 6)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0xc]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0xd]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0xe]) * 0x401;
    do {
      lVar8 = lVar17 + (longlong)register0x00000020;
      lVar17 = ((longlong)register0x00000020 - lVar8 ^ 0xffffffffffffffffU) + 1;
      register0x00000020 = (BADSPACEBASE *)(lVar8 - lVar17);
      uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar6 = (piVar11[0xf] + (uVar6 ^ uVar6 >> 6)) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0x10]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0x11]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0x12]) * 0x401;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[0x13]) * 0x401;
    iVar5 = piVar11[0x14];
    *(undefined8 *)(puVar12 + lVar1 + 0x450) = 0x170d3a39e1b0da87;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + iVar5) * 0x401;
    *(int *)(puVar12 + lVar1 + 0x458) = (int)*(undefined8 *)(puVar12 + lVar1 + 0x450);
    piVar10 = piVar11 + 0x15;
    do {
      piVar11 = piVar10;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + *piVar11) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[1]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[2]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[3]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[4]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[5]) * 0x401;
      lVar14 = lVar14 + -1;
      piVar10 = piVar11 + 6;
    } while (lVar14 != 0);
    uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar11[6]) * 0x401;
    uVar6 = uVar6 ^ uVar6 >> 6;
    do {
      *(undefined8 *)(puVar12 + lVar1 + 0x3d8) = 0x181355f5d;
      func_0x000181356651(0x5a08);
      uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar4 = (piVar11[7] + uVar6) * 0x401;
    lVar8 = 0x17;
    piVar10 = piVar11 + 7;
    do {
      piVar11 = piVar10;
      piVar10 = piVar11 + 1;
      uVar4 = ((uVar4 >> 6 ^ uVar4) + *piVar10) * 0x401;
      lVar8 = lVar8 + -1;
    } while (lVar8 != 0);
    uVar4 = ((uVar4 >> 6 ^ uVar4) + piVar11[2]) * 0x401;
    do {
      uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      bVar24 = uVar7 == 0;
    } while (!bVar24);
    do {
      *(undefined8 *)(puVar12 + lVar1 + 0x3d8) = 0x18135603a;
      func_0x000181356af5(0x5a08);
      if (!bVar24) {
        lVar8 = uVar20 + (longlong)register0x00000020;
        lVar14 = (longlong)register0x00000020 - lVar8;
        uVar20 = -lVar14;
        register0x00000020 = (BADSPACEBASE *)(lVar8 + lVar14);
      }
      uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      bVar24 = uVar7 == 0;
    } while (!bVar24);
    uVar4 = (uVar4 ^ uVar4 >> 6) + 0xa8405bfe;
    uVar22 = (ulonglong)uVar4;
    *(char *)(param_1 + 0xb) = cVar3;
    uVar7 = (uVar4 >> 9 ^ uVar4) >> 0xb & 0x7f;
    uVar4 = ((uVar7 << 9 | uVar7) << 0xb ^ uVar4) + 0x409d9cf5;
    uVar4 = (uVar4 * 0x100 | uVar4 >> 0x18) + 0x22a092a7;
    do {
      *(undefined8 *)(puVar12 + lVar1 + 0x3d8) = 0x1813560ca;
      func_0x000181356959(0x5a08);
      uVar7 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar7 != 0);
    uVar4 = (uVar4 >> 0x1e | uVar4 * 4) - *(int *)(puVar12 + lVar1 + 0x458);
    uVar4 = uVar4 * 0x8000 | uVar4;
    if (uVar4 == 0) {
      *(ulonglong *)(puVar12 + lVar1 + 0x3d8) = (ulonglong)uVar23;
      *(ulonglong *)(puVar12 + lVar1 + 0x3d0) = (ulonglong)uVar6;
      *(undefined8 *)(puVar12 + lVar1 + 0x3c8) = 0;
      uVar20 = thunk_FUN_1805a9280(uVar23,uVar22);
      return uVar20;
    }
    do {
      *(longlong *)(puVar13 + -8) = param_1;
      *(ulonglong *)(puVar13 + -0x10) = uVar18;
      *(ulonglong *)(puVar13 + -0x18) = uVar20;
      lVar8 = -(longlong)(int)lVar17;
      uVar20 = *(ulonglong *)(puVar13 + lVar8 + 0x3c8);
      uVar18 = *(ulonglong *)(puVar13 + lVar8 + 0x3d0);
      param_1 = *(longlong *)(puVar13 + lVar8 + 0x3d8);
      puVar13 = puVar13 + lVar8 + 0x3e0;
      uVar23 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar23 < 0) {
        uVar23 = (uVar23 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar23 != 0);
    uVar20 = CONCAT71((uint7)(uint3)(uVar4 >> 8),1);
  }
  return uVar20;
}



############ FUN_ 180684d80 size=151 ############

void FUN_180684d80(void)

{
  undefined8 unaff_RBX;
  longlong unaff_RBP;
  
  *(undefined8 *)(unaff_RBP + 0x18) = unaff_RBX;
  FUN_1806804d0(unaff_RBP + 0x28);
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 1809c43e8 size=1022 ############

/* WARNING: Instruction at (ram,0x0001809c4563) overlaps instruction at (ram,0x0001809c4562)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001809c4561) */

ulonglong FUN_1809c43e8(ulonglong param_1,undefined8 param_2,int *param_3)

{
  char in_AL;
  ulonglong uVar1;
  uint uVar2;
  uint uVar3;
  longlong lVar4;
  longlong unaff_RBX;
  int unaff_EBP;
  uint unaff_ESI;
  int unaff_EDI;
  undefined8 in_R11;
  int unaff_R13D;
  int unaff_R14D;
  int iVar5;
  undefined8 unaff_R15;
  
  iVar5 = unaff_R14D - unaff_R13D;
  if ((param_1 & 0xd700) == 0) {
    if (in_AL < -8) {
      func_0x0001845d775f();
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    unaff_ESI = unaff_ESI + unaff_EBP;
  }
  else {
    iVar5 = iVar5 + unaff_R13D;
  }
  while( true ) {
    uVar2 = (*param_3 + 1) * *param_3 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    if (uVar2 == 0) break;
    if ((POPCOUNT(uVar2 & 0xff) & 1U) == 0) {
      uVar1 = FUN_1809c43e8(0xe734,param_2,param_3);
      return uVar1;
    }
  }
  uVar2 = (*(int *)(unaff_RBX + 0x2c) + iVar5) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x30)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x34)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x38)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x3c)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x40)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x44)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x48)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x4c)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x50)) * unaff_EDI;
  do {
    func_0x0001809c6bb3();
    uVar3 = (*param_3 + 1) * *param_3 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = (*(int *)(unaff_RBX + 0x54) + (uVar2 ^ uVar2 >> 0x10)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x58)) * unaff_EDI;
  do {
    FUN_1809c5d7a();
    uVar3 = (*param_3 + 1) * *param_3 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = (*(int *)(unaff_RBX + 0x5c) + (uVar2 ^ uVar2 >> 0x10)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x60)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 100)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x68)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x6c)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x70)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x74)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x78)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x7c)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x80)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x84)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x88)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x8c)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x90)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x94)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x98)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0x9c)) * unaff_EDI;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)(unaff_RBX + 0xa0)) * unaff_EDI;
  uVar2 = uVar2 >> 0x10 ^ uVar2;
  uVar3 = uVar2 >> 5 | uVar2 << 0x1b;
  uVar1 = (ulonglong)uVar3;
  uVar2 = (uVar3 >> 0xb ^ uVar3) >> 6 & 0x3ff;
  uVar2 = ((uVar2 << 0xb | uVar2) << 6 ^ uVar3) + 0x40ed080b;
  if (uVar2 == uVar2 >> 2) {
    uVar1 = thunk_FUN_1805a9280((longlong)unaff_EBP,~-uVar1 + 1);
    return uVar1;
  }
  iVar5 = (int)unaff_R15;
  do {
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1809c47dc;
    lVar4 = (longlong)iVar5;
    FUN_1809c29ad();
    *(ulonglong *)((longlong)register0x00000020 + -8) = uVar1;
    *(undefined8 *)((longlong)register0x00000020 + -0x10) = in_R11;
    *(undefined8 *)((longlong)register0x00000020 + -0x18) = unaff_R15;
    lVar4 = -lVar4;
    unaff_R15 = *(undefined8 *)((longlong)register0x00000020 + lVar4 + 0xc88);
    in_R11 = *(undefined8 *)((longlong)register0x00000020 + lVar4 + 0xc90);
    uVar1 = *(ulonglong *)((longlong)register0x00000020 + lVar4 + 0xc98);
    register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar4 + 0xca0);
    uVar2 = (*param_3 + 1) * *param_3 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  return (ulonglong)unaff_ESI;
}



############ FUN_ 18119465b size=536 ############

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

ulonglong FUN_18119465b(undefined8 param_1,longlong param_2,longlong param_3)

{
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  longlong unaff_RBX;
  byte unaff_BPL;
  uint unaff_ESI;
  longlong unaff_RDI;
  uint uVar4;
  undefined8 in_R10;
  int iVar5;
  undefined8 unaff_R12;
  int *unaff_R13;
  undefined8 unaff_R14;
  ulonglong uVar6;
  
  uVar3 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
  }
  if (uVar3 == 0) {
    uVar3 = *(uint *)(unaff_RDI + 0xe0 + unaff_RBX) ^ unaff_ESI >> 0x1c ^ unaff_ESI << 4;
    uVar3 = *(uint *)(unaff_RDI + 0xe4 + unaff_RBX) ^ uVar3 >> 0x1c ^ uVar3 << 4;
    uVar3 = *(uint *)(unaff_RDI + 0xe8 + unaff_RBX) ^ uVar3 >> 0x1c ^ uVar3 << 4;
    uVar3 = *(uint *)(unaff_RDI + 0xec + unaff_RBX) ^ uVar3 >> 0x1c ^ uVar3 << 4;
    uVar4 = *(uint *)(unaff_RDI + 0xf0 + unaff_RBX) ^ uVar3 >> 0x1c ^ uVar3 << 4;
    uVar3 = uVar4 << 4;
    uVar2 = (ulonglong)uVar3;
    uVar3 = *(uint *)(unaff_RDI + 0xf4 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar3;
    uVar3 = uVar3 >> 0x1c ^ uVar3 << 4 ^ *(uint *)(unaff_RDI + 0xf8 + unaff_RBX);
    uVar3 = (*(uint *)(unaff_RDI + 0xfc + unaff_RBX) ^ uVar3 >> 0x1c ^ uVar3 << 4) + 0xa17291c9;
    uVar3 = (uVar3 * 0x800 | uVar3 >> 0x15) + 0xd54b64c7;
    uVar6 = CONCAT71((int7)((ulonglong)unaff_R14 >> 8),(uVar3 >> 0x1c | uVar3 * 0x10) == 0xed06a5f3)
    ;
    if ((uVar6 & 0x1ffffff) == 0 && (int)uVar6 == 0) {
      uVar2 = thunk_FUN_1805a9280();
      return uVar2;
    }
    iVar5 = (int)unaff_R12;
    do {
      *(undefined8 *)((longlong)register0x00000020 + -8) = unaff_R12;
      *(undefined8 *)((longlong)register0x00000020 + -0x10) = in_R10;
      *(ulonglong *)((longlong)register0x00000020 + -0x18) = uVar2;
      lVar1 = -(longlong)iVar5;
      uVar2 = *(ulonglong *)((longlong)register0x00000020 + lVar1 + 0x748);
      in_R10 = *(undefined8 *)((longlong)register0x00000020 + lVar1 + 0x750);
      unaff_R12 = *(undefined8 *)((longlong)register0x00000020 + lVar1 + 0x758);
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar1 + 0x760);
      uVar3 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    return (ulonglong)unaff_BPL;
  }
  uVar2 = FUN_18119465b(0x6e08,((((param_2 - 0x78b9dabaU ^ 0xffffffffffffffff) + 1) - param_3 ^
                                0xffffffffffffffff) - param_3) + 0x78b9dabb);
  return uVar2;
}



############ FUN_ 180a04740 size=2907 ############

/* WARNING: Instruction at (ram,0x000180a04e3b) overlaps instruction at (ram,0x000180a04e38)
    */
/* WARNING: Removing unreachable block (ram,0x000180a04eae) */
/* WARNING: Removing unreachable block (ram,0x000180a04b84) */
/* WARNING: Removing unreachable block (ram,0x000180a0478e) */
/* WARNING: Removing unreachable block (ram,0x000180a047b8) */
/* WARNING: Removing unreachable block (ram,0x000180a04cf3) */
/* WARNING: Removing unreachable block (ram,0x000180a04dd7) */
/* WARNING: Removing unreachable block (ram,0x000180a04fe3) */
/* WARNING: Removing unreachable block (ram,0x000180a04d15) */

undefined8 FUN_180a04740(longlong param_1,char *param_2,uint param_3)

{
  char *pcVar1;
  byte bVar2;
  undefined4 *puVar3;
  longlong lVar4;
  undefined1 *puVar5;
  ulonglong uVar6;
  undefined8 uVar7;
  int iVar8;
  int iVar9;
  undefined *puVar10;
  longlong lVar11;
  byte *pbVar12;
  uint uVar13;
  undefined1 *puVar14;
  uint *puVar15;
  uint *puVar16;
  uint *puVar17;
  uint *puVar18;
  uint uVar19;
  uint uVar20;
  undefined *puVar21;
  ulonglong uVar22;
  int iVar23;
  uint uVar24;
  int unaff_retaddr;
  undefined1 auStack_98 [32];
  undefined8 local_78;
  undefined4 local_70;
  ulonglong local_68;
  uint local_60;
  uint local_54;
  
  uVar19 = (uint)&stack0x00000000;
  uVar13 = 0;
  local_70 = 0;
  local_54 = 0x6bec >> ((char)((byte)(-(((uVar19 & 0x16ff) + 1) * (uVar19 & 0x16ff) + 0x1589 &
                                       0x80000001) >> 0x18) ^
                              (byte)(-(((uVar19 & 0x1bff) + 1) * (uVar19 & 0x1bff) + 0x3805 &
                                      0x80000001) >> 0x18)) >> 7 & 0x1fU) ^ 0x625c;
  uVar19 = ((uVar19 & 0x59ff) * (uVar19 & 0x59ff) + 1) % 7;
  local_60 = ((int)(-uVar19 | uVar19) >> 0x1f ^ 0xfffff38fU) & 0xec7f;
  puVar10 = &DAT_1813666b8;
  uVar24 = (DAT_1813665c8 ^
           (DAT_1813665c4 ^
           (DAT_1813665c0 ^ (DAT_1813665bc ^ (DAT_1813665b8 ^ 0x811c9dc5) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181;
  uVar19 = uVar24 & 0xfff;
  uVar19 = (uVar19 * uVar19 * 0x10 + 4) % 0x13;
  uVar22 = (ulonglong)uVar19;
  uVar6 = ((longlong)(-1 - ((int)(-uVar19 | uVar19) >> 0x1f)) | 0xfdc3U) ^ 0xfdc7;
  do {
    puVar21 = puVar10 + uVar22;
    puVar10 = (undefined *)
              (~((~((longlong)puVar10 - (longlong)puVar21) + 1U) - (longlong)puVar21) + 1);
    uVar22 = (longlong)puVar21 - (longlong)puVar10;
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  puVar15 = (uint *)((longlong)&DAT_1813665dc + uVar6);
  uVar24 = (*puVar15 ^
           (*(uint *)((longlong)&DAT_1813665d8 + uVar6) ^
           (*(uint *)((longlong)&DAT_1813665d4 + uVar6) ^
           (*(uint *)((longlong)&DAT_1813665d0 + uVar6) ^
           (*(uint *)((longlong)&DAT_1813665cc + uVar6) ^
           (*(uint *)((longlong)&DAT_1813665c8 + uVar6) ^ uVar24) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  uVar19 = (uint)puVar15 & 0x4dff;
  iVar8 = uVar19 * uVar19 + 1;
  uVar19 = (iVar8 >> 4) + (iVar8 >> 1) + iVar8 * 0x24924924 >> 0x1d;
  if (((int)(uVar19 - 7) >> 0x1f & uVar19 & 0x2900) == 0) {
    uVar19 = (uint)puVar15 & 0x43ff;
    uVar19 = (uVar19 + 1) * uVar19 & 0x80000001;
  }
  else {
    uVar19 = (uint)puVar10 & 0xff;
    iVar8 = (uVar19 + 2) * (uVar19 + 1) * uVar19;
    uVar19 = ((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 >> 0x1e;
  }
  lVar11 = 4;
  puVar15 = (uint *)((((longlong)(int)(0x94d9 - uVar19) ^ 0x94c5U) - 0x18) + (longlong)puVar15);
  do {
    uVar19 = *puVar15;
    puVar16 = puVar15 + 1;
    puVar17 = puVar15 + 2;
    puVar18 = puVar15 + 3;
    puVar15 = puVar15 + 4;
    uVar24 = (*puVar18 ^
             (*puVar17 ^ (*puVar16 ^ (uVar19 ^ uVar24) * 0x1000181) * 0x1000181) * 0x1000181) *
             0x1000181;
    lVar11 = lVar11 + -1;
  } while (lVar11 != 0);
  uVar20 = (*puVar15 ^ uVar24) * 0x1000181;
  uVar24 = (uint)puVar15 & 0x7f | 0x42;
  uVar19 = uVar20 & 0x3f | 0x39;
  uVar19 = uVar19 * uVar19 * 0x38b7 ^ uVar24 * uVar24 * 0xb1b;
  uVar19 = ((int)(-uVar19 | uVar19) >> 0x1f) >> ((byte)puVar10 & 0x1f);
  uVar24 = (uint)puVar10 & 0x1bf;
  puVar15 = (uint *)((longlong)puVar15 +
                    ((longlong)(((int)(-uVar19 | uVar19) >> 0x1f) * -0xb8a2) ^ 0xb8a6U));
  uVar19 = (*puVar15 ^ uVar20) * 0x1000181;
  local_68 = CONCAT44(1,(uint)puVar15) & 0xffffffff0000002f;
  iVar8 = ((uint)puVar15 & 0x2f) + 1;
  uVar20 = uVar19 & 0x2f;
  iVar23 = (uVar24 + 2) * (uVar24 + 1) * uVar24;
  iVar9 = (uVar24 + 2) * (uVar24 + 1) * uVar24;
  puVar16 = (uint *)((longlong)puVar15 +
                    ((longlong)
                     (0xd54b <<
                     ((char)((byte)((uint)(iVar9 * 0x55555555 + ((iVar9 >> 1) - (iVar9 >> 3))) >>
                                   0x18) ^
                            (byte)((uint)(((iVar23 >> 1) - (iVar23 >> 3)) + iVar23 * 0x55555555) >>
                                  0x18)) >> 6 & 0x1fU)) ^ 0xffffffffffff284fU) +
                    ((longlong)
                     (int)(iVar8 * iVar8 * (int)local_68 * (int)local_68 & 0x80000003U &
                          (uVar20 + 1) * (uVar20 + 1) * uVar20 * uVar20 & 0x80000003) ^ 0x300U));
  do {
    puVar21 = puVar10 + (longlong)puVar15;
    puVar10 = (undefined *)(((longlong)puVar15 - (longlong)puVar21 ^ 0xffffffffffffffffU) + 1);
    puVar15 = (uint *)(puVar21 + -(longlong)puVar10);
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  do {
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  do {
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  uVar24 = (uint)puVar10 & 0x6f;
  puVar15 = puVar16 + 4;
  puVar17 = (uint *)((longlong)puVar15 +
                    (0xc9a8L >>
                     ((byte)((longlong)
                             (int)((uVar24 + 1) * (uVar24 + 1) * uVar24 * uVar24 & 0x80000003) >>
                            ((byte)puVar15 & 0x1f)) & 0x3f) ^ 0xc9acU));
  do {
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  puVar18 = puVar17 + 9;
  uVar24 = (uint)puVar18 & 0x38ff;
  uVar20 = (*puVar18 ^
           (puVar17[8] ^
           (puVar17[7] ^
           (puVar17[6] ^
           (puVar17[5] ^
           (puVar17[4] ^
           (puVar17[3] ^
           (puVar17[2] ^
           (puVar17[1] ^
           (*puVar17 ^
           (*puVar15 ^
           (puVar16[3] ^
           (puVar16[2] ^ (puVar16[1] ^ (*puVar16 ^ uVar19) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  uVar19 = uVar20 & 0x3cff;
  uVar19 = (uVar19 + 1) * uVar19 + 7;
  puVar18 = (uint *)((longlong)puVar18 +
                    (0x84 - ((longlong)
                             (0x3095 <<
                             ((byte)((int)((uVar24 + 1) * uVar24 & 0x80000001) >>
                                    ((char)uVar19 + (char)(uVar19 / 0x51) * -0x51 & 0x1fU)) & 0x1f))
                            ^ 0x3015U)));
  local_78 = 0x51d6bd8e4cb2f83a;
  puVar15 = puVar18 + 9;
  uVar20 = (*puVar15 ^
           (puVar18[8] ^
           (puVar18[7] ^
           (puVar18[6] ^
           (puVar18[5] ^
           (puVar18[4] ^
           (puVar18[3] ^
           (puVar18[2] ^ (puVar18[1] ^ (*puVar18 ^ uVar20) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  uVar19 = uVar20 & 0x27f;
  uVar19 = (uVar19 + 2) * (uVar19 + 1) * uVar19;
  uVar6 = (ulonglong)uVar19;
  uVar24 = (uint)puVar15 & 0x27f;
  iVar8 = (uVar24 + 2) * (uVar24 + 1) * uVar24;
  uVar22 = (longlong)
           (((int)(((iVar8 >> 1) - (iVar8 >> 3)) + iVar8 * 0x55555555 &
                  (((int)uVar19 >> 1) - ((int)uVar19 >> 3)) + uVar19 * 0x55555555) >> 0x1e) + 0x27b8
           ) ^ 0x2738;
  uVar19 = (*(uint *)((longlong)puVar15 + (uVar22 - 0x5c)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x60)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 100)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x68)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x6c)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x70)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x74)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x78)) ^
           (*(uint *)((longlong)puVar15 + (uVar22 - 0x7c)) ^ uVar20) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181 ^
           *(uint *)((longlong)puVar15 + (uVar22 - 0x58));
  uVar24 = (uVar19 * 0x1000181 >> 0x19 | uVar19 * -0x7fff3f80) + 0xf814992a;
  uVar19 = (uVar24 >> 3 ^ uVar24) & 3;
  uVar19 = ((uVar19 * 8 | uVar19) ^ uVar24) + 0xfc7a0f55;
  uVar24 = uVar19 * 4 & 0x33333333 | uVar19 >> 0x1e;
  uVar22 = (ulonglong)uVar24;
  if ((char)(((uVar19 >> 2 & 0xcccccccc | uVar19 * 0x40000000 | uVar24) == 0x4cb2f83a) * '\x05') !=
      '\0') {
    uVar7 = thunk_FUN_1805a9280((longlong)(int)local_54,thunk_FUN_1805a9280,~-uVar22 + 1);
    return uVar7;
  }
  lVar11 = (longlong)(int)local_60;
  puVar5 = auStack_98;
  do {
    puVar14 = puVar5;
    *(ulonglong *)(puVar14 + -8) = uVar22;
    *(ulonglong *)(puVar14 + -0x10) = uVar6;
    *(char **)(puVar14 + -0x18) = param_2;
    lVar4 = -lVar11;
    param_2 = *(char **)(puVar14 + lVar4 + 0xc58);
    uVar6 = *(ulonglong *)(puVar14 + lVar4 + 0xc60);
    uVar22 = *(ulonglong *)(puVar14 + lVar4 + 0xc68);
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
    puVar5 = puVar14 + lVar4 + 0xc70;
  } while (uVar19 != 0);
  if ((((param_1 == 0) || (param_2 == (char *)0x0)) ||
      (puVar3 = *(undefined4 **)(puVar14 + lVar4 + 0xd28), puVar3 == (undefined4 *)0x0)) ||
     (0x500 < param_3)) {
    return 99;
  }
  if ((param_3 != 0) && (pcVar1 = param_2 + param_3, param_2 < pcVar1)) {
    while( true ) {
      *(undefined8 *)(puVar14 + lVar4 + 0xc68) = 0x180a052f0;
      uVar19 = FUN_180a00950(param_1,param_2,puVar14 + lVar4 + 0xcac);
      if (0x500 < uVar19) break;
      uVar24 = *(uint *)(puVar14 + lVar4 + 0xcac);
      if (pcVar1 < param_2 + (ulonglong)uVar19 + (ulonglong)uVar24) break;
      if (*param_2 == '\x04') {
        param_2 = param_2 + uVar24;
        if (((param_2 == (char *)0x0) || (0x13ff < uVar19 - 1)) ||
           (pcVar1 = param_2 + uVar19, pcVar1 <= param_2)) break;
        goto LAB_180a05360;
      }
      param_2 = param_2 + (uVar19 + uVar24);
      if (pcVar1 <= param_2) {
        *puVar3 = *(undefined4 *)(puVar14 + lVar4 + 0xc98);
        return 0;
      }
    }
  }
LAB_180a05402:
  *puVar3 = *(undefined4 *)(puVar14 + lVar4 + 0xc98);
  return 0;
LAB_180a05360:
  *(undefined8 *)(puVar14 + lVar4 + 0xc68) = 0x180a05370;
  uVar19 = FUN_180a00950(param_1,param_2,puVar14 + lVar4 + 0xcb0);
  if (0x500 < uVar19) goto LAB_180a05402;
  uVar24 = *(uint *)(puVar14 + lVar4 + 0xcb0);
  if (pcVar1 < param_2 + (ulonglong)uVar19 + (ulonglong)uVar24) goto LAB_180a05402;
  if (*param_2 == '\x03') {
    if (1 < uVar19) {
      uVar19 = uVar19 - 1;
      pbVar12 = (byte *)(param_2 + (ulonglong)uVar24 + 1);
      if (pbVar12 == (byte *)0x0) {
        return 99;
      }
      uVar24 = uVar19;
      if (4 < uVar19) {
        return 0x159;
      }
      for (; uVar24 != 0; uVar24 = uVar24 - 1) {
        bVar2 = *pbVar12;
        pbVar12 = pbVar12 + 1;
        uVar13 = uVar13 << 8 | (uint)bVar2;
      }
      *(uint *)(puVar14 + lVar4 + 0xc98) = uVar13 << (('\x04' - (char)uVar19) * '\b' & 0x1fU);
    }
    goto LAB_180a05402;
  }
  param_2 = param_2 + (uVar24 + uVar19);
  if (pcVar1 <= param_2) {
    *puVar3 = *(undefined4 *)(puVar14 + lVar4 + 0xc98);
    return 0;
  }
  goto LAB_180a05360;
}



############ FUN_ 1809fbbc0 size=3050 ############

/* WARNING: Instruction at (ram,0x0001809fc270) overlaps instruction at (ram,0x0001809fc26f)
    */
/* WARNING: Removing unreachable block (ram,0x0001809fc26a) */
/* WARNING: Removing unreachable block (ram,0x0001809fbcb1) */
/* WARNING: Removing unreachable block (ram,0x0001809fbc09) */
/* WARNING: Removing unreachable block (ram,0x0001809fbc38) */
/* WARNING: Removing unreachable block (ram,0x0001809fbccb) */
/* WARNING: Removing unreachable block (ram,0x0001809fc746) */

undefined8 FUN_1809fbbc0(void)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  uint uVar42;
  uint uVar43;
  uint uVar44;
  uint uVar45;
  uint uVar46;
  uint uVar47;
  uint uVar48;
  uint uVar49;
  uint uVar50;
  uint uVar51;
  uint uVar52;
  uint uVar53;
  uint uVar54;
  ulonglong uVar55;
  undefined8 uVar56;
  int iVar57;
  uint uVar58;
  uint uVar59;
  uint uVar60;
  uint uVar61;
  uint uVar62;
  ulonglong uVar63;
  uint *puVar64;
  undefined1 *puVar65;
  ulonglong uVar66;
  undefined8 unaff_R12;
  uint uVar67;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_68 [32];
  uint local_48 [2];
  undefined8 local_40;
  undefined *local_38;
  undefined8 local_30;
  code *local_28;
  
  puVar65 = auStack_68;
  uVar2 = (uint)&stack0x00000000 & 0x6cff;
  iVar57 = uVar2 * uVar2 + 1;
  uVar2 = iVar57 * 0x24924924 + (iVar57 >> 4) + (iVar57 >> 1) >> 0x1d;
  uVar2 = (int)(uVar2 - 7) >> 0x1f & uVar2;
  uVar3 = (int)(-uVar2 | uVar2) >> 0x1f;
  uVar2 = (uint)&stack0x00000000 & 0x17ff;
  uVar2 = (uVar2 + 1) * uVar2 + 0x14e9 & 0x80000001;
  uVar67 = ((int)(-uVar2 | uVar2) >> 0x1f) * -0x8b10 ^ (int)(-uVar3 | uVar3) >> 0x1f & 0x8ad0U;
  uVar66 = 0x98fe50;
  local_38 = &UNK_18158c640;
  uVar2 = DAT_18158c540 * 0x5bd1e995;
  uVar3 = DAT_18158c544 * 0x5bd1e995;
  local_30 = 0xfefdb886555b2351;
  local_40 = 0x555b2351;
  uVar4 = DAT_18158c548 * 0x5bd1e995;
  uVar5 = DAT_18158c54c * 0x5bd1e995;
  uVar6 = DAT_18158c550 * 0x5bd1e995;
  do {
    uVar58 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar58 < 0) {
      uVar58 = (uVar58 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar58 != 0);
  uVar58 = DAT_18158c554 * 0x5bd1e995;
  uVar7 = DAT_18158c558 * 0x5bd1e995;
  uVar8 = DAT_18158c55c * 0x5bd1e995;
  uVar9 = DAT_18158c560 * 0x5bd1e995;
  uVar10 = DAT_18158c564 * 0x5bd1e995;
  uVar11 = DAT_18158c568 * 0x5bd1e995;
  uVar12 = DAT_18158c56c * 0x5bd1e995;
  do {
    uVar63 = 0xd408;
    func_0x0001809faa10();
    uVar66 = -uVar66;
    if ((uVar63 & 0xef00) != 0) {
      uVar66 = ~uVar66;
    }
    uVar66 = ~uVar66 + 1;
    uVar59 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar59 < 0) {
      uVar59 = (uVar59 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar59 != 0);
  uVar59 = DAT_18158c570 * 0x5bd1e995;
  uVar13 = DAT_18158c574 * 0x5bd1e995;
  uVar14 = DAT_18158c578 * 0x5bd1e995;
  uVar15 = DAT_18158c57c * 0x5bd1e995;
  uVar16 = DAT_18158c580 * 0x5bd1e995;
  uVar17 = DAT_18158c584 * 0x5bd1e995;
  uVar18 = DAT_18158c588 * 0x5bd1e995;
  uVar19 = DAT_18158c58c * 0x5bd1e995;
  uVar20 = DAT_18158c590 * 0x5bd1e995;
  uVar21 = DAT_18158c594 * 0x5bd1e995;
  uVar22 = DAT_18158c598 * 0x5bd1e995;
  uVar23 = DAT_18158c59c * 0x5bd1e995;
  uVar24 = DAT_18158c5a0 * 0x5bd1e995;
  uVar25 = DAT_18158c5a4 * 0x5bd1e995;
  uVar26 = DAT_18158c5a8 * 0x5bd1e995;
  uVar27 = DAT_18158c5ac * 0x5bd1e995;
  uVar28 = DAT_18158c5b0 * 0x5bd1e995;
  uVar29 = DAT_18158c5b4 * 0x5bd1e995;
  uVar30 = DAT_18158c5b8 * 0x5bd1e995;
  uVar31 = DAT_18158c5bc * 0x5bd1e995;
  uVar32 = DAT_18158c5c0 * 0x5bd1e995;
  uVar33 = DAT_18158c5c4 * 0x5bd1e995;
  uVar34 = DAT_18158c5c8 * 0x5bd1e995;
  uVar35 = DAT_18158c5cc * 0x5bd1e995;
  uVar36 = DAT_18158c5d0 * 0x5bd1e995;
  uVar37 = DAT_18158c5d4 * 0x5bd1e995;
  uVar38 = DAT_18158c5d8 * 0x5bd1e995;
  uVar39 = DAT_18158c5dc * 0x5bd1e995;
  do {
    uVar60 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar60 < 0) {
      uVar60 = (uVar60 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar60 != 0);
  uVar60 = DAT_18158c5e0 * 0x5bd1e995;
  uVar40 = DAT_18158c5e4 * 0x5bd1e995;
  do {
    uVar67 = ~(~uVar67 + 1) + 1;
    uVar61 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar61 < 0) {
      uVar61 = (uVar61 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar61 != 0);
  uVar61 = DAT_18158c5e8 * 0x5bd1e995;
  uVar41 = DAT_18158c5ec * 0x5bd1e995;
  uVar42 = DAT_18158c5f0 * 0x5bd1e995;
  uVar43 = DAT_18158c5f4 * 0x5bd1e995;
  uVar44 = DAT_18158c5f8 * 0x5bd1e995;
  uVar45 = DAT_18158c5fc * 0x5bd1e995;
  uVar46 = DAT_18158c600 * 0x5bd1e995;
  uVar47 = DAT_18158c604 * 0x5bd1e995;
  uVar48 = DAT_18158c608 * 0x5bd1e995;
  uVar49 = DAT_18158c60c * 0x5bd1e995;
  uVar50 = DAT_18158c610 * 0x5bd1e995;
  uVar51 = DAT_18158c614 * 0x5bd1e995;
  uVar52 = DAT_18158c618 * 0x5bd1e995;
  uVar53 = DAT_18158c61c * 0x5bd1e995;
  uVar54 = DAT_18158c620 * 0x5bd1e995;
  do {
    FUN_1809fc89f(0xd408);
    uVar66 = ((uVar66 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    uVar62 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar62 < 0) {
      uVar62 = (uVar62 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar62 != 0);
  uVar2 = ((uint)(DAT_18158c634 * 0x5bd1e995) >> 0x18 ^ DAT_18158c634 * 0x5bd1e995) * 0x5bd1e995 ^
          (((uint)(DAT_18158c630 * 0x5bd1e995) >> 0x18 ^ DAT_18158c630 * 0x5bd1e995) * 0x5bd1e995 ^
          (((uint)(DAT_18158c62c * 0x5bd1e995) >> 0x18 ^ DAT_18158c62c * 0x5bd1e995) * 0x5bd1e995 ^
          (((uint)(DAT_18158c628 * 0x5bd1e995) >> 0x18 ^ DAT_18158c628 * 0x5bd1e995) * 0x5bd1e995 ^
          (((uint)(DAT_18158c624 * 0x5bd1e995) >> 0x18 ^ DAT_18158c624 * 0x5bd1e995) * 0x5bd1e995 ^
          ((uVar54 >> 0x18 ^ uVar54) * 0x5bd1e995 ^
          ((uVar53 >> 0x18 ^ uVar53) * 0x5bd1e995 ^
          ((uVar52 >> 0x18 ^ uVar52) * 0x5bd1e995 ^
          ((uVar51 >> 0x18 ^ uVar51) * 0x5bd1e995 ^
          ((uVar50 >> 0x18 ^ uVar50) * 0x5bd1e995 ^
          ((uVar49 >> 0x18 ^ uVar49) * 0x5bd1e995 ^
          ((uVar48 >> 0x18 ^ uVar48) * 0x5bd1e995 ^
          ((uVar47 >> 0x18 ^ uVar47) * 0x5bd1e995 ^
          ((uVar46 >> 0x18 ^ uVar46) * 0x5bd1e995 ^
          ((uVar45 >> 0x18 ^ uVar45) * 0x5bd1e995 ^
          ((uVar44 >> 0x18 ^ uVar44) * 0x5bd1e995 ^
          ((uVar43 >> 0x18 ^ uVar43) * 0x5bd1e995 ^
          ((uVar42 >> 0x18 ^ uVar42) * 0x5bd1e995 ^
          ((uVar41 >> 0x18 ^ uVar41) * 0x5bd1e995 ^
          ((uVar61 >> 0x18 ^ uVar61) * 0x5bd1e995 ^
          ((uVar40 >> 0x18 ^ uVar40) * 0x5bd1e995 ^
          ((uVar60 >> 0x18 ^ uVar60) * 0x5bd1e995 ^
          ((uVar39 >> 0x18 ^ uVar39) * 0x5bd1e995 ^
          ((uVar38 >> 0x18 ^ uVar38) * 0x5bd1e995 ^
          ((uVar37 >> 0x18 ^ uVar37) * 0x5bd1e995 ^
          ((uVar36 >> 0x18 ^ uVar36) * 0x5bd1e995 ^
          ((uVar35 >> 0x18 ^ uVar35) * 0x5bd1e995 ^
          ((uVar34 >> 0x18 ^ uVar34) * 0x5bd1e995 ^
          ((uVar33 >> 0x18 ^ uVar33) * 0x5bd1e995 ^
          ((uVar32 >> 0x18 ^ uVar32) * 0x5bd1e995 ^
          ((uVar31 >> 0x18 ^ uVar31) * 0x5bd1e995 ^
          ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
          ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^
          ((uVar28 >> 0x18 ^ uVar28) * 0x5bd1e995 ^
          ((uVar27 >> 0x18 ^ uVar27) * 0x5bd1e995 ^
          ((uVar26 >> 0x18 ^ uVar26) * 0x5bd1e995 ^
          ((uVar25 >> 0x18 ^ uVar25) * 0x5bd1e995 ^
          ((uVar24 >> 0x18 ^ uVar24) * 0x5bd1e995 ^
          ((uVar23 >> 0x18 ^ uVar23) * 0x5bd1e995 ^
          ((uVar22 >> 0x18 ^ uVar22) * 0x5bd1e995 ^
          ((uVar21 >> 0x18 ^ uVar21) * 0x5bd1e995 ^
          ((uVar20 >> 0x18 ^ uVar20) * 0x5bd1e995 ^
          ((uVar19 >> 0x18 ^ uVar19) * 0x5bd1e995 ^
          ((uVar18 >> 0x18 ^ uVar18) * 0x5bd1e995 ^
          ((uVar17 >> 0x18 ^ uVar17) * 0x5bd1e995 ^
          ((uVar16 >> 0x18 ^ uVar16) * 0x5bd1e995 ^
          ((uVar15 >> 0x18 ^ uVar15) * 0x5bd1e995 ^
          ((uVar14 >> 0x18 ^ uVar14) * 0x5bd1e995 ^
          ((uVar13 >> 0x18 ^ uVar13) * 0x5bd1e995 ^
          ((uVar59 >> 0x18 ^ uVar59) * 0x5bd1e995 ^
          ((uVar12 >> 0x18 ^ uVar12) * 0x5bd1e995 ^
          ((uVar11 >> 0x18 ^ uVar11) * 0x5bd1e995 ^
          ((uVar10 >> 0x18 ^ uVar10) * 0x5bd1e995 ^
          ((uVar9 >> 0x18 ^ uVar9) * 0x5bd1e995 ^
          ((uVar8 >> 0x18 ^ uVar8) * 0x5bd1e995 ^
          ((uVar7 >> 0x18 ^ uVar7) * 0x5bd1e995 ^
          ((uVar58 >> 0x18 ^ uVar58) * 0x5bd1e995 ^
          ((uVar6 >> 0x18 ^ uVar6) * 0x5bd1e995 ^
          ((uVar5 >> 0x18 ^ uVar5) * 0x5bd1e995 ^
          ((uVar4 >> 0x18 ^ uVar4) * 0x5bd1e995 ^
          ((uVar3 >> 0x18 ^ uVar3) * 0x5bd1e995 ^
          ((uVar2 >> 0x18 ^ uVar2) * 0x5bd1e995 ^ 0x2db321ba) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
          0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
  uVar63 = (ulonglong)uVar2;
  uVar3 = (((uint)(DAT_18158c63c * 0x5bd1e995) >> 0x18 ^ DAT_18158c63c * 0x5bd1e995) * 0x5bd1e995 ^
          (((uint)(DAT_18158c638 * 0x5bd1e995) >> 0x18 ^ DAT_18158c638 * 0x5bd1e995) * 0x5bd1e995 ^
          uVar2 * 0x5bd1e995) * 0x5bd1e995) + 0x6b10374;
  uVar2 = (uVar3 >> 6 ^ uVar3) >> 2 & 1;
  uVar2 = ((uVar2 << 6 | uVar2) << 2 ^ uVar3) + 0x53b159ab;
  do {
    puVar64 = local_48;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001809fc6f3(puVar64,local_48);
    uVar56 = rdtsc();
    *puVar64 = (uint)uVar56 ^ (uint)((ulonglong)uVar56 >> 0x20);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_48[0] = (local_48[0] * -0x73327333 >> 0x18 ^ local_48[0] * -0x73327333) * -0x12aa13ad;
  if (local_48[0] < 0x15e75bb) {
    do {
      local_28 = FUN_181194940;
      FUN_1809fb1d9();
      uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar55 = (*local_28)();
    if (1 < uVar55) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  if (((uVar2 >> 0xb | uVar2 * 0x200000) - (int)local_40) * 0x37 != 0) {
    uVar56 = thunk_FUN_1805a9280();
    return uVar56;
  }
  do {
    *(undefined8 *)(puVar65 + -8) = unaff_R12;
    *(ulonglong *)(puVar65 + -0x10) = uVar63;
    *(ulonglong *)(puVar65 + -0x18) = uVar66;
    lVar1 = -(longlong)(int)uVar67;
    uVar66 = *(ulonglong *)(puVar65 + lVar1 + 0x1a8);
    uVar63 = *(ulonglong *)(puVar65 + lVar1 + 0x1b0);
    unaff_R12 = *(undefined8 *)(puVar65 + lVar1 + 0x1b8);
    puVar65 = puVar65 + lVar1 + 0x1c0;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  return 0;
}



############ FUN_ 1808db3b9 size=849 ############

/* WARNING: Instruction at (ram,0x0001808db5d9) overlaps instruction at (ram,0x0001808db5d8)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001808db507) */
/* WARNING: Removing unreachable block (ram,0x73c0f749) */
/* WARNING: Removing unreachable block (ram,0x0001808db532) */
/* WARNING: Removing unreachable block (ram,0x0001808db53c) */
/* WARNING: Removing unreachable block (ram,0x0001808db5bc) */
/* WARNING: Removing unreachable block (ram,0x0001808db4fc) */
/* WARNING: Removing unreachable block (ram,0x0001808db565) */
/* WARNING: Removing unreachable block (ram,0x0001808db6da) */
/* WARNING: Removing unreachable block (ram,0x0001808db520) */
/* WARNING: Removing unreachable block (ram,0x0001808db572) */

void FUN_1808db3b9(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  uint uVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong *plVar7;
  longlong *unaff_RBX;
  undefined8 *puVar8;
  uint uVar9;
  undefined8 *unaff_RBP;
  undefined4 *puVar10;
  ulonglong unaff_RDI;
  uint uVar11;
  longlong lVar12;
  longlong *plVar13;
  uint *puVar14;
  ulonglong in_R10;
  longlong *plVar15;
  undefined1 *in_R11;
  ulonglong unaff_R12;
  int *unaff_R13;
  ulonglong unaff_R14;
  int *piVar16;
  longlong in_stack_00000030;
  longlong in_stack_00000058;
  longlong in_stack_00000068;
  
  piVar16 = (int *)(unaff_R14 ^ unaff_R12);
  plVar15 = (longlong *)(~in_R10 + 1);
  uVar4 = (*piVar16 + 1) * *piVar16 & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 != 0) {
    FUN_1808db3b9(0xf720);
    return;
  }
  if (in_stack_00000030 != in_stack_00000068) {
    puVar10 = (undefined4 *)(in_stack_00000058 + in_stack_00000068);
LAB_1808db410:
    if ((unaff_RBX != (longlong *)0x0) && (lVar5 = *unaff_RBX, -1 < lVar5)) {
      *(undefined8 *)((longlong)register0x00000020 + 0x58) = 0x2621fc0;
      lVar12 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)register0x00000020 + 0x58);
      do {
        if (puVar10 < (undefined4 *)
                      (-*(longlong *)((longlong)register0x00000020 + 0x58) + 0x182621fc8 + lVar5)) {
          if (-1 < lVar5) {
            plVar7 = (longlong *)(lVar12 + lVar5);
            plVar15 = (longlong *)(puVar10 + 1);
            if (plVar7 < plVar15) {
              *(undefined4 *)((longlong)register0x00000020 + 0x78) = *puVar10;
              in_R11 = (undefined1 *)
                       ((longlong)register0x00000020 + (lVar12 - (longlong)puVar10) + 0x78);
              plVar13 = unaff_RBX;
              goto LAB_1808db4a0;
            }
          }
          break;
        }
        lVar5 = unaff_RBX[1];
        unaff_RBX = unaff_RBX + 1;
      } while (-1 < lVar5);
    }
    goto LAB_1808db4bf;
  }
LAB_1808db5f6:
  *(int *)((longlong)register0x00000020 + 0x28) = (int)unaff_RDI;
  *(int *)((longlong)register0x00000020 + 0x3c) = (int)unaff_RBP;
  do {
    puVar10 = (undefined4 *)((longlong)register0x00000020 + 0x3c);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1808db61f;
    FUN_1808dd6a8(&LAB_18113e030,&LAB_18113e030,&LAB_18113e030);
    *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1808db62a;
    uVar2 = func_0x00018088aca3();
    *puVar10 = uVar2;
    uVar4 = (*piVar16 + 1) * *piVar16 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar11 = (~(*(int *)((longlong)register0x00000020 + 0x3c) + 0xe57bc5f5U) + 0x2d8ca1d5 >> 0x14 |
           (~(*(int *)((longlong)register0x00000020 + 0x3c) + 0xe57bc5f5U) + 0x2d8ca1d5) * 0x1000) +
           0x6b72b7e4;
  uVar4 = ~(*(uint *)((longlong)register0x00000020 + 0x40) & uVar11);
  if ((~(uVar4 & *(uint *)((longlong)register0x00000020 + 0x40)) & ~(uVar4 & uVar11)) != 0xffffffff)
  {
    *(undefined1 **)((longlong)register0x00000020 + -8) = in_R11;
    *(int **)((longlong)register0x00000020 + -0x10) = unaff_R13;
    *(ulonglong *)((longlong)register0x00000020 + -0x18) = unaff_RDI;
    thunk_FUN_1805a9280();
    return;
  }
  *(undefined8 *)((longlong)register0x00000020 + -8) = 0x1808db768;
  FUN_1808db7a6((longlong)*(int *)((longlong)register0x00000020 + 0x4c));
  *(ulonglong *)((longlong)register0x00000020 + -8) = unaff_R12;
  *(longlong **)((longlong)register0x00000020 + -0x10) = plVar15;
  *(int **)((longlong)register0x00000020 + -0x18) = unaff_R13;
  FUN_1808db7a7();
  return;
  while (plVar7 = (longlong *)(lVar12 + lVar5), plVar7 < plVar15) {
LAB_1808db4a0:
    plVar13 = plVar13 + 1;
    *(longlong *)(in_R11 + lVar5) = *plVar7 - lVar12;
    lVar5 = *plVar13;
    if (lVar5 < 0) break;
  }
LAB_1808db4bf:
  uVar4 = (uint)unaff_RDI ^ (uint)unaff_RBP;
  if ((uVar4 & 0x3ff) != 0) {
    uVar4 = uVar4 + (uVar4 >> 0x11);
  }
  unaff_RDI = (ulonglong)uVar4;
  unaff_R13 = (int *)((longlong)register0x00000020 + 200);
  do {
    puVar14 = (uint *)((longlong)register0x00000020 + 0x38);
    uVar6 = 0xf720;
    *(undefined4 **)((longlong)register0x00000020 + -8) = puVar10;
    puVar8 = (undefined8 *)((longlong)register0x00000020 + -8);
    while( true ) {
      puVar8[-1] = 0x1808db55e;
      uVar3 = FUN_1808dc674();
      uVar11 = (uint)uVar3;
      *puVar14 = uVar11;
      puVar10 = (undefined4 *)*puVar8;
      register0x00000020 = (BADSPACEBASE *)(puVar8 + 1);
                    /* WARNING: Bad instruction - Truncating control flow here */
      if ((uVar6 & 0xc300) != 0) break;
      puVar8 = puVar8 + 1;
      if ((char)(uVar6 >> 8) < '\0') {
        iVar1 = (int)CONCAT71((int7)((ulonglong)uVar3 >> 8),(char)uVar3 + '5');
        goto code_r0x0001808db5dc;
      }
    }
    if ((uVar6 & 0xc3) == 0) {
      uVar11 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      register0x00000020 = (BADSPACEBASE *)(puVar8 + 1);
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
        register0x00000020 = (BADSPACEBASE *)(puVar8 + 1);
      }
    }
    else {
      *puVar8 = unaff_RBP;
      register0x00000020 = (BADSPACEBASE *)((longlong)puVar8 + -0xfffe);
      unaff_RBP = puVar8;
    }
  } while (uVar11 != 0);
  uVar9 = (uint)unaff_RBP;
  uVar11 = (*(int *)((longlong)register0x00000020 + 0x38) *
            *(int *)((longlong)register0x00000020 + 0x20) * 0x8000 |
           (uint)(*(int *)((longlong)register0x00000020 + 0x38) *
                 *(int *)((longlong)register0x00000020 + 0x20)) >> 0x11) * (int)unaff_R12;
  *(uint *)((longlong)register0x00000020 + 0x38) = uVar11;
  if (uVar4 - uVar9 < 0xc) {
    unaff_RDI = (ulonglong)(uVar4 * 0x41);
  }
  uVar4 = (uint)unaff_RDI;
  if (uVar4 - uVar9 < 0x30) {
    unaff_RDI = (ulonglong)(uVar4 ^ uVar4 * 8);
  }
  uVar9 = uVar9 ^ uVar11;
  uVar4 = uVar9 << 0xd | uVar9 >> 0x13;
  unaff_RBP = (undefined8 *)(ulonglong)uVar4;
  in_stack_00000068 = in_stack_00000068 + 4;
  puVar10 = puVar10 + 1;
  iVar1 = *(int *)((longlong)register0x00000020 + 0x28) + uVar4 * 4;
code_r0x0001808db5dc:
  unaff_RBP = (undefined8 *)(ulonglong)(uint)((int)unaff_RBP + iVar1);
  if (*(longlong *)((longlong)register0x00000020 + 0x30) == in_stack_00000068)
  goto code_r0x0001808db5e9;
  goto LAB_1808db410;
code_r0x0001808db5e9:
  piVar16 = (int *)((longlong)register0x00000020 + 200);
  goto LAB_1808db5f6;
}



############ FUN_ 1806ab5b0 size=2456 ############

/* WARNING: Instruction at (ram,0x0001806abab3) overlaps instruction at (ram,0x0001806abab2)
    */
/* WARNING: Removing unreachable block (ram,0x0001806abab0) */
/* WARNING: Removing unreachable block (ram,0x0001806ab663) */
/* WARNING: Removing unreachable block (ram,0x0001806abea7) */

longlong FUN_1806ab5b0(void)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  longlong lVar5;
  undefined1 *puVar6;
  longlong lVar7;
  undefined8 uVar8;
  uint uVar9;
  undefined8 uVar10;
  longlong lVar11;
  bool bVar12;
  int unaff_retaddr;
  undefined1 local_78 [32];
  undefined8 local_58;
  
  puVar6 = local_78;
  local_58 = 0xfffffffffffffffe;
  uVar10 = 0x10;
  uVar2 = (uint)&stack0x00000000 & 0x13f;
  iVar4 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  uVar9 = 0xb35U - (((iVar4 >> 1) - (iVar4 >> 3)) + iVar4 * 0x55555555 >> 0x1e) ^ 0x775;
  lVar11 = (longlong)&DAT_18265f6a8 +
           (SUB168(ZEXT816(0xc7ce0c7ce0c7ce0d) * ZEXT816(0x18265f6a8),8) >> 5) * -0x29;
  uVar2 = 0;
  LOCK();
  iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
  *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
  UNLOCK();
  lVar1 = DAT_18265f6a8;
  while (DAT_18265f6a8 = lVar1, iVar4 != 0) {
    if ((3 < uVar2) && (0xf < uVar2)) {
      Sleep((uint)(0x1f < uVar2));
    }
    uVar2 = uVar2 + 1;
    LOCK();
    iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
    *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
    UNLOCK();
    lVar1 = DAT_18265f6a8;
  }
  *(undefined4 *)(&DAT_18265dbd0 + lVar11 * 4) = 0;
  lVar7 = 0xaeb8e887;
  uVar8 = 0x63c7455d;
  lVar5 = 4;
  do {
    uVar9 = ~-uVar9 + 1;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = DAT_18114f8b4 ^
          (((((((((((((((((((((((((((((((((((DAT_18114f828 ^
                                            (DAT_18114f824 ^ 0x811c9e07) * 0x10001a7) * 0x10001a7 ^
                                           DAT_18114f82c) * 0x10001a7 ^ DAT_18114f830) * 0x10001a7 ^
                                         DAT_18114f834) * 0x10001a7 ^ DAT_18114f838) * 0x10001a7 ^
                                       DAT_18114f83c) * 0x10001a7 ^ DAT_18114f840) * 0x10001a7 ^
                                     DAT_18114f844) * 0x10001a7 ^ DAT_18114f848) * 0x10001a7 ^
                                   DAT_18114f84c) * 0x10001a7 ^ DAT_18114f850) * 0x10001a7 ^
                                 DAT_18114f854) * 0x10001a7 ^ DAT_18114f858) * 0x10001a7 ^
                               DAT_18114f85c) * 0x10001a7 ^ DAT_18114f860) * 0x10001a7 ^
                             DAT_18114f864) * 0x10001a7 ^ DAT_18114f868) * 0x10001a7 ^ DAT_18114f86c
                           ) * 0x10001a7 ^ DAT_18114f870) * 0x10001a7 ^ DAT_18114f874) * 0x10001a7 ^
                        DAT_18114f878) * 0x10001a7 ^ DAT_18114f87c) * 0x10001a7 ^ DAT_18114f880) *
                      0x10001a7 ^ DAT_18114f884) * 0x10001a7 ^ DAT_18114f888) * 0x10001a7 ^
                   DAT_18114f88c) * 0x10001a7 ^ DAT_18114f890) * 0x10001a7 ^ DAT_18114f894) *
                 0x10001a7 ^ DAT_18114f898) * 0x10001a7 ^ DAT_18114f89c) * 0x10001a7 ^ DAT_18114f8a0
              ) * 0x10001a7 ^ DAT_18114f8a4) * 0x10001a7 ^ DAT_18114f8a8) * 0x10001a7 ^
           DAT_18114f8ac) * 0x10001a7 ^ DAT_18114f8b0) * 0x10001a7;
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  if (lVar1 == 0) {
    LOCK();
    bVar12 = DAT_18265f6b0 == 0;
    if (bVar12) {
      DAT_18265f6b0 = 1;
    }
    UNLOCK();
    while (!bVar12) {
      LOCK();
      bVar12 = DAT_18265f6b0 == 0;
      if (bVar12) {
        DAT_18265f6b0 = 1;
      }
      UNLOCK();
    }
    uVar3 = 0;
    LOCK();
    iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
    *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
    UNLOCK();
    lVar1 = DAT_18265f6a8;
    while (DAT_18265f6a8 = lVar1, iVar4 != 0) {
      if ((3 < uVar3) && (0xf < uVar3)) {
        Sleep((uint)(0x1f < uVar3));
      }
      uVar3 = uVar3 + 1;
      LOCK();
      iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
      *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
      UNLOCK();
      lVar1 = DAT_18265f6a8;
    }
    uVar3 = 0;
    *(undefined4 *)(&DAT_18265dbd0 + lVar11 * 4) = 0;
    if (lVar1 == 0) {
      lVar1 = FUN_1806acfc0();
      lVar5 = lVar1;
      FUN_1805ccdd0(FUN_1806ac040);
      LOCK();
      iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
      *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
      UNLOCK();
      while (iVar4 != 0) {
        if ((3 < uVar3) && (0xf < uVar3)) {
          Sleep((uint)(0x1f < uVar3));
        }
        uVar3 = uVar3 + 1;
        LOCK();
        iVar4 = *(int *)(&DAT_18265dbd0 + lVar11 * 4);
        *(int *)(&DAT_18265dbd0 + lVar11 * 4) = 1;
        UNLOCK();
      }
      DAT_18265f6a8 = lVar1;
      *(undefined4 *)(&DAT_18265dbd0 + lVar11 * 4) = 0;
    }
    LOCK();
    UNLOCK();
    DAT_18265f6b0 = 0;
  }
  uVar2 = (((((((((((((DAT_18114f8b8 ^ uVar2 * 0x10001a7) * 0x10001a7 ^ DAT_18114f8bc) * 0x10001a7 ^
                    DAT_18114f8c0) * 0x10001a7 ^ DAT_18114f8c4) * 0x10001a7 ^ DAT_18114f8c8) *
                  0x10001a7 ^ DAT_18114f8cc) * 0x10001a7 ^ DAT_18114f8d0) * 0x10001a7 ^
               DAT_18114f8d4) * 0x10001a7 ^ DAT_18114f8d8) * 0x10001a7 ^ DAT_18114f8dc) * 0x10001a7
            ^ DAT_18114f8e0) * 0x10001a7 ^ DAT_18114f8e4) * 0x10001a7 ^ DAT_18114f8e8) * 0x10001a7 ^
          DAT_18114f8ec;
  do {
    FUN_1806ab0d1(0xdf10);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = (DAT_18114f91c ^
          (DAT_18114f918 ^
          (DAT_18114f914 ^
          (DAT_18114f910 ^
          (DAT_18114f90c ^
          (DAT_18114f908 ^
          (DAT_18114f904 ^
          (DAT_18114f900 ^
          (DAT_18114f8fc ^
          (DAT_18114f8f8 ^
          (DAT_18114f8f4 ^ (DAT_18114f8f0 ^ uVar2 * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7
          ) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
          0x10001a7) * 0x10001a7) * 0x10001a7 ^ DAT_18114f920;
  uVar2 = (uVar2 * 0x10001a7 >> 0x10 | uVar2 * 0x1a70000) & 0x9661699e |
          (uVar2 * 0x1a70000 | uVar2 * 0x10001a7 >> 0x10) & 0x699e9661;
  do {
    lVar11 = lVar5 + lVar7;
    lVar5 = (lVar7 - lVar11 ^ 0xffffffffffffffffU) + 1;
    lVar7 = lVar11 - lVar5;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = ((uVar2 << 4 | uVar2 >> 0x1c) & 0x87878787 | (uVar2 >> 4 | uVar2 << 0x1c) & 0x78787878) +
          0x73d13162 ^ 0x867eff55;
  if (uVar2 != uVar2 >> 3) {
    lVar1 = thunk_FUN_1805a9280(0x10,(-(~-lVar5 + 1U) ^ 0xffffffffffffffff) + 1,thunk_FUN_1805a9280)
    ;
    return lVar1;
  }
  do {
    *(undefined8 *)(puVar6 + -8) = uVar8;
    *(undefined8 *)(puVar6 + -0x10) = uVar10;
    *(BADSPACEBASE **)(puVar6 + -0x18) = register0x00000020;
    lVar11 = -(longlong)(int)uVar9;
    register0x00000020 = *(BADSPACEBASE **)(puVar6 + lVar11 + 0xc28);
    uVar10 = *(undefined8 *)(puVar6 + lVar11 + 0xc30);
    uVar8 = *(undefined8 *)(puVar6 + lVar11 + 0xc38);
    puVar6 = puVar6 + lVar11 + 0xc40;
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  return lVar1;
}



############ FUN_ 180a0b6e0 size=1974 ############

/* WARNING: Instruction at (ram,0x000180a0bdbb) overlaps instruction at (ram,0x000180a0bdba)
    */
/* WARNING: Removing unreachable block (ram,0x000180a0bdb5) */
/* WARNING: Removing unreachable block (ram,0x000180a0b7f4) */
/* WARNING: Removing unreachable block (ram,0x000180a0b77e) */
/* WARNING: Removing unreachable block (ram,0x000180a0bc88) */
/* WARNING: Removing unreachable block (ram,0x000180a0be79) */
/* WARNING: Removing unreachable block (ram,0x000180a0b806) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_180a0b6e0(longlong param_1,char *param_2)

{
  uint uVar1;
  byte *pbVar2;
  byte bVar3;
  longlong lVar4;
  undefined1 *puVar5;
  byte bVar6;
  undefined8 uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  ulonglong uVar12;
  char *pcVar13;
  undefined1 *puVar14;
  undefined1 *puVar15;
  byte bVar16;
  byte *pbVar17;
  uint *puVar18;
  ulonglong in_R11;
  ulonglong uVar19;
  int unaff_retaddr;
  undefined1 auStack_98 [96];
  
  puVar14 = auStack_98;
  uVar8 = (uint)&stack0x00000000 & 0x54ff;
  iVar9 = uVar8 * uVar8 + 1;
  uVar8 = (iVar9 >> 4) + (iVar9 >> 1) + iVar9 * 0x24924924 >> 0x1d;
  uVar8 = (int)(uVar8 - 7) >> 0x1f & uVar8;
  uVar7 = 0x15971c8;
  do {
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = _UNK_181597234 ^
           (_UNK_181597230 ^
           (_UNK_18159722c ^
           (_UNK_181597228 ^
           (_UNK_181597224 ^
           (_UNK_181597220 ^
           (_UNK_18159721c ^
           (_UNK_181597218 ^
           (_UNK_181597214 ^
           (_UNK_181597210 ^
           (_UNK_18159720c ^
           (_UNK_181597208 ^
           (_UNK_181597204 ^
           (_UNK_181597200 ^
           (_UNK_1815971fc ^
           (_UNK_1815971f8 ^
           (_UNK_1815971f4 ^
           (_UNK_1815971f0 ^
           (_UNK_1815971ec ^
           (_UNK_1815971e8 ^
           (_UNK_1815971e4 ^
           (_UNK_1815971e0 ^
           (_UNK_1815971dc ^
           (_UNK_1815971d8 ^
           (_UNK_1815971d4 ^
           (_UNK_1815971d0 ^
           (_UNK_1815971cc ^ (_UNK_1815971c8 ^ 0x811c9dc5) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
           ) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  do {
    FUN_180a0cfe1(0xea34);
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  do {
    uVar19 = (ulonglong)register0x00000020 ^ in_R11;
    in_R11 = (in_R11 - uVar19) + uVar19;
    register0x00000020 = (BADSPACEBASE *)(in_R11 ^ uVar19);
    uVar11 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar10 = _UNK_18159729c ^
           (_UNK_181597298 ^
           (_UNK_181597294 ^
           (_UNK_181597290 ^
           (_UNK_18159728c ^
           (_UNK_181597288 ^
           (_UNK_181597284 ^
           (_UNK_181597280 ^
           (_UNK_18159727c ^
           (_UNK_181597278 ^
           (_UNK_181597274 ^
           (_UNK_181597270 ^
           (_UNK_18159726c ^
           (_UNK_181597268 ^
           (_UNK_181597264 ^
           (_UNK_181597260 ^
           (_UNK_18159725c ^
           (_UNK_181597258 ^
           (_UNK_181597254 ^
           (_UNK_181597250 ^
           (_UNK_18159724c ^
           (_UNK_181597248 ^
           (_UNK_181597244 ^
           (_UNK_181597240 ^
           (_UNK_18159723c ^ (_UNK_181597238 ^ uVar10 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
           ) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181;
  do {
    FUN_180a0cd07(0xea34);
    uVar11 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar10 = (_UNK_1815972bc ^
           (_UNK_1815972b8 ^
           (_UNK_1815972b4 ^
           (_UNK_1815972b0 ^
           (_UNK_1815972ac ^
           (_UNK_1815972a8 ^
           (_UNK_1815972a4 ^ (_UNK_1815972a0 ^ uVar10 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  uVar19 = (ulonglong)uVar10;
  do {
    FUN_180a0b2bb();
    uVar11 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar10 = (_UNK_1815972c0 ^ uVar10) * 0x1000181 ^ _UNK_1815972c4;
  uVar11 = uVar10 * 0x20000000 | uVar10 * 0x1000181 >> 3;
  uVar12 = (ulonglong)uVar11;
  uVar10 = (uVar11 >> 10 ^ uVar11) >> 2 & 0x7f;
  if (((uVar10 << 10 | uVar10) << 2 ^ uVar11) == 0x3537f805) {
    puVar5 = puVar14;
    do {
      puVar15 = puVar5;
      *(ulonglong *)(puVar15 + -8) = uVar12;
      *(undefined8 *)(puVar15 + -0x10) = uVar7;
      *(ulonglong *)(puVar15 + -0x18) = uVar19;
      lVar4 = -(longlong)(int)(((int)(-uVar8 | uVar8) >> 0x1f) * -0x6060 ^ 0x6340);
      uVar19 = *(ulonglong *)(puVar15 + lVar4 + 0x308);
      uVar7 = *(undefined8 *)(puVar15 + lVar4 + 0x310);
      uVar12 = *(ulonglong *)(puVar15 + lVar4 + 0x318);
      uVar10 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
      puVar5 = puVar15 + lVar4 + 800;
    } while (uVar10 != 0);
    if ((param_1 == 0) || (param_2 == (char *)0x0)) {
      uVar7 = 99;
    }
    else {
      pbVar2 = (byte *)(param_2 + 3);
      uVar8 = *(uint *)(param_2 + 4);
      pbVar17 = (byte *)(param_1 + 0x49);
      uVar10 = *(uint *)(param_2 + 8);
      puVar18 = (uint *)(param_1 + 0x24);
      bVar6 = *param_2 - 1;
      *(char **)(puVar15 + lVar4 + 0x348) = param_2 + (0x2c - param_1);
      pcVar13 = param_2 + (8 - param_1);
      *(char **)(puVar15 + lVar4 + 0x3c0) = pcVar13;
      *(char **)(puVar15 + lVar4 + 0x3d0) = param_2 + (0x28 - param_1);
      *(char **)(puVar15 + lVar4 + 0x350) = param_2 + (0x24 - param_1);
      *(char **)(puVar15 + lVar4 + 0x358) = param_2 + (0x2d - param_1);
      *(char **)(puVar15 + lVar4 + 0x360) = param_2 + (0x25 - param_1);
      *(char **)(puVar15 + lVar4 + 0x368) = param_2 + (0x2e - param_1);
      *(char **)(puVar15 + lVar4 + 0x370) = param_2 + (0x26 - param_1);
      *(char **)(puVar15 + lVar4 + 0x3d8) = param_2 + (0x2b - param_1);
      *(char **)(puVar15 + lVar4 + 0x340) = param_2 + (0x23 - param_1);
      uVar11 = 2;
      do {
        bVar16 = 1;
        if (uVar11 - 2 < 7) {
          bVar3 = *pbVar17;
          uVar8 = uVar8 & puVar18[-8];
          uVar10 = uVar10 & *puVar18;
          if (bVar3 < bVar6) {
            bVar6 = bVar3;
          }
          pcVar13 = *(char **)(puVar15 + lVar4 + 0x3c0);
          if (1 < bVar3) {
            bVar16 = pbVar17[-8];
          }
        }
        if (uVar11 - 2 < (uint)*pbVar2) {
          uVar8 = uVar8 & *(uint *)(pcVar13 + (longlong)puVar18);
          uVar10 = uVar10 & *(uint *)(*(longlong *)(puVar15 + lVar4 + 0x3d0) + (longlong)puVar18);
          if (pbVar17[*(longlong *)(puVar15 + lVar4 + 0x3d8)] < bVar6) {
            bVar6 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x3d8)];
          }
          if (bVar16 < pbVar17[*(longlong *)(puVar15 + lVar4 + 0x340)]) {
            bVar16 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x340)];
          }
        }
        puVar18[-9] = uVar8;
        puVar18[-1] = uVar10;
        pbVar17[-1] = bVar6;
        pbVar17[-9] = bVar16;
        if (bVar6 != 0) {
          bVar6 = bVar6 - 1;
        }
        bVar16 = 1;
        if (uVar11 - 1 < 7) {
          bVar3 = pbVar17[1];
          uVar8 = uVar8 & puVar18[-7];
          uVar10 = uVar10 & puVar18[1];
          if (bVar3 < bVar6) {
            bVar6 = bVar3;
          }
          if (1 < bVar3) {
            bVar16 = pbVar17[-7];
          }
        }
        if (uVar11 - 1 < (uint)*pbVar2) {
          uVar8 = uVar8 & *(uint *)(*(longlong *)(puVar15 + lVar4 + 0x348) + -0x20 +
                                   (longlong)puVar18);
          uVar10 = uVar10 & *(uint *)(*(longlong *)(puVar15 + lVar4 + 0x348) + (longlong)puVar18);
          if (pbVar17[*(longlong *)(puVar15 + lVar4 + 0x350) + 8] < bVar6) {
            bVar6 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x350) + 8];
          }
          if (bVar16 < pbVar17[*(longlong *)(puVar15 + lVar4 + 0x350)]) {
            bVar16 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x350)];
          }
        }
        puVar18[-8] = uVar8;
        *puVar18 = uVar10;
        *pbVar17 = bVar6;
        pbVar17[-8] = bVar16;
        if (bVar6 != 0) {
          bVar6 = bVar6 - 1;
        }
        bVar16 = 1;
        if (uVar11 < 7) {
          bVar3 = pbVar17[2];
          uVar8 = uVar8 & puVar18[-6];
          uVar10 = uVar10 & puVar18[2];
          if (bVar3 < bVar6) {
            bVar6 = bVar3;
          }
          if (1 < bVar3) {
            bVar16 = pbVar17[-6];
          }
        }
        if (uVar11 < *pbVar2) {
          uVar8 = uVar8 & *(uint *)(param_2 + (0x10 - param_1) + (longlong)puVar18);
          uVar10 = uVar10 & *(uint *)(param_2 + (0x30 - param_1) + (longlong)puVar18);
          if (pbVar17[*(longlong *)(puVar15 + lVar4 + 0x358)] < bVar6) {
            bVar6 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x358)];
          }
          if (bVar16 < pbVar17[*(longlong *)(puVar15 + lVar4 + 0x360)]) {
            bVar16 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x360)];
          }
        }
        puVar18[-7] = uVar8;
        puVar18[1] = uVar10;
        pbVar17[1] = bVar6;
        pbVar17[-7] = bVar16;
        if (bVar6 != 0) {
          bVar6 = bVar6 - 1;
        }
        bVar16 = 1;
        if (uVar11 + 1 < 7) {
          bVar3 = pbVar17[3];
          uVar8 = uVar8 & puVar18[-5];
          uVar10 = uVar10 & puVar18[3];
          if (bVar3 < bVar6) {
            bVar6 = bVar3;
          }
          if (1 < bVar3) {
            bVar16 = pbVar17[-5];
          }
        }
        if (uVar11 + 1 < (uint)*pbVar2) {
          uVar8 = uVar8 & *(uint *)(param_2 + (0x14 - param_1) + (longlong)puVar18);
          uVar10 = uVar10 & *(uint *)((longlong)puVar18 + (longlong)(param_2 + (0x34 - param_1)));
          if (pbVar17[*(longlong *)(puVar15 + lVar4 + 0x368)] < bVar6) {
            bVar6 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x368)];
          }
          if (bVar16 < pbVar17[*(longlong *)(puVar15 + lVar4 + 0x370)]) {
            bVar16 = pbVar17[*(longlong *)(puVar15 + lVar4 + 0x370)];
          }
        }
        puVar18[-6] = uVar8;
        puVar18[2] = uVar10;
        pbVar17[2] = bVar6;
        pbVar17[-6] = bVar16;
        if (bVar6 != 0) {
          bVar6 = bVar6 - 1;
        }
        pcVar13 = *(char **)(puVar15 + lVar4 + 0x3c0);
        puVar18 = puVar18 + 4;
        pbVar17 = pbVar17 + 4;
        uVar1 = uVar11 + 2;
        uVar11 = uVar11 + 4;
      } while (uVar1 < 8);
      uVar7 = 0;
    }
    return uVar7;
  }
  uVar7 = thunk_FUN_1805a9280(0x1c0,0x180a0be9c);
  return uVar7;
}



############ FUN_ 180bbba90 size=786 ############

/* WARNING: Instruction at (ram,0x000180bbbbc1) overlaps instruction at (ram,0x000180bbbbbe)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180bbbda5) */
/* WARNING: Removing unreachable block (ram,0x000180bbbae9) */
/* WARNING: Removing unreachable block (ram,0x000180bbbbbe) */

undefined8 FUN_180bbba90(void)

{
  longlong lVar1;
  undefined1 *puVar2;
  undefined8 uVar3;
  uint uVar4;
  uint uVar5;
  ulonglong uVar6;
  longlong unaff_RBX;
  undefined1 *puVar7;
  undefined8 unaff_RSI;
  undefined4 unaff_EDI;
  undefined8 in_R11;
  int *unaff_R12;
  uint unaff_R14D;
  uint unaff_R15D;
  uint in_stack_00000038;
  
  uVar4 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 != 0) {
    FUN_180bbc392(0xc524);
    uVar3 = FUN_180bbba90();
    return uVar3;
  }
  do {
    uVar4 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar4 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (*(uint *)(unaff_RBX + 0xf8) ^
          (*(uint *)(unaff_RBX + 0xf4) ^
          (*(uint *)(unaff_RBX + 0xf0) ^ (*(uint *)(unaff_RBX + 0xec) ^ unaff_R14D) * 0x10001a7) *
          0x10001a7) * 0x10001a7) * 0x10001a7 ^ *(uint *)(unaff_RBX + 0xfc);
  do {
    uVar5 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = uVar4 * 0x10001a7 >> 2 & 0xcccccccc | uVar4 * -0x40000000 |
          uVar4 * 0x400069c & 0x33333333 | uVar4 * 0x10001a7 >> 0x1e;
  uVar4 = (uVar5 >> 7 ^ uVar5) & 0x1f;
  uVar5 = ~((uVar4 << 7 | uVar4) ^ uVar5) + 0x559aabc4;
  uVar4 = ~(in_stack_00000038 & uVar5);
  uVar5 = ~(uVar4 & uVar5);
  uVar6 = (ulonglong)uVar5;
  uVar4 = CONCAT31((int3)((uint)unaff_EDI >> 8),(~(uVar4 & in_stack_00000038) & uVar5) == 0xffffffff
                  );
  if (uVar4 == uVar4 >> 1) {
    FUN_180bbdb28();
    uVar3 = thunk_FUN_1805a9280();
    return uVar3;
  }
  puVar2 = (undefined1 *)register0x00000020;
  do {
    puVar7 = puVar2;
    *(undefined8 *)(puVar7 + -8) = unaff_RSI;
    *(undefined8 *)(puVar7 + -0x10) = in_R11;
    *(ulonglong *)(puVar7 + -0x18) = uVar6;
    lVar1 = -(longlong)(int)((unaff_R15D ^ 0xffffffff) + 1);
    uVar6 = *(ulonglong *)(puVar7 + lVar1 + 0x98);
    in_R11 = *(undefined8 *)(puVar7 + lVar1 + 0xa0);
    unaff_RSI = *(undefined8 *)(puVar7 + lVar1 + 0xa8);
    uVar4 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    puVar2 = puVar7 + lVar1 + 0xb0;
  } while (uVar4 != 0);
  *(undefined **)(puVar7 + lVar1 + 0xa8) = &UNK_180bbbe33;
}



############ FUN_ 180a5a5ba size=2190 ############

/* WARNING: Removing unreachable block (ram,0x000180a5a9d5) */
/* WARNING: Removing unreachable block (ram,0x000180a5a76e) */
/* WARNING: Removing unreachable block (ram,0x000180a5a9c1) */
/* WARNING: Removing unreachable block (ram,0x000180a5ad90) */
/* WARNING: Removing unreachable block (ram,0x000180a5a8b6) */

undefined8 *
FUN_180a5a5ba(undefined8 param_1,undefined8 param_2,longlong param_3,ulonglong param_4,
             undefined8 param_5,uint param_6,undefined8 param_7,undefined8 param_8,
             undefined8 param_9)

{
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  byte bVar5;
  undefined1 *puVar6;
  int iVar7;
  undefined8 *puVar8;
  uint uVar9;
  undefined8 *puVar10;
  uint uVar11;
  int iVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  longlong *plVar15;
  longlong lVar16;
  longlong unaff_RBX;
  int *piVar17;
  undefined1 *puVar18;
  int unaff_EBP;
  int unaff_ESI;
  int iVar19;
  undefined8 unaff_RDI;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  int *unaff_R12;
  undefined8 unaff_R13;
  uint unaff_R14D;
  ulonglong uVar23;
  int *piVar24;
  longlong *unaff_R15;
  int in_stack_000000a8;
  longlong in_stack_000000c0;
  
  FUN_180a5c163(param_1,param_2,-param_3,param_4 ^ (ulonglong)unaff_R12);
  uVar9 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar9 < 0) {
    uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
  }
  if (uVar9 == 0) {
    uVar9 = *(int *)(unaff_RBX + 0x68) * unaff_EBP;
    uVar11 = *(int *)(unaff_RBX + 0x6c) * unaff_EBP;
    uVar21 = *(int *)(unaff_RBX + 0x78) * unaff_EBP;
    iVar19 = (int)unaff_RDI;
    uVar9 = (uVar9 * 0x8000 | uVar9 >> 0x11) * iVar19 ^ unaff_R14D;
    uVar11 = (uVar11 * 0x8000 | uVar11 >> 0x11) * iVar19 ^
             unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = *(int *)(unaff_RBX + 0x70) * unaff_EBP;
    uVar9 = (uVar9 * 0x8000 | uVar9 >> 0x11) * iVar19 ^
            unaff_ESI + (uVar11 << 0xd | uVar11 >> 0x13) * 5;
    uVar11 = *(int *)(unaff_RBX + 0x74) * unaff_EBP;
    uVar20 = (uint)(unaff_RBX + 0x78) & 0x74ff;
    uVar9 = (uVar11 * 0x8000 | uVar11 >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (uVar21 * 0x8000 | uVar21 >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    bVar5 = (byte)uVar9 & 0x4f;
    uVar11 = (uVar20 * uVar20 + 1) % 7;
    uVar11 = ((int)(-uVar11 | uVar11) >> 0x1f) >> (bVar5 * bVar5 * (bVar5 + 1) * (bVar5 + 1) & 1);
    piVar17 = (int *)(unaff_RBX + 0x78 +
                     (0x104 - ((longlong)(((int)(-uVar11 | uVar11) >> 0x1f) * -0x189a) ^ 0x199aU)));
    uVar9 = (*piVar17 * unaff_EBP * 0x8000 | (uint)(*piVar17 * unaff_EBP) >> 0x11) * iVar19 ^ uVar9;
    uVar9 = (piVar17[1] * unaff_EBP * 0x8000 | (uint)(piVar17[1] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[2] * unaff_EBP * 0x8000 | (uint)(piVar17[2] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[3] * unaff_EBP * 0x8000 | (uint)(piVar17[3] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[4] * unaff_EBP * 0x8000 | (uint)(piVar17[4] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    if ((uVar9 & 0xc) == 0) {
      uVar11 = ((param_6 & 0x50ff) - 1) * (param_6 & 0x50ff) & 1;
    }
    else {
      uVar11 = ((uVar9 & 0x4eff) + 1) * (uVar9 & 0x4eff) & 0x80000001;
    }
    piVar17 = (int *)((longlong)piVar17 + ((longlong)(int)uVar11 ^ 4U) + 0x10);
    uVar9 = (*piVar17 * unaff_EBP * 0x8000 | (uint)(*piVar17 * unaff_EBP) >> 0x11) * iVar19 ^ uVar9;
    uVar9 = (piVar17[1] * unaff_EBP * 0x8000 | (uint)(piVar17[1] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[2] * unaff_EBP * 0x8000 | (uint)(piVar17[2] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    piVar24 = piVar17 + 5;
    uVar9 = (piVar17[3] * unaff_EBP * 0x8000 | (uint)(piVar17[3] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[4] * unaff_EBP * 0x8000 | (uint)(piVar17[4] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    iVar12 = *(int *)(in_stack_000000c0 + 8);
    iVar7 = (**(code **)(*unaff_R15 + 0x48))();
    if (iVar12 != iVar7) {
      (**(code **)(*unaff_R15 + 0x48))();
      FUN_180a3df30();
    }
    uVar20 = (*piVar24 * unaff_EBP * 0x8000 | (uint)(*piVar24 * unaff_EBP) >> 0x11) * iVar19 ^
             unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (uint)piVar24 & 0xff;
    iVar12 = (uVar9 + 2) * (uVar9 + 1) * uVar9;
    uVar23 = (longlong)((((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e) + 0x32d1) ^
             0x3351;
    uVar9 = *(int *)((longlong)piVar24 + (uVar23 - 0x17c)) * unaff_EBP;
    uVar11 = *(int *)((longlong)piVar24 + (uVar23 - 0x178)) * unaff_EBP;
    uVar9 = (uVar9 * 0x8000 | uVar9 >> 0x11) * iVar19 ^
            unaff_ESI + (uVar20 << 0xd | uVar20 >> 0x13) * 5;
    uVar11 = (uVar11 * 0x8000 | uVar11 >> 0x11) * iVar19 ^
             unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = *(int *)((longlong)piVar24 + (uVar23 - 0x174)) * unaff_EBP;
    uVar9 = (uVar9 * 0x8000 | uVar9 >> 0x11) * iVar19 ^
            unaff_ESI + (uVar11 << 0xd | uVar11 >> 0x13) * 5;
    uVar11 = *(int *)((longlong)piVar24 + (uVar23 - 0x170)) * unaff_EBP;
    piVar24 = (int *)((longlong)piVar24 + (uVar23 - 0x16c));
    uVar9 = (uVar11 * 0x8000 | uVar11 >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (*piVar24 * unaff_EBP * 0x8000 | (uint)(*piVar24 * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    if ((uVar9 & 0x1500) == 0) {
      uVar11 = uVar9 & 0x7f;
      uVar11 = (uVar11 * uVar11 * (uVar11 + 1) * (uVar11 + 1) & 0x80000003 |
               ((uVar9 & 0x55ff) + 1) * (uVar9 & 0x55ff) & 0x80000001) + 0x88fa;
    }
    else {
      uVar11 = 0x88fa;
    }
    if ((uVar9 & 0x1c0) == 0) {
      uVar20 = uVar9 & 0x27f;
    }
    else {
      uVar20 = uVar9 & 0x23f;
    }
    uVar22 = uVar9 & 0x1ff;
    iVar12 = (uVar20 + 2) * (uVar20 + 1) * uVar20;
    uVar21 = param_6 & 0x3f | 0x30;
    uVar20 = uVar9 & 0x1f | 0x55;
    iVar7 = (uVar22 + 2) * (uVar22 + 1) * uVar22;
    piVar17 = (int *)((longlong)piVar24 +
                     (0x6c9bL >>
                      ((uVar20 * uVar20 * 0x685d == uVar21 * uVar21 * 0x1a87) -
                       ((char)iVar7 + (char)((ulonglong)((longlong)iVar7 * 0x55555556) >> 0x20) * -3
                       ) & 0x3fU) ^ 0xffffffffffff9377U) +
                     (longlong)
                     (int)(0x88e2 << ((byte)(((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555
                                            >> 0x1e) & 0x1f) ^ uVar11));
    uVar9 = (*piVar17 * unaff_EBP * 0x8000 | (uint)(*piVar17 * unaff_EBP) >> 0x11) * iVar19 ^ uVar9;
    uVar9 = (piVar17[1] * unaff_EBP * 0x8000 | (uint)(piVar17[1] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[2] * unaff_EBP * 0x8000 | (uint)(piVar17[2] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[3] * unaff_EBP * 0x8000 | (uint)(piVar17[3] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[4] * unaff_EBP * 0x8000 | (uint)(piVar17[4] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[5] * unaff_EBP * 0x8000 | (uint)(piVar17[5] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[6] * unaff_EBP * 0x8000 | (uint)(piVar17[6] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[7] * unaff_EBP * 0x8000 | (uint)(piVar17[7] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[8] * unaff_EBP * 0x8000 | (uint)(piVar17[8] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[9] * unaff_EBP * 0x8000 | (uint)(piVar17[9] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[10] * unaff_EBP * 0x8000 | (uint)(piVar17[10] * unaff_EBP) >> 0x11) * iVar19 ^
            unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[0xb] * unaff_EBP * 0x8000 | (uint)(piVar17[0xb] * unaff_EBP) >> 0x11) * iVar19
            ^ unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[0xc] * unaff_EBP * 0x8000 | (uint)(piVar17[0xc] * unaff_EBP) >> 0x11) * iVar19
            ^ unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[0xd] * unaff_EBP * 0x8000 | (uint)(piVar17[0xd] * unaff_EBP) >> 0x11) * iVar19
            ^ unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[0xe] * unaff_EBP * 0x8000 | (uint)(piVar17[0xe] * unaff_EBP) >> 0x11) * iVar19
            ^ unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (piVar17[0xf] * unaff_EBP * 0x8000 | (uint)(piVar17[0xf] * unaff_EBP) >> 0x11) * iVar19
            ^ unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    param_6 = param_6 & 0x17f;
    uVar9 = unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar11 = uVar9 & 0x8ff;
    iVar12 = (param_6 + 2) * (param_6 + 1) * param_6;
    uVar11 = ((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e ^
             ((uVar11 + 1) * uVar11 + 7) % 0x51;
    uVar11 = *(int *)((ulonglong)(((int)(-uVar11 | uVar11) >> 0x1f ^ 0xfffffffbU) & 0x1cdf) + 0x3c +
                     (longlong)piVar17) * unaff_EBP;
    uVar9 = (uVar11 * 0x8000 | uVar11 >> 0x11) * iVar19 ^ uVar9;
    uVar11 = unaff_ESI + (uVar9 << 0xd | uVar9 >> 0x13) * 5;
    uVar9 = (uVar11 >> 0x17 ^ uVar11) & 0x1f;
    uVar11 = (uVar9 << 0x17 | uVar9) ^ uVar11;
    uVar9 = uVar11 >> 0xe;
    uVar11 = uVar11 << 0x12 | uVar9;
    uVar9 = (uVar11 >> 0x10 | uVar9 << 0x10) & 0xee9e1161 |
            (uVar9 << 0x10 | uVar11 >> 0x10) & 0x1161ee9e;
    uVar9 = uVar9 & 0x326bf875 | ~uVar9 & 0xcd94078a;
    if (uVar9 == uVar9 >> 7) {
      puVar6 = (undefined1 *)register0x00000020;
      do {
        puVar18 = puVar6;
        *(int **)(puVar18 + -8) = piVar24;
        *(undefined8 *)(puVar18 + -0x10) = unaff_R13;
        *(undefined8 *)(puVar18 + -0x18) = unaff_RDI;
        lVar16 = -(longlong)param_9._4_4_;
        unaff_RDI = *(undefined8 *)(puVar18 + lVar16 + 0x988);
        unaff_R13 = *(undefined8 *)(puVar18 + lVar16 + 0x990);
        piVar24 = *(int **)(puVar18 + lVar16 + 0x998);
        uVar9 = (in_stack_000000a8 + 1) * in_stack_000000a8 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
        puVar6 = puVar18 + lVar16 + 0x9a0;
      } while (uVar9 != 0);
      lVar2 = unaff_R15[1];
      puVar8 = *(undefined8 **)(puVar18 + lVar16 + 0xa58);
      lVar3 = *(longlong *)(*(longlong *)(puVar18 + lVar16 + 0xa60) + 0x10);
      puVar4 = *(undefined8 **)(lVar2 + 0x20);
      cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
      puVar14 = puVar4;
      puVar13 = (undefined8 *)puVar4[1];
      while (cVar1 == '\0') {
        if ((longlong)puVar13[4] < lVar3) {
          puVar10 = (undefined8 *)puVar13[2];
          puVar13 = puVar14;
        }
        else {
          puVar10 = (undefined8 *)*puVar13;
        }
        puVar14 = puVar13;
        puVar13 = puVar10;
        cVar1 = *(char *)((longlong)puVar10 + 0x19);
      }
      if ((puVar14 == puVar4) || (lVar3 < (longlong)puVar14[4])) {
        puVar14 = puVar4;
      }
      if (puVar14 == puVar4) {
        *(undefined8 *)(puVar18 + lVar16 + 0x998) = 0x180a5aea3;
        FUN_180a3dd40();
        *puVar8 = 0;
      }
      else {
        for (plVar15 = *(longlong **)(lVar2 + 8);
            (plVar15 != *(longlong **)(lVar2 + 0x10) && (*plVar15 != lVar3)); plVar15 = plVar15 + 1)
        {
        }
        if (plVar15 == *(longlong **)(lVar2 + 0x10)) {
          lVar16 = -1;
        }
        else {
          lVar16 = (longlong)plVar15 - (longlong)*(longlong **)(lVar2 + 8) >> 3;
        }
        *puVar8 = *(undefined8 *)(unaff_R15[4] + lVar16 * 8);
      }
      return puVar8;
    }
    puVar8 = (undefined8 *)thunk_FUN_1805a9280();
    return puVar8;
  }
  puVar8 = (undefined8 *)FUN_180a5a5ba(0x5410);
  return puVar8;
}



############ FUN_ 1806ba570 size=1697 ############

/* WARNING: Instruction at (ram,0x0001806baa33) overlaps instruction at (ram,0x0001806baa30)
    */
/* WARNING: Removing unreachable block (ram,0x0001806baa30) */
/* WARNING: Removing unreachable block (ram,0x0001806ba943) */
/* WARNING: Removing unreachable block (ram,0x0001806ba5f1) */
/* WARNING: Removing unreachable block (ram,0x0001806ba5a8) */
/* WARNING: Removing unreachable block (ram,0x0001806ba607) */
/* WARNING: Removing unreachable block (ram,0x0001806ba9d8) */
/* WARNING: Removing unreachable block (ram,0x0001806bac5f) */

void FUN_1806ba570(longlong param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  ulonglong uVar4;
  int *piVar5;
  int *piVar6;
  undefined1 *puVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  puVar7 = auStack_58;
  uVar9 = (uint)&stack0x00000000 & 0x4ff;
  uVar9 = ((uVar9 + 1) * uVar9 + 7) % 0x51;
  uVar9 = (int)(-uVar9 | uVar9) >> 0x1f & 0x9a3bU ^ 0x935b;
  uVar1 = (((uint)(DAT_181420ec0 * 0x401) >> 6 ^ DAT_181420ec0 * 0x401) + DAT_181420ec4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ec8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ecc) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ed0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ed4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ed8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420edc) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ee0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ee4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420ee8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_181420eec) * 0x401;
  piVar5 = &DAT_181420ef0;
  do {
    uVar9 = ~((uVar9 ^ 0xffffffff) + 1) + 1;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  lVar3 = 0xb;
  uVar1 = (DAT_181420ef0 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  do {
    uVar1 = ((uVar1 >> 6 ^ uVar1) + piVar5[1]) * 0x401;
    piVar6 = piVar5 + 2;
    piVar5 = piVar5 + 3;
    uVar1 = ((uVar1 >> 6 ^ uVar1) + *piVar6) * 0x401;
    uVar1 = ((uVar1 >> 6 ^ uVar1) + *piVar5) * 0x401;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
  uVar1 = uVar1 ^ uVar1 >> 6;
  uVar2 = uVar1 & 0x3f;
  uVar10 = ((uVar2 + 2) * (uVar2 + 1) * uVar2) % 3 -
           ((uVar1 & 0x16ff) * (uVar1 & 0x16ff) * 0x10 + 4) % 0x13;
  uVar2 = (uint)piVar5 & 0x16ff;
  uVar2 = (uVar2 * uVar2 * 0x10 + 4) % 0x13;
  lVar3 = ((longlong)(((int)(-uVar2 | uVar2) >> 0x1f) * -0xa2dd) ^ 0xa3ddU) -
          ((longlong)(((int)(-uVar10 | uVar10) >> 0x1f) * -0x5d9a) ^ 0x5c9aU);
  uVar1 = (*(int *)((longlong)piVar5 + lVar3 + 4) + uVar1) * 0x401;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (*(int *)((longlong)piVar5 + lVar3 + 8) + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = uVar1 ^ uVar1 >> 6;
  uVar8 = (ulonglong)uVar1;
  piVar5 = (int *)((longlong)piVar5 + lVar3 + 0xc);
  do {
    FUN_1806bc6f0();
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  lVar3 = 7;
  uVar1 = (*piVar5 + uVar1) * 0x401;
  do {
    piVar6 = piVar5;
    uVar1 = ((uVar1 >> 6 ^ uVar1) + piVar6[1]) * 0x401;
    uVar1 = ((uVar1 >> 6 ^ uVar1) + piVar6[2]) * 0x401;
    lVar3 = lVar3 + -1;
    piVar5 = piVar6 + 2;
  } while (lVar3 != 0);
  uVar1 = ((uVar1 >> 6 ^ uVar1) + piVar6[3]) * 0x401;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (uVar1 ^ uVar1 >> 6) + 0x3a16ca2a;
  uVar1 = (uVar1 >> 3 | uVar1 * 0x20000000) + 0x10e0bea2;
  uVar4 = (ulonglong)uVar1;
  if ((uVar1 & 0xbf3a5f2c | ~uVar1 & 0x40c5a0d3) * 9 == 0) {
    if (param_2 < 4) {
      *(uint *)(param_1 + 0x194) = param_2;
    }
    do {
      *(ulonglong *)(puVar7 + -8) = uVar8;
      *(longlong *)(puVar7 + -0x10) = param_1;
      *(ulonglong *)(puVar7 + -0x18) = uVar4;
      lVar3 = -(longlong)(int)uVar9;
      uVar4 = *(ulonglong *)(puVar7 + lVar3 + 0x948);
      param_1 = *(longlong *)(puVar7 + lVar3 + 0x950);
      uVar8 = *(ulonglong *)(puVar7 + lVar3 + 0x958);
      puVar7 = puVar7 + lVar3 + 0x960;
      uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar1 < 0) {
        uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar1 != 0);
    return;
  }
  if (3 < param_2) {
    *(uint *)(param_1 + 0x194) = param_2;
  }
  FUN_1806bb573();
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 18080a7f0 size=2240 ############

/* WARNING: Instruction at (ram,0x00018080ae70) overlaps instruction at (ram,0x00018080ae6f)
    */
/* WARNING: Removing unreachable block (ram,0x00018080afdd) */
/* WARNING: Removing unreachable block (ram,0x00018080aec2) */
/* WARNING: Removing unreachable block (ram,0x00018080a88c) */
/* WARNING: Removing unreachable block (ram,0x00018080aed9) */
/* WARNING: Removing unreachable block (ram,0x00018080ae70) */
/* WARNING: Removing unreachable block (ram,0x00018080aa64) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_18080a7f0(ulonglong param_1)

{
  ulonglong uVar1;
  undefined8 uVar2;
  uint uVar3;
  uint uVar4;
  longlong lVar5;
  undefined1 *puVar6;
  ulonglong uVar7;
  longlong unaff_R13;
  longlong lVar8;
  uint uVar9;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  puVar6 = auStack_58;
  uVar7 = 0x4626107;
  uVar9 = 0x370;
  uVar2 = 0;
  lVar5 = 0x180000000;
  do {
    lVar8 = unaff_R13 + lVar5;
    unaff_R13 = (lVar5 - lVar8 ^ 0xffffffffffffffffU) + 1;
    lVar5 = lVar8 - unaff_R13;
    uVar7 = ~((uVar7 ^ 0xffffffffffffffff) + 1) + 1;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = (((uint)(DAT_1811c4ce8 * 0x401) >> 6 ^ DAT_1811c4ce8 * 0x401) + DAT_1811c4cec) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4cf0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4cf4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4cf8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4cfc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d00) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d04) * 0x401;
  do {
    register0x00000020 =
         (BADSPACEBASE *)((~(ulonglong)register0x00000020 + 1 ^ 0xffffffffffffffff) + 1);
    uVar4 = (*(uint *)register0x00000020 + 1) * *(uint *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (DAT_1811c4d08 + (uVar3 ^ uVar3 >> 6)) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d0c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d10) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d14) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d18) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d1c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d20) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d24) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d28) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d2c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d30) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d34) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d38) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d3c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d40) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d44) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d48) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d4c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d50) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d54) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d58) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d5c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d60) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d64) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d68) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d6c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d70) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d74) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d78) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d7c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d80) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d84) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d88) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d8c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d90) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d94) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d98) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4d9c) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4da0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4da4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4da8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dac) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4db0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4db4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4db8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dbc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dc0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dc4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dc8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dcc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dd0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dd4) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4dd8) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4ddc) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4de0) * 0x401;
  uVar3 = ((uVar3 >> 6 ^ uVar3) + DAT_1811c4de4) * 0x401;
  uVar3 = uVar3 ^ uVar3 >> 6;
  do {
    uVar4 = (*(uint *)register0x00000020 + 1) * *(uint *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar1 = 0x994dc2f50d65aedf;
                    /* WARNING: Ignoring partial resolution of indirect */
  do {
    lVar5 = (uVar1 + lVar5) - (~(lVar5 - (uVar1 + lVar5)) + 1);
    register0x00000020 = (BADSPACEBASE *)(~-(longlong)register0x00000020 + 1);
    uVar9 = -((uVar9 ^ 0xffffffff) + 1);
    uVar4 = *(uint *)register0x00000020;
    uVar1 = (ulonglong)uVar4;
    uVar4 = (uVar4 + 1) * uVar4 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = ~(~((uVar3 << 0x1f | uVar3 >> 1) ^ 0x3638c3d8) ^ 0x5e51c7ab) + 0xf6ca5e9f ^ 0xd65aedf;
  if ((uVar3 & 0x1ffffff) == 0 && uVar3 == 0) {
    do {
      *(undefined8 *)(puVar6 + -8) = 0x18080afb8;
      lVar5 = 0x990;
      FUN_18080c628();
      *(undefined8 *)(puVar6 + -8) = uVar2;
      *(BADSPACEBASE **)(puVar6 + -0x10) = register0x00000020;
      *(ulonglong *)(puVar6 + -0x18) = uVar7;
      lVar5 = -lVar5;
      uVar7 = *(ulonglong *)(puVar6 + lVar5 + 0x978);
      register0x00000020 = *(BADSPACEBASE **)(puVar6 + lVar5 + 0x980);
      uVar2 = *(undefined8 *)(puVar6 + lVar5 + 0x988);
      puVar6 = puVar6 + lVar5 + 0x990;
      uVar9 = (*(uint *)register0x00000020 + 1) * *(uint *)register0x00000020 & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    if ((0x7fffffff00000000 < (longlong)param_1) && (param_1 < 0x8000000000000000)) {
      return 1;
    }
    return 0;
  }
  uVar2 = thunk_FUN_1805a9280((longlong)(int)uVar9,lVar5,uVar7,0);
  return uVar2;
}



############ FUN_ 180a09810 size=2328 ############

/* WARNING: Removing unreachable block (ram,0x000180a09bbe) */
/* WARNING: Removing unreachable block (ram,0x000180a098c8) */
/* WARNING: Removing unreachable block (ram,0x000180a09b91) */
/* WARNING: Removing unreachable block (ram,0x000180a0a0ae) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_180a09810(ulonglong param_1,uint param_2,undefined4 *param_3,longlong param_4)

{
  undefined1 *puVar1;
  uint uVar2;
  undefined8 uVar3;
  uint uVar4;
  longlong lVar5;
  undefined1 *puVar6;
  uint uVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  int unaff_retaddr;
  undefined1 auStack_78 [32];
  uint local_58;
  undefined4 uStack_54;
  undefined *local_50;
  undefined *local_48;
  undefined8 local_40;
  
  uVar4 = (uint)&stack0x00000000 & 0x47ff;
  uVar3 = 0xc00;
  if (((uVar4 * uVar4 + 1) % 7 & 0x15) == 0) {
    uVar4 = (uint)&stack0x00000000 & 0x23f;
    uVar4 = ((uVar4 + 2) * (uVar4 + 1) * uVar4) % 3;
  }
  else {
    uVar4 = 0;
  }
  local_48 = &UNK_1815c9ac0;
  local_50 = &UNK_1815c9bc0;
  local_40 = 0x100;
  uVar7 = (_UNK_1815c9adc ^
          (_UNK_1815c9ad8 ^
          (_UNK_1815c9ad4 ^
          (_UNK_1815c9ad0 ^
          (_UNK_1815c9acc ^
          (_UNK_1815c9ac8 ^ (_UNK_1815c9ac4 ^ (_UNK_1815c9ac0 ^ 0x811c9e53) * 0x10001d1) * 0x10001d1
          ) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1;
  uVar2 = uVar7 & 0x22ff;
  uVar2 = ((uVar2 + 1) * uVar2 + 7) % 0x51 | 1;
  lVar5 = -((longlong)(((int)(-uVar2 | uVar2) >> 0x1f) * -0xf684) ^ 0xf6a4U);
  lVar10 = lVar5 + 0x5c;
  uVar11 = (ulonglong)((uint)lVar10 & 0x3bff);
  uVar2 = (*(uint *)(&UNK_1815c9b1c + lVar5) ^
          (*(uint *)(&UNK_1815c9b18 + lVar5) ^
          (*(uint *)(&UNK_1815c9b14 + lVar5) ^
          (*(uint *)(&UNK_1815c9b10 + lVar5) ^
          (*(uint *)(&UNK_1815c9b0c + lVar5) ^
          (*(uint *)(&UNK_1815c9b08 + lVar5) ^
          (*(uint *)(&UNK_1815c9b04 + lVar5) ^
          (*(uint *)(&UNK_1815c9b00 + lVar5) ^ uVar7) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1;
  uVar7 = uVar2 & 0x30ff;
  lVar5 = (0x18 - ((longlong)(int)(0x7953 - ((uVar7 + 1) * uVar7 & 0x80000001)) ^ 0x794bU)) + lVar10
  ;
  do {
    param_1 = -((param_1 ^ 0xffffffffffffffff) + 1);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_58 = (*(uint *)(&UNK_1815c9ae0 + lVar5) ^
             (*(uint *)(&UNK_1815c9adc + lVar5) ^
             (*(uint *)(&UNK_1815c9ad8 + lVar5) ^
             (*(uint *)(&UNK_1815c9ad4 + lVar5) ^
             (*(uint *)(&UNK_1815c9ad0 + lVar5) ^
             (*(uint *)(&UNK_1815c9acc + lVar5) ^
             (*(uint *)(&UNK_1815c9ac8 + lVar5) ^
             (*(uint *)(&UNK_1815c9ac4 + lVar5) ^ uVar2) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
             0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1;
  uStack_54 = 0;
  do {
    func_0x000180a08dde(0xc314);
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  local_48 = (undefined *)0x4209bd110f0ab215;
  local_50 = (undefined *)CONCAT44(local_50._4_4_,0xf0ab215);
  uVar2 = (*(uint *)(&UNK_1815c9b5c + lVar5) ^
          (*(uint *)(&UNK_1815c9b58 + lVar5) ^
          (*(uint *)(&UNK_1815c9b54 + lVar5) ^
          (*(uint *)(&UNK_1815c9b50 + lVar5) ^
          (*(uint *)(&UNK_1815c9b4c + lVar5) ^
          (*(uint *)(&UNK_1815c9b48 + lVar5) ^
          (*(uint *)(&UNK_1815c9b44 + lVar5) ^
          (*(uint *)(&UNK_1815c9b40 + lVar5) ^
          (*(uint *)(&UNK_1815c9b3c + lVar5) ^
          (*(uint *)(&UNK_1815c9b38 + lVar5) ^
          (*(uint *)(&UNK_1815c9b34 + lVar5) ^
          (*(uint *)(&UNK_1815c9b30 + lVar5) ^
          (*(uint *)(&UNK_1815c9b2c + lVar5) ^
          (*(uint *)(&UNK_1815c9b28 + lVar5) ^
          (*(uint *)(&UNK_1815c9b24 + lVar5) ^
          (*(uint *)(&UNK_1815c9b20 + lVar5) ^
          (*(uint *)(&UNK_1815c9b1c + lVar5) ^
          (*(uint *)(&UNK_1815c9b18 + lVar5) ^
          (*(uint *)(&UNK_1815c9b14 + lVar5) ^
          (*(uint *)(&UNK_1815c9b10 + lVar5) ^
          (*(uint *)(&UNK_1815c9b0c + lVar5) ^
          (*(uint *)(&UNK_1815c9b08 + lVar5) ^
          (*(uint *)(&UNK_1815c9b04 + lVar5) ^
          (*(uint *)(&UNK_1815c9b00 + lVar5) ^
          (*(uint *)(&UNK_1815c9afc + lVar5) ^
          (*(uint *)(&UNK_1815c9af8 + lVar5) ^
          (*(uint *)(&UNK_1815c9af4 + lVar5) ^
          (*(uint *)(&UNK_1815c9af0 + lVar5) ^
          (*(uint *)(&UNK_1815c9aec + lVar5) ^
          (*(uint *)(&UNK_1815c9ae8 + lVar5) ^
          (*(uint *)(&UNK_1815c9ae4 + lVar5) ^ local_58) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
          0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1) * 0x10001d1;
  _local_58 = CONCAT44(uStack_54,uVar2);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = (uint)local_40 & 0x11ff;
  uVar8 = (*(uint *)(&UNK_1815c9b60 + lVar5) ^ uVar2) * 0x10001d1;
  uVar9 = (ulonglong)uVar8;
  uVar7 = (uVar7 * uVar7 * 0x10 + 4) % 0x13 | (uint)local_40;
  uVar2 = (uint)(lVar5 + 0xa0) & 0x6f;
  lVar5 = (((longlong)(ulonglong)(uVar2 * uVar2 * (uVar2 + 1) * (uVar2 + 1) & 2) >>
            ((byte)uVar8 & 0x1f) | 0x4d5dU) ^ 0x4ddd) +
          ((ulonglong)((int)(-uVar7 | uVar7) >> 0x1f & 0xc0bd) ^ 0xffffffffffff3f39) + lVar5 + 0xa0;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = (((*(uint *)(&UNK_1815c9ad4 + lVar5) ^
            (*(uint *)(&UNK_1815c9ad0 + lVar5) ^
            (*(uint *)(&UNK_1815c9acc + lVar5) ^
            (*(uint *)(&UNK_1815c9ac8 + lVar5) ^
            (*(uint *)(&UNK_1815c9ac4 + lVar5) ^
            (*(uint *)(&UNK_1815c9ac0 + lVar5) ^ uVar8) * 0x10001d1) * 0x10001d1) * 0x10001d1) *
            0x10001d1) * 0x10001d1) * 0x10001d1 ^ *(uint *)(&UNK_1815c9ad8 + lVar5)) * 0x10001d1 ^
          *(uint *)(&UNK_1815c9adc + lVar5)) * 0x10001d1 + 0x4a95a02a;
  if ((char)(((uVar2 * 0x4000000 | uVar2 >> 6) == 0xf0f54dea) * ';') != '\0') {
    puVar1 = auStack_78;
    do {
      puVar6 = puVar1;
      *(longlong *)(puVar6 + -8) = lVar10;
      *(ulonglong *)(puVar6 + -0x10) = uVar11;
      *(undefined8 *)(puVar6 + -0x18) = uVar3;
      uVar9 = -((uVar9 ^ 0xffffffffffffffff) + 1);
      lVar5 = -(longlong)(int)((uVar4 | 0xf1fc) ^ 0xf78c);
      uVar3 = *(undefined8 *)(puVar6 + lVar5 + 0x658);
      uVar11 = *(ulonglong *)(puVar6 + lVar5 + 0x660);
      lVar10 = *(longlong *)(puVar6 + lVar5 + 0x668);
      uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
      puVar1 = puVar6 + lVar5 + 0x670;
    } while (uVar2 != 0);
    if (((param_1 == 0) || (param_3 == (undefined4 *)0x0)) || (param_4 == 0)) {
      uVar3 = 99;
    }
    else if (param_2 < 0x11) {
      if (param_2 < 9) {
        *(undefined8 *)(puVar6 + lVar5 + 0x668) = 0x180a0a267;
        uVar3 = FUN_180a08b60(param_1,param_2,param_4,uVar9);
        if ((int)uVar3 == 0) {
          *param_3 = 0;
        }
      }
      else {
        *(undefined8 *)(puVar6 + lVar5 + 0x668) = 0x180a0a282;
        uVar3 = FUN_180a08b60((param_2 - 8) + param_1,8,param_4,uVar9);
        if ((int)uVar3 == 0) {
          *(undefined8 *)(puVar6 + lVar5 + 0x668) = 0x180a0a293;
          uVar3 = FUN_180a08b60(param_1,param_2 - 8,param_3);
        }
      }
    }
    else {
      uVar3 = 0x157;
    }
    return uVar3;
  }
  func_0x000180a0aa00();
  uVar3 = thunk_FUN_1805a9280();
  return uVar3;
}



############ FUN_ 180679d10 size=3586 ############

/* WARNING: Instruction at (ram,0x00018067a6ce) overlaps instruction at (ram,0x00018067a6ca)
    */
/* WARNING: Removing unreachable block (ram,0x00018067a7ca) */
/* WARNING: Removing unreachable block (ram,0x00018067a11d) */
/* WARNING: Removing unreachable block (ram,0x000180679d81) */
/* WARNING: Removing unreachable block (ram,0x000180679e6e) */
/* WARNING: Removing unreachable block (ram,0x00018067a77a) */
/* WARNING: Removing unreachable block (ram,0x00018067aa71) */
/* WARNING: Removing unreachable block (ram,0x00018067a789) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180679d10(undefined8 *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  HANDLE hObject;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  longlong *plVar25;
  code *pcVar26;
  char cVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  char *pcVar36;
  byte bVar37;
  uint uVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  ulonglong uVar42;
  ulonglong uVar43;
  undefined1 *puVar44;
  ulonglong *puVar45;
  undefined1 *puVar46;
  longlong lVar47;
  longlong lVar48;
  uint *puVar49;
  uint *puVar50;
  uint uVar51;
  uint uVar52;
  uint uVar53;
  uint uVar54;
  undefined1 *puVar55;
  undefined1 *puVar56;
  ulonglong uVar57;
  int unaff_retaddr;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  
  puVar44 = auStack_78;
  local_58 = 0xfffffffffffffffe;
  *param_1 = pace::AuthorizationVerifier::vftable;
  uVar53 = (uint)&stack0x00000000 & 0x71ff;
  uVar53 = (uVar53 * uVar53 + 1) % 7;
  if (((ulonglong)&stack0x00000000 & 0x140) == 0) {
    uVar51 = (uint)&stack0x00000000 & 0x1ff;
    uVar51 = (uVar51 * uVar51 + 1) % 7;
    uVar51 = ((int)(-uVar51 | uVar51) >> 0x1f) * -0xba3c;
  }
  else {
    uVar51 = 0xba3c;
  }
  uVar57 = (ulonglong)(uVar51 ^ 0xb2dc);
  uVar54 = ((uint)(DAT_18144e7ec * 0x5bd1e995) >> 0x18 ^ DAT_18144e7ec * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7e8 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7e8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7e4 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7e4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7e0 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7e0 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7dc * 0x5bd1e995) >> 0x18 ^ DAT_18144e7dc * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7d8 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7d8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7d4 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7d4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7d0 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7d0 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7cc * 0x5bd1e995) >> 0x18 ^ DAT_18144e7cc * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(DAT_18144e7c8 * 0x5bd1e995) >> 0x18 ^ DAT_18144e7c8 * 0x5bd1e995) * 0x5bd1e995 ^
           0xb69f0f5d) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
  uVar28 = uVar54 & 0x3f;
  lVar47 = (longlong)
           (int)(((int)((uVar28 + 1) * (uVar28 + 1) * uVar28 * uVar28 & 0x80000003) >>
                 ((byte)uVar54 & 0x1f)) + 0x8720U ^ 0x87e0);
  lVar48 = lVar47 + -0x98;
  uVar28 = ((uint)(*(int *)(&UNK_18144e730 + lVar47) * 0x5bd1e995) >> 0x18 ^
           *(int *)(&UNK_18144e730 + lVar47) * 0x5bd1e995) * 0x5bd1e995 ^ uVar54 * 0x5bd1e995;
  if ((((uVar28 & 0x4ff) * (uVar28 & 0x4ff) * 0x10 + 4) % 0x13 & 0xbc) == 0) {
    bVar37 = ((char)uVar28 + -1) * (char)uVar28 & 1;
  }
  else {
    bVar37 = (byte)lVar48 & 0x6f;
    bVar37 = (bVar37 + 1) * (bVar37 + 1) * bVar37 * bVar37 & 2;
  }
  puVar49 = (uint *)(lVar48 + ((longlong)(0x21c6 << bVar37) ^ 0x21c2U));
  uVar54 = puVar49[0x605139f2];
  puVar55 = (undefined1 *)register0x00000020;
  do {
    uVar42 = 0xc33c;
                    /* WARNING: Call to offcut address within same function */
    lVar47 = func_0x00018067a32b();
    uVar38 = (uint)uVar42;
    if ((lVar47 < 0x647f058f) || ((uVar42 & 0xdf00) != 0)) {
      func_0x00018067b2ce();
      uVar38 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar38 < 0) goto code_r0x00018067a230;
    }
    else {
      uVar29 = (int)lVar47 + 0xe890fb92;
      pcVar36 = (char *)(ulonglong)uVar29;
      *pcVar36 = *pcVar36 + (char)uVar29 + (uVar29 < *puVar49);
      DAT_a45ee9da = DAT_a45ee9da + (char)uVar42;
      puVar49[1] = puVar49[1] + uVar38;
      puVar49 = puVar49 + 2;
      *pcVar36 = *pcVar36 + (char)uVar29;
code_r0x00018067a230:
      uVar38 = (uVar38 - 1 | 0xfffffffe) + 1;
    }
    if (uVar38 == 0) {
      uVar38 = puVar49[0x605139f3];
      *(undefined1 *)((longlong)param_1 + 0x59) = 1;
      uVar29 = puVar49[0x605139f4];
      uVar30 = puVar49[0x605139f5];
      uVar31 = puVar49[0x605139f6];
      uVar32 = puVar49[0x605139f7];
      uVar33 = puVar49[0x605139f8];
      uVar34 = puVar49[0x605139f9];
      uVar35 = puVar49[0x605139fa];
      uVar52 = puVar49[0x605139fb];
      uVar4 = puVar49[0x605139fc];
      uVar5 = puVar49[0x605139fd];
      uVar6 = puVar49[0x605139fe];
      puVar50 = puVar49 + 0xd;
      uVar7 = puVar49[0x605139ff];
      uVar8 = puVar49[0x60513a00];
      do {
        puVar56 = puVar55 + (longlong)param_1;
        puVar55 = (undefined1 *)(~((longlong)param_1 - (longlong)puVar56) + 1);
        param_1 = (undefined8 *)(puVar56 + -(longlong)puVar55);
        uVar39 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar39 < 0) {
          uVar39 = (uVar39 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar39 != 0);
      uVar39 = puVar49[0x60513a01];
      uVar9 = puVar49[0x60513a02];
      uVar10 = puVar49[0x60513a03];
      uVar11 = puVar49[0x60513a04];
      uVar12 = puVar49[0x60513a05];
      uVar13 = puVar49[0x60513a06];
      do {
        uVar40 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar40 < 0) {
          uVar40 = (uVar40 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar40 != 0);
      uVar40 = puVar49[0x60513a07];
      uVar14 = puVar49[0x60513a08];
      uVar15 = puVar49[0x60513a09];
      uVar16 = puVar49[0x60513a0a];
      uVar17 = puVar49[0x60513a0b];
      uVar18 = puVar49[0x60513a0c];
      uVar19 = puVar49[0x60513a0d];
      uVar20 = puVar49[0x60513a0e];
      uVar21 = puVar49[0x60513a0f];
      uVar22 = puVar49[0x60513a10];
      uVar23 = puVar49[0x60513a11];
      uVar24 = puVar49[0x60513a12];
      do {
        uVar42 = 0xc33c;
        *(undefined8 *)(puVar44 + -8) = 0x18067a6ba;
        cVar27 = FUN_18067ba63();
        if ((uVar42 & 0xc1) != 0) {
          *(char *)puVar50 = cVar27 + -0x48;
          puVar50 = (uint *)((longlong)puVar50 + 2);
          puVar45 = (ulonglong *)(puVar44 + -8);
          puVar44 = puVar44 + -8;
          *puVar45 = uVar42;
        }
        *(undefined8 *)(puVar44 + -8) = 0x18067a6df;
        FUN_18067aaba();
        uVar41 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar41 < 0) {
          uVar41 = (uVar41 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar41 != 0);
      uVar52 = (puVar50[0x60513a09] * 0x5bd1e995 >> 0x18 ^ puVar50[0x60513a09] * 0x5bd1e995) *
               0x5bd1e995 ^
               ((puVar50[0x60513a08] * 0x5bd1e995 >> 0x18 ^ puVar50[0x60513a08] * 0x5bd1e995) *
                0x5bd1e995 ^
               ((puVar50[0x60513a07] * 0x5bd1e995 >> 0x18 ^ puVar50[0x60513a07] * 0x5bd1e995) *
                0x5bd1e995 ^
               ((puVar50[0x60513a06] * 0x5bd1e995 >> 0x18 ^ puVar50[0x60513a06] * 0x5bd1e995) *
                0x5bd1e995 ^
               ((uVar24 * 0x5bd1e995 >> 0x18 ^ uVar24 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar23 * 0x5bd1e995 >> 0x18 ^ uVar23 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar22 * 0x5bd1e995 >> 0x18 ^ uVar22 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar21 * 0x5bd1e995 >> 0x18 ^ uVar21 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar20 * 0x5bd1e995 >> 0x18 ^ uVar20 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar19 * 0x5bd1e995 >> 0x18 ^ uVar19 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar18 * 0x5bd1e995 >> 0x18 ^ uVar18 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar17 * 0x5bd1e995 >> 0x18 ^ uVar17 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar16 * 0x5bd1e995 >> 0x18 ^ uVar16 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar15 * 0x5bd1e995 >> 0x18 ^ uVar15 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar14 * 0x5bd1e995 >> 0x18 ^ uVar14 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar40 * 0x5bd1e995 >> 0x18 ^ uVar40 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar13 * 0x5bd1e995 >> 0x18 ^ uVar13 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar12 * 0x5bd1e995 >> 0x18 ^ uVar12 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar11 * 0x5bd1e995 >> 0x18 ^ uVar11 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar10 * 0x5bd1e995 >> 0x18 ^ uVar10 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar9 * 0x5bd1e995 >> 0x18 ^ uVar9 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar39 * 0x5bd1e995 >> 0x18 ^ uVar39 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar8 * 0x5bd1e995 >> 0x18 ^ uVar8 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar7 * 0x5bd1e995 >> 0x18 ^ uVar7 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar6 * 0x5bd1e995 >> 0x18 ^ uVar6 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar5 * 0x5bd1e995 >> 0x18 ^ uVar5 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar4 * 0x5bd1e995 >> 0x18 ^ uVar4 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar52 * 0x5bd1e995 >> 0x18 ^ uVar52 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar35 * 0x5bd1e995 >> 0x18 ^ uVar35 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar34 * 0x5bd1e995 >> 0x18 ^ uVar34 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar33 * 0x5bd1e995 >> 0x18 ^ uVar33 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar32 * 0x5bd1e995 >> 0x18 ^ uVar32 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar31 * 0x5bd1e995 >> 0x18 ^ uVar31 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar30 * 0x5bd1e995 >> 0x18 ^ uVar30 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar29 * 0x5bd1e995 >> 0x18 ^ uVar29 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar38 * 0x5bd1e995 >> 0x18 ^ uVar38 * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar54 * 0x5bd1e995 >> 0x18 ^ uVar54 * 0x5bd1e995) * 0x5bd1e995 ^
               uVar28 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995;
      uVar42 = (ulonglong)uVar52;
      uVar28 = (int)puVar50 + 0x5cU & 0x38ff;
      lVar47 = (longlong)puVar50 +
               (((longlong)(int)(((uVar28 + 1) * uVar28 & 0x80000001) + 0x634b) ^ 0x624bU) - 0xa0);
      uVar28 = *(int *)(lVar47 + 0x18144e7c8) * 0x5bd1e995;
      uVar54 = *(int *)(lVar47 + 0x18144e7cc) * 0x5bd1e995;
      uVar38 = *(int *)(lVar47 + 0x18144e7d0) * 0x5bd1e995;
      uVar29 = *(int *)(lVar47 + 0x18144e7d4) * 0x5bd1e995;
      uVar30 = *(int *)(lVar47 + 0x18144e7d8) * 0x5bd1e995;
      uVar31 = *(int *)(lVar47 + 0x18144e7dc) * 0x5bd1e995;
      *(undefined8 *)(puVar44 + 0x80) = 0x670e8a3d65a057ed;
      *(int *)(puVar44 + 0x80) = (int)*(undefined8 *)(puVar44 + 0x80);
      uVar32 = *(int *)(lVar47 + 0x18144e7e0) * 0x5bd1e995;
      uVar33 = *(int *)(lVar47 + 0x18144e7e4) * 0x5bd1e995;
      uVar34 = *(int *)(lVar47 + 0x18144e7e8) * 0x5bd1e995;
      uVar35 = *(int *)(lVar47 + 0x18144e7ec) * 0x5bd1e995;
      uVar28 = ((uint)(*(int *)(&DAT_18144e7f8 + lVar47) * 0x5bd1e995) >> 0x18 ^
               *(int *)(&DAT_18144e7f8 + lVar47) * 0x5bd1e995) * 0x5bd1e995 ^
               (((uint)(*(int *)(&DAT_18144e7f4 + lVar47) * 0x5bd1e995) >> 0x18 ^
                *(int *)(&DAT_18144e7f4 + lVar47) * 0x5bd1e995) * 0x5bd1e995 ^
               (((uint)(*(int *)(&DAT_18144e7f0 + lVar47) * 0x5bd1e995) >> 0x18 ^
                *(int *)(&DAT_18144e7f0 + lVar47) * 0x5bd1e995) * 0x5bd1e995 ^
               ((uVar35 >> 0x18 ^ uVar35) * 0x5bd1e995 ^
               ((uVar34 >> 0x18 ^ uVar34) * 0x5bd1e995 ^
               ((uVar33 >> 0x18 ^ uVar33) * 0x5bd1e995 ^
               ((uVar32 >> 0x18 ^ uVar32) * 0x5bd1e995 ^
               ((uVar31 >> 0x18 ^ uVar31) * 0x5bd1e995 ^
               ((uVar30 >> 0x18 ^ uVar30) * 0x5bd1e995 ^
               ((uVar29 >> 0x18 ^ uVar29) * 0x5bd1e995 ^
               ((uVar38 >> 0x18 ^ uVar38) * 0x5bd1e995 ^
               ((uVar54 >> 0x18 ^ uVar54) * 0x5bd1e995 ^
               ((uVar28 >> 0x18 ^ uVar28) * 0x5bd1e995 ^ uVar52 * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
      do {
        register0x00000020 =
             (BADSPACEBASE *)-(((ulonglong)register0x00000020 ^ 0xffffffffffffffff) + 1);
        uVar54 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
        if ((int)uVar54 < 0) {
          uVar54 = (uVar54 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar54 != 0);
      uVar54 = ((uint)(*(int *)(&DAT_18144e800 + lVar47) * 0x5bd1e995) >> 0x18 ^
               *(int *)(&DAT_18144e800 + lVar47) * 0x5bd1e995) * 0x5bd1e995 ^
               (((uint)(*(int *)(&DAT_18144e7fc + lVar47) * 0x5bd1e995) >> 0x18 ^
                *(int *)(&DAT_18144e7fc + lVar47) * 0x5bd1e995) * 0x5bd1e995 ^ uVar28 * 0x5bd1e995)
               * 0x5bd1e995;
      uVar43 = (ulonglong)uVar54;
      uVar54 = uVar54 * 0x5bd1e995 ^
               ((uint)(*(int *)(&DAT_18144e804 + lVar47) * 0x5bd1e995) >> 0x18 ^
               *(int *)(&DAT_18144e804 + lVar47) * 0x5bd1e995) * 0x5bd1e995;
      uVar38 = uVar54 >> 6 | uVar54 << 0x1a;
      uVar54 = (uVar38 >> 8 ^ uVar38) & 0x1f;
      uVar38 = uVar38 ^ (uVar54 << 8 | uVar54);
      if ((char)(((uVar38 << 0x18 | uVar38 >> 8) == *(uint *)(puVar44 + 0x80)) * '\x15') != '\0') {
        if (*(char *)(param_1 + 0xb) == '\0') {
          *(undefined8 *)(puVar44 + -8) = 0x18067ab22;
          FUN_1806863a0(param_1);
        }
        puVar55 = puVar44;
        do {
          puVar46 = puVar55;
          *(undefined8 *)(puVar46 + -8) = 0x18067ab2e;
          lVar48 = (longlong)(int)(uVar51 ^ 0xb2dc);
          func_0x00018067963e();
          *(BADSPACEBASE **)(puVar46 + -8) = register0x00000020;
          *(ulonglong *)(puVar46 + -0x10) = uVar57;
          *(longlong *)(puVar46 + -0x18) = lVar47;
          lVar48 = -lVar48;
          lVar47 = *(longlong *)(puVar46 + lVar48 + 0x8c8);
          uVar57 = *(ulonglong *)(puVar46 + lVar48 + 0x8d0);
          register0x00000020 = *(BADSPACEBASE **)(puVar46 + lVar48 + 0x8d8);
          uVar53 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
          if ((int)uVar53 < 0) {
            uVar53 = (uVar53 - 1 | 0xfffffffe) + 1;
          }
          puVar55 = puVar46 + lVar48 + 0x8e0;
        } while (uVar53 != 0);
        *(undefined8 *)(puVar46 + lVar48 + 0x8d8) = 0x18067ac25;
        FUN_18067b6e0(param_1 + 0xc);
        plVar25 = (longlong *)param_1[10];
        if (plVar25 != (longlong *)0x0) {
          LOCK();
          plVar1 = plVar25 + 1;
          lVar47 = *plVar1;
          *(int *)plVar1 = (int)*plVar1 + -1;
          UNLOCK();
          if ((int)lVar47 == 1) {
            pcVar26 = *(code **)(*plVar25 + 8);
            *(undefined8 *)(puVar46 + lVar48 + 0x8d8) = 0x18067ac49;
            (*pcVar26)(plVar25);
            LOCK();
            piVar2 = (int *)((longlong)plVar25 + 0xc);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              pcVar26 = *(code **)(*plVar25 + 0x10);
              *(undefined8 *)(puVar46 + lVar48 + 0x8d8) = 0x18067ac5f;
              (*pcVar26)(plVar25);
            }
          }
        }
        LOCK();
        hObject = (HANDLE)param_1[5];
        param_1[5] = 0;
        UNLOCK();
        if (hObject != (HANDLE)0x0) {
          *(undefined8 *)(puVar46 + lVar48 + 0x8d8) = 0x18067ac72;
          CloseHandle(hObject);
        }
        plVar25 = (longlong *)param_1[2];
        if (plVar25 != (longlong *)0x0) {
          LOCK();
          plVar1 = plVar25 + 1;
          lVar47 = *plVar1;
          *(int *)plVar1 = (int)*plVar1 + -1;
          UNLOCK();
          if ((int)lVar47 == 1) {
            pcVar26 = *(code **)(*plVar25 + 8);
            *(undefined8 *)(puVar46 + lVar48 + 0x8d8) = 0x18067ac91;
            (*pcVar26)(plVar25);
            LOCK();
            piVar2 = (int *)((longlong)plVar25 + 0xc);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              pcVar26 = *(code **)(*plVar25 + 0x10);
              *(undefined8 *)(puVar46 + lVar48 + 0x8d8) = 0x18067aca5;
              (*pcVar26)(plVar25);
            }
          }
        }
        return;
      }
      if (*(char *)(param_1 + 0xb) != '\0') {
        *(undefined8 *)(puVar44 + -8) = 0x18067aa25;
        FUN_1806863a0(param_1);
      }
      *(ulonglong *)(puVar44 + -8) = uVar43;
      *(BADSPACEBASE **)(puVar44 + -0x10) = register0x00000020;
      *(ulonglong *)(puVar44 + -0x18) = (ulonglong)uVar28;
      thunk_FUN_1805a9280((int)(-uVar53 | uVar53) >> 0x1f & 0xc6edU ^ 0xc52d,thunk_FUN_1805a9280,
                          uVar42);
      return;
    }
  } while( true );
}



############ FUN_ 180a39dc0 size=2657 ############

/* WARNING: Instruction at (ram,0x000180a3a423) overlaps instruction at (ram,0x000180a3a421)
    */
/* WARNING: Removing unreachable block (ram,0x000180a3a7ee) */
/* WARNING: Removing unreachable block (ram,0x000180a3a41e) */
/* WARNING: Removing unreachable block (ram,0x000180a39ea5) */
/* WARNING: Removing unreachable block (ram,0x000180a39e6b) */
/* WARNING: Removing unreachable block (ram,0x000180a3a02a) */
/* WARNING: Removing unreachable block (ram,0x000180a3a762) */
/* WARNING: Removing unreachable block (ram,0x000180a3a3ad) */
/* WARNING: Removing unreachable block (ram,0x000180a39e24) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_180a39dc0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,ulonglong param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined8 *puVar12;
  undefined4 *puVar13;
  ulonglong uVar14;
  undefined1 *puVar15;
  undefined1 *puVar17;
  undefined4 *puVar18;
  undefined8 uVar19;
  int unaff_retaddr;
  undefined1 auStack_68 [40];
  undefined1 *puVar16;
  
  puVar15 = auStack_68;
  param_1[1] = param_3;
  *param_1 = license_services::LsObjectRelationVectorBase::vftable;
  param_1[3] = param_2;
  uVar10 = (uint)&stack0x00000000 & 0x34ff;
  *(char *)(param_1 + 2) = (char)param_4;
  puVar18 = (undefined4 *)(ulonglong)(((uVar10 + 1) * uVar10 + 7) % 0x51);
  uVar19 = 0x20;
  puVar11 = &DAT_1811cb71c;
  do {
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = (((uint)(_UNK_1811cb778 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb778 * 0x5bd1e995) * 0x5bd1e995
           ^ (((uint)(_UNK_1811cb774 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb774 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb770 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb770 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb76c * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb76c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb768 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb768 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb764 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb764 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb760 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb760 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb75c * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb75c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb758 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb758 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb754 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb754 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb750 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb750 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb74c * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb74c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb748 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb748 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb744 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb744 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb740 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb740 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb73c * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb73c * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb738 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb738 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(_UNK_1811cb734 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb734 * 0x5bd1e995) *
              0x5bd1e995 ^
             (((uint)(DAT_1811cb730 * 0x5bd1e995) >> 0x18 ^ DAT_1811cb730 * 0x5bd1e995) * 0x5bd1e995
             ^ (((uint)(DAT_1811cb72c * 0x5bd1e995) >> 0x18 ^ DAT_1811cb72c * 0x5bd1e995) *
                0x5bd1e995 ^
               (((uint)(DAT_1811cb728 * 0x5bd1e995) >> 0x18 ^ DAT_1811cb728 * 0x5bd1e995) *
                0x5bd1e995 ^
               (((uint)(DAT_1811cb724 * 0x5bd1e995) >> 0x18 ^ DAT_1811cb724 * 0x5bd1e995) *
                0x5bd1e995 ^
               (((uint)(DAT_1811cb720 * 0x5bd1e995) >> 0x18 ^ DAT_1811cb720 * 0x5bd1e995) *
                0x5bd1e995 ^
               (((uint)(DAT_1811cb71c * 0x5bd1e995) >> 0x18 ^ DAT_1811cb71c * 0x5bd1e995) *
                0x5bd1e995 ^ 0x374329a5) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
               0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
             0x5bd1e995) * 0x5bd1e995;
  uVar14 = (ulonglong)uVar10;
  puVar17 = (undefined1 *)
            (ulonglong)
            (((uint)(_UNK_1811cb780 * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb780 * 0x5bd1e995) *
             0x5bd1e995 ^
            (((uint)(_UNK_1811cb77c * 0x5bd1e995) >> 0x18 ^ _UNK_1811cb77c * 0x5bd1e995) *
             0x5bd1e995 ^ uVar10) * 0x5bd1e995);
  do {
    puVar13 = (undefined4 *)0xde0c;
                    /* WARNING: Call to offcut address within same function */
    *(undefined8 *)(puVar15 + -8) = 0x180a3a23a;
    func_0x000180a39f62();
    if (((ulonglong)puVar13 & 0xc2) != 0) {
      puVar16 = puVar15 + -8;
      *(undefined1 **)(puVar15 + -8) = puVar17;
      puVar15 = puVar15 + -0x8550;
      puVar17 = puVar16;
      puVar18 = puVar13;
      param_4 = uVar14;
      puVar11 = puVar13;
    }
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  iVar2 = puVar11[0x1a];
  iVar3 = puVar11[0x1b];
  iVar4 = puVar11[0x1c];
  iVar5 = puVar11[0x1d];
  iVar6 = puVar11[0x1e];
  iVar7 = puVar11[0x1f];
  iVar8 = puVar11[0x20];
  iVar9 = puVar11[0x21];
  *(undefined8 *)(puVar15 + 0x70) = 0xb85c414c216e5318;
  *(int *)(puVar15 + 0x88) = (int)*(undefined8 *)(puVar15 + 0x70);
  do {
    uVar10 = (*(int *)(puVar15 + 0x68) + 1) * *(int *)(puVar15 + 0x68) & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  piVar1 = (int *)(puVar15 + 0x68);
  do {
    uVar10 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = (((uint)(puVar11[0x3e] * 0x5bd1e995) >> 0x18 ^ puVar11[0x3e] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x3d] * 0x5bd1e995) >> 0x18 ^ puVar11[0x3d] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x3c] * 0x5bd1e995) >> 0x18 ^ puVar11[0x3c] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x3b] * 0x5bd1e995) >> 0x18 ^ puVar11[0x3b] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x3a] * 0x5bd1e995) >> 0x18 ^ puVar11[0x3a] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x39] * 0x5bd1e995) >> 0x18 ^ puVar11[0x39] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x38] * 0x5bd1e995) >> 0x18 ^ puVar11[0x38] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x37] * 0x5bd1e995) >> 0x18 ^ puVar11[0x37] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x36] * 0x5bd1e995) >> 0x18 ^ puVar11[0x36] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x35] * 0x5bd1e995) >> 0x18 ^ puVar11[0x35] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x34] * 0x5bd1e995) >> 0x18 ^ puVar11[0x34] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x33] * 0x5bd1e995) >> 0x18 ^ puVar11[0x33] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x32] * 0x5bd1e995) >> 0x18 ^ puVar11[0x32] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x31] * 0x5bd1e995) >> 0x18 ^ puVar11[0x31] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x30] * 0x5bd1e995) >> 0x18 ^ puVar11[0x30] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x2f] * 0x5bd1e995) >> 0x18 ^ puVar11[0x2f] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x2e] * 0x5bd1e995) >> 0x18 ^ puVar11[0x2e] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x2d] * 0x5bd1e995) >> 0x18 ^ puVar11[0x2d] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x2c] * 0x5bd1e995) >> 0x18 ^ puVar11[0x2c] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x2b] * 0x5bd1e995) >> 0x18 ^ puVar11[0x2b] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x2a] * 0x5bd1e995) >> 0x18 ^ puVar11[0x2a] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x29] * 0x5bd1e995) >> 0x18 ^ puVar11[0x29] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x28] * 0x5bd1e995) >> 0x18 ^ puVar11[0x28] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x27] * 0x5bd1e995) >> 0x18 ^ puVar11[0x27] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x26] * 0x5bd1e995) >> 0x18 ^ puVar11[0x26] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x25] * 0x5bd1e995) >> 0x18 ^ puVar11[0x25] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x24] * 0x5bd1e995) >> 0x18 ^ puVar11[0x24] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x23] * 0x5bd1e995) >> 0x18 ^ puVar11[0x23] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(puVar11[0x22] * 0x5bd1e995) >> 0x18 ^ puVar11[0x22] * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar9 * 0x5bd1e995) >> 0x18 ^ iVar9 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar8 * 0x5bd1e995) >> 0x18 ^ iVar8 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar7 * 0x5bd1e995) >> 0x18 ^ iVar7 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar6 * 0x5bd1e995) >> 0x18 ^ iVar6 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar5 * 0x5bd1e995) >> 0x18 ^ iVar5 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar4 * 0x5bd1e995) >> 0x18 ^ iVar4 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar3 * 0x5bd1e995) >> 0x18 ^ iVar3 * 0x5bd1e995) * 0x5bd1e995 ^
           (((uint)(iVar2 * 0x5bd1e995) >> 0x18 ^ iVar2 * 0x5bd1e995) * 0x5bd1e995 ^
           (int)puVar17 * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995) *
           0x5bd1e995) * 0x5bd1e995) * 0x5bd1e995;
  if (((((((uint)(puVar11[0x3f] * 0x5bd1e995) >> 0x18 ^ puVar11[0x3f] * 0x5bd1e995) * 0x5bd1e995 ^
          uVar10 ^ 0x1596ff29) >> 1) + 0xcd1ecc40) - *(int *)(puVar15 + 0x88)) * 0x2a != 0) {
    *(int **)(puVar15 + -8) = piVar1;
    *(undefined4 **)(puVar15 + -0x10) = puVar11;
    *(ulonglong *)(puVar15 + -0x18) = param_4;
    puVar12 = (undefined8 *)thunk_FUN_1805a9280(0x20,uVar10,puVar18);
    return puVar12;
  }
  do {
    *(undefined4 **)(puVar15 + -8) = puVar18;
    *(undefined4 **)(puVar15 + -0x10) = puVar11;
    *(undefined8 *)(puVar15 + -0x18) = uVar19;
    uVar19 = *(undefined8 *)(puVar15 + -0x18);
    puVar11 = *(undefined4 **)(puVar15 + -0x10);
    puVar18 = *(undefined4 **)(puVar15 + -8);
    uVar10 = (*piVar1 + 1) * *piVar1 & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  return param_1;
}



############ FUN_ 180969f30 size=1845 ############

/* WARNING: Instruction at (ram,0x00018096a532) overlaps instruction at (ram,0x00018096a530)
    */
/* WARNING: Removing unreachable block (ram,0x00018096a52d) */
/* WARNING: Removing unreachable block (ram,0x00018096a2b5) */
/* WARNING: Removing unreachable block (ram,0x00018096a1b4) */
/* WARNING: Removing unreachable block (ram,0x00018096a2e6) */
/* WARNING: Removing unreachable block (ram,0x00018096a6ce) */
/* WARNING: Removing unreachable block (ram,0x00018096a28f) */

ulonglong FUN_180969f30(undefined8 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  undefined1 *puVar33;
  int iVar34;
  ulonglong uVar35;
  longlong lVar36;
  ulonglong uVar37;
  int *piVar38;
  undefined1 *puVar39;
  int *piVar40;
  int iVar41;
  ulonglong uVar42;
  uint uVar43;
  uint uVar44;
  uint uVar45;
  ulonglong uVar47;
  int unaff_retaddr;
  uint local_res10 [2];
  undefined8 local_res18 [2];
  ulonglong auStack_88 [4];
  undefined1 auStack_68 [32];
  undefined *local_48;
  ulonglong uVar46;
  
  iVar41 = DAT_1805fa89c;
  uVar43 = (uint)&stack0x00000000 & 0x1ff;
  uVar44 = (uint)&stack0x00000000 & 0x16ff;
  uVar35 = (ulonglong)
           (((uVar43 + 2) * (uVar43 + 1) * uVar43) % 3 | ((uVar44 + 1) * uVar44 + 7) % 0x51);
  local_48 = &DAT_1805fa99c;
  do {
    FUN_18096b3e2();
    FUN_18096a705();
    uVar43 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar43 < 0) {
      uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar43 != 0);
  do {
    uVar43 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar43 < 0) {
      uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar43 != 0);
  iVar41 = (((((iVar41 * 0x97 + DAT_1805fa8a0) * 0x97 + DAT_1805fa8a4) * 0x97 + DAT_1805fa8a8) *
             0x97 + DAT_1805fa8ac) * 0x97 + DAT_1805fa8b0) * 0x97 + DAT_1805fa8b4;
  piVar38 = &DAT_1805fa8b8;
  puVar33 = auStack_68;
  do {
    puVar39 = puVar33;
    *(undefined4 **)(puVar39 + -8) = &DAT_1805fa8b8;
    uVar43 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar43 < 0) {
      uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
    }
    puVar33 = puVar39 + -8;
  } while (uVar43 != 0);
  lVar36 = 0xb;
  do {
    iVar41 = (iVar41 * 0x97 + *piVar38) * 0x97 + piVar38[1];
    piVar38 = piVar38 + 2;
    lVar36 = lVar36 + -1;
  } while (lVar36 != 0);
  do {
    uVar43 = (*(int *)(puVar39 + 0x60) + 1) * *(int *)(puVar39 + 0x60) & 0x80000001;
    if ((int)uVar43 < 0) {
      uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar43 != 0);
  uVar45 = iVar41 * 0x97 + *piVar38;
  uVar46 = (ulonglong)uVar45;
  uVar43 = uVar45 & 0x6f;
  uVar44 = (uVar43 + 1) * (uVar43 + 1) * uVar43 * uVar43 & 0x80000003;
  uVar42 = (ulonglong)uVar44;
  uVar47 = (ulonglong)*(uint *)(puVar39 + 0x78);
  uVar43 = (uint)piVar38 & 0x1aff;
  piVar40 = (int *)(puVar39 + 0x60);
  piVar38 = (int *)((longlong)piVar38 +
                   (((longlong)(int)(0x3ba6 - uVar44) ^ 0x3b62U) -
                   (0xeeacL >>
                    ((char)((byte)(-((uVar43 + 1) * uVar43 + 0x2255 & 0x80000001) >> 0x18) ^ 0xff)
                     >> 7 & 0x3fU) ^ 0xee6cU)));
  iVar41 = *piVar38;
  iVar1 = piVar38[1];
  do {
    uVar37 = 0;
    *(undefined8 *)(puVar39 + -0x10) = 0x18096a36b;
    iVar34 = FUN_18096b374();
    lVar36 = (uVar42 ^ 0xffffffffffffffff) + 1;
    if ((lVar36 == 0) && ((uVar37 & 0x42) != 0)) {
      return (ulonglong)
             CONCAT31((int3)((uint)(iVar34 + *(int *)(puVar39 + 0x3204eb64)) >> 8),
                      (char)(iVar34 + *(int *)(puVar39 + 0x3204eb64)) + '$');
    }
    uVar42 = -lVar36;
    uVar43 = (*piVar40 + 1) * *piVar40 & 0x80000001;
    if ((int)uVar43 < 0) {
      uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar43 != 0);
  iVar34 = piVar38[2];
  iVar2 = piVar38[3];
  iVar3 = piVar38[4];
  iVar4 = piVar38[5];
  iVar5 = piVar38[6];
  iVar6 = piVar38[7];
  iVar7 = piVar38[8];
  iVar8 = piVar38[9];
  iVar9 = piVar38[10];
  iVar10 = piVar38[0xb];
  iVar11 = piVar38[0xc];
  iVar12 = piVar38[0xd];
  iVar13 = piVar38[0xe];
  iVar14 = piVar38[0xf];
  iVar15 = piVar38[0x10];
  iVar16 = piVar38[0x11];
  iVar17 = piVar38[0x12];
  iVar18 = piVar38[0x13];
  iVar19 = piVar38[0x14];
  iVar20 = piVar38[0x15];
  iVar21 = piVar38[0x16];
  iVar22 = piVar38[0x17];
  iVar23 = piVar38[0x18];
  iVar24 = piVar38[0x19];
  iVar25 = piVar38[0x1a];
  iVar26 = piVar38[0x1b];
  iVar27 = piVar38[0x1c];
  iVar28 = piVar38[0x1d];
  iVar29 = piVar38[0x1e];
  iVar30 = piVar38[0x1f];
  iVar31 = piVar38[0x20];
  iVar32 = piVar38[0x21];
  *(undefined8 *)(puVar39 + 0x80) = 0x66ec9dfee408c508;
  *(int *)(puVar39 + 0x80) = (int)*(undefined8 *)(puVar39 + 0x80);
  do {
    uVar43 = (*piVar40 + 1) * *piVar40 & 0x80000001;
    if ((int)uVar43 < 0) {
      uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar43 != 0);
  uVar43 = (((((((((((((((((((((((((((((((((uVar45 * 0x97 + iVar41) * 0x97 + iVar1) * 0x97 + iVar34)
                                         * 0x97 + iVar2) * 0x97 + iVar3) * 0x97 + iVar4) * 0x97 +
                                     iVar5) * 0x97 + iVar6) * 0x97 + iVar7) * 0x97 + iVar8) * 0x97 +
                                 iVar9) * 0x97 + iVar10) * 0x97 + iVar11) * 0x97 + iVar12) * 0x97 +
                             iVar13) * 0x97 + iVar14) * 0x97 + iVar15) * 0x97 + iVar16) * 0x97 +
                         iVar17) * 0x97 + iVar18) * 0x97 + iVar19) * 0x97 + iVar20) * 0x97 + iVar21)
                     * 0x97 + iVar22) * 0x97 + iVar23) * 0x97 + iVar24) * 0x97 + iVar25) * 0x97 +
                iVar26) * 0x97 + iVar27) * 0x97 + iVar28) * 0x97 + iVar29) * 0x97 + iVar30) * 0x97 +
           iVar31) * 0x97 + iVar32 ^ 0xe7631510;
  uVar44 = (uVar43 >> 6 | uVar43 << 0x1a) ^ 0x1d066f92;
  uVar43 = ~(*(uint *)(puVar39 + 0x80) & uVar44);
  if ((~(uVar43 & *(uint *)(puVar39 + 0x80)) & ~(uVar43 & uVar44)) == 0xffffffff) {
    do {
      *(ulonglong *)(puVar39 + -0x10) = uVar46;
      *(int **)(puVar39 + -0x18) = piVar40;
      *(ulonglong *)(puVar39 + -0x20) = uVar35;
      uVar47 = ~((uVar47 ^ 0xffffffffffffffff) + 1) + 1;
      uVar35 = *(ulonglong *)(puVar39 + -0x20);
      piVar40 = *(int **)(puVar39 + -0x18);
      uVar46 = *(ulonglong *)(puVar39 + -0x10);
      uVar43 = (*piVar40 + 1) * *piVar40 & 0x80000001;
      if ((int)uVar43 < 0) {
        uVar43 = (uVar43 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar43 != 0);
    uVar35 = FUN_18096a760(param_1,param_2,uVar47 & 0xffffffff);
    return uVar35;
  }
  *(undefined8 *)(puVar39 + -0x10) = 0x18096a599;
  FUN_18096b374();
  *(ulonglong *)(puVar39 + -0x10) = uVar46;
  *(ulonglong *)(puVar39 + -0x18) = uVar47;
  *(undefined8 *)(puVar39 + -0x20) = param_1;
  uVar35 = thunk_FUN_1805a9280();
  return uVar35;
}



############ FUN_ 180a59120 size=2464 ############

/* WARNING: Removing unreachable block (ram,0x000180a597a0) */
/* WARNING: Removing unreachable block (ram,0x000180a59233) */
/* WARNING: Removing unreachable block (ram,0x000180a59a2e) */
/* WARNING: Removing unreachable block (ram,0x000180a59ad1) */

undefined8 FUN_180a59120(void)

{
  undefined8 uVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  longlong lVar5;
  longlong lVar6;
  undefined1 *puVar7;
  uint uVar8;
  ulonglong uVar9;
  uint uVar10;
  uint uVar11;
  ulonglong uVar12;
  uint uVar13;
  int *piVar14;
  ulonglong uVar15;
  int *piVar16;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  puVar7 = auStack_58;
  uVar2 = (uint)&stack0x00000000 & 0x64ff;
  iVar3 = uVar2 * uVar2 + 1;
  uVar2 = (uint)&stack0x00000000 & 0x4ff;
  uVar4 = (iVar3 >> 4) + (iVar3 >> 1) + iVar3 * 0x24924924 >> 0x1d;
  uVar2 = (uVar2 + 1) * uVar2 + 0x5117 & 0x80000001 | (int)(uVar4 - 7) >> 0x1f & uVar4;
  uVar15 = (ulonglong)(~((int)(-uVar2 | uVar2) >> 0x1f & 0xffffefffU) & 0x9889);
  lVar6 = 7;
  uVar2 = (DAT_181180668 + 0x21ed87a6) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_18118066c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_181180670) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_181180674) * -0x395b586d;
  do {
    FUN_180a576b5(0x5020);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = (DAT_181180678 + (uVar2 ^ uVar2 >> 0x10)) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_18118067c) * -0x395b586d;
  do {
    lVar5 = uVar15 + lVar6;
    uVar15 = (lVar6 - lVar5 ^ 0xffffffffffffffffU) + 1;
    lVar6 = lVar5 - uVar15;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  lVar6 = 0x11;
  uVar2 = (DAT_181180680 + (uVar2 ^ uVar2 >> 0x10)) * -0x395b586d;
  piVar14 = &DAT_181180680;
  do {
    piVar16 = piVar14;
    piVar14 = piVar16 + 1;
    uVar2 = ((uVar2 ^ uVar2 >> 0x10) + *piVar14) * -0x395b586d;
    lVar6 = lVar6 + -1;
  } while (lVar6 != 0);
  piVar16 = piVar16 + 2;
  do {
    FUN_180a5a5b9(0x5020);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (*piVar16 + (uVar2 ^ uVar2 >> 0x10)) * -0x395b586d;
  uVar4 = uVar4 ^ uVar4 >> 0x10;
  uVar2 = uVar4 & 0x8ff;
  uVar2 = (uVar2 * uVar2 * 0x10 + 4) % 0x13;
  lVar6 = 7;
  piVar16 = (int *)((longlong)piVar16 +
                   (0x44 - (ulonglong)(((int)(-uVar2 | uVar2) >> 0x1f ^ 0xffffffbfU) & 0x1355)));
  uVar2 = (*piVar16 + uVar4) * -0x395b586d;
  do {
    piVar14 = piVar16 + 1;
    piVar16 = piVar16 + 2;
    uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *piVar14) * -0x395b586d;
    uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *piVar16) * -0x395b586d;
    lVar6 = lVar6 + -1;
  } while (lVar6 != 0);
  uVar2 = uVar2 ^ uVar2 >> 0x10;
  uVar8 = (uint)piVar16 & 0x1f;
  uVar4 = uVar8 | 2;
  uVar11 = uVar2 & 0x17f;
  uVar8 = uVar8 | 0x2b;
  uVar10 = (uint)piVar16 & 0x7f | 0x28;
  uVar4 = (uVar4 * uVar4 * 0xa10b == 0x17dda17) + 1;
  uVar13 = (((uVar2 & 0x32ff) + 1) * (uVar2 & 0x32ff) + 7) % 0x51;
  piVar16 = (int *)((longlong)piVar16 +
                   ((longlong)
                    (int)(((uint)(uVar8 * uVar8 * 0xeaf5 == uVar10 * uVar10 * 0x6d2b) -
                          ((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3) + 0xdded) ^
                   0xffffffffffff22e9U) +
                   ((ulonglong)((int)(-uVar13 | uVar13) >> 0x1f & 0xd766) ^
                   (longlong)(((int)(-uVar4 | uVar4) >> 0x1f) * -0xd666)));
  uVar2 = (*piVar16 + uVar2) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + piVar16[1]) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + piVar16[2]) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + piVar16[3]) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + piVar16[4]) * -0x395b586d;
  uVar2 = uVar2 ^ uVar2 >> 0x10;
  if ((uVar2 & 0x660) == 0) {
    uVar4 = uVar2 & 0x3f;
    iVar3 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
    uVar4 = ((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e;
  }
  else {
    uVar4 = ((uVar2 & 0x63ff) + 1) * (uVar2 & 0x63ff) & 0x80000001;
  }
  lVar6 = 0xd;
  piVar14 = (int *)((((longlong)(int)uVar4 ^ 100U) - 0x60) + (longlong)(piVar16 + 4));
  uVar2 = (*piVar14 + uVar2) * -0x395b586d;
  do {
    piVar14 = piVar14 + 1;
    uVar2 = ((uVar2 ^ uVar2 >> 0x10) + *piVar14) * -0x395b586d;
    lVar6 = lVar6 + -1;
  } while (lVar6 != 0);
  uVar2 = uVar2 ^ uVar2 >> 0x10;
  if ((uVar2 & 0x27) == 0) {
    uVar4 = (((uVar2 & 0x12ff) + 1) * (uVar2 & 0x12ff) + 7) % 0x51;
  }
  else {
    uVar4 = 1;
  }
  uVar12 = (ulonglong)uVar4;
  uVar9 = (longlong)(((int)(-uVar4 | uVar4) >> 0x1f) * -0x8a97) ^ 0x8aa7;
  piVar16 = (int *)((longlong)piVar14 + (uVar9 - 0x2c));
  uVar2 = (*piVar16 + uVar2) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)((longlong)piVar14 + (uVar9 - 0x28))) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)((longlong)piVar14 + (uVar9 - 0x24))) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)((longlong)piVar14 + (uVar9 - 0x20))) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + *(int *)((longlong)piVar14 + (uVar9 - 0x1c))) * -0x395b586d;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = (uVar2 ^ uVar2 >> 0x10) + 0x7920d467;
  uVar4 = (uVar2 >> 8 ^ uVar2) >> 2 & 0x1f;
  uVar2 = ((uVar4 << 8 | uVar4) << 2 ^ uVar2) + 0x3c2e4e47;
  uVar4 = uVar2 * 0x400000 | uVar2 >> 10;
  uVar9 = (ulonglong)uVar4;
  uVar2 = (uVar2 & 0x3ff ^ uVar4) & 0x1f;
  if ((((uVar2 << 0x16 | uVar2) ^ uVar4) + 0x52566ea2) * 0x3c != 0) {
    uVar1 = thunk_FUN_1805a9280();
    return uVar1;
  }
  do {
    *(undefined8 *)(puVar7 + -8) = 0x180a599d8;
    lVar6 = (longlong)(int)uVar15;
    FUN_180a581da();
    *(ulonglong *)(puVar7 + -8) = uVar12;
    *(ulonglong *)(puVar7 + -0x10) = uVar9;
    *(int **)(puVar7 + -0x18) = piVar16;
    lVar6 = -lVar6;
    piVar16 = *(int **)(puVar7 + lVar6 + 0xfe8);
    uVar9 = *(ulonglong *)(puVar7 + lVar6 + 0xff0);
    uVar12 = *(ulonglong *)(puVar7 + lVar6 + 0xff8);
    puVar7 = puVar7 + lVar6 + 0x1000;
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  return 0x76;
}



############ FUN_ 1807d94d0 size=2377 ############

/* WARNING: Instruction at (ram,0x0001807d9ca0) overlaps instruction at (ram,0x0001807d9c9f)
    */
/* WARNING: Removing unreachable block (ram,0x0001807d9c26) */
/* WARNING: Removing unreachable block (ram,0x0001807d97d5) */
/* WARNING: Removing unreachable block (ram,0x0001807d9563) */
/* WARNING: Removing unreachable block (ram,0x0001807d9644) */
/* WARNING: Removing unreachable block (ram,0x0001807d9a54) */
/* WARNING: Removing unreachable block (ram,0x0001807d9e8a) */
/* WARNING: Removing unreachable block (ram,0x0001807d95ea) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_1807d94d0(longlong param_1,longlong *param_2)

{
  longlong lVar1;
  int *piVar2;
  ulonglong uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  ulonglong uVar16;
  uint uVar17;
  uint uVar18;
  undefined1 *puVar19;
  uint uVar20;
  ulonglong uVar21;
  longlong lVar22;
  undefined1 *puVar23;
  longlong lVar24;
  ulonglong uVar25;
  ulonglong uVar26;
  bool bVar27;
  char cVar28;
  char cVar29;
  uint unaff_retaddr;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  int *local_50;
  
  puVar19 = auStack_78;
  uVar17 = (uint)&stack0x00000000;
  uVar20 = uVar17 & 0x13f;
  lVar22 = 0;
  if (((ulonglong)&stack0x00000000 & 0x180) == 0) {
    uVar17 = ((uVar17 & 0x1fff) + 1) * (uVar17 & 0x1fff) + 0x4dff & 0x80000001;
  }
  else {
    iVar4 = (uVar17 & 0x21ff) * (uVar17 & 0x21ff) + 1;
    uVar17 = (iVar4 >> 4) + (iVar4 >> 1) + iVar4 * 0x24924924 >> 0x1d;
    uVar17 = (int)(uVar17 - 7) >> 0x1f & uVar17;
  }
  iVar4 = (**(code **)(*param_2 + 0x18))(param_2,"AuthorizationFull_sendEncryptedCommand_pargs");
  local_50 = (int *)0x181592718;
  local_58 = 0x181592818;
  iVar5 = (**(code **)(*param_2 + 0x28))(param_2,"_input",0xc);
  piVar2 = local_50;
  uVar6 = (*local_50 + -0x422ec6f7) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[1]) * -0x395b586d;
  uVar18 = ((uVar6 >> 0x10 ^ uVar6) + local_50[2]) * -0x395b586d;
  uVar7 = uVar18 >> 0x10;
  uVar6 = uVar7;
  do {
    if (uVar6 < 0x6639) {
      register0x00000020 = (BADSPACEBASE *)(~(~(ulonglong)register0x00000020 + 1) + 1);
    }
    uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar15 < 0) {
      uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
    }
    uVar6 = unaff_retaddr;
  } while (uVar15 != 0);
  uVar6 = (local_50[3] + (uVar18 ^ uVar7)) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[4]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[5]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[6]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[7]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[8]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[9]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[10]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0xb]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0xc]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0xd]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0xe]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0xf]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x10]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x11]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x12]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x13]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x14]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x15]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x16]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x17]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x18]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x19]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x1a]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x1b]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x1c]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x1d]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x1e]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x1f]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x20]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x21]) * -0x395b586d;
  uVar6 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x22]) * -0x395b586d;
  lVar24 = (longlong)(int)(-(((uVar20 + 2) * (uVar20 + 1) * uVar20) % 3) ^ 0x6d0);
  uVar20 = ((uVar6 >> 0x10 ^ uVar6) + local_50[0x23]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x24]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x25]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x26]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x27]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x28]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x29]) * -0x395b586d;
  do {
    puVar23 = (undefined1 *)((longlong)register0x00000020 + lVar22);
    lVar22 = ~((longlong)register0x00000020 - (longlong)puVar23) + 1;
    register0x00000020 = (BADSPACEBASE *)(puVar23 + -lVar22);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar20 = (local_50[0x2a] + (uVar20 ^ uVar20 >> 0x10)) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x2b]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + local_50[0x2c]) * -0x395b586d;
  iVar8 = FUN_1807b6230(*(undefined8 *)(param_1 + 8),param_2);
  iVar9 = (**(code **)(*param_2 + 0x30))(param_2);
  uVar21 = 10000;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x2d]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x2e]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x2f]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x30]) * -0x395b586d;
  iVar10 = (**(code **)(*param_2 + 0x28))(param_2,"inClientBuiltVersion",8);
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x31]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x32]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x33]) * -0x395b586d;
  iVar11 = (**(code **)(*param_2 + 0x88))(param_2,**(undefined4 **)(param_1 + 0x10));
  iVar12 = (**(code **)(*param_2 + 0x30))(param_2);
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x34]) * -0x395b586d;
  iVar13 = (**(code **)(*param_2 + 0x38))(param_2);
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x35]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x36]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x37]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x38]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x39]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x3a]) * -0x395b586d;
  iVar14 = (**(code **)(*param_2 + 0x20))(param_2);
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x3b]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x3c]) * -0x395b586d;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar20 = (piVar2[0x3d] + (uVar20 ^ uVar20 >> 0x10)) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x3e]) * -0x395b586d;
  uVar20 = ((uVar20 >> 0x10 ^ uVar20) + piVar2[0x3f]) * -0x395b586d;
  uVar20 = uVar20 ^ uVar20 >> 0x10;
  bVar27 = uVar20 == 0;
  uVar25 = (ulonglong)
           (uint)(iVar4 + iVar5 + iVar8 + iVar9 + iVar10 + iVar11 + iVar12 + iVar13 + iVar14);
  uVar6 = uVar20;
  do {
    cVar29 = '\0';
    cVar28 = (int)uVar6 < 0;
    uVar16 = 0;
                    /* WARNING: Call to offcut address within same function */
    uVar6 = func_0x0001807d9c7e();
    uVar3 = uVar25;
    uVar26 = uVar21;
    if (bVar27 || cVar29 != cVar28) {
      if ((uVar16 & 0x41) == 0) goto LAB_1807d9ca4_3;
    }
    else if (((uVar16 & 0xc2) == 0) || ((uVar6 & 0xc1f60aeb) == 0)) {
LAB_1807d9ca4_3:
      uVar3 = uVar21;
      uVar26 = uVar25;
    }
    uVar21 = uVar3;
    FUN_1807dbb3f();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    bVar27 = false;
    uVar25 = uVar26;
    if (uVar6 == 0) {
      uVar20 = uVar20 + 0x4abee987;
      uVar6 = (uVar20 >> 9 ^ uVar20) & 0xff;
      if (((uVar6 << 9 | uVar6) ^ uVar20) != 0x6934f496) {
        FUN_1807da36c();
        uVar21 = thunk_FUN_1805a9280();
        return uVar21;
      }
      do {
        *(longlong *)(puVar19 + -8) = lVar24;
        *(longlong *)(puVar19 + -0x10) = lVar22;
        *(BADSPACEBASE **)(puVar19 + -0x18) = register0x00000020;
        lVar1 = -(longlong)(int)(((int)(-uVar17 | uVar17) >> 0x1f) * -0xdeec ^ 0xd97c);
        register0x00000020 = *(BADSPACEBASE **)(puVar19 + lVar1 + 0x778);
        lVar22 = *(longlong *)(puVar19 + lVar1 + 0x780);
        lVar24 = *(longlong *)(puVar19 + lVar1 + 0x788);
        puVar19 = puVar19 + lVar1 + 0x790;
        uVar20 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar20 < 0) {
          uVar20 = (uVar20 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar20 != 0);
      return uVar26 & 0xffffffff;
    }
  } while( true );
}



############ FUN_ 1807e88a0 size=2694 ############

/* WARNING: Removing unreachable block (ram,0x0001807e8926) */
/* WARNING: Removing unreachable block (ram,0x0001807e88df) */
/* WARNING: Removing unreachable block (ram,0x0001807e8cfd) */

void FUN_1807e88a0(longlong param_1)

{
  longlong *plVar1;
  int *piVar2;
  longlong *plVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined1 *puVar7;
  longlong lVar8;
  uint uVar9;
  undefined1 *puVar10;
  undefined8 uVar11;
  ulonglong uVar12;
  undefined8 uVar13;
  undefined8 uVar14;
  uint uVar15;
  int iVar16;
  undefined1 *puVar17;
  uint unaff_retaddr;
  undefined1 auStack_88 [32];
  undefined8 local_68;
  undefined8 local_60;
  longlong *local_58;
  
  puVar10 = auStack_88;
  local_68 = 0xfffffffffffffffe;
  uVar11 = 0x4e0;
  uVar15 = 0x300;
  *(undefined1 *)(param_1 + 8) = 0;
  local_60 = *(undefined8 *)(param_1 + 0x1c8);
  *(undefined8 *)(param_1 + 0x1c8) = 0;
  plVar3 = *(longlong **)(param_1 + 0x1d0);
  *(undefined8 *)(param_1 + 0x1d0) = 0;
  local_58 = plVar3;
  if (plVar3 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar3 + 1;
    lVar8 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar8 == 1) {
      (**(code **)(*plVar3 + 8))(plVar3);
      LOCK();
      piVar2 = (int *)((longlong)plVar3 + 0xc);
      iVar16 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar16 == 1) {
        (**(code **)(*plVar3 + 0x10))(plVar3);
      }
    }
  }
  puVar17 = &DAT_c6a4a793;
  uVar4 = (DAT_1811a9700 + -0x50d7cc65) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9704) * -0x395b586d;
  uVar14 = 0;
  *(undefined4 *)(param_1 + 0x28) = 0;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9708) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a970c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9710) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9714) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9718) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a971c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9720) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9724) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9728) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a972c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9730) * -0x395b586d;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9734) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9738) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a973c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9740) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9744) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9748) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a974c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9750) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9754) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9758) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a975c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9760) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9764) * -0x395b586d;
  do {
    FUN_1807e7ecb();
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar4 = (DAT_1811a9768 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a976c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9770) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9774) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9778) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a977c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9780) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9784) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9788) * -0x395b586d;
  lVar8 = 0;
  uVar13 = 0x80;
  memset((void *)(param_1 + 0x30),0,0x80);
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a978c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9790) * -0x395b586d;
  uVar9 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a9794) * -0x395b586d;
  uVar5 = uVar9 >> 0x10;
  uVar4 = uVar5;
  do {
    if (uVar4 != 0x4230) {
      uVar15 = -(~uVar15 + 1);
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    uVar4 = unaff_retaddr;
  } while (uVar6 != 0);
  uVar4 = (DAT_1811a9798 + (uVar9 ^ uVar5)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a979c) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97a0) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97a4) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97a8) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97ac) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97b0) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97b4) * -0x395b586d;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807e8cdc(0x4230);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar4 = (DAT_1811a97b8 + (uVar4 ^ uVar4 >> 0x10)) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97bc) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97c0) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97c4) * -0x395b586d;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97c8) * -0x395b586d;
  do {
    puVar7 = puVar17 + lVar8;
    puVar17 = (undefined1 *)(~(lVar8 - (longlong)puVar7) + 1);
    lVar8 = (longlong)puVar7 - (longlong)puVar17;
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  iVar16 = (int)puVar17;
  uVar4 = (DAT_1811a97cc + (uVar4 ^ uVar4 >> 0x10)) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97d0) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97d4) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97d8) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97dc) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97e0) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97e4) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97e8) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97ec) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97f0) * iVar16;
  uVar5 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97f4) * iVar16;
  uVar4 = ((uVar5 >> 0x10 ^ uVar5) + DAT_1811a97f8) * iVar16;
  uVar4 = ((uVar4 >> 0x10 ^ uVar4) + DAT_1811a97fc) * iVar16;
  uVar4 = uVar4 >> 0x10 ^ uVar4;
  uVar12 = (ulonglong)uVar4;
  uVar9 = (uVar4 >> 0xd ^ uVar4) & 0xfff;
  *(undefined8 *)(param_1 + 0xb0) = 0;
  *(undefined8 *)(param_1 + 0xb8) = 0;
  FUN_18070ac10(param_1 + 0xc0,uVar5,uVar13);
  do {
    FUN_1807e888e(0x4230);
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  *(undefined4 *)(param_1 + 0x130) = 0xffffffff;
  *(undefined8 *)(param_1 + 0x138) = 0;
  if ((((uVar9 << 0xd | uVar9) ^ uVar4 ^ 0x5e220846) + 0x93b9eb25) * 0x33 == 0) {
    *(undefined4 *)(param_1 + 0x134) = 0xffffffff;
    memset((void *)(param_1 + 0x140),0,0x60);
    *(undefined8 *)(param_1 + 0x1a0) = 0;
    *(undefined8 *)(param_1 + 0x1a8) = 0;
    *(undefined8 *)(param_1 + 0x1b0) = 0;
    *(undefined8 *)(param_1 + 0x1b8) = 0;
    *(undefined8 *)(param_1 + 0x1c0) = 0;
    do {
      *(undefined8 *)(puVar10 + -8) = 0x1807e91fc;
      lVar8 = (longlong)(int)uVar15;
      FUN_1807e9f44();
      *(undefined8 *)(puVar10 + -8) = uVar14;
      *(undefined8 *)(puVar10 + -0x10) = uVar11;
      *(ulonglong *)(puVar10 + -0x18) = uVar12;
      lVar8 = -lVar8;
      uVar12 = *(ulonglong *)(puVar10 + lVar8 + 0x2e8);
      uVar11 = *(undefined8 *)(puVar10 + lVar8 + 0x2f0);
      uVar14 = *(undefined8 *)(puVar10 + lVar8 + 0x2f8);
      puVar10 = puVar10 + lVar8 + 0x300;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    return;
  }
  *(undefined4 *)(param_1 + 0x134) = 0xc37df8e6;
  memset((void *)(param_1 + 0x140),0,0x60);
  *(undefined8 *)(param_1 + 0x1a0) = 0;
  *(undefined8 *)(param_1 + 0x1a8) = 0;
  *(undefined8 *)(param_1 + 0x1b0) = 0;
  *(undefined8 *)(param_1 + 0x1b8) = 0;
  *(undefined8 *)(param_1 + 0x1c0) = 0;
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 1807a88ac size=1578 ############

/* WARNING: Instruction at (ram,0x0001807a8cc1) overlaps instruction at (ram,0x0001807a8cbf)
    */
/* WARNING: Removing unreachable block (ram,0x0001807a8cbf) */
/* WARNING: Removing unreachable block (ram,0x0001807a8ae2) */
/* WARNING: Removing unreachable block (ram,0x0001807a8f8a) */

ulonglong FUN_1807a88ac(uint param_1,ulonglong param_2,undefined8 param_3,longlong param_4)

{
  undefined1 uVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  ulonglong uVar10;
  uint uVar11;
  uint uVar12;
  longlong unaff_RBX;
  undefined1 *puVar13;
  undefined1 *puVar14;
  int unaff_EBP;
  longlong *unaff_RSI;
  int unaff_EDI;
  undefined8 uVar15;
  ulonglong in_R10;
  longlong lVar16;
  undefined8 uVar17;
  longlong lVar18;
  longlong unaff_R14;
  int *unaff_R15;
  longlong lVar19;
  int *piVar20;
  int in_stack_00000078;
  int in_stack_00000080;
  int in_stack_00000088;
  int in_stack_00000090;
  
  lVar16 = (in_R10 ^ 0xffffffffffffffff) + 1;
  param_4 = param_4 - lVar16;
  if ((param_1 & 0x40) == 0) {
    param_4 = param_4 + lVar16;
  }
  else {
    param_2 = (ulonglong)((int)param_2 - param_1);
  }
  uVar11 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
  if ((int)uVar11 < 0) {
    uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
  }
  if (uVar11 != 0) {
    uVar10 = FUN_1807a88ac(0xf730,param_2,param_3,param_4);
    return uVar10;
  }
  iVar3 = (**(code **)(*unaff_RSI + 0x30))();
  uVar11 = (*(int *)(unaff_RBX + 0x44) + unaff_EDI) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x48)) * 0x401;
  iVar4 = (**(code **)(*unaff_RSI + 0x28))();
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x4c)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x50)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x54)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x58)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x5c)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x60)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 100)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x68)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x6c)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x70)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x74)) * 0x401;
  iVar5 = FUN_1809c7650(unaff_R14 + 0x28);
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x78)) * 0x401;
  iVar6 = (**(code **)(*unaff_RSI + 0x30))();
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x7c)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x80)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x84)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x88)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x8c)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x90)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x94)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x98)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0x9c)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xa0)) * 0x401;
  do {
    uVar12 = (in_stack_00000078 + 1) * in_stack_00000078 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  lVar16 = 3;
  uVar11 = (*(int *)(unaff_RBX + 0xa4) + (uVar11 ^ uVar11 >> 6)) * 0x401;
  uVar15 = 10;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xa8)) * 0x401;
  iVar7 = (**(code **)(*unaff_RSI + 0x28))();
  lVar18 = (longlong)in_stack_00000088;
  piVar20 = &stack0x00000078;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xac)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xb0)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xb4)) * 0x401;
  do {
    FUN_1807a88ab();
    lVar19 = lVar16 + (longlong)piVar20;
    lVar16 = ((longlong)piVar20 - lVar19 ^ 0xffffffffffffffffU) + 1;
    piVar20 = (int *)(lVar19 - lVar16);
    uVar12 = (*piVar20 + 1) * *piVar20 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar11 = (*(int *)(unaff_RBX + 0xb8) + (uVar11 ^ uVar11 >> 6)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xbc)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xc0)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xc4)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 200)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xcc)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xd0)) * 0x401;
  do {
    uVar12 = (in_stack_00000078 + 1) * in_stack_00000078 & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar11 = (*(int *)(unaff_RBX + 0xd4) + (uVar11 ^ uVar11 >> 6)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xd8)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xdc)) * 0x401;
  uVar11 = ((uVar11 >> 6 ^ uVar11) + *(int *)(unaff_RBX + 0xe0)) * 0x401;
  iVar8 = (**(code **)(*unaff_RSI + 0x90))(unaff_RSI,*(undefined8 *)(unaff_R14 + 0xc0));
  uVar11 = uVar11 >> 6 ^ uVar11;
  uVar10 = (ulonglong)uVar11;
  uVar12 = (uVar11 >> 4 ^ uVar11) & 3;
  iVar9 = (**(code **)(*unaff_RSI + 0x30))(unaff_RSI);
  in_stack_00000080 = unaff_EBP + iVar3 + iVar4 + iVar5 + iVar6 + iVar7 + iVar8 + iVar9;
  uVar11 = ((uVar12 << 4 | uVar12) ^ uVar11) + 0x5eedc79b;
  uVar17 = 1;
  puVar13 = (undefined1 *)register0x00000020;
  if (in_stack_00000090 !=
      ((uVar11 >> 2 | uVar11 * 0x40000000) & 0x99999999 | (uVar11 * 4 | uVar11 >> 0x1e) & 0x66666666
      ) + 0xfe76f83) {
    func_0x0001807a7842();
    uVar10 = thunk_FUN_1805a9280();
    return uVar10;
  }
  do {
    puVar14 = puVar13;
    *(undefined8 *)(puVar14 + -8) = uVar17;
    *(ulonglong *)(puVar14 + -0x10) = uVar10;
    *(undefined8 *)(puVar14 + -0x18) = uVar15;
    lVar16 = -lVar18;
    uVar15 = *(undefined8 *)(puVar14 + lVar16 + 0xba8);
    uVar10 = *(ulonglong *)(puVar14 + lVar16 + 0xbb0);
    uVar17 = *(undefined8 *)(puVar14 + lVar16 + 3000);
    uVar11 = (in_stack_00000078 + 1) * in_stack_00000078 & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
    puVar13 = puVar14 + lVar16 + 0xbc0;
  } while (uVar11 != 0);
  iVar3 = *(int *)(puVar14 + lVar16 + 0xc40);
  if (*(char *)(unaff_R14 + 0x3d3) != '\0') {
    pcVar2 = *(code **)(*unaff_RSI + 0x28);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a9051;
    iVar4 = (*pcVar2)(unaff_RSI,"authChain",0xc,0xc44);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a9062;
    iVar5 = FUN_180953cf0(unaff_R14 + 200,unaff_RSI);
    pcVar2 = *(code **)(*unaff_RSI + 0x30);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a906d;
    iVar6 = (*pcVar2)(unaff_RSI);
    iVar3 = iVar3 + iVar4 + iVar5 + iVar6;
  }
  if (*(char *)(unaff_R14 + 0x3d4) != '\0') {
    pcVar2 = *(code **)(*unaff_RSI + 0x28);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a9099;
    iVar4 = (*pcVar2)(unaff_RSI,"clientPasswordDigest",0xf,0xc45);
    lVar18 = *(longlong *)(unaff_R14 + 0x3c0);
    lVar19 = *(longlong *)(unaff_R14 + 0x3b8);
    pcVar2 = *(code **)(*unaff_RSI + 0x50);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a90b8;
    iVar5 = (*pcVar2)(unaff_RSI,3,lVar18 - lVar19);
    puVar13 = *(undefined1 **)(unaff_R14 + 0x3b8);
    iVar5 = iVar3 + iVar4 + iVar5;
    if (puVar13 != *(undefined1 **)(unaff_R14 + 0x3c0)) {
      do {
        uVar1 = *puVar13;
        pcVar2 = *(code **)(*unaff_RSI + 0x78);
        *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a90dc;
        iVar3 = (*pcVar2)(unaff_RSI,uVar1);
        iVar5 = iVar5 + iVar3;
        puVar13 = puVar13 + 1;
      } while (puVar13 != *(undefined1 **)(unaff_R14 + 0x3c0));
    }
    pcVar2 = *(code **)(*unaff_RSI + 0x58);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a90f3;
    iVar4 = (*pcVar2)(unaff_RSI);
    pcVar2 = *(code **)(*unaff_RSI + 0x30);
    *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a90fe;
    iVar3 = (*pcVar2)(unaff_RSI);
    iVar3 = iVar5 + iVar4 + iVar3;
  }
  pcVar2 = *(code **)(*unaff_RSI + 0x38);
  *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a9109;
  iVar4 = (*pcVar2)(unaff_RSI);
  pcVar2 = *(code **)(*unaff_RSI + 0x20);
  *(undefined8 *)(puVar14 + lVar16 + 3000) = 0x1807a9114;
  iVar5 = (*pcVar2)(unaff_RSI);
  return (ulonglong)(uint)(iVar5 + iVar3 + iVar4);
}



############ FUN_ 180888f70 size=2273 ############

/* WARNING: Instruction at (ram,0x000180889453) overlaps instruction at (ram,0x000180889452)
    */
/* WARNING: Removing unreachable block (ram,0x000180889198) */
/* WARNING: Removing unreachable block (ram,0x000180889452) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180888f70(longlong *param_1)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  longlong lVar8;
  longlong lVar9;
  ulonglong uVar10;
  longlong lVar11;
  
  uVar4 = (uint)&stack0x00000000 & 0x33f;
  iVar6 = (uVar4 + 2) * (uVar4 + 1) * uVar4;
  if ((((iVar6 >> 1) - (iVar6 >> 3)) + iVar6 * 0x55555555 >> 0x1e & 0xfU) == 0) {
    uVar4 = (uint)&stack0x00000000 & 0x34ff;
    iVar6 = uVar4 * uVar4 + 1;
    uVar4 = (iVar6 >> 4) + (iVar6 >> 1) + iVar6 * 0x24924924 >> 0x1d;
    uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  }
  else {
    uVar4 = 1;
  }
  lVar9 = 0x180000000;
  lVar8 = 0xad920b80;
  lVar7 = 0x40;
  piVar1 = &DAT_1815b1724;
  do {
    lVar7 = lVar7 - (longlong)register0x00000020;
    lVar8 = lVar8 + (longlong)register0x00000020;
    lVar11 = (~((longlong)register0x00000020 - lVar8) + 1U) - lVar8;
    register0x00000020 = (BADSPACEBASE *)-lVar11;
    lVar8 = lVar8 + lVar11;
    lVar7 = lVar7 + (longlong)register0x00000020;
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar2 = (DAT_1815b1724 + 0x5ccb5de8) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1728) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b172c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1730) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1734) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1738) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b173c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1740) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1744) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1748) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b174c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1750) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1754) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1758) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b175c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1760) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1764) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1768) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b176c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1770) * 0x401;
  uVar5 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1774) * 0x401;
  uVar2 = ((uVar5 >> 6 ^ uVar5) + DAT_1815b1778) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b177c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1780) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1784) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1788) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b178c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1790) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1794) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b1798) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b179c) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + DAT_1815b17a0) * 0x401;
  do {
    lVar8 = (longlong)piVar1 + lVar9;
    uVar10 = lVar9 - lVar8 ^ 0xffffffffffffffff;
    piVar1 = (int *)(uVar10 + 1);
    lVar9 = lVar8 - (longlong)piVar1;
    uVar3 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar2 = (*(int *)(uVar10 + 0x81) + (uVar2 ^ uVar2 >> 6)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x85)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x89)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x8d)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x91)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x95)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x99)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0x9d)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xa1)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xa5)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xa9)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xad)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xb1)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xb5)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xb9)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xbd)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xc1)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xc5)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xc9)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xcd)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xd1)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xd5)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xd9)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xdd)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xe1)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xe5)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xe9)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xed)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xf1)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xf5)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xf9)) * 0x401;
  uVar2 = ((uVar2 >> 6 ^ uVar2) + *(int *)(uVar10 + 0xfd)) * 0x401;
  uVar2 = uVar2 >> 6 ^ uVar2;
  uVar2 = (uVar2 << 0xb | uVar2 >> 0x15) ^ 0x2189c443;
  if ((uVar2 >> 0xe | uVar2 << 0x12) != 0x325a3877) {
    thunk_FUN_1805a9280(((int)(-uVar4 | uVar4) >> 0x1f) * 0x10a4 & 0x4c48U ^ 0x4228,uVar5);
    return;
  }
  do {
    uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  if (param_1[3] == 0) {
    (**(code **)(*param_1 + 0x48))(param_1,uVar5,lVar7);
  }
  return;
}



############ FUN_ 1806d8120 size=3121 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001806d8683) */
/* WARNING: Removing unreachable block (ram,0x0001806d83af) */
/* WARNING: Removing unreachable block (ram,0x0001806d81ac) */
/* WARNING: Removing unreachable block (ram,0x0001806d83c5) */
/* WARNING: Removing unreachable block (ram,0x0001806d898e) */

void FUN_1806d8120(longlong param_1,longlong *param_2)

{
  ulonglong *puVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  void *pvVar5;
  undefined1 *puVar6;
  int *piVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint *puVar11;
  void *_Memory;
  int iVar12;
  undefined1 *puVar13;
  longlong lVar14;
  uint uVar15;
  uint uVar16;
  undefined2 *puVar17;
  ulonglong uVar18;
  uint uVar19;
  longlong lVar20;
  ulonglong uVar21;
  ulonglong uVar22;
  undefined8 uVar23;
  undefined *puVar24;
  uint *puVar25;
  bool bVar26;
  bool bVar27;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_e8 [32];
  undefined2 local_c8 [4];
  uint *local_c0;
  undefined *local_b8;
  uint local_b0;
  uint local_ac;
  int local_a8;
  uint local_a4;
  undefined8 local_a0;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  uint local_88;
  uint local_84;
  code *local_80;
  undefined1 local_78 [4];
  undefined1 local_74 [4];
  undefined8 local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  uVar8 = (uint)&stack0x00000000;
  uVar16 = ((uVar8 & 0x32ff) * (uVar8 & 0x32ff) + 1) % 7;
  uVar15 = ((uVar8 & 0x1fff) + 1) * (uVar8 & 0x1fff) + 0x8d1 & 0x80000001;
  local_88 = (((int)(-uVar16 | uVar16) >> 0x1f) - ((int)(-uVar15 | uVar15) >> 0x1f)) + 0x8fb4U ^
             0x8a54;
  uVar8 = uVar8 & 0x3ff;
  iVar12 = (uVar8 + 2) * (uVar8 + 1) * uVar8;
  local_84 = ((iVar12 >> 1) - (iVar12 >> 3)) + iVar12 * 0x55555555 >> 0x1e ^ 0x7b0;
  uVar21 = 0;
  local_58 = 0;
  local_50 = 0xf;
  local_68 = 0;
  local_a0 = 0x115defc;
  local_c0 = &DAT_18115defc;
  local_b8 = &DAT_18115dffc;
  uVar19 = (DAT_18115df0c ^
           ((((DAT_18115defc ^ 0x811c9dc5) * 0x1000181 ^ DAT_18115df00) * 0x1000181 ^ DAT_18115df04)
            * 0x1000181 ^ DAT_18115df08) * 0x1000181) * 0x1000181;
  uVar22 = (ulonglong)uVar19;
  uVar15 = uVar19 & 0x4f;
  iVar12 = (uVar19 & 0x63ff) * (uVar19 & 0x63ff) + 1;
  uVar8 = (iVar12 >> 4) + (iVar12 >> 1) + iVar12 * 0x24924924 >> 0x1d;
  uVar8 = (int)(uVar8 - 7) >> 0x1f & uVar8;
  uVar18 = (ulonglong)uVar8;
  lVar14 = -(((longlong)
              (int)(((uVar15 + 1) * (uVar15 + 1) * uVar15 * uVar15 & 0x80000003) -
                   (((uVar19 & 0x5dff) + 1) * (uVar19 & 0x5dff) & 0x80000001)) | 0xb82aU) ^
            (ulonglong)((int)(-uVar8 | uVar8) >> 0x1f & 0xb92a));
  uVar8 = *(uint *)(&UNK_18115e010 + lVar14);
  uVar15 = *(uint *)(&UNK_18115e014 + lVar14);
  uVar16 = *(uint *)(&UNK_18115e018 + lVar14);
  uVar2 = *(uint *)(&UNK_18115e01c + lVar14);
  (**(code **)(*param_2 + 0xc0))(param_2);
  uVar3 = *(uint *)(&UNK_18115e020 + lVar14);
  uVar4 = *(uint *)(&UNK_18115e024 + lVar14);
  uVar10 = *(uint *)(&UNK_18115e028 + lVar14);
  do {
    FUN_1806d654c(0x7d24);
    puVar25 = local_c0;
    lVar20 = uVar22 + uVar21;
    uVar22 = ~(uVar21 - lVar20) + 1;
    uVar21 = lVar20 - uVar22;
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  piVar7 = (int *)register0x00000020;
  do {
    lVar20 = uVar21 + uVar18;
    uVar21 = ~(uVar18 - lVar20) + 1;
    piVar7 = (int *)((-(longlong)piVar7 ^ 0xffffffffffffffffU) + 1);
    uVar18 = lVar20 - uVar21;
    uVar9 = (*piVar7 + 1) * *piVar7 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  local_a0 = CONCAT44(local_a0._4_4_,
                      (*(uint *)((longlong)local_c0 + lVar14 + 0x1a8) ^
                      ((((((((((((((((((((((((((((((*(uint *)((longlong)local_c0 + lVar14 + 0x130) ^
                                                   (uVar10 ^ (uVar4 ^ (uVar3 ^ ((((uVar8 ^ uVar19) *
                                                                                  0x1000181 ^ uVar15
                                                                                 ) * 0x1000181 ^
                                                                                uVar16) * 0x1000181
                                                                               ^ uVar2) * 0x1000181)
                                                                      * 0x1000181) * 0x1000181) *
                                                   0x1000181) * 0x1000181 ^
                                                  *(uint *)((longlong)local_c0 + lVar14 + 0x134)) *
                                                  0x1000181 ^
                                                 *(uint *)((longlong)local_c0 + lVar14 + 0x138)) *
                                                 0x1000181 ^
                                                *(uint *)((longlong)local_c0 + lVar14 + 0x13c)) *
                                                0x1000181 ^
                                               *(uint *)((longlong)local_c0 + lVar14 + 0x140)) *
                                               0x1000181 ^
                                              *(uint *)((longlong)local_c0 + lVar14 + 0x144)) *
                                              0x1000181 ^
                                             *(uint *)((longlong)local_c0 + lVar14 + 0x148)) *
                                             0x1000181 ^
                                            *(uint *)((longlong)local_c0 + lVar14 + 0x14c)) *
                                            0x1000181 ^
                                           *(uint *)((longlong)local_c0 + lVar14 + 0x150)) *
                                           0x1000181 ^
                                          *(uint *)((longlong)local_c0 + lVar14 + 0x154)) *
                                          0x1000181 ^ *(uint *)((longlong)local_c0 + lVar14 + 0x158)
                                         ) * 0x1000181 ^
                                        *(uint *)((longlong)local_c0 + lVar14 + 0x15c)) * 0x1000181
                                       ^ *(uint *)((longlong)local_c0 + lVar14 + 0x160)) * 0x1000181
                                      ^ *(uint *)((longlong)local_c0 + lVar14 + 0x164)) * 0x1000181
                                     ^ *(uint *)((longlong)local_c0 + lVar14 + 0x168)) * 0x1000181 ^
                                    *(uint *)((longlong)local_c0 + lVar14 + 0x16c)) * 0x1000181 ^
                                   *(uint *)((longlong)local_c0 + lVar14 + 0x170)) * 0x1000181 ^
                                  *(uint *)((longlong)local_c0 + lVar14 + 0x174)) * 0x1000181 ^
                                 *(uint *)((longlong)local_c0 + lVar14 + 0x178)) * 0x1000181 ^
                                *(uint *)((longlong)local_c0 + lVar14 + 0x17c)) * 0x1000181 ^
                               *(uint *)((longlong)local_c0 + lVar14 + 0x180)) * 0x1000181 ^
                              *(uint *)((longlong)local_c0 + lVar14 + 0x184)) * 0x1000181 ^
                             *(uint *)((longlong)local_c0 + lVar14 + 0x188)) * 0x1000181 ^
                            *(uint *)((longlong)local_c0 + lVar14 + 0x18c)) * 0x1000181 ^
                           *(uint *)((longlong)local_c0 + lVar14 + 400)) * 0x1000181 ^
                          *(uint *)((longlong)local_c0 + lVar14 + 0x194)) * 0x1000181 ^
                         *(uint *)((longlong)local_c0 + lVar14 + 0x198)) * 0x1000181 ^
                        *(uint *)((longlong)local_c0 + lVar14 + 0x19c)) * 0x1000181 ^
                       *(uint *)((longlong)local_c0 + lVar14 + 0x1a0)) * 0x1000181 ^
                      *(uint *)((longlong)local_c0 + lVar14 + 0x1a4)) * 0x1000181) * 0x1000181);
  puVar17 = local_c8;
  local_b8 = (undefined *)(lVar14 + 0x1ac);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_68,&local_a8,puVar17);
  puVar24 = (undefined *)(lVar14 + 0x1ac);
  if (local_a8 != 0) {
    do {
      switch(local_c8[0]) {
      case 1:
        if (local_a8 != 8) break;
        (**(code **)(*param_2 + 0x128))(param_2,&local_98);
        *(undefined4 *)(param_1 + 8) = local_98;
        *(undefined1 *)(param_1 + 0x48) = 1;
        goto LAB_1806d88c8;
      default:
        break;
      case 0xb:
        if (local_a8 == 8) {
          (**(code **)(*param_2 + 0x128))(param_2,&local_94);
          *(undefined4 *)(param_1 + 0xc) = local_94;
          *(undefined1 *)(param_1 + 0x49) = 1;
          goto LAB_1806d88c8;
        }
        break;
      case 0xc:
        if (local_a8 == 8) {
          (**(code **)(*param_2 + 0x128))(param_2,&local_90);
          *(undefined4 *)(param_1 + 0x10) = local_90;
          *(undefined1 *)(param_1 + 0x4a) = 1;
          goto LAB_1806d88c8;
        }
        break;
      case 0xd:
        if (local_a8 == 8) {
          (**(code **)(*param_2 + 0x128))(param_2,&local_8c);
          *(undefined4 *)(param_1 + 0x14) = local_8c;
          *(undefined1 *)(param_1 + 0x4b) = 1;
          goto LAB_1806d88c8;
        }
        break;
      case 0x15:
        if (local_a8 == 0xf) {
          *(undefined8 *)(param_1 + 0x20) = *(undefined8 *)(param_1 + 0x18);
          (**(code **)(*param_2 + 0xf0))(param_2,local_78,&local_b0);
          FUN_1805b1330(param_1 + 0x18,local_b0,param_1 + 0x18);
          uVar21 = 0;
          if (local_b0 != 0) {
            do {
              (**(code **)(*param_2 + 0x118))(param_2,uVar21 + *(longlong *)(param_1 + 0x18));
              uVar8 = (int)uVar21 + 1;
              uVar21 = (ulonglong)uVar8;
            } while (uVar8 < local_b0);
          }
          (**(code **)(*param_2 + 0xf8))(param_2);
          *(undefined1 *)(param_1 + 0x4c) = 1;
          goto LAB_1806d88c8;
        }
        break;
      case 0x16:
        if (local_a8 == 0xf) {
          *(undefined8 *)(param_1 + 0x38) = *(undefined8 *)(param_1 + 0x30);
          (**(code **)(*param_2 + 0xf0))(param_2,local_74,&local_ac);
          FUN_1805b1330(param_1 + 0x30,local_ac,param_1 + 0x30);
          uVar21 = 0;
          if (local_ac != 0) {
            do {
              (**(code **)(*param_2 + 0x118))(param_2,uVar21 + *(longlong *)(param_1 + 0x30));
              uVar8 = (int)uVar21 + 1;
              uVar21 = (ulonglong)uVar8;
            } while (uVar8 < local_ac);
          }
          (**(code **)(*param_2 + 0xf8))(param_2);
          *(undefined1 *)(param_1 + 0x4d) = 1;
          goto LAB_1806d88c8;
        }
      }
      FUN_1806d8eb0(param_2);
LAB_1806d88c8:
      (**(code **)(*param_2 + 0xd8))(param_2);
      puVar17 = local_c8;
      (**(code **)(*param_2 + 0xd0))(param_2,&local_68,&local_a8,puVar17);
    } while (local_a8 != 0);
    uVar21 = 0;
    puVar24 = local_b8;
    puVar25 = local_c0;
  }
  uVar8 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x14) ^
          (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x10) ^
          (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0xc) ^
          (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 8) ^
          (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 4) ^
          (*(uint *)((longlong)puVar25 + (longlong)puVar24) ^ (uint)local_a0) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  bVar27 = uVar8 == 0;
  uVar15 = (uint)((longlong)(int)uVar8 * 0x1000181);
  bVar26 = (longlong)(int)uVar15 != (longlong)(int)uVar8 * 0x1000181;
  do {
    if (!bVar27 && bVar26 == (int)uVar8 < 0) {
      uVar21 = (~uVar21 + 1 ^ 0xffffffffffffffff) + 1;
    }
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    bVar26 = false;
    bVar27 = false;
  } while (uVar8 != 0);
  uVar8 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x18);
  uVar16 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x1c);
  uVar2 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x20);
  (**(code **)(*param_2 + 200))(param_2);
  uVar3 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x24);
  uVar4 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x28);
  do {
    uVar21 = (~uVar21 + 1 ^ 0xffffffffffffffff) + 1;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar10 = *(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x2c);
  do {
    puVar11 = &local_a4;
    FUN_1806d7b31(puVar11,&local_a4);
    uVar23 = rdtsc();
    *puVar11 = (uint)uVar23 ^ (uint)((ulonglong)uVar23 >> 0x20);
    uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar19 < 0) {
      uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar19 != 0);
  local_a4 = (local_a4 * -0x3d4d7333 >> 0x18 ^ local_a4 * -0x3d4d7333) * -0x166ae57b;
  if (local_a4 < 0x277ac1b) {
    do {
      local_80 = FUN_181194940;
      uVar19 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar19 < 0) {
        uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar19 != 0);
    uVar18 = FUN_181194940(0,0xe919);
    if (1 < uVar18) {
      uVar18 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      puVar1 = (ulonglong *)register0x00000020;
      while (uVar18 != 0xcccccccccccccccc) {
        *puVar1 = uVar21;
        puVar1 = puVar1 + 8;
        uVar18 = *puVar1;
      }
    }
  }
  local_c0 = (uint *)0x495b85555924fcb2;
  local_a0 = CONCAT44(local_a0._4_4_,0x5924fcb2);
  uVar15 = (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x50) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x4c) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x48) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x44) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x40) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x3c) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x38) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x34) ^
           (*(uint *)((longlong)puVar25 + (longlong)puVar24 + 0x30) ^
           (uVar10 ^ (uVar4 ^ (uVar3 ^ (uVar2 ^ (uVar16 ^ (uVar8 ^ uVar15) * 0x1000181) * 0x1000181)
                                       * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181;
  uVar8 = (uVar15 >> 0xf ^ uVar15) >> 3 & 0x7ff;
  uVar15 = (uVar8 << 0xf | uVar8) << 3 ^ uVar15;
  uVar8 = (uVar15 << 10 | uVar15 >> 0x16) ^ 0xac97c3dc;
  uVar15 = ~(uVar8 >> 0x12 | uVar8 << 0xe);
  uVar8 = (uVar15 >> 0xf ^ uVar15) >> 1 & 0x3fff;
  uVar15 = (uVar8 << 0xf | uVar8) * 2 ^ uVar15;
  uVar21 = (ulonglong)uVar15;
  uVar8 = ~(~(uVar15 & 0x5924fcb2) & uVar15);
  if ((~(~(uVar15 & 0x5924fcb2) & 0x5924fcb2) & uVar8) == 0xffffffff) {
    lVar14 = (longlong)(int)local_84;
    uVar23 = 1;
    puVar6 = auStack_e8;
    do {
      puVar13 = puVar6;
                    /* WARNING: Call to offcut address within same function */
      *(undefined8 *)(puVar13 + -8) = 0x1806d8d68;
      lVar20 = lVar14;
      func_0x0001806d8217();
      *(ulonglong *)(puVar13 + -8) = uVar21;
      *(uint **)(puVar13 + -0x10) = puVar25;
      *(undefined8 *)(puVar13 + -0x18) = uVar23;
      lVar20 = -lVar20;
      register0x00000020 =
           (BADSPACEBASE *)
           (((~-(longlong)register0x00000020 + 1U ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) +
           1);
      uVar23 = *(undefined8 *)(puVar13 + lVar20 + 0x798);
      puVar25 = *(uint **)(puVar13 + lVar20 + 0x7a0);
      uVar21 = *(ulonglong *)(puVar13 + lVar20 + 0x7a8);
      uVar8 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      puVar6 = puVar13 + lVar20 + 0x7b0;
    } while (uVar8 != 0);
    if (local_50 < 0x10) {
      *(undefined **)(puVar13 + lVar20 + 0x7a8) = &UNK_1806d8e50;
    }
    pvVar5 = (void *)CONCAT71(uStack_67,local_68);
    _Memory = pvVar5;
    if ((0xfff < local_50 + 1) &&
       (_Memory = *(void **)((longlong)pvVar5 + -8),
       0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      *(undefined **)(puVar13 + lVar20 + 0x7a8) = &UNK_1806d8e71;
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    *(undefined1 **)(puVar13 + lVar20 + 0x7a8) = &LAB_1806d8e42;
    free(_Memory);
  }
  thunk_FUN_1805a9280((longlong)(int)local_88,uVar8,uVar21,puVar17);
  return;
}



############ FUN_ 1809c83d0 size=2531 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001809c8ca6) */
/* WARNING: Removing unreachable block (ram,0x0001809c8511) */
/* WARNING: Removing unreachable block (ram,0x0001809c840f) */
/* WARNING: Removing unreachable block (ram,0x0001809c8525) */
/* WARNING: Removing unreachable block (ram,0x0001809c8df7) */
/* WARNING: Removing unreachable block (ram,0x0001809c8422) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_1809c83d0(ulonglong param_1,longlong *param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  uint uVar23;
  uint uVar24;
  ulonglong uVar25;
  longlong lVar26;
  undefined1 *puVar27;
  undefined8 uVar28;
  undefined8 in_R11;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  puVar27 = auStack_58;
  uVar1 = (uint)&stack0x00000000 & 0x18ff;
  uVar23 = (uVar1 + 1) * uVar1 + 0x5267 & 0x80000001;
  uVar1 = (((uint)(iRam00000001815c8188 * 0x401) >> 6 ^ iRam00000001815c8188 * 0x401) +
          iRam00000001815c818c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8190) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8194) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8198) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c819c) * 0x401;
  iVar2 = (**(code **)(*param_2 + 0x18))(param_2,"CommandTarget");
  iVar3 = (**(code **)(*param_2 + 0x28))(param_2,"serialNumber",10);
  iVar4 = (**(code **)(*param_2 + 0x90))(param_2,*(undefined8 *)(param_1 + 8));
  iVar5 = (**(code **)(*param_2 + 0x30))(param_2);
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81a0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81a4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81a8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81ac) * 0x401;
  iVar6 = (**(code **)(*param_2 + 0x28))(param_2,"connectionID",8);
  iVar7 = (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(param_1 + 0x10));
  iVar8 = (**(code **)(*param_2 + 0x30))(param_2);
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81b0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_1815c81b4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_1815c81b8) * 0x401;
  do {
    uVar25 = 0x4b1c;
    func_0x0001809c79ed();
    if ((uVar25 & 0xdb00) == 0) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    FUN_1809c7f0e();
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  iVar9 = (**(code **)(*param_2 + 0x28))(param_2,"sequenceNumber",8,3);
  uVar1 = (DAT_1815c81bc + (uVar1 ^ uVar1 >> 6)) * 0x401;
  iVar10 = (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(param_1 + 0x14));
  uVar1 = ((uVar1 >> 6 ^ uVar1) + _DAT_1815c81c0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81c4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81c8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81cc) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81d0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81d4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81d8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81dc) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81e0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81e4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81e8) * 0x401;
  iVar11 = (**(code **)(*param_2 + 0x30))(param_2);
  iVar12 = (**(code **)(*param_2 + 0x28))(param_2,"iLokVersionInterface");
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81ec) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81f0) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81f4) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81f8) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c81fc) * 0x401;
  iVar13 = (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(param_1 + 0x18));
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8200) * 0x401;
  do {
    uVar25 = ~(~param_1 + 1);
    param_1 = uVar25 + 1;
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  uVar1 = (iRam00000001815c8204 + (uVar1 ^ uVar1 >> 6)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8208) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c820c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8210) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8214) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8218) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c821c) * 0x401;
  iVar14 = (**(code **)(*param_2 + 0x30))(param_2);
  iVar15 = (**(code **)(*param_2 + 0x28))(param_2,"usbChunkSize",8);
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8220) * 0x401;
  iVar16 = (**(code **)(*param_2 + 0x88))(param_2,*(undefined4 *)(uVar25 + 0x1d));
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8224) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8228) * 0x401;
  iVar17 = (**(code **)(*param_2 + 0x30))(param_2);
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c822c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8230) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8234) * 0x401;
  uVar28 = 6;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_1815c8238) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_1815c823c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + DAT_1815c8240) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + _DAT_1815c8244) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8248) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c824c) * 0x401;
  iVar18 = (**(code **)(*param_2 + 0x28))(param_2,"readExtraResultDataFlag");
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8250) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8254) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8258) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c825c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8260) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8264) * 0x401;
  iVar19 = (**(code **)(*param_2 + 0x70))(param_2,*(undefined1 *)(uVar25 + 0x21));
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8268) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c826c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8270) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8274) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8278) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c827c) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8280) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + iRam00000001815c8284) * 0x401;
  iVar20 = (**(code **)(*param_2 + 0x30))(param_2);
  iVar21 = (**(code **)(*param_2 + 0x38))(param_2);
  iVar22 = (**(code **)(*param_2 + 0x20))(param_2);
  uVar1 = (uVar1 >> 6 ^ uVar1) + 0x96547536;
  do {
    func_0x0001809c9139();
    uVar24 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar24 < 0) {
      uVar24 = (uVar24 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar24 != 0);
  if ((char)(((uVar1 >> 7 | uVar1 * 0x2000000) != 0x4d1f4ab6) * '\"') != '\0') {
                    /* WARNING: Call to offcut address within same function */
    func_0x0001809c8b44();
    uVar25 = thunk_FUN_1805a9280();
    return uVar25;
  }
  do {
    *(undefined8 *)(puVar27 + -8) = 0x1809c8cfa;
    lVar26 = (longlong)(int)(((int)(uVar23 | -uVar23) >> 0x1f ^ 0xfffffebfU) & 0xed5b);
    func_0x0001809c9139();
    *(longlong **)(puVar27 + -8) = param_2;
    *(undefined8 *)(puVar27 + -0x10) = uVar28;
    *(undefined8 *)(puVar27 + -0x18) = in_R11;
    lVar26 = -lVar26;
    in_R11 = *(undefined8 *)(puVar27 + lVar26 + 0x128);
    uVar28 = *(undefined8 *)(puVar27 + lVar26 + 0x130);
    param_2 = *(longlong **)(puVar27 + lVar26 + 0x138);
    puVar27 = puVar27 + lVar26 + 0x140;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  return (ulonglong)
         (uint)(iVar2 + iVar3 + iVar4 + iVar5 + iVar6 + iVar7 + iVar8 + iVar9 + iVar10 + iVar11 +
                iVar12 + iVar13 + iVar14 + iVar15 + iVar16 + iVar17 + iVar18 + iVar19 + iVar20 +
                iVar21 + iVar22);
}



############ FUN_ 1815986c0 size=4334 ############

/* WARNING: Instruction at (ram,0x000181598c18) overlaps instruction at (ram,0x000181598c16)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000181599859) */
/* WARNING: Removing unreachable block (ram,0x000181598bab) */
/* WARNING: Removing unreachable block (ram,0x000181598a2a) */
/* WARNING: Removing unreachable block (ram,0x0001815987be) */
/* WARNING: Removing unreachable block (ram,0x0001815987d9) */
/* WARNING: Removing unreachable block (ram,0x000181598a96) */
/* WARNING: Removing unreachable block (ram,0x000181598c12) */
/* WARNING: Removing unreachable block (ram,0x000181598936) */
/* WARNING: Removing unreachable block (ram,0x00018159872c) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_1815986c0(undefined8 param_1)

{
  int iVar1;
  undefined1 *puVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  uint uVar7;
  uint uVar8;
  undefined4 uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  longlong lVar16;
  undefined1 *puVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  int iVar21;
  ulonglong uVar22;
  undefined8 uVar23;
  int unaff_retaddr;
  undefined1 auStack_118 [32];
  undefined8 local_f8;
  undefined8 local_f0;
  uint local_e8;
  uint local_e4;
  uint local_e0;
  uint local_dc;
  undefined4 local_d8;
  uint local_d4;
  int local_d0;
  undefined4 local_cc;
  undefined4 local_c8;
  int local_c4;
  uint local_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined4 local_ac;
  longlong local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  code *local_90;
  uint local_84;
  int local_80;
  int local_70;
  int local_6c;
  uint local_68;
  int local_64;
  uint local_58;
  uint local_54;
  ulonglong local_30;
  uint7 uVar24;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_118;
  local_b8 = param_1;
  local_d0 = 0x240;
  local_c4 = 0xb40;
  local_f0 = 0x181467b1c;
  do {
    local_c8 = 0x2cbde26;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  local_f8 = 0x327e1224fe6bcd28;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = ~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((iRam0000000181467a1c *
                                                                          0x6b + 
                                                  iRam0000000181467a20) * 0x6b +
                                                  iRam0000000181467a24) * 0x6b +
                                                  iRam0000000181467a28) * 0x6b +
                                                  iRam0000000181467a2c) * 0x6b +
                                                  iRam0000000181467a30) * 0x6b +
                                                  iRam0000000181467a34) * 0x6b +
                                                  iRam0000000181467a38) * 0x6b +
                                                  iRam0000000181467a3c) * 0x6b +
                                                  iRam0000000181467a40) * 0x6b +
                                                  iRam0000000181467a44) * 0x6b +
                                                  iRam0000000181467a48) * 0x6b +
                                                  iRam0000000181467a4c) * 0x6b +
                                                  iRam0000000181467a50) * 0x6b +
                                                  iRam0000000181467a54) * 0x6b +
                                                  iRam0000000181467a58) * 0x6b + DAT_181467a5c) *
                                                  0x6b + iRam0000000181467a60) * 0x6b +
                                                  iRam0000000181467a64) * 0x6b +
                                                  iRam0000000181467a68) * 0x6b +
                                                  iRam0000000181467a6c) * 0x6b +
                                                  iRam0000000181467a70) * 0x6b +
                                                  iRam0000000181467a74) * 0x6b +
                                                  iRam0000000181467a78) * 0x6b +
                                                  iRam0000000181467a7c) * 0x6b +
                                                 iRam0000000181467a80) * 0x6b + iRam0000000181467a84
                                                ) * 0x6b + iRam0000000181467a88) * 0x6b +
                                              iRam0000000181467a8c) * 0x6b + iRam0000000181467a90) *
                                             0x6b + iRam0000000181467a94) * 0x6b +
                                           iRam0000000181467a98) * 0x6b + iRam0000000181467a9c) *
                                          0x6b + iRam0000000181467aa0) * 0x6b + iRam0000000181467aa4
                                        ) * 0x6b + iRam0000000181467aa8) * 0x6b +
                                      iRam0000000181467aac) * 0x6b + iRam0000000181467ab0) * 0x6b +
                                    iRam0000000181467ab4) * 0x6b + iRam0000000181467ab8) * 0x6b +
                                  iRam0000000181467abc) * 0x6b + iRam0000000181467ac0) * 0x6b +
                                iRam0000000181467ac4) * 0x6b + iRam0000000181467ac8) * 0x6b +
                              iRam0000000181467acc) * 0x6b + iRam0000000181467ad0) * 0x6b +
                            iRam0000000181467ad4) * 0x6b + iRam0000000181467ad8) * 0x6b +
                          iRam0000000181467adc) * 0x6b + iRam0000000181467ae0) * 0x6b +
                        iRam0000000181467ae4) * 0x6b + iRam0000000181467ae8) * 0x6b +
                      iRam0000000181467aec) * 0x6b + iRam0000000181467af0) * 0x6b +
                    iRam0000000181467af4) * 0x6b + iRam0000000181467af8) * 0x6b +
                  iRam0000000181467afc) * 0x6b + iRam0000000181467b00) * 0x6b + iRam0000000181467b04
                ) * 0x6b + iRam0000000181467b08) * 0x6b + iRam0000000181467b0c) * 0x6b +
             iRam0000000181467b10) * 0x6b + iRam0000000181467b14) * 0x6b + iRam0000000181467b18);
  uVar10 = uVar7 >> 0x12 | uVar7 << 0xe;
  uVar7 = (uVar10 >> 6 ^ uVar10) >> 6 & 0x1f;
  do {
    FUN_18159a84c(0xfd08);
                    /* WARNING: Call to offcut address within same function */
    func_0x0001815991b8();
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    local_e8 = 0x73120fbf;
    local_b0 = 0x56;
    local_a8 = 0x181598d07;
    FUN_1815975c3();
    iVar1 = local_d0;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar11 = (local_e8 << 4 | local_e8 >> 0x1c) & 0xa5a5a5a5 |
           (local_e8 >> 4 | local_e8 << 0x1c) & 0x5a5a5a5a;
  uVar8 = (uVar11 >> 4 ^ uVar11) >> 4 & 7;
  uVar8 = (uVar11 << 0x1d | ((uVar8 << 4 | uVar8) << 4 ^ uVar11) >> 3) ^ 0xaa516df;
  uVar8 = uVar8 >> 2 & 0xcccccccc | uVar8 << 0x1e | (uVar8 & 0xccccccc) << 2 | (uVar11 & 7) >> 1;
  uVar11 = (uVar8 << 5 | uVar8 >> 0x1b) + 0x1c46f08e;
  uVar8 = (uVar11 >> 0x13 ^ uVar11) >> 2 & 0xff;
  local_e8 = ((uVar8 << 0x13 | uVar8) << 2 ^ uVar11) + 0x816a18c4;
  do {
    local_d8 = 0x2f4b1db9;
    local_ac = 0x3d;
    local_a0 = 0x181598dd6;
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  uVar22 = 0;
  lVar16 = (int)local_e8 + local_a8;
  local_e8 = 0;
  local_d8 = 0;
  *(longlong *)(lVar16 + 4) =
       *(longlong *)(lVar16 + 4) + ((ulonglong)dvs_0xad0fb2df_mfort6317_ >> 0x1d & 0x89020012);
  do {
    uVar23 = rdtsc();
    uVar8 = (int)uVar23 + (int)((ulonglong)uVar23 >> 0x20);
    lVar4 = (ulonglong)(uVar8 >> 8) + 0x39084f2f + (ulonglong)uVar8 * 4;
    uVar3 = lVar4 * 0x100 ^ lVar4 * 0x20000 - 0x20e32347U;
    uVar3 = ((uVar3 >> 0x10) - 0x7c8e5ec7) + uVar3 * 2;
    uVar3 = uVar3 ^ (uVar3 >> 0xc | uVar3 << 0x34) + 0x5817e692;
    uVar3 = uVar3 >> 0xb | uVar3 << 0x35;
    uVar3 = uVar3 + (uVar3 >> 5);
    uVar3 = uVar3 - ((uVar3 * 0x80 | uVar3 >> 0x39) - 0xb6ae0fd);
    lVar4 = uVar3 - (uVar3 >> 5 | uVar3 << 0x3b);
    uVar8 = ((int)lVar4 * 0x400 | (uint)((ulonglong)lVar4 >> 0x36)) & 0x56b761ec;
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  *(int *)(lVar16 + 8) = *(int *)(lVar16 + 8) + (uVar8 ^ 0xd9c2f4e1);
  *(int *)(lVar16 + 4) = *(int *)(lVar16 + 4) + (uVar8 ^ 0x849a9230);
  uVar3 = *(ulonglong *)(lVar16 + 4);
  uVar5 = uVar3 << 0x11 | uVar3 >> 0x2f;
  uVar3 = ~(uVar5 >> 2 & 0xcccccccccccccccc | (uVar3 >> 0x2f) << 0x3e |
           (uVar5 & 0xccccccccccccccc) << 2 | (uVar3 & 0x7fffffffffff) >> 0x2d);
  uVar9 = (undefined4)((uVar3 >> 0x20 ^ uVar3) >> 2);
  uVar3 = ((CONCAT44(uVar9,uVar9) & 0xffffffff3fffffff) << 2 ^ uVar3) + 0xdc843f56b6df640a;
  uVar3 = (uVar3 * 0x10000 | uVar3 >> 0x30) & 0x86cc793386cc7933 |
          (uVar3 >> 0x10 | uVar3 << 0x30) & 0x793386cc793386cc;
  uVar3 = ((uVar3 << 0x10 | uVar3 >> 0x30) & 0xe8c91736e8c91736 |
          (uVar3 >> 0x10 | uVar3 << 0x30) & 0x1736e8c91736e8c9) ^ 0xc907526fc8cd6cac;
  uVar3 = (uVar3 >> 8 | uVar3 << 0x38) & 0x8f708f708f708f70 |
          (uVar3 << 8 | uVar3 >> 0x38) & 0x708f708f708f708f;
  *(ulonglong *)(lVar16 + 4) = uVar3;
  dvs_0xad0fb2df_mfort6317_ =
       (uint *)((longlong)dvs_0xad0fb2df_mfort6317_ + (ulonglong)((uint)(uVar3 >> 0x16) & 0xa405095)
               );
  local_e4 = (uint)(*(ulonglong *)(lVar16 + 4) >> 0x1d) & 0x7fffffff;
  uVar11 = (uint)(*(ulonglong *)(lVar16 + 4) >> 1);
  local_dc = uVar11 ^ 0x3d230467;
  uVar3 = *(ulonglong *)(lVar16 + 4) ^ 0x7cd6dc159a74d122;
  local_84 = local_dc;
  local_80 = (int)uVar3;
  uVar12 = (uint)(uVar3 >> 0x20);
  uVar8 = local_80 + 0xf1e309f9;
  uVar13 = uVar12 ^ 0x4a5a460c ^ uVar8;
  uVar14 = uVar13 & 0xbfbc7e44 ^ uVar8 ^ 0xe070a390;
  uVar8 = (uVar13 & 0x404381bb ^ uVar8) + 0xf864faf4;
  uVar11 = uVar11 ^ 0x652df480;
  uVar13 = (uVar14 >> 9 ^ uVar14) >> 4 & 0xff;
  uVar14 = (uVar13 << 9 | uVar13) << 4 ^ uVar14;
  uVar13 = uVar14 ^ 0x17d56d53;
  uVar19 = (uVar11 >> 0xe ^ uVar11) >> 2 & 0x3fff;
  uVar14 = uVar14 ^ 0x85458c17;
  uVar20 = (uVar8 >> 10 ^ uVar8) >> 0xb & 3;
  uVar15 = uVar14 & 0x61fa746d ^ uVar13 ^ 0x4742c5fd;
  uVar18 = (uVar14 & 0x9e058b92 ^ uVar13) + 0xf3638a6a;
  uVar11 = uVar11 ^ ((uVar19 << 0xe | uVar19) ^ 0xe46c1535) << 2;
  uVar20 = ((uVar20 << 10 | uVar20) << 0xb ^ uVar8 ^ 0x3e728703) + 0xea956873;
  uVar5 = (ulonglong)uVar20;
  uVar13 = (uVar20 >> 10 ^ uVar20) >> 10 & 0x7f;
  uVar8 = (uVar15 >> 7 ^ uVar15) & 3;
  uVar14 = (uVar11 >> 0xf ^ uVar11) >> 2 & 0x7fff;
  lVar16 = (longlong)local_c4;
  uVar19 = (uVar18 >> 5 ^ uVar18) >> 2 & 0x1f;
  uVar3 = (ulonglong)uVar19;
  iVar21 = ((uVar8 << 7 | uVar8) ^ uVar15) + 0x933d3959;
  local_f0 = CONCAT44(uVar12,iVar21);
  do {
    uVar23 = rdtsc();
    local_c0 = (int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) * 2;
    uVar6 = ((ulonglong)(local_c0 >> 6) | (ulonglong)local_c0 << 0x3a) + (ulonglong)local_c0 * 8;
    lVar4 = uVar6 + (uVar6 >> 5 | uVar6 << 0x3b) + 0x51605da2;
    uVar6 = lVar4 - (lVar4 * 0x90000 | (ulonglong)(lVar4 * 9) >> 0x30);
    uVar3 = ~-uVar3 + 1;
    uVar6 = (uVar6 ^ (uVar6 >> 0xf | uVar6 << 0x31)) >> 5;
    uVar6 = uVar6 - (uVar6 * 5 >> 0xc);
    uVar6 = uVar6 ^ uVar6 >> 10;
    if ((short)((ushort)uVar6 & 0xfffe) < 1) {
      uVar22 = -((uVar22 ^ 0xffffffffffffffff) + 1);
    }
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  local_d4 = (uint)uVar6 >> 1 ^ local_e4;
  if (local_d4 < 0xa73c) {
    do {
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    local_e0 = 0xd5bd9a94;
    do {
      local_98 = 0x181599533;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    local_cc = 0xff6aebbd;
    local_70 = iVar21;
    local_6c = ((uVar14 << 0xf | uVar14) << 2 ^ uVar11) + 0x49b8f865;
    local_68 = (uVar13 << 10 | uVar13) << 10 ^ uVar20 ^ 0x5468063c;
    local_64 = ((uVar19 << 5 | uVar19) << 2 ^ uVar18) + 0xf6b09850;
    FUN_180c480f0(&local_70,&local_58);
    uVar5 = 7;
    do {
      uVar8 = (local_58 >> 0x1c ^ local_58) >> 2 & 1;
      uVar11 = (local_54 >> 0xc ^ local_54) & 0x3ff;
      uVar14 = (uVar8 << 0x1c | uVar8) << 2 ^ local_58 ^ 0xa0a9bf0b;
      uVar8 = ((uVar11 << 0xc | uVar11) ^ local_54) + 0xc12e6b24 ^ uVar14;
      uVar11 = (uVar8 & 0x7fbcc1e5 ^ uVar14) + 0x240e52d0 ^ 0x1e08654e;
      uVar8 = uVar8 & 0x80433e1a ^ uVar14 ^ 0xf83d4d4c ^ uVar11;
      local_54 = (uVar8 & 0x22ae79d2 ^ uVar11) + 0xe4ebf231;
      uVar8 = (uVar8 & 0xdd51862d ^ uVar11) + 0x916c9021;
      uVar11 = (uVar8 >> 0xd ^ uVar8) >> 8 & 0x3ff;
      local_58 = uVar8 ^ (uVar11 << 0xd | uVar11) << 8;
      uVar11 = (local_54 >> 0x11 ^ local_54) >> 5 & 0x1f;
      local_54 = local_54 ^ (uVar11 << 0x11 | uVar11) << 5;
      uVar11 = (int)uVar5 - 1;
      uVar5 = (ulonglong)uVar11;
    } while (-1 < (int)uVar11);
    uVar8 = uVar8 * 0x4000000 | local_58 >> 6;
    uVar3 = (ulonglong)uVar8;
    uVar8 = uVar8 + 0xa2e83222;
    uVar8 = (uVar8 * 0x400000 | uVar8 >> 10) ^ 0xd1d5f6eb;
    uVar8 = (uVar8 << 0x13 | uVar8 >> 0xd) + 0x3709fa40;
    if ((~(uVar8 * 0x80 | uVar8 >> 0x19) + 0x77094f1f ^ local_e0) + local_54 != local_dc) {
      do {
        local_90 = FUN_180bc2920;
        uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar8 < 0) {
          uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar8 != 0);
      FUN_180bc2920();
      do {
        uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar8 < 0) {
          uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar8 != 0);
    }
  }
  uVar24 = (uint7)(uVar22 >> 8);
  uVar23 = CONCAT71(uVar24,((uVar7 << 6 | uVar7) << 6 ^ uVar10) + 0x870e40af == (int)local_f8);
  puVar2 = auStack_118;
  if ((int)uVar23 != (int)(((ulonglong)uVar24 & 0xffffff) << 6)) {
    do {
      puVar17 = puVar2;
      *(ulonglong *)(puVar17 + -8) = uVar5;
      *(ulonglong *)(puVar17 + -0x10) = uVar3;
      *(undefined8 *)(puVar17 + -0x18) = uVar23;
      lVar4 = -lVar16;
      uVar23 = *(undefined8 *)(puVar17 + lVar4 + 0xb28);
      uVar3 = *(ulonglong *)(puVar17 + lVar4 + 0xb30);
      uVar5 = *(ulonglong *)(puVar17 + lVar4 + 0xb38);
      uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
      }
      puVar2 = puVar17 + lVar4 + 0xb40;
    } while (uVar7 != 0);
    *(undefined **)(puVar17 + lVar4 + 0xb38) = &UNK_181599910;
  }
  thunk_FUN_1805a9280((longlong)iVar1,0x1815997ac);
  return;
}



############ FUN_ 1809ff850 size=2312 ############

/* WARNING: Instruction at (ram,0x0001809ffd19) overlaps instruction at (ram,0x0001809ffd18)
    */
/* WARNING: Removing unreachable block (ram,0x0001809ff964) */
/* WARNING: Removing unreachable block (ram,0x0001809ff8f5) */
/* WARNING: Removing unreachable block (ram,0x0001809ff8d2) */
/* WARNING: Removing unreachable block (ram,0x0001809ff913) */
/* WARNING: Removing unreachable block (ram,0x0001809ff918) */
/* WARNING: Removing unreachable block (ram,0x0001809ffc72) */
/* WARNING: Removing unreachable block (ram,0x0001809ff8e2) */

ulonglong FUN_1809ff850(ulonglong param_1,byte *param_2,uint param_3,IMAGE_DOS_HEADER *param_4)

{
  undefined1 *puVar1;
  IMAGE_DOS_HEADER *pIVar2;
  int iVar3;
  ulonglong uVar4;
  byte *pbVar5;
  uint uVar6;
  uint uVar7;
  IMAGE_DOS_HEADER *pIVar8;
  longlong lVar9;
  byte *pbVar10;
  char cVar11;
  byte *pbVar12;
  undefined1 *puVar13;
  ulonglong *puVar14;
  undefined1 *puVar15;
  ulonglong uVar16;
  IMAGE_DOS_HEADER *pIVar17;
  ulonglong uVar18;
  uint uVar19;
  bool bVar20;
  int unaff_retaddr;
  ulonglong uStack_80;
  undefined1 auStack_78 [32];
  undefined4 local_58;
  undefined *local_48;
  
  puVar13 = auStack_78;
  local_58 = 0xe90;
  pIVar17 = &IMAGE_DOS_HEADER_180000000;
  local_48 = &DAT_1815d2448;
  do {
    param_4 = (IMAGE_DOS_HEADER *)((-(longlong)param_4 ^ 0xffffffffffffffffU) + 1);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = DAT_1815d2380 ^
          (DAT_1815d237c ^
          (DAT_1815d2378 ^
          (DAT_1815d2374 ^
          (DAT_1815d2370 ^
          (DAT_1815d236c ^
          (DAT_1815d2368 ^
          (DAT_1815d2364 ^
          (DAT_1815d2360 ^
          (DAT_1815d235c ^
          (DAT_1815d2358 ^
          (DAT_1815d2354 ^
          (DAT_1815d2350 ^ (DAT_1815d234c ^ (DAT_1815d2348 ^ 0x811c9dc5) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  bVar20 = uVar6 == 0;
  uVar6 = uVar6 * 0x1000181;
  do {
    uVar4 = 0;
    FUN_1809fe548();
    if ((bVar20) && ((uVar4 & 0xc2) != 0)) {
      param_1 = (ulonglong)(((uint)param_1 | 0x49) ^ uVar6);
    }
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
    bVar20 = uVar7 == 0;
  } while (!bVar20);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (DAT_1815d23c8 ^
          (DAT_1815d23c4 ^
          (DAT_1815d23c0 ^
          (DAT_1815d23bc ^
          (DAT_1815d23b8 ^
          (DAT_1815d23b4 ^
          (DAT_1815d23b0 ^
          (DAT_1815d23ac ^
          (DAT_1815d23a8 ^
          (DAT_1815d23a4 ^
          (DAT_1815d23a0 ^
          (DAT_1815d239c ^
          (DAT_1815d2398 ^
          (DAT_1815d2394 ^
          (DAT_1815d2390 ^
          (DAT_1815d238c ^ (DAT_1815d2388 ^ (DAT_1815d2384 ^ uVar6) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181;
  do {
    pIVar8 = (IMAGE_DOS_HEADER *)0x7528;
    *(undefined8 *)(puVar13 + -8) = 0x1809ffd10;
    FUN_1809fded1();
    pIVar2 = pIVar17;
    if (((ulonglong)pIVar8 & 0xdf00) == 0) {
      puVar14 = (ulonglong *)(puVar13 + -8);
      puVar13 = puVar13 + -8;
      *puVar14 = (ulonglong)uVar6;
      pIVar2 = pIVar8;
      param_4 = pIVar17;
    }
    pIVar17 = pIVar2;
                    /* WARNING: Call to offcut address within same function */
    *(undefined8 *)(puVar13 + -8) = 0x1809ffd34;
    func_0x0001809ffc63();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = DAT_1815d23d0 ^ (DAT_1815d23cc ^ uVar6) * 0x1000181;
  do {
    *(undefined8 *)(puVar13 + -8) = 0x1809ffd9e;
    FUN_180a0094f(0x7528);
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = DAT_1815d2410 ^
          (DAT_1815d240c ^
          (DAT_1815d2408 ^
          (DAT_1815d2404 ^
          (DAT_1815d2400 ^
          (DAT_1815d23fc ^
          (DAT_1815d23f8 ^
          (DAT_1815d23f4 ^
          (DAT_1815d23f0 ^
          (DAT_1815d23ec ^
          (DAT_1815d23e8 ^
          (DAT_1815d23e4 ^
          (DAT_1815d23e0 ^
          (DAT_1815d23dc ^
          (DAT_1815d23d8 ^ (DAT_1815d23d4 ^ uVar6 * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
          ) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) *
          0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  bVar20 = uVar6 == 0;
  do {
    uVar4 = 0;
    *(undefined8 *)(puVar13 + -8) = 0x1809ffeaa;
    iVar3 = FUN_1809fe40a();
    if ((bVar20) && ((uVar4 & 0xc1) != 0)) {
      return (ulonglong)
             CONCAT31((int3)((uint)(iVar3 + 0x2a04eb01) >> 8),(char)(iVar3 + 0x2a04eb01) + '$');
    }
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
    bVar20 = uVar7 == 0;
  } while (!bVar20);
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar4 = 0;
  *(undefined8 *)(puVar13 + 0x80) = 0xe0a0c7bba5386ee8;
  *(int *)(puVar13 + 0x80) = (int)*(undefined8 *)(puVar13 + 0x80);
  uVar6 = ((DAT_1815d2440 ^
           (DAT_1815d243c ^
           (DAT_1815d2438 ^
           (DAT_1815d2434 ^
           (DAT_1815d2430 ^
           (DAT_1815d242c ^
           (DAT_1815d2428 ^
           (DAT_1815d2424 ^
           (DAT_1815d2420 ^
           (DAT_1815d241c ^
           (DAT_1815d2418 ^ (DAT_1815d2414 ^ uVar6 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181 ^ DAT_1815d2444) * 0x1000181 ^ 0x3eca6bdc;
  uVar7 = uVar6 << 0x17 | uVar6 >> 9;
  uVar7 = (uVar7 << 4 | (uVar6 & 0x1ff) >> 5) & 0xa5a5a5a5 |
          (uVar7 >> 4 | (uVar6 >> 9) << 0x1c) & 0x5a5a5a5a;
  uVar6 = (uVar7 >> 0xf ^ uVar7) >> 1 & 0x3fff;
  uVar7 = uVar7 ^ (uVar6 << 0xf | uVar6) * 2;
  uVar19 = (uVar7 >> 8 | uVar7 << 0x18) & 0x44bb44bb;
  uVar7 = ((uVar7 << 8 | uVar7 >> 0x18) & 0xbb44bb44 | uVar19) + 0x9a3aa2a1;
  uVar16 = (ulonglong)uVar7;
  uVar6 = ~(*(uint *)(puVar13 + 0x80) & uVar7);
  if ((~(uVar6 & *(uint *)(puVar13 + 0x80)) & ~(uVar6 & uVar7)) != 0xffffffff) {
    *(undefined1 **)(puVar13 + -8) = puVar13 + 0x78;
    *(ulonglong *)(puVar13 + -0x10) = (ulonglong)uVar19;
    *(ulonglong *)(puVar13 + -0x18) = param_1;
    uVar4 = thunk_FUN_1805a9280();
    return uVar4;
  }
  iVar3 = *(int *)(puVar13 + 0x20);
  puVar1 = puVar13;
  do {
    puVar15 = puVar1;
    *(undefined8 *)(puVar15 + -8) = 0x180a001ac;
    lVar9 = (longlong)iVar3;
    FUN_180a01a12();
    *(ulonglong *)(puVar15 + -8) = uVar16;
    *(ulonglong *)(puVar15 + -0x10) = uVar4;
    *(ulonglong *)(puVar15 + -0x18) = param_1;
    lVar9 = -lVar9;
    param_1 = *(ulonglong *)(puVar15 + lVar9 + 0xe78);
    uVar4 = *(ulonglong *)(puVar15 + lVar9 + 0xe80);
    uVar16 = *(ulonglong *)(puVar15 + lVar9 + 0xe88);
    uVar6 = (*(int *)(puVar13 + 0x78) + 1) * *(int *)(puVar13 + 0x78) & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    puVar1 = puVar15 + lVar9 + 0xe90;
  } while (uVar6 != 0);
  if ((((param_1 == 0) || (param_2 == (byte *)0x0)) || (param_4 == (IMAGE_DOS_HEADER *)0x0)) ||
     (0x500 < param_3)) {
    return 99;
  }
  *(undefined8 *)(puVar15 + lVar9 + 0xe88) = 0x180a00271;
  FUN_1806214e0(param_4,0,0x10);
  if (param_3 != 0) {
    cVar11 = '\0';
    pbVar12 = param_2 + param_3;
    for (; param_2 < pbVar12; param_2 = param_2 + (uVar6 + uVar7)) {
      *(undefined8 *)(puVar15 + lVar9 + 0xe88) = 0x180a002a0;
      uVar6 = FUN_180a00950(param_1,param_2,puVar15 + lVar9 + 0xeb4);
      uVar16 = (ulonglong)uVar6;
      if (0x500 < uVar6) {
        return 0x133;
      }
      uVar7 = *(uint *)(puVar15 + lVar9 + 0xeb4);
      if (pbVar12 < param_2 + uVar16 + uVar7) {
        return 0x133;
      }
      if ((*param_2 & 0xc0) != 0x80) {
        if (cVar11 == '\x03') {
          if (*param_2 != 0x30) {
            return 0x133;
          }
          pbVar12 = param_2 + uVar7;
          do {
            if (pbVar12 == (byte *)0x0) {
              return 0x133;
            }
            if (0x13ff < (int)uVar16 - 1U) {
              return 0x133;
            }
            if (pbVar12 + uVar16 <= pbVar12) {
              return 0x133;
            }
            *(undefined8 *)(puVar15 + lVar9 + 0xe88) = 0x180a0031c;
            uVar6 = FUN_180a00950(param_1,pbVar12,puVar15 + lVar9 + 0xeb8);
            if (0x500 < uVar6) {
              return 0x133;
            }
            uVar18 = (ulonglong)*(uint *)(puVar15 + lVar9 + 0xeb8);
            pbVar5 = pbVar12 + uVar18 + uVar6;
            if (pbVar12 + uVar16 < pbVar5) {
              return 0x133;
            }
            if (1 < (byte)(*pbVar12 - 0x17)) {
              return 0x133;
            }
            uVar16 = (ulonglong)(uint)((int)uVar16 + ((int)(param_2 + uVar7) - (int)pbVar5));
            if (param_4 != (IMAGE_DOS_HEADER *)0x0) {
              if (*pbVar12 == 0x17) {
                if (uVar6 != 0xd) {
                  return 0x14b;
                }
                pbVar10 = pbVar12 + uVar18;
                uVar6 = 0x20;
                if (0x34 < pbVar12[uVar18]) {
                  uVar6 = 0x19;
                }
              }
              else {
                if (uVar6 != 0xf) {
                  return 0x14b;
                }
                pbVar10 = pbVar12 + uVar18 + 2;
                uVar6 = pbVar12[uVar18 + 1] - 0x30 | (pbVar12[uVar18] - 0x30) * 0x10;
              }
              uVar6 = (((((*pbVar10 - 0x30 | uVar6 << 4) << 4 | pbVar10[1] - 0x30) << 4 |
                        pbVar10[2] - 0x30) << 4 | pbVar10[3] - 0x30) << 4 | pbVar10[4] - 0x30) << 4
                      | pbVar10[5] - 0x30;
              param_4->e_magic[0] = (char)uVar6;
              param_4->e_magic[1] = (char)(uVar6 >> 8);
              param_4->e_cblp = (short)(uVar6 >> 0x10);
              iVar3 = (((((pbVar10[7] - 0x30 | (pbVar10[6] - 0x30) * 0x10) << 4 | pbVar10[8] - 0x30)
                         << 4 | pbVar10[9] - 0x30) << 4 | pbVar10[10] - 0x30) << 4 |
                      pbVar10[0xb] - 0x30) << 8;
              param_4->e_cp = (short)iVar3;
              param_4->e_crlc = (short)((uint)iVar3 >> 0x10);
            }
            uVar6 = (int)uVar4 + 1;
            uVar4 = (ulonglong)uVar6;
            param_4 = (IMAGE_DOS_HEADER *)(*(longlong *)(puVar15 + lVar9 + 0xf28) + 8);
            pbVar12 = pbVar5;
          } while (uVar6 < 2);
          return 0;
        }
        cVar11 = cVar11 + '\x01';
      }
    }
  }
  return 0x133;
}



############ FUN_ 18096f860 size=2850 ############

/* WARNING: Instruction at (ram,0x00018096fbc3) overlaps instruction at (ram,0x00018096fbc2)
    */
/* WARNING: Removing unreachable block (ram,0x00018097010a) */
/* WARNING: Removing unreachable block (ram,0x00018096fbbe) */
/* WARNING: Removing unreachable block (ram,0x00018096f885) */
/* WARNING: Removing unreachable block (ram,0x00018096fbad) */
/* WARNING: Removing unreachable block (ram,0x0001809703e7) */
/* WARNING: Removing unreachable block (ram,0x0001809700de) */
/* WARNING: Switch with 1 destination removed at 0x00018097030e */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_18096f860(int *param_1,undefined1 *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  longlong lVar11;
  byte bVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  ulonglong uVar16;
  undefined1 *puVar17;
  int iVar18;
  uint *puVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  ulonglong uVar23;
  ulonglong uVar24;
  int iVar25;
  uint uVar26;
  int unaff_retaddr;
  undefined1 auStack_68 [40];
  
  puVar17 = auStack_68;
  uVar21 = (uint)&stack0x00000000 & 0x17ff;
  uVar20 = (uVar21 * uVar21 * 0x10 + 4) % 0x13;
  uVar21 = (uint)&stack0x00000000 & 0x12ff;
  uVar21 = (uVar21 * uVar21 * 0x10 + 4) % 0x13;
  uVar14 = (int)(-uVar21 | uVar21) >> 0x1f;
  uVar15 = 0x811a1524;
  uVar21 = param_1[1];
  iVar25 = (0x37 < ((byte)uVar21 & 0x3f)) + 1;
  uVar26 = iVar25 * 0x40;
  iVar18 = (*param_1 + uVar21) * 8;
  uVar13 = DAT_1811a1438 ^
           (DAT_1811a1434 ^
           (DAT_1811a1430 ^
           (DAT_1811a142c ^ (DAT_1811a1428 ^ (DAT_1811a1424 ^ 0x811c9dc5) * 0x1000181) * 0x1000181)
           * 0x1000181) * 0x1000181) * 0x1000181;
  memset((void *)((longlong)param_1 + (ulonglong)uVar21 + 8),0,(ulonglong)(uVar26 - uVar21));
  *(undefined1 *)((ulonglong)(uint)param_1[1] + 8 + (longlong)param_1) = 0x80;
  do {
    uVar21 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar21 < 0) {
      uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar21 != 0);
  uVar21 = DAT_1811a144c ^
           (DAT_1811a1448 ^
           (DAT_1811a1444 ^
           (DAT_1811a1440 ^ (DAT_1811a143c ^ uVar13 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181) * 0x1000181;
  *(char *)((longlong)param_1 + (ulonglong)uVar26 + 7) = (char)iVar18;
  uVar21 = DAT_1811a1450 ^ uVar21 * 0x1000181;
  *(char *)((longlong)param_1 + (ulonglong)uVar26 + 6) = (char)((uint)iVar18 >> 8);
  uVar21 = DAT_1811a1458 ^ (DAT_1811a1454 ^ uVar21 * 0x1000181) * 0x1000181;
  *(char *)((longlong)param_1 + (ulonglong)uVar26 + 5) = (char)((uint)iVar18 >> 0x10);
  *(char *)((longlong)param_1 + (ulonglong)uVar26 + 4) = (char)((uint)iVar18 >> 0x18);
  do {
    register0x00000020 = (BADSPACEBASE *)(~(~(ulonglong)register0x00000020 + 1) + 1);
    uVar13 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  do {
    uVar13 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar21 = _UNK_1811a1468 ^
           (_UNK_1811a1464 ^
           (_UNK_1811a1460 ^ (DAT_1811a145c ^ uVar21 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181;
  FUN_180970dd0(param_1,param_1 + 2,iVar25);
  uVar21 = _UNK_1811a1470 ^ (_UNK_1811a146c ^ uVar21 * 0x1000181) * 0x1000181;
  param_2[3] = (char)param_1[0x22];
  do {
    uVar15 = -(~uVar15 + 1);
    uVar13 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  uVar21 = _UNK_1811a147c ^
           (_UNK_1811a1478 ^ (_UNK_1811a1474 ^ uVar21 * 0x1000181) * 0x1000181) * 0x1000181;
  param_2[2] = (char)((uint)param_1[0x22] >> 8);
  param_2[1] = *(undefined1 *)((longlong)param_1 + 0x8a);
  *param_2 = *(undefined1 *)((longlong)param_1 + 0x8b);
  uVar21 = _UNK_1811a148c ^
           (_UNK_1811a1488 ^
           (_UNK_1811a1484 ^ (_UNK_1811a1480 ^ uVar21 * 0x1000181) * 0x1000181) * 0x1000181) *
           0x1000181;
  param_2[7] = (char)param_1[0x23];
  uVar21 = _UNK_1811a1490 ^ uVar21 * 0x1000181;
  param_2[6] = (char)((uint)param_1[0x23] >> 8);
  param_2[5] = *(undefined1 *)((longlong)param_1 + 0x8e);
  param_2[4] = *(undefined1 *)((longlong)param_1 + 0x8f);
  uVar21 = _UNK_1811a149c ^
           (_UNK_1811a1498 ^ (_UNK_1811a1494 ^ uVar21 * 0x1000181) * 0x1000181) * 0x1000181;
  param_2[0xb] = (char)param_1[0x24];
  uVar21 = _UNK_1811a14a0 ^ uVar21 * 0x1000181;
  param_2[10] = (char)((uint)param_1[0x24] >> 8);
  param_2[9] = *(undefined1 *)((longlong)param_1 + 0x92);
  param_2[8] = *(undefined1 *)((longlong)param_1 + 0x93);
  uVar21 = _UNK_1811a14a4 ^ uVar21 * 0x1000181;
  param_2[0xf] = (char)param_1[0x25];
  param_2[0xe] = (char)((uint)param_1[0x25] >> 8);
  param_2[0xd] = *(undefined1 *)((longlong)param_1 + 0x96);
  uVar21 = _UNK_1811a14a8 ^ uVar21 * 0x1000181;
  param_2[0xc] = *(undefined1 *)((longlong)param_1 + 0x97);
  uVar21 = _UNK_1811a14ac ^ uVar21 * 0x1000181;
  param_2[0x13] = (char)param_1[0x26];
  param_2[0x12] = (char)((uint)param_1[0x26] >> 8);
  uVar21 = _UNK_1811a14b8 ^
           (_UNK_1811a14b4 ^ (_UNK_1811a14b0 ^ uVar21 * 0x1000181) * 0x1000181) * 0x1000181;
  param_2[0x11] = *(undefined1 *)((longlong)param_1 + 0x9a);
  uVar21 = _UNK_1811a14c4 ^
           (_UNK_1811a14c0 ^ (_UNK_1811a14bc ^ uVar21 * 0x1000181) * 0x1000181) * 0x1000181;
  param_2[0x10] = *(undefined1 *)((longlong)param_1 + 0x9b);
  uVar21 = _UNK_1811a14c8 ^ uVar21 * 0x1000181;
  param_2[0x17] = (char)param_1[0x27];
  uVar13 = (_UNK_1811a14cc ^ uVar21 * 0x1000181) * 0x1000181;
  uVar24 = (ulonglong)uVar13;
  uVar21 = uVar13 & 0x1f | 0x2a;
  if (((uVar21 * uVar21 * 5 ^ 0x415b) & 0x14) == 0) {
    uVar21 = 0x10cc;
  }
  else {
    uVar21 = uVar15 & 0x9ff;
  }
  uVar26 = uVar15 & 0xbf;
  uVar21 = (uVar21 * uVar21 * 0x10 + 4) % 0x13;
  iVar18 = (uVar26 + 2) * (uVar26 + 1) * uVar26;
  puVar19 = (uint *)(0x1811a15d0 -
                    ((longlong)
                     ((((iVar18 >> 1) - (iVar18 >> 3)) + iVar18 * 0x55555555 >> 0x1e) + 0x99d0) ^
                    ((longlong)(((int)(-uVar21 | uVar21) >> 0x1f) * -0x18c0) | 0x98d0U)));
  uVar26 = (uint)puVar19 & 0x3bf;
  uVar21 = *puVar19;
  iVar18 = (uVar26 + 2) * (uVar26 + 1) * uVar26;
  lVar11 = (longlong)iVar18;
  uVar15 = (((uVar15 & 0xeff) - 1) * (uVar15 & 0xeff) - 1 & 1) <<
           ((char)iVar18 +
            ((char)((ulonglong)(lVar11 * 0x55555556) >> 0x20) +
            (char)((lVar11 / 3 + (lVar11 >> 0x3f) & 0xffffffffU) >> 0x1f)) * -3 & 0x1fU);
  puVar19 = (uint *)((longlong)puVar19 +
                    (0xc4 - ((longlong)(((int)(-uVar15 | uVar15) >> 0x1f) * -0x40dd) ^ 0x401dU)));
  uVar15 = *puVar19;
  param_2[0x16] = (char)((uint)param_1[0x27] >> 8);
  uVar26 = puVar19[1];
  param_2[0x15] = *(undefined1 *)((longlong)param_1 + 0x9e);
  param_2[0x14] = *(undefined1 *)((longlong)param_1 + 0x9f);
  uVar1 = puVar19[2];
  uVar2 = puVar19[3];
  param_2[0x1b] = (char)param_1[0x28];
  uVar22 = (puVar19[5] ^
           (puVar19[4] ^
           (uVar2 ^ (uVar1 ^ (uVar26 ^ (uVar15 ^ (uVar21 ^ uVar13) * 0x1000181) * 0x1000181) *
                             0x1000181) * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181;
  bVar12 = (byte)uVar22 & 0x2f;
  puVar19 = (uint *)(((longlong)(0xfa8c << ((bVar12 + 1) * (bVar12 + 1) * bVar12 * bVar12 & 3)) ^
                     0xfa9cU) + (longlong)(puVar19 + 5));
  uVar21 = puVar19[-3];
  param_2[0x1a] = (char)((uint)param_1[0x28] >> 8);
  param_2[0x19] = *(undefined1 *)((longlong)param_1 + 0xa2);
  uVar13 = puVar19[-2];
  uVar15 = puVar19[-1];
  uVar26 = *puVar19;
  uVar1 = puVar19[1];
  uVar2 = puVar19[2];
  uVar3 = puVar19[3];
  param_2[0x18] = *(undefined1 *)((longlong)param_1 + 0xa3);
  uVar4 = puVar19[4];
  uVar5 = puVar19[5];
  uVar6 = puVar19[6];
  param_2[0x1f] = (char)param_1[0x29];
  uVar7 = puVar19[7];
  uVar8 = puVar19[8];
  uVar9 = puVar19[9];
  param_2[0x1e] = (char)((uint)param_1[0x29] >> 8);
  param_2[0x1d] = *(undefined1 *)((longlong)param_1 + 0xa6);
  uVar10 = puVar19[10];
  param_2[0x1c] = *(undefined1 *)((longlong)param_1 + 0xa7);
  uVar13 = ~(~((uVar10 ^ (uVar9 ^ (uVar8 ^ (uVar7 ^ (uVar6 ^ (uVar5 ^ (uVar4 ^ (uVar3 ^ (uVar2 ^ (
                                                  uVar1 ^ (uVar26 ^ (uVar15 ^ (uVar13 ^ (uVar21 ^ 
                                                  uVar22) * 0x1000181) * 0x1000181) * 0x1000181) *
                                                  0x1000181) * 0x1000181) * 0x1000181) * 0x1000181)
                                                  * 0x1000181) * 0x1000181) * 0x1000181) * 0x1000181
                                  ) * 0x1000181) * 0x1000181) * 0x1000181) + 0x3105c61c);
  uVar23 = (ulonglong)uVar13;
  uVar21 = (uVar13 >> 0x10 ^ uVar13) >> 0xb & 1;
  uVar21 = ((uVar21 << 0x10 | uVar21) << 0xb ^ uVar13) + 0x326efe4a;
  uVar16 = (ulonglong)uVar21;
  if ((char)((uVar21 != 0x6f64361c) * '2') != '\0') {
    thunk_FUN_1805a9280((int)(-uVar20 | uVar20) >> 0x1f & 0x6b02U ^ 0x6ed2,uVar21);
    return;
  }
  do {
    *(ulonglong *)(puVar17 + -8) = uVar23;
    *(ulonglong *)(puVar17 + -0x10) = uVar16;
    *(ulonglong *)(puVar17 + -0x18) = uVar24;
    lVar11 = -(longlong)(int)(((int)(-uVar14 | uVar14) >> 0x1f) * -42999 ^ 0xa2f7);
    register0x00000020 = (BADSPACEBASE *)((-(longlong)register0x00000020 ^ 0xffffffffffffffffU) + 1)
    ;
    uVar24 = *(ulonglong *)(puVar17 + lVar11 + 0x4e8);
    uVar16 = *(ulonglong *)(puVar17 + lVar11 + 0x4f0);
    uVar23 = *(ulonglong *)(puVar17 + lVar11 + 0x4f8);
    puVar17 = puVar17 + lVar11 + 0x500;
    uVar21 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar21 < 0) {
      uVar21 = (uVar21 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar21 != 0);
  return;
}



############ FUN_ 18070fdd3 size=1294 ############

/* WARNING: Instruction at (ram,0x0001807101b5) overlaps instruction at (ram,0x0001807101b4)
    */
/* WARNING: Removing unreachable block (ram,0x0001807101b4) */

ulonglong FUN_18070fdd3(undefined8 param_1,undefined8 param_2,undefined8 param_3,int param_4)

{
  longlong lVar1;
  undefined1 *puVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  ulonglong uVar7;
  longlong unaff_RBX;
  undefined1 *puVar8;
  int *unaff_RBP;
  uint unaff_ESI;
  int *unaff_RDI;
  longlong in_R11;
  undefined8 unaff_R12;
  undefined8 unaff_R13;
  ulonglong unaff_R14;
  ulonglong uVar9;
  longlong unaff_R15;
  int in_stack_00000068;
  uint in_stack_00000088;
  
  uVar5 = (*unaff_RBP + 1) * *unaff_RBP & 0x80000001;
  if ((int)uVar5 < 0) {
    uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
  }
  if (uVar5 != 0) {
    FUN_18070f1f6(0x682c,param_2,param_3,unaff_R13);
    uVar9 = FUN_18070fdd3();
    return uVar9;
  }
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x80) ^ unaff_ESI >> 0x1c ^ unaff_ESI << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x84) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x88) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x8c) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x90) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x94) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x98) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0x9c) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xa0) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xa4) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xa8) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xac) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xb0) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xb4) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xb8) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xbc) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xc0) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xc4) ^ uVar5 >> 0x1c ^ uVar5 << 4;
  do {
    uVar7 = 0x682c;
    iVar3 = FUN_18070eaa8();
    uVar6 = (uint)uVar7;
    uVar9 = unaff_R14 ^ 0xa52b236;
    if ((uVar7 & 0x41) == 0) {
      func_0x00018070e723();
      uVar6 = (*unaff_RBP + 1) * *unaff_RBP & 0x80000001;
      uVar9 = unaff_R14;
      if ((int)uVar6 < 0) goto code_r0x00018070ff9f;
    }
    else {
      uVar4 = iVar3 + *(int *)((ulonglong)uVar5 + 0x36f68149);
      *(int *)(unaff_RBX + 0x488d0045) = *(int *)(unaff_RBX + 0x488d0045) + -1;
      *unaff_RDI = *unaff_RDI + uVar6;
      unaff_RDI = unaff_RDI + 1;
      *(char *)(ulonglong)uVar4 = *(char *)(ulonglong)uVar4 + (char)uVar4;
code_r0x00018070ff9f:
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    unaff_R14 = uVar9;
    if (uVar6 == 0) {
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 200) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xcc) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xd0) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xd4) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xd8) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xe0) ^
              (*(uint *)((longlong)unaff_RDI + unaff_RBX + 0xdc) ^ uVar5 >> 0x1c ^ uVar5 << 4) << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xe4) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xe8) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      do {
        uVar7 = 0x682c;
        uVar6 = FUN_180710ca2();
        if ((in_R11 < -0x44af8642) && ((uVar7 & 0xf700) == 0)) {
          return (ulonglong)
                 CONCAT31((int3)((uVar6 | 0xebe86535) >> 8),(char)(uVar6 | 0xebe86535) + '\x02') &
                 0xffffffffffffff24;
        }
        uVar6 = (in_stack_00000068 + 1) * in_stack_00000068 & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xec) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      do {
        uVar6 = (in_stack_00000068 + 1) * in_stack_00000068 & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xf0) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xf4) ^ uVar5 >> 0x1c ^ uVar5 << 4;
      uVar5 = uVar5 >> 0x1c ^ uVar5 << 4 ^ *(uint *)((longlong)unaff_RDI + unaff_RBX + 0xf8);
      do {
        uVar6 = (in_stack_00000068 + 1) * in_stack_00000068 & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      if (((in_stack_00000088 ^
           ~(~(*(uint *)((longlong)unaff_RDI + unaff_RBX + 0xfc) ^ uVar5 >> 0x1c ^ uVar5 << 4 ^
              0x9d434a7e) + 0x15fa135)) & 0x7ffffff) == 0) {
        puVar2 = (undefined1 *)register0x00000020;
        do {
          puVar8 = puVar2;
          *(longlong *)(puVar8 + -8) = unaff_R15;
          *(undefined8 *)(puVar8 + -0x10) = param_3;
          *(undefined8 *)(puVar8 + -0x18) = unaff_R12;
          lVar1 = -(longlong)param_4;
          unaff_R12 = *(undefined8 *)(puVar8 + lVar1 + 0x7d8);
          param_3 = *(undefined8 *)(puVar8 + lVar1 + 0x7e0);
          unaff_R15 = *(longlong *)(puVar8 + lVar1 + 0x7e8);
          uVar5 = (in_stack_00000068 + 1) * in_stack_00000068 & 0x80000001;
          if ((int)uVar5 < 0) {
            uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
          }
          puVar2 = puVar8 + lVar1 + 0x7f0;
        } while (uVar5 != 0);
        if ((unaff_R15 == 0) || (uVar9 == 0)) {
          uVar9 = 99;
        }
        else {
          if ((int)unaff_R12 != 0) {
            *(undefined1 **)(puVar8 + lVar1 + 0x7e8) = &LAB_1807103eb;
            FUN_18072ae40(unaff_R15,uVar9,unaff_R12);
          }
          uVar9 = 0;
        }
        return uVar9;
      }
      uVar9 = thunk_FUN_1805a9280();
      return uVar9;
    }
  } while( true );
}



############ FUN_ 18074feb0 size=2105 ############

/* WARNING: Removing unreachable block (ram,0x000180750704) */
/* WARNING: Removing unreachable block (ram,0x000180750041) */
/* WARNING: Removing unreachable block (ram,0x0001807502b9) */
/* WARNING: Removing unreachable block (ram,0x00018075061e) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffff40 : 0x000180750661 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 * FUN_18074feb0(undefined8 *param_1,undefined8 *param_2)

{
  int *piVar1;
  longlong *plVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  uint uVar7;
  ulonglong uVar8;
  longlong lVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  longlong lVar13;
  uint uVar14;
  ulonglong uVar15;
  uint unaff_retaddr;
  undefined8 local_60;
  longlong local_58;
  
  *param_1 = pace::ILok2Commander::vftable;
  puVar6 = param_1 + 1;
  *puVar6 = 0;
  param_1[2] = 0;
  uVar5 = FUN_18077ac70(puVar6,0,0);
  *puVar6 = uVar5;
  puVar6 = param_1 + 3;
  *puVar6 = 0;
  param_1[4] = 0;
  uVar5 = FUN_18077ac30(puVar6);
  *puVar6 = uVar5;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = pace::eden::thrift::ilok::CommandPacket::vftable;
  param_1[8] = pace::eden::thrift::ilok::CommandTarget::vftable;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined2 *)((longlong)param_1 + 100) = 0;
  *(undefined1 *)((longlong)param_1 + 0x66) = 0;
  param_1[0xd] = pace::eden::thrift::ilok::CommandTarget::vftable;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  *(undefined4 *)(param_1 + 0x11) = 0;
  *(undefined2 *)((longlong)param_1 + 0x8c) = 0;
  *(undefined1 *)((longlong)param_1 + 0x8e) = 0;
  *(undefined4 *)(param_1 + 0x12) = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  *(undefined4 *)(param_1 + 0x19) = 0;
  *(undefined1 *)((longlong)param_1 + 0xcc) = 0;
  FUN_180750800(param_1 + 0x1a);
  FUN_1806112a0(param_1 + 0x46);
  param_1[0x7f] = 0;
  param_1[0x80] = 0;
  param_1[0x81] = 0;
  param_1[0x82] = 0;
  param_1[0x83] = 0;
  param_1[0x84] = 0;
  uVar14 = 0x811c9e29;
  lVar13 = 4;
  lVar9 = 4;
  puVar10 = (uint *)0x181147004;
  do {
    puVar12 = puVar10;
    uVar14 = (puVar12[3] ^
             (puVar12[2] ^ (puVar12[1] ^ (*puVar12 ^ uVar14) * 0x10001ab) * 0x10001ab) * 0x10001ab)
             * 0x10001ab;
    lVar9 = lVar9 + -1;
    puVar10 = puVar12 + 4;
  } while (lVar9 != 0);
  do {
    FUN_18074e4b2();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  puVar10 = puVar12 + 5;
  uVar7 = (uint)puVar10 & 0x8ff;
  uVar7 = ((uVar7 + 1) * uVar7 + 7) % 0x51;
  puVar11 = (uint *)((longlong)puVar10 +
                    (0x10 - ((longlong)(((int)(-uVar7 | uVar7) >> 0x1f) * -0x9c41) ^ 0x9c4dU)));
  uVar14 = (puVar11[0xb] ^
           (puVar11[10] ^
           (puVar11[9] ^
           (puVar11[8] ^
           (puVar11[7] ^
           (puVar11[6] ^
           (puVar11[5] ^
           (puVar11[4] ^
           (puVar11[3] ^
           (puVar11[2] ^
           (puVar11[1] ^
           (*puVar11 ^ (*puVar10 ^ (puVar12[4] ^ uVar14) * 0x10001ab) * 0x10001ab) * 0x10001ab) *
           0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab)
           * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab;
  *(undefined4 *)(param_1 + 0x78) = 0;
  puVar10 = puVar11 + 0xc;
  do {
    puVar12 = puVar10;
    uVar14 = (puVar12[5] ^
             (puVar12[4] ^
             (puVar12[3] ^
             (puVar12[2] ^ (puVar12[1] ^ (*puVar12 ^ uVar14) * 0x10001ab) * 0x10001ab) * 0x10001ab)
             * 0x10001ab) * 0x10001ab) * 0x10001ab;
    lVar13 = lVar13 + -1;
    puVar10 = puVar12 + 6;
  } while (lVar13 != 0);
  uVar15 = 0x2a9f3eff;
  FUN_180772f20(param_1,0,0x2a9f3eff,0);
  uVar14 = puVar12[0xf] ^
           (puVar12[0xe] ^
           (puVar12[0xd] ^
           (puVar12[0xc] ^
           (puVar12[0xb] ^
           (puVar12[10] ^
           (puVar12[9] ^
           (puVar12[8] ^ (puVar12[7] ^ (puVar12[6] ^ uVar14) * 0x10001ab) * 0x10001ab) * 0x10001ab)
           * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab) * 0x10001ab;
  do {
    uVar8 = 0x7104;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001807505e1();
    if ((uVar8 & 0xcb00) != 0) {
      uVar8 = uVar15;
    }
    uVar15 = uVar8;
    FUN_180750de4();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  do {
    lVar9 = ~(uVar15 + unaff_retaddr) + 1 + (longlong)param_2;
    lVar13 = (longlong)param_2 - lVar9;
    param_2 = (undefined8 *)(lVar9 + lVar13);
    uVar15 = (~-lVar13 + 1U) - (ulonglong)unaff_retaddr;
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar7 = (uVar14 * 0x10001ab >> 8 | uVar14 * -0x55000000) & 0xfd02fd02 |
          (uVar14 * 0x1ab00 | uVar14 * 0x10001ab >> 0x18) & 0x2fd02fd;
  uVar14 = (uVar7 >> 0x17 ^ uVar7) & 0x7f;
  uVar14 = uVar7 ^ (uVar14 << 0x17 | uVar14) ^ 0xa265487b;
  uVar14 = uVar14 & 0xfb08214c | ~uVar14 & 0x4f7deb3;
  local_60 = *param_2;
  if (uVar14 == 0 && (uVar14 & 0x3ffff) == 0) {
    if (param_2[1] != 0) {
      LOCK();
      piVar1 = (int *)(param_2[1] + 8);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    FUN_180775440(param_1);
    do {
      uVar15 = ~(((ulonglong)param_2 ^ 0xffffffffffffffff) + 1);
      param_2 = (undefined8 *)(uVar15 + 1);
      uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    plVar4 = *(longlong **)(uVar15 + 9);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar2 = plVar4 + 1;
      lVar9 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar9 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar1 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
    return param_1;
  }
  local_58 = param_2[1];
  if (local_58 != 0) {
    LOCK();
    *(int *)(local_58 + 8) = *(int *)(local_58 + 8) + 1;
    UNLOCK();
  }
  FUN_180775440(param_1,&local_60);
  puVar6 = (undefined8 *)thunk_FUN_1805a9280();
  return puVar6;
}



############ FUN_ 180a1f19e size=957 ############

/* WARNING: Instruction at (ram,0x000180a1f2eb) overlaps instruction at (ram,0x000180a1f2ea)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180a1f502) */

void FUN_180a1f19e(undefined8 param_1,longlong param_2,undefined8 param_3,longlong *param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,
                  int param_9,undefined8 param_10,undefined8 param_11,undefined4 param_12)

{
  undefined1 *puVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  ulonglong uVar5;
  longlong *plVar6;
  uint unaff_EBX;
  undefined1 *puVar7;
  int unaff_EBP;
  undefined4 *unaff_RSI;
  longlong *unaff_RDI;
  uint *puVar8;
  undefined8 *puVar9;
  ulonglong in_R10;
  longlong lVar10;
  int *unaff_R12;
  int unaff_R13D;
  longlong unaff_R14;
  longlong unaff_R15;
  longlong *plVar11;
  bool bVar12;
  uint local_res20 [2];
  int in_stack_000000a8;
  
  param_2 = unaff_R15 - param_2;
  plVar11 = (longlong *)(~in_R10 + 1);
  FUN_180a1db12();
  uVar3 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
  }
  if (uVar3 != 0) {
    func_0x000180a20585(0x6018);
    FUN_180a1f19e();
    return;
  }
  param_8 = 0x3f67a1ad3cc6e1bd;
  if (param_2 == unaff_R14) {
LAB_180a1f3e5:
    param_7._0_4_ = local_res20[0];
    param_7._4_4_ = unaff_EBX;
    do {
      puVar9 = &param_7;
      uVar2 = FUN_1809d898e(&LAB_18113e030,&LAB_18113e030);
      *(undefined4 *)puVar9 = uVar2;
      func_0x000180a206e2();
      uVar3 = (in_stack_000000a8 + 1) * in_stack_000000a8 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar3 != 0);
    uVar3 = (uint)param_7 + 0xc3f67c0a;
    uVar5 = (ulonglong)uVar3;
    uVar4 = (uVar3 >> 10 ^ uVar3) >> 2 & 0x3f;
    uVar3 = (uVar4 << 10 | uVar4) << 2 ^ uVar3;
    local_res20[0] = uVar3 + 0xc32c6979;
    do {
      lVar10 = (longlong)plVar11 + param_2;
      plVar11 = (longlong *)(~(param_2 - lVar10) + 1);
      param_2 = lVar10 - (longlong)plVar11;
      uVar4 = (in_stack_000000a8 + 1) * in_stack_000000a8 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    do {
      uVar5 = ((uVar5 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
      uVar4 = (in_stack_000000a8 + 1) * in_stack_000000a8 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar3 = uVar3 + 0x866587bc;
    if (uVar3 == uVar3 >> 4) {
      thunk_FUN_1805a9280((longlong)unaff_R13D,uVar5);
      return;
    }
    puVar1 = (undefined1 *)register0x00000020;
    do {
      puVar7 = puVar1;
      *(longlong **)(puVar7 + -8) = param_4;
      *(longlong *)(puVar7 + -0x10) = param_2;
      *(undefined4 **)(puVar7 + -0x18) = unaff_RSI;
      lVar10 = -(longlong)unaff_EBP;
      unaff_RSI = *(undefined4 **)(puVar7 + lVar10 + 0xab8);
      param_2 = *(longlong *)(puVar7 + lVar10 + 0xac0);
      param_4 = *(longlong **)(puVar7 + lVar10 + 0xac8);
      uVar3 = (in_stack_000000a8 + 1) * in_stack_000000a8 & 0x80000001;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
      }
      puVar1 = puVar7 + lVar10 + 0xad0;
    } while (uVar3 != 0);
    *(undefined **)(puVar7 + lVar10 + 0xac8) = &UNK_180a1f6b8;
  }
  unaff_RSI = (undefined4 *)((longlong)unaff_RSI + unaff_R14);
code_r0x000180a1f210:
  bVar12 = unaff_RDI == (longlong *)0x0;
  if (!bVar12) {
    lVar10 = *unaff_RDI;
    bVar12 = lVar10 == 0;
    if (-1 < lVar10) {
      param_8 = 0x2621fc0;
      do {
        if (unaff_RSI < IMAGE_DOS_HEADER_180000000.e_magic + lVar10 + 8) {
          bVar12 = lVar10 == 0;
          if (-1 < lVar10) {
            plVar6 = (longlong *)(lVar10 + 0x180000000);
            plVar11 = (longlong *)(unaff_RSI + 1);
            bVar12 = plVar6 == plVar11;
            if (plVar6 < plVar11) {
              param_12 = *unaff_RSI;
              param_4 = unaff_RDI;
              goto LAB_180a1f290;
            }
          }
          break;
        }
        lVar10 = unaff_RDI[1];
        unaff_RDI = unaff_RDI + 1;
        bVar12 = lVar10 == 0;
      } while (-1 < lVar10);
    }
  }
  goto LAB_180a1f2af;
  while( true ) {
    plVar6 = (longlong *)(lVar10 + 0x180000000);
    bVar12 = plVar6 == plVar11;
    if (plVar11 <= plVar6) break;
LAB_180a1f290:
    param_4 = param_4 + 1;
    *(longlong *)(&stack0x000180000060 + (lVar10 - (longlong)unaff_RSI)) = *plVar6 + -0x180000000;
    lVar10 = *param_4;
    bVar12 = lVar10 == 0;
    if (lVar10 < 0) break;
  }
LAB_180a1f2af:
  local_res20[0] = local_res20[0] * 0x3d;
  unaff_EBX = unaff_EBX * local_res20[0];
  do {
    puVar8 = local_res20;
    uVar5 = 0x6018;
    FUN_180a1fdc1();
    if ((!bVar12) && ((uVar5 & 0xc300) == 0)) {
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    uVar3 = FUN_180a1f19a();
    *puVar8 = uVar3;
    uVar3 = (in_stack_000000a8 + 1) * in_stack_000000a8 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
    bVar12 = uVar3 == 0;
  } while (!bVar12);
  if ((unaff_EBX & 0x7f) != 0) {
    unaff_EBX = unaff_EBX + (unaff_EBX >> 0xc);
  }
  if ((unaff_EBX & 0x3ff) != 0) {
    unaff_EBX = unaff_EBX ^ unaff_EBX << 0x12;
  }
  if ((unaff_EBX & 0x700) != 0) {
    unaff_EBX = unaff_EBX | local_res20[0];
  }
  if (0x26 < unaff_EBX - local_res20[0]) {
    unaff_EBX = unaff_EBX + local_res20[0];
  }
  unaff_R14 = unaff_R14 + 4;
  unaff_RSI = unaff_RSI + 1;
  unaff_R13D = param_9;
  unaff_EBP = param_7._4_4_;
  if (param_2 == unaff_R14) goto LAB_180a1f3e5;
  goto code_r0x000180a1f210;
}



############ FUN_ 18077f5b0 size=2691 ############

/* WARNING: Instruction at (ram,0x00018077f6f8) overlaps instruction at (ram,0x00018077f6f6)
    */
/* WARNING: Removing unreachable block (ram,0x00018077f6f6) */
/* WARNING: Removing unreachable block (ram,0x00018077f668) */
/* WARNING: Removing unreachable block (ram,0x00018077f615) */
/* WARNING: Removing unreachable block (ram,0x00018077f6c4) */
/* WARNING: Removing unreachable block (ram,0x00018077f9d3) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_18077f5b0(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  code **ppcVar5;
  undefined1 *puVar6;
  undefined8 uVar7;
  uint uVar8;
  ulonglong uVar9;
  undefined8 in_R10;
  ulonglong uVar10;
  int iVar11;
  int iVar12;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_88 [32];
  undefined *local_68;
  int *local_60;
  code *local_58 [3];
  
  puVar6 = auStack_88;
  uVar8 = (uint)&stack0x00000000 & 0x1ff;
  uVar8 = (uVar8 * uVar8 * 0x10 + 4) % 0x13;
  uVar8 = (int)(-uVar8 | uVar8) >> 0x1f;
  uVar8 = ((int)(-uVar8 | uVar8) >> 0x1f) * -0x359e ^ 0x33ce;
  uVar9 = (ulonglong)((uint)&stack0x00000000 & 0x2ff);
  iVar11 = 0x90;
  do {
    FUN_180781305();
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  piVar2 = &DAT_18119d118;
  local_68 = &DAT_18119d218;
  uVar3 = (DAT_18119d118 + 0x5d59a201) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d11c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d120) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d124) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d128) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d12c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d130) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d134) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d138) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d13c) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d140) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d144) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d148) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d14c) * -0x395b586d;
  local_60 = piVar2;
  do {
    FUN_18077e318(0xd504);
    iVar12 = iVar11 + uVar8;
    iVar11 = (uVar8 - iVar12 ^ 0xffffffff) + 1;
    uVar8 = iVar12 - iVar11;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (DAT_18119d150 + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d154) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d158) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + DAT_18119d15c) * -0x395b586d;
  do {
    uVar10 = ((ulonglong)piVar2 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff;
    piVar2 = (int *)(uVar10 + 1);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (*(int *)(uVar10 + 0x49) + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x4d)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x51)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x55)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x59)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x5d)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x61)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x65)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x69)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x6d)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x71)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x75)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x79)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x7d)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x81)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x85)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x89)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x8d)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x91)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x95)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x99)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0x9d)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xa1)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xa5)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xa9)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xad)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xb1)) * -0x395b586d;
  do {
    FUN_180780a2f(0xd504);
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar3 = (*(int *)(uVar10 + 0xb5) + (uVar3 ^ uVar3 >> 0x10)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xb9)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xbd)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xc1)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xc5)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xc9)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xcd)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xd1)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xd5)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xd9)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xdd)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xe1)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xe5)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xe9)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xed)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xf1)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xf5)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xf9)) * -0x395b586d;
  uVar3 = ((uVar3 >> 0x10 ^ uVar3) + *(int *)(uVar10 + 0xfd)) * -0x395b586d;
  uVar3 = (uVar3 >> 0x10 ^ uVar3) + 0x23a4573e;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  do {
    uVar7 = rdtsc();
    FUN_1807809c2();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = ((uint)uVar7 ^ (uint)((ulonglong)uVar7 >> 0x20)) * 0x1a855bd1;
  uVar7 = 0;
  if ((uVar4 >> 0x18 ^ uVar4) * -0x733212ab < 0x487eddf) {
    local_58[0] = (code *)0x0;
    do {
      ppcVar5 = local_58;
      FUN_18077e11f(ppcVar5,local_58);
      *ppcVar5 = FUN_181194940;
      uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    uVar10 = (*local_58[0])();
    if (1 < uVar10) {
      lVar1 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      while (lVar1 != -0x3333333333333334) {
        *(longlong *)register0x00000020 = 0;
        register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
        lVar1 = *(longlong *)register0x00000020;
      }
    }
  }
  if ((uVar3 * 0x8000000 | uVar3 >> 5) == 0xcb1de87) {
    if (*(int *)(param_1 + 0x3bc) == 2) {
      *(undefined4 *)(param_1 + 0x3bc) = 0;
      uVar9 = 0x20;
      (**(code **)(*(longlong *)(param_1 + 0x230) + 0x20))((longlong *)(param_1 + 0x230),param_2);
      *(undefined4 *)(param_1 + 0x3bc) = 2;
    }
    do {
      *(undefined8 *)(puVar6 + -8) = uVar7;
      *(ulonglong *)(puVar6 + -0x10) = uVar9;
      *(undefined8 *)(puVar6 + -0x18) = in_R10;
      lVar1 = -(longlong)iVar11;
      in_R10 = *(undefined8 *)(puVar6 + lVar1 + 0x78);
      uVar9 = *(ulonglong *)(puVar6 + lVar1 + 0x80);
      uVar7 = *(undefined8 *)(puVar6 + lVar1 + 0x88);
      puVar6 = puVar6 + lVar1 + 0x90;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    return;
  }
  if (*(int *)(param_1 + 0x3bc) != 3) {
    *(undefined4 *)(param_1 + 0x3bc) = 0;
    uVar9 = 0x20;
    (**(code **)(*(longlong *)(param_1 + 0x230) + 0x20))((longlong *)(param_1 + 0x230),param_2,0x20)
    ;
    *(undefined4 *)(param_1 + 0x3bc) = 2;
  }
  thunk_FUN_1805a9280((longlong)(int)uVar8,thunk_FUN_1805a9280,
                      ~(~(~((uVar9 ^ 0xffffffffffffffff) + 1) + 1) + 1) + 1);
  return;
}



############ FUN_ 1809fecd0 size=2284 ############

/* WARNING: Instruction at (ram,0x0001809ff103) overlaps instruction at (ram,0x0001809ff100)
    */
/* WARNING: Removing unreachable block (ram,0x0001809ff4e8) */
/* WARNING: Removing unreachable block (ram,0x0001809fed1c) */
/* WARNING: Removing unreachable block (ram,0x0001809feee8) */
/* WARNING: Removing unreachable block (ram,0x0001809fef96) */
/* WARNING: Removing unreachable block (ram,0x0001809fee94) */

undefined8 FUN_1809fecd0(longlong param_1,ulonglong param_2)

{
  byte *pbVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  int iVar33;
  int iVar34;
  int iVar35;
  int iVar36;
  int iVar37;
  int iVar38;
  int iVar39;
  int iVar40;
  int iVar41;
  int iVar42;
  int iVar43;
  longlong lVar44;
  char unaff_00089100;
  undefined8 *unaff_0008f000;
  char cVar45;
  longlong lVar46;
  byte bVar47;
  undefined1 *puVar48;
  uint uVar49;
  longlong lVar50;
  undefined8 uVar51;
  uint uVar52;
  int iVar53;
  ulonglong uVar54;
  char *pcVar55;
  undefined1 *puVar56;
  undefined1 *puVar57;
  undefined1 *puVar59;
  undefined8 *puVar60;
  ulonglong uVar61;
  ulonglong uVar62;
  uint uVar63;
  uint uVar65;
  int unaff_retaddr;
  undefined1 local_98 [56];
  undefined4 *local_60;
  undefined4 local_58;
  undefined *local_48;
  undefined8 *puVar58;
  ulonglong uVar64;
  
  puVar56 = local_98;
  uVar49 = (uint)&stack0x00000000 & 0x15ff;
  uVar52 = (uint)&stack0x00000000 & 0x1ff;
  iVar53 = uVar52 * uVar52 + 1;
  uVar52 = (iVar53 >> 4) + (iVar53 >> 1) + iVar53 * 0x24924924 >> 0x1d;
  uVar52 = (int)(uVar52 - 7) >> 0x1f & uVar52;
  uVar65 = 0x3650 << ((char)(((byte)(-uVar52 >> 0x18) | (byte)(uVar52 >> 0x18)) ^
                            (byte)(-((uVar49 + 1) * uVar49 + 0x6fa7 & 0x80000001) >> 0x18)) >> 7 &
                     0x1fU) ^ 0x3220;
  local_58 = 0x520;
  local_60 = &DAT_1814029f0;
  local_48 = &DAT_181402af0;
  uVar63 = (DAT_1814029f0 * 0xc1 + DAT_1814029f4) * 0xc1 + DAT_1814029f8;
  uVar64 = (ulonglong)uVar63;
  bVar47 = (byte)uVar63 & 0x2f;
  uVar52 = 0x47b5 >> ((bVar47 + 1) * (bVar47 + 1) * bVar47 * bVar47 & 3);
  uVar62 = (ulonglong)uVar52;
  uVar49 = uVar63 & 0x17f;
  uVar61 = (ulonglong)(uVar63 & 0x61ff);
  iVar53 = (uVar49 + 2) * (uVar49 + 1) * uVar49;
  cVar45 = (char)(uVar63 & 0x61ff);
  uVar54 = 0x47d5L >>
           (((cVar45 + -1) * cVar45 & 1U) -
            (char)(((iVar53 >> 1) - (iVar53 >> 3)) + iVar53 * 0x55555555 >> 0x1e) & 0x3f) ^
           (longlong)(int)uVar52;
  lVar46 = -uVar54;
  iVar53 = *(int *)(&DAT_181402a5c + lVar46);
  do {
    uVar49 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar49 != 0);
  iVar3 = *(int *)(&DAT_181402a60 + lVar46);
  iVar4 = *(int *)(&DAT_181402a64 + lVar46);
  do {
    FUN_1809fd5d8(0x530c,uVar54);
    uVar49 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar49 != 0);
  puVar60 = (undefined8 *)
            (ulonglong)
            (((((((((((((((((((uVar63 * 0xc1 + iVar53) * 0xc1 + iVar3) * 0xc1 + iVar4) * 0xc1 +
                           *(int *)(&DAT_181402a68 + lVar46)) * 0xc1 +
                          *(int *)(&DAT_181402a6c + lVar46)) * 0xc1 +
                         *(int *)(&DAT_181402a70 + lVar46)) * 0xc1 +
                        *(int *)(&DAT_181402a74 + lVar46)) * 0xc1 +
                       *(int *)(&DAT_181402a78 + lVar46)) * 0xc1 + *(int *)(&DAT_181402a7c + lVar46)
                      ) * 0xc1 + *(int *)(&DAT_181402a80 + lVar46)) * 0xc1 +
                    *(int *)(&DAT_181402a84 + lVar46)) * 0xc1 + *(int *)(&DAT_181402a88 + lVar46)) *
                   0xc1 + *(int *)(&DAT_181402a8c + lVar46)) * 0xc1 +
                 *(int *)(&DAT_181402a90 + lVar46)) * 0xc1 + *(int *)(&DAT_181402a94 + lVar46)) *
                0xc1 + *(int *)(&DAT_181402a98 + lVar46)) * 0xc1 + *(int *)(&DAT_181402a9c + lVar46)
              ) * 0xc1 + *(int *)(&DAT_181402aa0 + lVar46)) * 0xc1 +
            *(int *)(&DAT_181402aa4 + lVar46));
  do {
    uVar54 = 0x530c;
    *(undefined8 *)(puVar56 + -8) = 0x1809ff0ea;
    FUN_180a00ddf();
    uVar61 = (uVar61 ^ 0xffffffffffffffff) + 1;
    if ((uVar54 & 0xef00) == 0) {
      pbVar1 = (byte *)(uVar54 - 0x7d);
      *pbVar1 = *pbVar1 >> 1 | *pbVar1 << 7;
      *(undefined8 *)(puVar56 + -8) = 0x1809ff10d;
      iVar53 = func_0x0001b9e8820c();
      unaff_00089100 = '\a';
      unaff_0008f000 = (undefined8 *)(puVar56 + -8);
      puVar58 = (undefined8 *)(puVar56 + -8);
      *(undefined8 **)(puVar56 + -8) = puVar60;
      cVar45 = '\x06';
      do {
        puVar60 = puVar60 + -1;
        puVar58 = puVar58 + -1;
        *puVar58 = *puVar60;
        cVar45 = cVar45 + -1;
        puVar57 = puVar56 + -8;
      } while ('\0' < cVar45);
    }
    else {
      uVar61 = ~uVar61 + 1;
      puVar57 = puVar56;
      iVar53 = unaff_retaddr;
    }
    lVar50 = (ulonglong)(byte)(unaff_00089100 - 1) * -8;
    *(undefined8 **)(puVar57 + lVar50 + -8) = unaff_0008f000;
    puVar56 = puVar57 + lVar50 + -0x8b49;
    uVar49 = (iVar53 + 1) * iVar53 & 0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
    puVar60 = unaff_0008f000;
  } while (uVar49 != 0);
  iVar53 = *(int *)(&DAT_181402aa8 + lVar46);
  iVar3 = *(int *)(&DAT_181402aac + lVar46);
  iVar4 = *(int *)(&DAT_181402ab0 + lVar46);
  iVar5 = *(int *)(&DAT_181402ab4 + lVar46);
  iVar6 = *(int *)(&DAT_181402ab8 + lVar46);
  iVar7 = *(int *)(&DAT_181402abc + lVar46);
  iVar8 = *(int *)(&DAT_181402ac0 + lVar46);
  iVar9 = *(int *)(&DAT_181402ac4 + lVar46);
  iVar10 = *(int *)(&DAT_181402ac8 + lVar46);
  iVar11 = *(int *)(&DAT_181402acc + lVar46);
  iVar12 = *(int *)(&DAT_181402ad0 + lVar46);
  iVar13 = *(int *)(&DAT_181402ad4 + lVar46);
  do {
    uVar65 = ((uVar65 ^ 0xffffffff) + 1 ^ 0xffffffff) + 1;
    uVar49 = (*(int *)(puVar57 + lVar50 + -0x8ab1) + 1) * *(int *)(puVar57 + lVar50 + -0x8ab1) &
             0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar49 != 0);
  iVar14 = *(int *)(&DAT_181402ad8 + lVar46);
  iVar15 = *(int *)(&DAT_181402adc + lVar46);
  iVar16 = *(int *)(&DAT_181402ae0 + lVar46);
  iVar17 = *(int *)(&UNK_181402ae4 + lVar46);
  iVar18 = *(int *)(&UNK_181402ae8 + lVar46);
  do {
    *(undefined8 *)(puVar57 + lVar50 + -0x8b51) = 0x1809ff26d;
    FUN_180a0094f();
    uVar65 = ~-uVar65 + 1;
    uVar49 = (*(int *)(puVar57 + lVar50 + -0x8ab1) + 1) * *(int *)(puVar57 + lVar50 + -0x8ab1) &
             0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar49 != 0);
  lVar44 = *(longlong *)(puVar57 + lVar50 + -0x8a91);
  iVar19 = *(int *)(&UNK_181402aec + lVar46);
  iVar20 = *(int *)(&DAT_181402af0 + lVar46);
  iVar21 = *(int *)(&UNK_181402af4 + lVar46);
  iVar22 = *(int *)(&UNK_181402af8 + lVar46);
  iVar23 = *(int *)(&UNK_181402afc + lVar46);
  iVar24 = *(int *)(&UNK_181402b00 + lVar46);
  iVar25 = *(int *)(&UNK_181402b04 + lVar46);
  do {
    uVar62 = ~((uVar62 ^ 0xffffffffffffffff) + 1) + 1;
    uVar49 = (*(int *)(puVar57 + lVar50 + -0x8ab1) + 1) * *(int *)(puVar57 + lVar50 + -0x8ab1) &
             0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar49 != 0);
  iVar26 = *(int *)(&UNK_181402b08 + lVar46);
  iVar27 = *(int *)(&UNK_181402b0c + lVar46);
  iVar28 = *(int *)(&UNK_181402b10 + lVar46);
  iVar29 = *(int *)(&UNK_181402b14 + lVar46);
  iVar30 = *(int *)(&UNK_181402b18 + lVar46);
  iVar31 = *(int *)(&UNK_181402b1c + lVar46);
  iVar32 = *(int *)(&UNK_181402b20 + lVar46);
  iVar33 = *(int *)(&UNK_181402b24 + lVar46);
  iVar34 = *(int *)(&UNK_181402b28 + lVar46);
  iVar35 = *(int *)(&UNK_181402b2c + lVar46);
  iVar36 = *(int *)(&UNK_181402b30 + lVar46);
  iVar37 = *(int *)(&UNK_181402b34 + lVar46);
  iVar38 = *(int *)(&UNK_181402b38 + lVar46);
  iVar39 = *(int *)(&UNK_181402b3c + lVar46);
  iVar40 = *(int *)(&UNK_181402b40 + lVar46);
  iVar41 = *(int *)(&UNK_181402b44 + lVar46);
  iVar42 = *(int *)(&UNK_181402b48 + lVar46);
  iVar43 = *(int *)(&UNK_181402b4c + lVar46);
  *(undefined8 *)(puVar57 + lVar50 + -0x8af9) = 0xbcbe168106d2b6cb;
  uVar49 = ((((((((((((((((((((((((((((((((((((((((((int)unaff_0008f000 * 0xc1 + iVar53) * 0xc1 +
                                                  iVar3) * 0xc1 + iVar4) * 0xc1 + iVar5) * 0xc1 +
                                               iVar6) * 0xc1 + iVar7) * 0xc1 + iVar8) * 0xc1 + iVar9
                                            ) * 0xc1 + iVar10) * 0xc1 + iVar11) * 0xc1 + iVar12) *
                                         0xc1 + iVar13) * 0xc1 + iVar14) * 0xc1 + iVar15) * 0xc1 +
                                     iVar16) * 0xc1 + iVar17) * 0xc1 + iVar18) * 0xc1 + iVar19) *
                                  0xc1 + iVar20) * 0xc1 + iVar21) * 0xc1 + iVar22) * 0xc1 + iVar23)
                              * 0xc1 + iVar24) * 0xc1 + iVar25) * 0xc1 + iVar26) * 0xc1 + iVar27) *
                          0xc1 + iVar28) * 0xc1 + iVar29) * 0xc1 + iVar30) * 0xc1 + iVar31) * 0xc1 +
                     iVar32) * 0xc1 + iVar33) * 0xc1 + iVar34) * 0xc1 + iVar35) * 0xc1 + iVar36) *
                 0xc1 + iVar37) * 0xc1 + iVar38) * 0xc1 + iVar39) * 0xc1 + iVar40) * 0xc1 + iVar41)
            * 0xc1 + iVar42) * 0xc1 + iVar43 + 0x876ed571;
  *(int *)(puVar57 + lVar50 + -0x8b11) = (int)*(undefined8 *)(puVar57 + lVar50 + -0x8af9);
  uVar52 = (uVar49 * 0x8000 | uVar49 >> 0x11) ^ 0x7c55d10f;
  uVar49 = (uVar52 >> 0xd ^ uVar52) >> 2 & 0x7ff;
  uVar49 = ((uVar49 << 0xd | uVar49) << 2 ^ uVar52) - *(int *)(puVar57 + lVar50 + -0x8b11);
  if (uVar49 != uVar49 >> 1) {
    *(ulonglong *)(puVar57 + lVar50 + -0x8b51) = uVar61;
    *(ulonglong *)(puVar57 + lVar50 + -0x8b59) = param_2;
    *(ulonglong *)(puVar57 + lVar50 + -0x8b61) = uVar64;
    uVar51 = thunk_FUN_1805a9280((longlong)(int)uVar65,uVar52,thunk_FUN_1805a9280,uVar62);
    return uVar51;
  }
  iVar53 = *(int *)(puVar57 + lVar50 + -0x8b09);
  puVar48 = puVar57 + lVar50 + -0x8b49;
  do {
    puVar59 = puVar48;
    *(longlong *)(puVar59 + -8) = param_1;
    *(ulonglong *)(puVar59 + -0x10) = uVar61;
    *(ulonglong *)(puVar59 + -0x18) = uVar64;
    param_2 = ((param_2 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    lVar46 = -(longlong)iVar53;
    uVar64 = *(ulonglong *)(puVar59 + lVar46 + 0x508);
    uVar61 = *(ulonglong *)(puVar59 + lVar46 + 0x510);
    param_1 = *(longlong *)(puVar59 + lVar46 + 0x518);
    uVar49 = (*(int *)(puVar57 + lVar50 + -0x8ab1) + 1) * *(int *)(puVar57 + lVar50 + -0x8ab1) &
             0x80000001;
    if ((int)uVar49 < 0) {
      uVar49 = (uVar49 - 1 | 0xfffffffe) + 1;
    }
    puVar48 = puVar59 + lVar46 + 0x520;
  } while (uVar49 != 0);
  uVar49 = *(uint *)(puVar59 + lVar46 + 0x5d0);
  if ((((param_1 == 0) || (param_2 == 0)) || (lVar44 == 0)) || (0x500 < uVar49)) {
    uVar51 = 99;
  }
  else {
    if (uVar49 != 0) {
      *(undefined1 **)(puVar59 + lVar46 + 0x548) = puVar59 + lVar46 + 0x554;
      *(undefined1 **)(puVar59 + lVar46 + 0x540) = puVar59 + lVar46 + 0x550;
      *(undefined8 *)(puVar59 + lVar46 + 0x518) = 0x1809ff612;
      lVar50 = FUN_180a00570(param_1,param_2,uVar49,CONCAT71((int7)(uVar62 >> 8),0xa0));
      if (((lVar50 != 0) &&
          (pcVar55 = (char *)((ulonglong)*(uint *)(puVar59 + lVar46 + 0x550) + lVar50),
          pcVar55 != (char *)0x0)) && (*(uint *)(puVar59 + lVar46 + 0x554) - 1 < 0x1400)) {
        pcVar2 = pcVar55 + *(uint *)(puVar59 + lVar46 + 0x554);
        for (; pcVar55 < pcVar2; pcVar55 = pcVar55 + (uVar52 + uVar49)) {
          *(undefined8 *)(puVar59 + lVar46 + 0x518) = 0x1809ff650;
          uVar49 = FUN_180a00950(param_1,pcVar55,puVar59 + lVar46 + 0x564);
          if (0x500 < uVar49) break;
          uVar52 = *(uint *)(puVar59 + lVar46 + 0x564);
          if (pcVar2 < pcVar55 + (ulonglong)uVar49 + (ulonglong)uVar52) break;
          if (*pcVar55 == '\x02') {
            *(undefined8 *)(puVar59 + lVar46 + 0x518) = 0x1809ff693;
            uVar51 = FUN_180a0a2c0(pcVar55 + uVar52,uVar49,lVar44);
            return uVar51;
          }
        }
      }
    }
    uVar51 = 0x12f;
  }
  return uVar51;
}



############ FUN_ 18095ec40 size=2103 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x00018095f40a) */
/* WARNING: Removing unreachable block (ram,0x00018095ec71) */
/* WARNING: Removing unreachable block (ram,0x00018095ed68) */
/* WARNING: Removing unreachable block (ram,0x00018095f337) */

ulonglong FUN_18095ec40(uint param_1)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  undefined1 *puVar10;
  ulonglong uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  ulonglong uVar15;
  undefined1 *puVar16;
  uint uVar17;
  uint uVar18;
  longlong lVar19;
  ulonglong uVar20;
  longlong lVar21;
  ulonglong uVar22;
  uint uVar23;
  int unaff_retaddr;
  undefined1 auStack_68 [40];
  
  uVar22 = (ulonglong)param_1;
  lVar21 = 0;
  uVar17 = (uint)&stack0x00000000 & 0x42ff;
  uVar17 = (uVar17 * uVar17 + 1) % 7;
  uVar23 = (((int)(-uVar17 | uVar17) >> 0x1f) * -0x1a30 | 0x3fbcU) ^ 0x3c2c;
  uVar11 = (ulonglong)uVar23;
  bVar1 = (&DAT_181be88f0)[param_1 >> 8 & 0xff];
  uVar18 = (DAT_181442268 ^
           (DAT_181442264 ^
           (DAT_181442260 ^
           (DAT_18144225c ^
           (DAT_181442258 ^
           (DAT_181442254 ^
           (DAT_181442250 ^
           (DAT_18144224c ^
           (DAT_181442248 ^
           (DAT_181442244 ^
           (DAT_181442240 ^
           (DAT_18144223c ^
           (DAT_181442238 ^
           (DAT_181442234 ^
           (DAT_181442230 ^
           (DAT_18144222c ^
           (DAT_181442228 ^
           (DAT_181442224 ^
           (DAT_181442220 ^
           (DAT_18144221c ^
           (DAT_181442218 ^
           (DAT_181442214 ^
           (DAT_181442210 ^
           (DAT_18144220c ^
           (DAT_181442208 ^
           (DAT_181442204 ^
           (DAT_181442200 ^
           (DAT_1814421fc ^
           (DAT_1814421f8 ^
           (DAT_1814421f4 ^
           (DAT_1814421f0 ^
           (DAT_1814421ec ^
           (DAT_1814421e8 ^
           (DAT_1814421e4 ^
           (DAT_1814421e0 ^
           (DAT_1814421dc ^
           (DAT_1814421d8 ^
           (DAT_1814421d4 ^
           (DAT_1814421d0 ^
           (DAT_1814421cc ^
           (DAT_1814421c8 ^
           (DAT_1814421c4 ^ (DAT_1814421c0 ^ (DAT_1814421bc ^ 0x811c9e07) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7
           ) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7
           ) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7;
  uVar20 = (ulonglong)uVar18;
  uVar17 = uVar18 & 0x1f;
  uVar15 = (longlong)(ulonglong)(uVar17 * uVar17 * (uVar17 + 1) * (uVar17 + 1) & 1) >>
           ((byte)uVar18 & 0x1f) ^ 4;
  uVar17 = *(uint *)((longlong)&DAT_181442268 + uVar15);
  do {
    FUN_18095d945(0x5604);
    uVar12 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar12 < 0) {
      uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar12 != 0);
  uVar12 = *(uint *)((longlong)&DAT_18144226c + uVar15);
  uVar3 = *(uint *)((longlong)&DAT_181442270 + uVar15);
  uVar4 = *(uint *)((longlong)&DAT_181442274 + uVar15);
  do {
    FUN_180960c17(0x5604);
    uVar13 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar13 != 0);
  bVar2 = (&DAT_181be88f0)[(ulonglong)(param_1 >> 0x10) & 0xff];
  uVar13 = *(uint *)((longlong)&DAT_181442278 + uVar15);
  uVar5 = *(uint *)((longlong)&DAT_18144227c + uVar15);
  uVar6 = *(uint *)((longlong)&DAT_181442280 + uVar15);
  uVar7 = *(uint *)((longlong)&DAT_181442284 + uVar15);
  uVar8 = *(uint *)((longlong)&DAT_181442288 + uVar15);
  uVar9 = *(uint *)((longlong)&DAT_18144228c + uVar15);
  do {
    FUN_18095e1a9(0x5604);
    lVar19 = lVar21 + uVar20;
    lVar21 = ~(uVar20 - lVar19) + 1;
    uVar20 = lVar19 - lVar21;
    uVar14 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar14 != 0);
  uVar17 = (*(uint *)((longlong)&DAT_1814422b0 + uVar15) ^
           (*(uint *)((longlong)&DAT_1814422ac + uVar15) ^
           (*(uint *)((longlong)&DAT_1814422a8 + uVar15) ^
           (*(uint *)((longlong)&DAT_1814422a4 + uVar15) ^
           (*(uint *)((longlong)&DAT_1814422a0 + uVar15) ^
           (*(uint *)((longlong)&DAT_18144229c + uVar15) ^
           (*(uint *)((longlong)&DAT_181442298 + uVar15) ^
           (*(uint *)((longlong)&DAT_181442294 + uVar15) ^
           (*(uint *)((longlong)&DAT_181442290 + uVar15) ^
           (uVar9 ^ (uVar8 ^ (uVar7 ^ (uVar6 ^ (uVar5 ^ (uVar13 ^ (uVar4 ^ (uVar3 ^ (uVar12 ^ (
                                                  uVar17 ^ uVar18) * 0x10001a7) * 0x10001a7) *
                                                  0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
                                      * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) *
           0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7) * 0x10001a7)
           * 0x10001a7) * 0x10001a7 ^ *(uint *)((longlong)&DAT_1814422b4 + uVar15);
  uVar17 = (uVar17 * 0x70000000 | uVar17 * 0x10001a7 >> 4) ^ 0x6a57305f;
  uVar15 = (ulonglong)(byte)(&DAT_181be88f0)[param_1 >> 0x18];
  do {
    lVar19 = uVar22 + lVar21;
    lVar21 = lVar21 - lVar19;
    uVar22 = -lVar21;
    lVar21 = lVar19 + lVar21;
    uVar18 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar18 < 0) {
      uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar18 != 0);
  if ((uVar17 << 0x15 | uVar17 >> 0xb) != 0xd43b7331) {
    FUN_18096111f();
    uVar11 = thunk_FUN_1805a9280();
    return uVar11;
  }
  puVar10 = auStack_68;
  do {
    puVar16 = puVar10;
    *(undefined8 *)(puVar16 + -8) = 0x18095f46f;
    lVar19 = (longlong)(int)uVar23;
    func_0x00018095e990();
    *(longlong *)(puVar16 + -8) = lVar21;
    *(ulonglong *)(puVar16 + -0x10) = uVar15;
    *(ulonglong *)(puVar16 + -0x18) = uVar11;
    lVar19 = -lVar19;
    uVar11 = *(ulonglong *)(puVar16 + lVar19 + 0x378);
    uVar15 = *(ulonglong *)(puVar16 + lVar19 + 0x380);
    lVar21 = *(longlong *)(puVar16 + lVar19 + 0x388);
    uVar17 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar17 < 0) {
      uVar17 = (uVar17 - 1 | 0xfffffffe) + 1;
    }
    puVar10 = puVar16 + lVar19 + 0x390;
  } while (uVar17 != 0);
  return (ulonglong)
         (((((uint)uVar15 & 0xff) << 8 | (uint)bVar2) << 8 | (uint)bVar1) << 8 |
         (uint)(byte)puVar16[lVar19 + 0x400]);
}



############ FUN_ 18117e4fb size=1284 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

ulonglong FUN_18117e4fb(uint *param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                       int param_5)

{
  int iVar1;
  longlong lVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  longlong lVar5;
  undefined1 *puVar6;
  char cVar7;
  uint uVar8;
  longlong in_RAX;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  uint uVar12;
  int *piVar13;
  ulonglong uVar14;
  undefined8 *puVar15;
  undefined4 unaff_EBX;
  undefined1 *puVar16;
  longlong unaff_RBP;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined8 in_R11;
  longlong unaff_R12;
  int *unaff_R13;
  undefined4 unaff_R14D;
  uint *puVar17;
  int unaff_R15D;
  ulonglong unaff_retaddr;
  undefined1 auStackX_8 [32];
  int in_stack_00000058;
  undefined8 in_stack_00000060;
  undefined8 in_stack_00000068;
  uint in_stack_00000070;
  undefined4 in_stack_00000078;
  
  uVar4 = ((in_RAX - unaff_R12) + param_2 * 0x100) * -0x3f + 0x6b96dddfU >> 5;
  uVar14 = uVar4 * 0x8000 + 0x2b1fcad0;
  *param_1 = ((uint)uVar4 ^ (uint)uVar14) & 0x7fffffff;
  uVar9 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
  if ((int)uVar9 < 0) {
    uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
  }
  if (uVar9 != 0) {
    piVar13 = (int *)(unaff_RBP + -0x4c);
    FUN_18117ce26((longlong)&stack0x00000068 + 4);
    uVar3 = rdtsc();
    *piVar13 = (int)uVar3 + (int)((ulonglong)uVar3 >> 0x20) * 8;
    uVar14 = FUN_18117e4fb();
    return uVar14;
  }
  in_stack_00000068._4_4_ = in_stack_00000068._4_4_ ^ *(uint *)(unaff_RBP + -0x7c);
  if (in_stack_00000068._4_4_ < 0x588fe9) {
    do {
      uVar9 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    *(undefined4 *)(unaff_RBP + 0x90) = unaff_ESI;
    *(undefined4 *)(unaff_RBP + 0x94) = unaff_EDI;
    *(undefined4 *)(unaff_RBP + 0x98) = unaff_R14D;
    *(undefined4 *)(unaff_RBP + 0x9c) = unaff_EBX;
    do {
      puVar15 = (undefined8 *)(unaff_RBP + -0x30);
      puVar11 = &stack0x00000070;
                    /* WARNING: Call to offcut address within same function */
      func_0x00018117ea25();
      *puVar11 = 0xfac8fa44;
      in_R11 = 0;
      *puVar15 = 0x18117e653;
      FUN_18117f001();
      uVar9 = (*(int *)(unaff_RBP + 0x138) + 1) * *(int *)(unaff_RBP + 0x138) & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar9 = ~(~(in_stack_00000070 << 0x16 | in_stack_00000070 >> 10) + 0xc5bb9345);
    in_stack_00000070 = (uVar9 >> 9 | uVar9 << 0x17) ^ 0x83494ad2;
    (*(code *)((longlong)(int)in_stack_00000070 + *(longlong *)(unaff_RBP + -0x30)))
              (unaff_RBP + 0x90,unaff_RBP + 0xd8);
    uVar9 = *(uint *)(unaff_RBP + 0xd8);
    uVar12 = *(uint *)(unaff_RBP + 0xdc);
    unaff_retaddr = 7;
    do {
      uVar8 = (uVar9 >> 0xc ^ uVar9) >> 2 & 0xfff;
      uVar10 = (uVar12 >> 5 ^ uVar12) >> 8 & 1;
      uVar9 = (uVar8 << 0xc | uVar8) << 2 ^ uVar9;
      uVar8 = (uVar9 >> 0x18 | uVar9 << 8) + 0x6e4157a7;
      uVar10 = (uVar12 << 0x1c | ((uVar10 << 5 | uVar10) << 8 ^ uVar12) >> 4) + 0x20a786ca;
      uVar9 = (uVar8 >> 0xb ^ uVar8) >> 9 & 0x3ff;
      uVar12 = uVar8 ^ (uVar9 << 0xb | uVar9) << 9;
      uVar9 = (uVar10 >> 0x11 ^ uVar10) >> 0xb & 3;
      uVar10 = uVar10 ^ (uVar9 << 0x11 | uVar9) << 0xb;
      uVar9 = (uVar12 >> 4 | uVar8 * 0x10000000) & 0x78787878;
      uVar14 = (ulonglong)uVar9;
      uVar9 = (uVar12 << 4 | uVar12 >> 0x1c) & 0x87878787 | uVar9;
      uVar12 = (uVar10 >> 0x10 | uVar10 << 0x10) & 0xa3635c9c |
               (uVar10 << 0x10 | uVar10 >> 0x10) & 0x5c9ca363;
      uVar12 = (uVar12 << 0x12 | uVar12 >> 0xe) + 0x607d5440;
      uVar8 = uVar12 ^ (uVar9 << 0x12 | uVar9 >> 0xe) + 0x270a0bab;
      uVar9 = uVar8 & 0x3c3c3c3c ^ uVar12;
      uVar8 = uVar8 & 0xc3c3c3c3 ^ uVar12 ^ uVar9;
      uVar12 = uVar8 & 0x8cbe5e76 ^ uVar9;
      uVar9 = uVar8 & 0x7341a189 ^ uVar9;
      uVar8 = (int)unaff_retaddr - 1;
      unaff_retaddr = (ulonglong)uVar8;
    } while (-1 < (int)uVar8);
    uVar9 = ((~uVar9 ^ 0x3baf7562) >> 0x11 | (~uVar9 ^ 0x3baf7562) << 0xf) ^ 0xc55b1aa5;
    uVar9 = (uVar9 >> 5 | uVar9 << 0x1b) + 0xb21e6551;
    uVar9 = (uVar9 >> 5 | uVar9 * 0x8000000) + 0x615aefaf;
    if (((uVar9 * 0x8000 | uVar9 >> 0x11) ^ 0x2208683e) + uVar12 != in_stack_00000060._4_4_) {
      do {
        *(code **)(unaff_RBP + -0x28) = FUN_180bc2900;
        iVar1 = *(int *)(unaff_RBP + 0x138);
        uVar9 = (iVar1 + 1) * iVar1 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar9 != 0);
      (**(code **)(unaff_RBP + -0x28))();
      do {
        iVar1 = *(int *)(unaff_RBP + 0x138);
        uVar9 = (iVar1 + 1) * iVar1 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar9 != 0);
    }
  }
  puVar17 = (uint *)(unaff_RBP + 0x138);
  if (((int)CONCAT71((int7)((ulonglong)unaff_R12 >> 8),param_5 == in_stack_00000058) * 5 &
      0x3fffffffU) != 0) {
    puVar6 = auStackX_8;
    do {
      puVar16 = puVar6;
      *(ulonglong *)(puVar16 + -8) = unaff_retaddr;
      *(undefined8 *)(puVar16 + -0x10) = in_R11;
      *(ulonglong *)(puVar16 + -0x18) = uVar14;
      puVar17 = (uint *)(~-(longlong)puVar17 + 1);
      lVar5 = -(longlong)unaff_R15D;
      uVar14 = *(ulonglong *)(puVar16 + lVar5 + 0x728);
      in_R11 = *(undefined8 *)(puVar16 + lVar5 + 0x730);
      unaff_retaddr = *(ulonglong *)(puVar16 + lVar5 + 0x738);
      uVar9 = (*puVar17 + 1) * *puVar17 & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
      puVar6 = puVar16 + lVar5 + 0x740;
    } while (uVar9 != 0);
    lVar2 = *(longlong *)(unaff_RBP + -0x60);
    *(undefined8 *)(puVar16 + lVar5 + 0x738) = 0x18117eb12;
    cVar7 = FUN_1812457c0(lVar2 + 0x20);
    if (cVar7 == '\0') {
      *(undefined **)(puVar16 + lVar5 + 0x738) = &UNK_18117f7e1;
    }
    *(undefined8 *)(puVar16 + lVar5 + 0x738) = 0x18117eb2d;
    FUN_181244920(lVar2 + 0x20,puVar16 + lVar5 + 0x7b8);
    *(undefined8 *)(puVar16 + lVar5 + 0x738) = 0x18117eb3c;
    FUN_181248710(unaff_RBP + 0x40,puVar16 + lVar5 + 0x7b8);
    do {
      uVar9 = *puVar17;
      uVar12 = (uVar9 + 1) * uVar9 & 0x80000001;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar12 != 0);
    *(int *)(puVar16 + lVar5 + 0x770) = (int)unaff_R12;
    *(undefined8 *)(puVar16 + lVar5 + 0x738) = 0xb1af927;
    *(longlong *)(puVar16 + lVar5 + 0x730) = lVar2;
    *(undefined **)(puVar16 + lVar5 + 0x728) = &DAT_18117eca7;
    *(undefined **)(puVar16 + lVar5 + 0x720) = &DAT_18117d21e;
    *(undefined1 **)(puVar16 + lVar5 + 0x718) = &LAB_181183e5a;
    *(undefined1 **)(puVar16 + lVar5 + 0x710) = &LAB_1811786e1;
    *(undefined **)(puVar16 + lVar5 + 0x708) = &DAT_18117ee5e;
    *(undefined1 **)(puVar16 + lVar5 + 0x700) = &LAB_181185ddb_1;
    *(undefined1 **)(puVar16 + lVar5 + 0x6f8) = &LAB_18117ef29;
    return (ulonglong)uVar9 & 0xfffffffffffffff8;
  }
  FUN_1811801df();
  uVar14 = thunk_FUN_1805a9280();
  return uVar14;
}



############ FUN_ 18096dba0 size=1844 ############

/* WARNING: Removing unreachable block (ram,0x00018096e0f1) */
/* WARNING: Removing unreachable block (ram,0x00018096df41) */
/* WARNING: Removing unreachable block (ram,0x00018096de6e) */
/* WARNING: Removing unreachable block (ram,0x00018096e0ad) */
/* WARNING: Removing unreachable block (ram,0x00018096e20f) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

ulonglong FUN_18096dba0(longlong param_1,longlong param_2,uint param_3)

{
  char cVar1;
  char cVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined1 *puVar7;
  ulonglong uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  undefined8 uVar12;
  uint uVar13;
  longlong lVar14;
  longlong lVar15;
  int unaff_retaddr;
  undefined1 auStack_78 [32];
  uint local_58;
  uint local_54;
  undefined8 local_50;
  int *local_48;
  
  puVar7 = auStack_78;
  uVar4 = (ulonglong)param_3;
  uVar13 = (uint)&stack0x00000000;
  iVar9 = (uVar13 & 0x41ff) * (uVar13 & 0x41ff) + 1;
  uVar11 = (iVar9 >> 4) + (iVar9 >> 1) + iVar9 * 0x24924924 >> 0x1d;
  uVar11 = (int)(uVar11 - 7) >> 0x1f & uVar11;
  uVar11 = (int)(-uVar11 | uVar11) >> 0x1f;
  local_54 = (int)(-uVar11 | uVar11) >> 0x1f & 0x4e86U ^ 0x4f16;
  uVar10 = ((uVar13 & 0xeff) * (uVar13 & 0xeff) * 0x10 + 4) % 0x13;
  uVar11 = ((uVar13 & 0x19ff) * (uVar13 & 0x19ff) * 0x10 + 4) % 0x13;
  uVar11 = (int)((-uVar11 | uVar11) & (-uVar10 | uVar10)) >> 0x1f;
  local_58 = ((int)(-uVar11 | uVar11) >> 0x1f) * -0xb759 ^ 0xb729;
  local_50 = 0x100;
  local_48 = &DAT_181201790;
  uVar12 = 0;
  iVar9 = ((((((((((DAT_181201790 * 0x6b + _DAT_181201794) * 0x6b + _DAT_181201798) * 0x6b +
                 _DAT_18120179c) * 0x6b + _DAT_1812017a0) * 0x6b + _DAT_1812017a4) * 0x6b +
              _DAT_1812017a8) * 0x6b + _DAT_1812017ac) * 0x6b + _DAT_1812017b0) * 0x6b +
           _DAT_1812017b4) * 0x6b + _DAT_1812017b8) * 0x6b + _DAT_1812017bc;
  do {
    FUN_18096d3fc();
    uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar11 < 0) {
      uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar11 != 0);
  uVar11 = (((((((((((((((((iVar9 * 0x6b + _DAT_1812017c0) * 0x6b + _LAB_1812017c4) * 0x6b +
                         _DAT_1812017c8) * 0x6b + _DAT_1812017cc) * 0x6b + _DAT_1812017d0) * 0x6b +
                      _DAT_1812017d4) * 0x6b + _DAT_1812017d8) * 0x6b + _DAT_1812017dc) * 0x6b +
                   _DAT_1812017e0) * 0x6b + _DAT_1812017e4) * 0x6b + _DAT_1812017e8) * 0x6b +
                _DAT_1812017ec) * 0x6b + _DAT_1812017f0) * 0x6b + _DAT_1812017f4) * 0x6b +
             _DAT_1812017f8) * 0x6b + _DAT_1812017fc) * 0x6b + _UNK_181201800) * 0x6b +
           _UNK_181201804;
  if ((uVar11 & 0x280) == 0) {
    uVar10 = uVar11 & 7 | 0x4d;
    uVar10 = (uint)(uVar10 * uVar10 * 0x19a3 == 0xe1024);
  }
  else {
    uVar10 = uVar11 & 0xf;
    uVar10 = uVar10 * uVar10 * (uVar10 + 1) * (uVar10 + 1) & 0x80000003;
  }
  uVar3 = (longlong)(int)uVar10 ^ 8;
  cVar2 = (char)(uVar3 + 0x9c);
  uVar11 = (((((((((((uVar11 * 0x6b + *(int *)(&UNK_181201800 + uVar3)) * 0x6b +
                    *(int *)(&UNK_181201804 + uVar3)) * 0x6b + *(int *)(&UNK_181201808 + uVar3)) *
                   0x6b + *(int *)(&UNK_18120180c + uVar3)) * 0x6b +
                 *(int *)(&UNK_181201810 + uVar3)) * 0x6b + *(int *)(&UNK_181201814 + uVar3)) * 0x6b
               + *(int *)(&UNK_181201818 + uVar3)) * 0x6b + *(int *)(&UNK_18120181c + uVar3)) * 0x6b
             + *(int *)(&UNK_181201820 + uVar3)) * 0x6b + *(int *)(&UNK_181201824 + uVar3)) * 0x6b +
           *(int *)(&UNK_181201828 + uVar3)) * 0x6b + *(int *)(&UNK_18120182c + uVar3);
  uVar8 = (ulonglong)uVar11;
  uVar5 = (ulonglong)(uVar11 & 0x68ff);
  cVar1 = (char)(uVar11 & 0x68ff);
  lVar6 = uVar3 + 0x9c +
          (0x18 - ((longlong)(0xd715 << (((cVar2 + -1) * cVar2 ^ (cVar1 + -1) * cVar1) & 1U)) ^
                  0xd701U));
  do {
    param_1 = param_1 + uVar5;
    uVar5 = ~((~(uVar5 - param_1) + 1) - param_1) + 1;
    param_1 = param_1 - uVar5;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar11 = (((((((((uVar11 * 0x6b + *(int *)(lVar6 + 0x181201790)) * 0x6b +
                  *(int *)(&DAT_181201794 + lVar6)) * 0x6b + *(int *)(&DAT_181201798 + lVar6)) *
                 0x6b + *(int *)(&DAT_18120179c + lVar6)) * 0x6b + *(int *)(&DAT_1812017a0 + lVar6))
               * 0x6b + *(int *)(&DAT_1812017a4 + lVar6)) * 0x6b + *(int *)(&DAT_1812017a8 + lVar6))
             * 0x6b + *(int *)(&DAT_1812017ac + lVar6)) * 0x6b + *(int *)(&DAT_1812017b0 + lVar6)) *
           0x6b + *(int *)(&DAT_1812017b4 + lVar6);
  uVar3 = (ulonglong)uVar11;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018096dc35();
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  uVar11 = (((((((((((uVar11 * 0x6b + *(int *)(&DAT_1812017b8 + lVar6)) * 0x6b +
                    *(int *)(&DAT_1812017bc + lVar6)) * 0x6b + *(int *)(&DAT_1812017c0 + lVar6)) *
                   0x6b + *(int *)(&LAB_1812017c4 + lVar6)) * 0x6b +
                 *(int *)(&DAT_1812017c8 + lVar6)) * 0x6b + *(int *)(&DAT_1812017cc + lVar6)) * 0x6b
               + *(int *)(&DAT_1812017d0 + lVar6)) * 0x6b + *(int *)(&DAT_1812017d4 + lVar6)) * 0x6b
             + *(int *)(&DAT_1812017d8 + lVar6)) * 0x6b + *(int *)(&DAT_1812017dc + lVar6)) * 0x6b +
           *(int *)(&DAT_1812017e0 + lVar6)) * 0x6b + *(int *)(&DAT_1812017e4 + lVar6) ^ 0xa1d124a6;
  uVar11 = (uVar11 << 0xf | uVar11 >> 0x11) ^ 0x79ec1d9e;
  if ((char)((uVar11 != 0x98d5fc0e) * '\x0e') == '\0') {
    do {
      *(ulonglong *)(puVar7 + -8) = uVar3;
      *(ulonglong *)(puVar7 + -0x10) = uVar8;
      *(undefined8 *)(puVar7 + -0x18) = uVar12;
      lVar6 = -(longlong)(int)local_58;
      lVar14 = param_1 + (uVar4 - 0x405cd786);
      lVar15 = (uVar4 - 0x405cd786) - lVar14;
      param_1 = -lVar15;
      uVar4 = lVar14 + lVar15 + 0x405cd786;
      uVar12 = *(undefined8 *)(puVar7 + lVar6 + 0x58);
      uVar8 = *(ulonglong *)(puVar7 + lVar6 + 0x60);
      uVar3 = *(ulonglong *)(puVar7 + lVar6 + 0x68);
      puVar7 = puVar7 + lVar6 + 0x70;
      uVar11 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar11 < 0) {
        uVar11 = (uVar11 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar11 != 0);
    uVar4 = (ulonglong)(uint)((int)uVar4 >> 0x1f) << 0x20 | uVar4 & 0xffffffff;
    return (ulonglong)
           ((*(uint *)(*(longlong *)(param_2 + 8) +
                      (longlong)(int)((longlong)uVar4 / (longlong)*(int *)(param_1 + 8)) * 4) &
            1 << ((byte)((longlong)uVar4 % (longlong)*(int *)(param_1 + 8)) & 0x1f)) != 0);
  }
  uVar4 = thunk_FUN_1805a9280((longlong)(int)local_54,uVar11,0x18096e313);
  return uVar4;
}



############ FUN_ 180a5ddf2 size=618 ############

/* WARNING: Instruction at (ram,0x000180a5de91) overlaps instruction at (ram,0x000180a5de8e)
    */
/* WARNING: Removing unreachable block (ram,0x000180a5dddc) */
/* WARNING: Removing unreachable block (ram,0x000180a5de8b) */
/* WARNING: Removing unreachable block (ram,0x000180a5de84) */
/* WARNING: Removing unreachable block (ram,0x000180a5de89) */
/* WARNING: Removing unreachable block (ram,0x000180a5df9e) */
/* WARNING: Removing unreachable block (ram,0x000180a5dde4) */
/* WARNING: Removing unreachable block (ram,0x000180a5dde6) */

void FUN_180a5ddf2(void)

{
  uint uVar1;
  uint uVar2;
  longlong unaff_RBX;
  int unaff_EBP;
  int unaff_ESI;
  longlong unaff_RDI;
  undefined8 in_R9;
  undefined8 in_R10;
  longlong in_R11;
  longlong lVar3;
  longlong lVar4;
  longlong unaff_R14;
  longlong lVar5;
  int *unaff_R15;
  
  lVar5 = -unaff_R14;
  lVar3 = in_R11 + unaff_R14;
  do {
    uVar1 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = (*(int *)(unaff_RDI + 0x38 + unaff_RBX) + unaff_ESI) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RDI + 0x3c + unaff_RBX)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RDI + 0x40 + unaff_RBX)) * 0x401;
  uVar1 = ((uVar1 >> 6 ^ uVar1) + *(int *)(unaff_RDI + 0x44 + unaff_RBX)) * 0x401;
  uVar1 = uVar1 ^ uVar1 >> 6;
  do {
    func_0x000180a5f21b();
    uVar2 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (uVar1 >> 8 | uVar1 << 0x18) & 0x857a857a | (uVar1 << 8 | uVar1 >> 0x18) & 0x7a857a85;
  do {
    lVar4 = lVar3 + lVar5;
    lVar3 = ~(lVar5 - lVar4) + 1;
    lVar5 = lVar4 - lVar3;
    uVar2 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = ((uVar1 >> 0x10 | uVar1 << 0x10) & 0x815d7ea2 |
          (uVar1 << 0x10 | uVar1 >> 0x10) & 0x7ea2815d) ^ 0xb2b9965;
  if ((uVar1 & 0x7fffffff) == 0 && uVar1 == 0) {
    do {
      *(undefined8 *)((longlong)register0x00000020 + -8) = 0x180a5df79;
      lVar3 = (longlong)unaff_EBP;
      FUN_180a5ed6d();
      *(longlong *)((longlong)register0x00000020 + -8) = lVar5;
      *(undefined8 *)((longlong)register0x00000020 + -0x10) = in_R10;
      *(undefined8 *)((longlong)register0x00000020 + -0x18) = in_R9;
      lVar3 = -lVar3;
      in_R9 = *(undefined8 *)((longlong)register0x00000020 + lVar3 + 0x108);
      in_R10 = *(undefined8 *)((longlong)register0x00000020 + lVar3 + 0x110);
      lVar5 = *(longlong *)((longlong)register0x00000020 + lVar3 + 0x118);
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar3 + 0x120);
      uVar1 = (*unaff_R15 + 1) * *unaff_R15 & 0x80000001;
      if ((int)uVar1 < 0) {
        uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar1 != 0);
    FUN_180a59120();
    return;
  }
  FUN_180a5fc99();
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 18092d1f0 size=2611 ############

/* WARNING: Instruction at (ram,0x00018092d712) overlaps instruction at (ram,0x00018092d711)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018092d688) */
/* WARNING: Removing unreachable block (ram,0x00018092d3bf) */
/* WARNING: Removing unreachable block (ram,0x00018092d2fc) */
/* WARNING: Removing unreachable block (ram,0x00018092d352) */
/* WARNING: Removing unreachable block (ram,0x00018092d607) */
/* WARNING: Removing unreachable block (ram,0x00018092d60b) */
/* WARNING: Removing unreachable block (ram,0x00018092d70e) */

void FUN_18092d1f0(undefined8 *param_1,undefined8 *param_2,ulonglong param_3,undefined4 param_4,
                  undefined8 *param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,
                  undefined8 param_9)

{
  longlong *plVar1;
  longlong *plVar2;
  code *pcVar3;
  undefined8 *puVar4;
  undefined1 *puVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  longlong lVar9;
  void *pvVar10;
  int iVar11;
  int *piVar12;
  undefined1 *puVar13;
  undefined8 *puVar14;
  longlong lVar15;
  ulonglong uVar16;
  longlong lVar17;
  undefined8 in_R10;
  uint uVar18;
  ulonglong uVar19;
  longlong lVar20;
  ulonglong uVar21;
  uint unaff_retaddr;
  undefined1 auStack_188 [32];
  undefined4 local_168;
  undefined8 *local_160;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  undefined8 local_140;
  undefined8 local_138;
  undefined8 local_130;
  undefined8 *local_128;
  undefined4 local_120;
  undefined8 *local_118;
  uint local_110;
  undefined8 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  ulonglong local_f0;
  undefined8 local_e8;
  longlong local_e0;
  undefined8 local_d8;
  longlong local_d0;
  undefined8 local_c8;
  longlong local_c0;
  undefined8 local_b8;
  longlong local_b0;
  undefined8 local_a8;
  undefined8 *local_a0;
  undefined8 *local_98;
  undefined8 *local_90;
  void *local_88 [3];
  ulonglong local_70;
  void *local_68 [3];
  ulonglong local_50;
  ulonglong local_48;
  
  local_a8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_188;
  local_90 = param_5;
  local_f8 = param_7;
  local_100 = param_8;
  local_108 = param_9;
  *param_1 = pace::ClientConnectionOpener::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[5] = 0;
  param_1[6] = 0xf;
  *(undefined1 *)(param_1 + 3) = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined1 *)(param_1 + 9) = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  local_128 = param_2;
  local_120 = param_4;
  local_118 = param_1;
  local_f0 = param_3;
  local_a0 = param_1;
  local_98 = param_2;
  FUN_180575180(param_1 + 0xc);
  puVar4 = local_128;
  param_1[0x6b] = 0;
  param_1[0x6c] = 0;
  param_1[0x6d] = 0;
  if (((ulonglong)&stack0x00000000 & 0x180) == 0) {
    uVar6 = 0x6814ef5;
  }
  else {
    uVar6 = (uint)&stack0x00000000 & 0xeff;
    uVar6 = (uVar6 + 1) * uVar6 + 0x11e1 & 0x80000001;
  }
  uVar19 = (ulonglong)(((int)(-uVar6 | uVar6) >> 0x1f) * 0x1a & 0xde06U ^ 0xd0f6);
  uVar6 = (uint)&stack0x00000000 & 0x27f;
  iVar11 = (uVar6 + 2) * (uVar6 + 1) * uVar6;
  local_110 = 0xa97c >> ((byte)(((iVar11 >> 1) - (iVar11 >> 3)) + iVar11 * 0x55555555 >> 0x1e) &
                        0x1f) ^ 0xa47c;
  local_130 = 0x1813ecee4;
  uVar6 = (iRam00000001813ecde4 + -0x1c8676a7) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ecde8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ecdec) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ecdf0) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ecdf4) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ecdf8) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ecdfc) * 0x401;
  do {
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar6 = (iRam00000001813ece00 + (uVar6 ^ uVar6 >> 6)) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ece04) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + iRam00000001813ece08) * 0x401;
  uVar21 = (ulonglong)(uVar6 ^ uVar6 >> 6);
  piVar12 = &iRam00000001813ece0c;
  do {
    lVar20 = uVar19 + uVar21;
    uVar19 = ~(uVar21 - lVar20) + 1;
    uVar21 = lVar20 - uVar19;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (iRam00000001813ece0c + (int)uVar21) * 0x401;
  lVar20 = 0x11;
  do {
    piVar12 = piVar12 + 1;
    uVar6 = ((uVar6 >> 6 ^ uVar6) + *piVar12) * 0x401;
    lVar20 = lVar20 + -1;
  } while (lVar20 != 0);
  uVar6 = uVar6 ^ uVar6 >> 6;
  uVar7 = uVar6 & 0x30ff;
  piVar12 = (int *)((longlong)piVar12 +
                   ((longlong)
                    (0x98f4 <<
                    ((byte)(((uVar7 + 1) * uVar7 & 0x80000001) << ((byte)piVar12 & 0x1f)) & 0x1f)) ^
                   0x98f0U));
  uVar6 = (*piVar12 + uVar6) * 0x401;
  uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[1]) * 0x401;
  uVar18 = ((uVar6 >> 6 ^ uVar6) + piVar12[2]) * 0x401;
  uVar7 = uVar18 >> 6;
  uVar6 = uVar7;
  do {
    uVar21 = 0xec24;
    do {
      uVar16 = uVar21;
      if ((uVar16 & 0xc3) == 0) goto code_r0x00018092d71b;
      uVar6 = uVar6 - iRamffffffff854c03eb;
      uVar21 = uVar16 - 1;
    } while (uVar16 - 1 != 0);
    *(byte *)(uVar16 + 0x57) = *(byte *)(uVar16 + 0x57) | (byte)uVar6;
code_r0x00018092d71b:
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    uVar6 = unaff_retaddr;
    if (uVar8 == 0) {
      uVar6 = (piVar12[3] + (uVar18 ^ uVar7)) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[4]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[5]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[6]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[7]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[8]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[9]) * 0x401;
      uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[10]) * 0x401;
      piVar12 = piVar12 + 0xb;
      local_128 = (undefined8 *)0x9ff98bc38809885d;
      local_138 = 0x18809885d;
      lVar20 = 4;
      do {
        uVar6 = ((uVar6 >> 6 ^ uVar6) + *piVar12) * 0x401;
        uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[1]) * 0x401;
        uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[2]) * 0x401;
        uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[3]) * 0x401;
        uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[4]) * 0x401;
        uVar6 = ((uVar6 >> 6 ^ uVar6) + piVar12[5]) * 0x401;
        piVar12 = piVar12 + 6;
        lVar20 = lVar20 + -1;
      } while (lVar20 != 0);
      uVar6 = ((uVar6 >> 6 ^ uVar6) + *piVar12) * 0x401;
      uVar6 = (uVar6 >> 6 ^ uVar6) + 0xa8fdd68;
      local_e8 = *param_5;
      if ((uVar6 * 0x80000 | uVar6 >> 0xd) != 0x8809885d) {
        local_c0 = param_5[1];
        if (local_c0 != 0) {
          LOCK();
          *(int *)(local_c0 + 8) = *(int *)(local_c0 + 8) + 1;
          UNLOCK();
        }
        local_b8 = *puVar4;
        local_b0 = puVar4[1];
        if (local_b0 != 0) {
          LOCK();
          *(int *)(local_b0 + 8) = *(int *)(local_b0 + 8) + 1;
          UNLOCK();
        }
        local_140 = local_108;
        local_148 = local_100;
        local_150 = local_f8;
        local_158 = param_6;
        local_160 = &local_c8;
        local_168 = local_120;
        local_c8 = local_e8;
        FUN_180930610(local_118,local_68,&local_b8,local_f0);
        if (0xf < local_50) {
          pvVar10 = local_68[0];
          if ((0xfff < local_50 + 1) &&
             (pvVar10 = *(void **)((longlong)local_68[0] + -8),
             0x1f < (ulonglong)((longlong)local_68[0] + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar10);
        }
        FUN_18092ec13();
        thunk_FUN_1805a9280();
        return;
      }
      local_e0 = param_5[1];
      if (local_e0 != 0) {
        LOCK();
        *(int *)(local_e0 + 8) = *(int *)(local_e0 + 8) + 1;
        UNLOCK();
      }
      local_d8 = *puVar4;
      local_d0 = puVar4[1];
      if (local_d0 != 0) {
        LOCK();
        *(int *)(local_d0 + 8) = *(int *)(local_d0 + 8) + 1;
        UNLOCK();
      }
      local_140 = local_108;
      local_148 = local_100;
      local_150 = local_f8;
      local_158 = param_6;
      local_160 = &local_e8;
      local_168 = local_120;
      puVar14 = &local_d8;
      uVar21 = local_f0;
      FUN_180930610(local_118,local_88,puVar14,local_f0);
      if (0xf < local_70) {
        pvVar10 = local_88[0];
        if ((0xfff < local_70 + 1) &&
           (pvVar10 = *(void **)((longlong)local_88[0] + -8),
           0x1f < (ulonglong)((longlong)local_88[0] + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar10);
      }
      lVar20 = (longlong)(int)local_110;
      uVar16 = local_70;
      puVar5 = auStack_188;
      do {
        puVar13 = puVar5;
        *(undefined8 *)(puVar13 + -8) = 0x18092d94b;
        lVar9 = lVar20;
        FUN_18092d0c2(lVar20,uVar16);
        *(undefined8 *)(puVar13 + -8) = in_R10;
        *(ulonglong *)(puVar13 + -0x10) = uVar19;
        *(undefined8 **)(puVar13 + -0x18) = param_5;
        lVar15 = (longlong)puVar14 + ~uVar21 + 1;
        lVar17 = ~((~((~uVar21 + 1) - lVar15) + 1) - lVar15) + 1;
        lVar15 = (lVar15 - lVar17) + uVar16;
        puVar14 = (undefined8 *)(~(uVar16 - lVar15) + 1);
        uVar16 = lVar15 - (longlong)puVar14;
        uVar21 = ~((-lVar17 ^ 0xffffffffffffffffU) + 1) + 1;
        lVar9 = -lVar9;
        param_5 = *(undefined8 **)(puVar13 + lVar9 + 0xce8);
        uVar19 = *(ulonglong *)(puVar13 + lVar9 + 0xcf0);
        in_R10 = *(undefined8 *)(puVar13 + lVar9 + 0xcf8);
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
        puVar5 = puVar13 + lVar9 + 0xd00;
      } while (uVar6 != 0);
      plVar2 = (longlong *)puVar4[1];
      if (plVar2 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar2 + 1;
        lVar20 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar20 == 1) {
          pcVar3 = *(code **)(*plVar2 + 8);
          *(undefined8 *)(puVar13 + lVar9 + 0xcf8) = 0x18092dc2c;
          (*pcVar3)(plVar2);
          LOCK();
          piVar12 = (int *)((longlong)plVar2 + 0xc);
          iVar11 = *piVar12;
          *piVar12 = *piVar12 + -1;
          UNLOCK();
          if (iVar11 == 1) {
            pcVar3 = *(code **)(*plVar2 + 0x10);
            *(undefined8 *)(puVar13 + lVar9 + 0xcf8) = 0x18092dc41;
            (*pcVar3)(plVar2);
          }
        }
      }
      plVar2 = (longlong *)param_5[1];
      if (plVar2 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar2 + 1;
        lVar20 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar20 == 1) {
          pcVar3 = *(code **)(*plVar2 + 8);
          *(undefined8 *)(puVar13 + lVar9 + 0xcf8) = 0x18092dc60;
          (*pcVar3)(plVar2);
          LOCK();
          piVar12 = (int *)((longlong)plVar2 + 0xc);
          iVar11 = *piVar12;
          *piVar12 = *piVar12 + -1;
          UNLOCK();
          if (iVar11 == 1) {
            pcVar3 = *(code **)(*plVar2 + 0x10);
            *(undefined8 *)(puVar13 + lVar9 + 0xcf8) = 0x18092dc73;
            (*pcVar3)(plVar2);
          }
        }
      }
      *(undefined **)(puVar13 + lVar9 + 0xcf8) = &UNK_18092dc83;
    }
  } while( true );
}



############ FUN_ 18096d509 size=1480 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x00018096d5eb) overlaps instruction at (ram,0x00018096d5e8)
    */
/* WARNING: Removing unreachable block (ram,0x00018096d5cc) */
/* WARNING: Removing unreachable block (ram,0x00018096d5e8) */
/* WARNING: Removing unreachable block (ram,0x00018096d5eb) */

ulonglong FUN_18096d509(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  byte *pbVar1;
  longlong lVar2;
  byte bVar3;
  int extraout_var;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  longlong unaff_RBX;
  ulonglong unaff_RBP;
  longlong unaff_RDI;
  uint uVar10;
  ulonglong in_R11;
  ulonglong uVar11;
  ulonglong unaff_R12;
  ulonglong uVar12;
  int *unaff_R13;
  uint unaff_R14D;
  int iVar13;
  ulonglong unaff_R15;
  ulonglong uVar14;
  int in_stack_00000080;
  
  uVar14 = unaff_R15 ^ unaff_R12;
  uVar4 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
  }
  if (uVar4 != 0) {
    uVar14 = FUN_18096d509(0xc420);
    return uVar14;
  }
  uVar4 = *(uint *)(unaff_RDI + 0x38 + unaff_RBX) ^ unaff_R14D >> 0x1c ^ unaff_R14D << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x3c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x40 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x44 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x48 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x4c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x50 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  do {
    uVar5 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar4 = *(uint *)(unaff_RDI + 0x54 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x58 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x5c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x60 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 100 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x68 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x6c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x70 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x74 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x78 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x7c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x80 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x84 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x88 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x8c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x90 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x94 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x98 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0x9c + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xa0 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xa4 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xa8 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xac + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xb0 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xb4 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xb8 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xbc + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xc0 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xc4 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 200 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar5 = uVar4 << 4;
  uVar9 = (ulonglong)uVar5;
  uVar5 = *(uint *)(unaff_RDI + 0xcc + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar5;
  do {
    uVar8 = 0;
    FUN_18096d508();
    uVar10 = (uint)param_3;
    uVar4 = (uint)(uVar9 - in_R11);
    uVar11 = in_R11 + unaff_R12;
    uVar12 = (unaff_R12 - uVar11 ^ 0xffffffffffffffff) + 1;
    iVar13 = (int)uVar12;
    if ((uVar8 & 0xc0) == 0) {
      unaff_R12 = uVar11 - uVar12;
      uVar9 = (uVar9 - in_R11) + uVar12;
      in_R11 = uVar12;
    }
    else {
      uVar6 = extraout_var << 8;
      pbVar1 = (byte *)(unaff_RBP + 0x2b);
      *pbVar1 = *pbVar1 >> 1 | *pbVar1 << 7;
      uVar7 = 0;
      if (*(int *)(unaff_RBP + 0x33) == 0) goto LAB_18096d8d2;
      uVar9 = (ulonglong)(uVar4 + (int)unaff_RBX);
      in_R11 = uVar11;
      unaff_R12 = uVar12;
    }
    iVar13 = (int)unaff_R12;
    uVar4 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = *(uint *)(unaff_RDI + 0xd4 + unaff_RBX);
  uVar10 = *(uint *)(unaff_RDI + 0xf0 + unaff_RBX);
  uVar7 = uVar5 >> 0x1c;
  uVar5 = uVar5 << 4;
  uVar6 = *(uint *)(unaff_RDI + 0xd0 + unaff_RBX) ^ uVar7 ^ uVar5;
  uVar7 = uVar6 << 4;
LAB_18096d8d2:
  uVar8 = (ulonglong)uVar5;
  uVar7 = uVar4 ^ uVar6 >> 0x1c ^ uVar7;
  uVar4 = *(uint *)(unaff_RDI + 0xd8 + unaff_RBX) ^ uVar7 >> 0x1c ^ uVar7 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xdc + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xe0 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xe4 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xe8 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xec + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = uVar10 ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = *(uint *)(unaff_RDI + 0xf4 + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = uVar4 >> 0x1c ^ uVar4 << 4 ^ *(uint *)(unaff_RDI + 0xf8 + unaff_RBX);
  uVar4 = *(uint *)(unaff_RDI + 0xfc + unaff_RBX) ^ uVar4 >> 0x1c ^ uVar4 << 4;
  uVar4 = (uVar4 << 0x10 | uVar4 >> 0x10) & 0xa3b95c46 |
          (uVar4 >> 0x10 | uVar4 << 0x10) & 0x5c46a3b9;
  uVar4 = (uVar4 << 2 | uVar4 >> 0x1e) & 0x99999999 | (uVar4 >> 2 | uVar4 << 0x1e) & 0x66666666;
  uVar5 = (uVar4 >> 0x10 | uVar4 << 0x10) & 0x6da4925b;
  uVar9 = (ulonglong)uVar5;
  uVar4 = ((uVar4 << 0x10 | uVar4 >> 0x10) & 0x925b6da4 | uVar5) - in_stack_00000080;
  if ((uVar4 & 0xfffff) == 0 && uVar4 == 0) {
    do {
      *(ulonglong *)((longlong)register0x00000020 + -8) = uVar8;
      *(int **)((longlong)register0x00000020 + -0x10) = unaff_R13;
      *(ulonglong *)((longlong)register0x00000020 + -0x18) = uVar9;
      lVar2 = -(longlong)iVar13;
      uVar9 = *(ulonglong *)((longlong)register0x00000020 + lVar2 + 0xfc8);
      unaff_R13 = *(int **)((longlong)register0x00000020 + lVar2 + 0xfd0);
      uVar8 = *(ulonglong *)((longlong)register0x00000020 + lVar2 + 0xfd8);
      register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + lVar2 + 0xfe0);
      uVar4 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar4 < 0) {
        uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar4 != 0);
    iVar13 = (int)uVar14;
    if (iVar13 != 0) {
      bVar3 = (byte)uVar14;
      if (iVar13 < 1) {
        unaff_RBP = (ulonglong)((uint)unaff_RBP >> (bVar3 & 0x1f));
      }
      else {
        unaff_RBP = (ulonglong)((uint)unaff_RBP << (bVar3 & 0x1f));
      }
    }
    return unaff_RBP & 0xffffffff;
  }
  FUN_18096e426();
  uVar14 = thunk_FUN_1805a9280();
  return uVar14;
}



############ FUN_ 180a3c8a0 size=2097 ############

void FUN_180a3c8a0(undefined8 *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined1 *puVar6;
  undefined1 *puVar7;
  undefined8 uVar8;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  puVar6 = auStack_58;
  *param_1 = license_services::LsCachedObjectVectorBase::vftable;
  uVar8 = 0;
  puVar7 = &DAT_c6a4a793;
  uVar1 = (DAT_1814b6160 + -0x5c349d44) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6164) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6168) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b616c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6170) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6174) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6178) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b617c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6180) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6184) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6188) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b618c) * -0x395b586d;
  do {
    FUN_180a3b44c(0xcd38);
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (DAT_1814b6190 + (uVar1 ^ uVar1 >> 0x10)) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6194) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6198) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b619c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61a0) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61a4) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61a8) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61ac) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61b0) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61b4) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61b8) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61bc) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61c0) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61c4) * -0x395b586d;
  do {
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar2 != 0);
  uVar1 = (DAT_1814b61c8 + (uVar1 ^ uVar1 >> 0x10)) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61cc) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61d0) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61d4) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61d8) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61dc) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61e0) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61e4) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61e8) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61ec) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61f0) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61f4) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61f8) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b61fc) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6200) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6204) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6208) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b620c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6210) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6214) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6218) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b621c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6220) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6224) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6228) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b622c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6230) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6234) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6238) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b623c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6240) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6244) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6248) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b624c) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6250) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6254) * -0x395b586d;
  uVar1 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b6258) * -0x395b586d;
  uVar2 = ((uVar1 >> 0x10 ^ uVar1) + DAT_1814b625c) * -0x395b586d;
  uVar1 = uVar2 >> 0x10 ^ uVar2;
  uVar2 = (uVar1 >> 2 | uVar1 << 0x1e) & 0x99999999 | (uVar1 << 2 | uVar2 >> 0x1e) & 0x66666666;
  uVar3 = uVar2 + 0x32fe2b2c;
  uVar1 = (uVar3 >> 5 ^ uVar3) >> 2 & 0x1f;
  uVar1 = ((uVar1 << 5 | uVar1) << 2 ^ uVar3) + 0x8297d41c;
  uVar3 = (uVar1 * 4 | uVar1 >> 0x1e) & 0x66666666;
  uVar5 = (ulonglong)uVar3;
  if ((((uVar1 >> 2 | uVar2 * 0x40000000) & 0x99999999 | uVar3) ^ 0x3a792d84) * 0xd != 0) {
    FUN_180a3dd27();
    thunk_FUN_1805a9280();
    return;
  }
  do {
    *(undefined8 *)(puVar6 + -8) = 0x180a3d038;
    lVar4 = 0xba0;
    FUN_180a3c759();
    *(ulonglong *)(puVar6 + -8) = uVar5;
    *(undefined1 **)(puVar6 + -0x10) = puVar7;
    *(undefined8 *)(puVar6 + -0x18) = uVar8;
    lVar4 = -lVar4;
    uVar8 = *(undefined8 *)(puVar6 + lVar4 + 0xb88);
    puVar7 = *(undefined1 **)(puVar6 + lVar4 + 0xb90);
    uVar5 = *(ulonglong *)(puVar6 + lVar4 + 0xb98);
    puVar6 = puVar6 + lVar4 + 0xba0;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  return;
}



############ FUN_ 180b6ce70 size=2080 ############

/* WARNING: Instruction at (ram,0x000180b6d59b) overlaps instruction at (ram,0x000180b6d599)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000180b6d599) */
/* WARNING: Removing unreachable block (ram,0x000180b6cf3e) */
/* WARNING: Removing unreachable block (ram,0x000180b6cf07) */
/* WARNING: Removing unreachable block (ram,0x000180b6cfab) */
/* WARNING: Removing unreachable block (ram,0x000180b6d1c2) */
/* WARNING: Removing unreachable block (ram,0x000180b6d726) */
/* WARNING: Removing unreachable block (ram,0x000180b6d759) */
/* WARNING: Removing unreachable block (ram,0x000180b6d7a6) */
/* WARNING: Removing unreachable block (ram,0x000180b6d7ad) */
/* WARNING: Removing unreachable block (ram,0x000180b6d7b5) */
/* WARNING: Removing unreachable block (ram,0x000180b6cef0) */

void FUN_180b6ce70(undefined8 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  longlong lVar6;
  ulonglong uVar7;
  ulonglong *puVar8;
  longlong *plVar9;
  ulonglong uVar10;
  ulonglong *puVar11;
  ulonglong *puVar12;
  ulonglong *puVar13;
  uint uVar14;
  uint uVar15;
  IMAGE_DOS_HEADER *pIVar16;
  longlong lVar17;
  uint *puVar18;
  uint uVar19;
  IMAGE_DOS_HEADER *pIVar20;
  uint uVar21;
  int unaff_retaddr;
  ulonglong auStack_b8 [2];
  undefined1 auStack_a8 [32];
  uint local_88 [2];
  undefined4 *local_80;
  IMAGE_DIRECTORY_ENTRY_EXPORT *local_78;
  undefined4 local_6c;
  longlong local_68;
  undefined4 local_60;
  undefined8 *local_58;
  undefined4 local_48 [4];
  ulonglong local_38;
  ulonglong uVar22;
  
  puVar11 = (ulonglong *)auStack_a8;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  *param_1 = license_services::LsObjectRelationVectorAssociativeArray::vftable;
  uVar15 = 0x7bfff202;
  local_60 = 0x210;
  local_6c = 0x270;
  pIVar16 = &IMAGE_DOS_HEADER_180000000;
  local_68 = 0;
  puVar2 = (undefined4 *)((longlong)&UNWIND_INFO_1825fce54 + 4);
  local_78 = &IMAGE_DIRECTORY_ENTRY_EXPORT_1825feee0;
  local_80 = puVar2;
  local_58 = param_1;
  do {
    FUN_180b6ef17(0xe01c);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  do {
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_68 = 0x6c65bd54c0cd462d;
  local_80 = (undefined4 *)CONCAT44(local_80._4_4_,0xc0cd462d);
  do {
    FUN_180b6e84e(0xe01c);
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar7 = 0;
  local_88[0] = 0;
LAB_180b6d230:
  iVar4 = (int)uVar7;
  if ((pIVar16 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar6._0_1_ = pIVar16->e_magic[0], lVar6._1_1_ = pIVar16->e_magic[1],
     lVar6._2_2_ = pIVar16->e_cblp, lVar6._4_2_ = pIVar16->e_cp, lVar6._6_2_ = pIVar16->e_crlc,
     -1 < lVar6)) {
    *(undefined8 *)((longlong)puVar11 + 0x40) = 0x2621fc0;
    lVar17 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)puVar11 + 0x40);
    do {
      if (puVar2 < (undefined4 *)(-*(longlong *)((longlong)puVar11 + 0x40) + 0x182621fc8 + lVar6)) {
        if (-1 < lVar6) {
          plVar9 = (longlong *)(lVar17 + lVar6);
          if (plVar9 < puVar2 + 1) {
            *(undefined4 *)((longlong)puVar11 + 0x60) = *puVar2;
            pIVar20 = pIVar16;
            goto LAB_180b6d2b0;
          }
        }
        break;
      }
      lVar6._0_2_ = pIVar16->e_cparhdr;
      lVar6._2_2_ = pIVar16->e_minalloc;
      lVar6._4_2_ = pIVar16->e_maxalloc;
      lVar6._6_2_ = pIVar16->e_ss;
      pIVar16 = (IMAGE_DOS_HEADER *)&pIVar16->e_cparhdr;
    } while (-1 < lVar6);
    goto LAB_180b6d2cf;
  }
  goto LAB_180b6d2d4;
  while (plVar9 = (longlong *)(lVar17 + lVar6), plVar9 < puVar2 + 1) {
LAB_180b6d2b0:
    pIVar20 = (IMAGE_DOS_HEADER *)&pIVar20->e_cparhdr;
    *(longlong *)((longlong)puVar11 + lVar6 + (lVar17 - (longlong)puVar2) + 0x60) = *plVar9 - lVar17
    ;
    lVar6 = *(longlong *)pIVar20;
    if (lVar6 < 0) break;
  }
LAB_180b6d2cf:
  iVar4 = *(int *)((longlong)puVar11 + 0x20);
LAB_180b6d2d4:
  *(int *)((longlong)puVar11 + 0x20) = iVar4 * 0x6b;
  uVar15 = uVar15 * iVar4 * iVar4 * 0x6b;
  uVar15 = uVar15 ^ uVar15 * 0x10000;
  puVar12 = puVar11;
  if ((uVar15 & 0x7c0) != 0) {
    uVar15 = uVar15 * 0x11;
  }
  do {
    puVar18 = (uint *)((longlong)puVar12 + 0x20);
    uVar7 = 0xe01c;
    *(IMAGE_DOS_HEADER **)((longlong)puVar12 + -8) = pIVar16;
    puVar8 = (ulonglong *)((longlong)puVar12 + -8);
    if ((*puVar18 & 0xc3) != 0) {
      puVar8 = (ulonglong *)((longlong)puVar12 + -8);
    }
    do {
      do {
        puVar13 = puVar8;
        puVar13[-1] = 0x180b6d323;
        uVar3 = FUN_180b6d720();
        *puVar18 = uVar3;
        pIVar16 = (IMAGE_DOS_HEADER *)*puVar13;
        puVar12 = puVar13 + 1;
        puVar11 = puVar13 + 1;
        puVar8 = puVar13 + 1;
      } while ((uVar7 & 0xc300) == 0);
      puVar8 = puVar13 + 1;
    } while (((uVar7 & 0xc300) == 0) || (puVar8 = puVar13 + 1, (uVar7 & 0xc3) != 0));
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  uVar3 = (uint)puVar13[5];
  uVar7 = (ulonglong)uVar3;
  uVar14 = uVar3 & 0x7f;
  uVar21 = uVar3 & 0x3f;
  iVar4 = (uVar14 + 2) * (uVar14 + 1) * uVar14;
  uVar19 = 1 << ((char)iVar4 + (char)((ulonglong)((longlong)iVar4 * 0x55555556) >> 0x20) * -3 &
                0x1fU);
  uVar5 = (uint)puVar2 & 0x1f | 0x32;
  uVar5 = uVar5 * uVar5 * 0x455 ^ (uVar21 | 0x12) * (uVar21 | 0x12) * 0x751f;
  if ((int)(-uVar19 | uVar19) >> 0x1f != (int)(-uVar5 | uVar5) >> 0x1f) {
    uVar21 = (uVar21 | 0x12) * (uVar21 | 0x12);
    uVar14 = (uVar14 + 2) * (uVar14 + 1) * uVar14;
    do {
      puVar2 = puVar2 + 1;
      uVar15 = uVar15 * uVar3;
      uVar5 = (uint)puVar2 & 0x1f | 0x32;
      uVar19 = 1 << ((char)uVar14 + (char)(uVar14 / 3) * -3 & 0x1fU);
      uVar5 = uVar5 * uVar5 * 0x455 ^ uVar21 * 0x751f;
    } while ((int)(-uVar19 | uVar19) >> 0x1f != (int)(-uVar5 | uVar5) >> 0x1f);
  }
  uVar22 = (ulonglong)uVar21;
  if ((uVar15 & 0x3ff) != 0) {
    uVar15 = uVar15 + (uVar15 >> 10);
  }
  puVar2 = puVar2 + 1;
  if ((IMAGE_DIRECTORY_ENTRY_EXPORT *)puVar2 == &IMAGE_DIRECTORY_ENTRY_EXPORT_1825feee0) {
    *(uint *)((longlong)puVar13 + 0x44) = uVar15;
    puVar12 = puVar13 + 0x16;
    *(uint *)(puVar13 + 8) = uVar3;
    do {
      puVar8 = puVar13 + 8;
                    /* WARNING: Call to offcut address within same function */
      *puVar13 = 0x180b6d4ce;
      func_0x000180b6d1ce();
      *puVar13 = 0x180b6d4d5;
      uVar1 = FUN_180b93ff6();
      *(undefined4 *)puVar8 = uVar1;
      uVar15 = ((int)*puVar12 + 1) * (int)*puVar12 & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    uVar3 = (uint)puVar13[8] ^ 0xeeb9341c;
    uVar15 = (uVar3 >> 8 ^ uVar3) >> 0x14 & 3;
    uVar3 = ((uVar15 << 8 | uVar15) << 0x14 ^ uVar3) + 0xdcccfffd;
    uVar15 = (uVar3 >> 0x10 | uVar3 * 0x10000) & 0x23b1dc4e;
    uVar10 = (ulonglong)uVar15;
    uVar15 = (uVar3 * 0x10000 | uVar3 >> 0x10) & 0xdc4e23b1 | uVar15;
    uVar15 = (uVar15 & 0x33333333) << 2 | uVar15 >> 2 & 0x33333333;
    *(uint *)(puVar13 + 5) =
         (uVar15 >> 0x10 | uVar15 << 0x10) & 0x83d57c2a |
         (uVar15 << 0x10 | uVar15 >> 0x10) & 0x7c2a83d5;
    do {
      uVar15 = ((int)*puVar12 + 1) * (int)*puVar12 & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    if ((char)(((int)puVar13[5] == (int)puVar13[6]) * ')') == '\0') {
      *puVar13 = (ulonglong)((int)puVar13[5] == (int)puVar13[6]);
      puVar13[-1] = (ulonglong)puVar12;
      puVar13[-2] = uVar10;
      thunk_FUN_1805a9280();
      return;
    }
    *puVar13 = 0x180b6d6c8;
    FUN_180b6e22e();
    *puVar13 = uVar10;
    puVar13[-1] = uVar22;
    puVar13[-2] = uVar7;
    thunk_FUN_180b6d737();
    return;
  }
  goto LAB_180b6d230;
}



############ FUN_ 18134ce40 size=2353 ############

/* WARNING: Instruction at (ram,0x00018134d5d5) overlaps instruction at (ram,0x00018134d5d3)
    */
/* WARNING: Removing unreachable block (ram,0x00018134d5cf) */
/* WARNING: Removing unreachable block (ram,0x00018134d7be) */

undefined8 FUN_18134ce40(void)

{
  undefined1 *puVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  undefined8 uVar5;
  undefined1 *puVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  uint uVar9;
  longlong lVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong unaff_R13;
  int unaff_retaddr;
  undefined1 auStack_58 [32];
  
  puVar6 = auStack_58;
  uVar2 = (uint)&stack0x00000000;
  uVar11 = (ulonglong)(((uVar2 & 0x2cff) * (uVar2 & 0x2cff) + 1) % 7);
  uVar9 = ((uVar2 & 0x1eff) * (uVar2 & 0x1eff) + 1) % 7;
  uVar12 = (ulonglong)uVar9;
  uVar9 = (((uVar2 & 0x11ff) + 1) * (uVar2 & 0x11ff) + 7) % 0x51 | uVar9;
  uVar5 = 0x180000000;
  puVar8 = &DAT_c6a4a793;
  uVar2 = (DAT_1815fbb4c + 0x7cd64ed3) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb50) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb54) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb58) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb5c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb60) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb64) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb68) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb6c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb70) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb74) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb78) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb7c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb80) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb84) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb88) * -0x395b586d;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = (DAT_1815fbb8c + (uVar2 ^ uVar2 >> 0x10)) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb90) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb94) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb98) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbb9c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbba0) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbba4) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbba8) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbac) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbb0) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbb4) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbb8) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbbc) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbc0) * -0x395b586d;
  do {
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = (DAT_1815fbbc4 + (uVar2 ^ uVar2 >> 0x10)) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbc8) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbcc) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbd0) * -0x395b586d;
  do {
    FUN_18134e24b(0x501c);
    lVar10 = uVar12 + (longlong)register0x00000020;
    uVar12 = ~((longlong)register0x00000020 - lVar10) + 1;
    register0x00000020 = (BADSPACEBASE *)(lVar10 - uVar12);
    unaff_R13 = ~(~unaff_R13 + 1) + 1;
    uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = (DAT_1815fbbd4 + (uVar2 ^ uVar2 >> 0x10)) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbd8) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbdc) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbe0) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbe4) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbe8) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbec) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbf0) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbf4) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbf8) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbbfc) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc00) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc04) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc08) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc0c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc10) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc14) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc18) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc1c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc20) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc24) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc28) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc2c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc30) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc34) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc38) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc3c) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc40) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc44) * -0x395b586d;
  uVar2 = ((uVar2 >> 0x10 ^ uVar2) + DAT_1815fbc48) * -0x395b586d;
  do {
    uVar4 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar2 = ~(uVar2 ^ uVar2 >> 0x10) ^ 0xdc6858e;
  uVar2 = (uVar2 >> 9 | uVar2 << 0x17) ^ 0x3951ae4e;
  uVar2 = (uVar2 >> 5 | uVar2 << 0x1b) + 0x7b5015d3;
  if ((uVar2 & 0x3fffff) != 0 || uVar2 != 0) {
    uVar5 = thunk_FUN_1805a9280();
    return uVar5;
  }
  puVar1 = puVar6;
  do {
    puVar7 = puVar1;
    *(ulonglong *)(puVar7 + -8) = unaff_R13;
    *(ulonglong *)(puVar7 + -0x10) = uVar11;
    *(undefined1 **)(puVar7 + -0x18) = puVar8;
    lVar10 = -(longlong)(int)(((int)(-uVar9 | uVar9) >> 0x1f) * -0x3e61 ^ 0x37e1);
    puVar8 = *(undefined1 **)(puVar7 + lVar10 + 0x968);
    uVar11 = *(ulonglong *)(puVar7 + lVar10 + 0x970);
    unaff_R13 = *(ulonglong *)(puVar7 + lVar10 + 0x978);
    uVar2 = (*(int *)register0x00000020 + 1) * *(int *)register0x00000020 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    puVar1 = puVar7 + lVar10 + 0x980;
  } while (uVar2 != 0);
  if (DAT_182673710 == 1) {
    *(undefined8 *)(puVar7 + lVar10 + 0x978) = 0x18134d84a;
    piVar3 = (int *)FUN_180473b00(0,uVar5);
    if (*piVar3 == 5) {
      return 1;
    }
  }
  return 0;
}



############ FUN_ 18069c113 size=3117 ############

/* WARNING: Instruction at (ram,0x00018069c2c3) overlaps instruction at (ram,0x00018069c2c1)
    */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18069c113(undefined8 param_1,undefined8 param_2,ulonglong param_3)

{
  int iVar1;
  void *pvVar2;
  int *piVar3;
  undefined1 auVar4 [16];
  undefined1 *puVar5;
  undefined8 uVar6;
  HANDLE pvVar7;
  uint uVar8;
  uint uVar9;
  ulonglong uVar10;
  undefined8 *puVar11;
  longlong lVar12;
  uint *puVar13;
  void *pvVar14;
  longlong *plVar15;
  longlong unaff_RBX;
  undefined1 *puVar16;
  undefined8 *unaff_RBP;
  longlong unaff_RSI;
  int unaff_EDI;
  undefined8 in_R11;
  int *unaff_R12;
  ulonglong unaff_R13;
  undefined8 *puVar17;
  int unaff_R14D;
  undefined8 *puVar18;
  undefined8 *puVar19;
  undefined8 unaff_R15;
  undefined4 extraout_XMM0_Da;
  undefined4 extraout_XMM0_Db;
  undefined4 extraout_XMM0_Dc;
  undefined4 extraout_XMM0_Dd;
  undefined1 unaff_XMM8 [16];
  undefined1 local_res20;
  longlong *in_stack_00000048;
  int in_stack_00000050;
  undefined8 *in_stack_00000060;
  undefined8 in_stack_00000068;
  longlong in_stack_00000070;
  undefined8 *in_stack_00000078;
  
  puVar17 = (undefined8 *)(unaff_R13 ^ param_3);
  uVar8 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
  if ((int)uVar8 < 0) {
    uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
  }
  if (uVar8 != 0) {
    FUN_18069c113(0xf53c,param_2,param_3);
    return;
  }
  uVar8 = (*(int *)(unaff_RSI + 0x30 + unaff_RBX) + unaff_R14D) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x34 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x38 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x3c + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x40 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x44 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x48 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x4c + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x50 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x54 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x58 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x5c + unaff_RBX)) * unaff_EDI;
  do {
    uVar9 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (*(int *)(unaff_RSI + 0x60 + unaff_RBX) + (uVar8 ^ uVar8 >> 0x10)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 100 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x68 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x6c + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x70 + unaff_RBX)) * unaff_EDI;
  do {
    uVar10 = 0;
                    /* WARNING: Call to offcut address within same function */
    func_0x00018069c3dc();
    if ((uVar10 & 0xc0) != 0) {
      auVar4._4_4_ = extraout_XMM0_Db;
      auVar4._0_4_ = extraout_XMM0_Da;
      auVar4._8_4_ = extraout_XMM0_Dc;
      auVar4._12_4_ = extraout_XMM0_Dd;
      vmaskmovdqu_avx(unaff_XMM8,auVar4);
    }
    uVar9 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (*(int *)(unaff_RSI + 0x74 + unaff_RBX) + (uVar8 ^ uVar8 >> 0x10)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x78 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x7c + unaff_RBX)) * unaff_EDI;
  puVar18 = (undefined8 *)(ulonglong)(uVar8 ^ uVar8 >> 0x10);
  do {
    puVar11 = (undefined8 *)0xf53c;
    FUN_18069dcfe();
    puVar19 = puVar11;
    if (((ulonglong)puVar11 & 0x40) == 0) {
      puVar11 = puVar17;
      puVar19 = puVar18;
    }
    uVar8 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
    puVar17 = puVar11;
    puVar18 = puVar19;
  } while (uVar8 != 0);
  uVar8 = (*(int *)(unaff_RSI + 0x80 + unaff_RBX) + (int)puVar19) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x84 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x88 + unaff_RBX)) * unaff_EDI;
  do {
    FUN_18069c112(0xf53c);
    uVar9 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (*(int *)(unaff_RSI + 0x8c + unaff_RBX) + (uVar8 ^ uVar8 >> 0x10)) * unaff_EDI;
  do {
    uVar9 = (*(int *)(unaff_RBP + 0x55) + 1) * *(int *)(unaff_RBP + 0x55) & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (*(int *)(unaff_RSI + 0x90 + unaff_RBX) + (uVar8 ^ uVar8 >> 0x10)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x94 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x98 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0x9c + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xa0 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xa4 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xa8 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xac + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xb0 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xb4 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xb8 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xbc + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xc0 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xc4 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 200 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xcc + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xd0 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xd4 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xd8 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xdc + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xe0 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xe4 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xe8 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xec + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xf0 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xf4 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xf8 + unaff_RBX)) * unaff_EDI;
  uVar8 = ((uVar8 >> 0x10 ^ uVar8) + *(int *)(unaff_RSI + 0xfc + unaff_RBX)) * unaff_EDI;
  do {
    FUN_18069ddcb(0xf53c);
    iVar1 = *(int *)(unaff_RBP + 0x55);
    uVar9 = (iVar1 + 1) * iVar1 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  do {
    FUN_18069d385(0xf53c);
    iVar1 = *(int *)(unaff_RBP + 0x55);
    uVar9 = (iVar1 + 1) * iVar1 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar8 = (uVar8 ^ uVar8 >> 0x10) + 0xf3e389d3;
  uVar10 = CONCAT71((int7)((ulonglong)unaff_R15 >> 8),(uVar8 * 4 | uVar8 >> 0x1e) == 0x822a8d6d);
  if ((int)uVar10 != 0 || (uVar10 & 0x7ffff) != 0) {
    lVar12 = in_stack_00000048[1] - *in_stack_00000048;
    lVar12 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lVar12),8) + lVar12;
    if (lVar12 >> 7 != lVar12 >> 0x3f) {
      FUN_180677320(unaff_RBP + 0x30);
      unaff_RBP[-10] = pace::eden::thrift::authorize::FindAuthChainsReturn::vftable;
      unaff_RBP[-9] = unaff_R15;
      unaff_RBP[-8] = 0;
      unaff_RBP[-7] = 0;
      unaff_RBP[-6] = 0;
      unaff_RBP[-5] = 0;
      unaff_RBP[-4] = unaff_R15;
      *(undefined1 *)(unaff_RBP + -3) = 0;
      *(undefined8 *)((longlong)unaff_RBP + -0x14) = 4;
      if (unaff_RBP + 0x31 != in_stack_00000048) {
        FUN_18066bb80(unaff_RBP + 0x31,*in_stack_00000048,in_stack_00000048[1],local_res20);
      }
      FUN_18067dd60(unaff_RBP + 0x34,in_stack_00000068);
      uVar6 = FUN_1806d2560();
      unaff_RBP[0x42] = uVar6;
      FUN_1805b45f0(unaff_RBP + 0xc,in_stack_00000070 + 0x18);
      if (*(longlong *)(in_stack_00000070 + 0x48) == 0) {
        plVar15 = (longlong *)
                  ((longlong)*(int *)(**(longlong **)(in_stack_00000070 + 8) + 8) +
                  (longlong)*(longlong **)(in_stack_00000070 + 8));
        puVar11 = unaff_RBP + 0x30;
        (**(code **)(*plVar15 + 0x68))(plVar15,unaff_RBP + -10,puVar11,4);
      }
      else {
        unaff_RBP[0x11] = 0;
        unaff_RBP[0x12] = 0;
        unaff_RBP[0x13] = unaff_R15;
        unaff_RBP[-0xd] = 0;
        unaff_RBP[-0xc] = 0;
        unaff_RBP[-0xb] = unaff_R15;
        FUN_180673570(unaff_RBP + 0x30,unaff_RBP + 0x11,1);
        FUN_1806b86d0(in_stack_00000070,0xe,unaff_RBP + 0x11,unaff_RBP + -0xd);
        puVar11 = unaff_RBP + -10;
        FUN_1806713a0(unaff_RBP[-0xd],unaff_RBP[-0xc] - unaff_RBP[-0xd]);
        pvVar2 = (void *)unaff_RBP[-0xd];
        if (pvVar2 != (void *)0x0) {
          pvVar14 = pvVar2;
          if ((0xfff < (ulonglong)(unaff_RBP[-0xb] - (longlong)pvVar2)) &&
             (pvVar14 = *(void **)((longlong)pvVar2 + -8),
             0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar14)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar14);
        }
        pvVar2 = (void *)unaff_RBP[0x11];
        if (pvVar2 != (void *)0x0) {
          pvVar14 = pvVar2;
          if ((0xfff < (ulonglong)(unaff_RBP[0x13] - (longlong)pvVar2)) &&
             (pvVar14 = *(void **)((longlong)pvVar2 + -8),
             0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar14)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar14);
        }
      }
      if (in_stack_00000078 != unaff_RBP + -9) {
        puVar11 = (undefined8 *)unaff_RBP[-8];
        FUN_18060abf0(in_stack_00000078,unaff_RBP[-9],puVar11,local_res20);
      }
      if ((in_stack_00000060 != (undefined8 *)0x0) && (in_stack_00000060 != unaff_RBP + -6)) {
        puVar11 = (undefined8 *)unaff_RBP[-5];
        FUN_18066bdc0(in_stack_00000060,unaff_RBP[-6],puVar11,local_res20);
      }
      if (*(char *)(unaff_RBP + 0xd) != '\0') {
        piVar3 = (int *)unaff_RBP[0xc];
        *piVar3 = *piVar3 + -1;
        if (*piVar3 == 0) {
          LOCK();
          piVar3[1] = (int)unaff_R15;
          UNLOCK();
          puVar13 = (uint *)(unaff_RBP[0xc] + 8);
          LOCK();
          uVar8 = *puVar13;
          *puVar13 = *puVar13 + 0x80000000;
          UNLOCK();
          if (((uVar8 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar8)) {
            LOCK();
            uVar8 = *puVar13;
            *puVar13 = *puVar13 | 0x40000000;
            UNLOCK();
            if ((uVar8 >> 0x1e & 1) == 0) {
              pvVar7 = (HANDLE)FUN_1805a9100();
              SetEvent(pvVar7);
            }
          }
        }
      }
      unaff_RBP[-10] = pace::eden::thrift::authorize::FindAuthChainsReturn::vftable;
      FUN_180575f30(unaff_RBP + -6);
      FUN_1805bc0b0(unaff_RBP + -9);
      FUN_18067b450(unaff_RBP + 0x30);
    }
    puVar5 = (undefined1 *)register0x00000020;
    do {
      puVar16 = puVar5;
      *(undefined8 *)(puVar16 + -8) = 0x18069cd38;
      lVar12 = (longlong)in_stack_00000050;
      FUN_18069ada1();
      *(undefined8 **)(puVar16 + -8) = puVar11;
      *(longlong *)(puVar16 + -0x10) = unaff_RSI;
      *(undefined8 *)(puVar16 + -0x18) = in_R11;
      lVar12 = -lVar12;
      in_R11 = *(undefined8 *)(puVar16 + lVar12 + 0xb38);
      unaff_RSI = *(longlong *)(puVar16 + lVar12 + 0xb40);
      puVar11 = *(undefined8 **)(puVar16 + lVar12 + 0xb48);
      uVar8 = (*(int *)(unaff_RBP + 0x55) + 1) * *(int *)(unaff_RBP + 0x55) & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      puVar5 = puVar16 + lVar12 + 0xb50;
    } while (uVar8 != 0);
    *(undefined **)(puVar16 + lVar12 + 0xb48) = &UNK_18069cdde;
  }
  lVar12 = in_stack_00000048[1] - *in_stack_00000048;
  lVar12 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(lVar12),8) + lVar12;
  if (lVar12 >> 7 == lVar12 >> 0x3f) {
    FUN_180677320(unaff_RBP + 0x16);
    *unaff_RBP = pace::eden::thrift::authorize::FindAuthChainsReturn::vftable;
    unaff_RBP[1] = unaff_R15;
    unaff_RBP[2] = 0;
    unaff_RBP[3] = 0;
    unaff_RBP[4] = 0;
    unaff_RBP[5] = 0;
    unaff_RBP[6] = unaff_R15;
    *(undefined1 *)(unaff_RBP + 7) = 0;
    *(undefined8 *)((longlong)unaff_RBP + 0x3c) = 4;
    if (unaff_RBP + 0x17 != in_stack_00000048) {
      FUN_18066bb80(unaff_RBP + 0x17,*in_stack_00000048,in_stack_00000048[1],local_res20);
    }
    FUN_18067dd60(unaff_RBP + 0x1a,in_stack_00000068);
    uVar6 = FUN_1806d2560();
    unaff_RBP[0x28] = uVar6;
    FUN_1805b45f0(unaff_RBP + 10,in_stack_00000070 + 0x18);
    if (*(longlong *)(in_stack_00000070 + 0x48) == 0) {
      unaff_RBP[0xe] = 0;
      unaff_RBP[0xf] = 0;
      unaff_RBP[0x10] = unaff_R15;
      unaff_RBP[-0x10] = 0;
      unaff_RBP[-0xf] = 0;
      unaff_RBP[-0xe] = unaff_R15;
      FUN_180673570(unaff_RBP + 0x16,unaff_RBP + 0xe,1);
      FUN_1806b86d0(in_stack_00000070,0xe,unaff_RBP + 0xe,unaff_RBP + -0x10);
      FUN_1806713a0(unaff_RBP[-0x10],unaff_RBP[-0xf] - unaff_RBP[-0x10]);
      pvVar2 = (void *)unaff_RBP[-0x10];
      if (pvVar2 != (void *)0x0) {
        pvVar14 = pvVar2;
        if ((0xfff < (ulonglong)(unaff_RBP[-0xe] - (longlong)pvVar2)) &&
           (pvVar14 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar14)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar14);
      }
      pvVar2 = (void *)unaff_RBP[0xe];
      if (pvVar2 != (void *)0x0) {
        pvVar14 = pvVar2;
        if ((0xfff < (ulonglong)(unaff_RBP[0x10] - (longlong)pvVar2)) &&
           (pvVar14 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar14)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar14);
      }
    }
    else {
      (**(code **)(*(longlong *)
                    ((longlong)*(int *)(**(longlong **)(in_stack_00000070 + 8) + 8) +
                    (longlong)*(longlong **)(in_stack_00000070 + 8)) + 0x68))();
    }
    if (in_stack_00000078 != unaff_RBP + 1) {
      FUN_18060abf0(in_stack_00000078,unaff_RBP[1],unaff_RBP[2],local_res20);
    }
    if (in_stack_00000060 == (undefined8 *)0x0) {
      FUN_18066bdc0(0,unaff_RBP[4],unaff_RBP[5],local_res20);
    }
    if (*(char *)(unaff_RBP + 0xb) != '\0') {
      piVar3 = (int *)unaff_RBP[10];
      *piVar3 = *piVar3 + -1;
      if (*piVar3 == 0) {
        LOCK();
        piVar3[1] = (int)unaff_R15;
        UNLOCK();
        puVar13 = (uint *)(unaff_RBP[10] + 8);
        LOCK();
        uVar8 = *puVar13;
        *puVar13 = *puVar13 + 0x80000000;
        UNLOCK();
        if (((uVar8 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar8)) {
          LOCK();
          uVar8 = *puVar13;
          *puVar13 = *puVar13 | 0x40000000;
          UNLOCK();
          if ((uVar8 >> 0x1e & 1) == 0) {
            pvVar7 = (HANDLE)FUN_1805a9100();
            SetEvent(pvVar7);
          }
        }
      }
    }
    *unaff_RBP = pace::eden::thrift::authorize::FindAuthChainsReturn::vftable;
    FUN_180575f30(unaff_RBP + 4);
    FUN_1805bc0b0(unaff_RBP + 1);
    FUN_18067b450(unaff_RBP + 0x16);
  }
  thunk_FUN_1805a9280();
  return;
}



############ FUN_ 18096c600 size=2094 ############

/* WARNING: Instruction at (ram,0x00018096ca4a) overlaps instruction at (ram,0x00018096ca49)
    */
/* WARNING: Removing unreachable block (ram,0x00018096ca48) */
/* WARNING: Removing unreachable block (ram,0x00018096c6ac) */
/* WARNING: Removing unreachable block (ram,0x00018096c971) */
/* WARNING: Removing unreachable block (ram,0x00018096c991) */
/* WARNING: Removing unreachable block (ram,0x00018096c98e) */
/* WARNING: Removing unreachable block (ram,0x00018096cd9d) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8 FUN_18096c600(uint *param_1,uint param_2)

{
  ulonglong uVar1;
  bool bVar2;
  uint uVar3;
  undefined8 uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int unaff_retaddr;
  
  do {
    uVar5 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar5 != 0);
  uVar5 = 0x20;
  bVar2 = false;
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = 1;
  while( true ) {
    uVar5 = (int)uVar5 / 2;
    uVar3 = 1 << ((byte)uVar5 & 0x1f);
    if (uVar3 == param_2) break;
    if (uVar3 < param_2) goto LAB_18096ca19;
    uVar3 = uVar5 & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
    if ((uVar3 != 0) || ((int)uVar5 < 2)) goto LAB_18096ca19;
  }
  bVar2 = true;
LAB_18096ca19:
  uVar3 = DAT_1811e90c0 ^
          (DAT_1811e90bc ^
          (DAT_1811e90b8 ^
          (DAT_1811e90b4 ^
          (DAT_1811e90b0 ^
          (DAT_1811e90ac ^
          (DAT_1811e90a8 ^
          (DAT_1811e90a4 ^
          (DAT_1811e90a0 ^
          (DAT_1811e909c ^
          (DAT_1811e9098 ^
          (DAT_1811e9094 ^
          (DAT_1811e9090 ^
          (DAT_1811e908c ^
          (DAT_1811e9088 ^
          (DAT_1811e9084 ^
          (DAT_1811e9080 ^
          (DAT_1811e907c ^
          (DAT_1811e9078 ^
          (DAT_1811e9074 ^ (DAT_1811e9070 ^ (DAT_1811e906c ^ 0x811c9ddb) * 0x1000193) * 0x1000193) *
          0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) *
          0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) *
          0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193;
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018096c996();
    uVar7 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar7 < 0) {
      uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar7 != 0);
  uVar8 = 0;
  uVar7 = ((DAT_1811e9164 ^
           (DAT_1811e9160 ^
           (DAT_1811e915c ^
           (DAT_1811e9158 ^
           (DAT_1811e9154 ^
           (DAT_1811e9150 ^
           (DAT_1811e914c ^
           (DAT_1811e9148 ^
           (DAT_1811e9144 ^
           (DAT_1811e9140 ^
           (DAT_1811e913c ^
           (DAT_1811e9138 ^
           (DAT_1811e9134 ^
           (DAT_1811e9130 ^
           (DAT_1811e912c ^
           (DAT_1811e9128 ^
           (DAT_1811e9124 ^
           (DAT_1811e9120 ^
           (DAT_1811e911c ^
           (DAT_1811e9118 ^
           (DAT_1811e9114 ^
           (DAT_1811e9110 ^
           (DAT_1811e910c ^
           (DAT_1811e9108 ^
           (DAT_1811e9104 ^
           (DAT_1811e9100 ^
           (DAT_1811e90fc ^
           (DAT_1811e90f8 ^
           (DAT_1811e90f4 ^
           (DAT_1811e90f0 ^
           (DAT_1811e90ec ^
           (DAT_1811e90e8 ^
           (DAT_1811e90e4 ^
           (DAT_1811e90e0 ^
           (DAT_1811e90dc ^
           (DAT_1811e90d8 ^
           (DAT_1811e90d4 ^
           (DAT_1811e90d0 ^
           (DAT_1811e90cc ^
           (DAT_1811e90c8 ^ (DAT_1811e90c4 ^ uVar3 * 0x1000193) * 0x1000193) * 0x1000193) *
           0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193)
           * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193
           ) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) *
           0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193)
           * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193
           ) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193) * 0x1000193 ^ DAT_1811e9168) *
          0x1000193;
  uVar3 = (uVar7 >> 0x10 ^ uVar7) & 0x7fff;
  uVar3 = ~((uVar3 << 0x10 | uVar3) ^ uVar7) ^ 0x729fdad2;
  uVar3 = ((uVar3 >> 2 | uVar3 << 0x1e) & 0x99999999 | (uVar3 << 2 | uVar3 >> 0x1e) & 0x66666666) ^
          0xbc27c77;
  uVar3 = uVar3 << 0x1c | uVar3 >> 4;
  if (uVar3 != 0xffbc18e) {
    uVar4 = thunk_FUN_1805a9280(0xbe0,(-(ulonglong)uVar3 ^ 0xffffffffffffffff) + 1);
    return uVar4;
  }
  do {
    uVar8 = ~-uVar8 + 1;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  if (bVar2) {
    *param_1 = uVar8;
    param_1[1] = (uint)(0x20 / (longlong)(int)uVar5);
  }
  else {
    param_1[1] = 1;
    *param_1 = param_2;
    if ((param_2 != 0) && (uVar1 = 0x80000000 / (ulonglong)param_2, param_2 <= (uint)uVar1)) {
      do {
        uVar1 = uVar1 / param_2;
        uVar6 = uVar6 + 1;
        *param_1 = *param_1 * param_2;
      } while (param_2 <= (uint)uVar1);
      param_1[1] = uVar6;
    }
  }
  return 0;
}



############ FUN_ 1813e6ab8 size=1855 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813e6ab8(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined1 *puVar5;
  undefined1 uVar6;
  undefined4 uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  undefined8 uVar10;
  undefined8 uVar11;
  undefined8 *puVar12;
  uint uVar13;
  uint uVar14;
  undefined4 *puVar15;
  uint uVar16;
  longlong lVar17;
  uint uVar18;
  uint uVar19;
  undefined1 *puVar20;
  longlong unaff_RBP;
  uint unaff_ESI;
  uint uVar21;
  ulonglong uVar22;
  int iVar23;
  uint uVar24;
  uint uVar25;
  int *unaff_R13;
  ulonglong uVar26;
  undefined8 *unaff_R15;
  undefined8 extraout_XMM0_Qa;
  
  while( true ) {
    uVar13 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
    if (uVar13 == 0) break;
    FUN_1813e6353(0x4528);
  }
  uVar13 = *(uint *)(unaff_RBP + -0x7c);
  uVar24 = (uint)*(ulonglong *)(unaff_RBP + -0x68);
  uVar25 = (uint)((ulonglong)*(undefined8 *)(unaff_RBP + -0x68) >> 0x20);
  uVar18 = *(uint *)(unaff_RBP + -0x5c) ^ uVar25;
  uVar14 = (uVar13 >> 0x11 ^ uVar13) & 0x3fff;
  uVar16 = ((uint)(*(ulonglong *)(unaff_RBP + -0x68) >> 0xc) & 0xfffff ^ uVar24) >> 9 & 0x7f;
  uVar19 = uVar18 & 0x99999999 ^ uVar25;
  uVar25 = uVar18 & 0x66666666 ^ uVar25;
  uVar18 = (uVar19 >> 2 ^ uVar19) >> 4 & 1;
  uVar21 = (uVar25 >> 0xb ^ uVar25) & 3;
  uVar13 = ~((uVar14 << 0x11 | uVar14) ^ uVar13);
  uVar19 = ~((uVar18 * 4 | uVar18) << 4 ^ uVar19);
  uVar18 = ~((uVar16 << 0xc | uVar16) << 9 ^ uVar24) ^ uVar13;
  uVar16 = ~((uVar21 << 0xb | uVar21) ^ uVar25);
  uVar14 = uVar18 & 0x1f8b2e7f ^ uVar13;
  uVar13 = uVar18 & 0xe074d180 ^ uVar13;
  uVar18 = (uVar19 >> 0x11 ^ uVar19) & 0xff;
  uVar21 = (uVar13 >> 6 ^ uVar13) >> 0x11 & 0xf;
  uVar22 = (ulonglong)uVar21;
  uVar25 = (uVar14 >> 6 ^ uVar14) & 0xf;
  uVar14 = (uVar25 << 6 | uVar25) ^ uVar14;
  uVar25 = (uVar16 >> 0x11 ^ uVar16) & 0x1ff;
  uVar25 = uVar16 ^ (uVar25 << 0x11 | uVar25) ^ uVar14;
  uVar16 = uVar25 & 0x5b705ebb ^ uVar14;
  uVar18 = uVar16 ^ uVar19 ^ (uVar18 << 0x11 | uVar18);
  uVar25 = ~(uVar25 & 0xa48fa144 ^ uVar14);
  uVar19 = ~(uVar18 & 0xaaaaaaaa ^ uVar16);
  uVar26 = (ulonglong)uVar19;
  uVar18 = ~(uVar18 & 0x55555555 ^ uVar16) ^ uVar25;
  uVar14 = uVar18 & 0x7f807f80 ^ uVar25;
  do {
    uVar11 = rdtsc();
    uVar16 = (uint)uVar11 ^ (uint)((ulonglong)uVar11 >> 0x20);
    *(uint *)(unaff_RBP + -0xc) = uVar16;
    uVar14 = ~((uVar14 ^ 0xffffffff) + 1) + 1;
    uVar8 = (ulonglong)uVar16 ^ (ulonglong)(uVar16 >> 0xe) + 0x4a234987;
    uVar8 = uVar8 + ((uVar8 >> 9) - 0x36a02d42);
    lVar17 = (uVar8 * 0x100 | uVar8 >> 0x38) * 0x10001 + -0xdd527ea;
    unaff_R15 = (undefined8 *)((-(longlong)unaff_R15 ^ 0xffffffffffffffffU) + 1);
    uVar8 = lVar17 * -0x3f ^ ((ulonglong)(lVar17 * -0x13b) >> 5) - 0x7832799;
    uVar9 = uVar8 >> 0xd | uVar8 << 0x33;
    uVar8 = uVar9 * 3;
    uVar8 = (uVar8 >> 6 | uVar8 << 0x3a) + 0x1a1343dc;
    lVar17 = uVar9 - uVar8;
    *(uint *)(unaff_RBP + -0x24) =
         ((int)lVar17 * 0x10000 | (uint)(ushort)((ulonglong)lVar17 >> 0x30)) >> 1;
    uVar16 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  uVar16 = *(uint *)(unaff_RBP + -0x24) ^ *(uint *)(unaff_RBP + -0x54);
  *(uint *)(unaff_RBP + -0x24) = uVar16;
  if (uVar16 < 0x17edd) {
    *(uint *)(unaff_RBP + 0x68) = uVar19;
    *(uint *)(unaff_RBP + 0x6c) = ~((uVar21 << 6 | uVar21) << 0x11 ^ uVar13);
    *(uint *)(unaff_RBP + 0x70) = uVar14;
    *(uint *)(unaff_RBP + 0x74) = uVar18 & 0x807f807f ^ uVar25;
    do {
      *(undefined4 *)(unaff_RBP + -0x20) = 0x88449a02;
      *(undefined8 *)(unaff_RBP + 0x28) = 0x1813e6df2;
      func_0x0001813e76a6();
      uVar13 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar13 != 0);
    uVar13 = ~(*(uint *)(unaff_RBP + -0x20) ^ 0x991f57ad);
    uVar13 = ~((uVar13 >> 0x15 | uVar13 << 0xb) ^ 0x12267c2f) ^ 0x33cd071b;
    *(uint *)(unaff_RBP + -0x20) = uVar13;
    (*(code *)((longlong)(int)uVar13 + *(longlong *)(unaff_RBP + 0x28)))
              (unaff_RBP + 0x68,unaff_RBP + 0x80);
    uVar13 = *(uint *)(unaff_RBP + 0x80);
    iVar23 = 7;
    uVar25 = *(uint *)(unaff_RBP + 0x84);
    do {
      uVar18 = (uVar13 >> 0xc ^ uVar13) >> 2 & 0xfff;
      uVar14 = (uVar25 >> 5 ^ uVar25) >> 8 & 1;
      uVar13 = (uVar18 << 0xc | uVar18) << 2 ^ uVar13;
      uVar18 = (uVar13 >> 0x18 | uVar13 << 8) + 0x6e4157a7;
      uVar16 = (uVar25 << 0x1c | ((uVar14 << 5 | uVar14) << 8 ^ uVar25) >> 4) + 0x20a786ca;
      uVar13 = (uVar18 >> 0xb ^ uVar18) >> 9 & 0x3ff;
      uVar14 = uVar18 ^ (uVar13 << 0xb | uVar13) << 9;
      uVar13 = (uVar16 >> 0x11 ^ uVar16) >> 0xb & 3;
      uVar16 = uVar16 ^ (uVar13 << 0x11 | uVar13) << 0xb;
      uVar25 = (uVar16 << 0x10 | uVar16 >> 0x10) & 0x5c9ca363;
      uVar22 = (ulonglong)uVar25;
      uVar25 = (uVar16 >> 0x10 | uVar16 << 0x10) & 0xa3635c9c | uVar25;
      uVar13 = (uVar14 >> 4 | uVar18 * 0x10000000) & 0x78787878;
      uVar8 = (ulonglong)uVar13;
      uVar13 = (uVar14 << 4 | uVar14 >> 0x1c) & 0x87878787 | uVar13;
      uVar18 = (uVar25 << 0x12 | uVar25 >> 0xe) + 0x607d5440;
      uVar13 = uVar18 ^ (uVar13 << 0x12 | uVar13 >> 0xe) + 0x270a0bab;
      uVar25 = uVar13 & 0x3c3c3c3c ^ uVar18;
      uVar18 = uVar13 & 0xc3c3c3c3 ^ uVar18 ^ uVar25;
      uVar13 = uVar18 & 0x7341a189 ^ uVar25;
      uVar25 = uVar18 & 0x8cbe5e76 ^ uVar25;
      iVar23 = iVar23 + -1;
    } while (-1 < iVar23);
    do {
      puVar15 = (undefined4 *)(unaff_RBP + -0x40);
      FUN_1813e6ab7();
      *puVar15 = 0xbd4f5f69;
      FUN_1813e8592();
      uVar18 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar18 < 0) {
        uVar18 = (uVar18 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar18 != 0);
    uVar18 = *(int *)(unaff_RBP + -0x40) + 0x2dfa3eee;
    uVar14 = ((uVar13 + 0xb4839884) * 0x10 | uVar13 + 0xb4839884 >> 0x1c) ^ 0x5244efa5;
    uVar13 = (uVar18 * 0x200000 | uVar18 >> 0xb) ^ 0xabf3e2cd;
    uVar18 = (uVar14 << 0x14 | uVar14 >> 0xc) + 0xa783f037;
    uVar13 = (uVar13 >> 0x16 | uVar13 << 10) + 0xc42b144c;
    uVar18 = (uVar18 >> 0xb | uVar18 * 0x200000) + 0xd53506e;
    uVar13 = (uVar13 >> 0xb | uVar13 * 0x200000) + 0x2981305f;
    *(uint *)(unaff_RBP + -0x40) = (uVar13 >> 0x1e | uVar13 * 4) ^ 0xc194d714;
    if (((uVar18 >> 0x1f | uVar18 * 2) + 0x55160d51 ^ *(uint *)(unaff_RBP + -0x40)) + uVar25 !=
        *(int *)(unaff_RBP + -0x7c)) {
      do {
        puVar12 = (undefined8 *)(unaff_RBP + 0x30);
        FUN_1813e73e7();
        *puVar12 = FUN_180bc2920;
        uVar13 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
        if ((int)uVar13 < 0) {
          uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar13 != 0);
      (**(code **)(unaff_RBP + 0x30))();
      do {
        FUN_1813e5bc4();
        uVar13 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
        if ((int)uVar13 < 0) {
          uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar13 != 0);
    }
  }
  uVar13 = *(uint *)(unaff_RBP + -0x74) ^ unaff_ESI;
  if (uVar13 != uVar13 >> 2) {
    lVar17 = FUN_1813e6532();
    thunk_FUN_1805a9280(extraout_XMM0_Qa,(lVar17 + uVar8) - (~(uVar8 - (lVar17 + uVar8)) + 1));
    return;
  }
  iVar23 = *(int *)(unaff_RBP + -0x1c);
  puVar5 = (undefined1 *)register0x00000020;
  do {
    puVar20 = puVar5;
    *(undefined8 *)(puVar20 + -8) = 0x1813e70e8;
    lVar17 = (longlong)iVar23;
    FUN_1813e57ba();
    *(undefined8 **)(puVar20 + -8) = unaff_R15;
    *(ulonglong *)(puVar20 + -0x10) = uVar8;
    *(ulonglong *)(puVar20 + -0x18) = uVar26;
    unaff_R13 = (int *)-(~(ulonglong)unaff_R13 + 1);
    lVar17 = -lVar17;
    uVar26 = *(ulonglong *)(puVar20 + lVar17 + 0xbc8);
    uVar8 = *(ulonglong *)(puVar20 + lVar17 + 0xbd0);
    unaff_R15 = *(undefined8 **)(puVar20 + lVar17 + 0xbd8);
    uVar13 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar13 < 0) {
      uVar13 = (uVar13 - 1 | 0xfffffffe) + 1;
    }
    puVar5 = puVar20 + lVar17 + 0xbe0;
  } while (uVar13 != 0);
  *(undefined8 *)(puVar20 + lVar17 + 0xbd8) = 0x1813e71ca;
  uVar10 = FUN_18133e170(unaff_RBP + 0x38,unaff_R15 + 10,uVar22);
  *(undefined8 *)(puVar20 + lVar17 + 0xbd8) = 0x1813e71d9;
  uVar11 = FUN_181339630(unaff_R15,unaff_RBP + 0x44);
  *(undefined8 *)(puVar20 + lVar17 + 0xbd8) = 0x1813e71e5;
  puVar12 = (undefined8 *)FUN_1804ab870(uVar11,unaff_RBP + 0x4c);
  *(undefined8 *)(puVar20 + lVar17 + 0xbd8) = 0x1813e71f0;
  uVar6 = FUN_181339710(unaff_R15);
  *(undefined8 *)(puVar20 + lVar17 + 0xbd8) = 0x1813e71fb;
  uVar7 = FUN_1804e48d0(unaff_R15);
  puVar20[lVar17 + 0xc58] = uVar6;
  *(undefined4 *)(puVar20 + lVar17 + 0xc50) = uVar7;
  *(undefined8 *)(puVar20 + lVar17 + 0xc48) = unaff_R15[9];
  uVar11 = unaff_R15[8];
  uVar7 = *(undefined4 *)(unaff_R15 + 4);
  uVar2 = *(undefined4 *)(unaff_RBP + -0x14);
  uVar3 = *unaff_R15;
  uVar4 = *(undefined8 *)(unaff_RBP + -8);
  *(undefined8 *)(puVar20 + lVar17 + 0xc40) = *puVar12;
  uVar1 = *(undefined4 *)((longlong)unaff_R15 + 0x24);
  *(undefined8 *)(puVar20 + lVar17 + 0xc38) = uVar11;
  *(undefined8 *)(puVar20 + lVar17 + 0xc30) = unaff_R15[7];
  *(undefined8 *)(puVar20 + lVar17 + 0xc28) = unaff_R15[6];
  *(undefined4 *)(puVar20 + lVar17 + 0xc20) = uVar1;
  uVar1 = *(undefined4 *)((longlong)unaff_R15 + 0x1c);
  *(undefined4 *)(puVar20 + lVar17 + 0xc18) = uVar7;
  uVar7 = *(undefined4 *)(unaff_R15 + 3);
  *(undefined4 *)(puVar20 + lVar17 + 0xc10) = uVar1;
  uVar1 = *(undefined4 *)((longlong)unaff_R15 + 0x14);
  *(undefined4 *)(puVar20 + lVar17 + 0xc08) = uVar7;
  *(undefined4 *)(puVar20 + lVar17 + 0xc00) = uVar1;
  *(undefined8 *)(puVar20 + lVar17 + 0xbd8) = 0x1813e73ba;
  FUN_1813399c0(uVar4,uVar10,uVar3,uVar2);
  *(undefined **)(puVar20 + lVar17 + 0xbd8) = &UNK_1813e73cd;
}



############ FUN_ 1815242fd size=1312 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1815242fd(uint *param_1,ulonglong param_2,undefined8 param_3,longlong param_4,
                  undefined8 param_5,undefined8 param_6,int param_7,undefined8 param_8,
                  undefined4 param_9,undefined8 param_10,int param_11,undefined4 param_12,
                  undefined8 param_13,uint param_14,undefined8 param_15,undefined8 param_16)

{
  longlong lVar1;
  undefined4 uVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined1 *puVar5;
  char cVar6;
  ulonglong in_RAX;
  ulonglong uVar7;
  ulonglong uVar8;
  uint uVar9;
  uint uVar10;
  undefined8 *puVar11;
  undefined4 unaff_EBX;
  uint uVar12;
  uint uVar13;
  undefined1 *puVar14;
  longlong unaff_RBP;
  int unaff_EDI;
  int iVar15;
  undefined4 unaff_R13D;
  int *unaff_R14;
  undefined8 unaff_R15;
  undefined1 auStackX_8 [32];
  
  while( true ) {
    uVar7 = in_RAX ^ (param_2 >> 0xb | param_2 << 0x35) + 0x2a7a2829;
    uVar8 = uVar7 >> 0xb | uVar7 << 0x35;
    uVar8 = uVar8 + ((uVar8 << 8 | (uVar7 & 0x7ff) >> 3) - 0x6faa1809);
    uVar7 = uVar8 * 0x2000 | uVar8 >> 0x33;
    uVar8 = uVar7 * 3 >> 0xe;
    lVar1 = uVar8 + uVar7 * 2;
    uVar7 = ((uVar8 ^ 0xffffffffffffffff) + 1 ^ 0xffffffffffffffff) + 1;
    *param_1 = ((int)lVar1 * 0x1000 | (uint)((ulonglong)lVar1 >> 0x34)) >> 1;
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    if (uVar9 == 0) break;
    param_1 = (uint *)((longlong)&param_13 + 4);
    uVar4 = rdtsc();
    uVar9 = (int)uVar4 + (int)((ulonglong)uVar4 >> 0x20) * 8;
    *(uint *)(unaff_RBP + -0x60) = uVar9;
    in_RAX = (ulonglong)uVar9 * -0x1fff;
    param_2 = (ulonglong)uVar9 * -0x9ffb;
  }
  param_13._4_4_ = param_13._4_4_ ^ param_16._4_4_;
  if (param_13._4_4_ < 0x28f5c2b) {
    *(undefined4 *)(unaff_RBP + -0x18) = param_12;
    *(undefined4 *)(unaff_RBP + -0xc) = param_9;
    *(undefined4 *)(unaff_RBP + -0x14) = unaff_R13D;
    *(undefined4 *)(unaff_RBP + -0x10) = unaff_EBX;
    do {
      param_14 = 0x6b26fdcf;
      *(undefined8 *)(unaff_RBP + -0x40) = 0x181524423;
      FUN_181524d70();
      uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar9 != 0);
    uVar9 = (param_14 + 0x5d0c1c55 >> 3 | (param_14 + 0x5d0c1c55) * 0x20000000) ^ 0x87033239;
    uVar9 = (uVar9 >> 0xe | uVar9 << 0x12) + 0xf60a6c56;
    param_14 = uVar9 >> 0x19 | uVar9 * 0x80;
    (*(code *)((longlong)(int)param_14 + *(longlong *)(unaff_RBP + -0x40)))
              (unaff_RBP + -0x18,unaff_RBP + 0x18);
    uVar9 = *(uint *)(unaff_RBP + 0x28);
    iVar15 = 7;
    uVar12 = *(uint *)(unaff_RBP + 0x2c);
    do {
      uVar10 = (uVar12 ^ uVar9) & 0x4efd1df ^ uVar9;
      uVar12 = (uVar12 ^ uVar9) & 0xfb102e20 ^ uVar9 ^ uVar10;
      uVar9 = ~(uVar12 & 0x54d3484b ^ uVar10);
      uVar12 = uVar9 ^ ~(uVar12 & 0xab2cb7b4 ^ uVar10);
      uVar10 = uVar12 & 0x848b99fe ^ uVar9;
      uVar9 = uVar12 & 0x7b746601 ^ uVar9;
      uVar12 = ((uVar10 << 4 | uVar10 >> 0x1c) & 0xc3c3c3c3 |
               (uVar10 >> 4 | uVar10 << 0x1c) & 0x3c3c3c3c) + 0x36fae1ff;
      uVar7 = (ulonglong)uVar12;
      uVar9 = ((uVar9 << 0x10 | uVar9 >> 0x10) & 0x96b5694a |
              (uVar9 >> 0x10 | uVar9 << 0x10) & 0x694a96b5) + 0xf365dac8 ^ uVar12;
      uVar13 = uVar9 & 0x58f8e34b ^ uVar12;
      uVar12 = uVar9 & 0xa7071cb4 ^ uVar12;
      uVar10 = uVar12 << 0x18 | uVar12 >> 8;
      uVar12 = (uVar13 >> 6 | uVar13 << 0x1a) ^ 0x3825b93f;
      uVar9 = uVar10 + 0xc3118cdd;
      iVar15 = iVar15 + -1;
    } while (-1 < iVar15);
    uVar10 = uVar10 + 0xa8f2eaf;
    uVar9 = (uVar10 * 0x2000 | uVar10 >> 0x13) ^ 0xcc4c7c7d;
    uVar9 = (uVar9 >> 0x10 | uVar9 << 0x10) + 0x54b5ddf;
    do {
      FUN_181525e7a();
      uVar10 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar10 != 0);
    if ((~((uVar9 * 0x10000 | uVar9 >> 0x10) + 0xea972987) + 0xbb1f54ad ^ 0xa4cedbfb) + uVar12 !=
        param_11) {
      do {
        puVar11 = (undefined8 *)(unaff_RBP + -0x38);
        func_0x000181523639();
        *puVar11 = FUN_180bc28c0;
        uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar9 != 0);
      (**(code **)(unaff_RBP + -0x38))();
      do {
        func_0x000181524b72();
        uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar9 != 0);
    }
  }
  if (unaff_EDI != param_7) {
    thunk_FUN_1805a9280((longlong)*(int *)(unaff_RBP + -0x7c),
                        (param_4 + uVar7) - ((uVar7 - (param_4 + uVar7) ^ 0xffffffffffffffff) + 1));
    return;
  }
  iVar15 = *(int *)(unaff_RBP + -0x80);
  puVar5 = auStackX_8;
  do {
    puVar14 = puVar5;
    *(longlong *)(puVar14 + -8) = param_4;
    *(undefined8 *)(puVar14 + -0x10) = unaff_R15;
    *(int **)(puVar14 + -0x18) = unaff_R14;
    lVar1 = -(longlong)iVar15;
    unaff_R14 = *(int **)(puVar14 + lVar1 + 0x3a8);
    unaff_R15 = *(undefined8 *)(puVar14 + lVar1 + 0x3b0);
    param_4 = *(longlong *)(puVar14 + lVar1 + 0x3b8);
    uVar9 = (*unaff_R14 + 1) * *unaff_R14 & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    puVar5 = puVar14 + lVar1 + 0x3c0;
  } while (uVar9 != 0);
  lVar3 = *(longlong *)(unaff_RBP + -0x70);
  *(undefined8 *)(puVar14 + lVar1 + 0x3b8) = 0x181524789;
  cVar6 = FUN_1815fb4e0(lVar3 + 0x8e0);
  if (cVar6 == '\0') {
    uVar2 = *(undefined4 *)(lVar3 + 0x338);
    *(undefined4 *)(puVar14 + lVar1 + 0x3e0) = 0;
    *(undefined8 *)(puVar14 + lVar1 + 0x3b8) = 0x1815247b4;
    FUN_1815fe690(lVar3 + 0x8e0,2,uVar2);
  }
  else {
    *(undefined1 **)(puVar14 + lVar1 + 0x3b8) = &LAB_1815248dc;
    FUN_1815fceb0(lVar3 + 0x8e0);
  }
  *(undefined **)(puVar14 + lVar1 + 0x3b8) = &UNK_1815248e8;
}



############ FUN_ 18120d9b4 size=1282 ############

void FUN_18120d9b4(uint *param_1,ulonglong param_2,ulonglong param_3,undefined8 param_4,int param_5,
                  int param_6,undefined8 param_7,undefined8 param_8,undefined8 param_9,
                  undefined8 param_10,undefined4 param_11)

{
  ulonglong uVar1;
  uint uVar2;
  uint uVar3;
  ulonglong in_RAX;
  uint uVar4;
  undefined4 unaff_EBX;
  longlong unaff_RBP;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  uint uVar5;
  int iVar6;
  uint *in_R10;
  int *unaff_R12;
  int unaff_R13D;
  undefined4 unaff_R14D;
  int unaff_R15D;
  undefined8 in_stack_00000078;
  
  while( true ) {
    uVar2 = (uint)in_RAX ^ (uint)param_2;
    *in_R10 = uVar2;
    uVar1 = ((ulonglong)(uVar2 >> 10) | (ulonglong)uVar2 << 0x36) + (ulonglong)uVar2 * 8;
    unaff_R12 = (int *)-(((ulonglong)unaff_R12 ^ 0xffffffffffffffff) + 1);
    *param_1 = (uint)((uVar1 - (uVar1 >> 0xf)) * 0x901 >> 0xc) >> 1;
    uVar2 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    if (uVar2 == 0) break;
    in_R10 = (uint *)&stack0x00000078;
    param_1 = (uint *)((longlong)&param_10 + 4);
    uVar1 = rdtsc();
    param_2 = uVar1 >> 0x20;
    in_RAX = uVar1 & 0xffffffff;
  }
  param_10._4_4_ = param_10._4_4_ ^ param_7._4_4_;
  if (param_10._4_4_ < 0x4444447) {
    do {
      FUN_18120c62b();
      uVar2 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    *(undefined4 *)(unaff_RBP + -0x30) = unaff_ESI;
    *(undefined4 *)(unaff_RBP + -0x2c) = unaff_EDI;
    *(undefined4 *)(unaff_RBP + -0x28) = unaff_R14D;
    *(undefined4 *)(unaff_RBP + -0x24) = unaff_EBX;
    do {
      *(undefined8 *)(unaff_RBP + -0x68) = 0x18120db33;
      uVar2 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
      if ((int)uVar2 < 0) {
        uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar2 != 0);
    param_11 = 0xffa3967d;
    (*(code *)(*(longlong *)(unaff_RBP + -0x68) + -0x5c6983))(unaff_RBP + -0x30);
    param_3 = (ulonglong)*(uint *)(unaff_RBP + 0x18);
    uVar2 = *(uint *)(unaff_RBP + 0x1c);
    iVar6 = 7;
    do {
      uVar3 = ((uint)(param_3 >> 0xc) ^ (uint)param_3) >> 2 & 0xfff;
      uVar4 = (uVar2 >> 5 ^ uVar2) >> 8 & 1;
      uVar3 = (uVar3 << 0xc | uVar3) << 2 ^ (uint)param_3;
      uVar3 = (uVar3 >> 0x18 | uVar3 << 8) + 0x6e4157a7;
      uVar5 = (uVar2 << 0x1c | ((uVar4 << 5 | uVar4) << 8 ^ uVar2) >> 4) + 0x20a786ca;
      uVar2 = (uVar3 >> 0xb ^ uVar3) >> 9 & 0x3ff;
      uVar4 = uVar3 ^ (uVar2 << 0xb | uVar2) << 9;
      uVar2 = (uVar5 >> 0x11 ^ uVar5) >> 0xb & 3;
      uVar5 = uVar5 ^ (uVar2 << 0x11 | uVar2) << 0xb;
      uVar2 = (uVar4 << 4 | uVar4 >> 0x1c) & 0x87878787 |
              (uVar4 >> 4 | uVar3 * 0x10000000) & 0x78787878;
      uVar3 = (uVar5 >> 0x10 | uVar5 << 0x10) & 0xa3635c9c |
              (uVar5 << 0x10 | uVar5 >> 0x10) & 0x5c9ca363;
      uVar4 = (uVar3 << 0x12 | uVar3 >> 0xe) + 0x607d5440;
      uVar2 = uVar4 ^ (uVar2 << 0x12 | uVar2 >> 0xe) + 0x270a0bab;
      uVar3 = uVar2 & 0x3c3c3c3c ^ uVar4;
      uVar4 = uVar2 & 0xc3c3c3c3 ^ uVar4 ^ uVar3;
      uVar2 = uVar4 & 0x8cbe5e76 ^ uVar3;
      uVar3 = uVar4 & 0x7341a189 ^ uVar3;
      param_3 = (ulonglong)uVar3;
      iVar6 = iVar6 + -1;
    } while (-1 < iVar6);
    uVar3 = uVar3 + 0x546b5778;
    uVar3 = (uVar3 * 0x4000000 | uVar3 >> 6) + 0x3d3ac0d2;
    uVar3 = (uVar3 >> 0x1a | uVar3 * 0x40) + 0x25f9c5e;
    uVar3 = (uVar3 >> 0x1d | uVar3 * 8) + 0x4b52249f;
    if (((uVar3 >> 8 | uVar3 * 0x1000000) + 0x8ac94a7a ^ 0x3318f9b9) + uVar2 != param_5) {
      do {
        *(code **)(unaff_RBP + -0x60) = FUN_180bc28c0;
        uVar2 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
        if ((int)uVar2 < 0) {
          uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar2 != 0);
      (**(code **)(unaff_RBP + -0x60))();
      do {
        uVar2 = (*unaff_R12 + 1) * *unaff_R12 & 0x80000001;
        if ((int)uVar2 < 0) {
          uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar2 != 0);
    }
  }
  if (unaff_R15D == param_6) {
    if (0 < DAT_1826736a4) {
      DAT_1826736a4 = DAT_1826736a4 + -1;
    }
    FUN_18120a2a0();
    FUN_18120d9b3((longlong)in_stack_00000078._4_4_);
    FUN_18120df13();
    return;
  }
  if (DAT_1826736a4 < 1) {
    DAT_1826736a4 = DAT_1826736a4 + -1;
  }
  FUN_18120a2a0();
  thunk_FUN_1805a9280((longlong)unaff_R13D,0x18120de1c,param_3);
  return;
}



############ FUN_ 1814338d9 size=2094 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1814338d9(uint *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4,
                  uint param_5,uint param_6,undefined8 param_7,undefined8 param_8,ulonglong param_9,
                  undefined8 param_10,undefined8 param_11,undefined8 param_12,undefined8 param_13,
                  undefined8 param_14,undefined8 param_15)

{
  undefined8 uVar1;
  longlong lVar2;
  undefined1 *puVar3;
  ulonglong in_RAX;
  ulonglong uVar4;
  uint uVar5;
  ulonglong uVar6;
  undefined4 *puVar7;
  uint *puVar8;
  ulonglong uVar9;
  uint uVar10;
  longlong unaff_RBX;
  longlong lVar11;
  undefined1 *puVar12;
  uint *unaff_RBP;
  uint uVar13;
  uint uVar14;
  longlong unaff_RDI;
  uint uVar15;
  uint uVar16;
  int iVar17;
  uint uVar18;
  longlong in_R10;
  uint uVar19;
  int *unaff_R13;
  int unaff_R14D;
  longlong unaff_R15;
  longlong lVar20;
  undefined1 auStackX_8 [32];
  uint uStack000000000000002c;
  
  lVar20 = ~((unaff_R15 + in_R10 ^ 0xffffffffffffffffU) + 1) + 1;
  *param_1 = (int)(in_RAX ^ param_2) + (int)((in_RAX ^ param_2) >> 6) + 0x72efda01 & 0xd61a39a;
  uVar5 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
  if ((int)uVar5 < 0) {
    uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
  }
  if (uVar5 != 0) {
    puVar8 = (uint *)((longlong)register0x00000020 + 0x74);
    FUN_181432fe9((longlong)&param_7 + 4);
    uVar1 = rdtsc();
    *puVar8 = (uint)uVar1 ^ (uint)((ulonglong)uVar1 >> 0x20);
    FUN_181433827();
    return;
  }
  *(int *)(unaff_RBX + 8) = *(int *)(unaff_RBX + 8) + (param_7._4_4_ ^ 0x272f46d);
  *(int *)(unaff_RBX + 4) = *(int *)(unaff_RBX + 4) + (param_7._4_4_ ^ 0x8a4e7e86);
  uVar6 = *(ulonglong *)(unaff_RBX + 4);
  uVar5 = (uint)((uVar6 >> 0x1f ^ uVar6) >> 1) & 0x7fffffff;
  uVar9 = ~(((ulonglong)uVar5 << 0x1f | (ulonglong)uVar5) * 2 ^ uVar6);
  uVar6 = (ulonglong)((uint)((uVar9 >> 0x19 ^ uVar9) >> 0x13) & 0x3fff);
  uVar6 = ((uVar6 << 0x19 | uVar6) << 0x13 ^ uVar9) + 0x4886b0bd5fbaff3;
  uVar5 = (uint)((uVar6 >> 0x19 ^ uVar6) >> 7) & 0x1ffffff;
  uVar6 = ((ulonglong)uVar5 << 0x19 | (ulonglong)uVar5) << 7 ^ uVar6;
  uVar6 = ((uVar6 << 8 | uVar6 >> 0x38) & 0xed12ed12ed12ed12 |
          (uVar6 >> 8 | uVar6 << 0x38) & 0x12ed12ed12ed12ed) + 0xb8c1196ebfb2e929;
  uVar6 = (uVar6 >> 2 & 0xcccccccccccccccc | uVar6 << 0x3e |
          uVar6 * 4 & 0x3333333333333333 | uVar6 >> 0x3e) + 0x933b7ec71fa15cd5;
  *(ulonglong *)(unaff_RBX + 4) = uVar6;
  *(longlong *)(unaff_RDI + 4) =
       *(longlong *)(unaff_RDI + 4) + (ulonglong)((uint)(uVar6 >> 0xc) & 0x28304b0);
  param_7._4_4_ = (uint)(*(ulonglong *)(unaff_RBX + 4) >> 4) & 0x7fffffff;
  uStack000000000000002c = (uint)(*(ulonglong *)(unaff_RBX + 4) >> 0x1b) ^ 0x4d4be8c9;
  param_9 = *(ulonglong *)(unaff_RBX + 4) ^ 0xae5e6e8103202de3;
  unaff_RBP[-9] = uStack000000000000002c;
  unaff_RBP[-8] = (uint)param_9;
  uVar5 = unaff_RBP[-8] + 0xf1e309f9;
  uVar10 = (uint)(param_9 >> 0x20) ^ 0x4a5a460c ^ uVar5;
  uVar16 = unaff_R14D + 0xf56b0f05;
  uVar13 = unaff_RBP[-9] ^ 0x580ef0e7;
  uVar14 = (uVar10 & 0x404381bb ^ uVar5) + 0xf864faf4;
  uVar10 = uVar10 & 0xbfbc7e44 ^ uVar5 ^ 0xe070a390;
  uVar15 = (uVar16 >> 0xf ^ uVar16) >> 2 & 0x7fff;
  uVar18 = (uVar13 >> 0xe ^ uVar13) >> 2 & 0x3fff;
  uVar19 = (uVar14 >> 10 ^ uVar14) >> 0xb & 3;
  uVar5 = (uVar10 >> 9 ^ uVar10) >> 4 & 0xff;
  uVar5 = (uVar5 << 9 | uVar5) << 4 ^ uVar10 ^ 0x17d56d53;
  uVar10 = uVar5 ^ ((uVar15 << 0xf | uVar15) << 2 ^ uVar16) + 0x193437c3;
  uVar15 = uVar10 & 0x61fa746d ^ uVar5 ^ 0x4742c5fd;
  uVar13 = uVar13 ^ ((uVar18 << 0xe | uVar18) ^ 0xe46c1535) << 2;
  uVar19 = ((uVar19 << 10 | uVar19) << 0xb ^ uVar14 ^ 0x3e728703) + 0xea956873;
  uVar18 = (uVar10 & 0x9e058b92 ^ uVar5) + 0xf3638a6a;
  uVar5 = (uVar15 >> 7 ^ uVar15) & 3;
  uVar10 = (uVar13 >> 0xf ^ uVar13) >> 2 & 0x7fff;
  uVar14 = (uVar19 >> 10 ^ uVar19) >> 10 & 0x7f;
  uVar16 = (uVar18 >> 5 ^ uVar18) >> 2 & 0x1f;
  uVar15 = ((uVar5 << 7 | uVar5) ^ uVar15) + 0x933d3959;
  uVar5 = ((uVar16 << 5 | uVar16) << 2 ^ uVar18) + 0xf6b09850;
  uVar6 = (ulonglong)uVar5;
  do {
    uVar1 = rdtsc();
    param_14._4_4_ = (int)uVar1 + (int)((ulonglong)uVar1 >> 0x20);
    uVar9 = (ulonglong)param_14._4_4_ * 0x41 - 0x4820b647;
    uVar9 = (uVar9 >> 0xb) + 0xf3cb793 + uVar9 * 2;
    uVar4 = uVar9 * 0x80 | uVar9 >> 0x39;
    uVar9 = (uVar4 << 6 | (uVar9 & 0x1ffffffffffffff) >> 0x33) + 0x7a387c56 + uVar4 * 2;
    uVar9 = uVar9 * 0x400 | uVar9 >> 0x36;
    uVar4 = uVar9 << 10;
    uVar15 = -(~uVar15 + 1);
    uVar16 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar16 < 0) {
      uVar16 = (uVar16 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar16 != 0);
  param_12._0_4_ = (int)uVar9 + (int)uVar4 & 0x7fffffffU ^ param_7._4_4_;
  if ((uint)param_12 < 0xccccccf) {
    unaff_RBP[-2] = uVar15;
    unaff_RBP[-1] = ((uVar10 << 0xf | uVar10) << 2 ^ uVar13) + 0x49b8f865;
    *unaff_RBP = (uVar14 << 10 | uVar14) << 10 ^ uVar19 ^ 0x5468063c;
    unaff_RBP[1] = uVar5;
    do {
      puVar8 = unaff_RBP + -0xe;
      puVar7 = (undefined4 *)((longlong)&param_12 + 4);
      func_0x000181432685();
      *puVar7 = 0xdb2f27af;
      puVar8[0] = 0x81433d73;
      puVar8[1] = 1;
      uVar5 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar5 < 0) {
        uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar5 != 0);
    uVar5 = ~((param_12._4_4_ << 9 | param_12._4_4_ >> 0x17) + 0xd1f4edd) + 0x4e46296d;
    param_12._4_4_ = (uVar5 * 0x200 | uVar5 >> 0x17) ^ 0x5174f0b8;
    (*(code *)((longlong)(int)param_12._4_4_ + *(longlong *)(unaff_RBP + -0xe)))
              (unaff_RBP + -2,unaff_RBP + 10);
    uVar10 = unaff_RBP[10];
    uVar5 = unaff_RBP[0xb];
    iVar17 = 7;
    do {
      uVar14 = (uVar10 >> 0x1c ^ uVar10) >> 2 & 1;
      uVar15 = (uVar5 >> 0xc ^ uVar5) & 0x3ff;
      uVar10 = (uVar14 << 0x1c | uVar14) << 2 ^ uVar10 ^ 0xa0a9bf0b;
      uVar4 = (ulonglong)uVar10;
      uVar5 = ((uVar15 << 0xc | uVar15) ^ uVar5) + 0xc12e6b24 ^ uVar10;
      uVar14 = (uVar5 & 0x7fbcc1e5 ^ uVar10) + 0x240e52d0 ^ 0x1e08654e;
      uVar5 = uVar5 & 0x80433e1a ^ uVar10 ^ 0xf83d4d4c ^ uVar14;
      uVar10 = (uVar5 & 0xdd51862d ^ uVar14) + 0x916c9021;
      uVar5 = (uVar5 & 0x22ae79d2 ^ uVar14) + 0xe4ebf231;
      uVar14 = (uVar10 >> 0xd ^ uVar10) >> 8 & 0x3ff;
      uVar10 = uVar10 ^ (uVar14 << 0xd | uVar14) << 8;
      uVar14 = (uVar5 >> 0x11 ^ uVar5) >> 5 & 0x1f;
      uVar5 = uVar5 ^ (uVar14 << 0x11 | uVar14) << 5;
      iVar17 = iVar17 + -1;
    } while (-1 < iVar17);
    do {
      puVar7 = (undefined4 *)((longlong)&param_8 + 4);
      FUN_181432a53();
      *puVar7 = 0x53be3c45;
      FUN_1814338d8();
      uVar14 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
      if ((int)uVar14 < 0) {
        uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar14 != 0);
    uVar14 = ~(~((param_8._4_4_ >> 0x14 | param_8._4_4_ << 0xc) + 0xf9efbfc3) ^ 0x53842bbd);
    param_8._4_4_ = ~((uVar14 << 0x19 | uVar14 >> 7) ^ 0x4a165f2f) + 0x15cfe083;
    uVar10 = (uVar10 >> 0x17 | uVar10 << 9) + 0x943148a6;
    uVar10 = (uVar10 >> 2 | uVar10 * 0x40000000) + 0x117a06ca;
    uVar10 = (uVar10 >> 8 | uVar10 * 0x1000000) + 0x8d79b681;
    uVar10 = (uVar10 >> 0x19 | uVar10 * 0x80) + 0x7a344922;
    if (((uVar10 * 0x20000 | uVar10 >> 0xf) ^ param_8._4_4_) + uVar5 != uStack000000000000002c) {
      do {
        *(code **)(unaff_RBP + -0x16) = FUN_180bc28c0;
        uVar5 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
        if ((int)uVar5 < 0) {
          uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar5 != 0);
      (**(code **)(unaff_RBP + -0x16))();
      do {
        func_0x000181434419();
        uVar5 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
        if ((int)uVar5 < 0) {
          uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar5 != 0);
    }
  }
  if (((param_6 ^ param_5) * 3 & 0x3fffffff) != 0) {
    FUN_18115fa70(param_10);
    thunk_FUN_1805a9280((longlong)param_15._4_4_,uVar4);
    return;
  }
  FUN_18115fa70(param_10);
  lVar11 = (longlong)(int)param_15;
  puVar3 = auStackX_8;
  do {
    puVar12 = puVar3;
    *(longlong *)(puVar12 + -8) = lVar20;
    *(int **)(puVar12 + -0x10) = unaff_R13;
    *(ulonglong *)(puVar12 + -0x18) = uVar6;
    lVar2 = -lVar11;
    uVar6 = *(ulonglong *)(puVar12 + lVar2 + 0xcb8);
    unaff_R13 = *(int **)(puVar12 + lVar2 + 0xcc0);
    lVar20 = *(longlong *)(puVar12 + lVar2 + 0xcc8);
    uVar5 = (*unaff_R13 + 1) * *unaff_R13 & 0x80000001;
    if ((int)uVar5 < 0) {
      uVar5 = (uVar5 - 1 | 0xfffffffe) + 1;
    }
    puVar3 = puVar12 + lVar2 + 0xcd0;
  } while (uVar5 != 0);
  *(undefined8 *)(puVar12 + lVar2 + 0xcc8) = 0x1814341fa;
  FUN_180487550(unaff_RBP + -0x1a,uVar4);
  *(undefined **)(puVar12 + lVar2 + 0xcc8) = &UNK_181434206;
}



############ FUN_ 180530850 size=584 ############

void FUN_180530850(longlong param_1)

{
  int iVar1;
  int iVar2;
  undefined8 uVar3;
  float fVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  int iVar8;
  float fVar9;
  double dVar10;
  float fVar11;
  uint uVar12;
  uint uVar13;
  float fVar14;
  undefined1 auStack_e8 [176];
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_e8;
  iVar1 = *(int *)(param_1 + 100) / 2 + 1;
  fVar14 = (DAT_1824c45b4 / (*(float *)(param_1 + 0x24) * DAT_1824c3d8c)) * (float)iVar1;
  fVar9 = expf(DAT_1824c4208);
  fVar4 = DAT_1824c3ea4;
  iVar6 = 1;
  lVar7 = (longlong)iVar1;
  lVar5 = 1;
  if (1 < lVar7) {
    uVar12 = (uint)DAT_1824c4f10;
    uVar13 = (uint)((ulonglong)DAT_1824c4f10 >> 0x20);
    if (3 < lVar7 + -1) {
      iVar8 = 3;
      do {
        fVar11 = (float)iVar6;
        iVar6 = iVar6 + 4;
        dVar10 = (double)(fVar4 / ((fVar11 / fVar14) / fVar9 + fVar4));
        *(float *)(*(longlong *)(param_1 + 0x5406a8) + lVar5 * 4) =
             (float)(double)CONCAT44((uint)((ulonglong)dVar10 >> 0x20) & uVar13,
                                     SUB84(dVar10,0) & uVar12) * (fVar11 / fVar14);
        fVar11 = (float)(iVar8 + -1) / fVar14;
        dVar10 = (double)(fVar4 / (fVar11 / fVar9 + fVar4));
        *(float *)(*(longlong *)(param_1 + 0x5406a8) + 4 + lVar5 * 4) =
             (float)(double)CONCAT44((uint)((ulonglong)dVar10 >> 0x20) & uVar13,
                                     SUB84(dVar10,0) & uVar12) * fVar11;
        dVar10 = (double)(fVar4 / (((float)iVar8 / fVar14) / fVar9 + fVar4));
        *(float *)(*(longlong *)(param_1 + 0x5406a8) + 8 + lVar5 * 4) =
             (float)(double)CONCAT44((uint)((ulonglong)dVar10 >> 0x20) & uVar13,
                                     SUB84(dVar10,0) & uVar12) * ((float)iVar8 / fVar14);
        iVar2 = iVar8 + 1;
        iVar8 = iVar8 + 4;
        fVar11 = (float)iVar2 / fVar14;
        dVar10 = (double)(fVar4 / (fVar11 / fVar9 + fVar4));
        *(float *)(*(longlong *)(param_1 + 0x5406a8) + 0xc + lVar5 * 4) =
             (float)(double)CONCAT44((uint)((ulonglong)dVar10 >> 0x20) & uVar13,
                                     SUB84(dVar10,0) & uVar12) * fVar11;
        lVar5 = lVar5 + 4;
      } while (lVar5 < lVar7 + -3);
    }
    for (; lVar5 < lVar7; lVar5 = lVar5 + 1) {
      fVar11 = (float)iVar6;
      iVar6 = iVar6 + 1;
      dVar10 = (double)(fVar4 / ((fVar11 / fVar14) / fVar9 + fVar4));
      *(float *)(*(longlong *)(param_1 + 0x5406a8) + lVar5 * 4) =
           (float)(double)CONCAT44((uint)((ulonglong)dVar10 >> 0x20) & uVar13,
                                   SUB84(dVar10,0) & uVar12) * (fVar11 / fVar14);
    }
  }
  uVar3 = *(undefined8 *)(param_1 + 0x5406a8);
  iVar6 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar6 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(uVar3,DAT_1824c3e50);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(uVar3,DAT_1824c4110,uVar3,iVar1);
}



############ FUN_ 18052d830 size=85 ############

void FUN_18052d830(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = __std_type_info_compare(0x182650db8,0x182650db8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    thunk_FUN_181ba94b0(param_2,param_3);
  }
                    /* WARNING: Subroutine does not return */
  thunk_FUN_181ba94b0(param_2,(double)(float)param_3,param_1,param_4);
}



############ FUN_ 18113171c size=107 ############

/* Library Function - Single Match
    void __cdecl `eh vector destructor iterator'(void * __ptr64,unsigned __int64,unsigned
   __int64,void (__cdecl*)(void * __ptr64))
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void __cdecl
_eh_vector_destructor_iterator_
          (void *param_1,__uint64 param_2,__uint64 param_3,_func_void_void_ptr *param_4)

{
  void *pvVar1;
  
  pvVar1 = (void *)(param_2 * param_3 + (longlong)param_1);
  while( true ) {
    if (param_3 == 0) break;
    pvVar1 = (void *)((longlong)pvVar1 - param_2);
    (*(code *)PTR__guard_dispatch_icall_181bab6b0)(pvVar1);
    param_3 = param_3 - 1;
  }
  return;
}



############ FUN_ 181a19410 size=19 ############

void Unwind_181a19410(undefined8 param_1,longlong param_2)

{
  FUN_18052dd30(*(longlong *)(param_2 + 0x50) + 0x540530);
  return;
}



############ FUN_ 181a19100 size=16 ############

void Unwind_181a19100(undefined8 param_1,longlong param_2)

{
  FUN_18052dd30(*(longlong *)(param_2 + 0x60) + 0x60);
  return;
}



############ FUN_ 181a19430 size=19 ############

void Unwind_181a19430(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540668);
  return;
}



############ FUN_ 181a19490 size=19 ############

void Unwind_181a19490(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540698);
  return;
}



############ FUN_ 181a194b0 size=19 ############

void Unwind_181a194b0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x5406a8);
  return;
}



############ FUN_ 181a194d0 size=19 ############

void Unwind_181a194d0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x5406b8);
  return;
}



############ FUN_ 181a194f0 size=19 ############

void Unwind_181a194f0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x5406c8);
  return;
}



############ FUN_ 181a19510 size=19 ############

void Unwind_181a19510(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x5406d8);
  return;
}



############ FUN_ 181a19530 size=19 ############

void Unwind_181a19530(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x5406e8);
  return;
}



############ FUN_ 181a19550 size=19 ############

void Unwind_181a19550(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x5406f8);
  return;
}



############ FUN_ 181a19570 size=19 ############

void Unwind_181a19570(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540708);
  return;
}



############ FUN_ 181a19590 size=19 ############

void Unwind_181a19590(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540718);
  return;
}



############ FUN_ 181a195f0 size=19 ############

void Unwind_181a195f0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540748);
  return;
}



############ FUN_ 181a19610 size=19 ############

void Unwind_181a19610(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540758);
  return;
}



############ FUN_ 181a19670 size=19 ############

void Unwind_181a19670(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540788);
  return;
}



############ FUN_ 181a19690 size=19 ############

void Unwind_181a19690(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x50) + 0x540798);
  return;
}



############ FUN_ 181a19210 size=16 ############

void Unwind_181a19210(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x48);
  return;
}



############ FUN_ 181a19220 size=16 ############

void Unwind_181a19220(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x58);
  return;
}



############ FUN_ 181a19230 size=16 ############

void Unwind_181a19230(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x68);
  return;
}



############ FUN_ 181a19240 size=16 ############

void Unwind_181a19240(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x78);
  return;
}



############ FUN_ 181a19250 size=19 ############

void Unwind_181a19250(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x88);
  return;
}



############ FUN_ 181a19270 size=19 ############

void Unwind_181a19270(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x98);
  return;
}



############ FUN_ 181a19290 size=19 ############

void Unwind_181a19290(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0xa8);
  return;
}



############ FUN_ 181a192b0 size=19 ############

void Unwind_181a192b0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0xb8);
  return;
}



############ FUN_ 181a192d0 size=19 ############

void Unwind_181a192d0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 200);
  return;
}



############ FUN_ 181a192f0 size=19 ############

void Unwind_181a192f0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0xd8);
  return;
}



############ FUN_ 181a19310 size=19 ############

void Unwind_181a19310(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0xe8);
  return;
}



############ FUN_ 181a19330 size=19 ############

void Unwind_181a19330(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0xf8);
  return;
}



############ FUN_ 181a19350 size=19 ############

void Unwind_181a19350(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x108);
  return;
}



############ FUN_ 181a19370 size=19 ############

void Unwind_181a19370(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x118);
  return;
}



############ FUN_ 181a19390 size=19 ############

void Unwind_181a19390(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x40) + 0x128);
  return;
}



############ FUN_ 181a191d0 size=19 ############

void Unwind_181a191d0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x60) + 0x340);
  return;
}



############ FUN_ 181a191f0 size=19 ############

void Unwind_181a191f0(undefined8 param_1,longlong param_2)

{
  FUN_18052e220(*(longlong *)(param_2 + 0x60) + 0x350);
  return;
}



############ FUN_ 180535ae0 size=706 ############

undefined8 * FUN_180535ae0(undefined8 *param_1,undefined8 param_2)

{
  FUN_18052f920();
  *param_1 = Soothe2Module<float,2>::vftable;
  param_1[0x7a] = Soothe2Module<float,2>::vftable;
  param_1[0x4809b] = 0;
  LOCK();
  *(undefined4 *)((longlong)param_1 + 0x2404dc) = 0;
  UNLOCK();
  *(undefined4 *)(param_1 + 0x4809c) = 0;
  FUN_180536250(param_1 + 0x4809d);
  FUN_180536250(param_1 + 0x680a0);
  FUN_180536250(param_1 + 0x880a3);
  FUN_180533670(param_1 + 0xa80a6);
  param_1[0xa80cd] = 0;
  *(undefined4 *)(param_1 + 0xa80ce) = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0xa80cf,0x10,2,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  param_1[0xa80d3] = 0;
  *(undefined4 *)(param_1 + 0xa80d4) = 0;
  param_1[0xa80d5] = 0;
  *(undefined4 *)(param_1 + 0xa80d6) = 0;
  param_1[0xa80d7] = 0;
  *(undefined4 *)(param_1 + 0xa80d8) = 0;
  param_1[0xa80d9] = 0;
  *(undefined4 *)(param_1 + 0xa80da) = 0;
  param_1[0xa80db] = 0;
  *(undefined4 *)(param_1 + 0xa80dc) = 0;
  param_1[0xa80dd] = 0;
  *(undefined4 *)(param_1 + 0xa80de) = 0;
  param_1[0xa80df] = 0;
  *(undefined4 *)(param_1 + 0xa80e0) = 0;
  param_1[0xa80e1] = 0;
  *(undefined4 *)(param_1 + 0xa80e2) = 0;
  param_1[0xa80e3] = 0;
  *(undefined4 *)(param_1 + 0xa80e4) = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0xa80e5,0x10,2,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  param_1[0xa80e9] = 0;
  *(undefined4 *)(param_1 + 0xa80ea) = 0;
  param_1[0xa80eb] = 0;
  *(undefined4 *)(param_1 + 0xa80ec) = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0xa80ed,0x10,2,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  param_1[0xa80f1] = 0;
  *(undefined4 *)(param_1 + 0xa80f2) = 0;
  param_1[0xa80f3] = 0;
  *(undefined4 *)(param_1 + 0xa80f4) = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 0xa80f5,0x10,2,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  _eh_vector_constructor_iterator_
            (param_1 + 0xa80f9,0x10,2,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  _eh_vector_constructor_iterator_
            (param_1 + 0xa80fd,0x10,8,(_func_void_void_ptr *)&LAB_180533330,FUN_18052e220);
  param_1[0xa810d] = 0;
  *(undefined4 *)(param_1 + 0xa810e) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x540874) = 0x3f800000;
  *(undefined4 *)(param_1 + 0xa810f) = 0x3f000000;
  *(undefined4 *)((longlong)param_1 + 0x54087c) = 0x3f000000;
  *(undefined4 *)(param_1 + 0xa8110) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x540884) = 0x3f800000;
  *(undefined4 *)(param_1 + 0xa8111) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0x54088c) = 0x3f800000;
  *(undefined2 *)(param_1 + 0xa8112) = 0;
  *(undefined4 *)((longlong)param_1 + 0x540894) = 0x3f800000;
  param_1[0xa8113] = 0x3f800000;
  *(undefined1 *)(param_1 + 0xa8114) = 0;
  *(undefined8 *)((longlong)param_1 + 0x5408a4) = 0;
  *(undefined4 *)((longlong)param_1 + 0x5408ac) = 0x1000000;
  param_1[0xa8116] = param_2;
  *(undefined1 *)(param_1 + 0xa8117) = 1;
  *(undefined4 *)((longlong)param_1 + 0x24) = 0x472c4400;
  return param_1;
}



############ FUN_ 181a195b0 size=49 ############

void Unwind_181a195b0(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x50) + 0x540728),0x10,2,FUN_18052e220);
  return;
}



############ FUN_ 181a19450 size=49 ############

void Unwind_181a19450(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x50) + 0x540678),0x10,2,FUN_18052e220);
  return;
}



############ FUN_ 181a196b0 size=49 ############

void Unwind_181a196b0(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x50) + 0x5407a8),0x10,2,FUN_18052e220);
  return;
}



############ FUN_ 181a196f0 size=49 ############

void Unwind_181a196f0(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x50) + 0x5407c8),0x10,2,FUN_18052e220);
  return;
}



############ FUN_ 181a19630 size=49 ############

void Unwind_181a19630(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x50) + 0x540768),0x10,2,FUN_18052e220);
  return;
}



############ FUN_ 181a19190 size=49 ############

void Unwind_181a19190(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x60) + 0x2c0),0x40,2,FUN_18052bcb0);
  return;
}



############ FUN_ 181a19110 size=49 ############

void Unwind_181a19110(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x60) + 0x1c0),0x40,2,FUN_18052bcb0);
  return;
}



############ FUN_ 181a19150 size=49 ############

void Unwind_181a19150(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x60) + 0x240),0x40,2,FUN_18052bcb0);
  return;
}



############ FUN_ 181a3fb6d size=52 ############

void Unwind_181a3fb6d(undefined8 param_1,longlong param_2)

{
  _eh_vector_destructor_iterator_
            ((void *)(*(longlong *)(param_2 + 0x240) + 0x8e8),0x28,2,FUN_18052bcb0);
  return;
}



############ FUN_ 180001ee0 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_182616288)[DAT_1826159a0])();
  return;
}



############ FUN_ 180001d90 size=18 ############

void thunk_FUN_181ba94b0(void)

{
  (*(code *)(&PTR_FUN_1826160c8)[DAT_1826159a0])();
  return;
}



############ FUN_ 18122dc00 size=140 ############

void FUN_18122dc00(longlong *param_1,undefined8 *param_2)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar2) {
    FUN_18048a300(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar2 / 2 & 0xfffffff8);
  }
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar2 + 1;
  *(undefined8 *)(*param_1 + (longlong)iVar2 * 8) = *param_2;
  *param_2 = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return;
}



############ FUN_ 180489070 size=270 ############

uint FUN_180489070(longlong *param_1,uint param_2,longlong *param_3)

{
  undefined8 *puVar1;
  uint *puVar2;
  uint uVar3;
  longlong lVar4;
  int iVar5;
  longlong *plVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  bool bVar10;
  
  iVar5 = *(int *)((longlong)param_1 + 0xc) + 1;
  if ((int)param_1[1] < iVar5) {
    FUN_18048a300(param_1,*(int *)((longlong)param_1 + 0xc) + 9 + iVar5 / 2 & 0xfffffff8);
  }
  uVar3 = *(uint *)((longlong)param_1 + 0xc);
  if (param_2 < uVar3) {
    puVar8 = (undefined8 *)(*param_1 + (longlong)(int)uVar3 * 8);
    puVar9 = puVar8 + 1;
    if (0 < (int)(uVar3 - param_2)) {
      uVar7 = (ulonglong)(uVar3 - param_2);
      do {
        puVar1 = puVar8 + -1;
        puVar8 = puVar8 + -1;
        puVar9[-1] = *puVar1;
        puVar9 = puVar9 + -1;
        *puVar8 = &DAT_1821dbf98;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar3 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar10 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar3;
          if (bVar10) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
        uVar7 = uVar7 - 1;
      } while (uVar7 != 0);
    }
    plVar6 = (longlong *)(*param_1 + (longlong)(int)param_2 * 8);
  }
  else {
    plVar6 = (longlong *)(*param_1 + (longlong)(int)uVar3 * 8);
  }
  lVar4 = *param_3;
  *plVar6 = lVar4;
  uVar3 = *(uint *)(lVar4 + -0x10);
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    puVar2 = (uint *)(lVar4 + -0x10);
    uVar3 = *puVar2;
    *puVar2 = *puVar2 + 1;
    UNLOCK();
  }
  *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
  return uVar3;
}



############ FUN_ 18122bfb0 size=373 ############

void FUN_18122bfb0(longlong *param_1)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  uint uVar5;
  longlong lVar6;
  uint uVar7;
  longlong *plVar8;
  ulonglong uVar9;
  longlong lVar10;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  uVar7 = *(int *)((longlong)param_1 + 0xc) - 1;
  if (-1 < (int)uVar7) {
    lVar6 = (longlong)(int)uVar7 * 8;
    lVar10 = lVar6;
    do {
      if ((*(int *)(*(longlong *)(*param_1 + lVar6) + -0x10) == 0) &&
         (uVar7 < *(uint *)((longlong)param_1 + 0xc))) {
        plVar4 = (longlong *)(*param_1 + lVar10);
        uVar5 = (*(uint *)((longlong)param_1 + 0xc) - uVar7) - 1;
        if (0 < (int)uVar5) {
          uVar9 = (ulonglong)uVar5;
          plVar8 = plVar4;
          do {
            plVar8 = plVar8 + 1;
            lVar2 = *plVar4;
            *plVar4 = *plVar8;
            plVar4 = plVar4 + 1;
            *plVar8 = lVar2;
            uVar9 = uVar9 - 1;
          } while (uVar9 != 0);
        }
        _Memory = (uint *)(*plVar4 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar5 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
        iVar1 = *(int *)((longlong)param_1 + 0xc);
        iVar3 = 0;
        if (0 < iVar1 * 2) {
          iVar3 = iVar1 * 2;
        }
        if (iVar3 < (int)param_1[1]) {
          if (iVar1 < 8) {
            iVar1 = 8;
          }
          if (iVar1 < (int)param_1[1]) {
            FUN_18048a300(param_1);
          }
        }
      }
      lVar10 = lVar10 + -8;
      lVar6 = lVar6 + -8;
      uVar7 = uVar7 - 1;
    } while (-1 < (int)uVar7);
  }
  uVar7 = DAT_1826737fc;
  if (DAT_1826737fc == 0) {
    uVar7 = timeGetTime();
    if (uVar7 < DAT_1826737fc) {
      if (uVar7 < DAT_1826737fc - 1000) {
        LOCK();
        UNLOCK();
        DAT_1826737fc = uVar7;
      }
    }
    else {
      LOCK();
      UNLOCK();
      DAT_1826737fc = uVar7;
    }
  }
  *(uint *)((longlong)param_1 + 0x3c) = uVar7;
                    /* WARNING: Could not recover jumptable at 0x00018122c11e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  return;
}



############ FUN_ 18122d110 size=536 ############

int FUN_18122d110(longlong *param_1,byte *param_2,undefined8 param_3,undefined8 param_4)

{
  byte *pbVar1;
  byte bVar2;
  byte bVar3;
  int iVar4;
  byte bVar5;
  uint uVar6;
  undefined4 *puVar7;
  uint uVar8;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  uint uVar12;
  size_t _Size;
  bool bVar13;
  
  iVar11 = 0;
  if (*param_2 == 0) {
    return 0;
  }
LAB_18122d150:
  uVar12 = 0;
  pbVar10 = param_2;
  if (*param_2 != 0) {
    do {
      iVar9 = 0;
      bVar2 = *pbVar10;
      pbVar10 = pbVar10 + 1;
      uVar8 = (uint)bVar2;
      if ((char)bVar2 < '\0') {
        uVar6 = 0x40;
        uVar8 = 0x7f;
        iVar4 = 0;
        if ((bVar2 & 0x40) != 0) {
          do {
            iVar9 = iVar4;
            if (uVar6 < 9) break;
            uVar8 = uVar8 >> 1;
            iVar9 = iVar9 + 1;
            uVar6 = uVar6 >> 1;
            iVar4 = iVar9;
          } while ((bVar2 & uVar6) != 0);
        }
        uVar8 = bVar2 & uVar8;
        for (; (iVar9 = iVar9 + -1, -1 < iVar9 && ((*pbVar10 & 0xc0) == 0x80));
            pbVar10 = pbVar10 + 1) {
          uVar8 = *pbVar10 & 0x3f | uVar8 << 6;
        }
      }
      if ((uVar12 == 0) && (iVar9 = FUN_18049bc80(param_3,uVar8), -1 < iVar9)) {
        iVar9 = 0;
        goto LAB_18122d210;
      }
      iVar9 = FUN_18049bc80(param_4);
      uVar6 = uVar12;
      if (((-1 < iVar9) && (uVar6 = uVar8, uVar12 != 0)) && (uVar6 = uVar12, uVar12 == uVar8)) {
        uVar6 = 0;
      }
      uVar12 = uVar6;
    } while (*pbVar10 != 0);
    goto LAB_18122d224;
  }
  puVar7 = (undefined4 *)&DAT_1821dbf98;
  goto LAB_18122d263;
  while (iVar9 = iVar9 + 1, iVar9 < 4) {
LAB_18122d210:
    pbVar1 = pbVar10 + -1;
    pbVar10 = pbVar10 + -1;
    if ((*pbVar1 & 0xc0) != 0x80) break;
  }
LAB_18122d224:
  _Size = (longlong)pbVar10 - (longlong)param_2;
  puVar7 = (undefined4 *)thunk_FUN_1811316e0();
  LOCK();
  *puVar7 = 0;
  UNLOCK();
  *(size_t *)(puVar7 + 2) = _Size + 4 & 0xfffffffffffffffc;
  puVar7 = puVar7 + 4;
  memcpy(puVar7,param_2,_Size);
  *(undefined1 *)((longlong)puVar7 + _Size) = 0;
  param_2 = pbVar10;
LAB_18122d263:
  if ((int)param_1[1] < *(int *)((longlong)param_1 + 0xc) + 1) {
    FUN_18048a300(param_1);
  }
  iVar9 = *(int *)((longlong)param_1 + 0xc);
  *(int *)((longlong)param_1 + 0xc) = iVar9 + 1;
  *(undefined4 **)(*param_1 + (longlong)iVar9 * 8) = puVar7;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar12 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar13 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar12;
    if (bVar13) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  bVar2 = *param_2;
  iVar11 = iVar11 + 1;
  if (bVar2 == 0) {
    return iVar11;
  }
  param_2 = param_2 + 1;
  if ((char)bVar2 < '\0') {
    bVar5 = 0x40;
    bVar3 = bVar2 & 0x40;
    while ((bVar3 != 0 && (8 < bVar5))) {
      param_2 = param_2 + 1;
      bVar5 = bVar5 >> 1;
      bVar3 = bVar2 & bVar5;
    }
  }
  goto LAB_18122d150;
}



############ FUN_ 181240a50 size=311 ############

int FUN_181240a50(undefined8 param_1,longlong *param_2,undefined4 param_3,undefined8 param_4,
                 undefined8 param_5)

{
  int iVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  longlong *plVar5;
  int iVar6;
  undefined1 local_58 [56];
  longlong local_20;
  longlong local_18 [2];
  
  iVar6 = 0;
  FUN_181242e90(local_58,param_1,0,param_5,param_3);
  cVar3 = FUN_1812425c0(local_58,0,0,0,0,0,0);
  while (cVar3 != '\0') {
    if ((local_20 == 0) || (*(char *)(local_20 + 0x35) == '\0')) {
      plVar5 = local_18;
    }
    else {
      plVar5 = (longlong *)FUN_181242590();
    }
    iVar1 = *(int *)((longlong)param_2 + 0xc);
    iVar4 = iVar1 + 1;
    if ((int)param_2[1] < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iVar1 + 2;
      }
      FUN_18048a300(param_2,iVar1 + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iVar4 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar4 + 1;
    lVar2 = *plVar5;
    *(longlong *)(*param_2 + (longlong)iVar4 * 8) = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    iVar6 = iVar6 + 1;
    cVar3 = FUN_1812425c0(local_58,0,0,0,0,0,0);
  }
  FUN_181242dc0(local_58);
  return iVar6;
}



############ FUN_ 18122d5d0 size=328 ############

void FUN_18122d5d0(longlong *param_1)

{
  byte bVar1;
  int iVar2;
  longlong lVar3;
  byte bVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  byte bVar8;
  uint *_Memory;
  longlong *plVar9;
  uint uVar10;
  longlong lVar11;
  longlong lVar12;
  longlong *plVar13;
  ulonglong uVar14;
  
  uVar10 = *(int *)((longlong)param_1 + 0xc) - 1;
  if (-1 < (int)uVar10) {
    lVar11 = (longlong)(int)uVar10 * 8;
    lVar12 = lVar11;
    do {
      pbVar7 = *(byte **)(*param_1 + lVar12);
      bVar1 = *pbVar7;
      while (bVar1 != 0) {
        if ((bVar1 != 0x20) && (4 < (byte)(bVar1 - 9))) goto LAB_18122d6f2;
        pbVar7 = pbVar7 + 1;
        if ((char)bVar1 < '\0') {
          bVar8 = 0x40;
          bVar4 = bVar1 & 0x40;
          while ((bVar4 != 0 && (8 < bVar8))) {
            pbVar7 = pbVar7 + 1;
            bVar8 = bVar8 >> 1;
            bVar4 = bVar1 & bVar8;
          }
        }
        bVar1 = *pbVar7;
      }
      if (uVar10 < *(uint *)((longlong)param_1 + 0xc)) {
        plVar9 = (longlong *)(*param_1 + lVar11);
        uVar5 = (*(uint *)((longlong)param_1 + 0xc) - uVar10) - 1;
        if (0 < (int)uVar5) {
          uVar14 = (ulonglong)uVar5;
          plVar13 = plVar9;
          do {
            plVar13 = plVar13 + 1;
            lVar3 = *plVar9;
            *plVar9 = *plVar13;
            plVar9 = plVar9 + 1;
            *plVar13 = lVar3;
            uVar14 = uVar14 - 1;
          } while (uVar14 != 0);
        }
        _Memory = (uint *)(*plVar9 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar5 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
        iVar2 = *(int *)((longlong)param_1 + 0xc);
        iVar6 = 0;
        if (0 < iVar2 * 2) {
          iVar6 = iVar2 * 2;
        }
        if (iVar6 < (int)param_1[1]) {
          if (iVar2 < 8) {
            iVar2 = 8;
          }
          if (iVar2 < (int)param_1[1]) {
            FUN_18048a300(param_1);
          }
        }
      }
LAB_18122d6f2:
      lVar11 = lVar11 + -8;
      lVar12 = lVar12 + -8;
      uVar10 = uVar10 - 1;
    } while (-1 < (int)uVar10);
  }
  return;
}



############ FUN_ 18122cec0 size=571 ############

int FUN_18122cec0(longlong *param_1,byte *param_2)

{
  byte bVar1;
  int iVar2;
  byte bVar3;
  byte bVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint uVar7;
  byte *pbVar8;
  byte *pbVar9;
  ulonglong uVar10;
  int iVar11;
  longlong lVar12;
  int iVar13;
  size_t _Size;
  bool bVar14;
  bool bVar15;
  
  iVar13 = 0;
  bVar14 = *param_2 == 0;
  do {
    pbVar9 = param_2;
    if (bVar14) {
      return iVar13;
    }
    do {
      pbVar8 = pbVar9;
      bVar1 = *pbVar8;
      pbVar9 = pbVar8 + 1;
      uVar7 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar6 = 0x40;
        iVar11 = 0;
        uVar7 = 0x7f;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar6 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar11 = iVar11 + 1;
            uVar6 = uVar6 >> 1;
          } while ((bVar1 & uVar6) != 0);
        }
        uVar7 = bVar1 & uVar7;
        for (; (iVar11 = iVar11 + -1, -1 < iVar11 && ((*pbVar9 & 0xc0) == 0x80));
            pbVar9 = pbVar9 + 1) {
          uVar7 = *pbVar9 & 0x3f | uVar7 << 6;
        }
      }
      if (uVar7 == 0) {
        bVar14 = true;
        goto LAB_18122d018;
      }
      if (uVar7 == 10) goto LAB_18122d018;
    } while (uVar7 != 0xd);
    bVar1 = *pbVar9;
    uVar7 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar7 = 0x7f;
      uVar10 = 0x7f;
      iVar11 = 0;
      uVar6 = 0x40;
      if ((bVar1 & 0x40) != 0) {
        do {
          uVar7 = (uint)uVar10;
          if (uVar6 < 9) break;
          uVar10 = uVar10 >> 1;
          uVar7 = (uint)uVar10;
          iVar11 = iVar11 + 1;
          uVar6 = uVar6 >> 1;
        } while ((bVar1 & uVar6) != 0);
      }
      uVar7 = bVar1 & uVar7;
      lVar12 = 1;
      if (0 < (longlong)iVar11) {
        do {
          if ((pbVar9[lVar12] & 0xc0) != 0x80) break;
          uVar7 = pbVar9[lVar12] & 0x3f | uVar7 << 6;
          lVar12 = lVar12 + 1;
        } while (lVar12 <= iVar11);
      }
    }
    if ((uVar7 == 10) && (pbVar9 = pbVar9 + 1, (char)bVar1 < '\0')) {
      bVar4 = 0x40;
      bVar3 = bVar1 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar9 = pbVar9 + 1;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar1 & bVar4;
      }
    }
LAB_18122d018:
    if ((param_2 == (byte *)0x0) || (*param_2 == 0)) {
      puVar5 = (undefined4 *)&DAT_1821dbf98;
    }
    else {
      _Size = (longlong)pbVar8 - (longlong)param_2;
      uVar10 = _Size + 4 & 0xfffffffffffffffc;
      puVar5 = (undefined4 *)thunk_FUN_1811316e0(uVar10 + 0x17);
      LOCK();
      *puVar5 = 0;
      UNLOCK();
      *(ulonglong *)(puVar5 + 2) = uVar10;
      puVar5 = puVar5 + 4;
      memcpy(puVar5,param_2,_Size);
      *(undefined1 *)((longlong)puVar5 + _Size) = 0;
    }
    iVar2 = *(int *)((longlong)param_1 + 0xc);
    iVar11 = iVar2 + 1;
    if ((int)param_1[1] < iVar11) {
      if (iVar11 < 0) {
        iVar11 = iVar2 + 2;
      }
      FUN_18048a300(param_1,iVar2 + 9 + (iVar11 >> 1) & 0xfffffff8);
    }
    iVar11 = *(int *)((longlong)param_1 + 0xc);
    *(int *)((longlong)param_1 + 0xc) = iVar11 + 1;
    *(undefined4 **)(*param_1 + (longlong)iVar11 * 8) = puVar5;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar7 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar15 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar7;
      if (bVar15) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    iVar13 = iVar13 + 1;
    param_2 = pbVar9;
  } while( true );
}



############ FUN_ 18049d400 size=167 ############

void FUN_18049d400(longlong *param_1,undefined8 param_2,int param_3)

{
  longlong lVar1;
  int iVar2;
  undefined **ppuVar3;
  
  if (0 < param_3) {
    iVar2 = *(int *)((longlong)param_1 + 0xc) + param_3;
    if ((int)param_1[1] < iVar2) {
      FUN_18048a300(param_1,iVar2 + 8 + iVar2 / 2 & 0xfffffff8);
    }
    ppuVar3 = &PTR_DAT_18235baa0;
    lVar1 = *param_1 + (longlong)*(int *)((longlong)param_1 + 0xc) * 8;
    iVar2 = param_3;
    while (iVar2 = iVar2 + -1, -1 < iVar2) {
      FUN_18049c4e0(lVar1,*ppuVar3);
      ppuVar3 = ppuVar3 + 1;
      lVar1 = lVar1 + 8;
    }
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + param_3;
  }
  return;
}



############ FUN_ 180511cb0 size=137 ############

longlong * FUN_180511cb0(undefined8 param_1,longlong *param_2)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  longlong *local_res10 [3];
  
  local_res10[0] = param_2;
  FUN_18049c4e0(local_res10,"Software Renderer");
  *param_2 = 0;
  param_2[1] = 0;
  FUN_18048a300(param_2,8);
  iVar2 = *(int *)((longlong)param_2 + 0xc);
  *(int *)((longlong)param_2 + 0xc) = iVar2 + 1;
  *(longlong **)(*param_2 + (longlong)iVar2 * 8) = local_res10[0];
  _Memory = (uint *)(local_res10[0] + -2);
  if ((*(uint *)(local_res10[0] + -2) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 1812b22b0 size=330 ############

void FUN_1812b22b0(undefined8 param_1,char *param_2)

{
  uint *_Memory;
  undefined4 *puVar1;
  uint uVar2;
  longlong lVar3;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  char *local_res10 [3];
  longlong local_40;
  undefined8 local_38;
  undefined4 *local_30;
  int local_24;
  
  local_40 = 0;
  local_38 = 0;
  local_res10[0] = param_2;
  FUN_1812b44e0(param_1,&local_30);
  puVar1 = local_30 + local_24;
  puVar5 = local_30;
  do {
    if (puVar5 == puVar1) {
                    /* WARNING: Subroutine does not return */
      free(local_30);
    }
    FUN_1812b2440(local_res10,*puVar5);
    if (*local_res10[0] != '\0') {
      if ((*(uint *)(local_res10[0] + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10[0] + -0x10) = *(int *)(local_res10[0] + -0x10) + 1;
        UNLOCK();
      }
      iVar4 = local_38._4_4_ + 1;
      if ((int)local_38 < iVar4) {
        if (iVar4 < 0) {
          iVar4 = local_38._4_4_ + 2;
        }
        FUN_18048a300(&local_40,local_38._4_4_ + 9 + (iVar4 >> 1) & 0xfffffff8);
      }
      lVar3 = (longlong)local_38._4_4_;
      local_38 = CONCAT44(local_38._4_4_ + 1,(int)local_38);
      *(char **)(local_40 + lVar3 * 8) = local_res10[0];
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar2 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar6 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar2;
        if (bVar6) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
    }
    _Memory = (uint *)(local_res10[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar5 = puVar5 + 1;
  } while( true );
}



############ FUN_ 180554470 size=1593 ############

void FUN_180554470(longlong *param_1)

{
  longlong *plVar1;
  int iVar2;
  MMRESULT MVar3;
  undefined8 *puVar4;
  undefined1 **ppuVar5;
  int iVar6;
  longlong lVar7;
  uint *_Memory;
  undefined1 **ppuVar8;
  longlong *plVar9;
  HMIDIOUT pHVar10;
  undefined1 **ppuVar11;
  uint uVar12;
  HMIDIOUT hmo;
  HMIDIOUT pHVar13;
  ulonglong uVar14;
  undefined8 *puVar15;
  uint uVar16;
  HMIDIOUT pHVar17;
  bool bVar18;
  undefined1 auStack_608 [32];
  undefined1 *local_5e8;
  undefined1 **local_5d8;
  undefined8 local_5d0;
  longlong local_5c8;
  uint local_5c0;
  uint local_5bc;
  uint local_5b8 [2];
  char *local_5b0;
  undefined1 *local_5a8;
  longlong *local_5a0;
  undefined8 *local_590;
  uint local_584;
  longlong *local_580;
  undefined1 *local_578;
  undefined1 *local_570;
  undefined8 local_568;
  undefined8 local_558;
  undefined8 uStack_550;
  undefined8 local_548;
  undefined8 uStack_540;
  undefined8 local_538;
  undefined8 uStack_530;
  undefined8 local_528;
  undefined8 uStack_520;
  undefined8 local_518;
  undefined8 uStack_510;
  undefined4 local_508;
  undefined8 local_4f8;
  undefined8 uStack_4f0;
  undefined8 local_4e8;
  undefined8 uStack_4e0;
  undefined8 local_4d8;
  undefined8 uStack_4d0;
  undefined4 local_4c8;
  undefined4 uStack_4c4;
  undefined4 uStack_4c0;
  undefined4 uStack_4bc;
  undefined4 local_4b8;
  undefined4 uStack_4b4;
  undefined4 uStack_4b0;
  undefined4 uStack_4ac;
  undefined4 local_4a8;
  undefined8 local_498 [12];
  undefined1 local_438 [1024];
  ulonglong local_38;
  
  local_568 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_608;
  pHVar17 = (HMIDIOUT)0x0;
  local_5c8 = 0;
  local_5c0 = 0;
  local_5bc = 0;
  local_5d8 = (undefined1 **)0x0;
  local_5d0 = 0;
  local_5a0 = param_1;
  local_580 = param_1;
  FUN_180553c40(&local_590);
  uVar14 = (ulonglong)_tls_index;
  if (0 < (int)local_584) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + uVar14 * 8);
    pHVar10 = pHVar17;
    hmo = pHVar17;
    pHVar13 = pHVar17;
    puVar15 = local_590;
    while( true ) {
      uVar16 = (uint)pHVar10;
      uVar12 = (uint)hmo;
      if (uVar12 < local_584) {
        local_558 = *puVar15;
        uStack_550 = puVar15[1];
        local_548 = puVar15[2];
        uStack_540 = puVar15[3];
        local_538 = puVar15[4];
        uStack_530 = puVar15[5];
        local_528 = puVar15[6];
        uStack_520 = puVar15[7];
        local_518 = puVar15[8];
        uStack_510 = puVar15[9];
        local_508 = *(undefined4 *)(puVar15 + 10);
        puVar4 = &local_558;
      }
      else {
        memset(local_498,0,0x54);
        puVar4 = local_498;
      }
      local_4f8 = *puVar4;
      uStack_4f0 = puVar4[1];
      local_4e8 = puVar4[2];
      uStack_4e0 = puVar4[3];
      local_4d8 = puVar4[4];
      uStack_4d0 = puVar4[5];
      local_4c8 = *(undefined4 *)(puVar4 + 6);
      uStack_4c4 = *(undefined4 *)((longlong)puVar4 + 0x34);
      uStack_4c0 = *(undefined4 *)(puVar4 + 7);
      uStack_4bc = *(undefined4 *)((longlong)puVar4 + 0x3c);
      local_4b8 = *(undefined4 *)(puVar4 + 8);
      uStack_4b4 = *(undefined4 *)((longlong)puVar4 + 0x44);
      uStack_4b0 = *(undefined4 *)(puVar4 + 9);
      uStack_4ac = *(undefined4 *)((longlong)puVar4 + 0x4c);
      local_4a8 = *(undefined4 *)(puVar4 + 10);
      FUN_18049c800(&local_5a8,&uStack_4f0);
      iVar6 = uVar16 + 1;
      if ((int)pHVar13 < iVar6) {
        if (iVar6 < 0) {
          iVar6 = uVar16 + 2;
        }
        FUN_18048a300(&local_5c8,uVar16 + 9 + (iVar6 >> 1) & 0xfffffff8);
        uVar16 = local_5bc;
      }
      local_5bc = uVar16 + 1;
      *(undefined1 **)(local_5c8 + (longlong)(int)uVar16 * 8) = local_5a8;
      local_5a8 = &DAT_1821dbf98;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar16 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar18 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar16;
        if (bVar18) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      local_5b8[0] = 0;
      MVar3 = midiOutMessage(hmo,0x80d,(DWORD_PTR)local_5b8,0);
      if (((MVar3 == 0) && (memset(local_438,0,0x400), local_5b8[0] < 0x400)) &&
         (MVar3 = midiOutMessage(hmo,0x80c,(DWORD_PTR)local_438,0x400), MVar3 == 0)) {
        FUN_18049c800(&local_5b0,local_438);
      }
      else {
        local_5b0 = "";
      }
      if (*local_5b0 == '\0') {
        if (uVar12 < local_5bc) {
          ppuVar5 = (undefined1 **)(local_5c8 + (longlong)(int)uVar12 * 8);
        }
        else {
          if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar5 = &DAT_18267af68;
        }
        local_5a0 = (longlong *)*ppuVar5;
        if ((*(uint *)(local_5a0 + -2) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_5a0 + -2) = (int)local_5a0[-2] + 1;
          UNLOCK();
        }
        iVar6 = local_5d0._4_4_ + 1;
        if ((int)local_5d0 < iVar6) {
          if (iVar6 < 0) {
            iVar6 = local_5d0._4_4_ + 2;
          }
          FUN_18048a300(&local_5d8,local_5d0._4_4_ + 9 + (iVar6 >> 1) & 0xfffffff8);
        }
        lVar7 = (longlong)(int)local_5d0._4_4_;
        local_5d0 = CONCAT44(local_5d0._4_4_ + 1,(int)local_5d0);
        local_5d8[lVar7] = (undefined1 *)local_5a0;
      }
      else {
        if ((*(uint *)(local_5b0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_5b0 + -0x10) = *(int *)(local_5b0 + -0x10) + 1;
          UNLOCK();
        }
        iVar6 = local_5d0._4_4_ + 1;
        if ((int)local_5d0 < iVar6) {
          if (iVar6 < 0) {
            iVar6 = local_5d0._4_4_ + 2;
          }
          FUN_18048a300(&local_5d8,local_5d0._4_4_ + 9 + (iVar6 >> 1) & 0xfffffff8);
        }
        lVar7 = (longlong)(int)local_5d0._4_4_;
        local_5d0 = CONCAT44(local_5d0._4_4_ + 1,(int)local_5d0);
        local_5d8[lVar7] = local_5b0;
      }
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar16 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar18 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar16;
        if (bVar18) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      _Memory = (uint *)(local_5b0 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar16 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar16 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      hmo = (HMIDIOUT)(ulonglong)(uVar12 + 1);
      puVar15 = (undefined8 *)((longlong)puVar15 + 0x54);
      if ((int)local_584 <= (int)(uVar12 + 1)) break;
      pHVar10 = (HMIDIOUT)(ulonglong)local_5bc;
      pHVar13 = (HMIDIOUT)(ulonglong)local_5c0;
    }
    uVar14 = (ulonglong)_tls_index;
    param_1 = local_580;
  }
  local_5e8 = &DAT_18249336a;
  FUN_18122cad0(&local_5c8);
  local_5e8 = &DAT_18249336a;
  FUN_18122cad0(&local_5d8);
  *param_1 = 0;
  param_1[1] = 0;
  if (0 < (int)local_5bc) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + uVar14 * 8);
    lVar7 = local_5c8 - (longlong)local_5d8;
    bVar18 = local_5bc != 0;
    ppuVar5 = local_5d8;
    do {
      if (bVar18) {
        ppuVar11 = (undefined1 **)(lVar7 + (longlong)ppuVar5);
      }
      else {
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar11 = &DAT_18267af68;
      }
      ppuVar8 = ppuVar5;
      if (local_5d0._4_4_ <= (uint)pHVar17) {
        if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar8 = &DAT_18267af68;
      }
      local_578 = *ppuVar11;
      if ((*(uint *)(local_578 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_578 + -0x10) = *(int *)(local_578 + -0x10) + 1;
        UNLOCK();
      }
      local_570 = *ppuVar8;
      if ((*(uint *)(local_570 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_570 + -0x10) = *(int *)(local_570 + -0x10) + 1;
        UNLOCK();
      }
      iVar2 = *(int *)((longlong)param_1 + 0xc);
      iVar6 = iVar2 + 1;
      if ((int)param_1[1] < iVar6) {
        if (iVar6 < 0) {
          iVar6 = iVar2 + 2;
        }
        FUN_180555cf0(param_1,iVar2 + 9 + (iVar6 >> 1) & 0xfffffff8);
      }
      iVar6 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar6 + 1;
      plVar9 = (longlong *)((longlong)iVar6 * 0x10 + *param_1);
      *plVar9 = (longlong)local_578;
      plVar9[1] = (longlong)local_570;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar16 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar18 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar16;
        if (bVar18) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar16 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar18 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar16;
        if (bVar18) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      uVar16 = (uint)pHVar17 + 1;
      pHVar17 = (HMIDIOUT)(ulonglong)uVar16;
      ppuVar5 = ppuVar5 + 1;
      bVar18 = uVar16 < local_5bc;
    } while ((int)uVar16 < (int)local_5bc);
  }
                    /* WARNING: Subroutine does not return */
  free(local_590);
}



############ FUN_ 180554b70 size=1931 ############

void FUN_180554b70(longlong *param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  UINT UVar3;
  MMRESULT MVar4;
  uint uVar5;
  int iVar6;
  undefined8 *_Memory;
  undefined8 *puVar7;
  undefined1 **ppuVar8;
  int iVar9;
  undefined8 *puVar10;
  longlong lVar11;
  uint *_Memory_00;
  undefined1 **ppuVar12;
  longlong *plVar13;
  undefined1 **ppuVar14;
  uint uVar15;
  HMIDIIN pHVar16;
  undefined8 *puVar17;
  undefined8 *puVar18;
  HMIDIIN hmi;
  bool bVar19;
  undefined1 auStack_628 [32];
  undefined1 *local_608;
  undefined1 **local_5f8;
  undefined8 local_5f0;
  longlong local_5e8;
  undefined8 local_5e0;
  uint local_5d8 [2];
  char *local_5d0;
  undefined8 *local_5c8;
  undefined8 local_5c0;
  undefined1 *local_5b8;
  longlong *local_5b0;
  longlong *local_5a0;
  undefined1 *local_598;
  undefined1 *local_590;
  undefined8 local_588;
  tagMIDIINCAPSW local_578;
  undefined8 local_528;
  undefined8 local_520;
  undefined8 local_518;
  undefined8 local_510;
  undefined8 local_508;
  undefined8 local_500;
  undefined8 local_4f8;
  undefined8 local_4f0;
  undefined8 local_4e8;
  undefined4 local_4e0;
  undefined8 local_4d8;
  undefined8 uStack_4d0;
  undefined8 local_4c8;
  undefined8 uStack_4c0;
  undefined8 local_4b8;
  undefined8 uStack_4b0;
  undefined8 local_4a8;
  undefined8 uStack_4a0;
  undefined8 local_498;
  undefined4 local_490;
  undefined8 local_488;
  undefined8 uStack_480;
  undefined8 local_478;
  undefined8 uStack_470;
  undefined8 local_468;
  undefined8 uStack_460;
  undefined4 local_458;
  undefined4 uStack_454;
  undefined4 uStack_450;
  undefined4 uStack_44c;
  undefined8 local_448;
  undefined4 local_440;
  undefined1 local_438 [1024];
  ulonglong local_38;
  
  local_588 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_628;
  _Memory = (undefined8 *)0x0;
  local_5e8 = 0;
  local_5e0 = 0;
  local_5f8 = (undefined1 **)0x0;
  local_5f0 = 0;
  local_5c8 = (undefined8 *)0x0;
  local_5c0 = 0;
  local_5b0 = param_1;
  local_5a0 = param_1;
  UVar3 = midiInGetNumDevs();
  puVar17 = _Memory;
  puVar7 = _Memory;
  puVar18 = _Memory;
  if (UVar3 != 0) {
    do {
      local_578.wMid = 0;
      local_578.wPid = 0;
      local_578.vDriverVersion = 0;
      local_578.szPname[0] = L'\0';
      local_578.szPname[1] = L'\0';
      local_578.szPname[2] = L'\0';
      local_578.szPname[3] = L'\0';
      local_578.szPname[4] = L'\0';
      local_578.szPname[5] = L'\0';
      local_578.szPname[6] = L'\0';
      local_578.szPname[7] = L'\0';
      local_578.szPname[8] = L'\0';
      local_578.szPname[9] = L'\0';
      local_578.szPname[10] = L'\0';
      local_578.szPname[0xb] = L'\0';
      local_578.szPname[0xc] = L'\0';
      local_578.szPname[0xd] = L'\0';
      local_578.szPname[0xe] = L'\0';
      local_578.szPname[0xf] = L'\0';
      local_578.szPname[0x10] = L'\0';
      local_578.szPname[0x11] = L'\0';
      local_578.szPname[0x12] = L'\0';
      local_578.szPname[0x13] = L'\0';
      local_578.szPname[0x14] = L'\0';
      local_578.szPname[0x15] = L'\0';
      local_578.szPname[0x16] = L'\0';
      local_578.szPname[0x17] = L'\0';
      local_578.szPname[0x18] = L'\0';
      local_578.szPname[0x19] = L'\0';
      local_578.szPname[0x1a] = L'\0';
      local_578.szPname[0x1b] = L'\0';
      local_578.szPname[0x1c] = L'\0';
      local_578.szPname[0x1d] = L'\0';
      local_578.szPname[0x1e] = L'\0';
      local_578.szPname[0x1f] = L'\0';
      local_578.dwSupport = 0;
      MVar4 = midiInGetDevCapsW((UINT_PTR)puVar7,&local_578,0x4c);
      if (MVar4 == 0) {
        iVar6 = (int)puVar18;
        uVar15 = iVar6 + 1;
        if ((int)(uint)puVar17 < (int)uVar15) {
          uVar5 = uVar15;
          if ((int)uVar15 < 0) {
            uVar5 = iVar6 + 2;
          }
          uVar5 = iVar6 + 9 + ((int)uVar5 >> 1) & 0xfffffff8;
          if ((uint)puVar17 != uVar5) {
            if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
            if (_Memory == (undefined8 *)0x0) {
              _Memory = malloc((longlong)(int)uVar5 * 0x4c);
              local_5c8 = _Memory;
            }
            else {
              _Memory = realloc(_Memory,(longlong)(int)uVar5 * 0x4c);
              local_5c8 = _Memory;
            }
          }
          puVar17 = (undefined8 *)(ulonglong)uVar5;
        }
        puVar18 = (undefined8 *)(ulonglong)uVar15;
        puVar10 = (undefined8 *)((longlong)iVar6 * 0x4c + (longlong)_Memory);
        *puVar10 = local_578._0_8_;
        puVar10[1] = local_578.szPname._0_8_;
        puVar10[2] = local_578.szPname._8_8_;
        puVar10[3] = local_578.szPname._16_8_;
        puVar10[4] = local_578.szPname._24_8_;
        puVar10[5] = local_578.szPname._32_8_;
        puVar10[6] = local_578.szPname._40_8_;
        puVar10[7] = local_578.szPname._48_8_;
        puVar10[8] = local_578.szPname._56_8_;
        *(DWORD *)(puVar10 + 9) = local_578.dwSupport;
      }
      uVar15 = (int)puVar7 + 1;
      UVar3 = midiInGetNumDevs();
      puVar7 = (undefined8 *)(ulonglong)uVar15;
    } while (uVar15 < UVar3);
    local_5c0._4_4_ = (uint)puVar18;
    local_5c0 = CONCAT44(local_5c0._4_4_,(int)puVar17);
    puVar7 = (undefined8 *)(local_5e0 >> 0x20);
    puVar17 = (undefined8 *)(local_5e0 & 0xffffffff);
  }
  pHVar16 = (HMIDIIN)0x0;
  if (0 < (int)puVar18) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    puVar10 = _Memory;
    hmi = pHVar16;
    while( true ) {
      iVar6 = (int)puVar7;
      uVar15 = (uint)hmi;
      if (uVar15 < (uint)puVar18) {
        local_4d8 = *puVar10;
        uStack_4d0 = puVar10[1];
        local_4c8 = puVar10[2];
        uStack_4c0 = puVar10[3];
        local_4b8 = puVar10[4];
        uStack_4b0 = puVar10[5];
        local_4a8 = puVar10[6];
        uStack_4a0 = puVar10[7];
        local_498 = puVar10[8];
        local_490 = *(undefined4 *)(puVar10 + 9);
        puVar7 = &local_4d8;
      }
      else {
        local_528 = 0;
        local_520 = 0;
        local_518 = 0;
        local_510 = 0;
        local_508 = 0;
        local_500 = 0;
        local_4f8 = 0;
        local_4f0 = 0;
        local_4e8 = 0;
        local_4e0 = 0;
        puVar7 = &local_528;
      }
      local_488 = *puVar7;
      uStack_480 = puVar7[1];
      local_478 = puVar7[2];
      uStack_470 = puVar7[3];
      local_468 = puVar7[4];
      uStack_460 = puVar7[5];
      local_458 = *(undefined4 *)(puVar7 + 6);
      uStack_454 = *(undefined4 *)((longlong)puVar7 + 0x34);
      uStack_450 = *(undefined4 *)(puVar7 + 7);
      uStack_44c = *(undefined4 *)((longlong)puVar7 + 0x3c);
      local_448 = puVar7[8];
      local_440 = *(undefined4 *)(puVar7 + 9);
      FUN_18049c800(&local_5b8,&uStack_480);
      iVar9 = iVar6 + 1;
      if ((int)puVar17 < iVar9) {
        if (iVar9 < 0) {
          iVar9 = iVar6 + 2;
        }
        FUN_18048a300(&local_5e8,iVar6 + 9 + (iVar9 >> 1) & 0xfffffff8);
        iVar6 = local_5e0._4_4_;
      }
      local_5e0 = CONCAT44(iVar6 + 1,(undefined4)local_5e0);
      *(undefined1 **)(local_5e8 + (longlong)iVar6 * 8) = local_5b8;
      local_5b8 = &DAT_1821dbf98;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar5 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar19 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar5;
        if (bVar19) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      local_5d8[0] = 0;
      MVar4 = midiInMessage(hmi,0x80d,(DWORD_PTR)local_5d8,0);
      if (((MVar4 == 0) && (memset(local_438,0,0x400), local_5d8[0] < 0x400)) &&
         (MVar4 = midiInMessage(hmi,0x80c,(DWORD_PTR)local_438,0x400), MVar4 == 0)) {
        FUN_18049c800(&local_5d0,local_438);
      }
      else {
        local_5d0 = "";
      }
      if (*local_5d0 == '\0') {
        if (uVar15 < local_5e0._4_4_) {
          ppuVar8 = (undefined1 **)(local_5e8 + (longlong)(int)uVar15 * 8);
        }
        else {
          if ((*(int *)(*plVar1 + 0xc) < DAT_18267af70) &&
             (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
          ppuVar8 = &DAT_18267af68;
        }
        local_5b0 = (longlong *)*ppuVar8;
        if ((*(uint *)(local_5b0 + -2) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_5b0 + -2) = (int)local_5b0[-2] + 1;
          UNLOCK();
        }
        iVar6 = local_5f0._4_4_ + 1;
        if ((int)local_5f0 < iVar6) {
          if (iVar6 < 0) {
            iVar6 = local_5f0._4_4_ + 2;
          }
          FUN_18048a300(&local_5f8,local_5f0._4_4_ + 9 + (iVar6 >> 1) & 0xfffffff8);
        }
        lVar11 = (longlong)(int)local_5f0._4_4_;
        local_5f0 = CONCAT44(local_5f0._4_4_ + 1,(int)local_5f0);
        local_5f8[lVar11] = (undefined1 *)local_5b0;
      }
      else {
        if ((*(uint *)(local_5d0 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_5d0 + -0x10) = *(int *)(local_5d0 + -0x10) + 1;
          UNLOCK();
        }
        iVar6 = local_5f0._4_4_ + 1;
        if ((int)local_5f0 < iVar6) {
          if (iVar6 < 0) {
            iVar6 = local_5f0._4_4_ + 2;
          }
          FUN_18048a300(&local_5f8,local_5f0._4_4_ + 9 + (iVar6 >> 1) & 0xfffffff8);
        }
        lVar11 = (longlong)(int)local_5f0._4_4_;
        local_5f0 = CONCAT44(local_5f0._4_4_ + 1,(int)local_5f0);
        local_5f8[lVar11] = local_5d0;
      }
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar5 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar19 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar5;
        if (bVar19) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      _Memory_00 = (uint *)(local_5d0 + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar5 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      hmi = (HMIDIIN)(ulonglong)(uVar15 + 1);
      puVar10 = (undefined8 *)((longlong)puVar10 + 0x4c);
      puVar18 = (undefined8 *)(ulonglong)local_5c0._4_4_;
      _Memory = local_5c8;
      if ((int)local_5c0._4_4_ <= (int)(uVar15 + 1)) break;
      puVar7 = (undefined8 *)(local_5e0 >> 0x20);
      puVar17 = (undefined8 *)(local_5e0 & 0xffffffff);
    }
  }
  local_608 = &DAT_18249336a;
  FUN_18122cad0(&local_5e8);
  local_608 = &DAT_18249336a;
  FUN_18122cad0(&local_5f8);
  plVar1 = local_5a0;
  *local_5a0 = 0;
  local_5a0[1] = 0;
  if (0 < (int)local_5e0._4_4_) {
    plVar2 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    lVar11 = local_5e8 - (longlong)local_5f8;
    bVar19 = local_5e0._4_4_ != 0;
    ppuVar8 = local_5f8;
    do {
      if (bVar19) {
        ppuVar14 = (undefined1 **)(lVar11 + (longlong)ppuVar8);
      }
      else {
        if ((*(int *)(*plVar2 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar14 = &DAT_18267af68;
      }
      ppuVar12 = ppuVar8;
      if (local_5f0._4_4_ <= (uint)pHVar16) {
        if ((*(int *)(*plVar2 + 0xc) < DAT_18267af70) &&
           (_Init_thread_header(&DAT_18267af70), DAT_18267af70 == -1)) {
          DAT_18267af68 = &DAT_1821dbf98;
          atexit(FUN_181a4a7b0);
          _Init_thread_footer(&DAT_18267af70);
        }
        ppuVar12 = &DAT_18267af68;
      }
      local_598 = *ppuVar14;
      if ((*(uint *)(local_598 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_598 + -0x10) = *(int *)(local_598 + -0x10) + 1;
        UNLOCK();
      }
      local_590 = *ppuVar12;
      if ((*(uint *)(local_590 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_590 + -0x10) = *(int *)(local_590 + -0x10) + 1;
        UNLOCK();
      }
      iVar9 = *(int *)((longlong)plVar1 + 0xc);
      iVar6 = iVar9 + 1;
      if ((int)plVar1[1] < iVar6) {
        if (iVar6 < 0) {
          iVar6 = iVar9 + 2;
        }
        FUN_180555cf0(plVar1,iVar9 + 9 + (iVar6 >> 1) & 0xfffffff8);
      }
      iVar6 = *(int *)((longlong)plVar1 + 0xc);
      *(int *)((longlong)plVar1 + 0xc) = iVar6 + 1;
      plVar13 = (longlong *)((longlong)iVar6 * 0x10 + *plVar1);
      *plVar13 = (longlong)local_598;
      plVar13[1] = (longlong)local_590;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar15 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar19 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar15;
        if (bVar19) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar15 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar19 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar15;
        if (bVar19) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      uVar15 = (uint)pHVar16 + 1;
      pHVar16 = (HMIDIIN)(ulonglong)uVar15;
      ppuVar8 = ppuVar8 + 1;
      bVar19 = uVar15 < local_5e0._4_4_;
      _Memory = local_5c8;
    } while ((int)uVar15 < (int)local_5e0._4_4_);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18122d720 size=116 ############

void FUN_18122d720(longlong param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = *(int *)(param_1 + 0xc);
  iVar3 = param_2 + 2;
  iVar2 = 0;
  iVar4 = 0;
  if ((-1 < iVar3) && (iVar4 = iVar3, iVar1 < iVar3)) {
    iVar4 = iVar1;
  }
  if ((-1 < param_2) && (iVar2 = param_2, iVar1 < param_2)) {
    iVar2 = iVar1;
  }
  if (0 < iVar4 - iVar2) {
    FUN_180489b40();
    iVar1 = *(int *)(param_1 + 0xc);
    iVar4 = 0;
    if (0 < iVar1 * 2) {
      iVar4 = iVar1 * 2;
    }
    if (iVar4 < *(int *)(param_1 + 8)) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < *(int *)(param_1 + 8)) {
        FUN_18048a300(param_1);
      }
    }
  }
  return;
}



############ FUN_ 18122de30 size=187 ############

longlong * FUN_18122de30(longlong *param_1,ulonglong *param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  ulonglong uVar2;
  undefined8 *puVar3;
  ulonglong uVar4;
  
  uVar4 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  iVar1 = (int)((longlong)(param_2[1] - *param_2) >> 3);
  if (0 < iVar1) {
    FUN_18048a300(param_1,iVar1 + 8 + iVar1 / 2 & 0xfffffff8,param_3,param_4,0xfffffffffffffffe);
  }
  puVar3 = (undefined8 *)*param_2;
  uVar2 = (param_2[1] - (longlong)puVar3) + 7 >> 3;
  if ((undefined8 *)param_2[1] < puVar3) {
    uVar2 = uVar4;
  }
  if (uVar2 != 0) {
    do {
      iVar1 = *(int *)((longlong)param_1 + 0xc);
      *(int *)((longlong)param_1 + 0xc) = iVar1 + 1;
      FUN_18049c4e0(*param_1 + (longlong)iVar1 * 8,*puVar3);
      puVar3 = puVar3 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar2);
  }
  return param_1;
}



############ FUN_ 180488fc0 size=176 ############

void FUN_180488fc0(longlong *param_1,uint param_2)

{
  int iVar1;
  longlong lVar2;
  int iVar3;
  uint uVar4;
  uint *_Memory;
  longlong *plVar5;
  longlong *plVar6;
  ulonglong uVar7;
  
  if (param_2 < *(uint *)((longlong)param_1 + 0xc)) {
    uVar4 = (*(uint *)((longlong)param_1 + 0xc) - param_2) - 1;
    plVar6 = (longlong *)(*param_1 + (longlong)(int)param_2 * 8);
    if (0 < (int)uVar4) {
      uVar7 = (ulonglong)uVar4;
      plVar5 = plVar6;
      do {
        plVar5 = plVar5 + 1;
        lVar2 = *plVar6;
        *plVar6 = *plVar5;
        plVar6 = plVar6 + 1;
        *plVar5 = lVar2;
        uVar7 = uVar7 - 1;
      } while (uVar7 != 0);
    }
    _Memory = (uint *)(*plVar6 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar4 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
    iVar1 = *(int *)((longlong)param_1 + 0xc);
    iVar3 = 0;
    if (0 < iVar1 * 2) {
      iVar3 = iVar1 * 2;
    }
    if (iVar3 < (int)param_1[1]) {
      if (iVar1 < 8) {
        iVar1 = 8;
      }
      if (iVar1 < (int)param_1[1]) {
        FUN_18048a300(param_1);
        return;
      }
    }
  }
  return;
}



############ FUN_ 181249460 size=82 ############

longlong * FUN_181249460(longlong *param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(*param_2 + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *param_1;
  *param_1 = *param_2;
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  return param_1;
}



############ FUN_ 18122c880 size=183 ############

void FUN_18122c880(longlong param_1,longlong *param_2,longlong *param_3)

{
  int iVar1;
  longlong local_res8;
  longlong local_res10 [2];
  longlong local_res20;
  
  iVar1 = FUN_1812498b0(param_1,*param_2,*(undefined1 *)(param_1 + 0x20),0,*param_2);
  if (-1 < iVar1) {
    local_res8 = *param_3;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18122dad0(param_1 + 0x10,iVar1,&local_res8);
    return;
  }
  local_res10[0] = *param_2;
  if ((*(uint *)(local_res10[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10[0] + -0x10) = *(int *)(local_res10[0] + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(param_1,local_res10);
  local_res20 = *param_3;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(param_1 + 0x10,&local_res20);
  return;
}



############ FUN_ 1805397a0 size=867 ############

void FUN_1805397a0(longlong param_1,longlong param_2)

{
  uint uVar1;
  short sVar2;
  longlong lVar3;
  int iVar4;
  uint *puVar5;
  uint *_Memory;
  char *pcVar6;
  longlong local_res8 [2];
  longlong local_res18;
  longlong local_res20;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50;
  longlong local_48;
  longlong local_40 [3];
  
  local_40[1] = 0xfffffffffffffffe;
  sVar2 = *(short *)(param_1 + 8);
  FUN_180539b10(param_1,param_2,"apple one shot",*(short *)(param_1 + 0x10) == 2);
  FUN_180539b10();
  if (sVar2 != 0) {
    FUN_18049c4e0(&local_res18,"apple root note");
    FUN_181211fd0(local_res8,*(undefined2 *)(param_1 + 8));
    FUN_18122c880(param_2,&local_res18,local_res8);
    puVar5 = (uint *)(local_res8[0] + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_res18 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  FUN_18049c4e0(&local_88,"apple beats");
  FUN_181211fd0(&local_res20,*(undefined4 *)(param_1 + 4));
  FUN_18122c880(param_2,&local_88,&local_res20);
  puVar5 = (uint *)(local_res20 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_88 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_18049c4e0(&local_78,"apple denominator");
  FUN_181211fd0(&local_80,*(undefined2 *)(param_1 + 0xe));
  FUN_18122c880(param_2,&local_78,&local_80);
  puVar5 = (uint *)(local_80 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_78 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_18049c4e0(&local_68,"apple numerator");
  FUN_181211fd0(&local_70,*(undefined2 *)(param_1 + 0xc));
  FUN_18122c880(param_2,&local_68,&local_70);
  puVar5 = (uint *)(local_70 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_68 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  sVar2 = *(short *)(param_1 + 10);
  if (sVar2 == 1) {
    pcVar6 = "minor";
  }
  else if (sVar2 == 2) {
    pcVar6 = "major";
  }
  else if (sVar2 == 3) {
    pcVar6 = "neither";
  }
  else {
    if (sVar2 != 4) {
      return;
    }
    pcVar6 = "both";
  }
  FUN_18049c4e0(&local_60,pcVar6);
  FUN_18049c4e0(&local_58,"apple key");
  lVar3 = local_58;
  iVar4 = FUN_1812498b0(param_2,local_58,*(undefined1 *)(param_2 + 0x20),0);
  if (iVar4 < 0) {
    local_48 = lVar3;
    if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18122dc00(param_2,&local_48);
    local_40[0] = local_60;
    puVar5 = (uint *)(local_60 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      *puVar5 = *puVar5 + 1;
      UNLOCK();
    }
    FUN_18122dc00(param_2 + 0x10,local_40);
  }
  else {
    local_50 = local_60;
    puVar5 = (uint *)(local_60 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      *puVar5 = *puVar5 + 1;
      UNLOCK();
    }
    FUN_18122dad0(param_2 + 0x10,iVar4,&local_50);
  }
  _Memory = (uint *)(local_58 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return;
}



############ FUN_ 180539b10 size=309 ############

void FUN_180539b10(longlong param_1,longlong param_2,undefined8 param_3,char param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint *_Memory;
  undefined *puVar4;
  uint *_Memory_00;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18 [2];
  longlong local_38;
  longlong local_30 [3];
  
  local_30[1] = 0xfffffffffffffffe;
  puVar4 = &DAT_1824acbf4;
  if (param_4 != '\0') {
    puVar4 = &DAT_18249f074;
  }
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,puVar4);
  FUN_18049c4e0(&local_res10,param_3);
  lVar2 = local_res10;
  iVar3 = FUN_1812498b0(param_2,local_res10,*(undefined1 *)(param_2 + 0x20),0);
  if (iVar3 < 0) {
    local_38 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18122dc00(param_2,&local_38);
    local_30[0] = local_res8;
    _Memory_00 = (uint *)(local_res8 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      *_Memory_00 = *_Memory_00 + 1;
      UNLOCK();
    }
    FUN_18122dc00(param_2 + 0x10,local_30);
  }
  else {
    local_res18[0] = local_res8;
    _Memory_00 = (uint *)(local_res8 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      *_Memory_00 = *_Memory_00 + 1;
      UNLOCK();
    }
    FUN_18122dad0(param_2 + 0x10,iVar3,local_res18);
  }
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  return;
}



############ FUN_ 18053da50 size=328 ############

void FUN_18053da50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  uint *_Memory;
  uint *_Memory_00;
  longlong local_38;
  longlong local_30;
  longlong local_28;
  longlong local_20;
  longlong local_18 [2];
  
  local_18[1] = 0xfffffffffffffffe;
  lVar3 = FUN_181388600(param_2,param_3);
  if (lVar3 != 0) {
    FUN_18049c4e0(&local_38,lVar3);
    FUN_18049c4e0(&local_30,param_4);
    lVar3 = local_30;
    iVar2 = FUN_1812498b0(param_1 + 0x28,local_30,*(undefined1 *)(param_1 + 0x48),0);
    if (iVar2 < 0) {
      local_20 = lVar3;
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
        UNLOCK();
      }
      FUN_18122dc00(param_1 + 0x28,&local_20);
      local_18[0] = local_38;
      _Memory_00 = (uint *)(local_38 + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        *_Memory_00 = *_Memory_00 + 1;
        UNLOCK();
      }
      FUN_18122dc00(param_1 + 0x38,local_18);
    }
    else {
      local_28 = local_38;
      _Memory_00 = (uint *)(local_38 + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        *_Memory_00 = *_Memory_00 + 1;
        UNLOCK();
      }
      FUN_18122dad0(param_1 + 0x38,iVar2,&local_28);
    }
    _Memory = (uint *)(local_30 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory_00;
      *_Memory_00 = *_Memory_00 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
    }
  }
  return;
}



############ FUN_ 180541c60 size=305 ############

void FUN_180541c60(uint *param_1,longlong param_2,undefined8 param_3,uint param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint *_Memory;
  undefined *puVar4;
  uint *_Memory_00;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18 [2];
  longlong local_38;
  longlong local_30 [3];
  
  local_30[1] = 0xfffffffffffffffe;
  puVar4 = &DAT_1824acbf4;
  if ((*param_1 & param_4) != 0) {
    puVar4 = &DAT_18249f074;
  }
  FUN_18049c4e0(&local_res8,puVar4);
  FUN_18049c4e0(&local_res10,param_3);
  lVar2 = local_res10;
  iVar3 = FUN_1812498b0(param_2,local_res10,*(undefined1 *)(param_2 + 0x20),0);
  if (iVar3 < 0) {
    local_38 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    FUN_18122dc00(param_2,&local_38);
    local_30[0] = local_res8;
    _Memory_00 = (uint *)(local_res8 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      *_Memory_00 = *_Memory_00 + 1;
      UNLOCK();
    }
    FUN_18122dc00(param_2 + 0x10,local_30);
  }
  else {
    local_res18[0] = local_res8;
    _Memory_00 = (uint *)(local_res8 + -0x10);
    if ((*_Memory_00 & 0x30000000) == 0) {
      LOCK();
      *_Memory_00 = *_Memory_00 + 1;
      UNLOCK();
    }
    FUN_18122dad0(param_2 + 0x10,iVar3,local_res18);
  }
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  return;
}



############ FUN_ 18049bb30 size=323 ############

void FUN_18049bb30(byte *param_1,byte *param_2)

{
  byte bVar1;
  wint_t wVar2;
  wint_t wVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  ulonglong uVar8;
  
  do {
    bVar1 = *param_1;
    param_1 = param_1 + 1;
    uVar6 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar4 = 0x40;
      iVar7 = 0;
      uVar6 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar4 < 9) break;
          uVar6 = uVar6 >> 1;
          iVar7 = iVar7 + 1;
          uVar4 = uVar4 >> 1;
        } while ((bVar1 & uVar4) != 0);
      }
      uVar6 = bVar1 & uVar6;
      for (; (iVar7 = iVar7 + -1, -1 < iVar7 && ((*param_1 & 0xc0) == 0x80)); param_1 = param_1 + 1)
      {
        uVar6 = *param_1 & 0x3f | uVar6 << 6;
      }
    }
    bVar1 = *param_2;
    param_2 = param_2 + 1;
    uVar4 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar5 = 0x40;
      iVar7 = 0;
      uVar8 = 0x7f;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          uVar4 = (uint)uVar8;
          if (uVar5 < 9) break;
          uVar8 = uVar8 >> 1;
          uVar4 = (uint)uVar8;
          iVar7 = iVar7 + 1;
          uVar5 = uVar5 >> 1;
        } while ((bVar1 & uVar5) != 0);
      }
      uVar4 = bVar1 & uVar4;
      for (; (iVar7 = iVar7 + -1, -1 < iVar7 && ((*param_2 & 0xc0) == 0x80)); param_2 = param_2 + 1)
      {
        uVar4 = *param_2 & 0x3f | uVar4 << 6;
      }
    }
    if (uVar6 == uVar4) {
LAB_18049bc4a:
      iVar7 = 0;
    }
    else {
      wVar2 = towupper((wint_t)uVar4);
      wVar3 = towupper((wint_t)uVar6);
      if ((uint)wVar3 == (uint)wVar2) goto LAB_18049bc4a;
      iVar7 = 1;
      if ((int)((uint)wVar3 - (uint)wVar2) < 0) {
        iVar7 = -1;
      }
    }
    if ((iVar7 != 0) || (uVar6 == 0)) {
      return;
    }
  } while( true );
}



############ FUN_ 18134bf20 size=70 ############

void FUN_18134bf20(undefined8 param_1,longlong *param_2,undefined4 param_3)

{
  if (param_2 != (longlong *)0x0) {
    (**(code **)(*param_2 + 0x58))(param_2,1);
    FUN_181343cc0(param_1,param_2,param_3);
  }
  return;
}



############ FUN_ 180488560 size=106 ############

void FUN_180488560(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  undefined8 uVar2;
  
  plVar1 = (longlong *)param_2[7];
  if (plVar1 != (longlong *)0x0) {
    if (plVar1 == param_2) {
      uVar2 = (**(code **)(*plVar1 + 8))(plVar1,param_1);
      *(undefined8 *)(param_1 + 0x38) = uVar2;
      plVar1 = (longlong *)param_2[7];
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_2);
        param_2[7] = 0;
        return;
      }
    }
    else {
      *(longlong **)(param_1 + 0x38) = plVar1;
      param_2[7] = 0;
    }
  }
  return;
}



############ FUN_ 181245860 size=82 ############

longlong * FUN_181245860(longlong *param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(*param_2 + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *param_1;
  *param_1 = *param_2;
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  return param_1;
}



############ FUN_ 18122b2c0 size=126 ############

void FUN_18122b2c0(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  uVar1 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x20));
  if (*(longlong *)(param_1 + 0x10) == 0) {
    if (param_2 == -1) {
      param_2 = 9;
    }
    *(int *)(param_1 + 0x1a0) = param_2;
    FUN_18122b350(param_1);
  }
  else {
    FUN_18122ae90(param_1,param_2,param_3,param_4,uVar1);
  }
                    /* WARNING: Could not recover jumptable at 0x00018122b337. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x20));
  return;
}



############ FUN_ 18134aef0 size=64 ############

void FUN_18134aef0(undefined8 param_1,longlong *param_2,undefined4 param_3)

{
  (**(code **)(*param_2 + 0x58))(param_2,1);
  FUN_181343cc0(param_1,param_2,param_3);
  return;
}



############ FUN_ 18122b770 size=237 ############

undefined8 * FUN_18122b770(undefined8 *param_1,longlong *param_2)

{
  longlong lVar1;
  
  *param_1 = juce::Thread::vftable;
  lVar1 = *param_2;
  param_1[1] = lVar1;
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = 0;
  param_1[3] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
  *(undefined1 *)(param_1 + 10) = 0;
  _Mtx_init_in_situ(param_1 + 0xb,2);
  _Cnd_init_in_situ(param_1 + 0x15);
  *(undefined1 *)(param_1 + 0x1e) = 0;
  *(undefined1 *)(param_1 + 0x1f) = 0;
  _Mtx_init_in_situ(param_1 + 0x20,2);
  _Cnd_init_in_situ(param_1 + 0x2a);
  *(undefined1 *)(param_1 + 0x33) = 0;
  *(undefined4 *)(param_1 + 0x34) = 5;
  param_1[0x35] = 0;
  *(undefined4 *)(param_1 + 0x36) = 0;
  *(undefined1 *)((longlong)param_1 + 0x1b4) = 0;
  *(undefined4 *)(param_1 + 0x37) = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x38));
  param_1[0x3e] = 0;
  param_1[0x3f] = 0;
  return param_1;
}



############ FUN_ 1812d8d00 size=144 ############

void FUN_1812d8d00(longlong param_1)

{
  longlong lVar1;
  uint uVar2;
  
  *(undefined1 *)(param_1 + 0x126) = 0;
  lVar1 = *(longlong *)(param_1 + 0x108);
  if (lVar1 == 0) goto LAB_1812d8d83;
  uVar2 = *(uint *)(lVar1 + 0x44) & 3;
  if (uVar2 == 0) {
    if ((*(longlong *)(lVar1 + 8) != 0) && (*(char *)(*(longlong *)(lVar1 + 8) + 0x124) != '\0')) {
LAB_1812d8d42:
      FUN_1812d6e80(lVar1,1);
    }
  }
  else if (uVar2 == 2) goto LAB_1812d8d42;
  lVar1 = *(longlong *)(param_1 + 0x108);
  uVar2 = *(uint *)(lVar1 + 0x44) & 3;
  if (uVar2 == 0) {
    if ((*(longlong *)(lVar1 + 8) != 0) && (*(char *)(*(longlong *)(lVar1 + 8) + 0x124) != '\0'))
    goto LAB_1812d8d83;
  }
  else if (uVar2 == 2) goto LAB_1812d8d83;
  FUN_1812d6e80(lVar1,2);
LAB_1812d8d83:
  FUN_1812d7f20(param_1);
  return;
}



############ FUN_ 1812e1df0 size=227 ############

void FUN_1812e1df0(longlong *param_1,char param_2,char param_3)

{
  longlong lVar1;
  char cVar2;
  undefined1 uVar3;
  char cVar4;
  
  uVar3 = 1;
  if (*(char *)((longlong)param_1 + 0x1ee) == param_2) {
    if ((param_3 == '\0') || (param_2 == '\0')) {
      cVar4 = '\0';
    }
    else {
      cVar4 = '\x01';
    }
    if (*(char *)((longlong)param_1 + 0x1ef) == cVar4) {
      return;
    }
  }
  *(char *)((longlong)param_1 + 0x1ee) = param_2;
  if ((param_3 == '\0') || (param_2 == '\0')) {
    uVar3 = 0;
  }
  *(undefined1 *)((longlong)param_1 + 0x1ef) = uVar3;
  if ((*(char *)((longlong)param_1 + 499) == '\0') || (param_2 == '\0')) {
    cVar4 = '\0';
  }
  else {
    cVar4 = '\x01';
  }
  if ((*(char *)((longlong)param_1 + 499) == '\0') || (param_2 == '\0')) {
    cVar2 = '\0';
  }
  else {
    cVar2 = '\x01';
  }
  lVar1 = param_1[0x39];
  *(undefined2 *)(lVar1 + 0x1a8) = 0;
  if ((*(char *)(lVar1 + 0x1a5) != cVar2) || (*(char *)(lVar1 + 0x1a4) != cVar4)) {
    *(char *)(lVar1 + 0x1a5) = cVar2;
    *(char *)(lVar1 + 0x1a4) = cVar4;
    FUN_1813165e0();
  }
  FUN_181317310(param_1[0x39],0);
  (**(code **)(*param_1 + 0x108))(param_1);
  FUN_1812e0240(param_1);
  return;
}



############ FUN_ 181324a70 size=96 ############

void FUN_181324a70(longlong param_1,undefined8 param_2)

{
  char cVar1;
  longlong lVar2;
  
  lVar2 = __RTDynamicCast(*(undefined8 *)(param_1 + -0x28),0,
                          &juce::TreeViewItem::RTTI_Type_Descriptor,
                          &juce::FileListTreeItem::RTTI_Type_Descriptor,0);
  if (lVar2 != 0) {
    cVar1 = FUN_1804f5bb0(lVar2,param_2);
    if ((cVar1 == '\0') && (*(longlong *)(param_1 + -0x28) != 0)) {
      FUN_1812d6cb0(*(longlong *)(param_1 + -0x28),0);
    }
  }
  return;
}



############ FUN_ 181217460 size=156 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181217460(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  undefined1 auStack_458 [32];
  longlong local_438 [2];
  WCHAR local_428 [520];
  ulonglong local_18;
  
  local_438[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_458;
  local_428[0] = L'\0';
  local_438[0] = param_1;
  GetCurrentDirectoryW(0x204,local_428);
  FUN_18049c800(local_438,local_428);
  FUN_181241890(param_1,local_438);
  _Memory = (uint *)(local_438[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 18132e3a0 size=380 ############

void FUN_18132e3a0(longlong param_1,longlong *param_2,char param_3,char param_4)

{
  longlong lVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  int *piVar6;
  bool bVar7;
  
  if ((*param_2 != *(longlong *)(param_1 + 0x48)) && (iVar4 = FUN_18049bb30(*param_2), iVar4 != 0))
  {
    FUN_18132e310(param_1);
    if (0 < *(int *)(param_1 + 0x9c)) {
      FUN_18051c700(param_1 + 0x90);
      if (*(int *)(param_1 + 0x98) != 0) {
                    /* WARNING: Subroutine does not return */
        free(*(void **)(param_1 + 0x90));
      }
      *(undefined4 *)(param_1 + 0x98) = 0;
      if (*(char *)(param_1 + 0x30) != '\0') {
        piVar6 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
        LOCK();
        bVar7 = *piVar6 == 0;
        if (bVar7) {
          *piVar6 = 1;
        }
        UNLOCK();
        if ((bVar7) && (cVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar3 == '\0')) {
          LOCK();
          *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
          UNLOCK();
        }
      }
    }
    if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar6 = (int *)(*param_2 + -0x10);
      *piVar6 = *piVar6 + 1;
      UNLOCK();
    }
    LOCK();
    lVar1 = *(longlong *)(param_1 + 0x48);
    *(longlong *)(param_1 + 0x48) = *param_2;
    UNLOCK();
    piVar6 = (int *)(lVar1 + -0x10);
    if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar4 = *piVar6;
      *piVar6 = *piVar6 + -1;
      UNLOCK();
      if (iVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar6);
      }
    }
    if (*(char *)(param_1 + 0x30) != '\0') {
      piVar6 = (int *)(*(longlong *)(param_1 + 0x10) + 0x18);
      LOCK();
      bVar7 = *piVar6 == 0;
      if (bVar7) {
        *piVar6 = 1;
      }
      UNLOCK();
      if ((bVar7) && (cVar3 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x10)), cVar3 == '\0')) {
        LOCK();
        *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x18) = 0;
        UNLOCK();
      }
    }
    *(uint *)(param_1 + 0x60) = *(uint *)(param_1 + 0x60) & 0xfffffffc;
  }
  uVar2 = *(uint *)(param_1 + 0x60);
  if (param_3 == '\0') {
    uVar5 = uVar2 & 0xfffffffe;
  }
  else {
    uVar5 = uVar2 | 1;
  }
  if (param_4 == '\0') {
    uVar5 = uVar5 & 0xfffffffd;
  }
  else {
    uVar5 = uVar5 | 2;
  }
  if (uVar2 == uVar5) {
    return;
  }
  *(uint *)(param_1 + 0x60) = uVar5;
  FUN_18132e120(param_1);
  return;
}



############ FUN_ 181249dc0 size=95 ############

longlong FUN_181249dc0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res8 [4];
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  local_res8[0] = param_1;
  FUN_18049c4e0(local_res8);
  FUN_1812344e0(param_1,local_res8,param_3,param_4,uVar2);
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1804f36a0 size=645 ############

undefined8 *
FUN_1804f36a0(undefined8 *param_1,undefined8 param_2,ulonglong param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  undefined1 *puVar3;
  undefined4 *puVar4;
  uint *puVar5;
  undefined1 **ppuVar6;
  uint uVar7;
  undefined1 **ppuVar8;
  bool bVar9;
  undefined1 *local_res10;
  uint local_res18;
  undefined8 local_res20;
  undefined1 *local_68;
  undefined1 *local_60;
  undefined1 *local_58;
  undefined1 *local_50;
  undefined1 *local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  local_res18 = 0;
  *param_1 = juce::FileChooser::NonNative::vftable;
  param_1[1] = param_2;
  *(byte *)(param_1 + 2) = (byte)(param_3 >> 3) & 1;
  *(byte *)((longlong)param_1 + 0x11) = (byte)(param_3 >> 2) & 1;
  *(byte *)((longlong)param_1 + 0x12) = (byte)(param_3 >> 7) & 1;
  local_48 = &DAT_1821dbf98;
  local_res20 = param_4;
  if ((param_3 >> 3 & 1) == 0) {
    local_60 = &DAT_1821dbf98;
    ppuVar8 = &local_60;
    uVar7 = 2;
    local_res18 = 2;
  }
  else {
    FUN_18049c4e0(&local_58,&DAT_182496870);
    ppuVar8 = &local_58;
    uVar7 = 1;
    local_res18 = 1;
  }
  if (*(char *)((longlong)param_1 + 0x11) == '\0') {
    local_res10 = &DAT_1821dbf98;
    ppuVar6 = &local_res10;
    uVar7 = uVar7 | 8;
  }
  else {
    local_68 = *(undefined1 **)(param_1[1] + 8);
    if ((*(uint *)(local_68 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_68 + -0x10) = *(int *)(local_68 + -0x10) + 1;
      UNLOCK();
    }
    ppuVar6 = &local_68;
    uVar7 = local_res18 | 4;
  }
  puVar3 = local_res10;
  local_res18 = uVar7;
  FUN_181218730(param_1 + 3,ppuVar6,ppuVar8,&local_48);
  if ((uVar7 & 8) != 0) {
    uVar7 = uVar7 & 0xfffffff7;
    puVar5 = (uint *)(puVar3 + -0x10);
    local_res18 = uVar7;
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if ((uVar7 & 4) != 0) {
    uVar7 = uVar7 & 0xfffffffb;
    puVar5 = (uint *)(local_68 + -0x10);
    local_res18 = uVar7;
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if ((uVar7 & 2) != 0) {
    uVar7 = uVar7 & 0xfffffffd;
    puVar5 = (uint *)(local_60 + -0x10);
    local_res18 = uVar7;
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if (((uVar7 & 1) != 0) && (puVar5 = (uint *)(local_58 + -0x10), (*puVar5 & 0x30000000) == 0)) {
    LOCK();
    uVar7 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar7 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar9 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar7;
    if (bVar9) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_18132c9a0(param_1 + 9,param_3 & 0xffffffff,param_1[1] + 0x10,param_1 + 3);
  local_50 = &DAT_1821dbf98;
  uVar2 = *(undefined8 *)(param_1[1] + 0x18);
  puVar4 = (undefined4 *)FUN_18134a8d0(param_1 + 9,&local_res20,0x1001800,0);
  FUN_181329360(param_1 + 0x156,param_1[1],&local_50,param_1 + 9,
                *(undefined1 *)((longlong)param_1 + 0x12),*puVar4,uVar2);
  puVar5 = (uint *)(local_50 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_1;
}



############ FUN_ 1811312b4 size=96 ############

/* Library Function - Single Match
    _Init_thread_footer
   
   Library: Visual Studio 2017 Release */

void _Init_thread_footer(int *param_1)

{
  ulonglong uVar1;
  
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182672a00);
  uVar1 = (ulonglong)_tls_index;
  DAT_182615960 = DAT_182615960 + 1;
  *param_1 = DAT_182615960;
  *(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar1 * 8) + 0xc) = DAT_182615960;
  LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182672a00);
  _Init_thread_notify();
  return;
}



############ FUN_ 181131314 size=103 ############

/* Library Function - Single Match
    _Init_thread_header
   
   Library: Visual Studio 2017 Release */

void _Init_thread_header(int *param_1)

{
  EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182672a00);
  do {
    if (*param_1 == 0) {
      *param_1 = -1;
LAB_181131368:
                    /* WARNING: Could not recover jumptable at 0x000181131374. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182672a00);
      return;
    }
    if (*param_1 != -1) {
      *(undefined4 *)
       (*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc) =
           DAT_182615960;
      goto LAB_181131368;
    }
    _Init_thread_wait(100);
  } while( true );
}



############ FUN_ 181131bb8 size=23 ############

/* Library Function - Single Match
    atexit
   
   Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release */

int __cdecl atexit(_func_5014 *param_1)

{
  _onexit_t p_Var1;
  
  p_Var1 = _onexit((_onexit_t)param_1);
  return (p_Var1 != (_onexit_t)0x0) - 1;
}



############ FUN_ 181249270 size=278 ############

int FUN_181249270(undefined8 *param_1,byte *param_2)

{
  byte *pbVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  uint uVar6;
  byte *pbVar7;
  int iVar8;
  
  if (*param_2 == 0) {
    return 0;
  }
  pbVar7 = (byte *)*param_1;
  iVar8 = 0;
  pbVar5 = param_2;
  do {
    while( true ) {
      bVar2 = *pbVar5;
      pbVar5 = pbVar5 + 1;
      if (-1 < (char)bVar2) break;
      bVar2 = *pbVar5;
      while ((bVar2 & 0xc0) == 0x80) {
        pbVar1 = pbVar5 + 1;
        pbVar5 = pbVar5 + 1;
        bVar2 = *pbVar1;
      }
    }
  } while (bVar2 != 0);
  iVar3 = FUN_18049da40(pbVar7);
  do {
    if (iVar3 == 0) {
      return iVar8;
    }
    bVar2 = *pbVar7;
    pbVar7 = pbVar7 + 1;
    uVar6 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar4 = 0x40;
      iVar3 = 0;
      uVar6 = 0x7f;
      if ((bVar2 & 0x40) != 0) {
        do {
          if (uVar4 < 9) break;
          uVar6 = uVar6 >> 1;
          iVar3 = iVar3 + 1;
          uVar4 = uVar4 >> 1;
        } while ((bVar2 & uVar4) != 0);
      }
      uVar6 = bVar2 & uVar6;
      for (; (iVar3 = iVar3 + -1, -1 < iVar3 && ((*pbVar7 & 0xc0) == 0x80)); pbVar7 = pbVar7 + 1) {
        uVar6 = *pbVar7 & 0x3f | uVar6 << 6;
      }
    }
    if (uVar6 == 0) {
      return -1;
    }
    iVar8 = iVar8 + 1;
    iVar3 = FUN_18049da40(pbVar7,param_2);
  } while( true );
}



############ FUN_ 18123a0b0 size=239 ############

longlong *
FUN_18123a0b0(longlong *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  char *pcVar2;
  bool bVar3;
  bool bVar4;
  char **ppcVar5;
  uint *puVar6;
  char *local_res8;
  char *local_res10;
  
  local_res8 = (char *)((ulonglong)local_res8 & 0xffffffff00000000);
  pcVar2 = (char *)*param_2;
  if (*pcVar2 == '\0') {
    bVar4 = true;
    bVar3 = false;
    FUN_18049c4e0(&local_res10,"Unknown Error",param_3,param_4,0xfffffffffffffffe);
    ppcVar5 = &local_res10;
  }
  else {
    bVar4 = false;
    bVar3 = true;
    local_res8 = pcVar2;
    if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
      UNLOCK();
    }
    ppcVar5 = &local_res8;
  }
  pcVar2 = *ppcVar5;
  *param_1 = (longlong)pcVar2;
  if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
    UNLOCK();
  }
  if (bVar3) {
    puVar6 = (uint *)(local_res8 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  if ((bVar4) && (puVar6 = (uint *)(local_res10 + -0x10), (*puVar6 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return param_1;
}



############ FUN_ 18122afa0 size=269 ############

undefined8 FUN_18122afa0(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res8;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x20));
  if (*(longlong *)(param_1 + 0x10) != 0) {
    FUN_18122b1d0(param_1);
    FUN_181215c10(param_1 + 0xf8);
    if (param_2 != 0) {
      FUN_18122b0c0(param_1,param_2,param_3,param_4,uVar2);
    }
    if (*(longlong *)(param_1 + 0x10) != 0) {
      FUN_18049c4e0(&local_res8,"!! killing thread by force !!");
      if (DAT_1826736b8 == (longlong *)0x0) {
        FUN_1812165e0(&local_res8);
      }
      else {
        (**(code **)(*DAT_1826736b8 + 8))(DAT_1826736b8,&local_res8);
      }
      _Memory = (uint *)(local_res8 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if (*(longlong *)(param_1 + 0x10) != 0) {
        TerminateThread(*(HANDLE *)(param_1 + 0x10),0);
      }
      LOCK();
      *(undefined8 *)(param_1 + 0x10) = 0;
      UNLOCK();
      LOCK();
      *(undefined8 *)(param_1 + 0x18) = 0;
      UNLOCK();
      uVar2 = 0;
      goto LAB_18122b091;
    }
  }
  uVar2 = 1;
LAB_18122b091:
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x20));
  return uVar2;
}



############ FUN_ 181252610 size=201 ############

undefined8 *
FUN_181252610(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  
  uVar1 = 0xfffffffffffffffe;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267b084) {
    _Init_thread_header(&DAT_18267b084);
    if (DAT_18267b084 == -1) {
      FUN_18049c4e0(&DAT_18267b020,"<Sans-Serif>",param_3,param_4,uVar1);
      FUN_18049c4e0(&DAT_18267b028,"<Serif>");
      FUN_18049c4e0(&DAT_18267b030,"<Monospaced>");
      FUN_18049c4e0(&DAT_18267b038,"<Regular>");
      atexit(FUN_181a4ab20);
      _Init_thread_footer(&DAT_18267b084);
      return &DAT_18267b020;
    }
  }
  return &DAT_18267b020;
}



############ FUN_ 1804621b0 size=39 ############

void FUN_1804621b0(void)

{
  FUN_18049c4e0(&DAT_1826737c8,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4a300);
  return;
}



############ FUN_ 180462290 size=39 ############

void FUN_180462290(void)

{
  FUN_18049c4e0(&DAT_182673950,"processorStateData");
  atexit((_func_5014 *)&LAB_181a4a3a0);
  return;
}



############ FUN_ 1804622c0 size=39 ############

void FUN_1804622c0(void)

{
  FUN_18049c4e0(&DAT_182673800,"CONFIG");
  atexit((_func_5014 *)&LAB_181a4a3d0);
  return;
}



############ FUN_ 1804624f0 size=39 ############

void FUN_1804624f0(void)

{
  FUN_18049c4e0(&DAT_1826738c8,"small");
  atexit((_func_5014 *)&LAB_181a4a540);
  return;
}



############ FUN_ 180462520 size=39 ############

void FUN_180462520(void)

{
  FUN_18049c4e0(&DAT_182673918,"medium");
  atexit((_func_5014 *)&LAB_181a4a570);
  return;
}



############ FUN_ 180462550 size=39 ############

void FUN_180462550(void)

{
  FUN_18049c4e0(&DAT_1826737c0,"large");
  atexit((_func_5014 *)&LAB_181a4a5a0);
  return;
}



############ FUN_ 180462580 size=39 ############

void FUN_180462580(void)

{
  FUN_18049c4e0(&DAT_182673808,&DAT_1821da5d8);
  atexit((_func_5014 *)&LAB_181a4a5d0);
  return;
}



############ FUN_ 180462660 size=39 ############

void FUN_180462660(void)

{
  FUN_18049c4e0(&DAT_182673990,"https://tracker2.oeksound-testing.com");
  atexit((_func_5014 *)&LAB_181a4a680);
  return;
}



############ FUN_ 1804627e0 size=39 ############

void FUN_1804627e0(void)

{
  FUN_18049c4e0(&DAT_1826739f0,&DAT_1821db51c);
  atexit((_func_5014 *)&LAB_181a4a980);
  return;
}



############ FUN_ 180462d50 size=39 ############

void FUN_180462d50(void)

{
  FUN_18049c4e0(&DAT_182673c10,"parent");
  atexit((_func_5014 *)&LAB_181a4ae80);
  return;
}



############ FUN_ 180462d80 size=39 ############

void FUN_180462d80(void)

{
  FUN_18049c4e0(&DAT_182673b58,&DAT_1821e4834);
  atexit((_func_5014 *)&LAB_181a4aeb0);
  return;
}



############ FUN_ 180462db0 size=39 ############

void FUN_180462db0(void)

{
  FUN_18049c4e0(&DAT_182673bf0,"right");
  atexit((_func_5014 *)&LAB_181a4aee0);
  return;
}



############ FUN_ 180462de0 size=39 ############

void FUN_180462de0(void)

{
  FUN_18049c4e0(&DAT_182673c18,&DAT_1821e2e6c);
  atexit((_func_5014 *)&LAB_181a4af10);
  return;
}



############ FUN_ 180462e10 size=39 ############

void FUN_180462e10(void)

{
  FUN_18049c4e0(&DAT_182673be8,"bottom");
  atexit((_func_5014 *)&LAB_181a4af40);
  return;
}



############ FUN_ 180462e40 size=39 ############

void FUN_180462e40(void)

{
  FUN_18049c4e0(&DAT_182673c00,&DAT_1821e2ecc);
  atexit((_func_5014 *)&LAB_181a4af70);
  return;
}



############ FUN_ 180462e70 size=39 ############

void FUN_180462e70(void)

{
  FUN_18049c4e0(&DAT_182673be0,&DAT_1821e2ebc);
  atexit((_func_5014 *)&LAB_181a4afa0);
  return;
}



############ FUN_ 180462ea0 size=39 ############

void FUN_180462ea0(void)

{
  FUN_18049c4e0(&DAT_182673bd0,"width");
  atexit((_func_5014 *)&LAB_181a4afd0);
  return;
}



############ FUN_ 180462ed0 size=39 ############

void FUN_180462ed0(void)

{
  FUN_18049c4e0(&DAT_182673bf8,"height");
  atexit((_func_5014 *)&LAB_181a4b000);
  return;
}



############ FUN_ 180462f90 size=39 ############

void FUN_180462f90(void)

{
  FUN_18049c4e0(&DAT_182673c80,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4b240);
  return;
}



############ FUN_ 180462fc0 size=39 ############

void FUN_180462fc0(void)

{
  FUN_18049c4e0(&DAT_182673c88,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4b270);
  return;
}



############ FUN_ 180462ff0 size=39 ############

void FUN_180462ff0(void)

{
  FUN_18049c4e0(&DAT_182673ca0,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4b2a0);
  return;
}



############ FUN_ 180463020 size=39 ############

void FUN_180463020(void)

{
  FUN_18049c4e0(&DAT_182673ca8,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4b2d0);
  return;
}



############ FUN_ 180463050 size=39 ############

void FUN_180463050(void)

{
  FUN_18049c4e0(&DAT_182673c90,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4b300);
  return;
}



############ FUN_ 180463080 size=39 ############

void FUN_180463080(void)

{
  FUN_18049c4e0(&DAT_182673c98,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4b330);
  return;
}



############ FUN_ 1804630b0 size=39 ############

void FUN_1804630b0(void)

{
  FUN_18049c4e0(&DAT_182673cb0,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4b360);
  return;
}



############ FUN_ 1804630e0 size=39 ############

void FUN_1804630e0(void)

{
  FUN_18049c4e0(&DAT_182673cb8,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4b390);
  return;
}



############ FUN_ 180463110 size=39 ############

void FUN_180463110(void)

{
  FUN_18049c4e0(&DAT_182673cd0,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4b3c0);
  return;
}



############ FUN_ 180463140 size=39 ############

void FUN_180463140(void)

{
  FUN_18049c4e0(&DAT_182673de8,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4b3f0);
  return;
}



############ FUN_ 180463170 size=39 ############

void FUN_180463170(void)

{
  FUN_18049c4e0(&DAT_182673cc0,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4b420);
  return;
}



############ FUN_ 1804631a0 size=39 ############

void FUN_1804631a0(void)

{
  FUN_18049c4e0(&DAT_182673cc8,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4b450);
  return;
}



############ FUN_ 1804631d0 size=39 ############

void FUN_1804631d0(void)

{
  FUN_18049c4e0(&DAT_182673dd8,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4b480);
  return;
}



############ FUN_ 180463200 size=39 ############

void FUN_180463200(void)

{
  FUN_18049c4e0(&DAT_182673cd8,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4b4b0);
  return;
}



############ FUN_ 180463230 size=39 ############

void FUN_180463230(void)

{
  FUN_18049c4e0(&DAT_182673d40,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4b4e0);
  return;
}



############ FUN_ 180463260 size=39 ############

void FUN_180463260(void)

{
  FUN_18049c4e0(&DAT_182673dc0,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4b510);
  return;
}



############ FUN_ 180463290 size=39 ############

void FUN_180463290(void)

{
  FUN_18049c4e0(&DAT_182673db8,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4b540);
  return;
}



############ FUN_ 1804632c0 size=39 ############

void FUN_1804632c0(void)

{
  FUN_18049c4e0(&DAT_182673cf0,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4b570);
  return;
}



############ FUN_ 1804632f0 size=39 ############

void FUN_1804632f0(void)

{
  FUN_18049c4e0(&DAT_182673df8,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4b5a0);
  return;
}



############ FUN_ 180463320 size=39 ############

void FUN_180463320(void)

{
  FUN_18049c4e0(&DAT_182673d10,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4b5d0);
  return;
}



############ FUN_ 180463350 size=39 ############

void FUN_180463350(void)

{
  FUN_18049c4e0(&DAT_182673d00,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4b600);
  return;
}



############ FUN_ 180463380 size=39 ############

void FUN_180463380(void)

{
  FUN_18049c4e0(&DAT_182673d70,&DAT_1821d8fbd);
  atexit((_func_5014 *)&LAB_181a4b630);
  return;
}



############ FUN_ 1804633b0 size=39 ############

void FUN_1804633b0(void)

{
  FUN_18049c4e0(&DAT_182673e10,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4b660);
  return;
}



############ FUN_ 1804633e0 size=39 ############

void FUN_1804633e0(void)

{
  FUN_18049c4e0(&DAT_182673ce0,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4b690);
  return;
}



############ FUN_ 180463410 size=39 ############

void FUN_180463410(void)

{
  FUN_18049c4e0(&DAT_182673d78,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4b6c0);
  return;
}



############ FUN_ 180463440 size=39 ############

void FUN_180463440(void)

{
  FUN_18049c4e0(&DAT_182673ce8,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4b6f0);
  return;
}



############ FUN_ 180463470 size=39 ############

void FUN_180463470(void)

{
  FUN_18049c4e0(&DAT_182673d98,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4b720);
  return;
}



############ FUN_ 1804634a0 size=39 ############

void FUN_1804634a0(void)

{
  FUN_18049c4e0(&DAT_182673d20,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4b750);
  return;
}



############ FUN_ 1804634d0 size=39 ############

void FUN_1804634d0(void)

{
  FUN_18049c4e0(&DAT_182673da8,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4b780);
  return;
}



############ FUN_ 180463500 size=39 ############

void FUN_180463500(void)

{
  FUN_18049c4e0(&DAT_182673d38,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4b7b0);
  return;
}



############ FUN_ 180463530 size=39 ############

void FUN_180463530(void)

{
  FUN_18049c4e0(&DAT_182673d48,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4b7e0);
  return;
}



############ FUN_ 180463560 size=39 ############

void FUN_180463560(void)

{
  FUN_18049c4e0(&DAT_182673d68,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4b810);
  return;
}



############ FUN_ 180463590 size=39 ############

void FUN_180463590(void)

{
  FUN_18049c4e0(&DAT_182673d90,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4b840);
  return;
}



############ FUN_ 1804635c0 size=39 ############

void FUN_1804635c0(void)

{
  FUN_18049c4e0(&DAT_182673db0,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4b870);
  return;
}



############ FUN_ 1804635f0 size=39 ############

void FUN_1804635f0(void)

{
  FUN_18049c4e0(&DAT_182673df0,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4b8a0);
  return;
}



############ FUN_ 180463620 size=39 ############

void FUN_180463620(void)

{
  FUN_18049c4e0(&DAT_182673de0,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4b8d0);
  return;
}



############ FUN_ 180463650 size=39 ############

void FUN_180463650(void)

{
  FUN_18049c4e0(&DAT_182673d58,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4b900);
  return;
}



############ FUN_ 180463680 size=39 ############

void FUN_180463680(void)

{
  FUN_18049c4e0(&DAT_182673d30,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4b930);
  return;
}



############ FUN_ 1804636b0 size=39 ############

void FUN_1804636b0(void)

{
  FUN_18049c4e0(&DAT_182673cf8,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4b960);
  return;
}



############ FUN_ 1804636e0 size=39 ############

void FUN_1804636e0(void)

{
  FUN_18049c4e0(&DAT_182673d80,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4b990);
  return;
}



############ FUN_ 180463710 size=39 ############

void FUN_180463710(void)

{
  FUN_18049c4e0(&DAT_182673e00,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4b9c0);
  return;
}



############ FUN_ 180463740 size=39 ############

void FUN_180463740(void)

{
  FUN_18049c4e0(&DAT_182673d18,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4b9f0);
  return;
}



############ FUN_ 180463770 size=39 ############

void FUN_180463770(void)

{
  FUN_18049c4e0(&DAT_182673e08,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4ba20);
  return;
}



############ FUN_ 1804637a0 size=39 ############

void FUN_1804637a0(void)

{
  FUN_18049c4e0(&DAT_182673d50,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4ba50);
  return;
}



############ FUN_ 1804637d0 size=39 ############

void FUN_1804637d0(void)

{
  FUN_18049c4e0(&DAT_182673d28,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4ba80);
  return;
}



############ FUN_ 180463800 size=39 ############

void FUN_180463800(void)

{
  FUN_18049c4e0(&DAT_182673dc8,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4bab0);
  return;
}



############ FUN_ 180463830 size=39 ############

void FUN_180463830(void)

{
  FUN_18049c4e0(&DAT_182673d60,"low shelf");
  atexit((_func_5014 *)&LAB_181a4bae0);
  return;
}



############ FUN_ 180463860 size=39 ############

void FUN_180463860(void)

{
  FUN_18049c4e0(&DAT_182673da0,"high shelf");
  atexit((_func_5014 *)&LAB_181a4bb10);
  return;
}



############ FUN_ 180463890 size=39 ############

void FUN_180463890(void)

{
  FUN_18049c4e0(&DAT_182673d88,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4bb40);
  return;
}



############ FUN_ 1804638c0 size=39 ############

void FUN_1804638c0(void)

{
  FUN_18049c4e0(&DAT_182673d08,&DAT_1821e7858);
  atexit((_func_5014 *)&LAB_181a4bb70);
  return;
}



############ FUN_ 1804639b0 size=133 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804639b0(void)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res8 [4];
  
  FUN_18049c4e0(local_res8,"IppInterprocessLock");
  _DAT_182673ea0 = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)&DAT_182673ea8);
  _DAT_182673ed8 = local_res8[0];
  if ((*(uint *)(local_res8[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8[0] + -0x10) = *(int *)(local_res8[0] + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  atexit((_func_5014 *)&LAB_181a4bc20);
  return;
}



############ FUN_ 180463a80 size=39 ############

void FUN_180463a80(void)

{
  FUN_18049c4e0(&DAT_182673f18,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4bc80);
  return;
}



############ FUN_ 180463ab0 size=39 ############

void FUN_180463ab0(void)

{
  FUN_18049c4e0(&DAT_182673f30,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4bcb0);
  return;
}



############ FUN_ 180463ae0 size=39 ############

void FUN_180463ae0(void)

{
  FUN_18049c4e0(&DAT_182673f48,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4bce0);
  return;
}



############ FUN_ 180463b10 size=39 ############

void FUN_180463b10(void)

{
  FUN_18049c4e0(&DAT_182673f88,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4bd10);
  return;
}



############ FUN_ 180463b40 size=39 ############

void FUN_180463b40(void)

{
  FUN_18049c4e0(&DAT_182673f38,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4bd40);
  return;
}



############ FUN_ 180463b70 size=39 ############

void FUN_180463b70(void)

{
  FUN_18049c4e0(&DAT_182673f40,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4bd70);
  return;
}



############ FUN_ 180463cd0 size=39 ############

void FUN_180463cd0(void)

{
  FUN_18049c4e0(&DAT_182673fa8,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4bef0);
  return;
}



############ FUN_ 180463d00 size=39 ############

void FUN_180463d00(void)

{
  FUN_18049c4e0(&DAT_182673fb0,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4bf20);
  return;
}



############ FUN_ 180463d30 size=39 ############

void FUN_180463d30(void)

{
  FUN_18049c4e0(&DAT_182673fc8,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4bf50);
  return;
}



############ FUN_ 180463d60 size=39 ############

void FUN_180463d60(void)

{
  FUN_18049c4e0(&DAT_1826740d8,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4bf80);
  return;
}



############ FUN_ 180463d90 size=39 ############

void FUN_180463d90(void)

{
  FUN_18049c4e0(&DAT_182673fb8,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4bfb0);
  return;
}



############ FUN_ 180463dc0 size=39 ############

void FUN_180463dc0(void)

{
  FUN_18049c4e0(&DAT_182673fc0,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4bfe0);
  return;
}



############ FUN_ 180463df0 size=39 ############

void FUN_180463df0(void)

{
  FUN_18049c4e0(&DAT_1826740c8,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4c010);
  return;
}



############ FUN_ 180463e20 size=39 ############

void FUN_180463e20(void)

{
  FUN_18049c4e0(&DAT_182673fd0,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4c040);
  return;
}



############ FUN_ 180463e50 size=39 ############

void FUN_180463e50(void)

{
  FUN_18049c4e0(&DAT_182674038,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4c070);
  return;
}



############ FUN_ 180463e80 size=39 ############

void FUN_180463e80(void)

{
  FUN_18049c4e0(&DAT_1826740b8,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4c0a0);
  return;
}



############ FUN_ 180463eb0 size=39 ############

void FUN_180463eb0(void)

{
  FUN_18049c4e0(&DAT_1826740b0,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4c0d0);
  return;
}



############ FUN_ 180463ee0 size=39 ############

void FUN_180463ee0(void)

{
  FUN_18049c4e0(&DAT_182673fe8,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4c100);
  return;
}



############ FUN_ 180463f10 size=39 ############

void FUN_180463f10(void)

{
  FUN_18049c4e0(&DAT_1826740e8,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4c130);
  return;
}



############ FUN_ 180463f40 size=39 ############

void FUN_180463f40(void)

{
  FUN_18049c4e0(&DAT_182674008,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4c160);
  return;
}



############ FUN_ 180463f70 size=39 ############

void FUN_180463f70(void)

{
  FUN_18049c4e0(&DAT_182673ff8,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4c190);
  return;
}



############ FUN_ 180463fa0 size=39 ############

void FUN_180463fa0(void)

{
  FUN_18049c4e0(&DAT_182674068,&DAT_1821d9065);
  atexit((_func_5014 *)&LAB_181a4c1c0);
  return;
}



############ FUN_ 180463fd0 size=39 ############

void FUN_180463fd0(void)

{
  FUN_18049c4e0(&DAT_182674100,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4c1f0);
  return;
}



############ FUN_ 180464000 size=39 ############

void FUN_180464000(void)

{
  FUN_18049c4e0(&DAT_182673fd8,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4c220);
  return;
}



############ FUN_ 180464030 size=39 ############

void FUN_180464030(void)

{
  FUN_18049c4e0(&DAT_182674070,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4c250);
  return;
}



############ FUN_ 180464060 size=39 ############

void FUN_180464060(void)

{
  FUN_18049c4e0(&DAT_182673fe0,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4c280);
  return;
}



############ FUN_ 180464090 size=39 ############

void FUN_180464090(void)

{
  FUN_18049c4e0(&DAT_182674090,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4c2b0);
  return;
}



############ FUN_ 1804640c0 size=39 ############

void FUN_1804640c0(void)

{
  FUN_18049c4e0(&DAT_182674018,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4c2e0);
  return;
}



############ FUN_ 1804640f0 size=39 ############

void FUN_1804640f0(void)

{
  FUN_18049c4e0(&DAT_1826740a0,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4c310);
  return;
}



############ FUN_ 180464120 size=39 ############

void FUN_180464120(void)

{
  FUN_18049c4e0(&DAT_182674030,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4c340);
  return;
}



############ FUN_ 180464150 size=39 ############

void FUN_180464150(void)

{
  FUN_18049c4e0(&DAT_182674040,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4c370);
  return;
}



############ FUN_ 180464180 size=39 ############

void FUN_180464180(void)

{
  FUN_18049c4e0(&DAT_182674060,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4c3a0);
  return;
}



############ FUN_ 1804641b0 size=39 ############

void FUN_1804641b0(void)

{
  FUN_18049c4e0(&DAT_182674088,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4c3d0);
  return;
}



############ FUN_ 1804641e0 size=39 ############

void FUN_1804641e0(void)

{
  FUN_18049c4e0(&DAT_1826740a8,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4c400);
  return;
}



############ FUN_ 180464210 size=39 ############

void FUN_180464210(void)

{
  FUN_18049c4e0(&DAT_1826740e0,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4c430);
  return;
}



############ FUN_ 180464240 size=39 ############

void FUN_180464240(void)

{
  FUN_18049c4e0(&DAT_1826740d0,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4c460);
  return;
}



############ FUN_ 180464270 size=39 ############

void FUN_180464270(void)

{
  FUN_18049c4e0(&DAT_182674050,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4c490);
  return;
}



############ FUN_ 1804642a0 size=39 ############

void FUN_1804642a0(void)

{
  FUN_18049c4e0(&DAT_182674028,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4c4c0);
  return;
}



############ FUN_ 1804642d0 size=39 ############

void FUN_1804642d0(void)

{
  FUN_18049c4e0(&DAT_182673ff0,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4c4f0);
  return;
}



############ FUN_ 180464300 size=39 ############

void FUN_180464300(void)

{
  FUN_18049c4e0(&DAT_182674078,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4c520);
  return;
}



############ FUN_ 180464330 size=39 ############

void FUN_180464330(void)

{
  FUN_18049c4e0(&DAT_1826740f0,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4c550);
  return;
}



############ FUN_ 180464360 size=39 ############

void FUN_180464360(void)

{
  FUN_18049c4e0(&DAT_182674010,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4c580);
  return;
}



############ FUN_ 180464390 size=39 ############

void FUN_180464390(void)

{
  FUN_18049c4e0(&DAT_1826740f8,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4c5b0);
  return;
}



############ FUN_ 1804643c0 size=39 ############

void FUN_1804643c0(void)

{
  FUN_18049c4e0(&DAT_182674048,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4c5e0);
  return;
}



############ FUN_ 1804643f0 size=39 ############

void FUN_1804643f0(void)

{
  FUN_18049c4e0(&DAT_182674020,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4c610);
  return;
}



############ FUN_ 180464420 size=39 ############

void FUN_180464420(void)

{
  FUN_18049c4e0(&DAT_1826740c0,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4c640);
  return;
}



############ FUN_ 180464450 size=39 ############

void FUN_180464450(void)

{
  FUN_18049c4e0(&DAT_182674058,"low shelf");
  atexit((_func_5014 *)&LAB_181a4c670);
  return;
}



############ FUN_ 180464480 size=39 ############

void FUN_180464480(void)

{
  FUN_18049c4e0(&DAT_182674098,"high shelf");
  atexit((_func_5014 *)&LAB_181a4c6a0);
  return;
}



############ FUN_ 1804644b0 size=39 ############

void FUN_1804644b0(void)

{
  FUN_18049c4e0(&DAT_182674080,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4c6d0);
  return;
}



############ FUN_ 1804644e0 size=39 ############

void FUN_1804644e0(void)

{
  FUN_18049c4e0(&DAT_182674000,&DAT_18226efd4);
  atexit((_func_5014 *)&LAB_181a4c700);
  return;
}



############ FUN_ 180464510 size=39 ############

void FUN_180464510(void)

{
  FUN_18049c4e0(&DAT_182674108,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4c730);
  return;
}



############ FUN_ 180464540 size=39 ############

void FUN_180464540(void)

{
  FUN_18049c4e0(&DAT_182674110,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4c760);
  return;
}



############ FUN_ 180464570 size=39 ############

void FUN_180464570(void)

{
  FUN_18049c4e0(&DAT_182674128,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4c790);
  return;
}



############ FUN_ 1804645a0 size=39 ############

void FUN_1804645a0(void)

{
  FUN_18049c4e0(&DAT_182674138,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4c7c0);
  return;
}



############ FUN_ 1804645d0 size=39 ############

void FUN_1804645d0(void)

{
  FUN_18049c4e0(&DAT_182674118,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4c7f0);
  return;
}



############ FUN_ 180464600 size=39 ############

void FUN_180464600(void)

{
  FUN_18049c4e0(&DAT_182674120,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4c820);
  return;
}



############ FUN_ 180464630 size=39 ############

void FUN_180464630(void)

{
  FUN_18049c4e0(&DAT_182674170,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4c850);
  return;
}



############ FUN_ 180465870 size=39 ############

void FUN_180465870(void)

{
  FUN_18049c4e0(&DAT_1826742c0,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4c900);
  return;
}



############ FUN_ 1804658a0 size=39 ############

void FUN_1804658a0(void)

{
  FUN_18049c4e0(&DAT_1826742c8,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4c930);
  return;
}



############ FUN_ 1804658d0 size=39 ############

void FUN_1804658d0(void)

{
  FUN_18049c4e0(&DAT_1826742e0,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4c960);
  return;
}



############ FUN_ 180465900 size=39 ############

void FUN_180465900(void)

{
  FUN_18049c4e0(&DAT_1826742f0,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4c990);
  return;
}



############ FUN_ 180465930 size=39 ############

void FUN_180465930(void)

{
  FUN_18049c4e0(&DAT_1826742d0,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4c9c0);
  return;
}



############ FUN_ 180465960 size=39 ############

void FUN_180465960(void)

{
  FUN_18049c4e0(&DAT_1826742d8,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4c9f0);
  return;
}



############ FUN_ 180465990 size=39 ############

void FUN_180465990(void)

{
  FUN_18049c4e0(&DAT_1826742f8,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4ca20);
  return;
}



############ FUN_ 1804659c0 size=39 ############

void FUN_1804659c0(void)

{
  FUN_18049c4e0(&DAT_182674308,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4ca50);
  return;
}



############ FUN_ 1804659f0 size=39 ############

void FUN_1804659f0(void)

{
  FUN_18049c4e0(&DAT_182674320,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4ca80);
  return;
}



############ FUN_ 180465a20 size=39 ############

void FUN_180465a20(void)

{
  FUN_18049c4e0(&DAT_182674328,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4cab0);
  return;
}



############ FUN_ 180465a50 size=39 ############

void FUN_180465a50(void)

{
  FUN_18049c4e0(&DAT_182674310,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4cae0);
  return;
}



############ FUN_ 180465a80 size=39 ############

void FUN_180465a80(void)

{
  FUN_18049c4e0(&DAT_182674318,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4cb10);
  return;
}



############ FUN_ 180465b10 size=39 ############

void FUN_180465b10(void)

{
  FUN_18049c4e0(&DAT_182674330,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4cb70);
  return;
}



############ FUN_ 180465b40 size=39 ############

void FUN_180465b40(void)

{
  FUN_18049c4e0(&DAT_182674338,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4cba0);
  return;
}



############ FUN_ 180465b70 size=39 ############

void FUN_180465b70(void)

{
  FUN_18049c4e0(&DAT_182674350,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4cbd0);
  return;
}



############ FUN_ 180465ba0 size=39 ############

void FUN_180465ba0(void)

{
  FUN_18049c4e0(&DAT_182674360,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4cc00);
  return;
}



############ FUN_ 180465bd0 size=39 ############

void FUN_180465bd0(void)

{
  FUN_18049c4e0(&DAT_182674340,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4cc30);
  return;
}



############ FUN_ 180465c00 size=39 ############

void FUN_180465c00(void)

{
  FUN_18049c4e0(&DAT_182674348,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4cc60);
  return;
}



############ FUN_ 180465c30 size=39 ############

void FUN_180465c30(void)

{
  FUN_18049c4e0(&DAT_182674368,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4cc90);
  return;
}



############ FUN_ 180465c60 size=39 ############

void FUN_180465c60(void)

{
  FUN_18049c4e0(&DAT_182674370,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4ccc0);
  return;
}



############ FUN_ 180465c90 size=39 ############

void FUN_180465c90(void)

{
  FUN_18049c4e0(&DAT_182674388,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4ccf0);
  return;
}



############ FUN_ 180465cc0 size=39 ############

void FUN_180465cc0(void)

{
  FUN_18049c4e0(&DAT_1826744a0,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4cd20);
  return;
}



############ FUN_ 180465cf0 size=39 ############

void FUN_180465cf0(void)

{
  FUN_18049c4e0(&DAT_182674378,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4cd50);
  return;
}



############ FUN_ 180465d20 size=39 ############

void FUN_180465d20(void)

{
  FUN_18049c4e0(&DAT_182674380,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4cd80);
  return;
}



############ FUN_ 180465d50 size=39 ############

void FUN_180465d50(void)

{
  FUN_18049c4e0(&DAT_182674490,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4cdb0);
  return;
}



############ FUN_ 180465d80 size=39 ############

void FUN_180465d80(void)

{
  FUN_18049c4e0(&DAT_182674390,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4cde0);
  return;
}



############ FUN_ 180465db0 size=39 ############

void FUN_180465db0(void)

{
  FUN_18049c4e0(&DAT_1826743f8,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4ce10);
  return;
}



############ FUN_ 180465de0 size=39 ############

void FUN_180465de0(void)

{
  FUN_18049c4e0(&DAT_182674478,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4ce40);
  return;
}



############ FUN_ 180465e10 size=39 ############

void FUN_180465e10(void)

{
  FUN_18049c4e0(&DAT_182674470,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4ce70);
  return;
}



############ FUN_ 180465e40 size=39 ############

void FUN_180465e40(void)

{
  FUN_18049c4e0(&DAT_1826743a8,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4cea0);
  return;
}



############ FUN_ 180465e70 size=39 ############

void FUN_180465e70(void)

{
  FUN_18049c4e0(&DAT_1826744b0,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4ced0);
  return;
}



############ FUN_ 180465ea0 size=39 ############

void FUN_180465ea0(void)

{
  FUN_18049c4e0(&DAT_1826743c8,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4cf00);
  return;
}



############ FUN_ 180465ed0 size=39 ############

void FUN_180465ed0(void)

{
  FUN_18049c4e0(&DAT_1826743b8,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4cf30);
  return;
}



############ FUN_ 180465f00 size=39 ############

void FUN_180465f00(void)

{
  FUN_18049c4e0(&DAT_182674428,"");
  atexit((_func_5014 *)&LAB_181a4cf60);
  return;
}



############ FUN_ 180465f30 size=39 ############

void FUN_180465f30(void)

{
  FUN_18049c4e0(&DAT_1826744c8,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4cf90);
  return;
}



############ FUN_ 180465f60 size=39 ############

void FUN_180465f60(void)

{
  FUN_18049c4e0(&DAT_182674398,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4cfc0);
  return;
}



############ FUN_ 180465f90 size=39 ############

void FUN_180465f90(void)

{
  FUN_18049c4e0(&DAT_182674430,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4cff0);
  return;
}



############ FUN_ 180465fc0 size=39 ############

void FUN_180465fc0(void)

{
  FUN_18049c4e0(&DAT_1826743a0,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4d020);
  return;
}



############ FUN_ 180465ff0 size=39 ############

void FUN_180465ff0(void)

{
  FUN_18049c4e0(&DAT_182674450,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4d050);
  return;
}



############ FUN_ 180466020 size=39 ############

void FUN_180466020(void)

{
  FUN_18049c4e0(&DAT_1826743d8,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4d080);
  return;
}



############ FUN_ 180466050 size=39 ############

void FUN_180466050(void)

{
  FUN_18049c4e0(&DAT_182674460,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4d0b0);
  return;
}



############ FUN_ 180466080 size=39 ############

void FUN_180466080(void)

{
  FUN_18049c4e0(&DAT_1826743f0,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4d0e0);
  return;
}



############ FUN_ 1804660b0 size=39 ############

void FUN_1804660b0(void)

{
  FUN_18049c4e0(&DAT_182674400,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4d110);
  return;
}



############ FUN_ 1804660e0 size=39 ############

void FUN_1804660e0(void)

{
  FUN_18049c4e0(&DAT_182674420,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4d140);
  return;
}



############ FUN_ 180466110 size=39 ############

void FUN_180466110(void)

{
  FUN_18049c4e0(&DAT_182674448,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4d170);
  return;
}



############ FUN_ 180466140 size=39 ############

void FUN_180466140(void)

{
  FUN_18049c4e0(&DAT_182674468,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4d1a0);
  return;
}



############ FUN_ 180466170 size=39 ############

void FUN_180466170(void)

{
  FUN_18049c4e0(&DAT_1826744a8,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4d1d0);
  return;
}



############ FUN_ 1804661a0 size=39 ############

void FUN_1804661a0(void)

{
  FUN_18049c4e0(&DAT_182674498,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4d200);
  return;
}



############ FUN_ 1804661d0 size=39 ############

void FUN_1804661d0(void)

{
  FUN_18049c4e0(&DAT_182674410,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4d230);
  return;
}



############ FUN_ 180466200 size=39 ############

void FUN_180466200(void)

{
  FUN_18049c4e0(&DAT_1826743e8,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4d260);
  return;
}



############ FUN_ 180466230 size=39 ############

void FUN_180466230(void)

{
  FUN_18049c4e0(&DAT_1826743b0,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4d290);
  return;
}



############ FUN_ 180466260 size=39 ############

void FUN_180466260(void)

{
  FUN_18049c4e0(&DAT_182674438,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4d2c0);
  return;
}



############ FUN_ 180466290 size=39 ############

void FUN_180466290(void)

{
  FUN_18049c4e0(&DAT_1826744b8,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4d2f0);
  return;
}



############ FUN_ 1804662c0 size=39 ############

void FUN_1804662c0(void)

{
  FUN_18049c4e0(&DAT_1826743d0,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4d320);
  return;
}



############ FUN_ 1804662f0 size=39 ############

void FUN_1804662f0(void)

{
  FUN_18049c4e0(&DAT_1826744c0,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4d350);
  return;
}



############ FUN_ 180466320 size=39 ############

void FUN_180466320(void)

{
  FUN_18049c4e0(&DAT_182674408,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4d380);
  return;
}



############ FUN_ 180466350 size=39 ############

void FUN_180466350(void)

{
  FUN_18049c4e0(&DAT_1826743e0,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4d3b0);
  return;
}



############ FUN_ 180466380 size=39 ############

void FUN_180466380(void)

{
  FUN_18049c4e0(&DAT_182674480,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4d3e0);
  return;
}



############ FUN_ 1804663b0 size=39 ############

void FUN_1804663b0(void)

{
  FUN_18049c4e0(&DAT_182674418,"low shelf");
  atexit((_func_5014 *)&LAB_181a4d410);
  return;
}



############ FUN_ 1804663e0 size=39 ############

void FUN_1804663e0(void)

{
  FUN_18049c4e0(&DAT_182674458,"high shelf");
  atexit((_func_5014 *)&LAB_181a4d440);
  return;
}



############ FUN_ 180466410 size=39 ############

void FUN_180466410(void)

{
  FUN_18049c4e0(&DAT_182674440,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4d470);
  return;
}



############ FUN_ 180466440 size=39 ############

void FUN_180466440(void)

{
  FUN_18049c4e0(&DAT_1826743c0,&DAT_1822cb184);
  atexit((_func_5014 *)&LAB_181a4d4a0);
  return;
}



############ FUN_ 180466470 size=39 ############

void FUN_180466470(void)

{
  FUN_18049c4e0(&DAT_1826744d0,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4d4d0);
  return;
}



############ FUN_ 1804664a0 size=39 ############

void FUN_1804664a0(void)

{
  FUN_18049c4e0(&DAT_1826744d8,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4d500);
  return;
}



############ FUN_ 1804664d0 size=39 ############

void FUN_1804664d0(void)

{
  FUN_18049c4e0(&DAT_1826744f0,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4d530);
  return;
}



############ FUN_ 180466500 size=39 ############

void FUN_180466500(void)

{
  FUN_18049c4e0(&DAT_182674600,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4d560);
  return;
}



############ FUN_ 180466530 size=39 ############

void FUN_180466530(void)

{
  FUN_18049c4e0(&DAT_1826744e0,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4d590);
  return;
}



############ FUN_ 180466560 size=39 ############

void FUN_180466560(void)

{
  FUN_18049c4e0(&DAT_1826744e8,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4d5c0);
  return;
}



############ FUN_ 180466590 size=39 ############

void FUN_180466590(void)

{
  FUN_18049c4e0(&DAT_1826745f0,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4d5f0);
  return;
}



############ FUN_ 1804665c0 size=39 ############

void FUN_1804665c0(void)

{
  FUN_18049c4e0(&DAT_1826744f8,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4d620);
  return;
}



############ FUN_ 1804665f0 size=39 ############

void FUN_1804665f0(void)

{
  FUN_18049c4e0(&DAT_182674560,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4d650);
  return;
}



############ FUN_ 180466620 size=39 ############

void FUN_180466620(void)

{
  FUN_18049c4e0(&DAT_1826745e0,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4d680);
  return;
}



############ FUN_ 180466650 size=39 ############

void FUN_180466650(void)

{
  FUN_18049c4e0(&DAT_1826745d8,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4d6b0);
  return;
}



############ FUN_ 180466680 size=39 ############

void FUN_180466680(void)

{
  FUN_18049c4e0(&DAT_182674510,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4d6e0);
  return;
}



############ FUN_ 1804666b0 size=39 ############

void FUN_1804666b0(void)

{
  FUN_18049c4e0(&DAT_182674610,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4d710);
  return;
}



############ FUN_ 1804666e0 size=39 ############

void FUN_1804666e0(void)

{
  FUN_18049c4e0(&DAT_182674530,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4d740);
  return;
}



############ FUN_ 180466710 size=39 ############

void FUN_180466710(void)

{
  FUN_18049c4e0(&DAT_182674520,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4d770);
  return;
}



############ FUN_ 180466740 size=39 ############

void FUN_180466740(void)

{
  FUN_18049c4e0(&DAT_182674590,&DAT_1821d9206);
  atexit((_func_5014 *)&LAB_181a4d7a0);
  return;
}



############ FUN_ 180466770 size=39 ############

void FUN_180466770(void)

{
  FUN_18049c4e0(&DAT_182674628,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4d7d0);
  return;
}



############ FUN_ 1804667a0 size=39 ############

void FUN_1804667a0(void)

{
  FUN_18049c4e0(&DAT_182674500,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4d800);
  return;
}



############ FUN_ 1804667d0 size=39 ############

void FUN_1804667d0(void)

{
  FUN_18049c4e0(&DAT_182674598,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4d830);
  return;
}



############ FUN_ 180466800 size=39 ############

void FUN_180466800(void)

{
  FUN_18049c4e0(&DAT_182674508,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4d860);
  return;
}



############ FUN_ 180466830 size=39 ############

void FUN_180466830(void)

{
  FUN_18049c4e0(&DAT_1826745b8,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4d890);
  return;
}



############ FUN_ 180466860 size=39 ############

void FUN_180466860(void)

{
  FUN_18049c4e0(&DAT_182674540,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4d8c0);
  return;
}



############ FUN_ 180466890 size=39 ############

void FUN_180466890(void)

{
  FUN_18049c4e0(&DAT_1826745c8,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4d8f0);
  return;
}



############ FUN_ 1804668c0 size=39 ############

void FUN_1804668c0(void)

{
  FUN_18049c4e0(&DAT_182674558,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4d920);
  return;
}



############ FUN_ 1804668f0 size=39 ############

void FUN_1804668f0(void)

{
  FUN_18049c4e0(&DAT_182674568,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4d950);
  return;
}



############ FUN_ 180466920 size=39 ############

void FUN_180466920(void)

{
  FUN_18049c4e0(&DAT_182674588,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4d980);
  return;
}



############ FUN_ 180466950 size=39 ############

void FUN_180466950(void)

{
  FUN_18049c4e0(&DAT_1826745b0,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4d9b0);
  return;
}



############ FUN_ 180466980 size=39 ############

void FUN_180466980(void)

{
  FUN_18049c4e0(&DAT_1826745d0,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4d9e0);
  return;
}



############ FUN_ 1804669b0 size=39 ############

void FUN_1804669b0(void)

{
  FUN_18049c4e0(&DAT_182674608,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4da10);
  return;
}



############ FUN_ 1804669e0 size=39 ############

void FUN_1804669e0(void)

{
  FUN_18049c4e0(&DAT_1826745f8,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4da40);
  return;
}



############ FUN_ 180466a10 size=39 ############

void FUN_180466a10(void)

{
  FUN_18049c4e0(&DAT_182674578,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4da70);
  return;
}



############ FUN_ 180466a40 size=39 ############

void FUN_180466a40(void)

{
  FUN_18049c4e0(&DAT_182674550,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4daa0);
  return;
}



############ FUN_ 180466a70 size=39 ############

void FUN_180466a70(void)

{
  FUN_18049c4e0(&DAT_182674518,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4dad0);
  return;
}



############ FUN_ 180466aa0 size=39 ############

void FUN_180466aa0(void)

{
  FUN_18049c4e0(&DAT_1826745a0,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4db00);
  return;
}



############ FUN_ 180466ad0 size=39 ############

void FUN_180466ad0(void)

{
  FUN_18049c4e0(&DAT_182674618,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4db30);
  return;
}



############ FUN_ 180466b00 size=39 ############

void FUN_180466b00(void)

{
  FUN_18049c4e0(&DAT_182674538,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4db60);
  return;
}



############ FUN_ 180466b30 size=39 ############

void FUN_180466b30(void)

{
  FUN_18049c4e0(&DAT_182674620,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4db90);
  return;
}



############ FUN_ 180466b60 size=39 ############

void FUN_180466b60(void)

{
  FUN_18049c4e0(&DAT_182674570,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4dbc0);
  return;
}



############ FUN_ 180466b90 size=39 ############

void FUN_180466b90(void)

{
  FUN_18049c4e0(&DAT_182674548,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4dbf0);
  return;
}



############ FUN_ 180466bc0 size=39 ############

void FUN_180466bc0(void)

{
  FUN_18049c4e0(&DAT_1826745e8,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4dc20);
  return;
}



############ FUN_ 180466bf0 size=39 ############

void FUN_180466bf0(void)

{
  FUN_18049c4e0(&DAT_182674580,"low shelf");
  atexit((_func_5014 *)&LAB_181a4dc50);
  return;
}



############ FUN_ 180466c20 size=39 ############

void FUN_180466c20(void)

{
  FUN_18049c4e0(&DAT_1826745c0,"high shelf");
  atexit((_func_5014 *)&LAB_181a4dc80);
  return;
}



############ FUN_ 180466c50 size=39 ############

void FUN_180466c50(void)

{
  FUN_18049c4e0(&DAT_1826745a8,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4dcb0);
  return;
}



############ FUN_ 180466c80 size=39 ############

void FUN_180466c80(void)

{
  FUN_18049c4e0(&DAT_182674528,&DAT_1822e1654);
  atexit((_func_5014 *)&LAB_181a4dce0);
  return;
}



############ FUN_ 180466cb0 size=39 ############

void FUN_180466cb0(void)

{
  FUN_18049c4e0(&DAT_182674630,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4dd10);
  return;
}



############ FUN_ 180466ce0 size=39 ############

void FUN_180466ce0(void)

{
  FUN_18049c4e0(&DAT_182674638,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4dd40);
  return;
}



############ FUN_ 180466d10 size=39 ############

void FUN_180466d10(void)

{
  FUN_18049c4e0(&DAT_182674650,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4dd70);
  return;
}



############ FUN_ 180466d40 size=39 ############

void FUN_180466d40(void)

{
  FUN_18049c4e0(&DAT_182674660,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4dda0);
  return;
}



############ FUN_ 180466d70 size=39 ############

void FUN_180466d70(void)

{
  FUN_18049c4e0(&DAT_182674640,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4ddd0);
  return;
}



############ FUN_ 180466da0 size=39 ############

void FUN_180466da0(void)

{
  FUN_18049c4e0(&DAT_182674648,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4de00);
  return;
}



############ FUN_ 180466dd0 size=39 ############

void FUN_180466dd0(void)

{
  FUN_18049c4e0(&DAT_182674668,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4de30);
  return;
}



############ FUN_ 180466e00 size=39 ############

void FUN_180466e00(void)

{
  FUN_18049c4e0(&DAT_182674670,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4de60);
  return;
}



############ FUN_ 180466e30 size=39 ############

void FUN_180466e30(void)

{
  FUN_18049c4e0(&DAT_182674688,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4de90);
  return;
}



############ FUN_ 180466e60 size=39 ############

void FUN_180466e60(void)

{
  FUN_18049c4e0(&DAT_1826747a0,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4dec0);
  return;
}



############ FUN_ 180466e90 size=39 ############

void FUN_180466e90(void)

{
  FUN_18049c4e0(&DAT_182674678,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4def0);
  return;
}



############ FUN_ 180466ec0 size=39 ############

void FUN_180466ec0(void)

{
  FUN_18049c4e0(&DAT_182674680,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4df20);
  return;
}



############ FUN_ 180466ef0 size=39 ############

void FUN_180466ef0(void)

{
  FUN_18049c4e0(&DAT_182674790,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4df50);
  return;
}



############ FUN_ 180466f20 size=39 ############

void FUN_180466f20(void)

{
  FUN_18049c4e0(&DAT_182674690,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4df80);
  return;
}



############ FUN_ 180466f50 size=39 ############

void FUN_180466f50(void)

{
  FUN_18049c4e0(&DAT_1826746f8,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4dfb0);
  return;
}



############ FUN_ 180466f80 size=39 ############

void FUN_180466f80(void)

{
  FUN_18049c4e0(&DAT_182674778,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4dfe0);
  return;
}



############ FUN_ 180466fb0 size=39 ############

void FUN_180466fb0(void)

{
  FUN_18049c4e0(&DAT_182674770,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4e010);
  return;
}



############ FUN_ 180466fe0 size=39 ############

void FUN_180466fe0(void)

{
  FUN_18049c4e0(&DAT_1826746a8,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4e040);
  return;
}



############ FUN_ 180467010 size=39 ############

void FUN_180467010(void)

{
  FUN_18049c4e0(&DAT_1826747b0,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4e070);
  return;
}



############ FUN_ 180467040 size=39 ############

void FUN_180467040(void)

{
  FUN_18049c4e0(&DAT_1826746c8,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4e0a0);
  return;
}



############ FUN_ 180467070 size=39 ############

void FUN_180467070(void)

{
  FUN_18049c4e0(&DAT_1826746b8,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4e0d0);
  return;
}



############ FUN_ 1804670a0 size=39 ############

void FUN_1804670a0(void)

{
  FUN_18049c4e0(&DAT_182674728,"");
  atexit((_func_5014 *)&LAB_181a4e100);
  return;
}



############ FUN_ 1804670d0 size=39 ############

void FUN_1804670d0(void)

{
  FUN_18049c4e0(&DAT_1826747c8,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4e130);
  return;
}



############ FUN_ 180467100 size=39 ############

void FUN_180467100(void)

{
  FUN_18049c4e0(&DAT_182674698,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4e160);
  return;
}



############ FUN_ 180467130 size=39 ############

void FUN_180467130(void)

{
  FUN_18049c4e0(&DAT_182674730,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4e190);
  return;
}



############ FUN_ 180467160 size=39 ############

void FUN_180467160(void)

{
  FUN_18049c4e0(&DAT_1826746a0,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4e1c0);
  return;
}



############ FUN_ 180467190 size=39 ############

void FUN_180467190(void)

{
  FUN_18049c4e0(&DAT_182674750,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4e1f0);
  return;
}



############ FUN_ 1804671c0 size=39 ############

void FUN_1804671c0(void)

{
  FUN_18049c4e0(&DAT_1826746d8,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4e220);
  return;
}



############ FUN_ 1804671f0 size=39 ############

void FUN_1804671f0(void)

{
  FUN_18049c4e0(&DAT_182674760,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4e250);
  return;
}



############ FUN_ 180467220 size=39 ############

void FUN_180467220(void)

{
  FUN_18049c4e0(&DAT_1826746f0,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4e280);
  return;
}



############ FUN_ 180467250 size=39 ############

void FUN_180467250(void)

{
  FUN_18049c4e0(&DAT_182674700,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4e2b0);
  return;
}



############ FUN_ 180467280 size=39 ############

void FUN_180467280(void)

{
  FUN_18049c4e0(&DAT_182674720,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4e2e0);
  return;
}



############ FUN_ 1804672b0 size=39 ############

void FUN_1804672b0(void)

{
  FUN_18049c4e0(&DAT_182674748,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4e310);
  return;
}



############ FUN_ 1804672e0 size=39 ############

void FUN_1804672e0(void)

{
  FUN_18049c4e0(&DAT_182674768,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4e340);
  return;
}



############ FUN_ 180467310 size=39 ############

void FUN_180467310(void)

{
  FUN_18049c4e0(&DAT_1826747a8,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4e370);
  return;
}



############ FUN_ 180467340 size=39 ############

void FUN_180467340(void)

{
  FUN_18049c4e0(&DAT_182674798,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4e3a0);
  return;
}



############ FUN_ 180467370 size=39 ############

void FUN_180467370(void)

{
  FUN_18049c4e0(&DAT_182674710,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4e3d0);
  return;
}



############ FUN_ 1804673a0 size=39 ############

void FUN_1804673a0(void)

{
  FUN_18049c4e0(&DAT_1826746e8,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4e400);
  return;
}



############ FUN_ 1804673d0 size=39 ############

void FUN_1804673d0(void)

{
  FUN_18049c4e0(&DAT_1826746b0,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4e430);
  return;
}



############ FUN_ 180467400 size=39 ############

void FUN_180467400(void)

{
  FUN_18049c4e0(&DAT_182674738,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4e460);
  return;
}



############ FUN_ 180467430 size=39 ############

void FUN_180467430(void)

{
  FUN_18049c4e0(&DAT_1826747b8,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4e490);
  return;
}



############ FUN_ 180467460 size=39 ############

void FUN_180467460(void)

{
  FUN_18049c4e0(&DAT_1826746d0,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4e4c0);
  return;
}



############ FUN_ 180467490 size=39 ############

void FUN_180467490(void)

{
  FUN_18049c4e0(&DAT_1826747c0,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4e4f0);
  return;
}



############ FUN_ 1804674c0 size=39 ############

void FUN_1804674c0(void)

{
  FUN_18049c4e0(&DAT_182674708,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4e520);
  return;
}



############ FUN_ 1804674f0 size=39 ############

void FUN_1804674f0(void)

{
  FUN_18049c4e0(&DAT_1826746e0,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4e550);
  return;
}



############ FUN_ 180467520 size=39 ############

void FUN_180467520(void)

{
  FUN_18049c4e0(&DAT_182674780,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4e580);
  return;
}



############ FUN_ 180467550 size=39 ############

void FUN_180467550(void)

{
  FUN_18049c4e0(&DAT_182674718,"low shelf");
  atexit((_func_5014 *)&LAB_181a4e5b0);
  return;
}



############ FUN_ 180467580 size=39 ############

void FUN_180467580(void)

{
  FUN_18049c4e0(&DAT_182674758,"high shelf");
  atexit((_func_5014 *)&LAB_181a4e5e0);
  return;
}



############ FUN_ 1804675b0 size=39 ############

void FUN_1804675b0(void)

{
  FUN_18049c4e0(&DAT_182674740,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4e610);
  return;
}



############ FUN_ 1804675e0 size=39 ############

void FUN_1804675e0(void)

{
  FUN_18049c4e0(&DAT_1826746c0,&DAT_1822ed424);
  atexit((_func_5014 *)&LAB_181a4e640);
  return;
}



############ FUN_ 1804677e0 size=39 ############

void FUN_1804677e0(void)

{
  FUN_18049c4e0(&DAT_1826747d0,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4e670);
  return;
}



############ FUN_ 180467810 size=39 ############

void FUN_180467810(void)

{
  FUN_18049c4e0(&DAT_1826747d8,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4e6a0);
  return;
}



############ FUN_ 180467840 size=39 ############

void FUN_180467840(void)

{
  FUN_18049c4e0(&DAT_1826747f0,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4e6d0);
  return;
}



############ FUN_ 180467870 size=39 ############

void FUN_180467870(void)

{
  FUN_18049c4e0(&DAT_182674800,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4e700);
  return;
}



############ FUN_ 1804678a0 size=39 ############

void FUN_1804678a0(void)

{
  FUN_18049c4e0(&DAT_1826747e0,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4e730);
  return;
}



############ FUN_ 1804678d0 size=39 ############

void FUN_1804678d0(void)

{
  FUN_18049c4e0(&DAT_1826747e8,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4e760);
  return;
}



############ FUN_ 180467910 size=39 ############

void FUN_180467910(void)

{
  FUN_18049c4e0(&DAT_182674810,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4e7d0);
  return;
}



############ FUN_ 180467940 size=39 ############

void FUN_180467940(void)

{
  FUN_18049c4e0(&DAT_182674818,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4e800);
  return;
}



############ FUN_ 180467970 size=39 ############

void FUN_180467970(void)

{
  FUN_18049c4e0(&DAT_182674830,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4e830);
  return;
}



############ FUN_ 1804679a0 size=39 ############

void FUN_1804679a0(void)

{
  FUN_18049c4e0(&DAT_182674948,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4e860);
  return;
}



############ FUN_ 1804679d0 size=39 ############

void FUN_1804679d0(void)

{
  FUN_18049c4e0(&DAT_182674820,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4e890);
  return;
}



############ FUN_ 180467a00 size=39 ############

void FUN_180467a00(void)

{
  FUN_18049c4e0(&DAT_182674828,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4e8c0);
  return;
}



############ FUN_ 180467a30 size=39 ############

void FUN_180467a30(void)

{
  FUN_18049c4e0(&DAT_182674938,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4e8f0);
  return;
}



############ FUN_ 180467a60 size=39 ############

void FUN_180467a60(void)

{
  FUN_18049c4e0(&DAT_182674838,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4e920);
  return;
}



############ FUN_ 180467a90 size=39 ############

void FUN_180467a90(void)

{
  FUN_18049c4e0(&DAT_1826748a0,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4e950);
  return;
}



############ FUN_ 180467ac0 size=39 ############

void FUN_180467ac0(void)

{
  FUN_18049c4e0(&DAT_182674920,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4e980);
  return;
}



############ FUN_ 180467af0 size=39 ############

void FUN_180467af0(void)

{
  FUN_18049c4e0(&DAT_182674918,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4e9b0);
  return;
}



############ FUN_ 180467b20 size=39 ############

void FUN_180467b20(void)

{
  FUN_18049c4e0(&DAT_182674850,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4e9e0);
  return;
}



############ FUN_ 180467b50 size=39 ############

void FUN_180467b50(void)

{
  FUN_18049c4e0(&DAT_182674958,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4ea10);
  return;
}



############ FUN_ 180467b80 size=39 ############

void FUN_180467b80(void)

{
  FUN_18049c4e0(&DAT_182674870,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4ea40);
  return;
}



############ FUN_ 180467bb0 size=39 ############

void FUN_180467bb0(void)

{
  FUN_18049c4e0(&DAT_182674860,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4ea70);
  return;
}



############ FUN_ 180467be0 size=39 ############

void FUN_180467be0(void)

{
  FUN_18049c4e0(&DAT_1826748d0,"");
  atexit((_func_5014 *)&LAB_181a4eaa0);
  return;
}



############ FUN_ 180467c10 size=39 ############

void FUN_180467c10(void)

{
  FUN_18049c4e0(&DAT_182674970,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4ead0);
  return;
}



############ FUN_ 180467c40 size=39 ############

void FUN_180467c40(void)

{
  FUN_18049c4e0(&DAT_182674840,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4eb00);
  return;
}



############ FUN_ 180467c70 size=39 ############

void FUN_180467c70(void)

{
  FUN_18049c4e0(&DAT_1826748d8,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4eb30);
  return;
}



############ FUN_ 180467ca0 size=39 ############

void FUN_180467ca0(void)

{
  FUN_18049c4e0(&DAT_182674848,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4eb60);
  return;
}



############ FUN_ 180467cd0 size=39 ############

void FUN_180467cd0(void)

{
  FUN_18049c4e0(&DAT_1826748f8,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4eb90);
  return;
}



############ FUN_ 180467d00 size=39 ############

void FUN_180467d00(void)

{
  FUN_18049c4e0(&DAT_182674880,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4ebc0);
  return;
}



############ FUN_ 180467d30 size=39 ############

void FUN_180467d30(void)

{
  FUN_18049c4e0(&DAT_182674908,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4ebf0);
  return;
}



############ FUN_ 180467d60 size=39 ############

void FUN_180467d60(void)

{
  FUN_18049c4e0(&DAT_182674898,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4ec20);
  return;
}



############ FUN_ 180467d90 size=39 ############

void FUN_180467d90(void)

{
  FUN_18049c4e0(&DAT_1826748a8,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4ec50);
  return;
}



############ FUN_ 180467dc0 size=39 ############

void FUN_180467dc0(void)

{
  FUN_18049c4e0(&DAT_1826748c8,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4ec80);
  return;
}



############ FUN_ 180467df0 size=39 ############

void FUN_180467df0(void)

{
  FUN_18049c4e0(&DAT_1826748f0,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4ecb0);
  return;
}



############ FUN_ 180467e20 size=39 ############

void FUN_180467e20(void)

{
  FUN_18049c4e0(&DAT_182674910,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4ece0);
  return;
}



############ FUN_ 180467e50 size=39 ############

void FUN_180467e50(void)

{
  FUN_18049c4e0(&DAT_182674950,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4ed10);
  return;
}



############ FUN_ 180467e80 size=39 ############

void FUN_180467e80(void)

{
  FUN_18049c4e0(&DAT_182674940,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4ed40);
  return;
}



############ FUN_ 180467eb0 size=39 ############

void FUN_180467eb0(void)

{
  FUN_18049c4e0(&DAT_1826748b8,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4ed70);
  return;
}



############ FUN_ 180467ee0 size=39 ############

void FUN_180467ee0(void)

{
  FUN_18049c4e0(&DAT_182674890,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4eda0);
  return;
}



############ FUN_ 180467f10 size=39 ############

void FUN_180467f10(void)

{
  FUN_18049c4e0(&DAT_182674858,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4edd0);
  return;
}



############ FUN_ 180467f40 size=39 ############

void FUN_180467f40(void)

{
  FUN_18049c4e0(&DAT_1826748e0,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4ee00);
  return;
}



############ FUN_ 180467f70 size=39 ############

void FUN_180467f70(void)

{
  FUN_18049c4e0(&DAT_182674960,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4ee30);
  return;
}



############ FUN_ 180467fa0 size=39 ############

void FUN_180467fa0(void)

{
  FUN_18049c4e0(&DAT_182674878,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4ee60);
  return;
}



############ FUN_ 180467fd0 size=39 ############

void FUN_180467fd0(void)

{
  FUN_18049c4e0(&DAT_182674968,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4ee90);
  return;
}



############ FUN_ 180468000 size=39 ############

void FUN_180468000(void)

{
  FUN_18049c4e0(&DAT_1826748b0,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4eec0);
  return;
}



############ FUN_ 180468030 size=39 ############

void FUN_180468030(void)

{
  FUN_18049c4e0(&DAT_182674888,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4eef0);
  return;
}



############ FUN_ 180468060 size=39 ############

void FUN_180468060(void)

{
  FUN_18049c4e0(&DAT_182674928,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4ef20);
  return;
}



############ FUN_ 180468090 size=39 ############

void FUN_180468090(void)

{
  FUN_18049c4e0(&DAT_1826748c0,"low shelf");
  atexit((_func_5014 *)&LAB_181a4ef50);
  return;
}



############ FUN_ 1804680c0 size=39 ############

void FUN_1804680c0(void)

{
  FUN_18049c4e0(&DAT_182674900,"high shelf");
  atexit((_func_5014 *)&LAB_181a4ef80);
  return;
}



############ FUN_ 1804680f0 size=39 ############

void FUN_1804680f0(void)

{
  FUN_18049c4e0(&DAT_1826748e8,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4efb0);
  return;
}



############ FUN_ 180468120 size=39 ############

void FUN_180468120(void)

{
  FUN_18049c4e0(&DAT_182674868,&DAT_1822fc154);
  atexit((_func_5014 *)&LAB_181a4efe0);
  return;
}



############ FUN_ 180468150 size=39 ############

void FUN_180468150(void)

{
  FUN_18049c4e0(&DAT_182674980,&DAT_18221eaac);
  atexit((_func_5014 *)&LAB_181a4f010);
  return;
}



############ FUN_ 180468180 size=39 ############

void FUN_180468180(void)

{
  FUN_18049c4e0(&DAT_182674978,"0482024663950281");
  atexit((_func_5014 *)&LAB_181a4f040);
  return;
}



############ FUN_ 1804681d0 size=39 ############

void FUN_1804681d0(void)

{
  FUN_18049c4e0(&DAT_182674988,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4f080);
  return;
}



############ FUN_ 180468200 size=39 ############

void FUN_180468200(void)

{
  FUN_18049c4e0(&DAT_182674990,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4f0b0);
  return;
}



############ FUN_ 180468230 size=39 ############

void FUN_180468230(void)

{
  FUN_18049c4e0(&DAT_1826749a8,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4f0e0);
  return;
}



############ FUN_ 180468260 size=39 ############

void FUN_180468260(void)

{
  FUN_18049c4e0(&DAT_182674ac0,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4f110);
  return;
}



############ FUN_ 180468290 size=39 ############

void FUN_180468290(void)

{
  FUN_18049c4e0(&DAT_182674998,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4f140);
  return;
}



############ FUN_ 1804682c0 size=39 ############

void FUN_1804682c0(void)

{
  FUN_18049c4e0(&DAT_1826749a0,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4f170);
  return;
}



############ FUN_ 1804682f0 size=39 ############

void FUN_1804682f0(void)

{
  FUN_18049c4e0(&DAT_182674ab0,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4f1a0);
  return;
}



############ FUN_ 180468320 size=39 ############

void FUN_180468320(void)

{
  FUN_18049c4e0(&DAT_1826749b0,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4f1d0);
  return;
}



############ FUN_ 180468350 size=39 ############

void FUN_180468350(void)

{
  FUN_18049c4e0(&DAT_182674a18,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4f200);
  return;
}



############ FUN_ 180468380 size=39 ############

void FUN_180468380(void)

{
  FUN_18049c4e0(&DAT_182674a98,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4f230);
  return;
}



############ FUN_ 1804683b0 size=39 ############

void FUN_1804683b0(void)

{
  FUN_18049c4e0(&DAT_182674a90,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4f260);
  return;
}



############ FUN_ 1804683e0 size=39 ############

void FUN_1804683e0(void)

{
  FUN_18049c4e0(&DAT_1826749c8,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4f290);
  return;
}



############ FUN_ 180468410 size=39 ############

void FUN_180468410(void)

{
  FUN_18049c4e0(&DAT_182674ad0,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4f2c0);
  return;
}



############ FUN_ 180468440 size=39 ############

void FUN_180468440(void)

{
  FUN_18049c4e0(&DAT_1826749e8,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4f2f0);
  return;
}



############ FUN_ 180468470 size=39 ############

void FUN_180468470(void)

{
  FUN_18049c4e0(&DAT_1826749d8,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4f320);
  return;
}



############ FUN_ 1804684a0 size=39 ############

void FUN_1804684a0(void)

{
  FUN_18049c4e0(&DAT_182674a48,&DAT_1821d9236);
  atexit((_func_5014 *)&LAB_181a4f350);
  return;
}



############ FUN_ 1804684d0 size=39 ############

void FUN_1804684d0(void)

{
  FUN_18049c4e0(&DAT_182674ae8,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4f380);
  return;
}



############ FUN_ 180468500 size=39 ############

void FUN_180468500(void)

{
  FUN_18049c4e0(&DAT_1826749b8,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4f3b0);
  return;
}



############ FUN_ 180468530 size=39 ############

void FUN_180468530(void)

{
  FUN_18049c4e0(&DAT_182674a50,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4f3e0);
  return;
}



############ FUN_ 180468560 size=39 ############

void FUN_180468560(void)

{
  FUN_18049c4e0(&DAT_1826749c0,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4f410);
  return;
}



############ FUN_ 180468590 size=39 ############

void FUN_180468590(void)

{
  FUN_18049c4e0(&DAT_182674a70,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4f440);
  return;
}



############ FUN_ 1804685c0 size=39 ############

void FUN_1804685c0(void)

{
  FUN_18049c4e0(&DAT_1826749f8,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4f470);
  return;
}



############ FUN_ 1804685f0 size=39 ############

void FUN_1804685f0(void)

{
  FUN_18049c4e0(&DAT_182674a80,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4f4a0);
  return;
}



############ FUN_ 180468620 size=39 ############

void FUN_180468620(void)

{
  FUN_18049c4e0(&DAT_182674a10,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4f4d0);
  return;
}



############ FUN_ 180468650 size=39 ############

void FUN_180468650(void)

{
  FUN_18049c4e0(&DAT_182674a20,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4f500);
  return;
}



############ FUN_ 180468680 size=39 ############

void FUN_180468680(void)

{
  FUN_18049c4e0(&DAT_182674a40,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4f530);
  return;
}



############ FUN_ 1804686b0 size=39 ############

void FUN_1804686b0(void)

{
  FUN_18049c4e0(&DAT_182674a68,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4f560);
  return;
}



############ FUN_ 1804686e0 size=39 ############

void FUN_1804686e0(void)

{
  FUN_18049c4e0(&DAT_182674a88,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4f590);
  return;
}



############ FUN_ 180468710 size=39 ############

void FUN_180468710(void)

{
  FUN_18049c4e0(&DAT_182674ac8,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4f5c0);
  return;
}



############ FUN_ 180468740 size=39 ############

void FUN_180468740(void)

{
  FUN_18049c4e0(&DAT_182674ab8,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4f5f0);
  return;
}



############ FUN_ 180468770 size=39 ############

void FUN_180468770(void)

{
  FUN_18049c4e0(&DAT_182674a30,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4f620);
  return;
}



############ FUN_ 1804687a0 size=39 ############

void FUN_1804687a0(void)

{
  FUN_18049c4e0(&DAT_182674a08,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4f650);
  return;
}



############ FUN_ 1804687d0 size=39 ############

void FUN_1804687d0(void)

{
  FUN_18049c4e0(&DAT_1826749d0,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4f680);
  return;
}



############ FUN_ 180468800 size=39 ############

void FUN_180468800(void)

{
  FUN_18049c4e0(&DAT_182674a58,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a4f6b0);
  return;
}



############ FUN_ 180468830 size=39 ############

void FUN_180468830(void)

{
  FUN_18049c4e0(&DAT_182674ad8,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a4f6e0);
  return;
}



############ FUN_ 180468860 size=39 ############

void FUN_180468860(void)

{
  FUN_18049c4e0(&DAT_1826749f0,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a4f710);
  return;
}



############ FUN_ 180468890 size=39 ############

void FUN_180468890(void)

{
  FUN_18049c4e0(&DAT_182674ae0,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a4f740);
  return;
}



############ FUN_ 1804688c0 size=39 ############

void FUN_1804688c0(void)

{
  FUN_18049c4e0(&DAT_182674a28,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a4f770);
  return;
}



############ FUN_ 1804688f0 size=39 ############

void FUN_1804688f0(void)

{
  FUN_18049c4e0(&DAT_182674a00,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a4f7a0);
  return;
}



############ FUN_ 180468920 size=39 ############

void FUN_180468920(void)

{
  FUN_18049c4e0(&DAT_182674aa0,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a4f7d0);
  return;
}



############ FUN_ 180468950 size=39 ############

void FUN_180468950(void)

{
  FUN_18049c4e0(&DAT_182674a38,"low shelf");
  atexit((_func_5014 *)&LAB_181a4f800);
  return;
}



############ FUN_ 180468980 size=39 ############

void FUN_180468980(void)

{
  FUN_18049c4e0(&DAT_182674a78,"high shelf");
  atexit((_func_5014 *)&LAB_181a4f830);
  return;
}



############ FUN_ 1804689b0 size=39 ############

void FUN_1804689b0(void)

{
  FUN_18049c4e0(&DAT_182674a60,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a4f860);
  return;
}



############ FUN_ 1804689e0 size=39 ############

void FUN_1804689e0(void)

{
  FUN_18049c4e0(&DAT_1826749e0,&DAT_1822fe4f4);
  atexit((_func_5014 *)&LAB_181a4f890);
  return;
}



############ FUN_ 180468a10 size=39 ############

void FUN_180468a10(void)

{
  FUN_18049c4e0(&DAT_182674af0,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4f8c0);
  return;
}



############ FUN_ 180468a40 size=39 ############

void FUN_180468a40(void)

{
  FUN_18049c4e0(&DAT_182674af8,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4f8f0);
  return;
}



############ FUN_ 180468a70 size=39 ############

void FUN_180468a70(void)

{
  FUN_18049c4e0(&DAT_182674b10,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4f920);
  return;
}



############ FUN_ 180468aa0 size=39 ############

void FUN_180468aa0(void)

{
  FUN_18049c4e0(&DAT_182674b20,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4f950);
  return;
}



############ FUN_ 180468ad0 size=39 ############

void FUN_180468ad0(void)

{
  FUN_18049c4e0(&DAT_182674b00,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4f980);
  return;
}



############ FUN_ 180468b00 size=39 ############

void FUN_180468b00(void)

{
  FUN_18049c4e0(&DAT_182674b08,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4f9b0);
  return;
}



############ FUN_ 180468b30 size=39 ############

void FUN_180468b30(void)

{
  FUN_18049c4e0(&DAT_182674b28,"pluginVersion");
  atexit((_func_5014 *)&LAB_181a4f9e0);
  return;
}



############ FUN_ 180468b60 size=39 ############

void FUN_180468b60(void)

{
  FUN_18049c4e0(&DAT_182674b30,
                "*switches between two different states*, i.e. all the parameter values. useful for comparing and deciding between two similar settings."
               );
  atexit((_func_5014 *)&LAB_181a4fa10);
  return;
}



############ FUN_ 180468b90 size=39 ############

void FUN_180468b90(void)

{
  FUN_18049c4e0(&DAT_182674b48,
                "*copies the currently active settings* (a or b) parameter states to the other setting, overwriting what was already there."
               );
  atexit((_func_5014 *)&LAB_181a4fa40);
  return;
}



############ FUN_ 180468bc0 size=39 ############

void FUN_180468bc0(void)

{
  FUN_18049c4e0(&DAT_182674c58,"opens the global configuration options.");
  atexit((_func_5014 *)&LAB_181a4fa70);
  return;
}



############ FUN_ 180468bf0 size=39 ############

void FUN_180468bf0(void)

{
  FUN_18049c4e0(&DAT_182674b38,
                "*changes the size of the gui*.\nif a particular larger size would be too large for the screen, the size won\'t be changed."
               );
  atexit((_func_5014 *)&LAB_181a4faa0);
  return;
}



############ FUN_ 180468c20 size=39 ############

void FUN_180468c20(void)

{
  FUN_18049c4e0(&DAT_182674b40,"toggle to *always hide* the selected band controls.");
  atexit((_func_5014 *)&LAB_181a4fad0);
  return;
}



############ FUN_ 180468c50 size=39 ############

void FUN_180468c50(void)

{
  FUN_18049c4e0(&DAT_182674c48,
                "change between *soft* and *hard* detection algorithms.\n\n*soft* mode is more transparent, easier to adjust, and more suited to dynamic material\n\n*hard* mode is more adjustable, can be pushed harder, and reacts more to the level of the material."
               );
  atexit((_func_5014 *)&LAB_181a4fb00);
  return;
}



############ FUN_ 180468c80 size=39 ############

void FUN_180468c80(void)

{
  FUN_18049c4e0(&DAT_182674b50,
                "change *how much* processing is applied.\n\nhigher values result in bigger cuts.");
  atexit((_func_5014 *)&LAB_181a4fb30);
  return;
}



############ FUN_ 180468cb0 size=39 ############

void FUN_180468cb0(void)

{
  FUN_18049c4e0(&DAT_182674bb8,
                "adjust *how sharp* the individual notches are. similar to the q on a typical eq.\n\nhigher values make the notches narrower, but may introduce more artefacts"
               );
  atexit((_func_5014 *)&LAB_181a4fb60);
  return;
}



############ FUN_ 180468ce0 size=39 ############

void FUN_180468ce0(void)

{
  FUN_18049c4e0(&DAT_182674c38,
                "adjust *how selective* the process is.\n\n*less selectivity* results in more overall tone-shaping, more effective on noisy sibilance, for example.\n\n*more selectivity* focuses the processing on the narrower peaks."
               );
  atexit((_func_5014 *)&LAB_181a4fb90);
  return;
}



############ FUN_ 180468d10 size=39 ############

void FUN_180468d10(void)

{
  FUN_18049c4e0(&DAT_182674c30,"adjust *how quickly* the processor *starts to react* to resonances")
  ;
  atexit((_func_5014 *)&LAB_181a4fbc0);
  return;
}



############ FUN_ 180468d40 size=39 ############

void FUN_180468d40(void)

{
  FUN_18049c4e0(&DAT_182674b68,"adjust *how quickly the notches disappear*");
  atexit((_func_5014 *)&LAB_181a4fbf0);
  return;
}



############ FUN_ 180468d70 size=39 ############

void FUN_180468d70(void)

{
  FUN_18049c4e0(&DAT_182674c68,"switch between the stereo modes, *left | right* & *mid | side*.");
  atexit((_func_5014 *)&LAB_181a4fc20);
  return;
}



############ FUN_ 180468da0 size=39 ############

void FUN_180468da0(void)

{
  FUN_18049c4e0(&DAT_182674b88,
                "adjust *how much cross-feed* the resonance detection has between channels\n\nat *100% the sum of both channels* is used to detect the resonances and identical processing is applied to both channels, so the stereo image is not altered. \n\nat *0% the resonances are detected independently* for both channels, often resulting in bigger changes in stereo imaging."
               );
  atexit((_func_5014 *)&LAB_181a4fc50);
  return;
}



############ FUN_ 180468dd0 size=39 ############

void FUN_180468dd0(void)

{
  FUN_18049c4e0(&DAT_182674b78,
                "adjust the master balance of the processing. this changes *how much processing is applied to each channel*.\n\nfor example, on *100% | 50%* the processing is applied as if left (or mid) channel had wet/dry mix of 100% and the right (or side) channel had wet/dry mix of 50%."
               );
  atexit((_func_5014 *)&LAB_181a4fc80);
  return;
}



############ FUN_ 180468e00 size=39 ############

void FUN_180468e00(void)

{
  FUN_18049c4e0(&DAT_182674be8,&DAT_1821d9246);
  atexit((_func_5014 *)&LAB_181a4fcb0);
  return;
}



############ FUN_ 180468e30 size=39 ############

void FUN_180468e30(void)

{
  FUN_18049c4e0(&DAT_182674c80,
                "set the *time resolution* of the processing.\n\nthis adjusts the refresh rate of the internal processing.higher settings update the internal filters more frequently, but are more demanding on the cpu."
               );
  atexit((_func_5014 *)&LAB_181a4fce0);
  return;
}



############ FUN_ 180468e60 size=39 ############

void FUN_180468e60(void)

{
  FUN_18049c4e0(&DAT_182674b58,
                "use this to apply different resolution setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session"
               );
  atexit((_func_5014 *)&LAB_181a4fd10);
  return;
}



############ FUN_ 180468e90 size=39 ############

void FUN_180468e90(void)

{
  FUN_18049c4e0(&DAT_182674bf0,
                "adjust the level of *spectral oversampling*.*higher values* result in a *smoother frequency response* and better accuracy especially at lower frequencies but are more demanding on the cpu"
               );
  atexit((_func_5014 *)&LAB_181a4fd40);
  return;
}



############ FUN_ 180468ec0 size=39 ############

void FUN_180468ec0(void)

{
  FUN_18049c4e0(&DAT_182674b60,
                "use this to apply different oversampling setting for the offline renders and bounces.\n\nwith this, you can run the real-time audio with lower settings for reference, while still doing the final renders with higher settings.\n\nuse \"copy to all plug-in instances\" to copy the currently selected setting to instances in the current session\n\n*eco* mode is a tradeoff when there is very limited performance available"
               );
  atexit((_func_5014 *)&LAB_181a4fd70);
  return;
}



############ FUN_ 180468ef0 size=39 ############

void FUN_180468ef0(void)

{
  FUN_18049c4e0(&DAT_182674c10,"use *external sidechain input* for the resonance detection");
  atexit((_func_5014 *)&LAB_181a4fda0);
  return;
}



############ FUN_ 180468f20 size=39 ############

void FUN_180468f20(void)

{
  FUN_18049c4e0(&DAT_182674b98,"*listen* to the external *sidechain input*");
  atexit((_func_5014 *)&LAB_181a4fdd0);
  return;
}



############ FUN_ 180468f50 size=39 ############

void FUN_180468f50(void)

{
  FUN_18049c4e0(&DAT_182674c20,
                "change the *balance* between the *dry* and the *processed* signal.\n\n100% is processed only.\n0% is dry only\nthe reduction graph will reflect changes to the wet/dry mix."
               );
  atexit((_func_5014 *)&LAB_181a4fe00);
  return;
}



############ FUN_ 180468f80 size=39 ############

void FUN_180468f80(void)

{
  FUN_18049c4e0(&DAT_182674bb0,
                "add *trim* (or gain) to the wet signal. \ncan be used to bring the *wet signal back to unity gain* when doing a/b comparison, and to *match wet and dry levels*."
               );
  atexit((_func_5014 *)&LAB_181a4fe30);
  return;
}



############ FUN_ 180468fb0 size=39 ############

void FUN_180468fb0(void)

{
  FUN_18049c4e0(&DAT_182674bc0,
                "monitor *the difference between wet and dry signals*, i.e. what has changed. when delta is enabled, the mix setting is ignored."
               );
  atexit((_func_5014 *)&LAB_181a4fe60);
  return;
}



############ FUN_ 180468fe0 size=39 ############

void FUN_180468fe0(void)

{
  FUN_18049c4e0(&DAT_182674be0,
                "latency-compensated and click-free bypass. \n \n*does not bypass the processing in the background*, so the cpu load will remain the same!"
               );
  atexit((_func_5014 *)&LAB_181a4fe90);
  return;
}



############ FUN_ 180469010 size=39 ############

void FUN_180469010(void)

{
  FUN_18049c4e0(&DAT_182674c08,"center *frequency* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4fec0);
  return;
}



############ FUN_ 180469040 size=39 ############

void FUN_180469040(void)

{
  FUN_18049c4e0(&DAT_182674c28,
                "*relative amount of processing* applied to the selected frequency band.\n\nhigher values mean more gain reduction or boost (depending on the processing mode, naturally)"
               );
  atexit((_func_5014 *)&LAB_181a4fef0);
  return;
}



############ FUN_ 180469070 size=39 ############

void FUN_180469070(void)

{
  FUN_18049c4e0(&DAT_182674c60,"sets the *q value* of the selected band.");
  atexit((_func_5014 *)&LAB_181a4ff20);
  return;
}



############ FUN_ 1804690a0 size=39 ############

void FUN_1804690a0(void)

{
  FUN_18049c4e0(&DAT_182674c50,"adjusts the relative amount each channel is affected by this band.")
  ;
  atexit((_func_5014 *)&LAB_181a4ff50);
  return;
}



############ FUN_ 1804690d0 size=39 ############

void FUN_1804690d0(void)

{
  FUN_18049c4e0(&DAT_182674bd0,
                "*listen button* allows you to monitor delta on a specific frequency band. \n \ndragging the button horizontally changes the center frequency and dragging the button vertically with the modifier key pressed (*cmd* on mac, *ctrl* on windows) changes the bandwidth. \n \ndragging the listen button enables listen mode only for the duration of the drag. listen mode can also be latched and unlatched by clicking this button."
               );
  atexit((_func_5014 *)&LAB_181a4ff80);
  return;
}



############ FUN_ 180469100 size=39 ############

void FUN_180469100(void)

{
  FUN_18049c4e0(&DAT_182674ba8,
                "toggles the selected band on and off from the overall sensitivity curve.");
  atexit((_func_5014 *)&LAB_181a4ffb0);
  return;
}



############ FUN_ 180469130 size=39 ############

void FUN_180469130(void)

{
  FUN_18049c4e0(&DAT_182674b70,
                "*listen* to the frequency area that the currently selected band affects. \n \ntemporarily enable listen mode by holding *alt while dragging* a band."
               );
  atexit((_func_5014 *)&LAB_181a4ffe0);
  return;
}



############ FUN_ 180469160 size=39 ############

void FUN_180469160(void)

{
  FUN_18049c4e0(&DAT_182674bf8,
                "whether or not to use external audio as the source for detecting resonances");
  atexit((_func_5014 *)&LAB_181a50010);
  return;
}



############ FUN_ 180469190 size=39 ############

void FUN_180469190(void)

{
  FUN_18049c4e0(&DAT_182674c70,
                "enable the sidechain. when enabled the sidechain signal is used as the source of the analysis"
               );
  atexit((_func_5014 *)&LAB_181a50040);
  return;
}



############ FUN_ 1804691c0 size=39 ############

void FUN_1804691c0(void)

{
  FUN_18049c4e0(&DAT_182674b90,"listen to the sidechain input");
  atexit((_func_5014 *)&LAB_181a50070);
  return;
}



############ FUN_ 1804691f0 size=39 ############

void FUN_1804691f0(void)

{
  FUN_18049c4e0(&DAT_182674c78,"6dB / oct");
  atexit((_func_5014 *)&LAB_181a500a0);
  return;
}



############ FUN_ 180469220 size=39 ############

void FUN_180469220(void)

{
  FUN_18049c4e0(&DAT_182674bc8,"12dB / oct");
  atexit((_func_5014 *)&LAB_181a500d0);
  return;
}



############ FUN_ 180469250 size=39 ############

void FUN_180469250(void)

{
  FUN_18049c4e0(&DAT_182674ba0,"24dB / oct");
  atexit((_func_5014 *)&LAB_181a50100);
  return;
}



############ FUN_ 180469280 size=39 ############

void FUN_180469280(void)

{
  FUN_18049c4e0(&DAT_182674c40,"48dB / oct");
  atexit((_func_5014 *)&LAB_181a50130);
  return;
}



############ FUN_ 1804692b0 size=39 ############

void FUN_1804692b0(void)

{
  FUN_18049c4e0(&DAT_182674bd8,"low shelf");
  atexit((_func_5014 *)&LAB_181a50160);
  return;
}



############ FUN_ 1804692e0 size=39 ############

void FUN_1804692e0(void)

{
  FUN_18049c4e0(&DAT_182674c18,"high shelf");
  atexit((_func_5014 *)&LAB_181a50190);
  return;
}



############ FUN_ 180469310 size=39 ############

void FUN_180469310(void)

{
  FUN_18049c4e0(&DAT_182674c00,"tilt shelf");
  atexit((_func_5014 *)&LAB_181a501c0);
  return;
}



############ FUN_ 180469340 size=39 ############

void FUN_180469340(void)

{
  FUN_18049c4e0(&DAT_182674b80,&DAT_182300284);
  atexit((_func_5014 *)&LAB_181a501f0);
  return;
}



############ FUN_ 180474610 size=547 ############

undefined8 FUN_180474610(longlong param_1,int param_2,undefined4 *param_3)

{
  longlong lVar1;
  int iVar2;
  undefined4 uVar3;
  longlong *plVar4;
  uint uVar5;
  uint *puVar6;
  longlong local_res20;
  longlong local_28;
  longlong local_20 [2];
  undefined4 *local_10;
  
  local_20[1] = 0xfffffffffffffffe;
  if (param_2 != 0) {
    if ((*(uint *)(param_1 + 0x8c) <= param_2 - 1U) ||
       (lVar1 = *(longlong *)(*(longlong *)(param_1 + 0x80) + (longlong)(int)(param_2 - 1U) * 8),
       lVar1 == 0)) {
      return 1;
    }
    uVar3 = FUN_180474b90(lVar1);
    *param_3 = uVar3;
    uVar3 = FUN_180474b90(*(undefined8 *)(lVar1 + 0x28));
    param_3[1] = uVar3;
    param_3[0x42] = 0xffffffff;
    local_20[0] = *(longlong *)(lVar1 + 8);
    puVar6 = (uint *)(local_20[0] + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      *puVar6 = *puVar6 + 1;
      UNLOCK();
    }
    FUN_1804741b0(param_3 + 2,local_20);
    if ((*puVar6 & 0x30000000) != 0) {
      return 0;
    }
    LOCK();
    uVar5 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar5 != 0) {
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    free(puVar6);
  }
  *param_3 = 0;
  param_3[1] = 0xffffffff;
  param_3[0x42] = 0xffffffff;
  FUN_18049c4e0(&local_res20,"Root Unit");
  lVar1 = DAT_1826739f8;
  local_10 = &DAT_182673984;
  do {
    LOCK();
    uVar5 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar5 != 0);
  if (DAT_1826739f8 == 0) {
    local_28 = local_res20;
    uVar5 = *(uint *)(local_res20 + -0x10);
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) != 0) &&
       (iVar2 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,*(undefined1 *)(DAT_1826739f8 + 0x38)
                              ,0), iVar2 < 0)) {
      FUN_181234570(*(undefined8 *)(lVar1 + 0x40),&local_28,&local_res20,&local_res20);
      goto LAB_18047471e;
    }
    iVar2 = FUN_1812498b0(lVar1 + 0x18,local_res20,*(undefined1 *)(lVar1 + 0x38),0);
    if (iVar2 < 0) {
      local_28 = local_res20;
      uVar5 = *(uint *)(local_res20 + -0x10);
    }
    else {
      plVar4 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar2);
      local_28 = *plVar4;
      uVar5 = *(uint *)(local_28 + -0x10);
    }
  }
  if ((uVar5 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_28 + -0x10) = *(int *)(local_28 + -0x10) + 1;
    UNLOCK();
  }
LAB_18047471e:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  FUN_1804741b0(param_3 + 2,&local_28);
  puVar6 = (uint *)(local_28 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return 0;
}



############ FUN_ 180476770 size=435 ############

undefined8 FUN_180476770(longlong param_1,int param_2,undefined4 *param_3,undefined8 param_4)

{
  longlong lVar1;
  int iVar2;
  longlong *plVar3;
  uint uVar4;
  uint *puVar5;
  longlong local_res8;
  longlong local_res20;
  undefined8 uVar6;
  undefined4 *puVar7;
  
  uVar6 = 0xfffffffffffffffe;
  if (*(longlong **)(param_1 + 0x20) != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001804767a8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar6 = (**(code **)(**(longlong **)(param_1 + 0x20) + 0x20))();
    return uVar6;
  }
  if (param_2 != 0) {
    memset(param_3,0,0x10c);
    return 1;
  }
  *param_3 = 0;
  param_3[1] = 0xffffffff;
  param_3[0x42] = 0xffffffff;
  FUN_18049c4e0(&local_res8,"Root Unit",param_3,param_4,0xfffffffffffffffe);
  lVar1 = DAT_1826739f8;
  puVar7 = &DAT_182673984;
  do {
    LOCK();
    uVar4 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar4 != 0);
  if (DAT_1826739f8 == 0) {
    local_res20 = local_res8;
    uVar4 = *(uint *)(local_res8 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar2 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res8,*(undefined1 *)(DAT_1826739f8 + 0x38),0,
                            uVar6,&DAT_182673984);
      if (iVar2 < 0) {
        FUN_181234570(*(undefined8 *)(lVar1 + 0x40),&local_res20,&local_res8,&local_res8);
        goto LAB_180476895;
      }
    }
    iVar2 = FUN_1812498b0(lVar1 + 0x18,local_res8,*(undefined1 *)(lVar1 + 0x38),0,uVar6,puVar7);
    if (iVar2 < 0) {
      local_res20 = local_res8;
      uVar4 = *(uint *)(local_res8 + -0x10);
    }
    else {
      plVar3 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar2);
      local_res20 = *plVar3;
      uVar4 = *(uint *)(local_res20 + -0x10);
    }
  }
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
LAB_180476895:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar5 = (uint *)(local_res8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1804741b0(param_3 + 2,&local_res20);
  puVar5 = (uint *)(local_res20 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return 0;
}



############ FUN_ 18124a4b0 size=236 ############

undefined8 * FUN_18124a4b0(undefined8 *param_1,size_t param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined1 local_20 [24];
  
  *param_1 = juce::OutputStream::vftable;
  FUN_18049c4e0(param_1 + 1,&DAT_182496878,param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::MemoryOutputStream::vftable;
  puVar1 = param_1 + 3;
  param_1[2] = puVar1;
  *puVar1 = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  if (param_1[4] != param_2) {
    pvVar2 = (void *)*puVar1;
    if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    if (pvVar2 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)0x0);
    }
    if (pvVar2 == (void *)0x0) {
      pvVar2 = malloc(param_2);
    }
    else {
      pvVar2 = realloc(pvVar2,param_2);
    }
    *puVar1 = pvVar2;
    if (pvVar2 == (void *)0x0) {
      FUN_1804719e0(local_20);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_20,(ThrowInfo *)&DAT_1825fec68);
    }
    param_1[4] = param_2;
  }
  return param_1;
}



############ FUN_ 180484030 size=130 ############

undefined8 * FUN_180484030(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,"TutorialOption");
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res8;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = TutorialOption::vftable;
  return param_1;
}



############ FUN_ 1804843b0 size=33 ############

undefined8 FUN_1804843b0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"UserDefaultPresetOption");
  return param_2;
}



############ FUN_ 180484970 size=401 ############

longlong *
FUN_180484970(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  char *pcVar4;
  longlong *plVar5;
  int iVar6;
  longlong local_res8;
  longlong *local_res10;
  longlong local_res18;
  longlong *local_res20;
  
  iVar6 = *(int *)(param_1 + 1);
  local_res10 = param_2;
  if (iVar6 == 0) {
    pcVar4 = "down";
    iVar6 = 0;
  }
  else if (iVar6 == 1) {
    pcVar4 = "up";
    iVar6 = 0;
  }
  else if (iVar6 == 2) {
    pcVar4 = "move";
    iVar6 = 0;
  }
  else {
    iVar6 = iVar6 + -3;
    if (iVar6 == 0) {
      pcVar4 = "drag";
    }
    else {
      plVar5 = param_2;
      if (iVar6 != 1) goto LAB_1804849f9;
      pcVar4 = "double_click";
    }
  }
  FUN_18049c4e0(&local_res8,pcVar4,iVar6,param_4,0,0xfffffffffffffffe);
  plVar5 = &local_res8;
LAB_1804849f9:
  FUN_18049c4e0(&local_res18,&DAT_182495df0);
  local_res20 = &local_res18;
  *param_2 = (longlong)&DAT_1821dbf98;
  uVar2 = FUN_181245ee0(param_2,*param_1);
  uVar2 = FUN_181232d30(uVar2,&local_res18);
  uVar2 = FUN_181232d30(uVar2,plVar5);
  uVar2 = FUN_181232d30(uVar2,&local_res18);
  uVar2 = FUN_181245f80(uVar2,*(undefined4 *)((longlong)param_1 + 0xc));
  uVar2 = FUN_181232d30(uVar2,&local_res18);
  uVar2 = FUN_181245f80(uVar2,*(undefined4 *)(param_1 + 2));
  uVar2 = FUN_181232d30(uVar2,&local_res18);
  uVar2 = FUN_181245f80(uVar2,*(undefined4 *)((longlong)param_1 + 0x14));
  uVar2 = FUN_181232d30(uVar2,&local_res18);
  FUN_181232d30(uVar2,param_1 + 3);
  puVar3 = (uint *)(local_res18 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(local_res8 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  return param_2;
}



############ FUN_ 1811e4400 size=182 ############

undefined8 *
FUN_1811e4400(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined8 local_res10;
  longlong local_res18;
  
  FUN_18049c4e0(&local_res10,"AorBStateOption",param_3,param_4,0xfffffffffffffffe);
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res10;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = AorBStateOption::vftable;
  local_res18 = param_1[1];
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1811efc90(param_2,&local_res18);
  return param_1;
}



############ FUN_ 1811e4590 size=182 ############

undefined8 *
FUN_1811e4590(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined8 local_res10;
  longlong local_res18;
  
  FUN_18049c4e0(&local_res10,"PresetNameOption",param_3,param_4,0xfffffffffffffffe);
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res10;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = PresetNameOption::vftable;
  local_res18 = param_1[1];
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1811efc90(param_2,&local_res18);
  return param_1;
}



############ FUN_ 18048b760 size=208 ############

undefined8 *
FUN_18048b760(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res10;
  longlong *local_res18;
  
  FUN_18049c4e0(&local_res10,&DAT_1821d9564,param_3,param_4,0,0xfffffffffffffffe);
  local_res18 = &local_res10;
  *param_1 = &DAT_1821dbf98;
  uVar2 = FUN_181232d30(param_1,param_2);
  uVar2 = FUN_181232d30(uVar2,&local_res10);
  uVar2 = FUN_181232d30(uVar2,param_3);
  uVar2 = FUN_181232d30(uVar2,&local_res10);
  FUN_181232d30(uVar2,param_4);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181184390 size=186 ############

undefined8 *
FUN_181184390(undefined8 *param_1,longlong *param_2,undefined1 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  
  *param_1 = Preset::vftable;
  param_1[1] = 0;
  param_1[2] = &DAT_1821dbf98;
  FUN_18049c4e0(param_1 + 3,&DAT_1821d8e3f,param_3,param_4,0xfffffffffffffffe);
  lVar2 = *param_2;
  param_1[4] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined1 *)(param_1 + 5) = param_3;
  param_1[6] = 0;
  param_1[7] = 0;
  FUN_18117f810(param_1);
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18116af90 size=1253 ############

/* WARNING: Removing unreachable block (ram,0x00018116b0cd) */
/* WARNING: Removing unreachable block (ram,0x00018116b00f) */
/* WARNING: Removing unreachable block (ram,0x00018116b028) */
/* WARNING: Removing unreachable block (ram,0x00018116b0ec) */

void FUN_18116af90(longlong param_1)

{
  uint uVar1;
  uint *puVar2;
  undefined8 in_R11;
  int unaff_retaddr;
  undefined1 auStack_1e8 [32];
  longlong *local_1c8;
  undefined *local_1b8;
  undefined8 local_1b0;
  undefined4 local_1a4;
  undefined *local_198;
  undefined4 local_188;
  undefined8 local_160;
  undefined8 local_158;
  uint local_148 [6];
  undefined4 local_130;
  longlong local_128 [11];
  longlong local_d0;
  undefined8 local_98;
  ulonglong local_38;
  
  local_98 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_1e8;
  local_1a4 = 0;
  local_188 = 4000;
  local_130 = 0xf80;
  local_d0 = param_1;
  FUN_18049c4e0(local_128,&DAT_1821d9534);
  local_160 = 0;
  local_158 = 0;
  local_1a4 = 2;
  local_1c8 = local_128;
  FUN_181240a50(param_1 + 0x30,&local_160,7);
  FUN_1804951e0(local_128[0] + -0x10);
  do {
    puVar2 = local_148;
    FUN_18116adbd();
    *puVar2 = 0xcad78885;
    uVar1 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar1 != 0);
  uVar1 = ~(~local_148[0] ^ 0x3b523cc0) + 0x4993ffcb;
  uVar1 = (uVar1 >> 0x1e | uVar1 * 4) ^ 0xb816fa25;
  uVar1 = (uVar1 << 0x1c | uVar1 >> 4) ^ 0xd4ddf9a;
  local_1b0 = 0;
  local_1b8 = &DAT_180a8261c;
  local_198 = &DAT_180a847f4;
  FUN_18116d2ce(&DAT_180a847f4,4,0xb944f138,0xd7125edc,&LAB_18116c2b9,&LAB_18116c438,&LAB_181164e85,
                &DAT_18116b4cd,0x180000000,in_R11,uVar1 << 0x1d | uVar1 >> 3);
  return;
}



############ FUN_ 1812258f0 size=501 ############

undefined8 * FUN_1812258f0(longlong param_1,undefined8 *param_2,char *param_3)

{
  int *_Memory;
  byte bVar1;
  byte bVar2;
  byte bVar3;
  char cVar4;
  int iVar5;
  longlong lVar6;
  void *_Memory_00;
  byte *pbVar7;
  undefined8 local_res8;
  undefined8 local_38;
  undefined8 local_30;
  longlong local_28;
  longlong local_20;
  longlong local_18;
  
  *(char **)(param_1 + 8) = param_3;
  *(undefined2 *)(param_1 + 0x10) = 0;
  *(undefined1 *)(param_1 + 0x38) = 1;
  if (*param_3 == '\0') {
    FUN_18049c4e0(&local_res8,"not enough input");
    lVar6 = *(longlong *)(param_1 + 0x18);
    local_28 = lVar6;
  }
  else {
    FUN_181224ea0();
    iVar5 = FUN_18049d4b0(*(undefined8 *)(param_1 + 8),"<?xml",5);
    if (iVar5 == 0) {
      pbVar7 = *(byte **)(param_1 + 8);
      iVar5 = FUN_18049d4b0(pbVar7,&DAT_1821db26c,2);
      while (iVar5 != 0) {
        bVar1 = *pbVar7;
        if (bVar1 == 0) goto LAB_181225a60;
        pbVar7 = pbVar7 + 1;
        if ((char)bVar1 < '\0') {
          bVar3 = 0x40;
          bVar2 = bVar1 & 0x40;
          while ((bVar2 != 0 && (8 < bVar3))) {
            pbVar7 = pbVar7 + 1;
            bVar3 = bVar3 >> 1;
            bVar2 = bVar1 & bVar3;
          }
        }
        iVar5 = FUN_18049d4b0(pbVar7,&DAT_1821db26c,2);
      }
      if (*pbVar7 == 0) {
LAB_181225a60:
        FUN_18049c4e0(&local_38,"malformed header");
        lVar6 = *(longlong *)(param_1 + 0x18);
        local_res8 = local_38;
        local_20 = lVar6;
        goto LAB_181225a33;
      }
      iVar5 = 1;
      do {
        bVar1 = *pbVar7;
        pbVar7 = pbVar7 + 1;
        if ((char)bVar1 < '\0') {
          bVar3 = 0x40;
          bVar2 = bVar1 & 0x40;
          while ((bVar2 != 0 && (8 < bVar3))) {
            pbVar7 = pbVar7 + 1;
            bVar3 = bVar3 >> 1;
            bVar2 = bVar1 & bVar3;
          }
        }
        iVar5 = iVar5 + -1;
      } while (-1 < iVar5);
      *(byte **)(param_1 + 8) = pbVar7;
      FUN_181224ea0(param_1);
    }
    cVar4 = FUN_1812254c0(param_1);
    if (cVar4 != '\0') {
      FUN_181234400(param_1 + 0x18);
      _Memory_00 = (void *)FUN_181224610(param_1,1);
      if (*(char *)(param_1 + 0x11) == '\0') {
        *param_2 = _Memory_00;
        return param_2;
      }
      if (_Memory_00 != (void *)0x0) {
        FUN_1812472e0(_Memory_00);
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      goto LAB_181225acd;
    }
    FUN_18049c4e0(&local_30,"malformed DTD");
    lVar6 = *(longlong *)(param_1 + 0x18);
    local_res8 = local_30;
    local_18 = lVar6;
  }
LAB_181225a33:
  *(undefined8 *)(param_1 + 0x18) = local_res8;
  _Memory = (int *)(lVar6 + -0x10);
  if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar5 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
LAB_181225acd:
  *param_2 = 0;
  return param_2;
}



############ FUN_ 1812237a0 size=3670 ############

void FUN_1812237a0(longlong param_1,longlong param_2)

{
  int *piVar1;
  byte bVar2;
  undefined1 uVar3;
  longlong *plVar4;
  byte bVar5;
  uint uVar6;
  int iVar7;
  byte *pbVar8;
  undefined8 uVar9;
  longlong *plVar10;
  uint *puVar11;
  byte *pbVar12;
  byte bVar13;
  int iVar14;
  longlong lVar15;
  longlong *plVar16;
  uint uVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  bool bVar20;
  byte *local_res10;
  longlong local_res18;
  byte *local_res20;
  longlong local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  byte *local_c0;
  longlong local_b8 [2];
  longlong local_a8 [2];
  longlong *local_98;
  longlong local_80;
  ulonglong local_70;
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  pbVar8 = *(byte **)(param_1 + 8);
  FUN_181224ea0();
  uVar19 = 1;
  plVar16 = (longlong *)(param_2 + 8);
LAB_1812237e1:
  do {
    if (*(char *)(param_1 + 0x10) != '\0') {
      FUN_18049c4e0(&local_c8,"unmatched tags");
      if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar15 = *(longlong *)(param_1 + 0x18);
      *(longlong *)(param_1 + 0x18) = local_c8;
      UNLOCK();
      puVar11 = (uint *)(lVar15 + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar17 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      *(undefined1 *)(param_1 + 0x11) = 1;
      if ((*(uint *)(local_c8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar1 = (int *)(local_c8 + -0x10);
        iVar14 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar14 == 0) {
                    /* WARNING: Subroutine does not return */
          free((void *)(local_c8 + -0x10));
        }
      }
      return;
    }
    bVar2 = **(byte **)(param_1 + 8);
    uVar17 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar6 = 0x40;
      iVar14 = 0;
      uVar17 = 0x7f;
      if ((bVar2 & 0x40) != 0) {
        do {
          if (uVar6 < 9) break;
          uVar17 = uVar17 >> 1;
          iVar14 = iVar14 + 1;
          uVar6 = uVar6 >> 1;
        } while ((bVar2 & uVar6) != 0);
      }
      uVar17 = bVar2 & uVar17;
      if (0 < iVar14) {
        uVar18 = uVar19;
        do {
          bVar2 = (*(byte **)(param_1 + 8))[uVar18];
          if ((bVar2 & 0xc0) != 0x80) break;
          uVar17 = bVar2 & 0x3f | uVar17 << 6;
          uVar18 = uVar18 + 1;
        } while ((longlong)uVar18 <= (longlong)iVar14);
      }
    }
    if (uVar17 != 0x3c) {
      *(byte **)(param_1 + 8) = pbVar8;
      FUN_18124a4b0(local_a8);
      bVar20 = *(char *)(param_1 + 0x39) == '\0';
LAB_181223d70:
      bVar2 = **(byte **)(param_1 + 8);
      uVar17 = (uint)bVar2;
      if ((char)bVar2 < '\0') {
        uVar6 = 0x40;
        iVar14 = 0;
        uVar17 = 0x7f;
        if ((bVar2 & 0x40) != 0) {
          do {
            if (uVar6 < 9) break;
            uVar17 = uVar17 >> 1;
            iVar14 = iVar14 + 1;
            uVar6 = uVar6 >> 1;
          } while ((bVar2 & uVar6) != 0);
        }
        uVar17 = bVar2 & uVar17;
        if (0 < iVar14) {
          uVar18 = uVar19;
          do {
            bVar2 = (*(byte **)(param_1 + 8))[uVar18];
            if ((bVar2 & 0xc0) != 0x80) break;
            uVar17 = bVar2 & 0x3f | uVar17 << 6;
            uVar18 = uVar18 + 1;
          } while ((longlong)uVar18 <= (longlong)iVar14);
        }
      }
      if (uVar17 != 0x3c) {
        if (uVar17 == 0) {
          FUN_18049c4e0(&local_d0,"unmatched tags");
          if ((*(uint *)(local_d0 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
            UNLOCK();
          }
          LOCK();
          lVar15 = *(longlong *)(param_1 + 0x18);
          *(longlong *)(param_1 + 0x18) = local_d0;
          UNLOCK();
          puVar11 = (uint *)(lVar15 + -0x10);
          if ((*puVar11 & 0x30000000) == 0) {
            LOCK();
            uVar17 = *puVar11;
            *puVar11 = *puVar11 - 1;
            UNLOCK();
            if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar11);
            }
          }
          *(undefined1 *)(param_1 + 0x11) = 1;
          uVar17 = *(uint *)(local_d0 + -0x10);
          local_e0 = local_d0;
LAB_18122454c:
          if ((uVar17 & 0x30000000) != 0) goto LAB_181224569;
          LOCK();
          piVar1 = (int *)(local_e0 + -0x10);
          iVar14 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          goto LAB_18122455b;
        }
        if (uVar17 != 0x26) {
          do {
            bVar2 = **(byte **)(param_1 + 8);
            uVar17 = (uint)bVar2;
            if ((char)bVar2 < '\0') {
              uVar17 = 0x7f;
              uVar6 = 0x40;
              iVar14 = 0;
              if ((bVar2 & 0x40) != 0) {
                do {
                  if (uVar6 < 9) break;
                  uVar17 = uVar17 >> 1;
                  iVar14 = iVar14 + 1;
                  uVar6 = uVar6 >> 1;
                } while ((bVar2 & uVar6) != 0);
              }
              uVar17 = bVar2 & uVar17;
              if (0 < iVar14) {
                uVar18 = uVar19;
                do {
                  bVar2 = (*(byte **)(param_1 + 8))[uVar18];
                  if ((bVar2 & 0xc0) != 0x80) break;
                  uVar17 = bVar2 & 0x3f | uVar17 << 6;
                  uVar18 = uVar18 + 1;
                } while ((longlong)uVar18 <= (longlong)iVar14);
              }
            }
            if (uVar17 == 0xd) {
              uVar17 = 10;
              bVar2 = **(byte **)(param_1 + 8);
              local_res20 = *(byte **)(param_1 + 8) + 1;
              if ((char)bVar2 < '\0') {
                bVar13 = 0x40;
                bVar5 = bVar2 & 0x40;
                while ((bVar5 != 0 && (8 < bVar13))) {
                  local_res20 = local_res20 + 1;
                  bVar13 = bVar13 >> 1;
                  bVar5 = bVar2 & bVar13;
                }
              }
              iVar14 = FUN_180492f10(&local_res20);
              if (iVar14 != 10) goto LAB_18122431e;
            }
            else {
              if ((uVar17 == 0x3c) || (uVar17 == 0x26)) goto LAB_181223d70;
              if (uVar17 == 0) {
                FUN_18049c4e0(&local_d8,"unmatched tags");
                if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
                  LOCK();
                  *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
                  UNLOCK();
                }
                LOCK();
                lVar15 = *(longlong *)(param_1 + 0x18);
                *(longlong *)(param_1 + 0x18) = local_d8;
                UNLOCK();
                puVar11 = (uint *)(lVar15 + -0x10);
                if ((*puVar11 & 0x30000000) == 0) {
                  LOCK();
                  uVar17 = *puVar11;
                  *puVar11 = *puVar11 - 1;
                  UNLOCK();
                  if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
                    free(puVar11);
                  }
                }
                *(undefined1 *)(param_1 + 0x11) = 1;
                uVar17 = *(uint *)(local_d8 + -0x10);
                local_e0 = local_d8;
                goto LAB_18122454c;
              }
LAB_18122431e:
              FUN_181234d10(local_a8,uVar17);
              if ((bVar20) || (iVar14 = iswspace((wint_t)uVar17), iVar14 == 0)) {
                bVar20 = true;
              }
            }
            bVar2 = **(byte **)(param_1 + 8);
            pbVar8 = *(byte **)(param_1 + 8) + 1;
            *(byte **)(param_1 + 8) = pbVar8;
            if ((char)bVar2 < '\0') {
              bVar13 = 0x40;
              bVar5 = bVar2 & 0x40;
              while ((bVar5 != 0 && (8 < bVar13))) {
                pbVar8 = pbVar8 + 1;
                *(byte **)(param_1 + 8) = pbVar8;
                bVar13 = bVar13 >> 1;
                bVar5 = bVar2 & bVar13;
              }
            }
          } while( true );
        }
        local_res10 = &DAT_1821dbf98;
        FUN_181222c20(param_1,&local_res10);
        iVar14 = FUN_180492f10(&local_res10);
        if ((iVar14 == 0x3c) && (iVar14 = FUN_180493050(&local_res10,1), iVar14 != 0)) {
          uVar9 = *(undefined8 *)(param_1 + 8);
          uVar3 = *(undefined1 *)(param_1 + 0x10);
          *(byte **)(param_1 + 8) = local_res10;
          *(undefined1 *)(param_1 + 0x10) = 0;
          plVar10 = (longlong *)FUN_181224610(param_1);
          while (plVar4 = plVar10, plVar4 != (longlong *)0x0) {
            *plVar16 = (longlong)plVar4;
            plVar10 = (longlong *)FUN_181224610(param_1);
            plVar16 = plVar4;
          }
          *(undefined8 *)(param_1 + 8) = uVar9;
          *(undefined1 *)(param_1 + 0x10) = uVar3;
        }
        else {
          uVar9 = FUN_18049d240(local_res10);
          (**(code **)(local_a8[0] + 0x20))(local_a8,local_res10,uVar9);
          if (bVar20) {
LAB_181224230:
            bVar20 = true;
          }
          else {
            bVar2 = *local_res10;
            pbVar8 = local_res10;
            while (bVar2 != 0) {
              bVar2 = *pbVar8;
              if ((bVar2 != 0x20) && (4 < (byte)(bVar2 - 9))) goto LAB_181224230;
              pbVar8 = pbVar8 + 1;
              if ((char)bVar2 < '\0') {
                bVar13 = 0x40;
                bVar5 = bVar2 & 0x40;
                while ((bVar5 != 0 && (8 < bVar13))) {
                  pbVar8 = pbVar8 + 1;
                  bVar13 = bVar13 >> 1;
                  bVar5 = bVar2 & bVar13;
                }
              }
              bVar2 = *pbVar8;
            }
            bVar20 = false;
          }
        }
        puVar11 = (uint *)(local_res10 + -0x10);
        if ((*puVar11 & 0x30000000) == 0) {
          LOCK();
          uVar17 = *puVar11;
          *puVar11 = *puVar11 - 1;
          UNLOCK();
          if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar11);
          }
        }
        goto LAB_181223d70;
      }
      pbVar12 = *(byte **)(param_1 + 8);
      bVar2 = *pbVar12;
      pbVar8 = pbVar12 + 1;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = *pbVar8;
      uVar17 = (uint)bVar2;
      if ((char)bVar2 < '\0') {
        uVar6 = 0x40;
        uVar17 = 0x7f;
        iVar14 = 0;
        if ((bVar2 & 0x40) != 0) {
          do {
            if (uVar6 < 9) break;
            uVar17 = uVar17 >> 1;
            iVar14 = iVar14 + 1;
            uVar6 = uVar6 >> 1;
          } while ((bVar2 & uVar6) != 0);
        }
        uVar17 = bVar2 & uVar17;
        uVar18 = uVar19;
        if (0 < (longlong)iVar14) {
          do {
            if ((pbVar8[uVar18] & 0xc0) != 0x80) break;
            uVar17 = pbVar8[uVar18] & 0x3f | uVar17 << 6;
            uVar18 = uVar18 + 1;
          } while ((longlong)uVar18 <= (longlong)iVar14);
        }
      }
      pbVar8 = pbVar12;
      uVar18 = uVar19;
      if (uVar17 == 0x21) {
        do {
          bVar2 = *pbVar8;
          pbVar8 = pbVar8 + 1;
          if ((char)bVar2 < '\0') {
            bVar13 = 0x40;
            bVar5 = bVar2 & 0x40;
            while ((bVar5 != 0 && (8 < bVar13))) {
              pbVar8 = pbVar8 + 1;
              bVar13 = bVar13 >> 1;
              bVar5 = bVar2 & bVar13;
            }
          }
          uVar17 = (int)uVar18 - 1;
          uVar18 = (ulonglong)uVar17;
        } while (-1 < (int)uVar17);
        bVar2 = *pbVar8;
        uVar17 = (uint)bVar2;
        if ((char)bVar2 < '\0') {
          uVar6 = 0x40;
          uVar17 = 0x7f;
          iVar14 = 0;
          if ((bVar2 & 0x40) != 0) {
            do {
              if (uVar6 < 9) break;
              uVar17 = uVar17 >> 1;
              iVar14 = iVar14 + 1;
              uVar6 = uVar6 >> 1;
            } while ((bVar2 & uVar6) != 0);
          }
          uVar17 = bVar2 & uVar17;
          uVar18 = uVar19;
          if (0 < (longlong)iVar14) {
            do {
              if ((pbVar8[uVar18] & 0xc0) != 0x80) break;
              uVar17 = pbVar8[uVar18] & 0x3f | uVar17 << 6;
              uVar18 = uVar18 + 1;
            } while ((longlong)uVar18 <= (longlong)iVar14);
          }
        }
        if (uVar17 != 0x2d) goto LAB_18122437a;
        iVar14 = 2;
        do {
          bVar2 = *pbVar12;
          pbVar12 = pbVar12 + 1;
          if ((char)bVar2 < '\0') {
            bVar13 = 0x40;
            bVar5 = bVar2 & 0x40;
            while ((bVar5 != 0 && (8 < bVar13))) {
              pbVar12 = pbVar12 + 1;
              bVar13 = bVar13 >> 1;
              bVar5 = bVar2 & bVar13;
            }
          }
          iVar14 = iVar14 + -1;
        } while (-1 < iVar14);
        bVar2 = *pbVar12;
        uVar17 = (uint)bVar2;
        if ((char)bVar2 < '\0') {
          uVar6 = 0x40;
          uVar17 = 0x7f;
          iVar14 = 0;
          if ((bVar2 & 0x40) != 0) {
            do {
              if (uVar6 < 9) break;
              uVar17 = uVar17 >> 1;
              iVar14 = iVar14 + 1;
              uVar6 = uVar6 >> 1;
            } while ((bVar2 & uVar6) != 0);
          }
          uVar17 = bVar2 & uVar17;
          uVar18 = uVar19;
          if (0 < (longlong)iVar14) {
            do {
              if ((pbVar12[uVar18] & 0xc0) != 0x80) break;
              uVar17 = pbVar12[uVar18] & 0x3f | uVar17 << 6;
              uVar18 = uVar18 + 1;
            } while ((longlong)uVar18 <= (longlong)iVar14);
          }
        }
        if (uVar17 != 0x2d) goto LAB_18122437a;
        bVar2 = **(byte **)(param_1 + 8);
        pbVar8 = *(byte **)(param_1 + 8) + 1;
        *(byte **)(param_1 + 8) = pbVar8;
        if ((char)bVar2 < '\0') {
          bVar13 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar13))) {
            pbVar8 = pbVar8 + 1;
            *(byte **)(param_1 + 8) = pbVar8;
            bVar13 = bVar13 >> 1;
            bVar5 = bVar2 & bVar13;
          }
        }
        bVar2 = **(byte **)(param_1 + 8);
        *(byte **)(param_1 + 8) = *(byte **)(param_1 + 8) + 1;
        if ((char)bVar2 < '\0') {
          bVar13 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar13))) {
            *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 1;
            bVar13 = bVar13 >> 1;
            bVar5 = bVar2 & bVar13;
          }
        }
        bVar2 = **(byte **)(param_1 + 8);
        pbVar8 = *(byte **)(param_1 + 8) + 1;
        *(byte **)(param_1 + 8) = pbVar8;
        if ((char)bVar2 < '\0') {
          bVar13 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar13))) {
            pbVar8 = pbVar8 + 1;
            *(byte **)(param_1 + 8) = pbVar8;
            bVar13 = bVar13 >> 1;
            bVar5 = bVar2 & bVar13;
          }
        }
        bVar2 = **(byte **)(param_1 + 8);
        pbVar8 = *(byte **)(param_1 + 8) + 1;
        *(byte **)(param_1 + 8) = pbVar8;
        if ((char)bVar2 < '\0') {
          bVar13 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar13))) {
            pbVar8 = pbVar8 + 1;
            *(byte **)(param_1 + 8) = pbVar8;
            bVar13 = bVar13 >> 1;
            bVar5 = bVar2 & bVar13;
          }
        }
        pbVar8 = *(byte **)(param_1 + 8);
        iVar14 = 0;
        iVar7 = FUN_18049d4b0(pbVar8,&DAT_1821db334);
        while (iVar7 != 0) {
          bVar2 = *pbVar8;
          pbVar8 = pbVar8 + 1;
          uVar17 = (uint)bVar2;
          if ((char)bVar2 < '\0') {
            uVar17 = 0x7f;
            uVar6 = 0x40;
            iVar7 = 0;
            if ((bVar2 & 0x40) != 0) {
              do {
                if (uVar6 < 9) break;
                uVar17 = uVar17 >> 1;
                iVar7 = iVar7 + 1;
                uVar6 = uVar6 >> 1;
              } while ((bVar2 & uVar6) != 0);
            }
            uVar17 = bVar2 & uVar17;
            for (; (iVar7 = iVar7 + -1, -1 < iVar7 && ((*pbVar8 & 0xc0) == 0x80));
                pbVar8 = pbVar8 + 1) {
              uVar17 = *pbVar8 & 0x3f | uVar17 << 6;
            }
          }
          if (uVar17 == 0) goto LAB_181224432;
          iVar14 = iVar14 + 1;
          iVar7 = FUN_18049d4b0(pbVar8,&DAT_1821db334);
        }
        if (iVar14 < 0) {
LAB_181224432:
          FUN_18049c4e0(&local_e0,"unterminated comment");
          if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
            UNLOCK();
          }
          LOCK();
          lVar15 = *(longlong *)(param_1 + 0x18);
          *(longlong *)(param_1 + 0x18) = local_e0;
          UNLOCK();
          puVar11 = (uint *)(lVar15 + -0x10);
          if ((*puVar11 & 0x30000000) == 0) {
            LOCK();
            uVar17 = *puVar11;
            *puVar11 = *puVar11 - 1;
            UNLOCK();
            if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar11);
            }
          }
          *(undefined1 *)(param_1 + 0x11) = 1;
          if ((*(uint *)(local_e0 + -0x10) & 0x30000000) != 0) goto LAB_181224569;
          LOCK();
          piVar1 = (int *)(local_e0 + -0x10);
          iVar14 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
LAB_18122455b:
          if (iVar14 == 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)(local_e0 + -0x10));
          }
LAB_181224569:
          *(undefined1 *)(param_1 + 0x10) = 1;
          FUN_18124a420(local_a8);
          return;
        }
        FUN_180492fc0(param_1 + 8);
        goto LAB_181223d70;
      }
LAB_18122437a:
      plVar10 = plVar16;
      if (bVar20) {
        lVar15 = local_80;
        if (local_98 != (longlong *)0x0) {
          if (local_70 < (ulonglong)local_98[1]) {
            *(undefined1 *)(local_70 + *local_98) = 0;
          }
          lVar15 = *local_98;
        }
        FUN_18124a8a0(&local_e8,lVar15,local_70 + lVar15);
        plVar10 = (longlong *)FUN_1812207e0(&local_e8);
        *plVar16 = (longlong)plVar10;
        puVar11 = (uint *)(local_e8 + -0x10);
        if ((*puVar11 & 0x30000000) == 0) {
          LOCK();
          uVar17 = *puVar11;
          *puVar11 = *puVar11 - 1;
          UNLOCK();
          if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar11);
          }
        }
      }
      FUN_18124a420(local_a8);
      goto LAB_1812243fa;
    }
    pbVar12 = *(byte **)(param_1 + 8);
    bVar2 = *pbVar12;
    pbVar8 = pbVar12 + 1;
    if ((char)bVar2 < '\0') {
      bVar13 = 0x40;
      bVar5 = bVar2 & 0x40;
      while ((bVar5 != 0 && (8 < bVar13))) {
        pbVar8 = pbVar8 + 1;
        bVar13 = bVar13 >> 1;
        bVar5 = bVar2 & bVar13;
      }
    }
    bVar2 = *pbVar8;
    uVar17 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar6 = 0x40;
      uVar17 = 0x7f;
      iVar14 = 0;
      if ((bVar2 & 0x40) != 0) {
        do {
          if (uVar6 < 9) break;
          uVar17 = uVar17 >> 1;
          iVar14 = iVar14 + 1;
          uVar6 = uVar6 >> 1;
        } while ((bVar2 & uVar6) != 0);
      }
      uVar17 = bVar2 & uVar17;
      uVar18 = uVar19;
      if (0 < (longlong)iVar14) {
        do {
          if ((pbVar8[uVar18] & 0xc0) != 0x80) break;
          uVar17 = pbVar8[uVar18] & 0x3f | uVar17 << 6;
          uVar18 = uVar18 + 1;
        } while ((longlong)uVar18 <= (longlong)iVar14);
      }
    }
    if (uVar17 == 0x2f) {
      iVar14 = FUN_18049bc80(*(undefined8 *)(param_1 + 8),0x3e);
      if (iVar14 < 0) {
        return;
      }
      FUN_180492fc0(param_1 + 8,iVar14 + 1);
      return;
    }
    uVar18 = uVar19;
    if (uVar17 == 0x21) {
      do {
        bVar2 = *pbVar12;
        local_c0 = pbVar12 + 1;
        if ((char)bVar2 < '\0') {
          bVar13 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar13))) {
            local_c0 = local_c0 + 1;
            bVar13 = bVar13 >> 1;
            bVar5 = bVar2 & bVar13;
          }
        }
        uVar17 = (int)uVar18 - 1;
        pbVar12 = local_c0;
        uVar18 = (ulonglong)uVar17;
      } while (-1 < (int)uVar17);
      iVar14 = FUN_18049d4b0(local_c0,"[CDATA[",7);
      if (iVar14 != 0) goto LAB_181223d1e;
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      *(byte **)(param_1 + 8) = *(byte **)(param_1 + 8) + 1;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 1;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      uVar9 = *(undefined8 *)(param_1 + 8);
LAB_181223af0:
      bVar2 = **(byte **)(param_1 + 8);
      uVar17 = (uint)bVar2;
      if ((char)bVar2 < '\0') {
        uVar6 = 0x40;
        iVar14 = 0;
        uVar17 = 0x7f;
        if ((bVar2 & 0x40) != 0) {
          do {
            if (uVar6 < 9) break;
            uVar17 = uVar17 >> 1;
            iVar14 = iVar14 + 1;
            uVar6 = uVar6 >> 1;
          } while ((bVar2 & uVar6) != 0);
        }
        uVar17 = bVar2 & uVar17;
        if (0 < iVar14) {
          uVar18 = uVar19;
          do {
            bVar2 = (*(byte **)(param_1 + 8))[uVar18];
            if ((bVar2 & 0xc0) != 0x80) break;
            uVar17 = bVar2 & 0x3f | uVar17 << 6;
            uVar18 = uVar18 + 1;
          } while ((longlong)uVar18 <= (longlong)iVar14);
        }
      }
      if (uVar17 == 0) {
        FUN_18049c4e0(&local_res18);
        if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        lVar15 = *(longlong *)(param_1 + 0x18);
        *(longlong *)(param_1 + 0x18) = local_res18;
        UNLOCK();
        puVar11 = (uint *)(lVar15 + -0x10);
        if ((*puVar11 & 0x30000000) == 0) {
          LOCK();
          uVar17 = *puVar11;
          *puVar11 = *puVar11 - 1;
          UNLOCK();
          if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar11);
          }
        }
        *(undefined1 *)(param_1 + 0x11) = 1;
        if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar1 = (int *)(local_res18 + -0x10);
          iVar14 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar14 == 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)(local_res18 + -0x10));
          }
        }
        *(undefined1 *)(param_1 + 0x10) = 1;
        pbVar8 = *(byte **)(param_1 + 8);
        FUN_181224ea0(param_1);
        goto LAB_1812237e1;
      }
      if (((uVar17 != 0x5d) || (iVar14 = FUN_180493050(param_1 + 8,1), iVar14 != 0x5d)) ||
         (iVar14 = FUN_180493050(param_1 + 8,2), iVar14 != 0x3e)) {
        bVar2 = **(byte **)(param_1 + 8);
        pbVar8 = *(byte **)(param_1 + 8) + 1;
        *(byte **)(param_1 + 8) = pbVar8;
        if ((char)bVar2 < '\0') {
          bVar13 = 0x40;
          bVar5 = bVar2 & 0x40;
          while ((bVar5 != 0 && (8 < bVar13))) {
            pbVar8 = pbVar8 + 1;
            *(byte **)(param_1 + 8) = pbVar8;
            bVar13 = bVar13 >> 1;
            bVar5 = bVar2 & bVar13;
          }
        }
        goto LAB_181223af0;
      }
      uVar9 = FUN_18124a8a0(local_b8,uVar9,*(undefined8 *)(param_1 + 8));
      plVar10 = (longlong *)FUN_1812207e0(uVar9);
      *plVar16 = (longlong)plVar10;
      puVar11 = (uint *)(local_b8[0] + -0x10);
      if ((*puVar11 & 0x30000000) == 0) {
        LOCK();
        uVar17 = *puVar11;
        *puVar11 = *puVar11 - 1;
        UNLOCK();
        if (uVar17 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar11);
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      *(byte **)(param_1 + 8) = *(byte **)(param_1 + 8) + 1;
      if ((char)bVar2 < '\0') {
        bVar13 = 0x40;
        bVar5 = bVar2 & 0x40;
        while ((bVar5 != 0 && (8 < bVar13))) {
          *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 1;
          bVar13 = bVar13 >> 1;
          bVar5 = bVar2 & bVar13;
        }
      }
      bVar2 = **(byte **)(param_1 + 8);
      pbVar8 = *(byte **)(param_1 + 8) + 1;
      *(byte **)(param_1 + 8) = pbVar8;
      if (((char)bVar2 < '\0') && (bVar5 = 0x40, (bVar2 & 0x40) != 0)) {
        do {
          if (bVar5 < 9) goto LAB_1812243fa;
          pbVar8 = pbVar8 + 1;
          *(byte **)(param_1 + 8) = pbVar8;
          bVar5 = bVar5 >> 1;
        } while ((bVar2 & bVar5) != 0);
        FUN_181224ea0(param_1);
        plVar16 = plVar10;
      }
      else {
LAB_1812243fa:
        pbVar8 = *(byte **)(param_1 + 8);
        FUN_181224ea0(param_1);
        plVar16 = plVar10;
      }
    }
    else {
LAB_181223d1e:
      plVar10 = (longlong *)FUN_181224610(param_1);
      if (plVar10 == (longlong *)0x0) {
        return;
      }
      *plVar16 = (longlong)plVar10;
      pbVar8 = *(byte **)(param_1 + 8);
      FUN_181224ea0(param_1);
      plVar16 = plVar10;
    }
  } while( true );
}



############ FUN_ 181222c20 size=2935 ############

void FUN_181222c20(longlong param_1,undefined8 param_2)

{
  longlong *plVar1;
  int *piVar2;
  longlong lVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  wint_t wVar7;
  wint_t wVar8;
  uint uVar9;
  uint uVar10;
  undefined8 uVar11;
  uint uVar12;
  uint *puVar13;
  uint uVar14;
  uint uVar15;
  byte *pbVar17;
  byte *pbVar18;
  longlong lVar19;
  int iVar20;
  ulonglong uVar21;
  int iVar22;
  undefined4 local_res18;
  char local_res20 [8];
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  undefined8 local_50;
  ulonglong uVar16;
  
  local_50 = 0xfffffffffffffffe;
  plVar1 = (longlong *)(param_1 + 8);
  bVar4 = *(byte *)*plVar1;
  pbVar18 = (byte *)*plVar1 + 1;
  *plVar1 = (longlong)pbVar18;
  if ((char)bVar4 < '\0') {
    bVar6 = 0x40;
    bVar5 = bVar4 & 0x40;
    while ((bVar5 != 0 && (8 < bVar6))) {
      pbVar18 = pbVar18 + 1;
      *plVar1 = (longlong)pbVar18;
      bVar6 = bVar6 >> 1;
      bVar5 = bVar4 & bVar6;
    }
  }
  pbVar17 = &DAT_1821db398;
  pbVar18 = (byte *)*plVar1;
  iVar22 = 3;
  uVar21 = 0;
  do {
    bVar4 = *pbVar18;
    pbVar18 = pbVar18 + 1;
    uVar12 = (uint)bVar4;
    uVar14 = 0;
    if ((char)bVar4 < '\0') {
      uVar12 = 0x7f;
      uVar9 = 0x40;
      uVar16 = uVar21;
      uVar15 = uVar14;
      if ((bVar4 & 0x40) != 0) {
        do {
          uVar15 = (uint)uVar16;
          if (uVar9 < 9) break;
          uVar12 = uVar12 >> 1;
          uVar15 = uVar15 + 1;
          uVar16 = (ulonglong)uVar15;
          uVar9 = uVar9 >> 1;
        } while ((bVar4 & uVar9) != 0);
      }
      uVar12 = bVar4 & uVar12;
      for (; (uVar15 = uVar15 - 1, -1 < (int)uVar15 && ((*pbVar18 & 0xc0) == 0x80));
          pbVar18 = pbVar18 + 1) {
        uVar12 = *pbVar18 & 0x3f | uVar12 << 6;
      }
    }
    bVar4 = *pbVar17;
    pbVar17 = pbVar17 + 1;
    uVar9 = 0xffffffff;
    uVar15 = uVar14;
    if (uVar12 != bVar4) {
      wVar7 = towupper((ushort)bVar4);
      wVar8 = towupper((wint_t)uVar12);
      if (((uint)wVar8 != (uint)wVar7) && (uVar15 = 1, (int)((uint)wVar8 - (uint)wVar7) < 0)) {
        uVar15 = uVar9;
      }
    }
    if (uVar15 != 0) {
      pbVar17 = &DAT_1821db3b8;
      pbVar18 = (byte *)*plVar1;
      iVar22 = 4;
      local_res18 = 4;
      break;
    }
    if ((uVar12 == 0) || (iVar22 = iVar22 + -1, iVar22 < 0)) {
      bVar4 = *(byte *)*plVar1;
      pbVar18 = (byte *)*plVar1 + 1;
      *plVar1 = (longlong)pbVar18;
      if ((char)bVar4 < '\0') {
        bVar6 = 0x40;
        bVar5 = bVar4 & 0x40;
        while ((bVar5 != 0 && (8 < bVar6))) {
          pbVar18 = pbVar18 + 1;
          *plVar1 = (longlong)pbVar18;
          bVar6 = bVar6 >> 1;
          bVar5 = bVar4 & bVar6;
        }
      }
      bVar4 = *(byte *)*plVar1;
      *plVar1 = (longlong)((byte *)*plVar1 + 1);
      if ((char)bVar4 < '\0') {
        bVar6 = 0x40;
        bVar5 = bVar4 & 0x40;
        while ((bVar5 != 0 && (8 < bVar6))) {
          *plVar1 = *plVar1 + 1;
          bVar6 = bVar6 >> 1;
          bVar5 = bVar4 & bVar6;
        }
      }
      bVar4 = *(byte *)*plVar1;
      pbVar18 = (byte *)*plVar1 + 1;
      *plVar1 = (longlong)pbVar18;
      if ((char)bVar4 < '\0') {
        bVar6 = 0x40;
        bVar5 = bVar4 & 0x40;
        while ((bVar5 != 0 && (8 < bVar6))) {
          pbVar18 = pbVar18 + 1;
          *plVar1 = (longlong)pbVar18;
          bVar6 = bVar6 >> 1;
          bVar5 = bVar4 & bVar6;
        }
      }
      bVar4 = *(byte *)*plVar1;
      pbVar18 = (byte *)*plVar1 + 1;
      *plVar1 = (longlong)pbVar18;
      if ((char)bVar4 < '\0') {
        bVar6 = 0x40;
        bVar5 = bVar4 & 0x40;
        while ((bVar5 != 0 && (8 < bVar6))) {
          pbVar18 = pbVar18 + 1;
          *plVar1 = (longlong)pbVar18;
          bVar6 = bVar6 >> 1;
          bVar5 = bVar4 & bVar6;
        }
      }
      local_res18 = CONCAT22(local_res18._2_2_,0x26);
      lVar3 = -1;
      do {
        lVar19 = lVar3;
        lVar3 = lVar19 + 1;
      } while (*(char *)((longlong)&local_res18 + lVar19 + 1) != '\0');
      FUN_181232e20(param_2,&local_res18,(longlong)&local_res18 + lVar19 + 1);
      return;
    }
  } while( true );
LAB_181222e40:
  bVar4 = *pbVar18;
  pbVar18 = pbVar18 + 1;
  uVar12 = (uint)bVar4;
  if ((char)bVar4 < '\0') {
    uVar12 = 0x7f;
    uVar10 = 0x40;
    uVar16 = uVar21;
    uVar15 = uVar14;
    if ((bVar4 & 0x40) != 0) {
      do {
        uVar15 = (uint)uVar16;
        if (uVar10 < 9) break;
        uVar12 = uVar12 >> 1;
        uVar15 = uVar15 + 1;
        uVar16 = (ulonglong)uVar15;
        uVar10 = uVar10 >> 1;
      } while ((bVar4 & uVar10) != 0);
    }
    uVar12 = bVar4 & uVar12;
    for (; (uVar15 = uVar15 - 1, -1 < (int)uVar15 && ((*pbVar18 & 0xc0) == 0x80));
        pbVar18 = pbVar18 + 1) {
      uVar12 = *pbVar18 & 0x3f | uVar12 << 6;
    }
  }
  bVar4 = *pbVar17;
  pbVar17 = pbVar17 + 1;
  uVar15 = uVar14;
  if (uVar12 != bVar4) {
    wVar7 = towupper((ushort)bVar4);
    wVar8 = towupper((wint_t)uVar12);
    if (((uint)wVar8 != (uint)wVar7) && (uVar15 = 1, (int)((uint)wVar8 - (uint)wVar7) < 0)) {
      uVar15 = uVar9;
    }
  }
  if (uVar15 != 0) {
    pbVar17 = &DAT_1821db3b0;
    pbVar18 = (byte *)*plVar1;
    goto LAB_181223010;
  }
  if ((uVar12 == 0) || (iVar22 = iVar22 + -1, iVar22 < 0)) {
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    *plVar1 = (longlong)((byte *)*plVar1 + 1);
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        *plVar1 = *plVar1 + 1;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    local_res20[0] = '\"';
    local_res20[1] = '\0';
    lVar3 = -1;
    do {
      lVar19 = lVar3;
      lVar3 = lVar19 + 1;
    } while (local_res20[lVar19 + 1] != '\0');
    FUN_181232e20(param_2,local_res20,local_res20 + lVar19 + 1);
    return;
  }
  goto LAB_181222e40;
LAB_181223010:
  bVar4 = *pbVar18;
  pbVar18 = pbVar18 + 1;
  uVar12 = (uint)bVar4;
  if ((char)bVar4 < '\0') {
    uVar12 = 0x7f;
    uVar10 = 0x40;
    uVar16 = uVar21;
    uVar15 = uVar14;
    if ((bVar4 & 0x40) != 0) {
      do {
        uVar15 = (uint)uVar16;
        if (uVar10 < 9) break;
        uVar12 = uVar12 >> 1;
        uVar15 = uVar15 + 1;
        uVar16 = (ulonglong)uVar15;
        uVar10 = uVar10 >> 1;
      } while ((bVar4 & uVar10) != 0);
    }
    uVar12 = bVar4 & uVar12;
    for (; (uVar15 = uVar15 - 1, -1 < (int)uVar15 && ((*pbVar18 & 0xc0) == 0x80));
        pbVar18 = pbVar18 + 1) {
      uVar12 = *pbVar18 & 0x3f | uVar12 << 6;
    }
  }
  bVar4 = *pbVar17;
  pbVar17 = pbVar17 + 1;
  uVar15 = uVar14;
  if (uVar12 != bVar4) {
    wVar7 = towupper((ushort)bVar4);
    wVar8 = towupper((wint_t)uVar12);
    if (((uint)wVar8 != (uint)wVar7) && (uVar15 = 1, (int)((uint)wVar8 - (uint)wVar7) < 0)) {
      uVar15 = uVar9;
    }
  }
  if (uVar15 != 0) {
    pbVar17 = &DAT_1821db3c0;
    pbVar18 = (byte *)*plVar1;
    iVar22 = 2;
    local_res18 = 2;
    goto LAB_1812231b3;
  }
  if ((uVar12 == 0) || (local_res18 = local_res18 + -1, local_res18 < 0)) {
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    *plVar1 = (longlong)((byte *)*plVar1 + 1);
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        *plVar1 = *plVar1 + 1;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    FUN_181232ce0(param_2,0x27);
    return;
  }
  goto LAB_181223010;
LAB_1812231b3:
  bVar4 = *pbVar18;
  pbVar18 = pbVar18 + 1;
  uVar12 = (uint)bVar4;
  if ((char)bVar4 < '\0') {
    uVar12 = 0x7f;
    uVar10 = 0x40;
    uVar16 = uVar21;
    uVar15 = uVar14;
    if ((bVar4 & 0x40) != 0) {
      do {
        uVar15 = (uint)uVar16;
        if (uVar10 < 9) break;
        uVar12 = uVar12 >> 1;
        uVar15 = uVar15 + 1;
        uVar16 = (ulonglong)uVar15;
        uVar10 = uVar10 >> 1;
      } while ((bVar4 & uVar10) != 0);
    }
    uVar12 = bVar4 & uVar12;
    for (; (uVar15 = uVar15 - 1, -1 < (int)uVar15 && ((*pbVar18 & 0xc0) == 0x80));
        pbVar18 = pbVar18 + 1) {
      uVar12 = *pbVar18 & 0x3f | uVar12 << 6;
    }
  }
  bVar4 = *pbVar17;
  pbVar17 = pbVar17 + 1;
  uVar15 = uVar14;
  if (uVar12 != bVar4) {
    wVar7 = towupper((ushort)bVar4);
    wVar8 = towupper((wint_t)uVar12);
    if (((uint)wVar8 != (uint)wVar7) && (uVar15 = 1, (int)((uint)wVar8 - (uint)wVar7) < 0)) {
      uVar15 = uVar9;
    }
  }
  if (uVar15 != 0) {
    pbVar17 = &DAT_1821db36c;
    pbVar18 = (byte *)*plVar1;
    goto LAB_1812232f2;
  }
  if ((uVar12 == 0) || (iVar22 = iVar22 + -1, iVar22 < 0)) {
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    *plVar1 = (longlong)((byte *)*plVar1 + 1);
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        *plVar1 = *plVar1 + 1;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    FUN_181232ce0(param_2,0x3c);
    return;
  }
  goto LAB_1812231b3;
LAB_1812232f2:
  bVar4 = *pbVar18;
  pbVar18 = pbVar18 + 1;
  uVar12 = (uint)bVar4;
  if ((char)bVar4 < '\0') {
    uVar12 = 0x7f;
    uVar9 = 0x40;
    uVar16 = uVar21;
    uVar15 = uVar14;
    if ((bVar4 & 0x40) != 0) {
      do {
        uVar15 = (uint)uVar16;
        if (uVar9 < 9) break;
        uVar12 = uVar12 >> 1;
        uVar15 = uVar15 + 1;
        uVar16 = (ulonglong)uVar15;
        uVar9 = uVar9 >> 1;
      } while ((bVar4 & uVar9) != 0);
    }
    uVar12 = bVar4 & uVar12;
    for (; (uVar15 = uVar15 - 1, -1 < (int)uVar15 && ((*pbVar18 & 0xc0) == 0x80));
        pbVar18 = pbVar18 + 1) {
      uVar12 = *pbVar18 & 0x3f | uVar12 << 6;
    }
  }
  bVar4 = *pbVar17;
  pbVar17 = pbVar17 + 1;
  uVar15 = uVar14;
  if (uVar12 != bVar4) {
    wVar7 = towupper((ushort)bVar4);
    wVar8 = towupper((wint_t)uVar12);
    if (((uint)wVar8 != (uint)wVar7) && (uVar15 = 1, (int)((uint)wVar8 - (uint)wVar7) < 0)) {
      uVar15 = 0xffffffff;
    }
  }
  if (uVar15 != 0) {
    iVar22 = FUN_180492f10(plVar1);
    if (iVar22 != 0x23) {
      lVar3 = *plVar1;
      iVar22 = FUN_18049bc80(lVar3,0x3b);
      lVar19 = (longlong)iVar22;
      if (iVar22 < 0) {
        *(undefined1 *)(param_1 + 0x10) = 1;
        FUN_181232ce0(param_2,0x26);
        return;
      }
      FUN_180492fc0(plVar1,iVar22 + 1);
      uVar11 = FUN_1812340b0(&local_58,lVar3,lVar19);
      uVar11 = FUN_181221ef0(param_1,&local_60,uVar11);
      FUN_181232d30(param_2,uVar11);
      puVar13 = (uint *)(local_60 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar12 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      puVar13 = (uint *)(local_58 + -0x10);
      if ((*puVar13 & 0x30000000) != 0) {
        return;
      }
      LOCK();
      uVar12 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar12 != 0) {
        return;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar13);
    }
    FUN_180492f80(plVar1);
    iVar22 = FUN_180492f10();
    uVar16 = uVar21;
    if ((iVar22 == 0x78) || (iVar22 = FUN_180492f10(plVar1), iVar22 == 0x58)) {
      FUN_180492f80(plVar1);
      goto LAB_1812235d5;
    }
    uVar12 = FUN_180493050(plVar1,0);
    if ((uVar12 < 0x30) || (uVar12 = FUN_180493050(plVar1,0), 0x39 < uVar12)) {
      FUN_18049c4e0(&local_70,"illegal escape sequence");
      if ((*(uint *)(local_70 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_70 + -0x10) = *(int *)(local_70 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = *(longlong *)(param_1 + 0x18);
      *(longlong *)(param_1 + 0x18) = local_70;
      UNLOCK();
      puVar13 = (uint *)(lVar3 + -0x10);
      if ((*puVar13 & 0x30000000) == 0) {
        LOCK();
        uVar12 = *puVar13;
        *puVar13 = *puVar13 - 1;
        UNLOCK();
        if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar13);
        }
      }
      *(undefined1 *)(param_1 + 0x11) = 0;
      if ((*(uint *)(local_70 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar2 = (int *)(local_70 + -0x10);
        iVar22 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar22 == 0) {
                    /* WARNING: Subroutine does not return */
          free((void *)(local_70 + -0x10));
        }
      }
      FUN_181232ce0(param_2,0x26);
      return;
    }
    iVar22 = FUN_180493050(plVar1,0);
    goto joined_r0x000181223496;
  }
  if ((uVar12 == 0) || (local_res18 = local_res18 + -1, local_res18 < 0)) {
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    *plVar1 = (longlong)((byte *)*plVar1 + 1);
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        *plVar1 = *plVar1 + 1;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    bVar4 = *(byte *)*plVar1;
    pbVar18 = (byte *)*plVar1 + 1;
    *plVar1 = (longlong)pbVar18;
    if ((char)bVar4 < '\0') {
      bVar6 = 0x40;
      bVar5 = bVar4 & 0x40;
      while ((bVar5 != 0 && (8 < bVar6))) {
        pbVar18 = pbVar18 + 1;
        *plVar1 = (longlong)pbVar18;
        bVar6 = bVar6 >> 1;
        bVar5 = bVar4 & bVar6;
      }
    }
    FUN_181232ce0(param_2,0x3e);
    return;
  }
  goto LAB_1812232f2;
LAB_1812235d5:
  iVar20 = (int)uVar21;
  iVar22 = FUN_180493050();
  if (iVar22 == 0x3b) goto LAB_1812236a4;
  iVar22 = FUN_180493050(plVar1,0);
  uVar12 = iVar22 - 0x30;
  if (9 < uVar12) {
    uVar12 = iVar22 - 0x61;
    if ((uVar12 < 6) || (uVar12 = iVar22 - 0x41, uVar12 < 6)) {
      uVar12 = uVar12 + 10;
      goto LAB_18122360a;
    }
LAB_181223628:
    FUN_18049c4e0(&local_68,"illegal escape sequence");
    if ((*(uint *)(local_68 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_68 + -0x10) = *(int *)(local_68 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar3 = *(longlong *)(param_1 + 0x18);
    *(longlong *)(param_1 + 0x18) = local_68;
    UNLOCK();
    puVar13 = (uint *)(lVar3 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar12 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    *(undefined1 *)(param_1 + 0x11) = 0;
    uVar12 = *(uint *)(local_68 + -0x10);
    local_78 = local_68;
    goto LAB_181223685;
  }
LAB_18122360a:
  if (((int)uVar12 < 0) || (uVar21 = (ulonglong)(iVar20 + 1U), 8 < (int)(iVar20 + 1U)))
  goto LAB_181223628;
  uVar16 = (ulonglong)((int)uVar16 << 4 | uVar12);
  FUN_180492f80(plVar1);
  goto LAB_1812235d5;
joined_r0x000181223496:
  if (iVar22 == 0x3b) goto LAB_1812236a4;
  uVar12 = (int)uVar21 + 1;
  uVar21 = (ulonglong)uVar12;
  if (0xc < (int)uVar12) {
    FUN_18049c4e0(&local_78,"illegal escape sequence");
    if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    lVar3 = *(longlong *)(param_1 + 0x18);
    *(longlong *)(param_1 + 0x18) = local_78;
    UNLOCK();
    puVar13 = (uint *)(lVar3 + -0x10);
    if ((*puVar13 & 0x30000000) == 0) {
      LOCK();
      uVar12 = *puVar13;
      *puVar13 = *puVar13 - 1;
      UNLOCK();
      if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar13);
      }
    }
    *(undefined1 *)(param_1 + 0x11) = 0;
    uVar12 = *(uint *)(local_78 + -0x10);
LAB_181223685:
    if ((uVar12 & 0x30000000) == 0) {
      LOCK();
      piVar2 = (int *)(local_78 + -0x10);
      iVar22 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar22 == 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)(local_78 + -0x10));
      }
    }
LAB_1812236a4:
    FUN_180492f80(plVar1);
    FUN_181232b70(param_2,uVar16);
    return;
  }
  iVar22 = FUN_180493050(plVar1,0);
  uVar16 = (ulonglong)(uint)(iVar22 + (int)uVar16 * 10 + -0x30);
  FUN_180492f80(plVar1);
  iVar22 = FUN_180493050();
  goto joined_r0x000181223496;
}



############ FUN_ 181224b70 size=801 ############

void FUN_181224b70(longlong param_1,longlong *param_2)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  byte *pbVar7;
  int *piVar8;
  byte *pbVar9;
  size_t sVar10;
  void *pvVar11;
  int iVar12;
  longlong lVar13;
  longlong lVar14;
  longlong local_res8;
  
  uVar4 = FUN_180483820(param_1 + 8);
  if (uVar4 == 0) {
    *(undefined1 *)(param_1 + 0x10) = 1;
    iVar12 = 0;
    do {
      *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + -1;
      if ((**(byte **)(param_1 + 8) & 0xc0) != 0x80) break;
      iVar12 = iVar12 + 1;
    } while (iVar12 < 4);
  }
  if (*(char *)(param_1 + 0x10) == '\0') {
    lVar14 = -1;
    do {
      uVar5 = FUN_180483820(param_1 + 8);
      if (uVar5 == 0) {
        *(undefined1 *)(param_1 + 0x10) = 1;
        iVar12 = 0;
        do {
          *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + -1;
          if ((**(byte **)(param_1 + 8) & 0xc0) != 0x80) break;
          iVar12 = iVar12 + 1;
        } while (iVar12 < 4);
      }
      if (uVar5 == uVar4) {
        return;
      }
      iVar12 = 0;
      do {
        *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + -1;
        pbVar9 = *(byte **)(param_1 + 8);
        if ((*pbVar9 & 0xc0) != 0x80) break;
        iVar12 = iVar12 + 1;
      } while (iVar12 < 4);
      if (uVar5 == 0x26) {
        FUN_181222c20(param_1);
      }
      else {
LAB_181224c70:
        pbVar7 = *(byte **)(param_1 + 8);
        bVar1 = *pbVar7;
        uVar5 = (uint)bVar1;
        if ((char)bVar1 < '\0') {
          uVar6 = 0x40;
          iVar12 = 0;
          uVar5 = 0x7f;
          if ((bVar1 & 0x40) != 0) {
            do {
              if (uVar6 < 9) break;
              uVar5 = uVar5 >> 1;
              iVar12 = iVar12 + 1;
              uVar6 = uVar6 >> 1;
            } while ((bVar1 & uVar6) != 0);
          }
          uVar5 = bVar1 & uVar5;
          lVar13 = 1;
          if (0 < iVar12) {
            do {
              if ((pbVar7[lVar13] & 0xc0) != 0x80) break;
              uVar5 = pbVar7[lVar13] & 0x3f | uVar5 << 6;
              lVar13 = lVar13 + 1;
            } while (lVar13 <= iVar12);
          }
        }
        if (uVar5 == uVar4) {
          iVar12 = (int)pbVar7 - (int)pbVar9;
          if (0 < iVar12) {
            do {
              lVar14 = lVar14 + 1;
            } while (*(char *)(*param_2 + lVar14) != '\0');
            sVar10 = (size_t)iVar12;
            FUN_1812342b0(param_2,sVar10 + lVar14);
            pvVar11 = (void *)((longlong)(int)lVar14 + *param_2);
            memcpy(pvVar11,pbVar9,sVar10);
            *(undefined1 *)(sVar10 + (longlong)pvVar11) = 0;
          }
          bVar1 = **(byte **)(param_1 + 8);
          pbVar9 = *(byte **)(param_1 + 8) + 1;
          *(byte **)(param_1 + 8) = pbVar9;
          if (-1 < (char)bVar1) {
            return;
          }
          bVar3 = 0x40;
          if ((bVar1 & 0x40) == 0) {
            return;
          }
          do {
            if (bVar3 < 9) {
              return;
            }
            pbVar9 = pbVar9 + 1;
            bVar3 = bVar3 >> 1;
            *(byte **)(param_1 + 8) = pbVar9;
          } while ((bVar3 & bVar1) != 0);
          return;
        }
        if (uVar5 == 0x26) {
          iVar12 = (int)pbVar7 - (int)pbVar9;
          if (0 < iVar12) {
            lVar13 = -1;
            do {
              lVar13 = lVar13 + 1;
            } while (*(char *)(*param_2 + lVar13) != '\0');
            sVar10 = (size_t)iVar12;
            FUN_1812342b0(param_2,sVar10 + lVar13);
            pvVar11 = (void *)((longlong)(int)lVar13 + *param_2);
            memcpy(pvVar11,pbVar9,sVar10);
            *(undefined1 *)(sVar10 + (longlong)pvVar11) = 0;
          }
          goto LAB_181224dfc;
        }
        if (uVar5 != 0) {
          bVar1 = *pbVar7;
          pbVar7 = pbVar7 + 1;
          *(byte **)(param_1 + 8) = pbVar7;
          if ((char)bVar1 < '\0') {
            bVar2 = 0x40;
            bVar3 = bVar1 & 0x40;
            while ((bVar3 != 0 && (8 < bVar2))) {
              pbVar7 = pbVar7 + 1;
              bVar2 = bVar2 >> 1;
              *(byte **)(param_1 + 8) = pbVar7;
              bVar3 = bVar1 & bVar2;
            }
          }
          goto LAB_181224c70;
        }
        FUN_18049c4e0(&local_res8);
        if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        lVar13 = *(longlong *)(param_1 + 0x18);
        *(longlong *)(param_1 + 0x18) = local_res8;
        UNLOCK();
        piVar8 = (int *)(lVar13 + -0x10);
        if ((*(uint *)(lVar13 + -0x10) & 0x30000000) == 0) {
          LOCK();
          iVar12 = *piVar8;
          *piVar8 = *piVar8 + -1;
          UNLOCK();
          if (iVar12 == 0) {
                    /* WARNING: Subroutine does not return */
            free(piVar8);
          }
        }
        *(undefined1 *)(param_1 + 0x11) = 1;
        if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar8 = (int *)(local_res8 + -0x10);
          iVar12 = *piVar8;
          *piVar8 = *piVar8 + -1;
          UNLOCK();
          if (iVar12 == 0) {
                    /* WARNING: Subroutine does not return */
            free((void *)(local_res8 + -0x10));
          }
        }
        *(undefined1 *)(param_1 + 0x10) = 1;
      }
LAB_181224dfc:
    } while (*(char *)(param_1 + 0x10) == '\0');
  }
  return;
}



############ FUN_ 181246550 size=133 ############

longlong * FUN_181246550(longlong *param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *_Memory;
  longlong *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8);
  plVar3 = (longlong *)FUN_181232d30(&local_res8,param_3);
  lVar2 = *plVar3;
  *param_1 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(local_res8 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181243430 size=506 ############

void FUN_181243430(longlong *param_1,undefined8 param_2)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 *puVar3;
  uint uVar4;
  longlong lVar5;
  longlong *plVar6;
  undefined8 uVar7;
  uint *puVar8;
  undefined8 *puVar9;
  longlong local_res8 [2];
  longlong local_res18;
  longlong local_res20;
  longlong local_48;
  longlong local_40;
  longlong local_38 [2];
  
  local_38[1] = 0xfffffffffffffffe;
  puVar3 = (undefined8 *)*param_1;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  if (puVar3 != puVar3 + (longlong)iVar2 * 3) {
    puVar9 = puVar3 + 1;
    do {
      lVar5 = (**(code **)(*(longlong *)*puVar9 + 0x40))((longlong *)*puVar9,puVar9 + 1);
      if (lVar5 == 0) {
        uVar7 = FUN_18122bf10();
        FUN_18122c1b0(uVar7,&local_40,puVar9 + -1);
        (**(code **)(*(longlong *)*puVar9 + 0x20))((longlong *)*puVar9,&local_48,puVar9 + 1);
        FUN_181246b70(param_2,&local_40,&local_48);
        puVar8 = (uint *)(local_48 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_40 + -0x10);
        uVar4 = *puVar8;
      }
      else {
        FUN_18049c4e0(local_res8,"base64:");
        plVar6 = (longlong *)FUN_181232d30(local_res8,puVar9 + -1);
        local_res20 = *plVar6;
        if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
          UNLOCK();
        }
        puVar8 = (uint *)(local_res8[0] + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        uVar7 = FUN_18122bf10();
        FUN_18122c1b0(uVar7,&local_res18,&local_res20);
        uVar7 = FUN_18123a2a0(lVar5,local_38);
        FUN_181246b70(param_2,&local_res18,uVar7);
        puVar8 = (uint *)(local_38[0] + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_res18 + -0x10);
        if ((*puVar8 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar8;
          *puVar8 = *puVar8 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar8);
          }
        }
        puVar8 = (uint *)(local_res20 + -0x10);
        uVar4 = *puVar8;
      }
      if ((uVar4 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      puVar1 = puVar9 + 2;
      puVar9 = puVar9 + 3;
    } while (puVar1 != puVar3 + (longlong)iVar2 * 3);
  }
  return;
}



############ FUN_ 1812c29a0 size=644 ############

void FUN_1812c29a0(undefined8 param_1,void **param_2)

{
  uint uVar1;
  bool bVar2;
  undefined1 local_res10 [8];
  undefined4 local_res18 [2];
  undefined4 local_res20 [2];
  undefined **local_d8;
  undefined1 local_d0 [8];
  void **local_c8;
  void *local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 local_98;
  undefined1 *local_88;
  undefined1 *local_80;
  undefined1 *local_78;
  undefined1 local_70;
  undefined4 local_6c;
  undefined8 local_68;
  undefined1 *local_60;
  undefined1 *local_58;
  undefined1 *local_50;
  undefined1 local_48;
  undefined4 local_44;
  undefined *local_40;
  undefined8 local_38;
  
  local_38 = 0xfffffffffffffffe;
  local_d8 = juce::OutputStream::vftable;
  FUN_18049c4e0(local_d0,&DAT_182496878);
  local_d8 = juce::MemoryOutputStream::vftable;
  local_c0 = (void *)0x0;
  local_b8 = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_a0 = 0;
  local_98 = 0;
  local_res18[0] = 0x21324356;
  local_c8 = param_2;
  (*(code *)PTR_FUN_182496b98)(&local_d8,local_res18,4);
  local_res20[0] = 0;
  (*(code *)local_d8[4])(&local_d8,local_res20,4);
  local_60 = &DAT_1821dbf98;
  local_58 = &DAT_1821dbf98;
  local_50 = &DAT_1821dbf98;
  local_48 = 1;
  local_44 = 0x3c;
  local_40 = &DAT_1821db4e4;
  local_88 = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  local_80 = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  local_78 = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  local_70 = 1;
  local_6c = 0x3c;
  local_68 = 0;
  FUN_181246e90(param_1,&local_d8,&local_88);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_res10[0] = 0;
  (*(code *)local_d8[4])(&local_d8,local_res10,1);
  local_d8 = juce::MemoryOutputStream::vftable;
  if ((local_c8 != &local_c0) && (local_c8 != (void **)0x0)) {
    FUN_18124a200(local_c8,local_a0,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_c0);
}



############ FUN_ 180493c80 size=225 ############

longlong * FUN_180493c80(longlong param_1,longlong *param_2)

{
  uint uVar1;
  uint *puVar2;
  longlong local_res8;
  longlong *local_res10;
  longlong local_res18;
  
  local_res10 = param_2;
  FUN_1812339a0(param_2,*(undefined8 *)(param_1 + 0x10),0,0,0,0xfffffffffffffffe);
  if (*(char *)(param_1 + 0x18) != '\0') {
    FUN_18049c4e0(&local_res8,&DAT_18249687c);
    local_res10 = (longlong *)FUN_181232d30(&local_res8,param_2);
    local_res10 = (longlong *)*local_res10;
    if ((*(uint *)((longlong)local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)((longlong)local_res10 + -0x10) = *(int *)((longlong)local_res10 + -0x10) + 1;
      UNLOCK();
    }
    puVar2 = (uint *)(local_res8 + -0x10);
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
    local_res18 = *param_2;
    *param_2 = (longlong)local_res10;
    puVar2 = (uint *)(local_res18 + -0x10);
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
  }
  return param_2;
}



############ FUN_ 1804943d0 size=33 ############

undefined8 FUN_1804943d0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,&DAT_18249688c);
  return param_2;
}



############ FUN_ 1804947f0 size=33 ############

undefined8 FUN_1804947f0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,&DAT_182496898);
  return param_2;
}



############ FUN_ 1804957e0 size=33 ############

undefined8 FUN_1804957e0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"undefined");
  return param_2;
}



############ FUN_ 1804963c0 size=33 ############

undefined8 FUN_1804963c0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"[Array]");
  return param_2;
}



############ FUN_ 180496bb0 size=33 ############

undefined8 FUN_180496bb0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"Method");
  return param_2;
}



############ FUN_ 18124a880 size=23 ############

undefined8 FUN_18124a880(undefined8 param_1)

{
  FUN_18049c4e0();
  return param_1;
}



############ FUN_ 1812147b0 size=205 ############

longlong * FUN_1812147b0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong local_res8;
  longlong local_res18 [2];
  
  if (*(int *)(param_1 + 0x24) < 1) {
    *param_2 = (longlong)&DAT_1821dbf98;
  }
  else {
    uVar3 = FUN_181214eb0(local_res18,param_1,param_3,param_4,0xfffffffffffffffe);
    FUN_18049c4e0(&local_res8,&DAT_1821dba9c);
    plVar4 = (longlong *)FUN_181232d30(&local_res8,uVar3);
    lVar2 = *plVar4;
    *param_2 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(local_res8 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_res18[0] + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  return param_2;
}



############ FUN_ 1804a5890 size=577 ############

longlong * FUN_1804a5890(longlong *param_1)

{
  bool bVar1;
  uint uVar2;
  HMODULE hModule;
  FARPROC pFVar3;
  uint *puVar4;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60 [3];
  longlong local_48;
  longlong local_40;
  longlong local_38;
  longlong local_30;
  longlong local_28;
  longlong local_20;
  
  local_60[1] = 0xfffffffffffffffe;
  *param_1 = (longlong)&DAT_1821dbf98;
  param_1[1] = (longlong)&DAT_1821dbf98;
  param_1[2] = (longlong)&DAT_1821dbf98;
  param_1[3] = (longlong)&DAT_1821dbf98;
  hModule = GetModuleHandleA("ntdll");
  if (hModule != (HMODULE)0x0) {
    pFVar3 = GetProcAddress(hModule,"wine_get_version");
    if (pFVar3 != (FARPROC)0x0) {
      bVar1 = true;
      goto LAB_1804a58f0;
    }
  }
  bVar1 = false;
LAB_1804a58f0:
  if (bVar1) {
    FUN_18049c4e0(&local_res10,"Bitstream Vera Sans");
    local_60[2] = *param_1;
    *param_1 = local_res10;
    puVar4 = (uint *)(local_60[2] + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_18049c4e0(&local_res18,"Bitstream Vera Serif");
    local_48 = param_1[1];
    param_1[1] = local_res18;
    puVar4 = (uint *)(local_48 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_18049c4e0(&local_res20,"Bitstream Vera Sans Mono");
    local_40 = param_1[2];
    param_1[2] = local_res20;
    puVar4 = (uint *)(local_40 + -0x10);
    uVar2 = *puVar4;
  }
  else {
    FUN_18049c4e0(&local_78,"Verdana");
    local_38 = *param_1;
    *param_1 = local_78;
    puVar4 = (uint *)(local_38 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_18049c4e0(&local_70,"Times New Roman");
    local_30 = param_1[1];
    param_1[1] = local_70;
    puVar4 = (uint *)(local_30 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_18049c4e0(&local_68,"Lucida Console");
    local_28 = param_1[2];
    param_1[2] = local_68;
    puVar4 = (uint *)(local_28 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_18049c4e0(local_60,"Tahoma");
    local_20 = param_1[3];
    param_1[3] = local_60[0];
    puVar4 = (uint *)(local_20 + -0x10);
    uVar2 = *puVar4;
  }
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 1804a1ef0 size=714 ############

/* WARNING: Removing unreachable block (ram,0x0001804a2149) */
/* WARNING: Removing unreachable block (ram,0x0001804a20ad) */
/* WARNING: Removing unreachable block (ram,0x0001804a2123) */
/* WARNING: Removing unreachable block (ram,0x0001804a2155) */
/* WARNING: Removing unreachable block (ram,0x0001804a2170) */
/* WARNING: Removing unreachable block (ram,0x0001804a218e) */
/* WARNING: Removing unreachable block (ram,0x0001804a2194) */
/* WARNING: Removing unreachable block (ram,0x0001804a21a0) */
/* WARNING: Removing unreachable block (ram,0x0001804a21a5) */

void FUN_1804a1ef0(undefined8 param_1,undefined8 param_2,char param_3)

{
  uint uVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float *_Memory;
  longlong lVar6;
  uint *_Memory_00;
  float *pfVar7;
  float *pfVar8;
  bool bVar9;
  float fVar10;
  undefined1 local_res10;
  undefined7 uStackX_11;
  char local_res18;
  longlong local_e0;
  undefined8 local_d8;
  int iStack_d4;
  longlong local_d0;
  undefined4 local_c8;
  int iStack_c4;
  float *local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined1 local_a0;
  
  local_e0 = 0;
  local_d8 = 0;
  local_res18 = param_3;
  FUN_1804aebd0(&local_e0,200);
  FUN_18049c4e0(&local_res10,param_2);
  FUN_1812510e0(&local_e0,param_1,&local_res10,0,0,DAT_1824c4620,0);
  _Memory_00 = (uint *)(CONCAT71(uStackX_11,local_res10) + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  fVar5 = DAT_1824c4608;
  fVar4 = DAT_1824c4604;
  fVar3 = DAT_1824c4600;
  fVar10 = DAT_1824c45fc;
  local_d0 = 0;
  _local_c8 = 0;
  if (local_e0 == (longlong)iStack_d4 * 0x20 + local_e0) {
    FUN_1804b4a30(0,0,0,local_res10);
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  local_c0 = (float *)0x0;
  local_b8 = 0;
  local_b0 = 0;
  uStack_a8 = 0;
  local_a0 = 1;
  FUN_1812514e0(local_e0,&local_c0);
  _Memory = local_c0;
  pfVar8 = local_c0 + local_b8._4_4_;
  bVar9 = local_c0 == pfVar8;
  pfVar7 = local_c0;
LAB_1804a2056:
  do {
    if (bVar9) {
LAB_1804a20dc:
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    fVar2 = *pfVar7;
    if (fVar2 != fVar3) {
      if (((fVar2 == fVar10) || (fVar2 == fVar4)) || (fVar2 == fVar5)) {
        fVar10 = (float)uStack_a8;
        if (local_res18 == '\0') {
          fVar10 = (float)uStack_a8 + (uStack_a8._4_4_ - (float)uStack_a8);
        }
        FUN_1804af790(&local_d0,8);
        lVar6 = (longlong)iStack_c4;
        _local_c8 = CONCAT44(iStack_c4 + 1,local_c8);
        *(float *)(local_d0 + lVar6 * 4) = fVar10;
        goto LAB_1804a20dc;
      }
      pfVar7 = pfVar7 + 1;
      bVar9 = pfVar7 == pfVar8;
      goto LAB_1804a2056;
    }
    pfVar7 = pfVar7 + 3;
    bVar9 = pfVar7 == pfVar8;
  } while( true );
}



############ FUN_ 181250d90 size=822 ############

undefined8 FUN_181250d90(longlong *param_1,longlong *param_2,float param_3,int param_4,int param_5)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint *_Memory;
  longlong lVar5;
  undefined8 *puVar6;
  longlong *plVar7;
  longlong *plVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined4 uVar11;
  uint uVar12;
  uint uVar13;
  ulonglong uVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  undefined4 uVar18;
  int local_res8;
  longlong local_d8 [2];
  void *local_c8;
  undefined8 local_c0;
  undefined4 *local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  
  local_d8[1] = 0xfffffffffffffffe;
  if (*(int *)((longlong)param_1 + 0xc) == 0) {
    return 0;
  }
  local_b8 = (undefined4 *)0x0;
  local_b0 = 0;
  local_c8 = (void *)0x0;
  local_c0 = 0;
  FUN_18049c4e0(local_d8,&DAT_1821df16c);
  FUN_181251660(param_2,local_d8,&local_b8,&local_c8);
  _Memory = (uint *)(local_d8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar12 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar12 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  fVar16 = 0.0;
  if (local_c0._4_4_ < 2) {
    fVar17 = 0.0;
  }
  else {
    fVar17 = *(float *)((longlong)local_c8 + 4);
  }
  uVar18 = 0;
  local_res8 = 2;
  uVar14 = (ulonglong)param_5;
  if (param_4 < param_5) {
    fVar15 = fVar17 * DAT_1824c42d0;
    lVar5 = uVar14 << 5;
    do {
      uVar12 = (int)uVar14 - 1;
      uVar14 = (ulonglong)uVar12;
      fVar16 = *(float *)(lVar5 + -0x10 + *param_1);
      uVar18 = *(undefined4 *)(lVar5 + -0xc + *param_1);
      if (uVar12 < *(uint *)((longlong)param_1 + 0xc)) {
        FUN_1804b0ee0(param_1,uVar12,1);
        *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
        iVar3 = *(int *)((longlong)param_1 + 0xc);
        iVar4 = 0;
        if (0 < iVar3 * 2) {
          iVar4 = iVar3 * 2;
        }
        if (iVar4 < (int)param_1[1]) {
          if (iVar3 < 2) {
            iVar3 = 2;
          }
          if (iVar3 < (int)param_1[1]) {
            FUN_1804aebd0(param_1);
          }
        }
      }
    } while ((param_3 < fVar15 + fVar16) && (lVar5 = lVar5 + -0x20, param_4 < (int)uVar12));
  }
  do {
    uVar11 = 0;
    if (0 < local_b0._4_4_) {
      uVar11 = *local_b8;
    }
    puVar9 = (undefined8 *)*param_2;
    if (puVar9 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puVar9 + 1) = *(int *)(puVar9 + 1) + 1;
      UNLOCK();
    }
    iVar4 = *(int *)((longlong)param_1 + 0xc);
    iVar3 = iVar4 + 1;
    local_a8 = puVar9;
    if ((int)param_1[1] < iVar3) {
      if (iVar3 < 0) {
        iVar3 = iVar4 + 2;
      }
      FUN_1804aebd0(param_1,iVar4 + 9 + (iVar3 >> 1) & 0xfffffff8);
    }
    uVar12 = *(uint *)((longlong)param_1 + 0xc);
    lVar5 = (longlong)(int)uVar12;
    uVar13 = (uint)uVar14;
    if (uVar13 < uVar12) {
      plVar7 = (longlong *)(lVar5 * 0x20 + *param_1);
      if (0 < (int)(uVar12 - uVar13)) {
        uVar14 = (ulonglong)(uVar12 - uVar13);
        plVar8 = plVar7 + 4;
        do {
          plVar1 = plVar7 + -4;
          plVar8[-4] = *plVar1;
          *plVar1 = 0;
          *(int *)(plVar8 + -3) = (int)plVar7[-3];
          *(undefined4 *)((longlong)plVar8 + -0x14) = *(undefined4 *)((longlong)plVar7 + -0x14);
          *(int *)(plVar8 + -2) = (int)plVar7[-2];
          *(undefined4 *)((longlong)plVar8 + -0xc) = *(undefined4 *)((longlong)plVar7 + -0xc);
          *(int *)(plVar8 + -1) = (int)plVar7[-1];
          *(undefined1 *)((longlong)plVar8 + -4) = *(undefined1 *)((longlong)plVar7 + -4);
          puVar9 = (undefined8 *)*plVar1;
          if (puVar9 != (undefined8 *)0x0) {
            LOCK();
            piVar2 = (int *)(puVar9 + 1);
            iVar3 = *piVar2;
            *piVar2 = *piVar2 + -1;
            UNLOCK();
            if (iVar3 == 1) {
              (**(code **)*puVar9)(puVar9,1);
            }
          }
          uVar14 = uVar14 - 1;
          plVar7 = plVar1;
          plVar8 = plVar8 + -4;
          puVar9 = local_a8;
        } while (uVar14 != 0);
      }
      lVar5 = (longlong)(int)uVar13;
    }
    puVar6 = (undefined8 *)(lVar5 * 0x20 + *param_1);
    *puVar6 = puVar9;
    puVar10 = (undefined8 *)0x0;
    if (puVar9 != (undefined8 *)0x0) {
      LOCK();
      *(int *)(puVar9 + 1) = *(int *)(puVar9 + 1) + 1;
      UNLOCK();
      puVar10 = local_a8;
    }
    *(undefined4 *)(puVar6 + 1) = 0x2e;
    *(undefined4 *)((longlong)puVar6 + 0xc) = uVar11;
    *(float *)(puVar6 + 2) = fVar16;
    *(undefined4 *)((longlong)puVar6 + 0x14) = uVar18;
    *(float *)(puVar6 + 3) = fVar17;
    *(undefined1 *)((longlong)puVar6 + 0x1c) = 0;
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + 1;
    uVar14 = (ulonglong)(uVar13 + 1);
    if (puVar10 != (undefined8 *)0x0) {
      LOCK();
      piVar2 = (int *)(puVar10 + 1);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*local_a8)(local_a8,1);
      }
    }
    fVar16 = fVar16 + fVar17;
  } while ((fVar16 <= param_3) && (local_res8 = local_res8 + -1, -1 < local_res8));
  local_c0 = local_c0 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_c8);
}



############ FUN_ 181337230 size=1114 ############

void FUN_181337230(longlong param_1,longlong param_2)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  int iVar4;
  longlong *plVar5;
  undefined8 uVar6;
  uint uVar7;
  uint *puVar9;
  void *pvVar10;
  longlong lVar11;
  byte *pbVar12;
  byte *pbVar13;
  undefined8 *puVar14;
  void *pvVar15;
  byte *local_res18;
  longlong local_res20;
  byte *local_88;
  void *local_80;
  undefined8 local_78;
  longlong local_70;
  void *local_68;
  undefined8 local_60;
  undefined *local_58;
  byte *local_50;
  uint *local_48;
  byte *local_40;
  void *pvVar8;
  
  local_60 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0x180) == 0) {
    return;
  }
  puVar14 = (undefined8 *)(param_2 + 0x10);
  if (*(char *)*puVar14 == '\0') {
    puVar14 = (undefined8 *)(param_2 + 8);
  }
  local_res18 = (byte *)*puVar14;
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  lVar11 = *(longlong *)(*(longlong *)(param_1 + 0x180) + 0x38);
  pvVar15 = (void *)0x0;
  iVar4 = 0;
  if (0 < *(int *)(lVar11 + 0x5c)) {
    pvVar8 = pvVar15;
    pvVar10 = pvVar15;
    do {
      if (**(int **)((longlong)pvVar10 + *(longlong *)(lVar11 + 0x50)) == *(int *)(param_1 + 0x19c))
      {
        lVar11 = *(longlong *)(*(longlong *)(lVar11 + 0x50) + (longlong)(int)pvVar8 * 8);
        local_80 = (void *)0x0;
        local_78 = 0;
        iVar2 = *(int *)(lVar11 + 0x14);
        pvVar8 = *(void **)(lVar11 + 8);
        iVar4 = 0;
        if (0 < iVar2) {
          FUN_18051ce20(&local_80,iVar2 / 2 + 8 + iVar2 & 0xfffffff8);
          iVar4 = local_78._4_4_;
        }
        pvVar15 = local_80;
        memcpy((void *)((longlong)local_80 + (longlong)iVar4 * 0xc),pvVar8,(longlong)iVar2 * 0xc);
        iVar4 = iVar4 + iVar2;
        goto LAB_1813372ef;
      }
      uVar7 = (int)pvVar8 + 1;
      pvVar8 = (void *)(ulonglong)uVar7;
      pvVar10 = (void *)((longlong)pvVar10 + 8);
    } while ((int)uVar7 < *(int *)(lVar11 + 0x5c));
  }
  local_80 = (void *)0x0;
  local_78 = 0;
LAB_1813372ef:
  local_78 = CONCAT44(iVar4,(undefined4)local_78);
  local_68 = (void *)((longlong)pvVar15 + (longlong)iVar4 * 0xc);
  pvVar8 = pvVar15;
  if (pvVar15 == local_68) {
LAB_18133766a:
                    /* WARNING: Subroutine does not return */
    free(pvVar8);
  }
  local_58 = &DAT_1821e2aae;
LAB_181337330:
  FUN_181337fe0(pvVar15);
  lVar11 = -1;
  do {
    lVar11 = lVar11 + 1;
  } while (local_res18[lVar11] != 0);
  local_50 = local_res18 + lVar11;
  lVar11 = (longlong)local_50 - (longlong)local_res18;
  FUN_1812342b0(&local_res18,lVar11 + 2);
  pbVar12 = local_res18 + (int)lVar11;
  memcpy(pbVar12,&DAT_1821e2aac,2);
  pvVar10 = local_68;
  pbVar13 = local_88;
  pbVar3 = local_res18;
  pbVar12[2] = 0;
  iVar4 = 0;
  pbVar12 = local_88;
LAB_1813373a0:
  do {
    bVar1 = *pbVar12;
    pbVar12 = pbVar12 + 1;
    if ((char)bVar1 < '\0') {
      if ((*pbVar12 & 0xc0) == 0x80) {
        do {
          pbVar12 = pbVar12 + 1;
        } while ((*pbVar12 & 0xc0) == 0x80);
        iVar4 = iVar4 + 1;
        goto LAB_1813373a0;
      }
    }
    else if (bVar1 == 0) break;
    iVar4 = iVar4 + 1;
  } while( true );
  if (iVar4 != 1) {
    if (*local_res18 == 0) {
      if ((*(uint *)(local_88 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_88 + -0x10) = *(int *)(local_88 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      local_res18 = local_88;
      UNLOCK();
      puVar9 = (uint *)(pbVar3 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
    }
    else {
      lVar11 = -1;
      do {
        lVar11 = lVar11 + 1;
      } while (local_88[lVar11] != 0);
      local_40 = local_88 + lVar11;
      FUN_181232e20(&local_res18,local_88);
    }
    FUN_181232ce0(&local_res18,0x5d);
    goto LAB_181337639;
  }
  FUN_18049c4e0(&local_res20,"shortcut");
  lVar11 = DAT_1826739f8;
  local_48 = &DAT_182673984;
  do {
    LOCK();
    uVar7 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar7 != 0);
  if (DAT_1826739f8 == 0) {
    local_70 = local_res20;
    uVar7 = *(uint *)(local_res20 + -0x10);
LAB_181337502:
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_70 + -0x10) = *(int *)(local_70 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
       (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,*(undefined1 *)(DAT_1826739f8 + 0x38)
                              ,0), -1 < iVar4)) {
      iVar4 = FUN_1812498b0(lVar11 + 0x18,local_res20,*(undefined1 *)(lVar11 + 0x38),0);
      if (iVar4 < 0) {
        local_70 = local_res20;
        uVar7 = *(uint *)(local_res20 + -0x10);
      }
      else {
        plVar5 = (longlong *)FUN_181249970(lVar11 + 0x28,iVar4);
        local_70 = *plVar5;
        uVar7 = *(uint *)(local_70 + -0x10);
      }
      goto LAB_181337502;
    }
    FUN_181234570(*(undefined8 *)(lVar11 + 0x40),&local_70,&local_res20);
  }
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar9 = (uint *)(local_res20 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  uVar6 = FUN_181232d30(&local_res18,&local_70);
  FUN_181232e20(uVar6,&DAT_1821e2a54,&DAT_1821e2a57);
  uVar6 = FUN_181232d30(uVar6,&local_88);
  FUN_181232e20(uVar6,&DAT_1821e2a7c,&DAT_1821e2a7e);
  puVar9 = (uint *)(local_70 + -0x10);
  pbVar13 = local_88;
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
LAB_181337639:
  puVar9 = (uint *)(pbVar13 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  pvVar15 = (void *)((longlong)pvVar15 + 0xc);
  pvVar8 = local_80;
  if (pvVar15 == pvVar10) goto LAB_18133766a;
  goto LAB_181337330;
}



############ FUN_ 18123e260 size=301 ############

longlong FUN_18123e260(longlong param_1,undefined8 param_2,longlong *param_3,undefined8 param_4,
                      uint param_5)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong local_res8;
  
  local_res8 = param_1;
  if ((param_5 & 1) != 0) {
    FUN_18049c4e0(&local_res8,&DAT_1821d9bb4);
    plVar4 = (longlong *)FUN_181232d30(&local_res8,param_3);
    lVar2 = *plVar4;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(local_res8 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    lVar3 = *param_3;
    *param_3 = lVar2;
    puVar5 = (uint *)(lVar3 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  FUN_181240380(param_2,param_1,param_3,param_4,(byte)(param_5 >> 1) & 1);
  puVar5 = (uint *)(*param_3 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_1;
}



############ FUN_ 1804d9870 size=782 ############

undefined8 *
FUN_1804d9870(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  bool bVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  uint uVar6;
  uint *puVar7;
  undefined8 **ppuVar8;
  undefined8 *local_res8;
  undefined8 *local_res10;
  undefined8 *local_40;
  undefined8 *local_38;
  undefined8 local_30;
  undefined4 *local_28;
  undefined4 *local_20;
  
  local_30 = 0xfffffffffffffffe;
  local_res8 = param_1;
  local_res10 = param_2;
  if ((char)param_3 == '\0') {
    FUN_18049c4e0(&local_res8,&DAT_18249b9c4,param_3,param_4,0);
    lVar3 = DAT_1826739f8;
    local_20 = &DAT_182673984;
    do {
      LOCK();
      uVar6 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar6 != 0);
    if (DAT_1826739f8 == 0) {
      local_40 = local_res8;
      if ((*(uint *)(local_res8 + -2) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -2) = *(int *)(local_res8 + -2) + 1;
        UNLOCK();
      }
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res8,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar4)) {
      iVar4 = FUN_1812498b0(lVar3 + 0x18,local_res8,*(undefined1 *)(lVar3 + 0x38),0);
      if (iVar4 < 0) {
        local_40 = local_res8;
        uVar6 = *(uint *)(local_res8 + -2);
      }
      else {
        plVar5 = (longlong *)FUN_181249970(lVar3 + 0x28,iVar4);
        local_40 = (undefined8 *)*plVar5;
        uVar6 = *(uint *)(local_40 + -2);
      }
      if ((uVar6 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_40 + -2) = *(int *)(local_40 + -2) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar3 + 0x40),&local_40,&local_res8,&local_res8);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_res8 + -2);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    ppuVar8 = &local_40;
    bVar2 = false;
    bVar1 = true;
  }
  else {
    FUN_18049c4e0(&local_res10,&DAT_18249b9c8,param_3,param_4,0);
    lVar3 = DAT_1826739f8;
    local_28 = &DAT_182673984;
    do {
      LOCK();
      uVar6 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar6 != 0);
    if (DAT_1826739f8 == 0) {
      local_38 = local_res10;
      if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res10 + -2) = *(int *)(local_res10 + -2) + 1;
        UNLOCK();
      }
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res10,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar4)) {
      iVar4 = FUN_1812498b0(lVar3 + 0x18,local_res10,*(undefined1 *)(lVar3 + 0x38),0);
      if (iVar4 < 0) {
        local_38 = local_res10;
        uVar6 = *(uint *)(local_res10 + -2);
      }
      else {
        plVar5 = (longlong *)FUN_181249970(lVar3 + 0x28,iVar4);
        local_38 = (undefined8 *)*plVar5;
        uVar6 = *(uint *)(local_38 + -2);
      }
      if ((uVar6 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_38 + -2) = *(int *)(local_38 + -2) + 1;
        UNLOCK();
      }
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar3 + 0x40),&local_38,&local_res10,&local_res10);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_res10 + -2);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    ppuVar8 = &local_38;
    bVar2 = true;
    bVar1 = false;
  }
  *param_2 = *ppuVar8;
  *ppuVar8 = (undefined8 *)&DAT_1821dbf98;
  if ((bVar1) && (puVar7 = (uint *)(local_40 + -2), (*puVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if ((bVar2) && (puVar7 = (uint *)(local_38 + -2), (*puVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return param_2;
}



############ FUN_ 1804eef10 size=630 ############

float * FUN_1804eef10(longlong param_1,float *param_2,undefined8 param_3)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  uint *puVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  double dVar10;
  float fVar11;
  undefined1 *local_res8;
  undefined1 *local_res10;
  longlong local_res20;
  longlong local_58;
  longlong local_50;
  longlong local_48 [4];
  
  local_48[1] = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_res20,&DAT_18249f074);
  local_res10 = &DAT_1821dbf98;
  puVar3 = (undefined8 *)FUN_1804f1300(param_1,local_48,param_3,"stroke-linecap",&local_res10);
  local_res8 = &DAT_1821dbf98;
  puVar4 = (undefined8 *)FUN_1804f1300(param_1,&local_50,param_3,"stroke-linejoin",&local_res8);
  uVar5 = FUN_1804f1300(param_1,&local_58,param_3,"stroke-width",&local_res20);
  iVar2 = FUN_18049bb30(*puVar3,"round");
  if (iVar2 == 0) {
    fVar8 = 2.8026e-45;
  }
  else {
    iVar2 = FUN_18049bb30(*puVar3,"square");
    fVar8 = (float)(uint)(iVar2 == 0);
  }
  iVar2 = FUN_18049bb30(*puVar4,"round");
  if (iVar2 == 0) {
    fVar7 = 1.4013e-45;
  }
  else {
    iVar2 = FUN_18049bb30(*puVar4,"bevel");
    fVar7 = (float)(-(uint)(iVar2 == 0) & 2);
  }
  dVar10 = (double)CONCAT44((uint)((ulonglong)(double)*(float *)(param_1 + 0x38) >> 0x20) &
                            DAT_1824c4f10._4_4_,
                            SUB84((double)*(float *)(param_1 + 0x38),0) & (uint)DAT_1824c4f10);
  fVar11 = ((float)dVar10 +
           (float)(double)CONCAT44((uint)((ulonglong)(double)*(float *)(param_1 + 0x28) >> 0x20) &
                                   DAT_1824c4f10._4_4_,
                                   SUB84((double)*(float *)(param_1 + 0x28),0) & (uint)DAT_1824c4f10
                                  )) * DAT_1824c3d8c;
  fVar9 = (float)FUN_1804f0b80(dVar10,uVar5,*(undefined4 *)(param_1 + 0x20));
  *param_2 = fVar9 * fVar11;
  param_2[1] = fVar7;
  param_2[2] = fVar8;
  puVar6 = (uint *)(local_58 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_50 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_res8 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_48[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_res10 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_res20 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return param_2;
}



############ FUN_ 181251ed0 size=229 ############

void FUN_181251ed0(longlong *param_1,ulonglong param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  undefined8 local_res18;
  longlong local_res20;
  
  iVar3 = FUN_181252020();
  if (iVar3 != (int)param_2) {
    FUN_181252760(param_1);
    puVar2 = *(undefined8 **)(*param_1 + 0x10);
    *(undefined8 *)(*param_1 + 0x10) = 0;
    if (puVar2 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar2 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*puVar2)(puVar2,1);
      }
    }
    if ((param_2 & 1) == 0) {
      pcVar5 = "Italic";
      pcVar4 = "Regular";
    }
    else {
      pcVar5 = "Bold Italic";
      pcVar4 = "Bold";
    }
    if ((param_2 >> 1 & 1) == 0) {
      pcVar5 = pcVar4;
    }
    FUN_18049c4e0(&local_res18,pcVar5);
    local_res20 = *(longlong *)(*param_1 + 0x20);
    *(undefined8 *)(*param_1 + 0x20) = local_res18;
    piVar1 = (int *)(local_res20 + -0x10);
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar1);
      }
    }
    *(byte *)(*param_1 + 0x38) = (byte)(param_2 >> 2) & 1;
    *(undefined4 *)(*param_1 + 0x34) = 0;
  }
  return;
}



############ FUN_ 1804f3d50 size=1064 ############

/* WARNING: Type propagation algorithm not settling */

undefined8 *
FUN_1804f3d50(undefined8 *param_1,undefined8 param_2,longlong *param_3,longlong *param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  undefined8 uVar5;
  longlong *plVar6;
  uint uVar7;
  undefined8 *puVar8;
  uint *puVar9;
  longlong *local_res18;
  longlong local_res20;
  longlong *local_88;
  longlong local_80 [2];
  undefined4 local_70;
  undefined8 local_6c;
  undefined4 local_64;
  longlong local_60;
  longlong *local_58;
  undefined8 local_50;
  undefined4 *local_48;
  undefined4 *local_40;
  
  local_50 = 0xfffffffffffffffe;
  puVar8 = param_1;
  FUN_1813453e0();
  *puVar8 = juce::FileChooserDialogBox::ContentComponent::vftable;
  puVar8[0x16] = param_4;
  uVar5 = (**(code **)(*param_4 + 0x158))(param_4,&local_60);
  plVar1 = param_1 + 0x17;
  local_res18 = plVar1;
  FUN_1813379d0(plVar1,uVar5);
  *plVar1 = (longlong)juce::TextButton::vftable;
  param_1[0x2d] = juce::TextButton::vftable;
  puVar9 = (uint *)(local_60 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_18049c4e0(&local_res18,"Cancel");
  lVar3 = DAT_1826739f8;
  local_48 = &DAT_182673984;
  do {
    LOCK();
    uVar7 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar7 != 0);
  if (DAT_1826739f8 == 0) {
    local_88 = local_res18;
    uVar7 = *(uint *)(local_res18 + -2);
LAB_1804f3eae:
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_88 + -2) = (int)local_88[-2] + 1;
      UNLOCK();
    }
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) == 0) {
LAB_1804f3e66:
      iVar4 = FUN_1812498b0(lVar3 + 0x18,local_res18,*(undefined1 *)(lVar3 + 0x38),0);
      if (iVar4 < 0) {
        local_88 = local_res18;
        uVar7 = *(uint *)(local_res18 + -2);
      }
      else {
        local_88 = (longlong *)FUN_181249970(lVar3 + 0x28,iVar4);
        local_88 = (longlong *)*local_88;
        uVar7 = *(uint *)(local_88 + -2);
      }
      goto LAB_1804f3eae;
    }
    iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res18,*(undefined1 *)(DAT_1826739f8 + 0x38),0);
    if (-1 < iVar4) goto LAB_1804f3e66;
    FUN_181234570(*(undefined8 *)(lVar3 + 0x40),&local_88,&local_res18,&local_res18);
  }
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar9 = (uint *)(local_res18 + -2);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  plVar2 = param_1 + 0x50;
  local_58 = plVar2;
  FUN_1813379d0(plVar2,&local_88);
  *plVar2 = (longlong)juce::TextButton::vftable;
  param_1[0x66] = juce::TextButton::vftable;
  puVar9 = (uint *)(local_88 + -2);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  FUN_18049c4e0(&local_res20,"New Folder");
  lVar3 = DAT_1826739f8;
  local_40 = &DAT_182673984;
  do {
    LOCK();
    uVar7 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar7 != 0);
  if (DAT_1826739f8 == 0) {
    local_80[0] = local_res20;
    uVar7 = *(uint *)(local_res20 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,*(undefined1 *)(DAT_1826739f8 + 0x38),0
                           );
      if (iVar4 < 0) {
        FUN_181234570(*(undefined8 *)(lVar3 + 0x40),local_80,&local_res20,&local_res20);
        goto LAB_1804f3ff9;
      }
    }
    iVar4 = FUN_1812498b0(lVar3 + 0x18,local_res20,*(undefined1 *)(lVar3 + 0x38),0);
    if (iVar4 < 0) {
      local_80[0] = local_res20;
      uVar7 = *(uint *)(local_res20 + -0x10);
    }
    else {
      plVar6 = (longlong *)FUN_181249970(lVar3 + 0x28,iVar4);
      local_80[0] = *plVar6;
      uVar7 = *(uint *)(local_80[0] + -0x10);
    }
  }
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_80[0] + -0x10) = *(int *)(local_80[0] + -0x10) + 1;
    UNLOCK();
  }
LAB_1804f3ff9:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar9 = (uint *)(local_res20 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  puVar8 = param_1 + 0x89;
  local_58 = puVar8;
  FUN_1813379d0(puVar8,local_80);
  *puVar8 = juce::TextButton::vftable;
  param_1[0x9f] = juce::TextButton::vftable;
  puVar9 = (uint *)(local_80[0] + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  lVar3 = *param_3;
  param_1[0xc2] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0xc3] = 0;
  param_1[0xc4] = 0;
  param_1[0xc5] = 0;
  *(undefined4 *)(param_1 + 0xc6) = 9;
  FUN_18134aef0(param_1,param_1[0x16],0xffffffff);
  FUN_18134aef0(param_1,plVar1,0xffffffff);
  local_80[1] = 0xd;
  local_70 = 0;
  FUN_18051b4d0(param_1 + 0x3f,local_80 + 1);
  (**(code **)(*plVar1 + 0x88))(plVar1);
  FUN_18134aef0(param_1,plVar2,0xffffffff);
  local_6c = 0x1b;
  local_64 = 0;
  FUN_18051b4d0(param_1 + 0x78,&local_6c);
  (**(code **)(*plVar2 + 0x88))(plVar2);
  FUN_181343cc0(param_1,puVar8,0xffffffff);
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x18;
  return param_1;
}



############ FUN_ 1805094a0 size=249 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805094a0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  longlong *plVar2;
  undefined1 auStack_78 [32];
  undefined1 local_58;
  undefined8 local_50;
  longlong local_48;
  undefined8 local_38;
  undefined8 local_30;
  undefined **local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_30 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_78;
  if ((*(char *)(param_2 + 0x59) != '\0') && (*(char *)(param_1 + 0xb0) == '\0')) {
    *(undefined1 *)(param_1 + 0xb0) = 1;
    lVar1 = FUN_18133a120();
    if (lVar1 != 0) {
      local_28 = &PTR_vftable_18262b560;
      FUN_18049c4e0(local_20,"_toolbarItem_");
      local_38 = 0;
      local_48 = param_2 + 0x50;
      local_50 = 0;
      local_58 = 1;
      FUN_18133a190(lVar1,&local_28,*(undefined8 *)(param_1 + 0x18),&local_38);
      (**(code **)(*local_28 + 0xb0))(local_28,local_20);
      plVar2 = (longlong *)FUN_1805096c0(param_1);
      if ((plVar2 != (longlong *)0x0) &&
         (*(undefined1 *)((longlong)plVar2 + 0x1e9) = 1, *(int *)((longlong)plVar2 + 0x1cc) == 1)) {
        (**(code **)(*plVar2 + 0x58))(plVar2,0);
      }
    }
  }
}



############ FUN_ 180516d60 size=287 ############

undefined8 *
FUN_180516d60(undefined8 *param_1,undefined8 *param_2,undefined4 *param_3,undefined4 param_4,
             undefined8 param_5)

{
  uint *_Memory;
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 *local_res10;
  
  FUN_18049c4e0(&local_res10,"DragAndDrop",param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::ThreadPoolJob::vftable;
  param_1[1] = local_res10;
  _Memory = (uint *)(local_res10 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  *(undefined1 *)((longlong)param_1 + 0x1a) = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
  param_1[10] = 0;
  param_1[0xb] = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::DragAndDropHelpers::DragAndDropJob::vftable;
  uVar5 = param_2[1];
  param_1[0xc] = *param_2;
  param_1[0xd] = uVar5;
  uVar5 = param_2[3];
  param_1[0xe] = param_2[2];
  param_1[0xf] = uVar5;
  uVar2 = param_3[1];
  uVar3 = param_3[2];
  uVar4 = param_3[3];
  *(undefined4 *)(param_1 + 0x10) = *param_3;
  *(undefined4 *)((longlong)param_1 + 0x84) = uVar2;
  *(undefined4 *)(param_1 + 0x11) = uVar3;
  *(undefined4 *)((longlong)param_1 + 0x8c) = uVar4;
  param_1[0x12] = *(undefined8 *)(param_3 + 4);
  *(undefined4 *)(param_1 + 0x13) = param_4;
  local_res10 = param_1 + 0x14;
  param_1[0x1b] = 0;
  FUN_180488560(local_res10,param_5);
  return param_1;
}



############ FUN_ 181329f30 size=261 ############

longlong * FUN_181329f30(longlong *param_1,longlong *param_2,longlong *param_3,longlong *param_4)

{
  uint *_Memory;
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  byte bVar4;
  byte *pbVar5;
  byte bVar6;
  longlong local_res10;
  longlong local_res18;
  
  lVar3 = *param_2;
  *param_1 = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = *param_4;
  param_1[1] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = *param_3;
  param_1[2] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined2 *)(param_1 + 6) = 1;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  pbVar5 = (byte *)*param_4;
  while( true ) {
    bVar2 = *pbVar5;
    if (bVar2 == 0) {
      FUN_18049c4e0(&local_res10,&DAT_1821e2c3c,param_3,param_4,0xfffffffffffffffe);
      local_res18 = param_1[1];
      param_1[1] = local_res10;
      _Memory = (uint *)(local_res18 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      return param_1;
    }
    if ((bVar2 != 0x20) && (4 < (byte)(bVar2 - 9))) break;
    pbVar5 = pbVar5 + 1;
    if ((char)bVar2 < '\0') {
      bVar6 = 0x40;
      bVar4 = bVar2 & 0x40;
      while ((bVar4 != 0 && (8 < bVar6))) {
        pbVar5 = pbVar5 + 1;
        bVar6 = bVar6 >> 1;
        bVar4 = bVar2 & bVar6;
      }
    }
  }
  return param_1;
}



############ FUN_ 180528e20 size=203 ############

bool FUN_180528e20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  int iVar5;
  float fVar6;
  longlong local_res10;
  
  FUN_18049c4e0(&local_res10,"offline oversample",param_3,param_4,0xfffffffffffffffe);
  lVar2 = local_res10;
  plVar4 = (longlong *)FUN_18119aa60(param_1 + 0x178,local_res10);
  if (*(float *)(plVar4 + 0x17) == 0.0) {
    iVar5 = -1;
    local_res10 = lVar2;
  }
  else {
    fVar6 = (float)FUN_180487220(plVar4 + 0x16,(int)plVar4[0x31]);
    iVar5 = (int)(fVar6 / *(float *)(plVar4 + 0x17));
  }
  iVar3 = (**(code **)(*plVar4 + 0x30))(plVar4);
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar5 != iVar3 + -1;
}



############ FUN_ 1805372c0 size=125 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1805372c0(undefined8 param_1,undefined8 param_2,float *param_3)

{
  undefined8 uVar1;
  undefined *puVar2;
  double dVar3;
  
  if (DAT_1824c3f68 <= (double)*param_3) {
    dVar3 = (double)*param_3;
    if (dVar3 <= _DAT_1824c4268) {
      FUN_1812339a0(param_2,dVar3,1);
      return param_2;
    }
    puVar2 = &DAT_1824ab614;
    uVar1 = 0x912410d3;
  }
  else {
    puVar2 = &DAT_1824aae44;
    uVar1 = 0x4ace37cc;
  }
  uVar1 = FUN_18113e800(DAT_1824c3f68,uVar1,puVar2,4);
  FUN_18049c4e0(param_2,uVar1);
  return param_2;
}



############ FUN_ 180537340 size=125 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_180537340(undefined8 param_1,undefined8 param_2,float *param_3)

{
  undefined8 uVar1;
  undefined *puVar2;
  double dVar3;
  
  if (DAT_1824c3f68 <= (double)*param_3) {
    dVar3 = (double)*param_3;
    if (dVar3 <= _DAT_1824c4268) {
      FUN_1812339a0(param_2,dVar3,1);
      return param_2;
    }
    puVar2 = &DAT_1824ac4d8;
    uVar1 = 0x12929f56;
  }
  else {
    puVar2 = &DAT_1824ac06c;
    uVar1 = 0xe6fdb5b2;
  }
  uVar1 = FUN_18113e800(DAT_1824c3f68,uVar1,puVar2,4);
  FUN_18049c4e0(param_2,uVar1);
  return param_2;
}



############ FUN_ 1805390f0 size=233 ############

ushort FUN_1805390f0(longlong param_1,undefined8 param_2)

{
  char *_Str;
  int iVar1;
  uint uVar2;
  longlong *plVar3;
  uint *puVar4;
  char *local_res8;
  
  FUN_18049c4e0(&local_res8,&DAT_1824acbf4);
  iVar1 = FUN_1812498b0(param_1,param_2,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar1 < 0) {
    uVar2 = *(uint *)(local_res8 + -0x10);
    _Str = local_res8;
  }
  else {
    plVar3 = (longlong *)FUN_181249970(param_1 + 0x10,iVar1);
    uVar2 = *(uint *)((char *)*plVar3 + -0x10);
    _Str = (char *)*plVar3;
  }
  puVar4 = (uint *)(_Str + -0x10);
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  iVar1 = atoi(_Str);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_res8 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return (ushort)iVar1 << 8 | (ushort)iVar1 >> 8;
}



############ FUN_ 1805391e0 size=221 ############

uint FUN_1805391e0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  char *_Str;
  int iVar2;
  uint uVar3;
  longlong *plVar4;
  uint *puVar5;
  char *local_res10;
  
  FUN_18049c4e0(&local_res10,param_3);
  iVar2 = FUN_1812498b0(param_1,param_2,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar2 < 0) {
    uVar3 = *(uint *)(local_res10 + -0x10);
    _Str = local_res10;
  }
  else {
    plVar4 = (longlong *)FUN_181249970(param_1 + 0x10,iVar2);
    uVar3 = *(uint *)((char *)*plVar4 + -0x10);
    _Str = (char *)*plVar4;
  }
  puVar5 = (uint *)(_Str + -0x10);
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  uVar3 = atoi(_Str);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_res10 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return uVar3 & 0xff;
}



############ FUN_ 18053d130 size=432 ############

undefined8 *
FUN_18053d130(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,
             undefined4 param_5,int param_6)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  longlong lVar3;
  undefined8 uVar4;
  longlong local_res10;
  
  FUN_18049c4e0(&local_res10,"FLAC file");
  *param_1 = juce::AudioFormatWriter::vftable;
  param_1[1] = param_3;
  *(undefined4 *)(param_1 + 2) = param_4;
  *(undefined4 *)((longlong)param_1 + 0x14) = param_5;
  *(undefined1 *)(param_1 + 3) = 0;
  FUN_1812b1fe0(param_1 + 4,param_4);
  param_1[9] = param_2;
  param_1[10] = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::FlacWriter::vftable;
  *(undefined1 *)(param_1 + 0xb) = 0;
  if ((longlong *)param_1[9] == (longlong *)0x0) {
    lVar3 = 0;
  }
  else {
    lVar3 = (**(code **)(*(longlong *)param_1[9] + 0x18))();
    if (lVar3 < 0) {
      lVar3 = 0;
    }
  }
  param_1[0xd] = lVar3;
  uVar4 = FUN_18139d3c0();
  param_1[0xc] = uVar4;
  if (0 < param_6) {
    iVar2 = 8;
    if (param_6 < 8) {
      iVar2 = param_6;
    }
    FUN_18139bf00(uVar4,iVar2);
  }
  if (**(int **)param_1[0xc] == 1) {
    (*(int **)param_1[0xc])[4] = (uint)(*(int *)(param_1 + 2) == 2);
  }
  if (**(int **)param_1[0xc] == 1) {
    (*(int **)param_1[0xc])[5] = (uint)(*(int *)(param_1 + 2) == 2);
  }
  if (**(int **)param_1[0xc] == 1) {
    (*(int **)param_1[0xc])[6] = *(int *)(param_1 + 2);
  }
  if (**(int **)param_1[0xc] == 1) {
    uVar1 = 0x18;
    if (*(uint *)((longlong)param_1 + 0x14) < 0x18) {
      uVar1 = *(uint *)((longlong)param_1 + 0x14);
    }
    (*(int **)param_1[0xc])[7] = uVar1;
  }
  if (**(int **)param_1[0xc] == 1) {
    (*(int **)param_1[0xc])[8] = (int)(longlong)(double)param_1[1];
  }
  if (**(int **)param_1[0xc] == 1) {
    (*(int **)param_1[0xc])[9] = 0;
  }
  iVar2 = FUN_18139c260(param_1[0xc]);
  *(bool *)(param_1 + 0xb) = iVar2 == 0;
  return param_1;
}



############ FUN_ 18053e070 size=1805 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_18053e070(undefined8 *param_1,undefined8 param_2,double param_3,undefined4 param_4,
             undefined4 param_5,int param_6,longlong param_7)

{
  uint *puVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  uint uVar4;
  int iVar5;
  char *pcVar6;
  int *piVar7;
  int iVar8;
  undefined4 uVar9;
  void *pvVar10;
  longlong lVar11;
  longlong lVar12;
  undefined8 *puVar13;
  undefined4 *puVar14;
  ulonglong *puVar15;
  ulonglong uVar16;
  float fVar17;
  double dVar18;
  double dVar19;
  float fVar20;
  double dVar21;
  double dVar22;
  longlong local_res10;
  char *local_res18;
  undefined1 local_e8 [40];
  undefined1 local_c0 [40];
  undefined1 local_98 [96];
  
  FUN_18049c4e0(&local_res10,"Ogg-Vorbis file");
  *param_1 = juce::AudioFormatWriter::vftable;
  param_1[1] = param_3;
  *(undefined4 *)(param_1 + 2) = param_4;
  *(undefined4 *)((longlong)param_1 + 0x14) = param_5;
  *(undefined1 *)(param_1 + 3) = 0;
  FUN_1812b1fe0(param_1 + 4,param_4);
  param_1[9] = param_2;
  param_1[10] = local_res10;
  puVar1 = (uint *)(local_res10 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  *param_1 = juce::OggWriter::vftable;
  *(undefined1 *)(param_1 + 0xb) = 0;
  puVar2 = param_1 + 0x44;
  *puVar2 = 0;
  param_1[0x45] = 0;
  param_1[0x46] = 0;
  param_1[0x47] = 0;
  param_1[0x48] = 0;
  pvVar10 = calloc(1,0x1670);
  param_1[0x48] = pvVar10;
  fVar20 = (float)param_6 * DAT_1824c3cb8;
  fVar17 = 0.0;
  if ((0.0 <= fVar20) && (fVar17 = DAT_1824c3ea4, fVar20 <= DAT_1824c3ea4)) {
    fVar17 = fVar20;
  }
  fVar20 = (float)((double)fVar17 + _DAT_1824c3d30);
  if (DAT_1824c3ea4 <= (float)((double)fVar17 + _DAT_1824c3d30)) {
    fVar20 = DAT_1824c3e9c;
  }
  *(float *)((longlong)pvVar10 + 0x1578) = fVar20;
  lVar11 = (longlong)pvVar10 + 0x1568;
  lVar12 = FUN_181374210(param_4,(int)param_3,(double)fVar20);
  *(longlong *)((longlong)pvVar10 + 0x1560) = lVar12;
  if (lVar12 != 0) {
    FUN_181373450(puVar2,param_4,(int)param_3);
    *(undefined4 *)((longlong)pvVar10 + 0x157c) = 0;
    *(undefined4 *)((longlong)pvVar10 + 0x15a8) = 1;
    iVar8 = FUN_181373610(puVar2);
    if (iVar8 == 0) {
      puVar3 = param_1 + 0x49;
      *puVar3 = 0;
      param_1[0x4a] = 0;
      param_1[0x4b] = 0;
      param_1[0x4c] = 0;
      uVar9 = FUN_1812498b0(param_7,"encoder",*(undefined1 *)(param_7 + 0x20),0,lVar11);
      puVar13 = (undefined8 *)FUN_181249970(param_7 + 0x10,uVar9);
      local_res18 = (char *)*puVar13;
      puVar1 = (uint *)(local_res18 + -0x10);
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      if (*local_res18 != '\0') {
        FUN_181388810(puVar3,"ENCODER");
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      uVar9 = FUN_1812498b0(param_7,"id3title",*(undefined1 *)(param_7 + 0x20),0);
      puVar13 = (undefined8 *)FUN_181249970(param_7 + 0x10,uVar9);
      pcVar6 = (char *)*puVar13;
      puVar1 = (uint *)(pcVar6 + -0x10);
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      if (*pcVar6 != '\0') {
        FUN_181388810(puVar3,"TITLE");
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      uVar9 = FUN_1812498b0(param_7,"id3artist",*(undefined1 *)(param_7 + 0x20),0);
      puVar13 = (undefined8 *)FUN_181249970(param_7 + 0x10,uVar9);
      pcVar6 = (char *)*puVar13;
      puVar1 = (uint *)(pcVar6 + -0x10);
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      if (*pcVar6 != '\0') {
        FUN_181388810(puVar3,"ARTIST");
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      uVar9 = FUN_1812498b0(param_7,"id3album",*(undefined1 *)(param_7 + 0x20),0);
      puVar13 = (undefined8 *)FUN_181249970(param_7 + 0x10,uVar9);
      pcVar6 = (char *)*puVar13;
      puVar1 = (uint *)(pcVar6 + -0x10);
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      if (*pcVar6 != '\0') {
        FUN_181388810(puVar3,"ALBUM");
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      FUN_18053ebe0(param_1,param_7,"id3comment","COMMENT");
      FUN_18053ebe0(param_1,param_7,"id3date",&DAT_1824ace18);
      FUN_18053ebe0(param_1,param_7,"id3genre","GENRE");
      FUN_18053ebe0(param_1,param_7,"id3trackNumber","TRACKNUMBER");
      iVar8 = FUN_181390660(param_1 + 0x4d,puVar2,1);
      if (iVar8 == 0) {
        puVar13 = (undefined8 *)param_1[0x5c];
        lVar11 = param_1[0x48];
        puVar14 = calloc(1,0x28);
        puVar14[1] = *(undefined4 *)((longlong)param_1 + 0x224);
        *puVar14 = 0xc61c3c00;
        *(longlong *)(puVar14 + 2) = lVar11 + 0x1348;
        puVar13[0xe] = puVar14;
        pvVar10 = calloc(1,0x108);
        *puVar13 = pvVar10;
        FUN_18138d540(pvVar10,puVar2);
        piVar7 = (int *)param_1[0x48];
        puVar13[0x12] = 0;
        puVar13[0x13] = 0;
        puVar13[0x14] = 0;
        puVar13[0x15] = 0;
        puVar13[0x16] = 0;
        puVar13[0x17] = 0;
        puVar13[0x18] = 0;
        if ((piVar7 + 0x54e != (int *)0x0) && (0 < piVar7[0x551])) {
          iVar8 = *(int *)(param_1 + 0x45);
          iVar5 = *piVar7;
          *(int *)(puVar13 + 0x15) = piVar7[1] / iVar5;
          *(undefined4 *)(puVar13 + 0x12) = 1;
          dVar19 = DAT_1824c4050;
          dVar21 = (double)(iVar5 >> 1);
          dVar22 = (double)iVar8;
          dVar18 = floor(((double)piVar7[0x54e] * dVar21) / dVar22 + DAT_1824c4050);
          *(int *)((longlong)puVar13 + 0x9c) = (int)dVar18;
          dVar18 = floor(((double)piVar7[0x54f] * dVar21) / dVar22 + dVar19);
          *(int *)(puVar13 + 0x14) = (int)dVar18;
          dVar19 = floor(((double)piVar7[0x550] * dVar21) / dVar22 + dVar19);
          *(int *)((longlong)puVar13 + 0xa4) = (int)dVar19;
          puVar13[0x16] = 0x401c000000000000;
          iVar8 = piVar7[0x551];
          dVar19 = *(double *)(piVar7 + 0x552);
          *(int *)(puVar13 + 0x13) = (int)((double)iVar8 * dVar19);
          *(int *)((longlong)puVar13 + 0x94) = (int)((double)iVar8 * dVar19);
        }
        param_1[0x57] = 3;
      }
      FUN_181390da0(param_1 + 0x4d,param_1 + 0x5d);
      puVar15 = (ulonglong *)FUN_18123aca0();
      uVar16 = *puVar15 * 0x5deece66d + 0xb & 0xffffffffffff;
      *puVar15 = uVar16;
      FUN_181392770(param_1 + 0xc,(longlong)uVar16 >> 0x10);
      FUN_181386ec0(param_1 + 0x4d,puVar3,local_e8,local_c0,local_98);
      FUN_1813922d0(param_1 + 0xc,local_e8);
      FUN_1813922d0(param_1 + 0xc,local_c0);
      FUN_1813922d0(param_1 + 0xc,local_98);
      iVar8 = FUN_181392030(param_1 + 0xc,param_1 + 0x3b);
      while (iVar8 != 0) {
        (**(code **)(*(longlong *)param_1[9] + 0x20))
                  ((longlong *)param_1[9],param_1[0x3b],(longlong)*(int *)(param_1 + 0x3c));
        (**(code **)(*(longlong *)param_1[9] + 0x20))
                  ((longlong *)param_1[9],param_1[0x3d],(longlong)*(int *)(param_1 + 0x3e));
        iVar8 = FUN_181392030(param_1 + 0xc,param_1 + 0x3b);
      }
      *(undefined1 *)(param_1 + 0xb) = 1;
      return param_1;
    }
  }
  FUN_181388250(puVar2);
  return param_1;
}



############ FUN_ 180547020 size=153 ############

void FUN_180547020(undefined8 param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *puVar2;
  longlong local_res10 [2];
  longlong local_res20;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_res20);
  FUN_181211fd0(local_res10,param_3);
  FUN_18122c880(param_1,&local_res20,local_res10,param_4,uVar3);
  puVar2 = (uint *)(local_res10[0] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(local_res20 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 1805470c0 size=274 ############

int FUN_1805470c0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  uint uVar2;
  longlong *plVar3;
  uint *puVar4;
  char *local_res8;
  longlong *local_res10;
  char *local_res18;
  
  local_res10 = param_2;
  local_res18 = (char *)param_3;
  FUN_18049c4e0(&local_res8,&DAT_1824acbf4,param_3,param_4,0xfffffffffffffffe);
  local_res10 = (longlong *)*param_2;
  iVar1 = FUN_1812498b0(param_1,local_res10,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar1 < 0) {
    local_res18 = local_res8;
    puVar4 = (uint *)(local_res8 + -0x10);
    uVar2 = *puVar4;
  }
  else {
    plVar3 = (longlong *)FUN_181249970(param_1 + 0x10,iVar1);
    local_res18 = (char *)*plVar3;
    puVar4 = (uint *)(local_res18 + -0x10);
    uVar2 = *puVar4;
  }
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  iVar1 = atoi(local_res18);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_res8 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return iVar1;
}



############ FUN_ 1805471e0 size=219 ############

int FUN_1805471e0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  char *_Str;
  int iVar1;
  uint uVar2;
  longlong *plVar3;
  uint *puVar4;
  char *local_res10;
  
  FUN_18049c4e0(&local_res10,param_3);
  iVar1 = FUN_1812498b0(param_1,param_2,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar1 < 0) {
    uVar2 = *(uint *)(local_res10 + -0x10);
    _Str = local_res10;
  }
  else {
    plVar3 = (longlong *)FUN_181249970(param_1 + 0x10,iVar1);
    uVar2 = *(uint *)((char *)*plVar3 + -0x10);
    _Str = (char *)*plVar3;
  }
  puVar4 = (uint *)(_Str + -0x10);
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  iVar1 = atoi(_Str);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return iVar1;
}



############ FUN_ 180541960 size=760 ############

void FUN_180541960(byte *param_1,undefined8 param_2)

{
  uint uVar1;
  uint *puVar2;
  longlong local_res8;
  longlong local_res18;
  longlong local_res20;
  longlong local_58;
  longlong local_50;
  longlong local_48;
  longlong local_40;
  longlong local_38;
  longlong local_30;
  longlong local_28 [2];
  
  local_28[1] = 0xfffffffffffffffe;
  FUN_180541c60(param_1,param_2,"acid one shot",1);
  FUN_180541c60(param_1,param_2,"acid root set",2);
  FUN_180541c60(param_1,param_2,"acid stretch",4);
  FUN_180541c60(param_1,param_2,"acid disk based",8);
  FUN_180541c60(param_1,param_2,"acidizer flag",0x10);
  if ((*param_1 & 2) != 0) {
    FUN_18049c4e0(&local_res18,"acid root note");
    FUN_181211fd0(&local_res8,*(undefined2 *)(param_1 + 4));
    FUN_18122c880(param_2,&local_res18,&local_res8);
    puVar2 = (uint *)(local_res8 + -0x10);
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
    puVar2 = (uint *)(local_res18 + -0x10);
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
  }
  FUN_18049c4e0(&local_58,"acid beats");
  FUN_181211fd0(&local_res20,*(undefined4 *)(param_1 + 0xc));
  FUN_18122c880(param_2,&local_58,&local_res20);
  puVar2 = (uint *)(local_res20 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(local_58 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_18049c4e0(&local_48,"acid denominator");
  FUN_181211fd0(&local_50,*(undefined2 *)(param_1 + 0x10));
  FUN_18122c880(param_2,&local_48,&local_50);
  puVar2 = (uint *)(local_50 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(local_48 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_18049c4e0(&local_38,"acid numerator");
  FUN_181211fd0(&local_40,*(undefined2 *)(param_1 + 0x12));
  FUN_18122c880(param_2,&local_38,&local_40);
  puVar2 = (uint *)(local_40 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(local_38 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_18049c4e0(local_28,"acid tempo");
  FUN_1812339a0(&local_30,(double)*(float *)(param_1 + 0x14),0,0);
  FUN_18122c880(param_2,local_28,&local_30);
  puVar2 = (uint *)(local_30 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(local_28[0] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 18136e1e0 size=662 ############

void FUN_18136e1e0(undefined8 param_1,longlong *param_2,longlong param_3)

{
  uint uVar1;
  code *pcVar2;
  wint_t wVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong lVar7;
  undefined8 uVar8;
  uint *puVar9;
  char *pcVar10;
  undefined **ppuVar11;
  int local_res10 [2];
  int local_res18 [2];
  longlong local_res20;
  longlong local_58;
  undefined8 local_50;
  void *local_48;
  ulonglong local_40;
  
  local_50 = 0xfffffffffffffffe;
  lVar7 = (**(code **)(*param_2 + 0xa8))(param_2);
  do {
    if (param_3 <= lVar7) {
      return;
    }
    pcVar2 = *(code **)(*param_2 + 0x40);
    if (pcVar2 == FUN_181235d70) {
      iVar4 = (**(code **)(*param_2 + 0x18))(param_2,local_res10,4);
      iVar6 = local_res10[0];
      if (iVar4 != 4) {
        iVar6 = 0;
      }
    }
    else {
      iVar6 = (*pcVar2)(param_2);
    }
    lVar7 = (**(code **)(*param_2 + 0xa8))(param_2);
    lVar7 = param_3 - lVar7;
    if (0 < lVar7) {
      pcVar2 = *(code **)(*param_2 + 0x40);
      if (pcVar2 == FUN_181235d70) {
        iVar5 = (**(code **)(*param_2 + 0x18))(param_2,local_res18,4);
        iVar4 = local_res18[0];
        if (iVar5 != 4) {
          iVar4 = 0;
        }
      }
      else {
        iVar4 = (*pcVar2)();
      }
      if (iVar4 < lVar7) {
        lVar7 = (longlong)iVar4;
      }
      if (lVar7 < 1) {
        return;
      }
      ppuVar11 = &PTR_DAT_18262b710;
      do {
        pcVar10 = *ppuVar11;
        iVar4 = 0;
        while (wVar3 = towupper((ushort)(iVar6 >> ((char)iVar4 * '\b' & 0x1fU)) & 0xff),
              (int)*pcVar10 == (uint)wVar3) {
          iVar4 = iVar4 + 1;
          pcVar10 = pcVar10 + 1;
          if (3 < iVar4) {
            local_48 = (void *)0x0;
            local_40 = 0;
            (**(code **)(*param_2 + 0xa0))(param_2,&local_48,lVar7);
            FUN_18049c4e0(&local_res20,*ppuVar11);
            uVar8 = FUN_18122f8f0(&local_58,local_48,local_40 & 0xffffffff);
            FUN_18122c880(param_1,&local_res20,uVar8);
            puVar9 = (uint *)(local_58 + -0x10);
            if ((*puVar9 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar9;
              *puVar9 = *puVar9 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar9);
              }
            }
            puVar9 = (uint *)(local_res20 + -0x10);
            if ((*puVar9 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar9;
              *puVar9 = *puVar9 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar9);
              }
            }
                    /* WARNING: Subroutine does not return */
            free(local_48);
          }
        }
        ppuVar11 = ppuVar11 + 1;
      } while (ppuVar11 != (undefined **)&DAT_18262b998);
    }
    lVar7 = (**(code **)(*param_2 + 0xa8))(param_2);
  } while( true );
}



############ FUN_ 18136f150 size=213 ############

int FUN_18136f150(longlong param_1,undefined8 *param_2)

{
  char *_Str;
  int iVar1;
  uint uVar2;
  longlong *plVar3;
  uint *puVar4;
  char *local_res10;
  undefined8 local_res18;
  
  FUN_18049c4e0(&local_res10,&DAT_1821e42b4);
  local_res18 = *param_2;
  iVar1 = FUN_1812498b0(param_1,local_res18,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar1 < 0) {
    uVar2 = *(uint *)(local_res10 + -0x10);
    _Str = local_res10;
  }
  else {
    plVar3 = (longlong *)FUN_181249970(param_1 + 0x10,iVar1);
    uVar2 = *(uint *)((char *)*plVar3 + -0x10);
    _Str = (char *)*plVar3;
  }
  puVar4 = (uint *)(_Str + -0x10);
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  iVar1 = atoi(_Str);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return iVar1;
}



############ FUN_ 1805509c0 size=1024 ############

undefined8 * FUN_1805509c0(undefined8 *param_1,longlong *param_2,int param_3,int param_4)

{
  uint uVar1;
  longlong lVar2;
  uint *puVar3;
  longlong local_res10;
  longlong local_90;
  undefined1 local_88 [8];
  longlong local_80;
  undefined1 local_78 [8];
  longlong local_70;
  undefined1 local_68 [8];
  longlong local_60;
  undefined1 local_58 [8];
  longlong local_50 [3];
  
  local_50[1] = 0xfffffffffffffffe;
  FUN_18049c4e0(local_50,"DirectSound");
  *param_1 = juce::AudioIODevice::vftable;
  lVar2 = *param_2;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[2] = local_50[0];
  puVar3 = (uint *)(local_50[0] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    *puVar3 = *puVar3 + 1;
    UNLOCK();
  }
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  FUN_18049c4e0(&local_res10,"JUCE DSound");
  FUN_18122b770(param_1 + 3,&local_res10);
  puVar3 = (uint *)(local_res10 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  *param_1 = juce::DSoundAudioIODevice::vftable;
  param_1[3] = juce::DSoundAudioIODevice::vftable;
  param_1[0x43] = 0;
  param_1[0x44] = 0;
  param_1[0x45] = 0;
  param_1[0x46] = 0;
  *(int *)(param_1 + 0x47) = param_3;
  *(int *)((longlong)param_1 + 0x23c) = param_4;
  *(undefined2 *)(param_1 + 0x48) = 0;
  param_1[0x49] = &DAT_1821dbf98;
  param_1[0x4a] = 0;
  param_1[0x4b] = 0;
  param_1[0x4c] = 0;
  param_1[0x4d] = 0;
  *(undefined1 *)(param_1 + 0x4e) = 0;
  _Mtx_init_in_situ(param_1 + 0x4f,2);
  _Cnd_init_in_situ(param_1 + 0x59);
  *(undefined1 *)(param_1 + 0x62) = 0;
  *(undefined4 *)(param_1 + 99) = 0;
  param_1[100] = 0;
  param_1[0x65] = 0;
  param_1[0x68] = 4;
  *(undefined4 *)(param_1 + 0x69) = 0xffffffff;
  *(undefined1 *)((longlong)param_1 + 0x34c) = 0;
  *(undefined4 *)(param_1 + 0x66) = 0;
  *(undefined4 *)((longlong)param_1 + 0x334) = 0;
  *(undefined4 *)(param_1 + 0x67) = 0;
  *(undefined4 *)((longlong)param_1 + 0x33c) = 0;
  param_1[0x6a] = 0;
  param_1[0x6d] = 4;
  *(undefined4 *)(param_1 + 0x6e) = 0xffffffff;
  *(undefined1 *)((longlong)param_1 + 0x374) = 0;
  *(undefined4 *)(param_1 + 0x6b) = 0;
  *(undefined4 *)((longlong)param_1 + 0x35c) = 0;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x364) = 0;
  param_1[0x6f] = 0;
  param_1[0x70] = 0;
  param_1[0x71] = param_1 + 0x73;
  param_1[0x72] = 0;
  *(undefined1 *)(param_1 + 0x93) = 0;
  param_1[0x94] = 0;
  param_1[0x95] = 0;
  param_1[0x96] = param_1 + 0x98;
  param_1[0x97] = 0;
  *(undefined1 *)(param_1 + 0xb8) = 0;
  param_1[0xb9] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xba));
  if (-1 < param_3) {
    FUN_18049c4e0(&local_90,&DAT_1824ad9c0);
    FUN_1812344e0(local_88,&local_90);
    puVar3 = (uint *)(local_90 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    FUN_18122dc00(param_1 + 0x45,local_88);
    FUN_18049c4e0(&local_80,"Right");
    FUN_1812344e0(local_78,&local_80);
    puVar3 = (uint *)(local_80 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    FUN_18122dc00(param_1 + 0x45,local_78);
  }
  if (-1 < param_4) {
    FUN_18049c4e0(&local_70,&DAT_1824ad9c0);
    FUN_1812344e0(local_68,&local_70);
    puVar3 = (uint *)(local_70 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    FUN_18122dc00(param_1 + 0x43,local_68);
    FUN_18049c4e0(&local_60,"Right");
    FUN_1812344e0(local_58,&local_60);
    puVar3 = (uint *)(local_60 + -0x10);
    if ((*puVar3 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar3;
      *puVar3 = *puVar3 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar3);
      }
    }
    FUN_18122dc00(param_1 + 0x43,local_58);
  }
  return param_1;
}



############ FUN_ 180552040 size=401 ############

undefined8 *
FUN_180552040(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  undefined8 *dwNewLong;
  uint uVar1;
  HMODULE hModule;
  undefined8 *local_res10;
  
  FUN_18049c4e0(&local_res10,"DirectSound",param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::AudioIODeviceType::vftable;
  param_1[1] = local_res10;
  _Memory = (uint *)(local_res10 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = 0;
  param_1[3] = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  dwNewLong = param_1 + 4;
  param_1[5] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 6) = 0;
  *dwNewLong = juce::DeviceChangeDetector::vftable;
  local_res10 = dwNewLong;
  FUN_1804cf280(param_1 + 7,L"DirectSound",FUN_1804cf5b0);
  SetWindowLongPtrW((HWND)param_1[8],-0x15,(LONG_PTR)dwNewLong);
  *param_1 = juce::DSoundAudioIODeviceType::vftable;
  *dwNewLong = juce::DSoundAudioIODeviceType::vftable;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  *(undefined1 *)(param_1 + 0x11) = 0;
  if (DAT_182678f30 == (FARPROC)0x0) {
    hModule = LoadLibraryA("dsound.dll");
    DAT_182678f30 = GetProcAddress(hModule,"DirectSoundCreate");
    DAT_182678f40 = GetProcAddress(hModule,"DirectSoundCaptureCreate");
    DAT_182678f38 = GetProcAddress(hModule,"DirectSoundEnumerateW");
    DAT_182678f48 = GetProcAddress(hModule,"DirectSoundCaptureEnumerateW");
  }
  return param_1;
}



############ FUN_ 18055de20 size=328 ############

undefined8 FUN_18055de20(undefined8 param_1,undefined4 param_2)

{
  switch(param_2) {
  case 0:
  case 4:
    FUN_18049c4e0(param_1,"6 dB/oct");
    return param_1;
  case 1:
  case 5:
    FUN_18049c4e0(param_1,"12 dB/oct");
    return param_1;
  case 2:
  case 6:
    FUN_18049c4e0(param_1,"24 dB/oct");
    return param_1;
  case 3:
  case 7:
    FUN_18049c4e0(param_1,"48 dB/oct");
    return param_1;
  case 8:
    FUN_18049c4e0(param_1,&DAT_1824b0314);
    return param_1;
  case 9:
    FUN_18049c4e0(param_1,"high shelf");
    return param_1;
  case 10:
    FUN_18049c4e0(param_1,"low shelf");
    return param_1;
  case 0xb:
    FUN_18049c4e0(param_1,&DAT_1824b02ac);
    return param_1;
  case 0xc:
    FUN_18049c4e0(param_1,"band pass");
    return param_1;
  case 0xd:
    FUN_18049c4e0(param_1,"band shelf");
    return param_1;
  case 0xe:
    FUN_18049c4e0(param_1,"band reject");
    return param_1;
  default:
    FUN_18049c4e0(param_1,&DAT_18249336a);
    return param_1;
  }
}



############ FUN_ 18055e1c0 size=33 ############

undefined8
.?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
          (undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"NoOpenGLOption");
  return param_2;
}



############ FUN_ 18055e4e0 size=33 ############

undefined8 FUN_18055e4e0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"HelpOpenedOption");
  return param_2;
}



############ FUN_ 1811e50d0 size=130 ############

undefined8 * FUN_1811e50d0(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,"CWEnabledOption");
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res8;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = CueFreqDisplayEnabledOption::vftable;
  return param_1;
}



############ FUN_ 181253f80 size=150 ############

void FUN_181253f80(longlong param_1)

{
  int *_Memory;
  int iVar1;
  undefined8 local_res8;
  longlong local_res10;
  
  *(undefined4 *)(param_1 + 0x5c) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x58) = 0;
  FUN_18049c4e0(&local_res8,"Regular");
  local_res10 = *(longlong *)(param_1 + 0x18);
  *(undefined8 *)(param_1 + 0x18) = local_res8;
  _Memory = (int *)(local_res10 + -0x10);
  if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  memset((void *)(param_1 + 0x70),0,0x100);
  FUN_1804ae910(param_1 + 0x60);
  if (*(int *)(param_1 + 0x68) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x60));
  }
  *(undefined4 *)(param_1 + 0x68) = 0;
  return;
}



############ FUN_ 180579c10 size=265 ############

undefined8 * FUN_180579c10(undefined8 *param_1)

{
  uint *_Memory;
  uint uVar1;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8);
  *param_1 = juce::Component::vftable;
  param_1[1] = local_res8;
  _Memory = (uint *)(local_res8 + -2);
  if ((*(uint *)(local_res8 + -2) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x17] = 0;
  *param_1 = Styled<juce::Component>::vftable;
  param_1[0x16] = Styled<juce::Component>::vftable;
  *(undefined1 *)(param_1 + 0x18) = 0;
  return param_1;
}



############ FUN_ 18057a680 size=181 ############

undefined8 *
FUN_18057a680(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res10 [3];
  
  local_res10[0] = param_2;
  FUN_18049c4e0(local_res10,"resize",param_3,param_4,0xfffffffffffffffe);
  FUN_1813379d0(param_1,local_res10);
  *param_1 = juce::TextButton::vftable;
  param_1[0x16] = juce::TextButton::vftable;
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x3a] = 0;
  *param_1 = Styled<juce::TextButton>::vftable;
  param_1[0x16] = Styled<juce::TextButton>::vftable;
  param_1[0x39] = Styled<juce::TextButton>::vftable;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  return param_1;
}



############ FUN_ 1814c9b60 size=821 ############

void FUN_1814c9b60(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6)

{
  uint *_Memory;
  uint uVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined **ppuVar4;
  undefined1 auStack_638 [40];
  undefined8 *local_610;
  undefined4 local_608;
  undefined1 local_600 [136];
  undefined8 local_578;
  longlong local_560 [5];
  undefined8 local_538;
  undefined8 *local_530;
  void *local_4a0;
  undefined4 local_494;
  ulonglong local_38;
  
  local_538 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_638;
  local_578 = param_6;
  local_608 = 0;
  local_610 = (undefined8 *)param_2;
  local_530 = param_1;
  FUN_18049c4e0(local_560,"PluginTutorialComponent");
  *param_1 = juce::Component::vftable;
  param_1[1] = local_560[0];
  _Memory = (uint *)(local_560[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  *param_1 = CloudyTutorialEngine::vftable;
  param_1[0x16] = CloudyTutorialEngine::vftable;
  param_1[0x19] = CloudyTutorialEngine::vftable;
  param_1[0x1a] = CloudyTutorialEngine::vftable;
  param_1[0x1b] = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = param_4;
  param_1[0x25] = param_5;
  param_1[0x26] = local_610;
  param_1[0x27] = param_3;
  param_1[0x28] = 0;
  param_1[0x29] = local_578;
  FUN_1814cd550(param_1 + 0x2a);
  FUN_1815ef760(param_1 + 0x52);
  FUN_181330640(param_1 + 0x72);
  ppuVar4 = juce::DrawablePath::vftable;
  param_1[0x72] = juce::DrawablePath::vftable;
  puVar3 = param_1 + 0xa4;
  FUN_181330640();
  *puVar3 = ppuVar4;
  puVar3 = param_1 + 0xd6;
  FUN_181330640();
  *puVar3 = ppuVar4;
  puVar3 = param_1 + 0x108;
  FUN_181330640();
  *puVar3 = ppuVar4;
  puVar3 = param_1 + 0x13a;
  FUN_181330640();
  *puVar3 = ppuVar4;
  puVar3 = param_1 + 0x16c;
  FUN_181330640();
  *puVar3 = ppuVar4;
  param_1[0x19e] = 0;
  param_1[0x19f] = 0;
  param_1[0x1a0] = 0;
  puVar3 = param_1 + 0x1a1;
  *puVar3 = 0;
  param_1[0x1a2] = 0;
  local_610 = puVar3;
  uVar2 = FUN_18047e380();
  *puVar3 = uVar2;
  param_1[0x1a3] = 0;
  param_1[0x1a4] = 0;
  param_1[0x1a5] = 0;
  param_1[0x1a6] = 0;
  param_1[0x1a7] = std::_Func_impl_no_alloc<<lambda_99b31b9029fc6db05b18ba78fda9a19a>,void>::vftable
  ;
  param_1[0x1ae] = param_1 + 0x1a7;
  param_1[0x1af] = std::_Func_impl_no_alloc<<lambda_4c57247d03489eb8263708f6b2e9326a>,void>::vftable
  ;
  param_1[0x1b6] = param_1 + 0x1af;
  FUN_18049c4e0(local_600,&DAT_1823a39b0);
  uVar2 = FUN_180576a30(&local_4a0,local_600);
  FUN_181330ae0(param_1 + 0x72,uVar2);
  local_494 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_4a0);
}



############ FUN_ 1814cfbf0 size=524 ############

undefined8 *
FUN_1814cfbf0(undefined8 *param_1,undefined8 param_2,undefined4 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong local_res10;
  undefined8 local_68;
  undefined4 local_60;
  undefined4 local_50;
  undefined **local_48;
  undefined8 *local_40;
  undefined ***local_10;
  
  FUN_18049c4e0(&local_res10,"Tutorial beacon",param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::Component::vftable;
  param_1[1] = local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  param_1[0x1a] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x1b) = 0;
  *param_1 = CloudyTutorialBeacon::vftable;
  param_1[0x16] = CloudyTutorialBeacon::vftable;
  param_1[0x19] = CloudyTutorialBeacon::vftable;
  local_50 = DAT_1824c3e28;
  local_68 = CONCAT44(DAT_1824c44cc,DAT_1824c442c);
  local_60 = DAT_1824c3e28;
  FUN_181408750(param_1 + 0x1c,&local_68);
  *(undefined4 *)(param_1 + 0x50) = 0x3f800000;
  param_1[0x52] = 0;
  param_1[0x53] = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xef | 8;
  *(byte *)((longlong)param_1 + 0xa9) = *(byte *)((longlong)param_1 + 0xa9) & 0xf7;
  FUN_181411b10(param_1 + 0x1c,&DAT_182280c14,DAT_1824c3ea4);
  local_48 = std::
             _Func_impl_no_alloc<<lambda_24a81462690ec0c50d309fee46886577>,void,juce::StringRef,float>
             ::vftable;
  local_10 = &local_48;
  local_40 = param_1;
  FUN_181410000(param_1 + 0x1c,&local_48);
  return param_1;
}



############ FUN_ 1814d1530 size=407 ############

void FUN_1814d1530(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4,
                  longlong *param_5)

{
  int *piVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  int iVar6;
  undefined1 local_a0 [16];
  undefined8 local_90;
  undefined4 local_88;
  undefined4 local_84;
  undefined8 local_80;
  void *local_78;
  void *local_70;
  undefined4 local_64;
  
  local_80 = 0xfffffffffffffffe;
  FUN_1813379d0(param_1,param_3);
  param_1[0x3a] = 0;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  *param_1 = CloudyTutorialButton::vftable;
  param_1[0x16] = CloudyTutorialButton::vftable;
  param_1[0x39] = CloudyTutorialButton::vftable;
  lVar3 = *param_2;
  param_1[0x3c] = lVar3;
  iVar6 = 1;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  lVar3 = *param_5;
  param_1[0x3d] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(lVar3 + -0x10);
    iVar6 = *piVar1;
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  puVar2 = param_1 + 0x3e;
  *puVar2 = 0;
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  param_1[0x41] = 0;
  *(undefined1 *)(param_1 + 0x42) = 1;
  *(undefined1 *)(param_1 + 0x43) = 0;
  *(undefined8 *)((longlong)param_1 + 0x21c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x224) = 0;
  *(undefined8 *)((longlong)param_1 + 0x22c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x234) = 0;
  FUN_1815ef760(param_1 + 0x48,iVar6);
  *(undefined4 *)(param_1 + 0x68) = 0x41000000;
  FUN_18049c4e0(local_a0,
                "<svg width=\"24\" height=\"17\" viewBox=\"0 0 24 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 8L9.5 14.5L21 3\" stroke=\"black\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n"
               );
  puVar5 = (undefined8 *)FUN_180576a30(&local_70,local_a0);
  if (puVar2 != puVar5) {
    local_90 = *puVar5;
    *puVar5 = 0;
    local_88 = *(undefined4 *)(puVar5 + 1);
    local_84 = *(undefined4 *)((longlong)puVar5 + 0xc);
    puVar5[1] = 0;
    local_78 = (void *)*puVar2;
    *puVar2 = local_90;
    *(undefined4 *)(param_1 + 0x3f) = local_88;
    *(undefined4 *)((longlong)param_1 + 0x1fc) = local_84;
                    /* WARNING: Subroutine does not return */
    free(local_78);
  }
  uVar4 = puVar5[3];
  param_1[0x40] = puVar5[2];
  param_1[0x41] = uVar4;
  *(undefined1 *)(param_1 + 0x42) = *(undefined1 *)(puVar5 + 4);
  local_64 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_70);
}



############ FUN_ 1815ef340 size=110 ############

undefined8 * FUN_1815ef340(undefined8 *param_1,undefined8 param_2,undefined1 param_3)

{
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,&DAT_1821d91d6);
  FUN_1814dbc30(param_1,param_2,&local_res8,param_3);
  *param_1 = CloudyModal::vftable;
  param_1[0x16] = CloudyModal::vftable;
  return param_1;
}



############ FUN_ 1816054b0 size=119 ############

undefined8 *
FUN_1816054b0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined1 local_res10 [8];
  undefined8 uVar1;
  
  uVar1 = 0xfffffffffffffffe;
  FUN_18056b680();
  FUN_18049c4e0(local_res10,"separator",param_3,param_4,uVar1);
  FUN_1815fb460(param_1 + 0x19,local_res10);
  *param_1 = CloudyPopupMenuSeparator::vftable;
  param_1[0x16] = CloudyPopupMenuSeparator::vftable;
  param_1[0x19] = CloudyPopupMenuSeparator::vftable;
  return param_1;
}



############ FUN_ 180567b90 size=1641 ############

void FUN_180567b90(longlong param_1)

{
  uint uVar1;
  undefined8 uVar2;
  longlong lVar3;
  void *_Memory;
  longlong *plVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  float fVar10;
  undefined8 uVar11;
  BOOL BVar12;
  undefined4 uVar13;
  int iVar14;
  HGLRC pHVar15;
  uint *_Memory_00;
  undefined8 *puVar16;
  LPCRITICAL_SECTION lpCriticalSection;
  ulonglong uVar17;
  int *piVar18;
  ulonglong uVar19;
  float fVar20;
  longlong local_res18;
  double local_res20;
  undefined8 local_148;
  LPCRITICAL_SECTION local_140;
  undefined **local_138;
  undefined4 local_130;
  LPCRITICAL_SECTION local_128;
  char local_120;
  undefined4 local_118;
  undefined4 uStack_114;
  undefined8 uStack_110;
  undefined8 uStack_108;
  undefined8 uStack_100;
  undefined8 local_f8;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  float local_c8;
  float local_b8;
  
  local_f8 = 0xfffffffffffffffe;
  FUN_18163b8b0(0xfff4fcff);
  if (*(longlong *)(param_1 + 0x270) == 0) {
    return;
  }
  lVar3 = *(longlong *)(param_1 + 0x270);
  if (lVar3 == 0) {
    return;
  }
  pHVar15 = wglGetCurrentContext();
  if (pHVar15 != *(HGLRC *)(lVar3 + 0x28)) {
    return;
  }
  uVar19 = 0;
  if (DAT_18267369c == 0) {
    if ((*(longlong *)(param_1 + 0xe8) != 0) && (*(longlong *)(param_1 + 0x128) != 0)) {
      DAT_18267369c = 2;
      goto LAB_180567caa;
    }
    DAT_18267369c = 1;
    local_138 = &PTR_vftable_18262b570;
    local_130 = 1;
    (**(code **)(*(longlong *)(param_1 + 0x20) + 0x28))((longlong *)(param_1 + 0x20),&local_138);
    _Memory = *(void **)(param_1 + 0x78);
    *(undefined8 *)(param_1 + 0x78) = 0;
    if (_Memory != (void *)0x0) {
      FUN_18056afc0(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (DAT_18267369c == 1) {
    return;
  }
LAB_180567caa:
  if ((*(byte *)(*(longlong *)(param_1 + 0xe0) + 0xa8) >> 1 & 1) != 0) {
    lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0xb4);
    local_140 = lpCriticalSection;
    local_128 = lpCriticalSection;
    BVar12 = TryEnterCriticalSection(lpCriticalSection);
    local_120 = BVar12 != 0;
    if (((((bool)local_120) && (*(char *)(param_1 + 0x81) == '\0')) &&
        (*(longlong *)(param_1 + 0x78) != 0)) && (*(longlong *)(param_1 + 0x2e0) != 0)) {
      fVar20 = (float)*(double *)(param_1 + 0x280);
      glEnable(0xbe2);
      glBlendFunc(0x302);
      local_res20 = (double)((float)*(int *)(*(longlong *)(param_1 + 0xe0) + 0x2c) * fVar20) +
                    DAT_1824c4520;
      glViewport(0,0,(ulonglong)
                     ((double)((float)*(int *)(*(longlong *)(param_1 + 0xe0) + 0x28) * fVar20) +
                     DAT_1824c4520) & 0xffffffff,(ulonglong)local_res20 & 0xffffffff);
      if (*(longlong *)(param_1 + 0x68) == 0) {
        FUN_180569930(param_1);
      }
      (**(code **)(**(longlong **)(param_1 + 0x68) + 0x70))
                ((int)(*(longlong **)(param_1 + 0x68))[1]);
      fVar10 = DAT_1824c3ea4;
      local_c8 = (float)*(int *)(param_1 + 0x84);
      local_b8 = local_c8 / (float)*(int *)(*(longlong *)(param_1 + 0xe0) + 0x28);
      plVar4 = *(longlong **)(param_1 + 0x68);
      uVar13 = (**(code **)(*plVar4 + 0x98))((int)plVar4[1],"translation");
      (**(code **)(*plVar4 + 0xd0))(uVar13);
      plVar4 = *(longlong **)(param_1 + 0x68);
      uVar13 = (**(code **)(*plVar4 + 0x98))((int)plVar4[1],"scale");
      (**(code **)(*plVar4 + 0xd0))(uVar13);
      plVar4 = *(longlong **)(param_1 + 0x68);
      uVar13 = (**(code **)(*plVar4 + 0x98))((int)plVar4[1],"resolution");
      (**(code **)(*plVar4 + 0xd0))(uVar13);
      plVar4 = *(longlong **)(param_1 + 0x68);
      uVar13 = (**(code **)(*plVar4 + 0x98))((int)plVar4[1],"pixel");
      (**(code **)(*plVar4 + 0xd0))(uVar13);
      plVar4 = *(longlong **)(param_1 + 0x68);
      uVar13 = (**(code **)(*plVar4 + 0x98))((int)plVar4[1],&DAT_1824b0634);
      (**(code **)(*plVar4 + 200))(uVar13,0);
      plVar4 = *(longlong **)(param_1 + 0x68);
      uVar13 = (**(code **)(*plVar4 + 0x98))((int)plVar4[1],"isHighDPIDisplay");
      (**(code **)(*plVar4 + 200))(uVar13,fVar10 < fVar20);
      if (*(longlong *)(param_1 + 0x60) != 0) {
        local_148 = *(undefined8 *)(param_1 + 0x68);
        plVar4 = *(longlong **)(param_1 + 0x60);
        if (plVar4 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
          std::_Xbad_function_call();
        }
        (**(code **)(*plVar4 + 0x10))(plVar4,&local_148);
      }
      if (*(char *)(param_1 + 0x80) == '\0') {
        plVar4 = *(longlong **)(param_1 + 0x68);
        puVar5 = *(undefined8 **)(param_1 + 0x78);
        puVar6 = (undefined8 *)puVar5[1];
        for (puVar16 = (undefined8 *)*puVar5; puVar16 != puVar6; puVar16 = puVar16 + 3) {
          uVar8 = *puVar16;
          uVar9 = puVar16[1];
          uVar2 = puVar16[2];
          local_e8 = uVar8;
          uStack_e0 = uVar9;
          local_d8 = uVar2;
          if ((int)plVar4[1] == 0) {
            uVar13 = (**(code **)(*plVar4 + 0x30))();
            *(undefined4 *)(plVar4 + 1) = uVar13;
          }
          uVar11 = local_d8;
          iVar14 = (**(code **)(param_1 + 0x188))((int)plVar4[1],local_d8);
          if (-1 < iVar14) {
            if ((int)plVar4[1] == 0) {
              uVar13 = (**(code **)(*plVar4 + 0x30))();
              *(undefined4 *)(plVar4 + 1) = uVar13;
            }
            local_118 = (**(code **)(param_1 + 0x188))((int)plVar4[1],uVar11);
            puVar7 = (undefined8 *)puVar5[6];
            uStack_110 = uVar8;
            uStack_108 = uVar9;
            uStack_100 = uVar2;
            if ((undefined8 *)puVar5[7] == puVar7) {
              FUN_18056d470(puVar5 + 5,puVar7,&local_118);
            }
            else {
              *puVar7 = CONCAT44(uStack_114,local_118);
              puVar7[1] = uVar8;
              puVar7[2] = uVar9;
              puVar7[3] = uVar2;
              puVar5[6] = puVar5[6] + 0x20;
            }
          }
        }
        FUN_18056a400(puVar5,param_1 + 0xe8);
        puVar16 = (undefined8 *)puVar5[8];
        uVar17 = (ulonglong)
                 ((longlong)(puVar16 + *(int *)((longlong)puVar5 + 0x4c)) + (7 - (longlong)puVar16))
                 >> 3;
        if (puVar16 + *(int *)((longlong)puVar5 + 0x4c) < puVar16) {
          uVar17 = uVar19;
        }
        if (uVar17 != 0) {
          do {
            (**(code **)(*(longlong *)*puVar16 + 0x10))();
            puVar16 = puVar16 + 1;
            uVar19 = uVar19 + 1;
          } while (uVar19 != uVar17);
        }
        LOCK();
        *(undefined1 *)(param_1 + 0x80) = 1;
        UNLOCK();
      }
      piVar18 = (int *)(param_1 + 0x84);
      if (((*piVar18 != (int)*(undefined8 *)(param_1 + 0x94)) ||
          (*(int *)(param_1 + 0x88) != (int)((ulonglong)*(undefined8 *)(param_1 + 0x94) >> 0x20)))
         || ((*(int *)(param_1 + 0x8c) != *(int *)(param_1 + 0x9c) ||
             (*(int *)(param_1 + 0x90) != *(int *)(param_1 + 0xa0))))) {
        *(undefined8 *)(param_1 + 0x94) = *(undefined8 *)piVar18;
        *(undefined8 *)(param_1 + 0x9c) = *(undefined8 *)(param_1 + 0x8c);
        FUN_1805696e0(*(undefined8 *)(param_1 + 0x78),piVar18);
      }
      FUN_1805693e0(*(undefined8 *)(param_1 + 0x78));
      FUN_18049c4e0(&local_res18,"render");
      _Memory_00 = (uint *)(local_res18 + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      (**(code **)(**(longlong **)(param_1 + 0x2e0) + 0x28))();
      LOCK();
      *(undefined1 *)(param_1 + 0x83) = 1;
      UNLOCK();
      lpCriticalSection = local_140;
    }
    if (local_120 != '\0') {
      LeaveCriticalSection(lpCriticalSection);
    }
  }
  return;
}



############ FUN_ 1811e4250 size=130 ############

undefined8 * FUN_1811e4250(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,"AutoCueOverrideOption");
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res8;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = AutoCueOverrideOption::vftable;
  return param_1;
}



############ FUN_ 1811e4f60 size=181 ############

undefined8 *
FUN_1811e4f60(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined8 local_res10;
  longlong local_res18;
  
  FUN_18049c4e0(&local_res10,"MultiSelectedNodesOption",param_3,param_4,0xfffffffffffffffe);
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res10;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = MultiSelectedNodesOption::vftable;
  local_res18 = param_1[1];
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1811efc90(param_2,&local_res18);
  return param_1;
}



############ FUN_ 18057f0f0 size=130 ############

undefined8 * FUN_18057f0f0(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,"draggedNodeOption");
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res8;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = DraggedNodeOption::vftable;
  return param_1;
}



############ FUN_ 18057f1a0 size=130 ############

undefined8 * FUN_18057f1a0(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,"SliderAreaDisabled");
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res8;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = SliderAreaDisabledOption::vftable;
  return param_1;
}



############ FUN_ 1816075b0 size=3281 ############

/* WARNING: Instruction at (ram,0x000181607f90) overlaps instruction at (ram,0x000181607f8f)
    */
/* WARNING: Removing unreachable block (ram,0x000181607d51) */
/* WARNING: Removing unreachable block (ram,0x000181607b04) */
/* WARNING: Removing unreachable block (ram,0x00018160774c) */
/* WARNING: Removing unreachable block (ram,0x000181607779) */
/* WARNING: Removing unreachable block (ram,0x000181607b5f) */
/* WARNING: Removing unreachable block (ram,0x000181607fe1) */
/* WARNING: Removing unreachable block (ram,0x000181607d2f) */

void FUN_1816075b0(undefined8 *param_1,undefined8 param_2)

{
  char cVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  undefined8 *puVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  char *pcVar8;
  word *pwVar9;
  longlong *plVar10;
  undefined8 *puVar12;
  undefined8 *puVar13;
  IMAGE_DOS_HEADER *pIVar14;
  uint uVar15;
  longlong lVar16;
  IMAGE_DOS_HEADER *pIVar17;
  IMAGE_DOS_HEADER *pIVar18;
  uint uVar19;
  longlong *plVar20;
  longlong in_R11;
  uint uVar21;
  bool bVar22;
  uint unaff_retaddr;
  undefined1 auStack_178 [32];
  undefined8 uStack_158;
  undefined8 local_150;
  uint local_148;
  uint local_140;
  undefined8 uStack_138;
  uint local_130;
  undefined1 auStack_12c [44];
  undefined1 local_100 [8];
  ulonglong local_f8;
  undefined8 *local_f0;
  byte local_e8 [8];
  longlong local_e0;
  longlong local_d8;
  byte local_d0 [16];
  byte local_c0 [8];
  byte local_b8 [8];
  undefined8 *local_b0;
  longlong local_a8;
  longlong local_a0;
  undefined4 local_78 [14];
  ulonglong local_40;
  undefined8 *puVar11;
  
  puVar12 = (undefined8 *)local_78;
  plVar10 = (longlong *)auStack_178;
  local_b8[0] = 0xfe;
  local_b8[1] = 0xff;
  local_b8[2] = 0xff;
  local_b8[3] = 0xff;
  local_b8[4] = 0xff;
  local_b8[5] = 0xff;
  local_b8[6] = 0xff;
  local_b8[7] = 0xff;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_178;
  local_f0 = param_1;
  local_b0 = param_1;
  FUN_180585a80(param_1,"sliderAreaShowHideButton");
  *param_1 = CloudySliderAreaShowHideButton::vftable;
  param_1[0x16] = CloudySliderAreaShowHideButton::vftable;
  param_1[0x39] = CloudySliderAreaShowHideButton::vftable;
  param_1[0x3c] = CloudySliderAreaShowHideButton::vftable;
  puVar4 = param_1 + 0x3d;
  auStack_12c._36_8_ = puVar4;
  FUN_18049c4e0(local_100,"SliderAreaDisabled");
  FUN_1811efc20(puVar4,local_100,param_2);
  *puVar4 = SliderAreaDisabledOption::vftable;
  uVar21 = (uint)&stack0x00000000;
  iVar5 = (uVar21 & 0x60ff) * (uVar21 & 0x60ff) + 1;
  uVar6 = (iVar5 >> 4) + (iVar5 >> 1) + iVar5 * 0x24924924 >> 0x1d;
  uVar6 = (int)(uVar6 - 7) >> 0x1f & uVar6;
  uVar15 = ((uVar21 & 0x1cff) * (uVar21 & 0x1cff) + 1) % 7;
  uVar6 = (int)((-uVar6 | uVar6) & (-uVar15 | uVar15)) >> 0x1f;
  auStack_12c._28_4_ = ((int)(-uVar6 | uVar6) >> 0x1f) * -0x2fad ^ 0x217d;
  uVar19 = ((uVar21 & 0x1aff) + 1) * (uVar21 & 0x1aff) + 0x7287 & 0x80000001;
  uVar15 = ((uVar21 & 0x15ff) + 1) * (uVar21 & 0x15ff) + 0x28b7 & 0x80000001;
  uVar6 = (((uVar21 & 0x1ff) + 1) * (uVar21 & 0x1ff) + 7) % 0x51;
  auStack_12c._24_4_ =
       0x14e9U - ((int)((-uVar6 | uVar6) ^ (-uVar15 | uVar15)) >> 0x1f) ^
       ((int)(-uVar19 | uVar19) >> 0x1f) * 0xf03 & 0x10f9U;
  do {
    local_148 = 0xad0191b8;
    local_c0[0] = 0x31;
    local_c0[1] = 0;
    local_c0[2] = 0;
    local_c0[3] = 0;
    local_e0 = 0x181607807;
                    /* WARNING: Call to offcut address within same function */
    func_0x000181607dae();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (local_148 >> 4 | local_148 << 0x1c) & 0xc3c3c3c3 |
          (local_148 << 4 | local_148 >> 0x1c) & 0x3c3c3c3c;
  uVar15 = (uVar6 << 0x10 | uVar6 >> 0x10) + 0x30ac53f1;
  uVar6 = (uVar15 >> 8 ^ uVar15) >> 1 & 0x1f;
  uVar15 = (uVar6 << 8 | uVar6) * 2 ^ uVar15;
  uVar6 = uVar15 >> 2;
  uVar6 = ((uVar6 & 0x33333333) << 2 | (uVar15 << 0x1e | uVar6 & 0xcccccccc) >> 2) ^ 0xcd3d7a5f;
  local_148 = ((uVar6 >> 8 | uVar6 << 0x18) & 0x99669966 | (uVar6 << 8 | uVar6 >> 0x18) & 0x66996699
              ) + 0x455da7e2;
  do {
    local_130 = 0x1d227508;
    local_e8[0] = 0x53;
    local_e8[1] = 0;
    local_e8[2] = 0;
    local_e8[3] = 0;
    local_d8 = 0x1816078d7;
                    /* WARNING: Call to offcut address within same function */
    func_0x00018160784d();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = ((local_130 << 4 | local_130 >> 0x1c) & 0xa5a5a5a5 |
          (local_130 >> 4 | local_130 << 0x1c) & 0x5a5a5a5a) ^ 0xa3a6aa47;
  uVar6 = (uVar6 >> 10 | uVar6 << 0x16) + 0x96057813;
  uVar15 = ((uVar6 >> 8 | uVar6 * 0x1000000) & 0x97689768 |
           (uVar6 * 0x100 | uVar6 >> 0x18) & 0x68976897) + 0x68151435;
  uVar19 = uVar15 * 4 | uVar15 >> 0x1e;
  uVar6 = ((uVar15 & 0x3fffffff) >> 8 ^ uVar19) >> 8 & 0x1ff;
  uVar6 = uVar19 ^ (uVar6 << 10 | uVar6) << 8;
  lVar16 = (int)local_148 + local_e0;
  lVar7 = ((ulonglong)((uVar6 >> 4 | uVar19 << 0x1c) & 0x1e1e1e1e) |
          (longlong)(int)(uVar6 << 4 | (uVar15 & 0x3fffffff) >> 0x1a) & 0xffffffffe1e1e1e1U) +
          local_d8;
  local_148 = 0;
  local_130 = 0;
  uVar2 = (ulonglong)((uint)(*(ulonglong *)(lVar7 + 4) >> 0xe) & 0x60054808) +
          *(longlong *)(lVar16 + 4);
  uVar2 = (uVar2 * 0x1000000 | uVar2 >> 0x28) ^ 0xfdef5956ee9f7918;
  uVar3 = uVar2 >> 0x32 | uVar2 << 0xe;
  uVar2 = (uVar3 >> 4 | (uVar2 >> 0x32) << 0x3c) & 0x9696969696969696 |
          (uVar3 << 4 | (uVar2 & 0x3ffffffffffff) >> 0x2e) & 0x6969696969696969;
  uVar2 = (uVar2 >> 2 | uVar2 << 0x3e) ^ 0xacc89d75c2207ee5;
  uVar2 = ~((uVar2 << 0x2c | uVar2 >> 0x14) + 0x615ad6969cec7ffd);
  *(ulonglong *)(lVar16 + 4) = uVar2;
  plVar20 = (longlong *)(lVar7 + 4);
  *plVar20 = *plVar20 + (uVar2 >> 0x14 & 0x86812006);
  auStack_12c._20_4_ = (uint)((ulonglong)*(undefined8 *)(lVar16 + 4) >> 0x20) & 0x7fffffff;
  local_140 = (uint)(*(ulonglong *)(lVar16 + 4) >> 0x1a) ^ 0xb7521656;
  local_f8 = *(ulonglong *)(lVar16 + 4) ^ 0x14f7f75a5a21fc77;
  *(undefined1 *)((longlong)param_1 + 0x1c1) = 1;
  lVar7 = param_1[0x3e];
  local_a8 = lVar7;
  FUN_1804951c0(lVar7);
  local_a0 = lVar7;
  FUN_1811f8160(param_2,lVar7,param_1 + 0x3c);
  FUN_1804951e0(lVar7 + -0x10);
  FUN_181534680(param_1);
  do {
                    /* WARNING: Call to offcut address within same function */
    func_0x00018160803b(0xe200);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    FUN_1816065cf(0xe200);
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  pIVar17 = &IMAGE_DOS_HEADER_180000000;
  puVar4 = (undefined8 *)0x180018fd0;
  uStack_138 = 0xde3798a50bbffb9b;
  uVar6 = 0xdb2046e7;
  uStack_158 = 0x107c449ec;
  local_150._0_4_ = 0x8001ebdf;
  local_150 = 0x18001ebdf;
  pIVar18 = pIVar17;
LAB_181607d00:
  plVar20 = (longlong *)0x2621fc0;
  uVar15 = (uint)puVar4;
  if ((uint)local_150 == (uVar15 ^ 0x4413)) {
    do {
      uVar2 = 0;
                    /* WARNING: Call to offcut address within same function */
      *(undefined8 *)((longlong)plVar10 + -8) = 0x181607f8a;
      func_0x000181607dae();
      if ((uVar2 & 0x41) != 0) {
        puVar13 = (undefined8 *)((longlong)plVar10 + -8);
        puVar11 = (undefined8 *)((longlong)plVar10 + -8);
        *(undefined8 **)((longlong)plVar10 + -8) = puVar12;
        cVar1 = '\x0f';
        do {
          puVar12 = puVar12 + -1;
          puVar13 = puVar13 + -1;
          *puVar13 = *puVar12;
          cVar1 = cVar1 + -1;
        } while ('\0' < cVar1);
        *(undefined1 **)((longlong)plVar10 + -0x88) = (undefined1 *)((longlong)plVar10 + -8);
        plVar10 = (longlong *)((longlong)plVar10 + -0x8bd5);
        puVar12 = puVar11;
      }
      plVar10[-1] = 0x181607fae;
      FUN_1816084a1();
      uVar15 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar15 != 0);
    *(uint *)(plVar10 + 10) = uVar6;
    plVar10[-1] = (longlong)puVar4;
    plVar10[-2] = in_R11;
                    /* WARNING: Call to offcut address within same function */
    plVar10[-3] = 0x181607ffb;
    func_0x000181608019();
    lVar7 = plVar10[4];
    plVar10[4] = lVar7 + 0x2ea;
    plVar10[3] = lVar7 + 0x3fc735;
    plVar10[2] = lVar7 + 0x3fd126;
    plVar10[1] = lVar7 + 0x3fd126;
    *plVar10 = lVar7 + 0x3fd126;
    plVar10[-1] = lVar7 + 0x3fd126;
    plVar10[-2] = lVar7 + -0x3c360;
    plVar10[-3] = lVar7 + 0x3fd126;
    plVar10[-4] = lVar7 + -0x260af;
    plVar10[-5] = lVar7 + -0x41e30;
    plVar10[-6] = lVar7 + -0x4e152;
    plVar10[-7] = lVar7 + 0x3fc735;
    plVar10[-8] = lVar7 + -0x77ebf;
    plVar10[-9] = lVar7 + -0x560e0;
    plVar10[-10] = lVar7 + -0xaf5b;
    plVar10[-0xb] = lVar7 + -0x67c77;
                    /* WARNING: Could not recover jumptable at 0x0001816082c9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)(lVar7 + 0xe041))();
    return;
  }
  puVar13 = puVar4;
  if ((pIVar17 != (IMAGE_DOS_HEADER *)0x0) &&
     (uVar2._0_1_ = pIVar17->e_magic[0], uVar2._1_1_ = pIVar17->e_magic[1],
     uVar2._2_2_ = pIVar17->e_cblp, uVar2._4_2_ = pIVar17->e_cp, uVar2._6_2_ = pIVar17->e_crlc,
     -1 < (longlong)uVar2)) {
    local_d0[0] = 0xc0;
    local_d0[1] = 0x1f;
    local_d0[2] = 0x62;
    local_d0[3] = 2;
    local_d0[4] = 0;
    local_d0[5] = 0;
    local_d0[6] = 0;
    local_d0[7] = 0;
    pIVar14 = &IMAGE_DOS_HEADER_180000000;
    do {
      if (puVar4 < IMAGE_DOS_HEADER_180000000.e_magic + uVar2 + 8) {
        if (-1 < (longlong)uVar2) {
          pcVar8 = (char *)(uVar2 + 0x180000000);
          plVar20 = (longlong *)((longlong)puVar4 + 4);
          if (pcVar8 < plVar20) {
            local_78[0] = *(undefined4 *)puVar4;
            in_R11 = (longlong)puVar12 + (0x180000000 - (longlong)puVar4);
            puVar13 = puVar12;
            pIVar18 = pIVar17;
            goto LAB_181607df0;
          }
        }
        break;
      }
      pwVar9 = &pIVar17->e_cparhdr;
      uVar2._0_2_ = pIVar17->e_cparhdr;
      uVar2._2_2_ = pIVar17->e_minalloc;
      uVar2._4_2_ = pIVar17->e_maxalloc;
      uVar2._6_2_ = pIVar17->e_ss;
      pIVar17 = (IMAGE_DOS_HEADER *)pwVar9;
    } while (-1 < (longlong)uVar2);
  }
LAB_181607e13:
  pIVar14 = (IMAGE_DOS_HEADER *)auStack_12c;
  pcVar8 = (char *)((longlong)puVar13 + 0x3c3c67cc);
  uVar2 = 0xe200;
  iVar5 = FUN_181606013();
  do {
    if ((uVar2 & 0xc300) == 0) break;
  } while ((uVar2 & 0xc300) == 0);
  do {
    if ((uVar2 & 0xc3) == 0) {
      if ((uVar2 & 0xc3) == 0) goto LAB_181607e57;
      goto LAB_181607e4d;
    }
    if (-1 < (char)uVar2) break;
    do {
      iVar5 = *(int *)(pcVar8 + -0x3c3c67cc);
      if ((uVar2 & 0xc300) == 0) {
        return;
      }
      do {
        if ((uVar2 & 0xc3) != 0) goto LAB_181607e7b;
      } while ((uVar2 & 0xc3) != 0);
LAB_181607e4d:
      pIVar14->e_magic[0] = (char)iVar5;
      pIVar14->e_magic[1] = (char)((uint)iVar5 >> 8);
      pIVar14->e_cblp = (short)((uint)iVar5 >> 0x10);
      bVar22 = (uVar2 & 0xc300) == 0;
      if (!bVar22) {
LAB_181607e7b:
        uVar2 = (ulonglong)unaff_retaddr;
        goto LAB_181607e7f;
      }
      if (bVar22) goto LAB_181607e82;
LAB_181607e57:
    } while ((uVar2 & 0xc3) == 0);
    if ((char)uVar2 < '\0') goto LAB_181607e7f;
  } while( true );
  while (pcVar8 = pIVar14->e_magic + uVar2, pcVar8 < plVar20) {
LAB_181607df0:
    *(longlong *)(in_R11 + uVar2) = *(longlong *)pcVar8 - (longlong)pIVar14;
    pIVar18 = (IMAGE_DOS_HEADER *)&pIVar18->e_cparhdr;
    uVar2 = *(ulonglong *)pIVar18;
    if ((longlong)uVar2 < 0) break;
  }
  goto LAB_181607e13;
LAB_181607e7f:
  iVar5 = (int)uVar2 + 1;
LAB_181607e82:
  uVar19 = iVar5 * (int)uVar2 & 0x80000001;
  if ((int)uVar19 < 0) {
    uVar19 = (uVar19 - 1 | 0xfffffffe) + 1;
  }
  if (uVar19 == 0) goto code_r0x000181607e9b;
  goto LAB_181607e13;
code_r0x000181607e9b:
  auStack_12c._0_4_ =
       ((uint)(auStack_12c._0_4_ * 0x5bd1e995) >> 0x18 ^ auStack_12c._0_4_ * 0x5bd1e995) *
       0x5bd1e995;
  uVar6 = uVar6 * 0x5bd1e995 ^ auStack_12c._0_4_;
  uVar19 = uVar15 & 0xff;
  iVar5 = (uVar19 + 2) * (uVar19 + 1) * uVar19;
  if ((((iVar5 >> 1) - (iVar5 >> 3)) + iVar5 * 0x55555555 >> 0x1e & 0xbU) == 0) {
    uVar19 = uVar6 & 0x3f | 0x18;
    uVar15 = uVar15 & 0xf | 6;
    uVar15 = uVar19 * uVar19 * 0x7439 ^ uVar15 * uVar15 * 0x31ff;
  }
  else {
    uVar15 = 9;
  }
  puVar4 = (undefined8 *)
           ((longlong)puVar4 +
           (0x1c - ((longlong)(((int)(-uVar15 | uVar15) >> 0x1f) * -0x313d) ^ 0x3125U)));
  goto LAB_181607d00;
}



############ FUN_ 180585a80 size=158 ############

undefined8 *
FUN_180585a80(undefined8 *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res10 [3];
  
  local_res10[0] = param_2;
  FUN_18049c4e0(local_res10,"sliderAreaShowHideButton",param_3,param_4,0xfffffffffffffffe);
  FUN_1813379d0(param_1,local_res10);
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x3a] = 0;
  *param_1 = Styled<juce::Button>::vftable;
  param_1[0x16] = Styled<juce::Button>::vftable;
  param_1[0x39] = Styled<juce::Button>::vftable;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  return param_1;
}



############ FUN_ 181182b70 size=1891 ############

/* WARNING: Instruction at (ram,0x000181182eab) overlaps instruction at (ram,0x000181182ea8)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x000181182c3e) */
/* WARNING: Removing unreachable block (ram,0x000181182c4d) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_181182b70(undefined8 *param_1,undefined8 param_2,undefined8 *param_3)

{
  int iVar1;
  uint *puVar2;
  ulonglong uVar3;
  uint uVar4;
  undefined4 *puVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  longlong *plVar8;
  uint uVar9;
  longlong lVar10;
  uint uVar11;
  uint uVar12;
  bool bVar13;
  int unaff_retaddr;
  undefined1 auStack_1a8 [32];
  undefined4 local_188;
  undefined *local_180;
  uint local_178 [2];
  ulonglong local_170;
  uint local_164;
  undefined8 local_160;
  uint local_158;
  undefined4 local_148;
  uint local_144;
  undefined8 local_140;
  uint local_138;
  uint local_134;
  undefined *local_130;
  undefined8 *local_128;
  undefined4 local_120;
  undefined4 local_11c;
  longlong local_110;
  longlong local_108;
  undefined8 local_e8;
  undefined8 *local_e0;
  undefined8 local_c0;
  undefined8 *local_b8;
  undefined8 local_b0;
  undefined8 *local_a8;
  ulonglong local_48;
  
  local_c0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1a8;
  *param_1 = Preset::vftable;
  local_128 = param_1;
  local_e8 = param_2;
  local_e0 = param_3;
  local_b8 = param_1;
  local_b0 = param_2;
  local_a8 = param_3;
  FUN_1804875e0(param_1 + 1);
  param_1[2] = *param_3;
  FUN_1804951c0();
  FUN_18049c4e0(param_1 + 3,&DAT_1821d8e43);
  param_1[4] = &DAT_1821dbf98;
  param_1[6] = 0;
  param_1[7] = 0;
  uVar9 = (uint)&stack0x00000000;
  uVar12 = (((uVar9 & 0x35ff) + 1) * (uVar9 & 0x35ff) + 7) % 0x51;
  uVar4 = ((uVar9 & 0x1cff) * (uVar9 & 0x1cff) * 0x10 + 4) % 0x13;
  uVar11 = (((uVar9 & 0x33ff) + 1) * (uVar9 & 0x33ff) + 7) % 0x51;
  local_138 = ((int)(-uVar11 | uVar11) >> 0x1f) * -0x1d2f ^
              (((int)(-uVar12 | uVar12) >> 0x1f) - ((int)(-uVar4 | uVar4) >> 0x1f) | 0x11dfU);
  uVar12 = ((uVar9 & 0x11ff) * (uVar9 & 0x11ff) * 0x10 + 4) % 0x13;
  iVar1 = (uVar9 & 0x28ff) * (uVar9 & 0x28ff) + 1;
  uVar4 = (iVar1 >> 4) + (iVar1 >> 1) + iVar1 * 0x24924924 >> 0x1d;
  uVar4 = (int)(uVar4 - 7) >> 0x1f & uVar4;
  uVar9 = ((uVar9 & 0x4ff) * (uVar9 & 0x4ff) * 0x10 + 4) % 0x13;
  local_134 = 0xf9c6U - ((int)((-uVar4 | uVar4) ^ (-uVar12 | uVar12)) >> 0x1f) ^
              (int)(-uVar9 | uVar9) >> 0x1f & 0xf1d6U;
  local_140 = 0;
  local_160 = 0x1e2dfd8;
  local_170 = 0x7ff0;
  local_180 = &DAT_181e2dfd8;
  local_130 = &DAT_181e35fc8;
  bVar13 = false;
  do {
    uVar3 = 0;
    uVar4 = FUN_181181c95();
    if ((bVar13) && ((uVar3 & 0x40) != 0)) {
      return CONCAT31((int3)((uVar4 | _DAT_d04951f0) >> 8),(char)(uVar4 | _DAT_d04951f0) + '$') +
             -0x7ee7d162;
    }
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
    bVar13 = uVar4 == 0;
  } while (!bVar13);
  local_160 = 0x6b819cc55714b957;
  do {
    plVar8 = &local_110;
    puVar5 = &local_120;
    puVar2 = local_178;
    FUN_181181993();
    *puVar2 = 0x635c49cb;
    *puVar5 = 0x16;
    *plVar8 = 0x181182f27;
    FUN_181184487();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (local_178[0] << 0x10 | local_178[0] >> 0x10) & 0xc63039cf |
          (local_178[0] >> 0x10 | local_178[0] << 0x10) & 0x39cfc630;
  uVar9 = uVar4 >> 0x1b | uVar4 << 5;
  uVar4 = ((uVar4 & 0x7ffffff) >> 0xb | uVar9 << 0x10) & 0xfe63019c |
          (uVar9 << 0x10 | (uVar4 & 0x7ffffff) >> 0xb) & 0x19cfe63;
  uVar9 = (uVar4 >> 0x10 | uVar4 << 0x10) & 0xee871178 |
          (uVar4 << 0x10 | uVar4 >> 0x10) & 0x1178ee87;
  uVar4 = (uVar9 >> 10 ^ uVar9) >> 1 & 0x1ff;
  uVar9 = uVar9 ^ ((uVar4 << 10 | uVar4) ^ 0x32f1eb42) * 2;
  uVar9 = (uVar9 << 0x10 | uVar9 >> 0x10) & 0xb3b84c47 |
          (uVar9 >> 0x10 | uVar9 << 0x10) & 0x4c47b3b8;
  uVar4 = (uVar9 >> 0xc ^ uVar9) >> 0xb & 7;
  local_178[0] = ((uVar4 << 0xc | uVar4) << 0xb ^ uVar9) + 0xbaa9660;
  do {
    local_158 = 0x7e99844b;
    local_11c = 0x22;
    local_108 = 0x181183027;
    FUN_1811816a1();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  uVar4 = (local_158 >> 10 ^ local_158) >> 0xb & 0x3ff;
  local_158 = (uVar4 << 10 | uVar4) << 0xb ^ local_158;
  uVar4 = (local_158 >> 0x10 | local_158 << 0x10) + 0x8eac8a49;
  uVar4 = ((uVar4 * 4 | uVar4 >> 0x1e) & 0x99999999 | (uVar4 >> 2 | uVar4 * 0x40000000) & 0x66666666
          ) ^ 0xea2cf9ab;
  uVar4 = (uVar4 << 4 | uVar4 >> 0x1c) & 0xc3c3c3c3 | (uVar4 >> 4 | uVar4 << 0x1c) & 0x3c3c3c3c;
  uVar9 = uVar4 << 6 | uVar4 >> 0x1a;
  local_110 = (int)local_178[0] + local_110;
  lVar10 = (((longlong)(int)(uVar9 >> 2 | (uVar4 >> 0x1a) << 0x1e) & 0xffffffffccccccccU |
            (ulonglong)((uVar9 & 0xccccccc) << 2 | (uVar4 & 0x3ffffff) >> 0x18)) ^ 0x70d47d90) +
           local_108;
  local_178[0] = 0;
  local_158 = 0;
  *(longlong *)(local_110 + 4) =
       *(longlong *)(local_110 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(lVar10 + 4) >> 3) & 0x3c80b01);
  uVar3 = *(ulonglong *)(local_110 + 4);
  uVar3 = (uVar3 >> 0x10 | uVar3 << 0x30) & 0xa3de5c21a3de5c21 |
          (uVar3 << 0x10 | uVar3 >> 0x30) & 0x5c21a3de5c21a3de;
  uVar6 = (uVar3 << 4 | uVar3 >> 0x3c) & 0xb4b4b4b4b4b4b4b4 |
          (uVar3 >> 4 | uVar3 << 0x3c) & 0x4b4b4b4b4b4b4b4b;
  uVar7 = uVar6 << 0x29 | uVar6 >> 0x17;
  uVar3 = (ulonglong)(((uint)((uVar7 >> 9) >> 0x10) ^ (uint)(uVar7 >> 0x10)) & 1);
  uVar7 = uVar7 ^ (uVar3 << 9 | uVar3) << 0x10;
  uVar6 = ~((uVar7 << 8 | (uVar6 & 0x7fffff) >> 0xf) & 0xf807f807f807f807 |
           (uVar7 >> 8 | (uVar6 >> 0x17) << 0x38) & 0x7f807f807f807f8);
  uVar3 = (ulonglong)((uint)((uVar6 >> 0xc ^ uVar6) >> 0xf) & 0x1f);
  uVar3 = uVar6 ^ (uVar3 << 0xc | uVar3) << 0xf;
  uVar3 = (uVar3 >> 4 | uVar6 << 0x3c) & 0x9696969696969696 |
          (uVar3 << 4 | uVar6 >> 0x3c) & 0x6969696969696969;
  uVar3 = uVar3 >> 0x2c | uVar3 << 0x14;
  *(ulonglong *)(local_110 + 4) = uVar3;
  plVar8 = (longlong *)(lVar10 + 4);
  *plVar8 = *plVar8 + (ulonglong)((uint)(uVar3 >> 2) & 0x21020402);
  local_144 = (uint)(*(ulonglong *)(local_110 + 4) >> 0x1a) & 0x7fffffff;
  local_164 = (uint)(*(ulonglong *)(local_110 + 4) >> 0x1c) ^ 0x6453b946;
  local_170 = *(ulonglong *)(local_110 + 4) ^ 0x4440315d6977f5f8;
  local_188 = 0;
  do {
    local_148 = 0x1585056d;
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
                    /* WARNING: Call to offcut address within same function */
  func_0x0001811832f5();
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}



############ FUN_ 181601800 size=527 ############

undefined8 * FUN_181601800(undefined8 *param_1,char param_2)

{
  uint uVar1;
  bool bVar2;
  undefined3 local_res18;
  undefined3 local_res20;
  undefined4 local_38;
  undefined4 local_34;
  undefined3 local_30;
  undefined1 *local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  local_28 = &DAT_1821dbf98;
  FUN_1812e2370(param_1,&local_28,0);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  param_1[0x65] = 0;
  *(undefined1 *)(param_1 + 0x66) = 0;
  *param_1 = CloudyTextEditor::vftable;
  param_1[0x16] = CloudyTextEditor::vftable;
  param_1[0x17] = CloudyTextEditor::vftable;
  param_1[100] = CloudyTextEditor::vftable;
  FUN_18049c4e0(param_1 + 0x67,"");
  *(undefined1 *)(param_1 + 0x68) = 1;
  FUN_18134a800(param_1,0x1000200,DAT_1826742ec);
  FUN_18134a800(param_1,0x1000205,DAT_1826742ec);
  if (param_2 == '\0') {
    local_res20 = (undefined3)DAT_18262bb68;
    local_res18 = local_res20;
  }
  else {
    local_res18 = (undefined3)DAT_18262bb70;
  }
  FUN_18134a800(param_1,0x1000201,CONCAT13(0xe6,local_res18));
  if (param_2 == '\0') {
    local_34 = CONCAT13(0x4c,(int3)DAT_18262bb68);
    local_38 = local_34;
  }
  else {
    local_38 = CONCAT13(0x33,(int3)DAT_18262bb70);
  }
  FUN_18134a800(param_1,0x1000202,local_38);
  FUN_18134a800(param_1,0x1000206,DAT_1826742ec);
  if (param_2 == '\0') {
    local_30 = CONCAT12((char)(int)((float)(DAT_18262bb68 >> 0x10 & 0xff) * DAT_1824c3e08),
                        CONCAT11((char)(int)((float)(DAT_18262bb68 >> 8 & 0xff) * DAT_1824c3e08),
                                 (char)(int)((float)(DAT_18262bb68 & 0xff) * DAT_1824c3e08)));
  }
  else {
    local_30 = (undefined3)DAT_18262bb70;
  }
  FUN_18134a800(param_1,0x1000204,local_30);
  return param_1;
}



############ FUN_ 1805765c0 size=33 ############

undefined8 FUN_1805765c0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"NoTooltipOption");
  return param_2;
}



############ FUN_ 1814ceea0 size=393 ############

void FUN_1814ceea0(undefined8 *param_1,longlong param_2)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined1 local_res10 [8];
  void *local_res18;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined8 local_a8;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined8 local_98;
  void *local_50;
  undefined4 local_44;
  
  local_98 = 0xfffffffffffffffe;
  puVar3 = param_1;
  FUN_18056b680();
  *puVar3 = CloudyTutorialRequirement::vftable;
  puVar3[0x16] = CloudyTutorialRequirement::vftable;
  puVar3[0x19] = param_2;
  local_b8 = DAT_18235df78;
  local_b0 = DAT_18235df80;
  FUN_181408750(puVar3 + 0x1a,&local_b8);
  FUN_1814cd550(param_1 + 0x4e);
  param_1[0x76] = 0;
  param_1[0x77] = 0;
  puVar3 = param_1 + 0x78;
  *puVar3 = 0;
  param_1[0x79] = 0;
  param_1[0x7a] = 0;
  param_1[0x7b] = 0;
  *(undefined1 *)(param_1 + 0x7c) = 1;
  FUN_1814cdcf0(param_1 + 0x4e,param_2 + 0x18);
  *(undefined4 *)(param_1 + 0x6d) = DAT_18262bb5c;
  (**(code **)(param_1[0x4e] + 0x58))(param_1 + 0x4e,1);
  FUN_181343cc0(param_1,param_1 + 0x4e,0xffffffff);
  FUN_18049c4e0(local_res10,
                "<svg width=\"24\" height=\"17\" viewBox=\"0 0 24 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 8L9.5 14.5L21 3\" stroke=\"black\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n"
               );
  puVar2 = (undefined8 *)FUN_180576a30(&local_50,local_res10);
  if (puVar3 != puVar2) {
    local_a8 = *puVar2;
    *puVar2 = 0;
    local_a0 = *(undefined4 *)(puVar2 + 1);
    local_9c = *(undefined4 *)((longlong)puVar2 + 0xc);
    puVar2[1] = 0;
    local_res18 = (void *)*puVar3;
    *puVar3 = local_a8;
    *(undefined4 *)(param_1 + 0x79) = local_a0;
    *(undefined4 *)((longlong)param_1 + 0x3cc) = local_9c;
                    /* WARNING: Subroutine does not return */
    free(local_res18);
  }
  uVar1 = puVar2[3];
  param_1[0x7a] = puVar2[2];
  param_1[0x7b] = uVar1;
  *(undefined1 *)(param_1 + 0x7c) = *(undefined1 *)(puVar2 + 4);
  local_44 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_50);
}



############ FUN_ 180590790 size=559 ############

void FUN_180590790(longlong *param_1,float param_2)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong lVar4;
  uint *puVar5;
  undefined1 *_Dst;
  float fVar6;
  longlong local_res8;
  undefined4 local_res10;
  longlong *local_res18;
  longlong local_res20;
  longlong *local_58;
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  local_res10 = 0;
  param_2 = param_2 / DAT_1824c44dc;
  fVar6 = expf(DAT_1824c4704);
  fVar6 = logf(fVar6 * param_2 + (DAT_1824c3ea4 - param_2));
  fVar6 = (float)((uint)(fVar6 * DAT_1824c43e0) ^ DAT_1824c4f30);
  if (fVar6 < DAT_1824c3cb8) {
    fVar6 = 0.0;
  }
  FUN_1812339a0(&local_res20,(double)fVar6,1,0);
  FUN_18049c4e0(&local_res8,&DAT_18221db84);
  local_58 = &local_res8;
  local_res18 = (longlong *)&DAT_1821dbf98;
  local_res10 = 2;
  lVar2 = -1;
  do {
    lVar4 = lVar2;
    lVar2 = lVar4 + 1;
  } while ((&DAT_1821dbf99)[lVar4] != '\0');
  FUN_1812342b0(&local_res18,lVar4 + 0xe);
  _Dst = (undefined1 *)((longlong)(int)(lVar4 + 1) + (longlong)local_res18);
  memcpy(_Dst,"max reduction",0xd);
  _Dst[0xd] = 0;
  uVar3 = FUN_181232d30(&local_res18,&local_res8);
  uVar3 = FUN_181232d30(uVar3,&local_res20);
  uVar3 = FUN_181232d30(uVar3,&local_res8);
  FUN_181232e20(uVar3,&DAT_1824bfeb8,&DAT_1824bfeba);
  puVar5 = (uint *)(local_res8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_res20 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  local_58 = local_res18;
  if ((*(uint *)(local_res18 + -2) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -2) = (int)local_res18[-2] + 1;
    UNLOCK();
  }
  FUN_1815d8480(*(undefined8 *)(*param_1 + 0x140),&local_58);
  puVar5 = (uint *)(local_res18 + -2);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return;
}



############ FUN_ 181a0ef80 size=977 ############

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

void FUN_181a0ef80(undefined8 *param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  int iVar2;
  undefined1 auStack_3a8 [48];
  undefined1 local_378 [4];
  undefined4 local_374;
  undefined8 local_350;
  undefined1 local_348 [16];
  undefined8 local_338;
  undefined8 *local_318;
  undefined4 local_2fc;
  uint local_2f8;
  undefined1 local_2e8 [8];
  undefined1 local_2e0 [128];
  undefined8 *local_260;
  undefined1 *local_240;
  undefined8 local_1d0;
  undefined8 uStack_1c8;
  undefined8 local_1c0;
  undefined8 local_1b8;
  undefined8 *local_1b0;
  ulonglong local_50;
  
  local_1b8 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_3a8;
  local_318 = &local_1d0;
  local_240 = local_2e8;
  local_1d0 = 0;
  uStack_1c8 = 0;
  local_1c0 = 0;
  local_350 = param_2;
  local_338 = param_3;
  local_260 = param_1;
  local_1b0 = param_1;
  FUN_18049c4e0(local_2e8,"qualityGrid");
  FUN_18049c4e0(local_2e0,"qualityGrid");
  FUN_181601a20(param_1,local_2e0,local_2e8,&local_1d0);
  *param_1 = QualityGrid::vftable;
  param_1[0x16] = QualityGrid::vftable;
  param_1[0x39] = QualityGrid::vftable;
  param_1[0x3c] = QualityGrid::vftable;
  param_1[0x40] = QualityGrid::vftable;
  param_1[0x54] = QualityGrid::vftable;
  *(undefined4 *)(param_1 + 0x55) = 0x1010101;
  param_1[0x56] = param_2;
  local_318 = param_1 + 0x57;
  FUN_180489700(local_318,local_348);
  local_318 = param_1 + 0x59;
  FUN_1804898a0(local_318,local_378);
  local_2fc = 0xec0;
  uVar1 = (uint)&stack0x00000000 & 0x5eff;
  iVar2 = uVar1 * uVar1 + 1;
  uVar1 = (iVar2 >> 4) + (iVar2 >> 1) + iVar2 * 0x24924924 >> 0x1d;
  uVar1 = (int)(uVar1 - 7) >> 0x1f & uVar1;
  local_2f8 = ((int)(-uVar1 | uVar1) >> 0x1f) * -0x6a39 ^ 0x6ed9;
  local_374 = 0x811c9e29;
  FUN_181a101b5();
  return;
}



############ FUN_ 180592d90 size=534 ############

undefined8 * FUN_180592d90(undefined8 *param_1,undefined8 param_2,undefined8 param_3,char *param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  char cVar7;
  uint *puVar8;
  uint *puVar9;
  char *pcVar10;
  longlong local_res20;
  longlong local_48;
  longlong local_40;
  longlong local_38 [2];
  
  local_38[1] = 0xfffffffffffffffe;
  *param_1 = param_2;
  *(undefined4 *)(param_1 + 1) = 0;
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = &DAT_1821dbf98;
  pcVar10 = 
  "attribute vec2 position;attribute vec4 colour;uniform vec4 screenBounds;varying  vec4 frontColour;varying  vec2 pixelPos;void main(){frontColour = colour;vec2 adjustedPos = position - screenBounds.xy;pixelPos = adjustedPos;vec2 scaledPos = adjustedPos / screenBounds.zw;gl_Position = vec4 (scaledPos.x - 1.0, 1.0 - scaledPos.y, 0, 1.0);}"
  ;
  if (param_4 != (char *)0x0) {
    pcVar10 = param_4;
  }
  FUN_18049c4e0(&local_40,pcVar10);
  local_38[0] = local_40;
  puVar9 = (uint *)(local_40 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    *puVar9 = *puVar9 + 1;
    UNLOCK();
  }
  bVar6 = false;
  bVar5 = false;
  cVar7 = FUN_18163a160(param_1,local_38,0x8b31);
  if (cVar7 != '\0') {
    FUN_18049c4e0(&local_48,param_3);
    local_res20 = local_48;
    if ((*(uint *)(local_48 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
      UNLOCK();
    }
    bVar6 = true;
    bVar5 = true;
    cVar7 = FUN_18163a160(param_1,&local_res20,0x8b30);
    if ((cVar7 != '\0') && (cVar7 = FUN_18163bb70(param_1), cVar7 != '\0')) {
      bVar4 = true;
      goto LAB_180592e90;
    }
  }
  bVar4 = false;
LAB_180592e90:
  if ((bVar5) && (puVar8 = (uint *)(local_res20 + -0x10), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((bVar6) && (puVar8 = (uint *)(local_48 + -0x10), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar2 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  if (!bVar4) {
    if ((*(uint *)(param_1[2] + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(param_1[2] + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar3 = param_1[3];
    param_1[3] = param_1[2];
    UNLOCK();
    puVar9 = (uint *)(lVar3 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  return param_1;
}



############ FUN_ 180598770 size=308 ############

undefined8 FUN_180598770(undefined8 param_1,undefined8 param_2)

{
  uint *puVar1;
  uint uVar2;
  longlong local_res8 [2];
  longlong local_res18;
  longlong local_res20;
  longlong local_38 [2];
  
  local_38[1] = 0xfffffffffffffffe;
  FUN_18049c4e0(local_res8,
                "attribute  vec2 position;uniform  vec2 screenSize;uniform  float textureBounds[4];uniform  vec2 vOffsetAndScale;varying  vec2 texturePos;void main(){ vec2 scaled = position / (0.5 * screenSize.xy);gl_Position = vec4 (scaled.x - 1.0, 1.0 - scaled.y, 0, 1.0);texturePos = (position - vec2 (textureBounds[0], textureBounds[1])) / vec2 (textureBounds[2], textureBounds[3]);texturePos = vec2 (texturePos.x, vOffsetAndScale.x + vOffsetAndScale.y * texturePos.y);}"
               );
  local_res18 = local_res8[0];
  puVar1 = (uint *)(local_res8[0] + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  FUN_18163a160(param_2,&local_res18,0x8b31);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  FUN_18049c4e0(&local_res20,
                "uniform sampler2D imageTexture;varying  vec2 texturePos;void main(){gl_FragColor = texture2D (imageTexture, texturePos);}"
               );
  local_38[0] = local_res20;
  puVar1 = (uint *)(local_res20 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  FUN_18163a160(param_2,local_38,0x8b30);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  FUN_18163bb70(param_2);
  return param_1;
}



############ FUN_ 18114c790 size=183 ############

undefined8 * FUN_18114c790(longlong param_1,undefined8 *param_2,undefined4 param_3)

{
  uint uVar1;
  uint *_Memory;
  undefined4 local_res8 [2];
  undefined8 *local_res10;
  longlong local_res18;
  undefined *local_res20;
  undefined8 local_20;
  undefined8 local_18;
  longlong *local_10;
  
  local_18 = 0xfffffffffffffffe;
  local_res20 = &DAT_1821d9554;
  local_20 = *(undefined8 *)(param_1 + 0x10);
  local_res8[0] = param_3;
  local_res10 = param_2;
  FUN_18049c4e0(&local_res18,&DAT_1821d8e8f);
  local_10 = &local_res18;
  *param_2 = &DAT_1821dbf98;
  FUN_18048eab0(param_2,&local_res18,&local_20,&local_res20,local_res8);
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 18114e8b0 size=616 ############

/* WARNING: Type propagation algorithm not settling */

void FUN_18114e8b0(longlong *param_1,longlong *param_2)

{
  uint *puVar1;
  uint uVar2;
  undefined1 auStack_298 [176];
  longlong local_1e8 [2];
  longlong local_1d8;
  undefined1 local_1d0 [16];
  undefined8 local_1c0;
  undefined8 local_1b8;
  undefined8 local_1b0;
  undefined8 local_1a8;
  undefined1 local_1a0 [24];
  longlong local_188 [4];
  undefined8 local_168;
  undefined4 uStack_164;
  undefined8 local_160;
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8 [2];
  undefined1 local_d8 [24];
  undefined1 local_c0 [16];
  undefined1 local_b0 [16];
  void *local_a0;
  undefined4 local_94;
  undefined8 local_90;
  ulonglong local_38;
  
  local_90 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_298;
  FUN_18049c4e0(&local_110,"https://oeksound.com/version-check");
  local_188[0] = local_110;
  puVar1 = (uint *)(local_110 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  local_188[1] = 0;
  local_188[2] = 0;
  local_188[3] = 0;
  local_168 = 0;
  local_160 = 0;
  local_158 = 0;
  local_150 = 0;
  local_148 = 0;
  FUN_181215140(local_188);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  FUN_18049c4e0(&local_f0,"version");
  FUN_18049c4e0(&local_108,"plugin");
  local_1d8 = local_188[0];
  if ((*(uint *)(local_188[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_188[0] + -0x10) = *(int *)(local_188[0] + -0x10) + 1;
    UNLOCK();
  }
  FUN_18123aa50(local_1d0,local_188 + 1);
  local_1c0 = 0;
  local_1b8 = 0;
  FUN_18048c4c0(&local_1c0,local_188[3],uStack_164);
  local_1b0 = 0;
  local_1a8 = 0;
  FUN_18048c4c0(&local_1b0,local_160,local_158._4_4_);
  FUN_18049ad40(local_1a0,&local_150);
  local_100 = local_108;
  puVar1 = (uint *)(local_108 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  FUN_18122dc00(&local_1c0,&local_100);
  local_f8 = *param_1;
  if ((*(uint *)(local_f8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_f8 + -0x10) = *(int *)(local_f8 + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(&local_1b0,&local_f8);
  FUN_18049a120(local_d8,&local_1d8);
  local_e8[0] = local_f0;
  puVar1 = (uint *)(local_f0 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  FUN_18122dc00(local_c0,local_e8);
  local_1e8[0] = *param_2;
  if ((*(uint *)(local_1e8[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_1e8[0] + -0x10) = *(int *)(local_1e8[0] + -0x10) + 1;
    UNLOCK();
  }
  FUN_18122dc00(local_b0,local_1e8);
  FUN_180485930(local_188,local_d8);
  FUN_180488f10(&local_a0);
  local_94 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_a0);
}



############ FUN_ 181174990 size=136 ############

undefined8 *
FUN_181174990(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  undefined1 *local_res10;
  undefined8 local_res18 [2];
  
  local_res10 = &DAT_1821dbf98;
  FUN_181184390(param_1,&local_res10,1,param_4,0xfffffffffffffffe);
  *param_1 = FactoryDefaultPreset::vftable;
  FUN_18049c4e0(local_res18,"Factory default preset");
  lVar2 = param_1[2];
  param_1[2] = local_res18[0];
  _Memory = (uint *)(lVar2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181196d60 size=711 ############

undefined8 * FUN_181196d60(longlong param_1,undefined8 *param_2,char param_3)

{
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  uint *puVar10;
  uint *puVar11;
  float fVar12;
  char *local_res8;
  longlong local_res10;
  char local_res18;
  longlong local_res20;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  undefined8 local_70;
  undefined8 local_68;
  
  local_70 = 0xfffffffffffffffe;
  local_res18 = param_3;
  FUN_18048ba90(param_2,param_1 + 0x180);
  FUN_18049c4e0(&local_res8,"Factory default preset");
  if (*local_res8 != '\0') {
    uVar9 = *(undefined8 *)(param_1 + 0x68);
    uVar7 = FUN_18122bf10();
    FUN_18122c480(uVar7,&local_res10,uVar9);
    FUN_181246b70(*param_2,&local_res10,&local_res8);
    puVar10 = (uint *)(local_res10 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  puVar3 = *(undefined8 **)(param_1 + 0x38);
  puVar4 = (undefined8 *)*puVar3;
  while (puVar4 != puVar3) {
    local_80 = puVar4[4];
    puVar10 = (uint *)(local_80 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      *puVar10 = *puVar10 + 1;
      UNLOCK();
    }
    if (param_3 == '\0') {
      fVar12 = (float)FUN_1811b8610(puVar4[5]);
    }
    else {
      fVar12 = (float)FUN_1811b6ab0();
    }
    local_68 = *(undefined8 *)(param_1 + 0x50);
    uVar7 = FUN_1812469a0(*param_2);
    uVar9 = *(undefined8 *)(param_1 + 0x58);
    uVar8 = FUN_18122bf10();
    FUN_18122c480(uVar8,&local_res20,uVar9);
    FUN_181246b70(uVar7,&local_res20,&local_80);
    puVar11 = (uint *)(local_res20 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    uVar9 = *(undefined8 *)(param_1 + 0x60);
    uVar8 = FUN_18122bf10();
    FUN_18122c480(uVar8,&local_88,uVar9);
    uVar9 = FUN_18122eaa0(&local_78,(double)fVar12);
    FUN_181246b70(uVar7,&local_88,uVar9);
    puVar11 = (uint *)(local_78 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    puVar11 = (uint *)(local_88 + -0x10);
    if ((*puVar11 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar11;
      *puVar11 = *puVar11 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar11);
      }
    }
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    puVar5 = (undefined8 *)puVar4[2];
    param_3 = local_res18;
    if (*(char *)((longlong)puVar5 + 0x19) == '\0') {
      cVar2 = *(char *)((longlong)*puVar5 + 0x19);
      puVar4 = puVar5;
      puVar5 = (undefined8 *)*puVar5;
      while (cVar2 == '\0') {
        cVar2 = *(char *)((longlong)*puVar5 + 0x19);
        puVar4 = puVar5;
        puVar5 = (undefined8 *)*puVar5;
      }
    }
    else {
      cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
      puVar6 = (undefined8 *)puVar4[1];
      puVar5 = puVar4;
      while ((puVar4 = puVar6, cVar2 == '\0' && (puVar5 == (undefined8 *)puVar4[2]))) {
        cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar6 = (undefined8 *)puVar4[1];
        puVar5 = puVar4;
      }
    }
  }
  puVar10 = (uint *)(local_res8 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  return param_2;
}



############ FUN_ 1811c9e10 size=33 ############

undefined8
.?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
          (undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"LastShownTutorialHintOption");
  return param_2;
}



############ FUN_ 1811c9e40 size=103 ############

undefined8 *
.?AV?$CloudyOpenGLLayer@USoothe2VertexData@@@@::vtbl___AV__CloudyOpenGLLayer_USoothe2VertexData____
          (undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  bool bVar2;
  undefined8 *local_res10 [3];
  
  local_res10[0] = param_2;
  FUN_18049c4e0(local_res10,"0000 0 0");
  *param_2 = &PTR_vftable_18262b560;
  param_2[1] = local_res10[0];
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return param_2;
}



############ FUN_ 1811ca6e0 size=33 ############

undefined8 FUN_1811ca6e0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"LastUsedPresetFolderOption");
  return param_2;
}



############ FUN_ 1811cae80 size=33 ############

undefined8 FUN_1811cae80(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"CompletedTutorialsOption");
  return param_2;
}



############ FUN_ 1811caeb0 size=44 ############

undefined8 * FUN_1811caeb0(undefined8 param_1,undefined8 *param_2)

{
  *param_2 = &PTR_vftable_18262b560;
  FUN_18049c4e0(param_2 + 1,&DAT_1821d930c);
  return param_2;
}



############ FUN_ 1811caef0 size=33 ############

undefined8 FUN_1811caef0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"BypassOnSoloOption");
  return param_2;
}



############ FUN_ 1811caf40 size=33 ############

undefined8 FUN_1811caf40(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"AutoBandSoloOption");
  return param_2;
}



############ FUN_ 1811caf90 size=33 ############

undefined8 FUN_1811caf90(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"LastSeenUpdateOption");
  return param_2;
}



############ FUN_ 1811cafc0 size=44 ############

undefined8 * FUN_1811cafc0(undefined8 param_1,undefined8 *param_2)

{
  *param_2 = &PTR_vftable_18262b560;
  FUN_18049c4e0(param_2 + 1,"1.1.2");
  return param_2;
}



############ FUN_ 1811e4300 size=182 ############

undefined8 *
FUN_1811e4300(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined8 local_res10;
  longlong local_res18;
  
  FUN_18049c4e0(&local_res10,"AlternativeStateOption",param_3,param_4,0xfffffffffffffffe);
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = local_res10;
  param_1[2] = param_2;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = AlternativeStateOption::vftable;
  local_res18 = param_1[1];
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1811efc90(param_2,&local_res18);
  return param_1;
}



############ FUN_ 1811e43c0 size=44 ############

undefined8 * FUN_1811e43c0(undefined8 param_1,undefined8 *param_2)

{
  *param_2 = &PTR_vftable_18262b560;
  FUN_18049c4e0(param_2 + 1,&DAT_1821d92c4);
  return param_2;
}



############ FUN_ 1811e44c0 size=44 ############

undefined8 * FUN_1811e44c0(undefined8 param_1,undefined8 *param_2)

{
  *param_2 = &PTR_vftable_18262b560;
  FUN_18049c4e0(param_2 + 1,"factory default preset");
  return param_2;
}



############ FUN_ 181226990 size=292 ############

undefined8 *
FUN_181226990(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  uint *puVar4;
  longlong local_res10 [2];
  longlong local_res20;
  undefined8 uVar5;
  undefined8 local_38;
  undefined8 local_30;
  
  uVar5 = 0xfffffffffffffffe;
  local_38 = *param_2;
  local_30 = local_38;
  iVar2 = FUN_180483820(&local_30);
  if ((iVar2 != 0x22) && (iVar2 != 0x27)) {
    FUN_18049c4e0(local_res10,"Not a quoted string!");
    FUN_18123a0b0(param_1,local_res10);
    puVar4 = (uint *)(local_res10[0] + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    return param_1;
  }
  puVar3 = (undefined8 *)FUN_1804970d0(&local_38,&local_res20,iVar2,param_4,uVar5);
  (**(code **)(*(longlong *)*param_3 + 0xb0))((longlong *)*param_3,param_3 + 1);
  *param_3 = &PTR_vftable_18262b560;
  param_3[1] = *puVar3;
  *puVar3 = &DAT_1821dbf98;
  puVar4 = (uint *)(local_res20 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  *param_2 = local_30;
  *param_1 = &DAT_1821dbf98;
  return param_1;
}



############ FUN_ 18122ea60 size=44 ############

undefined8 * FUN_18122ea60(undefined8 *param_1)

{
  *param_1 = juce::OutputStream::vftable;
  FUN_18049c4e0(param_1 + 1,&DAT_182496878);
  return param_1;
}



############ FUN_ 1812353d0 size=265 ############

void FUN_1812353d0(longlong *param_1,void **param_2,longlong param_3,undefined8 param_4)

{
  longlong lVar1;
  longlong lVar2;
  undefined **local_58;
  undefined1 local_50 [8];
  void **local_48;
  void *local_40;
  undefined8 local_38;
  undefined8 local_30;
  void *local_28;
  void *local_20;
  undefined8 local_18;
  
  local_58 = juce::OutputStream::vftable;
  FUN_18049c4e0(local_50,&DAT_182496878,param_3,param_4,0xfffffffffffffffe);
  local_58 = juce::MemoryOutputStream::vftable;
  local_40 = (void *)0x0;
  local_38 = 0;
  local_30 = 0;
  local_18 = 0;
  local_28 = param_2[1];
  local_48 = param_2;
  local_20 = local_28;
  lVar1 = (**(code **)(*param_1 + 0xa8))(param_1);
  lVar2 = (**(code **)(*param_1 + 8))(param_1);
  lVar2 = lVar2 - lVar1;
  if (0 < lVar2) {
    if ((lVar2 < param_3) || (param_3 < 0)) {
      param_3 = lVar2;
    }
    if (local_48 != (void **)0x0) {
      FUN_181234f80(&local_58,(longlong)local_48[1] + param_3);
    }
  }
  FUN_18122e270(&local_58,param_1,param_3);
  local_58 = juce::MemoryOutputStream::vftable;
  if ((local_48 != &local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,local_20,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 181239460 size=464 ############

char * FUN_181239460(char *param_1,undefined8 param_2,longlong param_3)

{
  uint uVar1;
  char *pcVar2;
  undefined8 uVar3;
  uint *puVar4;
  longlong lVar5;
  char *local_res8;
  char *local_res10;
  char *local_res18;
  char *local_res20;
  longlong local_48 [2];
  char **local_38;
  char *local_30;
  
  local_48[1] = 0xfffffffffffffffe;
  local_res8 = param_1;
  uVar3 = FUN_181230da0(param_2,local_48,&DAT_1821d9d7c);
  FUN_181230da0(uVar3,&local_res18,&DAT_1821d9dac);
  puVar4 = (uint *)(local_48[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_18049c4e0(&local_res8,&DAT_1821d9e0c);
  pcVar2 = local_res8;
  if (*local_res8 == '\0') {
    if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
      UNLOCK();
    }
    LOCK();
    local_res8 = local_res18;
    UNLOCK();
    puVar4 = (uint *)(pcVar2 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  else {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (local_res18[lVar5] != '\0');
    local_30 = local_res18 + lVar5;
    FUN_181232e20(&local_res8);
  }
  local_res10 = local_res8;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(local_res8 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  local_38 = &local_res10;
  FUN_181232e20(&local_res10,&DAT_1821d9d94,&DAT_1821d9d95);
  local_res20 = local_res10;
  if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_181232aa0(param_1,&local_res20,param_3 + 8);
  puVar4 = (uint *)(local_res18 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return param_1;
}



############ FUN_ 18123bd40 size=942 ############

void FUN_18123bd40(longlong *param_1,undefined8 *param_2)

{
  uint uVar1;
  char *pcVar2;
  bool bVar3;
  bool bVar4;
  int iVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  int iVar8;
  ulonglong uVar9;
  uint *puVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  char **ppcVar13;
  int iVar14;
  longlong lVar15;
  undefined1 auStack_f8 [32];
  char *local_d8;
  char *local_d0;
  longlong *local_c8;
  char *local_c0;
  char *local_b8;
  undefined8 *local_b0;
  undefined4 local_a8;
  int local_a4;
  int local_a0;
  undefined1 local_98 [8];
  undefined8 local_90;
  char *local_88;
  char *local_80;
  char *local_78;
  uint *local_70;
  uint local_68 [6];
  int local_50;
  ulonglong local_48;
  
  local_90 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_f8;
  local_a8 = 0;
  local_d8 = "";
  local_b0 = param_2;
  FUN_18123db10(&local_70,param_1);
  lVar15 = -1;
  do {
    iVar8 = 1;
    if (local_50 + 1 < 1) {
      iVar8 = local_50 + 1;
    }
    if (iVar8 < 1) {
      uVar12 = 0;
    }
    else {
      puVar10 = local_68;
      if (local_70 != (uint *)0x0) {
        puVar10 = local_70;
      }
      uVar12 = (ulonglong)(0xffffffffU >> (0x20U - (char)iVar8 & 0x1f) & *puVar10);
    }
    if (-1 < local_50) {
      FUN_18123c170(&local_70,1);
    }
    iVar8 = -1;
    if ((int)uVar12 == 0) {
      puVar10 = local_68;
      if (local_70 != (uint *)0x0) {
        puVar10 = local_70;
      }
      iVar14 = local_50 >> 5;
      uVar9 = (ulonglong)iVar14;
      uVar11 = uVar9;
      iVar5 = iVar8;
      if (-1 < iVar14) {
LAB_18123be30:
        uVar1 = puVar10[uVar9];
        if (uVar1 == 0) break;
        local_a4 = 0x1f;
        if (uVar1 != 0) {
          for (; uVar1 >> local_a4 == 0; local_a4 = local_a4 + -1) {
          }
        }
        iVar5 = (int)uVar11 * 0x20 + local_a4;
      }
LAB_18123be46:
      if (iVar5 < 0) {
        puVar7 = (undefined8 *)FUN_181231e80(&local_d8,&local_b0,iVar14,1);
        local_80 = local_d8;
        pcVar2 = (char *)*puVar7;
        *puVar7 = local_d8;
        puVar10 = (uint *)(local_b0 + -2);
        local_d8 = pcVar2;
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
        if (*(char *)((longlong)param_1 + 0x24) == '\0') goto LAB_18123c062;
        plVar6 = (longlong *)*param_1;
        if (plVar6 == (longlong *)0x0) {
          plVar6 = param_1 + 1;
        }
        iVar5 = (int)param_1[4] >> 5;
        uVar11 = (ulonglong)iVar5;
        uVar12 = uVar11;
        if (iVar5 < 0) goto LAB_18123bf82;
        goto LAB_18123bf70;
      }
    }
    plVar6 = (longlong *)FUN_181233f40(local_98,"0123456789abcdef"[uVar12]);
    local_c8 = plVar6;
    puVar7 = (undefined8 *)FUN_181232d30(plVar6,&local_d8);
    local_c8 = (longlong *)*puVar7;
    if ((*(uint *)((longlong)local_c8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)((longlong)local_c8 + -0x10) = *(int *)((longlong)local_c8 + -0x10) + 1;
      UNLOCK();
    }
    puVar10 = (uint *)(*plVar6 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    local_88 = local_d8;
    puVar10 = (uint *)(local_d8 + -0x10);
    local_d8 = (char *)local_c8;
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  } while( true );
  uVar11 = (ulonglong)((int)uVar11 - 1);
  uVar9 = uVar9 - 1;
  if ((longlong)uVar9 < 0) goto LAB_18123be46;
  goto LAB_18123be30;
LAB_18123bf70:
  uVar1 = *(uint *)((longlong)plVar6 + uVar11 * 4);
  if (uVar1 != 0) {
    local_a0 = 0x1f;
    if (uVar1 != 0) {
      for (; uVar1 >> local_a0 == 0; local_a0 = local_a0 + -1) {
      }
    }
    iVar8 = (int)uVar12 * 0x20 + local_a0;
LAB_18123bf82:
    if (iVar8 < 0) {
LAB_18123c062:
      local_c0 = pcVar2;
      if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
        UNLOCK();
      }
      ppcVar13 = &local_c0;
      bVar4 = false;
      bVar3 = true;
    }
    else {
      FUN_18049c4e0(&local_d0,&DAT_1821d9bec);
      pcVar2 = local_d0;
      if (*local_d0 == '\0') {
        if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        local_d0 = local_d8;
        UNLOCK();
        puVar10 = (uint *)(pcVar2 + -0x10);
        if ((*puVar10 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar10;
          *puVar10 = *puVar10 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar10);
          }
        }
      }
      else {
        do {
          lVar15 = lVar15 + 1;
        } while (local_d8[lVar15] != '\0');
        local_78 = local_d8 + lVar15;
        FUN_181232e20(&local_d0);
      }
      local_b8 = local_d0;
      if ((*(uint *)(local_d0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
        UNLOCK();
      }
      puVar10 = (uint *)(local_d0 + -0x10);
      if ((*puVar10 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar10;
        *puVar10 = *puVar10 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar10);
        }
      }
      ppcVar13 = &local_b8;
      bVar4 = true;
      bVar3 = false;
    }
    *param_2 = *ppcVar13;
    *ppcVar13 = "";
    if ((bVar3) && (puVar10 = (uint *)(local_c0 + -0x10), (*puVar10 & 0x30000000) == 0)) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
    if ((bVar4) && (puVar10 = (uint *)(local_b8 + -0x10), (*puVar10 & 0x30000000) == 0)) {
      LOCK();
      uVar1 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(local_70);
  }
  uVar12 = (ulonglong)((int)uVar12 - 1);
  uVar11 = uVar11 - 1;
  if ((longlong)uVar11 < 0) goto LAB_18123bf82;
  goto LAB_18123bf70;
}



############ FUN_ 1812445e0 size=492 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812445e0(longlong param_1,undefined8 param_2)

{
  char cVar1;
  ulonglong *puVar2;
  undefined4 *puVar3;
  longlong *plVar4;
  undefined8 uVar5;
  uint uVar6;
  ulonglong uVar7;
  uint *puVar8;
  char *_Src;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  undefined4 *local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70 [2];
  longlong *local_60;
  char local_3a [2];
  undefined8 local_38;
  char cStack_29;
  
  local_70[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  local_60 = &local_78;
  local_70[0] = param_1;
  puVar2 = (ulonglong *)FUN_18123aca0();
  uVar7 = *puVar2 * 0x5deece66d + 0xb & 0xffffffffffff;
  *puVar2 = uVar7;
  uVar7 = (longlong)uVar7 >> 0x10;
  _Src = local_3a + 1;
  local_3a[1] = 0;
  do {
    _Src = _Src + -1;
    cVar1 = "0123456789abcdef"[(uint)uVar7 & 0xf];
    *_Src = cVar1;
    uVar6 = (uint)uVar7 >> 4;
    uVar7 = (ulonglong)uVar6;
  } while (uVar6 != 0);
  if (cVar1 == '\0') {
    local_88 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    uVar7 = (longlong)&local_38 + -(longlong)_Src + 3 & 0xfffffffffffffffc;
    puVar3 = (undefined4 *)thunk_FUN_1811316e0(uVar7 + 0x17);
    LOCK();
    *puVar3 = 0;
    UNLOCK();
    *(ulonglong *)(puVar3 + 2) = uVar7;
    puVar3 = puVar3 + 4;
    memcpy(puVar3,_Src,(size_t)(local_3a + -(longlong)_Src + 1));
    *(char *)((longlong)puVar3 + (longlong)(local_3a + -(longlong)_Src + 1)) = '\0';
    local_88 = puVar3;
  }
  FUN_18049c4e0(&local_80,"temp_");
  plVar4 = (longlong *)FUN_181232d30(&local_80,&local_88);
  local_78 = *plVar4;
  if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
    UNLOCK();
  }
  puVar8 = (uint *)(local_80 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  uVar5 = FUN_181249b30(local_70,9);
  local_98 = 0;
  FUN_18123e260(param_1,uVar5,&local_78,param_2);
  puVar8 = (uint *)(local_70[0] + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = local_88 + -4;
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  *(undefined1 **)(param_1 + 8) = &DAT_1821dbf98;
}



############ FUN_ 181246360 size=37 ############

undefined8 * FUN_181246360(undefined8 *param_1)

{
  *param_1 = &PTR_vftable_18262b560;
  FUN_18049c4e0(param_1 + 1);
  return param_1;
}



############ FUN_ 1812478a0 size=126 ############

undefined8 * FUN_1812478a0(undefined8 *param_1,longlong param_2,char param_3)

{
  undefined8 uVar1;
  
  *param_1 = juce::OutputStream::vftable;
  FUN_18049c4e0(param_1 + 1,&DAT_182496878);
  param_1[2] = param_2;
  *param_1 = juce::MemoryOutputStream::vftable;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  if (param_3 != '\0') {
    uVar1 = *(undefined8 *)(param_2 + 8);
    param_1[7] = uVar1;
    param_1[6] = uVar1;
  }
  return param_1;
}



############ FUN_ 181253eb0 size=192 ############

void FUN_181253eb0(longlong param_1,longlong *param_2,undefined4 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint *puVar4;
  undefined8 local_res8;
  longlong local_res10;
  
  lVar3 = *param_2;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *(longlong *)(param_1 + 0x10);
  *(longlong *)(param_1 + 0x10) = *param_2;
  UNLOCK();
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  *(undefined4 *)(param_1 + 0x58) = 1;
  *(undefined4 *)(param_1 + 0x5c) = param_3;
  FUN_18049c4e0(&local_res8,"Regular",lVar3,param_4,0xfffffffffffffffe);
  local_res10 = *(longlong *)(param_1 + 0x18);
  *(undefined8 *)(param_1 + 0x18) = local_res8;
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 1812562d0 size=33 ############

undefined8 FUN_1812562d0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,&DAT_1821df0f4);
  return param_2;
}



############ FUN_ 1812710c0 size=33 ############

undefined8 FUN_1812710c0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,&DAT_1821defd0);
  return param_2;
}



############ FUN_ 18128e530 size=33 ############

undefined8 FUN_18128e530(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,&DAT_1821def24);
  return param_2;
}



############ FUN_ 1812a6a90 size=129 ############

undefined8 *
FUN_1812a6a90(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  DWORD DVar2;
  uint *_Memory;
  longlong local_res8;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  *param_1 = 0;
  param_1[1] = 0;
  DVar2 = GetCurrentThreadId();
  param_1[2] = (ulonglong)DVar2;
  param_1[3] = 0;
  if (DAT_1826736d8 != 0) {
    FUN_18049c4e0(&local_res8,"JUCE Message Thread",param_3,param_4,uVar3);
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return param_1;
}



############ FUN_ 1812bbb00 size=629 ############

void FUN_1812bbb00(longlong *param_1,longlong *param_2)

{
  longlong lVar1;
  byte bVar2;
  longlong *plVar3;
  byte *pbVar4;
  uint uVar5;
  int *piVar6;
  uint *_Memory;
  uint uVar7;
  int iVar8;
  int iVar9;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_48;
  longlong local_40;
  longlong local_38;
  longlong local_30;
  longlong local_28;
  
  plVar3 = (longlong *)(**(code **)(*param_1 + 8))(param_1,&local_res8);
  if ((*(uint *)(*plVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar6 = (int *)(*plVar3 + -0x10);
    *piVar6 = *piVar6 + 1;
    UNLOCK();
  }
  LOCK();
  lVar1 = *param_2;
  *param_2 = *plVar3;
  UNLOCK();
  piVar6 = (int *)(lVar1 + -0x10);
  if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar9 = *piVar6;
    *piVar6 = *piVar6 + -1;
    UNLOCK();
    if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar6);
    }
  }
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar7 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  pbVar4 = (byte *)*param_2;
  iVar9 = 0;
  bVar2 = *pbVar4;
  do {
    if (bVar2 == 0) {
      *(int *)(param_2 + 9) = iVar9;
      FUN_18049c4e0(&local_res10,"I/O devices");
      local_40 = param_2[3];
      param_2[3] = local_res10;
      piVar6 = (int *)(local_40 + -0x10);
      if ((*(uint *)(local_40 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar9 = *piVar6;
        *piVar6 = *piVar6 + -1;
        UNLOCK();
        if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar6);
        }
      }
      FUN_18049c4e0(&local_res18,"Internal");
      local_38 = param_2[2];
      param_2[2] = local_res18;
      piVar6 = (int *)(local_38 + -0x10);
      if ((*(uint *)(local_38 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar9 = *piVar6;
        *piVar6 = *piVar6 + -1;
        UNLOCK();
        if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar6);
        }
      }
      FUN_18049c4e0(&local_res20,&DAT_1821e391c);
      local_30 = param_2[4];
      param_2[4] = local_res20;
      piVar6 = (int *)(local_30 + -0x10);
      if ((*(uint *)(local_30 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar9 = *piVar6;
        *piVar6 = *piVar6 + -1;
        UNLOCK();
        if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar6);
        }
      }
      FUN_18049c4e0(&local_48,&DAT_1821e254c);
      local_28 = param_2[5];
      param_2[5] = local_48;
      piVar6 = (int *)(local_28 + -0x10);
      if ((*(uint *)(local_28 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar9 = *piVar6;
        *piVar6 = *piVar6 + -1;
        UNLOCK();
        if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar6);
        }
      }
      *(undefined1 *)((longlong)param_2 + 0x4c) = 0;
      *(int *)(param_2 + 10) = (int)param_1[0x20];
      if (((int)param_1[0x29] == 1) && (param_1[0x2a] != 0)) {
        *(undefined4 *)(param_2 + 10) = *(undefined4 *)(param_1[0x2a] + 0x100);
      }
      *(undefined4 *)((longlong)param_2 + 0x54) = *(undefined4 *)((longlong)param_1 + 0x104);
      if (((int)param_1[0x29] == 0) && (param_1[0x2a] != 0)) {
        *(undefined4 *)((longlong)param_2 + 0x54) = *(undefined4 *)(param_1[0x2a] + 0x104);
      }
      return;
    }
    pbVar4 = pbVar4 + 1;
    uVar7 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar5 = 0x40;
      iVar8 = 0;
      uVar7 = 0x7f;
      if ((bVar2 & 0x40) != 0) {
        do {
          if (uVar5 < 9) break;
          uVar7 = uVar7 >> 1;
          iVar8 = iVar8 + 1;
          uVar5 = uVar5 >> 1;
        } while ((bVar2 & uVar5) != 0);
      }
      uVar7 = bVar2 & uVar7;
      for (; (iVar8 = iVar8 + -1, -1 < iVar8 && ((*pbVar4 & 0xc0) == 0x80)); pbVar4 = pbVar4 + 1) {
        uVar7 = *pbVar4 & 0x3f | uVar7 << 6;
      }
    }
    bVar2 = *pbVar4;
    iVar9 = iVar9 * 0x1f + uVar7;
  } while( true );
}



############ FUN_ 1812bbd80 size=149 ############

undefined8 * FUN_1812bbd80(longlong param_1,undefined8 *param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x148);
  if (iVar1 == 0) {
    FUN_18049c4e0(param_2,"Audio Input");
    return param_2;
  }
  if (iVar1 == 1) {
    FUN_18049c4e0(param_2,"Audio Output");
    return param_2;
  }
  if (iVar1 == 2) {
    FUN_18049c4e0(param_2,"Midi Input");
    return param_2;
  }
  if (iVar1 != 3) {
    *param_2 = &DAT_1821dbf98;
    return param_2;
  }
  FUN_18049c4e0(param_2,"Midi Output");
  return param_2;
}



############ FUN_ 1812bd1e0 size=33 ############

undefined8 FUN_1812bd1e0(undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,"Audio Graph");
  return param_2;
}



############ FUN_ 1812bddf0 size=897 ############

longlong * FUN_1812bddf0(longlong *param_1,longlong *param_2,float param_3,ulonglong param_4)

{
  bool bVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  longlong *plVar5;
  bool bVar6;
  uint uVar7;
  uint *puVar8;
  undefined8 in_R8;
  longlong local_res8;
  longlong local_50;
  longlong local_48;
  longlong local_40;
  longlong local_38 [2];
  undefined4 *local_28;
  undefined4 *local_20;
  
  local_38[1] = 0xfffffffffffffffe;
  cVar3 = (**(code **)(*param_1 + 0x40))(param_1,param_2,in_R8,param_4,0);
  if (cVar3 == '\0') {
    FUN_1812339a0(local_38,(double)param_3,0,0);
    FUN_1812490c0(local_38,param_2,0,param_4 & 0xffffffff);
    puVar8 = (uint *)(local_38[0] + -0x10);
    if ((*puVar8 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
  }
  else {
    if (DAT_1824c3d8c <= param_3) {
      FUN_18049c4e0(&local_50,&DAT_1821e253c);
      lVar2 = DAT_1826739f8;
      local_20 = &DAT_182673984;
      do {
        LOCK();
        uVar7 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar7 != 0);
      if (DAT_1826739f8 == 0) {
        local_48 = local_50;
        if ((*(uint *)(local_50 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_50 + -0x10) = *(int *)(local_50 + -0x10) + 1;
          UNLOCK();
        }
      }
      else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
              (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_50,
                                     *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar4)) {
        iVar4 = FUN_1812498b0(lVar2 + 0x18,local_50,*(undefined1 *)(lVar2 + 0x38),0);
        if (iVar4 < 0) {
          local_48 = local_50;
          uVar7 = *(uint *)(local_50 + -0x10);
        }
        else {
          plVar5 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar4);
          local_48 = *plVar5;
          uVar7 = *(uint *)(local_48 + -0x10);
        }
        if ((uVar7 & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_48,&local_50,&local_50);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar8 = (uint *)(local_50 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      plVar5 = &local_48;
      bVar6 = false;
      bVar1 = true;
    }
    else {
      FUN_18049c4e0(&local_res8,&DAT_1821e24c4);
      lVar2 = DAT_1826739f8;
      local_28 = &DAT_182673984;
      do {
        LOCK();
        uVar7 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar7 != 0);
      if (DAT_1826739f8 == 0) {
        local_40 = local_res8;
        if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
          UNLOCK();
        }
      }
      else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
              (iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res8,
                                     *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar4)) {
        iVar4 = FUN_1812498b0(lVar2 + 0x18,local_res8,*(undefined1 *)(lVar2 + 0x38),0);
        if (iVar4 < 0) {
          local_40 = local_res8;
          uVar7 = *(uint *)(local_res8 + -0x10);
        }
        else {
          plVar5 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar4);
          local_40 = *plVar5;
          uVar7 = *(uint *)(local_40 + -0x10);
        }
        if ((uVar7 & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_40 + -0x10) = *(int *)(local_40 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_40,&local_res8,&local_res8);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar8 = (uint *)(local_res8 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      plVar5 = &local_40;
      bVar6 = true;
      bVar1 = false;
    }
    *param_2 = *plVar5;
    *plVar5 = (longlong)&DAT_1821dbf98;
    if ((bVar1) && (puVar8 = (uint *)(local_48 + -0x10), (*puVar8 & 0x30000000) == 0)) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if (!bVar6) {
      return param_2;
    }
    puVar8 = (uint *)(local_40 + -0x10);
    if ((*puVar8 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
  }
  if (uVar7 != 0) {
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(puVar8);
}



############ FUN_ 1812c7980 size=189 ############

void FUN_1812c7980(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong local_res18;
  longlong local_58 [7];
  void *local_20;
  ulonglong local_18;
  
  FUN_18049c4e0(&local_res18,"https://juce.com",param_3,param_4,0xfffffffffffffffe);
  local_58[0] = local_res18;
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_58[1] = 0;
  local_58[2] = 0;
  local_58[3] = 0;
  local_58[4] = 0;
  local_58[5] = 0;
  local_58[6] = 0;
  local_20 = (void *)0x0;
  local_18 = 0;
  FUN_181215140(local_58);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_181212f00(local_58);
  FUN_180488f10(&local_20);
  local_18 = local_18 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_20);
}



############ FUN_ 1812c92a0 size=719 ############

void FUN_1812c92a0(undefined8 param_1,int param_2,longlong param_3)

{
  longlong lVar1;
  int iVar2;
  longlong *plVar3;
  uint uVar4;
  uint *puVar5;
  longlong local_res20;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50 [2];
  undefined4 *local_40;
  undefined4 *local_38;
  undefined4 local_30;
  undefined8 local_2c;
  
  if (param_2 != 0x1001) {
    return;
  }
  local_50[1] = 0xfffffffffffffffe;
  FUN_18049c4e0(local_50,"Application");
  FUN_18049c4e0(&local_res20,"Quits the application");
  lVar1 = DAT_1826739f8;
  local_40 = &DAT_182673984;
  do {
    LOCK();
    uVar4 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar4 != 0);
  if (DAT_1826739f8 == 0) {
    local_58 = local_res20;
    uVar4 = *(uint *)(local_res20 + -0x10);
LAB_1812c939a:
    if ((uVar4 & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_58 + -0x10) = *(int *)(local_58 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
       (iVar2 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,*(undefined1 *)(DAT_1826739f8 + 0x38)
                              ,0), -1 < iVar2)) {
      iVar2 = FUN_1812498b0(lVar1 + 0x18,local_res20,*(undefined1 *)(lVar1 + 0x38),0);
      if (iVar2 < 0) {
        local_58 = local_res20;
        uVar4 = *(uint *)(local_res20 + -0x10);
      }
      else {
        plVar3 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar2);
        local_58 = *plVar3;
        uVar4 = *(uint *)(local_58 + -0x10);
      }
      goto LAB_1812c939a;
    }
    FUN_181234570(*(undefined8 *)(lVar1 + 0x40),&local_58,&local_res20,&local_res20);
  }
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar5 = (uint *)(local_res20 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_18049c4e0(&local_68,&DAT_1821e4b9c);
  lVar1 = DAT_1826739f8;
  local_38 = &DAT_182673984;
  do {
    LOCK();
    uVar4 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar4 != 0);
  if (DAT_1826739f8 == 0) {
    local_60 = local_68;
    uVar4 = *(uint *)(local_68 + -0x10);
  }
  else {
    if ((*(longlong *)(DAT_1826739f8 + 0x40) != 0) &&
       (iVar2 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_68,*(undefined1 *)(DAT_1826739f8 + 0x38),0)
       , iVar2 < 0)) {
      FUN_181234570(*(undefined8 *)(lVar1 + 0x40),&local_60,&local_68,&local_68);
      goto LAB_1812c9490;
    }
    iVar2 = FUN_1812498b0(lVar1 + 0x18,local_68,*(undefined1 *)(lVar1 + 0x38),0);
    if (iVar2 < 0) {
      local_60 = local_68;
      uVar4 = *(uint *)(local_68 + -0x10);
    }
    else {
      plVar3 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar2);
      local_60 = *plVar3;
      uVar4 = *(uint *)(local_60 + -0x10);
    }
  }
  if ((uVar4 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
    UNLOCK();
  }
LAB_1812c9490:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar5 = (uint *)(local_68 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1812cba20(param_3,&local_60,&local_58,local_50);
  puVar5 = (uint *)(local_60 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_58 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_50[0] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  local_30 = 0x71;
  local_2c = 2;
  FUN_18051b4d0(param_3 + 0x20,&local_30);
  return;
}



############ FUN_ 1812dd810 size=679 ############

undefined1 FUN_1812dd810(longlong *param_1,int *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  bool bVar4;
  wint_t wVar5;
  wint_t wVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  uint *puVar9;
  int *piVar10;
  code *pcVar11;
  longlong local_res8 [2];
  undefined4 local_res18;
  undefined4 uStackX_1c;
  longlong local_res20;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  piVar10 = param_2;
  if (((*(char *)((longlong)param_1 + 0x1ec) != '\0') ||
      ((*(byte *)((longlong)param_1 + 0xa9) & 0x10) != 0)) ||
     ((param_1[3] != 0 && (cVar3 = FUN_18133eaa0(), cVar3 == '\0')))) {
    if (piVar10[1] == 2) {
      iVar2 = *piVar10;
      if (iVar2 != 99) {
        if (iVar2 < 0x100) {
          wVar5 = towlower((wint_t)iVar2);
          wVar6 = towlower(99);
          if (wVar5 == wVar6) goto LAB_1812dd885;
        }
        goto LAB_1812dd889;
      }
LAB_1812dd885:
      bVar4 = true;
    }
    else {
LAB_1812dd889:
      bVar4 = false;
    }
    if (!bVar4) {
      if (param_2[1] == 2) {
        iVar2 = *param_2;
        if (iVar2 != 0x61) {
          if (iVar2 < 0x100) {
            wVar5 = towlower((wint_t)iVar2);
            wVar6 = towlower(0x61);
            if (wVar5 == wVar6) goto LAB_1812dd8c1;
          }
          goto LAB_1812dd8c5;
        }
LAB_1812dd8c1:
        bVar4 = true;
      }
      else {
LAB_1812dd8c5:
        bVar4 = false;
      }
      if (!bVar4) {
        return 0;
      }
    }
  }
  cVar3 = FUN_180519e50(param_1,param_2);
  if (cVar3 == '\0') {
    if ((*param_2 == 0xd) && ((*(byte *)(param_2 + 1) & 7) == 0)) {
      FUN_1812e1fc0(param_1);
      if ((char)param_1[0x3e] == '\0') {
        pcVar11 = *(code **)(*param_1 + 0x168);
        if (pcVar11 == FUN_1812e0e50) {
          FUN_1813416b0(param_1,0x10003002);
          return *(undefined1 *)((longlong)param_1 + 0x1f9);
        }
LAB_1812ddabf:
        (*pcVar11)(param_1);
        return *(undefined1 *)((longlong)param_1 + 0x1f9);
      }
      FUN_18049c4e0(local_res8,&DAT_1821e30ec);
      (**(code **)(param_1[0x16] + 0x30))(param_1 + 0x16,local_res8);
      puVar9 = (uint *)(local_res8[0] + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
    }
    else {
      if (*param_2 == 0x1b) {
        FUN_1812e1fc0(param_1);
        uVar7 = *(undefined4 *)((longlong)param_1 + 0x2a4);
        *(undefined4 *)(param_1 + 0x5f) = 0;
        FUN_1812e0940(param_1,param_1[0x50]);
        FUN_1812e08d0(param_1,uVar7);
        local_res18 = *(undefined4 *)((longlong)param_1 + 0x2a4);
        param_1[0x50] = CONCAT44(local_res18,local_res18);
        pcVar11 = *(code **)(*param_1 + 0x170);
        uStackX_1c = local_res18;
        if (pcVar11 == FUN_1812e0e40) {
          FUN_1813416b0(param_1,0x10003003);
          return *(undefined1 *)((longlong)param_1 + 0x1f9);
        }
        goto LAB_1812ddabf;
      }
      if (((uint)param_2[2] < 0x20) &&
         ((*(char *)((longlong)param_1 + 0x1f6) == '\0' || (param_2[2] != 9)))) {
        return 0;
      }
      uVar8 = FUN_181233f40(&local_res20);
      pcVar11 = *(code **)(param_1[0x16] + 0x30);
      (*pcVar11)(param_1 + 0x16,uVar8,pcVar11,param_4,uVar12);
      puVar9 = (uint *)(local_res20 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      uVar7 = FUN_181228de0();
      *(undefined4 *)(param_1 + 0x52) = uVar7;
    }
  }
  return 1;
}



############ FUN_ 1812deb40 size=890 ############

void FUN_1812deb40(longlong param_1,undefined8 param_2)

{
  bool bVar1;
  char cVar2;
  uint uVar3;
  uint *puVar4;
  longlong lVar5;
  longlong lVar6;
  longlong local_res8;
  undefined1 local_res20 [8];
  longlong local_80;
  undefined1 local_78 [8];
  longlong local_70;
  undefined1 local_68 [8];
  longlong local_60;
  undefined1 local_58 [8];
  longlong local_50;
  undefined1 local_48 [8];
  longlong local_40;
  undefined1 local_38 [8];
  longlong local_30;
  undefined1 local_28 [8];
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  if (((*(char *)(param_1 + 0x1ec) == '\0') && ((*(byte *)(param_1 + 0xa9) & 0x10) == 0)) &&
     ((*(longlong *)(param_1 + 0x18) == 0 || (cVar2 = FUN_18133eaa0(), cVar2 != '\0')))) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  bVar1 = !bVar1;
  if (*(int *)(param_1 + 0x2c4) == 0) {
    FUN_18049c4e0(&local_res8,&DAT_1821e30c4);
    FUN_1812344e0(local_res20,&local_res8);
    puVar4 = (uint *)(local_res8 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_1813486a0(param_2,0x1003,local_res20,bVar1,0);
    FUN_18049c4e0(&local_80,&DAT_1821e49c0);
    FUN_1812344e0(local_78,&local_80);
    puVar4 = (uint *)(local_80 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    FUN_1813486a0(param_2,0x1004,local_78,*(int *)(param_1 + 0x280) != *(int *)(param_1 + 0x284),0);
  }
  FUN_18049c4e0(&local_70,"Paste");
  FUN_1812344e0(local_68,&local_70);
  puVar4 = (uint *)(local_70 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_1813486a0(param_2,0x1005,local_68,bVar1,0);
  FUN_18049c4e0(&local_60,"Delete");
  FUN_1812344e0(local_58,&local_60);
  puVar4 = (uint *)(local_60 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_1813486a0(param_2,0x1002,local_58,bVar1,0);
  FUN_181348300(param_2);
  FUN_18049c4e0(&local_50,"Select All");
  FUN_1812344e0(local_48,&local_50);
  puVar4 = (uint *)(local_50 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_1813486a0(param_2,0x1006,local_48,1,0);
  FUN_181348300(param_2);
  if ((*(char *)(param_1 + 0x1ec) == '\0') && (param_1 != -0x200)) {
    FUN_18049c4e0(&local_40,&DAT_1821e49d0);
    FUN_1812344e0(local_38,&local_40);
    puVar4 = (uint *)(local_40 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    uVar3 = *(int *)(param_1 + 0x26c) - 1;
    lVar6 = 0;
    lVar5 = lVar6;
    if (uVar3 < *(uint *)(param_1 + 0x244)) {
      lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x238) + (longlong)(int)uVar3 * 8);
    }
    FUN_1813486a0(param_2,0x1008,local_38,lVar5 != 0,0);
    FUN_18049c4e0(&local_30,&DAT_1821e49c8);
    FUN_1812344e0(local_28,&local_30);
    puVar4 = (uint *)(local_30 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
    if (*(uint *)(param_1 + 0x26c) < *(uint *)(param_1 + 0x244)) {
      lVar6 = *(longlong *)
               (*(longlong *)(param_1 + 0x238) + (longlong)(int)*(uint *)(param_1 + 0x26c) * 8);
    }
    FUN_1813486a0(param_2,0x1009,local_28,lVar6 != 0,0);
  }
  return;
}



############ FUN_ 181306d50 size=249 ############

longlong FUN_181306d50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  void *local_res10;
  undefined8 uVar2;
  longlong local_50 [2];
  undefined2 local_40;
  undefined1 *local_38;
  undefined1 *local_30;
  undefined8 local_28;
  undefined8 local_20;
  undefined2 local_18;
  undefined8 local_10;
  
  uVar2 = 0xfffffffffffffffe;
  FUN_18049c4e0();
  _Memory = (uint *)(param_1 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_50[1] = 0;
  local_40 = 0;
  local_38 = &DAT_1821dbf98;
  local_30 = &DAT_1821dbf98;
  local_28 = 0;
  local_20 = 0;
  local_18 = 0x100;
  local_10 = 0;
  local_50[0] = param_1;
  FUN_181248430(local_50,&local_res10,param_3,param_4,uVar2);
  FUN_181248660(local_50);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18132eac0(param_1,local_res10);
  if (local_res10 != (void *)0x0) {
    FUN_1812472e0(local_res10);
                    /* WARNING: Subroutine does not return */
    free(local_res10);
  }
  return param_1;
}



############ FUN_ 181325040 size=931 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181325040(longlong param_1)

{
  undefined1 *puVar1;
  longlong lVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  longlong *plVar8;
  uint uVar9;
  uint *puVar10;
  bool bVar11;
  undefined1 auStack_158 [64];
  undefined1 *local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  undefined1 *local_f8;
  longlong local_f0;
  longlong local_e8 [2];
  undefined1 *local_d8;
  undefined1 *local_d0;
  undefined4 *local_c8;
  undefined1 local_b8 [128];
  ulonglong local_38;
  
  local_e8[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_118 = *(undefined1 **)(param_1 + 0xe0);
  if ((*(uint *)(local_118 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_118 + -0x10) = *(int *)(local_118 + -0x10) + 1;
    UNLOCK();
  }
  if (local_118 == &DAT_1821dbf98) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18049bb30(local_118,&DAT_1821dbf98);
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar9 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar11 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar9;
    if (bVar11) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (iVar4 == 0) {
    uVar6 = FUN_181249970(param_1 + 0xd0,0);
    FUN_181241890(&local_f8,uVar6);
    puVar1 = local_118;
    local_d8 = local_118;
    local_118 = local_f8;
    puVar10 = (uint *)(puVar1 + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  if (local_118 == &DAT_1821dbf98) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_18049bb30(local_118,&DAT_1821dbf98);
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar9 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar11 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar9;
    if (bVar11) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (iVar4 == 0) {
    puVar7 = (undefined8 *)FUN_181217460(&local_f0);
    local_d0 = local_118;
    puVar1 = (undefined1 *)*puVar7;
    *puVar7 = local_118;
    puVar10 = (uint *)(local_f0 + -0x10);
    local_118 = puVar1;
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  FUN_18049c4e0(&local_100,&DAT_1821e2cac);
  FUN_18049c4e0(&local_110,"Add a folder...");
  lVar2 = DAT_1826739f8;
  local_c8 = &DAT_182673984;
  do {
    LOCK();
    uVar9 = DAT_182673984 & 1;
    DAT_182673984 = DAT_182673984 | 1;
    UNLOCK();
  } while (uVar9 != 0);
  if (DAT_1826739f8 == 0) {
    local_108 = local_110;
    uVar9 = *(uint *)(local_110 + -0x10);
  }
  else {
    if (*(longlong *)(DAT_1826739f8 + 0x40) != 0) {
      iVar4 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_110,*(undefined1 *)(DAT_1826739f8 + 0x38),0);
      if (iVar4 < 0) {
        FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_108,&local_110,&local_110);
        goto LAB_1813252ae;
      }
    }
    iVar4 = FUN_1812498b0(lVar2 + 0x18,local_110,*(undefined1 *)(lVar2 + 0x38),0);
    if (iVar4 < 0) {
      local_108 = local_110;
      uVar9 = *(uint *)(local_110 + -0x10);
    }
    else {
      plVar8 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar4);
      local_108 = *plVar8;
      uVar9 = *(uint *)(local_108 + -0x10);
    }
  }
  if ((uVar9 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_108 + -0x10) = *(int *)(local_108 + -0x10) + 1;
    UNLOCK();
  }
LAB_1813252ae:
  LOCK();
  DAT_182673984 = 0;
  UNLOCK();
  puVar10 = (uint *)(local_110 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  FUN_181329f30(local_b8,&local_108,&local_118,&local_100);
  puVar10 = (uint *)(local_108 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  puVar10 = (uint *)(local_100 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
  cVar3 = FUN_181329d80(local_b8,9);
  if (cVar3 != '\0') {
    uVar6 = FUN_181329930(local_b8,local_e8);
    uVar5 = FUN_181348e10(param_1 + 0xe8,0);
    FUN_18123e5f0(param_1 + 0xd0,uVar6,uVar5);
    puVar10 = (uint *)(local_e8[0] + -0x10);
    if ((*puVar10 & 0x30000000) == 0) {
      LOCK();
      uVar9 = *puVar10;
      *puVar10 = *puVar10 - 1;
      UNLOCK();
      if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar10);
      }
    }
  }
  FUN_181325e40(param_1);
  FUN_181329e40(local_b8);
  puVar10 = (uint *)(local_118 + -0x10);
  if ((*puVar10 & 0x30000000) == 0) {
    LOCK();
    uVar9 = *puVar10;
    *puVar10 = *puVar10 - 1;
    UNLOCK();
    if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar10);
    }
  }
}



############ FUN_ 1813268d0 size=971 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813268d0(longlong *param_1)

{
  longlong lVar1;
  char cVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 uVar5;
  uint uVar6;
  uint *puVar7;
  undefined1 auStack_128 [64];
  uint local_e8;
  longlong local_e0;
  longlong local_d8;
  longlong local_d0;
  longlong local_c8;
  longlong local_c0;
  undefined1 local_b8 [8];
  undefined4 *local_b0;
  undefined8 local_a8;
  undefined4 *local_a0;
  undefined1 local_98 [128];
  ulonglong local_18;
  
  local_a8 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_128;
  local_e8 = 0;
  if (*(char *)((longlong)param_1 + 0x27c) == '\0') {
    FUN_18049c4e0(&local_d8,"Choose a new file");
    lVar1 = DAT_1826739f8;
    local_b0 = &DAT_182673984;
    do {
      LOCK();
      uVar6 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar6 != 0);
    if (DAT_1826739f8 == 0) {
      local_d0 = local_d8;
      if ((*(uint *)(local_d8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d8 + -0x10) = *(int *)(local_d8 + -0x10) + 1;
        UNLOCK();
      }
      local_e8 = 0x100;
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_d8,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar3)) {
      iVar3 = FUN_1812498b0(lVar1 + 0x18,local_d8,*(undefined1 *)(lVar1 + 0x38),0);
      if (iVar3 < 0) {
        uVar6 = *(uint *)(local_d8 + -0x10);
        local_d0 = local_d8;
      }
      else {
        plVar4 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar3);
        uVar6 = *(uint *)(*plVar4 + -0x10);
        local_d0 = *plVar4;
      }
      if ((uVar6 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_d0 + -0x10) = *(int *)(local_d0 + -0x10) + 1;
        UNLOCK();
      }
      local_e8 = 0x300;
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar1 + 0x40),&local_d0,&local_d8,&local_d8);
      local_e8 = 0x300;
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_d8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
        local_e8 = local_e8 | 0xc0;
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    plVar4 = &local_d0;
    local_e8 = local_e8 | 0xc2;
  }
  else {
    FUN_18049c4e0(&local_e0,"Choose a new directory");
    lVar1 = DAT_1826739f8;
    local_a0 = &DAT_182673984;
    do {
      LOCK();
      uVar6 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar6 != 0);
    if (DAT_1826739f8 == 0) {
      local_c8 = local_e0;
      if ((*(uint *)(local_e0 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_e0 + -0x10) = *(int *)(local_e0 + -0x10) + 1;
        UNLOCK();
      }
      local_e8 = 0x10;
    }
    else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
            (iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_e0,
                                   *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar3)) {
      iVar3 = FUN_1812498b0(lVar1 + 0x18,local_e0,*(undefined1 *)(lVar1 + 0x38),0);
      if (iVar3 < 0) {
        uVar6 = *(uint *)(local_e0 + -0x10);
        local_c8 = local_e0;
      }
      else {
        plVar4 = (longlong *)FUN_181249970(lVar1 + 0x28,iVar3);
        uVar6 = *(uint *)(*plVar4 + -0x10);
        local_c8 = *plVar4;
      }
      if ((uVar6 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_c8 + -0x10) = *(int *)(local_c8 + -0x10) + 1;
        UNLOCK();
      }
      local_e8 = 0x30;
    }
    else {
      FUN_181234570(*(undefined8 *)(lVar1 + 0x40),&local_c8,&local_e0,&local_e0);
      local_e8 = 0x30;
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_e0 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
        local_e8 = local_e8 | 0xc;
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    plVar4 = &local_c8;
    local_e8 = local_e8 | 0xd;
  }
  uVar5 = (**(code **)(*param_1 + 0x158))(param_1,&local_c0);
  FUN_181329f30(local_98,plVar4,uVar5,param_1 + 0x50);
  puVar7 = (uint *)(local_c0 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if ((local_e8 & 2) != 0) {
    local_e8 = local_e8 & 0xfffffffd;
    puVar7 = (uint *)(local_d0 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  if (((local_e8 & 1) != 0) && (puVar7 = (uint *)(local_c8 + -0x10), (*puVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if (*(char *)((longlong)param_1 + 0x27c) == '\0') {
    uVar5 = 6;
    if (*(char *)((longlong)param_1 + 0x27d) == '\0') {
      uVar5 = 5;
    }
  }
  else {
    uVar5 = 9;
  }
  cVar2 = FUN_181329d80(local_98,uVar5);
  if (cVar2 != '\0') {
    uVar5 = FUN_181329930(local_98,local_b8);
    FUN_181326360(param_1,uVar5);
  }
  FUN_181329e40(local_98);
}



############ FUN_ 181327e20 size=965 ############

void FUN_181327e20(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  int iVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  longlong *plVar6;
  uint uVar7;
  uint *puVar8;
  bool bVar9;
  longlong local_res18;
  longlong local_res20;
  longlong local_78;
  longlong local_70;
  char *local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50;
  undefined1 *local_48;
  undefined8 local_40;
  undefined4 *local_38;
  undefined4 *local_30;
  
  local_40 = 0xfffffffffffffffe;
  FUN_18123f7e0(&local_68);
  if (*local_68 == '\0') goto LAB_1813281b2;
  local_60 = *(longlong *)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0xb0) + 0xf8);
  if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
    UNLOCK();
  }
  uVar4 = FUN_181245100(&local_60,&local_50,local_68);
  puVar5 = (undefined8 *)FUN_181244be0(uVar4,&local_58);
  cVar1 = *(char *)*puVar5;
  puVar8 = (uint *)(local_58 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_50 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (cVar1 != '\0') {
    local_48 = &DAT_1821dbf98;
    FUN_18049c4e0(&local_res18,"Couldn\'t create the folder!");
    lVar2 = DAT_1826739f8;
    local_38 = &DAT_182673984;
    do {
      LOCK();
      uVar7 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar7 != 0);
    if (DAT_1826739f8 == 0) {
      local_70 = local_res18;
      uVar7 = *(uint *)(local_res18 + -0x10);
LAB_181327fca:
      if ((uVar7 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_70 + -0x10) = *(int *)(local_70 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      if (*(longlong *)(DAT_1826739f8 + 0x40) == 0) {
LAB_181327f82:
        iVar3 = FUN_1812498b0(lVar2 + 0x18,local_res18,*(undefined1 *)(lVar2 + 0x38),0);
        if (iVar3 < 0) {
          local_70 = local_res18;
          uVar7 = *(uint *)(local_res18 + -0x10);
        }
        else {
          plVar6 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar3);
          local_70 = *plVar6;
          uVar7 = *(uint *)(local_70 + -0x10);
        }
        goto LAB_181327fca;
      }
      iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res18,*(undefined1 *)(DAT_1826739f8 + 0x38),0
                           );
      if (-1 < iVar3) goto LAB_181327f82;
      FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_70,&local_res18,&local_res18);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar8 = (uint *)(local_res18 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    FUN_18049c4e0(&local_res20,"New Folder");
    lVar2 = DAT_1826739f8;
    local_30 = &DAT_182673984;
    do {
      LOCK();
      uVar7 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar7 != 0);
    if (DAT_1826739f8 == 0) {
      local_78 = local_res20;
      uVar7 = *(uint *)(local_res20 + -0x10);
LAB_1813280b3:
      if ((uVar7 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      if (*(longlong *)(DAT_1826739f8 + 0x40) == 0) {
LAB_18132806b:
        iVar3 = FUN_1812498b0(lVar2 + 0x18,local_res20,*(undefined1 *)(lVar2 + 0x38),0);
        if (iVar3 < 0) {
          local_78 = local_res20;
          uVar7 = *(uint *)(local_res20 + -0x10);
        }
        else {
          plVar6 = (longlong *)FUN_181249970(lVar2 + 0x28,iVar3);
          local_78 = *plVar6;
          uVar7 = *(uint *)(local_78 + -0x10);
        }
        goto LAB_1813280b3;
      }
      iVar3 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,*(undefined1 *)(DAT_1826739f8 + 0x38),0
                           );
      if (-1 < iVar3) goto LAB_18132806b;
      FUN_181234570(*(undefined8 *)(lVar2 + 0x40),&local_78,&local_res20,&local_res20);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar8 = (uint *)(local_res20 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    FUN_1813469b0(2,&local_78,&local_70,&local_48);
    puVar8 = (uint *)(local_78 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    puVar8 = (uint *)(local_70 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar7 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar9 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar7;
      if (bVar9) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  FUN_18132e120(*(undefined8 *)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0xb0) + 0xe0));
  puVar8 = (uint *)(local_60 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
LAB_1813281b2:
  puVar8 = (uint *)(local_68 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return;
}



############ FUN_ 18132b650 size=982 ############

longlong * FUN_18132b650(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  longlong lVar5;
  int iVar6;
  uint uVar7;
  uint *puVar8;
  longlong **pplVar9;
  longlong *local_res8;
  longlong *local_res10;
  longlong *local_res18;
  longlong *local_res20;
  longlong local_60;
  longlong *local_58;
  longlong *local_50;
  undefined8 local_48;
  undefined4 *local_40;
  undefined4 *local_38;
  
  local_48 = 0xfffffffffffffffe;
  uVar7 = *(uint *)(param_1 + 0xf0);
  local_res10 = param_2;
  if ((uVar7 >> 1 & 1) == 0) {
    FUN_18049c4e0(&local_60,&DAT_1821e3e9c,uVar7,param_4,0);
    FUN_1812344e0(&local_58,&local_60);
    puVar8 = (uint *)(local_60 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    pplVar9 = &local_58;
    bVar4 = false;
    bVar3 = false;
    bVar2 = false;
    bVar1 = true;
  }
  else {
    if ((uVar7 & 8) == 0) {
      FUN_18049c4e0(&local_res8,&DAT_1821e3ea4,uVar7,param_4,0);
      lVar5 = DAT_1826739f8;
      local_38 = &DAT_182673984;
      do {
        LOCK();
        uVar7 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar7 != 0);
      if (DAT_1826739f8 == 0) {
        local_res18 = local_res8;
        if ((*(uint *)(local_res8 + -2) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res8 + -2) = (int)local_res8[-2] + 1;
          UNLOCK();
        }
      }
      else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
              (iVar6 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res8,
                                     *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar6)) {
        iVar6 = FUN_1812498b0(lVar5 + 0x18,local_res8,*(undefined1 *)(lVar5 + 0x38),0);
        if (iVar6 < 0) {
          local_res18 = local_res8;
          uVar7 = *(uint *)(local_res8 + -2);
        }
        else {
          local_res18 = (longlong *)FUN_181249970(lVar5 + 0x28,iVar6);
          local_res18 = (longlong *)*local_res18;
          uVar7 = *(uint *)(local_res18 + -2);
        }
        if ((uVar7 & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res18 + -2) = (int)local_res18[-2] + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(*(undefined8 *)(lVar5 + 0x40),&local_res18,&local_res8,&local_res8);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar8 = (uint *)(local_res8 + -2);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      pplVar9 = &local_res18;
      bVar4 = true;
      bVar2 = false;
    }
    else {
      FUN_18049c4e0(&local_res10,"Choose",uVar7,param_4,0);
      lVar5 = DAT_1826739f8;
      local_40 = &DAT_182673984;
      do {
        LOCK();
        uVar7 = DAT_182673984 & 1;
        DAT_182673984 = DAT_182673984 | 1;
        UNLOCK();
      } while (uVar7 != 0);
      if (DAT_1826739f8 == 0) {
        local_res20 = local_res10;
        if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
          UNLOCK();
        }
      }
      else if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
              (iVar6 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res10,
                                     *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar6)) {
        iVar6 = FUN_1812498b0(lVar5 + 0x18,local_res10,*(undefined1 *)(lVar5 + 0x38),0);
        if (iVar6 < 0) {
          local_res20 = local_res10;
          uVar7 = *(uint *)(local_res10 + -2);
        }
        else {
          local_res20 = (longlong *)FUN_181249970(lVar5 + 0x28,iVar6);
          local_res20 = (longlong *)*local_res20;
          uVar7 = *(uint *)(local_res20 + -2);
        }
        if ((uVar7 & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -2) = (int)local_res20[-2] + 1;
          UNLOCK();
        }
      }
      else {
        FUN_181234570(*(undefined8 *)(lVar5 + 0x40),&local_res20,&local_res10,&local_res10);
      }
      LOCK();
      DAT_182673984 = 0;
      UNLOCK();
      puVar8 = (uint *)(local_res10 + -2);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      pplVar9 = &local_res20;
      bVar4 = false;
      bVar2 = true;
    }
    local_50 = *pplVar9;
    *pplVar9 = (longlong *)&DAT_1821dbf98;
    pplVar9 = &local_50;
    bVar3 = true;
    bVar1 = false;
  }
  *param_2 = (longlong)*pplVar9;
  *pplVar9 = (longlong *)&DAT_1821dbf98;
  if ((bVar1) && (puVar8 = (uint *)(local_58 + -2), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((bVar3) && (puVar8 = (uint *)(local_50 + -2), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((bVar4) && (puVar8 = (uint *)(local_res18 + -2), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((bVar2) && (puVar8 = (uint *)(local_res20 + -2), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar7 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return param_2;
}



############ FUN_ 1813ad020 size=691 ############

undefined8 FUN_1813ad020(longlong *param_1)

{
  undefined8 *puVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  longlong *plVar5;
  byte *pbVar6;
  uint *puVar7;
  byte *pbVar8;
  undefined8 uVar9;
  undefined8 *puVar10;
  byte *pbVar11;
  byte *local_res8;
  byte *local_res10;
  char *local_res18;
  char *local_res20;
  longlong local_58;
  undefined8 local_50;
  undefined8 local_48;
  
  local_50 = 0xfffffffffffffffe;
  FUN_18049c4e0(&local_res10,&DAT_1821e3d9c);
  FUN_18049c4e0(&local_res8,"CueNote");
  FUN_18049c4e0(&local_58,"Identifier");
  puVar10 = (undefined8 *)*param_1;
  puVar1 = puVar10 + *(int *)((longlong)param_1 + 0xc);
  pbVar11 = local_res8;
  pbVar8 = local_res10;
joined_r0x0001813ad088:
  if (puVar10 != puVar1) {
    iVar3 = 0;
    pbVar6 = pbVar11;
LAB_1813ad0a5:
    do {
      bVar2 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar6 & 0xc0) == 0x80) {
          do {
            pbVar6 = pbVar6 + 1;
          } while ((*pbVar6 & 0xc0) == 0x80);
          iVar3 = iVar3 + 1;
          goto LAB_1813ad0a5;
        }
      }
      else if (bVar2 == 0) goto LAB_1813ad0da;
      iVar3 = iVar3 + 1;
    } while( true );
  }
  uVar9 = 0;
LAB_1813ad24a:
  puVar7 = (uint *)(local_58 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(local_res8 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(local_res10 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return uVar9;
LAB_1813ad0da:
  iVar3 = FUN_18049da40(*puVar10,pbVar11,iVar3);
  if (iVar3 != 0) {
    iVar3 = 0;
    pbVar6 = pbVar8;
LAB_1813ad0f5:
    do {
      bVar2 = *pbVar6;
      pbVar6 = pbVar6 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar6 & 0xc0) == 0x80) {
          do {
            pbVar6 = pbVar6 + 1;
          } while ((*pbVar6 & 0xc0) == 0x80);
          iVar3 = iVar3 + 1;
          goto LAB_1813ad0f5;
        }
      }
      else if (bVar2 == 0) goto LAB_1813ad12c;
      iVar3 = iVar3 + 1;
    } while( true );
  }
  goto LAB_1813ad23b;
LAB_1813ad12c:
  iVar3 = FUN_18049da40(*puVar10,pbVar8,iVar3);
  if ((iVar3 == 0) && (iVar3 = FUN_181249270(puVar10), -1 < iVar3)) {
    FUN_18049c4e0(&local_res20,&DAT_1821e3e54);
    local_48 = *puVar10;
    iVar3 = FUN_1812498b0(param_1,local_48,(char)param_1[4],0);
    if (iVar3 < 0) {
      local_res18 = local_res20;
      puVar7 = (uint *)(local_res20 + -0x10);
      uVar4 = *puVar7;
    }
    else {
      plVar5 = (longlong *)FUN_181249970(param_1 + 2);
      local_res18 = (char *)*plVar5;
      puVar7 = (uint *)(local_res18 + -0x10);
      uVar4 = *puVar7;
    }
    if ((uVar4 & 0x30000000) == 0) {
      LOCK();
      *puVar7 = *puVar7 + 1;
      UNLOCK();
    }
    iVar3 = atoi(local_res18);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_res20 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    pbVar8 = local_res10;
    pbVar11 = local_res8;
    if (iVar3 == 0) {
      uVar9 = 1;
      goto LAB_1813ad24a;
    }
  }
LAB_1813ad23b:
  puVar10 = puVar10 + 1;
  goto joined_r0x0001813ad088;
}



############ FUN_ 1813b5af0 size=213 ############

undefined8 * FUN_1813b5af0(undefined8 *param_1,longlong *param_2,longlong *param_3)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  undefined8 *local_res8;
  
  local_res8 = param_1;
  FUN_18049c4e0(&local_res8,"midi out");
  FUN_18122b770(param_1,&local_res8);
  _Memory = (uint *)(local_res8 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::MidiOutput::vftable;
  lVar2 = *param_2;
  param_1[0x40] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  lVar2 = *param_3;
  param_1[0x41] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  param_1[0x42] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x43));
  param_1[0x49] = 0;
  return param_1;
}



############ FUN_ 1813bfba0 size=475 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_1813bfba0(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  puVar1 = &DAT_18267b1b0;
  if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 0xc)
      < DAT_18267b1a8) {
    _Init_thread_header(&DAT_18267b1a8);
    if (DAT_18267b1a8 == -1) {
      FUN_18049c4e0(&DAT_18267b1b0,"Error");
      DAT_18267b1b8 = 0xffcc0000;
      FUN_18049c4e0(&DAT_18267b1c0,"Comment");
      DAT_18267b1c8 = 0xff3c3c3c;
      FUN_18049c4e0(&DAT_18267b1d0,"Keyword");
      _DAT_18267b1d8 = 0xff0000cc;
      FUN_18049c4e0(&DAT_18267b1e0,"Operator");
      _DAT_18267b1e8 = 0xff225500;
      FUN_18049c4e0(&DAT_18267b1f0,"Identifier");
      _DAT_18267b1f8 = 0xff000000;
      FUN_18049c4e0(&DAT_18267b200,"Integer");
      _DAT_18267b208 = 0xff880000;
      FUN_18049c4e0(&DAT_18267b210,"Float");
      _DAT_18267b218 = 0xff885500;
      FUN_18049c4e0(&DAT_18267b220,"String");
      _DAT_18267b228 = 0xff990099;
      FUN_18049c4e0(&DAT_18267b230,"Bracket");
      _DAT_18267b238 = 0xff000055;
      FUN_18049c4e0(&DAT_18267b240,"Punctuation");
      _DAT_18267b248 = 0xff004400;
      atexit((_func_5014 *)&LAB_181a4bc30);
      _Init_thread_footer(&DAT_18267b1a8);
    }
  }
  *param_2 = 0;
  param_2[1] = 0;
  do {
    FUN_1813c0890(param_2,puVar1,*(undefined4 *)(puVar1 + 8),param_4,uVar2);
    puVar1 = puVar1 + 0x10;
  } while (puVar1 != &DAT_18267b250);
  return param_2;
}



############ FUN_ 1813c0020 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813c0020(undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  uint *_Memory;
  char **ppcVar2;
  undefined1 auStack_e8 [32];
  undefined4 local_c8;
  undefined4 local_c4;
  longlong local_c0 [2];
  undefined8 *local_b0;
  char *local_a8;
  undefined4 local_a0 [2];
  char *local_98;
  undefined4 local_90;
  char *local_88;
  undefined4 local_80;
  char *local_78;
  undefined4 local_70;
  char *local_68;
  undefined4 local_60;
  char *local_58;
  undefined4 local_50;
  char *local_48;
  undefined4 local_40;
  char *local_38;
  undefined4 local_30;
  char *local_28;
  undefined4 local_20;
  char *local_18 [2];
  
  local_c0[1] = 0xfffffffffffffffe;
  local_18[0] = (char *)(DAT_182615970 ^ (ulonglong)auStack_e8);
  local_a8 = "Error";
  local_a0[0] = 0xffcc0000;
  local_98 = "Comment";
  local_90 = 0xff00aa00;
  local_88 = "Keyword";
  local_80 = 0xff0000cc;
  local_78 = "Operator";
  local_70 = 0xff225500;
  local_68 = "Identifier";
  local_60 = 0xff000000;
  local_58 = "String";
  local_50 = 0xff990099;
  local_48 = "Bracket";
  local_40 = 0xff000055;
  local_38 = "Punctuation";
  local_30 = 0xff004400;
  local_28 = "Preprocessor Text";
  local_20 = 0xff660000;
  *param_2 = 0;
  param_2[1] = 0;
  local_c4 = 1;
  ppcVar2 = &local_a8;
  local_b0 = param_2;
  do {
    FUN_18049c4e0(local_c0,*ppcVar2);
    local_c8 = *(undefined4 *)(ppcVar2 + 1);
    FUN_1813c0890(param_2,local_c0,local_c8);
    _Memory = (uint *)(local_c0[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    ppcVar2 = ppcVar2 + 2;
  } while (ppcVar2 != local_18);
}



############ FUN_ 1813c01d0 size=405 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1813c01d0(undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  uint *_Memory;
  char **ppcVar2;
  undefined1 auStack_108 [32];
  undefined4 local_e8;
  undefined4 local_e4;
  longlong local_e0 [2];
  undefined8 *local_d0;
  char *local_c8;
  undefined4 local_c0 [2];
  char *local_b8;
  undefined4 local_b0;
  char *local_a8;
  undefined4 local_a0;
  char *local_98;
  undefined4 local_90;
  char *local_88;
  undefined4 local_80;
  char *local_78;
  undefined4 local_70;
  char *local_68;
  undefined4 local_60;
  char *local_58;
  undefined4 local_50;
  char *local_48;
  undefined4 local_40;
  char *local_38;
  undefined4 local_30;
  char *local_28;
  undefined4 local_20;
  char *local_18 [2];
  
  local_e0[1] = 0xfffffffffffffffe;
  local_18[0] = (char *)(DAT_182615970 ^ (ulonglong)auStack_108);
  local_c8 = "Error";
  local_c0[0] = 0xffcc0000;
  local_b8 = "Comment";
  local_b0 = 0xff00aa00;
  local_a8 = "Keyword";
  local_a0 = 0xff0000cc;
  local_98 = "Operator";
  local_90 = 0xff225500;
  local_88 = "Identifier";
  local_80 = 0xff000000;
  local_78 = "Integer";
  local_70 = 0xff880000;
  local_68 = "Float";
  local_60 = 0xff885500;
  local_58 = "String";
  local_50 = 0xff990099;
  local_48 = "Bracket";
  local_40 = 0xff000055;
  local_38 = "Punctuation";
  local_30 = 0xff004400;
  local_28 = "Preprocessor Text";
  local_20 = 0xff660000;
  *param_2 = 0;
  param_2[1] = 0;
  local_e4 = 1;
  ppcVar2 = &local_c8;
  local_d0 = param_2;
  do {
    FUN_18049c4e0(local_e0,*ppcVar2);
    local_e8 = *(undefined4 *)(ppcVar2 + 1);
    FUN_1813c0890(param_2,local_e0,local_e8);
    _Memory = (uint *)(local_e0[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    ppcVar2 = ppcVar2 + 2;
  } while (ppcVar2 != local_18);
}



############ FUN_ 1813c1400 size=936 ############

void FUN_1813c1400(longlong param_1,undefined8 param_2)

{
  longlong lVar1;
  bool bVar2;
  int *piVar3;
  uint uVar4;
  uint *puVar5;
  longlong lVar6;
  undefined8 uVar7;
  longlong lVar8;
  longlong local_res8;
  undefined1 local_res20 [8];
  longlong local_90;
  undefined1 local_88 [8];
  longlong local_80;
  undefined1 local_78 [8];
  longlong local_70;
  undefined1 local_68 [8];
  longlong local_60;
  undefined1 local_58 [8];
  longlong local_50;
  undefined1 local_48 [8];
  longlong local_40;
  undefined1 local_38 [8];
  undefined8 local_30;
  undefined1 local_28 [16];
  
  local_30 = 0xfffffffffffffffe;
  if ((((*(int *)(param_1 + 0x128) == *(int *)(param_1 + 0x140)) &&
       (*(int *)(param_1 + 300) == *(int *)(param_1 + 0x144))) &&
      (*(int *)(param_1 + 0x130) == *(int *)(param_1 + 0x148))) &&
     (*(longlong *)(param_1 + 0x120) == *(longlong *)(param_1 + 0x138))) {
    bVar2 = true;
  }
  else {
    bVar2 = false;
  }
  if ((bVar2) || (*(char *)(param_1 + 0xf8) != '\0')) {
    uVar7 = 0;
  }
  else {
    uVar7 = 1;
  }
  FUN_18049c4e0(&local_res8,&DAT_1821e4a24);
  FUN_1812344e0(local_res20,&local_res8);
  puVar5 = (uint *)(local_res8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1813486a0(param_2,0x1003,local_res20,uVar7,0);
  FUN_18049c4e0(&local_90,&DAT_1822635f4);
  FUN_1812344e0(local_88,&local_90);
  puVar5 = (uint *)(local_90 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  piVar3 = (int *)(**(code **)(*(longlong *)(param_1 + 0xc0) + 0x10))
                            ((longlong *)(param_1 + 0xc0),local_28);
  FUN_1813486a0(param_2,0x1004,local_88,*piVar3 != piVar3[1],0);
  FUN_18049c4e0(&local_80,"Paste");
  FUN_1812344e0(local_78,&local_80);
  puVar5 = (uint *)(local_80 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1813486a0(param_2,0x1005,local_78,*(char *)(param_1 + 0xf8) == '\0',0);
  FUN_18049c4e0(&local_70,"Delete");
  FUN_1812344e0(local_68,&local_70);
  puVar5 = (uint *)(local_70 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1813486a0(param_2,0x1002,local_68,*(char *)(param_1 + 0xf8) == '\0',0);
  FUN_181348300(param_2);
  FUN_18049c4e0(&local_60,"Select All");
  FUN_1812344e0(local_58,&local_60);
  puVar5 = (uint *)(local_60 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1813486a0(param_2,0x1006,local_58,1,0);
  FUN_181348300(param_2);
  FUN_18049c4e0(&local_50,&DAT_1822676a4);
  FUN_1812344e0(local_48,&local_50);
  puVar5 = (uint *)(local_50 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  lVar1 = *(longlong *)(param_1 + 200);
  uVar4 = *(int *)(lVar1 + 0x8c) - 1;
  lVar8 = 0;
  lVar6 = lVar8;
  if (uVar4 < *(uint *)(lVar1 + 100)) {
    lVar6 = *(longlong *)(*(longlong *)(lVar1 + 0x58) + (longlong)(int)uVar4 * 8);
  }
  FUN_1813486a0(param_2,0x1008,local_48,lVar6 != 0,0);
  FUN_18049c4e0(&local_40,&DAT_182267644);
  FUN_1812344e0(local_38,&local_40);
  puVar5 = (uint *)(local_40 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar4 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  lVar1 = *(longlong *)(param_1 + 200);
  if (*(uint *)(lVar1 + 0x8c) < *(uint *)(lVar1 + 100)) {
    lVar8 = *(longlong *)(*(longlong *)(lVar1 + 0x58) + (longlong)(int)*(uint *)(lVar1 + 0x8c) * 8);
  }
  FUN_1813486a0(param_2,0x1009,local_38,lVar8 != 0,0);
  return;
}



############ FUN_ 1813c4800 size=666 ############

void FUN_1813c4800(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  bool bVar3;
  wint_t _C;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined8 uVar8;
  uint *_Memory;
  int iVar9;
  longlong lVar10;
  int iVar11;
  undefined4 local_res8;
  undefined4 uStackX_c;
  longlong local_res10;
  longlong *local_60;
  int local_58;
  undefined8 local_54;
  char local_4c;
  undefined1 local_48 [20];
  char local_34;
  
  iVar9 = 0;
  iVar6 = 0;
  local_res8 = 0;
  if (*(char *)(param_1 + 0xf8) != '\0') {
    return;
  }
  plVar1 = *(longlong **)(param_1 + 0x108);
  if ((*(uint *)(param_1 + 0x114) < *(uint *)((longlong)plVar1 + 0xc)) &&
     (lVar10 = *(longlong *)(*plVar1 + (longlong)(int)*(uint *)(param_1 + 0x114) * 8), lVar10 != 0))
  {
    _C = FUN_180493050(lVar10,*(undefined4 *)(param_1 + 0x118),param_3,param_4,0xfffffffffffffffe);
  }
  else {
    _C = 0;
  }
  iVar4 = iswspace(_C);
  if (iVar4 != 0) {
    local_60 = *(longlong **)(param_1 + 0x108);
    local_58 = *(int *)(param_1 + 0x110);
    local_54._0_4_ = *(int *)(param_1 + 0x114);
    local_54._4_4_ = *(int *)(param_1 + 0x118);
    local_4c = '\0';
    FUN_1813c8260(&local_60);
    iVar4 = 1;
    if ((int)local_54 < *(int *)((longlong)local_60 + 0xc)) {
      lVar10 = *(longlong *)(*local_60 + (longlong)(int)local_54 * 8);
      if (local_54._4_4_ + 1 < *(int *)(lVar10 + 0xc)) {
        iVar4 = 1;
        if (*(int *)(lVar10 + 0x10) + 1 <= local_54._4_4_ + 1) {
          iVar4 = 2;
        }
      }
    }
    iVar4 = local_58 + iVar4;
    local_54 = 0;
    local_58 = 0;
    if (0 < iVar4) {
      iVar11 = *(int *)((longlong)local_60 + 0xc);
      if (3 < iVar11) {
        do {
          iVar5 = (iVar9 + 1 + iVar11) / 2;
          iVar6 = iVar5;
          if (*(int *)(*(longlong *)(*local_60 + (longlong)iVar5 * 8) + 8) <= iVar4) {
            iVar6 = iVar11;
            iVar9 = iVar5;
          }
          iVar11 = iVar6;
        } while (3 < iVar11 - iVar9);
      }
      iVar6 = 0;
      for (lVar10 = (longlong)iVar9; lVar10 < iVar11; lVar10 = lVar10 + 1) {
        lVar2 = *(longlong *)(*local_60 + lVar10 * 8);
        iVar5 = iVar4 - *(int *)(lVar2 + 8);
        if ((-1 < iVar5) && ((iVar5 < *(int *)(lVar2 + 0xc) || (iVar9 == iVar11 + -1)))) {
          local_58 = *(int *)(lVar2 + 0x10);
          if (iVar5 < *(int *)(lVar2 + 0x10)) {
            local_58 = iVar5;
          }
          local_54 = CONCAT44(local_58,iVar9);
          local_58 = local_58 + *(int *)(lVar2 + 8);
          iVar6 = iVar9;
        }
        iVar9 = iVar9 + 1;
      }
    }
    iVar9 = 1;
    if (*(int *)(param_1 + 0x114) == iVar6) {
      bVar3 = true;
      goto LAB_1813c4995;
    }
  }
  bVar3 = false;
LAB_1813c4995:
  if ((iVar9 != 0) && (local_4c != '\0')) {
    FUN_1813c8030(&local_60,0);
  }
  if (bVar3) {
    uVar8 = FUN_1813c77b0();
    FUN_1813c51c0(param_1,uVar8,0);
    if (local_34 != '\0') {
      FUN_1813c8030(local_48,0);
    }
  }
  if (*(char *)(param_1 + 0xf9) == '\0') {
    FUN_18049c4e0(&local_res8,&DAT_1821e49ac);
    (**(code **)(*(longlong *)(param_1 + 0xc0) + 0x30))((longlong *)(param_1 + 0xc0),&local_res8);
    _Memory = (uint *)(CONCAT44(uStackX_c,local_res8) + -0x10);
    uVar7 = *_Memory;
  }
  else {
    iVar6 = FUN_1813c0b30(param_1,*(undefined4 *)(param_1 + 0x114),*(undefined4 *)(param_1 + 0x118))
    ;
    uVar8 = FUN_181231fc0(&local_res10,&DAT_1821e4994,
                          *(int *)(param_1 + 0xdc) - iVar6 % *(int *)(param_1 + 0xdc));
    (**(code **)(*(longlong *)(param_1 + 0xc0) + 0x30))((longlong *)(param_1 + 0xc0),uVar8);
    _Memory = (uint *)(local_res10 + -0x10);
    uVar7 = *_Memory;
  }
  if ((uVar7 & 0x30000000) == 0) {
    LOCK();
    uVar7 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1814d51f0 size=360 ############

undefined8 *
FUN_1814d51f0(undefined8 *param_1,undefined8 param_2,longlong *param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  longlong local_res18;
  
  FUN_18049c4e0(&local_res18,"shortcut",param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::Component::vftable;
  param_1[1] = local_res18;
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  param_1[2] = &DAT_1821dbf98;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  *(undefined4 *)(param_1 + 0x15) = 0;
  *(undefined1 *)((longlong)param_1 + 0xac) = 0;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  *param_1 = Shortcut::vftable;
  param_1[0x16] = Shortcut::vftable;
  FUN_180579620(param_1 + 0x19,param_2);
  lVar2 = *param_3;
  param_1[0x1c] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  FUN_181252d20(param_1 + 0x1d);
  return param_1;
}



############ FUN_ 1813e2a60 size=33 ############

undefined8
.?AVSoothe2ModuleDecryptor@@::vtbl___AVSoothe2ModuleDecryptor__
          (undefined8 param_1,undefined8 param_2)

{
  FUN_18049c4e0(param_2,
                "lBnBKPSzl9hjqL9t6KtsEn5XFT0HQWftYA4e32/dbJSqTszNkf71S7wl8xnrBCTvwaU9YAhT8oxpw3tNwx+UoUBhEj2EuucDWJ/lfs5lip3iNTdOEArLWy3vEz1S9qkJ/Z9kMksfxEt3sOhyCX/j+qbkcqKsscs9aq+/7xGcX9Hk/DunFHeRV5vgJLakKAKm3yA+b2dKqNvCw2DTtnVSHRYJ/48vDmpp9flpJGZtIMZ0HxvdWac9o7bxN2476ZJcHUjsTWyB5WOWbxGkGSSvDmHyzVd/q5ecwBfkUEn3Ev1pfL25plhN9ciUXX0cLRSoFqHefaAOH9QbfMjzww0DAensSgvMmqA5B6BYP+Pri/nTu7rAMwTRn5pVcTD1zTs40GfCO51gf/0u//L5kPSffrFxyiyAwgt3ZtAPLh+lLG9BIj1x+NyYh3HKTtq6cMKIqOYZtiAiuqeeMoj13UeIowN0fCqRLZ1AW6PB5RCaCtZ3KcD9QAWMmdByMXZ0pUldRCoB+L8XOXBNzc2jG46SzeLS+QKTaPnzgPBKaxJYGX2ww46+Pm27mJnMJq5WCvzicIufjnZGhY2myql3QG49M/rCQ0YQjIOjx5eFyAk1h2X2dDT4xveIxK+CU8mLVu1N6smldr3RQN7oOOFJ8QVvcJSn0MfdLldhG4k/8psbP1D0cRm8xiZYDoVWXzpNdixn"
               );
  return param_2;
}



############ FUN_ 181489570 size=813 ############

/* WARNING: Removing unreachable block (ram,0x000181489747) */
/* WARNING: Removing unreachable block (ram,0x00018148976f) */
/* WARNING: Removing unreachable block (ram,0x0001814896ef) */
/* WARNING: Removing unreachable block (ram,0x00018148965f) */
/* WARNING: Removing unreachable block (ram,0x0001814896fd) */
/* WARNING: Removing unreachable block (ram,0x000181489783) */
/* WARNING: Removing unreachable block (ram,0x0001814897b2) */

void FUN_181489570(undefined8 *param_1,undefined8 param_2)

{
  undefined1 auStack_158 [92];
  undefined4 local_fc;
  undefined4 local_f4;
  undefined8 *local_b8;
  undefined8 local_a0;
  undefined8 *local_98;
  ulonglong local_38;
  
  local_a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_158;
  local_b8 = param_1;
  local_98 = param_1;
  FUN_18056b680();
  *param_1 = PresetPanelComponent::vftable;
  param_1[0x16] = PresetPanelComponent::vftable;
  param_1[0x19] = param_2;
  FUN_18049c4e0(param_1 + 0x1a,"");
  *(undefined2 *)(param_1 + 0x1b) = 0;
  local_fc = 0x140;
  local_f4 = 0x700;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) | 0x20;
  (*(code *)&LAB_1814e4d88)
            (0x700,(uint)&stack0x00000000 & 0x12ff,&LAB_1814e4d88,0,&DAT_1814898b1,&stack0x00000000)
  ;
  return;
}



############ FUN_ 18146fc30 size=106 ############

void FUN_18146fc30(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res8 [4];
  
  FUN_18049c4e0(local_res8,"delete preset",param_3,param_4,0xfffffffffffffffe);
  FUN_181347ea0(*(undefined8 *)(param_1 + 0x388),local_res8);
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined1 *)(param_1 + 0x390) = 0;
  return;
}



############ FUN_ 1814700d0 size=264 ############

void FUN_1814700d0(longlong param_1,longlong param_2)

{
  uint uVar1;
  code *pcVar2;
  char cVar3;
  uint *_Memory;
  longlong local_res8;
  
  FUN_18049c4e0(&local_res8,"delete preset");
  FUN_181347ea0(*(undefined8 *)(param_1 + 0x478),&local_res8);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined1 *)(param_1 + 0x480) = 0;
  uVar1 = *(uint *)(param_2 + 0x10);
  cVar3 = FUN_1815fb4e0(param_1 + 0x108);
  if (cVar3 == '\0') {
    if ((uVar1 >> 5 & 1) != 0) {
      pcVar2 = *(code **)(**(longlong **)(param_1 + 0x448) + 0x48);
      if (pcVar2 == FUN_1811765f0) {
        cVar3 = (char)(*(longlong **)(param_1 + 0x448))[5];
      }
      else {
        cVar3 = (*pcVar2)();
      }
      if (cVar3 == '\0') {
        FUN_1815fe690(param_1 + 0x108,1,0,0,0);
        return;
      }
    }
    FUN_181483910(param_1,param_2);
  }
  else {
    FUN_1815fceb0(param_1 + 0x108);
  }
  return;
}



############ FUN_ 1815fe690 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1815fe690(longlong *param_1,undefined4 param_2,undefined4 param_3,undefined8 param_4,
                  uint param_5)

{
  longlong lVar1;
  undefined8 uVar2;
  int iVar3;
  undefined1 auStack_88 [32];
  uint local_68;
  undefined8 local_60;
  undefined8 local_58;
  longlong local_48 [2];
  longlong *local_38;
  undefined **local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_48[1] = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  iVar3 = *(int *)((longlong)param_1 + 0x33c);
  while (0 < iVar3) {
    iVar3 = iVar3 + -1;
    if ((*(int *)((longlong)param_1 + 0x33c) <= iVar3) &&
       (iVar3 = *(int *)((longlong)param_1 + 0x33c) + -1, iVar3 < 0)) break;
    FUN_180526060(*(undefined8 *)(param_1[0x66] + (longlong)iVar3 * 8),param_1);
  }
  lVar1 = param_1[0x1a];
  (**(code **)(*param_1 + 0x58))(param_1,1);
  FUN_181343cc0(lVar1,param_1,0xffffffff);
  local_68 = param_5;
  FUN_1815b64a0(param_1,param_2,param_3,param_4);
  *(undefined2 *)(param_1 + 0x65) = 0x101;
  FUN_181341570(param_1[0x1a],param_1,1);
  if (*(char *)((longlong)param_1 + 0x32a) != '\0') {
    local_38 = local_48;
    local_30 = &PTR_vftable_18262b560;
    FUN_18049c4e0(local_28,"CloudyPopupMenu");
    local_48[0] = DAT_182674300;
    if (DAT_182674300 != 0) {
      LOCK();
      *(int *)(DAT_182674300 + 8) = *(int *)(DAT_182674300 + 8) + 1;
      UNLOCK();
    }
    uVar2 = FUN_18133a120(param_1);
    local_58 = 0;
    local_60 = 0;
    local_68 = local_68 & 0xffffff00;
    FUN_18133a190(uVar2,&local_30,param_1,local_48);
    (**(code **)(*local_30 + 0xb0))(local_30,local_28);
  }
}



############ FUN_ 18148b650 size=350 ############

undefined8
FUN_18148b650(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  byte bVar1;
  uint uVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  byte *pbVar5;
  undefined8 uVar6;
  uint *puVar7;
  int iVar8;
  undefined1 local_28 [8];
  byte *local_20;
  longlong *local_18;
  undefined8 local_10;
  
  local_10 = 0xfffffffffffffffe;
  plVar3 = (longlong *)FUN_1812dc020(param_3,local_28);
  local_18 = plVar3;
  puVar4 = (undefined8 *)FUN_181232d30(plVar3);
  local_20 = (byte *)*puVar4;
  _Memory = (uint *)(local_20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  puVar7 = (uint *)(*plVar3 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  iVar8 = 0;
  pbVar5 = local_20;
  do {
    while( true ) {
      bVar1 = *pbVar5;
      pbVar5 = pbVar5 + 1;
      if ((char)bVar1 < '\0') break;
      if (bVar1 == 0) {
        if (iVar8 < 0x14) {
          uVar6 = FUN_181248c30(param_4,&local_18);
          FUN_1812489f0(uVar6,param_2,&DAT_182360f70);
          puVar7 = (uint *)(local_18 + -2);
          if ((*puVar7 & 0x30000000) == 0) {
            LOCK();
            uVar2 = *puVar7;
            *puVar7 = *puVar7 - 1;
            UNLOCK();
            if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar7);
            }
          }
          uVar2 = *_Memory;
        }
        else {
          FUN_18049c4e0(param_2,&DAT_1821d918f);
          uVar2 = *_Memory;
        }
        if ((uVar2 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        return param_2;
      }
LAB_18148b717:
      iVar8 = iVar8 + 1;
    }
    if ((*pbVar5 & 0xc0) != 0x80) goto LAB_18148b717;
    do {
      pbVar5 = pbVar5 + 1;
    } while ((*pbVar5 & 0xc0) == 0x80);
    iVar8 = iVar8 + 1;
  } while( true );
}



############ FUN_ 1814a3e70 size=761 ############

/* WARNING: Instruction at (ram,0x0001814a4174) overlaps instruction at (ram,0x0001814a416f)
    */
/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Removing unreachable block (ram,0x0001814a3f59) */
/* WARNING: Removing unreachable block (ram,0x0001814a3ee3) */
/* WARNING: Removing unreachable block (ram,0x0001814a416f) */
/* WARNING: Removing unreachable block (ram,0x0001814a4163) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

uint FUN_1814a3e70(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  undefined1 *puVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined8 uVar8;
  ulonglong uVar9;
  uint uVar10;
  uint uVar11;
  uint *puVar12;
  longlong *plVar13;
  uint uVar14;
  undefined *puVar15;
  undefined4 *puVar16;
  longlong lVar17;
  longlong lVar18;
  uint uVar19;
  IMAGE_DOS_HEADER *pIVar20;
  ulonglong *puVar21;
  ulonglong *puVar22;
  ulonglong *puVar23;
  IMAGE_DOS_HEADER *pIVar24;
  uint uVar25;
  longlong lVar26;
  uint uVar27;
  int iVar28;
  IMAGE_DOS_HEADER *pIVar29;
  IMAGE_DOS_HEADER *pIVar30;
  uint uVar31;
  ulonglong in_R11;
  word *pwVar32;
  ulonglong uVar33;
  undefined1 uVar34;
  int unaff_retaddr;
  ulonglong auStack_258 [2];
  undefined1 auStack_248 [80];
  undefined8 local_1f8;
  undefined *local_1f0;
  uint local_1e4;
  ulonglong local_1e0;
  longlong lStack_1d8;
  uint uStack_1d0;
  uint uStack_1cc;
  uint uStack_1c8;
  uint uStack_1c4;
  undefined8 local_1b8;
  undefined8 local_1b0;
  uint uStack_1a8;
  uint uStack_1a4;
  int iStack_1a0;
  undefined4 local_19c;
  uint local_198;
  longlong local_190;
  undefined4 uStack_188;
  uint uStack_184;
  undefined1 local_180 [8];
  ulonglong local_178 [3];
  undefined4 auStack_160 [2];
  undefined *puStack_158;
  longlong lStack_150;
  undefined *local_148;
  code *pcStack_140;
  undefined4 uStack_138;
  longlong local_120;
  int iStack_118;
  int iStack_114;
  int iStack_110;
  uint uStack_10c;
  undefined4 uStack_108;
  undefined4 uStack_104;
  undefined8 local_100;
  undefined8 local_f8;
  undefined8 local_f0;
  undefined1 local_e8 [72];
  int iStack_a0;
  int iStack_9c;
  int iStack_98;
  uint uStack_94;
  char cStack_80;
  char cStack_7f;
  word wStack_7e;
  uint uStack_58;
  uint uStack_54;
  ulonglong local_30;
  
  puVar23 = (ulonglong *)auStack_248;
  local_f0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_248;
  uVar6 = (uint)&stack0x00000000 & 0x7ff;
  uVar25 = (uint)&stack0x00000000 & 0xfff;
  uVar6 = (uVar6 + 1) * uVar6 + 0x5ea1 & 0x80000001 | (uVar25 * uVar25 * 0x10 + 4) % 0x13;
  local_198 = ((int)(-uVar6 | uVar6) >> 0x1f) * -0x32e1 ^ 0x3df1;
  uVar33 = 0;
  local_19c = 0xcc0;
  puVar15 = &DAT_1823a44d0;
  if (*(char *)(param_1 + 0x118) != '\0') {
    puVar15 = &DAT_18239afc0;
  }
  local_120 = param_1;
  FUN_18049c4e0(local_178,puVar15);
  uVar8 = FUN_181248710(local_e8,local_178);
  FUN_181248430(uVar8,local_180,0);
  FUN_181248660(local_e8);
  uVar34 = 0xf < local_178[0];
  FUN_1804951e0(local_178[0] - 0x10);
  local_100 = 0;
  local_1b8 = 0;
  local_f8 = 0;
  local_1b0 = 0;
  local_1e4 = 0x811c9e07;
  do {
    uVar9 = 0;
    FUN_1814a436a();
    if ((bool)uVar34) {
      if ((uVar9 & 0x43) == 0) {
        uVar33 = uVar33 ^ in_R11;
      }
      uVar33 = in_R11 ^ uVar33;
    }
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
    uVar34 = 0;
  } while (uVar6 != 0);
  pIVar30 = &IMAGE_DOS_HEADER_180000000;
  local_1e0 = 0;
  local_1f8 = 0xa1b444;
  local_190 = 0x180a1b444;
  local_1f0 = &DAT_180a1cf18;
  do {
                    /* WARNING: Bad instruction - Truncating control flow here */
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uStack_1d0 = 0xff92177;
    uStack_138 = 0x2b;
    puStack_158 = &UNK_1814a41b7;
                    /* WARNING: Call to offcut address within same function */
    func_0x0001814a4147();
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = (uStack_1d0 >> 0xf ^ uStack_1d0) >> 1 & 0x7fff;
  uVar6 = ((uVar6 << 0xf | uVar6) * 2 ^ uStack_1d0) + 0xbe2178c4;
  uVar6 = uVar6 >> 7 | uVar6 * 0x2000000;
  uVar25 = ~((uVar6 & 0x33333333) << 2 | uVar6 >> 2 & 0x33333333);
  uVar6 = (uVar25 >> 0xc ^ uVar25) >> 7 & 0x7ff;
  uVar25 = ((uVar6 << 0xc | uVar6) << 7 ^ uVar25) + 0x5ba18147;
  uVar6 = (uVar25 >> 10 ^ uVar25) & 1;
  uStack_1d0 = ((uVar6 << 10 | uVar6) ^ uVar25) + 0x63e4db8b;
  do {
    plVar13 = &lStack_150;
    puVar16 = auStack_160;
    puVar12 = &uStack_1a8;
    func_0x0001814a61f3();
    *puVar12 = 0xc2cb117a;
    *puVar16 = 0x30;
    *plVar13 = (longlong)&UNK_1814a4286;
    func_0x0001814a3c9a();
    uVar6 = uStack_1d0;
    uVar25 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar25 < 0) {
      uVar25 = (uVar25 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar25 != 0);
  uVar25 = (uStack_1a8 >> 0xc ^ uStack_1a8) >> 9 & 0x7ff;
  uVar25 = uStack_1a8 ^ (uVar25 << 0xc | uVar25) << 9;
  uVar25 = uVar25 >> 2 & 0xcccccccc | uStack_1a8 << 0x1e |
           (uVar25 & 0xccccccc) << 2 | uVar25 >> 0x1e;
  uVar10 = uVar25 << 0x1b | uVar25 >> 5;
  uVar25 = (uVar10 >> 4 | (uVar25 >> 5) << 0x1c) & 0x87878787 |
           (uVar10 << 4 | (uVar25 & 0x1f) >> 1) & 0x78787878;
  uVar25 = (uVar25 << 0x10 | uVar25 >> 0x10) & 0xce0531fa |
           (uVar25 >> 0x10 | uVar25 << 0x10) & 0x31face05;
  uVar10 = ((uVar25 >> 8 | uVar25 << 0x18) & 0xb44bb44b |
           (uVar25 << 8 | uVar25 >> 0x18) & 0x4bb44bb4) + 0x1bb831da;
  uVar25 = (uVar10 >> 0xd ^ uVar10) & 0xfff;
  uVar25 = uVar10 ^ (uVar25 << 0xd | uVar25);
  lStack_150 = ((longlong)(int)(uVar25 >> 4 | uVar25 << 0x1c) & 0xffffffffc3c3c3c3U |
               (ulonglong)((uVar25 << 4 | uVar10 >> 0x1c) & 0x3c3c3c3c)) + lStack_150;
  uStack_1d0 = (uint)uVar33;
  uStack_1a8 = (uint)uVar33;
  *(ulonglong *)(puStack_158 + (longlong)(int)uVar6 + 4) =
       *(longlong *)(puStack_158 + (longlong)(int)uVar6 + 4) +
       (ulonglong)((uint)(*(ulonglong *)(lStack_150 + 4) >> 4) & 0x48c21124);
  do {
    uVar8 = rdtsc();
    uVar25 = (int)uVar8 + (int)((ulonglong)uVar8 >> 0x20) * 8;
    lVar17 = ((ulonglong)uVar25 -
             (((ulonglong)(uVar25 >> 5) | (ulonglong)uVar25 << 0x3b) - 0x29d2c5ca)) * 0x81 +
             0x1ef7db62;
    uVar33 = lVar17 - ((lVar17 * 0x28000 | (ulonglong)(lVar17 * 5) >> 0x31) - 0x576c2e7b);
    uVar9 = uVar33 * 0x8000 | uVar33 >> 0x31;
    uVar9 = uVar9 - (~-((uVar9 << 0x10 | (uVar33 & 0x1ffffffffffff) >> 0x21) + 0x3f5ce3e5) + 1);
    uVar33 = uVar9 * 0x40 | uVar9 >> 0x3a;
    uVar25 = (int)(uVar33 * 9 >> 9) + (int)uVar33 * 8 & 0x49bc7e26;
    uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar10 != 0);
  *(uint *)(puStack_158 + (longlong)(int)uVar6 + 8) =
       *(int *)(puStack_158 + (longlong)(int)uVar6 + 8) + (uVar25 ^ 0xa42305f9);
  *(uint *)(puStack_158 + (longlong)(int)uVar6 + 4) =
       *(int *)(puStack_158 + (longlong)(int)uVar6 + 4) + (uVar25 ^ 0x65204a3a);
  uVar33 = *(ulonglong *)(puStack_158 + (longlong)(int)uVar6 + 4);
  uVar33 = (uVar33 << 0x10 | uVar33 >> 0x30) & 0xfe970168fe970168 |
           (uVar33 >> 0x10 | uVar33 << 0x30) & 0x168fe970168fe97;
  uVar33 = (uVar33 << 1 | (ulonglong)((longlong)uVar33 < 0)) + 0x4980a9f73c8cebe;
  uVar33 = (uVar33 * 0x100 | uVar33 >> 0x38) & 0xf00ff00ff00ff00f |
           (uVar33 >> 8 | uVar33 << 0x38) & 0xff00ff00ff00ff0;
  uVar9 = uVar33 << 0x17 | uVar33 >> 0x29;
  uVar33 = (uVar9 << 8 | (uVar33 & 0x1ffffffffff) >> 0x21) & 0xd728d728d728d728 |
           (uVar9 >> 8 | (uVar33 >> 0x29) << 0x38) & 0x28d728d728d728d7;
  uVar33 = ((uVar33 >> 4 | uVar33 << 0x3c) & 0xe1e1e1e1e1e1e1e1 |
           (uVar33 << 4 | uVar33 >> 0x3c) & 0x1e1e1e1e1e1e1e1e) + 0x2ee7aa0847e7e545;
  uVar33 = uVar33 * 0x2000000 | uVar33 >> 0x27;
  *(ulonglong *)(puStack_158 + (longlong)(int)uVar6 + 4) = uVar33;
  plVar13 = (longlong *)(lStack_150 + 4);
  *plVar13 = *plVar13 + (uVar33 >> 3 & 0xb0122220);
  uStack_1cc = (uint)(*(ulonglong *)(puStack_158 + (longlong)(int)uVar6 + 4) >> 10) & 0x7fffffff;
  local_1f8 = CONCAT44(local_1f8._4_4_,
                       (int)((ulonglong)*(undefined8 *)(puStack_158 + (longlong)(int)uVar6 + 4) >>
                            0x10)) ^ 0x182530fe;
  local_1e0 = *(ulonglong *)(puStack_158 + (longlong)(int)uVar6 + 4) ^ 0x2b14b2fedc3fc8a2;
  lVar17 = 0;
  lStack_1d8 = local_190;
  local_190 = (longlong)local_1f0 - local_190;
  do {
    uStack_188 = 0x872e9273;
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  do {
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uStack_108 = 0xc852d023;
  uStack_104 = 0xf975c1b5;
  uVar6 = (uint)local_1e0 ^ (uint)local_1f8;
  uVar10 = uVar6 & 0x2bfd4af1 ^ (uint)local_1f8;
  uVar6 = uVar6 & 0xd402b50e ^ (uint)local_1f8 ^ uVar10;
  uVar14 = uVar6 & 0xf0f0f0f0 ^ uVar10;
  uVar10 = uVar6 & 0xf0f0f0f ^ uVar10;
  puVar15 = (undefined *)(ulonglong)uVar10;
  uVar6 = (uVar14 >> 6 ^ uVar14) >> 2 & 3;
  uVar25 = (uVar10 >> 0x16 ^ uVar10) >> 5 & 3;
  uVar19 = (uint)(local_1e0 >> 0x20);
  uVar11 = (uVar19 >> 0x14 ^ uVar19) >> 3 & 0x1ff;
  uVar6 = (uVar6 << 6 | uVar6) << 2 ^ uVar14 ^ 0x25a378fb;
  uVar14 = ~(uVar6 & 0x74575030 ^ 0x25a378fb);
  uVar31 = ~(uVar6 & 0x8ba8afcf ^ 0x25a378fb);
  uVar27 = ~((uVar25 << 0x16 | uVar25) << 5 ^ uVar10);
  uVar6 = ~((uVar11 << 0x14 | uVar11) << 3 ^ uVar19);
  uVar10 = (uVar14 << 2 | uVar14 >> 0x1e) & 0x99999999 | (uVar14 >> 2 | uVar14 << 0x1e) & 0x66666666
  ;
  uVar6 = (uVar6 >> 2 | uVar6 << 0x1e) & 0x99999999 | (uVar6 << 2 | uVar6 >> 0x1e) & 0x66666666;
  uVar25 = uVar6 << 5 | uVar6 >> 0x1b;
  uVar6 = uVar25 ^ (uVar10 << 0x15 | uVar10 >> 0xb);
  iStack_118 = (uVar6 & 0x55555555 ^ uVar25) + 0x26edbe0b;
  uVar10 = (uVar31 & 0xf0f0f0) << 4 | uVar31 >> 0x1c;
  pwVar32 = (word *)(ulonglong)uVar10;
  iStack_114 = ((uVar31 >> 4 & 0xf0f0f0f0 | uVar31 << 0x1c | uVar10) >> 2 | (uVar31 >> 0x1c) << 0x1e
               ) + 0xd1b1c41;
  iStack_110 = (((uVar27 >> 8 | uVar27 << 0x18) & 0xdd22dd22 |
                (uVar27 << 8 | uVar27 >> 0x18) & 0x22dd22dd) << 2 | (uVar27 & 0xff) >> 6) +
               0xd1de1f70;
  uVar6 = uVar6 & 0xaaaaaaaa ^ uVar25 ^ 0x724d0b9e;
  uStack_10c = uVar6;
  do {
    uVar8 = rdtsc();
    uStack_184 = (int)uVar8 + (int)((ulonglong)uVar8 >> 0x20) * 8;
    uVar33 = (((ulonglong)(uStack_184 >> 0xc) - 0x2cd96c51) + (ulonglong)uStack_184 * 4) * 0x50002 +
             0x78c8bdbf;
    uVar9 = (uVar33 >> 0xb | uVar33 << 0x35) * 0x5001 + 0x4c9b0de9;
    uVar33 = uVar9 >> 6;
    uVar9 = uVar33 | uVar9 << 0x3a;
    uVar9 = uVar9 ^ (uVar33 * 0x3000 | uVar9 * 3 >> 0x34) - 0xfab2139;
    uVar9 = uVar9 + ((uVar9 * 0x300 | uVar9 * 3 >> 0x38) - 0x7366c1dc);
    uVar6 = ~((uVar6 ^ 0xffffffff) + 1) + 1;
    pwVar32 = (word *)((-(longlong)pwVar32 ^ 0xffffffffffffffffU) + 1);
    uVar25 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar25 < 0) {
      uVar25 = (uVar25 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar25 != 0);
  uStack_1a4 = (uint)(uVar9 - ((uVar9 >> 8) - 0x5ce35e21) >> 0x10) >> 1 ^ uStack_1cc;
  uVar25 = 0xd5d1124f;
  iVar28 = iStack_118;
  iVar4 = iStack_114;
  iVar5 = iStack_110;
  if (uStack_1a4 < 0x404040) {
    do {
      uStack_94 = uVar6;
      iStack_98 = iVar5;
      iStack_9c = iVar4;
      iStack_a0 = iVar28;
      puVar15 = &UNK_1814a4a32;
      iStack_1a0 = -0x368dffb7;
      pwVar32 = (word *)0x0;
      local_148 = &UNK_1814a4a32;
      func_0x0001814a36cd();
      uVar10 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar10 < 0) {
        uVar10 = (uVar10 - 1 | 0xfffffffe) + 1;
      }
      iVar28 = iStack_a0;
      iVar4 = iStack_9c;
      iVar5 = iStack_98;
      uVar6 = uStack_94;
    } while (uVar10 != 0);
    uVar6 = ~((iStack_1a0 << 1 | (uint)(iStack_1a0 < 0)) ^ 0x9909d54d) + 0xfaa3a4c;
    iStack_1a0 = (uVar6 >> 0xb | uVar6 * 0x200000) + 0x71d9b802;
    (*(code *)(local_148 + iStack_1a0))(&iStack_a0,&uStack_58);
    do {
      puVar12 = &uStack_1c8;
                    /* WARNING: Call to offcut address within same function */
      func_0x0001814a4468();
      *puVar12 = 0x75135662;
      uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar6 < 0) {
        uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar6 != 0);
    uVar6 = ~(((uStack_1c8 ^ 0xa0ee6c22) >> 5 | (uStack_1c8 ^ 0xa0ee6c22) << 0x1b) ^ 0x657fe44b);
    uVar6 = (uVar6 << 0x1c | uVar6 >> 4) + 0xa00cc36f;
    uVar6 = (uVar6 >> 0x17 | uVar6 * 0x200) + 0x48c06972;
    uStack_1c8 = uVar6 * 0x80000 | uVar6 >> 0xd;
    iVar28 = 7;
    do {
      uVar6 = (uStack_54 ^ uStack_58) & 0x4efd1df ^ uStack_58;
      uVar10 = (uStack_54 ^ uStack_58) & 0xfb102e20 ^ uStack_58 ^ uVar6;
      uVar11 = ~(uVar10 & 0x54d3484b ^ uVar6);
      uVar10 = uVar11 ^ ~(uVar10 & 0xab2cb7b4 ^ uVar6);
      uVar6 = uVar10 & 0x7b746601 ^ uVar11;
      uVar11 = uVar10 & 0x848b99fe ^ uVar11;
      uVar10 = ((uVar11 << 4 | uVar11 >> 0x1c) & 0xc3c3c3c3 |
               (uVar11 >> 4 | uVar11 << 0x1c) & 0x3c3c3c3c) + 0x36fae1ff;
      uVar11 = ((uVar6 << 0x10 | uVar6 >> 0x10) & 0x96b5694a |
               (uVar6 >> 0x10 | uVar6 << 0x10) & 0x694a96b5) + 0xf365dac8 ^ uVar10;
      uVar6 = uVar11 & 0xa7071cb4 ^ uVar10;
      uVar10 = uVar11 & 0x58f8e34b ^ uVar10;
      uVar6 = uVar6 << 0x18 | uVar6 >> 8;
      uStack_58 = uVar6 + 0xc3118cdd;
      uStack_54 = (uVar10 >> 6 | uVar10 << 0x1a) ^ 0x3825b93f;
      iVar28 = iVar28 + -1;
    } while (-1 < iVar28);
    uVar6 = uVar6 + 0xe8a3b636;
    uVar6 = (uVar6 >> 0xf | uVar6 * 0x20000) + 0xd03b345e;
    uVar6 = ~((uVar6 * 0x20000000 | uVar6 >> 3) + 0xca08bcaf) + 0xd8cc0298;
    if (((uVar6 * 0x400 | uVar6 >> 0x16) ^ 0xec624d7c ^ uStack_1c8) + uStack_54 != (uint)local_1f8)
    {
      do {
        pcStack_140 = FUN_180bc28a0;
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
      FUN_180bc28a0();
      do {
        func_0x0001814a3c9a();
        uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar6 != 0);
    }
  }
  lVar2 = local_190;
  lVar1 = lStack_1d8;
  local_1e0 = 0x8170e655881a51ac;
  local_1f8 = CONCAT44(local_1f8._4_4_,0x881a51ac);
  puVar3 = auStack_248;
  uStack_1c4 = local_1e4;
  if (local_190 == 0) {
code_r0x0001814a4f93:
    *(undefined **)((longlong)puVar23 + -8) = puVar15;
    *(word **)((longlong)puVar23 + -0x10) = pwVar32;
    *(undefined **)((longlong)puVar23 + -0x18) = &UNK_1814a5130;
    *(undefined **)((longlong)puVar23 + -0x20) = &UNK_18146efd2;
    *(undefined **)((longlong)puVar23 + -0x28) = &UNK_1814980ea;
    *(undefined **)((longlong)puVar23 + -0x30) = &UNK_1814eccbf;
    *(undefined **)((longlong)puVar23 + -0x38) = &UNK_1815087d7;
    *(undefined **)((longlong)puVar23 + -0x40) = &UNK_18151017e;
    *(code **)((longlong)puVar23 + -0x48) = FUN_1814d65bc;
    *(undefined1 **)((longlong)puVar23 + -0x50) = &LAB_18143ac3f;
    *(undefined **)((longlong)puVar23 + -0x58) = &UNK_18145e300;
    *(code **)((longlong)puVar23 + -0x60) = FUN_1814d65bc;
    return uStack_1c4;
  }
code_r0x0001814a4d10:
  puVar23 = (ulonglong *)puVar3;
  pIVar20 = (IMAGE_DOS_HEADER *)(lVar17 + lVar1);
  if ((pIVar30 != (IMAGE_DOS_HEADER *)0x0) &&
     (lVar18._0_1_ = pIVar30->e_magic[0], lVar18._1_1_ = pIVar30->e_magic[1],
     lVar18._2_2_ = pIVar30->e_cblp, lVar18._4_2_ = pIVar30->e_cp, lVar18._6_2_ = pIVar30->e_crlc,
     -1 < lVar18)) {
    *(undefined8 *)((longlong)puVar23 + 0x70) = 0x2621fc0;
    lVar26 = (longlong)&DAT_182621fc0 + -*(longlong *)((longlong)puVar23 + 0x70);
    pIVar24 = pIVar30;
    do {
      if (pIVar20 < (IMAGE_DOS_HEADER *)
                    (-*(longlong *)((longlong)puVar23 + 0x70) + 0x182621fc8 + lVar18)) {
        pIVar30 = pIVar24;
        if (-1 < lVar18) {
          plVar13 = (longlong *)(lVar26 + lVar18);
          pwVar32 = &pIVar20->e_cp;
          if (plVar13 < pwVar32) {
            cStack_80 = pIVar20->e_magic[0];
            cStack_7f = pIVar20->e_magic[1];
            wStack_7e = pIVar20->e_cblp;
            puVar15 = (undefined *)(lVar26 - (longlong)pIVar20);
            pIVar29 = pIVar24;
            goto code_r0x0001814a4d95;
          }
        }
        break;
      }
      pIVar30 = (IMAGE_DOS_HEADER *)&pIVar24->e_cparhdr;
      lVar18._0_2_ = pIVar24->e_cparhdr;
      lVar18._2_2_ = pIVar24->e_minalloc;
      lVar18._4_2_ = pIVar24->e_maxalloc;
      lVar18._6_2_ = pIVar24->e_ss;
      pIVar24 = pIVar30;
    } while (-1 < lVar18);
  }
  goto code_r0x0001814a4dd0;
  while (plVar13 = (longlong *)(lVar26 + lVar18), plVar13 < pwVar32) {
code_r0x0001814a4d95:
    *(longlong *)(&stack0xffffffffffffff80 + (longlong)(puVar15 + lVar18)) = *plVar13 - lVar26;
    pIVar29 = (IMAGE_DOS_HEADER *)&pIVar29->e_cparhdr;
    lVar18 = *(longlong *)pIVar29;
    pIVar20 = (IMAGE_DOS_HEADER *)&stack0xffffffffffffff80;
    if (lVar18 < 0) break;
  }
code_r0x0001814a4dd0:
  do {
    puVar16 = (undefined4 *)((longlong)puVar23 + 100);
    uVar33 = 0xc33c;
    *(IMAGE_DOS_HEADER **)((longlong)puVar23 + -8) = pIVar30;
    puVar21 = (ulonglong *)((longlong)puVar23 + -8);
    pIVar30 = pIVar20;
code_r0x0001814a4e52:
    do {
      if ((uVar33 & 0xc3) == 0) {
        if ((uVar33 & 0xc3) != 0) goto code_r0x0001814a4e52;
        puVar23 = puVar21;
        if ((uVar33 & 0xc3) != 0) break;
      }
      puVar21[-1] = (ulonglong)&UNK_1814a4e64;
      uVar7 = func_0x0001814a99fb();
      *puVar16 = uVar7;
      if ((char)(uVar33 >> 8) == '\0') {
        uVar33 = (ulonglong)((int)uVar33 + uVar25);
      }
      pIVar30 = (IMAGE_DOS_HEADER *)*puVar21;
      puVar22 = puVar21 + 1;
      puVar23 = puVar21 + 1;
      puVar21 = puVar21 + 1;
    } while (((uVar33 & 0xc3) != 0) || (puVar21 = puVar22, (uVar33 & 0xc3) != 0));
    uVar6 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar6 < 0) {
      uVar6 = (uVar6 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar6 != 0);
  uVar6 = *(uint *)((longlong)puVar23 + 100);
  uVar25 = uVar25 ^ uVar6;
  if (uVar25 - uVar6 < 7) {
    uVar25 = uVar25 * uVar6;
  }
  if (5 < uVar25 - uVar6) {
    uVar25 = uVar25 * 0x801;
  }
  uVar6 = uVar6 * 0x10001a7;
  *(uint *)((longlong)puVar23 + 100) = uVar6;
  uVar11 = uVar6 & 0x7f;
  uVar10 = (uVar11 + 2) * (uVar11 + 1) * uVar11;
  if (uVar10 != (uVar10 / 3) * 3) {
    do {
      uVar25 = uVar25 * uVar25 * 0x8000;
      lVar17 = lVar17 + 4;
    } while (((uVar11 + 2) * (uVar11 + 1) * uVar11) % 3 != 0);
  }
  if ((uVar25 & 0x78) != 0) {
    uVar25 = uVar25 + 0xaa99bb13;
  }
  lVar17 = lVar17 + 4;
  puVar3 = (undefined1 *)puVar23;
  uStack_1c4 = uVar6;
  if (lVar2 == lVar17) goto code_r0x0001814a4f93;
  goto code_r0x0001814a4d10;
}



############ FUN_ 1814c22a0 size=154 ############

undefined8 * FUN_1814c22a0(longlong param_1,undefined8 *param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(*(longlong *)(param_1 + 0x878) + 8);
  if (iVar1 == 6) {
    FUN_18049c4e0(param_2,&DAT_1821eeb64);
    return param_2;
  }
  if (iVar1 == 1) {
    FUN_18049c4e0(param_2,&DAT_1822af074);
    return param_2;
  }
  if (iVar1 == 2) {
    FUN_18049c4e0(param_2,&DAT_1822af1a4);
    return param_2;
  }
  if (iVar1 == 3) {
    FUN_18049c4e0(param_2,"AudioUnit");
    return param_2;
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 1814c3020 size=170 ############

void FUN_1814c3020(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined1 local_268 [96];
  undefined8 local_208;
  undefined4 local_200;
  undefined4 local_1fc;
  undefined8 local_170;
  void *local_168;
  void *local_130;
  undefined4 local_124;
  
  local_170 = 0xfffffffffffffffe;
  FUN_18049c4e0(local_268,&DAT_18242bf10);
  puVar3 = (undefined8 *)FUN_180576a30(&local_130,local_268);
  puVar1 = (undefined8 *)(param_1 + 0x1f8);
  if (puVar1 != puVar3) {
    local_208 = *puVar3;
    *puVar3 = 0;
    local_200 = *(undefined4 *)(puVar3 + 1);
    local_1fc = *(undefined4 *)((longlong)puVar3 + 0xc);
    puVar3[1] = 0;
    local_168 = (void *)*puVar1;
    *puVar1 = local_208;
    *(undefined4 *)(param_1 + 0x200) = local_200;
    *(undefined4 *)(param_1 + 0x204) = local_1fc;
                    /* WARNING: Subroutine does not return */
    free(local_168);
  }
  uVar2 = puVar3[3];
  *(undefined8 *)(param_1 + 0x208) = puVar3[2];
  *(undefined8 *)(param_1 + 0x210) = uVar2;
  *(undefined1 *)(param_1 + 0x218) = *(undefined1 *)(puVar3 + 4);
  local_124 = 0;
                    /* WARNING: Subroutine does not return */
  free(local_130);
}



############ FUN_ 181a09840 size=528 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_181a09840(longlong param_1,longlong param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  uint *_Memory;
  undefined1 auStack_c8 [32];
  longlong local_a8;
  longlong local_a0;
  char *local_98;
  undefined8 local_90;
  undefined8 uStack_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 local_60;
  char *local_58;
  char *local_50 [2];
  undefined8 local_40;
  undefined8 local_38;
  char *local_30 [2];
  undefined8 local_20;
  undefined8 local_18;
  ulonglong local_10;
  
  local_60 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_c8;
  if (param_2 == *(longlong *)(param_1 + 0x38)) {
    local_40 = 0;
    local_38 = 0xf;
    local_50[0] = (char *)((ulonglong)local_50[0] & 0xffffffffffffff00);
    local_98 = (char *)FUN_180480500(0x20);
    uVar3 = s_offline_oversample_18247c0d8._8_8_;
    local_40 = 0x12;
    local_38 = 0x1f;
    *(undefined8 *)local_98 = s_offline_oversample_18247c0d8._0_8_;
    *(undefined8 *)(local_98 + 8) = uVar3;
    *(undefined2 *)(local_98 + 0x10) = s_offline_oversample_18247c0d8._16_2_;
    local_98[0x12] = '\0';
    local_90 = 0;
    uStack_88 = 0;
    local_80 = 0;
    local_50[0] = local_98;
    FUN_18059f720(&local_90,local_50,local_30);
    FUN_181185220(*(undefined8 *)(param_1 + 0x10),&local_90);
    _eh_vector_destructor_iterator_(local_50,0x20,1,FUN_180485450);
    FUN_18049c4e0(&local_a0,"offline oversample");
    puVar2 = (undefined8 *)FUN_18059f060(param_1 + 0x18,&local_a0);
    uVar3 = FUN_18151a4e0(*puVar2);
    FUN_1815fceb0(uVar3);
    _Memory = (uint *)(local_a0 + -0x10);
    uVar1 = *_Memory;
  }
  else {
    if (param_2 != *(longlong *)(param_1 + 0x40)) {
    }
    local_20 = 0;
    local_18 = 0xf;
    local_30[0] = (char *)((ulonglong)local_30[0] & 0xffffffffffffff00);
    local_58 = (char *)FUN_180480500(0x20);
    uVar3 = s_offline_resolution_18247bea8._8_8_;
    local_20 = 0x12;
    local_18 = 0x1f;
    *(undefined8 *)local_58 = s_offline_resolution_18247bea8._0_8_;
    *(undefined8 *)(local_58 + 8) = uVar3;
    *(undefined2 *)(local_58 + 0x10) = s_offline_resolution_18247bea8._16_2_;
    local_58[0x12] = '\0';
    local_78 = 0;
    uStack_70 = 0;
    local_68 = 0;
    local_30[0] = local_58;
    FUN_18059f720(&local_78,local_30,&local_10);
    FUN_181185220(*(undefined8 *)(param_1 + 0x10),&local_78);
    _eh_vector_destructor_iterator_(local_30,0x20,1,FUN_180485450);
    FUN_18049c4e0(&local_a8,"offline resolution");
    puVar2 = (undefined8 *)FUN_18059f060(param_1 + 0x18,&local_a8);
    uVar3 = FUN_18151a4e0(*puVar2);
    FUN_1815fceb0(uVar3);
    _Memory = (uint *)(local_a8 + -0x10);
    uVar1 = *_Memory;
  }
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1813c1890 size=2357 ############

void FUN_1813c1890(longlong param_1,undefined4 param_2,longlong param_3)

{
  int iVar1;
  longlong *plVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  longlong lVar5;
  uint uVar6;
  uint *puVar7;
  bool bVar8;
  longlong local_res8;
  longlong local_res20;
  longlong local_138;
  longlong local_130;
  longlong local_128;
  longlong local_120;
  longlong local_118;
  longlong local_110;
  longlong local_108;
  longlong local_100;
  longlong local_f8;
  longlong local_f0;
  longlong local_e8;
  undefined4 local_e0;
  undefined8 local_dc;
  undefined4 local_d4;
  undefined8 local_d0;
  undefined4 local_c8;
  undefined8 local_c4;
  undefined4 local_bc;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined8 local_ac;
  undefined4 local_a4;
  undefined8 local_a0;
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong local_80;
  longlong local_78;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong local_50;
  longlong local_48 [2];
  undefined4 *local_38;
  undefined4 *local_30;
  
  local_48[1] = 0xfffffffffffffffe;
  if ((((*(int *)(param_1 + 0x78) == *(int *)(param_1 + 0x90)) &&
       (*(int *)(param_1 + 0x7c) == *(int *)(param_1 + 0x94))) &&
      (*(int *)(param_1 + 0x80) == *(int *)(param_1 + 0x98))) &&
     (*(longlong *)(param_1 + 0x70) == *(longlong *)(param_1 + 0x88))) {
    bVar8 = true;
  }
  else {
    bVar8 = false;
  }
  switch(param_2) {
  case 0x1002:
    FUN_18049c4e0(&local_100,"Editing");
    uVar3 = FUN_181249dc0(&local_78,"Deletes any selected text.");
    uVar4 = FUN_181249dc0(&local_80,"Delete");
    FUN_1812cba20(param_3,uVar4,uVar3,&local_100);
    puVar7 = (uint *)(local_80 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_78 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_100 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
LAB_1813c21a7:
    if ((!bVar8) && (*(char *)(param_1 + 0x48) == '\0')) {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) & 0xfffffffe;
      return;
    }
    goto LAB_1813c21b5;
  case 0x1003:
    FUN_18049c4e0(&local_128,"Editing");
    FUN_18049c4e0(&local_res8,"Copies the currently selected text to the clipboard and deletes it.")
    ;
    lVar5 = DAT_1826739f8;
    local_38 = &DAT_182673984;
    do {
      LOCK();
      uVar6 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar6 != 0);
    if (DAT_1826739f8 == 0) {
      local_130 = local_res8;
      uVar6 = *(uint *)(local_res8 + -0x10);
LAB_1813c1a0f:
      if ((uVar6 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_130 + -0x10) = *(int *)(local_130 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
         (iVar1 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res8,
                                *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar1)) {
        iVar1 = FUN_1812498b0(lVar5 + 0x18,local_res8,*(undefined1 *)(lVar5 + 0x38),0);
        if (iVar1 < 0) {
          local_130 = local_res8;
          uVar6 = *(uint *)(local_res8 + -0x10);
        }
        else {
          plVar2 = (longlong *)FUN_181249970(lVar5 + 0x28,iVar1);
          local_130 = *plVar2;
          uVar6 = *(uint *)(local_130 + -0x10);
        }
        goto LAB_1813c1a0f;
      }
      FUN_181234570(*(undefined8 *)(lVar5 + 0x40),&local_130,&local_res8,&local_res8);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_res8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    FUN_18049c4e0(&local_res20,&DAT_1821e4a0c);
    lVar5 = DAT_1826739f8;
    local_30 = &DAT_182673984;
    do {
      LOCK();
      uVar6 = DAT_182673984 & 1;
      DAT_182673984 = DAT_182673984 | 1;
      UNLOCK();
    } while (uVar6 != 0);
    if (DAT_1826739f8 == 0) {
      local_138 = local_res20;
      uVar6 = *(uint *)(local_res20 + -0x10);
LAB_1813c1b3b:
      if ((uVar6 & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_138 + -0x10) = *(int *)(local_138 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      if ((*(longlong *)(DAT_1826739f8 + 0x40) == 0) ||
         (iVar1 = FUN_1812498b0(DAT_1826739f8 + 0x18,local_res20,
                                *(undefined1 *)(DAT_1826739f8 + 0x38),0), -1 < iVar1)) {
        iVar1 = FUN_1812498b0(lVar5 + 0x18,local_res20,*(undefined1 *)(lVar5 + 0x38),0);
        if (iVar1 < 0) {
          local_138 = local_res20;
          uVar6 = *(uint *)(local_res20 + -0x10);
        }
        else {
          plVar2 = (longlong *)FUN_181249970(lVar5 + 0x28,iVar1);
          local_138 = *plVar2;
          uVar6 = *(uint *)(local_138 + -0x10);
        }
        goto LAB_1813c1b3b;
      }
      FUN_181234570(*(undefined8 *)(lVar5 + 0x40),&local_138,&local_res20,&local_res20);
    }
    LOCK();
    DAT_182673984 = 0;
    UNLOCK();
    puVar7 = (uint *)(local_res20 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    FUN_1812cba20(param_3,&local_138,&local_130,&local_128);
    puVar7 = (uint *)(local_138 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_130 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_128 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if ((bVar8) || (*(char *)(param_1 + 0x48) != '\0')) {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) | 1;
    }
    else {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) & 0xfffffffe;
    }
    local_e0 = 0x78;
    local_dc = 2;
    FUN_18051b4d0(param_3 + 0x20,&local_e0);
    break;
  case 0x1004:
    FUN_18049c4e0(&local_110,"Editing");
    FUN_18049c4e0(&local_120,"Copies the currently selected text to the clipboard.");
    FUN_1812344e0(&local_118,&local_120);
    puVar7 = (uint *)(local_120 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    uVar3 = FUN_181249dc0(&local_98,&DAT_182262fd4);
    FUN_1812cba20(param_3,uVar3,&local_118,&local_110);
    puVar7 = (uint *)(local_98 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_118 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_110 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (bVar8) {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) | 1;
    }
    else {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) & 0xfffffffe;
    }
    local_d4 = 99;
    local_d0 = 2;
    FUN_18051b4d0(param_3 + 0x20,&local_d4);
    break;
  case 0x1005:
    FUN_18049c4e0(&local_108,"Editing");
    uVar3 = FUN_181249dc0(&local_88,"Inserts text from the clipboard.");
    uVar4 = FUN_181249dc0(&local_90,"Paste");
    FUN_1812cba20(param_3,uVar4,uVar3,&local_108);
    puVar7 = (uint *)(local_90 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_88 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_108 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (*(char *)(param_1 + 0x48) == '\0') {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) & 0xfffffffe;
    }
    else {
      *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) | 1;
    }
    local_c8 = 0x76;
    local_c4 = 2;
    FUN_18051b4d0(param_3 + 0x20,&local_c8);
    break;
  case 0x1006:
    FUN_18049c4e0(&local_f8,"Editing");
    uVar3 = FUN_181249dc0(&local_68,"Selects all the text in the editor.");
    uVar4 = FUN_181249dc0(&local_70,"Select All");
    FUN_1812cba20(param_3,uVar4,uVar3,&local_f8);
    puVar7 = (uint *)(local_70 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_68 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_f8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_bc = 0x61;
    local_b8 = 2;
    FUN_18051b4d0(param_3 + 0x20,&local_bc);
    break;
  case 0x1008:
    FUN_18049c4e0(&local_f0,"Editing");
    uVar3 = FUN_181249dc0(&local_58,&DAT_182263124);
    uVar4 = FUN_181249dc0(&local_60,&DAT_1822669f4);
    FUN_1812cba20(param_3,uVar4,uVar3,&local_f0);
    puVar7 = (uint *)(local_60 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_58 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_f0 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_b0 = 0x7a;
    local_ac = 2;
    FUN_18051b4d0(param_3 + 0x20,&local_b0);
    lVar5 = *(longlong *)(param_1 + 0x18);
    uVar6 = *(int *)(lVar5 + 0x8c) - 1;
    if (uVar6 < *(uint *)(lVar5 + 100)) {
LAB_1813c219e:
      bVar8 = *(longlong *)(*(longlong *)(lVar5 + 0x58) + (longlong)(int)uVar6 * 8) == 0;
      goto LAB_1813c21a7;
    }
    goto LAB_1813c21b5;
  case 0x1009:
    FUN_18049c4e0(&local_e8,"Editing");
    uVar3 = FUN_181249dc0(local_48,&DAT_182266874);
    uVar4 = FUN_181249dc0(&local_50,&DAT_1822668e4);
    FUN_1812cba20(param_3,uVar4,uVar3,&local_e8);
    puVar7 = (uint *)(local_50 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_48[0] + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    puVar7 = (uint *)(local_e8 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_a4 = 0x7a;
    local_a0 = 3;
    FUN_18051b4d0(param_3 + 0x20,&local_a4);
    lVar5 = *(longlong *)(param_1 + 0x18);
    uVar6 = *(uint *)(lVar5 + 0x8c);
    if (uVar6 < *(uint *)(lVar5 + 100)) goto LAB_1813c219e;
LAB_1813c21b5:
    *(uint *)(param_3 + 0x30) = *(uint *)(param_3 + 0x30) | 1;
  }
  return;
}



############ FUN_ 1804719e0 size=31 ############

undefined8 * FUN_1804719e0(undefined8 *param_1)

{
  param_1[2] = 0;
  param_1[1] = "bad allocation";
  *param_1 = std::bad_alloc::vftable;
  return param_1;
}



############ FUN_ 180481140 size=34 ############

void FUN_180481140(undefined8 *param_1)

{
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18124a420 size=73 ############

void FUN_18124a420(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  
  *param_1 = juce::MemoryOutputStream::vftable;
  puVar1 = (undefined8 *)param_1[2];
  if ((puVar1 != param_1 + 3) && (puVar1 != (undefined8 *)0x0)) {
    FUN_18124a200(puVar1,param_1[7],0,param_4,0xfffffffffffffffe);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[3]);
}



############ FUN_ 181246700 size=416 ############

longlong * FUN_181246700(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  longlong *plVar5;
  longlong *plVar6;
  undefined8 *puVar7;
  undefined8 uVar8;
  uint *_Memory;
  int iVar9;
  longlong local_res8;
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [2];
  void *local_30;
  void *local_20;
  
  if (**(char **)(param_1 + 0x18) == '\0') {
    plVar5 = (longlong *)FUN_181220890();
    lVar2 = *plVar5;
    *param_2 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    return param_2;
  }
  iVar9 = 0;
  plVar5 = *(longlong **)(param_1 + 8);
  plVar6 = plVar5;
  if (plVar5 != (longlong *)0x0) {
    do {
      iVar9 = iVar9 + 1;
      plVar6 = (longlong *)*plVar6;
    } while (plVar6 != (longlong *)0x0);
    if (iVar9 == 1) {
      FUN_181246700(plVar5,param_2);
      return param_2;
    }
  }
  FUN_18124a4b0(local_58,0x400,param_3,param_4,0xfffffffffffffffe);
  puVar3 = *(undefined8 **)(param_1 + 8);
  do {
    if (puVar3 == (undefined8 *)0x0) {
      if (local_48 != (void **)0x0) {
        if (local_20 < local_48[1]) {
          *(undefined1 *)((longlong)local_20 + (longlong)*local_48) = 0;
        }
        local_30 = *local_48;
      }
      FUN_18124a8a0(param_2,local_30,(longlong)local_20 + (longlong)local_30);
      local_58[0] = juce::MemoryOutputStream::vftable;
      if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
        FUN_18124a200(local_48,local_20,0);
      }
                    /* WARNING: Subroutine does not return */
      free(local_40[0]);
    }
    puVar7 = (undefined8 *)FUN_181246700(puVar3,&local_res8);
    uVar4 = *puVar7;
    uVar8 = FUN_18049d240(uVar4);
    (*(code *)local_58[0][4])(local_58,uVar4,uVar8);
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar3 = (undefined8 *)*puVar3;
  } while( true );
}



############ FUN_ 181220ef0 size=184 ############

void FUN_181220ef0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [2];
  void *local_30;
  void *local_20;
  
  FUN_18124a4b0(local_58,0x800,param_3,param_4,0xfffffffffffffffe);
  FUN_181246e90(param_1,local_58,param_3);
  if (local_48 != (void **)0x0) {
    if (local_20 < local_48[1]) {
      *(undefined1 *)((longlong)local_20 + (longlong)*local_48) = 0;
    }
    local_30 = *local_48;
  }
  FUN_18124a8a0(param_2,local_30,(longlong)local_20 + (longlong)local_30);
  local_58[0] = juce::MemoryOutputStream::vftable;
  if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,local_20,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 181247930 size=201 ############

void FUN_181247930(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [2];
  void *local_30;
  void *local_20;
  
  FUN_18124a4b0(local_58,(ulonglong)(param_3 * 4) / 3 + 3,param_3,param_3 * 4,0xfffffffffffffffe);
  FUN_18122bde0(local_58,param_2,param_3);
  if (local_48 != (void **)0x0) {
    if (local_20 < local_48[1]) {
      *(undefined1 *)((longlong)*local_48 + (longlong)local_20) = 0;
    }
    local_30 = *local_48;
  }
  FUN_18122f8f0(param_1,local_30,(ulonglong)local_20 & 0xffffffff);
  local_58[0] = juce::MemoryOutputStream::vftable;
  if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,local_20,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 181247530 size=534 ############

ulonglong FUN_181247530(longlong *param_1,char *param_2)

{
  int *_Memory;
  int iVar1;
  byte bVar2;
  byte bVar3;
  int iVar4;
  ulonglong uVar5;
  undefined4 *puVar6;
  byte bVar7;
  sbyte sVar8;
  char cVar9;
  uint uVar10;
  char *_Str;
  size_t _Size;
  ulonglong uVar11;
  uint uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  uint uVar15;
  byte *local_res18;
  char *local_res20;
  
  uVar5 = FUN_18049c2c0(&local_res18,param_2,0x2e);
  if (*local_res18 == 0) {
    return uVar5 & 0xffffffffffffff00;
  }
  if ((param_2 == (char *)0x0) || (*param_2 == '\0')) {
    _Str = "";
  }
  else {
    _Size = (longlong)local_res18 - (longlong)param_2;
    puVar6 = (undefined4 *)thunk_FUN_1811316e0();
    LOCK();
    *puVar6 = 0;
    UNLOCK();
    *(size_t *)(puVar6 + 2) = _Size + 4 & 0xfffffffffffffffc;
    _Str = (char *)(puVar6 + 4);
    memcpy(_Str,param_2,_Size);
    _Str[_Size] = '\0';
  }
  local_res20 = _Str;
  iVar4 = atoi(_Str);
  _Memory = (int *)(_Str + -0x10);
  if ((*(uint *)(_Str + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18124a200(param_1,(longlong)iVar4,1);
  bVar2 = *local_res18;
  local_res18 = local_res18 + 1;
  if ((char)bVar2 < '\0') {
    bVar7 = 0x40;
    bVar3 = bVar2 & 0x40;
    while ((bVar3 != 0 && (8 < bVar7))) {
      local_res18 = local_res18 + 1;
      bVar7 = bVar7 >> 1;
      bVar3 = bVar2 & bVar7;
    }
  }
  uVar15 = 0;
  do {
    do {
      bVar2 = *local_res18;
      local_res18 = local_res18 + 1;
      uVar12 = (uint)bVar2;
      if ((char)bVar2 < '\0') {
        uVar10 = 0x40;
        iVar4 = 0;
        uVar12 = 0x7f;
        if ((bVar2 & 0x40) != 0) {
          do {
            if (uVar10 < 9) break;
            uVar12 = uVar12 >> 1;
            iVar4 = iVar4 + 1;
            uVar10 = uVar10 >> 1;
          } while ((bVar2 & uVar10) != 0);
        }
        uVar12 = bVar2 & uVar12;
        for (; (iVar4 = iVar4 + -1, -1 < iVar4 && ((*local_res18 & 0xc0) == 0x80));
            local_res18 = local_res18 + 1) {
          uVar12 = *local_res18 & 0x3f | uVar12 << 6;
        }
      }
      if (uVar12 == 0) {
        return CONCAT71((int7)((ulonglong)local_res18 >> 8),1);
      }
    } while (0x4f < uVar12 - 0x2b);
    uVar11 = 6;
    uVar14 = (ulonglong)(longlong)(int)uVar15 >> 3;
    uVar10 = 0xffffffc0;
    uVar5 = (ulonglong)(uVar15 & 7);
    iVar4 = (int)(char)(&DAT_1821debd0)[(int)(uVar12 - 0x2b)];
    do {
      if ((ulonglong)param_1[1] <= uVar14) break;
      uVar13 = uVar11;
      if (8 - uVar5 < uVar11) {
        uVar13 = 8 - uVar5;
      }
      sVar8 = (sbyte)uVar5;
      uVar5 = 0;
      cVar9 = (char)iVar4;
      iVar4 = iVar4 >> ((byte)uVar13 & 0x1f);
      *(byte *)(*param_1 + uVar14) =
           (~((char)(0xffffffff >> sVar8) << sVar8) | (char)uVar10 << sVar8) &
           *(byte *)(*param_1 + uVar14) | cVar9 << sVar8;
      uVar14 = uVar14 + 1;
      uVar10 = uVar10 >> ((byte)uVar13 & 0x1f);
      uVar11 = uVar11 - uVar13;
    } while (uVar11 != 0);
    uVar15 = uVar15 + 6;
  } while( true );
}



############ FUN_ 1812352c0 size=188 ############

void FUN_1812352c0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [2];
  void *local_30;
  void *local_20;
  
  FUN_18124a4b0(local_58,0x100,param_3,param_4,0xfffffffffffffffe);
  (*(code *)local_58[0][0x15])(local_58,param_1,0xffffffffffffffff);
  if (local_48 != (void **)0x0) {
    if (local_20 < local_48[1]) {
      *(undefined1 *)((longlong)*local_48 + (longlong)local_20) = 0;
    }
    local_30 = *local_48;
  }
  FUN_18122f8f0(param_2,local_30,(ulonglong)local_20 & 0xffffffff);
  local_58[0] = juce::MemoryOutputStream::vftable;
  if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,local_20,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 180541da0 size=311 ############

void FUN_180541da0(ulonglong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  char *pcVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  ulonglong local_res8;
  char *local_res10;
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [4];
  byte local_20;
  undefined7 uStack_1f;
  
  local_res8 = param_1;
  FUN_18124a4b0(local_58,0x100,param_3,param_4,0xfffffffffffffffe);
  uVar3 = FUN_1812498b0(param_2,"tracktion loop info",*(undefined1 *)(param_2 + 0x20),0);
  puVar4 = (undefined8 *)FUN_181249970(param_2 + 0x10,uVar3);
  pcVar2 = (char *)*puVar4;
  _Memory = (uint *)(pcVar2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  local_res10 = pcVar2;
  if (*pcVar2 != '\0') {
    lVar5 = FUN_18049d240(pcVar2);
    (*(code *)local_58[0][4])(local_58,pcVar2,lVar5 + 1);
    if ((local_20 & 1) != 0) {
      local_res8 = local_res8 & 0xffffffffffffff00;
      (*(code *)local_58[0][4])(local_58,&local_res8,1);
    }
  }
  FUN_181234c50(local_58,param_1);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  local_58[0] = juce::MemoryOutputStream::vftable;
  if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,CONCAT71(uStack_1f,local_20),0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 18136d890 size=420 ############

void FUN_18136d890(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  size_t _Size;
  int iVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  void *_Dst;
  bool bVar5;
  char *local_res8;
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [4];
  size_t local_20;
  
  iVar2 = FUN_1812498b0(param_2,&DAT_1822467e4,*(undefined1 *)(param_2 + 0x20),0,0xfffffffffffffffe)
  ;
  if (iVar2 < 0) {
    local_res8 = "";
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      DAT_1821dbf88 = DAT_1821dbf88 + 1;
      UNLOCK();
    }
  }
  else {
    puVar3 = (undefined8 *)FUN_181249970(param_2 + 0x10,iVar2);
    local_res8 = (char *)*puVar3;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar5 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar5) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  FUN_18124a4b0(local_58,0x100);
  if (*local_res8 != '\0') {
    (*(code *)local_58[0][4])
              (local_58,
               "<ebucore:ebuCoreMain xmlns:dc=\" http://purl.org/dc/elements/1.1/\" xmlns:ebucore=\"urn:ebu:metadata-schema:ebuCore_2012\"><ebucore:coreMetadata><ebucore:identifier typeLabel=\"GUID\" typeDefinition=\"Globally Unique Identifier\" formatLabel=\"ISRC\" formatDefinition=\"International Standard Recording Code\" formatLink=\"http://www.ebu.ch/metadata/cs/ebu_IdentifierTypeCodeCS.xml#3.7\"><dc:identifier>ISRC:"
               ,0x18a);
    uVar4 = FUN_18049d240(local_res8);
    (*(code *)local_58[0][4])(local_58,local_res8,uVar4);
    (*(code *)local_58[0][4])
              (local_58,
               "</dc:identifier></ebucore:identifier></ebucore:coreMetadata></ebucore:ebuCoreMain>",
               0x52);
    _Size = local_20;
    if (local_20 != 0) {
      _Dst = (void *)FUN_181234e40(local_58);
      if (_Dst != (void *)0x0) {
        memset(_Dst,0,_Size);
      }
    }
  }
  FUN_181234c50(local_58,param_1);
  local_58[0] = juce::MemoryOutputStream::vftable;
  if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,local_20,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 1813c7d80 size=629 ############

undefined8 * FUN_1813c7d80(longlong *param_1,undefined8 *param_2,longlong param_3,longlong param_4)

{
  uint uVar1;
  undefined8 uVar2;
  longlong lVar3;
  uint uVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  uint uVar7;
  uint *puVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  longlong local_res18;
  longlong local_res20;
  undefined8 uVar12;
  undefined **local_88 [2];
  void **local_78;
  void *local_70 [2];
  void *local_60;
  void *local_50;
  
  uVar12 = 0xfffffffffffffffe;
  if (*(int *)(param_3 + 8) < *(int *)(param_4 + 8)) {
    uVar1 = *(uint *)(param_3 + 0xc);
    lVar9 = (longlong)(int)uVar1;
    uVar4 = *(uint *)(param_4 + 0xc);
    lVar11 = (longlong)(int)uVar4;
    local_res18 = param_3;
    if (uVar1 != uVar4) {
      FUN_18124a4b0(local_88,0x100);
      if (local_78 != (void **)0x0) {
        FUN_181234f80(local_88,(longlong)((*(int *)(param_4 + 8) - *(int *)(param_3 + 8)) + 4));
      }
      lVar3 = local_res18;
      uVar7 = *(int *)((longlong)param_1 + 0xc) - 1;
      if ((int)uVar4 < (int)uVar7) {
        uVar7 = uVar4;
      }
      uVar4 = 0;
      if (0 < (int)uVar1) {
        uVar4 = uVar1;
      }
      lVar10 = (longlong)(int)uVar4;
      do {
        if ((int)uVar7 < lVar10) {
          if (local_78 != (void **)0x0) {
            if (local_50 < local_78[1]) {
              *(undefined1 *)((longlong)local_50 + (longlong)*local_78) = 0;
            }
            local_60 = *local_78;
          }
          FUN_18124a8a0(param_2,local_60,(longlong)local_50 + (longlong)local_60);
          local_88[0] = juce::MemoryOutputStream::vftable;
          if ((local_78 != local_70) && (local_78 != (void **)0x0)) {
            FUN_18124a200(local_78,local_50,0);
          }
                    /* WARNING: Subroutine does not return */
          free(local_70[0]);
        }
        puVar5 = *(undefined8 **)(*param_1 + lVar10 * 8);
        if (lVar10 == lVar9) {
          puVar5 = (undefined8 *)
                   FUN_1812490c0(puVar5,&local_res18,*(undefined4 *)(lVar3 + 0x10),
                                 *(undefined4 *)((longlong)puVar5 + 0xc),lVar11,lVar9,uVar12);
          uVar2 = *puVar5;
          FUN_18049d240(uVar2);
          (*(code *)local_88[0][4])(local_88,uVar2);
          puVar8 = (uint *)(local_res18 + -0x10);
          if ((*puVar8 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
        }
        else if (lVar10 == lVar11) {
          puVar5 = (undefined8 *)
                   FUN_1812490c0(puVar5,&local_res20,0,*(undefined4 *)(param_4 + 0x10),lVar11,lVar9,
                                 uVar12);
          uVar2 = *puVar5;
          FUN_18049d240(uVar2);
          (*(code *)local_88[0][4])(local_88,uVar2);
          puVar8 = (uint *)(local_res20 + -0x10);
          if ((*puVar8 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar8;
            *puVar8 = *puVar8 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar8);
            }
          }
        }
        else {
          uVar2 = *puVar5;
          uVar6 = FUN_18049d240(uVar2);
          (*(code *)local_88[0][4])(local_88,uVar2,uVar6);
        }
        lVar10 = lVar10 + 1;
      } while( true );
    }
    if ((uVar1 < *(uint *)((longlong)param_1 + 0xc)) &&
       (lVar9 = *(longlong *)(*param_1 + lVar9 * 8), lVar9 != 0)) {
      FUN_1812490c0(lVar9,param_2,*(undefined4 *)(param_3 + 0x10),*(undefined4 *)(param_4 + 0x10));
      return param_2;
    }
  }
  *param_2 = &DAT_1821dbf98;
  return param_2;
}



############ FUN_ 1812495e0 size=197 ############

void FUN_1812495e0(undefined8 param_1,undefined8 param_2,undefined1 param_3)

{
  undefined **local_58 [2];
  void **local_48;
  void *local_40 [2];
  void *local_30;
  void *local_20;
  
  FUN_18124a4b0(local_58,0x400);
  FUN_180497ea0(local_58,param_2,0,param_3,0xf);
  if (local_48 != (void **)0x0) {
    if (local_20 < local_48[1]) {
      *(undefined1 *)((longlong)local_20 + (longlong)*local_48) = 0;
    }
    local_30 = *local_48;
  }
  FUN_18124a8a0(param_1,local_30,(longlong)local_20 + (longlong)local_30);
  local_58[0] = juce::MemoryOutputStream::vftable;
  if ((local_48 != local_40) && (local_48 != (void **)0x0)) {
    FUN_18124a200(local_48,local_20,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_40[0]);
}



############ FUN_ 18134fe40 size=362 ############

void FUN_18134fe40(longlong *param_1,longlong *param_2,uint param_3,uint param_4)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined1 auStack_c8 [32];
  longlong local_a8 [4];
  undefined **local_88 [2];
  void **local_78;
  void *local_70 [2];
  void *local_60;
  void *local_50;
  undefined8 local_38;
  byte local_30 [8];
  byte local_28 [8];
  ulonglong local_20;
  
  local_38 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_c8;
  FUN_18124a4b0(local_88,0x100);
  local_a8[0] = *param_2;
  if (local_a8[0] != 0) {
    LOCK();
    *(int *)(local_a8[0] + 8) = *(int *)(local_a8[0] + 8) + 1;
    UNLOCK();
  }
  local_a8[1] = 0;
  local_a8[2] = 0;
  iVar3 = 0;
  FUN_1813505c0(param_1,local_88,5,local_a8);
  iVar2 = 0;
  for (uVar1 = (param_3 ^ (int)param_3 >> 0x1f) - ((int)param_3 >> 0x1f); uVar1 != 0;
      uVar1 = uVar1 >> 8) {
    iVar2 = iVar2 + 1;
    local_30[iVar2] = (byte)uVar1;
  }
  local_30[0] = (byte)iVar2;
  if ((int)param_3 < 0) {
    local_30[0] = local_30[0] | 0x80;
  }
  (*(code *)local_88[0][4])(local_88,local_30,(longlong)iVar2 + 1);
  for (uVar1 = (param_4 ^ (int)param_4 >> 0x1f) - ((int)param_4 >> 0x1f); uVar1 != 0;
      uVar1 = uVar1 >> 8) {
    iVar3 = iVar3 + 1;
    local_28[iVar3] = (byte)uVar1;
  }
  local_28[0] = (byte)iVar3;
  if ((int)param_4 < 0) {
    local_28[0] = local_28[0] | 0x80;
  }
  (*(code *)local_88[0][4])(local_88,local_28,(longlong)iVar3 + 1);
  if (local_78 != (void **)0x0) {
    if (local_50 < local_78[1]) {
      *(undefined1 *)((longlong)local_50 + (longlong)*local_78) = 0;
    }
    local_60 = *local_78;
  }
  (**(code **)(*param_1 + 0x38))(param_1,local_60);
  local_88[0] = juce::MemoryOutputStream::vftable;
  if ((local_78 != local_70) && (local_78 != (void **)0x0)) {
    FUN_18124a200(local_78,local_50,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_70[0]);
}



############ FUN_ 181350010 size=297 ############

void FUN_181350010(longlong *param_1,longlong *param_2,undefined8 param_3,uint param_4)

{
  uint uVar1;
  int iVar2;
  undefined1 auStack_b8 [32];
  longlong local_98 [4];
  undefined **local_78 [2];
  void **local_68;
  void *local_60 [2];
  void *local_50;
  void *local_40;
  undefined8 local_28;
  byte local_20 [8];
  ulonglong local_18;
  
  local_28 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_b8;
  FUN_18124a4b0(local_78,0x100);
  local_98[0] = *param_2;
  if (local_98[0] != 0) {
    LOCK();
    *(int *)(local_98[0] + 8) = *(int *)(local_98[0] + 8) + 1;
    UNLOCK();
  }
  local_98[1] = 0;
  local_98[2] = 0;
  iVar2 = 0;
  FUN_1813505c0(param_1,local_78,4,local_98);
  for (uVar1 = (param_4 ^ (int)param_4 >> 0x1f) - ((int)param_4 >> 0x1f); uVar1 != 0;
      uVar1 = uVar1 >> 8) {
    iVar2 = iVar2 + 1;
    local_20[iVar2] = (byte)uVar1;
  }
  local_20[0] = (byte)iVar2;
  if ((int)param_4 < 0) {
    local_20[0] = local_20[0] | 0x80;
  }
  (*(code *)local_78[0][4])(local_78,local_20,(longlong)iVar2 + 1);
  if (local_68 != (void **)0x0) {
    if (local_40 < local_68[1]) {
      *(undefined1 *)((longlong)local_40 + (longlong)*local_68) = 0;
    }
    local_50 = *local_68;
  }
  (**(code **)(*param_1 + 0x38))(param_1,local_50);
  local_78[0] = juce::MemoryOutputStream::vftable;
  if ((local_68 != local_60) && (local_68 != (void **)0x0)) {
    FUN_18124a200(local_68,local_40,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_60[0]);
}



############ FUN_ 1813501a0 size=386 ############

void FUN_1813501a0(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong lVar1;
  longlong *plVar2;
  uint uVar3;
  uint uVar4;
  longlong *plVar5;
  int iVar6;
  undefined1 auStack_d8 [32];
  longlong local_b8 [4];
  undefined **local_98 [2];
  void **local_88;
  void *local_80 [2];
  void *local_70;
  void *local_60;
  undefined8 local_48;
  byte local_40 [8];
  ulonglong local_38;
  
  local_48 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_d8;
  lVar1 = *param_2;
  if (lVar1 != 0) {
    plVar2 = *(longlong **)(lVar1 + 0x28);
    for (plVar5 = plVar2; plVar5 != plVar2 + *(int *)(lVar1 + 0x34); plVar5 = plVar5 + 1) {
      if (*param_3 == *plVar5) {
        uVar4 = (uint)((longlong)plVar5 - (longlong)plVar2 >> 3);
        goto LAB_181350218;
      }
    }
  }
  uVar4 = 0xffffffff;
LAB_181350218:
  FUN_18124a4b0(local_98,0x100);
  local_b8[0] = *param_2;
  if (local_b8[0] != 0) {
    LOCK();
    *(int *)(local_b8[0] + 8) = *(int *)(local_b8[0] + 8) + 1;
    UNLOCK();
  }
  local_b8[1] = 0;
  local_b8[2] = 0;
  iVar6 = 0;
  FUN_1813505c0(param_1,local_98,3,local_b8);
  for (uVar3 = (uVar4 ^ (int)uVar4 >> 0x1f) - ((int)uVar4 >> 0x1f); uVar3 != 0; uVar3 = uVar3 >> 8)
  {
    iVar6 = iVar6 + 1;
    local_40[iVar6] = (byte)uVar3;
  }
  local_40[0] = (byte)iVar6;
  if ((int)uVar4 < 0) {
    local_40[0] = local_40[0] | 0x80;
  }
  (*(code *)local_98[0][4])(local_98,local_40,(longlong)iVar6 + 1);
  FUN_180527630(local_98,*param_3);
  if (local_88 != (void **)0x0) {
    if (local_60 < local_88[1]) {
      *(undefined1 *)((longlong)local_60 + (longlong)*local_88) = 0;
    }
    local_70 = *local_88;
  }
  (**(code **)(*param_1 + 0x38))(param_1,local_70);
  local_98[0] = juce::MemoryOutputStream::vftable;
  if ((local_88 != local_80) && (local_88 != (void **)0x0)) {
    FUN_18124a200(local_88,local_60,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_80[0]);
}



############ FUN_ 181350380 size=426 ############

void FUN_181350380(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  longlong *plVar3;
  longlong *plVar4;
  undefined **local_a8 [2];
  void **local_98;
  void *local_90 [2];
  void *local_80;
  void *local_70;
  longlong local_58 [4];
  undefined8 local_38;
  undefined8 local_30;
  undefined8 local_28;
  
  local_28 = 0xfffffffffffffffe;
  FUN_18124a4b0(local_a8,0x100);
  lVar2 = *param_2;
  plVar4 = (longlong *)0x0;
  if (lVar2 != 0) {
    plVar3 = *(longlong **)(lVar2 + 0x18);
    plVar1 = plVar3 + (longlong)*(int *)(lVar2 + 0x24) * 3;
    if (plVar3 != plVar1) {
      do {
        if (*plVar3 == *param_3) {
          plVar4 = plVar3 + 1;
          break;
        }
        plVar3 = plVar3 + 3;
      } while (plVar3 != plVar1);
    }
  }
  if (plVar4 == (longlong *)0x0) {
    if (lVar2 != 0) {
      LOCK();
      *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
      UNLOCK();
    }
    local_38 = 0;
    local_30 = 0;
    local_58[3] = lVar2;
    FUN_1813505c0(param_1,local_a8,6,local_58 + 3);
    lVar2 = FUN_18049d240(*param_3);
    (*(code *)local_a8[0][4])(local_a8,*param_3,lVar2 + 1);
  }
  else {
    if (lVar2 != 0) {
      LOCK();
      *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
      UNLOCK();
    }
    local_58[1] = 0;
    local_58[2] = 0;
    local_58[0] = lVar2;
    FUN_1813505c0(param_1,local_a8,1,local_58);
    lVar2 = FUN_18049d240(*param_3);
    (*(code *)local_a8[0][4])(local_a8,*param_3,lVar2 + 1);
    (**(code **)(*(longlong *)*plVar4 + 200))((longlong *)*plVar4,plVar4 + 1,local_a8);
  }
  if (local_98 != (void **)0x0) {
    if (local_70 < local_98[1]) {
      *(undefined1 *)((longlong)local_70 + (longlong)*local_98) = 0;
    }
    local_80 = *local_98;
  }
  (**(code **)(*param_1 + 0x38))(param_1,local_80);
  local_a8[0] = juce::MemoryOutputStream::vftable;
  if ((local_98 != local_90) && (local_98 != (void **)0x0)) {
    FUN_18124a200(local_98,local_70,0);
  }
                    /* WARNING: Subroutine does not return */
  free(local_90[0]);
}



############ FUN_ 181235070 size=34 ############

void FUN_181235070(longlong param_1)

{
  longlong lVar1;
  
  lVar1 = *(longlong *)(param_1 + 0x10);
  if ((lVar1 != param_1 + 0x18) && (lVar1 != 0)) {
    FUN_18124a200(lVar1,*(undefined8 *)(param_1 + 0x38),0);
    return;
  }
  return;
}



############ FUN_ 1817b4990 size=7865 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x0001817b5087) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1817b4990(byte *param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  int iVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  ulonglong uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  ulonglong uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  bool bVar35;
  undefined1 auStack_4608 [32];
  uint local_45e8;
  uint local_45e4;
  uint local_45e0;
  uint local_45dc;
  uint local_45d8;
  uint local_45d4;
  uint local_45d0;
  uint local_45cc;
  uint local_45c8;
  uint local_45c4;
  uint local_45c0;
  uint local_45bc;
  uint local_45b8;
  uint local_45b4;
  uint local_45b0;
  uint local_45ac;
  uint local_45a8;
  uint local_45a4;
  uint local_45a0;
  uint local_459c;
  uint local_4598;
  uint local_4594;
  uint local_4590;
  uint local_458c;
  uint local_4588;
  int local_4584;
  uint local_4580;
  uint local_457c;
  uint local_4578;
  uint local_4574;
  uint local_4570;
  uint local_456c;
  uint local_4568;
  uint local_4564;
  uint local_4560;
  uint local_455c;
  uint local_4558;
  uint local_4554;
  uint local_4550;
  uint local_454c;
  uint local_4548;
  uint local_4544;
  uint local_4540;
  uint local_453c;
  int local_4538;
  uint local_4534;
  uint local_4530;
  uint local_452c;
  uint local_4528;
  uint local_4524;
  uint local_4520;
  uint local_451c;
  uint local_4518;
  uint local_4514;
  uint local_4510;
  uint local_450c;
  int local_4508;
  uint local_4504;
  uint local_4500;
  uint local_44fc;
  uint local_44f8;
  uint local_44f4;
  uint local_44f0;
  uint local_44ec;
  uint local_44e8;
  uint local_44e4;
  uint local_44e0;
  uint local_44dc;
  uint local_44d8;
  uint local_44d4;
  uint local_44d0;
  uint local_44cc;
  uint local_44c8;
  uint local_44c4;
  uint local_44c0;
  uint local_44bc;
  uint local_44b8;
  uint local_44b4;
  uint local_44b0;
  uint local_44ac;
  uint local_44a8;
  uint local_44a4;
  uint local_44a0;
  uint local_449c;
  uint local_4498;
  uint local_4494;
  uint local_4490;
  uint local_448c;
  uint local_4488;
  int local_4484;
  uint local_4480;
  int local_447c;
  uint local_4478;
  uint local_4474;
  uint local_4470;
  uint local_446c;
  uint local_4468;
  uint local_4464;
  uint local_4460;
  uint local_445c;
  uint local_4458;
  uint local_4454;
  int local_4450 [2];
  undefined8 local_4448;
  undefined8 local_4440;
  byte *local_4438;
  undefined1 local_4428 [17352];
  byte *local_60;
  undefined8 local_58;
  undefined8 local_50;
  int *local_48;
  ulonglong local_38;
  undefined8 uStack_30;
  
  uStack_30 = 0x1817b49b2;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4608;
  _DAT_182679b40 = local_4428;
  DAT_18267981c = 0x811c9dc5;
  DAT_182679ad0 = 0;
  if (param_1 != (byte *)0x0) {
    DAT_18267981c =
         ((((((((((((((((((((((((((((((((*param_1 ^ 0x811c9dc5) * 0x1000193 ^ (uint)param_1[1]) *
                                       0x1000193 ^ (uint)param_1[2]) * 0x1000193 ^ (uint)param_1[3])
                                     * 0x1000193 ^ (uint)param_1[4]) * 0x1000193 ^ (uint)param_1[5])
                                   * 0x1000193 ^ (uint)param_1[6]) * 0x1000193 ^ (uint)param_1[7]) *
                                 0x1000193 ^ (uint)param_1[8]) * 0x1000193 ^ (uint)param_1[9]) *
                               0x1000193 ^ (uint)param_1[10]) * 0x1000193 ^ (uint)param_1[0xb]) *
                             0x1000193 ^ (uint)param_1[0xc]) * 0x1000193 ^ (uint)param_1[0xd]) *
                           0x1000193 ^ (uint)param_1[0xe]) * 0x1000193 ^ (uint)param_1[0xf]) *
                         0x1000193 ^ (uint)param_1[0x10]) * 0x1000193 ^ (uint)param_1[0x11]) *
                       0x1000193 ^ (uint)param_1[0x12]) * 0x1000193 ^ (uint)param_1[0x13]) *
                     0x1000193 ^ (uint)param_1[0x14]) * 0x1000193 ^ (uint)param_1[0x15]) * 0x1000193
                  ^ (uint)param_1[0x16]) * 0x1000193 ^ (uint)param_1[0x17]) * 0x1000193 ^
                (uint)param_1[0x18]) * 0x1000193 ^ (uint)param_1[0x19]) * 0x1000193 ^
              (uint)param_1[0x1a]) * 0x1000193 ^ (uint)param_1[0x1b]) * 0x1000193 ^
            (uint)param_1[0x1c]) * 0x1000193 ^ (uint)param_1[0x1d]) * 0x1000193 ^
          (uint)param_1[0x1e]) * 0x1000193 ^ (uint)param_1[0x1f]) * 0x1000193;
  }
  uVar18 = DAT_18267981c + 0x60314d65;
  DAT_182679a30 = 0xb98e9aa3;
  DAT_182679900 = 0x5161a3d1;
  DAT_182679a0c = 0x40210010;
  DAT_182679854 = 0xb2e6fe67;
  local_448c = 0x5161a3d1;
  if ((DAT_18267981c & 1) == 0) {
    local_448c = DAT_18267981c;
  }
  DAT_18267991c = 0xa18f53ec;
  DAT_18267987c = 0xa200020;
  DAT_1826798c8 = 0xf4c5eadc;
  DAT_182679834 = 0xe1896b2d;
  uVar32 = (local_448c & 0xff0000 | local_448c >> 0x10) >> 8;
  DAT_182679980 = 0xbfb6124e;
  DAT_1826797f8 = 0x8d3a01a9;
  DAT_18267990c = 0xfc93ffb7;
  DAT_182679a28 = uVar32 | (local_448c << 0x10 | local_448c & 0xff00) << 8;
  DAT_182679a44 = 0xdbbbb9e0;
  DAT_18267980c = 0x24c0c088;
  DAT_18267982c = 0xa13f7d7b;
  DAT_182679958 = 0x4671655c;
  DAT_182679a94 = 0xf2e7fe77;
  DAT_182679a3c = 0x68f5bb89;
  uVar33 = DAT_18267981c | 0x2b800f97;
  DAT_182679800 =
       (uVar18 & 0xff0000 | uVar18 >> 0x10) >> 8 | (uVar18 * 0x10000 | uVar18 & 0xff00) << 8;
  DAT_182679a6c = 0x5e70ac13;
  DAT_182679abc = 0x8000020;
  uVar4 = DAT_18267981c | 0x81bdd207;
  DAT_1826798b0 = 0x154c81f1;
  uVar1 = DAT_18267981c << 0x10;
  uVar2 = DAT_18267981c >> 0x10;
  DAT_18267997c = uVar1 | uVar2;
  uVar5 = DAT_18267981c ^ 0x114cf3cc;
  DAT_182679aa8 = 0x759e6051;
  uVar6 = DAT_18267981c + 0x4fd5bddf | 0x4260b353;
  uVar26 = DAT_18267981c & 7;
  uVar7 = 0xa4c283e3;
  if (uVar26 < 4) {
    if (1 < uVar26) {
      uVar7 = 0x361aaca7;
      uVar31 = 0xa9bcb5f8;
      bVar35 = uVar26 < 3;
      goto LAB_1817b4dd6;
    }
    uVar31 = 0xe718cb2e;
    if (uVar26 == 0) {
      uVar31 = (ulonglong)DAT_18267981c;
    }
  }
  else {
    if (uVar26 < 6) {
      uVar31 = 0x1e79b1f9;
      bVar35 = uVar26 < 5;
    }
    else {
      uVar7 = 0x21146998;
      uVar31 = 0xd6335c76;
      bVar35 = uVar26 < 7;
    }
LAB_1817b4dd6:
    if (bVar35) {
      uVar31 = (ulonglong)uVar7;
    }
  }
  DAT_182679a9c = local_448c | 0xa51e10de;
  DAT_182679a50 =
       (DAT_18267981c & 0xff0000 | DAT_18267981c >> 0x10) >> 8 |
       (DAT_18267981c & 0xff00 | DAT_18267981c << 0x10) << 8;
  uVar7 = uVar2 & 3;
  if (uVar7 < 2) {
    local_45e4 = 0x8737ddbd;
    if (uVar7 == 0) {
      local_45e4 = DAT_18267997c;
    }
  }
  else {
    local_45e4 = 0xdce343cc;
    if (uVar7 < 3) {
      local_45e4 = 0xa6cd1b13;
    }
  }
  DAT_182679820 = uVar33 * -0x409f3fa4;
  uVar8 = DAT_18267981c ^ 0xa23b1f95;
  uVar7 = DAT_18267981c + 0x4fafa749;
  DAT_1826799dc = uVar7 & 0x1fe1b175;
  DAT_182679a64 = DAT_18267981c & 0x33d5a869 ^ 0xeacbd11b;
  DAT_182679894 = ~DAT_18267981c;
  uVar9 = DAT_18267981c & 0xf10ee163 | 0x684f1f9e;
  uVar10 = DAT_18267997c | 0xc6ede318;
  DAT_182679b08 = DAT_18267997c | 0x6775a678;
  uVar11 = uVar18 & 7;
  if (uVar11 < 4) {
    if (1 < uVar11) {
      uVar24 = 0xaa0f5a56;
      uVar18 = 0x49fbb164;
      bVar35 = uVar11 < 3;
      goto LAB_1817b4f21;
    }
    uVar24 = 0xb03b578b;
    if (uVar11 == 0) {
      uVar24 = (ulonglong)uVar18;
    }
  }
  else {
    if (uVar11 < 6) {
      uVar24 = 0x9d2e16e4;
      uVar18 = 0x448a8bae;
      bVar35 = uVar11 < 5;
    }
    else {
      uVar24 = 0x4b8489ea;
      uVar18 = 0xe3ce30cb;
      bVar35 = uVar11 < 7;
    }
LAB_1817b4f21:
    if (bVar35) {
      uVar24 = (ulonglong)uVar18;
    }
  }
  DAT_182679adc = DAT_182679800 * -0x49691c37;
  uVar11 = DAT_18267981c ^ 0x565160d5;
  uVar18 = uVar5 & 3;
  if (uVar18 < 2) {
    local_45c8 = 0x4e2bd5d1;
    if (uVar18 == 0) {
      local_45c8 = uVar5;
    }
  }
  else {
    local_45c8 = 0x5bb805d4;
    if (uVar18 < 3) {
      local_45c8 = 0xb0e6a73f;
    }
  }
  uVar25 = (uVar4 & 0xff0000 | uVar4 >> 0x10) >> 8;
  DAT_182679ab4 = DAT_18267997c ^ 0x568ce4c;
  DAT_1826799d8 = uVar25 | (uVar4 << 0x10 | uVar4 & 0xff00) << 8;
  uVar18 = DAT_18267981c + 0x4fd5bddf >> 0x10;
  DAT_18267999c = (DAT_18267981c + 0x4fd5bddf) * 0x10000 | uVar18;
  DAT_1826798e0 = DAT_18267981c & 0xd3baf528;
  DAT_182679904 = DAT_18267981c | 0x5a9c9a82;
  DAT_182679b28 = uVar2 << 0x10 | DAT_18267981c & 0xffff;
  DAT_182679974 = local_45e4 & 0x4fadc47a;
  DAT_182679808 = local_448c + 0x6f89a214;
  uVar3 = DAT_1826799dc >> 0x10;
  DAT_182679908 = DAT_1826799dc << 0x10 | uVar3;
  DAT_1826798f0 = DAT_182679a64 << 0x10 | DAT_182679a64 >> 0x10;
  DAT_182679874 = uVar9 ^ 0x5bc595dd;
  uVar23 = (uint)uVar24;
  DAT_182679838 = (DAT_18267981c & 0xf10ee163) + 0x3fb72f27;
  DAT_182679b1c = DAT_18267981c + 0x4fafa749 | 0x33f2c15;
  DAT_1826795b0 = uVar8 * 0x1b391d74;
  DAT_1826799a4 = (DAT_18267981c + 0x60314d65) * 0x7afef4b5;
  uVar12 = uVar5 << 0x10 | uVar5 >> 0x10;
  uVar19 = uVar11 * -0x4f1d8770;
  DAT_182679970 = DAT_182679800 | 0xc7d794ff;
  uVar13 = DAT_18267981c & 3;
  if (uVar13 < 2) {
    uVar20 = 0x6151cf96;
    if (uVar13 == 0) {
      uVar20 = DAT_18267981c;
    }
  }
  else {
    uVar20 = 0x8f10b6a0;
    if (uVar13 < 3) {
      uVar20 = 0x99b5ee94;
    }
  }
  uVar13 = DAT_18267981c + 0x9785ae5;
  uVar14 = uVar13 & 0xdfc73870;
  DAT_18267988c = DAT_18267981c | 0xdfee75be;
  DAT_182679a5c =
       ((local_448c & 0xff00) << 8 | (local_448c << 0x10 & 0xffffff) >> 8) >> 8 |
       (uVar32 << 0x10 | (local_448c & 0xff0000) >> 8) << 8;
  uVar32 = DAT_18267981c ^ 0x9f7b941d;
  DAT_182679a00 = DAT_18267981c * -0x590434c9;
  if (uVar26 < 4) {
    if (uVar26 < 2) {
      DAT_182679900 = 0xc4b49c71;
      if (uVar26 == 0) {
        DAT_182679900 = DAT_18267981c;
      }
      goto LAB_1817b5356;
    }
    DAT_182679900 = 0xaf375073;
    uVar15 = 0x8c71d2d5;
    bVar35 = uVar26 < 3;
  }
  else if (uVar26 < 6) {
    DAT_182679900 = 0x1a2060ec;
    uVar15 = 0xeabcb6b8;
    bVar35 = uVar26 < 5;
  }
  else {
    uVar15 = 0xd1357755;
    bVar35 = uVar26 < 7;
  }
  if (bVar35) {
    DAT_182679900 = uVar15;
  }
LAB_1817b5356:
  DAT_18267985c = ~(DAT_182679a28 | 0xc2b272bf);
  uVar30 = (uint)uVar31;
  DAT_182679984 = uVar6 + 0xf10ee163;
  DAT_18267994c =
       (uVar30 & 0xff0000 | (uint)(uVar31 >> 0x10)) >> 8 | (uVar30 << 0x10 | uVar30 & 0xff00) << 8;
  DAT_182679a70 = uVar6 * 0x20207353 & 0xdce343cc;
  uVar27 = (DAT_182679820 & 0xff0000 | DAT_182679820 >> 0x10) >> 8;
  DAT_182679950 = uVar27 | (uVar33 * -0x3fa40000 | DAT_182679820 & 0xff00) << 8;
  uVar21 = uVar30 + 0x3f59573b;
  DAT_182679880 = uVar33 * -0x18e734d2;
  uVar26 = DAT_182679a9c >> 0x10;
  DAT_182679a08 = DAT_182679a9c << 0x10 | uVar26;
  DAT_1826799c0 = DAT_182679974 + 0x1c31cf35;
  uVar28 = (DAT_182679808 & 0xff0000 | DAT_182679808 >> 0x10) >> 8;
  DAT_1826798c0 = DAT_182679b08 + 0x568ce4c;
  DAT_182679a80 = uVar28 | (DAT_182679808 * 0x10000 | DAT_182679808 & 0xff00) << 8;
  DAT_182679920 = uVar9 ^ 0x887f60f5;
  uVar15 = DAT_1826799dc << 0x10 & 0xff0000;
  uVar22 = (uVar15 | uVar7 & 0xb175) >> 8;
  DAT_182679990 = uVar22 | (uVar3 << 0x10 | uVar3 & 0xff00) << 8;
  DAT_182679a14 =
       (DAT_182679838 & 0xff0000 | DAT_182679838 >> 0x10) >> 8 |
       (DAT_182679838 * 0x10000 | DAT_182679838 & 0xff00) << 8;
  uVar16 = DAT_182679894 * uVar8;
  DAT_182679b00 = ~(local_45c8 | 0x1b71eb6f);
  DAT_182679ae8 = DAT_18267997c + 0x9b38cfa2 & DAT_182679adc;
  iVar17 = DAT_182679a5c + (DAT_182679894 ^ 0xf6d871d9);
  uVar29 = ((DAT_18267981c & 0x9500) << 8 | (DAT_182679a50 & 0xd5958eda) >> 0x10) >> 8 |
           ((DAT_182679a50 & 0xd5958eda) << 0x10 | (DAT_18267981c & 0x8e0000) >> 8) << 8;
  uVar9 = DAT_1826798e0 >> 0x10;
  uVar18 = uVar18 & 7;
  if (uVar18 < 4) {
    if (uVar18 < 2) {
      uVar34 = DAT_18267988c;
      if (uVar18 == 0) {
        uVar34 = DAT_18267999c;
      }
    }
    else {
      uVar34 = DAT_18267981c;
      if (uVar18 < 3) {
        uVar34 = DAT_182679a28;
      }
    }
  }
  else if (uVar18 < 6) {
    uVar34 = DAT_182679ab4;
    if (uVar18 < 5) {
      uVar34 = uVar32;
    }
  }
  else {
    uVar34 = DAT_182679a28 | 0xc2b272bf;
    if (uVar18 < 7) {
      uVar34 = DAT_18267981c;
    }
  }
  DAT_1826797f0 = DAT_182679a00 - (DAT_182679a28 | 0xdbf2f6ff);
  DAT_1826798ac = uVar6 * 0x20207353 ^ DAT_18267981c + 0x4fd5bddf;
  DAT_182679844 = (local_45e4 ^ 0xd1f1bc3f) + DAT_182679a70;
  DAT_1826795ac = uVar30 & uVar6;
  DAT_1826798ec = ~DAT_182679a9c - DAT_18267997c;
  DAT_182679814 = DAT_182679880 | ~DAT_182679a9c ^ 0xa4c283e3;
  DAT_1826795b8 = uVar33 << 0x10 | uVar33 >> 0x10;
  DAT_182679ad8 =
       (uVar2 << 0x10 & 0xff0000 | uVar2) >> 8 |
       (DAT_18267981c << 0x10 | DAT_18267981c & 0xff00) << 8;
  DAT_182679850 = uVar26 << 0x10 | DAT_182679a9c & 0xffff;
  DAT_182679a7c =
       ((uVar1 & 0xff0000 | DAT_18267981c & 0xffff) >> 8) << 0x10 |
       ((uVar2 & 0xff) << 0x10 | uVar2 & 0xff00) >> 8;
  DAT_18267992c = DAT_182679920 ^ (uVar10 << 0x10 | uVar10 >> 0x10);
  DAT_182679b20 = DAT_182679a64 - (uVar10 & 0x684f1f9e);
  DAT_1826799b4 =
       (uVar7 & 0xe10000 | DAT_1826799dc >> 0x10) >> 8 |
       (DAT_1826799dc << 0x10 | uVar7 & 0xb100) << 8;
  DAT_182679a90 = DAT_182679908 | uVar4;
  DAT_1826798fc = DAT_182679b1c - DAT_182679a14;
  DAT_1826799f0 =
       (uVar19 & 0xff0000 | uVar19 >> 0x10) >> 8 | (uVar11 * 0x78900000 | uVar19 & 0xff00) << 8;
  DAT_182679b18 =
       ((DAT_18267981c & 0xb80000 | (DAT_18267981c & 0xb4b82183) >> 0x10) >> 8 |
       ((DAT_18267981c & 0xb4b82183) << 0x10 | DAT_18267981c & 0x2100) << 8) +
       DAT_18267981c + 0x60314d65;
  DAT_182679918 = (DAT_18267981c | 0xf9fdd7bf) * uVar23;
  DAT_1826799b0 = uVar12 & DAT_18267997c;
  uVar18 = DAT_18267997c + 0x9b38cfa2 & 3;
  if (uVar18 < 2) {
    DAT_1826799ac = uVar11;
    if (uVar18 == 0) {
      DAT_1826799ac = DAT_18267997c + 0x9b38cfa2;
    }
  }
  else {
    DAT_1826799ac = DAT_182679b00;
    if (uVar18 < 3) {
      DAT_1826799ac = DAT_18267981c;
    }
  }
  DAT_182679ac4 = DAT_1826799d8 + DAT_182679adc;
  DAT_182679938 = uVar14 | DAT_182679970;
  DAT_182679a38 = uVar14 * DAT_18267981c;
  DAT_182679ab0 = uVar29 - DAT_182679a5c;
  DAT_1826799cc = iVar17 * DAT_1826798e0;
  DAT_182679988 = DAT_182679894 * DAT_18267981c;
  DAT_182679a10 = uVar34 & (DAT_18267981c | 0x9eea0432);
  DAT_182679818 = DAT_1826797f0 * ((DAT_182679a28 | 0xc33990eb) + 0xa2fbf16f);
  uVar18 = DAT_18267981c + 0x4fd5bddf;
  if ((local_448c >> 0x10 & 0x100) == 0) {
    uVar18 = DAT_182679a28;
  }
  DAT_182679a34 = uVar32 - DAT_1826798ac;
  DAT_182679acc = DAT_18267999c + (DAT_182679894 << 0x10 | DAT_182679894 >> 0x10);
  DAT_182679a58 = uVar27 << 0x10 | (uVar33 * -0x3fa40000 & 0xffffff | DAT_182679820 & 0xff00) >> 8;
  DAT_182679b14 = DAT_182679814 << 0x10 | DAT_182679814 >> 0x10;
  DAT_1826799a0 = ~uVar6;
  DAT_182679964 = DAT_182679ad8 & DAT_182679a08;
  DAT_182679aec = (uVar33 ^ 0x8605610e) + 0xd6523d55 ^ DAT_182679820;
  DAT_182679944 = DAT_182679808 ^ DAT_182679b08;
  DAT_182679a60 =
       (uVar1 & 0xff0000 | DAT_18267981c & 0xffff) >> 8 | (uVar2 << 0x10 | uVar2 & 0xff00) << 8;
  DAT_182679994 = DAT_182679a7c * (DAT_1826798c0 * 0x10000 | DAT_1826798c0 >> 0x10);
  DAT_1826797fc = DAT_18267997c ^ DAT_182679a28;
  DAT_182679a04 = DAT_182679a64 - DAT_182679b20;
  DAT_1826799e8 = (DAT_182679a64 >> 0x10) << 0x10 | DAT_182679a64 & 0xffff;
  DAT_1826798d4 =
       (uVar16 * 0x10000 | uVar16 & 0xff00) << 8 | (uVar16 & 0xff0000 | uVar16 >> 0x10) >> 8;
  DAT_1826799e0 = ~DAT_182679874;
  DAT_1826798cc = (DAT_18267981c + 0x60314d65) * -0xb4b0000 | DAT_1826799a4 >> 0x10;
  DAT_182679898 = DAT_1826799f0 ^ (DAT_18267981c | 0xf9fdd7bf);
  DAT_1826799c8 = DAT_1826795b0 | DAT_182679838;
  DAT_182679860 = uVar11 * 0x78900000 | uVar19 >> 0x10;
  DAT_1826798f4 =
       ((uVar23 & 0xff0000 | (uint)(uVar24 >> 0x10)) >> 8 | (uVar23 << 0x10 | uVar23 & 0xff00) << 8)
       - DAT_1826799ac;
  DAT_1826798b4 = uVar12 ^ DAT_182679918;
  DAT_182679b3c =
       ((uVar13 & 0xc70000 | uVar14 >> 0x10) >> 8 | (uVar14 << 0x10 | uVar13 & 0x3800) << 8) ^
       0xd152ac68;
  DAT_1826799f8 = DAT_182679ac4 ^ DAT_182679ae8;
  uVar6 = (DAT_1826799b0 & 0xff0000 | DAT_1826799b0 >> 0x10) >> 8;
  DAT_182679998 = uVar6 | (DAT_1826799b0 << 0x10 | DAT_1826799b0 & 0xff00) << 8;
  DAT_182679aa0 = DAT_182679b00 & DAT_18267981c & 0xae2d173f;
  DAT_182679ae4 = DAT_182679adc - uVar11;
  DAT_1826799ec =
       ((uVar4 & 0xff00) << 8 | (uVar4 << 0x10 & 0xffffff) >> 8) >> 8 |
       (uVar25 << 0x10 | (uVar4 & 0xff0000) >> 8) << 8;
  DAT_182679b34 =
       (DAT_182679970 + 0x160e16f1) * (DAT_1826799d8 - DAT_18267997c) -
       (DAT_1826798e0 << 0x10 | uVar9);
  uVar4 = (DAT_182679970 & 0xff0000 | DAT_182679970 >> 0x10) >> 8;
  DAT_1826799a8 = uVar4 | (DAT_182679970 << 0x10 | DAT_182679970 & 0xff00) << 8;
  DAT_1826797ec =
       ((DAT_1826798e0 << 0x10 & 0xff0000 | DAT_18267981c & 0xf528) >> 8 |
       (uVar9 << 0x10 | uVar9 & 0xff00) << 8) ^ uVar20 + uVar5;
  uVar5 = DAT_182679988 & 7;
  if (uVar5 < 4) {
    if (uVar5 < 2) {
      DAT_1826798e0 = DAT_18267981c;
      if (uVar5 == 0) {
        DAT_1826798e0 = DAT_182679988;
      }
    }
    else {
      DAT_1826798e0 = DAT_1826799cc;
      if (uVar5 < 3) {
        DAT_1826798e0 = DAT_182679ab0;
      }
    }
  }
  else if (uVar5 < 6) {
    DAT_1826798e0 = DAT_182679894;
    if (uVar5 < 5) {
      DAT_1826798e0 = DAT_18267997c;
    }
  }
  else if (uVar5 < 7) {
    DAT_1826798e0 = uVar29;
  }
  DAT_182679b04 = iVar17 * DAT_182679a38;
  DAT_182679960 = uVar18 | DAT_182679818;
  DAT_182679848 = DAT_1826797f0 + DAT_1826795ac;
  uVar18 = DAT_182679a10 & 7;
  if (uVar18 < 4) {
    if (uVar18 < 2) {
      DAT_182679ab4 = DAT_18267994c & DAT_182679ab4;
      if (uVar18 == 0) {
        DAT_182679ab4 = DAT_182679a10;
      }
    }
    else {
      DAT_182679ab4 = DAT_18267994c;
      if (uVar18 < 3) {
        DAT_182679ab4 = uVar34;
      }
    }
  }
  else if (uVar18 < 6) {
    if (uVar18 < 5) {
      DAT_182679ab4 = DAT_18267985c;
    }
  }
  else {
    DAT_182679ab4 = DAT_182679844;
    if (uVar18 < 7) {
      DAT_182679ab4 = DAT_18267985c + DAT_182679900;
    }
  }
  DAT_182679a54 = DAT_1826798ac & uVar32;
  DAT_1826799fc = DAT_182679974 | DAT_182679a28 | 0xdbf2f6ff;
  DAT_182679a40 = DAT_182679b14 * DAT_182679984;
  DAT_1826797e8 = DAT_182679a70 * DAT_182679b28;
  DAT_182679a20 = DAT_1826798ec * 0x10000 | DAT_1826798ec >> 0x10;
  DAT_1826798a0 = DAT_1826799a0 - DAT_182679950;
  DAT_1826798c4 =
       DAT_1826798ec * (DAT_182679950 ^ DAT_182679904) -
       (DAT_18267999c * 0x1e79b1f9 | DAT_182679904 << 0x10 | DAT_182679904 >> 0x10);
  DAT_182679890 = (uVar33 >> 0x10) << 0x10 | uVar33 & 0xffff;
  DAT_1826798dc =
       (uVar28 << 0x10 | (DAT_182679808 * 0x10000 & 0xffffff | DAT_182679808 & 0xff00) >> 8) ^
       DAT_182679a9c;
  DAT_182679934 = DAT_182679814 * DAT_1826795b8 * DAT_182679984;
  DAT_182679b30 =
       DAT_182679a80 -
       ((uVar21 & 0xff0000 | uVar21 >> 0x10) >> 8 | (uVar21 * 0x10000 | uVar21 & 0xff00) << 8);
  DAT_182679b24 = DAT_182679964 & DAT_182679820;
  DAT_18267983c = ~DAT_182679880;
  DAT_182679a68 = uVar26 << 0x10 | DAT_182679a9c & 0xffff;
  DAT_182679978 = DAT_182679820 & DAT_182679b08;
  DAT_1826797f4 = DAT_182679850 ^ DAT_182679aec;
  DAT_182679858 = local_448c * 2 + 0x6f89a214;
  DAT_182679810 = ~DAT_18267997c;
  DAT_18267995c = DAT_1826798c0 ^ DAT_182679a64;
  DAT_1826799c4 = DAT_182679944 - DAT_182679a7c;
  DAT_1826799e4 = DAT_182679a04 - DAT_182679994;
  DAT_182679948 = DAT_182679a60 ^ DAT_1826798f0;
  DAT_1826799f4 = DAT_182679920 & DAT_182679b20;
  DAT_1826795a0 = DAT_182679a28 - DAT_1826797fc;
  DAT_1826798a4 = DAT_1826798fc * DAT_18267992c;
  DAT_182679af0 =
       (uVar1 & 0xff0000 | DAT_18267981c & 0xffff) >> 8 | (uVar2 << 0x10 | uVar2 & 0xff00) << 8;
  DAT_1826798e8 = DAT_182679908 ^ DAT_1826798d4;
  DAT_182679a78 = DAT_182679908 - DAT_182679a90;
  DAT_182679aa4 = DAT_1826799b4 - DAT_182679b1c;
  DAT_182679968 = DAT_1826798cc ^ DAT_1826799e8;
  DAT_18267998c = DAT_182679898 - DAT_1826799e0;
  DAT_1826798f8 = ~DAT_1826799a4;
  DAT_1826798b8 =
       (uVar22 << 0x10 | uVar15 >> 8) << 8 |
       ((uVar3 & 0xff00) << 8 | (uVar3 << 0x10 & 0xffffff) >> 8) >> 8;
  DAT_182679868 = DAT_182679874 + uVar8 * -0x1b391d74;
  DAT_1826797e4 = DAT_182679b3c & DAT_18267997c;
  DAT_182679940 = DAT_182679b18 * 0x10000 | DAT_182679b18 >> 0x10;
  DAT_182679878 = DAT_182679a14 + DAT_182679ae8;
  DAT_1826795b4 = DAT_1826798b4 - DAT_182679860;
  DAT_1826795a8 =
       (DAT_1826799ac & 0xff0000 | DAT_1826799ac >> 0x10) >> 8 |
       (DAT_1826799ac << 0x10 | DAT_1826799ac & 0xff00) << 8;
  DAT_18267959c = uVar6 << 0x10 | (DAT_1826799b0 << 0x10 & 0xffffff | DAT_1826799b0 & 0xff00) >> 8;
  uVar18 = (uVar19 >> 0x10 & 0x300) >> 8;
  if (uVar18 < 2) {
    DAT_182679888 = DAT_182679918;
    if (uVar18 == 0) {
      DAT_182679888 = DAT_1826799f0;
    }
  }
  else {
    DAT_182679888 = DAT_182679aa0;
    if (uVar18 < 3) {
      DAT_182679888 = DAT_1826798f4;
    }
  }
  DAT_1826799d4 = DAT_182679adc & DAT_1826799f8;
  DAT_182679b10 = DAT_18267997c - DAT_1826799c8;
  DAT_182679afc = DAT_18267997c * DAT_182679a5c;
  DAT_1826799b8 =
       (DAT_182679938 & 0xff0000 | DAT_182679938 >> 0x10) >> 8 |
       (DAT_182679938 << 0x10 | DAT_182679938 & 0xff00) << 8;
  DAT_1826799bc = DAT_182679ae4 | DAT_1826799d8;
  DAT_182679954 = DAT_1826799b0 ^ DAT_1826799ec;
  DAT_182679a74 = DAT_182679b00 << 0x10 | DAT_182679b00 >> 0x10;
  DAT_1826798d0 = DAT_182679ac4 * 0x10000 | DAT_182679ac4 >> 0x10;
  DAT_18267986c =
       (DAT_1826799cc & 0xff0000 | DAT_1826799cc >> 0x10) >> 8 |
       (DAT_1826799cc * 0x10000 | DAT_1826799cc & 0xff00) << 8;
  DAT_182679840 = DAT_182679b34 * DAT_182679800;
  DAT_182679914 =
       (DAT_1826798e0 & 0xff0000 | DAT_1826798e0 >> 0x10) >> 8 |
       (DAT_1826798e0 << 0x10 | DAT_1826798e0 & 0xff00) << 8;
  DAT_182679910 = ~DAT_182679970;
  DAT_182679864 = DAT_182679ab0 * 0x10000 | DAT_182679ab0 >> 0x10;
  DAT_182679828 = uVar4 << 0x10 | (DAT_182679970 << 0x10 & 0xffffff | DAT_182679970 & 0xff00) >> 8;
  DAT_182679598 = DAT_182679b04 ^ DAT_182679988;
  DAT_1826798d8 = DAT_18267988c + DAT_182679a38;
  DAT_182679930 = DAT_1826797ec + DAT_18267981c;
  DAT_18267996c = DAT_182679a28 | DAT_18267981c;
  DAT_182679a84 = DAT_1826795ac ^ DAT_182679818;
  DAT_1826798e4 =
       (DAT_182679960 & 0xff0000 | DAT_182679960 >> 0x10) >> 8 |
       (DAT_182679960 << 0x10 | DAT_182679960 & 0xff00) << 8;
  DAT_182679830 = ~DAT_182679848;
  DAT_182679804 = DAT_182679a54 | DAT_18267999c;
  DAT_18267984c = DAT_182679a00 & DAT_182679894;
  DAT_182679aac = DAT_1826797f0 ^ DAT_182679a10;
  DAT_182679a98 = DAT_18267994c * DAT_182679ab4;
  DAT_1826798bc = DAT_182679984 + DAT_182679900;
  DAT_182679af4 = DAT_18267985c - DAT_182679a40;
  DAT_1826795a4 = DAT_182679844 + DAT_182679974;
  DAT_182679884 = DAT_182679a58 - DAT_182679a34;
  DAT_18267993c = DAT_1826798ac - DAT_182679acc;
  DAT_182679b2c = DAT_182679890 ^ DAT_182679a9c;
  uVar18 = (DAT_18267981c & 0x70000) >> 0x10;
  if (uVar18 < 4) {
    if (uVar18 < 2) {
      DAT_182679a48 = DAT_1826798c4;
      if (uVar18 == 0) {
        DAT_182679a48 = DAT_1826795b8;
      }
    }
    else {
      DAT_182679a48 = DAT_182679b14;
      if (uVar18 < 3) {
        DAT_182679a48 = DAT_1826799fc;
      }
    }
  }
  else if (uVar18 < 6) {
    DAT_182679a48 = DAT_182679a70;
    if (uVar18 < 5) {
      DAT_182679a48 = DAT_1826797e8;
    }
  }
  else {
    DAT_182679a48 = DAT_1826798a0;
    if (uVar18 < 7) {
      DAT_182679a48 = DAT_1826798ec;
    }
  }
  uVar18 = DAT_18267981c & 3;
  if (uVar18 < 2) {
    DAT_182679824 = DAT_182679814;
    if (uVar18 == 0) {
      DAT_182679824 = DAT_182679b28;
    }
  }
  else {
    DAT_182679824 = DAT_182679904;
    if (uVar18 < 3) {
      DAT_182679824 = DAT_182679a20;
    }
  }
  DAT_1826799d0 = DAT_182679820 - DAT_182679aec;
  DAT_182679b0c = DAT_182679a80 | DAT_182679b30;
  DAT_182679a88 = DAT_182679880 * DAT_1826799a0;
  DAT_182679628 = 0xac8;
  DAT_182679924 = DAT_182679ad8 - DAT_182679964 ^ 0xdf8b203d;
  DAT_182679870 = DAT_182679978 & DAT_182679a08;
  DAT_1826798a8 = DAT_1826797f4 ^ DAT_18267983c;
  DAT_182679a4c = DAT_182679934 * 0x10000 | DAT_182679934 >> 0x10;
  DAT_182679ac0 = DAT_1826799c4 & DAT_182679b24 ^ 0x887f28d;
  DAT_182679ac8 = DAT_182679a04 * 0x10000 | DAT_182679a04 >> 0x10;
  DAT_18267989c = (DAT_182679974 + 0x1c31cf35) - DAT_182679850;
  local_48 = local_4450;
  DAT_182679a18 = &local_60;
  iVar17 = 0x1a;
  DAT_182679928 = DAT_18267981c;
  DAT_182679a24 = DAT_1826799b4;
  DAT_182679a2c = DAT_182679a28;
  DAT_182679a8c = DAT_18267981c;
  DAT_182679ab8 = DAT_18267997c;
  DAT_182679ae0 = DAT_18267997c;
  DAT_182679af8 = DAT_18267997c;
  DAT_182679b38 = DAT_182679908;
  local_45e8 = DAT_1826798d4;
  local_45e4 = DAT_1826797ec;
  local_45e0 = DAT_1826799a8;
  local_45dc = DAT_1826799ec;
  local_45d8 = DAT_182679b3c;
  local_45d4 = DAT_182679998;
  local_45d0 = DAT_182679894;
  local_45cc = DAT_1826799c4;
  local_45c8 = DAT_182679b00;
  local_45c4 = DAT_182679b24;
  local_45c0 = DAT_1826799f0;
  local_45bc = DAT_182679a04;
  local_45b8 = DAT_1826799b4;
  local_45b4 = DAT_1826799a0;
  local_45b0 = DAT_182679a7c;
  local_45ac = DAT_1826798ac;
  local_45a8 = DAT_1826798ec;
  local_45a4 = DAT_182679964;
  local_45a0 = DAT_182679960;
  local_459c = DAT_182679814;
  local_4598 = DAT_1826798c4;
  local_4594 = DAT_182679850;
  local_4590 = DAT_1826799d8;
  local_458c = DAT_182679a5c;
  local_4588 = DAT_182679970;
  local_4584 = DAT_182679a38;
  local_4580 = DAT_182679a20;
  local_457c = DAT_1826797f4;
  local_4578 = DAT_1826797e8;
  local_4574 = DAT_1826798a0;
  local_4570 = DAT_182679934;
  local_456c = DAT_182679a60;
  local_4568 = DAT_182679874;
  local_4564 = DAT_1826798f4;
  local_4560 = DAT_182679a9c;
  local_455c = DAT_182679b28;
  local_4558 = DAT_182679ad8;
  local_4554 = DAT_182679b04;
  local_4550 = DAT_182679a08;
  local_454c = DAT_182679adc;
  local_4548 = DAT_182679860;
  local_4544 = DAT_1826798b4;
  local_4540 = DAT_1826799fc;
  local_453c = DAT_182679890;
  local_4538 = DAT_182679a40;
  local_4534 = DAT_18267983c;
  local_4530 = DAT_182679988;
  local_452c = DAT_182679908;
  local_4528 = DAT_182679a10;
  local_4524 = DAT_182679b14;
  local_4520 = DAT_182679a64;
  local_451c = DAT_182679aec;
  local_4518 = DAT_18267999c;
  local_4514 = DAT_182679818;
  local_4510 = DAT_182679b08;
  local_450c = DAT_182679990;
  local_4508 = DAT_182679b34;
  local_4504 = DAT_1826797f0;
  local_4500 = DAT_18267994c;
  local_44fc = DAT_18267985c;
  local_44f8 = DAT_182679974;
  local_44f4 = DAT_182679a70;
  local_44f0 = DAT_182679904;
  local_44ec = DAT_182679a80;
  local_44e8 = DAT_182679880;
  local_44e4 = DAT_1826799b0;
  local_44e0 = DAT_1826798cc;
  local_44dc = DAT_182679aa0;
  local_44d8 = DAT_182679ae4;
  local_44d4 = DAT_182679848;
  local_44d0 = DAT_182679a54;
  local_44cc = DAT_182679978;
  local_44c8 = DAT_182679b30;
  local_44c4 = DAT_182679a50;
  local_44c0 = DAT_1826798c0;
  local_44bc = DAT_182679a00;
  local_44b8 = DAT_1826798f0;
  local_44b4 = DAT_182679920;
  local_44b0 = DAT_182679b20;
  local_44ac = DAT_1826799a4;
  local_44a8 = DAT_182679b1c;
  local_44a4 = DAT_182679a14;
  local_44a0 = DAT_182679ae8;
  local_449c = DAT_182679918;
  local_4498 = DAT_182679ac4;
  local_4494 = DAT_1826799cc;
  local_4490 = DAT_182679ab0;
  local_4488 = DAT_18267988c;
  local_4484 = DAT_182679994;
  local_4480 = DAT_1826797fc;
  local_447c = DAT_1826798fc;
  local_4478 = DAT_18267992c;
  local_4474 = DAT_182679a90;
  local_4470 = DAT_1826799e8;
  local_446c = DAT_182679898;
  local_4468 = DAT_1826799e0;
  local_4464 = DAT_182679b18;
  local_4460 = DAT_1826799f8;
  local_445c = DAT_1826799c8;
  local_4458 = DAT_182679938;
  local_4454 = DAT_182679a58;
  local_4450[0] = DAT_182679a34;
  local_4448 = param_3;
  local_4440 = param_2;
  local_4438 = param_1;
  local_60 = param_1;
  local_58 = param_2;
  local_50 = param_3;
  do {
    iVar17 = (**(code **)(&DAT_182478090 + (longlong)iVar17 * 8))();
  } while (iVar17 != 0);
  DAT_182679a18 = DAT_182679a18 + 4;
}



############ FUN_ 1817217c0 size=7929 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x00018172214c) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1817217c0(byte *param_1,byte *param_2,byte *param_3,undefined8 param_4,longlong param_5)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  byte *pbVar13;
  uint uVar14;
  uint uVar15;
  longlong lVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  bool bVar22;
  undefined1 auStack_4b78 [32];
  uint local_4b58;
  uint local_4b54;
  uint local_4b50;
  uint local_4b4c;
  uint local_4b48;
  uint local_4b44;
  uint local_4b40;
  uint local_4b3c;
  uint local_4b38;
  uint local_4b34;
  uint local_4b30;
  uint local_4b2c;
  uint local_4b28;
  uint local_4b24;
  uint local_4b20;
  uint local_4b1c;
  uint local_4b18;
  uint local_4b14;
  int local_4b10;
  uint local_4b0c;
  uint local_4b08;
  uint local_4b04;
  int local_4b00;
  uint local_4afc;
  uint local_4af8;
  uint local_4af4;
  uint local_4af0;
  uint local_4aec;
  uint local_4ae8;
  uint local_4ae4;
  uint local_4ae0;
  uint local_4adc;
  uint local_4ad8;
  uint local_4ad4;
  uint local_4ad0;
  uint local_4acc;
  uint local_4ac8;
  uint local_4ac4;
  uint local_4ac0;
  uint local_4abc;
  uint local_4ab8;
  uint local_4ab4;
  uint local_4ab0;
  uint local_4aac;
  uint local_4aa8;
  uint local_4aa4;
  uint local_4aa0;
  uint local_4a9c;
  uint local_4a98;
  uint local_4a94;
  uint local_4a90;
  uint local_4a8c;
  uint local_4a88;
  uint local_4a84;
  uint local_4a80;
  uint local_4a7c;
  uint local_4a78;
  int local_4a74;
  uint local_4a70;
  uint local_4a6c;
  int local_4a68;
  uint local_4a64;
  uint local_4a60;
  uint local_4a5c;
  uint local_4a58;
  uint local_4a54;
  uint local_4a50;
  uint local_4a4c;
  uint local_4a48;
  uint local_4a44;
  uint local_4a40;
  uint local_4a3c;
  uint local_4a38;
  uint local_4a34;
  uint local_4a30;
  uint local_4a2c;
  int local_4a28;
  uint local_4a24;
  uint local_4a20;
  uint local_4a1c;
  uint local_4a18;
  uint local_4a14;
  uint local_4a10;
  uint local_4a0c;
  uint local_4a08;
  uint local_4a04;
  int local_4a00;
  uint local_49fc;
  int local_49f8;
  uint local_49f4;
  int local_49f0;
  uint local_49ec;
  undefined1 *local_49e8;
  byte *local_49e0;
  undefined8 local_49d8;
  byte *local_49d0;
  byte *local_49c8;
  undefined1 local_49b8 [18760];
  byte *local_70;
  byte *local_68;
  byte *local_60;
  undefined8 local_58;
  longlong local_50;
  undefined1 **local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  undefined8 uStack_30;
  
  uStack_30 = 0x1817217e2;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4b78;
  local_49e8 = local_40;
  _DAT_182679590 = local_49b8;
  DAT_18267947c = 0x811c9dc5;
  DAT_182679520 = 0;
  if (param_1 != (byte *)0x0) {
    DAT_18267947c =
         ((((((((((((((((((((((((((((((((*param_1 ^ 0x811c9dc5) * 0x1000193 ^ (uint)param_1[1]) *
                                       0x1000193 ^ (uint)param_1[2]) * 0x1000193 ^ (uint)param_1[3])
                                     * 0x1000193 ^ (uint)param_1[4]) * 0x1000193 ^ (uint)param_1[5])
                                   * 0x1000193 ^ (uint)param_1[6]) * 0x1000193 ^ (uint)param_1[7]) *
                                 0x1000193 ^ (uint)param_1[8]) * 0x1000193 ^ (uint)param_1[9]) *
                               0x1000193 ^ (uint)param_1[10]) * 0x1000193 ^ (uint)param_1[0xb]) *
                             0x1000193 ^ (uint)param_1[0xc]) * 0x1000193 ^ (uint)param_1[0xd]) *
                           0x1000193 ^ (uint)param_1[0xe]) * 0x1000193 ^ (uint)param_1[0xf]) *
                         0x1000193 ^ (uint)param_1[0x10]) * 0x1000193 ^ (uint)param_1[0x11]) *
                       0x1000193 ^ (uint)param_1[0x12]) * 0x1000193 ^ (uint)param_1[0x13]) *
                     0x1000193 ^ (uint)param_1[0x14]) * 0x1000193 ^ (uint)param_1[0x15]) * 0x1000193
                  ^ (uint)param_1[0x16]) * 0x1000193 ^ (uint)param_1[0x17]) * 0x1000193 ^
                (uint)param_1[0x18]) * 0x1000193 ^ (uint)param_1[0x19]) * 0x1000193 ^
              (uint)param_1[0x1a]) * 0x1000193 ^ (uint)param_1[0x1b]) * 0x1000193 ^
            (uint)param_1[0x1c]) * 0x1000193 ^ (uint)param_1[0x1d]) * 0x1000193 ^
          (uint)param_1[0x1e]) * 0x1000193 ^ (uint)param_1[0x1f]) * 0x1000193;
  }
  if (param_2 != (byte *)0x0) {
    DAT_18267947c =
         ((((((((((((((((DAT_18267947c ^ *param_2) * 0x1000193 ^ (uint)param_2[1]) * 0x1000193 ^
                      (uint)param_2[2]) * 0x1000193 ^ (uint)param_2[3]) * 0x1000193 ^
                    (uint)param_2[4]) * 0x1000193 ^ (uint)param_2[5]) * 0x1000193 ^ (uint)param_2[6]
                  ) * 0x1000193 ^ (uint)param_2[7]) * 0x1000193 ^ (uint)param_2[8]) * 0x1000193 ^
               (uint)param_2[9]) * 0x1000193 ^ (uint)param_2[10]) * 0x1000193 ^ (uint)param_2[0xb])
             * 0x1000193 ^ (uint)param_2[0xc]) * 0x1000193 ^ (uint)param_2[0xd]) * 0x1000193 ^
          (uint)param_2[0xe]) * 0x1000193 ^ (uint)param_2[0xf]) * 0x1000193;
  }
  if (param_3 != (byte *)0x0) {
    DAT_18267947c =
         ((((((((((((((((((((((((((((((((DAT_18267947c ^ *param_3) * 0x1000193 ^ (uint)param_3[1]) *
                                       0x1000193 ^ (uint)param_3[2]) * 0x1000193 ^ (uint)param_3[3])
                                     * 0x1000193 ^ (uint)param_3[4]) * 0x1000193 ^ (uint)param_3[5])
                                   * 0x1000193 ^ (uint)param_3[6]) * 0x1000193 ^ (uint)param_3[7]) *
                                 0x1000193 ^ (uint)param_3[8]) * 0x1000193 ^ (uint)param_3[9]) *
                               0x1000193 ^ (uint)param_3[10]) * 0x1000193 ^ (uint)param_3[0xb]) *
                             0x1000193 ^ (uint)param_3[0xc]) * 0x1000193 ^ (uint)param_3[0xd]) *
                           0x1000193 ^ (uint)param_3[0xe]) * 0x1000193 ^ (uint)param_3[0xf]) *
                         0x1000193 ^ (uint)param_3[0x10]) * 0x1000193 ^ (uint)param_3[0x11]) *
                       0x1000193 ^ (uint)param_3[0x12]) * 0x1000193 ^ (uint)param_3[0x13]) *
                     0x1000193 ^ (uint)param_3[0x14]) * 0x1000193 ^ (uint)param_3[0x15]) * 0x1000193
                  ^ (uint)param_3[0x16]) * 0x1000193 ^ (uint)param_3[0x17]) * 0x1000193 ^
                (uint)param_3[0x18]) * 0x1000193 ^ (uint)param_3[0x19]) * 0x1000193 ^
              (uint)param_3[0x1a]) * 0x1000193 ^ (uint)param_3[0x1b]) * 0x1000193 ^
            (uint)param_3[0x1c]) * 0x1000193 ^ (uint)param_3[0x1d]) * 0x1000193 ^
          (uint)param_3[0x1e]) * 0x1000193 ^ (uint)param_3[0x1f]) * 0x1000193;
  }
  if (param_5 != 0) {
    lVar16 = 0x20;
    pbVar13 = (byte *)(param_5 + 2);
    do {
      DAT_18267947c =
           (((((pbVar13[-2] ^ DAT_18267947c) * 0x1000193 ^ (uint)pbVar13[-1]) * 0x1000193 ^
             (uint)*pbVar13) * 0x1000193 ^ (uint)pbVar13[1]) * 0x1000193 ^ (uint)pbVar13[2]) *
           0x1000193;
      lVar16 = lVar16 + -1;
      pbVar13 = pbVar13 + 5;
    } while (lVar16 != 0);
  }
  DAT_182679530 = DAT_18267947c + 0xd2ac102b;
  local_4b10 = DAT_18267947c * 0x744d22e1;
  uVar14 = DAT_18267947c & 0xff0000;
  DAT_1826794bc = 0x5b2e7a02;
  DAT_1826793d0 = 0xdb5c72d1;
  uVar11 = DAT_18267947c & 0xff00;
  uVar15 = (uVar14 | DAT_18267947c >> 0x10) >> 8;
  DAT_1826794f8 = 0x7fdbf78b;
  uVar5 = DAT_18267947c << 0x10;
  DAT_182679480 = 0x1dee7717;
  DAT_182679340 = uVar15 | (uVar11 | uVar5) << 8;
  DAT_1826792cc = 0xd7665ff5;
  DAT_18267927c = 0xb8737690;
  uVar6 = ~DAT_18267947c;
  DAT_1826794e4 = 0xde14e052;
  DAT_182679500 = uVar6 * -0x4314254e;
  DAT_18267925c = 0xc041da97;
  DAT_1826792a4 = 0x16f2446c;
  DAT_182679454 = DAT_18267947c ^ 0x86ab561f;
  uVar20 = (DAT_182679530 & 0xff0000 | DAT_182679530 >> 0x10) >> 8;
  DAT_182679248 = 0x8bf7db7f;
  DAT_18267950c = 0x1cd356f6;
  DAT_18267945c = 0x46881722;
  DAT_182679418 = uVar20 | (DAT_182679530 * 0x10000 | DAT_182679530 & 0xff00) << 8;
  DAT_182679300 = 0x329e0880;
  DAT_182679494 = 0xe1aac53a;
  DAT_1826793a8 = 0x5b0c7200;
  uVar2 = DAT_18267947c >> 0x10;
  DAT_182678ef4 = DAT_18267947c << 0x10 | uVar2;
  DAT_18267948c = 0xdff7fb7f;
  DAT_1826793ac = DAT_18267947c | 0xd19720ad;
  DAT_18267935c = 0x16d24408;
  uVar19 = ~DAT_182679340;
  DAT_182679318 = 0x1dff77f7;
  DAT_18267936c = 0x46881722;
  DAT_182679284 = 0xf2dfda97;
  DAT_1826792bc = local_4b10 + 0x80404376;
  DAT_182679334 = DAT_18267947c ^ 0x956bbbb5;
  DAT_1826793dc = DAT_182679500 + 0xe00413bf;
  DAT_182679394 = (DAT_18267947c + 0x4f5cf359) * 0x3d223330;
  uVar17 = DAT_18267947c | 0x500acf2e;
  DAT_182679584 = uVar19 | 0xbc15acd8;
  uVar10 = uVar6 >> 0x10;
  DAT_18267938c = DAT_18267947c + 0x1feee721;
  DAT_1826794dc = DAT_18267947c + 0xfc9840e5 | 0xeab72f4d;
  DAT_18267951c = DAT_182679340 | 0xb110b866;
  DAT_182679274 = DAT_18267947c ^ 0x6e46f4e3;
  uVar3 = (DAT_182679530 * 0x10000 & 0xffffff | DAT_182679530 & 0xff00) >> 8;
  DAT_1826794ac = uVar20 << 0x10 | uVar3;
  DAT_182679414 = DAT_18267947c | 0xc33fca4e;
  DAT_1826794c4 = (DAT_182679340 | 0x4d8b24c0) + 0xa7d64423;
  DAT_182679288 = ~DAT_182679334;
  DAT_182679470 = ~(DAT_18267947c & 0x5fb0d117);
  DAT_182679314 = DAT_1826793ac + 0x97827035;
  DAT_1826794d4 = (uVar11 << 8 | (uVar5 & 0xffffff) >> 8) >> 8 | (uVar15 << 0x10 | uVar14 >> 8) << 8
  ;
  uVar7 = DAT_1826792bc & 3;
  if (uVar7 < 2) {
    DAT_182679278 = 0x15290e16;
    if (uVar7 == 0) {
      DAT_182679278 = DAT_1826792bc;
    }
  }
  else {
    DAT_182679278 = 0x730d9fae;
    if (uVar7 < 3) {
      DAT_182679278 = 0xc84c6565;
    }
  }
  DAT_182679398 =
       (uVar17 & 0xff0000 | uVar17 >> 0x10) >> 8 | (uVar17 << 0x10 | uVar17 & 0xff00) << 8;
  uVar7 = DAT_18267947c & 0xb7a81498 | 0xeb80f2f;
  uVar12 = 0xae9d2041;
  if ((uVar19 & 1) == 0) {
    uVar12 = DAT_182679584;
  }
  uVar1 = DAT_18267947c + 0x9df29408 & 0x527f14b8;
  DAT_182679554 =
       (uVar6 << 0x10 & 0xff0000 | uVar6 & 0xffff) >> 8 | (uVar10 << 0x10 | uVar10 & 0xff00) << 8;
  DAT_1826793a0 = ~(DAT_18267947c + 0xa5e4cde6);
  DAT_1826792c0 =
       (DAT_18267947c + 0x454b7985 & 0xff0000 | DAT_18267947c + 0x454b7985 >> 0x10) >> 8 |
       ((DAT_18267947c + 0x454b7985) * 0x10000 | DAT_18267947c + 0x454b7985 & 0xff00) << 8;
  DAT_182679370 =
       (DAT_1826794dc & 0xff0000 | DAT_1826794dc >> 0x10) >> 8 |
       (DAT_1826794dc << 0x10 | DAT_1826794dc & 0xff00) << 8;
  DAT_1826792c8 = (uVar11 << 8 | (uVar5 & 0xffffff) >> 8) >> 8 | (uVar15 << 0x10 | uVar14 >> 8) << 8
  ;
  DAT_182679240 = 0x13f01a9c;
  if ((DAT_18267947c + 0xd2ac102b & 1) == 0) {
    DAT_182679240 = DAT_18267947c + 0xd2ac102b;
  }
  DAT_18267958c = (DAT_182679530 & 0xa6df57a1) + 0x1b18c708;
  DAT_1826792f4 = (DAT_182679340 ^ 0x4fc26895) & 0x91dc2271;
  DAT_182679308 = DAT_18267947c + 0x57b31489 & 0x15bab3b1;
  DAT_182679568 = DAT_182679340 & 0x4e95eeda;
  uVar5 = DAT_18267947c & 7;
  if (uVar5 < 4) {
    if (1 < uVar5) {
      uVar14 = 0x6289d8c3;
      uVar11 = 0xafd97743;
      bVar22 = uVar5 < 3;
      goto LAB_18172240a;
    }
    uVar11 = 0x32f5ae04;
    if (uVar5 == 0) {
      uVar11 = DAT_18267947c;
    }
  }
  else {
    if (uVar5 < 6) {
      uVar14 = 0xbc2296e6;
      uVar11 = 0x3ed7a7eb;
      bVar22 = uVar5 < 5;
    }
    else {
      uVar14 = 0xa5126da;
      uVar11 = 0xf47b8af2;
      bVar22 = uVar5 < 7;
    }
LAB_18172240a:
    if (bVar22) {
      uVar11 = uVar14;
    }
  }
  DAT_182679238 = DAT_182679334 * -0x522f926e;
  uVar14 = local_4b10 + 0x80404376;
  DAT_182678f5c = DAT_182679414 * -0x3a742a07;
  DAT_18267944c = DAT_182679278 & 0xc34a6cbc;
  DAT_18267926c = uVar2 << 0x10 | DAT_18267947c & 0xffff;
  uVar5 = DAT_182679288 & 3;
  if (uVar5 < 2) {
    local_4af8 = 0x956bbbb5;
    if (uVar5 == 0) {
      local_4af8 = DAT_182679288;
    }
  }
  else {
    local_4af8 = 0xb0a30ca7;
    if (uVar5 < 3) {
      local_4af8 = 0xa5e4cde6;
    }
  }
  DAT_1826792ac = (DAT_18267947c ^ 0x74d4ee48) - (DAT_18267947c | 0x360d4864);
  DAT_18267942c = DAT_18267947c & 0x1feee721;
  DAT_18267933c = DAT_182679454 * 0x6e46f4e3;
  DAT_1826793b0 = DAT_182679340 ^ 0x7ea26bd7;
  uVar5 = DAT_18267947c + 0xee669e0d;
  DAT_1826794f0 = uVar7 ^ 0x15290e16;
  DAT_1826794b4 = DAT_182679584 << 0x10 | DAT_182679584 >> 0x10;
  DAT_182679428 =
       (uVar19 & 0xff0000 | uVar19 >> 0x10) >> 8 | (uVar19 << 0x10 | uVar19 & 0xff00) << 8;
  uVar8 = (DAT_18267947c + 0x4f5cf359) * 0x10000 | DAT_18267947c + 0x4f5cf359 >> 0x10;
  uVar9 = DAT_18267947c + 0x38d1750f | (DAT_18267947c + 0x4f5cf359) * 0x5598eeb1;
  DAT_182679270 = DAT_18267947c + 0xfc9840e5 + (DAT_18267947c + 0x1feee721 & 0xa181e901);
  DAT_1826794cc = DAT_18267947c + 0x1feee721 | DAT_18267947c + 0x454b7985;
  local_4b3c = (uVar6 << 0x10 | uVar10) + DAT_18267947c;
  DAT_1826793f0 = uVar1 - (DAT_18267947c + 0xfc9840e5 & 0xe619d927);
  uVar10 = DAT_18267947c + 0x57b31489;
  DAT_182679490 = DAT_18267947c + 0xd2ac102b | DAT_18267947c;
  uVar21 = DAT_182679334 * (DAT_182679340 | 0x4d8b24c0);
  DAT_1826794a4 = (DAT_182679340 ^ 0x4fc26895) + ~DAT_182679274;
  DAT_182679550 =
       (DAT_18267951c & 0xff0000 | DAT_18267951c >> 0x10) >> 8 |
       (DAT_18267951c << 0x10 | DAT_18267951c & 0xff00) << 8;
  uVar15 = DAT_18267947c + 0x5adc794e;
  DAT_182679360 = DAT_182679500 + 0x7d7a3afc;
  DAT_1826793d8 = DAT_182679568 ^ DAT_182679500;
  DAT_182679434 = ~(DAT_18267947c + 0x43bc1091);
  uVar18 = (uVar15 & 0xff0000 | uVar15 >> 0x10) >> 8;
  DAT_182679268 = uVar18 | (uVar15 * 0x10000 | uVar15 & 0xff00) << 8;
  DAT_182679510 = DAT_182679238 + DAT_18267947c;
  DAT_182679320 =
       (DAT_182679314 & 0xff0000 | DAT_182679314 >> 0x10) >> 8 |
       (DAT_182679314 * 0x10000 | DAT_182679314 & 0xff00) << 8 | DAT_18267947c | 0xf7bf34bd;
  DAT_1826793d4 = DAT_182679288 + DAT_182679470;
  DAT_1826794c0 = DAT_1826794d4 | 0x367bf1b | DAT_18267944c;
  uVar19 = (uVar14 >> 0x10 & 0x300) >> 8;
  if (uVar19 < 2) {
    local_4b28 = DAT_182679340 & 0xd19720ad;
    if (uVar19 == 0) {
      local_4b28 = (uVar14 & 0xff0000 | uVar14 >> 0x10) >> 8 |
                   (uVar14 * 0x10000 | local_4b10 + 0x80404376U & 0xff00) << 8;
    }
  }
  else {
    local_4b28 = DAT_18267947c * 0x2bbdb2fe;
    if (uVar19 < 3) {
      local_4b28 = DAT_182678ef4;
    }
  }
  DAT_182679580 = DAT_182679340 ^ DAT_182679314;
  uVar14 = (DAT_18267947c & 0x3000000) >> 0x18;
  if (uVar14 < 2) {
    uVar19 = DAT_18267947c;
    if (uVar14 == 0) {
      uVar19 = DAT_182679398;
    }
  }
  else {
    uVar19 = DAT_182679454;
    if (uVar14 < 3) {
      uVar19 = DAT_182679470 + 0xa04f2ee9;
    }
  }
  DAT_1826792d4 = DAT_1826793b0 & uVar17;
  DAT_1826792e0 =
       (uVar5 & 0x820000 | (uVar5 & 0x97827035) >> 0x10) >> 8 |
       ((uVar5 & 0x97827035) << 0x10 | uVar5 & 0x7000) << 8;
  DAT_1826793cc = (~DAT_182679454 + (DAT_18267947c ^ 0xeecb2744)) * DAT_18267933c;
  DAT_182679558 = DAT_1826794b4 & (DAT_18267947c & 0xb7a81498) + 0x440a14cb;
  DAT_182679250 = uVar12 - DAT_18267947c ^ DAT_18267947c;
  DAT_182679450 = uVar12 * (DAT_18267947c | 0x360d4864);
  DAT_182679350 = DAT_18267947c + 0x454b7985 | 0x88e1d077 | DAT_18267947c;
  DAT_182679420 = uVar9 ^ uVar8;
  uVar5 = DAT_1826794cc & 3;
  if (uVar5 < 2) {
    if (uVar5 == 0) {
      local_4b3c = DAT_1826794cc;
    }
  }
  else {
    local_4b3c = uVar1;
    if (uVar5 < 3) {
      local_4b3c = DAT_1826793a0;
    }
  }
  DAT_1826793f4 = (DAT_182679370 + DAT_1826792c8) * (DAT_182679530 & 0xa6df57a1);
  uVar14 = (DAT_1826793f0 & 0xff0000 | DAT_1826793f0 >> 0x10) >> 8;
  DAT_182679244 = (DAT_1826793f0 * 0x10000 | DAT_1826793f0 & 0xff00) << 8 | uVar14;
  DAT_18267943c = DAT_1826792c0 - DAT_1826792f4;
  DAT_18267931c =
       (DAT_182679490 & 0xff0000 | DAT_182679490 >> 0x10) >> 8 |
       (DAT_182679490 << 0x10 | DAT_182679490 & 0xff00) << 8;
  uVar5 = (DAT_1826794dc >> 0x10 & 0x300) >> 8;
  if (uVar5 < 2) {
    if (uVar5 == 0) {
      DAT_1826792c8 = DAT_182679370;
    }
  }
  else {
    DAT_1826792c8 = DAT_182679274;
    if (uVar5 < 3) {
      DAT_1826792c8 = DAT_1826794a4;
    }
  }
  DAT_182679304 =
       ((DAT_18267947c << 0x10 & 0xff0000 | DAT_18267947c & 0xffff) >> 8 |
       (uVar2 << 0x10 | uVar2 & 0xff00) << 8) ^ DAT_18267947c;
  DAT_1826792a0 = uVar3 << 0x10 | uVar20;
  DAT_1826792ec = DAT_182679268 * DAT_1826793dc;
  DAT_182679544 = DAT_182679418 & 0xb487c1fa ^ DAT_182679308;
  if ((DAT_18267947c + 0x43bc1091 & 1) == 0) {
    DAT_182679544 = DAT_18267947c + 0x43bc1091;
  }
  DAT_1826794f4 = ~DAT_182679238;
  DAT_182679440 = uVar21 * 0x10000 | uVar21 >> 0x10;
  DAT_1826792b4 = DAT_182678f5c + DAT_182679434;
  DAT_1826793ec = DAT_182679500 + 0x3e824516 | DAT_182679414;
  DAT_18267955c = DAT_18267947c | 0xf7bf34bd | DAT_182678ef4;
  DAT_1826792f0 = (DAT_182679398 + 0x80404376) - local_4af8;
  DAT_182679518 = DAT_18267944c << 0x10 | DAT_18267944c >> 0x10;
  uVar5 = DAT_182679580 - (local_4b10 + -0x7fbfbc8a);
  DAT_182679478 = uVar19 | DAT_18267942c;
  DAT_182679258 = DAT_1826794f0 * uVar7 + DAT_182679314;
  DAT_182679330 = DAT_1826793b0 + DAT_182679340;
  DAT_182679408 = uVar17 << 0x10 | uVar17 >> 0x10;
  DAT_182679448 = DAT_1826792ac + DAT_182679454 * -0x6e46f4e3;
  DAT_18267939c = DAT_182679584 & DAT_1826793cc ^ 0x4261533;
  DAT_18267934c = DAT_182679450 + DAT_182679428;
  DAT_18267956c = DAT_182679350 * DAT_182679250;
  DAT_18267954c = (uVar9 << 0x10 | uVar9 & 0xff00) << 8 | (uVar9 & 0xff0000 | uVar9 >> 0x10) >> 8;
  DAT_1826794b8 = ~DAT_182679554 * (DAT_18267947c + 0x454b7985) & DAT_18267947c;
  DAT_182678f58 = DAT_182679428 + uVar8;
  DAT_182679528 = DAT_1826792c0 * DAT_182679340;
  DAT_182679488 = local_4b3c - DAT_182679554;
  DAT_182679484 = DAT_182679420 << 0x10 | DAT_182679420 >> 0x10;
  DAT_182679514 = DAT_1826793a0 - DAT_18267943c;
  DAT_182678f50 = DAT_182679244 - uVar6;
  DAT_182679588 = DAT_1826793f0 * (DAT_18267947c + 0x1feee721);
  DAT_182679504 =
       ((uVar10 & 0xff0000 | uVar10 >> 0x10) >> 8 | (uVar10 * 0x10000 | uVar10 & 0xff00) << 8) *
       DAT_182679370;
  DAT_182678f6c = DAT_182679490 << 0x10 | DAT_182679490 >> 0x10;
  DAT_1826793e4 = DAT_1826794a4 ^ DAT_1826794dc;
  DAT_182679380 = DAT_1826793dc * 0x10000 | DAT_1826793dc >> 0x10;
  DAT_182679564 = DAT_18267926c + DAT_182679340;
  DAT_182679534 = (uVar11 | DAT_182679414) & DAT_182679434 + DAT_182678f5c;
  DAT_1826793f8 = DAT_182679268 + DAT_182679334 * 0x522f926e;
  DAT_182679358 = (uVar11 | DAT_182679414) + DAT_182679360 + DAT_18267947c + 0x43bc1091;
  DAT_182679234 = DAT_182679414 * -0x2a070000 | DAT_182678f5c >> 0x10;
  DAT_182679290 = DAT_182679440 + DAT_1826793ec;
  uVar10 = DAT_1826794c4 & 3;
  if (uVar10 < 2) {
    DAT_18267932c = DAT_182679470;
    if (uVar10 == 0) {
      DAT_18267932c = DAT_1826794c4;
    }
  }
  else {
    DAT_18267932c =
         (DAT_182679334 & 0xff0000 | DAT_182679334 >> 0x10) >> 8 |
         (DAT_182679334 << 0x10 | DAT_182679334 & 0xff00) << 8;
    if (uVar10 < 3) {
      DAT_18267932c = DAT_182679510;
    }
  }
  DAT_1826793a4 =
       ((DAT_1826793d4 & 0xff0000 | DAT_1826793d4 >> 0x10) >> 8) << 0x10 |
       (DAT_1826793d4 * 0x10000 & 0xffffff | DAT_1826793d4 & 0xff00) >> 8;
  DAT_1826794fc = DAT_182679340 & DAT_182679288;
  DAT_182679294 = ~(local_4af8 * (DAT_18267947c & 0x5fb0d117 | 0xd2ac102b));
  DAT_182679368 = DAT_182679580 - (DAT_1826794c0 << 0x10 | DAT_1826794c0 >> 0x10);
  DAT_182679354 = uVar5 * 0x10000 | uVar5 >> 0x10;
  DAT_1826793b8 = local_4b28 & DAT_182679394 * DAT_182678ef4;
  DAT_18267952c = DAT_18267942c | DAT_182679478;
  DAT_182679424 = DAT_182679394 - DAT_182678ef4;
  DAT_182679548 =
       (DAT_182679454 & 0xff0000 | DAT_182679454 >> 0x10) >> 8 |
       (DAT_182679454 << 0x10 | DAT_182679454 & 0xff00) << 8;
  DAT_182679348 = DAT_182679314 * 0x10000 | DAT_182679314 >> 0x10;
  DAT_1826793e8 = DAT_1826792d4 ^ DAT_182679450;
  DAT_1826792e8 = DAT_1826793b0 & DAT_182679448;
  DAT_182679384 = DAT_182679408 * DAT_1826793cc;
  DAT_182679280 = ~DAT_1826792ac;
  DAT_182679464 = DAT_18267934c * DAT_182679558;
  DAT_182679260 = DAT_18267956c - DAT_182679584;
  DAT_182679388 = DAT_182679528 ^ DAT_182679488;
  DAT_1826793fc = DAT_1826794b8 * DAT_182678f58;
  DAT_182679344 = DAT_182679428 | DAT_182679340;
  DAT_18267928c = DAT_182679420 * DAT_1826792c0;
  DAT_18267940c = DAT_182679554 + DAT_18267954c;
  DAT_182679474 = DAT_182679350 | DAT_182679484;
  DAT_182679324 =
       (DAT_1826793a0 & 0xff0000 | DAT_1826793a0 >> 0x10) >> 8 |
       (DAT_1826793a0 << 0x10 | DAT_1826793a0 & 0xff00) << 8;
  DAT_182678f54 =
       (uVar14 << 0x10 | (DAT_1826793f0 & 0xff0000) >> 8) << 8 |
       ((DAT_1826793f0 & 0xff00) << 8 | (DAT_1826793f0 * 0x10000 & 0xffffff) >> 8) >> 8;
  uVar10 = DAT_182679240 & 7;
  if (uVar10 < 4) {
    if (1 < uVar10) {
      DAT_1826793c8 = DAT_18267943c;
      if (uVar10 < 3) {
        DAT_1826793c8 = DAT_182679514;
      }
      goto LAB_1817231ea;
    }
    bVar22 = uVar10 == 0;
    uVar10 = DAT_182679240;
    DAT_1826793c8 = DAT_1826793f4;
  }
  else {
    if (uVar10 < 6) {
      DAT_1826793c8 = DAT_182679588;
      if (uVar10 < 5) {
        DAT_1826793c8 = DAT_1826794cc;
      }
      goto LAB_1817231ea;
    }
    bVar22 = uVar10 < 7;
    uVar10 = DAT_18267947c + 0x1feee721;
    DAT_1826793c8 = DAT_182679490;
  }
  if (bVar22) {
    DAT_1826793c8 = uVar10;
  }
LAB_1817231ea:
  DAT_1826794b0 = DAT_182678f6c * DAT_18267931c;
  DAT_1826793c0 = DAT_1826792c8 << 0x10 | DAT_1826792c8 >> 0x10;
  DAT_182679364 = uVar20 << 0x10 | uVar3;
  DAT_182679438 =
       (DAT_1826794a4 & 0xff0000 | DAT_1826794a4 >> 0x10) >> 8 |
       (DAT_1826794a4 * 0x10000 | DAT_1826794a4 & 0xff00) << 8;
  DAT_1826792c4 = DAT_182679340 | DAT_182679500;
  DAT_182679574 = ~DAT_1826793e4;
  DAT_182679404 = DAT_1826794dc << 0x10 | DAT_1826794dc >> 0x10;
  DAT_1826792f8 = (DAT_18267947c + 0xd2ac102b) * 0x10000 | DAT_18267947c + 0xd2ac102b >> 0x10;
  DAT_182679570 = DAT_182679550 ^ DAT_182678f50;
  DAT_1826794c8 = DAT_182679274 * DAT_18267951c;
  DAT_1826792d8 = DAT_18267958c & DAT_182679370;
  DAT_182679378 = DAT_1826792ec * DAT_1826792f4;
  DAT_1826792b8 = DAT_1826794ac + DAT_182679504;
  DAT_18267941c = DAT_1826793d8 - DAT_18267947c;
  DAT_1826794ec = DAT_182679360 ^ DAT_182679500 + 0xe00413bf;
  DAT_182679338 = ~DAT_182679418;
  DAT_18267923c = (DAT_182679434 + DAT_182678f5c) * DAT_182679380;
  DAT_1826792dc = DAT_1826793f8 | DAT_182679568;
  DAT_182679400 = DAT_1826794f4 ^ DAT_182679304;
  DAT_18267957c =
       (DAT_182679534 & 0xff0000 | DAT_182679534 >> 0x10) >> 8 |
       (DAT_182679534 << 0x10 | DAT_182679534 & 0xff00) << 8;
  DAT_1826793bc = DAT_182679434 ^ DAT_182679308;
  DAT_182678f64 =
       ((uVar15 & 0xff00) << 8 | (uVar15 * 0x10000 & 0xffffff) >> 8) >> 8 |
       (uVar18 << 0x10 | (uVar15 & 0xff0000) >> 8) << 8;
  DAT_18267949c = DAT_182679358 * 0x10000 | DAT_182679358 >> 0x10;
  DAT_1826792d0 = uVar2 << 0x10 | DAT_18267947c & 0xffff;
  DAT_18267930c = DAT_182679440 | DAT_182679334;
  DAT_1826794e8 = DAT_182679544 - DAT_182679564;
  DAT_182679460 = DAT_182679478 * DAT_182679354;
  DAT_182679540 = DAT_182679290 ^ DAT_182678f5c;
  DAT_182679458 = DAT_1826793a4 * DAT_182679510;
  DAT_1826792b0 = DAT_182679340 - DAT_18267926c;
  DAT_182679254 = DAT_1826794d4 | DAT_182679278;
  DAT_1826794d8 = DAT_182679294 * DAT_18267944c;
  DAT_182679578 = DAT_1826793ec | DAT_182679518;
  DAT_182679328 = DAT_182679368 ^ DAT_1826794c4;
  DAT_1826794d0 = DAT_18267955c & DAT_1826793ac;
  DAT_182679310 = local_4b10 + -0x7fbfbc8a + DAT_18267932c;
  DAT_182678f60 = DAT_182679320 << 0x10 | DAT_182679320 >> 0x10;
  DAT_1826792e4 = DAT_1826794fc * DAT_1826792f0;
  DAT_1826794e0 = DAT_1826794c0 - DAT_182679340;
  DAT_182679154 = 0x138;
  DAT_1826793b4 =
       (DAT_182679394 & 0xff0000 | DAT_182679394 >> 0x10) >> 8 |
       ((DAT_18267947c + 0x4f5cf359) * 0x33300000 | DAT_182679394 & 0xff00) << 8;
  DAT_182679298 = DAT_1826793b8 - DAT_1826792e0;
  DAT_182679444 = DAT_182679580 & DAT_182679398;
  DAT_1826793c4 = DAT_182679258 * DAT_182679454;
  DAT_18267924c = ~DAT_18267942c;
  DAT_18267953c = DAT_1826793e8 - DAT_18267952c;
  DAT_1826792fc = DAT_182679330 + DAT_182678ef4;
  DAT_182679264 = DAT_1826792d4 * DAT_182679314;
  DAT_182679374 = DAT_182679424 * DAT_182679548;
  DAT_182678f68 = DAT_182679348 - DAT_1826794b4;
  DAT_1826794a8 = DAT_18267933c ^ DAT_1826793cc;
  DAT_182679410 = DAT_182679408 ^ DAT_1826793b0;
  DAT_18267929c = DAT_182679450 | DAT_182679448;
  local_48 = &local_49e8;
  local_50 = param_5;
  DAT_182679468 = &local_70;
  iVar4 = 0x79;
  DAT_1826792a8 = DAT_182678ef4;
  DAT_18267937c = DAT_182679244;
  DAT_182679390 = DAT_182679340;
  DAT_1826793e0 = DAT_182679340;
  DAT_182679430 = DAT_182678ef4;
  DAT_182679498 = DAT_182679428;
  DAT_1826794a0 = DAT_182679340;
  DAT_182679508 = DAT_18267947c;
  DAT_182679538 = DAT_182679238;
  DAT_182679560 = DAT_182679340;
  local_4b58 = DAT_1826794fc;
  local_4b54 = DAT_182679428;
  local_4b50 = DAT_182679484;
  local_4b4c = DAT_1826793a4;
  local_4b48 = DAT_182679354;
  local_4b44 = DAT_182679478;
  local_4b40 = DAT_182679548;
  local_4b3c = DAT_182679488;
  local_4b38 = DAT_182679334;
  local_4b34 = DAT_182679450;
  local_4b30 = DAT_182679320;
  local_4b2c = DAT_1826793e8;
  local_4b28 = DAT_1826793b8;
  local_4b24 = DAT_182679448;
  local_4b20 = DAT_182679580;
  local_4b1c = DAT_1826792ac;
  local_4b18 = DAT_1826794b8;
  local_4b14 = DAT_182679544;
  local_4b0c = DAT_182679454;
  local_4b08 = DAT_1826793cc;
  local_4b04 = DAT_182679408;
  local_4b00 = DAT_18267956c;
  local_4afc = DAT_182679368;
  local_4af8 = DAT_18267954c;
  local_4af4 = DAT_182679294;
  local_4af0 = DAT_182679420;
  local_4aec = DAT_182679434;
  local_4ae8 = DAT_182679268;
  local_4ae4 = DAT_18267943c;
  local_4ae0 = DAT_1826793b0;
  local_4adc = DAT_1826794c0;
  local_4ad8 = DAT_182679588;
  local_4ad4 = DAT_182679370;
  local_4ad0 = DAT_182679350;
  local_4acc = DAT_18267955c;
  local_4ac8 = DAT_182679490;
  local_4ac4 = DAT_182679528;
  local_4ac0 = DAT_182678f6c;
  local_4abc = DAT_1826794cc;
  local_4ab8 = DAT_182679584;
  local_4ab4 = DAT_1826793ec;
  local_4ab0 = DAT_1826793d4;
  local_4aac = DAT_1826792d4;
  local_4aa8 = DAT_1826794b4;
  local_4aa4 = DAT_182679440;
  local_4aa0 = DAT_1826793ac;
  local_4a9c = DAT_18267942c;
  local_4a98 = DAT_18267933c;
  local_4a94 = DAT_182679274;
  local_4a90 = DAT_1826792c0;
  local_4a8c = DAT_182679554;
  local_4a88 = DAT_1826793a0;
  local_4a84 = DAT_1826793f4;
  local_4a80 = DAT_1826794a4;
  local_4a7c = DAT_1826794dc;
  local_4a78 = DAT_182679550;
  local_4a74 = DAT_182679504;
  local_4a70 = DAT_182679304;
  local_4a6c = DAT_182679558;
  local_4a68 = DAT_18267934c;
  local_4a64 = DAT_18267944c;
  local_4a60 = DAT_182679234;
  local_4a5c = DAT_1826794ac;
  local_4a58 = DAT_182679568;
  local_4a54 = DAT_182679308;
  local_4a50 = DAT_18267951c;
  local_4a4c = DAT_18267926c;
  local_4a48 = DAT_1826794d4;
  local_4a44 = DAT_1826792f4;
  local_4a40 = DAT_182679240;
  local_4a3c = DAT_182679514;
  local_4a38 = DAT_1826792a0;
  local_4a34 = DAT_1826793e4;
  local_4a30 = DAT_182678f50;
  local_4a2c = DAT_18267958c;
  local_4a28 = DAT_1826792ec;
  local_4a24 = DAT_1826793d8;
  local_4a20 = DAT_182679380;
  local_4a1c = DAT_1826793f8;
  local_4a18 = DAT_1826794f4;
  local_4a14 = DAT_182679418;
  local_4a10 = DAT_182679534;
  local_4a0c = DAT_182679358;
  local_4a08 = DAT_182679290;
  local_4a04 = DAT_182679518;
  local_4a00 = DAT_1826792f0;
  local_49fc = DAT_1826792e0;
  local_49f8 = DAT_182679258;
  local_49f4 = DAT_18267952c;
  local_49f0 = DAT_182679424;
  local_49ec = DAT_182679348;
  local_49e0 = param_3;
  local_49d8 = param_4;
  local_49d0 = param_2;
  local_49c8 = param_1;
  local_70 = param_1;
  local_68 = param_2;
  local_60 = param_3;
  local_58 = param_4;
  do {
    iVar4 = (**(code **)(&DAT_182477b00 + (longlong)iVar4 * 8))();
  } while (iVar4 != 0);
  DAT_182679468 = DAT_182679468 + 6;
}



############ FUN_ 1805759d0 size=486 ############

void FUN_1805759d0(undefined8 *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *pvVar3;
  undefined8 *puVar4;
  
  *param_1 = pace::eden::thrift::pub::SetupDynamicCryptoWhiteboxOutput::vftable;
  puVar4 = (undefined8 *)param_1[0x6b];
  if (puVar4 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[0x6c];
    for (; puVar4 != puVar1; puVar4 = puVar4 + 0x118) {
      (**(code **)*puVar4)(puVar4,0);
    }
    pvVar2 = (void *)param_1[0x6b];
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(((param_1[0x6d] - (longlong)pvVar2) / 0x8c0) * 0x8c0)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  FUN_1805753e0(param_1 + 0xd);
  pvVar2 = (void *)param_1[10];
  if (pvVar2 != (void *)0x0) {
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(param_1[0xc] - (longlong)pvVar2)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  pvVar2 = (void *)param_1[7];
  if (pvVar2 != (void *)0x0) {
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(param_1[9] - (longlong)pvVar2)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  pvVar2 = (void *)param_1[4];
  if (pvVar2 != (void *)0x0) {
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(param_1[6] - (longlong)pvVar2)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  pvVar2 = (void *)param_1[1];
  if (pvVar2 == (void *)0x0) {
    return;
  }
  pvVar3 = pvVar2;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar2)) &&
     (pvVar3 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 180575180 size=594 ############

undefined8 *
FUN_180575180(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = pace::eden::thrift::pub::AuthChain::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)((longlong)param_1 + 0x24) = 0;
  FUN_180487940(param_1 + 5,&DAT_18249336a,param_3,param_4,0xfffffffffffffffe);
  FUN_180487940(param_1 + 9,&DAT_18249336a);
  param_1[0xd] = 0;
  param_1[0xe] = 0xffffffffffffffff;
  FUN_180487940(param_1 + 0xf,&DAT_18249336a);
  *(undefined1 *)(param_1 + 0x13) = 0;
  *(undefined4 *)((longlong)param_1 + 0x9c) = 0;
  param_1[0x14] = pace::eden::thrift::pub::RemoteServerInfo::vftable;
  FUN_180487940(param_1 + 0x15,&DAT_18249336a);
  FUN_180487940(param_1 + 0x19,&DAT_18249336a);
  *(undefined4 *)(param_1 + 0x1d) = 0;
  param_1[0x1e] = 0;
  param_1[0x1f] = 0;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  FUN_180487940(param_1 + 0x22,&DAT_18249336a);
  FUN_180487940(param_1 + 0x26,&DAT_18249336a);
  FUN_180487940(param_1 + 0x2a,&DAT_18249336a);
  *(undefined4 *)(param_1 + 0x2e) = 0;
  FUN_180487940(param_1 + 0x2f,&DAT_18249336a);
  FUN_180487940(param_1 + 0x33,&DAT_18249336a);
  FUN_180487940(param_1 + 0x37,&DAT_18249336a);
  param_1[0x3b] = 0;
  param_1[0x3c] = 0;
  *(undefined1 *)(param_1 + 0x3d) = 0;
  *(undefined1 *)((longlong)param_1 + 500) = 0;
  param_1[0x3f] = 0;
  param_1[0x40] = 0;
  param_1[0x41] = 0;
  param_1[0x42] = 0;
  param_1[0x43] = pace::eden::thrift::pub::SharedLicenseInfo::vftable;
  param_1[0x44] = 0;
  FUN_180487940(param_1 + 0x45,&DAT_18249336a);
  FUN_180487940(param_1 + 0x49,&DAT_18249336a);
  *(undefined4 *)(param_1 + 0x4d) = 1;
  *(undefined8 *)((longlong)param_1 + 0x26c) = 1;
  *(undefined4 *)((longlong)param_1 + 0x274) = 0;
  param_1[0x4f] = 0;
  param_1[0x50] = 0;
  param_1[0x51] = 0;
  param_1[0x52] = 0;
  param_1[0x53] = 0;
  *(undefined2 *)(param_1 + 0x54) = 0;
  param_1[0x55] = 0;
  param_1[0x56] = 0;
  param_1[0x57] = 0;
  param_1[0x58] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 0;
  param_1[0x5c] = 0;
  *(undefined2 *)(param_1 + 0x5d) = 0;
  *(undefined1 *)((longlong)param_1 + 0x2ea) = 0;
  *(undefined4 *)(param_1 + 0x3e) = 0;
  return param_1;
}



############ FUN_ 18141b5e0 size=564 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void .?AVSoothe2_DynamicCryptoManager@eden@pace@@::vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
               (undefined8 param_1,undefined8 param_2,longlong param_3,int *param_4)

{
  char cVar1;
  int iVar2;
  undefined8 ****ppppuVar3;
  void *_Memory;
  undefined1 auStack_118 [32];
  undefined4 local_f8;
  undefined **local_e8;
  void *local_e0;
  undefined8 uStack_d8;
  longlong local_d0;
  undefined1 local_c8;
  undefined8 local_c0;
  undefined **local_b8;
  undefined4 local_b0;
  undefined8 ***local_a8 [2];
  longlong local_98;
  ulonglong local_90;
  undefined8 ***local_88 [2];
  longlong local_78;
  ulonglong local_70;
  undefined1 local_68 [32];
  undefined4 local_48;
  ulonglong local_38;
  
  local_c0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_118;
  *param_4 = 0;
  local_e8 = pace::eden::thrift::pub::SetupDynamicCryptoWhiteboxInput::vftable;
  local_e0 = (void *)0x0;
  uStack_d8 = 0;
  local_d0 = 0;
  local_c8 = 0;
  FUN_180576470(&local_e0);
  FUN_181a04090(local_e0,param_2);
  local_b8 = pace::eden::thrift::pub::ErrorInfo::vftable;
  local_b0 = 0;
  FUN_180487940(local_a8,&DAT_18249336a);
  FUN_180487940(local_88,&DAT_18249336a);
  FUN_180487940(local_68,&DAT_18249336a);
  local_48 = 0;
  local_f8 = 0;
  cVar1 = FUN_1805c0340(0,&local_b8,0,2);
  if (cVar1 == '\0') {
    *param_4 = 4;
  }
  else {
    cVar1 = FUN_1805c4280(&DAT_1823602b0,&local_e8,param_3,&local_b8);
    if (cVar1 == '\0') {
      ppppuVar3 = local_88;
      if (0xf < local_70) {
        ppppuVar3 = (undefined8 ****)local_88[0];
      }
      if ((local_78 == 0x16) &&
         (iVar2 = memcmp(ppppuVar3,"AuthorizationException",0x16), iVar2 == 0)) {
        ppppuVar3 = local_a8;
        if (0xf < local_90) {
          ppppuVar3 = (undefined8 ****)local_a8[0];
        }
        if ((local_98 == 0x26) &&
           (iVar2 = memcmp(ppppuVar3,"DynamicCryptoHostBasedAuthsUnsupported",0x26), iVar2 == 0)) {
          *param_4 = 6;
          FUN_1805bd330(&local_b8);
          goto LAB_18141b7b9;
        }
      }
      *param_4 = 5;
    }
    else {
      if (*(longlong *)(param_3 + 0x10) - *(longlong *)(param_3 + 8) != 0x20) {
        *param_4 = 0xb;
      }
      if (*(longlong *)(param_3 + 0x28) - *(longlong *)(param_3 + 0x20) != 0x20) {
        *param_4 = 0xb;
      }
      if (*(longlong *)(param_3 + 0x40) - *(longlong *)(param_3 + 0x38) != 0x20) {
        *param_4 = 0xb;
      }
      if (*(longlong *)(param_3 + 0x58) - *(longlong *)(param_3 + 0x50) != 0x20) {
        *param_4 = 0xb;
      }
      if (*param_4 != 0) {
        FUN_1805bd330(&local_b8);
        goto LAB_18141b7b9;
      }
    }
    FUN_1805bd330(&local_b8);
  }
LAB_18141b7b9:
  FUN_180575800(&local_b8);
  local_e8 = pace::eden::thrift::pub::SetupDynamicCryptoWhiteboxInput::vftable;
  if (local_e0 == (void *)0x0) {
  }
  _Memory = local_e0;
  if ((0xfff < (ulonglong)(local_d0 - (longlong)local_e0)) &&
     (_Memory = *(void **)((longlong)local_e0 + -8),
     0x1f < (ulonglong)((longlong)local_e0 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a01ad0 size=9263 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000181a03195) */
/* WARNING: Removing unreachable block (ram,0x000181a0319b) */
/* WARNING: Removing unreachable block (ram,0x000181a031a0) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_181a01ad0(byte *param_1,byte *param_2,byte *param_3,byte *param_4,byte *param_5,
                  undefined8 param_6)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  bool bVar34;
  undefined1 auStack_af38 [32];
  uint local_af18;
  uint local_af14;
  uint local_af10;
  uint local_af0c;
  uint local_af08;
  uint local_af04;
  int local_af00;
  uint local_aefc;
  uint local_aef8;
  uint local_aef4;
  uint local_aef0;
  uint local_aeec;
  uint local_aee8;
  uint local_aee4;
  uint local_aee0;
  uint local_aedc;
  uint local_aed8;
  uint local_aed4;
  uint local_aed0;
  uint local_aecc;
  uint local_aec8;
  uint local_aec4;
  uint local_aec0;
  uint local_aebc;
  uint local_aeb8;
  int local_aeb4;
  uint local_aeb0;
  uint local_aeac;
  uint local_aea8;
  uint local_aea4;
  int local_aea0;
  uint local_ae9c;
  int local_ae98;
  uint local_ae94;
  uint local_ae90;
  uint local_ae8c;
  uint local_ae88;
  uint local_ae84;
  uint local_ae80;
  uint local_ae7c;
  uint local_ae78;
  uint local_ae74;
  uint local_ae70;
  uint local_ae6c;
  uint local_ae68;
  uint local_ae64;
  uint local_ae60;
  uint local_ae5c;
  uint local_ae58;
  uint local_ae54;
  uint local_ae50;
  uint local_ae4c;
  uint local_ae48;
  uint local_ae44;
  uint local_ae40;
  int local_ae3c;
  uint local_ae38;
  int local_ae34;
  uint local_ae30;
  uint local_ae2c;
  uint local_ae28;
  uint local_ae24;
  uint local_ae20;
  uint local_ae1c;
  uint local_ae18;
  uint local_ae14;
  uint local_ae10;
  uint local_ae0c;
  uint local_ae08;
  uint local_ae04;
  uint local_ae00;
  uint local_adfc;
  uint local_adf8;
  uint local_adf4;
  uint local_adf0;
  uint local_adec;
  uint local_ade8;
  uint local_ade4;
  uint local_ade0;
  uint local_addc;
  uint local_add8;
  uint local_add4;
  uint local_add0;
  uint local_adcc;
  uint local_adc8;
  uint local_adc4;
  uint local_adc0;
  uint local_adbc;
  uint local_adb8;
  uint local_adb4;
  uint local_adb0;
  uint local_adac;
  uint local_ada8;
  uint local_ada4;
  uint local_ada0;
  uint local_ad9c;
  uint local_ad98;
  uint local_ad90 [2];
  byte *local_ad88;
  byte *local_ad80;
  byte *local_ad78;
  byte *local_ad70;
  undefined1 local_ad68 [44272];
  byte *local_78;
  byte *local_70;
  byte *local_68;
  byte *local_60;
  byte *local_58;
  undefined8 local_50;
  uint *local_48;
  ulonglong local_38;
  undefined8 uStack_30;
  
  uStack_30 = 0x181a01af2;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_af38;
  DAT_18267a8c8 = 0x811c9dc5;
  if (DAT_18267a9fc == 0) {
    DAT_18267a9fc = 1;
    _DAT_182632368 = &DAT_18262e940 + (longlong)_DAT_182632368;
    _DAT_182632370 = &DAT_18262e940 + (longlong)_DAT_182632370;
    _DAT_182632b78 = &DAT_18262e940 + (longlong)_DAT_182632b78;
    _DAT_182632b80 = &DAT_18262e940 + (longlong)_DAT_182632b80;
    _DAT_182633588 = &DAT_18262e940 + (longlong)_DAT_182633588;
    _DAT_182633590 = &DAT_18262e940 + (longlong)_DAT_182633590;
    _DAT_182633598 = &DAT_18262e940 + (longlong)_DAT_182633598;
    _DAT_1826339a0 = &DAT_18262e940 + (longlong)_DAT_1826339a0;
    _DAT_1826339a8 = &DAT_18262e940 + (longlong)_DAT_1826339a8;
    _DAT_182633db0 = &DAT_18262e940 + (longlong)_DAT_182633db0;
  }
  DAT_18267a9b0 = 0;
  _DAT_18267aa20 = local_ad68;
  if (param_1 != (byte *)0x0) {
    DAT_18267a8c8 =
         ((((((((((((((((((((((((((((((((*param_1 ^ 0x811c9dc5) * 0x1000193 ^ (uint)param_1[1]) *
                                       0x1000193 ^ (uint)param_1[2]) * 0x1000193 ^ (uint)param_1[3])
                                     * 0x1000193 ^ (uint)param_1[4]) * 0x1000193 ^ (uint)param_1[5])
                                   * 0x1000193 ^ (uint)param_1[6]) * 0x1000193 ^ (uint)param_1[7]) *
                                 0x1000193 ^ (uint)param_1[8]) * 0x1000193 ^ (uint)param_1[9]) *
                               0x1000193 ^ (uint)param_1[10]) * 0x1000193 ^ (uint)param_1[0xb]) *
                             0x1000193 ^ (uint)param_1[0xc]) * 0x1000193 ^ (uint)param_1[0xd]) *
                           0x1000193 ^ (uint)param_1[0xe]) * 0x1000193 ^ (uint)param_1[0xf]) *
                         0x1000193 ^ (uint)param_1[0x10]) * 0x1000193 ^ (uint)param_1[0x11]) *
                       0x1000193 ^ (uint)param_1[0x12]) * 0x1000193 ^ (uint)param_1[0x13]) *
                     0x1000193 ^ (uint)param_1[0x14]) * 0x1000193 ^ (uint)param_1[0x15]) * 0x1000193
                  ^ (uint)param_1[0x16]) * 0x1000193 ^ (uint)param_1[0x17]) * 0x1000193 ^
                (uint)param_1[0x18]) * 0x1000193 ^ (uint)param_1[0x19]) * 0x1000193 ^
              (uint)param_1[0x1a]) * 0x1000193 ^ (uint)param_1[0x1b]) * 0x1000193 ^
            (uint)param_1[0x1c]) * 0x1000193 ^ (uint)param_1[0x1d]) * 0x1000193 ^
          (uint)param_1[0x1e]) * 0x1000193 ^ (uint)param_1[0x1f]) * 0x1000193;
  }
  if (param_2 != (byte *)0x0) {
    DAT_18267a8c8 =
         ((((((((((((((((((((((((((((((((DAT_18267a8c8 ^ *param_2) * 0x1000193 ^ (uint)param_2[1]) *
                                       0x1000193 ^ (uint)param_2[2]) * 0x1000193 ^ (uint)param_2[3])
                                     * 0x1000193 ^ (uint)param_2[4]) * 0x1000193 ^ (uint)param_2[5])
                                   * 0x1000193 ^ (uint)param_2[6]) * 0x1000193 ^ (uint)param_2[7]) *
                                 0x1000193 ^ (uint)param_2[8]) * 0x1000193 ^ (uint)param_2[9]) *
                               0x1000193 ^ (uint)param_2[10]) * 0x1000193 ^ (uint)param_2[0xb]) *
                             0x1000193 ^ (uint)param_2[0xc]) * 0x1000193 ^ (uint)param_2[0xd]) *
                           0x1000193 ^ (uint)param_2[0xe]) * 0x1000193 ^ (uint)param_2[0xf]) *
                         0x1000193 ^ (uint)param_2[0x10]) * 0x1000193 ^ (uint)param_2[0x11]) *
                       0x1000193 ^ (uint)param_2[0x12]) * 0x1000193 ^ (uint)param_2[0x13]) *
                     0x1000193 ^ (uint)param_2[0x14]) * 0x1000193 ^ (uint)param_2[0x15]) * 0x1000193
                  ^ (uint)param_2[0x16]) * 0x1000193 ^ (uint)param_2[0x17]) * 0x1000193 ^
                (uint)param_2[0x18]) * 0x1000193 ^ (uint)param_2[0x19]) * 0x1000193 ^
              (uint)param_2[0x1a]) * 0x1000193 ^ (uint)param_2[0x1b]) * 0x1000193 ^
            (uint)param_2[0x1c]) * 0x1000193 ^ (uint)param_2[0x1d]) * 0x1000193 ^
          (uint)param_2[0x1e]) * 0x1000193 ^ (uint)param_2[0x1f]) * 0x1000193;
  }
  if (param_3 != (byte *)0x0) {
    DAT_18267a8c8 =
         ((((((((((((((((((((((((((((((((DAT_18267a8c8 ^ *param_3) * 0x1000193 ^ (uint)param_3[1]) *
                                       0x1000193 ^ (uint)param_3[2]) * 0x1000193 ^ (uint)param_3[3])
                                     * 0x1000193 ^ (uint)param_3[4]) * 0x1000193 ^ (uint)param_3[5])
                                   * 0x1000193 ^ (uint)param_3[6]) * 0x1000193 ^ (uint)param_3[7]) *
                                 0x1000193 ^ (uint)param_3[8]) * 0x1000193 ^ (uint)param_3[9]) *
                               0x1000193 ^ (uint)param_3[10]) * 0x1000193 ^ (uint)param_3[0xb]) *
                             0x1000193 ^ (uint)param_3[0xc]) * 0x1000193 ^ (uint)param_3[0xd]) *
                           0x1000193 ^ (uint)param_3[0xe]) * 0x1000193 ^ (uint)param_3[0xf]) *
                         0x1000193 ^ (uint)param_3[0x10]) * 0x1000193 ^ (uint)param_3[0x11]) *
                       0x1000193 ^ (uint)param_3[0x12]) * 0x1000193 ^ (uint)param_3[0x13]) *
                     0x1000193 ^ (uint)param_3[0x14]) * 0x1000193 ^ (uint)param_3[0x15]) * 0x1000193
                  ^ (uint)param_3[0x16]) * 0x1000193 ^ (uint)param_3[0x17]) * 0x1000193 ^
                (uint)param_3[0x18]) * 0x1000193 ^ (uint)param_3[0x19]) * 0x1000193 ^
              (uint)param_3[0x1a]) * 0x1000193 ^ (uint)param_3[0x1b]) * 0x1000193 ^
            (uint)param_3[0x1c]) * 0x1000193 ^ (uint)param_3[0x1d]) * 0x1000193 ^
          (uint)param_3[0x1e]) * 0x1000193 ^ (uint)param_3[0x1f]) * 0x1000193;
  }
  if (param_4 != (byte *)0x0) {
    DAT_18267a8c8 =
         ((((((((((((((((((((((((((((((((DAT_18267a8c8 ^ *param_4) * 0x1000193 ^ (uint)param_4[1]) *
                                       0x1000193 ^ (uint)param_4[2]) * 0x1000193 ^ (uint)param_4[3])
                                     * 0x1000193 ^ (uint)param_4[4]) * 0x1000193 ^ (uint)param_4[5])
                                   * 0x1000193 ^ (uint)param_4[6]) * 0x1000193 ^ (uint)param_4[7]) *
                                 0x1000193 ^ (uint)param_4[8]) * 0x1000193 ^ (uint)param_4[9]) *
                               0x1000193 ^ (uint)param_4[10]) * 0x1000193 ^ (uint)param_4[0xb]) *
                             0x1000193 ^ (uint)param_4[0xc]) * 0x1000193 ^ (uint)param_4[0xd]) *
                           0x1000193 ^ (uint)param_4[0xe]) * 0x1000193 ^ (uint)param_4[0xf]) *
                         0x1000193 ^ (uint)param_4[0x10]) * 0x1000193 ^ (uint)param_4[0x11]) *
                       0x1000193 ^ (uint)param_4[0x12]) * 0x1000193 ^ (uint)param_4[0x13]) *
                     0x1000193 ^ (uint)param_4[0x14]) * 0x1000193 ^ (uint)param_4[0x15]) * 0x1000193
                  ^ (uint)param_4[0x16]) * 0x1000193 ^ (uint)param_4[0x17]) * 0x1000193 ^
                (uint)param_4[0x18]) * 0x1000193 ^ (uint)param_4[0x19]) * 0x1000193 ^
              (uint)param_4[0x1a]) * 0x1000193 ^ (uint)param_4[0x1b]) * 0x1000193 ^
            (uint)param_4[0x1c]) * 0x1000193 ^ (uint)param_4[0x1d]) * 0x1000193 ^
          (uint)param_4[0x1e]) * 0x1000193 ^ (uint)param_4[0x1f]) * 0x1000193;
  }
  if (param_5 != (byte *)0x0) {
    DAT_18267a8c8 =
         ((((((((((((((((((((((((((((((((DAT_18267a8c8 ^ *param_5) * 0x1000193 ^ (uint)param_5[1]) *
                                       0x1000193 ^ (uint)param_5[2]) * 0x1000193 ^ (uint)param_5[3])
                                     * 0x1000193 ^ (uint)param_5[4]) * 0x1000193 ^ (uint)param_5[5])
                                   * 0x1000193 ^ (uint)param_5[6]) * 0x1000193 ^ (uint)param_5[7]) *
                                 0x1000193 ^ (uint)param_5[8]) * 0x1000193 ^ (uint)param_5[9]) *
                               0x1000193 ^ (uint)param_5[10]) * 0x1000193 ^ (uint)param_5[0xb]) *
                             0x1000193 ^ (uint)param_5[0xc]) * 0x1000193 ^ (uint)param_5[0xd]) *
                           0x1000193 ^ (uint)param_5[0xe]) * 0x1000193 ^ (uint)param_5[0xf]) *
                         0x1000193 ^ (uint)param_5[0x10]) * 0x1000193 ^ (uint)param_5[0x11]) *
                       0x1000193 ^ (uint)param_5[0x12]) * 0x1000193 ^ (uint)param_5[0x13]) *
                     0x1000193 ^ (uint)param_5[0x14]) * 0x1000193 ^ (uint)param_5[0x15]) * 0x1000193
                  ^ (uint)param_5[0x16]) * 0x1000193 ^ (uint)param_5[0x17]) * 0x1000193 ^
                (uint)param_5[0x18]) * 0x1000193 ^ (uint)param_5[0x19]) * 0x1000193 ^
              (uint)param_5[0x1a]) * 0x1000193 ^ (uint)param_5[0x1b]) * 0x1000193 ^
            (uint)param_5[0x1c]) * 0x1000193 ^ (uint)param_5[0x1d]) * 0x1000193 ^
          (uint)param_5[0x1e]) * 0x1000193 ^ (uint)param_5[0x1f]) * 0x1000193;
  }
  DAT_18267a728 = DAT_18267a8c8 * 0x7a0dcc15;
  iVar4 = DAT_18267a8c8 + 0xba27285;
  DAT_18267a7ac = DAT_18267a8c8 * -0x69cf18cb;
  uVar32 = DAT_18267a8c8 ^ 0x5237b5b9;
  DAT_18267a870 = DAT_18267a8c8 & 0x7ada6b0c;
  DAT_18267a70c = 0x3525ba9e;
  uVar28 = DAT_18267a8c8 & 3;
  DAT_18267a7a8 = 0x84687d90;
  DAT_18267a94c = 0x1717acec;
  DAT_18267a988 = 0xabed066d;
  DAT_18267a7fc = 0x793ea425;
  DAT_18267a99c = 0x1e459a7d;
  DAT_18267a75c = 0xa1eef78e;
  DAT_18267a974 = 0xb318946;
  DAT_18267a790 = 0x4e5c31a8;
  DAT_18267a838 = 0x5136869a;
  DAT_18267a8ec = 0x84e80b9a;
  DAT_18267a924 = 0x4607a69f;
  DAT_18267a7ec = 0xa45026d;
  DAT_18267a91c = 0x6e0d1adf;
  DAT_18267a714 = 0xd26a8fc0;
  DAT_18267a860 = 0xe8e85313;
  DAT_18267a910 = 0x4e42b5b0;
  DAT_18267a734 = 0xd5fe8f9a;
  DAT_18267a6d8 = 0xc19f290f;
  DAT_18267a6ec = 0x6d06edab;
  if (uVar28 < 2) {
    uVar26 = 0x23de18ad;
    if (uVar28 == 0) {
      uVar26 = DAT_18267a8c8;
    }
  }
  else {
    uVar26 = 0xfb2322cc;
    if (uVar28 < 3) {
      uVar26 = 0x10a83609;
    }
  }
  uVar31 = DAT_18267a8c8 ^ 0x5ccfa92;
  uVar5 = DAT_18267a8c8 & 7;
  if (uVar5 < 4) {
    if (uVar5 < 2) {
      uVar27 = 0xcddee17;
      if (uVar5 == 0) {
        uVar27 = DAT_18267a8c8;
      }
      goto LAB_181a025b6;
    }
    uVar6 = 0x75559ca6;
    uVar27 = 0x1b1457bc;
    bVar34 = uVar5 < 3;
  }
  else if (uVar5 < 6) {
    uVar6 = 0xcf8b269;
    uVar27 = 0x99c8e52a;
    bVar34 = uVar5 < 5;
  }
  else {
    uVar6 = 0xfcbaf1c9;
    uVar27 = 0xbcb54562;
    bVar34 = uVar5 < 7;
  }
  if (bVar34) {
    uVar27 = uVar6;
  }
LAB_181a025b6:
  uVar6 = uVar32 | 0xf2cd9918;
  DAT_18267a8b0 = DAT_18267a8c8 & 0x371e17a7;
  DAT_18267a834 = DAT_18267a728 + 0xfe3dc632;
  uVar5 = DAT_18267a7ac + 0xae1c29e6;
  if (uVar28 < 2) {
    _DAT_18267a8e0 = 0xcdf8d345;
    if (uVar28 == 0) {
      _DAT_18267a8e0 = DAT_18267a8c8;
    }
  }
  else {
    _DAT_18267a8e0 = 0x66ed99a;
    if (uVar28 < 3) {
      _DAT_18267a8e0 = 0x8660403a;
    }
  }
  uVar7 = DAT_18267a8c8 | 0xb9fc49dc;
  DAT_18267a85c =
       (uVar31 & 0xff0000 | uVar31 >> 0x10) >> 8 | (uVar31 << 0x10 | uVar31 & 0xff00) << 8;
  bVar34 = (DAT_18267a8c8 & 1) == 0;
  uVar21 = 0x72a9f579;
  if (bVar34) {
    uVar21 = DAT_18267a8c8;
  }
  DAT_18267a7e8 = 0x1fac68b0;
  if (bVar34) {
    DAT_18267a7e8 = DAT_18267a8c8;
  }
  DAT_18267a934 = uVar32 << 0x10 | uVar32 >> 0x10;
  _DAT_18267a1b8 = uVar27 & 0xe4bfd7c8 ^ 0x466f83ce;
  uVar8 = DAT_18267a8c8 + 0xba27285 | 0x50dde43e;
  uVar9 = DAT_18267a8c8 | 0x407e43d;
  uVar23 = DAT_18267a8c8 >> 0x10;
  _DAT_18267a7b8 = DAT_18267a8c8 << 0x10 | uVar23;
  local_aec0 = iVar4 * 0x282f81f6;
  DAT_18267a86c = DAT_18267a8c8 + 0x11fdb1c;
  uVar10 = DAT_18267a8c8 * -0x18cb0000 | DAT_18267a7ac >> 0x10;
  uVar11 = DAT_18267a8c8 * -0x5ea8279c & 0x1a53686d;
  uVar33 = (DAT_18267a728 & 0xff0000 | DAT_18267a728 >> 0x10) >> 8 |
           (DAT_18267a8c8 * -0x33eb0000 | DAT_18267a728 & 0xff00) << 8;
  uVar12 = DAT_18267a8c8 + 0xd15ff30 & 0xbbf70949;
  local_ae8c = uVar26 + 0xd4ac7d59;
  uVar22 = DAT_18267a8c8 & 0xff00;
  uVar13 = DAT_18267a8c8 << 0x10;
  uVar30 = (DAT_18267a8c8 & 0xff0000 | DAT_18267a8c8 >> 0x10) >> 8;
  DAT_18267a730 = uVar30 | (uVar22 | uVar13) << 8;
  uVar3 = uVar5 >> 0x10;
  DAT_18267a810 = uVar5 * 0x10000 | uVar3;
  local_ae78 = uVar6 ^ 0xaea29bb6;
  DAT_18267a904 = ~DAT_18267a85c;
  uVar14 = uVar26 ^ 0x1a35a1d6;
  DAT_18267a768 = uVar21 + 0x6bccb83c;
  uVar1 = uVar31 + 0x63c5bd88;
  DAT_18267a88c = uVar6 * 0x61527eac;
  DAT_18267a944 = uVar32 * 0x67fd2509;
  DAT_18267a9d8 = _DAT_18267a7b8 & 0x93d5e70;
  DAT_18267a700 = DAT_18267a7e8 << 0x10 | DAT_18267a7e8 >> 0x10;
  DAT_18267a9dc = 0x9f298329;
  uVar29 = uVar32 >> 0x10 & 7;
  if (uVar29 < 4) {
    if (uVar29 < 2) {
      DAT_18267a9dc = 0x53ded8c;
      bVar34 = uVar29 == 0;
      uVar25 = DAT_18267a934;
    }
    else {
      uVar25 = 0x16b6abca;
      bVar34 = uVar29 < 3;
    }
  }
  else if (uVar29 < 6) {
    uVar25 = 0xac80d47e;
    DAT_18267a9dc = 0x65b08d13;
    bVar34 = uVar29 < 5;
  }
  else {
    uVar25 = 0x3e9691f6;
    DAT_18267a9dc = 0xbbdb4ba3;
    bVar34 = uVar29 < 7;
  }
  if (bVar34) {
    DAT_18267a9dc = uVar25;
  }
  DAT_18267a748 = (DAT_18267a870 + 0xf65a1d93) * 0x10000 | DAT_18267a870 + 0xf65a1d93 >> 0x10;
  uVar29 = (DAT_18267a8c8 & 0x2632dc4e) + 0x6caa4f19;
  DAT_18267a93c = uVar8 ^ 0xb623a566;
  uVar25 = 0x1b66954d;
  if ((DAT_18267a8c8 + 0xba27285 & 1) == 0) {
    uVar25 = DAT_18267a8c8 + 0xba27285;
  }
  DAT_18267a74c = DAT_18267a728 + 0x59fc99a5 | 0x3ea57027;
  DAT_18267a8bc = DAT_18267a834 * 0x10000 | DAT_18267a834 >> 0x10;
  _DAT_18267a1b0 = uVar9 ^ 0xa1f36a5a;
  DAT_18267a7d4 = DAT_18267a870 * -0x41e5dc07;
  _DAT_18267a7b8 = ~_DAT_18267a7b8;
  local_ae34 = iVar4 * -0x3aaad06 + -0x3b8c6383;
  DAT_18267a95c = (DAT_18267a870 + 0x62e7661d) * -0x69cf18cb;
  DAT_18267a6d0 = uVar26 + 0x27ee9cb5;
  uVar15 = uVar12 << 0x10 | uVar12 >> 0x10;
  DAT_18267a6f4 = (_DAT_18267a8e0 | 0x7359f9ee) + 0x9eec1b4d;
  DAT_18267a880 = DAT_18267a730 ^ 0xbcb54562;
  uVar2 = DAT_18267a8c8 + 0x10c0ac36;
  DAT_18267a6e0 = DAT_18267a730 * -0x66371ad6;
  _DAT_18267a8a8 = DAT_18267a904 * -0x755ab491;
  DAT_18267a6e4 = DAT_18267a810 + 0xfcbaf1c9;
  DAT_18267a19c = ~DAT_18267a8c8;
  DAT_18267a7a0 = uVar6 + 0xe0539750;
  if (uVar28 < 2) {
    uVar16 = 0xb9fc49dc;
    if (uVar28 == 0) {
      uVar16 = DAT_18267a8c8;
    }
  }
  else {
    uVar16 = 0xdf63eb15;
    if (uVar28 < 3) {
      uVar16 = 0x66ed99a;
    }
  }
  _DAT_18267a80c = local_ae78 + 0x5975e8be;
  _DAT_18267a7f0 = uVar23 << 0x10 | DAT_18267a8c8 & 0xffff;
  DAT_18267aa28 =
       (DAT_18267a8c8 << 0x10 & 0xff0000 | DAT_18267a8c8 & 0xffff) >> 8 |
       (uVar23 << 0x10 | uVar23 & 0xff00) << 8;
  uVar23 = (uVar21 & 0xff0000 | uVar21 >> 0x10) >> 8;
  DAT_18267a7d8 = uVar23 | (uVar21 << 0x10 | uVar21 & 0xff00) << 8;
  DAT_18267a9c0 = _DAT_18267a1b8 + 0x775b7dda | DAT_18267a8c8;
  DAT_18267a6e8 = DAT_18267a7e8 + (DAT_18267a8b0 ^ 0xdd8fcf04);
  DAT_18267a938 = uVar8 ^ 0x6bac6a62;
  if (uVar28 < 2) {
    DAT_18267a808 = 0x9355b0e7;
    if (uVar28 == 0) {
      DAT_18267a808 = DAT_18267a8c8;
    }
  }
  else {
    DAT_18267a808 = DAT_18267a9dc;
    if (uVar28 < 3) {
      DAT_18267a808 = 0x9f298329;
    }
  }
  DAT_18267a89c = uVar25 - ((DAT_18267a8c8 | 0xa6ea8ecd) & 0xb759e296);
  _DAT_18267a774 = uVar29 & DAT_18267a8c8 + 0xba27285;
  DAT_18267a8e8 = _DAT_18267a7b8 ^ (DAT_18267a8c8 | 0xa6ea8ecd);
  _DAT_18267a8c4 = ~(DAT_18267a728 + 0x59fc99a5);
  uVar17 = DAT_18267a8c8 * 0x31948a28 ^ DAT_18267a8c8;
  DAT_18267a828 = DAT_18267a8bc ^ DAT_18267a870;
  DAT_18267a8b8 = uVar10 ^ 0x6bdfbc76 | DAT_18267a7d4;
  _DAT_18267a720 = (DAT_18267a870 + 0x51afba62 | 0x59fe9c73) * DAT_18267a8c8 * -0x5ea8279c;
  local_aee8 = uVar33 | DAT_18267a728;
  uVar10 = uVar10 + local_aec0;
  DAT_18267a9ac = (DAT_18267a8c8 + 0x11fdb1c) - uVar7;
  DAT_18267a7b0 = uVar15 | uVar33;
  DAT_18267a850 =
       (DAT_18267a880 & 0xff0000 | DAT_18267a880 >> 0x10) >> 8 |
       (DAT_18267a880 << 0x10 | DAT_18267a880 & 0xff00) << 8;
  DAT_18267a854 = (DAT_18267a8c8 + 0xe0c8fbcf | 0x1b1457bc) ^ (DAT_18267a8c8 | 0xbffc4dfe);
  uVar28 = uVar5 * -0x51e3d61a >> 0x10;
  _DAT_18267a7bc = ~_DAT_18267a8a8;
  _DAT_18267a8a0 =
       (uVar22 << 8 | (uVar13 & 0xffffff) >> 8) >> 8 |
       (uVar30 << 0x10 | (DAT_18267a8c8 & 0xff0000) >> 8) << 8;
  uVar18 = uVar3 & 7;
  if (uVar18 < 4) {
    if (uVar18 < 2) {
      uVar24 = uVar26 ^ 0xa03143db;
      if (uVar18 == 0) {
        uVar24 = DAT_18267a810;
      }
    }
    else {
      uVar24 = uVar16;
      if (uVar18 < 3) {
        uVar24 = uVar14;
      }
    }
  }
  else if (uVar18 < 6) {
    uVar24 = uVar6;
    if (uVar18 < 5) {
      uVar24 = uVar7 ^ 0xc8b200ca;
    }
  }
  else {
    uVar24 = DAT_18267a7a0;
    if (uVar18 < 7) {
      uVar24 = DAT_18267a810 + 0xfcbaf1c9;
    }
  }
  uVar18 = DAT_18267a19c << 0x10 | DAT_18267a19c >> 0x10;
  uVar19 = DAT_18267a730 | uVar1;
  DAT_18267a92c =
       (uVar27 & 0xff0000 | uVar27 >> 0x10) >> 8 | (uVar27 << 0x10 | uVar27 & 0xff00) << 8;
  uVar20 = uVar21 & 7;
  if (uVar20 < 4) {
    if (uVar20 < 2) {
      DAT_18267a9cc = DAT_18267a7d8;
      if (uVar20 == 0) {
        DAT_18267a9cc = uVar21;
      }
    }
    else {
      DAT_18267a9cc = (DAT_18267a8c8 & 0x2632dc4e | 0xb0ff575f) * -0x23b88cce;
      if (uVar20 < 3) {
        DAT_18267a9cc = DAT_18267aa28;
      }
    }
  }
  else if (uVar20 < 6) {
    DAT_18267a9cc = DAT_18267a8c8 ^ 0x465ff4c7;
    if (uVar20 < 5) {
      DAT_18267a9cc = DAT_18267a700 | 0xaea29bb6;
    }
  }
  else {
    DAT_18267a9cc = _DAT_18267a7f0;
    if (uVar20 < 7) {
      DAT_18267a9cc = DAT_18267a8b0;
    }
  }
  DAT_18267a704 = uVar25 & DAT_18267a768;
  DAT_18267a750 = DAT_18267a93c & _DAT_18267a1b8;
  DAT_18267a990 = DAT_18267a938 * DAT_18267a748;
  DAT_18267a9e0 = DAT_18267a6e8 & DAT_18267a834 ^ 0xb5bd9660;
  DAT_18267a940 = _DAT_18267a1b0 + _DAT_18267a7b8;
  DAT_18267a778 = uVar17 - uVar29;
  DAT_18267a6dc =
       (local_aec0 & 0xff0000 | local_aec0 >> 0x10) >> 8 |
       (iVar4 * -0x7e0a0000 | local_aec0 & 0xff00) << 8 | DAT_18267a95c;
  DAT_18267a968 = DAT_18267a8c8 * 0x31948a28 - (uVar33 + 0x6453870b);
  DAT_18267a980 = _DAT_18267a720 - (DAT_18267a8c8 + 0x11fdb1c | 0xf45d8d7b);
  DAT_18267a9a4 = local_aec0 + local_aee8;
  DAT_18267a6d4 = (uVar30 << 0x10 | (uVar22 | uVar13 & 0xffffff) >> 8) & DAT_18267a9ac;
  DAT_18267a72c = DAT_18267a6f4 * uVar26 & DAT_18267a8c8;
  DAT_18267aa1c = uVar10 - uVar7;
  DAT_18267a978 = DAT_18267a6f4 ^ local_ae8c;
  DAT_18267a9d0 = uVar15 | uVar26 + 0x9abaf7d0;
  DAT_18267a710 = uVar26 + 0x27ee9cb5 | DAT_18267a730;
  DAT_18267a970 = ~DAT_18267a854;
  _DAT_18267a758 = (DAT_18267a730 ^ DAT_18267a8c8) & DAT_18267a730;
  uVar29 = _DAT_18267a7bc ^ uVar12 + uVar11;
  DAT_18267a858 =
       (uVar5 * 0x29e60000 & 0xff0000 | uVar5 * 0x29e60000 >> 0x10) >> 8 |
       (uVar28 << 0x10 | uVar28 & 0xff00) << 8;
  DAT_18267a760 = _DAT_18267a8a0 ^ uVar7 ^ 0xc8b200ca;
  DAT_18267a950 = (local_ae78 + 0x5975e8be) * uVar16;
  DAT_18267a6f0 = DAT_18267a19c & DAT_18267a6e0;
  DAT_18267a820 = uVar14 + uVar27;
  DAT_18267aa0c = DAT_18267a730 ^ DAT_18267a7a0;
  DAT_18267a898 = DAT_18267a9cc * DAT_18267a8b0;
  DAT_18267a9bc = ~DAT_18267a6e4;
  DAT_18267a81c = DAT_18267a944 ^ ((uVar1 ^ 0x1137abbb) << 0x10 | (uVar1 ^ 0x1137abbb) >> 0x10);
  DAT_18267a6c8 = DAT_18267a88c + DAT_18267a7d8;
  DAT_18267a77c = ~DAT_18267a7e8;
  DAT_18267a984 = uVar18 | uVar24;
  DAT_18267aa04 =
       (uVar19 & 0xff0000 | uVar19 >> 0x10) >> 8 | (uVar19 << 0x10 | uVar19 & 0xff00) << 8;
  DAT_18267a9f8 = ~DAT_18267aa28;
  _DAT_18267aa10 = (uVar31 + 0xcfbaa229) * DAT_18267a8c8;
  if ((DAT_18267a8c8 & 1) == 0) {
    _DAT_18267aa10 = _DAT_18267a7f0;
  }
  DAT_18267a78c = DAT_18267a990 - DAT_18267a9c0;
  DAT_18267a8b4 = ((DAT_18267a7e8 >> 0x10) << 0x10 | DAT_18267a7e8 & 0xffff) + DAT_18267a700;
  DAT_18267a98c = DAT_18267a934 * uVar32;
  DAT_18267a958 = DAT_18267a808 * uVar8;
  DAT_18267a76c = DAT_18267a768 * 0x10000 | DAT_18267a768 >> 0x10;
  _DAT_18267a804 = DAT_18267a74c ^ DAT_18267a748;
  DAT_18267a874 = uVar9;
  if ((DAT_18267a93c & 1) == 0) {
    DAT_18267a874 = DAT_18267a93c;
  }
  DAT_18267a198 = ~DAT_18267a9e0;
  DAT_18267aa14 = uVar9 + DAT_18267a8c8 + 0xba27285 & DAT_18267a89c;
  DAT_18267a868 = _DAT_18267a8c4 ^ DAT_18267a8bc;
  _DAT_18267a7b8 = DAT_18267a8e8 - _DAT_18267a7b8;
  DAT_18267a8d4 = ~DAT_18267a8b8;
  DAT_18267a894 = DAT_18267a940 - uVar17;
  DAT_18267a788 = DAT_18267a8c8 + 0x11fdb1c | DAT_18267a870;
  DAT_18267a794 = ~DAT_18267a6dc;
  DAT_18267a890 = DAT_18267a7d4 + local_ae34;
  DAT_18267a848 = (local_aee8 + local_aec0) - DAT_18267a8c8;
  DAT_18267a764 = DAT_18267a95c & DAT_18267a980;
  DAT_18267a7dc = DAT_18267a880 ^ DAT_18267a728;
  DAT_18267a770 = ~DAT_18267a978;
  DAT_18267a884 = uVar10 & local_ae8c;
  _DAT_18267a9b8 = DAT_18267a730 * DAT_18267a8c8;
  DAT_18267a9e4 = DAT_18267a72c + DAT_18267aa1c;
  uVar31 = (DAT_18267a854 & 0xff0000 | DAT_18267a854 >> 0x10) >> 8;
  DAT_18267aa08 = uVar31 | (DAT_18267a854 << 0x10 | DAT_18267a854 & 0xff00) << 8;
  DAT_18267a84c = _DAT_18267a8a8 & _DAT_18267a758;
  uVar28 = uVar29 >> 0x10;
  DAT_18267a1a4 = uVar29 << 0x10 | uVar28;
  DAT_18267a954 = DAT_18267a7a0 | DAT_18267aa0c;
  DAT_18267a708 = (uVar2 & 0xff0000 | uVar2 >> 0x10) >> 8 | (uVar2 * 0x10000 | uVar2 & 0xff00) << 8;
  DAT_18267a7b4 = DAT_18267a898 * DAT_18267a81c;
  _DAT_18267a7c8 = _DAT_18267a8a0 + local_ae78 + 0x5975e8be;
  DAT_18267a82c =
       uVar14 & 0xffff | ((uVar14 >> 0x18) << 0x10 | (uVar14 & 0xff0000) >> 8) << 8 | DAT_18267a858;
  DAT_18267a818 = (uVar2 | uVar11) - DAT_18267a85c;
  _DAT_18267a73c = DAT_18267a760 - DAT_18267a904;
  _DAT_18267a724 = _DAT_18267a7bc << 0x10 | _DAT_18267a7bc >> 0x10;
  DAT_18267a71c = uVar1 - uVar18;
  DAT_18267a7c4 = DAT_18267a92c ^ DAT_18267a7ac;
  DAT_18267a744 = DAT_18267a19c & DAT_18267a6e4;
  DAT_18267a930 = uVar24 * DAT_18267a19c;
  DAT_18267a9ec = DAT_18267a730 + uVar32 * -0x67fd2509;
  DAT_18267a7e4 = ~DAT_18267a6e0;
  _DAT_18267a994 = DAT_18267a9cc ^ DAT_18267aa04;
  _DAT_18267a964 = uVar23 << 0x10 | (uVar21 << 0x10 & 0xffffff | uVar21 & 0xff00) >> 8;
  DAT_18267aa00 = DAT_18267a8b0 + _DAT_18267aa10;
  DAT_18267a914 = DAT_18267a6c8 * DAT_18267a9d8;
  DAT_18267a8dc = DAT_18267a98c ^ DAT_18267a934;
  DAT_18267a8e4 =
       (DAT_18267a88c & 0xff0000 | DAT_18267a88c >> 0x10) >> 8 |
       (uVar6 * 0x7eac0000 | DAT_18267a88c & 0xff00) << 8;
  DAT_18267a998 = DAT_18267a76c & DAT_18267a834;
  DAT_18267a7cc = DAT_18267aa28 | DAT_18267a8b4;
  DAT_18267a7f8 = DAT_18267a700 & DAT_18267a77c;
  DAT_18267a83c = _DAT_18267a7f0 + DAT_18267a704;
  _DAT_18267a194 = _DAT_18267a804 & DAT_18267a7e8;
  DAT_18267a830 = DAT_18267a9c0 & DAT_18267a958;
  uVar32 = DAT_18267aa14 & 3;
  if (uVar32 < 2) {
    DAT_18267a780 = DAT_18267a938;
    if (uVar32 == 0) {
      DAT_18267a780 = DAT_18267aa14;
    }
  }
  else {
    DAT_18267a780 = DAT_18267a990;
    if (uVar32 < 3) {
      DAT_18267a780 = DAT_18267a198;
    }
  }
  uVar32 = DAT_18267a808 & 3;
  if (uVar32 < 2) {
    DAT_18267a8cc = DAT_18267a93c;
    if (uVar32 == 0) {
      DAT_18267a8cc = DAT_18267a808;
    }
  }
  else {
    DAT_18267a8cc = _DAT_18267a1b8;
    if (uVar32 < 3) {
      DAT_18267a8cc = DAT_18267a9e0;
    }
  }
  DAT_18267a6cc = DAT_18267a89c & DAT_18267a78c;
  DAT_18267a814 = DAT_18267a8e8 & _DAT_18267a1b0;
  DAT_18267a948 = DAT_18267a874 * DAT_18267a9dc;
  DAT_18267a9d4 = ~DAT_18267a750;
  DAT_18267a8f4 = _DAT_18267a8c4 | DAT_18267a6e8;
  DAT_18267a9e8 = (DAT_18267a834 >> 0x10) << 0x10 | DAT_18267a834 & 0xffff;
  DAT_18267a9f4 =
       (DAT_18267a894 & 0xff0000 | DAT_18267a894 >> 0x10) >> 8 |
       (DAT_18267a894 * 0x10000 | DAT_18267a894 & 0xff00) << 8;
  DAT_18267a97c = DAT_18267a778 * 0x10000 | DAT_18267a778 >> 0x10;
  DAT_18267a738 =
       (DAT_18267a8d4 & 0xff0000 | DAT_18267a8d4 >> 0x10) >> 8 |
       (DAT_18267a8d4 << 0x10 | DAT_18267a8d4 & 0xff00) << 8;
  DAT_18267a960 = DAT_18267a8b8 + DAT_18267a7d4;
  DAT_18267a754 = ~(DAT_18267a8c8 + 0x11fdb1c);
  DAT_18267aa18 = _DAT_18267a774 ^ DAT_18267a870;
  DAT_18267a908 = _DAT_18267a7b8 ^ DAT_18267a8c8;
  DAT_18267a87c = DAT_18267a828 | DAT_18267a7d4;
  _DAT_18267a8f0 =
       (DAT_18267a6dc & 0xff0000 | DAT_18267a6dc >> 0x10) >> 8 |
       (DAT_18267a6dc << 0x10 | DAT_18267a6dc & 0xff00) << 8;
  DAT_18267a798 = (DAT_18267a870 + 0x62e7661d) * -0x18cb0000 | DAT_18267a95c >> 0x10;
  DAT_18267a7f4 = local_ae34 + DAT_18267a7d4 & DAT_18267a940;
  DAT_18267a824 =
       (DAT_18267a788 & 0xff0000 | DAT_18267a788 >> 0x10) >> 8 |
       (DAT_18267a788 << 0x10 | DAT_18267a788 & 0xff00) << 8;
  uVar32 = local_aee8 + local_aec0;
  DAT_18267a8d0 =
       (uVar32 & 0xff0000 | uVar32 >> 0x10) >> 8 | (uVar32 * 0x10000 | uVar32 & 0xff00) << 8;
  DAT_18267a7a4 = _DAT_18267a8e0 << 0x10 | _DAT_18267a8e0 >> 0x10;
  DAT_18267a740 = DAT_18267a848 ^ DAT_18267a794;
  DAT_18267a6fc = DAT_18267a7dc * DAT_18267a728;
  DAT_18267a9f0 = DAT_18267a9e4 * DAT_18267a72c;
  DAT_18267a918 = _DAT_18267a720 + DAT_18267a9ac;
  DAT_18267a9a8 = DAT_18267a850 | DAT_18267a764;
  _DAT_18267a9c4 = DAT_18267a880 * DAT_18267a970;
  DAT_18267a840 = DAT_18267a6f4 | DAT_18267a980;
  DAT_18267a7d0 = DAT_18267aa1c * DAT_18267a6d4;
  DAT_18267a96c = DAT_18267a770 | DAT_18267a9d0;
  _DAT_18267a1b4 = uVar30 << 0x10 | (uVar22 | uVar13 & 0xffffff) >> 8;
  _DAT_18267a90c = uVar31 << 0x10 | (DAT_18267a854 << 0x10 & 0xffffff | DAT_18267a854 & 0xff00) >> 8
  ;
  DAT_18267a8c0 = DAT_18267a978 & _DAT_18267a9b8;
  DAT_18267a784 = _DAT_18267a8a8 ^ DAT_18267a730;
  uVar28 = uVar28 & 3;
  if (uVar28 < 2) {
    DAT_18267a718 = DAT_18267a84c;
    if (uVar28 == 0) {
      DAT_18267a718 = DAT_18267a1a4;
    }
  }
  else {
    DAT_18267a718 = DAT_18267a884;
    if (uVar28 < 3) {
      DAT_18267a718 = DAT_18267a710;
    }
  }
  uVar28 = DAT_18267a854 & 3;
  if (uVar28 < 2) {
    DAT_18267a878 = DAT_18267a7b0;
    if (uVar28 == 0) {
      DAT_18267a878 = DAT_18267a854;
    }
  }
  else {
    DAT_18267a878 = _DAT_18267a8a0;
    if (uVar28 < 3) {
      DAT_18267a878 = _DAT_18267a7c8;
    }
  }
  DAT_18267a6f8 = DAT_18267a82c + DAT_18267a6f0;
  DAT_18267a8d8 = DAT_18267a904;
  if ((DAT_18267a818 & 1) == 0) {
    DAT_18267a8d8 = DAT_18267a818;
  }
  DAT_18267a1ac = uVar3 << 0x10 | uVar5 & 0xffff;
  DAT_18267a1a8 = DAT_18267a858 * DAT_18267a85c;
  DAT_18267a920 = _DAT_18267a73c * DAT_18267a71c;
  DAT_18267a7e0 = local_ae78 + 0x5975e8be & DAT_18267a760;
  DAT_18267a8a4 = ~_DAT_18267a724;
  uVar28 = DAT_18267a820 & 7;
  if (uVar28 < 4) {
    if (uVar28 < 2) {
      DAT_18267a1a0 = DAT_18267a19c;
      if (uVar28 == 0) {
        DAT_18267a1a0 = DAT_18267a820;
      }
    }
    else {
      DAT_18267a1a0 = DAT_18267a7e4;
      if (uVar28 < 3) {
        DAT_18267a1a0 = DAT_18267a930;
      }
    }
  }
  else if (uVar28 < 6) {
    DAT_18267a1a0 = DAT_18267a954;
    if (uVar28 < 5) {
      DAT_18267a1a0 = DAT_18267a7ac;
    }
  }
  else {
    DAT_18267a1a0 = DAT_18267a9ec;
    if (uVar28 < 7) {
      DAT_18267a1a0 = uVar26 + 0x27ee9cb5;
    }
  }
  uVar28 = DAT_18267a6e0 & 3;
  if (uVar28 < 2) {
    DAT_18267a844 = DAT_18267a9f8;
    if (uVar28 == 0) {
      DAT_18267a844 = DAT_18267a6e0;
    }
  }
  else {
    DAT_18267a844 = DAT_18267a944;
    if (uVar28 < 3) {
      DAT_18267a844 = DAT_18267a744;
    }
  }
  DAT_18267a864 = DAT_18267a92c - DAT_18267a7c4;
  local_48 = local_ad90;
  local_50 = param_6;
  local_58 = param_5;
  DAT_18267a8f8 = &local_78;
  DAT_18267a514 = 0x1f18;
  iVar4 = 0xd5;
  DAT_18267a79c = DAT_18267a76c;
  DAT_18267a7c0 = _DAT_18267a724;
  DAT_18267a800 = DAT_18267a19c;
  DAT_18267a888 = DAT_18267a19c;
  _DAT_18267a8ac = _DAT_18267a804;
  DAT_18267a900 = DAT_18267a8c8;
  DAT_18267a928 = DAT_18267a7d4;
  DAT_18267a9a0 = DAT_18267a730;
  DAT_18267a9c8 = DAT_18267a730;
  local_af18 = DAT_18267a930;
  local_af14 = DAT_18267a9cc;
  local_af10 = DAT_18267a1a4;
  local_af0c = DAT_18267aa28;
  local_af08 = DAT_18267a7d8;
  local_af04 = DAT_18267aa08;
  local_af00 = _DAT_18267a720;
  local_aefc = DAT_18267a978;
  local_aef8 = DAT_18267a92c;
  local_aef4 = DAT_18267a870;
  local_aef0 = DAT_18267a6d4;
  local_aeec = DAT_18267a19c;
  local_aee4 = DAT_18267aa14;
  local_aee0 = DAT_18267a82c;
  local_aedc = DAT_18267a770;
  local_aed8 = DAT_18267a858;
  local_aed4 = _DAT_18267a8a0;
  local_aed0 = DAT_18267a954;
  local_aecc = _DAT_18267aa10;
  local_aec8 = DAT_18267a874;
  local_aec4 = DAT_18267a8b8;
  local_aebc = DAT_18267a854;
  local_aeb8 = DAT_18267a818;
  local_aeb4 = DAT_18267a71c;
  local_aeb0 = _DAT_18267a8c4;
  local_aeac = DAT_18267a760;
  local_aea8 = DAT_18267a980;
  local_aea4 = DAT_18267a764;
  local_aea0 = DAT_18267a9e4;
  local_ae9c = DAT_18267a84c;
  local_ae98 = DAT_18267aa1c;
  local_ae94 = DAT_18267a6dc;
  local_ae90 = DAT_18267a8b0;
  local_ae88 = DAT_18267a9d0;
  local_ae84 = DAT_18267a72c;
  local_ae80 = DAT_18267a93c;
  local_ae7c = DAT_18267a7e8;
  local_ae74 = DAT_18267a704;
  local_ae70 = _DAT_18267a724;
  local_ae6c = DAT_18267a884;
  local_ae68 = DAT_18267a7dc;
  local_ae64 = DAT_18267a794;
  local_ae60 = DAT_18267a848;
  local_ae5c = DAT_18267a788;
  local_ae58 = DAT_18267a9c0;
  local_ae54 = DAT_18267a9ec;
  local_ae50 = DAT_18267a7e4;
  local_ae4c = DAT_18267a9e0;
  local_ae48 = DAT_18267a9ac;
  local_ae44 = DAT_18267a76c;
  local_ae40 = DAT_18267a700;
  local_ae3c = _DAT_18267a73c;
  local_ae38 = DAT_18267a95c;
  local_ae30 = DAT_18267a880;
  local_ae2c = DAT_18267a6f4;
  local_ae28 = _DAT_18267a8a8;
  local_ae24 = DAT_18267a904;
  local_ae20 = DAT_18267a810;
  local_ae1c = DAT_18267a944;
  local_ae18 = DAT_18267a934;
  local_ae14 = _DAT_18267a804;
  local_ae10 = DAT_18267a808;
  local_ae0c = DAT_18267a8bc;
  local_ae08 = _DAT_18267a7b8;
  local_ae04 = DAT_18267a7d4;
  local_ae00 = DAT_18267a8d4;
  local_adfc = DAT_18267a894;
  local_adf8 = DAT_18267a78c;
  local_adf4 = DAT_18267a198;
  local_adf0 = DAT_18267a938;
  local_adec = DAT_18267a990;
  local_ade8 = DAT_18267a85c;
  local_ade4 = _DAT_18267a1b8;
  local_ade0 = DAT_18267a88c;
  local_addc = DAT_18267a89c;
  local_add8 = DAT_18267a8e8;
  local_add4 = _DAT_18267a1b0;
  local_add0 = _DAT_18267a8e0;
  local_adcc = _DAT_18267a7f0;
  local_adc8 = DAT_18267a9d8;
  local_adc4 = DAT_18267a750;
  local_adc0 = DAT_18267a778;
  local_adbc = _DAT_18267a774;
  local_adb8 = DAT_18267a828;
  local_adb4 = DAT_18267a850;
  local_adb0 = DAT_18267a970;
  local_adac = _DAT_18267a9b8;
  local_ada8 = DAT_18267a710;
  local_ada4 = DAT_18267a7b0;
  local_ada0 = DAT_18267a6f0;
  local_ad9c = DAT_18267a9f8;
  local_ad98 = DAT_18267a744;
  local_ad90[0] = DAT_18267a7c4;
  local_ad88 = param_4;
  local_ad80 = param_3;
  local_ad78 = param_2;
  local_ad70 = param_1;
  local_78 = param_1;
  local_70 = param_2;
  local_68 = param_3;
  local_60 = param_4;
  do {
    iVar4 = (**(code **)(&DAT_182478a90 + (longlong)iVar4 * 8))();
  } while (iVar4 != 0);
  DAT_18267a8f8 = DAT_18267a8f8 + 7;
}



############ FUN_ 18141b8e0 size=35 ############

void FUN_18141b8e0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  FUN_18141b260(param_1,param_2,param_2,param_3,param_4,param_5);
  return;
}



############ FUN_ 181247a90 size=461 ############

undefined8 FUN_181247a90(longlong *param_1,byte *param_2)

{
  char cVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  byte bVar5;
  int iVar6;
  longlong lVar7;
  byte local_res10 [8];
  char local_res18 [8];
  
  bVar5 = *param_2;
  do {
    if (bVar5 == 0) {
      return 1;
    }
    lVar7 = 0;
    do {
      bVar5 = *param_2;
      param_2 = param_2 + 1;
      uVar4 = (uint)bVar5;
      if ((char)bVar5 < '\0') {
        uVar3 = 0x40;
        iVar6 = 0;
        uVar4 = 0x7f;
        if ((bVar5 & 0x40) != 0) {
          do {
            if (uVar3 < 9) break;
            uVar4 = uVar4 >> 1;
            iVar6 = iVar6 + 1;
            uVar3 = uVar3 >> 1;
          } while ((bVar5 & uVar3) != 0);
        }
        uVar4 = bVar5 & uVar4;
        for (; (iVar6 = iVar6 + -1, -1 < iVar6 && ((*param_2 & 0xc0) == 0x80));
            param_2 = param_2 + 1) {
          uVar4 = *param_2 & 0x3f | uVar4 << 6;
        }
      }
      uVar3 = uVar4 - 0x41;
      if (0x19 < uVar3) {
        if (uVar4 - 0x61 < 0x1a) {
          uVar3 = uVar4 - 0x47;
        }
        else if (uVar4 - 0x30 < 10) {
          uVar3 = uVar4 + 4;
        }
        else if (uVar4 == 0x2b) {
          uVar3 = 0x3e;
        }
        else if (uVar4 == 0x2f) {
          uVar3 = 0x3f;
        }
        else if ((uVar4 != 0x3d) || (uVar3 = 0x40, lVar7 < 2)) {
          return 0;
        }
      }
      local_res18[lVar7] = (char)uVar3;
      cVar1 = local_res18[1];
      lVar7 = lVar7 + 1;
    } while (lVar7 < 4);
    if ((undefined **)*param_1 == juce::MemoryOutputStream::vftable) {
      local_res10[0] = (byte)local_res18[1] >> 4 | local_res18[0] << 2;
      (*(code *)PTR_FUN_182496b98)(param_1,local_res10);
    }
    else {
      (*(code *)((undefined **)*param_1)[5])(param_1);
    }
    cVar2 = local_res18[2];
    if ((byte)local_res18[2] < 0x40) {
      if ((undefined **)*param_1 == juce::MemoryOutputStream::vftable) {
        local_res10[0] = (byte)local_res18[2] >> 2 | cVar1 << 4;
        (*(code *)PTR_FUN_182496b98)(param_1,local_res10);
      }
      else {
        (*(code *)((undefined **)*param_1)[5])(param_1);
      }
      if ((byte)local_res18[3] < 0x40) {
        bVar5 = cVar2 << 6 | local_res18[3];
        if ((undefined **)*param_1 == juce::MemoryOutputStream::vftable) {
          local_res10[0] = bVar5;
          (*(code *)PTR_FUN_182496b98)(param_1,local_res10);
        }
        else {
          (*(code *)((undefined **)*param_1)[5])(param_1,bVar5);
        }
      }
    }
    bVar5 = *param_2;
  } while( true );
}



############ FUN_ 1805a59c0 size=124 ############

void FUN_1805a59c0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = boost::system::system_error::vftable;
  if ((ulonglong)param_1[8] < 0x10) {
    param_1[7] = 0;
    param_1[8] = 0xf;
    *(undefined1 *)(param_1 + 5) = 0;
    *param_1 = std::exception::vftable;
    __std_exception_destroy(param_1 + 1);
    return;
  }
  pvVar1 = (void *)param_1[5];
  _Memory = pvVar1;
  if ((0xfff < param_1[8] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a1d920 size=23 ############

void Unwind_181a1d920(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1805a5460 size=167 ############

void FUN_1805a5460(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x90) {
    FUN_1805a5290(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x90) * 0x90)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805a5290 size=232 ############

void FUN_1805a5290(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *pvVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  if (*(char *)(param_1 + 0x68) != '\0') {
    if ((*(longlong **)(param_1 + 0x78) != (longlong *)0x0) &&
       (puVar2 = (undefined8 *)(**(code **)(**(longlong **)(param_1 + 0x78) + 0x10))(),
       puVar2 != (undefined8 *)0x0)) {
      (**(code **)*puVar2)(puVar2,1,(undefined8 *)*puVar2,param_4,uVar4);
    }
    *(undefined1 *)(param_1 + 0x68) = 0;
  }
  if (0xf < *(ulonglong *)(param_1 + 0x40)) {
    pvVar1 = *(void **)(param_1 + 0x28);
    pvVar3 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x40) + 1) &&
       (pvVar3 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  *(undefined8 *)(param_1 + 0x38) = 0;
  *(undefined8 *)(param_1 + 0x40) = 0xf;
  *(undefined1 *)(param_1 + 0x28) = 0;
  if (*(ulonglong *)(param_1 + 0x20) < 0x10) {
    *(undefined8 *)(param_1 + 0x18) = 0;
    *(undefined8 *)(param_1 + 0x20) = 0xf;
    *(undefined1 *)(param_1 + 8) = 0;
    return;
  }
  pvVar1 = *(void **)(param_1 + 8);
  pvVar3 = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0x20) + 1) &&
     (pvVar3 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 1805a4ee0 size=182 ############

void FUN_1805a4ee0(basic_streambuf<char,std::char_traits<char>_> *param_1)

{
  void *pvVar1;
  void *_Memory;
  longlong lVar2;
  
  *(undefined ***)param_1 =
       boost::io::basic_altstringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  if (param_1[0x70] == (basic_streambuf<char,std::char_traits<char>_>)0x0) {
    param_1[0x70] = (basic_streambuf<char,std::char_traits<char>_>)0x0;
    **(undefined8 **)(param_1 + 0x18) = 0;
    **(undefined8 **)(param_1 + 0x38) = 0;
    **(undefined4 **)(param_1 + 0x50) = 0;
    **(undefined8 **)(param_1 + 0x20) = 0;
    **(undefined8 **)(param_1 + 0x40) = 0;
    **(undefined4 **)(param_1 + 0x58) = 0;
    *(undefined8 *)(param_1 + 0x68) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001805a4f89. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    std::basic_streambuf<char,std::char_traits<char>_>::
    ~basic_streambuf<char,std::char_traits<char>_>(param_1);
    return;
  }
  if (**(longlong **)(param_1 + 0x40) == 0) {
    lVar2 = (longlong)**(int **)(param_1 + 0x50) + **(longlong **)(param_1 + 0x38);
  }
  else {
    lVar2 = (longlong)**(int **)(param_1 + 0x58) + **(longlong **)(param_1 + 0x40);
  }
  pvVar1 = (void *)**(longlong **)(param_1 + 0x18);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(lVar2 - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805a55f0 size=319 ############

void FUN_1805a55f0(undefined8 *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  void *pvVar5;
  longlong lVar6;
  void *pvVar7;
  
  *param_1 = pace::ExceptionHandler::vftable;
  plVar4 = (longlong *)param_1[0xe];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  plVar4 = (longlong *)param_1[0xc];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if (0xf < (ulonglong)param_1[9]) {
    pvVar5 = (void *)param_1[6];
    pvVar7 = pvVar5;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar7 = *(void **)((longlong)pvVar5 + -8),
       0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar7);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar5 = (void *)param_1[2];
  pvVar7 = pvVar5;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar7 = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 180575800 size=272 ############

void FUN_180575800(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::ErrorInfo::vftable;
  if (0xf < (ulonglong)param_1[0xd]) {
    pvVar1 = (void *)param_1[10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc] = 0;
  param_1[0xd] = 0xf;
  *(undefined1 *)(param_1 + 10) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805e3870 size=115 ############

void FUN_1805e3870(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::fusion::EdenAuthCallbackHandler_LocalOnly_Ilok2::vftable;
  FUN_1805a5740(param_1 + 6);
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  _Memory = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805a5740 size=94 ############

void FUN_1805a5740(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::fusion::FusionLicenseData::vftable;
  FUN_1805a5520(param_1 + 5);
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805a5520 size=179 ############

void FUN_1805a5520(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x8a) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x450) * 0x450)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a1de00 size=23 ############

void Unwind_181a1de00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a1dda0 size=23 ############

void Unwind_181a1dda0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 1805a1bc0 size=32 ############

void FUN_1805a1bc0(void *param_1)

{
  if (param_1 != (void *)0x0) {
    FUN_1805a4fa0();
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 181a1d5e0 size=26 ############

void Unwind_181a1d5e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x140));
}



############ FUN_ 181a1de90 size=23 ############

void Unwind_181a1de90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 180575ed0 size=74 ############

void FUN_180575ed0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180575070 size=254 ############

void FUN_180575070(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::SharedLicenseInfo::vftable;
  pvVar1 = (void *)param_1[0xc];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xe] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18047cfb0 size=78 ############

void FUN_18047cfb0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180575f30 size=177 ############

void FUN_180575f30(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x118) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x8c0) * 0x8c0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b9270 size=345 ############

void FUN_1805b9270(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::TimeLimitRecord::vftable;
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x11] = 0xf;
  param_1[0x10] = 0;
  *(undefined1 *)(param_1 + 0xe) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b7bd0 size=85 ############

void FUN_1805b7bd0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::CountLimitRecord::vftable;
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b7480 size=651 ############

void FUN_1805b7480(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::ActivationInfoRecord::vftable;
  if (0xf < (ulonglong)param_1[0x1d]) {
    pvVar1 = (void *)param_1[0x1a];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1d] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1d] = 0xf;
  param_1[0x1c] = 0;
  *(undefined1 *)(param_1 + 0x1a) = 0;
  if (0xf < (ulonglong)param_1[0x19]) {
    pvVar1 = (void *)param_1[0x16];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x19] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x18] = 0;
  param_1[0x19] = 0xf;
  *(undefined1 *)(param_1 + 0x16) = 0;
  if (0xf < (ulonglong)param_1[0x15]) {
    pvVar1 = (void *)param_1[0x12];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x15] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x14] = 0;
  param_1[0x15] = 0xf;
  *(undefined1 *)(param_1 + 0x12) = 0;
  if (0xf < (ulonglong)param_1[0x10]) {
    pvVar1 = (void *)param_1[0xd];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xf] = 0;
  param_1[0x10] = 0xf;
  *(undefined1 *)(param_1 + 0xd) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180575e00 size=179 ############

void FUN_180575e00(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x87) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x438) * 0x438)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180574c80 size=829 ############

void FUN_180574c80(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::RemoteServerInfo::vftable;
  if (0xf < (ulonglong)param_1[0x26]) {
    pvVar1 = (void *)param_1[0x23];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x26] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x26] = 0xf;
  param_1[0x25] = 0;
  *(undefined1 *)(param_1 + 0x23) = 0;
  if (0xf < (ulonglong)param_1[0x22]) {
    pvVar1 = (void *)param_1[0x1f];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x22] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x21] = 0;
  param_1[0x22] = 0xf;
  *(undefined1 *)(param_1 + 0x1f) = 0;
  if (0xf < (ulonglong)param_1[0x1e]) {
    pvVar1 = (void *)param_1[0x1b];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1e] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1d] = 0;
  param_1[0x1e] = 0xf;
  *(undefined1 *)(param_1 + 0x1b) = 0;
  if (0xf < (ulonglong)param_1[0x19]) {
    pvVar1 = (void *)param_1[0x16];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x19] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x18] = 0;
  param_1[0x19] = 0xf;
  *(undefined1 *)(param_1 + 0x16) = 0;
  if (0xf < (ulonglong)param_1[0x15]) {
    pvVar1 = (void *)param_1[0x12];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x15] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x14] = 0;
  param_1[0x15] = 0xf;
  *(undefined1 *)(param_1 + 0x12) = 0;
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x10] = 0;
  param_1[0x11] = 0xf;
  *(undefined1 *)(param_1 + 0xe) = 0;
  pvVar1 = (void *)param_1[0xb];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xd] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180575d40 size=173 ############

void FUN_180575d40(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0xd) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x68) * 0x68)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b8780 size=1059 ############

void FUN_1805b8780(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::LocationData::vftable;
  FUN_1805b9270(param_1 + 0x71);
  FUN_1805b9270(param_1 + 0x5c);
  if (0xf < (ulonglong)param_1[0x5a]) {
    pvVar1 = (void *)param_1[0x57];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x5a] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x5a] = 0xf;
  param_1[0x59] = 0;
  *(undefined1 *)(param_1 + 0x57) = 0;
  if (0xf < (ulonglong)param_1[0x55]) {
    pvVar1 = (void *)param_1[0x52];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x55] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x54] = 0;
  param_1[0x55] = 0xf;
  *(undefined1 *)(param_1 + 0x52) = 0;
  if (0xf < (ulonglong)param_1[0x51]) {
    pvVar1 = (void *)param_1[0x4e];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x51] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x50] = 0;
  param_1[0x51] = 0xf;
  *(undefined1 *)(param_1 + 0x4e) = 0;
  if (0xf < (ulonglong)param_1[0x4d]) {
    pvVar1 = (void *)param_1[0x4a];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x4d] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x4c] = 0;
  param_1[0x4d] = 0xf;
  *(undefined1 *)(param_1 + 0x4a) = 0;
  if (0xf < (ulonglong)param_1[0x49]) {
    pvVar1 = (void *)param_1[0x46];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x49] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x48] = 0;
  param_1[0x49] = 0xf;
  *(undefined1 *)(param_1 + 0x46) = 0;
  if (0xf < (ulonglong)param_1[0x45]) {
    pvVar1 = (void *)param_1[0x42];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x45] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x44] = 0;
  param_1[0x45] = 0xf;
  *(undefined1 *)(param_1 + 0x42) = 0;
  if (0xf < (ulonglong)param_1[0x41]) {
    pvVar1 = (void *)param_1[0x3e];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x41] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x40] = 0;
  param_1[0x41] = 0xf;
  *(undefined1 *)(param_1 + 0x3e) = 0;
  if (0xf < (ulonglong)param_1[0x3d]) {
    pvVar1 = (void *)param_1[0x3a];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x3d] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x3c] = 0;
  param_1[0x3d] = 0xf;
  *(undefined1 *)(param_1 + 0x3a) = 0;
  pvVar1 = (void *)param_1[0x37];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0x39] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x34];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x36] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_180574c80(param_1 + 8);
  if ((ulonglong)param_1[6] < 0x10) {
    param_1[5] = 0;
    param_1[6] = 0xf;
    *(undefined1 *)(param_1 + 3) = 0;
    return;
  }
  pvVar1 = (void *)param_1[3];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[6] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805bc170 size=171 ############

void FUN_1805bc170(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 7) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x38) * 0x38)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805bc230 size=128 ############

void FUN_1805bc230(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 8) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffc0U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b7f60 size=208 ############

void FUN_1805b7f60(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::ExpirationWarning::vftable;
  FUN_1805b7bd0(param_1 + 0x22);
  FUN_1805b9270(param_1 + 0xd);
  if (0xf < (ulonglong)param_1[0xb]) {
    pvVar1 = (void *)param_1[8];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xb] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[10] = 0;
  param_1[0xb] = 0xf;
  *(undefined1 *)(param_1 + 8) = 0;
  if ((ulonglong)param_1[7] < 0x10) {
    param_1[6] = 0;
    param_1[7] = 0xf;
    *(undefined1 *)(param_1 + 4) = 0;
    return;
  }
  pvVar1 = (void *)param_1[4];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[7] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b93e0 size=106 ############

void FUN_1805b93e0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::TypedActivationCode::vftable;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  _Memory = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b96f0 size=359 ############

void FUN_1805b96f0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::ZdtAndLosInfo::vftable;
  if (0xf < (ulonglong)param_1[0x10]) {
    pvVar1 = (void *)param_1[0xd];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x10] = 0xf;
  param_1[0xf] = 0;
  *(undefined1 *)(param_1 + 0xd) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a15a20 size=23 ############

void Unwind_181a15a20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1805b7370 size=179 ############

void FUN_1805b7370(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x1d) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0xe8) * 0xe8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b72a0 size=182 ############

void FUN_1805b72a0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x15) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xa8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b7ad0 size=180 ############

void FUN_1805b7ad0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::AuthSearch::vftable;
  pvVar1 = (void *)param_1[0xf];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0x11] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if ((ulonglong)param_1[0xe] < 0x10) {
    param_1[0xd] = 0;
    param_1[0xe] = 0xf;
    *(undefined1 *)(param_1 + 0xb) = 0;
    return;
  }
  pvVar1 = (void *)param_1[0xb];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[0xe] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b8040 size=187 ############

void FUN_1805b8040(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::FindAuthOptions::vftable;
  if (0xf < (ulonglong)param_1[10]) {
    pvVar1 = (void *)param_1[7];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[9] = 0;
  param_1[10] = 0xf;
  *(undefined1 *)(param_1 + 7) = 0;
  if ((ulonglong)param_1[6] < 0x10) {
    param_1[5] = 0;
    param_1[6] = 0xf;
    *(undefined1 *)(param_1 + 3) = 0;
    return;
  }
  pvVar1 = (void *)param_1[3];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[6] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805bc0b0 size=177 ############

void FUN_1805bc0b0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x5e) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x2f0) * 0x2f0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a1fa00 size=26 ############

void Unwind_181a1fa00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf8));
}



############ FUN_ 1805b7dc0 size=156 ############

void FUN_1805b7dc0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::DynamicCryptoKeyExchangeInput::vftable;
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b7e80 size=156 ############

void FUN_1805b7e80(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::DynamicCryptoKeyExchangeOutput::vftable;
  pvVar1 = (void *)param_1[4];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[6] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a1fa20 size=26 ############

void Unwind_181a1fa20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x168));
}



############ FUN_ 181a1fa40 size=26 ############

void Unwind_181a1fa40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x160));
}



############ FUN_ 181a1fa60 size=26 ############

void Unwind_181a1fa60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x158));
}



############ FUN_ 181a1fa80 size=26 ############

void Unwind_181a1fa80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x150));
}



############ FUN_ 1805a6620 size=85 ############

void FUN_1805a6620(undefined8 *param_1)

{
  void *_Src;
  void *_Memory;
  
  _Src = (void *)*param_1;
  memcpy(param_1,_Src,param_1[2] + 1);
  _Memory = _Src;
  if ((0xfff < param_1[3] + 1) &&
     (_Memory = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805a1760 size=604 ############

void FUN_1805a1760(longlong *param_1,ulonglong param_2,undefined8 *param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  ulonglong uVar6;
  longlong lVar7;
  void *_Memory;
  ulonglong uVar8;
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  lVar5 = param_1[1];
  lVar7 = *param_1;
  lVar4 = (lVar5 - lVar7) / 0x12 + (lVar5 - lVar7 >> 0x3f);
  uVar6 = (lVar4 >> 3) - (lVar4 >> 0x3f);
  uVar2 = (param_1[2] - lVar7) / 0x90;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        lVar7 = param_2 * 0x90 + lVar7;
        for (lVar4 = lVar7; lVar4 != lVar5; lVar4 = lVar4 + 0x90) {
          FUN_1805a5290(lVar4);
        }
        param_1[1] = lVar7;
      }
      return;
    }
    lVar5 = FUN_1805a6910(*param_3,lVar5,param_2 - uVar6,param_3[1]);
    param_1[1] = lVar5;
    return;
  }
  if (0x1c71c71c71c71c7 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar8 = param_2;
  if ((uVar2 <= 0x1c71c71c71c71c7 - (uVar2 >> 1)) && (uVar8 = (uVar2 >> 1) + uVar2, uVar8 < param_2)
     ) {
    uVar8 = param_2;
  }
  lVar3 = FUN_1805a6a00(param_1,uVar8);
  lVar5 = uVar6 * 0x90 + lVar3;
  FUN_1805a6910(*param_3,lVar5,param_2 - uVar6,param_3[1],lVar5,lVar3,uVar9);
  lVar5 = param_1[1];
  lVar4 = lVar3;
  for (lVar7 = *param_1; lVar7 != lVar5; lVar7 = lVar7 + 0x90) {
    FUN_1805a47f0(lVar4,lVar7);
    lVar4 = lVar4 + 0x90;
  }
  lVar5 = *param_1;
  if (lVar5 == 0) {
    *param_1 = lVar3;
    param_1[1] = param_2 * 0x90 + lVar3;
    param_1[2] = uVar8 * 0x90 + lVar3;
    return;
  }
  lVar7 = param_1[1];
  for (; lVar5 != lVar7; lVar5 = lVar5 + 0x90) {
    FUN_1805a5290(lVar5);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x90) * 0x90)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b6610 size=234 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805b6610(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined8 *local_48;
  undefined1 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  local_48 = param_1;
  FUN_1805a6cb0(&local_38,"Day of month value is out of range 1..31",0x28);
  local_40 = 1;
  *param_1 = std::exception::vftable;
  local_48 = (undefined8 *)&local_38;
  if (0xf < local_20) {
    local_48 = (undefined8 *)CONCAT71(uStack_37,local_38);
  }
  param_1[1] = 0;
  param_1[2] = 0;
  __std_exception_copy(&local_48);
  *param_1 = std::out_of_range::vftable;
  if (local_20 < 0x10) {
    *param_1 = boost::gregorian::bad_day_of_month::vftable;
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b6750 size=234 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805b6750(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined8 *local_48;
  undefined1 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  local_48 = param_1;
  FUN_1805a6cb0(&local_38,"Month number is out of range 1..12",0x22);
  local_40 = 1;
  *param_1 = std::exception::vftable;
  local_48 = (undefined8 *)&local_38;
  if (0xf < local_20) {
    local_48 = (undefined8 *)CONCAT71(uStack_37,local_38);
  }
  param_1[1] = 0;
  param_1[2] = 0;
  __std_exception_copy(&local_48);
  *param_1 = std::out_of_range::vftable;
  if (local_20 < 0x10) {
    *param_1 = boost::gregorian::bad_month::vftable;
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b6890 size=234 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805b6890(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined8 *local_48;
  undefined1 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  local_48 = param_1;
  FUN_1805a6cb0(&local_38,"Year is out of valid range: 1400..10000",0x27);
  local_40 = 1;
  *param_1 = std::exception::vftable;
  local_48 = (undefined8 *)&local_38;
  if (0xf < local_20) {
    local_48 = (undefined8 *)CONCAT71(uStack_37,local_38);
  }
  param_1[1] = 0;
  param_1[2] = 0;
  __std_exception_copy(&local_48);
  *param_1 = std::out_of_range::vftable;
  if (local_20 < 0x10) {
    *param_1 = boost::gregorian::bad_year::vftable;
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805bbe20 size=131 ############

void FUN_1805bbe20(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_2 + param_3;
    param_1[2] = param_2 + param_4;
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805e1990 size=304 ############

void FUN_1805e1990(undefined8 *param_1,void *param_2,longlong param_3)

{
  void *pvVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong _Size;
  
  pvVar1 = (void *)*param_1;
  _Size = param_3 - (longlong)param_2;
  uVar3 = param_1[2] - (longlong)pvVar1;
  if (uVar3 < _Size) {
    if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = _Size;
    if ((uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1)) &&
       (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < _Size)) {
      uVar4 = _Size;
    }
    if (pvVar1 != (void *)0x0) {
      pvVar2 = pvVar1;
      if ((0xfff < uVar3) &&
         (pvVar2 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    FUN_1805bbbc0(param_1,uVar4);
    pvVar1 = (void *)*param_1;
    memmove(pvVar1,param_2,_Size);
    param_1[1] = _Size + (longlong)pvVar1;
  }
  else if ((ulonglong)(param_1[1] - (longlong)pvVar1) < _Size) {
    pvVar2 = (void *)((param_1[1] - (longlong)pvVar1) + (longlong)param_2);
    memmove(pvVar1,param_2,(longlong)pvVar2 - (longlong)param_2);
    pvVar1 = (void *)param_1[1];
    memmove(pvVar1,pvVar2,param_3 - (longlong)pvVar2);
    param_1[1] = (param_3 - (longlong)pvVar2) + (longlong)pvVar1;
  }
  else {
    memmove(pvVar1,param_2,_Size);
    param_1[1] = (longlong)pvVar1 + _Size;
  }
  return;
}



############ FUN_ 18060b990 size=813 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_18060b990(uint *param_1,char *param_2,longlong param_3)

{
  bool bVar1;
  char cVar2;
  locale *plVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  char *******pppppppcVar6;
  char *pcVar7;
  uint uVar8;
  ulonglong uVar9;
  uint uVar10;
  uint uVar11;
  undefined1 auStack_98 [32];
  char local_78;
  longlong local_70;
  undefined1 local_68 [8];
  _Locimp *local_60;
  undefined8 local_58;
  char *******local_50 [2];
  longlong local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  *param_1 = 0;
  if ((char *)(param_3 - 1U) < param_2) {
  }
  cVar2 = *(char *)(param_3 - 1U);
  if (9 < (byte)(cVar2 - 0x30U)) {
  }
  *param_1 = (int)cVar2 - 0x30;
  pcVar7 = (char *)(param_3 + -2);
  uVar8 = 1;
  bVar1 = false;
  local_60 = std::locale::_Init(true);
  plVar3 = std::locale::classic();
  cVar2 = FUN_1805f22e0(local_68,plVar3);
  uVar10 = uVar8;
  if (cVar2 == '\0') {
    plVar4 = (longlong *)FUN_1805f1950(local_68);
    (**(code **)(*plVar4 + 0x28))(plVar4,local_50);
    local_70 = local_40;
    if (local_40 != 0) {
      pppppppcVar6 = (char *******)local_50;
      if (0xf < local_38) {
        pppppppcVar6 = local_50[0];
      }
      uVar10 = 1;
      if ('\0' < *(char *)pppppppcVar6) {
        uVar9 = 0;
        local_78 = (**(code **)(*plVar4 + 0x20))(plVar4);
        pppppppcVar6 = (char *******)local_50;
        if (0xf < local_38) {
          pppppppcVar6 = local_50[0];
        }
        cVar2 = *(char *)pppppppcVar6 + -1;
        uVar10 = uVar8;
        for (; param_2 <= pcVar7; pcVar7 = pcVar7 + -1) {
          if (cVar2 == '\0') {
            if (*pcVar7 != local_78) goto LAB_18060bbce;
            if (param_2 == pcVar7) break;
            if (uVar9 < local_70 - 1U) {
              uVar9 = (ulonglong)(byte)((char)uVar9 + 1);
            }
            pppppppcVar6 = (char *******)local_50;
            if (0xf < local_38) {
              pppppppcVar6 = local_50[0];
            }
            cVar2 = *(char *)((longlong)pppppppcVar6 + uVar9);
          }
          else {
            uVar8 = uVar10 * 10;
            if (uVar8 / 10 != uVar10) {
              bVar1 = true;
            }
            uVar10 = (int)*pcVar7 - 0x30;
            uVar11 = uVar10 * uVar8;
            if ((((9 < (byte)(*pcVar7 - 0x30U)) || ((uVar10 != 0 && (uVar11 / uVar10 != uVar8)))) ||
                (-uVar11 - 1 < *param_1)) || ((bVar1 && (uVar10 != 0)))) break;
            *param_1 = *param_1 + uVar11;
            cVar2 = cVar2 + -1;
            uVar10 = uVar8;
          }
        }
        if (0xf < local_38) {
          pppppppcVar6 = local_50[0];
          if ((0xfff < local_38 + 1) &&
             (pppppppcVar6 = (char *******)local_50[0][-1],
             (char *)0x1f < (char *)((longlong)local_50[0] + (-8 - (longlong)pppppppcVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pppppppcVar6);
        }
        goto LAB_18060bc7e;
      }
    }
LAB_18060bbce:
    if (0xf < local_38) {
      pppppppcVar6 = local_50[0];
      if ((0xfff < local_38 + 1) &&
         (pppppppcVar6 = (char *******)local_50[0][-1],
         (char *)0x1f < (char *)((longlong)local_50[0] + (-8 - (longlong)pppppppcVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pppppppcVar6);
    }
  }
  for (; param_2 <= pcVar7; pcVar7 = pcVar7 + -1) {
    uVar8 = uVar10 * 10;
    if (uVar8 / 10 != uVar10) {
      bVar1 = true;
    }
    uVar10 = (int)*pcVar7 - 0x30;
    uVar11 = uVar10 * uVar8;
    if ((9 < (byte)(*pcVar7 - 0x30U)) ||
       ((((uVar10 != 0 && (uVar11 / uVar10 != uVar8)) || (-uVar11 - 1 < *param_1)) ||
        ((bVar1 && (uVar10 != 0)))))) break;
    *param_1 = *param_1 + uVar11;
    uVar10 = uVar8;
  }
LAB_18060bc7e:
  if ((local_60 != (_Locimp *)0x0) &&
     (puVar5 = (undefined8 *)(**(code **)(*(longlong *)local_60 + 0x10))(),
     puVar5 != (undefined8 *)0x0)) {
    (**(code **)*puVar5)(puVar5,1);
  }
}



############ FUN_ 1805f22e0 size=546 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f22e0(longlong param_1,longlong param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  int iVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 *_Buf1;
  void *pvVar11;
  size_t *psVar12;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  size_t local_a0;
  ulonglong local_98 [2];
  undefined1 local_88;
  undefined7 uStack_87;
  undefined8 local_78;
  ulonglong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  void *local_48 [3];
  ulonglong local_30;
  ulonglong local_28;
  
  local_98[1] = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_c8;
  bVar6 = false;
  bVar5 = false;
  bVar4 = false;
  local_a8 = 0;
  if (*(longlong *)(param_1 + 8) != *(longlong *)(param_2 + 8)) {
    puVar8 = (undefined8 *)FUN_1805f47e0(param_1,local_48);
    bVar5 = false;
    bVar4 = false;
    local_a8 = 1;
    puVar10 = puVar8;
    if (0xf < (ulonglong)puVar8[3]) {
      puVar10 = (undefined8 *)*puVar8;
    }
    local_a0 = 1;
    uVar1 = puVar8[2];
    local_98[0] = uVar1;
    psVar12 = &local_a0;
    if (uVar1 < 2) {
      psVar12 = local_98;
    }
    iVar7 = memcmp(puVar10,&DAT_181bb54d0,*psVar12);
    if ((iVar7 != 0) || (uVar1 != 1)) {
      puVar8 = (undefined8 *)FUN_1805f47e0(param_2,&local_68);
      local_a8 = 3;
      puVar9 = (undefined8 *)FUN_1805f47e0(param_1,&local_88);
      bVar6 = true;
      bVar5 = true;
      bVar4 = true;
      puVar10 = puVar8;
      if (0xf < (ulonglong)puVar8[3]) {
        puVar10 = (undefined8 *)*puVar8;
      }
      _Buf1 = puVar9;
      if (0xf < (ulonglong)puVar9[3]) {
        _Buf1 = (undefined8 *)*puVar9;
      }
      uVar1 = puVar8[2];
      local_98[0] = uVar1;
      uVar2 = puVar9[2];
      local_a0 = uVar2;
      psVar12 = local_98;
      if (uVar2 <= uVar1) {
        psVar12 = &local_a0;
      }
      iVar7 = memcmp(_Buf1,puVar10,*psVar12);
      if (((iVar7 == 0) && (uVar1 <= uVar2)) && (uVar2 <= uVar1)) goto LAB_1805f23f6;
    }
    bVar6 = true;
  }
LAB_1805f23f6:
  if (bVar4) {
    if (0xf < local_70) {
      pvVar3 = (void *)CONCAT71(uStack_87,local_88);
      pvVar11 = pvVar3;
      if ((0xfff < local_70 + 1) &&
         (pvVar11 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar11);
    }
    local_78 = 0;
    local_70 = 0xf;
    local_88 = 0;
  }
  if (bVar5) {
    if (0xf < local_50) {
      pvVar3 = (void *)CONCAT71(uStack_67,local_68);
      pvVar11 = pvVar3;
      if ((0xfff < local_50 + 1) &&
         (pvVar11 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar11);
    }
    local_58 = 0;
    local_50 = 0xf;
    local_68 = 0;
  }
  if ((bVar6) && (0xf < local_30)) {
    pvVar11 = local_48[0];
    if ((0xfff < local_30 + 1) &&
       (pvVar11 = *(void **)((longlong)local_48[0] + -8),
       0x1f < (ulonglong)((longlong)local_48[0] + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar11);
  }
}



############ FUN_ 1805f47e0 size=346 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f47e0(longlong param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  void *pvVar2;
  bool bVar3;
  bool bVar4;
  undefined8 *puVar5;
  void *pvVar6;
  longlong lVar7;
  longlong lVar8;
  undefined1 auStack_88 [32];
  undefined4 local_68;
  undefined8 local_60;
  undefined8 *local_58;
  undefined8 local_50 [2];
  undefined8 local_40;
  ulonglong local_38;
  undefined1 local_30;
  undefined7 uStack_2f;
  undefined8 local_20;
  ulonglong uStack_18;
  ulonglong local_10;
  
  local_60 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_68 = 0;
  lVar8 = *(longlong *)(param_1 + 8);
  local_58 = param_2;
  if (lVar8 == 0) {
    local_20 = 0;
    uStack_18 = 0xf;
    local_30 = 0;
    puVar5 = (undefined8 *)&local_30;
    bVar4 = true;
    bVar3 = false;
  }
  else {
    lVar7 = *(longlong *)(lVar8 + 0x28);
    if (lVar7 == 0) {
      lVar7 = lVar8 + 0x30;
    }
    local_40 = 0;
    local_38 = 0xf;
    local_50[0]._0_1_ = 0;
    lVar8 = -1;
    do {
      lVar8 = lVar8 + 1;
    } while (*(char *)(lVar7 + lVar8) != '\0');
    FUN_1805a6cb0(local_50);
    puVar5 = local_50;
    bVar4 = false;
    bVar3 = true;
  }
  uVar1 = puVar5[1];
  *param_2 = *puVar5;
  param_2[1] = uVar1;
  uVar1 = puVar5[3];
  param_2[2] = puVar5[2];
  param_2[3] = uVar1;
  puVar5[2] = 0;
  puVar5[3] = 0xf;
  *(undefined1 *)puVar5 = 0;
  if ((bVar3) && (0xf < local_38)) {
    pvVar2 = (void *)CONCAT71(local_50[0]._1_7_,(undefined1)local_50[0]);
    pvVar6 = pvVar2;
    if ((0xfff < local_38 + 1) &&
       (pvVar6 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  if ((!bVar4) || (uStack_18 < 0x10)) {
  }
  pvVar2 = (void *)CONCAT71(uStack_2f,local_30);
  pvVar6 = pvVar2;
  if ((0xfff < uStack_18 + 1) &&
     (pvVar6 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 1806120b0 size=91 ############

void FUN_1806120b0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::Hasher::vftable;
  pvVar1 = (void *)param_1[0x2b];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x2d] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b9910 size=318 ############

undefined8 * FUN_1805b9910(undefined8 *param_1,undefined8 *param_2)

{
  void *_Src;
  longlong lVar1;
  void *pvVar2;
  void *pvVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong _Size;
  size_t _Size_00;
  
  if (param_1 != param_2) {
    lVar1 = param_2[1];
    pvVar3 = (void *)*param_2;
    pvVar2 = (void *)*param_1;
    _Size = lVar1 - (longlong)pvVar3;
    uVar4 = param_1[2] - (longlong)pvVar2;
    if (uVar4 < _Size) {
      if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      uVar5 = _Size;
      if ((uVar4 <= 0x7fffffffffffffff - (uVar4 >> 1)) &&
         (uVar5 = (uVar4 >> 1) + uVar4, uVar5 < _Size)) {
        uVar5 = _Size;
      }
      if (pvVar2 != (void *)0x0) {
        pvVar3 = pvVar2;
        if ((0xfff < uVar4) &&
           (pvVar3 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar3);
      }
      FUN_1805bbbc0(param_1,uVar5);
      pvVar2 = (void *)*param_1;
      memmove(pvVar2,pvVar3,_Size);
      param_1[1] = _Size + (longlong)pvVar2;
    }
    else if ((ulonglong)(param_1[1] - (longlong)pvVar2) < _Size) {
      _Src = (void *)((param_1[1] - (longlong)pvVar2) + (longlong)pvVar3);
      memmove(pvVar2,pvVar3,(longlong)_Src - (longlong)pvVar3);
      pvVar3 = (void *)param_1[1];
      _Size_00 = lVar1 - (longlong)_Src;
      memmove(pvVar3,_Src,_Size_00);
      param_1[1] = _Size_00 + (longlong)pvVar3;
    }
    else {
      memmove(pvVar2,pvVar3,_Size);
      param_1[1] = (longlong)pvVar2 + _Size;
    }
  }
  return param_1;
}



############ FUN_ 18067c6a0 size=237 ############

void FUN_18067c6a0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::OpenEncryptedChannelInput::vftable;
  pvVar1 = (void *)param_1[8];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[10] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067c7b0 size=442 ############

void FUN_18067c7b0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::OpenEncryptedChannelReturn::vftable;
  pvVar1 = (void *)param_1[0x12];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x14] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0xf];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x11] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0xb];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xd] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[8];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[10] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180682a40 size=968 ############

/* WARNING: Instruction at (ram,0x000180682b62) overlaps instruction at (ram,0x000180682b61)
    */
/* WARNING: Removing unreachable block (ram,0x000180682acb) */

void FUN_180682a40(undefined8 param_1,longlong param_2,undefined8 *param_3)

{
  longlong lVar1;
  void *pvVar2;
  undefined8 *puVar3;
  uint uVar4;
  void *pvVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong _Size;
  size_t _Size_00;
  undefined8 *_Src;
  bool bVar8;
  int unaff_retaddr;
  undefined1 auStack_148 [32];
  undefined1 local_128;
  undefined1 local_118;
  undefined4 local_e4;
  uint local_e0;
  undefined8 local_d0;
  undefined8 *local_c8;
  undefined8 local_c0;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_148;
  local_e4 = 0x890;
  uVar4 = (uint)&stack0x00000000 & 0x3bf;
  local_e0 = 0xebd0 >> ((char)(((uVar4 + 2) * (uVar4 + 1) * uVar4) / 3) * '\x03' & 0x1fU) ^ 0xe410;
  param_3[1] = *param_3;
  local_d0 = param_1;
  local_c8 = param_3;
  do {
    FUN_180681286();
    uVar4 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar4 != 0);
  bVar8 = 0xf < *(ulonglong *)(param_2 + 0x20);
  _Src = (undefined8 *)(param_2 + 8);
  puVar3 = _Src;
  if (bVar8) {
    puVar3 = (undefined8 *)*_Src;
  }
  lVar1 = *(longlong *)(param_2 + 0x18);
  if (bVar8) {
    _Src = (undefined8 *)*_Src;
  }
  pvVar2 = (void *)*param_3;
  _Size = (longlong)puVar3 + (lVar1 - (longlong)_Src);
  uVar6 = param_3[2] - (longlong)pvVar2;
  if (uVar6 < _Size) {
    local_c0 = 0xffffffffffffffff;
    local_b8 = 0x7fffffffffffffff;
    if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    local_a8 = 0x7fffffffffffffff;
    local_b0 = 0xffffffffffffffff;
    uVar7 = _Size;
    if ((uVar6 <= 0x7fffffffffffffff - (uVar6 >> 1)) &&
       (uVar7 = (uVar6 >> 1) + uVar6, uVar7 < _Size)) {
      uVar7 = _Size;
    }
    if (pvVar2 != (void *)0x0) {
      pvVar5 = pvVar2;
      if ((0xfff < uVar6) &&
         (pvVar5 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
    FUN_1805bbbc0(param_3,uVar7);
    pvVar2 = (void *)*param_3;
    memmove(pvVar2,_Src,_Size);
    param_3[1] = _Size + (longlong)pvVar2;
  }
  else if ((ulonglong)(param_3[1] - (longlong)pvVar2) < _Size) {
    pvVar5 = (void *)((param_3[1] - (longlong)pvVar2) + (longlong)_Src);
    memmove(pvVar2,_Src,(longlong)pvVar5 - (longlong)_Src);
    pvVar2 = (void *)param_3[1];
    _Size_00 = (longlong)puVar3 + (lVar1 - (longlong)pvVar5);
    memmove(pvVar2,pvVar5,_Size_00);
    param_3[1] = _Size_00 + (longlong)pvVar2;
  }
  else {
    memmove(pvVar2,_Src,_Size);
    param_3[1] = (longlong)pvVar2 + _Size;
  }
  lVar1 = *(longlong *)(param_2 + 0x28);
  local_a0 = param_3[1];
  local_128 = local_118;
  FUN_1805d5a60(param_3,local_a0,lVar1,(*(longlong *)(param_2 + 0x30) - lVar1) + lVar1);
  (*(code *)0x18065d36b)();
  return;
}



############ FUN_ 1805b0f50 size=335 ############

void FUN_1805b0f50(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)param_1[1];
  lVar5 = *param_1;
  uVar6 = (longlong)pvVar1 - lVar5;
  uVar2 = param_1[2] - lVar5;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        param_1[1] = lVar5 + param_2;
      }
      return;
    }
    lVar5 = (longlong)pvVar1 + (param_2 - uVar6);
    memset(pvVar1,0,lVar5 - (longlong)pvVar1);
    param_1[1] = lVar5;
    return;
  }
  if (0x7fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar4 = param_2;
  if ((uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1)) &&
     (uVar4 = (uVar2 >> 1) + uVar2, uVar4 < param_2)) {
    uVar4 = param_2;
  }
  pvVar3 = (void *)FUN_1805bc8b0(param_1);
  memset((void *)((longlong)pvVar3 + uVar6),0,param_2 - uVar6);
  memmove(pvVar3,(void *)*param_1,param_1[1] - *param_1);
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = (longlong)pvVar3;
    param_1[1] = (longlong)pvVar3 + param_2;
    param_1[2] = (longlong)pvVar3 + uVar4;
    return;
  }
  pvVar3 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
     (pvVar3 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 18067d1b0 size=307 ############

void FUN_18067d1b0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::SendEncryptedCommandInput::vftable;
  pvVar1 = (void *)param_1[0x11];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x13] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[0xf]) {
    pvVar1 = (void *)param_1[0xc];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xf] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xe] = 0;
  param_1[0xf] = 0xf;
  *(undefined1 *)(param_1 + 0xc) = 0;
  pvVar1 = (void *)param_1[6];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[8] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1807dc8a0 size=173 ############

void FUN_1807dc8a0(undefined8 *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  void *pvVar5;
  longlong lVar6;
  void *_Memory;
  
  *param_1 = pace::ILokCert::vftable;
  plVar4 = (longlong *)param_1[0x3a];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  pvVar5 = (void *)param_1[2];
  if (pvVar5 == (void *)0x0) {
    return;
  }
  _Memory = pvVar5;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar5)) &&
     (_Memory = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805d0340 size=182 ############

void FUN_1805d0340(basic_streambuf<char,std::char_traits<char>_> *param_1)

{
  void *pvVar1;
  void *_Memory;
  longlong lVar2;
  
  *(undefined ***)param_1 =
       std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  if (((byte)param_1[0x70] & 1) == 0) {
    **(undefined8 **)(param_1 + 0x18) = 0;
    **(undefined8 **)(param_1 + 0x38) = 0;
    **(undefined4 **)(param_1 + 0x50) = 0;
    **(undefined8 **)(param_1 + 0x20) = 0;
    **(undefined8 **)(param_1 + 0x40) = 0;
    **(undefined4 **)(param_1 + 0x58) = 0;
    *(uint *)(param_1 + 0x70) = *(uint *)(param_1 + 0x70) & 0xfffffffe;
    *(undefined8 *)(param_1 + 0x68) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001805d03e9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    std::basic_streambuf<char,std::char_traits<char>_>::
    ~basic_streambuf<char,std::char_traits<char>_>(param_1);
    return;
  }
  if (**(longlong **)(param_1 + 0x40) == 0) {
    lVar2 = (longlong)**(int **)(param_1 + 0x50) + **(longlong **)(param_1 + 0x38);
  }
  else {
    lVar2 = (longlong)**(int **)(param_1 + 0x58) + **(longlong **)(param_1 + 0x40);
  }
  pvVar1 = (void *)**(longlong **)(param_1 + 0x18);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(lVar2 - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b7720 size=910 ############

void FUN_1805b7720(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::AuthData::vftable;
  if (0xf < (ulonglong)param_1[0x82]) {
    pvVar1 = (void *)param_1[0x7f];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x82] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x82] = 0xf;
  param_1[0x81] = 0;
  *(undefined1 *)(param_1 + 0x7f) = 0;
  FUN_1805b7480(param_1 + 0x5e);
  if (0xf < (ulonglong)param_1[0x5d]) {
    pvVar1 = (void *)param_1[0x5a];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x5d] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x5c] = 0;
  param_1[0x5d] = 0xf;
  *(undefined1 *)(param_1 + 0x5a) = 0;
  if (0xf < (ulonglong)param_1[0x59]) {
    pvVar1 = (void *)param_1[0x56];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x59] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x58] = 0;
  param_1[0x59] = 0xf;
  *(undefined1 *)(param_1 + 0x56) = 0;
  if (0xf < (ulonglong)param_1[0x55]) {
    pvVar1 = (void *)param_1[0x52];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x55] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x54] = 0;
  param_1[0x55] = 0xf;
  *(undefined1 *)(param_1 + 0x52) = 0;
  if (0xf < (ulonglong)param_1[0x51]) {
    pvVar1 = (void *)param_1[0x4e];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x51] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x50] = 0;
  param_1[0x51] = 0xf;
  *(undefined1 *)(param_1 + 0x4e) = 0;
  if (0xf < (ulonglong)param_1[0x4d]) {
    pvVar1 = (void *)param_1[0x4a];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x4d] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x4c] = 0;
  param_1[0x4d] = 0xf;
  *(undefined1 *)(param_1 + 0x4a) = 0;
  if (0xf < (ulonglong)param_1[0x49]) {
    pvVar1 = (void *)param_1[0x46];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x49] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x48] = 0;
  param_1[0x49] = 0xf;
  *(undefined1 *)(param_1 + 0x46) = 0;
  if (0xf < (ulonglong)param_1[0x45]) {
    pvVar1 = (void *)param_1[0x42];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x45] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x44] = 0;
  param_1[0x45] = 0xf;
  *(undefined1 *)(param_1 + 0x42) = 0;
  FUN_1805b9270(param_1 + 0x2d);
  FUN_1805b7bd0(param_1 + 0x21);
  FUN_1805b9270(param_1 + 0xc);
  pvVar1 = (void *)param_1[3];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[5] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b0450 size=542 ############

longlong FUN_1805b0450(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  void *_Memory;
  longlong lVar10;
  longlong lVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar2 = *param_1;
  lVar10 = (param_1[1] - lVar2) / 0x8c0;
  if (lVar10 == 0x1d41d41d41d41d) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar10 + 1;
  uVar5 = (param_1[2] - lVar2) / 0x8c0;
  uVar9 = uVar1;
  if ((uVar5 <= 0x1d41d41d41d41d - (uVar5 >> 1)) && (uVar9 = (uVar5 >> 1) + uVar5, uVar9 < uVar1)) {
    uVar9 = uVar1;
  }
  lVar6 = FUN_1805bca90(param_1,uVar9);
  lVar7 = ((param_2 - lVar2) / 0x8c0) * 0x8c0;
  lVar2 = lVar7 + lVar6 + 0x8c0;
  lVar10 = lVar2;
  lVar11 = lVar6;
  FUN_1805b5540(lVar7 + lVar6,param_3);
  if (param_2 == param_1[1]) {
    FUN_1805b1730(*param_1,param_1[1],lVar6,param_1);
  }
  else {
    FUN_1805bc430(param_1,*param_1,param_2,lVar6,lVar7,lVar10,lVar11,uVar12);
    FUN_1805bc430(param_1,param_2,param_1[1],lVar2);
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 != (undefined8 *)0x0) {
    puVar3 = (undefined8 *)param_1[1];
    for (; puVar8 != puVar3; puVar8 = puVar8 + 0x118) {
      (**(code **)*puVar8)(puVar8,0);
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x8c0) * 0x8c0)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar6;
  param_1[1] = uVar1 * 0x8c0 + lVar6;
  param_1[2] = uVar9 * 0x8c0 + lVar6;
  return *param_1 + lVar7;
}



############ FUN_ 180487940 size=305 ############

longlong * FUN_180487940(longlong *param_1,void *param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  void *_Memory;
  ulonglong _Size;
  longlong *_Dst;
  ulonglong uVar5;
  
  param_1[2] = 0;
  param_1[3] = 0xf;
  *(undefined1 *)param_1 = 0;
  _Size = 0xffffffffffffffff;
  do {
    _Size = _Size + 1;
  } while (*(char *)((longlong)param_2 + _Size) != '\0');
  uVar2 = param_1[3];
  if (uVar2 < _Size) {
    if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
      FUN_18048c740();
    }
    uVar4 = _Size | 0xf;
    uVar5 = 0x7fffffffffffffff;
    if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) &&
       (uVar1 = (uVar2 >> 1) + uVar2, uVar5 = uVar4, uVar4 < uVar1)) {
      uVar5 = uVar1;
    }
    pvVar3 = (void *)FUN_180480500(uVar5 + 1);
    param_1[2] = _Size;
    param_1[3] = uVar5;
    memcpy(pvVar3,param_2,_Size);
    *(undefined1 *)((longlong)pvVar3 + _Size) = 0;
    if (0xf < uVar2) {
      pvVar3 = (void *)*param_1;
      _Memory = pvVar3;
      if ((0xfff < uVar2 + 1) &&
         (_Memory = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_1 = (longlong)pvVar3;
  }
  else {
    _Dst = param_1;
    if (0xf < uVar2) {
      _Dst = (longlong *)*param_1;
    }
    param_1[2] = _Size;
    memmove(_Dst,param_2,_Size);
    *(undefined1 *)((longlong)_Dst + _Size) = 0;
  }
  return param_1;
}



############ FUN_ 181a16070 size=23 ############

void Unwind_181a16070(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 180575c70 size=179 ############

void FUN_180575c70(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x118) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x8c0) * 0x8c0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b94d0 size=476 ############

void FUN_1805b94d0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::WrapperPublicData::vftable;
  if (0xf < (ulonglong)param_1[0x4d]) {
    pvVar1 = (void *)param_1[0x4a];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x4d] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x4c] = 0;
  param_1[0x4d] = 0xf;
  *(undefined1 *)(param_1 + 0x4a) = 0;
  if (0xf < (ulonglong)param_1[0x49]) {
    pvVar1 = (void *)param_1[0x46];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x49] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x48] = 0;
  param_1[0x49] = 0xf;
  *(undefined1 *)(param_1 + 0x46) = 0;
  FUN_1805b93e0(param_1 + 0x3e);
  pvVar1 = (void *)param_1[0x3b];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x3d] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x38];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x3a] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x35];
  if (pvVar1 == (void *)0x0) {
    FUN_1805b7f60(param_1 + 5);
    FUN_1805bc230(param_1 + 2);
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x37] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a203f0 size=26 ############

void Unwind_181a203f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x260));
}



############ FUN_ 181a20410 size=26 ############

void Unwind_181a20410(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x288));
}



############ FUN_ 181a20430 size=26 ############

void Unwind_181a20430(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x290));
}



############ FUN_ 181a20450 size=26 ############

void Unwind_181a20450(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x298));
}



############ FUN_ 181a20470 size=26 ############

void Unwind_181a20470(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x2a0));
}



############ FUN_ 181a20490 size=26 ############

void Unwind_181a20490(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1d8));
}



############ FUN_ 181a204b0 size=26 ############

void Unwind_181a204b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1e0));
}



############ FUN_ 181a204d0 size=26 ############

void Unwind_181a204d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1e8));
}



############ FUN_ 1805753e0 size=862 ############

void FUN_1805753e0(undefined8 *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *pvVar3;
  longlong lVar4;
  undefined8 *puVar5;
  
  *param_1 = pace::eden::thrift::pub::AuthChain::vftable;
  puVar5 = (undefined8 *)param_1[0x58];
  if (puVar5 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[0x59];
    for (; puVar5 != puVar1; puVar5 = puVar5 + 0x3d) {
      (**(code **)*puVar5)(puVar5,0);
    }
    pvVar2 = (void *)param_1[0x58];
    lVar4 = SUB168(SEXT816(-0x79b47582192e29f7) * SEXT816(param_1[0x5a] - (longlong)pvVar2),8) +
            (param_1[0x5a] - (longlong)pvVar2);
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(((lVar4 >> 8) - (lVar4 >> 0x3f)) * 0x1e8)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  puVar5 = (undefined8 *)param_1[0x55];
  if (puVar5 != (undefined8 *)0x0) {
    puVar1 = (undefined8 *)param_1[0x56];
    for (; puVar5 != puVar1; puVar5 = puVar5 + 0xd) {
      (**(code **)*puVar5)(puVar5,0);
    }
    pvVar2 = (void *)param_1[0x55];
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(((param_1[0x57] - (longlong)pvVar2) / 0x68) * 0x68)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  FUN_180575070(param_1 + 0x43);
  pvVar2 = (void *)param_1[0x40];
  if (pvVar2 != (void *)0x0) {
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(param_1[0x42] - (longlong)pvVar2)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  FUN_180574c80(param_1 + 0x14);
  if (0xf < (ulonglong)param_1[0x12]) {
    pvVar2 = (void *)param_1[0xf];
    pvVar3 = pvVar2;
    if ((0xfff < param_1[0x12] + 1) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  param_1[0x11] = 0;
  param_1[0x12] = 0xf;
  *(undefined1 *)(param_1 + 0xf) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar2 = (void *)param_1[9];
    pvVar3 = pvVar2;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if ((ulonglong)param_1[8] < 0x10) {
    param_1[7] = 0;
    param_1[8] = 0xf;
    *(undefined1 *)(param_1 + 5) = 0;
    puVar5 = (undefined8 *)param_1[1];
    if (puVar5 == (undefined8 *)0x0) {
      return;
    }
    puVar1 = (undefined8 *)param_1[2];
    for (; puVar5 != puVar1; puVar5 = puVar5 + 0x87) {
      (**(code **)*puVar5)(puVar5,0);
    }
    pvVar2 = (void *)param_1[1];
    pvVar3 = pvVar2;
    if ((0xfff < (ulonglong)(((param_1[3] - (longlong)pvVar2) / 0x438) * 0x438)) &&
       (pvVar3 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar3);
  }
  pvVar2 = (void *)param_1[5];
  pvVar3 = pvVar2;
  if ((0xfff < param_1[8] + 1) &&
     (pvVar3 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 181a205a0 size=26 ############

void Unwind_181a205a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1f0));
}



############ FUN_ 181a205c0 size=26 ############

void Unwind_181a205c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1f8));
}



############ FUN_ 1805b7c40 size=156 ############

void FUN_1805b7c40(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::DlcKeyExchangeInput::vftable;
  pvVar1 = (void *)param_1[6];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[8] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[3];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[5] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b7d00 size=156 ############

void FUN_1805b7d00(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::DlcKeyExchangeOutput::vftable;
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a1ed90 size=26 ############

void Unwind_181a1ed90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a1ee00 size=26 ############

void Unwind_181a1ee00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a1ede0 size=23 ############

void Unwind_181a1ede0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 18047e3b0 size=76 ############

void FUN_18047e3b0(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18047e3b0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 1805c9ff0 size=111 ############

longlong * FUN_1805c9ff0(longlong *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805ca070 size=65 ############

void * FUN_1805ca070(void *param_1,ulonglong param_2)

{
  HANDLE hObject;
  
  LOCK();
  hObject = *(HANDLE *)((longlong)param_1 + 8);
  *(undefined8 *)((longlong)param_1 + 8) = 0;
  UNLOCK();
  if (hObject != (HANDLE)0x0) {
    CloseHandle(hObject);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181a18060 size=23 ############

void Unwind_181a18060(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 18048c550 size=136 ############

void FUN_18048c550(ulonglong *param_1,ulonglong *param_2)

{
  ulonglong *puVar1;
  void *pvVar2;
  void *_Memory;
  ulonglong *puVar3;
  
  if (param_1 != param_2) {
    puVar3 = param_1 + 3;
    do {
      if (0xf < *puVar3) {
        pvVar2 = (void *)puVar3[-3];
        _Memory = pvVar2;
        if ((0xfff < *puVar3 + 1) &&
           (_Memory = *(void **)((longlong)pvVar2 - 8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      puVar3[-1] = 0;
      *puVar3 = 0xf;
      *(undefined1 *)(puVar3 + -3) = 0;
      puVar1 = puVar3 + 1;
      puVar3 = puVar3 + 4;
    } while (puVar1 != param_2);
  }
  return;
}



############ FUN_ 181a15a40 size=23 ############

void Unwind_181a15a40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a20f40 size=23 ############

void Unwind_181a20f40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 18063cad0 size=108 ############

void FUN_18063cad0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::Encryptor::vftable;
  memset(param_1 + 1,0,0x208);
  pvVar1 = (void *)param_1[0x43];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x45] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a20e10 size=23 ############

void Unwind_181a20e10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a20e40 size=23 ############

void Unwind_181a20e40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 1805d6600 size=97 ############

void FUN_1805d6600(undefined8 *param_1)

{
  longlong *_Memory;
  void *pvVar1;
  void *_Memory_00;
  
  _Memory = (longlong *)*param_1;
  if (_Memory == (longlong *)0x0) {
    return;
  }
  pvVar1 = (void *)*_Memory;
  if (pvVar1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  _Memory_00 = pvVar1;
  if ((0xfff < (ulonglong)(_Memory[2] - (longlong)pvVar1)) &&
     (_Memory_00 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory_00);
}



############ FUN_ 181a20f00 size=23 ############

void Unwind_181a20f00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a19f30 size=23 ############

void Unwind_181a19f30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 1805d59e0 size=116 ############

void FUN_1805d59e0(longlong *param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  while( true ) {
    if (param_1 == param_2) {
      return;
    }
    pvVar1 = (void *)*param_1;
    if (pvVar1 != (void *)0x0) break;
    param_1 = param_1 + 3;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805d68c0 size=124 ############

void FUN_1805d68c0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*param_1 == 0) {
    return;
  }
  FUN_1805d59e0(*param_1,param_1[1],param_1);
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x18) * 0x18)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b91b0 size=156 ############

void FUN_1805b91b0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::SymmetricKey::vftable;
  pvVar1 = (void *)param_1[6];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[8] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[3];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[5] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a21390 size=23 ############

void Unwind_181a21390(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a21c20 size=26 ############

void Unwind_181a21c20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a18410 size=26 ############

void Unwind_181a18410(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a214e0 size=292 ############

undefined * Catch_181a214e0(undefined8 param_1,longlong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  int iVar3;
  longlong lVar4;
  undefined8 uVar5;
  void *pvVar6;
  longlong lVar7;
  
  lVar4 = FUN_1805d2540(*(undefined8 *)(param_2 + 0x1e0));
  *(undefined8 *)(param_2 + 0x890) = 0;
  *(undefined8 *)(param_2 + 0x898) = 0xf;
  *(undefined1 *)(param_2 + 0x880) = 0;
  lVar7 = -1;
  do {
    lVar7 = lVar7 + 1;
  } while (*(char *)(lVar4 + lVar7) != '\0');
  FUN_1805a6cb0(param_2 + 0x880);
  pvVar1 = *(void **)(param_2 + 0x880);
  uVar2 = *(ulonglong *)(param_2 + 0x898);
  pvVar6 = (void *)(param_2 + 0x880);
  if (0xf < uVar2) {
    pvVar6 = pvVar1;
  }
  if ((*(longlong *)(param_2 + 0x890) == 0x1e) &&
     (iVar3 = memcmp(pvVar6,"ILokTimeToPtimeConversionError",0x1e), iVar3 == 0)) {
    if (*(char *)(param_2 + 0x30) == '\0') {
      uVar5 = FUN_1805b4bc0(param_2 + 0x230,*(undefined8 *)(param_2 + 0xa8));
      FUN_1805e8510(uVar5,param_2 + 0x170);
      *(undefined1 *)(param_2 + 0x30) = 1;
    }
  }
  else if (*(longlong *)(param_2 + 0x68) + 1 == *(longlong *)(param_2 + 0x50)) {
                    /* WARNING: Subroutine does not return */
    _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
  }
  if (0xf < uVar2) {
    pvVar6 = pvVar1;
    if ((0xfff < uVar2 + 1) &&
       (pvVar6 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  return &DAT_1805eac54;
}



############ FUN_ 1805f01c0 size=221 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f01c0(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  undefined8 uVar1;
  void *_Memory;
  undefined1 auStack_198 [32];
  undefined1 local_178;
  undefined1 local_170;
  undefined8 local_168;
  void *local_160 [3];
  ulonglong local_148;
  undefined1 local_138 [272];
  ulonglong local_28;
  
  local_168 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar1 = FUN_1805a3f20(local_138,"%s cannot run, because an error occurred.\n\n%s");
  uVar1 = FUN_1805b2240(uVar1,param_1 + 0x10);
  uVar1 = FUN_1805b2240(uVar1,param_3);
  FUN_1805ae640(uVar1,local_160);
  FUN_1805a4fa0(local_138);
  local_170 = 0;
  local_178 = 0;
  FUN_1805f02b0(param_2,local_160,0,0);
  if (local_148 < 0x10) {
  }
  _Memory = local_160[0];
  if ((0xfff < local_148 + 1) &&
     (_Memory = *(void **)((longlong)local_160[0] + -8),
     0x1f < (ulonglong)((longlong)local_160[0] + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b9460 size=106 ############

void FUN_1805b9460(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::WrapperAuthProduct::vftable;
  if ((ulonglong)param_1[6] < 0x10) {
    param_1[5] = 0;
    param_1[6] = 0xf;
    *(undefined1 *)(param_1 + 3) = 0;
    return;
  }
  pvVar1 = (void *)param_1[3];
  _Memory = pvVar1;
  if ((0xfff < param_1[6] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805e31f0 size=1286 ############

void FUN_1805e31f0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::DecryptionAssistData::vftable;
  pvVar1 = (void *)param_1[0x3f];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x41] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x3c];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x3e] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x39];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x3b] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x36];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x38] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x32];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x34] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x2f];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x31] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x2b];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x2d] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x27];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x29] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x24];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x26] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x21];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x23] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x1e];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x20] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x1a];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x1c] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x17];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x19] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x14];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x16] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x10];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x12] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0xd];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xf] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[10];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xc] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[7];
  if (pvVar1 == (void *)0x0) {
    FUN_180575ed0(param_1 + 3);
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[9] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a21cb0 size=26 ############

void Unwind_181a21cb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 1805bc2c0 size=97 ############

void FUN_1805bc2c0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if ((ulonglong)param_1[3] < 8) {
    param_1[3] = 7;
    param_1[2] = 0;
    *(undefined2 *)param_1 = 0;
    return;
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < param_1[3] * 2 + 2U) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a22150 size=23 ############

void Unwind_181a22150(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a23540 size=23 ############

void Unwind_181a23540(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a2367c size=23 ############

void Unwind_181a2367c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a2360c size=23 ############

void Unwind_181a2360c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 1805aea30 size=365 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805aea30(longlong param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  undefined8 ****ppppuVar3;
  char *pcVar4;
  longlong lVar5;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  longlong local_48;
  undefined8 local_40;
  undefined8 ***local_38 [2];
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_78;
  puVar1 = (undefined8 *)(param_1 + 0x28);
  if (*(longlong *)(param_1 + 0x38) == 0) {
    pcVar4 = "Unknown exception";
    if (*(char **)(param_1 + 8) != (char *)0x0) {
      pcVar4 = *(char **)(param_1 + 8);
    }
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (pcVar4[lVar5] != '\0');
    local_48 = param_1;
    FUN_1805a6cb0(puVar1);
    if (*(longlong *)(param_1 + 0x38) != 0) {
      lVar5 = *(longlong *)(param_1 + 0x38);
      if (*(ulonglong *)(param_1 + 0x40) - lVar5 < 2) {
        local_58 = 2;
        FUN_1805a1320(puVar1,2,0,&DAT_181baf994);
      }
      else {
        *(longlong *)(param_1 + 0x38) = lVar5 + 2;
        puVar2 = puVar1;
        if (0xf < *(ulonglong *)(param_1 + 0x40)) {
          puVar2 = (undefined8 *)*puVar1;
        }
        memmove((void *)((longlong)puVar2 + lVar5),&DAT_181baf994,2);
        *(undefined1 *)((longlong)puVar2 + lVar5 + 2) = 0;
      }
    }
    (**(code **)(**(longlong **)(param_1 + 0x20) + 0x10))
              (*(longlong **)(param_1 + 0x20),local_38,*(undefined4 *)(param_1 + 0x18));
    ppppuVar3 = local_38;
    if (0xf < local_20) {
      ppppuVar3 = (undefined8 ****)local_38[0];
    }
    FUN_1805a6a80(puVar1,ppppuVar3,local_28);
    if (0xf < local_20) {
      ppppuVar3 = (undefined8 ****)local_38[0];
      if ((0xfff < local_20 + 1) &&
         (ppppuVar3 = (undefined8 ****)local_38[0][-1],
         0x1f < (ulonglong)((longlong)local_38[0] + (-8 - (longlong)ppppuVar3)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(ppppuVar3);
    }
  }
}



############ FUN_ 181a23560 size=53 ############

void Catch_All_181a23560(undefined8 param_1,longlong param_2)

{
  void *_Memory;
  
  _Memory = *(void **)(param_2 + 0x48);
  if (_Memory != (void *)0x0) {
    FUN_1805fdd90(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
}



############ FUN_ 181a235a0 size=53 ############

void Catch_All_181a235a0(undefined8 param_1,longlong param_2)

{
  void *_Memory;
  
  _Memory = *(void **)(param_2 + 0x48);
  if (_Memory != (void *)0x0) {
    FUN_1805fded0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  _CxxThrowException((void *)0x0,(ThrowInfo *)0x0);
}



############ FUN_ 181a23b80 size=26 ############

void Unwind_181a23b80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a23bc0 size=23 ############

void Unwind_181a23bc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 1805bc040 size=93 ############

void FUN_1805bc040(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*param_1 == 0) {
    return;
  }
  FUN_18048c550(*param_1,param_1[1],param_1);
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a23f30 size=23 ############

void Unwind_181a23f30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a1a350 size=26 ############

void Unwind_181a1a350(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a160e0 size=23 ############

void Unwind_181a160e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 180612020 size=126 ############

void FUN_180612020(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x20) {
    FUN_1805bc2c0(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180611ea0 size=158 ############

void FUN_180611ea0(longlong param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if ((*(char *)(param_1 + 0x40) == '\0') && (*(longlong *)(param_1 + 0x28) != 0)) {
    FUN_180611fb0(*(undefined8 *)(*(longlong *)(param_1 + 0x20) + 8));
                    /* WARNING: Subroutine does not return */
    free(*(void **)(*(longlong *)(param_1 + 0x20) + 8));
  }
  if (*(longlong *)(param_1 + 0x18) == 0) {
    return;
  }
  pvVar1 = *(void **)(param_1 + 0x20);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x18) << 4)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180611fb0 size=96 ############

void FUN_180611fb0(longlong param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(ulonglong *)(param_1 + 0x20) < 0x10) {
    *(undefined8 *)(param_1 + 0x18) = 0;
    *(undefined8 *)(param_1 + 0x20) = 0xf;
    *(undefined1 *)(param_1 + 8) = 0;
    return;
  }
  pvVar1 = *(void **)(param_1 + 8);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0x20) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a240b0 size=23 ############

void Unwind_181a240b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 180611f60 size=27 ############

void FUN_180611f60(undefined8 *param_1)

{
  FUN_180618b80();
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 180618b80 size=212 ############

void FUN_180618b80(longlong param_1)

{
  longlong *plVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = *(longlong *)(param_1 + 0x20);
  while (lVar3 != 0) {
    FUN_180611fb0(*(undefined8 *)
                   (*(longlong *)(param_1 + 8) +
                   (lVar3 + *(longlong *)(param_1 + 0x18) + -1 & *(longlong *)(param_1 + 0x10) - 1U)
                   * 8));
    plVar1 = (longlong *)(param_1 + 0x20);
    *plVar1 = *plVar1 + -1;
    if (*plVar1 == 0) {
      *(undefined8 *)(param_1 + 0x18) = 0;
    }
    lVar3 = *(longlong *)(param_1 + 0x20);
  }
  lVar3 = *(longlong *)(param_1 + 0x10);
  while (lVar3 != 0) {
    lVar3 = lVar3 + -1;
    pvVar2 = *(void **)(*(longlong *)(param_1 + 8) + lVar3 * 8);
    if (pvVar2 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  pvVar2 = *(void **)(param_1 + 8);
  if (pvVar2 != (void *)0x0) {
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined8 *)(param_1 + 8) = 0;
  return;
}



############ FUN_ 180611d70 size=22 ############

void FUN_180611d70(undefined8 *param_1)

{
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 180611e60 size=42 ############

void FUN_180611e60(longlong param_1)

{
  FUN_180619370(param_1 + 0x28);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x30));
}



############ FUN_ 180619370 size=137 ############

void FUN_180619370(longlong param_1)

{
  longlong lVar1;
  longlong lVar2;
  ulonglong uVar3;
  void *_Memory;
  longlong lVar4;
  
  lVar1 = param_1 + 0x11;
  lVar4 = 0;
  if (lVar1 == 0) {
    param_1 = lVar4;
  }
  uVar3 = *(ulonglong *)(*(longlong *)(param_1 + 8) + 0x40) & 0xfffffffffffffffe;
  if ((uVar3 != 0) && (_Memory = (void *)(uVar3 - 0x40), _Memory != (void *)0x0)) {
    lVar2 = *(longlong *)(uVar3 + 8) + -0x40;
    if (*(longlong *)(uVar3 + 8) == 0) {
      lVar2 = lVar4;
    }
    FUN_180619300(lVar1,lVar2);
    if (*(longlong *)(uVar3 + 0x10) != 0) {
      lVar4 = *(longlong *)(uVar3 + 0x10) + -0x40;
    }
    FUN_180619300(lVar1,lVar4);
    FUN_180611fb0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 180619300 size=94 ############

void FUN_180619300(undefined8 param_1,void *param_2)

{
  longlong lVar1;
  longlong lVar2;
  
  if (param_2 != (void *)0x0) {
    lVar2 = 0;
    lVar1 = *(longlong *)((longlong)param_2 + 0x48) + -0x40;
    if (*(longlong *)((longlong)param_2 + 0x48) == 0) {
      lVar1 = lVar2;
    }
    FUN_180619300(param_1,lVar1);
    if (*(longlong *)((longlong)param_2 + 0x50) != 0) {
      lVar2 = *(longlong *)((longlong)param_2 + 0x50) + -0x40;
    }
    FUN_180619300(param_1,lVar2);
    FUN_180611fb0(param_2);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 18062b670 size=175 ############

void FUN_18062b670(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 5) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x28) * 0x28)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18062b2f0 size=470 ############

void FUN_18062b2f0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::MachineId::vftable;
  FUN_18062b670(param_1 + 0x16);
  if (0xf < (ulonglong)param_1[0x15]) {
    pvVar1 = (void *)param_1[0x12];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x15] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x15] = 0xf;
  param_1[0x14] = 0;
  *(undefined1 *)(param_1 + 0x12) = 0;
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x10] = 0;
  param_1[0x11] = 0xf;
  *(undefined1 *)(param_1 + 0xe) = 0;
  if (0xf < (ulonglong)param_1[0xd]) {
    pvVar1 = (void *)param_1[10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc] = 0;
  param_1[0xd] = 0xf;
  *(undefined1 *)(param_1 + 10) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18071ee70 size=555 ############

void FUN_18071ee70(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::OsVersion::vftable;
  if (0xf < (ulonglong)param_1[0x18]) {
    pvVar1 = (void *)param_1[0x15];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x18] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x18] = 0xf;
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x15) = 0;
  if (0xf < (ulonglong)param_1[0x14]) {
    pvVar1 = (void *)param_1[0x11];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x14] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x13] = 0;
  param_1[0x14] = 0xf;
  *(undefined1 *)(param_1 + 0x11) = 0;
  if (0xf < (ulonglong)param_1[0x10]) {
    pvVar1 = (void *)param_1[0xd];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xf] = 0;
  param_1[0x10] = 0xf;
  *(undefined1 *)(param_1 + 0xd) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a24760 size=23 ############

void Unwind_181a24760(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a248e0 size=26 ############

void Unwind_181a248e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a24910 size=26 ############

void Unwind_181a24910(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a24930 size=26 ############

void Unwind_181a24930(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 1805f42d0 size=297 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f42d0(longlong *param_1,undefined8 param_2,undefined8 *param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  longlong *plVar6;
  void *_Memory;
  undefined1 auStack_88 [32];
  undefined8 local_68;
  longlong *local_60;
  undefined8 local_58;
  undefined8 *local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_58 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_68 = param_3[1];
  plVar3 = (longlong *)param_3[2];
  if (plVar3 != (longlong *)0x0) {
    LOCK();
    *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
    UNLOCK();
  }
  local_60 = plVar3;
  local_50 = param_3;
  FUN_1805ae640(local_68,&local_48);
  (**(code **)(*param_1 + 8))(param_1,param_2,&local_48);
  plVar6 = local_60;
  if (local_30 < 0x10) {
    local_38 = 0;
    local_30 = 0xf;
    local_48 = 0;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_60 + 8))(local_60);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_60 + 0x10))();
        }
      }
    }
    if (param_3 != (undefined8 *)0x0) {
      (**(code **)*param_3)(param_3,1);
    }
  }
  pvVar4 = (void *)CONCAT71(uStack_47,local_48);
  _Memory = pvVar4;
  if ((0xfff < local_30 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a24c50 size=23 ############

void Unwind_181a24c50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a24c30 size=23 ############

void Unwind_181a24c30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a24f30 size=26 ############

void Unwind_181a24f30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 18065baf0 size=96 ############

void FUN_18065baf0(longlong param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(ulonglong *)(param_1 + 0x28) < 0x10) {
    *(undefined8 *)(param_1 + 0x20) = 0;
    *(undefined8 *)(param_1 + 0x28) = 0xf;
    *(undefined1 *)(param_1 + 0x10) = 0;
    return;
  }
  pvVar1 = *(void **)(param_1 + 0x10);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0x28) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18060cb50 size=163 ############

void FUN_18060cb50(longlong param_1)

{
  void *pvVar1;
  void *_Memory;
  longlong lVar2;
  
  if ((*(byte *)(param_1 + 0x70) & 1) == 0) {
    **(undefined8 **)(param_1 + 0x18) = 0;
    **(undefined8 **)(param_1 + 0x38) = 0;
    **(undefined4 **)(param_1 + 0x50) = 0;
    **(undefined8 **)(param_1 + 0x20) = 0;
    **(undefined8 **)(param_1 + 0x40) = 0;
    **(undefined4 **)(param_1 + 0x58) = 0;
    *(uint *)(param_1 + 0x70) = *(uint *)(param_1 + 0x70) & 0xfffffffe;
    *(undefined8 *)(param_1 + 0x68) = 0;
    return;
  }
  if (**(longlong **)(param_1 + 0x40) == 0) {
    lVar2 = (longlong)**(int **)(param_1 + 0x50) + **(longlong **)(param_1 + 0x38);
  }
  else {
    lVar2 = (longlong)**(int **)(param_1 + 0x58) + **(longlong **)(param_1 + 0x40);
  }
  pvVar1 = (void *)**(longlong **)(param_1 + 0x18);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(lVar2 - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a25cc0 size=23 ############

void Unwind_181a25cc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a25d30 size=26 ############

void Unwind_181a25d30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a25df0 size=23 ############

void Unwind_181a25df0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 18065dcc0 size=137 ############

void FUN_18065dcc0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18065d6b0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
    FUN_18065b260((longlong)_Memory + 0x28);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
  return;
}



############ FUN_ 18065d6b0 size=85 ############

void FUN_18065d6b0(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18065d6b0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    FUN_18065b260((longlong)param_2 + 0x28);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 18065b830 size=52 ############

void FUN_18065b830(longlong param_1)

{
  FUN_18065dcc0(param_1 + 0x68);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x68));
}



############ FUN_ 18065b4d0 size=57 ############

void FUN_18065b4d0(longlong param_1)

{
  FUN_18065dcc0(param_1 + 0x148);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x148));
}



############ FUN_ 181a25c50 size=26 ############

void Unwind_181a25c50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a250d0 size=23 ############

void Unwind_181a250d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 18065b900 size=349 ############

void FUN_18065b900(longlong param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  if (0xf < *(ulonglong *)(param_1 + 0x80)) {
    pvVar1 = *(void **)(param_1 + 0x68);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x80) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x80) = 0xf;
  *(undefined8 *)(param_1 + 0x78) = 0;
  *(undefined1 *)(param_1 + 0x68) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x60)) {
    pvVar1 = *(void **)(param_1 + 0x48);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x60) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x58) = 0;
  *(undefined8 *)(param_1 + 0x60) = 0xf;
  *(undefined1 *)(param_1 + 0x48) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x40)) {
    pvVar1 = *(void **)(param_1 + 0x28);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x40) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x38) = 0;
  *(undefined8 *)(param_1 + 0x40) = 0xf;
  *(undefined1 *)(param_1 + 0x28) = 0;
  if (*(ulonglong *)(param_1 + 0x20) < 0x10) {
    *(undefined8 *)(param_1 + 0x18) = 0;
    *(undefined8 *)(param_1 + 0x20) = 0xf;
    *(undefined1 *)(param_1 + 8) = 0;
    return;
  }
  pvVar1 = *(void **)(param_1 + 8);
  pvVar2 = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0x20) + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18065b360 size=352 ############

void FUN_18065b360(facet *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  FUN_1805bc040(param_1 + 0x170);
  FUN_1805bc040(param_1 + 0x158);
  FUN_1805bc040(param_1 + 0x140);
  FUN_1805bc040(param_1 + 0x128);
  FUN_1805bc040(param_1 + 0x110);
  FUN_1805bc040(param_1 + 0xf8);
  FUN_18065b900(param_1 + 0x70);
  if (0xf < *(ulonglong *)(param_1 + 0x68)) {
    pvVar1 = *(void **)(param_1 + 0x50);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x68) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x60) = 0;
  *(undefined8 *)(param_1 + 0x68) = 0xf;
  param_1[0x50] = (facet)0x0;
  if (0xf < *(ulonglong *)(param_1 + 0x48)) {
    pvVar1 = *(void **)(param_1 + 0x30);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x48) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x40) = 0;
  *(undefined8 *)(param_1 + 0x48) = 0xf;
  param_1[0x30] = (facet)0x0;
  if (*(ulonglong *)(param_1 + 0x28) < 0x10) {
    *(undefined8 *)(param_1 + 0x20) = 0;
    *(undefined8 *)(param_1 + 0x28) = 0xf;
    param_1[0x10] = (facet)0x0;
                    /* WARNING: Could not recover jumptable at 0x00018065b4a7. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    std::locale::facet::~facet(param_1);
    return;
  }
  pvVar1 = *(void **)(param_1 + 0x10);
  pvVar2 = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0x28) + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a25130 size=26 ############

void Unwind_181a25130(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 18065b2a0 size=175 ############

void FUN_18065b2a0(longlong *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  if (0xf < (ulonglong)param_1[7]) {
    pvVar1 = (void *)param_1[4];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[7] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[6] = 0;
  param_1[7] = 0xf;
  *(undefined1 *)(param_1 + 4) = 0;
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
    return;
  }
  pvVar1 = (void *)*param_1;
  pvVar2 = pvVar1;
  if ((0xfff < param_1[3] + 1U) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18065ba70 size=109 ############

void FUN_18065ba70(longlong param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(ulonglong *)(param_1 + 0x80) < 0x10) {
    *(undefined8 *)(param_1 + 0x78) = 0;
    *(undefined8 *)(param_1 + 0x80) = 0xf;
    *(undefined1 *)(param_1 + 0x68) = 0;
    FUN_18065b2a0(param_1);
    return;
  }
  pvVar1 = *(void **)(param_1 + 0x68);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0x80) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18047c850 size=177 ############

void FUN_18047c850(undefined8 *param_1)

{
  longlong *plVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = param_1[4];
  while (lVar3 != 0) {
    plVar1 = param_1 + 4;
    *plVar1 = *plVar1 + -1;
    if (*plVar1 == 0) {
      param_1[3] = 0;
    }
    lVar3 = param_1[4];
  }
  lVar3 = param_1[2];
  while (lVar3 != 0) {
    lVar3 = lVar3 + -1;
    pvVar2 = *(void **)(param_1[1] + lVar3 * 8);
    if (pvVar2 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  pvVar2 = (void *)param_1[1];
  if (pvVar2 == (void *)0x0) {
    param_1[2] = 0;
    param_1[1] = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(param_1[2] << 3)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b8100 size=281 ############

void FUN_1805b8100(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::Identity::vftable;
  FUN_1805b8220(param_1 + 0xe);
  if (0xf < (ulonglong)param_1[0xd]) {
    pvVar1 = (void *)param_1[10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc] = 0;
  param_1[0xd] = 0xf;
  *(undefined1 *)(param_1 + 10) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b8220 size=666 ############

void FUN_1805b8220(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::IdentityDetail::vftable;
  FUN_1805b8700(param_1 + 0x25);
  if (0xf < (ulonglong)param_1[0x24]) {
    pvVar1 = (void *)param_1[0x21];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x24] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x23] = 0;
  param_1[0x24] = 0xf;
  *(undefined1 *)(param_1 + 0x21) = 0;
  if (0xf < (ulonglong)param_1[0x1f]) {
    pvVar1 = (void *)param_1[0x1c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1f] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1e] = 0;
  param_1[0x1f] = 0xf;
  *(undefined1 *)(param_1 + 0x1c) = 0;
  FUN_1805bc170(param_1 + 0x19);
  pvVar1 = (void *)param_1[0x16];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0x18] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x10] = 0;
  param_1[0x11] = 0xf;
  *(undefined1 *)(param_1 + 0xe) = 0;
  if (0xf < (ulonglong)param_1[0xd]) {
    pvVar1 = (void *)param_1[10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc] = 0;
  param_1[0xd] = 0xf;
  *(undefined1 *)(param_1 + 10) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b8700 size=117 ############

void FUN_1805b8700(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::LicensePeriod::vftable;
  param_1[5] = pace::eden::thrift::pub::TimePeriod::vftable;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  _Memory = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806798f0 size=117 ############

void FUN_1806798f0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::AuthLocation::vftable;
  param_1[5] = pace::eden::thrift::pub::IlokIdentifier::vftable;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  _Memory = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067bab0 size=187 ############

void FUN_18067bab0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::LicensePeriod::vftable;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180679b90 size=220 ############

void FUN_180679b90(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::AuthTerms::vftable;
  if (0xf < (ulonglong)param_1[0x18]) {
    pvVar1 = (void *)param_1[0x15];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x18] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x17] = 0;
  param_1[0x18] = 0xf;
  *(undefined1 *)(param_1 + 0x15) = 0;
  if ((ulonglong)param_1[0x10] < 0x10) {
    param_1[0xf] = 0;
    param_1[0x10] = 0xf;
    *(undefined1 *)(param_1 + 0xd) = 0;
    FUN_18067bab0(param_1 + 1);
    return;
  }
  pvVar1 = (void *)param_1[0xd];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[0x10] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067b220 size=187 ############

void FUN_18067b220(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::exception::ExceptionInfoAll::vftable;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067d4d0 size=254 ############

void FUN_18067d4d0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::floating::ServerPassword::vftable;
  pvVar1 = (void *)param_1[9];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xb] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180680440 size=128 ############

void FUN_180680440(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 4) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678d00 size=177 ############

void FUN_180678d00(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 10) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x50) * 0x50)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678dc0 size=180 ############

void FUN_180678dc0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x30) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x180) * 0x180)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067c620 size=98 ############

void FUN_18067c620(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = license_services::LsVectorMetadata::vftable;
  FUN_180564f20(param_1 + 4);
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[3] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180564f20 size=140 ############

void FUN_180564f20(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18056b2f0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18056b2f0 size=76 ############

void FUN_18056b2f0(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18056b2f0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 180678340 size=179 ############

void FUN_180678340(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x3a) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x1d0) * 0x1d0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678410 size=182 ############

void FUN_180678410(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x2a) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 8) - (lVar3 >> 0x3f)) * 0x150)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806784e0 size=179 ############

void FUN_1806784e0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x16) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0xb0) * 0xb0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806785b0 size=179 ############

void FUN_1806785b0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x35) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x1a8) * 0x1a8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678680 size=179 ############

void FUN_180678680(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x2d) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x168) * 0x168)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678750 size=179 ############

void FUN_180678750(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x21) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x108) * 0x108)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678820 size=182 ############

void FUN_180678820(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x19) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 200)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806788f0 size=179 ############

void FUN_1806788f0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x41) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x208) * 0x208)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806789c0 size=179 ############

void FUN_1806789c0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x2f) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x178) * 0x178)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678a90 size=182 ############

void FUN_180678a90(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x1e) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xf0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678b60 size=179 ############

void FUN_180678b60(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x46) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x230) * 0x230)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678c30 size=179 ############

void FUN_180678c30(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x23) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x118) * 0x118)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678e90 size=180 ############

void FUN_180678e90(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x28) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x140) * 0x140)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180678f60 size=180 ############

void FUN_180678f60(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x24) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x120) * 0x120)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180679030 size=179 ############

void FUN_180679030(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x1b) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0xd8) * 0xd8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180679100 size=182 ############

void FUN_180679100(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x33) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x5f5f5f5f5f5f5f5f) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 8) - (lVar3 >> 0x3f)) * 0x198)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806791d0 size=179 ############

void FUN_1806791d0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x25) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x128) * 0x128)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806792a0 size=182 ############

void FUN_1806792a0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x1f) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xf8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180679390 size=182 ############

void FUN_180679390(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x17) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x4de9bd37a6f4de9b) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xb8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180679460 size=179 ############

void FUN_180679460(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x22) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x110) * 0x110)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180679530 size=182 ############

void FUN_180679530(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x32) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x5c28f5c28f5c28f5) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 8) - (lVar3 >> 0x3f)) * 400)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180679600 size=179 ############

void FUN_180679600(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x2c) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x160) * 0x160)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806797a0 size=179 ############

void FUN_1806797a0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x37) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x1b8) * 0x1b8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806796d0 size=180 ############

void FUN_1806796d0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x18) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0xc0) * 0xc0)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067b6e0 size=321 ############

void FUN_18067b6e0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::GetAuthorizationServerInfoReturn::vftable;
  pvVar1 = (void *)param_1[0x1e];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0x20] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_1805b8690(param_1 + 0x17);
  if (0xf < (ulonglong)param_1[0x16]) {
    pvVar1 = (void *)param_1[0x13];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x16] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x15] = 0;
  param_1[0x16] = 0xf;
  *(undefined1 *)(param_1 + 0x13) = 0;
  if ((ulonglong)param_1[0x12] < 0x10) {
    param_1[0x11] = 0;
    param_1[0x12] = 0xf;
    *(undefined1 *)(param_1 + 0xf) = 0;
    FUN_1805bc040(param_1 + 0xc);
    FUN_1805bc040(param_1 + 9);
    return;
  }
  pvVar1 = (void *)param_1[0xf];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[0x12] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b8690 size=106 ############

void FUN_1805b8690(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::InstalledVersion::vftable;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  _Memory = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a1a250 size=23 ############

void Unwind_181a1a250(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a268c0 size=23 ############

void Unwind_181a268c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 1806804d0 size=177 ############

void FUN_1806804d0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x26) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x130) * 0x130)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067b840 size=192 ############

void FUN_18067b840(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::GetContentDecryptionKeyInput::vftable;
  pvVar1 = (void *)param_1[0xa9];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xab] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_1805e31f0(param_1 + 0x62);
  pvVar1 = (void *)param_1[0x5f];
  if (pvVar1 == (void *)0x0) {
    FUN_1805753e0(param_1 + 1);
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x61] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067b930 size=283 ############

void FUN_18067b930(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::GetContentDecryptionKeyReturn::vftable;
  pvVar1 = (void *)param_1[10];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xc] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[7];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[9] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[4];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[6] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a27470 size=26 ############

void Unwind_181a27470(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a27690 size=26 ############

void Unwind_181a27690(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a276b0 size=26 ############

void Unwind_181a276b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a276d0 size=26 ############

void Unwind_181a276d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 181a276f0 size=26 ############

void Unwind_181a276f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x108));
}



############ FUN_ 18067b450 size=202 ############

void FUN_18067b450(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::FindAuthChainsInput::vftable;
  pvVar1 = (void *)param_1[0x16];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x18] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x13];
  if (pvVar1 == (void *)0x0) {
    FUN_1805b8040(param_1 + 4);
    FUN_180680130(param_1 + 1);
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x15] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180680130 size=180 ############

void FUN_180680130(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar4 != puVar1; puVar4 = puVar4 + 0x15) {
    (**(code **)*puVar4)(puVar4,0);
  }
  pvVar2 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar2),8) +
          (param_1[2] - (longlong)pvVar2);
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((lVar3 >> 7) - (lVar3 >> 0x3f)) * 0xa8)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180680380 size=171 ############

void FUN_180680380(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0xb) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x58) * 0x58)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a27c40 size=23 ############

void Unwind_181a27c40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 18067c9c0 size=238 ############

void FUN_18067c9c0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::OpenQuicklyEncryptedChannelInput::vftable;
  if (0xf < (ulonglong)param_1[0xb]) {
    pvVar1 = (void *)param_1[8];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xb] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0xf;
  param_1[10] = 0;
  *(undefined1 *)(param_1 + 8) = 0;
  pvVar1 = (void *)param_1[4];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[6] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067cad0 size=238 ############

void FUN_18067cad0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::OpenQuicklyEncryptedChannelReturn::vftable;
  if (0xf < (ulonglong)param_1[0xb]) {
    pvVar1 = (void *)param_1[8];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xb] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0xf;
  param_1[10] = 0;
  *(undefined1 *)(param_1 + 8) = 0;
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a27d70 size=26 ############

void Unwind_181a27d70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 18067d320 size=85 ############

void FUN_18067d320(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::SendEncryptedCommandReturn::vftable;
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067afa0 size=156 ############

void FUN_18067afa0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::DeveloperDataRecord::vftable;
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a27e50 size=26 ############

void Unwind_181a27e50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x170));
}



############ FUN_ 181a27e70 size=26 ############

void Unwind_181a27e70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x178));
}



############ FUN_ 181a27f00 size=26 ############

void Unwind_181a27f00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x148));
}



############ FUN_ 18056a180 size=78 ############

void FUN_18056a180(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067d0a0 size=220 ############

void FUN_18067d0a0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::SecretDataRecord::vftable;
  pvVar1 = (void *)param_1[8];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[10] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a27910 size=26 ############

void Unwind_181a27910(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd8));
}



############ FUN_ 18067ae90 size=254 ############

void FUN_18067ae90(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::DatabaseCommitItem::vftable;
  pvVar1 = (void *)param_1[0xc];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xe] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[10]) {
    pvVar1 = (void *)param_1[7];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[9] = 0;
  param_1[10] = 0xf;
  *(undefined1 *)(param_1 + 7) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067b080 size=141 ############

void FUN_18067b080(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::DlcCloudAuthKeyExchangeInput::vftable;
  if ((ulonglong)param_1[0x6c] < 0x10) {
    param_1[0x6b] = 0;
    param_1[0x6c] = 0xf;
    *(undefined1 *)(param_1 + 0x69) = 0;
    FUN_1805b7c40(param_1 + 0x5f);
    FUN_1805753e0(param_1 + 1);
    return;
  }
  pvVar1 = (void *)param_1[0x69];
  _Memory = pvVar1;
  if ((0xfff < param_1[0x6c] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806802c0 size=177 ############

void FUN_1806802c0(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0x11) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x88) * 0x88)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a27930 size=26 ############

void Unwind_181a27930(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb8));
}



############ FUN_ 181a27950 size=26 ############

void Unwind_181a27950(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a279b0 size=26 ############

void Unwind_181a279b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x5e0));
}



############ FUN_ 181a27a40 size=26 ############

void Unwind_181a27a40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x120));
}



############ FUN_ 181a27a60 size=26 ############

void Unwind_181a27a60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x128));
}



############ FUN_ 181a27a80 size=26 ############

void Unwind_181a27a80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x130));
}



############ FUN_ 181a27aa0 size=26 ############

void Unwind_181a27aa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1b0));
}



############ FUN_ 181a288f0 size=26 ############

void Unwind_181a288f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1d0));
}



############ FUN_ 181a28930 size=26 ############

void Unwind_181a28930(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x510));
}



############ FUN_ 181a28950 size=26 ############

void Unwind_181a28950(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x518));
}



############ FUN_ 181a28970 size=26 ############

void Unwind_181a28970(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x310));
}



############ FUN_ 181a28990 size=26 ############

void Unwind_181a28990(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x520));
}



############ FUN_ 181a289b0 size=26 ############

void Unwind_181a289b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x580));
}



############ FUN_ 180680200 size=175 ############

void FUN_180680200(longlong *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0xc) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x60) * 0x60)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a289d0 size=26 ############

void Unwind_181a289d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x588));
}



############ FUN_ 181a289f0 size=26 ############

void Unwind_181a289f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x590));
}



############ FUN_ 181a28a10 size=26 ############

void Unwind_181a28a10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x598));
}



############ FUN_ 181a28a30 size=26 ############

void Unwind_181a28a30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x5a0));
}



############ FUN_ 181a28a50 size=26 ############

void Unwind_181a28a50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x5b0));
}



############ FUN_ 18078b8c0 size=317 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18078b8c0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  short local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  while (local_54 != 0) {
    if ((local_58[0] == 10000) && (local_54 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0xc) = 1;
    }
    else {
      FUN_1806d8eb0(param_2,local_54);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  }
  (**(code **)(*param_2 + 200))(param_2);
  if (0xf < local_30) {
    pvVar1 = (void *)CONCAT71(uStack_47,local_48);
    _Memory = pvVar1;
    if ((0xfff < local_30 + 1) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
}



############ FUN_ 18067d5e0 size=83 ############

void FUN_18067d5e0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  FUN_1806224a0(param_1 + 4);
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806224a0 size=140 ############

void FUN_1806224a0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18047e3b0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 181a28bc0 size=26 ############

void Unwind_181a28bc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x180));
}



############ FUN_ 18067b5f0 size=187 ############

void FUN_18067b5f0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::FindSoftwareLicensesInput::vftable;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a28c00 size=26 ############

void Unwind_181a28c00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x488));
}



############ FUN_ 181a28c20 size=26 ############

void Unwind_181a28c20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x490));
}



############ FUN_ 181a28c40 size=26 ############

void Unwind_181a28c40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4b8));
}



############ FUN_ 181a28c60 size=26 ############

void Unwind_181a28c60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4c0));
}



############ FUN_ 181a28c80 size=26 ############

void Unwind_181a28c80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4c8));
}



############ FUN_ 181a28ca0 size=26 ############

void Unwind_181a28ca0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4d0));
}



############ FUN_ 181a28cc0 size=26 ############

void Unwind_181a28cc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4e0));
}



############ FUN_ 181a28ce0 size=26 ############

void Unwind_181a28ce0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4f0));
}



############ FUN_ 181a28d00 size=26 ############

void Unwind_181a28d00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4f8));
}



############ FUN_ 181a28d20 size=26 ############

void Unwind_181a28d20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4a0));
}



############ FUN_ 181a28d40 size=26 ############

void Unwind_181a28d40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x3e0));
}



############ FUN_ 181a28d60 size=26 ############

void Unwind_181a28d60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 1000));
}



############ FUN_ 181a28d80 size=26 ############

void Unwind_181a28d80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x3f0));
}



############ FUN_ 181a28da0 size=26 ############

void Unwind_181a28da0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x3f8));
}



############ FUN_ 181a28dc0 size=26 ############

void Unwind_181a28dc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x400));
}



############ FUN_ 181a28de0 size=26 ############

void Unwind_181a28de0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x408));
}



############ FUN_ 181a28e00 size=26 ############

void Unwind_181a28e00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x418));
}



############ FUN_ 181a28e20 size=26 ############

void Unwind_181a28e20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x420));
}



############ FUN_ 181a28e40 size=26 ############

void Unwind_181a28e40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x428));
}



############ FUN_ 181a28e60 size=26 ############

void Unwind_181a28e60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x430));
}



############ FUN_ 181a28e80 size=26 ############

void Unwind_181a28e80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x438));
}



############ FUN_ 181a28ea0 size=26 ############

void Unwind_181a28ea0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x440));
}



############ FUN_ 181a28ec0 size=26 ############

void Unwind_181a28ec0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x448));
}



############ FUN_ 181a28ee0 size=26 ############

void Unwind_181a28ee0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x450));
}



############ FUN_ 181a28f00 size=26 ############

void Unwind_181a28f00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x458));
}



############ FUN_ 181a28f20 size=26 ############

void Unwind_181a28f20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x460));
}



############ FUN_ 181a28f40 size=26 ############

void Unwind_181a28f40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x468));
}



############ FUN_ 181a28f60 size=26 ############

void Unwind_181a28f60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x4e8));
}



############ FUN_ 181a28f80 size=26 ############

void Unwind_181a28f80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x498));
}



############ FUN_ 181a28fa0 size=26 ############

void Unwind_181a28fa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 400));
}



############ FUN_ 18067acf0 size=99 ############

void FUN_18067acf0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::ChallengeLicenseDbInput::vftable;
  pvVar1 = (void *)param_1[0x5f];
  if (pvVar1 == (void *)0x0) {
    FUN_1805753e0(param_1 + 1);
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x61] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067ad70 size=85 ############

void FUN_18067ad70(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::ChallengeLicenseDbReturn::vftable;
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a29020 size=26 ############

void Unwind_181a29020(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a26620 size=23 ############

void Unwind_181a26620(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a16230 size=23 ############

void Unwind_181a16230(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a26650 size=23 ############

void Unwind_181a26650(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a266a0 size=23 ############

void Unwind_181a266a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a266c0 size=23 ############

void Unwind_181a266c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a161d0 size=23 ############

void Unwind_181a161d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a266e0 size=26 ############

void Unwind_181a266e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a26700 size=26 ############

void Unwind_181a26700(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a26190 size=23 ############

void Unwind_181a26190(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a261c0 size=23 ############

void Unwind_181a261c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a261f0 size=23 ############

void Unwind_181a261f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a294f0 size=23 ############

void Unwind_181a294f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a29400 size=23 ############

void Unwind_181a29400(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a15ba0 size=23 ############

void Unwind_181a15ba0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a29830 size=23 ############

void Unwind_181a29830(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a1bbc0 size=23 ############

void Unwind_181a1bbc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a29d10 size=23 ############

void Unwind_181a29d10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 1807263b0 size=43 ############

void FUN_1807263b0(longlong *param_1)

{
  if (param_1 != (longlong *)0x0) {
    FUN_180726780(*param_1 + 0x28,param_1 + 1);
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 181a2a23c size=23 ############

void Unwind_181a2a23c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 1807270d0 size=202 ############

void * FUN_1807270d0(void *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  longlong *plVar1;
  undefined8 *puVar2;
  longlong lVar3;
  int iVar4;
  bool bVar5;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lpCriticalSection = *(LPCRITICAL_SECTION *)((longlong)param_1 + 8);
  if (lpCriticalSection != (LPCRITICAL_SECTION)0x0) {
    for (plVar1 = *(longlong **)&lpCriticalSection[1].LockCount; plVar1 != (longlong *)0x0;
        plVar1 = (longlong *)plVar1[4]) {
      (**(code **)(*plVar1 + 8))(plVar1);
    }
    lVar3._0_4_ = lpCriticalSection[1].LockCount;
    lVar3._4_4_ = lpCriticalSection[1].RecursionCount;
    while (lVar3 != 0) {
      puVar2 = *(undefined8 **)&lpCriticalSection[1].LockCount;
      lVar3 = puVar2[4];
      if (puVar2 != (undefined8 *)0x0) {
        (**(code **)*puVar2)(puVar2,1,param_3,param_4,uVar6);
      }
      lpCriticalSection[1].LockCount = (int)lVar3;
      lpCriticalSection[1].RecursionCount = (int)((ulonglong)lVar3 >> 0x20);
    }
    DeleteCriticalSection(lpCriticalSection);
                    /* WARNING: Subroutine does not return */
    free(lpCriticalSection);
  }
  LOCK();
  iVar4 = DAT_18265dcc0 + -1;
  UNLOCK();
  bVar5 = DAT_18265dcc0 == 1;
  DAT_18265dcc0 = iVar4;
  if (bVar5) {
    Ordinal_116();
  }
  if ((param_2 & 1) == 0) {
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 181a2a570 size=23 ############

void Unwind_181a2a570(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a2a5e0 size=23 ############

void Unwind_181a2a5e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 1807509f0 size=79 ############

void FUN_1807509f0(longlong *param_1)

{
  undefined8 *puVar1;
  void *_Memory;
  
  puVar1 = (undefined8 *)*param_1;
  _Memory = (void *)*puVar1;
  *puVar1 = puVar1;
  *(longlong *)(*param_1 + 8) = *param_1;
  param_1[1] = 0;
  if (_Memory != (void *)*param_1) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18077ae60 size=137 ############

void FUN_18077ae60(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18077ad30(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
    FUN_1807dc8a0((longlong)_Memory + 0x28);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
  return;
}



############ FUN_ 18077ad30 size=85 ############

void FUN_18077ad30(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18077ad30(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    FUN_1807dc8a0((longlong)param_2 + 0x28);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 180750a50 size=174 ############

void FUN_180750a50(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::ilok::CommandPacket::vftable;
  pvVar1 = (void *)param_1[0xf];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x11] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0xc];
  if (pvVar1 == (void *)0x0) {
    param_1[6] = pace::eden::thrift::ilok::CommandTarget::vftable;
    param_1[1] = pace::eden::thrift::ilok::CommandTarget::vftable;
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0xe] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180750cf0 size=214 ############

void FUN_180750cf0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::ilok::ResultPacket::vftable;
  pvVar1 = (void *)param_1[0x28];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x2a] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x25];
  if (pvVar1 == (void *)0x0) {
    param_1[6] = pace::eden::thrift::exception::ExceptionInfo::vftable;
    FUN_18067b2e0(param_1 + 0x11);
    FUN_18067b220(param_1 + 7);
    param_1[1] = pace::eden::thrift::ilok::CommandTarget::vftable;
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x27] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067b2e0 size=362 ############

void FUN_18067b2e0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::exception::ExceptionInfoPace::vftable;
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x11] = 0xf;
  param_1[0x10] = 0;
  *(undefined1 *)(param_1 + 0xe) = 0;
  if (0xf < (ulonglong)param_1[0xd]) {
    pvVar1 = (void *)param_1[10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc] = 0;
  param_1[0xd] = 0xf;
  *(undefined1 *)(param_1 + 10) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a2a910 size=26 ############

void Unwind_181a2a910(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x110));
}



############ FUN_ 181a2a7d0 size=26 ############

void Unwind_181a2a7d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x330));
}



############ FUN_ 181a2a7f0 size=26 ############

void Unwind_181a2a7f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x338));
}



############ FUN_ 181a2a810 size=26 ############

void Unwind_181a2a810(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x340));
}



############ FUN_ 181a2a8f0 size=26 ############

void Unwind_181a2a8f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x188));
}



############ FUN_ 181a2a930 size=26 ############

void Unwind_181a2a930(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x118));
}



############ FUN_ 181a2a950 size=26 ############

void Unwind_181a2a950(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x208));
}



############ FUN_ 181a2a970 size=26 ############

void Unwind_181a2a970(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x210));
}



############ FUN_ 181a2aaf0 size=26 ############

void Unwind_181a2aaf0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x378));
}



############ FUN_ 1805d66b0 size=124 ############

void FUN_1805d66b0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = apache::thrift::TException::vftable;
  if ((ulonglong)param_1[6] < 0x10) {
    param_1[5] = 0;
    param_1[6] = 0xf;
    *(undefined1 *)(param_1 + 3) = 0;
    *param_1 = std::exception::vftable;
    __std_exception_destroy(param_1 + 1);
    return;
  }
  pvVar1 = (void *)param_1[3];
  _Memory = pvVar1;
  if ((0xfff < param_1[6] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a2baa0 size=26 ############

void Unwind_181a2baa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x140));
}



############ FUN_ 1807ec3f0 size=180 ############

void FUN_1807ec3f0(longlong param_1)

{
  longlong *plVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = *(longlong *)(param_1 + 0x20);
  while (lVar3 != 0) {
    plVar1 = (longlong *)(param_1 + 0x20);
    *plVar1 = *plVar1 + -1;
    if (*plVar1 == 0) {
      *(undefined8 *)(param_1 + 0x18) = 0;
    }
    lVar3 = *(longlong *)(param_1 + 0x20);
  }
  lVar3 = *(longlong *)(param_1 + 0x10);
  while (lVar3 != 0) {
    lVar3 = lVar3 + -1;
    pvVar2 = *(void **)(*(longlong *)(param_1 + 8) + lVar3 * 8);
    if (pvVar2 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  pvVar2 = *(void **)(param_1 + 8);
  if (pvVar2 == (void *)0x0) {
    *(undefined8 *)(param_1 + 0x10) = 0;
    *(undefined8 *)(param_1 + 8) = 0;
    return;
  }
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1807ec060 size=27 ############

void FUN_1807ec060(undefined8 *param_1)

{
  FUN_1807ec3f0();
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18047c710 size=127 ############

void FUN_18047c710(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18047ceb0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
  return;
}



############ FUN_ 18047ceb0 size=76 ############

void FUN_18047ceb0(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18047ceb0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 181a2c0e0 size=23 ############

void Unwind_181a2c0e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 180807600 size=100 ############

void FUN_180807600(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_180807600(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    *(undefined ***)((longlong)param_2 + 0x40) = license_services::LsRelation::vftable;
    *(undefined ***)((longlong)param_2 + 0x20) = license_services::LsRelation::vftable;
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 180800d80 size=51 ############

void FUN_180800d80(undefined8 *param_1)

{
  undefined1 local_res8 [32];
  
  FUN_180807a80(param_1,local_res8,*(undefined8 *)*param_1,(undefined8 *)*param_1,0xfffffffffffffffe
               );
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 180807a80 size=401 ############

undefined8 *
FUN_180807a80(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  void *pvVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  void *_Memory_00;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_1808076f0(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar4 = plVar5, cVar1 == '\0' && (plVar2 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar2 = plVar4;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar5 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar1 = *(char *)(plVar5[1] + 0x19);
          plVar2 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_180715ef0(param_1);
      if (0xf < *(ulonglong *)((longlong)_Memory + 0x38)) {
        pvVar3 = *(void **)((longlong)_Memory + 0x20);
        _Memory_00 = pvVar3;
        if ((0xfff < *(ulonglong *)((longlong)_Memory + 0x38) + 1) &&
           (_Memory_00 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      *(undefined8 *)((longlong)_Memory + 0x30) = 0;
      *(undefined8 *)((longlong)_Memory + 0x38) = 0xf;
      *(undefined1 *)((longlong)_Memory + 0x20) = 0;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 1808076f0 size=169 ############

void FUN_1808076f0(undefined8 param_1,void *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_1808076f0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  if (*(ulonglong *)((longlong)param_2 + 0x38) < 0x10) {
    *(undefined8 *)((longlong)param_2 + 0x30) = 0;
    *(undefined8 *)((longlong)param_2 + 0x38) = 0xf;
    *(undefined1 *)((longlong)param_2 + 0x20) = 0;
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  pvVar1 = *(void **)((longlong)param_2 + 0x20);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)((longlong)param_2 + 0x38) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a2be90 size=23 ############

void Unwind_181a2be90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1a7d0 size=26 ############

void Unwind_181a1a7d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 180807590 size=108 ############

void FUN_180807590(undefined8 param_1,void *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(ulonglong *)((longlong)param_2 + 0x38) < 0x10) {
    *(undefined8 *)((longlong)param_2 + 0x30) = 0;
    *(undefined8 *)((longlong)param_2 + 0x38) = 0xf;
    *(undefined1 *)((longlong)param_2 + 0x20) = 0;
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  pvVar1 = *(void **)((longlong)param_2 + 0x20);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)((longlong)param_2 + 0x38) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a2c3c0 size=23 ############

void Unwind_181a2c3c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a2c3e0 size=23 ############

void Unwind_181a2c3e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a2c560 size=23 ############

void Unwind_181a2c560(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a2c580 size=23 ############

void Unwind_181a2c580(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a2c820 size=26 ############

void Unwind_181a2c820(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 180848dc0 size=51 ############

void FUN_180848dc0(undefined8 *param_1)

{
  undefined1 local_res8 [32];
  
  FUN_18084e7f0(param_1,local_res8,*(undefined8 *)*param_1,(undefined8 *)*param_1,0xfffffffffffffffe
               );
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 18084e7f0 size=401 ############

undefined8 *
FUN_18084e7f0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  void *pvVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  void *_Memory_00;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_180489c30(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar4 = plVar5, cVar1 == '\0' && (plVar2 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar2 = plVar4;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar5 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar1 = *(char *)(plVar5[1] + 0x19);
          plVar2 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_180715ef0(param_1);
      if (0xf < *(ulonglong *)((longlong)_Memory + 0x38)) {
        pvVar3 = *(void **)((longlong)_Memory + 0x20);
        _Memory_00 = pvVar3;
        if ((0xfff < *(ulonglong *)((longlong)_Memory + 0x38) + 1) &&
           (_Memory_00 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      *(undefined8 *)((longlong)_Memory + 0x30) = 0;
      *(undefined8 *)((longlong)_Memory + 0x38) = 0xf;
      *(undefined1 *)((longlong)_Memory + 0x20) = 0;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 180489c30 size=169 ############

void FUN_180489c30(undefined8 param_1,void *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_180489c30(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  if (*(ulonglong *)((longlong)param_2 + 0x38) < 0x10) {
    *(undefined8 *)((longlong)param_2 + 0x30) = 0;
    *(undefined8 *)((longlong)param_2 + 0x38) = 0xf;
    *(undefined1 *)((longlong)param_2 + 0x20) = 0;
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  pvVar1 = *(void **)((longlong)param_2 + 0x20);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)((longlong)param_2 + 0x38) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a2cb40 size=23 ############

void Unwind_181a2cb40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a2cc40 size=23 ############

void Unwind_181a2cc40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a2cda0 size=23 ############

void Unwind_181a2cda0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a2cdc0 size=23 ############

void Unwind_181a2cdc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a2ce00 size=26 ############

void Unwind_181a2ce00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a2ce30 size=23 ############

void Unwind_181a2ce30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a2d198 size=26 ############

void Unwind_181a2d198(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a2d3f0 size=23 ############

void Unwind_181a2d3f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a2d419 size=23 ############

void Unwind_181a2d419(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a2d489 size=23 ############

void Unwind_181a2d489(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a2db1c size=23 ############

void Unwind_181a2db1c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a2df1c size=23 ############

void Unwind_181a2df1c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a2d867 size=26 ############

void Unwind_181a2d867(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x248));
}



############ FUN_ 181a2dd0c size=26 ############

void Unwind_181a2dd0c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x178));
}



############ FUN_ 180926f60 size=189 ############

void FUN_180926f60(void *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  undefined8 uVar6;
  undefined1 local_20 [24];
  
  if (param_1 == (void *)0x0) {
    return;
  }
  uVar6 = 0xfffffffffffffffe;
  plVar4 = *(longlong **)((longlong)param_1 + 0x28);
  if (plVar4 != (longlong *)0x0) {
    lVar5 = *plVar4;
    FUN_1805c8c70();
    FUN_180928500(lVar5 + 0x28,plVar4 + 1,local_20,param_4,uVar6);
    FUN_180726fe0(plVar4 + 3);
                    /* WARNING: Subroutine does not return */
    free(plVar4);
  }
  plVar4 = *(longlong **)((longlong)param_1 + 0x20);
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  plVar4 = *(longlong **)((longlong)param_1 + 8);
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    piVar2 = (int *)((longlong)plVar4 + 0xc);
    iVar3 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)(*plVar4 + 0x10))();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 181a2d0e0 size=23 ############

void Unwind_181a2d0e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 18092e830 size=188 ############

void FUN_18092e830(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::CloseDirectLocationConnectionInput::vftable;
  pvVar1 = (void *)param_1[100];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x66] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_1805753e0(param_1 + 6);
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18092e930 size=227 ############

void FUN_18092e930(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::OpenDirectLocationConnectionInput::vftable;
  pvVar1 = (void *)param_1[0x81];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x83] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_1805753e0(param_1 + 0x23);
  if ((ulonglong)param_1[0x22] < 0x10) {
    param_1[0x21] = 0;
    param_1[0x22] = 0xf;
    *(undefined1 *)(param_1 + 0x1f) = 0;
    FUN_180750a50(param_1 + 0xc);
    FUN_1806798f0(param_1 + 1);
    return;
  }
  pvVar1 = (void *)param_1[0x1f];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[0x22] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1806431b0 size=85 ############

void FUN_1806431b0(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::ilok::Ilok2CertChain::vftable;
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18092ea30 size=155 ############

void FUN_18092ea30(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::OpenDirectLocationConnectionReturn::vftable;
  FUN_180575070(param_1 + 0x3b);
  FUN_180750cf0(param_1 + 0xf);
  FUN_1806431b0(param_1 + 9);
  FUN_1805bc170(param_1 + 6);
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  _Memory = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a2e2a0 size=23 ############

void Unwind_181a2e2a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 180933d10 size=204 ############

void FUN_180933d10(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::DoDirectIlokCommandInput::vftable;
  pvVar1 = (void *)param_1[0x77];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x79] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  FUN_1805753e0(param_1 + 0x19);
  FUN_180750a50(param_1 + 5);
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a2e3d0 size=23 ############

void Unwind_181a2e3d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a2e4d0 size=26 ############

void Unwind_181a2e4d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x2d0));
}



############ FUN_ 181a2e4f0 size=26 ############

void Unwind_181a2e4f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x2e0));
}



############ FUN_ 181a2ea8e size=23 ############

void Unwind_181a2ea8e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a2eb70 size=23 ############

void Unwind_181a2eb70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a2ebc8 size=23 ############

void Unwind_181a2ebc8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 18097d840 size=135 ############

void FUN_18097d840(undefined8 *param_1,undefined8 *param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *_Memory;
  
  do {
    if (param_1 == param_2) {
      return;
    }
    _Memory = (undefined8 *)*param_1;
    if (_Memory != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(_Memory + 3);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if ((iVar2 == 1) && (_Memory != (undefined8 *)0x0)) {
        if ((longlong)_Memory[1] - 1U < 0xfffffffffffffffe) {
          CloseHandle((HANDLE)_Memory[1]);
        }
        if ((longlong)*_Memory - 1U < 0xfffffffffffffffe) {
          CloseHandle((HANDLE)*_Memory);
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    param_1 = param_1 + 1;
  } while( true );
}



############ FUN_ 18097d920 size=44 ############

void FUN_18097d920(void *param_1)

{
  HANDLE hObject;
  
  if (param_1 != (void *)0x0) {
    LOCK();
    hObject = *(HANDLE *)((longlong)param_1 + 8);
    *(undefined8 *)((longlong)param_1 + 8) = 0;
    UNLOCK();
    if (hObject != (HANDLE)0x0) {
      CloseHandle(hObject);
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 181a18100 size=23 ############

void Unwind_181a18100(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a2eda0 size=23 ############

void Unwind_181a2eda0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 18097ed90 size=45 ############

void FUN_18097ed90(longlong *param_1)

{
  undefined8 *puVar1;
  
  if (param_1 != (longlong *)0x0) {
    puVar1 = (undefined8 *)*param_1;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 181a2ee70 size=23 ############

void Unwind_181a2ee70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 180686270 size=127 ############

void FUN_180686270(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18056b2f0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
  return;
}



############ FUN_ 181a30700 size=26 ############

void Unwind_181a30700(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1a0));
}



############ FUN_ 181a307c0 size=23 ############

void Unwind_181a307c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a307e0 size=26 ############

void Unwind_181a307e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x138));
}



############ FUN_ 181a30850 size=26 ############

void Unwind_181a30850(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a30810 size=23 ############

void Unwind_181a30810(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a30830 size=26 ############

void Unwind_181a30830(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1d8));
}



############ FUN_ 181a30880 size=26 ############

void Unwind_181a30880(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1f0));
}



############ FUN_ 181a308a0 size=26 ############

void Unwind_181a308a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1a8));
}



############ FUN_ 181a30a90 size=23 ############

void Unwind_181a30a90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a30ab0 size=23 ############

void Unwind_181a30ab0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a30ad0 size=23 ############

void Unwind_181a30ad0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a30af0 size=23 ############

void Unwind_181a30af0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a30bc0 size=23 ############

void Unwind_181a30bc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a30be0 size=23 ############

void Unwind_181a30be0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a30d00 size=23 ############

void Unwind_181a30d00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a30d20 size=26 ############

void Unwind_181a30d20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a31000 size=23 ############

void Unwind_181a31000(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 180a45430 size=179 ############

void FUN_180a45430(longlong *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  void *pvVar5;
  longlong lVar6;
  void *_Memory;
  
  plVar4 = (longlong *)param_1[5];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
    return;
  }
  pvVar5 = (void *)*param_1;
  _Memory = pvVar5;
  if ((0xfff < param_1[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180a42800 size=188 ############

void FUN_180a42800(longlong *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  if (param_1 == (longlong *)0x0) {
    return;
  }
  pvVar1 = (void *)param_1[9];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0xb] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[4] = (longlong)license_services::LsRelation::vftable;
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)*param_1;
  pvVar2 = pvVar1;
  if ((0xfff < param_1[3] + 1U) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180a428e0 size=178 ############

void FUN_180a428e0(undefined8 param_1,longlong *param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  void *pvVar5;
  longlong lVar6;
  void *_Memory;
  
  plVar4 = (longlong *)param_2[5];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if ((ulonglong)param_2[3] < 0x10) {
    param_2[2] = 0;
    param_2[3] = 0xf;
    *(undefined1 *)param_2 = 0;
    return;
  }
  pvVar5 = (void *)*param_2;
  _Memory = pvVar5;
  if ((0xfff < param_2[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a31110 size=23 ############

void Unwind_181a31110(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a31130 size=23 ############

void Unwind_181a31130(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a311a0 size=23 ############

void Unwind_181a311a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a311c0 size=23 ############

void Unwind_181a311c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a31260 size=23 ############

void Unwind_181a31260(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a31280 size=23 ############

void Unwind_181a31280(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a15040 size=23 ############

void Unwind_181a15040(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a312e0 size=23 ############

void Unwind_181a312e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a31380 size=23 ############

void Unwind_181a31380(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a313a0 size=23 ############

void Unwind_181a313a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a313c0 size=23 ############

void Unwind_181a313c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a1cf30 size=23 ############

void Unwind_181a1cf30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a314c0 size=23 ############

void Unwind_181a314c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a314f0 size=23 ############

void Unwind_181a314f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a31510 size=23 ############

void Unwind_181a31510(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a315a0 size=26 ############

void Unwind_181a315a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 1805bcdc0 size=127 ############

void FUN_1805bcdc0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18047e3b0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
  return;
}



############ FUN_ 181a31ef0 size=23 ############

void Unwind_181a31ef0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a31f50 size=23 ############

void Unwind_181a31f50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a31f90 size=26 ############

void Unwind_181a31f90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 18080c630 size=766 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18080c630(undefined1 *param_1,longlong param_2,undefined8 *param_3,longlong *param_4,
                  longlong *param_5)

{
  ulonglong uVar1;
  void *pvVar2;
  basic_ostream<char,std::char_traits<char>_> *pbVar3;
  undefined8 *puVar4;
  basic_ostream<char,struct_std::char_traits<char>_> *pbVar5;
  void *pvVar6;
  longlong *plVar7;
  longlong lVar8;
  ulonglong *puVar9;
  longlong lVar10;
  undefined1 auStack_1b8 [32];
  undefined4 local_198;
  ulonglong local_190 [2];
  undefined8 local_180;
  undefined1 *local_178;
  int iStack_16c;
  undefined *local_168;
  undefined **local_160;
  basic_ostream<char,std::char_traits<char>_> local_158 [16];
  longlong *local_148;
  longlong *local_140;
  longlong *local_128;
  ulonglong *local_120;
  int *local_110;
  ulonglong local_f8;
  uint local_f0;
  basic_ios<char,std::char_traits<char>_> local_e0 [104];
  undefined1 local_78 [16];
  longlong *local_68;
  longlong *local_60;
  ulonglong local_58;
  
  local_180 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_1b8;
  local_60 = param_5;
  local_198 = 0;
  local_168 = &DAT_181bb3cc0;
  local_178 = param_1;
  local_68 = param_4;
  std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_e0);
  local_198 = 2;
  std::basic_ostream<char,std::char_traits<char>_>::basic_ostream<char,std::char_traits<char>_>
            ((basic_ostream<char,std::char_traits<char>_> *)&local_168,
             (basic_streambuf<char,std::char_traits<char>_> *)&local_160,false);
  *(undefined ***)((longlong)&local_168 + (longlong)*(int *)(local_168 + 4)) =
       std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  *(int *)((longlong)&iStack_16c + (longlong)*(int *)(local_168 + 4)) =
       *(int *)(local_168 + 4) + -0x88;
  std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
            ((basic_streambuf<char,std::char_traits<char>_> *)&local_160);
  local_160 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  local_f8 = 0;
  local_f0 = 4;
  puVar4 = param_3 + 2;
  if (0xf < (ulonglong)param_3[3]) {
    param_3 = (undefined8 *)*param_3;
  }
  pbVar3 = (basic_ostream<char,std::char_traits<char>_> *)FUN_1805b0d80(&local_168,param_3,*puVar4);
  pbVar3[(longlong)*(int *)(*(longlong *)pbVar3 + 4) + 0x58] =
       (basic_ostream<char,std::char_traits<char>_>)0x20;
  puVar4 = (undefined8 *)std::setw((__int64)local_190);
  (*(code *)*puVar4)(pbVar3 + *(int *)(*(longlong *)pbVar3 + 4),puVar4[1]);
  pbVar5 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                     (pbVar3,*(int *)(param_2 + 8));
  plVar7 = param_5;
  if (0xf < (ulonglong)param_5[3]) {
    plVar7 = (longlong *)*param_5;
  }
  pbVar3 = (basic_ostream<char,std::char_traits<char>_> *)FUN_1805b0d80(pbVar5,plVar7,param_5[2]);
  puVar4 = (undefined8 *)std::setw((__int64)local_78);
  (*(code *)*puVar4)(pbVar3 + *(int *)(*(longlong *)pbVar3 + 4),puVar4[1]);
  pbVar5 = std::basic_ostream<char,std::char_traits<char>_>::operator<<
                     (pbVar3,*(__int64 *)(param_2 + 0x10));
  plVar7 = param_4;
  if (0xf < (ulonglong)param_4[3]) {
    plVar7 = (longlong *)*param_4;
  }
  FUN_1805b0d80(pbVar5,plVar7,param_4[2]);
  *(undefined8 *)(param_1 + 0x10) = 0;
  *(undefined8 *)(param_1 + 0x18) = 0xf;
  *param_1 = 0;
  local_198 = 10;
  if (((local_f0 & 2) == 0) && (uVar1 = *local_120, uVar1 != 0)) {
    lVar8 = *local_140;
    local_190[0] = uVar1;
    puVar9 = &local_f8;
    if (local_f8 <= uVar1) {
      puVar9 = local_190;
    }
    lVar10 = *puVar9 - lVar8;
  }
  else {
    if (((local_f0 & 4) != 0) || (*local_128 == 0)) goto LAB_18080c848;
    lVar8 = *local_148;
    lVar10 = (*local_110 - lVar8) + *local_128;
  }
  FUN_1805a6cb0(param_1,lVar8,lVar10);
LAB_18080c848:
  *(undefined ***)((longlong)&local_168 + (longlong)*(int *)(local_168 + 4)) =
       std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  *(int *)((longlong)&iStack_16c + (longlong)*(int *)(local_168 + 4)) =
       *(int *)(local_168 + 4) + -0x88;
  FUN_1805d0340(&local_160);
  std::basic_ostream<char,std::char_traits<char>_>::~basic_ostream<char,std::char_traits<char>_>
            (local_158);
  std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(local_e0);
  if (0xf < (ulonglong)param_4[3]) {
    pvVar2 = (void *)*param_4;
    pvVar6 = pvVar2;
    if ((0xfff < param_4[3] + 1U) &&
       (pvVar6 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  param_4[2] = 0;
  param_4[3] = 0xf;
  *(undefined1 *)param_4 = 0;
  if ((ulonglong)param_5[3] < 0x10) {
    param_5[2] = 0;
    param_5[3] = 0xf;
    *(undefined1 *)param_5 = 0;
  }
  pvVar2 = (void *)*param_5;
  pvVar6 = pvVar2;
  if ((0xfff < param_5[3] + 1U) &&
     (pvVar6 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 181a32110 size=23 ############

void Unwind_181a32110(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a32130 size=23 ############

void Unwind_181a32130(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a32160 size=23 ############

void Unwind_181a32160(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a32180 size=26 ############

void Unwind_181a32180(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a32250 size=26 ############

void Unwind_181a32250(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a32270 size=26 ############

void Unwind_181a32270(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a32290 size=26 ############

void Unwind_181a32290(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a322b0 size=23 ############

void Unwind_181a322b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a322d0 size=26 ############

void Unwind_181a322d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a323b0 size=23 ############

void Unwind_181a323b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a323d0 size=26 ############

void Unwind_181a323d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a323f0 size=26 ############

void Unwind_181a323f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a32490 size=23 ############

void Unwind_181a32490(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a32500 size=23 ############

void Unwind_181a32500(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a325a0 size=23 ############

void Unwind_181a325a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a1c500 size=23 ############

void Unwind_181a1c500(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a325d0 size=26 ############

void Unwind_181a325d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a1acd0 size=23 ############

void Unwind_181a1acd0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a32790 size=26 ############

void Unwind_181a32790(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a32830 size=26 ############

void Unwind_181a32830(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a32850 size=23 ############

void Unwind_181a32850(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a328e0 size=23 ############

void Unwind_181a328e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a32900 size=23 ############

void Unwind_181a32900(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a329c0 size=26 ############

void Unwind_181a329c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a32f20 size=26 ############

void Unwind_181a32f20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x198));
}



############ FUN_ 181a32ea0 size=26 ############

void Unwind_181a32ea0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x178));
}



############ FUN_ 181a32f00 size=26 ############

void Unwind_181a32f00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x168));
}



############ FUN_ 181a33000 size=23 ############

void Unwind_181a33000(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a330c0 size=23 ############

void Unwind_181a330c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a330e0 size=23 ############

void Unwind_181a330e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a33180 size=26 ############

void Unwind_181a33180(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a33250 size=23 ############

void Unwind_181a33250(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a33310 size=26 ############

void Unwind_181a33310(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a333b0 size=23 ############

void Unwind_181a333b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a333d0 size=23 ############

void Unwind_181a333d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a333f0 size=23 ############

void Unwind_181a333f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a33480 size=26 ############

void Unwind_181a33480(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a334a0 size=26 ############

void Unwind_181a334a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a33500 size=23 ############

void Unwind_181a33500(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a33520 size=23 ############

void Unwind_181a33520(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a33a60 size=23 ############

void Unwind_181a33a60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 180bd2520 size=273 ############

void FUN_180bd2520(undefined8 *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  void *pvVar5;
  void *_Memory;
  longlong lVar6;
  
  lVar6 = param_1[4];
  while (lVar6 != 0) {
    plVar4 = *(longlong **)
              (*(longlong *)(param_1[1] + (lVar6 + param_1[3] + -1 & param_1[2] - 1) * 8) + 8);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar6 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)*plVar4)(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 8))(plVar4);
        }
      }
    }
    plVar4 = param_1 + 4;
    *plVar4 = *plVar4 + -1;
    if (*plVar4 == 0) {
      param_1[3] = 0;
    }
    lVar6 = param_1[4];
  }
  lVar6 = param_1[2];
  while (lVar6 != 0) {
    lVar6 = lVar6 + -1;
    pvVar5 = *(void **)(param_1[1] + lVar6 * 8);
    if (pvVar5 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
  }
  pvVar5 = (void *)param_1[1];
  if (pvVar5 != (void *)0x0) {
    _Memory = pvVar5;
    if ((0xfff < (ulonglong)(param_1[2] << 3)) &&
       (_Memory = *(void **)((longlong)pvVar5 + -8),
       0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  param_1[2] = 0;
  param_1[1] = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 180bc46d0 size=145 ############

void FUN_180bc46d0(undefined8 *param_1)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong *plVar3;
  void *_Memory;
  
  *param_1 = pace::dlc::ThreadLoopBase::vftable;
  uVar1 = param_1[0x10];
  if (uVar1 < 0x10) {
    param_1[0xf] = 0;
    param_1[0x10] = 0xf;
    *(undefined1 *)(param_1 + 0xd) = 0;
    plVar3 = (longlong *)param_1[9];
    if (plVar3 != (longlong *)0x0) {
      (**(code **)(*plVar3 + 0x20))(plVar3,CONCAT71((int7)(uVar1 >> 8),plVar3 != param_1 + 2));
      param_1[9] = 0;
    }
    return;
  }
  pvVar2 = (void *)param_1[0xd];
  _Memory = pvVar2;
  if ((0xfff < uVar1 + 1) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180bd26d0 size=299 ############

void * FUN_180bd26d0(void *param_1,uint param_2)

{
  void *pvVar1;
  void *pvVar2;
  
  if (0xf < *(ulonglong *)((longlong)param_1 + 0x60)) {
    pvVar1 = *(void **)((longlong)param_1 + 0x48);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)((longlong)param_1 + 0x60) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)((longlong)param_1 + 0x58) = 0;
  *(undefined8 *)((longlong)param_1 + 0x60) = 0xf;
  *(undefined1 *)((longlong)param_1 + 0x48) = 0;
  if (0xf < *(ulonglong *)((longlong)param_1 + 0x40)) {
    pvVar1 = *(void **)((longlong)param_1 + 0x28);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)((longlong)param_1 + 0x40) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)((longlong)param_1 + 0x38) = 0;
  *(undefined8 *)((longlong)param_1 + 0x40) = 0xf;
  *(undefined1 *)((longlong)param_1 + 0x28) = 0;
  if (*(ulonglong *)((longlong)param_1 + 0x20) < 0x10) {
    *(undefined8 *)((longlong)param_1 + 0x18) = 0;
    *(undefined8 *)((longlong)param_1 + 0x20) = 0xf;
    *(undefined1 *)((longlong)param_1 + 8) = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = *(void **)((longlong)param_1 + 8);
  pvVar2 = pvVar1;
  if ((0xfff < *(ulonglong *)((longlong)param_1 + 0x20) + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 181a33ea0 size=23 ############

void Unwind_181a33ea0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181136ac0 size=181 ############

void FUN_181136ac0(undefined8 *param_1)

{
  longlong *_Memory;
  longlong lVar1;
  void *pvVar2;
  void *_Memory_00;
  longlong lVar3;
  
  _Memory = (longlong *)*param_1;
  if (_Memory == (longlong *)0x0) {
    FUN_18047c710(param_1 + 1);
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[1]);
  }
  lVar3 = *_Memory;
  if (lVar3 != 0) {
    lVar1 = _Memory[1];
    for (; lVar3 != lVar1; lVar3 = lVar3 + 8) {
      FUN_18047e630(lVar3);
    }
    pvVar2 = (void *)*_Memory;
    _Memory_00 = pvVar2;
    if ((0xfff < (_Memory[2] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
       (_Memory_00 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory_00);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a33edc size=23 ############

void Unwind_181a33edc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a33f05 size=23 ############

void Unwind_181a33f05(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a33f3a size=26 ############

void Unwind_181a33f3a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a33fce size=23 ############

void Unwind_181a33fce(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a34003 size=23 ############

void Unwind_181a34003(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 18047ccf0 size=367 ############

undefined8 *
FUN_18047ccf0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  void *_Memory;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18047de20(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar4 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar3 = plVar4, cVar1 == '\0' && (plVar2 == (longlong *)plVar3[2]))) {
          cVar1 = *(char *)(plVar3[1] + 0x19);
          plVar4 = (longlong *)plVar3[1];
          plVar2 = plVar3;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar4 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar2 = (longlong *)plVar4[1];
          param_3 = plVar4;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      *(undefined ***)((longlong)_Memory + 0x28) = Steinberg::String::vftable;
      if (*(void **)((longlong)_Memory + 0x30) == (void *)0x0) {
        *(undefined ***)((longlong)_Memory + 0x28) = Steinberg::ConstString::vftable;
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
                    /* WARNING: Subroutine does not return */
      free(*(void **)((longlong)_Memory + 0x30));
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18047de20 size=123 ############

void FUN_18047de20(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18047de20(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  *(undefined ***)((longlong)param_2 + 0x28) = Steinberg::String::vftable;
  if (*(void **)((longlong)param_2 + 0x30) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_2 + 0x30));
  }
  *(undefined ***)((longlong)param_2 + 0x28) = Steinberg::ConstString::vftable;
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 18047d5c0 size=390 ############

undefined8 *
FUN_18047d5c0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  void *_Memory;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18047e2c0(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar4 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar3 = plVar4, cVar1 == '\0' && (plVar2 == (longlong *)plVar3[2]))) {
          cVar1 = *(char *)(plVar3[1] + 0x19);
          plVar4 = (longlong *)plVar3[1];
          plVar2 = plVar3;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar4 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar2 = (longlong *)plVar4[1];
          param_3 = plVar4;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      *(undefined ***)((longlong)_Memory + 0x38) = Steinberg::String::vftable;
      if (*(void **)((longlong)_Memory + 0x40) == (void *)0x0) {
        *(undefined ***)((longlong)_Memory + 0x38) = Steinberg::ConstString::vftable;
        *(undefined ***)((longlong)_Memory + 0x20) = Steinberg::String::vftable;
        if (*(void **)((longlong)_Memory + 0x28) == (void *)0x0) {
          *(undefined ***)((longlong)_Memory + 0x20) = Steinberg::ConstString::vftable;
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
                    /* WARNING: Subroutine does not return */
        free(*(void **)((longlong)_Memory + 0x28));
      }
                    /* WARNING: Subroutine does not return */
      free(*(void **)((longlong)_Memory + 0x40));
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18047e2c0 size=146 ############

void FUN_18047e2c0(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18047e2c0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  *(undefined ***)((longlong)param_2 + 0x38) = Steinberg::String::vftable;
  if (*(void **)((longlong)param_2 + 0x40) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_2 + 0x40));
  }
  *(undefined ***)((longlong)param_2 + 0x38) = Steinberg::ConstString::vftable;
  *(undefined ***)((longlong)param_2 + 0x20) = Steinberg::String::vftable;
  if (*(void **)((longlong)param_2 + 0x28) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_2 + 0x28));
  }
  *(undefined ***)((longlong)param_2 + 0x20) = Steinberg::ConstString::vftable;
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a341d8 size=23 ############

void Unwind_181a341d8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181249e30 size=37 ############

void FUN_181249e30(longlong *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*param_1 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 181a343f3 size=26 ############

void Unwind_181a343f3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a34437 size=23 ############

void Unwind_181a34437(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 180489f00 size=358 ############

undefined8 *
FUN_180489f00(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  uint *_Memory_00;
  
  plVar3 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_18048a480(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar3;
    *(longlong **)*param_1 = plVar3;
    *(longlong **)(*param_1 + 0x10) = plVar3;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar4 = plVar5, cVar2 == '\0' && (plVar3 == (longlong *)plVar4[2]))) {
          cVar2 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar3 = plVar4;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar5 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar3 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x20) + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18048a480 size=114 ############

void FUN_18048a480(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18048a480(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180489d80 size=367 ############

undefined8 *
FUN_180489d80(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  uint *_Memory_00;
  
  plVar3 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_18048a3f0(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar3;
    *(longlong **)*param_1 = plVar3;
    *(longlong **)(*param_1 + 0x10) = plVar3;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar4 = plVar5, cVar2 == '\0' && (plVar3 == (longlong *)plVar4[2]))) {
          cVar2 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar3 = plVar4;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar5 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar3 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      FUN_180487600((longlong)_Memory + 0x28);
      _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x20) + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18048a3f0 size=123 ############

void FUN_18048a3f0(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18048a3f0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  FUN_180487600((longlong)param_2 + 0x28);
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180484000 size=38 ############

void FUN_180484000(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 180485a70 size=38 ############

void FUN_180485a70(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x18) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 180473140 size=37 ############

void FUN_180473140(longlong *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*param_1 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 181a34546 size=23 ############

void Unwind_181a34546(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a345ce size=26 ############

void Unwind_181a345ce(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a347ba size=23 ############

void Unwind_181a347ba(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 1804884f0 size=90 ############

void FUN_1804884f0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*param_1 == 0) {
    return;
  }
  FUN_1804896a0(param_1,*param_1,param_1[1]);
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1804896a0 size=89 ############

void FUN_1804896a0(undefined8 param_1,longlong *param_2,longlong *param_3)

{
  uint uVar1;
  uint *_Memory;
  
  do {
    if (param_2 == param_3) {
      return;
    }
    _Memory = (uint *)(*param_2 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    param_2 = param_2 + 1;
  } while( true );
}



############ FUN_ 180488190 size=182 ############

void FUN_180488190(basic_streambuf<char,std::char_traits<char>_> *param_1)

{
  void *pvVar1;
  void *_Memory;
  longlong lVar2;
  
  *(undefined ***)param_1 =
       std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  if (((byte)param_1[0x70] & 1) == 0) {
    **(undefined8 **)(param_1 + 0x18) = 0;
    **(undefined8 **)(param_1 + 0x38) = 0;
    **(undefined4 **)(param_1 + 0x50) = 0;
    **(undefined8 **)(param_1 + 0x20) = 0;
    **(undefined8 **)(param_1 + 0x40) = 0;
    **(undefined4 **)(param_1 + 0x58) = 0;
    *(uint *)(param_1 + 0x70) = *(uint *)(param_1 + 0x70) & 0xfffffffe;
    *(undefined8 *)(param_1 + 0x68) = 0;
                    /* WARNING: Could not recover jumptable at 0x000180488239. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    std::basic_streambuf<char,std::char_traits<char>_>::
    ~basic_streambuf<char,std::char_traits<char>_>(param_1);
    return;
  }
  if (**(longlong **)(param_1 + 0x40) == 0) {
    lVar2 = (longlong)**(int **)(param_1 + 0x50) + **(longlong **)(param_1 + 0x38);
  }
  else {
    lVar2 = (longlong)**(int **)(param_1 + 0x58) + **(longlong **)(param_1 + 0x40);
  }
  pvVar1 = (void *)**(longlong **)(param_1 + 0x18);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(lVar2 - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180485ae0 size=78 ############

void FUN_180485ae0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812472e0 size=125 ############

void FUN_1812472e0(longlong param_1)

{
  uint uVar1;
  undefined8 *_Memory;
  uint *_Memory_00;
  
  if (*(longlong *)(param_1 + 8) != 0) {
    _Memory = *(undefined8 **)(param_1 + 8);
    *(undefined8 *)(param_1 + 8) = *_Memory;
    FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  FUN_18049aca0(param_1 + 0x10);
  _Memory_00 = (uint *)(*(longlong *)(param_1 + 0x18) + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  return;
}



############ FUN_ 18049aca0 size=136 ############

void FUN_18049aca0(longlong *param_1)

{
  uint uVar1;
  longlong *_Memory;
  uint *puVar2;
  
  if (*param_1 == 0) {
    return;
  }
  _Memory = (longlong *)*param_1;
  *param_1 = *_Memory;
  puVar2 = (uint *)(_Memory[2] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(_Memory[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a34897 size=23 ############

void Unwind_181a34897(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a34a35 size=26 ############

void Unwind_181a34a35(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 180484880 size=167 ############

void FUN_180484880(undefined8 *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = PresetDirectory::vftable;
  FUN_180485f00(param_1 + 7);
  puVar2 = (uint *)(param_1[6] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[5] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[4] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  *(undefined4 *)((longlong)param_1 + 0x14) = 0;
                    /* WARNING: Could not recover jumptable at 0x000180484920. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)param_1[1]);
  return;
}



############ FUN_ 181a34b5b size=26 ############

void Unwind_181a34b5b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a34b7b size=26 ############

void Unwind_181a34b7b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 180483920 size=130 ############

void FUN_180483920(longlong *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(param_1[2] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*param_1 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 181a34cbb size=23 ############

void Unwind_181a34cbb(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a34d88 size=23 ############

void Unwind_181a34d88(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a34e91 size=23 ############

void Unwind_181a34e91(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 180486110 size=136 ############

void FUN_180486110(longlong *param_1)

{
  longlong *plVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *_Memory;
  longlong *plVar4;
  
  plVar4 = (longlong *)*param_1;
  if (plVar4 == (longlong *)0x0) {
    return;
  }
  plVar1 = (longlong *)param_1[1];
  for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
    puVar2 = (undefined8 *)*plVar4;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  pvVar3 = (void *)*param_1;
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180486070 size=90 ############

void FUN_180486070(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*param_1 == 0) {
    return;
  }
  FUN_180489640(param_1,*param_1,param_1[1]);
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180489640 size=86 ############

void FUN_180489640(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  void *_Memory;
  
  while( true ) {
    if (param_2 == param_3) {
      return;
    }
    _Memory = (void *)*param_2;
    if (_Memory != (void *)0x0) break;
    param_2 = param_2 + 1;
  }
  FUN_1811e6b70(_Memory);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a34f9d size=26 ############

void Unwind_181a34f9d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 180488ea0 size=90 ############

void FUN_180488ea0(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*param_1 == 0) {
    return;
  }
  FUN_18048c550(*param_1,param_1[1]);
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180489460 size=401 ############

undefined8 *
FUN_180489460(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  void *pvVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  void *_Memory_00;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_180489c30(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar4 = plVar5, cVar1 == '\0' && (plVar2 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar2 = plVar4;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar5 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar1 = *(char *)(plVar5[1] + 0x19);
          plVar2 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      if (0xf < *(ulonglong *)((longlong)_Memory + 0x38)) {
        pvVar3 = *(void **)((longlong)_Memory + 0x20);
        _Memory_00 = pvVar3;
        if ((0xfff < *(ulonglong *)((longlong)_Memory + 0x38) + 1) &&
           (_Memory_00 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      *(undefined8 *)((longlong)_Memory + 0x30) = 0;
      *(undefined8 *)((longlong)_Memory + 0x38) = 0xf;
      *(undefined1 *)((longlong)_Memory + 0x20) = 0;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 181a350e9 size=26 ############

void Unwind_181a350e9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x118));
}



############ FUN_ 181a35145 size=26 ############

void Unwind_181a35145(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 180489730 size=358 ############

undefined8 *
FUN_180489730(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  uint *_Memory_00;
  
  plVar3 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_18048a070(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar3;
    *(longlong **)*param_1 = plVar3;
    *(longlong **)(*param_1 + 0x10) = plVar3;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar4 = plVar5, cVar2 == '\0' && (plVar3 == (longlong *)plVar4[2]))) {
          cVar2 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar3 = plVar4;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar5 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar3 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x20) + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18048a070 size=114 ############

void FUN_18048a070(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18048a070(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180486710 size=242 ############

void FUN_180486710(longlong param_1)

{
  int iVar1;
  void *_Memory;
  longlong *plVar2;
  longlong lVar3;
  int iVar4;
  
  iVar4 = *(int *)(param_1 + 0x14) + -1;
  lVar3 = (longlong)iVar4;
  if (-1 < iVar4) {
    do {
      _Memory = *(void **)(*(longlong *)(param_1 + 8) + lVar3 * 8);
      if (_Memory != (void *)0x0) {
        plVar2 = *(longlong **)((longlong)_Memory + 0x40);
        if (plVar2 != (longlong *)0x0) {
          (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != (longlong *)((longlong)_Memory + 8));
          *(undefined8 *)((longlong)_Memory + 0x40) = 0;
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (-1 < lVar3) {
        if (iVar4 < *(int *)(param_1 + 0x14)) {
          *(undefined8 *)(*(longlong *)(param_1 + 8) + lVar3 * 8) = 0;
        }
        else {
          FUN_18047e060(param_1 + 8,*(int *)(param_1 + 0x14) + 1);
          iVar1 = *(int *)(param_1 + 0x14);
          *(int *)(param_1 + 0x14) = iVar1 + 1;
          *(undefined8 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 8) = 0;
        }
      }
      iVar4 = iVar4 + -1;
      lVar3 = lVar3 + -1;
    } while (-1 < lVar3);
  }
  *(undefined8 *)(param_1 + 0x14) = 0;
                    /* WARNING: Could not recover jumptable at 0x000180486800. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(*(void **)(param_1 + 8));
  return;
}



############ FUN_ 181a35691 size=23 ############

void Unwind_181a35691(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181244540 size=145 ############

void FUN_181244540(longlong *param_1)

{
  uint uVar1;
  char cVar2;
  uint *puVar3;
  int iVar4;
  
  iVar4 = 4;
  do {
    cVar2 = FUN_181244b10(param_1);
    if (cVar2 != '\0') break;
    Sleep(0x32);
    iVar4 = iVar4 + -1;
  } while (-1 < iVar4);
  puVar3 = (uint *)(param_1[1] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(*param_1 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  return;
}



############ FUN_ 181a35cc6 size=23 ############

void Unwind_181a35cc6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a35fc0 size=23 ############

void Unwind_181a35fc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181217e70 size=128 ############

void FUN_181217e70(undefined8 *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::FileInputStream::vftable;
  CloseHandle((HANDLE)param_1[2]);
  puVar2 = (uint *)(param_1[4] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 181a36514 size=23 ############

void Unwind_181a36514(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181218b90 size=48 ############

void FUN_181218b90(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::FileFilter::vftable;
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 18122ea20 size=48 ############

void FUN_18122ea20(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::OutputStream::vftable;
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 181a3664f size=23 ############

void Unwind_181a3664f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a36688 size=23 ############

void Unwind_181a36688(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a366a5 size=23 ############

void Unwind_181a366a5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a366e2 size=23 ############

void Unwind_181a366e2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a36723 size=23 ############

void Unwind_181a36723(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a36854 size=26 ############

void Unwind_181a36854(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a36874 size=23 ############

void Unwind_181a36874(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a368fd size=23 ############

void Unwind_181a368fd(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a369c2 size=23 ############

void Unwind_181a369c2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 18049b770 size=88 ############

void FUN_18049b770(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory !=
        std::
        _Func_impl_no_alloc<class_juce::var_(__cdecl*)(juce::var::NativeFunctionArgs_const&___ptr64),juce::var,juce::var::NativeFunctionArgs_const&___ptr64>
        ::vftable) {
      (*(code *)((undefined **)*_Memory)[4])();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 180496df0 size=82 ############

longlong FUN_180496df0(undefined8 param_1,longlong param_2)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res10 [3];
  
  local_res10[0] = param_2;
  uVar2 = FUN_180496c40(param_1,local_res10);
  FUN_18123a0b0(param_2,uVar2);
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 181232aa0 size=118 ############

longlong * FUN_181232aa0(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *_Memory;
  
  plVar3 = (longlong *)FUN_181232d30(param_2,param_3,param_3,param_4,0xfffffffffffffffe);
  lVar2 = *plVar3;
  *param_1 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181232d30 size=210 ############

longlong * FUN_181232d30(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  longlong lVar2;
  uint uVar3;
  char *pcVar4;
  uint *_Memory;
  longlong lVar5;
  char *local_res8 [4];
  
  pcVar4 = (char *)*param_1;
  if (*pcVar4 == '\0') {
    if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar1 = (int *)(*param_2 + -0x10);
      *piVar1 = *piVar1 + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *param_1;
    *param_1 = *param_2;
    UNLOCK();
    _Memory = (uint *)(lVar2 + -0x10);
    uVar3 = *_Memory;
  }
  else {
    if (param_1 != param_2) {
      lVar2 = *param_2;
      lVar5 = -1;
      do {
        lVar5 = lVar5 + 1;
      } while (*(char *)(lVar2 + lVar5) != '\0');
      FUN_181232e20(param_1,lVar2,lVar5 + lVar2,param_4,0xfffffffffffffffe);
      return param_1;
    }
    if ((*(uint *)(pcVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar4 + -0x10) = *(int *)(pcVar4 + -0x10) + 1;
      UNLOCK();
    }
    local_res8[0] = pcVar4;
    param_1 = (longlong *)FUN_181232d30(param_1,local_res8);
    _Memory = (uint *)(local_res8[0] + -0x10);
    uVar3 = *_Memory;
  }
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181a36a85 size=23 ############

void Unwind_181a36a85(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a36ac6 size=23 ############

void Unwind_181a36ac6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a36b56 size=23 ############

void Unwind_181a36b56(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a36b7f size=23 ############

void Unwind_181a36b7f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a36c83 size=23 ############

void Unwind_181a36c83(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a37088 size=23 ############

void Unwind_181a37088(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a370a5 size=23 ############

void Unwind_181a370a5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a37270 size=23 ############

void Unwind_181a37270(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a373a3 size=23 ############

void Unwind_181a373a3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181217c70 size=122 ############

DWORD FUN_181217c70(longlong param_1,LPCVOID param_2,DWORD param_3)

{
  uint uVar1;
  undefined8 uVar2;
  BOOL BVar3;
  undefined8 *puVar4;
  uint *_Memory;
  DWORD local_res8 [6];
  longlong local_res20;
  
  local_res8[0] = 0;
  if (*(HANDLE *)(param_1 + 0x18) != (HANDLE)0x0) {
    BVar3 = WriteFile(*(HANDLE *)(param_1 + 0x18),param_2,param_3,local_res8,(LPOVERLAPPED)0x0);
    if (BVar3 == 0) {
      puVar4 = (undefined8 *)FUN_1812181b0(&local_res20);
      uVar2 = *(undefined8 *)(param_1 + 0x20);
      *(undefined8 *)(param_1 + 0x20) = *puVar4;
      *puVar4 = uVar2;
      _Memory = (uint *)(local_res20 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    }
  }
  return local_res8[0];
}



############ FUN_ 1812181b0 size=195 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812181b0(longlong param_1)

{
  uint uVar1;
  DWORD dwMessageId;
  uint *_Memory;
  undefined1 auStackY_268 [32];
  longlong local_228 [2];
  WCHAR local_218 [256];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_268;
  local_228[0] = param_1;
  memset(local_218,0,0x200);
  dwMessageId = GetLastError();
  FormatMessageW(0x1200,(LPCVOID)0x0,dwMessageId,0x400,local_218,0xff,(va_list *)0x0);
  FUN_18049c800(local_228,local_218);
  FUN_18123a0b0(param_1,local_228);
  _Memory = (uint *)(local_228[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 181a37654 size=23 ############

void Unwind_181a37654(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 18049afa0 size=91 ############

void FUN_18049afa0(undefined8 *param_1)

{
  uint uVar1;
  longlong *_Memory;
  uint *_Memory_00;
  
  _Memory = (longlong *)*param_1;
  if (_Memory == (longlong *)0x0) {
    return;
  }
  if ((HANDLE)_Memory[1] != (HANDLE)0xffffffffffffffff) {
    FindClose((HANDLE)_Memory[1]);
  }
  _Memory_00 = (uint *)(*_Memory + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a378f8 size=26 ############

void Unwind_181a378f8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb8));
}



############ FUN_ 181a37a0f size=23 ############

void Unwind_181a37a0f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a37adc size=23 ############

void Unwind_181a37adc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a37c44 size=23 ############

void Unwind_181a37c44(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a37c91 size=23 ############

void Unwind_181a37c91(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a37cea size=23 ############

void Unwind_181a37cea(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a37d6b size=26 ############

void Unwind_181a37d6b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a37d8b size=26 ############

void Unwind_181a37d8b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a37ea4 size=26 ############

void Unwind_181a37ea4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a37fa0 size=23 ############

void Unwind_181a37fa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a37fc9 size=23 ############

void Unwind_181a37fc9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 1804af690 size=242 ############

void FUN_1804af690(undefined8 *param_1,undefined8 param_2)

{
  longlong *_Memory;
  
  _Memory = (longlong *)*param_1;
  *param_1 = param_2;
  if (_Memory != (longlong *)0x0) {
    if ((longlong *)*_Memory != (longlong *)0x0) {
      (**(code **)(*(longlong *)*_Memory + 0x10))();
    }
    *_Memory = 0;
    if ((longlong *)_Memory[1] != (longlong *)0x0) {
      (**(code **)(*(longlong *)_Memory[1] + 0x10))();
    }
    _Memory[1] = 0;
    if ((longlong *)_Memory[2] != (longlong *)0x0) {
      (**(code **)(*(longlong *)_Memory[2] + 0x10))();
    }
    _Memory[2] = 0;
    if ((longlong *)_Memory[3] != (longlong *)0x0) {
      (**(code **)(*(longlong *)_Memory[3] + 0x10))();
    }
    _Memory[3] = 0;
    if ((HMODULE)_Memory[5] != (HMODULE)0x0) {
      FreeLibrary((HMODULE)_Memory[5]);
      _Memory[5] = 0;
    }
    if ((HMODULE)_Memory[4] != (HMODULE)0x0) {
      FreeLibrary((HMODULE)_Memory[4]);
      _Memory[4] = 0;
    }
    if ((longlong *)_Memory[3] != (longlong *)0x0) {
      (**(code **)(*(longlong *)_Memory[3] + 0x10))();
    }
    if ((longlong *)_Memory[2] != (longlong *)0x0) {
      (**(code **)(*(longlong *)_Memory[2] + 0x10))();
    }
    if ((longlong *)_Memory[1] != (longlong *)0x0) {
      (**(code **)(*(longlong *)_Memory[1] + 0x10))();
    }
    if ((longlong *)*_Memory != (longlong *)0x0) {
      (**(code **)(*(longlong *)*_Memory + 0x10))();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 181a37ff2 size=23 ############

void Unwind_181a37ff2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3800f size=23 ############

void Unwind_181a3800f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181254ca0 size=146 ############

void FUN_181254ca0(undefined8 *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::Typeface::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 5));
  if ((void *)param_1[4] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[4]);
  }
  puVar2 = (uint *)(param_1[3] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[2] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  return;
}



############ FUN_ 1804a71c0 size=144 ############

void FUN_1804a71c0(longlong param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *_Memory;
  
  pvVar1 = *(void **)(param_1 + 0x18);
  if (pvVar1 == (void *)0x0) {
    puVar2 = *(undefined8 **)(param_1 + 8);
    pvVar1 = (void *)*puVar2;
    *puVar2 = puVar2;
    *(longlong *)(*(longlong *)(param_1 + 8) + 8) = *(longlong *)(param_1 + 8);
    *(undefined8 *)(param_1 + 0x10) = 0;
    if (pvVar1 == *(void **)(param_1 + 8)) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 8));
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)(param_1 + 0x28) - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a380c8 size=23 ############

void Unwind_181a380c8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 1804a7840 size=253 ############

void FUN_1804a7840(longlong *param_1)

{
  int *piVar1;
  void *_Dst;
  uint uVar2;
  longlong *_Memory;
  undefined8 *puVar3;
  uint *_Memory_00;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  
  iVar4 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar4) {
    lVar5 = (longlong)iVar4 * 8;
    lVar6 = lVar5;
    do {
      _Memory = *(longlong **)(lVar5 + *param_1);
      _Dst = (void *)(lVar6 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar4) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (longlong *)0x0) {
        puVar3 = (undefined8 *)_Memory[1];
        if (puVar3 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar3 + 1);
          iVar4 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar4 == 1) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
        _Memory_00 = (uint *)(*_Memory + -0x10);
        if ((*_Memory_00 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar6 = lVar6 + -8;
      lVar5 = lVar5 + -8;
      iVar4 = iVar4 + -1;
    } while (-1 < iVar4);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001804a7936. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1812195f0 size=81 ############

void FUN_1812195f0(undefined8 *param_1)

{
  void *_Memory;
  
  *param_1 = juce::GZIPDecompressorInputStream::vftable;
  _Memory = (void *)param_1[9];
  if (_Memory != (void *)0x0) {
    if (*(char *)((longlong)_Memory + 3) != '\0') {
      FUN_18121bed0((longlong)_Memory + 8);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[8]);
}



############ FUN_ 181a3856a size=23 ############

void Unwind_181a3856a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3859f size=23 ############

void Unwind_181a3859f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 1804ae9d0 size=169 ############

void FUN_1804ae9d0(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        FUN_1804a9d80(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  return;
}



############ FUN_ 181a38752 size=23 ############

void Unwind_181a38752(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a38964 size=23 ############

void Unwind_181a38964(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3899d size=26 ############

void Unwind_181a3899d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a38a91 size=23 ############

void Unwind_181a38a91(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a38c1c size=23 ############

void Unwind_181a38c1c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a38c65 size=23 ############

void Unwind_181a38c65(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 1804d1090 size=96 ############

void FUN_1804d1090(longlong *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(param_1[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*param_1 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 1804d1d40 size=82 ############

void FUN_1804d1d40(undefined8 param_1,longlong *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (param_2 == (longlong *)0x0) {
    return;
  }
  FUN_1812388c0(param_2);
  DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)param_2 + 0x12));
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 1812388c0 size=174 ############

undefined4 FUN_1812388c0(longlong *param_1)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  uint *_Memory;
  
  if (-1 < *(int *)((longlong)param_1 + 0xc)) {
    iVar2 = *(int *)((longlong)param_1 + 0xc);
    LOCK();
    *(undefined4 *)((longlong)param_1 + 0xc) = 0xffffffff;
    UNLOCK();
    if ((iVar2 != -1) || ((char)param_1[2] != '\0')) {
      Ordinal_3();
    }
    EnterCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0x12));
    LOCK();
    *(undefined1 *)(param_1 + 2) = 0;
    UNLOCK();
    LeaveCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 0x12));
  }
  _Memory = (uint *)(*param_1 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = (longlong)&DAT_1821dbf98;
  LOCK();
  lVar3 = param_1[1];
  *(undefined4 *)(param_1 + 1) = 0;
  UNLOCK();
  LOCK();
  *(undefined4 *)((longlong)param_1 + 0xc) = 0xffffffff;
  UNLOCK();
  LOCK();
  *(undefined1 *)((longlong)param_1 + 0x11) = 0;
  UNLOCK();
  return (int)lVar3;
}



############ FUN_ 181a38d5a size=26 ############

void Unwind_181a38d5a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a38da2 size=23 ############

void Unwind_181a38da2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a38e5a size=23 ############

void Unwind_181a38e5a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a38eb5 size=26 ############

void Unwind_181a38eb5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a38f11 size=23 ############

void Unwind_181a38f11(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a38f5a size=23 ############

void Unwind_181a38f5a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a392ac size=23 ############

void Unwind_181a392ac(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 1804dcb00 size=188 ############

void FUN_1804dcb00(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  undefined8 *puVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar2) {
    lVar3 = (longlong)iVar2 * 8;
    lVar4 = lVar3;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar4 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar2) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        puVar1 = *(undefined8 **)((longlong)_Memory + 8);
        if (puVar1 != (undefined8 *)0x0) {
          (**(code **)*puVar1)(puVar1,1);
        }
        FUN_1804874a0(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar4 = lVar4 + -8;
      lVar3 = lVar3 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 181a3938b size=26 ############

void Unwind_181a3938b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 1804db390 size=186 ############

void FUN_1804db390(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        FUN_1804d7190(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001804db443. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1804d7190 size=266 ############

void FUN_1804d7190(longlong *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(param_1[6] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[5] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[4] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[3] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[2] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*param_1 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 18051c930 size=166 ############

void FUN_18051c930(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x88) {
    FUN_1804d80a0(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x88) * 0x88)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1804d80a0 size=272 ############

void FUN_1804d80a0(longlong *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  void *_Memory;
  longlong *plVar5;
  uint *puVar6;
  
  puVar6 = (uint *)(param_1[0xf] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar4 = (undefined8 *)param_1[0xd];
  if (puVar4 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar4 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar4 = (undefined8 *)param_1[0xc];
  if (puVar4 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar4 + 0x17);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar4 = (undefined8 *)param_1[0xb];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  _Memory = (void *)param_1[10];
  if (_Memory != (void *)0x0) {
    puVar4 = *(undefined8 **)((longlong)_Memory + 0x18);
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar3 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
    FUN_18051c930(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  plVar5 = (longlong *)param_1[9];
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x20))(plVar5,plVar5 != param_1 + 2);
    param_1[9] = 0;
  }
  puVar6 = (uint *)(*param_1 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return;
}



############ FUN_ 1804daed0 size=181 ############

void FUN_1804daed0(longlong param_1)

{
  int iVar1;
  void *_Memory;
  int iVar2;
  longlong lVar3;
  
  iVar2 = *(int *)(param_1 + 0x14) + -1;
  lVar3 = (longlong)iVar2;
  if (-1 < iVar2) {
    do {
      _Memory = *(void **)(*(longlong *)(param_1 + 8) + lVar3 * 8);
      if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (-1 < lVar3) {
        if (iVar2 < *(int *)(param_1 + 0x14)) {
          *(undefined8 *)(*(longlong *)(param_1 + 8) + lVar3 * 8) = 0;
        }
        else {
          FUN_18047e060(param_1 + 8,*(int *)(param_1 + 0x14) + 1);
          iVar1 = *(int *)(param_1 + 0x14);
          *(int *)(param_1 + 0x14) = iVar1 + 1;
          *(undefined8 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 8) = 0;
        }
      }
      iVar2 = iVar2 + -1;
      lVar3 = lVar3 + -1;
    } while (-1 < lVar3);
  }
  *(undefined8 *)(param_1 + 0x14) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001804daf83. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(*(void **)(param_1 + 8));
  return;
}



############ FUN_ 181a39afc size=23 ############

void Unwind_181a39afc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a39fd0 size=23 ############

void Unwind_181a39fd0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a39ff9 size=26 ############

void Unwind_181a39ff9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a3a025 size=26 ############

void Unwind_181a3a025(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a3a051 size=26 ############

void Unwind_181a3a051(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a3a07d size=26 ############

void Unwind_181a3a07d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a3a117 size=26 ############

void Unwind_181a3a117(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3a137 size=26 ############

void Unwind_181a3a137(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3a157 size=26 ############

void Unwind_181a3a157(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3a19d size=23 ############

void Unwind_181a3a19d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3a1ba size=23 ############

void Unwind_181a3a1ba(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3a1d7 size=23 ############

void Unwind_181a3a1d7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3a200 size=23 ############

void Unwind_181a3a200(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a3a21d size=23 ############

void Unwind_181a3a21d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3a292 size=26 ############

void Unwind_181a3a292(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a3a346 size=26 ############

void Unwind_181a3a346(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 18049b580 size=152 ############

void FUN_18049b580(longlong *param_1)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *_Memory;
  longlong lVar4;
  int iVar5;
  
  iVar5 = 0;
  if (*(int *)((longlong)param_1 + 0xc) < 1) {
    *(undefined4 *)((longlong)param_1 + 0xc) = 0;
    return;
  }
  lVar4 = 0;
  do {
    lVar2 = *param_1;
    plVar3 = *(longlong **)(lVar2 + 8 + lVar4);
    (**(code **)(*plVar3 + 0xb0))(plVar3,lVar2 + 0x10 + lVar4);
    _Memory = (uint *)(*(longlong *)(lVar2 + lVar4) + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    iVar5 = iVar5 + 1;
    lVar4 = lVar4 + 0x18;
  } while (iVar5 < *(int *)((longlong)param_1 + 0xc));
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
  return;
}



############ FUN_ 1804e9060 size=178 ############

void FUN_1804e9060(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  longlong *_Memory;
  undefined8 *puVar3;
  uint uVar4;
  
  LOCK();
  piVar1 = (int *)(param_1 + 2);
  iVar2 = *piVar1;
  *piVar1 = *piVar1 + -1;
  UNLOCK();
  if (iVar2 != 1) {
    return;
  }
  if (*(char *)(param_1 + 3) != '\0') {
    do {
      LOCK();
      uVar4 = DAT_182673b68 & 1;
      DAT_182673b68 = DAT_182673b68 | 1;
      UNLOCK();
    } while (uVar4 != 0);
    (&DAT_18267aad0)[*(int *)((longlong)param_1 + 0x14)] = 0;
    LOCK();
    DAT_182673b68 = 0;
    UNLOCK();
  }
  if (((HCURSOR)param_1[1] != (HCURSOR)0x0) && (*(char *)(param_1 + 3) == '\0')) {
    DestroyCursor((HCURSOR)param_1[1]);
  }
  _Memory = (longlong *)*param_1;
  if (_Memory != (longlong *)0x0) {
    puVar3 = (undefined8 *)*_Memory;
    if (puVar3 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar3 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 181a3a421 size=26 ############

void Unwind_181a3a421(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a3a44d size=23 ############

void Unwind_181a3a44d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a3a4b9 size=26 ############

void Unwind_181a3a4b9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 181a3a4f1 size=26 ############

void Unwind_181a3a4f1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a3a529 size=26 ############

void Unwind_181a3a529(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x170));
}



############ FUN_ 181a3a56f size=23 ############

void Unwind_181a3a56f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3a58c size=23 ############

void Unwind_181a3a58c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a3a5a9 size=23 ############

void Unwind_181a3a5a9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a3a5d2 size=23 ############

void Unwind_181a3a5d2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1804d1da0 size=141 ############

void FUN_1804d1da0(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_3 * 0x10 + param_2;
    param_1[2] = param_4 * 0x10 + param_2;
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a3a71f size=23 ############

void Unwind_181a3a71f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3a748 size=23 ############

void Unwind_181a3a748(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3a771 size=23 ############

void Unwind_181a3a771(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3a7b2 size=23 ############

void Unwind_181a3a7b2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3a7db size=23 ############

void Unwind_181a3a7db(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3a7f8 size=23 ############

void Unwind_181a3a7f8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3a815 size=23 ############

void Unwind_181a3a815(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3a862 size=23 ############

void Unwind_181a3a862(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3a8c7 size=23 ############

void Unwind_181a3a8c7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3a8fc size=26 ############

void Unwind_181a3a8fc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3a928 size=26 ############

void Unwind_181a3a928(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3aa97 size=23 ############

void Unwind_181a3aa97(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3aac0 size=26 ############

void Unwind_181a3aac0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a3aaec size=26 ############

void Unwind_181a3aaec(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3ab4c size=23 ############

void Unwind_181a3ab4c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3ab75 size=23 ############

void Unwind_181a3ab75(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3ab92 size=23 ############

void Unwind_181a3ab92(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3abaf size=23 ############

void Unwind_181a3abaf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3abcc size=23 ############

void Unwind_181a3abcc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 180508d90 size=38 ############

void FUN_180508d90(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x58) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 181a3acb3 size=23 ############

void Unwind_181a3acb3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 18051a4c0 size=117 ############

void FUN_18051a4c0(longlong *param_1)

{
  int iVar1;
  int *_Memory;
  int iVar2;
  longlong lVar3;
  
  iVar2 = 0;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    lVar3 = 0;
    do {
      _Memory = (int *)(*(longlong *)(lVar3 + *param_1) + -0x10);
      if ((*(uint *)(*(longlong *)(lVar3 + *param_1) + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar1 = *_Memory;
        *_Memory = *_Memory + -1;
        UNLOCK();
        if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      iVar2 = iVar2 + 1;
      lVar3 = lVar3 + 0x10;
    } while (iVar2 < *(int *)((longlong)param_1 + 0xc));
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018051a52e. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 181a3acec size=26 ############

void Unwind_181a3acec(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a3ad0c size=26 ############

void Unwind_181a3ad0c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a3ad78 size=26 ############

void Unwind_181a3ad78(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x140));
}



############ FUN_ 181a3aefc size=23 ############

void Unwind_181a3aefc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181352b00 size=87 ############

void FUN_181352b00(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::UndoManager::vftable;
  _Memory = (uint *)(param_1[0xb] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1805281f0(param_1 + 9);
  *(undefined4 *)((longlong)param_1 + 0x54) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[9]);
}



############ FUN_ 18051b230 size=220 ############

void FUN_18051b230(longlong *param_1)

{
  int *piVar1;
  void *_Dst;
  longlong *_Memory;
  undefined8 *puVar2;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  
  iVar3 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar3) {
    lVar4 = (longlong)iVar3 * 8;
    lVar5 = lVar4;
    do {
      _Memory = *(longlong **)(lVar4 + *param_1);
      _Dst = (void *)(lVar5 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar3) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (longlong *)0x0) {
        FUN_18051a4c0(_Memory + 2);
        puVar2 = (undefined8 *)*_Memory;
        if (puVar2 != (undefined8 *)0x0) {
          LOCK();
          piVar1 = (int *)(puVar2 + 1);
          iVar3 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)*puVar2)(puVar2,1);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar5 = lVar5 + -8;
      lVar4 = lVar4 + -8;
      iVar3 = iVar3 + -1;
    } while (-1 < iVar3);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018051b305. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 181a3b10f size=23 ############

void Unwind_181a3b10f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3b144 size=23 ############

void Unwind_181a3b144(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3b16d size=23 ############

void Unwind_181a3b16d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a3b1be size=23 ############

void Unwind_181a3b1be(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3b1e7 size=23 ############

void Unwind_181a3b1e7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a3b210 size=23 ############

void Unwind_181a3b210(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3b287 size=26 ############

void Unwind_181a3b287(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a3b3a7 size=23 ############

void Unwind_181a3b3a7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3b3f4 size=23 ############

void Unwind_181a3b3f4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3b4f5 size=23 ############

void Unwind_181a3b4f5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3b512 size=23 ############

void Unwind_181a3b512(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3b55f size=23 ############

void Unwind_181a3b55f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3b740 size=23 ############

void Unwind_181a3b740(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3b75d size=23 ############

void Unwind_181a3b75d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3b816 size=26 ############

void Unwind_181a3b816(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3b862 size=23 ############

void Unwind_181a3b862(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3b87f size=23 ############

void Unwind_181a3b87f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3b89c size=26 ############

void Unwind_181a3b89c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a3ba3a size=23 ############

void Unwind_181a3ba3a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3bbe1 size=26 ############

void Unwind_181a3bbe1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a3bc01 size=23 ############

void Unwind_181a3bc01(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3bc76 size=23 ############

void Unwind_181a3bc76(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3bda7 size=26 ############

void Unwind_181a3bda7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x2c0));
}



############ FUN_ 181a3bf70 size=26 ############

void Unwind_181a3bf70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a3bfb9 size=26 ############

void Unwind_181a3bfb9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c8));
}



############ FUN_ 181a3c00e size=26 ############

void Unwind_181a3c00e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a3c0ed size=26 ############

void Unwind_181a3c0ed(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a3c136 size=26 ############

void Unwind_181a3c136(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c8));
}



############ FUN_ 181a3c18b size=26 ############

void Unwind_181a3c18b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a3c302 size=23 ############

void Unwind_181a3c302(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3c348 size=26 ############

void Unwind_181a3c348(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x560));
}



############ FUN_ 181a3c3a9 size=26 ############

void Unwind_181a3c3a9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x560));
}



############ FUN_ 181a3c407 size=23 ############

void Unwind_181a3c407(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3c44a size=23 ############

void Unwind_181a3c44a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3c5ac size=26 ############

void Unwind_181a3c5ac(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x2b8));
}



############ FUN_ 181a3c714 size=26 ############

void Unwind_181a3c714(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x798));
}



############ FUN_ 181a3c74c size=26 ############

void Unwind_181a3c74c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x798));
}



############ FUN_ 181a3c7b4 size=26 ############

void Unwind_181a3c7b4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x268));
}



############ FUN_ 181a3c875 size=26 ############

void Unwind_181a3c875(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a3c895 size=26 ############

void Unwind_181a3c895(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c8));
}



############ FUN_ 181a3c8c1 size=26 ############

void Unwind_181a3c8c1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1c0));
}



############ FUN_ 181a3c949 size=23 ############

void Unwind_181a3c949(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3c9b0 size=26 ############

void Unwind_181a3c9b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb8));
}



############ FUN_ 181a3c9e8 size=23 ############

void Unwind_181a3c9e8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3ca81 size=23 ############

void Unwind_181a3ca81(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a3ca9e size=26 ############

void Unwind_181a3ca9e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x130));
}



############ FUN_ 181a3cb3a size=23 ############

void Unwind_181a3cb3a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3cd92 size=23 ############

void Unwind_181a3cd92(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3cddf size=23 ############

void Unwind_181a3cddf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a3cdfc size=23 ############

void Unwind_181a3cdfc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3ce67 size=23 ############

void Unwind_181a3ce67(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3ce84 size=23 ############

void Unwind_181a3ce84(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3cea1 size=23 ############

void Unwind_181a3cea1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3cebe size=23 ############

void Unwind_181a3cebe(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3cef3 size=23 ############

void Unwind_181a3cef3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a3cf55 size=23 ############

void Unwind_181a3cf55(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3cfca size=23 ############

void Unwind_181a3cfca(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3cff3 size=23 ############

void Unwind_181a3cff3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 18051da50 size=78 ############

void FUN_18051da50(longlong *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar2 = (undefined8 *)*param_1;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 181a3d074 size=26 ############

void Unwind_181a3d074(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3d0b8 size=23 ############

void Unwind_181a3d0b8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a3d0d5 size=23 ############

void Unwind_181a3d0d5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3d0f2 size=26 ############

void Unwind_181a3d0f2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3d112 size=26 ############

void Unwind_181a3d112(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3d132 size=26 ############

void Unwind_181a3d132(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a3d152 size=26 ############

void Unwind_181a3d152(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a3d17e size=26 ############

void Unwind_181a3d17e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3d19e size=26 ############

void Unwind_181a3d19e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x110));
}



############ FUN_ 181a3d1be size=26 ############

void Unwind_181a3d1be(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x110));
}



############ FUN_ 181a3d2ce size=23 ############

void Unwind_181a3d2ce(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a3d34b size=23 ############

void Unwind_181a3d34b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3d43c size=23 ############

void Unwind_181a3d43c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 1812d8f00 size=213 ############

void FUN_1812d8f00(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = juce::TreeView::vftable;
  param_1[0x16] = juce::TreeView::vftable;
  param_1[0x18] = juce::TreeView::vftable;
  param_1[0x19] = juce::TreeView::vftable;
  if (param_1[0x21] != 0) {
    FUN_1812d6630(param_1[0x21],0);
  }
  puVar2 = (undefined8 *)param_1[0x23];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = (undefined8 *)param_1[0x22];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1b));
  puVar2 = (undefined8 *)param_1[0x1a];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(param_1[0x17] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 181a3d689 size=26 ############

void Unwind_181a3d689(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a3d7a2 size=23 ############

void Unwind_181a3d7a2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3d9ad size=23 ############

void Unwind_181a3d9ad(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3d9d6 size=23 ############

void Unwind_181a3d9d6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3d9f3 size=23 ############

void Unwind_181a3d9f3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3deb5 size=23 ############

void Unwind_181a3deb5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3df10 size=23 ############

void Unwind_181a3df10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 18051aec0 size=75 ############

void FUN_18051aec0(undefined8 *param_1)

{
  uint uVar1;
  longlong *_Memory;
  uint *_Memory_00;
  
  _Memory = (longlong *)*param_1;
  if (_Memory == (longlong *)0x0) {
    return;
  }
  _Memory_00 = (uint *)(*_Memory + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a3dfba size=26 ############

void Unwind_181a3dfba(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 1804f34a0 size=96 ############

void FUN_1804f34a0(longlong *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(param_1[8] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*param_1 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 181a3e071 size=23 ############

void Unwind_181a3e071(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e1cd size=23 ############

void Unwind_181a3e1cd(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e202 size=23 ############

void Unwind_181a3e202(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e237 size=23 ############

void Unwind_181a3e237(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a3e2c7 size=26 ############

void Unwind_181a3e2c7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a3e3fe size=23 ############

void Unwind_181a3e3fe(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e592 size=23 ############

void Unwind_181a3e592(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3e5bb size=26 ############

void Unwind_181a3e5bb(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a3e603 size=26 ############

void Unwind_181a3e603(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a3e653 size=23 ############

void Unwind_181a3e653(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e67c size=23 ############

void Unwind_181a3e67c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3e6a5 size=23 ############

void Unwind_181a3e6a5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3e6c2 size=23 ############

void Unwind_181a3e6c2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3e6eb size=23 ############

void Unwind_181a3e6eb(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3e708 size=23 ############

void Unwind_181a3e708(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3e751 size=23 ############

void Unwind_181a3e751(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 18051d990 size=172 ############

void FUN_18051d990(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  if ((param_1[1] != 0) &&
     (puVar3 = *(undefined8 **)(param_1[1] + 0x10), puVar3 != (undefined8 *)0x0)) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if (param_1[0x10] != 0) {
    *(undefined8 *)(param_1[0x10] + 0x10) = 0;
  }
  puVar3 = (undefined8 *)param_1[0x10];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 181a3e833 size=23 ############

void Unwind_181a3e833(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a3e880 size=23 ############

void Unwind_181a3e880(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3e8b5 size=23 ############

void Unwind_181a3e8b5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3e8d2 size=23 ############

void Unwind_181a3e8d2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3e8ef size=26 ############

void Unwind_181a3e8ef(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3e927 size=23 ############

void Unwind_181a3e927(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e9b0 size=23 ############

void Unwind_181a3e9b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a3e9d9 size=23 ############

void Unwind_181a3e9d9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3e9f6 size=23 ############

void Unwind_181a3e9f6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3ea13 size=26 ############

void Unwind_181a3ea13(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a3ea3f size=26 ############

void Unwind_181a3ea3f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a3ea6b size=23 ############

void Unwind_181a3ea6b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3eaac size=26 ############

void Unwind_181a3eaac(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a3eae4 size=26 ############

void Unwind_181a3eae4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf8));
}



############ FUN_ 181a3eb04 size=23 ############

void Unwind_181a3eb04(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a3eb45 size=23 ############

void Unwind_181a3eb45(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3eb7a size=23 ############

void Unwind_181a3eb7a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3ec3f size=23 ############

void Unwind_181a3ec3f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3ec5c size=23 ############

void Unwind_181a3ec5c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3ec79 size=23 ############

void Unwind_181a3ec79(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a3ec96 size=23 ############

void Unwind_181a3ec96(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3ecbf size=26 ############

void Unwind_181a3ecbf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a3ed0f size=26 ############

void Unwind_181a3ed0f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x120));
}



############ FUN_ 181a3ed3b size=23 ############

void Unwind_181a3ed3b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 18050c250 size=227 ############

void FUN_18050c250(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  puVar4 = (undefined8 *)param_1[7];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar5 = (uint *)(param_1[4] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[3] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[2] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[1] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(*param_1 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return;
}



############ FUN_ 181a3ef57 size=26 ############

void Unwind_181a3ef57(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x120));
}



############ FUN_ 181a3efe7 size=23 ############

void Unwind_181a3efe7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a3f15d size=26 ############

void Unwind_181a3f15d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a3f25b size=26 ############

void Unwind_181a3f25b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x108));
}



############ FUN_ 181a3f2a6 size=23 ############

void Unwind_181a3f2a6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3f41a size=23 ############

void Unwind_181a3f41a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a3f520 size=23 ############

void Unwind_181a3f520(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a3f549 size=23 ############

void Unwind_181a3f549(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3f566 size=23 ############

void Unwind_181a3f566(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a3f59b size=23 ############

void Unwind_181a3f59b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3f5b8 size=23 ############

void Unwind_181a3f5b8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a3f5d5 size=23 ############

void Unwind_181a3f5d5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3f5f2 size=23 ############

void Unwind_181a3f5f2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a3f60f size=23 ############

void Unwind_181a3f60f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3f644 size=23 ############

void Unwind_181a3f644(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a3f661 size=23 ############

void Unwind_181a3f661(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181245930 size=136 ############

void FUN_181245930(longlong *param_1)

{
  int *piVar1;
  undefined8 *_Memory;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  if (*param_1 != 0) {
    piVar1 = (int *)(*param_1 + 8);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      _Memory = (undefined8 *)*param_1;
      *param_1 = 0;
      if (_Memory != (undefined8 *)0x0) {
        if ((HANDLE)*_Memory != (HANDLE)0x0) {
          ReleaseMutex((HANDLE)*_Memory);
          CloseHandle((HANDLE)*_Memory);
          *_Memory = 0;
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001812459b1. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  return;
}



############ FUN_ 181218f80 size=580 ############

void FUN_181218f80(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong lVar4;
  void *_Memory;
  undefined8 *puVar5;
  int iVar6;
  uint *_Memory_00;
  longlong lVar7;
  uint uVar8;
  longlong lVar9;
  ulonglong uVar10;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  *param_1 = juce::GZIPCompressorOutputStream::vftable;
  plVar2 = (longlong *)param_1[2];
  plVar3 = (longlong *)param_1[4];
  lVar9 = 0;
  uVar10 = 0;
  cVar1 = *(char *)((longlong)plVar3 + 0x5e);
  while (cVar1 == '\0') {
    if (*(char *)((longlong)plVar3 + 0x5d) != '\0') {
      *plVar3 = lVar9;
      plVar3[2] = (longlong)plVar3 + 0x5f;
      *(int *)(plVar3 + 1) = (int)uVar10;
      *(undefined4 *)(plVar3 + 3) = 0x8000;
      if (*(char *)((longlong)plVar3 + 0x5c) == '\0') {
        iVar6 = FUN_18121ef80(plVar3,4,&DAT_1821de430,param_4,uVar11);
      }
      else {
        uVar8 = *(uint *)(plVar3 + 0xb);
        iVar6 = 0;
        lVar4 = plVar3[5];
        if (lVar4 == 0) {
LAB_1812190a4:
          iVar6 = -2;
        }
        else {
          if (uVar8 == 0xffffffff) {
            uVar8 = 6;
          }
          else if (9 < uVar8) goto LAB_1812190a4;
          lVar7 = (longlong)(int)uVar8;
          if (((&PTR_FUN_1821de438)[(longlong)*(int *)(lVar4 + 0xac) * 2] !=
               (&PTR_FUN_1821de438)[lVar7 * 2]) && (*(int *)((longlong)plVar3 + 0xc) != 0)) {
            iVar6 = FUN_18121ef80(plVar3,1,&DAT_1821de430,param_4,uVar11);
          }
          if (*(uint *)(lVar4 + 0xac) != uVar8) {
            *(uint *)(lVar4 + 0xac) = uVar8;
            *(uint *)(lVar4 + 0xa8) = (uint)*(ushort *)(&DAT_1821de432 + lVar7 * 0x10);
            *(uint *)(lVar4 + 0xb4) = (uint)*(ushort *)(&DAT_1821de430 + lVar7 * 0x10);
            *(uint *)(lVar4 + 0xb8) = (uint)*(ushort *)(&DAT_1821de434 + lVar7 * 0x10);
            *(uint *)(lVar4 + 0xa4) = (uint)*(ushort *)(&DAT_1821de436 + lVar7 * 0x10);
          }
          *(undefined4 *)(lVar4 + 0xb0) = 0;
        }
      }
      *(undefined1 *)((longlong)plVar3 + 0x5c) = 0;
      if (iVar6 != 0) {
        if (iVar6 != 1) goto LAB_1812190fc;
        *(undefined1 *)((longlong)plVar3 + 0x5e) = 1;
      }
      lVar9 = lVar9 + (uVar10 - *(uint *)(plVar3 + 1));
      uVar10 = (ulonglong)*(uint *)(plVar3 + 1);
      if (0 < (longlong)(0x8000 - (ulonglong)*(uint *)(plVar3 + 3))) {
        (**(code **)(*plVar2 + 0x20))(plVar2);
      }
    }
LAB_1812190fc:
    cVar1 = *(char *)((longlong)plVar3 + 0x5e);
  }
  (**(code **)(*(longlong *)param_1[2] + 8))();
  _Memory = (void *)param_1[4];
  if (_Memory != (void *)0x0) {
    if (*(char *)((longlong)_Memory + 0x5d) != '\0') {
      FUN_18121eea0(_Memory);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  if (*(char *)(param_1 + 3) == '\0') {
    param_1[2] = 0;
  }
  else {
    puVar5 = (undefined8 *)param_1[2];
    param_1[2] = 0;
    if (puVar5 == (undefined8 *)0x0) goto LAB_18121917d;
    (**(code **)*puVar5)(puVar5,1);
  }
  puVar5 = (undefined8 *)param_1[2];
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1);
  }
LAB_18121917d:
  *param_1 = juce::OutputStream::vftable;
  _Memory_00 = (uint *)(param_1[1] + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  return;
}



############ FUN_ 181a3f6e8 size=26 ############

void Unwind_181a3f6e8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a3f750 size=26 ############

void Unwind_181a3f750(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x150));
}



############ FUN_ 181a3f7e6 size=23 ############

void Unwind_181a3f7e6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3f8cf size=23 ############

void Unwind_181a3f8cf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3f8f8 size=23 ############

void Unwind_181a3f8f8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3f951 size=23 ############

void Unwind_181a3f951(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a3f9ec size=26 ############

void Unwind_181a3f9ec(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a3fa0c size=26 ############

void Unwind_181a3fa0c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 1804951e0 size=30 ############

void FUN_1804951e0(uint *param_1)

{
  uint uVar1;
  
  if ((*param_1 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *param_1;
    *param_1 = *param_1 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(param_1);
      return;
    }
  }
  return;
}



############ FUN_ 1804a2290 size=317 ############

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

void FUN_1804a2290(longlong param_1,int param_2,undefined8 param_3,undefined8 param_4)

{
  uint *puVar1;
  uint uVar2;
  undefined8 *puVar3;
  bool bVar4;
  uint *local_res8;
  
  FUN_180493780(&local_res8,param_1 + 0x10,param_3,param_4,0xfffffffffffffffe);
  puVar3 = (undefined8 *)(param_1 + 0x188);
  FUN_1804abb60(puVar3);
  if (*(int *)(param_1 + 400) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar3);
  }
  *(undefined4 *)(param_1 + 400) = 0;
  if (0 < param_2) {
    FUN_1804ab9f0(puVar3);
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  do {
    LOCK();
    uVar2 = *local_res8;
    *local_res8 = *local_res8 | 1;
    UNLOCK();
  } while ((uVar2 & 1) != 0);
  puVar1 = local_res8 + 0x57;
  *puVar1 = *puVar1 - 1;
  if (*puVar1 == 0) {
    local_res8[0x58] = 0;
    local_res8[0x59] = 0;
    FUN_181215c10(local_res8 + 2);
    FUN_181215c10(local_res8 + 0x2c);
  }
  LOCK();
  *local_res8 = 0;
  UNLOCK();
  return;
}



############ FUN_ 1804a2b00 size=125 ############

void FUN_1804a2b00(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  puVar4 = (undefined8 *)param_1[3];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar5 = (uint *)(param_1[1] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(*param_1 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return;
}



############ FUN_ 180529380 size=106 ############

void FUN_180529380(longlong param_1)

{
  uint uVar1;
  uint *puVar2;
  
  FUN_1804854f0(param_1 + 0x30);
  puVar2 = (uint *)(*(longlong *)(param_1 + 0x20) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*(longlong *)(param_1 + 8) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 1804854f0 size=523 ############

void FUN_1804854f0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  void *pvVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  uint *puVar5;
  void *pvVar6;
  longlong *plVar7;
  
  FUN_1811e1f10(param_1 + 0x1c,param_1[0x1b],param_3,param_4,0xfffffffffffffffe);
  puVar5 = (uint *)(param_1[0x1c] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  param_1[0x19] = ConfigOption::vftable;
  FUN_1811e1f10(param_1 + 0x18,param_1[0x17]);
  puVar5 = (uint *)(param_1[0x18] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  param_1[0x15] = ConfigOption::vftable;
  if (param_1[0x12] != 0) {
    FUN_180489640(puVar5,param_1[0x12],param_1[0x13]);
    pvVar2 = (void *)param_1[0x12];
    pvVar6 = pvVar2;
    if ((0xfff < (param_1[0x14] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
       (pvVar6 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  puVar5 = (uint *)(param_1[0x10] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[0xd] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  plVar7 = (longlong *)param_1[9];
  if (plVar7 != (longlong *)0x0) {
    plVar3 = (longlong *)param_1[10];
    for (; plVar7 != plVar3; plVar7 = plVar7 + 1) {
      puVar4 = (undefined8 *)*plVar7;
      if (puVar4 != (undefined8 *)0x0) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
    pvVar2 = (void *)param_1[9];
    pvVar6 = pvVar2;
    if ((0xfff < (param_1[0xb] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
       (pvVar6 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  FUN_1804884f0(param_1 + 6);
  puVar4 = (undefined8 *)param_1[3];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  param_1[1] = ProcessorStateManagerOptionListener::vftable;
  *param_1 = ConfigOptionListener::vftable;
  return;
}



############ FUN_ 181a40694 size=26 ############

void Unwind_181a40694(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a406b4 size=26 ############

void Unwind_181a406b4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a406e0 size=23 ############

void Unwind_181a406e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a40721 size=23 ############

void Unwind_181a40721(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a4074a size=23 ############

void Unwind_181a4074a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a40773 size=23 ############

void Unwind_181a40773(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a4079c size=23 ############

void Unwind_181a4079c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a409ca size=23 ############

void Unwind_181a409ca(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a409e7 size=23 ############

void Unwind_181a409e7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a40a14 size=23 ############

void Unwind_181a40a14(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a40a31 size=23 ############

void Unwind_181a40a31(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a40a5e size=23 ############

void Unwind_181a40a5e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1813aeac0 size=92 ############

void FUN_1813aeac0(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = juce::AudioFormatWriter::vftable;
  puVar2 = (undefined8 *)param_1[9];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(param_1[10] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x0001813aeb15. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)param_1[4]);
  return;
}



############ FUN_ 181a40ad6 size=26 ############

void Unwind_181a40ad6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a40b02 size=23 ############

void Unwind_181a40b02(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a40cd3 size=26 ############

void Unwind_181a40cd3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a40d13 size=23 ############

void Unwind_181a40d13(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a40d70 size=23 ############

void Unwind_181a40d70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a40d8d size=23 ############

void Unwind_181a40d8d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a40daa size=23 ############

void Unwind_181a40daa(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a40dd7 size=23 ############

void Unwind_181a40dd7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a40e04 size=23 ############

void Unwind_181a40e04(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a40e21 size=26 ############

void Unwind_181a40e21(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a40e7c size=26 ############

void Unwind_181a40e7c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 180556130 size=119 ############

void FUN_180556130(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  
  if (param_2 != (undefined8 *)0x0) {
    *param_2 = juce::MidiOutput::vftable;
    FUN_18122afa0(param_2,5000,param_3,param_4,0xfffffffffffffffe);
    puVar1 = (undefined8 *)param_2[0x42];
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
    DeleteCriticalSection((LPCRITICAL_SECTION)(param_2 + 0x43));
    FUN_1804d1090(param_2 + 0x40);
    FUN_18122b690(param_2);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 181a40ed1 size=23 ############

void Unwind_181a40ed1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a40f55 size=23 ############

void Unwind_181a40f55(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a40fe3 size=23 ############

void Unwind_181a40fe3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a41126 size=26 ############

void Unwind_181a41126(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 400));
}



############ FUN_ 181a412c6 size=26 ############

void Unwind_181a412c6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a413c7 size=23 ############

void Unwind_181a413c7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a413e4 size=23 ############

void Unwind_181a413e4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a414bc size=23 ############

void Unwind_181a414bc(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a414e5 size=26 ############

void Unwind_181a414e5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a41511 size=23 ############

void Unwind_181a41511(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a41546 size=23 ############

void Unwind_181a41546(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a41563 size=23 ############

void Unwind_181a41563(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a41598 size=23 ############

void Unwind_181a41598(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a415b5 size=23 ############

void Unwind_181a415b5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a416c5 size=23 ############

void Unwind_181a416c5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a416ee size=23 ############

void Unwind_181a416ee(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a41b9b size=23 ############

void Unwind_181a41b9b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a41d0e size=23 ############

void Unwind_181a41d0e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a41df6 size=23 ############

void Unwind_181a41df6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a41ee8 size=23 ############

void Unwind_181a41ee8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a41fad size=23 ############

void Unwind_181a41fad(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a420a9 size=23 ############

void Unwind_181a420a9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a421a5 size=23 ############

void Unwind_181a421a5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a422a1 size=23 ############

void Unwind_181a422a1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a42370 size=23 ############

void Unwind_181a42370(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a4245b size=23 ############

void Unwind_181a4245b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a4251e size=23 ############

void Unwind_181a4251e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a4261d size=23 ############

void Unwind_181a4261d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a4271c size=23 ############

void Unwind_181a4271c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a427e4 size=23 ############

void Unwind_181a427e4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a42827 size=26 ############

void Unwind_181a42827(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 180569ed0 size=160 ############

void FUN_180569ed0(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x70) {
    FUN_180569ed0(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x70) * 0x70)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a428a7 size=26 ############

void Unwind_181a428a7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a428c7 size=26 ############

void Unwind_181a428c7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a428e7 size=26 ############

void Unwind_181a428e7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a42913 size=26 ############

void Unwind_181a42913(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a42933 size=26 ############

void Unwind_181a42933(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a42953 size=26 ############

void Unwind_181a42953(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 180568a50 size=87 ############

void FUN_180568a50(longlong *param_1)

{
  longlong lVar1;
  undefined1 local_res8 [8];
  
  lVar1 = *param_1;
  if (lVar1 != 0) {
    FUN_18055eb10(lVar1 + 0x48);
    *(undefined ***)(lVar1 + 0x40) = ConfigOption::vftable;
    FUN_18056a760(lVar1 + 0x30,local_res8,**(undefined8 **)(lVar1 + 0x30),
                  *(undefined8 **)(lVar1 + 0x30));
                    /* WARNING: Subroutine does not return */
    free(*(void **)(lVar1 + 0x30));
  }
  return;
}



############ FUN_ 180568d20 size=180 ############

void FUN_180568d20(longlong param_1)

{
  void *pvVar1;
  longlong *plVar2;
  
  FUN_18163b780(param_1 + 0xe8);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb4));
  pvVar1 = *(void **)(param_1 + 0x78);
  if (pvVar1 != (void *)0x0) {
    FUN_18056afc0(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  FUN_180569c20(param_1 + 0x70);
  pvVar1 = *(void **)(param_1 + 0x68);
  if (pvVar1 != (void *)0x0) {
    FUN_18163bcd0(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  plVar2 = *(longlong **)(param_1 + 0x60);
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != (longlong *)(param_1 + 0x28));
    *(undefined8 *)(param_1 + 0x60) = 0;
  }
  *(undefined ***)(param_1 + 0x20) = ConfigOption::vftable;
  *(undefined ***)(param_1 + 8) = juce::Timer::vftable;
  FUN_1812a7720();
  return;
}



############ FUN_ 180569c20 size=186 ############

void FUN_180569c20(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *_Memory;
  longlong *plVar2;
  uint *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  _Memory = (longlong *)*param_1;
  if (_Memory == (longlong *)0x0) {
    return;
  }
  plVar2 = (longlong *)FUN_1805989c0();
  if (*plVar2 != 0) {
    FUN_1816398a0(*plVar2,_Memory[9],0,param_4,uVar4);
  }
  puVar3 = (uint *)(_Memory[9] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(_Memory[8] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  plVar2 = (longlong *)_Memory[7];
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != _Memory);
    _Memory[7] = 0;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18056ae10 size=88 ############

void FUN_18056ae10(void *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  
  FUN_1811e1f10((longlong)param_1 + 0x10,*(undefined8 *)((longlong)param_1 + 8),param_3,param_4,
                0xfffffffffffffffe);
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x10) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18056afc0 size=216 ############

void FUN_18056afc0(longlong param_1)

{
  char cVar1;
  longlong lVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined1 local_res8 [8];
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  lVar2 = *(longlong *)(param_1 + 0x60);
  if (lVar2 != 0) {
    puVar3 = *(undefined8 **)(param_1 + 0x50);
    puVar4 = (undefined8 *)*puVar3;
    while (puVar4 != puVar3) {
      (**(code **)(lVar2 + 0x10))(1,puVar4 + 5);
      (**(code **)(lVar2 + 0x10))((longlong)(puVar4[7] - puVar4[6]) >> 2,puVar4[6]);
      puVar5 = (undefined8 *)puVar4[2];
      if (*(char *)((longlong)puVar5 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)*puVar5 + 0x19);
        puVar4 = puVar5;
        puVar5 = (undefined8 *)*puVar5;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)*puVar5 + 0x19);
          puVar4 = puVar5;
          puVar5 = (undefined8 *)*puVar5;
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar6 = (undefined8 *)puVar4[1];
        puVar5 = puVar4;
        while ((puVar4 = puVar6, cVar1 == '\0' && (puVar5 == (undefined8 *)puVar4[2]))) {
          cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
          puVar6 = (undefined8 *)puVar4[1];
          puVar5 = puVar4;
        }
      }
    }
  }
  FUN_18056b150(param_1 + 0x50,local_res8,**(undefined8 **)(param_1 + 0x50),
                *(undefined8 **)(param_1 + 0x50),uVar7);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x50));
}



############ FUN_ 180569d10 size=109 ############

void FUN_180569d10(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x18) * 0x18)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18056b150 size=388 ############

undefined8 *
FUN_18056b150(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  void *pvVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  void *_Memory_00;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18056b560(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar4 = plVar5, cVar1 == '\0' && (plVar2 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar2 = plVar4;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar5 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar1 = *(char *)(plVar5[1] + 0x19);
          plVar2 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      pvVar3 = *(void **)((longlong)_Memory + 0x30);
      if (pvVar3 != (void *)0x0) {
        _Memory_00 = pvVar3;
        if ((0xfff < (*(longlong *)((longlong)_Memory + 0x40) - (longlong)pvVar3 &
                     0xfffffffffffffffcU)) &&
           (_Memory_00 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18056b350 size=104 ############

void FUN_18056b350(undefined8 param_1,longlong param_2)

{
  undefined1 local_res10 [8];
  
  if (*(char *)(param_2 + 0x19) == '\0') {
    FUN_18056b350(param_1,*(undefined8 *)(param_2 + 0x10));
    FUN_18056e1d0(param_2 + 0x28,local_res10,**(undefined8 **)(param_2 + 0x28),
                  *(undefined8 **)(param_2 + 0x28));
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_2 + 0x28));
  }
  return;
}



############ FUN_ 18056b3e0 size=85 ############

void FUN_18056b3e0(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18056b3e0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    FUN_18056d800((longlong)param_2 + 0x20);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 18056b560 size=156 ############

void FUN_18056b560(undefined8 param_1,void *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18056b560(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  pvVar1 = *(void **)((longlong)param_2 + 0x30);
  if (pvVar1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)((longlong)param_2 + 0x40) - (longlong)pvVar1 & 0xfffffffffffffffcU))
     && (_Memory = *(void **)((longlong)pvVar1 + -8),
        0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18056b620 size=85 ############

void FUN_18056b620(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18056b620(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    FUN_18052fa60((longlong)param_2 + 0x28);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 18056d800 size=139 ############

void FUN_18056d800(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *(longlong *)(param_1 + 8);
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18056b2f0(param_1 + 8,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*(longlong *)(param_1 + 8) + 8) = lVar1;
  **(longlong **)(param_1 + 8) = lVar1;
  *(longlong *)(*(longlong *)(param_1 + 8) + 0x10) = lVar1;
  *(undefined8 *)(param_1 + 0x10) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 8));
}



############ FUN_ 18056e1d0 size=361 ############

undefined8 *
FUN_18056e1d0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  longlong *plVar3;
  longlong *plVar4;
  void *_Memory;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18056e350(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar4 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar3 = plVar4, cVar1 == '\0' && (plVar2 == (longlong *)plVar3[2]))) {
          cVar1 = *(char *)(plVar3[1] + 0x19);
          plVar4 = (longlong *)plVar3[1];
          plVar2 = plVar3;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar4 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar2 = (longlong *)plVar4[1];
          param_3 = plVar4;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      plVar2 = *(longlong **)((longlong)_Memory + 0x60);
      if (plVar2 != (longlong *)0x0) {
        (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != (longlong *)((longlong)_Memory + 0x28));
        *(undefined8 *)((longlong)_Memory + 0x60) = 0;
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18056e350 size=121 ############

void FUN_18056e350(undefined8 param_1,void *param_2)

{
  longlong *plVar1;
  
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_18056e350(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    plVar1 = *(longlong **)((longlong)param_2 + 0x60);
    if (plVar1 != (longlong *)0x0) {
      (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_2 + 0x28));
      *(undefined8 *)((longlong)param_2 + 0x60) = 0;
    }
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 1805968f0 size=282 ############

void FUN_1805968f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int iVar1;
  void *_Memory;
  char cVar2;
  
  if (*(longlong *)(param_1 + 0x300) != 0) {
    LOCK();
    *(undefined1 *)(param_1 + 0x2fb) = 1;
    UNLOCK();
    if (0 < *(int *)(param_1 + 0x344)) {
      cVar2 = FUN_18122a6e0(*(undefined8 *)(param_1 + 0x300),param_1 + 8,param_3,param_4,
                            0xfffffffffffffffe);
      if ((cVar2 == '\0') && (*(longlong *)(param_1 + 0x300) != 0)) {
        FUN_18122a750(*(longlong *)(param_1 + 0x300),param_1 + 8,0);
      }
      iVar1 = *(int *)(param_1 + 0x344);
      while (iVar1 != 0) {
        Sleep(0x14);
        iVar1 = *(int *)(param_1 + 0x344);
      }
    }
    FUN_18122ac30(param_1 + 8);
    LOCK();
    *(undefined4 *)(param_1 + 0x3f8) = 1;
    UNLOCK();
    FUN_181215c10(param_1 + 0x350);
    if (*(longlong *)(param_1 + 0x300) != 0) {
      FUN_181215c10(param_1 + 0x250);
      FUN_18122a430(*(undefined8 *)(param_1 + 0x300),param_1 + 8);
    }
    _Memory = *(void **)(param_1 + 0x300);
    *(undefined8 *)(param_1 + 0x300) = 0;
    if (_Memory != (void *)0x0) {
      FUN_18122aa90(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  LOCK();
  *(undefined1 *)(param_1 + 0x2f9) = 0;
  UNLOCK();
  return;
}



############ FUN_ 18056a070 size=88 ############

void FUN_18056a070(undefined8 param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  undefined8 uVar2;
  
  if (param_2 == (longlong *)0x0) {
    return;
  }
  uVar2 = 0xfffffffffffffffe;
  if ((longlong *)param_2[7] == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(*(longlong *)param_2[7] + 0x10))();
  plVar1 = (longlong *)param_2[7];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_2,param_3,param_4,uVar2);
    param_2[7] = 0;
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a42bb2 size=26 ############

void Unwind_181a42bb2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a42bf1 size=26 ############

void Unwind_181a42bf1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 180560070 size=65 ############

void FUN_180560070(longlong param_1)

{
  undefined1 local_res8 [8];
  
  FUN_18056ab10(param_1 + 0x178,local_res8,**(undefined8 **)(param_1 + 0x178),
                *(undefined8 **)(param_1 + 0x178));
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x178));
}



############ FUN_ 18056ab10 size=372 ############

undefined8 *
FUN_18056ab10(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  uint *_Memory_00;
  
  plVar3 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_18056b440(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar3;
    *(longlong **)*param_1 = plVar3;
    *(longlong **)(*param_1 + 0x10) = plVar3;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar4 = plVar5, cVar2 == '\0' && (plVar3 == (longlong *)plVar4[2]))) {
          cVar2 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar3 = plVar4;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar5 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar3 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      if (*(longlong *)((longlong)_Memory + 0x28) != 0) {
        FUN_18056e160();
      }
      _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x20) + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18056ac90 size=375 ############

undefined8 *
FUN_18056ac90(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  char cVar1;
  longlong *plVar2;
  void *_Memory;
  undefined8 *puVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory_00;
  
  plVar2 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar2) && (param_4 == plVar2)) {
    FUN_18056b4d0(param_1,plVar2[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar2;
    *(longlong **)*param_1 = plVar2;
    *(longlong **)(*param_1 + 0x10) = plVar2;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar2 = param_3;
        while ((plVar4 = plVar5, cVar1 == '\0' && (plVar2 == (longlong *)plVar4[2]))) {
          cVar1 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar2 = plVar4;
        }
      }
      plVar2 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar2 + 0x19) == '\0') {
        plVar2 = (longlong *)*plVar2;
        cVar1 = *(char *)((longlong)plVar2 + 0x19);
        while (cVar1 == '\0') {
          plVar2 = (longlong *)*plVar2;
          cVar1 = *(char *)((longlong)plVar2 + 0x19);
        }
      }
      else {
        cVar1 = *(char *)(param_3[1] + 0x19);
        plVar2 = (longlong *)param_3[1];
        while ((plVar5 = plVar2, cVar1 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar1 = *(char *)(plVar5[1] + 0x19);
          plVar2 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory_00 = (void *)FUN_18047db40(param_1);
      _Memory = *(void **)((longlong)_Memory_00 + 0x28);
      if (_Memory == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory_00);
      }
      DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)_Memory + 0x1c));
      puVar3 = *(undefined8 **)((longlong)_Memory + 8);
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18056b440 size=128 ############

void FUN_18056b440(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18056b440(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  if (*(longlong *)((longlong)param_2 + 0x28) != 0) {
    FUN_18056e160();
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 18056b4d0 size=130 ############

void FUN_18056b4d0(undefined8 param_1,void *param_2)

{
  void *_Memory;
  undefined8 *puVar1;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18056b4d0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  _Memory = *(void **)((longlong)param_2 + 0x28);
  if (_Memory != (void *)0x0) {
    DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)_Memory + 0x1c));
    puVar1 = *(undefined8 **)((longlong)_Memory + 8);
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 18056e160 size=94 ############

void FUN_18056e160(undefined8 param_1,void *param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  if (param_2 == (void *)0x0) {
    return;
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)param_2 + 0x1c));
  puVar2 = *(undefined8 **)((longlong)param_2 + 0x10);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a42e2e size=26 ############

void Unwind_181a42e2e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a42e66 size=26 ############

void Unwind_181a42e66(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a42eb6 size=26 ############

void Unwind_181a42eb6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 180560220 size=88 ############

void FUN_180560220(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory !=
        std::_Func_impl_no_alloc<<lambda_99aa98cd872dabd5dd39a68b1b63ec97>,void,float,float>::
        vftable) {
      (*(code *)((undefined **)*_Memory)[4])();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 180560290 size=88 ############

void FUN_180560290(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory !=
        std::
        _Func_impl_no_alloc<<lambda_f85ef9bb7ea3f450557796afc1fb2e89>,void,float,float,float,float>
        ::vftable) {
      (*(code *)((undefined **)*_Memory)[4])();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 181a430bb size=26 ############

void Unwind_181a430bb(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd8));
}



############ FUN_ 181a43217 size=26 ############

void Unwind_181a43217(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a432ab size=23 ############

void Unwind_181a432ab(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a432d4 size=23 ############

void Unwind_181a432d4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a432fd size=23 ############

void Unwind_181a432fd(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 180575920 size=85 ############

void FUN_180575920(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::SetupDynamicCryptoWhiteboxInput::vftable;
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a435c6 size=26 ############

void Unwind_181a435c6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a435e6 size=23 ############

void Unwind_181a435e6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a43603 size=23 ############

void Unwind_181a43603(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a4370c size=26 ############

void Unwind_181a4370c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a4372c size=26 ############

void Unwind_181a4372c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a4374c size=26 ############

void Unwind_181a4374c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a43838 size=26 ############

void Unwind_181a43838(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a43864 size=26 ############

void Unwind_181a43864(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a4389c size=26 ############

void Unwind_181a4389c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a43988 size=26 ############

void Unwind_181a43988(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a439a8 size=26 ############

void Unwind_181a439a8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a439d4 size=26 ############

void Unwind_181a439d4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a439f4 size=26 ############

void Unwind_181a439f4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a43a20 size=23 ############

void Unwind_181a43a20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1804df860 size=95 ############

void FUN_1804df860(undefined8 param_1,void *param_2)

{
  undefined8 *puVar1;
  
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_1804df860(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    puVar1 = *(undefined8 **)((longlong)param_2 + 0x28);
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 1805785b0 size=63 ############

void FUN_1805785b0(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0xd0) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 181a43c13 size=23 ############

void Unwind_181a43c13(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a43c48 size=26 ############

void Unwind_181a43c48(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a43c68 size=26 ############

void Unwind_181a43c68(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a43c88 size=26 ############

void Unwind_181a43c88(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a43ca8 size=26 ############

void Unwind_181a43ca8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a43d04 size=23 ############

void Unwind_181a43d04(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a43d21 size=26 ############

void Unwind_181a43d21(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a43d41 size=26 ############

void Unwind_181a43d41(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a43e27 size=23 ############

void Unwind_181a43e27(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 180578420 size=63 ############

void FUN_180578420(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x338) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1812e2030(param_1);
  return;
}



############ FUN_ 181a4427c size=23 ############

void Unwind_181a4427c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a442a5 size=23 ############

void Unwind_181a442a5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a442ce size=23 ############

void Unwind_181a442ce(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181315cb0 size=606 ############

void FUN_181315cb0(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  *param_1 = juce::LookAndFeel::vftable;
  param_1[1] = juce::LookAndFeel::vftable;
  param_1[2] = juce::LookAndFeel::vftable;
  param_1[3] = juce::LookAndFeel::vftable;
  param_1[4] = juce::LookAndFeel::vftable;
  param_1[5] = juce::LookAndFeel::vftable;
  param_1[6] = juce::LookAndFeel::vftable;
  param_1[7] = juce::LookAndFeel::vftable;
  param_1[8] = juce::LookAndFeel::vftable;
  param_1[9] = juce::LookAndFeel::vftable;
  param_1[10] = juce::LookAndFeel::vftable;
  param_1[0xb] = juce::LookAndFeel::vftable;
  param_1[0xc] = juce::LookAndFeel::vftable;
  param_1[0xd] = juce::LookAndFeel::vftable;
  param_1[0xe] = juce::LookAndFeel::vftable;
  param_1[0xf] = juce::LookAndFeel::vftable;
  param_1[0x10] = juce::LookAndFeel::vftable;
  param_1[0x11] = juce::LookAndFeel::vftable;
  param_1[0x12] = juce::LookAndFeel::vftable;
  param_1[0x13] = juce::LookAndFeel::vftable;
  param_1[0x14] = juce::LookAndFeel::vftable;
  param_1[0x15] = juce::LookAndFeel::vftable;
  param_1[0x16] = juce::LookAndFeel::vftable;
  param_1[0x17] = juce::LookAndFeel::vftable;
  param_1[0x18] = juce::LookAndFeel::vftable;
  param_1[0x19] = juce::LookAndFeel::vftable;
  param_1[0x1a] = juce::LookAndFeel::vftable;
  param_1[0x1b] = juce::LookAndFeel::vftable;
  param_1[0x1c] = juce::LookAndFeel::vftable;
  if (param_1[0x24] != 0) {
    *(undefined8 *)(param_1[0x24] + 0x10) = 0;
  }
  puVar4 = (undefined8 *)param_1[0x24];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar4 = (undefined8 *)param_1[0x22];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar5 = (uint *)(param_1[0x21] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[0x20] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[0x1f] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  *(undefined4 *)((longlong)param_1 + 0xf4) = 0;
                    /* WARNING: Could not recover jumptable at 0x000181315f07. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)param_1[0x1d]);
  return;
}



############ FUN_ 181a44535 size=23 ############

void Unwind_181a44535(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 18056e0d0 size=139 ############

void FUN_18056e0d0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  FUN_1811e1f10(param_1 + 0xe8,*(undefined8 *)(param_1 + 0xe0),param_3,param_4,0xfffffffffffffffe);
  _Memory = (uint *)(*(longlong *)(param_1 + 0xe8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar2 = *(undefined8 **)(param_1 + 0xd0);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  *(undefined ***)(param_1 + 200) = ConfigOptionListener::vftable;
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 180577e60 size=99 ############

void FUN_180577e60(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  FUN_180560070(param_1 + 0x3e);
  _Memory = (uint *)(param_1[0x3c] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::ToggleButton::vftable;
  param_1[0x16] = juce::ToggleButton::vftable;
  FUN_181337760(param_1);
  return;
}



############ FUN_ 181a44989 size=26 ############

void Unwind_181a44989(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x148));
}



############ FUN_ 181a44a92 size=26 ############

void Unwind_181a44a92(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a44b2c size=23 ############

void Unwind_181a44b2c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44b61 size=23 ############

void Unwind_181a44b61(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44b7e size=23 ############

void Unwind_181a44b7e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44bb3 size=23 ############

void Unwind_181a44bb3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44bd0 size=23 ############

void Unwind_181a44bd0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44c05 size=23 ############

void Unwind_181a44c05(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44c22 size=23 ############

void Unwind_181a44c22(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44c57 size=23 ############

void Unwind_181a44c57(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44c74 size=23 ############

void Unwind_181a44c74(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a44d8f size=26 ############

void Unwind_181a44d8f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 1805772c0 size=82 ############

void FUN_1805772c0(longlong param_1)

{
  FUN_1805792b0(param_1 + 0x130);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x130));
}



############ FUN_ 181a44e10 size=26 ############

void Unwind_181a44e10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x240));
}



############ FUN_ 181a44eb4 size=23 ############

void Unwind_181a44eb4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a45108 size=23 ############

void Unwind_181a45108(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a45131 size=23 ############

void Unwind_181a45131(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a4515a size=23 ############

void Unwind_181a4515a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a45183 size=23 ############

void Unwind_181a45183(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a451a0 size=23 ############

void Unwind_181a451a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a451e6 size=26 ############

void Unwind_181a451e6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a45238 size=26 ############

void Unwind_181a45238(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 1805775e0 size=92 ############

void FUN_1805775e0(longlong param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(longlong *)(param_1 + 8) == 0) {
    return;
  }
  FUN_180579ac0(param_1,*(longlong *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10));
  pvVar1 = *(void **)(param_1 + 8);
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)(param_1 + 0x18) - (longlong)pvVar1 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180579ac0 size=90 ############

void FUN_180579ac0(undefined8 param_1,longlong param_2,longlong param_3)

{
  uint uVar1;
  uint *_Memory;
  
  do {
    if (param_2 == param_3) {
      return;
    }
    _Memory = (uint *)(*(longlong *)(param_2 + 8) + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    param_2 = param_2 + 0x20;
  } while( true );
}



############ FUN_ 1805798f0 size=104 ############

void FUN_1805798f0(undefined8 param_1,void *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (param_2 == (void *)0x0) {
    return;
  }
  if (*(longlong *)((longlong)param_2 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  FUN_180579ac0(param_1,*(longlong *)((longlong)param_2 + 8),
                *(undefined8 *)((longlong)param_2 + 0x10));
  pvVar1 = *(void **)((longlong)param_2 + 8);
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)((longlong)param_2 + 0x18) - (longlong)pvVar1 & 0xffffffffffffffe0U))
     && (_Memory = *(void **)((longlong)pvVar1 + -8),
        0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a45330 size=23 ############

void Unwind_181a45330(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a4535d size=23 ############

void Unwind_181a4535d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a45396 size=23 ############

void Unwind_181a45396(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 180579890 size=85 ############

void FUN_180579890(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_180579890(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
    FUN_1804d1090((longlong)param_2 + 0x20);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 180579020 size=187 ############

void FUN_180579020(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x60) {
    if (*(longlong *)(lVar3 + 0x50) != 0) {
      FUN_1805798f0();
    }
    FUN_1812472e0(lVar3 + 0x18);
    FUN_180569d10(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x60) * 0x60)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805790f0 size=164 ############

void FUN_1805790f0(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x30) {
    FUN_1812472e0(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x30) * 0x30)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a45562 size=26 ############

void Unwind_181a45562(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 180578f30 size=109 ############

void FUN_180578f30(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x14) * 0x14)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a458aa size=26 ############

void Unwind_181a458aa(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a4598e size=26 ############

void Unwind_181a4598e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a45a90 size=23 ############

void Unwind_181a45a90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a45aad size=23 ############

void Unwind_181a45aad(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a45aca size=23 ############

void Unwind_181a45aca(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a45ae7 size=23 ############

void Unwind_181a45ae7(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a45b2a size=23 ############

void Unwind_181a45b2a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a45b47 size=23 ############

void Unwind_181a45b47(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a45c73 size=26 ############

void Unwind_181a45c73(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a45c93 size=26 ############

void Unwind_181a45c93(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a45cb3 size=26 ############

void Unwind_181a45cb3(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a45cf2 size=23 ############

void Unwind_181a45cf2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a45d0f size=23 ############

void Unwind_181a45d0f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a45d2c size=23 ############

void Unwind_181a45d2c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 180578a40 size=117 ############

void FUN_180578a40(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x3b0) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134a530(param_1 + 0x1f8);
  FUN_18134caa0(param_1 + 0x138);
  FUN_180578c40(param_1 + 0x120);
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x120));
}



############ FUN_ 181a45ea4 size=23 ############

void Unwind_181a45ea4(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a45ff2 size=26 ############

void Unwind_181a45ff2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x140));
}



############ FUN_ 181a4616a size=23 ############

void Unwind_181a4616a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a46187 size=23 ############

void Unwind_181a46187(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a461e9 size=26 ############

void Unwind_181a461e9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a4634b size=23 ############

void Unwind_181a4634b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a46368 size=23 ############

void Unwind_181a46368(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a4639d size=26 ############

void Unwind_181a4639d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 181a463c9 size=23 ############

void Unwind_181a463c9(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 180581080 size=102 ############

void FUN_180581080(undefined8 *param_1)

{
  longlong *plVar1;
  undefined8 *_Memory;
  
  plVar1 = (longlong *)param_1[0xd];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 6);
    param_1[0xd] = 0;
  }
  _Memory = (undefined8 *)param_1[5];
  if (_Memory != (undefined8 *)0x0) {
    *(undefined1 *)*_Memory = *(undefined1 *)(_Memory + 1);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  return;
}



############ FUN_ 181a46778 size=23 ############

void Unwind_181a46778(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a467f2 size=26 ############

void Unwind_181a467f2(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x120));
}



############ FUN_ 181a4682a size=26 ############

void Unwind_181a4682a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x128));
}



############ FUN_ 181a46875 size=23 ############

void Unwind_181a46875(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 1805801b0 size=188 ############

void FUN_1805801b0(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  uint *_Memory;
  
  puVar2 = (undefined8 *)param_1[0x4e];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = (undefined8 *)param_1[0x4d];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_18047cfb0(param_1 + 0x4a);
  plVar3 = (longlong *)param_1[0x48];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_1 + 0x41);
    param_1[0x48] = 0;
  }
  _Memory = (uint *)(param_1[0x3d] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::TextButton::vftable;
  param_1[0x16] = juce::TextButton::vftable;
  FUN_181337760(param_1);
  return;
}



############ FUN_ 181a468ef size=23 ############

void Unwind_181a468ef(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a4690c size=26 ############

void Unwind_181a4690c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a4692c size=26 ############

void Unwind_181a4692c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a46b5d size=26 ############

void Unwind_181a46b5d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a46b7d size=26 ############

void Unwind_181a46b7d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a46bc1 size=26 ############

void Unwind_181a46bc1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd8));
}



############ FUN_ 181a46be1 size=26 ############

void Unwind_181a46be1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 180580b20 size=88 ############

void FUN_180580b20(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory !=
        std::
        _Func_impl_no_alloc<<lambda_949ca8162c3daffb2b8da99efc6ea4f4>,bool,ParameterFloat*___ptr64,float>
        ::vftable) {
      (*(code *)((undefined **)*_Memory)[4])();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 180584ab0 size=358 ############

undefined8 *
FUN_180584ab0(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  longlong *plVar4;
  longlong *plVar5;
  void *_Memory;
  uint *_Memory_00;
  
  plVar3 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_180584cb0(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar3;
    *(longlong **)*param_1 = plVar3;
    *(longlong **)(*param_1 + 0x10) = plVar3;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar4 = plVar5, cVar2 == '\0' && (plVar3 == (longlong *)plVar4[2]))) {
          cVar2 = *(char *)(plVar4[1] + 0x19);
          plVar5 = (longlong *)plVar4[1];
          plVar3 = plVar4;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar5 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar3 = (longlong *)plVar5[1];
          param_3 = plVar5;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x20) + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 180584cb0 size=114 ############

void FUN_180584cb0(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_180584cb0(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a47037 size=23 ############

void Unwind_181a47037(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 1805826a0 size=233 ############

void FUN_1805826a0(longlong param_1)

{
  int iVar1;
  longlong *_Memory;
  int *_Memory_00;
  int iVar2;
  longlong lVar3;
  
  iVar2 = *(int *)(param_1 + 0x14) + -1;
  lVar3 = (longlong)iVar2;
  if (-1 < iVar2) {
    do {
      _Memory = *(longlong **)(*(longlong *)(param_1 + 8) + lVar3 * 8);
      if (_Memory != (longlong *)0x0) {
        _Memory_00 = (int *)(*_Memory + -0x10);
        if ((*(uint *)(*_Memory + -0x10) & 0x30000000) == 0) {
          LOCK();
          iVar2 = *_Memory_00;
          *_Memory_00 = *_Memory_00 + -1;
          UNLOCK();
          if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (-1 < lVar3) {
        if (iVar2 < *(int *)(param_1 + 0x14)) {
          *(undefined8 *)(*(longlong *)(param_1 + 8) + lVar3 * 8) = 0;
        }
        else {
          FUN_18047e060(param_1 + 8,*(int *)(param_1 + 0x14) + 1);
          iVar1 = *(int *)(param_1 + 0x14);
          *(int *)(param_1 + 0x14) = iVar1 + 1;
          *(undefined8 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 8) = 0;
        }
      }
      iVar2 = iVar2 + -1;
      lVar3 = lVar3 + -1;
    } while (-1 < lVar3);
  }
  *(undefined8 *)(param_1 + 0x14) = 0;
                    /* WARNING: Could not recover jumptable at 0x000180582787. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(*(void **)(param_1 + 8));
  return;
}



############ FUN_ 18047c440 size=181 ############

void FUN_18047c440(longlong param_1)

{
  int iVar1;
  void *_Memory;
  int iVar2;
  longlong lVar3;
  
  iVar2 = *(int *)(param_1 + 0x14) + -1;
  lVar3 = (longlong)iVar2;
  if (-1 < iVar2) {
    do {
      _Memory = *(void **)(*(longlong *)(param_1 + 8) + lVar3 * 8);
      if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      if (-1 < lVar3) {
        if (iVar2 < *(int *)(param_1 + 0x14)) {
          *(undefined8 *)(*(longlong *)(param_1 + 8) + lVar3 * 8) = 0;
        }
        else {
          FUN_18047e060(param_1 + 8,*(int *)(param_1 + 0x14) + 1);
          iVar1 = *(int *)(param_1 + 0x14);
          *(int *)(param_1 + 0x14) = iVar1 + 1;
          *(undefined8 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 8) = 0;
        }
      }
      iVar2 = iVar2 + -1;
      lVar3 = lVar3 + -1;
    } while (-1 < lVar3);
  }
  *(undefined8 *)(param_1 + 0x14) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018047c4f3. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free(*(void **)(param_1 + 8));
  return;
}



############ FUN_ 1805805a0 size=126 ############

void FUN_1805805a0(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 8) {
    FUN_1805841a0(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805841a0 size=108 ############

void FUN_1805841a0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *_Memory;
  longlong *plVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  _Memory = (void *)*param_1;
  if (_Memory == (void *)0x0) {
    return;
  }
  if (*(longlong **)((longlong)_Memory + 0x48) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(**(longlong **)((longlong)_Memory + 0x48) + 0x10))();
  plVar1 = *(longlong **)((longlong)_Memory + 0x48);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))
              (plVar1,plVar1 != (longlong *)((longlong)_Memory + 0x10),param_3,param_4,uVar2);
    *(undefined8 *)((longlong)_Memory + 0x48) = 0;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a4728c size=23 ############

void Unwind_181a4728c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a472b5 size=23 ############

void Unwind_181a472b5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a47344 size=26 ############

void Unwind_181a47344(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf8));
}



############ FUN_ 181a473ff size=23 ############

void Unwind_181a473ff(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a4744c size=23 ############

void Unwind_181a4744c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 180568840 size=186 ############

void FUN_180568840(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        FUN_1811e6b70(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001805688f3. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 181a47cdf size=23 ############

void Unwind_181a47cdf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a47d08 size=23 ############

void Unwind_181a47d08(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a47e43 size=26 ############

void Unwind_181a47e43(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a47ebf size=26 ############

void Unwind_181a47ebf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a47edf size=26 ############

void Unwind_181a47edf(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x198));
}



############ FUN_ 181a47f0b size=26 ############

void Unwind_181a47f0b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x198));
}



############ FUN_ 181a47f37 size=23 ############

void Unwind_181a47f37(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a48063 size=23 ############

void Unwind_181a48063(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a4808c size=23 ############

void Unwind_181a4808c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a480b5 size=26 ############

void Unwind_181a480b5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a4830f size=23 ############

void Unwind_181a4830f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a48338 size=23 ############

void Unwind_181a48338(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a48379 size=23 ############

void Unwind_181a48379(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a48396 size=23 ############

void Unwind_181a48396(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a4847f size=26 ############

void Unwind_181a4847f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x218));
}



############ FUN_ 181a4849f size=26 ############

void Unwind_181a4849f(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1d0));
}



############ FUN_ 181a48500 size=26 ############

void Unwind_181a48500(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a48520 size=26 ############

void Unwind_181a48520(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a48540 size=26 ############

void Unwind_181a48540(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 18058f1e0 size=90 ############

void FUN_18058f1e0(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (param_2 == (void *)0x0) {
    return;
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x370) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined ***)((longlong)param_2 + 0x360) = ProcessorStateManagerOptionListener::vftable;
  FUN_1814f8f50(param_2);
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a48930 size=26 ############

void Unwind_181a48930(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a48a78 size=23 ############

void Unwind_181a48a78(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a48a95 size=26 ############

void Unwind_181a48a95(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a48ab5 size=26 ############

void Unwind_181a48ab5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xc0));
}



############ FUN_ 181a48ad5 size=26 ############

void Unwind_181a48ad5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a48b21 size=26 ############

void Unwind_181a48b21(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x240));
}



############ FUN_ 181a48c4a size=23 ############

void Unwind_181a48c4a(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a48c67 size=23 ############

void Unwind_181a48c67(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a48cd6 size=23 ############

void Unwind_181a48cd6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a48d5d size=26 ############

void Unwind_181a48d5d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a48da6 size=26 ############

void Unwind_181a48da6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a48def size=26 ############

void Unwind_181a48def(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a48e38 size=26 ############

void Unwind_181a48e38(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a49043 size=23 ############

void Unwind_181a49043(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a49060 size=23 ############

void Unwind_181a49060(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a49195 size=26 ############

void Unwind_181a49195(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a491b5 size=26 ############

void Unwind_181a491b5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a491d5 size=23 ############

void Unwind_181a491d5(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a4929c size=23 ############

void Unwind_181a4929c(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a492d1 size=23 ############

void Unwind_181a492d1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a49306 size=23 ############

void Unwind_181a49306(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a4933b size=26 ############

void Unwind_181a4933b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a4935b size=23 ############

void Unwind_181a4935b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a49668 size=26 ############

void Unwind_181a49668(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a49688 size=26 ############

void Unwind_181a49688(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a496a8 size=23 ############

void Unwind_181a496a8(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a496f1 size=23 ############

void Unwind_181a496f1(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a4970e size=23 ############

void Unwind_181a4970e(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a4972b size=26 ############

void Unwind_181a4972b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a4974b size=26 ############

void Unwind_181a4974b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a4976b size=26 ############

void Unwind_181a4976b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a4978b size=26 ############

void Unwind_181a4978b(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a497ab size=26 ############

void Unwind_181a497ab(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a498d6 size=23 ############

void Unwind_181a498d6(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 18059f370 size=377 ############

undefined8 *
FUN_18059f370(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  uint uVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  longlong *plVar6;
  void *_Memory;
  uint *_Memory_00;
  
  plVar3 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_18059f590(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar3;
    *(longlong **)*param_1 = plVar3;
    *(longlong **)(*param_1 + 0x10) = plVar3;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar6 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar5 = plVar6, cVar2 == '\0' && (plVar3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar6 = (longlong *)plVar5[1];
          plVar3 = plVar5;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar6 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar6[2]))) {
          cVar2 = *(char *)(plVar6[1] + 0x19);
          plVar3 = (longlong *)plVar6[1];
          param_3 = plVar6;
        }
      }
      _Memory = (void *)FUN_18047db40(param_1);
      puVar4 = *(undefined8 **)((longlong)_Memory + 0x28);
      if (puVar4 != (undefined8 *)0x0) {
        (**(code **)*puVar4)(puVar4,1);
      }
      _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x20) + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18059f590 size=133 ############

void FUN_18059f590(undefined8 param_1,void *param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18059f590(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  puVar2 = *(undefined8 **)((longlong)param_2 + 0x28);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a49c60 size=23 ############

void Unwind_181a49c60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a49c95 size=26 ############

void Unwind_181a49c95(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a49d21 size=26 ############

void Unwind_181a49d21(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a49d4d size=26 ############

void Unwind_181a49d4d(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 181a49d79 size=26 ############

void Unwind_181a49d79(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 18047e510 size=252 ############

void FUN_18047e510(longlong param_1,undefined8 param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  
  lVar2 = (*(ulonglong *)(param_1 + 0x30) &
          (((((((((ulonglong)*(byte *)(param_3 + 2) ^ 0xcbf29ce484222325) * 0x100000001b3 ^
                (ulonglong)*(byte *)((longlong)param_3 + 0x11)) * 0x100000001b3 ^
               (ulonglong)*(byte *)((longlong)param_3 + 0x12)) * 0x100000001b3 ^
              (ulonglong)*(byte *)((longlong)param_3 + 0x13)) * 0x100000001b3 ^
             (ulonglong)*(byte *)((longlong)param_3 + 0x14)) * 0x100000001b3 ^
            (ulonglong)*(byte *)((longlong)param_3 + 0x15)) * 0x100000001b3 ^
           (ulonglong)*(byte *)((longlong)param_3 + 0x16)) * 0x100000001b3 ^
          (ulonglong)*(byte *)((longlong)param_3 + 0x17)) * 0x100000001b3) * 0x10;
  plVar1 = (longlong *)(*(longlong *)(param_1 + 0x18) + lVar2);
  if ((longlong *)plVar1[1] == param_3) {
    if ((longlong *)*plVar1 == param_3) {
      *plVar1 = *(longlong *)(param_1 + 8);
      *(undefined8 *)(lVar2 + 8 + *(longlong *)(param_1 + 0x18)) = *(undefined8 *)(param_1 + 8);
    }
    else {
      plVar1[1] = param_3[1];
    }
  }
  else if ((longlong *)*plVar1 == param_3) {
    *plVar1 = *param_3;
  }
  *(longlong *)param_3[1] = *param_3;
  *(longlong *)(*param_3 + 8) = param_3[1];
  *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
  FUN_18047cfb0(param_3 + 3);
                    /* WARNING: Subroutine does not return */
  free(param_3);
}



############ FUN_ 1804815c0 size=78 ############

void FUN_1804815c0(longlong *param_1)

{
  undefined8 *puVar1;
  undefined1 local_res8 [8];
  
  puVar1 = (undefined8 *)*param_1;
  if (puVar1 != (undefined8 *)param_1[1]) {
    FUN_18047d5c0(puVar1,local_res8,*(undefined8 *)*puVar1,(undefined8 *)*puVar1);
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  return;
}



############ FUN_ 180481620 size=78 ############

void FUN_180481620(longlong *param_1)

{
  undefined8 *puVar1;
  undefined1 local_res8 [8];
  
  puVar1 = (undefined8 *)*param_1;
  if (puVar1 != (undefined8 *)param_1[1]) {
    FUN_18047ccf0(puVar1,local_res8,*(undefined8 *)*puVar1,(undefined8 *)*puVar1);
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  return;
}



############ FUN_ 18047d820 size=68 ############

void FUN_18047d820(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 local_res8;
  
  if (param_2 != param_3) {
    local_res8 = param_1;
    FUN_18047d5c0(param_2,&local_res8,*(undefined8 *)*param_2,(undefined8 *)*param_2);
                    /* WARNING: Subroutine does not return */
    free((void *)*param_2);
  }
  return;
}



############ FUN_ 18047d770 size=68 ############

void FUN_18047d770(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 local_res8;
  
  if (param_2 != param_3) {
    local_res8 = param_1;
    FUN_18047ccf0(param_2,&local_res8,*(undefined8 *)*param_2,(undefined8 *)*param_2);
                    /* WARNING: Subroutine does not return */
    free((void *)*param_2);
  }
  return;
}



############ FUN_ 1812a79e0 size=276 ############

void FUN_1812a79e0(void)

{
  undefined8 *puVar1;
  ushort *_Memory;
  longlong *_Memory_00;
  
  DAT_182678e90 = DAT_182678e90 + -1;
  if (DAT_182678e90 == 0) {
    FUN_1812a6c10();
    _Memory_00 = DAT_1826736d0;
    if (DAT_1826736d0 != (longlong *)0x0) {
      puVar1 = (undefined8 *)*DAT_1826736d0;
      *DAT_1826736d0 = 0;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
      EnterCriticalSection((LPCRITICAL_SECTION)&DAT_182673aa8);
      puVar1 = DAT_182673ad8;
      DAT_182673ad8 = (undefined8 *)0x0;
      if (puVar1 != (undefined8 *)0x0) {
        DAT_1826736b0 = 0;
        FUN_1804d1990(puVar1 + 7);
        DeleteCriticalSection((LPCRITICAL_SECTION)(puVar1 + 1));
        _Memory = (ushort *)*puVar1;
        if (_Memory != (ushort *)0x0) {
          DestroyWindow(*(HWND *)(_Memory + 4));
          UnregisterClassW((LPCWSTR)(ulonglong)*_Memory,(HINSTANCE)0x0);
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
      LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_182673aa8);
      OleUninitialize();
      DAT_1826736d0 = (longlong *)0x0;
      puVar1 = (undefined8 *)*_Memory_00;
      if (puVar1 != (undefined8 *)0x0) {
        (**(code **)*puVar1)(puVar1,1);
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
    DAT_1826736d0 = (longlong *)0x0;
  }
  return;
}



############ FUN_ 181a15070 size=23 ############

void Unwind_181a15070(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a14f70 size=23 ############

void Unwind_181a14f70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a14f90 size=26 ############

void Unwind_181a14f90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 181a14f20 size=23 ############

void Unwind_181a14f20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a14de0 size=26 ############

void Unwind_181a14de0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a14d90 size=23 ############

void Unwind_181a14d90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 180490d50 size=65 ############

void FUN_180490d50(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180490d00 size=74 ############

void FUN_180490d00(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  FUN_180487600((longlong)param_2 + 0x28);
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 18048dee0 size=97 ############

void FUN_18048dee0(longlong param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(*(longlong *)(param_1 + 0x10) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*(longlong *)(param_1 + 8) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 18048ed30 size=126 ############

void FUN_18048ed30(longlong param_1)

{
  void *_Memory;
  undefined8 uVar1;
  undefined8 uVar2;
  int iVar3;
  
  _Memory = *(void **)(param_1 + 0x20);
  if (_Memory != (void *)0x0) {
    FUN_18048dee0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  uVar1 = *(undefined8 *)(param_1 + 8);
  uVar2 = *(undefined8 *)(param_1 + 0x10);
  iVar3 = _Mtx_unlock(uVar2);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  _Mtx_destroy(uVar2);
  _Cnd_destroy(uVar1);
  return;
}



############ FUN_ 181a15c00 size=23 ############

void Unwind_181a15c00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a15be0 size=23 ############

void Unwind_181a15be0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a15bc0 size=23 ############

void Unwind_181a15bc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a15b50 size=26 ############

void Unwind_181a15b50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a15b20 size=26 ############

void Unwind_181a15b20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a15a70 size=26 ############

void Unwind_181a15a70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 180490b30 size=104 ############

void FUN_180490b30(longlong param_1)

{
  undefined8 uVar1;
  undefined8 uVar2;
  int iVar3;
  
  if (*(void **)(param_1 + 0x20) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x20));
  }
  uVar1 = *(undefined8 *)(param_1 + 8);
  uVar2 = *(undefined8 *)(param_1 + 0x10);
  iVar3 = _Mtx_unlock(uVar2);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  _Mtx_destroy(uVar2);
  _Cnd_destroy(uVar1);
  return;
}



############ FUN_ 181a15930 size=23 ############

void Unwind_181a15930(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 18048da90 size=104 ############

void FUN_18048da90(longlong param_1)

{
  undefined8 uVar1;
  undefined8 uVar2;
  int iVar3;
  
  if (*(void **)(param_1 + 0x20) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x20));
  }
  uVar1 = *(undefined8 *)(param_1 + 8);
  uVar2 = *(undefined8 *)(param_1 + 0x10);
  iVar3 = _Mtx_unlock(uVar2);
  if (iVar3 != 0) {
    std::_Throw_C_error(iVar3);
  }
  _Mtx_destroy(uVar2);
  _Cnd_destroy(uVar1);
  return;
}



############ FUN_ 181a16210 size=23 ############

void Unwind_181a16210(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a16180 size=23 ############

void Unwind_181a16180(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a16140 size=23 ############

void Unwind_181a16140(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a16090 size=23 ############

void Unwind_181a16090(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a15fa0 size=23 ############

void Unwind_181a15fa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 1804cf170 size=242 ############

void FUN_1804cf170(longlong param_1,undefined8 param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  
  lVar2 = (*(ulonglong *)(param_1 + 0x30) &
          (((((((((ulonglong)*(byte *)(param_3 + 2) ^ 0xcbf29ce484222325) * 0x100000001b3 ^
                (ulonglong)*(byte *)((longlong)param_3 + 0x11)) * 0x100000001b3 ^
               (ulonglong)*(byte *)((longlong)param_3 + 0x12)) * 0x100000001b3 ^
              (ulonglong)*(byte *)((longlong)param_3 + 0x13)) * 0x100000001b3 ^
             (ulonglong)*(byte *)((longlong)param_3 + 0x14)) * 0x100000001b3 ^
            (ulonglong)*(byte *)((longlong)param_3 + 0x15)) * 0x100000001b3 ^
           (ulonglong)*(byte *)((longlong)param_3 + 0x16)) * 0x100000001b3 ^
          (ulonglong)*(byte *)((longlong)param_3 + 0x17)) * 0x100000001b3) * 0x10;
  plVar1 = (longlong *)(*(longlong *)(param_1 + 0x18) + lVar2);
  if ((longlong *)plVar1[1] == param_3) {
    if ((longlong *)*plVar1 == param_3) {
      *plVar1 = *(longlong *)(param_1 + 8);
      *(undefined8 *)(lVar2 + 8 + *(longlong *)(param_1 + 0x18)) = *(undefined8 *)(param_1 + 8);
    }
    else {
      plVar1[1] = param_3[1];
    }
  }
  else if ((longlong *)*plVar1 == param_3) {
    *plVar1 = *param_3;
  }
  *(longlong *)param_3[1] = *param_3;
  *(longlong *)(*param_3 + 8) = param_3[1];
  *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
                    /* WARNING: Subroutine does not return */
  free(param_3);
}



############ FUN_ 1804cf060 size=194 ############

void FUN_1804cf060(longlong param_1,undefined8 param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong lVar2;
  
  lVar2 = (*(ulonglong *)(param_1 + 0x30) &
          (((((ulonglong)*(byte *)(param_3 + 2) ^ 0xcbf29ce484222325) * 0x100000001b3 ^
            (ulonglong)*(byte *)((longlong)param_3 + 0x11)) * 0x100000001b3 ^
           (ulonglong)*(byte *)((longlong)param_3 + 0x12)) * 0x100000001b3 ^
          (ulonglong)*(byte *)((longlong)param_3 + 0x13)) * 0x100000001b3) * 0x10;
  plVar1 = (longlong *)(*(longlong *)(param_1 + 0x18) + lVar2);
  if ((longlong *)plVar1[1] == param_3) {
    if ((longlong *)*plVar1 == param_3) {
      *plVar1 = *(longlong *)(param_1 + 8);
      *(undefined8 *)(lVar2 + 8 + *(longlong *)(param_1 + 0x18)) = *(undefined8 *)(param_1 + 8);
    }
    else {
      plVar1[1] = param_3[1];
    }
  }
  else if ((longlong *)*plVar1 == param_3) {
    *plVar1 = *param_3;
  }
  *(longlong *)param_3[1] = *param_3;
  *(longlong *)(*param_3 + 8) = param_3[1];
  *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + -1;
                    /* WARNING: Subroutine does not return */
  free(param_3);
}



############ FUN_ 181a16b30 size=23 ############

void Unwind_181a16b30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a16b10 size=23 ############

void Unwind_181a16b10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1804af4c0 size=124 ############

void FUN_1804af4c0(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[0xe];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[0xd];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_1812a0e00(param_1 + 6);
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar3 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 1804a7380 size=79 ############

void FUN_1804a7380(longlong *param_1)

{
  undefined8 *puVar1;
  void *_Memory;
  
  puVar1 = (undefined8 *)*param_1;
  _Memory = (void *)*puVar1;
  *puVar1 = puVar1;
  *(longlong *)(*param_1 + 8) = *param_1;
  param_1[1] = 0;
  if (_Memory != (void *)*param_1) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1804a7320 size=79 ############

void FUN_1804a7320(longlong *param_1)

{
  undefined8 *puVar1;
  void *_Memory;
  
  puVar1 = (undefined8 *)*param_1;
  _Memory = (void *)*puVar1;
  *puVar1 = puVar1;
  *(longlong *)(*param_1 + 8) = *param_1;
  param_1[1] = 0;
  if (_Memory != (void *)*param_1) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1804a7270 size=144 ############

void FUN_1804a7270(longlong param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *_Memory;
  
  pvVar1 = *(void **)(param_1 + 0x18);
  if (pvVar1 == (void *)0x0) {
    puVar2 = *(undefined8 **)(param_1 + 8);
    pvVar1 = (void *)*puVar2;
    *puVar2 = puVar2;
    *(longlong *)(*(longlong *)(param_1 + 8) + 8) = *(longlong *)(param_1 + 8);
    *(undefined8 *)(param_1 + 0x10) = 0;
    if (pvVar1 == *(void **)(param_1 + 8)) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 8));
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)(param_1 + 0x28) - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a16830 size=26 ############

void Unwind_181a16830(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a16750 size=23 ############

void Unwind_181a16750(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a16f90 size=26 ############

void Unwind_181a16f90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 181a16fb0 size=26 ############

void Unwind_181a16fb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 181a16fd0 size=26 ############

void Unwind_181a16fd0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 181a18c00 size=26 ############

void Unwind_181a18c00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x108));
}



############ FUN_ 181a18be0 size=26 ############

void Unwind_181a18be0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x108));
}



############ FUN_ 181a18aa0 size=26 ############

void Unwind_181a18aa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a18ae0 size=26 ############

void Unwind_181a18ae0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x88));
}



############ FUN_ 181a17310 size=23 ############

void Unwind_181a17310(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a17560 size=23 ############

void Unwind_181a17560(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a18430 size=26 ############

void Unwind_181a18430(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a187e0 size=23 ############

void Unwind_181a187e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a187a0 size=26 ############

void Unwind_181a187a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x100));
}



############ FUN_ 181a18780 size=26 ############

void Unwind_181a18780(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a18750 size=26 ############

void Unwind_181a18750(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd8));
}



############ FUN_ 181a17e60 size=26 ############

void Unwind_181a17e60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa8));
}



############ FUN_ 181a18700 size=26 ############

void Unwind_181a18700(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a186e0 size=23 ############

void Unwind_181a186e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a18680 size=23 ############

void Unwind_181a18680(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x20));
}



############ FUN_ 181a18630 size=23 ############

void Unwind_181a18630(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a173d0 size=26 ############

void Unwind_181a173d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a185e0 size=23 ############

void Unwind_181a185e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a18480 size=23 ############

void Unwind_181a18480(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a18340 size=23 ############

void Unwind_181a18340(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a18230 size=23 ############

void Unwind_181a18230(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a181d0 size=23 ############

void Unwind_181a181d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a18120 size=23 ############

void Unwind_181a18120(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a17e80 size=26 ############

void Unwind_181a17e80(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1f8));
}



############ FUN_ 181a17de0 size=26 ############

void Unwind_181a17de0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x150));
}



############ FUN_ 181a17e00 size=26 ############

void Unwind_181a17e00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x150));
}



############ FUN_ 181a17cb0 size=23 ############

void Unwind_181a17cb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a17c40 size=23 ############

void Unwind_181a17c40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a17c20 size=23 ############

void Unwind_181a17c20(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a17bd0 size=23 ############

void Unwind_181a17bd0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a17bb0 size=26 ############

void Unwind_181a17bb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x148));
}



############ FUN_ 181a17b60 size=23 ############

void Unwind_181a17b60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x78));
}



############ FUN_ 181a17b00 size=26 ############

void Unwind_181a17b00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a177b0 size=23 ############

void Unwind_181a177b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a17710 size=26 ############

void Unwind_181a17710(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1a0));
}



############ FUN_ 181a175b0 size=26 ############

void Unwind_181a175b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a17590 size=26 ############

void Unwind_181a17590(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x118));
}



############ FUN_ 181a17540 size=23 ############

void Unwind_181a17540(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a17450 size=23 ############

void Unwind_181a17450(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a17410 size=23 ############

void Unwind_181a17410(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a18e90 size=23 ############

void Unwind_181a18e90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a18db0 size=23 ############

void Unwind_181a18db0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a18d70 size=23 ############

void Unwind_181a18d70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a193e0 size=23 ############

void Unwind_181a193e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a193c0 size=26 ############

void Unwind_181a193c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a18f60 size=26 ############

void Unwind_181a18f60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb8));
}



############ FUN_ 181a1a2d0 size=23 ############

void Unwind_181a1a2d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a1a1f0 size=23 ############

void Unwind_181a1a1f0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a1a160 size=23 ############

void Unwind_181a1a160(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 1813b6170 size=107 ############

void FUN_1813b6170(undefined8 *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::AudioIODevice::vftable;
  puVar2 = (uint *)(param_1[2] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 180555bc0 size=207 ############

void FUN_180555bc0(longlong *param_1)

{
  void *_Dst;
  uint uVar1;
  void *_Memory;
  uint *_Memory_00;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar2) {
    lVar3 = (longlong)iVar2 * 8;
    lVar4 = lVar3;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar4 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar2) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        FUN_180550170(_Memory);
        _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x18) + -0x10);
        if ((*_Memory_00 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar4 = lVar4 + -8;
      lVar3 = lVar3 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 180555ac0 size=253 ############

void FUN_180555ac0(longlong *param_1)

{
  void *_Dst;
  uint uVar1;
  void *_Memory;
  uint *_Memory_00;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  
  iVar3 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar3) {
    lVar2 = (longlong)iVar3 * 8;
    lVar4 = lVar2;
    do {
      _Memory = *(void **)(lVar2 + *param_1);
      _Dst = (void *)(lVar4 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar3) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        if (*(longlong **)((longlong)_Memory + 0x48) != (longlong *)0x0) {
          (**(code **)(**(longlong **)((longlong)_Memory + 0x48) + 0x90))();
          (**(code **)(**(longlong **)((longlong)_Memory + 0x48) + 0x10))();
          *(undefined8 *)((longlong)_Memory + 0x48) = 0;
        }
        if (*(longlong **)((longlong)_Memory + 0x40) != (longlong *)0x0) {
          (**(code **)(**(longlong **)((longlong)_Memory + 0x40) + 0x10))();
          *(undefined8 *)((longlong)_Memory + 0x40) = 0;
        }
        _Memory_00 = (uint *)(*(longlong *)((longlong)_Memory + 0x10) + -0x10);
        if ((*_Memory_00 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar4 = lVar4 + -8;
      lVar2 = lVar2 + -8;
      iVar3 = iVar3 + -1;
    } while (-1 < iVar3);
  }
  return;
}



############ FUN_ 181a19ee0 size=26 ############

void Unwind_181a19ee0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x90));
}



############ FUN_ 181a19e70 size=26 ############

void Unwind_181a19e70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a1a400 size=23 ############

void Unwind_181a1a400(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 1805705b0 size=91 ############

void FUN_1805705b0(undefined8 param_1,void *param_2)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = *(void **)((longlong)param_2 + 0x30);
  if (pvVar1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)((longlong)param_2 + 0x40) - (longlong)pvVar1 & 0xfffffffffffffffcU))
     && (_Memory = *(void **)((longlong)pvVar1 + -8),
        0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181a1b200 size=23 ############

void Unwind_181a1b200(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1b180 size=26 ############

void Unwind_181a1b180(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 200));
}



############ FUN_ 181a1b000 size=26 ############

void Unwind_181a1b000(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a1afb0 size=23 ############

void Unwind_181a1afb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1af30 size=23 ############

void Unwind_181a1af30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1af10 size=26 ############

void Unwind_181a1af10(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd0));
}



############ FUN_ 181a1aef0 size=23 ############

void Unwind_181a1aef0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1aed0 size=23 ############

void Unwind_181a1aed0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a1aeb0 size=23 ############

void Unwind_181a1aeb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1ae90 size=23 ############

void Unwind_181a1ae90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a1ae70 size=23 ############

void Unwind_181a1ae70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1ae50 size=23 ############

void Unwind_181a1ae50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1ae30 size=23 ############

void Unwind_181a1ae30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1ad70 size=26 ############

void Unwind_181a1ad70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xd8));
}



############ FUN_ 181a1ac40 size=23 ############

void Unwind_181a1ac40(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a1acb0 size=23 ############

void Unwind_181a1acb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a1acf0 size=23 ############

void Unwind_181a1acf0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a1ad30 size=23 ############

void Unwind_181a1ad30(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a1ad50 size=23 ############

void Unwind_181a1ad50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a1a920 size=23 ############

void Unwind_181a1a920(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x48));
}



############ FUN_ 181a1a580 size=26 ############

void Unwind_181a1a580(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a1a5a0 size=26 ############

void Unwind_181a1a5a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 1805738c0 size=87 ############

void FUN_1805738c0(undefined8 param_1,void *param_2)

{
  void *_Memory;
  undefined8 *puVar1;
  
  _Memory = *(void **)((longlong)param_2 + 0x28);
  if (_Memory != (void *)0x0) {
    DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)_Memory + 0x1c));
    puVar1 = *(undefined8 **)((longlong)_Memory + 8);
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180573870 size=79 ############

void FUN_180573870(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(longlong *)((longlong)param_2 + 0x28) != 0) {
    FUN_18056e160();
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 1805737f0 size=56 ############

void FUN_1805737f0(undefined8 param_1,longlong param_2)

{
  undefined8 local_res8;
  
  local_res8 = param_1;
  FUN_18056e1d0(param_2 + 0x28,&local_res8,**(undefined8 **)(param_2 + 0x28),
                *(undefined8 **)(param_2 + 0x28));
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a1b3a0 size=26 ############

void Unwind_181a1b3a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x148));
}



############ FUN_ 181a1b320 size=23 ############

void Unwind_181a1b320(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a1b300 size=23 ############

void Unwind_181a1b300(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x58));
}



############ FUN_ 181a1b8c0 size=23 ############

void Unwind_181a1b8c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1b850 size=23 ############

void Unwind_181a1b850(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 180588440 size=65 ############

void FUN_180588440(undefined8 param_1,void *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a1bd90 size=23 ############

void Unwind_181a1bd90(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1bd70 size=26 ############

void Unwind_181a1bd70(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xa0));
}



############ FUN_ 181a1bca0 size=23 ############

void Unwind_181a1bca0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x28));
}



############ FUN_ 181a1c220 size=26 ############

void Unwind_181a1c220(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1b0));
}



############ FUN_ 18058c710 size=150 ############

void FUN_18058c710(longlong *param_1)

{
  longlong *_Memory;
  longlong *plVar1;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory ==
        std::_Func_impl_no_alloc<std::function<float___cdecl(void)>,double_const_>::vftable) {
      plVar1 = (longlong *)_Memory[8];
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != _Memory + 1);
        _Memory[8] = 0;
      }
      if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    else {
      (*(code *)((undefined **)*_Memory)[4])(_Memory,_Memory != param_1);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 18058c670 size=150 ############

void FUN_18058c670(longlong *param_1)

{
  longlong *_Memory;
  longlong *plVar1;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory ==
        std::
        _Func_impl_no_alloc<std::function<float*___ptr64___cdecl(int)>,float_const*___ptr64,int>::
        vftable) {
      plVar1 = (longlong *)_Memory[8];
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != _Memory + 1);
        _Memory[8] = 0;
      }
      if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    else {
      (*(code *)((undefined **)*_Memory)[4])(_Memory,_Memory != param_1);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 181a1c1d0 size=26 ############

void Unwind_181a1c1d0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe8));
}



############ FUN_ 181a1c200 size=26 ############

void Unwind_181a1c200(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xf0));
}



############ FUN_ 181a1c1b0 size=23 ############

void Unwind_181a1c1b0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x70));
}



############ FUN_ 181a1c190 size=23 ############

void Unwind_181a1c190(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a1bf50 size=23 ############

void Unwind_181a1bf50(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a1c520 size=23 ############

void Unwind_181a1c520(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x30));
}



############ FUN_ 181a1c4e0 size=23 ############

void Unwind_181a1c4e0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1c4c0 size=23 ############

void Unwind_181a1c4c0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a1c4a0 size=23 ############

void Unwind_181a1c4a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x38));
}



############ FUN_ 181a1c480 size=23 ############

void Unwind_181a1c480(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a1c9a0 size=23 ############

void Unwind_181a1c9a0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1c980 size=23 ############

void Unwind_181a1c980(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x50));
}



############ FUN_ 181a1c960 size=23 ############

void Unwind_181a1c960(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1c940 size=23 ############

void Unwind_181a1c940(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 181a1c730 size=23 ############

void Unwind_181a1c730(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x68));
}



############ FUN_ 181a1d000 size=23 ############

void Unwind_181a1d000(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 18059b800 size=149 ############

void FUN_18059b800(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  if ((void *)param_1[0x11] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x11]);
  }
  puVar3 = (undefined8 *)param_1[0x10];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[0xd];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_1812a0e00(param_1 + 6);
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar3 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 181a1cfa0 size=23 ############

void Unwind_181a1cfa0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1cfc0 size=23 ############

void Unwind_181a1cfc0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x60));
}



############ FUN_ 181a1cf60 size=26 ############

void Unwind_181a1cf60(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x1d0));
}



############ FUN_ 18059b780 size=117 ############

void FUN_18059b780(undefined8 param_1,longlong *param_2)

{
  HGLRC pHVar1;
  
  if (param_2 != (longlong *)0x0) {
    pHVar1 = wglGetCurrentContext();
    if (pHVar1 != (HGLRC)0x0) {
      if ((int)param_2[2] != 0) {
        glDeleteTextures(1);
      }
      if ((int)param_2[3] != 0) {
        (**(code **)(*param_2 + 0x128))(1);
      }
      if (*(int *)((longlong)param_2 + 0x14) != 0) {
        (**(code **)(*param_2 + 0x158))(1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 181a1cdb0 size=26 ############

void Unwind_181a1cdb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xe0));
}



############ FUN_ 180599dd0 size=209 ############

void FUN_180599dd0(longlong *param_1)

{
  void *_Dst;
  int *_Memory;
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  
  iVar3 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar3) {
    lVar2 = (longlong)iVar3 * 8;
    lVar4 = lVar2;
    do {
      _Memory = *(int **)(lVar2 + *param_1);
      _Dst = (void *)(lVar4 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar3) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (int *)0x0) {
        if ((*_Memory != 0) &&
           (plVar1 = (longlong *)FUN_1805989c0(), *(longlong *)(_Memory + 4) == *plVar1)) {
          glDeleteTextures(1,_Memory);
          _Memory[0] = 0;
          _Memory[1] = 0;
          _Memory[2] = 0;
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar4 = lVar4 + -8;
      lVar2 = lVar2 + -8;
      iVar3 = iVar3 + -1;
    } while (-1 < iVar3);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x000180599e9a. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 181a1cd00 size=26 ############

void Unwind_181a1cd00(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x80));
}



############ FUN_ 181a1ccb0 size=26 ############

void Unwind_181a1ccb0(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0xb0));
}



############ FUN_ 180593380 size=60 ############

void FUN_180593380(longlong param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x18) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18163bcd0(param_1);
  return;
}



############ FUN_ 1805933c0 size=102 ############

void FUN_1805933c0(longlong param_1)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  
  plVar2 = *(longlong **)(param_1 + 0x70);
  if (plVar2 != (longlong *)0x0) {
    (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != (longlong *)(param_1 + 0x38));
    *(undefined8 *)(param_1 + 0x70) = 0;
  }
  _Memory = (uint *)(*(longlong *)(param_1 + 0x18) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18163bcd0(param_1);
  return;
}



############ FUN_ 181a1d180 size=26 ############

void Unwind_181a1d180(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x98));
}



############ FUN_ 18059fdb0 size=84 ############

void FUN_18059fdb0(undefined8 param_1,void *param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  puVar2 = *(undefined8 **)((longlong)param_2 + 0x28);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_2 + 0x20) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 181a1d270 size=23 ############

void Unwind_181a1d270(undefined8 param_1,longlong param_2)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_2 + 0x40));
}



############ FUN_ 1804623f0 size=173 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1804623f0(void)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  longlong local_res8;
  longlong local_res10;
  
  local_res8 = DAT_182673910;
  if ((*(uint *)(DAT_182673910 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(DAT_182673910 + -0x10) = *(int *)(DAT_182673910 + -0x10) + 1;
    UNLOCK();
  }
  plVar2 = (longlong *)FUN_1811d4e50(&local_res10,&local_res8);
  _DAT_1826738d0 = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)&DAT_1826738d8);
  _DAT_182673908 = *plVar2;
  if ((*(uint *)(_DAT_182673908 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(_DAT_182673908 + -0x10) = *(int *)(_DAT_182673908 + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  atexit((_func_5014 *)&LAB_181a4a4a0);
  return;
}



############ FUN_ 180489180 size=267 ############

longlong * FUN_180489180(longlong *param_1,void *param_2,size_t param_3)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  void *_Memory;
  longlong *_Dst;
  ulonglong uVar5;
  
  uVar2 = param_1[3];
  if (uVar2 < param_3) {
    if (0x7fffffffffffffff < param_3) {
                    /* WARNING: Subroutine does not return */
      FUN_18048c740();
    }
    uVar4 = param_3 | 0xf;
    uVar5 = 0x7fffffffffffffff;
    if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) &&
       (uVar1 = (uVar2 >> 1) + uVar2, uVar5 = uVar4, uVar4 < uVar1)) {
      uVar5 = uVar1;
    }
    pvVar3 = (void *)FUN_180480500(uVar5 + 1);
    param_1[2] = param_3;
    param_1[3] = uVar5;
    memcpy(pvVar3,param_2,param_3);
    *(undefined1 *)((longlong)pvVar3 + param_3) = 0;
    if (0xf < uVar2) {
      pvVar3 = (void *)*param_1;
      _Memory = pvVar3;
      if ((0xfff < uVar2 + 1) &&
         (_Memory = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_1 = (longlong)pvVar3;
  }
  else {
    _Dst = param_1;
    if (0xf < uVar2) {
      _Dst = (longlong *)*param_1;
    }
    param_1[2] = param_3;
    memmove(_Dst,param_2,param_3);
    *(undefined1 *)((longlong)_Dst + param_3) = 0;
  }
  return param_1;
}



############ FUN_ 180471400 size=43 ############

undefined8 * FUN_180471400(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::FUID::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804714d0 size=43 ############

undefined8 * FUN_1804714d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180471530 size=43 ############

undefined8 * FUN_180471530(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::ConstString::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804718e0 size=43 ############

undefined8 * FUN_1804718e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::Base::Thread::ILock::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180471990 size=67 ############

undefined8 * FUN_180471990(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180471a20 size=83 ############

undefined8 * FUN_180471a20(undefined8 *param_1,uint param_2)

{
  *param_1 = Steinberg::String::vftable;
  if ((void *)param_1[1] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[1]);
  }
  *param_1 = Steinberg::ConstString::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180471a90 size=77 ############

undefined8 * FUN_180471a90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::Base::Thread::FLock::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  *param_1 = Steinberg::Base::Thread::ILock::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180471c80 size=202 ############

undefined8 * FUN_180471c80(undefined8 *param_1,ulonglong param_2)

{
  void *_Memory;
  
  _Memory = (void *)param_1[10];
  *param_1 = Steinberg::UpdateHandler::vftable;
  param_1[2] = Steinberg::UpdateHandler::vftable;
  param_1[3] = Steinberg::UpdateHandler::vftable;
  if (DAT_182673668 == param_1 + 2) {
    DAT_182673668 = (undefined8 *)0x0;
  }
  if (_Memory != (void *)0x0) {
    FUN_180471e30(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  param_1[10] = 0;
  param_1[4] = Steinberg::Base::Thread::FLock::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 5));
  param_1[4] = Steinberg::Base::Thread::ILock::vftable;
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180471e30 size=232 ############

void FUN_180471e30(longlong param_1)

{
  longlong *plVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = *(longlong *)(param_1 + 0x4048);
  while (lVar3 != 0) {
    plVar1 = (longlong *)(param_1 + 0x4048);
    *plVar1 = *plVar1 + -1;
    if (*plVar1 == 0) {
      *(undefined8 *)(param_1 + 0x4040) = 0;
    }
    lVar3 = *(longlong *)(param_1 + 0x4048);
  }
  lVar3 = *(longlong *)(param_1 + 0x4038);
  while (lVar3 != 0) {
    lVar3 = lVar3 + -1;
    pvVar2 = *(void **)(*(longlong *)(param_1 + 0x4030) + lVar3 * 8);
    if (pvVar2 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  pvVar2 = *(void **)(param_1 + 0x4030);
  if (pvVar2 == (void *)0x0) {
    *(undefined8 *)(param_1 + 0x4038) = 0;
    *(undefined8 *)(param_1 + 0x4030) = 0;
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_1 + 0x4028));
  }
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x4038) << 3)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180471d60 size=176 ############

void FUN_180471d60(longlong param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *_Memory;
  
  pvVar1 = *(void **)(param_1 + 0x18);
  if (pvVar1 == (void *)0x0) {
    puVar2 = *(undefined8 **)(param_1 + 8);
    pvVar1 = (void *)*puVar2;
    *puVar2 = puVar2;
    *(longlong *)(*(longlong *)(param_1 + 8) + 8) = *(longlong *)(param_1 + 8);
    *(undefined8 *)(param_1 + 0x10) = 0;
    if (pvVar1 == *(void **)(param_1 + 8)) {
                    /* WARNING: Subroutine does not return */
      free(*(void **)(param_1 + 8));
    }
    FUN_18047cfb0((longlong)pvVar1 + 0x18);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  _Memory = pvVar1;
  if ((0xfff < (*(longlong *)(param_1 + 0x28) - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180472020 size=119 ############

void FUN_180472020(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18047ceb0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 1804720d0 size=119 ############

void FUN_1804720d0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  void *_Memory;
  
  lVar1 = *param_1;
  _Memory = *(void **)(lVar1 + 8);
  if (*(char *)((longlong)_Memory + 0x19) == '\0') {
    FUN_18047e3b0(param_1,*(undefined8 *)((longlong)_Memory + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(longlong *)(*param_1 + 8) = lVar1;
  *(longlong *)*param_1 = lVar1;
  *(longlong *)(*param_1 + 0x10) = lVar1;
  param_1[1] = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*param_1);
}



############ FUN_ 180472180 size=79 ############

/* Library Function - Single Match
    public: virtual void * __ptr64 __cdecl ATL::CWin32Heap::`scalar deleting destructor'(unsigned
   int) __ptr64
   
   Library: Visual Studio 2015 Release */

void * __thiscall ATL::CWin32Heap::_scalar_deleting_destructor_(CWin32Heap *this,uint param_1)

{
  *(undefined ***)this = Steinberg::MemoryStream::vftable;
  if ((this[0x30] != (CWin32Heap)0x0) && (*(void **)(this + 0x10) != (void *)0x0)) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(this + 0x10));
  }
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 180472360 size=54 ############

undefined8 * FUN_180472360(undefined8 *param_1,ulonglong param_2)

{
  param_1[2] = Steinberg::CPluginView::vftable;
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472b30 size=88 ############

undefined8 * FUN_180472b30(undefined8 *param_1,ulonglong param_2)

{
  FUN_181136ac0(param_1 + 10);
  param_1[2] = Steinberg::Vst::ComponentBase::vftable;
  param_1[3] = Steinberg::Vst::ComponentBase::vftable;
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472bd0 size=52 ############

void * FUN_180472bd0(void *param_1,ulonglong param_2)

{
  FUN_181139610();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472c10 size=52 ############

void * FUN_180472c10(void *param_1,ulonglong param_2)

{
  FUN_181139330();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181139330 size=246 ############

void FUN_181139330(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  void *_Memory;
  longlong *plVar4;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  *param_1 = Steinberg::Vst::EditControllerEx1::vftable;
  param_1[2] = Steinberg::Vst::EditControllerEx1::vftable;
  param_1[3] = Steinberg::Vst::EditControllerEx1::vftable;
  param_1[6] = Steinberg::Vst::EditControllerEx1::vftable;
  param_1[7] = Steinberg::Vst::EditControllerEx1::vftable;
  param_1[0xd] = Steinberg::Vst::EditControllerEx1::vftable;
  plVar1 = (longlong *)param_1[0x12];
  for (plVar4 = (longlong *)param_1[0x11]; plVar4 != plVar1; plVar4 = plVar4 + 1) {
    plVar2 = (longlong *)*plVar4;
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 0x48))(plVar2,param_1,param_3,param_4,uVar5);
    }
  }
  plVar4 = param_1 + 0x14;
  lVar3 = *plVar4;
  _Memory = *(void **)(lVar3 + 8);
  if (*(char *)((longlong)_Memory + 0x19) != '\0') {
    *(longlong *)(*plVar4 + 8) = lVar3;
    *(longlong *)*plVar4 = lVar3;
    *(longlong *)(*plVar4 + 0x10) = lVar3;
    param_1[0x15] = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*plVar4);
  }
  FUN_18047ceb0(plVar4,*(undefined8 *)((longlong)_Memory + 0x10));
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180472ce0 size=65 ############

undefined8 * FUN_180472ce0(undefined8 *param_1,ulonglong param_2)

{
  param_1[2] = Steinberg::Vst::ComponentBase::vftable;
  param_1[3] = Steinberg::Vst::ComponentBase::vftable;
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472d30 size=43 ############

undefined8 * FUN_180472d30(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472d60 size=222 ############

undefined8 * FUN_180472d60(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  ulonglong uVar3;
  
  *param_1 = Steinberg::Vst::StringListParameter::vftable;
  puVar1 = (undefined8 *)param_1[0x67];
  uVar3 = (ulonglong)((longlong)param_1[0x68] + (7 - (longlong)puVar1)) >> 3;
  if ((undefined8 *)param_1[0x68] < puVar1) {
    uVar3 = 0;
  }
  if (uVar3 != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  pvVar2 = (void *)param_1[0x67];
  if (pvVar2 == (void *)0x0) {
    *param_1 = Steinberg::FObject::vftable;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  _Memory = pvVar2;
  if ((0xfff < (param_1[0x69] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180472e60 size=95 ############

undefined8 * FUN_180472e60(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::Vst::PresetFile::vftable;
  if ((longlong *)param_1[1] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[1] + 0x10))();
  }
  param_1[2] = Steinberg::FUID::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472ec0 size=67 ############

undefined8 * FUN_180472ec0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::Vst::FileStream::vftable;
  fclose((FILE *)param_1[2]);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472f10 size=84 ############

undefined8 * FUN_180472f10(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::Vst::ReadOnlyBStream::vftable;
  if ((longlong *)param_1[2] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[2] + 0x10))();
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472f70 size=92 ############

undefined8 * FUN_180472f70(undefined8 *param_1,uint param_2)

{
  *param_1 = Steinberg::Vst::BufferStream::vftable;
  param_1[2] = Steinberg::Buffer::vftable;
  if ((void *)param_1[3] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[3]);
  }
  param_1[3] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180472fd0 size=131 ############

undefined8 * FUN_180472fd0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  longlong lVar3;
  
  *param_1 = Steinberg::Vst::HostMessage::vftable;
  if ((void *)param_1[2] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
  param_1[2] = 0;
  plVar2 = (longlong *)param_1[3];
  if (plVar2 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar2 + 1;
    lVar3 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if (((int)lVar3 == 1) && (plVar2 != (longlong *)0x0)) {
      (**(code **)(*plVar2 + 0x58))(plVar2,1,param_3,param_4,0xfffffffffffffffe);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180473060 size=52 ############

void * FUN_180473060(void *param_1,ulonglong param_2)

{
  FUN_181135920();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181135920 size=378 ############

void FUN_181135920(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  char cVar2;
  undefined8 *_Memory;
  longlong lVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  
  *param_1 = Steinberg::Vst::HostAttributeList::vftable;
  plVar1 = param_1 + 2;
  plVar7 = (longlong *)*plVar1;
  if (plVar7 != (longlong *)*plVar7) {
    do {
      if (*(char *)((longlong)plVar7 + 0x19) == '\0') {
        plVar6 = (longlong *)*plVar7;
        if (*(char *)((longlong)plVar6 + 0x19) == '\0') {
          cVar2 = *(char *)(plVar6[2] + 0x19);
          plVar4 = (longlong *)plVar6[2];
          while (cVar2 == '\0') {
            cVar2 = *(char *)(plVar4[2] + 0x19);
            plVar6 = plVar4;
            plVar4 = (longlong *)plVar4[2];
          }
        }
        else {
          cVar2 = *(char *)(plVar7[1] + 0x19);
          plVar4 = (longlong *)plVar7[1];
          plVar6 = plVar7;
          while ((plVar5 = plVar4, cVar2 == '\0' && (plVar6 == (longlong *)*plVar5))) {
            cVar2 = *(char *)(plVar5[1] + 0x19);
            plVar4 = (longlong *)plVar5[1];
            plVar6 = plVar5;
          }
          if (*(char *)((longlong)plVar6 + 0x19) == '\0') {
            plVar6 = plVar5;
          }
        }
      }
      else {
        plVar6 = (longlong *)plVar7[2];
      }
      _Memory = (undefined8 *)plVar6[7];
      if (_Memory != (undefined8 *)0x0) {
        if (*(int *)(_Memory + 1) == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
                    /* WARNING: Subroutine does not return */
        free((void *)*_Memory);
      }
      if (*(char *)((longlong)plVar7 + 0x19) == '\0') {
        plVar6 = (longlong *)*plVar7;
        if (*(char *)((longlong)plVar6 + 0x19) == '\0') {
          cVar2 = *(char *)(plVar6[2] + 0x19);
          plVar7 = plVar6;
          plVar6 = (longlong *)plVar6[2];
          while (cVar2 == '\0') {
            cVar2 = *(char *)(plVar6[2] + 0x19);
            plVar7 = plVar6;
            plVar6 = (longlong *)plVar6[2];
          }
        }
        else {
          cVar2 = *(char *)(plVar7[1] + 0x19);
          plVar6 = (longlong *)plVar7[1];
          while ((plVar4 = plVar6, cVar2 == '\0' && (plVar7 == (longlong *)*plVar4))) {
            cVar2 = *(char *)(plVar4[1] + 0x19);
            plVar6 = (longlong *)plVar4[1];
            plVar7 = plVar4;
          }
          if (*(char *)((longlong)plVar7 + 0x19) == '\0') {
            plVar7 = plVar4;
          }
        }
      }
      else {
        plVar7 = (longlong *)plVar7[2];
      }
    } while (plVar7 != *(longlong **)*plVar1);
  }
  lVar3 = *plVar1;
  FUN_18047e130(plVar1,*(undefined8 *)(lVar3 + 8),param_3,param_4,0xfffffffffffffffe);
  *(longlong *)(*plVar1 + 8) = lVar3;
  *(longlong *)*plVar1 = lVar3;
  *(longlong *)(*plVar1 + 0x10) = lVar3;
  param_1[3] = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*plVar1);
}



############ FUN_ 18047e130 size=123 ############

void FUN_18047e130(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) != '\0') {
    return;
  }
  FUN_18047e130(param_1,*(undefined8 *)((longlong)param_2 + 0x10));
  *(undefined ***)((longlong)param_2 + 0x20) = Steinberg::String::vftable;
  if (*(void **)((longlong)param_2 + 0x28) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_2 + 0x28));
  }
  *(undefined ***)((longlong)param_2 + 0x20) = Steinberg::ConstString::vftable;
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180495200 size=35 ############

void FUN_180495200(longlong param_1)

{
  int iVar1;
  int *_Memory;
  
  _Memory = (int *)(param_1 + -0x10);
  if ((*(uint *)(param_1 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Could not recover jumptable at 0x0001811328ae. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
      free(_Memory);
      return;
    }
  }
  return;
}



############ FUN_ 1812316c0 size=538 ############

longlong * FUN_1812316c0(longlong *param_1,longlong *param_2,ulonglong param_3,undefined8 param_4)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  ulonglong uVar4;
  uint uVar5;
  longlong lVar6;
  uint uVar7;
  bool bVar8;
  undefined1 *local_40;
  byte *local_38;
  undefined1 *local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  iVar3 = FUN_18049bc80(*param_1,param_3 & 0xffffffff,param_3,param_4,0xfffffffffffffffe);
  if (iVar3 < 0) {
    lVar6 = *param_1;
    *param_2 = lVar6;
    if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    local_38 = (byte *)*param_1;
    local_40 = &DAT_1821dbf98;
    local_30 = (undefined1 *)0x0;
    local_28 = *(ulonglong *)(local_38 + -8);
    local_20 = 0;
    FUN_1812342b0(&local_40);
    local_30 = local_40;
    do {
      bVar1 = *local_38;
      local_38 = local_38 + 1;
      uVar7 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar5 = 0x40;
        uVar7 = 0x7f;
        iVar3 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar5 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar3 = iVar3 + 1;
            uVar5 = uVar5 >> 1;
          } while ((bVar1 & uVar5) != 0);
        }
        uVar7 = bVar1 & uVar7;
        for (; (iVar3 = iVar3 + -1, -1 < iVar3 && ((*local_38 & 0xc0) == 0x80));
            local_38 = local_38 + 1) {
          uVar7 = *local_38 & 0x3f | uVar7 << 6;
        }
      }
      if (uVar7 == (uint)param_3) {
        uVar7 = (uint)param_4;
      }
      lVar6 = 1;
      if (((0x7f < uVar7) && (lVar6 = 2, 0x7ff < uVar7)) && (lVar6 = 3, 0xffff < uVar7)) {
        lVar6 = 4;
      }
      local_20 = local_20 + lVar6;
      if (local_28 < local_20) {
        uVar4 = 8;
        if (8 < local_28 >> 4) {
          uVar4 = local_28 >> 4;
        }
        local_28 = local_28 + uVar4;
        iVar2 = (int)local_40;
        iVar3 = (int)local_30;
        FUN_1812342b0(&local_40);
        local_30 = local_40 + (iVar3 - iVar2);
      }
      FUN_180493180(&local_30,uVar7);
    } while (uVar7 != 0);
    *param_2 = (longlong)local_40;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar7 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar8 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar7;
      if (bVar8) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_2;
}



############ FUN_ 1812319a0 size=343 ############

longlong * FUN_1812319a0(longlong *param_1,longlong *param_2,byte *param_3,byte *param_4)

{
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  int iVar4;
  longlong *plVar5;
  uint *_Memory;
  int iVar6;
  int iVar7;
  byte *pbVar8;
  byte *pbVar9;
  longlong local_res8;
  longlong *local_res10;
  byte *local_res18;
  byte *local_res20;
  
  iVar4 = 0;
  iVar6 = 0;
  pbVar8 = param_3;
  while( true ) {
    while( true ) {
      bVar2 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      if (-1 < (char)bVar2) break;
      if ((*pbVar8 & 0xc0) != 0x80) goto LAB_181231a06;
      do {
        pbVar8 = pbVar8 + 1;
      } while ((*pbVar8 & 0xc0) == 0x80);
      iVar6 = iVar6 + 1;
    }
    pbVar9 = param_4;
    iVar7 = iVar4;
    if (bVar2 == 0) break;
LAB_181231a06:
    iVar6 = iVar6 + 1;
  }
  do {
    while( true ) {
      pbVar8 = pbVar9 + 1;
      if ((char)*pbVar9 < '\0') break;
      if (*pbVar9 == 0) {
        lVar3 = *param_1;
        *param_2 = lVar3;
        local_res10 = param_2;
        local_res18 = param_3;
        local_res20 = param_4;
        if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
          UNLOCK();
        }
        do {
          iVar4 = FUN_181232610(param_2,iVar4,local_res18);
          if (iVar4 < 0) {
            return param_2;
          }
          plVar5 = (longlong *)FUN_181231b00(param_2,&local_res8,iVar4,iVar6,local_res20);
          lVar3 = *param_2;
          *param_2 = *plVar5;
          *plVar5 = lVar3;
          _Memory = (uint *)(local_res8 + -0x10);
          if ((*_Memory & 0x30000000) == 0) {
            LOCK();
            uVar1 = *_Memory;
            *_Memory = *_Memory - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          iVar4 = iVar4 + iVar7;
        } while( true );
      }
LAB_181231a46:
      pbVar9 = pbVar8;
      iVar7 = iVar7 + 1;
    }
    if ((*pbVar8 & 0xc0) != 0x80) goto LAB_181231a46;
    do {
      pbVar8 = pbVar8 + 1;
    } while ((*pbVar8 & 0xc0) == 0x80);
    pbVar9 = pbVar8;
    iVar7 = iVar7 + 1;
  } while( true );
}



############ FUN_ 180489b40 size=185 ############

void FUN_180489b40(longlong *param_1,int param_2,uint param_3)

{
  longlong lVar1;
  uint *_Memory;
  longlong *plVar2;
  longlong *plVar3;
  ulonglong uVar4;
  uint uVar5;
  ulonglong uVar6;
  
  if (0 < (int)param_3) {
    uVar4 = (ulonglong)param_3;
    uVar5 = (*(int *)((longlong)param_1 + 0xc) - param_2) - param_3;
    uVar6 = (ulonglong)uVar5;
    plVar3 = (longlong *)(*param_1 + (longlong)param_2 * 8);
    plVar2 = plVar3 + (int)param_3;
    if (0 < (int)uVar5) {
      do {
        lVar1 = *plVar3;
        *plVar3 = *plVar2;
        plVar3 = plVar3 + 1;
        *plVar2 = lVar1;
        uVar6 = uVar6 - 1;
        plVar2 = plVar2 + 1;
      } while (uVar6 != 0);
    }
    if (0 < (int)param_3) {
      do {
        lVar1 = *plVar3;
        plVar3 = plVar3 + 1;
        _Memory = (uint *)(lVar1 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar5 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        uVar4 = uVar4 - 1;
      } while (uVar4 != 0);
    }
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) - param_3;
  }
  return;
}



############ FUN_ 18122d360 size=411 ############

longlong * FUN_18122d360(longlong *param_1,longlong *param_2,char *param_3)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  uint uVar4;
  longlong lVar5;
  char *pcVar6;
  longlong lVar7;
  longlong lVar8;
  longlong lVar9;
  longlong *plVar10;
  longlong lVar11;
  bool bVar12;
  char *local_38;
  undefined8 local_30;
  longlong local_28;
  
  local_30 = 0xfffffffffffffffe;
  iVar2 = *(int *)((longlong)param_1 + 0xc);
  lVar9 = (longlong)iVar2;
  if (iVar2 < 1) {
    *param_2 = (longlong)&DAT_1821dbf98;
  }
  else if (iVar2 + -1 == 0) {
    lVar9 = *(longlong *)*param_1;
    *param_2 = lVar9;
    if ((*(uint *)(lVar9 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar9 + -0x10) = *(int *)(lVar9 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    lVar5 = -1;
    do {
      lVar5 = lVar5 + 1;
    } while (param_3[lVar5] != '\0');
    lVar8 = (iVar2 + -1) * lVar5;
    if (0 < iVar2) {
      plVar10 = (longlong *)*param_1;
      lVar11 = lVar9;
      do {
        local_28 = *plVar10;
        lVar7 = -1;
        do {
          lVar7 = lVar7 + 1;
        } while (*(char *)(local_28 + lVar7) != '\0');
        lVar8 = lVar8 + lVar7;
        plVar10 = plVar10 + 1;
        lVar11 = lVar11 + -1;
      } while (lVar11 != 0);
    }
    local_38 = "";
    FUN_1812342b0(&local_38,lVar8);
    lVar8 = 0;
    pcVar6 = local_38;
    if (0 < lVar9) {
      while( true ) {
        pcVar3 = *(char **)(*param_1 + lVar8 * 8);
        if ((*pcVar3 != '\0') && (cVar1 = *pcVar3, *pcVar6 = cVar1, cVar1 != '\0')) {
          lVar11 = (longlong)pcVar3 - (longlong)pcVar6;
          do {
            pcVar6 = pcVar6 + 1;
            cVar1 = pcVar6[lVar11];
            *pcVar6 = cVar1;
          } while (cVar1 != '\0');
        }
        lVar8 = lVar8 + 1;
        if (lVar9 <= lVar8) break;
        if ((lVar5 != 0) && (cVar1 = *param_3, *pcVar6 = cVar1, cVar1 != '\0')) {
          lVar11 = (longlong)param_3 - (longlong)pcVar6;
          do {
            pcVar6 = pcVar6 + 1;
            cVar1 = pcVar6[lVar11];
            *pcVar6 = cVar1;
          } while (cVar1 != '\0');
        }
      }
    }
    *pcVar6 = '\0';
    *param_2 = (longlong)local_38;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar4 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar12 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar4;
      if (bVar12) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_2;
}



############ FUN_ 1812416f0 size=398 ############

char *** FUN_1812416f0(char ***param_1,undefined8 *param_2)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  longlong lVar4;
  longlong *plVar5;
  char ***pppcVar6;
  char ****ppppcVar7;
  int iVar8;
  char **local_res8;
  char ***local_res10;
  char **local_res18;
  byte *local_res20;
  
  iVar8 = 0;
  pppcVar6 = (char ***)*param_2;
  lVar4 = -1;
  if (*(char *)pppcVar6 != '\0') {
    do {
      lVar4 = lVar4 + 1;
    } while (*(char *)((longlong)pppcVar6 + lVar4) != '\0');
    local_res20 = (byte *)((longlong)pppcVar6 + lVar4);
    do {
      local_res20 = local_res20 + -1;
      if ((*local_res20 & 0xc0) != 0x80) break;
      iVar8 = iVar8 + 1;
    } while (iVar8 < 4);
    local_res8 = (char **)param_1;
    iVar8 = FUN_180492f10(&local_res20);
    if (iVar8 == 0x5c) {
      local_res18 = (char **)pppcVar6;
      bVar3 = true;
      bVar2 = false;
      if (((ulonglong)pppcVar6[-2] & 0x30000000) == 0) {
        LOCK();
        *(int *)(pppcVar6 + -2) = *(int *)(pppcVar6 + -2) + 1;
        UNLOCK();
      }
      ppppcVar7 = (char ****)&local_res18;
      goto LAB_1812417fd;
    }
  }
  if (((ulonglong)pppcVar6[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(pppcVar6 + -2) = *(int *)(pppcVar6 + -2) + 1;
    UNLOCK();
  }
  local_res10 = &local_res8;
  local_res8 = (char **)pppcVar6;
  plVar5 = (longlong *)FUN_181232b70(&local_res8,0x5c);
  local_res10 = (char ***)*plVar5;
  if (((ulonglong)local_res10[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -2) = *(int *)(local_res10 + -2) + 1;
    UNLOCK();
  }
  pppcVar6 = (char ***)(local_res8 + -2);
  if (((ulonglong)*pppcVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)pppcVar6;
    *(uint *)pppcVar6 = *(uint *)pppcVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pppcVar6);
    }
  }
  ppppcVar7 = &local_res10;
  bVar3 = false;
  bVar2 = true;
LAB_1812417fd:
  *param_1 = (char **)*ppppcVar7;
  *ppppcVar7 = (char ***)&DAT_1821dbf98;
  if ((bVar2) && (pppcVar6 = local_res10 + -2, ((ulonglong)*pppcVar6 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *(uint *)pppcVar6;
    *(uint *)pppcVar6 = *(uint *)pppcVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pppcVar6);
    }
  }
  if ((bVar3) && (pppcVar6 = (char ***)(local_res18 + -2), ((ulonglong)*pppcVar6 & 0x30000000) == 0)
     ) {
    LOCK();
    uVar1 = *(uint *)pppcVar6;
    *(uint *)pppcVar6 = *(uint *)pppcVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pppcVar6);
    }
  }
  return param_1;
}



############ FUN_ 180474b90 size=255 ############

int FUN_180474b90(undefined8 *param_1)

{
  byte bVar1;
  byte *pbVar2;
  byte *pbVar3;
  bool bVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  uint uStackX_c;
  
  iVar8 = 0;
  bVar4 = false;
  if (param_1 == (undefined8 *)0x0) {
    pbVar2 = (byte *)((ulonglong)uStackX_c << 0x20);
  }
  else {
    pbVar2 = (byte *)*param_1;
    bVar4 = true;
    if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
      UNLOCK();
    }
    iVar8 = 0;
    bVar1 = *pbVar2;
    pbVar3 = pbVar2;
    while (bVar1 != 0) {
      bVar1 = *pbVar3;
      pbVar3 = pbVar3 + 1;
      uVar6 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar5 = 0x40;
        uVar6 = 0x7f;
        iVar7 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar5 < 9) break;
            uVar6 = uVar6 >> 1;
            iVar7 = iVar7 + 1;
            uVar5 = uVar5 >> 1;
          } while ((bVar1 & uVar5) != 0);
        }
        uVar6 = bVar1 & uVar6;
        for (; (iVar7 = iVar7 + -1, -1 < iVar7 && ((*pbVar3 & 0xc0) == 0x80)); pbVar3 = pbVar3 + 1)
        {
          uVar6 = *pbVar3 & 0x3f | uVar6 << 6;
        }
      }
      iVar8 = iVar8 * 0x1f + uVar6;
      bVar1 = *pbVar3;
    }
  }
  if ((bVar4) && (pbVar3 = pbVar2 + -0x10, (*(uint *)(pbVar2 + -0x10) & 0x30000000) == 0)) {
    LOCK();
    iVar7 = *(int *)pbVar3;
    *(int *)pbVar3 = *(int *)pbVar3 + -1;
    UNLOCK();
    if (iVar7 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pbVar3);
    }
  }
  return iVar8;
}



############ FUN_ 180475800 size=242 ############

void FUN_180475800(longlong param_1)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18;
  
  uVar2 = (**(code **)(**(longlong **)(param_1 + 0x340) + 0x20))
                    (*(longlong **)(param_1 + 0x340),&local_res8,0x80);
  FUN_1804741b0(param_1 + 0x14,uVar2);
  puVar3 = (uint *)(local_res8 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  uVar2 = (**(code **)(**(longlong **)(param_1 + 0x340) + 0x20))
                    (*(longlong **)(param_1 + 0x340),&local_res10,8);
  FUN_1804741b0(param_1 + 0x114,uVar2);
  puVar3 = (uint *)(local_res10 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  uVar2 = (**(code **)(**(longlong **)(param_1 + 0x340) + 0x28))
                    (*(longlong **)(param_1 + 0x340),&local_res18);
  FUN_1804741b0(param_1 + 0x214,uVar2);
  puVar3 = (uint *)(local_res18 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  return;
}



############ FUN_ 1804759f0 size=204 ############

void FUN_1804759f0(longlong param_1,double param_2,undefined8 param_3)

{
  longlong *plVar1;
  uint uVar2;
  longlong lVar3;
  undefined8 uVar4;
  uint *_Memory;
  longlong local_res8;
  longlong local_res20;
  
  lVar3 = __RTDynamicCast(*(undefined8 *)(param_1 + 0x340),0,
                          &juce::AudioProcessorParameter::RTTI_Type_Descriptor,
                          &juce::LegacyAudioParameter::RTTI_Type_Descriptor,0);
  plVar1 = *(longlong **)(param_1 + 0x340);
  if (lVar3 == 0) {
    uVar4 = (**(code **)(*plVar1 + 0x48))(plVar1,&local_res20,(float)param_2,0x80);
    FUN_1804741b0(param_3,uVar4);
    _Memory = (uint *)(local_res20 + -0x10);
    uVar2 = *_Memory;
  }
  else {
    uVar4 = (**(code **)(*plVar1 + 0x78))(plVar1,&local_res8);
    FUN_1804741b0(param_3,uVar4);
    _Memory = (uint *)(local_res8 + -0x10);
    uVar2 = *_Memory;
  }
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180475ac0 size=193 ############

ulonglong FUN_180475ac0(longlong param_1,undefined8 param_2,double *param_3)

{
  uint uVar1;
  ulonglong uVar2;
  uint *_Memory;
  float fVar3;
  longlong local_res8;
  
  uVar2 = __RTDynamicCast(*(undefined8 *)(param_1 + 0x340),0,
                          &juce::AudioProcessorParameter::RTTI_Type_Descriptor,
                          &juce::LegacyAudioParameter::RTTI_Type_Descriptor,0);
  if (uVar2 != 0) {
    return uVar2 & 0xffffffffffffff00;
  }
  FUN_18049c800(&local_res8,param_2);
  fVar3 = (float)(**(code **)(**(longlong **)(param_1 + 0x340) + 0x50))
                           (*(longlong **)(param_1 + 0x340),&local_res8);
  *param_3 = (double)fVar3;
  _Memory = (uint *)(local_res8 + -0x10);
  uVar1 = *_Memory;
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    uVar1 = uVar1 - 1;
    if (uVar1 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return CONCAT71((uint7)(uint3)(uVar1 >> 8),1);
}



############ FUN_ 180475f10 size=121 ############

void FUN_180475f10(longlong param_1,double param_2,undefined8 param_3)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res10 [3];
  
  uVar2 = (**(code **)(**(longlong **)(param_1 + 0x338) + 0xd8))
                    (*(longlong **)(param_1 + 0x338),local_res10,
                     (ulonglong)((double)*(int *)(param_1 + 0x314) * param_2 + DAT_1824c4520) &
                     0xffffffff);
  FUN_1804741b0(param_3,uVar2);
  _Memory = (uint *)(local_res10[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 181135760 size=427 ############

void FUN_181135760(longlong param_1,void *param_2,undefined8 param_3,undefined8 param_4)

{
  char cVar1;
  int iVar2;
  undefined2 *_Dst;
  uint uVar3;
  ulonglong uVar4;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined1 local_res8 [8];
  undefined8 uVar9;
  undefined **local_30;
  undefined2 *local_28;
  uint local_20;
  ulonglong uVar5;
  
  uVar9 = 0xfffffffffffffffe;
  local_28 = (undefined2 *)0x0;
  local_20 = local_20 & 0x80000000;
  local_30 = Steinberg::String::vftable;
  if (param_2 != (void *)0x0) {
    uVar4 = 0xffffffffffffffff;
    do {
      uVar5 = uVar4;
      uVar4 = uVar5 + 1;
    } while (*(char *)((longlong)param_2 + uVar4) != '\0');
    uVar3 = (uint)uVar4;
    if (uVar3 != 0) {
      _Dst = malloc((ulonglong)((int)uVar5 + 2));
      if (_Dst == (undefined2 *)0x0) goto LAB_181135842;
      if ((local_20 & 0x40000000) == 0) {
        *(undefined1 *)_Dst = 0;
        *(undefined1 *)((uVar4 & 0xffffffff) + (longlong)_Dst) = 0;
      }
      else {
        *_Dst = 0;
        _Dst[uVar4 & 0xffffffff] = 0;
      }
      local_28 = _Dst;
      if ((_Dst != (undefined2 *)0x0) && (0 < (int)uVar3)) {
        memcpy(_Dst,param_2,(longlong)(int)uVar3);
      }
    }
    local_20 = uVar3 & 0x3fffffff | local_20 & 0x80000000;
  }
LAB_181135842:
  puVar6 = (undefined8 *)(*(undefined8 **)(param_1 + 0x10))[1];
  cVar1 = *(char *)((longlong)puVar6 + 0x19);
  puVar7 = *(undefined8 **)(param_1 + 0x10);
  while (cVar1 == '\0') {
    iVar2 = FUN_18113d120(puVar6 + 4,&local_30,0xffffffff,param_4,uVar9);
    if (iVar2 < 0) {
      puVar8 = (undefined8 *)puVar6[2];
      puVar6 = puVar7;
    }
    else {
      puVar8 = (undefined8 *)*puVar6;
    }
    puVar7 = puVar6;
    puVar6 = puVar8;
    cVar1 = *(char *)((longlong)puVar8 + 0x19);
  }
  if ((puVar7 == *(undefined8 **)(param_1 + 0x10)) ||
     (iVar2 = FUN_18113d120(&local_30,puVar7 + 4,0xffffffff,param_4,uVar9), iVar2 < 0)) {
    puVar7 = *(undefined8 **)(param_1 + 0x10);
  }
  local_30 = Steinberg::String::vftable;
  if (local_28 != (undefined2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(local_28);
  }
  local_30 = Steinberg::ConstString::vftable;
  if (puVar7 != *(undefined8 **)(param_1 + 0x10)) {
    puVar6 = (undefined8 *)puVar7[7];
    if (puVar6 != (undefined8 *)0x0) {
      if (*(int *)(puVar6 + 1) != 0) {
                    /* WARNING: Subroutine does not return */
        free((void *)*puVar6);
      }
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
    FUN_18047da80(param_1 + 0x10,local_res8,puVar7);
  }
  return;
}



############ FUN_ 18047da80 size=153 ############

void FUN_18047da80(undefined8 param_1,undefined8 param_2,longlong param_3)

{
  char cVar1;
  longlong *plVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  void *_Memory;
  
  if (*(char *)((longlong)*(longlong **)(param_3 + 0x10) + 0x19) == '\0') {
    plVar2 = (longlong *)**(longlong **)(param_3 + 0x10);
    cVar1 = *(char *)((longlong)plVar2 + 0x19);
    while (cVar1 == '\0') {
      plVar2 = (longlong *)*plVar2;
      cVar1 = *(char *)((longlong)plVar2 + 0x19);
    }
  }
  else {
    cVar1 = *(char *)(*(longlong *)(param_3 + 8) + 0x19);
    lVar5 = *(longlong *)(param_3 + 8);
    lVar4 = param_3;
    while ((lVar3 = lVar5, cVar1 == '\0' && (lVar4 == *(longlong *)(lVar3 + 0x10)))) {
      cVar1 = *(char *)(*(longlong *)(lVar3 + 8) + 0x19);
      lVar5 = *(longlong *)(lVar3 + 8);
      lVar4 = lVar3;
    }
  }
  _Memory = (void *)FUN_18047db40(param_1,param_3);
  *(undefined ***)((longlong)_Memory + 0x20) = Steinberg::String::vftable;
  if (*(void **)((longlong)_Memory + 0x28) == (void *)0x0) {
    *(undefined ***)((longlong)_Memory + 0x20) = Steinberg::ConstString::vftable;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)((longlong)_Memory + 0x28));
}



############ FUN_ 18047d910 size=172 ############

void FUN_18047d910(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  longlong lVar1;
  void *pvVar2;
  void *_Memory;
  longlong lVar3;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    *param_1 = param_2;
    param_1[1] = param_2 + param_3 * 8;
    param_1[2] = param_2 + param_4 * 8;
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 8) {
    FUN_18047e630(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1804828a0 size=292 ############

undefined8 *
FUN_1804828a0(longlong *param_1,undefined8 *param_2,undefined8 param_3,uint *param_4,void *param_5)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  bool bVar5;
  undefined1 local_res8 [8];
  
  puVar3 = (undefined8 *)*param_1;
  bVar5 = true;
  puVar4 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar2 = (undefined8 *)puVar3[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_4 < *(uint *)(puVar4 + 4);
      if (bVar5) {
        puVar2 = (undefined8 *)*puVar4;
      }
      else {
        puVar2 = (undefined8 *)puVar4[2];
      }
    } while (*(char *)((longlong)puVar2 + 0x19) == '\0');
  }
  if (bVar5) {
    if (puVar4 == (undefined8 *)*puVar3) {
      puVar3 = (undefined8 *)FUN_180482670(param_1,local_res8,1);
      *param_2 = *puVar3;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar4;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar4 = puVar3;
        puVar3 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
          puVar4 = puVar3;
          puVar3 = (undefined8 *)puVar3[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar3 = (undefined8 *)puVar4[1];
        while ((puVar2 = puVar3, cVar1 == '\0' && (puVar4 == (undefined8 *)*puVar2))) {
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar3 = (undefined8 *)puVar2[1];
          puVar4 = puVar2;
        }
        if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
          puVar4 = puVar2;
        }
      }
    }
    else {
      puVar4 = (undefined8 *)puVar4[2];
    }
  }
  if (*(uint *)(puVar4 + 4) < *param_4) {
    puVar3 = (undefined8 *)FUN_180482670(param_1,local_res8);
    *param_2 = *puVar3;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 1804769e0 size=104 ############

undefined8 FUN_1804769e0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  bool bVar3;
  undefined1 *local_res8 [4];
  
  if (*(longlong **)(param_1 + 0x20) != (longlong *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0001804769f4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar2 = (**(code **)(**(longlong **)(param_1 + 0x20) + 0x38))();
    return uVar2;
  }
  local_res8[0] = &DAT_1821dbf98;
  FUN_1804741b0(param_4,local_res8);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return 1;
}



############ FUN_ 18049b620 size=299 ############

void FUN_18049b620(longlong *param_1,int param_2)

{
  uint uVar1;
  void *_Memory;
  void *pvVar2;
  undefined8 *puVar3;
  uint *_Memory_00;
  int iVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  
  if ((int)param_1[1] == param_2) {
    *(int *)(param_1 + 1) = param_2;
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  pvVar2 = malloc((longlong)param_2 * 0x18);
  iVar4 = 0;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    puVar6 = (undefined8 *)((longlong)pvVar2 + 8);
    do {
      puVar3 = (undefined8 *)((longlong)puVar6 + *param_1 + (-8 - (longlong)pvVar2));
      puVar6[-1] = *puVar3;
      *puVar3 = &DAT_1821dbf98;
      *puVar6 = puVar3[1];
      puVar6[1] = puVar3[2];
      puVar3[1] = &PTR_vftable_18262b558;
      plVar5 = (longlong *)((longlong)puVar6 + *param_1 + (-8 - (longlong)pvVar2));
      (**(code **)(*(longlong *)plVar5[1] + 0xb0))((longlong *)plVar5[1],plVar5 + 2);
      _Memory_00 = (uint *)(*plVar5 + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      iVar4 = iVar4 + 1;
      puVar6 = puVar6 + 3;
    } while (iVar4 < *(int *)((longlong)param_1 + 0xc));
  }
  _Memory = (void *)*param_1;
  *param_1 = (longlong)pvVar2;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180527450 size=467 ############

void FUN_180527450(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  code *pcVar2;
  undefined1 *puVar3;
  longlong lVar4;
  undefined8 *puVar5;
  uint *_Memory;
  ulonglong uVar6;
  ulonglong uVar7;
  uint uVar8;
  bool bVar10;
  undefined1 *local_res8;
  ulonglong uVar9;
  
  lVar1 = *param_2;
  pcVar2 = *(code **)(lVar1 + 0x98);
  if (pcVar2 == FUN_18122e620) {
    lVar4 = FUN_18049d240(*(undefined8 *)(param_1 + 0x10));
    (**(code **)(lVar1 + 0x20))(param_2,*(undefined8 *)(param_1 + 0x10),lVar4 + 1);
  }
  else {
    (*pcVar2)(param_2,param_1 + 0x10,param_3,param_4,0xfffffffffffffffe);
  }
  (**(code **)(*param_2 + 0x90))(param_2,*(undefined4 *)(param_1 + 0x24));
  uVar6 = 0;
  if (0 < *(int *)(param_1 + 0x24)) {
    bVar10 = *(int *)(param_1 + 0x24) != 0;
    uVar7 = uVar6;
    uVar9 = uVar6;
    do {
      if (bVar10) {
        local_res8 = *(undefined1 **)(uVar7 + *(longlong *)(param_1 + 0x18));
        if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
          UNLOCK();
        }
      }
      else {
        local_res8 = &DAT_1821dbf98;
      }
      puVar3 = local_res8;
      lVar1 = *param_2;
      pcVar2 = *(code **)(lVar1 + 0x98);
      if (pcVar2 == FUN_18122e620) {
        lVar4 = FUN_18049d240(local_res8);
        (**(code **)(lVar1 + 0x20))(param_2,puVar3,lVar4 + 1);
      }
      else {
        (*pcVar2)(param_2,&local_res8);
      }
      _Memory = (uint *)(local_res8 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar8 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      uVar8 = (uint)uVar9;
      if (uVar8 < *(uint *)(param_1 + 0x24)) {
        puVar5 = (undefined8 *)(*(longlong *)(param_1 + 0x18) + (longlong)(int)uVar8 * 0x18 + 8);
      }
      else {
        puVar5 = (undefined8 *)FUN_181244160();
      }
      (**(code **)(*(longlong *)*puVar5 + 200))((longlong *)*puVar5,puVar5 + 1,param_2);
      uVar8 = uVar8 + 1;
      uVar9 = (ulonglong)uVar8;
      uVar7 = uVar7 + 0x18;
      bVar10 = uVar8 < *(uint *)(param_1 + 0x24);
    } while ((int)uVar8 < (int)*(uint *)(param_1 + 0x24));
  }
  (**(code **)(*param_2 + 0x90))(param_2,*(undefined4 *)(param_1 + 0x34));
  puVar5 = *(undefined8 **)(param_1 + 0x28);
  uVar7 = (ulonglong)((longlong)(puVar5 + *(int *)(param_1 + 0x34)) + (7 - (longlong)puVar5)) >> 3;
  if (puVar5 + *(int *)(param_1 + 0x34) < puVar5) {
    uVar7 = uVar6;
  }
  if (uVar7 != 0) {
    do {
      FUN_180527630(param_2,*puVar5);
      puVar5 = puVar5 + 1;
      uVar6 = uVar6 + 1;
    } while (uVar6 != uVar7);
  }
  return;
}



############ FUN_ 180527630 size=213 ############

void FUN_180527630(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  code *pcVar3;
  longlong lVar4;
  uint *_Memory;
  undefined1 *local_res10;
  
  if (param_2 != 0) {
    FUN_180527450(param_2,param_1);
    return;
  }
  local_res10 = &DAT_1821dbf98;
  lVar2 = *param_1;
  pcVar3 = *(code **)(lVar2 + 0x98);
  if (pcVar3 == FUN_18122e620) {
    lVar4 = FUN_18049d240(&DAT_1821dbf98);
    (**(code **)(lVar2 + 0x20))(param_1,&DAT_1821dbf98,lVar4 + 1);
  }
  else {
    (*pcVar3)(param_1,&local_res10,param_3,param_4,0xfffffffffffffffe);
  }
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*param_1 + 0x90))(param_1,0);
                    /* WARNING: Could not recover jumptable at 0x0001805276f2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x90))(param_1,0);
  return;
}



############ FUN_ 18047f980 size=561 ############

longlong FUN_18047f980(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 uVar2;
  void *pvVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  ulonglong uVar11;
  longlong lVar12;
  ulonglong uVar13;
  
  lVar8 = *param_1;
  lVar12 = (longlong)param_2 - lVar8 >> 3;
  lVar4 = param_1[1] - lVar8 >> 3;
  if (lVar4 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar7 = param_1[2] - lVar8 >> 3;
  uVar1 = lVar4 + 1;
  uVar5 = uVar1;
  if ((uVar7 <= 0x1fffffffffffffff - (uVar7 >> 1)) && (uVar5 = (uVar7 >> 1) + uVar7, uVar5 < uVar1))
  {
    uVar5 = uVar1;
  }
  lVar8 = uVar5 * 8;
  if (0x1fffffffffffffff < uVar5) {
    lVar8 = -1;
  }
  puVar6 = (undefined8 *)FUN_180480500(lVar8);
  uVar2 = *param_3;
  uVar7 = 0;
  *param_3 = 0;
  lVar8 = lVar12 * 8;
  puVar6[lVar12] = uVar2;
  puVar10 = (undefined8 *)param_1[1];
  puVar9 = (undefined8 *)*param_1;
  if (param_2 == puVar10) {
    uVar11 = (ulonglong)((longlong)puVar10 + (7 - (longlong)puVar9)) >> 3;
    if (puVar10 < puVar9) {
      uVar11 = uVar7;
    }
    puVar10 = puVar6;
    if (uVar11 != 0) {
      do {
        uVar2 = *puVar9;
        *puVar9 = 0;
        puVar9 = puVar9 + 1;
        uVar7 = uVar7 + 1;
        *puVar10 = uVar2;
        puVar10 = puVar10 + 1;
      } while (uVar7 != uVar11);
    }
  }
  else {
    uVar11 = (ulonglong)((longlong)param_2 + (7 - (longlong)puVar9)) >> 3;
    if (param_2 < puVar9) {
      uVar11 = uVar7;
    }
    puVar10 = puVar6;
    uVar13 = uVar7;
    if (uVar11 != 0) {
      do {
        uVar2 = *puVar9;
        *puVar9 = 0;
        puVar9 = puVar9 + 1;
        uVar13 = uVar13 + 1;
        *puVar10 = uVar2;
        puVar10 = puVar10 + 1;
      } while (uVar13 != uVar11);
    }
    uVar11 = (param_1[1] - (longlong)param_2) + 7U >> 3;
    if ((undefined8 *)param_1[1] < param_2) {
      uVar11 = uVar7;
    }
    if (uVar11 != 0) {
      lVar4 = lVar8 - (longlong)param_2;
      do {
        uVar2 = *param_2;
        uVar7 = uVar7 + 1;
        *param_2 = 0;
        *(undefined8 *)((longlong)puVar6 + lVar4 + 8 + (longlong)param_2) = uVar2;
        param_2 = param_2 + 1;
      } while (uVar7 != uVar11);
    }
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 == (undefined8 *)0x0) {
    *param_1 = (longlong)puVar6;
    param_1[1] = (longlong)(puVar6 + uVar1);
    param_1[2] = (longlong)(puVar6 + uVar5);
    return *param_1 + lVar8;
  }
  for (; puVar9 != (undefined8 *)param_1[1]; puVar9 = puVar9 + 1) {
    if ((void *)*puVar9 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar9);
    }
  }
  pvVar3 = (void *)*param_1;
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18047bb70 size=100 ############

undefined8 * FUN_18047bb70(undefined8 *param_1,ulonglong param_2)

{
  FUN_18047c330(param_1 + 0x12);
  FUN_181136ac0(param_1 + 10);
  param_1[2] = Steinberg::Vst::ComponentBase::vftable;
  param_1[3] = Steinberg::Vst::ComponentBase::vftable;
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18047bbe0 size=43 ############

undefined8 * FUN_18047bbe0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18047bc10 size=43 ############

undefined8 * FUN_18047bc10(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = Steinberg::FObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18047bc40 size=170 ############

void * FUN_18047bc40(void *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  
  DAT_182674ca0 = DAT_182674ca0 + -1;
  if (DAT_182674ca0 == 0) {
    if (DAT_182674ca8 != (HHOOK)0x0) {
      UnhookWindowsHookEx(DAT_182674ca8);
      DAT_182674ca8 = (HHOOK)0x0;
    }
    if (DAT_182674cb0 != (HHOOK)0x0) {
      UnhookWindowsHookEx(DAT_182674cb0);
      DAT_182674cb0 = (HHOOK)0x0;
    }
  }
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x70);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18047c230((longlong)param_1 + 0x60);
  *(undefined ***)((longlong)param_1 + 0x48) = juce::Timer::vftable;
  FUN_1812a7720();
  FUN_181139610(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18047bcf0 size=250 ############

undefined8 *
FUN_18047bcf0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  longlong lVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  *param_1 = juce::JuceVST3EditController::JuceVST3Editor::ContentWrapperComponent::vftable;
  if (param_1[0x16] != 0) {
    FUN_18134b590();
    lVar3 = param_1[0x16];
    lVar4 = *(longlong *)(lVar3 + 0xb0);
    EnterCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0xa0));
    puVar5 = *(undefined8 **)(lVar4 + 0x28);
    if (puVar5 == (undefined8 *)0x0) {
      lVar6 = 0;
    }
    else {
      lVar6 = puVar5[2];
    }
    if (lVar6 == lVar3) {
      *(undefined8 *)(lVar4 + 0x28) = 0;
      if (puVar5 != (undefined8 *)0x0) {
        LOCK();
        piVar1 = (int *)(puVar5 + 1);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)*puVar5)(puVar5,1);
        }
      }
    }
    LeaveCriticalSection((LPCRITICAL_SECTION)(lVar4 + 0xa0));
  }
  puVar5 = (undefined8 *)param_1[0x16];
  if (puVar5 != (undefined8 *)0x0) {
    (**(code **)*puVar5)(puVar5,1,param_3,param_4,uVar7);
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18047bf90 size=270 ############

undefined8 * FUN_18047bf90(undefined8 *param_1,ulonglong param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined8 *puVar2;
  
  *param_1 = juce::JucePluginFactory::vftable;
  if (DAT_182674c98 == param_1) {
    DAT_182674c98 = (undefined8 *)0x0;
  }
  puVar2 = (undefined8 *)param_1[0x3b];
  if (puVar2 == (undefined8 *)0x0) {
    if ((longlong *)param_1[0x3a] != (longlong *)0x0) {
      (**(code **)(*(longlong *)param_1[0x3a] + 0x10))();
    }
    if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
      free(param_1);
    }
    return param_1;
  }
  for (; puVar2 != (undefined8 *)param_1[0x3c]; puVar2 = puVar2 + 1) {
    if ((void *)*puVar2 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free((void *)*puVar2);
    }
  }
  pvVar1 = (void *)param_1[0x3b];
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)((param_1[0x3d] - (longlong)pvVar1 >> 3) * 8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18047d1c0 size=428 ############

void FUN_18047d1c0(longlong param_1)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  longlong lVar4;
  void *pvVar5;
  ulonglong uVar6;
  size_t sVar7;
  size_t sVar8;
  
  uVar1 = *(ulonglong *)(param_1 + 0x10);
  uVar6 = 1;
  if (uVar1 != 0) {
    uVar6 = uVar1;
  }
  for (; (uVar6 == uVar1 || (uVar6 < 8)); uVar6 = uVar6 * 2) {
    if (0xfffffffffffffff - uVar6 < uVar6) {
                    /* WARNING: Subroutine does not return */
      FUN_18047da60();
    }
  }
  uVar6 = uVar6 - uVar1;
  uVar2 = *(ulonglong *)(param_1 + 0x18);
  lVar4 = (uVar1 + uVar6) * 8;
  if (0x1fffffffffffffff < uVar1 + uVar6) {
    lVar4 = -1;
  }
  pvVar3 = (void *)FUN_180480500(lVar4);
  sVar8 = uVar2 * 8;
  pvVar5 = (void *)(*(longlong *)(param_1 + 8) + sVar8);
  sVar7 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar5) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar8 + (longlong)pvVar3),pvVar5,sVar7);
  pvVar5 = (void *)(sVar7 + (longlong)(sVar8 + (longlong)pvVar3));
  if (uVar6 < uVar2) {
    sVar7 = uVar6 * 8;
    memmove(pvVar5,*(void **)(param_1 + 8),sVar7);
    pvVar5 = (void *)(sVar7 + *(longlong *)(param_1 + 8));
    sVar8 = (*(longlong *)(param_1 + 8) - (longlong)pvVar5) + sVar8;
    memmove(pvVar3,pvVar5,sVar8);
    pvVar5 = (void *)(sVar8 + (longlong)pvVar3);
  }
  else {
    memmove(pvVar5,*(void **)(param_1 + 8),sVar8);
    memset((void *)(sVar8 + (longlong)pvVar5),0,(uVar6 - uVar2) * 8);
    pvVar5 = pvVar3;
    sVar7 = sVar8;
  }
  memset(pvVar5,0,sVar7);
  pvVar5 = *(void **)(param_1 + 8);
  if (pvVar5 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar3;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar6;
    return;
  }
  pvVar3 = pvVar5;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar3 = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 18047d010 size=428 ############

void FUN_18047d010(longlong param_1)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  longlong lVar4;
  void *pvVar5;
  ulonglong uVar6;
  size_t sVar7;
  size_t sVar8;
  
  uVar1 = *(ulonglong *)(param_1 + 0x10);
  uVar6 = 1;
  if (uVar1 != 0) {
    uVar6 = uVar1;
  }
  for (; (uVar6 == uVar1 || (uVar6 < 8)); uVar6 = uVar6 * 2) {
    if (0xaaaaaaaaaaaaaaa - uVar6 < uVar6) {
                    /* WARNING: Subroutine does not return */
      FUN_18047da60();
    }
  }
  uVar6 = uVar6 - uVar1;
  uVar2 = *(ulonglong *)(param_1 + 0x18);
  lVar4 = (uVar1 + uVar6) * 8;
  if (0x1fffffffffffffff < uVar1 + uVar6) {
    lVar4 = -1;
  }
  pvVar3 = (void *)FUN_180480500(lVar4);
  sVar8 = uVar2 * 8;
  pvVar5 = (void *)(*(longlong *)(param_1 + 8) + sVar8);
  sVar7 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar5) + *(longlong *)(param_1 + 8);
  memmove((void *)(sVar8 + (longlong)pvVar3),pvVar5,sVar7);
  pvVar5 = (void *)(sVar7 + (longlong)(sVar8 + (longlong)pvVar3));
  if (uVar6 < uVar2) {
    sVar7 = uVar6 * 8;
    memmove(pvVar5,*(void **)(param_1 + 8),sVar7);
    pvVar5 = (void *)(sVar7 + *(longlong *)(param_1 + 8));
    sVar8 = (*(longlong *)(param_1 + 8) - (longlong)pvVar5) + sVar8;
    memmove(pvVar3,pvVar5,sVar8);
    pvVar5 = (void *)(sVar8 + (longlong)pvVar3);
  }
  else {
    memmove(pvVar5,*(void **)(param_1 + 8),sVar8);
    memset((void *)(sVar8 + (longlong)pvVar5),0,(uVar6 - uVar2) * 8);
    pvVar5 = pvVar3;
    sVar7 = sVar8;
  }
  memset(pvVar5,0,sVar7);
  pvVar5 = *(void **)(param_1 + 8);
  if (pvVar5 == (void *)0x0) {
    *(void **)(param_1 + 8) = pvVar3;
    *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar6;
    return;
  }
  pvVar3 = pvVar5;
  if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) &&
     (pvVar3 = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 18047dec0 size=409 ############

void FUN_18047dec0(longlong *param_1,ulonglong param_2,undefined8 *param_3)

{
  void *pvVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)*param_1;
  uVar6 = param_1[1] - (longlong)pvVar1 >> 3;
  uVar5 = param_1[2] - (longlong)pvVar1 >> 3;
  if (param_2 <= uVar5) {
    if (uVar6 < param_2) {
      FUN_1804805a0(pvVar1,param_1[1]);
      puVar4 = (undefined8 *)param_1[1];
      for (lVar3 = param_2 - uVar6; lVar3 != 0; lVar3 = lVar3 + -1) {
        *puVar4 = *param_3;
        puVar4 = puVar4 + 1;
      }
      param_1[1] = (longlong)puVar4;
      return;
    }
    pvVar2 = (void *)((longlong)pvVar1 + param_2 * 8);
    FUN_1804805a0(pvVar1,pvVar2);
    param_1[1] = (longlong)pvVar2;
    return;
  }
  if (param_2 < 0x2000000000000000) {
    uVar6 = param_2;
    if ((uVar5 <= 0x1fffffffffffffff - (uVar5 >> 1)) &&
       (uVar6 = (uVar5 >> 1) + uVar5, uVar6 < param_2)) {
      uVar6 = param_2;
    }
    if (pvVar1 != (void *)0x0) {
      pvVar2 = pvVar1;
      if ((0xfff < uVar5 * 8) &&
         (pvVar2 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar6 != 0) {
      if (0x1fffffffffffffff < uVar6) {
                    /* WARNING: Subroutine does not return */
        FUN_18047cf10();
      }
      lVar3 = uVar6 * 8;
      if (0x1fffffffffffffff < uVar6) {
        lVar3 = -1;
      }
      lVar3 = FUN_180480500(lVar3);
      *param_1 = lVar3;
      param_1[1] = lVar3;
      param_1[2] = *param_1 + uVar6 * 8;
    }
    puVar4 = (undefined8 *)*param_1;
    for (; param_2 != 0; param_2 = param_2 - 1) {
      *puVar4 = *param_3;
      puVar4 = puVar4 + 1;
    }
    param_1[1] = (longlong)puVar4;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_18047cf10();
}



############ FUN_ 18047e410 size=241 ############

void FUN_18047e410(ulonglong *param_1,ulonglong param_2)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  void *_Memory;
  ulonglong uVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  
  uVar1 = param_1[1];
  lVar5 = param_2 * 8;
  uVar2 = *param_1;
  if (0x1fffffffffffffff < param_2) {
    lVar5 = -1;
  }
  puVar4 = (undefined8 *)FUN_180480500(lVar5);
  puVar6 = (undefined8 *)*param_1;
  uVar7 = 0;
  uVar9 = (param_1[1] - (longlong)puVar6) + 7 >> 3;
  if ((undefined8 *)param_1[1] < puVar6) {
    uVar9 = uVar7;
  }
  puVar8 = puVar4;
  if (uVar9 != 0) {
    do {
      uVar7 = uVar7 + 1;
      *puVar8 = *puVar6;
      puVar8 = puVar8 + 1;
      puVar6 = puVar6 + 1;
    } while (uVar7 != uVar9);
  }
  pvVar3 = (void *)*param_1;
  if (pvVar3 == (void *)0x0) {
    *param_1 = (ulonglong)puVar4;
    param_1[1] = (ulonglong)(puVar4 + ((longlong)(uVar1 - uVar2) >> 3));
    param_1[2] = (ulonglong)(puVar4 + param_2);
    return;
  }
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8)) &&
     (_Memory = *(void **)((longlong)pvVar3 - 8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18047fbc0 size=511 ############

longlong FUN_18047fbc0(longlong *param_1,longlong param_2,undefined8 *param_3)

{
  void *pvVar1;
  longlong lVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  longlong lVar5;
  void *_Memory;
  undefined8 *puVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar5 = *param_1;
  lVar8 = param_2 - lVar5 >> 4;
  lVar10 = param_1[1] - lVar5 >> 4;
  if (lVar10 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar11 = lVar10 + 1;
  uVar4 = param_1[2] - lVar5 >> 4;
  uVar9 = uVar11;
  if ((uVar4 <= 0xfffffffffffffff - (uVar4 >> 1)) && (uVar9 = uVar4 + (uVar4 >> 1), uVar9 < uVar11))
  {
    uVar9 = uVar11;
  }
  lVar5 = uVar9 << 4;
  if (0xfffffffffffffff < uVar9) {
    lVar5 = -1;
  }
  lVar2 = FUN_180480500(lVar5);
  puVar6 = (undefined8 *)(lVar8 * 0x10 + lVar2);
  *puVar6 = 0;
  puVar6[1] = 0;
  lVar10 = lVar2;
  uVar3 = FUN_18047e100();
  *puVar6 = uVar3;
  *puVar6 = *param_3;
  *param_3 = uVar3;
  uVar3 = puVar6[1];
  puVar6[1] = param_3[1];
  param_3[1] = uVar3;
  lVar5 = param_1[1];
  if (param_2 == lVar5) {
    lVar7 = lVar2;
    for (lVar10 = *param_1; lVar10 != lVar5; lVar10 = lVar10 + 0x10) {
      FUN_180482a00(lVar7,lVar10);
      lVar7 = lVar7 + 0x10;
    }
  }
  else {
    FUN_180480b40(param_1,*param_1,param_2,lVar2,lVar5,lVar10,uVar12);
    FUN_180480b40(param_1,param_2,param_1[1],puVar6 + 2);
  }
  if (*param_1 == 0) {
    *param_1 = lVar2;
    param_1[1] = uVar11 * 0x10 + lVar2;
    param_1[2] = uVar9 * 0x10 + lVar2;
    return lVar8 * 0x10 + *param_1;
  }
  FUN_18047d770();
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18047fdd0 size=511 ############

longlong FUN_18047fdd0(longlong *param_1,longlong param_2,undefined8 *param_3)

{
  void *pvVar1;
  longlong lVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  longlong lVar5;
  void *_Memory;
  undefined8 *puVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar5 = *param_1;
  lVar8 = param_2 - lVar5 >> 4;
  lVar10 = param_1[1] - lVar5 >> 4;
  if (lVar10 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar11 = lVar10 + 1;
  uVar4 = param_1[2] - lVar5 >> 4;
  uVar9 = uVar11;
  if ((uVar4 <= 0xfffffffffffffff - (uVar4 >> 1)) && (uVar9 = uVar4 + (uVar4 >> 1), uVar9 < uVar11))
  {
    uVar9 = uVar11;
  }
  lVar5 = uVar9 << 4;
  if (0xfffffffffffffff < uVar9) {
    lVar5 = -1;
  }
  lVar2 = FUN_180480500(lVar5);
  puVar6 = (undefined8 *)(lVar8 * 0x10 + lVar2);
  *puVar6 = 0;
  puVar6[1] = 0;
  lVar10 = lVar2;
  uVar3 = FUN_18047e290();
  *puVar6 = uVar3;
  *puVar6 = *param_3;
  *param_3 = uVar3;
  uVar3 = puVar6[1];
  puVar6[1] = param_3[1];
  param_3[1] = uVar3;
  lVar5 = param_1[1];
  if (param_2 == lVar5) {
    lVar7 = lVar2;
    for (lVar10 = *param_1; lVar10 != lVar5; lVar10 = lVar10 + 0x10) {
      FUN_180482ad0(lVar7,lVar10);
      lVar7 = lVar7 + 0x10;
    }
  }
  else {
    FUN_180480be0(param_1,*param_1,param_2,lVar2,lVar5,lVar10,uVar12);
    FUN_180480be0(param_1,param_2,param_1[1],puVar6 + 2);
  }
  if (*param_1 == 0) {
    *param_1 = lVar2;
    param_1[1] = uVar11 * 0x10 + lVar2;
    param_1[2] = uVar9 * 0x10 + lVar2;
    return lVar8 * 0x10 + *param_1;
  }
  FUN_18047d820();
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18047ffe0 size=600 ############

longlong FUN_18047ffe0(longlong *param_1,longlong param_2,longlong param_3)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  uint uVar6;
  longlong lVar7;
  longlong lVar8;
  ulonglong uVar9;
  undefined8 *puVar10;
  void *_Memory;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  lVar7 = *param_1;
  lVar8 = (param_2 - lVar7) / 6 + (param_2 - lVar7 >> 0x3f);
  lVar5 = (param_1[1] - lVar7) / 0x18;
  if (lVar5 == 0xaaaaaaaaaaaaaaa) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar5 + 1;
  uVar4 = (param_1[2] - lVar7) / 0x18;
  uVar9 = uVar1;
  if ((uVar4 <= 0xaaaaaaaaaaaaaaa - (uVar4 >> 1)) && (uVar9 = uVar4 + (uVar4 >> 1), uVar9 < uVar1))
  {
    uVar9 = uVar1;
  }
  lVar7 = uVar9 * 0x18;
  if (0xaaaaaaaaaaaaaaa < uVar9) {
    lVar7 = -1;
  }
  lVar5 = FUN_180480500(lVar7);
  lVar7 = ((lVar8 >> 2) - (lVar8 >> 0x3f)) * 0x18;
  puVar10 = (undefined8 *)(lVar7 + lVar5);
  puVar10[1] = 0;
  *(uint *)(puVar10 + 2) = *(uint *)(puVar10 + 2) & 0x80000000;
  *puVar10 = Steinberg::String::vftable;
  uVar6 = (*(uint *)(puVar10 + 2) ^ *(uint *)(param_3 + 0x10)) & 0x40000000 ^ *(uint *)(puVar10 + 2)
  ;
  *(uint *)(puVar10 + 2) = uVar6;
  puVar10[1] = *(undefined8 *)(param_3 + 8);
  *(uint *)(puVar10 + 2) = *(uint *)(puVar10 + 2) ^ (*(uint *)(param_3 + 0x10) ^ uVar6) & 0x3fffffff
  ;
  *(undefined8 *)(param_3 + 8) = 0;
  *(uint *)(param_3 + 0x10) = *(uint *)(param_3 + 0x10) & 0xc0000000;
  if (param_2 == param_1[1]) {
    FUN_180480ed0(*param_1,param_1[1],lVar5,param_1);
  }
  else {
    FUN_180480c80(uVar6,*param_1,param_2,lVar5,puVar10 + 3,lVar5,uVar11);
    FUN_180480c80();
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar2; puVar10 = puVar10 + 3) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar3) / 0x18) * 0x18)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar5;
  param_1[1] = lVar5 + uVar1 * 0x18;
  param_1[2] = uVar9 * 0x18 + lVar5;
  return *param_1 + lVar7;
}



############ FUN_ 1804803a0 size=348 ############

longlong FUN_1804803a0(longlong *param_1,void *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  void *pvVar5;
  ulonglong uVar6;
  longlong lVar7;
  void *_Dst;
  longlong lVar8;
  size_t _Size;
  
  lVar7 = *param_1;
  lVar8 = (longlong)param_2 - lVar7 >> 3;
  lVar3 = param_1[1] - lVar7 >> 3;
  if (lVar3 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar6 = param_1[2] - lVar7 >> 3;
  uVar1 = lVar3 + 1;
  uVar4 = uVar1;
  if ((uVar6 <= 0x1fffffffffffffff - (uVar6 >> 1)) && (uVar4 = (uVar6 >> 1) + uVar6, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  lVar7 = uVar4 * 8;
  if (0x1fffffffffffffff < uVar4) {
    lVar7 = -1;
  }
  pvVar5 = (void *)FUN_180480500(lVar7);
  *(undefined8 *)((longlong)pvVar5 + lVar8 * 8) = *param_3;
  pvVar2 = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)pvVar2;
    _Dst = pvVar5;
    param_2 = pvVar2;
  }
  else {
    memmove(pvVar5,pvVar2,(longlong)param_2 - (longlong)pvVar2);
    _Size = param_1[1] - (longlong)param_2;
    _Dst = (void *)((longlong)pvVar5 + (lVar8 + 1) * 8);
  }
  memmove(_Dst,param_2,_Size);
  pvVar2 = (void *)*param_1;
  if (pvVar2 == (void *)0x0) {
    *param_1 = (longlong)pvVar5;
    param_1[1] = (longlong)((longlong)pvVar5 + uVar1 * 8);
    param_1[2] = (longlong)(uVar4 * 8 + (longlong)pvVar5);
    return *param_1 + lVar8 * 8;
  }
  pvVar5 = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
     (pvVar5 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 180480fa0 size=406 ############

void FUN_180480fa0(longlong *param_1,void *param_2,longlong param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  longlong lVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  size_t _Size;
  
  pvVar1 = (void *)*param_1;
  _Size = param_3 - (longlong)param_2;
  uVar2 = param_1[1] - (longlong)pvVar1 >> 3;
  uVar5 = param_1[2] - (longlong)pvVar1 >> 3;
  uVar6 = (longlong)_Size >> 3;
  if (uVar5 < uVar6) {
    if (0x1fffffffffffffff < uVar6) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar2 = uVar6;
    if ((uVar5 <= 0x1fffffffffffffff - (uVar5 >> 1)) &&
       (uVar2 = (uVar5 >> 1) + uVar5, uVar2 < uVar6)) {
      uVar2 = uVar6;
    }
    if (pvVar1 != (void *)0x0) {
      pvVar3 = pvVar1;
      if ((0xfff < uVar5 * 8) &&
         (pvVar3 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar3);
    }
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar2 != 0) {
      if (0x1fffffffffffffff < uVar2) {
                    /* WARNING: Subroutine does not return */
        FUN_18047cf10();
      }
      lVar4 = uVar2 * 8;
      if (0x1fffffffffffffff < uVar2) {
        lVar4 = -1;
      }
      lVar4 = FUN_180480500(lVar4);
      *param_1 = lVar4;
      param_1[1] = lVar4;
      param_1[2] = *param_1 + uVar2 * 8;
    }
    pvVar1 = (void *)*param_1;
    memmove(pvVar1,param_2,_Size);
    param_1[1] = _Size + (longlong)pvVar1;
  }
  else if (uVar2 < uVar6) {
    pvVar3 = (void *)((longlong)param_2 + uVar2 * 8);
    memmove(pvVar1,param_2,(longlong)pvVar3 - (longlong)param_2);
    pvVar1 = (void *)param_1[1];
    memmove(pvVar1,pvVar3,param_3 - (longlong)pvVar3);
    param_1[1] = (param_3 - (longlong)pvVar3) + (longlong)pvVar1;
  }
  else {
    memmove(pvVar1,param_2,_Size);
    param_1[1] = (longlong)((longlong)pvVar1 + uVar6 * 8);
  }
  return;
}



############ FUN_ 1804811b0 size=83 ############

void FUN_1804811b0(void *param_1,char param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180481fa0 size=579 ############

undefined8 * FUN_180481fa0(float *param_1,undefined8 *param_2,byte *param_3,longlong *param_4)

{
  longlong lVar1;
  longlong lVar2;
  longlong *plVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  float fVar8;
  float fVar9;
  undefined1 local_28 [16];
  
  uVar7 = (((((((((ulonglong)*param_3 ^ 0xcbf29ce484222325) * 0x100000001b3 ^ (ulonglong)param_3[1])
                * 0x100000001b3 ^ (ulonglong)param_3[2]) * 0x100000001b3 ^ (ulonglong)param_3[3]) *
              0x100000001b3 ^ (ulonglong)param_3[4]) * 0x100000001b3 ^ (ulonglong)param_3[5]) *
            0x100000001b3 ^ (ulonglong)param_3[6]) * 0x100000001b3 ^ (ulonglong)param_3[7]) *
          0x100000001b3;
  uVar6 = *(ulonglong *)(param_1 + 0xc) & uVar7;
  lVar5 = *(longlong *)(param_1 + 2);
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 6) + uVar6 * 0x10);
  if (lVar5 != lVar1) {
    lVar5 = **(longlong **)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10);
    while (lVar5 != lVar1) {
      lVar5 = *(longlong *)(lVar5 + 8);
      if (*(longlong *)param_3 == *(longlong *)(lVar5 + 0x10)) {
        *(longlong *)param_4[1] = *param_4;
        *(longlong *)(*param_4 + 8) = param_4[1];
        *(longlong *)(param_1 + 4) = *(longlong *)(param_1 + 4) + -1;
        FUN_18047cfb0(param_4 + 3);
                    /* WARNING: Subroutine does not return */
        free(param_4);
      }
    }
  }
  lVar1 = *param_4;
  if (lVar5 != lVar1) {
    *(longlong *)param_4[1] = lVar1;
    **(longlong **)(lVar1 + 8) = lVar5;
    **(undefined8 **)(lVar5 + 8) = param_4;
    lVar2 = *(longlong *)(lVar5 + 8);
    *(undefined8 *)(lVar5 + 8) = *(undefined8 *)(lVar1 + 8);
    *(longlong *)(lVar1 + 8) = param_4[1];
    param_4[1] = lVar2;
  }
  lVar1 = *(longlong *)(param_1 + 6);
  lVar2 = *(longlong *)(lVar1 + uVar6 * 0x10);
  if (lVar2 == *(longlong *)(param_1 + 2)) {
    *(longlong **)(lVar1 + uVar6 * 0x10) = param_4;
    *(longlong **)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) = param_4;
  }
  else if (lVar2 == lVar5) {
    *(longlong **)(lVar1 + uVar6 * 0x10) = param_4;
  }
  else {
    plVar3 = (longlong *)**(undefined8 **)(lVar1 + 8 + uVar6 * 0x10);
    *(longlong **)(lVar1 + 8 + uVar6 * 0x10) = plVar3;
    if (plVar3 != param_4) {
      *(undefined8 *)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) =
           *(undefined8 *)(*(longlong *)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) + 8);
    }
  }
  uVar4 = *(ulonglong *)(param_1 + 0xe);
  fVar8 = (float)*(longlong *)(param_1 + 4);
  if (*(longlong *)(param_1 + 4) < 0) {
    fVar8 = fVar8 + DAT_1824c4624;
  }
  fVar9 = (float)(longlong)uVar4;
  if ((longlong)uVar4 < 0) {
    fVar9 = fVar9 + DAT_1824c4624;
  }
  if (*param_1 <= fVar8 / fVar9 && fVar8 / fVar9 != *param_1) {
    if (uVar4 < 0x200) {
      uVar4 = uVar4 * 8;
    }
    else if (uVar4 < 0xfffffffffffffff) {
      uVar4 = uVar4 * 2;
    }
    FUN_18047d9c0(param_1,uVar4,uVar6 * 2,uVar7,param_4,0xfffffffffffffffe);
    plVar3 = *(longlong **)(param_1 + 2);
    if ((longlong *)*plVar3 != plVar3) {
      lVar5 = plVar3[1];
      do {
        lVar1 = **(longlong **)(param_1 + 2);
        FUN_180481fa0(param_1,local_28,lVar1 + 0x10);
      } while (lVar1 != lVar5);
    }
  }
  *param_2 = param_4;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 180483170 size=511 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180483170(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  undefined8 uVar1;
  undefined8 ***pppuVar2;
  longlong *plVar3;
  undefined8 ****ppppuVar4;
  void *pvVar5;
  void *pvVar6;
  undefined1 auStack_c8 [32];
  longlong *local_a8;
  undefined8 local_a0;
  undefined1 local_98 [32];
  undefined8 ***local_78;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined8 local_68;
  ulonglong local_60;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  longlong local_48;
  ulonglong uStack_40;
  ulonglong local_38;
  
  local_a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_a8 = param_1;
  plVar3 = (longlong *)FUN_180487aa0(local_98,param_3);
  local_78 = (undefined8 ***)*param_2;
  uStack_70 = *(undefined4 *)(param_2 + 1);
  uStack_6c = *(undefined4 *)((longlong)param_2 + 0xc);
  local_a8 = plVar3;
  if (plVar3[2] != 0) {
    FUN_180489290(plVar3,&DAT_182495db0,2);
  }
  (**(code **)(*(longlong *)CONCAT44(uStack_6c,uStack_70) + 0x10))
            ((longlong *)CONCAT44(uStack_6c,uStack_70),&local_78,(ulonglong)local_78 & 0xffffffff);
  ppppuVar4 = &local_78;
  if (0xf < local_60) {
    ppppuVar4 = (undefined8 ****)local_78;
  }
  FUN_180489290(plVar3,ppppuVar4,local_68);
  if (0xf < local_60) {
    ppppuVar4 = (undefined8 ****)local_78;
    if ((0xfff < local_60 + 1) &&
       (ppppuVar4 = (undefined8 ****)local_78[-1],
       0x1f < (ulonglong)((longlong)local_78 + (-8 - (longlong)ppppuVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(ppppuVar4);
  }
  local_68 = 0;
  local_60 = 0xf;
  local_78 = (undefined8 ***)((ulonglong)local_78 & 0xffffffffffffff00);
  local_58 = (undefined4)*plVar3;
  uStack_54 = *(undefined4 *)((longlong)plVar3 + 4);
  pppuVar2 = (undefined8 ***)*plVar3;
  uStack_50 = (undefined4)plVar3[1];
  uStack_4c = *(undefined4 *)((longlong)plVar3 + 0xc);
  local_48 = plVar3[2];
  uStack_40 = plVar3[3];
  plVar3[2] = 0;
  plVar3[3] = 0xf;
  *(undefined1 *)plVar3 = 0;
  if (0xf < (ulonglong)plVar3[3]) {
    pvVar6 = (void *)*plVar3;
    pvVar5 = pvVar6;
    if ((0xfff < plVar3[3] + 1U) &&
       (pvVar5 = *(void **)((longlong)pvVar6 + -8),
       0x1f < (ulonglong)((longlong)pvVar6 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  plVar3[2] = 0;
  plVar3[3] = 0xf;
  *(undefined1 *)plVar3 = 0;
  local_78 = (undefined8 ***)&local_58;
  if (0xf < uStack_40) {
    local_78 = pppuVar2;
  }
  *param_1 = std::exception::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  uStack_70 = CONCAT31(uStack_70._1_3_,1);
  __std_exception_copy(&local_78);
  *param_1 = std::runtime_error::vftable;
  if (uStack_40 < 0x10) {
    *param_1 = std::_System_error::vftable;
    uVar1 = param_2[1];
    param_1[3] = *param_2;
    param_1[4] = uVar1;
  }
  pvVar5 = (void *)CONCAT44(uStack_54,local_58);
  pvVar6 = pvVar5;
  if ((0xfff < uStack_40 + 1) &&
     (pvVar6 = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 180489290 size=353 ############

undefined8 * FUN_180489290(undefined8 *param_1,void *param_2,size_t param_3)

{
  ulonglong uVar1;
  ulonglong uVar2;
  size_t _Size;
  void *_Src;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  
  uVar2 = param_1[3];
  _Size = param_1[2];
  if (uVar2 - _Size < param_3) {
    if (0x7fffffffffffffff - _Size < param_3) {
                    /* WARNING: Subroutine does not return */
      FUN_18048c740();
    }
    uVar5 = _Size + param_3 | 0xf;
    uVar6 = 0x7fffffffffffffff;
    if (((uVar5 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) &&
       (uVar1 = (uVar2 >> 1) + uVar2, uVar6 = uVar5, uVar5 < uVar1)) {
      uVar6 = uVar1;
    }
    pvVar4 = (void *)FUN_180480500(uVar6 + 1);
    param_1[2] = _Size + param_3;
    param_1[3] = uVar6;
    if (0xf < uVar2) {
      _Src = (void *)*param_1;
      memcpy(pvVar4,_Src,_Size);
      memcpy((void *)((longlong)pvVar4 + _Size),param_2,param_3);
      *(undefined1 *)((longlong)((longlong)pvVar4 + _Size) + param_3) = 0;
      pvVar4 = _Src;
      if ((0xfff < uVar2 + 1) &&
         (pvVar4 = *(void **)((longlong)_Src + -8),
         0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar4);
    }
    memcpy(pvVar4,param_1,_Size);
    memcpy((void *)((longlong)pvVar4 + _Size),param_2,param_3);
    *(undefined1 *)((longlong)((longlong)pvVar4 + _Size) + param_3) = 0;
    *param_1 = pvVar4;
  }
  else {
    param_1[2] = _Size + param_3;
    puVar3 = param_1;
    if (0xf < uVar2) {
      puVar3 = (undefined8 *)*param_1;
    }
    memmove((void *)((longlong)puVar3 + _Size),param_2,param_3);
    *(undefined1 *)((longlong)((longlong)puVar3 + _Size) + param_3) = 0;
  }
  return param_1;
}



############ FUN_ 180483380 size=67 ############

undefined8 * FUN_180483380(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804833d0 size=184 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804833d0(undefined8 *param_1,undefined8 *param_2)

{
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined8 *local_48;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined8 local_38;
  void *local_30 [3];
  ulonglong local_18;
  ulonglong local_10;
  
  local_38 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_48 = param_1;
  FUN_180487940(local_30,&DAT_18249336a);
  local_48 = (undefined8 *)*param_2;
  uStack_40 = *(undefined4 *)(param_2 + 1);
  uStack_3c = *(undefined4 *)((longlong)param_2 + 0xc);
  FUN_180483170(param_1,&local_48,local_30);
  if (local_18 < 0x10) {
    *param_1 = std::system_error::vftable;
  }
  _Memory = local_30[0];
  if ((0xfff < local_18 + 1) &&
     (_Memory = *(void **)((longlong)local_30[0] + -8),
     0x1f < (ulonglong)((longlong)local_30[0] + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1804838f0 size=43 ############

undefined8 * FUN_1804838f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804840e0 size=86 ############

void * .?AV?$LowPassFilter@M$0BA@$01@@::vtbl___AV__LowPassFilter_M_0BA__01__
                 (void *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484150 size=43 ############

undefined8 * FUN_180484150(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ProcessorStateManagerOptionListener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484190 size=43 ############

undefined8 * FUN_180484190(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ConfigOptionListener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804841c0 size=43 ############

undefined8 *
.?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
          (undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ConfigOption::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804841f0 size=244 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804841f0(undefined8 *param_1,longlong *param_2,undefined8 param_3)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  undefined1 auStack_78 [32];
  longlong local_58;
  longlong *local_50;
  undefined1 local_48 [8];
  undefined8 local_40;
  undefined8 *local_38;
  longlong *local_30;
  undefined1 local_28 [8];
  ulonglong local_20;
  
  local_40 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  *param_1 = param_2;
  param_1[1] = param_3;
  local_38 = param_1;
  (**(code **)(*param_2 + 0x10))(param_2,param_1 + 2);
  uVar2 = (**(code **)(*param_2 + 0x10))(param_2,&local_58);
  FUN_1811e1fd0(uVar2,param_3);
  _Memory = (uint *)(local_58 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  (**(code **)(*(longlong *)*param_1 + 0x20))((longlong *)*param_1,&local_30);
  local_50 = local_30;
  (**(code **)(*local_30 + 0xb8))(local_30,local_48,local_28);
  (**(code **)(*(longlong *)param_1[1] + 8))((longlong *)param_1[1],param_1 + 2,&local_50);
  (**(code **)(*local_30 + 0xb0))(local_30,local_28);
}



############ FUN_ 180484350 size=84 ############

undefined8 * FUN_180484350(undefined8 param_1,undefined8 *param_2)

{
  uint uVar1;
  bool bVar2;
  
  *param_2 = &PTR_vftable_18262b560;
  param_2[1] = &DAT_1821dbf98;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return param_2;
}



############ FUN_ 180484550 size=43 ############

undefined8 * FUN_180484550(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ParameterFloat::Listener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484580 size=43 ############

undefined8 * FUN_180484580(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ParameterFloat::ChangeGestureListener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804845c0 size=43 ############

undefined8 * FUN_1804845c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = BaseUpdater::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484600 size=62 ############

undefined8 * FUN_180484600(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484740 size=125 ############

void FUN_180484740(longlong param_1,longlong *param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  uint *_Memory;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar4 = *(longlong *)(param_1 + 0x10);
  *(longlong *)(param_1 + 0x10) = *param_2;
  UNLOCK();
  piVar1 = (int *)(lVar4 + -0x10);
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar1);
    }
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1804847d0 size=52 ############

void * FUN_1804847d0(void *param_1,ulonglong param_2)

{
  FUN_180484660();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484930 size=52 ############

void * FUN_180484930(void *param_1,ulonglong param_2)

{
  FUN_180484880();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181245f80 size=101 ############

void FUN_181245f80(undefined8 param_1,float param_2)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res18 [2];
  
  FUN_1812339a0(local_res18,(double)param_2,0,0,0xfffffffffffffffe);
  FUN_181232d30(param_1,local_res18);
  _Memory = (uint *)(local_res18[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180484b10 size=52 ############

void * FUN_180484b10(void *param_1,ulonglong param_2)

{
  FUN_18120f710();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484d50 size=52 ############

void * FUN_180484d50(void *param_1,ulonglong param_2)

{
  FUN_1811c6040();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180484f90 size=401 ############

byte * FUN_180484f90(undefined4 *param_1,byte *param_2,float param_3,int param_4)

{
  uint uVar1;
  byte bVar2;
  byte bVar3;
  bool bVar4;
  bool bVar5;
  byte bVar6;
  byte **ppbVar7;
  uint *puVar8;
  int iVar9;
  byte *pbVar10;
  byte *local_res8;
  byte *local_res10;
  byte *local_20;
  undefined8 local_18;
  
  local_18 = 0xfffffffffffffffe;
  iVar9 = 0;
  local_res10 = param_2;
  FUN_1812339a0(&local_res10,(double)param_3,*param_1,0,0);
  pbVar10 = local_res10;
  if (param_4 < 1) {
    local_20 = local_res10;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
    ppbVar7 = &local_20;
    bVar5 = false;
    bVar4 = true;
  }
  else {
    do {
      bVar2 = *pbVar10;
      if (bVar2 == 0) {
        local_res8 = local_res10;
        if ((*(uint *)(local_res10 + -0x10) & 0x30000000) != 0) goto LAB_180485020;
        LOCK();
        *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
        UNLOCK();
        ppbVar7 = &local_res8;
        bVar5 = true;
        bVar4 = false;
        goto LAB_180485080;
      }
      iVar9 = iVar9 + 1;
      pbVar10 = pbVar10 + 1;
      if ((char)bVar2 < '\0') {
        bVar6 = 0x40;
        bVar3 = bVar2 & 0x40;
        while ((bVar3 != 0 && (8 < bVar6))) {
          pbVar10 = pbVar10 + 1;
          bVar6 = bVar6 >> 1;
          bVar3 = bVar2 & bVar6;
        }
      }
    } while (iVar9 < param_4);
    FUN_18124a8a0(&local_res8,local_res10);
LAB_180485020:
    ppbVar7 = &local_res8;
    bVar5 = true;
    bVar4 = false;
  }
LAB_180485080:
  *(byte **)param_2 = *ppbVar7;
  *ppbVar7 = &DAT_1821dbf98;
  if ((bVar4) && (puVar8 = (uint *)(local_20 + -0x10), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if ((bVar5) && (puVar8 = (uint *)(local_res8 + -0x10), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(local_res10 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return param_2;
}



############ FUN_ 180485130 size=111 ############

undefined8 * FUN_180485130(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  *param_1 = SyncUpdater::vftable;
  plVar1 = (longlong *)param_1[10];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 3);
    param_1[10] = 0;
  }
  *param_1 = BaseUpdater::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804851a0 size=111 ############

undefined8 * FUN_1804851a0(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  *param_1 = SyncUpdater::vftable;
  plVar1 = (longlong *)param_1[10];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 3);
    param_1[10] = 0;
  }
  *param_1 = BaseUpdater::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180485330 size=33 ############

void * FUN_180485330(void *param_1,ulonglong param_2)

{
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180485360 size=52 ############

void * FUN_180485360(void *param_1,ulonglong param_2)

{
  FUN_18119de30();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804854b0 size=52 ############

void * FUN_1804854b0(void *param_1,ulonglong param_2)

{
  FUN_1804854f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180485730 size=62 ############

undefined8 * FUN_180485730(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180485770 size=94 ############

void * FUN_180485770(void *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x40) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180484660(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804857e0 size=86 ############

void * FUN_1804857e0(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x10);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = *(undefined8 **)((longlong)param_1 + 8);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804876e0 size=171 ############

undefined8 * FUN_1804876e0(undefined8 *param_1,undefined8 *param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined8 uVar4;
  longlong *_Memory;
  uint *_Memory_00;
  longlong *plVar5;
  ulonglong uVar6;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar4 = *param_2;
  *param_2 = 0;
  uVar1 = *(undefined4 *)(param_2 + 1);
  uVar2 = *(undefined4 *)((longlong)param_2 + 0xc);
  param_2[1] = 0;
  _Memory = (longlong *)*param_1;
  *param_1 = uVar4;
  *(undefined4 *)(param_1 + 1) = uVar1;
  uVar3 = *(uint *)((longlong)param_1 + 0xc);
  *(undefined4 *)((longlong)param_1 + 0xc) = uVar2;
  if (0 < (int)uVar3) {
    uVar6 = (ulonglong)uVar3;
    plVar5 = _Memory;
    do {
      _Memory_00 = (uint *)(*plVar5 + -0x10);
      if ((*_Memory_00 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *_Memory_00;
        *_Memory_00 = *_Memory_00 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      plVar5 = plVar5 + 1;
      uVar6 = uVar6 - 1;
    } while (uVar6 != 0);
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180486ad0 size=441 ############

void FUN_180486ad0(void)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  void *pvVar5;
  size_t sVar6;
  size_t sVar7;
  
  uVar1 = DAT_182673938;
  uVar4 = 1;
  if (DAT_182673930 != 0) {
    uVar4 = DAT_182673930;
  }
  for (; (uVar4 == DAT_182673930 || (uVar4 < 8)); uVar4 = uVar4 * 2) {
    if (0x38e38e38e38e38e - uVar4 < uVar4) {
                    /* WARNING: Subroutine does not return */
      FUN_18047da60();
    }
  }
  uVar4 = uVar4 - DAT_182673930;
  lVar3 = (DAT_182673930 + uVar4) * 8;
  if (0x1fffffffffffffff < DAT_182673930 + uVar4) {
    lVar3 = -1;
  }
  pvVar2 = (void *)FUN_180480500(lVar3);
  sVar7 = uVar1 * 8;
  sVar6 = (DAT_182673930 * 8 - (longlong)(sVar7 + (longlong)DAT_182673928)) +
          (longlong)DAT_182673928;
  memmove((void *)(sVar7 + (longlong)pvVar2),(void *)(sVar7 + (longlong)DAT_182673928),sVar6);
  pvVar5 = (void *)((longlong)(sVar7 + (longlong)pvVar2) + sVar6);
  if (uVar4 < uVar1) {
    sVar6 = uVar4 * 8;
    memmove(pvVar5,DAT_182673928,sVar6);
    sVar7 = (sVar7 - (longlong)(sVar6 + (longlong)DAT_182673928)) + (longlong)DAT_182673928;
    memmove(pvVar2,(void *)(sVar6 + (longlong)DAT_182673928),sVar7);
    pvVar5 = (void *)(sVar7 + (longlong)pvVar2);
  }
  else {
    memmove(pvVar5,DAT_182673928,sVar7);
    memset((void *)(sVar7 + (longlong)pvVar5),0,(uVar4 - uVar1) * 8);
    pvVar5 = pvVar2;
    sVar6 = sVar7;
  }
  memset(pvVar5,0,sVar6);
  if (DAT_182673928 == (void *)0x0) {
    DAT_182673930 = DAT_182673930 + uVar4;
    DAT_182673928 = pvVar2;
    return;
  }
  pvVar2 = DAT_182673928;
  if ((0xfff < DAT_182673930 * 8) &&
     (pvVar2 = *(void **)((longlong)DAT_182673928 + -8),
     0x1f < (ulonglong)((longlong)DAT_182673928 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180487580 size=84 ############

undefined8 * FUN_180487580(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  void *_Memory;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar1 = *param_2;
  *param_2 = 0;
  _Memory = (void *)*param_1;
  *param_1 = uVar1;
  if (_Memory != (void *)0x0) {
    FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 180487fe0 size=431 ############

int FUN_180487fe0(basic_streambuf<char,std::char_traits<char>_> *param_1,int param_2)

{
  longlong lVar1;
  ulonglong uVar2;
  void *_Src;
  undefined8 uVar3;
  char *pcVar4;
  void *pvVar5;
  longlong lVar6;
  ulonglong _Size;
  
  if (((byte)param_1[0x70] & 2) != 0) {
    return -1;
  }
  if (param_2 == -1) {
    return 0;
  }
  uVar2 = **(ulonglong **)(param_1 + 0x40);
  if ((uVar2 != 0) && (uVar2 < (longlong)**(int **)(param_1 + 0x58) + uVar2)) {
    pcVar4 = std::basic_streambuf<char,std::char_traits<char>_>::_Pninc(param_1);
    *pcVar4 = (char)param_2;
    *(ulonglong *)(param_1 + 0x68) = uVar2 + 1;
    return param_2;
  }
  _Size = 0;
  _Src = (void *)**(undefined8 **)(param_1 + 0x18);
  if ((uVar2 == 0) ||
     (_Size = ((longlong)**(int **)(param_1 + 0x58) + uVar2) - (longlong)_Src, _Size < 0x20)) {
    lVar6 = 0x20;
  }
  else if (_Size < 0x3fffffff) {
    lVar6 = _Size * 2;
  }
  else {
    lVar6 = 0x7fffffff;
    if (0x7ffffffe < _Size) {
      return -1;
    }
  }
  pvVar5 = (void *)FUN_180480500(lVar6);
  memcpy(pvVar5,_Src,_Size);
  lVar1 = (longlong)pvVar5 + _Size;
  *(longlong *)(param_1 + 0x68) = lVar1 + 1;
  **(undefined8 **)(param_1 + 0x20) = pvVar5;
  **(longlong **)(param_1 + 0x40) = lVar1;
  **(int **)(param_1 + 0x58) = ((int)pvVar5 - (int)lVar1) + (int)lVar6;
  if (((byte)param_1[0x70] & 4) == 0) {
    uVar3 = *(undefined8 *)(param_1 + 0x68);
    lVar6 = (**(longlong **)(param_1 + 0x38) - (longlong)_Src) + (longlong)pvVar5;
    **(undefined8 **)(param_1 + 0x18) = pvVar5;
    **(longlong **)(param_1 + 0x38) = lVar6;
    **(int **)(param_1 + 0x50) = (int)uVar3 - (int)lVar6;
  }
  else {
    **(undefined8 **)(param_1 + 0x18) = pvVar5;
    **(undefined8 **)(param_1 + 0x38) = 0;
    **(int **)(param_1 + 0x50) = (int)pvVar5;
  }
  if (((byte)param_1[0x70] & 1) == 0) {
    *(uint *)(param_1 + 0x70) = *(uint *)(param_1 + 0x70) | 1;
    pcVar4 = std::basic_streambuf<char,std::char_traits<char>_>::_Pninc(param_1);
    *pcVar4 = (char)param_2;
    return param_2;
  }
  pvVar5 = _Src;
  if ((0xfff < _Size) &&
     (pvVar5 = *(void **)((longlong)_Src + -8),
     0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 180488250 size=59 ############

void * FUN_180488250(longlong param_1,ulonglong param_2)

{
  void *_Memory;
  
  _Memory = (void *)(param_1 + -0x98);
  FUN_180485840(_Memory);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 180488290 size=52 ############

void * FUN_180488290(void *param_1,ulonglong param_2)

{
  FUN_180488190();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804882d0 size=66 ############

void FUN_1804882d0(undefined8 param_1,longlong param_2)

{
  undefined8 local_res8;
  
  if (param_2 != 0) {
    local_res8 = param_1;
    FUN_180489d80(param_2 + 0x40,&local_res8,**(undefined8 **)(param_2 + 0x40),
                  *(undefined8 **)(param_2 + 0x40));
                    /* WARNING: Subroutine does not return */
    free(*(void **)(param_2 + 0x40));
  }
  return;
}



############ FUN_ 1804883e0 size=231 ############

void FUN_1804883e0(undefined8 param_1,void *param_2)

{
  longlong *plVar1;
  int iVar2;
  
  if (param_2 == (void *)0x0) {
    return;
  }
  iVar2 = _Mtx_lock(param_2);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  LOCK();
  *(undefined1 *)((longlong)param_2 + 0x9d) = 1;
  UNLOCK();
  LOCK();
  *(undefined1 *)((longlong)param_2 + 0x9c) = 0;
  UNLOCK();
  iVar2 = _Cnd_broadcast((longlong)param_2 + 0x50);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  iVar2 = _Mtx_unlock(param_2);
  if (iVar2 != 0) {
    std::_Throw_C_error(iVar2);
  }
  FUN_1804836e0((longlong)param_2 + 0xe0);
  if (*(int *)((longlong)param_2 + 0xe8) != 0) {
                    /* WARNING: Subroutine does not return */
    terminate();
  }
  plVar1 = *(longlong **)((longlong)param_2 + 0xd8);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_2 + 0xa0));
    *(undefined8 *)((longlong)param_2 + 0xd8) = 0;
  }
  _Cnd_destroy_in_situ((longlong)param_2 + 0x50);
  _Mtx_destroy_in_situ(param_2);
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 180488980 size=249 ############

void FUN_180488980(longlong param_1)

{
  int iVar1;
  void *_Memory;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  
  iVar3 = *(int *)(param_1 + 0x14) + -1;
  lVar4 = (longlong)iVar3;
  if (iVar3 < 0) {
    *(undefined4 *)(param_1 + 0x18) = 0;
    return;
  }
  do {
    _Memory = *(void **)(*(longlong *)(param_1 + 8) + lVar4 * 8);
    if (_Memory != (void *)0x0) {
      plVar2 = *(longlong **)((longlong)_Memory + 0x40);
      if (plVar2 != (longlong *)0x0) {
        (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != (longlong *)((longlong)_Memory + 8));
        *(undefined8 *)((longlong)_Memory + 0x40) = 0;
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (-1 < lVar4) {
      if (iVar3 < *(int *)(param_1 + 0x14)) {
        *(undefined8 *)(*(longlong *)(param_1 + 8) + lVar4 * 8) = 0;
      }
      else {
        FUN_18047e060(param_1 + 8,*(int *)(param_1 + 0x14) + 1);
        iVar1 = *(int *)(param_1 + 0x14);
        *(int *)(param_1 + 0x14) = iVar1 + 1;
        *(undefined8 *)(*(longlong *)(param_1 + 8) + (longlong)iVar1 * 8) = 0;
      }
    }
    iVar3 = iVar3 + -1;
    lVar4 = lVar4 + -1;
  } while (-1 < lVar4);
  *(undefined4 *)(param_1 + 0x18) = 0;
  return;
}



############ FUN_ 180488b20 size=264 ############

void FUN_180488b20(void)

{
  longlong *plVar1;
  longlong lVar2;
  void *pvVar3;
  void *pvVar4;
  
  pvVar3 = DAT_182673928;
  lVar2 = DAT_182673930;
  if (DAT_182673940 != 0) {
    do {
      lVar2 = *(longlong *)
               ((longlong)pvVar3 + (DAT_182673938 + -1 + DAT_182673940 & DAT_182673930 - 1U) * 8);
      plVar1 = *(longlong **)(lVar2 + 0x40);
      if (plVar1 != (longlong *)0x0) {
        (**(code **)(*plVar1 + 0x20))
                  (plVar1,CONCAT71((int7)((ulonglong)DAT_182673940 >> 8),
                                   plVar1 != (longlong *)(lVar2 + 8)));
        *(undefined8 *)(lVar2 + 0x40) = 0;
        pvVar3 = DAT_182673928;
      }
      DAT_182673940 = DAT_182673940 + -1;
    } while (DAT_182673940 != 0);
    DAT_182673938 = 0;
    DAT_182673940 = 0;
    lVar2 = DAT_182673930;
  }
  while (lVar2 != 0) {
    pvVar4 = *(void **)((longlong)pvVar3 + lVar2 * 8 + -8);
    lVar2 = lVar2 + -1;
    if (pvVar4 != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(pvVar4);
    }
  }
  if (pvVar3 != (void *)0x0) {
    pvVar4 = pvVar3;
    if ((0xfff < (ulonglong)(DAT_182673930 * 8)) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  DAT_182673930 = 0;
  DAT_182673928 = (void *)0x0;
  return;
}



############ FUN_ 180489d20 size=84 ############

void FUN_180489d20(undefined8 param_1,void *param_2)

{
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_180489d20(&DAT_182673770,*(undefined8 *)((longlong)param_2 + 0x10));
    FUN_18048c5e0((longlong)param_2 + 0x20);
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 18048a1c0 size=43 ############

undefined8 * FUN_18048a1c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18048c660 size=147 ############

void FUN_18048c660(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  void *pvVar1;
  void *_Memory;
  
  if (*param_1 == 0) {
    *param_1 = param_2;
    param_1[1] = param_2 + param_3 * 8;
    param_1[2] = param_2 + param_4 * 8;
    return;
  }
  FUN_1804896a0(param_1,*param_1,param_1[1]);
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048ddf0 size=182 ############

void FUN_18048ddf0(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  longlong *plVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *_Memory;
  longlong *plVar4;
  
  plVar4 = (longlong *)*param_1;
  if (plVar4 == (longlong *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_2 + param_3 * 8;
    param_1[2] = param_2 + param_4 * 8;
    return;
  }
  plVar1 = (longlong *)param_1[1];
  for (; plVar4 != plVar1; plVar4 = plVar4 + 1) {
    puVar2 = (undefined8 *)*plVar4;
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  pvVar3 = (void *)*param_1;
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048bdd0 size=534 ############

longlong FUN_18048bdd0(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 uVar2;
  void *pvVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  undefined8 *puVar11;
  longlong lVar12;
  undefined8 *puVar13;
  undefined8 *puVar14;
  
  lVar8 = *param_1;
  lVar12 = (longlong)param_2 - lVar8 >> 3;
  lVar4 = param_1[1] - lVar8 >> 3;
  if (lVar4 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar7 = param_1[2] - lVar8 >> 3;
  uVar1 = lVar4 + 1;
  uVar5 = uVar1;
  if ((uVar7 <= 0x1fffffffffffffff - (uVar7 >> 1)) && (uVar5 = (uVar7 >> 1) + uVar7, uVar5 < uVar1))
  {
    uVar5 = uVar1;
  }
  lVar8 = uVar5 * 8;
  if (0x1fffffffffffffff < uVar5) {
    lVar8 = -1;
  }
  puVar6 = (undefined8 *)FUN_180480500(lVar8);
  uVar2 = *param_3;
  lVar8 = lVar12 * 8;
  puVar13 = (undefined8 *)0x0;
  *param_3 = 0;
  puVar6[lVar12] = uVar2;
  puVar11 = (undefined8 *)param_1[1];
  puVar9 = (undefined8 *)*param_1;
  if (param_2 == puVar11) {
    puVar10 = (undefined8 *)((ulonglong)((longlong)puVar11 + (7 - (longlong)puVar9)) >> 3);
    if (puVar11 < puVar9) {
      puVar10 = puVar13;
    }
    puVar11 = puVar6;
    if (puVar10 != (undefined8 *)0x0) {
      do {
        uVar2 = *puVar9;
        *puVar9 = 0;
        puVar9 = puVar9 + 1;
        puVar13 = (undefined8 *)((longlong)puVar13 + 1);
        *puVar11 = uVar2;
        puVar11 = puVar11 + 1;
      } while (puVar13 != puVar10);
    }
  }
  else {
    puVar11 = (undefined8 *)((ulonglong)((longlong)param_2 + (7 - (longlong)puVar9)) >> 3);
    if (param_2 < puVar9) {
      puVar11 = puVar13;
    }
    puVar10 = puVar6;
    puVar14 = puVar13;
    if (puVar11 != (undefined8 *)0x0) {
      do {
        uVar2 = *puVar9;
        *puVar9 = 0;
        puVar9 = puVar9 + 1;
        puVar14 = (undefined8 *)((longlong)puVar14 + 1);
        *puVar10 = uVar2;
        puVar10 = puVar10 + 1;
      } while (puVar14 != puVar11);
    }
    puVar9 = (undefined8 *)0x0;
    puVar11 = (undefined8 *)((param_1[1] - (longlong)param_2) + 7U >> 3);
    if ((undefined8 *)param_1[1] < param_2) {
      puVar11 = puVar13;
    }
    if (puVar11 != (undefined8 *)0x0) {
      lVar4 = lVar8 - (longlong)param_2;
      puVar9 = puVar13;
      do {
        uVar2 = *param_2;
        puVar9 = (undefined8 *)((longlong)puVar9 + 1);
        *param_2 = 0;
        *(undefined8 *)((longlong)puVar6 + lVar4 + 8 + (longlong)param_2) = uVar2;
        param_2 = param_2 + 1;
      } while (puVar9 != puVar11);
    }
  }
  if (*param_1 == 0) {
    *param_1 = (longlong)puVar6;
    param_1[1] = (longlong)(puVar6 + uVar1);
    param_1[2] = (longlong)(puVar6 + uVar5);
    return *param_1 + lVar8;
  }
  FUN_180489640(puVar9,*param_1,param_1[1]);
  pvVar3 = (void *)*param_1;
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180498c40 size=308 ############

undefined8 * FUN_180498c40(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  longlong *plVar4;
  longlong *plVar5;
  uint *puVar6;
  longlong **pplVar7;
  longlong *local_res8;
  longlong *local_res10;
  undefined1 local_res20 [8];
  
  local_res8 = (longlong *)((ulonglong)param_1 & 0xffffffff00000000);
  if (*(char *)*param_2 == '\0') {
    local_res8 = (longlong *)&DAT_1821dbf98;
    pplVar7 = &local_res8;
    bVar3 = false;
    bVar2 = true;
  }
  else {
    plVar4 = (longlong *)FUN_1812416f0(local_res20);
    local_res8 = plVar4;
    plVar5 = (longlong *)FUN_181232d30(plVar4,param_3);
    local_res10 = (longlong *)*plVar5;
    if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
      UNLOCK();
    }
    puVar6 = (uint *)(*plVar4 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    pplVar7 = &local_res10;
    bVar3 = true;
    bVar2 = false;
  }
  *param_1 = *pplVar7;
  *pplVar7 = (longlong *)&DAT_1821dbf98;
  if (bVar2) {
    puVar6 = (uint *)(local_res8 + -2);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  if ((bVar3) && (puVar6 = (uint *)(local_res10 + -2), (*puVar6 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  param_1[1] = 0xffffffffffffffff;
  return param_1;
}



############ FUN_ 18122d550 size=121 ############

void FUN_18122d550(longlong *param_1)

{
  undefined8 *puVar1;
  uint uVar2;
  undefined8 *puVar3;
  uint *_Memory;
  undefined8 *puVar4;
  longlong local_res8;
  undefined8 local_res10;
  
  puVar4 = (undefined8 *)*param_1;
  puVar1 = puVar4 + *(int *)((longlong)param_1 + 0xc);
  do {
    if (puVar4 == puVar1) {
      return;
    }
    puVar3 = (undefined8 *)FUN_181248e40(puVar4,&local_res8);
    local_res10 = *puVar4;
    *puVar4 = *puVar3;
    *puVar3 = local_res10;
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar4 = puVar4 + 1;
  } while( true );
}



############ FUN_ 1812254c0 size=817 ############

undefined8 FUN_1812254c0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  char *_Src;
  byte bVar3;
  byte bVar4;
  int iVar5;
  int iVar6;
  undefined4 *puVar7;
  undefined8 *puVar8;
  uint *puVar9;
  byte *pbVar10;
  ulonglong uVar11;
  size_t _Size;
  int iVar12;
  undefined4 *local_res8;
  longlong local_res10;
  byte *local_res18;
  undefined8 local_res20;
  
  iVar5 = FUN_18049d4b0(*(undefined8 *)(param_1 + 8),"<!DOCTYPE",9,param_4,0xfffffffffffffffe);
  if (iVar5 == 0) {
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    *(byte **)(param_1 + 8) = *(byte **)(param_1 + 8) + 1;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 1;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    bVar2 = **(byte **)(param_1 + 8);
    pbVar10 = *(byte **)(param_1 + 8) + 1;
    *(byte **)(param_1 + 8) = pbVar10;
    if ((char)bVar2 < '\0') {
      bVar4 = 0x40;
      bVar3 = bVar2 & 0x40;
      while ((bVar3 != 0 && (8 < bVar4))) {
        pbVar10 = pbVar10 + 1;
        *(byte **)(param_1 + 8) = pbVar10;
        bVar4 = bVar4 >> 1;
        bVar3 = bVar2 & bVar4;
      }
    }
    _Src = *(char **)(param_1 + 8);
    iVar5 = 1;
    do {
      iVar6 = FUN_180483820(param_1 + 8);
      if (iVar6 == 0) {
        *(undefined1 *)(param_1 + 0x10) = 1;
        iVar12 = 0;
        do {
          *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + -1;
          if ((**(byte **)(param_1 + 8) & 0xc0) != 0x80) break;
          iVar12 = iVar12 + 1;
        } while (iVar12 < 4);
      }
      if (*(char *)(param_1 + 0x10) != '\0') {
        return 0;
      }
      if (iVar6 == 0x3c) {
        iVar5 = iVar5 + 1;
      }
      else if (iVar6 == 0x3e) {
        iVar5 = iVar5 + -1;
      }
    } while (0 < iVar5);
    local_res18 = *(byte **)(param_1 + 8);
    iVar5 = 0;
    do {
      local_res18 = local_res18 + -1;
      if ((*local_res18 & 0xc0) != 0x80) break;
      iVar5 = iVar5 + 1;
    } while (iVar5 < 4);
    if ((_Src == (char *)0x0) || (*_Src == '\0')) {
      local_res8 = (undefined4 *)&DAT_1821dbf98;
    }
    else {
      _Size = (longlong)local_res18 - (longlong)_Src;
      uVar11 = _Size + 4 & 0xfffffffffffffffc;
      puVar7 = (undefined4 *)thunk_FUN_1811316e0(uVar11 + 0x17);
      LOCK();
      *puVar7 = 0;
      UNLOCK();
      *(ulonglong *)(puVar7 + 2) = uVar11;
      puVar7 = puVar7 + 4;
      memcpy(puVar7,_Src,_Size);
      *(undefined1 *)((longlong)puVar7 + _Size) = 0;
      local_res8 = puVar7;
    }
    puVar8 = (undefined8 *)FUN_181248e40(&local_res8,&local_res10);
    local_res20 = *(undefined8 *)(param_1 + 0x20);
    *(undefined8 *)(param_1 + 0x20) = *puVar8;
    *puVar8 = local_res20;
    puVar9 = (uint *)(local_res10 + -0x10);
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
    puVar9 = local_res8 + -4;
    if ((*puVar9 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar9;
      *puVar9 = *puVar9 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar9);
      }
    }
  }
  return 1;
}



############ FUN_ 181225cf0 size=104 ############

void FUN_181225cf0(longlong param_1,longlong *param_2,char param_3)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(*param_2 + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *(longlong *)(param_1 + 0x18);
  *(longlong *)(param_1 + 0x18) = *param_2;
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  *(bool *)(param_1 + 0x11) = param_3 == '\0';
  return;
}



############ FUN_ 181211a00 size=391 ############

longlong * FUN_181211a00(longlong *param_1,longlong *param_2,undefined8 *param_3)

{
  longlong *plVar1;
  uint uVar2;
  char *_Src;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  longlong lVar6;
  uint *_Memory;
  ulonglong uVar7;
  int iVar8;
  size_t _Size;
  int iVar9;
  undefined4 *local_res10;
  
  iVar9 = *(int *)((longlong)param_2 + 0xc);
  iVar8 = 0;
  if (0 < iVar9) {
    lVar6 = *param_2;
    do {
      plVar1 = (longlong *)(lVar6 + (longlong)iVar8 * 8);
      iVar3 = FUN_18122c520(param_3,plVar1);
      if (iVar3 == 0) {
        lVar6 = *plVar1;
LAB_181211add:
        uVar2 = *(uint *)(lVar6 + -0x10);
        *param_1 = lVar6;
        if ((uVar2 & 0x30000000) != 0) {
          return param_1;
        }
        LOCK();
        *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
        UNLOCK();
        return param_1;
      }
      iVar4 = (iVar9 + iVar8) / 2;
      if (iVar4 == iVar8) {
        if (0 < iVar3) {
          iVar8 = iVar8 + 1;
        }
        break;
      }
      plVar1 = (longlong *)(lVar6 + (longlong)iVar4 * 8);
      iVar3 = FUN_18122c520(param_3,plVar1);
      if (iVar3 == 0) {
        lVar6 = *plVar1;
        goto LAB_181211add;
      }
      if (0 < iVar3) {
        iVar8 = iVar4;
        iVar4 = iVar9;
      }
      iVar9 = iVar4;
    } while (iVar8 < iVar9);
  }
  _Src = (char *)*param_3;
  if ((_Src == (char *)0x0) || (*_Src == '\0')) {
    local_res10 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    _Size = param_3[1] - (longlong)_Src;
    uVar7 = _Size + 4 & 0xfffffffffffffffc;
    puVar5 = (undefined4 *)thunk_FUN_1811316e0(uVar7 + 0x17);
    LOCK();
    *puVar5 = 0;
    UNLOCK();
    *(ulonglong *)(puVar5 + 2) = uVar7;
    puVar5 = puVar5 + 4;
    memcpy(puVar5,_Src,_Size);
    *(undefined1 *)((longlong)puVar5 + _Size) = 0;
    local_res10 = puVar5;
  }
  FUN_180489070(param_2,iVar8,&local_res10);
  _Memory = local_res10 + -4;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  lVar6 = *(longlong *)(*param_2 + (longlong)iVar8 * 8);
  *param_1 = lVar6;
  if ((*(uint *)(lVar6 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar6 + -0x10) = *(int *)(lVar6 + -0x10) + 1;
    UNLOCK();
  }
  return param_1;
}



############ FUN_ 18122f8f0 size=623 ############

undefined8 * FUN_18122f8f0(undefined8 *param_1,char *param_2,ulonglong param_3,undefined8 param_4)

{
  byte bVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  void *_Memory;
  ulonglong uVar5;
  ulonglong uVar6;
  longlong lVar7;
  int iVar8;
  bool bVar9;
  undefined1 *local_50;
  undefined8 local_48;
  undefined1 *puStack_40;
  ulonglong local_38;
  ulonglong local_30;
  
  iVar8 = (int)param_3;
  uVar5 = param_3 & 0xffffffff;
  if ((iVar8 < 1) || (param_2 == (char *)0x0)) {
    *param_1 = &DAT_1821dbf98;
  }
  else if (iVar8 == 1) {
    FUN_181233f40(param_1,*param_2);
  }
  else {
    cVar3 = *param_2;
    if (((cVar3 == -2) && (param_2[1] == -1)) || ((cVar3 == -1 && (param_2[1] == -2)))) {
      local_50 = &DAT_1821dbf98;
      local_48 = 0;
      puStack_40 = (undefined1 *)0x0;
      uVar5 = (ulonglong)(iVar8 / 2 + -1);
      lVar7 = 0;
      local_30 = 0;
      local_38 = uVar5;
      FUN_1812342b0(&local_50,uVar5);
      puStack_40 = local_50;
      if ((*param_2 == -2) && (param_2[1] == -1)) {
        if (0 < (longlong)uVar5) {
          do {
            FUN_180495280(&local_50,
                          *(ushort *)(param_2 + lVar7 * 2 + 2) << 8 |
                          *(ushort *)(param_2 + lVar7 * 2 + 2) >> 8);
            lVar7 = lVar7 + 1;
          } while (lVar7 < (longlong)uVar5);
        }
      }
      else if (0 < (longlong)uVar5) {
        do {
          FUN_180495280(&local_50,*(undefined2 *)(param_2 + lVar7 * 2 + 2));
          lVar7 = lVar7 + 1;
        } while (lVar7 < (longlong)uVar5);
      }
      local_30 = local_30 + 1;
      if (local_38 < local_30) {
        uVar5 = 8;
        if (8 < local_38 >> 4) {
          uVar5 = local_38 >> 4;
        }
        local_38 = local_38 + uVar5;
        iVar2 = (int)local_50;
        iVar8 = (int)puStack_40;
        FUN_1812342b0(&local_50);
        puStack_40 = local_50 + (iVar8 - iVar2);
      }
      *puStack_40 = 0;
      *param_1 = local_50;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar4 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar9 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar4;
        if (bVar9) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
    }
    else {
      if ((((2 < iVar8) && (cVar3 == -0x11)) && (param_2[1] == -0x45)) && (param_2[2] == -0x41)) {
        param_2 = param_2 + 3;
        uVar5 = (ulonglong)(iVar8 - 3);
      }
      cVar3 = FUN_180493240(param_2,uVar5,param_3,param_4,0xfffffffffffffffe);
      if (cVar3 == '\0') {
        uVar6 = (ulonglong)(int)uVar5;
        _Memory = malloc(uVar6 * 4 + 4);
        uVar5 = 0;
        if (uVar6 != 0) {
          do {
            bVar1 = param_2[uVar5];
            uVar4 = (uint)bVar1;
            if ((byte)(bVar1 + 0x80) < 0x20) {
              uVar4 = (uint)*(ushort *)(&DAT_1824970d0 + (longlong)(int)(bVar1 - 0x80) * 2);
            }
            *(uint *)((longlong)_Memory + uVar5 * 4) = uVar4;
            uVar5 = uVar5 + 1;
          } while (uVar5 < uVar6);
        }
        *(undefined4 *)(uVar6 * 4 + (longlong)_Memory) = 0;
        FUN_18049ca80(param_1,_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      FUN_18124a8a0(param_1,param_2,param_2 + (int)uVar5);
    }
  }
  return param_1;
}



############ FUN_ 181232a20 size=118 ############

longlong * FUN_181232a20(longlong *param_1,longlong *param_2,undefined4 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *_Memory;
  
  plVar3 = (longlong *)FUN_181232b70(param_2,param_3,param_3,param_4,0xfffffffffffffffe);
  lVar2 = *plVar3;
  *param_1 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 181234400 size=62 ############

void FUN_181234400(longlong *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*param_1 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = (longlong)&DAT_1821dbf98;
  return;
}



############ FUN_ 18048c1c0 size=348 ############

longlong FUN_18048c1c0(longlong *param_1,void *param_2,undefined8 *param_3)

{
  longlong lVar1;
  void *pvVar2;
  undefined8 uVar3;
  ulonglong uVar4;
  void *pvVar5;
  ulonglong uVar6;
  void *_Dst;
  longlong lVar7;
  ulonglong uVar8;
  size_t _Size;
  
  lVar1 = *param_1;
  lVar7 = param_1[1] - lVar1 >> 4;
  if (lVar7 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar8 = lVar7 + 1;
  uVar6 = param_1[2] - lVar1 >> 4;
  uVar4 = uVar8;
  if ((uVar6 <= 0xfffffffffffffff - (uVar6 >> 1)) && (uVar4 = (uVar6 >> 1) + uVar6, uVar4 < uVar8))
  {
    uVar4 = uVar8;
  }
  lVar7 = uVar4 * 0x10;
  if (0xfffffffffffffff < uVar4) {
    lVar7 = -1;
  }
  pvVar5 = (void *)FUN_180480500(lVar7);
  uVar3 = param_3[1];
  uVar6 = (longlong)param_2 - lVar1 & 0xfffffffffffffff0;
  *(undefined8 *)(uVar6 + (longlong)pvVar5) = *param_3;
  ((undefined8 *)(uVar6 + (longlong)pvVar5))[1] = uVar3;
  pvVar2 = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)pvVar2;
    _Dst = pvVar5;
    param_2 = pvVar2;
  }
  else {
    memmove(pvVar5,pvVar2,(longlong)param_2 - (longlong)pvVar2);
    _Size = param_1[1] - (longlong)param_2;
    _Dst = (void *)(uVar6 + 0x10 + (longlong)pvVar5);
  }
  memmove(_Dst,param_2,_Size);
  pvVar2 = (void *)*param_1;
  if (pvVar2 == (void *)0x0) {
    *param_1 = (longlong)pvVar5;
    param_1[1] = (longlong)(uVar8 * 0x10 + (longlong)pvVar5);
    param_1[2] = (longlong)(uVar4 * 0x10 + (longlong)pvVar5);
    return *param_1 + uVar6;
  }
  pvVar5 = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffff0U)) &&
     (pvVar5 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 18048c900 size=641 ############

basic_istream<char,std::char_traits<char>_> *
FUN_18048c900(basic_istream<char,std::char_traits<char>_> *param_1,undefined8 *param_2)

{
  ulonglong _Size;
  ulonglong uVar1;
  void *_Src;
  bool bVar2;
  int iVar3;
  undefined8 *puVar4;
  void *pvVar5;
  undefined1 uVar6;
  ulonglong *puVar7;
  uint uVar8;
  ulonglong uVar9;
  basic_istream<char,std::char_traits<char>_> *pbVar10;
  ulonglong local_60;
  ulonglong local_58 [2];
  basic_istream<char,std::char_traits<char>_> *local_48;
  undefined1 local_40;
  
  local_58[1] = 0xfffffffffffffffe;
  uVar8 = 0;
  bVar2 = false;
  local_48 = param_1;
  if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) !=
      (longlong *)0x0) {
    (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 8)
    )();
  }
  local_40 = std::basic_istream<char,std::char_traits<char>_>::_Ipfx(param_1,true);
  pbVar10 = param_1;
  if ((bool)local_40) {
    param_2[2] = 0;
    puVar4 = param_2;
    if (0xf < (ulonglong)param_2[3]) {
      puVar4 = (undefined8 *)*param_2;
    }
    *(undefined1 *)puVar4 = 0;
    iVar3 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                      (*(basic_streambuf<char,std::char_traits<char>_> **)
                        (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48));
    while (iVar3 != -1) {
      if (iVar3 == 0x20) {
        bVar2 = true;
        std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                  (*(basic_streambuf<char,std::char_traits<char>_> **)
                    (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48));
        uVar8 = 0;
        goto LAB_18048c9e9;
      }
      _Size = param_2[2];
      if (0x7ffffffffffffffe < _Size) {
        uVar8 = 2;
        goto LAB_18048c9e9;
      }
      uVar1 = param_2[3];
      uVar6 = (undefined1)iVar3;
      if (_Size < uVar1) {
        param_2[2] = _Size + 1;
        puVar4 = param_2;
        if (0xf < uVar1) {
          puVar4 = (undefined8 *)*param_2;
        }
        *(undefined1 *)((longlong)puVar4 + _Size) = uVar6;
        *(undefined1 *)((longlong)puVar4 + _Size + 1) = 0;
      }
      else {
        if (_Size == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
          FUN_18048c740();
        }
        local_58[0] = _Size + 1 | 0xf;
        if (local_58[0] < 0x8000000000000000) {
          if (0x7fffffffffffffff - (uVar1 >> 1) < uVar1) {
            uVar9 = 0x7fffffffffffffff;
          }
          else {
            local_60 = (uVar1 >> 1) + uVar1;
            puVar7 = &local_60;
            if (local_60 <= local_58[0]) {
              puVar7 = local_58;
            }
            uVar9 = *puVar7;
          }
        }
        else {
          uVar9 = 0x7fffffffffffffff;
        }
        pvVar5 = (void *)FUN_180480500(uVar9 + 1);
        param_2[2] = _Size + 1;
        param_2[3] = uVar9;
        if (0xf < uVar1) {
          _Src = (void *)*param_2;
          memcpy(pvVar5,_Src,_Size);
          *(undefined1 *)((longlong)pvVar5 + _Size) = uVar6;
          *(undefined1 *)((longlong)pvVar5 + _Size + 1) = 0;
          pvVar5 = _Src;
          if ((0xfff < uVar1 + 1) &&
             (pvVar5 = *(void **)((longlong)_Src + -8),
             0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar5);
        }
        memcpy(pvVar5,param_2,_Size);
        *(undefined1 *)((longlong)pvVar5 + _Size) = uVar6;
        *(undefined1 *)((longlong)pvVar5 + _Size + 1) = 0;
        *param_2 = pvVar5;
      }
      bVar2 = true;
      iVar3 = std::basic_streambuf<char,std::char_traits<char>_>::snextc
                        (*(basic_streambuf<char,std::char_traits<char>_> **)
                          (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48));
    }
    uVar8 = 1;
LAB_18048c9e9:
    pbVar10 = local_48;
    if (bVar2) goto LAB_18048cb52;
  }
  uVar8 = uVar8 | 2;
LAB_18048cb52:
  std::basic_ios<char,std::char_traits<char>_>::setstate
            ((basic_ios<char,std::char_traits<char>_> *)
             (param_1 + *(int *)(*(longlong *)param_1 + 4)),uVar8,false);
  if (*(longlong **)(pbVar10 + (longlong)*(int *)(*(longlong *)pbVar10 + 4) + 0x48) !=
      (longlong *)0x0) {
    (**(code **)(**(longlong **)(pbVar10 + (longlong)*(int *)(*(longlong *)pbVar10 + 4) + 0x48) +
                0x10))();
  }
  return param_1;
}



############ FUN_ 18048dcc0 size=88 ############

void FUN_18048dcc0(void *param_1,char param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)((longlong)param_1 + 0x40);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_1 + 8));
    *(undefined8 *)((longlong)param_1 + 0x40) = 0;
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 18048dda0 size=60 ############

void FUN_18048dda0(longlong param_1)

{
  undefined8 *_Memory;
  
  _Memory = *(undefined8 **)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = 0;
  FUN_180483670();
  (*(code *)*_Memory)(_Memory[1]);
  _Cnd_do_broadcast_at_thread_exit();
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048df90 size=383 ############

void FUN_18048df90(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  uint *puVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  uint *_Memory;
  uint *puVar7;
  LPCRITICAL_SECTION lpCriticalSection;
  ulonglong uVar8;
  
  lpCriticalSection = (LPCRITICAL_SECTION)(*(longlong *)(param_1 + 0x10) + 0x80);
  EnterCriticalSection(lpCriticalSection);
  lVar3 = *(longlong *)(param_1 + 0x10);
  uVar1 = *(uint *)(param_1 + 8);
  uVar5 = (ulonglong)uVar1 % (ulonglong)*(uint *)(lVar3 + 0x27c);
  uVar8 = (ulonglong)(int)uVar5;
  uVar6 = uVar8;
  puVar4 = *(uint **)(uVar8 * 8 + *(longlong *)(lVar3 + 0x270));
  puVar7 = (uint *)0x0;
  do {
    while( true ) {
      _Memory = puVar4;
      if (_Memory == (uint *)0x0) {
        if ((*(int *)(*(longlong *)(param_1 + 0x10) + 0x280) == 0) &&
           (*(int *)(*(longlong *)(param_1 + 0x10) + 0x198) != 0)) {
          LOCK();
          *(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x198) = 0;
          UNLOCK();
        }
                    /* WARNING: Could not recover jumptable at 0x00018048e0ff. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        LeaveCriticalSection(lpCriticalSection);
        return;
      }
      if (*_Memory == uVar1) break;
      uVar6 = uVar5;
      puVar4 = *(uint **)(_Memory + 0x12);
      puVar7 = _Memory;
    }
    puVar4 = *(uint **)(_Memory + 0x12);
    if (puVar7 == (uint *)0x0) {
      if (-1 < (longlong)uVar8) {
        if ((int)uVar6 < *(int *)(lVar3 + 0x27c)) {
          *(uint **)(uVar8 * 8 + *(longlong *)(lVar3 + 0x270)) = puVar4;
        }
        else {
          FUN_18047e060(lVar3 + 0x270,*(int *)(lVar3 + 0x27c) + 1,uVar6,param_4,_Memory);
          iVar2 = *(int *)(lVar3 + 0x27c);
          *(int *)(lVar3 + 0x27c) = iVar2 + 1;
          *(uint **)(*(longlong *)(lVar3 + 0x270) + (longlong)iVar2 * 8) = puVar4;
        }
      }
    }
    else {
      *(uint **)(puVar7 + 0x12) = puVar4;
    }
    *(int *)(lVar3 + 0x280) = *(int *)(lVar3 + 0x280) + -1;
    uVar6 = uVar5;
  } while (_Memory == (uint *)0x0);
  puVar4 = *(uint **)(_Memory + 0x10);
  if (puVar4 != (uint *)0x0) {
    (**(code **)(*(longlong *)puVar4 + 0x20))(puVar4,puVar4 != _Memory + 2);
    _Memory[0x10] = 0;
    _Memory[0x11] = 0;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048ee20 size=73 ############

void FUN_18048ee20(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *_Memory;
  undefined8 uVar1;
  
  uVar1 = 0xfffffffffffffffe;
  _Memory = *(undefined8 **)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = 0;
  FUN_180483670();
  (*(code *)_Memory[3])(_Memory + 2,_Memory + 1,*_Memory,param_4,uVar1);
  _Cnd_do_broadcast_at_thread_exit();
  FUN_18048dee0(_Memory);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18048ee70 size=100 ############

void FUN_18048ee70(void *param_1,char param_2)

{
  uint uVar1;
  uint *_Memory;
  
  (**(code **)(**(longlong **)((longlong)param_1 + 0x10) + 0xb0))
            (*(longlong **)((longlong)param_1 + 0x10),(longlong)param_1 + 0x18);
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 18048f080 size=100 ############

void FUN_18048f080(void *param_1,char param_2)

{
  uint uVar1;
  uint *_Memory;
  
  (**(code **)(**(longlong **)((longlong)param_1 + 0x10) + 0xb0))
            (*(longlong **)((longlong)param_1 + 0x10),(longlong)param_1 + 0x18);
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 18048f2d0 size=88 ############

void FUN_18048f2d0(void *param_1,char param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)((longlong)param_1 + 0x40);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_1 + 8));
    *(undefined8 *)((longlong)param_1 + 0x40) = 0;
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 18048f8b0 size=83 ############

undefined4 FUN_18048f8b0(undefined8 param_1,longlong *param_2)

{
  uint *_Memory;
  uint uVar1;
  
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return DAT_1824c3d8c;
}



############ FUN_ 180490570 size=809 ############

longlong * FUN_180490570(longlong *param_1,longlong *param_2)

{
  uint *puVar1;
  int *piVar2;
  uint uVar3;
  longlong lVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong *plVar9;
  longlong *plVar10;
  
  if (param_1 == param_2) {
    return param_2;
  }
  plVar9 = param_1 + 1;
  if (plVar9 == param_2) {
    return param_2;
  }
LAB_1804905c0:
  lVar4 = *plVar9;
  *plVar9 = (longlong)&DAT_1821dbf98;
  lVar7 = *param_1;
  puVar1 = (uint *)(lVar7 + -0x10);
  if ((*(uint *)(lVar7 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
    UNLOCK();
  }
  if (lVar4 == lVar7) {
    iVar5 = 0;
LAB_180490650:
    uVar6 = (uint)(iVar5 < 0);
  }
  else {
    iVar5 = FUN_18049bb30(lVar4,lVar7);
    if (-1 < iVar5) {
      iVar5 = FUN_18049bb30(lVar7,lVar4);
      goto LAB_180490650;
    }
    uVar6 = 0xffffffff;
  }
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar2 = (int *)(lVar4 + -0x10);
    iVar5 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)(lVar4 + -0x10));
    }
  }
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  plVar10 = plVar9;
  if (-1 < (int)uVar6) {
    do {
      lVar7 = plVar10[-1];
      plVar8 = plVar10 + -1;
      puVar1 = (uint *)(lVar7 + -0x10);
      if ((*(uint *)(lVar7 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar4 + -0x10) = *(int *)(lVar4 + -0x10) + 1;
        UNLOCK();
      }
      if (lVar4 == lVar7) {
        iVar5 = 0;
LAB_180490789:
        uVar6 = (uint)(iVar5 < 0);
      }
      else {
        iVar5 = FUN_18049bb30(lVar4,lVar7);
        if (-1 < iVar5) {
          iVar5 = FUN_18049bb30(lVar7,lVar4);
          goto LAB_180490789;
        }
        uVar6 = 0xffffffff;
      }
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar2 = (int *)(lVar4 + -0x10);
        iVar5 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
          free((void *)(lVar4 + -0x10));
        }
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      lVar7 = *plVar10;
      if (-1 < (int)uVar6) goto LAB_1804907fb;
      *plVar10 = *plVar8;
      *plVar8 = lVar7;
      plVar10 = plVar8;
    } while( true );
  }
  plVar10 = plVar9 + 1;
  plVar8 = plVar9;
  while (plVar8 != param_1) {
    plVar8 = plVar8 + -1;
    lVar7 = plVar10[-1];
    plVar10 = plVar10 + -1;
    *plVar10 = *plVar8;
    *plVar8 = lVar7;
  }
  lVar7 = *param_1;
  *param_1 = lVar4;
  goto LAB_180490814;
LAB_1804907fb:
  *plVar10 = lVar4;
LAB_180490814:
  puVar1 = (uint *)(lVar7 + -0x10);
  if ((*puVar1 & 0x30000000) == 0) {
    LOCK();
    uVar6 = *puVar1;
    *puVar1 = *puVar1 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar1);
    }
  }
  plVar9 = plVar9 + 1;
  if (plVar9 == param_2) {
    return param_2;
  }
  goto LAB_1804905c0;
}



############ FUN_ 1804908a0 size=515 ############

void FUN_1804908a0(longlong *param_1,longlong param_2,longlong param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  uint *puVar3;
  longlong *plVar4;
  longlong lVar5;
  longlong local_res8;
  longlong local_res10;
  longlong local_38;
  longlong *local_30;
  
  lVar2 = param_2 - (longlong)param_1;
  do {
    lVar2 = lVar2 >> 3;
    if (lVar2 < 0x21) {
LAB_180490950:
      if (1 < lVar2) {
        FUN_180490570(param_1,param_2);
      }
      return;
    }
    if (param_3 < 1) {
      if (0x20 < lVar2) {
        lVar5 = param_2 - (longlong)param_1 >> 3;
        lVar2 = param_2 - (longlong)param_1 >> 4;
        while (0 < lVar2) {
          local_res8 = param_1[lVar2 + -1];
          lVar2 = lVar2 + -1;
          param_1[lVar2] = (longlong)&DAT_1821dbf98;
          FUN_1804929f0(param_1,lVar2,lVar5,&local_res8,param_4);
          puVar3 = (uint *)(local_res8 + -0x10);
          if ((*puVar3 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar3;
            *puVar3 = *puVar3 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar3);
            }
          }
        }
        if (lVar5 < 2) {
          return;
        }
        plVar4 = (longlong *)(param_2 + -8);
        do {
          if (1 < lVar5) {
            local_res10 = *plVar4;
            *plVar4 = (longlong)&DAT_1821dbf98;
            *plVar4 = *param_1;
            *param_1 = (longlong)&DAT_1821dbf98;
            FUN_1804929f0(param_1,0,(longlong)plVar4 - (longlong)param_1 >> 3,&local_res10,param_4);
            puVar3 = (uint *)(local_res10 + -0x10);
            if ((*puVar3 & 0x30000000) == 0) {
              LOCK();
              uVar1 = *puVar3;
              *puVar3 = *puVar3 - 1;
              UNLOCK();
              if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar3);
              }
            }
          }
          plVar4 = plVar4 + -1;
          lVar5 = (8 - (longlong)param_1) + (longlong)plVar4 >> 3;
        } while (1 < lVar5);
        return;
      }
      goto LAB_180490950;
    }
    FUN_180491f60(&local_38,param_1,param_2,param_4);
    plVar4 = local_30;
    lVar5 = local_38;
    param_3 = (param_3 >> 1) + (param_3 >> 2);
    if ((longlong)(local_38 - (longlong)param_1 & 0xfffffffffffffff8U) <
        (longlong)(param_2 - (longlong)local_30 & 0xfffffffffffffff8U)) {
      FUN_1804908a0(param_1,local_38,param_3,param_4);
      lVar5 = param_2;
      param_1 = plVar4;
    }
    else {
      FUN_1804908a0(local_30,param_2,param_3,param_4);
    }
    lVar2 = lVar5 - (longlong)param_1;
    param_2 = lVar5;
  } while( true );
}



############ FUN_ 180491f60 size=2583 ############

void FUN_180491f60(undefined8 *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  uint *puVar1;
  uint *puVar2;
  uint uVar3;
  longlong lVar4;
  longlong *plVar5;
  int iVar6;
  uint uVar7;
  longlong lVar8;
  longlong *plVar9;
  longlong *plVar10;
  longlong *plVar11;
  bool bVar12;
  longlong *local_res20;
  longlong *local_118;
  longlong *local_110;
  
  plVar9 = param_3 + -1;
  lVar8 = (longlong)plVar9 - (longlong)param_2 >> 3;
  local_res20 = param_2 + ((longlong)param_3 - (longlong)param_2 >> 4);
  if (lVar8 < 0x29) {
    FUN_180492cd0(param_2,local_res20,plVar9);
  }
  else {
    lVar8 = lVar8 + 1 >> 3;
    FUN_180492cd0(param_2,param_2 + lVar8,param_2 + lVar8 * 2);
    FUN_180492cd0(local_res20 + -lVar8,local_res20,local_res20 + lVar8,param_4);
    FUN_180492cd0(plVar9 + lVar8 * -2,plVar9 + -lVar8,plVar9,param_4);
    FUN_180492cd0(param_2 + lVar8,local_res20,plVar9 + -lVar8,param_4);
  }
  local_118 = local_res20 + 1;
  if (param_2 < local_res20) {
    do {
      lVar8 = *local_res20;
      puVar1 = (uint *)(lVar8 + -0x10);
      if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      plVar9 = local_res20 + -1;
      lVar4 = *plVar9;
      puVar2 = (uint *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar2 = *puVar2 + 1;
        UNLOCK();
      }
      if (lVar4 == lVar8) {
        iVar6 = 0;
LAB_1804920cf:
        uVar7 = (uint)(iVar6 < 0);
      }
      else {
        iVar6 = FUN_18049bb30(lVar4,lVar8);
        if (-1 < iVar6) {
          iVar6 = FUN_18049bb30(lVar8,lVar4);
          goto LAB_1804920cf;
        }
        uVar7 = 0xffffffff;
      }
      if ((*puVar2 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar2;
        *puVar2 = *puVar2 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar2);
        }
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      if ((int)uVar7 < 0) break;
      lVar8 = *plVar9;
      puVar1 = (uint *)(lVar8 + -0x10);
      if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      lVar4 = *local_res20;
      puVar2 = (uint *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar2 = *puVar2 + 1;
        UNLOCK();
      }
      if (lVar4 == lVar8) {
        iVar6 = 0;
LAB_1804921a1:
        uVar7 = (uint)(iVar6 < 0);
      }
      else {
        iVar6 = FUN_18049bb30(lVar4,lVar8);
        if (-1 < iVar6) {
          iVar6 = FUN_18049bb30(lVar8,lVar4);
          goto LAB_1804921a1;
        }
        uVar7 = 0xffffffff;
      }
      if ((*puVar2 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar2;
        *puVar2 = *puVar2 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar2);
        }
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      if (((int)uVar7 < 0) || (local_res20 = plVar9, plVar9 <= param_2)) break;
    } while( true );
  }
  plVar9 = local_118;
  plVar10 = local_res20;
  plVar5 = local_118;
  local_110 = local_res20;
  if (local_118 < param_3) {
    do {
      lVar8 = *local_res20;
      puVar1 = (uint *)(lVar8 + -0x10);
      if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      lVar4 = *local_118;
      puVar2 = (uint *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar2 = *puVar2 + 1;
        UNLOCK();
      }
      if (lVar4 == lVar8) {
        iVar6 = 0;
LAB_18049229b:
        uVar7 = (uint)(iVar6 < 0);
      }
      else {
        iVar6 = FUN_18049bb30(lVar4,lVar8);
        if (-1 < iVar6) {
          iVar6 = FUN_18049bb30(lVar8,lVar4);
          goto LAB_18049229b;
        }
        uVar7 = 0xffffffff;
      }
      if ((*puVar2 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar2;
        *puVar2 = *puVar2 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar2);
        }
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      plVar9 = local_118;
      plVar5 = local_118;
      if ((int)uVar7 < 0) break;
      lVar8 = *local_118;
      puVar1 = (uint *)(lVar8 + -0x10);
      if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      lVar4 = *local_res20;
      puVar2 = (uint *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar2 = *puVar2 + 1;
        UNLOCK();
      }
      if (lVar4 == lVar8) {
        iVar6 = 0;
LAB_18049236d:
        uVar7 = (uint)(iVar6 < 0);
      }
      else {
        iVar6 = FUN_18049bb30(lVar4,lVar8);
        if (-1 < iVar6) {
          iVar6 = FUN_18049bb30(lVar8,lVar4);
          goto LAB_18049236d;
        }
        uVar7 = 0xffffffff;
      }
      if ((*puVar2 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar2;
        *puVar2 = *puVar2 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar2);
        }
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      if (((int)uVar7 < 0) ||
         (local_118 = local_118 + 1, plVar9 = local_118, plVar5 = local_118, param_3 <= local_118))
      break;
    } while( true );
  }
joined_r0x000180492403:
  do {
    plVar11 = local_110;
    if (param_3 <= plVar5) {
joined_r0x000180492630:
      for (; param_2 < local_110; local_110 = local_110 + -1) {
        plVar11 = plVar11 + -1;
        lVar8 = *plVar10;
        puVar1 = (uint *)(lVar8 + -0x10);
        if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *puVar1 = *puVar1 + 1;
          UNLOCK();
        }
        lVar4 = *plVar11;
        puVar2 = (uint *)(lVar4 + -0x10);
        if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *puVar2 = *puVar2 + 1;
          UNLOCK();
        }
        if (lVar4 == lVar8) {
          iVar6 = 0;
LAB_1804926b3:
          uVar7 = (uint)(iVar6 < 0);
        }
        else {
          iVar6 = FUN_18049bb30(lVar4,lVar8);
          if (-1 < iVar6) {
            iVar6 = FUN_18049bb30(lVar8,lVar4);
            goto LAB_1804926b3;
          }
          uVar7 = 0xffffffff;
        }
        if ((*puVar2 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar2;
          *puVar2 = *puVar2 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar2);
          }
        }
        if ((*puVar1 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar1;
          *puVar1 = *puVar1 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar1);
          }
        }
        if (-1 < (int)uVar7) {
          lVar8 = *plVar11;
          puVar1 = (uint *)(lVar8 + -0x10);
          if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *puVar1 = *puVar1 + 1;
            UNLOCK();
          }
          lVar4 = *local_res20;
          puVar2 = (uint *)(lVar4 + -0x10);
          if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *puVar2 = *puVar2 + 1;
            UNLOCK();
          }
          if (lVar4 == lVar8) {
            iVar6 = 0;
LAB_180492781:
            uVar7 = (uint)(iVar6 < 0);
          }
          else {
            iVar6 = FUN_18049bb30(lVar4,lVar8);
            if (-1 < iVar6) {
              iVar6 = FUN_18049bb30(lVar8,lVar4);
              goto LAB_180492781;
            }
            uVar7 = 0xffffffff;
          }
          if ((*puVar2 & 0x30000000) == 0) {
            LOCK();
            uVar3 = *puVar2;
            *puVar2 = *puVar2 - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar2);
            }
          }
          if ((*puVar1 & 0x30000000) == 0) {
            LOCK();
            uVar3 = *puVar1;
            *puVar1 = *puVar1 - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar1);
            }
          }
          plVar9 = local_118;
          plVar10 = local_res20;
          if ((int)uVar7 < 0) break;
          local_res20 = local_res20 + -1;
          if (local_res20 != plVar11) {
            lVar8 = *local_res20;
            *local_res20 = (longlong)&DAT_1821dbf98;
            *local_res20 = *plVar11;
            *plVar11 = lVar8;
            FUN_180495200();
          }
        }
        plVar9 = local_118;
        plVar10 = local_res20;
      }
      if (local_110 == param_2) {
        if (plVar5 == param_3) {
          *param_1 = plVar10;
          param_1[1] = plVar9;
          return;
        }
        if (plVar9 != plVar5) {
          lVar8 = *plVar10;
          *plVar10 = (longlong)&DAT_1821dbf98;
          *plVar10 = *plVar9;
          *plVar9 = lVar8;
          FUN_180495200(&DAT_1821dbf98);
        }
        lVar8 = *plVar10;
        local_118 = plVar9 + 1;
        *plVar10 = (longlong)&DAT_1821dbf98;
        *plVar10 = *plVar5;
        *plVar5 = lVar8;
        FUN_180495200();
        local_res20 = plVar10 + 1;
        plVar9 = local_118;
        plVar10 = local_res20;
        plVar5 = plVar5 + 1;
      }
      else {
        local_110 = local_110 + -1;
        if (plVar5 == param_3) {
          local_res20 = plVar10 + -1;
          if (local_110 != local_res20) {
            lVar8 = *local_110;
            *local_110 = (longlong)&DAT_1821dbf98;
            *local_110 = *local_res20;
            *local_res20 = lVar8;
            FUN_180495200(&DAT_1821dbf98);
          }
          lVar8 = *local_res20;
          local_118 = plVar9 + -1;
          *local_res20 = (longlong)&DAT_1821dbf98;
          *local_res20 = *local_118;
          *local_118 = lVar8;
          FUN_180495200();
          plVar9 = local_118;
          plVar10 = local_res20;
        }
        else {
          lVar8 = *plVar5;
          *plVar5 = (longlong)&DAT_1821dbf98;
          *plVar5 = *local_110;
          *local_110 = lVar8;
          FUN_180495200();
          plVar5 = plVar5 + 1;
        }
      }
      goto joined_r0x000180492403;
    }
    lVar8 = *plVar5;
    puVar1 = (uint *)(lVar8 + -0x10);
    if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *puVar1 = *puVar1 + 1;
      UNLOCK();
    }
    lVar4 = *local_res20;
    puVar2 = (uint *)(lVar4 + -0x10);
    if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *puVar2 = *puVar2 + 1;
      UNLOCK();
    }
    if (lVar4 == lVar8) {
      iVar6 = 0;
LAB_180492485:
      uVar7 = (uint)(iVar6 < 0);
    }
    else {
      iVar6 = FUN_18049bb30(lVar4,lVar8);
      if (-1 < iVar6) {
        iVar6 = FUN_18049bb30(lVar8,lVar4);
        goto LAB_180492485;
      }
      uVar7 = 0xffffffff;
    }
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    plVar10 = local_res20;
    if (-1 < (int)uVar7) {
      lVar8 = *local_res20;
      puVar1 = (uint *)(lVar8 + -0x10);
      if ((*(uint *)(lVar8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar1 = *puVar1 + 1;
        UNLOCK();
      }
      lVar4 = *plVar5;
      puVar2 = (uint *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *puVar2 = *puVar2 + 1;
        UNLOCK();
      }
      if (lVar4 == lVar8) {
        iVar6 = 0;
LAB_180492552:
        uVar7 = (uint)(iVar6 < 0);
      }
      else {
        iVar6 = FUN_18049bb30(lVar4,lVar8);
        if (-1 < iVar6) {
          iVar6 = FUN_18049bb30(lVar8,lVar4);
          goto LAB_180492552;
        }
        uVar7 = 0xffffffff;
      }
      if ((*puVar2 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar2;
        *puVar2 = *puVar2 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar2);
        }
      }
      if ((*puVar1 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar1;
        *puVar1 = *puVar1 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar1);
        }
      }
      plVar9 = local_118;
      if ((int)uVar7 < 0) goto joined_r0x000180492630;
      if (local_118 != plVar5) {
        lVar8 = *local_118;
        *local_118 = (longlong)&DAT_1821dbf98;
        *local_118 = *plVar5;
        *plVar5 = lVar8;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar7 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar12 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar7;
          if (bVar12) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
      }
      local_118 = local_118 + 1;
    }
    plVar9 = local_118;
    plVar5 = plVar5 + 1;
  } while( true );
}



############ FUN_ 1804929f0 size=721 ############

void FUN_1804929f0(longlong param_1,longlong param_2,longlong param_3,longlong *param_4)

{
  uint *puVar1;
  uint *puVar2;
  uint uVar3;
  longlong lVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong lVar7;
  int iVar8;
  uint uVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lStack0000000000000028;
  
  lStack0000000000000028 = param_3 + -1;
  lVar11 = lStack0000000000000028 >> 1;
  lVar7 = param_2;
  while (lVar7 < lVar11) {
    lVar10 = lVar7 * 2 + 2;
    lVar4 = *(longlong *)(param_1 + -8 + lVar10 * 8);
    puVar1 = (uint *)(lVar4 + -0x10);
    if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *puVar1 = *puVar1 + 1;
      UNLOCK();
    }
    lVar5 = *(longlong *)(param_1 + lVar10 * 8);
    puVar2 = (uint *)(lVar5 + -0x10);
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *puVar2 = *puVar2 + 1;
      UNLOCK();
    }
    if (lVar5 == lVar4) {
      iVar8 = 0;
LAB_180492acc:
      uVar9 = (uint)(iVar8 < 0);
    }
    else {
      iVar8 = FUN_18049bb30(lVar5,lVar4);
      if (-1 < iVar8) {
        iVar8 = FUN_18049bb30(lVar4,lVar5);
        goto LAB_180492acc;
      }
      uVar9 = 0xffffffff;
    }
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    if ((int)uVar9 < 0) {
      lVar10 = lVar7 * 2 + 1;
    }
    uVar6 = *(undefined8 *)(param_1 + lVar7 * 8);
    *(undefined8 *)(param_1 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar10 * 8);
    *(undefined8 *)(param_1 + lVar10 * 8) = uVar6;
    lVar7 = lVar10;
  }
  if ((lVar7 == lVar11) && (((ulonglong)((uint)param_3 & 1) ^ param_3 >> 0x3f) == param_3 >> 0x3f))
  {
    uVar6 = *(undefined8 *)(param_1 + lVar7 * 8);
    *(undefined8 *)(param_1 + lVar7 * 8) = *(undefined8 *)(param_1 + -8 + param_3 * 8);
    *(undefined8 *)(param_1 + -8 + param_3 * 8) = uVar6;
    lVar7 = lStack0000000000000028;
  }
  while (param_2 < lVar7) {
    lVar11 = *param_4;
    lVar10 = lVar7 + -1 >> 1;
    puVar1 = (uint *)(lVar11 + -0x10);
    if ((*(uint *)(lVar11 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *puVar1 = *puVar1 + 1;
      UNLOCK();
    }
    lVar4 = *(longlong *)(param_1 + lVar10 * 8);
    puVar2 = (uint *)(lVar4 + -0x10);
    if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *puVar2 = *puVar2 + 1;
      UNLOCK();
    }
    if (lVar4 == lVar11) {
      iVar8 = 0;
LAB_180492c1d:
      uVar9 = (uint)(iVar8 < 0);
    }
    else {
      iVar8 = FUN_18049bb30(lVar4,lVar11);
      if (-1 < iVar8) {
        iVar8 = FUN_18049bb30(lVar11,lVar4);
        goto LAB_180492c1d;
      }
      uVar9 = 0xffffffff;
    }
    if ((*puVar2 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar2;
      *puVar2 = *puVar2 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar2);
      }
    }
    if ((*puVar1 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar1;
      *puVar1 = *puVar1 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar1);
      }
    }
    if (-1 < (int)uVar9) break;
    uVar6 = *(undefined8 *)(param_1 + lVar7 * 8);
    *(undefined8 *)(param_1 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar10 * 8);
    *(undefined8 *)(param_1 + lVar10 * 8) = uVar6;
    lVar7 = lVar10;
  }
  lVar11 = *(longlong *)(param_1 + lVar7 * 8);
  *(longlong *)(param_1 + lVar7 * 8) = *param_4;
  *param_4 = lVar11;
  return;
}



############ FUN_ 180492cd0 size=482 ############

void FUN_180492cd0(longlong *param_1,longlong *param_2,longlong *param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  bool bVar4;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18;
  longlong local_58;
  longlong local_50;
  longlong local_48;
  longlong local_40;
  longlong local_38;
  longlong local_30;
  
  local_res8 = *param_1;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  local_res10 = *param_2;
  uVar2 = *(uint *)(local_res10 + -0x10);
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    puVar1 = (uint *)(local_res10 + -0x10);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  cVar3 = FUN_180491ea0(uVar2,&local_res10,&local_res8);
  if (cVar3 != '\0') {
    local_40 = *param_2;
    *param_2 = (longlong)&DAT_1821dbf98;
    *param_2 = *param_1;
    *param_1 = local_40;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar4 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar4) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  local_res18 = *param_2;
  if ((*(uint *)(local_res18 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res18 + -0x10) = *(int *)(local_res18 + -0x10) + 1;
    UNLOCK();
  }
  local_58 = *param_3;
  uVar2 = *(uint *)(local_58 + -0x10);
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    puVar1 = (uint *)(local_58 + -0x10);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + 1;
    UNLOCK();
  }
  cVar3 = FUN_180491ea0(uVar2,&local_58,&local_res18);
  if (cVar3 != '\0') {
    local_38 = *param_3;
    *param_3 = (longlong)&DAT_1821dbf98;
    *param_3 = *param_2;
    *param_2 = local_38;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar2 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar4 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar2;
      if (bVar4) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    local_50 = *param_1;
    if ((*(uint *)(local_50 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_50 + -0x10) = *(int *)(local_50 + -0x10) + 1;
      UNLOCK();
    }
    local_48 = *param_2;
    uVar2 = *(uint *)(local_48 + -0x10);
    if ((uVar2 & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_48 + -0x10) = *(int *)(local_48 + -0x10) + 1;
      UNLOCK();
    }
    cVar3 = FUN_180491ea0(uVar2,&local_48,&local_50);
    if (cVar3 != '\0') {
      local_30 = *param_2;
      *param_2 = (longlong)&DAT_1821dbf98;
      *param_2 = *param_1;
      *param_1 = local_30;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar2 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar4 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar2;
        if (bVar4) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
    }
  }
  return;
}



############ FUN_ 180491ea0 size=180 ############

bool FUN_180491ea0(undefined8 param_1,longlong *param_2,longlong *param_3)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  uint uVar4;
  
  if (*param_2 != *param_3) {
    iVar2 = FUN_18049bb30(*param_2);
    if (iVar2 < 0) {
      uVar4 = 0xffffffff;
      goto LAB_180491ef3;
    }
  }
  if (*param_3 == *param_2) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_18049bb30(*param_3);
  }
  uVar4 = (uint)(iVar2 < 0);
LAB_180491ef3:
  puVar3 = (uint *)(*param_2 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(*param_3 + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  return (int)uVar4 < 0;
}



############ FUN_ 180490ba0 size=72 ############

void FUN_180490ba0(longlong param_1)

{
  longlong *_Memory;
  
  _Memory = *(longlong **)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = 0;
  FUN_180483670();
  FUN_1811efe00(_Memory[1]);
  LOCK();
  *(undefined4 *)(*_Memory + 0xa8) = 0;
  UNLOCK();
  _Cnd_do_broadcast_at_thread_exit();
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 181243b40 size=315 ############

undefined8 FUN_181243b40(longlong *param_1,longlong *param_2)

{
  int iVar1;
  longlong *plVar2;
  longlong *plVar3;
  uint *_Memory;
  longlong *plVar4;
  int iVar5;
  longlong lVar6;
  ulonglong uVar7;
  uint uVar8;
  uint uVar9;
  
  uVar9 = *(uint *)((longlong)param_1 + 0xc);
  uVar8 = 0;
  if (0 < (int)uVar9) {
    lVar6 = 0;
    plVar3 = (longlong *)*param_1;
    do {
      if (*plVar3 == *param_2) {
        if (uVar8 < uVar9) {
          uVar9 = (uVar9 - uVar8) - 1;
          plVar3 = (longlong *)*param_1 + (longlong)(int)uVar8 * 3;
          if (0 < (int)uVar9) {
            uVar7 = (ulonglong)uVar9;
            plVar2 = plVar3;
            do {
              plVar4 = plVar2 + 3;
              lVar6 = *plVar3;
              *plVar3 = *plVar4;
              *plVar4 = lVar6;
              lVar6 = plVar3[1];
              plVar3[1] = plVar2[4];
              plVar2[4] = lVar6;
              lVar6 = plVar3[2];
              plVar3[2] = plVar2[5];
              plVar3 = plVar3 + 3;
              plVar2[5] = lVar6;
              uVar7 = uVar7 - 1;
              plVar2 = plVar4;
            } while (uVar7 != 0);
          }
          (**(code **)(*(longlong *)plVar3[1] + 0xb0))((longlong *)plVar3[1],plVar3 + 2);
          _Memory = (uint *)(*plVar3 + -0x10);
          if ((*_Memory & 0x30000000) == 0) {
            LOCK();
            uVar9 = *_Memory;
            *_Memory = *_Memory - 1;
            UNLOCK();
            if (uVar9 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
          iVar1 = *(int *)((longlong)param_1 + 0xc);
          iVar5 = 0;
          if (0 < iVar1 * 2) {
            iVar5 = iVar1 * 2;
          }
          if (iVar5 < (int)param_1[1]) {
            if (iVar1 < 2) {
              iVar1 = 2;
            }
            if (iVar1 < (int)param_1[1]) {
              FUN_18049b620(param_1);
            }
          }
        }
        return 1;
      }
      uVar8 = uVar8 + 1;
      lVar6 = lVar6 + 1;
      plVar3 = plVar3 + 3;
    } while (lVar6 < (int)uVar9);
  }
  return 0;
}



############ FUN_ 181352050 size=238 ############

undefined8 * FUN_181352050(longlong *param_1,undefined8 *param_2,uint param_3)

{
  uint uVar1;
  longlong lVar2;
  bool bVar3;
  bool bVar4;
  undefined1 **ppuVar5;
  uint *puVar6;
  undefined1 *local_res8;
  undefined1 *local_res10;
  
  local_res8 = (undefined1 *)((ulonglong)local_res8 & 0xffffffff00000000);
  lVar2 = *param_1;
  if (lVar2 == 0) {
    bVar4 = false;
    bVar3 = true;
    local_res10 = &DAT_1821dbf98;
    ppuVar5 = &local_res10;
  }
  else {
    bVar4 = true;
    bVar3 = false;
    if (param_3 < *(uint *)(lVar2 + 0x24)) {
      local_res8 = *(undefined1 **)(*(longlong *)(lVar2 + 0x18) + (longlong)(int)param_3 * 0x18);
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      local_res8 = &DAT_1821dbf98;
    }
    ppuVar5 = &local_res8;
  }
  *param_2 = *ppuVar5;
  *ppuVar5 = &DAT_1821dbf98;
  if (bVar4) {
    puVar6 = (uint *)(local_res8 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  if ((bVar3) && (puVar6 = (uint *)(local_res10 + -0x10), (*puVar6 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return param_2;
}



############ FUN_ 180490c00 size=72 ############

void FUN_180490c00(longlong param_1)

{
  longlong *_Memory;
  
  _Memory = *(longlong **)(param_1 + 0x20);
  *(undefined8 *)(param_1 + 0x20) = 0;
  FUN_180483670();
  FUN_1811eff30(_Memory[1]);
  LOCK();
  *(undefined4 *)(*_Memory + 0xa8) = 0;
  UNLOCK();
  _Cnd_do_broadcast_at_thread_exit();
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180493500 size=43 ############

undefined8 * FUN_180493500(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::SingleThreadedReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180493920 size=52 ############

void * FUN_180493920(void *param_1,ulonglong param_2)

{
  FUN_181217e70();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180493960 size=52 ############

void * FUN_180493960(void *param_1,ulonglong param_2)

{
  FUN_18123ec40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804939a0 size=116 ############

undefined8 * FUN_1804939a0(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::FileLogger::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::Logger::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180493a20 size=43 ############

undefined8 * FUN_180493a20(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Logger::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180493f70 size=550 ############

undefined8 * FUN_180493f70(longlong *param_1,undefined8 *param_2)

{
  longlong *plVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  uint *puVar8;
  longlong lVar9;
  char local_res8 [8];
  undefined8 *local_res10;
  char local_res18 [8];
  char local_res20 [8];
  char local_98 [8];
  longlong local_90;
  longlong local_88;
  longlong local_80;
  longlong local_78 [2];
  char *local_68;
  char *local_60;
  undefined8 local_58;
  char *local_50;
  char *local_48;
  
  local_78[1] = 0xfffffffffffffffe;
  *param_2 = &DAT_1821dbf98;
  local_98[4] = '\x01';
  local_98[5] = '\0';
  local_98[6] = '\0';
  local_98[7] = '\0';
  local_res10 = param_2;
  iVar3 = (**(code **)(*param_1 + 0x38))();
  iVar4 = (**(code **)(*(longlong *)param_1[2] + 0x38))();
  plVar1 = (longlong *)param_1[2];
  if (iVar3 < iVar4) {
    uVar6 = (**(code **)(*plVar1 + 0x20))(plVar1,&local_90);
    local_res8[0] = '(';
    local_res8[1] = '\0';
    lVar2 = -1;
    do {
      lVar9 = lVar2;
      lVar2 = lVar9 + 1;
    } while (local_res8[lVar9 + 1] != '\0');
    local_68 = local_res8 + lVar9 + 1;
    FUN_181232e20(param_2,local_res8);
    uVar6 = FUN_181232d30(param_2,uVar6);
    local_res18[0] = ')';
    local_res18[1] = '\0';
    lVar2 = -1;
    do {
      lVar9 = lVar2;
      lVar2 = lVar9 + 1;
    } while (local_res18[lVar9 + 1] != '\0');
    local_60 = local_res18 + lVar9 + 1;
    FUN_181232e20(uVar6,local_res18);
    puVar8 = (uint *)(local_90 + -0x10);
    if ((*puVar8 & 0x30000000) != 0) goto LAB_1804940ab;
    LOCK();
    uVar5 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
  }
  else {
    puVar7 = (undefined8 *)(**(code **)(*plVar1 + 0x20))(plVar1,&local_88);
    local_58 = *param_2;
    *param_2 = *puVar7;
    *puVar7 = local_58;
    puVar8 = (uint *)(local_88 + -0x10);
    if ((*puVar8 & 0x30000000) != 0) goto LAB_1804940ab;
    LOCK();
    uVar5 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
  }
  if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    free(puVar8);
  }
LAB_1804940ab:
  (**(code **)(*param_1 + 0x80))(param_1,param_2);
  iVar4 = (**(code **)(*(longlong *)param_1[3] + 0x38))();
  plVar1 = (longlong *)param_1[3];
  if (iVar4 < iVar3) {
    uVar6 = (**(code **)(*plVar1 + 0x20))(plVar1,local_78);
    FUN_181232d30(param_2,uVar6);
    puVar8 = (uint *)(local_78[0] + -0x10);
    uVar5 = *puVar8;
  }
  else {
    uVar6 = (**(code **)(*plVar1 + 0x20))(plVar1,&local_80);
    local_res20[0] = '(';
    local_res20[1] = '\0';
    lVar2 = -1;
    do {
      lVar9 = lVar2;
      lVar2 = lVar9 + 1;
    } while (local_res20[lVar9 + 1] != '\0');
    local_50 = local_res20 + lVar9 + 1;
    FUN_181232e20(param_2,local_res20);
    uVar6 = FUN_181232d30(param_2,uVar6);
    local_98[0] = ')';
    local_98[1] = '\0';
    lVar2 = -1;
    do {
      lVar9 = lVar2;
      lVar2 = lVar9 + 1;
    } while (local_98[lVar9 + 1] != '\0');
    local_48 = local_98 + lVar9 + 1;
    FUN_181232e20(uVar6,local_98);
    puVar8 = (uint *)(local_80 + -0x10);
    uVar5 = *puVar8;
  }
  if ((uVar5 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return param_2;
}



############ FUN_ 180494590 size=283 ############

longlong * FUN_180494590(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  undefined8 uVar4;
  longlong *plVar5;
  uint *puVar6;
  undefined1 local_res8 [8];
  longlong local_res18;
  longlong *local_res20;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  iVar3 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x38))();
  plVar5 = *(longlong **)(param_1 + 0x10);
  if (iVar3 < 1) {
    uVar4 = (**(code **)(*plVar5 + 0x20))(plVar5,&local_res20);
    FUN_181246550(param_2,&DAT_18249688c,uVar4,param_4,uVar7);
    puVar6 = (uint *)(local_res20 + -2);
    if ((*puVar6 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
  }
  else {
    uVar4 = (**(code **)(*plVar5 + 0x20))(plVar5,&local_res18);
    plVar5 = (longlong *)FUN_181246550(local_res8,&DAT_182496894,uVar4,param_4,uVar7);
    local_res20 = plVar5;
    FUN_181232e20(plVar5,&DAT_182496890,&DAT_182496891);
    lVar2 = *plVar5;
    *param_2 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
    puVar6 = (uint *)(*plVar5 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    puVar6 = (uint *)(local_res18 + -0x10);
    if ((*puVar6 & 0x30000000) != 0) {
      return param_2;
    }
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
  }
  if (uVar1 != 0) {
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(puVar6);
}



############ FUN_ 180494d30 size=73 ############

void FUN_180494d30(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[3] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = std::exception::vftable;
                    /* WARNING: Could not recover jumptable at 0x000180494d72. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  __std_exception_destroy(param_1 + 1);
  return;
}



############ FUN_ 180494df0 size=106 ############

undefined8 * FUN_180494df0(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[3] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180494e60 size=43 ############

undefined8 * FUN_180494e60(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::SingleThreadedReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180494e90 size=108 ############

undefined8 * FUN_180494e90(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)param_1[3];
  if (puVar2 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar2 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  puVar2 = (undefined8 *)param_1[2];
  if (puVar2 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar2 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  *param_1 = juce::SingleThreadedReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180494f00 size=83 ############

undefined8 * FUN_180494f00(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  
  puVar2 = (undefined8 *)param_1[2];
  if (puVar2 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar2 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  *param_1 = juce::SingleThreadedReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180494f60 size=43 ############

undefined8 * FUN_180494f60(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Expression::Scope::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180494fe0 size=52 ############

void * FUN_180494fe0(void *param_1,ulonglong param_2)

{
  FUN_1812365d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495020 size=96 ############

undefined8 * FUN_180495020(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::FileInputSource::vftable;
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804950d0 size=52 ############

void * FUN_1804950d0(void *param_1,ulonglong param_2)

{
  FUN_18124a420();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495110 size=52 ############

void * FUN_180495110(void *param_1,ulonglong param_2)

{
  FUN_181234a80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495240 size=53 ############

basic_streambuf<char,std::char_traits<char>_> *
FUN_180495240(basic_streambuf<char,std::char_traits<char>_> *param_1,uint param_2)

{
  std::basic_streambuf<char,std::char_traits<char>_>::~basic_streambuf<char,std::char_traits<char>_>
            (param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495330 size=96 ############

undefined8 * FUN_180495330(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::OutputStream::vftable;
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804953c0 size=52 ############

void * FUN_1804953c0(void *param_1,ulonglong param_2)

{
  FUN_18122b690();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495400 size=89 ############

undefined8 * FUN_180495400(undefined8 *param_1,uint param_2)

{
  if ((void *)param_1[2] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[2]);
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804954c0 size=52 ############

void * FUN_1804954c0(void *param_1,ulonglong param_2)

{
  FUN_18122b690();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495500 size=52 ############

void * FUN_180495500(void *param_1,ulonglong param_2)

{
  FUN_18122acf0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495540 size=52 ############

void * FUN_180495540(void *param_1,ulonglong param_2)

{
  FUN_181229bb0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180495760 size=43 ############

undefined8 * FUN_180495760(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::var::VariantType::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18122eaa0 size=417 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_18122eaa0(undefined8 param_1,double param_2)

{
  uint *_Memory;
  undefined8 in_RDX;
  char cVar1;
  uint uVar2;
  uint uVar3;
  longlong local_res18;
  longlong local_res20;
  
  uVar2 = SUB84(param_2,0) & (uint)DAT_1824c4f10;
  uVar3 = (uint)((ulonglong)param_2 >> 0x20) & DAT_1824c4f10._4_4_;
  if ((_DAT_1824c43f0 <= (double)CONCAT44(uVar3,uVar2)) ||
     ((double)CONCAT44(uVar3,uVar2) <= DAT_1824c3d78)) {
    FUN_1812339a0(&local_res20,in_RDX,0xf,1,0xfffffffffffffffe);
    FUN_18122ec50(param_1,&local_res20);
    _Memory = (uint *)(local_res20 + -0x10);
    uVar2 = *_Memory;
  }
  else {
    if ((double)(int)param_2 == param_2) {
      FUN_1812339a0((double)(int)param_2,in_RDX,1,0,0xfffffffffffffffe);
      return param_1;
    }
    if (DAT_1824c4140 < (double)CONCAT44(uVar3,uVar2) ||
        DAT_1824c4140 == (double)CONCAT44(uVar3,uVar2)) {
      if (DAT_1824c4340 < (double)CONCAT44(uVar3,uVar2) ||
          DAT_1824c4340 == (double)CONCAT44(uVar3,uVar2)) {
        if (DAT_1824c4390 < (double)CONCAT44(uVar3,uVar2) ||
            DAT_1824c4390 == (double)CONCAT44(uVar3,uVar2)) {
          cVar1 = ((double)CONCAT44(uVar3,uVar2) <= DAT_1824c43d0 &&
                  DAT_1824c43d0 != (double)CONCAT44(uVar3,uVar2)) + '\n';
        }
        else {
          cVar1 = '\f';
        }
      }
      else if (DAT_1824c4270 < (double)CONCAT44(uVar3,uVar2) ||
               DAT_1824c4270 == (double)CONCAT44(uVar3,uVar2)) {
        cVar1 = ((double)CONCAT44(uVar3,uVar2) <= DAT_1824c42f0 &&
                DAT_1824c42f0 != (double)CONCAT44(uVar3,uVar2)) + '\r';
      }
      else {
        cVar1 = '\x0f';
      }
    }
    else if ((double)CONCAT44(uVar3,uVar2) < DAT_1824c3e30) {
      cVar1 = ((double)CONCAT44(uVar3,uVar2) < _DAT_1824c3dc0) + '\x13';
    }
    else if ((double)CONCAT44(uVar3,uVar2) < DAT_1824c3f68) {
      cVar1 = ((double)CONCAT44(uVar3,uVar2) < DAT_1824c3eb8) + '\x11';
    }
    else {
      cVar1 = '\x10';
    }
    FUN_1812339a0(&local_res18,in_RDX,cVar1,0,0xfffffffffffffffe);
    FUN_18122ec50(param_1,&local_res18);
    _Memory = (uint *)(local_res18 + -0x10);
    uVar2 = *_Memory;
  }
  if ((uVar2 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18122ec50 size=2230 ############

undefined8 * FUN_18122ec50(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte *pbVar2;
  byte bVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined8 uVar6;
  undefined4 *puVar7;
  byte bVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint *puVar12;
  byte *pbVar13;
  ulonglong uVar14;
  byte *pbVar15;
  byte *pbVar16;
  byte *pbVar17;
  uint uVar18;
  longlong lVar19;
  int iVar20;
  size_t sVar21;
  byte *_Src;
  byte *_Src_00;
  byte *local_res10;
  byte *local_res18;
  undefined4 *local_res20;
  undefined4 *local_a8;
  undefined4 *local_a0;
  undefined4 *local_98;
  byte *local_90;
  byte *local_88;
  undefined1 local_80 [8];
  undefined1 local_78 [8];
  undefined1 local_70 [8];
  undefined1 local_68 [8];
  undefined1 local_60 [8];
  undefined8 local_58;
  byte *local_50;
  
  local_58 = 0xfffffffffffffffe;
  pbVar2 = (byte *)*param_2;
  iVar9 = 0;
  pbVar13 = pbVar2;
  while( true ) {
    while( true ) {
      bVar1 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      if (-1 < (char)bVar1) break;
      if ((*pbVar13 & 0xc0) != 0x80) goto LAB_18122ecb8;
      do {
        pbVar13 = pbVar13 + 1;
      } while ((*pbVar13 & 0xc0) == 0x80);
      iVar9 = iVar9 + 1;
    }
    if (bVar1 == 0) break;
LAB_18122ecb8:
    iVar9 = iVar9 + 1;
  }
  pbVar13 = pbVar2;
  if (iVar9 < 0) {
    if (iVar9 + 1 < 1) {
      uVar14 = (ulonglong)(1 - (iVar9 + 1));
      do {
        iVar9 = 0;
        do {
          pbVar13 = pbVar13 + -1;
          if ((*pbVar13 & 0xc0) != 0x80) break;
          iVar9 = iVar9 + 1;
        } while (iVar9 < 4);
        uVar14 = uVar14 - 1;
      } while (uVar14 != 0);
    }
  }
  else {
    while (iVar9 = iVar9 + -1, -1 < iVar9) {
      bVar1 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      if ((char)bVar1 < '\0') {
        bVar8 = 0x40;
        bVar3 = bVar1 & 0x40;
        while ((bVar3 != 0 && (8 < bVar8))) {
          pbVar13 = pbVar13 + 1;
          bVar8 = bVar8 >> 1;
          bVar3 = bVar1 & bVar8;
        }
      }
    }
  }
  uVar18 = 0;
  iVar9 = 0;
  pbVar15 = pbVar13;
  do {
    pbVar15 = pbVar15 + -1;
    pbVar16 = pbVar13;
    pbVar17 = pbVar13;
    _Src = pbVar13;
    _Src_00 = pbVar13;
    local_res10 = pbVar13;
    if ((*pbVar15 & 0xc0) != 0x80) break;
    iVar9 = iVar9 + 1;
  } while (iVar9 < 4);
joined_r0x00018122ed6b:
  if (pbVar15 <= pbVar2) goto LAB_18122f1ed;
  uVar14 = 0x7f;
  uVar10 = 0x7f;
  uVar4 = 0x40;
  bVar1 = *pbVar15;
  uVar18 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    iVar9 = 0;
    if ((bVar1 & 0x40) != 0) {
      do {
        uVar10 = (uint)uVar14;
        if (uVar4 < 9) break;
        uVar14 = uVar14 >> 1;
        uVar10 = (uint)uVar14;
        iVar9 = iVar9 + 1;
        uVar4 = uVar4 >> 1;
      } while ((bVar1 & uVar4) != 0);
    }
    uVar18 = bVar1 & uVar10;
    lVar19 = 1;
    if (0 < (longlong)iVar9) {
      do {
        if ((pbVar15[lVar19] & 0xc0) != 0x80) break;
        uVar18 = pbVar15[lVar19] & 0x3f | uVar18 << 6;
        lVar19 = lVar19 + 1;
      } while (lVar19 <= iVar9);
    }
  }
  uVar14 = 0x7f;
  uVar10 = 0x40;
  uVar4 = 0x7f;
  if (uVar18 == 0x30) {
    local_90 = pbVar15 + 1;
    if ((char)bVar1 < '\0') {
      bVar8 = 0x40;
      bVar3 = bVar1 & 0x40;
      while ((bVar3 != 0 && (8 < bVar8))) {
        local_90 = local_90 + 1;
        bVar8 = bVar8 >> 1;
        bVar3 = bVar1 & bVar8;
      }
    }
    if (local_90 == pbVar17) {
      iVar9 = 0;
      do {
        pbVar17 = pbVar17 + -1;
        if ((*pbVar17 & 0xc0) != 0x80) break;
        iVar9 = iVar9 + 1;
      } while (iVar9 < 4);
    }
  }
  else {
    if (uVar18 == 0x2e) {
      bVar1 = *pbVar15;
      local_88 = pbVar15 + 1;
      if ((char)bVar1 < '\0') {
        bVar8 = 0x40;
        bVar3 = bVar1 & 0x40;
        while ((bVar3 != 0 && (8 < bVar8))) {
          local_88 = local_88 + 1;
          bVar8 = bVar8 >> 1;
          bVar3 = bVar1 & bVar8;
        }
      }
      if ((pbVar17 == local_88) && (pbVar17 != pbVar13)) {
        bVar1 = *pbVar17;
        uVar11 = (uint)bVar1;
        if ((char)bVar1 < '\0') {
          iVar9 = 0;
          if ((bVar1 & 0x40) != 0) {
            do {
              uVar4 = (uint)uVar14;
              if (uVar10 < 9) break;
              uVar14 = uVar14 >> 1;
              uVar4 = (uint)uVar14;
              iVar9 = iVar9 + 1;
              uVar10 = uVar10 >> 1;
            } while ((bVar1 & uVar10) != 0);
          }
          uVar11 = bVar1 & uVar4;
          lVar19 = 1;
          if (0 < (longlong)iVar9) {
            do {
              if ((pbVar17[lVar19] & 0xc0) != 0x80) break;
              uVar11 = pbVar17[lVar19] & 0x3f | uVar11 << 6;
              lVar19 = lVar19 + 1;
            } while (lVar19 <= iVar9);
          }
        }
        if ((uVar11 == 0x30) && (pbVar17 = pbVar17 + 1, (char)bVar1 < '\0')) {
          bVar8 = 0x40;
          bVar3 = bVar1 & 0x40;
          while ((bVar3 != 0 && (8 < bVar8))) {
            pbVar17 = pbVar17 + 1;
            bVar8 = bVar8 >> 1;
            bVar3 = bVar1 & bVar8;
          }
        }
      }
LAB_18122f1ed:
      if (((pbVar17 == _Src) || (uVar18 != 0x2e)) && (pbVar16 == _Src_00)) {
        *param_1 = pbVar2;
        if ((*(uint *)(pbVar2 + -0x10) & 0x30000000) != 0) {
          return param_1;
        }
        LOCK();
        *(int *)(pbVar2 + -0x10) = *(int *)(pbVar2 + -0x10) + 1;
        UNLOCK();
        return param_1;
      }
      local_res18 = pbVar2;
      if (pbVar17 == _Src) {
        if ((_Src_00 == (byte *)0x0) || (*_Src_00 == 0)) {
          puVar5 = (undefined4 *)&DAT_1821dbf98;
        }
        else {
          sVar21 = (longlong)pbVar13 - (longlong)_Src_00;
          puVar5 = (undefined4 *)thunk_FUN_1811316e0();
          LOCK();
          *puVar5 = 0;
          UNLOCK();
          *(size_t *)(puVar5 + 2) = sVar21 + 4 & 0xfffffffffffffffc;
          puVar5 = puVar5 + 4;
          memcpy(puVar5,_Src_00,sVar21);
          *(undefined1 *)((longlong)puVar5 + sVar21) = 0;
        }
        local_res20 = puVar5;
        uVar6 = FUN_18124a8a0(local_80,pbVar2,local_res10);
        FUN_181232aa0(param_1,uVar6,&local_res20);
      }
      else if (pbVar16 == _Src_00) {
        if ((_Src == (byte *)0x0) || (*_Src == 0)) {
          puVar5 = (undefined4 *)&DAT_1821dbf98;
        }
        else {
          sVar21 = (longlong)pbVar13 - (longlong)_Src;
          puVar5 = (undefined4 *)thunk_FUN_1811316e0();
          LOCK();
          *puVar5 = 0;
          UNLOCK();
          *(size_t *)(puVar5 + 2) = sVar21 + 4 & 0xfffffffffffffffc;
          puVar5 = puVar5 + 4;
          memcpy(puVar5,_Src,sVar21);
          *(undefined1 *)((longlong)puVar5 + sVar21) = 0;
        }
        local_a8 = puVar5;
        uVar6 = FUN_18124a8a0(local_78,pbVar2,pbVar17);
        FUN_181232aa0(param_1,uVar6,&local_a8);
      }
      else {
        if (_Src != pbVar16) {
          puVar5 = (undefined4 *)&DAT_1821dbf98;
          if ((_Src_00 == (byte *)0x0) || (*_Src_00 == 0)) {
            local_res18 = &DAT_1821dbf98;
          }
          else {
            sVar21 = (longlong)pbVar13 - (longlong)_Src_00;
            puVar7 = (undefined4 *)thunk_FUN_1811316e0();
            LOCK();
            *puVar7 = 0;
            UNLOCK();
            *(size_t *)(puVar7 + 2) = sVar21 + 4 & 0xfffffffffffffffc;
            pbVar13 = (byte *)(puVar7 + 4);
            memcpy(pbVar13,_Src_00,sVar21);
            pbVar13[sVar21] = 0;
            pbVar16 = local_res10;
            local_res18 = pbVar13;
          }
          if ((_Src != (byte *)0x0) && (*_Src != 0)) {
            sVar21 = (longlong)pbVar16 - (longlong)_Src;
            puVar5 = (undefined4 *)thunk_FUN_1811316e0();
            LOCK();
            *puVar5 = 0;
            UNLOCK();
            *(size_t *)(puVar5 + 2) = sVar21 + 4 & 0xfffffffffffffffc;
            puVar5 = puVar5 + 4;
            memcpy(puVar5,_Src,sVar21);
            *(undefined1 *)((longlong)puVar5 + sVar21) = 0;
          }
          local_98 = puVar5;
          uVar6 = FUN_18124a8a0(local_68,pbVar2,pbVar17);
          uVar6 = FUN_181232aa0(local_60,uVar6,&local_98);
          FUN_181232aa0(param_1,uVar6,&local_res18);
          puVar12 = puVar5 + -4;
          if ((*puVar12 & 0x30000000) == 0) {
            LOCK();
            uVar18 = *puVar12;
            *puVar12 = *puVar12 - 1;
            UNLOCK();
            if (uVar18 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar12);
            }
          }
          puVar12 = (uint *)(local_res18 + -0x10);
          if ((*puVar12 & 0x30000000) != 0) {
            return param_1;
          }
          LOCK();
          uVar18 = *puVar12;
          *puVar12 = *puVar12 - 1;
          UNLOCK();
          goto LAB_18122f2a5;
        }
        if ((_Src_00 == (byte *)0x0) || (*_Src_00 == 0)) {
          puVar5 = (undefined4 *)&DAT_1821dbf98;
        }
        else {
          sVar21 = (longlong)pbVar13 - (longlong)_Src_00;
          puVar5 = (undefined4 *)thunk_FUN_1811316e0();
          LOCK();
          *puVar5 = 0;
          UNLOCK();
          *(size_t *)(puVar5 + 2) = sVar21 + 4 & 0xfffffffffffffffc;
          puVar5 = puVar5 + 4;
          memcpy(puVar5,_Src_00,sVar21);
          *(undefined1 *)((longlong)puVar5 + sVar21) = 0;
        }
        local_a0 = puVar5;
        uVar6 = FUN_18124a8a0(local_70,pbVar2,pbVar17);
        FUN_181232aa0(param_1,uVar6,&local_a0);
      }
      puVar12 = puVar5 + -4;
      if ((*puVar12 & 0x30000000) != 0) {
        return param_1;
      }
      LOCK();
      uVar18 = *puVar12;
      *puVar12 = *puVar12 - 1;
      UNLOCK();
LAB_18122f2a5:
      if (uVar18 != 0) {
        return param_1;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar12);
    }
    if ((uVar18 - 0x45 & 0xffffffdf) == 0) {
      pbVar17 = pbVar15 + 1;
      if ((char)bVar1 < '\0') {
        bVar8 = 0x40;
        bVar3 = bVar1 & 0x40;
        while ((bVar3 != 0 && (8 < bVar8))) {
          pbVar17 = pbVar17 + 1;
          bVar8 = bVar8 >> 1;
          bVar3 = bVar1 & bVar8;
        }
      }
      if (pbVar17 != pbVar13) {
        bVar1 = *pbVar17;
        uVar10 = (uint)bVar1;
        if ((char)bVar1 < '\0') {
          uVar10 = 0x40;
          iVar9 = 0;
          if ((bVar1 & 0x40) != 0) {
            do {
              uVar4 = (uint)uVar14;
              if (uVar10 < 9) break;
              uVar14 = uVar14 >> 1;
              uVar4 = (uint)uVar14;
              iVar9 = iVar9 + 1;
              uVar10 = uVar10 >> 1;
            } while ((bVar1 & uVar10) != 0);
          }
          uVar10 = bVar1 & uVar4;
          lVar19 = 1;
          if (0 < (longlong)iVar9) {
            do {
              if ((pbVar17[lVar19] & 0xc0) != 0x80) break;
              uVar10 = pbVar17[lVar19] & 0x3f | uVar10 << 6;
              lVar19 = lVar19 + 1;
            } while (lVar19 <= iVar9);
          }
        }
        if ((uVar10 == 0x2d) && (pbVar17 = pbVar17 + 1, (char)bVar1 < '\0')) {
          bVar8 = 0x40;
          bVar3 = bVar1 & 0x40;
          while ((bVar3 != 0 && (8 < bVar8))) {
            pbVar17 = pbVar17 + 1;
            bVar8 = bVar8 >> 1;
            bVar3 = bVar1 & bVar8;
          }
        }
        pbVar16 = pbVar17;
        _Src_00 = pbVar17;
        local_res10 = pbVar17;
        if (pbVar17 != pbVar13) {
          bVar1 = *pbVar17;
          uVar4 = (uint)bVar1;
          if ((char)bVar1 < '\0') {
            uVar10 = 0x40;
            uVar14 = 0x7f;
            uVar4 = 0x7f;
            iVar9 = 0;
            if ((bVar1 & 0x40) != 0) {
              do {
                uVar4 = (uint)uVar14;
                if (uVar10 < 9) break;
                uVar14 = uVar14 >> 1;
                uVar4 = (uint)uVar14;
                iVar9 = iVar9 + 1;
                uVar10 = uVar10 >> 1;
              } while ((bVar1 & uVar10) != 0);
            }
            uVar4 = bVar1 & uVar4;
            lVar19 = 1;
            if (0 < (longlong)iVar9) {
              do {
                if ((pbVar17[lVar19] & 0xc0) != 0x80) break;
                uVar4 = pbVar17[lVar19] & 0x3f | uVar4 << 6;
                lVar19 = lVar19 + 1;
              } while (lVar19 <= iVar9);
            }
          }
          if ((uVar4 == 0x2b) && (pbVar17 = pbVar17 + 1, _Src_00 = pbVar17, (char)bVar1 < '\0')) {
            bVar8 = 0x40;
            bVar3 = bVar1 & 0x40;
            while ((_Src_00 = pbVar17, bVar3 != 0 && (8 < bVar8))) {
              pbVar17 = pbVar17 + 1;
              bVar8 = bVar8 >> 1;
              bVar3 = bVar1 & bVar8;
            }
          }
        }
      }
      if (pbVar17 != pbVar13) {
        do {
          local_50 = pbVar17;
          bVar1 = *local_50;
          pbVar17 = local_50 + 1;
          if ((char)bVar1 < '\0') {
            bVar8 = 0x40;
            bVar3 = bVar1 & 0x40;
            while ((bVar3 != 0 && (8 < bVar8))) {
              pbVar17 = pbVar17 + 1;
              bVar8 = bVar8 >> 1;
              bVar3 = bVar1 & bVar8;
            }
          }
          bVar1 = *local_50;
          uVar4 = (uint)bVar1;
          if ((char)bVar1 < '\0') {
            uVar4 = 0x7f;
            uVar10 = 0x40;
            iVar20 = 0;
            iVar9 = 0;
            if ((bVar1 & 0x40) != 0) {
              do {
                iVar20 = iVar9;
                if (uVar10 < 9) break;
                uVar4 = uVar4 >> 1;
                iVar20 = iVar20 + 1;
                uVar10 = uVar10 >> 1;
                iVar9 = iVar20;
              } while ((bVar1 & uVar10) != 0);
            }
            uVar4 = bVar1 & uVar4;
            if (0 < iVar20) {
              lVar19 = 1;
              do {
                if ((local_50[lVar19] & 0xc0) != 0x80) break;
                uVar4 = local_50[lVar19] & 0x3f | uVar4 << 6;
                lVar19 = lVar19 + 1;
              } while (lVar19 <= iVar20);
            }
          }
          pbVar16 = local_res10;
        } while ((uVar4 == 0x30) && (_Src_00 = pbVar17, pbVar17 != pbVar13));
      }
      pbVar17 = pbVar15;
      _Src = pbVar15;
      local_res10 = pbVar16;
      if (_Src_00 == pbVar13) {
        pbVar16 = pbVar15;
        local_res10 = pbVar15;
      }
    }
  }
  iVar9 = 0;
  do {
    pbVar15 = pbVar15 + -1;
    if ((*pbVar15 & 0xc0) != 0x80) break;
    iVar9 = iVar9 + 1;
  } while (iVar9 < 4);
  goto joined_r0x00018122ed6b;
}



############ FUN_ 180495f30 size=240 ############

undefined8
FUN_180495f30(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  undefined8 *puVar5;
  uint *puVar6;
  undefined4 local_res10;
  undefined4 uStackX_14;
  longlong local_res18;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  bVar3 = false;
  bVar2 = false;
  local_res10 = 0;
  iVar4 = atoi((char *)*param_2);
  if (iVar4 == 0) {
    bVar3 = true;
    bVar2 = false;
    puVar5 = (undefined8 *)FUN_181248e40(param_2,&local_res18,param_3,param_4,uVar7);
    iVar4 = FUN_18049bb30(*puVar5,&DAT_182496868);
    if (iVar4 != 0) {
      bVar3 = true;
      bVar2 = true;
      puVar5 = (undefined8 *)FUN_181248e40(param_2,&local_res10,param_3,param_4,uVar7);
      iVar4 = FUN_18049bb30(*puVar5,&DAT_1824968cc);
      if (iVar4 != 0) {
        uVar7 = 0;
        goto LAB_180495fb2;
      }
    }
  }
  uVar7 = 1;
LAB_180495fb2:
  if (bVar2) {
    puVar6 = (uint *)(CONCAT44(uStackX_14,local_res10) + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
  }
  if ((bVar3) && (puVar6 = (uint *)(local_res18 + -0x10), (*puVar6 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  return uVar7;
}



############ FUN_ 1804961b0 size=256 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804961b0(undefined8 param_1,undefined4 *param_2,uint *param_3)

{
  uint *_Memory;
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint uVar4;
  ulonglong uVar5;
  char *_Src;
  undefined1 auStack_78 [32];
  undefined4 *local_58;
  undefined8 local_50;
  char local_2a [2];
  undefined8 local_28;
  char cStack_19;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  _Src = local_2a + 1;
  local_2a[1] = 0;
  uVar4 = *param_3;
  do {
    _Src = _Src + -1;
    cVar1 = "0123456789abcdef"[uVar4 & 0xf];
    *_Src = cVar1;
    uVar2 = uVar4 >> 4;
    uVar4 = uVar4 >> 4;
  } while (uVar2 != 0);
  if (cVar1 == '\0') {
    puVar3 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    uVar5 = (longlong)&local_28 + -(longlong)_Src + 3 & 0xfffffffffffffffc;
    local_58 = param_2;
    puVar3 = (undefined4 *)thunk_FUN_1811316e0(uVar5 + 0x17);
    LOCK();
    *puVar3 = 0;
    UNLOCK();
    *(ulonglong *)(puVar3 + 2) = uVar5;
    puVar3 = puVar3 + 4;
    memcpy(puVar3,_Src,(size_t)(local_2a + -(longlong)_Src + 1));
    *(char *)((longlong)puVar3 + (longlong)(local_2a + -(longlong)_Src + 1)) = '\0';
  }
  local_58 = puVar3;
  FUN_181246550(param_2,"Object 0x",&local_58);
  _Memory = puVar3 + -4;
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar4 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 180496970 size=66 ############

undefined8 * FUN_180496970(undefined8 *param_1,ulonglong param_2)

{
  FUN_180487600(param_1 + 2);
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180497ea0 size=707 ############

void FUN_180497ea0(longlong *param_1,undefined8 *param_2,undefined4 param_3,undefined1 param_4,
                  undefined4 param_5)

{
  code *pcVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  longlong lVar5;
  undefined8 uVar6;
  longlong *plVar7;
  uint *puVar8;
  char *pcVar9;
  double _X;
  undefined1 local_res10 [8];
  undefined1 local_48 [8];
  longlong local_40;
  longlong local_38;
  longlong local_30 [5];
  
  local_30[1] = 0xfffffffffffffffe;
  cVar2 = (**(code **)(*(longlong *)*param_2 + 0x80))();
  if (cVar2 != '\0') {
    pcVar1 = *(code **)(*param_1 + 0x28);
    if (pcVar1 == FUN_18122e9b0) {
      local_res10[0] = 0x22;
      (**(code **)(*param_1 + 0x20))(param_1,local_res10,1);
    }
    else {
      (*pcVar1)(param_1,0x22);
    }
    (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,&local_40,param_2 + 1);
    FUN_180498170(param_1,local_40);
    puVar8 = (uint *)(local_40 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    pcVar1 = *(code **)(*param_1 + 0x28);
    if (pcVar1 == FUN_18122e9b0) {
      local_48[0] = 0x22;
      (**(code **)(*param_1 + 0x20))(param_1,local_48,1);
      return;
    }
    (*pcVar1)(param_1,0x22);
    return;
  }
  cVar2 = (**(code **)(*(longlong *)*param_2 + 0x50))();
  if (cVar2 == '\0') {
    cVar2 = (**(code **)(*(longlong *)*param_2 + 0x58))();
    if (cVar2 != '\0') {
      (**(code **)(*param_1 + 0x20))(param_1,"undefined",9);
      return;
    }
    cVar2 = (**(code **)(*(longlong *)*param_2 + 0x70))();
    lVar5 = *(longlong *)*param_2;
    if (cVar2 != '\0') {
      cVar2 = (**(code **)(lVar5 + 0x28))((longlong *)*param_2,param_2 + 1);
      pcVar9 = "false";
      if (cVar2 != '\0') {
        pcVar9 = "true";
      }
      lVar5 = -1;
      do {
        lVar5 = lVar5 + 1;
      } while (pcVar9[lVar5] != '\0');
      (**(code **)(*param_1 + 0x20))(param_1,pcVar9,lVar5);
      return;
    }
    cVar2 = (**(code **)(lVar5 + 0x78))();
    lVar5 = *(longlong *)*param_2;
    if (cVar2 == '\0') {
      cVar2 = (**(code **)(lVar5 + 0x90))();
      lVar5 = *(longlong *)*param_2;
      if (cVar2 != '\0') {
        uVar6 = (**(code **)(lVar5 + 0x38))((longlong *)*param_2,param_2 + 1);
        FUN_180498740(param_1,uVar6,param_3,param_4,param_5);
        return;
      }
      cVar2 = (**(code **)(lVar5 + 0x88))();
      if (cVar2 != '\0') {
        plVar7 = (longlong *)FUN_1812279c0(param_2);
        if (plVar7 == (longlong *)0x0) {
          return;
        }
        (**(code **)(*plVar7 + 0x40))(plVar7,param_1,param_3,param_4,param_5);
        return;
      }
      (**(code **)(*(longlong *)*param_2 + 0x20))((longlong *)*param_2,&local_38,param_2 + 1);
      FUN_181232980(param_1,&local_38);
      puVar8 = (uint *)(local_38 + -0x10);
      uVar4 = *puVar8;
    }
    else {
      _X = (double)(**(code **)(lVar5 + 0x18))((longlong *)*param_2,param_2 + 1);
      iVar3 = _finite(_X);
      if (iVar3 == 0) goto LAB_180498063;
      uVar6 = FUN_18122eaa0(local_30,SUB84(_X,0));
      FUN_181232980(param_1,uVar6);
      puVar8 = (uint *)(local_30[0] + -0x10);
      uVar4 = *puVar8;
    }
    if ((uVar4 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  else {
LAB_180498063:
    (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a74,4);
  }
  return;
}



############ FUN_ 180498170 size=1303 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180498170(longlong *param_1,byte *param_2)

{
  byte bVar1;
  char cVar2;
  code *pcVar3;
  undefined8 uVar4;
  uint uVar5;
  ulonglong uVar6;
  undefined4 *puVar7;
  undefined8 *puVar8;
  undefined8 uVar9;
  uint uVar10;
  uint *puVar11;
  int iVar12;
  char *pcVar13;
  longlong lVar14;
  undefined1 auStack_e8 [32];
  undefined1 local_c8 [8];
  ushort local_c0 [4];
  undefined4 *local_b8;
  undefined4 *local_b0;
  byte *local_a8;
  longlong local_a0;
  longlong local_98 [3];
  undefined8 local_80;
  char local_5a [5];
  undefined1 auStack_55 [12];
  char acStack_49 [15];
  char local_3a [2];
  undefined8 local_38;
  char cStack_29;
  
  local_98[1] = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_e8;
  do {
    bVar1 = *param_2;
    local_a8 = param_2 + 1;
    uVar10 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar10 = 0x7f;
      uVar5 = 0x40;
      iVar12 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar5 < 9) break;
          uVar10 = uVar10 >> 1;
          iVar12 = iVar12 + 1;
          uVar5 = uVar5 >> 1;
        } while ((bVar1 & uVar5) != 0);
      }
      uVar10 = bVar1 & uVar10;
      for (; (iVar12 = iVar12 + -1, -1 < iVar12 && ((*local_a8 & 0xc0) == 0x80));
          local_a8 = local_a8 + 1) {
        uVar10 = *local_a8 & 0x3f | uVar10 << 6;
      }
    }
    param_2 = local_a8;
    switch(uVar10) {
    case 0:
    default:
      if (uVar10 - 0x20 < 0x5f) {
        pcVar3 = *(code **)(*param_1 + 0x28);
        if (pcVar3 == FUN_18122e9b0) {
          local_c8[0] = (undefined1)uVar10;
          (**(code **)(*param_1 + 0x20))(param_1,local_c8,1);
        }
        else {
          (*pcVar3)(param_1);
        }
      }
      else {
        uVar6 = 2;
        if (0xffff < uVar10) {
          uVar6 = 4;
        }
        if (uVar6 < 3) {
          uVar10 = uVar10 & 0xffff;
          pcVar13 = local_3a + 1;
          local_3a[1] = 0;
          do {
            pcVar13 = pcVar13 + -1;
            cVar2 = "0123456789abcdef"[uVar10 & 0xf];
            *pcVar13 = cVar2;
            uVar10 = uVar10 >> 4;
          } while (uVar10 != 0);
          if (cVar2 == '\0') {
            local_b0 = (undefined4 *)&DAT_1821dbf98;
          }
          else {
            puVar7 = (undefined4 *)thunk_FUN_1811316e0();
            LOCK();
            *puVar7 = 0;
            UNLOCK();
            *(ulonglong *)(puVar7 + 2) =
                 (longlong)&local_38 + -(longlong)pcVar13 + 3 & 0xfffffffffffffffc;
            puVar7 = puVar7 + 4;
            memcpy(puVar7,pcVar13,(size_t)(local_3a + -(longlong)pcVar13 + 1));
            *(char *)((longlong)puVar7 + (longlong)(local_3a + -(longlong)pcVar13 + 1)) = '\0';
            local_b0 = puVar7;
          }
          puVar8 = (undefined8 *)FUN_181231e80(&local_b0,local_98,4,4);
          (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a7c,2);
          uVar4 = *puVar8;
          local_80 = uVar4;
          uVar9 = FUN_18049d240(uVar4);
          (**(code **)(*param_1 + 0x20))(param_1,uVar4,uVar9);
          puVar11 = (uint *)(local_98[0] + -0x10);
          if ((*puVar11 & 0x30000000) == 0) {
            LOCK();
            uVar10 = *puVar11;
            *puVar11 = *puVar11 - 1;
            UNLOCK();
            if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar11);
            }
          }
          puVar11 = local_b0 + -4;
          if ((*puVar11 & 0x30000000) == 0) {
            LOCK();
            uVar10 = *puVar11;
            *puVar11 = *puVar11 - 1;
            UNLOCK();
            if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar11);
            }
          }
        }
        else {
          if (uVar10 < 0x10000) {
            local_c0[0] = (ushort)uVar10;
          }
          else {
            local_c0[0] = (short)(uVar10 - 0x10000 >> 10) + 0xd800;
            local_c0[1] = ((ushort)(uVar10 - 0x10000) & 0x3ff) + 0xdc00;
          }
          lVar14 = 0;
          do {
            pcVar13 = local_5a + 1;
            local_5a[1] = 0;
            uVar10 = (uint)local_c0[lVar14];
            do {
              pcVar13 = pcVar13 + -1;
              cVar2 = "0123456789abcdef"[uVar10 & 0xf];
              *pcVar13 = cVar2;
              uVar5 = uVar10 >> 4;
              uVar10 = uVar10 >> 4;
            } while (uVar5 != 0);
            if (cVar2 == '\0') {
              local_b8 = (undefined4 *)&DAT_1821dbf98;
            }
            else {
              puVar7 = (undefined4 *)thunk_FUN_1811316e0();
              LOCK();
              *puVar7 = 0;
              UNLOCK();
              *(ulonglong *)(puVar7 + 2) =
                   (ulonglong)(auStack_55 + -(longlong)pcVar13) & 0xfffffffffffffffc;
              puVar7 = puVar7 + 4;
              memcpy(puVar7,pcVar13,(size_t)(local_5a + -(longlong)pcVar13 + 1));
              *(char *)((longlong)puVar7 + (longlong)(local_5a + -(longlong)pcVar13 + 1)) = '\0';
              local_b8 = puVar7;
            }
            puVar8 = (undefined8 *)FUN_181231e80(&local_b8,&local_a0,4,4);
            (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a7c,2);
            uVar4 = *puVar8;
            local_98[2] = uVar4;
            uVar9 = FUN_18049d240(uVar4);
            (**(code **)(*param_1 + 0x20))(param_1,uVar4,uVar9);
            puVar11 = (uint *)(local_a0 + -0x10);
            if ((*puVar11 & 0x30000000) == 0) {
              LOCK();
              uVar10 = *puVar11;
              *puVar11 = *puVar11 - 1;
              UNLOCK();
              if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar11);
              }
            }
            puVar11 = local_b8 + -4;
            if ((*puVar11 & 0x30000000) == 0) {
              LOCK();
              uVar10 = *puVar11;
              *puVar11 = *puVar11 - 1;
              UNLOCK();
              if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar11);
              }
            }
            lVar14 = lVar14 + 1;
            param_2 = local_a8;
          } while (lVar14 < 2);
        }
      }
      break;
    case 7:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a88,2);
      break;
    case 8:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a8c,2);
      break;
    case 9:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a94,2);
      break;
    case 10:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a9c,2);
      break;
    case 0xc:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a90,2);
      break;
    case 0xd:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a98,2);
      break;
    case 0x22:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a80,2);
      break;
    case 0x5c:
      (**(code **)(*param_1 + 0x20))(param_1,&DAT_182496a84,2);
    }
  } while( true );
}



############ FUN_ 181231e80 size=305 ############

undefined8 * FUN_181231e80(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,uint param_4)

{
  char *pcVar1;
  byte bVar2;
  char cVar3;
  byte *pbVar4;
  char *pcVar5;
  byte bVar6;
  uint uVar7;
  byte bVar8;
  undefined4 *puVar9;
  char *pcVar10;
  char *pcVar11;
  ulonglong uVar12;
  byte *pbVar13;
  bool bVar14;
  
  pbVar4 = (byte *)*param_1;
  bVar2 = *pbVar4;
  pbVar13 = pbVar4;
  while (bVar2 != 0) {
    param_4 = param_4 - 1;
    pbVar13 = pbVar13 + 1;
    if ((char)bVar2 < '\0') {
      bVar8 = 0x40;
      bVar6 = bVar2 & 0x40;
      while ((bVar6 != 0 && (8 < bVar8))) {
        pbVar13 = pbVar13 + 1;
        bVar8 = bVar8 >> 1;
        bVar6 = bVar2 & bVar8;
      }
    }
    bVar2 = *pbVar13;
  }
  if ((int)param_4 < 1) {
    uVar7 = *(uint *)(pbVar4 + -0x10);
    *param_2 = pbVar4;
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar4 + -0x10) = *(int *)(pbVar4 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    puVar9 = (undefined4 *)thunk_FUN_1811316e0();
    LOCK();
    *puVar9 = 0;
    UNLOCK();
    pcVar1 = (char *)(puVar9 + 4);
    *(ulonglong *)(puVar9 + 2) =
         (ulonglong)(pbVar13 + (((longlong)(int)param_4 + 4) - (longlong)pbVar4)) &
         0xfffffffffffffffc;
    pcVar10 = pcVar1;
    if (-1 < (int)(param_4 - 1)) {
      for (uVar12 = (ulonglong)param_4; uVar12 != 0; uVar12 = uVar12 - 1) {
        *pcVar10 = '0';
        pcVar10 = pcVar10 + 1;
      }
      pcVar10 = pcVar1 + param_4;
    }
    pcVar5 = (char *)*param_1;
    cVar3 = *pcVar5;
    *pcVar10 = cVar3;
    if (cVar3 != '\0') {
      pcVar11 = pcVar10;
      do {
        cVar3 = pcVar11[(longlong)(pcVar5 + (1 - (longlong)pcVar10))];
        pcVar11 = pcVar11 + 1;
        *pcVar11 = cVar3;
      } while (cVar3 != '\0');
    }
    uVar7 = DAT_1821dbf88;
    *param_2 = pcVar1;
    if ((uVar7 & 0x30000000) == 0) {
      LOCK();
      uVar7 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar14 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar7;
      if (bVar14) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_2;
}



############ FUN_ 180498a10 size=99 ############

void FUN_180498a10(void *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(*(longlong *)((longlong)param_1 + 0x10) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 180498b20 size=52 ############

void * FUN_180498b20(void *param_1,ulonglong param_2)

{
  FUN_1812195f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180498b60 size=52 ############

void * FUN_180498b60(void *param_1,ulonglong param_2)

{
  FUN_181218f80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180498ba0 size=96 ############

undefined8 * FUN_180498ba0(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::FileFilter::vftable;
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180498c00 size=52 ############

void * FUN_180498c00(void *param_1,ulonglong param_2)

{
  FUN_1812186b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181214170 size=235 ############

undefined8 *
FUN_181214170(undefined8 param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  uint *_Memory;
  ulonglong uVar4;
  longlong local_res8;
  undefined8 *local_res10;
  undefined8 local_res20;
  undefined4 uVar5;
  
  local_res10 = param_2;
  FUN_18049a120(param_2,param_1,param_3,param_4,0,0xfffffffffffffffe);
  uVar5 = 1;
  uVar1 = FUN_181214d80(param_1);
  uVar4 = (ulonglong)uVar1;
  iVar2 = FUN_180493050(param_1,uVar1);
  while (iVar2 == 0x2f) {
    uVar4 = (ulonglong)((int)uVar4 + 1);
    iVar2 = FUN_180493050(param_1,uVar4);
  }
  iVar2 = FUN_181232860(param_1,uVar4 & 0xffffffff,0x2f);
  if (0 < iVar2 + 1) {
    puVar3 = (undefined8 *)FUN_1812490c0(param_1,&local_res8,0,iVar2 + 1,uVar5);
    local_res20 = *param_2;
    *param_2 = *puVar3;
    *puVar3 = local_res20;
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  FUN_181214b70(param_2,param_3);
  return param_2;
}



############ FUN_ 181214a30 size=167 ############

longlong * FUN_181214a30(longlong *param_1,longlong *param_2,char param_3)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint *_Memory;
  longlong local_res20;
  longlong local_18 [2];
  
  local_18[1] = 0xfffffffffffffffe;
  if (param_3 == '\0') {
    lVar2 = *param_1;
    *param_2 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    uVar3 = FUN_1812147b0(param_1,local_18);
    local_res20 = *param_1;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232aa0(param_2,&local_res20,uVar3);
    _Memory = (uint *)(local_18[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return param_2;
}



############ FUN_ 181214eb0 size=637 ############

longlong * FUN_181214eb0(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 *puVar4;
  undefined8 uVar5;
  int iVar6;
  uint *puVar7;
  longlong lVar8;
  void *pvVar9;
  int iVar10;
  size_t sVar11;
  char local_res10 [8];
  char local_res18 [8];
  char *local_res20;
  undefined4 uVar12;
  longlong local_60;
  longlong local_58 [3];
  
  local_58[1] = 0xfffffffffffffffe;
  iVar10 = 0;
  *param_1 = (longlong)&DAT_1821dbf98;
  uVar12 = 1;
  if (0 < *(int *)(param_2 + 0x24)) {
    do {
      if (0 < iVar10) {
        local_res10[0] = '&';
        local_res10[1] = '\0';
        lVar8 = -1;
        do {
          lVar3 = lVar8 + 1;
          lVar2 = lVar8 + 1;
          lVar8 = lVar3;
        } while (local_res10[lVar2] != '\0');
        iVar6 = ((int)local_res10 + (int)lVar3) - (int)local_res10;
        if (0 < iVar6) {
          lVar8 = -1;
          do {
            lVar8 = lVar8 + 1;
          } while (*(char *)(*param_1 + lVar8) != '\0');
          sVar11 = (size_t)iVar6;
          FUN_1812342b0(param_1,sVar11 + lVar8);
          pvVar9 = (void *)((longlong)(int)lVar8 + *param_1);
          memcpy(pvVar9,local_res10,sVar11);
          *(undefined1 *)(sVar11 + (longlong)pvVar9) = 0;
        }
      }
      puVar4 = (undefined8 *)FUN_181249970(param_2 + 0x28,iVar10);
      local_res20 = (char *)*puVar4;
      _Memory = (uint *)(local_res20 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        *_Memory = *_Memory + 1;
        UNLOCK();
      }
      uVar5 = FUN_181249970(param_2 + 0x18,iVar10);
      uVar5 = FUN_181213190(&local_60,uVar5,1,param_4,uVar12);
      FUN_181232d30(param_1,uVar5);
      puVar7 = (uint *)(local_60 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      if (*local_res20 != '\0') {
        uVar5 = FUN_181213190(local_58,&local_res20,1);
        local_res18[0] = '=';
        local_res18[1] = '\0';
        lVar8 = -1;
        do {
          lVar3 = lVar8 + 1;
          lVar2 = lVar8 + 1;
          lVar8 = lVar3;
        } while (local_res18[lVar2] != '\0');
        iVar6 = ((int)lVar3 + (int)local_res18) - (int)local_res18;
        if (0 < iVar6) {
          lVar8 = -1;
          do {
            lVar8 = lVar8 + 1;
          } while (*(char *)(*param_1 + lVar8) != '\0');
          sVar11 = (size_t)iVar6;
          FUN_1812342b0(param_1,sVar11 + lVar8);
          pvVar9 = (void *)((longlong)(int)lVar8 + *param_1);
          memcpy(pvVar9,local_res18,sVar11);
          *(undefined1 *)(sVar11 + (longlong)pvVar9) = 0;
        }
        FUN_181232d30(param_1,uVar5);
        puVar7 = (uint *)(local_58[0] + -0x10);
        if ((*puVar7 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar7;
          *puVar7 = *puVar7 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar7);
          }
        }
      }
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      iVar10 = iVar10 + 1;
    } while (iVar10 < *(int *)(param_2 + 0x24));
  }
  return param_1;
}



############ FUN_ 1812465e0 size=150 ############

longlong * FUN_1812465e0(longlong *param_1,longlong *param_2,longlong param_3)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  
  lVar2 = -1;
  do {
    lVar2 = lVar2 + 1;
  } while (*(char *)(param_3 + lVar2) != '\0');
  FUN_181232e20(param_2,param_3,param_3 + lVar2,param_3,0xfffffffffffffffe);
  lVar2 = *param_2;
  *param_1 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18049a5e0 size=97 ############

undefined8 * FUN_18049a5e0(undefined8 *param_1,ulonglong param_2)

{
  longlong lVar1;
  
  *param_1 = juce::HighResolutionTimer::vftable;
  lVar1 = param_1[1];
  *(undefined4 *)(lVar1 + 8) = 0;
  timeKillEvent(*(UINT *)(lVar1 + 0xc));
  if ((void *)param_1[1] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[1]);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18049a650 size=43 ############

undefined8 * FUN_18049a650(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::URL::DownloadTask::Listener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18049a680 size=96 ############

undefined8 * FUN_18049a680(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::URL::DownloadTask::vftable;
  _Memory = (uint *)(param_1[4] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18049a820 size=66 ############

undefined8 * FUN_18049a820(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::URLInputSource::vftable;
  FUN_1804858a0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18049b3f0 size=154 ############

void FUN_18049b3f0(undefined8 param_1,longlong *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  if (param_2 == (longlong *)0x0) {
    return;
  }
  if ((HANDLE)param_2[1] != (HANDLE)0xffffffffffffffff) {
    if ((*(char *)((longlong)param_2 + 0x19) != '\0') && ((char)param_2[3] != '\0')) {
      DisconnectNamedPipe((HANDLE)param_2[1]);
      *(undefined1 *)(param_2 + 3) = 0;
    }
    CloseHandle((HANDLE)param_2[1]);
    param_2[1] = -1;
  }
  CloseHandle((HANDLE)param_2[2]);
  DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)param_2 + 0x1b));
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_2);
}



############ FUN_ 18049b510 size=95 ############

void FUN_18049b510(undefined8 param_1,char *param_2)

{
  if (param_2 != (char *)0x0) {
    if (*param_2 != '\0') {
      CloseHandle(*(HANDLE *)(param_2 + 0x20));
      CloseHandle(*(HANDLE *)(param_2 + 0x18));
    }
    if (*(HANDLE *)(param_2 + 8) != (HANDLE)0x0) {
      CloseHandle(*(HANDLE *)(param_2 + 8));
    }
    if (*(HANDLE *)(param_2 + 0x10) != (HANDLE)0x0) {
      CloseHandle(*(HANDLE *)(param_2 + 0x10));
    }
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 18049dcb0 size=698 ############

void FUN_18049dcb0(longlong *param_1,longlong *param_2,longlong param_3,undefined1 param_4)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong lVar4;
  uint *puVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *plVar8;
  longlong local_res8;
  longlong local_res10;
  longlong *local_38;
  longlong *local_30;
  
  lVar4 = (longlong)param_2 - (longlong)param_1;
  do {
    lVar4 = lVar4 >> 3;
    if (lVar4 < 0x21) {
LAB_18049dd6d:
      if ((1 < lVar4) && (plVar6 = param_1, param_1 != param_2)) {
        while (plVar6 = plVar6 + 1, plVar6 != param_2) {
          lVar4 = *plVar6;
          *plVar6 = (longlong)&DAT_1821dbf98;
          plVar7 = plVar6;
          if ((lVar4 == *param_1) || (iVar3 = FUN_18049bb30(lVar4), -1 < iVar3)) {
            while ((plVar8 = plVar7 + -1, lVar4 != plVar7[-1] &&
                   (iVar3 = FUN_18049bb30(lVar4), iVar3 < 0))) {
              lVar2 = *plVar7;
              *plVar7 = *plVar8;
              *plVar8 = lVar2;
              plVar7 = plVar8;
            }
            local_res10 = *plVar7;
            *plVar7 = lVar4;
          }
          else {
            plVar7 = plVar6 + 1;
            plVar8 = plVar6;
            while (plVar8 != param_1) {
              plVar8 = plVar8 + -1;
              lVar2 = plVar7[-1];
              plVar7 = plVar7 + -1;
              *plVar7 = *plVar8;
              *plVar8 = lVar2;
            }
            local_res10 = *param_1;
            *param_1 = lVar4;
          }
          puVar5 = (uint *)(local_res10 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
        }
      }
      return;
    }
    if (param_3 < 1) {
      if (0x20 < lVar4) {
        FUN_18049e5b0(param_1,param_2,param_4);
        lVar4 = (longlong)param_2 - (longlong)param_1 >> 3;
        if (lVar4 < 2) {
          return;
        }
        param_2 = param_2 + -1;
        if (lVar4 < 2) goto LAB_18049dec2;
        do {
          local_res8 = *param_2;
          *param_2 = (longlong)&DAT_1821dbf98;
          *param_2 = *param_1;
          *param_1 = (longlong)&DAT_1821dbf98;
          FUN_18049e7c0(param_1,0,(longlong)param_2 - (longlong)param_1 >> 3,&local_res8,param_4);
          puVar5 = (uint *)(local_res8 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
LAB_18049dec2:
          param_2 = param_2 + -1;
        } while (1 < (8 - (longlong)param_1) + (longlong)param_2 >> 3);
        return;
      }
      goto LAB_18049dd6d;
    }
    FUN_18049e130(&local_38,param_1,param_2,param_4);
    plVar7 = local_30;
    plVar6 = local_38;
    param_3 = (param_3 >> 1) + (param_3 >> 2);
    if ((longlong)((longlong)local_38 - (longlong)param_1 & 0xfffffffffffffff8U) <
        (longlong)((longlong)param_2 - (longlong)local_30 & 0xfffffffffffffff8U)) {
      FUN_18049dcb0(param_1,local_38,param_3,param_4);
      plVar6 = param_2;
      param_1 = plVar7;
    }
    else {
      FUN_18049dcb0(local_30,param_2,param_3,param_4);
    }
    lVar4 = (longlong)plVar6 - (longlong)param_1;
    param_2 = plVar6;
  } while( true );
}



############ FUN_ 18049e130 size=1136 ############

void FUN_18049e130(undefined8 *param_1,longlong *param_2,longlong *param_3)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  longlong *plVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong *plVar7;
  longlong *plVar8;
  bool bVar9;
  longlong *local_res10;
  longlong *local_res18;
  
  lVar3 = (longlong)param_3 + (-8 - (longlong)param_2) >> 3;
  plVar4 = param_2 + ((longlong)param_3 - (longlong)param_2 >> 4);
  plVar7 = plVar4;
  if (lVar3 < 0x29) {
    FUN_18049e8d0(param_2,plVar4,param_3 + -1);
  }
  else {
    lVar3 = lVar3 + 1 >> 3;
    FUN_18049e8d0(param_2,param_2 + lVar3,param_2 + lVar3 * 2);
    FUN_18049e8d0(plVar4 + -lVar3,plVar4,plVar4 + lVar3);
    FUN_18049e8d0(param_3 + lVar3 * -2 + -1,param_3 + (-1 - lVar3),param_3 + -1);
    FUN_18049e8d0(param_2 + lVar3,plVar4,param_3 + (-1 - lVar3));
  }
  do {
    local_res10 = plVar7;
    if ((local_res10 <= param_2) ||
       ((plVar7 = local_res10 + -1, *plVar7 != *local_res10 &&
        (iVar2 = FUN_18049bb30(*plVar7), iVar2 < 0)))) break;
  } while ((*local_res10 == *plVar7) || (iVar2 = FUN_18049bb30(*local_res10), -1 < iVar2));
  do {
    plVar4 = plVar4 + 1;
    plVar7 = plVar4;
    local_res18 = plVar4;
    plVar5 = local_res10;
    if ((param_3 <= plVar4) ||
       ((*plVar4 != *local_res10 && (iVar2 = FUN_18049bb30(*plVar4), iVar2 < 0)))) break;
  } while ((*local_res10 == *plVar4) || (iVar2 = FUN_18049bb30(*local_res10), -1 < iVar2));
joined_r0x00018049e286:
  do {
    plVar8 = local_res10;
    plVar6 = plVar5;
    if (plVar4 < param_3) {
      if ((*local_res10 == *plVar4) || (iVar2 = FUN_18049bb30(*local_res10), -1 < iVar2)) {
        if ((*plVar4 != *local_res10) && (iVar2 = FUN_18049bb30(*plVar4), iVar2 < 0))
        goto joined_r0x00018049e31d;
        if (plVar7 != plVar4) {
          lVar3 = *plVar7;
          *plVar7 = (longlong)&DAT_1821dbf98;
          *plVar7 = *plVar4;
          *plVar4 = lVar3;
          plVar7 = local_res18;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar1 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar9 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar1;
            if (bVar9) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
        }
        plVar7 = plVar7 + 1;
        local_res18 = plVar7;
      }
      plVar4 = plVar4 + 1;
      goto joined_r0x00018049e286;
    }
joined_r0x00018049e31d:
    for (; param_2 < plVar5; plVar5 = plVar5 + -1) {
      plVar6 = plVar6 + -1;
      if ((*plVar6 == *plVar8) || (iVar2 = FUN_18049bb30(*plVar6), -1 < iVar2)) {
        if ((*plVar8 != *plVar6) &&
           (iVar2 = FUN_18049bb30(*plVar8), plVar7 = local_res18, iVar2 < 0)) break;
        plVar8 = plVar8 + -1;
        local_res10 = plVar8;
        if (plVar8 != plVar6) {
          lVar3 = *plVar8;
          *plVar8 = (longlong)&DAT_1821dbf98;
          *plVar8 = *plVar6;
          *plVar6 = lVar3;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar1 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar9 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar1;
            if (bVar9) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
        }
      }
      plVar7 = local_res18;
    }
    if (plVar5 == param_2) {
      if (plVar4 == param_3) {
        *param_1 = plVar8;
        param_1[1] = plVar7;
        return;
      }
      plVar6 = plVar7;
      if (plVar7 != plVar4) {
        lVar3 = *plVar8;
        *plVar8 = (longlong)&DAT_1821dbf98;
        *plVar8 = *plVar7;
        *plVar7 = lVar3;
        plVar6 = local_res18;
        plVar8 = local_res10;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar1 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar9 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar1;
          if (bVar9) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
      }
      lVar3 = *plVar8;
      *plVar8 = (longlong)&DAT_1821dbf98;
      *plVar8 = *plVar4;
      *plVar4 = lVar3;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar1 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar9 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar1;
        if (bVar9) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      local_res10 = local_res10 + 1;
      plVar4 = plVar4 + 1;
      plVar7 = plVar6 + 1;
      local_res18 = plVar6 + 1;
    }
    else {
      plVar5 = plVar5 + -1;
      if (plVar4 == param_3) {
        local_res10 = plVar8 + -1;
        if (plVar5 != local_res10) {
          lVar3 = *plVar5;
          *plVar5 = (longlong)&DAT_1821dbf98;
          *plVar5 = *local_res10;
          *local_res10 = lVar3;
          plVar7 = local_res18;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar1 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar9 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar1;
            if (bVar9) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
        }
        lVar3 = *local_res10;
        plVar7 = plVar7 + -1;
        *local_res10 = (longlong)&DAT_1821dbf98;
        *local_res10 = *plVar7;
        *plVar7 = lVar3;
        local_res18 = plVar7;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar1 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar9 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar1;
          if (bVar9) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
      }
      else {
        lVar3 = *plVar4;
        *plVar4 = (longlong)&DAT_1821dbf98;
        *plVar4 = *plVar5;
        *plVar5 = lVar3;
        if ((DAT_1821dbf88 & 0x30000000) == 0) {
          LOCK();
          uVar1 = DAT_1821dbf88 - 1;
          UNLOCK();
          bVar9 = DAT_1821dbf88 == 0;
          DAT_1821dbf88 = uVar1;
          if (bVar9) {
                    /* WARNING: Subroutine does not return */
            free(&DAT_1821dbf88);
          }
        }
        plVar4 = plVar4 + 1;
        plVar7 = local_res18;
      }
    }
  } while( true );
}



############ FUN_ 18049e5b0 size=399 ############

void FUN_18049e5b0(longlong param_1,longlong param_2)

{
  longlong lVar1;
  int *_Memory;
  longlong lVar2;
  undefined8 uVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  
  param_2 = param_2 - param_1;
  lVar6 = param_2 >> 3;
  lVar7 = param_2 >> 4;
  if (0 < lVar7) {
    lVar8 = lVar6 + -1 >> 1;
    do {
      lVar2 = *(longlong *)(param_1 + -8 + lVar7 * 8);
      lVar7 = lVar7 + -1;
      *(undefined1 **)(param_1 + lVar7 * 8) = &DAT_1821dbf98;
      lVar1 = lVar7;
      while (lVar1 < lVar8) {
        lVar5 = lVar1 * 2 + 2;
        if ((*(longlong *)(param_1 + lVar5 * 8) != *(longlong *)(param_1 + -8 + lVar5 * 8)) &&
           (iVar4 = FUN_18049bb30(*(undefined8 *)(param_1 + lVar5 * 8)), iVar4 < 0)) {
          lVar5 = lVar1 * 2 + 1;
        }
        uVar3 = *(undefined8 *)(param_1 + lVar1 * 8);
        *(undefined8 *)(param_1 + lVar1 * 8) = *(undefined8 *)(param_1 + lVar5 * 8);
        *(undefined8 *)(param_1 + lVar5 * 8) = uVar3;
        lVar1 = lVar5;
      }
      if ((lVar1 == lVar8) && (((ulonglong)((uint)lVar6 & 1) ^ param_2 >> 0x3f) == param_2 >> 0x3f))
      {
        uVar3 = *(undefined8 *)(param_1 + lVar1 * 8);
        *(undefined8 *)(param_1 + lVar1 * 8) = *(undefined8 *)(param_1 + -8 + lVar6 * 8);
        lVar1 = lVar6 + -1;
        *(undefined8 *)(param_1 + -8 + lVar6 * 8) = uVar3;
      }
      while (((lVar7 < lVar1 &&
              (lVar5 = lVar1 + -1 >> 1, *(longlong *)(param_1 + lVar5 * 8) != lVar2)) &&
             (iVar4 = FUN_18049bb30(*(undefined8 *)(param_1 + lVar5 * 8),lVar2), iVar4 < 0))) {
        uVar3 = *(undefined8 *)(param_1 + lVar1 * 8);
        *(undefined8 *)(param_1 + lVar1 * 8) = *(undefined8 *)(param_1 + lVar5 * 8);
        *(undefined8 *)(param_1 + lVar5 * 8) = uVar3;
        lVar1 = lVar5;
      }
      lVar5 = *(longlong *)(param_1 + lVar1 * 8);
      *(longlong *)(param_1 + lVar1 * 8) = lVar2;
      _Memory = (int *)(lVar5 + -0x10);
      if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar4 = *_Memory;
        *_Memory = *_Memory + -1;
        UNLOCK();
        if (iVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
    } while (0 < lVar7);
  }
  return;
}



############ FUN_ 18049e8d0 size=294 ############

void FUN_18049e8d0(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong lVar1;
  uint uVar2;
  int iVar3;
  bool bVar4;
  
  if (*param_2 != *param_1) {
    iVar3 = FUN_18049bb30(*param_2);
    if (iVar3 < 0) {
      lVar1 = *param_2;
      *param_2 = (longlong)&DAT_1821dbf98;
      *param_2 = *param_1;
      *param_1 = lVar1;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar2 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar4 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar2;
        if (bVar4) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
    }
  }
  if (*param_3 != *param_2) {
    iVar3 = FUN_18049bb30(*param_3);
    if (iVar3 < 0) {
      lVar1 = *param_3;
      *param_3 = (longlong)&DAT_1821dbf98;
      *param_3 = *param_2;
      *param_2 = lVar1;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar2 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar4 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar2;
        if (bVar4) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      if (*param_2 != *param_1) {
        iVar3 = FUN_18049bb30(*param_2);
        if (iVar3 < 0) {
          lVar1 = *param_2;
          *param_2 = (longlong)&DAT_1821dbf98;
          *param_2 = *param_1;
          *param_1 = lVar1;
          if ((DAT_1821dbf88 & 0x30000000) == 0) {
            LOCK();
            uVar2 = DAT_1821dbf88 - 1;
            UNLOCK();
            bVar4 = DAT_1821dbf88 == 0;
            DAT_1821dbf88 = uVar2;
            if (bVar4) {
                    /* WARNING: Subroutine does not return */
              free(&DAT_1821dbf88);
            }
          }
        }
      }
    }
  }
  return;
}



############ FUN_ 1804cda50 size=531 ############

undefined8 * FUN_1804cda50(float *param_1,undefined8 *param_2,byte *param_3,longlong *param_4)

{
  longlong lVar1;
  longlong lVar2;
  longlong *plVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  float fVar8;
  float fVar9;
  undefined1 local_28 [16];
  
  uVar7 = (((((ulonglong)*param_3 ^ 0xcbf29ce484222325) * 0x100000001b3 ^ (ulonglong)param_3[1]) *
            0x100000001b3 ^ (ulonglong)param_3[2]) * 0x100000001b3 ^ (ulonglong)param_3[3]) *
          0x100000001b3;
  uVar6 = *(ulonglong *)(param_1 + 0xc) & uVar7;
  lVar5 = *(longlong *)(param_1 + 2);
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 6) + uVar6 * 0x10);
  if (lVar5 != lVar1) {
    lVar5 = **(longlong **)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10);
    while (lVar5 != lVar1) {
      lVar5 = *(longlong *)(lVar5 + 8);
      if (*(int *)param_3 == *(int *)(lVar5 + 0x10)) {
        *(longlong *)param_4[1] = *param_4;
        *(longlong *)(*param_4 + 8) = param_4[1];
        *(longlong *)(param_1 + 4) = *(longlong *)(param_1 + 4) + -1;
                    /* WARNING: Subroutine does not return */
        free(param_4);
      }
    }
  }
  lVar1 = *param_4;
  if (lVar5 != lVar1) {
    *(longlong *)param_4[1] = lVar1;
    **(longlong **)(lVar1 + 8) = lVar5;
    **(undefined8 **)(lVar5 + 8) = param_4;
    lVar2 = *(longlong *)(lVar5 + 8);
    *(undefined8 *)(lVar5 + 8) = *(undefined8 *)(lVar1 + 8);
    *(longlong *)(lVar1 + 8) = param_4[1];
    param_4[1] = lVar2;
  }
  lVar1 = *(longlong *)(param_1 + 6);
  lVar2 = *(longlong *)(lVar1 + uVar6 * 0x10);
  if (lVar2 == *(longlong *)(param_1 + 2)) {
    *(longlong **)(lVar1 + uVar6 * 0x10) = param_4;
    *(longlong **)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) = param_4;
  }
  else if (lVar2 == lVar5) {
    *(longlong **)(lVar1 + uVar6 * 0x10) = param_4;
  }
  else {
    plVar3 = (longlong *)**(undefined8 **)(lVar1 + 8 + uVar6 * 0x10);
    *(longlong **)(lVar1 + 8 + uVar6 * 0x10) = plVar3;
    if (plVar3 != param_4) {
      *(undefined8 *)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) =
           *(undefined8 *)(*(longlong *)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) + 8);
    }
  }
  uVar4 = *(ulonglong *)(param_1 + 0xe);
  fVar8 = (float)*(longlong *)(param_1 + 4);
  if (*(longlong *)(param_1 + 4) < 0) {
    fVar8 = fVar8 + DAT_1824c4624;
  }
  fVar9 = (float)(longlong)uVar4;
  if ((longlong)uVar4 < 0) {
    fVar9 = fVar9 + DAT_1824c4624;
  }
  if (*param_1 <= fVar8 / fVar9 && fVar8 / fVar9 != *param_1) {
    if (uVar4 < 0x200) {
      uVar4 = uVar4 * 8;
    }
    else if (uVar4 < 0xfffffffffffffff) {
      uVar4 = uVar4 * 2;
    }
    FUN_18047d9c0(param_1,uVar4,uVar6 * 2,uVar7,param_4,0xfffffffffffffffe);
    plVar3 = *(longlong **)(param_1 + 2);
    if ((longlong *)*plVar3 != plVar3) {
      lVar5 = plVar3[1];
      do {
        lVar1 = **(longlong **)(param_1 + 2);
        FUN_1804cda50(param_1,local_28,lVar1 + 0x10);
      } while (lVar1 != lVar5);
    }
  }
  *param_2 = param_4;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 1804cdc80 size=579 ############

undefined8 * FUN_1804cdc80(float *param_1,undefined8 *param_2,byte *param_3,longlong *param_4)

{
  longlong lVar1;
  longlong lVar2;
  longlong *plVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  float fVar8;
  float fVar9;
  undefined1 local_28 [16];
  
  uVar7 = (((((((((ulonglong)*param_3 ^ 0xcbf29ce484222325) * 0x100000001b3 ^ (ulonglong)param_3[1])
                * 0x100000001b3 ^ (ulonglong)param_3[2]) * 0x100000001b3 ^ (ulonglong)param_3[3]) *
              0x100000001b3 ^ (ulonglong)param_3[4]) * 0x100000001b3 ^ (ulonglong)param_3[5]) *
            0x100000001b3 ^ (ulonglong)param_3[6]) * 0x100000001b3 ^ (ulonglong)param_3[7]) *
          0x100000001b3;
  uVar6 = *(ulonglong *)(param_1 + 0xc) & uVar7;
  lVar5 = *(longlong *)(param_1 + 2);
  lVar1 = *(longlong *)(*(longlong *)(param_1 + 6) + uVar6 * 0x10);
  if (lVar5 != lVar1) {
    lVar5 = **(longlong **)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10);
    while (lVar5 != lVar1) {
      lVar5 = *(longlong *)(lVar5 + 8);
      if (*(longlong *)param_3 == *(longlong *)(lVar5 + 0x10)) {
        *(longlong *)param_4[1] = *param_4;
        *(longlong *)(*param_4 + 8) = param_4[1];
        *(longlong *)(param_1 + 4) = *(longlong *)(param_1 + 4) + -1;
                    /* WARNING: Subroutine does not return */
        free(param_4);
      }
    }
  }
  lVar1 = *param_4;
  if (lVar5 != lVar1) {
    *(longlong *)param_4[1] = lVar1;
    **(longlong **)(lVar1 + 8) = lVar5;
    **(undefined8 **)(lVar5 + 8) = param_4;
    lVar2 = *(longlong *)(lVar5 + 8);
    *(undefined8 *)(lVar5 + 8) = *(undefined8 *)(lVar1 + 8);
    *(longlong *)(lVar1 + 8) = param_4[1];
    param_4[1] = lVar2;
  }
  lVar1 = *(longlong *)(param_1 + 6);
  lVar2 = *(longlong *)(lVar1 + uVar6 * 0x10);
  if (lVar2 == *(longlong *)(param_1 + 2)) {
    *(longlong **)(lVar1 + uVar6 * 0x10) = param_4;
    *(longlong **)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) = param_4;
  }
  else if (lVar2 == lVar5) {
    *(longlong **)(lVar1 + uVar6 * 0x10) = param_4;
  }
  else {
    plVar3 = (longlong *)**(undefined8 **)(lVar1 + 8 + uVar6 * 0x10);
    *(longlong **)(lVar1 + 8 + uVar6 * 0x10) = plVar3;
    if (plVar3 != param_4) {
      *(undefined8 *)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) =
           *(undefined8 *)(*(longlong *)(*(longlong *)(param_1 + 6) + 8 + uVar6 * 0x10) + 8);
    }
  }
  uVar4 = *(ulonglong *)(param_1 + 0xe);
  fVar8 = (float)*(longlong *)(param_1 + 4);
  if (*(longlong *)(param_1 + 4) < 0) {
    fVar8 = fVar8 + DAT_1824c4624;
  }
  fVar9 = (float)(longlong)uVar4;
  if ((longlong)uVar4 < 0) {
    fVar9 = fVar9 + DAT_1824c4624;
  }
  if (*param_1 <= fVar8 / fVar9 && fVar8 / fVar9 != *param_1) {
    if (uVar4 < 0x200) {
      uVar4 = uVar4 * 8;
    }
    else if (uVar4 < 0xfffffffffffffff) {
      uVar4 = uVar4 * 2;
    }
    FUN_18047d9c0(param_1,uVar4,uVar6 * 2,uVar7,param_4,0xfffffffffffffffe);
    plVar3 = *(longlong **)(param_1 + 2);
    if ((longlong *)*plVar3 != plVar3) {
      lVar5 = plVar3[1];
      do {
        lVar1 = **(longlong **)(param_1 + 2);
        FUN_1804cdc80(param_1,local_28,lVar1 + 0x10);
      } while (lVar1 != lVar5);
    }
  }
  *param_2 = param_4;
  *(undefined1 *)(param_2 + 1) = 1;
  return param_2;
}



############ FUN_ 18049ff30 size=43 ############

undefined8 * FUN_18049ff30(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::LowLevelGraphicsContext::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a0070 size=52 ############

void * FUN_1804a0070(void *param_1,ulonglong param_2)

{
  FUN_1812918d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a00b0 size=43 ############

undefined8 * FUN_1804a00b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ImageType::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a0590 size=148 ############

undefined8 * FUN_1804a0590(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ImageCache::Pimpl::vftable;
  param_1[3] = juce::ImageCache::Pimpl::vftable;
  if (DAT_182673a70 == param_1) {
    DAT_182673a70 = (undefined8 *)0x0;
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 6));
  FUN_1804a7940(param_1 + 4);
  FUN_1812a7170(param_1 + 3);
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a14e0 size=43 ############

undefined8 * FUN_1804a14e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GIFImageFormat::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a1510 size=43 ############

undefined8 * FUN_1804a1510(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::JPEGImageFormat::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a1540 size=43 ############

undefined8 * FUN_1804a1540(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::PNGImageFormat::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a1830 size=52 ############

void * FUN_1804a1830(void *param_1,ulonglong param_2)

{
  FUN_181254ca0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a2f30 size=172 ############

undefined8 * FUN_1804a2f30(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  puVar5 = (uint *)(param_1[4] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[3] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar4 = (undefined8 *)param_1[2];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812314e0 size=459 ############

undefined8 *
FUN_1812314e0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4)

{
  byte bVar1;
  undefined1 *puVar2;
  undefined1 *puVar3;
  ulonglong uVar4;
  uint uVar5;
  longlong lVar6;
  uint uVar7;
  int iVar8;
  bool bVar9;
  undefined8 local_res20;
  undefined1 *local_50;
  byte *local_48;
  undefined1 *local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_48 = (byte *)*param_1;
  local_50 = &DAT_1821dbf98;
  local_40 = (undefined1 *)0x0;
  local_38 = *(ulonglong *)(local_48 + -8);
  local_30 = 0;
  local_res20 = param_4;
  FUN_1812342b0(&local_50);
  local_40 = local_50;
  do {
    puVar3 = local_40;
    puVar2 = local_50;
    bVar1 = *local_48;
    local_48 = local_48 + 1;
    uVar7 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar7 = 0x7f;
      uVar5 = 0x40;
      iVar8 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar5 < 9) break;
          uVar7 = uVar7 >> 1;
          iVar8 = iVar8 + 1;
          uVar5 = uVar5 >> 1;
        } while ((bVar1 & uVar5) != 0);
      }
      uVar7 = bVar1 & uVar7;
      for (; (iVar8 = iVar8 + -1, -1 < iVar8 && ((*local_48 & 0xc0) == 0x80));
          local_48 = local_48 + 1) {
        uVar7 = *local_48 & 0x3f | uVar7 << 6;
      }
    }
    iVar8 = FUN_18049bc80(param_3,uVar7);
    if (-1 < iVar8) {
      uVar7 = FUN_180493050(&local_res20,iVar8);
    }
    lVar6 = 1;
    if (((0x7f < uVar7) && (lVar6 = 2, 0x7ff < uVar7)) && (lVar6 = 3, 0xffff < uVar7)) {
      lVar6 = 4;
    }
    local_30 = local_30 + lVar6;
    if (local_38 < local_30) {
      uVar4 = 8;
      if (8 < local_38 >> 4) {
        uVar4 = local_38 >> 4;
      }
      local_38 = local_38 + uVar4;
      FUN_1812342b0(&local_50);
      local_40 = local_50 + ((int)puVar3 - (int)puVar2);
    }
    FUN_180493180(&local_40,uVar7);
    if (uVar7 == 0) {
      *param_2 = local_50;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar7 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar9 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar7;
        if (bVar9) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      return param_2;
    }
  } while( true );
}



############ FUN_ 1804a40b0 size=43 ############

undefined8 * FUN_1804a40b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::DropShadowEffect::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a40e0 size=43 ############

undefined8 * FUN_1804a40e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GlowEffect::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a50c0 size=133 ############

void * FUN_1804a50c0(void *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  if (*(longlong **)((longlong)param_1 + 0x60) != (longlong *)0x0) {
    (**(code **)(**(longlong **)((longlong)param_1 + 0x60) + 0x10))();
  }
  do {
    LOCK();
    uVar1 = DAT_18267aa78 & 1;
    DAT_18267aa78 = DAT_18267aa78 | 1;
    UNLOCK();
  } while (uVar1 != 0);
  DAT_18267aa88 = DAT_18267aa88 + -1;
  if (DAT_18267aa88 == 0) {
    FUN_1804af690(&DAT_18267aa80,0,param_3,param_4,uVar2);
  }
  LOCK();
  DAT_18267aa78 = 0;
  UNLOCK();
  FUN_181254ca0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a5690 size=459 ############

longlong * FUN_1804a5690(longlong param_1,longlong *param_2,longlong *param_3,undefined4 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  longlong lVar4;
  undefined8 uVar5;
  uint *puVar6;
  int iVar7;
  longlong *local_res8;
  longlong *local_res10;
  longlong *local_60;
  longlong local_58;
  longlong local_50 [5];
  
  local_50[1] = 0xfffffffffffffffe;
  iVar7 = 0;
  lVar2 = *(longlong *)(param_1 + 0x10);
  local_res10 = param_2;
  if (0 < *(int *)(lVar2 + 0x24)) {
    do {
      lVar2 = *(longlong *)(lVar2 + 0x18) + (longlong)iVar7 * 0x18;
      uVar3 = FUN_181252280(lVar2 + 8);
      lVar4 = __RTDynamicCast(uVar3,0,&juce::Typeface::RTTI_Type_Descriptor,
                              &juce::WindowsDirectWriteTypeface::RTTI_Type_Descriptor,0);
      if ((lVar4 != 0) && (*(longlong *)(lVar4 + 0x60) == *param_3)) {
        lVar2 = *(longlong *)(lVar2 + 8);
        *param_2 = lVar2;
        if (lVar2 != 0) {
          LOCK();
          *(int *)(lVar2 + 8) = *(int *)(lVar2 + 8) + 1;
          UNLOCK();
        }
        FUN_1812520a0(param_2,param_4);
        return param_2;
      }
      iVar7 = iVar7 + 1;
      lVar2 = *(longlong *)(param_1 + 0x10);
    } while (iVar7 < *(int *)(lVar2 + 0x24));
  }
  local_res8 = (longlong *)0x0;
  (**(code **)(**(longlong **)(param_1 + 0x18) + 0x30))
            (*(longlong **)(param_1 + 0x18),*param_3,&local_res8);
  local_60 = (longlong *)0x0;
  (**(code **)(*local_res8 + 0x18))(local_res8,&local_60);
  uVar3 = FUN_18124c790(local_50,local_res8);
  uVar5 = FUN_18124c7f0(&local_58,local_60);
  FUN_181252a20(param_2,uVar5,uVar3,param_4);
  puVar6 = (uint *)(local_58 + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(local_50[0] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  if (local_60 != (longlong *)0x0) {
    (**(code **)(*local_60 + 0x10))();
  }
  if (local_res8 != (longlong *)0x0) {
    (**(code **)(*local_res8 + 0x10))();
  }
  return param_2;
}



############ FUN_ 1804a5860 size=43 ############

undefined8 * FUN_1804a5860(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDWriteTextRenderer>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804a5ae0 size=399 ############

void FUN_1804a5ae0(undefined8 *param_1,PVOID param_2,undefined8 param_3)

{
  uint uVar1;
  HDC pHVar2;
  HANDLE pvVar3;
  undefined8 *puVar4;
  uint *_Memory;
  bool bVar5;
  DWORD local_res10 [2];
  undefined1 *local_res18;
  undefined1 *local_res20;
  longlong local_78 [3];
  undefined **local_60;
  PVOID local_58;
  undefined8 local_50;
  undefined8 local_48;
  void *local_40;
  undefined8 local_38;
  
  local_78[1] = 0xfffffffffffffffe;
  local_res18 = &DAT_1821dbf98;
  local_res20 = &DAT_1821dbf98;
  FUN_181254d40(param_1,&local_res20);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar5 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar5) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar5 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar5) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = juce::WindowsTypeface::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  pHVar2 = CreateCompatibleDC((HDC)0x0);
  param_1[0xd] = pHVar2;
  param_1[0x16] = 0;
  *(undefined4 *)(param_1 + 0x17) = 0x3f800000;
  *(undefined4 *)((longlong)param_1 + 0xbc) = 0x3f800000;
  *(undefined4 *)(param_1 + 0x18) = 0xffffffff;
  *(undefined4 *)((longlong)param_1 + 0xc4) = 0;
  FUN_1804a7550(param_1 + 0x19);
  local_res10[0] = 0;
  pvVar3 = AddFontMemResourceEx(param_2,(DWORD)param_3,(PVOID)0x0,local_res10);
  param_1[0x16] = pvVar3;
  local_60 = juce::MemoryInputStream::vftable;
  local_48 = 0;
  local_40 = (void *)0x0;
  local_38 = 0;
  local_58 = param_2;
  local_50 = param_3;
  puVar4 = (undefined8 *)FUN_18124b350(local_78,&local_60);
  local_78[2] = param_1[2];
  param_1[2] = *puVar4;
  *puVar4 = local_78[2];
  _Memory = (uint *)(local_78[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1804a6370(param_1);
                    /* WARNING: Subroutine does not return */
  free(local_40);
}



############ FUN_ 18124b350 size=364 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18124b350(undefined8 *param_1,longlong param_2)

{
  uint *_Memory;
  uint uVar1;
  ulonglong uVar2;
  undefined8 *puVar3;
  ushort uVar4;
  int iVar5;
  ulonglong uVar6;
  size_t sVar7;
  int iVar8;
  undefined1 auStack_78 [32];
  undefined8 *local_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined4 local_38;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  uVar2 = *(ulonglong *)(param_2 + 0x18);
  local_40 = 0;
  local_38 = 0;
  local_58 = param_1;
  if (uVar2 < *(ulonglong *)(param_2 + 0x10)) {
    uVar6 = *(ulonglong *)(param_2 + 0x10) - uVar2;
    sVar7 = 0xc;
    if (uVar6 < 0xc) {
      sVar7 = uVar6;
    }
    if (sVar7 != 0) {
      memcpy(&local_40,(void *)(*(longlong *)(param_2 + 8) + uVar2),sVar7);
      *(ulonglong *)(param_2 + 0x18) = uVar2 + sVar7;
    }
  }
  iVar8 = 0;
  uVar4 = local_40._4_2_ << 8 | local_40._4_2_ >> 8;
  if (uVar4 != 0) {
    do {
      uVar2 = *(ulonglong *)(param_2 + 0x18);
      local_50 = 0;
      local_48 = 0;
      if (uVar2 < *(ulonglong *)(param_2 + 0x10)) {
        uVar6 = *(ulonglong *)(param_2 + 0x10) - uVar2;
        sVar7 = 0x10;
        if (uVar6 < 0x10) {
          sVar7 = uVar6;
        }
        if (sVar7 != 0) {
          memcpy(&local_50,(void *)(*(longlong *)(param_2 + 8) + uVar2),sVar7);
          *(ulonglong *)(param_2 + 0x18) = uVar2 + sVar7;
        }
      }
      FUN_18049c670(&local_58,&local_50,4);
      puVar3 = local_58;
      iVar5 = FUN_18049bb30(local_58,&DAT_1821df3f4);
      _Memory = (uint *)(puVar3 + -2);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      if (iVar5 == 0) {
        FUN_18124b4e0(param_1,param_2,
                      (uint)local_48 >> 0x18 | ((uint)local_48 & 0xff0000) >> 8 |
                      ((uint)local_48 & 0xff00) << 8 | (uint)local_48 << 0x18);
      }
      iVar8 = iVar8 + 1;
    } while (iVar8 < (int)(uint)uVar4);
  }
  *param_1 = &DAT_1821dbf98;
}



############ FUN_ 18124b4e0 size=456 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18124b4e0(char *param_1,longlong param_2,ulonglong param_3)

{
  int *_Memory;
  int iVar1;
  ulonglong uVar2;
  ushort uVar3;
  ulonglong uVar4;
  uint *_Memory_00;
  uint uVar5;
  ulonglong uVar6;
  size_t sVar7;
  undefined1 auStack_98 [32];
  ulonglong local_78;
  undefined4 local_68;
  ushort local_64;
  char *local_60;
  undefined8 local_58;
  undefined4 local_50;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_98;
  uVar6 = 0;
  uVar2 = *(ulonglong *)(param_2 + 0x10);
  uVar4 = uVar6;
  if ((-1 < (longlong)param_3) && (uVar4 = param_3, (longlong)uVar2 < (longlong)param_3)) {
    uVar4 = uVar2;
  }
  *(ulonglong *)(param_2 + 0x18) = uVar4;
  local_68 = 0;
  local_64 = 0;
  local_60 = param_1;
  if (uVar4 < uVar2) {
    sVar7 = 6;
    if (uVar2 - uVar4 < 6) {
      sVar7 = uVar2 - uVar4;
    }
    if (sVar7 != 0) {
      memcpy(&local_68,(void *)(*(longlong *)(param_2 + 8) + uVar4),sVar7);
      *(size_t *)(param_2 + 0x18) = sVar7 + uVar4;
    }
  }
  uVar3 = local_68._2_2_ << 8 | local_68._2_2_ >> 8;
  if (uVar3 != 0) {
    do {
      uVar2 = *(ulonglong *)(param_2 + 0x18);
      local_58 = 0;
      local_50 = 0;
      if (uVar2 < *(ulonglong *)(param_2 + 0x10)) {
        uVar4 = *(ulonglong *)(param_2 + 0x10) - uVar2;
        sVar7 = 0xc;
        if (uVar4 < 0xc) {
          sVar7 = uVar4;
        }
        if (sVar7 != 0) {
          memcpy(&local_58,(void *)(*(longlong *)(param_2 + 8) + uVar2),sVar7);
          *(ulonglong *)(param_2 + 0x18) = uVar2 + sVar7;
        }
      }
      if ((ushort)(local_58._6_2_ << 8 | local_58._6_2_ >> 8) == 4) {
        local_78 = (ulonglong)(ushort)(local_64 << 8 | local_64 >> 8);
        FUN_18124b6c0(&local_60,param_2,&local_58,param_3);
        if (*local_60 != '\0') {
          *(char **)param_1 = local_60;
          if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
            LOCK();
            *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
            UNLOCK();
          }
          _Memory_00 = (uint *)(local_60 + -0x10);
          if ((*_Memory_00 & 0x30000000) != 0) {
          }
          LOCK();
          uVar5 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar5 != 0) {
          }
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
        _Memory = (int *)(local_60 + -0x10);
        if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
          LOCK();
          iVar1 = *_Memory;
          *_Memory = *_Memory + -1;
          UNLOCK();
          if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
      }
      uVar5 = (int)uVar6 + 1;
      uVar6 = (ulonglong)uVar5;
    } while ((int)uVar5 < (int)(uint)uVar3);
  }
  *(undefined1 **)param_1 = &DAT_1821dbf98;
}



############ FUN_ 1804a7110 size=135 ############

undefined8 * FUN_1804a7110(undefined8 *param_1,uint param_2)

{
  *param_1 = juce::WindowsTypeface::vftable;
  SelectObject((HDC)param_1[0xd],(HGDIOBJ)param_1[0xc]);
  DeleteDC((HDC)param_1[0xd]);
  if ((HGDIOBJ)param_1[0xb] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1[0xb]);
  }
  if ((HANDLE)param_1[0x16] != (HANDLE)0x0) {
    RemoveFontMemResourceEx((HANDLE)param_1[0x16]);
  }
  FUN_1804a71c0(param_1 + 0x19);
  FUN_181254ca0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ab890 size=43 ############

undefined8 * FUN_1804ab890(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDWriteTextRenderer>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ab8c0 size=43 ############

undefined8 * FUN_1804ab8c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<ID2D1SimplifiedGeometrySink>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804af600 size=120 ############

undefined8 * FUN_1804af600(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  if ((undefined8 *)param_1[3] != (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)param_1[3]);
  }
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cf650 size=97 ############

undefined8 * FUN_1804cf650(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::DeviceChangeDetector::vftable;
  DestroyWindow((HWND)param_1[4]);
  UnregisterClassW((LPCWSTR)(ulonglong)*(ushort *)(param_1 + 3),(HINSTANCE)0x0);
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cf6c0 size=88 ############

undefined8 * FUN_1804cf6c0(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  DAT_1826736f8 = 0;
  *param_1 = juce::JUCEApplicationBase::vftable;
  puVar1 = (undefined8 *)param_1[2];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cf720 size=372 ############

ulonglong FUN_1804cf720(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  ulonglong uVar2;
  undefined8 uVar3;
  longlong *plVar4;
  uint *puVar5;
  uint *_Memory;
  longlong local_res8;
  undefined1 local_res10 [8];
  longlong *local_res18;
  longlong local_res20;
  
  uVar2 = FUN_1812459c0(param_1 + 8,0,param_3,param_4,0xfffffffffffffffe);
  plVar4 = DAT_1826736f8;
  if (((char)uVar2 == '\0') && (DAT_1826736f8 != (longlong *)0x0)) {
    uVar3 = FUN_1812a6ed0(&local_res20);
    plVar4 = (longlong *)(**(code **)(*plVar4 + 8))(plVar4,local_res10);
    local_res18 = plVar4;
    FUN_181232e20(plVar4,&DAT_1824968a4,&DAT_1824968a5);
    local_res8 = *plVar4;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(*plVar4 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    local_res18 = &local_res8;
    local_res18 = (longlong *)FUN_181232d30(&local_res8,uVar3);
    local_res18 = (longlong *)*local_res18;
    puVar5 = (uint *)(local_res18 + -2);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      *puVar5 = *puVar5 + 1;
      UNLOCK();
    }
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if (DAT_182673ad8 != 0) {
      FUN_1804d10f0(_Memory,&local_res18);
    }
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_res20 + -0x10);
    uVar1 = *puVar5;
    if ((uVar1 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      uVar1 = uVar1 - 1;
      if (uVar1 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    return CONCAT71((uint7)(uint3)(uVar1 >> 8),1);
  }
  return uVar2 & 0xffffffffffffff00;
}



############ FUN_ 1804cf8a0 size=438 ############

void FUN_1804cf8a0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  longlong *plVar3;
  char cVar4;
  byte *pbVar5;
  undefined8 uVar6;
  uint *_Memory;
  uint *puVar7;
  int iVar8;
  byte *local_res18;
  byte *local_res20;
  longlong local_30 [3];
  
  plVar3 = DAT_1826736f8;
  local_30[1] = 0xfffffffffffffffe;
  if (DAT_1826736f8 != (longlong *)0x0) {
    (**(code **)(*DAT_1826736f8 + 8))(DAT_1826736f8,&local_res20);
    local_res18 = local_res20;
    if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_res18,&DAT_1824968a4,&DAT_1824968a5,param_4,&local_res18);
    puVar7 = (uint *)(local_res18 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      *puVar7 = *puVar7 + 1;
      UNLOCK();
    }
    _Memory = (uint *)(local_res18 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    cVar4 = FUN_18124a6c0(param_2,local_res18);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    if (cVar4 != '\0') {
      iVar8 = 0;
      pbVar5 = local_res20;
      while( true ) {
        while( true ) {
          bVar2 = *pbVar5;
          pbVar5 = pbVar5 + 1;
          if (-1 < (char)bVar2) break;
          if ((*pbVar5 & 0xc0) != 0x80) goto LAB_1804cf9d7;
          do {
            pbVar5 = pbVar5 + 1;
          } while ((*pbVar5 & 0xc0) == 0x80);
          iVar8 = iVar8 + 1;
        }
        if (bVar2 == 0) break;
LAB_1804cf9d7:
        iVar8 = iVar8 + 1;
      }
      uVar6 = FUN_1812491d0(param_2,local_30,iVar8 + 1);
      (**(code **)(*plVar3 + 0x30))(plVar3,uVar6);
      puVar7 = (uint *)(local_30[0] + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
    puVar7 = (uint *)(local_res20 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  return;
}



############ FUN_ 1804cfa60 size=56 ############

/* Library Function - Single Match
    public: void * __ptr64 __cdecl MRECmpImpl::`scalar deleting destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void * __thiscall MRECmpImpl::_scalar_deleting_destructor_(MRECmpImpl *this,uint param_1)

{
  FUN_181245ad0(this + 8);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 181245ad0 size=131 ############

void FUN_181245ad0(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[7] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  param_1 = (undefined8 *)*param_1;
  if (param_1 != (undefined8 *)0x0) {
    if ((HANDLE)*param_1 != (HANDLE)0x0) {
      ReleaseMutex((HANDLE)*param_1);
      CloseHandle((HANDLE)*param_1);
      *param_1 = 0;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 1804cfaa0 size=52 ############

void * FUN_1804cfaa0(void *param_1,ulonglong param_2)

{
  FUN_1812a7170();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfae0 size=102 ############

undefined8 * FUN_1804cfae0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::Message::vftable;
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfb50 size=109 ############

undefined8 * FUN_1804cfb50(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::MessageListener::vftable;
  if (param_1[1] != 0) {
    *(undefined8 *)(param_1[1] + 0x10) = 0;
  }
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfc10 size=77 ############

undefined8 * FUN_1804cfc10(undefined8 *param_1,ulonglong param_2)

{
  _Cnd_destroy_in_situ(param_1 + 0xd);
  _Mtx_destroy_in_situ(param_1 + 3);
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfc80 size=101 ############

undefined8 * FUN_1804cfc80(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)param_1[9];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 2);
    param_1[9] = 0;
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfd60 size=90 ############

undefined8 * FUN_1804cfd60(undefined8 *param_1,ulonglong param_2)

{
  _Cnd_destroy_in_situ(param_1 + 0x14);
  _Mtx_destroy_in_situ(param_1 + 10);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfdc0 size=140 ############

undefined8 * FUN_1804cfdc0(undefined8 *param_1,ulonglong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::MessageManagerLock::vftable;
  FUN_1812a6010(param_1 + 1);
  FUN_1812a6010(param_1 + 1);
  _Cnd_destroy_in_situ(param_1 + 0xd);
  _Mtx_destroy_in_situ(param_1 + 3);
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804cfed0 size=138 ############

undefined8 * FUN_1804cfed0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[3] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar4 = (undefined8 *)param_1[2];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0010 size=43 ############

undefined8 * FUN_1804d0010(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0040 size=102 ############

undefined8 * FUN_1804d0040(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[1] + 0x18) = 0;
  UNLOCK();
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d00b0 size=52 ############

void * FUN_1804d00b0(void *param_1,ulonglong param_2)

{
  FUN_1812a5870();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d00f0 size=102 ############

undefined8 * FUN_1804d00f0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[1] + 0x18) = 0;
  UNLOCK();
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0960 size=369 ############

undefined8 * FUN_1804d0960(undefined8 *param_1,ulonglong param_2)

{
  int *piVar1;
  int iVar2;
  void *pvVar3;
  undefined8 *puVar4;
  void *_Memory;
  
  *param_1 = juce::Timer::TimerThread::vftable;
  param_1[0x40] = juce::Timer::TimerThread::vftable;
  param_1[0x41] = juce::Timer::TimerThread::vftable;
  FUN_18122b1d0();
  FUN_181215c10(param_1 + 0x46);
  FUN_18122afa0(param_1,4000);
  if (DAT_1826736e0 == param_1) {
    DAT_1826736e0 = (undefined8 *)0x0;
  }
  _Cnd_destroy_in_situ(param_1 + 0x51);
  _Mtx_destroy_in_situ(param_1 + 0x47);
  pvVar3 = (void *)param_1[0x43];
  if (pvVar3 != (void *)0x0) {
    _Memory = pvVar3;
    if ((0xfff < (param_1[0x45] - (longlong)pvVar3 & 0xfffffffffffffff0U)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  param_1[0x41] = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[0x42] + 0x18) = 0;
  UNLOCK();
  puVar4 = (undefined8 *)param_1[0x42];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  FUN_1812a7170(param_1 + 0x40);
  FUN_18122b690(param_1);
  if ((param_2 & 1) == 0) {
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 1804d0af0 size=62 ############

undefined8 * FUN_1804d0af0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0b30 size=52 ############

void * FUN_1804d0b30(void *param_1,ulonglong param_2)

{
  FUN_1812a55e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0bf0 size=92 ############

undefined8 * FUN_1804d0bf0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0d20 size=162 ############

undefined8 *
FUN_1804d0d20(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = juce::InterprocessConnectionServer::vftable;
  FUN_18122b1d0();
  if (param_1[0x40] != 0) {
    FUN_1812388c0();
  }
  FUN_18122afa0(param_1,4000,param_3,param_4,uVar2);
  lVar1 = param_1[0x40];
  param_1[0x40] = 0;
  if (lVar1 != 0) {
    FUN_1804d1d40();
  }
  if (param_1[0x40] != 0) {
    FUN_1804d1d40();
  }
  FUN_18122b690(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0dd0 size=140 ############

undefined8 *
FUN_1804d0dd0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  longlong *_Memory;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = juce::ChildProcessMaster::vftable;
  FUN_1812a4850();
  puVar1 = (undefined8 *)param_1[2];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1,param_3,param_4,uVar2);
  }
  _Memory = (longlong *)param_1[1];
  if (_Memory != (longlong *)0x0) {
    if (*_Memory != 0) {
      FUN_18049b510();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812a4850 size=101 ############

void FUN_1812a4850(longlong param_1)

{
  longlong *_Memory;
  
  if (*(longlong *)(param_1 + 0x10) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)0x0);
  }
  _Memory = *(longlong **)(param_1 + 8);
  *(undefined8 *)(param_1 + 8) = 0;
  if (_Memory != (longlong *)0x0) {
    if (*_Memory != 0) {
      FUN_18049b510();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 1804d0e60 size=77 ############

undefined8 * FUN_1804d0e60(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::ChildProcessSlave::vftable;
  puVar1 = (undefined8 *)param_1[1];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d0eb0 size=137 ############

undefined8 * FUN_1804d0eb0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::NetworkServiceDiscovery::Advertiser::vftable;
  FUN_18122afa0(param_1,2000,param_3,param_4,0xfffffffffffffffe);
  FUN_181238650(param_1 + 0x46);
  FUN_1812386d0(param_1 + 0x46);
  FUN_1812472e0(param_1 + 0x40);
  FUN_18122b690(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812386d0 size=130 ############

void FUN_1812386d0(longlong param_1)

{
  uint uVar1;
  uint *puVar2;
  
  if (*(longlong *)(param_1 + 0x20) != 0) {
    freeaddrinfo();
  }
  FUN_181238650(param_1);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x28));
  puVar2 = (uint *)(*(longlong *)(param_1 + 0x10) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*(longlong *)(param_1 + 8) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 1804d0f40 size=326 ############

undefined8 *
FUN_1804d0f40(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  uint *_Memory;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  *param_1 = juce::NetworkServiceDiscovery::AvailableServiceList::vftable;
  param_1[0x40] = juce::NetworkServiceDiscovery::AvailableServiceList::vftable;
  FUN_181238650(param_1 + 0x4a);
  FUN_18122afa0(param_1,2000,param_3,param_4,uVar6);
  FUN_1804d1bd0(param_1 + 0x5c);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x56));
  _Memory = (uint *)(param_1[0x55] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1812386d0(param_1 + 0x4a);
  plVar4 = (longlong *)param_1[0x49];
  if (plVar4 != (longlong *)0x0) {
    (**(code **)(*plVar4 + 0x20))(plVar4,plVar4 != param_1 + 0x42);
    param_1[0x49] = 0;
  }
  param_1[0x40] = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[0x41] + 0x18) = 0;
  UNLOCK();
  puVar5 = (undefined8 *)param_1[0x41];
  if (puVar5 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar5 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar5)(puVar5,1);
    }
  }
  FUN_18122b690(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d1bd0 size=164 ############

void FUN_1804d1bd0(longlong *param_1)

{
  longlong lVar1;
  void *pvVar2;
  longlong lVar3;
  void *_Memory;
  
  lVar3 = *param_1;
  if (lVar3 == 0) {
    return;
  }
  lVar1 = param_1[1];
  for (; lVar3 != lVar1; lVar3 = lVar3 + 0x30) {
    FUN_1804d1090(lVar3);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x30) * 0x30)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1804d1640 size=314 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1804d1640(HWND param_1,longlong *param_2)

{
  int iVar1;
  void *pvVar2;
  uint *_Memory;
  uint uVar3;
  undefined1 auStack_c8 [32];
  longlong local_a8;
  HWND local_a0;
  WCHAR local_98 [64];
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_c8;
  if (param_1 != DAT_1826736b0) {
    local_a0 = param_1;
    memset(local_98,0,0x80);
    GetWindowTextW(param_1,local_98,0x3f);
    FUN_18049c800(&local_a8,local_98);
    iVar1 = FUN_1812334e0(&local_a8);
    _Memory = (uint *)(local_a8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    if (iVar1 == 0) {
      iVar1 = *(int *)((longlong)param_2 + 0xc) + 1;
      if ((int)*(uint *)(param_2 + 1) < iVar1) {
        uVar3 = *(int *)((longlong)param_2 + 0xc) + 9 + iVar1 / 2 & 0xfffffff8;
        if (*(uint *)(param_2 + 1) != uVar3) {
          pvVar2 = (void *)*param_2;
          if ((int)uVar3 < 1) {
                    /* WARNING: Subroutine does not return */
            free(pvVar2);
          }
          if (pvVar2 == (void *)0x0) {
            pvVar2 = malloc((longlong)(int)uVar3 * 8);
            *param_2 = (longlong)pvVar2;
          }
          else {
            pvVar2 = realloc(pvVar2,(longlong)(int)uVar3 * 8);
            *param_2 = (longlong)pvVar2;
          }
        }
        *(uint *)(param_2 + 1) = uVar3;
      }
      iVar1 = *(int *)((longlong)param_2 + 0xc);
      *(int *)((longlong)param_2 + 0xc) = iVar1 + 1;
      *(HWND *)(*param_2 + (longlong)iVar1 * 8) = local_a0;
    }
  }
}



############ FUN_ 1804d18e0 size=96 ############

undefined8 * FUN_1804d18e0(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[2] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d1940 size=77 ############

undefined8 * FUN_1804d1940(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::MountedVolumeListChangeDetector::vftable;
  puVar1 = (undefined8 *)param_1[1];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d2160 size=480 ############

longlong FUN_1804d2160(longlong *param_1,longlong param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  void *_Memory;
  longlong lVar9;
  
  lVar6 = *param_1;
  lVar7 = (param_2 - lVar6) / 6 + (param_2 - lVar6 >> 0x3f);
  lVar8 = (param_1[1] - lVar6) / 0x30;
  if (lVar8 == 0x555555555555555) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar8 + 1;
  uVar3 = (param_1[2] - lVar6) / 0x30;
  uVar4 = uVar1;
  if ((uVar3 <= 0x555555555555555 - (uVar3 >> 1)) && (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  lVar6 = uVar4 * 0x30;
  if (0x555555555555555 < uVar4) {
    lVar6 = -1;
  }
  lVar5 = FUN_180480500(lVar6);
  lVar9 = ((lVar7 >> 3) - (lVar7 >> 0x3f)) * 0x30;
  FUN_1804d2100();
  lVar8 = param_1[1];
  lVar7 = *param_1;
  lVar6 = lVar5;
  if (param_2 != lVar8) {
    FUN_1804d26f0(*param_1,param_2,lVar5);
    lVar8 = param_1[1];
    lVar6 = lVar9 + lVar5 + 0x30;
    lVar7 = param_2;
  }
  FUN_1804d26f0(lVar7,lVar8,lVar6);
  lVar6 = *param_1;
  if (lVar6 != 0) {
    lVar8 = param_1[1];
    for (; lVar6 != lVar8; lVar6 = lVar6 + 0x30) {
      FUN_1804d1090(lVar6);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x30) * 0x30)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar5;
  param_1[1] = uVar1 * 0x30 + lVar5;
  param_1[2] = uVar4 * 0x30 + lVar5;
  return *param_1 + lVar9;
}



############ FUN_ 1804d2350 size=917 ############

void FUN_1804d2350(longlong *param_1,longlong param_2,longlong param_3,undefined1 param_4)

{
  longlong *plVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint *puVar5;
  longlong lVar6;
  longlong lVar7;
  longlong *plVar8;
  longlong local_a8;
  longlong *local_a0;
  longlong local_98;
  longlong local_90;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined1 local_78;
  undefined4 local_74;
  longlong local_70;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  longlong lStack_50;
  undefined1 local_48;
  undefined4 local_44;
  longlong local_40;
  
  lVar6 = param_2 - (longlong)param_1;
  do {
    lVar6 = lVar6 / 0x30;
    if (lVar6 < 0x21) {
LAB_1804d245d:
      if (1 < lVar6) {
        FUN_1804d3160(param_1,param_2);
      }
      return;
    }
    if (param_3 < 1) {
      if (0x20 < lVar6) {
        lVar6 = (param_2 - (longlong)param_1) / 6 + (param_2 - (longlong)param_1 >> 0x3f);
        lVar6 = (lVar6 >> 3) - (lVar6 >> 0x3f);
        lVar7 = lVar6 >> 1;
        if (0 < lVar7) {
          plVar8 = param_1 + lVar7 * 6 + 1;
          do {
            local_98 = plVar8[-7];
            plVar1 = plVar8 + -6;
            plVar8[-7] = (longlong)&DAT_1821dbf98;
            lVar7 = lVar7 + -1;
            local_90 = *plVar1;
            *plVar1 = (longlong)&DAT_1821dbf98;
            local_88 = (undefined4)plVar8[-5];
            uStack_84 = *(undefined4 *)((longlong)plVar8 + -0x24);
            uStack_80 = (undefined4)plVar8[-4];
            uStack_7c = *(undefined4 *)((longlong)plVar8 + -0x1c);
            local_78 = (undefined1)plVar8[-3];
            local_74 = *(undefined4 *)((longlong)plVar8 + -0x14);
            local_70 = plVar8[-2];
            FUN_1804d3460(param_1,lVar7,lVar6,&local_98,param_4);
            puVar5 = (uint *)(local_90 + -0x10);
            if ((*puVar5 & 0x30000000) == 0) {
              LOCK();
              uVar2 = *puVar5;
              *puVar5 = *puVar5 - 1;
              UNLOCK();
              if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar5);
              }
            }
            puVar5 = (uint *)(local_98 + -0x10);
            if ((*puVar5 & 0x30000000) == 0) {
              LOCK();
              uVar2 = *puVar5;
              *puVar5 = *puVar5 - 1;
              UNLOCK();
              if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar5);
              }
            }
            plVar8 = plVar1;
          } while (0 < lVar7);
        }
        if (lVar6 < 2) {
          return;
        }
        plVar8 = (longlong *)(param_2 + -0x28);
        do {
          if (1 < lVar6) {
            local_68 = plVar8[-1];
            plVar8[-1] = (longlong)&DAT_1821dbf98;
            local_60 = *plVar8;
            *plVar8 = (longlong)&DAT_1821dbf98;
            local_58 = plVar8[1];
            lStack_50 = plVar8[2];
            local_48 = (undefined1)plVar8[3];
            local_44 = *(undefined4 *)((longlong)plVar8 + 0x1c);
            local_40 = plVar8[4];
            lVar6 = plVar8[-1];
            plVar8[-1] = *param_1;
            *param_1 = lVar6;
            lVar6 = *plVar8;
            *plVar8 = param_1[1];
            param_1[1] = lVar6;
            uVar3 = *(undefined4 *)((longlong)param_1 + 0x14);
            lVar6 = param_1[3];
            uVar4 = *(undefined4 *)((longlong)param_1 + 0x1c);
            *(int *)(plVar8 + 1) = (int)param_1[2];
            *(undefined4 *)((longlong)plVar8 + 0xc) = uVar3;
            *(int *)(plVar8 + 2) = (int)lVar6;
            *(undefined4 *)((longlong)plVar8 + 0x14) = uVar4;
            *(char *)(plVar8 + 3) = (char)param_1[4];
            *(undefined4 *)((longlong)plVar8 + 0x1c) = *(undefined4 *)((longlong)param_1 + 0x24);
            plVar8[4] = param_1[5];
            FUN_1804d3460(param_1,0,((-8 - (longlong)param_1) + (longlong)plVar8) / 0x30,&local_68,
                          param_4);
            puVar5 = (uint *)(local_60 + -0x10);
            if ((*puVar5 & 0x30000000) == 0) {
              LOCK();
              uVar2 = *puVar5;
              *puVar5 = *puVar5 - 1;
              UNLOCK();
              if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar5);
              }
            }
            puVar5 = (uint *)(local_68 + -0x10);
            if ((*puVar5 & 0x30000000) == 0) {
              LOCK();
              uVar2 = *puVar5;
              *puVar5 = *puVar5 - 1;
              UNLOCK();
              if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar5);
              }
            }
          }
          plVar8 = plVar8 + -6;
          lVar6 = ((0x28 - (longlong)param_1) + (longlong)plVar8) / 0x30;
        } while (1 < lVar6);
        return;
      }
      goto LAB_1804d245d;
    }
    FUN_1804d2770(&local_a8,param_1,param_2,param_4);
    plVar8 = local_a0;
    lVar7 = local_a8;
    param_3 = (param_3 >> 1) + (param_3 >> 2);
    lVar6 = (param_2 - (longlong)local_a0) / 6 + (param_2 - (longlong)local_a0 >> 0x3f);
    if ((local_a8 - (longlong)param_1) / 0x30 < (lVar6 >> 3) - (lVar6 >> 0x3f)) {
      FUN_1804d2350(param_1,local_a8,param_3,param_4);
      param_1 = plVar8;
      lVar7 = param_2;
    }
    else {
      FUN_1804d2350(local_a0,param_2,param_3,param_4);
    }
    lVar6 = lVar7 - (longlong)param_1;
    param_2 = lVar7;
  } while( true );
}



############ FUN_ 1804d4cc0 size=43 ############

undefined8 * FUN_1804d4cc0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::MPESynthesiserVoice::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d4f10 size=33 ############

void * FUN_1804d4f10(void *param_1,ulonglong param_2)

{
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d4ff0 size=129 ############

undefined8 * FUN_1804d4ff0(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::IIRFilterAudioSource::vftable;
  FUN_1804d5870(param_1 + 3);
  if (*(char *)(param_1 + 2) == '\0') {
    param_1[1] = 0;
  }
  else {
    puVar1 = (undefined8 *)param_1[1];
    param_1[1] = 0;
    if (puVar1 == (undefined8 *)0x0) goto LAB_1804d5050;
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = (undefined8 *)param_1[1];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
LAB_1804d5050:
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d5870 size=178 ############

void FUN_1804d5870(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x0001804d591b. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1804d51c0 size=139 ############

undefined8 * FUN_1804d51c0(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::ReverbAudioSource::vftable;
  FUN_1804d5250(param_1 + 9);
  if (*(char *)(param_1 + 8) == '\0') {
    param_1[7] = 0;
  }
  else {
    puVar1 = (undefined8 *)param_1[7];
    param_1[7] = 0;
    if (puVar1 == (undefined8 *)0x0) goto LAB_1804d5220;
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = (undefined8 *)param_1[7];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
LAB_1804d5220:
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d52d0 size=43 ############

undefined8 * FUN_1804d52d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ToneGeneratorAudioSource::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d5bc0 size=43 ############

undefined8 * FUN_1804d5bc0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::SmoothedValueBase<juce::SmoothedValue<float,juce::ValueSmoothingTypes::Linear>_>
             ::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d72c0 size=52 ############

void * FUN_1804d72c0(void *param_1,ulonglong param_2)

{
  FUN_1812c2020();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d7470 size=52 ############

void * FUN_1804d7470(void *param_1,ulonglong param_2)

{
  FUN_1812bda70();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d74b0 size=284 ############

void FUN_1804d74b0(undefined8 *param_1)

{
  void *pvVar1;
  
  *param_1 = juce::AudioProcessorGraph::vftable;
  param_1[0x29] = juce::AudioProcessorGraph::vftable;
  param_1[0x30] = juce::AudioProcessorGraph::vftable;
  LOCK();
  *(undefined4 *)(param_1[0x31] + 0x18) = 0;
  UNLOCK();
  FUN_1812bcb80();
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 9));
  if (*(int *)((longlong)param_1 + 0x19c) == 0) {
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 9));
  }
  else {
    FUN_180488f10(param_1 + 0x32);
    if (*(int *)(param_1 + 0x33) != 0) {
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[0x32]);
    }
    *(undefined4 *)(param_1 + 0x33) = 0;
    FUN_1812bd140(param_1);
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 9));
  }
  pvVar1 = (void *)param_1[0x36];
  if (pvVar1 != (void *)0x0) {
    FUN_1804dcc10(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  pvVar1 = (void *)param_1[0x35];
  if (pvVar1 != (void *)0x0) {
    FUN_1804dcc10(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  FUN_180488f10(param_1 + 0x32);
  *(undefined4 *)((longlong)param_1 + 0x19c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x32]);
}



############ FUN_ 1812bcb80 size=146 ############

void FUN_1812bcb80(longlong param_1)

{
  void *_Memory;
  void *_Memory_00;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  _Memory = *(void **)(param_1 + 0x1a8);
  *(undefined8 *)(param_1 + 0x1a8) = 0;
  _Memory_00 = *(void **)(param_1 + 0x1b0);
  *(undefined8 *)(param_1 + 0x1b0) = 0;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x48));
  if (_Memory_00 != (void *)0x0) {
    FUN_1804dcc10(_Memory_00);
                    /* WARNING: Subroutine does not return */
    free(_Memory_00);
  }
  if (_Memory != (void *)0x0) {
    FUN_1804dcc10(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 1804d76b0 size=62 ############

undefined8 * FUN_1804d76b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::AudioProcessorGraph::AudioGraphIOProcessor::vftable;
  FUN_1812c2020();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d76f0 size=77 ############

undefined8 * FUN_1804d76f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GenericAudioProcessorEditor::vftable;
  FUN_1804db450(param_1 + 0x22);
  FUN_1812bda70(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d7800 size=476 ############

longlong * FUN_1804d7800(longlong *param_1,longlong *param_2)

{
  int iVar1;
  longlong lVar2;
  int *piVar3;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(*param_2 + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *param_1;
  *param_1 = *param_2;
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if ((*(uint *)(param_2[1] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(param_2[1] + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[1];
  param_1[1] = param_2[1];
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if ((*(uint *)(param_2[2] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(param_2[2] + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[2];
  param_1[2] = param_2[2];
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if ((*(uint *)(param_2[3] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(param_2[3] + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[3];
  param_1[3] = param_2[3];
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if ((*(uint *)(param_2[4] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(param_2[4] + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[4];
  param_1[4] = param_2[4];
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  if ((*(uint *)(param_2[5] + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar3 = (int *)(param_2[5] + -0x10);
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[5];
  param_1[5] = param_2[5];
  UNLOCK();
  piVar3 = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = *piVar3 + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar3);
    }
  }
  FUN_181249460(param_1 + 6,param_2 + 6);
  param_1[7] = param_2[7];
  param_1[8] = param_2[8];
  *(int *)(param_1 + 9) = (int)param_2[9];
  *(undefined1 *)((longlong)param_1 + 0x4c) = *(undefined1 *)((longlong)param_2 + 0x4c);
  *(int *)(param_1 + 10) = (int)param_2[10];
  *(undefined4 *)((longlong)param_1 + 0x54) = *(undefined4 *)((longlong)param_2 + 0x54);
  *(char *)(param_1 + 0xb) = (char)param_2[0xb];
  return param_1;
}



############ FUN_ 1804d79e0 size=174 ############

longlong * FUN_1804d79e0(longlong *param_1,undefined8 param_2)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  longlong *plVar4;
  uint *_Memory;
  longlong *local_res8;
  
  local_res8 = param_1;
  plVar4 = (longlong *)FUN_1812316c0(param_2,&local_res8,0x5c,0x2f,0xfffffffffffffffe);
  iVar3 = FUN_181232460(plVar4,&DAT_1824968a4);
  if (iVar3 < 0) {
    lVar2 = *plVar4;
    *param_1 = lVar2;
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    FUN_1812490c0(plVar4,param_1,0,iVar3);
  }
  _Memory = (uint *)(local_res8 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1804d7ec0 size=43 ############

undefined8 * FUN_1804d7ec0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::KnownPluginList::CustomScanner::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d7f20 size=379 ############

undefined8 * FUN_1804d7f20(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  
  *param_1 = juce::PluginListComponent::vftable;
  param_1[0x16] = juce::PluginListComponent::vftable;
  param_1[0x17] = juce::PluginListComponent::vftable;
  FUN_1812a72f0(param_1[0x19]);
  puVar2 = (undefined8 *)param_1[0x7f];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = (undefined8 *)param_1[0x7e];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar3 = (uint *)(param_1[0x7c] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(param_1[0x7b] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  param_1[0x41] = juce::TextButton::vftable;
  param_1[0x57] = juce::TextButton::vftable;
  FUN_181337760();
  param_1[0x1b] = juce::TableListBox::vftable;
  param_1[0x31] = juce::TableListBox::vftable;
  param_1[0x3c] = juce::TableListBox::vftable;
  param_1[0x3d] = juce::TableListBox::vftable;
  FUN_1812e8430();
  puVar3 = (uint *)(param_1[0x1a] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18123e3a0 size=553 ############

void FUN_18123e3a0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  uint *puVar5;
  undefined8 *puVar6;
  uint uVar7;
  uint uVar8;
  longlong lVar9;
  longlong local_res8;
  longlong local_res10;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  uVar8 = *(int *)((longlong)param_1 + 0xc) - 1;
  if (-1 < (int)uVar8) {
    plVar1 = (longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8);
    lVar9 = (longlong)(int)uVar8 << 3;
    do {
      if (uVar8 < *(uint *)((longlong)param_1 + 0xc)) {
        puVar6 = (undefined8 *)(*param_1 + lVar9);
      }
      else {
        if (*(int *)(*plVar1 + 0xc) < DAT_18267af70) {
          _Init_thread_header(&DAT_18267af70);
          if (DAT_18267af70 == -1) {
            DAT_18267af68 = &DAT_1821dbf98;
            atexit(FUN_181a4a7b0);
            _Init_thread_footer(&DAT_18267af70);
          }
        }
        puVar6 = &DAT_18267af68;
      }
      FUN_181241890(&local_res10,puVar6,param_3,param_4,uVar10);
      uVar7 = *(uint *)((longlong)param_1 + 0xc);
      while (uVar7 = uVar7 - 1, -1 < (int)uVar7) {
        if (uVar7 < *(uint *)((longlong)param_1 + 0xc)) {
          puVar6 = (undefined8 *)(*param_1 + (longlong)(int)uVar7 * 8);
        }
        else {
          if (*(int *)(*plVar1 + 0xc) < DAT_18267af70) {
            _Init_thread_header(&DAT_18267af70);
            if (DAT_18267af70 == -1) {
              DAT_18267af68 = &DAT_1821dbf98;
              atexit(FUN_181a4a7b0);
              _Init_thread_footer(&DAT_18267af70);
            }
          }
          puVar6 = &DAT_18267af68;
        }
        FUN_181241890(&local_res8,puVar6);
        if (uVar8 != uVar7) {
          cVar3 = FUN_181240ff0(&local_res10,&local_res8);
          if (cVar3 == '\0') {
            if (local_res10 != local_res8) {
              iVar4 = FUN_18049bb30();
              if (iVar4 != 0) goto LAB_18123e4a2;
            }
          }
          FUN_180488fc0(param_1,uVar8);
          puVar5 = (uint *)(local_res8 + -0x10);
          if ((*puVar5 & 0x30000000) == 0) {
            LOCK();
            uVar7 = *puVar5;
            *puVar5 = *puVar5 - 1;
            UNLOCK();
            if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar5);
            }
          }
          break;
        }
LAB_18123e4a2:
        puVar5 = (uint *)(local_res8 + -0x10);
        if ((*puVar5 & 0x30000000) == 0) {
          LOCK();
          uVar2 = *puVar5;
          *puVar5 = *puVar5 - 1;
          UNLOCK();
          if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar5);
          }
        }
      }
      puVar5 = (uint *)(local_res10 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      lVar9 = lVar9 + -8;
      uVar8 = uVar8 - 1;
    } while (-1 < (int)uVar8);
  }
  return;
}



############ FUN_ 1812309c0 size=463 ############

undefined8 * FUN_1812309c0(undefined8 *param_1,undefined8 *param_2)

{
  uint uVar1;
  int iVar2;
  undefined8 uVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  longlong lVar6;
  uint *puVar7;
  char *pcVar8;
  bool bVar9;
  char *local_res8;
  undefined1 local_res20 [8];
  undefined1 local_48 [8];
  longlong *local_40;
  byte *local_38;
  undefined8 local_30;
  char *local_28;
  
  local_30 = 0xfffffffffffffffe;
  local_res8 = (char *)*param_1;
  if (*local_res8 == '\0') {
    uVar3 = FUN_181233f40(local_res20,0x22);
    FUN_181232a20(param_2,uVar3,0x22);
    return param_2;
  }
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  iVar2 = FUN_180492f10(&local_res8);
  if (iVar2 != 0x22) {
    plVar4 = (longlong *)FUN_181233f40(local_48,0x22);
    local_40 = plVar4;
    puVar5 = (undefined8 *)FUN_181232d30(plVar4,&local_res8);
    local_40 = (longlong *)*puVar5;
    if ((*(uint *)((longlong)local_40 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)((longlong)local_40 + -0x10) = *(int *)((longlong)local_40 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(*plVar4 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    local_28 = local_res8;
    puVar7 = (uint *)(local_res8 + -0x10);
    local_res8 = (char *)local_40;
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  pcVar8 = local_res8;
  if (*local_res8 != '\0') {
    lVar6 = -1;
    do {
      lVar6 = lVar6 + 1;
    } while (local_res8[lVar6] != '\0');
    local_38 = (byte *)(local_res8 + lVar6);
    iVar2 = 0;
    do {
      local_38 = local_38 + -1;
      if ((*local_38 & 0xc0) != 0x80) break;
      iVar2 = iVar2 + 1;
    } while (iVar2 < 4);
    iVar2 = FUN_180492f10(&local_38);
    if (iVar2 == 0x22) goto LAB_181230b52;
  }
  FUN_181232b70(&local_res8,0x22);
  pcVar8 = local_res8;
LAB_181230b52:
  *param_2 = pcVar8;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar9 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar9) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return param_2;
}



############ FUN_ 181243270 size=345 ############

ulonglong * FUN_181243270(longlong param_1,ulonglong *param_2,undefined8 param_3,ulonglong *param_4)

{
  uint uVar1;
  ulonglong uVar2;
  bool bVar3;
  bool bVar4;
  int iVar5;
  ulonglong *puVar6;
  uint *puVar7;
  ulonglong local_res8;
  longlong local_28 [2];
  
  local_res8 = local_res8 & 0xffffffff00000000;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x38));
  iVar5 = FUN_1812498b0(param_1 + 8,param_3,*(undefined1 *)(param_1 + 100),0);
  if (iVar5 < 0) {
    if (*(longlong *)(param_1 + 0x30) == 0) {
      local_res8 = *param_4;
      bVar4 = false;
      bVar3 = true;
      if ((*(uint *)(local_res8 - 0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 - 0x10) = *(int *)(local_res8 - 0x10) + 1;
        UNLOCK();
      }
      puVar6 = &local_res8;
    }
    else {
      bVar4 = true;
      bVar3 = false;
      puVar6 = (ulonglong *)FUN_181243270(*(longlong *)(param_1 + 0x30),local_28,param_3,param_4);
    }
    uVar2 = *puVar6;
    *param_2 = uVar2;
    if ((*(uint *)(uVar2 - 0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(uVar2 - 0x10) = *(int *)(uVar2 - 0x10) + 1;
      UNLOCK();
    }
    if (bVar3) {
      puVar7 = (uint *)(local_res8 - 0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
    if ((bVar4) && (puVar7 = (uint *)(local_28[0] + -0x10), (*puVar7 & 0x30000000) == 0)) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
  }
  else {
    puVar6 = (ulonglong *)FUN_181249970(param_1 + 0x18,iVar5);
    uVar2 = *puVar6;
    *param_2 = uVar2;
    if ((*(uint *)(uVar2 - 0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(uVar2 - 0x10) = *(int *)(uVar2 - 0x10) + 1;
      UNLOCK();
    }
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x38));
  return param_2;
}



############ FUN_ 18134f050 size=574 ############

undefined8 FUN_18134f050(longlong param_1)

{
  uint uVar1;
  char *pcVar2;
  char cVar3;
  BOOL BVar4;
  undefined8 *_Memory;
  undefined8 *puVar5;
  uint *puVar6;
  undefined8 uVar7;
  undefined4 local_res10 [2];
  DWORD local_res18 [2];
  undefined4 local_res20 [2];
  longlong local_c8 [3];
  HANDLE local_b0;
  char *local_a8;
  longlong local_90;
  LPCVOID local_88;
  longlong local_78;
  longlong local_70;
  undefined1 local_68 [16];
  undefined8 local_58;
  char *local_50;
  char *local_48;
  undefined1 local_40 [40];
  
  local_58 = 0xfffffffffffffffe;
  _Memory = (undefined8 *)FUN_18134f980();
  if ((_Memory != (undefined8 *)0x0) && (*(char *)(_Memory + 1) == '\0')) {
    uVar7 = 0;
    goto LAB_18134f212;
  }
  FUN_18123df70(local_68,param_1 + 0xb8,0);
  FUN_18123ed20(local_c8,local_68,0x4000);
  if (*local_a8 == '\0') {
    if (*(int *)(param_1 + 0xe8) == 1) {
      local_res10[0] = 0x50525043;
      (**(code **)(local_c8[0] + 0x20))(local_c8,local_res10);
      if (local_90 != 0) {
        local_res18[0] = 0;
        if ((local_b0 != (HANDLE)0x0) &&
           (BVar4 = WriteFile(local_b0,local_88,(DWORD)local_90,local_res18,(LPOVERLAPPED)0x0),
           BVar4 == 0)) {
          puVar5 = (undefined8 *)FUN_1812181b0(&local_78);
          local_50 = local_a8;
          pcVar2 = (char *)*puVar5;
          *puVar5 = local_a8;
          puVar6 = (uint *)(local_78 + -0x10);
          local_a8 = pcVar2;
          if ((*puVar6 & 0x30000000) == 0) {
            LOCK();
            uVar1 = *puVar6;
            *puVar6 = *puVar6 - 1;
            UNLOCK();
            if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar6);
            }
          }
        }
        local_90 = 0;
      }
      if ((local_b0 != (HANDLE)0x0) && (BVar4 = FlushFileBuffers(local_b0), BVar4 == 0)) {
        puVar5 = (undefined8 *)FUN_1812181b0(&local_70);
        local_48 = local_a8;
        pcVar2 = (char *)*puVar5;
        *puVar5 = local_a8;
        puVar6 = (uint *)(local_70 + -0x10);
        local_a8 = pcVar2;
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
      }
      FUN_1812192a0(local_40,local_c8);
      cVar3 = FUN_18134ef00(param_1,local_40);
      if (cVar3 == '\0') {
        FUN_181218f80(local_40);
        goto LAB_18134f1fc;
      }
      FUN_181218f80(local_40);
    }
    else {
      local_res20[0] = 0x504f5250;
      (**(code **)(local_c8[0] + 0x20))(local_c8,local_res20,4);
      cVar3 = FUN_18134ef00(param_1,local_c8);
      if (cVar3 == '\0') goto LAB_18134f1fc;
    }
    FUN_18123ec40(local_c8);
    cVar3 = FUN_18123dec0(local_68);
    if (cVar3 == '\0') goto LAB_18134f205;
    *(undefined1 *)(param_1 + 0xf9) = 0;
    uVar7 = 1;
  }
  else {
LAB_18134f1fc:
    FUN_18123ec40(local_c8);
LAB_18134f205:
    uVar7 = 0;
  }
  FUN_181244540(local_68);
LAB_18134f212:
  if (_Memory == (undefined8 *)0x0) {
    return uVar7;
  }
  FUN_181245930(*_Memory);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1812470e0 size=495 ############

undefined1 FUN_1812470e0(undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  uint uVar1;
  char *pcVar2;
  undefined1 uVar3;
  char cVar4;
  BOOL BVar5;
  undefined8 *puVar6;
  uint *puVar7;
  int iVar8;
  DWORD local_res20 [2];
  longlong local_98;
  longlong local_90;
  longlong local_88;
  longlong local_80;
  undefined1 local_78 [24];
  HANDLE local_60;
  char *local_58;
  longlong local_40;
  LPCVOID local_38;
  undefined8 local_28;
  char *local_20;
  char *local_18;
  
  local_28 = 0xfffffffffffffffe;
  FUN_18123df70(&local_98,param_2,0);
  FUN_18123ed20(local_78,&local_98,0x4000);
  if (*local_58 == '\0') {
    FUN_181246e90(param_1,local_78,param_3);
    if (local_40 != 0) {
      local_res20[0] = 0;
      if ((local_60 != (HANDLE)0x0) &&
         (BVar5 = WriteFile(local_60,local_38,(DWORD)local_40,local_res20,(LPOVERLAPPED)0x0),
         BVar5 == 0)) {
        puVar6 = (undefined8 *)FUN_1812181b0(&local_88);
        local_20 = local_58;
        pcVar2 = (char *)*puVar6;
        *puVar6 = local_58;
        puVar7 = (uint *)(local_88 + -0x10);
        local_58 = pcVar2;
        if ((*puVar7 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *puVar7;
          *puVar7 = *puVar7 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar7);
          }
        }
      }
      local_40 = 0;
    }
    if ((local_60 != (HANDLE)0x0) && (BVar5 = FlushFileBuffers(local_60), BVar5 == 0)) {
      puVar6 = (undefined8 *)FUN_1812181b0(&local_80);
      local_18 = local_58;
      pcVar2 = (char *)*puVar6;
      *puVar6 = local_58;
      puVar7 = (uint *)(local_80 + -0x10);
      local_58 = pcVar2;
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
    }
    if (*local_58 == '\0') {
      FUN_18123ec40(local_78);
      uVar3 = FUN_18123dec0(&local_98);
      goto LAB_181247243;
    }
  }
  FUN_18123ec40(local_78);
  uVar3 = 0;
LAB_181247243:
  iVar8 = 4;
  do {
    cVar4 = FUN_181244b10(&local_98);
    if (cVar4 != '\0') break;
    Sleep(0x32);
    iVar8 = iVar8 + -1;
  } while (-1 < iVar8);
  puVar7 = (uint *)(local_90 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(local_98 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  return uVar3;
}



############ FUN_ 1812447f0 size=290 ############

undefined1
FUN_1812447f0(undefined8 param_1,undefined8 param_2,undefined1 param_3,undefined1 param_4,
             undefined8 param_5)

{
  uint uVar1;
  undefined1 uVar2;
  char cVar3;
  uint *puVar4;
  int iVar5;
  longlong local_70;
  longlong local_68;
  undefined1 local_58 [32];
  char *local_38;
  
  FUN_18123df70(&local_70,param_1,1);
  FUN_18123ed20(local_58,&local_70,0x4000);
  if (*local_38 == '\0') {
    FUN_18122e350(local_58,param_2,param_3,param_4,param_5);
  }
  FUN_18123ec40(local_58);
  uVar2 = FUN_18123dec0(&local_70);
  iVar5 = 4;
  do {
    cVar3 = FUN_181244b10(&local_70);
    if (cVar3 != '\0') break;
    Sleep(0x32);
    iVar5 = iVar5 + -1;
  } while (-1 < iVar5);
  puVar4 = (uint *)(local_68 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(local_70 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return uVar2;
}



############ FUN_ 1812ba080 size=133 ############

undefined8 *
FUN_1812ba080(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  longlong local_res18;
  undefined8 local_res20;
  
  *param_1 = 0;
  param_1[1] = 0;
  puVar2 = (undefined8 *)FUN_181244920(param_2,&local_res18,param_3,param_4,1,0xfffffffffffffffe);
  local_res20 = *puVar2;
  FUN_18122cec0(param_1);
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18122d5d0(param_1);
  return param_1;
}



############ FUN_ 1804d9710 size=52 ############

void * FUN_1804d9710(void *param_1,ulonglong param_2)

{
  FUN_18122acf0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d9750 size=52 ############

void * FUN_1804d9750(void *param_1,ulonglong param_2)

{
  FUN_1812c25c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804d9790 size=52 ############

void * FUN_1804d9790(void *param_1,ulonglong param_2)

{
  FUN_1812b67a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804da1f0 size=52 ############

void * FUN_1804da1f0(void *param_1,ulonglong param_2)

{
  FUN_1812b5b90();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812b5b90 size=87 ############

void FUN_1812b5b90(undefined8 *param_1)

{
  undefined1 local_res8 [8];
  
  *param_1 = juce::AudioProcessorValueTreeState::vftable;
  param_1[3] = juce::AudioProcessorValueTreeState::vftable;
  FUN_1812a7720();
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xf));
  FUN_1804de3a0(param_1 + 0xc,local_res8,*(undefined8 *)param_1[0xd],(undefined8 *)param_1[0xd]);
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0xd]);
}



############ FUN_ 1804de3a0 size=346 ############

undefined8 * FUN_1804de3a0(longlong param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  longlong *plVar1;
  char cVar2;
  longlong *plVar3;
  undefined8 *puVar4;
  longlong *plVar5;
  longlong *plVar6;
  void *_Memory;
  
  plVar1 = (longlong *)(param_1 + 8);
  plVar3 = (longlong *)*plVar1;
  if ((param_3 == (longlong *)*plVar3) && (param_4 == plVar3)) {
    FUN_1804df860(param_1,plVar3[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*plVar1 + 8) = plVar3;
    *(longlong **)*plVar1 = plVar3;
    *(longlong **)(*plVar1 + 0x10) = plVar3;
    *(undefined8 *)(param_1 + 0x10) = 0;
    *param_2 = *(undefined8 *)*plVar1;
  }
  else {
    if (param_3 != param_4) {
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar6 = (longlong *)param_3[1];
        plVar3 = param_3;
        while ((plVar5 = plVar6, cVar2 == '\0' && (plVar3 == (longlong *)plVar5[2]))) {
          cVar2 = *(char *)(plVar5[1] + 0x19);
          plVar6 = (longlong *)plVar5[1];
          plVar3 = plVar5;
        }
      }
      plVar3 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar3 + 0x19) == '\0') {
        plVar3 = (longlong *)*plVar3;
        cVar2 = *(char *)((longlong)plVar3 + 0x19);
        while (cVar2 == '\0') {
          plVar3 = (longlong *)*plVar3;
          cVar2 = *(char *)((longlong)plVar3 + 0x19);
        }
      }
      else {
        cVar2 = *(char *)(param_3[1] + 0x19);
        plVar3 = (longlong *)param_3[1];
        while ((plVar6 = plVar3, cVar2 == '\0' && (param_3 == (longlong *)plVar6[2]))) {
          cVar2 = *(char *)(plVar6[1] + 0x19);
          plVar3 = (longlong *)plVar6[1];
          param_3 = plVar6;
        }
      }
      _Memory = (void *)FUN_18047db40(plVar1);
      puVar4 = *(undefined8 **)((longlong)_Memory + 0x28);
      if (puVar4 != (undefined8 *)0x0) {
        (**(code **)*puVar4)(puVar4,1);
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 1804de830 size=342 ############

longlong * FUN_1804de830(undefined8 *param_1,longlong *param_2,longlong param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  void *pvVar4;
  uint uVar5;
  undefined8 *puVar6;
  undefined8 *local_48;
  undefined8 *local_40;
  longlong local_38;
  
  *param_2 = 0;
  param_2[1] = 0;
  iVar1 = *(int *)(param_3 + 0x10);
  FUN_1812bcde0(*param_1,&local_48,param_3,param_4,1,0xfffffffffffffffe);
  for (puVar6 = local_48; puVar6 != local_40; puVar6 = puVar6 + 2) {
    if ((*(int *)(puVar6 + 1) == iVar1) && (*(int *)((longlong)puVar6 + 0xc) == param_4)) {
      iVar2 = *(int *)((longlong)param_2 + 0xc);
      iVar3 = iVar2 + 1;
      if ((int)*(uint *)(param_2 + 1) < iVar3) {
        if (iVar3 < 0) {
          iVar3 = iVar2 + 2;
        }
        uVar5 = iVar2 + 9 + (iVar3 >> 1) & 0xfffffff8;
        if (*(uint *)(param_2 + 1) != uVar5) {
          pvVar4 = (void *)*param_2;
          if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
            free(pvVar4);
          }
          if (pvVar4 == (void *)0x0) {
            pvVar4 = malloc((longlong)(int)uVar5 * 8);
            *param_2 = (longlong)pvVar4;
          }
          else {
            pvVar4 = realloc(pvVar4,(longlong)(int)uVar5 * 8);
            *param_2 = (longlong)pvVar4;
          }
        }
        *(uint *)(param_2 + 1) = uVar5;
      }
      iVar3 = *(int *)((longlong)param_2 + 0xc);
      *(int *)((longlong)param_2 + 0xc) = iVar3 + 1;
      *(undefined8 *)(*param_2 + (longlong)iVar3 * 8) = *puVar6;
    }
  }
  if (local_48 != (undefined8 *)0x0) {
    puVar6 = local_48;
    if ((0xfff < (local_38 - (longlong)local_48 & 0xfffffffffffffff0U)) &&
       (puVar6 = (undefined8 *)local_48[-1],
       0x1f < (ulonglong)((longlong)local_48 + (-8 - (longlong)puVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(puVar6);
  }
  return param_2;
}



############ FUN_ 1804dfd70 size=415 ############

longlong FUN_1804dfd70(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  void *pvVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  void *_Memory;
  longlong lVar9;
  longlong lVar10;
  ulonglong uVar11;
  
  lVar9 = *param_1;
  lVar10 = param_1[1] - lVar9 >> 4;
  if (lVar10 == 0xfffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar11 = lVar10 + 1;
  uVar7 = param_1[2] - lVar9 >> 4;
  uVar4 = uVar11;
  if ((uVar7 <= 0xfffffffffffffff - (uVar7 >> 1)) && (uVar4 = (uVar7 >> 1) + uVar7, uVar4 < uVar11))
  {
    uVar4 = uVar11;
  }
  lVar10 = uVar4 * 0x10;
  if (0xfffffffffffffff < uVar4) {
    lVar10 = -1;
  }
  puVar5 = (undefined8 *)FUN_180480500(lVar10);
  uVar2 = param_3[1];
  uVar7 = (longlong)param_2 - lVar9 & 0xfffffffffffffff0;
  *(undefined8 *)(uVar7 + (longlong)puVar5) = *param_3;
  ((undefined8 *)(uVar7 + (longlong)puVar5))[1] = uVar2;
  puVar6 = (undefined8 *)param_1[1];
  if (param_2 == puVar6) {
    puVar3 = puVar5;
    for (puVar8 = (undefined8 *)*param_1; puVar8 != puVar6; puVar8 = puVar8 + 2) {
      uVar2 = puVar8[1];
      *puVar3 = *puVar8;
      puVar3[1] = uVar2;
      puVar3 = puVar3 + 2;
    }
  }
  else {
    puVar8 = puVar5;
    for (puVar6 = (undefined8 *)*param_1; puVar6 != param_2; puVar6 = puVar6 + 2) {
      uVar2 = puVar6[1];
      *puVar8 = *puVar6;
      puVar8[1] = uVar2;
      puVar8 = puVar8 + 2;
    }
    puVar6 = (undefined8 *)param_1[1];
    if (param_2 != puVar6) {
      lVar9 = uVar7 - (longlong)param_2;
      do {
        uVar2 = param_2[1];
        puVar8 = (undefined8 *)((longlong)puVar5 + lVar9 + 0x10 + (longlong)param_2);
        *puVar8 = *param_2;
        puVar8[1] = uVar2;
        param_2 = param_2 + 2;
      } while (param_2 != puVar6);
    }
  }
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = (longlong)puVar5;
    param_1[1] = (longlong)(puVar5 + uVar11 * 2);
    param_1[2] = (longlong)(puVar5 + uVar4 * 2);
    return *param_1 + uVar7;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1804df210 size=43 ############

undefined8 * FUN_1804df210(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GraphRenderSequence<double>::RenderingOp::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804df2d0 size=43 ############

undefined8 * FUN_1804df2d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GraphRenderSequence<float>::RenderingOp::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e2f20 size=606 ############

longlong * FUN_1804e2f20(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  longlong *plVar2;
  int iVar3;
  longlong lVar4;
  int *piVar5;
  longlong *plVar6;
  longlong *plVar7;
  
  if (param_1 != param_2) {
    plVar6 = param_2 + 2;
    plVar7 = param_3;
    do {
      plVar1 = plVar6 + -0xc;
      param_3 = plVar7 + -0xc;
      plVar2 = plVar6 + -0xe;
      if ((*(uint *)(plVar6[-0xe] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(plVar6[-0xe] + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = *param_3;
      *param_3 = *plVar2;
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      if ((*(uint *)(plVar6[-0xd] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(plVar6[-0xd] + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = plVar7[-0xb];
      plVar7[-0xb] = plVar6[-0xd];
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      if ((*(uint *)(*plVar1 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(*plVar1 + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = plVar7[-10];
      plVar7[-10] = *plVar1;
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      if ((*(uint *)(plVar6[-0xb] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(plVar6[-0xb] + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = plVar7[-9];
      plVar7[-9] = plVar6[-0xb];
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      if ((*(uint *)(plVar6[-10] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(plVar6[-10] + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = plVar7[-8];
      plVar7[-8] = plVar6[-10];
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      if ((*(uint *)(plVar6[-9] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(plVar6[-9] + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = plVar7[-7];
      plVar7[-7] = plVar6[-9];
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      if ((*(uint *)(plVar6[-8] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar5 = (int *)(plVar6[-8] + -0x10);
        *piVar5 = *piVar5 + 1;
        UNLOCK();
      }
      LOCK();
      lVar4 = plVar7[-6];
      plVar7[-6] = plVar6[-8];
      UNLOCK();
      piVar5 = (int *)(lVar4 + -0x10);
      if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar3 = *piVar5;
        *piVar5 = *piVar5 + -1;
        UNLOCK();
        if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar5);
        }
      }
      plVar7[-5] = plVar6[-7];
      plVar7[-4] = plVar6[-6];
      *(int *)(plVar7 + -3) = (int)plVar6[-5];
      *(undefined1 *)((longlong)plVar7 + -0x14) = *(undefined1 *)((longlong)plVar6 + -0x24);
      *(int *)(plVar7 + -2) = (int)plVar6[-4];
      *(undefined4 *)((longlong)plVar7 + -0xc) = *(undefined4 *)((longlong)plVar6 + -0x1c);
      *(char *)(plVar7 + -1) = (char)plVar6[-3];
      plVar6 = plVar1;
      plVar7 = param_3;
    } while (plVar2 != param_1);
  }
  return param_3;
}



############ FUN_ 1804e3e00 size=534 ############

longlong * FUN_1804e3e00(longlong *param_1,longlong *param_2,longlong *param_3)

{
  longlong *plVar1;
  int iVar2;
  longlong lVar3;
  int *piVar4;
  longlong *plVar5;
  
  if (param_1 != param_2) {
    plVar5 = param_1 + 2;
    do {
      if ((*(uint *)(plVar5[-2] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar4 = (int *)(plVar5[-2] + -0x10);
        *piVar4 = *piVar4 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = *param_3;
      *param_3 = plVar5[-2];
      UNLOCK();
      piVar4 = (int *)(lVar3 + -0x10);
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar4;
        *piVar4 = *piVar4 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar4);
        }
      }
      if ((*(uint *)(plVar5[-1] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar4 = (int *)(plVar5[-1] + -0x10);
        *piVar4 = *piVar4 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = param_3[1];
      param_3[1] = plVar5[-1];
      UNLOCK();
      piVar4 = (int *)(lVar3 + -0x10);
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar4;
        *piVar4 = *piVar4 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar4);
        }
      }
      if ((*(uint *)(*plVar5 + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar4 = (int *)(*plVar5 + -0x10);
        *piVar4 = *piVar4 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = param_3[2];
      param_3[2] = *plVar5;
      UNLOCK();
      piVar4 = (int *)(lVar3 + -0x10);
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar4;
        *piVar4 = *piVar4 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar4);
        }
      }
      if ((*(uint *)(plVar5[1] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar4 = (int *)(plVar5[1] + -0x10);
        *piVar4 = *piVar4 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = param_3[3];
      param_3[3] = plVar5[1];
      UNLOCK();
      piVar4 = (int *)(lVar3 + -0x10);
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar4;
        *piVar4 = *piVar4 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar4);
        }
      }
      if ((*(uint *)(plVar5[2] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar4 = (int *)(plVar5[2] + -0x10);
        *piVar4 = *piVar4 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = param_3[4];
      param_3[4] = plVar5[2];
      UNLOCK();
      piVar4 = (int *)(lVar3 + -0x10);
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar4;
        *piVar4 = *piVar4 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar4);
        }
      }
      if ((*(uint *)(plVar5[3] + -0x10) & 0x30000000) == 0) {
        LOCK();
        piVar4 = (int *)(plVar5[3] + -0x10);
        *piVar4 = *piVar4 + 1;
        UNLOCK();
      }
      LOCK();
      lVar3 = param_3[5];
      param_3[5] = plVar5[3];
      UNLOCK();
      piVar4 = (int *)(lVar3 + -0x10);
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar2 = *piVar4;
        *piVar4 = *piVar4 + -1;
        UNLOCK();
        if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(piVar4);
        }
      }
      FUN_181249460(param_3 + 6,plVar5 + 4);
      param_3[7] = plVar5[5];
      param_3[8] = plVar5[6];
      *(int *)(param_3 + 9) = (int)plVar5[7];
      *(undefined1 *)((longlong)param_3 + 0x4c) = *(undefined1 *)((longlong)plVar5 + 0x3c);
      *(int *)(param_3 + 10) = (int)plVar5[8];
      *(undefined4 *)((longlong)param_3 + 0x54) = *(undefined4 *)((longlong)plVar5 + 0x44);
      *(char *)(param_3 + 0xb) = (char)plVar5[9];
      param_3 = param_3 + 0xc;
      plVar1 = plVar5 + 10;
      plVar5 = plVar5 + 0xc;
    } while (plVar1 != param_2);
  }
  return param_3;
}



############ FUN_ 1804e04a0 size=43 ############

undefined8 * FUN_1804e04a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GraphRenderSequence<double>::RenderingOp::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e04d0 size=43 ############

undefined8 * FUN_1804e04d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::GraphRenderSequence<float>::RenderingOp::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e0ac0 size=88 ############

void FUN_1804e0ac0(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory !=
        std::_Func_impl_no_alloc<<lambda_3086950e88b0e0c712cd148facc5aa09>,juce::String,double>::
        vftable) {
      (*(code *)((undefined **)*_Memory)[4])();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 1804e0b30 size=88 ############

void FUN_1804e0b30(longlong *param_1)

{
  longlong *_Memory;
  
  _Memory = (longlong *)param_1[7];
  if (_Memory != (longlong *)0x0) {
    if ((undefined **)*_Memory !=
        std::
        _Func_impl_no_alloc<<lambda_f70cde19f4983c9b7cc671409a82b9df>,double,juce::String_const&___ptr64>
        ::vftable) {
      (*(code *)((undefined **)*_Memory)[4])();
      param_1[7] = 0;
      return;
    }
    if (_Memory != param_1) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    param_1[7] = 0;
  }
  return;
}



############ FUN_ 1804e25d0 size=79 ############

void FUN_1804e25d0(void *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 0x10);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 181248c30 size=520 ############

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

undefined8 * FUN_181248c30(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  wint_t wVar4;
  ulonglong uVar5;
  byte bVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  longlong lVar10;
  bool bVar11;
  undefined1 *local_30;
  byte *local_28;
  undefined1 *local_20;
  ulonglong local_18;
  ulonglong local_10;
  
  local_28 = (byte *)*param_1;
  local_30 = &DAT_1821dbf98;
  local_20 = (undefined1 *)0x0;
  local_18 = *(ulonglong *)(local_28 + -8);
  local_10 = 0;
  FUN_1812342b0(&local_30);
  local_20 = local_30;
  do {
    bVar1 = *local_28;
    wVar4 = (wint_t)bVar1;
    if ((char)bVar1 < '\0') {
      uVar8 = 0x7f;
      uVar7 = 0x40;
      iVar9 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar7 < 9) break;
          uVar8 = uVar8 >> 1;
          iVar9 = iVar9 + 1;
          uVar7 = uVar7 >> 1;
        } while ((bVar1 & uVar7) != 0);
      }
      uVar8 = bVar1 & uVar8;
      wVar4 = (wint_t)uVar8;
      lVar10 = 1;
      if (0 < (longlong)iVar9) {
        do {
          wVar4 = (wint_t)uVar8;
          if ((local_28[lVar10] & 0xc0) != 0x80) break;
          uVar8 = local_28[lVar10] & 0x3f | uVar8 << 6;
          wVar4 = (wint_t)uVar8;
          lVar10 = lVar10 + 1;
        } while (lVar10 <= iVar9);
      }
    }
    wVar4 = towlower(wVar4);
    lVar10 = 1;
    if ((0x7f < wVar4) && (lVar10 = 2, 0x7ff < wVar4)) {
      lVar10 = 3;
    }
    local_10 = local_10 + lVar10;
    if (local_18 < local_10) {
      uVar5 = 8;
      if (8 < local_18 >> 4) {
        uVar5 = local_18 >> 4;
      }
      local_18 = local_18 + uVar5;
      iVar3 = (int)local_30;
      iVar9 = (int)local_20;
      FUN_1812342b0(&local_30);
      local_20 = local_30 + (iVar9 - iVar3);
    }
    FUN_180493180(&local_20,wVar4);
    if (wVar4 == 0) {
      *param_2 = local_30;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar7 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar11 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar7;
        if (bVar11) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      return param_2;
    }
    bVar1 = *local_28;
    local_28 = local_28 + 1;
    if ((char)bVar1 < '\0') {
      bVar6 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar6))) {
        local_28 = local_28 + 1;
        bVar6 = bVar6 >> 1;
        bVar2 = bVar1 & bVar6;
      }
    }
  } while( true );
}



############ FUN_ 1804e50e0 size=52 ############

void * FUN_1804e50e0(void *param_1,ulonglong param_2)

{
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e7440 size=173 ############

undefined8 * FUN_1804e7440(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[10];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[9];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[1] + 0x18) = 0;
  UNLOCK();
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e7550 size=52 ############

void * FUN_1804e7550(void *param_1,ulonglong param_2)

{
  FUN_18133c510();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e7730 size=64 ############

void * FUN_1804e7730(void *param_1,ulonglong param_2)

{
  FUN_180485f00((longlong)param_1 + 0x48);
  FUN_181322ab0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e7890 size=91 ############

void * FUN_1804e7890(void *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)((longlong)param_1 + 0x40);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_1 + 8));
    *(undefined8 *)((longlong)param_1 + 0x40) = 0;
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e78f0 size=43 ############

undefined8 * FUN_1804e78f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComponentDragger::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e8f80 size=52 ############

void * FUN_1804e8f80(void *param_1,ulonglong param_2)

{
  FUN_1804e7bd0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9010 size=66 ############

undefined8 * FUN_1804e9010(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::DragAndDropContainer::vftable;
  FUN_180485f00(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e91e0 size=87 ############

undefined8 * FUN_1804e91e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::CaretComponent::vftable;
  param_1[0x16] = juce::Timer::vftable;
  FUN_1812a7720();
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9240 size=43 ############

undefined8 * FUN_1804e9240(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::KeyboardFocusTraverser::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e94b0 size=62 ############

undefined8 * FUN_1804e94b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e94f0 size=52 ############

void * FUN_1804e94f0(void *param_1,ulonglong param_2)

{
  FUN_181337760();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9530 size=86 ############

void * FUN_1804e9530(void *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9630 size=52 ############

void * FUN_1804e9630(void *param_1,ulonglong param_2)

{
  FUN_181335920();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9670 size=129 ############

undefined8 * FUN_1804e9670(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::HyperlinkButton::vftable;
  param_1[0x16] = juce::HyperlinkButton::vftable;
  puVar3 = (undefined8 *)param_1[0x42];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_1804858a0(param_1 + 0x39);
  FUN_181337760(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9700 size=195 ############

undefined8 * FUN_1804e9700(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::ImageButton::vftable;
  param_1[0x16] = juce::ImageButton::vftable;
  puVar3 = (undefined8 *)param_1[0x3e];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[0x3d];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[0x3c];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_181337760(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9850 size=76 ############

undefined8 * FUN_1804e9850(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::TextButton::vftable;
  param_1[0x16] = juce::TextButton::vftable;
  FUN_181337760();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e98a0 size=76 ############

undefined8 * FUN_1804e98a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ToggleButton::vftable;
  param_1[0x16] = juce::ToggleButton::vftable;
  FUN_181337760();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e98f0 size=124 ############

undefined8 * FUN_1804e98f0(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::ToolbarButton::vftable;
  param_1[0x16] = juce::ToolbarButton::vftable;
  puVar1 = (undefined8 *)param_1[0x41];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = (undefined8 *)param_1[0x40];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1812db040(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9970 size=88 ############

undefined8 * FUN_1804e9970(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::Drawable::vftable;
  puVar1 = (undefined8 *)param_1[0x17];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e99d0 size=52 ############

void * FUN_1804e99d0(void *param_1,ulonglong param_2)

{
  FUN_181332610();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9a10 size=52 ############

void * FUN_1804e9a10(void *param_1,ulonglong param_2)

{
  FUN_1813315b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9a50 size=62 ############

undefined8 * FUN_1804e9a50(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::DrawablePath::vftable;
  FUN_1813304a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9a90 size=62 ############

undefined8 * FUN_1804e9a90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::DrawableRectangle::vftable;
  FUN_1813304a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9ad0 size=52 ############

void * FUN_1804e9ad0(void *param_1,ulonglong param_2)

{
  FUN_1813304a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804e9b10 size=218 ############

undefined8 * FUN_1804e9b10(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  *param_1 = juce::DrawableText::vftable;
  _Memory = (uint *)(param_1[0x1e] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar4 = (undefined8 *)param_1[0x1d];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar4 = (undefined8 *)param_1[0x1c];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  *param_1 = juce::Drawable::vftable;
  puVar4 = (undefined8 *)param_1[0x17];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804eb590 size=608 ############

void FUN_1804eb590(longlong param_1,longlong *param_2,undefined8 param_3,char param_4)

{
  longlong *plVar1;
  int iVar2;
  uint uVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  uint *puVar6;
  char *local_res10;
  char *local_78;
  undefined1 *local_70;
  undefined1 *local_68;
  longlong local_60;
  undefined8 local_58;
  longlong *local_50;
  longlong *local_48;
  longlong local_40;
  longlong *local_38;
  
  local_58 = 0xfffffffffffffffe;
  plVar1 = *(longlong **)(*param_2 + 8);
  do {
    if (plVar1 == (longlong *)0x0) {
      return;
    }
    local_50 = plVar1;
    local_48 = param_2;
    plVar4 = (longlong *)FUN_1804eb800(param_1,&local_50);
    if (plVar4 != (longlong *)0x0) {
      FUN_181343cc0(param_3,plVar4,0xffffffff);
      local_70 = &DAT_1821dbf98;
      puVar5 = (undefined8 *)FUN_1804f1300(param_1,&local_60,&local_50,"display",&local_70);
      iVar2 = FUN_18049bb30(*puVar5,&DAT_18249ef08);
      puVar6 = (uint *)(local_60 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      puVar6 = (uint *)(local_70 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      if (iVar2 != 0) {
        (**(code **)(*plVar4 + 0x58))(plVar4,1);
      }
      if (param_4 != '\0') {
        local_68 = &DAT_1821dbf98;
        FUN_1804f1300(param_1,&local_res10,&local_50,"clip-path",&local_68);
        puVar6 = (uint *)(local_68 + -0x10);
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
        if (*local_res10 == '\0') {
LAB_1804eb7a0:
          puVar6 = (uint *)(local_res10 + -0x10);
          uVar3 = *puVar6;
        }
        else {
          FUN_1804ece70(&local_78,&local_res10);
          if (*local_78 == '\0') {
            puVar6 = (uint *)(local_78 + -0x10);
            if ((*puVar6 & 0x30000000) == 0) {
              LOCK();
              uVar3 = *puVar6;
              *puVar6 = *puVar6 - 1;
              UNLOCK();
              if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                free(puVar6);
              }
            }
            goto LAB_1804eb7a0;
          }
          local_40 = param_1;
          local_38 = plVar4;
          FUN_18051f240(param_1 + 8,&local_78,&local_40);
          puVar6 = (uint *)(local_78 + -0x10);
          if ((*puVar6 & 0x30000000) == 0) {
            LOCK();
            uVar3 = *puVar6;
            *puVar6 = *puVar6 - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar6);
            }
          }
          puVar6 = (uint *)(local_res10 + -0x10);
          uVar3 = *puVar6;
        }
        if ((uVar3 & 0x30000000) == 0) {
          LOCK();
          uVar3 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
      }
    }
    plVar1 = (longlong *)*plVar1;
  } while( true );
}



############ FUN_ 1804ed7e0 size=766 ############

void FUN_1804ed7e0(undefined8 param_1,undefined8 *param_2,longlong param_3)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  char cVar4;
  int iVar5;
  byte bVar6;
  uint uVar7;
  uint *puVar8;
  longlong lVar9;
  float *pfVar10;
  uint uVar11;
  uint uVar12;
  float *pfVar13;
  uint uVar14;
  undefined4 extraout_XMM0_Da;
  float fVar15;
  byte *local_48;
  undefined1 *local_40;
  undefined8 local_38;
  float *local_30;
  int local_28;
  uint uStack_24;
  
  local_38 = 0xfffffffffffffffe;
  iVar5 = FUN_18049bb30(*param_2,&DAT_182496a74);
  if ((iVar5 == 0) || (iVar5 = FUN_18049bb30(*param_2,&DAT_18249ef08), iVar5 == 0)) {
    return;
  }
  uVar12 = 0;
  local_30 = (float *)0x0;
  local_28 = 0;
  uStack_24 = 0;
  local_48 = (byte *)*param_2;
  while( true ) {
    local_40 = &DAT_1821dbf98;
    cVar4 = FUN_1804f1a00(&local_48,&local_40,1);
    if (cVar4 == '\0') break;
    fVar15 = (float)FUN_1804f0b80(extraout_XMM0_Da,&local_40);
    puVar8 = (uint *)(local_40 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar11 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    iVar5 = uStack_24 + 1;
    if (local_28 < iVar5) {
      if (iVar5 < 0) {
        iVar5 = uStack_24 + 2;
      }
      FUN_1804af790(&local_30,uStack_24 + 9 + (iVar5 >> 1) & 0xfffffff8);
    }
    lVar9 = (longlong)(int)uStack_24;
    uStack_24 = uStack_24 + 1;
    local_30[lVar9] = fVar15;
    while ((bVar1 = *local_48, bVar1 == 0x20 || ((byte)(bVar1 - 9) < 5))) {
      local_48 = local_48 + 1;
      if ((char)bVar1 < '\0') {
        bVar6 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar6))) {
          local_48 = local_48 + 1;
          bVar6 = bVar6 >> 1;
          bVar2 = bVar1 & bVar6;
        }
      }
    }
    bVar1 = *local_48;
    uVar11 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar11 = 0x7f;
      uVar7 = 0x40;
      uVar14 = 0;
      uVar3 = uVar12;
      if ((bVar1 & 0x40) != 0) {
        do {
          uVar14 = uVar3;
          if (uVar7 < 9) break;
          uVar11 = uVar11 >> 1;
          uVar14 = uVar14 + 1;
          uVar7 = uVar7 >> 1;
          uVar3 = uVar14;
        } while ((bVar1 & uVar7) != 0);
      }
      uVar11 = bVar1 & uVar11;
      lVar9 = 1;
      if (0 < (longlong)(int)uVar14) {
        do {
          if ((local_48[lVar9] & 0xc0) != 0x80) break;
          uVar11 = local_48[lVar9] & 0x3f | uVar11 << 6;
          lVar9 = lVar9 + 1;
        } while (lVar9 <= (int)uVar14);
      }
    }
    if ((uVar11 == 0x2c) && (local_48 = local_48 + 1, (char)bVar1 < '\0')) {
      bVar6 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar6))) {
        local_48 = local_48 + 1;
        bVar6 = bVar6 >> 1;
        bVar2 = bVar1 & bVar6;
      }
    }
  }
  puVar8 = (uint *)(local_40 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar11 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  fVar15 = DAT_1824c3c58;
  pfVar13 = local_30;
  if (0 < (int)uStack_24) {
    do {
      if (*pfVar13 <= 0.0) {
        if (uStack_24 == 1) goto LAB_1804edab9;
        *pfVar13 = 0.001;
        uVar11 = uVar12 ^ 1;
        if (uVar11 < uStack_24) {
          if (fVar15 < local_30[(int)uVar11]) {
            local_30[(int)uVar11] = local_30[(int)uVar11] - fVar15;
          }
        }
      }
      uVar12 = uVar12 + 1;
      pfVar13 = pfVar13 + 1;
    } while ((int)uVar12 < (int)uStack_24);
    if (*(uint *)(param_3 + 0xdc) == uStack_24) {
      pfVar13 = *(float **)(param_3 + 0xd0);
      for (pfVar10 = local_30; pfVar10 != local_30 + (int)uStack_24; pfVar10 = pfVar10 + 1) {
        fVar15 = *pfVar13;
        pfVar13 = pfVar13 + 1;
        if (fVar15 != *pfVar10) goto LAB_1804eda9d;
      }
    }
    else {
LAB_1804eda9d:
      FUN_1804aaf40(param_3 + 0xd0,&local_30);
      FUN_181330000(param_3);
    }
  }
LAB_1804edab9:
                    /* WARNING: Subroutine does not return */
  free(local_30);
}



############ FUN_ 1804eebf0 size=791 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 *
FUN_1804eebf0(longlong param_1,undefined4 *param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined8 *param_6,undefined8 *param_7,undefined4 param_8)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  uint *puVar5;
  undefined1 uVar6;
  double dVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  undefined1 **ppuVar11;
  undefined4 uVar12;
  char *local_c8;
  longlong local_c0;
  undefined1 *local_b8 [2];
  longlong local_a8;
  undefined8 local_a0;
  float local_98;
  undefined4 local_90 [2];
  undefined8 local_88;
  longlong lStack_80;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined8 local_68;
  char *local_58;
  char *local_50;
  double local_48;
  undefined8 local_40;
  
  local_40 = 0xfffffffffffffffe;
  fVar10 = DAT_1824c3ea4;
  if (*(char *)*param_7 != '\0') {
    local_58 = (char *)*param_7;
    dVar7 = (double)FUN_18049bd80(&local_58);
    fVar8 = (float)dVar7;
    if (0.0 <= fVar8) {
      fVar10 = DAT_1824c3ea4;
      if (fVar8 <= DAT_1824c3ea4) {
        fVar10 = fVar8;
      }
    }
    else {
      fVar10 = 0.0;
    }
  }
  if (*(char *)*param_6 != '\0') {
    local_50 = (char *)*param_6;
    dVar7 = (double)FUN_18049bd80(&local_50);
    fVar9 = (float)dVar7;
    fVar8 = 0.0;
    if ((0.0 <= fVar9) && (fVar8 = DAT_1824c3ea4, fVar9 <= DAT_1824c3ea4)) {
      fVar8 = fVar9;
    }
    fVar10 = fVar10 * fVar8;
  }
  local_b8[0] = &DAT_1821dbf98;
  ppuVar11 = local_b8;
  FUN_1804f1300(param_1,&local_c0,param_4,param_5,ppuVar11);
  uVar12 = (undefined4)((ulonglong)ppuVar11 >> 0x20);
  puVar5 = (uint *)(local_b8[0] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  FUN_1804ece70(&local_c8,&local_c0);
  if (*local_c8 == '\0') {
LAB_1804eede6:
    iVar2 = FUN_18049bb30(local_c0,&DAT_18249ef08);
    if (iVar2 != 0) {
      puVar5 = (uint *)FUN_1804f2100(param_1,&param_6,param_4,param_5,CONCAT44(uVar12,param_8));
      local_48 = (double)((float)(*puVar5 >> 0x18) * fVar10) + DAT_1824c4520;
      uVar6 = 0xff;
      if (SUB84(local_48,0) < 0xff) {
        uVar6 = SUB81(local_48,0);
      }
      param_7._0_4_ = CONCAT13(uVar6,(int3)*puVar5);
      *param_2 = param_7._0_4_;
      *(undefined8 *)(param_2 + 2) = 0;
      *(undefined8 *)(param_2 + 4) = 0;
      *(undefined8 *)(param_2 + 6) = 0x3f800000;
      *(undefined8 *)(param_2 + 8) = 0;
      *(undefined8 *)(param_2 + 10) = 0x3f800000;
      puVar5 = (uint *)(local_c8 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      puVar5 = (uint *)(local_c0 + -0x10);
      uVar3 = *puVar5;
      goto LAB_1804eeec7;
    }
    *param_2 = DAT_182673b60;
    *(undefined8 *)(param_2 + 2) = 0;
    *(undefined8 *)(param_2 + 4) = 0;
    *(undefined8 *)(param_2 + 6) = 0x3f800000;
    *(undefined8 *)(param_2 + 8) = 0;
    *(undefined8 *)(param_2 + 10) = 0x3f800000;
  }
  else {
    local_90[0] = 0xff000000;
    local_88 = 0;
    lStack_80 = 0;
    local_78 = _DAT_1824c4780;
    uStack_74 = _UNK_1824c4784;
    uStack_70 = _UNK_1824c4788;
    uStack_6c = _UNK_1824c478c;
    local_68 = 0x3f800000;
    local_a8 = param_1;
    local_a0 = param_3;
    local_98 = fVar10;
    cVar1 = FUN_18051f490(param_1 + 8,&local_c8,&local_a8);
    if (cVar1 == '\0') {
      FUN_1812a0e00(local_90);
      goto LAB_1804eede6;
    }
    *param_2 = local_90[0];
    uVar4 = FUN_1804b0230(local_88);
    *(undefined8 *)(param_2 + 2) = uVar4;
    *(longlong *)(param_2 + 4) = lStack_80;
    if (lStack_80 != 0) {
      LOCK();
      *(int *)(lStack_80 + 8) = *(int *)(lStack_80 + 8) + 1;
      UNLOCK();
    }
    *(ulonglong *)(param_2 + 6) = CONCAT44(uStack_74,local_78);
    *(ulonglong *)(param_2 + 8) = CONCAT44(uStack_6c,uStack_70);
    *(undefined8 *)(param_2 + 10) = local_68;
    FUN_1812a0e00(local_90);
  }
  puVar5 = (uint *)(local_c8 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_c0 + -0x10);
  uVar3 = *puVar5;
LAB_1804eeec7:
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_2;
}



############ FUN_ 1804f0ad0 size=161 ############

undefined8
FUN_1804f0ad0(longlong param_1,undefined8 param_2,undefined4 *param_3,undefined1 param_4,
             char param_5)

{
  uint *_Memory;
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  undefined4 extraout_XMM0_Da;
  undefined4 uVar4;
  undefined1 *local_18;
  undefined8 local_10;
  
  local_10 = 0xfffffffffffffffe;
  local_18 = &DAT_1821dbf98;
  cVar2 = FUN_1804f1a00(param_2,&local_18,param_4);
  if (cVar2 == '\0') {
    *param_3 = 0;
    uVar3 = 0;
  }
  else {
    if (param_5 == '\0') {
      uVar4 = *(undefined4 *)(param_1 + 0x24);
    }
    else {
      uVar4 = *(undefined4 *)(param_1 + 0x20);
    }
    uVar4 = FUN_1804f0b80(extraout_XMM0_Da,&local_18,uVar4);
    *param_3 = uVar4;
    uVar3 = 1;
  }
  _Memory = (uint *)(local_18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return uVar3;
}



############ FUN_ 1804f0cc0 size=284 ############

void FUN_1804f0cc0(longlong param_1,longlong *param_2,undefined8 *param_3,undefined1 param_4,
                  char param_5)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  uint *puVar5;
  undefined4 extraout_XMM0_Da;
  undefined4 uVar6;
  undefined1 *local_res18;
  undefined4 local_res20;
  undefined8 local_28;
  undefined8 local_20;
  
  local_res20 = CONCAT31(local_res20._1_3_,param_4);
  local_20 = 0xfffffffffffffffe;
  local_28 = *param_3;
  do {
    local_res18 = &DAT_1821dbf98;
    cVar3 = FUN_1804f1a00(&local_28,&local_res18,1);
    if (cVar3 == '\0') {
      puVar5 = (uint *)(local_res18 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      return;
    }
    if (param_5 == '\0') {
      uVar6 = *(undefined4 *)(param_1 + 0x24);
    }
    else {
      uVar6 = *(undefined4 *)(param_1 + 0x20);
    }
    local_res20 = FUN_1804f0b80(extraout_XMM0_Da,&local_res18,uVar6);
    puVar5 = (uint *)(local_res18 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    iVar2 = *(int *)((longlong)param_2 + 0xc);
    iVar4 = iVar2 + 1;
    if ((int)param_2[1] < iVar4) {
      if (iVar4 < 0) {
        iVar4 = iVar2 + 2;
      }
      FUN_1804af790(param_2,iVar2 + 9 + (iVar4 >> 1) & 0xfffffff8);
    }
    iVar4 = *(int *)((longlong)param_2 + 0xc);
    *(int *)((longlong)param_2 + 0xc) = iVar4 + 1;
    *(undefined4 *)(*param_2 + (longlong)iVar4 * 4) = local_res20;
  } while( true );
}



############ FUN_ 1804f1840 size=434 ############

longlong * FUN_1804f1840(longlong *param_1,undefined8 param_2,byte *param_3,longlong *param_4)

{
  uint uVar1;
  byte bVar2;
  longlong lVar3;
  bool bVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  byte *pbVar8;
  undefined8 uVar9;
  uint *_Memory;
  longlong local_28;
  undefined8 local_20;
  
  local_20 = 0xfffffffffffffffe;
  iVar5 = FUN_181232610(param_2,0);
  do {
    if (iVar5 < 0) {
LAB_1804f1939:
      lVar3 = *param_4;
      *param_1 = lVar3;
      if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
        UNLOCK();
      }
      return param_1;
    }
    if (iVar5 == 0) {
LAB_1804f18c0:
      iVar6 = 0;
      pbVar8 = param_3;
      while( true ) {
        while( true ) {
          bVar2 = *pbVar8;
          pbVar8 = pbVar8 + 1;
          if (-1 < (char)bVar2) break;
          if ((*pbVar8 & 0xc0) != 0x80) goto LAB_1804f18f7;
          do {
            pbVar8 = pbVar8 + 1;
          } while ((*pbVar8 & 0xc0) == 0x80);
          iVar6 = iVar6 + 1;
        }
        if (bVar2 == 0) break;
LAB_1804f18f7:
        iVar6 = iVar6 + 1;
      }
      iVar6 = FUN_180493050(param_2,iVar6 + iVar5);
      iVar7 = iswalpha((wint_t)iVar6);
      if ((iVar7 != 0) || (bVar4 = false, iVar6 == 0x2d)) {
        bVar4 = true;
      }
      if (!bVar4) {
        iVar5 = FUN_181232860(param_2,iVar5,0x3a);
        if (-1 < iVar5) {
          iVar6 = FUN_181232860(param_2,iVar5,0x3b);
          if (iVar6 < 0) {
            iVar6 = 0x7ffff;
          }
          uVar9 = FUN_1812490c0(param_2,&local_28,iVar5 + 1,iVar6);
          FUN_181248e40(uVar9,param_1);
          _Memory = (uint *)(local_28 + -0x10);
          if ((*_Memory & 0x30000000) != 0) {
            return param_1;
          }
          LOCK();
          uVar1 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar1 != 0) {
            return param_1;
          }
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        goto LAB_1804f1939;
      }
    }
    else if (0 < iVar5) {
      iVar6 = FUN_180493050(param_2,iVar5 + -1);
      iVar7 = iswalpha((wint_t)iVar6);
      if ((iVar7 != 0) || (bVar4 = false, iVar6 == 0x2d)) {
        bVar4 = true;
      }
      if (!bVar4) goto LAB_1804f18c0;
    }
    iVar5 = FUN_181232610(param_2,iVar5 + 1,param_3);
  } while( true );
}



############ FUN_ 1804f1a00 size=1509 ############

ulonglong FUN_1804f1a00(undefined8 *param_1,longlong *param_2,char param_3)

{
  int *_Memory;
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  byte *pbVar5;
  undefined4 extraout_var;
  undefined4 *puVar6;
  wint_t _C;
  uint uVar7;
  ulonglong uVar8;
  byte *_Src;
  byte *pbVar9;
  size_t _Size;
  longlong lVar10;
  int iVar11;
  
  _Src = (byte *)*param_1;
LAB_1804f1a20:
  bVar1 = *_Src;
  if ((4 < (byte)(bVar1 - 9)) && (bVar1 != 0x20)) {
    uVar7 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar4 = 0x40;
      iVar11 = 0;
      uVar8 = 0x7f;
      uVar7 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          uVar7 = (uint)uVar8;
          if (uVar4 < 9) break;
          uVar8 = uVar8 >> 1;
          uVar7 = (uint)uVar8;
          iVar11 = iVar11 + 1;
          uVar4 = uVar4 >> 1;
        } while ((bVar1 & uVar4) != 0);
      }
      uVar7 = bVar1 & uVar7;
      lVar10 = 1;
      if (0 < (longlong)iVar11) {
        do {
          if ((_Src[lVar10] & 0xc0) != 0x80) break;
          uVar7 = _Src[lVar10] & 0x3f | uVar7 << 6;
          lVar10 = lVar10 + 1;
        } while (lVar10 <= iVar11);
      }
    }
    if (uVar7 != 0x2c) goto LAB_1804f1ac7;
  }
  _Src = _Src + 1;
  if ((char)bVar1 < '\0') {
    bVar3 = 0x40;
    bVar2 = bVar1 & 0x40;
    while ((bVar2 != 0 && (8 < bVar3))) {
      _Src = _Src + 1;
      bVar3 = bVar3 >> 1;
      bVar2 = bVar1 & bVar3;
    }
  }
  goto LAB_1804f1a20;
LAB_1804f1fd7:
  uVar8 = CONCAT71((int7)(uVar8 >> 8),1);
  goto LAB_1804f1fd9;
LAB_1804f1ac7:
  bVar1 = *_Src;
  uVar7 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar4 = 0x40;
    iVar11 = 0;
    uVar7 = 0x7f;
    if ((bVar1 & 0x40) != 0) {
      do {
        if (uVar4 < 9) break;
        uVar7 = uVar7 >> 1;
        iVar11 = iVar11 + 1;
        uVar4 = uVar4 >> 1;
      } while ((bVar1 & uVar4) != 0);
    }
    uVar7 = bVar1 & uVar7;
    lVar10 = 1;
    if (0 < (longlong)iVar11) {
      do {
        if ((_Src[lVar10] & 0xc0) != 0x80) break;
        uVar7 = _Src[lVar10] & 0x3f | uVar7 << 6;
        lVar10 = lVar10 + 1;
      } while (lVar10 <= iVar11);
    }
  }
  iVar11 = iswdigit((wint_t)uVar7);
  if ((iVar11 != 0) || (pbVar9 = _Src, (uVar7 - 0x2b & 0xfffffffd) == 0)) {
    bVar1 = *_Src;
    pbVar9 = _Src + 1;
    if ((char)bVar1 < '\0') {
      bVar3 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar3))) {
        pbVar9 = pbVar9 + 1;
        bVar3 = bVar3 >> 1;
        bVar2 = bVar1 & bVar3;
      }
    }
  }
  while( true ) {
    bVar1 = *pbVar9;
    uVar8 = (ulonglong)(bVar1 - 0x30);
    if (9 < (byte)(bVar1 - 0x30)) break;
    pbVar9 = pbVar9 + 1;
    if ((char)bVar1 < '\0') {
      bVar3 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar3))) {
        pbVar9 = pbVar9 + 1;
        bVar3 = bVar3 >> 1;
        bVar2 = bVar1 & bVar3;
      }
    }
  }
  bVar1 = *pbVar9;
  uVar7 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar4 = 0x40;
    iVar11 = 0;
    uVar7 = 0x7f;
    if ((bVar1 & 0x40) != 0) {
      do {
        if (uVar4 < 9) break;
        uVar7 = uVar7 >> 1;
        iVar11 = iVar11 + 1;
        uVar4 = uVar4 >> 1;
      } while ((bVar1 & uVar4) != 0);
    }
    uVar8 = 0;
    uVar7 = bVar1 & uVar7;
    lVar10 = 1;
    if (0 < (longlong)iVar11) {
      do {
        uVar8 = (ulonglong)pbVar9[lVar10] & 0xffffffffffffffc0;
        if ((char)uVar8 != -0x80) break;
        uVar8 = (ulonglong)(uVar7 << 6);
        uVar7 = pbVar9[lVar10] & 0x3f | uVar7 << 6;
        lVar10 = lVar10 + 1;
      } while (lVar10 <= iVar11);
    }
  }
  if (uVar7 == 0x2e) {
    pbVar9 = pbVar9 + 1;
    if ((char)bVar1 < '\0') {
      bVar3 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar3))) {
        pbVar9 = pbVar9 + 1;
        bVar3 = bVar3 >> 1;
        bVar2 = bVar1 & bVar3;
      }
    }
    while( true ) {
      bVar1 = *pbVar9;
      uVar8 = (ulonglong)(bVar1 - 0x30);
      if (9 < (byte)(bVar1 - 0x30)) break;
      pbVar9 = pbVar9 + 1;
      if ((char)bVar1 < '\0') {
        bVar3 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar3))) {
          pbVar9 = pbVar9 + 1;
          bVar3 = bVar3 >> 1;
          bVar2 = bVar1 & bVar3;
        }
      }
    }
  }
  bVar1 = *pbVar9;
  uVar7 = (uint)bVar1;
  if ((char)bVar1 < '\0') {
    uVar4 = 0x40;
    iVar11 = 0;
    uVar7 = 0x7f;
    if ((bVar1 & 0x40) != 0) {
      do {
        if (uVar4 < 9) break;
        uVar7 = uVar7 >> 1;
        iVar11 = iVar11 + 1;
        uVar4 = uVar4 >> 1;
      } while ((bVar1 & uVar4) != 0);
    }
    uVar8 = 0;
    uVar7 = bVar1 & uVar7;
    lVar10 = 1;
    if (0 < (longlong)iVar11) {
      do {
        uVar8 = (ulonglong)pbVar9[lVar10] & 0xffffffffffffffc0;
        if ((char)uVar8 != -0x80) break;
        uVar8 = (ulonglong)(uVar7 << 6);
        uVar7 = pbVar9[lVar10] & 0x3f | uVar7 << 6;
        lVar10 = lVar10 + 1;
      } while (lVar10 <= iVar11);
    }
  }
  if (uVar7 == 0x65) {
LAB_1804f1d10:
    pbVar5 = pbVar9 + 1;
    if ((char)bVar1 < '\0') {
      bVar3 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar3))) {
        pbVar5 = pbVar5 + 1;
        bVar3 = bVar3 >> 1;
        bVar2 = bVar1 & bVar3;
      }
    }
    bVar1 = *pbVar5;
    uVar7 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar4 = 0x40;
      iVar11 = 0;
      uVar7 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar4 < 9) break;
          uVar7 = uVar7 >> 1;
          iVar11 = iVar11 + 1;
          uVar4 = uVar4 >> 1;
        } while ((bVar1 & uVar4) != 0);
      }
      uVar7 = bVar1 & uVar7;
      lVar10 = 1;
      if (0 < (longlong)iVar11) {
        do {
          if ((pbVar5[lVar10] & 0xc0) != 0x80) break;
          uVar7 = pbVar5[lVar10] & 0x3f | uVar7 << 6;
          lVar10 = lVar10 + 1;
        } while (lVar10 <= iVar11);
      }
    }
    iVar11 = iswdigit((wint_t)uVar7);
    if ((iVar11 != 0) || (uVar8 = (ulonglong)(uVar7 - 0x2b), (uVar7 - 0x2b & 0xfffffffd) == 0)) {
      iVar11 = 1;
      do {
        bVar1 = *pbVar9;
        pbVar9 = pbVar9 + 1;
        if ((char)bVar1 < '\0') {
          bVar3 = 0x40;
          bVar2 = bVar1 & 0x40;
          while ((bVar2 != 0 && (8 < bVar3))) {
            pbVar9 = pbVar9 + 1;
            bVar3 = bVar3 >> 1;
            bVar2 = bVar1 & bVar3;
          }
        }
        iVar11 = iVar11 + -1;
      } while (-1 < iVar11);
      while( true ) {
        bVar1 = *pbVar9;
        uVar8 = (ulonglong)(bVar1 - 0x30);
        if (9 < (byte)(bVar1 - 0x30)) break;
        pbVar9 = pbVar9 + 1;
        if ((char)bVar1 < '\0') {
          bVar3 = 0x40;
          bVar2 = bVar1 & 0x40;
          while ((bVar2 != 0 && (8 < bVar3))) {
            pbVar9 = pbVar9 + 1;
            bVar3 = bVar3 >> 1;
            bVar2 = bVar1 & bVar3;
          }
        }
      }
    }
  }
  else {
    uVar7 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar4 = 0x40;
      iVar11 = 0;
      uVar7 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar4 < 9) break;
          uVar7 = uVar7 >> 1;
          iVar11 = iVar11 + 1;
          uVar4 = uVar4 >> 1;
        } while ((bVar1 & uVar4) != 0);
      }
      uVar8 = 0;
      uVar7 = bVar1 & uVar7;
      lVar10 = 1;
      if (0 < (longlong)iVar11) {
        do {
          uVar8 = (ulonglong)pbVar9[lVar10] & 0xffffffffffffffc0;
          if ((char)uVar8 != -0x80) break;
          uVar8 = (ulonglong)(uVar7 << 6);
          uVar7 = pbVar9[lVar10] & 0x3f | uVar7 << 6;
          lVar10 = lVar10 + 1;
        } while (lVar10 <= iVar11);
      }
    }
    if (uVar7 == 0x45) goto LAB_1804f1d10;
  }
  if (param_3 != '\0') {
LAB_1804f1e10:
    bVar1 = *pbVar9;
    _C = (wint_t)bVar1;
    if ((char)bVar1 < '\0') {
      uVar7 = 0x40;
      iVar11 = 0;
      uVar4 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar7 < 9) break;
          uVar4 = uVar4 >> 1;
          iVar11 = iVar11 + 1;
          uVar7 = uVar7 >> 1;
        } while ((bVar1 & uVar7) != 0);
      }
      uVar4 = bVar1 & uVar4;
      _C = (wint_t)uVar4;
      lVar10 = 1;
      if (0 < (longlong)iVar11) {
        do {
          _C = (wint_t)uVar4;
          if ((pbVar9[lVar10] & 0xc0) != 0x80) break;
          uVar4 = pbVar9[lVar10] & 0x3f | uVar4 << 6;
          _C = (wint_t)uVar4;
          lVar10 = lVar10 + 1;
        } while (lVar10 <= iVar11);
      }
    }
    iVar11 = iswalpha(_C);
    uVar8 = CONCAT44(extraout_var,iVar11);
    if (iVar11 != 0) {
      bVar1 = *pbVar9;
      pbVar9 = pbVar9 + 1;
      if ((char)bVar1 < '\0') {
        bVar3 = 0x40;
        bVar2 = bVar1 & 0x40;
        while ((bVar2 != 0 && (8 < bVar3))) {
          pbVar9 = pbVar9 + 1;
          bVar3 = bVar3 >> 1;
          bVar2 = bVar1 & bVar3;
        }
      }
      goto LAB_1804f1e10;
    }
  }
  if (pbVar9 != _Src) {
    if (*_Src == 0) {
      puVar6 = (undefined4 *)&DAT_1821dbf98;
    }
    else {
      _Size = (longlong)pbVar9 - (longlong)_Src;
      puVar6 = (undefined4 *)thunk_FUN_1811316e0();
      LOCK();
      *puVar6 = 0;
      UNLOCK();
      *(size_t *)(puVar6 + 2) = _Size + 4 & 0xfffffffffffffffc;
      puVar6 = puVar6 + 4;
      memcpy(puVar6,_Src,_Size);
      *(undefined1 *)((longlong)puVar6 + _Size) = 0;
    }
    lVar10 = *param_2;
    *param_2 = (longlong)puVar6;
    _Memory = (int *)(lVar10 + -0x10);
    if ((*(uint *)(lVar10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar11 = *_Memory;
      *_Memory = *_Memory + -1;
      UNLOCK();
      if (iVar11 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
LAB_1804f1f30:
    bVar1 = *pbVar9;
    uVar8 = (ulonglong)(bVar1 - 9);
    if ((4 < (byte)(bVar1 - 9)) && (bVar1 != 0x20)) {
      uVar7 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar4 = 0x40;
        iVar11 = 0;
        uVar7 = 0x7f;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar4 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar11 = iVar11 + 1;
            uVar4 = uVar4 >> 1;
          } while ((bVar1 & uVar4) != 0);
        }
        uVar8 = 0;
        uVar7 = bVar1 & uVar7;
        lVar10 = 1;
        if (0 < (longlong)iVar11) {
          do {
            uVar8 = (ulonglong)pbVar9[lVar10] & 0xffffffffffffffc0;
            if ((char)uVar8 != -0x80) break;
            uVar8 = (ulonglong)(uVar7 << 6);
            uVar7 = pbVar9[lVar10] & 0x3f | uVar7 << 6;
            lVar10 = lVar10 + 1;
          } while (lVar10 <= iVar11);
        }
      }
      if (uVar7 != 0x2c) goto LAB_1804f1fd7;
    }
    pbVar9 = pbVar9 + 1;
    if ((char)bVar1 < '\0') {
      bVar3 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar3))) {
        pbVar9 = pbVar9 + 1;
        bVar3 = bVar3 >> 1;
        bVar2 = bVar1 & bVar3;
      }
    }
    goto LAB_1804f1f30;
  }
  uVar8 = uVar8 & 0xffffffffffffff00;
LAB_1804f1fd9:
  *param_1 = pbVar9;
  return uVar8;
}



############ FUN_ 1812487f0 size=496 ############

undefined8 * FUN_1812487f0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  byte bVar1;
  uint uVar2;
  ulonglong uVar3;
  uint uVar4;
  longlong lVar5;
  int iVar6;
  byte *pbVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  bool bVar10;
  undefined1 *local_40;
  byte *local_38;
  undefined1 *local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_38 = (byte *)*param_1;
  if (*local_38 == 0) {
    *param_2 = &DAT_1821dbf98;
  }
  else {
    local_40 = &DAT_1821dbf98;
    local_30 = (undefined1 *)0x0;
    local_28 = *(ulonglong *)(local_38 + -8);
    local_20 = 0;
    FUN_1812342b0(&local_40);
    local_30 = local_40;
    pbVar7 = local_38;
    puVar8 = local_40;
    puVar9 = local_40;
    do {
      bVar1 = *pbVar7;
      local_38 = pbVar7 + 1;
      uVar4 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar4 = 0x7f;
        uVar2 = 0x40;
        iVar6 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar2 < 9) break;
            uVar4 = uVar4 >> 1;
            iVar6 = iVar6 + 1;
            uVar2 = uVar2 >> 1;
          } while ((bVar1 & uVar2) != 0);
        }
        uVar4 = bVar1 & uVar4;
        for (; (iVar6 = iVar6 + -1, -1 < iVar6 && ((*local_38 & 0xc0) == 0x80));
            local_38 = local_38 + 1) {
          uVar4 = *local_38 & 0x3f | uVar4 << 6;
        }
      }
      pbVar7 = local_38;
      iVar6 = FUN_18049bc80(param_3);
      if (iVar6 < 0) {
        lVar5 = 1;
        if (((0x7f < uVar4) && (lVar5 = 2, 0x7ff < uVar4)) && (lVar5 = 3, 0xffff < uVar4)) {
          lVar5 = 4;
        }
        local_20 = local_20 + lVar5;
        if (local_28 < local_20) {
          uVar3 = 8;
          if (8 < local_28 >> 4) {
            uVar3 = local_28 >> 4;
          }
          local_28 = local_28 + uVar3;
          FUN_1812342b0(&local_40);
          local_30 = local_40 + ((int)puVar9 - (int)puVar8);
        }
        FUN_180493180(&local_30);
        pbVar7 = local_38;
        puVar8 = local_40;
        puVar9 = local_30;
      }
    } while (uVar4 != 0);
    *param_2 = puVar8;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar4 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar4;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_2;
}



############ FUN_ 1812a1210 size=366 ############

undefined4 * FUN_1812a1210(undefined4 *param_1,undefined8 param_2,undefined4 param_3)

{
  byte bVar1;
  undefined *puVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  byte *pbVar5;
  uint *puVar6;
  undefined **ppuVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  longlong local_res20;
  longlong local_18 [2];
  
  local_18[1] = 0xfffffffffffffffe;
  uVar3 = FUN_181248e40(param_2,local_18);
  puVar4 = (undefined8 *)FUN_181248c30(uVar3,&local_res20);
  pbVar5 = (byte *)*puVar4;
  iVar9 = 0;
  bVar1 = *pbVar5;
  do {
    if (bVar1 == 0) {
      puVar6 = (uint *)(local_res20 + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      puVar6 = (uint *)(local_18[0] + -0x10);
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar10 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
      ppuVar7 = (undefined **)&DAT_182499460;
      do {
        puVar2 = *ppuVar7;
        if ((int)puVar2 == iVar9) {
          *(char *)param_1 = (char)((ulonglong)puVar2 >> 0x20);
          *(char *)((longlong)param_1 + 1) = (char)((ulonglong)puVar2 >> 0x28);
          *(char *)((longlong)param_1 + 2) = (char)((ulonglong)puVar2 >> 0x30);
          *(char *)((longlong)param_1 + 3) = (char)((ulonglong)puVar2 >> 0x38);
          return param_1;
        }
        ppuVar7 = ppuVar7 + 1;
      } while (ppuVar7 != &juce::CustomTypeface::vftable_meta_ptr);
      *param_1 = param_3;
      return param_1;
    }
    pbVar5 = pbVar5 + 1;
    uVar10 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar8 = 0x40;
      uVar10 = 0x7f;
      iVar11 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar8 < 9) break;
          uVar10 = uVar10 >> 1;
          iVar11 = iVar11 + 1;
          uVar8 = uVar8 >> 1;
        } while ((bVar1 & uVar8) != 0);
      }
      uVar10 = bVar1 & uVar10;
      for (; (iVar11 = iVar11 + -1, -1 < iVar11 && ((*pbVar5 & 0xc0) == 0x80)); pbVar5 = pbVar5 + 1)
      {
        uVar10 = *pbVar5 & 0x3f | uVar10 << 6;
      }
    }
    iVar9 = iVar9 * 0x1f + uVar10;
    bVar1 = *pbVar5;
  } while( true );
}



############ FUN_ 1804f3560 size=43 ############

undefined8 * FUN_1804f3560(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::FileBrowserListener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f3590 size=114 ############

void FUN_1804f3590(undefined8 *param_1)

{
  void *_Memory;
  
  *param_1 = juce::DirectoryContentsList::vftable;
  param_1[7] = juce::DirectoryContentsList::vftable;
  FUN_18132e310();
  _Memory = (void *)param_1[0x14];
  if (_Memory != (void *)0x0) {
    FUN_181242dc0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  FUN_18051c700(param_1 + 0x12);
  *(undefined4 *)((longlong)param_1 + 0x9c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x12]);
}



############ FUN_ 18051c700 size=198 ############

void FUN_18051c700(longlong *param_1)

{
  void *_Dst;
  uint uVar1;
  longlong *_Memory;
  uint *_Memory_00;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar2) {
    lVar3 = (longlong)iVar2 * 8;
    lVar4 = lVar3;
    do {
      _Memory = *(longlong **)(lVar4 + *param_1);
      _Dst = (void *)(lVar3 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar2) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (longlong *)0x0) {
        _Memory_00 = (uint *)(*_Memory + -0x10);
        if ((*_Memory_00 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar3 = lVar3 + -8;
      lVar4 = lVar4 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 18132e310 size=101 ############

void FUN_18132e310(longlong param_1)

{
  void *_Memory;
  longlong lVar1;
  
  LOCK();
  *(undefined1 *)(param_1 + 0xa8) = 1;
  UNLOCK();
  if (param_1 == 0) {
    lVar1 = 0;
  }
  else {
    lVar1 = param_1 + 0x38;
  }
  FUN_1812299e0(*(undefined8 *)(param_1 + 0x58),lVar1);
  _Memory = *(void **)(param_1 + 0xa0);
  *(undefined8 *)(param_1 + 0xa0) = 0;
  if (_Memory != (void *)0x0) {
    FUN_181242dc0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return;
}



############ FUN_ 1804f3660 size=52 ############

void * FUN_1804f3660(void *param_1,ulonglong param_2)

{
  FUN_18132c7a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181218730 size=547 ############

undefined8 *
FUN_181218730(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 *param_4)

{
  uint uVar1;
  char *pcVar2;
  longlong lVar3;
  bool bVar4;
  bool bVar5;
  longlong *plVar6;
  uint *puVar7;
  char *local_78;
  char *local_70;
  longlong local_68;
  longlong local_60;
  undefined1 local_58 [8];
  undefined8 local_50;
  char **local_48;
  
  local_50 = 0xfffffffffffffffe;
  pcVar2 = (char *)*param_4;
  if (*pcVar2 == '\0') {
    local_60 = *param_2;
    if ((*(uint *)(local_60 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_60 + -0x10) = *(int *)(local_60 + -0x10) + 1;
      UNLOCK();
    }
    plVar6 = &local_60;
    bVar5 = true;
    bVar4 = false;
  }
  else {
    if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pcVar2 + -0x10) = *(int *)(pcVar2 + -0x10) + 1;
      UNLOCK();
    }
    local_48 = &local_78;
    local_78 = pcVar2;
    FUN_181232e20(&local_78,&DAT_1821db64c,&DAT_1821db64e);
    local_70 = local_78;
    if ((*(uint *)(local_78 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_78 + -0x10) = *(int *)(local_78 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(local_78 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    plVar6 = (longlong *)FUN_181232aa0(local_58,&local_70,param_2);
    local_48 = (char **)plVar6;
    FUN_181232e20(plVar6,&DAT_1821db5fc,&DAT_1821db5fd);
    local_68 = *plVar6;
    if ((*(uint *)(local_68 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_68 + -0x10) = *(int *)(local_68 + -0x10) + 1;
      UNLOCK();
    }
    puVar7 = (uint *)(*plVar6 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    plVar6 = &local_68;
    bVar5 = false;
    bVar4 = true;
  }
  *param_1 = juce::FileFilter::vftable;
  lVar3 = *plVar6;
  param_1[1] = lVar3;
  if ((*(uint *)(lVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar3 + -0x10) = *(int *)(lVar3 + -0x10) + 1;
    UNLOCK();
  }
  if ((bVar4) && (puVar7 = (uint *)(local_68 + -0x10), (*puVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  if ((bVar5) && (puVar7 = (uint *)(local_60 + -0x10), (*puVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  *param_1 = juce::WildcardFileFilter::vftable;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  FUN_181218a80(param_2);
  FUN_181218a80(param_3,param_1 + 4);
  return param_1;
}



############ FUN_ 18132c510 size=483 ############

longlong * FUN_18132c510(longlong param_1,longlong *param_2,uint param_3)

{
  longlong lVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  undefined8 *puVar7;
  uint *puVar8;
  undefined1 **ppuVar9;
  undefined1 *local_res8;
  undefined1 *local_res20;
  longlong local_48;
  longlong local_40 [3];
  
  local_40[1] = 0xfffffffffffffffe;
  local_res8 = (undefined1 *)((ulonglong)local_res8 & 0xffffffff00000000);
  bVar2 = true;
  bVar3 = true;
  bVar4 = false;
  if (((*(byte *)(param_1 + 0xf0) & 8) == 0) ||
     (puVar7 = (undefined8 *)FUN_1812dc020(param_1 + 0x2c0,&local_48), bVar4 = bVar2,
     *(char *)*puVar7 != '\0')) {
    bVar2 = bVar4;
    bVar3 = false;
  }
  if ((bVar2) && (puVar8 = (uint *)(local_48 + -0x10), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar6 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (bVar3) {
    lVar1 = *(longlong *)(param_1 + 0xf8);
    *param_2 = lVar1;
    if ((*(uint *)(lVar1 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar1 + -0x10) = *(int *)(lVar1 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    if (((*(char *)(param_1 + 0x4ac) == '\0') && ((*(byte *)(param_1 + 0x369) & 0x10) == 0)) &&
       ((*(longlong *)(param_1 + 0x2d8) == 0 || (cVar5 = FUN_18133eaa0(), cVar5 != '\0')))) {
      puVar7 = (undefined8 *)FUN_1812dc020(param_1 + 0x2c0,local_40);
      local_40[2] = *puVar7;
      FUN_181245100(param_1 + 0xf8,param_2);
      puVar8 = (uint *)(local_40[0] + -0x10);
      uVar6 = *puVar8;
    }
    else {
      if (param_3 < *(uint *)(param_1 + 0x10c)) {
        bVar3 = true;
        bVar2 = false;
        local_res20 = *(undefined1 **)(*(longlong *)(param_1 + 0x100) + (longlong)(int)param_3 * 8);
        if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
          UNLOCK();
        }
        ppuVar9 = &local_res20;
      }
      else {
        bVar3 = false;
        bVar2 = true;
        local_res8 = &DAT_1821dbf98;
        ppuVar9 = &local_res8;
      }
      *param_2 = (longlong)*ppuVar9;
      *ppuVar9 = &DAT_1821dbf98;
      if ((bVar2) && (puVar8 = (uint *)(local_res8 + -0x10), (*puVar8 & 0x30000000) == 0)) {
        LOCK();
        uVar6 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
      if (!bVar3) {
        return param_2;
      }
      puVar8 = (uint *)(local_res20 + -0x10);
      uVar6 = *puVar8;
    }
    if ((uVar6 & 0x30000000) == 0) {
      LOCK();
      uVar6 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar6 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
  }
  return param_2;
}



############ FUN_ 180506630 size=224 ############

longlong * FUN_180506630(longlong *param_1,longlong *param_2,ulonglong param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  undefined8 *puVar3;
  byte *pbVar4;
  uint *_Memory;
  longlong lVar5;
  longlong local_res20;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  if ((int)param_3 == 0) {
    lVar5 = *param_1;
    *param_2 = lVar5;
    if ((*(uint *)(lVar5 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(lVar5 + -0x10) = *(int *)(lVar5 + -0x10) + 1;
      UNLOCK();
      return param_2;
    }
  }
  else {
    puVar3 = (undefined8 *)
             FUN_181233f40(&local_res20,param_3 & 0xffffffff,param_3,param_4,0xfffffffffffffffe);
    pbVar4 = (byte *)*param_1;
    lVar5 = 0;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar4;
        pbVar4 = pbVar4 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar4 & 0xc0) != 0x80) goto LAB_1805066c5;
        do {
          pbVar4 = pbVar4 + 1;
        } while ((*pbVar4 & 0xc0) == 0x80);
        lVar5 = lVar5 + 1;
      }
      if (bVar2 == 0) break;
LAB_1805066c5:
      lVar5 = lVar5 + 1;
    }
    FUN_181231fc0(param_2,*puVar3,lVar5,puVar3,uVar6,*puVar3);
    _Memory = (uint *)(local_res20 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return param_2;
}



############ FUN_ 180506e50 size=1673 ############

void FUN_180506e50(longlong param_1,undefined8 *param_2)

{
  int iVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  undefined8 *puVar6;
  uint uVar7;
  uint *puVar8;
  byte *pbVar9;
  byte *pbVar10;
  byte *pbVar11;
  longlong lVar12;
  byte bVar13;
  ulonglong uVar14;
  longlong lVar15;
  int iVar16;
  undefined4 uVar17;
  byte *local_res10;
  longlong local_res18;
  longlong local_res20;
  undefined8 uVar18;
  
  uVar18 = 0xfffffffffffffffe;
  bVar13 = *(byte *)*param_2;
  pbVar9 = (byte *)*param_2;
  do {
    if (bVar13 == 0) {
      return;
    }
    lVar12 = 0;
    pbVar11 = pbVar9;
    if ((bVar13 == 0x20) || ((byte)(bVar13 - 9) < 5)) {
      uVar7 = (uint)bVar13;
      if ((char)bVar13 < '\0') {
        uVar7 = 0x7f;
        uVar5 = 0x40;
        iVar16 = 0;
        if ((bVar13 & 0x40) != 0) {
          do {
            if (uVar5 < 9) break;
            uVar7 = uVar7 >> 1;
            iVar16 = iVar16 + 1;
            uVar5 = uVar5 >> 1;
          } while ((bVar13 & uVar5) != 0);
        }
        uVar7 = bVar13 & uVar7;
        lVar15 = 1;
        if (0 < (longlong)iVar16) {
          do {
            if ((pbVar9[lVar15] & 0xc0) != 0x80) break;
            uVar7 = pbVar9[lVar15] & 0x3f | uVar7 << 6;
            lVar15 = lVar15 + 1;
          } while (lVar15 <= iVar16);
        }
      }
      if (uVar7 == 0xd) goto LAB_1805070b5;
      uVar14 = (ulonglong)bVar13;
      if ((char)bVar13 < '\0') {
        uVar5 = 0x7f;
        uVar7 = 0x40;
        iVar16 = 0;
        if ((bVar13 & 0x40) != 0) {
          do {
            if (uVar7 < 9) break;
            uVar5 = uVar5 >> 1;
            iVar16 = iVar16 + 1;
            uVar7 = uVar7 >> 1;
          } while ((bVar13 & uVar7) != 0);
        }
        uVar14 = (ulonglong)(bVar13 & uVar5);
        lVar15 = 1;
        if (0 < (longlong)iVar16) {
          do {
            if ((pbVar9[lVar15] & 0xc0) != 0x80) break;
            uVar14 = (ulonglong)(pbVar9[lVar15] & 0x3f | (int)uVar14 << 6);
            lVar15 = lVar15 + 1;
          } while (lVar15 <= iVar16);
        }
      }
      if ((int)uVar14 == 10) goto LAB_1805070b5;
      do {
        pbVar11 = pbVar11 + 1;
        if ((char)bVar13 < '\0') {
          bVar3 = 0x40;
          bVar2 = bVar13 & 0x40;
          while ((bVar2 != 0 && (8 < bVar3))) {
            pbVar11 = pbVar11 + 1;
            bVar3 = bVar3 >> 1;
            bVar2 = bVar13 & bVar3;
          }
        }
        lVar12 = lVar12 + 1;
        bVar13 = *pbVar11;
        if ((bVar13 != 0x20) && (4 < (byte)(bVar13 - 9))) break;
        uVar14 = (ulonglong)bVar13;
        if ((char)bVar13 < '\0') {
          uVar5 = 0x7f;
          uVar7 = 0x40;
          iVar16 = 0;
          if ((bVar13 & 0x40) != 0) {
            do {
              if (uVar7 < 9) break;
              uVar5 = uVar5 >> 1;
              iVar16 = iVar16 + 1;
              uVar7 = uVar7 >> 1;
            } while ((bVar13 & uVar7) != 0);
          }
          uVar14 = (ulonglong)(bVar13 & uVar5);
          lVar15 = 1;
          if (0 < (longlong)iVar16) {
            do {
              if ((pbVar11[lVar15] & 0xc0) != 0x80) break;
              uVar14 = (ulonglong)(pbVar11[lVar15] & 0x3f | (int)uVar14 << 6);
              lVar15 = lVar15 + 1;
            } while (lVar15 <= iVar16);
          }
        }
        if ((int)uVar14 == 0xd) break;
        uVar14 = (ulonglong)bVar13;
        if ((char)bVar13 < '\0') {
          uVar5 = 0x7f;
          uVar7 = 0x40;
          iVar16 = 0;
          if ((bVar13 & 0x40) != 0) {
            do {
              if (uVar7 < 9) break;
              uVar5 = uVar5 >> 1;
              iVar16 = iVar16 + 1;
              uVar7 = uVar7 >> 1;
            } while ((bVar13 & uVar7) != 0);
          }
          uVar14 = (ulonglong)(bVar13 & uVar5);
          lVar15 = 1;
          if (0 < (longlong)iVar16) {
            do {
              if ((pbVar11[lVar15] & 0xc0) != 0x80) break;
              uVar14 = (ulonglong)(pbVar11[lVar15] & 0x3f | (int)uVar14 << 6);
              lVar15 = lVar15 + 1;
            } while (lVar15 <= iVar16);
          }
        }
      } while ((int)uVar14 != 10);
    }
    else {
LAB_1805070b5:
      uVar14 = (ulonglong)bVar13;
      if ((char)bVar13 < '\0') {
        uVar5 = 0x7f;
        uVar7 = 0x40;
        iVar16 = 0;
        if ((bVar13 & 0x40) != 0) {
          do {
            if (uVar7 < 9) break;
            uVar5 = uVar5 >> 1;
            iVar16 = iVar16 + 1;
            uVar7 = uVar7 >> 1;
          } while ((bVar13 & uVar7) != 0);
        }
        uVar14 = (ulonglong)(bVar13 & uVar5);
        lVar15 = 1;
        if (0 < (longlong)iVar16) {
          do {
            if ((pbVar9[lVar15] & 0xc0) != 0x80) break;
            uVar14 = (ulonglong)(pbVar9[lVar15] & 0x3f | (int)uVar14 << 6);
            lVar15 = lVar15 + 1;
          } while (lVar15 <= iVar16);
        }
      }
      if ((int)uVar14 == 0xd) {
        pbVar10 = pbVar9 + 1;
        pbVar11 = pbVar10;
        if ((char)bVar13 < '\0') {
          bVar3 = 0x40;
          bVar2 = bVar13 & 0x40;
          while ((bVar2 != 0 && (8 < bVar3))) {
            pbVar11 = pbVar11 + 1;
            bVar3 = bVar3 >> 1;
            bVar2 = bVar13 & bVar3;
          }
        }
        lVar12 = 1;
        bVar13 = *pbVar11;
        uVar7 = (uint)bVar13;
        if ((char)bVar13 < '\0') {
          uVar7 = 0x7f;
          uVar5 = 0x40;
          iVar16 = 0;
          if ((bVar13 & 0x40) != 0) {
            do {
              if (uVar5 < 9) break;
              uVar7 = uVar7 >> 1;
              iVar16 = iVar16 + 1;
              uVar5 = uVar5 >> 1;
            } while ((bVar13 & uVar5) != 0);
          }
          uVar7 = bVar13 & uVar7;
          uVar14 = 1;
          if (0 < (longlong)iVar16) {
            do {
              if ((pbVar11[uVar14] & 0xc0) != 0x80) break;
              uVar7 = pbVar11[uVar14] & 0x3f | uVar7 << 6;
              uVar14 = uVar14 + 1;
            } while ((longlong)uVar14 <= (longlong)iVar16);
          }
        }
        if (uVar7 == 10) {
          bVar2 = *pbVar9;
          if ((char)bVar2 < '\0') {
            bVar4 = 0x40;
            bVar3 = bVar2 & 0x40;
            while ((bVar3 != 0 && (8 < bVar4))) {
              pbVar10 = pbVar10 + 1;
              bVar4 = bVar4 >> 1;
              bVar3 = bVar2 & bVar4;
            }
          }
          pbVar11 = pbVar11 + 1;
          pbVar9 = pbVar10;
          if ((char)bVar13 < '\0') {
            bVar3 = 0x40;
            bVar2 = bVar13 & 0x40;
            while ((bVar2 != 0 && (8 < bVar3))) {
              pbVar11 = pbVar11 + 1;
              bVar3 = bVar3 >> 1;
              bVar2 = bVar13 & bVar3;
            }
          }
        }
      }
      else {
        uVar14 = (ulonglong)bVar13;
        if ((char)bVar13 < '\0') {
          uVar5 = 0x7f;
          uVar7 = 0x40;
          iVar16 = 0;
          if ((bVar13 & 0x40) != 0) {
            do {
              if (uVar7 < 9) break;
              uVar5 = uVar5 >> 1;
              iVar16 = iVar16 + 1;
              uVar7 = uVar7 >> 1;
            } while ((bVar13 & uVar7) != 0);
          }
          uVar14 = (ulonglong)(bVar13 & uVar5);
          lVar15 = 1;
          if (0 < (longlong)iVar16) {
            do {
              if ((pbVar9[lVar15] & 0xc0) != 0x80) break;
              uVar14 = (ulonglong)(pbVar9[lVar15] & 0x3f | (int)uVar14 << 6);
              lVar15 = lVar15 + 1;
            } while (lVar15 <= iVar16);
          }
        }
        if ((int)uVar14 == 10) {
          pbVar11 = pbVar9 + 1;
          if ((char)bVar13 < '\0') {
            bVar3 = 0x40;
            bVar2 = bVar13 & 0x40;
            while ((bVar2 != 0 && (8 < bVar3))) {
              pbVar11 = pbVar11 + 1;
              bVar3 = bVar3 >> 1;
              bVar2 = bVar13 & bVar3;
            }
          }
          lVar12 = 1;
        }
        else {
          while (((bVar13 != 0 && (bVar13 != 0x20)) && (4 < (byte)(bVar13 - 9)))) {
            pbVar11 = pbVar11 + 1;
            if ((char)bVar13 < '\0') {
              bVar3 = 0x40;
              bVar2 = bVar13 & 0x40;
              while ((bVar2 != 0 && (8 < bVar3))) {
                pbVar11 = pbVar11 + 1;
                bVar3 = bVar3 >> 1;
                bVar2 = bVar13 & bVar3;
              }
            }
            lVar12 = lVar12 + 1;
            bVar13 = *pbVar11;
          }
        }
      }
    }
    puVar6 = (undefined8 *)FUN_1812340b0(&local_res18,pbVar9,lVar12,uVar14,uVar18);
    pbVar9 = (byte *)*puVar6;
    *puVar6 = &DAT_1821dbf98;
    puVar8 = (uint *)(local_res18 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    if (*(int *)(param_1 + 0x20) == 0) {
      local_res10 = pbVar9;
      if ((*(uint *)(pbVar9 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pbVar9 + -0x10) = *(int *)(pbVar9 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      puVar6 = (undefined8 *)FUN_181233f40(&local_res20);
      lVar15 = 0;
      pbVar10 = pbVar9;
      while( true ) {
        while( true ) {
          bVar13 = *pbVar10;
          pbVar10 = pbVar10 + 1;
          if (-1 < (char)bVar13) break;
          if ((*pbVar10 & 0xc0) != 0x80) goto LAB_1805073a5;
          do {
            pbVar10 = pbVar10 + 1;
          } while ((*pbVar10 & 0xc0) == 0x80);
          lVar15 = lVar15 + 1;
        }
        if (bVar13 == 0) break;
LAB_1805073a5:
        lVar15 = lVar15 + 1;
      }
      FUN_181231fc0(&local_res10,*puVar6,lVar15,puVar6,uVar18,*puVar6);
      puVar8 = (uint *)(local_res20 + -0x10);
      if ((*puVar8 & 0x30000000) == 0) {
        LOCK();
        uVar7 = *puVar8;
        *puVar8 = *puVar8 - 1;
        UNLOCK();
        if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar8);
        }
      }
    }
    uVar17 = FUN_1812518d0(param_1,&local_res10);
    puVar8 = (uint *)(local_res10 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    iVar1 = *(int *)(param_1 + 0x1c);
    iVar16 = iVar1 + 1;
    if (*(int *)(param_1 + 0x18) < iVar16) {
      if (iVar16 < 0) {
        iVar16 = iVar1 + 2;
      }
      FUN_18051d4f0(param_1 + 0x10,iVar1 + 9 + (iVar16 >> 1) & 0xfffffff8);
    }
    iVar16 = *(int *)(param_1 + 0x1c);
    *(int *)(param_1 + 0x1c) = iVar16 + 1;
    puVar6 = (undefined8 *)((longlong)iVar16 * 0x10 + *(longlong *)(param_1 + 0x10));
    *puVar6 = pbVar9;
    puVar8 = (uint *)(pbVar9 + -0x10);
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      *puVar8 = *puVar8 + 1;
      UNLOCK();
    }
    *(undefined4 *)(puVar6 + 1) = uVar17;
    *(uint *)((longlong)puVar6 + 0xc) = (uint)lVar12 & 0xffff;
    if ((*puVar8 & 0x30000000) == 0) {
      LOCK();
      uVar7 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar7 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar8);
      }
    }
    bVar13 = *pbVar11;
    pbVar9 = pbVar11;
  } while( true );
}



############ FUN_ 18051d4f0 size=248 ############

void FUN_18051d4f0(longlong *param_1,int param_2)

{
  int iVar1;
  longlong lVar2;
  void *_Memory;
  longlong lVar3;
  void *pvVar4;
  int *_Memory_00;
  undefined4 *puVar5;
  int iVar6;
  longlong lVar7;
  
  if ((int)param_1[1] == param_2) {
    *(int *)(param_1 + 1) = param_2;
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Subroutine does not return */
    free((void *)*param_1);
  }
  pvVar4 = malloc((longlong)param_2 << 4);
  iVar6 = 0;
  if (0 < *(int *)((longlong)param_1 + 0xc)) {
    puVar5 = (undefined4 *)((longlong)pvVar4 + 0xc);
    lVar3 = -(longlong)pvVar4;
    lVar7 = lVar3 + -0xc;
    do {
      lVar2 = *param_1;
      *(undefined8 *)(puVar5 + -3) = *(undefined8 *)((longlong)puVar5 + lVar2 + lVar7);
      *(undefined1 **)((longlong)puVar5 + lVar2 + lVar7) = &DAT_1821dbf98;
      puVar5[-1] = *(undefined4 *)((longlong)puVar5 + lVar2 + lVar3 + -4);
      *puVar5 = *(undefined4 *)((longlong)puVar5 + lVar2 + lVar3);
      lVar2 = *(longlong *)((longlong)puVar5 + *param_1 + lVar7);
      _Memory_00 = (int *)(lVar2 + -0x10);
      if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
        LOCK();
        iVar1 = *_Memory_00;
        *_Memory_00 = *_Memory_00 + -1;
        UNLOCK();
        if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory_00);
        }
      }
      iVar6 = iVar6 + 1;
      puVar5 = puVar5 + 4;
    } while (iVar6 < *(int *)((longlong)param_1 + 0xc));
  }
  _Memory = (void *)*param_1;
  *param_1 = (longlong)pvVar4;
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18051fd30 size=379 ############

void FUN_18051fd30(longlong *param_1,int param_2,uint param_3)

{
  undefined8 uVar1;
  longlong lVar2;
  uint uVar3;
  uint *_Memory;
  longlong *plVar4;
  longlong lVar5;
  longlong *plVar6;
  ulonglong uVar7;
  int iVar8;
  ulonglong uVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  int iVar12;
  
  iVar8 = 0;
  iVar12 = (*(int *)((longlong)param_1 + 0xc) - param_2) - param_3;
  plVar6 = (longlong *)((longlong)param_2 * 0x10 + *param_1);
  plVar4 = plVar6 + (longlong)(int)param_3 * 2;
  uVar9 = (ulonglong)param_3;
  if (3 < iVar12) {
    uVar3 = (iVar12 - 4U >> 2) + 1;
    uVar7 = (ulonglong)uVar3;
    iVar8 = uVar3 * 4;
    puVar10 = (undefined4 *)((longlong)plVar6 + 0x1c);
    puVar11 = (undefined4 *)((longlong)plVar4 + 0x1c);
    do {
      lVar5 = *plVar6;
      *plVar6 = *plVar4;
      plVar6 = plVar6 + 8;
      *plVar4 = lVar5;
      plVar4 = plVar4 + 8;
      puVar10[-5] = puVar11[-5];
      puVar10[-4] = puVar11[-4];
      uVar1 = *(undefined8 *)(puVar10 + -3);
      *(undefined8 *)(puVar10 + -3) = *(undefined8 *)(puVar11 + -3);
      *(undefined8 *)(puVar11 + -3) = uVar1;
      puVar10[-1] = puVar11[-1];
      *puVar10 = *puVar11;
      uVar1 = *(undefined8 *)(puVar10 + 1);
      *(undefined8 *)(puVar10 + 1) = *(undefined8 *)(puVar11 + 1);
      *(undefined8 *)(puVar11 + 1) = uVar1;
      puVar10[3] = puVar11[3];
      puVar10[4] = puVar11[4];
      uVar1 = *(undefined8 *)(puVar10 + 5);
      *(undefined8 *)(puVar10 + 5) = *(undefined8 *)(puVar11 + 5);
      *(undefined8 *)(puVar11 + 5) = uVar1;
      puVar10[7] = puVar11[7];
      puVar10[8] = puVar11[8];
      uVar7 = uVar7 - 1;
      puVar10 = puVar10 + 0x10;
      puVar11 = puVar11 + 0x10;
    } while (uVar7 != 0);
  }
  if (iVar8 < iVar12) {
    lVar5 = (longlong)plVar4 - (longlong)plVar6;
    uVar7 = (ulonglong)(uint)(iVar12 - iVar8);
    do {
      lVar2 = *plVar6;
      *plVar6 = *(longlong *)(lVar5 + (longlong)plVar6);
      *(longlong *)(lVar5 + (longlong)plVar6) = lVar2;
      *(undefined4 *)(plVar6 + 1) = *(undefined4 *)(lVar5 + 8 + (longlong)plVar6);
      *(undefined4 *)((longlong)plVar6 + 0xc) = *(undefined4 *)(lVar5 + 0xc + (longlong)plVar6);
      plVar6 = plVar6 + 2;
      uVar7 = uVar7 - 1;
    } while (uVar7 != 0);
  }
  if (0 < (int)param_3) {
    do {
      lVar5 = *plVar6;
      plVar6 = plVar6 + 2;
      _Memory = (uint *)(lVar5 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar3 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      uVar9 = uVar9 - 1;
    } while (uVar9 != 0);
  }
  return;
}



############ FUN_ 181231fc0 size=243 ############

undefined8 * FUN_181231fc0(undefined8 *param_1,char *param_2,int param_3)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  undefined4 *puVar4;
  char *pcVar5;
  longlong lVar6;
  bool bVar7;
  
  if (param_3 < 1) {
    *param_1 = &DAT_1821dbf98;
    return param_1;
  }
  lVar6 = -1;
  do {
    lVar6 = lVar6 + 1;
  } while (param_2[lVar6] != '\0');
  puVar4 = (undefined4 *)thunk_FUN_1811316e0();
  LOCK();
  *puVar4 = 0;
  UNLOCK();
  *(ulonglong *)(puVar4 + 2) = lVar6 * param_3 + 4U & 0xfffffffffffffffc;
  pcVar5 = (char *)(puVar4 + 4);
  while (pcVar3 = pcVar5, param_3 = param_3 + -1, -1 < param_3) {
    cVar1 = *param_2;
    *pcVar3 = cVar1;
    pcVar5 = pcVar3;
    if (cVar1 != '\0') {
      do {
        cVar1 = pcVar5[(longlong)(param_2 + (1 - (longlong)pcVar3))];
        pcVar5 = pcVar5 + 1;
        *pcVar5 = cVar1;
      } while (cVar1 != '\0');
    }
  }
  *param_1 = puVar4 + 4;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar7 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar7) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return param_1;
}



############ FUN_ 1805075e0 size=1386 ############

ulonglong FUN_1805075e0(int *param_1)

{
  longlong *plVar1;
  int *piVar2;
  uint uVar3;
  byte bVar4;
  longlong lVar5;
  bool bVar6;
  undefined4 uVar7;
  wint_t wVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  longlong *plVar12;
  undefined8 uVar13;
  undefined4 extraout_var;
  ulonglong uVar14;
  uint uVar15;
  byte *pbVar16;
  uint *puVar17;
  longlong lVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  longlong local_res8;
  longlong local_res10;
  longlong local_res18;
  void *local_b0;
  undefined8 local_a8;
  
  uVar7 = DAT_1824c4620;
  fVar22 = DAT_1824c3c44;
  plVar1 = (longlong *)(param_1 + 0x16);
  uVar15 = 0;
LAB_180507640:
  if (*(longlong **)(param_1 + 8) == plVar1) {
    pbVar16 = (byte *)*plVar1;
    uVar11 = uVar15;
LAB_180507651:
    do {
      bVar4 = *pbVar16;
      pbVar16 = pbVar16 + 1;
      if ((char)bVar4 < '\0') {
        if ((*pbVar16 & 0xc0) == 0x80) {
          do {
            pbVar16 = pbVar16 + 1;
          } while ((*pbVar16 & 0xc0) == 0x80);
          uVar11 = uVar11 + 1;
          goto LAB_180507651;
        }
      }
      else if (bVar4 == 0) goto LAB_18050767e;
      uVar11 = uVar11 + 1;
    } while( true );
  }
  goto LAB_1805077ea;
  while (uVar15 = uVar15 + 1, (int)uVar15 < local_a8._4_4_) {
LAB_1805077a0:
    if ((float)param_1[0x12] <=
        (*(float *)((longlong)local_b0 + (longlong)(int)uVar15 * 0x20 + 0x18) +
        *(float *)((longlong)local_b0 + (longlong)(int)uVar15 * 0x20 + 0x10)) - fVar22) break;
  }
  if ((0 < (int)uVar15) && ((int)uVar15 <= (int)(uVar11 - iVar10))) {
    param_1[0x19] = uVar15 & 0xffff;
    lVar18 = (longlong)(int)(uVar15 - 1) * 0x20;
    fVar22 = *(float *)(lVar18 + 0x18 + (longlong)local_b0) +
             *(float *)(lVar18 + 0x10 + (longlong)local_b0);
    param_1[0x18] = (int)fVar22;
    if ((param_1[0x10] & 0x47U) == 4) {
      fVar21 = ((float)param_1[0x11] - fVar22) * DAT_1824c3d8c;
      if (fVar21 <= 0.0) {
        fVar21 = 0.0;
      }
    }
    else if ((param_1[0x10] & 0x47U) == 2) {
      fVar21 = (float)param_1[0x11] - fVar22;
      if (fVar21 <= 0.0) {
        fVar21 = 0.0;
      }
    }
    else {
      fVar21 = 0.0;
    }
    param_1[5] = (int)fVar21;
    param_1[6] = (int)(fVar21 + fVar22);
    FUN_1804aeb50(&local_b0);
                    /* WARNING: Subroutine does not return */
    free(local_b0);
  }
LAB_1805077d5:
  FUN_1804aeb50(&local_b0);
                    /* WARNING: Subroutine does not return */
  free(local_b0);
LAB_18050767e:
  iVar10 = param_1[0x19];
  if (0 < (int)(uVar11 - iVar10)) {
    plVar12 = (longlong *)FUN_1812491d0(plVar1,&local_res8);
    local_res18 = *plVar1;
    *plVar1 = *plVar12;
    *plVar12 = local_res18;
    puVar17 = (uint *)(local_res8 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    if (0 < param_1[0x19]) {
      param_1[1] = (int)((float)param_1[0x14] * (float)param_1[3] + (float)param_1[1]);
    }
    *param_1 = *param_1 + param_1[0x19];
    local_b0 = (void *)0x0;
    local_a8 = 0;
    FUN_1804aebd0(&local_b0,200);
    uVar13 = FUN_180506630(*(undefined8 *)(param_1 + 8),&local_res10,param_1[0x13]);
    FUN_1812510e0(&local_b0,*(undefined8 *)(param_1 + 10),uVar13,0,0,uVar7,0);
    puVar17 = (uint *)(local_res10 + -0x10);
    if ((*puVar17 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar17;
      *puVar17 = *puVar17 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar17);
      }
    }
    if (local_a8._4_4_ < 1) goto LAB_1805077d5;
    goto LAB_1805077a0;
  }
LAB_1805077ea:
  plVar12 = *(longlong **)(param_1 + 0xc);
  if (param_1[0xe] < *(int *)((longlong)plVar12 + 0xc)) {
    bVar6 = false;
    iVar10 = *(int *)(*(longlong *)(param_1 + 10) + 0x1c);
    iVar9 = param_1[0xf];
    if (iVar10 + -1 <= iVar9) {
      if (iVar9 < iVar10) {
        lVar18 = (longlong)iVar9 * 0x10 + *(longlong *)(*(longlong *)(param_1 + 10) + 0x10);
        wVar8 = FUN_180493050(lVar18,0);
        iVar10 = iswspace(wVar8);
        if (iVar10 == 0) {
          fVar21 = *(float *)(lVar18 + 8) + (float)param_1[6];
          iVar10 = param_1[0xe] + 1;
          if (iVar10 < *(int *)(*(longlong *)(param_1 + 0xc) + 0xc)) {
            lVar18 = (longlong)iVar10 * 8;
            fVar23 = (float)param_1[3];
            fVar24 = (float)param_1[4];
            do {
              plVar12 = *(longlong **)(lVar18 + **(longlong **)(param_1 + 0xc));
              if (*(int *)((longlong)plVar12 + 0x1c) == 0) break;
              lVar5 = plVar12[2];
              wVar8 = FUN_180493050(lVar5,0);
              iVar9 = iswspace(wVar8);
              if (iVar9 != 0) break;
              fVar21 = fVar21 + *(float *)(lVar5 + 8);
              fVar19 = *(float *)(*plVar12 + 0x28);
              if (*(float *)(*plVar12 + 0x28) <= fVar23) {
                fVar19 = fVar23;
              }
              fVar20 = (float)FUN_181251990(plVar12);
              if (fVar20 <= fVar24) {
                fVar20 = fVar24;
              }
              if ((float)param_1[0x12] <= fVar21 - fVar22) {
                param_1[3] = (int)fVar19;
                param_1[4] = (int)fVar20;
                bVar6 = true;
                break;
              }
              if (1 < *(int *)((longlong)plVar12 + 0x1c)) break;
              iVar10 = iVar10 + 1;
              lVar18 = lVar18 + 8;
              fVar23 = fVar19;
              fVar24 = fVar20;
            } while (iVar10 < *(int *)(*(longlong *)(param_1 + 0xc) + 0xc));
          }
        }
      }
      else {
        iVar10 = param_1[0xe] + 1;
        param_1[0xe] = iVar10;
        if (*(int *)((longlong)plVar12 + 0xc) <= iVar10) goto LAB_180507b0b;
        param_1[0xf] = 0;
        *(undefined8 *)(param_1 + 10) = *(undefined8 *)(*plVar12 + (longlong)iVar10 * 8);
      }
    }
    if (*(longlong *)(param_1 + 8) != 0) {
      param_1[5] = param_1[6];
      lVar18 = *(longlong *)(param_1 + 8);
      *param_1 = *param_1 + *(int *)(lVar18 + 0xc);
      iVar10 = FUN_180493050(lVar18,0);
      if ((iVar10 == 0xd) || (iVar10 = FUN_180493050(lVar18,0), iVar10 == 10)) {
        FUN_180507b50(param_1);
      }
    }
    lVar18 = *(longlong *)(*(longlong *)(param_1 + 10) + 0x10) + (longlong)param_1[0xf] * 0x10;
    *(longlong *)(param_1 + 8) = lVar18;
    fVar21 = *(float *)(lVar18 + 8) + (float)param_1[5];
    param_1[6] = (int)fVar21;
    uVar11 = param_1[0xf] + 1;
    uVar14 = (ulonglong)uVar11;
    param_1[0xf] = uVar11;
    if (((float)param_1[0x12] <= fVar21 - fVar22) || (bVar6)) {
      wVar8 = FUN_180493050(*(undefined8 *)(param_1 + 8),0);
      iVar10 = iswspace(wVar8);
      uVar14 = CONCAT44(extraout_var,iVar10);
      if (iVar10 == 0) {
        plVar12 = *(longlong **)(param_1 + 8);
        if (*(float *)(plVar12 + 1) - fVar22 < (float)param_1[0x12]) {
          FUN_180507b50(param_1);
          param_1[5] = param_1[2];
          param_1[6] = (int)((float)param_1[2] + *(float *)(*(longlong *)(param_1 + 8) + 8));
          return CONCAT71((int7)((ulonglong)*(longlong *)(param_1 + 8) >> 8),1);
        }
        if ((*(uint *)(*plVar12 + -0x10) & 0x30000000) == 0) {
          LOCK();
          piVar2 = (int *)(*plVar12 + -0x10);
          *piVar2 = *piVar2 + 1;
          UNLOCK();
        }
        LOCK();
        lVar18 = *plVar1;
        *plVar1 = *plVar12;
        UNLOCK();
        puVar17 = (uint *)(lVar18 + -0x10);
        if ((*puVar17 & 0x30000000) == 0) {
          LOCK();
          uVar11 = *puVar17;
          *puVar17 = *puVar17 - 1;
          UNLOCK();
          if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar17);
          }
        }
        param_1[0x18] = (int)plVar12[1];
        param_1[0x19] = *(int *)((longlong)plVar12 + 0xc);
        param_1[0x18] = 0;
        param_1[0x19] = 0;
        *(longlong **)(param_1 + 8) = plVar1;
        if ((float)param_1[2] <= (float)param_1[5] && (float)param_1[5] != (float)param_1[2]) {
          FUN_180507b50(param_1);
        }
        goto LAB_180507640;
      }
      fVar22 = (float)param_1[0x12];
      if ((float)param_1[6] <= (float)param_1[0x12]) {
        fVar22 = (float)param_1[6];
      }
      param_1[6] = (int)fVar22;
    }
    return CONCAT71((int7)(uVar14 >> 8),1);
  }
LAB_180507b0b:
  uVar14 = FUN_1805085b0(param_1);
  return uVar14 & 0xffffffffffffff00;
}



############ FUN_ 1812e0660 size=440 ############

float * FUN_1812e0660(longlong param_1,float *param_2,ulonglong param_3,undefined8 param_4)

{
  int iVar1;
  char cVar2;
  uint *_Memory;
  uint uVar3;
  float fVar4;
  int local_a8;
  float local_a4;
  float local_9c;
  float local_94;
  longlong local_88;
  uint local_68;
  float local_64;
  longlong local_50;
  
  iVar1 = *(int *)(param_1 + 0x2a4);
  fVar4 = 0.0;
  if ((*(char *)(param_1 + 0x1ef) == '\0') ||
     (uVar3 = (*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - *(int *)(param_1 + 0x288)) - 3,
     param_3 = (ulonglong)uVar3, 0.0 < (float)(int)uVar3)) {
    FUN_1805074f0(&local_a8,param_1,param_3,param_4,0xfffffffffffffffe);
    if (*(int *)(param_1 + 0x2b4) == 0) {
      if ((local_68 & 0x47) == 4) {
        local_94 = (local_64 - 0.0) * DAT_1824c3d8c;
        if (local_94 <= 0.0) {
          local_94 = 0.0;
        }
        local_9c = *(float *)(*(longlong *)(param_1 + 0x298) + 0x28);
        local_a4 = fVar4;
      }
      else if ((local_68 & 0x47) == 2) {
        local_94 = local_64 - 0.0;
        if (local_94 <= 0.0) {
          local_94 = 0.0;
        }
        local_9c = *(float *)(*(longlong *)(param_1 + 0x298) + 0x28);
        local_a4 = fVar4;
      }
      else {
        local_94 = 0.0;
        local_9c = *(float *)(*(longlong *)(param_1 + 0x298) + 0x28);
        local_a4 = fVar4;
      }
    }
    else {
      cVar2 = FUN_1805075e0(&local_a8);
      while (cVar2 != '\0') {
        if (iVar1 < *(int *)(local_88 + 0xc) + local_a8) {
          local_94 = (float)FUN_1805083d0(&local_a8,iVar1);
          break;
        }
        cVar2 = FUN_1805075e0();
      }
    }
    _Memory = (uint *)(local_50 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar3 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  else {
    local_94 = 0.0;
    local_9c = *(float *)(*(longlong *)(param_1 + 0x298) + 0x28);
    local_a4 = fVar4;
  }
  *param_2 = local_94;
  param_2[1] = local_a4;
  param_2[2] = 2.0;
  param_2[3] = local_9c;
  return param_2;
}



############ FUN_ 1805083d0 size=292 ############

int FUN_1805083d0(int *param_1,int param_2)

{
  uint uVar1;
  undefined8 uVar2;
  uint *_Memory;
  longlong local_res8;
  void *local_30;
  undefined8 local_28;
  
  if (param_2 <= *param_1) {
    return param_1[5];
  }
  if (param_2 < *(int *)(*(longlong *)(param_1 + 8) + 0xc) + *param_1) {
    local_30 = (void *)0x0;
    local_28 = 0;
    FUN_1804aebd0(&local_30,200);
    uVar2 = FUN_180506630(*(undefined8 *)(param_1 + 8),&local_res8,param_1[0x13]);
    FUN_1812510e0(&local_30,*(undefined8 *)(param_1 + 10),uVar2,param_1[5],0,DAT_1824c4620,0);
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    FUN_1804aeb50(&local_30);
                    /* WARNING: Subroutine does not return */
    free(local_30);
  }
  return param_1[6];
}



############ FUN_ 1812e0940 size=410 ############

void FUN_1812e0940(longlong param_1,ulonglong param_2)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  uint *_Memory;
  int iVar5;
  int local_98;
  float local_94;
  float local_8c;
  longlong local_78;
  longlong local_40;
  undefined8 local_28;
  undefined4 local_18;
  int iStack_14;
  undefined4 uStack_10;
  int iStack_c;
  
  local_28 = 0xfffffffffffffffe;
  iVar3 = (int)(param_2 >> 0x20);
  if (((int)param_2 != iVar3) &&
     ((*(char *)(param_1 + 0x1ef) == '\0' ||
      (0.0 < (float)((*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - *(int *)(param_1 + 0x288)) +
                    -3))))) {
    FUN_1805074f0(&local_98,param_1);
    cVar2 = FUN_1805075e0(&local_98);
    while (cVar2 != '\0') {
      if ((int)param_2 < *(int *)(local_78 + 0xc) + local_98) {
        FUN_1805083d0(&local_98,param_2 & 0xffffffff);
        break;
      }
      cVar2 = FUN_1805075e0();
    }
    iVar5 = (int)local_94;
    iVar4 = FUN_1812dbb90(param_1);
    if (iVar3 < iVar4) {
      cVar2 = FUN_1805075e0(&local_98);
      while (cVar2 != '\0') {
        if (iVar3 < *(int *)(local_78 + 0xc) + local_98) {
          FUN_1805083d0(&local_98,iVar3);
          break;
        }
        cVar2 = FUN_1805075e0();
      }
      iStack_c = (int)(local_8c * DAT_1824c41e0 + local_94);
    }
    else {
      iStack_c = *(int *)(*(longlong *)(param_1 + 0x1d0) + 0x2c);
    }
    uStack_10 = *(undefined4 *)(*(longlong *)(param_1 + 0x1d0) + 0x28);
    iStack_c = iStack_c - iVar5;
    local_18 = 0;
    iStack_14 = iVar5;
    FUN_181342a30(*(longlong *)(param_1 + 0x1d0),&local_18);
    _Memory = (uint *)(local_40 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 1812e0e60 size=235 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e0e60(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined **local_28;
  undefined8 local_20;
  ulonglong local_18;
  
  local_38[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  FUN_1812e0480();
  if ((*(int *)(param_1 + 0x30c) != 0) || (*(longlong *)(param_1 + 0x100) != 0)) {
    FUN_1813416b0(param_1,0x10003001);
  }
  if (1 < *(int *)(*(longlong *)(param_1 + 0x2d8) + 8)) {
    *(undefined1 *)(param_1 + 0x1f8) = 0;
    puVar2 = (undefined8 *)FUN_1812dc020(param_1,local_38);
    local_28 = &PTR_vftable_18262b560;
    local_20 = *puVar2;
    *puVar2 = &DAT_1821dbf98;
    FUN_1813516e0(param_1 + 0x2d8,&local_28);
    (**(code **)(*local_28 + 0xb0))(local_28,&local_20);
    _Memory = (uint *)(local_38[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
}



############ FUN_ 181352640 size=135 ############

void FUN_181352640(longlong param_1)

{
  int *_Memory;
  int iVar1;
  longlong lVar2;
  uint uVar3;
  bool bVar4;
  
  *(undefined1 *)(param_1 + 0x70) = 1;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *(longlong *)(param_1 + 0x58);
  *(longlong *)(param_1 + 0x58) = (longlong)&DAT_1821dbf98;
  UNLOCK();
  _Memory = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return;
}



############ FUN_ 1812e1050 size=180 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812e1050(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  undefined **local_28;
  undefined8 local_20;
  ulonglong local_18;
  
  local_38[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  if (*(char *)(param_1 + 0x1f8) != '\0') {
    *(undefined1 *)(param_1 + 0x1f8) = 0;
    puVar2 = (undefined8 *)FUN_1812dc020(param_1,local_38);
    local_28 = &PTR_vftable_18262b560;
    local_20 = *puVar2;
    *puVar2 = &DAT_1821dbf98;
    FUN_1813516e0(param_1 + 0x2d8,&local_28);
    (**(code **)(*local_28 + 0xb0))(local_28,&local_20);
    _Memory = (uint *)(local_38[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
}



############ FUN_ 18051dab0 size=82 ############

void FUN_18051dab0(longlong *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  if ((*param_1 != 0) && (puVar3 = *(undefined8 **)(*param_1 + 0x10), puVar3 != (undefined8 *)0x0))
  {
    (**(code **)*puVar3)(puVar3,1);
  }
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18132e000 size=207 ############

undefined8 FUN_18132e000(longlong param_1,uint param_2,longlong *param_3)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  int *piVar4;
  undefined8 uVar5;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 100));
  if ((param_2 < *(uint *)(param_1 + 0x9c)) &&
     (plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x90) + (longlong)(int)param_2 * 8),
     plVar3 != (longlong *)0x0)) {
    if ((*(uint *)(*plVar3 + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar4 = (int *)(*plVar3 + -0x10);
      *piVar4 = *piVar4 + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *param_3;
    *param_3 = *plVar3;
    UNLOCK();
    piVar4 = (int *)(lVar2 + -0x10);
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar1 = *piVar4;
      *piVar4 = *piVar4 + -1;
      UNLOCK();
      if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar4);
      }
    }
    param_3[1] = plVar3[1];
    param_3[2] = plVar3[2];
    param_3[3] = plVar3[3];
    *(char *)(param_3 + 4) = (char)plVar3[4];
    uVar5 = 1;
    *(undefined1 *)((longlong)param_3 + 0x21) = *(undefined1 *)((longlong)plVar3 + 0x21);
  }
  else {
    uVar5 = 0;
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 100));
  return uVar5;
}



############ FUN_ 18051fa90 size=556 ############

longlong FUN_18051fa90(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  void *_Memory;
  longlong lVar9;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  lVar8 = *param_1;
  lVar7 = (param_1[1] - lVar8) / 0x88;
  if (lVar7 == 0x1e1e1e1e1e1e1e1) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar7 + 1;
  uVar3 = (param_1[2] - lVar8) / 0x88;
  uVar4 = uVar1;
  if ((uVar3 <= 0x1e1e1e1e1e1e1e1 - (uVar3 >> 1)) && (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  lVar7 = uVar4 * 0x88;
  if (0x1e1e1e1e1e1e1e1 < uVar4) {
    lVar7 = -1;
  }
  lVar5 = FUN_180480500(lVar7);
  lVar6 = ((param_2 - lVar8) / 0x88) * 0x88;
  lVar8 = lVar6 + lVar5 + 0x88;
  lVar7 = lVar8;
  lVar9 = lVar5;
  FUN_181348200(lVar6 + lVar5,param_3);
  if (param_2 == param_1[1]) {
    FUN_180520d10(*param_1,param_1[1],lVar5,param_1);
  }
  else {
    FUN_18051ff60(param_1,*param_1,param_2,lVar5,lVar6,lVar7,lVar9,uVar10);
    FUN_18051ff60(param_1,param_2,param_1[1],lVar8);
  }
  lVar8 = *param_1;
  if (lVar8 != 0) {
    lVar7 = param_1[1];
    for (; lVar8 != lVar7; lVar8 = lVar8 + 0x88) {
      FUN_1804d80a0(lVar8);
    }
    pvVar2 = (void *)*param_1;
    _Memory = pvVar2;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x88) * 0x88)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar5;
  param_1[1] = uVar1 * 0x88 + lVar5;
  param_1[2] = uVar4 * 0x88 + lVar5;
  return *param_1 + lVar6;
}



############ FUN_ 1813486a0 size=356 ############

void FUN_1813486a0(longlong param_1,undefined4 param_2,longlong *param_3,undefined1 param_4,
                  undefined1 param_5)

{
  longlong lVar1;
  uint uVar2;
  undefined8 uVar3;
  uint *_Memory;
  bool bVar4;
  longlong local_138;
  undefined4 local_130;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined8 uStack_e0;
  undefined8 local_d8;
  undefined8 uStack_d0;
  undefined8 local_c8;
  undefined1 *local_c0;
  undefined4 local_b8;
  undefined1 local_b4;
  undefined1 local_b3;
  undefined2 local_b2;
  undefined1 local_a8 [144];
  
  local_138 = *param_3;
  *param_3 = (longlong)&DAT_1821dbf98;
  local_f0 = 0;
  local_e8 = 0;
  uStack_e0 = 0;
  local_d8 = 0;
  uStack_d0 = 0;
  local_c8 = 0;
  local_c0 = &DAT_1821dbf98;
  local_b8 = 0;
  local_b2 = 0;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  local_b3 = param_5;
  local_130 = param_2;
  local_b4 = param_4;
  uVar3 = FUN_181348200(local_a8,&local_138);
  lVar1 = *(longlong *)(param_1 + 8);
  if (*(longlong *)(param_1 + 0x10) == lVar1) {
    FUN_18051fa90(param_1,lVar1,uVar3);
  }
  else {
    FUN_181348200(lVar1,uVar3);
    *(longlong *)(param_1 + 8) = *(longlong *)(param_1 + 8) + 0x88;
  }
  FUN_1804d80a0(uVar3);
  FUN_1804d80a0(&local_138);
  _Memory = (uint *)(*param_3 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 181241c10 size=131 ############

undefined8 FUN_181241c10(longlong *param_1)

{
  int *_Memory;
  int iVar1;
  longlong *plVar2;
  undefined8 uVar3;
  bool bVar4;
  undefined4 local_res8;
  undefined4 uStackX_c;
  
  bVar4 = false;
  local_res8 = 0;
  if (*(char *)*param_1 == '\0') {
LAB_181241c54:
    uVar3 = 0;
  }
  else {
    plVar2 = (longlong *)FUN_181241230(param_1,&local_res8);
    bVar4 = true;
    if (*param_1 != *plVar2) {
      iVar1 = FUN_18049bb30(*param_1);
      if (iVar1 != 0) goto LAB_181241c54;
    }
    uVar3 = 1;
  }
  if ((bVar4) &&
     (_Memory = (int *)(CONCAT44(uStackX_c,local_res8) + -0x10),
     (*(uint *)(CONCAT44(uStackX_c,local_res8) + -0x10) & 0x30000000) == 0)) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return uVar3;
}



############ FUN_ 1804f3c70 size=126 ############

undefined8 * FUN_1804f3c70(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::FileChooser::NonNative::vftable;
  FUN_181343150(param_1 + 0x156,0,param_3,param_4,0xfffffffffffffffe);
  FUN_1813292f0(param_1 + 0x156);
  FUN_18132c7a0(param_1 + 9);
  FUN_1812186b0(param_1 + 3);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f3d10 size=62 ############

undefined8 * FUN_1804f3d10(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::FilePreviewComponent::vftable;
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f4630 size=52 ############

void * FUN_1804f4630(void *param_1,ulonglong param_2)

{
  FUN_1813292f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f4670 size=217 ############

void FUN_1804f4670(undefined8 *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::FileListComponent::vftable;
  param_1[0x16] = juce::FileListComponent::vftable;
  param_1[0x21] = juce::FileListComponent::vftable;
  param_1[0x25] = juce::FileListComponent::vftable;
  param_1[0x26] = juce::FileListComponent::vftable;
  FUN_1812a72f0(param_1[0x22]);
  puVar2 = (uint *)(param_1[0x28] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0x27] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  param_1[0x21] = juce::DirectoryContentsDisplayComponent::vftable;
  *(undefined4 *)((longlong)param_1 + 0x124) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x23]);
}



############ FUN_ 1804f4780 size=292 ############

void FUN_1804f4780(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  *param_1 = juce::FileListComponent::ItemComponent::vftable;
  param_1[0x16] = juce::FileListComponent::ItemComponent::vftable;
  param_1[0x18] = juce::FileListComponent::ItemComponent::vftable;
  FUN_1812299e0(param_1[0x1b]);
  puVar4 = (undefined8 *)param_1[0x1f];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar5 = (uint *)(param_1[0x1e] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[0x1d] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[0x1c] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  param_1[0x18] = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[0x19] + 0x18) = 0;
  UNLOCK();
  puVar4 = (undefined8 *)param_1[0x19];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 1804f5070 size=748 ############

void FUN_1804f5070(longlong param_1,char param_2)

{
  uint *_Memory;
  int *piVar1;
  byte bVar2;
  int iVar3;
  char cVar4;
  byte *pbVar5;
  undefined8 *puVar6;
  uint uVar7;
  uint *_Memory_00;
  uint uVar8;
  int iVar9;
  undefined8 *puVar10;
  int iVar11;
  bool bVar12;
  undefined8 *local_res18;
  byte *local_res20;
  undefined8 *local_50;
  undefined8 local_48;
  undefined8 *local_40;
  
  local_48 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0xf8) != 0) {
    return;
  }
  local_res20 = *(byte **)(param_1 + 0xe0);
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_181232e20(&local_res20,"_iconCacheSalt","");
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  _Memory_00 = (uint *)(local_res20 + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  bVar2 = *local_res20;
  iVar9 = 0;
  pbVar5 = local_res20;
  while (bVar2 != 0) {
    bVar2 = *pbVar5;
    pbVar5 = pbVar5 + 1;
    uVar8 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar8 = 0x7f;
      uVar7 = 0x40;
      iVar11 = 0;
      iVar3 = 0;
      if ((bVar2 & 0x40) != 0) {
        do {
          iVar11 = iVar3;
          if (uVar7 < 9) break;
          uVar8 = uVar8 >> 1;
          iVar11 = iVar11 + 1;
          uVar7 = uVar7 >> 1;
          iVar3 = iVar11;
        } while ((bVar2 & uVar7) != 0);
      }
      uVar8 = bVar2 & uVar8;
      for (; (iVar11 = iVar11 + -1, -1 < iVar11 && ((*pbVar5 & 0xc0) == 0x80)); pbVar5 = pbVar5 + 1)
      {
        uVar8 = *pbVar5 & 0x3f | uVar8 << 6;
      }
    }
    iVar9 = iVar9 * 0x1f + uVar8;
    bVar2 = *pbVar5;
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar8 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18128fa50(&local_res18,(longlong)iVar9);
  puVar6 = local_res18;
  if ((local_res18 == (undefined8 *)0x0) && (param_2 == '\0')) {
    puVar6 = (undefined8 *)FUN_1812c5270(&local_50,param_1 + 0xe0);
    local_40 = local_res18;
    local_res18 = (undefined8 *)*puVar6;
    *puVar6 = 0;
    if (local_50 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_50 + 1);
      iVar11 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar11 == 1) {
        (**(code **)*local_50)(local_50,1);
      }
    }
    puVar6 = local_res18;
    if (local_res18 != (undefined8 *)0x0) {
      FUN_18128f8e0(&local_res18,(longlong)iVar9);
    }
  }
  puVar10 = (undefined8 *)0x0;
  if (puVar6 == (undefined8 *)0x0) goto LAB_1804f5323;
  if (puVar6 == (undefined8 *)0x0) {
    puVar6 = *(undefined8 **)(param_1 + 0xf8);
    *(undefined8 *)(param_1 + 0xf8) = 0;
LAB_1804f52ce:
    if (puVar6 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar6 + 1);
      iVar9 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar9 == 1) {
        (**(code **)*puVar6)(puVar6,1);
      }
    }
  }
  else if (*(undefined8 **)(param_1 + 0xf8) != puVar6) {
    LOCK();
    *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
    UNLOCK();
    puVar6 = *(undefined8 **)(param_1 + 0xf8);
    *(undefined8 **)(param_1 + 0xf8) = local_res18;
    goto LAB_1804f52ce;
  }
  piVar1 = (int *)(*(longlong *)(param_1 + 200) + 0x18);
  LOCK();
  bVar12 = *piVar1 == 0;
  if (bVar12) {
    *piVar1 = 1;
  }
  UNLOCK();
  puVar10 = local_res18;
  if ((bVar12) &&
     (cVar4 = FUN_1812a6720(*(undefined8 *)(param_1 + 200)), puVar10 = local_res18, cVar4 == '\0'))
  {
    LOCK();
    *(undefined4 *)(*(longlong *)(param_1 + 200) + 0x18) = 0;
    UNLOCK();
  }
LAB_1804f5323:
  if (puVar10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar10 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_res18)(local_res18,1);
    }
  }
  return;
}



############ FUN_ 1804f5360 size=52 ############

void * FUN_1804f5360(void *param_1,ulonglong param_2)

{
  FUN_1804f4780();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f53a0 size=52 ############

void * FUN_1804f53a0(void *param_1,ulonglong param_2)

{
  FUN_1813272c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813272c0 size=133 ############

void FUN_1813272c0(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::FilenameComponent::vftable;
  param_1[0x16] = juce::FilenameComponent::vftable;
  param_1[0x18] = juce::FilenameComponent::vftable;
  param_1[0x19] = juce::FilenameComponent::vftable;
  _Memory = (uint *)(param_1[0x55] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined4 *)((longlong)param_1 + 0x2a4) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x53]);
}



############ FUN_ 1804f53e0 size=52 ############

void * FUN_1804f53e0(void *param_1,ulonglong param_2)

{
  FUN_181345580();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f5720 size=406 ############

void FUN_1804f5720(undefined8 *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  *param_1 = juce::FileListTreeItem::vftable;
  param_1[9] = juce::FileListTreeItem::vftable;
  param_1[0xb] = juce::FileListTreeItem::vftable;
  param_1[0xd] = juce::FileListTreeItem::vftable;
  FUN_1812299e0(param_1[0x15]);
  FUN_1812d7200(param_1);
  FUN_1804f5a70(param_1);
  puVar5 = (uint *)(param_1[0x1e] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(param_1[0x1d] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar4 = (undefined8 *)param_1[0x1c];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x16));
  if (*(char *)(param_1 + 0x13) == '\0') {
    param_1[0x12] = 0;
  }
  else {
    puVar4 = (undefined8 *)param_1[0x12];
    param_1[0x12] = 0;
    if (puVar4 == (undefined8 *)0x0) goto LAB_1804f5841;
    (**(code **)*puVar4)(puVar4,1);
  }
  puVar4 = (undefined8 *)param_1[0x12];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
LAB_1804f5841:
  puVar5 = (uint *)(param_1[0xe] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  param_1[0xb] = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(param_1[0xc] + 0x18) = 0;
  UNLOCK();
  puVar4 = (undefined8 *)param_1[0xc];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  *param_1 = juce::TreeViewItem::vftable;
  FUN_180485f00(param_1 + 3);
  return;
}



############ FUN_ 1804f6220 size=762 ############

void FUN_1804f6220(longlong param_1,char param_2)

{
  uint *_Memory;
  int *piVar1;
  byte bVar2;
  int iVar3;
  char cVar4;
  byte *pbVar5;
  undefined8 *puVar6;
  uint uVar7;
  uint *_Memory_00;
  uint uVar8;
  int iVar9;
  undefined8 *puVar10;
  int iVar11;
  bool bVar12;
  undefined8 *local_res18;
  byte *local_res20;
  undefined8 *local_50;
  undefined8 local_48;
  undefined8 *local_40;
  
  local_48 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0xe0) != 0) {
    return;
  }
  local_res20 = *(byte **)(param_1 + 0x70);
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_181232e20(&local_res20,"_iconCacheSalt","");
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  _Memory_00 = (uint *)(local_res20 + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar8 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  bVar2 = *local_res20;
  iVar9 = 0;
  pbVar5 = local_res20;
  while (bVar2 != 0) {
    bVar2 = *pbVar5;
    pbVar5 = pbVar5 + 1;
    uVar8 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar8 = 0x7f;
      uVar7 = 0x40;
      iVar11 = 0;
      iVar3 = 0;
      if ((bVar2 & 0x40) != 0) {
        do {
          iVar11 = iVar3;
          if (uVar7 < 9) break;
          uVar8 = uVar8 >> 1;
          iVar11 = iVar11 + 1;
          uVar7 = uVar7 >> 1;
          iVar3 = iVar11;
        } while ((bVar2 & uVar7) != 0);
      }
      uVar8 = bVar2 & uVar8;
      for (; (iVar11 = iVar11 + -1, -1 < iVar11 && ((*pbVar5 & 0xc0) == 0x80)); pbVar5 = pbVar5 + 1)
      {
        uVar8 = *pbVar5 & 0x3f | uVar8 << 6;
      }
    }
    iVar9 = iVar9 * 0x1f + uVar8;
    bVar2 = *pbVar5;
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar8 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar8 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18128fa50(&local_res18,(longlong)iVar9);
  puVar6 = local_res18;
  if ((local_res18 == (undefined8 *)0x0) && (param_2 == '\0')) {
    puVar6 = (undefined8 *)FUN_1812c5270(&local_50,param_1 + 0x70);
    local_40 = local_res18;
    local_res18 = (undefined8 *)*puVar6;
    *puVar6 = 0;
    if (local_50 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(local_50 + 1);
      iVar11 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar11 == 1) {
        (**(code **)*local_50)(local_50,1);
      }
    }
    puVar6 = local_res18;
    if (local_res18 != (undefined8 *)0x0) {
      FUN_18128f8e0(&local_res18,(longlong)iVar9);
    }
  }
  puVar10 = (undefined8 *)0x0;
  if (puVar6 == (undefined8 *)0x0) goto LAB_1804f64e1;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb0));
  if (puVar6 == (undefined8 *)0x0) {
    puVar6 = *(undefined8 **)(param_1 + 0xe0);
    *(undefined8 *)(param_1 + 0xe0) = 0;
LAB_1804f6488:
    if (puVar6 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar6 + 1);
      iVar9 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar9 == 1) {
        (**(code **)*puVar6)(puVar6,1);
      }
    }
  }
  else if (*(undefined8 **)(param_1 + 0xe0) != puVar6) {
    LOCK();
    *(int *)(puVar6 + 1) = *(int *)(puVar6 + 1) + 1;
    UNLOCK();
    puVar6 = *(undefined8 **)(param_1 + 0xe0);
    *(undefined8 **)(param_1 + 0xe0) = local_res18;
    goto LAB_1804f6488;
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb0));
  piVar1 = (int *)(*(longlong *)(param_1 + 0x60) + 0x18);
  LOCK();
  bVar12 = *piVar1 == 0;
  if (bVar12) {
    *piVar1 = 1;
  }
  UNLOCK();
  puVar10 = local_res18;
  if ((bVar12) &&
     (cVar4 = FUN_1812a6720(*(undefined8 *)(param_1 + 0x60)), puVar10 = local_res18, cVar4 == '\0'))
  {
    LOCK();
    *(undefined4 *)(*(longlong *)(param_1 + 0x60) + 0x18) = 0;
    UNLOCK();
  }
LAB_1804f64e1:
  if (puVar10 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar10 + 1);
    iVar9 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar9 == 1) {
      (**(code **)*local_res18)(local_res18,1);
    }
  }
  return;
}



############ FUN_ 1804f6520 size=52 ############

void * FUN_1804f6520(void *param_1,ulonglong param_2)

{
  FUN_1804f5720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f6560 size=213 ############

void FUN_1804f6560(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = juce::FileTreeComponent::vftable;
  param_1[0x16] = juce::FileTreeComponent::vftable;
  param_1[0x18] = juce::FileTreeComponent::vftable;
  param_1[0x19] = juce::FileTreeComponent::vftable;
  param_1[0x26] = juce::FileTreeComponent::vftable;
  puVar2 = (undefined8 *)param_1[0x21];
  FUN_1812d8df0(param_1,0,param_3,param_4,0xfffffffffffffffe);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(param_1[0x2a] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x26] = juce::DirectoryContentsDisplayComponent::vftable;
  *(undefined4 *)((longlong)param_1 + 0x14c) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x28]);
}



############ FUN_ 1804f6670 size=249 ############

undefined8 * FUN_1804f6670(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *puVar5;
  
  *param_1 = juce::ImagePreviewComponent::vftable;
  param_1[0x16] = juce::ImagePreviewComponent::vftable;
  puVar5 = (uint *)(param_1[0x1b] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar4 = (undefined8 *)param_1[0x1a];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar5 = (uint *)(param_1[0x19] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  param_1[0x16] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x16);
  *param_1 = juce::FilePreviewComponent::vftable;
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f72f0 size=93 ############

void * FUN_1804f72f0(void *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 0xb0);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7350 size=52 ############

void * FUN_1804f7350(void *param_1,ulonglong param_2)

{
  FUN_181324040();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7390 size=43 ############

undefined8 * FUN_1804f7390(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComponentBoundsConstrainer::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f73c0 size=117 ############

undefined8 * FUN_1804f73c0(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::ComponentBuilder::vftable;
  FUN_181351090(param_1 + 1,param_1);
  puVar1 = (undefined8 *)param_1[6];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_180485f00(param_1 + 4);
  FUN_181352e50(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7440 size=96 ############

undefined8 * FUN_1804f7440(undefined8 *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::ComponentBuilder::TypeHandler::vftable;
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f74a0 size=52 ############

void * FUN_1804f74a0(void *param_1,ulonglong param_2)

{
  FUN_181322ab0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7c90 size=128 ############

undefined8 * FUN_1804f7c90(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::ConcertinaPanel::vftable;
  FUN_181324040(param_1 + 0x19);
  FUN_180485f00(param_1 + 0x17);
  puVar1 = (undefined8 *)param_1[0x16];
  if (puVar1 != (undefined8 *)0x0) {
    *(undefined4 *)((longlong)puVar1 + 0xc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)*puVar1);
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7d20 size=107 ############

undefined8 * FUN_1804f7d20(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::GroupComponent::vftable;
  _Memory = (uint *)(param_1[0x16] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7d90 size=62 ############

undefined8 * FUN_1804f7d90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::MultiDocumentPanelWindow::vftable;
  FUN_1812d0960();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7e40 size=52 ############

void * FUN_1804f7e40(void *param_1,ulonglong param_2)

{
  FUN_181318870();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181319980 size=379 ############

void FUN_181319980(longlong *param_1,uint param_2)

{
  char cVar1;
  uint *_Memory;
  uint uVar2;
  longlong lVar3;
  bool bVar4;
  undefined1 *local_res8;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  if (*(uint *)(param_1 + 0x21) != param_2) {
    if (*(uint *)((longlong)param_1 + 0xf4) <= param_2) {
      param_2 = 0xffffffff;
    }
    *(uint *)(param_1 + 0x21) = param_2;
    uVar2 = 0;
    if (0 < (int)*(uint *)((longlong)param_1 + 0xf4)) {
      lVar3 = 0;
      do {
        FUN_181337080(**(undefined8 **)(lVar3 + param_1[0x1d]),uVar2 == param_2,0,0,uVar5);
        uVar2 = uVar2 + 1;
        lVar3 = lVar3 + 8;
      } while ((int)uVar2 < *(int *)((longlong)param_1 + 0xf4));
    }
    if (*(code **)(*param_1 + 0x108) == thunk_FUN_181319110) {
      FUN_181319110();
    }
    else {
      (**(code **)(*param_1 + 0x108))(param_1);
    }
    if ((char)param_1[0x1c] != '\0') {
      LOCK();
      bVar4 = *(int *)(param_1[0x18] + 0x18) == 0;
      if (bVar4) {
        *(int *)(param_1[0x18] + 0x18) = 1;
      }
      UNLOCK();
      if ((bVar4) && (cVar1 = FUN_1812a6720(param_1[0x18]), cVar1 == '\0')) {
        LOCK();
        *(undefined4 *)(param_1[0x18] + 0x18) = 0;
        UNLOCK();
      }
    }
    if ((*(uint *)(param_1 + 0x21) < *(uint *)((longlong)param_1 + 0xf4)) &&
       (lVar3 = *(longlong *)(param_1[0x1d] + (longlong)(int)*(uint *)(param_1 + 0x21) * 8),
       lVar3 != 0)) {
      local_res8 = *(undefined1 **)(lVar3 + 8);
      if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
        UNLOCK();
      }
    }
    else {
      local_res8 = &DAT_1821dbf98;
    }
    (**(code **)(*param_1 + 0x158))(param_1,param_2,&local_res8);
    _Memory = (uint *)(local_res8 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar2 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 181321a10 size=230 ############

undefined1 FUN_181321a10(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint *_Memory;
  longlong *plVar1;
  uint uVar2;
  undefined1 uVar3;
  longlong lVar4;
  longlong *plVar5;
  longlong local_res8;
  char *local_res10;
  LPCRITICAL_SECTION local_res18;
  longlong local_res20;
  undefined8 uVar6;
  
  uVar6 = 0xfffffffffffffffe;
  lVar4 = FUN_18122bf10();
  lpCriticalSection = (LPCRITICAL_SECTION)(lVar4 + 0x10);
  local_res18 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  FUN_18122c130(lVar4);
  local_res10 = "mdiDocumentDelete_";
  FUN_181211b90(&local_res8,lVar4,&local_res10,param_4,uVar6);
  LeaveCriticalSection(lpCriticalSection);
  plVar5 = *(longlong **)(param_1 + 0x90);
  plVar1 = plVar5 + (longlong)*(int *)(param_1 + 0x9c) * 3;
  do {
    if (plVar5 == plVar1) {
LAB_181321ab1:
      plVar5 = (longlong *)FUN_181244160();
LAB_181321ab6:
      uVar3 = (**(code **)(*(longlong *)*plVar5 + 0x28))((longlong *)*plVar5,plVar5 + 1);
      _Memory = (uint *)(local_res8 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar2 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      return uVar3;
    }
    local_res20 = *plVar5;
    if (local_res20 == local_res8) {
      plVar5 = plVar5 + 1;
      if (plVar5 != (longlong *)0x0) goto LAB_181321ab6;
      goto LAB_181321ab1;
    }
    plVar5 = plVar5 + 3;
  } while( true );
}



############ FUN_ 1804f7f60 size=103 ############

undefined8 * FUN_1804f7f60(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::ResizableBorderComponent::vftable;
  puVar3 = (undefined8 *)param_1[0x16];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f7fd0 size=103 ############

undefined8 * FUN_1804f7fd0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::ResizableCornerComponent::vftable;
  puVar3 = (undefined8 *)param_1[0x17];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8040 size=103 ############

undefined8 * FUN_1804f8040(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::ResizableEdgeComponent::vftable;
  puVar3 = (undefined8 *)param_1[0x16];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f80b0 size=168 ############

undefined8 *
FUN_1804f80b0(undefined8 *param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined1 *local_res8;
  
  local_res8 = &DAT_1821dbf98;
  FUN_1813379d0(param_1,&local_res8,param_3,param_4,0xfffffffffffffffe);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = juce::ScrollBar::ScrollbarButton::vftable;
  param_1[0x16] = juce::ScrollBar::ScrollbarButton::vftable;
  *(undefined4 *)(param_1 + 0x39) = param_2;
  param_1[0x3a] = param_3;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  return param_1;
}



############ FUN_ 1804f8250 size=52 ############

void * FUN_1804f8250(void *param_1,ulonglong param_2)

{
  FUN_181337760();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8290 size=52 ############

void * FUN_1804f8290(void *param_1,ulonglong param_2)

{
  FUN_18131e840();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f82d0 size=52 ############

void * FUN_1804f82d0(void *param_1,ulonglong param_2)

{
  FUN_18131d0b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8310 size=62 ############

undefined8 * FUN_1804f8310(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::StretchableLayoutResizerBar::vftable;
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8350 size=102 ############

undefined8 * FUN_1804f8350(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::TabBarButton::vftable;
  param_1[0x16] = juce::TabBarButton::vftable;
  puVar1 = (undefined8 *)param_1[0x3b];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_181337760(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8450 size=52 ############

void * FUN_1804f8450(void *param_1,ulonglong param_2)

{
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8490 size=52 ############

void * FUN_1804f8490(void *param_1,ulonglong param_2)

{
  FUN_18131a000();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8590 size=52 ############

void * FUN_1804f8590(void *param_1,ulonglong param_2)

{
  FUN_18131a000();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f85f0 size=52 ############

void * FUN_1804f85f0(void *param_1,ulonglong param_2)

{
  FUN_18134a530();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8f20 size=52 ############

void * FUN_1804f8f20(void *param_1,ulonglong param_2)

{
  FUN_1804f8940();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f8fa0 size=52 ############

void * FUN_1804f8fa0(void *param_1,ulonglong param_2)

{
  FUN_181315cb0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f9010 size=52 ############

void * FUN_1804f9010(void *param_1,ulonglong param_2)

{
  FUN_1813150e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f9050 size=52 ############

void * FUN_1804f9050(void *param_1,ulonglong param_2)

{
  FUN_181349e00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f94e0 size=423 ############

undefined8 * FUN_1804f94e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::LookAndFeel_V1::vftable;
  param_1[1] = juce::LookAndFeel_V1::vftable;
  param_1[2] = juce::LookAndFeel_V1::vftable;
  param_1[3] = juce::LookAndFeel_V1::vftable;
  param_1[4] = juce::LookAndFeel_V1::vftable;
  param_1[5] = juce::LookAndFeel_V1::vftable;
  param_1[6] = juce::LookAndFeel_V1::vftable;
  param_1[7] = juce::LookAndFeel_V1::vftable;
  param_1[8] = juce::LookAndFeel_V1::vftable;
  param_1[9] = juce::LookAndFeel_V1::vftable;
  param_1[10] = juce::LookAndFeel_V1::vftable;
  param_1[0xb] = juce::LookAndFeel_V1::vftable;
  param_1[0xc] = juce::LookAndFeel_V1::vftable;
  param_1[0xd] = juce::LookAndFeel_V1::vftable;
  param_1[0xe] = juce::LookAndFeel_V1::vftable;
  param_1[0xf] = juce::LookAndFeel_V1::vftable;
  param_1[0x10] = juce::LookAndFeel_V1::vftable;
  param_1[0x11] = juce::LookAndFeel_V1::vftable;
  param_1[0x12] = juce::LookAndFeel_V1::vftable;
  param_1[0x13] = juce::LookAndFeel_V1::vftable;
  param_1[0x14] = juce::LookAndFeel_V1::vftable;
  param_1[0x15] = juce::LookAndFeel_V1::vftable;
  param_1[0x16] = juce::LookAndFeel_V1::vftable;
  param_1[0x17] = juce::LookAndFeel_V1::vftable;
  param_1[0x18] = juce::LookAndFeel_V1::vftable;
  param_1[0x19] = juce::LookAndFeel_V1::vftable;
  param_1[0x1a] = juce::LookAndFeel_V1::vftable;
  param_1[0x1b] = juce::LookAndFeel_V1::vftable;
  param_1[0x1c] = juce::LookAndFeel_V1::vftable;
  param_1[0x27] = juce::DropShadowEffect::vftable;
  FUN_1813150e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f9690 size=52 ############

void * FUN_1804f9690(void *param_1,ulonglong param_2)

{
  FUN_181300780();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804f9b60 size=52 ############

void * FUN_1804f9b60(void *param_1,ulonglong param_2)

{
  FUN_1812fbe60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804fa0e0 size=87 ############

void * FUN_1804fa0e0(void *param_1,uint param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  
  puVar2 = *(undefined8 **)((longlong)param_1 + 0xb0);
  if (puVar2 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar2 + 0x17);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804fa930 size=973 ############

void FUN_1804fa930(longlong param_1)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  uint uVar4;
  uint *puVar6;
  void *pvVar7;
  int iVar8;
  longlong lVar9;
  byte *pbVar11;
  byte *pbVar12;
  void *pvVar13;
  byte *pbVar14;
  undefined2 local_res10;
  byte *local_res18;
  byte *local_res20;
  void *local_60;
  undefined8 local_58;
  void *pvVar5;
  longlong lVar10;
  
  if (((*(longlong *)(param_1 + 0x120) == 0) || (*(int *)(param_1 + 0xb8) == 0)) ||
     (**(char **)(param_1 + 0x128) != '\0')) {
    return;
  }
  local_res18 = &DAT_1821dbf98;
  lVar9 = *(longlong *)(*(longlong *)(param_1 + 0x120) + 0x38);
  pvVar13 = (void *)0x0;
  iVar8 = 0;
  if (0 < *(int *)(lVar9 + 0x5c)) {
    pvVar5 = pvVar13;
    pvVar7 = pvVar13;
    do {
      if (**(int **)((longlong)pvVar7 + *(longlong *)(lVar9 + 0x50)) == *(int *)(param_1 + 0xb8)) {
        lVar9 = *(longlong *)(*(longlong *)(lVar9 + 0x50) + (longlong)(int)pvVar5 * 8);
        local_60 = (void *)0x0;
        local_58 = 0;
        iVar2 = *(int *)(lVar9 + 0x14);
        pvVar5 = *(void **)(lVar9 + 8);
        iVar8 = 0;
        if (0 < iVar2) {
          FUN_18051ce20(&local_60,iVar2 / 2 + 8 + iVar2 & 0xfffffff8);
          iVar8 = local_58._4_4_;
        }
        pvVar13 = local_60;
        memcpy((void *)((longlong)iVar8 * 0xc + (longlong)local_60),pvVar5,(longlong)iVar2 * 0xc);
        iVar8 = iVar8 + iVar2;
        goto LAB_1804fa9dd;
      }
      uVar4 = (int)pvVar5 + 1;
      pvVar5 = (void *)(ulonglong)uVar4;
      pvVar7 = (void *)((longlong)pvVar7 + 8);
    } while ((int)uVar4 < *(int *)(lVar9 + 0x5c));
  }
  local_60 = (void *)0x0;
  local_58 = 0;
LAB_1804fa9dd:
  local_58 = CONCAT44(iVar8,(undefined4)local_58);
  pvVar7 = (void *)((longlong)iVar8 * 0xc + (longlong)pvVar13);
  pvVar5 = pvVar13;
  do {
    if (pvVar13 == pvVar7) {
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
    FUN_181337fe0(pvVar13);
    if (*local_res18 != 0) {
      lVar9 = -1;
      do {
        lVar10 = lVar9;
        lVar9 = lVar10 + 1;
      } while (local_res18[lVar9] != 0);
      FUN_1812342b0(&local_res18,lVar10 + 3);
      pbVar11 = local_res18 + (int)lVar9;
      memcpy(pbVar11,&DAT_182496884,2);
      pbVar11[2] = 0;
    }
    pbVar11 = local_res20;
    iVar8 = 0;
    pbVar3 = local_res20;
    while( true ) {
      while( true ) {
        bVar1 = *pbVar3;
        pbVar3 = pbVar3 + 1;
        if (-1 < (char)bVar1) break;
        if ((*pbVar3 & 0xc0) != 0x80) goto LAB_1804fab23;
        do {
          pbVar3 = pbVar3 + 1;
        } while ((*pbVar3 & 0xc0) == 0x80);
        iVar8 = iVar8 + 1;
      }
      if (bVar1 == 0) break;
LAB_1804fab23:
      iVar8 = iVar8 + 1;
    }
    pbVar12 = local_res18;
    pbVar3 = pbVar11;
    if ((iVar8 == 1) && (uVar4 = FUN_180493050(&local_res20,0), uVar4 < 0x80)) {
      lVar9 = -1;
      do {
        lVar10 = lVar9;
        lVar9 = lVar10 + 1;
      } while (pbVar12[lVar9] != 0);
      FUN_1812342b0(&local_res18,lVar10 + 0xc);
      pbVar14 = local_res18 + (int)lVar9;
      memcpy(pbVar14,"shortcut: \'",0xb);
      pbVar12 = local_res18;
      pbVar14[0xb] = 0;
      if (*local_res18 == 0) {
        if ((*(uint *)(pbVar11 + -0x10) & 0x30000000) == 0) {
          LOCK();
          *(int *)(pbVar11 + -0x10) = *(int *)(pbVar11 + -0x10) + 1;
          UNLOCK();
        }
        LOCK();
        local_res18 = local_res20;
        UNLOCK();
        puVar6 = (uint *)(pbVar12 + -0x10);
        pbVar3 = local_res20;
        if ((*puVar6 & 0x30000000) == 0) {
          LOCK();
          uVar4 = *puVar6;
          *puVar6 = *puVar6 - 1;
          UNLOCK();
          if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
            free(puVar6);
          }
        }
      }
      else {
        lVar9 = -1;
        do {
          lVar9 = lVar9 + 1;
        } while (pbVar11[lVar9] != 0);
        FUN_181232e20(&local_res18,pbVar11);
      }
      local_res10 = 0x27;
      lVar9 = -1;
      do {
        lVar10 = lVar9 + 1;
        lVar9 = lVar9 + 1;
      } while (*(char *)((longlong)&local_res10 + lVar10) != '\0');
      pbVar11 = (byte *)&local_res10;
LAB_1804faca4:
      FUN_181232e20(&local_res18,pbVar11);
    }
    else {
      pbVar14 = local_res18;
      if (*pbVar12 != 0) {
        lVar9 = -1;
        do {
          lVar9 = lVar9 + 1;
        } while (pbVar11[lVar9] != 0);
        goto LAB_1804faca4;
      }
      if ((*(uint *)(pbVar11 + -0x10) & 0x30000000) == 0) {
        LOCK();
        *(int *)(pbVar11 + -0x10) = *(int *)(pbVar11 + -0x10) + 1;
        UNLOCK();
      }
      LOCK();
      local_res18 = local_res20;
      UNLOCK();
      puVar6 = (uint *)(pbVar14 + -0x10);
      pbVar3 = local_res20;
      if ((*puVar6 & 0x30000000) == 0) {
        LOCK();
        uVar4 = *puVar6;
        *puVar6 = *puVar6 - 1;
        UNLOCK();
        if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar6);
        }
      }
    }
    puVar6 = (uint *)(pbVar3 + -0x10);
    if ((*puVar6 & 0x30000000) == 0) {
      LOCK();
      uVar4 = *puVar6;
      *puVar6 = *puVar6 - 1;
      UNLOCK();
      if (uVar4 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar6);
      }
    }
    pvVar13 = (void *)((longlong)pvVar13 + 0xc);
    pvVar5 = local_60;
  } while( true );
}



############ FUN_ 1804fad70 size=470 ############

longlong * FUN_1804fad70(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  longlong *plVar4;
  uint *puVar5;
  longlong ***ppplVar6;
  longlong **pplVar7;
  longlong *local_res8;
  longlong *local_res10;
  longlong **local_res18;
  longlong **local_res20;
  
  if (**(char **)(param_1 + 0x128) == '\0') {
    local_res18 = *(longlong ***)(param_1 + 0xb0);
    if (((ulonglong)local_res18[-2] & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res18 + -2) = *(int *)(local_res18 + -2) + 1;
      UNLOCK();
    }
    ppplVar6 = &local_res18;
    bVar3 = false;
    bVar2 = true;
    local_res10 = param_2;
  }
  else {
    local_res10 = *(longlong **)(param_1 + 0xb0);
    if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
      UNLOCK();
    }
    FUN_181232e20(&local_res10,&DAT_18249843c,&DAT_18249843f,param_4,0,0xfffffffffffffffe,
                  &local_res10);
    local_res8 = local_res10;
    if ((*(uint *)(local_res10 + -2) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -2) = (int)local_res10[-2] + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(local_res10 + -2);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    local_res20 = &local_res8;
    plVar4 = (longlong *)FUN_181232d30(&local_res8,(undefined8 *)(param_1 + 0x128));
    local_res20 = (longlong **)*plVar4;
    if (((ulonglong)local_res20[-2] & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res20 + -2) = *(int *)(local_res20 + -2) + 1;
      UNLOCK();
    }
    puVar5 = (uint *)(local_res8 + -2);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    ppplVar6 = &local_res20;
    bVar3 = true;
    bVar2 = false;
  }
  pplVar7 = *ppplVar6;
  *param_2 = (longlong)pplVar7;
  if (((ulonglong)pplVar7[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(pplVar7 + -2) = *(int *)(pplVar7 + -2) + 1;
    UNLOCK();
  }
  if (bVar2) {
    pplVar7 = local_res18 + -2;
    if (((ulonglong)*pplVar7 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *(uint *)pplVar7;
      *(uint *)pplVar7 = *(uint *)pplVar7 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(pplVar7);
      }
    }
  }
  if ((bVar3) && (pplVar7 = local_res20 + -2, ((ulonglong)*pplVar7 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *(uint *)pplVar7;
    *(uint *)pplVar7 = *(uint *)pplVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pplVar7);
    }
  }
  return param_2;
}



############ FUN_ 1804fef30 size=76 ############

undefined8 * FUN_1804fef30(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::PopupMenu::CustomComponent::vftable;
  param_1[0x16] = juce::SingleThreadedReferenceCountedObject::vftable;
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ff090 size=52 ############

void * FUN_1804ff090(void *param_1,ulonglong param_2)

{
  FUN_1812f1110();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ff1a0 size=62 ############

undefined8 * FUN_1804ff1a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ff2c0 size=142 ############

void * FUN_1804ff2c0(void *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 0x20);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = *(undefined8 **)((longlong)param_1 + 0x18);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = *(undefined8 **)((longlong)param_1 + 0x10);
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18123b890 size=92 ############

void FUN_18123b890(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  uint *_Memory;
  undefined1 *local_res18 [2];
  
  local_res18[0] = &DAT_1821dbf98;
  FUN_18123b820(param_1,param_2,local_res18,param_4,0xfffffffffffffffe);
  _Memory = (uint *)(local_res18[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1804ff4e0 size=149 ############

longlong * FUN_1804ff4e0(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  longlong *plVar3;
  uint *_Memory;
  longlong *local_res10;
  
  local_res10 = param_2;
  plVar3 = (longlong *)
           FUN_18049c470(&local_res10,*(undefined8 *)(param_1 + 8),param_3,param_4,
                         0xfffffffffffffffe);
  FUN_181232e20(plVar3,&DAT_18249f29c,&DAT_18249f29d);
  lVar2 = *plVar3;
  *param_2 = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  _Memory = (uint *)(*plVar3 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 1804ff620 size=43 ############

undefined8 * FUN_1804ff620(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Expression::Scope::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812ef3b0 size=421 ############

undefined8 FUN_1812ef3b0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined4 uVar3;
  int iVar4;
  longlong lVar5;
  uint *_Memory;
  undefined1 *local_res20;
  undefined1 local_40 [8];
  undefined **local_38;
  longlong local_30;
  
  uVar3 = FUN_1812ef770(param_3,param_2,param_3,param_4,0xfffffffffffffffe);
  switch(uVar3) {
  case 0:
  case 4:
    FUN_18123b9e0(param_2,(double)*(int *)(*(longlong *)(param_1 + 8) + 0x20));
    break;
  case 1:
    iVar4 = *(int *)(*(longlong *)(param_1 + 8) + 0x28) +
            *(int *)(*(longlong *)(param_1 + 8) + 0x20);
    goto LAB_1812ef474;
  case 2:
  case 5:
    FUN_18123b9e0(param_2,(double)*(int *)(*(longlong *)(param_1 + 8) + 0x24));
    break;
  case 3:
    iVar4 = *(int *)(*(longlong *)(param_1 + 8) + 0x2c) +
            *(int *)(*(longlong *)(param_1 + 8) + 0x24);
LAB_1812ef474:
    FUN_18123b9e0(param_2,(double)iVar4);
    break;
  case 6:
    FUN_18123b9e0(param_2,(double)*(int *)(*(longlong *)(param_1 + 8) + 0x28));
    break;
  case 7:
    FUN_18123b9e0(param_2,(double)*(int *)(*(longlong *)(param_1 + 8) + 0x2c));
    break;
  default:
    lVar2 = *(longlong *)(*(longlong *)(param_1 + 8) + 0x18);
    if ((lVar2 == 0) || (lVar5 = FUN_1804ff580(lVar2,param_3,local_40), lVar5 == 0)) {
      FUN_18123b2a0(param_1,param_2,param_3);
    }
    else {
      local_38 = juce::MarkerListScope::vftable;
      local_res20 = &DAT_1821dbf98;
      local_30 = lVar2;
      FUN_18123b820(lVar5 + 8,&local_38,&local_res20);
      _Memory = (uint *)(local_res20 + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      FUN_18123b9e0(param_2);
    }
  }
  return param_2;
}



############ FUN_ 1804ff870 size=43 ############

undefined8 * FUN_1804ff870(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::Expression::Scope::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ff8a0 size=52 ############

void * FUN_1804ff8a0(void *param_1,ulonglong param_2)

{
  FUN_1812ef190();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ff930 size=98 ############

void * FUN_1804ff930(void *param_1,uint param_2)

{
  int *piVar1;
  undefined8 *puVar2;
  
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x18);
  if (puVar2 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar2 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x10);
  if (puVar2 != (undefined8 *)0x0) {
    piVar1 = (int *)(puVar2 + 1);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)*puVar2)(puVar2,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ff9a0 size=83 ############

/* Library Function - Single Match
    public: void * __ptr64 __cdecl Concurrency::details::SubAllocator::`scalar deleting
   destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release */

void * __thiscall
Concurrency::details::SubAllocator::_scalar_deleting_destructor_(SubAllocator *this,uint param_1)

{
  _eh_vector_destructor_iterator_(this + 0x10,0x10,2,FUN_1804ff8e0);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 1804ffaa0 size=83 ############

/* Library Function - Single Match
    public: void * __ptr64 __cdecl Concurrency::details::SubAllocator::`scalar deleting
   destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release */

void * __thiscall
Concurrency::details::SubAllocator::_scalar_deleting_destructor_(SubAllocator *this,uint param_1)

{
  _eh_vector_destructor_iterator_(this + 0x10,0x10,3,FUN_1804ff8e0);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 1804ffc20 size=205 ############

undefined8 * FUN_1804ffc20(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::BooleanPropertyComponent::vftable;
  param_1[0x16] = juce::BooleanPropertyComponent::vftable;
  puVar2 = (uint *)(param_1[0x53] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0x52] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  param_1[0x19] = juce::ToggleButton::vftable;
  param_1[0x2f] = juce::ToggleButton::vftable;
  FUN_181337760();
  FUN_1812ed5c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812ed5c0 size=87 ############

void FUN_1812ed5c0(undefined8 *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = juce::PropertyComponent::vftable;
  param_1[0x16] = juce::PropertyComponent::vftable;
  _Memory = (uint *)(param_1[0x17] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 1804ffcf0 size=115 ############

undefined8 * FUN_1804ffcf0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ButtonPropertyComponent::vftable;
  param_1[0x16] = juce::ButtonPropertyComponent::vftable;
  param_1[0x19] = juce::TextButton::vftable;
  param_1[0x2f] = juce::TextButton::vftable;
  FUN_181337760();
  FUN_1812ed5c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ffd70 size=52 ############

void * FUN_1804ffd70(void *param_1,ulonglong param_2)

{
  FUN_1812ede40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1804ffdb0 size=52 ############

void * FUN_1804ffdb0(void *param_1,ulonglong param_2)

{
  FUN_1812ed5c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180500020 size=91 ############

undefined8 * FUN_180500020(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::SliderPropertyComponent::vftable;
  param_1[0x16] = juce::SliderPropertyComponent::vftable;
  FUN_181349a80(param_1 + 0x19);
  FUN_1812ed5c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181349a80 size=250 ############

void FUN_181349a80(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  longlong *plVar3;
  uint *_Memory;
  
  *param_1 = juce::Slider::vftable;
  param_1[0x16] = juce::Slider::vftable;
  puVar2 = (undefined8 *)param_1[0x40];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_1804e0ac0(param_1 + 0x38);
  FUN_1804e0b30(param_1 + 0x30);
  plVar3 = (longlong *)param_1[0x2f];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_1 + 0x28);
    param_1[0x2f] = 0;
  }
  plVar3 = (longlong *)param_1[0x27];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_1 + 0x20);
    param_1[0x27] = 0;
  }
  plVar3 = (longlong *)param_1[0x1f];
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != param_1 + 0x18);
    param_1[0x1f] = 0;
  }
  _Memory = (uint *)(param_1[0x17] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 180500140 size=52 ############

void * FUN_180500140(void *param_1,ulonglong param_2)

{
  FUN_1812ecfb0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180500370 size=52 ############

void * FUN_180500370(void *param_1,ulonglong param_2)

{
  FUN_1812ecb00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805003b0 size=52 ############

void * FUN_1805003b0(void *param_1,ulonglong param_2)

{
  FUN_1813495d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805003f0 size=164 ############

undefined8 * FUN_1805003f0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  *param_1 = juce::ImageComponent::vftable;
  param_1[0x16] = juce::ImageComponent::vftable;
  puVar4 = (undefined8 *)param_1[0x18];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  _Memory = (uint *)(param_1[0x17] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180500760 size=632 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180500760(longlong param_1,longlong param_2)

{
  int iVar1;
  longlong *plVar2;
  bool bVar3;
  char cVar4;
  undefined1 uVar5;
  int *piVar6;
  uint *_Memory;
  longlong lVar7;
  int *piVar8;
  uint uVar9;
  longlong lVar10;
  uint uVar11;
  undefined1 auStack_b8 [48];
  int *local_88;
  undefined8 local_80;
  int local_78;
  int iStack_74;
  char *local_70;
  int *local_68 [2];
  undefined8 local_58;
  int *local_50;
  longlong *local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  uVar11 = 0;
  local_78 = 0;
  lVar10 = *(longlong *)(param_1 + 0xb8);
  plVar2 = *(longlong **)(lVar10 + 0xc0);
  if ((((plVar2 == (longlong *)0x0) || ((*(byte *)(param_1 + 0xa9) & 0x10) != 0)) ||
      ((lVar7 = param_2, *(longlong *)(param_1 + 0x18) != 0 &&
       (cVar4 = FUN_18133eaa0(), cVar4 == '\0')))) ||
     ((*(char *)(lVar7 + 0x59) == '\0' || (*(char *)(param_1 + 0xcd) != '\0')))) {
    if ((*(char *)(param_1 + 0xce) == '\0') &&
       (lVar10 = *(longlong *)(*(longlong *)(param_1 + 0xb8) + 200), lVar10 != 0)) {
      lVar10 = *(longlong *)(lVar10 + 0x1b0);
      if ((lVar10 == 0) || (*(char *)(lVar10 + 0x110) == '\0')) {
        uVar5 = 0;
      }
      else {
        uVar5 = 1;
      }
      *(undefined1 *)(param_1 + 0xce) = uVar5;
    }
  }
  local_88 = (int *)0x0;
  local_80 = 0;
  if (*(char *)(lVar10 + 0x107) != '\0') {
LAB_180500856:
    FUN_18051b600(local_68,lVar10 + 0xe0);
    piVar8 = local_88;
    local_50 = local_88;
    local_88 = local_68[0];
                    /* WARNING: Subroutine does not return */
    free(piVar8);
  }
  iVar1 = *(int *)(param_1 + 200);
  piVar6 = *(int **)(lVar10 + 0xe0);
  piVar8 = piVar6 + (longlong)*(int *)(lVar10 + 0xec) * 2;
  for (; (piVar6 != piVar8 && (*piVar6 <= iVar1)); piVar6 = piVar6 + 2) {
    if (iVar1 < piVar6[1]) goto LAB_180500856;
  }
  iStack_74 = iVar1;
  if (iVar1 < iVar1 + 1) {
    iStack_74 = iVar1 + 1;
  }
  local_78 = iVar1;
  FUN_1804a79b0(&local_88,CONCAT44(iStack_74,iVar1));
  piVar8 = local_88;
  uVar9 = uVar11;
  if (local_88 == local_88 + (longlong)local_80._4_4_ * 2) goto LAB_18050098d;
  do {
    uVar9 = uVar9 + (piVar8[1] - *piVar8);
    piVar8 = piVar8 + 2;
  } while (piVar8 != local_88 + (longlong)local_80._4_4_ * 2);
  if ((int)uVar9 < 1) goto LAB_18050098d;
  (**(code **)(*plVar2 + 0x58))(plVar2,&local_48,&local_88);
  cVar4 = (**(code **)(*local_48 + 0x50))();
  if (cVar4 == '\0') {
    cVar4 = (**(code **)(*local_48 + 0x80))();
    if (cVar4 != '\0') {
      (**(code **)(*local_48 + 0x20))(local_48,&local_70,local_40);
      uVar11 = 3;
      if (*local_70 == '\0') goto LAB_180500925;
    }
    bVar3 = true;
  }
  else {
LAB_180500925:
    bVar3 = false;
  }
  if (((uVar11 & 1) != 0) && (_Memory = (uint *)(local_70 + -0x10), (*_Memory & 0x30000000) == 0)) {
    LOCK();
    uVar11 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar11 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (bVar3) {
    *(undefined1 *)(param_1 + 0xcd) = 1;
    FUN_1812e6c00(*(undefined8 *)(param_1 + 0xb8),param_2,&local_88,&local_48);
  }
  (**(code **)(*local_48 + 0xb0))(local_48,local_40);
LAB_18050098d:
  local_80 = local_80 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_88);
}



############ FUN_ 180500aa0 size=78 ############

void * FUN_180500aa0(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0xc0);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180501290 size=67 ############

void * FUN_180501290(void *param_1,ulonglong param_2)

{
  FUN_180485f00((longlong)param_1 + 0x1c0);
  FUN_18134a530(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805012e0 size=52 ############

void * FUN_1805012e0(void *param_1,ulonglong param_2)

{
  FUN_1812e8430();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180501320 size=256 ############

undefined8 * FUN_180501320(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::ProgressBar::vftable;
  param_1[0x16] = juce::ProgressBar::vftable;
  param_1[0x18] = juce::ProgressBar::vftable;
  puVar2 = (uint *)(param_1[0x1f] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0x1e] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  param_1[0x18] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x18);
  puVar2 = (uint *)(param_1[0x17] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181250750 size=825 ############

void FUN_181250750(longlong *param_1,longlong *param_2,undefined8 param_3,undefined4 param_4,
                  float param_5,float param_6,float param_7,uint param_8,int param_9,float param_10)

{
  uint uVar1;
  int iVar2;
  longlong lVar3;
  char cVar4;
  longlong lVar5;
  uint *_Memory;
  int iVar6;
  float fVar7;
  uint in_stack_ffffffffffffff38;
  ulonglong in_stack_ffffffffffffff40;
  undefined4 uVar8;
  longlong local_98;
  longlong local_90 [2];
  void *local_80;
  undefined8 local_78;
  undefined1 local_70 [4];
  float local_6c;
  float local_64;
  
  local_90[1] = 0xfffffffffffffffe;
  if (param_10 == 0.0) {
    param_10 = DAT_1824c3df0;
  }
  cVar4 = FUN_181230100(param_3,&DAT_1821df1b4);
  uVar8 = (undefined4)(in_stack_ffffffffffffff40 >> 0x20);
  if (cVar4 == '\0') {
    iVar2 = *(int *)((longlong)param_1 + 0xc);
    FUN_181248e40(param_3,&local_98);
    FUN_1812510e0(param_1,param_2,&local_98,param_4,param_5,DAT_1824c4620,
                  in_stack_ffffffffffffff38 & 0xffffff00);
    iVar6 = *(int *)((longlong)param_1 + 0xc) - iVar2;
    if (0 < iVar6) {
      lVar3 = *param_1;
      lVar5 = (longlong)(*(int *)((longlong)param_1 + 0xc) + -1) * 0x20;
      fVar7 = (*(float *)(lVar5 + 0x18 + lVar3) + *(float *)(lVar5 + 0x10 + lVar3)) -
              *(float *)((longlong)iVar2 * 0x20 + 0x10 + lVar3);
      if (0.0 < fVar7) {
        if (param_6 <= fVar7 * param_10) {
          if (param_9 < 2) {
            FUN_181250340(param_1,iVar2,iVar6,param_4,param_5,param_6,param_7,param_2,param_8,
                          param_10);
          }
          else {
            local_90[0] = *param_2;
            if (local_90[0] != 0) {
              LOCK();
              *(int *)(local_90[0] + 8) = *(int *)(local_90[0] + 8) + 1;
              UNLOCK();
            }
            FUN_18124f690(param_1,&local_98,local_90,iVar2,param_4,param_5,param_6,
                          CONCAT44(uVar8,param_7),param_9,fVar7,param_8,param_10);
          }
        }
        else {
          if (param_6 < fVar7) {
            FUN_1812501e0(param_1,iVar2,iVar6,param_6 / fVar7);
          }
          FUN_18124fe00(param_1,iVar2,iVar6,param_4,param_5,param_6,param_7,CONCAT44(uVar8,param_8))
          ;
        }
      }
    }
    _Memory = (uint *)(local_98 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    return;
  }
  local_80 = (void *)0x0;
  local_78 = 0;
  FUN_1804aebd0(&local_80,200);
  fVar7 = param_5;
  FUN_181250aa0(&local_80,param_2,param_3,param_4,param_5,param_6,param_8,
                in_stack_ffffffffffffff40 & 0xffffffff00000000);
  FUN_18124ffe0(&local_80,local_70,0,0xffffffff,(uint)fVar7 & 0xffffff00);
  param_5 = param_5 - local_6c;
  if ((param_8 >> 5 & 1) == 0) {
    if ((param_8 >> 4 & 1) == 0) goto LAB_181250870;
    param_7 = param_7 - local_64;
  }
  else {
    param_7 = (param_7 - local_64) * DAT_1824c3d8c;
  }
  param_5 = param_5 + param_7;
LAB_181250870:
  FUN_181250610(&local_80,0,0xffffffff,0,param_5);
  FUN_1804b0650(param_1,&local_80);
  FUN_1804aeb50(&local_80);
                    /* WARNING: Subroutine does not return */
  free(local_80);
}



############ FUN_ 1805054a0 size=304 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 * FUN_1805054a0(undefined8 *param_1,ulonglong param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *_Memory;
  LARGE_INTEGER local_res8;
  
  *param_1 = juce::Slider::Pimpl::PopupDisplayComponent::vftable;
  param_1[0x1d] = juce::Slider::Pimpl::PopupDisplayComponent::vftable;
  if (*(longlong *)(param_1[0x20] + 0x200) != 0) {
    QueryPerformanceCounter(&local_res8);
    *(double *)(*(longlong *)(param_1[0x20] + 0x200) + 0x240) =
         (double)(DAT_182673a10 + local_res8.QuadPart) * _DAT_182673a18;
  }
  _Memory = (uint *)(param_1[0x22] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar4 = (undefined8 *)param_1[0x21];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  param_1[0x1d] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x1d);
  *param_1 = juce::BubbleComponent::vftable;
  param_1[0x1a] = juce::DropShadowEffect::vftable;
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805055d0 size=52 ############

void * FUN_1805055d0(void *param_1,ulonglong param_2)

{
  FUN_181349a80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180505680 size=52 ############

void * FUN_180505680(void *param_1,ulonglong param_2)

{
  FUN_1812e52b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180506070 size=583 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180506070(longlong param_1,longlong param_2)

{
  int iVar1;
  longlong lVar2;
  longlong *plVar3;
  bool bVar4;
  char cVar5;
  int *piVar6;
  int *piVar7;
  uint *_Memory;
  uint uVar8;
  longlong lVar9;
  uint uVar10;
  undefined1 auStack_b8 [48];
  int *local_88;
  undefined8 local_80;
  int local_78;
  int iStack_74;
  char *local_70;
  int *local_68 [2];
  undefined8 local_58;
  int *local_50;
  longlong *local_48;
  undefined1 local_40 [8];
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_b8;
  uVar10 = 0;
  local_78 = 0;
  if (((*(byte *)(param_1 + 0xa9) & 0x10) != 0) ||
     ((((lVar9 = param_2, *(longlong *)(param_1 + 0x18) != 0 &&
        (cVar5 = FUN_18133eaa0(), cVar5 == '\0')) ||
       (lVar2 = *(longlong *)(param_1 + 0xb8), *(longlong *)(lVar2 + 0x120) == 0)) ||
      ((*(char *)(lVar9 + 0x59) == '\0' || (*(char *)(param_1 + 0xd5) != '\0')))))) {
  }
  local_88 = (int *)0x0;
  local_80 = 0;
  if (*(char *)(lVar2 + 0x107) != '\0') {
LAB_180506163:
    FUN_18051b600(local_68,lVar2 + 0xe0);
    piVar7 = local_88;
    local_50 = local_88;
    local_88 = local_68[0];
                    /* WARNING: Subroutine does not return */
    free(piVar7);
  }
  iVar1 = *(int *)(param_1 + 0xd0);
  piVar6 = *(int **)(lVar2 + 0xe0);
  piVar7 = piVar6 + (longlong)*(int *)(lVar2 + 0xec) * 2;
  for (; (piVar6 != piVar7 && (*piVar6 <= iVar1)); piVar6 = piVar6 + 2) {
    if (iVar1 < piVar6[1]) goto LAB_180506163;
  }
  iStack_74 = iVar1;
  if (iVar1 < iVar1 + 1) {
    iStack_74 = iVar1 + 1;
  }
  local_78 = iVar1;
  FUN_1804a79b0(&local_88,CONCAT44(iStack_74,iVar1));
  piVar7 = local_88;
  uVar8 = uVar10;
  if (local_88 == local_88 + (longlong)local_80._4_4_ * 2) goto LAB_1805062a6;
  do {
    uVar8 = uVar8 + (piVar7[1] - *piVar7);
    piVar7 = piVar7 + 2;
  } while (piVar7 != local_88 + (longlong)local_80._4_4_ * 2);
  if ((int)uVar8 < 1) goto LAB_1805062a6;
  plVar3 = *(longlong **)(*(longlong *)(param_1 + 0xb8) + 0x120);
  (**(code **)(*plVar3 + 0x78))(plVar3,&local_48,&local_88);
  cVar5 = (**(code **)(*local_48 + 0x50))();
  if (cVar5 == '\0') {
    cVar5 = (**(code **)(*local_48 + 0x80))();
    if (cVar5 != '\0') {
      (**(code **)(*local_48 + 0x20))(local_48,&local_70,local_40);
      uVar10 = 3;
      if (*local_70 == '\0') goto LAB_18050623e;
    }
    bVar4 = true;
  }
  else {
LAB_18050623e:
    bVar4 = false;
  }
  if (((uVar10 & 1) != 0) && (_Memory = (uint *)(local_70 + -0x10), (*_Memory & 0x30000000) == 0)) {
    LOCK();
    uVar10 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar10 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (bVar4) {
    *(undefined1 *)(param_1 + 0xd5) = 1;
    FUN_1812e6c00(*(undefined8 *)(param_1 + 0xb8),param_2,&local_88,&local_48);
  }
  (**(code **)(*local_48 + 0xb0))(local_48,local_40);
LAB_1805062a6:
  local_80 = local_80 & 0xffffffff;
                    /* WARNING: Subroutine does not return */
  free(local_88);
}



############ FUN_ 1805065c0 size=104 ############

undefined8 * FUN_1805065c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::TableListBox::vftable;
  param_1[0x16] = juce::TableListBox::vftable;
  param_1[0x21] = juce::TableListBox::vftable;
  param_1[0x22] = juce::TableListBox::vftable;
  FUN_1812e8430();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180506710 size=182 ############

undefined8 *
FUN_180506710(longlong param_1,undefined8 *param_2,ulonglong param_3,undefined8 param_4)

{
  uint uVar1;
  int iVar2;
  undefined8 *puVar3;
  uint *_Memory;
  ulonglong uVar4;
  longlong local_res20;
  
  uVar4 = param_3 & 0xffffffff;
  if ((int)param_3 == 0) {
    FUN_1812490c0();
    return param_2;
  }
  iVar2 = FUN_180493050(param_1,0,param_3,param_4,0xfffffffffffffffe);
  if ((iVar2 == 0xd) || (iVar2 = FUN_180493050(param_1,0), iVar2 == 10)) {
    *param_2 = &DAT_1821dbf98;
    return param_2;
  }
  puVar3 = (undefined8 *)FUN_181233f40(&local_res20,uVar4 & 0xffffffff);
  FUN_181231fc0(param_2,*puVar3,*(undefined4 *)(param_1 + 0xc));
  _Memory = (uint *)(local_res20 + -0x10);
  if ((*_Memory & 0x30000000) != 0) {
    return param_2;
  }
  LOCK();
  uVar1 = *_Memory;
  *_Memory = *_Memory - 1;
  UNLOCK();
  if (uVar1 != 0) {
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180508720 size=126 ############

void * FUN_180508720(void *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  puVar4 = *(undefined8 **)((longlong)param_1 + 0x28);
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x10) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180508890 size=56 ############

/* Library Function - Single Match
    public: void * __ptr64 __cdecl MRECmpImpl::`scalar deleting destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void * __thiscall MRECmpImpl::_scalar_deleting_destructor_(MRECmpImpl *this,uint param_1)

{
  FUN_18051b230(this + 0x20);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 180508b00 size=178 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180508b00(longlong param_1)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  undefined1 auStack_58 [32];
  longlong local_38 [2];
  longlong *local_28;
  undefined1 local_20 [8];
  ulonglong local_18;
  
  local_38[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  lVar2 = *(longlong *)(param_1 + 8);
  if (1 < *(int *)(*(longlong *)(lVar2 + 0x2d8) + 8)) {
    (**(code **)(**(longlong **)(lVar2 + 0x2d8) + 8))(*(longlong **)(lVar2 + 0x2d8),&local_28);
    (**(code **)(*local_28 + 0x20))(local_28,local_38,local_20);
    FUN_1812e1110(lVar2,local_38,1);
    _Memory = (uint *)(local_38[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    (**(code **)(*local_28 + 0xb0))(local_28,local_20);
  }
}



############ FUN_ 180508bc0 size=199 ############

undefined8 *
FUN_180508bc0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  longlong lVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = juce::TextEditor::TextHolderComponent::vftable;
  param_1[0x16] = juce::TextEditor::TextHolderComponent::vftable;
  param_1[0x19] = juce::TextEditor::TextHolderComponent::vftable;
  lVar1 = param_1[0x1a];
  FUN_1812e1050(lVar1);
  FUN_1813514c0(lVar1 + 0x2d8,param_1 + 0x19,param_3,param_4,uVar2);
  param_1[0x16] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x16);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180508d10 size=52 ############

void * FUN_180508d10(void *param_1,ulonglong param_2)

{
  FUN_18134a530();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180508d50 size=52 ############

void * FUN_180508d50(void *param_1,ulonglong param_2)

{
  FUN_1812e2030();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805090a0 size=43 ############

undefined8 * FUN_1805090a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ToolbarItemFactory::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180509700 size=52 ############

void * FUN_180509700(void *param_1,ulonglong param_2)

{
  FUN_1812db040();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180509740 size=265 ############

undefined8 *
FUN_180509740(undefined8 *param_1,undefined4 param_2,undefined4 param_3,undefined1 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined1 *local_res8;
  
  local_res8 = &DAT_1821dbf98;
  FUN_1813379d0(param_1,&local_res8,param_3,param_4,0xfffffffffffffffe);
  *param_1 = juce::ToolbarItemComponent::vftable;
  param_1[0x16] = juce::ToolbarItemComponent::vftable;
  *(undefined4 *)(param_1 + 0x39) = param_2;
  *(undefined8 *)((longlong)param_1 + 0x1cc) = 0;
  param_1[0x3b] = 0;
  param_1[0x3c] = 0;
  *(undefined2 *)(param_1 + 0x3d) = 1;
  *(undefined1 *)((longlong)param_1 + 0x1ea) = 0;
  *(undefined8 *)((longlong)param_1 + 0x1ec) = 0;
  *(undefined8 *)((longlong)param_1 + 500) = 0;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = juce::Toolbar::Spacer::vftable;
  param_1[0x16] = juce::Toolbar::Spacer::vftable;
  *(undefined4 *)(param_1 + 0x40) = param_3;
  *(undefined1 *)((longlong)param_1 + 0x204) = param_4;
  *(byte *)(param_1 + 0x15) = *(byte *)(param_1 + 0x15) & 0xdf;
  return param_1;
}



############ FUN_ 180509d70 size=52 ############

void * FUN_180509d70(void *param_1,ulonglong param_2)

{
  FUN_1812db040();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050a3a0 size=52 ############

void * FUN_18050a3a0(void *param_1,ulonglong param_2)

{
  FUN_180509f20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050a4c0 size=52 ############

void * FUN_18050a4c0(void *param_1,ulonglong param_2)

{
  FUN_1812d96c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050a800 size=675 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18050a800(longlong param_1,longlong param_2)

{
  int *piVar1;
  uint uVar2;
  bool bVar3;
  double dVar4;
  char cVar5;
  int iVar6;
  longlong *plVar7;
  longlong lVar8;
  uint *_Memory;
  bool bVar9;
  longlong lVar10;
  undefined1 auStack_108 [32];
  undefined4 local_e8;
  int *local_e0;
  longlong local_d8;
  undefined4 local_c0;
  undefined4 uStack_bc;
  longlong local_b8;
  char *local_b0;
  int local_a8;
  int local_a4;
  undefined8 local_98;
  undefined8 uStack_90;
  double local_88;
  double local_80;
  undefined8 local_78;
  undefined4 local_68;
  int iStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  longlong *local_58;
  undefined1 local_50 [8];
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  bVar9 = false;
  local_c0 = 0;
  if ((*(byte *)(param_1 + 0xa9) & 0x10) != 0) {
  }
  lVar8 = param_2;
  if ((*(longlong *)(param_1 + 0x18) != 0) && (cVar5 = FUN_18133eaa0(), cVar5 == '\0')) {
  }
  if (*(char *)(param_1 + 0xe8) != '\0') {
  }
  if (*(char *)(lVar8 + 0x59) == '\0') {
  }
  iVar6 = FUN_181339580(param_2);
  if (iVar6 < 5) {
  }
  if ((*(uint *)(param_2 + 0x10) >> 5 & 1) != 0) {
  }
  *(undefined1 *)(param_1 + 0xe8) = 1;
  dVar4 = DAT_1824c4520;
  local_98 = 0;
  uStack_90 = 0;
  local_88 = (double)*(float *)(param_2 + 0x2c) + DAT_1824c4520;
  if (*(longlong *)(*(longlong *)(param_1 + 200) + 0x108) == 0) {
  }
  plVar7 = (longlong *)FUN_18050ab80(param_1,(ulonglong)local_88 & 0xffffffff,&local_98);
  if (plVar7 == (longlong *)0x0) {
  }
  local_80 = (double)*(float *)(param_2 + 0x28) + dVar4;
  if (local_80._0_4_ < (int)local_98) {
  }
  (**(code **)(*plVar7 + 0x88))(plVar7,&local_58);
  cVar5 = (**(code **)(*local_58 + 0x50))();
  if (cVar5 == '\0') {
    cVar5 = (**(code **)(*local_58 + 0x80))();
    if (cVar5 != '\0') {
      (**(code **)(*local_58 + 0x20))(local_58,&local_b0,local_50);
      bVar9 = true;
      if (*local_b0 == '\0') goto LAB_18050a96e;
    }
    bVar3 = true;
  }
  else {
LAB_18050a96e:
    bVar3 = false;
  }
  if ((bVar9) && (_Memory = (uint *)(local_b0 + -0x10), (*_Memory & 0x30000000) == 0)) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((bVar3) && (lVar8 = FUN_18133a120(param_1), lVar8 != 0)) {
    uStack_5c = *(undefined4 *)((longlong)plVar7 + 0x2c);
    uStack_90 = CONCAT44(uStack_5c,(undefined4)uStack_90);
    iVar6 = local_98._4_4_;
    local_68 = (int)local_98;
    iStack_64 = local_98._4_4_;
    uStack_60 = (undefined4)uStack_90;
    local_e8 = DAT_1824c3ea4;
    FUN_181341cd0(param_1,&local_c0,&local_68,1);
    FUN_1812900e0(&local_c0,DAT_1824c3db8);
    local_a4 = iVar6 - *(int *)(param_2 + 0xc);
    local_a8 = (int)local_98 - *(int *)(param_2 + 8);
    local_b8 = CONCAT44(uStack_bc,local_c0);
    if (local_b8 != 0) {
      LOCK();
      *(int *)(local_b8 + 8) = *(int *)(local_b8 + 8) + 1;
      UNLOCK();
    }
    lVar10 = CONCAT44(uStack_bc,local_c0);
    local_d8 = param_2 + 0x50;
    local_e0 = &local_a8;
    local_e8 = CONCAT31(local_e8._1_3_,1);
    FUN_18133a190(lVar8,&local_58,*(undefined8 *)(param_1 + 200),&local_b8);
    if (lVar10 != 0) {
      LOCK();
      piVar1 = (int *)(lVar10 + 8);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (*(code *)**(undefined8 **)CONCAT44(uStack_bc,local_c0))
                  ((undefined8 *)CONCAT44(uStack_bc,local_c0),1);
      }
    }
  }
  (**(code **)(*local_58 + 0xb0))(local_58,local_50);
}



############ FUN_ 18050b550 size=132 ############

void * FUN_18050b550(void *param_1,ulonglong param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  FUN_180519da0((longlong)param_1 + 0xd0);
  *(undefined ***)((longlong)param_1 + 0xb8) = juce::AsyncUpdater::vftable;
  LOCK();
  *(undefined4 *)(*(longlong *)((longlong)param_1 + 0xc0) + 0x18) = 0;
  UNLOCK();
  puVar3 = *(undefined8 **)((longlong)param_1 + 0xc0);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050b6e0 size=52 ############

void * FUN_18050b6e0(void *param_1,ulonglong param_2)

{
  FUN_18134a530();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050b720 size=52 ############

void * FUN_18050b720(void *param_1,ulonglong param_2)

{
  FUN_1812d8f00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050bd30 size=52 ############

void * FUN_18050bd30(void *param_1,ulonglong param_2)

{
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050be20 size=66 ############

undefined8 * FUN_18050be20(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::TreeViewItem::vftable;
  FUN_180485f00(param_1 + 3);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050be70 size=52 ############

void * FUN_18050be70(void *param_1,ulonglong param_2)

{
  FUN_181347640();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c340 size=52 ############

void * FUN_18050c340(void *param_1,ulonglong param_2)

{
  FUN_1812d3b00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c380 size=52 ############

void * FUN_18050c380(void *param_1,ulonglong param_2)

{
  FUN_1812d2cf0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c4c0 size=62 ############

undefined8 * FUN_18050c4c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::DialogWindow::vftable;
  FUN_1812d0960();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c620 size=52 ############

void * FUN_18050c620(void *param_1,ulonglong param_2)

{
  FUN_1812d0960();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c660 size=52 ############

void * FUN_18050c660(void *param_1,ulonglong param_2)

{
  FUN_1812cf990();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c6a0 size=218 ############

undefined8 * FUN_18050c6a0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = juce::ThreadWithProgressWindow::vftable;
  param_1[0x40] = juce::ThreadWithProgressWindow::vftable;
  FUN_18122afa0(param_1,*(undefined4 *)((longlong)param_1 + 0x25c),param_3,param_4,
                0xfffffffffffffffe);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x46));
  _Memory = (uint *)(param_1[0x45] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar2 = (undefined8 *)param_1[0x44];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  param_1[0x40] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x40);
  FUN_18122b690(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050c780 size=223 ############

undefined8 * FUN_18050c780(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::TooltipWindow::vftable;
  param_1[0x16] = juce::TooltipWindow::vftable;
  FUN_1812ccd50();
  puVar2 = (uint *)(param_1[0x1c] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0x1b] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  param_1[0x16] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x16);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812ccd50 size=104 ############

void FUN_1812ccd50(longlong *param_1)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(char *)((longlong)param_1 + 0xfc) != '\0') {
    return;
  }
  _Memory = (uint *)(param_1[0x1b] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  param_1[0x1b] = (longlong)&DAT_1821dbf98;
  FUN_18134c310(param_1);
                    /* WARNING: Could not recover jumptable at 0x0001812ccdae. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x58))(param_1,0);
  return;
}



############ FUN_ 18050cb90 size=52 ############

void * FUN_18050cb90(void *param_1,ulonglong param_2)

{
  FUN_1812cc560();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050cbd0 size=52 ############

void * FUN_18050cbd0(void *param_1,ulonglong param_2)

{
  FUN_1812cb880();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050cc40 size=92 ############

undefined8 * FUN_18050cc40(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050cca0 size=109 ############

undefined8 * FUN_18050cca0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::ApplicationCommandTarget::vftable;
  if (param_1[1] != 0) {
    *(undefined8 *)(param_1[1] + 0x10) = 0;
  }
  puVar3 = (undefined8 *)param_1[1];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18051b430 size=127 ############

void FUN_18051b430(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    _Memory = *(void **)((longlong)iVar1 * 8 + *param_1);
    _Dst = (void *)((longlong)iVar1 * 8 + *param_1);
    memmove(_Dst,(void *)((longlong)_Dst + 8),
            (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
    *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018051b4c4. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 18050ce60 size=160 ############

undefined8 * FUN_18050ce60(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::JUCEApplication::vftable;
  param_1[3] = juce::ApplicationCommandTarget::vftable;
  if (param_1[4] != 0) {
    *(undefined8 *)(param_1[4] + 0x10) = 0;
  }
  puVar3 = (undefined8 *)param_1[4];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  DAT_1826736f8 = 0;
  *param_1 = juce::JUCEApplicationBase::vftable;
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050cf00 size=76 ############

undefined8 * FUN_18050cf00(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::BubbleComponent::vftable;
  param_1[0x1a] = juce::DropShadowEffect::vftable;
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050d190 size=93 ############

void * FUN_18050d190(void *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 0xb0);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050d340 size=199 ############

undefined8 * FUN_18050d340(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::JUCESplashScreen::vftable;
  param_1[0x16] = juce::JUCESplashScreen::vftable;
  param_1[0x19] = juce::JUCESplashScreen::vftable;
  FUN_181324040(param_1 + 0x21);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1b));
  puVar1 = (undefined8 *)param_1[0x1a];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1812a7170(param_1 + 0x19);
  param_1[0x16] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x16);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050d420 size=43 ############

undefined8 * FUN_18050d420(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ModifierKeyReceiver::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050d870 size=105 ############

undefined8 * FUN_18050d870(undefined8 *param_1,uint param_2)

{
  *param_1 = juce::WindowsBitmapImage::vftable;
  SelectObject((HDC)param_1[0x18],(HGDIOBJ)param_1[9]);
  DeleteDC((HDC)param_1[0x18]);
  DeleteObject((HGDIOBJ)param_1[8]);
  FUN_1812918d0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18050da30 size=158 ############

undefined8 * FUN_18050da30(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::OnScreenKeyboard::vftable;
  param_1[1] = juce::OnScreenKeyboard::vftable;
  if (DAT_182673b00 == param_1) {
    DAT_182673b00 = (undefined8 *)0x0;
  }
  if ((longlong *)param_1[5] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[5] + 0x10))();
  }
  param_1[1] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 1);
  FUN_1812a7170(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180516420 size=52 ############

void * FUN_180516420(void *param_1,ulonglong param_2)

{
  FUN_18050e0a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180516570 size=100 ############

undefined8 * FUN_180516570(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[3];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805168a0 size=52 ############

void * FUN_1805168a0(void *param_1,ulonglong param_2)

{
  FUN_1805168e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805168e0 size=166 ############

ulonglong FUN_1805168e0(undefined8 *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  uint *puVar6;
  
  puVar4 = (undefined8 *)param_1[6];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  puVar6 = (uint *)(param_1[5] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  puVar6 = (uint *)(param_1[4] + -0x10);
  if ((*puVar6 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar6);
    }
  }
  *param_1 = juce::AsyncUpdater::vftable;
  LOCK();
  uVar2 = *(uint *)(param_1[1] + 0x18);
  *(uint *)(param_1[1] + 0x18) = 0;
  uVar5 = (ulonglong)uVar2;
  UNLOCK();
  puVar4 = (undefined8 *)param_1[1];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    uVar5 = (ulonglong)(iVar3 - 1U);
    if (iVar3 - 1U == 0) {
      uVar5 = (**(code **)*puVar4)(puVar4,1);
    }
  }
  return uVar5;
}



############ FUN_ 1805169c0 size=43 ############

undefined8 * FUN_1805169c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDropSource>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180516b40 size=43 ############

undefined8 * FUN_180516b40(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IEnumFORMATETC>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180516d30 size=43 ############

undefined8 * FUN_180516d30(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDataObject>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180516fd0 size=102 ############

void * FUN_180516fd0(void *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)((longlong)param_1 + 0xd8);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_1 + 0xa0));
    *(undefined8 *)((longlong)param_1 + 0xd8) = 0;
  }
  FUN_18122acf0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180517040 size=136 ############

undefined8 *
FUN_180517040(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::DragAndDropHelpers::ThreadPoolHolder::vftable;
  FUN_18122a110(param_1 + 1,param_2,0xffffffff,param_4,0xfffffffffffffffe);
  if (DAT_182673b10 == param_1) {
    DAT_182673b10 = (undefined8 *)0x0;
  }
  FUN_18122aa90(param_1 + 1);
  FUN_1812a7170(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180518bd0 size=386 ############

void FUN_180518bd0(longlong param_1,ulonglong param_2)

{
  int iVar1;
  ulonglong *puVar2;
  undefined8 *puVar3;
  ulonglong *_Memory;
  ulonglong *puVar4;
  DWORD DVar5;
  longlong lVar6;
  int iVar7;
  longlong lVar8;
  undefined **local_90;
  longlong local_88;
  undefined ***local_58;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x300));
  lVar6 = FUN_180518400();
  iVar7 = (int)(param_2 % (ulonglong)(longlong)*(int *)(lVar6 + 0x14));
  lVar8 = (longlong)iVar7;
  puVar2 = *(ulonglong **)(*(longlong *)(lVar6 + 8) + lVar8 * 8);
  puVar4 = (ulonglong *)0x0;
  do {
    while( true ) {
      _Memory = puVar2;
      if (_Memory == (ulonglong *)0x0) {
        LOCK();
        *(undefined8 *)(param_1 + 0x348) = 0;
        UNLOCK();
        lVar6 = FUN_1812a7550();
        DVar5 = GetCurrentThreadId();
        if ((ulonglong)DVar5 == *(ulonglong *)(lVar6 + 0x10)) {
          puVar3 = *(undefined8 **)(param_1 + 0x238);
          *(undefined8 *)(param_1 + 0x238) = 0;
          if (puVar3 != (undefined8 *)0x0) {
            (**(code **)*puVar3)(puVar3,1);
          }
        }
        else {
          local_90 = std::_Func_impl_no_alloc<<lambda_f89ff76df756d01a0569e19e1c7cfc93>,void>::
                     vftable;
          local_58 = &local_90;
          local_88 = param_1;
          FUN_1812a7460(&local_90);
        }
                    /* WARNING: Could not recover jumptable at 0x000180518d4b. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x300));
        return;
      }
      if (*_Memory == param_2) break;
      puVar2 = (ulonglong *)_Memory[2];
      puVar4 = _Memory;
    }
    puVar2 = (ulonglong *)_Memory[2];
    if (puVar4 == (ulonglong *)0x0) {
      if (-1 < lVar8) {
        if (iVar7 < *(int *)(lVar6 + 0x14)) {
          *(ulonglong **)(*(longlong *)(lVar6 + 8) + lVar8 * 8) = puVar2;
        }
        else {
          FUN_18047e060(lVar6 + 8,*(int *)(lVar6 + 0x14) + 1);
          iVar1 = *(int *)(lVar6 + 0x14);
          *(int *)(lVar6 + 0x14) = iVar1 + 1;
          *(ulonglong **)(*(longlong *)(lVar6 + 8) + (longlong)iVar1 * 8) = puVar2;
        }
      }
    }
    else {
      puVar4[2] = (ulonglong)puVar2;
    }
    *(int *)(lVar6 + 0x18) = *(int *)(lVar6 + 0x18) + -1;
  } while (_Memory == (ulonglong *)0x0);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805192f0 size=93 ############

void FUN_1805192f0(longlong *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  _Memory = (uint *)(param_1[1] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar4 = (undefined8 *)*param_1;
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  return;
}



############ FUN_ 1805192b0 size=52 ############

void * FUN_1805192b0(void *param_1,ulonglong param_2)

{
  FUN_180517540();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805197d0 size=206 ############

undefined8 * FUN_1805197d0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::FileChooser::Native::vftable;
  param_1[0x16] = juce::FileChooser::Native::vftable;
  FUN_181343150(param_1,0,param_3,param_4,0xfffffffffffffffe);
  FUN_180517890(param_1[0x18]);
  puVar3 = (undefined8 *)param_1[0x18];
  param_1[0x18] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[0x18];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180519e50 size=1644 ############

undefined1 FUN_180519e50(longlong param_1,int *param_2)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  bool bVar3;
  undefined1 uVar4;
  char cVar5;
  wint_t wVar6;
  wint_t wVar7;
  int iVar8;
  undefined4 uVar9;
  int iVar10;
  char *pcVar11;
  byte bVar12;
  byte bVar13;
  int local_res10;
  int iStackX_14;
  undefined4 local_108;
  undefined8 local_104;
  undefined4 local_fc;
  undefined8 local_f8;
  undefined4 local_f0;
  undefined8 local_ec;
  undefined4 local_e4;
  undefined8 local_e0;
  undefined4 local_d8;
  undefined8 local_d4;
  undefined4 local_cc;
  undefined8 local_c8;
  undefined4 local_c0;
  undefined8 local_bc;
  undefined4 local_b4;
  undefined8 local_b0;
  undefined4 local_a8;
  undefined8 local_a4;
  undefined4 local_98;
  float local_94;
  float local_8c;
  undefined4 local_88;
  float local_84;
  float local_7c;
  undefined4 local_78;
  float local_74;
  undefined4 local_68;
  float local_64;
  undefined8 local_58;
  double local_48;
  double dStack_40;
  double local_38;
  double dStack_30;
  
  local_58 = 0xfffffffffffffffe;
  uVar1 = param_2[1];
  bVar12 = (byte)uVar1 & 1;
  if (((uVar1 >> 1 & 1) == 0) && ((uVar1 >> 2 & 1) == 0)) {
    bVar3 = false;
  }
  else {
    bVar3 = true;
  }
  bVar13 = (uVar1 >> 1 & 1) != 0;
  if ((uVar1 >> 2 & 1) != 0) {
    bVar13 = bVar13 + 1;
  }
  if (uVar1 == 2) {
    if (*param_2 == 0x10028) {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x1c8) + 0xc0);
      dStack_40 = *(double *)(lVar2 + 0xf8) + *(double *)(lVar2 + 0xf0);
      local_48 = *(double *)(lVar2 + 0xf8) + *(double *)(lVar2 + 0xe8);
      if (dStack_40 <= local_48) {
        dStack_40 = local_48;
      }
      FUN_18131e660(lVar2,&local_48);
      return 1;
    }
    if (*param_2 == 0x10026) {
      lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x1c8) + 0xc0);
      local_38 = *(double *)(lVar2 + 0xf8) * DAT_1824c46a0;
      dStack_30 = local_38 + *(double *)(lVar2 + 0xf0);
      local_38 = local_38 + *(double *)(lVar2 + 0xe8);
      if (dStack_30 <= local_38) {
        dStack_30 = local_38;
      }
      FUN_18131e660(lVar2,&local_38);
      return 1;
    }
  }
  if (bVar13 < 2) {
    iVar8 = *param_2;
    if (iVar8 == 0x10025) {
      if (bVar3) {
        iVar8 = FUN_1812db4b0(param_1,*(int *)(param_1 + 0x2a4));
      }
      else {
        iVar8 = *(int *)(param_1 + 0x2a4) + -1;
      }
      goto LAB_180519fad;
    }
    if (iVar8 == 0x10027) {
      if (bVar3) {
        iVar8 = FUN_1812db610(param_1,*(int *)(param_1 + 0x2a4));
      }
      else {
        iVar8 = *(int *)(param_1 + 0x2a4) + 1;
      }
      goto LAB_180519fad;
    }
    if (iVar8 == 0x10024) {
      if (bVar3) {
        FUN_1812e1fc0();
        FUN_1812e0100(param_1,0,bVar12);
        return 1;
      }
      goto LAB_18051a022;
    }
    if (iVar8 == 0x10023) {
      if (bVar3) {
        iVar8 = FUN_1812dbb90();
        goto LAB_180519fad;
      }
      goto LAB_18051a051;
    }
  }
  if (bVar13 == 0) {
    iVar8 = *param_2;
    if (iVar8 == 0x10026) {
      if (*(char *)(param_1 + 0x1ee) == '\0') {
LAB_18051a022:
        uVar4 = FUN_1812dde20(param_1,bVar12);
        return uVar4;
      }
      FUN_1812e0660(param_1,&local_78);
      iVar8 = FUN_1812db7b0(param_1,local_78,local_74 - DAT_1824c3ea4);
LAB_180519fad:
      FUN_1812e1fc0(param_1);
      FUN_1812e0100(param_1,iVar8,bVar12);
      return 1;
    }
    if (iVar8 == 0x10028) {
      if (*(char *)(param_1 + 0x1ee) == '\0') {
LAB_18051a051:
        uVar4 = FUN_1812ddd60(param_1,bVar12);
        return uVar4;
      }
      FUN_1812e0660(param_1,&local_98);
      iVar8 = FUN_1812db7b0(param_1,local_98,local_94 + local_8c + DAT_1824c3ea4);
      goto LAB_180519fad;
    }
    if (iVar8 == 0x10021) {
      if (*(char *)(param_1 + 0x1ee) == '\0') goto LAB_18051a022;
      FUN_1812e0660(param_1,&local_68);
      iVar8 = FUN_1812db7b0(param_1,local_68,
                            local_64 - (float)*(int *)(*(longlong *)(param_1 + 0x1c8) + 0x194));
      goto LAB_180519fad;
    }
    if (iVar8 == 0x10022) {
      if (*(char *)(param_1 + 0x1ee) == '\0') goto LAB_18051a051;
      FUN_1812e0660(param_1,&local_88);
      iVar8 = FUN_1812db7b0(param_1,local_88,
                            local_84 + local_7c +
                            (float)*(int *)(*(longlong *)(param_1 + 0x1c8) + 0x194));
      goto LAB_180519fad;
    }
  }
  if (uVar1 == 2) {
    iVar8 = *param_2;
    if (iVar8 == 99) goto LAB_18051a48b;
    if (iVar8 < 0x100) {
      wVar6 = towlower((wint_t)iVar8);
      wVar7 = towlower(99);
      if (wVar6 == wVar7) goto LAB_18051a48b;
    }
  }
  local_108 = 0x1002d;
  local_104 = 2;
  cVar5 = FUN_1813389f0(param_2,&local_108);
  if (cVar5 != '\0') {
LAB_18051a48b:
    FUN_1812e1fc0(param_1);
    FUN_1812dfce0(param_1);
    return 1;
  }
  local_fc = 0x78;
  local_f8 = 2;
  cVar5 = FUN_1813389f0(param_2,&local_fc);
  if (cVar5 != '\0') {
LAB_18051a481:
    uVar4 = FUN_1812ddc10(param_1);
    return uVar4;
  }
  local_f0 = 0x1002e;
  local_ec = 1;
  cVar5 = FUN_1813389f0(param_2,&local_f0);
  if (cVar5 != '\0') goto LAB_18051a481;
  local_e4 = 0x76;
  local_e0 = 2;
  cVar5 = FUN_1813389f0(param_2,&local_e4);
  if (cVar5 != '\0') {
LAB_18051a400:
    FUN_1812e1fc0(param_1);
    if (*(char *)(param_1 + 0x1ec) != '\0') {
      return 1;
    }
    if ((*(byte *)(param_1 + 0xa9) & 0x10) != 0) {
      return 1;
    }
    if ((*(longlong *)(param_1 + 0x18) != 0) && (cVar5 = FUN_18133eaa0(), cVar5 == '\0')) {
      return 1;
    }
    FUN_1812c5ee0(&local_res10);
    pcVar11 = (char *)CONCAT44(iStackX_14,local_res10);
    if (*pcVar11 != '\0') {
      (**(code **)(*(longlong *)(param_1 + 0xb0) + 0x30))((longlong *)(param_1 + 0xb0),&local_res10)
      ;
      pcVar11 = (char *)CONCAT44(iStackX_14,local_res10);
    }
    _Memory = (uint *)(pcVar11 + -0x10);
    if ((*_Memory & 0x30000000) != 0) {
      return 1;
    }
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 != 0) {
      return 1;
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  local_d8 = 0x1002d;
  local_d4 = 1;
  cVar5 = FUN_1813389f0(param_2,&local_d8);
  if (cVar5 != '\0') goto LAB_18051a400;
  if (1 < bVar13) {
LAB_18051a355:
    local_cc = 0x61;
    local_c8 = 2;
    cVar5 = FUN_1813389f0(param_2,&local_cc);
    if (cVar5 != '\0') {
      uVar4 = FUN_1812ddaf0(param_1);
      return uVar4;
    }
    local_c0 = 0x7a;
    local_bc = 2;
    cVar5 = FUN_1813389f0(param_2,&local_c0);
    if (cVar5 == '\0') {
      local_b4 = 0x79;
      local_b0 = 2;
      cVar5 = FUN_1813389f0(param_2,&local_b4);
      if (cVar5 == '\0') {
        local_a8 = 0x7a;
        local_a4 = 3;
        cVar5 = FUN_1813389f0(param_2,&local_a8);
        if (cVar5 == '\0') {
          return 0;
        }
      }
      uVar4 = FUN_1812e1f00(param_1,0);
      return uVar4;
    }
    uVar4 = FUN_1812e1f00(param_1,1);
    return uVar4;
  }
  if (*param_2 == 8) {
    if (bVar3) {
      uVar9 = FUN_1812db4b0(param_1,*(undefined4 *)(param_1 + 0x2a4));
      FUN_1812e0100(param_1,uVar9,1);
      FUN_1812dfba0(param_1);
      return 1;
    }
    iVar8 = *(int *)(param_1 + 0x284);
    if ((*(int *)(param_1 + 0x280) != iVar8) || (*(int *)(param_1 + 0x280) < 1)) goto LAB_18051a30b;
    local_res10 = iVar8 + -1;
    iStackX_14 = local_res10;
    if (local_res10 < iVar8) {
      iStackX_14 = iVar8;
    }
  }
  else {
    if (*param_2 != 0x1002e) goto LAB_18051a355;
    if ((*(int *)(param_1 + 0x280) != *(int *)(param_1 + 0x284)) ||
       (iVar8 = *(int *)(param_1 + 0x280), iVar10 = FUN_1812dbb90(param_1), iVar10 <= iVar8))
    goto LAB_18051a30b;
    local_res10 = *(int *)(param_1 + 0x280);
    iStackX_14 = local_res10;
    if (local_res10 < local_res10 + 1) {
      iStackX_14 = local_res10 + 1;
    }
  }
  *(ulonglong *)(param_1 + 0x280) = CONCAT44(iStackX_14,local_res10);
LAB_18051a30b:
  FUN_1812dfba0(param_1);
  return 1;
}



############ FUN_ 1812c5ee0 size=222 ############

longlong * FUN_1812c5ee0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  BOOL BVar3;
  HANDLE hMem;
  LPVOID pvVar4;
  SIZE_T SVar5;
  longlong local_res10;
  undefined4 uVar6;
  undefined8 uVar7;
  
  uVar7 = 0xfffffffffffffffe;
  *param_1 = (longlong)&DAT_1821dbf98;
  uVar6 = 1;
  BVar3 = OpenClipboard((HWND)0x0);
  if (BVar3 != 0) {
    hMem = GetClipboardData(0xd);
    if (hMem != (HANDLE)0x0) {
      pvVar4 = GlobalLock(hMem);
      if (pvVar4 != (LPVOID)0x0) {
        SVar5 = GlobalSize(hMem);
        FUN_18049cc00(&local_res10,pvVar4,SVar5 >> 1,param_4,uVar6,uVar7);
        lVar2 = *param_1;
        *param_1 = local_res10;
        _Memory = (uint *)(lVar2 + -0x10);
        if ((*_Memory & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory;
          *_Memory = *_Memory - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory);
          }
        }
        GlobalUnlock(hMem);
      }
    }
    CloseClipboard();
  }
  return param_1;
}



############ FUN_ 1812db4b0 size=341 ############

int FUN_1812db4b0(longlong param_1,int param_2)

{
  uint uVar1;
  wint_t wVar2;
  int iVar3;
  int iVar4;
  uint *_Memory;
  int iVar5;
  int iVar6;
  char cVar7;
  char cVar8;
  longlong local_res18;
  int local_res20;
  int local_res24;
  
  if (param_2 < 1) {
    return 0;
  }
  iVar6 = 0;
  if (0 < param_2 + -0x200) {
    iVar6 = param_2 + -0x200;
  }
  local_res24 = iVar6;
  if (iVar6 < param_2) {
    local_res24 = param_2;
  }
  local_res20 = iVar6;
  (**(code **)(*(longlong *)(param_1 + 0xb0) + 0x28))
            ((longlong *)(param_1 + 0xb0),&local_res18,&local_res20);
  iVar4 = param_2 - iVar6;
  do {
    iVar5 = iVar4;
    if (iVar5 < 1) goto LAB_1812db5ce;
    wVar2 = FUN_180493050(&local_res18,iVar5 + -1);
    iVar3 = iswspace(wVar2);
    iVar4 = iVar5 + -1;
  } while (iVar3 != 0);
  if (0 < iVar5) {
    wVar2 = FUN_180493050(&local_res18,iVar5 + -1);
    iVar4 = iswalnum(wVar2);
    if (iVar4 == 0) {
      iVar4 = iswspace(wVar2);
      cVar7 = iVar4 == 0;
    }
    else {
      cVar7 = '\x02';
    }
    do {
      iVar4 = iVar5 + -1;
      wVar2 = FUN_180493050(&local_res18,iVar4);
      iVar3 = iswalnum(wVar2);
      if (iVar3 == 0) {
        iVar3 = iswspace(wVar2);
        cVar8 = iVar3 == 0;
      }
      else {
        cVar8 = '\x02';
      }
    } while ((cVar7 == cVar8) && (iVar5 = iVar4, 0 < iVar4));
  }
LAB_1812db5ce:
  _Memory = (uint *)(local_res18 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar5 + iVar6;
}



############ FUN_ 1812db610 size=408 ############

int FUN_1812db610(longlong param_1,int param_2)

{
  byte *pbVar1;
  uint uVar2;
  byte bVar3;
  wint_t wVar4;
  int iVar5;
  byte *pbVar6;
  uint *_Memory;
  int iVar7;
  int iVar8;
  char cVar9;
  char cVar10;
  byte *local_res8;
  int local_res18;
  int local_res1c;
  
  local_res1c = param_2;
  if (param_2 < param_2 + 0x200) {
    local_res1c = param_2 + 0x200;
  }
  local_res18 = param_2;
  (**(code **)(*(longlong *)(param_1 + 0xb0) + 0x28))
            ((longlong *)(param_1 + 0xb0),&local_res8,&local_res18);
  iVar8 = 0;
  pbVar6 = local_res8;
LAB_1812db660:
  do {
    bVar3 = *pbVar6;
    pbVar6 = pbVar6 + 1;
    if ((char)bVar3 < '\0') {
      if ((*pbVar6 & 0xc0) == 0x80) {
        do {
          pbVar1 = pbVar6 + 1;
          pbVar6 = pbVar6 + 1;
        } while ((*pbVar1 & 0xc0) == 0x80);
        iVar8 = iVar8 + 1;
        goto LAB_1812db660;
      }
    }
    else if (bVar3 == 0) goto LAB_1812db69d;
    iVar8 = iVar8 + 1;
  } while( true );
joined_r0x0001812db740:
  if (iVar8 <= iVar7) goto LAB_1812db761;
  wVar4 = FUN_180493050(&local_res8,iVar7);
  iVar5 = iswspace(wVar4);
  if (iVar5 == 0) goto LAB_1812db761;
  iVar7 = iVar7 + 1;
  goto joined_r0x0001812db740;
LAB_1812db69d:
  iVar7 = 0;
  if (0 < iVar8) {
    do {
      wVar4 = FUN_180493050(&local_res8,iVar7);
      iVar5 = iswspace(wVar4);
      if (iVar5 == 0) break;
      iVar7 = iVar7 + 1;
    } while (iVar7 < iVar8);
  }
  wVar4 = FUN_180493050(&local_res8,iVar7);
  iVar5 = iswalnum(wVar4);
  if (iVar5 == 0) {
    iVar5 = iswspace(wVar4);
    cVar9 = iVar5 == 0;
  }
  else {
    cVar9 = '\x02';
  }
  for (; iVar7 < iVar8; iVar7 = iVar7 + 1) {
    wVar4 = FUN_180493050(&local_res8,iVar7);
    iVar5 = iswalnum(wVar4);
    if (iVar5 == 0) {
      iVar5 = iswspace(wVar4);
      cVar10 = iVar5 == 0;
    }
    else {
      cVar10 = '\x02';
    }
    if (cVar9 != cVar10) goto joined_r0x0001812db740;
  }
LAB_1812db761:
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return iVar7 + param_2;
}



############ FUN_ 1812db7b0 size=646 ############

ulonglong FUN_1812db7b0(longlong param_1,float param_2,float param_3)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  undefined8 uVar4;
  float *pfVar5;
  ulonglong uVar6;
  uint *puVar7;
  longlong lVar8;
  float fVar9;
  longlong local_res8;
  void *local_c8;
  undefined8 local_c0;
  uint local_b8;
  float local_b4;
  float local_ac;
  float local_a4;
  float local_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined4 local_6c;
  longlong local_60;
  undefined8 local_48;
  
  local_48 = 0xfffffffffffffffe;
  if ((*(char *)(param_1 + 0x1ef) == '\0') ||
     (0.0 < (float)((*(int *)(*(longlong *)(param_1 + 0x1c8) + 0xf8) - *(int *)(param_1 + 0x288)) +
                   -3))) {
    FUN_1805074f0(&local_b8,param_1);
    do {
      do {
        cVar1 = FUN_1805075e0(&local_b8);
        if (cVar1 == '\0') {
          puVar7 = (uint *)(local_60 + -0x10);
          if ((*puVar7 & 0x30000000) == 0) {
            LOCK();
            uVar3 = *puVar7;
            *puVar7 = *puVar7 - 1;
            UNLOCK();
            if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              free(puVar7);
            }
          }
          goto LAB_1812dba0c;
        }
      } while (local_ac + local_b4 <= param_3);
      if (param_3 < local_b4) {
        uVar3 = local_b8 - 1;
        local_b8 = 0;
        if (0 < (int)uVar3) {
          local_b8 = uVar3;
        }
        goto LAB_1812db9c0;
      }
      if (((param_2 <= local_a4) ||
          (uVar4 = local_98, fVar9 = local_a4, iVar2 = FUN_180493050(local_98,0), iVar2 == 0xd)) ||
         (iVar2 = FUN_180493050(uVar4,0), iVar2 == 10)) goto LAB_1812db9c0;
    } while (local_a0 <= param_2);
    if (((fVar9 < param_2) && (iVar2 = FUN_180493050(uVar4,0), iVar2 != 0xd)) &&
       (iVar2 = FUN_180493050(uVar4,0), iVar2 != 10)) {
      lVar8 = 0;
      local_c8 = (void *)0x0;
      local_c0 = 0;
      FUN_1804aebd0(&local_c8,200);
      uVar4 = FUN_180506630(local_98,&local_res8,local_6c);
      FUN_1812510e0(&local_c8,local_90,uVar4,local_a4,0,DAT_1824c4620,0);
      puVar7 = (uint *)(local_res8 + -0x10);
      if ((*puVar7 & 0x30000000) == 0) {
        LOCK();
        uVar3 = *puVar7;
        *puVar7 = *puVar7 - 1;
        UNLOCK();
        if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar7);
        }
      }
      if (0 < local_c0._4_4_) {
        pfVar5 = (float *)((longlong)local_c8 + 0x10);
        do {
          if (param_2 < (*pfVar5 + *pfVar5 + pfVar5[2]) * DAT_1824c3d8c) break;
          lVar8 = lVar8 + 1;
          pfVar5 = pfVar5 + 8;
        } while (lVar8 < local_c0._4_4_);
      }
      FUN_1804aeb50(&local_c8);
                    /* WARNING: Subroutine does not return */
      free(local_c8);
    }
LAB_1812db9c0:
    puVar7 = (uint *)(local_60 + -0x10);
    if ((*puVar7 & 0x30000000) == 0) {
      LOCK();
      uVar3 = *puVar7;
      *puVar7 = *puVar7 - 1;
      UNLOCK();
      if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar7);
      }
    }
    uVar6 = (ulonglong)local_b8;
  }
  else {
LAB_1812dba0c:
    uVar6 = FUN_1812dbb90(param_1);
  }
  return uVar6;
}



############ FUN_ 1812dfba0 size=144 ############

void FUN_1812dfba0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  char cVar2;
  uint *_Memory;
  undefined1 *local_res8 [4];
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  if ((*(char *)(param_1 + 0x1ec) == '\0') && ((*(byte *)(param_1 + 0xa9) & 0x10) == 0)) {
    if ((*(longlong *)(param_1 + 0x18) != 0) && (cVar2 = FUN_18133eaa0(), cVar2 == '\0')) {
      return;
    }
    FUN_1812e08d0(param_1,*(undefined4 *)(param_1 + 0x284),param_3,param_4,uVar3);
    local_res8[0] = &DAT_1821dbf98;
    (**(code **)(*(longlong *)(param_1 + 0xb0) + 0x30))((longlong *)(param_1 + 0xb0),local_res8);
    _Memory = (uint *)(local_res8[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 1812dfce0 size=117 ############

void FUN_1812dfce0(longlong param_1)

{
  uint uVar1;
  BOOL BVar2;
  uint *_Memory;
  char *local_res8 [4];
  
  if (*(int *)(param_1 + 0x2c4) == 0) {
    (**(code **)(*(longlong *)(param_1 + 0xb0) + 0x28))
              ((longlong *)(param_1 + 0xb0),local_res8,param_1 + 0x280);
    if (*local_res8[0] != '\0') {
      BVar2 = OpenClipboard((HWND)0x0);
      if (BVar2 != 0) {
        FUN_1812c5fd0(local_res8);
      }
    }
    _Memory = (uint *)(local_res8[0] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  return;
}



############ FUN_ 18051c0c0 size=43 ############

undefined8 * FUN_18051c0c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDataObject>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18051c0f0 size=43 ############

undefined8 * FUN_18051c0f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IEnumFORMATETC>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18051c120 size=43 ############

undefined8 * FUN_18051c120(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDropTarget>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180520d90 size=79 ############

void FUN_180520d90(void *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 8);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180520e20 size=53 ############

void FUN_180520e20(void *param_1,char param_2)

{
  FUN_1805192f0((longlong)param_1 + 8);
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180520f30 size=79 ############

void FUN_180520f30(void *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 8);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 1805210f0 size=53 ############

void FUN_1805210f0(void *param_1,char param_2)

{
  FUN_18050c410((longlong)param_1 + 8);
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180521160 size=79 ############

void FUN_180521160(void *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 8);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180521290 size=83 ############

void FUN_180521290(void *param_1,char param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180521490 size=79 ############

void FUN_180521490(void *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 8);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 1805224f0 size=79 ############

void FUN_1805224f0(void *param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 0x10);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 1805226a0 size=53 ############

void FUN_1805226a0(void *param_1,char param_2)

{
  FUN_18051fee0((longlong)param_1 + 8);
  if (param_2 != '\0') {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return;
}



############ FUN_ 180522c50 size=94 ############

void FUN_180522c50(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong lVar2;
  undefined8 uVar3;
  uint *_Memory;
  longlong local_res8 [4];
  
  lVar2 = *(longlong *)(param_1 + 8);
  uVar3 = FUN_181241230(lVar2 + 0xf8,local_res8,param_3,param_4,0xfffffffffffffffe);
  FUN_18132bdc0(lVar2,uVar3);
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1805267a0 size=52 ############

void * FUN_1805267a0(void *param_1,ulonglong param_2)

{
  FUN_1813513c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805268c0 size=72 ############

void * FUN_1805268c0(void *param_1,uint param_2)

{
  (**(code **)(**(longlong **)((longlong)param_1 + 0x30) + 0xb0))
            (*(longlong **)((longlong)param_1 + 0x30),(longlong)param_1 + 0x38);
  FUN_1813513c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805279e0 size=52 ############

void * FUN_1805279e0(void *param_1,ulonglong param_2)

{
  FUN_180526a30();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180527a20 size=162 ############

void * FUN_180527a20(void *param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  (**(code **)(**(longlong **)((longlong)param_1 + 0x28) + 0xb0))
            (*(longlong **)((longlong)param_1 + 0x28),(longlong)param_1 + 0x30);
  (**(code **)(**(longlong **)((longlong)param_1 + 0x18) + 0xb0))
            (*(longlong **)((longlong)param_1 + 0x18),(longlong)param_1 + 0x20);
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x10) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  puVar4 = *(undefined8 **)((longlong)param_1 + 8);
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar3 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar3 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180527ad0 size=89 ############

undefined8 * FUN_180527ad0(undefined8 *param_1,uint param_2)

{
  *param_1 = juce::ValueTreeSynchroniser::vftable;
  FUN_181351090(param_1 + 1,param_1);
  FUN_181352e50(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180527b30 size=52 ############

void * FUN_180527b30(void *param_1,ulonglong param_2)

{
  FUN_181352b00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180527b70 size=164 ############

void FUN_180527b70(longlong *param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = (uint *)(param_1[3] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[2] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[1] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*param_1 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return;
}



############ FUN_ 180528ba0 size=43 ############

undefined8 *
.?AVSoothe2AudioProcessor@@::vtbl___AVSoothe2AudioProcessor__(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ParametricEqualizerListener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18052d600 size=52 ############

void * FUN_18052d600(void *param_1,ulonglong param_2)

{
  FUN_18052d280();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180576470 size=330 ############

void FUN_180576470(longlong *param_1)

{
  void *pvVar1;
  void *pvVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  
  pvVar1 = (void *)param_1[1];
  lVar4 = *param_1;
  uVar5 = (longlong)pvVar1 - lVar4;
  uVar3 = param_1[2] - lVar4;
  if (uVar3 < 0x20) {
    if (0x7fffffffffffffff - (uVar3 >> 1) < uVar3) {
      uVar3 = 0x20;
    }
    else {
      uVar3 = (uVar3 >> 1) + uVar3;
      if (uVar3 < 0x20) {
        uVar3 = 0x20;
      }
    }
    pvVar2 = (void *)FUN_180480500(uVar3);
    memset((void *)((longlong)pvVar2 + uVar5),0,0x20 - uVar5);
    memmove(pvVar2,(void *)*param_1,param_1[1] - *param_1);
    pvVar1 = (void *)*param_1;
    if (pvVar1 != (void *)0x0) {
      pvVar2 = pvVar1;
      if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
         (pvVar2 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    *param_1 = (longlong)pvVar2;
    param_1[1] = (longlong)pvVar2 + 0x20;
    param_1[2] = (longlong)pvVar2 + uVar3;
  }
  else {
    if (uVar5 < 0x20) {
      lVar4 = (longlong)pvVar1 + (0x20 - uVar5);
      memset(pvVar1,0,lVar4 - (longlong)pvVar1);
      param_1[1] = lVar4;
      return;
    }
    if (uVar5 != 0x20) {
      param_1[1] = lVar4 + 0x20;
      return;
    }
  }
  return;
}



############ FUN_ 1805af600 size=458 ############

void FUN_1805af600(longlong *param_1,longlong param_2,longlong param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  void *_Memory;
  undefined8 *puVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  
  puVar1 = (undefined8 *)param_1[1];
  puVar6 = (undefined8 *)*param_1;
  uVar3 = (param_3 - param_2) / 0x68;
  uVar8 = ((longlong)puVar1 - (longlong)puVar6) / 0x68;
  uVar4 = (param_1[2] - (longlong)puVar6) / 0x68;
  if (uVar4 < uVar3) {
    if (0x276276276276276 < uVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar8 = uVar3;
    if ((uVar4 <= 0x276276276276276 - (uVar4 >> 1)) && (uVar8 = (uVar4 >> 1) + uVar4, uVar8 < uVar3)
       ) {
      uVar8 = uVar3;
    }
    if (puVar6 != (undefined8 *)0x0) {
      for (; puVar6 != puVar1; puVar6 = puVar6 + 0xd) {
        (**(code **)*puVar6)(puVar6,0);
      }
      pvVar2 = (void *)*param_1;
      _Memory = pvVar2;
      if ((0xfff < uVar4 * 0x68) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    FUN_1805bbce0(param_1,uVar8);
    lVar5 = FUN_1805b14f0(param_1,param_2,param_3,*param_1);
    param_1[1] = lVar5;
  }
  else if (uVar8 < uVar3) {
    lVar5 = uVar8 * 0x68 + param_2;
    FUN_1805afe20(param_2,lVar5,puVar6);
    lVar5 = FUN_1805b14f0(param_1,lVar5,param_3,param_1[1]);
    param_1[1] = lVar5;
  }
  else {
    FUN_1805afe20(param_2,param_3,puVar6);
    puVar1 = (undefined8 *)param_1[1];
    for (puVar7 = puVar6 + uVar3 * 0xd; puVar7 != puVar1; puVar7 = puVar7 + 0xd) {
      (**(code **)*puVar7)(puVar7,0);
    }
    param_1[1] = (longlong)(puVar6 + uVar3 * 0xd);
  }
  return;
}



############ FUN_ 18079ee40 size=641 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079ee40(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_98 [32];
  short local_78 [2];
  uint local_74;
  uint local_70;
  int local_6c;
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  do {
    if (local_6c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar1;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_78[0] == 1) {
      if (local_6c != 8) goto LAB_18079f02d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 100) = 1;
    }
    else if (local_78[0] == 10) {
      if (local_6c != 0xf) goto LAB_18079f02d;
      *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0x10);
      (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_70);
      FUN_1805b1330(param_1 + 0x10,local_70,param_1 + 0x10);
      uVar3 = 0;
      if (local_70 != 0) {
        do {
          (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x10));
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_70);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x65) = 1;
    }
    else if (local_78[0] == 0xb) {
      if (local_6c != 0xf) goto LAB_18079f02d;
      *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(param_1 + 0x28);
      (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_74);
      FUN_1805b1330(param_1 + 0x28,local_74,param_1 + 0x28);
      uVar3 = 0;
      if (local_74 != 0) {
        do {
          (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x28));
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_74);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x66) = 1;
    }
    else if (local_78[0] == 0x14) {
      if (local_6c != 0xb) goto LAB_18079f02d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x40);
      *(undefined1 *)(param_1 + 0x67) = 1;
    }
    else if ((local_78[0] == 10000) && (local_6c == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x60);
      *(undefined1 *)(param_1 + 0x68) = 1;
    }
    else {
LAB_18079f02d:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  } while( true );
}



############ FUN_ 1805371e0 size=170 ############

void FUN_1805371e0(longlong param_1,undefined8 *param_2)

{
  uint uVar1;
  uint *_Memory;
  undefined1 *local_res8;
  undefined8 local_res10;
  undefined1 **local_res18;
  undefined8 *local_res20;
  
  local_res10 = *param_2;
  *param_2 = &DAT_1821dbf98;
  local_res18 = &local_res8;
  local_res20 = &local_res10;
  local_res8 = &DAT_1821dbf98;
  local_res20 = (undefined8 *)FUN_18113e800(local_res20,0xff547ddd,&DAT_1824aba30,0xb);
  FUN_18119aa60(*(undefined8 *)(param_1 + 8),local_res20);
  FUN_18141a660(&local_res10);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18141a660 size=568 ############

float FUN_18141a660(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  bool bVar3;
  char cVar4;
  char cVar5;
  undefined8 *puVar6;
  byte *pbVar7;
  uint *puVar8;
  int iVar9;
  int iVar10;
  double dVar11;
  float fVar12;
  longlong local_res18;
  longlong local_res20;
  
  iVar9 = 0;
  cVar4 = FUN_181230100(param_1,&DAT_182278f04,param_3,param_4,0xfffffffffffffffe);
  cVar5 = FUN_181230100(param_1,&DAT_18227bfe4);
  local_res18 = *param_1;
  dVar11 = (double)FUN_18049bd80(&local_res18);
  fVar12 = (float)dVar11;
  if ((cVar5 != '\0') || (iVar10 = iVar9, cVar4 != '\0')) {
    puVar6 = (undefined8 *)FUN_181248e40(param_1,&local_res20);
    iVar10 = 1;
    pbVar7 = (byte *)*puVar6;
LAB_18141a700:
    do {
      bVar2 = *pbVar7;
      pbVar7 = pbVar7 + 1;
      if ((char)bVar2 < '\0') {
        if ((*pbVar7 & 0xc0) == 0x80) {
          do {
            pbVar7 = pbVar7 + 1;
          } while ((*pbVar7 & 0xc0) == 0x80);
          iVar9 = iVar9 + 1;
          goto LAB_18141a700;
        }
      }
      else if (bVar2 == 0) goto LAB_18141a72d;
      iVar9 = iVar9 + 1;
    } while( true );
  }
LAB_18141a738:
  bVar3 = false;
LAB_18141a73b:
  if ((iVar10 != 0) && (puVar8 = (uint *)(local_res20 + -0x10), (*puVar8 & 0x30000000) == 0)) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  if (bVar3) {
    fVar12 = (float)(cVar4 == '\0');
  }
  else {
    if (cVar5 != '\0') {
      fVar12 = (float)((double)(fVar12 / DAT_1824c44dc) * DAT_1824c4050);
      puVar8 = (uint *)(*param_1 + -0x10);
      if ((*puVar8 & 0x30000000) != 0) {
        return fVar12;
      }
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 != 0) {
        return fVar12;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
    if (cVar4 != '\0') {
      fVar12 = (float)((double)(DAT_1824c3ea4 - fVar12 / DAT_1824c44dc) * DAT_1824c4050 +
                      DAT_1824c4050);
      puVar8 = (uint *)(*param_1 + -0x10);
      if ((*puVar8 & 0x30000000) != 0) {
        return fVar12;
      }
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 != 0) {
        return fVar12;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
    if ((fVar12 < 0.0) || (DAT_1824c3ea4 < fVar12)) {
      puVar8 = (uint *)(*param_1 + -0x10);
      if ((*puVar8 & 0x30000000) != 0) {
        return DAT_1824c3d8c;
      }
      LOCK();
      uVar1 = *puVar8;
      *puVar8 = *puVar8 - 1;
      UNLOCK();
      if (uVar1 != 0) {
        return DAT_1824c3d8c;
      }
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  puVar8 = (uint *)(*param_1 + -0x10);
  if ((*puVar8 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar8;
    *puVar8 = *puVar8 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar8);
    }
  }
  return fVar12;
LAB_18141a72d:
  if (iVar9 == 1) {
    bVar3 = true;
    goto LAB_18141a73b;
  }
  goto LAB_18141a738;
}



############ FUN_ 1805376a0 size=124 ############

void .?AV?$_Func_impl_no_alloc@V?$_Binder@U_Unforced@std@@P8?$CloudyAudioProcessor@V?$Soothe2ModuleBase@M$01@@VSoothe2ModuleDecryptor@@VParameterStates@@M@@EAAXXZPEAV3@@std@@X$$V@std@@
     ::
     vtbl___AV___Func_impl_no_alloc_V___Binder_U_Unforced_std__P8__CloudyAudioProcessor_V__Soothe2ModuleBase_M_01__VSoothe2ModuleDecryptor__VParameterStates__M__EAAXXZPEAV3__std__X__V_std__
               (undefined8 param_1,longlong *param_2)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res8;
  longlong *local_res10;
  
  local_res8 = *param_2;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  local_res10 = &local_res8;
  FUN_18141ac10(&local_res8);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180537740 size=141 ############

undefined4 FUN_180537740(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  undefined4 uVar3;
  longlong local_res8;
  longlong *local_res10;
  
  local_res8 = *param_2;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  local_res10 = &local_res8;
  plVar2 = *(longlong **)(param_1 + 0x40);
  if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  uVar3 = (**(code **)(*plVar2 + 0x10))(plVar2,&local_res8,param_1,param_4,0xfffffffffffffffe);
  _Memory = (uint *)(local_res8 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return uVar3;
}



############ FUN_ 180538030 size=93 ############

undefined8 * FUN_180538030(longlong param_1,undefined8 *param_2,undefined4 *param_3)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  undefined8 *local_res10 [3];
  
  local_res10[0] = param_2;
  puVar2 = (undefined8 *)(**(code **)(param_1 + 8))(local_res10,*param_3);
  *param_2 = *puVar2;
  *puVar2 = &DAT_1821dbf98;
  _Memory = (uint *)(local_res10[0] + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 1805385d0 size=52 ############

void * FUN_1805385d0(void *param_1,ulonglong param_2)

{
  FUN_1813afb80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180538610 size=52 ############

void * FUN_180538610(void *param_1,ulonglong param_2)

{
  FUN_180538650();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180538650 size=132 ############

void FUN_180538650(longlong param_1)

{
  uint uVar1;
  undefined8 *_Memory;
  uint *_Memory_00;
  
  _Memory = *(undefined8 **)(param_1 + 0x78);
  if (_Memory != (undefined8 *)0x0) {
    if ((LPCVOID)*_Memory != (LPCVOID)0x0) {
      UnmapViewOfFile((LPCVOID)*_Memory);
    }
    if ((HANDLE)_Memory[3] != (HANDLE)0x0) {
      CloseHandle((HANDLE)_Memory[3]);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  _Memory_00 = (uint *)(*(longlong *)(param_1 + 0x60) + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  FUN_1813afb80(param_1);
  return;
}



############ FUN_ 180538760 size=52 ############

void * FUN_180538760(void *param_1,ulonglong param_2)

{
  FUN_1813aeac0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805387a0 size=91 ############

undefined8 * FUN_1805387a0(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::AudioSubsectionReader::vftable;
  if ((*(char *)(param_1 + 0xf) != '\0') &&
     (puVar1 = (undefined8 *)param_1[0xc], puVar1 != (undefined8 *)0x0)) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1813afb80(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053adc0 size=52 ############

void * FUN_18053adc0(void *param_1,ulonglong param_2)

{
  FUN_1813afb80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053c0e0 size=52 ############

void * FUN_18053c0e0(void *param_1,ulonglong param_2)

{
  FUN_180538650();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053d5a0 size=124 ############

undefined8 * FUN_18053d5a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::FlacWriter::vftable;
  if (*(char *)(param_1 + 0xb) == '\0') {
    param_1[9] = 0;
  }
  else {
    FUN_18139c0c0(param_1[0xc]);
    (**(code **)(*(longlong *)param_1[9] + 8))();
  }
  FUN_18139d160(param_1[0xc]);
  FUN_1813aeac0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18053ebe0 size=163 ############

void FUN_18053ebe0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  char *pcVar2;
  undefined4 uVar3;
  undefined8 *puVar4;
  
  uVar3 = FUN_1812498b0(param_2,param_3,*(undefined1 *)(param_2 + 0x20),0);
  puVar4 = (undefined8 *)FUN_181249970(param_2 + 0x10,uVar3);
  pcVar2 = (char *)*puVar4;
  _Memory = (uint *)(pcVar2 + -0x10);
  if ((*(uint *)(pcVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if (*pcVar2 != '\0') {
    FUN_181388810(param_1 + 0x248,param_4);
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18053ec90 size=187 ############

undefined8 *
FUN_18053ec90(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  *param_1 = juce::OggWriter::vftable;
  if (*(char *)(param_1 + 0xb) == '\0') {
    FUN_181388250(param_1 + 0x44);
    param_1[9] = 0;
  }
  else {
    FUN_18053e9f0(param_1,0,param_3,param_4,0xfffffffffffffffe);
    FUN_181392710(param_1 + 0xc);
    FUN_181390bc0(param_1 + 0x5d);
    FUN_18138ffc0(param_1 + 0x4d);
    FUN_181388560(param_1 + 0x49);
    FUN_181388250(param_1 + 0x44);
    (**(code **)(*(longlong *)param_1[9] + 8))();
  }
  FUN_1813aeac0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18136e020 size=428 ############

undefined8 FUN_18136e020(longlong param_1,longlong *param_2,undefined4 *param_3)

{
  uint *_Memory;
  int iVar1;
  undefined8 *puVar2;
  void *_Dst;
  uint uVar3;
  undefined8 uVar4;
  bool bVar5;
  undefined1 local_res8 [8];
  undefined4 local_res18 [2];
  int local_res20 [2];
  char *local_38;
  
  iVar1 = FUN_1812498b0(param_1,param_3,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar1 < 0) {
    local_38 = "";
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      DAT_1821dbf88 = DAT_1821dbf88 + 1;
      UNLOCK();
    }
  }
  else {
    puVar2 = (undefined8 *)FUN_181249970(param_1 + 0x10,iVar1);
    local_38 = (char *)*puVar2;
    if ((*(uint *)(local_38 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_38 + -0x10) = *(int *)(local_38 + -0x10) + 1;
      UNLOCK();
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar5 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar5) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if (*local_38 == '\0') {
    uVar4 = 0;
  }
  else {
    iVar1 = FUN_18049d240(local_38);
    uVar3 = iVar1 + 1;
    local_res18[0] = *param_3;
    (**(code **)(*param_2 + 0x20))(param_2,local_res18,4);
    local_res20[0] = (uVar3 & 1) + uVar3;
    (**(code **)(*param_2 + 0x20))(param_2,local_res20,4);
    if (uVar3 != 0) {
      _Dst = (void *)FUN_181234e40(param_2,(longlong)(int)uVar3);
      if (_Dst != (void *)0x0) {
        memcpy(_Dst,local_38,(longlong)(int)uVar3);
      }
    }
    if ((*(byte *)(param_2 + 7) & 1) != 0) {
      local_res8[0] = 0;
      (**(code **)(*param_2 + 0x20))(param_2,local_res8,1);
    }
    uVar4 = 1;
  }
  _Memory = (uint *)(local_38 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return uVar4;
}



############ FUN_ 18136e9a0 size=1038 ############

void FUN_18136e9a0(longlong param_1,longlong *param_2,longlong *param_3)

{
  uint *_Memory;
  undefined8 **ppuVar1;
  int iVar2;
  uint uVar3;
  longlong *plVar4;
  uint *puVar5;
  undefined8 **ppuVar6;
  undefined1 local_res8 [8];
  undefined2 local_res10 [4];
  undefined2 local_res18 [4];
  undefined2 local_res20 [4];
  undefined2 local_a8 [4];
  longlong *local_a0;
  longlong *local_98;
  longlong local_90;
  undefined4 local_88;
  int local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  uint local_74;
  longlong local_70;
  longlong *local_68;
  undefined8 **local_60;
  undefined8 **local_58;
  undefined8 local_50;
  
  local_50 = 0xfffffffffffffffe;
  local_90 = *param_2;
  if ((*(uint *)(local_90 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_90 + -0x10) = *(int *)(local_90 + -0x10) + 1;
    UNLOCK();
  }
  local_68 = &local_90;
  FUN_181232e20(&local_90,&DAT_182256694,&DAT_182256698);
  local_68 = (longlong *)local_90;
  _Memory = (uint *)(local_90 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  puVar5 = (uint *)(local_90 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  iVar2 = FUN_1812498b0(param_1,local_90,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar2 < 0) {
    local_70 = *param_2;
    puVar5 = (uint *)(local_70 + -0x10);
    uVar3 = *puVar5;
  }
  else {
    plVar4 = (longlong *)FUN_181249970(param_1 + 0x10,iVar2);
    local_70 = *plVar4;
    puVar5 = (uint *)(local_70 + -0x10);
    uVar3 = *puVar5;
  }
  if ((uVar3 & 0x30000000) == 0) {
    LOCK();
    *puVar5 = *puVar5 + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  iVar2 = FUN_18049d240(local_70);
  local_74 = iVar2 + 1;
  uVar3 = local_74 & 1;
  local_88 = 0x7478746c;
  (**(code **)(*param_3 + 0x20))(param_3,&local_88,4);
  local_84 = iVar2 + 0x15 + uVar3;
  (**(code **)(*param_3 + 0x20))(param_3,&local_84,4);
  local_a0 = (longlong *)*param_2;
  if (((ulonglong)local_a0[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_a0 + -2) = *(int *)(local_a0 + -2) + 1;
    UNLOCK();
  }
  local_60 = &local_a0;
  FUN_181232e20(&local_a0,"Identifier","");
  local_60 = (undefined8 **)local_a0;
  ppuVar1 = (undefined8 **)(local_a0 + -2);
  if (((ulonglong)*ppuVar1 & 0x30000000) == 0) {
    LOCK();
    *(uint *)ppuVar1 = *(uint *)ppuVar1 + 1;
    UNLOCK();
  }
  ppuVar6 = (undefined8 **)(local_a0 + -2);
  if (((ulonglong)*ppuVar6 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *(uint *)ppuVar6;
    *(uint *)ppuVar6 = *(uint *)ppuVar6 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppuVar6);
    }
  }
  local_80 = FUN_18136f150(param_1,&local_60);
  if (((ulonglong)*ppuVar1 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *(uint *)ppuVar1;
    *(uint *)ppuVar1 = *(uint *)ppuVar1 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppuVar1);
    }
  }
  (**(code **)(*param_3 + 0x20))(param_3,&local_80,4);
  local_98 = (longlong *)*param_2;
  if (((ulonglong)local_98[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_98 + -2) = *(int *)(local_98 + -2) + 1;
    UNLOCK();
  }
  local_58 = &local_98;
  FUN_181232e20(&local_98,"SampleLength","");
  local_58 = (undefined8 **)local_98;
  ppuVar1 = (undefined8 **)(local_98 + -2);
  if (((ulonglong)*ppuVar1 & 0x30000000) == 0) {
    LOCK();
    *(uint *)ppuVar1 = *(uint *)ppuVar1 + 1;
    UNLOCK();
  }
  ppuVar6 = (undefined8 **)(local_98 + -2);
  if (((ulonglong)*ppuVar6 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *(uint *)ppuVar6;
    *(uint *)ppuVar6 = *(uint *)ppuVar6 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppuVar6);
    }
  }
  local_7c = FUN_18136f150(param_1,&local_58);
  if (((ulonglong)*ppuVar1 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *(uint *)ppuVar1;
    *(uint *)ppuVar1 = *(uint *)ppuVar1 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(ppuVar1);
    }
  }
  (**(code **)(*param_3 + 0x20))(param_3,&local_7c,4);
  local_78 = FUN_18136f060(param_1,param_2,"Purpose");
  (**(code **)(*param_3 + 0x20))(param_3,&local_78,4);
  local_res10[0] = FUN_18136f060(param_1,param_2,"Country");
  (**(code **)(*param_3 + 0x20))(param_3,local_res10,2);
  local_res18[0] = FUN_18136f060(param_1,param_2,"Language");
  (**(code **)(*param_3 + 0x20))(param_3,local_res18,2);
  local_res20[0] = FUN_18136f060(param_1,param_2,"Dialect");
  (**(code **)(*param_3 + 0x20))(param_3,local_res20,2);
  local_a8[0] = FUN_18136f060(param_1,param_2,"CodePage");
  (**(code **)(*param_3 + 0x20))(param_3,local_a8,2);
  FUN_18124a3a0(param_3,local_70,(longlong)(int)local_74);
  if ((*(byte *)(param_3 + 7) & 1) != 0) {
    local_res8[0] = 0;
    (**(code **)(*param_3 + 0x20))(param_3,local_res8,1);
  }
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar3 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return;
}



############ FUN_ 18136edc0 size=661 ############

void FUN_18136edc0(longlong param_1,longlong *param_2,undefined4 param_3,longlong *param_4)

{
  uint *_Memory;
  undefined8 **_Memory_00;
  uint uVar1;
  int iVar2;
  longlong *plVar3;
  void *_Dst;
  uint *puVar4;
  undefined8 **_Memory_01;
  uint uVar5;
  undefined1 local_res8 [8];
  undefined4 local_res10 [2];
  undefined4 local_res18;
  int local_res20 [2];
  undefined4 local_88 [2];
  longlong local_80;
  longlong *local_78;
  void *local_70;
  longlong *local_68;
  undefined8 **local_60;
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  local_80 = *param_2;
  if ((*(uint *)(local_80 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_80 + -0x10) = *(int *)(local_80 + -0x10) + 1;
    UNLOCK();
  }
  local_68 = &local_80;
  local_res18 = param_3;
  FUN_181232e20(&local_80,&DAT_182255e44,&DAT_182255e48);
  local_68 = (longlong *)local_80;
  _Memory = (uint *)(local_80 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(local_80 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  iVar2 = FUN_1812498b0(param_1,local_80,*(undefined1 *)(param_1 + 0x20),0);
  if (iVar2 < 0) {
    local_70 = (void *)*param_2;
    puVar4 = (uint *)((longlong)local_70 + -0x10);
    uVar5 = *puVar4;
  }
  else {
    plVar3 = (longlong *)FUN_181249970(param_1 + 0x10,iVar2);
    local_70 = (void *)*plVar3;
    puVar4 = (uint *)((longlong)local_70 + -0x10);
    uVar5 = *puVar4;
  }
  if ((uVar5 & 0x30000000) == 0) {
    LOCK();
    *puVar4 = *puVar4 + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar5 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  iVar2 = FUN_18049d240(local_70);
  uVar5 = iVar2 + 1;
  local_res10[0] = local_res18;
  (**(code **)(*param_4 + 0x20))(param_4,local_res10,4);
  local_res20[0] = (uVar5 & 1) + 4 + uVar5;
  (**(code **)(*param_4 + 0x20))(param_4,local_res20,4);
  local_78 = (longlong *)*param_2;
  if (((ulonglong)local_78[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_78 + -2) = *(int *)(local_78 + -2) + 1;
    UNLOCK();
  }
  local_60 = &local_78;
  FUN_181232e20(&local_78,"Identifier","");
  local_60 = (undefined8 **)local_78;
  _Memory_00 = (undefined8 **)(local_78 + -2);
  if (((ulonglong)*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    *(uint *)_Memory_00 = *(uint *)_Memory_00 + 1;
    UNLOCK();
  }
  _Memory_01 = (undefined8 **)(local_78 + -2);
  if (((ulonglong)*_Memory_01 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)_Memory_01;
    *(uint *)_Memory_01 = *(uint *)_Memory_01 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_01);
    }
  }
  local_88[0] = FUN_18136f150(param_1,&local_60);
  if (((ulonglong)*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)_Memory_00;
    *(uint *)_Memory_00 = *(uint *)_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  (**(code **)(*param_4 + 0x20))(param_4,local_88,4);
  if (uVar5 != 0) {
    _Dst = (void *)FUN_181234e40(param_4,(longlong)(int)uVar5);
    if (_Dst != (void *)0x0) {
      memcpy(_Dst,local_70,(longlong)(int)uVar5);
    }
  }
  if ((*(byte *)(param_4 + 7) & 1) != 0) {
    local_res8[0] = 0;
    (**(code **)(*param_4 + 0x20))(param_4,local_res8,1);
  }
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 18136f060 size=229 ############

void FUN_18136f060(undefined8 param_1,longlong *param_2,longlong param_3)

{
  undefined8 **_Memory;
  uint uVar1;
  longlong lVar2;
  undefined8 **_Memory_00;
  longlong *local_res10;
  undefined8 **local_res18 [2];
  
  local_res10 = (longlong *)*param_2;
  if (((ulonglong)local_res10[-2] & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -2) = *(int *)(local_res10 + -2) + 1;
    UNLOCK();
  }
  local_res18[0] = &local_res10;
  lVar2 = -1;
  do {
    lVar2 = lVar2 + 1;
  } while (*(char *)(param_3 + lVar2) != '\0');
  FUN_181232e20(&local_res10,param_3,lVar2 + param_3,param_3,0xfffffffffffffffe);
  local_res18[0] = (undefined8 **)local_res10;
  _Memory = (undefined8 **)(local_res10 + -2);
  if (((ulonglong)*_Memory & 0x30000000) == 0) {
    LOCK();
    *(uint *)_Memory = *(uint *)_Memory + 1;
    UNLOCK();
  }
  _Memory_00 = (undefined8 **)(local_res10 + -2);
  if (((ulonglong)*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)_Memory_00;
    *(uint *)_Memory_00 = *(uint *)_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  FUN_18136f150(param_1,local_res18);
  if (((ulonglong)*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *(uint *)_Memory;
    *(uint *)_Memory = *(uint *)_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 180545bb0 size=43 ############

undefined8 * FUN_180545bb0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IStream>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180546810 size=43 ############

undefined8 * FUN_180546810(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IStream>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180549ac0 size=52 ############

void * FUN_180549ac0(void *param_1,ulonglong param_2)

{
  FUN_1813ba6c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813ba6c0 size=386 ############

void FUN_1813ba6c0(undefined8 *param_1)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  longlong lVar4;
  void *pvVar5;
  void *_Memory;
  
  *param_1 = juce::AudioDeviceManager::vftable;
  puVar3 = (undefined8 *)param_1[0x1b];
  param_1[0x1b] = 0;
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  lVar4 = param_1[0x51];
  param_1[0x51] = 0;
  if (lVar4 != 0) {
    FUN_180556130();
  }
  puVar3 = (undefined8 *)param_1[0x65];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  puVar3 = (undefined8 *)param_1[100];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  puVar3 = (undefined8 *)param_1[99];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  if (param_1[0x5d] == 0) {
    DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)param_1 + 700));
    DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x52));
    if (param_1[0x51] != 0) {
      FUN_180556130();
    }
    FUN_1804d1090(param_1 + 0x4f);
    FUN_18051a4c0(param_1 + 0x4d);
    if (param_1[0x4a] == 0) {
      FUN_180555c90(param_1 + 0x48);
                    /* WARNING: Subroutine does not return */
      free((void *)param_1[0x48]);
    }
    FUN_1805566d0(param_1[0x4a],param_1[0x4b]);
    pvVar5 = (void *)param_1[0x4a];
    _Memory = pvVar5;
    if ((0xfff < (param_1[0x4c] - (longlong)pvVar5 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)pvVar5 + -8),
       0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1[0x5d] + 0x18));
}



############ FUN_ 1805557c0 size=186 ############

void FUN_1805557c0(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        FUN_180549b90(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  *(undefined4 *)((longlong)param_1 + 0xc) = 0;
                    /* WARNING: Could not recover jumptable at 0x000180555873. Too many branches */
                    /* WARNING: Subroutine does not return */
                    /* WARNING: Treating indirect jump as call */
  free((void *)*param_1);
  return;
}



############ FUN_ 1805566d0 size=105 ############

void FUN_1805566d0(undefined8 *param_1,undefined8 *param_2)

{
  void *_Memory;
  undefined8 *puVar1;
  
  while( true ) {
    if (param_1 == param_2) {
      return;
    }
    _Memory = (void *)*param_1;
    if (_Memory != (void *)0x0) break;
    param_1 = param_1 + 1;
  }
  puVar1 = *(undefined8 **)((longlong)_Memory + 0x10);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1804d1090(_Memory);
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180549e10 size=52 ############

void * FUN_180549e10(void *param_1,ulonglong param_2)

{
  FUN_1813b6170();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180549f30 size=138 ############

undefined8 * FUN_180549f30(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  
  *param_1 = juce::MidiOutput::vftable;
  FUN_18122afa0(param_1,5000,param_3,param_4,0xfffffffffffffffe);
  puVar1 = (undefined8 *)param_1[0x42];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x43));
  FUN_1804d1090(param_1 + 0x40);
  FUN_18122b690(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054a070 size=52 ############

void * FUN_18054a070(void *param_1,ulonglong param_2)

{
  FUN_1813baf40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054b220 size=52 ############

void * FUN_18054b220(void *param_1,ulonglong param_2)

{
  FUN_18054a620();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054b260 size=43 ############

undefined8 * FUN_18054b260(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<juce::IAudioSessionEvents>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054b930 size=155 ############

undefined8 *
FUN_18054b930(undefined8 *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  uVar2 = 0xfffffffffffffffe;
  *param_1 = juce::WasapiClasses::WASAPIOutputDevice::vftable;
  FUN_18054ab80();
  if ((longlong *)param_1[0x1f] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[0x1f] + 0x10))();
  }
  param_1[0x1f] = 0;
  puVar1 = (undefined8 *)param_1[0x20];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1,param_3,param_4,uVar2);
  }
  if ((longlong *)param_1[0x1f] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[0x1f] + 0x10))();
  }
  FUN_18054a620(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813b4890 size=157 ############

longlong * FUN_1813b4890(longlong *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  int iVar3;
  LPVOID local_res10;
  longlong local_res18 [2];
  
  *param_1 = (longlong)&DAT_1821dbf98;
  local_res10 = (LPVOID)0x0;
  iVar3 = (**(code **)(*param_2 + 0x28))(param_2,&local_res10,param_2,param_4,1,0xfffffffffffffffe);
  if (-1 < iVar3) {
    FUN_18049c800(local_res18,local_res10);
    lVar2 = *param_1;
    *param_1 = local_res18[0];
    _Memory = (uint *)(lVar2 + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    CoTaskMemFree(local_res10);
  }
  return param_1;
}



############ FUN_ 18054dd60 size=247 ############

void FUN_18054dd60(longlong *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  undefined8 uVar3;
  longlong local_res8 [4];
  
  puVar2 = (undefined8 *)param_1[0x49];
  param_1[0x49] = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = (undefined8 *)param_1[0x48];
  param_1[0x48] = 0;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_18054bdc0(param_1);
  if ((param_1[0x49] == 0) || (*(char *)((longlong)param_1 + 0x2d4) == '\0')) {
    if ((param_1[0x48] == 0) || (*(char *)((longlong)param_1 + 0x2d4) != '\0')) {
      uVar3 = 0;
    }
    else {
      uVar3 = *(undefined8 *)(param_1[0x48] + 0x20);
    }
  }
  else {
    uVar3 = *(undefined8 *)(param_1[0x49] + 0x20);
  }
  (**(code **)(*param_1 + 0x30))
            (param_1,local_res8,param_1 + 0x5b,param_1 + 0x60,uVar3,
             *(undefined4 *)((longlong)param_1 + 0x294));
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
                    /* WARNING: Could not recover jumptable at 0x00018054de53. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(*param_1 + 0x48))(param_1,param_1[0x54]);
  return;
}



############ FUN_ 18054dea0 size=52 ############

void * FUN_18054dea0(void *param_1,ulonglong param_2)

{
  FUN_18054bc10();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054e490 size=217 ############

longlong * FUN_18054e490(longlong *param_1,longlong *param_2,char param_3)

{
  uint *_Memory;
  uint uVar1;
  int iVar2;
  LPVOID local_res10 [2];
  longlong *local_res20;
  longlong local_20 [3];
  
  local_20[1] = 0xfffffffffffffffe;
  *param_1 = (longlong)&DAT_1821dbf98;
  local_res20 = (longlong *)0x0;
  iVar2 = (**(code **)(*param_2 + 0x20))(param_2,param_3 != '\0',1,&local_res20,1);
  if (-1 < iVar2) {
    local_res10[0] = (LPVOID)0x0;
    iVar2 = (**(code **)(*local_res20 + 0x28))(local_res20,local_res10);
    if (-1 < iVar2) {
      FUN_18049c800(local_20,local_res10[0]);
      local_20[2] = *param_1;
      *param_1 = local_20[0];
      _Memory = (uint *)(local_20[2] + -0x10);
      if ((*_Memory & 0x30000000) == 0) {
        LOCK();
        uVar1 = *_Memory;
        *_Memory = *_Memory - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
      }
      CoTaskMemFree(local_res10[0]);
    }
    (**(code **)(*local_res20 + 0x10))();
  }
  return param_1;
}



############ FUN_ 18054efa0 size=52 ############

void * FUN_18054efa0(void *param_1,ulonglong param_2)

{
  FUN_18054dee0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054efe0 size=92 ############

undefined8 * FUN_18054efe0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::ComBaseClassHelperBase<juce::IMMNotificationClient>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18054f040 size=809 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18054f040(ushort *param_1,undefined8 *param_2)

{
  longlong lVar1;
  int iVar2;
  HWND pHVar3;
  undefined8 *puVar4;
  uint *_Memory;
  uint uVar5;
  undefined1 auStack_118 [32];
  uint *local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined4 local_e0;
  uint local_d8 [2];
  void *local_d0;
  undefined1 *local_c8;
  undefined8 *local_c0;
  longlong *local_b8;
  undefined8 local_b0;
  undefined4 local_a8;
  undefined4 uStack_a4;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  undefined8 local_80;
  ulonglong local_78;
  undefined4 *local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined4 local_58;
  int local_54;
  int local_50;
  undefined2 local_4c;
  ushort local_4a;
  undefined2 local_48;
  ulonglong local_40;
  
  local_b0 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_118;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *(undefined1 *)(param_1 + 0x2e) = 1;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  param_1[0x32] = 0;
  param_1[0x33] = 0;
  local_c8 = &DAT_1821dbf98;
  iVar2 = -0x7fffbffe;
  local_c0 = param_2;
  if ((DAT_182678f30 != (code *)0x0) &&
     (iVar2 = (*DAT_182678f30)(param_1 + 0xc,param_1 + 0x20,0), -1 < iVar2)) {
    uVar5 = *(int *)(param_1 + 0x16) * (*(int *)param_1 >> 2) & 0xfffffff0;
    *(uint *)(param_1 + 0x2c) = uVar5;
    *(longlong *)(param_1 + 0x34) =
         ((int)uVar5 * DAT_182673a08) /
         (longlong)((*(int *)param_1 >> 2) * *(int *)(param_1 + 0x14));
    *(uint *)(param_1 + 0x2a) = uVar5 << 4;
    lVar1 = **(longlong **)(param_1 + 0x20);
    pHVar3 = GetDesktopWindow();
    iVar2 = (**(code **)(lVar1 + 0x30))(*(undefined8 *)(param_1 + 0x20),pHVar3,2);
    if (-1 < iVar2) {
      uStack_9c = 0;
      local_90 = 0;
      local_88 = 0;
      local_a8 = 0x28;
      uStack_a4 = 1;
      local_a0 = 0;
      local_98 = 0;
      iVar2 = (**(code **)(**(longlong **)(param_1 + 0x20) + 0x18))
                        (*(longlong **)(param_1 + 0x20),&local_a8,&local_b8,0);
      if (-1 < iVar2) {
        local_58 = 0x20001;
        local_54 = *(int *)(param_1 + 0x14);
        local_4a = *param_1;
        local_50 = (int)((uint)local_4a * 2) >> 3;
        local_4c = (undefined2)local_50;
        local_50 = local_50 * local_54;
        local_48 = 0;
        iVar2 = (**(code **)(*local_b8 + 0x70))(local_b8,&local_58);
        if (-1 < iVar2) {
          local_68 = 0;
          local_60 = 0;
          local_80 = 0x1800000000028;
          local_78 = (ulonglong)*(uint *)(param_1 + 0x2a);
          local_70 = &local_58;
          iVar2 = (**(code **)(**(longlong **)(param_1 + 0x20) + 0x18))
                            (*(longlong **)(param_1 + 0x20),&local_80,param_1 + 0x24,0);
          if (-1 < iVar2) {
            local_e0 = 0;
            local_e8 = 0;
            local_f0 = 0;
            local_f8 = local_d8;
            iVar2 = (**(code **)(**(longlong **)(param_1 + 0x24) + 0x58))
                              (*(longlong **)(param_1 + 0x24),0,*(undefined4 *)(param_1 + 0x2a),
                               &local_d0);
            if (-1 < iVar2) {
              memset(local_d0,0,(ulonglong)local_d8[0]);
              local_f8 = (uint *)((ulonglong)local_f8 & 0xffffffff00000000);
              iVar2 = (**(code **)(**(longlong **)(param_1 + 0x24) + 0x98))
                                (*(longlong **)(param_1 + 0x24),local_d0,local_d8[0],0);
              if (((-1 < iVar2) &&
                  (iVar2 = (**(code **)(**(longlong **)(param_1 + 0x24) + 0x68))
                                     (*(longlong **)(param_1 + 0x24),0), -1 < iVar2)) &&
                 (iVar2 = (**(code **)(**(longlong **)(param_1 + 0x24) + 0x60))
                                    (*(longlong **)(param_1 + 0x24),0,0,1), -1 < iVar2)) {
                *param_2 = &DAT_1821dbf98;
                if ((DAT_1821dbf88 & 0x30000000) != 0) {
                }
                LOCK();
                UNLOCK();
                uVar5 = DAT_1821dbf88;
                goto LAB_18054f34c;
              }
            }
          }
        }
      }
    }
  }
  puVar4 = (undefined8 *)FUN_1813b43e0(&local_c0,iVar2);
  local_c8 = (undefined1 *)*puVar4;
  *puVar4 = &DAT_1821dbf98;
  _Memory = (uint *)(local_c0 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar5 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (*(longlong **)(param_1 + 0x24) != (longlong *)0x0) {
    (**(code **)(**(longlong **)(param_1 + 0x24) + 0x90))();
    (**(code **)(**(longlong **)(param_1 + 0x24) + 0x10))();
    param_1[0x24] = 0;
    param_1[0x25] = 0;
    param_1[0x26] = 0;
    param_1[0x27] = 0;
  }
  if (*(longlong **)(param_1 + 0x20) != (longlong *)0x0) {
    (**(code **)(**(longlong **)(param_1 + 0x20) + 0x10))();
    param_1[0x20] = 0;
    param_1[0x21] = 0;
    param_1[0x22] = 0;
    param_1[0x23] = 0;
  }
  *param_2 = local_c8;
  if ((DAT_1821dbf88 & 0x30000000) != 0) {
  }
  LOCK();
  UNLOCK();
  uVar5 = DAT_1821dbf88;
LAB_18054f34c:
  DAT_1821dbf88 = uVar5 - 1;
  if (uVar5 != 0) {
  }
                    /* WARNING: Subroutine does not return */
  free(&DAT_1821dbf88);
}



############ FUN_ 1805501d0 size=374 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805501d0(undefined4 *param_1,undefined8 *param_2)

{
  uint *_Memory;
  int iVar1;
  uint uVar2;
  undefined1 auStack_98 [32];
  undefined8 *local_78;
  undefined8 local_70;
  ulonglong local_68;
  undefined4 *local_60;
  undefined8 local_58;
  undefined4 local_50;
  int local_4c;
  int local_48;
  ushort local_44;
  ushort local_42;
  undefined2 local_40;
  ulonglong local_38;
  
  local_58 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  *(undefined8 *)(param_1 + 0x12) = 0;
  *(undefined8 *)(param_1 + 0x14) = 0;
  *(undefined8 *)(param_1 + 0x16) = 0;
  *param_1 = 0;
  param_1[2] = 0;
  local_78 = param_2;
  if (DAT_182678f40 == (code *)0x0) {
    iVar1 = -0x7fffbffe;
  }
  else {
    iVar1 = (*DAT_182678f40)(param_1 + 8,param_1 + 0x14,0);
    if (-1 < iVar1) {
      uVar2 = param_1[0xd] * ((int)param_1[3] >> 2) & 0xfffffff0;
      param_1[1] = uVar2;
      uVar2 = uVar2 << 4;
      param_1[2] = uVar2;
      local_50 = 0x20001;
      local_4c = param_1[0xc];
      local_42 = *(ushort *)(param_1 + 3);
      local_44 = (local_42 >> 3) * 2;
      local_48 = (uint)local_44 * local_4c;
      local_40 = 0;
      local_70 = 0x18;
      local_68 = (ulonglong)uVar2;
      local_60 = &local_50;
      iVar1 = (**(code **)(**(longlong **)(param_1 + 0x14) + 0x18))
                        (*(longlong **)(param_1 + 0x14),&local_70,param_1 + 0x16,0);
      if ((-1 < iVar1) &&
         (iVar1 = (**(code **)(**(longlong **)(param_1 + 0x16) + 0x48))
                            (*(longlong **)(param_1 + 0x16),1), -1 < iVar1)) {
        *param_2 = &DAT_1821dbf98;
      }
    }
  }
  FUN_1813b43e0(&local_78,iVar1);
  FUN_180550170(param_1);
  *param_2 = local_78;
  _Memory = (uint *)(local_78 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar2 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 180550dc0 size=171 ############

undefined8 *
FUN_180550dc0(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,
             undefined8 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined8 uVar2;
  char *pcVar3;
  undefined8 *puVar4;
  uint *_Memory;
  undefined8 *local_res10;
  
  local_res10 = param_2;
  puVar4 = (undefined8 *)FUN_1813b33b0(param_5,&local_res10,param_3,param_4,param_5,param_6);
  uVar2 = *(undefined8 *)(param_1 + 0x248);
  *(undefined8 *)(param_1 + 0x248) = *puVar4;
  *puVar4 = uVar2;
  _Memory = (uint *)(local_res10 + -2);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  pcVar3 = *(char **)(param_1 + 0x248);
  *param_2 = pcVar3;
  *(bool *)(param_1 + 0x240) = *pcVar3 == '\0';
  if ((*(uint *)(pcVar3 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(pcVar3 + -0x10) = *(int *)(pcVar3 + -0x10) + 1;
    UNLOCK();
  }
  return param_2;
}



############ FUN_ 1805525c0 size=43 ############

undefined8 * FUN_1805525c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::MidiServiceType::InputWrapper::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805525f0 size=43 ############

undefined8 * FUN_1805525f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::MidiServiceType::OutputWrapper::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180552620 size=43 ############

undefined8 * FUN_180552620(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::MidiServiceType::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180555de0 size=327 ############

undefined8 * FUN_180555de0(longlong *param_1,undefined8 *param_2)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  undefined1 **ppuVar4;
  uint *puVar5;
  undefined1 *local_28;
  undefined1 *local_20;
  undefined1 *local_18;
  longlong local_10;
  
  if (*(int *)((longlong)param_1 + 0xc) < 1) {
    bVar3 = false;
    bVar2 = true;
    local_28 = &DAT_1821dbf98;
    local_20 = &DAT_1821dbf98;
    ppuVar4 = &local_28;
  }
  else {
    param_1 = (longlong *)*param_1;
    bVar3 = true;
    bVar2 = false;
    local_18 = (undefined1 *)*param_1;
    if ((*(uint *)(local_18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_18 + -0x10) = *(int *)(local_18 + -0x10) + 1;
      UNLOCK();
    }
    local_10 = param_1[1];
    if ((*(uint *)(local_10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_10 + -0x10) = *(int *)(local_10 + -0x10) + 1;
      UNLOCK();
    }
    ppuVar4 = &local_18;
  }
  *param_2 = *ppuVar4;
  *ppuVar4 = &DAT_1821dbf98;
  param_2[1] = ppuVar4[1];
  ppuVar4[1] = &DAT_1821dbf98;
  if (bVar2) {
    puVar5 = (uint *)(local_20 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_28 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if (bVar3) {
    puVar5 = (uint *)(local_10 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_18 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  return param_2;
}



############ FUN_ 180555f30 size=334 ############

undefined8 * FUN_180555f30(longlong *param_1,undefined8 *param_2,uint param_3)

{
  uint uVar1;
  bool bVar2;
  bool bVar3;
  undefined1 **ppuVar4;
  uint *puVar5;
  longlong *plVar6;
  undefined1 *local_28;
  undefined1 *local_20;
  undefined1 *local_18;
  longlong local_10;
  
  if (param_3 < *(uint *)((longlong)param_1 + 0xc)) {
    bVar3 = true;
    bVar2 = false;
    plVar6 = (longlong *)((longlong)(int)param_3 * 0x10 + *param_1);
    local_18 = (undefined1 *)*plVar6;
    if ((*(uint *)(local_18 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_18 + -0x10) = *(int *)(local_18 + -0x10) + 1;
      UNLOCK();
    }
    local_10 = plVar6[1];
    if ((*(uint *)(local_10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_10 + -0x10) = *(int *)(local_10 + -0x10) + 1;
      UNLOCK();
    }
    ppuVar4 = &local_18;
  }
  else {
    bVar3 = false;
    bVar2 = true;
    local_28 = &DAT_1821dbf98;
    local_20 = &DAT_1821dbf98;
    ppuVar4 = &local_28;
  }
  *param_2 = *ppuVar4;
  *ppuVar4 = &DAT_1821dbf98;
  param_2[1] = ppuVar4[1];
  ppuVar4[1] = &DAT_1821dbf98;
  if (bVar2) {
    puVar5 = (uint *)(local_20 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_28 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  if (bVar3) {
    puVar5 = (uint *)(local_10 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
    puVar5 = (uint *)(local_18 + -0x10);
    if ((*puVar5 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar5);
      }
    }
  }
  return param_2;
}



############ FUN_ 1805543a0 size=92 ############

undefined8 * FUN_1805543a0(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)param_1[2];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  *param_1 = juce::MidiServiceType::OutputWrapper::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180554400 size=108 ############

undefined8 * FUN_180554400(undefined8 *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::MidiService::vftable;
  if (DAT_182673e90 == param_1) {
    DAT_182673e90 = (undefined8 *)0x0;
  }
  puVar1 = (undefined8 *)param_1[1];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1812a7170(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180555a60 size=43 ############

undefined8 * FUN_180555a60(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<juce::IMMNotificationClient>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180555a90 size=43 ############

undefined8 * FUN_180555a90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<juce::IAudioSessionEvents>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180556520 size=425 ############

longlong FUN_180556520(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 uVar2;
  void *pvVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  longlong lVar11;
  ulonglong uVar12;
  
  lVar8 = *param_1;
  lVar11 = (longlong)param_2 - lVar8 >> 3;
  lVar4 = param_1[1] - lVar8 >> 3;
  if (lVar4 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar7 = param_1[2] - lVar8 >> 3;
  uVar1 = lVar4 + 1;
  uVar5 = uVar1;
  if ((uVar7 <= 0x1fffffffffffffff - (uVar7 >> 1)) && (uVar5 = (uVar7 >> 1) + uVar7, uVar5 < uVar1))
  {
    uVar5 = uVar1;
  }
  lVar8 = uVar5 * 8;
  if (0x1fffffffffffffff < uVar5) {
    lVar8 = -1;
  }
  puVar6 = (undefined8 *)FUN_180480500(lVar8);
  uVar2 = *param_3;
  uVar7 = 0;
  *param_3 = 0;
  puVar6[lVar11] = uVar2;
  puVar9 = (undefined8 *)param_1[1];
  puVar10 = (undefined8 *)*param_1;
  if (param_2 == puVar9) {
    uVar12 = (ulonglong)((longlong)puVar9 + (7 - (longlong)puVar10)) >> 3;
    if (puVar9 < puVar10) {
      uVar12 = uVar7;
    }
    puVar9 = puVar6;
    if (uVar12 != 0) {
      do {
        uVar2 = *puVar10;
        uVar7 = uVar7 + 1;
        *puVar10 = 0;
        puVar10 = puVar10 + 1;
        *puVar9 = uVar2;
        puVar9 = puVar9 + 1;
      } while (uVar7 != uVar12);
    }
    FUN_1805566d0(puVar9,puVar9);
  }
  else {
    FUN_180556b40(uVar2,puVar10,param_2,puVar6);
    FUN_180556b40();
  }
  if (*param_1 == 0) {
    *param_1 = (longlong)puVar6;
    param_1[1] = (longlong)(puVar6 + uVar1);
    param_1[2] = (longlong)(puVar6 + uVar5);
    return *param_1 + lVar11 * 8;
  }
  FUN_1805566d0(*param_1,param_1[1]);
  pvVar3 = (void *)*param_1;
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805577c0 size=101 ############

undefined8 * FUN_1805577c0(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  *param_1 = Interpolator::vftable;
  plVar1 = (longlong *)param_1[10];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 3);
    param_1[10] = 0;
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805578b0 size=101 ############

undefined8 * FUN_1805578b0(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  *param_1 = Interpolator::vftable;
  plVar1 = (longlong *)param_1[10];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 3);
    param_1[10] = 0;
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180557c90 size=251 ############

undefined8 * FUN_180557c90(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *puVar2;
  
  *param_1 = juce::FileBasedDocument::vftable;
  puVar2 = (uint *)(param_1[0xc] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[0xb] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[10] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[9] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(param_1[7] + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_1812a5870(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055c880 size=198 ############

void FUN_18055c880(longlong *param_1)

{
  void *_Dst;
  uint uVar1;
  longlong *_Memory;
  uint *_Memory_00;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  iVar2 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar2) {
    lVar3 = (longlong)iVar2 * 8;
    lVar4 = lVar3;
    do {
      _Memory = *(longlong **)(lVar4 + *param_1);
      _Dst = (void *)(lVar3 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar2) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (longlong *)0x0) {
        _Memory_00 = (uint *)(*_Memory + -0x10);
        if ((*_Memory_00 & 0x30000000) == 0) {
          LOCK();
          uVar1 = *_Memory_00;
          *_Memory_00 = *_Memory_00 - 1;
          UNLOCK();
          if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
            free(_Memory_00);
          }
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar3 = lVar3 + -8;
      lVar4 = lVar4 + -8;
      iVar2 = iVar2 + -1;
    } while (-1 < iVar2);
  }
  return;
}



############ FUN_ 180558130 size=86 ############

void * FUN_180558130(void *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x10) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180558200 size=86 ############

void * FUN_180558200(void *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x18) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180558eb0 size=368 ############

void FUN_180558eb0(undefined8 *param_1,int param_2)

{
  uint uVar1;
  byte bVar2;
  undefined8 uVar3;
  int iVar4;
  undefined8 *puVar5;
  byte *pbVar6;
  uint *puVar7;
  undefined8 *puVar8;
  int iVar9;
  undefined8 *puVar10;
  longlong local_res8 [2];
  longlong local_res18;
  undefined8 local_res20;
  
  iVar9 = 0;
  puVar10 = (undefined8 *)*param_1;
  puVar8 = puVar10 + (longlong)*(int *)((longlong)param_1 + 0xc) * 2;
  while( true ) {
    if (puVar10 == puVar8) {
      return;
    }
    iVar4 = FUN_18049bc80(*puVar10,9);
    if (-1 < iVar4) break;
LAB_180559006:
    iVar9 = iVar9 + *(int *)(puVar10 + 1);
    puVar10 = puVar10 + 2;
  }
LAB_180558f00:
  puVar5 = (undefined8 *)
           FUN_181231fc0(&local_res18,&DAT_1824af8b8,param_2 - (iVar4 + iVar9) % param_2);
  local_res20 = *puVar5;
  puVar5 = (undefined8 *)FUN_181231b00(puVar10,local_res8,iVar4,1,local_res20);
  uVar3 = *puVar10;
  *puVar10 = *puVar5;
  *puVar5 = uVar3;
  puVar7 = (uint *)(local_res8[0] + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  puVar7 = (uint *)(local_res18 + -0x10);
  if ((*puVar7 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar7;
    *puVar7 = *puVar7 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar7);
    }
  }
  pbVar6 = (byte *)*puVar10;
  iVar4 = 0;
LAB_180558fb0:
  do {
    bVar2 = *pbVar6;
    pbVar6 = pbVar6 + 1;
    if ((char)bVar2 < '\0') {
      if ((*pbVar6 & 0xc0) == 0x80) {
        do {
          pbVar6 = pbVar6 + 1;
        } while ((*pbVar6 & 0xc0) == 0x80);
        iVar4 = iVar4 + 1;
        goto LAB_180558fb0;
      }
    }
    else if (bVar2 == 0) break;
    iVar4 = iVar4 + 1;
  } while( true );
  *(int *)(puVar10 + 1) = iVar4;
  iVar4 = FUN_18049bc80(*puVar10,9);
  if (iVar4 < 0) goto LAB_180559006;
  goto LAB_180558f00;
}



############ FUN_ 18055c6a0 size=269 ############

void FUN_18055c6a0(longlong *param_1,int param_2)

{
  int iVar1;
  longlong lVar2;
  void *_Memory;
  void *pvVar3;
  undefined8 *puVar4;
  int *_Memory_00;
  uint uVar5;
  undefined4 *puVar6;
  int iVar7;
  
  if ((int)*(uint *)(param_1 + 1) < param_2) {
    uVar5 = param_2 + 8 + param_2 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 1) != uVar5) {
      if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
        free((void *)*param_1);
      }
      pvVar3 = malloc((longlong)(int)uVar5 << 4);
      iVar7 = 0;
      if (0 < *(int *)((longlong)param_1 + 0xc)) {
        puVar6 = (undefined4 *)((longlong)pvVar3 + 0xc);
        do {
          puVar4 = (undefined8 *)((longlong)puVar6 + *param_1 + (-0xc - (longlong)pvVar3));
          *(undefined8 *)(puVar6 + -3) = *puVar4;
          *puVar4 = &DAT_1821dbf98;
          puVar6[-1] = *(undefined4 *)(puVar4 + 1);
          *puVar6 = *(undefined4 *)((longlong)puVar4 + 0xc);
          lVar2 = *(longlong *)((longlong)puVar6 + *param_1 + (-0xc - (longlong)pvVar3));
          _Memory_00 = (int *)(lVar2 + -0x10);
          if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
            LOCK();
            iVar1 = *_Memory_00;
            *_Memory_00 = *_Memory_00 + -1;
            UNLOCK();
            if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory_00);
            }
          }
          iVar7 = iVar7 + 1;
          puVar6 = puVar6 + 4;
        } while (iVar7 < *(int *)((longlong)param_1 + 0xc));
      }
      _Memory = (void *)*param_1;
      *param_1 = (longlong)pvVar3;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *(uint *)(param_1 + 1) = uVar5;
  }
  return;
}



############ FUN_ 1805592e0 size=52 ############

void * FUN_1805592e0(void *param_1,ulonglong param_2)

{
  FUN_1813c6260();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055c7d0 size=169 ############

void FUN_18055c7d0(longlong *param_1)

{
  void *_Dst;
  void *_Memory;
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  
  iVar1 = *(int *)((longlong)param_1 + 0xc) + -1;
  if (-1 < iVar1) {
    lVar2 = (longlong)iVar1 * 8;
    lVar3 = lVar2;
    do {
      _Memory = *(void **)(lVar3 + *param_1);
      _Dst = (void *)(lVar2 + *param_1);
      memmove(_Dst,(void *)((longlong)_Dst + 8),
              (longlong)((*(int *)((longlong)param_1 + 0xc) - iVar1) + -1) << 3);
      *(int *)((longlong)param_1 + 0xc) = *(int *)((longlong)param_1 + 0xc) + -1;
      if (_Memory != (void *)0x0) {
        FUN_18051a4c0(_Memory);
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      lVar2 = lVar2 + -8;
      lVar3 = lVar3 + -8;
      iVar1 = iVar1 + -1;
    } while (-1 < iVar1);
  }
  return;
}



############ FUN_ 180559320 size=43 ############

undefined8 * FUN_180559320(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::CPlusPlusCodeTokeniser::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180559350 size=43 ############

undefined8 * FUN_180559350(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::XmlTokeniser::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180559380 size=43 ############

undefined8 * FUN_180559380(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::LuaTokeniser::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1812a1ea0 size=343 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1812a1ea0(uint *param_1,longlong param_2,char param_3)

{
  char cVar1;
  undefined4 *puVar2;
  undefined8 uVar3;
  uint *puVar4;
  uint uVar5;
  ulonglong uVar6;
  char *_Src;
  undefined1 auStack_88 [32];
  undefined4 *local_68;
  longlong local_60 [5];
  char local_32 [2];
  undefined8 local_30;
  
  local_60[1] = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  uVar5 = 0xffffff;
  if (param_3 != '\0') {
    uVar5 = 0xffffffff;
  }
  uVar5 = uVar5 & *param_1;
  _Src = local_32 + 1;
  local_32[1] = 0;
  do {
    _Src = _Src + -1;
    cVar1 = "0123456789abcdef"[uVar5 & 0xf];
    *_Src = cVar1;
    uVar5 = uVar5 >> 4;
  } while (uVar5 != 0);
  local_60[0] = param_2;
  if (cVar1 == '\0') {
    local_68 = (undefined4 *)&DAT_1821dbf98;
  }
  else {
    uVar6 = (longlong)&local_30 + -(longlong)_Src + 3 & 0xfffffffffffffffc;
    puVar2 = (undefined4 *)thunk_FUN_1811316e0(uVar6 + 0x17);
    LOCK();
    *puVar2 = 0;
    UNLOCK();
    *(ulonglong *)(puVar2 + 2) = uVar6;
    puVar2 = puVar2 + 4;
    memcpy(puVar2,_Src,(size_t)(local_32 + -(longlong)_Src + 1));
    *(char *)((longlong)puVar2 + (longlong)(local_32 + -(longlong)_Src + 1)) = '\0';
    local_68 = puVar2;
  }
  uVar3 = FUN_181231e80(&local_68,local_60);
  FUN_181230f50(uVar3,param_2);
  puVar4 = (uint *)(local_60[0] + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = local_68 + -4;
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar5 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
}



############ FUN_ 181230f50 size=520 ############

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

undefined8 * FUN_181230f50(undefined8 *param_1,undefined8 *param_2)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  wint_t wVar4;
  ulonglong uVar5;
  byte bVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  longlong lVar10;
  bool bVar11;
  undefined1 *local_30;
  byte *local_28;
  undefined1 *local_20;
  ulonglong local_18;
  ulonglong local_10;
  
  local_28 = (byte *)*param_1;
  local_30 = &DAT_1821dbf98;
  local_20 = (undefined1 *)0x0;
  local_18 = *(ulonglong *)(local_28 + -8);
  local_10 = 0;
  FUN_1812342b0(&local_30);
  local_20 = local_30;
  do {
    bVar1 = *local_28;
    wVar4 = (wint_t)bVar1;
    if ((char)bVar1 < '\0') {
      uVar8 = 0x7f;
      uVar7 = 0x40;
      iVar9 = 0;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar7 < 9) break;
          uVar8 = uVar8 >> 1;
          iVar9 = iVar9 + 1;
          uVar7 = uVar7 >> 1;
        } while ((bVar1 & uVar7) != 0);
      }
      uVar8 = bVar1 & uVar8;
      wVar4 = (wint_t)uVar8;
      lVar10 = 1;
      if (0 < (longlong)iVar9) {
        do {
          wVar4 = (wint_t)uVar8;
          if ((local_28[lVar10] & 0xc0) != 0x80) break;
          uVar8 = local_28[lVar10] & 0x3f | uVar8 << 6;
          wVar4 = (wint_t)uVar8;
          lVar10 = lVar10 + 1;
        } while (lVar10 <= iVar9);
      }
    }
    wVar4 = towupper(wVar4);
    lVar10 = 1;
    if ((0x7f < wVar4) && (lVar10 = 2, 0x7ff < wVar4)) {
      lVar10 = 3;
    }
    local_10 = local_10 + lVar10;
    if (local_18 < local_10) {
      uVar5 = 8;
      if (8 < local_18 >> 4) {
        uVar5 = local_18 >> 4;
      }
      local_18 = local_18 + uVar5;
      iVar3 = (int)local_30;
      iVar9 = (int)local_20;
      FUN_1812342b0(&local_30);
      local_20 = local_30 + (iVar9 - iVar3);
    }
    FUN_180493180(&local_20,wVar4);
    if (wVar4 == 0) {
      *param_2 = local_30;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar7 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar11 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar7;
        if (bVar11) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      return param_2;
    }
    bVar1 = *local_28;
    local_28 = local_28 + 1;
    if ((char)bVar1 < '\0') {
      bVar6 = 0x40;
      bVar2 = bVar1 & 0x40;
      while ((bVar2 != 0 && (8 < bVar6))) {
        local_28 = local_28 + 1;
        bVar6 = bVar6 >> 1;
        bVar2 = bVar1 & bVar6;
      }
    }
  } while( true );
}



############ FUN_ 180559dd0 size=175 ############

undefined8 * FUN_180559dd0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  
  *param_1 = juce::KeyMappingEditorComponent::vftable;
  FUN_1812d8df0(param_1 + 0x17,0,param_3,param_4,0xfffffffffffffffe);
  puVar1 = (undefined8 *)param_1[0x76];
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  param_1[0x3d] = juce::TextButton::vftable;
  param_1[0x53] = juce::TextButton::vftable;
  FUN_181337760();
  FUN_1812d8f00(param_1 + 0x17);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180559e80 size=141 ############

undefined8 * FUN_180559e80(undefined8 *param_1,ulonglong param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = juce::PreferencesPanel::vftable;
  FUN_180485f00(param_1 + 0x18);
  puVar2 = (undefined8 *)param_1[0x17];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(param_1[0x16] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180559f80 size=189 ############

undefined8 * FUN_180559f80(undefined8 *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  *param_1 = juce::SplashScreen::vftable;
  param_1[0x16] = juce::SplashScreen::vftable;
  param_1[0x19] = juce::SplashScreen::vftable;
  puVar3 = (undefined8 *)param_1[0x1a];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_1812a7170(param_1 + 0x19);
  param_1[0x16] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x16);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055a040 size=77 ############

undefined8 * FUN_18055a040(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::SystemTrayIconComponent::vftable;
  FUN_18055c400(param_1 + 0x16);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055a090 size=43 ############

undefined8 * FUN_18055a090(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IStorage>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055a110 size=84 ############

undefined8 * FUN_18055a110(undefined8 *param_1,ulonglong param_2)

{
  if ((longlong *)param_1[3] != (longlong *)0x0) {
    (**(code **)(*(longlong *)param_1[3] + 0x10))();
  }
  *param_1 = juce::ComBaseClassHelperBase<IOleInPlaceFrame>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055a1f0 size=122 ############

undefined8 * FUN_18055a1f0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  code *pcVar3;
  
  *param_1 = juce::ActiveXHelpers::JuceIOleInPlaceSite::vftable;
  plVar2 = (longlong *)param_1[3];
  pcVar3 = (code *)((undefined **)*plVar2)[2];
  if ((undefined **)*plVar2 == juce::ActiveXHelpers::JuceOleInPlaceFrame::vftable) {
    plVar1 = plVar2 + 1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    if ((int)*plVar1 == 0) {
      (*(code *)juce::ActiveXHelpers::JuceOleInPlaceFrame::vftable[0xf])
                (plVar2,1,pcVar3,param_4,0xfffffffffffffffe);
    }
  }
  else {
    (*pcVar3)();
  }
  *param_1 = juce::ComBaseClassHelperBase<IOleInPlaceSite>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055a380 size=122 ############

undefined8 * FUN_18055a380(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong *plVar2;
  code *pcVar3;
  
  *param_1 = juce::ActiveXHelpers::JuceIOleClientSite::vftable;
  plVar2 = (longlong *)param_1[2];
  pcVar3 = (code *)((undefined **)*plVar2)[2];
  if ((undefined **)*plVar2 == juce::ActiveXHelpers::JuceIOleInPlaceSite::vftable) {
    plVar1 = plVar2 + 1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    if ((int)*plVar1 == 0) {
      (*(code *)juce::ActiveXHelpers::JuceIOleInPlaceSite::vftable[0xf])
                (plVar2,1,pcVar3,param_4,0xfffffffffffffffe);
    }
  }
  else {
    (*pcVar3)();
  }
  *param_1 = juce::ComBaseClassHelperBase<IOleClientSite>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055adc0 size=52 ############

void * FUN_18055adc0(void *param_1,ulonglong param_2)

{
  FUN_18055a400();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055ae00 size=52 ############

void * FUN_18055ae00(void *param_1,ulonglong param_2)

{
  FUN_1813bdce0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055b210 size=709 ############

undefined8 FUN_18055b210(longlong param_1,int param_2)

{
  uint uVar1;
  ushort *puVar2;
  char cVar3;
  DWORD DVar4;
  uint *puVar5;
  undefined8 uVar6;
  longlong *in_stack_00000030;
  HLOCAL local_48;
  longlong local_40;
  longlong local_38;
  longlong local_30;
  longlong local_28 [4];
  
  local_28[1] = 0xfffffffffffffffe;
  if (param_2 == 0xfa) {
    puVar2 = *(ushort **)(*in_stack_00000030 + 0x80);
    if ((*puVar2 & 0x4000) == 0) {
      uVar6 = *(undefined8 *)(puVar2 + 4);
    }
    else {
      uVar6 = **(undefined8 **)(puVar2 + 4);
    }
    FUN_18049c800(&local_40,uVar6);
    cVar3 = (**(code **)(**(longlong **)(param_1 + 0x50) + 0x158))();
    **(short **)(*in_stack_00000030 + 8) = (cVar3 != '\0') - 1;
  }
  else {
    if (param_2 == 0x111) {
      local_28[2] = *(undefined8 *)(*in_stack_00000030 + 8);
      FUN_18049c800(&local_38);
      (**(code **)(**(longlong **)(param_1 + 0x50) + 0x178))
                (*(longlong **)(param_1 + 0x50),&local_38);
      puVar5 = (uint *)(local_38 + -0x10);
      if ((*puVar5 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar5;
        *puVar5 = *puVar5 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar5);
        }
      }
      **(undefined2 **)(*in_stack_00000030 + 0x50) = 0xffff;
      return 0;
    }
    if (param_2 != 0x103) {
      if (param_2 != 0x10f) {
        if (param_2 != 0x107) {
          return 0x80004001;
        }
        (**(code **)(**(longlong **)(param_1 + 0x50) + 0x170))();
        if ((int)in_stack_00000030[2] == 0) {
          return 0;
        }
        if (*(short *)*in_stack_00000030 != 0x400b) {
          return 0;
        }
        **(undefined2 **)((short *)*in_stack_00000030 + 4) = 0xffff;
        return 0;
      }
      DVar4 = *(DWORD *)(*(longlong *)(*in_stack_00000030 + 0x20) + 8);
      **(undefined2 **)(*in_stack_00000030 + 8) = 0;
      if (-1 < (int)DVar4) {
        return 0;
      }
      local_48 = (HLOCAL)0x0;
      DVar4 = FormatMessageW(0x1300,(LPCVOID)0x0,DVar4,0x400,(LPWSTR)&local_48,0,(va_list *)0x0);
      FUN_18049cc00(local_28,local_48,DVar4);
      LocalFree(local_48);
      cVar3 = (**(code **)(**(longlong **)(param_1 + 0x50) + 0x168))
                        (*(longlong **)(param_1 + 0x50),local_28);
      if (cVar3 == '\0') {
        **(undefined2 **)(*in_stack_00000030 + 8) = 0xffff;
      }
      puVar5 = (uint *)(local_28[0] + -0x10);
      if ((*puVar5 & 0x30000000) != 0) {
        return 0;
      }
      LOCK();
      uVar1 = *puVar5;
      *puVar5 = *puVar5 - 1;
      UNLOCK();
      goto LAB_18055b2b3;
    }
    puVar2 = *(ushort **)(*in_stack_00000030 + 8);
    if ((*puVar2 & 0x4000) == 0) {
      uVar6 = *(undefined8 *)(puVar2 + 4);
    }
    else {
      uVar6 = **(undefined8 **)(puVar2 + 4);
    }
    FUN_18049c800(&local_30,uVar6);
    (**(code **)(**(longlong **)(param_1 + 0x50) + 0x160))(*(longlong **)(param_1 + 0x50),&local_30)
    ;
    local_40 = local_30;
  }
  puVar5 = (uint *)(local_40 + -0x10);
  if ((*puVar5 & 0x30000000) != 0) {
    return 0;
  }
  LOCK();
  uVar1 = *puVar5;
  *puVar5 = *puVar5 - 1;
  UNLOCK();
LAB_18055b2b3:
  if (uVar1 != 0) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  free(puVar5);
}



############ FUN_ 18055b4f0 size=66 ############

undefined8 * FUN_18055b4f0(undefined8 *param_1,ulonglong param_2)

{
  FUN_181322ab0(param_1 + 2);
  *param_1 = juce::ComBaseClassHelperBase<IDispatch>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1813c2bd0 size=509 ############

undefined8 FUN_1813c2bd0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  byte bVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  undefined8 uVar7;
  undefined8 *puVar8;
  uint *puVar9;
  byte *pbVar10;
  byte *local_res8;
  undefined1 *local_res10;
  longlong local_res18;
  longlong local_res20;
  
  if ((*(uint *)(param_1 + 0x114) < *(uint *)((longlong)*(longlong **)(param_1 + 0x108) + 0xc)) &&
     (puVar8 = *(undefined8 **)
                (**(longlong **)(param_1 + 0x108) + (longlong)(int)*(uint *)(param_1 + 0x114) * 8),
     puVar8 != (undefined8 *)0x0)) {
    local_res10 = (undefined1 *)*puVar8;
    if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    local_res10 = &DAT_1821dbf98;
  }
  FUN_1812487f0(&local_res10,&local_res8,&DAT_1821e4964,param_4,0xfffffffffffffffe);
  puVar9 = (uint *)(local_res10 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  iVar4 = *(int *)(param_1 + 0x118);
  if (*local_res8 != 0) {
    iVar6 = 0;
    pbVar10 = local_res8;
    while( true ) {
      while( true ) {
        bVar2 = *pbVar10;
        pbVar10 = pbVar10 + 1;
        if (-1 < (char)bVar2) break;
        if ((*pbVar10 & 0xc0) != 0x80) goto LAB_1813c2cc7;
        do {
          pbVar10 = pbVar10 + 1;
        } while ((*pbVar10 & 0xc0) == 0x80);
        iVar6 = iVar6 + 1;
      }
      if (bVar2 == 0) break;
LAB_1813c2cc7:
      iVar6 = iVar6 + 1;
    }
    if (iVar6 == iVar4) {
      uVar5 = *(undefined4 *)(param_1 + 0x114);
      iVar6 = FUN_1813c0b30(param_1,uVar5,iVar4);
      iVar6 = FUN_1813c09e0(param_1,uVar5,(iVar6 - (iVar6 + -1) % *(int *)(param_1 + 0xdc)) + -1);
      uVar7 = FUN_1812490c0(&local_res8,&local_res20,iVar6,iVar4);
      puVar8 = (undefined8 *)FUN_181248e40(uVar7,&local_res18);
      cVar3 = *(char *)*puVar8;
      puVar9 = (uint *)(local_res18 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      puVar9 = (uint *)(local_res20 + -0x10);
      if ((*puVar9 & 0x30000000) == 0) {
        LOCK();
        uVar1 = *puVar9;
        *puVar9 = *puVar9 - 1;
        UNLOCK();
        if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
          free(puVar9);
        }
      }
      if (cVar3 == '\0') {
        FUN_1813c81f0(param_1 + 0x120,iVar6 - iVar4);
        uVar7 = 1;
        goto LAB_1813c2da1;
      }
    }
  }
  uVar7 = 0;
LAB_1813c2da1:
  puVar9 = (uint *)(local_res8 + -0x10);
  if ((*puVar9 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar9;
    *puVar9 = *puVar9 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar9);
    }
  }
  return uVar7;
}



############ FUN_ 1813c09e0 size=315 ############

int FUN_1813c09e0(longlong param_1,uint param_2,int param_3)

{
  byte bVar1;
  undefined8 *puVar2;
  uint uVar3;
  byte *pbVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  int iVar8;
  int iVar9;
  
  if ((param_2 < *(uint *)((longlong)*(longlong **)(param_1 + 200) + 0xc)) &&
     (puVar2 = *(undefined8 **)(**(longlong **)(param_1 + 200) + (longlong)(int)param_2 * 8),
     puVar2 != (undefined8 *)0x0)) {
    pbVar7 = (byte *)*puVar2;
    if ((*(uint *)(pbVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar7 + -0x10) = *(int *)(pbVar7 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar7 = &DAT_1821dbf98;
  }
  iVar6 = 0;
  iVar9 = 0;
  bVar1 = *pbVar7;
  pbVar4 = pbVar7;
  while (bVar1 != 0) {
    bVar1 = *pbVar4;
    pbVar4 = pbVar4 + 1;
    uVar5 = (uint)bVar1;
    if ((char)bVar1 < '\0') {
      uVar3 = 0x40;
      iVar8 = 0;
      uVar5 = 0x7f;
      if ((bVar1 & 0x40) != 0) {
        do {
          if (uVar3 < 9) break;
          uVar5 = uVar5 >> 1;
          iVar8 = iVar8 + 1;
          uVar3 = uVar3 >> 1;
        } while ((bVar1 & uVar3) != 0);
      }
      uVar5 = bVar1 & uVar5;
      for (; (iVar8 = iVar8 + -1, -1 < iVar8 && ((*pbVar4 & 0xc0) == 0x80)); pbVar4 = pbVar4 + 1) {
        uVar5 = *pbVar4 & 0x3f | uVar5 << 6;
      }
    }
    if (uVar5 == 9) {
      iVar9 = iVar9 + (*(int *)(param_1 + 0xdc) - iVar9 % *(int *)(param_1 + 0xdc));
    }
    else {
      iVar9 = iVar9 + 1;
    }
    if (param_3 < iVar9) break;
    iVar6 = iVar6 + 1;
    bVar1 = *pbVar4;
  }
  pbVar4 = pbVar7 + -0x10;
  if ((*(uint *)(pbVar7 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar9 = *(int *)pbVar4;
    *(int *)pbVar4 = *(int *)pbVar4 + -1;
    UNLOCK();
    if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pbVar4);
    }
  }
  return iVar6;
}



############ FUN_ 1813c0b30 size=311 ############

int FUN_1813c0b30(longlong param_1,uint param_2,int param_3)

{
  byte bVar1;
  undefined8 *puVar2;
  uint uVar3;
  byte *pbVar4;
  uint uVar5;
  int iVar6;
  byte *pbVar7;
  int iVar8;
  int iVar9;
  
  if ((param_2 < *(uint *)((longlong)*(longlong **)(param_1 + 200) + 0xc)) &&
     (puVar2 = *(undefined8 **)(**(longlong **)(param_1 + 200) + (longlong)(int)param_2 * 8),
     puVar2 != (undefined8 *)0x0)) {
    pbVar7 = (byte *)*puVar2;
    if ((*(uint *)(pbVar7 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(pbVar7 + -0x10) = *(int *)(pbVar7 + -0x10) + 1;
      UNLOCK();
    }
  }
  else {
    pbVar7 = &DAT_1821dbf98;
  }
  iVar6 = 0;
  iVar9 = 0;
  pbVar4 = pbVar7;
  if (0 < param_3) {
    do {
      bVar1 = *pbVar4;
      if (bVar1 == 0) break;
      pbVar4 = pbVar4 + 1;
      uVar5 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar3 = 0x40;
        iVar8 = 0;
        uVar5 = 0x7f;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar3 < 9) break;
            uVar5 = uVar5 >> 1;
            iVar8 = iVar8 + 1;
            uVar3 = uVar3 >> 1;
          } while ((bVar1 & uVar3) != 0);
        }
        uVar5 = bVar1 & uVar5;
        for (; (iVar8 = iVar8 + -1, -1 < iVar8 && ((*pbVar4 & 0xc0) == 0x80)); pbVar4 = pbVar4 + 1)
        {
          uVar5 = *pbVar4 & 0x3f | uVar5 << 6;
        }
      }
      if (uVar5 == 9) {
        iVar6 = iVar6 + (*(int *)(param_1 + 0xdc) - iVar6 % *(int *)(param_1 + 0xdc));
      }
      else {
        iVar6 = iVar6 + 1;
      }
      iVar9 = iVar9 + 1;
    } while (iVar9 < param_3);
  }
  pbVar4 = pbVar7 + -0x10;
  if ((*(uint *)(pbVar7 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar9 = *(int *)pbVar4;
    *(int *)pbVar4 = *(int *)pbVar4 + -1;
    UNLOCK();
    if (iVar9 == 0) {
                    /* WARNING: Subroutine does not return */
      free(pbVar4);
    }
  }
  return iVar6;
}



############ FUN_ 1813c40f0 size=171 ############

void FUN_1813c40f0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4)

{
  uint *_Memory;
  uint uVar1;
  char *local_res8 [4];
  
  local_res8[0] = "";
  if ((char)param_1[0x1f] == '\0') {
    FUN_1813c7b70(param_1[0x19],(int)param_1[0x25],(int)param_1[0x28],param_4,0xfffffffffffffffe);
    if (*local_res8[0] != '\0') {
      FUN_1813c6950(param_1[0x19],local_res8,(int)param_1[0x22],1);
    }
    FUN_1813c4cd0(param_1);
    (**(code **)(*param_1 + 400))(param_1);
  }
  _Memory = (uint *)(local_res8[0] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1813c7aa0 size=138 ############

void FUN_1813c7aa0(longlong param_1)

{
  int *_Memory;
  int iVar1;
  longlong lVar2;
  uint uVar3;
  bool bVar4;
  
  *(undefined1 *)(param_1 + 0x90) = 1;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    DAT_1821dbf88 = DAT_1821dbf88 + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = *(longlong *)(param_1 + 0x78);
  *(longlong *)(param_1 + 0x78) = (longlong)&DAT_1821dbf98;
  UNLOCK();
  _Memory = (int *)(lVar2 + -0x10);
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar1 = *_Memory;
    *_Memory = *_Memory + -1;
    UNLOCK();
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar3 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar4 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar3;
    if (bVar4) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return;
}



############ FUN_ 18055c5e0 size=43 ############

undefined8 * FUN_18055c5e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IDispatch>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055c610 size=43 ############

undefined8 * FUN_18055c610(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IOleClientSite>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055c640 size=43 ############

undefined8 * FUN_18055c640(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IOleInPlaceSite>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055c670 size=43 ############

undefined8 * FUN_18055c670(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::ComBaseClassHelperBase<IOleInPlaceFrame>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18055c950 size=240 ############

void FUN_18055c950(longlong *param_1,int param_2)

{
  int iVar1;
  longlong lVar2;
  void *_Memory;
  void *pvVar3;
  int *_Memory_00;
  int iVar4;
  uint uVar5;
  longlong lVar6;
  
  if ((int)*(uint *)(param_1 + 1) < param_2) {
    uVar5 = param_2 + 8 + param_2 / 2 & 0xfffffff8;
    if (*(uint *)(param_1 + 1) != uVar5) {
      if ((int)uVar5 < 1) {
                    /* WARNING: Subroutine does not return */
        free((void *)*param_1);
      }
      pvVar3 = malloc((longlong)(int)uVar5 << 4);
      iVar4 = 0;
      if (0 < *(int *)((longlong)param_1 + 0xc)) {
        lVar6 = 0;
        do {
          lVar2 = *param_1;
          *(undefined8 *)(lVar6 + (longlong)pvVar3) = *(undefined8 *)(lVar6 + lVar2);
          *(undefined1 **)(lVar6 + lVar2) = &DAT_1821dbf98;
          *(undefined4 *)((undefined8 *)(lVar6 + (longlong)pvVar3) + 1) =
               *(undefined4 *)(lVar6 + 8 + lVar2);
          _Memory_00 = (int *)(*(longlong *)(lVar6 + *param_1) + -0x10);
          if ((*(uint *)(*(longlong *)(lVar6 + *param_1) + -0x10) & 0x30000000) == 0) {
            LOCK();
            iVar1 = *_Memory_00;
            *_Memory_00 = *_Memory_00 + -1;
            UNLOCK();
            if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
              free(_Memory_00);
            }
          }
          iVar4 = iVar4 + 1;
          lVar6 = lVar6 + 0x10;
        } while (iVar4 < *(int *)((longlong)param_1 + 0xc));
      }
      _Memory = (void *)*param_1;
      *param_1 = (longlong)pvVar3;
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *(uint *)(param_1 + 1) = uVar5;
  }
  return;
}



############ FUN_ 18055e9a0 size=56 ############

/* Library Function - Single Match
    public: void * __ptr64 __cdecl MRECmpImpl::`scalar deleting destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void * __thiscall MRECmpImpl::_scalar_deleting_destructor_(MRECmpImpl *this,uint param_1)

{
  FUN_180568a50(this + 0x10);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 18055eca0 size=43 ############

undefined8 * FUN_18055eca0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = DummyEqualizerWrapperBase::Listener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18056d010 size=584 ############

longlong FUN_18056d010(longlong *param_1,longlong param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  undefined4 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined8 uVar9;
  ulonglong uVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  longlong lVar14;
  void *_Memory;
  longlong lVar15;
  
  lVar13 = *param_1;
  lVar12 = (param_1[1] - lVar13) / 0x70;
  if (lVar12 == 0x249249249249249) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar12 + 1;
  uVar5 = (param_1[2] - lVar13) / 0x70;
  uVar10 = uVar1;
  if ((uVar5 <= 0x249249249249249 - (uVar5 >> 1)) && (uVar10 = (uVar5 >> 1) + uVar5, uVar10 < uVar1)
     ) {
    uVar10 = uVar1;
  }
  lVar11 = FUN_180480500();
  lVar15 = ((param_2 - lVar13) / 0x70) * 0x70;
  *(undefined8 *)(lVar11 + lVar15) = 0;
  *(undefined8 *)(lVar11 + 8 + lVar15) = 0;
  *(undefined8 *)(lVar11 + 0x10 + lVar15) = 0;
  *(undefined8 *)(lVar11 + lVar15) = *param_3;
  *(undefined8 *)(lVar11 + 8 + lVar15) = param_3[1];
  *(undefined8 *)(lVar11 + 0x10 + lVar15) = param_3[2];
  *param_3 = 0;
  param_3[1] = 0;
  param_3[2] = 0;
  *(undefined8 *)(lVar11 + 0x18 + lVar15) = param_3[3];
  *(undefined4 *)(lVar11 + 0x20 + lVar15) = *(undefined4 *)(param_3 + 4);
  *(undefined8 *)(lVar11 + 0x28 + lVar15) = param_3[5];
  *(undefined8 *)(lVar11 + 0x30 + lVar15) = param_3[6];
  *(undefined8 *)(lVar11 + 0x38 + lVar15) = param_3[7];
  uVar9 = param_3[9];
  puVar2 = (undefined8 *)(lVar11 + 0x40 + lVar15);
  *puVar2 = param_3[8];
  puVar2[1] = uVar9;
  uVar6 = *(undefined4 *)((longlong)param_3 + 0x54);
  uVar7 = *(undefined4 *)(param_3 + 0xb);
  uVar8 = *(undefined4 *)((longlong)param_3 + 0x5c);
  puVar3 = (undefined4 *)(lVar11 + 0x50 + lVar15);
  *puVar3 = *(undefined4 *)(param_3 + 10);
  puVar3[1] = uVar6;
  puVar3[2] = uVar7;
  puVar3[3] = uVar8;
  uVar6 = *(undefined4 *)((longlong)param_3 + 100);
  uVar7 = *(undefined4 *)(param_3 + 0xd);
  uVar8 = *(undefined4 *)((longlong)param_3 + 0x6c);
  puVar3 = (undefined4 *)(lVar11 + 0x60 + lVar15);
  *puVar3 = *(undefined4 *)(param_3 + 0xc);
  puVar3[1] = uVar6;
  puVar3[2] = uVar7;
  puVar3[3] = uVar8;
  lVar13 = param_1[1];
  lVar12 = *param_1;
  lVar14 = lVar11;
  if (param_2 != lVar13) {
    FUN_18056e710(*param_1,param_2,lVar11);
    lVar13 = param_1[1];
    lVar14 = lVar15 + 0x70 + lVar11;
    lVar12 = param_2;
  }
  FUN_18056e710(lVar12,lVar13,lVar14);
  lVar13 = *param_1;
  if (lVar13 == 0) {
    *param_1 = lVar11;
    param_1[1] = uVar1 * 0x70 + lVar11;
    param_1[2] = uVar10 * 0x70 + lVar11;
    return *param_1 + lVar15;
  }
  lVar12 = param_1[1];
  for (; lVar13 != lVar12; lVar13 = lVar13 + 0x70) {
    FUN_180569ed0(lVar13);
  }
  pvVar4 = (void *)*param_1;
  _Memory = pvVar4;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x70) * 0x70)) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180560030 size=52 ############

void * .?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
       vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
                 (void *param_1,ulonglong param_2)

{
  FUN_18055fc30();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805603b0 size=43 ############

undefined8 *
.?AV?$CloudyAudioProcessorEditor@VSoothe2AudioProcessor@@USoothe2VertexData@@@@::
vtbl___AV__CloudyAudioProcessorEditor_VSoothe2AudioProcessor__USoothe2VertexData____
          (undefined8 *param_1,ulonglong param_2)

{
  *param_1 = CloudyTooltip::Positioner::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18056a690 size=135 ############

void FUN_18056a690(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_2 + param_3 * 8;
    param_1[2] = param_2 + param_4 * 8;
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805606d0 size=43 ############

undefined8 * FUN_1805606d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = CloudyOpenGLRendererCallbacks::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180571dd0 size=556 ############

longlong FUN_180571dd0(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 uVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  void *_Memory;
  undefined8 *puVar11;
  ulonglong uVar12;
  longlong *plVar13;
  longlong lVar14;
  ulonglong uVar15;
  
  lVar9 = *param_1;
  lVar14 = (longlong)param_2 - lVar9 >> 3;
  lVar5 = param_1[1] - lVar9 >> 3;
  if (lVar5 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar8 = param_1[2] - lVar9 >> 3;
  uVar1 = lVar5 + 1;
  uVar6 = uVar1;
  if ((uVar8 <= 0x1fffffffffffffff - (uVar8 >> 1)) && (uVar6 = (uVar8 >> 1) + uVar8, uVar6 < uVar1))
  {
    uVar6 = uVar1;
  }
  lVar9 = uVar6 * 8;
  if (0x1fffffffffffffff < uVar6) {
    lVar9 = -1;
  }
  puVar7 = (undefined8 *)FUN_180480500(lVar9);
  uVar2 = *param_3;
  uVar8 = 0;
  *param_3 = 0;
  lVar9 = lVar14 * 8;
  puVar7[lVar14] = uVar2;
  puVar11 = (undefined8 *)param_1[1];
  puVar10 = (undefined8 *)*param_1;
  if (param_2 == puVar11) {
    uVar12 = (ulonglong)((longlong)puVar11 + (7 - (longlong)puVar10)) >> 3;
    if (puVar11 < puVar10) {
      uVar12 = uVar8;
    }
    puVar11 = puVar7;
    if (uVar12 != 0) {
      do {
        uVar2 = *puVar10;
        *puVar10 = 0;
        puVar10 = puVar10 + 1;
        uVar8 = uVar8 + 1;
        *puVar11 = uVar2;
        puVar11 = puVar11 + 1;
      } while (uVar8 != uVar12);
    }
  }
  else {
    uVar12 = (ulonglong)((longlong)param_2 + (7 - (longlong)puVar10)) >> 3;
    if (param_2 < puVar10) {
      uVar12 = uVar8;
    }
    puVar11 = puVar7;
    uVar15 = uVar8;
    if (uVar12 != 0) {
      do {
        uVar2 = *puVar10;
        *puVar10 = 0;
        puVar10 = puVar10 + 1;
        uVar15 = uVar15 + 1;
        *puVar11 = uVar2;
        puVar11 = puVar11 + 1;
      } while (uVar15 != uVar12);
    }
    uVar12 = (param_1[1] - (longlong)param_2) + 7U >> 3;
    if ((undefined8 *)param_1[1] < param_2) {
      uVar12 = uVar8;
    }
    if (uVar12 != 0) {
      lVar5 = lVar9 - (longlong)param_2;
      do {
        uVar2 = *param_2;
        uVar8 = uVar8 + 1;
        *param_2 = 0;
        *(undefined8 *)((longlong)puVar7 + lVar5 + 8 + (longlong)param_2) = uVar2;
        param_2 = param_2 + 1;
      } while (uVar8 != uVar12);
    }
  }
  plVar13 = (longlong *)*param_1;
  if (plVar13 != (longlong *)0x0) {
    plVar3 = (longlong *)param_1[1];
    for (; plVar13 != plVar3; plVar13 = plVar13 + 1) {
      if (*plVar13 != 0) {
        FUN_18056a070();
      }
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = (longlong)puVar7;
  param_1[1] = (longlong)(puVar7 + uVar1);
  param_1[2] = (longlong)(puVar7 + uVar6);
  return *param_1 + lVar9;
}



############ FUN_ 180568570 size=330 ############

undefined8 * FUN_180568570(undefined8 *param_1,undefined8 *param_2)

{
  void *_Src;
  longlong lVar1;
  void *pvVar2;
  ulonglong uVar3;
  void *pvVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  size_t sVar7;
  
  lVar1 = param_2[1];
  pvVar4 = (void *)*param_2;
  pvVar2 = (void *)*param_1;
  sVar7 = lVar1 - (longlong)pvVar4;
  uVar3 = param_1[1] - (longlong)pvVar2 >> 2;
  uVar5 = param_1[2] - (longlong)pvVar2 >> 2;
  uVar6 = (longlong)sVar7 >> 2;
  if (uVar5 < uVar6) {
    if (0x3fffffffffffffff < uVar6) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar3 = uVar6;
    if ((uVar5 <= 0x3fffffffffffffff - (uVar5 >> 1)) &&
       (uVar3 = (uVar5 >> 1) + uVar5, uVar3 < uVar6)) {
      uVar3 = uVar6;
    }
    if (pvVar2 != (void *)0x0) {
      pvVar4 = pvVar2;
      if ((0xfff < uVar5 * 4) &&
         (pvVar4 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar4);
    }
    FUN_18052fac0(param_1,uVar3);
    pvVar2 = (void *)*param_1;
    memmove(pvVar2,pvVar4,sVar7);
    param_1[1] = sVar7 + (longlong)pvVar2;
  }
  else if (uVar3 < uVar6) {
    _Src = (void *)((longlong)pvVar4 + uVar3 * 4);
    memmove(pvVar2,pvVar4,(longlong)_Src - (longlong)pvVar4);
    pvVar4 = (void *)param_1[1];
    sVar7 = lVar1 - (longlong)_Src;
    memmove(pvVar4,_Src,sVar7);
    param_1[1] = sVar7 + (longlong)pvVar4;
  }
  else {
    memmove(pvVar2,pvVar4,sVar7);
    param_1[1] = (void *)((longlong)pvVar2 + uVar6 * 4);
  }
  return param_1;
}



############ FUN_ 18056c930 size=406 ############

void FUN_18056c930(longlong *param_1,void *param_2,longlong param_3)

{
  void *pvVar1;
  longlong lVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  void *pvVar5;
  ulonglong uVar6;
  size_t _Size;
  
  pvVar1 = (void *)*param_1;
  _Size = param_3 - (longlong)param_2;
  uVar4 = param_1[1] - (longlong)pvVar1 >> 4;
  uVar3 = param_1[2] - (longlong)pvVar1 >> 4;
  uVar6 = (longlong)_Size >> 4;
  if (uVar3 < uVar6) {
    if (0xfffffffffffffff < uVar6) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar4 = uVar6;
    if ((uVar3 <= 0xfffffffffffffff - (uVar3 >> 1)) && (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < uVar6)
       ) {
      uVar4 = uVar6;
    }
    if (pvVar1 != (void *)0x0) {
      pvVar5 = pvVar1;
      if ((0xfff < uVar3 << 4) &&
         (pvVar5 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar4 != 0) {
      if (0xfffffffffffffff < uVar4) {
                    /* WARNING: Subroutine does not return */
        FUN_18047cf10();
      }
      lVar2 = uVar4 * 0x10;
      if (0xfffffffffffffff < uVar4) {
        lVar2 = -1;
      }
      lVar2 = FUN_180480500(lVar2);
      *param_1 = lVar2;
      param_1[1] = lVar2;
      param_1[2] = *param_1 + uVar4 * 0x10;
    }
    pvVar1 = (void *)*param_1;
    memmove(pvVar1,param_2,_Size);
    param_1[1] = _Size + (longlong)pvVar1;
  }
  else if (uVar4 < uVar6) {
    pvVar5 = (void *)(uVar4 * 0x10 + (longlong)param_2);
    memmove(pvVar1,param_2,(longlong)pvVar5 - (longlong)param_2);
    pvVar1 = (void *)param_1[1];
    memmove(pvVar1,pvVar5,param_3 - (longlong)pvVar5);
    param_1[1] = (param_3 - (longlong)pvVar5) + (longlong)pvVar1;
  }
  else {
    memmove(pvVar1,param_2,_Size);
    param_1[1] = (longlong)(uVar6 * 0x10 + (longlong)pvVar1);
  }
  return;
}



############ FUN_ 1805684e0 size=120 ############

undefined8 * FUN_1805684e0(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int *_Memory;
  longlong *plVar2;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar1 = *param_2;
  *param_2 = 0;
  _Memory = (int *)*param_1;
  *param_1 = uVar1;
  if (_Memory != (int *)0x0) {
    if (*_Memory != 0) {
      plVar2 = (longlong *)FUN_1805989c0();
      if (*(longlong *)(_Memory + 4) == *plVar2) {
        glDeleteTextures(1,_Memory);
        _Memory[0] = 0;
        _Memory[1] = 0;
        _Memory[2] = 0;
      }
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 1805618f0 size=170 ############

void * FUN_1805618f0(void *param_1,ulonglong param_2)

{
  int iVar1;
  int *piVar2;
  undefined8 *puVar3;
  longlong *plVar4;
  
  piVar2 = *(int **)((longlong)param_1 + 0x88);
  if (piVar2 != (int *)0x0) {
    if (*piVar2 != 0) {
      plVar4 = (longlong *)FUN_1805989c0();
      if (*(longlong *)(piVar2 + 4) == *plVar4) {
        glDeleteTextures(1,piVar2);
        piVar2[0] = 0;
        piVar2[1] = 0;
        piVar2[2] = 0;
      }
    }
                    /* WARNING: Subroutine does not return */
    free(piVar2);
  }
  puVar3 = *(undefined8 **)((longlong)param_1 + 0x80);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar2 = (int *)(puVar3 + 1);
    iVar1 = *piVar2;
    *piVar2 = *piVar2 + -1;
    UNLOCK();
    if (iVar1 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_1805619f0((longlong)param_1 + 8);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180561b00 size=52 ############

void * .?AUSoothe2VertexData@@::vtbl___AUSoothe2VertexData__(void *param_1,ulonglong param_2)

{
  FUN_1805619f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180562580 size=545 ############

void FUN_180562580(longlong param_1)

{
  float *pfVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  longlong lVar10;
  bool bVar11;
  float *pfVar12;
  uint uVar13;
  ulonglong uVar14;
  uint uVar15;
  ulonglong uVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  float *local_60;
  longlong lStack_58;
  longlong local_50;
  
  uVar16 = 0;
  if ((*(int *)(param_1 + 0xb0) != 0) || (bVar11 = true, *(int *)(param_1 + 0xb4) != 0)) {
    bVar11 = false;
  }
  if (!bVar11) {
    uVar13 = 0;
    lVar9 = *(longlong *)(param_1 + 0x80);
    uVar14 = uVar16;
    uVar17 = uVar16;
    for (lVar10 = lVar9; lVar10 != *(longlong *)(param_1 + 0x88);
        lVar10 = *(longlong *)(lVar10 + 0x18)) {
      uVar13 = (int)uVar14 + (int)*(undefined8 *)(lVar10 + 0x20);
      uVar14 = (ulonglong)uVar13;
      uVar17 = (ulonglong)
               (uint)((int)uVar17 + (int)((ulonglong)*(undefined8 *)(lVar10 + 0x20) >> 0x20));
    }
    iVar4 = *(int *)(lVar9 + 0x2c);
    iVar5 = *(int *)(lVar9 + 0x28);
    local_60 = (float *)0x0;
    lStack_58 = 0;
    local_50 = 0;
    FUN_1805603e0(&local_60,*(undefined4 *)(param_1 + 0x90),uVar17,
                  CONCAT44((float)*(int *)(lVar9 + 0x2c),(float)*(int *)(lVar9 + 0x28)));
    uVar14 = lStack_58 - (longlong)local_60 >> 3;
    if (uVar14 != 0) {
      pfVar12 = local_60;
      uVar18 = uVar16;
      do {
        fVar2 = *pfVar12;
        fVar3 = pfVar12[1];
        iVar6 = *(int *)(param_1 + 0xb4);
        iVar7 = *(int *)(param_1 + 0xac);
        iVar8 = *(int *)(param_1 + 0xb4);
        pfVar1 = (float *)(uVar18 + *(longlong *)(param_1 + 0x40));
        *pfVar1 = (((float)iVar5 * fVar2 + (float)(int)uVar13) - (float)*(int *)(param_1 + 0xa8)) /
                  (float)*(int *)(param_1 + 0xb0);
        pfVar1[1] = ((float)(iVar6 + iVar7) -
                    (((float)(int)uVar17 + (float)iVar4) - (float)iVar4 * fVar3)) / (float)iVar8;
        pfVar1[2] = fVar2;
        pfVar1[3] = fVar3;
        uVar15 = (int)uVar16 + 1;
        uVar16 = (ulonglong)uVar15;
        pfVar12 = pfVar12 + 2;
        uVar18 = uVar18 + 0x10;
      } while ((ulonglong)(longlong)(int)uVar15 < uVar14);
    }
    *(undefined2 *)(param_1 + 0xd0) = 0x101;
    if (local_60 != (float *)0x0) {
      pfVar12 = local_60;
      if ((0xfff < (local_50 - (longlong)local_60 & 0xfffffffffffffff8U)) &&
         (pfVar12 = *(float **)(local_60 + -2),
         0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)pfVar12)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pfVar12);
    }
  }
  return;
}



############ FUN_ 18056c7b0 size=373 ############

void FUN_18056c7b0(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  
  pvVar3 = (void *)param_1[1];
  lVar5 = *param_1;
  uVar6 = (longlong)pvVar3 - lVar5 >> 4;
  uVar4 = param_1[2] - lVar5 >> 4;
  if (uVar4 < param_2) {
    if (0xfffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar2 = param_2;
    if ((uVar4 <= 0xfffffffffffffff - (uVar4 >> 1)) &&
       (uVar2 = (uVar4 >> 1) + uVar4, uVar2 < param_2)) {
      uVar2 = param_2;
    }
    lVar5 = uVar2 * 0x10;
    if (0xfffffffffffffff < uVar2) {
      lVar5 = -1;
    }
    pvVar3 = (void *)FUN_180480500(lVar5);
    if (param_2 - uVar6 != 0) {
      memset((void *)(uVar6 * 0x10 + (longlong)pvVar3),0,(param_2 - uVar6) * 0x10);
    }
    memmove(pvVar3,(void *)*param_1,param_1[1] - *param_1);
    pvVar1 = (void *)*param_1;
    if (pvVar1 != (void *)0x0) {
      pvVar3 = pvVar1;
      if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff0U)) &&
         (pvVar3 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar3);
    }
    *param_1 = (longlong)pvVar3;
    param_1[1] = (longlong)(param_2 * 0x10 + (longlong)pvVar3);
    param_1[2] = (longlong)(uVar2 * 0x10 + (longlong)pvVar3);
  }
  else if (uVar6 < param_2) {
    lVar5 = param_2 - uVar6;
    if (lVar5 != 0) {
      memset(pvVar3,0,lVar5 * 0x10);
      pvVar3 = (void *)((longlong)pvVar3 + lVar5 * 0x10);
    }
    param_1[1] = (longlong)pvVar3;
  }
  else if (param_2 != uVar6) {
    param_1[1] = param_2 * 0x10 + lVar5;
  }
  return;
}



############ FUN_ 18056df20 size=135 ############

void FUN_18056df20(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_2 + param_3 * 4;
    param_1[2] = param_2 + param_4 * 4;
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805627b0 size=52 ############

void * FUN_1805627b0(void *param_1,ulonglong param_2)

{
  FUN_180561ce0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180569e60 size=84 ############

undefined8 * FUN_180569e60(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  void *_Memory;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar1 = *param_2;
  *param_2 = 0;
  _Memory = (void *)*param_1;
  *param_1 = uVar1;
  if (_Memory != (void *)0x0) {
    FUN_18056ae80(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 180571460 size=109 ############

undefined8 * FUN_180571460(undefined8 *param_1,undefined8 *param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 uVar3;
  longlong *_Memory;
  undefined8 *puVar4;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar3 = *param_2;
  *param_2 = 0;
  _Memory = (longlong *)*param_1;
  *param_1 = uVar3;
  if (_Memory != (longlong *)0x0) {
    puVar4 = (undefined8 *)*_Memory;
    if (puVar4 != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(puVar4 + 1);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar2 == 1) {
        (**(code **)*puVar4)(puVar4,1);
      }
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 181254070 size=377 ############

void FUN_181254070(undefined8 *param_1,undefined8 param_2)

{
  uint uVar1;
  bool bVar2;
  undefined1 *local_f0;
  undefined1 *local_e8 [8];
  undefined **local_a8 [10];
  undefined8 local_58;
  
  local_58 = 0xfffffffffffffffe;
  local_f0 = &DAT_1821dbf98;
  local_e8[0] = &DAT_1821dbf98;
  FUN_181254d40(param_1,local_e8,&local_f0);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = juce::CustomTypeface::vftable;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  FUN_181253f80(param_1);
  FUN_1812196a0(local_a8,param_2);
  if (local_a8[0] != juce::GZIPDecompressorInputStream::vftable) {
    (*(code *)local_a8[0][1])(local_a8);
  }
  if (local_a8[0] != juce::GZIPDecompressorInputStream::vftable) {
    (*(code *)local_a8[0][0x15])();
  }
                    /* WARNING: Subroutine does not return */
  free((void *)0x0);
}



############ FUN_ 180578cc0 size=84 ############

undefined8 * FUN_180578cc0(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  void *_Memory;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar1 = *param_2;
  *param_2 = 0;
  _Memory = (void *)*param_1;
  *param_1 = uVar1;
  if (_Memory != (void *)0x0) {
    FUN_1816056e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 181346350 size=123 ############

undefined8 *
FUN_181346350(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  bool bVar2;
  undefined1 *local_res8 [4];
  
  local_res8[0] = &DAT_1821dbf98;
  FUN_1813379d0(param_1,local_res8,param_3,param_4,0xfffffffffffffffe);
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar1 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar2 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar1;
    if (bVar2) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  *param_1 = juce::TextButton::vftable;
  param_1[0x16] = juce::TextButton::vftable;
  return param_1;
}



############ FUN_ 180576a30 size=251 ############

void * FUN_180576a30(void *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  void *_Memory;
  void *local_res8;
  longlong *local_res10;
  longlong local_50 [2];
  undefined2 local_40;
  undefined1 *local_38;
  undefined1 *local_30;
  undefined8 local_28;
  undefined8 local_20;
  undefined2 local_18;
  undefined8 local_10;
  
  local_50[0] = *param_2;
  if ((*(uint *)(local_50[0] + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_50[0] + -0x10) = *(int *)(local_50[0] + -0x10) + 1;
    UNLOCK();
  }
  local_50[1] = 0;
  local_40 = 0;
  local_38 = &DAT_1821dbf98;
  local_30 = &DAT_1821dbf98;
  local_28 = 0;
  local_20 = 0;
  local_18 = 0x100;
  local_10 = 0;
  local_res8 = param_1;
  FUN_181248430(local_50,&local_res8,local_50[0],param_4,0xfffffffffffffffe);
  FUN_181248660(local_50);
  _Memory = local_res8;
  FUN_18132eac0(&local_res10,local_res8);
  (**(code **)(*local_res10 + 0x160))(local_res10,param_1);
  (**(code **)*local_res10)(local_res10,1);
  if (_Memory != (void *)0x0) {
    FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 18132eac0 size=345 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_18132eac0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  char cVar2;
  undefined8 uVar3;
  bool bVar4;
  undefined8 local_70;
  undefined8 local_68;
  undefined1 *local_58;
  undefined8 local_50;
  undefined8 local_48;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined1 *local_18;
  
  cVar2 = FUN_181220e10(param_2,&DAT_1821e2b64,param_3,param_4,0xfffffffffffffffe);
  if (cVar2 == '\0') {
    *param_1 = 0;
  }
  else {
    local_58 = &DAT_1821dbf98;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      DAT_1821dbf88 = DAT_1821dbf88 + 1;
      UNLOCK();
    }
    local_48 = 0;
    local_40 = 0x44000000;
    local_3c = 0x44000000;
    local_38 = _DAT_1824c47e0;
    uStack_34 = _UNK_1824c47e4;
    uStack_30 = _UNK_1824c47e8;
    uStack_2c = _UNK_1824c47ec;
    local_28 = _DAT_1824c47e0;
    uStack_24 = _UNK_1824c47e4;
    uStack_20 = _UNK_1824c47e8;
    uStack_1c = _UNK_1824c47ec;
    local_18 = &DAT_1821dbf98;
    local_50 = param_2;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar1 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar4 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar1;
      if (bVar4) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    local_68 = 0;
    local_70 = param_2;
    uVar3 = FUN_1804e9bf0(_DAT_1824c47e0,&local_70);
    *param_1 = uVar3;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar1 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar4 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar1;
      if (bVar4) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar1 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar4 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar1;
      if (bVar4) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_1;
}



############ FUN_ 1814d9640 size=435 ############

undefined8 *
FUN_1814d9640(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  uint *puVar5;
  longlong local_res10;
  longlong local_res18;
  longlong local_res20;
  longlong local_60;
  longlong local_58;
  longlong local_50 [3];
  undefined8 local_38;
  undefined8 local_30;
  undefined8 local_28;
  
  local_50[1] = 0xfffffffffffffffe;
  *param_1 = &DAT_1821dbf98;
  puVar2 = (undefined8 *)FUN_181249b30(&local_res10,7,param_3,param_4,1);
  local_50[2] = *param_1;
  *param_1 = *puVar2;
  *puVar2 = local_50[2];
  puVar5 = (uint *)(local_res10 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar2 = (undefined8 *)FUN_181353210(local_50);
  puVar3 = (undefined8 *)FUN_181353df0(&local_58);
  local_38 = *puVar3;
  uVar4 = FUN_181245100(param_1,&local_60);
  local_30 = *puVar2;
  uVar4 = FUN_181245100(uVar4,&local_res20);
  puVar2 = (undefined8 *)FUN_181245100(uVar4,&local_res18,"Tutorials");
  local_28 = *param_1;
  *param_1 = *puVar2;
  *puVar2 = local_28;
  puVar5 = (uint *)(local_res18 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_res20 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_60 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_58 + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  puVar5 = (uint *)(local_50[0] + -0x10);
  if ((*puVar5 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar5;
    *puVar5 = *puVar5 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
  }
  return param_1;
}



############ FUN_ 1815ef4d0 size=245 ############

undefined8 * FUN_1815ef4d0(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  uint *_Memory;
  
  FUN_1813379d0();
  param_1[0x3a] = 0;
  *(undefined1 *)(param_1 + 0x3b) = 0;
  param_1[0x3d] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x3e) = 0;
  *param_1 = CloudyButton::vftable;
  param_1[0x16] = CloudyButton::vftable;
  param_1[0x39] = CloudyButton::vftable;
  param_1[0x3c] = CloudyButton::vftable;
  param_1[0x3f] = 0;
  *(undefined1 *)(param_1 + 0x40) = 0;
  *(undefined4 *)((longlong)param_1 + 0x204) = 0x3ecccccd;
  *(undefined4 *)(param_1 + 0x41) = 0x1010101;
  *(undefined8 *)((longlong)param_1 + 0x20c) = 1;
  *(undefined8 *)((longlong)param_1 + 0x214) = 0;
  *(undefined8 *)((longlong)param_1 + 0x21c) = 0;
  *(undefined8 *)((longlong)param_1 + 0x224) = 0;
  *(undefined4 *)((longlong)param_1 + 0x22c) = 0;
  *(undefined4 *)((longlong)param_1 + 0x234) = 0;
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 1815ef610 size=188 ############

void FUN_1815ef610(longlong *param_1,longlong *param_2)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  uint *puVar4;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar3 = param_1[0x19];
  param_1[0x19] = *param_2;
  UNLOCK();
  puVar4 = (uint *)(lVar3 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (((*(byte *)(param_1 + 0x15) >> 1 & 1) != 0) && (param_1[0x17] != 0)) {
    (**(code **)(*param_1 + 0x160))(param_1);
  }
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 1815fb460 size=113 ############

undefined8 * FUN_1815fb460(undefined8 *param_1,longlong *param_2)

{
  uint uVar1;
  longlong lVar2;
  uint *_Memory;
  
  *param_1 = CloudyPopupMenuItemBase::vftable;
  lVar2 = *param_2;
  param_1[1] = lVar2;
  if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(lVar2 + -0x10) = *(int *)(lVar2 + -0x10) + 1;
    UNLOCK();
  }
  *(undefined4 *)(param_1 + 2) = 0;
  *(undefined2 *)((longlong)param_1 + 0x14) = 0;
  param_1[3] = 0;
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18056a400 size=648 ############

void FUN_18056a400(longlong param_1,longlong param_2)

{
  ulonglong *puVar1;
  char cVar2;
  longlong lVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  void *pvVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  ulonglong *puVar11;
  ulonglong uVar12;
  longlong *local_res8;
  longlong **local_res18;
  undefined8 *local_res20;
  undefined8 *local_68;
  undefined8 local_60;
  void *local_58 [2];
  longlong local_48;
  undefined8 *puVar10;
  
  local_60 = 0xfffffffffffffffe;
  if (*(longlong *)(param_1 + 0x60) == 0) {
    *(longlong *)(param_1 + 0x60) = param_2;
    puVar11 = *(ulonglong **)(param_1 + 0x40);
    puVar1 = puVar11 + *(int *)(param_1 + 0x4c);
    for (; puVar11 != puVar1; puVar11 = puVar11 + 1) {
      local_res8 = (longlong *)*puVar11;
      puVar10 = *(undefined8 **)(param_1 + 0x50);
      cVar2 = *(char *)((longlong)puVar10[1] + 0x19);
      puVar9 = puVar10;
      puVar8 = (undefined8 *)puVar10[1];
      while (cVar2 == '\0') {
        if ((longlong *)puVar8[4] < local_res8) {
          puVar5 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar5 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar5;
        cVar2 = *(char *)((longlong)puVar5 + 0x19);
      }
      if ((puVar9 == puVar10) || (local_res8 < (longlong *)puVar9[4])) {
        local_res18 = &local_res8;
        lVar3 = FUN_1805702e0(param_1 + 0x50,local_res8,&local_res18);
        FUN_180570320(param_1 + 0x50,&local_res20,puVar9,lVar3 + 0x20,lVar3);
        puVar9 = local_res20;
      }
      (**(code **)(param_2 + 0x18))(1,puVar9 + 5);
      plVar4 = (longlong *)(**(code **)(*local_res8 + 0x28))(local_res8,local_58);
      uVar12 = plVar4[1] - *plVar4 >> 2;
      if (local_58[0] != (void *)0x0) {
        pvVar6 = local_58[0];
        if ((0xfff < (ulonglong)((local_48 - (longlong)local_58[0] >> 2) * 4)) &&
           (pvVar6 = *(void **)((longlong)local_58[0] + -8),
           0x1f < (ulonglong)((longlong)local_58[0] + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar6);
      }
      FUN_18056d640(puVar9 + 6,uVar12 & 0xffffffff);
      (**(code **)(param_2 + 0x18))(uVar12 & 0xffffffff,puVar9[6]);
      puVar5 = (undefined8 *)(**(code **)(*local_res8 + 0x28))(local_res8,local_58);
      puVar10 = *(undefined8 **)(param_1 + 0x18);
      cVar2 = *(char *)((longlong)puVar10[1] + 0x19);
      puVar9 = puVar10;
      puVar8 = (undefined8 *)puVar10[1];
      while (cVar2 == '\0') {
        if ((longlong *)puVar8[4] < local_res8) {
          puVar7 = (undefined8 *)puVar8[2];
          puVar8 = puVar9;
        }
        else {
          puVar7 = (undefined8 *)*puVar8;
        }
        puVar9 = puVar8;
        puVar8 = puVar7;
        cVar2 = *(char *)((longlong)puVar7 + 0x19);
      }
      if ((puVar9 == puVar10) || (local_res8 < (longlong *)puVar9[4])) {
        local_res18 = &local_res8;
        lVar3 = FUN_180570070(param_1 + 0x18,puVar8,&local_res18);
        FUN_1805700b0(param_1 + 0x18,&local_68,puVar9,lVar3 + 0x20,lVar3);
        puVar9 = local_68;
      }
      puVar10 = puVar9 + 5;
      if (puVar10 != puVar5) {
        FUN_18052fa60(puVar10);
        *puVar10 = *puVar5;
        puVar9[6] = puVar5[1];
        puVar9[7] = puVar5[2];
        *puVar5 = 0;
        puVar5[1] = 0;
        puVar5[2] = 0;
      }
      if (local_58[0] != (void *)0x0) {
        pvVar6 = local_58[0];
        if ((0xfff < (local_48 - (longlong)local_58[0] & 0xfffffffffffffffcU)) &&
           (pvVar6 = *(void **)((longlong)local_58[0] + -8),
           0x1f < (ulonglong)((longlong)local_58[0] + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar6);
      }
    }
  }
  return;
}



############ FUN_ 18056d470 size=456 ############

longlong FUN_18056d470(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  void *_Memory;
  longlong lVar9;
  longlong lVar10;
  ulonglong uVar11;
  
  lVar9 = *param_1;
  lVar10 = param_1[1] - lVar9 >> 5;
  if (lVar10 == 0x7ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar11 = lVar10 + 1;
  uVar8 = param_1[2] - lVar9 >> 5;
  uVar5 = uVar11;
  if ((uVar8 <= 0x7ffffffffffffff - (uVar8 >> 1)) && (uVar5 = (uVar8 >> 1) + uVar8, uVar5 < uVar11))
  {
    uVar5 = uVar11;
  }
  lVar10 = uVar5 * 0x20;
  if (0x7ffffffffffffff < uVar5) {
    lVar10 = -1;
  }
  puVar6 = (undefined8 *)FUN_180480500(lVar10);
  uVar3 = param_3[1];
  uVar8 = (longlong)param_2 - lVar9 & 0xffffffffffffffe0;
  *(undefined8 *)(uVar8 + (longlong)puVar6) = *param_3;
  ((undefined8 *)(uVar8 + (longlong)puVar6))[1] = uVar3;
  uVar3 = param_3[3];
  puVar1 = (undefined8 *)(uVar8 + 0x10 + (longlong)puVar6);
  *puVar1 = param_3[2];
  puVar1[1] = uVar3;
  puVar1 = (undefined8 *)param_1[1];
  puVar7 = (undefined8 *)*param_1;
  puVar4 = puVar6;
  if (param_2 == puVar1) {
    for (; puVar7 != puVar1; puVar7 = puVar7 + 4) {
      uVar3 = puVar7[1];
      *puVar4 = *puVar7;
      puVar4[1] = uVar3;
      uVar3 = puVar7[3];
      puVar4[2] = puVar7[2];
      puVar4[3] = uVar3;
      puVar4 = puVar4 + 4;
    }
  }
  else {
    for (; puVar7 != param_2; puVar7 = puVar7 + 4) {
      uVar3 = puVar7[1];
      *puVar4 = *puVar7;
      puVar4[1] = uVar3;
      uVar3 = puVar7[3];
      puVar4[2] = puVar7[2];
      puVar4[3] = uVar3;
      puVar4 = puVar4 + 4;
    }
    puVar1 = (undefined8 *)param_1[1];
    if (param_2 != puVar1) {
      lVar9 = uVar8 - (longlong)param_2;
      do {
        uVar3 = param_2[1];
        puVar7 = (undefined8 *)((longlong)puVar6 + lVar9 + 0x20 + (longlong)param_2);
        *puVar7 = *param_2;
        puVar7[1] = uVar3;
        uVar3 = param_2[3];
        puVar7 = (undefined8 *)((longlong)puVar6 + lVar9 + 0x30 + (longlong)param_2);
        *puVar7 = param_2[2];
        puVar7[1] = uVar3;
        param_2 = param_2 + 4;
      } while (param_2 != puVar1);
    }
  }
  pvVar2 = (void *)*param_1;
  if (pvVar2 == (void *)0x0) {
    *param_1 = (longlong)puVar6;
    param_1[1] = (longlong)(puVar6 + uVar11 * 4);
    param_1[2] = (longlong)(puVar6 + uVar5 * 4);
    return *param_1 + uVar8;
  }
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18056d640 size=379 ############

void FUN_18056d640(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)param_1[1];
  lVar5 = *param_1;
  uVar6 = (longlong)pvVar1 - lVar5 >> 2;
  uVar4 = param_1[2] - lVar5 >> 2;
  if (uVar4 < param_2) {
    if (0x3fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar2 = param_2;
    if ((uVar4 <= 0x3fffffffffffffff - (uVar4 >> 1)) &&
       (uVar2 = (uVar4 >> 1) + uVar4, uVar2 < param_2)) {
      uVar2 = param_2;
    }
    lVar5 = uVar2 * 4;
    if (0x3fffffffffffffff < uVar2) {
      lVar5 = -1;
    }
    pvVar3 = (void *)FUN_180480500(lVar5);
    memset((void *)((longlong)pvVar3 + uVar6 * 4),0,(param_2 - uVar6) * 4);
    memmove(pvVar3,(void *)*param_1,param_1[1] - *param_1);
    pvVar1 = (void *)*param_1;
    if (pvVar1 != (void *)0x0) {
      pvVar3 = pvVar1;
      if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
         (pvVar3 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar3);
    }
    *param_1 = (longlong)pvVar3;
    param_1[1] = (longlong)((longlong)pvVar3 + param_2 * 4);
    param_1[2] = (longlong)(uVar2 * 4 + (longlong)pvVar3);
  }
  else {
    if (uVar6 < param_2) {
      pvVar3 = (void *)((longlong)pvVar1 + (param_2 - uVar6) * 4);
      memset(pvVar1,0,(longlong)pvVar3 - (longlong)pvVar1);
      param_1[1] = (longlong)pvVar3;
      return;
    }
    if (param_2 != uVar6) {
      param_1[1] = lVar5 + param_2 * 4;
      return;
    }
  }
  return;
}



############ FUN_ 180570900 size=340 ############

undefined8 *
FUN_180570900(longlong *param_1,undefined8 *param_2,undefined8 param_3,ulonglong *param_4,
             void *param_5)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  bool bVar5;
  undefined1 local_res8 [8];
  
  puVar3 = (undefined8 *)*param_1;
  bVar5 = true;
  puVar4 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar2 = (undefined8 *)puVar3[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_4 < (ulonglong)puVar4[4];
      if (bVar5) {
        puVar2 = (undefined8 *)*puVar4;
      }
      else {
        puVar2 = (undefined8 *)puVar4[2];
      }
    } while (*(char *)((longlong)puVar2 + 0x19) == '\0');
  }
  if (bVar5) {
    if (puVar4 == (undefined8 *)*puVar3) {
      puVar3 = (undefined8 *)FUN_1805706d0(param_1,local_res8,1);
      *param_2 = *puVar3;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar4;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar4 = puVar3;
        puVar3 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
          puVar4 = puVar3;
          puVar3 = (undefined8 *)puVar3[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar3 = (undefined8 *)puVar4[1];
        while ((puVar2 = puVar3, cVar1 == '\0' && (puVar4 == (undefined8 *)*puVar2))) {
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar3 = (undefined8 *)puVar2[1];
          puVar4 = puVar2;
        }
        if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
          puVar4 = puVar2;
        }
      }
    }
    else {
      puVar4 = (undefined8 *)puVar4[2];
    }
  }
  if ((ulonglong)puVar4[4] < *param_4) {
    puVar3 = (undefined8 *)FUN_1805706d0(param_1,local_res8);
    *param_2 = *puVar3;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  FUN_18052fa60((longlong)param_5 + 0x28);
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 18163a160 size=301 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18163a160(longlong *param_1,undefined8 *param_2,undefined4 param_3)

{
  uint *_Memory;
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined1 auStack_4068 [32];
  int local_4048;
  int local_4044;
  undefined8 local_4040;
  longlong local_4038 [4];
  undefined1 local_4018 [16384];
  ulonglong local_18;
  undefined8 uStack_10;
  
  uStack_10 = 0x18163a16c;
  local_4038[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_4068;
  uVar2 = (**(code **)(*param_1 + 0x40))(param_3);
  local_4040 = *param_2;
  (**(code **)(*param_1 + 0x50))(uVar2,1,&local_4040);
  (**(code **)(*param_1 + 0x58))(uVar2);
  local_4048 = 0;
  (**(code **)(*param_1 + 0x78))(uVar2,0x8b81,&local_4048);
  if (local_4048 == 0) {
    local_4044 = 0;
    (**(code **)(*param_1 + 0x80))(uVar2,0x4000,&local_4044,local_4018);
    FUN_18049c670(local_4038,local_4018,(longlong)local_4044);
    local_4038[2] = param_1[2];
    param_1[2] = local_4038[0];
    _Memory = (uint *)(local_4038[2] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
  else {
    if ((int)param_1[1] == 0) {
      uVar3 = (**(code **)(*param_1 + 0x30))();
      *(undefined4 *)(param_1 + 1) = uVar3;
    }
    (**(code **)(*param_1 + 0x60))((int)param_1[1],uVar2);
    (**(code **)(*param_1 + 0x48))(uVar2);
  }
}



############ FUN_ 18163bb70 size=251 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18163bb70(longlong *param_1)

{
  uint *_Memory;
  uint uVar1;
  undefined4 uVar2;
  undefined1 auStack_4058 [32];
  int local_4038;
  int local_4034;
  longlong local_4030 [3];
  undefined1 local_4018 [16384];
  ulonglong local_18;
  undefined8 uStack_10;
  
  uStack_10 = 0x18163bb7c;
  local_4030[1] = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_4058;
  if ((int)param_1[1] == 0) {
    uVar2 = (**(code **)(*param_1 + 0x30))();
    *(undefined4 *)(param_1 + 1) = uVar2;
  }
  uVar2 = (undefined4)param_1[1];
  (**(code **)(*param_1 + 0x68))(uVar2);
  local_4038 = 0;
  (**(code **)(*param_1 + 0x90))(uVar2,0x8b82,&local_4038);
  if (local_4038 == 0) {
    local_4034 = 0;
    (**(code **)(*param_1 + 0x88))(uVar2,0x4000,&local_4034,local_4018);
    FUN_18049c670(local_4030,local_4018,(longlong)local_4034);
    local_4030[2] = param_1[2];
    param_1[2] = local_4030[0];
    _Memory = (uint *)(local_4030[2] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
  }
}



############ FUN_ 180568200 size=163 ############

void FUN_180568200(longlong param_1)

{
  void *pvVar1;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb4));
  LOCK();
  *(undefined1 *)(param_1 + 0x83) = 0;
  UNLOCK();
  pvVar1 = *(void **)(param_1 + 0x78);
  *(undefined8 *)(param_1 + 0x78) = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_18056afc0(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  pvVar1 = *(void **)(param_1 + 0x68);
  *(undefined8 *)(param_1 + 0x68) = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_18163bcd0(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  LOCK();
  *(undefined1 *)(param_1 + 0x80) = 0;
  UNLOCK();
  *(undefined8 *)(param_1 + 0x94) = 0;
  *(undefined8 *)(param_1 + 0x9c) = 0;
                    /* WARNING: Could not recover jumptable at 0x00018056829c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb4));
  return;
}



############ FUN_ 18056a1e0 size=52 ############

void * FUN_18056a1e0(void *param_1,ulonglong param_2)

{
  FUN_180568d20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1815aa800 size=385 ############

undefined8 *
FUN_1815aa800(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined4 param_4)

{
  uint *_Memory;
  uint uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  uint *puVar4;
  longlong local_res10;
  longlong *local_res18;
  
  puVar3 = param_1;
  FUN_1813453e0();
  puVar3[0x16] = StylerProvider::vftable;
  param_1[0x17] = 0;
  *(undefined1 *)(param_1 + 0x18) = 0;
  param_1[0x1a] = 0xffffffffffffffff;
  *(undefined4 *)(param_1 + 0x1b) = 0;
  *param_1 = CloudySliderBase::vftable;
  param_1[0x16] = CloudySliderBase::vftable;
  param_1[0x19] = CloudySliderBase::vftable;
  param_1[0x1c] = param_3;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  *(undefined2 *)(param_1 + 0x1f) = 0;
  *(undefined4 *)((longlong)param_1 + 0xfc) = param_4;
  local_res10 = *param_2;
  if ((*(uint *)(local_res10 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res10 + -0x10) = *(int *)(local_res10 + -0x10) + 1;
    UNLOCK();
  }
  local_res18 = &local_res10;
  FUN_181232e20(&local_res10,"-control","");
  local_res18 = (longlong *)local_res10;
  _Memory = (uint *)(local_res10 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  puVar4 = (uint *)(local_res10 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    *_Memory = *_Memory + 1;
    UNLOCK();
  }
  LOCK();
  lVar2 = param_1[2];
  param_1[2] = local_res10;
  UNLOCK();
  puVar4 = (uint *)(lVar2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 180584e30 size=551 ############

longlong FUN_180584e30(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 uVar2;
  void *pvVar3;
  longlong lVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  ulonglong uVar7;
  longlong lVar8;
  undefined8 *puVar9;
  void *_Memory;
  undefined8 *puVar10;
  ulonglong uVar11;
  longlong lVar12;
  ulonglong uVar13;
  
  lVar8 = *param_1;
  lVar12 = (longlong)param_2 - lVar8 >> 3;
  lVar4 = param_1[1] - lVar8 >> 3;
  if (lVar4 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar7 = param_1[2] - lVar8 >> 3;
  uVar1 = lVar4 + 1;
  uVar5 = uVar1;
  if ((uVar7 <= 0x1fffffffffffffff - (uVar7 >> 1)) && (uVar5 = uVar7 + (uVar7 >> 1), uVar5 < uVar1))
  {
    uVar5 = uVar1;
  }
  lVar8 = uVar5 * 8;
  if (0x1fffffffffffffff < uVar5) {
    lVar8 = -1;
  }
  puVar6 = (undefined8 *)FUN_180480500(lVar8);
  uVar2 = *param_3;
  uVar7 = 0;
  *param_3 = 0;
  lVar8 = lVar12 * 8;
  puVar6[lVar12] = uVar2;
  puVar10 = (undefined8 *)param_1[1];
  puVar9 = (undefined8 *)*param_1;
  if (param_2 == puVar10) {
    uVar11 = (ulonglong)((longlong)puVar10 + (7 - (longlong)puVar9)) >> 3;
    if (puVar10 < puVar9) {
      uVar11 = uVar7;
    }
    puVar10 = puVar6;
    if (uVar11 != 0) {
      do {
        uVar2 = *puVar9;
        *puVar9 = 0;
        puVar9 = puVar9 + 1;
        uVar7 = uVar7 + 1;
        *puVar10 = uVar2;
        puVar10 = puVar10 + 1;
      } while (uVar7 != uVar11);
    }
  }
  else {
    uVar11 = (ulonglong)((longlong)param_2 + (7 - (longlong)puVar9)) >> 3;
    if (param_2 < puVar9) {
      uVar11 = uVar7;
    }
    puVar10 = puVar6;
    uVar13 = uVar7;
    if (uVar11 != 0) {
      do {
        uVar2 = *puVar9;
        *puVar9 = 0;
        puVar9 = puVar9 + 1;
        uVar13 = uVar13 + 1;
        *puVar10 = uVar2;
        puVar10 = puVar10 + 1;
      } while (uVar13 != uVar11);
    }
    uVar11 = (param_1[1] - (longlong)param_2) + 7U >> 3;
    if ((undefined8 *)param_1[1] < param_2) {
      uVar11 = uVar7;
    }
    if (uVar11 != 0) {
      lVar4 = lVar8 - (longlong)param_2;
      do {
        uVar2 = *param_2;
        uVar7 = uVar7 + 1;
        *param_2 = 0;
        *(undefined8 *)((longlong)param_2 + (longlong)puVar6 + lVar4 + 8) = uVar2;
        param_2 = param_2 + 1;
      } while (uVar7 != uVar11);
    }
  }
  lVar4 = *param_1;
  if (lVar4 != 0) {
    lVar8 = param_1[1];
    for (; lVar4 != lVar8; lVar4 = lVar4 + 8) {
      FUN_1805841a0(lVar4);
    }
    pvVar3 = (void *)*param_1;
    _Memory = pvVar3;
    if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = (longlong)puVar6;
  param_1[1] = (longlong)(puVar6 + uVar1);
  param_1[2] = (longlong)(puVar6 + uVar5);
  return *param_1 + lVar8;
}



############ FUN_ 1811efc20 size=77 ############

undefined8 * FUN_1811efc20(undefined8 *param_1,longlong *param_2,undefined8 param_3)

{
  uint uVar1;
  uint *_Memory;
  
  *param_1 = ProcessorStateOption::vftable;
  param_1[1] = *param_2;
  *param_2 = (longlong)&DAT_1821dbf98;
  param_1[2] = param_3;
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18057f890 size=331 ############

undefined8 *
FUN_18057f890(undefined8 *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)

{
  uint uVar1;
  uint *puVar2;
  longlong local_res8;
  longlong *local_res10;
  longlong *local_res18;
  longlong local_res20;
  
  local_res8 = *param_3;
  if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
    UNLOCK();
  }
  local_res20 = *param_2;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  local_res10 = param_2;
  local_res18 = param_3;
  FUN_1815d7db0(param_1,&local_res20,&local_res8,param_4,0xfffffffffffffffe);
  *param_1 = GraphLabels::Label::vftable;
  param_1[0x16] = GraphLabels::Label::vftable;
  param_1[0x18] = GraphLabels::Label::vftable;
  param_1[0x19] = GraphLabels::Label::vftable;
  param_1[0x1a] = GraphLabels::Label::vftable;
  param_1[0x41] = GraphLabels::Label::vftable;
  param_1[0x44] = GraphLabels::Label::vftable;
  param_1[0x47] = GraphLabels::Label::vftable;
  param_1[0x48] = GraphLabels::Label::vftable;
  param_1[0x94] = 0;
  puVar2 = (uint *)(*param_2 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  puVar2 = (uint *)(*param_3 + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  return param_1;
}



############ FUN_ 180586090 size=545 ############

longlong FUN_180586090(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 uVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  void *_Memory;
  longlong *plVar11;
  longlong lVar12;
  undefined8 *puVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  
  lVar9 = *param_1;
  lVar12 = (longlong)param_2 - lVar9 >> 3;
  lVar5 = param_1[1] - lVar9 >> 3;
  if (lVar5 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar8 = param_1[2] - lVar9 >> 3;
  uVar1 = lVar5 + 1;
  uVar6 = uVar1;
  if ((uVar8 <= 0x1fffffffffffffff - (uVar8 >> 1)) && (uVar6 = (uVar8 >> 1) + uVar8, uVar6 < uVar1))
  {
    uVar6 = uVar1;
  }
  lVar9 = uVar6 * 8;
  if (0x1fffffffffffffff < uVar6) {
    lVar9 = -1;
  }
  puVar7 = (undefined8 *)FUN_180480500(lVar9);
  uVar8 = 0;
  lVar9 = lVar12 * 8;
  puVar7[lVar12] = *param_3;
  puVar13 = (undefined8 *)param_1[1];
  puVar10 = (undefined8 *)*param_1;
  if (param_2 == puVar13) {
    uVar14 = (ulonglong)((longlong)puVar13 + (7 - (longlong)puVar10)) >> 3;
    if (puVar13 < puVar10) {
      uVar14 = uVar8;
    }
    puVar13 = puVar7;
    if (uVar14 != 0) {
      do {
        uVar2 = *puVar10;
        *puVar10 = 0;
        puVar10 = puVar10 + 1;
        uVar8 = uVar8 + 1;
        *puVar13 = uVar2;
        puVar13 = puVar13 + 1;
      } while (uVar8 != uVar14);
    }
  }
  else {
    uVar14 = (ulonglong)((longlong)param_2 + (7 - (longlong)puVar10)) >> 3;
    if (param_2 < puVar10) {
      uVar14 = uVar8;
    }
    puVar13 = puVar7;
    uVar15 = uVar8;
    if (uVar14 != 0) {
      do {
        uVar2 = *puVar10;
        *puVar10 = 0;
        puVar10 = puVar10 + 1;
        uVar15 = uVar15 + 1;
        *puVar13 = uVar2;
        puVar13 = puVar13 + 1;
      } while (uVar15 != uVar14);
    }
    uVar14 = (param_1[1] - (longlong)param_2) + 7U >> 3;
    if ((undefined8 *)param_1[1] < param_2) {
      uVar14 = uVar8;
    }
    if (uVar14 != 0) {
      lVar5 = lVar9 - (longlong)param_2;
      do {
        uVar2 = *param_2;
        uVar8 = uVar8 + 1;
        *param_2 = 0;
        *(undefined8 *)((longlong)puVar7 + lVar5 + 8 + (longlong)param_2) = uVar2;
        param_2 = param_2 + 1;
      } while (uVar8 != uVar14);
    }
  }
  plVar11 = (longlong *)*param_1;
  if (plVar11 != (longlong *)0x0) {
    plVar3 = (longlong *)param_1[1];
    for (; plVar11 != plVar3; plVar11 = plVar11 + 1) {
      puVar10 = (undefined8 *)*plVar11;
      if (puVar10 != (undefined8 *)0x0) {
        (**(code **)*puVar10)(puVar10,1);
      }
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = (longlong)puVar7;
  param_1[1] = (longlong)(puVar7 + uVar1);
  param_1[2] = (longlong)(puVar7 + uVar6);
  return *param_1 + lVar9;
}



############ FUN_ 18056ff40 size=292 ############

undefined8 *
FUN_18056ff40(longlong *param_1,undefined8 *param_2,undefined8 param_3,int *param_4,void *param_5)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  bool bVar5;
  undefined1 local_res8 [8];
  
  puVar3 = (undefined8 *)*param_1;
  bVar5 = true;
  puVar4 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar2 = (undefined8 *)puVar3[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_4 < *(int *)((longlong)puVar4 + 0x1c);
      if (bVar5) {
        puVar2 = (undefined8 *)*puVar4;
      }
      else {
        puVar2 = (undefined8 *)puVar4[2];
      }
    } while (*(char *)((longlong)puVar2 + 0x19) == '\0');
  }
  if (bVar5) {
    if (puVar4 == (undefined8 *)*puVar3) {
      puVar3 = (undefined8 *)FUN_18056fd10(param_1,local_res8,1);
      *param_2 = *puVar3;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar4;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar4 = puVar3;
        puVar3 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
          puVar4 = puVar3;
          puVar3 = (undefined8 *)puVar3[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar3 = (undefined8 *)puVar4[1];
        while ((puVar2 = puVar3, cVar1 == '\0' && (puVar4 == (undefined8 *)*puVar2))) {
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar3 = (undefined8 *)puVar2[1];
          puVar4 = puVar2;
        }
        if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
          puVar4 = puVar2;
        }
      }
    }
    else {
      puVar4 = (undefined8 *)puVar4[2];
    }
  }
  if (*(int *)((longlong)puVar4 + 0x1c) < *param_4) {
    puVar3 = (undefined8 *)FUN_18056fd10(param_1,local_res8);
    *param_2 = *puVar3;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 18056d7c0 size=52 ############

void * FUN_18056d7c0(void *param_1,ulonglong param_2)

{
  FUN_18134caa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18056e080 size=79 ############

void * FUN_18056e080(void *param_1,ulonglong param_2)

{
  FUN_181349e00((longlong)param_1 + 0x100);
  FUN_180485f00((longlong)param_1 + 0xf0);
  FUN_18056e0d0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180571050 size=52 ############

void * FUN_180571050(void *param_1,ulonglong param_2)

{
  FUN_180560070();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805717c0 size=105 ############

undefined8 * FUN_1805717c0(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  void *_Memory;
  undefined8 *puVar2;
  
  if (param_1 == param_2) {
    return param_1;
  }
  uVar1 = *param_2;
  *param_2 = 0;
  _Memory = (void *)*param_1;
  *param_1 = uVar1;
  if (_Memory != (void *)0x0) {
    DeleteCriticalSection((LPCRITICAL_SECTION)((longlong)_Memory + 0x1c));
    puVar2 = *(undefined8 **)((longlong)_Memory + 8);
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return param_1;
}



############ FUN_ 180572000 size=540 ############

undefined8 * FUN_180572000(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  ulonglong uVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  
  lVar8 = (longlong)param_2 - (longlong)DAT_182674290 >> 3;
  lVar2 = (longlong)DAT_182674298 - (longlong)DAT_182674290 >> 3;
  if (lVar2 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar5 = (longlong)DAT_1826742a0 - (longlong)DAT_182674290 >> 3;
  uVar1 = lVar2 + 1;
  uVar3 = uVar1;
  if ((uVar5 <= 0x1fffffffffffffff - (uVar5 >> 1)) && (uVar3 = (uVar5 >> 1) + uVar5, uVar3 < uVar1))
  {
    uVar3 = uVar1;
  }
  lVar2 = uVar3 * 8;
  if (0x1fffffffffffffff < uVar3) {
    lVar2 = -1;
  }
  puVar4 = (undefined8 *)FUN_180480500(lVar2);
  puVar4[lVar8] = *param_3;
  uVar5 = 0;
  if (param_2 == DAT_182674298) {
    uVar9 = (ulonglong)((longlong)DAT_182674298 + (7 - (longlong)DAT_182674290)) >> 3;
    if (DAT_182674298 < DAT_182674290) {
      uVar9 = uVar5;
    }
    puVar6 = DAT_182674290;
    puVar7 = puVar4;
    if (uVar9 != 0) {
      do {
        uVar5 = uVar5 + 1;
        *puVar7 = *puVar6;
        puVar7 = puVar7 + 1;
        puVar6 = puVar6 + 1;
      } while (uVar5 != uVar9);
    }
  }
  else {
    uVar9 = (ulonglong)((longlong)param_2 + (7 - (longlong)DAT_182674290)) >> 3;
    if (param_2 < DAT_182674290) {
      uVar9 = uVar5;
    }
    puVar7 = DAT_182674290;
    puVar6 = puVar4;
    uVar10 = uVar5;
    if (uVar9 != 0) {
      do {
        uVar10 = uVar10 + 1;
        *puVar6 = *puVar7;
        puVar7 = puVar7 + 1;
        puVar6 = puVar6 + 1;
      } while (uVar10 != uVar9);
    }
    uVar9 = (ulonglong)((longlong)DAT_182674298 + (7 - (longlong)param_2)) >> 3;
    if (DAT_182674298 < param_2) {
      uVar9 = uVar5;
    }
    if (uVar9 != 0) {
      lVar2 = lVar8 * 8 - (longlong)param_2;
      do {
        uVar5 = uVar5 + 1;
        *(undefined8 *)((longlong)param_2 + (longlong)puVar4 + lVar2 + 8) = *param_2;
        param_2 = param_2 + 1;
      } while (uVar5 != uVar9);
    }
  }
  if (DAT_182674290 != (undefined8 *)0x0) {
    puVar4 = DAT_182674290;
    if ((0xfff < ((longlong)DAT_1826742a0 - (longlong)DAT_182674290 & 0xfffffffffffffff8U)) &&
       (puVar4 = (undefined8 *)DAT_182674290[-1],
       0x1f < (ulonglong)((longlong)DAT_182674290 + (-8 - (longlong)puVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(puVar4);
  }
  DAT_182674290 = puVar4;
  DAT_182674298 = puVar4 + uVar1;
  DAT_1826742a0 = puVar4 + uVar3;
  return puVar4 + lVar8;
}



############ FUN_ 180572480 size=98 ############

void FUN_180572480(longlong param_1,longlong *param_2,undefined4 param_3,undefined8 param_4)

{
  uint uVar1;
  longlong *plVar2;
  uint *_Memory;
  undefined4 local_res18 [4];
  
  plVar2 = *(longlong **)(param_1 + 0x38);
  local_res18[0] = param_3;
  if (plVar2 == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(*plVar2 + 0x10))(plVar2,param_2,local_res18,param_4,0xfffffffffffffffe);
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 1805742c0 size=340 ############

undefined8 *
FUN_1805742c0(longlong *param_1,undefined8 *param_2,undefined8 param_3,ulonglong *param_4,
             void *param_5)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  bool bVar5;
  undefined1 local_res8 [8];
  
  puVar3 = (undefined8 *)*param_1;
  bVar5 = true;
  puVar4 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar2 = (undefined8 *)puVar3[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_4 < (ulonglong)puVar4[4];
      if (bVar5) {
        puVar2 = (undefined8 *)*puVar4;
      }
      else {
        puVar2 = (undefined8 *)puVar4[2];
      }
    } while (*(char *)((longlong)puVar2 + 0x19) == '\0');
  }
  if (bVar5) {
    if (puVar4 == (undefined8 *)*puVar3) {
      puVar3 = (undefined8 *)FUN_180574090(param_1,local_res8,1);
      *param_2 = *puVar3;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar4;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar4 = puVar3;
        puVar3 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
          puVar4 = puVar3;
          puVar3 = (undefined8 *)puVar3[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar3 = (undefined8 *)puVar4[1];
        while ((puVar2 = puVar3, cVar1 == '\0' && (puVar4 == (undefined8 *)*puVar2))) {
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar3 = (undefined8 *)puVar2[1];
          puVar4 = puVar2;
        }
        if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
          puVar4 = puVar2;
        }
      }
    }
    else {
      puVar4 = (undefined8 *)puVar4[2];
    }
  }
  if ((ulonglong)puVar4[4] < *param_4) {
    puVar3 = (undefined8 *)FUN_180574090(param_1,local_res8);
    *param_2 = *puVar3;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  FUN_18056d800((longlong)param_5 + 0x20);
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 180575990 size=52 ############

void * .?AVSoothe2_DynamicCryptoManager@eden@pace@@::
       vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__(void *param_1,ulonglong param_2)

{
  FUN_180575920();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180575c00 size=52 ############

void * FUN_180575c00(void *param_1,ulonglong param_2)

{
  FUN_1805759d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180575c40 size=43 ############

undefined8 *
.?AVSoothe2_DynamicCryptoManager@eden@pace@@::vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__
          (undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::Soothe2_DynamicCryptoManager::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180576d60 size=52 ############

void * FUN_180576d60(void *param_1,ulonglong param_2)

{
  FUN_180576bb0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180576db0 size=43 ############

undefined8 * FUN_180576db0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = CloudyPopupMenu::Listener::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577170 size=85 ############

void * FUN_180577170(void *param_1,uint param_2)

{
  if (*(longlong *)((longlong)param_1 + 0x278) != 0) {
    FUN_18056a070();
  }
  FUN_180560070((longlong)param_1 + 0xd0);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805771e0 size=91 ############

void * FUN_1805771e0(void *param_1,ulonglong param_2)

{
  FUN_180576bb0((longlong)param_1 + 0x238);
  FUN_1805772c0((longlong)param_1 + 0xf8);
  FUN_1812472e0((longlong)param_1 + 200);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577360 size=157 ############

void * FUN_180577360(void *param_1,ulonglong param_2)

{
  void *pvVar1;
  void *_Memory;
  
  pvVar1 = *(void **)((longlong)param_1 + 200);
  if (pvVar1 == (void *)0x0) {
    FUN_18134caa0(param_1);
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)
               (((*(longlong *)((longlong)param_1 + 0xd8) - (longlong)pvVar1) / 0x14) * 0x14)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180577420 size=134 ############

void * FUN_180577420(void *param_1,ulonglong param_2)

{
  if (*(void **)((longlong)param_1 + 0x298) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_1 + 0x298));
  }
  if (*(void **)((longlong)param_1 + 0x290) != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)((longlong)param_1 + 0x290));
  }
  FUN_180560070((longlong)param_1 + 0xe0);
  *(undefined ***)((longlong)param_1 + 200) = juce::Timer::vftable;
  FUN_1812a7720();
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577520 size=52 ############

void * FUN_180577520(void *param_1,ulonglong param_2)

{
  FUN_1805772c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577560 size=52 ############

void * FUN_180577560(void *param_1,ulonglong param_2)

{
  FUN_1814cca20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1814cca20 size=533 ############

void FUN_1814cca20(undefined8 *param_1)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  longlong lVar3;
  void *pvVar4;
  undefined8 *puVar5;
  longlong lVar6;
  void *pvVar7;
  undefined8 *puVar8;
  
  *param_1 = CloudyTutorialStep::vftable;
  puVar1 = (undefined8 *)param_1[0xf];
  for (puVar8 = (undefined8 *)param_1[0xe]; puVar8 != puVar1; puVar8 = puVar8 + 0xc) {
    puVar2 = (undefined8 *)puVar8[1];
    for (puVar5 = (undefined8 *)*puVar8; puVar5 != puVar2; puVar5 = puVar5 + 3) {
      FUN_1811bc940(*puVar5,param_1);
    }
  }
  if (param_1[0x18] != 0) {
    FUN_1805798f0();
  }
  lVar6 = param_1[0x15];
  if (lVar6 != 0) {
    lVar3 = param_1[0x16];
    for (; lVar6 != lVar3; lVar6 = lVar6 + 0x30) {
      FUN_1812472e0(lVar6);
    }
    pvVar4 = (void *)param_1[0x15];
    pvVar7 = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[0x17] - (longlong)pvVar4) / 0x30) * 0x30)) &&
       (pvVar7 = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar7);
  }
  FUN_1804884f0(param_1 + 0x12);
  lVar6 = param_1[0xe];
  if (lVar6 == 0) {
    lVar6 = param_1[0xc];
    FUN_180579890(param_1 + 0xc,*(undefined8 *)(lVar6 + 8));
    *(longlong *)(param_1[0xc] + 8) = lVar6;
    *(longlong *)param_1[0xc] = lVar6;
    *(longlong *)(param_1[0xc] + 0x10) = lVar6;
    param_1[0xd] = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0xc]);
  }
  lVar3 = param_1[0xf];
  for (; lVar6 != lVar3; lVar6 = lVar6 + 0x60) {
    if (*(longlong *)(lVar6 + 0x50) != 0) {
      FUN_1805798f0();
    }
    FUN_1812472e0(lVar6 + 0x18);
    FUN_180569d10(lVar6);
  }
  pvVar4 = (void *)param_1[0xe];
  pvVar7 = pvVar4;
  if ((0xfff < (ulonglong)(((param_1[0x10] - (longlong)pvVar4) / 0x60) * 0x60)) &&
     (pvVar7 = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 180577680 size=52 ############

void * FUN_180577680(void *param_1,ulonglong param_2)

{
  FUN_1814c9750();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577700 size=52 ############

void * FUN_180577700(void *param_1,ulonglong param_2)

{
  FUN_1814c5ed0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805777e0 size=152 ############

void * FUN_1805777e0(void *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  uint *_Memory;
  
  puVar4 = *(undefined8 **)((longlong)param_1 + 0xe8);
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0xe0) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1804884f0((longlong)param_1 + 200);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577880 size=93 ############

void * FUN_180577880(void *param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  
  puVar3 = *(undefined8 **)((longlong)param_1 + 200);
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805778e0 size=52 ############

void * FUN_1805778e0(void *param_1,ulonglong param_2)

{
  FUN_180577920();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577920 size=115 ############

void FUN_180577920(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  uVar3 = 0xfffffffffffffffe;
  FUN_180485f00(param_1 + 0x888);
  plVar1 = (longlong *)(param_1 + 0x878);
  lVar2 = *plVar1;
  FUN_1804df860(plVar1,*(undefined8 *)(lVar2 + 8),param_3,param_4,uVar3);
  *(longlong *)(*plVar1 + 8) = lVar2;
  *(longlong *)*plVar1 = lVar2;
  *(longlong *)(*plVar1 + 0x10) = lVar2;
  *(undefined8 *)(param_1 + 0x880) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)*plVar1);
}



############ FUN_ 180577a30 size=116 ############

void FUN_180577a30(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  puVar2 = *(undefined8 **)(param_1 + 0x650);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(*(longlong *)(param_1 + 0x640) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180577b60(param_1 + 0x2f0);
  *(undefined4 *)(param_1 + 0x2cc) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x2c0));
}



############ FUN_ 180577bd0 size=67 ############

void * FUN_180577bd0(void *param_1,ulonglong param_2)

{
  FUN_1805770d0((longlong)param_1 + 0x880);
  FUN_1815ef230(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577c20 size=67 ############

void * FUN_180577c20(void *param_1,ulonglong param_2)

{
  FUN_1805770d0((longlong)param_1 + 0x878);
  FUN_1815ef230(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577c70 size=262 ############

void FUN_180577c70(undefined8 *param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *_Memory;
  
  pvVar1 = (void *)param_1[0x5f];
  if (pvVar1 != (void *)0x0) {
    FUN_18056ae80(pvVar1);
                    /* WARNING: Subroutine does not return */
    free(pvVar1);
  }
  FUN_18052fa60(param_1 + 0x5b);
  pvVar1 = (void *)param_1[0x58];
  if (pvVar1 == (void *)0x0) {
    puVar2 = (undefined8 *)param_1[0x57];
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    puVar2 = (undefined8 *)param_1[0x56];
    if (puVar2 != (undefined8 *)0x0) {
      (**(code **)*puVar2)(puVar2,1);
    }
    param_1[0x53] = juce::Timer::vftable;
    FUN_1812a7720();
    *param_1 = ConfigMenuInterface::vftable;
    param_1[0x50] = ConfigMenuInterface::vftable;
    FUN_180560070(param_1 + 0x1c);
    *(undefined4 *)((longlong)param_1 + 0xbc) = 0;
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x16]);
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[0x5a] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180577dc0 size=52 ############

void * FUN_180577dc0(void *param_1,ulonglong param_2)

{
  FUN_18056e0d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577e00 size=81 ############

void * FUN_180577e00(void *param_1,ulonglong param_2)

{
  *(undefined ***)((longlong)param_1 + 0x490) = ConfigOption::vftable;
  FUN_180577e60((longlong)param_1 + 0xf8);
  FUN_18056e0d0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577ef0 size=67 ############

void * FUN_180577ef0(void *param_1,ulonglong param_2)

{
  FUN_180577e60((longlong)param_1 + 0xf8);
  FUN_18056e0d0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180577f40 size=52 ############

void * FUN_180577f40(void *param_1,ulonglong param_2)

{
  FUN_1814b3ef0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1814b3ef0 size=424 ############

void FUN_1814b3ef0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  *param_1 = PluginUpdateComponent::vftable;
  param_1[0x16] = PluginUpdateComponent::vftable;
  param_1[0x19] = PluginUpdateComponent::vftable;
  param_1[0x1a] = PluginUpdateComponent::vftable;
  param_1[0x1b] = PluginUpdateComponent::vftable;
  if (*(char *)(param_1 + 0x32) != '\0') {
    FUN_18114e850();
  }
  param_1[0x39] = ConfigOption::vftable;
  puVar2 = (undefined8 *)param_1[0x37];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1,param_3,param_4,uVar4);
  }
  puVar2 = (undefined8 *)param_1[0x36];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = (undefined8 *)param_1[0x35];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_1804858a0(param_1 + 0x29);
  puVar3 = (uint *)(param_1[0x28] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(param_1[0x27] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(param_1[0x25] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(param_1[0x24] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x1e));
  param_1[0x1b] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 0x1b);
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 18057c040 size=437 ############

void FUN_18057c040(longlong *param_1,longlong param_2,longlong param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  ulonglong uVar5;
  void *_Memory;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  
  uVar2 = (param_3 - param_2) / 0x70;
  lVar4 = *param_1;
  uVar6 = (param_1[1] - lVar4) / 0x70;
  uVar3 = (param_1[2] - lVar4) / 0x70;
  if (uVar3 < uVar2) {
    if (0x249249249249249 < uVar2) {
                    /* WARNING: Subroutine does not return */
      FUN_18047cf10();
    }
    uVar5 = uVar3 >> 1;
    uVar6 = uVar2;
    if ((uVar3 <= 0x249249249249249 - uVar5) && (uVar6 = uVar5 + uVar3, uVar5 + uVar3 < uVar2)) {
      uVar6 = uVar2;
    }
    if (lVar4 != 0) {
      FUN_18056a720(uVar5,lVar4,param_1[1]);
      pvVar1 = (void *)*param_1;
      _Memory = pvVar1;
      if ((0xfff < uVar3 * 0x70) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    FUN_180569f80(param_1,uVar6);
    lVar4 = FUN_18056d260(param_1,param_2,param_3,*param_1);
    param_1[1] = lVar4;
  }
  else if (uVar6 < uVar2) {
    lVar7 = uVar6 * 0x70 + param_2;
    FUN_18057d3a0(param_2,lVar7,lVar4,lVar4,0xfffffffffffffffe);
    lVar4 = FUN_18056d260(param_1,lVar7,param_3,param_1[1]);
    param_1[1] = lVar4;
  }
  else {
    FUN_18057d3a0(param_2,param_3,lVar4,lVar4,0xfffffffffffffffe);
    lVar7 = param_1[1];
    lVar4 = uVar2 * 0x70 + lVar4;
    for (lVar8 = lVar4; lVar8 != lVar7; lVar8 = lVar8 + 0x70) {
      FUN_180569ed0(lVar8);
    }
    param_1[1] = lVar4;
  }
  return;
}



############ FUN_ 180577ff0 size=109 ############

undefined8 * FUN_180577ff0(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)param_1[10];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 3);
    param_1[10] = 0;
  }
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180578060 size=76 ############

undefined8 * FUN_180578060(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::TextButton::vftable;
  param_1[0x16] = juce::TextButton::vftable;
  FUN_181337760();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805780b0 size=52 ############

void * FUN_1805780b0(void *param_1,ulonglong param_2)

{
  FUN_1814a9370();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805780f0 size=246 ############

void * FUN_1805780f0(void *param_1,ulonglong param_2)

{
  uint uVar1;
  void *_Memory;
  undefined8 *puVar2;
  longlong *plVar3;
  uint *_Memory_00;
  
  FUN_180560070((longlong)param_1 + 0x148);
  _Memory = *(void **)((longlong)param_1 + 0x140);
  if (_Memory != (void *)0x0) {
    FUN_1811e6b70(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  _Memory_00 = (uint *)(*(longlong *)((longlong)param_1 + 0x130) + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x118);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x110);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  plVar3 = *(longlong **)((longlong)param_1 + 0x108);
  if (plVar3 != (longlong *)0x0) {
    (**(code **)(*plVar3 + 0x20))(plVar3,plVar3 != (longlong *)((longlong)param_1 + 0xd0));
    *(undefined8 *)((longlong)param_1 + 0x108) = 0;
  }
  *(undefined ***)((longlong)param_1 + 200) = ProcessorStateManagerOptionListener::vftable;
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805781f0 size=52 ############

void * FUN_1805781f0(void *param_1,ulonglong param_2)

{
  FUN_180578230();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180578230 size=143 ############

void FUN_180578230(undefined8 *param_1)

{
  uint uVar1;
  void *_Memory;
  uint *_Memory_00;
  
  _Memory = (void *)param_1[0x41];
  if (_Memory != (void *)0x0) {
    FUN_1811e6b70(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  _Memory_00 = (uint *)(param_1[0x3f] + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  param_1[0x3c] = ProcessorStateManagerOptionListener::vftable;
  *param_1 = juce::TextButton::vftable;
  param_1[0x16] = juce::TextButton::vftable;
  FUN_181337760(param_1);
  return;
}



############ FUN_ 180578360 size=191 ############

void * FUN_180578360(void *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *puVar2;
  
  FUN_180577740((longlong)param_1 + 0x490);
  puVar2 = (uint *)(*(longlong *)((longlong)param_1 + 0x480) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_1812e2030((longlong)param_1 + 0x148);
  FUN_180488cd0((longlong)param_1 + 0x100);
  puVar2 = (uint *)(*(longlong *)((longlong)param_1 + 0xd0) + -0x10);
  if ((*puVar2 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar2;
    *puVar2 = *puVar2 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar2);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180578470 size=119 ############

void FUN_180578470(longlong param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)(param_1 + 0x2a8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_180560070(param_1 + 0x108);
  puVar2 = *(undefined8 **)(param_1 + 0x100);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  *(undefined4 *)(param_1 + 0xfc) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0xf0));
}



############ FUN_ 180578540 size=97 ############

void * FUN_180578540(void *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0xd0) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180578a00 size=52 ############

void * FUN_180578a00(void *param_1,ulonglong param_2)

{
  FUN_180578a40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180578b60 size=52 ############

void * FUN_180578b60(void *param_1,ulonglong param_2)

{
  FUN_18144f9b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180578bb0 size=52 ############

void * FUN_180578bb0(void *param_1,ulonglong param_2)

{
  FUN_1814d56b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180579b20 size=164 ############

void FUN_180579b20(longlong param_1,longlong *param_2)

{
  uint uVar1;
  code *pcVar2;
  longlong lVar3;
  uint *puVar4;
  
  if (*(longlong **)(param_1 + 0x38) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  pcVar2 = *(code **)(**(longlong **)(param_1 + 0x38) + 0x10);
  if (pcVar2 == FUN_18057c780) {
    lVar3 = *param_2;
    *param_2 = (longlong)&DAT_1821dbf98;
    puVar4 = (uint *)(lVar3 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  else {
    (*pcVar2)();
  }
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 1814cdcf0 size=230 ############

void FUN_1814cdcf0(longlong param_1,longlong param_2)

{
  int iVar1;
  longlong lVar2;
  undefined8 *_Memory;
  int *piVar3;
  
  if (param_1 + 0x100 != param_2) {
    FUN_18049aca0(param_1 + 0x110);
    if (*(longlong *)(param_1 + 0x108) != 0) {
      _Memory = *(undefined8 **)(param_1 + 0x108);
      *(undefined8 *)(param_1 + 0x108) = *_Memory;
      FUN_1812472e0(_Memory);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if ((*(uint *)(*(longlong *)(param_2 + 0x18) + -0x10) & 0x30000000) == 0) {
      LOCK();
      piVar3 = (int *)(*(longlong *)(param_2 + 0x18) + -0x10);
      *piVar3 = *piVar3 + 1;
      UNLOCK();
    }
    LOCK();
    lVar2 = *(longlong *)(param_1 + 0x118);
    *(longlong *)(param_1 + 0x118) = *(longlong *)(param_2 + 0x18);
    UNLOCK();
    piVar3 = (int *)(lVar2 + -0x10);
    if ((*(uint *)(lVar2 + -0x10) & 0x30000000) == 0) {
      LOCK();
      iVar1 = *piVar3;
      *piVar3 = *piVar3 + -1;
      UNLOCK();
      if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(piVar3);
      }
    }
    FUN_1812217a0(param_1 + 0x100,param_2);
  }
  FUN_1814cd650(param_1);
  if (((*(byte *)(param_1 + 0xa8) & 2) != 0) && (*(longlong *)(param_1 + 0xb8) != 0)) {
    FUN_1814cddf0(param_1);
    return;
  }
  return;
}



############ FUN_ 18057adf0 size=527 ############

longlong FUN_18057adf0(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  
  lVar2 = *param_1;
  lVar9 = (param_1[1] - lVar2) / 0x14;
  if (lVar9 == 0xccccccccccccccc) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar9 + 1;
  uVar5 = (param_1[2] - lVar2) / 0x14;
  uVar11 = uVar1;
  if ((uVar5 <= 0xccccccccccccccc - (uVar5 >> 1)) && (uVar11 = uVar5 + (uVar5 >> 1), uVar11 < uVar1)
     ) {
    uVar11 = uVar1;
  }
  lVar9 = uVar11 * 0x14;
  if (0xccccccccccccccc < uVar11) {
    lVar9 = -1;
  }
  puVar8 = (undefined8 *)FUN_180480500(lVar9);
  uVar6 = param_3[1];
  lVar2 = (((longlong)param_2 - lVar2) / 0x14) * 0x14;
  *(undefined8 *)(lVar2 + (longlong)puVar8) = *param_3;
  ((undefined8 *)(lVar2 + (longlong)puVar8))[1] = uVar6;
  *(undefined4 *)(lVar2 + 0x10 + (longlong)puVar8) = *(undefined4 *)(param_3 + 2);
  puVar3 = (undefined8 *)param_1[1];
  puVar10 = (undefined8 *)*param_1;
  puVar7 = puVar8;
  if (param_2 == puVar3) {
    for (; puVar10 != puVar3; puVar10 = (undefined8 *)((longlong)puVar10 + 0x14)) {
      uVar6 = puVar10[1];
      *puVar7 = *puVar10;
      puVar7[1] = uVar6;
      *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(puVar10 + 2);
      puVar7 = (undefined8 *)((longlong)puVar7 + 0x14);
    }
  }
  else {
    for (; puVar10 != param_2; puVar10 = (undefined8 *)((longlong)puVar10 + 0x14)) {
      uVar6 = puVar10[1];
      *puVar7 = *puVar10;
      puVar7[1] = uVar6;
      *(undefined4 *)(puVar7 + 2) = *(undefined4 *)(puVar10 + 2);
      puVar7 = (undefined8 *)((longlong)puVar7 + 0x14);
    }
    puVar3 = (undefined8 *)param_1[1];
    if (param_2 != puVar3) {
      lVar9 = lVar2 - (longlong)param_2;
      do {
        uVar6 = param_2[1];
        puVar10 = (undefined8 *)((longlong)puVar8 + lVar9 + 0x14 + (longlong)param_2);
        *puVar10 = *param_2;
        puVar10[1] = uVar6;
        *(undefined4 *)((longlong)puVar8 + lVar9 + 0x24 + (longlong)param_2) =
             *(undefined4 *)(param_2 + 2);
        param_2 = (undefined8 *)((longlong)param_2 + 0x14);
      } while (param_2 != puVar3);
    }
  }
  pvVar4 = (void *)*param_1;
  if (pvVar4 != (void *)0x0) {
    _Memory = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x14) * 0x14)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = (longlong)puVar8;
  param_1[1] = (longlong)puVar8 + uVar1 * 0x14;
  param_1[2] = uVar11 * 0x14 + (longlong)puVar8;
  return *param_1 + lVar2;
}



############ FUN_ 18057b0a0 size=653 ############

longlong FUN_18057b0a0(longlong *param_1,longlong param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined4 *puVar2;
  undefined8 uVar3;
  void *pvVar4;
  ulonglong uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  ulonglong uVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  void *_Memory;
  longlong lVar14;
  
  lVar13 = *param_1;
  lVar12 = (param_2 - lVar13) / 6 + (param_2 - lVar13 >> 0x3f);
  lVar11 = (param_1[1] - lVar13) / 0x60;
  if (lVar11 == 0x2aaaaaaaaaaaaaa) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar11 + 1;
  uVar5 = (param_1[2] - lVar13) / 0x60;
  uVar9 = uVar1;
  if ((uVar5 <= 0x2aaaaaaaaaaaaaa - (uVar5 >> 1)) && (uVar9 = (uVar5 >> 1) + uVar5, uVar9 < uVar1))
  {
    uVar9 = uVar1;
  }
  lVar10 = FUN_180480500();
  lVar14 = ((lVar12 >> 4) - (lVar12 >> 0x3f)) * 0x60;
  *(undefined8 *)(lVar10 + lVar14) = 0;
  *(undefined8 *)(lVar10 + 8 + lVar14) = 0;
  *(undefined8 *)(lVar10 + 0x10 + lVar14) = 0;
  *(undefined8 *)(lVar10 + lVar14) = *param_3;
  *(undefined8 *)(lVar10 + 8 + lVar14) = param_3[1];
  *(undefined8 *)(lVar10 + 0x10 + lVar14) = param_3[2];
  *param_3 = 0;
  param_3[1] = 0;
  param_3[2] = 0;
  *(undefined8 *)(lVar10 + 0x18 + lVar14) = param_3[3];
  param_3[3] = 0;
  *(undefined8 *)(lVar10 + 0x20 + lVar14) = param_3[4];
  param_3[4] = 0;
  *(undefined8 *)(lVar10 + 0x28 + lVar14) = param_3[5];
  param_3[5] = 0;
  *(undefined8 *)(lVar10 + 0x30 + lVar14) = param_3[6];
  param_3[6] = &DAT_1821dbf98;
  uVar6 = *(undefined4 *)((longlong)param_3 + 0x3c);
  uVar7 = *(undefined4 *)(param_3 + 8);
  uVar8 = *(undefined4 *)((longlong)param_3 + 0x44);
  puVar2 = (undefined4 *)(lVar10 + 0x38 + lVar14);
  *puVar2 = *(undefined4 *)(param_3 + 7);
  puVar2[1] = uVar6;
  puVar2[2] = uVar7;
  puVar2[3] = uVar8;
  *(undefined8 *)(lVar10 + 0x48 + lVar14) = param_3[9];
  uVar3 = param_3[10];
  param_3[10] = 0;
  *(undefined8 *)(lVar10 + 0x50 + lVar14) = uVar3;
  *(undefined1 *)(lVar10 + 0x58 + lVar14) = *(undefined1 *)(param_3 + 0xb);
  lVar13 = param_1[1];
  lVar11 = *param_1;
  lVar12 = lVar10;
  if (param_2 != lVar13) {
    FUN_18057c200(*param_1,param_2,lVar10);
    lVar13 = param_1[1];
    lVar12 = lVar14 + 0x60 + lVar10;
    lVar11 = param_2;
  }
  FUN_18057c200(lVar11,lVar13,lVar12);
  lVar13 = *param_1;
  if (lVar13 == 0) {
    *param_1 = lVar10;
    param_1[1] = uVar1 * 0x60 + lVar10;
    param_1[2] = uVar9 * 0x60 + lVar10;
    return *param_1 + lVar14;
  }
  lVar11 = param_1[1];
  for (; lVar13 != lVar11; lVar13 = lVar13 + 0x60) {
    if (*(longlong *)(lVar13 + 0x50) != 0) {
      FUN_1805798f0();
    }
    FUN_1812472e0(lVar13 + 0x18);
    FUN_180569d10(lVar13);
  }
  pvVar4 = (void *)*param_1;
  _Memory = pvVar4;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x60) * 0x60)) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18057b330 size=576 ############

longlong FUN_18057b330(longlong *param_1,longlong param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  void *_Memory;
  longlong lVar9;
  
  lVar8 = *param_1;
  lVar6 = (param_2 - lVar8) / 6 + (param_2 - lVar8 >> 0x3f);
  lVar7 = (param_1[1] - lVar8) / 0x30;
  if (lVar7 == 0x555555555555555) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar7 + 1;
  uVar3 = (param_1[2] - lVar8) / 0x30;
  uVar4 = uVar1;
  if ((uVar3 <= 0x555555555555555 - (uVar3 >> 1)) && (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  lVar5 = FUN_180480500();
  lVar9 = ((lVar6 >> 3) - (lVar6 >> 0x3f)) * 0x30;
  *(undefined8 *)(lVar9 + lVar5) = *param_3;
  *param_3 = 0;
  *(undefined8 *)(lVar9 + 8 + lVar5) = param_3[1];
  param_3[1] = 0;
  *(undefined8 *)(lVar9 + 0x10 + lVar5) = param_3[2];
  param_3[2] = 0;
  *(undefined8 *)(lVar9 + 0x18 + lVar5) = param_3[3];
  param_3[3] = &DAT_1821dbf98;
  lVar8 = *param_1;
  *(undefined4 *)(lVar9 + 0x20 + lVar5) = *(undefined4 *)(param_3 + 4);
  *(undefined4 *)(lVar9 + 0x24 + lVar5) = *(undefined4 *)((longlong)param_3 + 0x24);
  *(undefined4 *)(lVar9 + 0x28 + lVar5) = *(undefined4 *)(param_3 + 5);
  *(undefined4 *)(lVar9 + 0x2c + lVar5) = *(undefined4 *)((longlong)param_3 + 0x2c);
  lVar7 = param_1[1];
  lVar6 = lVar5;
  if (param_2 != lVar7) {
    FUN_18057c2f0(lVar8,param_2,lVar5);
    lVar7 = param_1[1];
    lVar6 = lVar9 + 0x30 + lVar5;
    lVar8 = param_2;
  }
  FUN_18057c2f0(lVar8,lVar7,lVar6);
  lVar8 = *param_1;
  if (lVar8 == 0) {
    *param_1 = lVar5;
    param_1[1] = uVar1 * 0x30 + lVar5;
    param_1[2] = lVar5 + uVar4 * 0x30;
    return *param_1 + lVar9;
  }
  lVar7 = param_1[1];
  for (; lVar8 != lVar7; lVar8 = lVar8 + 0x30) {
    FUN_1812472e0(lVar8);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x30) * 0x30)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18057b580 size=563 ############

longlong FUN_18057b580(longlong *param_1,undefined8 *param_2,undefined8 *param_3)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  void *pvVar3;
  ulonglong uVar4;
  undefined8 uVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  longlong lVar9;
  longlong lVar10;
  ulonglong uVar11;
  void *_Memory;
  longlong lVar12;
  
  lVar9 = *param_1;
  lVar10 = ((longlong)param_2 - lVar9) / 6 + ((longlong)param_2 - lVar9 >> 0x3f);
  lVar12 = (lVar10 >> 2) - (lVar10 >> 0x3f);
  lVar10 = (param_1[1] - lVar9) / 0x18;
  if (lVar10 == 0xaaaaaaaaaaaaaaa) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar1 = lVar10 + 1;
  uVar4 = (param_1[2] - lVar9) / 0x18;
  uVar11 = uVar1;
  if ((uVar4 <= 0xaaaaaaaaaaaaaaa - (uVar4 >> 1)) && (uVar11 = uVar4 + (uVar4 >> 1), uVar11 < uVar1)
     ) {
    uVar11 = uVar1;
  }
  lVar9 = uVar11 * 0x18;
  if (0xaaaaaaaaaaaaaaa < uVar11) {
    lVar9 = -1;
  }
  puVar7 = (undefined8 *)FUN_180480500(lVar9);
  uVar5 = param_3[1];
  puVar7[lVar12 * 3] = *param_3;
  (puVar7 + lVar12 * 3)[1] = uVar5;
  puVar7[lVar12 * 3 + 2] = param_3[2];
  puVar2 = (undefined8 *)param_1[1];
  puVar8 = (undefined8 *)*param_1;
  puVar6 = puVar7;
  if (param_2 == puVar2) {
    for (; puVar8 != puVar2; puVar8 = puVar8 + 3) {
      uVar5 = puVar8[1];
      *puVar6 = *puVar8;
      puVar6[1] = uVar5;
      puVar6[2] = puVar8[2];
      puVar6 = puVar6 + 3;
    }
  }
  else {
    for (; puVar8 != param_2; puVar8 = puVar8 + 3) {
      uVar5 = puVar8[1];
      *puVar6 = *puVar8;
      puVar6[1] = uVar5;
      puVar6[2] = puVar8[2];
      puVar6 = puVar6 + 3;
    }
    puVar2 = (undefined8 *)param_1[1];
    if (param_2 != puVar2) {
      lVar9 = lVar12 * 0x18 - (longlong)param_2;
      do {
        uVar5 = param_2[1];
        puVar8 = (undefined8 *)((longlong)puVar7 + lVar9 + 0x18 + (longlong)param_2);
        *puVar8 = *param_2;
        puVar8[1] = uVar5;
        *(undefined8 *)((longlong)puVar7 + lVar9 + 0x28 + (longlong)param_2) = param_2[2];
        param_2 = param_2 + 3;
      } while (param_2 != puVar2);
    }
  }
  pvVar3 = (void *)*param_1;
  if (pvVar3 == (void *)0x0) {
    *param_1 = (longlong)puVar7;
    param_1[1] = (longlong)(puVar7 + uVar1 * 3);
    param_1[2] = (longlong)(puVar7 + uVar11 * 3);
    return *param_1 + lVar12 * 0x18;
  }
  _Memory = pvVar3;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar3) / 0x18) * 0x18)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18057b7c0 size=442 ############

longlong FUN_18057b7c0(longlong *param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  longlong lVar2;
  undefined8 uVar3;
  void *pvVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  undefined4 *puVar10;
  void *_Memory;
  undefined8 *puVar11;
  longlong lVar12;
  ulonglong uVar13;
  undefined4 uVar14;
  
  lVar2 = *param_1;
  lVar12 = param_1[1] - lVar2 >> 5;
  if (lVar12 == 0x7ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar13 = lVar12 + 1;
  uVar9 = param_1[2] - lVar2 >> 5;
  uVar8 = uVar13;
  if ((uVar9 <= 0x7ffffffffffffff - (uVar9 >> 1)) && (uVar8 = (uVar9 >> 1) + uVar9, uVar8 < uVar13))
  {
    uVar8 = uVar13;
  }
  lVar12 = uVar8 * 0x20;
  if (0x7ffffffffffffff < uVar8) {
    lVar12 = -1;
  }
  lVar12 = FUN_180480500(lVar12);
  uVar9 = (longlong)param_2 - lVar2 & 0xffffffffffffffe0;
  *(undefined4 *)(uVar9 + lVar12) = *param_3;
  *(undefined4 *)(uVar9 + 4 + lVar12) = param_3[1];
  uVar3 = *(undefined8 *)(param_3 + 2);
  *(undefined8 *)(uVar9 + 8 + lVar12) = uVar3;
  *(undefined1 **)(param_3 + 2) = &DAT_1821dbf98;
  uVar14 = param_3[4];
  uVar5 = param_3[5];
  uVar6 = param_3[6];
  uVar7 = param_3[7];
  puVar1 = (undefined4 *)(uVar9 + 0x10 + lVar12);
  *puVar1 = uVar14;
  puVar1[1] = uVar5;
  puVar1[2] = uVar6;
  puVar1[3] = uVar7;
  puVar1 = (undefined4 *)param_1[1];
  if (param_2 == puVar1) {
    puVar10 = (undefined4 *)*param_1;
    if (puVar10 != puVar1) {
      puVar11 = (undefined8 *)(lVar12 + 8);
      do {
        *(undefined4 *)(puVar11 + -1) = *puVar10;
        *(undefined4 *)((longlong)puVar11 + -4) = puVar10[1];
        *puVar11 = *(undefined8 *)(puVar10 + 2);
        *(undefined1 **)(puVar10 + 2) = &DAT_1821dbf98;
        uVar14 = puVar10[4];
        uVar5 = puVar10[5];
        uVar6 = puVar10[6];
        uVar7 = puVar10[7];
        puVar10 = puVar10 + 8;
        *(undefined4 *)(puVar11 + 1) = uVar14;
        *(undefined4 *)((longlong)puVar11 + 0xc) = uVar5;
        *(undefined4 *)(puVar11 + 2) = uVar6;
        *(undefined4 *)((longlong)puVar11 + 0x14) = uVar7;
        puVar11 = puVar11 + 4;
      } while (puVar10 != puVar1);
    }
  }
  else {
    uVar14 = FUN_18057bb40(uVar3,*param_1,param_2,lVar12);
    uVar14 = FUN_18057bb40(uVar14,param_2,param_1[1],uVar9 + 0x20 + lVar12);
  }
  if (*param_1 == 0) {
    *param_1 = lVar12;
    param_1[1] = uVar13 * 0x20 + lVar12;
    param_1[2] = uVar8 * 0x20 + lVar12;
    return *param_1 + uVar9;
  }
  FUN_180579ac0(uVar14,*param_1,param_1[1]);
  pvVar4 = (void *)*param_1;
  _Memory = pvVar4;
  if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18057bb00 size=52 ############

void * .?AVSoothe2_DynamicCryptoManager@eden@pace@@::
       vtbl___AVSoothe2_DynamicCryptoManager_eden_pace__(void *param_1,ulonglong param_2)

{
  FUN_181337760();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18057e590 size=335 ############

undefined8 *
FUN_18057e590(longlong *param_1,undefined8 *param_2,undefined8 param_3,int *param_4,void *param_5)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  bool bVar5;
  undefined1 local_res8 [8];
  
  puVar3 = (undefined8 *)*param_1;
  bVar5 = true;
  puVar4 = puVar3;
  if (*(char *)((longlong)puVar3[1] + 0x19) == '\0') {
    puVar2 = (undefined8 *)puVar3[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_4 < *(int *)(puVar4 + 4);
      if (bVar5) {
        puVar2 = (undefined8 *)*puVar4;
      }
      else {
        puVar2 = (undefined8 *)puVar4[2];
      }
    } while (*(char *)((longlong)puVar2 + 0x19) == '\0');
  }
  if (bVar5) {
    if (puVar4 == (undefined8 *)*puVar3) {
      puVar3 = (undefined8 *)FUN_18057e360(param_1,local_res8,1);
      *param_2 = *puVar3;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar4;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar4 = puVar3;
        puVar3 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
          puVar4 = puVar3;
          puVar3 = (undefined8 *)puVar3[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar3 = (undefined8 *)puVar4[1];
        while ((puVar2 = puVar3, cVar1 == '\0' && (puVar4 == (undefined8 *)*puVar2))) {
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar3 = (undefined8 *)puVar2[1];
          puVar4 = puVar2;
        }
        if (*(char *)((longlong)puVar4 + 0x19) == '\0') {
          puVar4 = puVar2;
        }
      }
    }
    else {
      puVar4 = (undefined8 *)puVar4[2];
    }
  }
  if (*(int *)(puVar4 + 4) < *param_4) {
    puVar3 = (undefined8 *)FUN_18057e360(param_1,local_res8);
    *param_2 = *puVar3;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  puVar3 = *(undefined8 **)((longlong)param_5 + 0x28);
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 18057f270 size=43 ############

undefined8 * FUN_18057f270(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = ParameterControllingComponent::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18057f640 size=128 ############

void FUN_18057f640(longlong param_1,longlong *param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  uint *_Memory;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar4 = *(longlong *)(param_1 + 0x9d8);
  *(longlong *)(param_1 + 0x9d8) = *param_2;
  UNLOCK();
  piVar1 = (int *)(lVar4 + -0x10);
  if ((*(uint *)(lVar4 + -0x10) & 0x30000000) == 0) {
    LOCK();
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(piVar1);
    }
  }
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar3 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return;
}



############ FUN_ 18057f9e0 size=78 ############

void * FUN_18057f9e0(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x4a0);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18057f7e0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18057fa30 size=52 ############

void * FUN_18057fa30(void *param_1,ulonglong param_2)

{
  FUN_1812fbe60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18057ff30 size=52 ############

void * FUN_18057ff30(void *param_1,ulonglong param_2)

{
  FUN_18057f3b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18057ff70 size=97 ############

void * FUN_18057ff70(void *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x338) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_1812e2030(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18057ffe0 size=52 ############

void * FUN_18057ffe0(void *param_1,ulonglong param_2)

{
  FUN_1815da5e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580020 size=52 ############

void * FUN_180580020(void *param_1,ulonglong param_2)

{
  FUN_18057f7e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580060 size=52 ############

void * FUN_180580060(void *param_1,ulonglong param_2)

{
  FUN_1812fbe60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805800a0 size=86 ############

void * FUN_1805800a0(void *param_1,uint param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 8) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580100 size=97 ############

void * FUN_180580100(void *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0xd0) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580170 size=52 ############

void * FUN_180580170(void *param_1,ulonglong param_2)

{
  FUN_1805801b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580270 size=102 ############

void * FUN_180580270(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x2d8);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1805793e0((longlong)param_1 + 0x280);
  FUN_180560070((longlong)param_1 + 0xe0);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580310 size=52 ############

void * FUN_180580310(void *param_1,ulonglong param_2)

{
  FUN_180577b60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580350 size=77 ############

void * FUN_180580350(void *param_1,ulonglong param_2)

{
  *(undefined ***)((longlong)param_1 + 200) = juce::Timer::vftable;
  FUN_1812a7720();
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805803d0 size=112 ############

void * FUN_1805803d0(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x360);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  *(undefined ***)((longlong)param_1 + 200) = juce::Timer::vftable;
  FUN_1812a7720();
  FUN_18057f3b0((longlong)param_1 + 0xe0);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580450 size=297 ############

undefined8 * FUN_180580450(undefined8 *param_1,uint param_2)

{
  longlong lVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  longlong lVar4;
  
  *param_1 = XYSlider::vftable;
  param_1[0x16] = XYSlider::vftable;
  lVar4 = param_1[0x1d];
  if (lVar4 != 0) {
    lVar1 = param_1[0x1e];
    for (; lVar4 != lVar1; lVar4 = lVar4 + 8) {
      FUN_1805841a0(lVar4);
    }
    pvVar2 = (void *)param_1[0x1d];
    _Memory = pvVar2;
    if ((0xfff < (param_1[0x1f] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  puVar3 = (undefined8 *)param_1[0x19];
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  if ((void *)param_1[0x18] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x18]);
  }
  if ((void *)param_1[0x17] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[0x17]);
  }
  param_1[0x16] = ParameterFloat::Listener::vftable;
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580630 size=52 ############

void * FUN_180580630(void *param_1,ulonglong param_2)

{
  FUN_18158d160();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580770 size=52 ############

void * FUN_180580770(void *param_1,ulonglong param_2)

{
  FUN_181564f20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805807f0 size=52 ############

void * FUN_1805807f0(void *param_1,ulonglong param_2)

{
  FUN_18154f350();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805808e0 size=180 ############

void FUN_1805808e0(undefined8 *param_1)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *_Memory;
  
  *param_1 = CloudySliderArea::vftable;
  param_1[0x50] = CloudySliderArea::vftable;
  param_1[0x53] = CloudySliderArea::vftable;
  FUN_180560070(param_1 + 0x7f);
  FUN_180568840(param_1 + 0x7c);
  puVar2 = (undefined8 *)param_1[0x7b];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  _Memory = (uint *)(param_1[0x79] + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  if (param_1[0x76] != 0) {
    FUN_18056a070();
  }
  *(undefined4 *)((longlong)param_1 + 0x3ac) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x74]);
}



############ FUN_ 180580a00 size=52 ############

void * FUN_180580a00(void *param_1,ulonglong param_2)

{
  FUN_18153bf50();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580a40 size=52 ############

void * FUN_180580a40(void *param_1,ulonglong param_2)

{
  FUN_181530390();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580cc0 size=52 ############

void * FUN_180580cc0(void *param_1,ulonglong param_2)

{
  FUN_181505960();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580d20 size=100 ############

void * FUN_180580d20(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x2a8);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x2a0);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_1805801b0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580d90 size=78 ############

void * FUN_180580d90(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 0x4a8);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18057f7e0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580f20 size=52 ############

void * FUN_180580f20(void *param_1,ulonglong param_2)

{
  FUN_1814f8f50();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580f60 size=111 ############

void * FUN_180580f60(void *param_1,ulonglong param_2)

{
  uint uVar1;
  uint *_Memory;
  
  _Memory = (uint *)(*(longlong *)((longlong)param_1 + 0x370) + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  *(undefined ***)((longlong)param_1 + 0x360) = ProcessorStateManagerOptionListener::vftable;
  FUN_1814f8f50(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180580fd0 size=52 ############

void * FUN_180580fd0(void *param_1,ulonglong param_2)

{
  FUN_180581010();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805810f0 size=150 ############

void * FUN_1805810f0(void *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  plVar1 = *(longlong **)((longlong)param_1 + 0x4b0);
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != (longlong *)((longlong)param_1 + 0x478));
    *(undefined8 *)((longlong)param_1 + 0x4b0) = 0;
  }
  *(undefined ***)((longlong)param_1 + 0x458) = juce::Timer::vftable;
  FUN_1812a7720((longlong)param_1 + 0x458);
  FUN_180581080((longlong)param_1 + 0x3e0);
  FUN_180581010(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180581190 size=52 ############

void * FUN_180581190(void *param_1,ulonglong param_2)

{
  FUN_180581080();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805811d0 size=109 ############

undefined8 * FUN_1805811d0(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  
  plVar1 = (longlong *)param_1[0xb];
  if (plVar1 != (longlong *)0x0) {
    (**(code **)(*plVar1 + 0x20))(plVar1,plVar1 != param_1 + 4);
    param_1[0xb] = 0;
  }
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180581240 size=52 ############

void * FUN_180581240(void *param_1,ulonglong param_2)

{
  FUN_180577740();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180581280 size=52 ############

void * FUN_180581280(void *param_1,ulonglong param_2)

{
  FUN_180577e60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805812c0 size=52 ############

void * FUN_1805812c0(void *param_1,ulonglong param_2)

{
  FUN_1814ea7a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1814ea7a0 size=407 ############

void FUN_1814ea7a0(undefined8 *param_1)

{
  uint *_Memory;
  uint uVar1;
  char cVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  void *pvVar6;
  undefined8 *puVar7;
  void *_Memory_00;
  
  *param_1 = MatrixBox::vftable;
  param_1[0x16] = MatrixBox::vftable;
  param_1[0x19] = MatrixBox::vftable;
  param_1[0x1a] = MatrixBox::vftable;
  puVar3 = (undefined8 *)param_1[0x1f];
  puVar4 = (undefined8 *)*puVar3;
  while (puVar4 != puVar3) {
    _Memory = (uint *)(puVar4[4] + -0x10);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      *_Memory = *_Memory + 1;
      UNLOCK();
    }
    FUN_1811bc940(puVar4[5],param_1 + 0x19);
    if ((*_Memory & 0x30000000) == 0) {
      LOCK();
      uVar1 = *_Memory;
      *_Memory = *_Memory - 1;
      UNLOCK();
      if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    puVar5 = (undefined8 *)puVar4[2];
    if (*(char *)((longlong)puVar5 + 0x19) == '\0') {
      cVar2 = *(char *)((longlong)*puVar5 + 0x19);
      puVar4 = puVar5;
      puVar5 = (undefined8 *)*puVar5;
      while (cVar2 == '\0') {
        cVar2 = *(char *)((longlong)*puVar5 + 0x19);
        puVar4 = puVar5;
        puVar5 = (undefined8 *)*puVar5;
      }
    }
    else {
      cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
      puVar7 = (undefined8 *)puVar4[1];
      puVar5 = puVar4;
      while ((puVar4 = puVar7, cVar2 == '\0' && (puVar5 == (undefined8 *)puVar4[2]))) {
        cVar2 = *(char *)((longlong)puVar4[1] + 0x19);
        puVar7 = (undefined8 *)puVar4[1];
        puVar5 = puVar4;
      }
    }
  }
  pvVar6 = (void *)param_1[0x24];
  if (pvVar6 != (void *)0x0) {
    _Memory_00 = pvVar6;
    if ((0xfff < (param_1[0x26] - (longlong)pvVar6 & 0xfffffffffffffff0U)) &&
       (_Memory_00 = *(void **)((longlong)pvVar6 + -8),
       0x1f < (ulonglong)((longlong)pvVar6 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory_00);
  }
  FUN_180581300(param_1 + 0x1b);
  param_1[0x19] = ParameterFloat::Listener::vftable;
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 180581300 size=51 ############

void FUN_180581300(longlong param_1)

{
  undefined1 local_res8 [8];
  
  FUN_180489730(param_1 + 0x30,local_res8,**(undefined8 **)(param_1 + 0x30),
                *(undefined8 **)(param_1 + 0x30));
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x30));
}



############ FUN_ 1805813e0 size=52 ############

void * FUN_1805813e0(void *param_1,ulonglong param_2)

{
  FUN_180581420();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180581420 size=365 ############

void FUN_180581420(longlong param_1)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  void *pvVar4;
  void *_Memory;
  uint *_Memory_00;
  longlong *plVar5;
  
  if (*(longlong *)(param_1 + 0x180) != 0) {
    FUN_18056ae10();
  }
  plVar5 = *(longlong **)(param_1 + 0x160);
  if (plVar5 != (longlong *)0x0) {
    plVar2 = *(longlong **)(param_1 + 0x168);
    for (; plVar5 != plVar2; plVar5 = plVar5 + 1) {
      puVar3 = (undefined8 *)*plVar5;
      if (puVar3 != (undefined8 *)0x0) {
        (**(code **)*puVar3)(puVar3,1);
      }
    }
    pvVar4 = *(void **)(param_1 + 0x160);
    _Memory = pvVar4;
    if ((0xfff < (*(longlong *)(param_1 + 0x170) - (longlong)pvVar4 & 0xfffffffffffffff8U)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  puVar3 = *(undefined8 **)(param_1 + 0x158);
  if (puVar3 != (undefined8 *)0x0) {
    (**(code **)*puVar3)(puVar3,1);
  }
  _Memory_00 = (uint *)(*(longlong *)(param_1 + 0x148) + -0x10);
  if ((*_Memory_00 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory_00;
    *_Memory_00 = *_Memory_00 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory_00);
    }
  }
  plVar5 = *(longlong **)(param_1 + 0x138);
  if (plVar5 != (longlong *)0x0) {
    (**(code **)(*plVar5 + 0x20))(plVar5,plVar5 != (longlong *)(param_1 + 0x100));
    *(undefined8 *)(param_1 + 0x138) = 0;
  }
  FUN_18052fa60(param_1 + 0xe0);
  plVar5 = *(longlong **)(param_1 + 0xd0);
  if (plVar5 != (longlong *)0x0) {
    plVar2 = (longlong *)plVar5[7];
    if (plVar2 != (longlong *)0x0) {
      (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != plVar5);
      plVar5[7] = 0;
    }
                    /* WARNING: Subroutine does not return */
    free(plVar5);
  }
  *(undefined ***)(param_1 + 200) = ConfigOptionListener::vftable;
  FUN_18134caa0(param_1);
  return;
}



############ FUN_ 180581610 size=52 ############

void * FUN_180581610(void *param_1,ulonglong param_2)

{
  FUN_1815ef230();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805816f0 size=52 ############

void * FUN_1805816f0(void *param_1,ulonglong param_2)

{
  FUN_1805770d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805850d0 size=103 ############

undefined8 FUN_1805850d0(longlong param_1,undefined8 param_2,longlong *param_3)

{
  uint uVar1;
  uint *_Memory;
  
  if (*(longlong **)(param_1 + 0x38) == (longlong *)0x0) {
                    /* WARNING: Subroutine does not return */
    std::_Xbad_function_call();
  }
  (**(code **)(**(longlong **)(param_1 + 0x38) + 0x10))();
  _Memory = (uint *)(*param_3 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_2;
}



############ FUN_ 180585de0 size=356 ############

longlong FUN_180585de0(longlong *param_1,void *param_2,longlong *param_3)

{
  ulonglong uVar1;
  void *pvVar2;
  longlong lVar3;
  ulonglong uVar4;
  void *pvVar5;
  ulonglong uVar6;
  longlong lVar7;
  void *_Dst;
  longlong lVar8;
  size_t _Size;
  
  lVar7 = *param_1;
  lVar8 = (longlong)param_2 - lVar7 >> 3;
  lVar3 = param_1[1] - lVar7 >> 3;
  if (lVar3 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_18047cf10();
  }
  uVar6 = param_1[2] - lVar7 >> 3;
  uVar1 = lVar3 + 1;
  uVar4 = uVar1;
  if ((uVar6 <= 0x1fffffffffffffff - (uVar6 >> 1)) && (uVar4 = (uVar6 >> 1) + uVar6, uVar4 < uVar1))
  {
    uVar4 = uVar1;
  }
  lVar7 = uVar4 * 8;
  if (0x1fffffffffffffff < uVar4) {
    lVar7 = -1;
  }
  pvVar5 = (void *)FUN_180480500(lVar7);
  lVar7 = *param_3;
  if (lVar7 != 0) {
    lVar7 = lVar7 + 0x1e0;
  }
  *(longlong *)((longlong)pvVar5 + lVar8 * 8) = lVar7;
  pvVar2 = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)pvVar2;
    _Dst = pvVar5;
    param_2 = pvVar2;
  }
  else {
    memmove(pvVar5,pvVar2,(longlong)param_2 - (longlong)pvVar2);
    _Size = param_1[1] - (longlong)param_2;
    _Dst = (void *)((longlong)pvVar5 + (lVar8 + 1) * 8);
  }
  memmove(_Dst,param_2,_Size);
  pvVar2 = (void *)*param_1;
  if (pvVar2 == (void *)0x0) {
    *param_1 = (longlong)pvVar5;
    param_1[1] = (longlong)((longlong)pvVar5 + uVar1 * 8);
    param_1[2] = (longlong)(uVar4 * 8 + (longlong)pvVar5);
    return *param_1 + lVar8 * 8;
  }
  pvVar5 = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xfffffffffffffff8U)) &&
     (pvVar5 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 1805864c0 size=52 ############

void * FUN_1805864c0(void *param_1,ulonglong param_2)

{
  FUN_180580830();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180586500 size=52 ############

void * FUN_180586500(void *param_1,ulonglong param_2)

{
  FUN_180580a80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180586570 size=132 ############

void FUN_180586570(undefined8 *param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  uint uVar2;
  bool bVar3;
  
  if (param_1 != param_2) {
    do {
      param_2 = param_2 + -1;
      if (param_1 == param_2) {
        return;
      }
      uVar1 = *param_1;
      *param_1 = &DAT_1821dbf98;
      *param_1 = *param_2;
      *param_2 = uVar1;
      if ((DAT_1821dbf88 & 0x30000000) == 0) {
        LOCK();
        uVar2 = DAT_1821dbf88 - 1;
        UNLOCK();
        bVar3 = DAT_1821dbf88 == 0;
        DAT_1821dbf88 = uVar2;
        if (bVar3) {
                    /* WARNING: Subroutine does not return */
          free(&DAT_1821dbf88);
        }
      }
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return;
}



############ FUN_ 1805866e0 size=33 ############

void * FUN_1805866e0(void *param_1,ulonglong param_2)

{
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180586e50 size=88 ############

undefined8 * FUN_180586e50(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  undefined8 uVar1;
  uint uVar2;
  bool bVar3;
  
  uVar1 = *param_3;
  *param_3 = &DAT_1821dbf98;
  *param_2 = uVar1;
  if ((DAT_1821dbf88 & 0x30000000) == 0) {
    LOCK();
    uVar2 = DAT_1821dbf88 - 1;
    UNLOCK();
    bVar3 = DAT_1821dbf88 == 0;
    DAT_1821dbf88 = uVar2;
    if (bVar3) {
                    /* WARNING: Subroutine does not return */
      free(&DAT_1821dbf88);
    }
  }
  return param_2;
}



############ FUN_ 18058ebf0 size=267 ############

void * .?AVSoothe2XYSliderArea@@::vtbl___AVSoothe2XYSliderArea__(void *param_1,uint param_2)

{
  uint uVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *_Memory;
  uint *puVar4;
  
  puVar2 = *(undefined8 **)((longlong)param_1 + 0x6c8);
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  pvVar3 = *(void **)((longlong)param_1 + 0x6b0);
  if (pvVar3 != (void *)0x0) {
    _Memory = pvVar3;
    if ((0xfff < (*(longlong *)((longlong)param_1 + 0x6c0) - (longlong)pvVar3 & 0xfffffffffffffff8U)
        ) && (_Memory = *(void **)((longlong)pvVar3 + -8),
             0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  puVar4 = (uint *)(*(longlong *)((longlong)param_1 + 0x6a0) + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  puVar4 = (uint *)(*(longlong *)((longlong)param_1 + 0x688) + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  FUN_180577b60((longlong)param_1 + 0x330);
  *(undefined ***)((longlong)param_1 + 800) = CloudyPopupMenu::Listener::vftable;
  FUN_18158d160(param_1);
  if ((param_2 & 1) == 0) {
    return param_1;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18058ed30 size=292 ############

undefined8 * FUN_18058ed30(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  
  *param_1 = GraphLegend::vftable;
  param_1[0x16] = GraphLegend::vftable;
  param_1[0x19] = GraphLegend::vftable;
  uVar1 = FUN_18119aa60(param_1[0x1a],"stereo mode",param_3,param_4,0xfffffffffffffffe);
  FUN_1811bc940(uVar1,param_1 + 0x19);
  for (puVar2 = param_1 + 0x51; puVar2 != param_1 + 0x5d; puVar2 = puVar2 + 2) {
    uVar1 = puVar2[1];
    FUN_1811bc940(*puVar2,param_1 + 0x19);
    FUN_1811bc940(uVar1,param_1 + 0x19);
  }
  FUN_180560070(param_1 + 0x1c);
  param_1[0x19] = ParameterFloat::Listener::vftable;
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 181566f90 size=247 ############

undefined8 * FUN_181566f90(undefined8 *param_1,longlong *param_2,undefined1 param_3)

{
  uint uVar1;
  uint *_Memory;
  longlong local_res20;
  
  local_res20 = *param_2;
  uVar1 = *(uint *)(local_res20 + -0x10);
  if ((uVar1 & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_181567090(param_1,&local_res20,0,CONCAT71((uint7)(uint3)(uVar1 >> 8),1),param_3);
  *param_1 = CloudySlider_V2::vftable;
  param_1[0x16] = CloudySlider_V2::vftable;
  param_1[0x19] = CloudySlider_V2::vftable;
  param_1[0x20] = CloudySlider_V2::vftable;
  param_1[0x22] = CloudySlider_V2::vftable;
  param_1[0x23] = CloudySlider_V2::vftable;
  param_1[0x24] = CloudySlider_V2::vftable;
  FUN_18133e970(param_1,0);
  _Memory = (uint *)(*param_2 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 18058fa40 size=52 ############

void * FUN_18058fa40(void *param_1,ulonglong param_2)

{
  FUN_18058fa80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180590710 size=52 ############

void * FUN_180590710(void *param_1,ulonglong param_2)

{
  FUN_181630240();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180590750 size=52 ############

void * FUN_180590750(void *param_1,ulonglong param_2)

{
  FUN_181625400();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1815d8480 size=242 ############

void FUN_1815d8480(longlong param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  uint uVar2;
  longlong lVar3;
  uint *puVar4;
  longlong local_res8;
  longlong *local_res10;
  longlong *local_res18;
  
  if ((*(uint *)(*param_2 + -0x10) & 0x30000000) == 0) {
    LOCK();
    piVar1 = (int *)(*param_2 + -0x10);
    *piVar1 = *piVar1 + 1;
    UNLOCK();
  }
  LOCK();
  lVar3 = *(longlong *)(param_1 + 0x20);
  *(longlong *)(param_1 + 0x20) = *param_2;
  UNLOCK();
  puVar4 = (uint *)(lVar3 + -0x10);
  local_res10 = param_2;
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  if (*(longlong *)(param_1 + 0x28) != 0) {
    local_res8 = *param_2;
    if ((*(uint *)(local_res8 + -0x10) & 0x30000000) == 0) {
      LOCK();
      *(int *)(local_res8 + -0x10) = *(int *)(local_res8 + -0x10) + 1;
      UNLOCK();
    }
    local_res18 = &local_res8;
    FUN_181349c50(*(undefined8 *)(param_1 + 0x28),&local_res8,0,param_4,0xfffffffffffffffe);
    puVar4 = (uint *)(local_res8 + -0x10);
    if ((*puVar4 & 0x30000000) == 0) {
      LOCK();
      uVar2 = *puVar4;
      *puVar4 = *puVar4 - 1;
      UNLOCK();
      if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
        free(puVar4);
      }
    }
  }
  puVar4 = (uint *)(*param_2 + -0x10);
  if ((*puVar4 & 0x30000000) == 0) {
    LOCK();
    uVar2 = *puVar4;
    *puVar4 = *puVar4 - 1;
    UNLOCK();
    if (uVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar4);
    }
  }
  return;
}



############ FUN_ 1805909c0 size=215 ############

void FUN_1805909c0(longlong param_1)

{
  void *_Memory;
  undefined8 *puVar1;
  
  FUN_180576bb0(param_1 + 0x150);
  if (*(longlong *)(param_1 + 0x148) != 0) {
    FUN_18056a070();
  }
  _Memory = *(void **)(param_1 + 0x140);
  if (_Memory != (void *)0x0) {
    FUN_1816056e0(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  puVar1 = *(undefined8 **)(param_1 + 0x138);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = *(undefined8 **)(param_1 + 0x130);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = *(undefined8 **)(param_1 + 0x120);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = *(undefined8 **)(param_1 + 0x118);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  puVar1 = *(undefined8 **)(param_1 + 0x110);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  *(undefined4 *)(param_1 + 0xd4) = 0;
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 200));
}



############ FUN_ 1814ec5a0 size=331 ############

undefined8 *
FUN_1814ec5a0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4,
             longlong param_5,longlong *param_6)

{
  uint uVar1;
  longlong *plVar2;
  undefined8 *puVar3;
  undefined8 uVar4;
  uint *_Memory;
  longlong local_res20;
  
  local_res20 = *param_6;
  if ((*(uint *)(local_res20 + -0x10) & 0x30000000) == 0) {
    LOCK();
    *(int *)(local_res20 + -0x10) = *(int *)(local_res20 + -0x10) + 1;
    UNLOCK();
  }
  FUN_1814fa810(param_1,param_2,param_3,&local_res20,0xfffffffffffffffe);
  *param_1 = CustomMouseUpToggleButton::vftable;
  param_1[0x16] = CustomMouseUpToggleButton::vftable;
  param_1[0x19] = CustomMouseUpToggleButton::vftable;
  param_1[0x1b] = CustomMouseUpToggleButton::vftable;
  param_1[0x1c] = CustomMouseUpToggleButton::vftable;
  param_1[0x73] = 0;
  plVar2 = (longlong *)param_4[7];
  if (plVar2 != (longlong *)0x0) {
    if (plVar2 == param_4) {
      uVar4 = (**(code **)(*plVar2 + 8))(plVar2,param_1 + 0x6c);
      param_1[0x73] = uVar4;
      plVar2 = (longlong *)param_4[7];
      if (plVar2 == (longlong *)0x0) goto LAB_1814ec686;
      (**(code **)(*plVar2 + 0x20))(plVar2,plVar2 != param_4);
    }
    else {
      param_1[0x73] = plVar2;
    }
    param_4[7] = 0;
  }
LAB_1814ec686:
  param_1[0x7b] = 0;
  puVar3 = *(undefined8 **)(param_5 + 0x38);
  if (puVar3 != (undefined8 *)0x0) {
    uVar4 = (**(code **)*puVar3)(puVar3,param_1 + 0x74);
    param_1[0x7b] = uVar4;
  }
  _Memory = (uint *)(*param_6 + -0x10);
  if ((*_Memory & 0x30000000) == 0) {
    LOCK();
    uVar1 = *_Memory;
    *_Memory = *_Memory - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  return param_1;
}



############ FUN_ 180592950 size=66 ############

undefined8 * FUN_180592950(undefined8 *param_1,ulonglong param_2)

{
  FUN_180599f20(param_1 + 4);
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180593290 size=222 ############

undefined8 * FUN_180593290(undefined8 *param_1,ulonglong param_2)

{
  FUN_1805933c0(param_1 + 0x113);
  FUN_1805933c0(param_1 + 0xfe);
  FUN_1805933c0(param_1 + 0xe5);
  FUN_1805933c0(param_1 + 0xd0);
  FUN_1805933c0(param_1 + 0xb7);
  FUN_1805933c0(param_1 + 0xa2);
  FUN_1805933c0(param_1 + 0x8b);
  FUN_1805933c0(param_1 + 0x78);
  FUN_1805933c0(param_1 + 0x61);
  FUN_1805933c0(param_1 + 0x4e);
  FUN_1805933c0(param_1 + 0x37);
  FUN_1805933c0(param_1 + 0x24);
  FUN_1805933c0(param_1 + 0x11);
  FUN_1805933c0(param_1 + 2);
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180595110 size=52 ############

void * FUN_180595110(void *param_1,ulonglong param_2)

{
  FUN_180594f40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805957f0 size=99 ############

void * FUN_1805957f0(void *param_1,uint param_2)

{
  if (*(longlong *)((longlong)param_1 + 0x50) != 0) {
                    /* WARNING: Subroutine does not return */
    free(*(void **)(*(longlong *)((longlong)param_1 + 0x50) + 8));
  }
  if (*(longlong *)((longlong)param_1 + 0x48) != 0) {
    FUN_18059b780();
  }
  FUN_1812918d0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180596340 size=242 ############

undefined8 * FUN_180596340(undefined8 *param_1,ulonglong param_2)

{
  int *piVar1;
  int iVar2;
  undefined **ppuVar3;
  undefined8 *puVar4;
  HWND hWnd;
  
  *param_1 = juce::OpenGLContext::NativeContext::vftable;
  if ((HGLRC)param_1[5] != (HGLRC)0x0) {
    wglDeleteContext((HGLRC)param_1[5]);
    param_1[5] = 0;
  }
  ppuVar3 = *(undefined ***)param_1[4];
  if (ppuVar3 == juce::HWNDComponentPeer::vftable) {
    hWnd = (HWND)((longlong *)param_1[4])[0x11];
  }
  else {
    hWnd = (HWND)(*(code *)ppuVar3[1])();
  }
  ReleaseDC(hWnd,(HDC)param_1[6]);
  puVar4 = (undefined8 *)param_1[9];
  if (puVar4 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar4 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar4)(puVar4,1);
    }
  }
  puVar4 = (undefined8 *)param_1[4];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  puVar4 = (undefined8 *)param_1[3];
  if (puVar4 != (undefined8 *)0x0) {
    (**(code **)*puVar4)(puVar4,1);
  }
  *param_1 = juce::Timer::vftable;
  FUN_1812a7720(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180596720 size=301 ############

void FUN_180596720(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  int *piVar1;
  int iVar2;
  undefined8 *puVar3;
  void *_Memory;
  undefined8 uVar4;
  
  uVar4 = 0xfffffffffffffffe;
  *param_1 = juce::OpenGLContext::CachedImage::vftable;
  param_1[1] = juce::OpenGLContext::CachedImage::vftable;
  FUN_1805968f0();
  FUN_1812a6010(param_1 + 0x69);
  _Cnd_destroy_in_situ(param_1 + 0x75);
  _Mtx_destroy_in_situ(param_1 + 0x6b);
  puVar3 = (undefined8 *)param_1[0x69];
  if (puVar3 != (undefined8 *)0x0) {
    LOCK();
    piVar1 = (int *)(puVar3 + 1);
    iVar2 = *piVar1;
    *piVar1 = *piVar1 + -1;
    UNLOCK();
    if (iVar2 == 1) {
      (**(code **)*puVar3)(puVar3,1,param_3,param_4,uVar4);
    }
  }
  FUN_180598b80(param_1 + 0x61);
  _Memory = (void *)param_1[0x60];
  if (_Memory != (void *)0x0) {
    FUN_18122aa90(_Memory);
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  _Cnd_destroy_in_situ(param_1 + 0x55);
  _Mtx_destroy_in_situ(param_1 + 0x4b);
  _Cnd_destroy_in_situ(param_1 + 0x40);
  _Mtx_destroy_in_situ(param_1 + 0x36);
  _Cnd_destroy_in_situ(param_1 + 0x2b);
  _Mtx_destroy_in_situ(param_1 + 0x21);
  FUN_180488f10(param_1 + 0x1e);
  *(undefined4 *)((longlong)param_1 + 0xfc) = 0;
                    /* WARNING: Subroutine does not return */
  free((void *)param_1[0x1e]);
}



############ FUN_ 1812489f0 size=566 ############

undefined8 * FUN_1812489f0(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  byte bVar1;
  uint uVar2;
  ulonglong uVar3;
  uint uVar4;
  longlong lVar5;
  int iVar6;
  byte *pbVar7;
  undefined1 *puVar8;
  undefined1 *puVar9;
  bool bVar10;
  undefined1 *local_50;
  byte *local_48;
  undefined1 *local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_48 = (byte *)*param_1;
  if (*local_48 == 0) {
    *param_2 = &DAT_1821dbf98;
  }
  else {
    local_50 = &DAT_1821dbf98;
    local_40 = (undefined1 *)0x0;
    local_38 = *(ulonglong *)(local_48 + -8);
    local_30 = 0;
    FUN_1812342b0(&local_50);
    local_40 = local_50;
    pbVar7 = local_48;
    puVar8 = local_50;
    puVar9 = local_50;
    do {
      bVar1 = *pbVar7;
      local_48 = pbVar7 + 1;
      uVar4 = (uint)bVar1;
      if ((char)bVar1 < '\0') {
        uVar4 = 0x7f;
        uVar2 = 0x40;
        iVar6 = 0;
        if ((bVar1 & 0x40) != 0) {
          do {
            if (uVar2 < 9) break;
            uVar4 = uVar4 >> 1;
            iVar6 = iVar6 + 1;
            uVar2 = uVar2 >> 1;
          } while ((bVar1 & uVar2) != 0);
        }
        uVar4 = bVar1 & uVar4;
        for (; (iVar6 = iVar6 + -1, -1 < iVar6 && ((*local_48 & 0xc0) == 0x80));
            local_48 = local_48 + 1) {
          uVar4 = *local_48 & 0x3f | uVar4 << 6;
        }
      }
      pbVar7 = local_48;
      iVar6 = FUN_18049bc80(param_3);
      if (-1 < iVar6) {
        lVar5 = 1;
        if (((0x7f < uVar4) && (lVar5 = 2, 0x7ff < uVar4)) && (lVar5 = 3, 0xffff < uVar4)) {
          lVar5 = 4;
        }
        local_30 = local_30 + lVar5;
        if (local_38 < local_30) {
          uVar3 = 8;
          if (8 < local_38 >> 4) {
            uVar3 = local_38 >> 4;
          }
          local_38 = local_38 + uVar3;
          FUN_1812342b0(&local_50);
          local_40 = local_50 + ((int)puVar9 - (int)puVar8);
        }
        FUN_180493180(&local_40);
        pbVar7 = local_48;
        puVar8 = local_50;
        puVar9 = local_40;
      }
    } while (uVar4 != 0);
    local_30 = local_30 + 1;
    if (local_38 < local_30) {
      uVar3 = 8;
      if (8 < local_38 >> 4) {
        uVar3 = local_38 >> 4;
      }
      local_38 = local_38 + uVar3;
      FUN_1812342b0(&local_50);
      puVar9 = local_50 + ((int)puVar9 - (int)puVar8);
      puVar8 = local_50;
      local_40 = puVar9;
    }
    *puVar9 = 0;
    *param_2 = puVar8;
    if ((DAT_1821dbf88 & 0x30000000) == 0) {
      LOCK();
      uVar4 = DAT_1821dbf88 - 1;
      UNLOCK();
      bVar10 = DAT_1821dbf88 == 0;
      DAT_1821dbf88 = uVar4;
      if (bVar10) {
                    /* WARNING: Subroutine does not return */
        free(&DAT_1821dbf88);
      }
    }
  }
  return param_2;
}



############ FUN_ 180597f40 size=52 ############

void * FUN_180597f40(void *param_1,ulonglong param_2)

{
  FUN_180596720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180598590 size=125 ############

undefined8 * FUN_180598590(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = juce::OpenGLContext::Attachment::vftable;
  param_1[8] = juce::OpenGLContext::Attachment::vftable;
  FUN_180597f80();
  param_1[8] = juce::Timer::vftable;
  FUN_1812a7720(param_1 + 8);
  FUN_181322ab0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805988b0 size=66 ############

undefined8 * FUN_1805988b0(undefined8 *param_1,ulonglong param_2)

{
  FUN_18163bcd0(param_1 + 2);
  *param_1 = juce::ReferenceCountedObject::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180598900 size=177 ############

undefined8 * FUN_180598900(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *puVar1;
  
  *param_1 = juce::OpenGLAppComponent::vftable;
  param_1[0x16] = juce::OpenGLAppComponent::vftable;
  if (param_1[0x4b] != 0) {
    FUN_180597f80();
    puVar1 = (undefined8 *)param_1[0x4b];
    param_1[0x4b] = 0;
    if (puVar1 != (undefined8 *)0x0) {
      (**(code **)*puVar1)(puVar1,1);
    }
  }
  param_1[0x48] = 0;
  FUN_18163b780(param_1 + 0x17);
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180598ec0 size=292 ############

void FUN_180598ec0(longlong param_1)

{
  longlong *plVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  void *_Memory;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 local_20;
  undefined4 local_1c;
  
  plVar1 = (longlong *)(param_1 + 8);
  lVar2 = *plVar1;
  *plVar1 = 0;
  FUN_18059a1f0(plVar1);
  plVar1 = (longlong *)*plVar1;
  if (*plVar1 != 0) {
    lVar3 = plVar1[0xe];
    if (0 < *(int *)(lVar3 + 0x2cb0)) {
      FUN_1805936a0(lVar3 + 0xa0);
    }
    FUN_1805939d0(lVar3 + 0x78,lVar3 + 0xa0);
    lVar3 = *(longlong *)(lVar2 + 0x88);
    lVar4 = plVar1[0xe];
    *(undefined4 *)(lVar4 + 8) = *(undefined4 *)(lVar3 + 8);
    uVar5 = *(undefined4 *)(lVar3 + 0x10);
    uVar6 = *(undefined4 *)(lVar3 + 0x14);
    uVar7 = *(undefined4 *)(lVar3 + 0x18);
    *(undefined4 *)(lVar4 + 0xc) = *(undefined4 *)(lVar3 + 0xc);
    *(undefined4 *)(lVar4 + 0x10) = uVar5;
    *(undefined4 *)(lVar4 + 0x14) = uVar6;
    *(undefined4 *)(lVar4 + 0x18) = uVar7;
    _Memory = *(void **)(lVar2 + 0x88);
    *(undefined8 *)(lVar2 + 0x88) = 0;
    if (_Memory != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    FUN_1805929a0(plVar1[0xe]);
    (**(code **)(*(longlong *)*plVar1 + 0x58))((longlong *)*plVar1,&local_20);
    (**(code **)(*(longlong *)*plVar1 + 0x88))
              ((longlong *)*plVar1,plVar1,lVar2 + 0x80,
               (int)(*(float *)(lVar2 + 100) * DAT_1824c4548),local_20,local_1c,0);
  }
  if (lVar2 != 0) {
    FUN_18059b800(lVar2);
  }
  return;
}



############ FUN_ 18059d1e0 size=78 ############

void * .?AVSoothe2Header@@::vtbl___AVSoothe2Header__(void *param_1,uint param_2)

{
  undefined8 *puVar1;
  
  puVar1 = *(undefined8 **)((longlong)param_1 + 200);
  if (puVar1 != (undefined8 *)0x0) {
    (**(code **)*puVar1)(puVar1,1);
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18059dcd0 size=353 ############

undefined8 * FUN_18059dcd0(undefined8 *param_1,uint param_2,undefined8 param_3,undefined8 param_4)

{
  uint uVar1;
  undefined8 *puVar2;
  uint *puVar3;
  
  *param_1 = ModeSelector::vftable;
  param_1[0x16] = ModeSelector::vftable;
  param_1[0x19] = ModeSelector::vftable;
  param_1[0x1b] = ModeSelector::vftable;
  param_1[0x1c] = ModeSelector::vftable;
  FUN_1811bc940(param_1[100],param_1 + 0x1b,param_3,param_4,0xfffffffffffffffe);
  puVar3 = (uint *)(param_1[0x66] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar3 = (uint *)(param_1[0x65] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  puVar2 = (undefined8 *)param_1[99];
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
  FUN_18057f3b0(param_1 + 0x1d);
  param_1[0x1c] = ParameterControllingComponent::vftable;
  param_1[0x1b] = ParameterFloat::Listener::vftable;
  puVar3 = (uint *)(param_1[0x1a] + -0x10);
  if ((*puVar3 & 0x30000000) == 0) {
    LOCK();
    uVar1 = *puVar3;
    *puVar3 = *puVar3 - 1;
    UNLOCK();
    if (uVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      free(puVar3);
    }
  }
  FUN_18134caa0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18059de40 size=52 ############

void * FUN_18059de40(void *param_1,ulonglong param_2)

{
  FUN_18163e9d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18059ef30 size=52 ############

void * FUN_18059ef30(void *param_1,ulonglong param_2)

{
  FUN_181a0d280();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a0330 size=43 ############

undefined8 * FUN_1805a0330(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a0380 size=43 ############

undefined8 * FUN_1805a0380(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::detail::sp_counted_base::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a0440 size=52 ############

void * FUN_1805a0440(void *param_1,ulonglong param_2)

{
  FUN_1805a0480();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a05b0 size=52 ############

void * FUN_1805a05b0(void *param_1,ulonglong param_2)

{
  FUN_1805a05f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a0720 size=125 ############

undefined8 * FUN_1805a0720(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::bad_alloc_::vftable;
  param_1[5] = std::exception::vftable;
  __std_exception_destroy(param_1 + 6);
  *param_1 = boost::exception::vftable;
  if ((longlong *)param_1[1] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[1] + 0x20))();
    if (cVar1 != '\0') {
      param_1[1] = 0;
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a0830 size=125 ############

undefined8 * FUN_1805a0830(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::bad_exception_::vftable;
  param_1[5] = std::exception::vftable;
  __std_exception_destroy(param_1 + 6);
  *param_1 = boost::exception::vftable;
  if ((longlong *)param_1[1] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[1] + 0x20))();
    if (cVar1 != '\0') {
      param_1[1] = 0;
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a0950 size=66 ############

undefined8 * FUN_1805a0950(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a5fb0 size=52 ############

void * FUN_1805a5fb0(void *param_1,ulonglong param_2)

{
  FUN_1805a4ee0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a5ff0 size=56 ############

/* Library Function - Single Match
    public: virtual void * __ptr64 __cdecl std::basic_iostream<char,struct std::char_traits<char>
   >::`scalar deleting destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void * __thiscall
std::basic_iostream<char,std::char_traits<char>_>::_scalar_deleting_destructor_
          (basic_iostream<char,std::char_traits<char>_> *this,uint param_1)

{
  basic_iostream<char,std::char_traits<char>_> *_Memory;
  
  _Memory = this + -0x20;
  FUN_1805a5b10(_Memory);
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 1805a6030 size=52 ############

void * FUN_1805a6030(void *param_1,ulonglong param_2)

{
  FUN_1805a5b90();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6070 size=52 ############

void * FUN_1805a6070(void *param_1,ulonglong param_2)

{
  FUN_1805a5c30();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a60b0 size=52 ############

void * FUN_1805a60b0(void *param_1,ulonglong param_2)

{
  FUN_1805a5ce0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a60f0 size=52 ############

void * FUN_1805a60f0(void *param_1,ulonglong param_2)

{
  FUN_1805a5d90();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6130 size=52 ############

void * FUN_1805a6130(void *param_1,ulonglong param_2)

{
  FUN_1805a5e30();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6170 size=125 ############

undefined8 * FUN_1805a6170(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::io::bad_format_string>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((longlong *)param_1[6] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[6] + 0x20))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a61f0 size=124 ############

undefined8 * FUN_1805a61f0(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::lock_error>::vftable;
  param_1[9] = boost::exception::vftable;
  if ((longlong *)param_1[10] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[10] + 0x20))();
    if (cVar1 != '\0') {
      param_1[10] = 0;
    }
  }
  *param_1 = boost::thread_exception::vftable;
  FUN_1805a59c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6270 size=124 ############

undefined8 * FUN_1805a6270(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::thread_resource_error>::vftable;
  param_1[9] = boost::exception::vftable;
  if ((longlong *)param_1[10] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[10] + 0x20))();
    if (cVar1 != '\0') {
      param_1[10] = 0;
    }
  }
  *param_1 = boost::thread_exception::vftable;
  FUN_1805a59c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a62f0 size=125 ############

undefined8 * FUN_1805a62f0(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::io::too_few_args>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((longlong *)param_1[6] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[6] + 0x20))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6370 size=125 ############

undefined8 * FUN_1805a6370(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::io::too_many_args>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((longlong *)param_1[6] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[6] + 0x20))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a63f0 size=43 ############

undefined8 * FUN_1805a63f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::detail::sp_counted_base::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6420 size=52 ############

void * FUN_1805a6420(void *param_1,ulonglong param_2)

{
  FUN_180575800();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6460 size=52 ############

void * FUN_1805a6460(void *param_1,ulonglong param_2)

{
  FUN_1805a55f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a64a0 size=52 ############

void * FUN_1805a64a0(void *param_1,ulonglong param_2)

{
  FUN_1805a5740();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a64e0 size=52 ############

void * FUN_1805a64e0(void *param_1,ulonglong param_2)

{
  FUN_1805a57b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6520 size=66 ############

undefined8 * FUN_1805a6520(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a6570 size=62 ############

undefined8 * FUN_1805a6570(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::thread_exception::vftable;
  FUN_1805a59c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a65b0 size=43 ############

undefined8 * FUN_1805a65b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::detail::sp_counted_base::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805a65e0 size=52 ############

void * FUN_1805a65e0(void *param_1,ulonglong param_2)

{
  FUN_1805a59c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d5820 size=426 ############

longlong * FUN_1805d5820(longlong *param_1,longlong *param_2,longlong *param_3)

{
  void *_Src;
  void *pvVar1;
  longlong lVar2;
  void *pvVar3;
  ulonglong uVar4;
  ulonglong _Size;
  ulonglong uVar5;
  size_t _Size_00;
  
  do {
    if (param_1 == param_2) {
      return param_3;
    }
    if (param_3 != param_1) {
      pvVar1 = (void *)*param_3;
      lVar2 = param_1[1];
      pvVar3 = (void *)*param_1;
      _Size = lVar2 - (longlong)pvVar3;
      uVar4 = param_3[2] - (longlong)pvVar1;
      if (uVar4 < _Size) {
        if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        uVar5 = _Size;
        if ((uVar4 <= 0x7fffffffffffffff - (uVar4 >> 1)) &&
           (uVar5 = uVar4 + (uVar4 >> 1), uVar5 < _Size)) {
          uVar5 = _Size;
        }
        if (pvVar1 != (void *)0x0) {
          pvVar3 = pvVar1;
          if ((0xfff < uVar4) &&
             (pvVar3 = *(void **)((longlong)pvVar1 + -8),
             0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar3);
        }
        *param_3 = 0;
        param_3[1] = 0;
        param_3[2] = 0;
        if (uVar5 != 0) {
          if (0x7fffffffffffffff < uVar5) {
                    /* WARNING: Subroutine does not return */
            FUN_1805a69c0();
          }
          lVar2 = FUN_1805bc8b0(param_3,uVar5);
          *param_3 = lVar2;
          param_3[1] = lVar2;
          param_3[2] = *param_3 + uVar5;
        }
        pvVar1 = (void *)*param_3;
        memmove(pvVar1,pvVar3,_Size);
        param_3[1] = _Size + (longlong)pvVar1;
      }
      else if ((ulonglong)(param_3[1] - (longlong)pvVar1) < _Size) {
        _Src = (void *)((param_3[1] - (longlong)pvVar1) + (longlong)pvVar3);
        memmove(pvVar1,pvVar3,(longlong)_Src - (longlong)pvVar3);
        pvVar1 = (void *)param_3[1];
        _Size_00 = lVar2 - (longlong)_Src;
        memmove(pvVar1,_Src,_Size_00);
        param_3[1] = _Size_00 + (longlong)pvVar1;
      }
      else {
        memmove(pvVar1,pvVar3,_Size);
        param_3[1] = _Size + (longlong)pvVar1;
      }
    }
    param_3 = param_3 + 3;
    param_1 = param_1 + 3;
  } while( true );
}



############ FUN_ 1805aec70 size=114 ############

undefined8 * FUN_1805aec70(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::system::system_error>::vftable;
  param_1[9] = boost::exception::vftable;
  if ((longlong *)param_1[10] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[10] + 0x20))();
    if (cVar1 != '\0') {
      param_1[10] = 0;
    }
  }
  FUN_1805a59c0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805aed80 size=52 ############

void * FUN_1805aed80(void *param_1,ulonglong param_2)

{
  FUN_1805aedc0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805aff70 size=542 ############

longlong FUN_1805aff70(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  void *_Memory;
  longlong lVar10;
  longlong lVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar2 = *param_1;
  lVar10 = (param_1[1] - lVar2) / 0x2f0;
  if (lVar10 == 0x572620ae4c415c) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar10 + 1;
  uVar5 = (param_1[2] - lVar2) / 0x2f0;
  uVar9 = uVar1;
  if ((uVar5 <= 0x572620ae4c415c - (uVar5 >> 1)) && (uVar9 = (uVar5 >> 1) + uVar5, uVar9 < uVar1)) {
    uVar9 = uVar1;
  }
  lVar6 = FUN_1805bc990(param_1,uVar9);
  lVar7 = ((param_2 - lVar2) / 0x2f0) * 0x2f0;
  lVar2 = lVar7 + lVar6 + 0x2f0;
  lVar10 = lVar2;
  lVar11 = lVar6;
  FUN_1805b4bc0(lVar7 + lVar6,param_3);
  if (param_2 == param_1[1]) {
    FUN_1805b1630(*param_1,param_1[1],lVar6,param_1);
  }
  else {
    FUN_1805bc330(param_1,*param_1,param_2,lVar6,lVar7,lVar10,lVar11,uVar12);
    FUN_1805bc330(param_1,param_2,param_1[1],lVar2);
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 != (undefined8 *)0x0) {
    puVar3 = (undefined8 *)param_1[1];
    for (; puVar8 != puVar3; puVar8 = puVar8 + 0x5e) {
      (**(code **)*puVar8)(puVar8,0);
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x2f0) * 0x2f0)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar6;
  param_1[1] = uVar1 * 0x2f0 + lVar6;
  param_1[2] = uVar9 * 0x2f0 + lVar6;
  return *param_1 + lVar7;
}



############ FUN_ 1805b0670 size=471 ############

longlong FUN_1805b0670(longlong *param_1,longlong param_2,longlong param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  void *_Memory;
  undefined8 *puVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 uVar9;
  
  uVar9 = 0xfffffffffffffffe;
  lVar8 = *param_1;
  lVar5 = param_1[1] - lVar8 >> 6;
  if (lVar5 == 0x3ffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar6 = lVar5 + 1;
  uVar2 = param_1[2] - lVar8 >> 6;
  uVar4 = uVar6;
  if ((uVar2 <= 0x3ffffffffffffff - (uVar2 >> 1)) && (uVar4 = (uVar2 >> 1) + uVar2, uVar4 < uVar6))
  {
    uVar4 = uVar6;
  }
  lVar5 = FUN_1805bcb10(param_1,uVar4);
  uVar2 = param_2 - lVar8 & 0xffffffffffffffc0;
  puVar3 = (undefined8 *)(uVar2 + lVar5);
  puVar7 = puVar3 + 8;
  *puVar3 = pace::eden::thrift::pub::WrapperAuthProduct::vftable;
  *(undefined4 *)(puVar3 + 1) = *(undefined4 *)(param_3 + 8);
  *(undefined4 *)((longlong)puVar3 + 0xc) = *(undefined4 *)(param_3 + 0xc);
  *(undefined1 *)(puVar3 + 2) = *(undefined1 *)(param_3 + 0x10);
  *(undefined1 *)((longlong)puVar3 + 0x11) = *(undefined1 *)(param_3 + 0x11);
  lVar8 = lVar5;
  FUN_1805a4070(puVar3 + 3,param_3 + 0x18);
  *(undefined4 *)(puVar3 + 7) = *(undefined4 *)(param_3 + 0x38);
  *(undefined1 *)((longlong)puVar3 + 0x3c) = *(undefined1 *)(param_3 + 0x3c);
  if (param_2 == param_1[1]) {
    FUN_1805b17b0(*param_1,param_1[1],lVar5,param_1);
  }
  else {
    FUN_1805bc4b0(param_1,*param_1,param_2,lVar5,uVar2,puVar7,lVar8,uVar9);
    FUN_1805bc4b0(param_1,param_2,param_1[1],puVar3 + 8);
  }
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 != (undefined8 *)0x0) {
    puVar3 = (undefined8 *)param_1[1];
    for (; puVar7 != puVar3; puVar7 = puVar7 + 8) {
      (**(code **)*puVar7)(puVar7,0);
    }
    pvVar1 = (void *)*param_1;
    _Memory = pvVar1;
    if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xffffffffffffffc0U)) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar5;
  param_1[1] = uVar6 * 0x40 + lVar5;
  param_1[2] = uVar4 * 0x40 + lVar5;
  return *param_1 + uVar2;
}



############ FUN_ 1805b10b0 size=624 ############

void FUN_1805b10b0(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  longlong lVar7;
  undefined8 *puVar8;
  longlong lVar9;
  void *_Memory;
  ulonglong uVar10;
  longlong lVar11;
  undefined8 uVar12;
  longlong lVar13;
  
  uVar12 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)param_1[1];
  lVar7 = *param_1;
  uVar3 = ((longlong)puVar5 - lVar7) / 0x438;
  uVar2 = (param_1[2] - lVar7) / 0x438;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar3) {
      if (param_2 != uVar3) {
        puVar8 = (undefined8 *)(param_2 * 0x438 + lVar7);
        for (puVar6 = puVar8; puVar6 != puVar5; puVar6 = puVar6 + 0x87) {
          (**(code **)*puVar6)(puVar6,0);
        }
        param_1[1] = (longlong)puVar8;
      }
      return;
    }
    for (lVar7 = param_2 - uVar3; lVar7 != 0; lVar7 = lVar7 + -1) {
      FUN_1805b5060(puVar5);
      puVar5 = puVar5 + 0x87;
    }
    param_1[1] = (longlong)puVar5;
    return;
  }
  if (0x3cae759203cae7 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x3cae759203cae7 - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  lVar4 = FUN_1805bca10(param_1,uVar10);
  lVar9 = uVar3 * 0x438 + lVar4;
  lVar7 = lVar9;
  lVar13 = lVar9;
  for (lVar11 = param_2 - uVar3; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_1805b5060(lVar9);
    lVar9 = lVar9 + 0x438;
  }
  FUN_1805b16b0(*param_1,param_1[1],lVar4,param_1,lVar4,lVar7,uVar12,lVar13,lVar9,param_3);
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 == (undefined8 *)0x0) {
    *param_1 = lVar4;
    param_1[1] = param_2 * 0x438 + lVar4;
    param_1[2] = uVar10 * 0x438 + lVar4;
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar5 != puVar6; puVar5 = puVar5 + 0x87) {
    (**(code **)*puVar5)(puVar5,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x438) * 0x438)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805b1a40 size=305 ############

void FUN_1805b1a40(undefined8 *param_1,void *param_2,longlong param_3)

{
  void *pvVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong _Size;
  ulonglong uVar4;
  
  pvVar1 = (void *)*param_1;
  _Size = param_3 - (longlong)param_2;
  uVar3 = param_1[2] - (longlong)pvVar1;
  if (uVar3 < _Size) {
    if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = _Size;
    if ((uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1)) &&
       (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < _Size)) {
      uVar4 = _Size;
    }
    if (pvVar1 != (void *)0x0) {
      pvVar2 = pvVar1;
      if ((0xfff < uVar3) &&
         (pvVar2 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    FUN_1805bbbc0(param_1,uVar4);
    pvVar1 = (void *)*param_1;
    memmove(pvVar1,param_2,_Size);
    param_1[1] = _Size + (longlong)pvVar1;
  }
  else if ((ulonglong)(param_1[1] - (longlong)pvVar1) < _Size) {
    pvVar2 = (void *)((param_1[1] - (longlong)pvVar1) + (longlong)param_2);
    memmove(pvVar1,param_2,(longlong)pvVar2 - (longlong)param_2);
    pvVar1 = (void *)param_1[1];
    memmove(pvVar1,pvVar2,param_3 - (longlong)pvVar2);
    param_1[1] = (param_3 - (longlong)pvVar2) + (longlong)pvVar1;
  }
  else {
    memmove(pvVar1,param_2,_Size);
    param_1[1] = (longlong)pvVar1 + _Size;
  }
  return;
}



############ FUN_ 1805b84f0 size=404 ############

void FUN_1805b84f0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::IlokInfo::vftable;
  if (0xf < (ulonglong)param_1[0x28]) {
    pvVar1 = (void *)param_1[0x25];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x28] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x28] = 0xf;
  param_1[0x27] = 0;
  *(undefined1 *)(param_1 + 0x25) = 0;
  FUN_1805b96f0(param_1 + 0x12);
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x10] = 0;
  param_1[0x11] = 0xf;
  *(undefined1 *)(param_1 + 0xe) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if ((ulonglong)param_1[8] < 0x10) {
    param_1[7] = 0;
    param_1[8] = 0xf;
    *(undefined1 *)(param_1 + 5) = 0;
    param_1[1] = pace::eden::thrift::pub::IlokIdentifier::vftable;
    return;
  }
  pvVar1 = (void *)param_1[5];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[8] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b8c10 size=1227 ############

void FUN_1805b8c10(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::RemoteLicenseClient::vftable;
  if (0xf < (ulonglong)param_1[0x39]) {
    pvVar1 = (void *)param_1[0x36];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x39] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x39] = 0xf;
  param_1[0x38] = 0;
  *(undefined1 *)(param_1 + 0x36) = 0;
  if (0xf < (ulonglong)param_1[0x31]) {
    pvVar1 = (void *)param_1[0x2e];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x31] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x30] = 0;
  param_1[0x31] = 0xf;
  *(undefined1 *)(param_1 + 0x2e) = 0;
  if (0xf < (ulonglong)param_1[0x2c]) {
    pvVar1 = (void *)param_1[0x29];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x2c] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x2b] = 0;
  param_1[0x2c] = 0xf;
  *(undefined1 *)(param_1 + 0x29) = 0;
  if (0xf < (ulonglong)param_1[0x28]) {
    pvVar1 = (void *)param_1[0x25];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x28] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x27] = 0;
  param_1[0x28] = 0xf;
  *(undefined1 *)(param_1 + 0x25) = 0;
  if (0xf < (ulonglong)param_1[0x24]) {
    pvVar1 = (void *)param_1[0x21];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x24] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x23] = 0;
  param_1[0x24] = 0xf;
  *(undefined1 *)(param_1 + 0x21) = 0;
  if (0xf < (ulonglong)param_1[0x20]) {
    pvVar1 = (void *)param_1[0x1d];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x20] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1f] = 0;
  param_1[0x20] = 0xf;
  *(undefined1 *)(param_1 + 0x1d) = 0;
  if (0xf < (ulonglong)param_1[0x1c]) {
    pvVar1 = (void *)param_1[0x19];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1c] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1b] = 0;
  param_1[0x1c] = 0xf;
  *(undefined1 *)(param_1 + 0x19) = 0;
  if (0xf < (ulonglong)param_1[0x18]) {
    pvVar1 = (void *)param_1[0x15];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x18] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x17] = 0;
  param_1[0x18] = 0xf;
  *(undefined1 *)(param_1 + 0x15) = 0;
  if (0xf < (ulonglong)param_1[0x14]) {
    pvVar1 = (void *)param_1[0x11];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x14] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x13] = 0;
  param_1[0x14] = 0xf;
  *(undefined1 *)(param_1 + 0x11) = 0;
  if (0xf < (ulonglong)param_1[0x10]) {
    pvVar1 = (void *)param_1[0xd];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xf] = 0;
  param_1[0x10] = 0xf;
  *(undefined1 *)(param_1 + 0xd) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805b90f0 size=187 ############

void FUN_1805b90f0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::pub::SharedLicenseStatSample::vftable;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805bad80 size=127 ############

longlong * FUN_1805bad80(longlong *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < param_1[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805bae00 size=52 ############

void * FUN_1805bae00(void *param_1,ulonglong param_2)

{
  FUN_1805baa60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bae40 size=52 ############

void * FUN_1805bae40(void *param_1,ulonglong param_2)

{
  FUN_1805bab00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bae80 size=52 ############

void * FUN_1805bae80(void *param_1,ulonglong param_2)

{
  FUN_1805baba0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805baec0 size=52 ############

void * FUN_1805baec0(void *param_1,ulonglong param_2)

{
  FUN_1805bac40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805baf00 size=125 ############

undefined8 * FUN_1805baf00(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_month>::
             vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805baf80 size=125 ############

undefined8 * FUN_1805baf80(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::gregorian::bad_month>::vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb000 size=125 ############

undefined8 * FUN_1805bb000(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::gregorian::bad_year>::vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb080 size=125 ############

undefined8 * FUN_1805bb080(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<std::runtime_error>::vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb100 size=52 ############

void * FUN_1805bb100(void *param_1,ulonglong param_2)

{
  FUN_1805b7480();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb140 size=52 ############

void * FUN_1805bb140(void *param_1,ulonglong param_2)

{
  FUN_1805753e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb180 size=52 ############

void * FUN_1805bb180(void *param_1,ulonglong param_2)

{
  FUN_1805b7720();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb1c0 size=52 ############

void * FUN_1805bb1c0(void *param_1,ulonglong param_2)

{
  FUN_1805b7ad0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb200 size=78 ############

undefined8 * FUN_1805bb200(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::pub::AuthSituation::vftable;
  FUN_1805b7720(param_1 + 0x90);
  FUN_1805b8780(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb250 size=52 ############

void * FUN_1805bb250(void *param_1,ulonglong param_2)

{
  FUN_1805b7bd0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb290 size=52 ############

void * FUN_1805bb290(void *param_1,ulonglong param_2)

{
  FUN_1805b7c40();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb2d0 size=52 ############

void * FUN_1805bb2d0(void *param_1,ulonglong param_2)

{
  FUN_1805b7d00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb310 size=52 ############

void * FUN_1805bb310(void *param_1,ulonglong param_2)

{
  FUN_1805b7dc0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb350 size=52 ############

void * FUN_1805bb350(void *param_1,ulonglong param_2)

{
  FUN_1805b7e80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb390 size=66 ############

undefined8 * FUN_1805bb390(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::fusion::DynamicCryptoLicenseData::vftable;
  FUN_1805b7370(param_1 + 4);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb3e0 size=52 ############

void * FUN_1805bb3e0(void *param_1,ulonglong param_2)

{
  FUN_1805b7f60();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb420 size=52 ############

void * FUN_1805bb420(void *param_1,ulonglong param_2)

{
  FUN_1805b8040();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb460 size=52 ############

void * FUN_1805bb460(void *param_1,ulonglong param_2)

{
  FUN_1805b8100();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb4a0 size=52 ############

void * FUN_1805bb4a0(void *param_1,ulonglong param_2)

{
  FUN_1805b8220();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb4e0 size=43 ############

undefined8 * FUN_1805bb4e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb510 size=52 ############

void * FUN_1805bb510(void *param_1,ulonglong param_2)

{
  FUN_1805b84f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb550 size=52 ############

void * FUN_1805bb550(void *param_1,ulonglong param_2)

{
  FUN_1805b8690();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb590 size=52 ############

void * FUN_1805bb590(void *param_1,ulonglong param_2)

{
  FUN_1805b8700();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb5d0 size=52 ############

void * FUN_1805bb5d0(void *param_1,ulonglong param_2)

{
  FUN_1805b8780();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb610 size=139 ############

undefined8 * FUN_1805bb610(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::pub::Media::vftable;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)param_1[1];
  _Memory = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805bb6a0 size=75 ############

undefined8 * FUN_1805bb6a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::fusion::PaceEdenLicenseData::vftable;
  FUN_1805b94d0(param_1 + 0xb);
  FUN_1805a5740(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb6f0 size=62 ############

undefined8 * FUN_1805bb6f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::PaceLocationInfoFormatter::vftable;
  FUN_1805a57b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb730 size=52 ############

void * FUN_1805bb730(void *param_1,ulonglong param_2)

{
  FUN_1805b8c10();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb770 size=52 ############

void * FUN_1805bb770(void *param_1,ulonglong param_2)

{
  FUN_180574c80();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb7b0 size=52 ############

void * FUN_1805bb7b0(void *param_1,ulonglong param_2)

{
  FUN_180575070();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb7f0 size=52 ############

void * FUN_1805bb7f0(void *param_1,ulonglong param_2)

{
  FUN_1805b90f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb830 size=52 ############

void * FUN_1805bb830(void *param_1,ulonglong param_2)

{
  FUN_1805b91b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb870 size=52 ############

void * FUN_1805bb870(void *param_1,ulonglong param_2)

{
  FUN_1805b9270();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb8b0 size=43 ############

undefined8 * FUN_1805bb8b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::pub::TimePeriod::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb8e0 size=52 ############

void * FUN_1805bb8e0(void *param_1,ulonglong param_2)

{
  FUN_1805b93e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb920 size=43 ############

undefined8 * FUN_1805bb920(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::pub::VerifyAuthOptions::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb950 size=52 ############

void * FUN_1805bb950(void *param_1,ulonglong param_2)

{
  FUN_1805b9460();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb990 size=52 ############

void * FUN_1805bb990(void *param_1,ulonglong param_2)

{
  FUN_1805b94d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bb9d0 size=52 ############

void * FUN_1805bb9d0(void *param_1,ulonglong param_2)

{
  FUN_1805b96f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bba10 size=43 ############

undefined8 * FUN_1805bba10(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::system::error_category::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805bcc90 size=290 ############

longlong * FUN_1805bcc90(longlong *param_1,void *param_2,ulonglong param_3)

{
  ulonglong uVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  void *_Memory;
  ulonglong uVar5;
  longlong *_Dst;
  
  uVar2 = param_1[3];
  if (uVar2 < param_3) {
    if (0x7ffffffffffffffe < param_3) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a6980();
    }
    uVar4 = param_3 | 7;
    uVar5 = 0x7ffffffffffffffe;
    if (((uVar4 < 0x7fffffffffffffff) && (uVar2 <= 0x7ffffffffffffffe - (uVar2 >> 1))) &&
       (uVar1 = (uVar2 >> 1) + uVar2, uVar5 = uVar4, uVar4 < uVar1)) {
      uVar5 = uVar1;
    }
    pvVar3 = (void *)FUN_1805bcc10(param_1,uVar5 + 1);
    param_1[3] = uVar5;
    param_1[2] = param_3;
    memcpy(pvVar3,param_2,param_3 * 2);
    *(undefined2 *)(param_3 * 2 + (longlong)pvVar3) = 0;
    if (7 < uVar2) {
      pvVar3 = (void *)*param_1;
      _Memory = pvVar3;
      if ((0xfff < uVar2 * 2 + 2) &&
         (_Memory = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_1 = (longlong)pvVar3;
  }
  else {
    _Dst = param_1;
    if (7 < uVar2) {
      _Dst = (longlong *)*param_1;
    }
    param_1[2] = param_3;
    memmove(_Dst,param_2,param_3 * 2);
    *(undefined2 *)(param_3 * 2 + (longlong)_Dst) = 0;
  }
  return param_1;
}



############ FUN_ 1805bdf40 size=8397 ############

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_1805bdf40(char param_1,char param_2,char param_3,char param_4,longlong *param_5,
                  longlong *param_6,size_t *param_7,undefined1 *param_8,undefined8 param_9,
                  undefined8 *param_10)

{
  longlong *plVar1;
  int *piVar2;
  size_t sVar3;
  ulonglong uVar4;
  longlong lVar5;
  bool bVar6;
  longlong lVar7;
  int iVar8;
  undefined8 uVar9;
  ulonglong uVar10;
  undefined8 *puVar11;
  size_t *psVar12;
  undefined8 *puVar13;
  longlong *plVar14;
  void *pvVar15;
  undefined8 *******pppppppuVar16;
  size_t sVar17;
  void *pvVar18;
  undefined1 *puVar19;
  undefined8 *******pppppppuVar20;
  undefined8 *******pppppppuVar21;
  uint uVar22;
  undefined1 auStack_2578 [32];
  size_t local_2558;
  undefined1 local_2550;
  uint local_2548;
  size_t *local_2540;
  longlong local_2538;
  longlong lStack_2530;
  longlong local_2528;
  size_t local_2520;
  size_t *local_2518;
  ulonglong local_2510;
  undefined8 local_2508;
  longlong lStack_2500;
  longlong local_24f8;
  longlong local_24f0;
  longlong lStack_24e8;
  undefined8 local_24e0;
  undefined8 *local_24d8;
  ulonglong local_24d0;
  undefined1 *local_24c8;
  undefined8 local_24c0;
  longlong *local_24b8;
  longlong *local_24b0;
  undefined1 local_24a8 [16];
  longlong local_2498;
  undefined8 local_2490;
  undefined8 *******local_2488;
  longlong lStack_2480;
  longlong local_2478;
  ulonglong uStack_2470;
  undefined8 *******local_2468;
  undefined8 uStack_2460;
  undefined8 local_2458;
  undefined8 uStack_2450;
  undefined8 local_2448 [2];
  ulonglong local_2438;
  ulonglong uStack_2430;
  undefined1 local_2428;
  undefined7 uStack_2427;
  longlong local_2418;
  ulonglong local_2410;
  undefined1 local_2408 [16];
  undefined8 local_23f8;
  undefined8 local_23f0;
  undefined1 local_23e8;
  undefined7 uStack_23e7;
  undefined8 local_23d8;
  ulonglong local_23d0;
  undefined8 *******local_23c8 [2];
  longlong local_23b8;
  ulonglong local_23b0;
  undefined1 local_23a8;
  undefined7 uStack_23a7;
  longlong local_2398;
  ulonglong local_2390;
  undefined1 local_2388 [16];
  undefined8 local_2378;
  undefined8 local_2370;
  undefined1 local_2368 [16];
  undefined8 local_2358;
  undefined8 local_2350;
  undefined1 local_2348 [16];
  undefined8 local_2338;
  undefined8 local_2330;
  undefined1 local_2328 [16];
  undefined8 local_2318;
  undefined8 local_2310;
  undefined8 *******local_2308;
  longlong lStack_2300;
  longlong local_22f8;
  ulonglong uStack_22f0;
  undefined8 *******local_22e8 [2];
  undefined8 local_22d8;
  ulonglong local_22d0;
  undefined8 *******local_22c8 [2];
  undefined8 local_22b8;
  ulonglong local_22b0;
  undefined8 *******local_22a8 [2];
  undefined8 local_2298;
  ulonglong local_2290;
  undefined8 *******local_2288 [2];
  undefined8 local_2278;
  ulonglong local_2270;
  undefined8 *******local_2268 [2];
  undefined8 local_2258;
  ulonglong local_2250;
  undefined8 *******local_2248 [2];
  undefined8 local_2238;
  ulonglong local_2230;
  undefined8 *******local_2228 [2];
  undefined8 local_2218;
  ulonglong local_2210;
  undefined8 *******local_2208 [2];
  undefined8 local_21f8;
  ulonglong local_21f0;
  undefined8 *******local_21e8 [2];
  undefined8 local_21d8;
  ulonglong local_21d0;
  undefined8 *******local_21c8 [2];
  undefined8 local_21b8;
  ulonglong local_21b0;
  undefined8 *******local_21a8 [2];
  undefined8 local_2198;
  ulonglong local_2190;
  undefined8 *******local_2188 [2];
  undefined8 local_2178;
  ulonglong local_2170;
  undefined8 *******local_2168 [2];
  undefined8 local_2158;
  ulonglong local_2150;
  undefined8 *******local_2148 [2];
  undefined8 local_2138;
  ulonglong local_2130;
  undefined8 *******local_2128 [2];
  undefined8 local_2118;
  ulonglong local_2110;
  undefined8 *******local_2108 [2];
  undefined8 local_20f8;
  ulonglong local_20f0;
  undefined8 *******local_20e8 [2];
  undefined8 local_20d8;
  ulonglong local_20d0;
  undefined1 local_20c8 [16];
  undefined8 local_20b8;
  undefined8 local_20b0;
  undefined8 *******local_20a8;
  undefined8 uStack_20a0;
  ulonglong local_2098;
  size_t *psStack_2090;
  undefined8 *******local_2088;
  longlong lStack_2080;
  longlong local_2078;
  ulonglong uStack_2070;
  undefined8 local_2068;
  undefined8 uStack_2060;
  undefined4 local_2058;
  undefined4 uStack_2054;
  undefined4 uStack_2050;
  undefined4 uStack_204c;
  undefined8 *******local_2048;
  undefined8 uStack_2040;
  undefined4 local_2038;
  undefined4 uStack_2034;
  undefined4 uStack_2030;
  undefined4 uStack_202c;
  undefined8 *******local_2028;
  undefined8 uStack_2020;
  undefined4 local_2018;
  undefined4 uStack_2014;
  undefined4 uStack_2010;
  undefined4 uStack_200c;
  undefined1 local_2008 [8];
  undefined4 local_2000;
  undefined4 local_1ffc;
  undefined4 local_1ff4;
  undefined8 local_1fc8;
  undefined8 local_1fb8;
  undefined1 local_1fb0 [56];
  undefined2 local_1f78;
  undefined1 local_1f58 [32];
  undefined1 local_1f38 [32];
  undefined1 local_1f18 [32];
  undefined1 local_1ef8 [32];
  undefined1 local_1ed8 [88];
  undefined8 local_1e80;
  undefined1 local_1e68 [272];
  undefined1 local_1d58 [272];
  undefined1 local_1c48 [272];
  undefined1 local_1b38 [272];
  undefined1 local_1a28 [272];
  undefined1 local_1918 [272];
  undefined1 local_1808 [272];
  undefined1 local_16f8 [272];
  undefined1 local_15e8 [272];
  undefined1 local_14d8 [272];
  undefined1 local_13c8 [272];
  undefined1 local_12b8 [272];
  undefined1 local_11a8 [272];
  undefined1 local_1098 [272];
  undefined1 local_f88 [272];
  undefined1 local_e78 [272];
  undefined1 local_d68 [272];
  undefined1 local_c58 [272];
  undefined1 local_b48 [272];
  undefined1 local_a38 [272];
  undefined **local_928;
  int local_920;
  undefined1 local_918 [1136];
  undefined1 local_4a8 [1088];
  ulonglong local_68;
  
  local_24c0 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_2578;
  local_24b8 = param_5;
  local_24b0 = param_6;
  local_2518 = param_7;
  local_24c8 = param_8;
  local_24d8 = param_10;
  local_2548 = 0;
  *param_8 = 0;
  local_2538 = 0;
  lStack_2530 = 0;
  local_2528 = 0;
  local_2540 = (size_t *)param_7[1];
  bVar6 = true;
  for (sVar17 = *param_7; (local_2520 = sVar17, bVar6 && ((size_t *)sVar17 != local_2540));
      sVar17 = sVar17 + 0x8c0) {
    bVar6 = false;
    FUN_1805b5540(&local_928,sVar17);
    while (!bVar6) {
      if (local_920 == 0xf) {
        local_2508 = 0;
        lStack_2500 = 0;
        local_24f8 = 0;
        FUN_1805b5490(local_2008);
        local_24f0 = 0;
        lStack_24e8 = 0;
        local_24e0 = 0;
        FUN_1805b57c0(local_1ed8);
        local_1e80 = param_9;
        sVar3 = *local_2518;
        local_2000 = *(undefined4 *)(sVar3 + 0x474);
        local_1ffc = *(undefined4 *)(sVar3 + 0x478);
        local_1ff4 = *(undefined4 *)(sVar3 + 0x47c);
        local_1fc8 = *(undefined8 *)(sVar3 + 0x18);
        local_1fb8 = *(undefined8 *)(sVar3 + 0x20);
        plVar14 = (longlong *)(sVar3 + 0x28);
        if ((longlong *)local_1fb0 != plVar14) {
          if (0xf < *(ulonglong *)(sVar3 + 0x40)) {
            plVar14 = (longlong *)*plVar14;
          }
          FUN_1805a6cb0(local_1fb0,plVar14,*(undefined8 *)(sVar3 + 0x38));
        }
        local_1f78 = 0x100;
        if (local_24f8 == lStack_2500) {
          FUN_1805b0190(&local_2508,lStack_2500,local_2008);
        }
        else {
          FUN_1805b53c0(lStack_2500,local_2008);
          lStack_2500 = lStack_2500 + 0xa8;
        }
        local_2558 = 0;
        FUN_18069bc20(*param_10,&local_2508,local_1ed8,&local_24f0);
        if ((lStack_24e8 - local_24f0) / 0x2f0 != 0) {
          FUN_1806bb800(*param_10,local_24f0,0,0x80000000);
          FUN_1805b8040(local_1ed8);
          FUN_1805bc0b0(&local_24f0);
          FUN_1805b7ad0(local_2008);
          FUN_1805b72a0(&local_2508);
          local_928 = pace::eden::thrift::pub::AuthSituation::vftable;
          FUN_1805b7720(local_4a8);
          FUN_1805b8780(local_918);
          FUN_180575f30(&local_2538);
          FUN_180485450(param_5);
          FUN_180485450(param_6);
          FUN_1805a4e80(param_10);
        }
        FUN_1805b8040(local_1ed8);
        FUN_1805bc0b0(&local_24f0);
        FUN_1805b7ad0(local_2008);
        FUN_1805b72a0(&local_2508);
        bVar6 = true;
      }
      else if (local_2528 == lStack_2530) {
        FUN_1805b0450(&local_2538,lStack_2530,&local_928);
        bVar6 = true;
      }
      else {
        FUN_1805b5540(lStack_2530,&local_928);
        lStack_2530 = lStack_2530 + 0x8c0;
        bVar6 = true;
      }
    }
    local_928 = pace::eden::thrift::pub::AuthSituation::vftable;
    FUN_1805b7720(local_4a8);
    FUN_1805b8780(local_918);
  }
  if (param_1 == '\0') {
    FUN_180575f30(&local_2538);
    if (0xf < (ulonglong)param_5[3]) {
      pvVar18 = (void *)*param_5;
      pvVar15 = pvVar18;
      if ((0xfff < param_5[3] + 1U) &&
         (pvVar15 = *(void **)((longlong)pvVar18 + -8),
         0x1f < (ulonglong)((longlong)pvVar18 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar15);
    }
    param_5[2] = 0;
    param_5[3] = 0xf;
    *(undefined1 *)param_5 = 0;
    if ((ulonglong)param_6[3] < 0x10) {
      param_6[2] = 0;
      param_6[3] = 0xf;
      *(undefined1 *)param_6 = 0;
      plVar14 = (longlong *)param_10[1];
      if (plVar14 == (longlong *)0x0) {
      }
      LOCK();
      plVar1 = plVar14 + 1;
      lVar7 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar7 != 1) {
      }
      (**(code **)(*plVar14 + 8))(plVar14);
      LOCK();
      piVar2 = (int *)((longlong)plVar14 + 0xc);
      iVar8 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar8 != 1) {
      }
      (**(code **)(*plVar14 + 0x10))(plVar14);
    }
    pvVar18 = (void *)*param_6;
    pvVar15 = pvVar18;
    if ((0xfff < param_6[3] + 1U) &&
       (pvVar15 = *(void **)((longlong)pvVar18 + -8),
       0x1f < (ulonglong)((longlong)pvVar18 + (-8 - (longlong)pvVar15)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar15);
  }
  if (param_5[2] == 0) {
    FUN_1805a6cb0(param_5,"this software",0xd);
  }
  local_20b8 = 0;
  local_20b0 = 0xf;
  local_20c8[0] = 0;
  FUN_1805a6cb0(local_20c8,"Authorization Required",0x16);
  local_2458 = 0;
  uStack_2450 = 0xf;
  local_2468 = (undefined8 *******)((ulonglong)local_2468 & 0xffffffffffffff00);
  local_2318 = 0;
  local_2310 = 0xf;
  local_2328[0] = 0;
  FUN_1805a6cb0(local_2328,&DAT_181bb1f38,1);
  if (param_3 != '\0') {
    FUN_1805a6cb0(local_2328," or open a cloud session with a license for this software,",0x3a);
  }
  if (param_2 == '\0') {
    uVar9 = FUN_1805a3f20(local_1d58,
                          "Please insert an iLok with a license for %s%s and then press the \"OK\" button to continue using this software. Press \"Cancel\" to stop using this software."
                         );
    uVar9 = FUN_1805b2240(uVar9,param_5);
    uVar9 = FUN_1805b2240(uVar9,local_2328);
    FUN_1805ae640(uVar9,&local_2028);
    uVar22 = 2;
    FUN_180485450(&local_2468);
    local_2468 = local_2028;
    uStack_2460 = uStack_2020;
    local_2458 = CONCAT44(uStack_2014,local_2018);
    uStack_2450 = CONCAT44(uStack_200c,uStack_2010);
    puVar19 = local_1d58;
  }
  else {
    uVar9 = FUN_1805a3f20(local_1e68,
                          "Please insert an iLok with a license for %s or activate a license for %s to your computer%s and then press the \"OK\" button to continue using this software. Press \"Cancel\" to stop using this software."
                         );
    uVar9 = FUN_1805b2240(uVar9,param_5);
    uVar9 = FUN_1805b2240(uVar9,param_5);
    uVar9 = FUN_1805b2240(uVar9,local_2328);
    FUN_1805ae640(uVar9,&local_2048);
    uVar22 = 1;
    FUN_180485450(&local_2468);
    local_2468 = local_2048;
    uStack_2460 = uStack_2040;
    local_2458 = CONCAT44(uStack_2034,local_2038);
    uStack_2450 = CONCAT44(uStack_202c,uStack_2030);
    puVar19 = local_1e68;
  }
  FUN_1805a4fa0(puVar19);
  if (param_4 == '\0') {
    if (uStack_2450 - local_2458 < 0x4a) {
      local_2558 = 0x4a;
      FUN_1805a1320(&local_2468,0x4a,0,
                    "\n\nNote that this product is not compatible with the first-generation iLok.");
    }
    else {
      pppppppuVar16 = &local_2468;
      if (0xf < uStack_2450) {
        pppppppuVar16 = local_2468;
      }
      pvVar18 = (void *)((longlong)pppppppuVar16 + local_2458);
      local_2458 = local_2458 + 0x4a;
      memmove(pvVar18,"\n\nNote that this product is not compatible with the first-generation iLok."
              ,0x4a);
      *(undefined1 *)((longlong)pvVar18 + 0x4a) = 0;
    }
  }
  if ((lStack_2530 - local_2538) / 0x8c0 == 0) goto LAB_1805bff94;
  local_2478 = 0;
  uStack_2470 = 0xf;
  local_2488 = (undefined8 *******)((ulonglong)local_2488 & 0xffffffffffffff00);
  local_2378 = 0;
  local_2370 = 0xf;
  local_2388[0] = 0;
  local_23f8 = 0;
  local_23f0 = 0xf;
  local_2408[0] = 0;
  local_2498 = 0;
  local_2490 = 0xf;
  local_24a8[0] = 0;
  local_23d8 = 0;
  local_23d0 = 0xf;
  local_23e8 = 0;
  uVar10 = FUN_1806a68d0(*param_10);
  local_24d0 = uVar10;
  sVar17 = FUN_1806a4f70(*param_10);
  local_2520 = sVar17;
  local_2510 = FUN_1806a7ae0(*param_10);
  if (((uVar10 & *(ulonglong *)(local_2538 + 0x18)) == 0) ||
     (*(ulonglong *)(local_2538 + 0x18) == 0x80)) {
    FUN_1805a6cb0(local_2388,&DAT_181bb21d4,4);
    FUN_1805a6cb0(local_2408,&DAT_181bb21dc,4);
  }
  else {
    FUN_1805a6cb0(&local_2488,"iLok License Server",0x13);
    FUN_1805a6cb0(local_2388,&DAT_181bb2154,3);
    FUN_1805a6cb0(local_2408,&DAT_181bb2158,3);
    FUN_1805a6cb0(local_24a8,"Please contact your iLok License Server\'s administrator for help",
                  0x40);
    lVar7 = local_2538;
    if (*(char *)(local_2538 + 0x450) != '\0') {
      puVar11 = (undefined8 *)(local_2538 + 0x58);
      if (*(longlong *)(local_2538 + 0x68) != 0) {
        local_2438 = 0;
        uStack_2430 = 0xf;
        local_2448[0]._0_1_ = 0;
        local_2548 = uVar22 | 4;
        psVar12 = (size_t *)(local_2538 + 0x68);
        local_2540 = psVar12;
        if (0xf < *psVar12 + 2) {
          FUN_1805a14a0(local_2448,*psVar12 + 2,0);
        }
        local_2438 = 0;
        if (uStack_2430 < 2) {
          local_2558 = 2;
          FUN_1805a1320(local_2448,2,0,&DAT_181bb1ee0);
        }
        else {
          local_2438 = 2;
          puVar19 = (undefined1 *)local_2448;
          if (0xf < uStack_2430) {
            puVar19 = (undefined1 *)CONCAT71(local_2448[0]._1_7_,(undefined1)local_2448[0]);
          }
          memmove(puVar19,&DAT_181bb1ee0,2);
          puVar19[2] = 0;
          psVar12 = local_2540;
        }
        if (0xf < *(ulonglong *)(lVar7 + 0x70)) {
          puVar11 = (undefined8 *)*puVar11;
        }
        local_2540 = (size_t *)*psVar12;
        if (uStack_2430 - local_2438 < local_2540) {
          local_2558 = (size_t)local_2540;
          FUN_1805a1320(local_2448,local_2540,0,puVar11);
        }
        else {
          puVar19 = (undefined1 *)local_2448;
          if (0xf < uStack_2430) {
            puVar19 = (undefined1 *)CONCAT71(local_2448[0]._1_7_,(undefined1)local_2448[0]);
          }
          puVar19 = puVar19 + local_2438;
          local_2438 = local_2438 + (longlong)local_2540;
          memmove(puVar19,puVar11,(size_t)local_2540);
          puVar19[(longlong)local_2540] = 0;
        }
        if (uStack_2430 == local_2438) {
          local_2558 = 1;
          puVar11 = (undefined8 *)FUN_1805a1320(local_2448,1,0,&DAT_181bb1ed8);
        }
        else {
          puVar19 = (undefined1 *)local_2448;
          if (0xf < uStack_2430) {
            puVar19 = (undefined1 *)CONCAT71(local_2448[0]._1_7_,(undefined1)local_2448[0]);
          }
          puVar19 = puVar19 + local_2438;
          local_2438 = local_2438 + 1;
          memmove(puVar19,&DAT_181bb1ed8,1);
          puVar19[1] = 0;
          puVar11 = local_2448;
        }
        pppppppuVar16 = (undefined8 *******)*puVar11;
        local_20a8 = pppppppuVar16;
        uStack_20a0 = puVar11[1];
        local_2540 = (size_t *)puVar11[2];
        local_2518 = (size_t *)puVar11[3];
        local_2098 = (ulonglong)local_2540;
        psStack_2090 = local_2518;
        puVar11[2] = 0;
        puVar11[3] = 0xf;
        *(undefined1 *)puVar11 = 0;
        local_2548 = uVar22 | 0xc;
        pppppppuVar21 = &local_20a8;
        if ((size_t *)0xf < local_2518) {
          pppppppuVar21 = pppppppuVar16;
        }
        if (uStack_2470 - local_2478 < local_2540) {
          local_2558 = (size_t)local_2540;
          FUN_1805a1320(&local_2488,local_2540,0);
          psVar12 = psStack_2090;
          pppppppuVar16 = local_20a8;
        }
        else {
          pppppppuVar20 = &local_2488;
          if (0xf < uStack_2470) {
            pppppppuVar20 = local_2488;
          }
          pvVar18 = (void *)((longlong)pppppppuVar20 + local_2478);
          local_2478 = local_2478 + (longlong)local_2540;
          memmove(pvVar18,pppppppuVar21,(size_t)local_2540);
          *(undefined1 *)((longlong)pvVar18 + (longlong)local_2540) = 0;
          psVar12 = local_2518;
        }
        if ((size_t *)0xf < psVar12) {
          pppppppuVar21 = pppppppuVar16;
          if ((0xfff < (longlong)psVar12 + 1U) &&
             (pppppppuVar21 = (undefined8 *******)pppppppuVar16[-1],
             0x1f < (ulonglong)((longlong)pppppppuVar16 + (-8 - (longlong)pppppppuVar21)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pppppppuVar21);
        }
        uVar22 = uVar22 | 8;
        if (0xf < uStack_2430) {
          pvVar15 = (void *)CONCAT71(local_2448[0]._1_7_,(undefined1)local_2448[0]);
          pvVar18 = pvVar15;
          if ((0xfff < uStack_2430 + 1) &&
             (pvVar18 = *(void **)((longlong)pvVar15 + -8),
             0x1f < (ulonglong)((longlong)pvVar15 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar18);
        }
      }
      lVar7 = local_2538;
      puVar11 = (undefined8 *)(local_2538 + 0x128);
      sVar17 = local_2520;
      if (*(longlong *)(local_2538 + 0x138) != 0) {
        local_2418 = 0;
        local_2410 = 0xf;
        local_2428 = 0;
        local_2548 = uVar22 | 0x10;
        psVar12 = (size_t *)(local_2538 + 0x138);
        local_2540 = psVar12;
        if (0xf < *psVar12 + 8) {
          FUN_1805a14a0(&local_2428,*psVar12 + 8,0);
        }
        local_2418 = 0;
        if (local_2410 < 8) {
          local_2558 = 8;
          FUN_1805a1320(&local_2428,8,0," (Name: ");
        }
        else {
          local_2418 = 8;
          puVar19 = &local_2428;
          if (0xf < local_2410) {
            puVar19 = (undefined1 *)CONCAT71(uStack_2427,local_2428);
          }
          memmove(puVar19," (Name: ",8);
          puVar19[8] = 0;
          psVar12 = local_2540;
        }
        if (0xf < *(ulonglong *)(lVar7 + 0x140)) {
          puVar11 = (undefined8 *)*puVar11;
        }
        local_2540 = (size_t *)*psVar12;
        if (local_2410 - local_2418 < local_2540) {
          local_2558 = (size_t)local_2540;
          FUN_1805a1320(&local_2428,local_2540,0,puVar11);
        }
        else {
          puVar19 = &local_2428;
          if (0xf < local_2410) {
            puVar19 = (undefined1 *)CONCAT71(uStack_2427,local_2428);
          }
          puVar19 = puVar19 + local_2418;
          local_2418 = local_2418 + (longlong)local_2540;
          memmove(puVar19,puVar11,(size_t)local_2540);
          puVar19[(longlong)local_2540] = 0;
        }
        puVar19 = &local_2428;
        if (0xf < local_2410) {
          puVar19 = (undefined1 *)CONCAT71(uStack_2427,local_2428);
        }
        FUN_1805a6a80(&local_23e8,puVar19,local_2418);
        FUN_180485450(&local_2428);
        puVar13 = (undefined8 *)FUN_1805af050(local_1f58,", Phone: ",local_2538 + 0x148);
        puVar11 = puVar13;
        if (0xf < (ulonglong)puVar13[3]) {
          puVar11 = (undefined8 *)*puVar13;
        }
        FUN_1805a6a80(&local_23e8,puVar11,puVar13[2]);
        FUN_180485450(local_1f58);
        uVar9 = FUN_1805af050(local_1f38,", Email: ",local_2538 + 0x168);
        plVar14 = (longlong *)FUN_1805a6a80(uVar9,&DAT_181bb1ed8,1);
        local_2088 = (undefined8 *******)*plVar14;
        lStack_2080 = plVar14[1];
        local_2078 = plVar14[2];
        uStack_2070 = plVar14[3];
        plVar14[2] = 0;
        plVar14[3] = 0xf;
        *(undefined1 *)plVar14 = 0;
        uVar22 = uVar22 | 0x20;
        pppppppuVar16 = &local_2088;
        if (0xf < uStack_2070) {
          pppppppuVar16 = local_2088;
        }
        FUN_1805a6a80(&local_23e8,pppppppuVar16,local_2078);
        FUN_180485450(&local_2088);
        FUN_180485450(local_1f38);
        puVar19 = &local_23e8;
        if (0xf < local_23d0) {
          puVar19 = (undefined1 *)CONCAT71(uStack_23e7,local_23e8);
        }
        FUN_1805a6a80(local_24a8,puVar19,local_23d8);
        sVar17 = local_2520;
      }
    }
    FUN_1805a6a80(local_24a8,&DAT_181bb1edc,1);
    uVar10 = local_24d0;
  }
  uVar4 = *(ulonglong *)(local_2538 + 0x18);
  if ((sVar17 & uVar4) == 0) {
    if ((local_2510 & uVar4) == 0) {
      if (uVar4 == 0x80) {
        FUN_1805a6cb0(&local_2488,"iLok cloud account",0x12);
      }
      else {
        FUN_1805a6cb0(&local_2488,"license location with the serial number ",0x28);
        if (*(longlong *)(local_2538 + 0x38) == 0) {
          uVar9 = FUN_1805a3f20(local_1b38,&DAT_181bb2264);
          uVar9 = FUN_1805b23b0(uVar9,local_2538 + 0x20);
          FUN_1805ae640(uVar9,local_22e8);
          uVar22 = uVar22 | 0x200;
          pppppppuVar16 = local_22e8;
          if (0xf < local_22d0) {
            pppppppuVar16 = local_22e8[0];
          }
          FUN_1805a6a80(&local_2488,pppppppuVar16,local_22d8);
          FUN_180485450(local_22e8);
          puVar19 = local_1b38;
        }
        else {
          uVar9 = FUN_1805a3f20(local_1a28,&DAT_181bb2268);
          uVar9 = FUN_1805b2240(uVar9,local_2538 + 0x28);
          FUN_1805ae640(uVar9,local_22c8);
          uVar22 = uVar22 | 0x400;
          pppppppuVar16 = local_22c8;
          if (0xf < local_22b0) {
            pppppppuVar16 = local_22c8[0];
          }
          FUN_1805a6a80(&local_2488,pppppppuVar16,local_22b8);
          FUN_180485450(local_22c8);
          puVar19 = local_1a28;
        }
        FUN_1805a4fa0(puVar19);
      }
    }
    else if ((uVar10 & uVar4) == 0) {
      FUN_1805a6cb0(&local_2488,"computer",8);
    }
  }
  else {
    uVar9 = FUN_1805a3f20(local_1c48,"iLok (serial number %X)");
    uVar9 = FUN_1805b23b0(uVar9,local_2538 + 0x20);
    FUN_1805ae640(uVar9,local_23c8);
    FUN_1805a4fa0(local_1c48);
    if ((*(ulonglong *)(local_2538 + 0x18) & uVar10) == 0) {
      pppppppuVar16 = local_23c8;
      if (0xf < local_23b0) {
        pppppppuVar16 = local_23c8[0];
      }
      FUN_1805a6cb0(&local_2488,pppppppuVar16,local_23b8);
      uVar22 = uVar22 | 0x40;
    }
    else {
      local_2358 = 0;
      local_2350 = 0xf;
      local_2368[0] = 0;
      local_2548 = uVar22 | 0xc0;
      if (0xf < local_23b8 + 8U) {
        FUN_1805a14a0(local_2368,local_23b8 + 8U,0);
      }
      local_2358 = 0;
      pppppppuVar16 = local_23c8;
      if (0xf < local_23b0) {
        pppppppuVar16 = local_23c8[0];
      }
      FUN_1805a6a80(local_2368,pppppppuVar16,local_23b8);
      FUN_1805a6a80(local_2368," on the ",8);
      pppppppuVar16 = &local_2488;
      if (0xf < uStack_2470) {
        pppppppuVar16 = local_2488;
      }
      plVar14 = (longlong *)FUN_1805a6a80(local_2368,pppppppuVar16,local_2478);
      pppppppuVar16 = (undefined8 *******)*plVar14;
      lVar7 = plVar14[1];
      lVar5 = plVar14[2];
      uVar10 = plVar14[3];
      plVar14[2] = 0;
      plVar14[3] = 0xf;
      *(undefined1 *)plVar14 = 0;
      local_2308 = pppppppuVar16;
      lStack_2300 = lVar7;
      local_22f8 = lVar5;
      uStack_22f0 = uVar10;
      FUN_180485450(&local_2488);
      local_22f8 = 0;
      uStack_22f0 = 0xf;
      local_2308 = (undefined8 *******)((ulonglong)local_2308 & 0xffffffffffffff00);
      local_2488 = pppppppuVar16;
      lStack_2480 = lVar7;
      local_2478 = lVar5;
      uStack_2470 = uVar10;
      FUN_180485450(&local_2308);
      FUN_180485450(local_2368);
      uVar22 = uVar22 | 0x140;
    }
    FUN_180485450(local_23c8);
  }
  FUN_1805a6a80(&local_2468,"\n\nProblem Found: ",0x11);
  switch(*(undefined4 *)(local_2538 + 8)) {
  case 0:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Please launch the ILok License Manager app, which will automatically refresh this license."
                    ,0x5a);
    }
    uVar9 = FUN_1805a3f20(local_1918,"%s %s has an expired Lost or Stolen license. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_22a8);
    pppppppuVar16 = local_22a8;
    if (0xf < local_2290) {
      pppppppuVar16 = local_22a8[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2298);
    FUN_180485450(local_22a8);
    puVar19 = local_1918;
    break;
  case 1:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,"Please contact support at www.ilok.com to find out why.",0x37);
    }
    uVar9 = FUN_1805a3f20(local_1808,"The licenses on %s %s cannot be used. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2388);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2288);
    pppppppuVar16 = local_2288;
    if (0xf < local_2270) {
      pppppppuVar16 = local_2288[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2278);
    FUN_180485450(local_2288);
    puVar19 = local_1808;
    break;
  case 2:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Please disconnect and reconnect this device when switching to another OS or Computer."
                    ,0x55);
    }
    uVar9 = FUN_1805a3f20(local_16f8,
                          "The licenses on %s %s cannot be shared across multiple operating systems or computers. %s"
                         );
    uVar9 = FUN_1805b2240(uVar9,local_2388);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2268);
    pppppppuVar16 = local_2268;
    if (0xf < local_2250) {
      pppppppuVar16 = local_2268[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2258);
    FUN_180485450(local_2268);
    puVar19 = local_16f8;
    break;
  case 3:
  case 7:
  case 8:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Launch the ILok License Manager app, which will automatically fix your license database."
                    ,0x58);
    }
    uVar9 = FUN_1805a3f20(local_15e8,"%s %s database needs updating. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2248);
    pppppppuVar16 = local_2248;
    if (0xf < local_2230) {
      pppppppuVar16 = local_2248[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2238);
    FUN_180485450(local_2248);
    puVar19 = local_15e8;
    break;
  case 4:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Please launch the ILok License Manager app and refresh this license by right-clicking on the license and selecting Refresh. If this doesn\'t work, contact the software publisher"
                    ,0xb0);
    }
    uVar9 = FUN_1805a3f20(local_14d8,"%s %s has an expired NFR (Not for Resale) license. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2228);
    pppppppuVar16 = local_2228;
    if (0xf < local_2210) {
      pppppppuVar16 = local_2228[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2218);
    FUN_180485450(local_2228);
    puVar19 = local_14d8;
    break;
  case 5:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Please correct your computer clock, then launch the ILok License Manager app and sign in.  For an iLok, right-click on the iLok\'s icon, and select Synchronize."
                    ,0x9f);
    }
    uVar9 = FUN_1805a3f20(local_13c8,
                          "%s computer clock for %s %s appears to have been turned backward. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,local_2388);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2208);
    pppppppuVar16 = local_2208;
    if (0xf < local_21f0) {
      pppppppuVar16 = local_2208[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_21f8);
    FUN_180485450(local_2208);
    puVar19 = local_13c8;
    break;
  case 6:
    local_2398 = 0;
    local_2390 = 0xf;
    local_23a8 = 0;
    FUN_1805a6cb0(&local_23a8,
                  "lease go to iLok.com and download and install the latest License Service installer."
                  ,0x53);
    lVar7 = local_2398;
    if (local_2498 == 0) {
      local_2338 = 0;
      local_2330 = 0xf;
      local_2348[0] = 0;
      local_2548 = uVar22 | 0x20000;
      if (0xf < local_2398 + 1U) {
        FUN_1805a14a0(local_2348,local_2398 + 1U,0);
      }
      local_2338 = 0;
      FUN_1805a6a80(local_2348,&DAT_181bb2714,1);
      puVar19 = &local_23a8;
      if (0xf < local_2390) {
        puVar19 = (undefined1 *)CONCAT71(uStack_23a7,local_23a8);
      }
      FUN_1805a6a80(local_2348,puVar19,lVar7);
      FUN_1805a5a40(local_24a8,local_2348);
      puVar19 = local_2348;
    }
    else {
      puVar13 = (undefined8 *)FUN_1805af050(local_1f18," Also, p",&local_23a8);
      puVar11 = puVar13;
      if (0xf < (ulonglong)puVar13[3]) {
        puVar11 = (undefined8 *)*puVar13;
      }
      FUN_1805a6a80(local_24a8,puVar11,puVar13[2]);
      puVar19 = local_1f18;
    }
    FUN_180485450(puVar19);
    uVar9 = FUN_1805a3f20(local_12b8,"%s %s has an old version of License Support. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_21e8);
    pppppppuVar16 = local_21e8;
    if (0xf < local_21d0) {
      pppppppuVar16 = local_21e8[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_21d8);
    FUN_180485450(local_21e8);
    FUN_1805a4fa0(local_12b8);
    FUN_180485450(&local_23a8);
    goto switchD_1805bf266_caseD_f;
  case 9:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Please launch the ILok License Manager app and refresh this license by right-clicking on the license and selecting Refresh."
                    ,0x7b);
    }
    uVar9 = FUN_1805a3f20(local_11a8,"%s %s has an expired subscription license. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_21c8);
    pppppppuVar16 = local_21c8;
    if (0xf < local_21b0) {
      pppppppuVar16 = local_21c8[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_21b8);
    FUN_180485450(local_21c8);
    puVar19 = local_11a8;
    break;
  case 10:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,"Please contact your iLok License Server\'s administrator for help.",
                    0x41);
    }
    uVar9 = FUN_1805a3f20(local_1098,
                          "%s %s is offline. This could be why a valid license cannot be found. %s")
    ;
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_21a8);
    pppppppuVar16 = local_21a8;
    if (0xf < local_2190) {
      pppppppuVar16 = local_21a8[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2198);
    FUN_180485450(local_21a8);
    puVar19 = local_1098;
    break;
  case 0xb:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,"Please contact your iLok License Server\'s administrator for help.",
                    0x41);
    }
    uVar9 = FUN_1805a3f20(local_f88,"%s %s has an expired license. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2188);
    pppppppuVar16 = local_2188;
    if (0xf < local_2170) {
      pppppppuVar16 = local_2188[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2178);
    FUN_180485450(local_2188);
    puVar19 = local_f88;
    break;
  case 0xc:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,"Please contact your iLok License Server\'s administrator for help.",
                    0x41);
    }
    uVar9 = FUN_1805a3f20(local_e78,
                          "%s %s requires a password to access. This could be why a valid license cannot be found. %s"
                         );
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2168);
    pppppppuVar16 = local_2168;
    if (0xf < local_2150) {
      pppppppuVar16 = local_2168[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2158);
    FUN_180485450(local_2168);
    puVar19 = local_e78;
    break;
  case 0xd:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,"Please contact your iLok License Server\'s administrator for help.",
                    0x41);
    }
    uVar9 = FUN_1805a3f20(local_d68,
                          "%s %s requires information that is not set in your iLok License Server client settings. This could be why a valid license cannot be found. %s"
                         );
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2148);
    pppppppuVar16 = local_2148;
    if (0xf < local_2130) {
      pppppppuVar16 = local_2148[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2138);
    FUN_180485450(local_2148);
    puVar19 = local_d68;
    break;
  case 0xe:
    uVar9 = FUN_1805af050(local_1ef8,
                          "If leases are often not available, please contact your iLok License Server\'s administrator"
                          ,&local_23e8);
    puVar11 = (undefined8 *)FUN_1805a6a80(uVar9,&DAT_181bb1edc,1);
    local_2068 = *puVar11;
    uStack_2060 = puVar11[1];
    local_2058 = *(undefined4 *)(puVar11 + 2);
    uStack_2054 = *(undefined4 *)((longlong)puVar11 + 0x14);
    uStack_2050 = *(undefined4 *)(puVar11 + 3);
    uStack_204c = *(undefined4 *)((longlong)puVar11 + 0x1c);
    puVar11[2] = 0;
    puVar11[3] = 0xf;
    *(undefined1 *)puVar11 = 0;
    FUN_1805a5a40(local_24a8,&local_2068);
    FUN_180485450(&local_2068);
    FUN_180485450(local_1ef8);
    uVar9 = FUN_1805a3f20(local_c58,
                          "All of the leases for the shared license on %s %s are in use by others. When someone stops using this shared license, a lease for this shared license will become available for use, and then you should be able to run this product at that time. Please try again later. %s"
                         );
    uVar9 = FUN_1805b2240(uVar9,local_2388);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2128);
    pppppppuVar16 = local_2128;
    if (0xf < local_2110) {
      pppppppuVar16 = local_2128[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_2118);
    FUN_180485450(local_2128);
    puVar19 = local_c58;
    break;
  default:
    goto switchD_1805bf266_caseD_f;
  case 0x10:
    if (local_2498 == 0) {
      FUN_1805a6cb0(local_24a8,
                    "Please launch the ILok License Manager app and sign in.  The firmware will be updated if you activate or deactivate any license on the iLok or if you right-click on the iLok icon and select Synchronize."
                    ,0xca);
    }
    uVar9 = FUN_1805a3f20(local_b48,"IMPORTANT: %s %s needs a firmware update. %s");
    uVar9 = FUN_1805b2240(uVar9,local_2408);
    uVar9 = FUN_1805b2240(uVar9,&local_2488);
    uVar9 = FUN_1805b2240(uVar9,local_24a8);
    FUN_1805ae640(uVar9,local_2108);
    pppppppuVar16 = local_2108;
    if (0xf < local_20f0) {
      pppppppuVar16 = local_2108[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_20f8);
    FUN_180485450(local_2108);
    puVar19 = local_b48;
    break;
  case 0x11:
    uVar9 = FUN_1805a3f20(local_a38,
                          "There is currently an iLok Cloud outage, which may be the reason that a license for your software cannot be found. You can launch the ILok License Manager app to find out more details about the outage."
                         );
    FUN_1805ae640(uVar9,local_20e8);
    pppppppuVar16 = local_20e8;
    if (0xf < local_20d0) {
      pppppppuVar16 = local_20e8[0];
    }
    FUN_1805a6a80(&local_2468,pppppppuVar16,local_20d8);
    FUN_180485450(local_20e8);
    puVar19 = local_a38;
  }
  FUN_1805a4fa0(puVar19);
switchD_1805bf266_caseD_f:
  FUN_180485450(&local_23e8);
  FUN_180485450(local_24a8);
  FUN_180485450(local_2408);
  FUN_180485450(local_2388);
  FUN_180485450(&local_2488);
LAB_1805bff94:
  if (param_6[2] != 0) {
    FUN_1805a6a80(&local_2468,&DAT_181bb1db0,2);
    plVar14 = param_6;
    if (0xf < (ulonglong)param_6[3]) {
      plVar14 = (longlong *)*param_6;
    }
    FUN_1805a6a80(&local_2468,plVar14,param_6[2]);
  }
  local_2550 = 0;
  local_2558 = CONCAT71(local_2558._1_7_,1);
  iVar8 = FUN_1805f02b0(local_20c8,&local_2468,0,1);
  *local_24c8 = iVar8 == 2;
  FUN_180485450(local_2328);
  FUN_180485450(&local_2468);
  FUN_180485450(local_20c8);
  FUN_180575f30(&local_2538);
  FUN_180485450(param_5);
  FUN_180485450(param_6);
  FUN_1805a4e80(param_10);
}



############ FUN_ 1806bb800 size=562 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806bb800(longlong param_1,undefined8 param_2,longlong param_3,undefined4 param_4)

{
  uint uVar1;
  HANDLE hEvent;
  void *pvVar2;
  longlong *plVar3;
  uint *puVar4;
  undefined1 auStack_488 [32];
  void *local_468;
  longlong lStack_460;
  longlong local_458;
  int *local_450;
  char local_448;
  void *local_440;
  undefined8 uStack_438;
  longlong local_430;
  undefined8 local_428;
  undefined **local_418;
  undefined1 local_410 [168];
  undefined4 local_368;
  undefined2 local_364;
  undefined **local_358;
  undefined1 local_350 [752];
  undefined4 local_60;
  undefined2 local_5c;
  ulonglong local_58;
  
  local_428 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_488;
  local_358 = pace::eden::thrift::authorize::StartRelativeTimeLimitInput::vftable;
  FUN_180575180(local_350);
  local_60 = 0;
  local_5c = 0;
  local_418 = pace::eden::thrift::authorize::StartRelativeTimeLimitReturn::vftable;
  FUN_1805b6280(local_410);
  local_368 = 4;
  local_364 = 0;
  FUN_1805b9ea0(local_350,param_2);
  local_60 = param_4;
  FUN_1805b45f0(&local_450,param_1 + 0x18);
  if (*(longlong *)(param_1 + 0x48) == 0) {
    plVar3 = (longlong *)
             ((longlong)*(int *)(**(longlong **)(param_1 + 8) + 8) +
             (longlong)*(longlong **)(param_1 + 8));
    (**(code **)(*plVar3 + 0x160))(plVar3,&local_418,&local_358,4);
  }
  else {
    local_440 = (void *)0x0;
    uStack_438 = 0;
    local_430 = 0;
    local_468 = (void *)0x0;
    lStack_460 = 0;
    local_458 = 0;
    FUN_180674530(&local_358,&local_440,1);
    FUN_1806b86d0(param_1,0x20,&local_440,&local_468);
    FUN_180672320(local_468,lStack_460 - (longlong)local_468,&local_418);
    if (local_468 != (void *)0x0) {
      pvVar2 = local_468;
      if ((0xfff < (ulonglong)(local_458 - (longlong)local_468)) &&
         (pvVar2 = *(void **)((longlong)local_468 + -8),
         0x1f < (ulonglong)((longlong)local_468 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    if (local_440 != (void *)0x0) {
      pvVar2 = local_440;
      if ((0xfff < (ulonglong)(local_430 - (longlong)local_440)) &&
         (pvVar2 = *(void **)((longlong)local_440 + -8),
         0x1f < (ulonglong)((longlong)local_440 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
  }
  if (param_3 != 0) {
    FUN_1805ba930(param_3,local_410);
  }
  if ((local_448 != '\0') && (*local_450 = *local_450 + -1, *local_450 == 0)) {
    LOCK();
    local_450[1] = 0;
    UNLOCK();
    puVar4 = (uint *)(local_450 + 2);
    LOCK();
    uVar1 = *puVar4;
    *puVar4 = *puVar4 + 0x80000000;
    UNLOCK();
    if (((uVar1 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar1)) {
      LOCK();
      uVar1 = *puVar4;
      *puVar4 = *puVar4 | 0x40000000;
      UNLOCK();
      if ((uVar1 >> 0x1e & 1) == 0) {
        hEvent = (HANDLE)FUN_1805a9100();
        SetEvent(hEvent);
      }
    }
  }
  local_418 = pace::eden::thrift::authorize::StartRelativeTimeLimitReturn::vftable;
  FUN_1805b9270(local_410);
  local_358 = pace::eden::thrift::authorize::StartRelativeTimeLimitInput::vftable;
  FUN_1805753e0(local_350);
}



############ FUN_ 18079fea0 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079fea0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079ff70;
      FUN_18094f6f0(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0xb4) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0xb0);
      *(undefined1 *)(param_1 + 0xb5) = 1;
    }
    else {
LAB_18079ff70:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18094f6f0 size=845 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18094f6f0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_88 [32];
  undefined2 local_68 [2];
  uint local_64;
  int local_60;
  undefined1 local_5c [4];
  undefined8 local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_60,local_68);
  do {
    if (local_60 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_4f,local_50);
      _Memory = pvVar1;
      if ((0xfff < local_38 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_68[0]) {
    case 1:
      if (local_60 != 8) break;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x9c) = 1;
      goto LAB_18094f9aa;
    case 2:
      if (local_60 == 0xf) {
        *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0x10);
        (**(code **)(*param_2 + 0xf0))(param_2,local_5c,&local_64);
        FUN_1805b1330(param_1 + 0x10,local_64,param_1 + 0x10);
        uVar3 = 0;
        if (local_64 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x10));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_64);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x9d) = 1;
        goto LAB_18094f9aa;
      }
      break;
    default:
      break;
    case 10:
      if (local_60 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
        *(undefined1 *)(param_1 + 0x9e) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0xb:
      if (local_60 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0x9f) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0xc:
      if (local_60 == 10) {
        (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x68);
        *(undefined1 *)(param_1 + 0xa0) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0xd:
      if (local_60 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x70);
        *(undefined1 *)(param_1 + 0xa1) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0xf:
      if (local_60 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x90);
        *(undefined1 *)(param_1 + 0xa2) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0x10:
      if (local_60 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x94);
        *(undefined1 *)(param_1 + 0xa3) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0x11:
      if (local_60 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x98);
        *(undefined1 *)(param_1 + 0xa4) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0x12:
      if (local_60 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x99);
        *(undefined1 *)(param_1 + 0xa5) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0x14:
      if (local_60 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x9a);
        *(undefined1 *)(param_1 + 0xa6) = 1;
        goto LAB_18094f9aa;
      }
      break;
    case 0x15:
      if (local_60 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x9b);
        *(undefined1 *)(param_1 + 0xa7) = 1;
        goto LAB_18094f9aa;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_18094f9aa:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_60,local_68);
  } while( true );
}



############ FUN_ 1806a2680 size=1367 ############

longlong FUN_1806a2680(longlong param_1,uint param_2,undefined8 param_3,longlong param_4,
                      undefined4 param_5)

{
  HANDLE hEvent;
  longlong lVar1;
  ulonglong uVar2;
  uint uVar3;
  void *pvVar4;
  longlong *plVar5;
  uint *puVar6;
  int iVar7;
  undefined8 uVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  int unaff_retaddr;
  undefined8 uStack_1b0;
  undefined1 auStack_198 [40];
  undefined8 local_170;
  undefined4 local_168;
  uint local_158;
  undefined4 local_154;
  undefined **local_148;
  undefined8 local_140;
  undefined **local_138;
  undefined8 local_130;
  undefined4 local_128;
  undefined1 local_124;
  undefined8 local_120;
  undefined8 local_118;
  undefined8 uStack_110;
  undefined8 local_108;
  undefined8 uStack_100;
  undefined1 local_f8;
  undefined8 local_f0;
  undefined8 local_e8;
  undefined2 local_e0;
  undefined4 local_d8;
  undefined2 local_d4;
  undefined1 local_d2;
  undefined **local_c8;
  uint local_c0;
  longlong local_b8;
  undefined4 local_b0;
  undefined2 local_ac;
  undefined1 local_aa;
  void *local_a8;
  longlong lStack_a0;
  longlong local_98;
  void *local_90;
  undefined8 uStack_88;
  longlong local_80;
  int *local_78;
  char local_70;
  undefined8 local_68;
  ulonglong local_48;
  
  local_68 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_198;
  uVar10 = (ulonglong)param_2;
  local_168 = 0xe4f4e502;
  local_154 = 0x90;
  uVar3 = (uint)&stack0x00000000 & 0x13f;
  iVar7 = (uVar3 + 2) * (uVar3 + 1) * uVar3;
  uVar8 = 0x542ced4;
  local_158 = 0xe8b2 << ((byte)(((iVar7 >> 1) - (iVar7 >> 3)) + iVar7 * 0x55555555 >> 0x1e) & 0x1f)
              ^ 0xe502;
  local_c8 = pace::eden::thrift::authorize::GetLocationTypesFromLocationGroupInput::vftable;
  local_b8 = 0;
  local_ac = 0;
  local_aa = 0;
  local_148 = pace::eden::thrift::authorize::GetLocationTypesFromLocationGroupReturn::vftable;
  local_140 = 0;
  local_138 = pace::eden::thrift::fusion::LocationGroupAttributes::vftable;
  local_130 = 0;
  local_128 = 0;
  local_124 = 0;
  local_120 = 0;
  local_118 = 0;
  uStack_110 = 0;
  local_108 = 0;
  uStack_100 = 0;
  local_f8 = 0;
  local_f0 = 0;
  local_e8 = 0;
  local_e0 = 0;
  local_d8 = 4;
  local_d4 = 0;
  local_d2 = 0;
  local_170 = param_3;
  local_c0 = param_2;
  do {
    FUN_1806a0a21(0x4608,uVar8);
    param_4 = (-param_4 ^ 0xffffffffffffffffU) + 1;
    uVar3 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar3 < 0) {
      uVar3 = (uVar3 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar3 != 0);
  local_b0 = param_5;
  local_b8 = param_4;
  FUN_1805b45f0(&local_78,param_1 + 0x18);
  if (*(longlong *)(param_1 + 0x48) == 0) {
    plVar5 = (longlong *)
             ((longlong)*(int *)(**(longlong **)(param_1 + 8) + 8) +
             (longlong)*(longlong **)(param_1 + 8));
    (**(code **)(*plVar5 + 0xe8))(plVar5,&local_148,&local_c8,4);
  }
  else {
    local_90 = (void *)0x0;
    uStack_88 = 0;
    local_80 = 0;
    local_a8 = (void *)0x0;
    lStack_a0 = 0;
    local_98 = 0;
    FUN_180673e30(&local_c8,&local_90,1);
    FUN_1806b86d0(param_1,0x2b,&local_90,&local_a8);
    FUN_180671d50(local_a8,lStack_a0 - (longlong)local_a8,&local_148);
    if (local_a8 != (void *)0x0) {
      pvVar4 = local_a8;
      if ((0xfff < (ulonglong)(local_98 - (longlong)local_a8)) &&
         (pvVar4 = *(void **)((longlong)local_a8 + -8),
         0x1f < (ulonglong)((longlong)local_a8 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar4);
    }
    if (local_90 != (void *)0x0) {
      pvVar4 = local_90;
      if ((0xfff < (ulonglong)(local_80 - (longlong)local_90)) &&
         (pvVar4 = *(void **)((longlong)local_90 + -8),
         0x1f < (ulonglong)((longlong)local_90 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar4);
    }
  }
  if ((local_70 != '\0') && (*local_78 = *local_78 + -1, *local_78 == 0)) {
    LOCK();
    local_78[1] = 0;
    UNLOCK();
    puVar6 = (uint *)(local_78 + 2);
    LOCK();
    uVar3 = *puVar6;
    *puVar6 = *puVar6 + 0x80000000;
    UNLOCK();
    if (((uVar3 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar3)) {
      LOCK();
      uVar3 = *puVar6;
      *puVar6 = *puVar6 | 0x40000000;
      UNLOCK();
      if ((uVar3 >> 0x1e & 1) == 0) {
        hEvent = (HANDLE)FUN_1805a9100();
        SetEvent(hEvent);
      }
    }
  }
  uStack_1b0 = 0xe4f4e502;
                    /* WARNING: Call to offcut address within same function */
  lVar1 = func_0x0001806a2b32();
  uVar2 = (param_4 + lVar1) - ((lVar1 - (param_4 + lVar1) ^ 0xffffffffffffffffU) + 1);
  DAT_49e28b4d5a417849 = (undefined1)uVar2;
  uVar9 = (ulonglong)((int)&uStack_1b0 + 0x111);
  *(BADSPACEBASE **)(uVar9 - 8) = register0x00000020;
  *(ulonglong *)(uVar9 - 0x10) = uVar10 + 0x75c7b;
  *(ulonglong *)(uVar9 - 0x18) = uVar10 - 0x206ef;
  *(ulonglong *)(uVar9 - 0x20) = uVar10 + 0x2f26a;
  *(ulonglong *)(uVar9 - 0x28) = uVar10 + 0x46a1e;
  *(ulonglong *)(uVar9 - 0x30) = uVar10 + 0x60f0d;
  *(ulonglong *)(uVar9 - 0x38) = uVar10 + 0x55034;
  return (~((~uVar2 + 1 ^ 0xffffffffffffffff) + 1) + 1 ^ 0xffffffffffffffff) + 1;
}



############ FUN_ 1805cac40 size=1518 ############

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

ulonglong FUN_1805cac40(void)

{
  uint *puVar1;
  longlong lVar2;
  void *pvVar3;
  bool bVar4;
  uint *puVar5;
  undefined1 uVar6;
  HANDLE hEvent;
  ulonglong uVar7;
  uint uVar8;
  void *pvVar9;
  longlong lVar10;
  longlong *_Memory;
  int unaff_retaddr;
  undefined1 auStack_c8 [32];
  undefined4 local_a8;
  undefined4 local_98;
  undefined4 local_80;
  uint local_7c;
  uint *local_78;
  undefined1 local_70;
  longlong local_68;
  undefined8 local_50;
  longlong *local_48;
  longlong local_40;
  ulonglong local_20;
  
  puVar5 = DAT_18265dde8;
  local_50 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_98 = 0x6800;
  uVar8 = (uint)&stack0x00000000 & 0x71ff;
  uVar8 = uVar8 * uVar8 + 1;
  local_7c = 0xa8ee >> ((byte)(0 >> ((char)uVar8 + (char)(uVar8 / 7) * -7 & 0x1fU)) & 0x1f) ^ 0xa1de
  ;
  local_80 = 0x780;
  if ((DAT_18265dde0 != (longlong *)0x0) && (DAT_18265dde8 != (uint *)0x0)) {
    local_78 = DAT_18265dde8;
    local_70 = 0;
    FUN_1805a9420(DAT_18265dde8);
    local_70 = 1;
    local_48 = DAT_18265dde0;
    lVar2 = *DAT_18265dde0;
    bVar4 = true;
    _Memory = DAT_18265dde0;
    local_40 = lVar2;
    for (lVar10 = DAT_18265dde0[1]; (local_68 = lVar10, bVar4 && (lVar10 != lVar2));
        lVar10 = lVar10 + -0x10) {
      bVar4 = false;
      while (!bVar4) {
        (**(code **)(lVar10 + -0x10))(*(undefined8 *)(lVar10 + -8));
        _Memory = DAT_18265dde0;
        bVar4 = true;
      }
    }
    if (_Memory != (longlong *)0x0) {
      pvVar3 = (void *)*_Memory;
      if (pvVar3 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      pvVar9 = pvVar3;
      if ((0xfff < (_Memory[2] - (longlong)pvVar3 & 0xfffffffffffffff0U)) &&
         (pvVar9 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar9);
    }
    DAT_18265dde0 = (longlong *)0x0;
    LOCK();
    uVar8 = *puVar5;
    *puVar5 = *puVar5 + 0x80000000;
    UNLOCK();
    if (((uVar8 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar8)) {
      LOCK();
      uVar8 = *local_78;
      *local_78 = *local_78 | 0x40000000;
      UNLOCK();
      if ((uVar8 >> 0x1e & 1) == 0) {
        hEvent = (HANDLE)FUN_1805a9100(local_78);
        SetEvent(hEvent);
      }
    }
    puVar5 = DAT_18265dde8;
    if (DAT_18265dde8 != (uint *)0x0) {
      LOCK();
      puVar1 = DAT_18265dde8 + 2;
      puVar1[0] = 0;
      puVar1[1] = 0;
      UNLOCK();
      if (*(HANDLE *)puVar1 != (HANDLE)0x0) {
        CloseHandle(*(HANDLE *)puVar1);
      }
                    /* WARNING: Subroutine does not return */
      free(puVar5);
    }
    DAT_18265dde8 = (uint *)0x0;
  }
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  do {
    uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar8 < 0) {
      uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar8 != 0);
  if (DAT_18265dde0 == (longlong *)0x0) {
    local_a8 = 0x811c9dc5;
                    /* WARNING: Call to offcut address within same function */
    uVar7 = func_0x0001805cb07e();
    uVar6 = in(0x86);
    return CONCAT71((int7)(~((uVar7 ^ 0xffffffffffffffff) + 1) + 1 >> 8),uVar6) | 0x5f;
  }
  pvVar3 = (void *)*DAT_18265dde0;
  if (pvVar3 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free(DAT_18265dde0);
  }
  pvVar9 = pvVar3;
  if ((0xfff < (DAT_18265dde0[2] - (longlong)pvVar3 & 0xfffffffffffffff0U)) &&
     (pvVar9 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar9);
}



############ FUN_ 1805d0470 size=145 ############

basic_ios<char,std::char_traits<char>_> *
FUN_1805d0470(basic_ios<char,std::char_traits<char>_> *param_1,ulonglong param_2)

{
  basic_ios<char,std::char_traits<char>_> *_Memory;
  
  _Memory = param_1 + -0x88;
  *(undefined ***)(param_1 + (longlong)*(int *)(*(longlong *)_Memory + 4) + -0x88) =
       std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  *(int *)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x88) + 4) + -0x8c) =
       *(int *)(*(longlong *)(param_1 + -0x88) + 4) + -0x88;
  FUN_1805d0340(param_1 + -0x80);
  std::basic_ostream<char,std::char_traits<char>_>::~basic_ostream<char,std::char_traits<char>_>
            ((basic_ostream<char,std::char_traits<char>_> *)(param_1 + -0x78));
  std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 1805d0510 size=52 ############

void * FUN_1805d0510(void *param_1,ulonglong param_2)

{
  FUN_1805d0340();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d0550 size=52 ############

void * FUN_1805d0550(void *param_1,ulonglong param_2)

{
  FUN_1806d5550();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d06b0 size=2761 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_1805d06b0(undefined8 param_1,uint *param_2,char *param_3)

{
  byte bVar1;
  char cVar2;
  void *pvVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  byte *****pppppbVar11;
  char *pcVar12;
  int iVar13;
  char *pcVar14;
  char *pcVar15;
  byte *******pppppppbVar16;
  longlong lVar17;
  byte *******pppppppbVar18;
  byte *******pppppppbVar19;
  ulonglong uVar20;
  byte ******ppppppbVar21;
  byte ******ppppppbVar22;
  byte *pbVar23;
  byte *pbVar24;
  void *pvVar25;
  byte ******ppppppbVar27;
  ulonglong uVar28;
  char *pcVar29;
  char *pcVar30;
  byte ******ppppppbVar31;
  undefined1 auStack_228 [32];
  byte ******local_208;
  char *local_1f8;
  char *local_1f0;
  char *local_1e8;
  uint *local_1e0;
  char *local_1d8;
  uint local_1d0;
  uint uStack_1cc;
  uint uStack_1c8;
  uint uStack_1c4;
  undefined8 local_1c0;
  undefined8 uStack_1b8;
  byte *******local_1b0;
  byte ******ppppppbStack_1a8;
  byte ******local_1a0;
  ulonglong uStack_198;
  byte local_190;
  undefined7 uStack_18f;
  byte *****pppppbStack_188;
  byte *****local_180;
  byte *****pppppbStack_178;
  undefined1 local_170;
  undefined7 uStack_16f;
  byte ******ppppppbStack_168;
  byte ******local_160;
  ulonglong uStack_158;
  char local_148 [256];
  ulonglong local_48;
  uint *puVar26;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_228;
  pcVar30 = param_3;
  if (0xf < *(ulonglong *)(param_3 + 0x18)) {
    pcVar30 = *(char **)param_3;
  }
  pcVar29 = *(char **)(param_3 + 0x10);
  local_1e0 = param_2;
  local_1d8 = param_3;
  if (pcVar29 != (char *)0x0) {
    for (pcVar14 = memchr(pcVar30,0x7c,(size_t)pcVar29); pcVar14 != (char *)0x0;
        pcVar14 = memchr(pcVar14 + 1,0x7c,
                         (size_t)(pcVar30 + ((longlong)pcVar29 - (longlong)(pcVar14 + 1))))) {
      if (*pcVar14 == DAT_181bb3bac) {
        if (pcVar14 == pcVar30) {
          ppppppbVar21 = (byte ******)0x0;
          local_1a0 = (byte ******)0x0;
          pcVar30 = (char *)0x1;
          local_1b0 = (byte *******)0x0;
          ppppppbStack_1a8 = (byte ******)0x0;
          ppppppbVar27 = (byte ******)0x0;
          ppppppbVar31 = ppppppbVar21;
          if ((char *)0x1 < pcVar29) goto LAB_1805d07b0;
          goto LAB_1805d093a;
        }
        break;
      }
    }
  }
  FUN_1805a4070(param_2,param_3);
  FUN_1805d111e();
  return;
LAB_1805d07b0:
  do {
    ppppppbVar22 = (byte ******)0xffffffffffffffff;
    if (ppppppbVar21 == (byte ******)0xffffffffffffffff) break;
    uVar20 = *(ulonglong *)(param_3 + 0x18);
    pcVar14 = param_3;
    if (0xf < uVar20) {
      pcVar14 = *(char **)param_3;
    }
    local_1f8 = pcVar14;
    if ((pcVar29 == (char *)0x0) || (pcVar29 + -1 < pcVar30)) {
LAB_1805d0855:
      if (ppppppbVar22 != (byte ******)0xffffffffffffffff) {
        uVar28 = (longlong)ppppppbVar22 - (longlong)pcVar30;
        if (uVar28 != 0) {
          local_180 = (byte *****)0x0;
          pppppbStack_178 = (byte *****)0xf;
          local_190 = 0;
          if (pcVar29 < pcVar30) {
                    /* WARNING: Subroutine does not return */
            FUN_1805a69e0();
          }
          if ((ulonglong)((longlong)pcVar29 - (longlong)pcVar30) < uVar28) {
            uVar28 = (longlong)pcVar29 - (longlong)pcVar30;
          }
          pcVar29 = param_3;
          if (0xf < uVar20) {
            pcVar29 = *(char **)param_3;
          }
          FUN_1805a6cb0(&local_190,pcVar29 + (longlong)pcVar30,uVar28);
          if (ppppppbVar31 == ppppppbVar27) {
            FUN_1805cfbf0(&local_1b0,ppppppbVar27,&local_190);
            ppppppbVar27 = ppppppbStack_1a8;
            ppppppbVar31 = local_1a0;
            if ((byte *****)0xf < pppppbStack_178) {
              pvVar3 = (void *)CONCAT71(uStack_18f,local_190);
              pvVar25 = pvVar3;
              if ((0xfff < (longlong)pppppbStack_178 + 1U) &&
                 (pvVar25 = *(void **)((longlong)pvVar3 + -8),
                 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar25)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
                    /* WARNING: Subroutine does not return */
              free(pvVar25);
            }
          }
          else {
            *ppppppbVar27 = (byte *****)CONCAT71(uStack_18f,local_190);
            ppppppbVar27[1] = pppppbStack_188;
            ppppppbVar27[2] = local_180;
            ppppppbVar27[3] = pppppbStack_178;
            ppppppbStack_1a8 = ppppppbVar27 + 4;
            ppppppbVar27 = ppppppbStack_1a8;
          }
        }
        pcVar30 = (char *)((longlong)ppppppbVar22 + 1);
      }
    }
    else {
      for (pcVar15 = memchr(pcVar14 + (longlong)pcVar30,0x7c,
                            (size_t)(pcVar14 +
                                    ((longlong)pcVar29 - (longlong)(pcVar14 + (longlong)pcVar30))));
          pcVar15 != (char *)0x0;
          pcVar15 = memchr(pcVar15 + 1,0x7c,
                           (size_t)(pcVar14 + ((longlong)pcVar29 - (longlong)(pcVar15 + 1))))) {
        if (*pcVar15 == DAT_181bb3bac) {
          ppppppbVar22 = (byte ******)(pcVar15 + -(longlong)local_1f8);
          uVar20 = *(ulonglong *)(param_3 + 0x18);
          goto LAB_1805d0855;
        }
      }
      ppppppbVar22 = (byte ******)0xffffffffffffffff;
    }
    pcVar29 = *(char **)(param_3 + 0x10);
    ppppppbVar21 = ppppppbVar22;
  } while (pcVar30 < pcVar29);
LAB_1805d093a:
  pcVar29 = *(char **)(param_3 + 0x10);
  if (pcVar30 < pcVar29) {
    local_180 = (byte *****)0x0;
    pppppbStack_178 = (byte *****)0xf;
    local_190 = 0;
    if (pcVar29 < pcVar30) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69e0();
    }
    lVar17 = -1;
    if ((longlong)pcVar29 - (longlong)pcVar30 != -1) {
      lVar17 = (longlong)pcVar29 - (longlong)pcVar30;
    }
    pcVar29 = param_3;
    if (0xf < *(ulonglong *)(param_3 + 0x18)) {
      pcVar29 = *(char **)param_3;
    }
    FUN_1805a6cb0(&local_190,pcVar29 + (longlong)pcVar30,lVar17);
    if (ppppppbVar31 == ppppppbVar27) {
      FUN_1805cfbf0(&local_1b0,ppppppbVar27,&local_190);
      ppppppbVar27 = ppppppbStack_1a8;
      ppppppbVar31 = local_1a0;
      if ((byte *****)0xf < pppppbStack_178) {
        pvVar3 = (void *)CONCAT71(uStack_18f,local_190);
        pvVar25 = pvVar3;
        if ((0xfff < (longlong)pppppbStack_178 + 1U) &&
           (pvVar25 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar25)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar25);
      }
    }
    else {
      *ppppppbVar27 = (byte *****)CONCAT71(uStack_18f,local_190);
      ppppppbVar27[1] = pppppbStack_188;
      ppppppbVar27[2] = local_180;
      ppppppbVar27[3] = pppppbStack_178;
      ppppppbVar27 = ppppppbVar27 + 4;
    }
  }
  pppppppbVar19 = local_1b0;
  uVar5 = s___LINE___181bb3bc0._0_8_;
  uVar4 = s___FILE___181bb3bb0._0_8_;
  pcVar30 = (char *)((longlong)ppppppbVar27 - (longlong)local_1b0 >> 5);
  if (pcVar30 == (char *)0x0) {
    FUN_1805a4070(local_1e0,param_3);
    if (pppppppbVar19 == (byte *******)0x0) {
    }
    FUN_18048c550(pppppppbVar19,ppppppbVar27,&local_1b0);
    pppppppbVar16 = pppppppbVar19;
    if ((0xfff < ((longlong)ppppppbVar31 - (longlong)pppppppbVar19 & 0xffffffffffffffe0U)) &&
       (pppppppbVar16 = (byte *******)pppppppbVar19[-1],
       (byte *)0x1f < (byte *)((longlong)pppppppbVar19 + (-8 - (longlong)pppppppbVar16)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
  else {
    pcVar29 = (char *)0xffffffffffffffff;
    pcVar14 = (char *)0x0;
    local_1f0 = (char *)0xffffffffffffffff;
    local_1e8 = (char *)0xffffffffffffffff;
    local_1f8 = (char *)0xffffffffffffffff;
    if (pcVar30 != (char *)0x0) {
      do {
        ppppppbVar21 = pppppppbVar19[3];
        pppppppbVar16 = pppppppbVar19;
        if ((byte ******)0xf < ppppppbVar21) {
          pppppppbVar16 = (byte *******)*pppppppbVar19;
        }
        ppppppbVar22 = pppppppbVar19[2];
        if ((ppppppbVar22 != (byte ******)0x8) ||
           (pcVar15 = pcVar14, pcVar12 = local_1e8, *pppppppbVar16 != (byte ******)uVar4)) {
          pppppppbVar16 = pppppppbVar19;
          if ((byte ******)0xf < ppppppbVar21) {
            pppppppbVar16 = (byte *******)*pppppppbVar19;
          }
          pcVar15 = local_1f0;
          if ((ppppppbVar22 != (byte ******)0x8) ||
             (pcVar12 = pcVar14, *pppppppbVar16 != (byte ******)uVar5)) {
            pppppppbVar16 = pppppppbVar19;
            if ((byte ******)0xf < ppppppbVar21) {
              pppppppbVar16 = (byte *******)*pppppppbVar19;
            }
            pcVar12 = local_1e8;
            if ((ppppppbVar22 == (byte ******)0x13) &&
               (iVar13 = memcmp(pppppppbVar16,"__PRETTY_FUNCTION__",0x13), pcVar29 = local_1f8,
               pcVar15 = local_1f0, pcVar12 = local_1e8, iVar13 == 0)) {
              pcVar29 = pcVar14;
              local_1f8 = pcVar14;
            }
          }
        }
        local_1e8 = pcVar12;
        local_1f0 = pcVar15;
        pppppppbVar16 = local_1b0;
        pcVar14 = pcVar14 + 1;
        pppppppbVar19 = pppppppbVar19 + 4;
      } while (pcVar14 < pcVar30);
      if (((local_1f0 != (char *)0xffffffffffffffff) || (local_1e8 != (char *)0xffffffffffffffff))
         || (param_3 = local_1d8, pcVar29 != (char *)0xffffffffffffffff)) {
        uStack_1b8 = 0xf;
        local_1c0 = 0;
        local_1d0 = local_1d0 & 0xffffff00;
        if (local_1f0 == (char *)0xffffffffffffffff) {
          local_208 = (byte ******)0x10;
          FUN_1805a1320(&local_1d0,0x10,0,"Filename unknown");
        }
        else {
          local_180 = (byte *****)0x0;
          pppppbStack_178 = (byte *****)0xf;
          local_190 = 0;
          FUN_1805a6cb0(&local_190,&DAT_181bb3be4,1);
          if (pppppbStack_178 == local_180) {
            local_208 = (byte ******)0x1;
            FUN_1805a1320(&local_190,1,0,&DAT_181bb3be8);
          }
          else {
            pbVar23 = &local_190;
            if ((byte *****)0xf < pppppbStack_178) {
              pbVar23 = (byte *)CONCAT71(uStack_18f,local_190);
            }
            pbVar23 = pbVar23 + (longlong)local_180;
            local_180 = (byte *****)((longlong)local_180 + 1);
            memmove(pbVar23,&DAT_181bb3be8,1);
            pbVar23[1] = 0;
          }
          FUN_1805a4070(&local_1b0);
          pppppbVar11 = local_180;
          ppppppbVar21 = local_1a0;
          pbVar23 = &local_190;
          if ((byte *****)0xf < pppppbStack_178) {
            pbVar23 = (byte *)CONCAT71(uStack_18f,local_190);
          }
          pppppppbVar19 = (byte *******)&local_1b0;
          if (0xf < uStack_198) {
            pppppppbVar19 = local_1b0;
          }
          if ((local_180 != (byte *****)0x0) && (local_1a0 != (byte ******)0x0)) {
            memset(local_148,0,0x100);
            lVar17 = (longlong)(pbVar23 + (longlong)pppppbVar11) - (longlong)pbVar23;
            if (pbVar23 + (longlong)pppppbVar11 < pbVar23) {
              lVar17 = 0;
            }
            if (lVar17 != 0) {
              pbVar24 = pbVar23;
              do {
                bVar1 = *pbVar24;
                pbVar24 = pbVar24 + 1;
                local_148[bVar1] = '\x01';
              } while ((longlong)pbVar24 - (longlong)pbVar23 != lVar17);
            }
            pcVar30 = (char *)0xffffffffffffffff;
            if ((char *)((longlong)ppppppbVar21 + -1) != (char *)0xffffffffffffffff) {
              pcVar30 = (char *)((longlong)ppppppbVar21 + -1);
            }
            pppppppbVar18 = (byte *******)((longlong)pppppppbVar19 + (longlong)pcVar30);
            cVar2 = local_148[*(byte *)pppppppbVar18];
            while (cVar2 == '\0') {
              if (pppppppbVar18 == pppppppbVar19) goto LAB_1805d0d58;
              pbVar23 = (byte *)((longlong)pppppppbVar18 + -1);
              pppppppbVar18 = (byte *******)((longlong)pppppppbVar18 + -1);
              cVar2 = local_148[*pbVar23];
            }
            if ((longlong)pppppppbVar18 - (longlong)pppppppbVar19 != -1) {
              ppppppbVar22 = (byte ******)(((longlong)pppppppbVar18 - (longlong)pppppppbVar19) + 1);
              local_160 = (byte ******)0x0;
              uStack_158 = 0xf;
              local_170 = 0;
              if (ppppppbVar21 < ppppppbVar22) {
                    /* WARNING: Subroutine does not return */
                FUN_1805a69e0();
              }
              lVar17 = -1;
              if ((longlong)ppppppbVar21 - (longlong)ppppppbVar22 != -1) {
                lVar17 = (longlong)ppppppbVar21 - (longlong)ppppppbVar22;
              }
              pppppppbVar19 = (byte *******)&local_1b0;
              if (0xf < uStack_198) {
                pppppppbVar19 = local_1b0;
              }
              FUN_1805a6cb0(&local_170,(byte *)((longlong)pppppppbVar19 + (longlong)ppppppbVar22),
                            lVar17);
              FUN_180485450(&local_1b0);
              local_1b0 = (byte *******)CONCAT71(uStack_16f,local_170);
              local_1a0 = local_160;
              uStack_198 = uStack_158;
              ppppppbStack_1a8 = ppppppbStack_168;
              ppppppbVar21 = local_160;
            }
          }
LAB_1805d0d58:
          pppppppbVar19 = (byte *******)&local_1b0;
          if (0xf < uStack_198) {
            pppppppbVar19 = local_1b0;
          }
          if ((byte ******)(uStack_1b8 - local_1c0) < ppppppbVar21) {
            local_208 = ppppppbVar21;
            FUN_1805a1320(&local_1d0,ppppppbVar21,0);
          }
          else {
            puVar26 = &local_1d0;
            if (0xf < uStack_1b8) {
              puVar26 = (uint *)CONCAT44(uStack_1cc,local_1d0);
            }
            pvVar25 = (void *)((longlong)puVar26 + local_1c0);
            local_1c0 = local_1c0 + (longlong)ppppppbVar21;
            memmove(pvVar25,pppppppbVar19,(size_t)ppppppbVar21);
            *(undefined1 *)((longlong)pvVar25 + (longlong)ppppppbVar21) = 0;
          }
          if (0xf < uStack_198) {
            pppppppbVar19 = local_1b0;
            if ((0xfff < uStack_198 + 1) &&
               (pppppppbVar19 = (byte *******)local_1b0[-1],
               (byte *)0x1f < (byte *)((longlong)local_1b0 + (-8 - (longlong)pppppppbVar19)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pppppppbVar19);
          }
          local_1a0 = (byte ******)0x0;
          uStack_198 = 0xf;
          local_1b0 = (byte *******)((ulonglong)local_1b0 & 0xffffffffffffff00);
          if ((byte *****)0xf < pppppbStack_178) {
            pvVar3 = (void *)CONCAT71(uStack_18f,local_190);
            pvVar25 = pvVar3;
            if ((0xfff < (longlong)pppppbStack_178 + 1U) &&
               (pvVar25 = *(void **)((longlong)pvVar3 + -8),
               0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar25)))) {
                    /* WARNING: Subroutine does not return */
              _invalid_parameter_noinfo_noreturn();
            }
                    /* WARNING: Subroutine does not return */
            free(pvVar25);
          }
        }
        pcVar30 = local_1e8;
        if (local_1e8 == (char *)0xffffffffffffffff) {
          if (0xd < uStack_1b8 - local_1c0) {
            puVar26 = &local_1d0;
            if (0xf < uStack_1b8) {
              puVar26 = (uint *)CONCAT44(uStack_1cc,local_1d0);
            }
            pvVar25 = (void *)((longlong)puVar26 + local_1c0);
            local_1c0 = local_1c0 + 0xe;
            memmove(pvVar25,", line unknown",0xe);
            *(undefined1 *)((longlong)pvVar25 + 0xe) = 0;
            goto LAB_1805d0fbf;
          }
          local_208 = (byte ******)&DAT_0000000e;
          pcVar30 = ", line unknown";
          ppppppbVar21 = local_208;
        }
        else {
          if (uStack_1b8 - local_1c0 < 7) {
            local_208 = (byte ******)0x7;
            FUN_1805a1320(&local_1d0,7,0,", line ");
          }
          else {
            puVar26 = &local_1d0;
            if (0xf < uStack_1b8) {
              puVar26 = (uint *)CONCAT44(uStack_1cc,local_1d0);
            }
            pvVar25 = (void *)((longlong)puVar26 + local_1c0);
            local_1c0 = local_1c0 + 7;
            memmove(pvVar25,", line ",7);
            *(undefined1 *)((longlong)pvVar25 + 7) = 0;
          }
          pppppppbVar19 = pppppppbVar16 + (longlong)(pcVar30 + 1) * 4;
          pcVar30 = (char *)pppppppbVar19;
          if ((byte ******)0xf < pppppppbVar19[3]) {
            pcVar30 = (char *)*pppppppbVar19;
          }
          ppppppbVar21 = pppppppbVar19[2];
          if (ppppppbVar21 <= (byte ******)(uStack_1b8 - local_1c0)) {
            puVar26 = &local_1d0;
            if (0xf < uStack_1b8) {
              puVar26 = (uint *)CONCAT44(uStack_1cc,local_1d0);
            }
            pvVar25 = (void *)((longlong)puVar26 + local_1c0);
            local_1c0 = local_1c0 + (longlong)ppppppbVar21;
            memmove(pvVar25,pcVar30,(size_t)ppppppbVar21);
            *(undefined1 *)((longlong)pvVar25 + (longlong)ppppppbVar21) = 0;
            goto LAB_1805d0fbf;
          }
        }
        local_208 = ppppppbVar21;
        FUN_1805a1320(&local_1d0,local_208,0,pcVar30);
LAB_1805d0fbf:
        pcVar30 = local_1f8;
        if (local_1f8 != (char *)0xffffffffffffffff) {
          if (uStack_1b8 - local_1c0 < 0xc) {
            local_208 = (byte ******)0xc;
            FUN_1805a1320(&local_1d0,0xc,0,", function: ");
          }
          else {
            puVar26 = &local_1d0;
            if (0xf < uStack_1b8) {
              puVar26 = (uint *)CONCAT44(uStack_1cc,local_1d0);
            }
            pvVar25 = (void *)((longlong)puVar26 + local_1c0);
            local_1c0 = local_1c0 + 0xc;
            memmove(pvVar25,", function: ",0xc);
            *(undefined1 *)((longlong)pvVar25 + 0xc) = 0;
          }
          pppppppbVar18 = pppppppbVar16 + (longlong)(pcVar30 + 1) * 4;
          pppppppbVar19 = pppppppbVar18;
          if ((byte ******)0xf < pppppppbVar18[3]) {
            pppppppbVar19 = (byte *******)*pppppppbVar18;
          }
          ppppppbVar21 = pppppppbVar18[2];
          if ((byte ******)(uStack_1b8 - local_1c0) < ppppppbVar21) {
            local_208 = ppppppbVar21;
            FUN_1805a1320(&local_1d0,ppppppbVar21,0);
          }
          else {
            puVar26 = &local_1d0;
            if (0xf < uStack_1b8) {
              puVar26 = (uint *)CONCAT44(uStack_1cc,local_1d0);
            }
            pvVar25 = (void *)((longlong)puVar26 + local_1c0);
            local_1c0 = local_1c0 + (longlong)ppppppbVar21;
            memmove(pvVar25,pppppppbVar19,(size_t)ppppppbVar21);
            *(char *)((longlong)ppppppbVar21 + (longlong)pvVar25) = '\0';
          }
        }
        uVar6 = local_1d0;
        uVar7 = (uint)local_1c0;
        uVar8 = local_1c0._4_4_;
        uVar9 = (uint)uStack_1b8;
        uVar10 = uStack_1b8._4_4_;
        local_1c0 = 0;
        uStack_1b8 = 0xf;
        local_1d0 = local_1d0 & 0xffffff00;
        *local_1e0 = uVar6;
        local_1e0[1] = uStack_1cc;
        local_1e0[2] = uStack_1c8;
        local_1e0[3] = uStack_1c4;
        local_1e0[4] = uVar7;
        local_1e0[5] = uVar8;
        local_1e0[6] = uVar9;
        local_1e0[7] = uVar10;
        if (pppppppbVar16 == (byte *******)0x0) {
        }
        FUN_18048c550(pppppppbVar16,ppppppbVar27,&local_1b0);
        FUN_1805bd810(&local_1b0,pppppppbVar16,(longlong)ppppppbVar31 - (longlong)pppppppbVar16 >> 5
                     );
      }
    }
    pppppppbVar19 = local_1b0;
    FUN_1805a4070(local_1e0,param_3);
    if (pppppppbVar19 == (byte *******)0x0) {
    }
    FUN_18048c550(pppppppbVar19,ppppppbVar27,&local_1b0);
    pppppppbVar16 = pppppppbVar19;
    if ((0xfff < ((longlong)ppppppbVar31 - (longlong)pppppppbVar19 & 0xffffffffffffffe0U)) &&
       (pppppppbVar16 = (byte *******)pppppppbVar19[-1],
       (byte *)0x1f < (byte *)((longlong)pppppppbVar19 + (-8 - (longlong)pppppppbVar16)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(pppppppbVar16);
}



############ FUN_ 1805d2830 size=106 ############

void FUN_1805d2830(longlong *param_1)

{
  void *pvVar1;
  void *_Memory;
  
  if (param_1 == (longlong *)0x0) {
    return;
  }
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < param_1[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805d4160 size=184 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d4160(longlong *param_1,undefined1 *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_58 [32];
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_58;
  *(undefined8 *)(param_2 + 0x18) = 0xf;
  *(undefined8 *)(param_2 + 0x10) = 0;
  *param_2 = 0;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  FUN_1805a6cb0(&local_38,&DAT_181baf991,0);
  (**(code **)(*param_1 + 0x28))(param_1,param_2,&local_38,0);
  if (local_20 < 0x10) {
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805d4230 size=747 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d4230(longlong *param_1,uint *param_2,undefined8 param_3,char param_4)

{
  ulonglong uVar1;
  void *pvVar2;
  void *_Memory;
  ulonglong *puVar3;
  undefined1 auStack_198 [32];
  undefined1 local_178;
  undefined1 local_170;
  undefined4 local_168;
  ulonglong local_160;
  uint *local_158;
  int iStack_14c;
  undefined *local_148;
  undefined **local_140;
  basic_ostream<char,std::char_traits<char>_> local_138 [16];
  longlong *local_128;
  longlong *local_120;
  longlong *local_108;
  ulonglong *local_100;
  int *local_f0;
  ulonglong local_d8;
  uint local_d0;
  basic_ios<char,std::char_traits<char>_> local_c0 [104];
  undefined8 local_58;
  uint local_50;
  uint uStack_4c;
  uint uStack_48;
  uint uStack_44;
  undefined8 local_40;
  ulonglong uStack_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_198;
  local_168 = 0;
  local_148 = &DAT_181bb3cc0;
  local_158 = param_2;
  std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_c0);
  local_168 = 1;
  std::basic_ostream<char,std::char_traits<char>_>::basic_ostream<char,std::char_traits<char>_>
            ((basic_ostream<char,std::char_traits<char>_> *)&local_148,
             (basic_streambuf<char,std::char_traits<char>_> *)&local_140,false);
  *(undefined ***)((longlong)&local_148 + (longlong)*(int *)(local_148 + 4)) =
       std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  *(int *)((longlong)&iStack_14c + (longlong)*(int *)(local_148 + 4)) =
       *(int *)(local_148 + 4) + -0x88;
  std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
            ((basic_streambuf<char,std::char_traits<char>_> *)&local_140);
  local_140 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  local_d8 = 0;
  local_d0 = 4;
  if (param_4 == '\0') {
    local_178 = 1;
    (**(code **)(*param_1 + 0x58))(param_1,&local_148,param_3,0);
  }
  if ((char)param_1[0x23] == '\0') {
    local_178 = 1;
    FUN_1806d7f70(param_1,&local_148,param_3,0);
  }
  local_178 = 1;
  (**(code **)(*param_1 + 0x60))(param_1,&local_148,param_3,0);
  local_170 = 1;
  local_178 = 0;
  (**(code **)(*param_1 + 0x68))(param_1,&local_148,param_3,0);
  local_178 = 0;
  (**(code **)(*param_1 + 0x70))(param_1,&local_148,param_3,1);
  local_40 = 0;
  uStack_38 = 0xf;
  local_50 = local_50 & 0xffffff00;
  local_168 = 5;
  if (((local_d0 & 2) == 0) && (uVar1 = *local_100, uVar1 != 0)) {
    local_160 = uVar1;
    puVar3 = &local_d8;
    if (local_d8 <= uVar1) {
      puVar3 = &local_160;
    }
    FUN_1805a6cb0(&local_50,*local_120,*puVar3 - *local_120);
  }
  else if (((local_d0 & 4) == 0) && (*local_108 != 0)) {
    FUN_1805a6cb0(&local_50,*local_128,((longlong)*local_f0 - *local_128) + *local_108);
  }
  if (param_2 == &local_50) {
    if (0xf < uStack_38) {
      pvVar2 = (void *)CONCAT44(uStack_4c,local_50);
      _Memory = pvVar2;
      if ((0xfff < uStack_38 + 1) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
  else {
    FUN_180485450(param_2);
    *param_2 = local_50;
    param_2[1] = uStack_4c;
    param_2[2] = uStack_48;
    param_2[3] = uStack_44;
    *(undefined8 *)(param_2 + 4) = local_40;
    *(ulonglong *)(param_2 + 6) = uStack_38;
  }
  *(undefined ***)((longlong)&local_148 + (longlong)*(int *)(local_148 + 4)) =
       std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
  *(int *)((longlong)&iStack_14c + (longlong)*(int *)(local_148 + 4)) =
       *(int *)(local_148 + 4) + -0x88;
  FUN_1805d0340(&local_140);
  std::basic_ostream<char,std::char_traits<char>_>::~basic_ostream<char,std::char_traits<char>_>
            (local_138);
  std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(local_c0);
}



############ FUN_ 1806d7f70 size=403 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806d7f70(longlong *param_1,basic_ostream<char,std::char_traits<char>_> *param_2,
                  undefined8 *param_3,char param_4,char param_5)

{
  void *pvVar1;
  undefined8 uVar2;
  undefined8 ****ppppuVar3;
  void *_Memory;
  undefined8 *puVar4;
  longlong lVar5;
  undefined1 auStack_88 [32];
  undefined1 local_68;
  undefined7 uStack_67;
  longlong local_58;
  ulonglong local_50;
  undefined8 ***local_48 [2];
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_28 = DAT_182615970 ^ (ulonglong)auStack_88;
  puVar4 = (undefined8 *)param_1[0x24];
  if (puVar4 != (undefined8 *)0x0) {
    if (0xf < (ulonglong)puVar4[3]) {
      puVar4 = (undefined8 *)*puVar4;
    }
    local_58 = 0;
    lVar5 = -1;
    local_50 = 0xf;
    local_68 = 0;
    do {
      lVar5 = lVar5 + 1;
    } while (*(char *)((longlong)puVar4 + lVar5) != '\0');
    FUN_1805a6cb0(&local_68);
    if (local_58 != 0) {
      (**(code **)(*param_1 + 0x78))(param_1,local_48,&local_68);
      if (param_4 != '\0') {
        std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
      }
      puVar4 = param_3 + 2;
      if (0xf < (ulonglong)param_3[3]) {
        param_3 = (undefined8 *)*param_3;
      }
      uVar2 = FUN_1805b0d80(param_2,param_3,*puVar4);
      uVar2 = FUN_1805a0df0(uVar2,"  Where......: ");
      ppppuVar3 = local_48;
      if (0xf < local_30) {
        ppppuVar3 = (undefined8 ****)local_48[0];
      }
      FUN_1805b0d80(uVar2,ppppuVar3,local_38);
      if (param_5 != '\0') {
        std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
      }
      if (0xf < local_30) {
        ppppuVar3 = (undefined8 ****)local_48[0];
        if ((0xfff < local_30 + 1) &&
           (ppppuVar3 = (undefined8 ****)local_48[0][-1],
           0x1f < (ulonglong)((longlong)local_48[0] + (-8 - (longlong)ppppuVar3)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(ppppuVar3);
      }
    }
    if (0xf < local_50) {
      pvVar1 = (void *)CONCAT71(uStack_67,local_68);
      _Memory = pvVar1;
      if ((0xfff < local_50 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
  }
}



############ FUN_ 1805d4530 size=973 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d4530(longlong param_1)

{
  longlong *plVar1;
  longlong *plVar2;
  int *piVar3;
  int iVar4;
  ulonglong uVar5;
  longlong lVar6;
  uint *puVar7;
  longlong *plVar8;
  void *pvVar9;
  void *pvVar10;
  longlong *plVar11;
  longlong lVar12;
  size_t _Size;
  longlong lVar13;
  size_t _Size_00;
  undefined1 auStack_f8 [32];
  longlong *local_d8;
  ulonglong local_d0;
  longlong local_c8;
  longlong *local_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined4 local_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  longlong local_90 [2];
  longlong local_80;
  ulonglong uStack_78;
  uint local_70;
  uint uStack_6c;
  uint uStack_68;
  uint uStack_64;
  longlong local_60;
  ulonglong uStack_58;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  ulonglong local_30;
  
  local_b8 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_f8;
  lVar6 = FUN_1805d2570();
  lVar12 = -1;
  do {
    lVar12 = lVar12 + 1;
  } while (*(char *)(lVar6 + lVar12) != '\0');
  plVar1 = (longlong *)(param_1 + 0x78);
  FUN_1805a6cb0(plVar1,lVar6);
  lVar6 = *(longlong *)(param_1 + 0x20);
  plVar8 = *(longlong **)(param_1 + 0x28);
  lVar12 = lVar6;
  if (plVar8 != (longlong *)0x0) {
    LOCK();
    *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
    UNLOCK();
  }
  while( true ) {
    local_c8 = lVar12;
    local_c0 = plVar8;
    if (lVar6 == 0) {
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar8 + 1;
        lVar6 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar6 == 1) {
          (**(code **)(*plVar8 + 8))(plVar8);
          LOCK();
          piVar3 = (int *)((longlong)plVar8 + 0xc);
          iVar4 = *piVar3;
          *piVar3 = *piVar3 + -1;
          UNLOCK();
          if (iVar4 == 1) {
            (**(code **)(*local_c0 + 0x10))();
          }
        }
      }
    }
    local_80 = 0;
    uStack_78 = 0xf;
    local_90[0]._0_1_ = 0;
    FUN_1805a6cb0(local_90,"\nCaused by: ",0xc);
    plVar8 = plVar1;
    if (0xf < *(ulonglong *)(param_1 + 0x90)) {
      plVar8 = (longlong *)*plVar1;
    }
    uVar5 = *(ulonglong *)(param_1 + 0x88);
    if (uStack_78 - local_80 < uVar5) {
      local_d8 = plVar8;
      local_d0 = uVar5;
      puVar7 = (uint *)FUN_1805cfe00(local_90,uVar5,0,0);
    }
    else {
      plVar11 = local_90;
      if (0xf < uStack_78) {
        plVar11 = (longlong *)CONCAT71(local_90[0]._1_7_,(undefined1)local_90[0]);
      }
      _Size_00 = uVar5;
      if (((plVar11 < (longlong *)(uVar5 + (longlong)plVar8)) &&
          (plVar8 <= (longlong *)((longlong)plVar11 + local_80))) &&
         (_Size_00 = 0, plVar8 < plVar11)) {
        _Size_00 = (longlong)plVar11 - (longlong)plVar8;
      }
      _Size = local_80 + 1;
      local_80 = local_80 + uVar5;
      memmove((undefined1 *)((longlong)plVar11 + uVar5),plVar11,_Size);
      memcpy(plVar11,plVar8,_Size_00);
      memcpy((undefined1 *)((longlong)plVar11 + _Size_00),
             (undefined1 *)(_Size_00 + uVar5 + (longlong)plVar8),uVar5 - _Size_00);
      puVar7 = (uint *)local_90;
    }
    local_60 = 0;
    uStack_58 = 0;
    local_70 = *puVar7;
    uStack_6c = puVar7[1];
    uStack_68 = puVar7[2];
    uStack_64 = puVar7[3];
    local_60 = *(longlong *)(puVar7 + 4);
    uStack_58 = *(ulonglong *)(puVar7 + 6);
    puVar7[4] = 0;
    puVar7[5] = 0;
    puVar7[6] = 0xf;
    puVar7[7] = 0;
    *(undefined1 *)puVar7 = 0;
    lVar6 = FUN_1805d2570(lVar12);
    lVar13 = -1;
    do {
      lVar13 = lVar13 + 1;
    } while (*(char *)(lVar6 + lVar13) != '\0');
    plVar8 = (longlong *)FUN_1805a6a80(&local_70,lVar6);
    plVar11 = local_c0;
    local_b0 = (undefined4)*plVar8;
    uStack_ac = *(undefined4 *)((longlong)plVar8 + 4);
    pvVar10 = (void *)*plVar8;
    uStack_a8 = (undefined4)plVar8[1];
    uStack_a4 = *(undefined4 *)((longlong)plVar8 + 0xc);
    local_a0 = (undefined4)plVar8[2];
    uStack_9c = *(undefined4 *)((longlong)plVar8 + 0x14);
    uStack_98 = (undefined4)plVar8[3];
    uStack_94 = *(undefined4 *)((longlong)plVar8 + 0x1c);
    uVar5 = plVar8[3];
    plVar8[2] = 0;
    plVar8[3] = 0xf;
    *(undefined1 *)plVar8 = 0;
    local_50 = local_b0;
    uStack_4c = uStack_ac;
    uStack_48 = uStack_a8;
    uStack_44 = uStack_a4;
    local_40 = local_a0;
    uStack_3c = uStack_9c;
    uStack_38 = uStack_98;
    uStack_34 = uStack_94;
    if (plVar1 == (longlong *)&local_50) {
      if (0xf < uVar5) {
        pvVar9 = pvVar10;
        if ((0xfff < uVar5 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar10 + -8),
           0x1f < (ulonglong)((longlong)pvVar10 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
    }
    else {
      if (0xf < *(ulonglong *)(param_1 + 0x90)) {
        pvVar10 = (void *)*plVar1;
        pvVar9 = pvVar10;
        if ((0xfff < *(ulonglong *)(param_1 + 0x90) + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar10 + -8),
           0x1f < (ulonglong)((longlong)pvVar10 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      *(undefined8 *)(param_1 + 0x90) = 0xf;
      *(undefined1 *)plVar1 = 0;
      *(undefined4 *)plVar1 = local_b0;
      *(undefined4 *)(param_1 + 0x7c) = uStack_ac;
      *(undefined4 *)(param_1 + 0x80) = uStack_a8;
      *(undefined4 *)(param_1 + 0x84) = uStack_a4;
      *(undefined4 *)(param_1 + 0x88) = local_a0;
      *(undefined4 *)(param_1 + 0x8c) = uStack_9c;
      *(undefined4 *)(param_1 + 0x90) = uStack_98;
      *(undefined4 *)(param_1 + 0x94) = uStack_94;
    }
    if (0xf < uStack_58) break;
    local_60 = 0;
    uStack_58 = 0xf;
    local_70 = local_70 & 0xffffff00;
    if (0xf < uStack_78) {
      pvVar9 = (void *)CONCAT71(local_90[0]._1_7_,(undefined1)local_90[0]);
      pvVar10 = pvVar9;
      if ((0xfff < uStack_78 + 1) &&
         (pvVar10 = *(void **)((longlong)pvVar9 + -8),
         0x1f < (ulonglong)((longlong)pvVar9 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar10);
    }
    lVar6 = *(longlong *)(lVar12 + 0x20);
    plVar8 = *(longlong **)(lVar12 + 0x28);
    if (plVar8 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
      UNLOCK();
    }
    lVar12 = lVar6;
    if (local_c0 != (longlong *)0x0) {
      LOCK();
      plVar2 = local_c0 + 1;
      lVar13 = *plVar2;
      *(int *)plVar2 = (int)*plVar2 + -1;
      UNLOCK();
      if ((int)lVar13 == 1) {
        lVar12 = *local_c0;
        local_c8 = lVar6;
        local_c0 = plVar8;
        (**(code **)(lVar12 + 8))(plVar11);
        LOCK();
        piVar3 = (int *)((longlong)plVar11 + 0xc);
        iVar4 = *piVar3;
        *piVar3 = *piVar3 + -1;
        UNLOCK();
        lVar12 = local_c8;
        plVar8 = local_c0;
        if (iVar4 == 1) {
          (**(code **)(*plVar11 + 0x10))(plVar11);
          lVar12 = local_c8;
          plVar8 = local_c0;
        }
      }
    }
  }
  pvVar9 = (void *)CONCAT44(uStack_6c,local_70);
  pvVar10 = pvVar9;
  if ((0xfff < uStack_58 + 1) &&
     (pvVar10 = *(void **)((longlong)pvVar9 + -8),
     0x1f < (ulonglong)((longlong)pvVar9 + (-8 - (longlong)pvVar10)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar10);
}



############ FUN_ 1805d4930 size=964 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d4930(longlong param_1,basic_ostream<char,std::char_traits<char>_> *param_2,
                  undefined8 *param_3,char param_4,char param_5)

{
  longlong *plVar1;
  longlong lVar2;
  void *pvVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  void *pvVar6;
  undefined8 *puVar7;
  undefined1 auStack_c8 [32];
  undefined1 local_a8;
  undefined1 local_98;
  undefined7 uStack_97;
  undefined8 local_88;
  ulonglong local_80;
  undefined1 local_78;
  undefined7 uStack_77;
  undefined8 local_68;
  ulonglong local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_c8;
  if (*(longlong *)(param_1 + 0x20) == 0) {
  }
  if (param_4 != '\0') {
    std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
  }
  puVar7 = param_3;
  if (0xf < (ulonglong)param_3[3]) {
    puVar7 = (undefined8 *)*param_3;
  }
  uVar4 = FUN_1805b0d80(param_2,puVar7,param_3[2]);
  FUN_1805a0df0(uVar4,"  Caused by..: ");
  if (param_5 == '\0') {
    plVar1 = *(longlong **)(param_1 + 0x20);
    local_80 = 0xf;
    local_88 = 0;
    local_98 = 0;
    FUN_1805a6cb0(&local_98,&DAT_181baf991,0);
    local_a8 = 1;
    (**(code **)(*plVar1 + 0x58))(plVar1,param_2,&local_98,0);
    if (0xf < local_80) {
      pvVar3 = (void *)CONCAT71(uStack_97,local_98);
      pvVar6 = pvVar3;
      if ((0xfff < local_80 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar6);
    }
    plVar1 = *(longlong **)(param_1 + 0x20);
    local_88 = 0;
    local_80 = 0xf;
    local_98 = 0;
    FUN_1805a6cb0(&local_98,&DAT_181bb3ba8,2);
    lVar2 = *plVar1;
    uVar4 = FUN_1805cfad0(&local_78,param_3,&local_98);
    puVar5 = (undefined8 *)(**(code **)(lVar2 + 0x30))(plVar1,&local_58,uVar4,1);
    puVar7 = puVar5 + 2;
    if (0xf < (ulonglong)puVar5[3]) {
      puVar5 = (undefined8 *)*puVar5;
    }
    FUN_1805b0d80(param_2,puVar5,*puVar7);
    if (0xf < local_40) {
      pvVar3 = (void *)CONCAT71(uStack_57,local_58);
      pvVar6 = pvVar3;
      if ((0xfff < local_40 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar6);
    }
    local_48 = 0;
    local_40 = 0xf;
    local_58 = 0;
    if (0xf < local_60) {
      pvVar3 = (void *)CONCAT71(uStack_77,local_78);
      pvVar6 = pvVar3;
      if ((0xfff < local_60 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar6);
    }
    local_68 = 0;
    local_60 = 0xf;
    local_78 = 0;
    if (local_80 < 0x10) {
    }
    pvVar3 = (void *)CONCAT71(uStack_97,local_98);
    pvVar6 = pvVar3;
    if ((0xfff < local_80 + 1) &&
       (pvVar6 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
  else {
    std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
    plVar1 = *(longlong **)(param_1 + 0x20);
    local_80 = 0xf;
    local_88 = 0;
    local_98 = 0;
    FUN_1805a6cb0(&local_98,&DAT_181bb3ba8,2);
    lVar2 = *plVar1;
    uVar4 = FUN_1805cfad0(&local_58,param_3,&local_98);
    puVar5 = (undefined8 *)(**(code **)(lVar2 + 0x30))(plVar1,&local_78,uVar4,0);
    puVar7 = puVar5 + 2;
    if (0xf < (ulonglong)puVar5[3]) {
      puVar5 = (undefined8 *)*puVar5;
    }
    FUN_1805b0d80(param_2,puVar5,*puVar7);
    if (0xf < local_60) {
      pvVar3 = (void *)CONCAT71(uStack_77,local_78);
      pvVar6 = pvVar3;
      if ((0xfff < local_60 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar6);
    }
    local_68 = 0;
    local_60 = 0xf;
    local_78 = 0;
    if (0xf < local_40) {
      pvVar3 = (void *)CONCAT71(uStack_57,local_58);
      pvVar6 = pvVar3;
      if ((0xfff < local_40 + 1) &&
         (pvVar6 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar6);
    }
    local_48 = 0;
    local_40 = 0xf;
    local_58 = 0;
    if (local_80 < 0x10) {
    }
    pvVar3 = (void *)CONCAT71(uStack_97,local_98);
    pvVar6 = pvVar3;
    if ((0xfff < local_80 + 1) &&
       (pvVar6 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
  local_40 = 0xf;
  local_48 = 0;
  local_58 = 0;
  local_60 = 0xf;
  local_68 = 0;
  local_78 = 0;
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 1805d4d10 size=1691 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805d4d10(undefined8 param_1,basic_ostream<char,std::char_traits<char>_> *param_2,
                  undefined8 *param_3,char param_4,char param_5,char param_6)

{
  byte bVar1;
  void *pvVar2;
  undefined8 uVar3;
  longlong lVar4;
  ulonglong uVar5;
  basic_ostream<char,std::char_traits<char>_> *pbVar6;
  void *pvVar7;
  undefined8 uVar8;
  undefined8 *puVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  ulonglong uVar12;
  byte *pbVar13;
  byte *pbVar14;
  ulonglong uVar15;
  longlong lVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  undefined1 auStack_1f8 [32];
  basic_ostream<char,std::char_traits<char>_> *local_1d8;
  undefined1 local_1d0;
  undefined7 uStack_1cf;
  undefined8 local_1c0;
  ulonglong local_1b8;
  undefined1 local_1b0;
  undefined7 uStack_1af;
  ulonglong local_1a0;
  ulonglong local_198;
  byte local_190;
  undefined7 uStack_18f;
  longlong local_180;
  ulonglong local_178;
  undefined1 local_170;
  undefined7 uStack_16f;
  undefined8 local_160;
  ulonglong local_158;
  char local_148 [256];
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_1f8;
  local_1d8 = param_2;
  if (param_6 == '\0') {
    if (param_4 != '\0') {
      std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
    }
    puVar9 = param_3 + 2;
    if (0xf < (ulonglong)param_3[3]) {
      param_3 = (undefined8 *)*param_3;
    }
    uVar3 = FUN_1805b0d80(param_2,param_3,*puVar9);
    uVar8 = FUN_1805d11c0(param_1);
    uVar3 = FUN_1805a0df0(uVar3,"  Debug msg..:  ");
    FUN_1805a0df0(uVar3,uVar8);
    goto LAB_1805d5317;
  }
  if (param_4 != '\0') {
    std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
  }
  puVar9 = param_3;
  if (0xf < (ulonglong)param_3[3]) {
    puVar9 = (undefined8 *)*param_3;
  }
  uVar3 = FUN_1805b0d80(param_2,puVar9,param_3[2]);
  FUN_1805a0df0(uVar3,"  Debug msg..: ");
  uVar12 = 0;
  local_158 = 0xf;
  local_160 = 0;
  local_170 = 0;
  FUN_1805a6cb0(&local_170,"               ",0xf);
  lVar4 = FUN_1805d11c0(param_1);
  lVar16 = -1;
  local_1a0 = 0;
  local_198 = 0xf;
  local_1b0 = 0;
  do {
    lVar16 = lVar16 + 1;
  } while (*(char *)(lVar4 + lVar16) != '\0');
  FUN_1805a6cb0(&local_1b0,lVar4);
  local_180 = 0;
  local_178 = 0xf;
  local_190 = 0;
  FUN_1805a6cb0(&local_190,&DAT_181bb3b78,1);
  uVar5 = FUN_1805d05b0(&local_1b0,&local_190,0);
  pbVar14 = (byte *)CONCAT71(uStack_18f,local_190);
  puVar11 = (undefined1 *)CONCAT71(uStack_1af,local_1b0);
  uVar15 = local_1a0;
  uVar18 = local_198;
  if (uVar5 != 0xffffffffffffffff) {
    do {
      local_1b8 = 0xf;
      local_1c0 = 0;
      local_1d0 = 0;
      if (uVar12 == 0) {
        uVar12 = uVar5;
        if (uVar15 < uVar5) {
          uVar12 = uVar15;
        }
        puVar10 = &local_1b0;
        if (0xf < uVar18) {
          puVar10 = puVar11;
        }
        FUN_1805a6cb0(&local_1d0,puVar10,uVar12);
        puVar11 = &local_1d0;
        if (0xf < local_1b8) {
          puVar11 = (undefined1 *)CONCAT71(uStack_1cf,local_1d0);
        }
        pbVar6 = (basic_ostream<char,std::char_traits<char>_> *)
                 FUN_1805b0d80(local_1d8,puVar11,local_1c0);
        std::basic_ostream<char,std::char_traits<char>_>::operator<<(pbVar6,FUN_18049c380);
        if (0xf < local_1b8) {
          pvVar2 = (void *)CONCAT71(uStack_1cf,local_1d0);
          pvVar7 = pvVar2;
          if ((0xfff < local_1b8 + 1) &&
             (pvVar7 = *(void **)((longlong)pvVar2 + -8),
             0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
LAB_1805d4fe3:
                    /* WARNING: Subroutine does not return */
          free(pvVar7);
        }
      }
      else {
        if (uVar15 < uVar12) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69e0();
        }
        uVar17 = uVar5 - uVar12;
        if (uVar15 - uVar12 < uVar5 - uVar12) {
          uVar17 = uVar15 - uVar12;
        }
        puVar10 = &local_1b0;
        if (0xf < uVar18) {
          puVar10 = puVar11;
        }
        FUN_1805a6cb0(&local_1d0,puVar10 + uVar12,uVar17);
        puVar9 = param_3;
        if (0xf < (ulonglong)param_3[3]) {
          puVar9 = (undefined8 *)*param_3;
        }
        uVar3 = FUN_1805b0d80(local_1d8,puVar9,param_3[2]);
        puVar11 = &local_170;
        if (0xf < local_158) {
          puVar11 = (undefined1 *)CONCAT71(uStack_16f,local_170);
        }
        uVar3 = FUN_1805b0d80(uVar3,puVar11,local_160);
        puVar11 = &local_1d0;
        if (0xf < local_1b8) {
          puVar11 = (undefined1 *)CONCAT71(uStack_1cf,local_1d0);
        }
        pbVar6 = (basic_ostream<char,std::char_traits<char>_> *)
                 FUN_1805b0d80(uVar3,puVar11,local_1c0);
        std::basic_ostream<char,std::char_traits<char>_>::operator<<(pbVar6,FUN_18049c380);
        if (0xf < local_1b8) {
          pvVar2 = (void *)CONCAT71(uStack_1cf,local_1d0);
          pvVar7 = pvVar2;
          if ((0xfff < local_1b8 + 1) &&
             (pvVar7 = *(void **)((longlong)pvVar2 + -8),
             0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
          goto LAB_1805d4fe3;
        }
      }
      uVar18 = local_198;
      uVar15 = local_1a0;
      uVar12 = local_180 + uVar5;
      if (local_1a0 <= uVar12) goto LAB_1805d523c;
      puVar11 = (undefined1 *)CONCAT71(uStack_1af,local_1b0);
      pbVar13 = &local_190;
      if (0xf < local_178) {
        pbVar13 = pbVar14;
      }
      puVar10 = &local_1b0;
      if (0xf < local_198) {
        puVar10 = puVar11;
      }
      if (local_180 != 0) {
        memset(local_148,0,0x100);
        lVar4 = (longlong)(pbVar13 + local_180) - (longlong)pbVar13;
        if (pbVar13 + local_180 < pbVar13) {
          lVar4 = 0;
        }
        if (lVar4 != 0) {
          pbVar14 = pbVar13;
          do {
            bVar1 = *pbVar14;
            pbVar14 = pbVar14 + 1;
            local_148[bVar1] = '\x01';
          } while ((longlong)pbVar14 - (longlong)pbVar13 != lVar4);
        }
        for (pbVar14 = puVar10 + uVar12; pbVar14 < puVar10 + uVar15; pbVar14 = pbVar14 + 1) {
          if (local_148[*pbVar14] != '\0') {
            uVar5 = (longlong)pbVar14 - (longlong)puVar10;
            goto LAB_1805d509b;
          }
        }
      }
      uVar5 = 0xffffffffffffffff;
LAB_1805d509b:
      if (uVar5 == 0xffffffffffffffff) goto LAB_1805d50b7;
      pbVar14 = (byte *)CONCAT71(uStack_18f,local_190);
    } while( true );
  }
LAB_1805d50c1:
  if (uVar12 < uVar15) {
    local_1b8 = 0xf;
    local_1c0 = 0;
    local_1d0 = 0;
    if (uVar12 == 0) {
      uVar12 = 0xffffffffffffffff;
      if (uVar15 != 0xffffffffffffffff) {
        uVar12 = uVar15;
      }
      puVar10 = &local_1b0;
      if (0xf < uVar18) {
        puVar10 = puVar11;
      }
      FUN_1805a6cb0(&local_1d0,puVar10,uVar12);
      puVar11 = &local_1d0;
      if (0xf < local_1b8) {
        puVar11 = (undefined1 *)CONCAT71(uStack_1cf,local_1d0);
      }
      FUN_1805b0d80(local_1d8,puVar11,local_1c0);
      if (0xf < local_1b8) {
        pvVar2 = (void *)CONCAT71(uStack_1cf,local_1d0);
        pvVar7 = pvVar2;
        if ((0xfff < local_1b8 + 1) &&
           (pvVar7 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
LAB_1805d5237:
                    /* WARNING: Subroutine does not return */
        free(pvVar7);
      }
    }
    else {
      if (uVar15 < uVar12) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69e0();
      }
      lVar4 = -1;
      if (uVar15 - uVar12 != -1) {
        lVar4 = uVar15 - uVar12;
      }
      puVar10 = &local_1b0;
      if (0xf < uVar18) {
        puVar10 = puVar11;
      }
      FUN_1805a6cb0(&local_1d0,puVar10 + uVar12,lVar4);
      puVar9 = param_3 + 2;
      if (0xf < (ulonglong)param_3[3]) {
        param_3 = (undefined8 *)*param_3;
      }
      uVar3 = FUN_1805b0d80(local_1d8,param_3,*puVar9);
      puVar11 = &local_170;
      if (0xf < local_158) {
        puVar11 = (undefined1 *)CONCAT71(uStack_16f,local_170);
      }
      uVar3 = FUN_1805b0d80(uVar3,puVar11,local_160);
      puVar11 = &local_1d0;
      if (0xf < local_1b8) {
        puVar11 = (undefined1 *)CONCAT71(uStack_1cf,local_1d0);
      }
      FUN_1805b0d80(uVar3,puVar11,local_1c0);
      if (0xf < local_1b8) {
        pvVar2 = (void *)CONCAT71(uStack_1cf,local_1d0);
        pvVar7 = pvVar2;
        if ((0xfff < local_1b8 + 1) &&
           (pvVar7 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
        goto LAB_1805d5237;
      }
    }
LAB_1805d523c:
    puVar11 = (undefined1 *)CONCAT71(uStack_1af,local_1b0);
    uVar18 = local_198;
  }
  goto LAB_1805d5246;
LAB_1805d50b7:
  if (uVar12 != 0xffffffffffffffff) goto LAB_1805d50c1;
LAB_1805d5246:
  if (0xf < local_178) {
    pvVar2 = (void *)CONCAT71(uStack_18f,local_190);
    pvVar7 = pvVar2;
    if ((0xfff < local_178 + 1) &&
       (pvVar7 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar7);
  }
  if (0xf < uVar18) {
    puVar10 = puVar11;
    if ((0xfff < uVar18 + 1) &&
       (puVar10 = *(undefined1 **)(puVar11 + -8),
       (undefined1 *)0x1f < puVar11 + (-8 - (longlong)puVar10))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(puVar10);
  }
  local_1a0 = 0;
  local_198 = 0xf;
  local_1b0 = 0;
  param_2 = local_1d8;
  if (0xf < local_158) {
    pvVar2 = (void *)CONCAT71(uStack_16f,local_170);
    pvVar7 = pvVar2;
    if ((0xfff < local_158 + 1) &&
       (pvVar7 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar7);
  }
LAB_1805d5317:
  if (param_5 != '\0') {
    std::basic_ostream<char,std::char_traits<char>_>::operator<<(param_2,FUN_18049c380);
  }
}



############ FUN_ 1805d6740 size=75 ############

undefined8 * FUN_1805d6740(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::fusion::EncryptedBlobArray::vftable;
  FUN_1805d68c0(param_1 + 0xe);
  FUN_1805b91b0(param_1 + 3);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d6790 size=52 ############

void * FUN_1805d6790(void *param_1,ulonglong param_2)

{
  FUN_1805d66b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d67d0 size=84 ############

undefined8 * FUN_1805d67d0(undefined8 *param_1,uint param_2)

{
  *param_1 = apache::thrift::transport::TMemoryBuffer::vftable;
  if (*(char *)((longlong)param_1 + 0x34) != '\0') {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[5]);
  }
  *param_1 = apache::thrift::transport::TTransport::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d6830 size=43 ############

undefined8 * FUN_1805d6830(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = apache::thrift::transport::TTransport::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805d6860 size=62 ############

undefined8 * FUN_1805d6860(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = apache::thrift::transport::TTransportException::vftable;
  FUN_1805d66b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805e3900 size=4199 ############

void FUN_1805e3900(longlong param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  if (0xf < *(ulonglong *)(param_1 + 0x1200)) {
    pvVar1 = *(void **)(param_1 + 0x11e8);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1200) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1200) = 0xf;
  *(undefined8 *)(param_1 + 0x11f8) = 0;
  *(undefined1 *)(param_1 + 0x11e8) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x11e0)) {
    pvVar1 = *(void **)(param_1 + 0x11c8);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x11e0) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x11d8) = 0;
  *(undefined8 *)(param_1 + 0x11e0) = 0xf;
  *(undefined1 *)(param_1 + 0x11c8) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x11b8)) {
    pvVar1 = *(void **)(param_1 + 0x11a0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x11b8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x11b0) = 0;
  *(undefined8 *)(param_1 + 0x11b8) = 0xf;
  *(undefined1 *)(param_1 + 0x11a0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1198)) {
    pvVar1 = *(void **)(param_1 + 0x1180);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1198) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1190) = 0;
  *(undefined8 *)(param_1 + 0x1198) = 0xf;
  *(undefined1 *)(param_1 + 0x1180) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1178)) {
    pvVar1 = *(void **)(param_1 + 0x1160);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1178) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1170) = 0;
  *(undefined8 *)(param_1 + 0x1178) = 0xf;
  *(undefined1 *)(param_1 + 0x1160) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1158)) {
    pvVar1 = *(void **)(param_1 + 0x1140);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1158) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1150) = 0;
  *(undefined8 *)(param_1 + 0x1158) = 0xf;
  *(undefined1 *)(param_1 + 0x1140) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1138)) {
    pvVar1 = *(void **)(param_1 + 0x1120);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1138) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1130) = 0;
  *(undefined8 *)(param_1 + 0x1138) = 0xf;
  *(undefined1 *)(param_1 + 0x1120) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1118)) {
    pvVar1 = *(void **)(param_1 + 0x1100);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1118) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1110) = 0;
  *(undefined8 *)(param_1 + 0x1118) = 0xf;
  *(undefined1 *)(param_1 + 0x1100) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x10f8)) {
    pvVar1 = *(void **)(param_1 + 0x10e0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x10f8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x10f0) = 0;
  *(undefined8 *)(param_1 + 0x10f8) = 0xf;
  *(undefined1 *)(param_1 + 0x10e0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x10d8)) {
    pvVar1 = *(void **)(param_1 + 0x10c0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x10d8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x10d0) = 0;
  *(undefined8 *)(param_1 + 0x10d8) = 0xf;
  *(undefined1 *)(param_1 + 0x10c0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x10b8)) {
    pvVar1 = *(void **)(param_1 + 0x10a0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x10b8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x10b0) = 0;
  *(undefined8 *)(param_1 + 0x10b8) = 0xf;
  *(undefined1 *)(param_1 + 0x10a0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1098)) {
    pvVar1 = *(void **)(param_1 + 0x1080);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1098) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1090) = 0;
  *(undefined8 *)(param_1 + 0x1098) = 0xf;
  *(undefined1 *)(param_1 + 0x1080) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1078)) {
    pvVar1 = *(void **)(param_1 + 0x1060);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1078) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1070) = 0;
  *(undefined8 *)(param_1 + 0x1078) = 0xf;
  *(undefined1 *)(param_1 + 0x1060) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1058)) {
    pvVar1 = *(void **)(param_1 + 0x1040);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1058) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1050) = 0;
  *(undefined8 *)(param_1 + 0x1058) = 0xf;
  *(undefined1 *)(param_1 + 0x1040) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1038)) {
    pvVar1 = *(void **)(param_1 + 0x1020);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1038) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1030) = 0;
  *(undefined8 *)(param_1 + 0x1038) = 0xf;
  *(undefined1 *)(param_1 + 0x1020) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0x1018)) {
    pvVar1 = *(void **)(param_1 + 0x1000);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0x1018) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0x1010) = 0;
  *(undefined8 *)(param_1 + 0x1018) = 0xf;
  *(undefined1 *)(param_1 + 0x1000) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xff8)) {
    pvVar1 = *(void **)(param_1 + 0xfe0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xff8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xff0) = 0;
  *(undefined8 *)(param_1 + 0xff8) = 0xf;
  *(undefined1 *)(param_1 + 0xfe0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xfd8)) {
    pvVar1 = *(void **)(param_1 + 0xfc0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xfd8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xfd0) = 0;
  *(undefined8 *)(param_1 + 0xfd8) = 0xf;
  *(undefined1 *)(param_1 + 0xfc0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xfb8)) {
    pvVar1 = *(void **)(param_1 + 4000);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xfb8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xfb0) = 0;
  *(undefined8 *)(param_1 + 0xfb8) = 0xf;
  *(undefined1 *)(param_1 + 4000) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xf98)) {
    pvVar1 = *(void **)(param_1 + 0xf80);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xf98) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xf90) = 0;
  *(undefined8 *)(param_1 + 0xf98) = 0xf;
  *(undefined1 *)(param_1 + 0xf80) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xf78)) {
    pvVar1 = *(void **)(param_1 + 0xf60);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xf78) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xf70) = 0;
  *(undefined8 *)(param_1 + 0xf78) = 0xf;
  *(undefined1 *)(param_1 + 0xf60) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xf58)) {
    pvVar1 = *(void **)(param_1 + 0xf40);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xf58) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xf50) = 0;
  *(undefined8 *)(param_1 + 0xf58) = 0xf;
  *(undefined1 *)(param_1 + 0xf40) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xf38)) {
    pvVar1 = *(void **)(param_1 + 0xf20);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xf38) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xf30) = 0;
  *(undefined8 *)(param_1 + 0xf38) = 0xf;
  *(undefined1 *)(param_1 + 0xf20) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xf18)) {
    pvVar1 = *(void **)(param_1 + 0xf00);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xf18) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xf10) = 0;
  *(undefined8 *)(param_1 + 0xf18) = 0xf;
  *(undefined1 *)(param_1 + 0xf00) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xef8)) {
    pvVar1 = *(void **)(param_1 + 0xee0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xef8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xef0) = 0;
  *(undefined8 *)(param_1 + 0xef8) = 0xf;
  *(undefined1 *)(param_1 + 0xee0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xed8)) {
    pvVar1 = *(void **)(param_1 + 0xec0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xed8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xed0) = 0;
  *(undefined8 *)(param_1 + 0xed8) = 0xf;
  *(undefined1 *)(param_1 + 0xec0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xeb8)) {
    pvVar1 = *(void **)(param_1 + 0xea0);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xeb8) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xeb0) = 0;
  *(undefined8 *)(param_1 + 0xeb8) = 0xf;
  *(undefined1 *)(param_1 + 0xea0) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xe98)) {
    pvVar1 = *(void **)(param_1 + 0xe80);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xe98) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xe90) = 0;
  *(undefined8 *)(param_1 + 0xe98) = 0xf;
  *(undefined1 *)(param_1 + 0xe80) = 0;
  if (0xf < *(ulonglong *)(param_1 + 0xe78)) {
    pvVar1 = *(void **)(param_1 + 0xe60);
    pvVar2 = pvVar1;
    if ((0xfff < *(ulonglong *)(param_1 + 0xe78) + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  *(undefined8 *)(param_1 + 0xe70) = 0;
  *(undefined8 *)(param_1 + 0xe78) = 0xf;
  *(undefined1 *)(param_1 + 0xe60) = 0;
  if (*(ulonglong *)(param_1 + 0xe58) < 0x10) {
    *(undefined8 *)(param_1 + 0xe50) = 0;
    *(undefined8 *)(param_1 + 0xe58) = 0xf;
    *(undefined1 *)(param_1 + 0xe40) = 0;
    FUN_180485450(param_1 + 0xe20);
    FUN_180485450(param_1 + 0xe00);
    FUN_180485450(param_1 + 0xde0);
    FUN_180485450(param_1 + 0xdc0);
    FUN_180485450(param_1 + 0xda0);
    FUN_180485450(param_1 + 0xd80);
    FUN_180485450(param_1 + 0xd60);
    FUN_180485450(param_1 + 0xd40);
    FUN_180485450(param_1 + 0xd20);
    FUN_180485450(param_1 + 0xd00);
    FUN_180485450(param_1 + 0xce0);
    FUN_180485450(param_1 + 0xcc0);
    FUN_180485450(param_1 + 0xca0);
    FUN_180485450(param_1 + 0xc80);
    FUN_180485450(param_1 + 0xc60);
    FUN_180485450(param_1 + 0xc40);
    FUN_180485450(param_1 + 0xc20);
    FUN_180485450(param_1 + 0xc00);
    FUN_180485450(param_1 + 0xbe0);
    FUN_180485450(param_1 + 0xbc0);
    FUN_180485450(param_1 + 0xba0);
    FUN_180485450(param_1 + 0xb80);
    FUN_180485450(param_1 + 0xb60);
    FUN_180485450(param_1 + 0xb40);
    FUN_180485450(param_1 + 0xb20);
    FUN_180485450(param_1 + 0xb00);
    FUN_180485450(param_1 + 0xae0);
    FUN_180485450(param_1 + 0xac0);
    FUN_180485450(param_1 + 0xaa0);
    FUN_180485450(param_1 + 0xa80);
    FUN_180485450(param_1 + 0xa60);
    FUN_180485450(param_1 + 0xa40);
    FUN_180485450(param_1 + 0xa20);
    FUN_180485450(param_1 + 0xa00);
    FUN_180485450(param_1 + 0x9e0);
    FUN_180485450(param_1 + 0x9c0);
    FUN_180485450(param_1 + 0x9a0);
    FUN_180485450(param_1 + 0x980);
    FUN_180485450(param_1 + 0x960);
    FUN_180485450(param_1 + 0x940);
    FUN_180485450(param_1 + 0x920);
    FUN_180485450(param_1 + 0x900);
    FUN_180485450(param_1 + 0x8e0);
    FUN_180485450(param_1 + 0x8c0);
    FUN_180485450(param_1 + 0x8a0);
    FUN_180485450(param_1 + 0x880);
    FUN_180485450(param_1 + 0x860);
    FUN_180485450(param_1 + 0x840);
    FUN_180485450(param_1 + 0x820);
    FUN_180485450(param_1 + 0x800);
    FUN_180485450(param_1 + 0x7e0);
    FUN_180485450(param_1 + 0x7c0);
    FUN_180485450(param_1 + 0x7a0);
    FUN_180485450(param_1 + 0x780);
    FUN_180485450(param_1 + 0x760);
    FUN_180485450(param_1 + 0x740);
    FUN_180485450(param_1 + 0x720);
    FUN_180485450(param_1 + 0x700);
    FUN_180485450(param_1 + 0x6e0);
    FUN_180485450(param_1 + 0x6c0);
    FUN_180485450(param_1 + 0x6a0);
    FUN_180485450(param_1 + 0x680);
    FUN_180485450(param_1 + 0x660);
    FUN_180485450(param_1 + 0x640);
    FUN_180485450(param_1 + 0x620);
    FUN_180485450(param_1 + 0x600);
    FUN_180485450(param_1 + 0x5e0);
    FUN_180485450(param_1 + 0x5c0);
    FUN_180485450(param_1 + 0x5a0);
    FUN_180485450(param_1 + 0x580);
    FUN_180485450(param_1 + 0x560);
    FUN_180485450(param_1 + 0x540);
    FUN_180485450(param_1 + 0x520);
    FUN_180485450(param_1 + 0x500);
    FUN_180485450(param_1 + 0x4e0);
    FUN_180485450(param_1 + 0x4c0);
    FUN_180485450(param_1 + 0x4a0);
    FUN_180485450(param_1 + 0x480);
    FUN_180485450(param_1 + 0x460);
    FUN_180485450(param_1 + 0x440);
    FUN_180485450(param_1 + 0x420);
    FUN_180485450(param_1 + 0x400);
    FUN_180485450(param_1 + 0x3e0);
    FUN_180485450(param_1 + 0x3c0);
    FUN_180485450(param_1 + 0x3a0);
    FUN_180485450(param_1 + 0x380);
    FUN_180485450(param_1 + 0x360);
    FUN_180485450(param_1 + 0x340);
    FUN_180485450(param_1 + 800);
    FUN_180485450(param_1 + 0x300);
    FUN_180485450(param_1 + 0x2e0);
    FUN_180485450(param_1 + 0x2c0);
    FUN_180485450(param_1 + 0x2a0);
    FUN_180485450(param_1 + 0x280);
    FUN_180485450(param_1 + 0x260);
    FUN_180485450(param_1 + 0x240);
    FUN_180485450(param_1 + 0x220);
    FUN_180485450(param_1 + 0x200);
    FUN_180485450(param_1 + 0x1e0);
    FUN_180485450(param_1 + 0x1c0);
    FUN_180485450(param_1 + 0x1a0);
    FUN_180485450(param_1 + 0x138);
    FUN_180485450(param_1 + 0x118);
    FUN_180485450(param_1 + 0xf8);
    FUN_180485450(param_1 + 0xd8);
    FUN_180485450(param_1 + 0xb8);
    FUN_180485450(param_1 + 0x98);
    FUN_180485450(param_1 + 0x78);
    return;
  }
  pvVar1 = *(void **)(param_1 + 0xe40);
  pvVar2 = pvVar1;
  if ((0xfff < *(ulonglong *)(param_1 + 0xe58) + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1805e4c70 size=253 ############

undefined8 * FUN_1805e4c70(undefined8 *param_1,ulonglong param_2)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::fusion::AuthVerificationData::vftable;
  pvVar1 = (void *)param_1[0x86];
  if (pvVar1 == (void *)0x0) {
    FUN_1805e31f0(param_1 + 0x3f);
    param_1[0x2d] = pace::eden::thrift::fusion::EncryptedBlobArray::vftable;
    FUN_1805d68c0(param_1 + 0x3b);
    FUN_1805b91b0(param_1 + 0x30);
    param_1[0x1b] = pace::eden::thrift::fusion::EncryptedBlobArray::vftable;
    FUN_1805d68c0(param_1 + 0x29);
    FUN_1805b91b0(param_1 + 0x1e);
    param_1[9] = pace::eden::thrift::fusion::EncryptedBlobArray::vftable;
    FUN_1805d68c0(param_1 + 0x17);
    FUN_1805b91b0(param_1 + 0xc);
    FUN_1805b9460(param_1 + 1);
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x88] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805e4d90 size=52 ############

void * FUN_1805e4d90(void *param_1,ulonglong param_2)

{
  FUN_1805e31f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805e4dd0 size=52 ############

void * FUN_1805e4dd0(void *param_1,ulonglong param_2)

{
  FUN_1805e3870();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805e4e10 size=62 ############

/* Library Function - Single Match
    public: virtual void * __ptr64 __cdecl Concurrency::details::FreeThreadProxy::`scalar deleting
   destructor'(unsigned int) __ptr64
   
   Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */

void * __thiscall
Concurrency::details::FreeThreadProxy::_scalar_deleting_destructor_
          (FreeThreadProxy *this,uint param_1)

{
  *(undefined ***)this = pace::fusion::EdenAuthCallbackHandler_LocalOnly_SwAndIlok2::vftable;
  FUN_1805e3870();
  if ((param_1 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(this);
  }
  return this;
}



############ FUN_ 1805f1740 size=492 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f1740(uint param_1,char *param_2)

{
  ulonglong uVar1;
  char cVar2;
  locale *plVar3;
  longlong *plVar4;
  char ****ppppcVar5;
  undefined8 *puVar6;
  char cVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  char cVar10;
  undefined1 auStack_78 [32];
  undefined1 local_58 [8];
  _Locimp *local_50;
  undefined8 local_48;
  char ***local_40 [2];
  ulonglong local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  uVar8 = (ulonglong)param_1;
  local_50 = std::locale::_Init(true);
  plVar3 = std::locale::classic();
  cVar2 = FUN_1805f22e0(local_58,plVar3);
  if (cVar2 == '\0') {
    plVar4 = (longlong *)FUN_1805f1950(local_58);
    (**(code **)(*plVar4 + 0x28))(plVar4,local_40);
    if (local_30 != 0) {
      ppppcVar5 = local_40;
      if (0xf < local_28) {
        ppppcVar5 = (char ****)local_40[0];
      }
      if ('\0' < *(char *)ppppcVar5) {
        cVar2 = (**(code **)(*plVar4 + 0x20))(plVar4);
        uVar9 = 0;
        ppppcVar5 = local_40;
        if (0xf < local_28) {
          ppppcVar5 = (char ****)local_40[0];
        }
        cVar7 = *(char *)ppppcVar5;
        cVar10 = cVar7;
        do {
          if (cVar7 == '\0') {
            uVar9 = uVar9 + 1;
            cVar7 = cVar10;
            if (uVar9 < local_30) {
              ppppcVar5 = local_40;
              if (0xf < local_28) {
                ppppcVar5 = (char ****)local_40[0];
              }
              cVar7 = *(char *)((longlong)ppppcVar5 + uVar9);
              if (*(char *)((longlong)ppppcVar5 + uVar9) < '\x01') {
                cVar7 = '\x7f';
              }
            }
            param_2 = param_2 + -1;
            *param_2 = cVar2;
            cVar10 = cVar7;
          }
          cVar7 = cVar7 + -1;
          param_2 = param_2 + -1;
          uVar1 = uVar8 / 10;
          *param_2 = (char)uVar8 + (char)uVar1 * -10 + '0';
          uVar8 = uVar1;
        } while ((int)uVar1 != 0);
        if (0xf < local_28) {
          ppppcVar5 = (char ****)local_40[0];
          if ((0xfff < local_28 + 1) &&
             (ppppcVar5 = (char ****)local_40[0][-1],
             (char *)0x1f < (char *)((longlong)local_40[0] + (-8 - (longlong)ppppcVar5)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(ppppcVar5);
        }
        goto LAB_1805f18ff;
      }
    }
    if (0xf < local_28) {
      ppppcVar5 = (char ****)local_40[0];
      if ((0xfff < local_28 + 1) &&
         (ppppcVar5 = (char ****)local_40[0][-1],
         (char *)0x1f < (char *)((longlong)local_40[0] + (-8 - (longlong)ppppcVar5)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(ppppcVar5);
    }
  }
  do {
    param_2 = param_2 + -1;
    uVar9 = uVar8 / 10;
    *param_2 = (char)uVar8 + (char)uVar9 * -10 + '0';
    uVar8 = uVar9;
  } while ((int)uVar9 != 0);
LAB_1805f18ff:
  if ((local_50 != (_Locimp *)0x0) &&
     (puVar6 = (undefined8 *)(**(code **)(*(longlong *)local_50 + 0x10))(),
     puVar6 != (undefined8 *)0x0)) {
    (**(code **)*puVar6)(puVar6,1);
  }
}



############ FUN_ 1805f25f0 size=90 ############

undefined8 * FUN_1805f25f0(undefined8 *param_1,ulonglong param_2)

{
  param_1[0xd] = pace::
                 ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
                 ::vftable;
  param_1[9] = pace::
               ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
               ::vftable;
  param_1[4] = pace::ThriftClassWrapperBase::vftable;
  param_1[5] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[6] = 0;
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2650 size=118 ############

undefined8 * FUN_1805f2650(undefined8 *param_1,ulonglong param_2)

{
  param_1[0x19] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x15] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x11] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0xd] = pace::ThriftDataMember<int>::vftable;
  param_1[9] = pace::
               ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
               ::vftable;
  param_1[4] = pace::ThriftClassWrapperBase::vftable;
  param_1[5] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[6] = 0;
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f26d0 size=52 ############

void * FUN_1805f26d0(void *param_1,ulonglong param_2)

{
  FUN_1805f2180();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2710 size=43 ############

undefined8 * FUN_1805f2710(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::ThriftDataMember<int>::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2740 size=43 ############

undefined8 * FUN_1805f2740(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::
             ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
             ::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2770 size=52 ############

void * FUN_1805f2770(void *param_1,ulonglong param_2)

{
  FUN_1805f2520();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f27b0 size=125 ############

undefined8 * FUN_1805f27b0(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((longlong *)param_1[6] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[6] + 0x20))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2890 size=62 ############

undefined8 * FUN_1805f2890(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::ExceptionHandlerLog::vftable;
  FUN_1805a55f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f28d0 size=77 ############

undefined8 * FUN_1805f28d0(undefined8 *param_1,ulonglong param_2)

{
  param_1[9] = pace::
               ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
               ::vftable;
  param_1[5] = pace::
               ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
               ::vftable;
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2920 size=105 ############

undefined8 * FUN_1805f2920(undefined8 *param_1,ulonglong param_2)

{
  param_1[9] = pace::ThriftDataMember<int>::vftable;
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[0x15] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x11] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0xd] = pace::
                 ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
                 ::vftable;
  param_1[5] = pace::
               ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
               ::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2990 size=189 ############

undefined8 * FUN_1805f2990(undefined8 *param_1,ulonglong param_2)

{
  param_1[0x25] = pace::ThriftDataMember<int>::vftable;
  param_1[0x31] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x2d] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x29] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x21] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0x1c] = pace::ThriftClassWrapperBase::vftable;
  param_1[0x1e] = 0;
  param_1[0x1d] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[0x18] = pace::ThriftClassWrapperBase::vftable;
  param_1[0x19] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[0x1a] = 0;
  param_1[0x12] =
       pace::ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
       ::vftable;
  param_1[0xe] = pace::
                 ThriftDataMember<std::basic_string<char,std::char_traits<char>,std::allocator<char>_>_>
                 ::vftable;
  param_1[9] = pace::ThriftClassWrapperBase::vftable;
  param_1[10] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[0xb] = 0;
  param_1[5] = pace::ThriftClassWrapperBase::vftable;
  param_1[6] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[7] = 0;
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2a50 size=95 ############

undefined8 * FUN_1805f2a50(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::PaceThriftExceptionWireWrapper::vftable;
  FUN_1805f2180(param_1 + 5);
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2ab0 size=62 ############

undefined8 * FUN_1805f2ab0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::ThriftClassWrapperBase::vftable;
  param_1[1] = pace::ThriftClassWrapperParentInfo::vftable;
  param_1[2] = 0;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805f2af0 size=51 ############

undefined8 * FUN_1805f2af0(undefined8 *param_1,ulonglong param_2)

{
  param_1[1] = 0;
  *param_1 = pace::ThriftClassWrapperParentInfo::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807029f0 size=467 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807029f0(undefined8 *param_1,undefined8 *param_2)

{
  ulonglong uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined2 uVar4;
  int *piVar5;
  void *_Memory;
  undefined8 *puVar6;
  longlong lVar7;
  undefined1 auStack_98 [32];
  ulonglong *local_78;
  undefined4 local_70;
  undefined8 local_68;
  undefined8 *local_60;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 uStack_48;
  longlong local_40;
  ulonglong uStack_38;
  ulonglong local_30;
  
  local_68 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  param_1[2] = 0;
  param_1[3] = 0xf;
  *(undefined1 *)param_1 = 0;
  local_70 = 1;
  puVar6 = param_2;
  if (0xf < (ulonglong)param_2[3]) {
    puVar6 = (undefined8 *)*param_2;
  }
  local_78 = param_2 + 2;
  uVar1 = *local_78;
  local_60 = param_1;
  lVar7 = local_40;
  if (5 < uVar1) {
    piVar5 = memchr(puVar6,99,uVar1 - 5);
    uVar4 = s_class_181bce308._4_2_;
    uVar3 = s_class_181bce308._0_4_;
    lVar7 = local_40;
    while (piVar5 != (int *)0x0) {
      if ((*piVar5 == uVar3) && ((short)piVar5[1] == uVar4)) {
        local_40 = (longlong)piVar5 - (longlong)puVar6;
        if (local_40 == 0) {
          uStack_38 = 0xf;
          local_50 = 0;
          if (uVar1 < 6) {
                    /* WARNING: Subroutine does not return */
            FUN_1805a69e0();
          }
          lVar7 = -1;
          if (uVar1 - 6 != -1) {
            lVar7 = uVar1 - 6;
          }
          puVar6 = param_2;
          if (0xf < (ulonglong)param_2[3]) {
            puVar6 = (undefined8 *)*param_2;
          }
          FUN_1805a6cb0(&local_50,(longlong)puVar6 + 6,lVar7);
          local_70 = 3;
          if (param_1 == (undefined8 *)&local_50) {
            lVar7 = local_40;
            if (0xf < uStack_38) {
              pvVar2 = (void *)CONCAT71(uStack_4f,local_50);
              _Memory = pvVar2;
              if ((0xfff < uStack_38 + 1) &&
                 (_Memory = *(void **)((longlong)pvVar2 + -8),
                 0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
                    /* WARNING: Subroutine does not return */
              free(_Memory);
            }
          }
          else {
            FUN_180485450(param_1);
            *param_1 = CONCAT71(uStack_4f,local_50);
            param_1[1] = uStack_48;
            param_1[2] = local_40;
            param_1[3] = uStack_38;
            lVar7 = local_40;
          }
        }
        break;
      }
      local_40 = lVar7;
      piVar5 = memchr((void *)((longlong)piVar5 + 1),99,
                      (size_t)((longlong)puVar6 + ((uVar1 - 5) - ((longlong)piVar5 + 1))));
      lVar7 = local_40;
    }
  }
  local_40 = lVar7;
  if ((param_1[2] == 0) && (param_1 != param_2)) {
    if (0xf < (ulonglong)param_2[3]) {
      param_2 = (undefined8 *)*param_2;
    }
    FUN_1805a6cb0(param_1,param_2,*local_78);
  }
}



############ FUN_ 1805f4720 size=173 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f4720(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  longlong *plVar2;
  undefined1 auStack_48 [32];
  undefined8 local_28;
  longlong *local_20;
  ulonglong local_18;
  
  local_28 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_48;
  local_20 = param_2;
  if (*(longlong **)(param_1 + 8) != param_2) {
    plVar2 = param_2;
    if (0xf < (ulonglong)param_2[3]) {
      plVar2 = (longlong *)*param_2;
    }
    FUN_1805a6cb0(*(longlong **)(param_1 + 8),plVar2,param_2[2]);
  }
  **(undefined1 **)(param_1 + 0x10) = 0;
  if ((ulonglong)param_2[3] < 0x10) {
    param_2[2] = 0;
    param_2[3] = 0xf;
    *(undefined1 *)param_2 = 0;
  }
  pvVar1 = (void *)*param_2;
  _Memory = pvVar1;
  if ((0xfff < param_2[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805f5010 size=218 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f5010(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  undefined1 auVar1 [16];
  ulonglong uVar2;
  undefined8 uVar3;
  void *_Memory;
  undefined1 auStack_288 [32];
  undefined8 local_268;
  undefined8 local_260;
  undefined8 local_258;
  void *local_250;
  undefined1 local_248 [512];
  ulonglong local_48 [3];
  
  local_258 = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_288;
  if (param_2 == 0) {
    param_2 = -1;
    do {
      param_2 = param_2 + 1;
    } while (*(char *)(param_1 + param_2) != '\0');
    param_2 = param_2 + param_1;
  }
  if (param_1 != param_2) {
    uVar2 = (param_2 - param_1) * 3;
    local_268 = param_3;
    local_260 = param_4;
    if (0x100 < uVar2) {
      auVar1._8_8_ = 0;
      auVar1._0_8_ = uVar2;
      uVar3 = SUB168(ZEXT816(2) * auVar1,0);
      if (SUB168(ZEXT816(2) * auVar1,8) != 0) {
        uVar3 = 0xffffffffffffffff;
      }
      _Memory = (void *)thunk_FUN_1811316e0(uVar3);
      local_250 = _Memory;
      FUN_1805f51f0(param_1,param_2,_Memory,(void *)((longlong)_Memory + (param_2 - param_1) * 6));
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    FUN_1805f51f0(param_1,param_2,local_248,local_48);
  }
}



############ FUN_ 1805f5100 size=210 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1805f5100(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  void *_Memory;
  undefined1 auStack_188 [32];
  undefined8 local_168;
  undefined8 local_160;
  undefined8 local_158;
  void *local_150;
  undefined1 local_148 [256];
  ulonglong local_48 [3];
  
  local_158 = 0xfffffffffffffffe;
  local_48[0] = DAT_182615970 ^ (ulonglong)auStack_188;
  if (param_2 == 0) {
    lVar2 = -1;
    do {
      lVar2 = lVar2 + 1;
    } while (*(short *)(param_1 + lVar2 * 2) != 0);
    param_2 = param_1 + lVar2 * 2;
  }
  if (param_1 != param_2) {
    uVar1 = (param_2 - param_1 >> 1) * 4 + 4;
    local_168 = param_3;
    local_160 = param_4;
    if (0x100 < uVar1) {
      _Memory = (void *)thunk_FUN_1811316e0(uVar1);
      local_150 = _Memory;
      FUN_1805f5360(param_1,param_2,_Memory,(longlong)_Memory + uVar1);
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    FUN_1805f5360(param_1,param_2,local_148,local_48);
  }
}



############ FUN_ 1805f6920 size=53 ############

codecvt<wchar_t,char,_Mbstatet> *
FUN_1805f6920(codecvt<wchar_t,char,_Mbstatet> *param_1,uint param_2)

{
  std::codecvt<wchar_t,char,_Mbstatet>::~codecvt<wchar_t,char,_Mbstatet>(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805fe040 size=52 ############

void * FUN_1805fe040(void *param_1,ulonglong param_2)

{
  FUN_1805fde00();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1805fea50 size=364 ############

void FUN_1805fea50(undefined8 *param_1,undefined8 param_2)

{
  void *pvVar1;
  DWORD DVar2;
  undefined8 uVar3;
  LPWSTR lpBuffer;
  undefined8 *puVar4;
  void *_Memory;
  longlong lVar5;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  undefined8 local_70;
  undefined8 *local_68;
  LPWSTR local_60;
  byte local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_70 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  lVar5 = 0;
  local_78 = 0;
  local_68 = param_1;
  DVar2 = GetCurrentDirectoryW(0,(LPWSTR)0x0);
  if (DVar2 == 0) {
    DVar2 = 1;
  }
  uVar3 = SUB168(ZEXT816(2) * ZEXT416(DVar2),0);
  if (SUB168(ZEXT816(2) * ZEXT416(DVar2),8) != 0) {
    uVar3 = 0xffffffffffffffff;
  }
  lpBuffer = (LPWSTR)thunk_FUN_1811316e0(uVar3);
  local_40 = 0xf;
  local_48 = 0;
  local_58 = 0;
  local_60 = lpBuffer;
  FUN_1805c7d40(&local_58,"boost::filesystem::current_path",0x1f);
  DVar2 = GetCurrentDirectoryW(DVar2,lpBuffer);
  FUN_1805ff8a0(DVar2 == 0,param_2,&local_58);
  if (local_40 < 0x10) {
    param_1[3] = 7;
    param_1[2] = 0;
    puVar4 = param_1;
    if (7 < (ulonglong)param_1[3]) {
      puVar4 = (undefined8 *)*param_1;
    }
    *(undefined2 *)puVar4 = 0;
    FUN_1805f71a0();
    if (*lpBuffer != L'\0') {
      lVar5 = -1;
      do {
        lVar5 = lVar5 + 1;
      } while (lpBuffer[lVar5] != L'\0');
    }
    FUN_1805f6b20(param_1,lpBuffer,lVar5);
                    /* WARNING: Subroutine does not return */
    free(lpBuffer);
  }
  pvVar1 = (void *)CONCAT71(uStack_57,local_58);
  _Memory = pvVar1;
  if (0xfff < local_40 + 1) {
    if ((local_58 & 0x1f) != 0) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    _Memory = *(void **)((longlong)pvVar1 - 8);
    if (pvVar1 <= _Memory) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    if ((ulonglong)((longlong)pvVar1 - (longlong)_Memory) < 8) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
    if (0x27 < (ulonglong)((longlong)pvVar1 - (longlong)_Memory)) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1805ffca0 size=204 ############

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

undefined8 FUN_1805ffca0(LPCWSTR param_1)

{
  HANDLE hDevice;
  void *lpOutBuffer;
  DWORD local_res8 [2];
  HANDLE local_res10;
  void *local_res18;
  
  if (7 < *(ulonglong *)(param_1 + 0xc)) {
    param_1 = *(LPCWSTR *)param_1;
  }
  hDevice = CreateFileW(param_1,8,7,(LPSECURITY_ATTRIBUTES)0x0,3,0x2200000,(HANDLE)0x0);
  if (hDevice == (HANDLE)0xffffffffffffffff) {
    return 0;
  }
  local_res10 = hDevice;
  lpOutBuffer = (void *)thunk_FUN_1811316e0(0x4000);
  local_res18 = lpOutBuffer;
  DeviceIoControl(hDevice,0x900a8,(LPVOID)0x0,0,lpOutBuffer,0x4000,local_res8,(LPOVERLAPPED)0x0);
                    /* WARNING: Subroutine does not return */
  free(lpOutBuffer);
}



############ FUN_ 180603c20 size=52 ############

void * FUN_180603c20(void *param_1,ulonglong param_2)

{
  FUN_180601d20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180603c60 size=52 ############

void * FUN_180603c60(void *param_1,ulonglong param_2)

{
  FUN_180602b10();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180608bd0 size=1018 ############

/* WARNING: Instruction at (ram,0x000180608e54) overlaps instruction at (ram,0x000180608e53)
    */
/* WARNING: Removing unreachable block (ram,0x000180608def) */
/* WARNING: Removing unreachable block (ram,0x000180608ca1) */
/* WARNING: Removing unreachable block (ram,0x000180608e4e) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

void FUN_180608bd0(longlong *param_1)

{
  byte *pbVar1;
  undefined8 *puVar2;
  longlong lVar3;
  undefined1 uVar4;
  undefined4 uVar5;
  ulonglong uVar6;
  byte bVar7;
  uint uVar8;
  undefined2 uVar9;
  ulonglong uVar10;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 local_a8 [56];
  uint local_70;
  undefined4 local_68;
  undefined4 local_58;
  code *local_50;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)local_a8;
  local_68 = 0x3d0;
  local_58 = 0xa70;
  if (param_1 == (longlong *)0x0) {
    do {
      uVar6 = rdtsc();
      uVar10 = uVar6 >> 0x20;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    uVar8 = ((uint)uVar6 ^ (uint)(uVar6 >> 0x20)) * -0x3b3151cb;
    local_70 = (uVar8 >> 0x18 ^ uVar8) * -0x73327333;
    if (local_70 < 0x7fffffff) {
      do {
        uVar10 = 0xfbbf;
        local_50 = FUN_181194940;
        uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
        if ((int)uVar8 < 0) {
          uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
        }
      } while (uVar8 != 0);
      uVar6 = FUN_181194940();
      if (1 < uVar6) {
        lVar3 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
        while (lVar3 != -0x3333333333333334) {
          *(longlong *)register0x00000020 = 0;
          register0x00000020 = (BADSPACEBASE *)((longlong)register0x00000020 + 0x40);
          lVar3 = *(longlong *)register0x00000020;
        }
      }
    }
    do {
      FUN_180607749();
      uVar9 = (undefined2)uVar10;
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
    } while (uVar8 != 0);
    do {
      uVar8 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar8 < 0) {
        uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
      }
      bVar7 = (byte)uVar8;
    } while (uVar8 != 0);
    FUN_18060987d();
                    /* WARNING: Call to offcut address within same function */
    uVar5 = func_0x000180608e90();
    uVar4 = in(uVar9);
    pbVar1 = (byte *)((ulonglong)(CONCAT31((int3)((uint)uVar5 >> 8),uVar4) | 0x83483e00) - 9);
    *pbVar1 = *pbVar1 ^ bVar7;
    return;
  }
  puVar2 = (undefined8 *)*param_1;
  if (puVar2 != (undefined8 *)0x0) {
    (**(code **)*puVar2)(puVar2,1);
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 180609a70 size=677 ############

/* WARNING: Control flow encountered bad instruction data */
/* WARNING: Instruction at (ram,0x000180609cdd) overlaps instruction at (ram,0x000180609cd8)
    */
/* WARNING: Removing unreachable block (ram,0x000180609c75) */

void FUN_180609a70(void *param_1)

{
  ulonglong uVar1;
  uint uVar2;
  int iVar3;
  ulonglong uVar4;
  longlong lVar5;
  bool bVar6;
  bool bVar7;
  int unaff_retaddr;
  undefined1 auStack_a8 [32];
  undefined4 local_88;
  undefined4 *local_80;
  undefined *local_78;
  undefined8 local_70;
  undefined4 local_5c;
  uint local_58;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  uVar2 = (uint)&stack0x00000000 & 0x2ff;
  iVar3 = (uVar2 + 2) * (uVar2 + 1) * uVar2;
  uVar2 = (uint)&stack0x00000000 & 0x3ff;
  uVar2 = (uVar2 + 1) * uVar2 + 7;
  local_58 = ((((iVar3 >> 1) - (iVar3 >> 3)) + iVar3 * 0x55555555 >> 0x1e) >>
             ((char)uVar2 + (char)(uVar2 / 0x51) * -0x51 & 0x1fU)) + 0x6e2U ^ 0xfd2;
  lVar5 = 0x132f0623;
  uVar1 = 0;
  local_5c = 800;
  local_70 = 0;
  local_80 = &DAT_1815cf4cc;
  local_78 = &DAT_18160f230;
  do {
    FUN_180608363();
    uVar2 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
    }
    uVar4 = (ulonglong)uVar2;
  } while (uVar2 != 0);
  local_88 = 0x811c9e29;
  if (param_1 == (void *)0x0) {
    bVar7 = (longlong)-((uVar1 ^ 0xffffffffffffffff) + 1) < 0;
    uVar1 = FUN_180609d1d();
    if (!bVar7) {
      lVar5 = uVar1 - uVar4;
      bVar6 = uVar1 == uVar4;
    }
    else {
      bVar6 = lVar5 == 0;
    }
    if (!bVar6 && (!bVar7 && SBORROW8(uVar1,uVar4)) == lVar5 < 0) {
      DAT_00000000 = in((short)uVar4);
                    /* WARNING: Bad instruction - Truncating control flow here */
      halt_baddata();
    }
    (*(code *)0xfffffffffffb7234)();
    return;
  }
                    /* WARNING: Subroutine does not return */
  free(param_1);
}



############ FUN_ 18060bce0 size=878 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_18060bce0(ulonglong *param_1,char *param_2,longlong param_3)

{
  int iVar1;
  bool bVar2;
  char cVar3;
  locale *plVar4;
  longlong *plVar5;
  undefined8 *puVar6;
  char *******pppppppcVar7;
  char *pcVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  undefined1 auStack_98 [32];
  char local_78;
  longlong local_70;
  undefined1 local_68 [8];
  _Locimp *local_60;
  undefined8 local_58;
  char *******local_50 [2];
  longlong local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  *param_1 = 0;
  if ((char *)(param_3 - 1U) < param_2) {
  }
  cVar3 = *(char *)(param_3 - 1U);
  if (9 < (byte)(cVar3 - 0x30U)) {
  }
  *param_1 = (longlong)(cVar3 + -0x30);
  pcVar8 = (char *)(param_3 + -2);
  uVar10 = 1;
  bVar2 = false;
  local_60 = std::locale::_Init(true);
  plVar4 = std::locale::classic();
  cVar3 = FUN_1805f22e0(local_68,plVar4);
  if (cVar3 == '\0') {
    plVar5 = (longlong *)FUN_1805f1950(local_68);
    (**(code **)(*plVar5 + 0x28))(plVar5,local_50);
    local_70 = local_40;
    if (local_40 != 0) {
      pppppppcVar7 = (char *******)local_50;
      if (0xf < local_38) {
        pppppppcVar7 = local_50[0];
      }
      if ('\0' < *(char *)pppppppcVar7) {
        uVar9 = 0;
        local_78 = (**(code **)(*plVar5 + 0x20))(plVar5);
        pppppppcVar7 = (char *******)local_50;
        if (0xf < local_38) {
          pppppppcVar7 = local_50[0];
        }
        cVar3 = *(char *)pppppppcVar7 + -1;
        for (; param_2 <= pcVar8; pcVar8 = pcVar8 + -1) {
          if (cVar3 == '\0') {
            if (*pcVar8 != local_78) goto LAB_18060bf41;
            if (param_2 == pcVar8) break;
            if (uVar9 < local_70 - 1U) {
              uVar9 = (ulonglong)(byte)((char)uVar9 + 1);
            }
            pppppppcVar7 = (char *******)local_50;
            if (0xf < local_38) {
              pppppppcVar7 = local_50[0];
            }
            cVar3 = *(char *)((longlong)pppppppcVar7 + uVar9);
          }
          else {
            uVar11 = uVar10 * 10;
            if (uVar11 / 10 != uVar10) {
              bVar2 = true;
            }
            iVar1 = *pcVar8 + -0x30;
            uVar10 = (ulonglong)iVar1;
            uVar12 = uVar10 * uVar11;
            if ((((9 < (byte)(*pcVar8 - 0x30U)) || ((iVar1 != 0 && (uVar12 / uVar10 != uVar11)))) ||
                (-uVar12 - 1 < *param_1)) || ((bVar2 && (uVar10 != 0)))) break;
            *param_1 = *param_1 + uVar12;
            cVar3 = cVar3 + -1;
            uVar10 = uVar11;
          }
        }
        if (0xf < local_38) {
          pppppppcVar7 = local_50[0];
          if ((0xfff < local_38 + 1) &&
             (pppppppcVar7 = (char *******)local_50[0][-1],
             (char *)0x1f < (char *)((longlong)local_50[0] + (-8 - (longlong)pppppppcVar7)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pppppppcVar7);
        }
        goto LAB_18060c00f;
      }
    }
LAB_18060bf41:
    if (0xf < local_38) {
      pppppppcVar7 = local_50[0];
      if ((0xfff < local_38 + 1) &&
         (pppppppcVar7 = (char *******)local_50[0][-1],
         (char *)0x1f < (char *)((longlong)local_50[0] + (-8 - (longlong)pppppppcVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pppppppcVar7);
    }
  }
  for (; param_2 <= pcVar8; pcVar8 = pcVar8 + -1) {
    uVar9 = uVar10 * 10;
    if (uVar9 / 10 != uVar10) {
      bVar2 = true;
    }
    iVar1 = *pcVar8 + -0x30;
    uVar11 = (ulonglong)iVar1;
    uVar10 = uVar11 * uVar9;
    if ((9 < (byte)(*pcVar8 - 0x30U)) ||
       ((((iVar1 != 0 && (uVar10 / uVar11 != uVar9)) || (-uVar10 - 1 < *param_1)) ||
        ((bVar2 && (uVar11 != 0)))))) break;
    *param_1 = *param_1 + uVar10;
    uVar10 = uVar9;
  }
LAB_18060c00f:
  if ((local_60 != (_Locimp *)0x0) &&
     (puVar6 = (undefined8 *)(**(code **)(*(longlong *)local_60 + 0x10))(),
     puVar6 != (undefined8 *)0x0)) {
    (**(code **)*puVar6)(puVar6,1);
  }
}



############ FUN_ 18060c980 size=59 ############

void * FUN_18060c980(longlong param_1,ulonglong param_2)

{
  void *_Memory;
  
  _Memory = (void *)(param_1 + -0x98);
  FUN_18060c820(_Memory);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 18060c9c0 size=52 ############

void * FUN_18060c9c0(void *param_1,ulonglong param_2)

{
  FUN_18060c8a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18060ca00 size=125 ############

undefined8 * FUN_18060ca00(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::bad_weak_ptr>::vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18060ca80 size=66 ############

undefined8 * FUN_18060ca80(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::fusion::LocationGroupAttributes::vftable;
  FUN_1805bc040(param_1 + 5);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18060d590 size=812 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18060d590(undefined8 ******param_1,undefined8 ******param_2)

{
  undefined8 *****pppppuVar1;
  undefined8 *****pppppuVar2;
  undefined8 ******ppppppuVar3;
  int iVar4;
  undefined8 ******ppppppuVar5;
  undefined8 ******_Buf1;
  undefined8 *****pppppuVar6;
  undefined8 ******ppppppuVar7;
  undefined8 ******ppppppuVar8;
  undefined8 *****pppppuVar9;
  undefined8 ******ppppppuVar10;
  undefined1 auStack_98 [32];
  undefined8 *****local_78;
  undefined8 *****local_70;
  undefined8 ****ppppuStack_68;
  undefined8 ****local_60;
  undefined8 ****ppppuStack_58;
  undefined8 *****local_50;
  undefined8 ****ppppuStack_48;
  undefined8 ****local_40;
  undefined8 ****ppppuStack_38;
  ulonglong local_30;
  
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  if ((param_1 == param_2) ||
     (ppppppuVar10 = param_1 + 4, local_78 = param_2, ppppppuVar10 == param_2)) {
  }
LAB_18060d5e0:
  ppppppuVar3 = (undefined8 ******)*ppppppuVar10;
  ppppuStack_68 = ppppppuVar10[1];
  pppppuVar2 = ppppppuVar10[2];
  pppppuVar6 = ppppppuVar10[3];
  ppppppuVar10[2] = (undefined8 *****)0x0;
  ppppppuVar10[3] = (undefined8 *****)0xf;
  *(undefined1 *)ppppppuVar10 = 0;
  ppppppuVar7 = param_1;
  if ((undefined8 *****)0xf < param_1[3]) {
    ppppppuVar7 = (undefined8 ******)*param_1;
  }
  pppppuVar1 = param_1[2];
  ppppppuVar5 = &local_50;
  if ((undefined8 *****)0xf < pppppuVar6) {
    ppppppuVar5 = ppppppuVar3;
  }
  pppppuVar9 = pppppuVar2;
  if (pppppuVar1 < pppppuVar2) {
    pppppuVar9 = pppppuVar1;
  }
  local_70 = ppppppuVar3;
  local_60 = pppppuVar2;
  ppppuStack_58 = pppppuVar6;
  local_50 = ppppppuVar3;
  ppppuStack_48 = ppppuStack_68;
  local_40 = pppppuVar2;
  ppppuStack_38 = pppppuVar6;
  iVar4 = memcmp(ppppppuVar5,ppppppuVar7,(size_t)pppppuVar9);
  if (iVar4 == 0) {
    ppppppuVar7 = ppppppuVar10;
    if (pppppuVar1 <= pppppuVar2) {
LAB_18060d670:
      ppppppuVar8 = ppppppuVar7;
      ppppppuVar7 = ppppppuVar8 + -4;
      ppppppuVar5 = ppppppuVar7;
      if ((undefined8 *****)0xf < ppppppuVar8[-1]) {
        ppppppuVar5 = (undefined8 ******)*ppppppuVar7;
      }
      pppppuVar1 = ppppppuVar8[-2];
      _Buf1 = &local_50;
      if ((undefined8 *****)0xf < pppppuVar6) {
        _Buf1 = ppppppuVar3;
      }
      pppppuVar9 = pppppuVar2;
      if (pppppuVar1 < pppppuVar2) {
        pppppuVar9 = pppppuVar1;
      }
      iVar4 = memcmp(_Buf1,ppppppuVar5,(size_t)pppppuVar9);
      if (iVar4 == 0) {
        if (pppppuVar1 <= pppppuVar2) goto LAB_18060d6b2;
      }
      else if (-1 < iVar4) goto LAB_18060d6b2;
      if (ppppppuVar8 != ppppppuVar7) {
        if ((undefined8 *****)0xf < ppppppuVar8[3]) {
          pppppuVar2 = *ppppppuVar8;
          pppppuVar6 = pppppuVar2;
          if ((0xfff < (longlong)ppppppuVar8[3] + 1U) &&
             (pppppuVar6 = (undefined8 *****)pppppuVar2[-1],
             0x1f < (ulonglong)((longlong)pppppuVar2 + (-8 - (longlong)pppppuVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pppppuVar6);
        }
        ppppppuVar8[3] = (undefined8 *****)0xf;
        ppppppuVar8[2] = (undefined8 *****)0x0;
        *(undefined1 *)ppppppuVar8 = 0;
        *ppppppuVar8 = *ppppppuVar7;
        ppppppuVar8[1] = ppppppuVar8[-3];
        ppppppuVar8[2] = ppppppuVar8[-2];
        ppppppuVar8[3] = ppppppuVar8[-1];
        ppppppuVar8[-2] = (undefined8 *****)0x0;
        ppppppuVar8[-1] = (undefined8 *****)0xf;
        *(undefined1 *)ppppppuVar7 = 0;
      }
      goto LAB_18060d670;
    }
  }
  else {
    ppppppuVar7 = ppppppuVar10;
    if (-1 < iVar4) goto LAB_18060d670;
  }
  ppppppuVar5 = ppppppuVar10 + 4;
  ppppppuVar7 = ppppppuVar10;
  while (ppppppuVar8 = ppppppuVar5, param_1 != ppppppuVar7) {
    ppppppuVar5 = ppppppuVar8 + -4;
    ppppppuVar7 = ppppppuVar8 + -8;
    if (ppppppuVar5 != ppppppuVar7) {
      if ((undefined8 *****)0xf < ppppppuVar8[-1]) {
        pppppuVar2 = *ppppppuVar5;
        pppppuVar6 = pppppuVar2;
        if ((0xfff < (longlong)ppppppuVar8[-1] + 1U) &&
           (pppppuVar6 = (undefined8 *****)pppppuVar2[-1],
           0x1f < (ulonglong)((longlong)pppppuVar2 + (-8 - (longlong)pppppuVar6)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pppppuVar6);
      }
      ppppppuVar8[-2] = (undefined8 *****)0x0;
      ppppppuVar8[-1] = (undefined8 *****)0xf;
      *(undefined1 *)ppppppuVar5 = 0;
      *ppppppuVar5 = *ppppppuVar7;
      ppppppuVar8[-3] = ppppppuVar8[-7];
      ppppppuVar8[-2] = ppppppuVar8[-6];
      ppppppuVar8[-1] = ppppppuVar8[-5];
      ppppppuVar8[-6] = (undefined8 *****)0x0;
      ppppppuVar8[-5] = (undefined8 *****)0xf;
      *(undefined1 *)ppppppuVar7 = 0;
    }
  }
  if (param_1 == &local_50) goto LAB_18060d851;
  FUN_180485450(param_1);
  *param_1 = local_70;
  param_1[1] = (undefined8 *****)ppppuStack_68;
  param_1[2] = (undefined8 *****)local_60;
  param_1[3] = (undefined8 *****)ppppuStack_58;
  goto LAB_18060d885;
LAB_18060d6b2:
  if (ppppppuVar8 == &local_50) {
LAB_18060d851:
    if ((undefined8 *****)0xf < pppppuVar6) {
      ppppppuVar10 = ppppppuVar3;
      if ((0xfff < (longlong)pppppuVar6 + 1U) &&
         (ppppppuVar10 = (undefined8 ******)ppppppuVar3[-1],
         0x1f < (ulonglong)((longlong)ppppppuVar3 + (-8 - (longlong)ppppppuVar10)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(ppppppuVar10);
    }
  }
  else {
    if ((undefined8 *****)0xf < ppppppuVar8[3]) {
      pppppuVar2 = *ppppppuVar8;
      pppppuVar6 = pppppuVar2;
      if ((0xfff < (longlong)ppppppuVar8[3] + 1U) &&
         (pppppuVar6 = (undefined8 *****)pppppuVar2[-1],
         0x1f < (ulonglong)((longlong)pppppuVar2 + (-8 - (longlong)pppppuVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pppppuVar6);
    }
    ppppppuVar8[3] = (undefined8 *****)0xf;
    *ppppppuVar8 = local_70;
    ppppppuVar8[1] = (undefined8 *****)ppppuStack_68;
    ppppppuVar8[2] = (undefined8 *****)local_60;
    ppppppuVar8[3] = (undefined8 *****)ppppuStack_58;
  }
LAB_18060d885:
  ppppppuVar10 = ppppppuVar10 + 4;
  if (ppppppuVar10 == (undefined8 ******)local_78) {
  }
  goto LAB_18060d5e0;
}



############ FUN_ 18060dda0 size=678 ############

void FUN_18060dda0(longlong param_1,longlong param_2,longlong param_3,longlong *param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  longlong lVar6;
  int iVar7;
  longlong lVar8;
  void *pvVar9;
  longlong *plVar10;
  undefined4 *puVar11;
  longlong *plVar12;
  longlong lVar13;
  longlong lVar14;
  undefined4 *puVar15;
  
  lVar13 = param_3 + -1;
  lVar6 = param_2;
  while (lVar6 < lVar13 >> 1) {
    lVar14 = lVar6 * 2 + 2;
    lVar8 = lVar14 * 0x20 + param_1;
    iVar7 = FUN_18060cd70(lVar8,lVar8 + -0x20);
    if (iVar7 < 0) {
      lVar14 = lVar6 * 2 + 1;
    }
    plVar10 = (longlong *)(lVar6 * 0x20 + param_1);
    plVar12 = (longlong *)(lVar14 * 0x20 + param_1);
    lVar6 = lVar14;
    if (plVar10 != plVar12) {
      if (0xf < (ulonglong)plVar10[3]) {
        pvVar1 = (void *)*plVar10;
        pvVar9 = pvVar1;
        if ((0xfff < plVar10[3] + 1U) &&
           (pvVar9 = *(void **)((longlong)pvVar1 + -8),
           0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      plVar10[3] = 0xf;
      plVar10[2] = 0;
      *(undefined1 *)plVar10 = 0;
      uVar2 = *(undefined4 *)((longlong)plVar12 + 4);
      lVar14 = plVar12[1];
      uVar3 = *(undefined4 *)((longlong)plVar12 + 0xc);
      *(int *)plVar10 = (int)*plVar12;
      *(undefined4 *)((longlong)plVar10 + 4) = uVar2;
      *(int *)(plVar10 + 1) = (int)lVar14;
      *(undefined4 *)((longlong)plVar10 + 0xc) = uVar3;
      lVar14 = plVar12[3];
      plVar10[2] = plVar12[2];
      plVar10[3] = lVar14;
      plVar12[2] = 0;
      plVar12[3] = 0xf;
      *(undefined1 *)plVar12 = 0;
    }
  }
  if ((lVar6 == lVar13 >> 1) &&
     (((ulonglong)((uint)param_3 & 1) ^ param_3 >> 0x3f) == param_3 >> 0x3f)) {
    puVar15 = (undefined4 *)(param_1 + -0x20 + param_3 * 0x20);
    puVar11 = (undefined4 *)(lVar6 * 0x20 + param_1);
    lVar6 = lVar13;
    if (puVar11 != puVar15) {
      FUN_180485450(puVar11);
      uVar2 = puVar15[1];
      uVar3 = puVar15[2];
      uVar4 = puVar15[3];
      *puVar11 = *puVar15;
      puVar11[1] = uVar2;
      puVar11[2] = uVar3;
      puVar11[3] = uVar4;
      uVar5 = *(undefined8 *)(puVar15 + 6);
      *(undefined8 *)(puVar11 + 4) = *(undefined8 *)(puVar15 + 4);
      *(undefined8 *)(puVar11 + 6) = uVar5;
      *(undefined8 *)(puVar15 + 4) = 0;
      *(undefined8 *)(puVar15 + 6) = 0xf;
      *(undefined1 *)puVar15 = 0;
    }
  }
  while (param_2 < lVar6) {
    lVar13 = lVar6 + -1 >> 1;
    plVar10 = (longlong *)(lVar13 * 0x20 + param_1);
    iVar7 = FUN_18060cd70(plVar10,param_4);
    if (-1 < iVar7) break;
    plVar12 = (longlong *)(lVar6 * 0x20 + param_1);
    lVar6 = lVar13;
    if (plVar12 != plVar10) {
      if (0xf < (ulonglong)plVar12[3]) {
        pvVar1 = (void *)*plVar12;
        pvVar9 = pvVar1;
        if ((0xfff < plVar12[3] + 1U) &&
           (pvVar9 = *(void **)((longlong)pvVar1 + -8),
           0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      plVar12[3] = 0xf;
      plVar12[2] = 0;
      *(undefined1 *)plVar12 = 0;
      uVar2 = *(undefined4 *)((longlong)plVar10 + 4);
      lVar13 = plVar10[1];
      uVar3 = *(undefined4 *)((longlong)plVar10 + 0xc);
      *(int *)plVar12 = (int)*plVar10;
      *(undefined4 *)((longlong)plVar12 + 4) = uVar2;
      *(int *)(plVar12 + 1) = (int)lVar13;
      *(undefined4 *)((longlong)plVar12 + 0xc) = uVar3;
      lVar13 = plVar10[3];
      plVar12[2] = plVar10[2];
      plVar12[3] = lVar13;
      plVar10[2] = 0;
      plVar10[3] = 0xf;
      *(undefined1 *)plVar10 = 0;
    }
  }
  plVar10 = (longlong *)(lVar6 * 0x20 + param_1);
  if (plVar10 != param_4) {
    if (0xf < (ulonglong)plVar10[3]) {
      pvVar1 = (void *)*plVar10;
      pvVar9 = pvVar1;
      if ((0xfff < plVar10[3] + 1U) &&
         (pvVar9 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar9);
    }
    plVar10[2] = 0;
    plVar10[3] = 0xf;
    *(undefined1 *)plVar10 = 0;
    lVar13 = param_4[1];
    *plVar10 = *param_4;
    plVar10[1] = lVar13;
    lVar13 = param_4[3];
    plVar10[2] = param_4[2];
    plVar10[3] = lVar13;
    param_4[2] = 0;
    param_4[3] = 0xf;
    *(undefined1 *)param_4 = 0;
  }
  return;
}



############ FUN_ 18060e460 size=739 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18060e460(longlong *param_1,longlong param_2,longlong param_3,undefined1 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  longlong lVar3;
  void *pvVar4;
  void *pvVar5;
  longlong lVar6;
  longlong *plVar7;
  undefined1 auStack_98 [32];
  undefined1 local_78;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  ulonglong local_48;
  
  local_48 = DAT_182615970 ^ (ulonglong)auStack_98;
  lVar3 = param_2 - (longlong)param_1;
  do {
    lVar3 = lVar3 >> 5;
    if (lVar3 < 0x21) {
LAB_18060e526:
      if (1 < lVar3) {
        FUN_18060d590(param_1,param_2,param_4);
      }
    }
    if (param_3 < 1) {
      if (0x20 < lVar3) {
        lVar3 = param_2 - (longlong)param_1 >> 5;
        lVar6 = param_2 - (longlong)param_1 >> 6;
        if (0 < lVar6) {
          plVar7 = param_1 + lVar6 * 4;
          do {
            local_68 = (undefined4)plVar7[-4];
            uStack_64 = *(undefined4 *)((longlong)plVar7 + -0x1c);
            uStack_60 = (undefined4)plVar7[-3];
            uStack_5c = *(undefined4 *)((longlong)plVar7 + -0x14);
            lVar6 = lVar6 + -1;
            local_58 = (undefined4)plVar7[-2];
            uStack_54 = *(undefined4 *)((longlong)plVar7 + -0xc);
            uStack_50 = (undefined4)plVar7[-1];
            uStack_4c = *(undefined4 *)((longlong)plVar7 + -4);
            plVar7[-2] = 0;
            plVar7[-1] = 0xf;
            *(undefined1 *)(plVar7 + -4) = 0;
            local_78 = param_4;
            FUN_18060dda0(param_1,lVar6,lVar3,&local_68);
            if (0xf < CONCAT44(uStack_4c,uStack_50)) {
              pvVar4 = (void *)CONCAT44(uStack_64,local_68);
              pvVar5 = pvVar4;
              if ((0xfff < CONCAT44(uStack_4c,uStack_50) + 1) &&
                 (pvVar5 = *(void **)((longlong)pvVar4 + -8),
                 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
                    /* WARNING: Subroutine does not return */
              free(pvVar5);
            }
            plVar7 = plVar7 + -4;
          } while (0 < lVar6);
        }
        if (lVar3 < 2) {
        }
        plVar7 = (longlong *)(param_2 + -0x20);
        do {
          if (1 < lVar3) {
            local_68 = (undefined4)*plVar7;
            uStack_64 = *(undefined4 *)((longlong)plVar7 + 4);
            uStack_60 = (undefined4)plVar7[1];
            uStack_5c = *(undefined4 *)((longlong)plVar7 + 0xc);
            local_58 = (undefined4)plVar7[2];
            uStack_54 = *(undefined4 *)((longlong)plVar7 + 0x14);
            uStack_50 = (undefined4)plVar7[3];
            uStack_4c = *(undefined4 *)((longlong)plVar7 + 0x1c);
            plVar7[2] = 0;
            plVar7[3] = 0xf;
            *(undefined1 *)plVar7 = 0;
            if (plVar7 != param_1) {
              if (0xf < (ulonglong)plVar7[3]) {
                pvVar5 = (void *)*plVar7;
                pvVar4 = pvVar5;
                if ((0xfff < plVar7[3] + 1U) &&
                   (pvVar4 = *(void **)((longlong)pvVar5 + -8),
                   0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
                  _invalid_parameter_noinfo_noreturn();
                }
                    /* WARNING: Subroutine does not return */
                free(pvVar4);
              }
              plVar7[2] = 0;
              plVar7[3] = 0xf;
              *(undefined1 *)plVar7 = 0;
              uVar1 = *(undefined4 *)((longlong)param_1 + 4);
              lVar3 = param_1[1];
              uVar2 = *(undefined4 *)((longlong)param_1 + 0xc);
              *(int *)plVar7 = (int)*param_1;
              *(undefined4 *)((longlong)plVar7 + 4) = uVar1;
              *(int *)(plVar7 + 1) = (int)lVar3;
              *(undefined4 *)((longlong)plVar7 + 0xc) = uVar2;
              uVar1 = *(undefined4 *)((longlong)param_1 + 0x14);
              lVar3 = param_1[3];
              uVar2 = *(undefined4 *)((longlong)param_1 + 0x1c);
              *(int *)(plVar7 + 2) = (int)param_1[2];
              *(undefined4 *)((longlong)plVar7 + 0x14) = uVar1;
              *(int *)(plVar7 + 3) = (int)lVar3;
              *(undefined4 *)((longlong)plVar7 + 0x1c) = uVar2;
              param_1[2] = 0;
              param_1[3] = 0xf;
              *(undefined1 *)param_1 = 0;
            }
            local_78 = param_4;
            FUN_18060dda0(param_1,0,(longlong)plVar7 - (longlong)param_1 >> 5,&local_68);
            if (0xf < CONCAT44(uStack_4c,uStack_50)) {
              pvVar4 = (void *)CONCAT44(uStack_64,local_68);
              pvVar5 = pvVar4;
              if ((0xfff < CONCAT44(uStack_4c,uStack_50) + 1) &&
                 (pvVar5 = *(void **)((longlong)pvVar4 + -8),
                 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
                _invalid_parameter_noinfo_noreturn();
              }
                    /* WARNING: Subroutine does not return */
              free(pvVar5);
            }
          }
          plVar7 = plVar7 + -4;
          lVar3 = (longlong)((longlong)plVar7 + (0x20 - (longlong)param_1)) >> 5;
          if (lVar3 < 2) {
          }
        } while( true );
      }
      goto LAB_18060e526;
    }
    FUN_18060d9a0(&local_68,param_1,param_2,param_4);
    lVar6 = CONCAT44(uStack_64,local_68);
    plVar7 = (longlong *)CONCAT44(uStack_5c,uStack_60);
    param_3 = (param_3 >> 1) + (param_3 >> 2);
    if ((longlong)(lVar6 - (longlong)param_1 & 0xffffffffffffffe0U) <
        (longlong)(param_2 - (longlong)plVar7 & 0xffffffffffffffe0U)) {
      FUN_18060e460(param_1,lVar6,param_3,param_4);
      lVar6 = param_2;
      param_1 = plVar7;
    }
    else {
      FUN_18060e460(plVar7,param_2,param_3,param_4);
    }
    lVar3 = lVar6 - (longlong)param_1;
    param_2 = lVar6;
  } while( true );
}



############ FUN_ 18060e8d0 size=289 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18060e8d0(longlong param_1,undefined8 param_2,undefined4 *param_3)

{
  int iVar1;
  void *_Memory;
  undefined4 *puVar2;
  ulonglong uVar3;
  longlong lVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined1 auStack_78 [32];
  void *local_58 [3];
  ulonglong local_40;
  ulonglong local_38;
  
  local_38 = DAT_182615970 ^ (ulonglong)auStack_78;
  FUN_1805a4070(local_58);
  lVar4 = *(longlong *)(param_1 + 0x70);
  puVar6 = (undefined4 *)0x0;
  puVar2 = (undefined4 *)(lVar4 + -0x11);
  if (lVar4 == 0) {
    puVar2 = puVar6;
  }
  puVar2 = *(undefined4 **)(puVar2 + 2);
  puVar5 = puVar6;
  if (lVar4 != 0) {
    puVar5 = (undefined4 *)(lVar4 + -0x11);
  }
  uVar3 = *(ulonglong *)(*(longlong *)(puVar5 + 2) + 0x40) & 0xfffffffffffffffe;
  puVar5 = puVar6;
  if (uVar3 != 0) {
    puVar5 = (undefined4 *)(uVar3 - 0x40);
  }
  puVar7 = puVar2;
  if (puVar5 != (undefined4 *)0x0) {
    do {
      iVar1 = FUN_18060cd70(puVar5 + 2,local_58);
      if (iVar1 < 0) {
        lVar4 = *(longlong *)(puVar5 + 0x14);
      }
      else {
        lVar4 = *(longlong *)(puVar5 + 0x12);
        puVar7 = puVar5;
      }
    } while ((lVar4 != 0) && (puVar5 = (undefined4 *)(lVar4 + -0x40), puVar5 != (undefined4 *)0x0));
    if ((puVar7 != puVar2) && (iVar1 = FUN_18060cd70(local_58,puVar7 + 2), -1 < iVar1))
    goto LAB_18060e988;
  }
  puVar7 = puVar2;
LAB_18060e988:
  if (local_40 < 0x10) {
    if (*(longlong *)(param_1 + 0x70) != 0) {
      puVar6 = (undefined4 *)(*(longlong *)(param_1 + 0x70) + -0x11);
    }
    if (*(undefined4 **)(puVar6 + 2) != puVar7) {
      *param_3 = *puVar7;
    }
  }
  _Memory = local_58[0];
  if ((0xfff < local_40 + 1) &&
     (_Memory = *(void **)((longlong)local_58[0] + -8),
     0x1f < (ulonglong)((longlong)local_58[0] + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806121e0 size=52 ############

void * FUN_1806121e0(void *param_1,ulonglong param_2)

{
  FUN_180611da0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180612220 size=59 ############

void * FUN_180612220(longlong param_1,ulonglong param_2)

{
  void *_Memory;
  
  _Memory = (void *)(param_1 + -0xb0);
  FUN_180612130(_Memory);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 180612260 size=151 ############

basic_ios<char,std::char_traits<char>_> *
FUN_180612260(basic_ios<char,std::char_traits<char>_> *param_1,ulonglong param_2)

{
  basic_ios<char,std::char_traits<char>_> *_Memory;
  
  _Memory = param_1 + -0xb0;
  *(undefined ***)(param_1 + (longlong)*(int *)(*(longlong *)_Memory + 4) + -0xb0) =
       std::basic_ifstream<char,std::char_traits<char>_>::vftable;
  *(int *)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0xb0) + 4) + -0xb4) =
       *(int *)(*(longlong *)(param_1 + -0xb0) + 4) + -0xb0;
  FUN_180611da0(param_1 + -0xa0);
  std::basic_istream<char,std::char_traits<char>_>::~basic_istream<char,std::char_traits<char>_>
            ((basic_istream<char,std::char_traits<char>_> *)(param_1 + -0x98));
  std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 180612300 size=52 ############

void * FUN_180612300(void *param_1,ulonglong param_2)

{
  FUN_1806120b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180617f60 size=211 ############

void FUN_180617f60(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined1 param_5,undefined1 param_6)

{
  void *pvVar1;
  void *pvVar2;
  void *local_20;
  void *pvStack_18;
  longlong local_10;
  
  local_20 = (void *)0x0;
  pvStack_18 = (void *)0x0;
  local_10 = 0;
  FUN_1806c91c0(param_2,&local_20,param_3,param_4,param_5,param_6,0);
  (**(code **)(*param_1 + 0x30))(param_1,&local_20);
  pvVar1 = pvStack_18;
  pvVar2 = local_20;
  if (local_20 == (void *)0x0) {
    return;
  }
  for (; pvVar2 != pvVar1; pvVar2 = (void *)((longlong)pvVar2 + 0x20)) {
    FUN_1805bc2c0(pvVar2);
  }
  pvVar2 = local_20;
  if ((0xfff < (local_10 - (longlong)local_20 & 0xffffffffffffffe0U)) &&
     (pvVar2 = *(void **)((longlong)local_20 + -8),
     0x1f < (ulonglong)((longlong)local_20 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1806ca1c0 size=1216 ############

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

void FUN_1806ca1c0(undefined8 param_1,undefined8 *param_2)

{
  longlong *plVar1;
  void *pvVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  void *pvVar6;
  uint uVar7;
  undefined1 auStack_388 [32];
  undefined4 local_368;
  undefined1 *local_358;
  uint local_340;
  undefined4 local_33c;
  undefined8 local_338;
  undefined1 local_330 [16];
  undefined8 local_320;
  undefined8 local_318;
  undefined8 local_310;
  undefined8 *local_308;
  undefined8 *local_300;
  undefined8 *local_2f8;
  undefined8 *local_2f0;
  undefined1 local_2a0 [32];
  undefined1 local_280 [32];
  undefined8 local_260;
  undefined8 local_258;
  undefined1 local_250;
  undefined7 uStack_24f;
  undefined8 local_240;
  ulonglong local_238;
  undefined2 local_230 [8];
  undefined8 local_220;
  undefined8 local_218;
  undefined1 local_210;
  undefined7 uStack_20f;
  undefined8 local_200;
  ulonglong local_1f8;
  undefined1 local_190 [32];
  undefined1 local_170 [32];
  undefined8 local_150;
  undefined8 local_148;
  undefined1 local_140 [248];
  ulonglong local_48;
  
  local_310 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_388;
  local_368 = 0;
  uVar7 = (uint)&stack0x00000000 & 0x21ff;
  uVar3 = (uint)&stack0x00000000 & 0xeff;
  local_340 = 0xad2f << ((char)((int)-((uVar7 * uVar7 + 1) % 7) >> 0x1f) -
                         (char)((int)-(((uVar3 + 1) * uVar3 + 7) % 0x51) >> 0x1f) & 0x1fU) ^ 0xa30f;
  local_33c = 0x230;
  local_358 = local_330;
  local_320 = 0;
  local_318 = 0xf;
  local_330[0] = 0;
  local_338 = param_1;
  FUN_1805a6cb0(local_330,&DAT_181baf991,0);
  uVar4 = FUN_1805f71a0();
  local_240 = 0;
  local_238 = 0xf;
  local_250 = 0;
  local_368 = 8;
  plVar1 = param_2 + 2;
  if (*plVar1 != 0) {
    local_308 = param_2;
    if (7 < (ulonglong)param_2[3]) {
      local_308 = (undefined8 *)*param_2;
      param_2 = (undefined8 *)*param_2;
    }
    local_300 = param_2;
    FUN_1805f5100(param_2,(longlong)local_308 + *plVar1 * 2,&local_250,uVar4);
  }
  puVar5 = (undefined8 *)FUN_1806cc050(&local_210,&local_250,local_330);
  local_220 = 0;
  local_218 = 7;
  local_230[0] = 0;
  uVar4 = FUN_1805f71a0();
  plVar1 = puVar5 + 2;
  if (*plVar1 != 0) {
    local_2f8 = puVar5;
    if (0xf < (ulonglong)puVar5[3]) {
      local_2f8 = (undefined8 *)*puVar5;
      puVar5 = (undefined8 *)*puVar5;
    }
    local_2f0 = puVar5;
    FUN_1805f5010(puVar5,*plVar1 + (longlong)local_2f8,local_230,uVar4);
  }
  if (0xf < local_1f8) {
    pvVar2 = (void *)CONCAT71(uStack_20f,local_210);
    pvVar6 = pvVar2;
    if ((0xfff < local_1f8 + 1) &&
       (pvVar6 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar6);
  }
  local_200 = 0;
  local_1f8 = 0xf;
  local_210 = 0;
  if (local_238 < 0x10) {
    local_240 = 0;
    local_238 = 0xf;
    local_250 = 0;
    FUN_1805fea50(local_140,0);
    local_368 = 0x14;
    FUN_1805fe080(local_190,local_230,local_140);
    FUN_1805bc2c0(local_140);
    FUN_1805f7030(local_190,local_280);
    FUN_1805b3ee0(local_170,local_280);
    local_150 = local_260;
    local_148 = local_258;
    local_368 = 0x34;
    FUN_1805f85b0(local_280);
    FUN_1805b3ee0(local_2a0,local_170);
    local_368 = 0x14;
    FUN_1805bc2c0(local_170);
    return;
  }
  pvVar2 = (void *)CONCAT71(uStack_24f,local_250);
  pvVar6 = pvVar2;
  if ((0xfff < local_238 + 1) &&
     (pvVar6 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 18093e2a0 size=432 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18093e2a0(undefined8 *param_1)

{
  undefined8 *puVar1;
  void *pvVar2;
  int cchWideChar;
  undefined8 uVar3;
  undefined8 *puVar4;
  void *_Memory;
  LPCWSTR _Memory_00;
  CHAR *pCVar5;
  undefined1 auStackY_98 [32];
  LPWSTR local_60;
  undefined8 uStack_58;
  longlong local_50;
  undefined8 local_48;
  undefined8 *local_40;
  CHAR local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_48 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_98;
  local_60 = (LPWSTR)0x0;
  uStack_58 = 0;
  local_50 = 0;
  local_40 = param_1;
  uVar3 = FUN_1805f71a0();
  local_28 = 0;
  local_20 = 0xf;
  local_38 = '\0';
  if (param_1[2] != 0) {
    puVar4 = param_1;
    puVar1 = param_1;
    if (7 < (ulonglong)param_1[3]) {
      puVar1 = (undefined8 *)*param_1;
      puVar4 = (undefined8 *)*param_1;
    }
    FUN_1805f5100(puVar4,(longlong)puVar1 + param_1[2] * 2,&local_38,uVar3);
  }
  pCVar5 = &local_38;
  if (0xf < local_20) {
    pCVar5 = (LPCSTR)CONCAT71(uStack_37,local_38);
  }
  cchWideChar = MultiByteToWideChar(0xfde9,0,pCVar5,-1,(LPWSTR)0x0,0);
  FUN_180622f00(&local_60,cchWideChar,&local_60);
  pCVar5 = &local_38;
  if (0xf < local_20) {
    pCVar5 = (LPCSTR)CONCAT71(uStack_37,local_38);
  }
  MultiByteToWideChar(0xfde9,0,pCVar5,-1,local_60,cchWideChar);
  if (0xf < local_20) {
    pvVar2 = (void *)CONCAT71(uStack_37,local_38);
    _Memory = pvVar2;
    if ((0xfff < local_20 + 1) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  GetFileAttributesW(local_60);
  if (local_60 == (LPCWSTR)0x0) {
    FUN_1805bc2c0(param_1);
  }
  _Memory_00 = local_60;
  if ((0xfff < (ulonglong)((local_50 - (longlong)local_60 >> 1) * 2)) &&
     (_Memory_00 = *(LPCWSTR *)(local_60 + -4),
     0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory_00)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory_00);
}



############ FUN_ 180622f00 size=346 ############

void FUN_180622f00(longlong *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  longlong lVar2;
  ulonglong uVar3;
  void *pvVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)param_1[1];
  lVar2 = *param_1;
  uVar6 = (longlong)pvVar1 - lVar2 >> 1;
  uVar3 = param_1[2] - lVar2 >> 1;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        param_1[1] = lVar2 + param_2 * 2;
      }
      return;
    }
    pvVar4 = (void *)((longlong)pvVar1 + (param_2 - uVar6) * 2);
    memset(pvVar1,0,(longlong)pvVar4 - (longlong)pvVar1);
    param_1[1] = (longlong)pvVar4;
    return;
  }
  if (0x7fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = param_2;
  if ((uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1)) &&
     (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2)) {
    uVar5 = param_2;
  }
  pvVar4 = (void *)FUN_1805bcc10(param_1,uVar5,param_3,param_4,0xfffffffffffffffe);
  memset((void *)((longlong)pvVar4 + uVar6 * 2),0,(param_2 - uVar6) * 2);
  memmove(pvVar4,(void *)*param_1,param_1[1] - *param_1);
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = (longlong)pvVar4;
    param_1[1] = (longlong)((longlong)pvVar4 + param_2 * 2);
    param_1[2] = (longlong)((longlong)pvVar4 + uVar5 * 2);
    return;
  }
  pvVar4 = pvVar1;
  if ((0xfff < (ulonglong)((param_1[2] - (longlong)pvVar1 >> 1) * 2)) &&
     (pvVar4 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar4);
}



############ FUN_ 180618410 size=857 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180618410(longlong *param_1,undefined8 *param_2)

{
  undefined4 uVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  void *pvVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  uint uVar8;
  undefined1 auStack_238 [32];
  undefined1 local_218;
  undefined8 *local_210;
  undefined8 *puStack_208;
  undefined8 *local_200;
  uint local_1f8;
  undefined8 local_1f0;
  undefined **local_1e8;
  undefined4 local_1e0;
  void *local_90;
  longlong local_80;
  void *local_68;
  undefined8 uStack_60;
  longlong local_58;
  ulonglong local_50;
  undefined2 local_48 [8];
  undefined8 local_38;
  undefined8 local_30;
  ulonglong local_28;
  
  local_1f0 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_238;
  uVar8 = 0;
  local_1f8 = 0;
  local_210 = (undefined8 *)0x0;
  puStack_208 = (undefined8 *)0x0;
  local_200 = (undefined8 *)0x0;
  puVar6 = (undefined8 *)param_2[1];
  for (param_2 = (undefined8 *)*param_2; param_2 != puVar6; param_2 = param_2 + 4) {
    uVar2 = FUN_1805f71a0();
    local_58 = 0;
    local_50 = 0xf;
    local_68 = (void *)((ulonglong)local_68 & 0xffffffffffffff00);
    local_1f8 = uVar8 | 2;
    if (param_2[2] != 0) {
      puVar3 = param_2;
      puVar7 = param_2;
      if (7 < (ulonglong)param_2[3]) {
        puVar7 = (undefined8 *)*param_2;
        puVar3 = (undefined8 *)*param_2;
      }
      FUN_1805f5100(puVar3,(longlong)puVar7 + param_2[2] * 2,&local_68,uVar2);
    }
    uVar8 = 1;
    if (local_200 == puStack_208) {
      FUN_18060d220(&local_210,puStack_208,&local_68);
    }
    else {
      FUN_1805a4070(puStack_208,&local_68);
      puStack_208 = puStack_208 + 4;
    }
    if (0xf < local_50) {
      pvVar5 = local_68;
      if ((0xfff < local_50 + 1) &&
         (pvVar5 = *(void **)((longlong)local_68 + -8),
         0x1f < (ulonglong)((longlong)local_68 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
  }
  FUN_18060e460(local_210,puStack_208,(longlong)puStack_208 - (longlong)local_210 >> 5,local_218);
  puVar6 = puStack_208;
  for (puVar7 = local_210; puVar7 != puVar6; puVar7 = puVar7 + 4) {
    FUN_180610750(&local_1e8,(int)param_1[1]);
    local_68 = (void *)0x0;
    uStack_60 = 0;
    local_58 = 0;
    local_38 = 0;
    local_30 = 7;
    local_48[0] = 0;
    uVar2 = FUN_1805f71a0();
    if (puVar7[2] != 0) {
      puVar4 = puVar7;
      puVar3 = puVar7;
      if (0xf < (ulonglong)puVar7[3]) {
        puVar3 = (undefined8 *)*puVar7;
        puVar4 = (undefined8 *)*puVar7;
      }
      FUN_1805f5010(puVar4,(longlong)puVar3 + puVar7[2],local_48,uVar2);
    }
    FUN_180618040(&local_1e8,local_48);
    FUN_1805bc2c0(local_48);
    uVar1 = FUN_180614890(local_1e0);
    FUN_1805b0f50(&local_68,uVar1,&local_68);
    (*(code *)local_1e8[8])(&local_1e8,0,local_68,0);
    (**(code **)(*param_1 + 0x18))(param_1,&local_68);
    if (local_68 != (void *)0x0) {
      pvVar5 = local_68;
      if ((0xfff < (ulonglong)(local_58 - (longlong)local_68)) &&
         (pvVar5 = *(void **)((longlong)local_68 + -8),
         0x1f < (ulonglong)((longlong)local_68 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
    local_1e8 = pace::Hasher::vftable;
    if (local_90 != (void *)0x0) {
      pvVar5 = local_90;
      if ((0xfff < (ulonglong)(local_80 - (longlong)local_90)) &&
         (pvVar5 = *(void **)((longlong)local_90 + -8),
         0x1f < (ulonglong)((longlong)local_90 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar5);
    }
  }
  if (local_210 == (undefined8 *)0x0) {
  }
  FUN_18048c550(local_210,puStack_208,&local_210);
  puVar6 = local_210;
  if ((0xfff < ((longlong)local_200 - (longlong)local_210 & 0xffffffffffffffe0U)) &&
     (puVar6 = (undefined8 *)local_210[-1],
     0x1f < (ulonglong)((longlong)local_210 + (-8 - (longlong)puVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(puVar6);
}



############ FUN_ 18061e020 size=737 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18061e020(longlong param_1)

{
  ulonglong uVar1;
  undefined8 uVar2;
  longlong lVar3;
  uint uVar4;
  int iVar5;
  char *pcVar6;
  ulonglong *puVar7;
  char *pcVar8;
  undefined1 auStackY_a8 [32];
  char local_68;
  char local_67 [7];
  char *local_60;
  char *local_58;
  ulonglong local_50;
  ulonglong local_48;
  undefined8 local_40;
  char local_38;
  undefined7 uStack_37;
  ulonglong local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStackY_a8;
  uVar1 = **(ulonglong **)(param_1 + 0x38);
  if (uVar1 != 0) {
    iVar5 = **(int **)(param_1 + 0x50);
    if (uVar1 < uVar1 + (longlong)iVar5) {
      **(int **)(param_1 + 0x50) = iVar5 + -1;
      **(longlong **)(param_1 + 0x38) = **(longlong **)(param_1 + 0x38) + 1;
    }
  }
  if (*(longlong *)(param_1 + 0x80) != 0) {
    if (**(longlong **)(param_1 + 0x18) == param_1 + 0x70) {
      uVar2 = *(undefined8 *)(param_1 + 0x90);
      lVar3 = *(longlong *)(param_1 + 0x88);
      **(longlong **)(param_1 + 0x18) = lVar3;
      **(longlong **)(param_1 + 0x38) = lVar3;
      **(int **)(param_1 + 0x50) = (int)uVar2 - (int)lVar3;
    }
    if (*(longlong *)(param_1 + 0x68) == 0) {
      fgetc(*(FILE **)(param_1 + 0x80));
    }
    else {
      local_28 = 0;
      local_20 = 0xf;
      local_38 = '\0';
      uVar4 = fgetc(*(FILE **)(param_1 + 0x80));
      uVar1 = local_28;
      while (local_28 = uVar1, uVar4 != 0xffffffff) {
        if (uVar1 < local_20) {
          local_28 = uVar1 + 1;
          pcVar6 = &local_38;
          if (0xf < local_20) {
            pcVar6 = (char *)CONCAT71(uStack_37,local_38);
          }
          pcVar6[uVar1] = (char)uVar4;
          pcVar6[uVar1 + 1] = '\0';
        }
        else {
          FUN_18060b550(&local_38,1,0,uVar4 & 0xff);
        }
        pcVar6 = &local_38;
        if (0xf < local_20) {
          pcVar6 = (char *)CONCAT71(uStack_37,local_38);
        }
        pcVar8 = &local_38;
        if (0xf < local_20) {
          pcVar8 = (char *)CONCAT71(uStack_37,local_38);
        }
        iVar5 = std::codecvt<char,char,_Mbstatet>::in
                          (*(codecvt<char,char,_Mbstatet> **)(param_1 + 0x68),
                           (_Mbstatet *)(param_1 + 0x74),pcVar8,pcVar6 + local_28,&local_60,
                           &local_68,local_67,&local_58);
        if (iVar5 < 0) break;
        if (1 < iVar5) {
          if (iVar5 == 3) {
            pcVar6 = (char *)CONCAT71(uStack_37,local_38);
            goto LAB_18061e248;
          }
          break;
        }
        if (local_58 != &local_68) {
          pcVar6 = (char *)CONCAT71(uStack_37,local_38);
          pcVar8 = &local_38;
          if (0xf < local_20) {
            pcVar8 = pcVar6;
          }
          pcVar8 = pcVar8 + (local_28 - (longlong)local_60);
          if (0 < (longlong)pcVar8) {
            do {
              pcVar8 = pcVar8 + -1;
              ungetc((int)pcVar8[(longlong)local_60],*(FILE **)(param_1 + 0x80));
            } while (0 < (longlong)pcVar8);
            pcVar6 = (char *)CONCAT71(uStack_37,local_38);
          }
          goto LAB_18061e248;
        }
        pcVar6 = &local_38;
        if (0xf < local_20) {
          pcVar6 = (char *)CONCAT71(uStack_37,local_38);
        }
        local_48 = (longlong)local_60 - (longlong)pcVar6;
        local_50 = local_28;
        puVar7 = &local_50;
        if ((ulonglong)((longlong)local_60 - (longlong)pcVar6) <= local_28) {
          puVar7 = &local_48;
        }
        pcVar6 = &local_38;
        if (0xf < local_20) {
          pcVar6 = (char *)CONCAT71(uStack_37,local_38);
        }
        local_28 = local_28 - *puVar7;
        memmove(pcVar6,pcVar6 + *puVar7,local_28 + 1);
        uVar4 = fgetc(*(FILE **)(param_1 + 0x80));
        uVar1 = local_28;
      }
      pcVar6 = (char *)CONCAT71(uStack_37,local_38);
LAB_18061e248:
      if (0xf < local_20) {
        pcVar8 = pcVar6;
        if ((0xfff < local_20 + 1) &&
           (pcVar8 = *(char **)(pcVar6 + -8), (char *)0x1f < pcVar6 + (-8 - (longlong)pcVar8))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pcVar8);
      }
    }
  }
}



############ FUN_ 180621860 size=608 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180621860(undefined8 *param_1,undefined8 param_2)

{
  int iVar1;
  void *pvVar2;
  int *piVar3;
  longlong *plVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  void *pvVar7;
  undefined8 local_res10;
  undefined1 auStack_c8 [32];
  undefined8 local_a8;
  undefined4 local_98;
  undefined2 local_94;
  undefined1 local_90 [8];
  undefined8 local_88;
  undefined1 local_80;
  undefined7 uStack_7f;
  undefined8 uStack_78;
  undefined8 local_70;
  ulonglong uStack_68;
  undefined1 local_60;
  undefined7 uStack_5f;
  undefined8 local_50;
  ulonglong local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_88 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_res10 = param_2;
  local_a8 = param_1;
  piVar3 = (int *)FUN_1806227d0(&local_res10,local_90);
  iVar1 = *piVar3;
  if (iVar1 == -2) {
    local_70 = 0;
    uStack_68 = 0xf;
    local_80 = 0;
    FUN_1805a6cb0(&local_80,"not-a-date-time",0xf);
  }
  else if (iVar1 == 0) {
    local_70 = 0;
    uStack_68 = 0xf;
    local_80 = 0;
    FUN_1805a6cb0(&local_80,"-infinity",9);
  }
  else if (iVar1 == -1) {
    local_70 = 0;
    uStack_68 = 0xf;
    local_80 = 0;
    FUN_1805a6cb0(&local_80,"+infinity",9);
  }
  else {
    FUN_180622940(&local_98);
    local_a8._0_6_ = CONCAT24(local_94,local_98);
    FUN_180622bb0(&local_80,&local_a8);
  }
  plVar4 = (longlong *)FUN_180622ad0(&local_res10,&local_a8);
  if ((*plVar4 + 0x7fffffffffffffffU < 0xfffffffffffffffe) && (*plVar4 != 0x7ffffffffffffffe)) {
    uVar5 = FUN_180622ad0(&local_res10,&local_a8);
    uVar5 = FUN_180621ae0(&local_40,uVar5);
    uVar6 = FUN_180621600(&local_60,&local_80,0x54);
    FUN_1805f1630(param_1,uVar6,uVar5);
    if (0xf < local_48) {
      pvVar2 = (void *)CONCAT71(uStack_5f,local_60);
      pvVar7 = pvVar2;
      if ((0xfff < local_48 + 1) &&
         (pvVar7 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar7);
    }
    local_50 = 0;
    local_48 = 0xf;
    local_60 = 0;
    if (0xf < local_28) {
      pvVar2 = (void *)CONCAT71(uStack_3f,local_40);
      pvVar7 = pvVar2;
      if ((0xfff < local_28 + 1) &&
         (pvVar7 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar7);
    }
    local_30 = 0;
    local_28 = 0xf;
    local_40 = 0;
    if (0xf < uStack_68) {
      pvVar2 = (void *)CONCAT71(uStack_7f,local_80);
      pvVar7 = pvVar2;
      if ((0xfff < uStack_68 + 1) &&
         (pvVar7 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar7);
    }
  }
  else {
    *param_1 = CONCAT71(uStack_7f,local_80);
    param_1[1] = uStack_78;
    param_1[2] = local_70;
    param_1[3] = uStack_68;
  }
}



############ FUN_ 1806225c0 size=81 ############

undefined8 * FUN_1806225c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = apache::thrift::protocol::TBinaryProtocol::vftable;
  if ((void *)param_1[6] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[6]);
  }
  FUN_180622550(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180622620 size=52 ############

void * FUN_180622620(void *param_1,ulonglong param_2)

{
  FUN_180622550();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180623300 size=37 ############

void FUN_180623300(longlong param_1)

{
                    /* WARNING: Subroutine does not return */
  free(*(void **)(param_1 + 0x48));
}



############ FUN_ 180623390 size=52 ############

void * FUN_180623390(void *param_1,ulonglong param_2)

{
  FUN_180623300();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180623db0 size=713 ############

longlong FUN_180623db0(longlong *param_1,longlong param_2,longlong param_3)

{
  ulonglong uVar1;
  undefined4 *puVar2;
  longlong lVar3;
  undefined8 *puVar4;
  void *pvVar5;
  ulonglong uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lVar12;
  undefined4 *puVar13;
  longlong lVar14;
  undefined8 *puVar15;
  void *_Memory;
  ulonglong uVar16;
  
  lVar3 = *param_1;
  lVar12 = (param_1[1] - lVar3) / 0x28;
  if (lVar12 == 0x666666666666666) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar12 + 1;
  uVar6 = (param_1[2] - lVar3) / 0x28;
  uVar16 = uVar1;
  if ((uVar6 <= 0x666666666666666 - (uVar6 >> 1)) && (uVar16 = (uVar6 >> 1) + uVar6, uVar16 < uVar1)
     ) {
    uVar16 = uVar1;
  }
  lVar10 = FUN_18062cbf0(param_1,uVar16);
  lVar3 = ((param_2 - lVar3) / 0x28) * 0x28;
  puVar15 = (undefined8 *)(lVar3 + lVar10);
  *puVar15 = pace::MachineBinding::vftable;
  *(undefined4 *)(puVar15 + 1) = *(undefined4 *)(param_3 + 8);
  *(undefined4 *)((longlong)puVar15 + 0xc) = *(undefined4 *)(param_3 + 0xc);
  uVar7 = *(undefined4 *)(param_3 + 0x14);
  uVar8 = *(undefined4 *)(param_3 + 0x18);
  uVar9 = *(undefined4 *)(param_3 + 0x1c);
  *(undefined4 *)(puVar15 + 2) = *(undefined4 *)(param_3 + 0x10);
  *(undefined4 *)((longlong)puVar15 + 0x14) = uVar7;
  *(undefined4 *)(puVar15 + 3) = uVar8;
  *(undefined4 *)((longlong)puVar15 + 0x1c) = uVar9;
  *(undefined4 *)(puVar15 + 4) = *(undefined4 *)(param_3 + 0x20);
  lVar12 = param_1[1];
  lVar14 = *param_1;
  if (param_2 == lVar12) {
    if (lVar14 != lVar12) {
      lVar14 = lVar14 - lVar10;
      puVar13 = (undefined4 *)(lVar10 + 0xc);
      do {
        *(undefined ***)(puVar13 + -3) = pace::MachineBinding::vftable;
        puVar13[-1] = *(undefined4 *)(lVar14 + -4 + (longlong)puVar13);
        *puVar13 = *(undefined4 *)(lVar14 + (longlong)puVar13);
        puVar2 = (undefined4 *)(lVar14 + 4 + (longlong)puVar13);
        uVar7 = puVar2[1];
        uVar8 = puVar2[2];
        uVar9 = puVar2[3];
        puVar13[1] = *puVar2;
        puVar13[2] = uVar7;
        puVar13[3] = uVar8;
        puVar13[4] = uVar9;
        puVar13[5] = *(undefined4 *)(lVar14 + 0x14 + (longlong)puVar13);
        lVar11 = (longlong)puVar13 + lVar14 + 0x1c;
        puVar13 = puVar13 + 10;
      } while (lVar11 != lVar12);
    }
  }
  else {
    if (lVar14 != param_2) {
      lVar14 = lVar14 - lVar10;
      puVar13 = (undefined4 *)(lVar10 + 0xc);
      do {
        *(undefined ***)(puVar13 + -3) = pace::MachineBinding::vftable;
        puVar13[-1] = *(undefined4 *)(lVar14 + -4 + (longlong)puVar13);
        *puVar13 = *(undefined4 *)(lVar14 + (longlong)puVar13);
        puVar2 = (undefined4 *)(lVar14 + 4 + (longlong)puVar13);
        uVar7 = puVar2[1];
        uVar8 = puVar2[2];
        uVar9 = puVar2[3];
        puVar13[1] = *puVar2;
        puVar13[2] = uVar7;
        puVar13[3] = uVar8;
        puVar13[4] = uVar9;
        puVar13[5] = *(undefined4 *)(lVar14 + 0x14 + (longlong)puVar13);
        lVar12 = (longlong)puVar13 + lVar14 + 0x1c;
        puVar13 = puVar13 + 10;
      } while (lVar12 != param_2);
    }
    lVar12 = param_1[1];
    if (param_2 != lVar12) {
      puVar13 = (undefined4 *)((longlong)puVar15 + 0x34);
      param_2 = param_2 - (longlong)(puVar15 + 5);
      do {
        *(undefined ***)(puVar13 + -3) = pace::MachineBinding::vftable;
        puVar13[-1] = *(undefined4 *)(param_2 + -4 + (longlong)puVar13);
        *puVar13 = *(undefined4 *)(param_2 + (longlong)puVar13);
        puVar2 = (undefined4 *)(param_2 + 4 + (longlong)puVar13);
        uVar7 = puVar2[1];
        uVar8 = puVar2[2];
        uVar9 = puVar2[3];
        puVar13[1] = *puVar2;
        puVar13[2] = uVar7;
        puVar13[3] = uVar8;
        puVar13[4] = uVar9;
        puVar13[5] = *(undefined4 *)(param_2 + 0x14 + (longlong)puVar13);
        puVar13 = puVar13 + 10;
      } while (param_2 + -0xc + (longlong)puVar13 != lVar12);
    }
  }
  puVar15 = (undefined8 *)*param_1;
  if (puVar15 != (undefined8 *)0x0) {
    puVar4 = (undefined8 *)param_1[1];
    for (; puVar15 != puVar4; puVar15 = puVar15 + 5) {
      (**(code **)*puVar15)(puVar15,0);
    }
    pvVar5 = (void *)*param_1;
    _Memory = pvVar5;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar5) / 0x28) * 0x28)) &&
       (_Memory = *(void **)((longlong)pvVar5 + -8),
       0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar10;
  param_1[1] = lVar10 + uVar1 * 0x28;
  param_1[2] = lVar10 + uVar16 * 0x28;
  return *param_1 + lVar3;
}



############ FUN_ 18062b5c0 size=43 ############

undefined8 * FUN_18062b5c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::MachineBinding::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18062b5f0 size=52 ############

void * FUN_18062b5f0(void *param_1,ulonglong param_2)

{
  FUN_18062b2f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18071d4a0 size=2891 ############

/* WARNING: Instruction at (ram,0x00018071dd93) overlaps instruction at (ram,0x00018071dd92)
    */
/* WARNING: Removing unreachable block (ram,0x00018071dd8e) */
/* WARNING: Removing unreachable block (ram,0x00018071d695) */
/* WARNING: Removing unreachable block (ram,0x00018071d5c2) */
/* WARNING: Removing unreachable block (ram,0x00018071d66f) */
/* WARNING: Removing unreachable block (ram,0x00018071dd80) */
/* WARNING: Removing unreachable block (ram,0x00018071dffc) */
/* WARNING: Type propagation algorithm not settling */

undefined8 FUN_18071d4a0(undefined8 *param_1)

{
  uint *puVar1;
  byte bVar2;
  void *pvVar3;
  ulonglong *puVar4;
  code *pcVar5;
  undefined4 uVar6;
  ulonglong uVar7;
  undefined8 uVar8;
  uint uVar9;
  code **ppcVar10;
  void *pvVar11;
  uint *puVar12;
  char *pcVar13;
  uint *puVar14;
  code *pcVar15;
  undefined1 *puVar16;
  undefined8 *puVar17;
  int unaff_retaddr;
  undefined4 unaff_retaddr_00;
  undefined1 auStack_998 [32];
  undefined *local_978;
  uint local_970;
  uint *local_968;
  undefined8 local_950;
  undefined **local_948;
  undefined8 *local_940;
  undefined4 local_938;
  uint local_934;
  code *local_930;
  undefined8 *local_928;
  undefined8 local_920;
  undefined8 local_910;
  undefined8 *local_908;
  uint local_8d0;
  undefined4 uStack_8cc;
  undefined4 uStack_8c8;
  undefined4 uStack_8c4;
  code *local_8c0;
  ulonglong uStack_8b8;
  uint local_8b0;
  uint uStack_8ac;
  uint uStack_8a8;
  uint uStack_8a4;
  code *local_8a0;
  ulonglong uStack_898;
  uint local_890;
  undefined4 uStack_88c;
  undefined4 uStack_888;
  undefined4 uStack_884;
  code *local_880;
  ulonglong uStack_878;
  uint local_870;
  undefined4 uStack_86c;
  undefined4 uStack_868;
  undefined4 uStack_864;
  code *local_860;
  ulonglong uStack_858;
  undefined1 local_850;
  undefined7 uStack_84f;
  longlong local_840;
  ulonglong local_838;
  _OSVERSIONINFOW local_808;
  _OSVERSIONINFOW local_6e8;
  char local_5ce;
  _OSVERSIONINFOW local_5c8;
  char local_4ae;
  undefined1 local_4a8 [272];
  undefined1 local_398 [272];
  undefined1 local_288 [272];
  undefined1 local_178 [328];
  ulonglong local_30;
  
  local_910 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_998;
  *param_1 = pace::OsVersion::vftable;
  local_968 = (uint *)(param_1 + 1);
  pcVar15 = (code *)0x0;
  param_1[3] = 0;
  param_1[4] = 0xf;
  *(undefined1 *)local_968 = 0;
  local_940 = param_1 + 5;
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)local_940 = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  puVar12 = (uint *)(param_1 + 0xd);
  param_1[0xf] = 0;
  param_1[0x10] = 0xf;
  *(undefined1 *)puVar12 = 0;
  puVar1 = (uint *)(param_1 + 0x11);
  param_1[0x13] = 0;
  param_1[0x14] = 0xf;
  *(undefined1 *)puVar1 = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0xf;
  *(undefined1 *)(param_1 + 0x15) = 0;
  uVar9 = (uint)&stack0x00000000 & 0x2bf;
  local_934 = ~(((uVar9 + 2) * (uVar9 + 1) * uVar9) % 3) & 0x4ec5 ^ 0x46c5;
  local_938 = 0x830;
  local_928 = param_1;
  local_908 = param_1;
  uVar6 = FUN_180720a10();
  *(undefined4 *)(param_1 + 0x19) = uVar6;
  local_920 = 0x6f01000;
  local_950 = 0x10;
  local_948 = &PTR__guard_check_icall_181bab6a8;
  local_978 = &DAT_181bab6b8;
  bVar2 = 0;
  do {
    if ((bVar2 & 1) != 0) {
      pcVar15 = (code *)(~(~(ulonglong)pcVar15 + 1) + 1);
    }
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
    bVar2 = POPCOUNT(uVar9 & 0xff);
  } while (uVar9 != 0);
  local_808.dwOSVersionInfoSize = 0x114;
  GetVersionExW(&local_808);
  puVar17 = local_940;
  do {
    uVar8 = rdtsc();
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  uVar9 = ((uint)uVar8 ^ (uint)((ulonglong)uVar8 >> 0x20)) * -0x7a143d4e;
  local_970 = (uVar9 >> 0x18 ^ uVar9) * -0x7332e57b;
  puVar14 = local_968;
  pcVar5 = pcVar15;
  if (local_970 < 0x18f9c17f) {
    do {
      local_930 = pcVar5;
      ppcVar10 = &local_930;
      uVar6 = FUN_18071eaac(ppcVar10,&local_930);
      *ppcVar10 = FUN_18141db20;
      FUN_18071d49a(uVar6,0xe6ec);
      uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
      if ((int)uVar9 < 0) {
        uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
      }
      pcVar5 = local_930;
    } while (uVar9 != 0);
    uVar7 = (*local_930)();
    puVar14 = local_968;
    if (1 < uVar7) {
      uVar7 = CONCAT44(unaff_retaddr_00,unaff_retaddr);
      puVar4 = (ulonglong *)register0x00000020;
      while (uVar7 != 0xcccccccccccccccc) {
        *puVar4 = (ulonglong)pcVar15;
        puVar4 = puVar4 + 8;
        uVar7 = *puVar4;
      }
    }
  }
  FUN_18071f0f0(local_928,&local_808);
  uVar8 = FUN_1805a3f20(local_4a8,"%ld.%ld.%ld");
  uVar8 = FUN_18071cd80(uVar8,&local_808.dwMajorVersion);
  uVar8 = FUN_18071cd80(uVar8,&local_808.dwMinorVersion);
  uVar8 = FUN_18071cd80(uVar8,&local_808.dwBuildNumber);
  FUN_1805ae640(uVar8);
  if (puVar12 == &local_8d0) {
    if (0xf < uStack_8b8) {
      pvVar3 = (void *)CONCAT44(uStack_8cc,local_8d0);
      pvVar11 = pvVar3;
      if ((0xfff < uStack_8b8 + 1) &&
         (pvVar11 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar11);
    }
  }
  else {
    FUN_180485450(puVar12);
    *puVar12 = local_8d0;
    *(undefined4 *)((longlong)param_1 + 0x6c) = uStack_8cc;
    *(undefined4 *)(param_1 + 0xe) = uStack_8c8;
    *(undefined4 *)((longlong)param_1 + 0x74) = uStack_8c4;
    param_1[0xf] = local_8c0;
    param_1[0x10] = uStack_8b8;
  }
  uStack_8b8 = 0xf;
  local_8d0 = local_8d0 & 0xffffff00;
  local_8c0 = pcVar15;
  FUN_1805a4fa0(local_4a8);
  if (local_808.dwPlatformId == 0) {
    uVar8 = FUN_1805a3f20(local_398,"Windows %ld.%ld");
    uVar8 = FUN_18071cd80(uVar8,&local_808.dwMajorVersion);
    uVar8 = FUN_18071cd80(uVar8,&local_808.dwMinorVersion);
    FUN_1805ae640(uVar8);
    if (puVar14 == &local_8b0) {
      if (0xf < uStack_898) {
        pvVar3 = (void *)CONCAT44(uStack_8ac,local_8b0);
        pvVar11 = pvVar3;
        if ((0xfff < uStack_898 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
    }
    else {
      FUN_180485450(puVar14);
      *puVar14 = local_8b0;
      puVar14[1] = uStack_8ac;
      puVar14[2] = uStack_8a8;
      puVar14[3] = uStack_8a4;
      *(code **)(puVar14 + 4) = local_8a0;
      *(ulonglong *)(puVar14 + 6) = uStack_898;
    }
    uStack_898 = 0xf;
    local_8b0 = local_8b0 & 0xffffff00;
    local_8a0 = pcVar15;
    FUN_1805a4fa0(local_398);
    goto LAB_18071dd3e;
  }
  if (local_808.dwPlatformId == 1) {
    if (local_808.dwMinorVersion == 0) {
      FUN_1805a6cb0(puVar14,"Windows 95",10);
    }
    else if (local_808.dwMinorVersion == 10) {
      FUN_1805a6cb0(puVar14,"Windows 98",10);
    }
    else if (local_808.dwMinorVersion == 0x5a) {
      FUN_1805a6cb0(puVar14,"Windows Me",10);
    }
    goto LAB_18071dd3e;
  }
  if (local_808.dwPlatformId != 2) {
    FUN_1805a6cb0(puVar14,"Windows",7);
    if (puVar1 != puVar14) {
      puVar12 = puVar14;
      if (0xf < *(ulonglong *)(puVar14 + 6)) {
        puVar12 = *(uint **)puVar14;
      }
      FUN_1805a6cb0(puVar1,puVar12,*(undefined8 *)(puVar14 + 4));
    }
    goto LAB_18071dd3e;
  }
  if (local_808.dwMajorVersion == 4) {
    pcVar13 = "Windows NT";
LAB_18071dc05:
    uVar8 = 10;
  }
  else if (local_808.dwMajorVersion == 5) {
    if (local_808.dwMinorVersion != 0) {
      if (local_808.dwMinorVersion != 1) goto LAB_18071dd3e;
      pcVar13 = "Windows XP";
      goto LAB_18071dc05;
    }
    uVar8 = 0xc;
    pcVar13 = "Windows 2000";
  }
  else if (local_808.dwMajorVersion == 6) {
    local_6e8.dwOSVersionInfoSize = 0x11c;
    GetVersionExW(&local_6e8);
    if (local_808.dwMinorVersion == 0) {
      if (local_5ce == '\x01') {
        uVar8 = 5;
        pcVar13 = "Vista";
      }
      else {
        uVar8 = 0x13;
        pcVar13 = "Windows Server 2008";
      }
    }
    else if (local_808.dwMinorVersion == 1) {
      if (local_5ce == '\x01') {
        uVar8 = 9;
        pcVar13 = "Windows 7";
      }
      else {
        uVar8 = 0x16;
        pcVar13 = "Windows Server 2008 R2";
      }
    }
    else {
      if (1 < local_808.dwMinorVersion - 2) goto LAB_18071dd3e;
      if (local_5ce == '\x01') {
        uVar8 = 9;
        pcVar13 = "Windows 8";
      }
      else {
        uVar8 = 0x13;
        pcVar13 = "Windows Server 2012";
      }
    }
  }
  else if (local_808.dwMajorVersion == 10) {
    local_5c8.dwOSVersionInfoSize = 0x11c;
    GetVersionExW(&local_5c8);
    if (local_808.dwMinorVersion != 0) goto LAB_18071dd3e;
    if (local_4ae == '\x01') {
      uVar8 = 10;
      pcVar13 = "Windows 10";
    }
    else {
      uVar8 = 0x11;
      pcVar13 = "Windows Server 10";
    }
  }
  else {
    uVar8 = 7;
    pcVar13 = "Windows";
  }
  FUN_1805a6cb0(puVar14,pcVar13,uVar8);
  FUN_1805b98c0(puVar1);
LAB_18071dd3e:
  local_940 = (undefined8 *)0xba06c9d499e9f30a;
  local_950 = CONCAT44(local_950._4_4_,0x99e9f30a);
  do {
    puVar16 = (undefined1 *)((longlong)puVar17 + (longlong)pcVar15);
    pcVar15 = (code *)(((~((longlong)pcVar15 - (longlong)puVar16) + 1U) - (longlong)puVar16 ^
                       0xffffffffffffffff) + 1);
    puVar17 = (undefined8 *)(puVar16 + -(longlong)pcVar15);
    uVar9 = (unaff_retaddr + 1) * unaff_retaddr & 0x80000001;
    if ((int)uVar9 < 0) {
      uVar9 = (uVar9 - 1 | 0xfffffffe) + 1;
    }
  } while (uVar9 != 0);
  if (param_1[0x13] != 0) {
    FUN_18093d5a0(&local_850,local_808.szCSDVersion,0);
    uVar8 = FUN_1805a3f20(local_288,"%s v%ld.%ld build %ld");
    uVar8 = FUN_1805b2240(uVar8,puVar1);
    uVar8 = FUN_18071cd80(uVar8,&local_808.dwMajorVersion);
    uVar8 = FUN_18071cd80(uVar8,&local_808.dwMinorVersion);
    uVar8 = FUN_18071cd80(uVar8,&local_808.dwBuildNumber);
    FUN_1805ae640(uVar8,&local_890);
    if (puVar1 == &local_890) {
      if (0xf < uStack_878) {
        pvVar3 = (void *)CONCAT44(uStack_88c,local_890);
        pvVar11 = pvVar3;
        if ((0xfff < uStack_878 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar3 + -8),
           0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
    }
    else {
      FUN_180485450(puVar1);
      *puVar1 = local_890;
      *(undefined4 *)((longlong)param_1 + 0x8c) = uStack_88c;
      *(undefined4 *)(param_1 + 0x12) = uStack_888;
      *(undefined4 *)((longlong)param_1 + 0x94) = uStack_884;
      param_1[0x13] = local_880;
      param_1[0x14] = uStack_878;
    }
    uStack_878 = 0xf;
    local_890 = local_890 & 0xffffff00;
    local_880 = pcVar15;
    FUN_1805a4fa0(local_288);
    if (local_840 != 0) {
      uVar8 = FUN_1805a3f20(local_178,"%s with %s");
      uVar8 = FUN_1805b2240(uVar8,puVar1);
      uVar8 = FUN_1805b2240(uVar8,&local_850);
      FUN_1805ae640(uVar8,&local_870);
      if (puVar1 == &local_870) {
        if (0xf < uStack_858) {
          pvVar3 = (void *)CONCAT44(uStack_86c,local_870);
          pvVar11 = pvVar3;
          if ((0xfff < uStack_858 + 1) &&
             (pvVar11 = *(void **)((longlong)pvVar3 + -8),
             0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar11);
        }
      }
      else {
        FUN_180485450(puVar1);
        *puVar1 = local_870;
        *(undefined4 *)((longlong)param_1 + 0x8c) = uStack_86c;
        *(undefined4 *)(param_1 + 0x12) = uStack_868;
        *(undefined4 *)((longlong)param_1 + 0x94) = uStack_864;
        param_1[0x13] = local_860;
        param_1[0x14] = uStack_858;
      }
      uStack_858 = 0xf;
      local_870 = local_870 & 0xffffff00;
      local_860 = pcVar15;
      FUN_1805a4fa0(local_178);
    }
    if (0xf < local_838) {
      pvVar3 = (void *)CONCAT71(uStack_84f,local_850);
      pvVar11 = pvVar3;
      if ((0xfff < local_838 + 1) &&
         (pvVar11 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar11);
    }
  }
  return 0;
}



############ FUN_ 180637720 size=1702 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180637720(longlong param_1,longlong param_2,undefined8 param_3,longlong *param_4,
                  int param_5)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *pvVar5;
  char cVar6;
  int iVar7;
  uint uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  void *pvVar11;
  undefined4 *puVar12;
  uint uVar13;
  undefined8 *puVar14;
  longlong lVar15;
  undefined8 *puVar16;
  undefined8 *puVar17;
  undefined8 *puVar18;
  bool bVar19;
  bool bVar20;
  undefined1 auStack_248 [32];
  undefined1 *local_228;
  undefined1 *local_220;
  undefined1 *local_218;
  longlong *local_210;
  char local_208;
  char local_207;
  undefined8 *local_200;
  undefined8 local_1f8;
  longlong *local_1f0;
  undefined8 local_1e8;
  undefined8 *puStack_1e0;
  undefined8 *local_1d8;
  undefined8 local_1d0;
  undefined1 local_1c8;
  undefined7 uStack_1c7;
  undefined **local_1c0;
  uint local_1b8;
  uint uStack_1b4;
  ulonglong local_1b0;
  undefined4 uStack_1a8;
  undefined4 uStack_1a4;
  undefined4 local_1a0;
  undefined1 local_198;
  undefined7 uStack_197;
  undefined8 local_188;
  ulonglong local_180;
  undefined1 local_178;
  undefined7 uStack_177;
  undefined8 local_168;
  ulonglong local_160;
  undefined1 local_158;
  undefined7 uStack_157;
  undefined8 local_148;
  ulonglong local_140;
  undefined1 local_138;
  undefined7 uStack_137;
  undefined8 local_128;
  ulonglong local_120;
  undefined **local_118;
  uint local_110;
  undefined4 local_10c;
  undefined1 local_108 [32];
  undefined1 local_e8 [32];
  undefined1 local_c8 [32];
  undefined1 local_a8 [32];
  undefined1 local_88 [32];
  undefined8 *local_68;
  undefined8 *local_60;
  ulonglong local_48;
  
  local_1d0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_248;
  puVar18 = (undefined8 *)0x0;
  if (param_4 != (longlong *)0x0) {
    *param_4 = 0;
  }
  lVar9 = *(longlong *)(param_1 + 0xb8) - *(longlong *)(param_1 + 0xb0);
  lVar15 = lVar9 >> 0x3f;
  if (lVar9 / 0x28 + lVar15 != lVar15) {
    local_1f8 = param_3;
    local_1f0 = param_4;
    if (param_5 == 1) {
      local_1e8 = 0;
      puStack_1e0 = (undefined8 *)0x0;
      local_1d8 = (undefined8 *)0x0;
      lVar15 = *(longlong *)(param_2 + 0xb0);
      lVar9 = *(longlong *)(param_2 + 0xb8);
      puVar14 = (undefined8 *)0x0;
      puVar10 = puVar18;
      while (lVar15 != lVar9) {
        if (*(uint *)(lVar15 + 8) < 0xb) {
          if (puVar10 == puVar14) {
            FUN_180623db0(&local_1e8,puVar14,lVar15);
            puVar10 = local_1d8;
            puVar14 = puStack_1e0;
            goto LAB_18063784f;
          }
          *puVar14 = pace::MachineBinding::vftable;
          *(undefined4 *)(puVar14 + 1) = *(undefined4 *)(lVar15 + 8);
          *(undefined4 *)((longlong)puVar14 + 0xc) = *(undefined4 *)(lVar15 + 0xc);
          uVar2 = *(undefined4 *)(lVar15 + 0x14);
          uVar3 = *(undefined4 *)(lVar15 + 0x18);
          uVar4 = *(undefined4 *)(lVar15 + 0x1c);
          *(undefined4 *)(puVar14 + 2) = *(undefined4 *)(lVar15 + 0x10);
          *(undefined4 *)((longlong)puVar14 + 0x14) = uVar2;
          *(undefined4 *)(puVar14 + 3) = uVar3;
          *(undefined4 *)((longlong)puVar14 + 0x1c) = uVar4;
          *(undefined4 *)(puVar14 + 4) = *(undefined4 *)(lVar15 + 0x20);
          puVar14 = puVar14 + 5;
          lVar15 = lVar15 + 0x28;
          puStack_1e0 = puVar14;
        }
        else {
LAB_18063784f:
          lVar15 = lVar15 + 0x28;
        }
      }
      local_1b8 = 0;
      uStack_1b4 = 0;
      local_1b0 = 0xf;
      local_1c8 = 0;
      FUN_1805a6cb0(&local_1c8,&DAT_181baf991,0);
      local_128 = 0;
      local_120 = 0xf;
      local_138 = 0;
      FUN_1805a6cb0(&local_138,&DAT_181baf991,0);
      local_148 = 0;
      local_140 = 0xf;
      local_158 = 0;
      FUN_1805a6cb0(&local_158,&DAT_181baf991,0);
      local_168 = 0;
      local_160 = 0xf;
      local_178 = 0;
      FUN_1805a6cb0(&local_178,&DAT_181baf991,0);
      local_188 = 0;
      local_180 = 0xf;
      local_198 = 0;
      FUN_1805a6cb0(&local_198,&DAT_181baf991,0);
      local_210 = (longlong *)&local_1c8;
      local_218 = &local_138;
      local_220 = &local_158;
      local_228 = &local_178;
      FUN_180629230(&local_118,&local_1e8,*(undefined4 *)(param_2 + 8),&local_198);
      if (0xf < local_180) {
        pvVar5 = (void *)CONCAT71(uStack_197,local_198);
        pvVar11 = pvVar5;
        if ((0xfff < local_180 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar5 + -8),
           0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
      if (0xf < local_160) {
        pvVar5 = (void *)CONCAT71(uStack_177,local_178);
        pvVar11 = pvVar5;
        if ((0xfff < local_160 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar5 + -8),
           0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
      if (0xf < local_140) {
        pvVar5 = (void *)CONCAT71(uStack_157,local_158);
        pvVar11 = pvVar5;
        if ((0xfff < local_140 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar5 + -8),
           0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
      if (0xf < local_120) {
        pvVar5 = (void *)CONCAT71(uStack_137,local_138);
        pvVar11 = pvVar5;
        if ((0xfff < local_120 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar5 + -8),
           0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
      if (0xf < local_1b0) {
        pvVar5 = (void *)CONCAT71(uStack_1c7,local_1c8);
        pvVar11 = pvVar5;
        if ((0xfff < local_1b0 + 1) &&
           (pvVar11 = *(void **)((longlong)pvVar5 + -8),
           0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar11)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar11);
      }
      lVar15 = *(longlong *)(param_1 + 0xb0);
      if (lVar15 != *(longlong *)(param_1 + 0xb8)) {
        local_1f0 = (longlong *)&local_1c8;
        puVar10 = local_60;
        puVar14 = local_68;
        do {
          uVar8 = *(uint *)(lVar15 + 8);
          uVar13 = *(uint *)(lVar15 + 0xc);
          local_1c0 = pace::MachineBinding::vftable;
          local_1b0 = *(ulonglong *)(lVar15 + 0x10);
          uStack_1a8 = *(undefined4 *)(lVar15 + 0x18);
          uStack_1a4 = *(undefined4 *)(lVar15 + 0x1c);
          local_1a0 = *(undefined4 *)(lVar15 + 0x20);
          local_1b8 = uVar8;
          uStack_1b4 = uVar13;
          puVar16 = puVar10;
          puVar17 = puVar14;
          while ((puVar17 != puVar10 &&
                 ((((*(uint *)(puVar17 + 1) < uVar8 || (*(uint *)(puVar17 + 1) != uVar8)) ||
                   (*(uint *)((longlong)puVar17 + 0xc) < uVar13)) ||
                  ((*(uint *)((longlong)puVar17 + 0xc) != uVar13 ||
                   (iVar7 = FUN_1805cdee0(puVar17 + 2,&local_1b0,0x14), puVar16 = local_60,
                   puVar14 = local_68, uVar8 = local_1b8, uVar13 = uStack_1b4, iVar7 != 0))))))) {
            puVar17 = puVar17 + 5;
            puVar16 = local_60;
            puVar14 = local_68;
          }
          if (puVar17 != puVar16) {
            puVar18 = (undefined8 *)((longlong)puVar18 + 1);
          }
          lVar15 = lVar15 + 0x28;
          puVar10 = puVar16;
        } while (lVar15 != *(longlong *)(param_1 + 0xb8));
      }
      FUN_18062b2f0(&local_118);
      FUN_18062b670(&local_1e8);
    }
    else {
      local_110 = *(uint *)(param_2 + 8);
      local_207 = local_110 == *(uint *)(param_1 + 8);
      if ((*(uint *)(param_1 + 8) < 2) || (local_208 = '\x01', local_110 < 2)) {
        local_208 = '\0';
      }
      local_118 = pace::MachineId::vftable;
      local_10c = *(undefined4 *)(param_2 + 0xc);
      FUN_1805a4070(local_108,param_2 + 0x10);
      FUN_1805a4070(local_e8,param_2 + 0x30);
      FUN_1805a4070(local_c8,param_2 + 0x50);
      FUN_1805a4070(local_a8,param_2 + 0x70);
      FUN_1805a4070(local_88,param_2 + 0x90);
      FUN_180624fd0(&local_68,param_2 + 0xb0);
      lVar15 = *(longlong *)(param_1 + 0xb0);
      if (lVar15 != *(longlong *)(param_1 + 0xb8)) {
        do {
          uVar8 = *(uint *)(lVar15 + 8);
          FUN_18062d9f0(&local_118,&local_200,lVar15,0);
          puVar14 = local_60;
          puVar10 = local_200;
          if ((local_200 == local_60) || (cVar6 = FUN_180637df0(lVar15,local_200), cVar6 == '\0')) {
            if (((local_208 != '\0') && (4 < uVar8)) && ((uVar8 < 7 || (uVar8 - 8 < 2))))
            goto LAB_180637d4e;
            if (local_207 == '\0') {
              iVar7 = *(int *)(param_1 + 8);
              if (iVar7 == 1) {
                bVar19 = uVar8 < 10;
                bVar20 = uVar8 == 10;
LAB_180637d4c:
                if (!bVar19 && !bVar20) goto LAB_180637d4e;
              }
              else if (iVar7 == 2) {
                if (10 < uVar8) {
                  bVar19 = uVar8 - 0x15 < 3;
                  bVar20 = uVar8 - 0x15 == 3;
                  goto LAB_180637d4c;
                }
              }
              else if ((((iVar7 == 3) && (10 < uVar8)) && (3 < uVar8 - 0x15)) && (uVar8 != 0x1f))
              goto LAB_180637d4e;
            }
          }
          else {
            puVar10 = local_68 + (((longlong)puVar10 - (longlong)local_68) / 0x28) * 5;
            if (puVar10 + 5 != puVar14) {
              puVar12 = (undefined4 *)((longlong)puVar10 + 0xc);
              lVar9 = (longlong)(puVar10 + 5) - (longlong)puVar10;
              do {
                puVar12[-1] = *(undefined4 *)(lVar9 + -4 + (longlong)puVar12);
                *puVar12 = *(undefined4 *)(lVar9 + (longlong)puVar12);
                puVar1 = (undefined4 *)(lVar9 + 4 + (longlong)puVar12);
                uVar2 = puVar1[1];
                uVar3 = puVar1[2];
                uVar4 = puVar1[3];
                puVar12[1] = *puVar1;
                puVar12[2] = uVar2;
                puVar12[3] = uVar3;
                puVar12[4] = uVar4;
                puVar12[5] = *(undefined4 *)(lVar9 + 0x14 + (longlong)puVar12);
                puVar12 = puVar12 + 10;
              } while ((undefined8 *)(lVar9 + -0xc + (longlong)puVar12) != puVar14);
            }
            puVar14 = puVar14 + -5;
            (**(code **)*puVar14)(puVar14,0);
            local_60 = puVar14;
LAB_180637d4e:
            puVar18 = (undefined8 *)((longlong)puVar18 + 1);
          }
          lVar15 = lVar15 + 0x28;
          param_4 = local_1f0;
        } while (lVar15 != *(longlong *)(param_1 + 0xb8));
      }
      FUN_18062b2f0(&local_118);
    }
    if (param_4 != (longlong *)0x0) {
      *param_4 = 100 - (ulonglong)((longlong)puVar18 * 100) /
                       (ulonglong)
                       ((*(longlong *)(param_1 + 0xb8) - *(longlong *)(param_1 + 0xb0)) / 0x28);
    }
  }
}



############ FUN_ 18063cb60 size=52 ############

void * FUN_18063cb60(void *param_1,ulonglong param_2)

{
  FUN_18063cad0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1806445f0 size=104 ############

undefined8 * FUN_1806445f0(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::ilok::Ilok2CertChain::vftable;
  pvVar1 = (void *)param_1[2];
  if (pvVar1 == (void *)0x0) {
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(param_1[4] - (longlong)pvVar1)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180644680 size=52 ############

void * FUN_180644680(void *param_1,ulonglong param_2)

{
  FUN_180643220();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1806446c0 size=52 ############

void * FUN_1806446c0(void *param_1,ulonglong param_2)

{
  FUN_180643940();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180645920 size=368 ############

undefined1 FUN_180645920(longlong *param_1,undefined4 param_2,ulonglong param_3,undefined8 *param_4)

{
  longlong lVar1;
  undefined8 *puVar2;
  undefined1 uVar3;
  undefined8 uVar4;
  void *pvVar5;
  ulonglong _Size;
  ulonglong uVar6;
  void *local_60;
  longlong lStack_58;
  longlong local_50;
  undefined1 local_48 [32];
  
  local_60 = (void *)0x0;
  lStack_58 = 0;
  local_50 = 0;
  lVar1 = param_4[2];
  if (lVar1 != 0) {
    puVar2 = param_4;
    if (0xf < (ulonglong)param_4[3]) {
      puVar2 = (undefined8 *)*param_4;
      param_4 = (undefined8 *)*param_4;
    }
    _Size = (longlong)puVar2 + (lVar1 - (longlong)param_4);
    if (_Size == 0) {
      memmove((void *)0x0,param_4,0);
      lStack_58 = 0;
    }
    else {
      if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      uVar6 = 0;
      if (_Size != 0) {
        uVar6 = _Size;
      }
      local_60 = (void *)0x0;
      lStack_58 = 0;
      local_50 = 0;
      if (uVar6 != 0) {
        if (0x7fffffffffffffff < uVar6) {
                    /* WARNING: Subroutine does not return */
          FUN_1805a69c0();
        }
        local_60 = (void *)FUN_1805bc8b0(&local_60,uVar6,param_3,lVar1,0xfffffffffffffffe);
        local_50 = uVar6 + (longlong)local_60;
      }
      pvVar5 = local_60;
      memmove(local_60,param_4,_Size);
      lStack_58 = _Size + (longlong)pvVar5;
    }
  }
  uVar4 = FUN_1805b46a0(local_48,&local_60);
  uVar3 = (**(code **)(*param_1 + 0x28))(param_1,param_2,param_3 & 0xffffffff,uVar4);
  if (local_60 != (void *)0x0) {
    pvVar5 = local_60;
    if ((0xfff < (ulonglong)(local_50 - (longlong)local_60)) &&
       (pvVar5 = *(void **)((longlong)local_60 + -8),
       0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  return uVar3;
}



############ FUN_ 180652700 size=376 ############

void FUN_180652700(longlong param_1,undefined4 param_2,undefined8 *param_3,undefined1 *param_4,
                  undefined1 *param_5)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  tm *ptVar5;
  undefined8 uVar6;
  void *_Memory;
  __time64_t local_a8;
  undefined1 local_a0 [8];
  void *local_98;
  undefined8 uStack_90;
  longlong local_88;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  int local_74;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  
  local_60 = 0xfffffffffffffffe;
  uVar1 = FUN_18061f8c0(param_3 + 1);
  if (uVar1 != 0) {
    uVar2 = FUN_18061f8c0((longlong)param_3 + 0xc);
    if (param_5 == (undefined1 *)0x0) {
      _time64(&local_a8);
      ptVar5 = _gmtime64(&local_a8);
      if (ptVar5 == (tm *)0x0) {
        uVar6 = FUN_1805b6c80(&local_98,"could not convert calendar time to UTC time");
                    /* WARNING: Subroutine does not return */
        FUN_1805b3e60(uVar6);
      }
      FUN_1805bd670(local_a0);
      param_5 = local_a0;
    }
    uVar3 = FUN_18065fec0(param_5);
    uVar4 = (uVar2 & 0xffffff00) - uVar3;
    if ((uVar2 & 0xffffff00) <= uVar3) {
      uVar4 = 0;
    }
    if (uVar4 < uVar1) {
      local_7c = 0x90;
      local_78 = 0x80000000;
      local_74 = uVar1 - uVar4;
      local_98 = (void *)0x0;
      uStack_90 = 0;
      local_88 = 0;
      local_80 = param_2;
      (**(code **)(**(longlong **)(param_1 + 8) + 0xf0))
                (*(longlong **)(param_1 + 8),&local_80,&local_98,&local_58);
      if (local_98 != (void *)0x0) {
        _Memory = local_98;
        if ((0xfff < (ulonglong)(local_88 - (longlong)local_98)) &&
           (_Memory = *(void **)((longlong)local_98 + -8),
           0x1f < (ulonglong)((longlong)local_98 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
      *param_3 = local_58;
      param_3[1] = uStack_50;
      param_3[2] = local_48;
      param_3[3] = uStack_40;
    }
  }
  if (param_4 != (undefined1 *)0x0) {
    *param_4 = 1;
  }
  return;
}



############ FUN_ 180652a50 size=445 ############

void FUN_180652a50(longlong param_1,undefined4 param_2,char *param_3,undefined8 param_4,
                  void **param_5)

{
  void *pvVar1;
  void *pvVar2;
  ulonglong _Size;
  ulonglong uVar3;
  undefined1 local_res10 [8];
  void **local_88;
  undefined1 *puStack_80;
  void *local_78;
  longlong lStack_70;
  longlong local_68;
  undefined4 local_60;
  char local_5c;
  undefined1 local_5b;
  undefined2 local_5a;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined8 local_40;
  undefined8 uStack_38;
  undefined8 local_30;
  undefined8 uStack_28;
  
  local_78 = (void *)0x0;
  lStack_70 = 0;
  local_68 = 0;
  local_5c = *param_3;
  local_5b = 0;
  local_5a = 0;
  local_58 = *(undefined4 *)(param_3 + 4);
  local_60 = param_2;
  if ((local_5c == -0x7e) || (local_5c == -0x7c)) {
    local_54 = *(undefined4 *)(param_3 + 8);
    uStack_50 = *(undefined4 *)(param_3 + 0xc);
    uStack_4c = *(undefined4 *)(param_3 + 0x10);
    uStack_48 = *(undefined4 *)(param_3 + 0x14);
  }
  else if (local_5c == -0x78) {
    local_54 = *(undefined4 *)(param_3 + 8);
    uStack_50 = *(undefined4 *)(param_3 + 0xc);
    uStack_4c = *(undefined4 *)(param_3 + 0x10);
    uStack_48 = *(undefined4 *)(param_3 + 0x14);
    if (param_5 != (void **)0x0) {
      if (&local_78 != param_5) {
        pvVar2 = *param_5;
        _Size = (longlong)param_5[1] - (longlong)pvVar2;
        if (_Size == 0) {
          memmove((void *)0x0,pvVar2,0);
          lStack_70 = 0;
        }
        else {
          if (0x7fffffffffffffff < _Size) {
                    /* WARNING: Subroutine does not return */
            FUN_1805a69c0(&local_78,0x88,0,param_4,0xfffffffffffffffe);
          }
          uVar3 = 0;
          if (_Size != 0) {
            uVar3 = _Size;
          }
          FUN_1805bbbc0(&local_78,uVar3);
          pvVar1 = local_78;
          memmove(local_78,pvVar2,_Size);
          lStack_70 = _Size + (longlong)pvVar1;
        }
      }
      local_res10[0] = 0;
      local_88 = &local_78;
      puStack_80 = local_res10;
      FUN_1805e1ee0(&local_78,0x10,&local_88);
    }
  }
  else if (local_5c == -0x70) {
    local_54 = (undefined4)param_4;
  }
  (**(code **)(**(longlong **)(param_1 + 8) + 0xf0))
            (*(longlong **)(param_1 + 8),&local_60,&local_78,&local_40);
  *(undefined8 *)param_3 = local_40;
  *(undefined8 *)(param_3 + 8) = uStack_38;
  *(undefined8 *)(param_3 + 0x10) = local_30;
  *(undefined8 *)(param_3 + 0x18) = uStack_28;
  if (local_78 == (void *)0x0) {
    return;
  }
  pvVar2 = local_78;
  if ((0xfff < (ulonglong)(local_68 - (longlong)local_78)) &&
     (pvVar2 = *(void **)((longlong)local_78 + -8),
     0x1f < (ulonglong)((longlong)local_78 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18065a970 size=280 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065a970(undefined8 *param_1,undefined8 param_2)

{
  void *pvVar1;
  undefined *puVar2;
  void *_Memory;
  longlong lVar3;
  longlong lVar4;
  undefined1 auStack_68 [32];
  undefined8 local_48;
  undefined8 *local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_48 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  lVar3 = -1;
  lVar4 = -1;
  do {
    lVar4 = lVar4 + 1;
  } while (PTR_DAT_18260a828[lVar4] != '\0');
  local_40 = param_1;
  FUN_1805a6cb0(&local_38);
  FUN_1806598c0(param_1,&local_38,param_2);
  if (local_20 < 0x10) {
    *param_1 = boost::date_time::
               time_input_facet<boost::posix_time::ptime,char,std::istreambuf_iterator<char,std::char_traits<char>_>_>
               ::vftable;
    puVar2 = PTR_DAT_18260a830;
    param_1[0x2e] = 0;
    param_1[0x2f] = 0xf;
    *(undefined1 *)(param_1 + 0x2c) = 0;
    do {
      lVar3 = lVar3 + 1;
    } while (puVar2[lVar3] != '\0');
    FUN_1805a6cb0(param_1 + 0x2c,puVar2,lVar3);
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180655e60 size=1267 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180655e60(undefined8 *param_1,locale *param_2,char param_3)

{
  undefined1 uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  longlong lVar4;
  _Facet_base *p_Var5;
  __uint64 _Var6;
  _Locimp *p_Var7;
  void *pvVar8;
  ulonglong uVar9;
  longlong lVar10;
  time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *ptVar11;
  uint uVar12;
  longlong lVar13;
  undefined1 *puVar14;
  int iVar15;
  undefined1 auStack_258 [32];
  undefined1 local_238;
  undefined8 *local_230;
  undefined1 *local_228;
  undefined1 *local_220;
  undefined2 local_218;
  undefined1 local_216;
  char local_214 [4];
  uint local_210;
  _Facet_base *local_208;
  _Facet_base *local_200;
  locale *local_1f8;
  undefined1 *local_1f0;
  undefined1 local_1e8;
  uint7 uStack_1e7;
  undefined8 uStack_1e0;
  undefined *local_1d8;
  undefined **local_1d0;
  basic_ostream<char,std::char_traits<char>_> local_1c8 [48];
  longlong *local_198;
  ulonglong *local_190 [2];
  undefined1 local_180 [24];
  undefined8 local_168;
  uint local_160;
  basic_ios<char,std::char_traits<char>_> local_150 [104];
  undefined8 local_e8;
  undefined8 *local_e0;
  undefined1 local_d8 [24];
  undefined1 local_c0 [24];
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 local_98;
  ulonglong uStack_90;
  undefined1 local_88;
  undefined7 uStack_87;
  longlong local_78;
  ulonglong local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined4 local_48;
  ulonglong local_40;
  
  local_e8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_258;
  local_1f8 = param_2;
  local_e0 = param_1;
  iVar15 = 0;
  local_214[0] = '%';
  local_214[1] = 'b';
  local_214[2] = 0;
  local_218 = 0x4225;
  local_216 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  uVar12 = 1;
  local_210 = 1;
  local_78 = 0;
  local_70 = 0xf;
  local_88 = 0;
  lVar10 = -1;
  lVar13 = -1;
  do {
    lVar4 = lVar13 + 1;
    lVar13 = lVar13 + 1;
  } while (local_214[lVar4] != '\0');
  FUN_1805a6cb0(&local_88,local_214);
  if (param_3 == '\0') {
    do {
      lVar13 = lVar10 + 1;
      lVar10 = lVar10 + 1;
    } while (*(char *)((longlong)&local_218 + lVar13) != '\0');
    FUN_1805a6cb0(&local_88,&local_218);
  }
  puVar14 = &local_88;
  if (0xf < local_70) {
    puVar14 = (undefined1 *)CONCAT71(uStack_87,local_88);
  }
  local_1f0 = puVar14 + local_78;
  local_68 = 0;
  local_60 = 0;
  local_58 = 0;
  local_50 = 0;
  local_48 = 0;
  do {
    local_58 = CONCAT44(local_58._4_4_,iVar15);
    local_1d8 = &DAT_181bb3cc0;
    std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_150)
    ;
    local_210 = uVar12 | 2;
    std::basic_ostream<char,std::char_traits<char>_>::basic_ostream<char,std::char_traits<char>_>
              ((basic_ostream<char,std::char_traits<char>_> *)&local_1d8,
               (basic_streambuf<char,std::char_traits<char>_> *)&local_1d0,false);
    *(undefined ***)((longlong)&local_1d8 + (longlong)*(int *)(local_1d8 + 4)) =
         std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    *(int *)((longlong)&uStack_1e0 + (longlong)*(int *)(local_1d8 + 4) + 4) =
         *(int *)(local_1d8 + 4) + -0x88;
    std::basic_streambuf<char,std::char_traits<char>_>::
    basic_streambuf<char,std::char_traits<char>_>
              ((basic_streambuf<char,std::char_traits<char>_> *)&local_1d0);
    local_1d0 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    local_168 = 0;
    local_160 = 4;
    local_1e8 = 0;
    uStack_1e0 = *(undefined8 *)((longlong)local_190 + (longlong)*(int *)(local_1d8 + 4));
    local_a8 = (void *)((ulonglong)uStack_1e7 << 8);
    uStack_a0 = uStack_1e0;
    uVar1 = local_180[*(int *)(local_1d8 + 4)];
    std::_Lockit::_Lockit((_Lockit *)&local_218,0);
    local_208 = DAT_18265f640;
    _Var6 = std::locale::id::operator_unsigned___int64((id *)id_exref);
    lVar10 = *(longlong *)(local_1f8 + 8);
    if (_Var6 < *(ulonglong *)(lVar10 + 0x18)) {
      ptVar11 = *(time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> **)
                 (*(longlong *)(lVar10 + 0x10) + _Var6 * 8);
      if (ptVar11 == (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)0x0)
      goto LAB_180656093;
    }
    else {
      ptVar11 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)0x0;
LAB_180656093:
      if (*(char *)(lVar10 + 0x24) == '\0') {
LAB_1806560ac:
        if (ptVar11 != (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)0x0
           ) goto LAB_1806560fc;
      }
      else {
        p_Var7 = std::locale::_Getgloballocale();
        if (_Var6 < *(ulonglong *)(p_Var7 + 0x18)) {
          ptVar11 = *(time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> **)
                     (*(longlong *)(p_Var7 + 0x10) + _Var6 * 8);
          goto LAB_1806560ac;
        }
      }
      ptVar11 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)local_208;
      if (local_208 == (_Facet_base *)0x0) {
        _Var6 = std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Getcat
                          ((facet **)&local_208,local_1f8);
        p_Var5 = local_208;
        if (_Var6 == 0xffffffffffffffff) {
          FUN_1805a49a0(local_d8);
                    /* WARNING: Subroutine does not return */
          _CxxThrowException(local_d8,(ThrowInfo *)&DAT_1825fd200);
        }
        local_200 = local_208;
        std::_Facet_Register(local_208);
        (**(code **)(*(longlong *)p_Var5 + 8))(p_Var5);
        DAT_18265f640 = local_208;
        ptVar11 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)
                  local_208;
      }
    }
LAB_1806560fc:
    std::_Lockit::~_Lockit((_Lockit *)&local_218);
    local_220 = local_1f0;
    local_230 = &local_68;
    local_238 = uVar1;
    local_228 = puVar14;
    std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::put
              (ptVar11,local_c0,&local_a8,(longlong)&local_1d8 + (longlong)*(int *)(local_1d8 + 4));
    local_98 = 0;
    uStack_90 = 0xf;
    local_a8 = (void *)((ulonglong)local_a8 & 0xffffffffffffff00);
    local_210 = uVar12 | 10;
    if (((local_160 & 2) == 0) && ((_Facet_base *)*local_190[0] != (_Facet_base *)0x0)) {
      local_200 = (_Facet_base *)*local_190[0];
LAB_1806561cf:
      FUN_1805a6cb0(&local_a8);
    }
    else if (((local_160 & 4) == 0) && (*local_198 != 0)) goto LAB_1806561cf;
    uVar12 = uVar12 | 6;
    local_210 = uVar12;
    if (param_1[2] == param_1[1]) {
      FUN_1805cfbf0(param_1,param_1[1]);
      uVar9 = uStack_90;
    }
    else {
      puVar2 = (undefined4 *)param_1[1];
      *puVar2 = (undefined4)local_a8;
      puVar2[1] = local_a8._4_4_;
      puVar2[2] = (undefined4)uStack_a0;
      puVar2[3] = uStack_a0._4_4_;
      *(undefined8 *)(puVar2 + 4) = local_98;
      *(ulonglong *)(puVar2 + 6) = uStack_90;
      local_a8 = (void *)((ulonglong)local_a8 & 0xffffffffffffff00);
      param_1[1] = param_1[1] + 0x20;
      uVar9 = 0xf;
    }
    if (0xf < uVar9) {
      pvVar8 = local_a8;
      if ((0xfff < uVar9 + 1) &&
         (pvVar8 = *(void **)((longlong)local_a8 + -8),
         0x1f < (ulonglong)((longlong)local_a8 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar8);
    }
    *(undefined ***)((longlong)&local_1d8 + (longlong)*(int *)(local_1d8 + 4)) =
         std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    *(int *)((longlong)&uStack_1e0 + (longlong)*(int *)(local_1d8 + 4) + 4) =
         *(int *)(local_1d8 + 4) + -0x88;
    local_1d0 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    FUN_18060cb50(&local_1d0);
    std::basic_streambuf<char,std::char_traits<char>_>::
    ~basic_streambuf<char,std::char_traits<char>_>
              ((basic_streambuf<char,std::char_traits<char>_> *)&local_1d0);
    std::basic_ostream<char,std::char_traits<char>_>::~basic_ostream<char,std::char_traits<char>_>
              (local_1c8);
    std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
              (local_150);
    iVar15 = iVar15 + 1;
    if (0xb < iVar15) {
      if (local_70 < 0x10) {
      }
      pvVar3 = (void *)CONCAT71(uStack_87,local_88);
      pvVar8 = pvVar3;
      if ((0xfff < local_70 + 1) &&
         (pvVar8 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar8);
    }
  } while( true );
}



############ FUN_ 180656380 size=1267 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180656380(undefined8 *param_1,locale *param_2,char param_3)

{
  undefined1 uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  longlong lVar4;
  _Facet_base *p_Var5;
  __uint64 _Var6;
  _Locimp *p_Var7;
  void *pvVar8;
  ulonglong uVar9;
  longlong lVar10;
  time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *ptVar11;
  uint uVar12;
  longlong lVar13;
  undefined1 *puVar14;
  int iVar15;
  undefined1 auStack_258 [32];
  undefined1 local_238;
  undefined8 *local_230;
  undefined1 *local_228;
  undefined1 *local_220;
  undefined2 local_218;
  undefined1 local_216;
  char local_214 [4];
  uint local_210;
  _Facet_base *local_208;
  _Facet_base *local_200;
  locale *local_1f8;
  undefined1 *local_1f0;
  undefined1 local_1e8;
  uint7 uStack_1e7;
  undefined8 uStack_1e0;
  undefined *local_1d8;
  undefined **local_1d0;
  basic_ostream<char,std::char_traits<char>_> local_1c8 [48];
  longlong *local_198;
  ulonglong *local_190 [2];
  undefined1 local_180 [24];
  undefined8 local_168;
  uint local_160;
  basic_ios<char,std::char_traits<char>_> local_150 [104];
  undefined8 local_e8;
  undefined8 *local_e0;
  undefined1 local_d8 [24];
  undefined1 local_c0 [24];
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined8 local_98;
  ulonglong uStack_90;
  undefined1 local_88;
  undefined7 uStack_87;
  longlong local_78;
  ulonglong local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined4 local_48;
  ulonglong local_40;
  
  local_e8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_258;
  local_1f8 = param_2;
  local_e0 = param_1;
  iVar15 = 0;
  local_214[0] = '%';
  local_214[1] = 'a';
  local_214[2] = 0;
  local_218 = 0x4125;
  local_216 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  uVar12 = 1;
  local_210 = 1;
  local_78 = 0;
  local_70 = 0xf;
  local_88 = 0;
  lVar10 = -1;
  lVar13 = -1;
  do {
    lVar4 = lVar13 + 1;
    lVar13 = lVar13 + 1;
  } while (local_214[lVar4] != '\0');
  FUN_1805a6cb0(&local_88,local_214);
  if (param_3 == '\0') {
    do {
      lVar13 = lVar10 + 1;
      lVar10 = lVar10 + 1;
    } while (*(char *)((longlong)&local_218 + lVar13) != '\0');
    FUN_1805a6cb0(&local_88,&local_218);
  }
  puVar14 = &local_88;
  if (0xf < local_70) {
    puVar14 = (undefined1 *)CONCAT71(uStack_87,local_88);
  }
  local_1f0 = puVar14 + local_78;
  local_68 = 0;
  local_60 = 0;
  local_58 = 0;
  local_50 = 0;
  local_48 = 0;
  do {
    local_50 = CONCAT44(local_50._4_4_,iVar15);
    local_1d8 = &DAT_181bb3cc0;
    std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_150)
    ;
    local_210 = uVar12 | 2;
    std::basic_ostream<char,std::char_traits<char>_>::basic_ostream<char,std::char_traits<char>_>
              ((basic_ostream<char,std::char_traits<char>_> *)&local_1d8,
               (basic_streambuf<char,std::char_traits<char>_> *)&local_1d0,false);
    *(undefined ***)((longlong)&local_1d8 + (longlong)*(int *)(local_1d8 + 4)) =
         std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    *(int *)((longlong)&uStack_1e0 + (longlong)*(int *)(local_1d8 + 4) + 4) =
         *(int *)(local_1d8 + 4) + -0x88;
    std::basic_streambuf<char,std::char_traits<char>_>::
    basic_streambuf<char,std::char_traits<char>_>
              ((basic_streambuf<char,std::char_traits<char>_> *)&local_1d0);
    local_1d0 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    local_168 = 0;
    local_160 = 4;
    local_1e8 = 0;
    uStack_1e0 = *(undefined8 *)((longlong)local_190 + (longlong)*(int *)(local_1d8 + 4));
    local_a8 = (void *)((ulonglong)uStack_1e7 << 8);
    uStack_a0 = uStack_1e0;
    uVar1 = local_180[*(int *)(local_1d8 + 4)];
    std::_Lockit::_Lockit((_Lockit *)&local_218,0);
    local_208 = DAT_18265f640;
    _Var6 = std::locale::id::operator_unsigned___int64((id *)id_exref);
    lVar10 = *(longlong *)(local_1f8 + 8);
    if (_Var6 < *(ulonglong *)(lVar10 + 0x18)) {
      ptVar11 = *(time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> **)
                 (*(longlong *)(lVar10 + 0x10) + _Var6 * 8);
      if (ptVar11 == (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)0x0)
      goto LAB_1806565b3;
    }
    else {
      ptVar11 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)0x0;
LAB_1806565b3:
      if (*(char *)(lVar10 + 0x24) == '\0') {
LAB_1806565cc:
        if (ptVar11 != (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)0x0
           ) goto LAB_18065661c;
      }
      else {
        p_Var7 = std::locale::_Getgloballocale();
        if (_Var6 < *(ulonglong *)(p_Var7 + 0x18)) {
          ptVar11 = *(time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> **)
                     (*(longlong *)(p_Var7 + 0x10) + _Var6 * 8);
          goto LAB_1806565cc;
        }
      }
      ptVar11 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)local_208;
      if (local_208 == (_Facet_base *)0x0) {
        _Var6 = std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Getcat
                          ((facet **)&local_208,local_1f8);
        p_Var5 = local_208;
        if (_Var6 == 0xffffffffffffffff) {
          FUN_1805a49a0(local_d8);
                    /* WARNING: Subroutine does not return */
          _CxxThrowException(local_d8,(ThrowInfo *)&DAT_1825fd200);
        }
        local_200 = local_208;
        std::_Facet_Register(local_208);
        (**(code **)(*(longlong *)p_Var5 + 8))(p_Var5);
        DAT_18265f640 = local_208;
        ptVar11 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)
                  local_208;
      }
    }
LAB_18065661c:
    std::_Lockit::~_Lockit((_Lockit *)&local_218);
    local_220 = local_1f0;
    local_230 = &local_68;
    local_238 = uVar1;
    local_228 = puVar14;
    std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::put
              (ptVar11,local_c0,&local_a8,(longlong)&local_1d8 + (longlong)*(int *)(local_1d8 + 4));
    local_98 = 0;
    uStack_90 = 0xf;
    local_a8 = (void *)((ulonglong)local_a8 & 0xffffffffffffff00);
    local_210 = uVar12 | 10;
    if (((local_160 & 2) == 0) && ((_Facet_base *)*local_190[0] != (_Facet_base *)0x0)) {
      local_200 = (_Facet_base *)*local_190[0];
LAB_1806566ef:
      FUN_1805a6cb0(&local_a8);
    }
    else if (((local_160 & 4) == 0) && (*local_198 != 0)) goto LAB_1806566ef;
    uVar12 = uVar12 | 6;
    local_210 = uVar12;
    if (param_1[2] == param_1[1]) {
      FUN_1805cfbf0(param_1,param_1[1]);
      uVar9 = uStack_90;
    }
    else {
      puVar2 = (undefined4 *)param_1[1];
      *puVar2 = (undefined4)local_a8;
      puVar2[1] = local_a8._4_4_;
      puVar2[2] = (undefined4)uStack_a0;
      puVar2[3] = uStack_a0._4_4_;
      *(undefined8 *)(puVar2 + 4) = local_98;
      *(ulonglong *)(puVar2 + 6) = uStack_90;
      local_a8 = (void *)((ulonglong)local_a8 & 0xffffffffffffff00);
      param_1[1] = param_1[1] + 0x20;
      uVar9 = 0xf;
    }
    if (0xf < uVar9) {
      pvVar8 = local_a8;
      if ((0xfff < uVar9 + 1) &&
         (pvVar8 = *(void **)((longlong)local_a8 + -8),
         0x1f < (ulonglong)((longlong)local_a8 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar8);
    }
    *(undefined ***)((longlong)&local_1d8 + (longlong)*(int *)(local_1d8 + 4)) =
         std::basic_ostringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    *(int *)((longlong)&uStack_1e0 + (longlong)*(int *)(local_1d8 + 4) + 4) =
         *(int *)(local_1d8 + 4) + -0x88;
    local_1d0 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
    FUN_18060cb50(&local_1d0);
    std::basic_streambuf<char,std::char_traits<char>_>::
    ~basic_streambuf<char,std::char_traits<char>_>
              ((basic_streambuf<char,std::char_traits<char>_> *)&local_1d0);
    std::basic_ostream<char,std::char_traits<char>_>::~basic_ostream<char,std::char_traits<char>_>
              (local_1c8);
    std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
              (local_150);
    iVar15 = iVar15 + 1;
    if (6 < iVar15) {
      if (local_70 < 0x10) {
      }
      pvVar3 = (void *)CONCAT71(uStack_87,local_88);
      pvVar8 = pvVar3;
      if ((0xfff < local_70 + 1) &&
         (pvVar8 = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar8);
    }
  } while( true );
}



############ FUN_ 1806593d0 size=1214 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806593d0(undefined8 *param_1)

{
  char *pcVar1;
  void *pvVar2;
  longlong lVar3;
  undefined8 uVar4;
  void *pvVar5;
  longlong lVar6;
  undefined1 auStack_198 [32];
  undefined1 *local_178;
  undefined1 *local_170;
  undefined1 *local_168;
  undefined1 *local_160;
  undefined1 *local_158;
  undefined1 *local_150;
  undefined8 local_140;
  undefined8 *local_138;
  undefined1 local_130;
  undefined7 uStack_12f;
  undefined8 local_120;
  ulonglong local_118;
  undefined1 local_110;
  undefined7 uStack_10f;
  undefined8 local_100;
  ulonglong local_f8;
  undefined1 local_f0;
  undefined7 uStack_ef;
  undefined8 local_e0;
  ulonglong local_d8;
  undefined1 local_d0;
  undefined7 uStack_cf;
  undefined8 local_c0;
  ulonglong local_b8;
  undefined1 local_b0;
  undefined7 uStack_af;
  undefined8 local_a0;
  ulonglong local_98;
  undefined1 local_90;
  undefined7 uStack_8f;
  undefined8 local_80;
  ulonglong local_78;
  undefined1 local_70;
  undefined7 uStack_6f;
  undefined8 local_60;
  ulonglong local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  undefined1 local_30;
  undefined7 uStack_2f;
  undefined8 local_20;
  ulonglong local_18;
  ulonglong local_10;
  longlong lVar7;
  
  local_140 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_198;
  *param_1 = 0;
  param_1[1] = 0;
  local_138 = param_1;
  uVar4 = FUN_18065d630();
  *param_1 = uVar4;
  *(undefined2 *)(param_1 + 2) = 0xffff;
  local_20 = 0;
  local_18 = 0xf;
  local_30 = 0;
  lVar7 = -1;
  do {
    pcVar1 = &DAT_181bbabe1 + lVar7;
    lVar7 = lVar7 + 1;
  } while (*pcVar1 != '\0');
  FUN_1805a6cb0(&local_30);
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  lVar7 = -1;
  do {
    lVar3 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("after"[lVar3] != '\0');
  FUN_1805a6cb0(&local_50);
  local_60 = 0;
  local_58 = 0xf;
  local_70 = 0;
  lVar7 = -1;
  do {
    lVar3 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("before"[lVar3] != '\0');
  FUN_1805a6cb0(&local_70);
  local_80 = 0;
  local_78 = 0xf;
  local_90 = 0;
  lVar7 = -1;
  do {
    pcVar1 = &DAT_181bbabc5 + lVar7;
    lVar7 = lVar7 + 1;
  } while (*pcVar1 != '\0');
  FUN_1805a6cb0(&local_90);
  local_a0 = 0;
  local_98 = 0xf;
  local_b0 = 0;
  lVar7 = -1;
  do {
    pcVar1 = &DAT_181bbabbd + lVar7;
    lVar7 = lVar7 + 1;
  } while (*pcVar1 != '\0');
  FUN_1805a6cb0(&local_b0);
  local_c0 = 0;
  local_b8 = 0xf;
  local_d0 = 0;
  lVar7 = -1;
  do {
    lVar3 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("fourth"[lVar3] != '\0');
  FUN_1805a6cb0(&local_d0);
  local_e0 = 0;
  local_d8 = 0xf;
  local_f0 = 0;
  lVar7 = -1;
  do {
    lVar3 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("third"[lVar3] != '\0');
  FUN_1805a6cb0(&local_f0);
  local_100 = 0;
  local_f8 = 0xf;
  local_110 = 0;
  lVar7 = -1;
  do {
    lVar3 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("second"[lVar3] != '\0');
  FUN_1805a6cb0(&local_110);
  local_120 = 0;
  local_118 = 0xf;
  local_130 = 0;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar3 = lVar7 + 1;
    lVar7 = lVar6;
  } while ("first"[lVar3] != '\0');
  FUN_1805a6cb0(&local_130,"first",lVar6);
  local_150 = &local_30;
  local_158 = &local_50;
  local_160 = &local_70;
  local_168 = &local_90;
  local_170 = &local_b0;
  local_178 = &local_d0;
  FUN_18065e5a0(param_1,&local_130,&local_110,&local_f0);
  if (0xf < local_118) {
    pvVar2 = (void *)CONCAT71(uStack_12f,local_130);
    pvVar5 = pvVar2;
    if ((0xfff < local_118 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_f8) {
    pvVar2 = (void *)CONCAT71(uStack_10f,local_110);
    pvVar5 = pvVar2;
    if ((0xfff < local_f8 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_d8) {
    pvVar2 = (void *)CONCAT71(uStack_ef,local_f0);
    pvVar5 = pvVar2;
    if ((0xfff < local_d8 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_b8) {
    pvVar2 = (void *)CONCAT71(uStack_cf,local_d0);
    pvVar5 = pvVar2;
    if ((0xfff < local_b8 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_98) {
    pvVar2 = (void *)CONCAT71(uStack_af,local_b0);
    pvVar5 = pvVar2;
    if ((0xfff < local_98 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_78) {
    pvVar2 = (void *)CONCAT71(uStack_8f,local_90);
    pvVar5 = pvVar2;
    if ((0xfff < local_78 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_58) {
    pvVar2 = (void *)CONCAT71(uStack_6f,local_70);
    pvVar5 = pvVar2;
    if ((0xfff < local_58 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (0xf < local_38) {
    pvVar2 = (void *)CONCAT71(uStack_4f,local_50);
    pvVar5 = pvVar2;
    if ((0xfff < local_38 + 1) &&
       (pvVar5 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar5);
  }
  if (local_18 < 0x10) {
  }
  pvVar2 = (void *)CONCAT71(uStack_2f,local_30);
  pvVar5 = pvVar2;
  if ((0xfff < local_18 + 1) &&
     (pvVar5 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar5)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar5);
}



############ FUN_ 180659da0 size=765 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180659da0(undefined8 *param_1,undefined4 param_2,longlong param_3,longlong param_4,
                  longlong param_5,longlong param_6)

{
  uint *puVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined1 auStack_98 [32];
  undefined8 local_78;
  undefined8 *local_70;
  uint local_68;
  uint uStack_64;
  uint uStack_60;
  uint uStack_5c;
  undefined8 local_58;
  ulonglong uStack_50;
  ulonglong local_48;
  
  local_78 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_98;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  *(undefined4 *)(param_1 + 3) = param_2;
  local_58 = 0;
  uStack_50 = 0xf;
  local_68 = local_68 & 0xffffff00;
  lVar6 = -1;
  lVar7 = -1;
  do {
    lVar7 = lVar7 + 1;
  } while (*(char *)(param_3 + lVar7) != '\0');
  local_70 = param_1;
  FUN_1805a6cb0(&local_68,param_3);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_68);
    uVar5 = uStack_50;
  }
  else {
    puVar1 = (uint *)param_1[1];
    *puVar1 = local_68;
    puVar1[1] = uStack_64;
    puVar1[2] = uStack_60;
    puVar1[3] = uStack_5c;
    *(undefined8 *)(puVar1 + 4) = local_58;
    *(ulonglong *)(puVar1 + 6) = uStack_50;
    local_68 = local_68 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_64,local_68);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_58 = 0;
  uStack_50 = 0xf;
  local_68 = local_68 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar7 = lVar7 + 1;
  } while (*(char *)(param_4 + lVar7) != '\0');
  FUN_1805a6cb0(&local_68,param_4);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_68);
    uVar5 = uStack_50;
  }
  else {
    puVar1 = (uint *)param_1[1];
    *puVar1 = local_68;
    puVar1[1] = uStack_64;
    puVar1[2] = uStack_60;
    puVar1[3] = uStack_5c;
    *(undefined8 *)(puVar1 + 4) = local_58;
    *(ulonglong *)(puVar1 + 6) = uStack_50;
    local_68 = local_68 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_64,local_68);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_58 = 0;
  uStack_50 = 0xf;
  local_68 = local_68 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar7 = lVar7 + 1;
  } while (*(char *)(param_5 + lVar7) != '\0');
  FUN_1805a6cb0(&local_68,param_5);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_68);
    uVar5 = uStack_50;
  }
  else {
    puVar1 = (uint *)param_1[1];
    *puVar1 = local_68;
    puVar1[1] = uStack_64;
    puVar1[2] = uStack_60;
    puVar1[3] = uStack_5c;
    *(undefined8 *)(puVar1 + 4) = local_58;
    *(ulonglong *)(puVar1 + 6) = uStack_50;
    local_68 = local_68 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_64,local_68);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_58 = 0;
  uStack_50 = 0xf;
  local_68 = local_68 & 0xffffff00;
  do {
    lVar6 = lVar6 + 1;
  } while (*(char *)(param_6 + lVar6) != '\0');
  FUN_1805a6cb0(&local_68,param_6,lVar6);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_68);
    uVar5 = uStack_50;
  }
  else {
    puVar2 = (undefined8 *)param_1[1];
    *puVar2 = CONCAT44(uStack_64,local_68);
    puVar2[1] = CONCAT44(uStack_5c,uStack_60);
    puVar2[2] = local_58;
    puVar2[3] = uStack_50;
    local_68 = local_68 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (uVar5 < 0x10) {
  }
  pvVar3 = (void *)CONCAT44(uStack_64,local_68);
  pvVar4 = pvVar3;
  if ((0xfff < uVar5 + 1) &&
     (pvVar4 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar4);
}



############ FUN_ 18065a0c0 size=697 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065a0c0(undefined8 *param_1)

{
  void *pvVar1;
  longlong lVar2;
  undefined8 uVar3;
  void *pvVar4;
  longlong lVar5;
  undefined1 auStack_f8 [32];
  undefined1 *local_d8;
  undefined1 *local_d0;
  undefined8 local_c0;
  undefined8 *local_b8;
  undefined1 local_b0;
  undefined7 uStack_af;
  undefined8 local_a0;
  ulonglong local_98;
  undefined1 local_90;
  undefined7 uStack_8f;
  undefined8 local_80;
  ulonglong local_78;
  undefined1 local_70;
  undefined7 uStack_6f;
  undefined8 local_60;
  ulonglong local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  undefined1 local_30;
  undefined7 uStack_2f;
  undefined8 local_20;
  ulonglong local_18;
  ulonglong local_10;
  longlong lVar6;
  
  local_c0 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_f8;
  *param_1 = 0;
  param_1[1] = 0;
  local_b8 = param_1;
  uVar3 = FUN_18065d630();
  *param_1 = uVar3;
  *(undefined2 *)(param_1 + 2) = 0xffff;
  local_20 = 0;
  local_18 = 0xf;
  local_30 = 0;
  lVar6 = -1;
  do {
    lVar2 = lVar6 + 1;
    lVar6 = lVar6 + 1;
  } while ("maximum-date-time"[lVar2] != '\0');
  FUN_1805a6cb0(&local_30);
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  lVar6 = -1;
  do {
    lVar2 = lVar6 + 1;
    lVar6 = lVar6 + 1;
  } while ("minimum-date-time"[lVar2] != '\0');
  FUN_1805a6cb0(&local_50);
  local_60 = 0;
  local_58 = 0xf;
  local_70 = 0;
  lVar6 = -1;
  do {
    lVar2 = lVar6 + 1;
    lVar6 = lVar6 + 1;
  } while ("+infinity"[lVar2] != '\0');
  FUN_1805a6cb0(&local_70);
  local_80 = 0;
  local_78 = 0xf;
  local_90 = 0;
  lVar6 = -1;
  do {
    lVar2 = lVar6 + 1;
    lVar6 = lVar6 + 1;
  } while ("-infinity"[lVar2] != '\0');
  FUN_1805a6cb0(&local_90);
  local_a0 = 0;
  local_98 = 0xf;
  local_b0 = 0;
  lVar6 = -1;
  do {
    lVar5 = lVar6 + 1;
    lVar2 = lVar6 + 1;
    lVar6 = lVar5;
  } while ("not-a-date-time"[lVar2] != '\0');
  FUN_1805a6cb0(&local_b0,"not-a-date-time",lVar5);
  local_d0 = &local_30;
  local_d8 = &local_50;
  FUN_18066ac30(param_1,&local_b0,&local_90,&local_70);
  if (0xf < local_98) {
    pvVar1 = (void *)CONCAT71(uStack_af,local_b0);
    pvVar4 = pvVar1;
    if ((0xfff < local_98 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  if (0xf < local_78) {
    pvVar1 = (void *)CONCAT71(uStack_8f,local_90);
    pvVar4 = pvVar1;
    if ((0xfff < local_78 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  if (0xf < local_58) {
    pvVar1 = (void *)CONCAT71(uStack_6f,local_70);
    pvVar4 = pvVar1;
    if ((0xfff < local_58 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  if (0xf < local_38) {
    pvVar1 = (void *)CONCAT71(uStack_4f,local_50);
    pvVar4 = pvVar1;
    if ((0xfff < local_38 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  if (local_18 < 0x10) {
  }
  pvVar1 = (void *)CONCAT71(uStack_2f,local_30);
  pvVar4 = pvVar1;
  if ((0xfff < local_18 + 1) &&
     (pvVar4 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar4);
}



############ FUN_ 18065a3f0 size=403 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065a3f0(undefined8 *param_1,longlong *param_2,int param_3)

{
  void *pvVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  void *_Memory;
  ulonglong uVar5;
  undefined1 auStack_108 [32];
  undefined1 local_e8;
  undefined1 local_e0 [8];
  _Locimp *local_d8;
  longlong local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined8 *local_a0;
  longlong *local_98;
  undefined8 local_88;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_48;
  
  local_a8 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_108;
  *param_1 = 0;
  param_1[1] = 0;
  local_a0 = param_1;
  local_98 = param_2;
  uVar2 = FUN_18065d630();
  *param_1 = uVar2;
  uVar5 = 0;
  if (param_2[1] - *param_2 >> 5 != 0) {
    uStack_c0 = local_e0;
    uStack_b0 = local_e0;
    do {
      local_d8 = std::locale::_Init(true);
      puVar3 = (undefined8 *)(uVar5 * 0x20 + *param_2);
      puVar4 = puVar3;
      if (0xf < (ulonglong)puVar3[3]) {
        puVar4 = (undefined8 *)*puVar3;
      }
      local_c8 = (longlong)puVar4 + puVar3[2];
      if (0xf < (ulonglong)puVar3[3]) {
        puVar3 = (undefined8 *)*puVar3;
      }
      local_58 = 0;
      local_50 = 0xf;
      local_68 = 0;
      uStack_80 = (undefined4)uStack_c0;
      uStack_7c = uStack_c0._4_4_;
      local_b8._0_4_ = SUB84(puVar3,0);
      local_b8._4_4_ = (undefined4)((ulonglong)puVar3 >> 0x20);
      local_78 = (undefined4)local_b8;
      uStack_74 = local_b8._4_4_;
      uStack_70 = (undefined4)uStack_b0;
      uStack_6c = uStack_b0._4_4_;
      local_b8 = puVar3;
      local_88 = local_c8;
      FUN_18060d160(&local_68,&local_78,&local_88,local_e8);
      if (local_d8 != (_Locimp *)0x0) {
        puVar4 = (undefined8 *)(**(code **)(*(longlong *)local_d8 + 0x10))();
        if (puVar4 != (undefined8 *)0x0) {
          (**(code **)*puVar4)(puVar4,1);
        }
      }
      FUN_180662810(param_1,&local_68,(int)uVar5 + param_3);
      uVar5 = (ulonglong)(ushort)((short)uVar5 + 1);
      if (0xf < local_50) {
        pvVar1 = (void *)CONCAT71(uStack_67,local_68);
        _Memory = pvVar1;
        if ((0xfff < local_50 + 1) &&
           (_Memory = *(void **)((longlong)pvVar1 + -8),
           0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    } while (uVar5 != param_2[1] - *param_2 >> 5);
  }
  FUN_1805bc040(param_2);
}



############ FUN_ 18065e5a0 size=621 ############

void FUN_18065e5a0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8,
                  undefined8 param_9,undefined8 param_10)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 local_60;
  longlong lStack_58;
  longlong local_50;
  void *local_48 [3];
  undefined1 local_30 [24];
  
  local_60 = 0;
  lStack_58 = 0;
  local_50 = 0;
  FUN_18060d220(&local_60,0,param_2,param_4,0xfffffffffffffffe);
  lVar4 = local_50;
  lVar1 = lStack_58;
  if (local_50 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_3);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_3);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_4);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_4);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_5);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_5);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_6);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_6);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_7);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_7);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_8);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_8);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_9);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_9);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_10);
  }
  else {
    FUN_1805a4070(lStack_58,param_10);
    lStack_58 = lVar1 + 0x20;
  }
  uVar2 = FUN_18060c3d0(local_30,&local_60);
  puVar3 = (undefined8 *)FUN_18065a3f0(local_48,uVar2,0);
  if (param_1 != puVar3) {
    FUN_18065dcc0(param_1);
    uVar2 = *param_1;
    *param_1 = *puVar3;
    *puVar3 = uVar2;
    uVar2 = param_1[1];
    param_1[1] = puVar3[1];
    puVar3[1] = uVar2;
  }
  *(undefined2 *)(param_1 + 2) = *(undefined2 *)(puVar3 + 2);
  FUN_18065dcc0(local_48);
                    /* WARNING: Subroutine does not return */
  free(local_48[0]);
}



############ FUN_ 180662810 size=771 ############

void FUN_180662810(undefined8 param_1,undefined8 *param_2,undefined2 param_3)

{
  undefined8 uVar1;
  ulonglong uVar2;
  void *pvVar3;
  undefined8 *puVar4;
  ulonglong *puVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined1 local_res10;
  uint local_res20;
  void *local_170;
  undefined8 local_168;
  undefined2 local_160;
  void *local_158;
  undefined8 local_150;
  undefined2 local_148;
  undefined1 local_140 [8];
  void *local_138;
  undefined8 local_130;
  undefined2 local_128;
  undefined1 local_120 [8];
  void *local_118;
  undefined8 local_110;
  undefined2 local_108;
  undefined8 local_100;
  undefined8 local_f8;
  undefined2 local_f0;
  undefined8 local_e8;
  undefined8 local_e0;
  undefined2 local_d8;
  undefined1 local_d0 [8];
  void *local_c8 [3];
  undefined8 local_b0;
  undefined1 local_a8 [8];
  undefined1 local_a0 [24];
  undefined1 local_88 [16];
  undefined1 local_78 [16];
  undefined1 local_68 [16];
  undefined1 local_58 [24];
  
  local_b0 = 0xfffffffffffffffe;
  uVar6 = 0;
  local_res20 = 0;
  uVar2 = param_2[2];
  if (uVar2 != 0) {
    local_res10 = SUB81(param_2,0);
    uVar7 = uVar6;
    do {
      if ((int)uVar6 == 0) {
        if (uVar2 == 1) {
          local_170 = (void *)0x0;
          local_168 = 0;
          local_170 = (void *)FUN_18065d630(&local_170);
          if (0xf < (ulonglong)param_2[3]) {
            param_2 = (undefined8 *)*param_2;
          }
          local_140[0] = *(undefined1 *)param_2;
          local_138 = (void *)0x0;
          local_130 = 0;
          local_160 = param_3;
          pvVar3 = (void *)FUN_18065d630(&local_138);
          uVar1 = local_130;
          local_138 = local_170;
          local_130 = local_168;
          local_168 = uVar1;
          local_128 = local_160;
          local_170 = pvVar3;
          FUN_180653ce0(param_1,local_88,0,local_140,local_res10);
          FUN_18065dcc0(&local_138);
                    /* WARNING: Subroutine does not return */
          free(local_138);
        }
        local_158 = (void *)0x0;
        local_150 = 0;
        local_158 = (void *)FUN_18065d630(&local_158);
        local_148 = 0xffff;
        if (0xf < (ulonglong)param_2[3]) {
          param_2 = (undefined8 *)*param_2;
        }
        local_120[0] = *(undefined1 *)param_2;
        local_118 = (void *)0x0;
        local_110 = 0;
        pvVar3 = (void *)FUN_18065d630(&local_118);
        uVar1 = local_110;
        local_118 = local_158;
        local_110 = local_150;
        local_150 = uVar1;
        local_108 = local_148;
        local_158 = pvVar3;
        FUN_180653ce0(param_1,local_78,0,local_120,local_res10);
        FUN_18065dcc0(&local_118);
                    /* WARNING: Subroutine does not return */
        free(local_118);
      }
      if (uVar6 == uVar2 - 1) {
        local_100 = 0;
        local_f8 = 0;
        local_100 = FUN_18065d630(&local_100);
        if (0xf < (ulonglong)param_2[3]) {
          param_2 = (undefined8 *)*param_2;
        }
        local_d0[0] = *(undefined1 *)(uVar6 + (longlong)param_2);
        local_f0 = param_3;
        FUN_18065a3a0(local_c8,&local_100);
        FUN_180653ce0(uVar7 + 0x28,local_68,0,local_d0,local_res10);
        FUN_18065dcc0(local_c8);
                    /* WARNING: Subroutine does not return */
        free(local_c8[0]);
      }
      local_e8 = 0;
      local_e0 = 0;
      local_e8 = FUN_18065d630(&local_e8);
      local_d8 = 0xffff;
      puVar4 = param_2;
      if (0xf < (ulonglong)param_2[3]) {
        puVar4 = (undefined8 *)*param_2;
      }
      local_a8[0] = *(undefined1 *)(uVar6 + (longlong)puVar4);
      FUN_18065a3a0(local_a0,&local_e8);
      puVar5 = (ulonglong *)FUN_180653ce0(uVar7 + 0x28,local_58,0,local_a8,local_res10);
      uVar7 = *puVar5;
      FUN_18065b260(local_a0);
      FUN_18065b260(&local_e8);
      local_res20 = local_res20 + 1;
      uVar6 = (ulonglong)local_res20;
      uVar2 = param_2[2];
    } while (uVar6 < uVar2);
  }
  return;
}



############ FUN_ 18066ac30 size=397 ############

void FUN_18066ac30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,undefined8 param_6)

{
  longlong lVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 local_60;
  longlong lStack_58;
  longlong local_50;
  void *local_48 [3];
  undefined1 local_30 [24];
  
  local_60 = 0;
  lStack_58 = 0;
  local_50 = 0;
  FUN_18060d220(&local_60,0,param_2,param_4,0xfffffffffffffffe);
  lVar4 = local_50;
  lVar1 = lStack_58;
  if (local_50 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_3);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_3);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_4);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_4);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_5);
    lVar4 = local_50;
  }
  else {
    FUN_1805a4070(lStack_58,param_5);
    lStack_58 = lVar1 + 0x20;
  }
  lVar1 = lStack_58;
  if (lVar4 == lStack_58) {
    FUN_18060d220(&local_60,lStack_58,param_6);
  }
  else {
    FUN_1805a4070(lStack_58,param_6);
    lStack_58 = lVar1 + 0x20;
  }
  uVar2 = FUN_18060c3d0(local_30,&local_60);
  puVar3 = (undefined8 *)FUN_18065a3f0(local_48,uVar2,0);
  if (param_1 != puVar3) {
    FUN_18065dcc0(param_1);
    uVar2 = *param_1;
    *param_1 = *puVar3;
    *puVar3 = uVar2;
    uVar2 = param_1[1];
    param_1[1] = puVar3[1];
    puVar3[1] = uVar2;
  }
  *(undefined2 *)(param_1 + 2) = *(undefined2 *)(puVar3 + 2);
  FUN_18065dcc0(local_48);
                    /* WARNING: Subroutine does not return */
  free(local_48[0]);
}



############ FUN_ 18065a640 size=771 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065a640(undefined8 *param_1,undefined8 param_2)

{
  void *pvVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  char *pcVar6;
  longlong lVar7;
  longlong lVar8;
  undefined1 auStack_178 [32];
  undefined8 local_158;
  undefined8 local_150;
  undefined8 local_148;
  uint *puStack_140;
  uint *local_138;
  undefined8 *local_130;
  undefined4 local_128 [2];
  undefined1 local_120 [16];
  undefined8 local_110;
  undefined8 local_108;
  undefined1 local_100 [16];
  undefined8 local_f0;
  undefined8 local_e8;
  undefined1 local_e0 [16];
  undefined8 local_d0;
  undefined8 local_c8;
  undefined1 local_c0 [16];
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  undefined8 *local_98;
  undefined1 *local_90;
  undefined8 *local_88;
  undefined1 local_80 [24];
  uint local_68;
  uint uStack_64;
  uint uStack_60;
  uint uStack_5c;
  undefined8 local_58;
  ulonglong uStack_50;
  ulonglong local_48;
  
  local_a0 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_178;
  local_90 = local_80;
  local_88 = &local_148;
  local_130 = (undefined8 *)local_128;
  local_98 = param_1;
  uVar2 = FUN_180658d50(local_80);
  local_148 = 0;
  puStack_140 = (uint *)0x0;
  local_138 = (uint *)0x0;
  pcVar6 = "not-a-date-time";
  lVar7 = -1;
  while( true ) {
    local_58 = 0;
    uStack_50 = 0xf;
    local_68 = local_68 & 0xffffff00;
    lVar8 = lVar7;
    do {
      lVar8 = lVar8 + 1;
    } while (pcVar6[lVar8] != '\0');
    FUN_1805a6cb0(&local_68,pcVar6);
    if (local_138 == puStack_140) {
      FUN_1805cfbf0(&local_148,puStack_140,&local_68);
      uVar5 = uStack_50;
    }
    else {
      *puStack_140 = local_68;
      puStack_140[1] = uStack_64;
      puStack_140[2] = uStack_60;
      puStack_140[3] = uStack_5c;
      *(undefined8 *)(puStack_140 + 4) = local_58;
      *(ulonglong *)(puStack_140 + 6) = uStack_50;
      local_68 = local_68 & 0xffffff00;
      puStack_140 = puStack_140 + 8;
      uVar5 = 0xf;
    }
    if (0xf < uVar5) break;
    pcVar6 = pcVar6 + 0x11;
    if (pcVar6 == "") {
      local_128[0] = 1;
      local_110 = 0;
      local_108 = 0xf;
      local_120[0] = 0;
      lVar8 = lVar7;
      do {
        pcVar6 = &DAT_181bbad9d + lVar8;
        lVar8 = lVar8 + 1;
      } while (*pcVar6 != '\0');
      FUN_1805a6cb0(local_120);
      local_f0 = 0;
      local_e8 = 0xf;
      local_100[0] = 0;
      lVar8 = lVar7;
      do {
        pcVar6 = &DAT_181bbada1 + lVar8;
        lVar8 = lVar8 + 1;
      } while (*pcVar6 != '\0');
      FUN_1805a6cb0(local_100);
      local_d0 = 0;
      local_c8 = 0xf;
      local_e0[0] = 0;
      lVar8 = lVar7;
      do {
        pcVar6 = &DAT_181bbada5 + lVar8;
        lVar8 = lVar8 + 1;
      } while (*pcVar6 != '\0');
      FUN_1805a6cb0(local_e0);
      local_b0 = 0;
      local_a8 = 0xf;
      local_c0[0] = 0;
      lVar8 = lVar7;
      do {
        pcVar6 = &DAT_181bbada9 + lVar8;
        lVar8 = lVar8 + 1;
      } while (*pcVar6 != '\0');
      FUN_1805a6cb0(local_c0);
      local_158 = uVar2;
      local_150 = param_2;
      FUN_180658b50(param_1,PTR_s__Y__b__d__H__M__S_F__z_18260a898,local_128,&local_148);
      *param_1 = boost::date_time::
                 time_facet<boost::posix_time::ptime,char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>
                 ::vftable;
      local_58 = 0;
      uStack_50 = 0xf;
      local_68 = local_68 & 0xffffff00;
      lVar8 = lVar7;
      do {
        lVar8 = lVar8 + 1;
      } while (PTR_DAT_18260a880[lVar8] != '\0');
      FUN_1805a6cb0(&local_68);
      do {
        lVar7 = lVar7 + 1;
      } while (PTR_DAT_18260a8a0[lVar7] != '\0');
      local_130 = param_1 + 0x31;
      puVar3 = (undefined8 *)FUN_1805a6a80(&local_68,PTR_DAT_18260a8a0,lVar7);
      param_1[0x33] = 0;
      param_1[0x34] = 0;
      uVar2 = puVar3[1];
      param_1[0x31] = *puVar3;
      param_1[0x32] = uVar2;
      uVar2 = puVar3[3];
      param_1[0x33] = puVar3[2];
      param_1[0x34] = uVar2;
      puVar3[2] = 0;
      puVar3[3] = 0xf;
      *(undefined1 *)puVar3 = 0;
      if (uStack_50 < 0x10) {
      }
      pvVar1 = (void *)CONCAT44(uStack_64,local_68);
      pvVar4 = pvVar1;
      if ((0xfff < uStack_50 + 1) &&
         (pvVar4 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar4);
    }
  }
  pvVar1 = (void *)CONCAT44(uStack_64,local_68);
  pvVar4 = pvVar1;
  if ((0xfff < uVar5 + 1) &&
     (pvVar4 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar4);
}



############ FUN_ 180658d50 size=1634 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180658d50(undefined8 *param_1)

{
  char *pcVar1;
  uint *puVar2;
  void *pvVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  undefined8 *local_50;
  uint local_48;
  uint uStack_44;
  uint uStack_40;
  uint uStack_3c;
  undefined8 local_38;
  ulonglong uStack_30;
  ulonglong local_28;
  longlong lVar7;
  
  local_58 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  local_50 = param_1;
  FUN_18065dbd0(param_1,9);
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("first"[lVar6] != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("second"[lVar6] != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("third"[lVar6] != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("fourth"[lVar6] != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    pcVar1 = &DAT_181bbad75 + lVar7;
    lVar7 = lVar7 + 1;
  } while (*pcVar1 != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    pcVar1 = &DAT_181bbad7d + lVar7;
    lVar7 = lVar7 + 1;
  } while (*pcVar1 != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("before"[lVar6] != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    lVar7 = lVar7 + 1;
  } while ("after"[lVar6] != '\0');
  FUN_1805a6cb0(&local_48);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    pvVar3 = (void *)CONCAT44(uStack_44,local_48);
    pvVar4 = pvVar3;
    if ((0xfff < uVar5 + 1) &&
       (pvVar4 = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar4);
  }
  local_38 = 0;
  uStack_30 = 0xf;
  local_48 = local_48 & 0xffffff00;
  lVar7 = -1;
  do {
    lVar6 = lVar7 + 1;
    pcVar1 = &DAT_181bbad99 + lVar7;
    lVar7 = lVar6;
  } while (*pcVar1 != '\0');
  FUN_1805a6cb0(&local_48,&DAT_181bbad98,lVar6);
  if (param_1[2] == param_1[1]) {
    FUN_1805cfbf0(param_1,param_1[1],&local_48);
    uVar5 = uStack_30;
  }
  else {
    puVar2 = (uint *)param_1[1];
    *puVar2 = local_48;
    puVar2[1] = uStack_44;
    puVar2[2] = uStack_40;
    puVar2[3] = uStack_3c;
    *(undefined8 *)(puVar2 + 4) = local_38;
    *(ulonglong *)(puVar2 + 6) = uStack_30;
    local_48 = local_48 & 0xffffff00;
    param_1[1] = param_1[1] + 0x20;
    uVar5 = 0xf;
  }
  if (0xf < uVar5) {
    FUN_1805a7bf0(&local_48,CONCAT44(uStack_44,local_48),uVar5 + 1);
  }
}



############ FUN_ 18065dbd0 size=194 ############

void FUN_18065dbd0(longlong *param_1,longlong param_2)

{
  longlong lVar1;
  longlong lVar2;
  void *pvVar3;
  longlong lVar4;
  void *_Memory;
  undefined8 uVar5;
  
  uVar5 = 0xfffffffffffffffe;
  lVar1 = param_1[1];
  lVar2 = *param_1;
  lVar4 = FUN_18060cc00();
  FUN_1805cffb0(*param_1,param_1[1],lVar4,param_1,uVar5);
  if (*param_1 == 0) {
    *param_1 = lVar4;
    param_1[1] = (lVar1 - lVar2 & 0xffffffffffffffe0U) + lVar4;
    param_1[2] = param_2 * 0x20 + lVar4;
    return;
  }
  FUN_18048c550(*param_1,param_1[1],param_1);
  pvVar3 = (void *)*param_1;
  _Memory = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180667f20 size=4375 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */

void FUN_180667f20(longlong *param_1,undefined8 param_2,undefined8 *param_3,ios_base *param_4,
                  undefined1 param_5,longlong *param_6)

{
  undefined1 *puVar1;
  int iVar2;
  undefined8 uVar3;
  void *pvVar4;
  bool bVar5;
  char *pcVar6;
  char *pcVar7;
  longlong *******ppppppplVar8;
  ulonglong uVar9;
  undefined1 uVar10;
  int *piVar11;
  longlong lVar12;
  undefined8 uVar13;
  undefined8 *******pppppppuVar14;
  longlong *plVar15;
  undefined8 *puVar16;
  longlong *******ppppppplVar17;
  void *pvVar18;
  longlong *******ppppppplVar19;
  undefined1 *puVar20;
  undefined8 *******_Memory;
  undefined *puVar21;
  undefined4 uVar22;
  char *pcVar23;
  longlong lVar24;
  char *pcVar25;
  longlong lVar26;
  bool bVar27;
  undefined1 auStack_2d8 [32];
  longlong *******local_2b8;
  undefined8 *local_2b0;
  undefined8 local_2a8;
  longlong *******local_298;
  longlong *******ppppppplStack_290;
  undefined8 *******local_288;
  longlong *******ppppppplStack_280;
  undefined1 local_278 [16];
  longlong *******local_268;
  longlong *******ppppppplStack_260;
  undefined8 *local_258;
  undefined4 uStack_250;
  undefined4 uStack_24c;
  undefined8 local_248;
  undefined1 local_238 [8];
  undefined1 local_230 [232];
  undefined1 local_148 [40];
  longlong ******local_120 [2];
  ulonglong local_110;
  ulonglong local_108;
  longlong *******local_100 [2];
  longlong local_f0;
  ulonglong local_e8;
  undefined8 *******local_e0;
  undefined8 ******ppppppuStack_d8;
  longlong *******local_d0;
  undefined8 ******ppppppuStack_c8;
  undefined8 local_c0;
  undefined8 uStack_b8;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined4 local_a0;
  int local_98;
  int iStack_94;
  undefined8 uStack_90;
  undefined8 local_88;
  ulonglong local_80;
  ulonglong local_68;
  
  local_248 = 0xfffffffffffffffe;
  local_68 = DAT_182615970 ^ (ulonglong)auStack_2d8;
  lVar12 = *param_6;
  uVar22 = 0;
  if (lVar12 != 0x7ffffffffffffffe) {
    bVar27 = false;
    if ((lVar12 == 0x7fffffffffffffff) || (bVar5 = bVar27, lVar12 == -0x8000000000000000)) {
      bVar5 = true;
    }
    if (!bVar5) goto LAB_180667fb5;
  }
  bVar27 = true;
LAB_180667fb5:
  if (bVar27) {
    local_258 = (undefined8 *)*param_3;
    uStack_250 = *(undefined4 *)(param_3 + 1);
    uStack_24c = *(undefined4 *)((longlong)param_3 + 0xc);
    piVar11 = (int *)FUN_1806227d0(param_6,local_278);
    iVar2 = *piVar11;
    if (iVar2 != -2) {
      if (iVar2 == 0) {
        uVar22 = 1;
      }
      else {
        uVar22 = 5;
        if (iVar2 == -1) {
          uVar22 = 2;
        }
      }
    }
    local_2b0 = (undefined8 *)CONCAT44(local_2b0._4_4_,uVar22);
    local_2b8 = (longlong *******)CONCAT71(local_2b8._1_7_,param_5);
    (**(code **)(*param_1 + 0x28))(param_1,param_2,&local_258,param_4);
  }
  else {
    local_258 = param_3;
    FUN_1805a4070(local_100,param_1 + 2);
    pcVar7 = (char *)CONCAT44(uStack_90._4_4_,(int)uStack_90);
    pcVar6 = (char *)CONCAT44(uStack_90._4_4_,(int)uStack_90);
    pcVar23 = (char *)CONCAT44(uStack_90._4_4_,(int)uStack_90);
    pcVar25 = (char *)CONCAT44(uStack_90._4_4_,(int)uStack_90);
    lVar12 = -1;
    do {
      lVar24 = lVar12;
      lVar12 = lVar24 + 1;
    } while ("H:%M:%S"[lVar24] != '\0');
    lVar12 = -1;
    do {
      lVar26 = lVar12;
      lVar12 = lVar26 + 1;
    } while ((&DAT_181bbaf81)[lVar26] != '\0');
    uStack_90 = &DAT_181bbaf81 + lVar26;
    local_c0 = &DAT_181bbaf80;
    uStack_b8 = uStack_90;
    ppppppplVar17 = (longlong *******)local_100;
    if (0xf < local_e8) {
      ppppppplVar17 = local_100[0];
    }
    ppppppplVar17 = (longlong *******)((longlong)ppppppplVar17 + local_f0);
    local_298 = (longlong *******)local_100;
    if (0xf < local_e8) {
      local_298 = local_100[0];
    }
    if (local_298 != ppppppplVar17) {
      while (pcVar25 = pcVar23, uStack_90 != "%T") {
        pcVar25 = "%T";
        for (ppppppplStack_290 = local_298; ppppppplStack_290 != ppppppplVar17;
            ppppppplStack_290 = (longlong *******)((longlong)ppppppplStack_290 + 1)) {
          if (pcVar25 == uStack_90) goto LAB_1806680fa;
          if (*(char *)ppppppplStack_290 != *pcVar25) break;
          pcVar25 = pcVar25 + 1;
        }
        if (pcVar25 == uStack_90) {
LAB_1806680fa:
          pcVar25 = pcVar7;
          if (local_298 != ppppppplStack_290) {
            local_268 = (longlong *******)&DAT_181bbaf88;
            local_288 = (undefined8 *******)&DAT_181bbaf88;
            local_98 = -0x7e445080;
            iStack_94 = 1;
            local_88 = local_b0;
            local_2b8 = (longlong *******)&local_268;
            ppppppplStack_280 = (longlong *******)("H:%M:%S" + lVar24);
            ppppppplStack_260 = (longlong *******)("H:%M:%S" + lVar24);
            FUN_180654b30(local_100,&local_98,&local_288,&local_298);
            pcVar25 = uStack_90;
          }
          break;
        }
        local_298 = (longlong *******)((longlong)local_298 + 1);
        pcVar25 = pcVar6;
        if (local_298 == ppppppplVar17) break;
      }
    }
    lVar12 = -1;
    do {
      lVar24 = lVar12;
      lVar12 = lVar24 + 1;
    } while ((&DAT_181bbaf99)[lVar24] != '\0');
    ppppppplStack_290 = (longlong *******)(&DAT_181bbaf99 + lVar24);
    lVar12 = -1;
    do {
      lVar24 = lVar12;
      lVar12 = lVar24 + 1;
    } while ((&DAT_181bbaf95)[lVar24] != '\0');
    uStack_90 = &DAT_181bbaf95 + lVar24;
    local_298 = (longlong *******)&DAT_181bbaf98;
    local_c0 = &DAT_181bbaf94;
    uStack_b8 = uStack_90;
    ppppppplVar17 = (longlong *******)local_100;
    if (0xf < local_e8) {
      ppppppplVar17 = local_100[0];
    }
    ppppppplVar17 = (longlong *******)((longlong)ppppppplVar17 + local_f0);
    ppppppplVar19 = (longlong *******)local_100;
    if (0xf < local_e8) {
      ppppppplVar19 = local_100[0];
    }
    if (ppppppplVar19 != ppppppplVar17) {
      while (pcVar23 = "%R", ppppppplVar8 = ppppppplVar19, uStack_90 != "%R") {
        for (; ppppppplVar8 != ppppppplVar17;
            ppppppplVar8 = (longlong *******)((longlong)ppppppplVar8 + 1)) {
          if (pcVar23 == uStack_90) goto LAB_180668240;
          if (*(char *)ppppppplVar8 != *pcVar23) break;
          pcVar23 = pcVar23 + 1;
        }
        if (pcVar23 == uStack_90) {
LAB_180668240:
          if (ppppppplVar19 != ppppppplVar8) {
            local_288 = (undefined8 *******)&DAT_181bbaf98;
            local_298 = (longlong *******)&DAT_181bbaf98;
            local_98 = -0x7e44506c;
            iStack_94 = 1;
            local_88 = local_b0;
            local_2b8 = (longlong *******)&local_288;
            ppppppplStack_280 = ppppppplStack_290;
            local_268 = ppppppplVar19;
            ppppppplStack_260 = ppppppplVar8;
            FUN_180654b30(local_100,&local_98,&local_298,&local_268);
            pcVar25 = uStack_90;
          }
          break;
        }
        ppppppplVar19 = (longlong *******)((longlong)ppppppplVar19 + 1);
        if (ppppppplVar19 == ppppppplVar17) break;
      }
    }
    local_d0 = (longlong *******)0x0;
    ppppppuStack_c8 = (undefined8 ******)0xf;
    local_e0 = (undefined8 *******)((ulonglong)local_e0 & 0xffffffffffffff00);
    uStack_90 = pcVar25;
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a848,0);
    if (lVar12 != -1) {
      uVar13 = FUN_180622ad0(param_6,&local_298);
      pppppppuVar14 = (undefined8 *******)FUN_18065e9c0(&local_98,uVar13,0);
      if (&local_e0 != (undefined8 ********)pppppppuVar14) {
        FUN_180485450(&local_e0);
        local_e0 = (undefined8 *******)*pppppppuVar14;
        ppppppuStack_d8 = pppppppuVar14[1];
        local_d0 = (longlong *******)pppppppuVar14[2];
        ppppppuStack_c8 = pppppppuVar14[3];
        pppppppuVar14[2] = (undefined8 ******)0x0;
        pppppppuVar14[3] = (undefined8 ******)0xf;
        *(undefined1 *)pppppppuVar14 = 0;
      }
      if (0xf < local_80) {
        pvVar4 = (void *)CONCAT44(iStack_94,local_98);
        pvVar18 = pvVar4;
        if ((0xfff < local_80 + 1) &&
           (pvVar18 = *(void **)((longlong)pvVar4 + -8),
           0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar18);
      }
      uVar13 = std::ios_base::getloc(param_4);
      plVar15 = (longlong *)FUN_1805f1950(uVar13);
      uVar10 = (**(code **)(*plVar15 + 0x18))(plVar15);
      if (ppppppplStack_280 != (longlong *******)0x0) {
        puVar16 = (undefined8 *)(*(code *)(*ppppppplStack_280)[2])();
        if (puVar16 != (undefined8 *)0x0) {
          (**(code **)*puVar16)(puVar16,1);
        }
      }
      local_110 = 0;
      local_108 = 0xf;
      local_120[0]._0_1_ = 0;
      lVar12 = -1;
      do {
        lVar12 = lVar12 + 1;
      } while (PTR_DAT_18260a850[lVar12] != '\0');
      FUN_1805a6cb0(local_120);
      uVar9 = local_110;
      if (local_110 < local_108) {
        puVar20 = (undefined1 *)local_120;
        if (0xf < local_108) {
          puVar20 = (undefined1 *)CONCAT71(local_120[0]._1_7_,local_120[0]._0_1_);
        }
        puVar1 = puVar20 + local_110;
        local_110 = local_110 + 1;
        *puVar1 = uVar10;
        puVar20[uVar9 + 1] = 0;
      }
      else {
        FUN_18060b550(local_120,1,0,uVar10);
      }
      ppppppplVar17 = local_d0;
      pppppppuVar14 = &local_e0;
      if ((undefined8 ******)0xf < ppppppuStack_c8) {
        pppppppuVar14 = local_e0;
      }
      if ((longlong *******)(local_108 - local_110) < local_d0) {
        local_2b8 = local_d0;
        FUN_1805a1320(local_120,local_d0,0);
        pcVar25 = uStack_90;
      }
      else {
        puVar20 = (undefined1 *)local_120;
        if (0xf < local_108) {
          puVar20 = (undefined1 *)CONCAT71(local_120[0]._1_7_,local_120[0]._0_1_);
        }
        puVar20 = puVar20 + local_110;
        local_110 = local_110 + (longlong)local_d0;
        memmove(puVar20,pppppppuVar14,(size_t)local_d0);
        *(undefined1 *)((longlong)ppppppplVar17 + (longlong)puVar20) = 0;
        pcVar25 = uStack_90;
      }
      pppppppuVar14 = (undefined8 *******)CONCAT71(local_120[0]._1_7_,local_120[0]._0_1_);
      local_298 = local_120;
      if (0xf < local_108) {
        local_298 = pppppppuVar14;
      }
      ppppppplStack_290 = (longlong *******)(local_110 + (longlong)local_298);
      lVar12 = -1;
      do {
        lVar12 = lVar12 + 1;
      } while (PTR_DAT_18260a848[lVar12] != '\0');
      uStack_90 = PTR_DAT_18260a848 + lVar12;
      local_c0 = PTR_DAT_18260a848;
      puVar20 = local_c0;
      uStack_b8 = uStack_90;
      ppppppplVar17 = (longlong *******)local_100;
      if (0xf < local_e8) {
        ppppppplVar17 = local_100[0];
      }
      ppppppplVar17 = (longlong *******)((longlong)ppppppplVar17 + local_f0);
      ppppppplVar19 = (longlong *******)local_100;
      if (0xf < local_e8) {
        ppppppplVar19 = local_100[0];
      }
      if (ppppppplVar19 != ppppppplVar17) {
        while (ppppppplVar8 = ppppppplVar19, pcVar23 = PTR_DAT_18260a848,
              PTR_DAT_18260a848 != uStack_90) {
          for (; ppppppplVar8 != ppppppplVar17;
              ppppppplVar8 = (longlong *******)((longlong)ppppppplVar8 + 1)) {
            if (pcVar23 == uStack_90) goto LAB_1806685dc;
            if (*(char *)ppppppplVar8 != *pcVar23) break;
            pcVar23 = pcVar23 + 1;
          }
          if (pcVar23 == uStack_90) {
LAB_1806685dc:
            if (ppppppplVar19 != ppppppplVar8) {
              local_c0._0_4_ = (int)PTR_DAT_18260a848;
              local_c0._4_4_ = (undefined4)((ulonglong)PTR_DAT_18260a848 >> 0x20);
              local_98 = (int)local_c0;
              iStack_94 = local_c0._4_4_;
              local_88 = local_b0;
              local_2b8 = (longlong *******)&local_288;
              local_288 = local_298;
              ppppppplStack_280 = ppppppplStack_290;
              local_268 = ppppppplVar19;
              ppppppplStack_260 = ppppppplVar8;
              local_c0 = puVar20;
              FUN_180654b30(local_100,&local_98,&local_298,&local_268);
              pppppppuVar14 = (undefined8 *******)CONCAT71(local_120[0]._1_7_,local_120[0]._0_1_);
              pcVar25 = uStack_90;
            }
            break;
          }
          ppppppplVar19 = (longlong *******)((longlong)ppppppplVar19 + 1);
          if (ppppppplVar19 == ppppppplVar17) break;
        }
      }
      uStack_90 = pcVar25;
      if (0xf < local_108) {
        _Memory = pppppppuVar14;
        if ((0xfff < local_108 + 1) &&
           (_Memory = (undefined8 *******)pppppppuVar14[-1],
           (undefined1 *)0x1f < (undefined1 *)((longlong)pppppppuVar14 + (-8 - (longlong)_Memory))))
        {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a878,0);
    if (lVar12 != -1) {
      local_110 = 0;
      local_108 = 0xf;
      local_120[0]._0_1_ = 0;
      FUN_1805a6cb0(local_120,&DAT_181baf991,0);
      if (0xf < local_108) {
        pvVar4 = (void *)CONCAT71(local_120[0]._1_7_,local_120[0]._0_1_);
        pvVar18 = pvVar4;
        if ((0xfff < local_108 + 1) &&
           (pvVar18 = *(void **)((longlong)pvVar4 + -8),
           0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar18)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar18);
      }
      if (local_110 == 0) {
        FUN_180654690(local_100,&PTR_DAT_18260a878);
      }
      else {
        local_110 = 0;
        local_108 = 0xf;
        local_120[0]._0_1_ = 0;
        local_298 = local_120;
        ppppppplStack_290 = local_120;
        lVar12 = -1;
        do {
          lVar12 = lVar12 + 1;
        } while (PTR_DAT_18260a878[lVar12] != '\0');
        uStack_b8 = PTR_DAT_18260a878 + lVar12;
        local_c0 = PTR_DAT_18260a878;
        puVar20 = local_c0;
        local_c0._0_4_ = (int)PTR_DAT_18260a878;
        local_c0._4_4_ = (undefined4)((ulonglong)PTR_DAT_18260a878 >> 0x20);
        local_98 = (int)local_c0;
        iStack_94 = local_c0._4_4_;
        local_88 = local_b0;
        local_288 = local_298;
        ppppppplStack_280 = ppppppplStack_290;
        local_c0 = puVar20;
        uStack_90 = uStack_b8;
        FUN_180654a20(local_100,&local_98,&local_288);
        FUN_180485450(local_120);
      }
    }
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a860,0);
    if (lVar12 != -1) {
      local_110 = 0;
      local_108 = 0xf;
      local_120[0]._0_1_ = 0;
      FUN_1805a6cb0(local_120,&DAT_181baf991,0);
      bVar27 = local_110 == 0;
      FUN_180485450(local_120);
      if (bVar27) {
        FUN_18060c1b0(local_238,2,1);
        uVar13 = FUN_1805a0c30(local_238,0x20);
        FUN_1805a0df0(uVar13,PTR_DAT_18260a860);
        FUN_18063ba80(local_230,local_120);
        FUN_1806547a0(local_100,local_120);
        FUN_180485450(local_120);
        FUN_1805d0400(local_238);
      }
      else {
        local_110 = 0;
        local_108 = 0xf;
        local_120[0]._0_1_ = 0;
        FUN_1805a6cb0(local_120,&DAT_181baf991,0);
        FUN_180657be0(local_100,&PTR_DAT_18260a860,local_120);
        FUN_180485450(local_120);
      }
    }
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a858,0);
    if (lVar12 != -1) {
      local_110 = 0;
      local_108 = 0xf;
      local_120[0]._0_1_ = 0;
      FUN_1805a6cb0(local_120,&DAT_181baf991,0);
      bVar27 = local_110 == 0;
      FUN_180485450(local_120);
      if (bVar27) {
        FUN_18060c1b0(local_238,2,1);
        uVar13 = FUN_1805a0c30(local_238,0x20);
        FUN_1805a0df0(uVar13,PTR_DAT_18260a858);
        FUN_18063ba80(local_230,local_120);
        FUN_1806547a0(local_100,local_120);
        FUN_180485450(local_120);
        FUN_1805d0400(local_238);
      }
      else {
        local_110 = 0;
        local_108 = 0xf;
        local_120[0]._0_1_ = 0;
        FUN_1805a6cb0(local_120,&DAT_181baf991,0);
        FUN_180657be0(local_100,&PTR_DAT_18260a858,local_120);
        FUN_180485450(local_120);
      }
    }
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a870,0);
    if (lVar12 != -1) {
      local_110 = 0;
      local_108 = 0xf;
      local_120[0]._0_1_ = 0;
      FUN_1805a6cb0(local_120,&DAT_181baf991,0);
      bVar27 = local_110 == 0;
      FUN_180485450(local_120);
      if (bVar27) {
        FUN_180654690(local_100,&PTR_DAT_18260a870);
      }
      else {
        local_110 = 0;
        local_108 = 0xf;
        local_120[0]._0_1_ = 0;
        FUN_1805a6cb0(local_120,&DAT_181baf991,0);
        FUN_180657be0(local_100,&PTR_DAT_18260a870,local_120);
        FUN_180485450(local_120);
      }
    }
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a868,0);
    if (lVar12 != -1) {
      local_110 = 0;
      local_108 = 0xf;
      local_120[0]._0_1_ = 0;
      FUN_1805a6cb0(local_120,&DAT_181baf991,0);
      bVar27 = local_110 == 0;
      FUN_180485450(local_120);
      if (bVar27) {
        FUN_180654690(local_100,&PTR_DAT_18260a868);
      }
      else {
        local_110 = 0;
        local_108 = 0xf;
        local_120[0]._0_1_ = 0;
        FUN_1805a6cb0(local_120,&DAT_181baf991,0);
        FUN_180657be0(local_100,&PTR_DAT_18260a868,local_120);
        FUN_180485450(local_120);
      }
    }
    puVar21 = PTR_DAT_18260a838;
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a838,0);
    if (lVar12 != -1) {
      if (local_d0 == (longlong *******)0x0) {
        uVar13 = FUN_180622ad0(param_6,&local_298);
        pppppppuVar14 = (undefined8 *******)FUN_18065e9c0(local_120,uVar13,0);
        if (&local_e0 != (undefined8 ********)pppppppuVar14) {
          FUN_180485450(&local_e0);
          local_e0 = (undefined8 *******)*pppppppuVar14;
          ppppppuStack_d8 = pppppppuVar14[1];
          local_d0 = (longlong *******)pppppppuVar14[2];
          ppppppuStack_c8 = pppppppuVar14[3];
          pppppppuVar14[2] = (undefined8 ******)0x0;
          pppppppuVar14[3] = (undefined8 ******)0xf;
          *(undefined1 *)pppppppuVar14 = 0;
        }
        FUN_180485450(local_120);
        puVar21 = PTR_DAT_18260a838;
      }
      local_298 = (longlong *******)&local_e0;
      if ((undefined8 ******)0xf < ppppppuStack_c8) {
        local_298 = local_e0;
      }
      ppppppplStack_290 = (longlong *******)((longlong)local_d0 + (longlong)local_298);
      lVar12 = -1;
      do {
        lVar12 = lVar12 + 1;
      } while (puVar21[lVar12] != '\0');
      uStack_b8 = puVar21 + lVar12;
      local_c0._0_4_ = (int)puVar21;
      local_c0._4_4_ = (undefined4)((ulonglong)puVar21 >> 0x20);
      local_98 = (int)local_c0;
      iStack_94 = local_c0._4_4_;
      local_88 = local_b0;
      local_288 = local_298;
      ppppppplStack_280 = ppppppplStack_290;
      local_c0 = puVar21;
      uStack_90 = uStack_b8;
      FUN_180654a20(local_100,&local_98,&local_288);
    }
    lVar12 = FUN_1805bda50(local_100,PTR_DAT_18260a840,0);
    if (lVar12 != -1) {
      uVar13 = FUN_180622ad0(param_6,&local_298);
      pppppppuVar14 = (undefined8 *******)FUN_18065e9c0(local_120,uVar13,1);
      if (&local_e0 != (undefined8 ********)pppppppuVar14) {
        FUN_180485450(&local_e0);
        local_e0 = (undefined8 *******)*pppppppuVar14;
        ppppppuStack_d8 = pppppppuVar14[1];
        local_d0 = (longlong *******)pppppppuVar14[2];
        ppppppuStack_c8 = pppppppuVar14[3];
        pppppppuVar14[2] = (undefined8 ******)0x0;
        pppppppuVar14[3] = (undefined8 ******)0xf;
        *(undefined1 *)pppppppuVar14 = 0;
      }
      FUN_180485450(local_120);
      if (local_d0 == (longlong *******)0x0) {
        FUN_180654690(local_100,&PTR_DAT_18260a840);
      }
      else {
        uVar13 = std::ios_base::getloc(param_4);
        plVar15 = (longlong *)FUN_1805f1950(uVar13);
        uVar10 = (**(code **)(*plVar15 + 0x18))(plVar15);
        if (ppppppplStack_280 != (longlong *******)0x0) {
          puVar16 = (undefined8 *)(*(code *)(*ppppppplStack_280)[2])();
          if (puVar16 != (undefined8 *)0x0) {
            (**(code **)*puVar16)(puVar16,1);
          }
        }
        local_110 = 0;
        local_108 = 0xf;
        local_120[0]._0_1_ = 0;
        FUN_18062b560(local_120,uVar10);
        pppppppuVar14 = &local_e0;
        if ((undefined8 ******)0xf < ppppppuStack_c8) {
          pppppppuVar14 = local_e0;
        }
        FUN_1805a6a80(local_120,pppppppuVar14,local_d0);
        FUN_180657be0(local_100,&PTR_DAT_18260a840,local_120);
        FUN_180485450(local_120);
      }
    }
    uVar13 = FUN_1806227d0(param_6,local_278);
    piVar11 = (int *)FUN_18066ae30(local_148,uVar13);
    local_98 = *piVar11;
    iStack_94 = piVar11[1];
    uStack_90._0_4_ = piVar11[2];
    uStack_90._4_4_ = piVar11[3];
    uVar13 = *(undefined8 *)(piVar11 + 4);
    uVar3 = *(undefined8 *)(piVar11 + 6);
    FUN_180622ad0(param_6,&local_298);
    puVar20 = (undefined1 *)
              (SUB168(SEXT816(-0x674a40d3fc1ad63b) * SEXT816((longlong)local_298),8) +
              (longlong)local_298);
    uStack_90._0_4_ = (int)((longlong)puVar20 >> 0x1f) - (int)((longlong)puVar20 >> 0x3f);
    puVar20 = (undefined1 *)
              ((longlong)local_298 +
              SUB168(SEXT816(-0x70d59cc6bc5928d7) * SEXT816((longlong)local_298),8));
    lVar24 = ((longlong)puVar20 >> 0x19) - ((longlong)puVar20 >> 0x3f);
    lVar12 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar24),8) + lVar24;
    iStack_94 = (int)lVar24 + ((int)(lVar12 >> 5) - (int)(lVar12 >> 0x3f)) * -0x3c;
    lVar12 = (longlong)local_298 / 1000000;
    lVar24 = SUB168(SEXT816(-0x7777777777777777) * SEXT816(lVar12),8) + lVar12;
    local_98 = (int)lVar12 + ((int)(lVar24 >> 5) - (int)(lVar24 >> 0x3f)) * -0x3c;
    local_c0 = (undefined1 *)CONCAT44(iStack_94,local_98);
    uStack_b8 = (char *)CONCAT44(uStack_90._4_4_,(int)uStack_90);
    local_a0 = 0xffffffff;
    local_b0 = uVar13;
    uStack_a8 = uVar3;
    local_2a8 = FUN_1805a4070(local_120,local_100);
    local_288 = (undefined8 *******)*local_258;
    ppppppplStack_280 = (longlong *******)local_258[1];
    local_2b0 = &local_c0;
    local_2b8 = (longlong *******)CONCAT71(local_2b8._1_7_,param_5);
    (**(code **)(*param_1 + 0x30))(param_1,param_2,&local_288,param_4);
    FUN_180485450(&local_e0);
    FUN_180485450(local_100);
  }
}



############ FUN_ 180656c80 size=403 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180656c80(undefined8 *param_1,longlong *param_2,longlong param_3,longlong *param_4,
                  longlong *param_5)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  void *_Memory;
  undefined1 *puVar6;
  undefined1 auStack_b8 [32];
  undefined8 local_98;
  undefined1 local_88;
  undefined8 local_78;
  longlong lStack_70;
  undefined8 local_68;
  longlong lStack_60;
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_b8;
  puVar3 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    puVar3 = (undefined8 *)*param_1;
  }
  puVar5 = (undefined8 *)0x0;
  if (((longlong *)*param_5 != (longlong *)0x0) &&
     (puVar4 = *(undefined8 **)*param_5, puVar4 != (undefined8 *)0x0)) {
    puVar5 = (undefined8 *)*puVar4;
  }
  lStack_70 = param_5[2];
  puVar4 = (undefined8 *)0x0;
  if (((longlong *)*param_4 != (longlong *)0x0) &&
     (puVar1 = *(undefined8 **)*param_4, puVar1 != (undefined8 *)0x0)) {
    puVar4 = (undefined8 *)*puVar1;
  }
  lStack_60 = param_4[2];
  local_68 = 0;
  if (puVar4 != (undefined8 *)0x0) {
    local_68 = *puVar4;
  }
  if (puVar5 == (undefined8 *)0x0) {
    local_78 = 0;
  }
  else {
    local_78 = *puVar5;
  }
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  if (0xf < (ulonglong)(lStack_70 - lStack_60)) {
    FUN_1805a14a0(&local_40,lStack_70 - lStack_60,0);
  }
  local_30 = 0;
  FUN_180653960(&local_40,&local_68,&local_78,local_88);
  puVar5 = param_1;
  if (0xf < (ulonglong)param_1[3]) {
    puVar5 = (undefined8 *)*param_1;
  }
  puVar6 = &local_40;
  if (0xf < local_28) {
    puVar6 = (undefined1 *)CONCAT71(uStack_3f,local_40);
  }
  local_98 = local_30;
  FUN_1805a9f40(param_1,param_3 - (longlong)puVar5,0,puVar6);
  if (local_28 < 0x10) {
    if (0xf < (ulonglong)param_1[3]) {
      param_1 = (undefined8 *)*param_1;
    }
    *param_2 = (longlong)param_1 + (param_3 - (longlong)puVar3);
  }
  pvVar2 = (void *)CONCAT71(uStack_3f,local_40);
  _Memory = pvVar2;
  if ((0xfff < local_28 + 1) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18065ae20 size=234 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065ae20(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined8 *local_48;
  undefined1 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  local_48 = param_1;
  FUN_1805a6cb0(&local_38,"Day of year value is out of range 1..366",0x28);
  local_40 = 1;
  *param_1 = std::exception::vftable;
  local_48 = (undefined8 *)&local_38;
  if (0xf < local_20) {
    local_48 = (undefined8 *)CONCAT71(uStack_37,local_38);
  }
  param_1[1] = 0;
  param_1[2] = 0;
  __std_exception_copy(&local_48);
  *param_1 = std::out_of_range::vftable;
  if (local_20 < 0x10) {
    *param_1 = boost::gregorian::bad_day_of_year::vftable;
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18065af60 size=234 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065af60(undefined8 *param_1)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined8 *local_48;
  undefined1 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  local_48 = param_1;
  FUN_1805a6cb0(&local_38,"Weekday is out of range 0..6",0x1c);
  local_40 = 1;
  *param_1 = std::exception::vftable;
  local_48 = (undefined8 *)&local_38;
  if (0xf < local_20) {
    local_48 = (undefined8 *)CONCAT71(uStack_37,local_38);
  }
  param_1[1] = 0;
  param_1[2] = 0;
  __std_exception_copy(&local_48);
  *param_1 = std::out_of_range::vftable;
  if (local_20 < 0x10) {
    *param_1 = boost::gregorian::bad_weekday::vftable;
  }
  pvVar1 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar1;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180653fa0 size=468 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180653fa0(longlong param_1,undefined8 *param_2,undefined8 *param_3,undefined8 param_4,
                  undefined8 *param_5,char param_6)

{
  char *pcVar1;
  void *pvVar2;
  ulonglong uVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined8 *puVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  void *_Memory;
  undefined1 auStack_148 [32];
  undefined4 *local_128;
  undefined4 local_118 [4];
  undefined8 local_108;
  undefined1 local_100 [40];
  undefined1 local_d8;
  undefined7 uStack_d7;
  ulonglong local_c8;
  ulonglong local_c0;
  undefined4 local_b8;
  undefined1 local_b0 [32];
  undefined1 local_90 [32];
  undefined1 local_70 [32];
  ulonglong local_50;
  
  local_108 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_148;
  local_c8 = 0;
  local_c0 = 0xf;
  local_d8 = 0;
  local_b8 = 0xffff0000;
  if ((param_6 - 0x2bU & 0xfd) == 0) {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    uVar3 = local_c8;
    if (*(char *)((longlong)param_3 + 9) != param_6) {
      if (local_c8 < local_c0) {
        puVar5 = &local_d8;
        if (0xf < local_c0) {
          puVar5 = (undefined1 *)CONCAT71(uStack_d7,local_d8);
        }
        pcVar1 = puVar5 + local_c8;
        local_c8 = local_c8 + 1;
        *pcVar1 = param_6;
        puVar5[uVar3 + 1] = 0;
      }
      else {
        FUN_18060b550(&local_d8,1,0,param_6);
      }
    }
  }
  local_118[0] = 0;
  local_128 = local_118;
  FUN_180666b90(param_1 + 0x148,param_3,param_4,&local_d8);
  if (local_b8._2_2_ == -1) {
    FUN_180654190(local_b0,&local_d8);
    uVar7 = FUN_1805af050(local_90,"Parse failed. No match found for \'",local_b0);
    uVar7 = FUN_180623110(local_70,uVar7,&DAT_181bbb118);
    uVar8 = FUN_180666b30(local_118,1);
    uVar7 = FUN_18065b0c0(local_100,uVar7,uVar8);
                    /* WARNING: Subroutine does not return */
    FUN_1806584e0(uVar7);
  }
  puVar6 = (undefined8 *)FUN_1805b6b80(local_118,(int)local_b8._2_2_);
  *param_5 = *puVar6;
  uVar7 = param_3[1];
  *param_2 = *param_3;
  param_2[1] = uVar7;
  if (local_c0 < 0x10) {
  }
  pvVar2 = (void *)CONCAT71(uStack_d7,local_d8);
  _Memory = pvVar2;
  if ((0xfff < local_c0 + 1) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18065ac90 size=237 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065ac90(undefined8 *param_1,undefined8 *param_2,undefined8 param_3)

{
  undefined8 uVar1;
  undefined8 uVar2;
  void *_Memory;
  undefined1 auStack_88 [32];
  undefined8 *local_68;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined1 local_58 [32];
  void *local_38 [3];
  ulonglong local_20;
  ulonglong local_18;
  
  local_18 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_68 = param_1;
  uVar2 = FUN_1805a4070(local_58,param_3);
  local_68 = (undefined8 *)*param_2;
  uStack_60 = *(undefined4 *)(param_2 + 1);
  uStack_5c = *(undefined4 *)((longlong)param_2 + 0xc);
  local_68 = (undefined8 *)FUN_18065da20(local_38,&local_68,uVar2);
  if (0xf < (ulonglong)local_68[3]) {
    local_68 = (undefined8 *)*local_68;
  }
  uStack_60 = CONCAT31(uStack_60._1_3_,1);
  *param_1 = std::exception::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  __std_exception_copy(&local_68);
  *param_1 = std::runtime_error::vftable;
  if (local_20 < 0x10) {
    uVar2 = *param_2;
    uVar1 = param_2[1];
    *param_1 = std::_System_error::vftable;
    param_1[3] = uVar2;
    param_1[4] = uVar1;
  }
  _Memory = local_38[0];
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)local_38[0] + -8),
     0x1f < (ulonglong)((longlong)local_38[0] + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18065da20 size=411 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065da20(longlong *param_1,undefined4 *param_2,longlong *param_3)

{
  longlong lVar1;
  void *pvVar2;
  longlong *plVar3;
  undefined8 ****ppppuVar4;
  void *_Memory;
  undefined1 auStack_88 [32];
  undefined8 local_68;
  undefined8 local_58;
  longlong *local_50;
  undefined8 ***local_48 [2];
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_58 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_88;
  lVar1 = param_3[2];
  local_50 = param_3;
  if (lVar1 != 0) {
    if ((ulonglong)(param_3[3] - lVar1) < 2) {
      local_68 = 2;
      FUN_1805a1320(param_3,2,0,&DAT_181baf994);
    }
    else {
      param_3[2] = lVar1 + 2;
      plVar3 = param_3;
      if (0xf < (ulonglong)param_3[3]) {
        plVar3 = (longlong *)*param_3;
      }
      memmove((undefined1 *)((longlong)plVar3 + lVar1),&DAT_181baf994,2);
      ((undefined1 *)((longlong)plVar3 + lVar1))[2] = 0;
    }
  }
  (**(code **)(**(longlong **)(param_2 + 2) + 0x10))(*(longlong **)(param_2 + 2),local_48,*param_2);
  ppppuVar4 = local_48;
  if (0xf < local_30) {
    ppppuVar4 = (undefined8 ****)local_48[0];
  }
  FUN_1805a6a80(param_3,ppppuVar4,local_38);
  if (0xf < local_30) {
    ppppuVar4 = (undefined8 ****)local_48[0];
    if ((0xfff < local_30 + 1) &&
       (ppppuVar4 = (undefined8 ****)local_48[0][-1],
       0x1f < (ulonglong)((longlong)local_48[0] + (-8 - (longlong)ppppuVar4)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(ppppuVar4);
  }
  param_1[2] = 0;
  param_1[3] = 0;
  lVar1 = param_3[1];
  *param_1 = *param_3;
  param_1[1] = lVar1;
  lVar1 = param_3[3];
  param_1[2] = param_3[2];
  param_1[3] = lVar1;
  param_3[2] = 0;
  param_3[3] = 0xf;
  *(undefined1 *)param_3 = 0;
  if ((ulonglong)param_3[3] < 0x10) {
    param_3[2] = 0;
    param_3[3] = 0xf;
    *(undefined1 *)param_3 = 0;
  }
  pvVar2 = (void *)*param_3;
  _Memory = pvVar2;
  if ((0xfff < param_3[3] + 1U) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 180656eb0 size=906 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180656eb0(ushort *param_1,char *param_2,longlong param_3)

{
  bool bVar1;
  char cVar2;
  locale *plVar3;
  longlong *plVar4;
  undefined8 *puVar5;
  char *******pppppppcVar6;
  char *pcVar7;
  ushort uVar8;
  ushort uVar9;
  ulonglong uVar10;
  ushort uVar11;
  undefined1 auStack_98 [32];
  char local_78;
  longlong local_70;
  undefined1 local_68 [8];
  _Locimp *local_60;
  undefined8 local_58;
  char ******local_50 [2];
  longlong local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  *param_1 = 0;
  if ((char *)(param_3 - 1U) < param_2) {
  }
  cVar2 = *(char *)(param_3 - 1U);
  if (9 < (byte)(cVar2 - 0x30U)) {
  }
  *param_1 = (short)cVar2 - 0x30;
  pcVar7 = (char *)(param_3 + -2);
  uVar9 = 1;
  bVar1 = false;
  local_60 = std::locale::_Init(true);
  plVar3 = std::locale::classic();
  cVar2 = FUN_1805f22e0(local_68,plVar3);
  uVar8 = uVar9;
  if (cVar2 == '\0') {
    plVar4 = (longlong *)FUN_1805f1950(local_68);
    (**(code **)(*plVar4 + 0x28))(plVar4,local_50);
    local_70 = local_40;
    if (local_40 != 0) {
      pppppppcVar6 = local_50;
      if (0xf < local_38) {
        pppppppcVar6 = (char *******)local_50[0];
      }
      uVar8 = 1;
      if ('\0' < *(char *)pppppppcVar6) {
        uVar10 = 0;
        local_78 = (**(code **)(*plVar4 + 0x20))(plVar4);
        pppppppcVar6 = local_50;
        if (0xf < local_38) {
          pppppppcVar6 = (char *******)local_50[0];
        }
        cVar2 = *(char *)pppppppcVar6 + -1;
        uVar8 = uVar9;
        for (; param_2 <= pcVar7; pcVar7 = pcVar7 + -1) {
          if (cVar2 == '\0') {
            if (*pcVar7 != local_78) goto LAB_18065711c;
            if (param_2 == pcVar7) break;
            if (uVar10 < local_70 - 1U) {
              uVar10 = (ulonglong)(byte)((char)uVar10 + 1);
            }
            pppppppcVar6 = local_50;
            if (0xf < local_38) {
              pppppppcVar6 = (char *******)local_50[0];
            }
            cVar2 = *(char *)((longlong)pppppppcVar6 + uVar10);
          }
          else {
            uVar9 = uVar8 * 10;
            if (uVar9 / 10 != (uint)uVar8) {
              bVar1 = true;
            }
            uVar8 = (short)*pcVar7 - 0x30;
            uVar11 = uVar8 * uVar9;
            if ((((9 < (byte)(*pcVar7 - 0x30U)) ||
                 ((uVar8 != 0 &&
                  ((uint)((ulonglong)uVar11 / (ulonglong)(longlong)(int)(uint)uVar8) != (uint)uVar9)
                  ))) || ((ushort)(-uVar11 - 1) < *param_1)) || ((bVar1 && (uVar8 != 0)))) break;
            *param_1 = *param_1 + uVar11;
            cVar2 = cVar2 + -1;
            uVar8 = uVar9;
          }
        }
        if (0xf < local_38) {
          pppppppcVar6 = (char *******)local_50[0];
          if ((0xfff < local_38 + 1) &&
             (pppppppcVar6 = (char *******)local_50[0][-1],
             (char *)0x1f < (char *)((longlong)local_50[0] + (-8 - (longlong)pppppppcVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pppppppcVar6);
        }
        goto LAB_1806571fb;
      }
    }
LAB_18065711c:
    if (0xf < local_38) {
      pppppppcVar6 = (char *******)local_50[0];
      if ((0xfff < local_38 + 1) &&
         (pppppppcVar6 = (char *******)local_50[0][-1],
         (char *)0x1f < (char *)((longlong)local_50[0] + (-8 - (longlong)pppppppcVar6)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pppppppcVar6);
    }
  }
  for (; param_2 <= pcVar7; pcVar7 = pcVar7 + -1) {
    uVar9 = uVar8 * 10;
    if (uVar9 / 10 != (uint)uVar8) {
      bVar1 = true;
    }
    uVar8 = (short)*pcVar7 - 0x30;
    uVar11 = uVar8 * uVar9;
    if ((9 < (byte)(*pcVar7 - 0x30U)) ||
       ((((uVar8 != 0 &&
          ((uint)((ulonglong)uVar11 / (ulonglong)(longlong)(int)(uint)uVar8) != (uint)uVar9)) ||
         ((ushort)(-uVar11 - 1) < *param_1)) || ((bVar1 && (uVar8 != 0)))))) break;
    *param_1 = *param_1 + uVar11;
    uVar8 = uVar9;
  }
LAB_1806571fb:
  if ((local_60 != (_Locimp *)0x0) &&
     (puVar5 = (undefined8 *)(**(code **)(*(longlong *)local_60 + 0x10))(),
     puVar5 != (undefined8 *)0x0)) {
    (**(code **)*puVar5)(puVar5,1);
  }
}



############ FUN_ 180657e60 size=1486 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180657e60(undefined8 param_1,char *param_2)

{
  longlong *plVar1;
  void *pvVar2;
  longlong lVar3;
  int iVar4;
  ushort uVar5;
  ushort uVar6;
  int iVar7;
  char *pcVar8;
  ulonglong uVar9;
  uint uVar10;
  undefined1 **ppuVar11;
  void *pvVar12;
  ulonglong uVar13;
  undefined1 *puVar14;
  int iVar15;
  longlong lVar16;
  ulonglong uVar17;
  bool bVar18;
  undefined1 auStack_318 [32];
  ulonglong local_2f8;
  char local_2e8;
  undefined1 *local_2e0;
  undefined8 local_2d8;
  undefined8 local_2d0;
  undefined1 local_2c8 [32];
  undefined1 local_2a8 [32];
  undefined1 local_288;
  undefined1 local_287;
  undefined4 local_284;
  undefined1 local_280;
  undefined1 local_278 [32];
  undefined1 local_258 [32];
  undefined1 local_238;
  undefined1 local_237;
  undefined4 local_234;
  undefined1 local_230;
  char *local_228;
  char *local_220;
  undefined1 local_218 [32];
  undefined1 local_1f8 [32];
  undefined1 local_1d8;
  undefined1 local_1d7;
  undefined4 local_1d4;
  undefined1 local_1d0;
  undefined1 local_1c8 [16];
  undefined8 local_1b8;
  undefined8 local_1b0;
  undefined1 local_1a8 [16];
  undefined8 local_198;
  undefined8 local_190;
  undefined2 local_188;
  undefined4 local_184;
  undefined1 local_180;
  undefined1 local_178;
  undefined7 uStack_177;
  undefined8 local_168;
  ulonglong local_160;
  undefined1 local_158 [80];
  longlong local_108;
  longlong local_100;
  char local_f8;
  undefined1 local_f0;
  undefined7 uStack_ef;
  undefined1 *local_e0;
  ulonglong local_d8;
  undefined1 local_c8 [80];
  longlong local_78;
  longlong local_70;
  char local_68;
  undefined1 local_60;
  undefined7 uStack_5f;
  undefined8 local_50;
  ulonglong local_48;
  undefined8 local_38;
  ulonglong local_30;
  
  local_2d0 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_318;
  local_2d8 = param_1;
  uVar13 = 0;
  uVar6 = 0;
  plVar1 = (longlong *)(param_2 + 0x10);
  if (*plVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69e0();
  }
  pcVar8 = param_2;
  if (0xf < *(ulonglong *)(param_2 + 0x18)) {
    pcVar8 = *(char **)param_2;
  }
  local_2e8 = *pcVar8 == '-';
  local_38 = (undefined1 *)CONCAT35(local_38._5_3_,0x2e2c3a2d);
  local_1b8 = 0;
  local_1b0 = 0xf;
  local_1c8[0] = 0;
  local_198 = 0;
  local_190 = 0xf;
  local_1a8[0] = 0;
  lVar16 = -1;
  do {
    lVar3 = lVar16 + 1;
    lVar16 = lVar16 + 1;
  } while (*(char *)((longlong)&local_38 + lVar3) != '\0');
  FUN_1805a6cb0(local_1a8,&local_38);
  local_188 = 0;
  local_184 = 0;
  local_180 = 0;
  local_228 = param_2;
  if (0xf < *(ulonglong *)(param_2 + 0x18)) {
    local_228 = *(char **)param_2;
    param_2 = *(char **)param_2;
  }
  local_220 = param_2 + *plVar1;
  local_2e0 = local_218;
  FUN_1805a4070(local_218,local_1c8);
  FUN_1805a4070(local_1f8,local_1a8);
  local_1d8 = (undefined1)local_188;
  local_1d7 = local_188._1_1_;
  local_1d4 = local_184;
  local_1d0 = local_180;
  local_2e0 = local_2c8;
  FUN_1805a4070(local_2c8,local_218);
  FUN_1805a4070(local_2a8,local_1f8);
  local_288 = local_1d8;
  local_287 = local_1d7;
  local_284 = local_1d4;
  local_280 = local_1d0;
  FUN_18065aaa0(local_158,local_2c8,local_228,local_220);
  uVar9 = uVar13;
  uVar17 = uVar13;
  uVar5 = uVar6;
  while( true ) {
    local_2e0 = local_278;
    FUN_1805a4070(local_278,local_218);
    FUN_1805a4070(local_258,local_1f8);
    local_238 = local_1d8;
    local_237 = local_1d7;
    local_234 = local_1d4;
    local_230 = local_1d0;
    FUN_18065aaa0(local_c8,local_278,local_220,local_220);
    if ((local_68 == '\0') || (local_f8 == '\0')) {
      bVar18 = local_68 == local_f8;
    }
    else if ((local_78 == local_108) && (local_70 == local_100)) {
      bVar18 = true;
    }
    else {
      bVar18 = false;
    }
    if (0xf < local_48) {
      pvVar2 = (void *)CONCAT71(uStack_5f,local_60);
      pvVar12 = pvVar2;
      if ((0xfff < local_48 + 1) &&
         (pvVar12 = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar12)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar12);
    }
    local_50 = 0;
    local_48 = 0xf;
    local_60 = 0;
    FUN_18065b2a0(local_c8);
    if (bVar18) break;
    iVar15 = (int)uVar13;
    if (iVar15 == 0) {
      uVar10 = FUN_18060c070(&local_f0);
      uVar17 = (ulonglong)uVar10;
    }
    else if (iVar15 == 1) {
      uVar6 = FUN_180657330(&local_f0);
    }
    else if (iVar15 == 2) {
      uVar5 = FUN_180657330(&local_f0);
    }
    else if (iVar15 == 3) {
      iVar4 = (int)local_e0;
      if ((int)local_e0 < 6) {
        uVar9 = FUN_1806573c0(&local_f0);
      }
      else {
        local_168 = 0;
        local_160 = 0xf;
        local_178 = 0;
        local_2e0 = (undefined1 *)0x6;
        local_38 = local_e0;
        ppuVar11 = (undefined1 **)&local_38;
        if ((undefined1 *)0x5 < local_e0) {
          ppuVar11 = &local_2e0;
        }
        puVar14 = &local_f0;
        if (0xf < local_d8) {
          puVar14 = (undefined1 *)CONCAT71(uStack_ef,local_f0);
        }
        FUN_1805a6cb0(&local_178,puVar14,*ppuVar11);
        uVar9 = FUN_1806573c0(&local_178);
        if (0xf < local_160) {
          pvVar2 = (void *)CONCAT71(uStack_177,local_178);
          pvVar12 = pvVar2;
          if ((0xfff < local_160 + 1) &&
             (pvVar12 = *(void **)((longlong)pvVar2 + -8),
             0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar12)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar12);
        }
      }
      if (iVar4 < 6) {
        iVar7 = 1;
        uVar10 = 6 - iVar4;
        uVar13 = (ulonglong)uVar10;
        if (0 < (int)uVar10) {
          do {
            iVar7 = iVar7 * 10;
            uVar13 = uVar13 - 1;
          } while (uVar13 != 0);
        }
        uVar9 = uVar9 * (longlong)iVar7;
      }
    }
    uVar13 = (ulonglong)(iVar15 + 1);
    local_f8 = FUN_1806535d0(local_158,&local_108,local_100,&local_f0);
  }
  if (local_d8 < 0x10) {
    local_e0 = (undefined1 *)0x0;
    local_d8 = 0xf;
    local_f0 = 0;
    FUN_18065b2a0(local_158);
    uVar10 = (uint)uVar17;
    if (local_2e8 == '\0') {
      local_2f8 = uVar9;
      FUN_18065a5a0(local_2d8,uVar17,uVar6,uVar5);
    }
    else {
      if (((int)uVar10 < 0) || ((longlong)uVar9 < 0)) {
        local_2e0 = (undefined1 *)
                    ((((longlong)(int)((uVar10 ^ (int)uVar10 >> 0x1f) - ((int)uVar10 >> 0x1f)) *
                       0x3c + (longlong)(int)(uint)uVar6) * 0x3c + (longlong)(int)(uint)uVar5) *
                     -1000000 - ((uVar9 ^ (longlong)uVar9 >> 0x3f) - ((longlong)uVar9 >> 0x3f)));
      }
      else {
        local_2e0 = (undefined1 *)
                    ((((longlong)(int)uVar10 * 0x3c + (ulonglong)uVar6) * 0x3c + (ulonglong)uVar5) *
                     1000000 + uVar9);
      }
      FUN_18065be90(&local_2e0,local_2d8);
    }
    FUN_18065b2a0(local_218);
    FUN_18065b2a0(local_1c8);
  }
  pvVar2 = (void *)CONCAT71(uStack_ef,local_f0);
  pvVar12 = pvVar2;
  if ((0xfff < local_d8 + 1) &&
     (pvVar12 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar12)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar12);
}



############ FUN_ 180658650 size=432 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180658650(undefined8 *param_1,undefined8 param_2,uint param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  char cVar3;
  int iVar4;
  undefined1 *puVar5;
  void *_Memory;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined1 auStack_78 [32];
  undefined8 local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  ulonglong local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  cVar3 = FUN_180653530();
  uVar6 = 0;
  uVar7 = 0xf;
  uVar2 = uVar6;
  for (; (cVar3 == '\0' && ((uint)uVar6 < param_3)); uVar6 = (ulonglong)((uint)uVar6 + 1)) {
    if (*(char *)(param_1 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_1 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_1), iVar4 == -1
         )) {
        *param_1 = 0;
      }
      else {
        *(char *)((longlong)param_1 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_1 + 1) = 1;
    }
    iVar4 = isdigit((int)*(char *)((longlong)param_1 + 9));
    if (iVar4 == 0) break;
    if (*(char *)(param_1 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_1 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_1), iVar4 == -1
         )) {
        *param_1 = 0;
      }
      else {
        *(char *)((longlong)param_1 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_1 + 1) = 1;
    }
    if (uVar2 < uVar7) {
      local_40 = uVar2 + 1;
      puVar5 = &local_50;
      if (0xf < uVar7) {
        puVar5 = (undefined1 *)CONCAT71(uStack_4f,local_50);
      }
      puVar5[uVar2] = *(undefined1 *)((longlong)param_1 + 9);
      puVar5[uVar2 + 1] = 0;
    }
    else {
      FUN_18060b550(&local_50,1);
    }
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_1 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_1), iVar4 == -1))
    {
      *param_1 = 0;
      *(undefined1 *)(param_1 + 1) = 1;
    }
    else {
      *(undefined1 *)(param_1 + 1) = 0;
    }
    cVar3 = FUN_180653530(param_1,param_2);
    uVar7 = local_38;
    uVar2 = local_40;
  }
  if (uVar2 != 0) {
    FUN_180657260(&local_50);
    uVar7 = local_38;
  }
  if (0xf < uVar7) {
    pvVar1 = (void *)CONCAT71(uStack_4f,local_50);
    _Memory = pvVar1;
    if ((0xfff < uVar7 + 1) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
}



############ FUN_ 18065c4b0 size=52 ############

void * FUN_18065c4b0(void *param_1,ulonglong param_2)

{
  FUN_18065c190();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c4f0 size=52 ############

void * FUN_18065c4f0(void *param_1,ulonglong param_2)

{
  FUN_18065c230();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c530 size=52 ############

void * FUN_18065c530(void *param_1,ulonglong param_2)

{
  FUN_18065c2d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c570 size=52 ############

void * FUN_18065c570(void *param_1,ulonglong param_2)

{
  FUN_18065c370();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c5b0 size=52 ############

void * FUN_18065c5b0(void *param_1,ulonglong param_2)

{
  FUN_18065b360();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c5f0 size=52 ############

void * FUN_18065c5f0(void *param_1,ulonglong param_2)

{
  FUN_18065b4d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c630 size=125 ############

undefined8 * FUN_18065c630(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_year>::
             vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c6b0 size=125 ############

undefined8 * FUN_18065c6b0(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<boost::gregorian::bad_weekday>::vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c730 size=125 ############

undefined8 * FUN_18065c730(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<std::ios_base::failure>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((longlong *)param_1[6] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[6] + 0x20))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c7b0 size=125 ############

undefined8 * FUN_18065c7b0(undefined8 *param_1,ulonglong param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<std::out_of_range>::vftable;
  param_1[3] = boost::exception::vftable;
  if ((longlong *)param_1[4] != (longlong *)0x0) {
    cVar1 = (**(code **)(*(longlong *)param_1[4] + 0x20))();
    if (cVar1 != '\0') {
      param_1[4] = 0;
    }
  }
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c830 size=53 ############

num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *
FUN_18065c830(num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_> *param_1,
             uint param_2)

{
  std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_>::
  ~num_get<char,std::istreambuf_iterator<char,std::char_traits<char>_>_>(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18065c870 size=152 ############

void * FUN_18065c870(void *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(ulonglong *)((longlong)param_1 + 0x1a0) < 0x10) {
    *(undefined8 *)((longlong)param_1 + 0x198) = 0;
    *(undefined8 *)((longlong)param_1 + 0x1a0) = 0xf;
    *(undefined1 *)((longlong)param_1 + 0x188) = 0;
    FUN_18065b360(param_1);
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = *(void **)((longlong)param_1 + 0x188);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)((longlong)param_1 + 0x1a0) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18065c910 size=152 ############

void * FUN_18065c910(void *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  if (*(ulonglong *)((longlong)param_1 + 0x178) < 0x10) {
    *(undefined8 *)((longlong)param_1 + 0x170) = 0;
    *(undefined8 *)((longlong)param_1 + 0x178) = 0xf;
    *(undefined1 *)((longlong)param_1 + 0x160) = 0;
    FUN_18065b4d0(param_1);
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = *(void **)((longlong)param_1 + 0x160);
  _Memory = pvVar1;
  if ((0xfff < *(ulonglong *)((longlong)param_1 + 0x178) + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18065e200 size=838 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18065e200(longlong param_1,undefined8 param_2,undefined8 *param_3,ios_base *param_4,
                  undefined1 param_5,longlong param_6,longlong *param_7)

{
  longlong lVar1;
  void *pvVar2;
  undefined8 *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *ptVar6;
  undefined8 *puVar7;
  void *_Memory;
  longlong *plVar8;
  undefined1 auStack_e8 [32];
  undefined1 local_c8;
  longlong local_c0;
  longlong *local_b8;
  undefined1 *local_b0;
  undefined8 *local_a8;
  longlong lStack_a0;
  undefined1 *local_98;
  longlong *plStack_90;
  undefined8 local_88;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 local_58;
  longlong *local_50;
  ulonglong local_48;
  
  local_58 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_e8;
  local_50 = param_7;
  if (*(longlong *)(param_1 + 0x178) - *(longlong *)(param_1 + 0x170) >> 5 != 0) {
    puVar3 = (undefined8 *)
             ((longlong)*(int *)(param_6 + 0x18) * 0x20 + *(longlong *)(param_1 + 0x170));
    puVar7 = puVar3;
    local_a8 = puVar3;
    if (0xf < (ulonglong)puVar3[3]) {
      local_a8 = (undefined8 *)*puVar3;
      puVar7 = (undefined8 *)*puVar3;
    }
    lStack_a0 = puVar3[2] + (longlong)puVar7;
    lVar1 = -1;
    do {
      lVar4 = lVar1;
      lVar1 = lVar4 + 1;
    } while ((&DAT_181bbad31)[lVar4] != '\0');
    plStack_90 = (longlong *)(&DAT_181bbad31 + lVar4);
    local_98 = &DAT_181bbad30;
    local_78 = 0x81bbad30;
    uStack_74 = 1;
    local_68 = local_88;
    uStack_70 = plStack_90;
    FUN_180654a20(param_7,&local_78,&local_a8);
  }
  if (*(longlong *)(param_1 + 0x160) - *(longlong *)(param_1 + 0x158) >> 5 != 0) {
    puVar3 = (undefined8 *)
             ((longlong)*(int *)(param_6 + 0x18) * 0x20 + *(longlong *)(param_1 + 0x158));
    puVar7 = puVar3;
    local_a8 = puVar3;
    if (0xf < (ulonglong)puVar3[3]) {
      local_a8 = (undefined8 *)*puVar3;
      puVar7 = (undefined8 *)*puVar3;
    }
    lStack_a0 = puVar3[2] + (longlong)puVar7;
    lVar1 = -1;
    do {
      lVar4 = lVar1;
      lVar1 = lVar4 + 1;
    } while ((&DAT_181bbad35)[lVar4] != '\0');
    plStack_90 = (longlong *)(&DAT_181bbad35 + lVar4);
    local_98 = &DAT_181bbad34;
    local_78 = 0x81bbad34;
    uStack_74 = 1;
    local_68 = local_88;
    uStack_70 = plStack_90;
    FUN_180654a20(param_7,&local_78,&local_a8);
  }
  if (*(longlong *)(param_1 + 0x148) - *(longlong *)(param_1 + 0x140) >> 5 != 0) {
    puVar3 = (undefined8 *)
             ((longlong)*(int *)(param_6 + 0x10) * 0x20 + *(longlong *)(param_1 + 0x140));
    puVar7 = puVar3;
    local_a8 = puVar3;
    if (0xf < (ulonglong)puVar3[3]) {
      local_a8 = (undefined8 *)*puVar3;
      puVar7 = (undefined8 *)*puVar3;
    }
    lStack_a0 = puVar3[2] + (longlong)puVar7;
    lVar1 = -1;
    do {
      lVar4 = lVar1;
      lVar1 = lVar4 + 1;
    } while ((&UNK_181bbad39)[lVar4] != '\0');
    plStack_90 = (longlong *)(&UNK_181bbad39 + lVar4);
    local_98 = &DAT_181bbad38;
    local_78 = 0x81bbad38;
    uStack_74 = 1;
    local_68 = local_88;
    uStack_70 = plStack_90;
    FUN_180654a20(param_7,&local_78,&local_a8);
  }
  if (*(longlong *)(param_1 + 0x130) - *(longlong *)(param_1 + 0x128) >> 5 != 0) {
    puVar3 = (undefined8 *)
             ((longlong)*(int *)(param_6 + 0x10) * 0x20 + *(longlong *)(param_1 + 0x128));
    puVar7 = puVar3;
    local_a8 = puVar3;
    if (0xf < (ulonglong)puVar3[3]) {
      local_a8 = (undefined8 *)*puVar3;
      puVar7 = (undefined8 *)*puVar3;
    }
    lStack_a0 = puVar3[2] + (longlong)puVar7;
    lVar1 = -1;
    do {
      lVar4 = lVar1;
      lVar1 = lVar4 + 1;
    } while ((&DAT_181bbad3d)[lVar4] != '\0');
    plStack_90 = (longlong *)(&DAT_181bbad3d + lVar4);
    local_98 = &DAT_181bbad3c;
    local_78 = 0x81bbad3c;
    uStack_74 = 1;
    local_68 = local_88;
    uStack_70 = plStack_90;
    FUN_180654a20(param_7,&local_78,&local_a8);
  }
  plVar8 = param_7;
  if (0xf < (ulonglong)param_7[3]) {
    plVar8 = (longlong *)*param_7;
  }
  local_a8 = (undefined8 *)*param_3;
  lStack_a0 = param_3[1];
  uVar5 = std::ios_base::getloc(param_4);
  lVar1 = param_7[2];
  ptVar6 = (time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_> *)
           FUN_180658560(uVar5);
  local_c0 = param_6;
  local_c8 = param_5;
  local_b8 = plVar8;
  local_b0 = (undefined1 *)(lVar1 + (longlong)plVar8);
  std::time_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::put
            (ptVar6,param_2,&local_a8,param_4);
  if (plStack_90 != (longlong *)0x0) {
    puVar7 = (undefined8 *)(**(code **)(*plStack_90 + 0x10))();
    if (puVar7 != (undefined8 *)0x0) {
      (**(code **)*puVar7)(puVar7,1);
    }
  }
  if (0xf < (ulonglong)param_7[3]) {
    pvVar2 = (void *)*param_7;
    _Memory = pvVar2;
    if ((0xfff < param_7[3] + 1U) &&
       (_Memory = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  param_7[2] = 0;
  param_7[3] = 0xf;
  *(undefined1 *)param_7 = 0;
}



############ FUN_ 180666eb0 size=343 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180666eb0(undefined8 param_1,ushort *param_2,undefined8 *param_3,undefined8 param_4)

{
  void *pvVar1;
  char cVar2;
  ushort uVar3;
  int iVar4;
  void *_Memory;
  undefined1 auStack_88 [32];
  undefined1 *local_68;
  undefined1 local_58 [8];
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  undefined4 local_28;
  ulonglong local_20;
  
  local_50 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_88;
  while( true ) {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    iVar4 = isspace((int)*(char *)((longlong)param_3 + 9));
    if ((iVar4 == 0) || (cVar2 = FUN_180653530(param_3,param_4), cVar2 != '\0')) break;
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
    }
    else {
      *(undefined1 *)(param_3 + 1) = 0;
    }
  }
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  local_28 = 0xffff0000;
  local_58[0] = 0x30;
  local_68 = local_58;
  uVar3 = FUN_180655830(param_3,param_4,&local_48,2);
  *param_2 = 1;
  if (uVar3 + 1 < 2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805c02b0(1,uVar3,0);
  }
  if (0x1f < uVar3) {
                    /* WARNING: Subroutine does not return */
    FUN_1805c02b0(1);
  }
  *param_2 = uVar3;
  if (0xf < local_30) {
    pvVar1 = (void *)CONCAT71(uStack_47,local_48);
    _Memory = pvVar1;
    if ((0xfff < local_30 + 1) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
}



############ FUN_ 180667020 size=588 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180667020(undefined8 param_1,undefined8 *param_2,undefined8 param_3,longlong *param_4)

{
  void *pvVar1;
  char cVar2;
  int iVar3;
  undefined1 *puVar4;
  longlong lVar5;
  ulonglong uVar6;
  void *pvVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  undefined1 auStack_a8 [32];
  undefined8 local_88;
  undefined1 local_80;
  undefined7 uStack_7f;
  ulonglong local_70;
  ulonglong local_68;
  undefined1 local_60;
  undefined7 uStack_5f;
  undefined8 local_50;
  ulonglong local_48;
  ulonglong local_40;
  
  local_88 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_70 = 0;
  local_68 = 0xf;
  local_80 = 0;
  cVar2 = FUN_180653530(param_2,param_3);
  uVar6 = 0xf;
  if (cVar2 == '\0') {
    uVar9 = 1;
    uVar8 = 0;
    do {
      if (*(char *)(param_2 + 1) == '\0') {
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_2 ==
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
           (iVar3 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_2),
           iVar3 == -1)) {
          *param_2 = 0;
        }
        else {
          *(char *)((longlong)param_2 + 9) = (char)iVar3;
        }
        *(undefined1 *)(param_2 + 1) = 1;
      }
      iVar3 = isdigit((int)*(char *)((longlong)param_2 + 9));
      if (iVar3 == 0) break;
      if (*(char *)(param_2 + 1) == '\0') {
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_2 ==
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
           (iVar3 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_2),
           iVar3 == -1)) {
          *param_2 = 0;
        }
        else {
          *(char *)((longlong)param_2 + 9) = (char)iVar3;
        }
        *(undefined1 *)(param_2 + 1) = 1;
      }
      if (uVar8 < uVar6) {
        local_70 = uVar8 + 1;
        puVar4 = &local_80;
        if (0xf < uVar6) {
          puVar4 = (undefined1 *)CONCAT71(uStack_7f,local_80);
        }
        puVar4[uVar8] = *(undefined1 *)((longlong)param_2 + 9);
        puVar4[uVar8 + 1] = 0;
      }
      else {
        FUN_18060b550(&local_80,1,0);
      }
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_2 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar3 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_2), iVar3 == -1
         )) {
        *param_2 = 0;
        *(undefined1 *)(param_2 + 1) = 1;
      }
      else {
        *(undefined1 *)(param_2 + 1) = 0;
      }
      cVar2 = FUN_180653530(param_2,param_3);
      uVar6 = local_68;
      uVar8 = local_70;
    } while (cVar2 == '\0');
    if (uVar8 != 0) {
      if (uVar8 < 6) {
        lVar5 = FUN_1806573c0(&local_80);
        *param_4 = lVar5;
        uVar6 = (ulonglong)(ushort)(6U - (short)local_70);
        if ((ushort)(6U - (short)local_70) != 0) {
          do {
            uVar9 = (ulonglong)(uint)((int)uVar9 * 10);
            uVar6 = uVar6 - 1;
          } while (uVar6 != 0);
        }
        *param_4 = uVar9 * lVar5;
        uVar6 = local_68;
      }
      else {
        local_50 = 0;
        local_48 = 0xf;
        local_60 = 0;
        puVar4 = &local_80;
        if (0xf < uVar6) {
          puVar4 = (undefined1 *)CONCAT71(uStack_7f,local_80);
        }
        FUN_1805a6cb0(&local_60,puVar4,6);
        lVar5 = FUN_1806573c0(&local_60);
        *param_4 = lVar5;
        uVar6 = local_68;
        if (0xf < local_48) {
          pvVar1 = (void *)CONCAT71(uStack_5f,local_60);
          pvVar7 = pvVar1;
          if ((0xfff < local_48 + 1) &&
             (pvVar7 = *(void **)((longlong)pvVar1 + -8),
             0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar7);
        }
      }
    }
  }
  if (uVar6 < 0x10) {
  }
  pvVar1 = (void *)CONCAT71(uStack_7f,local_80);
  pvVar7 = pvVar1;
  if ((0xfff < uVar6 + 1) &&
     (pvVar7 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 180667290 size=1188 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180667290(longlong param_1,ushort *param_2,undefined8 *param_3,undefined8 param_4,
                  longlong *param_5,undefined8 *param_6)

{
  bool bVar1;
  char cVar2;
  ushort uVar3;
  int iVar4;
  longlong *plVar5;
  void *pvVar6;
  void *pvVar7;
  longlong *plVar8;
  uint uVar9;
  undefined1 auStack_d8 [32];
  undefined4 *local_b8;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined8 local_a0;
  longlong local_98;
  ushort *local_90;
  undefined8 local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  ulonglong uStack_60;
  undefined4 local_58;
  ulonglong local_50;
  
  local_88 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_80 = param_5;
  uVar9 = 0;
  local_a4 = 0;
  bVar1 = false;
  local_a0 = param_4;
  local_98 = param_1;
  local_90 = param_2;
  while( true ) {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    iVar4 = isspace((int)*(char *)((longlong)param_3 + 9));
    if ((iVar4 == 0) || (cVar2 = FUN_180653530(param_3,param_4), cVar2 != '\0')) break;
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
    }
    else {
      *(undefined1 *)(param_3 + 1) = 0;
    }
  }
  if (*(char *)(param_3 + 1) == '\0') {
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
    }
    else {
      *(char *)((longlong)param_3 + 9) = (char)iVar4;
    }
    *(undefined1 *)(param_3 + 1) = 1;
  }
  plVar8 = param_5;
  if (0xf < (ulonglong)param_5[3]) {
    plVar8 = (longlong *)*param_5;
  }
LAB_180667386:
  do {
    plVar5 = param_5;
    if (0xf < (ulonglong)param_5[3]) {
      plVar5 = (longlong *)*param_5;
    }
    if ((plVar8 == (longlong *)(param_5[2] + (longlong)plVar5)) ||
       (cVar2 = FUN_180653530(param_3,local_a0), cVar2 != '\0')) {
      *local_90 = 1;
      if (uVar9 + 1 < 2) {
                    /* WARNING: Subroutine does not return */
        FUN_1805c02e0(1,uVar9,0);
      }
      if (0xc < (ushort)uVar9) {
                    /* WARNING: Subroutine does not return */
        FUN_1805c02e0(1,uVar9);
      }
      *local_90 = (ushort)uVar9;
      if ((ulonglong)param_5[3] < 0x10) {
        param_5[2] = 0;
        param_5[3] = 0xf;
        *(char *)param_5 = '\0';
      }
      pvVar6 = (void *)*param_5;
      pvVar7 = pvVar6;
      if ((0xfff < param_5[3] + 1U) &&
         (pvVar7 = *(void **)((longlong)pvVar6 + -8),
         0x1f < (ulonglong)((longlong)pvVar6 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar7);
    }
    if ((char)*plVar8 != '%') {
      plVar8 = (longlong *)((longlong)plVar8 + 1);
      if (bVar1) {
        bVar1 = false;
        if (*(char *)(param_3 + 1) != '\0') goto LAB_180667386;
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 !=
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) &&
           (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar4 != -1)) {
          *(char *)((longlong)param_3 + 9) = (char)iVar4;
          *(undefined1 *)(param_3 + 1) = 1;
          goto LAB_180667386;
        }
      }
      else {
        if (*(char *)(param_3 + 1) == '\0') {
          if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
               (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
             (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                                ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
             iVar4 == -1)) {
            *param_3 = 0;
          }
          else {
            *(char *)((longlong)param_3 + 9) = (char)iVar4;
          }
          *(undefined1 *)(param_3 + 1) = 1;
        }
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 !=
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) &&
           (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar4 != -1)) {
          *(undefined1 *)(param_3 + 1) = 0;
          goto LAB_180667386;
        }
      }
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
      goto LAB_180667386;
    }
    cVar2 = *(char *)((longlong)plVar8 + 1);
    if (cVar2 != '%') {
      if (cVar2 == 'B') {
        local_a8 = 0;
        local_68 = 0;
        uStack_60 = 0xf;
        local_78._0_1_ = 0;
        local_58 = 0xffff0000;
        local_a4 = 2;
        local_b8 = &local_a8;
        FUN_180666b90(local_98 + 0x38,param_3,local_a0,&local_78);
        if (param_6 != &local_78) {
          FUN_180485450(param_6);
          *param_6 = CONCAT71(local_78._1_7_,(undefined1)local_78);
          param_6[1] = uStack_70;
          param_6[2] = local_68;
          param_6[3] = uStack_60;
          local_68 = 0;
          uStack_60 = 0xf;
          local_78._0_1_ = 0;
        }
        *(undefined2 *)(param_6 + 4) = (undefined2)local_58;
        *(undefined2 *)((longlong)param_6 + 0x22) = local_58._2_2_;
        if (0xf < uStack_60) {
          pvVar7 = (void *)CONCAT71(local_78._1_7_,(undefined1)local_78);
          pvVar6 = pvVar7;
          if ((0xfff < uStack_60 + 1) &&
             (pvVar6 = *(void **)((longlong)pvVar7 + -8),
             0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
          goto LAB_180667592;
        }
      }
      else {
        if (cVar2 != 'b') {
          if (cVar2 != 'm') goto LAB_180667602;
          uVar3 = FUN_180658650(param_3,local_a0,2);
          uVar9 = (uint)uVar3;
          plVar8 = (longlong *)((longlong)plVar8 + 2);
          goto LAB_180667386;
        }
        local_a8 = 0;
        local_68 = 0;
        uStack_60 = 0xf;
        local_78._0_1_ = 0;
        local_58 = 0xffff0000;
        local_a4 = 1;
        local_b8 = &local_a8;
        FUN_180666b90(local_98 + 0x20,param_3,local_a0,&local_78);
        if (param_6 != &local_78) {
          FUN_180485450(param_6);
          *param_6 = CONCAT71(local_78._1_7_,(undefined1)local_78);
          param_6[1] = uStack_70;
          param_6[2] = local_68;
          param_6[3] = uStack_60;
          local_68 = 0;
          uStack_60 = 0xf;
          local_78._0_1_ = 0;
        }
        *(undefined2 *)(param_6 + 4) = (undefined2)local_58;
        *(undefined2 *)((longlong)param_6 + 0x22) = local_58._2_2_;
        if (0xf < uStack_60) {
          pvVar7 = (void *)CONCAT71(local_78._1_7_,(undefined1)local_78);
          pvVar6 = pvVar7;
          if ((0xfff < uStack_60 + 1) &&
             (pvVar6 = *(void **)((longlong)pvVar7 + -8),
             0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
LAB_180667592:
                    /* WARNING: Subroutine does not return */
          free(pvVar6);
        }
      }
      uVar9 = (uint)*(ushort *)((longlong)param_6 + 0x22);
      if ((ulonglong)*(ushort *)(param_6 + 4) < (ulonglong)param_6[2]) {
        bVar1 = true;
        plVar8 = (longlong *)((longlong)plVar8 + 2);
      }
      else {
LAB_180667602:
        plVar8 = (longlong *)((longlong)plVar8 + 2);
      }
      goto LAB_180667386;
    }
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
      goto LAB_180667602;
    }
    *(undefined1 *)(param_3 + 1) = 0;
    plVar8 = (longlong *)((longlong)plVar8 + 2);
  } while( true );
}



############ FUN_ 180667750 size=1184 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180667750(longlong param_1,ushort *param_2,undefined8 *param_3,undefined8 param_4,
                  longlong *param_5,undefined8 *param_6)

{
  bool bVar1;
  char cVar2;
  ushort uVar3;
  int iVar4;
  longlong *plVar5;
  void *pvVar6;
  void *pvVar7;
  longlong *plVar8;
  uint uVar9;
  undefined1 auStack_d8 [32];
  undefined4 *local_b8;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined8 local_a0;
  longlong local_98;
  ushort *local_90;
  undefined8 local_88;
  longlong *local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  ulonglong uStack_60;
  undefined4 local_58;
  ulonglong local_50;
  
  local_88 = 0xfffffffffffffffe;
  local_50 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_80 = param_5;
  uVar9 = 0;
  local_a4 = 0;
  bVar1 = false;
  local_a0 = param_4;
  local_98 = param_1;
  local_90 = param_2;
  while( true ) {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    iVar4 = isspace((int)*(char *)((longlong)param_3 + 9));
    if ((iVar4 == 0) || (cVar2 = FUN_180653530(param_3,param_4), cVar2 != '\0')) break;
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
    }
    else {
      *(undefined1 *)(param_3 + 1) = 0;
    }
  }
  if (*(char *)(param_3 + 1) == '\0') {
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
    }
    else {
      *(char *)((longlong)param_3 + 9) = (char)iVar4;
    }
    *(undefined1 *)(param_3 + 1) = 1;
  }
  plVar8 = param_5;
  if (0xf < (ulonglong)param_5[3]) {
    plVar8 = (longlong *)*param_5;
  }
LAB_180667846:
  do {
    plVar5 = param_5;
    if (0xf < (ulonglong)param_5[3]) {
      plVar5 = (longlong *)*param_5;
    }
    if ((plVar8 == (longlong *)(param_5[2] + (longlong)plVar5)) ||
       (cVar2 = FUN_180653530(param_3,local_a0), cVar2 != '\0')) {
      *local_90 = 0;
      if (uVar9 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
        FUN_180666e80(0,0xffff,0);
      }
      if (6 < (ushort)uVar9) {
                    /* WARNING: Subroutine does not return */
        FUN_180666e80(0,uVar9,1);
      }
      *local_90 = (ushort)uVar9;
      if ((ulonglong)param_5[3] < 0x10) {
        param_5[2] = 0;
        param_5[3] = 0xf;
        *(char *)param_5 = '\0';
      }
      pvVar6 = (void *)*param_5;
      pvVar7 = pvVar6;
      if ((0xfff < param_5[3] + 1U) &&
         (pvVar7 = *(void **)((longlong)pvVar6 + -8),
         0x1f < (ulonglong)((longlong)pvVar6 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar7);
    }
    if ((char)*plVar8 != '%') {
      plVar8 = (longlong *)((longlong)plVar8 + 1);
      if (bVar1) {
        bVar1 = false;
        if (*(char *)(param_3 + 1) != '\0') goto LAB_180667846;
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 !=
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) &&
           (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar4 != -1)) {
          *(char *)((longlong)param_3 + 9) = (char)iVar4;
          *(undefined1 *)(param_3 + 1) = 1;
          goto LAB_180667846;
        }
      }
      else {
        if (*(char *)(param_3 + 1) == '\0') {
          if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
               (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
             (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                                ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
             iVar4 == -1)) {
            *param_3 = 0;
          }
          else {
            *(char *)((longlong)param_3 + 9) = (char)iVar4;
          }
          *(undefined1 *)(param_3 + 1) = 1;
        }
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 !=
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) &&
           (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar4 != -1)) {
          *(undefined1 *)(param_3 + 1) = 0;
          goto LAB_180667846;
        }
      }
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
      goto LAB_180667846;
    }
    cVar2 = *(char *)((longlong)plVar8 + 1);
    if (cVar2 != '%') {
      if (cVar2 == 'A') {
        local_a8 = 0;
        local_68 = 0;
        uStack_60 = 0xf;
        local_78._0_1_ = 0;
        local_58 = 0xffff0000;
        local_a4 = 2;
        local_b8 = &local_a8;
        FUN_180666b90(local_98 + 0x68,param_3,local_a0,&local_78);
        if (param_6 != &local_78) {
          FUN_180485450(param_6);
          *param_6 = CONCAT71(local_78._1_7_,(undefined1)local_78);
          param_6[1] = uStack_70;
          param_6[2] = local_68;
          param_6[3] = uStack_60;
          local_68 = 0;
          uStack_60 = 0xf;
          local_78._0_1_ = 0;
        }
        *(undefined2 *)(param_6 + 4) = (undefined2)local_58;
        *(undefined2 *)((longlong)param_6 + 0x22) = local_58._2_2_;
        if (0xf < uStack_60) {
          pvVar7 = (void *)CONCAT71(local_78._1_7_,(undefined1)local_78);
          pvVar6 = pvVar7;
          if ((0xfff < uStack_60 + 1) &&
             (pvVar6 = *(void **)((longlong)pvVar7 + -8),
             0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
          goto LAB_180667a52;
        }
      }
      else {
        if (cVar2 != 'a') {
          if (cVar2 != 'w') goto LAB_180667ac2;
          uVar3 = FUN_180658650(param_3,local_a0);
          uVar9 = (uint)uVar3;
          plVar8 = (longlong *)((longlong)plVar8 + 2);
          goto LAB_180667846;
        }
        local_a8 = 0;
        local_68 = 0;
        uStack_60 = 0xf;
        local_78._0_1_ = 0;
        local_58 = 0xffff0000;
        local_a4 = 1;
        local_b8 = &local_a8;
        FUN_180666b90(local_98 + 0x50,param_3,local_a0,&local_78);
        if (param_6 != &local_78) {
          FUN_180485450(param_6);
          *param_6 = CONCAT71(local_78._1_7_,(undefined1)local_78);
          param_6[1] = uStack_70;
          param_6[2] = local_68;
          param_6[3] = uStack_60;
          local_68 = 0;
          uStack_60 = 0xf;
          local_78._0_1_ = 0;
        }
        *(undefined2 *)(param_6 + 4) = (undefined2)local_58;
        *(undefined2 *)((longlong)param_6 + 0x22) = local_58._2_2_;
        if (0xf < uStack_60) {
          pvVar7 = (void *)CONCAT71(local_78._1_7_,(undefined1)local_78);
          pvVar6 = pvVar7;
          if ((0xfff < uStack_60 + 1) &&
             (pvVar6 = *(void **)((longlong)pvVar7 + -8),
             0x1f < (ulonglong)((longlong)pvVar7 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
LAB_180667a52:
                    /* WARNING: Subroutine does not return */
          free(pvVar6);
        }
      }
      uVar9 = (uint)*(ushort *)((longlong)param_6 + 0x22);
      if ((ulonglong)*(ushort *)(param_6 + 4) < (ulonglong)param_6[2]) {
        bVar1 = true;
        plVar8 = (longlong *)((longlong)plVar8 + 2);
      }
      else {
LAB_180667ac2:
        plVar8 = (longlong *)((longlong)plVar8 + 2);
      }
      goto LAB_180667846;
    }
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar4;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar4 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar4 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
      goto LAB_180667ac2;
    }
    *(undefined1 *)(param_3 + 1) = 0;
    plVar8 = (longlong *)((longlong)plVar8 + 2);
  } while( true );
}



############ FUN_ 180667c10 size=742 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180667c10(undefined8 param_1,ushort *param_2,undefined8 *param_3,undefined8 param_4,
                  longlong *param_5,undefined8 param_6)

{
  void *pvVar1;
  char cVar2;
  short sVar3;
  ushort uVar4;
  int iVar5;
  longlong *plVar6;
  void *_Memory;
  longlong *plVar7;
  undefined1 auStack_98 [32];
  undefined1 *local_78;
  undefined1 local_68 [8];
  ushort *local_60;
  undefined8 local_58;
  longlong *local_50;
  ulonglong local_48;
  
  local_58 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_50 = param_5;
  local_60 = param_2;
  while( true ) {
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar5 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar5;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    iVar5 = isspace((int)*(char *)((longlong)param_3 + 9));
    if ((iVar5 == 0) || (cVar2 = FUN_180653530(param_3,param_4), cVar2 != '\0')) break;
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar5 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
    }
    else {
      *(undefined1 *)(param_3 + 1) = 0;
    }
  }
  if (*(char *)(param_3 + 1) == '\0') {
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar5 == -1))
    {
      *param_3 = 0;
    }
    else {
      *(char *)((longlong)param_3 + 9) = (char)iVar5;
    }
    *(undefined1 *)(param_3 + 1) = 1;
  }
  uVar4 = 0;
  plVar7 = param_5;
  if (0xf < (ulonglong)param_5[3]) {
    plVar7 = (longlong *)*param_5;
  }
  do {
    while( true ) {
      while( true ) {
        plVar6 = param_5;
        if (0xf < (ulonglong)param_5[3]) {
          plVar6 = (longlong *)*param_5;
        }
        if ((plVar7 == (longlong *)(param_5[2] + (longlong)plVar6)) ||
           (cVar2 = FUN_180653530(param_3,param_4), cVar2 != '\0')) {
          *local_60 = 0x578;
          if (uVar4 + 1 < 0x579) {
                    /* WARNING: Subroutine does not return */
            FUN_1805c0310(0x578,uVar4,0);
          }
          if (10000 < uVar4) {
                    /* WARNING: Subroutine does not return */
            FUN_1805c0310(0x578,uVar4,1);
          }
          *local_60 = uVar4;
          if ((ulonglong)param_5[3] < 0x10) {
            param_5[2] = 0;
            param_5[3] = 0xf;
            *(char *)param_5 = '\0';
          }
          pvVar1 = (void *)*param_5;
          _Memory = pvVar1;
          if ((0xfff < param_5[3] + 1U) &&
             (_Memory = *(void **)((longlong)pvVar1 + -8),
             0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(_Memory);
        }
        if ((char)*plVar7 == '%') break;
        if (*(char *)(param_3 + 1) == '\0') {
          if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
               (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
             (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                                ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
             iVar5 == -1)) {
            *param_3 = 0;
          }
          else {
            *(char *)((longlong)param_3 + 9) = (char)iVar5;
          }
          *(undefined1 *)(param_3 + 1) = 1;
        }
        if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
             (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
           (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                              ((basic_streambuf<char,std::char_traits<char>_> *)*param_3),
           iVar5 == -1)) {
          *param_3 = 0;
          *(undefined1 *)(param_3 + 1) = 1;
          plVar7 = (longlong *)((longlong)plVar7 + 1);
        }
        else {
          *(undefined1 *)(param_3 + 1) = 0;
          plVar7 = (longlong *)((longlong)plVar7 + 1);
        }
      }
      cVar2 = *(char *)((longlong)plVar7 + 1);
      if (cVar2 == '%') break;
      if (cVar2 == 'Y') {
        local_68[0] = 0x30;
        local_78 = local_68;
        uVar4 = FUN_180655830(param_3,param_4,param_6,4);
        plVar7 = (longlong *)((longlong)plVar7 + 2);
      }
      else if (cVar2 == 'y') {
        local_68[0] = 0x30;
        local_78 = local_68;
        sVar3 = FUN_180655830(param_3,param_4,param_6,2);
        uVar4 = sVar3 + 2000;
        plVar7 = (longlong *)((longlong)plVar7 + 2);
      }
      else {
LAB_180667dfb:
        plVar7 = (longlong *)((longlong)plVar7 + 2);
      }
    }
    if (*(char *)(param_3 + 1) == '\0') {
      if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
           (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
         (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sgetc
                            ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar5 == -1
         )) {
        *param_3 = 0;
      }
      else {
        *(char *)((longlong)param_3 + 9) = (char)iVar5;
      }
      *(undefined1 *)(param_3 + 1) = 1;
    }
    if (((basic_streambuf<char,std::char_traits<char>_> *)*param_3 ==
         (basic_streambuf<char,std::char_traits<char>_> *)0x0) ||
       (iVar5 = std::basic_streambuf<char,std::char_traits<char>_>::sbumpc
                          ((basic_streambuf<char,std::char_traits<char>_> *)*param_3), iVar5 == -1))
    {
      *param_3 = 0;
      *(undefined1 *)(param_3 + 1) = 1;
      goto LAB_180667dfb;
    }
    *(undefined1 *)(param_3 + 1) = 0;
    plVar7 = (longlong *)((longlong)plVar7 + 2);
  } while( true );
}



############ FUN_ 18066c5e0 size=503 ############

void FUN_18066c5e0(longlong *param_1,longlong param_2,longlong param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  longlong lVar5;
  void *_Memory;
  ulonglong uVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  
  puVar1 = (undefined8 *)param_1[1];
  puVar8 = (undefined8 *)*param_1;
  uVar3 = (param_3 - param_2) / 0x58;
  uVar6 = ((longlong)puVar1 - (longlong)puVar8) / 0x58;
  uVar4 = (param_1[2] - (longlong)puVar8) / 0x58;
  if (uVar4 < uVar3) {
    if (0x2e8ba2e8ba2e8ba < uVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar6 = uVar3;
    if ((uVar4 <= 0x2e8ba2e8ba2e8ba - (uVar4 >> 1)) && (uVar6 = (uVar4 >> 1) + uVar4, uVar6 < uVar3)
       ) {
      uVar6 = uVar3;
    }
    if (puVar8 != (undefined8 *)0x0) {
      for (; puVar8 != puVar1; puVar8 = puVar8 + 0xb) {
        (**(code **)*puVar8)(puVar8,0);
      }
      pvVar2 = (void *)*param_1;
      _Memory = pvVar2;
      if ((0xfff < uVar4 * 0x58) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar6 != 0) {
      if (0x2e8ba2e8ba2e8ba < uVar6) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      lVar5 = FUN_180681960(param_1,uVar6);
      *param_1 = lVar5;
      param_1[1] = lVar5;
      param_1[2] = uVar6 * 0x58 + *param_1;
    }
    lVar5 = FUN_18066e670(param_2,param_3,*param_1,param_1);
    param_1[1] = lVar5;
  }
  else if (uVar6 < uVar3) {
    lVar5 = uVar6 * 0x58 + param_2;
    FUN_18066ce80(param_2,lVar5,puVar8);
    lVar5 = FUN_18066e670(lVar5,param_3,param_1[1],param_1);
    param_1[1] = lVar5;
  }
  else {
    FUN_18066ce80(param_2,param_3,puVar8);
    puVar1 = (undefined8 *)param_1[1];
    for (puVar7 = puVar8 + uVar3 * 0xb; puVar7 != puVar1; puVar7 = puVar7 + 0xb) {
      (**(code **)*puVar7)(puVar7,0);
    }
    param_1[1] = (longlong)(puVar8 + uVar3 * 0xb);
  }
  return;
}



############ FUN_ 18066cf60 size=542 ############

longlong FUN_18066cf60(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  void *_Memory;
  longlong lVar10;
  longlong lVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar2 = *param_1;
  lVar10 = (param_1[1] - lVar2) / 0x88;
  if (lVar10 == 0x1e1e1e1e1e1e1e1) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar10 + 1;
  uVar5 = (param_1[2] - lVar2) / 0x88;
  uVar9 = uVar1;
  if ((uVar5 <= 0x1e1e1e1e1e1e1e1 - (uVar5 >> 1)) && (uVar9 = (uVar5 >> 1) + uVar5, uVar9 < uVar1))
  {
    uVar9 = uVar1;
  }
  lVar6 = FUN_1806818e0(param_1,uVar9);
  lVar7 = ((param_2 - lVar2) / 0x88) * 0x88;
  lVar2 = lVar7 + lVar6 + 0x88;
  lVar10 = lVar2;
  lVar11 = lVar6;
  FUN_180676cd0(lVar7 + lVar6,param_3);
  if (param_2 == param_1[1]) {
    FUN_18066e3f0(*param_1,param_1[1],lVar6,param_1);
  }
  else {
    FUN_180680600(param_1,*param_1,param_2,lVar6,lVar7,lVar10,lVar11,uVar12);
    FUN_180680600(param_1,param_2,param_1[1],lVar2);
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 != (undefined8 *)0x0) {
    puVar3 = (undefined8 *)param_1[1];
    for (; puVar8 != puVar3; puVar8 = puVar8 + 0x11) {
      (**(code **)*puVar8)(puVar8,0);
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x88) * 0x88)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar6;
  param_1[1] = uVar1 * 0x88 + lVar6;
  param_1[2] = uVar9 * 0x88 + lVar6;
  return *param_1 + lVar7;
}



############ FUN_ 18067ff50 size=222 ############

void FUN_18067ff50(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  undefined8 *puVar1;
  void *pvVar2;
  undefined8 *puVar3;
  void *_Memory;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_3 * 0x60 + param_2;
    param_1[2] = param_4 * 0x60 + param_2;
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 0xc) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x60) * 0x60)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18066d410 size=518 ############

longlong FUN_18066d410(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  void *_Memory;
  longlong lVar10;
  longlong lVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar2 = *param_1;
  lVar10 = (param_1[1] - lVar2) / 0x58;
  if (lVar10 == 0x2e8ba2e8ba2e8ba) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar10 + 1;
  uVar5 = (param_1[2] - lVar2) / 0x58;
  uVar9 = uVar1;
  if ((uVar5 <= 0x2e8ba2e8ba2e8ba - (uVar5 >> 1)) && (uVar9 = (uVar5 >> 1) + uVar5, uVar9 < uVar1))
  {
    uVar9 = uVar1;
  }
  lVar6 = FUN_180681960(param_1,uVar9);
  lVar7 = ((param_2 - lVar2) / 0x58) * 0x58;
  lVar2 = lVar7 + lVar6 + 0x58;
  lVar10 = lVar2;
  lVar11 = lVar6;
  FUN_180676fd0(lVar7 + lVar6,param_3);
  if (param_2 == param_1[1]) {
    FUN_18066e470(*param_1,param_1[1],lVar6,param_1);
  }
  else {
    FUN_180680680(param_1,*param_1,param_2,lVar6,lVar7,lVar10,lVar11,uVar12);
    FUN_180680680(param_1,param_2,param_1[1],lVar2);
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 != (undefined8 *)0x0) {
    puVar3 = (undefined8 *)param_1[1];
    for (; puVar8 != puVar3; puVar8 = puVar8 + 0xb) {
      (**(code **)*puVar8)(puVar8,0);
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x58) * 0x58)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar6;
  param_1[1] = uVar1 * 0x58 + lVar6;
  param_1[2] = uVar9 * 0x58 + lVar6;
  return *param_1 + lVar7;
}



############ FUN_ 18066d620 size=542 ############

longlong FUN_18066d620(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  longlong lVar2;
  undefined8 *puVar3;
  void *pvVar4;
  ulonglong uVar5;
  longlong lVar6;
  longlong lVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  void *_Memory;
  longlong lVar10;
  longlong lVar11;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar2 = *param_1;
  lVar10 = (param_1[1] - lVar2) / 0x88;
  if (lVar10 == 0x1e1e1e1e1e1e1e1) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar10 + 1;
  uVar5 = (param_1[2] - lVar2) / 0x88;
  uVar9 = uVar1;
  if ((uVar5 <= 0x1e1e1e1e1e1e1e1 - (uVar5 >> 1)) && (uVar9 = (uVar5 >> 1) + uVar5, uVar9 < uVar1))
  {
    uVar9 = uVar1;
  }
  lVar6 = FUN_1806818e0(param_1,uVar9);
  lVar7 = ((param_2 - lVar2) / 0x88) * 0x88;
  lVar2 = lVar7 + lVar6 + 0x88;
  lVar10 = lVar2;
  lVar11 = lVar6;
  FUN_180677c80(lVar7 + lVar6,param_3);
  if (param_2 == param_1[1]) {
    FUN_18066e720(*param_1,param_1[1],lVar6,param_1);
  }
  else {
    FUN_1806806f0(param_1,*param_1,param_2,lVar6,lVar7,lVar10,lVar11,uVar12);
    FUN_1806806f0(param_1,param_2,param_1[1],lVar2);
  }
  puVar8 = (undefined8 *)*param_1;
  if (puVar8 != (undefined8 *)0x0) {
    puVar3 = (undefined8 *)param_1[1];
    for (; puVar8 != puVar3; puVar8 = puVar8 + 0x11) {
      (**(code **)*puVar8)(puVar8,0);
    }
    pvVar4 = (void *)*param_1;
    _Memory = pvVar4;
    if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar4) / 0x88) * 0x88)) &&
       (_Memory = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar6;
  param_1[1] = uVar1 * 0x88 + lVar6;
  param_1[2] = uVar9 * 0x88 + lVar6;
  return *param_1 + lVar7;
}



############ FUN_ 18066d840 size=546 ############

longlong FUN_18066d840(longlong *param_1,longlong param_2,undefined8 param_3)

{
  ulonglong uVar1;
  undefined8 *puVar2;
  void *pvVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong lVar9;
  undefined8 *puVar10;
  ulonglong uVar11;
  void *_Memory;
  undefined8 uVar12;
  
  uVar12 = 0xfffffffffffffffe;
  lVar7 = *param_1;
  lVar9 = (param_2 - lVar7) + SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_2 - lVar7),8);
  lVar6 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[1] - lVar7),8) +
          (param_1[1] - lVar7);
  lVar6 = (lVar6 >> 7) - (lVar6 >> 0x3f);
  if (lVar6 == 0x186186186186186) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar6 + 1;
  lVar7 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - lVar7),8) +
          (param_1[2] - lVar7);
  uVar8 = (lVar7 >> 7) - (lVar7 >> 0x3f);
  uVar11 = uVar1;
  if ((uVar8 <= 0x186186186186186 - (uVar8 >> 1)) && (uVar11 = (uVar8 >> 1) + uVar8, uVar11 < uVar1)
     ) {
    uVar11 = uVar1;
  }
  lVar4 = FUN_180681a60(param_1,uVar11);
  lVar5 = ((lVar9 >> 7) - (lVar9 >> 0x3f)) * 0xa8;
  lVar9 = lVar5 + lVar4 + 0xa8;
  lVar7 = lVar9;
  lVar6 = lVar4;
  FUN_1805b6190(lVar5 + lVar4,param_3);
  if (param_2 == param_1[1]) {
    FUN_18066e7a0(*param_1,param_1[1],lVar4,param_1);
  }
  else {
    FUN_180680770(param_1,*param_1,param_2,lVar4,lVar5,lVar7,lVar6,uVar12);
    FUN_180680770(param_1,param_2,param_1[1],lVar9);
  }
  puVar10 = (undefined8 *)*param_1;
  if (puVar10 != (undefined8 *)0x0) {
    puVar2 = (undefined8 *)param_1[1];
    for (; puVar10 != puVar2; puVar10 = puVar10 + 0x15) {
      (**(code **)*puVar10)(puVar10,0);
    }
    pvVar3 = (void *)*param_1;
    lVar9 = SUB168(SEXT816(-0x3cf3cf3cf3cf3cf3) * SEXT816(param_1[2] - (longlong)pvVar3),8) +
            (param_1[2] - (longlong)pvVar3);
    _Memory = pvVar3;
    if ((0xfff < (ulonglong)(((lVar9 >> 7) - (lVar9 >> 0x3f)) * 0xa8)) &&
       (_Memory = *(void **)((longlong)pvVar3 + -8),
       0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  *param_1 = lVar4;
  param_1[1] = uVar1 * 0xa8 + lVar4;
  param_1[2] = uVar11 * 0xa8 + lVar4;
  return *param_1 + lVar5;
}



############ FUN_ 18066da70 size=335 ############

void FUN_18066da70(longlong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  void *pvVar3;
  ulonglong uVar4;
  longlong lVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)param_1[1];
  lVar5 = *param_1;
  uVar6 = (longlong)pvVar1 - lVar5;
  uVar2 = param_1[2] - lVar5;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        param_1[1] = lVar5 + param_2;
      }
      return;
    }
    lVar5 = (longlong)pvVar1 + (param_2 - uVar6);
    memset(pvVar1,0,lVar5 - (longlong)pvVar1);
    param_1[1] = lVar5;
    return;
  }
  if (0x7fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar4 = param_2;
  if ((uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1)) &&
     (uVar4 = (uVar2 >> 1) + uVar2, uVar4 < param_2)) {
    uVar4 = param_2;
  }
  pvVar3 = (void *)FUN_1805c7ba0(param_1);
  memset((void *)((longlong)pvVar3 + uVar6),0,param_2 - uVar6);
  memmove(pvVar3,(void *)*param_1,param_1[1] - *param_1);
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = (longlong)pvVar3;
    param_1[1] = (longlong)pvVar3 + param_2;
    param_1[2] = (longlong)pvVar3 + uVar4;
    return;
  }
  pvVar3 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) &&
     (pvVar3 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar3)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar3);
}



############ FUN_ 18066dbd0 size=406 ############

void FUN_18066dbd0(ulonglong *param_1,ulonglong param_2)

{
  void *pvVar1;
  ulonglong uVar2;
  undefined8 *puVar3;
  void *_Memory;
  longlong lVar4;
  ulonglong uVar5;
  longlong lVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  ulonglong uVar9;
  
  puVar3 = (undefined8 *)param_1[1];
  uVar9 = *param_1;
  uVar7 = (longlong)((longlong)puVar3 - uVar9) >> 3;
  uVar2 = (longlong)(param_1[2] - uVar9) >> 3;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar7) {
      if (param_2 != uVar7) {
        param_1[1] = uVar9 + param_2 * 8;
      }
      return;
    }
    lVar6 = param_2 - uVar7;
    lVar4 = lVar6;
    puVar8 = puVar3;
    if (lVar6 != 0) {
      for (; lVar4 != 0; lVar4 = lVar4 + -1) {
        *puVar8 = 0;
        puVar8 = puVar8 + 1;
      }
      puVar3 = puVar3 + lVar6;
    }
    param_1[1] = (ulonglong)puVar3;
    return;
  }
  if (0x1fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar2 <= 0x1fffffffffffffff - (uVar2 >> 1)) &&
     (uVar9 = (uVar2 >> 1) + uVar2, uVar9 < param_2)) {
    uVar9 = param_2;
  }
  uVar2 = FUN_1805bcb90(param_1,uVar9);
  puVar3 = (undefined8 *)(uVar2 + uVar7 * 8);
  lVar4 = param_2 - uVar7;
  if (lVar4 != 0) {
    for (; lVar4 != 0; lVar4 = lVar4 + -1) {
      *puVar3 = 0;
      puVar3 = puVar3 + 1;
    }
  }
  puVar3 = (undefined8 *)*param_1;
  uVar5 = 0;
  uVar7 = (param_1[1] - (longlong)puVar3) + 7 >> 3;
  if ((undefined8 *)param_1[1] < puVar3) {
    uVar7 = uVar5;
  }
  if (uVar7 != 0) {
    lVar4 = uVar2 - (longlong)puVar3;
    do {
      *(undefined8 *)((longlong)puVar3 + lVar4) = *puVar3;
      puVar3 = puVar3 + 1;
      uVar5 = uVar5 + 1;
    } while (uVar5 != uVar7);
  }
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = uVar2;
    param_1[1] = uVar2 + param_2 * 8;
    param_1[2] = uVar2 + uVar9 * 8;
    return;
  }
  _Memory = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8)) &&
     (_Memory = *(void **)((longlong)pvVar1 - 8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18066dd70 size=539 ############

void FUN_18066dd70(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  longlong lVar4;
  longlong lVar5;
  longlong lVar6;
  undefined8 *puVar7;
  undefined8 *puVar8;
  undefined8 *puVar9;
  void *_Memory;
  ulonglong uVar10;
  undefined8 local_res18;
  ulonglong local_res20;
  undefined8 uVar11;
  
  uVar11 = 0xfffffffffffffffe;
  puVar7 = (undefined8 *)param_1[1];
  lVar5 = *param_1;
  uVar3 = ((longlong)puVar7 - lVar5) / 0x58;
  uVar2 = (param_1[2] - lVar5) / 0x58;
  local_res18 = param_3;
  if (param_2 <= uVar2) {
    if (uVar3 < param_2) {
      lVar5 = FUN_18067def0(&local_res18,puVar7,param_2 - uVar3);
      param_1[1] = lVar5;
      return;
    }
    if (param_2 != uVar3) {
      puVar9 = (undefined8 *)(param_2 * 0x58 + lVar5);
      for (puVar8 = puVar9; puVar8 != puVar7; puVar8 = puVar8 + 0xb) {
        (**(code **)*puVar8)(puVar8,0);
      }
      param_1[1] = (longlong)puVar9;
    }
    return;
  }
  if (0x2e8ba2e8ba2e8ba < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar2 <= 0x2e8ba2e8ba2e8ba - (uVar2 >> 1)) &&
     (uVar10 = (uVar2 >> 1) + uVar2, uVar10 < param_2)) {
    uVar10 = param_2;
  }
  local_res20 = uVar10;
  lVar4 = FUN_180681960(param_1,uVar10);
  lVar6 = uVar3 * 0x58 + lVar4;
  lVar5 = lVar4;
  FUN_18067def0(&local_res18,lVar6,param_2 - uVar3);
  FUN_18066e670(*param_1,param_1[1],lVar4,param_1,lVar6,lVar5,uVar11);
  puVar7 = (undefined8 *)*param_1;
  if (puVar7 == (undefined8 *)0x0) {
    *param_1 = lVar4;
    param_1[1] = param_2 * 0x58 + lVar4;
    param_1[2] = uVar10 * 0x58 + lVar4;
    return;
  }
  puVar8 = (undefined8 *)param_1[1];
  for (; puVar7 != puVar8; puVar7 = puVar7 + 0xb) {
    (**(code **)*puVar7)(puVar7,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x58) * 0x58)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18066df90 size=558 ############

void FUN_18066df90(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  ulonglong uVar2;
  longlong lVar3;
  longlong lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  void *_Memory;
  ulonglong uVar8;
  ulonglong uVar9;
  undefined8 uVar10;
  
  uVar10 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)param_1[1];
  lVar3 = *param_1;
  lVar4 = ((longlong)puVar5 - lVar3) / 0x26 + ((longlong)puVar5 - lVar3 >> 0x3f);
  uVar8 = (lVar4 >> 3) - (lVar4 >> 0x3f);
  uVar2 = (param_1[2] - lVar3) / 0x130;
  if (param_2 <= uVar2) {
    if (param_2 <= uVar8) {
      if (param_2 != uVar8) {
        puVar7 = (undefined8 *)(param_2 * 0x130 + lVar3);
        for (puVar6 = puVar7; puVar6 != puVar5; puVar6 = puVar6 + 0x26) {
          (**(code **)*puVar6)(puVar6,0);
        }
        param_1[1] = (longlong)puVar7;
      }
      return;
    }
    lVar3 = FUN_18066e820(puVar5,param_2 - uVar8,param_3,0);
    param_1[1] = lVar3;
    return;
  }
  if (0xd79435e50d7943 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar2 <= 0xd79435e50d7943 - (uVar2 >> 1)) && (uVar9 = (uVar2 >> 1) + uVar2, uVar9 < param_2))
  {
    uVar9 = param_2;
  }
  lVar3 = FUN_1806819e0(param_1,uVar9);
  lVar4 = uVar8 * 0x130 + lVar3;
  FUN_18066e820(lVar4,param_2 - uVar8,param_3,0,lVar4,lVar3,uVar10);
  FUN_18066e4e0(*param_1,param_1[1],lVar3,param_1);
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 == (undefined8 *)0x0) {
    *param_1 = lVar3;
    param_1[1] = param_2 * 0x130 + lVar3;
    param_1[2] = uVar9 * 0x130 + lVar3;
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar5 != puVar6; puVar5 = puVar5 + 0x26) {
    (**(code **)*puVar5)(puVar5,0);
  }
  pvVar1 = (void *)*param_1;
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar1) / 0x130) * 0x130)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806799d0 size=440 ############

void FUN_1806799d0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::AuthSummary::vftable;
  param_1[0xf4] = pace::eden::thrift::authorize::AuthIdentifier::vftable;
  FUN_1805b8100(param_1 + 0x175);
  FUN_1805b8100(param_1 + 0x135);
  FUN_1805b8100(param_1 + 0xf5);
  FUN_180679b90(param_1 + 0xd9);
  if (0xf < (ulonglong)param_1[0xd8]) {
    pvVar1 = (void *)param_1[0xd5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xd7] = 0;
  param_1[0xd8] = 0xf;
  *(undefined1 *)(param_1 + 0xd5) = 0;
  FUN_1806798f0(param_1 + 0xcb);
  if (0xf < (ulonglong)param_1[0xca]) {
    pvVar1 = (void *)param_1[199];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xca] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc9] = 0;
  param_1[0xca] = 0xf;
  *(undefined1 *)(param_1 + 199) = 0;
  if ((ulonglong)param_1[0xc6] < 0x10) {
    param_1[0xc5] = 0;
    param_1[0xc6] = 0xf;
    *(undefined1 *)(param_1 + 0xc3) = 0;
    param_1[1] = pace::eden::thrift::authorize::AuthIdentifier::vftable;
    FUN_1805b8100(param_1 + 0x82);
    FUN_1805b8100(param_1 + 0x42);
    FUN_1805b8100(param_1 + 2);
    return;
  }
  pvVar1 = (void *)param_1[0xc3];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[0xc6] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067cc20 size=374 ############

void FUN_18067cc20(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::PreferenceInfo::vftable;
  FUN_18067cda0(param_1 + 0x13);
  if (0xf < (ulonglong)param_1[0x12]) {
    pvVar1 = (void *)param_1[0xf];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x12] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x12] = 0xf;
  param_1[0x11] = 0;
  *(undefined1 *)(param_1 + 0xf) = 0;
  if (0xf < (ulonglong)param_1[0xe]) {
    pvVar1 = (void *)param_1[0xb];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xe] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xd] = 0;
  param_1[0xe] = 0xf;
  *(undefined1 *)(param_1 + 0xb) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067cda0 size=305 ############

void FUN_18067cda0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::PreferenceValues::vftable;
  FUN_1805bc040(param_1 + 0xe);
  pvVar1 = (void *)param_1[0xb];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0xd] - (longlong)pvVar1 & 0xfffffffffffffff8U)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[8];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[10] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[5];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[7] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[1];
  if (pvVar1 == (void *)0x0) {
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (param_1[3] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067cf10 size=362 ############

void FUN_18067cf10(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::RemoteServerNotification::vftable;
  if (0xf < (ulonglong)param_1[0x11]) {
    pvVar1 = (void *)param_1[0xe];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x11] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x11] = 0xf;
  param_1[0x10] = 0;
  *(undefined1 *)(param_1 + 0xe) = 0;
  if (0xf < (ulonglong)param_1[0xd]) {
    pvVar1 = (void *)param_1[10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xd] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xc] = 0;
  param_1[0xd] = 0xf;
  *(undefined1 *)(param_1 + 10) = 0;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    return;
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067d390 size=308 ############

void FUN_18067d390(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::authorize::floating::ServerConnectInfo::vftable;
  if (0xf < (ulonglong)param_1[0x29]) {
    pvVar1 = (void *)param_1[0x26];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x29] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x28] = 0;
  param_1[0x29] = 0xf;
  *(undefined1 *)(param_1 + 0x26) = 0;
  FUN_18067d4d0(param_1 + 0x17);
  FUN_18067d4d0(param_1 + 10);
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067d650 size=568 ############

void FUN_18067d650(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::SignerCredentials::vftable;
  pvVar1 = (void *)param_1[0xa3];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (param_1[0xa5] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  if (0xf < (ulonglong)param_1[0xa2]) {
    pvVar1 = (void *)param_1[0x9f];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xa2] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xa1] = 0;
  param_1[0xa2] = 0xf;
  *(undefined1 *)(param_1 + 0x9f) = 0;
  if (0xf < (ulonglong)param_1[0x9e]) {
    pvVar1 = (void *)param_1[0x9b];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x9e] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x9d] = 0;
  param_1[0x9e] = 0xf;
  *(undefined1 *)(param_1 + 0x9b) = 0;
  if (0xf < (ulonglong)param_1[0x99]) {
    pvVar1 = (void *)param_1[0x96];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x99] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x98] = 0;
  param_1[0x99] = 0xf;
  *(undefined1 *)(param_1 + 0x96) = 0;
  if (0xf < (ulonglong)param_1[0x94]) {
    pvVar1 = (void *)param_1[0x91];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x94] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x93] = 0;
  param_1[0x94] = 0xf;
  *(undefined1 *)(param_1 + 0x91) = 0;
  pvVar1 = (void *)param_1[0x8e];
  if (pvVar1 == (void *)0x0) {
    FUN_1805b8780(param_1 + 1);
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x90] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067d900 size=651 ############

void FUN_18067d900(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::UserInfo::vftable;
  if (0xf < (ulonglong)param_1[0x1c]) {
    pvVar1 = (void *)param_1[0x19];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1c] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1c] = 0xf;
  param_1[0x1b] = 0;
  *(undefined1 *)(param_1 + 0x19) = 0;
  if (0xf < (ulonglong)param_1[0x18]) {
    pvVar1 = (void *)param_1[0x15];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x18] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x17] = 0;
  param_1[0x18] = 0xf;
  *(undefined1 *)(param_1 + 0x15) = 0;
  if (0xf < (ulonglong)param_1[0x14]) {
    pvVar1 = (void *)param_1[0x11];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x14] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x13] = 0;
  param_1[0x14] = 0xf;
  *(undefined1 *)(param_1 + 0x11) = 0;
  if (0xf < (ulonglong)param_1[0x10]) {
    pvVar1 = (void *)param_1[0xd];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x10] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xf] = 0;
  param_1[0x10] = 0xf;
  *(undefined1 *)(param_1 + 0xd) = 0;
  if (0xf < (ulonglong)param_1[0xc]) {
    pvVar1 = (void *)param_1[9];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xc] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xb] = 0;
  param_1[0xc] = 0xf;
  *(undefined1 *)(param_1 + 9) = 0;
  if (0xf < (ulonglong)param_1[8]) {
    pvVar1 = (void *)param_1[5];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[8] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined1 *)(param_1 + 5) = 0;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    return;
  }
  pvVar1 = (void *)param_1[1];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067dfd0 size=90 ############

undefined8 * FUN_18067dfd0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthIdentifier::vftable;
  FUN_1805b8100(param_1 + 0x81);
  FUN_1805b8100(param_1 + 0x41);
  FUN_1805b8100(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e030 size=52 ############

void * FUN_18067e030(void *param_1,ulonglong param_2)

{
  FUN_1806798f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e070 size=43 ############

undefined8 * FUN_18067e070(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::pub::AuthProduct::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e0a0 size=107 ############

undefined8 * FUN_18067e0a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::pub::AuthStorage::vftable;
  FUN_1806802c0(param_1 + 10);
  FUN_180680380(param_1 + 7);
  FUN_180680200(param_1 + 4);
  FUN_180680130(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e110 size=52 ############

void * FUN_18067e110(void *param_1,ulonglong param_2)

{
  FUN_1806799d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e150 size=52 ############

void * FUN_18067e150(void *param_1,ulonglong param_2)

{
  FUN_180679b90();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e190 size=110 ############

undefined8 * FUN_18067e190(undefined8 *param_1,ulonglong param_2)

{
  undefined8 *_Memory;
  
  _Memory = param_1 + -8;
  FUN_180679c70(param_1);
  param_1[2] = pace::eden::thrift::authorize::AuthorizationFullIf::vftable;
  *(undefined ***)((longlong)*(int *)(param_1[3] + 4) + 0x58 + (longlong)_Memory) =
       pace::eden::thrift::authorize::AuthorizationFullIf::vftable;
  *param_1 = pace::eden::thrift::authorize::AuthorizationLiteIf::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  return _Memory;
}



############ FUN_ 18067e200 size=68 ############

void * FUN_18067e200(longlong param_1,ulonglong param_2)

{
  *(undefined ***)(param_1 + -0x10) = pace::eden::thrift::authorize::AuthorizationFullIf::vftable;
  *(undefined ***)((longlong)*(int *)(*(longlong *)(param_1 + -8) + 4) + -8 + param_1) =
       pace::eden::thrift::authorize::AuthorizationFullIf::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free((void *)(param_1 + -0x10));
  }
  return (void *)(param_1 + -0x10);
}



############ FUN_ 18067e250 size=79 ############

undefined8 * FUN_18067e250(undefined8 *param_1,ulonglong param_2)

{
  FUN_180679c70(param_1);
  *param_1 = pace::eden::thrift::authorize::AuthorizationLiteIf::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1 + -8);
  }
  return param_1 + -8;
}



############ FUN_ 18067e2a0 size=43 ############

undefined8 * FUN_18067e2a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLiteIf::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e2d0 size=52 ############

void * FUN_18067e2d0(void *param_1,ulonglong param_2)

{
  FUN_180679d10();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e310 size=66 ############

undefined8 * FUN_18067e310(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::CacheProductLocationDataInput::vftable;
  FUN_1805753e0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e360 size=43 ############

undefined8 * FUN_18067e360(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::CacheProductLocationDataReturn::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e390 size=262 ############

undefined8 * FUN_18067e390(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::CachedProductLocationData::vftable;
  if (0xf < (ulonglong)param_1[0x38]) {
    pvVar1 = (void *)param_1[0x35];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x38] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x37] = 0;
  param_1[0x38] = 0xf;
  *(undefined1 *)(param_1 + 0x35) = 0;
  param_1[0x32] = pace::eden::thrift::pub::AuthProduct::vftable;
  FUN_180574c80(param_1 + 7);
  if ((ulonglong)param_1[6] < 0x10) {
    param_1[5] = 0;
    param_1[6] = 0xf;
    *(undefined1 *)(param_1 + 3) = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)param_1[3];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[6] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067e4a0 size=52 ############

void * FUN_18067e4a0(void *param_1,ulonglong param_2)

{
  FUN_18067acf0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e4e0 size=52 ############

void * FUN_18067e4e0(void *param_1,ulonglong param_2)

{
  FUN_18067ad70();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e520 size=77 ############

undefined8 * FUN_18067e520(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::ChangePreferencesInput::vftable;
  FUN_1806804d0(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e570 size=43 ############

undefined8 * FUN_18067e570(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::ChangePreferencesReturn::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e5a0 size=43 ############

undefined8 * FUN_18067e5a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::CloseEncryptedChannelInput::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e5d0 size=43 ############

undefined8 * FUN_18067e5d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::CloseEncryptedChannelReturn::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e600 size=139 ############

undefined8 * FUN_18067e600(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::fusion::CloudSessionStatusResults::vftable;
  if ((ulonglong)param_1[4] < 0x10) {
    param_1[3] = 0;
    param_1[4] = 0xf;
    *(undefined1 *)(param_1 + 1) = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)param_1[1];
  _Memory = pvVar1;
  if ((0xfff < param_1[4] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067e690 size=87 ############

undefined8 * FUN_18067e690(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::CommitDatabaseItemsInput::vftable;
  FUN_1806798f0(param_1 + 4);
  FUN_1806802c0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e6f0 size=43 ############

undefined8 * FUN_18067e6f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::CommitDatabaseItemsReturn::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e720 size=52 ############

void * FUN_18067e720(void *param_1,ulonglong param_2)

{
  FUN_18067ae90();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e760 size=52 ############

void * FUN_18067e760(void *param_1,ulonglong param_2)

{
  FUN_18067afa0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e7a0 size=66 ############

undefined8 * FUN_18067e7a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DirectLocationConnectionInfo::vftable;
  FUN_180575070(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e7f0 size=52 ############

void * FUN_18067e7f0(void *param_1,ulonglong param_2)

{
  FUN_18067b080();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e830 size=66 ############

undefined8 * FUN_18067e830(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DlcCloudAuthKeyExchangeReturn::vftable;
  FUN_1805b7d00(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e880 size=78 ############

undefined8 * FUN_18067e880(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DlcHostAuthKeyExchangeInput::vftable;
  FUN_1805b7c40(param_1 + 0x60);
  FUN_1805753e0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e8d0 size=66 ############

undefined8 * FUN_18067e8d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DlcHostAuthKeyExchangeReturn::vftable;
  FUN_1805b7d00(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067e920 size=139 ############

undefined8 * FUN_18067e920(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *_Memory;
  
  *param_1 = pace::eden::thrift::authorize::DldLastAuthChangeDate::vftable;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)param_1[2];
  _Memory = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18067e9b0 size=78 ############

undefined8 * FUN_18067e9b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DynamicCryptoCloudKeyExchangeInput::vftable;
  FUN_1805b7dc0(param_1 + 0x60);
  FUN_1805753e0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ea00 size=66 ############

undefined8 * FUN_18067ea00(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DynamicCryptoCloudKeyExchangeReturn::vftable;
  FUN_1805b7e80(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ea50 size=78 ############

undefined8 * FUN_18067ea50(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DynamicCryptoHostAuthKeyExchangeInput::vftable;
  FUN_1805b7dc0(param_1 + 0x60);
  FUN_1805753e0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067eaa0 size=66 ############

undefined8 * FUN_18067eaa0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::DynamicCryptoHostAuthKeyExchangeReturn::vftable;
  FUN_1805b7e80(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067eaf0 size=75 ############

undefined8 * FUN_18067eaf0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0xb);
  FUN_18067b220(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067eb40 size=52 ############

void * FUN_18067eb40(void *param_1,ulonglong param_2)

{
  FUN_18067b220();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067eb80 size=52 ############

void * FUN_18067eb80(void *param_1,ulonglong param_2)

{
  FUN_18067b2e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ebc0 size=52 ############

void * FUN_18067ebc0(void *param_1,ulonglong param_2)

{
  FUN_18067b450();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ec00 size=87 ############

undefined8 * FUN_18067ec00(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::FindAuthChainsReturn::vftable;
  FUN_180575f30(param_1 + 4);
  FUN_1805bc0b0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ec60 size=77 ############

undefined8 * FUN_18067ec60(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::FindPreferencesInput::vftable;
  FUN_180680380(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ecb0 size=77 ############

undefined8 * FUN_18067ecb0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::FindPreferencesReturn::vftable;
  FUN_1806804d0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ed00 size=52 ############

void * FUN_18067ed00(void *param_1,ulonglong param_2)

{
  FUN_18067b5f0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ed40 size=66 ############

undefined8 * FUN_18067ed40(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::FindSoftwareLicensesReturn::vftable;
  FUN_18067c110(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ed90 size=43 ############

undefined8 * FUN_18067ed90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::GetAuthorizationServerInfoInput::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067edc0 size=52 ############

void * FUN_18067edc0(void *param_1,ulonglong param_2)

{
  FUN_18067b6e0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ee00 size=52 ############

void * FUN_18067ee00(void *param_1,ulonglong param_2)

{
  FUN_18067b840();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ee40 size=52 ############

void * FUN_18067ee40(void *param_1,ulonglong param_2)

{
  FUN_18067b930();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ee80 size=43 ############

undefined8 * FUN_18067ee80(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::GetLocationTypesFromLocationGroupInput::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067eeb0 size=77 ############

undefined8 * FUN_18067eeb0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::GetLocationTypesFromLocationGroupReturn::vftable;
  param_1[2] = pace::eden::thrift::fusion::LocationGroupAttributes::vftable;
  FUN_1805bc040(param_1 + 7);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ef00 size=52 ############

void * FUN_18067ef00(void *param_1,ulonglong param_2)

{
  FUN_18067bab0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ef40 size=75 ############

undefined8 * FUN_18067ef40(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityActivationInfo::vftable;
  FUN_180678340(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ef90 size=75 ############

undefined8 * FUN_18067ef90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityArrayEntry::vftable;
  FUN_180678410(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067efe0 size=75 ############

undefined8 * FUN_18067efe0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityAssociativeArray::vftable;
  FUN_1806784e0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f030 size=75 ############

undefined8 * FUN_18067f030(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityAuthDef::vftable;
  FUN_1806785b0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f080 size=75 ############

undefined8 * FUN_18067f080(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityAuthKey::vftable;
  FUN_180678680(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f0d0 size=75 ############

undefined8 * FUN_18067f0d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityAuthManifestElement::vftable;
  FUN_180678750(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f120 size=75 ############

undefined8 * FUN_18067f120(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityAuthRelation::vftable;
  FUN_180678820(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f170 size=75 ############

undefined8 * FUN_18067f170(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityAuthorization::vftable;
  FUN_1806788f0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f1c0 size=75 ############

undefined8 * FUN_18067f1c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityCertificateChain::vftable;
  FUN_1806789c0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f210 size=75 ############

undefined8 * FUN_18067f210(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityCountLimit::vftable;
  FUN_180678a90(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f260 size=75 ############

undefined8 * FUN_18067f260(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityDatabaseInfo::vftable;
  FUN_180678b60(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f2b0 size=75 ############

undefined8 * FUN_18067f2b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityDeveloperBlock::vftable;
  FUN_180678c30(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f300 size=75 ############

undefined8 * FUN_18067f300(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityExpirationWarning::vftable;
  FUN_180678dc0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f350 size=75 ############

undefined8 * FUN_18067f350(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityIlok::vftable;
  FUN_1806789c0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f3a0 size=75 ############

undefined8 * FUN_18067f3a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityIlokAuth::vftable;
  FUN_180678e90(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f3f0 size=75 ############

undefined8 * FUN_18067f3f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityLicense::vftable;
  FUN_180678b60(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f440 size=75 ############

undefined8 * FUN_18067f440(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityLocalizedText::vftable;
  FUN_180678f60(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f490 size=75 ############

undefined8 * FUN_18067f490(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityMachineBinding::vftable;
  FUN_180679030(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f4e0 size=75 ############

undefined8 * FUN_18067f4e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityMachineId::vftable;
  FUN_180679100(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f530 size=75 ############

undefined8 * FUN_18067f530(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityParticipant::vftable;
  FUN_1806791d0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f580 size=75 ############

undefined8 * FUN_18067f580(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityPreference::vftable;
  FUN_1806792a0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f5d0 size=75 ############

undefined8 * FUN_18067f5d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntitySignature::vftable;
  FUN_180679390(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f620 size=75 ############

undefined8 * FUN_18067f620(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntitySignedDigest::vftable;
  FUN_180679460(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f670 size=75 ############

undefined8 * FUN_18067f670(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntitySignedInfo::vftable;
  FUN_180679530(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f6c0 size=75 ############

undefined8 * FUN_18067f6c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityTimeLimit::vftable;
  FUN_180678410(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f710 size=75 ############

undefined8 * FUN_18067f710(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityUser::vftable;
  FUN_180679600(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f760 size=75 ############

undefined8 * FUN_18067f760(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityZZTest::vftable;
  FUN_1806797a0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f7b0 size=75 ############

undefined8 * FUN_18067f7b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityZZTestOnlyV1::vftable;
  FUN_1806796d0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f800 size=75 ############

undefined8 * FUN_18067f800(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityZZTestOnlyV2::vftable;
  FUN_1806796d0(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f850 size=75 ############

undefined8 * FUN_18067f850(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityZZTestToMany::vftable;
  FUN_180679030(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f8a0 size=75 ############

undefined8 * FUN_18067f8a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = license_services::LsEntityZZTestToOne::vftable;
  FUN_180679390(param_1 + 8);
  FUN_18067c620(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f8f0 size=52 ############

void * FUN_18067f8f0(void *param_1,ulonglong param_2)

{
  FUN_18067c110();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f930 size=52 ############

void * FUN_18067f930(void *param_1,ulonglong param_2)

{
  FUN_18067c620();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f970 size=52 ############

void * FUN_18067f970(void *param_1,ulonglong param_2)

{
  FUN_18067c6a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f9b0 size=52 ############

void * FUN_18067f9b0(void *param_1,ulonglong param_2)

{
  FUN_18067c7b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067f9f0 size=52 ############

void * FUN_18067f9f0(void *param_1,ulonglong param_2)

{
  FUN_18067c9c0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fa30 size=52 ############

void * FUN_18067fa30(void *param_1,ulonglong param_2)

{
  FUN_18067cad0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fa70 size=97 ############

undefined8 * FUN_18067fa70(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  param_1[7] = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0x12);
  FUN_18067b220(param_1 + 8);
  FUN_1805d66b0(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fae0 size=52 ############

void * FUN_18067fae0(void *param_1,ulonglong param_2)

{
  FUN_18067cc20();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fb20 size=224 ############

undefined8 * FUN_18067fb20(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::PreferenceSearch::vftable;
  if (0xf < (ulonglong)param_1[9]) {
    pvVar1 = (void *)param_1[6];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[9] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined1 *)(param_1 + 6) = 0;
  if ((ulonglong)param_1[5] < 0x10) {
    param_1[4] = 0;
    param_1[5] = 0xf;
    *(undefined1 *)(param_1 + 2) = 0;
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar1 = (void *)param_1[2];
  pvVar2 = pvVar1;
  if ((0xfff < param_1[5] + 1) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 18067fc10 size=52 ############

void * FUN_18067fc10(void *param_1,ulonglong param_2)

{
  FUN_18067cda0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fc50 size=52 ############

void * FUN_18067fc50(void *param_1,ulonglong param_2)

{
  FUN_18067cf10();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fc90 size=43 ############

undefined8 * FUN_18067fc90(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::ReportStaleCachedAuthEntryInput::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fcc0 size=43 ############

undefined8 * FUN_18067fcc0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::ReportStaleCachedAuthEntryReturn::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fcf0 size=52 ############

void * FUN_18067fcf0(void *param_1,ulonglong param_2)

{
  FUN_18067d0a0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fd30 size=52 ############

void * FUN_18067fd30(void *param_1,ulonglong param_2)

{
  FUN_18067d1b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fd70 size=52 ############

void * FUN_18067fd70(void *param_1,ulonglong param_2)

{
  FUN_18067d320();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fdb0 size=52 ############

void * FUN_18067fdb0(void *param_1,ulonglong param_2)

{
  FUN_18067d390();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fdf0 size=52 ############

void * FUN_18067fdf0(void *param_1,ulonglong param_2)

{
  FUN_18067d4d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fe30 size=52 ############

void * FUN_18067fe30(void *param_1,ulonglong param_2)

{
  FUN_18067d650();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fe70 size=66 ############

undefined8 * FUN_18067fe70(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::StartRelativeTimeLimitInput::vftable;
  FUN_1805753e0(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067fec0 size=66 ############

undefined8 * FUN_18067fec0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::StartRelativeTimeLimitReturn::vftable;
  FUN_1805b9270(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18067ff10 size=52 ############

void * FUN_18067ff10(void *param_1,ulonglong param_2)

{
  FUN_18067d900();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180812540 size=180 ############

void FUN_180812540(longlong *param_1,longlong param_2,longlong param_3,longlong param_4)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  undefined8 *puVar3;
  
  puVar3 = (undefined8 *)*param_1;
  if (puVar3 == (undefined8 *)0x0) {
    *param_1 = param_2;
    param_1[1] = param_3 * 0x20 + param_2;
    param_1[2] = param_4 * 0x20 + param_2;
    return;
  }
  puVar1 = (undefined8 *)param_1[1];
  for (; puVar3 != puVar1; puVar3 = puVar3 + 4) {
    (**(code **)*puVar3)(puVar3,0);
  }
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (param_1[2] - (longlong)pvVar2 & 0xffffffffffffffe0U)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18074fb70 size=802 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18074fb70(facet *param_1,__uint64 param_2)

{
  facet *pfVar1;
  uint *puVar2;
  void *pvVar3;
  void *_Memory;
  ulonglong uVar4;
  char *pcVar5;
  longlong lVar6;
  undefined1 auStack_78 [32];
  facet *local_58;
  undefined8 local_50;
  facet *local_48;
  uint local_40;
  uint uStack_3c;
  uint uStack_38;
  uint uStack_34;
  undefined8 local_30;
  ulonglong uStack_28;
  ulonglong local_20;
  
  local_50 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_48 = param_1;
  std::locale::facet::facet(param_1,param_2);
  *(undefined ***)param_1 =
       boost::date_time::
       date_facet<boost::gregorian::date,char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>
       ::vftable;
  *(undefined8 *)(param_1 + 0x20) = 0;
  *(undefined8 *)(param_1 + 0x28) = 0xf;
  param_1[0x10] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = "Y-%b-%d" + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  *(undefined8 *)(param_1 + 0x40) = 0;
  *(undefined8 *)(param_1 + 0x48) = 0xf;
  param_1[0x30] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = &DAT_181bbad3d + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  *(undefined8 *)(param_1 + 0x60) = 0;
  *(undefined8 *)(param_1 + 0x68) = 0xf;
  param_1[0x50] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = &DAT_181bbad35 + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  local_58 = param_1 + 0x70;
  *(undefined4 *)local_58 = 1;
  *(undefined8 *)(param_1 + 0x88) = 0;
  *(undefined8 *)(param_1 + 0x90) = 0xf;
  param_1[0x78] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = &DAT_181bbad9d + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  *(undefined8 *)(param_1 + 0xa8) = 0;
  *(undefined8 *)(param_1 + 0xb0) = 0xf;
  param_1[0x98] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = &DAT_181bbada1 + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  *(undefined8 *)(param_1 + 200) = 0;
  *(undefined8 *)(param_1 + 0xd0) = 0xf;
  param_1[0xb8] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = &DAT_181bbada5 + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  *(undefined8 *)(param_1 + 0xe8) = 0;
  *(undefined8 *)(param_1 + 0xf0) = 0xf;
  param_1[0xd8] = (facet)0x0;
  lVar6 = -1;
  do {
    pcVar5 = &DAT_181bbada9 + lVar6;
    lVar6 = lVar6 + 1;
  } while (*pcVar5 != '\0');
  FUN_1805a6cb0();
  FUN_180658d50(param_1 + 0xf8);
  pfVar1 = param_1 + 0x110;
  *(undefined8 *)pfVar1 = 0;
  *(undefined8 *)(param_1 + 0x118) = 0;
  *(undefined8 *)(param_1 + 0x120) = 0;
  pcVar5 = "not-a-date-time";
  local_58 = pfVar1;
  while( true ) {
    local_30 = 0;
    uStack_28 = 0xf;
    local_40 = local_40 & 0xffffff00;
    lVar6 = -1;
    do {
      lVar6 = lVar6 + 1;
    } while (pcVar5[lVar6] != '\0');
    FUN_1805a6cb0(&local_40,pcVar5);
    if (*(longlong *)(param_1 + 0x120) == *(longlong *)(param_1 + 0x118)) {
      FUN_1805cfbf0(pfVar1,*(undefined8 *)(param_1 + 0x118),&local_40);
      uVar4 = uStack_28;
    }
    else {
      puVar2 = *(uint **)(param_1 + 0x118);
      *puVar2 = local_40;
      puVar2[1] = uStack_3c;
      puVar2[2] = uStack_38;
      puVar2[3] = uStack_34;
      *(undefined8 *)(puVar2 + 4) = local_30;
      *(ulonglong *)(puVar2 + 6) = uStack_28;
      local_40 = local_40 & 0xffffff00;
      *(longlong *)(param_1 + 0x118) = *(longlong *)(param_1 + 0x118) + 0x20;
      uVar4 = 0xf;
    }
    if (0xf < uVar4) break;
    pcVar5 = pcVar5 + 0x11;
    if (pcVar5 == "") {
      *(undefined8 *)(param_1 + 0x128) = 0;
      *(undefined8 *)(param_1 + 0x130) = 0;
      *(undefined8 *)(param_1 + 0x138) = 0;
      *(undefined8 *)(param_1 + 0x140) = 0;
      *(undefined8 *)(param_1 + 0x148) = 0;
      *(undefined8 *)(param_1 + 0x150) = 0;
      *(undefined8 *)(param_1 + 0x158) = 0;
      *(undefined8 *)(param_1 + 0x160) = 0;
      *(undefined8 *)(param_1 + 0x168) = 0;
      *(undefined8 *)(param_1 + 0x170) = 0;
      *(undefined8 *)(param_1 + 0x178) = 0;
      *(undefined8 *)(param_1 + 0x180) = 0;
    }
  }
  pvVar3 = (void *)CONCAT44(uStack_3c,local_40);
  _Memory = pvVar3;
  if ((0xfff < uVar4 + 1) &&
     (_Memory = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18069ce00 size=591 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18069ce00(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  void *pvVar5;
  longlong lVar6;
  undefined8 *puVar7;
  HANDLE hEvent;
  uint *puVar8;
  void *_Memory;
  undefined1 auStack_148 [32];
  undefined8 *local_128;
  longlong local_120;
  undefined8 local_118;
  undefined8 local_108;
  longlong *plStack_100;
  undefined8 local_f8;
  longlong local_f0;
  undefined8 local_e8;
  longlong local_e0;
  int *local_d8;
  char local_d0;
  undefined8 local_c8;
  longlong *plStack_c0;
  undefined8 local_b8;
  undefined **local_a8;
  undefined8 local_a0 [2];
  undefined8 local_90;
  ulonglong local_88;
  undefined **local_80;
  undefined4 local_78;
  undefined8 local_70;
  undefined2 local_68;
  undefined2 local_60;
  ulonglong local_58;
  
  local_b8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_148;
  local_a8 = pace::eden::thrift::authorize::AuthLocation::vftable;
  local_90 = 0;
  local_88 = 0xf;
  local_a0[0]._0_1_ = 0;
  FUN_1805a6cb0(local_a0,&DAT_181baf991,0);
  local_80 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  local_70 = 0;
  local_68 = 0;
  local_78 = 1;
  local_60 = 0;
  lVar6 = FUN_1807064c0();
  puVar7 = (undefined8 *)(lVar6 + 0x40);
  if (local_a0 != puVar7) {
    if (0xf < *(ulonglong *)(lVar6 + 0x58)) {
      puVar7 = (undefined8 *)*puVar7;
    }
    FUN_1805a6cb0(local_a0,puVar7,*(undefined8 *)(lVar6 + 0x50));
  }
  local_78 = 1;
  local_70 = *(undefined8 *)(param_2 + 0x70);
  local_60 = CONCAT11(1,(undefined1)local_60);
  FUN_1805b45f0(&local_d8,param_1 + 0x18);
  local_f8 = *(undefined8 *)(param_1 + 0x48);
  local_f0 = *(longlong *)(param_1 + 0x50);
  if (local_f0 != 0) {
    LOCK();
    *(int *)(local_f0 + 8) = *(int *)(local_f0 + 8) + 1;
    UNLOCK();
  }
  local_e8 = *(undefined8 *)(param_1 + 8);
  local_e0 = *(longlong *)(param_1 + 0x10);
  if (local_e0 != 0) {
    LOCK();
    *(int *)(local_e0 + 8) = *(int *)(local_e0 + 8) + 1;
    UNLOCK();
  }
  local_118 = 0;
  local_128 = &local_f8;
  local_120 = param_2;
  FUN_1806ae2f0(&local_c8,&local_e8,&local_a8,*(undefined4 *)(param_1 + 0x40));
  local_108 = local_c8;
  plStack_100 = plStack_c0;
  if (plStack_c0 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_c0 + 1) = (int)plStack_c0[1] + 1;
    UNLOCK();
  }
  local_120 = param_5;
  local_128 = (undefined8 *)param_4;
  FUN_1806a0350(param_1,&local_108,param_2,param_3);
  if (plStack_c0 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_c0 + 1;
    lVar6 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar6 == 1) {
      (**(code **)(*plStack_c0 + 8))(plStack_c0);
      LOCK();
      piVar2 = (int *)((longlong)plStack_c0 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_c0 + 0x10))(plStack_c0);
      }
    }
  }
  if ((local_d0 != '\0') && (*local_d8 = *local_d8 + -1, *local_d8 == 0)) {
    LOCK();
    local_d8[1] = 0;
    UNLOCK();
    puVar8 = (uint *)(local_d8 + 2);
    LOCK();
    uVar4 = *puVar8;
    *puVar8 = *puVar8 + 0x80000000;
    UNLOCK();
    if (((uVar4 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar4)) {
      LOCK();
      uVar4 = *puVar8;
      *puVar8 = *puVar8 | 0x40000000;
      UNLOCK();
      if ((uVar4 >> 0x1e & 1) == 0) {
        hEvent = (HANDLE)FUN_1805a9100();
        SetEvent(hEvent);
      }
    }
  }
  local_a8 = pace::eden::thrift::authorize::AuthLocation::vftable;
  local_80 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  if (local_88 < 0x10) {
  }
  pvVar5 = (void *)CONCAT71(local_a0[0]._1_7_,(undefined1)local_a0[0]);
  _Memory = pvVar5;
  if ((0xfff < local_88 + 1) &&
     (_Memory = *(void **)((longlong)pvVar5 + -8),
     0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18069d070 size=771 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18069d070(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4,
                  undefined8 param_5,longlong *param_6)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  longlong lVar5;
  undefined8 *puVar6;
  HANDLE hEvent;
  uint *puVar7;
  void *pvVar8;
  void *pvVar9;
  undefined1 auStack_188 [32];
  undefined8 *local_168;
  longlong local_160;
  undefined8 local_158;
  undefined8 local_140;
  longlong local_138;
  undefined8 local_130;
  longlong local_128;
  undefined8 local_118;
  longlong *plStack_110;
  int *local_108;
  char local_100;
  undefined8 local_f8;
  longlong *plStack_f0;
  undefined8 local_e8;
  longlong *plStack_e0;
  undefined8 local_d8;
  longlong *local_d0;
  undefined1 local_c8 [32];
  undefined **local_a8;
  undefined8 local_a0 [2];
  undefined8 local_90;
  ulonglong local_88;
  undefined **local_80;
  int local_78;
  undefined8 local_70;
  undefined2 local_68;
  undefined2 local_60;
  ulonglong local_58;
  
  local_d8 = 0xfffffffffffffffe;
  local_58 = DAT_182615970 ^ (ulonglong)auStack_188;
  local_d0 = param_6;
  local_a8 = pace::eden::thrift::authorize::AuthLocation::vftable;
  local_90 = 0;
  local_88 = 0xf;
  local_a0[0]._0_1_ = 0;
  FUN_1805a6cb0(local_a0,&DAT_181baf991,0);
  local_80 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  local_70 = 0;
  local_68 = 0;
  local_78 = 1;
  local_60 = 0;
  lVar5 = FUN_1807064c0();
  puVar6 = (undefined8 *)(lVar5 + 0x40);
  if (local_a0 != puVar6) {
    if (0xf < *(ulonglong *)(lVar5 + 0x58)) {
      puVar6 = (undefined8 *)*puVar6;
    }
    FUN_1805a6cb0(local_a0,puVar6,*(undefined8 *)(lVar5 + 0x50));
  }
  if ((char *)param_6[1] == (char *)*param_6) {
    local_78 = 2;
  }
  else {
    local_78 = (int)*(char *)*param_6;
  }
  local_70 = *(undefined8 *)(param_2 + 0x70);
  local_60 = CONCAT11(1,(undefined1)local_60);
  FUN_1805b45f0(&local_108,param_1 + 0x18);
  local_140 = *(undefined8 *)(param_1 + 0x48);
  local_138 = *(longlong *)(param_1 + 0x50);
  if (local_138 != 0) {
    LOCK();
    *(int *)(local_138 + 8) = *(int *)(local_138 + 8) + 1;
    UNLOCK();
  }
  local_130 = *(undefined8 *)(param_1 + 8);
  local_128 = *(longlong *)(param_1 + 0x10);
  if (local_128 != 0) {
    LOCK();
    *(int *)(local_128 + 8) = *(int *)(local_128 + 8) + 1;
    UNLOCK();
  }
  local_158 = 0;
  local_168 = &local_140;
  local_160 = param_2;
  FUN_1806ae410(&local_118,&local_130,&local_a8,*(undefined4 *)(param_1 + 0x40));
  local_f8 = local_118;
  plStack_f0 = plStack_110;
  if (plStack_110 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_110 + 1) = (int)plStack_110[1] + 1;
    UNLOCK();
  }
  local_168 = (undefined8 *)((ulonglong)local_168 & 0xffffffffffffff00);
  FUN_180642440(local_c8,&local_f8,0,0);
  local_e8 = local_118;
  plStack_e0 = plStack_110;
  if (plStack_110 != (longlong *)0x0) {
    LOCK();
    *(int *)(plStack_110 + 1) = (int)plStack_110[1] + 1;
    UNLOCK();
  }
  local_160 = param_5;
  local_168 = (undefined8 *)param_4;
  FUN_1806a0c50(param_1,&local_e8,param_2,param_3);
  FUN_180643940(local_c8);
  if (plStack_110 != (longlong *)0x0) {
    LOCK();
    plVar1 = plStack_110 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plStack_110 + 8))(plStack_110);
      LOCK();
      piVar2 = (int *)((longlong)plStack_110 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plStack_110 + 0x10))(plStack_110);
      }
    }
  }
  if ((local_100 != '\0') && (*local_108 = *local_108 + -1, *local_108 == 0)) {
    LOCK();
    local_108[1] = 0;
    UNLOCK();
    puVar7 = (uint *)(local_108 + 2);
    LOCK();
    uVar4 = *puVar7;
    *puVar7 = *puVar7 + 0x80000000;
    UNLOCK();
    if (((uVar4 >> 0x1e & 1) == 0) && (-0x80000000 < (int)uVar4)) {
      LOCK();
      uVar4 = *puVar7;
      *puVar7 = *puVar7 | 0x40000000;
      UNLOCK();
      if ((uVar4 >> 0x1e & 1) == 0) {
        hEvent = (HANDLE)FUN_1805a9100();
        SetEvent(hEvent);
      }
    }
  }
  local_a8 = pace::eden::thrift::authorize::AuthLocation::vftable;
  local_80 = pace::eden::thrift::pub::IlokIdentifier::vftable;
  if (0xf < local_88) {
    pvVar9 = (void *)CONCAT71(local_a0[0]._1_7_,(undefined1)local_a0[0]);
    pvVar8 = pvVar9;
    if ((0xfff < local_88 + 1) &&
       (pvVar8 = *(void **)((longlong)pvVar9 + -8),
       0x1f < (ulonglong)((longlong)pvVar9 + (-8 - (longlong)pvVar8)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar8);
  }
  local_90 = 0;
  local_88 = 0xf;
  local_a0[0]._0_1_ = 0;
  pvVar8 = (void *)*param_6;
  if (pvVar8 == (void *)0x0) {
  }
  pvVar9 = pvVar8;
  if ((0xfff < (ulonglong)(param_6[2] - (longlong)pvVar8)) &&
     (pvVar9 = *(void **)((longlong)pvVar8 + -8),
     0x1f < (ulonglong)((longlong)pvVar8 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar9);
}



############ FUN_ 1807fc7f0 size=558 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807fc7f0(longlong param_1,undefined4 *param_2,undefined4 param_3,undefined8 param_4,
                  longlong param_5)

{
  undefined8 uVar1;
  undefined8 *puVar2;
  void *_Memory;
  undefined1 auStack_348 [32];
  void **local_328;
  undefined1 local_318;
  void *local_310;
  undefined8 uStack_308;
  longlong local_300;
  undefined8 local_2f8;
  undefined1 local_2f0 [40];
  undefined1 local_2c8 [576];
  undefined8 local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 uStack_68;
  undefined1 local_60 [8];
  undefined1 local_58 [8];
  undefined1 local_50 [8];
  undefined1 local_48 [8];
  ulonglong local_40;
  
  local_2f8 = 0xfffffffffffffffe;
  local_40 = DAT_182615970 ^ (ulonglong)auStack_348;
  local_310 = (void *)0x0;
  uStack_308 = 0;
  local_300 = 0;
  FUN_180604880(&local_80,0x10);
  FUN_1807f48e0(*(undefined8 *)(param_1 + 8),local_2f0,param_3,param_4);
  FUN_180a1e790(local_2f0);
  FUN_180604880(&local_88,8);
  local_328._0_1_ = 2;
  FUN_1807ef270(*(undefined8 *)(param_1 + 8),local_60,param_3,&local_88);
  local_88 = local_80;
  FUN_1807f64d0(*(undefined8 *)(param_1 + 8),param_3,&local_88,0);
  local_88 = local_78;
  FUN_1807f64d0(*(undefined8 *)(param_1 + 8),param_3,&local_88,1);
  FUN_180604880(&local_88,8);
  local_328 = (void **)CONCAT71(local_328._1_7_,1);
  FUN_1807ef270(*(undefined8 *)(param_1 + 8),local_58,param_3,&local_88);
  puVar2 = (undefined8 *)FUN_1807f3750(*(undefined8 *)(param_1 + 8),local_50,0x30);
  local_88 = *puVar2;
  local_70 = local_88;
  puVar2 = (undefined8 *)FUN_1807f3750(*(undefined8 *)(param_1 + 8),local_48,0x38);
  uVar1 = *puVar2;
  uStack_68._0_4_ = (undefined4)uVar1;
  uStack_68._4_4_ = (undefined4)((ulonglong)uVar1 >> 0x20);
  *param_2 = (undefined4)local_70;
  param_2[1] = local_70._4_4_;
  param_2[2] = (undefined4)uStack_68;
  param_2[3] = uStack_68._4_4_;
  uStack_68 = uVar1;
  FUN_1805e1990(&local_310,param_5,param_5 + 0x10,local_318);
  local_328 = &local_310;
  FUN_18063c260(local_2c8,3,0,0);
  FUN_18063cd40(local_2c8,0x10,param_2);
  FUN_180620470(param_2,&local_80,0x10);
  FUN_18063cad0(local_2c8);
  if (local_310 == (void *)0x0) {
  }
  _Memory = local_310;
  if ((0xfff < (ulonglong)(local_300 - (longlong)local_310)) &&
     (_Memory = *(void **)((longlong)local_310 + -8),
     0x1f < (ulonglong)((longlong)local_310 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806c31b0 size=62 ############

undefined8 * FUN_1806c31b0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::PaceFusionException::vftable;
  FUN_1806d5550();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1806c5aa0 size=62 ############

undefined8 * FUN_1806c5aa0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::AuthorizationException::vftable;
  FUN_1806d5550();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1806cdd30 size=413 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806cdd30(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  void *pvVar2;
  undefined1 auStack_c8 [32];
  void **local_a8;
  undefined8 local_98;
  undefined8 *local_90;
  undefined1 local_88;
  undefined7 uStack_87;
  undefined8 local_78;
  ulonglong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  void *local_48 [3];
  ulonglong local_30;
  ulonglong local_28;
  
  local_98 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_c8;
  local_90 = param_1;
  FUN_1805ae640(param_4,local_48);
  FUN_1805ae640(param_3,&local_68);
  FUN_1805ae640(param_2,&local_88);
  local_a8 = local_48;
  FUN_1806d2860(param_1,0xd,&local_88,&local_68);
  *param_1 = pace::UtilException::vftable;
  if (0xf < local_70) {
    pvVar1 = (void *)CONCAT71(uStack_87,local_88);
    pvVar2 = pvVar1;
    if ((0xfff < local_70 + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  local_78 = 0;
  local_70 = 0xf;
  local_88 = 0;
  if (0xf < local_50) {
    pvVar1 = (void *)CONCAT71(uStack_67,local_68);
    pvVar2 = pvVar1;
    if ((0xfff < local_50 + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  local_58 = 0;
  local_50 = 0xf;
  local_68 = 0;
  if (local_30 < 0x10) {
    *param_1 = pace::PaceUtilParameterError::vftable;
  }
  pvVar2 = local_48[0];
  if ((0xfff < local_30 + 1) &&
     (pvVar2 = *(void **)((longlong)local_48[0] + -8),
     0x1f < (ulonglong)((longlong)local_48[0] + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1806cdef0 size=62 ############

undefined8 * FUN_1806cdef0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::UtilException::vftable;
  FUN_1806d5550();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1806d9a20 size=346 ############

void FUN_1806d9a20(longlong *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4)

{
  void *pvVar1;
  longlong lVar2;
  ulonglong uVar3;
  void *pvVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  
  pvVar1 = (void *)param_1[1];
  lVar2 = *param_1;
  uVar6 = (longlong)pvVar1 - lVar2 >> 2;
  uVar3 = param_1[2] - lVar2 >> 2;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar6) {
      if (param_2 != uVar6) {
        param_1[1] = lVar2 + param_2 * 4;
      }
      return;
    }
    pvVar4 = (void *)((longlong)pvVar1 + (param_2 - uVar6) * 4);
    memset(pvVar1,0,(longlong)pvVar4 - (longlong)pvVar1);
    param_1[1] = (longlong)pvVar4;
    return;
  }
  if (0x3fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar5 = param_2;
  if ((uVar3 <= 0x3fffffffffffffff - (uVar3 >> 1)) &&
     (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2)) {
    uVar5 = param_2;
  }
  pvVar4 = (void *)FUN_1805bc910(param_1,uVar5,param_3,param_4,0xfffffffffffffffe);
  memset((void *)((longlong)pvVar4 + uVar6 * 4),0,(param_2 - uVar6) * 4);
  memmove(pvVar4,(void *)*param_1,param_1[1] - *param_1);
  pvVar1 = (void *)*param_1;
  if (pvVar1 == (void *)0x0) {
    *param_1 = (longlong)pvVar4;
    param_1[1] = (longlong)((longlong)pvVar4 + param_2 * 4);
    param_1[2] = (longlong)((longlong)pvVar4 + uVar5 * 4);
    return;
  }
  pvVar4 = pvVar1;
  if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffffcU)) &&
     (pvVar4 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar4)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar4);
}



############ FUN_ 1806d9f60 size=663 ############

void FUN_1806d9f60(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  undefined8 *puVar1;
  void *pvVar2;
  ulonglong uVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  undefined8 *puVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  void *_Memory;
  undefined8 *puVar12;
  undefined8 *puVar13;
  undefined8 uVar14;
  
  uVar14 = 0xfffffffffffffffe;
  puVar12 = (undefined8 *)param_1[1];
  lVar5 = *param_1;
  lVar8 = ((longlong)puVar12 - lVar5) / 6 + ((longlong)puVar12 - lVar5 >> 0x3f);
  uVar11 = (lVar8 >> 2) - (lVar8 >> 0x3f);
  uVar3 = (param_1[2] - lVar5) / 0x18;
  if (param_2 <= uVar3) {
    if (param_2 <= uVar11) {
      if (param_2 != uVar11) {
        lVar5 = lVar5 + param_2 * 0x18;
        FUN_1805d59e0(lVar5,puVar12,param_1);
        param_1[1] = lVar5;
      }
      return;
    }
    for (lVar5 = param_2 - uVar11; lVar5 != 0; lVar5 = lVar5 + -1) {
      *puVar12 = 0;
      puVar12[1] = 0;
      puVar12[2] = 0;
      puVar12 = puVar12 + 3;
    }
    FUN_1805d59e0(puVar12,puVar12,param_3);
    param_1[1] = (longlong)puVar12;
    return;
  }
  if (0xaaaaaaaaaaaaaaa < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar10 = param_2;
  if ((uVar3 <= 0xaaaaaaaaaaaaaaa - (uVar3 >> 1)) &&
     (uVar10 = uVar3 + (uVar3 >> 1), uVar10 < param_2)) {
    uVar10 = param_2;
  }
  puVar4 = (undefined8 *)FUN_1805d6980(param_1,uVar10);
  puVar12 = puVar4 + uVar11 * 3;
  puVar6 = puVar12;
  for (lVar5 = param_2 - uVar11; lVar5 != 0; lVar5 = lVar5 + -1) {
    *puVar6 = 0;
    puVar6[1] = 0;
    puVar6[2] = 0;
    puVar6 = puVar6 + 3;
  }
  puVar13 = puVar4;
  FUN_1805d59e0(puVar6,puVar6,param_3);
  puVar6 = (undefined8 *)param_1[1];
  puVar9 = (undefined8 *)*param_1;
  puVar7 = puVar4;
  if (puVar9 != puVar6) {
    lVar5 = (longlong)puVar4 - (longlong)puVar9;
    puVar9 = puVar9 + 2;
    do {
      *puVar7 = 0;
      *(undefined8 *)(lVar5 + -8 + (longlong)puVar9) = 0;
      *(undefined8 *)(lVar5 + (longlong)puVar9) = 0;
      *puVar7 = puVar9[-2];
      *(undefined8 *)(lVar5 + -8 + (longlong)puVar9) = puVar9[-1];
      *(undefined8 *)(lVar5 + (longlong)puVar9) = *puVar9;
      puVar9[-2] = 0;
      puVar9[-1] = 0;
      *puVar9 = 0;
      puVar7 = puVar7 + 3;
      puVar1 = puVar9 + 1;
      puVar9 = puVar9 + 3;
    } while (puVar1 != puVar6);
  }
  FUN_1805d59e0(puVar7,puVar7,param_1,puVar6,puVar12,puVar13,uVar14);
  if (*param_1 == 0) {
    *param_1 = (longlong)puVar4;
    param_1[1] = (longlong)(puVar4 + param_2 * 3);
    param_1[2] = (longlong)(puVar4 + uVar10 * 3);
    return;
  }
  FUN_1805d59e0(*param_1,param_1[1],param_1);
  pvVar2 = (void *)*param_1;
  _Memory = pvVar2;
  if ((0xfff < (ulonglong)(((param_1[2] - (longlong)pvVar2) / 0x18) * 0x18)) &&
     (_Memory = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1806da4d0 size=448 ############

void FUN_1806da4d0(undefined8 *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::eden::thrift::fusion::DynamicCryptoProductData::vftable;
  pvVar1 = (void *)param_1[0x19];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x1b] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x16];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x18] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x13];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x15] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0x10];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0x12] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[0xd];
  if (pvVar1 != (void *)0x0) {
    pvVar2 = pvVar1;
    if ((0xfff < (ulonglong)(param_1[0xf] - (longlong)pvVar1)) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  pvVar1 = (void *)param_1[10];
  if (pvVar1 == (void *)0x0) {
    FUN_1805b9460(param_1 + 1);
    return;
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0xc] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1806da850 size=52 ############

void * FUN_1806da850(void *param_1,ulonglong param_2)

{
  FUN_1806da4d0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1806dbc20 size=617 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806dbc20(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined4 local_50 [2];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 10) goto LAB_1806dbdef;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x1c8) = 1;
      break;
    case 2:
      if (local_54 != 10) goto LAB_1806dbdef;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x10);
      *(undefined1 *)(param_1 + 0x1c9) = 1;
      break;
    case 3:
      if (local_54 != 0xb) goto LAB_1806dbdef;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x18);
      *(undefined1 *)(param_1 + 0x1ca) = 1;
      break;
    case 4:
      if (local_54 != 0xc) goto switchD_1806dbccc_caseD_5;
      FUN_18094b9e0(param_1 + 0x38,param_2);
      *(undefined1 *)(param_1 + 0x1cb) = 1;
      break;
    default:
switchD_1806dbccc_caseD_5:
LAB_1806dbdef:
      FUN_1806d8eb0(param_2);
      break;
    case 10:
      if (local_54 != 8) goto LAB_1806dbdef;
      (**(code **)(*param_2 + 0x128))(param_2,local_50);
      *(undefined4 *)(param_1 + 0x188) = local_50[0];
      *(undefined1 *)(param_1 + 0x1cc) = 1;
      break;
    case 0xb:
      if (local_54 != 2) goto LAB_1806dbdef;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x18c);
      *(undefined1 *)(param_1 + 0x1cd) = 1;
      break;
    case 0x14:
      if (local_54 != 0xc) goto switchD_1806dbccc_caseD_5;
      FUN_180943ae0(param_1 + 400,param_2);
      *(undefined1 *)(param_1 + 0x1ce) = 1;
      break;
    case 0x15:
      if (local_54 != 0xb) goto LAB_1806dbdef;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x1a8);
      *(undefined1 *)(param_1 + 0x1cf) = 1;
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_54,local_58);
  } while( true );
}



############ FUN_ 1806dbef0 size=354 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806dbef0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xb) goto LAB_1806dbfb8;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x29) = 1;
    }
    else if ((local_48[0] == 2) && (local_44 == 2)) {
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x2a) = 1;
    }
    else {
LAB_1806dbfb8:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 1806e9b20 size=538 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806e9b20(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined4 local_50 [2];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 8) break;
      (**(code **)(*param_2 + 0x128))(param_2,local_50);
      *(undefined4 *)(param_1 + 8) = local_50[0];
      *(undefined1 *)(param_1 + 0x91) = 1;
      goto LAB_1806e9ca7;
    case 2:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x10);
        *(undefined1 *)(param_1 + 0x92) = 1;
        goto LAB_1806e9ca7;
      }
      break;
    case 3:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x30);
        *(undefined1 *)(param_1 + 0x93) = 1;
        goto LAB_1806e9ca7;
      }
      break;
    case 4:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x50);
        *(undefined1 *)(param_1 + 0x94) = 1;
        goto LAB_1806e9ca7;
      }
      break;
    case 5:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x70);
        *(undefined1 *)(param_1 + 0x95) = 1;
        goto LAB_1806e9ca7;
      }
      break;
    case 6:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x90);
        *(undefined1 *)(param_1 + 0x96) = 1;
        goto LAB_1806e9ca7;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_1806e9ca7:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_54,local_58);
  } while( true );
}



############ FUN_ 1806e9d70 size=554 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806e9d70(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 0xb) goto LAB_1806e9f00;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x1e8) = 1;
      break;
    case 2:
      if (local_54 != 8) goto LAB_1806e9f00;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x1e9) = 1;
      break;
    case 3:
      if (local_54 != 8) goto LAB_1806e9f00;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x2c);
      *(undefined1 *)(param_1 + 0x1ea) = 1;
      break;
    case 4:
      if (local_54 != 8) goto LAB_1806e9f00;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x30);
      *(undefined1 *)(param_1 + 0x1eb) = 1;
      break;
    case 5:
      if (local_54 != 8) goto LAB_1806e9f00;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x34);
      *(undefined1 *)(param_1 + 0x1ec) = 1;
      break;
    default:
switchD_1806e9e1c_caseD_6:
LAB_1806e9f00:
      FUN_1806d8eb0(param_2);
      break;
    case 10:
      if (local_54 != 0xc) goto switchD_1806e9e1c_caseD_6;
      FUN_1806e9fe0(param_1 + 0x38,param_2);
      *(undefined1 *)(param_1 + 0x1ed) = 1;
      break;
    case 0xb:
      if (local_54 != 0xc) goto switchD_1806e9e1c_caseD_6;
      FUN_1806e9fe0(param_1 + 0x110,param_2);
      *(undefined1 *)(param_1 + 0x1ee) = 1;
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 1806e9fe0 size=655 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806e9fe0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 0xb) break;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0xcb) = 1;
      goto LAB_1806ea1da;
    case 2:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
        *(undefined1 *)(param_1 + 0xcc) = 1;
        goto LAB_1806ea1da;
      }
      break;
    case 3:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0xcd) = 1;
        goto LAB_1806ea1da;
      }
      break;
    case 4:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x68);
        *(undefined1 *)(param_1 + 0xce) = 1;
        goto LAB_1806ea1da;
      }
      break;
    case 5:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x88);
        *(undefined1 *)(param_1 + 0xcf) = 1;
        goto LAB_1806ea1da;
      }
      break;
    case 6:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0xa8);
        *(undefined1 *)(param_1 + 0xd0) = 1;
        goto LAB_1806ea1da;
      }
      break;
    default:
      break;
    case 10:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 200);
        *(undefined1 *)(param_1 + 0xd1) = 1;
        goto LAB_1806ea1da;
      }
      break;
    case 0xb:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0xc9);
        *(undefined1 *)(param_1 + 0xd2) = 1;
        goto LAB_1806ea1da;
      }
      break;
    case 0xc:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0xca);
        *(undefined1 *)(param_1 + 0xd3) = 1;
        goto LAB_1806ea1da;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_1806ea1da:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 1806ea2b0 size=942 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806ea2b0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_98 [32];
  undefined2 local_78 [2];
  uint local_74;
  uint local_70;
  int local_6c;
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  do {
    if (local_6c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar1;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_78[0]) {
    case 1:
      if (local_6c != 0xc) break;
      FUN_18094a7b0(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x531) = 1;
      goto LAB_1806ea5d2;
    case 2:
      if (local_6c == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x468);
        *(undefined1 *)(param_1 + 0x532) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 3:
      if (local_6c == 0xf) {
        *(undefined8 *)(param_1 + 0x478) = *(undefined8 *)(param_1 + 0x470);
        (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_74);
        FUN_1805b1330(param_1 + 0x470,local_74,param_1 + 0x470);
        uVar3 = 0;
        if (local_74 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x470));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_74);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x533) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 4:
      if (local_6c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x488);
        *(undefined1 *)(param_1 + 0x534) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 5:
      if (local_6c == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x4a8);
        *(undefined1 *)(param_1 + 0x535) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 6:
      if (local_6c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x4b0);
        *(undefined1 *)(param_1 + 0x536) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 7:
      if (local_6c == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x4d0);
        *(undefined1 *)(param_1 + 0x537) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 8:
      if (local_6c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x4d8);
        *(undefined1 *)(param_1 + 0x538) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 9:
      if (local_6c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x4f8);
        *(undefined1 *)(param_1 + 0x539) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 10:
      if (local_6c == 0xf) {
        *(undefined8 *)(param_1 + 0x520) = *(undefined8 *)(param_1 + 0x518);
        (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_70);
        FUN_1806d9a20(param_1 + 0x518,local_70,param_1 + 0x518);
        uVar3 = 0;
        if (local_70 != 0) {
          do {
            (**(code **)(*param_2 + 0x128))(param_2,*(longlong *)(param_1 + 0x518) + uVar3 * 4);
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_70);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x53a) = 1;
        goto LAB_1806ea5d2;
      }
      break;
    case 0xb:
      if (local_6c == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x530);
        *(undefined1 *)(param_1 + 0x53b) = 1;
        goto LAB_1806ea5d2;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_1806ea5d2:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  } while( true );
}



############ FUN_ 1806ea6b0 size=615 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1806ea6b0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 0xb) break;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0xe9) = 1;
      goto LAB_1806ea882;
    case 2:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
        *(undefined1 *)(param_1 + 0xea) = 1;
        goto LAB_1806ea882;
      }
      break;
    case 3:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0xeb) = 1;
        goto LAB_1806ea882;
      }
      break;
    default:
      break;
    case 10:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x68);
        *(undefined1 *)(param_1 + 0xec) = 1;
        goto LAB_1806ea882;
      }
      break;
    case 0xb:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x88);
        *(undefined1 *)(param_1 + 0xed) = 1;
        goto LAB_1806ea882;
      }
      break;
    case 0xc:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0xa8);
        *(undefined1 *)(param_1 + 0xee) = 1;
        goto LAB_1806ea882;
      }
      break;
    case 0xd:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 200);
        *(undefined1 *)(param_1 + 0xef) = 1;
        goto LAB_1806ea882;
      }
      break;
    case 0x14:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0xe8);
        *(undefined1 *)(param_1 + 0xf0) = 1;
        goto LAB_1806ea882;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_1806ea882:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 1806f2d10 size=287 ############

undefined8 * FUN_1806f2d10(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  
  *param_1 = pace::VerifiedBinaryProtocol::vftable;
  plVar4 = (longlong *)param_1[0x11];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  plVar4 = (longlong *)param_1[0xb];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  plVar4 = (longlong *)param_1[9];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  *param_1 = apache::thrift::protocol::TBinaryProtocol::vftable;
  if ((void *)param_1[6] != (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[6]);
  }
  FUN_180622550(param_1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180703330 size=326 ############

longlong FUN_180703330(longlong *param_1,void *param_2,undefined8 *param_3,undefined8 param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  void *pvVar3;
  longlong lVar4;
  ulonglong uVar5;
  void *pvVar6;
  void *_Dst;
  ulonglong uVar7;
  size_t _Size;
  longlong lVar8;
  
  lVar2 = *param_1;
  lVar8 = (longlong)param_2 - lVar2 >> 3;
  lVar4 = param_1[1] - lVar2 >> 3;
  if (lVar4 == 0x1fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar1 = lVar4 + 1;
  uVar5 = param_1[2] - lVar2 >> 3;
  uVar7 = uVar1;
  if ((uVar5 <= 0x1fffffffffffffff - (uVar5 >> 1)) && (uVar7 = (uVar5 >> 1) + uVar5, uVar7 < uVar1))
  {
    uVar7 = uVar1;
  }
  pvVar6 = (void *)FUN_1805bcb90(param_1,uVar7,param_3,param_4,0xfffffffffffffffe);
  *(undefined8 *)((longlong)pvVar6 + lVar8 * 8) = *param_3;
  pvVar3 = (void *)*param_1;
  if (param_2 == (void *)param_1[1]) {
    _Size = param_1[1] - (longlong)pvVar3;
    _Dst = pvVar6;
    param_2 = pvVar3;
  }
  else {
    memmove(pvVar6,pvVar3,(longlong)param_2 - (longlong)pvVar3);
    _Dst = (void *)((longlong)pvVar6 + (lVar8 + 1) * 8);
    _Size = param_1[1] - (longlong)param_2;
  }
  memmove(_Dst,param_2,_Size);
  pvVar3 = (void *)*param_1;
  if (pvVar3 == (void *)0x0) {
    *param_1 = (longlong)pvVar6;
    param_1[1] = (longlong)((longlong)pvVar6 + uVar1 * 8);
    param_1[2] = (longlong)((longlong)pvVar6 + uVar7 * 8);
    return *param_1 + lVar8 * 8;
  }
  pvVar6 = pvVar3;
  if ((0xfff < (param_1[2] - (longlong)pvVar3 & 0xfffffffffffffff8U)) &&
     (pvVar6 = *(void **)((longlong)pvVar3 + -8),
     0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar6)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar6);
}



############ FUN_ 180704a00 size=2941 ############

void FUN_180704a00(longlong *param_1)

{
  void *pvVar1;
  void *pvVar2;
  
  if (0xf < (ulonglong)param_1[0x7b]) {
    pvVar1 = (void *)param_1[0x78];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x7b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x7b] = 0xf;
  param_1[0x7a] = 0;
  *(undefined1 *)(param_1 + 0x78) = 0;
  if (0xf < (ulonglong)param_1[0x77]) {
    pvVar1 = (void *)param_1[0x74];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x77] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x76] = 0;
  param_1[0x77] = 0xf;
  *(undefined1 *)(param_1 + 0x74) = 0;
  if (0xf < (ulonglong)param_1[0x73]) {
    pvVar1 = (void *)param_1[0x70];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x73] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x72] = 0;
  param_1[0x73] = 0xf;
  *(undefined1 *)(param_1 + 0x70) = 0;
  if (0xf < (ulonglong)param_1[0x6f]) {
    pvVar1 = (void *)param_1[0x6c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x6f] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x6e] = 0;
  param_1[0x6f] = 0xf;
  *(undefined1 *)(param_1 + 0x6c) = 0;
  if (0xf < (ulonglong)param_1[0x6b]) {
    pvVar1 = (void *)param_1[0x68];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x6b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x6a] = 0;
  param_1[0x6b] = 0xf;
  *(undefined1 *)(param_1 + 0x68) = 0;
  if (0xf < (ulonglong)param_1[0x67]) {
    pvVar1 = (void *)param_1[100];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x67] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x66] = 0;
  param_1[0x67] = 0xf;
  *(undefined1 *)(param_1 + 100) = 0;
  if (0xf < (ulonglong)param_1[99]) {
    pvVar1 = (void *)param_1[0x60];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[99] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x62] = 0;
  param_1[99] = 0xf;
  *(undefined1 *)(param_1 + 0x60) = 0;
  if (0xf < (ulonglong)param_1[0x5f]) {
    pvVar1 = (void *)param_1[0x5c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x5f] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x5e] = 0;
  param_1[0x5f] = 0xf;
  *(undefined1 *)(param_1 + 0x5c) = 0;
  if (0xf < (ulonglong)param_1[0x5b]) {
    pvVar1 = (void *)param_1[0x58];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x5b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x5a] = 0;
  param_1[0x5b] = 0xf;
  *(undefined1 *)(param_1 + 0x58) = 0;
  if (0xf < (ulonglong)param_1[0x57]) {
    pvVar1 = (void *)param_1[0x54];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x57] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x56] = 0;
  param_1[0x57] = 0xf;
  *(undefined1 *)(param_1 + 0x54) = 0;
  if (0xf < (ulonglong)param_1[0x53]) {
    pvVar1 = (void *)param_1[0x50];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x53] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x52] = 0;
  param_1[0x53] = 0xf;
  *(undefined1 *)(param_1 + 0x50) = 0;
  if (0xf < (ulonglong)param_1[0x4f]) {
    pvVar1 = (void *)param_1[0x4c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x4f] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x4e] = 0;
  param_1[0x4f] = 0xf;
  *(undefined1 *)(param_1 + 0x4c) = 0;
  if (0xf < (ulonglong)param_1[0x4b]) {
    pvVar1 = (void *)param_1[0x48];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x4b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x4a] = 0;
  param_1[0x4b] = 0xf;
  *(undefined1 *)(param_1 + 0x48) = 0;
  if (0xf < (ulonglong)param_1[0x47]) {
    pvVar1 = (void *)param_1[0x44];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x47] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x46] = 0;
  param_1[0x47] = 0xf;
  *(undefined1 *)(param_1 + 0x44) = 0;
  if (0xf < (ulonglong)param_1[0x43]) {
    pvVar1 = (void *)param_1[0x40];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x43] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x42] = 0;
  param_1[0x43] = 0xf;
  *(undefined1 *)(param_1 + 0x40) = 0;
  if (0xf < (ulonglong)param_1[0x3f]) {
    pvVar1 = (void *)param_1[0x3c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x3f] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x3e] = 0;
  param_1[0x3f] = 0xf;
  *(undefined1 *)(param_1 + 0x3c) = 0;
  if (0xf < (ulonglong)param_1[0x3b]) {
    pvVar1 = (void *)param_1[0x38];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x3b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x3a] = 0;
  param_1[0x3b] = 0xf;
  *(undefined1 *)(param_1 + 0x38) = 0;
  if (0xf < (ulonglong)param_1[0x37]) {
    pvVar1 = (void *)param_1[0x34];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x37] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x36] = 0;
  param_1[0x37] = 0xf;
  *(undefined1 *)(param_1 + 0x34) = 0;
  if (0xf < (ulonglong)param_1[0x33]) {
    pvVar1 = (void *)param_1[0x30];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x33] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x32] = 0;
  param_1[0x33] = 0xf;
  *(undefined1 *)(param_1 + 0x30) = 0;
  if (0xf < (ulonglong)param_1[0x2f]) {
    pvVar1 = (void *)param_1[0x2c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x2f] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x2e] = 0;
  param_1[0x2f] = 0xf;
  *(undefined1 *)(param_1 + 0x2c) = 0;
  if (0xf < (ulonglong)param_1[0x2b]) {
    pvVar1 = (void *)param_1[0x28];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x2b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x2a] = 0;
  param_1[0x2b] = 0xf;
  *(undefined1 *)(param_1 + 0x28) = 0;
  if (0xf < (ulonglong)param_1[0x27]) {
    pvVar1 = (void *)param_1[0x24];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x27] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x26] = 0;
  param_1[0x27] = 0xf;
  *(undefined1 *)(param_1 + 0x24) = 0;
  if (0xf < (ulonglong)param_1[0x23]) {
    pvVar1 = (void *)param_1[0x20];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x23] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x22] = 0;
  param_1[0x23] = 0xf;
  *(undefined1 *)(param_1 + 0x20) = 0;
  if (0xf < (ulonglong)param_1[0x1f]) {
    pvVar1 = (void *)param_1[0x1c];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1f] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1e] = 0;
  param_1[0x1f] = 0xf;
  *(undefined1 *)(param_1 + 0x1c) = 0;
  if (0xf < (ulonglong)param_1[0x1b]) {
    pvVar1 = (void *)param_1[0x18];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x1b] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x1a] = 0;
  param_1[0x1b] = 0xf;
  *(undefined1 *)(param_1 + 0x18) = 0;
  if (0xf < (ulonglong)param_1[0x17]) {
    pvVar1 = (void *)param_1[0x14];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x17] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x16] = 0;
  param_1[0x17] = 0xf;
  *(undefined1 *)(param_1 + 0x14) = 0;
  if (0xf < (ulonglong)param_1[0x13]) {
    pvVar1 = (void *)param_1[0x10];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x13] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x12] = 0;
  param_1[0x13] = 0xf;
  *(undefined1 *)(param_1 + 0x10) = 0;
  if (0xf < (ulonglong)param_1[0xf]) {
    pvVar1 = (void *)param_1[0xc];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xf] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0xe] = 0;
  param_1[0xf] = 0xf;
  *(undefined1 *)(param_1 + 0xc) = 0;
  if (0xf < (ulonglong)param_1[0xb]) {
    pvVar1 = (void *)param_1[8];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0xb] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[10] = 0;
  param_1[0xb] = 0xf;
  *(undefined1 *)(param_1 + 8) = 0;
  if (0xf < (ulonglong)param_1[7]) {
    pvVar1 = (void *)param_1[4];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[7] + 1U) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[6] = 0;
  param_1[7] = 0xf;
  *(undefined1 *)(param_1 + 4) = 0;
  if ((ulonglong)param_1[3] < 0x10) {
    param_1[2] = 0;
    param_1[3] = 0xf;
    *(undefined1 *)param_1 = 0;
    return;
  }
  pvVar1 = (void *)*param_1;
  pvVar2 = pvVar1;
  if ((0xfff < param_1[3] + 1U) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 1807121e0 size=62 ############

undefined8 * FUN_1807121e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::IlokUtilException::vftable;
  FUN_1806d5550();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180715c80 size=349 ############

undefined8 * FUN_180715c80(undefined8 *param_1,uint param_2)

{
  void *pvVar1;
  void *pvVar2;
  
  *param_1 = pace::Certifier::vftable;
  if (0xf < (ulonglong)param_1[0x15e]) {
    pvVar1 = (void *)param_1[0x15b];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x15e] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x15e] = 0xf;
  param_1[0x15d] = 0;
  *(undefined1 *)(param_1 + 0x15b) = 0;
  if (0xf < (ulonglong)param_1[0x15a]) {
    pvVar1 = (void *)param_1[0x157];
    pvVar2 = pvVar1;
    if ((0xfff < param_1[0x15a] + 1) &&
       (pvVar2 = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar2);
  }
  param_1[0x159] = 0;
  param_1[0x15a] = 0xf;
  *(undefined1 *)(param_1 + 0x157) = 0;
  pvVar1 = (void *)param_1[0x154];
  if (pvVar1 == (void *)0x0) {
    FUN_1807dc8a0(param_1 + 0x119);
    FUN_18073a080(param_1 + 1);
    if ((param_2 & 1) == 0) {
      return param_1;
    }
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  pvVar2 = pvVar1;
  if ((0xfff < (ulonglong)(param_1[0x156] - (longlong)pvVar1)) &&
     (pvVar2 = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar2);
}



############ FUN_ 180715e40 size=155 ############

void FUN_180715e40(undefined8 param_1,void *param_2,undefined8 param_3,undefined8 param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  
  if (*(char *)((longlong)param_2 + 0x19) == '\0') {
    FUN_180715e40(param_1,*(undefined8 *)((longlong)param_2 + 0x10),param_3,param_4,
                  0xfffffffffffffffe);
    plVar4 = *(longlong **)((longlong)param_2 + 0x28);
    if (plVar4 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar4 + 1;
      lVar5 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*plVar4 + 8))(plVar4);
        LOCK();
        piVar2 = (int *)((longlong)plVar4 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar4 + 0x10))(plVar4);
        }
      }
    }
                    /* WARNING: Subroutine does not return */
    free(param_2);
  }
  return;
}



############ FUN_ 180716250 size=374 ############

undefined8 *
FUN_180716250(longlong *param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  char cVar4;
  longlong *plVar5;
  longlong *plVar6;
  longlong lVar7;
  void *_Memory;
  
  plVar5 = (longlong *)*param_1;
  if ((param_3 == (longlong *)*plVar5) && (param_4 == plVar5)) {
    FUN_180715e40(param_1,plVar5[1],param_3,param_4,0xfffffffffffffffe);
    *(longlong **)(*param_1 + 8) = plVar5;
    *(longlong **)*param_1 = plVar5;
    *(longlong **)(*param_1 + 0x10) = plVar5;
    param_1[1] = 0;
    *param_2 = *(undefined8 *)*param_1;
  }
  else {
    if (param_3 != param_4) {
      plVar5 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar5 + 0x19) == '\0') {
        plVar5 = (longlong *)*plVar5;
        cVar4 = *(char *)((longlong)plVar5 + 0x19);
        while (cVar4 == '\0') {
          plVar5 = (longlong *)*plVar5;
          cVar4 = *(char *)((longlong)plVar5 + 0x19);
        }
      }
      else {
        cVar4 = *(char *)(param_3[1] + 0x19);
        plVar1 = (longlong *)param_3[1];
        plVar5 = param_3;
        while ((plVar6 = plVar1, cVar4 == '\0' && (plVar5 == (longlong *)plVar6[2]))) {
          cVar4 = *(char *)(plVar6[1] + 0x19);
          plVar1 = (longlong *)plVar6[1];
          plVar5 = plVar6;
        }
      }
      plVar5 = (longlong *)param_3[2];
      if (*(char *)((longlong)plVar5 + 0x19) == '\0') {
        plVar5 = (longlong *)*plVar5;
        cVar4 = *(char *)((longlong)plVar5 + 0x19);
        while (cVar4 == '\0') {
          plVar5 = (longlong *)*plVar5;
          cVar4 = *(char *)((longlong)plVar5 + 0x19);
        }
      }
      else {
        cVar4 = *(char *)(param_3[1] + 0x19);
        plVar5 = (longlong *)param_3[1];
        while ((plVar1 = plVar5, cVar4 == '\0' && (param_3 == (longlong *)plVar1[2]))) {
          cVar4 = *(char *)(plVar1[1] + 0x19);
          plVar5 = (longlong *)plVar1[1];
          param_3 = plVar1;
        }
      }
      _Memory = (void *)FUN_180715ef0(param_1);
      plVar5 = *(longlong **)((longlong)_Memory + 0x28);
      if (plVar5 != (longlong *)0x0) {
        LOCK();
        plVar1 = plVar5 + 1;
        lVar7 = *plVar1;
        *(int *)plVar1 = (int)*plVar1 + -1;
        UNLOCK();
        if ((int)lVar7 == 1) {
          (**(code **)(*plVar5 + 8))(plVar5);
          LOCK();
          piVar2 = (int *)((longlong)plVar5 + 0xc);
          iVar3 = *piVar2;
          *piVar2 = *piVar2 + -1;
          UNLOCK();
          if (iVar3 == 1) {
            (**(code **)(*plVar5 + 0x10))(plVar5);
          }
        }
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_2 = param_3;
  }
  return param_2;
}



############ FUN_ 18071c130 size=85 ############

undefined8 * FUN_18071c130(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = apache::thrift::TException::vftable;
  FUN_180485450(param_1 + 3);
  *param_1 = std::exception::vftable;
  __std_exception_destroy(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18071f0b0 size=52 ############

void * FUN_18071f0b0(void *param_1,ulonglong param_2)

{
  FUN_18071ee70();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18071ff50 size=144 ############

void FUN_18071ff50(undefined8 *param_1,undefined8 *param_2)

{
  int *piVar1;
  int iVar2;
  undefined8 *_Memory;
  
  do {
    if (param_1 == param_2) {
      return;
    }
    _Memory = (undefined8 *)*param_1;
    if (_Memory != (undefined8 *)0x0) {
      LOCK();
      piVar1 = (int *)(_Memory + 3);
      iVar2 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if ((iVar2 == 1) && (_Memory != (undefined8 *)0x0)) {
        if ((longlong)_Memory[1] - 1U < 0xfffffffffffffffe) {
          CloseHandle((HANDLE)_Memory[1]);
        }
        if ((longlong)*_Memory - 1U < 0xfffffffffffffffe) {
          CloseHandle((HANDLE)*_Memory);
        }
                    /* WARNING: Subroutine does not return */
        free(_Memory);
      }
    }
    param_1 = param_1 + 1;
  } while( true );
}



############ FUN_ 180723070 size=43 ############

undefined8 * FUN_180723070(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::Stopwatch::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180726690 size=43 ############

undefined8 * FUN_180726690(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = boost::asio::io_service::service::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807266c0 size=67 ############

undefined8 * FUN_1807266c0(undefined8 *param_1,ulonglong param_2)

{
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 6));
  *param_1 = boost::asio::io_service::service::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180726ba0 size=62 ############

undefined8 * FUN_180726ba0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = apache::thrift::TApplicationException::vftable;
  FUN_1805d66b0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807271a0 size=152 ############

undefined8 * FUN_1807271a0(undefined8 *param_1,ulonglong param_2)

{
  void *_Memory;
  
  FUN_180726fe0(param_1 + 0x11);
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xb));
  if ((HANDLE)param_1[9] != (HANDLE)0x0) {
    CloseHandle((HANDLE)param_1[9]);
  }
  _Memory = (void *)param_1[8];
  if (_Memory != (void *)0x0) {
    CloseHandle(*(HANDLE *)((longlong)_Memory + 8));
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
  if ((HANDLE)param_1[5] != (HANDLE)0x0) {
    CloseHandle((HANDLE)param_1[5]);
  }
  *param_1 = boost::asio::io_service::service::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180727510 size=142 ############

undefined8 * FUN_180727510(undefined8 *param_1,ulonglong param_2)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  longlong *plVar4;
  longlong lVar5;
  
  *param_1 = apache::thrift::concurrency::Mutex::vftable;
  plVar4 = (longlong *)param_1[2];
  if (plVar4 != (longlong *)0x0) {
    LOCK();
    plVar1 = plVar4 + 1;
    lVar5 = *plVar1;
    *(int *)plVar1 = (int)*plVar1 + -1;
    UNLOCK();
    if ((int)lVar5 == 1) {
      (**(code **)(*plVar4 + 8))(plVar4);
      LOCK();
      piVar2 = (int *)((longlong)plVar4 + 0xc);
      iVar3 = *piVar2;
      *piVar2 = *piVar2 + -1;
      UNLOCK();
      if (iVar3 == 1) {
        (**(code **)(*plVar4 + 0x10))(plVar4);
      }
    }
  }
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 18073a090 size=43 ############

undefined8 * FUN_18073a090(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::Signer::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807470c0 size=351 ############

void FUN_1807470c0(longlong *param_1,ulonglong param_2,byte *param_3)

{
  void *pvVar1;
  longlong lVar2;
  void *_Memory;
  ulonglong uVar3;
  ulonglong uVar4;
  size_t _Size;
  
  pvVar1 = (void *)*param_1;
  uVar4 = param_1[1] - (longlong)pvVar1;
  uVar3 = param_1[2] - (longlong)pvVar1;
  if (uVar3 < param_2) {
    if (0x7fffffffffffffff < param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_1805a69c0();
    }
    uVar4 = param_2;
    if ((uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1)) &&
       (uVar4 = (uVar3 >> 1) + uVar3, uVar4 < param_2)) {
      uVar4 = param_2;
    }
    if (pvVar1 != (void *)0x0) {
      _Memory = pvVar1;
      if ((0xfff < uVar3) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    if (uVar4 != 0) {
      if (0x7fffffffffffffff < uVar4) {
                    /* WARNING: Subroutine does not return */
        FUN_1805a69c0();
      }
      lVar2 = FUN_1805bc8b0(param_1,uVar4);
      *param_1 = lVar2;
      param_1[1] = lVar2;
      param_1[2] = *param_1 + uVar4;
    }
    pvVar1 = (void *)*param_1;
    memset(pvVar1,(uint)*param_3,param_2);
    param_1[1] = (longlong)pvVar1 + param_2;
  }
  else if (uVar4 < param_2) {
    memset(pvVar1,(uint)*param_3,param_1[1] - (longlong)pvVar1);
    _Size = param_2 - uVar4;
    pvVar1 = (void *)param_1[1];
    memset(pvVar1,(uint)*param_3,_Size);
    param_1[1] = (longlong)pvVar1 + _Size;
  }
  else {
    memset(pvVar1,(uint)*param_3,((longlong)pvVar1 + param_2) - (longlong)pvVar1);
    param_1[1] = (longlong)pvVar1 + param_2;
  }
  return;
}



############ FUN_ 18074f200 size=359 ############

undefined8 *
FUN_18074f200(longlong *param_1,undefined8 *param_2,char param_3,uint *param_4,void *param_5)

{
  char cVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 *puVar4;
  bool bVar5;
  undefined8 *puVar6;
  undefined1 local_10 [8];
  
  puVar4 = (undefined8 *)*param_1;
  bVar5 = true;
  puVar6 = puVar4;
  if (*(char *)((longlong)puVar4[1] + 0x19) == '\0') {
    puVar3 = (undefined8 *)puVar4[1];
    do {
      puVar6 = puVar3;
      if (param_3 == '\0') {
        bVar5 = *param_4 < *(uint *)(puVar6 + 4);
      }
      else {
        bVar5 = *param_4 <= *(uint *)(puVar6 + 4);
      }
      if (bVar5 == false) {
        puVar3 = (undefined8 *)puVar6[2];
      }
      else {
        puVar3 = (undefined8 *)*puVar6;
      }
    } while (*(char *)((longlong)puVar3 + 0x19) == '\0');
  }
  puVar3 = puVar6;
  if (bVar5 != false) {
    if (puVar6 == (undefined8 *)*puVar4) {
      puVar4 = (undefined8 *)
               FUN_18074ed50(param_1,local_10,1,puVar6,param_4,param_5,0xfffffffffffffffe);
      *param_2 = *puVar4;
      *(undefined1 *)(param_2 + 1) = 1;
      return param_2;
    }
    if (*(char *)((longlong)puVar6 + 0x19) == '\0') {
      puVar3 = (undefined8 *)*puVar6;
      if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
        cVar1 = *(char *)((longlong)puVar3[2] + 0x19);
        puVar4 = (undefined8 *)puVar3[2];
        while (cVar1 == '\0') {
          cVar1 = *(char *)((longlong)puVar4[2] + 0x19);
          puVar3 = puVar4;
          puVar4 = (undefined8 *)puVar4[2];
        }
      }
      else {
        cVar1 = *(char *)((longlong)puVar6[1] + 0x19);
        puVar4 = (undefined8 *)puVar6[1];
        puVar3 = puVar6;
        while ((puVar2 = puVar4, cVar1 == '\0' && (puVar3 == (undefined8 *)*puVar2))) {
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar4 = (undefined8 *)puVar2[1];
          puVar3 = puVar2;
        }
        if (*(char *)((longlong)puVar3 + 0x19) == '\0') {
          puVar3 = puVar2;
        }
      }
    }
    else {
      puVar3 = (undefined8 *)puVar6[2];
    }
  }
  if (*(uint *)(puVar3 + 4) < *param_4) {
    puVar4 = (undefined8 *)
             FUN_18074ed50(param_1,local_10,bVar5,puVar6,param_4,param_5,0xfffffffffffffffe);
    *param_2 = *puVar4;
    *(undefined1 *)(param_2 + 1) = 1;
    return param_2;
  }
  FUN_1807dc8a0((longlong)param_5 + 0x28);
                    /* WARNING: Subroutine does not return */
  free(param_5);
}



############ FUN_ 180750b30 size=305 ############

void FUN_180750b30(undefined8 *param_1)

{
  longlong *plVar1;
  int *piVar2;
  int iVar3;
  void *pvVar4;
  longlong *plVar5;
  longlong lVar6;
  void *pvVar7;
  
  *param_1 = pace::ILok2Commander::vftable;
  pvVar4 = (void *)param_1[0x82];
  if (pvVar4 != (void *)0x0) {
    pvVar7 = pvVar4;
    if ((0xfff < (ulonglong)(param_1[0x84] - (longlong)pvVar4)) &&
       (pvVar7 = *(void **)((longlong)pvVar4 + -8),
       0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar7);
  }
  pvVar4 = (void *)param_1[0x7f];
  if (pvVar4 == (void *)0x0) {
    FUN_1806120b0(param_1 + 0x46);
    FUN_180750cf0(param_1 + 0x1a);
    FUN_180750a50(param_1 + 7);
    plVar5 = (longlong *)param_1[6];
    if (plVar5 != (longlong *)0x0) {
      LOCK();
      plVar1 = plVar5 + 1;
      lVar6 = *plVar1;
      *(int *)plVar1 = (int)*plVar1 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*plVar5 + 8))(plVar5);
        LOCK();
        piVar2 = (int *)((longlong)plVar5 + 0xc);
        iVar3 = *piVar2;
        *piVar2 = *piVar2 + -1;
        UNLOCK();
        if (iVar3 == 1) {
          (**(code **)(*plVar5 + 0x10))(plVar5);
        }
      }
    }
    FUN_18077ae60(param_1 + 3);
                    /* WARNING: Subroutine does not return */
    free((void *)param_1[3]);
  }
  pvVar7 = pvVar4;
  if ((0xfff < (ulonglong)(param_1[0x81] - (longlong)pvVar4)) &&
     (pvVar7 = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar7)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar7);
}



############ FUN_ 1807511a0 size=52 ############

void * FUN_1807511a0(void *param_1,ulonglong param_2)

{
  FUN_180750a50();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807511e0 size=43 ############

undefined8 * FUN_1807511e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::ilok::CommandTarget::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180751210 size=52 ############

void * FUN_180751210(void *param_1,ulonglong param_2)

{
  FUN_180750b30();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180751250 size=52 ############

void * FUN_180751250(void *param_1,ulonglong param_2)

{
  FUN_180750cf0();
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 180787190 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180787190(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_180787260;
      FUN_180945810(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x18c) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x188);
      *(undefined1 *)(param_1 + 0x18d) = 1;
    }
    else {
LAB_180787260:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 180788fe0 size=487 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180788fe0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 10) goto LAB_18078912d;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x2c) = 1;
    }
    else if (local_58[0] == 2) {
      if (local_50 == 0xf) {
        *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0x10);
        (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
        FUN_1805b1330(param_1 + 0x10,local_54,param_1 + 0x10);
        uVar3 = 0;
        if (local_54 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x10));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_54);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x2d) = 1;
      }
      else {
LAB_18078912d:
        FUN_1806d8eb0(param_2);
      }
    }
    else {
      if ((local_58[0] != 10000) || (local_50 != 8)) goto LAB_18078912d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x2e) = 1;
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 18078a030 size=357 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18078a030(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 2) goto LAB_18078a0fb;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x10) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0xc);
      *(undefined1 *)(param_1 + 0x11) = 1;
    }
    else {
LAB_18078a0fb:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18078a1b0 size=421 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18078a1b0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xb) goto LAB_18078a2bb;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x6c) = 1;
    }
    else if (local_48[0] == 2) {
      if (local_44 != 0xb) goto LAB_18078a2bb;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x6d) = 1;
    }
    else if (local_48[0] == 3) {
      if (local_44 != 0xb) goto LAB_18078a2bb;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
      *(undefined1 *)(param_1 + 0x6e) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x68);
      *(undefined1 *)(param_1 + 0x6f) = 1;
    }
    else {
LAB_18078a2bb:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18078ca60 size=967 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18078ca60(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  uint uVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  undefined1 auStack_a8 [32];
  short local_88 [2];
  uint local_84;
  uint local_80;
  uint local_7c;
  uint local_78;
  int local_74;
  undefined1 local_70 [4];
  undefined1 local_6c [4];
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_74,local_88);
  do {
    if (local_74 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar2 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar2;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_88[0] == 1) {
      if (local_74 != 0xf) goto LAB_18078cd94;
      FUN_1807870d0(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_78);
      FUN_1807857a0(param_1 + 8,local_78,param_1 + 8);
      uVar5 = 0;
      if (local_78 != 0) {
        do {
          FUN_1809c9170(uVar5 * 0x160 + *(longlong *)(param_1 + 8),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_78);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x6c) = 1;
    }
    else if (local_88[0] == 2) {
      if (local_74 != 0xf) goto LAB_18078cd94;
      puVar1 = *(undefined8 **)(param_1 + 0x28);
      for (puVar4 = *(undefined8 **)(param_1 + 0x20); puVar4 != puVar1; puVar4 = puVar4 + 0x2c) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x20);
      (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_7c);
      FUN_1807857a0(param_1 + 0x20,local_7c,param_1 + 0x20);
      uVar5 = 0;
      if (local_7c != 0) {
        do {
          FUN_1809c9170(uVar5 * 0x160 + *(longlong *)(param_1 + 0x20),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_7c);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x6d) = 1;
    }
    else if (local_88[0] == 3) {
      if (local_74 != 0xf) goto LAB_18078cd94;
      puVar1 = *(undefined8 **)(param_1 + 0x40);
      for (puVar4 = *(undefined8 **)(param_1 + 0x38); puVar4 != puVar1; puVar4 = puVar4 + 0x2c) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(param_1 + 0x38);
      (**(code **)(*param_2 + 0xf0))(param_2,local_6c,&local_80);
      FUN_1807857a0(param_1 + 0x38,local_80,param_1 + 0x38);
      uVar5 = 0;
      if (local_80 != 0) {
        do {
          FUN_1809c9170(uVar5 * 0x160 + *(longlong *)(param_1 + 0x38),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_80);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x6e) = 1;
    }
    else if (local_88[0] == 10) {
      if (local_74 != 0xf) goto LAB_18078cd94;
      puVar1 = *(undefined8 **)(param_1 + 0x58);
      for (puVar4 = *(undefined8 **)(param_1 + 0x50); puVar4 != puVar1; puVar4 = puVar4 + 0x2c) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x58) = *(undefined8 *)(param_1 + 0x50);
      (**(code **)(*param_2 + 0xf0))(param_2,local_70,&local_84);
      FUN_1807857a0(param_1 + 0x50,local_84,param_1 + 0x50);
      uVar5 = 0;
      if (local_84 != 0) {
        do {
          FUN_1809c9170(uVar5 * 0x160 + *(longlong *)(param_1 + 0x50),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_84);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x6f) = 1;
    }
    else if ((local_88[0] == 10000) && (local_74 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x68);
      *(undefined1 *)(param_1 + 0x70) = 1;
    }
    else {
LAB_18078cd94:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_74,local_88);
  } while( true );
}



############ FUN_ 1809c9170 size=735 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809c9170(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 0xb) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x150) = 1;
      break;
    case 2:
      if (local_54 != 8) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x151) = 1;
      break;
    case 3:
      if (local_54 != 0xb) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x30);
      *(undefined1 *)(param_1 + 0x152) = 1;
      break;
    case 4:
      if (local_54 != 0xc) goto switchD_1809c9224_caseD_6;
      FUN_1809c96f0(param_1 + 0x50,param_2);
      *(undefined1 *)(param_1 + 0x153) = 1;
      break;
    case 5:
      if (local_54 != 0xc) goto switchD_1809c9224_caseD_6;
      FUN_1809c96f0(param_1 + 0xb8,param_2);
      *(undefined1 *)(param_1 + 0x154) = 1;
      break;
    default:
switchD_1809c9224_caseD_6:
LAB_1809c93b5:
      FUN_1806d8eb0(param_2);
      break;
    case 10:
      if (local_54 != 2) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x120);
      *(undefined1 *)(param_1 + 0x155) = 1;
      break;
    case 0xb:
      if (local_54 != 2) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x121);
      *(undefined1 *)(param_1 + 0x156) = 1;
      break;
    case 0xc:
      if (local_54 != 2) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x122);
      *(undefined1 *)(param_1 + 0x157) = 1;
      break;
    case 0xd:
      if (local_54 != 2) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x123);
      *(undefined1 *)(param_1 + 0x158) = 1;
      break;
    case 100:
      if (local_54 != 10) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x128);
      *(undefined1 *)(param_1 + 0x159) = 1;
      break;
    case 0x65:
      if (local_54 != 0xb) goto LAB_1809c93b5;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x130);
      *(undefined1 *)(param_1 + 0x15a) = 1;
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 18078ce50 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18078ce50(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18078cf20;
      FUN_1806dc070(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x244) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x240);
      *(undefined1 *)(param_1 + 0x245) = 1;
    }
    else {
LAB_18078cf20:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 1809f8ae0 size=616 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f8ae0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *pvVar2;
  undefined1 auStack_a8 [32];
  short local_88 [2];
  short local_84 [2];
  int local_80;
  int local_7c;
  undefined8 local_78;
  undefined1 local_70;
  undefined7 uStack_6f;
  undefined8 local_60;
  ulonglong local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_7c,local_84);
  do {
    if (local_7c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_4f,local_50);
      pvVar2 = pvVar1;
      if ((0xfff < local_38 + 1) &&
         (pvVar2 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    if (local_84[0] == 1) {
      if (local_7c != 0xc) goto LAB_1809f8cb0;
      local_60 = 0;
      local_58 = 0xf;
      local_70 = 0;
      (**(code **)(*param_2 + 0xc0))(param_2,&local_70);
      (**(code **)(*param_2 + 0xd0))(param_2,&local_70,&local_80,local_88);
      while (local_80 != 0) {
        if (local_88[0] == 1) {
          if (local_80 != 0xb) goto LAB_1809f8c29;
          (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x10);
          *(undefined1 *)(param_1 + 0x50) = 1;
        }
        else if ((local_88[0] == 2) && (local_80 == 0xb)) {
          (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x30);
          *(undefined1 *)(param_1 + 0x51) = 1;
        }
        else {
LAB_1809f8c29:
          FUN_1806d8eb0(param_2);
        }
        (**(code **)(*param_2 + 0xd8))(param_2);
        (**(code **)(*param_2 + 0xd0))(param_2,&local_70,&local_80,local_88);
      }
      (**(code **)(*param_2 + 200))(param_2);
      if (0xf < local_58) {
        pvVar1 = (void *)CONCAT71(uStack_6f,local_70);
        pvVar2 = pvVar1;
        if ((0xfff < local_58 + 1) &&
           (pvVar2 = *(void **)((longlong)pvVar1 + -8),
           0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar2);
      }
      *(undefined1 *)(param_1 + 0xf0) = 1;
    }
    else if ((local_84[0] == 2) && (local_7c == 0xc)) {
      FUN_1809f8d70(param_1 + 0x58,param_2);
      *(undefined1 *)(param_1 + 0xf1) = 1;
    }
    else {
LAB_1809f8cb0:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_7c,local_84);
  } while( true );
}



############ FUN_ 1809f8d70 size=480 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f8d70(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xb) goto LAB_1809f8eb6;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x90) = 1;
    }
    else if (local_48[0] == 2) {
      if (local_44 != 8) goto LAB_1809f8eb6;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x91) = 1;
    }
    else if (local_48[0] == 3) {
      if (local_44 != 0xb) goto LAB_1809f8eb6;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x30);
      *(undefined1 *)(param_1 + 0x92) = 1;
    }
    else if (local_48[0] == 4) {
      if (local_44 != 0xb) goto LAB_1809f8eb6;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x50);
      *(undefined1 *)(param_1 + 0x93) = 1;
    }
    else if ((local_48[0] == 5) && (local_44 == 0xb)) {
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x70);
      *(undefined1 *)(param_1 + 0x94) = 1;
    }
    else {
LAB_1809f8eb6:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 180792ec0 size=491 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180792ec0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 0xf) goto LAB_180793011;
      *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
      FUN_1805b1330(param_1 + 8,local_54,param_1 + 8);
      uVar3 = 0;
      if (local_54 != 0) {
        do {
          (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 8));
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_54);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x54) = 1;
    }
    else if (local_58[0] == 2) {
      if (local_50 != 0xc) goto LAB_180793011;
      FUN_1809c9500(param_1 + 0x20,param_2);
      *(undefined1 *)(param_1 + 0x55) = 1;
    }
    else if ((local_58[0] == 10000) && (local_50 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x50);
      *(undefined1 *)(param_1 + 0x56) = 1;
    }
    else {
LAB_180793011:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 1809c9500 size=470 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809c9500(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_88 [32];
  short local_68 [2];
  uint local_64;
  int local_60;
  undefined4 local_5c;
  undefined1 local_58 [8];
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_60,local_68);
  do {
    if (local_60 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_68[0] == 1) {
      if (local_60 != 8) goto LAB_1809c9639;
      (**(code **)(*param_2 + 0x128))(param_2,&local_5c);
      *(undefined4 *)(param_1 + 8) = local_5c;
      *(undefined1 *)(param_1 + 0x28) = 1;
    }
    else if ((local_68[0] == 0xb) && (local_60 == 0xf)) {
      FUN_1807870d0(param_1 + 0x10);
      (**(code **)(*param_2 + 0xf0))(param_2,local_58,&local_64);
      FUN_1807857a0(param_1 + 0x10,local_64,param_1 + 0x10);
      uVar3 = 0;
      if (local_64 != 0) {
        do {
          FUN_1809c9170(uVar3 * 0x160 + *(longlong *)(param_1 + 0x10),param_2);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_64);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x29) = 1;
    }
    else {
LAB_1809c9639:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_60,local_68);
  } while( true );
}



############ FUN_ 180794620 size=463 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180794620(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 0xf) goto LAB_180794755;
      FUN_180786ed0(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
      FUN_180785e60(param_1 + 8,local_54,param_1 + 8);
      uVar3 = 0;
      if (local_54 != 0) {
        do {
          FUN_1806dbc20(uVar3 * 0x1d0 + *(longlong *)(param_1 + 8),param_2);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_54);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_58[0] == 10000) && (local_50 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x20);
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_180794755:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 180794810 size=495 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180794810(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 0xf) goto LAB_180794965;
      FUN_180786f50(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
      FUN_180785490(param_1 + 8,local_54,param_1 + 8);
      uVar3 = 0;
      if (local_54 != 0) {
        do {
          FUN_18094a7b0(uVar3 * 0x460 + *(longlong *)(param_1 + 8),param_2);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_54);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x28) = 1;
    }
    else if (local_58[0] == 0xc45) {
      if (local_50 != 2) goto LAB_180794965;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x20);
      *(undefined1 *)(param_1 + 0x29) = 1;
    }
    else if ((local_58[0] == 10000) && (local_50 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x24);
      *(undefined1 *)(param_1 + 0x2a) = 1;
    }
    else {
LAB_180794965:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 18094a7b0 size=1648 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18094a7b0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_98 [32];
  undefined2 local_78 [2];
  uint local_74;
  uint local_70;
  int local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined1 local_60 [4];
  undefined1 local_5c [4];
  undefined8 local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_6c,local_78);
  do {
    if (local_6c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_4f,local_50);
      _Memory = pvVar1;
      if ((0xfff < local_38 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_78[0]) {
    case 1:
      if (local_6c != 10) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x43c) = 1;
      break;
    case 2:
      if (local_6c != 10) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x10);
      *(undefined1 *)(param_1 + 0x43d) = 1;
      break;
    case 3:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x18);
      *(undefined1 *)(param_1 + 0x43e) = 1;
      break;
    default:
switchD_18094a85c_caseD_4:
LAB_18094ad8d:
      FUN_1806d8eb0(param_2);
      break;
    case 5:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x38);
      *(undefined1 *)(param_1 + 0x43f) = 1;
      break;
    case 6:
      if (local_6c != 0xc) goto switchD_18094a85c_caseD_4;
      FUN_18094b9e0(param_1 + 0x40,param_2);
      *(undefined1 *)(param_1 + 0x440) = 1;
      break;
    case 10:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,&local_68);
      *(undefined4 *)(param_1 + 400) = local_68;
      *(undefined1 *)(param_1 + 0x441) = 1;
      break;
    case 0xb:
      if (local_6c != 2) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x194);
      *(undefined1 *)(param_1 + 0x442) = 1;
      break;
    case 0xc:
      if (local_6c != 10) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x198);
      *(undefined1 *)(param_1 + 0x443) = 1;
      break;
    case 0xd:
      if (local_6c != 0xf) goto LAB_18094ad8d;
      *(undefined8 *)(param_1 + 0x1a8) = *(undefined8 *)(param_1 + 0x1a0);
      (**(code **)(*param_2 + 0xf0))(param_2,local_60,&local_74);
      FUN_1805b1330(param_1 + 0x1a0,local_74,param_1 + 0x1a0);
      uVar3 = 0;
      if (local_74 != 0) {
        do {
          (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x1a0));
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_74);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x444) = 1;
      break;
    case 0xe:
      if (local_6c != 0xf) goto LAB_18094ad8d;
      *(undefined8 *)(param_1 + 0x1c0) = *(undefined8 *)(param_1 + 0x1b8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_5c,&local_70);
      FUN_1806d9860(param_1 + 0x1b8,local_70,param_1 + 0x1b8);
      uVar3 = 0;
      if (local_70 != 0) {
        do {
          (**(code **)(*param_2 + 0x130))(param_2,*(longlong *)(param_1 + 0x1b8) + uVar3 * 8);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_70);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x445) = 1;
      break;
    case 0xf:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x1d0);
      *(undefined1 *)(param_1 + 0x446) = 1;
      break;
    case 0x10:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x1f0);
      *(undefined1 *)(param_1 + 0x447) = 1;
      break;
    case 0x14:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x210);
      *(undefined1 *)(param_1 + 0x448) = 1;
      break;
    case 0x15:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x230);
      *(undefined1 *)(param_1 + 0x449) = 1;
      break;
    case 0x16:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x250);
      *(undefined1 *)(param_1 + 0x44a) = 1;
      break;
    case 0x17:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x270);
      *(undefined1 *)(param_1 + 1099) = 1;
      break;
    case 0x18:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x290);
      *(undefined1 *)(param_1 + 0x44c) = 1;
      break;
    case 0x19:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x2b0);
      *(undefined1 *)(param_1 + 0x44d) = 1;
      break;
    case 0x1a:
      if (local_6c != 0xb) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x2b8);
      *(undefined1 *)(param_1 + 0x44e) = 1;
      break;
    case 0x1e:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x2d8);
      *(undefined1 *)(param_1 + 0x44f) = 1;
      break;
    case 0x1f:
      if (local_6c != 2) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x2dc);
      *(undefined1 *)(param_1 + 0x450) = 1;
      break;
    case 0x28:
      if (local_6c != 2) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x2dd);
      *(undefined1 *)(param_1 + 0x451) = 1;
      break;
    case 0x29:
      if (local_6c != 2) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x2de);
      *(undefined1 *)(param_1 + 0x452) = 1;
      break;
    case 0x2a:
      if (local_6c != 2) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x2df);
      *(undefined1 *)(param_1 + 0x453) = 1;
      break;
    case 0x2b:
      if (local_6c != 0xc) goto switchD_18094a85c_caseD_4;
      FUN_18094f6f0(param_1 + 0x2e0,param_2);
      *(undefined1 *)(param_1 + 0x454) = 1;
      break;
    case 0x2c:
      if (local_6c != 0xc) goto switchD_18094a85c_caseD_4;
      FUN_18094f6f0(param_1 + 0x388,param_2);
      *(undefined1 *)(param_1 + 0x455) = 1;
      break;
    case 0x2d:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x430);
      *(undefined1 *)(param_1 + 0x456) = 1;
      break;
    case 0x2e:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x434);
      *(undefined1 *)(param_1 + 0x457) = 1;
      break;
    case 0x2f:
      if (local_6c != 8) goto LAB_18094ad8d;
      (**(code **)(*param_2 + 0x128))(param_2,&local_64);
      *(undefined4 *)(param_1 + 0x438) = local_64;
      *(undefined1 *)(param_1 + 0x458) = 1;
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_6c,local_78);
  } while( true );
}



############ FUN_ 180795a80 size=775 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180795a80(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  uint uVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  undefined1 auStack_98 [32];
  short local_78 [2];
  uint local_74;
  uint local_70;
  uint local_6c;
  int local_68;
  undefined1 local_64 [4];
  undefined1 local_60 [4];
  undefined1 local_5c [4];
  undefined8 local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_68,local_78);
  do {
    if (local_68 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar2 = (void *)CONCAT71(uStack_4f,local_50);
      _Memory = pvVar2;
      if ((0xfff < local_38 + 1) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_78[0] == 1) {
      if (local_68 != 0xf) goto LAB_180795cf4;
      FUN_180686300(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_5c,&local_6c);
      FUN_1807850e0(param_1 + 8,local_6c,param_1 + 8);
      uVar5 = 0;
      if (local_6c != 0) {
        do {
          FUN_1806ea2b0(uVar5 * 0x540 + *(longlong *)(param_1 + 8),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_6c);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x54) = 1;
    }
    else if (local_78[0] == 2) {
      if (local_68 != 0xf) goto LAB_180795cf4;
      puVar1 = *(undefined8 **)(param_1 + 0x28);
      for (puVar4 = *(undefined8 **)(param_1 + 0x20); puVar4 != puVar1; puVar4 = puVar4 + 0xa8) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x20);
      (**(code **)(*param_2 + 0xf0))(param_2,local_60,&local_70);
      FUN_1807850e0(param_1 + 0x20,local_70,param_1 + 0x20);
      uVar5 = 0;
      if (local_70 != 0) {
        do {
          FUN_1806ea2b0(uVar5 * 0x540 + *(longlong *)(param_1 + 0x20),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_70);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x55) = 1;
    }
    else if (local_78[0] == 3) {
      if (local_68 != 0xf) goto LAB_180795cf4;
      puVar1 = *(undefined8 **)(param_1 + 0x40);
      for (puVar4 = *(undefined8 **)(param_1 + 0x38); puVar4 != puVar1; puVar4 = puVar4 + 0xa8) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(param_1 + 0x38);
      (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_74);
      FUN_1807850e0(param_1 + 0x38,local_74,param_1 + 0x38);
      uVar5 = 0;
      if (local_74 != 0) {
        do {
          FUN_1806ea2b0(uVar5 * 0x540 + *(longlong *)(param_1 + 0x38),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_74);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x56) = 1;
    }
    else if ((local_78[0] == 10000) && (local_68 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x50);
      *(undefined1 *)(param_1 + 0x57) = 1;
    }
    else {
LAB_180795cf4:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_68,local_78);
  } while( true );
}



############ FUN_ 180797ab0 size=496 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180797ab0(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  uint uVar3;
  undefined8 *puVar4;
  undefined1 auStack_88 [32];
  short local_68 [2];
  uint local_64;
  int local_60;
  undefined1 local_5c [4];
  undefined8 local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_60,local_68);
  do {
    if (local_60 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar2 = (void *)CONCAT71(uStack_4f,local_50);
      _Memory = pvVar2;
      if ((0xfff < local_38 + 1) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_68[0] == 1) {
      if (local_60 != 0xf) goto LAB_180797c05;
      puVar1 = *(undefined8 **)(param_1 + 0x10);
      for (puVar4 = *(undefined8 **)(param_1 + 8); puVar4 != puVar1; puVar4 = puVar4 + 0x1f) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_5c,&local_64);
      FUN_180784720(param_1 + 8,local_64,param_1 + 8);
      uVar3 = 0;
      if (local_64 != 0) {
        do {
          FUN_1806ea6b0((ulonglong)uVar3 * 0xf8 + *(longlong *)(param_1 + 8),param_2);
          uVar3 = uVar3 + 1;
        } while (uVar3 < local_64);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_68[0] == 10000) && (local_60 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x20);
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_180797c05:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_60,local_68);
  } while( true );
}



############ FUN_ 180797cc0 size=463 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180797cc0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 0xf) goto LAB_180797df5;
      FUN_180787050(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
      FUN_1807861d0(param_1 + 8,local_54,param_1 + 8);
      uVar3 = 0;
      if (local_54 != 0) {
        do {
          FUN_1806e9b20(uVar3 * 0x98 + *(longlong *)(param_1 + 8),param_2);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_54);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_58[0] == 10000) && (local_50 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x20);
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_180797df5:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 180797eb0 size=463 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180797eb0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 0xf) goto LAB_180797fe5;
      FUN_180786e50(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
      FUN_180784dd0(param_1 + 8,local_54,param_1 + 8);
      uVar3 = 0;
      if (local_54 != 0) {
        do {
          FUN_180941650(uVar3 * 0x2f0 + *(longlong *)(param_1 + 8),param_2);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_54);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_58[0] == 10000) && (local_50 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x20);
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_180797fe5:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 180799a70 size=495 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_180799a70(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  uint uVar3;
  undefined8 *puVar4;
  ulonglong uVar5;
  undefined1 auStack_88 [32];
  short local_68 [2];
  uint local_64;
  int local_60;
  undefined1 local_5c [4];
  undefined8 local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_58 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_60,local_68);
  do {
    if (local_60 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar2 = (void *)CONCAT71(uStack_4f,local_50);
      _Memory = pvVar2;
      if ((0xfff < local_38 + 1) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_68[0] == 1) {
      if (local_60 != 0xf) goto LAB_180799bc4;
      puVar1 = *(undefined8 **)(param_1 + 0x10);
      for (puVar4 = *(undefined8 **)(param_1 + 8); puVar4 != puVar1; puVar4 = puVar4 + 6) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_5c,&local_64);
      FUN_180785b80(param_1 + 8,local_64,param_1 + 8);
      uVar5 = 0;
      if (local_64 != 0) {
        do {
          FUN_1806dbef0(uVar5 * 0x30 + *(longlong *)(param_1 + 8),param_2);
          uVar3 = (int)uVar5 + 1;
          uVar5 = (ulonglong)uVar3;
        } while (uVar3 < local_64);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_68[0] == 10000) && (local_60 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x20);
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_180799bc4:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_60,local_68);
  } while( true );
}



############ FUN_ 18079adb0 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079adb0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079ae80;
      FUN_1809c8f00(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x9c) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x98);
      *(undefined1 *)(param_1 + 0x9d) = 1;
    }
    else {
LAB_18079ae80:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 1809c8f00 size=589 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809c8f00(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_78 [32];
  short local_58 [2];
  uint local_54;
  int local_50;
  undefined1 local_4c [4];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  do {
    if (local_50 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_58[0] == 1) {
      if (local_50 != 0xb) goto LAB_1809c90b3;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x88) = 1;
    }
    else if (local_58[0] == 2) {
      if (local_50 != 2) goto LAB_1809c90b3;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x89) = 1;
    }
    else if (local_58[0] == 3) {
      if (local_50 != 0xf) goto LAB_1809c90b3;
      FUN_1807870d0(param_1 + 0x30);
      (**(code **)(*param_2 + 0xf0))(param_2,local_4c,&local_54);
      FUN_1807857a0(param_1 + 0x30,local_54,param_1 + 0x30);
      uVar3 = 0;
      if (local_54 != 0) {
        do {
          FUN_1809c9170(uVar3 * 0x160 + *(longlong *)(param_1 + 0x30),param_2);
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_54);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x8a) = 1;
    }
    else if (local_58[0] == 4) {
      if (local_50 != 0xb) goto LAB_1809c90b3;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
      *(undefined1 *)(param_1 + 0x8b) = 1;
    }
    else if ((local_58[0] == 5) && (local_50 == 0xb)) {
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x68);
      *(undefined1 *)(param_1 + 0x8c) = 1;
    }
    else {
LAB_1809c90b3:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_50,local_58);
  } while( true );
}



############ FUN_ 18079af30 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079af30(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079b000;
      FUN_1809c98f0(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x20c) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x208);
      *(undefined1 *)(param_1 + 0x20d) = 1;
    }
    else {
LAB_18079b000:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 1809c98f0 size=1258 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809c98f0(longlong param_1,longlong *param_2)

{
  char cVar1;
  undefined8 *puVar2;
  void *pvVar3;
  undefined8 *puVar4;
  void *_Memory;
  undefined8 *puVar5;
  undefined8 *puVar6;
  uint uVar7;
  undefined1 auStack_d8 [32];
  longlong local_b8;
  undefined2 local_a8 [2];
  undefined1 local_a4 [4];
  int local_a0;
  uint local_9c;
  undefined4 local_98;
  int local_94;
  int local_90;
  undefined4 local_8c;
  undefined1 local_88 [4];
  undefined1 local_84 [4];
  int *local_80;
  undefined8 *local_78;
  undefined8 local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined8 local_58;
  ulonglong local_50;
  ulonglong local_48;
  
  local_70 = 0xfffffffffffffffe;
  local_48 = DAT_182615970 ^ (ulonglong)auStack_d8;
  local_58 = 0;
  local_50 = 0xf;
  local_68 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_68);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_68,&local_a0,local_a8);
  do {
    if (local_a0 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_50 < 0x10) {
      }
      pvVar3 = (void *)CONCAT71(uStack_67,local_68);
      _Memory = pvVar3;
      if ((0xfff < local_50 + 1) &&
         (_Memory = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_a8[0]) {
    case 1:
      if (local_a0 != 0xc) goto switchD_1809c99a5_caseD_d;
      FUN_1809c9170(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x1ea) = 1;
      break;
    case 2:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x168);
      *(undefined1 *)(param_1 + 0x1eb) = 1;
      break;
    case 3:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x169);
      *(undefined1 *)(param_1 + 0x1ec) = 1;
      break;
    case 4:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x16a);
      *(undefined1 *)(param_1 + 0x1ed) = 1;
      break;
    case 5:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x16b);
      *(undefined1 *)(param_1 + 0x1ee) = 1;
      break;
    case 6:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x16c);
      *(undefined1 *)(param_1 + 0x1ef) = 1;
      break;
    case 7:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x16d);
      *(undefined1 *)(param_1 + 0x1f0) = 1;
      break;
    case 8:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x16e);
      *(undefined1 *)(param_1 + 0x1f1) = 1;
      break;
    case 9:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x16f);
      *(undefined1 *)(param_1 + 0x1f2) = 1;
      break;
    case 10:
      if (local_a0 != 0xb) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x170);
      *(undefined1 *)(param_1 + 499) = 1;
      break;
    case 0xb:
      if (local_a0 != 0xb) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 400);
      *(undefined1 *)(param_1 + 500) = 1;
      break;
    case 0xc:
      if (local_a0 != 0xb) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x1b0);
      *(undefined1 *)(param_1 + 0x1f5) = 1;
      break;
    default:
switchD_1809c99a5_caseD_d:
LAB_1809c9d46:
      FUN_1806d8eb0(param_2);
      break;
    case 0x14:
      if (local_a0 != 8) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x1d0);
      *(undefined1 *)(param_1 + 0x1f6) = 1;
      break;
    case 0x1e:
      if (local_a0 != 8) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x128))(param_2,&local_98);
      *(undefined4 *)(param_1 + 0x1d4) = local_98;
      *(undefined1 *)(param_1 + 0x1f7) = 1;
      break;
    case 0x1f:
      if (local_a0 != 0xd) goto switchD_1809c99a5_caseD_d;
      FUN_180686270(param_1 + 0x1d8);
      (**(code **)(*param_2 + 0xe0))(param_2,local_84,local_88,&local_9c);
      uVar7 = 0;
      if (local_9c != 0) {
        do {
          (**(code **)(*param_2 + 0x128))(param_2,&local_94);
          local_90 = local_94;
          puVar2 = *(undefined8 **)(param_1 + 0x1d8);
          cVar1 = *(char *)((longlong)puVar2[1] + 0x19);
          puVar6 = puVar2;
          puVar5 = (undefined8 *)puVar2[1];
          while (cVar1 == '\0') {
            if (*(int *)((longlong)puVar5 + 0x1c) < local_94) {
              puVar4 = (undefined8 *)puVar5[2];
              puVar5 = puVar6;
            }
            else {
              puVar4 = (undefined8 *)*puVar5;
            }
            puVar6 = puVar5;
            puVar5 = puVar4;
            cVar1 = *(char *)((longlong)puVar4 + 0x19);
          }
          if ((puVar6 == puVar2) || (local_94 < *(int *)((longlong)puVar6 + 0x1c))) {
            local_80 = &local_90;
            local_b8 = FUN_1809c8ec0(param_1 + 0x1d8,&DAT_181c06eb0,&local_80,local_a4);
            FUN_18099df10(param_1 + 0x1d8,&local_78,puVar6,local_b8 + 0x1c);
            puVar6 = local_78;
          }
          (**(code **)(*param_2 + 0x128))(param_2,&local_8c);
          *(undefined4 *)(puVar6 + 4) = local_8c;
          uVar7 = uVar7 + 1;
        } while (uVar7 < local_9c);
      }
      (**(code **)(*param_2 + 0xe8))(param_2);
      *(undefined1 *)(param_1 + 0x1f8) = 1;
      break;
    case 0x28:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x1e8);
      *(undefined1 *)(param_1 + 0x1f9) = 1;
      break;
    case 0x29:
      if (local_a0 != 2) goto LAB_1809c9d46;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x1e9);
      *(undefined1 *)(param_1 + 0x1fa) = 1;
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_68,&local_a0,local_a8);
  } while( true );
}



############ FUN_ 18079b0b0 size=385 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079b0b0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079b197;
      FUN_18094b550(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x4c) = 1;
    }
    else if (local_48[0] == 2) {
      if (local_44 != 10) goto LAB_18079b197;
      (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x40);
      *(undefined1 *)(param_1 + 0x4d) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x48);
      *(undefined1 *)(param_1 + 0x4e) = 1;
    }
    else {
LAB_18079b197:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18094b550 size=555 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18094b550(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  int iVar2;
  void *_Memory;
  undefined1 auStack_78 [32];
  short local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    iVar2 = (int)local_58[0];
    if (1000 < iVar2) goto switchD_18094b60d_default;
    if (iVar2 == 1000) {
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x10);
        *(undefined1 *)(param_1 + 0x36) = 1;
        goto LAB_18094b6e6;
      }
      goto switchD_18094b60d_default;
    }
    switch(iVar2) {
    case 1:
      if (local_54 != 2) break;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x30) = 1;
      goto LAB_18094b6e6;
    case 2:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 9);
        *(undefined1 *)(param_1 + 0x31) = 1;
        goto LAB_18094b6e6;
      }
      break;
    case 3:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 10);
        *(undefined1 *)(param_1 + 0x32) = 1;
        goto LAB_18094b6e6;
      }
      break;
    case 4:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0xb);
        *(undefined1 *)(param_1 + 0x33) = 1;
        goto LAB_18094b6e6;
      }
      break;
    case 5:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0xc);
        *(undefined1 *)(param_1 + 0x34) = 1;
        goto LAB_18094b6e6;
      }
      break;
    case 6:
      if (local_54 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0xd);
        *(undefined1 *)(param_1 + 0x35) = 1;
        goto LAB_18094b6e6;
      }
    }
switchD_18094b60d_default:
    FUN_1806d8eb0(param_2);
LAB_18094b6e6:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 18079b250 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079b250(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079b320;
      FUN_1809c9e70(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x1d4) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x1d0);
      *(undefined1 *)(param_1 + 0x1d5) = 1;
    }
    else {
LAB_18079b320:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 1809c9e70 size=572 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809c9e70(longlong param_1,longlong *param_2)

{
  longlong *plVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *_Memory;
  uint uVar4;
  undefined8 *puVar5;
  undefined1 auStack_98 [32];
  short local_78 [2];
  uint local_74;
  int local_70;
  undefined4 local_6c;
  undefined1 local_68 [8];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_70,local_78);
  do {
    if (local_70 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar3 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar3;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar3 + -8),
         0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_78[0] == 1) {
      if (local_70 != 8) goto LAB_1809ca00f;
      (**(code **)(*param_2 + 0x128))(param_2,&local_6c);
      *(undefined4 *)(param_1 + 8) = local_6c;
      *(undefined1 *)(param_1 + 0x1c0) = 1;
    }
    else if (local_78[0] == 2) {
      if (local_70 != 0xc) goto LAB_1809ca00f;
      FUN_18094b7b0(param_1 + 0x10,param_2);
      *(undefined1 *)(param_1 + 0x1c1) = 1;
    }
    else if (local_78[0] == 3) {
      if (local_70 != 0xc) goto LAB_1809ca00f;
      FUN_1809f8f70(param_1 + 0x70,param_2);
      *(undefined1 *)(param_1 + 0x1c2) = 1;
    }
    else if ((local_78[0] == 4) && (local_70 == 0xf)) {
      plVar1 = (longlong *)(param_1 + 0x1a8);
      puVar2 = *(undefined8 **)(param_1 + 0x1b0);
      for (puVar5 = (undefined8 *)*plVar1; puVar5 != puVar2; puVar5 = puVar5 + 0x3d) {
        (**(code **)*puVar5)(puVar5,0);
      }
      *(longlong *)(param_1 + 0x1b0) = *plVar1;
      (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_74);
      FUN_18093f860(plVar1,local_74,plVar1);
      uVar4 = 0;
      if (local_74 != 0) {
        do {
          FUN_18094b0c0((ulonglong)uVar4 * 0x1e8 + *plVar1,param_2);
          uVar4 = uVar4 + 1;
        } while (uVar4 < local_74);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x1c3) = 1;
    }
    else {
LAB_1809ca00f:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_70,local_78);
  } while( true );
}



############ FUN_ 18093f860 size=640 ############

void FUN_18093f860(longlong *param_1,ulonglong param_2,undefined8 param_3)

{
  void *pvVar1;
  longlong lVar2;
  longlong lVar3;
  ulonglong uVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  undefined8 *puVar7;
  longlong lVar8;
  void *_Memory;
  ulonglong uVar9;
  ulonglong uVar10;
  longlong lVar11;
  undefined1 local_res8;
  undefined8 uVar12;
  longlong lVar13;
  
  uVar12 = 0xfffffffffffffffe;
  puVar5 = (undefined8 *)param_1[1];
  lVar13 = *param_1;
  lVar3 = ((longlong)puVar5 - lVar13) +
          SUB168(SEXT816(-0x79b47582192e29f7) * SEXT816((longlong)puVar5 - lVar13),8);
  uVar10 = (lVar3 >> 8) - (lVar3 >> 0x3f);
  lVar3 = SUB168(SEXT816(-0x79b47582192e29f7) * SEXT816(param_1[2] - lVar13),8) +
          (param_1[2] - lVar13);
  uVar4 = (lVar3 >> 8) - (lVar3 >> 0x3f);
  if (param_2 <= uVar4) {
    if (param_2 <= uVar10) {
      if (param_2 != uVar10) {
        puVar7 = (undefined8 *)(param_2 * 0x1e8 + lVar13);
        for (puVar6 = puVar7; puVar6 != puVar5; puVar6 = puVar6 + 0x3d) {
          (**(code **)*puVar6)(puVar6,0);
        }
        param_1[1] = (longlong)puVar7;
      }
      return;
    }
    for (lVar3 = param_2 - uVar10; lVar3 != 0; lVar3 = lVar3 + -1) {
      FUN_18093fe50(puVar5);
      puVar5 = puVar5 + 0x3d;
    }
    param_1[1] = (longlong)puVar5;
    return;
  }
  if (0x864b8a7de6d1d6 < param_2) {
                    /* WARNING: Subroutine does not return */
    FUN_1805a69c0();
  }
  uVar9 = param_2;
  if ((uVar4 <= 0x864b8a7de6d1d6 - (uVar4 >> 1)) && (uVar9 = (uVar4 >> 1) + uVar4, uVar9 < param_2))
  {
    uVar9 = param_2;
  }
  lVar2 = FUN_180940330(param_1,uVar9);
  lVar8 = uVar10 * 0x1e8 + lVar2;
  lVar3 = lVar8;
  lVar13 = lVar8;
  for (lVar11 = param_2 - uVar10; lVar11 != 0; lVar11 = lVar11 + -1) {
    FUN_18093fe50(lVar8);
    lVar8 = lVar8 + 0x1e8;
  }
  local_res8 = SUB81(param_1,0);
  FUN_1805b1860(*param_1,param_1[1],lVar2,param_1,0,local_res8,lVar2,lVar3,uVar12,lVar13,lVar8,
                param_3);
  puVar5 = (undefined8 *)*param_1;
  if (puVar5 == (undefined8 *)0x0) {
    *param_1 = lVar2;
    param_1[1] = param_2 * 0x1e8 + lVar2;
    param_1[2] = uVar9 * 0x1e8 + lVar2;
    return;
  }
  puVar6 = (undefined8 *)param_1[1];
  for (; puVar5 != puVar6; puVar5 = puVar5 + 0x3d) {
    (**(code **)*puVar5)(puVar5,0);
  }
  pvVar1 = (void *)*param_1;
  lVar3 = SUB168(SEXT816(-0x79b47582192e29f7) * SEXT816(param_1[2] - (longlong)pvVar1),8) +
          (param_1[2] - (longlong)pvVar1);
  _Memory = pvVar1;
  if ((0xfff < (ulonglong)(((lVar3 >> 8) - (lVar3 >> 0x3f)) * 0x1e8)) &&
     (_Memory = *(void **)((longlong)pvVar1 + -8),
     0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 18094b0c0 size=1015 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18094b0c0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 0xb) break;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x1d0) = 1;
      goto LAB_18094b422;
    case 2:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
        *(undefined1 *)(param_1 + 0x1d1) = 1;
        goto LAB_18094b422;
      }
      break;
    case 3:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0x1d2) = 1;
        goto LAB_18094b422;
      }
      break;
    case 4:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x68);
        *(undefined1 *)(param_1 + 0x1d3) = 1;
        goto LAB_18094b422;
      }
      break;
    default:
      break;
    case 10:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x88);
        *(undefined1 *)(param_1 + 0x1d4) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0xb:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0xa8);
        *(undefined1 *)(param_1 + 0x1d5) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0xc:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 200);
        *(undefined1 *)(param_1 + 0x1d6) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0xd:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0xe8);
        *(undefined1 *)(param_1 + 0x1d7) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0xe:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x108);
        *(undefined1 *)(param_1 + 0x1d8) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0xf:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x128);
        *(undefined1 *)(param_1 + 0x1d9) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x10:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x148);
        *(undefined1 *)(param_1 + 0x1da) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x11:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x168);
        *(undefined1 *)(param_1 + 0x1db) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x12:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x170);
        *(undefined1 *)(param_1 + 0x1dc) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x14:
      if (local_54 == 10) {
        (**(code **)(*param_2 + 0x130))(param_2,param_1 + 400);
        *(undefined1 *)(param_1 + 0x1dd) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x15:
      if (local_54 == 10) {
        (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x198);
        *(undefined1 *)(param_1 + 0x1de) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x1e:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x1a0);
        *(undefined1 *)(param_1 + 0x1df) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x1f:
      if (local_54 == 10) {
        (**(code **)(*param_2 + 0x130))(param_2,param_1 + 0x1a8);
        *(undefined1 *)(param_1 + 0x1e0) = 1;
        goto LAB_18094b422;
      }
      break;
    case 0x20:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x1b0);
        *(undefined1 *)(param_1 + 0x1e1) = 1;
        goto LAB_18094b422;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_18094b422:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 18094b7b0 size=504 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18094b7b0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_78 [32];
  undefined2 local_58 [2];
  int local_54;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_50 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_48);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_30 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_47,local_48);
      _Memory = pvVar1;
      if ((0xfff < local_30 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_58[0]) {
    case 1:
      if (local_54 != 0xb) break;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x58) = 1;
      goto LAB_18094b913;
    case 2:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
        *(undefined1 *)(param_1 + 0x59) = 1;
        goto LAB_18094b913;
      }
      break;
    case 3:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0x5a) = 1;
        goto LAB_18094b913;
      }
      break;
    case 4:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x4c);
        *(undefined1 *)(param_1 + 0x5b) = 1;
        goto LAB_18094b913;
      }
      break;
    case 5:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x50);
        *(undefined1 *)(param_1 + 0x5c) = 1;
        goto LAB_18094b913;
      }
      break;
    case 6:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x54);
        *(undefined1 *)(param_1 + 0x5d) = 1;
        goto LAB_18094b913;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_18094b913:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_48,&local_54,local_58);
  } while( true );
}



############ FUN_ 1809f8f70 size=315 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f8f70(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  while (local_44 != 0) {
    if ((local_48[0] == 1) && (local_44 == 0xc)) {
      FUN_1809f8ae0(param_1 + 0x38,param_2);
      *(undefined1 *)(param_1 + 0x130) = 1;
    }
    else {
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  }
  (**(code **)(*param_2 + 200))(param_2);
  if (0xf < local_20) {
    pvVar1 = (void *)CONCAT71(uStack_37,local_38);
    _Memory = pvVar1;
    if ((0xfff < local_20 + 1) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
}



############ FUN_ 18079c180 size=362 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079c180(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079c250;
      FUN_1806e9d70(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x1fc) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x1f8);
      *(undefined1 *)(param_1 + 0x1fd) = 1;
    }
    else {
LAB_18079c250:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18079c300 size=353 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079c300(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_18079c3c7;
      FUN_1809c9500(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x3c) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x38);
      *(undefined1 *)(param_1 + 0x3d) = 1;
    }
    else {
LAB_18079c3c7:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18079c480 size=682 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079c480(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  int iVar2;
  void *_Memory;
  undefined1 auStack_78 [32];
  short local_58 [2];
  int local_54;
  undefined4 local_50 [2];
  undefined8 local_48;
  undefined1 local_40;
  undefined7 uStack_3f;
  undefined8 local_30;
  ulonglong local_28;
  ulonglong local_20;
  
  local_48 = 0xfffffffffffffffe;
  local_20 = DAT_182615970 ^ (ulonglong)auStack_78;
  local_30 = 0;
  local_28 = 0xf;
  local_40 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_40);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_54,local_58);
  do {
    if (local_54 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_28 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_3f,local_40);
      _Memory = pvVar1;
      if ((0xfff < local_28 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    iVar2 = (int)local_58[0];
    if (10000 < iVar2) goto switchD_18079c53d_default;
    if (iVar2 == 10000) {
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0xec);
        *(undefined1 *)(param_1 + 0xf8) = 1;
        goto LAB_18079c697;
      }
      goto switchD_18079c53d_default;
    }
    switch(iVar2) {
    case 1:
      if (local_54 != 0xb) break;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0xf0) = 1;
      goto LAB_18079c697;
    case 2:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x28);
        *(undefined1 *)(param_1 + 0xf1) = 1;
        goto LAB_18079c697;
      }
      break;
    case 3:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0xf2) = 1;
        goto LAB_18079c697;
      }
      break;
    case 4:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x68);
        *(undefined1 *)(param_1 + 0xf3) = 1;
        goto LAB_18079c697;
      }
      break;
    case 5:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x88);
        *(undefined1 *)(param_1 + 0xf4) = 1;
        goto LAB_18079c697;
      }
      break;
    case 6:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0xa8);
        *(undefined1 *)(param_1 + 0xf5) = 1;
        goto LAB_18079c697;
      }
      break;
    case 7:
      if (local_54 == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 200);
        *(undefined1 *)(param_1 + 0xf6) = 1;
        goto LAB_18079c697;
      }
      break;
    case 8:
      if (local_54 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,local_50);
        *(undefined4 *)(param_1 + 0xe8) = local_50[0];
        *(undefined1 *)(param_1 + 0xf7) = 1;
        goto LAB_18079c697;
      }
    }
switchD_18079c53d_default:
    FUN_1806d8eb0(param_2);
LAB_18079c697:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_40,&local_54,local_58);
  } while( true );
}



############ FUN_ 18079fa30 size=511 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079fa30(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] < 5) {
      if (local_48[0] == 4) {
        if (local_44 != 8) goto LAB_18079fb90;
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x14);
        *(undefined1 *)(param_1 + 0x23) = 1;
      }
      else if (local_48[0] == 1) {
        if (local_44 != 8) goto LAB_18079fb90;
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 8);
        *(undefined1 *)(param_1 + 0x20) = 1;
      }
      else if (local_48[0] == 2) {
        if (local_44 != 8) goto LAB_18079fb90;
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0xc);
        *(undefined1 *)(param_1 + 0x21) = 1;
      }
      else {
        if ((local_48[0] != 3) || (local_44 != 8)) goto LAB_18079fb90;
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x10);
        *(undefined1 *)(param_1 + 0x22) = 1;
      }
    }
    else if (local_48[0] == 5) {
      if (local_44 != 8) goto LAB_18079fb90;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x18);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x1c);
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_18079fb90:
      FUN_1806d8eb0(param_2,local_44);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 18079fc50 size=565 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18079fc50(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_98 [32];
  short local_78 [2];
  uint local_74;
  uint local_70;
  int local_6c;
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  do {
    if (local_6c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar1;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_78[0] == 1) {
      if (local_6c != 0xf) goto LAB_18079fdf1;
      *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_70);
      FUN_1805b1330(param_1 + 8,local_70,param_1 + 8);
      uVar3 = 0;
      if (local_70 != 0) {
        do {
          (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 8));
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_70);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x3c) = 1;
    }
    else if (local_78[0] == 2) {
      if (local_6c != 0xf) goto LAB_18079fdf1;
      *(undefined8 *)(param_1 + 0x28) = *(undefined8 *)(param_1 + 0x20);
      (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_74);
      FUN_1805b1330(param_1 + 0x20,local_74,param_1 + 0x20);
      uVar3 = 0;
      if (local_74 != 0) {
        do {
          (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x20));
          uVar2 = (int)uVar3 + 1;
          uVar3 = (ulonglong)uVar2;
        } while (uVar2 < local_74);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x3d) = 1;
    }
    else if ((local_78[0] == 10000) && (local_6c == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x38);
      *(undefined1 *)(param_1 + 0x3e) = 1;
    }
    else {
LAB_18079fdf1:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  } while( true );
}



############ FUN_ 1807a0020 size=393 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807a0020(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_20 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_37,local_38);
      _Memory = pvVar1;
      if ((0xfff < local_20 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xc) goto LAB_1807a010f;
      FUN_1809454a0(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0xec) = 1;
    }
    else if (local_48[0] == 2) {
      if (local_44 != 0xc) goto LAB_1807a010f;
      FUN_18094d900(param_1 + 0x60,param_2);
      *(undefined1 *)(param_1 + 0xed) = 1;
    }
    else if ((local_48[0] == 10000) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0xe8);
      *(undefined1 *)(param_1 + 0xee) = 1;
    }
    else {
LAB_1807a010f:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  } while( true );
}



############ FUN_ 1809454a0 size=762 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809454a0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_98 [32];
  undefined2 local_78 [2];
  uint local_74;
  uint local_70;
  int local_6c;
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  do {
    if (local_6c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar1;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_78[0]) {
    case 1:
      if (local_6c != 8) break;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x4c) = 1;
      goto LAB_18094570e;
    case 2:
      if (local_6c == 0xf) {
        *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0x10);
        (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_74);
        FUN_1805b1330(param_1 + 0x10,local_74,param_1 + 0x10);
        uVar3 = 0;
        if (local_74 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x10));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_74);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x4d) = 1;
        goto LAB_18094570e;
      }
      break;
    default:
      break;
    case 10:
      if (local_6c == 0xf) {
        *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(param_1 + 0x28);
        (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_70);
        FUN_1805b1330(param_1 + 0x28,local_70,param_1 + 0x28);
        uVar3 = 0;
        if (local_70 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x28));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_70);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x4e) = 1;
        goto LAB_18094570e;
      }
      break;
    case 0xb:
      if (local_6c == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x40);
        *(undefined1 *)(param_1 + 0x4f) = 1;
        goto LAB_18094570e;
      }
      break;
    case 0xc:
      if (local_6c == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x44);
        *(undefined1 *)(param_1 + 0x50) = 1;
        goto LAB_18094570e;
      }
      break;
    case 0x14:
      if (local_6c == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x48);
        *(undefined1 *)(param_1 + 0x51) = 1;
        goto LAB_18094570e;
      }
      break;
    case 0x15:
      if (local_6c == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x49);
        *(undefined1 *)(param_1 + 0x52) = 1;
        goto LAB_18094570e;
      }
      break;
    case 0x16:
      if (local_6c == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x4a);
        *(undefined1 *)(param_1 + 0x53) = 1;
        goto LAB_18094570e;
      }
      break;
    case 0x17:
      if (local_6c == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x4b);
        *(undefined1 *)(param_1 + 0x54) = 1;
        goto LAB_18094570e;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_18094570e:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_6c,local_78);
  } while( true );
}



############ FUN_ 18094d900 size=1098 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_18094d900(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  uint uVar2;
  ulonglong uVar3;
  undefined1 auStack_a8 [32];
  undefined2 local_88 [2];
  uint local_84;
  uint local_80;
  uint local_7c;
  int local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined1 local_6c [4];
  undefined1 local_68 [4];
  undefined1 local_64 [4];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_78,local_88);
  do {
    if (local_78 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar1;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    switch(local_88[0]) {
    case 1:
      if (local_78 != 8) break;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x75) = 1;
      goto LAB_18094dcbe;
    case 2:
      if (local_78 == 0xf) {
        *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(param_1 + 0x10);
        (**(code **)(*param_2 + 0xf0))(param_2,local_6c,&local_84);
        FUN_1805b1330(param_1 + 0x10,local_84,param_1 + 0x10);
        uVar3 = 0;
        if (local_84 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x10));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_84);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x76) = 1;
        goto LAB_18094dcbe;
      }
      break;
    default:
      break;
    case 0x14:
      if (local_78 == 0xf) {
        *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(param_1 + 0x28);
        (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_80);
        FUN_1805b1330(param_1 + 0x28,local_80,param_1 + 0x28);
        uVar3 = 0;
        if (local_80 != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x28));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_80);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x77) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x15:
      if (local_78 == 0xf) {
        *(undefined8 *)(param_1 + 0x48) = *(undefined8 *)(param_1 + 0x40);
        (**(code **)(*param_2 + 0xf0))(param_2,local_64,&local_7c);
        FUN_1805b1330(param_1 + 0x40,local_7c,param_1 + 0x40);
        uVar3 = 0;
        if (local_7c != 0) {
          do {
            (**(code **)(*param_2 + 0x118))(param_2,uVar3 + *(longlong *)(param_1 + 0x40));
            uVar2 = (int)uVar3 + 1;
            uVar3 = (ulonglong)uVar2;
          } while (uVar2 < local_7c);
        }
        (**(code **)(*param_2 + 0xf8))(param_2);
        *(undefined1 *)(param_1 + 0x78) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x16:
      if (local_78 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x58);
        *(undefined1 *)(param_1 + 0x79) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x17:
      if (local_78 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x5c);
        *(undefined1 *)(param_1 + 0x7a) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x18:
      if (local_78 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,&local_74);
        *(undefined4 *)(param_1 + 0x60) = local_74;
        *(undefined1 *)(param_1 + 0x7b) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x19:
      if (local_78 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 100);
        *(undefined1 *)(param_1 + 0x7c) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x1a:
      if (local_78 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,&local_70);
        *(undefined4 *)(param_1 + 0x68) = local_70;
        *(undefined1 *)(param_1 + 0x7d) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x1b:
      if (local_78 == 8) {
        (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x6c);
        *(undefined1 *)(param_1 + 0x7e) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x1e:
      if (local_78 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x70);
        *(undefined1 *)(param_1 + 0x7f) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x1f:
      if (local_78 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x71);
        *(undefined1 *)(param_1 + 0x80) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x20:
      if (local_78 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x72);
        *(undefined1 *)(param_1 + 0x81) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x21:
      if (local_78 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x73);
        *(undefined1 *)(param_1 + 0x82) = 1;
        goto LAB_18094dcbe;
      }
      break;
    case 0x22:
      if (local_78 == 2) {
        (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x74);
        *(undefined1 *)(param_1 + 0x83) = 1;
        goto LAB_18094dcbe;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_18094dcbe:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_78,local_88);
  } while( true );
}



############ FUN_ 1807b82c0 size=43 ############

undefined8 * FUN_1807b82c0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_closeConnection_pargs::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b82f0 size=120 ############

undefined8 * FUN_1807b82f0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_closeConnection_presult::vftable;
  param_1[2] = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  param_1[9] = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0x14);
  FUN_18067b220(param_1 + 10);
  FUN_1805d66b0(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8370 size=43 ############

undefined8 * FUN_1807b8370(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_doIlokCommand_pargs::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b83a0 size=120 ############

undefined8 * FUN_1807b83a0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_doIlokCommand_presult::vftable;
  param_1[2] = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  param_1[9] = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0x14);
  FUN_18067b220(param_1 + 10);
  FUN_1805d66b0(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8420 size=43 ############

undefined8 * FUN_1807b8420(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_findAuthorizations_pargs::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8450 size=120 ############

undefined8 * FUN_1807b8450(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_findAuthorizations_presult::vftable;
  param_1[2] = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  param_1[9] = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0x14);
  FUN_18067b220(param_1 + 10);
  FUN_1805d66b0(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b84d0 size=43 ############

undefined8 * FUN_1807b84d0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_getServiceStats_pargs::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8500 size=43 ############

undefined8 * FUN_1807b8500(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_getServiceStats_presult::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8530 size=43 ############

undefined8 * FUN_1807b8530(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_listIloks_pargs::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8560 size=120 ############

undefined8 * FUN_1807b8560(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_listIloks_presult::vftable;
  param_1[2] = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  param_1[9] = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0x14);
  FUN_18067b220(param_1 + 10);
  FUN_1805d66b0(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b85e0 size=43 ############

undefined8 * FUN_1807b85e0(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_openConnection_pargs::vftable;
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8610 size=119 ############

undefined8 * FUN_1807b8610(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::AuthorizationLite_openConnection_presult::vftable;
  param_1[2] = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  param_1[9] = pace::eden::thrift::exception::ExceptionInfo::vftable;
  FUN_18067b2e0(param_1 + 0x14);
  FUN_18067b220(param_1 + 10);
  FUN_1805d66b0(param_1 + 2);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8690 size=66 ############

undefined8 * FUN_1807b8690(undefined8 *param_1,ulonglong param_2)

{
  *param_1 = pace::eden::thrift::authorize::OpenConnectionOptionals::vftable;
  FUN_180750a50(param_1 + 1);
  if ((param_2 & 1) != 0) {
                    /* WARNING: Subroutine does not return */
    free(param_1);
  }
  return param_1;
}



############ FUN_ 1807b8840 size=1326 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807b8840(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  void *pvVar2;
  longlong lVar3;
  longlong *plVar4;
  ulonglong uVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 *_Buf1;
  void *pvVar9;
  size_t *psVar10;
  undefined1 auStack_4f8 [32];
  short local_4d8 [4];
  undefined ***local_4d0;
  undefined4 local_4c8;
  int local_4c4;
  longlong *local_4c0;
  longlong *local_4b8;
  size_t local_4b0;
  ulonglong local_4a8;
  undefined8 local_4a0;
  undefined1 local_498 [16];
  undefined1 local_488 [16];
  undefined1 local_478 [16];
  undefined **local_468;
  undefined8 local_460;
  undefined **local_458;
  undefined8 local_450;
  undefined8 local_448;
  undefined1 local_440;
  undefined8 local_430;
  ulonglong local_428;
  undefined **local_420;
  undefined1 local_418 [80];
  undefined1 local_3c8 [160];
  undefined1 local_328;
  undefined2 local_320;
  undefined1 local_318;
  undefined7 uStack_317;
  ulonglong local_308;
  ulonglong local_300;
  undefined1 local_2f8;
  undefined7 uStack_2f7;
  undefined8 local_2e8;
  ulonglong local_2e0;
  undefined1 local_2d8 [32];
  undefined1 local_2b8 [64];
  undefined1 local_278 [64];
  undefined1 local_238 [64];
  undefined1 local_1f8 [64];
  undefined1 local_1b8 [64];
  undefined1 local_178 [320];
  ulonglong local_38;
  
  local_4a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4f8;
  local_4c8 = 0;
  local_308 = 0;
  local_300 = 0xf;
  local_318 = 0;
  (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb0))
            (*(longlong **)(param_1 + 0x28),&local_318,&local_4c4,&local_4c8);
  uVar5 = local_308;
  if (local_4c4 == 3) {
    FUN_180726b60(local_2b8);
    FUN_180721d90(local_2b8,*(undefined8 *)(param_1 + 0x28));
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_498);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_498);
    FUN_180726a50(local_278,local_2b8);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_278,(ThrowInfo *)&DAT_1825fe7b0);
  }
  if (local_4c4 != 2) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_488);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_488);
    FUN_180726ad0(local_238,2);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_238,(ThrowInfo *)&DAT_1825fe7b0);
  }
  _Buf1 = &local_318;
  if (0xf < local_300) {
    _Buf1 = (undefined1 *)CONCAT71(uStack_317,local_318);
  }
  local_4b0 = 0xf;
  local_4a8 = local_308;
  psVar10 = &local_4b0;
  if (local_308 < 0x10) {
    psVar10 = &local_4a8;
  }
  iVar6 = memcmp(_Buf1,"closeConnection",*psVar10);
  if ((iVar6 != 0) || (uVar5 != 0xf)) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_478);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_478);
    FUN_180726ad0(local_1b8,3);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_1b8,(ThrowInfo *)&DAT_1825fe7b0);
  }
  local_468 = pace::eden::thrift::authorize::AuthorizationLite_closeConnection_presult::vftable;
  local_4d0 = &local_458;
  local_450 = 0;
  local_448 = 0;
  local_430 = 0;
  local_428 = uVar5;
  local_440 = 0;
  local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  FUN_1806771d0(&local_420);
  local_328 = 0;
  local_320 = 0;
  plVar8 = *(longlong **)(param_1 + 0x28);
  local_2e8 = 0;
  local_2e0 = 0xf;
  local_2f8 = 0;
  local_460 = param_2;
  (**(code **)(*plVar8 + 0xc0))(plVar8,&local_2f8);
  (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  do {
    if ((int)local_4d0 == 0) {
      (**(code **)(*plVar8 + 200))(plVar8);
      if (0xf < local_2e0) {
        pvVar2 = (void *)CONCAT71(uStack_2f7,local_2f8);
        pvVar9 = pvVar2;
        if ((0xfff < local_2e0 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
      local_4c0 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 8);
      plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 0x10);
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
        UNLOCK();
      }
      local_4b8 = plVar8;
      (**(code **)(*local_4c0 + 0x38))();
      plVar4 = local_4b8;
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        plVar8 = plVar8 + 1;
        lVar3 = *plVar8;
        *(int *)plVar8 = (int)*plVar8 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_4b8 + 8))(local_4b8);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar6 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar6 == 1) {
            (**(code **)(*local_4b8 + 0x10))();
          }
        }
      }
      if ((char)local_320 != '\0') {
        local_468 = pace::eden::thrift::authorize::AuthorizationLite_closeConnection_presult::
                    vftable;
        local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
        local_420 = pace::eden::thrift::exception::ExceptionInfo::vftable;
        FUN_18067b2e0(local_3c8);
        FUN_18067b220(local_418);
        FUN_1805d66b0(&local_458);
        if (local_300 < 0x10) {
        }
        pvVar2 = (void *)CONCAT71(uStack_317,local_318);
        pvVar9 = pvVar2;
        if ((0xfff < local_300 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      if (local_320._1_1_ == '\0') {
        FUN_1805a4160(local_2d8,"closeConnection failed: unknown result");
        FUN_180726b00(local_1f8,5,local_2d8);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_1f8,(ThrowInfo *)&DAT_1825fe7b0);
      }
      FUN_1807b7f40(local_178,&local_458);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_178,(ThrowInfo *)&DAT_1825fe818);
    }
    if (local_4d8[0] == 0) {
      if ((int)local_4d0 != 0xc) goto LAB_1807b8a22;
      FUN_1809f9b00(local_460,plVar8);
      local_320 = CONCAT11(local_320._1_1_,1);
    }
    else if ((local_4d8[0] == 1) && ((int)local_4d0 == 0xc)) {
      FUN_1809f8f70(&local_458,plVar8);
      local_320 = CONCAT11(1,(char)local_320);
    }
    else {
LAB_1807b8a22:
      FUN_1806d8eb0(plVar8,(int)local_4d0);
    }
    (**(code **)(*plVar8 + 0xd8))(plVar8);
    (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  } while( true );
}



############ FUN_ 1807ba760 size=519 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807ba760(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  longlong *plVar6;
  void *_Memory;
  undefined1 auStack_88 [32];
  longlong *local_68;
  longlong *local_60;
  longlong *local_58;
  longlong *local_50;
  undefined8 local_48;
  undefined **local_40;
  undefined8 local_38;
  undefined1 local_30;
  undefined7 uStack_2f;
  undefined8 local_20;
  ulonglong local_18;
  ulonglong local_10;
  
  local_48 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_20 = 0;
  local_18 = 0xf;
  local_30 = 0;
  FUN_1805a6cb0(&local_30,"closeConnection",0xf);
  (**(code **)(**(longlong **)(param_1 + 0x30) + 8))(*(longlong **)(param_1 + 0x30),&local_30,1);
  if (local_18 < 0x10) {
    local_40 = pace::eden::thrift::authorize::AuthorizationLite_closeConnection_pargs::vftable;
    plVar3 = *(longlong **)(param_1 + 0x30);
    local_38 = param_2;
    (**(code **)(*plVar3 + 0x18))(plVar3,"AuthorizationLite_closeConnection_pargs");
    (**(code **)(*plVar3 + 0x28))(plVar3,"inConnectionId",0xb);
    (**(code **)(*plVar3 + 0xa0))(plVar3,param_2);
    (**(code **)(*plVar3 + 0x30))(plVar3);
    (**(code **)(*plVar3 + 0x38))(plVar3);
    (**(code **)(*plVar3 + 0x20))(plVar3);
    (**(code **)(**(longlong **)(param_1 + 0x30) + 0x10))();
    local_68 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_60 = plVar3;
    (**(code **)(*local_68 + 0x50))();
    plVar6 = local_60;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_60 + 8))(local_60);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_60 + 0x10))();
        }
      }
    }
    local_58 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_50 = plVar3;
    (**(code **)(*local_58 + 0x48))();
    plVar6 = local_50;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_50 + 8))(local_50);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_50 + 0x10))();
        }
      }
    }
  }
  pvVar4 = (void *)CONCAT71(uStack_2f,local_30);
  _Memory = pvVar4;
  if ((0xfff < local_18 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809f9b00 size=274 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f9b00(undefined8 param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  undefined1 local_48 [4];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  while (local_44 != 0) {
    FUN_1806d8eb0(param_2,local_44);
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  }
  (**(code **)(*param_2 + 200))(param_2);
  if (0xf < local_20) {
    pvVar1 = (void *)CONCAT71(uStack_37,local_38);
    _Memory = pvVar1;
    if ((0xfff < local_20 + 1) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
}



############ FUN_ 1807b8da0 size=1326 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807b8da0(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  void *pvVar2;
  longlong lVar3;
  longlong *plVar4;
  ulonglong uVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 *_Buf1;
  void *pvVar9;
  size_t *psVar10;
  undefined1 auStack_4f8 [32];
  short local_4d8 [4];
  undefined ***local_4d0;
  undefined4 local_4c8;
  int local_4c4;
  longlong *local_4c0;
  longlong *local_4b8;
  size_t local_4b0;
  ulonglong local_4a8;
  undefined8 local_4a0;
  undefined1 local_498 [16];
  undefined1 local_488 [16];
  undefined1 local_478 [16];
  undefined **local_468;
  undefined8 local_460;
  undefined **local_458;
  undefined8 local_450;
  undefined8 local_448;
  undefined1 local_440;
  undefined8 local_430;
  undefined8 local_428;
  undefined **local_420;
  undefined1 local_418 [80];
  undefined1 local_3c8 [160];
  undefined1 local_328;
  undefined2 local_320;
  undefined1 local_318;
  undefined7 uStack_317;
  ulonglong local_308;
  ulonglong local_300;
  undefined1 local_2f8;
  undefined7 uStack_2f7;
  undefined8 local_2e8;
  ulonglong local_2e0;
  undefined1 local_2d8 [32];
  undefined1 local_2b8 [64];
  undefined1 local_278 [64];
  undefined1 local_238 [64];
  undefined1 local_1f8 [64];
  undefined1 local_1b8 [64];
  undefined1 local_178 [320];
  ulonglong local_38;
  
  local_4a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4f8;
  local_4c8 = 0;
  local_308 = 0;
  local_300 = 0xf;
  local_318 = 0;
  (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb0))
            (*(longlong **)(param_1 + 0x28),&local_318,&local_4c4,&local_4c8);
  uVar5 = local_308;
  if (local_4c4 == 3) {
    FUN_180726b60(local_2b8);
    FUN_180721d90(local_2b8,*(undefined8 *)(param_1 + 0x28));
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_498);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_498);
    FUN_180726a50(local_278,local_2b8);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_278,(ThrowInfo *)&DAT_1825fe7b0);
  }
  if (local_4c4 != 2) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_488);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_488);
    FUN_180726ad0(local_238,2);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_238,(ThrowInfo *)&DAT_1825fe7b0);
  }
  _Buf1 = &local_318;
  if (0xf < local_300) {
    _Buf1 = (undefined1 *)CONCAT71(uStack_317,local_318);
  }
  local_4b0 = 0xd;
  local_4a8 = local_308;
  psVar10 = &local_4b0;
  if (local_308 < 0xe) {
    psVar10 = &local_4a8;
  }
  iVar6 = memcmp(_Buf1,"doIlokCommand",*psVar10);
  if ((iVar6 != 0) || (uVar5 != 0xd)) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_478);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_478);
    FUN_180726ad0(local_1b8,3);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_1b8,(ThrowInfo *)&DAT_1825fe7b0);
  }
  local_468 = pace::eden::thrift::authorize::AuthorizationLite_doIlokCommand_presult::vftable;
  local_4d0 = &local_458;
  local_450 = 0;
  local_448 = 0;
  local_430 = 0;
  local_428 = 0xf;
  local_440 = 0;
  local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  FUN_1806771d0(&local_420);
  local_328 = 0;
  local_320 = 0;
  plVar8 = *(longlong **)(param_1 + 0x28);
  local_2e8 = 0;
  local_2e0 = 0xf;
  local_2f8 = 0;
  local_460 = param_2;
  (**(code **)(*plVar8 + 0xc0))(plVar8,&local_2f8);
  (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  do {
    if ((int)local_4d0 == 0) {
      (**(code **)(*plVar8 + 200))(plVar8);
      if (0xf < local_2e0) {
        pvVar2 = (void *)CONCAT71(uStack_2f7,local_2f8);
        pvVar9 = pvVar2;
        if ((0xfff < local_2e0 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
      local_4c0 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 8);
      plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 0x10);
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
        UNLOCK();
      }
      local_4b8 = plVar8;
      (**(code **)(*local_4c0 + 0x38))();
      plVar4 = local_4b8;
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        plVar8 = plVar8 + 1;
        lVar3 = *plVar8;
        *(int *)plVar8 = (int)*plVar8 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_4b8 + 8))(local_4b8);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar6 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar6 == 1) {
            (**(code **)(*local_4b8 + 0x10))();
          }
        }
      }
      if ((char)local_320 != '\0') {
        local_468 = pace::eden::thrift::authorize::AuthorizationLite_doIlokCommand_presult::vftable;
        local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
        local_420 = pace::eden::thrift::exception::ExceptionInfo::vftable;
        FUN_18067b2e0(local_3c8);
        FUN_18067b220(local_418);
        FUN_1805d66b0(&local_458);
        if (local_300 < 0x10) {
        }
        pvVar2 = (void *)CONCAT71(uStack_317,local_318);
        pvVar9 = pvVar2;
        if ((0xfff < local_300 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      if (local_320._1_1_ == '\0') {
        FUN_1805a4160(local_2d8,"doIlokCommand failed: unknown result");
        FUN_180726b00(local_1f8,5,local_2d8);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_1f8,(ThrowInfo *)&DAT_1825fe7b0);
      }
      FUN_1807b7f40(local_178,&local_458);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_178,(ThrowInfo *)&DAT_1825fe818);
    }
    if (local_4d8[0] == 0) {
      if ((int)local_4d0 != 0xc) goto LAB_1807b8f82;
      FUN_1809f9c20(local_460,plVar8);
      local_320 = CONCAT11(local_320._1_1_,1);
    }
    else if ((local_4d8[0] == 1) && ((int)local_4d0 == 0xc)) {
      FUN_1809f8f70(&local_458,plVar8);
      local_320 = CONCAT11(1,(char)local_320);
    }
    else {
LAB_1807b8f82:
      FUN_1806d8eb0(plVar8,(int)local_4d0);
    }
    (**(code **)(*plVar8 + 0xd8))(plVar8);
    (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  } while( true );
}



############ FUN_ 1807ba980 size=577 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807ba980(longlong param_1,undefined8 param_2,undefined8 param_3)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  longlong *plVar6;
  void *_Memory;
  undefined1 auStack_a8 [32];
  longlong *local_88;
  longlong *local_80;
  longlong *local_78;
  longlong *local_70;
  undefined8 local_68;
  undefined **local_60;
  undefined8 local_58;
  undefined8 local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_68 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  FUN_1805a6cb0(&local_48,"doIlokCommand",0xd);
  (**(code **)(**(longlong **)(param_1 + 0x30) + 8))(*(longlong **)(param_1 + 0x30),&local_48,1);
  if (local_30 < 0x10) {
    local_60 = pace::eden::thrift::authorize::AuthorizationLite_doIlokCommand_pargs::vftable;
    plVar3 = *(longlong **)(param_1 + 0x30);
    local_58 = param_2;
    local_50 = param_3;
    (**(code **)(*plVar3 + 0x18))(plVar3,"AuthorizationLite_doIlokCommand_pargs");
    (**(code **)(*plVar3 + 0x28))(plVar3,"inConnectionId",0xb);
    (**(code **)(*plVar3 + 0xa0))(plVar3,param_2);
    (**(code **)(*plVar3 + 0x30))(plVar3);
    (**(code **)(*plVar3 + 0x28))(plVar3,"inCommandPacket",0xc);
    FUN_1809c7650(param_3,plVar3);
    (**(code **)(*plVar3 + 0x30))(plVar3);
    (**(code **)(*plVar3 + 0x38))(plVar3);
    (**(code **)(*plVar3 + 0x20))(plVar3);
    (**(code **)(**(longlong **)(param_1 + 0x30) + 0x10))();
    local_88 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_80 = plVar3;
    (**(code **)(*local_88 + 0x50))();
    plVar6 = local_80;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_80 + 8))(local_80);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_80 + 0x10))();
        }
      }
    }
    local_78 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_70 = plVar3;
    (**(code **)(*local_78 + 0x48))();
    plVar6 = local_70;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_70 + 8))(local_70);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_70 + 0x10))();
        }
      }
    }
  }
  pvVar4 = (void *)CONCAT71(uStack_47,local_48);
  _Memory = pvVar4;
  if ((0xfff < local_30 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809f9c20 size=315 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f9c20(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined8 local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_40 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_38);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  while (local_44 != 0) {
    if ((local_48[0] == 1) && (local_44 == 0xc)) {
      FUN_1809c62f0(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0x168) = 1;
    }
    else {
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_38,&local_44,local_48);
  }
  (**(code **)(*param_2 + 200))(param_2);
  if (0xf < local_20) {
    pvVar1 = (void *)CONCAT71(uStack_37,local_38);
    _Memory = pvVar1;
    if ((0xfff < local_20 + 1) &&
       (_Memory = *(void **)((longlong)pvVar1 + -8),
       0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(_Memory);
  }
}



############ FUN_ 1807b9300 size=1326 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807b9300(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  void *pvVar2;
  longlong lVar3;
  longlong *plVar4;
  ulonglong uVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 *_Buf1;
  void *pvVar9;
  size_t *psVar10;
  undefined1 auStack_4f8 [32];
  short local_4d8 [4];
  undefined ***local_4d0;
  undefined4 local_4c8;
  int local_4c4;
  longlong *local_4c0;
  longlong *local_4b8;
  size_t local_4b0;
  ulonglong local_4a8;
  undefined8 local_4a0;
  undefined1 local_498 [16];
  undefined1 local_488 [16];
  undefined1 local_478 [16];
  undefined **local_468;
  undefined8 local_460;
  undefined **local_458;
  undefined8 local_450;
  undefined8 local_448;
  undefined1 local_440;
  undefined8 local_430;
  undefined8 local_428;
  undefined **local_420;
  undefined1 local_418 [80];
  undefined1 local_3c8 [160];
  undefined1 local_328;
  undefined2 local_320;
  undefined1 local_318;
  undefined7 uStack_317;
  ulonglong local_308;
  ulonglong local_300;
  undefined1 local_2f8;
  undefined7 uStack_2f7;
  undefined8 local_2e8;
  ulonglong local_2e0;
  undefined1 local_2d8 [32];
  undefined1 local_2b8 [64];
  undefined1 local_278 [64];
  undefined1 local_238 [64];
  undefined1 local_1f8 [64];
  undefined1 local_1b8 [64];
  undefined1 local_178 [320];
  ulonglong local_38;
  
  local_4a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4f8;
  local_4c8 = 0;
  local_308 = 0;
  local_300 = 0xf;
  local_318 = 0;
  (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb0))
            (*(longlong **)(param_1 + 0x28),&local_318,&local_4c4,&local_4c8);
  uVar5 = local_308;
  if (local_4c4 == 3) {
    FUN_180726b60(local_2b8);
    FUN_180721d90(local_2b8,*(undefined8 *)(param_1 + 0x28));
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_498);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_498);
    FUN_180726a50(local_278,local_2b8);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_278,(ThrowInfo *)&DAT_1825fe7b0);
  }
  if (local_4c4 != 2) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_488);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_488);
    FUN_180726ad0(local_238,2);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_238,(ThrowInfo *)&DAT_1825fe7b0);
  }
  _Buf1 = &local_318;
  if (0xf < local_300) {
    _Buf1 = (undefined1 *)CONCAT71(uStack_317,local_318);
  }
  local_4b0 = 0x12;
  local_4a8 = local_308;
  psVar10 = &local_4b0;
  if (local_308 < 0x13) {
    psVar10 = &local_4a8;
  }
  iVar6 = memcmp(_Buf1,"findAuthorizations",*psVar10);
  if ((iVar6 != 0) || (uVar5 != 0x12)) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_478);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_478);
    FUN_180726ad0(local_1b8,3);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_1b8,(ThrowInfo *)&DAT_1825fe7b0);
  }
  local_468 = pace::eden::thrift::authorize::AuthorizationLite_findAuthorizations_presult::vftable;
  local_4d0 = &local_458;
  local_450 = 0;
  local_448 = 0;
  local_430 = 0;
  local_428 = 0xf;
  local_440 = 0;
  local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  FUN_1806771d0(&local_420);
  local_328 = 0;
  local_320 = 0;
  plVar8 = *(longlong **)(param_1 + 0x28);
  local_2e8 = 0;
  local_2e0 = 0xf;
  local_2f8 = 0;
  local_460 = param_2;
  (**(code **)(*plVar8 + 0xc0))(plVar8,&local_2f8);
  (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  do {
    if ((int)local_4d0 == 0) {
      (**(code **)(*plVar8 + 200))(plVar8);
      if (0xf < local_2e0) {
        pvVar2 = (void *)CONCAT71(uStack_2f7,local_2f8);
        pvVar9 = pvVar2;
        if ((0xfff < local_2e0 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
      local_4c0 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 8);
      plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 0x10);
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
        UNLOCK();
      }
      local_4b8 = plVar8;
      (**(code **)(*local_4c0 + 0x38))();
      plVar4 = local_4b8;
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        plVar8 = plVar8 + 1;
        lVar3 = *plVar8;
        *(int *)plVar8 = (int)*plVar8 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_4b8 + 8))(local_4b8);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar6 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar6 == 1) {
            (**(code **)(*local_4b8 + 0x10))();
          }
        }
      }
      if ((char)local_320 != '\0') {
        local_468 = pace::eden::thrift::authorize::AuthorizationLite_findAuthorizations_presult::
                    vftable;
        local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
        local_420 = pace::eden::thrift::exception::ExceptionInfo::vftable;
        FUN_18067b2e0(local_3c8);
        FUN_18067b220(local_418);
        FUN_1805d66b0(&local_458);
        if (local_300 < 0x10) {
        }
        pvVar2 = (void *)CONCAT71(uStack_317,local_318);
        pvVar9 = pvVar2;
        if ((0xfff < local_300 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      if (local_320._1_1_ == '\0') {
        FUN_1805a4160(local_2d8,"findAuthorizations failed: unknown result");
        FUN_180726b00(local_1f8,5,local_2d8);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_1f8,(ThrowInfo *)&DAT_1825fe7b0);
      }
      FUN_1807b7f40(local_178,&local_458);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_178,(ThrowInfo *)&DAT_1825fe818);
    }
    if (local_4d8[0] == 0) {
      if ((int)local_4d0 != 0xc) goto LAB_1807b94e2;
      FUN_1809f9d70(local_460,plVar8);
      local_320 = CONCAT11(local_320._1_1_,1);
    }
    else if ((local_4d8[0] == 1) && ((int)local_4d0 == 0xc)) {
      FUN_1809f8f70(&local_458,plVar8);
      local_320 = CONCAT11(1,(char)local_320);
    }
    else {
LAB_1807b94e2:
      FUN_1806d8eb0(plVar8,(int)local_4d0);
    }
    (**(code **)(*plVar8 + 0xd8))(plVar8);
    (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  } while( true );
}



############ FUN_ 1807babe0 size=617 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807babe0(longlong param_1,longlong *param_2)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong *plVar5;
  void *_Memory;
  longlong lVar6;
  undefined1 auStack_a8 [32];
  longlong *local_88;
  longlong *local_80;
  longlong *local_78;
  longlong *local_70;
  longlong local_68;
  undefined8 local_60;
  undefined **local_58;
  longlong *local_50;
  undefined1 local_48;
  undefined7 uStack_47;
  undefined8 local_38;
  ulonglong local_30;
  ulonglong local_28;
  
  local_60 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_38 = 0;
  local_30 = 0xf;
  local_48 = 0;
  FUN_1805a6cb0(&local_48,"findAuthorizations",0x12);
  (**(code **)(**(longlong **)(param_1 + 0x30) + 8))(*(longlong **)(param_1 + 0x30),&local_48,1);
  if (local_30 < 0x10) {
    local_58 = pace::eden::thrift::authorize::AuthorizationLite_findAuthorizations_pargs::vftable;
    plVar3 = *(longlong **)(param_1 + 0x30);
    local_50 = param_2;
    (**(code **)(*plVar3 + 0x18))(plVar3,"AuthorizationLite_findAuthorizations_pargs");
    (**(code **)(*plVar3 + 0x28))(plVar3,"inAuthsOfInterest",0xf);
    lVar6 = SUB168(SEXT816(-0x5717c0a8e83f5717) * SEXT816(param_2[1] - *param_2),8) +
            (param_2[1] - *param_2);
    (**(code **)(*plVar3 + 0x50))(plVar3,0xc,(lVar6 >> 10) - (lVar6 >> 0x3f));
    lVar6 = *param_2;
    local_68 = param_2[1];
    if (lVar6 != local_68) {
      do {
        FUN_1809c3c50(lVar6,plVar3);
        lVar6 = lVar6 + 0x610;
        local_68 = param_2[1];
      } while (lVar6 != local_68);
    }
    (**(code **)(*plVar3 + 0x58))(plVar3);
    (**(code **)(*plVar3 + 0x30))(plVar3);
    (**(code **)(*plVar3 + 0x38))(plVar3);
    (**(code **)(*plVar3 + 0x20))(plVar3);
    (**(code **)(**(longlong **)(param_1 + 0x30) + 0x10))();
    local_88 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_80 = plVar3;
    (**(code **)(*local_88 + 0x50))();
    plVar5 = local_80;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*local_80 + 8))(local_80);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_80 + 0x10))();
        }
      }
    }
    local_78 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_70 = plVar3;
    (**(code **)(*local_78 + 0x48))();
    plVar5 = local_70;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar6 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar6 == 1) {
        (**(code **)(*local_70 + 8))(local_70);
        LOCK();
        piVar1 = (int *)((longlong)plVar5 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_70 + 0x10))();
        }
      }
    }
  }
  pvVar4 = (void *)CONCAT71(uStack_47,local_48);
  _Memory = pvVar4;
  if ((0xfff < local_30 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809f9d70 size=512 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f9d70(longlong param_1,longlong *param_2)

{
  undefined8 *puVar1;
  void *pvVar2;
  void *_Memory;
  uint uVar3;
  undefined8 *puVar4;
  undefined1 auStack_98 [32];
  short local_78 [2];
  uint local_74;
  int local_70;
  undefined4 local_6c;
  undefined1 local_68 [8];
  undefined8 local_60;
  undefined1 local_58;
  undefined7 uStack_57;
  undefined8 local_48;
  ulonglong local_40;
  ulonglong local_38;
  
  local_60 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_98;
  local_48 = 0;
  local_40 = 0xf;
  local_58 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_58);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_70,local_78);
  do {
    if (local_70 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_40 < 0x10) {
      }
      pvVar2 = (void *)CONCAT71(uStack_57,local_58);
      _Memory = pvVar2;
      if ((0xfff < local_40 + 1) &&
         (_Memory = *(void **)((longlong)pvVar2 + -8),
         0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_78[0] == 1) {
      if (local_70 != 0xf) goto LAB_1809f9ed5;
      puVar1 = *(undefined8 **)(param_1 + 0x10);
      for (puVar4 = *(undefined8 **)(param_1 + 8); puVar4 != puVar1; puVar4 = puVar4 + 0x1b7) {
        (**(code **)*puVar4)(puVar4,0);
      }
      *(undefined8 *)(param_1 + 0x10) = *(undefined8 *)(param_1 + 8);
      (**(code **)(*param_2 + 0xf0))(param_2,local_68,&local_74);
      FUN_1809f9520(param_1 + 8,local_74,param_1 + 8);
      uVar3 = 0;
      if (local_74 != 0) {
        do {
          FUN_1809c34f0((ulonglong)uVar3 * 0xdb8 + *(longlong *)(param_1 + 8),param_2);
          uVar3 = uVar3 + 1;
        } while (uVar3 < local_74);
      }
      (**(code **)(*param_2 + 0xf8))(param_2);
      *(undefined1 *)(param_1 + 0x24) = 1;
    }
    else if ((local_78[0] == 2) && (local_70 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,&local_6c);
      *(undefined4 *)(param_1 + 0x20) = local_6c;
      *(undefined1 *)(param_1 + 0x25) = 1;
    }
    else {
LAB_1809f9ed5:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_58,&local_70,local_78);
  } while( true );
}



############ FUN_ 1809c34f0 size=845 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809c34f0(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *pvVar2;
  undefined1 auStack_a8 [32];
  short local_88 [2];
  undefined2 local_84 [2];
  int local_80;
  int local_7c;
  undefined8 local_78;
  undefined1 local_70;
  undefined7 uStack_6f;
  undefined8 local_60;
  ulonglong local_58;
  undefined1 local_50;
  undefined7 uStack_4f;
  undefined8 local_40;
  ulonglong local_38;
  ulonglong local_30;
  
  local_78 = 0xfffffffffffffffe;
  local_30 = DAT_182615970 ^ (ulonglong)auStack_a8;
  local_40 = 0;
  local_38 = 0xf;
  local_50 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_50);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_7c,local_84);
  do {
    if (local_7c == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_38 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_4f,local_50);
      pvVar2 = pvVar1;
      if ((0xfff < local_38 + 1) &&
         (pvVar2 = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(pvVar2);
    }
    switch(local_84[0]) {
    case 1:
      if (local_7c != 0xc) break;
      FUN_1809c3330(param_1 + 8,param_2);
      *(undefined1 *)(param_1 + 0xdb0) = 1;
      goto LAB_1809c37a7;
    case 2:
      if (local_7c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x618);
        *(undefined1 *)(param_1 + 0xdb1) = 1;
        goto LAB_1809c37a7;
      }
      break;
    case 3:
      if (local_7c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x638);
        *(undefined1 *)(param_1 + 0xdb2) = 1;
        goto LAB_1809c37a7;
      }
      break;
    case 4:
      if (local_7c == 0xc) {
        local_60 = 0;
        local_58 = 0xf;
        local_70 = 0;
        (**(code **)(*param_2 + 0xc0))(param_2,&local_70);
        (**(code **)(*param_2 + 0xd0))(param_2,&local_70,&local_80,local_88);
        while (local_80 != 0) {
          if (local_88[0] == 1) {
            if (local_80 != 0xb) goto LAB_1809c36af;
            (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x660);
            *(undefined1 *)(param_1 + 0x6a0) = 1;
          }
          else if ((local_88[0] == 2) && (local_80 == 0xc)) {
            FUN_180948c20(param_1 + 0x680,param_2);
            *(undefined1 *)(param_1 + 0x6a1) = 1;
          }
          else {
LAB_1809c36af:
            FUN_1806d8eb0(param_2);
          }
          (**(code **)(*param_2 + 0xd8))(param_2);
          (**(code **)(*param_2 + 0xd0))(param_2,&local_70,&local_80,local_88);
        }
        (**(code **)(*param_2 + 200))(param_2);
        if (0xf < local_58) {
          pvVar1 = (void *)CONCAT71(uStack_6f,local_70);
          pvVar2 = pvVar1;
          if ((0xfff < local_58 + 1) &&
             (pvVar2 = *(void **)((longlong)pvVar1 + -8),
             0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) {
                    /* WARNING: Subroutine does not return */
            _invalid_parameter_noinfo_noreturn();
          }
                    /* WARNING: Subroutine does not return */
          free(pvVar2);
        }
        *(undefined1 *)(param_1 + 0xdb3) = 1;
        goto LAB_1809c37a7;
      }
      break;
    case 5:
      if (local_7c == 0xb) {
        (**(code **)(*param_2 + 0x140))(param_2,param_1 + 0x6a8);
        *(undefined1 *)(param_1 + 0xdb4) = 1;
        goto LAB_1809c37a7;
      }
      break;
    case 6:
      if (local_7c == 0xc) {
        FUN_1809c3880(param_1 + 0x6c8,param_2);
        *(undefined1 *)(param_1 + 0xdb5) = 1;
        goto LAB_1809c37a7;
      }
      break;
    case 7:
      if (local_7c == 0xc) {
        FUN_1809c3330(param_1 + 0x7a0,param_2);
        *(undefined1 *)(param_1 + 0xdb6) = 1;
        goto LAB_1809c37a7;
      }
    }
    FUN_1806d8eb0(param_2);
LAB_1809c37a7:
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_50,&local_7c,local_84);
  } while( true );
}



############ FUN_ 1807b9860 size=1060 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807b9860(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  void *pvVar2;
  longlong lVar3;
  longlong *plVar4;
  ulonglong uVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 *_Buf1;
  void *pvVar9;
  size_t *psVar10;
  undefined1 auStack_268 [32];
  short local_248 [2];
  int local_244;
  undefined4 local_240;
  int local_23c;
  longlong *local_238;
  longlong *local_230;
  size_t local_228;
  ulonglong local_220;
  undefined **local_218;
  undefined8 local_210;
  char local_208;
  undefined8 local_200;
  undefined1 local_1f8 [16];
  undefined1 local_1e8 [16];
  undefined1 local_1d8 [16];
  undefined1 local_1c8;
  undefined7 uStack_1c7;
  ulonglong local_1b8;
  ulonglong local_1b0;
  undefined1 local_1a8;
  undefined7 uStack_1a7;
  undefined8 local_198;
  ulonglong local_190;
  undefined1 local_188 [32];
  undefined1 local_168 [64];
  undefined1 local_128 [64];
  undefined1 local_e8 [64];
  undefined1 local_a8 [64];
  undefined1 local_68 [64];
  ulonglong local_28;
  
  local_200 = 0xfffffffffffffffe;
  local_28 = DAT_182615970 ^ (ulonglong)auStack_268;
  local_240 = 0;
  local_1b8 = 0;
  local_1b0 = 0xf;
  local_1c8 = 0;
  (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb0))
            (*(longlong **)(param_1 + 0x28),&local_1c8,&local_23c,&local_240);
  uVar5 = local_1b8;
  if (local_23c == 3) {
    FUN_180726b60(local_168);
    FUN_180721d90(local_168,*(undefined8 *)(param_1 + 0x28));
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_1f8);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_1f8);
    FUN_180726a50(local_128,local_168);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_128,(ThrowInfo *)&DAT_1825fe7b0);
  }
  if (local_23c != 2) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_1e8);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_1e8);
    FUN_180726ad0(local_e8,2);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_e8,(ThrowInfo *)&DAT_1825fe7b0);
  }
  _Buf1 = &local_1c8;
  if (0xf < local_1b0) {
    _Buf1 = (undefined1 *)CONCAT71(uStack_1c7,local_1c8);
  }
  local_228 = 0xf;
  local_220 = local_1b8;
  psVar10 = &local_228;
  if (local_1b8 < 0x10) {
    psVar10 = &local_220;
  }
  iVar6 = memcmp(_Buf1,"getServiceStats",*psVar10);
  if ((iVar6 != 0) || (uVar5 != 0xf)) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_1d8);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_1d8);
    FUN_180726ad0(local_68,3);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_68,(ThrowInfo *)&DAT_1825fe7b0);
  }
  local_218 = pace::eden::thrift::authorize::AuthorizationLite_getServiceStats_presult::vftable;
  local_208 = '\0';
  plVar8 = *(longlong **)(param_1 + 0x28);
  local_198 = 0;
  local_190 = 0xf;
  local_1a8 = 0;
  local_210 = param_2;
  (**(code **)(*plVar8 + 0xc0))(plVar8,&local_1a8);
  (**(code **)(*plVar8 + 0xd0))(plVar8,&local_1a8,&local_244,local_248);
  while (local_244 != 0) {
    if ((local_248[0] == 0) && (local_244 == 0xc)) {
      FUN_1809f9f90(param_2,plVar8);
      local_208 = '\x01';
    }
    else {
      FUN_1806d8eb0(plVar8,local_244);
    }
    (**(code **)(*plVar8 + 0xd8))(plVar8);
    (**(code **)(*plVar8 + 0xd0))(plVar8,&local_1a8,&local_244,local_248);
  }
  (**(code **)(*plVar8 + 200))(plVar8);
  if (0xf < local_190) {
    pvVar2 = (void *)CONCAT71(uStack_1a7,local_1a8);
    pvVar9 = pvVar2;
    if ((0xfff < local_190 + 1) &&
       (pvVar9 = *(void **)((longlong)pvVar2 + -8),
       0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
      _invalid_parameter_noinfo_noreturn();
    }
                    /* WARNING: Subroutine does not return */
    free(pvVar9);
  }
  (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
  local_238 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 8);
  plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 0x10);
  if (plVar8 != (longlong *)0x0) {
    LOCK();
    *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
    UNLOCK();
  }
  local_230 = plVar8;
  (**(code **)(*local_238 + 0x38))();
  plVar4 = local_230;
  if (plVar8 != (longlong *)0x0) {
    LOCK();
    plVar8 = plVar8 + 1;
    lVar3 = *plVar8;
    *(int *)plVar8 = (int)*plVar8 + -1;
    UNLOCK();
    if ((int)lVar3 == 1) {
      (**(code **)(*local_230 + 8))(local_230);
      LOCK();
      piVar1 = (int *)((longlong)plVar4 + 0xc);
      iVar6 = *piVar1;
      *piVar1 = *piVar1 + -1;
      UNLOCK();
      if (iVar6 == 1) {
        (**(code **)(*local_230 + 0x10))();
      }
    }
  }
  if (local_208 == '\0') {
    FUN_1805a4160(local_188,"getServiceStats failed: unknown result");
    FUN_180726b00(local_a8,5,local_188);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_a8,(ThrowInfo *)&DAT_1825fe7b0);
  }
  if (local_1b0 < 0x10) {
  }
  pvVar2 = (void *)CONCAT71(uStack_1c7,local_1c8);
  pvVar9 = pvVar2;
  if ((0xfff < local_1b0 + 1) &&
     (pvVar9 = *(void **)((longlong)pvVar2 + -8),
     0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(pvVar9);
}



############ FUN_ 1807bae60 size=461 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807bae60(longlong param_1)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  longlong *plVar6;
  void *_Memory;
  undefined1 auStack_88 [32];
  longlong *local_68;
  longlong *local_60;
  longlong *local_58;
  longlong *local_50;
  undefined8 local_48;
  undefined **local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_48 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  FUN_1805a6cb0(&local_38,"getServiceStats",0xf);
  (**(code **)(**(longlong **)(param_1 + 0x30) + 8))(*(longlong **)(param_1 + 0x30),&local_38,1);
  if (local_20 < 0x10) {
    local_40 = pace::eden::thrift::authorize::AuthorizationLite_getServiceStats_pargs::vftable;
    plVar3 = *(longlong **)(param_1 + 0x30);
    (**(code **)(*plVar3 + 0x18))(plVar3,"AuthorizationLite_getServiceStats_pargs");
    (**(code **)(*plVar3 + 0x38))(plVar3);
    (**(code **)(*plVar3 + 0x20))(plVar3);
    (**(code **)(**(longlong **)(param_1 + 0x30) + 0x10))();
    local_68 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_60 = plVar3;
    (**(code **)(*local_68 + 0x50))();
    plVar6 = local_60;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_60 + 8))(local_60);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_60 + 0x10))();
        }
      }
    }
    local_58 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_50 = plVar3;
    (**(code **)(*local_58 + 0x48))();
    plVar6 = local_50;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_50 + 8))(local_50);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_50 + 0x10))();
        }
      }
    }
  }
  pvVar4 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar4;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



############ FUN_ 1809f9f90 size=472 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1809f9f90(longlong param_1,longlong *param_2)

{
  void *pvVar1;
  void *_Memory;
  undefined1 auStack_68 [32];
  short local_48 [2];
  int local_44;
  undefined4 local_40 [2];
  undefined8 local_38;
  undefined1 local_30;
  undefined7 uStack_2f;
  undefined8 local_20;
  ulonglong local_18;
  ulonglong local_10;
  
  local_38 = 0xfffffffffffffffe;
  local_10 = DAT_182615970 ^ (ulonglong)auStack_68;
  local_20 = 0;
  local_18 = 0xf;
  local_30 = 0;
  (**(code **)(*param_2 + 0xc0))(param_2,&local_30);
  (**(code **)(*param_2 + 0xd0))(param_2,&local_30,&local_44,local_48);
  do {
    if (local_44 == 0) {
      (**(code **)(*param_2 + 200))(param_2);
      if (local_18 < 0x10) {
      }
      pvVar1 = (void *)CONCAT71(uStack_2f,local_30);
      _Memory = pvVar1;
      if ((0xfff < local_18 + 1) &&
         (_Memory = *(void **)((longlong)pvVar1 + -8),
         0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
        _invalid_parameter_noinfo_noreturn();
      }
                    /* WARNING: Subroutine does not return */
      free(_Memory);
    }
    if (local_48[0] == 1) {
      if (local_44 != 0xb) goto LAB_1809fa0ce;
      (**(code **)(*param_2 + 0x140))(param_2,param_1 + 8);
      *(undefined1 *)(param_1 + 0x38) = 1;
    }
    else if (local_48[0] == 2) {
      if (local_44 != 8) goto LAB_1809fa0ce;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x28);
      *(undefined1 *)(param_1 + 0x39) = 1;
    }
    else if (local_48[0] == 3) {
      if (local_44 != 8) goto LAB_1809fa0ce;
      (**(code **)(*param_2 + 0x128))(param_2,param_1 + 0x2c);
      *(undefined1 *)(param_1 + 0x3a) = 1;
    }
    else if (local_48[0] == 4) {
      if (local_44 != 2) goto LAB_1809fa0ce;
      (**(code **)(*param_2 + 0x110))(param_2,param_1 + 0x30);
      *(undefined1 *)(param_1 + 0x3b) = 1;
    }
    else if ((local_48[0] == 5) && (local_44 == 8)) {
      (**(code **)(*param_2 + 0x128))(param_2,local_40);
      *(undefined4 *)(param_1 + 0x34) = local_40[0];
      *(undefined1 *)(param_1 + 0x3c) = 1;
    }
    else {
LAB_1809fa0ce:
      FUN_1806d8eb0(param_2);
    }
    (**(code **)(*param_2 + 0xd8))(param_2);
    (**(code **)(*param_2 + 0xd0))(param_2,&local_30,&local_44,local_48);
  } while( true );
}



############ FUN_ 1807b9ca0 size=1326 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807b9ca0(longlong param_1,undefined8 param_2)

{
  int *piVar1;
  void *pvVar2;
  longlong lVar3;
  longlong *plVar4;
  ulonglong uVar5;
  int iVar6;
  undefined8 uVar7;
  longlong *plVar8;
  undefined1 *_Buf1;
  void *pvVar9;
  size_t *psVar10;
  undefined1 auStack_4f8 [32];
  short local_4d8 [4];
  undefined ***local_4d0;
  undefined4 local_4c8;
  int local_4c4;
  longlong *local_4c0;
  longlong *local_4b8;
  size_t local_4b0;
  ulonglong local_4a8;
  undefined8 local_4a0;
  undefined1 local_498 [16];
  undefined1 local_488 [16];
  undefined1 local_478 [16];
  undefined **local_468;
  undefined8 local_460;
  undefined **local_458;
  undefined8 local_450;
  undefined8 local_448;
  undefined1 local_440;
  undefined8 local_430;
  undefined8 local_428;
  undefined **local_420;
  undefined1 local_418 [80];
  undefined1 local_3c8 [160];
  undefined1 local_328;
  undefined2 local_320;
  undefined1 local_318;
  undefined7 uStack_317;
  ulonglong local_308;
  ulonglong local_300;
  undefined1 local_2f8;
  undefined7 uStack_2f7;
  undefined8 local_2e8;
  ulonglong local_2e0;
  undefined1 local_2d8 [32];
  undefined1 local_2b8 [64];
  undefined1 local_278 [64];
  undefined1 local_238 [64];
  undefined1 local_1f8 [64];
  undefined1 local_1b8 [64];
  undefined1 local_178 [320];
  ulonglong local_38;
  
  local_4a0 = 0xfffffffffffffffe;
  local_38 = DAT_182615970 ^ (ulonglong)auStack_4f8;
  local_4c8 = 0;
  local_308 = 0;
  local_300 = 0xf;
  local_318 = 0;
  (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb0))
            (*(longlong **)(param_1 + 0x28),&local_318,&local_4c4,&local_4c8);
  uVar5 = local_308;
  if (local_4c4 == 3) {
    FUN_180726b60(local_2b8);
    FUN_180721d90(local_2b8,*(undefined8 *)(param_1 + 0x28));
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_498);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_498);
    FUN_180726a50(local_278,local_2b8);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_278,(ThrowInfo *)&DAT_1825fe7b0);
  }
  if (local_4c4 != 2) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_488);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_488);
    FUN_180726ad0(local_238,2);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_238,(ThrowInfo *)&DAT_1825fe7b0);
  }
  _Buf1 = &local_318;
  if (0xf < local_300) {
    _Buf1 = (undefined1 *)CONCAT71(uStack_317,local_318);
  }
  local_4b0 = 9;
  local_4a8 = local_308;
  psVar10 = &local_4b0;
  if (local_308 < 10) {
    psVar10 = &local_4a8;
  }
  iVar6 = memcmp(_Buf1,"listIloks",*psVar10);
  if ((iVar6 != 0) || (uVar5 != 9)) {
    FUN_1806d8eb0(*(undefined8 *)(param_1 + 0x28),0xc);
    (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
    uVar7 = FUN_180726be0(*(undefined8 *)(param_1 + 0x28),local_478);
    plVar8 = (longlong *)FUN_1804730e0(uVar7);
    (**(code **)(*plVar8 + 0x38))(plVar8);
    FUN_1805a4e80(local_478);
    FUN_180726ad0(local_1b8,3);
                    /* WARNING: Subroutine does not return */
    _CxxThrowException(local_1b8,(ThrowInfo *)&DAT_1825fe7b0);
  }
  local_468 = pace::eden::thrift::authorize::AuthorizationLite_listIloks_presult::vftable;
  local_4d0 = &local_458;
  local_450 = 0;
  local_448 = 0;
  local_430 = 0;
  local_428 = 0xf;
  local_440 = 0;
  local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
  FUN_1806771d0(&local_420);
  local_328 = 0;
  local_320 = 0;
  plVar8 = *(longlong **)(param_1 + 0x28);
  local_2e8 = 0;
  local_2e0 = 0xf;
  local_2f8 = 0;
  local_460 = param_2;
  (**(code **)(*plVar8 + 0xc0))(plVar8,&local_2f8);
  (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  do {
    if ((int)local_4d0 == 0) {
      (**(code **)(*plVar8 + 200))(plVar8);
      if (0xf < local_2e0) {
        pvVar2 = (void *)CONCAT71(uStack_2f7,local_2f8);
        pvVar9 = pvVar2;
        if ((0xfff < local_2e0 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      (**(code **)(**(longlong **)(param_1 + 0x28) + 0xb8))();
      local_4c0 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 8);
      plVar8 = *(longlong **)(*(longlong *)(param_1 + 0x28) + 0x10);
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        *(int *)(plVar8 + 1) = (int)plVar8[1] + 1;
        UNLOCK();
      }
      local_4b8 = plVar8;
      (**(code **)(*local_4c0 + 0x38))();
      plVar4 = local_4b8;
      if (plVar8 != (longlong *)0x0) {
        LOCK();
        plVar8 = plVar8 + 1;
        lVar3 = *plVar8;
        *(int *)plVar8 = (int)*plVar8 + -1;
        UNLOCK();
        if ((int)lVar3 == 1) {
          (**(code **)(*local_4b8 + 8))(local_4b8);
          LOCK();
          piVar1 = (int *)((longlong)plVar4 + 0xc);
          iVar6 = *piVar1;
          *piVar1 = *piVar1 + -1;
          UNLOCK();
          if (iVar6 == 1) {
            (**(code **)(*local_4b8 + 0x10))();
          }
        }
      }
      if ((char)local_320 != '\0') {
        local_468 = pace::eden::thrift::authorize::AuthorizationLite_listIloks_presult::vftable;
        local_458 = pace::eden::thrift::exception::PaceThriftExceptionWire::vftable;
        local_420 = pace::eden::thrift::exception::ExceptionInfo::vftable;
        FUN_18067b2e0(local_3c8);
        FUN_18067b220(local_418);
        FUN_1805d66b0(&local_458);
        if (local_300 < 0x10) {
        }
        pvVar2 = (void *)CONCAT71(uStack_317,local_318);
        pvVar9 = pvVar2;
        if ((0xfff < local_300 + 1) &&
           (pvVar9 = *(void **)((longlong)pvVar2 + -8),
           0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)pvVar9)))) {
                    /* WARNING: Subroutine does not return */
          _invalid_parameter_noinfo_noreturn();
        }
                    /* WARNING: Subroutine does not return */
        free(pvVar9);
      }
      if (local_320._1_1_ == '\0') {
        FUN_1805a4160(local_2d8,"listIloks failed: unknown result");
        FUN_180726b00(local_1f8,5,local_2d8);
                    /* WARNING: Subroutine does not return */
        _CxxThrowException(local_1f8,(ThrowInfo *)&DAT_1825fe7b0);
      }
      FUN_1807b7f40(local_178,&local_458);
                    /* WARNING: Subroutine does not return */
      _CxxThrowException(local_178,(ThrowInfo *)&DAT_1825fe818);
    }
    if (local_4d8[0] == 0) {
      if ((int)local_4d0 != 0xc) goto LAB_1807b9e82;
      FUN_1809fa180(local_460,plVar8);
      local_320 = CONCAT11(local_320._1_1_,1);
    }
    else if ((local_4d8[0] == 1) && ((int)local_4d0 == 0xc)) {
      FUN_1809f8f70(&local_458,plVar8);
      local_320 = CONCAT11(1,(char)local_320);
    }
    else {
LAB_1807b9e82:
      FUN_1806d8eb0(plVar8,(int)local_4d0);
    }
    (**(code **)(*plVar8 + 0xd8))(plVar8);
    (**(code **)(*plVar8 + 0xd0))(plVar8,&local_2f8,&local_4d0,local_4d8);
  } while( true );
}



############ FUN_ 1807bb050 size=461 ############

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1807bb050(longlong param_1)

{
  int *piVar1;
  int iVar2;
  longlong *plVar3;
  void *pvVar4;
  longlong lVar5;
  longlong *plVar6;
  void *_Memory;
  undefined1 auStack_88 [32];
  longlong *local_68;
  longlong *local_60;
  longlong *local_58;
  longlong *local_50;
  undefined8 local_48;
  undefined **local_40;
  undefined1 local_38;
  undefined7 uStack_37;
  undefined8 local_28;
  ulonglong local_20;
  ulonglong local_18;
  
  local_48 = 0xfffffffffffffffe;
  local_18 = DAT_182615970 ^ (ulonglong)auStack_88;
  local_28 = 0;
  local_20 = 0xf;
  local_38 = 0;
  FUN_1805a6cb0(&local_38,"listIloks",9);
  (**(code **)(**(longlong **)(param_1 + 0x30) + 8))(*(longlong **)(param_1 + 0x30),&local_38,1);
  if (local_20 < 0x10) {
    local_40 = pace::eden::thrift::authorize::AuthorizationLite_listIloks_pargs::vftable;
    plVar3 = *(longlong **)(param_1 + 0x30);
    (**(code **)(*plVar3 + 0x18))(plVar3,"AuthorizationLite_listIloks_pargs");
    (**(code **)(*plVar3 + 0x38))(plVar3);
    (**(code **)(*plVar3 + 0x20))(plVar3);
    (**(code **)(**(longlong **)(param_1 + 0x30) + 0x10))();
    local_68 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_60 = plVar3;
    (**(code **)(*local_68 + 0x50))();
    plVar6 = local_60;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_60 + 8))(local_60);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_60 + 0x10))();
        }
      }
    }
    local_58 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 8);
    plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x30) + 0x10);
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      *(int *)(plVar3 + 1) = (int)plVar3[1] + 1;
      UNLOCK();
    }
    local_50 = plVar3;
    (**(code **)(*local_58 + 0x48))();
    plVar6 = local_50;
    if (plVar3 != (longlong *)0x0) {
      LOCK();
      plVar3 = plVar3 + 1;
      lVar5 = *plVar3;
      *(int *)plVar3 = (int)*plVar3 + -1;
      UNLOCK();
      if ((int)lVar5 == 1) {
        (**(code **)(*local_50 + 8))(local_50);
        LOCK();
        piVar1 = (int *)((longlong)plVar6 + 0xc);
        iVar2 = *piVar1;
        *piVar1 = *piVar1 + -1;
        UNLOCK();
        if (iVar2 == 1) {
          (**(code **)(*local_50 + 0x10))();
        }
      }
    }
  }
  pvVar4 = (void *)CONCAT71(uStack_37,local_38);
  _Memory = pvVar4;
  if ((0xfff < local_20 + 1) &&
     (_Memory = *(void **)((longlong)pvVar4 + -8),
     0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) {
                    /* WARNING: Subroutine does not return */
    _invalid_parameter_noinfo_noreturn();
  }
                    /* WARNING: Subroutine does not return */
  free(_Memory);
}



